aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/arm/mem_alignment2
-rw-r--r--Documentation/feature-removal-schedule.txt12
-rw-r--r--Documentation/filesystems/proc.txt9
-rw-r--r--Documentation/kernel-parameters.txt33
-rw-r--r--Documentation/local_ops.txt2
-rw-r--r--Documentation/nmi_watchdog.txt5
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt2
-rw-r--r--Documentation/usb/gadget_serial.txt4
-rw-r--r--Documentation/usb/proc_usb_info.txt6
-rw-r--r--Documentation/usb/usbmon.txt12
-rw-r--r--Documentation/x86/boot.txt6
-rw-r--r--Documentation/x86/pat.txt24
-rw-r--r--Documentation/x86/x86_64/boot-options.txt11
-rw-r--r--Documentation/x86/x86_64/mm.txt2
-rw-r--r--MAINTAINERS26
-rw-r--r--Makefile2
-rw-r--r--arch/arm/common/sa1111.c2
-rw-r--r--arch/arm/include/asm/bitops.h16
-rw-r--r--arch/arm/include/asm/processor.h2
-rw-r--r--arch/arm/kernel/armksyms.c4
-rw-r--r--arch/arm/kernel/traps.c1
-rw-r--r--arch/arm/mach-omap1/io.c2
-rw-r--r--arch/arm/mach-pxa/include/mach/reset.h5
-rw-r--r--arch/arm/mm/alignment.c26
-rw-r--r--arch/arm/mm/fault.c1
-rw-r--r--arch/arm/plat-omap/include/mach/omapfb.h4
-rw-r--r--arch/arm/plat-omap/sram.c8
-rw-r--r--arch/arm/plat-orion/pcie.c2
-rw-r--r--arch/avr32/boards/favr-32/flash.c2
-rw-r--r--arch/avr32/boards/favr-32/setup.c8
-rw-r--r--arch/avr32/boot/images/Makefile2
-rw-r--r--arch/avr32/configs/atstk1006_defconfig134
-rw-r--r--arch/avr32/mach-at32ap/at32ap700x.c8
-rw-r--r--arch/ia64/configs/generic_defconfig218
-rw-r--r--arch/ia64/hp/sim/Kconfig1
-rw-r--r--arch/ia64/include/asm/paravirt_privop.h1
-rw-r--r--arch/ia64/kernel/topology.c4
-rw-r--r--arch/ia64/kvm/Makefile2
-rw-r--r--arch/ia64/kvm/optvfault.S11
-rw-r--r--arch/ia64/sn/kernel/irq.c9
-rw-r--r--arch/ia64/sn/kernel/setup.c9
-rw-r--r--arch/m68k/configs/amiga_defconfig126
-rw-r--r--arch/m68k/configs/apollo_defconfig115
-rw-r--r--arch/m68k/configs/atari_defconfig130
-rw-r--r--arch/m68k/configs/bvme6000_defconfig112
-rw-r--r--arch/m68k/configs/hp300_defconfig115
-rw-r--r--arch/m68k/configs/mac_defconfig125
-rw-r--r--arch/m68k/configs/multi_defconfig129
-rw-r--r--arch/m68k/configs/mvme147_defconfig112
-rw-r--r--arch/m68k/configs/mvme16x_defconfig112
-rw-r--r--arch/m68k/configs/q40_defconfig125
-rw-r--r--arch/m68k/configs/sun3_defconfig124
-rw-r--r--arch/m68k/configs/sun3x_defconfig115
-rw-r--r--arch/mips/Kconfig.debug2
-rw-r--r--arch/mips/configs/fulong_defconfig921
-rw-r--r--arch/mips/configs/ip22_defconfig518
-rw-r--r--arch/mips/configs/ip32_defconfig1060
-rw-r--r--arch/mips/configs/malta_defconfig631
-rw-r--r--arch/mips/include/asm/asmmacro.h10
-rw-r--r--arch/mips/include/asm/pci.h5
-rw-r--r--arch/mips/kernel/scall32-o32.S7
-rw-r--r--arch/mips/kernel/scall64-n32.S2
-rw-r--r--arch/mips/kernel/scall64-o32.S16
-rw-r--r--arch/mips/kernel/vpe.c2
-rw-r--r--arch/mips/mm/dma-default.c3
-rw-r--r--arch/mips/mti-malta/Makefile5
-rw-r--r--arch/mips/mti-malta/malta-mtd.c63
-rw-r--r--arch/mips/mti-malta/malta-platform.c107
-rw-r--r--arch/mips/pci/pci.c24
-rw-r--r--arch/mn10300/kernel/entry.S3
-rw-r--r--arch/mn10300/kernel/gdb-io-serial.c2
-rw-r--r--arch/mn10300/kernel/mn10300-serial.c5
-rw-r--r--arch/mn10300/kernel/module.c35
-rw-r--r--arch/mn10300/kernel/setup.c2
-rw-r--r--arch/mn10300/kernel/vmlinux.lds.S22
-rw-r--r--arch/powerpc/boot/Makefile1
-rw-r--r--arch/powerpc/boot/dts/mpc8349emitx.dts16
-rw-r--r--arch/powerpc/configs/83xx/mpc834x_itx_defconfig2
-rw-r--r--arch/powerpc/configs/mpc83xx_defconfig2
-rw-r--r--arch/powerpc/include/asm/kvm_ppc.h2
-rw-r--r--arch/powerpc/kernel/cpu_setup_44x.S1
-rw-r--r--arch/powerpc/kernel/cputable.c3
-rw-r--r--arch/powerpc/kernel/dma.c1
-rw-r--r--arch/powerpc/kernel/misc_32.S5
-rw-r--r--arch/powerpc/kvm/44x_tlb.c8
-rw-r--r--arch/powerpc/kvm/powerpc.c1
-rw-r--r--arch/powerpc/lib/rheap.c1
-rw-r--r--arch/powerpc/mm/hugetlbpage.c3
-rw-r--r--arch/powerpc/mm/numa.c16
-rw-r--r--arch/powerpc/platforms/cell/axon_msi.c3
-rw-r--r--arch/powerpc/sysdev/mpic.c2
-rw-r--r--arch/s390/kvm/sigp.c5
-rw-r--r--arch/sh/Kconfig2
-rw-r--r--arch/sparc/include/asm/bitops_32.h1
-rw-r--r--arch/sparc/include/asm/ptrace_32.h10
-rw-r--r--arch/sparc/include/asm/ptrace_64.h9
-rw-r--r--arch/sparc64/kernel/ptrace.c2
-rw-r--r--arch/sparc64/kernel/visemul.c6
-rw-r--r--arch/sparc64/lib/user_fixup.c2
-rw-r--r--arch/um/drivers/mconsole_kern.c4
-rw-r--r--arch/x86/Kconfig70
-rw-r--r--arch/x86/Kconfig.debug20
-rw-r--r--arch/x86/boot/video-vga.c4
-rw-r--r--arch/x86/boot/video.c2
-rw-r--r--arch/x86/configs/i386_defconfig4
-rw-r--r--arch/x86/configs/x86_64_defconfig4
-rw-r--r--arch/x86/ia32/ia32_signal.c104
-rw-r--r--arch/x86/include/asm/amd_iommu_types.h24
-rw-r--r--arch/x86/include/asm/apic.h1
-rw-r--r--arch/x86/include/asm/bigsmp/apic.h2
-rw-r--r--arch/x86/include/asm/bug.h2
-rw-r--r--arch/x86/include/asm/cpufeature.h5
-rw-r--r--arch/x86/include/asm/dma-mapping.h6
-rw-r--r--arch/x86/include/asm/emergency-restart.h4
-rw-r--r--arch/x86/include/asm/es7000/apic.h79
-rw-r--r--arch/x86/include/asm/es7000/wakecpu.h41
-rw-r--r--arch/x86/include/asm/genapic_32.h19
-rw-r--r--arch/x86/include/asm/genapic_64.h2
-rw-r--r--arch/x86/include/asm/hypervisor.h26
-rw-r--r--arch/x86/include/asm/ia32.h18
-rw-r--r--arch/x86/include/asm/idle.h5
-rw-r--r--arch/x86/include/asm/io.h37
-rw-r--r--arch/x86/include/asm/io_apic.h10
-rw-r--r--arch/x86/include/asm/kexec.h31
-rw-r--r--arch/x86/include/asm/mach-default/mach_apic.h2
-rw-r--r--arch/x86/include/asm/mach-default/mach_wakecpu.h24
-rw-r--r--arch/x86/include/asm/mach-default/smpboot_hooks.h8
-rw-r--r--arch/x86/include/asm/mach-generic/mach_apic.h1
-rw-r--r--arch/x86/include/asm/mach-generic/mach_wakecpu.h12
-rw-r--r--arch/x86/include/asm/mmu_context_32.h13
-rw-r--r--arch/x86/include/asm/msr-index.h2
-rw-r--r--arch/x86/include/asm/msr.h12
-rw-r--r--arch/x86/include/asm/numaq/wakecpu.h24
-rw-r--r--arch/x86/include/asm/pci.h2
-rw-r--r--arch/x86/include/asm/pgtable-2level.h50
-rw-r--r--arch/x86/include/asm/pgtable-3level.h1
-rw-r--r--arch/x86/include/asm/pgtable.h28
-rw-r--r--arch/x86/include/asm/pgtable_32.h9
-rw-r--r--arch/x86/include/asm/pgtable_64.h28
-rw-r--r--arch/x86/include/asm/processor.h4
-rw-r--r--arch/x86/include/asm/reboot.h5
-rw-r--r--arch/x86/include/asm/setup.h7
-rw-r--r--arch/x86/include/asm/sigframe.h70
-rw-r--r--arch/x86/include/asm/sparsemem.h2
-rw-r--r--arch/x86/include/asm/syscalls.h2
-rw-r--r--arch/x86/include/asm/system.h2
-rw-r--r--arch/x86/include/asm/topology.h2
-rw-r--r--arch/x86/include/asm/trampoline.h7
-rw-r--r--arch/x86/include/asm/uaccess.h4
-rw-r--r--arch/x86/include/asm/uv/bios.h34
-rw-r--r--arch/x86/include/asm/uv/uv_hub.h103
-rw-r--r--arch/x86/include/asm/vmi.h8
-rw-r--r--arch/x86/include/asm/vmware.h27
-rw-r--r--arch/x86/include/asm/xen/hypercall.h6
-rw-r--r--arch/x86/include/asm/xen/hypervisor.h39
-rw-r--r--arch/x86/include/asm/xen/page.h5
-rw-r--r--arch/x86/kernel/Makefile7
-rw-r--r--arch/x86/kernel/acpi/boot.c11
-rw-r--r--arch/x86/kernel/amd_iommu.c54
-rw-r--r--arch/x86/kernel/amd_iommu_init.c7
-rw-r--r--arch/x86/kernel/apic.c127
-rw-r--r--arch/x86/kernel/apm_32.c4
-rw-r--r--arch/x86/kernel/asm-offsets_32.c2
-rw-r--r--arch/x86/kernel/asm-offsets_64.c4
-rw-r--r--arch/x86/kernel/bios_uv.c58
-rw-r--r--arch/x86/kernel/check.c161
-rw-r--r--arch/x86/kernel/cpu/Makefile1
-rw-r--r--arch/x86/kernel/cpu/common.c2
-rw-r--r--arch/x86/kernel/cpu/hypervisor.c58
-rw-r--r--arch/x86/kernel/cpu/intel.c3
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce_64.c3
-rw-r--r--arch/x86/kernel/cpu/mtrr/main.c346
-rw-r--r--arch/x86/kernel/cpu/vmware.c112
-rw-r--r--arch/x86/kernel/crash.c70
-rw-r--r--arch/x86/kernel/ds.c9
-rw-r--r--arch/x86/kernel/dumpstack.c319
-rw-r--r--arch/x86/kernel/dumpstack.h39
-rw-r--r--arch/x86/kernel/dumpstack_32.c302
-rw-r--r--arch/x86/kernel/dumpstack_64.c282
-rw-r--r--arch/x86/kernel/e820.c16
-rw-r--r--arch/x86/kernel/early_printk.c47
-rw-r--r--arch/x86/kernel/entry_32.S1
-rw-r--r--arch/x86/kernel/entry_64.S3
-rw-r--r--arch/x86/kernel/es7000_32.c62
-rw-r--r--arch/x86/kernel/genapic_64.c4
-rw-r--r--arch/x86/kernel/genx2apic_uv_x.c111
-rw-r--r--arch/x86/kernel/head.c1
-rw-r--r--arch/x86/kernel/head32.c3
-rw-r--r--arch/x86/kernel/head64.c3
-rw-r--r--arch/x86/kernel/hpet.c4
-rw-r--r--arch/x86/kernel/init_task.c1
-rw-r--r--arch/x86/kernel/io_apic.c3
-rw-r--r--arch/x86/kernel/irq_64.c24
-rw-r--r--arch/x86/kernel/machine_kexec_32.c104
-rw-r--r--arch/x86/kernel/microcode_amd.c232
-rw-r--r--arch/x86/kernel/microcode_core.c25
-rw-r--r--arch/x86/kernel/microcode_intel.c8
-rw-r--r--arch/x86/kernel/mpparse.c24
-rw-r--r--arch/x86/kernel/nmi.c58
-rw-r--r--arch/x86/kernel/numaq_32.c10
-rw-r--r--arch/x86/kernel/paravirt-spinlocks.c3
-rw-r--r--arch/x86/kernel/pci-gart_64.c6
-rw-r--r--arch/x86/kernel/process.c16
-rw-r--r--arch/x86/kernel/ptrace.c9
-rw-r--r--arch/x86/kernel/reboot.c126
-rw-r--r--arch/x86/kernel/relocate_kernel_32.S115
-rw-r--r--arch/x86/kernel/setup.c179
-rw-r--r--arch/x86/kernel/sigframe.h42
-rw-r--r--arch/x86/kernel/signal.c (renamed from arch/x86/kernel/signal_32.c)567
-rw-r--r--arch/x86/kernel/signal_64.c516
-rw-r--r--arch/x86/kernel/smp.c13
-rw-r--r--arch/x86/kernel/smpboot.c19
-rw-r--r--arch/x86/kernel/time_64.c2
-rw-r--r--arch/x86/kernel/tlb_32.c11
-rw-r--r--arch/x86/kernel/tlb_uv.c4
-rw-r--r--arch/x86/kernel/trampoline.c19
-rw-r--r--arch/x86/kernel/traps.c34
-rw-r--r--arch/x86/kernel/tsc.c42
-rw-r--r--arch/x86/kernel/tsc_sync.c8
-rw-r--r--arch/x86/kernel/vmi_32.c16
-rw-r--r--arch/x86/kvm/mmu.c2
-rw-r--r--arch/x86/kvm/paging_tmpl.h1
-rw-r--r--arch/x86/kvm/vmx.c4
-rw-r--r--arch/x86/mach-generic/bigsmp.c1
-rw-r--r--arch/x86/mach-generic/default.c1
-rw-r--r--arch/x86/mach-generic/es7000.c14
-rw-r--r--arch/x86/mach-generic/probe.c16
-rw-r--r--arch/x86/mach-generic/summit.c1
-rw-r--r--arch/x86/mm/fault.c11
-rw-r--r--arch/x86/mm/init_32.c18
-rw-r--r--arch/x86/mm/init_64.c2
-rw-r--r--arch/x86/mm/ioremap.c3
-rw-r--r--arch/x86/mm/pat.c236
-rw-r--r--arch/x86/oprofile/nmi_int.c5
-rw-r--r--arch/x86/oprofile/op_model_ppro.c4
-rw-r--r--arch/x86/pci/common.c17
-rw-r--r--arch/x86/pci/direct.c4
-rw-r--r--arch/x86/pci/pci.h1
-rw-r--r--arch/x86/xen/enlighten.c17
-rw-r--r--arch/x86/xen/mmu.c17
-rw-r--r--arch/x86/xen/multicalls.c2
-rw-r--r--arch/x86/xen/setup.c9
-rw-r--r--block/blk-barrier.c4
-rw-r--r--block/blk-core.c26
-rw-r--r--block/blk-map.c2
-rw-r--r--block/blk-settings.c4
-rw-r--r--block/bsg.c2
-rw-r--r--block/compat_ioctl.c31
-rw-r--r--block/elevator.c7
-rw-r--r--block/genhd.c2
-rw-r--r--block/scsi_ioctl.c2
-rw-r--r--crypto/Kconfig36
-rw-r--r--crypto/Makefile18
-rw-r--r--crypto/async_tx/async_xor.c11
-rw-r--r--drivers/acpi/battery.c9
-rw-r--r--drivers/acpi/pci_irq.c56
-rw-r--r--drivers/acpi/toshiba_acpi.c54
-rw-r--r--drivers/ata/Kconfig44
-rw-r--r--drivers/ata/ata_piix.c9
-rw-r--r--drivers/ata/libata-core.c65
-rw-r--r--drivers/ata/pata_hpt366.c16
-rw-r--r--drivers/ata/pata_ninja32.c9
-rw-r--r--drivers/ata/pata_sis.c1
-rw-r--r--drivers/atm/horizon.c2
-rw-r--r--drivers/block/cciss.c5
-rw-r--r--drivers/block/pktcdvd.c6
-rw-r--r--drivers/cdrom/cdrom.c16
-rw-r--r--drivers/char/cp437.uni12
-rw-r--r--drivers/char/serial167.c2
-rw-r--r--drivers/char/vt.c2
-rw-r--r--drivers/char/xilinx_hwicap/buffer_icap.c3
-rw-r--r--drivers/char/xilinx_hwicap/buffer_icap.h3
-rw-r--r--drivers/char/xilinx_hwicap/fifo_icap.c3
-rw-r--r--drivers/char/xilinx_hwicap/fifo_icap.h3
-rw-r--r--drivers/char/xilinx_hwicap/xilinx_hwicap.c3
-rw-r--r--drivers/char/xilinx_hwicap/xilinx_hwicap.h3
-rw-r--r--drivers/dma/dmaengine.c3
-rw-r--r--drivers/dma/ioat_dma.c5
-rw-r--r--drivers/dma/iop-adma.c16
-rw-r--r--drivers/dma/mv_xor.c15
-rw-r--r--drivers/firewire/fw-ohci.c11
-rw-r--r--drivers/firewire/fw-transaction.c3
-rw-r--r--drivers/firewire/fw-transaction.h2
-rw-r--r--drivers/firmware/dmi_scan.c11
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c15
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h17
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c648
-rw-r--r--drivers/gpu/drm/i915/i915_gem_proc.c5
-rw-r--r--drivers/gpu/drm/i915/i915_gem_tiling.c7
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h1
-rw-r--r--drivers/gpu/drm/radeon/radeon_drv.h1
-rw-r--r--drivers/gpu/drm/radeon/radeon_irq.c8
-rw-r--r--drivers/i2c/busses/i2c-cpm.c1
-rw-r--r--drivers/i2c/busses/i2c-highlander.c4
-rw-r--r--drivers/i2c/busses/i2c-pmcmsp.c2
-rw-r--r--drivers/i2c/busses/i2c-s3c2410.c18
-rw-r--r--drivers/ide/Kconfig14
-rw-r--r--drivers/ide/alim15x3.c2
-rw-r--r--drivers/ide/amd74xx.c11
-rw-r--r--drivers/ide/ide-io.c24
-rw-r--r--drivers/ide/ide-iops.c9
-rw-r--r--drivers/ide/ide-probe.c3
-rw-r--r--drivers/ide/pmac.c30
-rw-r--r--drivers/ide/sgiioc4.c6
-rw-r--r--drivers/ieee1394/nodemgr.c8
-rw-r--r--drivers/isdn/hardware/avm/b1isa.c6
-rw-r--r--drivers/isdn/hysdn/hysdn_net.c4
-rw-r--r--drivers/md/bitmap.c22
-rw-r--r--drivers/md/dm-table.c2
-rw-r--r--drivers/message/fusion/mptscsih.c3
-rw-r--r--drivers/message/i2o/i2o_block.c2
-rw-r--r--drivers/message/i2o/iop.c1
-rw-r--r--drivers/misc/sgi-gru/grufault.c4
-rw-r--r--drivers/misc/sgi-gru/grufile.c2
-rw-r--r--drivers/misc/sgi-gru/gruprocfs.c1
-rw-r--r--drivers/misc/sgi-xp/xp.h7
-rw-r--r--drivers/misc/sgi-xp/xp_main.c7
-rw-r--r--drivers/misc/sgi-xp/xp_sn2.c34
-rw-r--r--drivers/misc/sgi-xp/xp_uv.c70
-rw-r--r--drivers/misc/sgi-xp/xpc.h12
-rw-r--r--drivers/misc/sgi-xp/xpc_sn2.c15
-rw-r--r--drivers/misc/sgi-xp/xpc_uv.c290
-rw-r--r--drivers/mtd/devices/m25p80.c28
-rw-r--r--drivers/mtd/maps/physmap.c26
-rw-r--r--drivers/mtd/nand/fsl_upm.c8
-rw-r--r--drivers/mtd/nand/pasemi_nand.c1
-rw-r--r--drivers/mtd/nand/pxa3xx_nand.c1
-rw-r--r--drivers/mtd/onenand/omap2.c17
-rw-r--r--drivers/net/Makefile2
-rw-r--r--drivers/net/bnx2.c41
-rw-r--r--drivers/net/bnx2.h6
-rw-r--r--drivers/net/chelsio/sge.c4
-rw-r--r--drivers/net/e1000e/ich8lan.c9
-rw-r--r--drivers/net/e1000e/netdev.c1
-rw-r--r--drivers/net/enc28j60.c18
-rw-r--r--drivers/net/hp-plus.c2
-rw-r--r--drivers/net/igb/igb_main.c4
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c1
-rw-r--r--drivers/net/jme.h2
-rw-r--r--drivers/net/macvlan.c3
-rw-r--r--drivers/net/netx-eth.c2
-rw-r--r--drivers/net/pcmcia/axnet_cs.c2
-rw-r--r--drivers/net/pcmcia/pcnet_cs.c1
-rw-r--r--drivers/net/phy/mdio_bus.c5
-rw-r--r--drivers/net/phy/phy_device.c13
-rw-r--r--drivers/net/phy/vitesse.c64
-rw-r--r--drivers/net/pppol2tp.c1
-rw-r--r--drivers/net/sis900.c1
-rw-r--r--drivers/net/spider_net.c4
-rw-r--r--drivers/net/starfire.c5
-rw-r--r--drivers/net/sungem.c144
-rw-r--r--drivers/net/tlan.c23
-rw-r--r--drivers/net/wireless/ath5k/base.c35
-rw-r--r--drivers/net/wireless/ath5k/base.h1
-rw-r--r--drivers/net/wireless/ath5k/debug.c10
-rw-r--r--drivers/net/wireless/ath9k/beacon.c10
-rw-r--r--drivers/net/wireless/ath9k/recv.c19
-rw-r--r--drivers/net/wireless/ipw2200.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c8
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-sta.c24
-rw-r--r--drivers/net/wireless/zd1211rw/zd_mac.c2
-rw-r--r--drivers/pci/hotplug/acpiphp.h2
-rw-r--r--drivers/pci/hotplug/acpiphp_core.c2
-rw-r--r--drivers/pci/hotplug/acpiphp_glue.c4
-rw-r--r--drivers/pci/hotplug/ibmphp_core.c5
-rw-r--r--drivers/pci/hotplug/pciehp_core.c23
-rw-r--r--drivers/pci/pcie/aer/aerdrv_core.c2
-rw-r--r--drivers/pci/pcie/aspm.c29
-rw-r--r--drivers/pci/quirks.c187
-rw-r--r--drivers/pci/slot.c1
-rw-r--r--drivers/pcmcia/bfin_cf_pcmcia.c2
-rw-r--r--drivers/rtc/rtc-ds1672.c6
-rw-r--r--drivers/rtc/rtc-max6900.c6
-rw-r--r--drivers/rtc/rtc-starfire.c66
-rw-r--r--drivers/rtc/rtc-twl4030.c2
-rw-r--r--drivers/s390/scsi/zfcp_erp.c7
-rw-r--r--drivers/s390/scsi/zfcp_fc.c7
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c20
-rw-r--r--drivers/s390/scsi/zfcp_scsi.c2
-rw-r--r--drivers/scsi/aacraid/linit.c8
-rw-r--r--drivers/scsi/device_handler/scsi_dh_hp_sw.c12
-rw-r--r--drivers/scsi/ibmvscsi/ibmvscsi.c2
-rw-r--r--drivers/scsi/ibmvscsi/ibmvstgt.c16
-rw-r--r--drivers/scsi/libiscsi.c11
-rw-r--r--drivers/scsi/megaraid/megaraid_sas.c3
-rw-r--r--drivers/scsi/scsi_error.c3
-rw-r--r--drivers/scsi/scsi_lib.c25
-rw-r--r--drivers/scsi/sd.c2
-rw-r--r--drivers/scsi/sr.c2
-rw-r--r--drivers/scsi/stex.c2
-rw-r--r--drivers/serial/ioc3_serial.c6
-rw-r--r--drivers/serial/mpc52xx_uart.c4
-rw-r--r--drivers/serial/s3c2440.c2
-rw-r--r--drivers/sh/maple/maple.c2
-rw-r--r--drivers/staging/Kconfig3
-rw-r--r--drivers/usb/class/usbtmc.c1
-rw-r--r--drivers/usb/core/driver.c4
-rw-r--r--drivers/usb/gadget/f_rndis.c4
-rw-r--r--drivers/usb/serial/ftdi_sio.c4
-rw-r--r--drivers/usb/serial/ftdi_sio.h6
-rw-r--r--drivers/usb/serial/pl2303.c2
-rw-r--r--drivers/usb/serial/pl2303.h8
-rw-r--r--drivers/usb/serial/ti_usb_3410_5052.c55
-rw-r--r--drivers/usb/storage/unusual_devs.h16
-rw-r--r--drivers/video/aty/radeon_accel.c294
-rw-r--r--drivers/video/aty/radeon_backlight.c2
-rw-r--r--drivers/video/aty/radeon_base.c40
-rw-r--r--drivers/video/aty/radeon_pm.c6
-rw-r--r--drivers/video/aty/radeonfb.h38
-rw-r--r--drivers/video/console/fbcon.c6
-rw-r--r--drivers/video/macfb.c74
-rw-r--r--drivers/video/mb862xx/mb862xxfb.c4
-rw-r--r--drivers/video/omap/omapfb_main.c2
-rw-r--r--drivers/watchdog/hpwdt.c5
-rw-r--r--drivers/watchdog/iTCO_vendor_support.c31
-rw-r--r--drivers/watchdog/iTCO_wdt.c164
-rw-r--r--drivers/watchdog/mtx-1_wdt.c4
-rw-r--r--drivers/xen/balloon.c4
-rw-r--r--drivers/xen/features.c6
-rw-r--r--drivers/xen/grant-table.c1
-rw-r--r--fs/9p/fid.c4
-rw-r--r--fs/9p/v9fs.c2
-rw-r--r--fs/9p/vfs_dentry.c9
-rw-r--r--fs/9p/vfs_inode.c6
-rw-r--r--fs/block_dev.c21
-rw-r--r--fs/cifs/cifssmb.c3
-rw-r--r--fs/exec.c10
-rw-r--r--fs/exportfs/expfs.c4
-rw-r--r--fs/ext4/balloc.c4
-rw-r--r--fs/fcntl.c7
-rw-r--r--fs/inotify.c2
-rw-r--r--fs/ioctl.c12
-rw-r--r--fs/lockd/host.c3
-rw-r--r--fs/lockd/svc.c1
-rw-r--r--fs/nfsd/nfs4recover.c2
-rw-r--r--fs/nfsd/nfs4state.c1
-rw-r--r--fs/ocfs2/ocfs2_fs.h8
-rw-r--r--fs/ocfs2/xattr.c4
-rw-r--r--fs/proc/base.c2
-rw-r--r--fs/proc/task_mmu.c4
-rw-r--r--fs/ubifs/commit.c4
-rw-r--r--fs/ubifs/debug.c66
-rw-r--r--fs/ubifs/dir.c5
-rw-r--r--fs/ubifs/file.c91
-rw-r--r--fs/ubifs/journal.c8
-rw-r--r--fs/ubifs/key.h4
-rw-r--r--fs/ubifs/lpt_commit.c2
-rw-r--r--fs/ubifs/orphan.c28
-rw-r--r--fs/ubifs/recovery.c17
-rw-r--r--fs/ubifs/replay.c2
-rw-r--r--fs/ubifs/sb.c9
-rw-r--r--fs/ubifs/super.c70
-rw-r--r--fs/ubifs/tnc.c12
-rw-r--r--fs/ubifs/ubifs.h12
-rw-r--r--fs/xfs/xfs_rename.c2
-rw-r--r--include/asm-generic/atomic.h2
-rw-r--r--include/asm-generic/audit_write.h2
-rw-r--r--include/asm-generic/bug.h8
-rw-r--r--include/asm-generic/pgtable.h50
-rw-r--r--include/asm-mn10300/uaccess.h2
-rw-r--r--include/linux/audit.h6
-rw-r--r--include/linux/blkdev.h10
-rw-r--r--include/linux/can/core.h2
-rw-r--r--include/linux/dmi.h2
-rw-r--r--include/linux/fs.h33
-rw-r--r--include/linux/ftrace.h3
-rw-r--r--include/linux/ide.h8
-rw-r--r--include/linux/kexec.h4
-rw-r--r--include/linux/mm.h19
-rw-r--r--include/linux/netdevice.h7
-rw-r--r--include/linux/netfilter/nfnetlink_conntrack.h1
-rw-r--r--include/linux/netfilter/x_tables.h2
-rw-r--r--include/linux/pci.h6
-rw-r--r--include/linux/pci_ids.h5
-rw-r--r--include/linux/security.h12
-rw-r--r--include/linux/smp.h2
-rw-r--r--include/linux/usb/ch9.h8
-rw-r--r--include/net/af_unix.h1
-rw-r--r--include/net/irda/irda_device.h4
-rw-r--r--include/net/request_sock.h1
-rw-r--r--include/net/timewait_sock.h1
-rw-r--r--include/scsi/scsi_transport_fc.h2
-rw-r--r--include/video/radeon.h18
-rw-r--r--include/xen/interface/event_channel.h2
-rw-r--r--kernel/audit.c32
-rw-r--r--kernel/auditsc.c24
-rw-r--r--kernel/cgroup.c2
-rw-r--r--kernel/fork.c16
-rw-r--r--kernel/latencytop.c2
-rw-r--r--kernel/posix-cpu-timers.c2
-rw-r--r--kernel/posix-timers.c6
-rw-r--r--kernel/power/swap.c2
-rw-r--r--kernel/relay.c7
-rw-r--r--kernel/sched.c2
-rw-r--r--kernel/sched_clock.c6
-rw-r--r--kernel/softlockup.c2
-rw-r--r--kernel/time/timekeeping.c22
-rw-r--r--lib/bug.c19
-rw-r--r--lib/dynamic_printk.c6
-rw-r--r--lib/idr.c8
-rw-r--r--lib/percpu_counter.c7
-rw-r--r--mm/backing-dev.c3
-rw-r--r--mm/memory.c70
-rw-r--r--mm/migrate.c59
-rw-r--r--mm/page_cgroup.c3
-rw-r--r--mm/slob.c2
-rw-r--r--mm/slub.c2
-rw-r--r--mm/swap.c20
-rw-r--r--mm/swapfile.c9
-rw-r--r--mm/vmalloc.c2
-rw-r--r--net/atm/svc.c6
-rw-r--r--net/bridge/br_netfilter.c13
-rw-r--r--net/can/af_can.c68
-rw-r--r--net/can/bcm.c7
-rw-r--r--net/core/netpoll.c2
-rw-r--r--net/core/skbuff.c2
-rw-r--r--net/core/sock.c31
-rw-r--r--net/ipv4/netfilter/nf_nat_rule.c2
-rw-r--r--net/ipv4/tcp_output.c15
-rw-r--r--net/ipv4/tcp_vegas.c82
-rw-r--r--net/ipv6/ndisc.c7
-rw-r--r--net/mac80211/sta_info.c2
-rw-r--r--net/mac80211/wext.c8
-rw-r--r--net/netfilter/nf_conntrack_core.c2
-rw-r--r--net/netfilter/nf_conntrack_netlink.c7
-rw-r--r--net/netfilter/xt_socket.c2
-rw-r--r--net/netlabel/netlabel_unlabeled.c48
-rw-r--r--net/phonet/pep-gprs.c27
-rw-r--r--net/phonet/pn_dev.c2
-rw-r--r--net/phonet/pn_netlink.c3
-rw-r--r--net/rose/af_rose.c10
-rw-r--r--net/sched/sch_netem.c3
-rw-r--r--net/sunrpc/svcsock.c9
-rw-r--r--net/unix/af_unix.c2
-rw-r--r--net/unix/garbage.c13
-rw-r--r--net/wireless/reg.c4
-rw-r--r--net/xfrm/xfrm_policy.c1
-rw-r--r--sound/pci/hda/patch_sigmatel.c20
-rw-r--r--sound/soc/omap/omap-pcm.c2
540 files changed, 9891 insertions, 6727 deletions
diff --git a/Documentation/arm/mem_alignment b/Documentation/arm/mem_alignment
index d145ccca169a..c7c7a114c78c 100644
--- a/Documentation/arm/mem_alignment
+++ b/Documentation/arm/mem_alignment
@@ -24,7 +24,7 @@ real bad - it changes the behaviour of all unaligned instructions in user
24space, and might cause programs to fail unexpectedly. 24space, and might cause programs to fail unexpectedly.
25 25
26To change the alignment trap behavior, simply echo a number into 26To change the alignment trap behavior, simply echo a number into
27/proc/sys/debug/alignment. The number is made up from various bits: 27/proc/cpu/alignment. The number is made up from various bits:
28 28
29bit behavior when set 29bit behavior when set
30--- ----------------- 30--- -----------------
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index c28a2ac88f9d..1a8af7354e79 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -244,18 +244,6 @@ Who: Michael Buesch <mb@bu3sch.de>
244 244
245--------------------------- 245---------------------------
246 246
247What: init_mm export
248When: 2.6.26
249Why: Not used in-tree. The current out-of-tree users used it to
250 work around problems in the CPA code which should be resolved
251 by now. One usecase was described to provide verification code
252 of the CPA operation. That's a good idea in general, but such
253 code / infrastructure should be in the kernel and not in some
254 out-of-tree driver.
255Who: Thomas Gleixner <tglx@linutronix.de>
256
257----------------------------
258
259What: usedac i386 kernel parameter 247What: usedac i386 kernel parameter
260When: 2.6.27 248When: 2.6.27
261Why: replaced by allowdac and no dac combination 249Why: replaced by allowdac and no dac combination
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index bb1b0dd3bfcb..71df353e367c 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -1339,10 +1339,13 @@ nmi_watchdog
1339 1339
1340Enables/Disables the NMI watchdog on x86 systems. When the value is non-zero 1340Enables/Disables the NMI watchdog on x86 systems. When the value is non-zero
1341the NMI watchdog is enabled and will continuously test all online cpus to 1341the NMI watchdog is enabled and will continuously test all online cpus to
1342determine whether or not they are still functioning properly. 1342determine whether or not they are still functioning properly. Currently,
1343passing "nmi_watchdog=" parameter at boot time is required for this function
1344to work.
1343 1345
1344Because the NMI watchdog shares registers with oprofile, by disabling the NMI 1346If LAPIC NMI watchdog method is in use (nmi_watchdog=2 kernel parameter), the
1345watchdog, oprofile may have more registers to utilize. 1347NMI watchdog shares registers with oprofile. By disabling the NMI watchdog,
1348oprofile may have more registers to utilize.
1346 1349
1347msgmni 1350msgmni
1348------ 1351------
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index e0f346d201ed..d5418d528910 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1393,7 +1393,20 @@ and is between 256 and 4096 characters. It is defined in the file
1393 when a NMI is triggered. 1393 when a NMI is triggered.
1394 Format: [state][,regs][,debounce][,die] 1394 Format: [state][,regs][,debounce][,die]
1395 1395
1396 nmi_watchdog= [KNL,BUGS=X86-32] Debugging features for SMP kernels 1396 nmi_watchdog= [KNL,BUGS=X86-32,X86-64] Debugging features for SMP kernels
1397 Format: [panic,][num]
1398 Valid num: 0,1,2
1399 0 - turn nmi_watchdog off
1400 1 - use the IO-APIC timer for the NMI watchdog
1401 2 - use the local APIC for the NMI watchdog using
1402 a performance counter. Note: This will use one performance
1403 counter and the local APIC's performance vector.
1404 When panic is specified panic when an NMI watchdog timeout occurs.
1405 This is useful when you use a panic=... timeout and need the box
1406 quickly up again.
1407 Instead of 1 and 2 it is possible to use the following
1408 symbolic names: lapic and ioapic
1409 Example: nmi_watchdog=2 or nmi_watchdog=panic,lapic
1397 1410
1398 no387 [BUGS=X86-32] Tells the kernel to use the 387 maths 1411 no387 [BUGS=X86-32] Tells the kernel to use the 387 maths
1399 emulation library even if a 387 maths coprocessor 1412 emulation library even if a 387 maths coprocessor
@@ -1626,6 +1639,17 @@ and is between 256 and 4096 characters. It is defined in the file
1626 nomsi [MSI] If the PCI_MSI kernel config parameter is 1639 nomsi [MSI] If the PCI_MSI kernel config parameter is
1627 enabled, this kernel boot option can be used to 1640 enabled, this kernel boot option can be used to
1628 disable the use of MSI interrupts system-wide. 1641 disable the use of MSI interrupts system-wide.
1642 noioapicquirk [APIC] Disable all boot interrupt quirks.
1643 Safety option to keep boot IRQs enabled. This
1644 should never be necessary.
1645 ioapicreroute [APIC] Enable rerouting of boot IRQs to the
1646 primary IO-APIC for bridges that cannot disable
1647 boot IRQs. This fixes a source of spurious IRQs
1648 when the system masks IRQs.
1649 noioapicreroute [APIC] Disable workaround that uses the
1650 boot IRQ equivalent of an IRQ that connects to
1651 a chipset where boot IRQs cannot be disabled.
1652 The opposite of ioapicreroute.
1629 biosirq [X86-32] Use PCI BIOS calls to get the interrupt 1653 biosirq [X86-32] Use PCI BIOS calls to get the interrupt
1630 routing table. These calls are known to be buggy 1654 routing table. These calls are known to be buggy
1631 on several machines and they hang the machine 1655 on several machines and they hang the machine
@@ -2255,6 +2279,13 @@ and is between 256 and 4096 characters. It is defined in the file
2255 Format: 2279 Format:
2256 <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq> 2280 <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq>
2257 2281
2282 tsc= Disable clocksource-must-verify flag for TSC.
2283 Format: <string>
2284 [x86] reliable: mark tsc clocksource as reliable, this
2285 disables clocksource verification at runtime.
2286 Used to enable high-resolution timer mode on older
2287 hardware, and in virtualized environment.
2288
2258 turbografx.map[2|3]= [HW,JOY] 2289 turbografx.map[2|3]= [HW,JOY]
2259 TurboGraFX parallel port interface 2290 TurboGraFX parallel port interface
2260 Format: 2291 Format:
diff --git a/Documentation/local_ops.txt b/Documentation/local_ops.txt
index f4f8b1c6c8ba..23045b8b50f0 100644
--- a/Documentation/local_ops.txt
+++ b/Documentation/local_ops.txt
@@ -149,7 +149,7 @@ static void do_test_timer(unsigned long data)
149 int cpu; 149 int cpu;
150 150
151 /* Increment the counters */ 151 /* Increment the counters */
152 on_each_cpu(test_each, NULL, 0, 1); 152 on_each_cpu(test_each, NULL, 1);
153 /* Read all the counters */ 153 /* Read all the counters */
154 printk("Counters read from CPU %d\n", smp_processor_id()); 154 printk("Counters read from CPU %d\n", smp_processor_id());
155 for_each_online_cpu(cpu) { 155 for_each_online_cpu(cpu) {
diff --git a/Documentation/nmi_watchdog.txt b/Documentation/nmi_watchdog.txt
index 90aa4531cb67..bf9f80a98282 100644
--- a/Documentation/nmi_watchdog.txt
+++ b/Documentation/nmi_watchdog.txt
@@ -69,6 +69,11 @@ to the overall system performance.
69On x86 nmi_watchdog is disabled by default so you have to enable it with 69On x86 nmi_watchdog is disabled by default so you have to enable it with
70a boot time parameter. 70a boot time parameter.
71 71
72It's possible to disable the NMI watchdog in run-time by writing "0" to
73/proc/sys/kernel/nmi_watchdog. Writing "1" to the same file will re-enable
74the NMI watchdog. Notice that you still need to use "nmi_watchdog=" parameter
75at boot time.
76
72NOTE: In kernels prior to 2.4.2-ac18 the NMI-oopser is enabled unconditionally 77NOTE: In kernels prior to 2.4.2-ac18 the NMI-oopser is enabled unconditionally
73on x86 SMP boxes. 78on x86 SMP boxes.
74 79
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 3cd2ad958176..394d7d378dc7 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -1063,6 +1063,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1063 1063
1064 STAC9227/9228/9229/927x 1064 STAC9227/9228/9229/927x
1065 ref Reference board 1065 ref Reference board
1066 ref-no-jd Reference board without HP/Mic jack detection
1066 3stack D965 3stack 1067 3stack D965 3stack
1067 5stack D965 5stack + SPDIF 1068 5stack D965 5stack + SPDIF
1068 dell-3stack Dell Dimension E520 1069 dell-3stack Dell Dimension E520
@@ -1076,6 +1077,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1076 1077
1077 STAC92HD73* 1078 STAC92HD73*
1078 ref Reference board 1079 ref Reference board
1080 no-jd BIOS setup but without jack-detection
1079 dell-m6-amic Dell desktops/laptops with analog mics 1081 dell-m6-amic Dell desktops/laptops with analog mics
1080 dell-m6-dmic Dell desktops/laptops with digital mics 1082 dell-m6-dmic Dell desktops/laptops with digital mics
1081 dell-m6 Dell desktops/laptops with both type of mics 1083 dell-m6 Dell desktops/laptops with both type of mics
diff --git a/Documentation/usb/gadget_serial.txt b/Documentation/usb/gadget_serial.txt
index 9b22bd14c348..eac7df94d8e3 100644
--- a/Documentation/usb/gadget_serial.txt
+++ b/Documentation/usb/gadget_serial.txt
@@ -114,11 +114,11 @@ modules.
114Then you must load the gadget serial driver. To load it as an 114Then you must load the gadget serial driver. To load it as an
115ACM device (recommended for interoperability), do this: 115ACM device (recommended for interoperability), do this:
116 116
117 modprobe g_serial use_acm=1 117 modprobe g_serial
118 118
119To load it as a vendor specific bulk in/out device, do this: 119To load it as a vendor specific bulk in/out device, do this:
120 120
121 modprobe g_serial 121 modprobe g_serial use_acm=0
122 122
123This will also automatically load the underlying gadget peripheral 123This will also automatically load the underlying gadget peripheral
124controller driver. This must be done each time you reboot the gadget 124controller driver. This must be done each time you reboot the gadget
diff --git a/Documentation/usb/proc_usb_info.txt b/Documentation/usb/proc_usb_info.txt
index 077e9032d0cd..fafcd4723260 100644
--- a/Documentation/usb/proc_usb_info.txt
+++ b/Documentation/usb/proc_usb_info.txt
@@ -49,8 +49,10 @@ it and 002/048 sometime later.
49 49
50These files can be read as binary data. The binary data consists 50These files can be read as binary data. The binary data consists
51of first the device descriptor, then the descriptors for each 51of first the device descriptor, then the descriptors for each
52configuration of the device. That information is also shown in 52configuration of the device. Multi-byte fields in the device and
53text form by the /proc/bus/usb/devices file, described later. 53configuration descriptors, but not other descriptors, are converted
54to host endianness by the kernel. This information is also shown
55in text form by the /proc/bus/usb/devices file, described later.
54 56
55These files may also be used to write user-level drivers for the USB 57These files may also be used to write user-level drivers for the USB
56devices. You would open the /proc/bus/usb/BBB/DDD file read/write, 58devices. You would open the /proc/bus/usb/BBB/DDD file read/write,
diff --git a/Documentation/usb/usbmon.txt b/Documentation/usb/usbmon.txt
index 2917ce4ffdc4..270481906dc8 100644
--- a/Documentation/usb/usbmon.txt
+++ b/Documentation/usb/usbmon.txt
@@ -34,11 +34,12 @@ if usbmon is built into the kernel.
34Verify that bus sockets are present. 34Verify that bus sockets are present.
35 35
36# ls /sys/kernel/debug/usbmon 36# ls /sys/kernel/debug/usbmon
370s 0t 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u 370s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u
38# 38#
39 39
40Now you can choose to either use the sockets numbered '0' (to capture packets on 40Now you can choose to either use the socket '0u' (to capture packets on all
41all buses), and skip to step #3, or find the bus used by your device with step #2. 41buses), and skip to step #3, or find the bus used by your device with step #2.
42This allows to filter away annoying devices that talk continuously.
42 43
432. Find which bus connects to the desired device 442. Find which bus connects to the desired device
44 45
@@ -99,8 +100,9 @@ on the event type, but there is a set of words, common for all types.
99 100
100Here is the list of words, from left to right: 101Here is the list of words, from left to right:
101 102
102- URB Tag. This is used to identify URBs is normally a kernel mode address 103- URB Tag. This is used to identify URBs, and is normally an in-kernel address
103 of the URB structure in hexadecimal. 104 of the URB structure in hexadecimal, but can be a sequence number or any
105 other unique string, within reason.
104 106
105- Timestamp in microseconds, a decimal number. The timestamp's resolution 107- Timestamp in microseconds, a decimal number. The timestamp's resolution
106 depends on available clock, and so it can be much worse than a microsecond 108 depends on available clock, and so it can be much worse than a microsecond
diff --git a/Documentation/x86/boot.txt b/Documentation/x86/boot.txt
index 83c0033ee9e0..fcdc62b3c3d8 100644
--- a/Documentation/x86/boot.txt
+++ b/Documentation/x86/boot.txt
@@ -349,7 +349,7 @@ Protocol: 2.00+
349 3 SYSLINUX 349 3 SYSLINUX
350 4 EtherBoot 350 4 EtherBoot
351 5 ELILO 351 5 ELILO
352 7 GRuB 352 7 GRUB
353 8 U-BOOT 353 8 U-BOOT
354 9 Xen 354 9 Xen
355 A Gujin 355 A Gujin
@@ -537,8 +537,8 @@ Type: read
537Offset/size: 0x248/4 537Offset/size: 0x248/4
538Protocol: 2.08+ 538Protocol: 2.08+
539 539
540 If non-zero then this field contains the offset from the end of the 540 If non-zero then this field contains the offset from the beginning
541 real-mode code to the payload. 541 of the protected-mode code to the payload.
542 542
543 The payload may be compressed. The format of both the compressed and 543 The payload may be compressed. The format of both the compressed and
544 uncompressed data should be determined using the standard magic 544 uncompressed data should be determined using the standard magic
diff --git a/Documentation/x86/pat.txt b/Documentation/x86/pat.txt
index c93ff5f4c0dd..cf08c9fff3cd 100644
--- a/Documentation/x86/pat.txt
+++ b/Documentation/x86/pat.txt
@@ -80,6 +80,30 @@ pci proc | -- | -- | WC |
80 | | | | 80 | | | |
81------------------------------------------------------------------- 81-------------------------------------------------------------------
82 82
83Advanced APIs for drivers
84-------------------------
85A. Exporting pages to users with remap_pfn_range, io_remap_pfn_range,
86vm_insert_pfn
87
88Drivers wanting to export some pages to userspace do it by using mmap
89interface and a combination of
901) pgprot_noncached()
912) io_remap_pfn_range() or remap_pfn_range() or vm_insert_pfn()
92
93With PAT support, a new API pgprot_writecombine is being added. So, drivers can
94continue to use the above sequence, with either pgprot_noncached() or
95pgprot_writecombine() in step 1, followed by step 2.
96
97In addition, step 2 internally tracks the region as UC or WC in memtype
98list in order to ensure no conflicting mapping.
99
100Note that this set of APIs only works with IO (non RAM) regions. If driver
101wants to export a RAM region, it has to do set_memory_uc() or set_memory_wc()
102as step 0 above and also track the usage of those pages and use set_memory_wb()
103before the page is freed to free pool.
104
105
106
83Notes: 107Notes:
84 108
85-- in the above table mean "Not suggested usage for the API". Some of the --'s 109-- in the above table mean "Not suggested usage for the API". Some of the --'s
diff --git a/Documentation/x86/x86_64/boot-options.txt b/Documentation/x86/x86_64/boot-options.txt
index f6d561a1a9b2..34c13040a718 100644
--- a/Documentation/x86/x86_64/boot-options.txt
+++ b/Documentation/x86/x86_64/boot-options.txt
@@ -79,17 +79,6 @@ Timing
79 Report when timer interrupts are lost because some code turned off 79 Report when timer interrupts are lost because some code turned off
80 interrupts for too long. 80 interrupts for too long.
81 81
82 nmi_watchdog=NUMBER[,panic]
83 NUMBER can be:
84 0 don't use an NMI watchdog
85 1 use the IO-APIC timer for the NMI watchdog
86 2 use the local APIC for the NMI watchdog using a performance counter. Note
87 This will use one performance counter and the local APIC's performance
88 vector.
89 When panic is specified panic when an NMI watchdog timeout occurs.
90 This is useful when you use a panic=... timeout and need the box
91 quickly up again.
92
93 nohpet 82 nohpet
94 Don't use the HPET timer. 83 Don't use the HPET timer.
95 84
diff --git a/Documentation/x86/x86_64/mm.txt b/Documentation/x86/x86_64/mm.txt
index efce75097369..29b52b14d0b4 100644
--- a/Documentation/x86/x86_64/mm.txt
+++ b/Documentation/x86/x86_64/mm.txt
@@ -6,7 +6,7 @@ Virtual memory map with 4 level page tables:
60000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm 60000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm
7hole caused by [48:63] sign extension 7hole caused by [48:63] sign extension
8ffff800000000000 - ffff80ffffffffff (=40 bits) guard hole 8ffff800000000000 - ffff80ffffffffff (=40 bits) guard hole
9ffff810000000000 - ffffc0ffffffffff (=46 bits) direct mapping of all phys. memory 9ffff880000000000 - ffffc0ffffffffff (=57 TB) direct mapping of all phys. memory
10ffffc10000000000 - ffffc1ffffffffff (=40 bits) hole 10ffffc10000000000 - ffffc1ffffffffff (=40 bits) hole
11ffffc20000000000 - ffffe1ffffffffff (=45 bits) vmalloc/ioremap space 11ffffc20000000000 - ffffe1ffffffffff (=45 bits) vmalloc/ioremap space
12ffffe20000000000 - ffffe2ffffffffff (=40 bits) virtual memory map (1TB) 12ffffe20000000000 - ffffe2ffffffffff (=40 bits) virtual memory map (1TB)
diff --git a/MAINTAINERS b/MAINTAINERS
index 618c1ef4a397..c42a567e010c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -779,6 +779,7 @@ ATM
779P: Chas Williams 779P: Chas Williams
780M: chas@cmf.nrl.navy.mil 780M: chas@cmf.nrl.navy.mil
781L: linux-atm-general@lists.sourceforge.net (subscribers-only) 781L: linux-atm-general@lists.sourceforge.net (subscribers-only)
782L: netdev@vger.kernel.org
782W: http://linux-atm.sourceforge.net 783W: http://linux-atm.sourceforge.net
783S: Maintained 784S: Maintained
784 785
@@ -1526,10 +1527,10 @@ W: http://ebtables.sourceforge.net/
1526S: Maintained 1527S: Maintained
1527 1528
1528ECRYPT FILE SYSTEM 1529ECRYPT FILE SYSTEM
1529P: Mike Halcrow, Phillip Hellewell 1530P: Tyler Hicks, Dustin Kirkland
1530M: mhalcrow@us.ibm.com, phillip@hellewell.homeip.net 1531M: tyhicks@linux.vnet.ibm.com, kirkland@canonical.com
1531L: ecryptfs-devel@lists.sourceforge.net 1532L: ecryptfs-devel@lists.launchpad.net
1532W: http://ecryptfs.sourceforge.net/ 1533W: https://launchpad.net/ecryptfs
1533S: Supported 1534S: Supported
1534 1535
1535EDAC-CORE 1536EDAC-CORE
@@ -2190,9 +2191,9 @@ S: Supported
2190 2191
2191INOTIFY 2192INOTIFY
2192P: John McCutchan 2193P: John McCutchan
2193M: ttb@tentacle.dhs.org 2194M: john@johnmccutchan.com
2194P: Robert Love 2195P: Robert Love
2195M: rml@novell.com 2196M: rlove@rlove.org
2196L: linux-kernel@vger.kernel.org 2197L: linux-kernel@vger.kernel.org
2197S: Maintained 2198S: Maintained
2198 2199
@@ -3758,6 +3759,15 @@ M: drzeus-sdhci@drzeus.cx
3758L: sdhci-devel@list.drzeus.cx 3759L: sdhci-devel@list.drzeus.cx
3759S: Maintained 3760S: Maintained
3760 3761
3762SECURITY SUBSYSTEM
3763F: security/
3764P: James Morris
3765M: jmorris@namei.org
3766L: linux-kernel@vger.kernel.org
3767L: linux-security-module@vger.kernel.org (suggested Cc:)
3768T: git kernel.org:pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
3769S: Supported
3770
3761SECURITY CONTACT 3771SECURITY CONTACT
3762P: Security Officers 3772P: Security Officers
3763M: security@kernel.org 3773M: security@kernel.org
@@ -4235,7 +4245,7 @@ M: dedekind@infradead.org
4235P: Adrian Hunter 4245P: Adrian Hunter
4236M: ext-adrian.hunter@nokia.com 4246M: ext-adrian.hunter@nokia.com
4237L: linux-mtd@lists.infradead.org 4247L: linux-mtd@lists.infradead.org
4238T: git git://git.infradead.org/~dedekind/ubifs-2.6.git 4248T: git git://git.infradead.org/ubifs-2.6.git
4239W: http://www.linux-mtd.infradead.org/doc/ubifs.html 4249W: http://www.linux-mtd.infradead.org/doc/ubifs.html
4240S: Maintained 4250S: Maintained
4241 4251
@@ -4289,7 +4299,7 @@ P: Artem Bityutskiy
4289M: dedekind@infradead.org 4299M: dedekind@infradead.org
4290W: http://www.linux-mtd.infradead.org/ 4300W: http://www.linux-mtd.infradead.org/
4291L: linux-mtd@lists.infradead.org 4301L: linux-mtd@lists.infradead.org
4292T: git git://git.infradead.org/~dedekind/ubi-2.6.git 4302T: git git://git.infradead.org/ubi-2.6.git
4293S: Maintained 4303S: Maintained
4294 4304
4295USB ACM DRIVER 4305USB ACM DRIVER
diff --git a/Makefile b/Makefile
index 9a49960f7aad..4c8d79710b84 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 28 3SUBLEVEL = 28
4EXTRAVERSION = -rc7 4EXTRAVERSION = -rc9
5NAME = Erotic Pickled Herring 5NAME = Erotic Pickled Herring
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 47ccec95f3e8..ef12794c3c68 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -630,7 +630,7 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq)
630 return -ENOMEM; 630 return -ENOMEM;
631 631
632 sachip->clk = clk_get(me, "SA1111_CLK"); 632 sachip->clk = clk_get(me, "SA1111_CLK");
633 if (!sachip->clk) { 633 if (IS_ERR(sachip->clk)) {
634 ret = PTR_ERR(sachip->clk); 634 ret = PTR_ERR(sachip->clk);
635 goto err_free; 635 goto err_free;
636 } 636 }
diff --git a/arch/arm/include/asm/bitops.h b/arch/arm/include/asm/bitops.h
index 9a1db20e032a..63a481fbbed4 100644
--- a/arch/arm/include/asm/bitops.h
+++ b/arch/arm/include/asm/bitops.h
@@ -237,6 +237,7 @@ extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
237#if __LINUX_ARM_ARCH__ < 5 237#if __LINUX_ARM_ARCH__ < 5
238 238
239#include <asm-generic/bitops/ffz.h> 239#include <asm-generic/bitops/ffz.h>
240#include <asm-generic/bitops/__fls.h>
240#include <asm-generic/bitops/__ffs.h> 241#include <asm-generic/bitops/__ffs.h>
241#include <asm-generic/bitops/fls.h> 242#include <asm-generic/bitops/fls.h>
242#include <asm-generic/bitops/ffs.h> 243#include <asm-generic/bitops/ffs.h>
@@ -277,16 +278,19 @@ static inline int constant_fls(int x)
277 * the clz instruction for much better code efficiency. 278 * the clz instruction for much better code efficiency.
278 */ 279 */
279 280
280#define __fls(x) \
281 ( __builtin_constant_p(x) ? constant_fls(x) : \
282 ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) )
283
284/* Implement fls() in C so that 64-bit args are suitably truncated */
285static inline int fls(int x) 281static inline int fls(int x)
286{ 282{
287 return __fls(x); 283 int ret;
284
285 if (__builtin_constant_p(x))
286 return constant_fls(x);
287
288 asm("clz\t%0, %1" : "=r" (ret) : "r" (x) : "cc");
289 ret = 32 - ret;
290 return ret;
288} 291}
289 292
293#define __fls(x) (fls(x) - 1)
290#define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); }) 294#define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })
291#define __ffs(x) (ffs(x) - 1) 295#define __ffs(x) (ffs(x) - 1)
292#define ffz(x) __ffs( ~(x) ) 296#define ffz(x) __ffs( ~(x) )
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
index 517a4d6ffc74..6ff33790f47b 100644
--- a/arch/arm/include/asm/processor.h
+++ b/arch/arm/include/asm/processor.h
@@ -23,7 +23,7 @@
23#include <asm/types.h> 23#include <asm/types.h>
24 24
25#ifdef __KERNEL__ 25#ifdef __KERNEL__
26#define STACK_TOP ((current->personality == PER_LINUX_32BIT) ? \ 26#define STACK_TOP ((current->personality & ADDR_LIMIT_32BIT) ? \
27 TASK_SIZE : TASK_SIZE_26) 27 TASK_SIZE : TASK_SIZE_26)
28#define STACK_TOP_MAX TASK_SIZE 28#define STACK_TOP_MAX TASK_SIZE
29#endif 29#endif
diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
index c74f766ffc12..23af3c972c9a 100644
--- a/arch/arm/kernel/armksyms.c
+++ b/arch/arm/kernel/armksyms.c
@@ -115,6 +115,8 @@ EXPORT_SYMBOL(__strnlen_user);
115EXPORT_SYMBOL(__strncpy_from_user); 115EXPORT_SYMBOL(__strncpy_from_user);
116 116
117#ifdef CONFIG_MMU 117#ifdef CONFIG_MMU
118EXPORT_SYMBOL(copy_page);
119
118EXPORT_SYMBOL(__copy_from_user); 120EXPORT_SYMBOL(__copy_from_user);
119EXPORT_SYMBOL(__copy_to_user); 121EXPORT_SYMBOL(__copy_to_user);
120EXPORT_SYMBOL(__clear_user); 122EXPORT_SYMBOL(__clear_user);
@@ -181,8 +183,6 @@ EXPORT_SYMBOL(_find_first_bit_be);
181EXPORT_SYMBOL(_find_next_bit_be); 183EXPORT_SYMBOL(_find_next_bit_be);
182#endif 184#endif
183 185
184EXPORT_SYMBOL(copy_page);
185
186#ifdef CONFIG_FUNCTION_TRACER 186#ifdef CONFIG_FUNCTION_TRACER
187EXPORT_SYMBOL(mcount); 187EXPORT_SYMBOL(mcount);
188#endif 188#endif
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index 57e6874d0b80..79abc4ddc0cf 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -18,6 +18,7 @@
18#include <linux/personality.h> 18#include <linux/personality.h>
19#include <linux/kallsyms.h> 19#include <linux/kallsyms.h>
20#include <linux/delay.h> 20#include <linux/delay.h>
21#include <linux/hardirq.h>
21#include <linux/init.h> 22#include <linux/init.h>
22#include <linux/uaccess.h> 23#include <linux/uaccess.h>
23 24
diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c
index b3bd8ca85118..4c3e582f3d3c 100644
--- a/arch/arm/mach-omap1/io.c
+++ b/arch/arm/mach-omap1/io.c
@@ -128,7 +128,7 @@ void __init omap1_map_common_io(void)
128 * Common low-level hardware init for omap1. This should only get called from 128 * Common low-level hardware init for omap1. This should only get called from
129 * board specific init. 129 * board specific init.
130 */ 130 */
131void __init omap1_init_common_hw() 131void __init omap1_init_common_hw(void)
132{ 132{
133 /* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort 133 /* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort
134 * on a Posted Write in the TIPB Bridge". 134 * on a Posted Write in the TIPB Bridge".
diff --git a/arch/arm/mach-pxa/include/mach/reset.h b/arch/arm/mach-pxa/include/mach/reset.h
index 7b8842cfa5fc..31e6a7b6ad80 100644
--- a/arch/arm/mach-pxa/include/mach/reset.h
+++ b/arch/arm/mach-pxa/include/mach/reset.h
@@ -12,9 +12,8 @@ extern void clear_reset_status(unsigned int mask);
12 12
13/** 13/**
14 * init_gpio_reset() - register GPIO as reset generator 14 * init_gpio_reset() - register GPIO as reset generator
15 * 15 * @gpio: gpio nr
16 * @gpio - gpio nr 16 * @output: set gpio as out/low instead of input during normal work
17 * @output - set gpio as out/low instead of input during normal work
18 */ 17 */
19extern int init_gpio_reset(int gpio, int output); 18extern int init_gpio_reset(int gpio, int output);
20 19
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c
index 133e65d166b3..2d5884ce0435 100644
--- a/arch/arm/mm/alignment.c
+++ b/arch/arm/mm/alignment.c
@@ -70,6 +70,10 @@ static unsigned long ai_dword;
70static unsigned long ai_multi; 70static unsigned long ai_multi;
71static int ai_usermode; 71static int ai_usermode;
72 72
73#define UM_WARN (1 << 0)
74#define UM_FIXUP (1 << 1)
75#define UM_SIGNAL (1 << 2)
76
73#ifdef CONFIG_PROC_FS 77#ifdef CONFIG_PROC_FS
74static const char *usermode_action[] = { 78static const char *usermode_action[] = {
75 "ignored", 79 "ignored",
@@ -754,7 +758,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
754 user: 758 user:
755 ai_user += 1; 759 ai_user += 1;
756 760
757 if (ai_usermode & 1) 761 if (ai_usermode & UM_WARN)
758 printk("Alignment trap: %s (%d) PC=0x%08lx Instr=0x%0*lx " 762 printk("Alignment trap: %s (%d) PC=0x%08lx Instr=0x%0*lx "
759 "Address=0x%08lx FSR 0x%03x\n", current->comm, 763 "Address=0x%08lx FSR 0x%03x\n", current->comm,
760 task_pid_nr(current), instrptr, 764 task_pid_nr(current), instrptr,
@@ -762,10 +766,10 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
762 thumb_mode(regs) ? tinstr : instr, 766 thumb_mode(regs) ? tinstr : instr,
763 addr, fsr); 767 addr, fsr);
764 768
765 if (ai_usermode & 2) 769 if (ai_usermode & UM_FIXUP)
766 goto fixup; 770 goto fixup;
767 771
768 if (ai_usermode & 4) 772 if (ai_usermode & UM_SIGNAL)
769 force_sig(SIGBUS, current); 773 force_sig(SIGBUS, current);
770 else 774 else
771 set_cr(cr_no_alignment); 775 set_cr(cr_no_alignment);
@@ -796,6 +800,22 @@ static int __init alignment_init(void)
796 res->write_proc = proc_alignment_write; 800 res->write_proc = proc_alignment_write;
797#endif 801#endif
798 802
803 /*
804 * ARMv6 and later CPUs can perform unaligned accesses for
805 * most single load and store instructions up to word size.
806 * LDM, STM, LDRD and STRD still need to be handled.
807 *
808 * Ignoring the alignment fault is not an option on these
809 * CPUs since we spin re-faulting the instruction without
810 * making any progress.
811 */
812 if (cpu_architecture() >= CPU_ARCH_ARMv6 && (cr_alignment & CR_U)) {
813 cr_alignment &= ~CR_A;
814 cr_no_alignment &= ~CR_A;
815 set_cr(cr_alignment);
816 ai_usermode = UM_FIXUP;
817 }
818
799 hook_fault_code(1, do_alignment, SIGILL, "alignment exception"); 819 hook_fault_code(1, do_alignment, SIGILL, "alignment exception");
800 hook_fault_code(3, do_alignment, SIGILL, "alignment exception"); 820 hook_fault_code(3, do_alignment, SIGILL, "alignment exception");
801 821
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index 2df8d9facf57..22c9530e91e2 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -11,6 +11,7 @@
11#include <linux/module.h> 11#include <linux/module.h>
12#include <linux/signal.h> 12#include <linux/signal.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/hardirq.h>
14#include <linux/init.h> 15#include <linux/init.h>
15#include <linux/kprobes.h> 16#include <linux/kprobes.h>
16#include <linux/uaccess.h> 17#include <linux/uaccess.h>
diff --git a/arch/arm/plat-omap/include/mach/omapfb.h b/arch/arm/plat-omap/include/mach/omapfb.h
index ec67fb428607..7b74d1255e0b 100644
--- a/arch/arm/plat-omap/include/mach/omapfb.h
+++ b/arch/arm/plat-omap/include/mach/omapfb.h
@@ -353,8 +353,8 @@ struct omapfb_device {
353 u32 pseudo_palette[17]; 353 u32 pseudo_palette[17];
354 354
355 struct lcd_panel *panel; /* LCD panel */ 355 struct lcd_panel *panel; /* LCD panel */
356 struct lcd_ctrl *ctrl; /* LCD controller */ 356 const struct lcd_ctrl *ctrl; /* LCD controller */
357 struct lcd_ctrl *int_ctrl; /* internal LCD ctrl */ 357 const struct lcd_ctrl *int_ctrl; /* internal LCD ctrl */
358 struct lcd_ctrl_extif *ext_if; /* LCD ctrl external 358 struct lcd_ctrl_extif *ext_if; /* LCD ctrl external
359 interface */ 359 interface */
360 struct device *dev; 360 struct device *dev;
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c
index 9f9a921829c0..dcd9d16da2e9 100644
--- a/arch/arm/plat-omap/sram.c
+++ b/arch/arm/plat-omap/sram.c
@@ -255,7 +255,7 @@ void omap_sram_reprogram_clock(u32 dpllctl, u32 ckctl)
255 if (!_omap_sram_reprogram_clock) 255 if (!_omap_sram_reprogram_clock)
256 omap_sram_error(); 256 omap_sram_error();
257 257
258 return _omap_sram_reprogram_clock(dpllctl, ckctl); 258 _omap_sram_reprogram_clock(dpllctl, ckctl);
259} 259}
260 260
261int __init omap1_sram_init(void) 261int __init omap1_sram_init(void)
@@ -282,8 +282,8 @@ void omap2_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
282 if (!_omap2_sram_ddr_init) 282 if (!_omap2_sram_ddr_init)
283 omap_sram_error(); 283 omap_sram_error();
284 284
285 return _omap2_sram_ddr_init(slow_dll_ctrl, fast_dll_ctrl, 285 _omap2_sram_ddr_init(slow_dll_ctrl, fast_dll_ctrl,
286 base_cs, force_unlock); 286 base_cs, force_unlock);
287} 287}
288 288
289static void (*_omap2_sram_reprogram_sdrc)(u32 perf_level, u32 dll_val, 289static void (*_omap2_sram_reprogram_sdrc)(u32 perf_level, u32 dll_val,
@@ -294,7 +294,7 @@ void omap2_sram_reprogram_sdrc(u32 perf_level, u32 dll_val, u32 mem_type)
294 if (!_omap2_sram_reprogram_sdrc) 294 if (!_omap2_sram_reprogram_sdrc)
295 omap_sram_error(); 295 omap_sram_error();
296 296
297 return _omap2_sram_reprogram_sdrc(perf_level, dll_val, mem_type); 297 _omap2_sram_reprogram_sdrc(perf_level, dll_val, mem_type);
298} 298}
299 299
300static u32 (*_omap2_set_prcm)(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass); 300static u32 (*_omap2_set_prcm)(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass);
diff --git a/arch/arm/plat-orion/pcie.c b/arch/arm/plat-orion/pcie.c
index 883902fead89..d41d41d78ad9 100644
--- a/arch/arm/plat-orion/pcie.c
+++ b/arch/arm/plat-orion/pcie.c
@@ -35,7 +35,7 @@
35#define PCIE_CONF_REG(r) ((((r) & 0xf00) << 16) | ((r) & 0xfc)) 35#define PCIE_CONF_REG(r) ((((r) & 0xf00) << 16) | ((r) & 0xfc))
36#define PCIE_CONF_BUS(b) (((b) & 0xff) << 16) 36#define PCIE_CONF_BUS(b) (((b) & 0xff) << 16)
37#define PCIE_CONF_DEV(d) (((d) & 0x1f) << 11) 37#define PCIE_CONF_DEV(d) (((d) & 0x1f) << 11)
38#define PCIE_CONF_FUNC(f) (((f) & 0x3) << 8) 38#define PCIE_CONF_FUNC(f) (((f) & 0x7) << 8)
39#define PCIE_CONF_DATA_OFF 0x18fc 39#define PCIE_CONF_DATA_OFF 0x18fc
40#define PCIE_MASK_OFF 0x1910 40#define PCIE_MASK_OFF 0x1910
41#define PCIE_CTRL_OFF 0x1a00 41#define PCIE_CTRL_OFF 0x1a00
diff --git a/arch/avr32/boards/favr-32/flash.c b/arch/avr32/boards/favr-32/flash.c
index 5f139b7cb5f7..604bbd5e41d9 100644
--- a/arch/avr32/boards/favr-32/flash.c
+++ b/arch/avr32/boards/favr-32/flash.c
@@ -13,7 +13,7 @@
13#include <linux/mtd/partitions.h> 13#include <linux/mtd/partitions.h>
14#include <linux/mtd/physmap.h> 14#include <linux/mtd/physmap.h>
15 15
16#include <asm/arch/smc.h> 16#include <mach/smc.h>
17 17
18static struct smc_timing flash_timing __initdata = { 18static struct smc_timing flash_timing __initdata = {
19 .ncs_read_setup = 0, 19 .ncs_read_setup = 0,
diff --git a/arch/avr32/boards/favr-32/setup.c b/arch/avr32/boards/favr-32/setup.c
index 7538f3d2b9e0..1ee4faf0742d 100644
--- a/arch/avr32/boards/favr-32/setup.c
+++ b/arch/avr32/boards/favr-32/setup.c
@@ -25,10 +25,10 @@
25 25
26#include <asm/setup.h> 26#include <asm/setup.h>
27 27
28#include <asm/arch/at32ap700x.h> 28#include <mach/at32ap700x.h>
29#include <asm/arch/init.h> 29#include <mach/init.h>
30#include <asm/arch/board.h> 30#include <mach/board.h>
31#include <asm/arch/portmux.h> 31#include <mach/portmux.h>
32 32
33/* Oscillator frequencies. These are board-specific */ 33/* Oscillator frequencies. These are board-specific */
34unsigned long at32_board_osc_rates[3] = { 34unsigned long at32_board_osc_rates[3] = {
diff --git a/arch/avr32/boot/images/Makefile b/arch/avr32/boot/images/Makefile
index 219720a47bf9..1848bf0d7f62 100644
--- a/arch/avr32/boot/images/Makefile
+++ b/arch/avr32/boot/images/Makefile
@@ -10,7 +10,7 @@ MKIMAGE := $(srctree)/scripts/mkuboot.sh
10 10
11extra-y := vmlinux.bin vmlinux.gz 11extra-y := vmlinux.bin vmlinux.gz
12 12
13OBJCOPYFLAGS_vmlinux.bin := -O binary 13OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note.gnu.build-id
14$(obj)/vmlinux.bin: vmlinux FORCE 14$(obj)/vmlinux.bin: vmlinux FORCE
15 $(call if_changed,objcopy) 15 $(call if_changed,objcopy)
16 16
diff --git a/arch/avr32/configs/atstk1006_defconfig b/arch/avr32/configs/atstk1006_defconfig
index 8b6e54c9946a..6c45a3b77aa3 100644
--- a/arch/avr32/configs/atstk1006_defconfig
+++ b/arch/avr32/configs/atstk1006_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-rc1 3# Linux kernel version: 2.6.28-rc8
4# Tue Aug 5 15:40:26 2008 4# Thu Dec 18 11:22:23 2008
5# 5#
6CONFIG_AVR32=y 6CONFIG_AVR32=y
7CONFIG_GENERIC_GPIO=y 7CONFIG_GENERIC_GPIO=y
@@ -67,6 +67,7 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 67CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 68CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 69CONFIG_SHMEM=y
70CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 71CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLUB_DEBUG=y 72CONFIG_SLUB_DEBUG=y
72# CONFIG_SLAB is not set 73# CONFIG_SLAB is not set
@@ -77,15 +78,8 @@ CONFIG_PROFILING=y
77CONFIG_OPROFILE=m 78CONFIG_OPROFILE=m
78CONFIG_HAVE_OPROFILE=y 79CONFIG_HAVE_OPROFILE=y
79CONFIG_KPROBES=y 80CONFIG_KPROBES=y
80# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
81# CONFIG_HAVE_IOREMAP_PROT is not set
82CONFIG_HAVE_KPROBES=y 81CONFIG_HAVE_KPROBES=y
83# CONFIG_HAVE_KRETPROBES is not set
84# CONFIG_HAVE_ARCH_TRACEHOOK is not set
85# CONFIG_HAVE_DMA_ATTRS is not set
86# CONFIG_USE_GENERIC_SMP_HELPERS is not set
87CONFIG_HAVE_CLK=y 82CONFIG_HAVE_CLK=y
88CONFIG_PROC_PAGE_MONITOR=y
89# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 83# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
90CONFIG_SLABINFO=y 84CONFIG_SLABINFO=y
91CONFIG_RT_MUTEXES=y 85CONFIG_RT_MUTEXES=y
@@ -118,6 +112,7 @@ CONFIG_DEFAULT_CFQ=y
118# CONFIG_DEFAULT_NOOP is not set 112# CONFIG_DEFAULT_NOOP is not set
119CONFIG_DEFAULT_IOSCHED="cfq" 113CONFIG_DEFAULT_IOSCHED="cfq"
120CONFIG_CLASSIC_RCU=y 114CONFIG_CLASSIC_RCU=y
115CONFIG_FREEZER=y
121 116
122# 117#
123# System Type and features 118# System Type and features
@@ -134,6 +129,8 @@ CONFIG_CPU_AT32AP700X=y
134CONFIG_CPU_AT32AP7000=y 129CONFIG_CPU_AT32AP7000=y
135CONFIG_BOARD_ATSTK1000=y 130CONFIG_BOARD_ATSTK1000=y
136# CONFIG_BOARD_ATNGW100 is not set 131# CONFIG_BOARD_ATNGW100 is not set
132# CONFIG_BOARD_FAVR_32 is not set
133# CONFIG_BOARD_MIMC200 is not set
137# CONFIG_BOARD_ATSTK1002 is not set 134# CONFIG_BOARD_ATSTK1002 is not set
138# CONFIG_BOARD_ATSTK1003 is not set 135# CONFIG_BOARD_ATSTK1003 is not set
139# CONFIG_BOARD_ATSTK1004 is not set 136# CONFIG_BOARD_ATSTK1004 is not set
@@ -171,14 +168,14 @@ CONFIG_FLATMEM_MANUAL=y
171# CONFIG_SPARSEMEM_MANUAL is not set 168# CONFIG_SPARSEMEM_MANUAL is not set
172CONFIG_FLATMEM=y 169CONFIG_FLATMEM=y
173CONFIG_FLAT_NODE_MEM_MAP=y 170CONFIG_FLAT_NODE_MEM_MAP=y
174# CONFIG_SPARSEMEM_STATIC is not set
175# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
176CONFIG_PAGEFLAGS_EXTENDED=y 171CONFIG_PAGEFLAGS_EXTENDED=y
177CONFIG_SPLIT_PTLOCK_CPUS=4 172CONFIG_SPLIT_PTLOCK_CPUS=4
178# CONFIG_RESOURCES_64BIT is not set 173# CONFIG_RESOURCES_64BIT is not set
174# CONFIG_PHYS_ADDR_T_64BIT is not set
179CONFIG_ZONE_DMA_FLAG=0 175CONFIG_ZONE_DMA_FLAG=0
180CONFIG_NR_QUICK=2 176CONFIG_NR_QUICK=2
181CONFIG_VIRT_TO_BUS=y 177CONFIG_VIRT_TO_BUS=y
178CONFIG_UNEVICTABLE_LRU=y
182# CONFIG_OWNERSHIP_TRACE is not set 179# CONFIG_OWNERSHIP_TRACE is not set
183CONFIG_NMI_DEBUGGING=y 180CONFIG_NMI_DEBUGGING=y
184# CONFIG_HZ_100 is not set 181# CONFIG_HZ_100 is not set
@@ -186,7 +183,7 @@ CONFIG_HZ_250=y
186# CONFIG_HZ_300 is not set 183# CONFIG_HZ_300 is not set
187# CONFIG_HZ_1000 is not set 184# CONFIG_HZ_1000 is not set
188CONFIG_HZ=250 185CONFIG_HZ=250
189# CONFIG_SCHED_HRTICK is not set 186CONFIG_SCHED_HRTICK=y
190CONFIG_CMDLINE="" 187CONFIG_CMDLINE=""
191 188
192# 189#
@@ -228,6 +225,8 @@ CONFIG_CPU_FREQ_AT32AP=y
228# Executable file formats 225# Executable file formats
229# 226#
230CONFIG_BINFMT_ELF=y 227CONFIG_BINFMT_ELF=y
228CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
229# CONFIG_HAVE_AOUT is not set
231# CONFIG_BINFMT_MISC is not set 230# CONFIG_BINFMT_MISC is not set
232CONFIG_NET=y 231CONFIG_NET=y
233 232
@@ -299,6 +298,7 @@ CONFIG_IPV6_TUNNEL=m
299# CONFIG_ATM is not set 298# CONFIG_ATM is not set
300CONFIG_STP=m 299CONFIG_STP=m
301CONFIG_BRIDGE=m 300CONFIG_BRIDGE=m
301# CONFIG_NET_DSA is not set
302# CONFIG_VLAN_8021Q is not set 302# CONFIG_VLAN_8021Q is not set
303# CONFIG_DECNET is not set 303# CONFIG_DECNET is not set
304CONFIG_LLC=m 304CONFIG_LLC=m
@@ -321,14 +321,8 @@ CONFIG_LLC=m
321# CONFIG_IRDA is not set 321# CONFIG_IRDA is not set
322# CONFIG_BT is not set 322# CONFIG_BT is not set
323# CONFIG_AF_RXRPC is not set 323# CONFIG_AF_RXRPC is not set
324 324# CONFIG_PHONET is not set
325# 325# CONFIG_WIRELESS is not set
326# Wireless
327#
328# CONFIG_CFG80211 is not set
329# CONFIG_WIRELESS_EXT is not set
330# CONFIG_MAC80211 is not set
331# CONFIG_IEEE80211 is not set
332# CONFIG_RFKILL is not set 326# CONFIG_RFKILL is not set
333# CONFIG_NET_9P is not set 327# CONFIG_NET_9P is not set
334 328
@@ -359,6 +353,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
359# User Modules And Translation Layers 353# User Modules And Translation Layers
360# 354#
361CONFIG_MTD_CHAR=y 355CONFIG_MTD_CHAR=y
356CONFIG_HAVE_MTD_OTP=y
362CONFIG_MTD_BLKDEVS=y 357CONFIG_MTD_BLKDEVS=y
363CONFIG_MTD_BLOCK=y 358CONFIG_MTD_BLOCK=y
364# CONFIG_FTL is not set 359# CONFIG_FTL is not set
@@ -407,6 +402,8 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
407# Self-contained MTD device drivers 402# Self-contained MTD device drivers
408# 403#
409CONFIG_MTD_DATAFLASH=m 404CONFIG_MTD_DATAFLASH=m
405# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
406CONFIG_MTD_DATAFLASH_OTP=y
410CONFIG_MTD_M25P80=m 407CONFIG_MTD_M25P80=m
411CONFIG_M25PXX_USE_FAST_READ=y 408CONFIG_M25PXX_USE_FAST_READ=y
412# CONFIG_MTD_SLRAM is not set 409# CONFIG_MTD_SLRAM is not set
@@ -464,9 +461,10 @@ CONFIG_ATMEL_TCLIB=y
464CONFIG_ATMEL_TCB_CLKSRC=y 461CONFIG_ATMEL_TCB_CLKSRC=y
465CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0 462CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
466# CONFIG_EEPROM_93CX6 is not set 463# CONFIG_EEPROM_93CX6 is not set
464# CONFIG_ICS932S401 is not set
467CONFIG_ATMEL_SSC=m 465CONFIG_ATMEL_SSC=m
468# CONFIG_ENCLOSURE_SERVICES is not set 466# CONFIG_ENCLOSURE_SERVICES is not set
469# CONFIG_HAVE_IDE is not set 467# CONFIG_C2PORT is not set
470 468
471# 469#
472# SCSI device support 470# SCSI device support
@@ -548,6 +546,9 @@ CONFIG_MACB=y
548# CONFIG_IBM_NEW_EMAC_RGMII is not set 546# CONFIG_IBM_NEW_EMAC_RGMII is not set
549# CONFIG_IBM_NEW_EMAC_TAH is not set 547# CONFIG_IBM_NEW_EMAC_TAH is not set
550# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 548# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
549# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
550# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
551# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
551# CONFIG_B44 is not set 552# CONFIG_B44 is not set
552# CONFIG_NETDEV_1000 is not set 553# CONFIG_NETDEV_1000 is not set
553# CONFIG_NETDEV_10000 is not set 554# CONFIG_NETDEV_10000 is not set
@@ -653,6 +654,7 @@ CONFIG_UNIX98_PTYS=y
653CONFIG_I2C=m 654CONFIG_I2C=m
654CONFIG_I2C_BOARDINFO=y 655CONFIG_I2C_BOARDINFO=y
655CONFIG_I2C_CHARDEV=m 656CONFIG_I2C_CHARDEV=m
657CONFIG_I2C_HELPER_AUTO=y
656CONFIG_I2C_ALGOBIT=m 658CONFIG_I2C_ALGOBIT=m
657 659
658# 660#
@@ -717,6 +719,10 @@ CONFIG_GPIOLIB=y
717CONFIG_GPIO_SYSFS=y 719CONFIG_GPIO_SYSFS=y
718 720
719# 721#
722# Memory mapped GPIO expanders:
723#
724
725#
720# I2C GPIO expanders: 726# I2C GPIO expanders:
721# 727#
722# CONFIG_GPIO_MAX732X is not set 728# CONFIG_GPIO_MAX732X is not set
@@ -745,11 +751,11 @@ CONFIG_WATCHDOG=y
745# 751#
746# CONFIG_SOFT_WATCHDOG is not set 752# CONFIG_SOFT_WATCHDOG is not set
747CONFIG_AT32AP700X_WDT=y 753CONFIG_AT32AP700X_WDT=y
754CONFIG_SSB_POSSIBLE=y
748 755
749# 756#
750# Sonics Silicon Backplane 757# Sonics Silicon Backplane
751# 758#
752CONFIG_SSB_POSSIBLE=y
753# CONFIG_SSB is not set 759# CONFIG_SSB is not set
754 760
755# 761#
@@ -758,6 +764,10 @@ CONFIG_SSB_POSSIBLE=y
758# CONFIG_MFD_CORE is not set 764# CONFIG_MFD_CORE is not set
759# CONFIG_MFD_SM501 is not set 765# CONFIG_MFD_SM501 is not set
760# CONFIG_HTC_PASIC3 is not set 766# CONFIG_HTC_PASIC3 is not set
767# CONFIG_MFD_TMIO is not set
768# CONFIG_MFD_WM8400 is not set
769# CONFIG_MFD_WM8350_I2C is not set
770# CONFIG_REGULATOR is not set
761 771
762# 772#
763# Multimedia devices 773# Multimedia devices
@@ -783,6 +793,7 @@ CONFIG_SSB_POSSIBLE=y
783CONFIG_FB=y 793CONFIG_FB=y
784# CONFIG_FIRMWARE_EDID is not set 794# CONFIG_FIRMWARE_EDID is not set
785# CONFIG_FB_DDC is not set 795# CONFIG_FB_DDC is not set
796# CONFIG_FB_BOOT_VESA_SUPPORT is not set
786CONFIG_FB_CFB_FILLRECT=y 797CONFIG_FB_CFB_FILLRECT=y
787CONFIG_FB_CFB_COPYAREA=y 798CONFIG_FB_CFB_COPYAREA=y
788CONFIG_FB_CFB_IMAGEBLIT=y 799CONFIG_FB_CFB_IMAGEBLIT=y
@@ -804,10 +815,13 @@ CONFIG_FB_CFB_IMAGEBLIT=y
804# CONFIG_FB_S1D13XXX is not set 815# CONFIG_FB_S1D13XXX is not set
805CONFIG_FB_ATMEL=y 816CONFIG_FB_ATMEL=y
806# CONFIG_FB_VIRTUAL is not set 817# CONFIG_FB_VIRTUAL is not set
818# CONFIG_FB_METRONOME is not set
819# CONFIG_FB_MB862XX is not set
807CONFIG_BACKLIGHT_LCD_SUPPORT=y 820CONFIG_BACKLIGHT_LCD_SUPPORT=y
808CONFIG_LCD_CLASS_DEVICE=y 821CONFIG_LCD_CLASS_DEVICE=y
809CONFIG_LCD_LTV350QV=y 822CONFIG_LCD_LTV350QV=y
810# CONFIG_LCD_ILI9320 is not set 823# CONFIG_LCD_ILI9320 is not set
824# CONFIG_LCD_TDO24M is not set
811# CONFIG_LCD_VGG2432A4 is not set 825# CONFIG_LCD_VGG2432A4 is not set
812# CONFIG_LCD_PLATFORM is not set 826# CONFIG_LCD_PLATFORM is not set
813# CONFIG_BACKLIGHT_CLASS_DEVICE is not set 827# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
@@ -818,6 +832,7 @@ CONFIG_LCD_LTV350QV=y
818# CONFIG_DISPLAY_SUPPORT is not set 832# CONFIG_DISPLAY_SUPPORT is not set
819# CONFIG_LOGO is not set 833# CONFIG_LOGO is not set
820CONFIG_SOUND=m 834CONFIG_SOUND=m
835CONFIG_SOUND_OSS_CORE=y
821CONFIG_SND=m 836CONFIG_SND=m
822CONFIG_SND_TIMER=m 837CONFIG_SND_TIMER=m
823CONFIG_SND_PCM=m 838CONFIG_SND_PCM=m
@@ -848,28 +863,32 @@ CONFIG_USB_SUPPORT=y
848# CONFIG_USB_ARCH_HAS_EHCI is not set 863# CONFIG_USB_ARCH_HAS_EHCI is not set
849# CONFIG_USB_OTG_WHITELIST is not set 864# CONFIG_USB_OTG_WHITELIST is not set
850# CONFIG_USB_OTG_BLACKLIST_HUB is not set 865# CONFIG_USB_OTG_BLACKLIST_HUB is not set
866# CONFIG_USB_MUSB_HDRC is not set
867# CONFIG_USB_GADGET_MUSB_HDRC is not set
851 868
852# 869#
853# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 870# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
854# 871#
855CONFIG_USB_GADGET=y 872CONFIG_USB_GADGET=y
856# CONFIG_USB_GADGET_DEBUG is not set 873# CONFIG_USB_GADGET_DEBUG is not set
857# CONFIG_USB_GADGET_DEBUG_FILES is not set 874# CONFIG_USB_GADGET_DEBUG_FILES is not set
858# CONFIG_USB_GADGET_DEBUG_FS is not set 875# CONFIG_USB_GADGET_DEBUG_FS is not set
876CONFIG_USB_GADGET_VBUS_DRAW=2
859CONFIG_USB_GADGET_SELECTED=y 877CONFIG_USB_GADGET_SELECTED=y
860# CONFIG_USB_GADGET_AMD5536UDC is not set 878# CONFIG_USB_GADGET_AT91 is not set
861CONFIG_USB_GADGET_ATMEL_USBA=y 879CONFIG_USB_GADGET_ATMEL_USBA=y
862CONFIG_USB_ATMEL_USBA=y 880CONFIG_USB_ATMEL_USBA=y
863# CONFIG_USB_GADGET_FSL_USB2 is not set 881# CONFIG_USB_GADGET_FSL_USB2 is not set
864# CONFIG_USB_GADGET_NET2280 is not set
865# CONFIG_USB_GADGET_PXA25X is not set
866# CONFIG_USB_GADGET_M66592 is not set
867# CONFIG_USB_GADGET_PXA27X is not set
868# CONFIG_USB_GADGET_GOKU is not set
869# CONFIG_USB_GADGET_LH7A40X is not set 882# CONFIG_USB_GADGET_LH7A40X is not set
870# CONFIG_USB_GADGET_OMAP is not set 883# CONFIG_USB_GADGET_OMAP is not set
884# CONFIG_USB_GADGET_PXA25X is not set
885# CONFIG_USB_GADGET_PXA27X is not set
871# CONFIG_USB_GADGET_S3C2410 is not set 886# CONFIG_USB_GADGET_S3C2410 is not set
872# CONFIG_USB_GADGET_AT91 is not set 887# CONFIG_USB_GADGET_M66592 is not set
888# CONFIG_USB_GADGET_AMD5536UDC is not set
889# CONFIG_USB_GADGET_FSL_QE is not set
890# CONFIG_USB_GADGET_NET2280 is not set
891# CONFIG_USB_GADGET_GOKU is not set
873# CONFIG_USB_GADGET_DUMMY_HCD is not set 892# CONFIG_USB_GADGET_DUMMY_HCD is not set
874CONFIG_USB_GADGET_DUALSPEED=y 893CONFIG_USB_GADGET_DUALSPEED=y
875CONFIG_USB_ZERO=m 894CONFIG_USB_ZERO=m
@@ -887,7 +906,7 @@ CONFIG_MMC=y
887# CONFIG_MMC_UNSAFE_RESUME is not set 906# CONFIG_MMC_UNSAFE_RESUME is not set
888 907
889# 908#
890# MMC/SD Card Drivers 909# MMC/SD/SDIO Card Drivers
891# 910#
892CONFIG_MMC_BLOCK=y 911CONFIG_MMC_BLOCK=y
893CONFIG_MMC_BLOCK_BOUNCE=y 912CONFIG_MMC_BLOCK_BOUNCE=y
@@ -895,10 +914,11 @@ CONFIG_MMC_BLOCK_BOUNCE=y
895# CONFIG_MMC_TEST is not set 914# CONFIG_MMC_TEST is not set
896 915
897# 916#
898# MMC/SD Host Controller Drivers 917# MMC/SD/SDIO Host Controller Drivers
899# 918#
900# CONFIG_MMC_SDHCI is not set 919# CONFIG_MMC_SDHCI is not set
901CONFIG_MMC_ATMELMCI=y 920CONFIG_MMC_ATMELMCI=y
921# CONFIG_MMC_ATMELMCI_DMA is not set
902CONFIG_MMC_SPI=m 922CONFIG_MMC_SPI=m
903# CONFIG_MEMSTICK is not set 923# CONFIG_MEMSTICK is not set
904CONFIG_NEW_LEDS=y 924CONFIG_NEW_LEDS=y
@@ -918,6 +938,7 @@ CONFIG_LEDS_GPIO=m
918CONFIG_LEDS_TRIGGERS=y 938CONFIG_LEDS_TRIGGERS=y
919CONFIG_LEDS_TRIGGER_TIMER=m 939CONFIG_LEDS_TRIGGER_TIMER=m
920CONFIG_LEDS_TRIGGER_HEARTBEAT=m 940CONFIG_LEDS_TRIGGER_HEARTBEAT=m
941# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
921CONFIG_LEDS_TRIGGER_DEFAULT_ON=m 942CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
922# CONFIG_ACCESSIBILITY is not set 943# CONFIG_ACCESSIBILITY is not set
923CONFIG_RTC_LIB=y 944CONFIG_RTC_LIB=y
@@ -950,25 +971,31 @@ CONFIG_RTC_INTF_DEV=y
950# CONFIG_RTC_DRV_M41T80 is not set 971# CONFIG_RTC_DRV_M41T80 is not set
951# CONFIG_RTC_DRV_S35390A is not set 972# CONFIG_RTC_DRV_S35390A is not set
952# CONFIG_RTC_DRV_FM3130 is not set 973# CONFIG_RTC_DRV_FM3130 is not set
974# CONFIG_RTC_DRV_RX8581 is not set
953 975
954# 976#
955# SPI RTC drivers 977# SPI RTC drivers
956# 978#
957# CONFIG_RTC_DRV_M41T94 is not set 979# CONFIG_RTC_DRV_M41T94 is not set
958# CONFIG_RTC_DRV_DS1305 is not set 980# CONFIG_RTC_DRV_DS1305 is not set
981# CONFIG_RTC_DRV_DS1390 is not set
959# CONFIG_RTC_DRV_MAX6902 is not set 982# CONFIG_RTC_DRV_MAX6902 is not set
960# CONFIG_RTC_DRV_R9701 is not set 983# CONFIG_RTC_DRV_R9701 is not set
961# CONFIG_RTC_DRV_RS5C348 is not set 984# CONFIG_RTC_DRV_RS5C348 is not set
985# CONFIG_RTC_DRV_DS3234 is not set
962 986
963# 987#
964# Platform RTC drivers 988# Platform RTC drivers
965# 989#
990# CONFIG_RTC_DRV_DS1286 is not set
966# CONFIG_RTC_DRV_DS1511 is not set 991# CONFIG_RTC_DRV_DS1511 is not set
967# CONFIG_RTC_DRV_DS1553 is not set 992# CONFIG_RTC_DRV_DS1553 is not set
968# CONFIG_RTC_DRV_DS1742 is not set 993# CONFIG_RTC_DRV_DS1742 is not set
969# CONFIG_RTC_DRV_STK17TA8 is not set 994# CONFIG_RTC_DRV_STK17TA8 is not set
970# CONFIG_RTC_DRV_M48T86 is not set 995# CONFIG_RTC_DRV_M48T86 is not set
996# CONFIG_RTC_DRV_M48T35 is not set
971# CONFIG_RTC_DRV_M48T59 is not set 997# CONFIG_RTC_DRV_M48T59 is not set
998# CONFIG_RTC_DRV_BQ4802 is not set
972# CONFIG_RTC_DRV_V3020 is not set 999# CONFIG_RTC_DRV_V3020 is not set
973 1000
974# 1001#
@@ -989,6 +1016,8 @@ CONFIG_DMA_ENGINE=y
989# CONFIG_NET_DMA is not set 1016# CONFIG_NET_DMA is not set
990CONFIG_DMATEST=m 1017CONFIG_DMATEST=m
991# CONFIG_UIO is not set 1018# CONFIG_UIO is not set
1019# CONFIG_STAGING is not set
1020CONFIG_STAGING_EXCLUDE_BUILD=y
992 1021
993# 1022#
994# File systems 1023# File systems
@@ -998,12 +1027,17 @@ CONFIG_EXT2_FS=m
998# CONFIG_EXT2_FS_XIP is not set 1027# CONFIG_EXT2_FS_XIP is not set
999CONFIG_EXT3_FS=m 1028CONFIG_EXT3_FS=m
1000# CONFIG_EXT3_FS_XATTR is not set 1029# CONFIG_EXT3_FS_XATTR is not set
1001# CONFIG_EXT4DEV_FS is not set 1030CONFIG_EXT4_FS=m
1031CONFIG_EXT4DEV_COMPAT=y
1032# CONFIG_EXT4_FS_XATTR is not set
1002CONFIG_JBD=m 1033CONFIG_JBD=m
1003# CONFIG_JBD_DEBUG is not set 1034# CONFIG_JBD_DEBUG is not set
1035CONFIG_JBD2=m
1036# CONFIG_JBD2_DEBUG is not set
1004# CONFIG_REISERFS_FS is not set 1037# CONFIG_REISERFS_FS is not set
1005# CONFIG_JFS_FS is not set 1038# CONFIG_JFS_FS is not set
1006# CONFIG_FS_POSIX_ACL is not set 1039# CONFIG_FS_POSIX_ACL is not set
1040CONFIG_FILE_LOCKING=y
1007# CONFIG_XFS_FS is not set 1041# CONFIG_XFS_FS is not set
1008# CONFIG_OCFS2_FS is not set 1042# CONFIG_OCFS2_FS is not set
1009# CONFIG_DNOTIFY is not set 1043# CONFIG_DNOTIFY is not set
@@ -1036,6 +1070,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1036CONFIG_PROC_FS=y 1070CONFIG_PROC_FS=y
1037CONFIG_PROC_KCORE=y 1071CONFIG_PROC_KCORE=y
1038CONFIG_PROC_SYSCTL=y 1072CONFIG_PROC_SYSCTL=y
1073CONFIG_PROC_PAGE_MONITOR=y
1039CONFIG_SYSFS=y 1074CONFIG_SYSFS=y
1040CONFIG_TMPFS=y 1075CONFIG_TMPFS=y
1041# CONFIG_TMPFS_POSIX_ACL is not set 1076# CONFIG_TMPFS_POSIX_ACL is not set
@@ -1054,7 +1089,8 @@ CONFIG_TMPFS=y
1054# CONFIG_EFS_FS is not set 1089# CONFIG_EFS_FS is not set
1055CONFIG_JFFS2_FS=y 1090CONFIG_JFFS2_FS=y
1056CONFIG_JFFS2_FS_DEBUG=0 1091CONFIG_JFFS2_FS_DEBUG=0
1057# CONFIG_JFFS2_FS_WRITEBUFFER is not set 1092CONFIG_JFFS2_FS_WRITEBUFFER=y
1093# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1058# CONFIG_JFFS2_SUMMARY is not set 1094# CONFIG_JFFS2_SUMMARY is not set
1059# CONFIG_JFFS2_FS_XATTR is not set 1095# CONFIG_JFFS2_FS_XATTR is not set
1060# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 1096# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
@@ -1088,6 +1124,7 @@ CONFIG_LOCKD=y
1088CONFIG_LOCKD_V4=y 1124CONFIG_LOCKD_V4=y
1089CONFIG_NFS_COMMON=y 1125CONFIG_NFS_COMMON=y
1090CONFIG_SUNRPC=y 1126CONFIG_SUNRPC=y
1127# CONFIG_SUNRPC_REGISTER_V4 is not set
1091# CONFIG_RPCSEC_GSS_KRB5 is not set 1128# CONFIG_RPCSEC_GSS_KRB5 is not set
1092# CONFIG_RPCSEC_GSS_SPKM3 is not set 1129# CONFIG_RPCSEC_GSS_SPKM3 is not set
1093# CONFIG_SMB_FS is not set 1130# CONFIG_SMB_FS is not set
@@ -1185,10 +1222,21 @@ CONFIG_DEBUG_BUGVERBOSE=y
1185CONFIG_FRAME_POINTER=y 1222CONFIG_FRAME_POINTER=y
1186# CONFIG_BOOT_PRINTK_DELAY is not set 1223# CONFIG_BOOT_PRINTK_DELAY is not set
1187# CONFIG_RCU_TORTURE_TEST is not set 1224# CONFIG_RCU_TORTURE_TEST is not set
1225# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1188# CONFIG_KPROBES_SANITY_TEST is not set 1226# CONFIG_KPROBES_SANITY_TEST is not set
1189# CONFIG_BACKTRACE_SELF_TEST is not set 1227# CONFIG_BACKTRACE_SELF_TEST is not set
1228# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1190# CONFIG_LKDTM is not set 1229# CONFIG_LKDTM is not set
1191# CONFIG_FAULT_INJECTION is not set 1230# CONFIG_FAULT_INJECTION is not set
1231
1232#
1233# Tracers
1234#
1235# CONFIG_IRQSOFF_TRACER is not set
1236# CONFIG_SCHED_TRACER is not set
1237# CONFIG_CONTEXT_SWITCH_TRACER is not set
1238# CONFIG_BOOT_TRACER is not set
1239# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1192# CONFIG_SAMPLES is not set 1240# CONFIG_SAMPLES is not set
1193 1241
1194# 1242#
@@ -1196,17 +1244,26 @@ CONFIG_FRAME_POINTER=y
1196# 1244#
1197# CONFIG_KEYS is not set 1245# CONFIG_KEYS is not set
1198# CONFIG_SECURITY is not set 1246# CONFIG_SECURITY is not set
1247# CONFIG_SECURITYFS is not set
1199# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1248# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1200CONFIG_CRYPTO=y 1249CONFIG_CRYPTO=y
1201 1250
1202# 1251#
1203# Crypto core or helper 1252# Crypto core or helper
1204# 1253#
1254CONFIG_CRYPTO_FIPS=y
1205CONFIG_CRYPTO_ALGAPI=y 1255CONFIG_CRYPTO_ALGAPI=y
1256CONFIG_CRYPTO_ALGAPI2=y
1206CONFIG_CRYPTO_AEAD=m 1257CONFIG_CRYPTO_AEAD=m
1258CONFIG_CRYPTO_AEAD2=y
1207CONFIG_CRYPTO_BLKCIPHER=m 1259CONFIG_CRYPTO_BLKCIPHER=m
1260CONFIG_CRYPTO_BLKCIPHER2=y
1208CONFIG_CRYPTO_HASH=m 1261CONFIG_CRYPTO_HASH=m
1262CONFIG_CRYPTO_HASH2=y
1263CONFIG_CRYPTO_RNG=m
1264CONFIG_CRYPTO_RNG2=y
1209CONFIG_CRYPTO_MANAGER=m 1265CONFIG_CRYPTO_MANAGER=m
1266CONFIG_CRYPTO_MANAGER2=y
1210# CONFIG_CRYPTO_GF128MUL is not set 1267# CONFIG_CRYPTO_GF128MUL is not set
1211# CONFIG_CRYPTO_NULL is not set 1268# CONFIG_CRYPTO_NULL is not set
1212# CONFIG_CRYPTO_CRYPTD is not set 1269# CONFIG_CRYPTO_CRYPTD is not set
@@ -1257,7 +1314,7 @@ CONFIG_CRYPTO_SHA1=m
1257# 1314#
1258# Ciphers 1315# Ciphers
1259# 1316#
1260# CONFIG_CRYPTO_AES is not set 1317CONFIG_CRYPTO_AES=m
1261# CONFIG_CRYPTO_ANUBIS is not set 1318# CONFIG_CRYPTO_ANUBIS is not set
1262# CONFIG_CRYPTO_ARC4 is not set 1319# CONFIG_CRYPTO_ARC4 is not set
1263# CONFIG_CRYPTO_BLOWFISH is not set 1320# CONFIG_CRYPTO_BLOWFISH is not set
@@ -1278,14 +1335,17 @@ CONFIG_CRYPTO_DES=m
1278# 1335#
1279CONFIG_CRYPTO_DEFLATE=y 1336CONFIG_CRYPTO_DEFLATE=y
1280CONFIG_CRYPTO_LZO=y 1337CONFIG_CRYPTO_LZO=y
1338
1339#
1340# Random Number Generation
1341#
1342CONFIG_CRYPTO_ANSI_CPRNG=m
1281# CONFIG_CRYPTO_HW is not set 1343# CONFIG_CRYPTO_HW is not set
1282 1344
1283# 1345#
1284# Library routines 1346# Library routines
1285# 1347#
1286CONFIG_BITREVERSE=y 1348CONFIG_BITREVERSE=y
1287# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1288# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1289CONFIG_CRC_CCITT=m 1349CONFIG_CRC_CCITT=m
1290CONFIG_CRC16=y 1350CONFIG_CRC16=y
1291CONFIG_CRC_T10DIF=m 1351CONFIG_CRC_T10DIF=m
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c
index 0c6e02f80a31..066252eebf61 100644
--- a/arch/avr32/mach-at32ap/at32ap700x.c
+++ b/arch/avr32/mach-at32ap/at32ap700x.c
@@ -967,28 +967,28 @@ static inline void configure_usart0_pins(void)
967{ 967{
968 u32 pin_mask = (1 << 8) | (1 << 9); /* RXD & TXD */ 968 u32 pin_mask = (1 << 8) | (1 << 9); /* RXD & TXD */
969 969
970 select_peripheral(PIOA, pin_mask, PERIPH_B, 0); 970 select_peripheral(PIOA, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP);
971} 971}
972 972
973static inline void configure_usart1_pins(void) 973static inline void configure_usart1_pins(void)
974{ 974{
975 u32 pin_mask = (1 << 17) | (1 << 18); /* RXD & TXD */ 975 u32 pin_mask = (1 << 17) | (1 << 18); /* RXD & TXD */
976 976
977 select_peripheral(PIOA, pin_mask, PERIPH_A, 0); 977 select_peripheral(PIOA, pin_mask, PERIPH_A, AT32_GPIOF_PULLUP);
978} 978}
979 979
980static inline void configure_usart2_pins(void) 980static inline void configure_usart2_pins(void)
981{ 981{
982 u32 pin_mask = (1 << 26) | (1 << 27); /* RXD & TXD */ 982 u32 pin_mask = (1 << 26) | (1 << 27); /* RXD & TXD */
983 983
984 select_peripheral(PIOB, pin_mask, PERIPH_B, 0); 984 select_peripheral(PIOB, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP);
985} 985}
986 986
987static inline void configure_usart3_pins(void) 987static inline void configure_usart3_pins(void)
988{ 988{
989 u32 pin_mask = (1 << 18) | (1 << 17); /* RXD & TXD */ 989 u32 pin_mask = (1 << 18) | (1 << 17); /* RXD & TXD */
990 990
991 select_peripheral(PIOB, pin_mask, PERIPH_B, 0); 991 select_peripheral(PIOB, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP);
992} 992}
993 993
994static struct platform_device *__initdata at32_usarts[4]; 994static struct platform_device *__initdata at32_usarts[4];
diff --git a/arch/ia64/configs/generic_defconfig b/arch/ia64/configs/generic_defconfig
index e05f9e1d3faa..27eb67604c53 100644
--- a/arch/ia64/configs/generic_defconfig
+++ b/arch/ia64/configs/generic_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-rc1 3# Linux kernel version: 2.6.28-rc7
4# Mon Aug 4 15:38:01 2008 4# Mon Dec 8 08:12:07 2008
5# 5#
6CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 6CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
7 7
@@ -26,6 +26,7 @@ CONFIG_LOG_BUF_SHIFT=20
26CONFIG_CGROUPS=y 26CONFIG_CGROUPS=y
27# CONFIG_CGROUP_DEBUG is not set 27# CONFIG_CGROUP_DEBUG is not set
28# CONFIG_CGROUP_NS is not set 28# CONFIG_CGROUP_NS is not set
29# CONFIG_CGROUP_FREEZER is not set
29# CONFIG_CGROUP_DEVICE is not set 30# CONFIG_CGROUP_DEVICE is not set
30CONFIG_CPUSETS=y 31CONFIG_CPUSETS=y
31# CONFIG_GROUP_SCHED is not set 32# CONFIG_GROUP_SCHED is not set
@@ -46,7 +47,6 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
46CONFIG_SYSCTL=y 47CONFIG_SYSCTL=y
47# CONFIG_EMBEDDED is not set 48# CONFIG_EMBEDDED is not set
48CONFIG_SYSCTL_SYSCALL=y 49CONFIG_SYSCTL_SYSCALL=y
49CONFIG_SYSCTL_SYSCALL_CHECK=y
50CONFIG_KALLSYMS=y 50CONFIG_KALLSYMS=y
51CONFIG_KALLSYMS_ALL=y 51CONFIG_KALLSYMS_ALL=y
52# CONFIG_KALLSYMS_EXTRA_PASS is not set 52# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -63,7 +63,9 @@ CONFIG_SIGNALFD=y
63CONFIG_TIMERFD=y 63CONFIG_TIMERFD=y
64CONFIG_EVENTFD=y 64CONFIG_EVENTFD=y
65CONFIG_SHMEM=y 65CONFIG_SHMEM=y
66CONFIG_AIO=y
66CONFIG_VM_EVENT_COUNTERS=y 67CONFIG_VM_EVENT_COUNTERS=y
68CONFIG_PCI_QUIRKS=y
67CONFIG_SLUB_DEBUG=y 69CONFIG_SLUB_DEBUG=y
68# CONFIG_SLAB is not set 70# CONFIG_SLAB is not set
69CONFIG_SLUB=y 71CONFIG_SLUB=y
@@ -72,15 +74,11 @@ CONFIG_SLUB=y
72# CONFIG_MARKERS is not set 74# CONFIG_MARKERS is not set
73CONFIG_HAVE_OPROFILE=y 75CONFIG_HAVE_OPROFILE=y
74# CONFIG_KPROBES is not set 76# CONFIG_KPROBES is not set
75# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
76# CONFIG_HAVE_IOREMAP_PROT is not set
77CONFIG_HAVE_KPROBES=y 77CONFIG_HAVE_KPROBES=y
78CONFIG_HAVE_KRETPROBES=y 78CONFIG_HAVE_KRETPROBES=y
79# CONFIG_HAVE_ARCH_TRACEHOOK is not set 79CONFIG_HAVE_ARCH_TRACEHOOK=y
80CONFIG_HAVE_DMA_ATTRS=y 80CONFIG_HAVE_DMA_ATTRS=y
81CONFIG_USE_GENERIC_SMP_HELPERS=y 81CONFIG_USE_GENERIC_SMP_HELPERS=y
82# CONFIG_HAVE_CLK is not set
83CONFIG_PROC_PAGE_MONITOR=y
84# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 82# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
85CONFIG_SLABINFO=y 83CONFIG_SLABINFO=y
86CONFIG_RT_MUTEXES=y 84CONFIG_RT_MUTEXES=y
@@ -113,6 +111,7 @@ CONFIG_DEFAULT_AS=y
113# CONFIG_DEFAULT_NOOP is not set 111# CONFIG_DEFAULT_NOOP is not set
114CONFIG_DEFAULT_IOSCHED="anticipatory" 112CONFIG_DEFAULT_IOSCHED="anticipatory"
115CONFIG_CLASSIC_RCU=y 113CONFIG_CLASSIC_RCU=y
114# CONFIG_FREEZER is not set
116 115
117# 116#
118# Processor type and features 117# Processor type and features
@@ -125,8 +124,6 @@ CONFIG_MMU=y
125CONFIG_SWIOTLB=y 124CONFIG_SWIOTLB=y
126CONFIG_IOMMU_HELPER=y 125CONFIG_IOMMU_HELPER=y
127CONFIG_RWSEM_XCHGADD_ALGORITHM=y 126CONFIG_RWSEM_XCHGADD_ALGORITHM=y
128# CONFIG_ARCH_HAS_ILOG2_U32 is not set
129# CONFIG_ARCH_HAS_ILOG2_U64 is not set
130CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y 127CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
131CONFIG_GENERIC_FIND_NEXT_BIT=y 128CONFIG_GENERIC_FIND_NEXT_BIT=y
132CONFIG_GENERIC_CALIBRATE_DELAY=y 129CONFIG_GENERIC_CALIBRATE_DELAY=y
@@ -139,13 +136,16 @@ CONFIG_GENERIC_IOMAP=y
139CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 136CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
140CONFIG_IA64_UNCACHED_ALLOCATOR=y 137CONFIG_IA64_UNCACHED_ALLOCATOR=y
141CONFIG_AUDIT_ARCH=y 138CONFIG_AUDIT_ARCH=y
139# CONFIG_PARAVIRT_GUEST is not set
142CONFIG_IA64_GENERIC=y 140CONFIG_IA64_GENERIC=y
143# CONFIG_IA64_DIG is not set 141# CONFIG_IA64_DIG is not set
142# CONFIG_IA64_DIG_VTD is not set
144# CONFIG_IA64_HP_ZX1 is not set 143# CONFIG_IA64_HP_ZX1 is not set
145# CONFIG_IA64_HP_ZX1_SWIOTLB is not set 144# CONFIG_IA64_HP_ZX1_SWIOTLB is not set
146# CONFIG_IA64_SGI_SN2 is not set 145# CONFIG_IA64_SGI_SN2 is not set
147# CONFIG_IA64_SGI_UV is not set 146# CONFIG_IA64_SGI_UV is not set
148# CONFIG_IA64_HP_SIM is not set 147# CONFIG_IA64_HP_SIM is not set
148# CONFIG_IA64_XEN_GUEST is not set
149# CONFIG_ITANIUM is not set 149# CONFIG_ITANIUM is not set
150CONFIG_MCKINLEY=y 150CONFIG_MCKINLEY=y
151# CONFIG_IA64_PAGE_SIZE_4KB is not set 151# CONFIG_IA64_PAGE_SIZE_4KB is not set
@@ -182,16 +182,17 @@ CONFIG_DISCONTIGMEM_MANUAL=y
182CONFIG_DISCONTIGMEM=y 182CONFIG_DISCONTIGMEM=y
183CONFIG_FLAT_NODE_MEM_MAP=y 183CONFIG_FLAT_NODE_MEM_MAP=y
184CONFIG_NEED_MULTIPLE_NODES=y 184CONFIG_NEED_MULTIPLE_NODES=y
185# CONFIG_SPARSEMEM_STATIC is not set
186CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y 185CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
187CONFIG_PAGEFLAGS_EXTENDED=y 186CONFIG_PAGEFLAGS_EXTENDED=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 187CONFIG_SPLIT_PTLOCK_CPUS=4
189CONFIG_MIGRATION=y 188CONFIG_MIGRATION=y
190CONFIG_RESOURCES_64BIT=y 189CONFIG_RESOURCES_64BIT=y
190CONFIG_PHYS_ADDR_T_64BIT=y
191CONFIG_ZONE_DMA_FLAG=1 191CONFIG_ZONE_DMA_FLAG=1
192CONFIG_BOUNCE=y 192CONFIG_BOUNCE=y
193CONFIG_NR_QUICK=1 193CONFIG_NR_QUICK=1
194CONFIG_VIRT_TO_BUS=y 194CONFIG_VIRT_TO_BUS=y
195CONFIG_UNEVICTABLE_LRU=y
195CONFIG_MMU_NOTIFIER=y 196CONFIG_MMU_NOTIFIER=y
196CONFIG_ARCH_SELECT_MEMORY_MODEL=y 197CONFIG_ARCH_SELECT_MEMORY_MODEL=y
197CONFIG_ARCH_DISCONTIGMEM_ENABLE=y 198CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
@@ -231,12 +232,12 @@ CONFIG_EFI_VARS=y
231CONFIG_EFI_PCDP=y 232CONFIG_EFI_PCDP=y
232CONFIG_DMIID=y 233CONFIG_DMIID=y
233CONFIG_BINFMT_ELF=y 234CONFIG_BINFMT_ELF=y
235# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
236# CONFIG_HAVE_AOUT is not set
234CONFIG_BINFMT_MISC=m 237CONFIG_BINFMT_MISC=m
235 238
236# CONFIG_DMAR is not set
237
238# 239#
239# Power management and ACPI 240# Power management and ACPI options
240# 241#
241CONFIG_PM=y 242CONFIG_PM=y
242# CONFIG_PM_DEBUG is not set 243# CONFIG_PM_DEBUG is not set
@@ -248,7 +249,6 @@ CONFIG_ACPI_PROC_EVENT=y
248CONFIG_ACPI_BUTTON=m 249CONFIG_ACPI_BUTTON=m
249CONFIG_ACPI_FAN=m 250CONFIG_ACPI_FAN=m
250CONFIG_ACPI_DOCK=y 251CONFIG_ACPI_DOCK=y
251# CONFIG_ACPI_BAY is not set
252CONFIG_ACPI_PROCESSOR=m 252CONFIG_ACPI_PROCESSOR=m
253CONFIG_ACPI_HOTPLUG_CPU=y 253CONFIG_ACPI_HOTPLUG_CPU=y
254CONFIG_ACPI_THERMAL=m 254CONFIG_ACPI_THERMAL=m
@@ -256,9 +256,7 @@ CONFIG_ACPI_NUMA=y
256# CONFIG_ACPI_CUSTOM_DSDT is not set 256# CONFIG_ACPI_CUSTOM_DSDT is not set
257CONFIG_ACPI_BLACKLIST_YEAR=0 257CONFIG_ACPI_BLACKLIST_YEAR=0
258# CONFIG_ACPI_DEBUG is not set 258# CONFIG_ACPI_DEBUG is not set
259CONFIG_ACPI_EC=y
260# CONFIG_ACPI_PCI_SLOT is not set 259# CONFIG_ACPI_PCI_SLOT is not set
261CONFIG_ACPI_POWER=y
262CONFIG_ACPI_SYSTEM=y 260CONFIG_ACPI_SYSTEM=y
263CONFIG_ACPI_CONTAINER=m 261CONFIG_ACPI_CONTAINER=m
264 262
@@ -275,7 +273,7 @@ CONFIG_PCI_DOMAINS=y
275CONFIG_PCI_SYSCALL=y 273CONFIG_PCI_SYSCALL=y
276# CONFIG_PCIEPORTBUS is not set 274# CONFIG_PCIEPORTBUS is not set
277CONFIG_ARCH_SUPPORTS_MSI=y 275CONFIG_ARCH_SUPPORTS_MSI=y
278# CONFIG_PCI_MSI is not set 276CONFIG_PCI_MSI=y
279CONFIG_PCI_LEGACY=y 277CONFIG_PCI_LEGACY=y
280# CONFIG_PCI_DEBUG is not set 278# CONFIG_PCI_DEBUG is not set
281CONFIG_HOTPLUG_PCI=m 279CONFIG_HOTPLUG_PCI=m
@@ -286,6 +284,7 @@ CONFIG_HOTPLUG_PCI_ACPI=m
286# CONFIG_HOTPLUG_PCI_SHPC is not set 284# CONFIG_HOTPLUG_PCI_SHPC is not set
287# CONFIG_HOTPLUG_PCI_SGI is not set 285# CONFIG_HOTPLUG_PCI_SGI is not set
288# CONFIG_PCCARD is not set 286# CONFIG_PCCARD is not set
287CONFIG_DMAR=y
289CONFIG_NET=y 288CONFIG_NET=y
290 289
291# 290#
@@ -333,6 +332,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
333# CONFIG_TIPC is not set 332# CONFIG_TIPC is not set
334# CONFIG_ATM is not set 333# CONFIG_ATM is not set
335# CONFIG_BRIDGE is not set 334# CONFIG_BRIDGE is not set
335# CONFIG_NET_DSA is not set
336# CONFIG_VLAN_8021Q is not set 336# CONFIG_VLAN_8021Q is not set
337# CONFIG_DECNET is not set 337# CONFIG_DECNET is not set
338# CONFIG_LLC2 is not set 338# CONFIG_LLC2 is not set
@@ -353,11 +353,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
353# CONFIG_IRDA is not set 353# CONFIG_IRDA is not set
354# CONFIG_BT is not set 354# CONFIG_BT is not set
355# CONFIG_AF_RXRPC is not set 355# CONFIG_AF_RXRPC is not set
356 356# CONFIG_PHONET is not set
357# 357CONFIG_WIRELESS=y
358# Wireless
359#
360# CONFIG_CFG80211 is not set 358# CONFIG_CFG80211 is not set
359CONFIG_WIRELESS_OLD_REGULATORY=y
361# CONFIG_WIRELESS_EXT is not set 360# CONFIG_WIRELESS_EXT is not set
362# CONFIG_MAC80211 is not set 361# CONFIG_MAC80211 is not set
363# CONFIG_IEEE80211 is not set 362# CONFIG_IEEE80211 is not set
@@ -385,7 +384,7 @@ CONFIG_PROC_EVENTS=y
385# CONFIG_MTD is not set 384# CONFIG_MTD is not set
386# CONFIG_PARPORT is not set 385# CONFIG_PARPORT is not set
387CONFIG_PNP=y 386CONFIG_PNP=y
388# CONFIG_PNP_DEBUG is not set 387# CONFIG_PNP_DEBUG_MESSAGES is not set
389 388
390# 389#
391# Protocols 390# Protocols
@@ -419,10 +418,9 @@ CONFIG_SGI_XP=m
419# CONFIG_HP_ILO is not set 418# CONFIG_HP_ILO is not set
420CONFIG_SGI_GRU=m 419CONFIG_SGI_GRU=m
421# CONFIG_SGI_GRU_DEBUG is not set 420# CONFIG_SGI_GRU_DEBUG is not set
421# CONFIG_C2PORT is not set
422CONFIG_HAVE_IDE=y 422CONFIG_HAVE_IDE=y
423CONFIG_IDE=y 423CONFIG_IDE=y
424CONFIG_IDE_MAX_HWIFS=4
425CONFIG_BLK_DEV_IDE=y
426 424
427# 425#
428# Please see Documentation/ide/ide.txt for help/info on IDE drives 426# Please see Documentation/ide/ide.txt for help/info on IDE drives
@@ -430,12 +428,12 @@ CONFIG_BLK_DEV_IDE=y
430CONFIG_IDE_TIMINGS=y 428CONFIG_IDE_TIMINGS=y
431CONFIG_IDE_ATAPI=y 429CONFIG_IDE_ATAPI=y
432# CONFIG_BLK_DEV_IDE_SATA is not set 430# CONFIG_BLK_DEV_IDE_SATA is not set
433CONFIG_BLK_DEV_IDEDISK=y 431CONFIG_IDE_GD=y
434# CONFIG_IDEDISK_MULTI_MODE is not set 432CONFIG_IDE_GD_ATA=y
433# CONFIG_IDE_GD_ATAPI is not set
435CONFIG_BLK_DEV_IDECD=y 434CONFIG_BLK_DEV_IDECD=y
436CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 435CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
437# CONFIG_BLK_DEV_IDETAPE is not set 436# CONFIG_BLK_DEV_IDETAPE is not set
438CONFIG_BLK_DEV_IDEFLOPPY=y
439CONFIG_BLK_DEV_IDESCSI=m 437CONFIG_BLK_DEV_IDESCSI=m
440# CONFIG_BLK_DEV_IDEACPI is not set 438# CONFIG_BLK_DEV_IDEACPI is not set
441# CONFIG_IDE_TASK_IOCTL is not set 439# CONFIG_IDE_TASK_IOCTL is not set
@@ -705,6 +703,9 @@ CONFIG_TULIP=m
705# CONFIG_IBM_NEW_EMAC_RGMII is not set 703# CONFIG_IBM_NEW_EMAC_RGMII is not set
706# CONFIG_IBM_NEW_EMAC_TAH is not set 704# CONFIG_IBM_NEW_EMAC_TAH is not set
707# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 705# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
706# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
707# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
708# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
708CONFIG_NET_PCI=y 709CONFIG_NET_PCI=y
709# CONFIG_PCNET32 is not set 710# CONFIG_PCNET32 is not set
710# CONFIG_AMD8111_ETH is not set 711# CONFIG_AMD8111_ETH is not set
@@ -725,11 +726,11 @@ CONFIG_E100=m
725# CONFIG_TLAN is not set 726# CONFIG_TLAN is not set
726# CONFIG_VIA_RHINE is not set 727# CONFIG_VIA_RHINE is not set
727# CONFIG_SC92031 is not set 728# CONFIG_SC92031 is not set
729# CONFIG_ATL2 is not set
728CONFIG_NETDEV_1000=y 730CONFIG_NETDEV_1000=y
729# CONFIG_ACENIC is not set 731# CONFIG_ACENIC is not set
730# CONFIG_DL2K is not set 732# CONFIG_DL2K is not set
731CONFIG_E1000=y 733CONFIG_E1000=y
732# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
733# CONFIG_E1000E is not set 734# CONFIG_E1000E is not set
734# CONFIG_IP1000 is not set 735# CONFIG_IP1000 is not set
735CONFIG_IGB=y 736CONFIG_IGB=y
@@ -747,18 +748,22 @@ CONFIG_TIGON3=y
747# CONFIG_QLA3XXX is not set 748# CONFIG_QLA3XXX is not set
748# CONFIG_ATL1 is not set 749# CONFIG_ATL1 is not set
749# CONFIG_ATL1E is not set 750# CONFIG_ATL1E is not set
751# CONFIG_JME is not set
750CONFIG_NETDEV_10000=y 752CONFIG_NETDEV_10000=y
751# CONFIG_CHELSIO_T1 is not set 753# CONFIG_CHELSIO_T1 is not set
752# CONFIG_CHELSIO_T3 is not set 754# CONFIG_CHELSIO_T3 is not set
755# CONFIG_ENIC is not set
753# CONFIG_IXGBE is not set 756# CONFIG_IXGBE is not set
754# CONFIG_IXGB is not set 757# CONFIG_IXGB is not set
755# CONFIG_S2IO is not set 758# CONFIG_S2IO is not set
756# CONFIG_MYRI10GE is not set 759# CONFIG_MYRI10GE is not set
757# CONFIG_NETXEN_NIC is not set 760# CONFIG_NETXEN_NIC is not set
758# CONFIG_NIU is not set 761# CONFIG_NIU is not set
762# CONFIG_MLX4_EN is not set
759# CONFIG_MLX4_CORE is not set 763# CONFIG_MLX4_CORE is not set
760# CONFIG_TEHUTI is not set 764# CONFIG_TEHUTI is not set
761# CONFIG_BNX2X is not set 765# CONFIG_BNX2X is not set
766# CONFIG_QLGE is not set
762# CONFIG_SFC is not set 767# CONFIG_SFC is not set
763# CONFIG_TR is not set 768# CONFIG_TR is not set
764 769
@@ -826,9 +831,11 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
826CONFIG_MOUSE_PS2_SYNAPTICS=y 831CONFIG_MOUSE_PS2_SYNAPTICS=y
827CONFIG_MOUSE_PS2_LIFEBOOK=y 832CONFIG_MOUSE_PS2_LIFEBOOK=y
828CONFIG_MOUSE_PS2_TRACKPOINT=y 833CONFIG_MOUSE_PS2_TRACKPOINT=y
834# CONFIG_MOUSE_PS2_ELANTECH is not set
829# CONFIG_MOUSE_PS2_TOUCHKIT is not set 835# CONFIG_MOUSE_PS2_TOUCHKIT is not set
830# CONFIG_MOUSE_SERIAL is not set 836# CONFIG_MOUSE_SERIAL is not set
831# CONFIG_MOUSE_APPLETOUCH is not set 837# CONFIG_MOUSE_APPLETOUCH is not set
838# CONFIG_MOUSE_BCM5974 is not set
832# CONFIG_MOUSE_VSXXXAA is not set 839# CONFIG_MOUSE_VSXXXAA is not set
833# CONFIG_INPUT_JOYSTICK is not set 840# CONFIG_INPUT_JOYSTICK is not set
834# CONFIG_INPUT_TABLET is not set 841# CONFIG_INPUT_TABLET is not set
@@ -942,15 +949,16 @@ CONFIG_HWMON=y
942# CONFIG_SENSORS_VT8231 is not set 949# CONFIG_SENSORS_VT8231 is not set
943# CONFIG_SENSORS_W83627HF is not set 950# CONFIG_SENSORS_W83627HF is not set
944# CONFIG_SENSORS_W83627EHF is not set 951# CONFIG_SENSORS_W83627EHF is not set
952# CONFIG_SENSORS_LIS3LV02D is not set
945# CONFIG_HWMON_DEBUG_CHIP is not set 953# CONFIG_HWMON_DEBUG_CHIP is not set
946CONFIG_THERMAL=m 954CONFIG_THERMAL=m
947# CONFIG_THERMAL_HWMON is not set 955# CONFIG_THERMAL_HWMON is not set
948# CONFIG_WATCHDOG is not set 956# CONFIG_WATCHDOG is not set
957CONFIG_SSB_POSSIBLE=y
949 958
950# 959#
951# Sonics Silicon Backplane 960# Sonics Silicon Backplane
952# 961#
953CONFIG_SSB_POSSIBLE=y
954# CONFIG_SSB is not set 962# CONFIG_SSB is not set
955 963
956# 964#
@@ -959,6 +967,8 @@ CONFIG_SSB_POSSIBLE=y
959# CONFIG_MFD_CORE is not set 967# CONFIG_MFD_CORE is not set
960# CONFIG_MFD_SM501 is not set 968# CONFIG_MFD_SM501 is not set
961# CONFIG_HTC_PASIC3 is not set 969# CONFIG_HTC_PASIC3 is not set
970# CONFIG_MFD_TMIO is not set
971# CONFIG_REGULATOR is not set
962 972
963# 973#
964# Multimedia devices 974# Multimedia devices
@@ -1009,6 +1019,7 @@ CONFIG_VGA_CONSOLE=y
1009# CONFIG_VGACON_SOFT_SCROLLBACK is not set 1019# CONFIG_VGACON_SOFT_SCROLLBACK is not set
1010CONFIG_DUMMY_CONSOLE=y 1020CONFIG_DUMMY_CONSOLE=y
1011CONFIG_SOUND=m 1021CONFIG_SOUND=m
1022CONFIG_SOUND_OSS_CORE=y
1012CONFIG_SND=m 1023CONFIG_SND=m
1013CONFIG_SND_TIMER=m 1024CONFIG_SND_TIMER=m
1014CONFIG_SND_PCM=m 1025CONFIG_SND_PCM=m
@@ -1113,8 +1124,7 @@ CONFIG_HID=y
1113# USB Input Devices 1124# USB Input Devices
1114# 1125#
1115CONFIG_USB_HID=m 1126CONFIG_USB_HID=m
1116# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1127# CONFIG_HID_PID is not set
1117# CONFIG_HID_FF is not set
1118# CONFIG_USB_HIDDEV is not set 1128# CONFIG_USB_HIDDEV is not set
1119 1129
1120# 1130#
@@ -1122,6 +1132,34 @@ CONFIG_USB_HID=m
1122# 1132#
1123# CONFIG_USB_KBD is not set 1133# CONFIG_USB_KBD is not set
1124# CONFIG_USB_MOUSE is not set 1134# CONFIG_USB_MOUSE is not set
1135
1136#
1137# Special HID drivers
1138#
1139CONFIG_HID_COMPAT=y
1140CONFIG_HID_A4TECH=m
1141CONFIG_HID_APPLE=m
1142CONFIG_HID_BELKIN=m
1143CONFIG_HID_BRIGHT=m
1144CONFIG_HID_CHERRY=m
1145CONFIG_HID_CHICONY=m
1146CONFIG_HID_CYPRESS=m
1147CONFIG_HID_DELL=m
1148CONFIG_HID_EZKEY=m
1149CONFIG_HID_GYRATION=m
1150CONFIG_HID_LOGITECH=m
1151# CONFIG_LOGITECH_FF is not set
1152# CONFIG_LOGIRUMBLEPAD2_FF is not set
1153CONFIG_HID_MICROSOFT=m
1154CONFIG_HID_MONTEREY=m
1155CONFIG_HID_PANTHERLORD=m
1156# CONFIG_PANTHERLORD_FF is not set
1157CONFIG_HID_PETALYNX=m
1158CONFIG_HID_SAMSUNG=m
1159CONFIG_HID_SONY=m
1160CONFIG_HID_SUNPLUS=m
1161# CONFIG_THRUSTMASTER_FF is not set
1162# CONFIG_ZEROPLUS_FF is not set
1125CONFIG_USB_SUPPORT=y 1163CONFIG_USB_SUPPORT=y
1126CONFIG_USB_ARCH_HAS_HCD=y 1164CONFIG_USB_ARCH_HAS_HCD=y
1127CONFIG_USB_ARCH_HAS_OHCI=y 1165CONFIG_USB_ARCH_HAS_OHCI=y
@@ -1138,6 +1176,9 @@ CONFIG_USB_DEVICE_CLASS=y
1138# CONFIG_USB_DYNAMIC_MINORS is not set 1176# CONFIG_USB_DYNAMIC_MINORS is not set
1139# CONFIG_USB_SUSPEND is not set 1177# CONFIG_USB_SUSPEND is not set
1140# CONFIG_USB_OTG is not set 1178# CONFIG_USB_OTG is not set
1179CONFIG_USB_MON=y
1180# CONFIG_USB_WUSB is not set
1181# CONFIG_USB_WUSB_CBAF is not set
1141 1182
1142# 1183#
1143# USB Host Controller Drivers 1184# USB Host Controller Drivers
@@ -1155,6 +1196,12 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1155CONFIG_USB_UHCI_HCD=m 1196CONFIG_USB_UHCI_HCD=m
1156# CONFIG_USB_SL811_HCD is not set 1197# CONFIG_USB_SL811_HCD is not set
1157# CONFIG_USB_R8A66597_HCD is not set 1198# CONFIG_USB_R8A66597_HCD is not set
1199# CONFIG_USB_WHCI_HCD is not set
1200# CONFIG_USB_HWA_HCD is not set
1201
1202#
1203# Enable Host or Gadget support to see Inventra options
1204#
1158 1205
1159# 1206#
1160# USB Device Class drivers 1207# USB Device Class drivers
@@ -1162,13 +1209,14 @@ CONFIG_USB_UHCI_HCD=m
1162# CONFIG_USB_ACM is not set 1209# CONFIG_USB_ACM is not set
1163# CONFIG_USB_PRINTER is not set 1210# CONFIG_USB_PRINTER is not set
1164# CONFIG_USB_WDM is not set 1211# CONFIG_USB_WDM is not set
1212# CONFIG_USB_TMC is not set
1165 1213
1166# 1214#
1167# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1215# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1168# 1216#
1169 1217
1170# 1218#
1171# may also be needed; see USB_STORAGE Help for more information 1219# see USB_STORAGE Help for more information
1172# 1220#
1173CONFIG_USB_STORAGE=m 1221CONFIG_USB_STORAGE=m
1174# CONFIG_USB_STORAGE_DEBUG is not set 1222# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1191,7 +1239,6 @@ CONFIG_USB_STORAGE=m
1191# 1239#
1192# CONFIG_USB_MDC800 is not set 1240# CONFIG_USB_MDC800 is not set
1193# CONFIG_USB_MICROTEK is not set 1241# CONFIG_USB_MICROTEK is not set
1194CONFIG_USB_MON=y
1195 1242
1196# 1243#
1197# USB port drivers 1244# USB port drivers
@@ -1204,7 +1251,7 @@ CONFIG_USB_MON=y
1204# CONFIG_USB_EMI62 is not set 1251# CONFIG_USB_EMI62 is not set
1205# CONFIG_USB_EMI26 is not set 1252# CONFIG_USB_EMI26 is not set
1206# CONFIG_USB_ADUTUX is not set 1253# CONFIG_USB_ADUTUX is not set
1207# CONFIG_USB_AUERSWALD is not set 1254# CONFIG_USB_SEVSEG is not set
1208# CONFIG_USB_RIO500 is not set 1255# CONFIG_USB_RIO500 is not set
1209# CONFIG_USB_LEGOTOWER is not set 1256# CONFIG_USB_LEGOTOWER is not set
1210# CONFIG_USB_LCD is not set 1257# CONFIG_USB_LCD is not set
@@ -1222,7 +1269,9 @@ CONFIG_USB_MON=y
1222# CONFIG_USB_IOWARRIOR is not set 1269# CONFIG_USB_IOWARRIOR is not set
1223# CONFIG_USB_TEST is not set 1270# CONFIG_USB_TEST is not set
1224# CONFIG_USB_ISIGHTFW is not set 1271# CONFIG_USB_ISIGHTFW is not set
1272# CONFIG_USB_VST is not set
1225# CONFIG_USB_GADGET is not set 1273# CONFIG_USB_GADGET is not set
1274# CONFIG_UWB is not set
1226# CONFIG_MMC is not set 1275# CONFIG_MMC is not set
1227# CONFIG_MEMSTICK is not set 1276# CONFIG_MEMSTICK is not set
1228# CONFIG_NEW_LEDS is not set 1277# CONFIG_NEW_LEDS is not set
@@ -1246,6 +1295,15 @@ CONFIG_INFINIBAND_IPOIB_DEBUG=y
1246# CONFIG_RTC_CLASS is not set 1295# CONFIG_RTC_CLASS is not set
1247# CONFIG_DMADEVICES is not set 1296# CONFIG_DMADEVICES is not set
1248# CONFIG_UIO is not set 1297# CONFIG_UIO is not set
1298# CONFIG_STAGING is not set
1299CONFIG_STAGING_EXCLUDE_BUILD=y
1300
1301#
1302# HP Simulator drivers
1303#
1304# CONFIG_HP_SIMETH is not set
1305# CONFIG_HP_SIMSERIAL is not set
1306# CONFIG_HP_SIMSCSI is not set
1249CONFIG_MSPEC=m 1307CONFIG_MSPEC=m
1250 1308
1251# 1309#
@@ -1260,7 +1318,7 @@ CONFIG_EXT3_FS=y
1260CONFIG_EXT3_FS_XATTR=y 1318CONFIG_EXT3_FS_XATTR=y
1261CONFIG_EXT3_FS_POSIX_ACL=y 1319CONFIG_EXT3_FS_POSIX_ACL=y
1262CONFIG_EXT3_FS_SECURITY=y 1320CONFIG_EXT3_FS_SECURITY=y
1263# CONFIG_EXT4DEV_FS is not set 1321# CONFIG_EXT4_FS is not set
1264CONFIG_JBD=y 1322CONFIG_JBD=y
1265CONFIG_FS_MBCACHE=y 1323CONFIG_FS_MBCACHE=y
1266CONFIG_REISERFS_FS=y 1324CONFIG_REISERFS_FS=y
@@ -1271,6 +1329,7 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
1271CONFIG_REISERFS_FS_SECURITY=y 1329CONFIG_REISERFS_FS_SECURITY=y
1272# CONFIG_JFS_FS is not set 1330# CONFIG_JFS_FS is not set
1273CONFIG_FS_POSIX_ACL=y 1331CONFIG_FS_POSIX_ACL=y
1332CONFIG_FILE_LOCKING=y
1274CONFIG_XFS_FS=y 1333CONFIG_XFS_FS=y
1275# CONFIG_XFS_QUOTA is not set 1334# CONFIG_XFS_QUOTA is not set
1276# CONFIG_XFS_POSIX_ACL is not set 1335# CONFIG_XFS_POSIX_ACL is not set
@@ -1282,8 +1341,8 @@ CONFIG_DNOTIFY=y
1282CONFIG_INOTIFY=y 1341CONFIG_INOTIFY=y
1283CONFIG_INOTIFY_USER=y 1342CONFIG_INOTIFY_USER=y
1284# CONFIG_QUOTA is not set 1343# CONFIG_QUOTA is not set
1285CONFIG_AUTOFS_FS=y 1344CONFIG_AUTOFS_FS=m
1286CONFIG_AUTOFS4_FS=y 1345CONFIG_AUTOFS4_FS=m
1287# CONFIG_FUSE_FS is not set 1346# CONFIG_FUSE_FS is not set
1288 1347
1289# 1348#
@@ -1314,6 +1373,7 @@ CONFIG_PROC_FS=y
1314CONFIG_PROC_KCORE=y 1373CONFIG_PROC_KCORE=y
1315CONFIG_PROC_VMCORE=y 1374CONFIG_PROC_VMCORE=y
1316CONFIG_PROC_SYSCTL=y 1375CONFIG_PROC_SYSCTL=y
1376CONFIG_PROC_PAGE_MONITOR=y
1317CONFIG_SYSFS=y 1377CONFIG_SYSFS=y
1318CONFIG_TMPFS=y 1378CONFIG_TMPFS=y
1319# CONFIG_TMPFS_POSIX_ACL is not set 1379# CONFIG_TMPFS_POSIX_ACL is not set
@@ -1356,6 +1416,7 @@ CONFIG_NFS_COMMON=y
1356CONFIG_SUNRPC=m 1416CONFIG_SUNRPC=m
1357CONFIG_SUNRPC_GSS=m 1417CONFIG_SUNRPC_GSS=m
1358CONFIG_SUNRPC_XPRT_RDMA=m 1418CONFIG_SUNRPC_XPRT_RDMA=m
1419# CONFIG_SUNRPC_REGISTER_V4 is not set
1359CONFIG_RPCSEC_GSS_KRB5=m 1420CONFIG_RPCSEC_GSS_KRB5=m
1360# CONFIG_RPCSEC_GSS_SPKM3 is not set 1421# CONFIG_RPCSEC_GSS_SPKM3 is not set
1361CONFIG_SMB_FS=m 1422CONFIG_SMB_FS=m
@@ -1433,38 +1494,6 @@ CONFIG_NLS_KOI8_R=m
1433CONFIG_NLS_KOI8_U=m 1494CONFIG_NLS_KOI8_U=m
1434CONFIG_NLS_UTF8=m 1495CONFIG_NLS_UTF8=m
1435# CONFIG_DLM is not set 1496# CONFIG_DLM is not set
1436CONFIG_HAVE_KVM=y
1437CONFIG_VIRTUALIZATION=y
1438# CONFIG_KVM is not set
1439
1440#
1441# Library routines
1442#
1443CONFIG_BITREVERSE=y
1444# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1445# CONFIG_CRC_CCITT is not set
1446# CONFIG_CRC16 is not set
1447CONFIG_CRC_T10DIF=y
1448CONFIG_CRC_ITU_T=m
1449CONFIG_CRC32=y
1450# CONFIG_CRC7 is not set
1451# CONFIG_LIBCRC32C is not set
1452CONFIG_GENERIC_ALLOCATOR=y
1453CONFIG_PLIST=y
1454CONFIG_HAS_IOMEM=y
1455CONFIG_HAS_IOPORT=y
1456CONFIG_HAS_DMA=y
1457CONFIG_GENERIC_HARDIRQS=y
1458CONFIG_GENERIC_IRQ_PROBE=y
1459CONFIG_GENERIC_PENDING_IRQ=y
1460CONFIG_IRQ_PER_CPU=y
1461
1462#
1463# HP Simulator drivers
1464#
1465# CONFIG_HP_SIMETH is not set
1466# CONFIG_HP_SIMSERIAL is not set
1467# CONFIG_HP_SIMSCSI is not set
1468 1497
1469# 1498#
1470# Kernel hacking 1499# Kernel hacking
@@ -1503,8 +1532,19 @@ CONFIG_DEBUG_MEMORY_INIT=y
1503# CONFIG_DEBUG_SG is not set 1532# CONFIG_DEBUG_SG is not set
1504# CONFIG_BOOT_PRINTK_DELAY is not set 1533# CONFIG_BOOT_PRINTK_DELAY is not set
1505# CONFIG_RCU_TORTURE_TEST is not set 1534# CONFIG_RCU_TORTURE_TEST is not set
1535# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1506# CONFIG_BACKTRACE_SELF_TEST is not set 1536# CONFIG_BACKTRACE_SELF_TEST is not set
1537# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1507# CONFIG_FAULT_INJECTION is not set 1538# CONFIG_FAULT_INJECTION is not set
1539CONFIG_SYSCTL_SYSCALL_CHECK=y
1540
1541#
1542# Tracers
1543#
1544# CONFIG_SCHED_TRACER is not set
1545# CONFIG_CONTEXT_SWITCH_TRACER is not set
1546# CONFIG_BOOT_TRACER is not set
1547# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1508# CONFIG_SAMPLES is not set 1548# CONFIG_SAMPLES is not set
1509CONFIG_IA64_GRANULE_16MB=y 1549CONFIG_IA64_GRANULE_16MB=y
1510# CONFIG_IA64_GRANULE_64MB is not set 1550# CONFIG_IA64_GRANULE_64MB is not set
@@ -1519,14 +1559,19 @@ CONFIG_SYSVIPC_COMPAT=y
1519# 1559#
1520# CONFIG_KEYS is not set 1560# CONFIG_KEYS is not set
1521# CONFIG_SECURITY is not set 1561# CONFIG_SECURITY is not set
1562# CONFIG_SECURITYFS is not set
1522# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1563# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1523CONFIG_CRYPTO=y 1564CONFIG_CRYPTO=y
1524 1565
1525# 1566#
1526# Crypto core or helper 1567# Crypto core or helper
1527# 1568#
1569# CONFIG_CRYPTO_FIPS is not set
1528CONFIG_CRYPTO_ALGAPI=y 1570CONFIG_CRYPTO_ALGAPI=y
1571CONFIG_CRYPTO_AEAD=m
1529CONFIG_CRYPTO_BLKCIPHER=m 1572CONFIG_CRYPTO_BLKCIPHER=m
1573CONFIG_CRYPTO_HASH=m
1574CONFIG_CRYPTO_RNG=m
1530CONFIG_CRYPTO_MANAGER=m 1575CONFIG_CRYPTO_MANAGER=m
1531# CONFIG_CRYPTO_GF128MUL is not set 1576# CONFIG_CRYPTO_GF128MUL is not set
1532# CONFIG_CRYPTO_NULL is not set 1577# CONFIG_CRYPTO_NULL is not set
@@ -1599,5 +1644,36 @@ CONFIG_CRYPTO_DES=m
1599# 1644#
1600# CONFIG_CRYPTO_DEFLATE is not set 1645# CONFIG_CRYPTO_DEFLATE is not set
1601# CONFIG_CRYPTO_LZO is not set 1646# CONFIG_CRYPTO_LZO is not set
1647
1648#
1649# Random Number Generation
1650#
1651# CONFIG_CRYPTO_ANSI_CPRNG is not set
1602CONFIG_CRYPTO_HW=y 1652CONFIG_CRYPTO_HW=y
1603# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1653# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1654CONFIG_HAVE_KVM=y
1655CONFIG_VIRTUALIZATION=y
1656# CONFIG_KVM is not set
1657# CONFIG_VIRTIO_PCI is not set
1658# CONFIG_VIRTIO_BALLOON is not set
1659
1660#
1661# Library routines
1662#
1663CONFIG_BITREVERSE=y
1664# CONFIG_CRC_CCITT is not set
1665# CONFIG_CRC16 is not set
1666CONFIG_CRC_T10DIF=y
1667CONFIG_CRC_ITU_T=m
1668CONFIG_CRC32=y
1669# CONFIG_CRC7 is not set
1670# CONFIG_LIBCRC32C is not set
1671CONFIG_GENERIC_ALLOCATOR=y
1672CONFIG_PLIST=y
1673CONFIG_HAS_IOMEM=y
1674CONFIG_HAS_IOPORT=y
1675CONFIG_HAS_DMA=y
1676CONFIG_GENERIC_HARDIRQS=y
1677CONFIG_GENERIC_IRQ_PROBE=y
1678CONFIG_GENERIC_PENDING_IRQ=y
1679CONFIG_IRQ_PER_CPU=y
diff --git a/arch/ia64/hp/sim/Kconfig b/arch/ia64/hp/sim/Kconfig
index f92306bbedb8..8d513a8c5266 100644
--- a/arch/ia64/hp/sim/Kconfig
+++ b/arch/ia64/hp/sim/Kconfig
@@ -4,6 +4,7 @@ menu "HP Simulator drivers"
4 4
5config HP_SIMETH 5config HP_SIMETH
6 bool "Simulated Ethernet " 6 bool "Simulated Ethernet "
7 depends on NET
7 8
8config HP_SIMSERIAL 9config HP_SIMSERIAL
9 bool "Simulated serial driver support" 10 bool "Simulated serial driver support"
diff --git a/arch/ia64/include/asm/paravirt_privop.h b/arch/ia64/include/asm/paravirt_privop.h
index 0b597424fcfc..33c8e55f5775 100644
--- a/arch/ia64/include/asm/paravirt_privop.h
+++ b/arch/ia64/include/asm/paravirt_privop.h
@@ -83,7 +83,6 @@ extern unsigned long ia64_native_getreg_func(int regnum);
83#define paravirt_getreg(reg) \ 83#define paravirt_getreg(reg) \
84 ({ \ 84 ({ \
85 unsigned long res; \ 85 unsigned long res; \
86 BUILD_BUG_ON(!__builtin_constant_p(reg)); \
87 if ((reg) == _IA64_REG_IP) \ 86 if ((reg) == _IA64_REG_IP) \
88 res = ia64_native_getreg(_IA64_REG_IP); \ 87 res = ia64_native_getreg(_IA64_REG_IP); \
89 else \ 88 else \
diff --git a/arch/ia64/kernel/topology.c b/arch/ia64/kernel/topology.c
index 26228e2d01ae..c75b914f2d6b 100644
--- a/arch/ia64/kernel/topology.c
+++ b/arch/ia64/kernel/topology.c
@@ -53,10 +53,12 @@ int __ref arch_register_cpu(int num)
53} 53}
54EXPORT_SYMBOL(arch_register_cpu); 54EXPORT_SYMBOL(arch_register_cpu);
55 55
56void arch_unregister_cpu(int num) 56void __ref arch_unregister_cpu(int num)
57{ 57{
58 unregister_cpu(&sysfs_cpus[num].cpu); 58 unregister_cpu(&sysfs_cpus[num].cpu);
59#ifdef CONFIG_ACPI
59 unmap_cpu_from_node(num, cpu_to_node(num)); 60 unmap_cpu_from_node(num, cpu_to_node(num));
61#endif
60} 62}
61EXPORT_SYMBOL(arch_unregister_cpu); 63EXPORT_SYMBOL(arch_unregister_cpu);
62#else 64#else
diff --git a/arch/ia64/kvm/Makefile b/arch/ia64/kvm/Makefile
index 3ab4d6d50704..92cef66ca268 100644
--- a/arch/ia64/kvm/Makefile
+++ b/arch/ia64/kvm/Makefile
@@ -58,7 +58,7 @@ endif
58kvm-objs := $(common-objs) kvm-ia64.o kvm_fw.o 58kvm-objs := $(common-objs) kvm-ia64.o kvm_fw.o
59obj-$(CONFIG_KVM) += kvm.o 59obj-$(CONFIG_KVM) += kvm.o
60 60
61EXTRA_CFLAGS_vcpu.o += -mfixed-range=f2-f5,f12-f127 61CFLAGS_vcpu.o += -mfixed-range=f2-f5,f12-f127
62kvm-intel-objs = vmm.o vmm_ivt.o trampoline.o vcpu.o optvfault.o mmio.o \ 62kvm-intel-objs = vmm.o vmm_ivt.o trampoline.o vcpu.o optvfault.o mmio.o \
63 vtlb.o process.o 63 vtlb.o process.o
64#Add link memcpy and memset to avoid possible structure assignment error 64#Add link memcpy and memset to avoid possible structure assignment error
diff --git a/arch/ia64/kvm/optvfault.S b/arch/ia64/kvm/optvfault.S
index 634abad979b5..32254ce9a1bd 100644
--- a/arch/ia64/kvm/optvfault.S
+++ b/arch/ia64/kvm/optvfault.S
@@ -107,10 +107,10 @@ END(kvm_vps_resume_normal)
107GLOBAL_ENTRY(kvm_vps_resume_handler) 107GLOBAL_ENTRY(kvm_vps_resume_handler)
108 movl r30 = PAL_VPS_RESUME_HANDLER 108 movl r30 = PAL_VPS_RESUME_HANDLER
109 ;; 109 ;;
110 ld8 r27=[r25] 110 ld8 r26=[r25]
111 shr r17=r17,IA64_ISR_IR_BIT 111 shr r17=r17,IA64_ISR_IR_BIT
112 ;; 112 ;;
113 dep r27=r17,r27,63,1 // bit 63 of r27 indicate whether enable CFLE 113 dep r26=r17,r26,63,1 // bit 63 of r26 indicate whether enable CFLE
114 mov pr=r23,-2 114 mov pr=r23,-2
115 br.sptk.many kvm_vps_entry 115 br.sptk.many kvm_vps_entry
116END(kvm_vps_resume_handler) 116END(kvm_vps_resume_handler)
@@ -894,12 +894,15 @@ ENTRY(kvm_resume_to_guest)
894 ;; 894 ;;
895 ld8 r19=[r19] 895 ld8 r19=[r19]
896 mov b0=r29 896 mov b0=r29
897 cmp.ne p6,p7 = r0,r0 897 mov r27=cr.isr
898 ;; 898 ;;
899 tbit.z p6,p7 = r19,IA64_PSR_IC_BIT // p1=vpsr.ic 899 tbit.z p6,p7 = r19,IA64_PSR_IC_BIT // p7=vpsr.ic
900 shr r27=r27,IA64_ISR_IR_BIT
900 ;; 901 ;;
901 (p6) ld8 r26=[r25] 902 (p6) ld8 r26=[r25]
902 (p7) mov b0=r28 903 (p7) mov b0=r28
904 ;;
905 (p6) dep r26=r27,r26,63,1
903 mov pr=r31,-2 906 mov pr=r31,-2
904 br.sptk.many b0 // call pal service 907 br.sptk.many b0 // call pal service
905 ;; 908 ;;
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c
index 96c31b4180c3..0c66dbdd1d72 100644
--- a/arch/ia64/sn/kernel/irq.c
+++ b/arch/ia64/sn/kernel/irq.c
@@ -5,7 +5,7 @@
5 * License. See the file "COPYING" in the main directory of this archive 5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details. 6 * for more details.
7 * 7 *
8 * Copyright (c) 2000-2007 Silicon Graphics, Inc. All Rights Reserved. 8 * Copyright (c) 2000-2008 Silicon Graphics, Inc. All Rights Reserved.
9 */ 9 */
10 10
11#include <linux/irq.h> 11#include <linux/irq.h>
@@ -375,6 +375,7 @@ void sn_irq_fixup(struct pci_dev *pci_dev, struct sn_irq_info *sn_irq_info)
375 int cpu = nasid_slice_to_cpuid(nasid, slice); 375 int cpu = nasid_slice_to_cpuid(nasid, slice);
376#ifdef CONFIG_SMP 376#ifdef CONFIG_SMP
377 int cpuphys; 377 int cpuphys;
378 irq_desc_t *desc;
378#endif 379#endif
379 380
380 pci_dev_get(pci_dev); 381 pci_dev_get(pci_dev);
@@ -391,6 +392,12 @@ void sn_irq_fixup(struct pci_dev *pci_dev, struct sn_irq_info *sn_irq_info)
391#ifdef CONFIG_SMP 392#ifdef CONFIG_SMP
392 cpuphys = cpu_physical_id(cpu); 393 cpuphys = cpu_physical_id(cpu);
393 set_irq_affinity_info(sn_irq_info->irq_irq, cpuphys, 0); 394 set_irq_affinity_info(sn_irq_info->irq_irq, cpuphys, 0);
395 desc = irq_to_desc(sn_irq_info->irq_irq);
396 /*
397 * Affinity was set by the PROM, prevent it from
398 * being reset by the request_irq() path.
399 */
400 desc->status |= IRQ_AFFINITY_SET;
394#endif 401#endif
395} 402}
396 403
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
index bb1d24929640..02c5b8a9fb60 100644
--- a/arch/ia64/sn/kernel/setup.c
+++ b/arch/ia64/sn/kernel/setup.c
@@ -200,7 +200,7 @@ static int __cpuinitdata shub_1_1_found;
200 * Set flag for enabling shub specific wars 200 * Set flag for enabling shub specific wars
201 */ 201 */
202 202
203static inline int __init is_shub_1_1(int nasid) 203static inline int __cpuinit is_shub_1_1(int nasid)
204{ 204{
205 unsigned long id; 205 unsigned long id;
206 int rev; 206 int rev;
@@ -212,7 +212,7 @@ static inline int __init is_shub_1_1(int nasid)
212 return rev <= 2; 212 return rev <= 2;
213} 213}
214 214
215static void __init sn_check_for_wars(void) 215static void __cpuinit sn_check_for_wars(void)
216{ 216{
217 int cnode; 217 int cnode;
218 218
@@ -512,7 +512,6 @@ static void __init sn_init_pdas(char **cmdline_p)
512 for_each_online_node(cnode) { 512 for_each_online_node(cnode) {
513 nodepdaindr[cnode] = 513 nodepdaindr[cnode] =
514 alloc_bootmem_node(NODE_DATA(cnode), sizeof(nodepda_t)); 514 alloc_bootmem_node(NODE_DATA(cnode), sizeof(nodepda_t));
515 memset(nodepdaindr[cnode], 0, sizeof(nodepda_t));
516 memset(nodepdaindr[cnode]->phys_cpuid, -1, 515 memset(nodepdaindr[cnode]->phys_cpuid, -1,
517 sizeof(nodepdaindr[cnode]->phys_cpuid)); 516 sizeof(nodepdaindr[cnode]->phys_cpuid));
518 spin_lock_init(&nodepdaindr[cnode]->ptc_lock); 517 spin_lock_init(&nodepdaindr[cnode]->ptc_lock);
@@ -521,11 +520,9 @@ static void __init sn_init_pdas(char **cmdline_p)
521 /* 520 /*
522 * Allocate & initialize nodepda for TIOs. For now, put them on node 0. 521 * Allocate & initialize nodepda for TIOs. For now, put them on node 0.
523 */ 522 */
524 for (cnode = num_online_nodes(); cnode < num_cnodes; cnode++) { 523 for (cnode = num_online_nodes(); cnode < num_cnodes; cnode++)
525 nodepdaindr[cnode] = 524 nodepdaindr[cnode] =
526 alloc_bootmem_node(NODE_DATA(0), sizeof(nodepda_t)); 525 alloc_bootmem_node(NODE_DATA(0), sizeof(nodepda_t));
527 memset(nodepdaindr[cnode], 0, sizeof(nodepda_t));
528 }
529 526
530 /* 527 /*
531 * Now copy the array of nodepda pointers to each nodepda. 528 * Now copy the array of nodepda pointers to each nodepda.
diff --git a/arch/m68k/configs/amiga_defconfig b/arch/m68k/configs/amiga_defconfig
index 8bd61a640fc9..23597beb66c1 100644
--- a/arch/m68k/configs/amiga_defconfig
+++ b/arch/m68k/configs/amiga_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:00 2008 4# Tue Dec 2 20:27:42 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16# CONFIG_NO_DMA is not set 16# CONFIG_NO_DMA is not set
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,11 +105,11 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
122# CONFIG_SUN3 is not set
123CONFIG_AMIGA=y 113CONFIG_AMIGA=y
124# CONFIG_ATARI is not set 114# CONFIG_ATARI is not set
125# CONFIG_MAC is not set 115# CONFIG_MAC is not set
@@ -148,19 +138,21 @@ CONFIG_DISCONTIGMEM_MANUAL=y
148CONFIG_DISCONTIGMEM=y 138CONFIG_DISCONTIGMEM=y
149CONFIG_FLAT_NODE_MEM_MAP=y 139CONFIG_FLAT_NODE_MEM_MAP=y
150CONFIG_NEED_MULTIPLE_NODES=y 140CONFIG_NEED_MULTIPLE_NODES=y
151# CONFIG_SPARSEMEM_STATIC is not set
152# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
153CONFIG_PAGEFLAGS_EXTENDED=y 141CONFIG_PAGEFLAGS_EXTENDED=y
154CONFIG_SPLIT_PTLOCK_CPUS=4 142CONFIG_SPLIT_PTLOCK_CPUS=4
155# CONFIG_RESOURCES_64BIT is not set 143# CONFIG_RESOURCES_64BIT is not set
144# CONFIG_PHYS_ADDR_T_64BIT is not set
156CONFIG_ZONE_DMA_FLAG=1 145CONFIG_ZONE_DMA_FLAG=1
157CONFIG_BOUNCE=y 146CONFIG_BOUNCE=y
158CONFIG_VIRT_TO_BUS=y 147CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y
159 149
160# 150#
161# General setup 151# General setup
162# 152#
163CONFIG_BINFMT_ELF=y 153CONFIG_BINFMT_ELF=y
154# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
155CONFIG_HAVE_AOUT=y
164CONFIG_BINFMT_AOUT=m 156CONFIG_BINFMT_AOUT=m
165CONFIG_BINFMT_MISC=m 157CONFIG_BINFMT_MISC=m
166CONFIG_ZORRO=y 158CONFIG_ZORRO=y
@@ -212,7 +204,6 @@ CONFIG_INET_TCP_DIAG=m
212CONFIG_TCP_CONG_CUBIC=y 204CONFIG_TCP_CONG_CUBIC=y
213CONFIG_DEFAULT_TCP_CONG="cubic" 205CONFIG_DEFAULT_TCP_CONG="cubic"
214# CONFIG_TCP_MD5SIG is not set 206# CONFIG_TCP_MD5SIG is not set
215# CONFIG_IP_VS is not set
216CONFIG_IPV6=m 207CONFIG_IPV6=m
217CONFIG_IPV6_PRIVACY=y 208CONFIG_IPV6_PRIVACY=y
218CONFIG_IPV6_ROUTER_PREF=y 209CONFIG_IPV6_ROUTER_PREF=y
@@ -262,13 +253,14 @@ CONFIG_NF_CONNTRACK_SANE=m
262CONFIG_NF_CONNTRACK_SIP=m 253CONFIG_NF_CONNTRACK_SIP=m
263CONFIG_NF_CONNTRACK_TFTP=m 254CONFIG_NF_CONNTRACK_TFTP=m
264# CONFIG_NF_CT_NETLINK is not set 255# CONFIG_NF_CT_NETLINK is not set
256# CONFIG_NETFILTER_TPROXY is not set
265CONFIG_NETFILTER_XTABLES=m 257CONFIG_NETFILTER_XTABLES=m
266CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 258CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
267CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 259CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
268CONFIG_NETFILTER_XT_TARGET_DSCP=m 260CONFIG_NETFILTER_XT_TARGET_DSCP=m
269CONFIG_NETFILTER_XT_TARGET_MARK=m 261CONFIG_NETFILTER_XT_TARGET_MARK=m
270CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
271CONFIG_NETFILTER_XT_TARGET_NFLOG=m 262CONFIG_NETFILTER_XT_TARGET_NFLOG=m
263CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
272CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 264CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
273CONFIG_NETFILTER_XT_TARGET_RATEEST=m 265CONFIG_NETFILTER_XT_TARGET_RATEEST=m
274CONFIG_NETFILTER_XT_TARGET_TRACE=m 266CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -282,19 +274,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
282CONFIG_NETFILTER_XT_MATCH_DCCP=m 274CONFIG_NETFILTER_XT_MATCH_DCCP=m
283CONFIG_NETFILTER_XT_MATCH_DSCP=m 275CONFIG_NETFILTER_XT_MATCH_DSCP=m
284CONFIG_NETFILTER_XT_MATCH_ESP=m 276CONFIG_NETFILTER_XT_MATCH_ESP=m
277CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
285CONFIG_NETFILTER_XT_MATCH_HELPER=m 278CONFIG_NETFILTER_XT_MATCH_HELPER=m
286CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 279CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
287CONFIG_NETFILTER_XT_MATCH_LENGTH=m 280CONFIG_NETFILTER_XT_MATCH_LENGTH=m
288CONFIG_NETFILTER_XT_MATCH_LIMIT=m 281CONFIG_NETFILTER_XT_MATCH_LIMIT=m
289CONFIG_NETFILTER_XT_MATCH_MAC=m 282CONFIG_NETFILTER_XT_MATCH_MAC=m
290CONFIG_NETFILTER_XT_MATCH_MARK=m 283CONFIG_NETFILTER_XT_MATCH_MARK=m
284CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
291CONFIG_NETFILTER_XT_MATCH_OWNER=m 285CONFIG_NETFILTER_XT_MATCH_OWNER=m
292CONFIG_NETFILTER_XT_MATCH_POLICY=m 286CONFIG_NETFILTER_XT_MATCH_POLICY=m
293CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
294CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 287CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
295CONFIG_NETFILTER_XT_MATCH_QUOTA=m 288CONFIG_NETFILTER_XT_MATCH_QUOTA=m
296CONFIG_NETFILTER_XT_MATCH_RATEEST=m 289CONFIG_NETFILTER_XT_MATCH_RATEEST=m
297CONFIG_NETFILTER_XT_MATCH_REALM=m 290CONFIG_NETFILTER_XT_MATCH_REALM=m
291CONFIG_NETFILTER_XT_MATCH_RECENT=m
292# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
298CONFIG_NETFILTER_XT_MATCH_SCTP=m 293CONFIG_NETFILTER_XT_MATCH_SCTP=m
299CONFIG_NETFILTER_XT_MATCH_STATE=m 294CONFIG_NETFILTER_XT_MATCH_STATE=m
300CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 295CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -302,20 +297,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
302CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 297CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
303CONFIG_NETFILTER_XT_MATCH_TIME=m 298CONFIG_NETFILTER_XT_MATCH_TIME=m
304CONFIG_NETFILTER_XT_MATCH_U32=m 299CONFIG_NETFILTER_XT_MATCH_U32=m
305CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 300# CONFIG_IP_VS is not set
306 301
307# 302#
308# IP: Netfilter Configuration 303# IP: Netfilter Configuration
309# 304#
305CONFIG_NF_DEFRAG_IPV4=m
310CONFIG_NF_CONNTRACK_IPV4=m 306CONFIG_NF_CONNTRACK_IPV4=m
311CONFIG_NF_CONNTRACK_PROC_COMPAT=y 307CONFIG_NF_CONNTRACK_PROC_COMPAT=y
312CONFIG_IP_NF_QUEUE=m 308CONFIG_IP_NF_QUEUE=m
313CONFIG_IP_NF_IPTABLES=m 309CONFIG_IP_NF_IPTABLES=m
314CONFIG_IP_NF_MATCH_RECENT=m 310CONFIG_IP_NF_MATCH_ADDRTYPE=m
315CONFIG_IP_NF_MATCH_ECN=m
316CONFIG_IP_NF_MATCH_AH=m 311CONFIG_IP_NF_MATCH_AH=m
312CONFIG_IP_NF_MATCH_ECN=m
317CONFIG_IP_NF_MATCH_TTL=m 313CONFIG_IP_NF_MATCH_TTL=m
318CONFIG_IP_NF_MATCH_ADDRTYPE=m
319CONFIG_IP_NF_FILTER=m 314CONFIG_IP_NF_FILTER=m
320CONFIG_IP_NF_TARGET_REJECT=m 315CONFIG_IP_NF_TARGET_REJECT=m
321CONFIG_IP_NF_TARGET_LOG=m 316CONFIG_IP_NF_TARGET_LOG=m
@@ -323,8 +318,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
323CONFIG_NF_NAT=m 318CONFIG_NF_NAT=m
324CONFIG_NF_NAT_NEEDED=y 319CONFIG_NF_NAT_NEEDED=y
325CONFIG_IP_NF_TARGET_MASQUERADE=m 320CONFIG_IP_NF_TARGET_MASQUERADE=m
326CONFIG_IP_NF_TARGET_REDIRECT=m
327CONFIG_IP_NF_TARGET_NETMAP=m 321CONFIG_IP_NF_TARGET_NETMAP=m
322CONFIG_IP_NF_TARGET_REDIRECT=m
328CONFIG_NF_NAT_SNMP_BASIC=m 323CONFIG_NF_NAT_SNMP_BASIC=m
329CONFIG_NF_NAT_PROTO_GRE=m 324CONFIG_NF_NAT_PROTO_GRE=m
330CONFIG_NF_NAT_PROTO_UDPLITE=m 325CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -337,9 +332,9 @@ CONFIG_NF_NAT_PPTP=m
337CONFIG_NF_NAT_H323=m 332CONFIG_NF_NAT_H323=m
338CONFIG_NF_NAT_SIP=m 333CONFIG_NF_NAT_SIP=m
339CONFIG_IP_NF_MANGLE=m 334CONFIG_IP_NF_MANGLE=m
335CONFIG_IP_NF_TARGET_CLUSTERIP=m
340CONFIG_IP_NF_TARGET_ECN=m 336CONFIG_IP_NF_TARGET_ECN=m
341CONFIG_IP_NF_TARGET_TTL=m 337CONFIG_IP_NF_TARGET_TTL=m
342CONFIG_IP_NF_TARGET_CLUSTERIP=m
343CONFIG_IP_NF_RAW=m 338CONFIG_IP_NF_RAW=m
344CONFIG_IP_NF_ARPTABLES=m 339CONFIG_IP_NF_ARPTABLES=m
345CONFIG_IP_NF_ARPFILTER=m 340CONFIG_IP_NF_ARPFILTER=m
@@ -351,16 +346,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
351CONFIG_NF_CONNTRACK_IPV6=m 346CONFIG_NF_CONNTRACK_IPV6=m
352CONFIG_IP6_NF_QUEUE=m 347CONFIG_IP6_NF_QUEUE=m
353CONFIG_IP6_NF_IPTABLES=m 348CONFIG_IP6_NF_IPTABLES=m
354CONFIG_IP6_NF_MATCH_RT=m 349CONFIG_IP6_NF_MATCH_AH=m
355CONFIG_IP6_NF_MATCH_OPTS=m 350CONFIG_IP6_NF_MATCH_EUI64=m
356CONFIG_IP6_NF_MATCH_FRAG=m 351CONFIG_IP6_NF_MATCH_FRAG=m
352CONFIG_IP6_NF_MATCH_OPTS=m
357CONFIG_IP6_NF_MATCH_HL=m 353CONFIG_IP6_NF_MATCH_HL=m
358CONFIG_IP6_NF_MATCH_IPV6HEADER=m 354CONFIG_IP6_NF_MATCH_IPV6HEADER=m
359CONFIG_IP6_NF_MATCH_AH=m
360CONFIG_IP6_NF_MATCH_MH=m 355CONFIG_IP6_NF_MATCH_MH=m
361CONFIG_IP6_NF_MATCH_EUI64=m 356CONFIG_IP6_NF_MATCH_RT=m
362CONFIG_IP6_NF_FILTER=m
363CONFIG_IP6_NF_TARGET_LOG=m 357CONFIG_IP6_NF_TARGET_LOG=m
358CONFIG_IP6_NF_FILTER=m
364CONFIG_IP6_NF_TARGET_REJECT=m 359CONFIG_IP6_NF_TARGET_REJECT=m
365CONFIG_IP6_NF_MANGLE=m 360CONFIG_IP6_NF_MANGLE=m
366CONFIG_IP6_NF_TARGET_HL=m 361CONFIG_IP6_NF_TARGET_HL=m
@@ -387,6 +382,7 @@ CONFIG_SCTP_HMAC_MD5=y
387# CONFIG_TIPC is not set 382# CONFIG_TIPC is not set
388# CONFIG_ATM is not set 383# CONFIG_ATM is not set
389# CONFIG_BRIDGE is not set 384# CONFIG_BRIDGE is not set
385# CONFIG_NET_DSA is not set
390# CONFIG_VLAN_8021Q is not set 386# CONFIG_VLAN_8021Q is not set
391# CONFIG_DECNET is not set 387# CONFIG_DECNET is not set
392CONFIG_LLC=m 388CONFIG_LLC=m
@@ -410,19 +406,8 @@ CONFIG_NET_CLS_ROUTE=y
410# CONFIG_IRDA is not set 406# CONFIG_IRDA is not set
411# CONFIG_BT is not set 407# CONFIG_BT is not set
412# CONFIG_AF_RXRPC is not set 408# CONFIG_AF_RXRPC is not set
413 409# CONFIG_PHONET is not set
414# 410# CONFIG_WIRELESS is not set
415# Wireless
416#
417# CONFIG_CFG80211 is not set
418CONFIG_WIRELESS_EXT=y
419# CONFIG_WIRELESS_EXT_SYSFS is not set
420# CONFIG_MAC80211 is not set
421CONFIG_IEEE80211=m
422# CONFIG_IEEE80211_DEBUG is not set
423CONFIG_IEEE80211_CRYPT_WEP=m
424CONFIG_IEEE80211_CRYPT_CCMP=m
425CONFIG_IEEE80211_CRYPT_TKIP=m
426# CONFIG_RFKILL is not set 411# CONFIG_RFKILL is not set
427# CONFIG_NET_9P is not set 412# CONFIG_NET_9P is not set
428 413
@@ -470,21 +455,20 @@ CONFIG_ATA_OVER_ETH=m
470CONFIG_MISC_DEVICES=y 455CONFIG_MISC_DEVICES=y
471# CONFIG_EEPROM_93CX6 is not set 456# CONFIG_EEPROM_93CX6 is not set
472# CONFIG_ENCLOSURE_SERVICES is not set 457# CONFIG_ENCLOSURE_SERVICES is not set
458# CONFIG_C2PORT is not set
473CONFIG_HAVE_IDE=y 459CONFIG_HAVE_IDE=y
474CONFIG_IDE=y 460CONFIG_IDE=y
475CONFIG_BLK_DEV_IDE=y
476 461
477# 462#
478# Please see Documentation/ide/ide.txt for help/info on IDE drives 463# Please see Documentation/ide/ide.txt for help/info on IDE drives
479# 464#
480CONFIG_IDE_ATAPI=y
481# CONFIG_BLK_DEV_IDE_SATA is not set 465# CONFIG_BLK_DEV_IDE_SATA is not set
482CONFIG_BLK_DEV_IDEDISK=y 466CONFIG_IDE_GD=y
483# CONFIG_IDEDISK_MULTI_MODE is not set 467CONFIG_IDE_GD_ATA=y
468# CONFIG_IDE_GD_ATAPI is not set
484CONFIG_BLK_DEV_IDECD=y 469CONFIG_BLK_DEV_IDECD=y
485CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 470CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
486# CONFIG_BLK_DEV_IDETAPE is not set 471# CONFIG_BLK_DEV_IDETAPE is not set
487CONFIG_BLK_DEV_IDEFLOPPY=m
488# CONFIG_BLK_DEV_IDESCSI is not set 472# CONFIG_BLK_DEV_IDESCSI is not set
489# CONFIG_IDE_TASK_IOCTL is not set 473# CONFIG_IDE_TASK_IOCTL is not set
490CONFIG_IDE_PROC_FS=y 474CONFIG_IDE_PROC_FS=y
@@ -609,8 +593,12 @@ CONFIG_APNE=m
609# CONFIG_IBM_NEW_EMAC_RGMII is not set 593# CONFIG_IBM_NEW_EMAC_RGMII is not set
610# CONFIG_IBM_NEW_EMAC_TAH is not set 594# CONFIG_IBM_NEW_EMAC_TAH is not set
611# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 595# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
596# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
597# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
598# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
612# CONFIG_NET_PCI is not set 599# CONFIG_NET_PCI is not set
613# CONFIG_B44 is not set 600# CONFIG_B44 is not set
601# CONFIG_CS89x0 is not set
614# CONFIG_NET_POCKET is not set 602# CONFIG_NET_POCKET is not set
615# CONFIG_NETDEV_1000 is not set 603# CONFIG_NETDEV_1000 is not set
616# CONFIG_NETDEV_10000 is not set 604# CONFIG_NETDEV_10000 is not set
@@ -763,11 +751,11 @@ CONFIG_GEN_RTC_X=y
763# CONFIG_THERMAL is not set 751# CONFIG_THERMAL is not set
764# CONFIG_THERMAL_HWMON is not set 752# CONFIG_THERMAL_HWMON is not set
765# CONFIG_WATCHDOG is not set 753# CONFIG_WATCHDOG is not set
754CONFIG_SSB_POSSIBLE=y
766 755
767# 756#
768# Sonics Silicon Backplane 757# Sonics Silicon Backplane
769# 758#
770CONFIG_SSB_POSSIBLE=y
771# CONFIG_SSB is not set 759# CONFIG_SSB is not set
772 760
773# 761#
@@ -777,6 +765,7 @@ CONFIG_SSB_POSSIBLE=y
777# CONFIG_MFD_SM501 is not set 765# CONFIG_MFD_SM501 is not set
778# CONFIG_HTC_PASIC3 is not set 766# CONFIG_HTC_PASIC3 is not set
779# CONFIG_MFD_TMIO is not set 767# CONFIG_MFD_TMIO is not set
768# CONFIG_REGULATOR is not set
780 769
781# 770#
782# Multimedia devices 771# Multimedia devices
@@ -802,6 +791,7 @@ CONFIG_SSB_POSSIBLE=y
802CONFIG_FB=y 791CONFIG_FB=y
803# CONFIG_FIRMWARE_EDID is not set 792# CONFIG_FIRMWARE_EDID is not set
804# CONFIG_FB_DDC is not set 793# CONFIG_FB_DDC is not set
794# CONFIG_FB_BOOT_VESA_SUPPORT is not set
805CONFIG_FB_CFB_FILLRECT=y 795CONFIG_FB_CFB_FILLRECT=y
806CONFIG_FB_CFB_COPYAREA=y 796CONFIG_FB_CFB_COPYAREA=y
807CONFIG_FB_CFB_IMAGEBLIT=y 797CONFIG_FB_CFB_IMAGEBLIT=y
@@ -829,6 +819,8 @@ CONFIG_FB_FM2=y
829# CONFIG_FB_UVESA is not set 819# CONFIG_FB_UVESA is not set
830# CONFIG_FB_S1D13XXX is not set 820# CONFIG_FB_S1D13XXX is not set
831# CONFIG_FB_VIRTUAL is not set 821# CONFIG_FB_VIRTUAL is not set
822# CONFIG_FB_METRONOME is not set
823# CONFIG_FB_MB862XX is not set
832# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 824# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
833 825
834# 826#
@@ -852,12 +844,19 @@ CONFIG_LOGO_LINUX_MONO=y
852CONFIG_LOGO_LINUX_VGA16=y 844CONFIG_LOGO_LINUX_VGA16=y
853CONFIG_LOGO_LINUX_CLUT224=y 845CONFIG_LOGO_LINUX_CLUT224=y
854CONFIG_SOUND=m 846CONFIG_SOUND=m
847CONFIG_SOUND_OSS_CORE=y
855CONFIG_DMASOUND_PAULA=m 848CONFIG_DMASOUND_PAULA=m
856CONFIG_DMASOUND=m 849CONFIG_DMASOUND=m
857CONFIG_HID_SUPPORT=y 850CONFIG_HID_SUPPORT=y
858CONFIG_HID=m 851CONFIG_HID=m
859# CONFIG_HID_DEBUG is not set 852# CONFIG_HID_DEBUG is not set
860CONFIG_HIDRAW=y 853CONFIG_HIDRAW=y
854# CONFIG_HID_PID is not set
855
856#
857# Special HID drivers
858#
859CONFIG_HID_COMPAT=y
861# CONFIG_USB_SUPPORT is not set 860# CONFIG_USB_SUPPORT is not set
862# CONFIG_MMC is not set 861# CONFIG_MMC is not set
863# CONFIG_MEMSTICK is not set 862# CONFIG_MEMSTICK is not set
@@ -867,6 +866,8 @@ CONFIG_HIDRAW=y
867# CONFIG_DMADEVICES is not set 866# CONFIG_DMADEVICES is not set
868# CONFIG_AUXDISPLAY is not set 867# CONFIG_AUXDISPLAY is not set
869# CONFIG_UIO is not set 868# CONFIG_UIO is not set
869# CONFIG_STAGING is not set
870CONFIG_STAGING_EXCLUDE_BUILD=y
870 871
871# 872#
872# Character devices 873# Character devices
@@ -883,8 +884,9 @@ CONFIG_EXT2_FS=y
883# CONFIG_EXT2_FS_XIP is not set 884# CONFIG_EXT2_FS_XIP is not set
884CONFIG_EXT3_FS=y 885CONFIG_EXT3_FS=y
885# CONFIG_EXT3_FS_XATTR is not set 886# CONFIG_EXT3_FS_XATTR is not set
886# CONFIG_EXT4DEV_FS is not set 887# CONFIG_EXT4_FS is not set
887CONFIG_JBD=y 888CONFIG_JBD=y
889CONFIG_JBD2=m
888CONFIG_REISERFS_FS=m 890CONFIG_REISERFS_FS=m
889# CONFIG_REISERFS_CHECK is not set 891# CONFIG_REISERFS_CHECK is not set
890# CONFIG_REISERFS_PROC_INFO is not set 892# CONFIG_REISERFS_PROC_INFO is not set
@@ -895,6 +897,7 @@ CONFIG_JFS_FS=m
895# CONFIG_JFS_DEBUG is not set 897# CONFIG_JFS_DEBUG is not set
896# CONFIG_JFS_STATISTICS is not set 898# CONFIG_JFS_STATISTICS is not set
897# CONFIG_FS_POSIX_ACL is not set 899# CONFIG_FS_POSIX_ACL is not set
900CONFIG_FILE_LOCKING=y
898CONFIG_XFS_FS=m 901CONFIG_XFS_FS=m
899# CONFIG_XFS_QUOTA is not set 902# CONFIG_XFS_QUOTA is not set
900# CONFIG_XFS_POSIX_ACL is not set 903# CONFIG_XFS_POSIX_ACL is not set
@@ -906,6 +909,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
906# CONFIG_OCFS2_FS_STATS is not set 909# CONFIG_OCFS2_FS_STATS is not set
907# CONFIG_OCFS2_DEBUG_MASKLOG is not set 910# CONFIG_OCFS2_DEBUG_MASKLOG is not set
908# CONFIG_OCFS2_DEBUG_FS is not set 911# CONFIG_OCFS2_DEBUG_FS is not set
912# CONFIG_OCFS2_COMPAT_JBD is not set
909CONFIG_DNOTIFY=y 913CONFIG_DNOTIFY=y
910CONFIG_INOTIFY=y 914CONFIG_INOTIFY=y
911CONFIG_INOTIFY_USER=y 915CONFIG_INOTIFY_USER=y
@@ -944,6 +948,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
944CONFIG_PROC_FS=y 948CONFIG_PROC_FS=y
945CONFIG_PROC_KCORE=y 949CONFIG_PROC_KCORE=y
946CONFIG_PROC_SYSCTL=y 950CONFIG_PROC_SYSCTL=y
951CONFIG_PROC_PAGE_MONITOR=y
947CONFIG_SYSFS=y 952CONFIG_SYSFS=y
948CONFIG_TMPFS=y 953CONFIG_TMPFS=y
949# CONFIG_TMPFS_POSIX_ACL is not set 954# CONFIG_TMPFS_POSIX_ACL is not set
@@ -986,6 +991,7 @@ CONFIG_EXPORTFS=m
986CONFIG_NFS_COMMON=y 991CONFIG_NFS_COMMON=y
987CONFIG_SUNRPC=m 992CONFIG_SUNRPC=m
988CONFIG_SUNRPC_GSS=m 993CONFIG_SUNRPC_GSS=m
994# CONFIG_SUNRPC_REGISTER_V4 is not set
989CONFIG_RPCSEC_GSS_KRB5=m 995CONFIG_RPCSEC_GSS_KRB5=m
990# CONFIG_RPCSEC_GSS_SPKM3 is not set 996# CONFIG_RPCSEC_GSS_SPKM3 is not set
991CONFIG_SMB_FS=m 997CONFIG_SMB_FS=m
@@ -1059,7 +1065,13 @@ CONFIG_MAGIC_SYSRQ=y
1059# CONFIG_DEBUG_KERNEL is not set 1065# CONFIG_DEBUG_KERNEL is not set
1060CONFIG_DEBUG_BUGVERBOSE=y 1066CONFIG_DEBUG_BUGVERBOSE=y
1061CONFIG_DEBUG_MEMORY_INIT=y 1067CONFIG_DEBUG_MEMORY_INIT=y
1068# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1062CONFIG_SYSCTL_SYSCALL_CHECK=y 1069CONFIG_SYSCTL_SYSCALL_CHECK=y
1070
1071#
1072# Tracers
1073#
1074# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1063# CONFIG_SAMPLES is not set 1075# CONFIG_SAMPLES is not set
1064 1076
1065# 1077#
@@ -1067,6 +1079,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
1067# 1079#
1068# CONFIG_KEYS is not set 1080# CONFIG_KEYS is not set
1069# CONFIG_SECURITY is not set 1081# CONFIG_SECURITY is not set
1082# CONFIG_SECURITYFS is not set
1070# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1083# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1071CONFIG_XOR_BLOCKS=m 1084CONFIG_XOR_BLOCKS=m
1072CONFIG_ASYNC_CORE=m 1085CONFIG_ASYNC_CORE=m
@@ -1077,10 +1090,12 @@ CONFIG_CRYPTO=y
1077# 1090#
1078# Crypto core or helper 1091# Crypto core or helper
1079# 1092#
1093# CONFIG_CRYPTO_FIPS is not set
1080CONFIG_CRYPTO_ALGAPI=y 1094CONFIG_CRYPTO_ALGAPI=y
1081CONFIG_CRYPTO_AEAD=m 1095CONFIG_CRYPTO_AEAD=y
1082CONFIG_CRYPTO_BLKCIPHER=m 1096CONFIG_CRYPTO_BLKCIPHER=y
1083CONFIG_CRYPTO_HASH=y 1097CONFIG_CRYPTO_HASH=y
1098CONFIG_CRYPTO_RNG=y
1084CONFIG_CRYPTO_MANAGER=y 1099CONFIG_CRYPTO_MANAGER=y
1085CONFIG_CRYPTO_GF128MUL=m 1100CONFIG_CRYPTO_GF128MUL=m
1086CONFIG_CRYPTO_NULL=m 1101CONFIG_CRYPTO_NULL=m
@@ -1154,14 +1169,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1154# 1169#
1155CONFIG_CRYPTO_DEFLATE=m 1170CONFIG_CRYPTO_DEFLATE=m
1156CONFIG_CRYPTO_LZO=m 1171CONFIG_CRYPTO_LZO=m
1172
1173#
1174# Random Number Generation
1175#
1176# CONFIG_CRYPTO_ANSI_CPRNG is not set
1157# CONFIG_CRYPTO_HW is not set 1177# CONFIG_CRYPTO_HW is not set
1158 1178
1159# 1179#
1160# Library routines 1180# Library routines
1161# 1181#
1162CONFIG_BITREVERSE=y 1182CONFIG_BITREVERSE=y
1163# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1164# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1165CONFIG_CRC_CCITT=m 1183CONFIG_CRC_CCITT=m
1166CONFIG_CRC16=m 1184CONFIG_CRC16=m
1167CONFIG_CRC_T10DIF=y 1185CONFIG_CRC_T10DIF=y
diff --git a/arch/m68k/configs/apollo_defconfig b/arch/m68k/configs/apollo_defconfig
index c41b854c0284..935108d115a0 100644
--- a/arch/m68k/configs/apollo_defconfig
+++ b/arch/m68k/configs/apollo_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:01 2008 4# Tue Dec 2 20:27:43 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16# CONFIG_NO_DMA is not set 16# CONFIG_NO_DMA is not set
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,11 +105,11 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
122# CONFIG_SUN3 is not set
123# CONFIG_AMIGA is not set 113# CONFIG_AMIGA is not set
124# CONFIG_ATARI is not set 114# CONFIG_ATARI is not set
125# CONFIG_MAC is not set 115# CONFIG_MAC is not set
@@ -148,19 +138,21 @@ CONFIG_DISCONTIGMEM_MANUAL=y
148CONFIG_DISCONTIGMEM=y 138CONFIG_DISCONTIGMEM=y
149CONFIG_FLAT_NODE_MEM_MAP=y 139CONFIG_FLAT_NODE_MEM_MAP=y
150CONFIG_NEED_MULTIPLE_NODES=y 140CONFIG_NEED_MULTIPLE_NODES=y
151# CONFIG_SPARSEMEM_STATIC is not set
152# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
153CONFIG_PAGEFLAGS_EXTENDED=y 141CONFIG_PAGEFLAGS_EXTENDED=y
154CONFIG_SPLIT_PTLOCK_CPUS=4 142CONFIG_SPLIT_PTLOCK_CPUS=4
155# CONFIG_RESOURCES_64BIT is not set 143# CONFIG_RESOURCES_64BIT is not set
144# CONFIG_PHYS_ADDR_T_64BIT is not set
156CONFIG_ZONE_DMA_FLAG=1 145CONFIG_ZONE_DMA_FLAG=1
157CONFIG_BOUNCE=y 146CONFIG_BOUNCE=y
158CONFIG_VIRT_TO_BUS=y 147CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y
159 149
160# 150#
161# General setup 151# General setup
162# 152#
163CONFIG_BINFMT_ELF=y 153CONFIG_BINFMT_ELF=y
154# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
155CONFIG_HAVE_AOUT=y
164CONFIG_BINFMT_AOUT=m 156CONFIG_BINFMT_AOUT=m
165CONFIG_BINFMT_MISC=m 157CONFIG_BINFMT_MISC=m
166CONFIG_HEARTBEAT=y 158CONFIG_HEARTBEAT=y
@@ -210,7 +202,6 @@ CONFIG_INET_TCP_DIAG=m
210CONFIG_TCP_CONG_CUBIC=y 202CONFIG_TCP_CONG_CUBIC=y
211CONFIG_DEFAULT_TCP_CONG="cubic" 203CONFIG_DEFAULT_TCP_CONG="cubic"
212# CONFIG_TCP_MD5SIG is not set 204# CONFIG_TCP_MD5SIG is not set
213# CONFIG_IP_VS is not set
214CONFIG_IPV6=m 205CONFIG_IPV6=m
215CONFIG_IPV6_PRIVACY=y 206CONFIG_IPV6_PRIVACY=y
216CONFIG_IPV6_ROUTER_PREF=y 207CONFIG_IPV6_ROUTER_PREF=y
@@ -260,13 +251,14 @@ CONFIG_NF_CONNTRACK_SANE=m
260CONFIG_NF_CONNTRACK_SIP=m 251CONFIG_NF_CONNTRACK_SIP=m
261CONFIG_NF_CONNTRACK_TFTP=m 252CONFIG_NF_CONNTRACK_TFTP=m
262# CONFIG_NF_CT_NETLINK is not set 253# CONFIG_NF_CT_NETLINK is not set
254# CONFIG_NETFILTER_TPROXY is not set
263CONFIG_NETFILTER_XTABLES=m 255CONFIG_NETFILTER_XTABLES=m
264CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 256CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
265CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 257CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
266CONFIG_NETFILTER_XT_TARGET_DSCP=m 258CONFIG_NETFILTER_XT_TARGET_DSCP=m
267CONFIG_NETFILTER_XT_TARGET_MARK=m 259CONFIG_NETFILTER_XT_TARGET_MARK=m
268CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
269CONFIG_NETFILTER_XT_TARGET_NFLOG=m 260CONFIG_NETFILTER_XT_TARGET_NFLOG=m
261CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
270CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 262CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
271CONFIG_NETFILTER_XT_TARGET_RATEEST=m 263CONFIG_NETFILTER_XT_TARGET_RATEEST=m
272CONFIG_NETFILTER_XT_TARGET_TRACE=m 264CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -280,19 +272,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
280CONFIG_NETFILTER_XT_MATCH_DCCP=m 272CONFIG_NETFILTER_XT_MATCH_DCCP=m
281CONFIG_NETFILTER_XT_MATCH_DSCP=m 273CONFIG_NETFILTER_XT_MATCH_DSCP=m
282CONFIG_NETFILTER_XT_MATCH_ESP=m 274CONFIG_NETFILTER_XT_MATCH_ESP=m
275CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
283CONFIG_NETFILTER_XT_MATCH_HELPER=m 276CONFIG_NETFILTER_XT_MATCH_HELPER=m
284CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 277CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
285CONFIG_NETFILTER_XT_MATCH_LENGTH=m 278CONFIG_NETFILTER_XT_MATCH_LENGTH=m
286CONFIG_NETFILTER_XT_MATCH_LIMIT=m 279CONFIG_NETFILTER_XT_MATCH_LIMIT=m
287CONFIG_NETFILTER_XT_MATCH_MAC=m 280CONFIG_NETFILTER_XT_MATCH_MAC=m
288CONFIG_NETFILTER_XT_MATCH_MARK=m 281CONFIG_NETFILTER_XT_MATCH_MARK=m
282CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
289CONFIG_NETFILTER_XT_MATCH_OWNER=m 283CONFIG_NETFILTER_XT_MATCH_OWNER=m
290CONFIG_NETFILTER_XT_MATCH_POLICY=m 284CONFIG_NETFILTER_XT_MATCH_POLICY=m
291CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
292CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 285CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
293CONFIG_NETFILTER_XT_MATCH_QUOTA=m 286CONFIG_NETFILTER_XT_MATCH_QUOTA=m
294CONFIG_NETFILTER_XT_MATCH_RATEEST=m 287CONFIG_NETFILTER_XT_MATCH_RATEEST=m
295CONFIG_NETFILTER_XT_MATCH_REALM=m 288CONFIG_NETFILTER_XT_MATCH_REALM=m
289CONFIG_NETFILTER_XT_MATCH_RECENT=m
290# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
296CONFIG_NETFILTER_XT_MATCH_SCTP=m 291CONFIG_NETFILTER_XT_MATCH_SCTP=m
297CONFIG_NETFILTER_XT_MATCH_STATE=m 292CONFIG_NETFILTER_XT_MATCH_STATE=m
298CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 293CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -300,20 +295,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
300CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 295CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
301CONFIG_NETFILTER_XT_MATCH_TIME=m 296CONFIG_NETFILTER_XT_MATCH_TIME=m
302CONFIG_NETFILTER_XT_MATCH_U32=m 297CONFIG_NETFILTER_XT_MATCH_U32=m
303CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 298# CONFIG_IP_VS is not set
304 299
305# 300#
306# IP: Netfilter Configuration 301# IP: Netfilter Configuration
307# 302#
303CONFIG_NF_DEFRAG_IPV4=m
308CONFIG_NF_CONNTRACK_IPV4=m 304CONFIG_NF_CONNTRACK_IPV4=m
309CONFIG_NF_CONNTRACK_PROC_COMPAT=y 305CONFIG_NF_CONNTRACK_PROC_COMPAT=y
310CONFIG_IP_NF_QUEUE=m 306CONFIG_IP_NF_QUEUE=m
311CONFIG_IP_NF_IPTABLES=m 307CONFIG_IP_NF_IPTABLES=m
312CONFIG_IP_NF_MATCH_RECENT=m 308CONFIG_IP_NF_MATCH_ADDRTYPE=m
313CONFIG_IP_NF_MATCH_ECN=m
314CONFIG_IP_NF_MATCH_AH=m 309CONFIG_IP_NF_MATCH_AH=m
310CONFIG_IP_NF_MATCH_ECN=m
315CONFIG_IP_NF_MATCH_TTL=m 311CONFIG_IP_NF_MATCH_TTL=m
316CONFIG_IP_NF_MATCH_ADDRTYPE=m
317CONFIG_IP_NF_FILTER=m 312CONFIG_IP_NF_FILTER=m
318CONFIG_IP_NF_TARGET_REJECT=m 313CONFIG_IP_NF_TARGET_REJECT=m
319CONFIG_IP_NF_TARGET_LOG=m 314CONFIG_IP_NF_TARGET_LOG=m
@@ -321,8 +316,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
321CONFIG_NF_NAT=m 316CONFIG_NF_NAT=m
322CONFIG_NF_NAT_NEEDED=y 317CONFIG_NF_NAT_NEEDED=y
323CONFIG_IP_NF_TARGET_MASQUERADE=m 318CONFIG_IP_NF_TARGET_MASQUERADE=m
324CONFIG_IP_NF_TARGET_REDIRECT=m
325CONFIG_IP_NF_TARGET_NETMAP=m 319CONFIG_IP_NF_TARGET_NETMAP=m
320CONFIG_IP_NF_TARGET_REDIRECT=m
326CONFIG_NF_NAT_SNMP_BASIC=m 321CONFIG_NF_NAT_SNMP_BASIC=m
327CONFIG_NF_NAT_PROTO_GRE=m 322CONFIG_NF_NAT_PROTO_GRE=m
328CONFIG_NF_NAT_PROTO_UDPLITE=m 323CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -335,9 +330,9 @@ CONFIG_NF_NAT_PPTP=m
335CONFIG_NF_NAT_H323=m 330CONFIG_NF_NAT_H323=m
336CONFIG_NF_NAT_SIP=m 331CONFIG_NF_NAT_SIP=m
337CONFIG_IP_NF_MANGLE=m 332CONFIG_IP_NF_MANGLE=m
333CONFIG_IP_NF_TARGET_CLUSTERIP=m
338CONFIG_IP_NF_TARGET_ECN=m 334CONFIG_IP_NF_TARGET_ECN=m
339CONFIG_IP_NF_TARGET_TTL=m 335CONFIG_IP_NF_TARGET_TTL=m
340CONFIG_IP_NF_TARGET_CLUSTERIP=m
341CONFIG_IP_NF_RAW=m 336CONFIG_IP_NF_RAW=m
342CONFIG_IP_NF_ARPTABLES=m 337CONFIG_IP_NF_ARPTABLES=m
343CONFIG_IP_NF_ARPFILTER=m 338CONFIG_IP_NF_ARPFILTER=m
@@ -349,16 +344,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
349CONFIG_NF_CONNTRACK_IPV6=m 344CONFIG_NF_CONNTRACK_IPV6=m
350CONFIG_IP6_NF_QUEUE=m 345CONFIG_IP6_NF_QUEUE=m
351CONFIG_IP6_NF_IPTABLES=m 346CONFIG_IP6_NF_IPTABLES=m
352CONFIG_IP6_NF_MATCH_RT=m 347CONFIG_IP6_NF_MATCH_AH=m
353CONFIG_IP6_NF_MATCH_OPTS=m 348CONFIG_IP6_NF_MATCH_EUI64=m
354CONFIG_IP6_NF_MATCH_FRAG=m 349CONFIG_IP6_NF_MATCH_FRAG=m
350CONFIG_IP6_NF_MATCH_OPTS=m
355CONFIG_IP6_NF_MATCH_HL=m 351CONFIG_IP6_NF_MATCH_HL=m
356CONFIG_IP6_NF_MATCH_IPV6HEADER=m 352CONFIG_IP6_NF_MATCH_IPV6HEADER=m
357CONFIG_IP6_NF_MATCH_AH=m
358CONFIG_IP6_NF_MATCH_MH=m 353CONFIG_IP6_NF_MATCH_MH=m
359CONFIG_IP6_NF_MATCH_EUI64=m 354CONFIG_IP6_NF_MATCH_RT=m
360CONFIG_IP6_NF_FILTER=m
361CONFIG_IP6_NF_TARGET_LOG=m 355CONFIG_IP6_NF_TARGET_LOG=m
356CONFIG_IP6_NF_FILTER=m
362CONFIG_IP6_NF_TARGET_REJECT=m 357CONFIG_IP6_NF_TARGET_REJECT=m
363CONFIG_IP6_NF_MANGLE=m 358CONFIG_IP6_NF_MANGLE=m
364CONFIG_IP6_NF_TARGET_HL=m 359CONFIG_IP6_NF_TARGET_HL=m
@@ -385,6 +380,7 @@ CONFIG_SCTP_HMAC_MD5=y
385# CONFIG_TIPC is not set 380# CONFIG_TIPC is not set
386# CONFIG_ATM is not set 381# CONFIG_ATM is not set
387# CONFIG_BRIDGE is not set 382# CONFIG_BRIDGE is not set
383# CONFIG_NET_DSA is not set
388# CONFIG_VLAN_8021Q is not set 384# CONFIG_VLAN_8021Q is not set
389# CONFIG_DECNET is not set 385# CONFIG_DECNET is not set
390CONFIG_LLC=m 386CONFIG_LLC=m
@@ -408,19 +404,8 @@ CONFIG_NET_CLS_ROUTE=y
408# CONFIG_IRDA is not set 404# CONFIG_IRDA is not set
409# CONFIG_BT is not set 405# CONFIG_BT is not set
410# CONFIG_AF_RXRPC is not set 406# CONFIG_AF_RXRPC is not set
411 407# CONFIG_PHONET is not set
412# 408# CONFIG_WIRELESS is not set
413# Wireless
414#
415# CONFIG_CFG80211 is not set
416CONFIG_WIRELESS_EXT=y
417# CONFIG_WIRELESS_EXT_SYSFS is not set
418# CONFIG_MAC80211 is not set
419CONFIG_IEEE80211=m
420# CONFIG_IEEE80211_DEBUG is not set
421CONFIG_IEEE80211_CRYPT_WEP=m
422CONFIG_IEEE80211_CRYPT_CCMP=m
423CONFIG_IEEE80211_CRYPT_TKIP=m
424# CONFIG_RFKILL is not set 409# CONFIG_RFKILL is not set
425# CONFIG_NET_9P is not set 410# CONFIG_NET_9P is not set
426 411
@@ -458,6 +443,7 @@ CONFIG_ATA_OVER_ETH=m
458CONFIG_MISC_DEVICES=y 443CONFIG_MISC_DEVICES=y
459# CONFIG_EEPROM_93CX6 is not set 444# CONFIG_EEPROM_93CX6 is not set
460# CONFIG_ENCLOSURE_SERVICES is not set 445# CONFIG_ENCLOSURE_SERVICES is not set
446# CONFIG_C2PORT is not set
461CONFIG_HAVE_IDE=y 447CONFIG_HAVE_IDE=y
462# CONFIG_IDE is not set 448# CONFIG_IDE is not set
463 449
@@ -540,6 +526,9 @@ CONFIG_NET_ETHERNET=y
540# CONFIG_IBM_NEW_EMAC_RGMII is not set 526# CONFIG_IBM_NEW_EMAC_RGMII is not set
541# CONFIG_IBM_NEW_EMAC_TAH is not set 527# CONFIG_IBM_NEW_EMAC_TAH is not set
542# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 528# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
529# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
530# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
531# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
543# CONFIG_B44 is not set 532# CONFIG_B44 is not set
544# CONFIG_NETDEV_1000 is not set 533# CONFIG_NETDEV_1000 is not set
545# CONFIG_NETDEV_10000 is not set 534# CONFIG_NETDEV_10000 is not set
@@ -609,6 +598,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
609CONFIG_MOUSE_PS2_SYNAPTICS=y 598CONFIG_MOUSE_PS2_SYNAPTICS=y
610CONFIG_MOUSE_PS2_LIFEBOOK=y 599CONFIG_MOUSE_PS2_LIFEBOOK=y
611CONFIG_MOUSE_PS2_TRACKPOINT=y 600CONFIG_MOUSE_PS2_TRACKPOINT=y
601# CONFIG_MOUSE_PS2_ELANTECH is not set
612# CONFIG_MOUSE_PS2_TOUCHKIT is not set 602# CONFIG_MOUSE_PS2_TOUCHKIT is not set
613CONFIG_MOUSE_SERIAL=m 603CONFIG_MOUSE_SERIAL=m
614# CONFIG_MOUSE_VSXXXAA is not set 604# CONFIG_MOUSE_VSXXXAA is not set
@@ -663,11 +653,11 @@ CONFIG_GEN_RTC_X=y
663# CONFIG_THERMAL is not set 653# CONFIG_THERMAL is not set
664# CONFIG_THERMAL_HWMON is not set 654# CONFIG_THERMAL_HWMON is not set
665# CONFIG_WATCHDOG is not set 655# CONFIG_WATCHDOG is not set
656CONFIG_SSB_POSSIBLE=y
666 657
667# 658#
668# Sonics Silicon Backplane 659# Sonics Silicon Backplane
669# 660#
670CONFIG_SSB_POSSIBLE=y
671# CONFIG_SSB is not set 661# CONFIG_SSB is not set
672 662
673# 663#
@@ -677,6 +667,7 @@ CONFIG_SSB_POSSIBLE=y
677# CONFIG_MFD_SM501 is not set 667# CONFIG_MFD_SM501 is not set
678# CONFIG_HTC_PASIC3 is not set 668# CONFIG_HTC_PASIC3 is not set
679# CONFIG_MFD_TMIO is not set 669# CONFIG_MFD_TMIO is not set
670# CONFIG_REGULATOR is not set
680 671
681# 672#
682# Multimedia devices 673# Multimedia devices
@@ -702,6 +693,7 @@ CONFIG_SSB_POSSIBLE=y
702CONFIG_FB=y 693CONFIG_FB=y
703# CONFIG_FIRMWARE_EDID is not set 694# CONFIG_FIRMWARE_EDID is not set
704# CONFIG_FB_DDC is not set 695# CONFIG_FB_DDC is not set
696# CONFIG_FB_BOOT_VESA_SUPPORT is not set
705CONFIG_FB_CFB_FILLRECT=y 697CONFIG_FB_CFB_FILLRECT=y
706# CONFIG_FB_CFB_COPYAREA is not set 698# CONFIG_FB_CFB_COPYAREA is not set
707CONFIG_FB_CFB_IMAGEBLIT=y 699CONFIG_FB_CFB_IMAGEBLIT=y
@@ -724,6 +716,8 @@ CONFIG_FB_APOLLO=y
724# CONFIG_FB_UVESA is not set 716# CONFIG_FB_UVESA is not set
725# CONFIG_FB_S1D13XXX is not set 717# CONFIG_FB_S1D13XXX is not set
726# CONFIG_FB_VIRTUAL is not set 718# CONFIG_FB_VIRTUAL is not set
719# CONFIG_FB_METRONOME is not set
720# CONFIG_FB_MB862XX is not set
727# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 721# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
728 722
729# 723#
@@ -750,6 +744,12 @@ CONFIG_HID_SUPPORT=y
750CONFIG_HID=m 744CONFIG_HID=m
751# CONFIG_HID_DEBUG is not set 745# CONFIG_HID_DEBUG is not set
752CONFIG_HIDRAW=y 746CONFIG_HIDRAW=y
747# CONFIG_HID_PID is not set
748
749#
750# Special HID drivers
751#
752CONFIG_HID_COMPAT=y
753# CONFIG_USB_SUPPORT is not set 753# CONFIG_USB_SUPPORT is not set
754# CONFIG_MMC is not set 754# CONFIG_MMC is not set
755# CONFIG_MEMSTICK is not set 755# CONFIG_MEMSTICK is not set
@@ -758,6 +758,8 @@ CONFIG_HIDRAW=y
758# CONFIG_RTC_CLASS is not set 758# CONFIG_RTC_CLASS is not set
759# CONFIG_DMADEVICES is not set 759# CONFIG_DMADEVICES is not set
760# CONFIG_UIO is not set 760# CONFIG_UIO is not set
761# CONFIG_STAGING is not set
762CONFIG_STAGING_EXCLUDE_BUILD=y
761 763
762# 764#
763# Character devices 765# Character devices
@@ -773,8 +775,9 @@ CONFIG_EXT2_FS=y
773# CONFIG_EXT2_FS_XIP is not set 775# CONFIG_EXT2_FS_XIP is not set
774CONFIG_EXT3_FS=y 776CONFIG_EXT3_FS=y
775# CONFIG_EXT3_FS_XATTR is not set 777# CONFIG_EXT3_FS_XATTR is not set
776# CONFIG_EXT4DEV_FS is not set 778# CONFIG_EXT4_FS is not set
777CONFIG_JBD=y 779CONFIG_JBD=y
780CONFIG_JBD2=m
778CONFIG_REISERFS_FS=m 781CONFIG_REISERFS_FS=m
779# CONFIG_REISERFS_CHECK is not set 782# CONFIG_REISERFS_CHECK is not set
780# CONFIG_REISERFS_PROC_INFO is not set 783# CONFIG_REISERFS_PROC_INFO is not set
@@ -785,6 +788,7 @@ CONFIG_JFS_FS=m
785# CONFIG_JFS_DEBUG is not set 788# CONFIG_JFS_DEBUG is not set
786# CONFIG_JFS_STATISTICS is not set 789# CONFIG_JFS_STATISTICS is not set
787# CONFIG_FS_POSIX_ACL is not set 790# CONFIG_FS_POSIX_ACL is not set
791CONFIG_FILE_LOCKING=y
788CONFIG_XFS_FS=m 792CONFIG_XFS_FS=m
789# CONFIG_XFS_QUOTA is not set 793# CONFIG_XFS_QUOTA is not set
790# CONFIG_XFS_POSIX_ACL is not set 794# CONFIG_XFS_POSIX_ACL is not set
@@ -796,6 +800,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
796# CONFIG_OCFS2_FS_STATS is not set 800# CONFIG_OCFS2_FS_STATS is not set
797# CONFIG_OCFS2_DEBUG_MASKLOG is not set 801# CONFIG_OCFS2_DEBUG_MASKLOG is not set
798# CONFIG_OCFS2_DEBUG_FS is not set 802# CONFIG_OCFS2_DEBUG_FS is not set
803# CONFIG_OCFS2_COMPAT_JBD is not set
799CONFIG_DNOTIFY=y 804CONFIG_DNOTIFY=y
800CONFIG_INOTIFY=y 805CONFIG_INOTIFY=y
801CONFIG_INOTIFY_USER=y 806CONFIG_INOTIFY_USER=y
@@ -834,6 +839,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
834CONFIG_PROC_FS=y 839CONFIG_PROC_FS=y
835CONFIG_PROC_KCORE=y 840CONFIG_PROC_KCORE=y
836CONFIG_PROC_SYSCTL=y 841CONFIG_PROC_SYSCTL=y
842CONFIG_PROC_PAGE_MONITOR=y
837CONFIG_SYSFS=y 843CONFIG_SYSFS=y
838CONFIG_TMPFS=y 844CONFIG_TMPFS=y
839# CONFIG_TMPFS_POSIX_ACL is not set 845# CONFIG_TMPFS_POSIX_ACL is not set
@@ -877,6 +883,7 @@ CONFIG_EXPORTFS=m
877CONFIG_NFS_COMMON=y 883CONFIG_NFS_COMMON=y
878CONFIG_SUNRPC=y 884CONFIG_SUNRPC=y
879CONFIG_SUNRPC_GSS=y 885CONFIG_SUNRPC_GSS=y
886# CONFIG_SUNRPC_REGISTER_V4 is not set
880CONFIG_RPCSEC_GSS_KRB5=y 887CONFIG_RPCSEC_GSS_KRB5=y
881# CONFIG_RPCSEC_GSS_SPKM3 is not set 888# CONFIG_RPCSEC_GSS_SPKM3 is not set
882CONFIG_SMB_FS=m 889CONFIG_SMB_FS=m
@@ -949,7 +956,13 @@ CONFIG_MAGIC_SYSRQ=y
949# CONFIG_DEBUG_KERNEL is not set 956# CONFIG_DEBUG_KERNEL is not set
950CONFIG_DEBUG_BUGVERBOSE=y 957CONFIG_DEBUG_BUGVERBOSE=y
951CONFIG_DEBUG_MEMORY_INIT=y 958CONFIG_DEBUG_MEMORY_INIT=y
959# CONFIG_RCU_CPU_STALL_DETECTOR is not set
952CONFIG_SYSCTL_SYSCALL_CHECK=y 960CONFIG_SYSCTL_SYSCALL_CHECK=y
961
962#
963# Tracers
964#
965# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
953# CONFIG_SAMPLES is not set 966# CONFIG_SAMPLES is not set
954 967
955# 968#
@@ -957,6 +970,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
957# 970#
958# CONFIG_KEYS is not set 971# CONFIG_KEYS is not set
959# CONFIG_SECURITY is not set 972# CONFIG_SECURITY is not set
973# CONFIG_SECURITYFS is not set
960# CONFIG_SECURITY_FILE_CAPABILITIES is not set 974# CONFIG_SECURITY_FILE_CAPABILITIES is not set
961CONFIG_XOR_BLOCKS=m 975CONFIG_XOR_BLOCKS=m
962CONFIG_ASYNC_CORE=m 976CONFIG_ASYNC_CORE=m
@@ -967,10 +981,12 @@ CONFIG_CRYPTO=y
967# 981#
968# Crypto core or helper 982# Crypto core or helper
969# 983#
984# CONFIG_CRYPTO_FIPS is not set
970CONFIG_CRYPTO_ALGAPI=y 985CONFIG_CRYPTO_ALGAPI=y
971CONFIG_CRYPTO_AEAD=m 986CONFIG_CRYPTO_AEAD=y
972CONFIG_CRYPTO_BLKCIPHER=y 987CONFIG_CRYPTO_BLKCIPHER=y
973CONFIG_CRYPTO_HASH=y 988CONFIG_CRYPTO_HASH=y
989CONFIG_CRYPTO_RNG=y
974CONFIG_CRYPTO_MANAGER=y 990CONFIG_CRYPTO_MANAGER=y
975CONFIG_CRYPTO_GF128MUL=m 991CONFIG_CRYPTO_GF128MUL=m
976CONFIG_CRYPTO_NULL=m 992CONFIG_CRYPTO_NULL=m
@@ -1044,14 +1060,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1044# 1060#
1045CONFIG_CRYPTO_DEFLATE=m 1061CONFIG_CRYPTO_DEFLATE=m
1046CONFIG_CRYPTO_LZO=m 1062CONFIG_CRYPTO_LZO=m
1063
1064#
1065# Random Number Generation
1066#
1067# CONFIG_CRYPTO_ANSI_CPRNG is not set
1047# CONFIG_CRYPTO_HW is not set 1068# CONFIG_CRYPTO_HW is not set
1048 1069
1049# 1070#
1050# Library routines 1071# Library routines
1051# 1072#
1052CONFIG_BITREVERSE=y 1073CONFIG_BITREVERSE=y
1053# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1054# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1055CONFIG_CRC_CCITT=m 1074CONFIG_CRC_CCITT=m
1056CONFIG_CRC16=m 1075CONFIG_CRC16=m
1057CONFIG_CRC_T10DIF=y 1076CONFIG_CRC_T10DIF=y
diff --git a/arch/m68k/configs/atari_defconfig b/arch/m68k/configs/atari_defconfig
index 654c5acb9e86..a594a1d47b62 100644
--- a/arch/m68k/configs/atari_defconfig
+++ b/arch/m68k/configs/atari_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:02 2008 4# Tue Dec 2 20:27:44 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16# CONFIG_NO_DMA is not set 16# CONFIG_NO_DMA is not set
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,11 +105,11 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
122# CONFIG_SUN3 is not set
123# CONFIG_AMIGA is not set 113# CONFIG_AMIGA is not set
124CONFIG_ATARI=y 114CONFIG_ATARI=y
125# CONFIG_MAC is not set 115# CONFIG_MAC is not set
@@ -148,19 +138,21 @@ CONFIG_DISCONTIGMEM_MANUAL=y
148CONFIG_DISCONTIGMEM=y 138CONFIG_DISCONTIGMEM=y
149CONFIG_FLAT_NODE_MEM_MAP=y 139CONFIG_FLAT_NODE_MEM_MAP=y
150CONFIG_NEED_MULTIPLE_NODES=y 140CONFIG_NEED_MULTIPLE_NODES=y
151# CONFIG_SPARSEMEM_STATIC is not set
152# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
153CONFIG_PAGEFLAGS_EXTENDED=y 141CONFIG_PAGEFLAGS_EXTENDED=y
154CONFIG_SPLIT_PTLOCK_CPUS=4 142CONFIG_SPLIT_PTLOCK_CPUS=4
155# CONFIG_RESOURCES_64BIT is not set 143# CONFIG_RESOURCES_64BIT is not set
144# CONFIG_PHYS_ADDR_T_64BIT is not set
156CONFIG_ZONE_DMA_FLAG=1 145CONFIG_ZONE_DMA_FLAG=1
157CONFIG_BOUNCE=y 146CONFIG_BOUNCE=y
158CONFIG_VIRT_TO_BUS=y 147CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y
159 149
160# 150#
161# General setup 151# General setup
162# 152#
163CONFIG_BINFMT_ELF=y 153CONFIG_BINFMT_ELF=y
154# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
155CONFIG_HAVE_AOUT=y
164CONFIG_BINFMT_AOUT=m 156CONFIG_BINFMT_AOUT=m
165CONFIG_BINFMT_MISC=m 157CONFIG_BINFMT_MISC=m
166CONFIG_STRAM_PROC=y 158CONFIG_STRAM_PROC=y
@@ -208,7 +200,6 @@ CONFIG_INET_TCP_DIAG=m
208CONFIG_TCP_CONG_CUBIC=y 200CONFIG_TCP_CONG_CUBIC=y
209CONFIG_DEFAULT_TCP_CONG="cubic" 201CONFIG_DEFAULT_TCP_CONG="cubic"
210# CONFIG_TCP_MD5SIG is not set 202# CONFIG_TCP_MD5SIG is not set
211# CONFIG_IP_VS is not set
212CONFIG_IPV6=m 203CONFIG_IPV6=m
213CONFIG_IPV6_PRIVACY=y 204CONFIG_IPV6_PRIVACY=y
214CONFIG_IPV6_ROUTER_PREF=y 205CONFIG_IPV6_ROUTER_PREF=y
@@ -258,13 +249,14 @@ CONFIG_NF_CONNTRACK_SANE=m
258CONFIG_NF_CONNTRACK_SIP=m 249CONFIG_NF_CONNTRACK_SIP=m
259CONFIG_NF_CONNTRACK_TFTP=m 250CONFIG_NF_CONNTRACK_TFTP=m
260# CONFIG_NF_CT_NETLINK is not set 251# CONFIG_NF_CT_NETLINK is not set
252# CONFIG_NETFILTER_TPROXY is not set
261CONFIG_NETFILTER_XTABLES=m 253CONFIG_NETFILTER_XTABLES=m
262CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 254CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
263CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 255CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
264CONFIG_NETFILTER_XT_TARGET_DSCP=m 256CONFIG_NETFILTER_XT_TARGET_DSCP=m
265CONFIG_NETFILTER_XT_TARGET_MARK=m 257CONFIG_NETFILTER_XT_TARGET_MARK=m
266CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
267CONFIG_NETFILTER_XT_TARGET_NFLOG=m 258CONFIG_NETFILTER_XT_TARGET_NFLOG=m
259CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
268CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 260CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
269CONFIG_NETFILTER_XT_TARGET_RATEEST=m 261CONFIG_NETFILTER_XT_TARGET_RATEEST=m
270CONFIG_NETFILTER_XT_TARGET_TRACE=m 262CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -278,19 +270,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
278CONFIG_NETFILTER_XT_MATCH_DCCP=m 270CONFIG_NETFILTER_XT_MATCH_DCCP=m
279CONFIG_NETFILTER_XT_MATCH_DSCP=m 271CONFIG_NETFILTER_XT_MATCH_DSCP=m
280CONFIG_NETFILTER_XT_MATCH_ESP=m 272CONFIG_NETFILTER_XT_MATCH_ESP=m
273CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
281CONFIG_NETFILTER_XT_MATCH_HELPER=m 274CONFIG_NETFILTER_XT_MATCH_HELPER=m
282CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 275CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
283CONFIG_NETFILTER_XT_MATCH_LENGTH=m 276CONFIG_NETFILTER_XT_MATCH_LENGTH=m
284CONFIG_NETFILTER_XT_MATCH_LIMIT=m 277CONFIG_NETFILTER_XT_MATCH_LIMIT=m
285CONFIG_NETFILTER_XT_MATCH_MAC=m 278CONFIG_NETFILTER_XT_MATCH_MAC=m
286CONFIG_NETFILTER_XT_MATCH_MARK=m 279CONFIG_NETFILTER_XT_MATCH_MARK=m
280CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
287CONFIG_NETFILTER_XT_MATCH_OWNER=m 281CONFIG_NETFILTER_XT_MATCH_OWNER=m
288CONFIG_NETFILTER_XT_MATCH_POLICY=m 282CONFIG_NETFILTER_XT_MATCH_POLICY=m
289CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
290CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 283CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
291CONFIG_NETFILTER_XT_MATCH_QUOTA=m 284CONFIG_NETFILTER_XT_MATCH_QUOTA=m
292CONFIG_NETFILTER_XT_MATCH_RATEEST=m 285CONFIG_NETFILTER_XT_MATCH_RATEEST=m
293CONFIG_NETFILTER_XT_MATCH_REALM=m 286CONFIG_NETFILTER_XT_MATCH_REALM=m
287CONFIG_NETFILTER_XT_MATCH_RECENT=m
288# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
294CONFIG_NETFILTER_XT_MATCH_SCTP=m 289CONFIG_NETFILTER_XT_MATCH_SCTP=m
295CONFIG_NETFILTER_XT_MATCH_STATE=m 290CONFIG_NETFILTER_XT_MATCH_STATE=m
296CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 291CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -298,20 +293,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
298CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 293CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
299CONFIG_NETFILTER_XT_MATCH_TIME=m 294CONFIG_NETFILTER_XT_MATCH_TIME=m
300CONFIG_NETFILTER_XT_MATCH_U32=m 295CONFIG_NETFILTER_XT_MATCH_U32=m
301CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 296# CONFIG_IP_VS is not set
302 297
303# 298#
304# IP: Netfilter Configuration 299# IP: Netfilter Configuration
305# 300#
301CONFIG_NF_DEFRAG_IPV4=m
306CONFIG_NF_CONNTRACK_IPV4=m 302CONFIG_NF_CONNTRACK_IPV4=m
307CONFIG_NF_CONNTRACK_PROC_COMPAT=y 303CONFIG_NF_CONNTRACK_PROC_COMPAT=y
308CONFIG_IP_NF_QUEUE=m 304CONFIG_IP_NF_QUEUE=m
309CONFIG_IP_NF_IPTABLES=m 305CONFIG_IP_NF_IPTABLES=m
310CONFIG_IP_NF_MATCH_RECENT=m 306CONFIG_IP_NF_MATCH_ADDRTYPE=m
311CONFIG_IP_NF_MATCH_ECN=m
312CONFIG_IP_NF_MATCH_AH=m 307CONFIG_IP_NF_MATCH_AH=m
308CONFIG_IP_NF_MATCH_ECN=m
313CONFIG_IP_NF_MATCH_TTL=m 309CONFIG_IP_NF_MATCH_TTL=m
314CONFIG_IP_NF_MATCH_ADDRTYPE=m
315CONFIG_IP_NF_FILTER=m 310CONFIG_IP_NF_FILTER=m
316CONFIG_IP_NF_TARGET_REJECT=m 311CONFIG_IP_NF_TARGET_REJECT=m
317CONFIG_IP_NF_TARGET_LOG=m 312CONFIG_IP_NF_TARGET_LOG=m
@@ -319,8 +314,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
319CONFIG_NF_NAT=m 314CONFIG_NF_NAT=m
320CONFIG_NF_NAT_NEEDED=y 315CONFIG_NF_NAT_NEEDED=y
321CONFIG_IP_NF_TARGET_MASQUERADE=m 316CONFIG_IP_NF_TARGET_MASQUERADE=m
322CONFIG_IP_NF_TARGET_REDIRECT=m
323CONFIG_IP_NF_TARGET_NETMAP=m 317CONFIG_IP_NF_TARGET_NETMAP=m
318CONFIG_IP_NF_TARGET_REDIRECT=m
324CONFIG_NF_NAT_SNMP_BASIC=m 319CONFIG_NF_NAT_SNMP_BASIC=m
325CONFIG_NF_NAT_PROTO_GRE=m 320CONFIG_NF_NAT_PROTO_GRE=m
326CONFIG_NF_NAT_PROTO_UDPLITE=m 321CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -333,9 +328,9 @@ CONFIG_NF_NAT_PPTP=m
333CONFIG_NF_NAT_H323=m 328CONFIG_NF_NAT_H323=m
334CONFIG_NF_NAT_SIP=m 329CONFIG_NF_NAT_SIP=m
335CONFIG_IP_NF_MANGLE=m 330CONFIG_IP_NF_MANGLE=m
331CONFIG_IP_NF_TARGET_CLUSTERIP=m
336CONFIG_IP_NF_TARGET_ECN=m 332CONFIG_IP_NF_TARGET_ECN=m
337CONFIG_IP_NF_TARGET_TTL=m 333CONFIG_IP_NF_TARGET_TTL=m
338CONFIG_IP_NF_TARGET_CLUSTERIP=m
339CONFIG_IP_NF_RAW=m 334CONFIG_IP_NF_RAW=m
340CONFIG_IP_NF_ARPTABLES=m 335CONFIG_IP_NF_ARPTABLES=m
341CONFIG_IP_NF_ARPFILTER=m 336CONFIG_IP_NF_ARPFILTER=m
@@ -347,16 +342,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
347CONFIG_NF_CONNTRACK_IPV6=m 342CONFIG_NF_CONNTRACK_IPV6=m
348CONFIG_IP6_NF_QUEUE=m 343CONFIG_IP6_NF_QUEUE=m
349CONFIG_IP6_NF_IPTABLES=m 344CONFIG_IP6_NF_IPTABLES=m
350CONFIG_IP6_NF_MATCH_RT=m 345CONFIG_IP6_NF_MATCH_AH=m
351CONFIG_IP6_NF_MATCH_OPTS=m 346CONFIG_IP6_NF_MATCH_EUI64=m
352CONFIG_IP6_NF_MATCH_FRAG=m 347CONFIG_IP6_NF_MATCH_FRAG=m
348CONFIG_IP6_NF_MATCH_OPTS=m
353CONFIG_IP6_NF_MATCH_HL=m 349CONFIG_IP6_NF_MATCH_HL=m
354CONFIG_IP6_NF_MATCH_IPV6HEADER=m 350CONFIG_IP6_NF_MATCH_IPV6HEADER=m
355CONFIG_IP6_NF_MATCH_AH=m
356CONFIG_IP6_NF_MATCH_MH=m 351CONFIG_IP6_NF_MATCH_MH=m
357CONFIG_IP6_NF_MATCH_EUI64=m 352CONFIG_IP6_NF_MATCH_RT=m
358CONFIG_IP6_NF_FILTER=m
359CONFIG_IP6_NF_TARGET_LOG=m 353CONFIG_IP6_NF_TARGET_LOG=m
354CONFIG_IP6_NF_FILTER=m
360CONFIG_IP6_NF_TARGET_REJECT=m 355CONFIG_IP6_NF_TARGET_REJECT=m
361CONFIG_IP6_NF_MANGLE=m 356CONFIG_IP6_NF_MANGLE=m
362CONFIG_IP6_NF_TARGET_HL=m 357CONFIG_IP6_NF_TARGET_HL=m
@@ -383,6 +378,7 @@ CONFIG_SCTP_HMAC_MD5=y
383# CONFIG_TIPC is not set 378# CONFIG_TIPC is not set
384# CONFIG_ATM is not set 379# CONFIG_ATM is not set
385# CONFIG_BRIDGE is not set 380# CONFIG_BRIDGE is not set
381# CONFIG_NET_DSA is not set
386# CONFIG_VLAN_8021Q is not set 382# CONFIG_VLAN_8021Q is not set
387# CONFIG_DECNET is not set 383# CONFIG_DECNET is not set
388CONFIG_LLC=m 384CONFIG_LLC=m
@@ -406,19 +402,8 @@ CONFIG_NET_CLS_ROUTE=y
406# CONFIG_IRDA is not set 402# CONFIG_IRDA is not set
407# CONFIG_BT is not set 403# CONFIG_BT is not set
408# CONFIG_AF_RXRPC is not set 404# CONFIG_AF_RXRPC is not set
409 405# CONFIG_PHONET is not set
410# 406# CONFIG_WIRELESS is not set
411# Wireless
412#
413# CONFIG_CFG80211 is not set
414CONFIG_WIRELESS_EXT=y
415# CONFIG_WIRELESS_EXT_SYSFS is not set
416# CONFIG_MAC80211 is not set
417CONFIG_IEEE80211=m
418# CONFIG_IEEE80211_DEBUG is not set
419CONFIG_IEEE80211_CRYPT_WEP=m
420CONFIG_IEEE80211_CRYPT_CCMP=m
421CONFIG_IEEE80211_CRYPT_TKIP=m
422# CONFIG_RFKILL is not set 407# CONFIG_RFKILL is not set
423# CONFIG_NET_9P is not set 408# CONFIG_NET_9P is not set
424 409
@@ -462,21 +447,20 @@ CONFIG_ATA_OVER_ETH=m
462CONFIG_MISC_DEVICES=y 447CONFIG_MISC_DEVICES=y
463# CONFIG_EEPROM_93CX6 is not set 448# CONFIG_EEPROM_93CX6 is not set
464# CONFIG_ENCLOSURE_SERVICES is not set 449# CONFIG_ENCLOSURE_SERVICES is not set
450# CONFIG_C2PORT is not set
465CONFIG_HAVE_IDE=y 451CONFIG_HAVE_IDE=y
466CONFIG_IDE=y 452CONFIG_IDE=y
467CONFIG_BLK_DEV_IDE=y
468 453
469# 454#
470# Please see Documentation/ide/ide.txt for help/info on IDE drives 455# Please see Documentation/ide/ide.txt for help/info on IDE drives
471# 456#
472CONFIG_IDE_ATAPI=y
473# CONFIG_BLK_DEV_IDE_SATA is not set 457# CONFIG_BLK_DEV_IDE_SATA is not set
474CONFIG_BLK_DEV_IDEDISK=y 458CONFIG_IDE_GD=y
475# CONFIG_IDEDISK_MULTI_MODE is not set 459CONFIG_IDE_GD_ATA=y
460# CONFIG_IDE_GD_ATAPI is not set
476CONFIG_BLK_DEV_IDECD=y 461CONFIG_BLK_DEV_IDECD=y
477CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 462CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
478# CONFIG_BLK_DEV_IDETAPE is not set 463# CONFIG_BLK_DEV_IDETAPE is not set
479CONFIG_BLK_DEV_IDEFLOPPY=m
480# CONFIG_BLK_DEV_IDESCSI is not set 464# CONFIG_BLK_DEV_IDESCSI is not set
481# CONFIG_IDE_TASK_IOCTL is not set 465# CONFIG_IDE_TASK_IOCTL is not set
482CONFIG_IDE_PROC_FS=y 466CONFIG_IDE_PROC_FS=y
@@ -565,12 +549,15 @@ CONFIG_EQUALIZER=m
565CONFIG_VETH=m 549CONFIG_VETH=m
566# CONFIG_PHYLIB is not set 550# CONFIG_PHYLIB is not set
567CONFIG_NET_ETHERNET=y 551CONFIG_NET_ETHERNET=y
568CONFIG_MII=m 552CONFIG_MII=y
569CONFIG_ATARILANCE=m 553CONFIG_ATARILANCE=m
570# CONFIG_IBM_NEW_EMAC_ZMII is not set 554# CONFIG_IBM_NEW_EMAC_ZMII is not set
571# CONFIG_IBM_NEW_EMAC_RGMII is not set 555# CONFIG_IBM_NEW_EMAC_RGMII is not set
572# CONFIG_IBM_NEW_EMAC_TAH is not set 556# CONFIG_IBM_NEW_EMAC_TAH is not set
573# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 557# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
558# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
559# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
560# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
574# CONFIG_B44 is not set 561# CONFIG_B44 is not set
575# CONFIG_NET_POCKET is not set 562# CONFIG_NET_POCKET is not set
576# CONFIG_NETDEV_1000 is not set 563# CONFIG_NETDEV_1000 is not set
@@ -644,6 +631,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
644CONFIG_MOUSE_PS2_SYNAPTICS=y 631CONFIG_MOUSE_PS2_SYNAPTICS=y
645CONFIG_MOUSE_PS2_LIFEBOOK=y 632CONFIG_MOUSE_PS2_LIFEBOOK=y
646CONFIG_MOUSE_PS2_TRACKPOINT=y 633CONFIG_MOUSE_PS2_TRACKPOINT=y
634# CONFIG_MOUSE_PS2_ELANTECH is not set
647# CONFIG_MOUSE_PS2_TOUCHKIT is not set 635# CONFIG_MOUSE_PS2_TOUCHKIT is not set
648# CONFIG_MOUSE_SERIAL is not set 636# CONFIG_MOUSE_SERIAL is not set
649CONFIG_MOUSE_ATARI=m 637CONFIG_MOUSE_ATARI=m
@@ -706,11 +694,11 @@ CONFIG_GEN_RTC_X=y
706# CONFIG_THERMAL is not set 694# CONFIG_THERMAL is not set
707# CONFIG_THERMAL_HWMON is not set 695# CONFIG_THERMAL_HWMON is not set
708# CONFIG_WATCHDOG is not set 696# CONFIG_WATCHDOG is not set
697CONFIG_SSB_POSSIBLE=y
709 698
710# 699#
711# Sonics Silicon Backplane 700# Sonics Silicon Backplane
712# 701#
713CONFIG_SSB_POSSIBLE=y
714# CONFIG_SSB is not set 702# CONFIG_SSB is not set
715 703
716# 704#
@@ -720,6 +708,7 @@ CONFIG_SSB_POSSIBLE=y
720# CONFIG_MFD_SM501 is not set 708# CONFIG_MFD_SM501 is not set
721# CONFIG_HTC_PASIC3 is not set 709# CONFIG_HTC_PASIC3 is not set
722# CONFIG_MFD_TMIO is not set 710# CONFIG_MFD_TMIO is not set
711# CONFIG_REGULATOR is not set
723 712
724# 713#
725# Multimedia devices 714# Multimedia devices
@@ -745,6 +734,7 @@ CONFIG_SSB_POSSIBLE=y
745CONFIG_FB=y 734CONFIG_FB=y
746# CONFIG_FIRMWARE_EDID is not set 735# CONFIG_FIRMWARE_EDID is not set
747# CONFIG_FB_DDC is not set 736# CONFIG_FB_DDC is not set
737# CONFIG_FB_BOOT_VESA_SUPPORT is not set
748CONFIG_FB_CFB_FILLRECT=y 738CONFIG_FB_CFB_FILLRECT=y
749CONFIG_FB_CFB_COPYAREA=y 739CONFIG_FB_CFB_COPYAREA=y
750CONFIG_FB_CFB_IMAGEBLIT=y 740CONFIG_FB_CFB_IMAGEBLIT=y
@@ -768,6 +758,8 @@ CONFIG_FB_ATARI=y
768# CONFIG_FB_S1D13XXX is not set 758# CONFIG_FB_S1D13XXX is not set
769# CONFIG_FB_ATY is not set 759# CONFIG_FB_ATY is not set
770# CONFIG_FB_VIRTUAL is not set 760# CONFIG_FB_VIRTUAL is not set
761# CONFIG_FB_METRONOME is not set
762# CONFIG_FB_MB862XX is not set
771# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 763# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
772 764
773# 765#
@@ -790,12 +782,19 @@ CONFIG_LOGO_LINUX_MONO=y
790CONFIG_LOGO_LINUX_VGA16=y 782CONFIG_LOGO_LINUX_VGA16=y
791CONFIG_LOGO_LINUX_CLUT224=y 783CONFIG_LOGO_LINUX_CLUT224=y
792CONFIG_SOUND=m 784CONFIG_SOUND=m
785CONFIG_SOUND_OSS_CORE=y
793CONFIG_DMASOUND_ATARI=m 786CONFIG_DMASOUND_ATARI=m
794CONFIG_DMASOUND=m 787CONFIG_DMASOUND=m
795CONFIG_HID_SUPPORT=y 788CONFIG_HID_SUPPORT=y
796CONFIG_HID=m 789CONFIG_HID=m
797# CONFIG_HID_DEBUG is not set 790# CONFIG_HID_DEBUG is not set
798CONFIG_HIDRAW=y 791CONFIG_HIDRAW=y
792# CONFIG_HID_PID is not set
793
794#
795# Special HID drivers
796#
797CONFIG_HID_COMPAT=y
799# CONFIG_USB_SUPPORT is not set 798# CONFIG_USB_SUPPORT is not set
800# CONFIG_MMC is not set 799# CONFIG_MMC is not set
801# CONFIG_MEMSTICK is not set 800# CONFIG_MEMSTICK is not set
@@ -805,6 +804,8 @@ CONFIG_HIDRAW=y
805# CONFIG_DMADEVICES is not set 804# CONFIG_DMADEVICES is not set
806# CONFIG_AUXDISPLAY is not set 805# CONFIG_AUXDISPLAY is not set
807# CONFIG_UIO is not set 806# CONFIG_UIO is not set
807# CONFIG_STAGING is not set
808CONFIG_STAGING_EXCLUDE_BUILD=y
808 809
809# 810#
810# Character devices 811# Character devices
@@ -821,10 +822,9 @@ CONFIG_EXT2_FS=y
821# CONFIG_EXT2_FS_XIP is not set 822# CONFIG_EXT2_FS_XIP is not set
822CONFIG_EXT3_FS=y 823CONFIG_EXT3_FS=y
823# CONFIG_EXT3_FS_XATTR is not set 824# CONFIG_EXT3_FS_XATTR is not set
824CONFIG_EXT4DEV_FS=y 825# CONFIG_EXT4_FS is not set
825# CONFIG_EXT4DEV_FS_XATTR is not set
826CONFIG_JBD=y 826CONFIG_JBD=y
827CONFIG_JBD2=y 827CONFIG_JBD2=m
828CONFIG_REISERFS_FS=m 828CONFIG_REISERFS_FS=m
829# CONFIG_REISERFS_CHECK is not set 829# CONFIG_REISERFS_CHECK is not set
830# CONFIG_REISERFS_PROC_INFO is not set 830# CONFIG_REISERFS_PROC_INFO is not set
@@ -835,6 +835,7 @@ CONFIG_JFS_FS=m
835# CONFIG_JFS_DEBUG is not set 835# CONFIG_JFS_DEBUG is not set
836# CONFIG_JFS_STATISTICS is not set 836# CONFIG_JFS_STATISTICS is not set
837# CONFIG_FS_POSIX_ACL is not set 837# CONFIG_FS_POSIX_ACL is not set
838CONFIG_FILE_LOCKING=y
838CONFIG_XFS_FS=m 839CONFIG_XFS_FS=m
839# CONFIG_XFS_QUOTA is not set 840# CONFIG_XFS_QUOTA is not set
840# CONFIG_XFS_POSIX_ACL is not set 841# CONFIG_XFS_POSIX_ACL is not set
@@ -846,6 +847,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
846# CONFIG_OCFS2_FS_STATS is not set 847# CONFIG_OCFS2_FS_STATS is not set
847# CONFIG_OCFS2_DEBUG_MASKLOG is not set 848# CONFIG_OCFS2_DEBUG_MASKLOG is not set
848# CONFIG_OCFS2_DEBUG_FS is not set 849# CONFIG_OCFS2_DEBUG_FS is not set
850# CONFIG_OCFS2_COMPAT_JBD is not set
849CONFIG_DNOTIFY=y 851CONFIG_DNOTIFY=y
850CONFIG_INOTIFY=y 852CONFIG_INOTIFY=y
851CONFIG_INOTIFY_USER=y 853CONFIG_INOTIFY_USER=y
@@ -884,6 +886,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
884CONFIG_PROC_FS=y 886CONFIG_PROC_FS=y
885CONFIG_PROC_KCORE=y 887CONFIG_PROC_KCORE=y
886CONFIG_PROC_SYSCTL=y 888CONFIG_PROC_SYSCTL=y
889CONFIG_PROC_PAGE_MONITOR=y
887CONFIG_SYSFS=y 890CONFIG_SYSFS=y
888CONFIG_TMPFS=y 891CONFIG_TMPFS=y
889# CONFIG_TMPFS_POSIX_ACL is not set 892# CONFIG_TMPFS_POSIX_ACL is not set
@@ -925,6 +928,7 @@ CONFIG_LOCKD_V4=y
925CONFIG_EXPORTFS=m 928CONFIG_EXPORTFS=m
926CONFIG_NFS_COMMON=y 929CONFIG_NFS_COMMON=y
927CONFIG_SUNRPC=m 930CONFIG_SUNRPC=m
931# CONFIG_SUNRPC_REGISTER_V4 is not set
928# CONFIG_RPCSEC_GSS_KRB5 is not set 932# CONFIG_RPCSEC_GSS_KRB5 is not set
929# CONFIG_RPCSEC_GSS_SPKM3 is not set 933# CONFIG_RPCSEC_GSS_SPKM3 is not set
930CONFIG_SMB_FS=m 934CONFIG_SMB_FS=m
@@ -998,7 +1002,13 @@ CONFIG_MAGIC_SYSRQ=y
998# CONFIG_DEBUG_KERNEL is not set 1002# CONFIG_DEBUG_KERNEL is not set
999CONFIG_DEBUG_BUGVERBOSE=y 1003CONFIG_DEBUG_BUGVERBOSE=y
1000CONFIG_DEBUG_MEMORY_INIT=y 1004CONFIG_DEBUG_MEMORY_INIT=y
1005# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1001CONFIG_SYSCTL_SYSCALL_CHECK=y 1006CONFIG_SYSCTL_SYSCALL_CHECK=y
1007
1008#
1009# Tracers
1010#
1011# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1002# CONFIG_SAMPLES is not set 1012# CONFIG_SAMPLES is not set
1003 1013
1004# 1014#
@@ -1006,6 +1016,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
1006# 1016#
1007# CONFIG_KEYS is not set 1017# CONFIG_KEYS is not set
1008# CONFIG_SECURITY is not set 1018# CONFIG_SECURITY is not set
1019# CONFIG_SECURITYFS is not set
1009# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1020# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1010CONFIG_XOR_BLOCKS=m 1021CONFIG_XOR_BLOCKS=m
1011CONFIG_ASYNC_CORE=m 1022CONFIG_ASYNC_CORE=m
@@ -1016,10 +1027,12 @@ CONFIG_CRYPTO=y
1016# 1027#
1017# Crypto core or helper 1028# Crypto core or helper
1018# 1029#
1030# CONFIG_CRYPTO_FIPS is not set
1019CONFIG_CRYPTO_ALGAPI=y 1031CONFIG_CRYPTO_ALGAPI=y
1020CONFIG_CRYPTO_AEAD=m 1032CONFIG_CRYPTO_AEAD=y
1021CONFIG_CRYPTO_BLKCIPHER=m 1033CONFIG_CRYPTO_BLKCIPHER=y
1022CONFIG_CRYPTO_HASH=y 1034CONFIG_CRYPTO_HASH=y
1035CONFIG_CRYPTO_RNG=y
1023CONFIG_CRYPTO_MANAGER=y 1036CONFIG_CRYPTO_MANAGER=y
1024CONFIG_CRYPTO_GF128MUL=m 1037CONFIG_CRYPTO_GF128MUL=m
1025CONFIG_CRYPTO_NULL=m 1038CONFIG_CRYPTO_NULL=m
@@ -1093,14 +1106,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1093# 1106#
1094CONFIG_CRYPTO_DEFLATE=m 1107CONFIG_CRYPTO_DEFLATE=m
1095CONFIG_CRYPTO_LZO=m 1108CONFIG_CRYPTO_LZO=m
1109
1110#
1111# Random Number Generation
1112#
1113# CONFIG_CRYPTO_ANSI_CPRNG is not set
1096# CONFIG_CRYPTO_HW is not set 1114# CONFIG_CRYPTO_HW is not set
1097 1115
1098# 1116#
1099# Library routines 1117# Library routines
1100# 1118#
1101CONFIG_BITREVERSE=y 1119CONFIG_BITREVERSE=y
1102# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1103# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1104CONFIG_CRC_CCITT=m 1120CONFIG_CRC_CCITT=m
1105CONFIG_CRC16=y 1121CONFIG_CRC16=y
1106CONFIG_CRC_T10DIF=y 1122CONFIG_CRC_T10DIF=y
diff --git a/arch/m68k/configs/bvme6000_defconfig b/arch/m68k/configs/bvme6000_defconfig
index 2e44af0fe54a..d3d9814a91de 100644
--- a/arch/m68k/configs/bvme6000_defconfig
+++ b/arch/m68k/configs/bvme6000_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:03 2008 4# Tue Dec 2 20:27:45 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16# CONFIG_NO_DMA is not set 16# CONFIG_NO_DMA is not set
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,11 +105,11 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
122# CONFIG_SUN3 is not set
123# CONFIG_AMIGA is not set 113# CONFIG_AMIGA is not set
124# CONFIG_ATARI is not set 114# CONFIG_ATARI is not set
125# CONFIG_MAC is not set 115# CONFIG_MAC is not set
@@ -151,19 +141,21 @@ CONFIG_DISCONTIGMEM_MANUAL=y
151CONFIG_DISCONTIGMEM=y 141CONFIG_DISCONTIGMEM=y
152CONFIG_FLAT_NODE_MEM_MAP=y 142CONFIG_FLAT_NODE_MEM_MAP=y
153CONFIG_NEED_MULTIPLE_NODES=y 143CONFIG_NEED_MULTIPLE_NODES=y
154# CONFIG_SPARSEMEM_STATIC is not set
155# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
156CONFIG_PAGEFLAGS_EXTENDED=y 144CONFIG_PAGEFLAGS_EXTENDED=y
157CONFIG_SPLIT_PTLOCK_CPUS=4 145CONFIG_SPLIT_PTLOCK_CPUS=4
158# CONFIG_RESOURCES_64BIT is not set 146# CONFIG_RESOURCES_64BIT is not set
147# CONFIG_PHYS_ADDR_T_64BIT is not set
159CONFIG_ZONE_DMA_FLAG=1 148CONFIG_ZONE_DMA_FLAG=1
160CONFIG_BOUNCE=y 149CONFIG_BOUNCE=y
161CONFIG_VIRT_TO_BUS=y 150CONFIG_VIRT_TO_BUS=y
151CONFIG_UNEVICTABLE_LRU=y
162 152
163# 153#
164# General setup 154# General setup
165# 155#
166CONFIG_BINFMT_ELF=y 156CONFIG_BINFMT_ELF=y
157# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
158CONFIG_HAVE_AOUT=y
167CONFIG_BINFMT_AOUT=m 159CONFIG_BINFMT_AOUT=m
168CONFIG_BINFMT_MISC=m 160CONFIG_BINFMT_MISC=m
169CONFIG_PROC_HARDWARE=y 161CONFIG_PROC_HARDWARE=y
@@ -212,7 +204,6 @@ CONFIG_INET_TCP_DIAG=m
212CONFIG_TCP_CONG_CUBIC=y 204CONFIG_TCP_CONG_CUBIC=y
213CONFIG_DEFAULT_TCP_CONG="cubic" 205CONFIG_DEFAULT_TCP_CONG="cubic"
214# CONFIG_TCP_MD5SIG is not set 206# CONFIG_TCP_MD5SIG is not set
215# CONFIG_IP_VS is not set
216CONFIG_IPV6=m 207CONFIG_IPV6=m
217CONFIG_IPV6_PRIVACY=y 208CONFIG_IPV6_PRIVACY=y
218CONFIG_IPV6_ROUTER_PREF=y 209CONFIG_IPV6_ROUTER_PREF=y
@@ -262,13 +253,14 @@ CONFIG_NF_CONNTRACK_SANE=m
262CONFIG_NF_CONNTRACK_SIP=m 253CONFIG_NF_CONNTRACK_SIP=m
263CONFIG_NF_CONNTRACK_TFTP=m 254CONFIG_NF_CONNTRACK_TFTP=m
264# CONFIG_NF_CT_NETLINK is not set 255# CONFIG_NF_CT_NETLINK is not set
256# CONFIG_NETFILTER_TPROXY is not set
265CONFIG_NETFILTER_XTABLES=m 257CONFIG_NETFILTER_XTABLES=m
266CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 258CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
267CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 259CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
268CONFIG_NETFILTER_XT_TARGET_DSCP=m 260CONFIG_NETFILTER_XT_TARGET_DSCP=m
269CONFIG_NETFILTER_XT_TARGET_MARK=m 261CONFIG_NETFILTER_XT_TARGET_MARK=m
270CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
271CONFIG_NETFILTER_XT_TARGET_NFLOG=m 262CONFIG_NETFILTER_XT_TARGET_NFLOG=m
263CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
272CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 264CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
273CONFIG_NETFILTER_XT_TARGET_RATEEST=m 265CONFIG_NETFILTER_XT_TARGET_RATEEST=m
274CONFIG_NETFILTER_XT_TARGET_TRACE=m 266CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -282,19 +274,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
282CONFIG_NETFILTER_XT_MATCH_DCCP=m 274CONFIG_NETFILTER_XT_MATCH_DCCP=m
283CONFIG_NETFILTER_XT_MATCH_DSCP=m 275CONFIG_NETFILTER_XT_MATCH_DSCP=m
284CONFIG_NETFILTER_XT_MATCH_ESP=m 276CONFIG_NETFILTER_XT_MATCH_ESP=m
277CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
285CONFIG_NETFILTER_XT_MATCH_HELPER=m 278CONFIG_NETFILTER_XT_MATCH_HELPER=m
286CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 279CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
287CONFIG_NETFILTER_XT_MATCH_LENGTH=m 280CONFIG_NETFILTER_XT_MATCH_LENGTH=m
288CONFIG_NETFILTER_XT_MATCH_LIMIT=m 281CONFIG_NETFILTER_XT_MATCH_LIMIT=m
289CONFIG_NETFILTER_XT_MATCH_MAC=m 282CONFIG_NETFILTER_XT_MATCH_MAC=m
290CONFIG_NETFILTER_XT_MATCH_MARK=m 283CONFIG_NETFILTER_XT_MATCH_MARK=m
284CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
291CONFIG_NETFILTER_XT_MATCH_OWNER=m 285CONFIG_NETFILTER_XT_MATCH_OWNER=m
292CONFIG_NETFILTER_XT_MATCH_POLICY=m 286CONFIG_NETFILTER_XT_MATCH_POLICY=m
293CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
294CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 287CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
295CONFIG_NETFILTER_XT_MATCH_QUOTA=m 288CONFIG_NETFILTER_XT_MATCH_QUOTA=m
296CONFIG_NETFILTER_XT_MATCH_RATEEST=m 289CONFIG_NETFILTER_XT_MATCH_RATEEST=m
297CONFIG_NETFILTER_XT_MATCH_REALM=m 290CONFIG_NETFILTER_XT_MATCH_REALM=m
291CONFIG_NETFILTER_XT_MATCH_RECENT=m
292# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
298CONFIG_NETFILTER_XT_MATCH_SCTP=m 293CONFIG_NETFILTER_XT_MATCH_SCTP=m
299CONFIG_NETFILTER_XT_MATCH_STATE=m 294CONFIG_NETFILTER_XT_MATCH_STATE=m
300CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 295CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -302,20 +297,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
302CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 297CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
303CONFIG_NETFILTER_XT_MATCH_TIME=m 298CONFIG_NETFILTER_XT_MATCH_TIME=m
304CONFIG_NETFILTER_XT_MATCH_U32=m 299CONFIG_NETFILTER_XT_MATCH_U32=m
305CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 300# CONFIG_IP_VS is not set
306 301
307# 302#
308# IP: Netfilter Configuration 303# IP: Netfilter Configuration
309# 304#
305CONFIG_NF_DEFRAG_IPV4=m
310CONFIG_NF_CONNTRACK_IPV4=m 306CONFIG_NF_CONNTRACK_IPV4=m
311CONFIG_NF_CONNTRACK_PROC_COMPAT=y 307CONFIG_NF_CONNTRACK_PROC_COMPAT=y
312CONFIG_IP_NF_QUEUE=m 308CONFIG_IP_NF_QUEUE=m
313CONFIG_IP_NF_IPTABLES=m 309CONFIG_IP_NF_IPTABLES=m
314CONFIG_IP_NF_MATCH_RECENT=m 310CONFIG_IP_NF_MATCH_ADDRTYPE=m
315CONFIG_IP_NF_MATCH_ECN=m
316CONFIG_IP_NF_MATCH_AH=m 311CONFIG_IP_NF_MATCH_AH=m
312CONFIG_IP_NF_MATCH_ECN=m
317CONFIG_IP_NF_MATCH_TTL=m 313CONFIG_IP_NF_MATCH_TTL=m
318CONFIG_IP_NF_MATCH_ADDRTYPE=m
319CONFIG_IP_NF_FILTER=m 314CONFIG_IP_NF_FILTER=m
320CONFIG_IP_NF_TARGET_REJECT=m 315CONFIG_IP_NF_TARGET_REJECT=m
321CONFIG_IP_NF_TARGET_LOG=m 316CONFIG_IP_NF_TARGET_LOG=m
@@ -323,8 +318,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
323CONFIG_NF_NAT=m 318CONFIG_NF_NAT=m
324CONFIG_NF_NAT_NEEDED=y 319CONFIG_NF_NAT_NEEDED=y
325CONFIG_IP_NF_TARGET_MASQUERADE=m 320CONFIG_IP_NF_TARGET_MASQUERADE=m
326CONFIG_IP_NF_TARGET_REDIRECT=m
327CONFIG_IP_NF_TARGET_NETMAP=m 321CONFIG_IP_NF_TARGET_NETMAP=m
322CONFIG_IP_NF_TARGET_REDIRECT=m
328CONFIG_NF_NAT_SNMP_BASIC=m 323CONFIG_NF_NAT_SNMP_BASIC=m
329CONFIG_NF_NAT_PROTO_GRE=m 324CONFIG_NF_NAT_PROTO_GRE=m
330CONFIG_NF_NAT_PROTO_UDPLITE=m 325CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -337,9 +332,9 @@ CONFIG_NF_NAT_PPTP=m
337CONFIG_NF_NAT_H323=m 332CONFIG_NF_NAT_H323=m
338CONFIG_NF_NAT_SIP=m 333CONFIG_NF_NAT_SIP=m
339CONFIG_IP_NF_MANGLE=m 334CONFIG_IP_NF_MANGLE=m
335CONFIG_IP_NF_TARGET_CLUSTERIP=m
340CONFIG_IP_NF_TARGET_ECN=m 336CONFIG_IP_NF_TARGET_ECN=m
341CONFIG_IP_NF_TARGET_TTL=m 337CONFIG_IP_NF_TARGET_TTL=m
342CONFIG_IP_NF_TARGET_CLUSTERIP=m
343CONFIG_IP_NF_RAW=m 338CONFIG_IP_NF_RAW=m
344CONFIG_IP_NF_ARPTABLES=m 339CONFIG_IP_NF_ARPTABLES=m
345CONFIG_IP_NF_ARPFILTER=m 340CONFIG_IP_NF_ARPFILTER=m
@@ -351,16 +346,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
351CONFIG_NF_CONNTRACK_IPV6=m 346CONFIG_NF_CONNTRACK_IPV6=m
352CONFIG_IP6_NF_QUEUE=m 347CONFIG_IP6_NF_QUEUE=m
353CONFIG_IP6_NF_IPTABLES=m 348CONFIG_IP6_NF_IPTABLES=m
354CONFIG_IP6_NF_MATCH_RT=m 349CONFIG_IP6_NF_MATCH_AH=m
355CONFIG_IP6_NF_MATCH_OPTS=m 350CONFIG_IP6_NF_MATCH_EUI64=m
356CONFIG_IP6_NF_MATCH_FRAG=m 351CONFIG_IP6_NF_MATCH_FRAG=m
352CONFIG_IP6_NF_MATCH_OPTS=m
357CONFIG_IP6_NF_MATCH_HL=m 353CONFIG_IP6_NF_MATCH_HL=m
358CONFIG_IP6_NF_MATCH_IPV6HEADER=m 354CONFIG_IP6_NF_MATCH_IPV6HEADER=m
359CONFIG_IP6_NF_MATCH_AH=m
360CONFIG_IP6_NF_MATCH_MH=m 355CONFIG_IP6_NF_MATCH_MH=m
361CONFIG_IP6_NF_MATCH_EUI64=m 356CONFIG_IP6_NF_MATCH_RT=m
362CONFIG_IP6_NF_FILTER=m
363CONFIG_IP6_NF_TARGET_LOG=m 357CONFIG_IP6_NF_TARGET_LOG=m
358CONFIG_IP6_NF_FILTER=m
364CONFIG_IP6_NF_TARGET_REJECT=m 359CONFIG_IP6_NF_TARGET_REJECT=m
365CONFIG_IP6_NF_MANGLE=m 360CONFIG_IP6_NF_MANGLE=m
366CONFIG_IP6_NF_TARGET_HL=m 361CONFIG_IP6_NF_TARGET_HL=m
@@ -387,6 +382,7 @@ CONFIG_SCTP_HMAC_MD5=y
387# CONFIG_TIPC is not set 382# CONFIG_TIPC is not set
388# CONFIG_ATM is not set 383# CONFIG_ATM is not set
389# CONFIG_BRIDGE is not set 384# CONFIG_BRIDGE is not set
385# CONFIG_NET_DSA is not set
390# CONFIG_VLAN_8021Q is not set 386# CONFIG_VLAN_8021Q is not set
391# CONFIG_DECNET is not set 387# CONFIG_DECNET is not set
392CONFIG_LLC=m 388CONFIG_LLC=m
@@ -410,19 +406,8 @@ CONFIG_NET_CLS_ROUTE=y
410# CONFIG_IRDA is not set 406# CONFIG_IRDA is not set
411# CONFIG_BT is not set 407# CONFIG_BT is not set
412# CONFIG_AF_RXRPC is not set 408# CONFIG_AF_RXRPC is not set
413 409# CONFIG_PHONET is not set
414# 410# CONFIG_WIRELESS is not set
415# Wireless
416#
417# CONFIG_CFG80211 is not set
418CONFIG_WIRELESS_EXT=y
419# CONFIG_WIRELESS_EXT_SYSFS is not set
420# CONFIG_MAC80211 is not set
421CONFIG_IEEE80211=m
422# CONFIG_IEEE80211_DEBUG is not set
423CONFIG_IEEE80211_CRYPT_WEP=m
424CONFIG_IEEE80211_CRYPT_CCMP=m
425CONFIG_IEEE80211_CRYPT_TKIP=m
426# CONFIG_RFKILL is not set 411# CONFIG_RFKILL is not set
427# CONFIG_NET_9P is not set 412# CONFIG_NET_9P is not set
428 413
@@ -460,6 +445,7 @@ CONFIG_ATA_OVER_ETH=m
460CONFIG_MISC_DEVICES=y 445CONFIG_MISC_DEVICES=y
461# CONFIG_EEPROM_93CX6 is not set 446# CONFIG_EEPROM_93CX6 is not set
462# CONFIG_ENCLOSURE_SERVICES is not set 447# CONFIG_ENCLOSURE_SERVICES is not set
448# CONFIG_C2PORT is not set
463CONFIG_HAVE_IDE=y 449CONFIG_HAVE_IDE=y
464# CONFIG_IDE is not set 450# CONFIG_IDE is not set
465 451
@@ -545,6 +531,9 @@ CONFIG_BVME6000_NET=y
545# CONFIG_IBM_NEW_EMAC_RGMII is not set 531# CONFIG_IBM_NEW_EMAC_RGMII is not set
546# CONFIG_IBM_NEW_EMAC_TAH is not set 532# CONFIG_IBM_NEW_EMAC_TAH is not set
547# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 533# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
534# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
535# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
536# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
548# CONFIG_B44 is not set 537# CONFIG_B44 is not set
549# CONFIG_NETDEV_1000 is not set 538# CONFIG_NETDEV_1000 is not set
550# CONFIG_NETDEV_10000 is not set 539# CONFIG_NETDEV_10000 is not set
@@ -614,6 +603,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
614CONFIG_MOUSE_PS2_SYNAPTICS=y 603CONFIG_MOUSE_PS2_SYNAPTICS=y
615CONFIG_MOUSE_PS2_LIFEBOOK=y 604CONFIG_MOUSE_PS2_LIFEBOOK=y
616CONFIG_MOUSE_PS2_TRACKPOINT=y 605CONFIG_MOUSE_PS2_TRACKPOINT=y
606# CONFIG_MOUSE_PS2_ELANTECH is not set
617# CONFIG_MOUSE_PS2_TOUCHKIT is not set 607# CONFIG_MOUSE_PS2_TOUCHKIT is not set
618CONFIG_MOUSE_SERIAL=m 608CONFIG_MOUSE_SERIAL=m
619# CONFIG_MOUSE_VSXXXAA is not set 609# CONFIG_MOUSE_VSXXXAA is not set
@@ -668,11 +658,11 @@ CONFIG_GEN_RTC_X=y
668# CONFIG_THERMAL is not set 658# CONFIG_THERMAL is not set
669# CONFIG_THERMAL_HWMON is not set 659# CONFIG_THERMAL_HWMON is not set
670# CONFIG_WATCHDOG is not set 660# CONFIG_WATCHDOG is not set
661CONFIG_SSB_POSSIBLE=y
671 662
672# 663#
673# Sonics Silicon Backplane 664# Sonics Silicon Backplane
674# 665#
675CONFIG_SSB_POSSIBLE=y
676# CONFIG_SSB is not set 666# CONFIG_SSB is not set
677 667
678# 668#
@@ -682,6 +672,7 @@ CONFIG_SSB_POSSIBLE=y
682# CONFIG_MFD_SM501 is not set 672# CONFIG_MFD_SM501 is not set
683# CONFIG_HTC_PASIC3 is not set 673# CONFIG_HTC_PASIC3 is not set
684# CONFIG_MFD_TMIO is not set 674# CONFIG_MFD_TMIO is not set
675# CONFIG_REGULATOR is not set
685 676
686# 677#
687# Multimedia devices 678# Multimedia devices
@@ -721,6 +712,12 @@ CONFIG_HID_SUPPORT=y
721CONFIG_HID=m 712CONFIG_HID=m
722# CONFIG_HID_DEBUG is not set 713# CONFIG_HID_DEBUG is not set
723CONFIG_HIDRAW=y 714CONFIG_HIDRAW=y
715# CONFIG_HID_PID is not set
716
717#
718# Special HID drivers
719#
720CONFIG_HID_COMPAT=y
724# CONFIG_USB_SUPPORT is not set 721# CONFIG_USB_SUPPORT is not set
725# CONFIG_MMC is not set 722# CONFIG_MMC is not set
726# CONFIG_MEMSTICK is not set 723# CONFIG_MEMSTICK is not set
@@ -729,6 +726,8 @@ CONFIG_HIDRAW=y
729# CONFIG_RTC_CLASS is not set 726# CONFIG_RTC_CLASS is not set
730# CONFIG_DMADEVICES is not set 727# CONFIG_DMADEVICES is not set
731# CONFIG_UIO is not set 728# CONFIG_UIO is not set
729# CONFIG_STAGING is not set
730CONFIG_STAGING_EXCLUDE_BUILD=y
732 731
733# 732#
734# Character devices 733# Character devices
@@ -744,8 +743,9 @@ CONFIG_EXT2_FS=y
744# CONFIG_EXT2_FS_XIP is not set 743# CONFIG_EXT2_FS_XIP is not set
745CONFIG_EXT3_FS=y 744CONFIG_EXT3_FS=y
746# CONFIG_EXT3_FS_XATTR is not set 745# CONFIG_EXT3_FS_XATTR is not set
747# CONFIG_EXT4DEV_FS is not set 746# CONFIG_EXT4_FS is not set
748CONFIG_JBD=y 747CONFIG_JBD=y
748CONFIG_JBD2=m
749CONFIG_REISERFS_FS=m 749CONFIG_REISERFS_FS=m
750# CONFIG_REISERFS_CHECK is not set 750# CONFIG_REISERFS_CHECK is not set
751# CONFIG_REISERFS_PROC_INFO is not set 751# CONFIG_REISERFS_PROC_INFO is not set
@@ -756,6 +756,7 @@ CONFIG_JFS_FS=m
756# CONFIG_JFS_DEBUG is not set 756# CONFIG_JFS_DEBUG is not set
757# CONFIG_JFS_STATISTICS is not set 757# CONFIG_JFS_STATISTICS is not set
758# CONFIG_FS_POSIX_ACL is not set 758# CONFIG_FS_POSIX_ACL is not set
759CONFIG_FILE_LOCKING=y
759CONFIG_XFS_FS=m 760CONFIG_XFS_FS=m
760# CONFIG_XFS_QUOTA is not set 761# CONFIG_XFS_QUOTA is not set
761# CONFIG_XFS_POSIX_ACL is not set 762# CONFIG_XFS_POSIX_ACL is not set
@@ -767,6 +768,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
767# CONFIG_OCFS2_FS_STATS is not set 768# CONFIG_OCFS2_FS_STATS is not set
768# CONFIG_OCFS2_DEBUG_MASKLOG is not set 769# CONFIG_OCFS2_DEBUG_MASKLOG is not set
769# CONFIG_OCFS2_DEBUG_FS is not set 770# CONFIG_OCFS2_DEBUG_FS is not set
771# CONFIG_OCFS2_COMPAT_JBD is not set
770CONFIG_DNOTIFY=y 772CONFIG_DNOTIFY=y
771CONFIG_INOTIFY=y 773CONFIG_INOTIFY=y
772CONFIG_INOTIFY_USER=y 774CONFIG_INOTIFY_USER=y
@@ -805,6 +807,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
805CONFIG_PROC_FS=y 807CONFIG_PROC_FS=y
806CONFIG_PROC_KCORE=y 808CONFIG_PROC_KCORE=y
807CONFIG_PROC_SYSCTL=y 809CONFIG_PROC_SYSCTL=y
810CONFIG_PROC_PAGE_MONITOR=y
808CONFIG_SYSFS=y 811CONFIG_SYSFS=y
809CONFIG_TMPFS=y 812CONFIG_TMPFS=y
810# CONFIG_TMPFS_POSIX_ACL is not set 813# CONFIG_TMPFS_POSIX_ACL is not set
@@ -848,6 +851,7 @@ CONFIG_EXPORTFS=m
848CONFIG_NFS_COMMON=y 851CONFIG_NFS_COMMON=y
849CONFIG_SUNRPC=y 852CONFIG_SUNRPC=y
850CONFIG_SUNRPC_GSS=y 853CONFIG_SUNRPC_GSS=y
854# CONFIG_SUNRPC_REGISTER_V4 is not set
851CONFIG_RPCSEC_GSS_KRB5=y 855CONFIG_RPCSEC_GSS_KRB5=y
852# CONFIG_RPCSEC_GSS_SPKM3 is not set 856# CONFIG_RPCSEC_GSS_SPKM3 is not set
853CONFIG_SMB_FS=m 857CONFIG_SMB_FS=m
@@ -921,7 +925,13 @@ CONFIG_MAGIC_SYSRQ=y
921# CONFIG_DEBUG_KERNEL is not set 925# CONFIG_DEBUG_KERNEL is not set
922CONFIG_DEBUG_BUGVERBOSE=y 926CONFIG_DEBUG_BUGVERBOSE=y
923CONFIG_DEBUG_MEMORY_INIT=y 927CONFIG_DEBUG_MEMORY_INIT=y
928# CONFIG_RCU_CPU_STALL_DETECTOR is not set
924CONFIG_SYSCTL_SYSCALL_CHECK=y 929CONFIG_SYSCTL_SYSCALL_CHECK=y
930
931#
932# Tracers
933#
934# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
925# CONFIG_SAMPLES is not set 935# CONFIG_SAMPLES is not set
926 936
927# 937#
@@ -929,6 +939,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
929# 939#
930# CONFIG_KEYS is not set 940# CONFIG_KEYS is not set
931# CONFIG_SECURITY is not set 941# CONFIG_SECURITY is not set
942# CONFIG_SECURITYFS is not set
932# CONFIG_SECURITY_FILE_CAPABILITIES is not set 943# CONFIG_SECURITY_FILE_CAPABILITIES is not set
933CONFIG_XOR_BLOCKS=m 944CONFIG_XOR_BLOCKS=m
934CONFIG_ASYNC_CORE=m 945CONFIG_ASYNC_CORE=m
@@ -939,10 +950,12 @@ CONFIG_CRYPTO=y
939# 950#
940# Crypto core or helper 951# Crypto core or helper
941# 952#
953# CONFIG_CRYPTO_FIPS is not set
942CONFIG_CRYPTO_ALGAPI=y 954CONFIG_CRYPTO_ALGAPI=y
943CONFIG_CRYPTO_AEAD=m 955CONFIG_CRYPTO_AEAD=y
944CONFIG_CRYPTO_BLKCIPHER=y 956CONFIG_CRYPTO_BLKCIPHER=y
945CONFIG_CRYPTO_HASH=y 957CONFIG_CRYPTO_HASH=y
958CONFIG_CRYPTO_RNG=y
946CONFIG_CRYPTO_MANAGER=y 959CONFIG_CRYPTO_MANAGER=y
947CONFIG_CRYPTO_GF128MUL=m 960CONFIG_CRYPTO_GF128MUL=m
948CONFIG_CRYPTO_NULL=m 961CONFIG_CRYPTO_NULL=m
@@ -1016,14 +1029,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1016# 1029#
1017CONFIG_CRYPTO_DEFLATE=m 1030CONFIG_CRYPTO_DEFLATE=m
1018CONFIG_CRYPTO_LZO=m 1031CONFIG_CRYPTO_LZO=m
1032
1033#
1034# Random Number Generation
1035#
1036# CONFIG_CRYPTO_ANSI_CPRNG is not set
1019# CONFIG_CRYPTO_HW is not set 1037# CONFIG_CRYPTO_HW is not set
1020 1038
1021# 1039#
1022# Library routines 1040# Library routines
1023# 1041#
1024CONFIG_BITREVERSE=m 1042CONFIG_BITREVERSE=m
1025# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1026# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1027CONFIG_CRC_CCITT=m 1043CONFIG_CRC_CCITT=m
1028CONFIG_CRC16=m 1044CONFIG_CRC16=m
1029CONFIG_CRC_T10DIF=y 1045CONFIG_CRC_T10DIF=y
diff --git a/arch/m68k/configs/hp300_defconfig b/arch/m68k/configs/hp300_defconfig
index 3570fc89b089..5556ef088d04 100644
--- a/arch/m68k/configs/hp300_defconfig
+++ b/arch/m68k/configs/hp300_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:04 2008 4# Tue Dec 2 20:27:46 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16# CONFIG_NO_DMA is not set 16# CONFIG_NO_DMA is not set
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,11 +105,11 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
122# CONFIG_SUN3 is not set
123# CONFIG_AMIGA is not set 113# CONFIG_AMIGA is not set
124# CONFIG_ATARI is not set 114# CONFIG_ATARI is not set
125# CONFIG_MAC is not set 115# CONFIG_MAC is not set
@@ -149,19 +139,21 @@ CONFIG_DISCONTIGMEM_MANUAL=y
149CONFIG_DISCONTIGMEM=y 139CONFIG_DISCONTIGMEM=y
150CONFIG_FLAT_NODE_MEM_MAP=y 140CONFIG_FLAT_NODE_MEM_MAP=y
151CONFIG_NEED_MULTIPLE_NODES=y 141CONFIG_NEED_MULTIPLE_NODES=y
152# CONFIG_SPARSEMEM_STATIC is not set
153# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
154CONFIG_PAGEFLAGS_EXTENDED=y 142CONFIG_PAGEFLAGS_EXTENDED=y
155CONFIG_SPLIT_PTLOCK_CPUS=4 143CONFIG_SPLIT_PTLOCK_CPUS=4
156# CONFIG_RESOURCES_64BIT is not set 144# CONFIG_RESOURCES_64BIT is not set
145# CONFIG_PHYS_ADDR_T_64BIT is not set
157CONFIG_ZONE_DMA_FLAG=1 146CONFIG_ZONE_DMA_FLAG=1
158CONFIG_BOUNCE=y 147CONFIG_BOUNCE=y
159CONFIG_VIRT_TO_BUS=y 148CONFIG_VIRT_TO_BUS=y
149CONFIG_UNEVICTABLE_LRU=y
160 150
161# 151#
162# General setup 152# General setup
163# 153#
164CONFIG_BINFMT_ELF=y 154CONFIG_BINFMT_ELF=y
155# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
156CONFIG_HAVE_AOUT=y
165CONFIG_BINFMT_AOUT=m 157CONFIG_BINFMT_AOUT=m
166CONFIG_BINFMT_MISC=m 158CONFIG_BINFMT_MISC=m
167CONFIG_HEARTBEAT=y 159CONFIG_HEARTBEAT=y
@@ -211,7 +203,6 @@ CONFIG_INET_TCP_DIAG=m
211CONFIG_TCP_CONG_CUBIC=y 203CONFIG_TCP_CONG_CUBIC=y
212CONFIG_DEFAULT_TCP_CONG="cubic" 204CONFIG_DEFAULT_TCP_CONG="cubic"
213# CONFIG_TCP_MD5SIG is not set 205# CONFIG_TCP_MD5SIG is not set
214# CONFIG_IP_VS is not set
215CONFIG_IPV6=m 206CONFIG_IPV6=m
216CONFIG_IPV6_PRIVACY=y 207CONFIG_IPV6_PRIVACY=y
217CONFIG_IPV6_ROUTER_PREF=y 208CONFIG_IPV6_ROUTER_PREF=y
@@ -261,13 +252,14 @@ CONFIG_NF_CONNTRACK_SANE=m
261CONFIG_NF_CONNTRACK_SIP=m 252CONFIG_NF_CONNTRACK_SIP=m
262CONFIG_NF_CONNTRACK_TFTP=m 253CONFIG_NF_CONNTRACK_TFTP=m
263# CONFIG_NF_CT_NETLINK is not set 254# CONFIG_NF_CT_NETLINK is not set
255# CONFIG_NETFILTER_TPROXY is not set
264CONFIG_NETFILTER_XTABLES=m 256CONFIG_NETFILTER_XTABLES=m
265CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 257CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
266CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 258CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
267CONFIG_NETFILTER_XT_TARGET_DSCP=m 259CONFIG_NETFILTER_XT_TARGET_DSCP=m
268CONFIG_NETFILTER_XT_TARGET_MARK=m 260CONFIG_NETFILTER_XT_TARGET_MARK=m
269CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
270CONFIG_NETFILTER_XT_TARGET_NFLOG=m 261CONFIG_NETFILTER_XT_TARGET_NFLOG=m
262CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
271CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 263CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
272CONFIG_NETFILTER_XT_TARGET_RATEEST=m 264CONFIG_NETFILTER_XT_TARGET_RATEEST=m
273CONFIG_NETFILTER_XT_TARGET_TRACE=m 265CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -281,19 +273,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
281CONFIG_NETFILTER_XT_MATCH_DCCP=m 273CONFIG_NETFILTER_XT_MATCH_DCCP=m
282CONFIG_NETFILTER_XT_MATCH_DSCP=m 274CONFIG_NETFILTER_XT_MATCH_DSCP=m
283CONFIG_NETFILTER_XT_MATCH_ESP=m 275CONFIG_NETFILTER_XT_MATCH_ESP=m
276CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
284CONFIG_NETFILTER_XT_MATCH_HELPER=m 277CONFIG_NETFILTER_XT_MATCH_HELPER=m
285CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 278CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
286CONFIG_NETFILTER_XT_MATCH_LENGTH=m 279CONFIG_NETFILTER_XT_MATCH_LENGTH=m
287CONFIG_NETFILTER_XT_MATCH_LIMIT=m 280CONFIG_NETFILTER_XT_MATCH_LIMIT=m
288CONFIG_NETFILTER_XT_MATCH_MAC=m 281CONFIG_NETFILTER_XT_MATCH_MAC=m
289CONFIG_NETFILTER_XT_MATCH_MARK=m 282CONFIG_NETFILTER_XT_MATCH_MARK=m
283CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
290CONFIG_NETFILTER_XT_MATCH_OWNER=m 284CONFIG_NETFILTER_XT_MATCH_OWNER=m
291CONFIG_NETFILTER_XT_MATCH_POLICY=m 285CONFIG_NETFILTER_XT_MATCH_POLICY=m
292CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
293CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 286CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
294CONFIG_NETFILTER_XT_MATCH_QUOTA=m 287CONFIG_NETFILTER_XT_MATCH_QUOTA=m
295CONFIG_NETFILTER_XT_MATCH_RATEEST=m 288CONFIG_NETFILTER_XT_MATCH_RATEEST=m
296CONFIG_NETFILTER_XT_MATCH_REALM=m 289CONFIG_NETFILTER_XT_MATCH_REALM=m
290CONFIG_NETFILTER_XT_MATCH_RECENT=m
291# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
297CONFIG_NETFILTER_XT_MATCH_SCTP=m 292CONFIG_NETFILTER_XT_MATCH_SCTP=m
298CONFIG_NETFILTER_XT_MATCH_STATE=m 293CONFIG_NETFILTER_XT_MATCH_STATE=m
299CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 294CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -301,20 +296,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
301CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 296CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
302CONFIG_NETFILTER_XT_MATCH_TIME=m 297CONFIG_NETFILTER_XT_MATCH_TIME=m
303CONFIG_NETFILTER_XT_MATCH_U32=m 298CONFIG_NETFILTER_XT_MATCH_U32=m
304CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 299# CONFIG_IP_VS is not set
305 300
306# 301#
307# IP: Netfilter Configuration 302# IP: Netfilter Configuration
308# 303#
304CONFIG_NF_DEFRAG_IPV4=m
309CONFIG_NF_CONNTRACK_IPV4=m 305CONFIG_NF_CONNTRACK_IPV4=m
310CONFIG_NF_CONNTRACK_PROC_COMPAT=y 306CONFIG_NF_CONNTRACK_PROC_COMPAT=y
311CONFIG_IP_NF_QUEUE=m 307CONFIG_IP_NF_QUEUE=m
312CONFIG_IP_NF_IPTABLES=m 308CONFIG_IP_NF_IPTABLES=m
313CONFIG_IP_NF_MATCH_RECENT=m 309CONFIG_IP_NF_MATCH_ADDRTYPE=m
314CONFIG_IP_NF_MATCH_ECN=m
315CONFIG_IP_NF_MATCH_AH=m 310CONFIG_IP_NF_MATCH_AH=m
311CONFIG_IP_NF_MATCH_ECN=m
316CONFIG_IP_NF_MATCH_TTL=m 312CONFIG_IP_NF_MATCH_TTL=m
317CONFIG_IP_NF_MATCH_ADDRTYPE=m
318CONFIG_IP_NF_FILTER=m 313CONFIG_IP_NF_FILTER=m
319CONFIG_IP_NF_TARGET_REJECT=m 314CONFIG_IP_NF_TARGET_REJECT=m
320CONFIG_IP_NF_TARGET_LOG=m 315CONFIG_IP_NF_TARGET_LOG=m
@@ -322,8 +317,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
322CONFIG_NF_NAT=m 317CONFIG_NF_NAT=m
323CONFIG_NF_NAT_NEEDED=y 318CONFIG_NF_NAT_NEEDED=y
324CONFIG_IP_NF_TARGET_MASQUERADE=m 319CONFIG_IP_NF_TARGET_MASQUERADE=m
325CONFIG_IP_NF_TARGET_REDIRECT=m
326CONFIG_IP_NF_TARGET_NETMAP=m 320CONFIG_IP_NF_TARGET_NETMAP=m
321CONFIG_IP_NF_TARGET_REDIRECT=m
327CONFIG_NF_NAT_SNMP_BASIC=m 322CONFIG_NF_NAT_SNMP_BASIC=m
328CONFIG_NF_NAT_PROTO_GRE=m 323CONFIG_NF_NAT_PROTO_GRE=m
329CONFIG_NF_NAT_PROTO_UDPLITE=m 324CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -336,9 +331,9 @@ CONFIG_NF_NAT_PPTP=m
336CONFIG_NF_NAT_H323=m 331CONFIG_NF_NAT_H323=m
337CONFIG_NF_NAT_SIP=m 332CONFIG_NF_NAT_SIP=m
338CONFIG_IP_NF_MANGLE=m 333CONFIG_IP_NF_MANGLE=m
334CONFIG_IP_NF_TARGET_CLUSTERIP=m
339CONFIG_IP_NF_TARGET_ECN=m 335CONFIG_IP_NF_TARGET_ECN=m
340CONFIG_IP_NF_TARGET_TTL=m 336CONFIG_IP_NF_TARGET_TTL=m
341CONFIG_IP_NF_TARGET_CLUSTERIP=m
342CONFIG_IP_NF_RAW=m 337CONFIG_IP_NF_RAW=m
343CONFIG_IP_NF_ARPTABLES=m 338CONFIG_IP_NF_ARPTABLES=m
344CONFIG_IP_NF_ARPFILTER=m 339CONFIG_IP_NF_ARPFILTER=m
@@ -350,16 +345,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
350CONFIG_NF_CONNTRACK_IPV6=m 345CONFIG_NF_CONNTRACK_IPV6=m
351CONFIG_IP6_NF_QUEUE=m 346CONFIG_IP6_NF_QUEUE=m
352CONFIG_IP6_NF_IPTABLES=m 347CONFIG_IP6_NF_IPTABLES=m
353CONFIG_IP6_NF_MATCH_RT=m 348CONFIG_IP6_NF_MATCH_AH=m
354CONFIG_IP6_NF_MATCH_OPTS=m 349CONFIG_IP6_NF_MATCH_EUI64=m
355CONFIG_IP6_NF_MATCH_FRAG=m 350CONFIG_IP6_NF_MATCH_FRAG=m
351CONFIG_IP6_NF_MATCH_OPTS=m
356CONFIG_IP6_NF_MATCH_HL=m 352CONFIG_IP6_NF_MATCH_HL=m
357CONFIG_IP6_NF_MATCH_IPV6HEADER=m 353CONFIG_IP6_NF_MATCH_IPV6HEADER=m
358CONFIG_IP6_NF_MATCH_AH=m
359CONFIG_IP6_NF_MATCH_MH=m 354CONFIG_IP6_NF_MATCH_MH=m
360CONFIG_IP6_NF_MATCH_EUI64=m 355CONFIG_IP6_NF_MATCH_RT=m
361CONFIG_IP6_NF_FILTER=m
362CONFIG_IP6_NF_TARGET_LOG=m 356CONFIG_IP6_NF_TARGET_LOG=m
357CONFIG_IP6_NF_FILTER=m
363CONFIG_IP6_NF_TARGET_REJECT=m 358CONFIG_IP6_NF_TARGET_REJECT=m
364CONFIG_IP6_NF_MANGLE=m 359CONFIG_IP6_NF_MANGLE=m
365CONFIG_IP6_NF_TARGET_HL=m 360CONFIG_IP6_NF_TARGET_HL=m
@@ -386,6 +381,7 @@ CONFIG_SCTP_HMAC_MD5=y
386# CONFIG_TIPC is not set 381# CONFIG_TIPC is not set
387# CONFIG_ATM is not set 382# CONFIG_ATM is not set
388# CONFIG_BRIDGE is not set 383# CONFIG_BRIDGE is not set
384# CONFIG_NET_DSA is not set
389# CONFIG_VLAN_8021Q is not set 385# CONFIG_VLAN_8021Q is not set
390# CONFIG_DECNET is not set 386# CONFIG_DECNET is not set
391CONFIG_LLC=m 387CONFIG_LLC=m
@@ -409,19 +405,8 @@ CONFIG_NET_CLS_ROUTE=y
409# CONFIG_IRDA is not set 405# CONFIG_IRDA is not set
410# CONFIG_BT is not set 406# CONFIG_BT is not set
411# CONFIG_AF_RXRPC is not set 407# CONFIG_AF_RXRPC is not set
412 408# CONFIG_PHONET is not set
413# 409# CONFIG_WIRELESS is not set
414# Wireless
415#
416# CONFIG_CFG80211 is not set
417CONFIG_WIRELESS_EXT=y
418# CONFIG_WIRELESS_EXT_SYSFS is not set
419# CONFIG_MAC80211 is not set
420CONFIG_IEEE80211=m
421# CONFIG_IEEE80211_DEBUG is not set
422CONFIG_IEEE80211_CRYPT_WEP=m
423CONFIG_IEEE80211_CRYPT_CCMP=m
424CONFIG_IEEE80211_CRYPT_TKIP=m
425# CONFIG_RFKILL is not set 410# CONFIG_RFKILL is not set
426# CONFIG_NET_9P is not set 411# CONFIG_NET_9P is not set
427 412
@@ -459,6 +444,7 @@ CONFIG_ATA_OVER_ETH=m
459CONFIG_MISC_DEVICES=y 444CONFIG_MISC_DEVICES=y
460# CONFIG_EEPROM_93CX6 is not set 445# CONFIG_EEPROM_93CX6 is not set
461# CONFIG_ENCLOSURE_SERVICES is not set 446# CONFIG_ENCLOSURE_SERVICES is not set
447# CONFIG_C2PORT is not set
462CONFIG_HAVE_IDE=y 448CONFIG_HAVE_IDE=y
463# CONFIG_IDE is not set 449# CONFIG_IDE is not set
464 450
@@ -542,6 +528,9 @@ CONFIG_HPLANCE=y
542# CONFIG_IBM_NEW_EMAC_RGMII is not set 528# CONFIG_IBM_NEW_EMAC_RGMII is not set
543# CONFIG_IBM_NEW_EMAC_TAH is not set 529# CONFIG_IBM_NEW_EMAC_TAH is not set
544# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 530# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
531# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
532# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
533# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
545# CONFIG_B44 is not set 534# CONFIG_B44 is not set
546# CONFIG_NETDEV_1000 is not set 535# CONFIG_NETDEV_1000 is not set
547# CONFIG_NETDEV_10000 is not set 536# CONFIG_NETDEV_10000 is not set
@@ -613,6 +602,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
613CONFIG_MOUSE_PS2_SYNAPTICS=y 602CONFIG_MOUSE_PS2_SYNAPTICS=y
614CONFIG_MOUSE_PS2_LIFEBOOK=y 603CONFIG_MOUSE_PS2_LIFEBOOK=y
615CONFIG_MOUSE_PS2_TRACKPOINT=y 604CONFIG_MOUSE_PS2_TRACKPOINT=y
605# CONFIG_MOUSE_PS2_ELANTECH is not set
616# CONFIG_MOUSE_PS2_TOUCHKIT is not set 606# CONFIG_MOUSE_PS2_TOUCHKIT is not set
617CONFIG_MOUSE_SERIAL=m 607CONFIG_MOUSE_SERIAL=m
618# CONFIG_MOUSE_VSXXXAA is not set 608# CONFIG_MOUSE_VSXXXAA is not set
@@ -673,11 +663,11 @@ CONFIG_GEN_RTC_X=y
673# CONFIG_THERMAL is not set 663# CONFIG_THERMAL is not set
674# CONFIG_THERMAL_HWMON is not set 664# CONFIG_THERMAL_HWMON is not set
675# CONFIG_WATCHDOG is not set 665# CONFIG_WATCHDOG is not set
666CONFIG_SSB_POSSIBLE=y
676 667
677# 668#
678# Sonics Silicon Backplane 669# Sonics Silicon Backplane
679# 670#
680CONFIG_SSB_POSSIBLE=y
681# CONFIG_SSB is not set 671# CONFIG_SSB is not set
682 672
683# 673#
@@ -687,6 +677,7 @@ CONFIG_SSB_POSSIBLE=y
687# CONFIG_MFD_SM501 is not set 677# CONFIG_MFD_SM501 is not set
688# CONFIG_HTC_PASIC3 is not set 678# CONFIG_HTC_PASIC3 is not set
689# CONFIG_MFD_TMIO is not set 679# CONFIG_MFD_TMIO is not set
680# CONFIG_REGULATOR is not set
690 681
691# 682#
692# Multimedia devices 683# Multimedia devices
@@ -712,6 +703,7 @@ CONFIG_SSB_POSSIBLE=y
712CONFIG_FB=y 703CONFIG_FB=y
713# CONFIG_FIRMWARE_EDID is not set 704# CONFIG_FIRMWARE_EDID is not set
714# CONFIG_FB_DDC is not set 705# CONFIG_FB_DDC is not set
706# CONFIG_FB_BOOT_VESA_SUPPORT is not set
715# CONFIG_FB_CFB_FILLRECT is not set 707# CONFIG_FB_CFB_FILLRECT is not set
716# CONFIG_FB_CFB_COPYAREA is not set 708# CONFIG_FB_CFB_COPYAREA is not set
717CONFIG_FB_CFB_IMAGEBLIT=y 709CONFIG_FB_CFB_IMAGEBLIT=y
@@ -734,6 +726,8 @@ CONFIG_FB_HP300=y
734# CONFIG_FB_UVESA is not set 726# CONFIG_FB_UVESA is not set
735# CONFIG_FB_S1D13XXX is not set 727# CONFIG_FB_S1D13XXX is not set
736# CONFIG_FB_VIRTUAL is not set 728# CONFIG_FB_VIRTUAL is not set
729# CONFIG_FB_METRONOME is not set
730# CONFIG_FB_MB862XX is not set
737# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 731# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
738 732
739# 733#
@@ -760,6 +754,12 @@ CONFIG_HID_SUPPORT=y
760CONFIG_HID=m 754CONFIG_HID=m
761# CONFIG_HID_DEBUG is not set 755# CONFIG_HID_DEBUG is not set
762CONFIG_HIDRAW=y 756CONFIG_HIDRAW=y
757# CONFIG_HID_PID is not set
758
759#
760# Special HID drivers
761#
762CONFIG_HID_COMPAT=y
763# CONFIG_USB_SUPPORT is not set 763# CONFIG_USB_SUPPORT is not set
764# CONFIG_MMC is not set 764# CONFIG_MMC is not set
765# CONFIG_MEMSTICK is not set 765# CONFIG_MEMSTICK is not set
@@ -768,6 +768,8 @@ CONFIG_HIDRAW=y
768# CONFIG_RTC_CLASS is not set 768# CONFIG_RTC_CLASS is not set
769# CONFIG_DMADEVICES is not set 769# CONFIG_DMADEVICES is not set
770# CONFIG_UIO is not set 770# CONFIG_UIO is not set
771# CONFIG_STAGING is not set
772CONFIG_STAGING_EXCLUDE_BUILD=y
771 773
772# 774#
773# Character devices 775# Character devices
@@ -781,8 +783,9 @@ CONFIG_EXT2_FS=y
781# CONFIG_EXT2_FS_XIP is not set 783# CONFIG_EXT2_FS_XIP is not set
782CONFIG_EXT3_FS=y 784CONFIG_EXT3_FS=y
783# CONFIG_EXT3_FS_XATTR is not set 785# CONFIG_EXT3_FS_XATTR is not set
784# CONFIG_EXT4DEV_FS is not set 786# CONFIG_EXT4_FS is not set
785CONFIG_JBD=y 787CONFIG_JBD=y
788CONFIG_JBD2=m
786CONFIG_REISERFS_FS=m 789CONFIG_REISERFS_FS=m
787# CONFIG_REISERFS_CHECK is not set 790# CONFIG_REISERFS_CHECK is not set
788# CONFIG_REISERFS_PROC_INFO is not set 791# CONFIG_REISERFS_PROC_INFO is not set
@@ -793,6 +796,7 @@ CONFIG_JFS_FS=m
793# CONFIG_JFS_DEBUG is not set 796# CONFIG_JFS_DEBUG is not set
794# CONFIG_JFS_STATISTICS is not set 797# CONFIG_JFS_STATISTICS is not set
795# CONFIG_FS_POSIX_ACL is not set 798# CONFIG_FS_POSIX_ACL is not set
799CONFIG_FILE_LOCKING=y
796CONFIG_XFS_FS=m 800CONFIG_XFS_FS=m
797# CONFIG_XFS_QUOTA is not set 801# CONFIG_XFS_QUOTA is not set
798# CONFIG_XFS_POSIX_ACL is not set 802# CONFIG_XFS_POSIX_ACL is not set
@@ -804,6 +808,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
804# CONFIG_OCFS2_FS_STATS is not set 808# CONFIG_OCFS2_FS_STATS is not set
805# CONFIG_OCFS2_DEBUG_MASKLOG is not set 809# CONFIG_OCFS2_DEBUG_MASKLOG is not set
806# CONFIG_OCFS2_DEBUG_FS is not set 810# CONFIG_OCFS2_DEBUG_FS is not set
811# CONFIG_OCFS2_COMPAT_JBD is not set
807CONFIG_DNOTIFY=y 812CONFIG_DNOTIFY=y
808CONFIG_INOTIFY=y 813CONFIG_INOTIFY=y
809CONFIG_INOTIFY_USER=y 814CONFIG_INOTIFY_USER=y
@@ -842,6 +847,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
842CONFIG_PROC_FS=y 847CONFIG_PROC_FS=y
843CONFIG_PROC_KCORE=y 848CONFIG_PROC_KCORE=y
844CONFIG_PROC_SYSCTL=y 849CONFIG_PROC_SYSCTL=y
850CONFIG_PROC_PAGE_MONITOR=y
845CONFIG_SYSFS=y 851CONFIG_SYSFS=y
846CONFIG_TMPFS=y 852CONFIG_TMPFS=y
847# CONFIG_TMPFS_POSIX_ACL is not set 853# CONFIG_TMPFS_POSIX_ACL is not set
@@ -885,6 +891,7 @@ CONFIG_EXPORTFS=m
885CONFIG_NFS_COMMON=y 891CONFIG_NFS_COMMON=y
886CONFIG_SUNRPC=y 892CONFIG_SUNRPC=y
887CONFIG_SUNRPC_GSS=y 893CONFIG_SUNRPC_GSS=y
894# CONFIG_SUNRPC_REGISTER_V4 is not set
888CONFIG_RPCSEC_GSS_KRB5=y 895CONFIG_RPCSEC_GSS_KRB5=y
889# CONFIG_RPCSEC_GSS_SPKM3 is not set 896# CONFIG_RPCSEC_GSS_SPKM3 is not set
890CONFIG_SMB_FS=m 897CONFIG_SMB_FS=m
@@ -957,7 +964,13 @@ CONFIG_MAGIC_SYSRQ=y
957# CONFIG_DEBUG_KERNEL is not set 964# CONFIG_DEBUG_KERNEL is not set
958CONFIG_DEBUG_BUGVERBOSE=y 965CONFIG_DEBUG_BUGVERBOSE=y
959CONFIG_DEBUG_MEMORY_INIT=y 966CONFIG_DEBUG_MEMORY_INIT=y
967# CONFIG_RCU_CPU_STALL_DETECTOR is not set
960CONFIG_SYSCTL_SYSCALL_CHECK=y 968CONFIG_SYSCTL_SYSCALL_CHECK=y
969
970#
971# Tracers
972#
973# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
961# CONFIG_SAMPLES is not set 974# CONFIG_SAMPLES is not set
962 975
963# 976#
@@ -965,6 +978,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
965# 978#
966# CONFIG_KEYS is not set 979# CONFIG_KEYS is not set
967# CONFIG_SECURITY is not set 980# CONFIG_SECURITY is not set
981# CONFIG_SECURITYFS is not set
968# CONFIG_SECURITY_FILE_CAPABILITIES is not set 982# CONFIG_SECURITY_FILE_CAPABILITIES is not set
969CONFIG_XOR_BLOCKS=m 983CONFIG_XOR_BLOCKS=m
970CONFIG_ASYNC_CORE=m 984CONFIG_ASYNC_CORE=m
@@ -975,10 +989,12 @@ CONFIG_CRYPTO=y
975# 989#
976# Crypto core or helper 990# Crypto core or helper
977# 991#
992# CONFIG_CRYPTO_FIPS is not set
978CONFIG_CRYPTO_ALGAPI=y 993CONFIG_CRYPTO_ALGAPI=y
979CONFIG_CRYPTO_AEAD=m 994CONFIG_CRYPTO_AEAD=y
980CONFIG_CRYPTO_BLKCIPHER=y 995CONFIG_CRYPTO_BLKCIPHER=y
981CONFIG_CRYPTO_HASH=y 996CONFIG_CRYPTO_HASH=y
997CONFIG_CRYPTO_RNG=y
982CONFIG_CRYPTO_MANAGER=y 998CONFIG_CRYPTO_MANAGER=y
983CONFIG_CRYPTO_GF128MUL=m 999CONFIG_CRYPTO_GF128MUL=m
984CONFIG_CRYPTO_NULL=m 1000CONFIG_CRYPTO_NULL=m
@@ -1052,14 +1068,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1052# 1068#
1053CONFIG_CRYPTO_DEFLATE=m 1069CONFIG_CRYPTO_DEFLATE=m
1054CONFIG_CRYPTO_LZO=m 1070CONFIG_CRYPTO_LZO=m
1071
1072#
1073# Random Number Generation
1074#
1075# CONFIG_CRYPTO_ANSI_CPRNG is not set
1055# CONFIG_CRYPTO_HW is not set 1076# CONFIG_CRYPTO_HW is not set
1056 1077
1057# 1078#
1058# Library routines 1079# Library routines
1059# 1080#
1060CONFIG_BITREVERSE=y 1081CONFIG_BITREVERSE=y
1061# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1062# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1063CONFIG_CRC_CCITT=m 1082CONFIG_CRC_CCITT=m
1064CONFIG_CRC16=m 1083CONFIG_CRC16=m
1065CONFIG_CRC_T10DIF=y 1084CONFIG_CRC_T10DIF=y
diff --git a/arch/m68k/configs/mac_defconfig b/arch/m68k/configs/mac_defconfig
index db6e8822594a..c6de25724a25 100644
--- a/arch/m68k/configs/mac_defconfig
+++ b/arch/m68k/configs/mac_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:06 2008 4# Tue Dec 2 20:27:47 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16# CONFIG_NO_DMA is not set 16# CONFIG_NO_DMA is not set
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,11 +105,11 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
122# CONFIG_SUN3 is not set
123# CONFIG_AMIGA is not set 113# CONFIG_AMIGA is not set
124# CONFIG_ATARI is not set 114# CONFIG_ATARI is not set
125CONFIG_MAC=y 115CONFIG_MAC=y
@@ -150,19 +140,21 @@ CONFIG_DISCONTIGMEM_MANUAL=y
150CONFIG_DISCONTIGMEM=y 140CONFIG_DISCONTIGMEM=y
151CONFIG_FLAT_NODE_MEM_MAP=y 141CONFIG_FLAT_NODE_MEM_MAP=y
152CONFIG_NEED_MULTIPLE_NODES=y 142CONFIG_NEED_MULTIPLE_NODES=y
153# CONFIG_SPARSEMEM_STATIC is not set
154# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
155CONFIG_PAGEFLAGS_EXTENDED=y 143CONFIG_PAGEFLAGS_EXTENDED=y
156CONFIG_SPLIT_PTLOCK_CPUS=4 144CONFIG_SPLIT_PTLOCK_CPUS=4
157# CONFIG_RESOURCES_64BIT is not set 145# CONFIG_RESOURCES_64BIT is not set
146# CONFIG_PHYS_ADDR_T_64BIT is not set
158CONFIG_ZONE_DMA_FLAG=1 147CONFIG_ZONE_DMA_FLAG=1
159CONFIG_BOUNCE=y 148CONFIG_BOUNCE=y
160CONFIG_VIRT_TO_BUS=y 149CONFIG_VIRT_TO_BUS=y
150CONFIG_UNEVICTABLE_LRU=y
161 151
162# 152#
163# General setup 153# General setup
164# 154#
165CONFIG_BINFMT_ELF=y 155CONFIG_BINFMT_ELF=y
156# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
157CONFIG_HAVE_AOUT=y
166CONFIG_BINFMT_AOUT=m 158CONFIG_BINFMT_AOUT=m
167CONFIG_BINFMT_MISC=m 159CONFIG_BINFMT_MISC=m
168# CONFIG_HEARTBEAT is not set 160# CONFIG_HEARTBEAT is not set
@@ -209,7 +201,6 @@ CONFIG_INET_TCP_DIAG=m
209CONFIG_TCP_CONG_CUBIC=y 201CONFIG_TCP_CONG_CUBIC=y
210CONFIG_DEFAULT_TCP_CONG="cubic" 202CONFIG_DEFAULT_TCP_CONG="cubic"
211# CONFIG_TCP_MD5SIG is not set 203# CONFIG_TCP_MD5SIG is not set
212# CONFIG_IP_VS is not set
213CONFIG_IPV6=m 204CONFIG_IPV6=m
214CONFIG_IPV6_PRIVACY=y 205CONFIG_IPV6_PRIVACY=y
215CONFIG_IPV6_ROUTER_PREF=y 206CONFIG_IPV6_ROUTER_PREF=y
@@ -259,13 +250,14 @@ CONFIG_NF_CONNTRACK_SANE=m
259CONFIG_NF_CONNTRACK_SIP=m 250CONFIG_NF_CONNTRACK_SIP=m
260CONFIG_NF_CONNTRACK_TFTP=m 251CONFIG_NF_CONNTRACK_TFTP=m
261# CONFIG_NF_CT_NETLINK is not set 252# CONFIG_NF_CT_NETLINK is not set
253# CONFIG_NETFILTER_TPROXY is not set
262CONFIG_NETFILTER_XTABLES=m 254CONFIG_NETFILTER_XTABLES=m
263CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 255CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
264CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 256CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
265CONFIG_NETFILTER_XT_TARGET_DSCP=m 257CONFIG_NETFILTER_XT_TARGET_DSCP=m
266CONFIG_NETFILTER_XT_TARGET_MARK=m 258CONFIG_NETFILTER_XT_TARGET_MARK=m
267CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
268CONFIG_NETFILTER_XT_TARGET_NFLOG=m 259CONFIG_NETFILTER_XT_TARGET_NFLOG=m
260CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
269CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 261CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
270CONFIG_NETFILTER_XT_TARGET_RATEEST=m 262CONFIG_NETFILTER_XT_TARGET_RATEEST=m
271CONFIG_NETFILTER_XT_TARGET_TRACE=m 263CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -279,19 +271,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
279CONFIG_NETFILTER_XT_MATCH_DCCP=m 271CONFIG_NETFILTER_XT_MATCH_DCCP=m
280CONFIG_NETFILTER_XT_MATCH_DSCP=m 272CONFIG_NETFILTER_XT_MATCH_DSCP=m
281CONFIG_NETFILTER_XT_MATCH_ESP=m 273CONFIG_NETFILTER_XT_MATCH_ESP=m
274CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
282CONFIG_NETFILTER_XT_MATCH_HELPER=m 275CONFIG_NETFILTER_XT_MATCH_HELPER=m
283CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 276CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
284CONFIG_NETFILTER_XT_MATCH_LENGTH=m 277CONFIG_NETFILTER_XT_MATCH_LENGTH=m
285CONFIG_NETFILTER_XT_MATCH_LIMIT=m 278CONFIG_NETFILTER_XT_MATCH_LIMIT=m
286CONFIG_NETFILTER_XT_MATCH_MAC=m 279CONFIG_NETFILTER_XT_MATCH_MAC=m
287CONFIG_NETFILTER_XT_MATCH_MARK=m 280CONFIG_NETFILTER_XT_MATCH_MARK=m
281CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
288CONFIG_NETFILTER_XT_MATCH_OWNER=m 282CONFIG_NETFILTER_XT_MATCH_OWNER=m
289CONFIG_NETFILTER_XT_MATCH_POLICY=m 283CONFIG_NETFILTER_XT_MATCH_POLICY=m
290CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
291CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 284CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
292CONFIG_NETFILTER_XT_MATCH_QUOTA=m 285CONFIG_NETFILTER_XT_MATCH_QUOTA=m
293CONFIG_NETFILTER_XT_MATCH_RATEEST=m 286CONFIG_NETFILTER_XT_MATCH_RATEEST=m
294CONFIG_NETFILTER_XT_MATCH_REALM=m 287CONFIG_NETFILTER_XT_MATCH_REALM=m
288CONFIG_NETFILTER_XT_MATCH_RECENT=m
289# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
295CONFIG_NETFILTER_XT_MATCH_SCTP=m 290CONFIG_NETFILTER_XT_MATCH_SCTP=m
296CONFIG_NETFILTER_XT_MATCH_STATE=m 291CONFIG_NETFILTER_XT_MATCH_STATE=m
297CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 292CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -299,20 +294,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
299CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 294CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
300CONFIG_NETFILTER_XT_MATCH_TIME=m 295CONFIG_NETFILTER_XT_MATCH_TIME=m
301CONFIG_NETFILTER_XT_MATCH_U32=m 296CONFIG_NETFILTER_XT_MATCH_U32=m
302CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 297# CONFIG_IP_VS is not set
303 298
304# 299#
305# IP: Netfilter Configuration 300# IP: Netfilter Configuration
306# 301#
302CONFIG_NF_DEFRAG_IPV4=m
307CONFIG_NF_CONNTRACK_IPV4=m 303CONFIG_NF_CONNTRACK_IPV4=m
308CONFIG_NF_CONNTRACK_PROC_COMPAT=y 304CONFIG_NF_CONNTRACK_PROC_COMPAT=y
309CONFIG_IP_NF_QUEUE=m 305CONFIG_IP_NF_QUEUE=m
310CONFIG_IP_NF_IPTABLES=m 306CONFIG_IP_NF_IPTABLES=m
311CONFIG_IP_NF_MATCH_RECENT=m 307CONFIG_IP_NF_MATCH_ADDRTYPE=m
312CONFIG_IP_NF_MATCH_ECN=m
313CONFIG_IP_NF_MATCH_AH=m 308CONFIG_IP_NF_MATCH_AH=m
309CONFIG_IP_NF_MATCH_ECN=m
314CONFIG_IP_NF_MATCH_TTL=m 310CONFIG_IP_NF_MATCH_TTL=m
315CONFIG_IP_NF_MATCH_ADDRTYPE=m
316CONFIG_IP_NF_FILTER=m 311CONFIG_IP_NF_FILTER=m
317CONFIG_IP_NF_TARGET_REJECT=m 312CONFIG_IP_NF_TARGET_REJECT=m
318CONFIG_IP_NF_TARGET_LOG=m 313CONFIG_IP_NF_TARGET_LOG=m
@@ -320,8 +315,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
320CONFIG_NF_NAT=m 315CONFIG_NF_NAT=m
321CONFIG_NF_NAT_NEEDED=y 316CONFIG_NF_NAT_NEEDED=y
322CONFIG_IP_NF_TARGET_MASQUERADE=m 317CONFIG_IP_NF_TARGET_MASQUERADE=m
323CONFIG_IP_NF_TARGET_REDIRECT=m
324CONFIG_IP_NF_TARGET_NETMAP=m 318CONFIG_IP_NF_TARGET_NETMAP=m
319CONFIG_IP_NF_TARGET_REDIRECT=m
325CONFIG_NF_NAT_SNMP_BASIC=m 320CONFIG_NF_NAT_SNMP_BASIC=m
326CONFIG_NF_NAT_PROTO_GRE=m 321CONFIG_NF_NAT_PROTO_GRE=m
327CONFIG_NF_NAT_PROTO_UDPLITE=m 322CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -334,9 +329,9 @@ CONFIG_NF_NAT_PPTP=m
334CONFIG_NF_NAT_H323=m 329CONFIG_NF_NAT_H323=m
335CONFIG_NF_NAT_SIP=m 330CONFIG_NF_NAT_SIP=m
336CONFIG_IP_NF_MANGLE=m 331CONFIG_IP_NF_MANGLE=m
332CONFIG_IP_NF_TARGET_CLUSTERIP=m
337CONFIG_IP_NF_TARGET_ECN=m 333CONFIG_IP_NF_TARGET_ECN=m
338CONFIG_IP_NF_TARGET_TTL=m 334CONFIG_IP_NF_TARGET_TTL=m
339CONFIG_IP_NF_TARGET_CLUSTERIP=m
340CONFIG_IP_NF_RAW=m 335CONFIG_IP_NF_RAW=m
341CONFIG_IP_NF_ARPTABLES=m 336CONFIG_IP_NF_ARPTABLES=m
342CONFIG_IP_NF_ARPFILTER=m 337CONFIG_IP_NF_ARPFILTER=m
@@ -348,16 +343,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
348CONFIG_NF_CONNTRACK_IPV6=m 343CONFIG_NF_CONNTRACK_IPV6=m
349CONFIG_IP6_NF_QUEUE=m 344CONFIG_IP6_NF_QUEUE=m
350CONFIG_IP6_NF_IPTABLES=m 345CONFIG_IP6_NF_IPTABLES=m
351CONFIG_IP6_NF_MATCH_RT=m 346CONFIG_IP6_NF_MATCH_AH=m
352CONFIG_IP6_NF_MATCH_OPTS=m 347CONFIG_IP6_NF_MATCH_EUI64=m
353CONFIG_IP6_NF_MATCH_FRAG=m 348CONFIG_IP6_NF_MATCH_FRAG=m
349CONFIG_IP6_NF_MATCH_OPTS=m
354CONFIG_IP6_NF_MATCH_HL=m 350CONFIG_IP6_NF_MATCH_HL=m
355CONFIG_IP6_NF_MATCH_IPV6HEADER=m 351CONFIG_IP6_NF_MATCH_IPV6HEADER=m
356CONFIG_IP6_NF_MATCH_AH=m
357CONFIG_IP6_NF_MATCH_MH=m 352CONFIG_IP6_NF_MATCH_MH=m
358CONFIG_IP6_NF_MATCH_EUI64=m 353CONFIG_IP6_NF_MATCH_RT=m
359CONFIG_IP6_NF_FILTER=m
360CONFIG_IP6_NF_TARGET_LOG=m 354CONFIG_IP6_NF_TARGET_LOG=m
355CONFIG_IP6_NF_FILTER=m
361CONFIG_IP6_NF_TARGET_REJECT=m 356CONFIG_IP6_NF_TARGET_REJECT=m
362CONFIG_IP6_NF_MANGLE=m 357CONFIG_IP6_NF_MANGLE=m
363CONFIG_IP6_NF_TARGET_HL=m 358CONFIG_IP6_NF_TARGET_HL=m
@@ -384,6 +379,7 @@ CONFIG_SCTP_HMAC_MD5=y
384# CONFIG_TIPC is not set 379# CONFIG_TIPC is not set
385# CONFIG_ATM is not set 380# CONFIG_ATM is not set
386# CONFIG_BRIDGE is not set 381# CONFIG_BRIDGE is not set
382# CONFIG_NET_DSA is not set
387# CONFIG_VLAN_8021Q is not set 383# CONFIG_VLAN_8021Q is not set
388# CONFIG_DECNET is not set 384# CONFIG_DECNET is not set
389CONFIG_LLC=m 385CONFIG_LLC=m
@@ -410,19 +406,8 @@ CONFIG_NET_CLS_ROUTE=y
410# CONFIG_IRDA is not set 406# CONFIG_IRDA is not set
411# CONFIG_BT is not set 407# CONFIG_BT is not set
412# CONFIG_AF_RXRPC is not set 408# CONFIG_AF_RXRPC is not set
413 409# CONFIG_PHONET is not set
414# 410# CONFIG_WIRELESS is not set
415# Wireless
416#
417# CONFIG_CFG80211 is not set
418CONFIG_WIRELESS_EXT=y
419# CONFIG_WIRELESS_EXT_SYSFS is not set
420# CONFIG_MAC80211 is not set
421CONFIG_IEEE80211=m
422# CONFIG_IEEE80211_DEBUG is not set
423CONFIG_IEEE80211_CRYPT_WEP=m
424CONFIG_IEEE80211_CRYPT_CCMP=m
425CONFIG_IEEE80211_CRYPT_TKIP=m
426# CONFIG_RFKILL is not set 411# CONFIG_RFKILL is not set
427# CONFIG_NET_9P is not set 412# CONFIG_NET_9P is not set
428 413
@@ -460,21 +445,20 @@ CONFIG_ATA_OVER_ETH=m
460CONFIG_MISC_DEVICES=y 445CONFIG_MISC_DEVICES=y
461# CONFIG_EEPROM_93CX6 is not set 446# CONFIG_EEPROM_93CX6 is not set
462# CONFIG_ENCLOSURE_SERVICES is not set 447# CONFIG_ENCLOSURE_SERVICES is not set
448# CONFIG_C2PORT is not set
463CONFIG_HAVE_IDE=y 449CONFIG_HAVE_IDE=y
464CONFIG_IDE=y 450CONFIG_IDE=y
465CONFIG_BLK_DEV_IDE=y
466 451
467# 452#
468# Please see Documentation/ide/ide.txt for help/info on IDE drives 453# Please see Documentation/ide/ide.txt for help/info on IDE drives
469# 454#
470CONFIG_IDE_ATAPI=y
471# CONFIG_BLK_DEV_IDE_SATA is not set 455# CONFIG_BLK_DEV_IDE_SATA is not set
472CONFIG_BLK_DEV_IDEDISK=y 456CONFIG_IDE_GD=y
473# CONFIG_IDEDISK_MULTI_MODE is not set 457CONFIG_IDE_GD_ATA=y
458# CONFIG_IDE_GD_ATAPI is not set
474CONFIG_BLK_DEV_IDECD=y 459CONFIG_BLK_DEV_IDECD=y
475CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 460CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
476# CONFIG_BLK_DEV_IDETAPE is not set 461# CONFIG_BLK_DEV_IDETAPE is not set
477CONFIG_BLK_DEV_IDEFLOPPY=m
478# CONFIG_BLK_DEV_IDESCSI is not set 462# CONFIG_BLK_DEV_IDESCSI is not set
479# CONFIG_IDE_TASK_IOCTL is not set 463# CONFIG_IDE_TASK_IOCTL is not set
480CONFIG_IDE_PROC_FS=y 464CONFIG_IDE_PROC_FS=y
@@ -581,6 +565,9 @@ CONFIG_MACMACE=y
581# CONFIG_IBM_NEW_EMAC_RGMII is not set 565# CONFIG_IBM_NEW_EMAC_RGMII is not set
582# CONFIG_IBM_NEW_EMAC_TAH is not set 566# CONFIG_IBM_NEW_EMAC_TAH is not set
583# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 567# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
568# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
569# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
570# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
584# CONFIG_B44 is not set 571# CONFIG_B44 is not set
585# CONFIG_NETDEV_1000 is not set 572# CONFIG_NETDEV_1000 is not set
586# CONFIG_NETDEV_10000 is not set 573# CONFIG_NETDEV_10000 is not set
@@ -650,6 +637,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
650CONFIG_MOUSE_PS2_SYNAPTICS=y 637CONFIG_MOUSE_PS2_SYNAPTICS=y
651CONFIG_MOUSE_PS2_LIFEBOOK=y 638CONFIG_MOUSE_PS2_LIFEBOOK=y
652CONFIG_MOUSE_PS2_TRACKPOINT=y 639CONFIG_MOUSE_PS2_TRACKPOINT=y
640# CONFIG_MOUSE_PS2_ELANTECH is not set
653# CONFIG_MOUSE_PS2_TOUCHKIT is not set 641# CONFIG_MOUSE_PS2_TOUCHKIT is not set
654CONFIG_MOUSE_SERIAL=m 642CONFIG_MOUSE_SERIAL=m
655# CONFIG_MOUSE_VSXXXAA is not set 643# CONFIG_MOUSE_VSXXXAA is not set
@@ -706,11 +694,11 @@ CONFIG_GEN_RTC_X=y
706# CONFIG_THERMAL is not set 694# CONFIG_THERMAL is not set
707# CONFIG_THERMAL_HWMON is not set 695# CONFIG_THERMAL_HWMON is not set
708# CONFIG_WATCHDOG is not set 696# CONFIG_WATCHDOG is not set
697CONFIG_SSB_POSSIBLE=y
709 698
710# 699#
711# Sonics Silicon Backplane 700# Sonics Silicon Backplane
712# 701#
713CONFIG_SSB_POSSIBLE=y
714# CONFIG_SSB is not set 702# CONFIG_SSB is not set
715 703
716# 704#
@@ -720,6 +708,7 @@ CONFIG_SSB_POSSIBLE=y
720# CONFIG_MFD_SM501 is not set 708# CONFIG_MFD_SM501 is not set
721# CONFIG_HTC_PASIC3 is not set 709# CONFIG_HTC_PASIC3 is not set
722# CONFIG_MFD_TMIO is not set 710# CONFIG_MFD_TMIO is not set
711# CONFIG_REGULATOR is not set
723 712
724# 713#
725# Multimedia devices 714# Multimedia devices
@@ -745,6 +734,7 @@ CONFIG_SSB_POSSIBLE=y
745CONFIG_FB=y 734CONFIG_FB=y
746# CONFIG_FIRMWARE_EDID is not set 735# CONFIG_FIRMWARE_EDID is not set
747# CONFIG_FB_DDC is not set 736# CONFIG_FB_DDC is not set
737# CONFIG_FB_BOOT_VESA_SUPPORT is not set
748CONFIG_FB_CFB_FILLRECT=y 738CONFIG_FB_CFB_FILLRECT=y
749CONFIG_FB_CFB_COPYAREA=y 739CONFIG_FB_CFB_COPYAREA=y
750CONFIG_FB_CFB_IMAGEBLIT=y 740CONFIG_FB_CFB_IMAGEBLIT=y
@@ -768,6 +758,8 @@ CONFIG_FB_MAC=y
768# CONFIG_FB_UVESA is not set 758# CONFIG_FB_UVESA is not set
769# CONFIG_FB_S1D13XXX is not set 759# CONFIG_FB_S1D13XXX is not set
770# CONFIG_FB_VIRTUAL is not set 760# CONFIG_FB_VIRTUAL is not set
761# CONFIG_FB_METRONOME is not set
762# CONFIG_FB_MB862XX is not set
771# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 763# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
772 764
773# 765#
@@ -796,6 +788,12 @@ CONFIG_HID_SUPPORT=y
796CONFIG_HID=m 788CONFIG_HID=m
797# CONFIG_HID_DEBUG is not set 789# CONFIG_HID_DEBUG is not set
798CONFIG_HIDRAW=y 790CONFIG_HIDRAW=y
791# CONFIG_HID_PID is not set
792
793#
794# Special HID drivers
795#
796CONFIG_HID_COMPAT=y
799# CONFIG_USB_SUPPORT is not set 797# CONFIG_USB_SUPPORT is not set
800# CONFIG_MMC is not set 798# CONFIG_MMC is not set
801# CONFIG_MEMSTICK is not set 799# CONFIG_MEMSTICK is not set
@@ -804,6 +802,8 @@ CONFIG_HIDRAW=y
804# CONFIG_RTC_CLASS is not set 802# CONFIG_RTC_CLASS is not set
805# CONFIG_DMADEVICES is not set 803# CONFIG_DMADEVICES is not set
806# CONFIG_UIO is not set 804# CONFIG_UIO is not set
805# CONFIG_STAGING is not set
806CONFIG_STAGING_EXCLUDE_BUILD=y
807 807
808# 808#
809# Character devices 809# Character devices
@@ -820,8 +820,9 @@ CONFIG_EXT2_FS=y
820# CONFIG_EXT2_FS_XIP is not set 820# CONFIG_EXT2_FS_XIP is not set
821CONFIG_EXT3_FS=y 821CONFIG_EXT3_FS=y
822# CONFIG_EXT3_FS_XATTR is not set 822# CONFIG_EXT3_FS_XATTR is not set
823# CONFIG_EXT4DEV_FS is not set 823# CONFIG_EXT4_FS is not set
824CONFIG_JBD=y 824CONFIG_JBD=y
825CONFIG_JBD2=m
825CONFIG_REISERFS_FS=m 826CONFIG_REISERFS_FS=m
826# CONFIG_REISERFS_CHECK is not set 827# CONFIG_REISERFS_CHECK is not set
827# CONFIG_REISERFS_PROC_INFO is not set 828# CONFIG_REISERFS_PROC_INFO is not set
@@ -832,6 +833,7 @@ CONFIG_JFS_FS=m
832# CONFIG_JFS_DEBUG is not set 833# CONFIG_JFS_DEBUG is not set
833# CONFIG_JFS_STATISTICS is not set 834# CONFIG_JFS_STATISTICS is not set
834# CONFIG_FS_POSIX_ACL is not set 835# CONFIG_FS_POSIX_ACL is not set
836CONFIG_FILE_LOCKING=y
835CONFIG_XFS_FS=m 837CONFIG_XFS_FS=m
836# CONFIG_XFS_QUOTA is not set 838# CONFIG_XFS_QUOTA is not set
837# CONFIG_XFS_POSIX_ACL is not set 839# CONFIG_XFS_POSIX_ACL is not set
@@ -843,6 +845,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
843# CONFIG_OCFS2_FS_STATS is not set 845# CONFIG_OCFS2_FS_STATS is not set
844# CONFIG_OCFS2_DEBUG_MASKLOG is not set 846# CONFIG_OCFS2_DEBUG_MASKLOG is not set
845# CONFIG_OCFS2_DEBUG_FS is not set 847# CONFIG_OCFS2_DEBUG_FS is not set
848# CONFIG_OCFS2_COMPAT_JBD is not set
846CONFIG_DNOTIFY=y 849CONFIG_DNOTIFY=y
847CONFIG_INOTIFY=y 850CONFIG_INOTIFY=y
848CONFIG_INOTIFY_USER=y 851CONFIG_INOTIFY_USER=y
@@ -881,6 +884,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
881CONFIG_PROC_FS=y 884CONFIG_PROC_FS=y
882CONFIG_PROC_KCORE=y 885CONFIG_PROC_KCORE=y
883CONFIG_PROC_SYSCTL=y 886CONFIG_PROC_SYSCTL=y
887CONFIG_PROC_PAGE_MONITOR=y
884CONFIG_SYSFS=y 888CONFIG_SYSFS=y
885CONFIG_TMPFS=y 889CONFIG_TMPFS=y
886# CONFIG_TMPFS_POSIX_ACL is not set 890# CONFIG_TMPFS_POSIX_ACL is not set
@@ -923,6 +927,7 @@ CONFIG_EXPORTFS=m
923CONFIG_NFS_COMMON=y 927CONFIG_NFS_COMMON=y
924CONFIG_SUNRPC=m 928CONFIG_SUNRPC=m
925CONFIG_SUNRPC_GSS=m 929CONFIG_SUNRPC_GSS=m
930# CONFIG_SUNRPC_REGISTER_V4 is not set
926CONFIG_RPCSEC_GSS_KRB5=m 931CONFIG_RPCSEC_GSS_KRB5=m
927# CONFIG_RPCSEC_GSS_SPKM3 is not set 932# CONFIG_RPCSEC_GSS_SPKM3 is not set
928CONFIG_SMB_FS=m 933CONFIG_SMB_FS=m
@@ -996,7 +1001,13 @@ CONFIG_MAGIC_SYSRQ=y
996# CONFIG_DEBUG_KERNEL is not set 1001# CONFIG_DEBUG_KERNEL is not set
997CONFIG_DEBUG_BUGVERBOSE=y 1002CONFIG_DEBUG_BUGVERBOSE=y
998CONFIG_DEBUG_MEMORY_INIT=y 1003CONFIG_DEBUG_MEMORY_INIT=y
1004# CONFIG_RCU_CPU_STALL_DETECTOR is not set
999CONFIG_SYSCTL_SYSCALL_CHECK=y 1005CONFIG_SYSCTL_SYSCALL_CHECK=y
1006
1007#
1008# Tracers
1009#
1010# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1000# CONFIG_SAMPLES is not set 1011# CONFIG_SAMPLES is not set
1001 1012
1002# 1013#
@@ -1004,6 +1015,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
1004# 1015#
1005# CONFIG_KEYS is not set 1016# CONFIG_KEYS is not set
1006# CONFIG_SECURITY is not set 1017# CONFIG_SECURITY is not set
1018# CONFIG_SECURITYFS is not set
1007# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1019# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1008CONFIG_XOR_BLOCKS=m 1020CONFIG_XOR_BLOCKS=m
1009CONFIG_ASYNC_CORE=m 1021CONFIG_ASYNC_CORE=m
@@ -1014,10 +1026,12 @@ CONFIG_CRYPTO=y
1014# 1026#
1015# Crypto core or helper 1027# Crypto core or helper
1016# 1028#
1029# CONFIG_CRYPTO_FIPS is not set
1017CONFIG_CRYPTO_ALGAPI=y 1030CONFIG_CRYPTO_ALGAPI=y
1018CONFIG_CRYPTO_AEAD=m 1031CONFIG_CRYPTO_AEAD=y
1019CONFIG_CRYPTO_BLKCIPHER=m 1032CONFIG_CRYPTO_BLKCIPHER=y
1020CONFIG_CRYPTO_HASH=y 1033CONFIG_CRYPTO_HASH=y
1034CONFIG_CRYPTO_RNG=y
1021CONFIG_CRYPTO_MANAGER=y 1035CONFIG_CRYPTO_MANAGER=y
1022CONFIG_CRYPTO_GF128MUL=m 1036CONFIG_CRYPTO_GF128MUL=m
1023CONFIG_CRYPTO_NULL=m 1037CONFIG_CRYPTO_NULL=m
@@ -1091,14 +1105,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1091# 1105#
1092CONFIG_CRYPTO_DEFLATE=m 1106CONFIG_CRYPTO_DEFLATE=m
1093CONFIG_CRYPTO_LZO=m 1107CONFIG_CRYPTO_LZO=m
1108
1109#
1110# Random Number Generation
1111#
1112# CONFIG_CRYPTO_ANSI_CPRNG is not set
1094# CONFIG_CRYPTO_HW is not set 1113# CONFIG_CRYPTO_HW is not set
1095 1114
1096# 1115#
1097# Library routines 1116# Library routines
1098# 1117#
1099CONFIG_BITREVERSE=y 1118CONFIG_BITREVERSE=y
1100# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1101# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1102CONFIG_CRC_CCITT=m 1119CONFIG_CRC_CCITT=m
1103CONFIG_CRC16=m 1120CONFIG_CRC16=m
1104CONFIG_CRC_T10DIF=y 1121CONFIG_CRC_T10DIF=y
diff --git a/arch/m68k/configs/multi_defconfig b/arch/m68k/configs/multi_defconfig
index 1a806102b999..70693588031e 100644
--- a/arch/m68k/configs/multi_defconfig
+++ b/arch/m68k/configs/multi_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:07 2008 4# Tue Dec 2 20:27:48 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16# CONFIG_NO_DMA is not set 16# CONFIG_NO_DMA is not set
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,11 +105,11 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
122# CONFIG_SUN3 is not set
123CONFIG_AMIGA=y 113CONFIG_AMIGA=y
124CONFIG_ATARI=y 114CONFIG_ATARI=y
125CONFIG_MAC=y 115CONFIG_MAC=y
@@ -154,19 +144,21 @@ CONFIG_DISCONTIGMEM_MANUAL=y
154CONFIG_DISCONTIGMEM=y 144CONFIG_DISCONTIGMEM=y
155CONFIG_FLAT_NODE_MEM_MAP=y 145CONFIG_FLAT_NODE_MEM_MAP=y
156CONFIG_NEED_MULTIPLE_NODES=y 146CONFIG_NEED_MULTIPLE_NODES=y
157# CONFIG_SPARSEMEM_STATIC is not set
158# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
159CONFIG_PAGEFLAGS_EXTENDED=y 147CONFIG_PAGEFLAGS_EXTENDED=y
160CONFIG_SPLIT_PTLOCK_CPUS=4 148CONFIG_SPLIT_PTLOCK_CPUS=4
161# CONFIG_RESOURCES_64BIT is not set 149# CONFIG_RESOURCES_64BIT is not set
150# CONFIG_PHYS_ADDR_T_64BIT is not set
162CONFIG_ZONE_DMA_FLAG=1 151CONFIG_ZONE_DMA_FLAG=1
163CONFIG_BOUNCE=y 152CONFIG_BOUNCE=y
164CONFIG_VIRT_TO_BUS=y 153CONFIG_VIRT_TO_BUS=y
154CONFIG_UNEVICTABLE_LRU=y
165 155
166# 156#
167# General setup 157# General setup
168# 158#
169CONFIG_BINFMT_ELF=y 159CONFIG_BINFMT_ELF=y
160# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
161CONFIG_HAVE_AOUT=y
170CONFIG_BINFMT_AOUT=m 162CONFIG_BINFMT_AOUT=m
171CONFIG_BINFMT_MISC=m 163CONFIG_BINFMT_MISC=m
172CONFIG_ZORRO=y 164CONFIG_ZORRO=y
@@ -222,7 +214,6 @@ CONFIG_INET_TCP_DIAG=m
222CONFIG_TCP_CONG_CUBIC=y 214CONFIG_TCP_CONG_CUBIC=y
223CONFIG_DEFAULT_TCP_CONG="cubic" 215CONFIG_DEFAULT_TCP_CONG="cubic"
224# CONFIG_TCP_MD5SIG is not set 216# CONFIG_TCP_MD5SIG is not set
225# CONFIG_IP_VS is not set
226CONFIG_IPV6=m 217CONFIG_IPV6=m
227CONFIG_IPV6_PRIVACY=y 218CONFIG_IPV6_PRIVACY=y
228CONFIG_IPV6_ROUTER_PREF=y 219CONFIG_IPV6_ROUTER_PREF=y
@@ -272,13 +263,14 @@ CONFIG_NF_CONNTRACK_SANE=m
272CONFIG_NF_CONNTRACK_SIP=m 263CONFIG_NF_CONNTRACK_SIP=m
273CONFIG_NF_CONNTRACK_TFTP=m 264CONFIG_NF_CONNTRACK_TFTP=m
274# CONFIG_NF_CT_NETLINK is not set 265# CONFIG_NF_CT_NETLINK is not set
266# CONFIG_NETFILTER_TPROXY is not set
275CONFIG_NETFILTER_XTABLES=m 267CONFIG_NETFILTER_XTABLES=m
276CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 268CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
277CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 269CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
278CONFIG_NETFILTER_XT_TARGET_DSCP=m 270CONFIG_NETFILTER_XT_TARGET_DSCP=m
279CONFIG_NETFILTER_XT_TARGET_MARK=m 271CONFIG_NETFILTER_XT_TARGET_MARK=m
280CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
281CONFIG_NETFILTER_XT_TARGET_NFLOG=m 272CONFIG_NETFILTER_XT_TARGET_NFLOG=m
273CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
282CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 274CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
283CONFIG_NETFILTER_XT_TARGET_RATEEST=m 275CONFIG_NETFILTER_XT_TARGET_RATEEST=m
284CONFIG_NETFILTER_XT_TARGET_TRACE=m 276CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -292,19 +284,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
292CONFIG_NETFILTER_XT_MATCH_DCCP=m 284CONFIG_NETFILTER_XT_MATCH_DCCP=m
293CONFIG_NETFILTER_XT_MATCH_DSCP=m 285CONFIG_NETFILTER_XT_MATCH_DSCP=m
294CONFIG_NETFILTER_XT_MATCH_ESP=m 286CONFIG_NETFILTER_XT_MATCH_ESP=m
287CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
295CONFIG_NETFILTER_XT_MATCH_HELPER=m 288CONFIG_NETFILTER_XT_MATCH_HELPER=m
296CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 289CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
297CONFIG_NETFILTER_XT_MATCH_LENGTH=m 290CONFIG_NETFILTER_XT_MATCH_LENGTH=m
298CONFIG_NETFILTER_XT_MATCH_LIMIT=m 291CONFIG_NETFILTER_XT_MATCH_LIMIT=m
299CONFIG_NETFILTER_XT_MATCH_MAC=m 292CONFIG_NETFILTER_XT_MATCH_MAC=m
300CONFIG_NETFILTER_XT_MATCH_MARK=m 293CONFIG_NETFILTER_XT_MATCH_MARK=m
294CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
301CONFIG_NETFILTER_XT_MATCH_OWNER=m 295CONFIG_NETFILTER_XT_MATCH_OWNER=m
302CONFIG_NETFILTER_XT_MATCH_POLICY=m 296CONFIG_NETFILTER_XT_MATCH_POLICY=m
303CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
304CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 297CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
305CONFIG_NETFILTER_XT_MATCH_QUOTA=m 298CONFIG_NETFILTER_XT_MATCH_QUOTA=m
306CONFIG_NETFILTER_XT_MATCH_RATEEST=m 299CONFIG_NETFILTER_XT_MATCH_RATEEST=m
307CONFIG_NETFILTER_XT_MATCH_REALM=m 300CONFIG_NETFILTER_XT_MATCH_REALM=m
301CONFIG_NETFILTER_XT_MATCH_RECENT=m
302# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
308CONFIG_NETFILTER_XT_MATCH_SCTP=m 303CONFIG_NETFILTER_XT_MATCH_SCTP=m
309CONFIG_NETFILTER_XT_MATCH_STATE=m 304CONFIG_NETFILTER_XT_MATCH_STATE=m
310CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 305CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -312,20 +307,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
312CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 307CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
313CONFIG_NETFILTER_XT_MATCH_TIME=m 308CONFIG_NETFILTER_XT_MATCH_TIME=m
314CONFIG_NETFILTER_XT_MATCH_U32=m 309CONFIG_NETFILTER_XT_MATCH_U32=m
315CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 310# CONFIG_IP_VS is not set
316 311
317# 312#
318# IP: Netfilter Configuration 313# IP: Netfilter Configuration
319# 314#
315CONFIG_NF_DEFRAG_IPV4=m
320CONFIG_NF_CONNTRACK_IPV4=m 316CONFIG_NF_CONNTRACK_IPV4=m
321CONFIG_NF_CONNTRACK_PROC_COMPAT=y 317CONFIG_NF_CONNTRACK_PROC_COMPAT=y
322CONFIG_IP_NF_QUEUE=m 318CONFIG_IP_NF_QUEUE=m
323CONFIG_IP_NF_IPTABLES=m 319CONFIG_IP_NF_IPTABLES=m
324CONFIG_IP_NF_MATCH_RECENT=m 320CONFIG_IP_NF_MATCH_ADDRTYPE=m
325CONFIG_IP_NF_MATCH_ECN=m
326CONFIG_IP_NF_MATCH_AH=m 321CONFIG_IP_NF_MATCH_AH=m
322CONFIG_IP_NF_MATCH_ECN=m
327CONFIG_IP_NF_MATCH_TTL=m 323CONFIG_IP_NF_MATCH_TTL=m
328CONFIG_IP_NF_MATCH_ADDRTYPE=m
329CONFIG_IP_NF_FILTER=m 324CONFIG_IP_NF_FILTER=m
330CONFIG_IP_NF_TARGET_REJECT=m 325CONFIG_IP_NF_TARGET_REJECT=m
331CONFIG_IP_NF_TARGET_LOG=m 326CONFIG_IP_NF_TARGET_LOG=m
@@ -333,8 +328,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
333CONFIG_NF_NAT=m 328CONFIG_NF_NAT=m
334CONFIG_NF_NAT_NEEDED=y 329CONFIG_NF_NAT_NEEDED=y
335CONFIG_IP_NF_TARGET_MASQUERADE=m 330CONFIG_IP_NF_TARGET_MASQUERADE=m
336CONFIG_IP_NF_TARGET_REDIRECT=m
337CONFIG_IP_NF_TARGET_NETMAP=m 331CONFIG_IP_NF_TARGET_NETMAP=m
332CONFIG_IP_NF_TARGET_REDIRECT=m
338CONFIG_NF_NAT_SNMP_BASIC=m 333CONFIG_NF_NAT_SNMP_BASIC=m
339CONFIG_NF_NAT_PROTO_GRE=m 334CONFIG_NF_NAT_PROTO_GRE=m
340CONFIG_NF_NAT_PROTO_UDPLITE=m 335CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -347,9 +342,9 @@ CONFIG_NF_NAT_PPTP=m
347CONFIG_NF_NAT_H323=m 342CONFIG_NF_NAT_H323=m
348CONFIG_NF_NAT_SIP=m 343CONFIG_NF_NAT_SIP=m
349CONFIG_IP_NF_MANGLE=m 344CONFIG_IP_NF_MANGLE=m
345CONFIG_IP_NF_TARGET_CLUSTERIP=m
350CONFIG_IP_NF_TARGET_ECN=m 346CONFIG_IP_NF_TARGET_ECN=m
351CONFIG_IP_NF_TARGET_TTL=m 347CONFIG_IP_NF_TARGET_TTL=m
352CONFIG_IP_NF_TARGET_CLUSTERIP=m
353CONFIG_IP_NF_RAW=m 348CONFIG_IP_NF_RAW=m
354CONFIG_IP_NF_ARPTABLES=m 349CONFIG_IP_NF_ARPTABLES=m
355CONFIG_IP_NF_ARPFILTER=m 350CONFIG_IP_NF_ARPFILTER=m
@@ -361,16 +356,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
361CONFIG_NF_CONNTRACK_IPV6=m 356CONFIG_NF_CONNTRACK_IPV6=m
362CONFIG_IP6_NF_QUEUE=m 357CONFIG_IP6_NF_QUEUE=m
363CONFIG_IP6_NF_IPTABLES=m 358CONFIG_IP6_NF_IPTABLES=m
364CONFIG_IP6_NF_MATCH_RT=m 359CONFIG_IP6_NF_MATCH_AH=m
365CONFIG_IP6_NF_MATCH_OPTS=m 360CONFIG_IP6_NF_MATCH_EUI64=m
366CONFIG_IP6_NF_MATCH_FRAG=m 361CONFIG_IP6_NF_MATCH_FRAG=m
362CONFIG_IP6_NF_MATCH_OPTS=m
367CONFIG_IP6_NF_MATCH_HL=m 363CONFIG_IP6_NF_MATCH_HL=m
368CONFIG_IP6_NF_MATCH_IPV6HEADER=m 364CONFIG_IP6_NF_MATCH_IPV6HEADER=m
369CONFIG_IP6_NF_MATCH_AH=m
370CONFIG_IP6_NF_MATCH_MH=m 365CONFIG_IP6_NF_MATCH_MH=m
371CONFIG_IP6_NF_MATCH_EUI64=m 366CONFIG_IP6_NF_MATCH_RT=m
372CONFIG_IP6_NF_FILTER=m
373CONFIG_IP6_NF_TARGET_LOG=m 367CONFIG_IP6_NF_TARGET_LOG=m
368CONFIG_IP6_NF_FILTER=m
374CONFIG_IP6_NF_TARGET_REJECT=m 369CONFIG_IP6_NF_TARGET_REJECT=m
375CONFIG_IP6_NF_MANGLE=m 370CONFIG_IP6_NF_MANGLE=m
376CONFIG_IP6_NF_TARGET_HL=m 371CONFIG_IP6_NF_TARGET_HL=m
@@ -397,6 +392,7 @@ CONFIG_SCTP_HMAC_MD5=y
397# CONFIG_TIPC is not set 392# CONFIG_TIPC is not set
398# CONFIG_ATM is not set 393# CONFIG_ATM is not set
399# CONFIG_BRIDGE is not set 394# CONFIG_BRIDGE is not set
395# CONFIG_NET_DSA is not set
400# CONFIG_VLAN_8021Q is not set 396# CONFIG_VLAN_8021Q is not set
401# CONFIG_DECNET is not set 397# CONFIG_DECNET is not set
402CONFIG_LLC=m 398CONFIG_LLC=m
@@ -424,19 +420,8 @@ CONFIG_NET_CLS_ROUTE=y
424# CONFIG_IRDA is not set 420# CONFIG_IRDA is not set
425# CONFIG_BT is not set 421# CONFIG_BT is not set
426# CONFIG_AF_RXRPC is not set 422# CONFIG_AF_RXRPC is not set
427 423# CONFIG_PHONET is not set
428# 424# CONFIG_WIRELESS is not set
429# Wireless
430#
431# CONFIG_CFG80211 is not set
432CONFIG_WIRELESS_EXT=y
433# CONFIG_WIRELESS_EXT_SYSFS is not set
434# CONFIG_MAC80211 is not set
435CONFIG_IEEE80211=m
436# CONFIG_IEEE80211_DEBUG is not set
437CONFIG_IEEE80211_CRYPT_WEP=m
438CONFIG_IEEE80211_CRYPT_CCMP=m
439CONFIG_IEEE80211_CRYPT_TKIP=m
440# CONFIG_RFKILL is not set 425# CONFIG_RFKILL is not set
441# CONFIG_NET_9P is not set 426# CONFIG_NET_9P is not set
442 427
@@ -486,21 +471,20 @@ CONFIG_ATA_OVER_ETH=m
486CONFIG_MISC_DEVICES=y 471CONFIG_MISC_DEVICES=y
487# CONFIG_EEPROM_93CX6 is not set 472# CONFIG_EEPROM_93CX6 is not set
488# CONFIG_ENCLOSURE_SERVICES is not set 473# CONFIG_ENCLOSURE_SERVICES is not set
474# CONFIG_C2PORT is not set
489CONFIG_HAVE_IDE=y 475CONFIG_HAVE_IDE=y
490CONFIG_IDE=y 476CONFIG_IDE=y
491CONFIG_BLK_DEV_IDE=y
492 477
493# 478#
494# Please see Documentation/ide/ide.txt for help/info on IDE drives 479# Please see Documentation/ide/ide.txt for help/info on IDE drives
495# 480#
496CONFIG_IDE_ATAPI=y
497# CONFIG_BLK_DEV_IDE_SATA is not set 481# CONFIG_BLK_DEV_IDE_SATA is not set
498CONFIG_BLK_DEV_IDEDISK=y 482CONFIG_IDE_GD=y
499# CONFIG_IDEDISK_MULTI_MODE is not set 483CONFIG_IDE_GD_ATA=y
484# CONFIG_IDE_GD_ATAPI is not set
500CONFIG_BLK_DEV_IDECD=y 485CONFIG_BLK_DEV_IDECD=y
501CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 486CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
502# CONFIG_BLK_DEV_IDETAPE is not set 487# CONFIG_BLK_DEV_IDETAPE is not set
503CONFIG_BLK_DEV_IDEFLOPPY=m
504# CONFIG_BLK_DEV_IDESCSI is not set 488# CONFIG_BLK_DEV_IDESCSI is not set
505# CONFIG_IDE_TASK_IOCTL is not set 489# CONFIG_IDE_TASK_IOCTL is not set
506CONFIG_IDE_PROC_FS=y 490CONFIG_IDE_PROC_FS=y
@@ -629,7 +613,7 @@ CONFIG_VETH=m
629# CONFIG_ARCNET is not set 613# CONFIG_ARCNET is not set
630# CONFIG_PHYLIB is not set 614# CONFIG_PHYLIB is not set
631CONFIG_NET_ETHERNET=y 615CONFIG_NET_ETHERNET=y
632CONFIG_MII=m 616CONFIG_MII=y
633CONFIG_ARIADNE=m 617CONFIG_ARIADNE=m
634CONFIG_A2065=m 618CONFIG_A2065=m
635CONFIG_HYDRA=m 619CONFIG_HYDRA=m
@@ -657,8 +641,12 @@ CONFIG_NE2000=m
657# CONFIG_IBM_NEW_EMAC_RGMII is not set 641# CONFIG_IBM_NEW_EMAC_RGMII is not set
658# CONFIG_IBM_NEW_EMAC_TAH is not set 642# CONFIG_IBM_NEW_EMAC_TAH is not set
659# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 643# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
644# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
645# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
646# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
660# CONFIG_NET_PCI is not set 647# CONFIG_NET_PCI is not set
661# CONFIG_B44 is not set 648# CONFIG_B44 is not set
649# CONFIG_CS89x0 is not set
662# CONFIG_NET_POCKET is not set 650# CONFIG_NET_POCKET is not set
663# CONFIG_NETDEV_1000 is not set 651# CONFIG_NETDEV_1000 is not set
664# CONFIG_NETDEV_10000 is not set 652# CONFIG_NETDEV_10000 is not set
@@ -735,6 +723,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
735CONFIG_MOUSE_PS2_SYNAPTICS=y 723CONFIG_MOUSE_PS2_SYNAPTICS=y
736CONFIG_MOUSE_PS2_LIFEBOOK=y 724CONFIG_MOUSE_PS2_LIFEBOOK=y
737CONFIG_MOUSE_PS2_TRACKPOINT=y 725CONFIG_MOUSE_PS2_TRACKPOINT=y
726# CONFIG_MOUSE_PS2_ELANTECH is not set
738# CONFIG_MOUSE_PS2_TOUCHKIT is not set 727# CONFIG_MOUSE_PS2_TOUCHKIT is not set
739CONFIG_MOUSE_SERIAL=m 728CONFIG_MOUSE_SERIAL=m
740# CONFIG_MOUSE_INPORT is not set 729# CONFIG_MOUSE_INPORT is not set
@@ -832,11 +821,11 @@ CONFIG_GEN_RTC_X=y
832# CONFIG_THERMAL is not set 821# CONFIG_THERMAL is not set
833# CONFIG_THERMAL_HWMON is not set 822# CONFIG_THERMAL_HWMON is not set
834# CONFIG_WATCHDOG is not set 823# CONFIG_WATCHDOG is not set
824CONFIG_SSB_POSSIBLE=y
835 825
836# 826#
837# Sonics Silicon Backplane 827# Sonics Silicon Backplane
838# 828#
839CONFIG_SSB_POSSIBLE=y
840# CONFIG_SSB is not set 829# CONFIG_SSB is not set
841 830
842# 831#
@@ -846,6 +835,7 @@ CONFIG_SSB_POSSIBLE=y
846# CONFIG_MFD_SM501 is not set 835# CONFIG_MFD_SM501 is not set
847# CONFIG_HTC_PASIC3 is not set 836# CONFIG_HTC_PASIC3 is not set
848# CONFIG_MFD_TMIO is not set 837# CONFIG_MFD_TMIO is not set
838# CONFIG_REGULATOR is not set
849 839
850# 840#
851# Multimedia devices 841# Multimedia devices
@@ -871,6 +861,7 @@ CONFIG_SSB_POSSIBLE=y
871CONFIG_FB=y 861CONFIG_FB=y
872# CONFIG_FIRMWARE_EDID is not set 862# CONFIG_FIRMWARE_EDID is not set
873# CONFIG_FB_DDC is not set 863# CONFIG_FB_DDC is not set
864# CONFIG_FB_BOOT_VESA_SUPPORT is not set
874CONFIG_FB_CFB_FILLRECT=y 865CONFIG_FB_CFB_FILLRECT=y
875CONFIG_FB_CFB_COPYAREA=y 866CONFIG_FB_CFB_COPYAREA=y
876CONFIG_FB_CFB_IMAGEBLIT=y 867CONFIG_FB_CFB_IMAGEBLIT=y
@@ -905,6 +896,8 @@ CONFIG_FB_HP300=y
905# CONFIG_FB_S1D13XXX is not set 896# CONFIG_FB_S1D13XXX is not set
906# CONFIG_FB_ATY is not set 897# CONFIG_FB_ATY is not set
907# CONFIG_FB_VIRTUAL is not set 898# CONFIG_FB_VIRTUAL is not set
899# CONFIG_FB_METRONOME is not set
900# CONFIG_FB_MB862XX is not set
908# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 901# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
909 902
910# 903#
@@ -930,6 +923,7 @@ CONFIG_LOGO_LINUX_VGA16=y
930CONFIG_LOGO_LINUX_CLUT224=y 923CONFIG_LOGO_LINUX_CLUT224=y
931CONFIG_LOGO_MAC_CLUT224=y 924CONFIG_LOGO_MAC_CLUT224=y
932CONFIG_SOUND=m 925CONFIG_SOUND=m
926CONFIG_SOUND_OSS_CORE=y
933CONFIG_DMASOUND_ATARI=m 927CONFIG_DMASOUND_ATARI=m
934CONFIG_DMASOUND_PAULA=m 928CONFIG_DMASOUND_PAULA=m
935CONFIG_DMASOUND_Q40=m 929CONFIG_DMASOUND_Q40=m
@@ -938,6 +932,12 @@ CONFIG_HID_SUPPORT=y
938CONFIG_HID=m 932CONFIG_HID=m
939# CONFIG_HID_DEBUG is not set 933# CONFIG_HID_DEBUG is not set
940CONFIG_HIDRAW=y 934CONFIG_HIDRAW=y
935# CONFIG_HID_PID is not set
936
937#
938# Special HID drivers
939#
940CONFIG_HID_COMPAT=y
941# CONFIG_USB_SUPPORT is not set 941# CONFIG_USB_SUPPORT is not set
942# CONFIG_MMC is not set 942# CONFIG_MMC is not set
943# CONFIG_MEMSTICK is not set 943# CONFIG_MEMSTICK is not set
@@ -947,6 +947,8 @@ CONFIG_HIDRAW=y
947# CONFIG_DMADEVICES is not set 947# CONFIG_DMADEVICES is not set
948# CONFIG_AUXDISPLAY is not set 948# CONFIG_AUXDISPLAY is not set
949# CONFIG_UIO is not set 949# CONFIG_UIO is not set
950# CONFIG_STAGING is not set
951CONFIG_STAGING_EXCLUDE_BUILD=y
950 952
951# 953#
952# Character devices 954# Character devices
@@ -973,10 +975,9 @@ CONFIG_EXT2_FS=y
973# CONFIG_EXT2_FS_XIP is not set 975# CONFIG_EXT2_FS_XIP is not set
974CONFIG_EXT3_FS=y 976CONFIG_EXT3_FS=y
975# CONFIG_EXT3_FS_XATTR is not set 977# CONFIG_EXT3_FS_XATTR is not set
976CONFIG_EXT4DEV_FS=y 978# CONFIG_EXT4_FS is not set
977# CONFIG_EXT4DEV_FS_XATTR is not set
978CONFIG_JBD=y 979CONFIG_JBD=y
979CONFIG_JBD2=y 980CONFIG_JBD2=m
980CONFIG_REISERFS_FS=m 981CONFIG_REISERFS_FS=m
981# CONFIG_REISERFS_CHECK is not set 982# CONFIG_REISERFS_CHECK is not set
982# CONFIG_REISERFS_PROC_INFO is not set 983# CONFIG_REISERFS_PROC_INFO is not set
@@ -987,6 +988,7 @@ CONFIG_JFS_FS=m
987# CONFIG_JFS_DEBUG is not set 988# CONFIG_JFS_DEBUG is not set
988# CONFIG_JFS_STATISTICS is not set 989# CONFIG_JFS_STATISTICS is not set
989# CONFIG_FS_POSIX_ACL is not set 990# CONFIG_FS_POSIX_ACL is not set
991CONFIG_FILE_LOCKING=y
990CONFIG_XFS_FS=m 992CONFIG_XFS_FS=m
991# CONFIG_XFS_QUOTA is not set 993# CONFIG_XFS_QUOTA is not set
992# CONFIG_XFS_POSIX_ACL is not set 994# CONFIG_XFS_POSIX_ACL is not set
@@ -998,6 +1000,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
998# CONFIG_OCFS2_FS_STATS is not set 1000# CONFIG_OCFS2_FS_STATS is not set
999# CONFIG_OCFS2_DEBUG_MASKLOG is not set 1001# CONFIG_OCFS2_DEBUG_MASKLOG is not set
1000# CONFIG_OCFS2_DEBUG_FS is not set 1002# CONFIG_OCFS2_DEBUG_FS is not set
1003# CONFIG_OCFS2_COMPAT_JBD is not set
1001CONFIG_DNOTIFY=y 1004CONFIG_DNOTIFY=y
1002CONFIG_INOTIFY=y 1005CONFIG_INOTIFY=y
1003CONFIG_INOTIFY_USER=y 1006CONFIG_INOTIFY_USER=y
@@ -1036,6 +1039,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1036CONFIG_PROC_FS=y 1039CONFIG_PROC_FS=y
1037CONFIG_PROC_KCORE=y 1040CONFIG_PROC_KCORE=y
1038CONFIG_PROC_SYSCTL=y 1041CONFIG_PROC_SYSCTL=y
1042CONFIG_PROC_PAGE_MONITOR=y
1039CONFIG_SYSFS=y 1043CONFIG_SYSFS=y
1040CONFIG_TMPFS=y 1044CONFIG_TMPFS=y
1041# CONFIG_TMPFS_POSIX_ACL is not set 1045# CONFIG_TMPFS_POSIX_ACL is not set
@@ -1079,6 +1083,7 @@ CONFIG_EXPORTFS=m
1079CONFIG_NFS_COMMON=y 1083CONFIG_NFS_COMMON=y
1080CONFIG_SUNRPC=y 1084CONFIG_SUNRPC=y
1081CONFIG_SUNRPC_GSS=y 1085CONFIG_SUNRPC_GSS=y
1086# CONFIG_SUNRPC_REGISTER_V4 is not set
1082CONFIG_RPCSEC_GSS_KRB5=y 1087CONFIG_RPCSEC_GSS_KRB5=y
1083# CONFIG_RPCSEC_GSS_SPKM3 is not set 1088# CONFIG_RPCSEC_GSS_SPKM3 is not set
1084CONFIG_SMB_FS=m 1089CONFIG_SMB_FS=m
@@ -1156,7 +1161,13 @@ CONFIG_MAGIC_SYSRQ=y
1156# CONFIG_DEBUG_KERNEL is not set 1161# CONFIG_DEBUG_KERNEL is not set
1157CONFIG_DEBUG_BUGVERBOSE=y 1162CONFIG_DEBUG_BUGVERBOSE=y
1158CONFIG_DEBUG_MEMORY_INIT=y 1163CONFIG_DEBUG_MEMORY_INIT=y
1164# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1159CONFIG_SYSCTL_SYSCALL_CHECK=y 1165CONFIG_SYSCTL_SYSCALL_CHECK=y
1166
1167#
1168# Tracers
1169#
1170# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1160# CONFIG_SAMPLES is not set 1171# CONFIG_SAMPLES is not set
1161 1172
1162# 1173#
@@ -1164,6 +1175,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
1164# 1175#
1165# CONFIG_KEYS is not set 1176# CONFIG_KEYS is not set
1166# CONFIG_SECURITY is not set 1177# CONFIG_SECURITY is not set
1178# CONFIG_SECURITYFS is not set
1167# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1179# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1168CONFIG_XOR_BLOCKS=m 1180CONFIG_XOR_BLOCKS=m
1169CONFIG_ASYNC_CORE=m 1181CONFIG_ASYNC_CORE=m
@@ -1174,10 +1186,12 @@ CONFIG_CRYPTO=y
1174# 1186#
1175# Crypto core or helper 1187# Crypto core or helper
1176# 1188#
1189# CONFIG_CRYPTO_FIPS is not set
1177CONFIG_CRYPTO_ALGAPI=y 1190CONFIG_CRYPTO_ALGAPI=y
1178CONFIG_CRYPTO_AEAD=m 1191CONFIG_CRYPTO_AEAD=y
1179CONFIG_CRYPTO_BLKCIPHER=y 1192CONFIG_CRYPTO_BLKCIPHER=y
1180CONFIG_CRYPTO_HASH=y 1193CONFIG_CRYPTO_HASH=y
1194CONFIG_CRYPTO_RNG=y
1181CONFIG_CRYPTO_MANAGER=y 1195CONFIG_CRYPTO_MANAGER=y
1182CONFIG_CRYPTO_GF128MUL=m 1196CONFIG_CRYPTO_GF128MUL=m
1183CONFIG_CRYPTO_NULL=m 1197CONFIG_CRYPTO_NULL=m
@@ -1251,14 +1265,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1251# 1265#
1252CONFIG_CRYPTO_DEFLATE=m 1266CONFIG_CRYPTO_DEFLATE=m
1253CONFIG_CRYPTO_LZO=m 1267CONFIG_CRYPTO_LZO=m
1268
1269#
1270# Random Number Generation
1271#
1272# CONFIG_CRYPTO_ANSI_CPRNG is not set
1254# CONFIG_CRYPTO_HW is not set 1273# CONFIG_CRYPTO_HW is not set
1255 1274
1256# 1275#
1257# Library routines 1276# Library routines
1258# 1277#
1259CONFIG_BITREVERSE=y 1278CONFIG_BITREVERSE=y
1260# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1261# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1262CONFIG_CRC_CCITT=m 1279CONFIG_CRC_CCITT=m
1263CONFIG_CRC16=y 1280CONFIG_CRC16=y
1264CONFIG_CRC_T10DIF=y 1281CONFIG_CRC_T10DIF=y
diff --git a/arch/m68k/configs/mvme147_defconfig b/arch/m68k/configs/mvme147_defconfig
index cacb5aef6a37..52d42715bd0b 100644
--- a/arch/m68k/configs/mvme147_defconfig
+++ b/arch/m68k/configs/mvme147_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:08 2008 4# Tue Dec 2 20:27:50 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16# CONFIG_NO_DMA is not set 16# CONFIG_NO_DMA is not set
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,11 +105,11 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
122# CONFIG_SUN3 is not set
123# CONFIG_AMIGA is not set 113# CONFIG_AMIGA is not set
124# CONFIG_ATARI is not set 114# CONFIG_ATARI is not set
125# CONFIG_MAC is not set 115# CONFIG_MAC is not set
@@ -151,19 +141,21 @@ CONFIG_DISCONTIGMEM_MANUAL=y
151CONFIG_DISCONTIGMEM=y 141CONFIG_DISCONTIGMEM=y
152CONFIG_FLAT_NODE_MEM_MAP=y 142CONFIG_FLAT_NODE_MEM_MAP=y
153CONFIG_NEED_MULTIPLE_NODES=y 143CONFIG_NEED_MULTIPLE_NODES=y
154# CONFIG_SPARSEMEM_STATIC is not set
155# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
156CONFIG_PAGEFLAGS_EXTENDED=y 144CONFIG_PAGEFLAGS_EXTENDED=y
157CONFIG_SPLIT_PTLOCK_CPUS=4 145CONFIG_SPLIT_PTLOCK_CPUS=4
158# CONFIG_RESOURCES_64BIT is not set 146# CONFIG_RESOURCES_64BIT is not set
147# CONFIG_PHYS_ADDR_T_64BIT is not set
159CONFIG_ZONE_DMA_FLAG=1 148CONFIG_ZONE_DMA_FLAG=1
160CONFIG_BOUNCE=y 149CONFIG_BOUNCE=y
161CONFIG_VIRT_TO_BUS=y 150CONFIG_VIRT_TO_BUS=y
151CONFIG_UNEVICTABLE_LRU=y
162 152
163# 153#
164# General setup 154# General setup
165# 155#
166CONFIG_BINFMT_ELF=y 156CONFIG_BINFMT_ELF=y
157# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
158CONFIG_HAVE_AOUT=y
167CONFIG_BINFMT_AOUT=m 159CONFIG_BINFMT_AOUT=m
168CONFIG_BINFMT_MISC=m 160CONFIG_BINFMT_MISC=m
169CONFIG_PROC_HARDWARE=y 161CONFIG_PROC_HARDWARE=y
@@ -212,7 +204,6 @@ CONFIG_INET_TCP_DIAG=m
212CONFIG_TCP_CONG_CUBIC=y 204CONFIG_TCP_CONG_CUBIC=y
213CONFIG_DEFAULT_TCP_CONG="cubic" 205CONFIG_DEFAULT_TCP_CONG="cubic"
214# CONFIG_TCP_MD5SIG is not set 206# CONFIG_TCP_MD5SIG is not set
215# CONFIG_IP_VS is not set
216CONFIG_IPV6=m 207CONFIG_IPV6=m
217CONFIG_IPV6_PRIVACY=y 208CONFIG_IPV6_PRIVACY=y
218CONFIG_IPV6_ROUTER_PREF=y 209CONFIG_IPV6_ROUTER_PREF=y
@@ -262,13 +253,14 @@ CONFIG_NF_CONNTRACK_SANE=m
262CONFIG_NF_CONNTRACK_SIP=m 253CONFIG_NF_CONNTRACK_SIP=m
263CONFIG_NF_CONNTRACK_TFTP=m 254CONFIG_NF_CONNTRACK_TFTP=m
264# CONFIG_NF_CT_NETLINK is not set 255# CONFIG_NF_CT_NETLINK is not set
256# CONFIG_NETFILTER_TPROXY is not set
265CONFIG_NETFILTER_XTABLES=m 257CONFIG_NETFILTER_XTABLES=m
266CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 258CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
267CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 259CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
268CONFIG_NETFILTER_XT_TARGET_DSCP=m 260CONFIG_NETFILTER_XT_TARGET_DSCP=m
269CONFIG_NETFILTER_XT_TARGET_MARK=m 261CONFIG_NETFILTER_XT_TARGET_MARK=m
270CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
271CONFIG_NETFILTER_XT_TARGET_NFLOG=m 262CONFIG_NETFILTER_XT_TARGET_NFLOG=m
263CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
272CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 264CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
273CONFIG_NETFILTER_XT_TARGET_RATEEST=m 265CONFIG_NETFILTER_XT_TARGET_RATEEST=m
274CONFIG_NETFILTER_XT_TARGET_TRACE=m 266CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -282,19 +274,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
282CONFIG_NETFILTER_XT_MATCH_DCCP=m 274CONFIG_NETFILTER_XT_MATCH_DCCP=m
283CONFIG_NETFILTER_XT_MATCH_DSCP=m 275CONFIG_NETFILTER_XT_MATCH_DSCP=m
284CONFIG_NETFILTER_XT_MATCH_ESP=m 276CONFIG_NETFILTER_XT_MATCH_ESP=m
277CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
285CONFIG_NETFILTER_XT_MATCH_HELPER=m 278CONFIG_NETFILTER_XT_MATCH_HELPER=m
286CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 279CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
287CONFIG_NETFILTER_XT_MATCH_LENGTH=m 280CONFIG_NETFILTER_XT_MATCH_LENGTH=m
288CONFIG_NETFILTER_XT_MATCH_LIMIT=m 281CONFIG_NETFILTER_XT_MATCH_LIMIT=m
289CONFIG_NETFILTER_XT_MATCH_MAC=m 282CONFIG_NETFILTER_XT_MATCH_MAC=m
290CONFIG_NETFILTER_XT_MATCH_MARK=m 283CONFIG_NETFILTER_XT_MATCH_MARK=m
284CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
291CONFIG_NETFILTER_XT_MATCH_OWNER=m 285CONFIG_NETFILTER_XT_MATCH_OWNER=m
292CONFIG_NETFILTER_XT_MATCH_POLICY=m 286CONFIG_NETFILTER_XT_MATCH_POLICY=m
293CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
294CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 287CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
295CONFIG_NETFILTER_XT_MATCH_QUOTA=m 288CONFIG_NETFILTER_XT_MATCH_QUOTA=m
296CONFIG_NETFILTER_XT_MATCH_RATEEST=m 289CONFIG_NETFILTER_XT_MATCH_RATEEST=m
297CONFIG_NETFILTER_XT_MATCH_REALM=m 290CONFIG_NETFILTER_XT_MATCH_REALM=m
291CONFIG_NETFILTER_XT_MATCH_RECENT=m
292# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
298CONFIG_NETFILTER_XT_MATCH_SCTP=m 293CONFIG_NETFILTER_XT_MATCH_SCTP=m
299CONFIG_NETFILTER_XT_MATCH_STATE=m 294CONFIG_NETFILTER_XT_MATCH_STATE=m
300CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 295CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -302,20 +297,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
302CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 297CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
303CONFIG_NETFILTER_XT_MATCH_TIME=m 298CONFIG_NETFILTER_XT_MATCH_TIME=m
304CONFIG_NETFILTER_XT_MATCH_U32=m 299CONFIG_NETFILTER_XT_MATCH_U32=m
305CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 300# CONFIG_IP_VS is not set
306 301
307# 302#
308# IP: Netfilter Configuration 303# IP: Netfilter Configuration
309# 304#
305CONFIG_NF_DEFRAG_IPV4=m
310CONFIG_NF_CONNTRACK_IPV4=m 306CONFIG_NF_CONNTRACK_IPV4=m
311CONFIG_NF_CONNTRACK_PROC_COMPAT=y 307CONFIG_NF_CONNTRACK_PROC_COMPAT=y
312CONFIG_IP_NF_QUEUE=m 308CONFIG_IP_NF_QUEUE=m
313CONFIG_IP_NF_IPTABLES=m 309CONFIG_IP_NF_IPTABLES=m
314CONFIG_IP_NF_MATCH_RECENT=m 310CONFIG_IP_NF_MATCH_ADDRTYPE=m
315CONFIG_IP_NF_MATCH_ECN=m
316CONFIG_IP_NF_MATCH_AH=m 311CONFIG_IP_NF_MATCH_AH=m
312CONFIG_IP_NF_MATCH_ECN=m
317CONFIG_IP_NF_MATCH_TTL=m 313CONFIG_IP_NF_MATCH_TTL=m
318CONFIG_IP_NF_MATCH_ADDRTYPE=m
319CONFIG_IP_NF_FILTER=m 314CONFIG_IP_NF_FILTER=m
320CONFIG_IP_NF_TARGET_REJECT=m 315CONFIG_IP_NF_TARGET_REJECT=m
321CONFIG_IP_NF_TARGET_LOG=m 316CONFIG_IP_NF_TARGET_LOG=m
@@ -323,8 +318,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
323CONFIG_NF_NAT=m 318CONFIG_NF_NAT=m
324CONFIG_NF_NAT_NEEDED=y 319CONFIG_NF_NAT_NEEDED=y
325CONFIG_IP_NF_TARGET_MASQUERADE=m 320CONFIG_IP_NF_TARGET_MASQUERADE=m
326CONFIG_IP_NF_TARGET_REDIRECT=m
327CONFIG_IP_NF_TARGET_NETMAP=m 321CONFIG_IP_NF_TARGET_NETMAP=m
322CONFIG_IP_NF_TARGET_REDIRECT=m
328CONFIG_NF_NAT_SNMP_BASIC=m 323CONFIG_NF_NAT_SNMP_BASIC=m
329CONFIG_NF_NAT_PROTO_GRE=m 324CONFIG_NF_NAT_PROTO_GRE=m
330CONFIG_NF_NAT_PROTO_UDPLITE=m 325CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -337,9 +332,9 @@ CONFIG_NF_NAT_PPTP=m
337CONFIG_NF_NAT_H323=m 332CONFIG_NF_NAT_H323=m
338CONFIG_NF_NAT_SIP=m 333CONFIG_NF_NAT_SIP=m
339CONFIG_IP_NF_MANGLE=m 334CONFIG_IP_NF_MANGLE=m
335CONFIG_IP_NF_TARGET_CLUSTERIP=m
340CONFIG_IP_NF_TARGET_ECN=m 336CONFIG_IP_NF_TARGET_ECN=m
341CONFIG_IP_NF_TARGET_TTL=m 337CONFIG_IP_NF_TARGET_TTL=m
342CONFIG_IP_NF_TARGET_CLUSTERIP=m
343CONFIG_IP_NF_RAW=m 338CONFIG_IP_NF_RAW=m
344CONFIG_IP_NF_ARPTABLES=m 339CONFIG_IP_NF_ARPTABLES=m
345CONFIG_IP_NF_ARPFILTER=m 340CONFIG_IP_NF_ARPFILTER=m
@@ -351,16 +346,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
351CONFIG_NF_CONNTRACK_IPV6=m 346CONFIG_NF_CONNTRACK_IPV6=m
352CONFIG_IP6_NF_QUEUE=m 347CONFIG_IP6_NF_QUEUE=m
353CONFIG_IP6_NF_IPTABLES=m 348CONFIG_IP6_NF_IPTABLES=m
354CONFIG_IP6_NF_MATCH_RT=m 349CONFIG_IP6_NF_MATCH_AH=m
355CONFIG_IP6_NF_MATCH_OPTS=m 350CONFIG_IP6_NF_MATCH_EUI64=m
356CONFIG_IP6_NF_MATCH_FRAG=m 351CONFIG_IP6_NF_MATCH_FRAG=m
352CONFIG_IP6_NF_MATCH_OPTS=m
357CONFIG_IP6_NF_MATCH_HL=m 353CONFIG_IP6_NF_MATCH_HL=m
358CONFIG_IP6_NF_MATCH_IPV6HEADER=m 354CONFIG_IP6_NF_MATCH_IPV6HEADER=m
359CONFIG_IP6_NF_MATCH_AH=m
360CONFIG_IP6_NF_MATCH_MH=m 355CONFIG_IP6_NF_MATCH_MH=m
361CONFIG_IP6_NF_MATCH_EUI64=m 356CONFIG_IP6_NF_MATCH_RT=m
362CONFIG_IP6_NF_FILTER=m
363CONFIG_IP6_NF_TARGET_LOG=m 357CONFIG_IP6_NF_TARGET_LOG=m
358CONFIG_IP6_NF_FILTER=m
364CONFIG_IP6_NF_TARGET_REJECT=m 359CONFIG_IP6_NF_TARGET_REJECT=m
365CONFIG_IP6_NF_MANGLE=m 360CONFIG_IP6_NF_MANGLE=m
366CONFIG_IP6_NF_TARGET_HL=m 361CONFIG_IP6_NF_TARGET_HL=m
@@ -387,6 +382,7 @@ CONFIG_SCTP_HMAC_MD5=y
387# CONFIG_TIPC is not set 382# CONFIG_TIPC is not set
388# CONFIG_ATM is not set 383# CONFIG_ATM is not set
389# CONFIG_BRIDGE is not set 384# CONFIG_BRIDGE is not set
385# CONFIG_NET_DSA is not set
390# CONFIG_VLAN_8021Q is not set 386# CONFIG_VLAN_8021Q is not set
391# CONFIG_DECNET is not set 387# CONFIG_DECNET is not set
392CONFIG_LLC=m 388CONFIG_LLC=m
@@ -410,19 +406,8 @@ CONFIG_NET_CLS_ROUTE=y
410# CONFIG_IRDA is not set 406# CONFIG_IRDA is not set
411# CONFIG_BT is not set 407# CONFIG_BT is not set
412# CONFIG_AF_RXRPC is not set 408# CONFIG_AF_RXRPC is not set
413 409# CONFIG_PHONET is not set
414# 410# CONFIG_WIRELESS is not set
415# Wireless
416#
417# CONFIG_CFG80211 is not set
418CONFIG_WIRELESS_EXT=y
419# CONFIG_WIRELESS_EXT_SYSFS is not set
420# CONFIG_MAC80211 is not set
421CONFIG_IEEE80211=m
422# CONFIG_IEEE80211_DEBUG is not set
423CONFIG_IEEE80211_CRYPT_WEP=m
424CONFIG_IEEE80211_CRYPT_CCMP=m
425CONFIG_IEEE80211_CRYPT_TKIP=m
426# CONFIG_RFKILL is not set 411# CONFIG_RFKILL is not set
427# CONFIG_NET_9P is not set 412# CONFIG_NET_9P is not set
428 413
@@ -460,6 +445,7 @@ CONFIG_ATA_OVER_ETH=m
460CONFIG_MISC_DEVICES=y 445CONFIG_MISC_DEVICES=y
461# CONFIG_EEPROM_93CX6 is not set 446# CONFIG_EEPROM_93CX6 is not set
462# CONFIG_ENCLOSURE_SERVICES is not set 447# CONFIG_ENCLOSURE_SERVICES is not set
448# CONFIG_C2PORT is not set
463CONFIG_HAVE_IDE=y 449CONFIG_HAVE_IDE=y
464# CONFIG_IDE is not set 450# CONFIG_IDE is not set
465 451
@@ -544,6 +530,9 @@ CONFIG_MVME147_NET=y
544# CONFIG_IBM_NEW_EMAC_RGMII is not set 530# CONFIG_IBM_NEW_EMAC_RGMII is not set
545# CONFIG_IBM_NEW_EMAC_TAH is not set 531# CONFIG_IBM_NEW_EMAC_TAH is not set
546# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 532# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
533# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
534# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
535# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
547# CONFIG_B44 is not set 536# CONFIG_B44 is not set
548# CONFIG_NETDEV_1000 is not set 537# CONFIG_NETDEV_1000 is not set
549# CONFIG_NETDEV_10000 is not set 538# CONFIG_NETDEV_10000 is not set
@@ -613,6 +602,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
613CONFIG_MOUSE_PS2_SYNAPTICS=y 602CONFIG_MOUSE_PS2_SYNAPTICS=y
614CONFIG_MOUSE_PS2_LIFEBOOK=y 603CONFIG_MOUSE_PS2_LIFEBOOK=y
615CONFIG_MOUSE_PS2_TRACKPOINT=y 604CONFIG_MOUSE_PS2_TRACKPOINT=y
605# CONFIG_MOUSE_PS2_ELANTECH is not set
616# CONFIG_MOUSE_PS2_TOUCHKIT is not set 606# CONFIG_MOUSE_PS2_TOUCHKIT is not set
617CONFIG_MOUSE_SERIAL=m 607CONFIG_MOUSE_SERIAL=m
618# CONFIG_MOUSE_VSXXXAA is not set 608# CONFIG_MOUSE_VSXXXAA is not set
@@ -667,11 +657,11 @@ CONFIG_GEN_RTC_X=y
667# CONFIG_THERMAL is not set 657# CONFIG_THERMAL is not set
668# CONFIG_THERMAL_HWMON is not set 658# CONFIG_THERMAL_HWMON is not set
669# CONFIG_WATCHDOG is not set 659# CONFIG_WATCHDOG is not set
660CONFIG_SSB_POSSIBLE=y
670 661
671# 662#
672# Sonics Silicon Backplane 663# Sonics Silicon Backplane
673# 664#
674CONFIG_SSB_POSSIBLE=y
675# CONFIG_SSB is not set 665# CONFIG_SSB is not set
676 666
677# 667#
@@ -681,6 +671,7 @@ CONFIG_SSB_POSSIBLE=y
681# CONFIG_MFD_SM501 is not set 671# CONFIG_MFD_SM501 is not set
682# CONFIG_HTC_PASIC3 is not set 672# CONFIG_HTC_PASIC3 is not set
683# CONFIG_MFD_TMIO is not set 673# CONFIG_MFD_TMIO is not set
674# CONFIG_REGULATOR is not set
684 675
685# 676#
686# Multimedia devices 677# Multimedia devices
@@ -720,6 +711,12 @@ CONFIG_HID_SUPPORT=y
720CONFIG_HID=m 711CONFIG_HID=m
721# CONFIG_HID_DEBUG is not set 712# CONFIG_HID_DEBUG is not set
722CONFIG_HIDRAW=y 713CONFIG_HIDRAW=y
714# CONFIG_HID_PID is not set
715
716#
717# Special HID drivers
718#
719CONFIG_HID_COMPAT=y
723# CONFIG_USB_SUPPORT is not set 720# CONFIG_USB_SUPPORT is not set
724# CONFIG_MMC is not set 721# CONFIG_MMC is not set
725# CONFIG_MEMSTICK is not set 722# CONFIG_MEMSTICK is not set
@@ -728,6 +725,8 @@ CONFIG_HIDRAW=y
728# CONFIG_RTC_CLASS is not set 725# CONFIG_RTC_CLASS is not set
729# CONFIG_DMADEVICES is not set 726# CONFIG_DMADEVICES is not set
730# CONFIG_UIO is not set 727# CONFIG_UIO is not set
728# CONFIG_STAGING is not set
729CONFIG_STAGING_EXCLUDE_BUILD=y
731 730
732# 731#
733# Character devices 732# Character devices
@@ -743,8 +742,9 @@ CONFIG_EXT2_FS=y
743# CONFIG_EXT2_FS_XIP is not set 742# CONFIG_EXT2_FS_XIP is not set
744CONFIG_EXT3_FS=y 743CONFIG_EXT3_FS=y
745# CONFIG_EXT3_FS_XATTR is not set 744# CONFIG_EXT3_FS_XATTR is not set
746# CONFIG_EXT4DEV_FS is not set 745# CONFIG_EXT4_FS is not set
747CONFIG_JBD=y 746CONFIG_JBD=y
747CONFIG_JBD2=m
748CONFIG_REISERFS_FS=m 748CONFIG_REISERFS_FS=m
749# CONFIG_REISERFS_CHECK is not set 749# CONFIG_REISERFS_CHECK is not set
750# CONFIG_REISERFS_PROC_INFO is not set 750# CONFIG_REISERFS_PROC_INFO is not set
@@ -755,6 +755,7 @@ CONFIG_JFS_FS=m
755# CONFIG_JFS_DEBUG is not set 755# CONFIG_JFS_DEBUG is not set
756# CONFIG_JFS_STATISTICS is not set 756# CONFIG_JFS_STATISTICS is not set
757# CONFIG_FS_POSIX_ACL is not set 757# CONFIG_FS_POSIX_ACL is not set
758CONFIG_FILE_LOCKING=y
758CONFIG_XFS_FS=m 759CONFIG_XFS_FS=m
759# CONFIG_XFS_QUOTA is not set 760# CONFIG_XFS_QUOTA is not set
760# CONFIG_XFS_POSIX_ACL is not set 761# CONFIG_XFS_POSIX_ACL is not set
@@ -766,6 +767,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
766# CONFIG_OCFS2_FS_STATS is not set 767# CONFIG_OCFS2_FS_STATS is not set
767# CONFIG_OCFS2_DEBUG_MASKLOG is not set 768# CONFIG_OCFS2_DEBUG_MASKLOG is not set
768# CONFIG_OCFS2_DEBUG_FS is not set 769# CONFIG_OCFS2_DEBUG_FS is not set
770# CONFIG_OCFS2_COMPAT_JBD is not set
769CONFIG_DNOTIFY=y 771CONFIG_DNOTIFY=y
770CONFIG_INOTIFY=y 772CONFIG_INOTIFY=y
771CONFIG_INOTIFY_USER=y 773CONFIG_INOTIFY_USER=y
@@ -804,6 +806,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
804CONFIG_PROC_FS=y 806CONFIG_PROC_FS=y
805CONFIG_PROC_KCORE=y 807CONFIG_PROC_KCORE=y
806CONFIG_PROC_SYSCTL=y 808CONFIG_PROC_SYSCTL=y
809CONFIG_PROC_PAGE_MONITOR=y
807CONFIG_SYSFS=y 810CONFIG_SYSFS=y
808CONFIG_TMPFS=y 811CONFIG_TMPFS=y
809# CONFIG_TMPFS_POSIX_ACL is not set 812# CONFIG_TMPFS_POSIX_ACL is not set
@@ -847,6 +850,7 @@ CONFIG_EXPORTFS=m
847CONFIG_NFS_COMMON=y 850CONFIG_NFS_COMMON=y
848CONFIG_SUNRPC=y 851CONFIG_SUNRPC=y
849CONFIG_SUNRPC_GSS=y 852CONFIG_SUNRPC_GSS=y
853# CONFIG_SUNRPC_REGISTER_V4 is not set
850CONFIG_RPCSEC_GSS_KRB5=y 854CONFIG_RPCSEC_GSS_KRB5=y
851# CONFIG_RPCSEC_GSS_SPKM3 is not set 855# CONFIG_RPCSEC_GSS_SPKM3 is not set
852CONFIG_SMB_FS=m 856CONFIG_SMB_FS=m
@@ -920,7 +924,13 @@ CONFIG_MAGIC_SYSRQ=y
920# CONFIG_DEBUG_KERNEL is not set 924# CONFIG_DEBUG_KERNEL is not set
921CONFIG_DEBUG_BUGVERBOSE=y 925CONFIG_DEBUG_BUGVERBOSE=y
922CONFIG_DEBUG_MEMORY_INIT=y 926CONFIG_DEBUG_MEMORY_INIT=y
927# CONFIG_RCU_CPU_STALL_DETECTOR is not set
923CONFIG_SYSCTL_SYSCALL_CHECK=y 928CONFIG_SYSCTL_SYSCALL_CHECK=y
929
930#
931# Tracers
932#
933# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
924# CONFIG_SAMPLES is not set 934# CONFIG_SAMPLES is not set
925 935
926# 936#
@@ -928,6 +938,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
928# 938#
929# CONFIG_KEYS is not set 939# CONFIG_KEYS is not set
930# CONFIG_SECURITY is not set 940# CONFIG_SECURITY is not set
941# CONFIG_SECURITYFS is not set
931# CONFIG_SECURITY_FILE_CAPABILITIES is not set 942# CONFIG_SECURITY_FILE_CAPABILITIES is not set
932CONFIG_XOR_BLOCKS=m 943CONFIG_XOR_BLOCKS=m
933CONFIG_ASYNC_CORE=m 944CONFIG_ASYNC_CORE=m
@@ -938,10 +949,12 @@ CONFIG_CRYPTO=y
938# 949#
939# Crypto core or helper 950# Crypto core or helper
940# 951#
952# CONFIG_CRYPTO_FIPS is not set
941CONFIG_CRYPTO_ALGAPI=y 953CONFIG_CRYPTO_ALGAPI=y
942CONFIG_CRYPTO_AEAD=m 954CONFIG_CRYPTO_AEAD=y
943CONFIG_CRYPTO_BLKCIPHER=y 955CONFIG_CRYPTO_BLKCIPHER=y
944CONFIG_CRYPTO_HASH=y 956CONFIG_CRYPTO_HASH=y
957CONFIG_CRYPTO_RNG=y
945CONFIG_CRYPTO_MANAGER=y 958CONFIG_CRYPTO_MANAGER=y
946CONFIG_CRYPTO_GF128MUL=m 959CONFIG_CRYPTO_GF128MUL=m
947CONFIG_CRYPTO_NULL=m 960CONFIG_CRYPTO_NULL=m
@@ -1015,14 +1028,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1015# 1028#
1016CONFIG_CRYPTO_DEFLATE=m 1029CONFIG_CRYPTO_DEFLATE=m
1017CONFIG_CRYPTO_LZO=m 1030CONFIG_CRYPTO_LZO=m
1031
1032#
1033# Random Number Generation
1034#
1035# CONFIG_CRYPTO_ANSI_CPRNG is not set
1018# CONFIG_CRYPTO_HW is not set 1036# CONFIG_CRYPTO_HW is not set
1019 1037
1020# 1038#
1021# Library routines 1039# Library routines
1022# 1040#
1023CONFIG_BITREVERSE=y 1041CONFIG_BITREVERSE=y
1024# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1025# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1026CONFIG_CRC_CCITT=m 1042CONFIG_CRC_CCITT=m
1027CONFIG_CRC16=m 1043CONFIG_CRC16=m
1028CONFIG_CRC_T10DIF=y 1044CONFIG_CRC_T10DIF=y
diff --git a/arch/m68k/configs/mvme16x_defconfig b/arch/m68k/configs/mvme16x_defconfig
index a183e25e348d..3403ed2eda79 100644
--- a/arch/m68k/configs/mvme16x_defconfig
+++ b/arch/m68k/configs/mvme16x_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:09 2008 4# Tue Dec 2 20:27:51 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16# CONFIG_NO_DMA is not set 16# CONFIG_NO_DMA is not set
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,11 +105,11 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
122# CONFIG_SUN3 is not set
123# CONFIG_AMIGA is not set 113# CONFIG_AMIGA is not set
124# CONFIG_ATARI is not set 114# CONFIG_ATARI is not set
125# CONFIG_MAC is not set 115# CONFIG_MAC is not set
@@ -151,19 +141,21 @@ CONFIG_DISCONTIGMEM_MANUAL=y
151CONFIG_DISCONTIGMEM=y 141CONFIG_DISCONTIGMEM=y
152CONFIG_FLAT_NODE_MEM_MAP=y 142CONFIG_FLAT_NODE_MEM_MAP=y
153CONFIG_NEED_MULTIPLE_NODES=y 143CONFIG_NEED_MULTIPLE_NODES=y
154# CONFIG_SPARSEMEM_STATIC is not set
155# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
156CONFIG_PAGEFLAGS_EXTENDED=y 144CONFIG_PAGEFLAGS_EXTENDED=y
157CONFIG_SPLIT_PTLOCK_CPUS=4 145CONFIG_SPLIT_PTLOCK_CPUS=4
158# CONFIG_RESOURCES_64BIT is not set 146# CONFIG_RESOURCES_64BIT is not set
147# CONFIG_PHYS_ADDR_T_64BIT is not set
159CONFIG_ZONE_DMA_FLAG=1 148CONFIG_ZONE_DMA_FLAG=1
160CONFIG_BOUNCE=y 149CONFIG_BOUNCE=y
161CONFIG_VIRT_TO_BUS=y 150CONFIG_VIRT_TO_BUS=y
151CONFIG_UNEVICTABLE_LRU=y
162 152
163# 153#
164# General setup 154# General setup
165# 155#
166CONFIG_BINFMT_ELF=y 156CONFIG_BINFMT_ELF=y
157# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
158CONFIG_HAVE_AOUT=y
167CONFIG_BINFMT_AOUT=m 159CONFIG_BINFMT_AOUT=m
168CONFIG_BINFMT_MISC=m 160CONFIG_BINFMT_MISC=m
169CONFIG_PROC_HARDWARE=y 161CONFIG_PROC_HARDWARE=y
@@ -212,7 +204,6 @@ CONFIG_INET_TCP_DIAG=m
212CONFIG_TCP_CONG_CUBIC=y 204CONFIG_TCP_CONG_CUBIC=y
213CONFIG_DEFAULT_TCP_CONG="cubic" 205CONFIG_DEFAULT_TCP_CONG="cubic"
214# CONFIG_TCP_MD5SIG is not set 206# CONFIG_TCP_MD5SIG is not set
215# CONFIG_IP_VS is not set
216CONFIG_IPV6=m 207CONFIG_IPV6=m
217CONFIG_IPV6_PRIVACY=y 208CONFIG_IPV6_PRIVACY=y
218CONFIG_IPV6_ROUTER_PREF=y 209CONFIG_IPV6_ROUTER_PREF=y
@@ -262,13 +253,14 @@ CONFIG_NF_CONNTRACK_SANE=m
262CONFIG_NF_CONNTRACK_SIP=m 253CONFIG_NF_CONNTRACK_SIP=m
263CONFIG_NF_CONNTRACK_TFTP=m 254CONFIG_NF_CONNTRACK_TFTP=m
264# CONFIG_NF_CT_NETLINK is not set 255# CONFIG_NF_CT_NETLINK is not set
256# CONFIG_NETFILTER_TPROXY is not set
265CONFIG_NETFILTER_XTABLES=m 257CONFIG_NETFILTER_XTABLES=m
266CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 258CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
267CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 259CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
268CONFIG_NETFILTER_XT_TARGET_DSCP=m 260CONFIG_NETFILTER_XT_TARGET_DSCP=m
269CONFIG_NETFILTER_XT_TARGET_MARK=m 261CONFIG_NETFILTER_XT_TARGET_MARK=m
270CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
271CONFIG_NETFILTER_XT_TARGET_NFLOG=m 262CONFIG_NETFILTER_XT_TARGET_NFLOG=m
263CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
272CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 264CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
273CONFIG_NETFILTER_XT_TARGET_RATEEST=m 265CONFIG_NETFILTER_XT_TARGET_RATEEST=m
274CONFIG_NETFILTER_XT_TARGET_TRACE=m 266CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -282,19 +274,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
282CONFIG_NETFILTER_XT_MATCH_DCCP=m 274CONFIG_NETFILTER_XT_MATCH_DCCP=m
283CONFIG_NETFILTER_XT_MATCH_DSCP=m 275CONFIG_NETFILTER_XT_MATCH_DSCP=m
284CONFIG_NETFILTER_XT_MATCH_ESP=m 276CONFIG_NETFILTER_XT_MATCH_ESP=m
277CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
285CONFIG_NETFILTER_XT_MATCH_HELPER=m 278CONFIG_NETFILTER_XT_MATCH_HELPER=m
286CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 279CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
287CONFIG_NETFILTER_XT_MATCH_LENGTH=m 280CONFIG_NETFILTER_XT_MATCH_LENGTH=m
288CONFIG_NETFILTER_XT_MATCH_LIMIT=m 281CONFIG_NETFILTER_XT_MATCH_LIMIT=m
289CONFIG_NETFILTER_XT_MATCH_MAC=m 282CONFIG_NETFILTER_XT_MATCH_MAC=m
290CONFIG_NETFILTER_XT_MATCH_MARK=m 283CONFIG_NETFILTER_XT_MATCH_MARK=m
284CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
291CONFIG_NETFILTER_XT_MATCH_OWNER=m 285CONFIG_NETFILTER_XT_MATCH_OWNER=m
292CONFIG_NETFILTER_XT_MATCH_POLICY=m 286CONFIG_NETFILTER_XT_MATCH_POLICY=m
293CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
294CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 287CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
295CONFIG_NETFILTER_XT_MATCH_QUOTA=m 288CONFIG_NETFILTER_XT_MATCH_QUOTA=m
296CONFIG_NETFILTER_XT_MATCH_RATEEST=m 289CONFIG_NETFILTER_XT_MATCH_RATEEST=m
297CONFIG_NETFILTER_XT_MATCH_REALM=m 290CONFIG_NETFILTER_XT_MATCH_REALM=m
291CONFIG_NETFILTER_XT_MATCH_RECENT=m
292# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
298CONFIG_NETFILTER_XT_MATCH_SCTP=m 293CONFIG_NETFILTER_XT_MATCH_SCTP=m
299CONFIG_NETFILTER_XT_MATCH_STATE=m 294CONFIG_NETFILTER_XT_MATCH_STATE=m
300CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 295CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -302,20 +297,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
302CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 297CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
303CONFIG_NETFILTER_XT_MATCH_TIME=m 298CONFIG_NETFILTER_XT_MATCH_TIME=m
304CONFIG_NETFILTER_XT_MATCH_U32=m 299CONFIG_NETFILTER_XT_MATCH_U32=m
305CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 300# CONFIG_IP_VS is not set
306 301
307# 302#
308# IP: Netfilter Configuration 303# IP: Netfilter Configuration
309# 304#
305CONFIG_NF_DEFRAG_IPV4=m
310CONFIG_NF_CONNTRACK_IPV4=m 306CONFIG_NF_CONNTRACK_IPV4=m
311CONFIG_NF_CONNTRACK_PROC_COMPAT=y 307CONFIG_NF_CONNTRACK_PROC_COMPAT=y
312CONFIG_IP_NF_QUEUE=m 308CONFIG_IP_NF_QUEUE=m
313CONFIG_IP_NF_IPTABLES=m 309CONFIG_IP_NF_IPTABLES=m
314CONFIG_IP_NF_MATCH_RECENT=m 310CONFIG_IP_NF_MATCH_ADDRTYPE=m
315CONFIG_IP_NF_MATCH_ECN=m
316CONFIG_IP_NF_MATCH_AH=m 311CONFIG_IP_NF_MATCH_AH=m
312CONFIG_IP_NF_MATCH_ECN=m
317CONFIG_IP_NF_MATCH_TTL=m 313CONFIG_IP_NF_MATCH_TTL=m
318CONFIG_IP_NF_MATCH_ADDRTYPE=m
319CONFIG_IP_NF_FILTER=m 314CONFIG_IP_NF_FILTER=m
320CONFIG_IP_NF_TARGET_REJECT=m 315CONFIG_IP_NF_TARGET_REJECT=m
321CONFIG_IP_NF_TARGET_LOG=m 316CONFIG_IP_NF_TARGET_LOG=m
@@ -323,8 +318,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
323CONFIG_NF_NAT=m 318CONFIG_NF_NAT=m
324CONFIG_NF_NAT_NEEDED=y 319CONFIG_NF_NAT_NEEDED=y
325CONFIG_IP_NF_TARGET_MASQUERADE=m 320CONFIG_IP_NF_TARGET_MASQUERADE=m
326CONFIG_IP_NF_TARGET_REDIRECT=m
327CONFIG_IP_NF_TARGET_NETMAP=m 321CONFIG_IP_NF_TARGET_NETMAP=m
322CONFIG_IP_NF_TARGET_REDIRECT=m
328CONFIG_NF_NAT_SNMP_BASIC=m 323CONFIG_NF_NAT_SNMP_BASIC=m
329CONFIG_NF_NAT_PROTO_GRE=m 324CONFIG_NF_NAT_PROTO_GRE=m
330CONFIG_NF_NAT_PROTO_UDPLITE=m 325CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -337,9 +332,9 @@ CONFIG_NF_NAT_PPTP=m
337CONFIG_NF_NAT_H323=m 332CONFIG_NF_NAT_H323=m
338CONFIG_NF_NAT_SIP=m 333CONFIG_NF_NAT_SIP=m
339CONFIG_IP_NF_MANGLE=m 334CONFIG_IP_NF_MANGLE=m
335CONFIG_IP_NF_TARGET_CLUSTERIP=m
340CONFIG_IP_NF_TARGET_ECN=m 336CONFIG_IP_NF_TARGET_ECN=m
341CONFIG_IP_NF_TARGET_TTL=m 337CONFIG_IP_NF_TARGET_TTL=m
342CONFIG_IP_NF_TARGET_CLUSTERIP=m
343CONFIG_IP_NF_RAW=m 338CONFIG_IP_NF_RAW=m
344CONFIG_IP_NF_ARPTABLES=m 339CONFIG_IP_NF_ARPTABLES=m
345CONFIG_IP_NF_ARPFILTER=m 340CONFIG_IP_NF_ARPFILTER=m
@@ -351,16 +346,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
351CONFIG_NF_CONNTRACK_IPV6=m 346CONFIG_NF_CONNTRACK_IPV6=m
352CONFIG_IP6_NF_QUEUE=m 347CONFIG_IP6_NF_QUEUE=m
353CONFIG_IP6_NF_IPTABLES=m 348CONFIG_IP6_NF_IPTABLES=m
354CONFIG_IP6_NF_MATCH_RT=m 349CONFIG_IP6_NF_MATCH_AH=m
355CONFIG_IP6_NF_MATCH_OPTS=m 350CONFIG_IP6_NF_MATCH_EUI64=m
356CONFIG_IP6_NF_MATCH_FRAG=m 351CONFIG_IP6_NF_MATCH_FRAG=m
352CONFIG_IP6_NF_MATCH_OPTS=m
357CONFIG_IP6_NF_MATCH_HL=m 353CONFIG_IP6_NF_MATCH_HL=m
358CONFIG_IP6_NF_MATCH_IPV6HEADER=m 354CONFIG_IP6_NF_MATCH_IPV6HEADER=m
359CONFIG_IP6_NF_MATCH_AH=m
360CONFIG_IP6_NF_MATCH_MH=m 355CONFIG_IP6_NF_MATCH_MH=m
361CONFIG_IP6_NF_MATCH_EUI64=m 356CONFIG_IP6_NF_MATCH_RT=m
362CONFIG_IP6_NF_FILTER=m
363CONFIG_IP6_NF_TARGET_LOG=m 357CONFIG_IP6_NF_TARGET_LOG=m
358CONFIG_IP6_NF_FILTER=m
364CONFIG_IP6_NF_TARGET_REJECT=m 359CONFIG_IP6_NF_TARGET_REJECT=m
365CONFIG_IP6_NF_MANGLE=m 360CONFIG_IP6_NF_MANGLE=m
366CONFIG_IP6_NF_TARGET_HL=m 361CONFIG_IP6_NF_TARGET_HL=m
@@ -387,6 +382,7 @@ CONFIG_SCTP_HMAC_MD5=y
387# CONFIG_TIPC is not set 382# CONFIG_TIPC is not set
388# CONFIG_ATM is not set 383# CONFIG_ATM is not set
389# CONFIG_BRIDGE is not set 384# CONFIG_BRIDGE is not set
385# CONFIG_NET_DSA is not set
390# CONFIG_VLAN_8021Q is not set 386# CONFIG_VLAN_8021Q is not set
391# CONFIG_DECNET is not set 387# CONFIG_DECNET is not set
392CONFIG_LLC=m 388CONFIG_LLC=m
@@ -410,19 +406,8 @@ CONFIG_NET_CLS_ROUTE=y
410# CONFIG_IRDA is not set 406# CONFIG_IRDA is not set
411# CONFIG_BT is not set 407# CONFIG_BT is not set
412# CONFIG_AF_RXRPC is not set 408# CONFIG_AF_RXRPC is not set
413 409# CONFIG_PHONET is not set
414# 410# CONFIG_WIRELESS is not set
415# Wireless
416#
417# CONFIG_CFG80211 is not set
418CONFIG_WIRELESS_EXT=y
419# CONFIG_WIRELESS_EXT_SYSFS is not set
420# CONFIG_MAC80211 is not set
421CONFIG_IEEE80211=m
422# CONFIG_IEEE80211_DEBUG is not set
423CONFIG_IEEE80211_CRYPT_WEP=m
424CONFIG_IEEE80211_CRYPT_CCMP=m
425CONFIG_IEEE80211_CRYPT_TKIP=m
426# CONFIG_RFKILL is not set 411# CONFIG_RFKILL is not set
427# CONFIG_NET_9P is not set 412# CONFIG_NET_9P is not set
428 413
@@ -460,6 +445,7 @@ CONFIG_ATA_OVER_ETH=m
460CONFIG_MISC_DEVICES=y 445CONFIG_MISC_DEVICES=y
461# CONFIG_EEPROM_93CX6 is not set 446# CONFIG_EEPROM_93CX6 is not set
462# CONFIG_ENCLOSURE_SERVICES is not set 447# CONFIG_ENCLOSURE_SERVICES is not set
448# CONFIG_C2PORT is not set
463CONFIG_HAVE_IDE=y 449CONFIG_HAVE_IDE=y
464# CONFIG_IDE is not set 450# CONFIG_IDE is not set
465 451
@@ -545,6 +531,9 @@ CONFIG_MVME16x_NET=y
545# CONFIG_IBM_NEW_EMAC_RGMII is not set 531# CONFIG_IBM_NEW_EMAC_RGMII is not set
546# CONFIG_IBM_NEW_EMAC_TAH is not set 532# CONFIG_IBM_NEW_EMAC_TAH is not set
547# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 533# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
534# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
535# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
536# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
548# CONFIG_B44 is not set 537# CONFIG_B44 is not set
549# CONFIG_NETDEV_1000 is not set 538# CONFIG_NETDEV_1000 is not set
550# CONFIG_NETDEV_10000 is not set 539# CONFIG_NETDEV_10000 is not set
@@ -614,6 +603,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
614CONFIG_MOUSE_PS2_SYNAPTICS=y 603CONFIG_MOUSE_PS2_SYNAPTICS=y
615CONFIG_MOUSE_PS2_LIFEBOOK=y 604CONFIG_MOUSE_PS2_LIFEBOOK=y
616CONFIG_MOUSE_PS2_TRACKPOINT=y 605CONFIG_MOUSE_PS2_TRACKPOINT=y
606# CONFIG_MOUSE_PS2_ELANTECH is not set
617# CONFIG_MOUSE_PS2_TOUCHKIT is not set 607# CONFIG_MOUSE_PS2_TOUCHKIT is not set
618CONFIG_MOUSE_SERIAL=m 608CONFIG_MOUSE_SERIAL=m
619# CONFIG_MOUSE_VSXXXAA is not set 609# CONFIG_MOUSE_VSXXXAA is not set
@@ -668,11 +658,11 @@ CONFIG_GEN_RTC_X=y
668# CONFIG_THERMAL is not set 658# CONFIG_THERMAL is not set
669# CONFIG_THERMAL_HWMON is not set 659# CONFIG_THERMAL_HWMON is not set
670# CONFIG_WATCHDOG is not set 660# CONFIG_WATCHDOG is not set
661CONFIG_SSB_POSSIBLE=y
671 662
672# 663#
673# Sonics Silicon Backplane 664# Sonics Silicon Backplane
674# 665#
675CONFIG_SSB_POSSIBLE=y
676# CONFIG_SSB is not set 666# CONFIG_SSB is not set
677 667
678# 668#
@@ -682,6 +672,7 @@ CONFIG_SSB_POSSIBLE=y
682# CONFIG_MFD_SM501 is not set 672# CONFIG_MFD_SM501 is not set
683# CONFIG_HTC_PASIC3 is not set 673# CONFIG_HTC_PASIC3 is not set
684# CONFIG_MFD_TMIO is not set 674# CONFIG_MFD_TMIO is not set
675# CONFIG_REGULATOR is not set
685 676
686# 677#
687# Multimedia devices 678# Multimedia devices
@@ -721,6 +712,12 @@ CONFIG_HID_SUPPORT=y
721CONFIG_HID=m 712CONFIG_HID=m
722# CONFIG_HID_DEBUG is not set 713# CONFIG_HID_DEBUG is not set
723CONFIG_HIDRAW=y 714CONFIG_HIDRAW=y
715# CONFIG_HID_PID is not set
716
717#
718# Special HID drivers
719#
720CONFIG_HID_COMPAT=y
724# CONFIG_USB_SUPPORT is not set 721# CONFIG_USB_SUPPORT is not set
725# CONFIG_MMC is not set 722# CONFIG_MMC is not set
726# CONFIG_MEMSTICK is not set 723# CONFIG_MEMSTICK is not set
@@ -729,6 +726,8 @@ CONFIG_HIDRAW=y
729# CONFIG_RTC_CLASS is not set 726# CONFIG_RTC_CLASS is not set
730# CONFIG_DMADEVICES is not set 727# CONFIG_DMADEVICES is not set
731# CONFIG_UIO is not set 728# CONFIG_UIO is not set
729# CONFIG_STAGING is not set
730CONFIG_STAGING_EXCLUDE_BUILD=y
732 731
733# 732#
734# Character devices 733# Character devices
@@ -745,8 +744,9 @@ CONFIG_EXT2_FS=y
745# CONFIG_EXT2_FS_XIP is not set 744# CONFIG_EXT2_FS_XIP is not set
746CONFIG_EXT3_FS=y 745CONFIG_EXT3_FS=y
747# CONFIG_EXT3_FS_XATTR is not set 746# CONFIG_EXT3_FS_XATTR is not set
748# CONFIG_EXT4DEV_FS is not set 747# CONFIG_EXT4_FS is not set
749CONFIG_JBD=y 748CONFIG_JBD=y
749CONFIG_JBD2=m
750CONFIG_REISERFS_FS=m 750CONFIG_REISERFS_FS=m
751# CONFIG_REISERFS_CHECK is not set 751# CONFIG_REISERFS_CHECK is not set
752# CONFIG_REISERFS_PROC_INFO is not set 752# CONFIG_REISERFS_PROC_INFO is not set
@@ -757,6 +757,7 @@ CONFIG_JFS_FS=m
757# CONFIG_JFS_DEBUG is not set 757# CONFIG_JFS_DEBUG is not set
758# CONFIG_JFS_STATISTICS is not set 758# CONFIG_JFS_STATISTICS is not set
759# CONFIG_FS_POSIX_ACL is not set 759# CONFIG_FS_POSIX_ACL is not set
760CONFIG_FILE_LOCKING=y
760CONFIG_XFS_FS=m 761CONFIG_XFS_FS=m
761# CONFIG_XFS_QUOTA is not set 762# CONFIG_XFS_QUOTA is not set
762# CONFIG_XFS_POSIX_ACL is not set 763# CONFIG_XFS_POSIX_ACL is not set
@@ -768,6 +769,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
768# CONFIG_OCFS2_FS_STATS is not set 769# CONFIG_OCFS2_FS_STATS is not set
769# CONFIG_OCFS2_DEBUG_MASKLOG is not set 770# CONFIG_OCFS2_DEBUG_MASKLOG is not set
770# CONFIG_OCFS2_DEBUG_FS is not set 771# CONFIG_OCFS2_DEBUG_FS is not set
772# CONFIG_OCFS2_COMPAT_JBD is not set
771CONFIG_DNOTIFY=y 773CONFIG_DNOTIFY=y
772CONFIG_INOTIFY=y 774CONFIG_INOTIFY=y
773CONFIG_INOTIFY_USER=y 775CONFIG_INOTIFY_USER=y
@@ -806,6 +808,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
806CONFIG_PROC_FS=y 808CONFIG_PROC_FS=y
807CONFIG_PROC_KCORE=y 809CONFIG_PROC_KCORE=y
808CONFIG_PROC_SYSCTL=y 810CONFIG_PROC_SYSCTL=y
811CONFIG_PROC_PAGE_MONITOR=y
809CONFIG_SYSFS=y 812CONFIG_SYSFS=y
810CONFIG_TMPFS=y 813CONFIG_TMPFS=y
811# CONFIG_TMPFS_POSIX_ACL is not set 814# CONFIG_TMPFS_POSIX_ACL is not set
@@ -849,6 +852,7 @@ CONFIG_EXPORTFS=m
849CONFIG_NFS_COMMON=y 852CONFIG_NFS_COMMON=y
850CONFIG_SUNRPC=y 853CONFIG_SUNRPC=y
851CONFIG_SUNRPC_GSS=y 854CONFIG_SUNRPC_GSS=y
855# CONFIG_SUNRPC_REGISTER_V4 is not set
852CONFIG_RPCSEC_GSS_KRB5=y 856CONFIG_RPCSEC_GSS_KRB5=y
853# CONFIG_RPCSEC_GSS_SPKM3 is not set 857# CONFIG_RPCSEC_GSS_SPKM3 is not set
854CONFIG_SMB_FS=m 858CONFIG_SMB_FS=m
@@ -922,7 +926,13 @@ CONFIG_MAGIC_SYSRQ=y
922# CONFIG_DEBUG_KERNEL is not set 926# CONFIG_DEBUG_KERNEL is not set
923CONFIG_DEBUG_BUGVERBOSE=y 927CONFIG_DEBUG_BUGVERBOSE=y
924CONFIG_DEBUG_MEMORY_INIT=y 928CONFIG_DEBUG_MEMORY_INIT=y
929# CONFIG_RCU_CPU_STALL_DETECTOR is not set
925CONFIG_SYSCTL_SYSCALL_CHECK=y 930CONFIG_SYSCTL_SYSCALL_CHECK=y
931
932#
933# Tracers
934#
935# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
926# CONFIG_SAMPLES is not set 936# CONFIG_SAMPLES is not set
927 937
928# 938#
@@ -930,6 +940,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
930# 940#
931# CONFIG_KEYS is not set 941# CONFIG_KEYS is not set
932# CONFIG_SECURITY is not set 942# CONFIG_SECURITY is not set
943# CONFIG_SECURITYFS is not set
933# CONFIG_SECURITY_FILE_CAPABILITIES is not set 944# CONFIG_SECURITY_FILE_CAPABILITIES is not set
934CONFIG_XOR_BLOCKS=m 945CONFIG_XOR_BLOCKS=m
935CONFIG_ASYNC_CORE=m 946CONFIG_ASYNC_CORE=m
@@ -940,10 +951,12 @@ CONFIG_CRYPTO=y
940# 951#
941# Crypto core or helper 952# Crypto core or helper
942# 953#
954# CONFIG_CRYPTO_FIPS is not set
943CONFIG_CRYPTO_ALGAPI=y 955CONFIG_CRYPTO_ALGAPI=y
944CONFIG_CRYPTO_AEAD=m 956CONFIG_CRYPTO_AEAD=y
945CONFIG_CRYPTO_BLKCIPHER=y 957CONFIG_CRYPTO_BLKCIPHER=y
946CONFIG_CRYPTO_HASH=y 958CONFIG_CRYPTO_HASH=y
959CONFIG_CRYPTO_RNG=y
947CONFIG_CRYPTO_MANAGER=y 960CONFIG_CRYPTO_MANAGER=y
948CONFIG_CRYPTO_GF128MUL=m 961CONFIG_CRYPTO_GF128MUL=m
949CONFIG_CRYPTO_NULL=m 962CONFIG_CRYPTO_NULL=m
@@ -1017,14 +1030,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1017# 1030#
1018CONFIG_CRYPTO_DEFLATE=m 1031CONFIG_CRYPTO_DEFLATE=m
1019CONFIG_CRYPTO_LZO=m 1032CONFIG_CRYPTO_LZO=m
1033
1034#
1035# Random Number Generation
1036#
1037# CONFIG_CRYPTO_ANSI_CPRNG is not set
1020# CONFIG_CRYPTO_HW is not set 1038# CONFIG_CRYPTO_HW is not set
1021 1039
1022# 1040#
1023# Library routines 1041# Library routines
1024# 1042#
1025CONFIG_BITREVERSE=y 1043CONFIG_BITREVERSE=y
1026# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1027# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1028CONFIG_CRC_CCITT=m 1044CONFIG_CRC_CCITT=m
1029CONFIG_CRC16=m 1045CONFIG_CRC16=m
1030CONFIG_CRC_T10DIF=y 1046CONFIG_CRC_T10DIF=y
diff --git a/arch/m68k/configs/q40_defconfig b/arch/m68k/configs/q40_defconfig
index 72eaff0776b8..3459c594194b 100644
--- a/arch/m68k/configs/q40_defconfig
+++ b/arch/m68k/configs/q40_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:10 2008 4# Tue Dec 2 20:27:52 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16# CONFIG_NO_DMA is not set 16# CONFIG_NO_DMA is not set
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,11 +105,11 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
122# CONFIG_SUN3 is not set
123# CONFIG_AMIGA is not set 113# CONFIG_AMIGA is not set
124# CONFIG_ATARI is not set 114# CONFIG_ATARI is not set
125# CONFIG_MAC is not set 115# CONFIG_MAC is not set
@@ -148,19 +138,21 @@ CONFIG_DISCONTIGMEM_MANUAL=y
148CONFIG_DISCONTIGMEM=y 138CONFIG_DISCONTIGMEM=y
149CONFIG_FLAT_NODE_MEM_MAP=y 139CONFIG_FLAT_NODE_MEM_MAP=y
150CONFIG_NEED_MULTIPLE_NODES=y 140CONFIG_NEED_MULTIPLE_NODES=y
151# CONFIG_SPARSEMEM_STATIC is not set
152# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
153CONFIG_PAGEFLAGS_EXTENDED=y 141CONFIG_PAGEFLAGS_EXTENDED=y
154CONFIG_SPLIT_PTLOCK_CPUS=4 142CONFIG_SPLIT_PTLOCK_CPUS=4
155# CONFIG_RESOURCES_64BIT is not set 143# CONFIG_RESOURCES_64BIT is not set
144# CONFIG_PHYS_ADDR_T_64BIT is not set
156CONFIG_ZONE_DMA_FLAG=1 145CONFIG_ZONE_DMA_FLAG=1
157CONFIG_BOUNCE=y 146CONFIG_BOUNCE=y
158CONFIG_VIRT_TO_BUS=y 147CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y
159 149
160# 150#
161# General setup 151# General setup
162# 152#
163CONFIG_BINFMT_ELF=y 153CONFIG_BINFMT_ELF=y
154# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
155CONFIG_HAVE_AOUT=y
164CONFIG_BINFMT_AOUT=m 156CONFIG_BINFMT_AOUT=m
165CONFIG_BINFMT_MISC=m 157CONFIG_BINFMT_MISC=m
166CONFIG_HEARTBEAT=y 158CONFIG_HEARTBEAT=y
@@ -209,7 +201,6 @@ CONFIG_INET_TCP_DIAG=m
209CONFIG_TCP_CONG_CUBIC=y 201CONFIG_TCP_CONG_CUBIC=y
210CONFIG_DEFAULT_TCP_CONG="cubic" 202CONFIG_DEFAULT_TCP_CONG="cubic"
211# CONFIG_TCP_MD5SIG is not set 203# CONFIG_TCP_MD5SIG is not set
212# CONFIG_IP_VS is not set
213CONFIG_IPV6=m 204CONFIG_IPV6=m
214CONFIG_IPV6_PRIVACY=y 205CONFIG_IPV6_PRIVACY=y
215CONFIG_IPV6_ROUTER_PREF=y 206CONFIG_IPV6_ROUTER_PREF=y
@@ -259,13 +250,14 @@ CONFIG_NF_CONNTRACK_SANE=m
259CONFIG_NF_CONNTRACK_SIP=m 250CONFIG_NF_CONNTRACK_SIP=m
260CONFIG_NF_CONNTRACK_TFTP=m 251CONFIG_NF_CONNTRACK_TFTP=m
261# CONFIG_NF_CT_NETLINK is not set 252# CONFIG_NF_CT_NETLINK is not set
253# CONFIG_NETFILTER_TPROXY is not set
262CONFIG_NETFILTER_XTABLES=m 254CONFIG_NETFILTER_XTABLES=m
263CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 255CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
264CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 256CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
265CONFIG_NETFILTER_XT_TARGET_DSCP=m 257CONFIG_NETFILTER_XT_TARGET_DSCP=m
266CONFIG_NETFILTER_XT_TARGET_MARK=m 258CONFIG_NETFILTER_XT_TARGET_MARK=m
267CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
268CONFIG_NETFILTER_XT_TARGET_NFLOG=m 259CONFIG_NETFILTER_XT_TARGET_NFLOG=m
260CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
269CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 261CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
270CONFIG_NETFILTER_XT_TARGET_RATEEST=m 262CONFIG_NETFILTER_XT_TARGET_RATEEST=m
271CONFIG_NETFILTER_XT_TARGET_TRACE=m 263CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -279,19 +271,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
279CONFIG_NETFILTER_XT_MATCH_DCCP=m 271CONFIG_NETFILTER_XT_MATCH_DCCP=m
280CONFIG_NETFILTER_XT_MATCH_DSCP=m 272CONFIG_NETFILTER_XT_MATCH_DSCP=m
281CONFIG_NETFILTER_XT_MATCH_ESP=m 273CONFIG_NETFILTER_XT_MATCH_ESP=m
274CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
282CONFIG_NETFILTER_XT_MATCH_HELPER=m 275CONFIG_NETFILTER_XT_MATCH_HELPER=m
283CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 276CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
284CONFIG_NETFILTER_XT_MATCH_LENGTH=m 277CONFIG_NETFILTER_XT_MATCH_LENGTH=m
285CONFIG_NETFILTER_XT_MATCH_LIMIT=m 278CONFIG_NETFILTER_XT_MATCH_LIMIT=m
286CONFIG_NETFILTER_XT_MATCH_MAC=m 279CONFIG_NETFILTER_XT_MATCH_MAC=m
287CONFIG_NETFILTER_XT_MATCH_MARK=m 280CONFIG_NETFILTER_XT_MATCH_MARK=m
281CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
288CONFIG_NETFILTER_XT_MATCH_OWNER=m 282CONFIG_NETFILTER_XT_MATCH_OWNER=m
289CONFIG_NETFILTER_XT_MATCH_POLICY=m 283CONFIG_NETFILTER_XT_MATCH_POLICY=m
290CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
291CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 284CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
292CONFIG_NETFILTER_XT_MATCH_QUOTA=m 285CONFIG_NETFILTER_XT_MATCH_QUOTA=m
293CONFIG_NETFILTER_XT_MATCH_RATEEST=m 286CONFIG_NETFILTER_XT_MATCH_RATEEST=m
294CONFIG_NETFILTER_XT_MATCH_REALM=m 287CONFIG_NETFILTER_XT_MATCH_REALM=m
288CONFIG_NETFILTER_XT_MATCH_RECENT=m
289# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
295CONFIG_NETFILTER_XT_MATCH_SCTP=m 290CONFIG_NETFILTER_XT_MATCH_SCTP=m
296CONFIG_NETFILTER_XT_MATCH_STATE=m 291CONFIG_NETFILTER_XT_MATCH_STATE=m
297CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 292CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -299,20 +294,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
299CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 294CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
300CONFIG_NETFILTER_XT_MATCH_TIME=m 295CONFIG_NETFILTER_XT_MATCH_TIME=m
301CONFIG_NETFILTER_XT_MATCH_U32=m 296CONFIG_NETFILTER_XT_MATCH_U32=m
302CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 297# CONFIG_IP_VS is not set
303 298
304# 299#
305# IP: Netfilter Configuration 300# IP: Netfilter Configuration
306# 301#
302CONFIG_NF_DEFRAG_IPV4=m
307CONFIG_NF_CONNTRACK_IPV4=m 303CONFIG_NF_CONNTRACK_IPV4=m
308CONFIG_NF_CONNTRACK_PROC_COMPAT=y 304CONFIG_NF_CONNTRACK_PROC_COMPAT=y
309CONFIG_IP_NF_QUEUE=m 305CONFIG_IP_NF_QUEUE=m
310CONFIG_IP_NF_IPTABLES=m 306CONFIG_IP_NF_IPTABLES=m
311CONFIG_IP_NF_MATCH_RECENT=m 307CONFIG_IP_NF_MATCH_ADDRTYPE=m
312CONFIG_IP_NF_MATCH_ECN=m
313CONFIG_IP_NF_MATCH_AH=m 308CONFIG_IP_NF_MATCH_AH=m
309CONFIG_IP_NF_MATCH_ECN=m
314CONFIG_IP_NF_MATCH_TTL=m 310CONFIG_IP_NF_MATCH_TTL=m
315CONFIG_IP_NF_MATCH_ADDRTYPE=m
316CONFIG_IP_NF_FILTER=m 311CONFIG_IP_NF_FILTER=m
317CONFIG_IP_NF_TARGET_REJECT=m 312CONFIG_IP_NF_TARGET_REJECT=m
318CONFIG_IP_NF_TARGET_LOG=m 313CONFIG_IP_NF_TARGET_LOG=m
@@ -320,8 +315,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
320CONFIG_NF_NAT=m 315CONFIG_NF_NAT=m
321CONFIG_NF_NAT_NEEDED=y 316CONFIG_NF_NAT_NEEDED=y
322CONFIG_IP_NF_TARGET_MASQUERADE=m 317CONFIG_IP_NF_TARGET_MASQUERADE=m
323CONFIG_IP_NF_TARGET_REDIRECT=m
324CONFIG_IP_NF_TARGET_NETMAP=m 318CONFIG_IP_NF_TARGET_NETMAP=m
319CONFIG_IP_NF_TARGET_REDIRECT=m
325CONFIG_NF_NAT_SNMP_BASIC=m 320CONFIG_NF_NAT_SNMP_BASIC=m
326CONFIG_NF_NAT_PROTO_GRE=m 321CONFIG_NF_NAT_PROTO_GRE=m
327CONFIG_NF_NAT_PROTO_UDPLITE=m 322CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -334,9 +329,9 @@ CONFIG_NF_NAT_PPTP=m
334CONFIG_NF_NAT_H323=m 329CONFIG_NF_NAT_H323=m
335CONFIG_NF_NAT_SIP=m 330CONFIG_NF_NAT_SIP=m
336CONFIG_IP_NF_MANGLE=m 331CONFIG_IP_NF_MANGLE=m
332CONFIG_IP_NF_TARGET_CLUSTERIP=m
337CONFIG_IP_NF_TARGET_ECN=m 333CONFIG_IP_NF_TARGET_ECN=m
338CONFIG_IP_NF_TARGET_TTL=m 334CONFIG_IP_NF_TARGET_TTL=m
339CONFIG_IP_NF_TARGET_CLUSTERIP=m
340CONFIG_IP_NF_RAW=m 335CONFIG_IP_NF_RAW=m
341CONFIG_IP_NF_ARPTABLES=m 336CONFIG_IP_NF_ARPTABLES=m
342CONFIG_IP_NF_ARPFILTER=m 337CONFIG_IP_NF_ARPFILTER=m
@@ -348,16 +343,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
348CONFIG_NF_CONNTRACK_IPV6=m 343CONFIG_NF_CONNTRACK_IPV6=m
349CONFIG_IP6_NF_QUEUE=m 344CONFIG_IP6_NF_QUEUE=m
350CONFIG_IP6_NF_IPTABLES=m 345CONFIG_IP6_NF_IPTABLES=m
351CONFIG_IP6_NF_MATCH_RT=m 346CONFIG_IP6_NF_MATCH_AH=m
352CONFIG_IP6_NF_MATCH_OPTS=m 347CONFIG_IP6_NF_MATCH_EUI64=m
353CONFIG_IP6_NF_MATCH_FRAG=m 348CONFIG_IP6_NF_MATCH_FRAG=m
349CONFIG_IP6_NF_MATCH_OPTS=m
354CONFIG_IP6_NF_MATCH_HL=m 350CONFIG_IP6_NF_MATCH_HL=m
355CONFIG_IP6_NF_MATCH_IPV6HEADER=m 351CONFIG_IP6_NF_MATCH_IPV6HEADER=m
356CONFIG_IP6_NF_MATCH_AH=m
357CONFIG_IP6_NF_MATCH_MH=m 352CONFIG_IP6_NF_MATCH_MH=m
358CONFIG_IP6_NF_MATCH_EUI64=m 353CONFIG_IP6_NF_MATCH_RT=m
359CONFIG_IP6_NF_FILTER=m
360CONFIG_IP6_NF_TARGET_LOG=m 354CONFIG_IP6_NF_TARGET_LOG=m
355CONFIG_IP6_NF_FILTER=m
361CONFIG_IP6_NF_TARGET_REJECT=m 356CONFIG_IP6_NF_TARGET_REJECT=m
362CONFIG_IP6_NF_MANGLE=m 357CONFIG_IP6_NF_MANGLE=m
363CONFIG_IP6_NF_TARGET_HL=m 358CONFIG_IP6_NF_TARGET_HL=m
@@ -384,6 +379,7 @@ CONFIG_SCTP_HMAC_MD5=y
384# CONFIG_TIPC is not set 379# CONFIG_TIPC is not set
385# CONFIG_ATM is not set 380# CONFIG_ATM is not set
386# CONFIG_BRIDGE is not set 381# CONFIG_BRIDGE is not set
382# CONFIG_NET_DSA is not set
387# CONFIG_VLAN_8021Q is not set 383# CONFIG_VLAN_8021Q is not set
388# CONFIG_DECNET is not set 384# CONFIG_DECNET is not set
389CONFIG_LLC=m 385CONFIG_LLC=m
@@ -407,19 +403,8 @@ CONFIG_NET_CLS_ROUTE=y
407# CONFIG_IRDA is not set 403# CONFIG_IRDA is not set
408# CONFIG_BT is not set 404# CONFIG_BT is not set
409# CONFIG_AF_RXRPC is not set 405# CONFIG_AF_RXRPC is not set
410 406# CONFIG_PHONET is not set
411# 407# CONFIG_WIRELESS is not set
412# Wireless
413#
414# CONFIG_CFG80211 is not set
415CONFIG_WIRELESS_EXT=y
416# CONFIG_WIRELESS_EXT_SYSFS is not set
417# CONFIG_MAC80211 is not set
418CONFIG_IEEE80211=m
419# CONFIG_IEEE80211_DEBUG is not set
420CONFIG_IEEE80211_CRYPT_WEP=m
421CONFIG_IEEE80211_CRYPT_CCMP=m
422CONFIG_IEEE80211_CRYPT_TKIP=m
423# CONFIG_RFKILL is not set 408# CONFIG_RFKILL is not set
424# CONFIG_NET_9P is not set 409# CONFIG_NET_9P is not set
425 410
@@ -458,21 +443,20 @@ CONFIG_ATA_OVER_ETH=m
458CONFIG_MISC_DEVICES=y 443CONFIG_MISC_DEVICES=y
459# CONFIG_EEPROM_93CX6 is not set 444# CONFIG_EEPROM_93CX6 is not set
460# CONFIG_ENCLOSURE_SERVICES is not set 445# CONFIG_ENCLOSURE_SERVICES is not set
446# CONFIG_C2PORT is not set
461CONFIG_HAVE_IDE=y 447CONFIG_HAVE_IDE=y
462CONFIG_IDE=y 448CONFIG_IDE=y
463CONFIG_BLK_DEV_IDE=y
464 449
465# 450#
466# Please see Documentation/ide/ide.txt for help/info on IDE drives 451# Please see Documentation/ide/ide.txt for help/info on IDE drives
467# 452#
468CONFIG_IDE_ATAPI=y
469# CONFIG_BLK_DEV_IDE_SATA is not set 453# CONFIG_BLK_DEV_IDE_SATA is not set
470CONFIG_BLK_DEV_IDEDISK=y 454CONFIG_IDE_GD=y
471# CONFIG_IDEDISK_MULTI_MODE is not set 455CONFIG_IDE_GD_ATA=y
456# CONFIG_IDE_GD_ATAPI is not set
472CONFIG_BLK_DEV_IDECD=y 457CONFIG_BLK_DEV_IDECD=y
473CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 458CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
474# CONFIG_BLK_DEV_IDETAPE is not set 459# CONFIG_BLK_DEV_IDETAPE is not set
475CONFIG_BLK_DEV_IDEFLOPPY=m
476# CONFIG_BLK_DEV_IDESCSI is not set 460# CONFIG_BLK_DEV_IDESCSI is not set
477# CONFIG_IDE_TASK_IOCTL is not set 461# CONFIG_IDE_TASK_IOCTL is not set
478CONFIG_IDE_PROC_FS=y 462CONFIG_IDE_PROC_FS=y
@@ -585,8 +569,12 @@ CONFIG_NE2000=m
585# CONFIG_IBM_NEW_EMAC_RGMII is not set 569# CONFIG_IBM_NEW_EMAC_RGMII is not set
586# CONFIG_IBM_NEW_EMAC_TAH is not set 570# CONFIG_IBM_NEW_EMAC_TAH is not set
587# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 571# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
572# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
573# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
574# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
588# CONFIG_NET_PCI is not set 575# CONFIG_NET_PCI is not set
589# CONFIG_B44 is not set 576# CONFIG_B44 is not set
577# CONFIG_CS89x0 is not set
590# CONFIG_NETDEV_1000 is not set 578# CONFIG_NETDEV_1000 is not set
591# CONFIG_NETDEV_10000 is not set 579# CONFIG_NETDEV_10000 is not set
592# CONFIG_TR is not set 580# CONFIG_TR is not set
@@ -656,6 +644,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
656CONFIG_MOUSE_PS2_SYNAPTICS=y 644CONFIG_MOUSE_PS2_SYNAPTICS=y
657CONFIG_MOUSE_PS2_LIFEBOOK=y 645CONFIG_MOUSE_PS2_LIFEBOOK=y
658CONFIG_MOUSE_PS2_TRACKPOINT=y 646CONFIG_MOUSE_PS2_TRACKPOINT=y
647# CONFIG_MOUSE_PS2_ELANTECH is not set
659# CONFIG_MOUSE_PS2_TOUCHKIT is not set 648# CONFIG_MOUSE_PS2_TOUCHKIT is not set
660CONFIG_MOUSE_SERIAL=m 649CONFIG_MOUSE_SERIAL=m
661# CONFIG_MOUSE_INPORT is not set 650# CONFIG_MOUSE_INPORT is not set
@@ -717,11 +706,11 @@ CONFIG_GEN_RTC_X=y
717# CONFIG_THERMAL is not set 706# CONFIG_THERMAL is not set
718# CONFIG_THERMAL_HWMON is not set 707# CONFIG_THERMAL_HWMON is not set
719# CONFIG_WATCHDOG is not set 708# CONFIG_WATCHDOG is not set
709CONFIG_SSB_POSSIBLE=y
720 710
721# 711#
722# Sonics Silicon Backplane 712# Sonics Silicon Backplane
723# 713#
724CONFIG_SSB_POSSIBLE=y
725# CONFIG_SSB is not set 714# CONFIG_SSB is not set
726 715
727# 716#
@@ -731,6 +720,7 @@ CONFIG_SSB_POSSIBLE=y
731# CONFIG_MFD_SM501 is not set 720# CONFIG_MFD_SM501 is not set
732# CONFIG_HTC_PASIC3 is not set 721# CONFIG_HTC_PASIC3 is not set
733# CONFIG_MFD_TMIO is not set 722# CONFIG_MFD_TMIO is not set
723# CONFIG_REGULATOR is not set
734 724
735# 725#
736# Multimedia devices 726# Multimedia devices
@@ -756,6 +746,7 @@ CONFIG_SSB_POSSIBLE=y
756CONFIG_FB=y 746CONFIG_FB=y
757# CONFIG_FIRMWARE_EDID is not set 747# CONFIG_FIRMWARE_EDID is not set
758# CONFIG_FB_DDC is not set 748# CONFIG_FB_DDC is not set
749# CONFIG_FB_BOOT_VESA_SUPPORT is not set
759CONFIG_FB_CFB_FILLRECT=y 750CONFIG_FB_CFB_FILLRECT=y
760CONFIG_FB_CFB_COPYAREA=y 751CONFIG_FB_CFB_COPYAREA=y
761CONFIG_FB_CFB_IMAGEBLIT=y 752CONFIG_FB_CFB_IMAGEBLIT=y
@@ -778,6 +769,8 @@ CONFIG_FB_Q40=y
778# CONFIG_FB_UVESA is not set 769# CONFIG_FB_UVESA is not set
779# CONFIG_FB_S1D13XXX is not set 770# CONFIG_FB_S1D13XXX is not set
780# CONFIG_FB_VIRTUAL is not set 771# CONFIG_FB_VIRTUAL is not set
772# CONFIG_FB_METRONOME is not set
773# CONFIG_FB_MB862XX is not set
781# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 774# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
782 775
783# 776#
@@ -800,12 +793,19 @@ CONFIG_LOGO_LINUX_MONO=y
800CONFIG_LOGO_LINUX_VGA16=y 793CONFIG_LOGO_LINUX_VGA16=y
801CONFIG_LOGO_LINUX_CLUT224=y 794CONFIG_LOGO_LINUX_CLUT224=y
802CONFIG_SOUND=m 795CONFIG_SOUND=m
796CONFIG_SOUND_OSS_CORE=y
803CONFIG_DMASOUND_Q40=m 797CONFIG_DMASOUND_Q40=m
804CONFIG_DMASOUND=m 798CONFIG_DMASOUND=m
805CONFIG_HID_SUPPORT=y 799CONFIG_HID_SUPPORT=y
806CONFIG_HID=m 800CONFIG_HID=m
807# CONFIG_HID_DEBUG is not set 801# CONFIG_HID_DEBUG is not set
808CONFIG_HIDRAW=y 802CONFIG_HIDRAW=y
803# CONFIG_HID_PID is not set
804
805#
806# Special HID drivers
807#
808CONFIG_HID_COMPAT=y
809# CONFIG_USB_SUPPORT is not set 809# CONFIG_USB_SUPPORT is not set
810# CONFIG_MMC is not set 810# CONFIG_MMC is not set
811# CONFIG_MEMSTICK is not set 811# CONFIG_MEMSTICK is not set
@@ -814,6 +814,8 @@ CONFIG_HIDRAW=y
814# CONFIG_RTC_CLASS is not set 814# CONFIG_RTC_CLASS is not set
815# CONFIG_DMADEVICES is not set 815# CONFIG_DMADEVICES is not set
816# CONFIG_UIO is not set 816# CONFIG_UIO is not set
817# CONFIG_STAGING is not set
818CONFIG_STAGING_EXCLUDE_BUILD=y
817 819
818# 820#
819# Character devices 821# Character devices
@@ -827,8 +829,9 @@ CONFIG_EXT2_FS=y
827# CONFIG_EXT2_FS_XIP is not set 829# CONFIG_EXT2_FS_XIP is not set
828CONFIG_EXT3_FS=y 830CONFIG_EXT3_FS=y
829# CONFIG_EXT3_FS_XATTR is not set 831# CONFIG_EXT3_FS_XATTR is not set
830# CONFIG_EXT4DEV_FS is not set 832# CONFIG_EXT4_FS is not set
831CONFIG_JBD=y 833CONFIG_JBD=y
834CONFIG_JBD2=m
832CONFIG_REISERFS_FS=m 835CONFIG_REISERFS_FS=m
833# CONFIG_REISERFS_CHECK is not set 836# CONFIG_REISERFS_CHECK is not set
834# CONFIG_REISERFS_PROC_INFO is not set 837# CONFIG_REISERFS_PROC_INFO is not set
@@ -839,6 +842,7 @@ CONFIG_JFS_FS=m
839# CONFIG_JFS_DEBUG is not set 842# CONFIG_JFS_DEBUG is not set
840# CONFIG_JFS_STATISTICS is not set 843# CONFIG_JFS_STATISTICS is not set
841# CONFIG_FS_POSIX_ACL is not set 844# CONFIG_FS_POSIX_ACL is not set
845CONFIG_FILE_LOCKING=y
842CONFIG_XFS_FS=m 846CONFIG_XFS_FS=m
843# CONFIG_XFS_QUOTA is not set 847# CONFIG_XFS_QUOTA is not set
844# CONFIG_XFS_POSIX_ACL is not set 848# CONFIG_XFS_POSIX_ACL is not set
@@ -850,6 +854,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
850# CONFIG_OCFS2_FS_STATS is not set 854# CONFIG_OCFS2_FS_STATS is not set
851# CONFIG_OCFS2_DEBUG_MASKLOG is not set 855# CONFIG_OCFS2_DEBUG_MASKLOG is not set
852# CONFIG_OCFS2_DEBUG_FS is not set 856# CONFIG_OCFS2_DEBUG_FS is not set
857# CONFIG_OCFS2_COMPAT_JBD is not set
853CONFIG_DNOTIFY=y 858CONFIG_DNOTIFY=y
854CONFIG_INOTIFY=y 859CONFIG_INOTIFY=y
855CONFIG_INOTIFY_USER=y 860CONFIG_INOTIFY_USER=y
@@ -888,6 +893,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
888CONFIG_PROC_FS=y 893CONFIG_PROC_FS=y
889CONFIG_PROC_KCORE=y 894CONFIG_PROC_KCORE=y
890CONFIG_PROC_SYSCTL=y 895CONFIG_PROC_SYSCTL=y
896CONFIG_PROC_PAGE_MONITOR=y
891CONFIG_SYSFS=y 897CONFIG_SYSFS=y
892CONFIG_TMPFS=y 898CONFIG_TMPFS=y
893# CONFIG_TMPFS_POSIX_ACL is not set 899# CONFIG_TMPFS_POSIX_ACL is not set
@@ -930,6 +936,7 @@ CONFIG_EXPORTFS=m
930CONFIG_NFS_COMMON=y 936CONFIG_NFS_COMMON=y
931CONFIG_SUNRPC=y 937CONFIG_SUNRPC=y
932CONFIG_SUNRPC_GSS=y 938CONFIG_SUNRPC_GSS=y
939# CONFIG_SUNRPC_REGISTER_V4 is not set
933CONFIG_RPCSEC_GSS_KRB5=y 940CONFIG_RPCSEC_GSS_KRB5=y
934# CONFIG_RPCSEC_GSS_SPKM3 is not set 941# CONFIG_RPCSEC_GSS_SPKM3 is not set
935CONFIG_SMB_FS=m 942CONFIG_SMB_FS=m
@@ -1002,7 +1009,13 @@ CONFIG_MAGIC_SYSRQ=y
1002# CONFIG_DEBUG_KERNEL is not set 1009# CONFIG_DEBUG_KERNEL is not set
1003CONFIG_DEBUG_BUGVERBOSE=y 1010CONFIG_DEBUG_BUGVERBOSE=y
1004CONFIG_DEBUG_MEMORY_INIT=y 1011CONFIG_DEBUG_MEMORY_INIT=y
1012# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1005CONFIG_SYSCTL_SYSCALL_CHECK=y 1013CONFIG_SYSCTL_SYSCALL_CHECK=y
1014
1015#
1016# Tracers
1017#
1018# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1006# CONFIG_SAMPLES is not set 1019# CONFIG_SAMPLES is not set
1007 1020
1008# 1021#
@@ -1010,6 +1023,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
1010# 1023#
1011# CONFIG_KEYS is not set 1024# CONFIG_KEYS is not set
1012# CONFIG_SECURITY is not set 1025# CONFIG_SECURITY is not set
1026# CONFIG_SECURITYFS is not set
1013# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1027# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1014CONFIG_XOR_BLOCKS=m 1028CONFIG_XOR_BLOCKS=m
1015CONFIG_ASYNC_CORE=m 1029CONFIG_ASYNC_CORE=m
@@ -1020,10 +1034,12 @@ CONFIG_CRYPTO=y
1020# 1034#
1021# Crypto core or helper 1035# Crypto core or helper
1022# 1036#
1037# CONFIG_CRYPTO_FIPS is not set
1023CONFIG_CRYPTO_ALGAPI=y 1038CONFIG_CRYPTO_ALGAPI=y
1024CONFIG_CRYPTO_AEAD=m 1039CONFIG_CRYPTO_AEAD=y
1025CONFIG_CRYPTO_BLKCIPHER=y 1040CONFIG_CRYPTO_BLKCIPHER=y
1026CONFIG_CRYPTO_HASH=y 1041CONFIG_CRYPTO_HASH=y
1042CONFIG_CRYPTO_RNG=y
1027CONFIG_CRYPTO_MANAGER=y 1043CONFIG_CRYPTO_MANAGER=y
1028CONFIG_CRYPTO_GF128MUL=m 1044CONFIG_CRYPTO_GF128MUL=m
1029CONFIG_CRYPTO_NULL=m 1045CONFIG_CRYPTO_NULL=m
@@ -1097,14 +1113,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1097# 1113#
1098CONFIG_CRYPTO_DEFLATE=m 1114CONFIG_CRYPTO_DEFLATE=m
1099CONFIG_CRYPTO_LZO=m 1115CONFIG_CRYPTO_LZO=m
1116
1117#
1118# Random Number Generation
1119#
1120# CONFIG_CRYPTO_ANSI_CPRNG is not set
1100# CONFIG_CRYPTO_HW is not set 1121# CONFIG_CRYPTO_HW is not set
1101 1122
1102# 1123#
1103# Library routines 1124# Library routines
1104# 1125#
1105CONFIG_BITREVERSE=y 1126CONFIG_BITREVERSE=y
1106# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1107# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1108CONFIG_CRC_CCITT=m 1127CONFIG_CRC_CCITT=m
1109CONFIG_CRC16=m 1128CONFIG_CRC16=m
1110CONFIG_CRC_T10DIF=y 1129CONFIG_CRC_T10DIF=y
diff --git a/arch/m68k/configs/sun3_defconfig b/arch/m68k/configs/sun3_defconfig
index cb62b96d766e..f404917429fa 100644
--- a/arch/m68k/configs/sun3_defconfig
+++ b/arch/m68k/configs/sun3_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:11 2008 4# Tue Dec 2 20:27:53 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16CONFIG_NO_DMA=y 16CONFIG_NO_DMA=y
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,10 +105,19 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
113# CONFIG_AMIGA is not set
114# CONFIG_ATARI is not set
115# CONFIG_MAC is not set
116# CONFIG_APOLLO is not set
117# CONFIG_VME is not set
118# CONFIG_HP300 is not set
119# CONFIG_SUN3X is not set
120# CONFIG_Q40 is not set
122CONFIG_SUN3=y 121CONFIG_SUN3=y
123 122
124# 123#
@@ -137,19 +136,21 @@ CONFIG_FLATMEM_MANUAL=y
137CONFIG_FLATMEM=y 136CONFIG_FLATMEM=y
138CONFIG_FLAT_NODE_MEM_MAP=y 137CONFIG_FLAT_NODE_MEM_MAP=y
139CONFIG_NEED_MULTIPLE_NODES=y 138CONFIG_NEED_MULTIPLE_NODES=y
140# CONFIG_SPARSEMEM_STATIC is not set
141# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
142CONFIG_PAGEFLAGS_EXTENDED=y 139CONFIG_PAGEFLAGS_EXTENDED=y
143CONFIG_SPLIT_PTLOCK_CPUS=4 140CONFIG_SPLIT_PTLOCK_CPUS=4
144# CONFIG_RESOURCES_64BIT is not set 141# CONFIG_RESOURCES_64BIT is not set
142# CONFIG_PHYS_ADDR_T_64BIT is not set
145CONFIG_ZONE_DMA_FLAG=1 143CONFIG_ZONE_DMA_FLAG=1
146CONFIG_BOUNCE=y 144CONFIG_BOUNCE=y
147CONFIG_VIRT_TO_BUS=y 145CONFIG_VIRT_TO_BUS=y
146CONFIG_UNEVICTABLE_LRU=y
148 147
149# 148#
150# General setup 149# General setup
151# 150#
152CONFIG_BINFMT_ELF=y 151CONFIG_BINFMT_ELF=y
152# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
153CONFIG_HAVE_AOUT=y
153CONFIG_BINFMT_AOUT=m 154CONFIG_BINFMT_AOUT=m
154CONFIG_BINFMT_MISC=m 155CONFIG_BINFMT_MISC=m
155CONFIG_PROC_HARDWARE=y 156CONFIG_PROC_HARDWARE=y
@@ -198,7 +199,6 @@ CONFIG_INET_TCP_DIAG=m
198CONFIG_TCP_CONG_CUBIC=y 199CONFIG_TCP_CONG_CUBIC=y
199CONFIG_DEFAULT_TCP_CONG="cubic" 200CONFIG_DEFAULT_TCP_CONG="cubic"
200# CONFIG_TCP_MD5SIG is not set 201# CONFIG_TCP_MD5SIG is not set
201# CONFIG_IP_VS is not set
202CONFIG_IPV6=m 202CONFIG_IPV6=m
203CONFIG_IPV6_PRIVACY=y 203CONFIG_IPV6_PRIVACY=y
204CONFIG_IPV6_ROUTER_PREF=y 204CONFIG_IPV6_ROUTER_PREF=y
@@ -248,13 +248,14 @@ CONFIG_NF_CONNTRACK_SANE=m
248CONFIG_NF_CONNTRACK_SIP=m 248CONFIG_NF_CONNTRACK_SIP=m
249CONFIG_NF_CONNTRACK_TFTP=m 249CONFIG_NF_CONNTRACK_TFTP=m
250# CONFIG_NF_CT_NETLINK is not set 250# CONFIG_NF_CT_NETLINK is not set
251# CONFIG_NETFILTER_TPROXY is not set
251CONFIG_NETFILTER_XTABLES=m 252CONFIG_NETFILTER_XTABLES=m
252CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 253CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
253CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 254CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
254CONFIG_NETFILTER_XT_TARGET_DSCP=m 255CONFIG_NETFILTER_XT_TARGET_DSCP=m
255CONFIG_NETFILTER_XT_TARGET_MARK=m 256CONFIG_NETFILTER_XT_TARGET_MARK=m
256CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
257CONFIG_NETFILTER_XT_TARGET_NFLOG=m 257CONFIG_NETFILTER_XT_TARGET_NFLOG=m
258CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
258CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 259CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
259CONFIG_NETFILTER_XT_TARGET_RATEEST=m 260CONFIG_NETFILTER_XT_TARGET_RATEEST=m
260CONFIG_NETFILTER_XT_TARGET_TRACE=m 261CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -268,19 +269,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
268CONFIG_NETFILTER_XT_MATCH_DCCP=m 269CONFIG_NETFILTER_XT_MATCH_DCCP=m
269CONFIG_NETFILTER_XT_MATCH_DSCP=m 270CONFIG_NETFILTER_XT_MATCH_DSCP=m
270CONFIG_NETFILTER_XT_MATCH_ESP=m 271CONFIG_NETFILTER_XT_MATCH_ESP=m
272CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
271CONFIG_NETFILTER_XT_MATCH_HELPER=m 273CONFIG_NETFILTER_XT_MATCH_HELPER=m
272CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 274CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
273CONFIG_NETFILTER_XT_MATCH_LENGTH=m 275CONFIG_NETFILTER_XT_MATCH_LENGTH=m
274CONFIG_NETFILTER_XT_MATCH_LIMIT=m 276CONFIG_NETFILTER_XT_MATCH_LIMIT=m
275CONFIG_NETFILTER_XT_MATCH_MAC=m 277CONFIG_NETFILTER_XT_MATCH_MAC=m
276CONFIG_NETFILTER_XT_MATCH_MARK=m 278CONFIG_NETFILTER_XT_MATCH_MARK=m
279CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
277CONFIG_NETFILTER_XT_MATCH_OWNER=m 280CONFIG_NETFILTER_XT_MATCH_OWNER=m
278CONFIG_NETFILTER_XT_MATCH_POLICY=m 281CONFIG_NETFILTER_XT_MATCH_POLICY=m
279CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
280CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 282CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
281CONFIG_NETFILTER_XT_MATCH_QUOTA=m 283CONFIG_NETFILTER_XT_MATCH_QUOTA=m
282CONFIG_NETFILTER_XT_MATCH_RATEEST=m 284CONFIG_NETFILTER_XT_MATCH_RATEEST=m
283CONFIG_NETFILTER_XT_MATCH_REALM=m 285CONFIG_NETFILTER_XT_MATCH_REALM=m
286CONFIG_NETFILTER_XT_MATCH_RECENT=m
287# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
284CONFIG_NETFILTER_XT_MATCH_SCTP=m 288CONFIG_NETFILTER_XT_MATCH_SCTP=m
285CONFIG_NETFILTER_XT_MATCH_STATE=m 289CONFIG_NETFILTER_XT_MATCH_STATE=m
286CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 290CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -288,20 +292,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
288CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 292CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
289CONFIG_NETFILTER_XT_MATCH_TIME=m 293CONFIG_NETFILTER_XT_MATCH_TIME=m
290CONFIG_NETFILTER_XT_MATCH_U32=m 294CONFIG_NETFILTER_XT_MATCH_U32=m
291CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 295# CONFIG_IP_VS is not set
292 296
293# 297#
294# IP: Netfilter Configuration 298# IP: Netfilter Configuration
295# 299#
300CONFIG_NF_DEFRAG_IPV4=m
296CONFIG_NF_CONNTRACK_IPV4=m 301CONFIG_NF_CONNTRACK_IPV4=m
297CONFIG_NF_CONNTRACK_PROC_COMPAT=y 302CONFIG_NF_CONNTRACK_PROC_COMPAT=y
298CONFIG_IP_NF_QUEUE=m 303CONFIG_IP_NF_QUEUE=m
299CONFIG_IP_NF_IPTABLES=m 304CONFIG_IP_NF_IPTABLES=m
300CONFIG_IP_NF_MATCH_RECENT=m 305CONFIG_IP_NF_MATCH_ADDRTYPE=m
301CONFIG_IP_NF_MATCH_ECN=m
302CONFIG_IP_NF_MATCH_AH=m 306CONFIG_IP_NF_MATCH_AH=m
307CONFIG_IP_NF_MATCH_ECN=m
303CONFIG_IP_NF_MATCH_TTL=m 308CONFIG_IP_NF_MATCH_TTL=m
304CONFIG_IP_NF_MATCH_ADDRTYPE=m
305CONFIG_IP_NF_FILTER=m 309CONFIG_IP_NF_FILTER=m
306CONFIG_IP_NF_TARGET_REJECT=m 310CONFIG_IP_NF_TARGET_REJECT=m
307CONFIG_IP_NF_TARGET_LOG=m 311CONFIG_IP_NF_TARGET_LOG=m
@@ -309,8 +313,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
309CONFIG_NF_NAT=m 313CONFIG_NF_NAT=m
310CONFIG_NF_NAT_NEEDED=y 314CONFIG_NF_NAT_NEEDED=y
311CONFIG_IP_NF_TARGET_MASQUERADE=m 315CONFIG_IP_NF_TARGET_MASQUERADE=m
312CONFIG_IP_NF_TARGET_REDIRECT=m
313CONFIG_IP_NF_TARGET_NETMAP=m 316CONFIG_IP_NF_TARGET_NETMAP=m
317CONFIG_IP_NF_TARGET_REDIRECT=m
314CONFIG_NF_NAT_SNMP_BASIC=m 318CONFIG_NF_NAT_SNMP_BASIC=m
315CONFIG_NF_NAT_PROTO_GRE=m 319CONFIG_NF_NAT_PROTO_GRE=m
316CONFIG_NF_NAT_PROTO_UDPLITE=m 320CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -323,9 +327,9 @@ CONFIG_NF_NAT_PPTP=m
323CONFIG_NF_NAT_H323=m 327CONFIG_NF_NAT_H323=m
324CONFIG_NF_NAT_SIP=m 328CONFIG_NF_NAT_SIP=m
325CONFIG_IP_NF_MANGLE=m 329CONFIG_IP_NF_MANGLE=m
330CONFIG_IP_NF_TARGET_CLUSTERIP=m
326CONFIG_IP_NF_TARGET_ECN=m 331CONFIG_IP_NF_TARGET_ECN=m
327CONFIG_IP_NF_TARGET_TTL=m 332CONFIG_IP_NF_TARGET_TTL=m
328CONFIG_IP_NF_TARGET_CLUSTERIP=m
329CONFIG_IP_NF_RAW=m 333CONFIG_IP_NF_RAW=m
330CONFIG_IP_NF_ARPTABLES=m 334CONFIG_IP_NF_ARPTABLES=m
331CONFIG_IP_NF_ARPFILTER=m 335CONFIG_IP_NF_ARPFILTER=m
@@ -337,16 +341,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
337CONFIG_NF_CONNTRACK_IPV6=m 341CONFIG_NF_CONNTRACK_IPV6=m
338CONFIG_IP6_NF_QUEUE=m 342CONFIG_IP6_NF_QUEUE=m
339CONFIG_IP6_NF_IPTABLES=m 343CONFIG_IP6_NF_IPTABLES=m
340CONFIG_IP6_NF_MATCH_RT=m 344CONFIG_IP6_NF_MATCH_AH=m
341CONFIG_IP6_NF_MATCH_OPTS=m 345CONFIG_IP6_NF_MATCH_EUI64=m
342CONFIG_IP6_NF_MATCH_FRAG=m 346CONFIG_IP6_NF_MATCH_FRAG=m
347CONFIG_IP6_NF_MATCH_OPTS=m
343CONFIG_IP6_NF_MATCH_HL=m 348CONFIG_IP6_NF_MATCH_HL=m
344CONFIG_IP6_NF_MATCH_IPV6HEADER=m 349CONFIG_IP6_NF_MATCH_IPV6HEADER=m
345CONFIG_IP6_NF_MATCH_AH=m
346CONFIG_IP6_NF_MATCH_MH=m 350CONFIG_IP6_NF_MATCH_MH=m
347CONFIG_IP6_NF_MATCH_EUI64=m 351CONFIG_IP6_NF_MATCH_RT=m
348CONFIG_IP6_NF_FILTER=m
349CONFIG_IP6_NF_TARGET_LOG=m 352CONFIG_IP6_NF_TARGET_LOG=m
353CONFIG_IP6_NF_FILTER=m
350CONFIG_IP6_NF_TARGET_REJECT=m 354CONFIG_IP6_NF_TARGET_REJECT=m
351CONFIG_IP6_NF_MANGLE=m 355CONFIG_IP6_NF_MANGLE=m
352CONFIG_IP6_NF_TARGET_HL=m 356CONFIG_IP6_NF_TARGET_HL=m
@@ -373,6 +377,7 @@ CONFIG_SCTP_HMAC_MD5=y
373# CONFIG_TIPC is not set 377# CONFIG_TIPC is not set
374# CONFIG_ATM is not set 378# CONFIG_ATM is not set
375# CONFIG_BRIDGE is not set 379# CONFIG_BRIDGE is not set
380# CONFIG_NET_DSA is not set
376# CONFIG_VLAN_8021Q is not set 381# CONFIG_VLAN_8021Q is not set
377# CONFIG_DECNET is not set 382# CONFIG_DECNET is not set
378CONFIG_LLC=m 383CONFIG_LLC=m
@@ -396,19 +401,8 @@ CONFIG_NET_CLS_ROUTE=y
396# CONFIG_IRDA is not set 401# CONFIG_IRDA is not set
397# CONFIG_BT is not set 402# CONFIG_BT is not set
398# CONFIG_AF_RXRPC is not set 403# CONFIG_AF_RXRPC is not set
399 404# CONFIG_PHONET is not set
400# 405# CONFIG_WIRELESS is not set
401# Wireless
402#
403# CONFIG_CFG80211 is not set
404CONFIG_WIRELESS_EXT=y
405# CONFIG_WIRELESS_EXT_SYSFS is not set
406# CONFIG_MAC80211 is not set
407CONFIG_IEEE80211=m
408# CONFIG_IEEE80211_DEBUG is not set
409CONFIG_IEEE80211_CRYPT_WEP=m
410CONFIG_IEEE80211_CRYPT_CCMP=m
411CONFIG_IEEE80211_CRYPT_TKIP=m
412# CONFIG_RFKILL is not set 406# CONFIG_RFKILL is not set
413# CONFIG_NET_9P is not set 407# CONFIG_NET_9P is not set
414 408
@@ -446,6 +440,7 @@ CONFIG_ATA_OVER_ETH=m
446CONFIG_MISC_DEVICES=y 440CONFIG_MISC_DEVICES=y
447# CONFIG_EEPROM_93CX6 is not set 441# CONFIG_EEPROM_93CX6 is not set
448# CONFIG_ENCLOSURE_SERVICES is not set 442# CONFIG_ENCLOSURE_SERVICES is not set
443# CONFIG_C2PORT is not set
449CONFIG_HAVE_IDE=y 444CONFIG_HAVE_IDE=y
450# CONFIG_IDE is not set 445# CONFIG_IDE is not set
451 446
@@ -531,6 +526,9 @@ CONFIG_SUN3_82586=y
531# CONFIG_IBM_NEW_EMAC_RGMII is not set 526# CONFIG_IBM_NEW_EMAC_RGMII is not set
532# CONFIG_IBM_NEW_EMAC_TAH is not set 527# CONFIG_IBM_NEW_EMAC_TAH is not set
533# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 528# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
529# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
530# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
531# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
534# CONFIG_NETDEV_1000 is not set 532# CONFIG_NETDEV_1000 is not set
535# CONFIG_NETDEV_10000 is not set 533# CONFIG_NETDEV_10000 is not set
536 534
@@ -599,6 +597,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
599CONFIG_MOUSE_PS2_SYNAPTICS=y 597CONFIG_MOUSE_PS2_SYNAPTICS=y
600CONFIG_MOUSE_PS2_LIFEBOOK=y 598CONFIG_MOUSE_PS2_LIFEBOOK=y
601CONFIG_MOUSE_PS2_TRACKPOINT=y 599CONFIG_MOUSE_PS2_TRACKPOINT=y
600# CONFIG_MOUSE_PS2_ELANTECH is not set
602# CONFIG_MOUSE_PS2_TOUCHKIT is not set 601# CONFIG_MOUSE_PS2_TOUCHKIT is not set
603CONFIG_MOUSE_SERIAL=m 602CONFIG_MOUSE_SERIAL=m
604# CONFIG_MOUSE_VSXXXAA is not set 603# CONFIG_MOUSE_VSXXXAA is not set
@@ -655,16 +654,13 @@ CONFIG_GEN_RTC_X=y
655# CONFIG_WATCHDOG is not set 654# CONFIG_WATCHDOG is not set
656 655
657# 656#
658# Sonics Silicon Backplane
659#
660
661#
662# Multifunction device drivers 657# Multifunction device drivers
663# 658#
664# CONFIG_MFD_CORE is not set 659# CONFIG_MFD_CORE is not set
665# CONFIG_MFD_SM501 is not set 660# CONFIG_MFD_SM501 is not set
666# CONFIG_HTC_PASIC3 is not set 661# CONFIG_HTC_PASIC3 is not set
667# CONFIG_MFD_TMIO is not set 662# CONFIG_MFD_TMIO is not set
663# CONFIG_REGULATOR is not set
668 664
669# 665#
670# Multimedia devices 666# Multimedia devices
@@ -690,6 +686,7 @@ CONFIG_GEN_RTC_X=y
690CONFIG_FB=y 686CONFIG_FB=y
691# CONFIG_FIRMWARE_EDID is not set 687# CONFIG_FIRMWARE_EDID is not set
692# CONFIG_FB_DDC is not set 688# CONFIG_FB_DDC is not set
689# CONFIG_FB_BOOT_VESA_SUPPORT is not set
693# CONFIG_FB_CFB_FILLRECT is not set 690# CONFIG_FB_CFB_FILLRECT is not set
694# CONFIG_FB_CFB_COPYAREA is not set 691# CONFIG_FB_CFB_COPYAREA is not set
695# CONFIG_FB_CFB_IMAGEBLIT is not set 692# CONFIG_FB_CFB_IMAGEBLIT is not set
@@ -711,6 +708,8 @@ CONFIG_FB=y
711# CONFIG_FB_UVESA is not set 708# CONFIG_FB_UVESA is not set
712# CONFIG_FB_S1D13XXX is not set 709# CONFIG_FB_S1D13XXX is not set
713# CONFIG_FB_VIRTUAL is not set 710# CONFIG_FB_VIRTUAL is not set
711# CONFIG_FB_METRONOME is not set
712# CONFIG_FB_MB862XX is not set
714# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 713# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
715 714
716# 715#
@@ -737,6 +736,12 @@ CONFIG_HID_SUPPORT=y
737CONFIG_HID=m 736CONFIG_HID=m
738# CONFIG_HID_DEBUG is not set 737# CONFIG_HID_DEBUG is not set
739CONFIG_HIDRAW=y 738CONFIG_HIDRAW=y
739# CONFIG_HID_PID is not set
740
741#
742# Special HID drivers
743#
744CONFIG_HID_COMPAT=y
740# CONFIG_USB_SUPPORT is not set 745# CONFIG_USB_SUPPORT is not set
741# CONFIG_MMC is not set 746# CONFIG_MMC is not set
742# CONFIG_MEMSTICK is not set 747# CONFIG_MEMSTICK is not set
@@ -744,6 +749,8 @@ CONFIG_HIDRAW=y
744# CONFIG_ACCESSIBILITY is not set 749# CONFIG_ACCESSIBILITY is not set
745# CONFIG_RTC_CLASS is not set 750# CONFIG_RTC_CLASS is not set
746# CONFIG_UIO is not set 751# CONFIG_UIO is not set
752# CONFIG_STAGING is not set
753CONFIG_STAGING_EXCLUDE_BUILD=y
747 754
748# 755#
749# Character devices 756# Character devices
@@ -757,8 +764,9 @@ CONFIG_EXT2_FS=y
757# CONFIG_EXT2_FS_XIP is not set 764# CONFIG_EXT2_FS_XIP is not set
758CONFIG_EXT3_FS=y 765CONFIG_EXT3_FS=y
759# CONFIG_EXT3_FS_XATTR is not set 766# CONFIG_EXT3_FS_XATTR is not set
760# CONFIG_EXT4DEV_FS is not set 767# CONFIG_EXT4_FS is not set
761CONFIG_JBD=y 768CONFIG_JBD=y
769CONFIG_JBD2=m
762CONFIG_REISERFS_FS=m 770CONFIG_REISERFS_FS=m
763# CONFIG_REISERFS_CHECK is not set 771# CONFIG_REISERFS_CHECK is not set
764# CONFIG_REISERFS_PROC_INFO is not set 772# CONFIG_REISERFS_PROC_INFO is not set
@@ -769,6 +777,7 @@ CONFIG_JFS_FS=m
769# CONFIG_JFS_DEBUG is not set 777# CONFIG_JFS_DEBUG is not set
770# CONFIG_JFS_STATISTICS is not set 778# CONFIG_JFS_STATISTICS is not set
771# CONFIG_FS_POSIX_ACL is not set 779# CONFIG_FS_POSIX_ACL is not set
780CONFIG_FILE_LOCKING=y
772CONFIG_XFS_FS=m 781CONFIG_XFS_FS=m
773# CONFIG_XFS_QUOTA is not set 782# CONFIG_XFS_QUOTA is not set
774# CONFIG_XFS_POSIX_ACL is not set 783# CONFIG_XFS_POSIX_ACL is not set
@@ -780,6 +789,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
780# CONFIG_OCFS2_FS_STATS is not set 789# CONFIG_OCFS2_FS_STATS is not set
781# CONFIG_OCFS2_DEBUG_MASKLOG is not set 790# CONFIG_OCFS2_DEBUG_MASKLOG is not set
782# CONFIG_OCFS2_DEBUG_FS is not set 791# CONFIG_OCFS2_DEBUG_FS is not set
792# CONFIG_OCFS2_COMPAT_JBD is not set
783CONFIG_DNOTIFY=y 793CONFIG_DNOTIFY=y
784CONFIG_INOTIFY=y 794CONFIG_INOTIFY=y
785CONFIG_INOTIFY_USER=y 795CONFIG_INOTIFY_USER=y
@@ -818,6 +828,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
818CONFIG_PROC_FS=y 828CONFIG_PROC_FS=y
819CONFIG_PROC_KCORE=y 829CONFIG_PROC_KCORE=y
820CONFIG_PROC_SYSCTL=y 830CONFIG_PROC_SYSCTL=y
831CONFIG_PROC_PAGE_MONITOR=y
821CONFIG_SYSFS=y 832CONFIG_SYSFS=y
822CONFIG_TMPFS=y 833CONFIG_TMPFS=y
823# CONFIG_TMPFS_POSIX_ACL is not set 834# CONFIG_TMPFS_POSIX_ACL is not set
@@ -861,6 +872,7 @@ CONFIG_EXPORTFS=m
861CONFIG_NFS_COMMON=y 872CONFIG_NFS_COMMON=y
862CONFIG_SUNRPC=y 873CONFIG_SUNRPC=y
863CONFIG_SUNRPC_GSS=y 874CONFIG_SUNRPC_GSS=y
875# CONFIG_SUNRPC_REGISTER_V4 is not set
864CONFIG_RPCSEC_GSS_KRB5=y 876CONFIG_RPCSEC_GSS_KRB5=y
865# CONFIG_RPCSEC_GSS_SPKM3 is not set 877# CONFIG_RPCSEC_GSS_SPKM3 is not set
866CONFIG_SMB_FS=m 878CONFIG_SMB_FS=m
@@ -934,7 +946,13 @@ CONFIG_MAGIC_SYSRQ=y
934# CONFIG_DEBUG_KERNEL is not set 946# CONFIG_DEBUG_KERNEL is not set
935CONFIG_DEBUG_BUGVERBOSE=y 947CONFIG_DEBUG_BUGVERBOSE=y
936CONFIG_DEBUG_MEMORY_INIT=y 948CONFIG_DEBUG_MEMORY_INIT=y
949# CONFIG_RCU_CPU_STALL_DETECTOR is not set
937CONFIG_SYSCTL_SYSCALL_CHECK=y 950CONFIG_SYSCTL_SYSCALL_CHECK=y
951
952#
953# Tracers
954#
955# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
938# CONFIG_SAMPLES is not set 956# CONFIG_SAMPLES is not set
939 957
940# 958#
@@ -942,6 +960,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
942# 960#
943# CONFIG_KEYS is not set 961# CONFIG_KEYS is not set
944# CONFIG_SECURITY is not set 962# CONFIG_SECURITY is not set
963# CONFIG_SECURITYFS is not set
945# CONFIG_SECURITY_FILE_CAPABILITIES is not set 964# CONFIG_SECURITY_FILE_CAPABILITIES is not set
946CONFIG_XOR_BLOCKS=m 965CONFIG_XOR_BLOCKS=m
947CONFIG_ASYNC_CORE=m 966CONFIG_ASYNC_CORE=m
@@ -952,10 +971,12 @@ CONFIG_CRYPTO=y
952# 971#
953# Crypto core or helper 972# Crypto core or helper
954# 973#
974# CONFIG_CRYPTO_FIPS is not set
955CONFIG_CRYPTO_ALGAPI=y 975CONFIG_CRYPTO_ALGAPI=y
956CONFIG_CRYPTO_AEAD=m 976CONFIG_CRYPTO_AEAD=y
957CONFIG_CRYPTO_BLKCIPHER=y 977CONFIG_CRYPTO_BLKCIPHER=y
958CONFIG_CRYPTO_HASH=y 978CONFIG_CRYPTO_HASH=y
979CONFIG_CRYPTO_RNG=y
959CONFIG_CRYPTO_MANAGER=y 980CONFIG_CRYPTO_MANAGER=y
960CONFIG_CRYPTO_GF128MUL=m 981CONFIG_CRYPTO_GF128MUL=m
961CONFIG_CRYPTO_NULL=m 982CONFIG_CRYPTO_NULL=m
@@ -1029,14 +1050,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1029# 1050#
1030CONFIG_CRYPTO_DEFLATE=m 1051CONFIG_CRYPTO_DEFLATE=m
1031CONFIG_CRYPTO_LZO=m 1052CONFIG_CRYPTO_LZO=m
1053
1054#
1055# Random Number Generation
1056#
1057# CONFIG_CRYPTO_ANSI_CPRNG is not set
1032# CONFIG_CRYPTO_HW is not set 1058# CONFIG_CRYPTO_HW is not set
1033 1059
1034# 1060#
1035# Library routines 1061# Library routines
1036# 1062#
1037CONFIG_BITREVERSE=y 1063CONFIG_BITREVERSE=y
1038# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1039# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1040CONFIG_CRC_CCITT=m 1064CONFIG_CRC_CCITT=m
1041CONFIG_CRC16=m 1065CONFIG_CRC16=m
1042CONFIG_CRC_T10DIF=y 1066CONFIG_CRC_T10DIF=y
diff --git a/arch/m68k/configs/sun3x_defconfig b/arch/m68k/configs/sun3x_defconfig
index 04b4363a7050..4d8a1e84e39f 100644
--- a/arch/m68k/configs/sun3x_defconfig
+++ b/arch/m68k/configs/sun3x_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-rc6 3# Linux kernel version: 2.6.28-rc7
4# Wed Sep 10 09:02:12 2008 4# Tue Dec 2 20:27:54 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -14,7 +14,6 @@ CONFIG_TIME_LOW_RES=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_NO_IOPORT=y 15CONFIG_NO_IOPORT=y
16# CONFIG_NO_DMA is not set 16# CONFIG_NO_DMA is not set
17CONFIG_ARCH_SUPPORTS_AOUT=y
18CONFIG_HZ=100 17CONFIG_HZ=100
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 19
@@ -67,22 +66,13 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 66CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 67CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 68CONFIG_SHMEM=y
69CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y 71CONFIG_SLAB=y
72# CONFIG_SLUB is not set 72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 73# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 74# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 75# CONFIG_MARKERS is not set
76# CONFIG_HAVE_OPROFILE is not set
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
78# CONFIG_HAVE_IOREMAP_PROT is not set
79# CONFIG_HAVE_KPROBES is not set
80# CONFIG_HAVE_KRETPROBES is not set
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84# CONFIG_HAVE_CLK is not set
85CONFIG_PROC_PAGE_MONITOR=y
86# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 76# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
87CONFIG_SLABINFO=y 77CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 78CONFIG_RT_MUTEXES=y
@@ -115,11 +105,11 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_FREEZER is not set
118 109
119# 110#
120# Platform dependent setup 111# Platform dependent setup
121# 112#
122# CONFIG_SUN3 is not set
123# CONFIG_AMIGA is not set 113# CONFIG_AMIGA is not set
124# CONFIG_ATARI is not set 114# CONFIG_ATARI is not set
125# CONFIG_MAC is not set 115# CONFIG_MAC is not set
@@ -148,19 +138,21 @@ CONFIG_DISCONTIGMEM_MANUAL=y
148CONFIG_DISCONTIGMEM=y 138CONFIG_DISCONTIGMEM=y
149CONFIG_FLAT_NODE_MEM_MAP=y 139CONFIG_FLAT_NODE_MEM_MAP=y
150CONFIG_NEED_MULTIPLE_NODES=y 140CONFIG_NEED_MULTIPLE_NODES=y
151# CONFIG_SPARSEMEM_STATIC is not set
152# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
153CONFIG_PAGEFLAGS_EXTENDED=y 141CONFIG_PAGEFLAGS_EXTENDED=y
154CONFIG_SPLIT_PTLOCK_CPUS=4 142CONFIG_SPLIT_PTLOCK_CPUS=4
155# CONFIG_RESOURCES_64BIT is not set 143# CONFIG_RESOURCES_64BIT is not set
144# CONFIG_PHYS_ADDR_T_64BIT is not set
156CONFIG_ZONE_DMA_FLAG=1 145CONFIG_ZONE_DMA_FLAG=1
157CONFIG_BOUNCE=y 146CONFIG_BOUNCE=y
158CONFIG_VIRT_TO_BUS=y 147CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y
159 149
160# 150#
161# General setup 151# General setup
162# 152#
163CONFIG_BINFMT_ELF=y 153CONFIG_BINFMT_ELF=y
154# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
155CONFIG_HAVE_AOUT=y
164CONFIG_BINFMT_AOUT=m 156CONFIG_BINFMT_AOUT=m
165CONFIG_BINFMT_MISC=m 157CONFIG_BINFMT_MISC=m
166CONFIG_PROC_HARDWARE=y 158CONFIG_PROC_HARDWARE=y
@@ -209,7 +201,6 @@ CONFIG_INET_TCP_DIAG=m
209CONFIG_TCP_CONG_CUBIC=y 201CONFIG_TCP_CONG_CUBIC=y
210CONFIG_DEFAULT_TCP_CONG="cubic" 202CONFIG_DEFAULT_TCP_CONG="cubic"
211# CONFIG_TCP_MD5SIG is not set 203# CONFIG_TCP_MD5SIG is not set
212# CONFIG_IP_VS is not set
213CONFIG_IPV6=m 204CONFIG_IPV6=m
214CONFIG_IPV6_PRIVACY=y 205CONFIG_IPV6_PRIVACY=y
215CONFIG_IPV6_ROUTER_PREF=y 206CONFIG_IPV6_ROUTER_PREF=y
@@ -259,13 +250,14 @@ CONFIG_NF_CONNTRACK_SANE=m
259CONFIG_NF_CONNTRACK_SIP=m 250CONFIG_NF_CONNTRACK_SIP=m
260CONFIG_NF_CONNTRACK_TFTP=m 251CONFIG_NF_CONNTRACK_TFTP=m
261# CONFIG_NF_CT_NETLINK is not set 252# CONFIG_NF_CT_NETLINK is not set
253# CONFIG_NETFILTER_TPROXY is not set
262CONFIG_NETFILTER_XTABLES=m 254CONFIG_NETFILTER_XTABLES=m
263CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 255CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
264CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 256CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
265CONFIG_NETFILTER_XT_TARGET_DSCP=m 257CONFIG_NETFILTER_XT_TARGET_DSCP=m
266CONFIG_NETFILTER_XT_TARGET_MARK=m 258CONFIG_NETFILTER_XT_TARGET_MARK=m
267CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
268CONFIG_NETFILTER_XT_TARGET_NFLOG=m 259CONFIG_NETFILTER_XT_TARGET_NFLOG=m
260CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
269CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 261CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
270CONFIG_NETFILTER_XT_TARGET_RATEEST=m 262CONFIG_NETFILTER_XT_TARGET_RATEEST=m
271CONFIG_NETFILTER_XT_TARGET_TRACE=m 263CONFIG_NETFILTER_XT_TARGET_TRACE=m
@@ -279,19 +271,22 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
279CONFIG_NETFILTER_XT_MATCH_DCCP=m 271CONFIG_NETFILTER_XT_MATCH_DCCP=m
280CONFIG_NETFILTER_XT_MATCH_DSCP=m 272CONFIG_NETFILTER_XT_MATCH_DSCP=m
281CONFIG_NETFILTER_XT_MATCH_ESP=m 273CONFIG_NETFILTER_XT_MATCH_ESP=m
274CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
282CONFIG_NETFILTER_XT_MATCH_HELPER=m 275CONFIG_NETFILTER_XT_MATCH_HELPER=m
283CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 276CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
284CONFIG_NETFILTER_XT_MATCH_LENGTH=m 277CONFIG_NETFILTER_XT_MATCH_LENGTH=m
285CONFIG_NETFILTER_XT_MATCH_LIMIT=m 278CONFIG_NETFILTER_XT_MATCH_LIMIT=m
286CONFIG_NETFILTER_XT_MATCH_MAC=m 279CONFIG_NETFILTER_XT_MATCH_MAC=m
287CONFIG_NETFILTER_XT_MATCH_MARK=m 280CONFIG_NETFILTER_XT_MATCH_MARK=m
281CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
288CONFIG_NETFILTER_XT_MATCH_OWNER=m 282CONFIG_NETFILTER_XT_MATCH_OWNER=m
289CONFIG_NETFILTER_XT_MATCH_POLICY=m 283CONFIG_NETFILTER_XT_MATCH_POLICY=m
290CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
291CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 284CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
292CONFIG_NETFILTER_XT_MATCH_QUOTA=m 285CONFIG_NETFILTER_XT_MATCH_QUOTA=m
293CONFIG_NETFILTER_XT_MATCH_RATEEST=m 286CONFIG_NETFILTER_XT_MATCH_RATEEST=m
294CONFIG_NETFILTER_XT_MATCH_REALM=m 287CONFIG_NETFILTER_XT_MATCH_REALM=m
288CONFIG_NETFILTER_XT_MATCH_RECENT=m
289# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
295CONFIG_NETFILTER_XT_MATCH_SCTP=m 290CONFIG_NETFILTER_XT_MATCH_SCTP=m
296CONFIG_NETFILTER_XT_MATCH_STATE=m 291CONFIG_NETFILTER_XT_MATCH_STATE=m
297CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 292CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -299,20 +294,20 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
299CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 294CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
300CONFIG_NETFILTER_XT_MATCH_TIME=m 295CONFIG_NETFILTER_XT_MATCH_TIME=m
301CONFIG_NETFILTER_XT_MATCH_U32=m 296CONFIG_NETFILTER_XT_MATCH_U32=m
302CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 297# CONFIG_IP_VS is not set
303 298
304# 299#
305# IP: Netfilter Configuration 300# IP: Netfilter Configuration
306# 301#
302CONFIG_NF_DEFRAG_IPV4=m
307CONFIG_NF_CONNTRACK_IPV4=m 303CONFIG_NF_CONNTRACK_IPV4=m
308CONFIG_NF_CONNTRACK_PROC_COMPAT=y 304CONFIG_NF_CONNTRACK_PROC_COMPAT=y
309CONFIG_IP_NF_QUEUE=m 305CONFIG_IP_NF_QUEUE=m
310CONFIG_IP_NF_IPTABLES=m 306CONFIG_IP_NF_IPTABLES=m
311CONFIG_IP_NF_MATCH_RECENT=m 307CONFIG_IP_NF_MATCH_ADDRTYPE=m
312CONFIG_IP_NF_MATCH_ECN=m
313CONFIG_IP_NF_MATCH_AH=m 308CONFIG_IP_NF_MATCH_AH=m
309CONFIG_IP_NF_MATCH_ECN=m
314CONFIG_IP_NF_MATCH_TTL=m 310CONFIG_IP_NF_MATCH_TTL=m
315CONFIG_IP_NF_MATCH_ADDRTYPE=m
316CONFIG_IP_NF_FILTER=m 311CONFIG_IP_NF_FILTER=m
317CONFIG_IP_NF_TARGET_REJECT=m 312CONFIG_IP_NF_TARGET_REJECT=m
318CONFIG_IP_NF_TARGET_LOG=m 313CONFIG_IP_NF_TARGET_LOG=m
@@ -320,8 +315,8 @@ CONFIG_IP_NF_TARGET_ULOG=m
320CONFIG_NF_NAT=m 315CONFIG_NF_NAT=m
321CONFIG_NF_NAT_NEEDED=y 316CONFIG_NF_NAT_NEEDED=y
322CONFIG_IP_NF_TARGET_MASQUERADE=m 317CONFIG_IP_NF_TARGET_MASQUERADE=m
323CONFIG_IP_NF_TARGET_REDIRECT=m
324CONFIG_IP_NF_TARGET_NETMAP=m 318CONFIG_IP_NF_TARGET_NETMAP=m
319CONFIG_IP_NF_TARGET_REDIRECT=m
325CONFIG_NF_NAT_SNMP_BASIC=m 320CONFIG_NF_NAT_SNMP_BASIC=m
326CONFIG_NF_NAT_PROTO_GRE=m 321CONFIG_NF_NAT_PROTO_GRE=m
327CONFIG_NF_NAT_PROTO_UDPLITE=m 322CONFIG_NF_NAT_PROTO_UDPLITE=m
@@ -334,9 +329,9 @@ CONFIG_NF_NAT_PPTP=m
334CONFIG_NF_NAT_H323=m 329CONFIG_NF_NAT_H323=m
335CONFIG_NF_NAT_SIP=m 330CONFIG_NF_NAT_SIP=m
336CONFIG_IP_NF_MANGLE=m 331CONFIG_IP_NF_MANGLE=m
332CONFIG_IP_NF_TARGET_CLUSTERIP=m
337CONFIG_IP_NF_TARGET_ECN=m 333CONFIG_IP_NF_TARGET_ECN=m
338CONFIG_IP_NF_TARGET_TTL=m 334CONFIG_IP_NF_TARGET_TTL=m
339CONFIG_IP_NF_TARGET_CLUSTERIP=m
340CONFIG_IP_NF_RAW=m 335CONFIG_IP_NF_RAW=m
341CONFIG_IP_NF_ARPTABLES=m 336CONFIG_IP_NF_ARPTABLES=m
342CONFIG_IP_NF_ARPFILTER=m 337CONFIG_IP_NF_ARPFILTER=m
@@ -348,16 +343,16 @@ CONFIG_IP_NF_ARP_MANGLE=m
348CONFIG_NF_CONNTRACK_IPV6=m 343CONFIG_NF_CONNTRACK_IPV6=m
349CONFIG_IP6_NF_QUEUE=m 344CONFIG_IP6_NF_QUEUE=m
350CONFIG_IP6_NF_IPTABLES=m 345CONFIG_IP6_NF_IPTABLES=m
351CONFIG_IP6_NF_MATCH_RT=m 346CONFIG_IP6_NF_MATCH_AH=m
352CONFIG_IP6_NF_MATCH_OPTS=m 347CONFIG_IP6_NF_MATCH_EUI64=m
353CONFIG_IP6_NF_MATCH_FRAG=m 348CONFIG_IP6_NF_MATCH_FRAG=m
349CONFIG_IP6_NF_MATCH_OPTS=m
354CONFIG_IP6_NF_MATCH_HL=m 350CONFIG_IP6_NF_MATCH_HL=m
355CONFIG_IP6_NF_MATCH_IPV6HEADER=m 351CONFIG_IP6_NF_MATCH_IPV6HEADER=m
356CONFIG_IP6_NF_MATCH_AH=m
357CONFIG_IP6_NF_MATCH_MH=m 352CONFIG_IP6_NF_MATCH_MH=m
358CONFIG_IP6_NF_MATCH_EUI64=m 353CONFIG_IP6_NF_MATCH_RT=m
359CONFIG_IP6_NF_FILTER=m
360CONFIG_IP6_NF_TARGET_LOG=m 354CONFIG_IP6_NF_TARGET_LOG=m
355CONFIG_IP6_NF_FILTER=m
361CONFIG_IP6_NF_TARGET_REJECT=m 356CONFIG_IP6_NF_TARGET_REJECT=m
362CONFIG_IP6_NF_MANGLE=m 357CONFIG_IP6_NF_MANGLE=m
363CONFIG_IP6_NF_TARGET_HL=m 358CONFIG_IP6_NF_TARGET_HL=m
@@ -384,6 +379,7 @@ CONFIG_SCTP_HMAC_MD5=y
384# CONFIG_TIPC is not set 379# CONFIG_TIPC is not set
385# CONFIG_ATM is not set 380# CONFIG_ATM is not set
386# CONFIG_BRIDGE is not set 381# CONFIG_BRIDGE is not set
382# CONFIG_NET_DSA is not set
387# CONFIG_VLAN_8021Q is not set 383# CONFIG_VLAN_8021Q is not set
388# CONFIG_DECNET is not set 384# CONFIG_DECNET is not set
389CONFIG_LLC=m 385CONFIG_LLC=m
@@ -407,19 +403,8 @@ CONFIG_NET_CLS_ROUTE=y
407# CONFIG_IRDA is not set 403# CONFIG_IRDA is not set
408# CONFIG_BT is not set 404# CONFIG_BT is not set
409# CONFIG_AF_RXRPC is not set 405# CONFIG_AF_RXRPC is not set
410 406# CONFIG_PHONET is not set
411# 407# CONFIG_WIRELESS is not set
412# Wireless
413#
414# CONFIG_CFG80211 is not set
415CONFIG_WIRELESS_EXT=y
416# CONFIG_WIRELESS_EXT_SYSFS is not set
417# CONFIG_MAC80211 is not set
418CONFIG_IEEE80211=m
419# CONFIG_IEEE80211_DEBUG is not set
420CONFIG_IEEE80211_CRYPT_WEP=m
421CONFIG_IEEE80211_CRYPT_CCMP=m
422CONFIG_IEEE80211_CRYPT_TKIP=m
423# CONFIG_RFKILL is not set 408# CONFIG_RFKILL is not set
424# CONFIG_NET_9P is not set 409# CONFIG_NET_9P is not set
425 410
@@ -457,6 +442,7 @@ CONFIG_ATA_OVER_ETH=m
457CONFIG_MISC_DEVICES=y 442CONFIG_MISC_DEVICES=y
458# CONFIG_EEPROM_93CX6 is not set 443# CONFIG_EEPROM_93CX6 is not set
459# CONFIG_ENCLOSURE_SERVICES is not set 444# CONFIG_ENCLOSURE_SERVICES is not set
445# CONFIG_C2PORT is not set
460CONFIG_HAVE_IDE=y 446CONFIG_HAVE_IDE=y
461# CONFIG_IDE is not set 447# CONFIG_IDE is not set
462 448
@@ -541,6 +527,9 @@ CONFIG_SUN3LANCE=y
541# CONFIG_IBM_NEW_EMAC_RGMII is not set 527# CONFIG_IBM_NEW_EMAC_RGMII is not set
542# CONFIG_IBM_NEW_EMAC_TAH is not set 528# CONFIG_IBM_NEW_EMAC_TAH is not set
543# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 529# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
530# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
531# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
532# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
544# CONFIG_B44 is not set 533# CONFIG_B44 is not set
545# CONFIG_NETDEV_1000 is not set 534# CONFIG_NETDEV_1000 is not set
546# CONFIG_NETDEV_10000 is not set 535# CONFIG_NETDEV_10000 is not set
@@ -610,6 +599,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
610CONFIG_MOUSE_PS2_SYNAPTICS=y 599CONFIG_MOUSE_PS2_SYNAPTICS=y
611CONFIG_MOUSE_PS2_LIFEBOOK=y 600CONFIG_MOUSE_PS2_LIFEBOOK=y
612CONFIG_MOUSE_PS2_TRACKPOINT=y 601CONFIG_MOUSE_PS2_TRACKPOINT=y
602# CONFIG_MOUSE_PS2_ELANTECH is not set
613# CONFIG_MOUSE_PS2_TOUCHKIT is not set 603# CONFIG_MOUSE_PS2_TOUCHKIT is not set
614CONFIG_MOUSE_SERIAL=m 604CONFIG_MOUSE_SERIAL=m
615# CONFIG_MOUSE_VSXXXAA is not set 605# CONFIG_MOUSE_VSXXXAA is not set
@@ -664,11 +654,11 @@ CONFIG_GEN_RTC_X=y
664# CONFIG_THERMAL is not set 654# CONFIG_THERMAL is not set
665# CONFIG_THERMAL_HWMON is not set 655# CONFIG_THERMAL_HWMON is not set
666# CONFIG_WATCHDOG is not set 656# CONFIG_WATCHDOG is not set
657CONFIG_SSB_POSSIBLE=y
667 658
668# 659#
669# Sonics Silicon Backplane 660# Sonics Silicon Backplane
670# 661#
671CONFIG_SSB_POSSIBLE=y
672# CONFIG_SSB is not set 662# CONFIG_SSB is not set
673 663
674# 664#
@@ -678,6 +668,7 @@ CONFIG_SSB_POSSIBLE=y
678# CONFIG_MFD_SM501 is not set 668# CONFIG_MFD_SM501 is not set
679# CONFIG_HTC_PASIC3 is not set 669# CONFIG_HTC_PASIC3 is not set
680# CONFIG_MFD_TMIO is not set 670# CONFIG_MFD_TMIO is not set
671# CONFIG_REGULATOR is not set
681 672
682# 673#
683# Multimedia devices 674# Multimedia devices
@@ -703,6 +694,7 @@ CONFIG_SSB_POSSIBLE=y
703CONFIG_FB=y 694CONFIG_FB=y
704# CONFIG_FIRMWARE_EDID is not set 695# CONFIG_FIRMWARE_EDID is not set
705# CONFIG_FB_DDC is not set 696# CONFIG_FB_DDC is not set
697# CONFIG_FB_BOOT_VESA_SUPPORT is not set
706# CONFIG_FB_CFB_FILLRECT is not set 698# CONFIG_FB_CFB_FILLRECT is not set
707# CONFIG_FB_CFB_COPYAREA is not set 699# CONFIG_FB_CFB_COPYAREA is not set
708# CONFIG_FB_CFB_IMAGEBLIT is not set 700# CONFIG_FB_CFB_IMAGEBLIT is not set
@@ -724,6 +716,8 @@ CONFIG_FB=y
724# CONFIG_FB_UVESA is not set 716# CONFIG_FB_UVESA is not set
725# CONFIG_FB_S1D13XXX is not set 717# CONFIG_FB_S1D13XXX is not set
726# CONFIG_FB_VIRTUAL is not set 718# CONFIG_FB_VIRTUAL is not set
719# CONFIG_FB_METRONOME is not set
720# CONFIG_FB_MB862XX is not set
727# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 721# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
728 722
729# 723#
@@ -750,6 +744,12 @@ CONFIG_HID_SUPPORT=y
750CONFIG_HID=m 744CONFIG_HID=m
751# CONFIG_HID_DEBUG is not set 745# CONFIG_HID_DEBUG is not set
752CONFIG_HIDRAW=y 746CONFIG_HIDRAW=y
747# CONFIG_HID_PID is not set
748
749#
750# Special HID drivers
751#
752CONFIG_HID_COMPAT=y
753# CONFIG_USB_SUPPORT is not set 753# CONFIG_USB_SUPPORT is not set
754# CONFIG_MMC is not set 754# CONFIG_MMC is not set
755# CONFIG_MEMSTICK is not set 755# CONFIG_MEMSTICK is not set
@@ -758,6 +758,8 @@ CONFIG_HIDRAW=y
758# CONFIG_RTC_CLASS is not set 758# CONFIG_RTC_CLASS is not set
759# CONFIG_DMADEVICES is not set 759# CONFIG_DMADEVICES is not set
760# CONFIG_UIO is not set 760# CONFIG_UIO is not set
761# CONFIG_STAGING is not set
762CONFIG_STAGING_EXCLUDE_BUILD=y
761 763
762# 764#
763# Character devices 765# Character devices
@@ -771,8 +773,9 @@ CONFIG_EXT2_FS=y
771# CONFIG_EXT2_FS_XIP is not set 773# CONFIG_EXT2_FS_XIP is not set
772CONFIG_EXT3_FS=y 774CONFIG_EXT3_FS=y
773# CONFIG_EXT3_FS_XATTR is not set 775# CONFIG_EXT3_FS_XATTR is not set
774# CONFIG_EXT4DEV_FS is not set 776# CONFIG_EXT4_FS is not set
775CONFIG_JBD=y 777CONFIG_JBD=y
778CONFIG_JBD2=m
776CONFIG_REISERFS_FS=m 779CONFIG_REISERFS_FS=m
777# CONFIG_REISERFS_CHECK is not set 780# CONFIG_REISERFS_CHECK is not set
778# CONFIG_REISERFS_PROC_INFO is not set 781# CONFIG_REISERFS_PROC_INFO is not set
@@ -783,6 +786,7 @@ CONFIG_JFS_FS=m
783# CONFIG_JFS_DEBUG is not set 786# CONFIG_JFS_DEBUG is not set
784# CONFIG_JFS_STATISTICS is not set 787# CONFIG_JFS_STATISTICS is not set
785# CONFIG_FS_POSIX_ACL is not set 788# CONFIG_FS_POSIX_ACL is not set
789CONFIG_FILE_LOCKING=y
786CONFIG_XFS_FS=m 790CONFIG_XFS_FS=m
787# CONFIG_XFS_QUOTA is not set 791# CONFIG_XFS_QUOTA is not set
788# CONFIG_XFS_POSIX_ACL is not set 792# CONFIG_XFS_POSIX_ACL is not set
@@ -794,6 +798,7 @@ CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
794# CONFIG_OCFS2_FS_STATS is not set 798# CONFIG_OCFS2_FS_STATS is not set
795# CONFIG_OCFS2_DEBUG_MASKLOG is not set 799# CONFIG_OCFS2_DEBUG_MASKLOG is not set
796# CONFIG_OCFS2_DEBUG_FS is not set 800# CONFIG_OCFS2_DEBUG_FS is not set
801# CONFIG_OCFS2_COMPAT_JBD is not set
797CONFIG_DNOTIFY=y 802CONFIG_DNOTIFY=y
798CONFIG_INOTIFY=y 803CONFIG_INOTIFY=y
799CONFIG_INOTIFY_USER=y 804CONFIG_INOTIFY_USER=y
@@ -832,6 +837,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
832CONFIG_PROC_FS=y 837CONFIG_PROC_FS=y
833CONFIG_PROC_KCORE=y 838CONFIG_PROC_KCORE=y
834CONFIG_PROC_SYSCTL=y 839CONFIG_PROC_SYSCTL=y
840CONFIG_PROC_PAGE_MONITOR=y
835CONFIG_SYSFS=y 841CONFIG_SYSFS=y
836CONFIG_TMPFS=y 842CONFIG_TMPFS=y
837# CONFIG_TMPFS_POSIX_ACL is not set 843# CONFIG_TMPFS_POSIX_ACL is not set
@@ -875,6 +881,7 @@ CONFIG_EXPORTFS=m
875CONFIG_NFS_COMMON=y 881CONFIG_NFS_COMMON=y
876CONFIG_SUNRPC=y 882CONFIG_SUNRPC=y
877CONFIG_SUNRPC_GSS=y 883CONFIG_SUNRPC_GSS=y
884# CONFIG_SUNRPC_REGISTER_V4 is not set
878CONFIG_RPCSEC_GSS_KRB5=y 885CONFIG_RPCSEC_GSS_KRB5=y
879# CONFIG_RPCSEC_GSS_SPKM3 is not set 886# CONFIG_RPCSEC_GSS_SPKM3 is not set
880CONFIG_SMB_FS=m 887CONFIG_SMB_FS=m
@@ -948,7 +955,13 @@ CONFIG_MAGIC_SYSRQ=y
948# CONFIG_DEBUG_KERNEL is not set 955# CONFIG_DEBUG_KERNEL is not set
949CONFIG_DEBUG_BUGVERBOSE=y 956CONFIG_DEBUG_BUGVERBOSE=y
950CONFIG_DEBUG_MEMORY_INIT=y 957CONFIG_DEBUG_MEMORY_INIT=y
958# CONFIG_RCU_CPU_STALL_DETECTOR is not set
951CONFIG_SYSCTL_SYSCALL_CHECK=y 959CONFIG_SYSCTL_SYSCALL_CHECK=y
960
961#
962# Tracers
963#
964# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
952# CONFIG_SAMPLES is not set 965# CONFIG_SAMPLES is not set
953 966
954# 967#
@@ -956,6 +969,7 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
956# 969#
957# CONFIG_KEYS is not set 970# CONFIG_KEYS is not set
958# CONFIG_SECURITY is not set 971# CONFIG_SECURITY is not set
972# CONFIG_SECURITYFS is not set
959# CONFIG_SECURITY_FILE_CAPABILITIES is not set 973# CONFIG_SECURITY_FILE_CAPABILITIES is not set
960CONFIG_XOR_BLOCKS=m 974CONFIG_XOR_BLOCKS=m
961CONFIG_ASYNC_CORE=m 975CONFIG_ASYNC_CORE=m
@@ -966,10 +980,12 @@ CONFIG_CRYPTO=y
966# 980#
967# Crypto core or helper 981# Crypto core or helper
968# 982#
983# CONFIG_CRYPTO_FIPS is not set
969CONFIG_CRYPTO_ALGAPI=y 984CONFIG_CRYPTO_ALGAPI=y
970CONFIG_CRYPTO_AEAD=m 985CONFIG_CRYPTO_AEAD=y
971CONFIG_CRYPTO_BLKCIPHER=y 986CONFIG_CRYPTO_BLKCIPHER=y
972CONFIG_CRYPTO_HASH=y 987CONFIG_CRYPTO_HASH=y
988CONFIG_CRYPTO_RNG=y
973CONFIG_CRYPTO_MANAGER=y 989CONFIG_CRYPTO_MANAGER=y
974CONFIG_CRYPTO_GF128MUL=m 990CONFIG_CRYPTO_GF128MUL=m
975CONFIG_CRYPTO_NULL=m 991CONFIG_CRYPTO_NULL=m
@@ -1043,14 +1059,17 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1043# 1059#
1044CONFIG_CRYPTO_DEFLATE=m 1060CONFIG_CRYPTO_DEFLATE=m
1045CONFIG_CRYPTO_LZO=m 1061CONFIG_CRYPTO_LZO=m
1062
1063#
1064# Random Number Generation
1065#
1066# CONFIG_CRYPTO_ANSI_CPRNG is not set
1046# CONFIG_CRYPTO_HW is not set 1067# CONFIG_CRYPTO_HW is not set
1047 1068
1048# 1069#
1049# Library routines 1070# Library routines
1050# 1071#
1051CONFIG_BITREVERSE=y 1072CONFIG_BITREVERSE=y
1052# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1053# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1054CONFIG_CRC_CCITT=m 1073CONFIG_CRC_CCITT=m
1055CONFIG_CRC16=m 1074CONFIG_CRC16=m
1056CONFIG_CRC_T10DIF=y 1075CONFIG_CRC_T10DIF=y
diff --git a/arch/mips/Kconfig.debug b/arch/mips/Kconfig.debug
index 765c8e287d2b..364ca8938807 100644
--- a/arch/mips/Kconfig.debug
+++ b/arch/mips/Kconfig.debug
@@ -48,7 +48,7 @@ config RUNTIME_DEBUG
48 help 48 help
49 If you say Y here, some debugging macros will do run-time checking. 49 If you say Y here, some debugging macros will do run-time checking.
50 If you say N here, those macros will mostly turn to no-ops. See 50 If you say N here, those macros will mostly turn to no-ops. See
51 include/asm-mips/debug.h for debuging macros. 51 arch/mips/include/asm/debug.h for debugging macros.
52 If unsure, say N. 52 If unsure, say N.
53 53
54endmenu 54endmenu
diff --git a/arch/mips/configs/fulong_defconfig b/arch/mips/configs/fulong_defconfig
index 620980081a30..b6698a232ae9 100644
--- a/arch/mips/configs/fulong_defconfig
+++ b/arch/mips/configs/fulong_defconfig
@@ -1,63 +1,78 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22-rc4 3# Linux kernel version: 2.6.28-rc6
4# Mon Jun 11 00:23:51 2007 4# Fri Nov 28 17:53:48 2008
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
8# 8#
9# Machine selection 9# Machine selection
10# 10#
11CONFIG_LEMOTE_FULONG=y
12# CONFIG_MACH_ALCHEMY is not set 11# CONFIG_MACH_ALCHEMY is not set
13# CONFIG_BASLER_EXCITE is not set 12# CONFIG_BASLER_EXCITE is not set
13# CONFIG_BCM47XX is not set
14# CONFIG_MIPS_COBALT is not set 14# CONFIG_MIPS_COBALT is not set
15# CONFIG_MACH_DECSTATION is not set 15# CONFIG_MACH_DECSTATION is not set
16# CONFIG_MACH_JAZZ is not set 16# CONFIG_MACH_JAZZ is not set
17# CONFIG_LASAT is not set
18CONFIG_LEMOTE_FULONG=y
17# CONFIG_MIPS_MALTA is not set 19# CONFIG_MIPS_MALTA is not set
18# CONFIG_WR_PPMC is not set
19# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
21# CONFIG_MACH_EMMA is not set
22# CONFIG_MACH_VR41XX is not set
23# CONFIG_NXP_STB220 is not set
24# CONFIG_NXP_STB225 is not set
20# CONFIG_PNX8550_JBS is not set 25# CONFIG_PNX8550_JBS is not set
21# CONFIG_PNX8550_STB810 is not set 26# CONFIG_PNX8550_STB810 is not set
22# CONFIG_MACH_VR41XX is not set 27# CONFIG_PMC_MSP is not set
23# CONFIG_PMC_YOSEMITE is not set 28# CONFIG_PMC_YOSEMITE is not set
24# CONFIG_MARKEINS is not set
25# CONFIG_SGI_IP22 is not set 29# CONFIG_SGI_IP22 is not set
26# CONFIG_SGI_IP27 is not set 30# CONFIG_SGI_IP27 is not set
31# CONFIG_SGI_IP28 is not set
27# CONFIG_SGI_IP32 is not set 32# CONFIG_SGI_IP32 is not set
28# CONFIG_SIBYTE_BIGSUR is not set
29# CONFIG_SIBYTE_SWARM is not set
30# CONFIG_SIBYTE_SENTOSA is not set
31# CONFIG_SIBYTE_RHONE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_LITTLESUR is not set
34# CONFIG_SIBYTE_CRHINE is not set 33# CONFIG_SIBYTE_CRHINE is not set
34# CONFIG_SIBYTE_CARMEL is not set
35# CONFIG_SIBYTE_CRHONE is not set 35# CONFIG_SIBYTE_CRHONE is not set
36# CONFIG_SIBYTE_RHONE is not set
37# CONFIG_SIBYTE_SWARM is not set
38# CONFIG_SIBYTE_LITTLESUR is not set
39# CONFIG_SIBYTE_SENTOSA is not set
40# CONFIG_SIBYTE_BIGSUR is not set
36# CONFIG_SNI_RM is not set 41# CONFIG_SNI_RM is not set
37# CONFIG_TOSHIBA_JMR3927 is not set 42# CONFIG_MACH_TX39XX is not set
38# CONFIG_TOSHIBA_RBTX4927 is not set 43# CONFIG_MACH_TX49XX is not set
39# CONFIG_TOSHIBA_RBTX4938 is not set 44# CONFIG_MIKROTIK_RB532 is not set
45# CONFIG_WR_PPMC is not set
40CONFIG_RWSEM_GENERIC_SPINLOCK=y 46CONFIG_RWSEM_GENERIC_SPINLOCK=y
41# CONFIG_ARCH_HAS_ILOG2_U32 is not set 47# CONFIG_ARCH_HAS_ILOG2_U32 is not set
42# CONFIG_ARCH_HAS_ILOG2_U64 is not set 48# CONFIG_ARCH_HAS_ILOG2_U64 is not set
49CONFIG_ARCH_SUPPORTS_OPROFILE=y
43CONFIG_GENERIC_FIND_NEXT_BIT=y 50CONFIG_GENERIC_FIND_NEXT_BIT=y
44CONFIG_GENERIC_HWEIGHT=y 51CONFIG_GENERIC_HWEIGHT=y
45CONFIG_GENERIC_CALIBRATE_DELAY=y 52CONFIG_GENERIC_CALIBRATE_DELAY=y
53CONFIG_GENERIC_CLOCKEVENTS=y
46CONFIG_GENERIC_TIME=y 54CONFIG_GENERIC_TIME=y
55CONFIG_GENERIC_CMOS_UPDATE=y
47CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 56CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
48CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 57CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
58CONFIG_CEVT_R4K=y
59CONFIG_CSRC_R4K=y
49CONFIG_DMA_NONCOHERENT=y 60CONFIG_DMA_NONCOHERENT=y
50CONFIG_DMA_NEED_PCI_MAP_STATE=y 61CONFIG_DMA_NEED_PCI_MAP_STATE=y
51CONFIG_EARLY_PRINTK=y 62CONFIG_EARLY_PRINTK=y
52CONFIG_SYS_HAS_EARLY_PRINTK=y 63CONFIG_SYS_HAS_EARLY_PRINTK=y
64# CONFIG_HOTPLUG_CPU is not set
53CONFIG_I8259=y 65CONFIG_I8259=y
54# CONFIG_NO_IOPORT is not set 66# CONFIG_NO_IOPORT is not set
67CONFIG_GENERIC_ISA_DMA=y
68CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y
55# CONFIG_CPU_BIG_ENDIAN is not set 69# CONFIG_CPU_BIG_ENDIAN is not set
56CONFIG_CPU_LITTLE_ENDIAN=y 70CONFIG_CPU_LITTLE_ENDIAN=y
57CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 71CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
58CONFIG_IRQ_CPU=y 72CONFIG_IRQ_CPU=y
59CONFIG_BOOT_ELF32=y 73CONFIG_BOOT_ELF32=y
60CONFIG_MIPS_L1_CACHE_SHIFT=5 74CONFIG_MIPS_L1_CACHE_SHIFT=5
75CONFIG_HAVE_STD_PC_SERIAL_PORT=y
61 76
62# 77#
63# CPU selection 78# CPU selection
@@ -75,6 +90,7 @@ CONFIG_CPU_LOONGSON2=y
75# CONFIG_CPU_TX49XX is not set 90# CONFIG_CPU_TX49XX is not set
76# CONFIG_CPU_R5000 is not set 91# CONFIG_CPU_R5000 is not set
77# CONFIG_CPU_R5432 is not set 92# CONFIG_CPU_R5432 is not set
93# CONFIG_CPU_R5500 is not set
78# CONFIG_CPU_R6000 is not set 94# CONFIG_CPU_R6000 is not set
79# CONFIG_CPU_NEVADA is not set 95# CONFIG_CPU_NEVADA is not set
80# CONFIG_CPU_R8000 is not set 96# CONFIG_CPU_R8000 is not set
@@ -101,7 +117,6 @@ CONFIG_BOARD_SCACHE=y
101CONFIG_MIPS_MT_DISABLED=y 117CONFIG_MIPS_MT_DISABLED=y
102# CONFIG_MIPS_MT_SMP is not set 118# CONFIG_MIPS_MT_SMP is not set
103# CONFIG_MIPS_MT_SMTC is not set 119# CONFIG_MIPS_MT_SMTC is not set
104# CONFIG_MIPS_VPE_LOADER is not set
105CONFIG_CPU_HAS_WB=y 120CONFIG_CPU_HAS_WB=y
106CONFIG_CPU_HAS_SYNC=y 121CONFIG_CPU_HAS_SYNC=y
107CONFIG_GENERIC_HARDIRQS=y 122CONFIG_GENERIC_HARDIRQS=y
@@ -109,6 +124,7 @@ CONFIG_GENERIC_IRQ_PROBE=y
109CONFIG_CPU_SUPPORTS_HIGHMEM=y 124CONFIG_CPU_SUPPORTS_HIGHMEM=y
110CONFIG_SYS_SUPPORTS_HIGHMEM=y 125CONFIG_SYS_SUPPORTS_HIGHMEM=y
111CONFIG_ARCH_FLATMEM_ENABLE=y 126CONFIG_ARCH_FLATMEM_ENABLE=y
127CONFIG_ARCH_POPULATES_NODE_MAP=y
112CONFIG_ARCH_SPARSEMEM_ENABLE=y 128CONFIG_ARCH_SPARSEMEM_ENABLE=y
113CONFIG_SELECT_MEMORY_MODEL=y 129CONFIG_SELECT_MEMORY_MODEL=y
114CONFIG_FLATMEM_MANUAL=y 130CONFIG_FLATMEM_MANUAL=y
@@ -117,9 +133,17 @@ CONFIG_FLATMEM_MANUAL=y
117CONFIG_FLATMEM=y 133CONFIG_FLATMEM=y
118CONFIG_FLAT_NODE_MEM_MAP=y 134CONFIG_FLAT_NODE_MEM_MAP=y
119CONFIG_SPARSEMEM_STATIC=y 135CONFIG_SPARSEMEM_STATIC=y
136CONFIG_PAGEFLAGS_EXTENDED=y
120CONFIG_SPLIT_PTLOCK_CPUS=4 137CONFIG_SPLIT_PTLOCK_CPUS=4
121CONFIG_RESOURCES_64BIT=y 138CONFIG_RESOURCES_64BIT=y
139CONFIG_PHYS_ADDR_T_64BIT=y
122CONFIG_ZONE_DMA_FLAG=0 140CONFIG_ZONE_DMA_FLAG=0
141CONFIG_VIRT_TO_BUS=y
142CONFIG_UNEVICTABLE_LRU=y
143CONFIG_TICK_ONESHOT=y
144CONFIG_NO_HZ=y
145CONFIG_HIGH_RES_TIMERS=y
146CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
123# CONFIG_HZ_48 is not set 147# CONFIG_HZ_48 is not set
124# CONFIG_HZ_100 is not set 148# CONFIG_HZ_100 is not set
125# CONFIG_HZ_128 is not set 149# CONFIG_HZ_128 is not set
@@ -133,37 +157,40 @@ CONFIG_HZ=250
133CONFIG_PREEMPT_VOLUNTARY=y 157CONFIG_PREEMPT_VOLUNTARY=y
134# CONFIG_PREEMPT is not set 158# CONFIG_PREEMPT is not set
135# CONFIG_KEXEC is not set 159# CONFIG_KEXEC is not set
160CONFIG_SECCOMP=y
136CONFIG_LOCKDEP_SUPPORT=y 161CONFIG_LOCKDEP_SUPPORT=y
137CONFIG_STACKTRACE_SUPPORT=y 162CONFIG_STACKTRACE_SUPPORT=y
138CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 163CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
139 164
140# 165#
141# Code maturity level options 166# General setup
142# 167#
143CONFIG_EXPERIMENTAL=y 168CONFIG_EXPERIMENTAL=y
144CONFIG_BROKEN_ON_SMP=y 169CONFIG_BROKEN_ON_SMP=y
145CONFIG_INIT_ENV_ARG_LIMIT=32 170CONFIG_INIT_ENV_ARG_LIMIT=32
146
147#
148# General setup
149#
150CONFIG_LOCALVERSION="lm32" 171CONFIG_LOCALVERSION="lm32"
151# CONFIG_LOCALVERSION_AUTO is not set 172# CONFIG_LOCALVERSION_AUTO is not set
152CONFIG_SWAP=y 173CONFIG_SWAP=y
153CONFIG_SYSVIPC=y 174CONFIG_SYSVIPC=y
154# CONFIG_IPC_NS is not set
155CONFIG_SYSVIPC_SYSCTL=y 175CONFIG_SYSVIPC_SYSCTL=y
156CONFIG_POSIX_MQUEUE=y 176CONFIG_POSIX_MQUEUE=y
157CONFIG_BSD_PROCESS_ACCT=y 177CONFIG_BSD_PROCESS_ACCT=y
158# CONFIG_BSD_PROCESS_ACCT_V3 is not set 178# CONFIG_BSD_PROCESS_ACCT_V3 is not set
159# CONFIG_TASKSTATS is not set 179# CONFIG_TASKSTATS is not set
160# CONFIG_UTS_NS is not set
161# CONFIG_AUDIT is not set 180# CONFIG_AUDIT is not set
162CONFIG_IKCONFIG=y 181CONFIG_IKCONFIG=y
163CONFIG_IKCONFIG_PROC=y 182CONFIG_IKCONFIG_PROC=y
164CONFIG_LOG_BUF_SHIFT=14 183CONFIG_LOG_BUF_SHIFT=14
184# CONFIG_CGROUPS is not set
185# CONFIG_GROUP_SCHED is not set
165CONFIG_SYSFS_DEPRECATED=y 186CONFIG_SYSFS_DEPRECATED=y
187CONFIG_SYSFS_DEPRECATED_V2=y
166# CONFIG_RELAY is not set 188# CONFIG_RELAY is not set
189CONFIG_NAMESPACES=y
190# CONFIG_UTS_NS is not set
191# CONFIG_IPC_NS is not set
192CONFIG_USER_NS=y
193CONFIG_PID_NS=y
167# CONFIG_BLK_DEV_INITRD is not set 194# CONFIG_BLK_DEV_INITRD is not set
168# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 195# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
169CONFIG_SYSCTL=y 196CONFIG_SYSCTL=y
@@ -175,6 +202,8 @@ CONFIG_HOTPLUG=y
175CONFIG_PRINTK=y 202CONFIG_PRINTK=y
176CONFIG_BUG=y 203CONFIG_BUG=y
177CONFIG_ELF_CORE=y 204CONFIG_ELF_CORE=y
205# CONFIG_PCSPKR_PLATFORM is not set
206# CONFIG_COMPAT_BRK is not set
178CONFIG_BASE_FULL=y 207CONFIG_BASE_FULL=y
179CONFIG_FUTEX=y 208CONFIG_FUTEX=y
180CONFIG_ANON_INODES=y 209CONFIG_ANON_INODES=y
@@ -183,29 +212,33 @@ CONFIG_SIGNALFD=y
183CONFIG_TIMERFD=y 212CONFIG_TIMERFD=y
184CONFIG_EVENTFD=y 213CONFIG_EVENTFD=y
185CONFIG_SHMEM=y 214CONFIG_SHMEM=y
215CONFIG_AIO=y
186CONFIG_VM_EVENT_COUNTERS=y 216CONFIG_VM_EVENT_COUNTERS=y
217CONFIG_PCI_QUIRKS=y
187CONFIG_SLAB=y 218CONFIG_SLAB=y
188# CONFIG_SLUB is not set 219# CONFIG_SLUB is not set
189# CONFIG_SLOB is not set 220# CONFIG_SLOB is not set
221CONFIG_PROFILING=y
222# CONFIG_MARKERS is not set
223CONFIG_OPROFILE=m
224CONFIG_HAVE_OPROFILE=y
225# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
226CONFIG_SLABINFO=y
190CONFIG_RT_MUTEXES=y 227CONFIG_RT_MUTEXES=y
191# CONFIG_TINY_SHMEM is not set 228# CONFIG_TINY_SHMEM is not set
192CONFIG_BASE_SMALL=0 229CONFIG_BASE_SMALL=0
193
194#
195# Loadable module support
196#
197CONFIG_MODULES=y 230CONFIG_MODULES=y
231# CONFIG_MODULE_FORCE_LOAD is not set
198CONFIG_MODULE_UNLOAD=y 232CONFIG_MODULE_UNLOAD=y
199CONFIG_MODULE_FORCE_UNLOAD=y 233CONFIG_MODULE_FORCE_UNLOAD=y
200# CONFIG_MODVERSIONS is not set 234# CONFIG_MODVERSIONS is not set
201# CONFIG_MODULE_SRCVERSION_ALL is not set 235# CONFIG_MODULE_SRCVERSION_ALL is not set
202CONFIG_KMOD=y 236CONFIG_KMOD=y
203
204#
205# Block layer
206#
207CONFIG_BLOCK=y 237CONFIG_BLOCK=y
208# CONFIG_BLK_DEV_IO_TRACE is not set 238# CONFIG_BLK_DEV_IO_TRACE is not set
239CONFIG_BLK_DEV_BSG=y
240# CONFIG_BLK_DEV_INTEGRITY is not set
241CONFIG_BLOCK_COMPAT=y
209 242
210# 243#
211# IO Schedulers 244# IO Schedulers
@@ -219,19 +252,19 @@ CONFIG_IOSCHED_CFQ=y
219CONFIG_DEFAULT_CFQ=y 252CONFIG_DEFAULT_CFQ=y
220# CONFIG_DEFAULT_NOOP is not set 253# CONFIG_DEFAULT_NOOP is not set
221CONFIG_DEFAULT_IOSCHED="cfq" 254CONFIG_DEFAULT_IOSCHED="cfq"
255CONFIG_CLASSIC_RCU=y
256CONFIG_FREEZER=y
222 257
223# 258#
224# Bus options (PCI, PCMCIA, EISA, ISA, TC) 259# Bus options (PCI, PCMCIA, EISA, ISA, TC)
225# 260#
226CONFIG_HW_HAS_PCI=y 261CONFIG_HW_HAS_PCI=y
227CONFIG_PCI=y 262CONFIG_PCI=y
263CONFIG_PCI_DOMAINS=y
228# CONFIG_ARCH_SUPPORTS_MSI is not set 264# CONFIG_ARCH_SUPPORTS_MSI is not set
265CONFIG_PCI_LEGACY=y
229CONFIG_ISA=y 266CONFIG_ISA=y
230CONFIG_MMU=y 267CONFIG_MMU=y
231
232#
233# PCCARD (PCMCIA/CardBus) support
234#
235# CONFIG_PCCARD is not set 268# CONFIG_PCCARD is not set
236# CONFIG_HOTPLUG_PCI is not set 269# CONFIG_HOTPLUG_PCI is not set
237 270
@@ -239,8 +272,9 @@ CONFIG_MMU=y
239# Executable file formats 272# Executable file formats
240# 273#
241CONFIG_BINFMT_ELF=y 274CONFIG_BINFMT_ELF=y
275# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
276# CONFIG_HAVE_AOUT is not set
242CONFIG_BINFMT_MISC=y 277CONFIG_BINFMT_MISC=y
243# CONFIG_BUILD_ELF64 is not set
244CONFIG_MIPS32_COMPAT=y 278CONFIG_MIPS32_COMPAT=y
245CONFIG_COMPAT=y 279CONFIG_COMPAT=y
246CONFIG_SYSVIPC_COMPAT=y 280CONFIG_SYSVIPC_COMPAT=y
@@ -251,14 +285,12 @@ CONFIG_BINFMT_ELF32=y
251# 285#
252# Power management options 286# Power management options
253# 287#
288CONFIG_ARCH_SUSPEND_POSSIBLE=y
254CONFIG_PM=y 289CONFIG_PM=y
255# CONFIG_PM_LEGACY is not set
256# CONFIG_PM_DEBUG is not set 290# CONFIG_PM_DEBUG is not set
257# CONFIG_PM_SYSFS_DEPRECATED is not set 291CONFIG_PM_SLEEP=y
258 292CONFIG_SUSPEND=y
259# 293CONFIG_SUSPEND_FREEZER=y
260# Networking
261#
262CONFIG_NET=y 294CONFIG_NET=y
263 295
264# 296#
@@ -271,6 +303,7 @@ CONFIG_XFRM=y
271# CONFIG_XFRM_USER is not set 303# CONFIG_XFRM_USER is not set
272# CONFIG_XFRM_SUB_POLICY is not set 304# CONFIG_XFRM_SUB_POLICY is not set
273# CONFIG_XFRM_MIGRATE is not set 305# CONFIG_XFRM_MIGRATE is not set
306# CONFIG_XFRM_STATISTICS is not set
274# CONFIG_NET_KEY is not set 307# CONFIG_NET_KEY is not set
275CONFIG_INET=y 308CONFIG_INET=y
276CONFIG_IP_MULTICAST=y 309CONFIG_IP_MULTICAST=y
@@ -294,18 +327,17 @@ CONFIG_INET_TUNNEL=m
294# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 327# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
295# CONFIG_INET_XFRM_MODE_TUNNEL is not set 328# CONFIG_INET_XFRM_MODE_TUNNEL is not set
296CONFIG_INET_XFRM_MODE_BEET=y 329CONFIG_INET_XFRM_MODE_BEET=y
330# CONFIG_INET_LRO is not set
297# CONFIG_INET_DIAG is not set 331# CONFIG_INET_DIAG is not set
298# CONFIG_TCP_CONG_ADVANCED is not set 332# CONFIG_TCP_CONG_ADVANCED is not set
299CONFIG_TCP_CONG_CUBIC=y 333CONFIG_TCP_CONG_CUBIC=y
300CONFIG_DEFAULT_TCP_CONG="cubic" 334CONFIG_DEFAULT_TCP_CONG="cubic"
301# CONFIG_TCP_MD5SIG is not set 335# CONFIG_TCP_MD5SIG is not set
302# CONFIG_IP_VS is not set
303# CONFIG_IPV6 is not set 336# CONFIG_IPV6 is not set
304# CONFIG_INET6_XFRM_TUNNEL is not set
305# CONFIG_INET6_TUNNEL is not set
306# CONFIG_NETWORK_SECMARK is not set 337# CONFIG_NETWORK_SECMARK is not set
307CONFIG_NETFILTER=y 338CONFIG_NETFILTER=y
308# CONFIG_NETFILTER_DEBUG is not set 339# CONFIG_NETFILTER_DEBUG is not set
340CONFIG_NETFILTER_ADVANCED=y
309 341
310# 342#
311# Core Netfilter Configuration 343# Core Netfilter Configuration
@@ -313,53 +345,59 @@ CONFIG_NETFILTER=y
313CONFIG_NETFILTER_NETLINK=m 345CONFIG_NETFILTER_NETLINK=m
314CONFIG_NETFILTER_NETLINK_QUEUE=m 346CONFIG_NETFILTER_NETLINK_QUEUE=m
315CONFIG_NETFILTER_NETLINK_LOG=m 347CONFIG_NETFILTER_NETLINK_LOG=m
316# CONFIG_NF_CONNTRACK_ENABLED is not set
317# CONFIG_NF_CONNTRACK is not set 348# CONFIG_NF_CONNTRACK is not set
318CONFIG_NETFILTER_XTABLES=m 349CONFIG_NETFILTER_XTABLES=m
319CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 350CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
320# CONFIG_NETFILTER_XT_TARGET_DSCP is not set 351# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
321CONFIG_NETFILTER_XT_TARGET_MARK=m 352CONFIG_NETFILTER_XT_TARGET_MARK=m
322CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
323# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set 353# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
354CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
355CONFIG_NETFILTER_XT_TARGET_RATEEST=m
356CONFIG_NETFILTER_XT_TARGET_TRACE=m
324# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set 357# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
358CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
325CONFIG_NETFILTER_XT_MATCH_COMMENT=m 359CONFIG_NETFILTER_XT_MATCH_COMMENT=m
326CONFIG_NETFILTER_XT_MATCH_DCCP=m 360CONFIG_NETFILTER_XT_MATCH_DCCP=m
327# CONFIG_NETFILTER_XT_MATCH_DSCP is not set 361# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
328CONFIG_NETFILTER_XT_MATCH_ESP=m 362CONFIG_NETFILTER_XT_MATCH_ESP=m
363# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
364CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
329CONFIG_NETFILTER_XT_MATCH_LENGTH=m 365CONFIG_NETFILTER_XT_MATCH_LENGTH=m
330CONFIG_NETFILTER_XT_MATCH_LIMIT=m 366CONFIG_NETFILTER_XT_MATCH_LIMIT=m
331CONFIG_NETFILTER_XT_MATCH_MAC=m 367CONFIG_NETFILTER_XT_MATCH_MAC=m
332CONFIG_NETFILTER_XT_MATCH_MARK=m 368CONFIG_NETFILTER_XT_MATCH_MARK=m
333# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
334CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 369CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
370CONFIG_NETFILTER_XT_MATCH_OWNER=m
371# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
335CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 372CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
336CONFIG_NETFILTER_XT_MATCH_QUOTA=m 373CONFIG_NETFILTER_XT_MATCH_QUOTA=m
374CONFIG_NETFILTER_XT_MATCH_RATEEST=m
337CONFIG_NETFILTER_XT_MATCH_REALM=m 375CONFIG_NETFILTER_XT_MATCH_REALM=m
376CONFIG_NETFILTER_XT_MATCH_RECENT=m
377# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
338CONFIG_NETFILTER_XT_MATCH_SCTP=m 378CONFIG_NETFILTER_XT_MATCH_SCTP=m
339CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 379CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
340CONFIG_NETFILTER_XT_MATCH_STRING=m 380CONFIG_NETFILTER_XT_MATCH_STRING=m
341CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 381CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
342# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set 382CONFIG_NETFILTER_XT_MATCH_TIME=m
383CONFIG_NETFILTER_XT_MATCH_U32=m
384# CONFIG_IP_VS is not set
343 385
344# 386#
345# IP: Netfilter Configuration 387# IP: Netfilter Configuration
346# 388#
389# CONFIG_NF_DEFRAG_IPV4 is not set
347CONFIG_IP_NF_QUEUE=m 390CONFIG_IP_NF_QUEUE=m
348CONFIG_IP_NF_IPTABLES=m 391CONFIG_IP_NF_IPTABLES=m
349CONFIG_IP_NF_MATCH_IPRANGE=m 392CONFIG_IP_NF_MATCH_ADDRTYPE=m
350CONFIG_IP_NF_MATCH_TOS=m
351CONFIG_IP_NF_MATCH_RECENT=m
352CONFIG_IP_NF_MATCH_ECN=m
353CONFIG_IP_NF_MATCH_AH=m 393CONFIG_IP_NF_MATCH_AH=m
394CONFIG_IP_NF_MATCH_ECN=m
354CONFIG_IP_NF_MATCH_TTL=m 395CONFIG_IP_NF_MATCH_TTL=m
355CONFIG_IP_NF_MATCH_OWNER=m
356CONFIG_IP_NF_MATCH_ADDRTYPE=m
357CONFIG_IP_NF_FILTER=m 396CONFIG_IP_NF_FILTER=m
358CONFIG_IP_NF_TARGET_REJECT=m 397CONFIG_IP_NF_TARGET_REJECT=m
359CONFIG_IP_NF_TARGET_LOG=m 398CONFIG_IP_NF_TARGET_LOG=m
360CONFIG_IP_NF_TARGET_ULOG=m 399CONFIG_IP_NF_TARGET_ULOG=m
361CONFIG_IP_NF_MANGLE=m 400CONFIG_IP_NF_MANGLE=m
362CONFIG_IP_NF_TARGET_TOS=m
363CONFIG_IP_NF_TARGET_ECN=m 401CONFIG_IP_NF_TARGET_ECN=m
364CONFIG_IP_NF_TARGET_TTL=m 402CONFIG_IP_NF_TARGET_TTL=m
365CONFIG_IP_NF_RAW=m 403CONFIG_IP_NF_RAW=m
@@ -371,6 +409,7 @@ CONFIG_IP_NF_ARP_MANGLE=m
371# CONFIG_TIPC is not set 409# CONFIG_TIPC is not set
372# CONFIG_ATM is not set 410# CONFIG_ATM is not set
373# CONFIG_BRIDGE is not set 411# CONFIG_BRIDGE is not set
412# CONFIG_NET_DSA is not set
374# CONFIG_VLAN_8021Q is not set 413# CONFIG_VLAN_8021Q is not set
375# CONFIG_DECNET is not set 414# CONFIG_DECNET is not set
376# CONFIG_LLC2 is not set 415# CONFIG_LLC2 is not set
@@ -380,10 +419,6 @@ CONFIG_IP_NF_ARP_MANGLE=m
380# CONFIG_LAPB is not set 419# CONFIG_LAPB is not set
381# CONFIG_ECONET is not set 420# CONFIG_ECONET is not set
382# CONFIG_WAN_ROUTER is not set 421# CONFIG_WAN_ROUTER is not set
383
384#
385# QoS and/or fair queueing
386#
387# CONFIG_NET_SCHED is not set 422# CONFIG_NET_SCHED is not set
388CONFIG_NET_CLS_ROUTE=y 423CONFIG_NET_CLS_ROUTE=y
389 424
@@ -392,23 +427,25 @@ CONFIG_NET_CLS_ROUTE=y
392# 427#
393# CONFIG_NET_PKTGEN is not set 428# CONFIG_NET_PKTGEN is not set
394# CONFIG_HAMRADIO is not set 429# CONFIG_HAMRADIO is not set
430# CONFIG_CAN is not set
395# CONFIG_IRDA is not set 431# CONFIG_IRDA is not set
396# CONFIG_BT is not set 432# CONFIG_BT is not set
397# CONFIG_AF_RXRPC is not set 433# CONFIG_AF_RXRPC is not set
398 434CONFIG_PHONET=m
399# 435CONFIG_WIRELESS=y
400# Wireless
401#
402# CONFIG_CFG80211 is not set 436# CONFIG_CFG80211 is not set
437CONFIG_WIRELESS_OLD_REGULATORY=y
403CONFIG_WIRELESS_EXT=y 438CONFIG_WIRELESS_EXT=y
439CONFIG_WIRELESS_EXT_SYSFS=y
404# CONFIG_MAC80211 is not set 440# CONFIG_MAC80211 is not set
405CONFIG_IEEE80211=m 441CONFIG_IEEE80211=m
406# CONFIG_IEEE80211_DEBUG is not set 442# CONFIG_IEEE80211_DEBUG is not set
407CONFIG_IEEE80211_CRYPT_WEP=m 443CONFIG_IEEE80211_CRYPT_WEP=m
408# CONFIG_IEEE80211_CRYPT_CCMP is not set 444# CONFIG_IEEE80211_CRYPT_CCMP is not set
409# CONFIG_IEEE80211_CRYPT_TKIP is not set 445# CONFIG_IEEE80211_CRYPT_TKIP is not set
410# CONFIG_IEEE80211_SOFTMAC is not set
411# CONFIG_RFKILL is not set 446# CONFIG_RFKILL is not set
447CONFIG_NET_9P=m
448# CONFIG_NET_9P_DEBUG is not set
412 449
413# 450#
414# Device Drivers 451# Device Drivers
@@ -417,14 +454,13 @@ CONFIG_IEEE80211_CRYPT_WEP=m
417# 454#
418# Generic Driver Options 455# Generic Driver Options
419# 456#
457CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
420CONFIG_STANDALONE=y 458CONFIG_STANDALONE=y
421CONFIG_PREVENT_FIRMWARE_BUILD=y 459CONFIG_PREVENT_FIRMWARE_BUILD=y
422CONFIG_FW_LOADER=m 460CONFIG_FW_LOADER=m
461CONFIG_FIRMWARE_IN_KERNEL=y
462CONFIG_EXTRA_FIRMWARE=""
423# CONFIG_SYS_HYPERVISOR is not set 463# CONFIG_SYS_HYPERVISOR is not set
424
425#
426# Connector - unified userspace <-> kernelspace linker
427#
428# CONFIG_CONNECTOR is not set 464# CONFIG_CONNECTOR is not set
429CONFIG_MTD=m 465CONFIG_MTD=m
430# CONFIG_MTD_DEBUG is not set 466# CONFIG_MTD_DEBUG is not set
@@ -443,6 +479,7 @@ CONFIG_MTD_BLOCK=m
443# CONFIG_INFTL is not set 479# CONFIG_INFTL is not set
444# CONFIG_RFD_FTL is not set 480# CONFIG_RFD_FTL is not set
445# CONFIG_SSFDC is not set 481# CONFIG_SSFDC is not set
482# CONFIG_MTD_OOPS is not set
446 483
447# 484#
448# RAM/ROM/Flash chip drivers 485# RAM/ROM/Flash chip drivers
@@ -482,6 +519,7 @@ CONFIG_MTD_PHYSMAP=m
482CONFIG_MTD_PHYSMAP_START=0x1fc00000 519CONFIG_MTD_PHYSMAP_START=0x1fc00000
483CONFIG_MTD_PHYSMAP_LEN=0x80000 520CONFIG_MTD_PHYSMAP_LEN=0x80000
484CONFIG_MTD_PHYSMAP_BANKWIDTH=1 521CONFIG_MTD_PHYSMAP_BANKWIDTH=1
522# CONFIG_MTD_INTEL_VR_NOR is not set
485# CONFIG_MTD_PLATRAM is not set 523# CONFIG_MTD_PLATRAM is not set
486 524
487# 525#
@@ -506,21 +544,9 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=1
506# UBI - Unsorted block images 544# UBI - Unsorted block images
507# 545#
508# CONFIG_MTD_UBI is not set 546# CONFIG_MTD_UBI is not set
509
510#
511# Parallel port support
512#
513# CONFIG_PARPORT is not set 547# CONFIG_PARPORT is not set
514
515#
516# Plug and Play support
517#
518# CONFIG_PNP is not set 548# CONFIG_PNP is not set
519# CONFIG_PNPACPI is not set 549CONFIG_BLK_DEV=y
520
521#
522# Block devices
523#
524# CONFIG_BLK_CPQ_DA is not set 550# CONFIG_BLK_CPQ_DA is not set
525# CONFIG_BLK_CPQ_CISS_DA is not set 551# CONFIG_BLK_CPQ_CISS_DA is not set
526# CONFIG_BLK_DEV_DAC960 is not set 552# CONFIG_BLK_DEV_DAC960 is not set
@@ -534,32 +560,28 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
534CONFIG_BLK_DEV_RAM=m 560CONFIG_BLK_DEV_RAM=m
535CONFIG_BLK_DEV_RAM_COUNT=16 561CONFIG_BLK_DEV_RAM_COUNT=16
536CONFIG_BLK_DEV_RAM_SIZE=4096 562CONFIG_BLK_DEV_RAM_SIZE=4096
537CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 563# CONFIG_BLK_DEV_XIP is not set
538CONFIG_CDROM_PKTCDVD=m 564CONFIG_CDROM_PKTCDVD=m
539CONFIG_CDROM_PKTCDVD_BUFFERS=8 565CONFIG_CDROM_PKTCDVD_BUFFERS=8
540# CONFIG_CDROM_PKTCDVD_WCACHE is not set 566# CONFIG_CDROM_PKTCDVD_WCACHE is not set
541CONFIG_ATA_OVER_ETH=m 567CONFIG_ATA_OVER_ETH=m
542 568# CONFIG_BLK_DEV_HD is not set
543# 569# CONFIG_MISC_DEVICES is not set
544# Misc devices 570CONFIG_HAVE_IDE=y
545#
546# CONFIG_PHANTOM is not set
547# CONFIG_SGI_IOC4 is not set
548# CONFIG_TIFM_CORE is not set
549# CONFIG_BLINK is not set
550CONFIG_IDE=y 571CONFIG_IDE=y
551CONFIG_IDE_MAX_HWIFS=4
552CONFIG_BLK_DEV_IDE=y
553 572
554# 573#
555# Please see Documentation/ide.txt for help/info on IDE drives 574# Please see Documentation/ide/ide.txt for help/info on IDE drives
556# 575#
576CONFIG_IDE_TIMINGS=y
577CONFIG_IDE_ATAPI=y
557# CONFIG_BLK_DEV_IDE_SATA is not set 578# CONFIG_BLK_DEV_IDE_SATA is not set
558CONFIG_BLK_DEV_IDEDISK=y 579CONFIG_IDE_GD=y
559CONFIG_IDEDISK_MULTI_MODE=y 580CONFIG_IDE_GD_ATA=y
581# CONFIG_IDE_GD_ATAPI is not set
560CONFIG_BLK_DEV_IDECD=y 582CONFIG_BLK_DEV_IDECD=y
583CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
561# CONFIG_BLK_DEV_IDETAPE is not set 584# CONFIG_BLK_DEV_IDETAPE is not set
562# CONFIG_BLK_DEV_IDEFLOPPY is not set
563CONFIG_BLK_DEV_IDESCSI=y 585CONFIG_BLK_DEV_IDESCSI=y
564CONFIG_IDE_TASK_IOCTL=y 586CONFIG_IDE_TASK_IOCTL=y
565CONFIG_IDE_PROC_FS=y 587CONFIG_IDE_PROC_FS=y
@@ -568,24 +590,25 @@ CONFIG_IDE_PROC_FS=y
568# IDE chipset support/bugfixes 590# IDE chipset support/bugfixes
569# 591#
570CONFIG_IDE_GENERIC=y 592CONFIG_IDE_GENERIC=y
593# CONFIG_BLK_DEV_PLATFORM is not set
594CONFIG_BLK_DEV_IDEDMA_SFF=y
595
596#
597# PCI IDE chipsets support
598#
571CONFIG_BLK_DEV_IDEPCI=y 599CONFIG_BLK_DEV_IDEPCI=y
572CONFIG_IDEPCI_SHARE_IRQ=y
573CONFIG_IDEPCI_PCIBUS_ORDER=y 600CONFIG_IDEPCI_PCIBUS_ORDER=y
574# CONFIG_BLK_DEV_OFFBOARD is not set 601# CONFIG_BLK_DEV_OFFBOARD is not set
575CONFIG_BLK_DEV_GENERIC=y 602CONFIG_BLK_DEV_GENERIC=y
576# CONFIG_BLK_DEV_OPTI621 is not set 603# CONFIG_BLK_DEV_OPTI621 is not set
577CONFIG_BLK_DEV_IDEDMA_PCI=y 604CONFIG_BLK_DEV_IDEDMA_PCI=y
578# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
579# CONFIG_IDEDMA_ONLYDISK is not set
580# CONFIG_BLK_DEV_AEC62XX is not set 605# CONFIG_BLK_DEV_AEC62XX is not set
581# CONFIG_BLK_DEV_ALI15X3 is not set 606# CONFIG_BLK_DEV_ALI15X3 is not set
582# CONFIG_BLK_DEV_AMD74XX is not set 607# CONFIG_BLK_DEV_AMD74XX is not set
583# CONFIG_BLK_DEV_CMD64X is not set 608# CONFIG_BLK_DEV_CMD64X is not set
584# CONFIG_BLK_DEV_TRIFLEX is not set 609# CONFIG_BLK_DEV_TRIFLEX is not set
585# CONFIG_BLK_DEV_CY82C693 is not set
586# CONFIG_BLK_DEV_CS5520 is not set 610# CONFIG_BLK_DEV_CS5520 is not set
587# CONFIG_BLK_DEV_CS5530 is not set 611# CONFIG_BLK_DEV_CS5530 is not set
588# CONFIG_BLK_DEV_HPT34X is not set
589# CONFIG_BLK_DEV_HPT366 is not set 612# CONFIG_BLK_DEV_HPT366 is not set
590# CONFIG_BLK_DEV_JMICRON is not set 613# CONFIG_BLK_DEV_JMICRON is not set
591# CONFIG_BLK_DEV_SC1200 is not set 614# CONFIG_BLK_DEV_SC1200 is not set
@@ -601,17 +624,28 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
601# CONFIG_BLK_DEV_TRM290 is not set 624# CONFIG_BLK_DEV_TRM290 is not set
602CONFIG_BLK_DEV_VIA82CXXX=y 625CONFIG_BLK_DEV_VIA82CXXX=y
603# CONFIG_BLK_DEV_TC86C001 is not set 626# CONFIG_BLK_DEV_TC86C001 is not set
604# CONFIG_IDE_ARM is not set 627
605# CONFIG_IDE_CHIPSETS is not set 628#
629# Other IDE chipsets support
630#
631
632#
633# Note: most of these also require special kernel boot parameters
634#
635# CONFIG_BLK_DEV_4DRIVES is not set
636# CONFIG_BLK_DEV_ALI14XX is not set
637# CONFIG_BLK_DEV_DTC2278 is not set
638# CONFIG_BLK_DEV_HT6560B is not set
639# CONFIG_BLK_DEV_QD65XX is not set
640# CONFIG_BLK_DEV_UMC8672 is not set
606CONFIG_BLK_DEV_IDEDMA=y 641CONFIG_BLK_DEV_IDEDMA=y
607# CONFIG_IDEDMA_IVB is not set
608# CONFIG_BLK_DEV_HD is not set
609 642
610# 643#
611# SCSI device support 644# SCSI device support
612# 645#
613# CONFIG_RAID_ATTRS is not set 646# CONFIG_RAID_ATTRS is not set
614CONFIG_SCSI=y 647CONFIG_SCSI=y
648CONFIG_SCSI_DMA=y
615# CONFIG_SCSI_TGT is not set 649# CONFIG_SCSI_TGT is not set
616# CONFIG_SCSI_NETLINK is not set 650# CONFIG_SCSI_NETLINK is not set
617CONFIG_SCSI_PROC_FS=y 651CONFIG_SCSI_PROC_FS=y
@@ -644,88 +678,30 @@ CONFIG_SCSI_WAIT_SCAN=m
644# CONFIG_SCSI_ISCSI_ATTRS is not set 678# CONFIG_SCSI_ISCSI_ATTRS is not set
645# CONFIG_SCSI_SAS_ATTRS is not set 679# CONFIG_SCSI_SAS_ATTRS is not set
646# CONFIG_SCSI_SAS_LIBSAS is not set 680# CONFIG_SCSI_SAS_LIBSAS is not set
647 681# CONFIG_SCSI_SRP_ATTRS is not set
648# 682# CONFIG_SCSI_LOWLEVEL is not set
649# SCSI low-level drivers 683# CONFIG_SCSI_DH is not set
650#
651# CONFIG_ISCSI_TCP is not set
652# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
653# CONFIG_SCSI_3W_9XXX is not set
654# CONFIG_SCSI_ACARD is not set
655# CONFIG_SCSI_AACRAID is not set
656# CONFIG_SCSI_AIC7XXX is not set
657# CONFIG_SCSI_AIC7XXX_OLD is not set
658# CONFIG_SCSI_AIC79XX is not set
659# CONFIG_SCSI_AIC94XX is not set
660# CONFIG_SCSI_IN2000 is not set
661# CONFIG_SCSI_ARCMSR is not set
662# CONFIG_MEGARAID_NEWGEN is not set
663# CONFIG_MEGARAID_LEGACY is not set
664# CONFIG_MEGARAID_SAS is not set
665# CONFIG_SCSI_HPTIOP is not set
666# CONFIG_SCSI_DMX3191D is not set
667# CONFIG_SCSI_DTC3280 is not set
668# CONFIG_SCSI_FUTURE_DOMAIN is not set
669# CONFIG_SCSI_GENERIC_NCR5380 is not set
670# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
671# CONFIG_SCSI_IPS is not set
672# CONFIG_SCSI_INITIO is not set
673# CONFIG_SCSI_INIA100 is not set
674# CONFIG_SCSI_NCR53C406A is not set
675# CONFIG_SCSI_STEX is not set
676# CONFIG_SCSI_SYM53C8XX_2 is not set
677# CONFIG_SCSI_PAS16 is not set
678# CONFIG_SCSI_PSI240I is not set
679# CONFIG_SCSI_QLOGIC_FAS is not set
680# CONFIG_SCSI_QLOGIC_1280 is not set
681# CONFIG_SCSI_QLA_FC is not set
682# CONFIG_SCSI_QLA_ISCSI is not set
683# CONFIG_SCSI_LPFC is not set
684# CONFIG_SCSI_SYM53C416 is not set
685# CONFIG_SCSI_DC395x is not set
686# CONFIG_SCSI_DC390T is not set
687# CONFIG_SCSI_T128 is not set
688# CONFIG_SCSI_DEBUG is not set
689# CONFIG_SCSI_SRP is not set
690# CONFIG_ATA is not set 684# CONFIG_ATA is not set
691
692#
693# Old CD-ROM drivers (not SCSI, not IDE)
694#
695# CONFIG_CD_NO_IDESCSI is not set
696
697#
698# Multi-device support (RAID and LVM)
699#
700# CONFIG_MD is not set 685# CONFIG_MD is not set
701
702#
703# Fusion MPT device support
704#
705# CONFIG_FUSION is not set 686# CONFIG_FUSION is not set
706# CONFIG_FUSION_SPI is not set
707# CONFIG_FUSION_FC is not set
708# CONFIG_FUSION_SAS is not set
709 687
710# 688#
711# IEEE 1394 (FireWire) support 689# IEEE 1394 (FireWire) support
712# 690#
713# CONFIG_FIREWIRE is not set
714# CONFIG_IEEE1394 is not set
715 691
716# 692#
717# I2O device support 693# Enable only one of the two stacks, unless you know what you are doing
718# 694#
695# CONFIG_FIREWIRE is not set
696# CONFIG_IEEE1394 is not set
719# CONFIG_I2O is not set 697# CONFIG_I2O is not set
720
721#
722# Network device support
723#
724CONFIG_NETDEVICES=y 698CONFIG_NETDEVICES=y
725# CONFIG_DUMMY is not set 699# CONFIG_DUMMY is not set
726# CONFIG_BONDING is not set 700# CONFIG_BONDING is not set
701CONFIG_MACVLAN=m
727# CONFIG_EQUALIZER is not set 702# CONFIG_EQUALIZER is not set
728# CONFIG_TUN is not set 703# CONFIG_TUN is not set
704CONFIG_VETH=m
729# CONFIG_ARCNET is not set 705# CONFIG_ARCNET is not set
730CONFIG_PHYLIB=m 706CONFIG_PHYLIB=m
731 707
@@ -740,29 +716,32 @@ CONFIG_CICADA_PHY=m
740# CONFIG_VITESSE_PHY is not set 716# CONFIG_VITESSE_PHY is not set
741# CONFIG_SMSC_PHY is not set 717# CONFIG_SMSC_PHY is not set
742# CONFIG_BROADCOM_PHY is not set 718# CONFIG_BROADCOM_PHY is not set
743# CONFIG_FIXED_PHY is not set 719# CONFIG_ICPLUS_PHY is not set
744 720# CONFIG_REALTEK_PHY is not set
745# 721# CONFIG_MDIO_BITBANG is not set
746# Ethernet (10 or 100Mbit)
747#
748CONFIG_NET_ETHERNET=y 722CONFIG_NET_ETHERNET=y
749CONFIG_MII=y 723CONFIG_MII=y
724# CONFIG_AX88796 is not set
750# CONFIG_HAPPYMEAL is not set 725# CONFIG_HAPPYMEAL is not set
751# CONFIG_SUNGEM is not set 726# CONFIG_SUNGEM is not set
752# CONFIG_CASSINI is not set 727# CONFIG_CASSINI is not set
753# CONFIG_NET_VENDOR_3COM is not set 728# CONFIG_NET_VENDOR_3COM is not set
754# CONFIG_NET_VENDOR_SMC is not set 729# CONFIG_NET_VENDOR_SMC is not set
730# CONFIG_SMC91X is not set
755# CONFIG_DM9000 is not set 731# CONFIG_DM9000 is not set
756# CONFIG_NET_VENDOR_RACAL is not set 732# CONFIG_NET_VENDOR_RACAL is not set
757
758#
759# Tulip family network device support
760#
761# CONFIG_NET_TULIP is not set 733# CONFIG_NET_TULIP is not set
762# CONFIG_AT1700 is not set 734# CONFIG_AT1700 is not set
763# CONFIG_DEPCA is not set 735# CONFIG_DEPCA is not set
764# CONFIG_HP100 is not set 736# CONFIG_HP100 is not set
765# CONFIG_NET_ISA is not set 737# CONFIG_NET_ISA is not set
738# CONFIG_IBM_NEW_EMAC_ZMII is not set
739# CONFIG_IBM_NEW_EMAC_RGMII is not set
740# CONFIG_IBM_NEW_EMAC_TAH is not set
741# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
742# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
743# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
744# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
766CONFIG_NET_PCI=y 745CONFIG_NET_PCI=y
767# CONFIG_PCNET32 is not set 746# CONFIG_PCNET32 is not set
768# CONFIG_AMD8111_ETH is not set 747# CONFIG_AMD8111_ETH is not set
@@ -773,7 +752,6 @@ CONFIG_NET_PCI=y
773# CONFIG_FORCEDETH is not set 752# CONFIG_FORCEDETH is not set
774# CONFIG_CS89x0 is not set 753# CONFIG_CS89x0 is not set
775# CONFIG_TC35815 is not set 754# CONFIG_TC35815 is not set
776# CONFIG_DGRS is not set
777# CONFIG_EEPRO100 is not set 755# CONFIG_EEPRO100 is not set
778# CONFIG_E100 is not set 756# CONFIG_E100 is not set
779# CONFIG_FEALNX is not set 757# CONFIG_FEALNX is not set
@@ -785,15 +763,21 @@ CONFIG_8139TOO=y
785# CONFIG_8139TOO_TUNE_TWISTER is not set 763# CONFIG_8139TOO_TUNE_TWISTER is not set
786# CONFIG_8139TOO_8129 is not set 764# CONFIG_8139TOO_8129 is not set
787# CONFIG_8139_OLD_RX_RESET is not set 765# CONFIG_8139_OLD_RX_RESET is not set
766# CONFIG_R6040 is not set
788# CONFIG_SIS900 is not set 767# CONFIG_SIS900 is not set
789# CONFIG_EPIC100 is not set 768# CONFIG_EPIC100 is not set
790# CONFIG_SUNDANCE is not set 769# CONFIG_SUNDANCE is not set
770# CONFIG_TLAN is not set
791# CONFIG_VIA_RHINE is not set 771# CONFIG_VIA_RHINE is not set
792# CONFIG_SC92031 is not set 772# CONFIG_SC92031 is not set
773# CONFIG_ATL2 is not set
793CONFIG_NETDEV_1000=y 774CONFIG_NETDEV_1000=y
794# CONFIG_ACENIC is not set 775# CONFIG_ACENIC is not set
795# CONFIG_DL2K is not set 776# CONFIG_DL2K is not set
796# CONFIG_E1000 is not set 777# CONFIG_E1000 is not set
778# CONFIG_E1000E is not set
779# CONFIG_IP1000 is not set
780# CONFIG_IGB is not set
797# CONFIG_NS83820 is not set 781# CONFIG_NS83820 is not set
798# CONFIG_HAMACHI is not set 782# CONFIG_HAMACHI is not set
799# CONFIG_YELLOWFIN is not set 783# CONFIG_YELLOWFIN is not set
@@ -801,20 +785,29 @@ CONFIG_NETDEV_1000=y
801# CONFIG_SIS190 is not set 785# CONFIG_SIS190 is not set
802# CONFIG_SKGE is not set 786# CONFIG_SKGE is not set
803# CONFIG_SKY2 is not set 787# CONFIG_SKY2 is not set
804# CONFIG_SK98LIN is not set
805# CONFIG_VIA_VELOCITY is not set 788# CONFIG_VIA_VELOCITY is not set
806# CONFIG_TIGON3 is not set 789# CONFIG_TIGON3 is not set
807# CONFIG_BNX2 is not set 790# CONFIG_BNX2 is not set
808# CONFIG_QLA3XXX is not set 791# CONFIG_QLA3XXX is not set
809# CONFIG_ATL1 is not set 792# CONFIG_ATL1 is not set
793# CONFIG_ATL1E is not set
794# CONFIG_JME is not set
810CONFIG_NETDEV_10000=y 795CONFIG_NETDEV_10000=y
811# CONFIG_CHELSIO_T1 is not set 796# CONFIG_CHELSIO_T1 is not set
812# CONFIG_CHELSIO_T3 is not set 797# CONFIG_CHELSIO_T3 is not set
798# CONFIG_ENIC is not set
799# CONFIG_IXGBE is not set
813# CONFIG_IXGB is not set 800# CONFIG_IXGB is not set
814# CONFIG_S2IO is not set 801# CONFIG_S2IO is not set
815# CONFIG_MYRI10GE is not set 802# CONFIG_MYRI10GE is not set
816# CONFIG_NETXEN_NIC is not set 803# CONFIG_NETXEN_NIC is not set
804# CONFIG_NIU is not set
805# CONFIG_MLX4_EN is not set
817# CONFIG_MLX4_CORE is not set 806# CONFIG_MLX4_CORE is not set
807# CONFIG_TEHUTI is not set
808# CONFIG_BNX2X is not set
809# CONFIG_QLGE is not set
810# CONFIG_SFC is not set
818# CONFIG_TR is not set 811# CONFIG_TR is not set
819 812
820# 813#
@@ -822,6 +815,7 @@ CONFIG_NETDEV_10000=y
822# 815#
823# CONFIG_WLAN_PRE80211 is not set 816# CONFIG_WLAN_PRE80211 is not set
824# CONFIG_WLAN_80211 is not set 817# CONFIG_WLAN_80211 is not set
818# CONFIG_IWLWIFI_LEDS is not set
825 819
826# 820#
827# USB Network Adapters 821# USB Network Adapters
@@ -830,7 +824,6 @@ CONFIG_NETDEV_10000=y
830# CONFIG_USB_KAWETH is not set 824# CONFIG_USB_KAWETH is not set
831# CONFIG_USB_PEGASUS is not set 825# CONFIG_USB_PEGASUS is not set
832# CONFIG_USB_RTL8150 is not set 826# CONFIG_USB_RTL8150 is not set
833# CONFIG_USB_USBNET_MII is not set
834# CONFIG_USB_USBNET is not set 827# CONFIG_USB_USBNET is not set
835# CONFIG_WAN is not set 828# CONFIG_WAN is not set
836# CONFIG_FDDI is not set 829# CONFIG_FDDI is not set
@@ -844,25 +837,17 @@ CONFIG_PPP_DEFLATE=m
844CONFIG_PPP_BSDCOMP=m 837CONFIG_PPP_BSDCOMP=m
845CONFIG_PPP_MPPE=m 838CONFIG_PPP_MPPE=m
846CONFIG_PPPOE=m 839CONFIG_PPPOE=m
840CONFIG_PPPOL2TP=m
847CONFIG_SLIP=m 841CONFIG_SLIP=m
848CONFIG_SLIP_COMPRESSED=y 842CONFIG_SLIP_COMPRESSED=y
849CONFIG_SLHC=m 843CONFIG_SLHC=m
850CONFIG_SLIP_SMART=y 844CONFIG_SLIP_SMART=y
851CONFIG_SLIP_MODE_SLIP6=y 845CONFIG_SLIP_MODE_SLIP6=y
852CONFIG_NET_FC=y 846CONFIG_NET_FC=y
853# CONFIG_SHAPER is not set
854# CONFIG_NETCONSOLE is not set 847# CONFIG_NETCONSOLE is not set
855# CONFIG_NETPOLL is not set 848# CONFIG_NETPOLL is not set
856# CONFIG_NET_POLL_CONTROLLER is not set 849# CONFIG_NET_POLL_CONTROLLER is not set
857
858#
859# ISDN subsystem
860#
861# CONFIG_ISDN is not set 850# CONFIG_ISDN is not set
862
863#
864# Telephony Support
865#
866# CONFIG_PHONE is not set 851# CONFIG_PHONE is not set
867 852
868# 853#
@@ -870,6 +855,7 @@ CONFIG_NET_FC=y
870# 855#
871CONFIG_INPUT=y 856CONFIG_INPUT=y
872CONFIG_INPUT_FF_MEMLESS=y 857CONFIG_INPUT_FF_MEMLESS=y
858# CONFIG_INPUT_POLLDEV is not set
873 859
874# 860#
875# Userland interfaces 861# Userland interfaces
@@ -879,7 +865,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
879CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 865CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
880CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 866CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
881# CONFIG_INPUT_JOYDEV is not set 867# CONFIG_INPUT_JOYDEV is not set
882# CONFIG_INPUT_TSDEV is not set
883# CONFIG_INPUT_EVDEV is not set 868# CONFIG_INPUT_EVDEV is not set
884# CONFIG_INPUT_EVBUG is not set 869# CONFIG_INPUT_EVBUG is not set
885 870
@@ -900,9 +885,11 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
900CONFIG_MOUSE_PS2_SYNAPTICS=y 885CONFIG_MOUSE_PS2_SYNAPTICS=y
901CONFIG_MOUSE_PS2_LIFEBOOK=y 886CONFIG_MOUSE_PS2_LIFEBOOK=y
902CONFIG_MOUSE_PS2_TRACKPOINT=y 887CONFIG_MOUSE_PS2_TRACKPOINT=y
888# CONFIG_MOUSE_PS2_ELANTECH is not set
903# CONFIG_MOUSE_PS2_TOUCHKIT is not set 889# CONFIG_MOUSE_PS2_TOUCHKIT is not set
904CONFIG_MOUSE_SERIAL=y 890CONFIG_MOUSE_SERIAL=y
905# CONFIG_MOUSE_APPLETOUCH is not set 891# CONFIG_MOUSE_APPLETOUCH is not set
892# CONFIG_MOUSE_BCM5974 is not set
906# CONFIG_MOUSE_INPORT is not set 893# CONFIG_MOUSE_INPORT is not set
907# CONFIG_MOUSE_LOGIBM is not set 894# CONFIG_MOUSE_LOGIBM is not set
908# CONFIG_MOUSE_PC110PAD is not set 895# CONFIG_MOUSE_PC110PAD is not set
@@ -927,10 +914,13 @@ CONFIG_SERIO_LIBPS2=y
927# Character devices 914# Character devices
928# 915#
929CONFIG_VT=y 916CONFIG_VT=y
917CONFIG_CONSOLE_TRANSLATIONS=y
930CONFIG_VT_CONSOLE=y 918CONFIG_VT_CONSOLE=y
931CONFIG_HW_CONSOLE=y 919CONFIG_HW_CONSOLE=y
932# CONFIG_VT_HW_CONSOLE_BINDING is not set 920# CONFIG_VT_HW_CONSOLE_BINDING is not set
921CONFIG_DEVKMEM=y
933# CONFIG_SERIAL_NONSTANDARD is not set 922# CONFIG_SERIAL_NONSTANDARD is not set
923# CONFIG_NOZOMI is not set
934 924
935# 925#
936# Serial drivers 926# Serial drivers
@@ -951,105 +941,152 @@ CONFIG_SERIAL_CORE_CONSOLE=y
951CONFIG_UNIX98_PTYS=y 941CONFIG_UNIX98_PTYS=y
952CONFIG_LEGACY_PTYS=y 942CONFIG_LEGACY_PTYS=y
953CONFIG_LEGACY_PTY_COUNT=256 943CONFIG_LEGACY_PTY_COUNT=256
954
955#
956# IPMI
957#
958# CONFIG_IPMI_HANDLER is not set 944# CONFIG_IPMI_HANDLER is not set
959# CONFIG_WATCHDOG is not set
960CONFIG_HW_RANDOM=y 945CONFIG_HW_RANDOM=y
961CONFIG_RTC=y
962# CONFIG_DTLK is not set 946# CONFIG_DTLK is not set
963# CONFIG_R3964 is not set 947# CONFIG_R3964 is not set
964# CONFIG_APPLICOM is not set 948# CONFIG_APPLICOM is not set
965# CONFIG_DRM is not set
966# CONFIG_RAW_DRIVER is not set 949# CONFIG_RAW_DRIVER is not set
967
968#
969# TPM devices
970#
971# CONFIG_TCG_TPM is not set 950# CONFIG_TCG_TPM is not set
972CONFIG_DEVPORT=y 951CONFIG_DEVPORT=y
973CONFIG_I2C=m 952CONFIG_I2C=m
974CONFIG_I2C_BOARDINFO=y 953CONFIG_I2C_BOARDINFO=y
975CONFIG_I2C_CHARDEV=m 954CONFIG_I2C_CHARDEV=m
955CONFIG_I2C_HELPER_AUTO=y
976 956
977# 957#
978# I2C Algorithms 958# I2C Hardware Bus support
979# 959#
980# CONFIG_I2C_ALGOBIT is not set
981# CONFIG_I2C_ALGOPCF is not set
982# CONFIG_I2C_ALGOPCA is not set
983 960
984# 961#
985# I2C Hardware Bus support 962# PC SMBus host controller drivers
986# 963#
987# CONFIG_I2C_ALI1535 is not set 964# CONFIG_I2C_ALI1535 is not set
988# CONFIG_I2C_ALI1563 is not set 965# CONFIG_I2C_ALI1563 is not set
989# CONFIG_I2C_ALI15X3 is not set 966# CONFIG_I2C_ALI15X3 is not set
990# CONFIG_I2C_AMD756 is not set 967# CONFIG_I2C_AMD756 is not set
991# CONFIG_I2C_AMD8111 is not set 968# CONFIG_I2C_AMD8111 is not set
992# CONFIG_I2C_ELEKTOR is not set
993# CONFIG_I2C_I801 is not set 969# CONFIG_I2C_I801 is not set
994# CONFIG_I2C_I810 is not set 970# CONFIG_I2C_ISCH is not set
995# CONFIG_I2C_PIIX4 is not set 971# CONFIG_I2C_PIIX4 is not set
996# CONFIG_I2C_NFORCE2 is not set 972# CONFIG_I2C_NFORCE2 is not set
997# CONFIG_I2C_OCORES is not set
998# CONFIG_I2C_PARPORT_LIGHT is not set
999# CONFIG_I2C_PROSAVAGE is not set
1000# CONFIG_I2C_SAVAGE4 is not set
1001# CONFIG_I2C_SIMTEC is not set
1002# CONFIG_I2C_SIS5595 is not set 973# CONFIG_I2C_SIS5595 is not set
1003# CONFIG_I2C_SIS630 is not set 974# CONFIG_I2C_SIS630 is not set
1004# CONFIG_I2C_SIS96X is not set 975# CONFIG_I2C_SIS96X is not set
1005# CONFIG_I2C_STUB is not set
1006# CONFIG_I2C_TINY_USB is not set
1007# CONFIG_I2C_VIA is not set 976# CONFIG_I2C_VIA is not set
1008CONFIG_I2C_VIAPRO=m 977CONFIG_I2C_VIAPRO=m
978
979#
980# I2C system bus drivers (mostly embedded / system-on-chip)
981#
982# CONFIG_I2C_OCORES is not set
983# CONFIG_I2C_SIMTEC is not set
984
985#
986# External I2C/SMBus adapter drivers
987#
988# CONFIG_I2C_PARPORT_LIGHT is not set
989# CONFIG_I2C_TAOS_EVM is not set
990# CONFIG_I2C_TINY_USB is not set
991
992#
993# Graphics adapter I2C/DDC channel drivers
994#
1009# CONFIG_I2C_VOODOO3 is not set 995# CONFIG_I2C_VOODOO3 is not set
996
997#
998# Other I2C/SMBus bus drivers
999#
1000# CONFIG_I2C_ELEKTOR is not set
1010# CONFIG_I2C_PCA_ISA is not set 1001# CONFIG_I2C_PCA_ISA is not set
1002# CONFIG_I2C_PCA_PLATFORM is not set
1003# CONFIG_I2C_STUB is not set
1011 1004
1012# 1005#
1013# Miscellaneous I2C Chip support 1006# Miscellaneous I2C Chip support
1014# 1007#
1015# CONFIG_SENSORS_DS1337 is not set 1008# CONFIG_DS1682 is not set
1016# CONFIG_SENSORS_DS1374 is not set 1009# CONFIG_AT24 is not set
1017# CONFIG_SENSORS_EEPROM is not set 1010# CONFIG_SENSORS_EEPROM is not set
1018# CONFIG_SENSORS_PCF8574 is not set 1011# CONFIG_SENSORS_PCF8574 is not set
1012# CONFIG_PCF8575 is not set
1019# CONFIG_SENSORS_PCA9539 is not set 1013# CONFIG_SENSORS_PCA9539 is not set
1020# CONFIG_SENSORS_PCF8591 is not set 1014# CONFIG_SENSORS_PCF8591 is not set
1021# CONFIG_SENSORS_MAX6875 is not set 1015# CONFIG_SENSORS_MAX6875 is not set
1016# CONFIG_SENSORS_TSL2550 is not set
1022# CONFIG_I2C_DEBUG_CORE is not set 1017# CONFIG_I2C_DEBUG_CORE is not set
1023# CONFIG_I2C_DEBUG_ALGO is not set 1018# CONFIG_I2C_DEBUG_ALGO is not set
1024# CONFIG_I2C_DEBUG_BUS is not set 1019# CONFIG_I2C_DEBUG_BUS is not set
1025# CONFIG_I2C_DEBUG_CHIP is not set 1020# CONFIG_I2C_DEBUG_CHIP is not set
1026
1027#
1028# SPI support
1029#
1030# CONFIG_SPI is not set 1021# CONFIG_SPI is not set
1031# CONFIG_SPI_MASTER is not set 1022# CONFIG_W1 is not set
1023# CONFIG_POWER_SUPPLY is not set
1024# CONFIG_HWMON is not set
1025# CONFIG_THERMAL is not set
1026# CONFIG_THERMAL_HWMON is not set
1027# CONFIG_WATCHDOG is not set
1028CONFIG_SSB_POSSIBLE=y
1032 1029
1033# 1030#
1034# Dallas's 1-wire bus 1031# Sonics Silicon Backplane
1035# 1032#
1036# CONFIG_W1 is not set 1033# CONFIG_SSB is not set
1037# CONFIG_HWMON is not set
1038 1034
1039# 1035#
1040# Multifunction device drivers 1036# Multifunction device drivers
1041# 1037#
1038# CONFIG_MFD_CORE is not set
1042# CONFIG_MFD_SM501 is not set 1039# CONFIG_MFD_SM501 is not set
1040# CONFIG_HTC_PASIC3 is not set
1041# CONFIG_MFD_TMIO is not set
1042# CONFIG_MFD_WM8400 is not set
1043# CONFIG_MFD_WM8350_I2C is not set
1044# CONFIG_REGULATOR is not set
1043 1045
1044# 1046#
1045# Multimedia devices 1047# Multimedia devices
1046# 1048#
1049
1050#
1051# Multimedia core support
1052#
1047CONFIG_VIDEO_DEV=m 1053CONFIG_VIDEO_DEV=m
1048CONFIG_VIDEO_V4L1=y 1054CONFIG_VIDEO_V4L2_COMMON=m
1055CONFIG_VIDEO_ALLOW_V4L1=y
1049CONFIG_VIDEO_V4L1_COMPAT=y 1056CONFIG_VIDEO_V4L1_COMPAT=y
1050CONFIG_VIDEO_V4L2=y 1057# CONFIG_DVB_CORE is not set
1058CONFIG_VIDEO_MEDIA=m
1059
1060#
1061# Multimedia drivers
1062#
1063CONFIG_MEDIA_ATTACH=y
1064CONFIG_MEDIA_TUNER=m
1065CONFIG_MEDIA_TUNER_CUSTOMIZE=y
1066CONFIG_MEDIA_TUNER_SIMPLE=m
1067CONFIG_MEDIA_TUNER_TDA8290=m
1068CONFIG_MEDIA_TUNER_TDA827X=m
1069CONFIG_MEDIA_TUNER_TDA18271=m
1070CONFIG_MEDIA_TUNER_TDA9887=m
1071CONFIG_MEDIA_TUNER_TEA5761=m
1072CONFIG_MEDIA_TUNER_TEA5767=m
1073CONFIG_MEDIA_TUNER_MT20XX=m
1074CONFIG_MEDIA_TUNER_MT2060=m
1075CONFIG_MEDIA_TUNER_MT2266=m
1076CONFIG_MEDIA_TUNER_MT2131=m
1077CONFIG_MEDIA_TUNER_QT1010=m
1078CONFIG_MEDIA_TUNER_XC2028=m
1079CONFIG_MEDIA_TUNER_XC5000=m
1080CONFIG_MEDIA_TUNER_MXL5005S=m
1081CONFIG_MEDIA_TUNER_MXL5007T=m
1082CONFIG_VIDEO_V4L2=m
1083CONFIG_VIDEO_V4L1=m
1084CONFIG_VIDEOBUF_GEN=m
1085CONFIG_VIDEOBUF_VMALLOC=m
1086CONFIG_VIDEOBUF_DMA_CONTIG=m
1051CONFIG_VIDEO_CAPTURE_DRIVERS=y 1087CONFIG_VIDEO_CAPTURE_DRIVERS=y
1052# CONFIG_VIDEO_ADV_DEBUG is not set 1088# CONFIG_VIDEO_ADV_DEBUG is not set
1089# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
1053CONFIG_VIDEO_HELPER_CHIPS_AUTO=y 1090CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
1054# CONFIG_VIDEO_VIVI is not set 1091# CONFIG_VIDEO_VIVI is not set
1055# CONFIG_VIDEO_BT848 is not set 1092# CONFIG_VIDEO_BT848 is not set
@@ -1058,17 +1095,46 @@ CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
1058# CONFIG_VIDEO_CPIA2 is not set 1095# CONFIG_VIDEO_CPIA2 is not set
1059# CONFIG_VIDEO_SAA5246A is not set 1096# CONFIG_VIDEO_SAA5246A is not set
1060# CONFIG_VIDEO_SAA5249 is not set 1097# CONFIG_VIDEO_SAA5249 is not set
1061# CONFIG_TUNER_3036 is not set
1062# CONFIG_VIDEO_STRADIS is not set 1098# CONFIG_VIDEO_STRADIS is not set
1063# CONFIG_VIDEO_SAA7134 is not set 1099# CONFIG_VIDEO_SAA7134 is not set
1064# CONFIG_VIDEO_MXB is not set 1100# CONFIG_VIDEO_MXB is not set
1065# CONFIG_VIDEO_DPC is not set
1066# CONFIG_VIDEO_HEXIUM_ORION is not set 1101# CONFIG_VIDEO_HEXIUM_ORION is not set
1067# CONFIG_VIDEO_HEXIUM_GEMINI is not set 1102# CONFIG_VIDEO_HEXIUM_GEMINI is not set
1068# CONFIG_VIDEO_CX88 is not set 1103# CONFIG_VIDEO_CX88 is not set
1069# CONFIG_VIDEO_IVTV is not set 1104# CONFIG_VIDEO_IVTV is not set
1070# CONFIG_VIDEO_CAFE_CCIC is not set 1105# CONFIG_VIDEO_CAFE_CCIC is not set
1106CONFIG_SOC_CAMERA=m
1107CONFIG_SOC_CAMERA_MT9M001=m
1108CONFIG_SOC_CAMERA_MT9M111=m
1109CONFIG_SOC_CAMERA_MT9V022=m
1110CONFIG_SOC_CAMERA_PLATFORM=m
1111CONFIG_VIDEO_SH_MOBILE_CEU=m
1071CONFIG_V4L_USB_DRIVERS=y 1112CONFIG_V4L_USB_DRIVERS=y
1113CONFIG_USB_VIDEO_CLASS=m
1114CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
1115CONFIG_USB_GSPCA=m
1116CONFIG_USB_M5602=m
1117CONFIG_USB_GSPCA_CONEX=m
1118CONFIG_USB_GSPCA_ETOMS=m
1119CONFIG_USB_GSPCA_FINEPIX=m
1120CONFIG_USB_GSPCA_MARS=m
1121CONFIG_USB_GSPCA_OV519=m
1122CONFIG_USB_GSPCA_PAC207=m
1123CONFIG_USB_GSPCA_PAC7311=m
1124CONFIG_USB_GSPCA_SONIXB=m
1125CONFIG_USB_GSPCA_SONIXJ=m
1126CONFIG_USB_GSPCA_SPCA500=m
1127CONFIG_USB_GSPCA_SPCA501=m
1128CONFIG_USB_GSPCA_SPCA505=m
1129CONFIG_USB_GSPCA_SPCA506=m
1130CONFIG_USB_GSPCA_SPCA508=m
1131CONFIG_USB_GSPCA_SPCA561=m
1132CONFIG_USB_GSPCA_STK014=m
1133CONFIG_USB_GSPCA_SUNPLUS=m
1134CONFIG_USB_GSPCA_T613=m
1135CONFIG_USB_GSPCA_TV8532=m
1136CONFIG_USB_GSPCA_VC032X=m
1137CONFIG_USB_GSPCA_ZC3XX=m
1072# CONFIG_VIDEO_PVRUSB2 is not set 1138# CONFIG_VIDEO_PVRUSB2 is not set
1073# CONFIG_VIDEO_EM28XX is not set 1139# CONFIG_VIDEO_EM28XX is not set
1074# CONFIG_VIDEO_USBVISION is not set 1140# CONFIG_VIDEO_USBVISION is not set
@@ -1079,7 +1145,6 @@ CONFIG_USB_KONICAWC=m
1079CONFIG_USB_QUICKCAM_MESSENGER=m 1145CONFIG_USB_QUICKCAM_MESSENGER=m
1080CONFIG_USB_ET61X251=m 1146CONFIG_USB_ET61X251=m
1081# CONFIG_VIDEO_OVCAMCHIP is not set 1147# CONFIG_VIDEO_OVCAMCHIP is not set
1082# CONFIG_USB_W9968CF is not set
1083CONFIG_USB_OV511=m 1148CONFIG_USB_OV511=m
1084CONFIG_USB_SE401=m 1149CONFIG_USB_SE401=m
1085CONFIG_USB_SN9C102=m 1150CONFIG_USB_SN9C102=m
@@ -1088,6 +1153,8 @@ CONFIG_USB_ZC0301=m
1088CONFIG_USB_PWC=m 1153CONFIG_USB_PWC=m
1089# CONFIG_USB_PWC_DEBUG is not set 1154# CONFIG_USB_PWC_DEBUG is not set
1090# CONFIG_USB_ZR364XX is not set 1155# CONFIG_USB_ZR364XX is not set
1156CONFIG_USB_STKWEBCAM=m
1157CONFIG_USB_S2255=m
1091CONFIG_RADIO_ADAPTERS=y 1158CONFIG_RADIO_ADAPTERS=y
1092# CONFIG_RADIO_CADET is not set 1159# CONFIG_RADIO_CADET is not set
1093# CONFIG_RADIO_RTRACK is not set 1160# CONFIG_RADIO_RTRACK is not set
@@ -1104,33 +1171,30 @@ CONFIG_RADIO_ADAPTERS=y
1104# CONFIG_RADIO_TYPHOON is not set 1171# CONFIG_RADIO_TYPHOON is not set
1105# CONFIG_RADIO_ZOLTRIX is not set 1172# CONFIG_RADIO_ZOLTRIX is not set
1106# CONFIG_USB_DSBR is not set 1173# CONFIG_USB_DSBR is not set
1107# CONFIG_DVB_CORE is not set 1174CONFIG_USB_SI470X=m
1175CONFIG_USB_MR800=m
1108CONFIG_DAB=y 1176CONFIG_DAB=y
1109# CONFIG_USB_DABUSB is not set 1177# CONFIG_USB_DABUSB is not set
1110 1178
1111# 1179#
1112# Graphics support 1180# Graphics support
1113# 1181#
1114CONFIG_BACKLIGHT_LCD_SUPPORT=y 1182# CONFIG_DRM is not set
1115CONFIG_BACKLIGHT_CLASS_DEVICE=y
1116CONFIG_LCD_CLASS_DEVICE=m
1117
1118#
1119# Display device support
1120#
1121# CONFIG_DISPLAY_SUPPORT is not set
1122# CONFIG_VGASTATE is not set 1183# CONFIG_VGASTATE is not set
1184CONFIG_VIDEO_OUTPUT_CONTROL=m
1123CONFIG_FB=y 1185CONFIG_FB=y
1124# CONFIG_FIRMWARE_EDID is not set 1186# CONFIG_FIRMWARE_EDID is not set
1125# CONFIG_FB_DDC is not set 1187# CONFIG_FB_DDC is not set
1188# CONFIG_FB_BOOT_VESA_SUPPORT is not set
1126CONFIG_FB_CFB_FILLRECT=y 1189CONFIG_FB_CFB_FILLRECT=y
1127CONFIG_FB_CFB_COPYAREA=y 1190CONFIG_FB_CFB_COPYAREA=y
1128CONFIG_FB_CFB_IMAGEBLIT=y 1191CONFIG_FB_CFB_IMAGEBLIT=y
1192# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
1129# CONFIG_FB_SYS_FILLRECT is not set 1193# CONFIG_FB_SYS_FILLRECT is not set
1130# CONFIG_FB_SYS_COPYAREA is not set 1194# CONFIG_FB_SYS_COPYAREA is not set
1131# CONFIG_FB_SYS_IMAGEBLIT is not set 1195# CONFIG_FB_SYS_IMAGEBLIT is not set
1196# CONFIG_FB_FOREIGN_ENDIAN is not set
1132# CONFIG_FB_SYS_FOPS is not set 1197# CONFIG_FB_SYS_FOPS is not set
1133CONFIG_FB_DEFERRED_IO=y
1134# CONFIG_FB_SVGALIB is not set 1198# CONFIG_FB_SVGALIB is not set
1135# CONFIG_FB_MACMODES is not set 1199# CONFIG_FB_MACMODES is not set
1136CONFIG_FB_BACKLIGHT=y 1200CONFIG_FB_BACKLIGHT=y
@@ -1158,16 +1222,30 @@ CONFIG_FB_RADEON_BACKLIGHT=y
1158# CONFIG_FB_S3 is not set 1222# CONFIG_FB_S3 is not set
1159# CONFIG_FB_SAVAGE is not set 1223# CONFIG_FB_SAVAGE is not set
1160# CONFIG_FB_SIS is not set 1224# CONFIG_FB_SIS is not set
1225# CONFIG_FB_VIA is not set
1161# CONFIG_FB_NEOMAGIC is not set 1226# CONFIG_FB_NEOMAGIC is not set
1162# CONFIG_FB_KYRO is not set 1227# CONFIG_FB_KYRO is not set
1163# CONFIG_FB_3DFX is not set 1228# CONFIG_FB_3DFX is not set
1164# CONFIG_FB_VOODOO1 is not set 1229# CONFIG_FB_VOODOO1 is not set
1165# CONFIG_FB_SMIVGX is not set
1166# CONFIG_FB_VT8623 is not set 1230# CONFIG_FB_VT8623 is not set
1167# CONFIG_FB_TRIDENT is not set 1231# CONFIG_FB_TRIDENT is not set
1168# CONFIG_FB_ARK is not set 1232# CONFIG_FB_ARK is not set
1169# CONFIG_FB_PM3 is not set 1233# CONFIG_FB_PM3 is not set
1234# CONFIG_FB_CARMINE is not set
1170# CONFIG_FB_VIRTUAL is not set 1235# CONFIG_FB_VIRTUAL is not set
1236# CONFIG_FB_METRONOME is not set
1237# CONFIG_FB_MB862XX is not set
1238CONFIG_BACKLIGHT_LCD_SUPPORT=y
1239CONFIG_LCD_CLASS_DEVICE=m
1240# CONFIG_LCD_ILI9320 is not set
1241# CONFIG_LCD_PLATFORM is not set
1242CONFIG_BACKLIGHT_CLASS_DEVICE=y
1243# CONFIG_BACKLIGHT_CORGI is not set
1244
1245#
1246# Display device support
1247#
1248# CONFIG_DISPLAY_SUPPORT is not set
1171 1249
1172# 1250#
1173# Console display driver support 1251# Console display driver support
@@ -1176,20 +1254,14 @@ CONFIG_FB_RADEON_BACKLIGHT=y
1176# CONFIG_MDA_CONSOLE is not set 1254# CONFIG_MDA_CONSOLE is not set
1177CONFIG_DUMMY_CONSOLE=y 1255CONFIG_DUMMY_CONSOLE=y
1178CONFIG_FRAMEBUFFER_CONSOLE=y 1256CONFIG_FRAMEBUFFER_CONSOLE=y
1257# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
1179# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 1258# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
1180# CONFIG_FONTS is not set 1259# CONFIG_FONTS is not set
1181CONFIG_FONT_8x8=y 1260CONFIG_FONT_8x8=y
1182CONFIG_FONT_8x16=y 1261CONFIG_FONT_8x16=y
1183# CONFIG_LOGO is not set 1262# CONFIG_LOGO is not set
1184
1185#
1186# Sound
1187#
1188CONFIG_SOUND=y 1263CONFIG_SOUND=y
1189 1264CONFIG_SOUND_OSS_CORE=y
1190#
1191# Advanced Linux Sound Architecture
1192#
1193CONFIG_SND=m 1265CONFIG_SND=m
1194CONFIG_SND_TIMER=m 1266CONFIG_SND_TIMER=m
1195CONFIG_SND_PCM=m 1267CONFIG_SND_PCM=m
@@ -1201,28 +1273,22 @@ CONFIG_SND_MIXER_OSS=m
1201CONFIG_SND_PCM_OSS=m 1273CONFIG_SND_PCM_OSS=m
1202CONFIG_SND_PCM_OSS_PLUGINS=y 1274CONFIG_SND_PCM_OSS_PLUGINS=y
1203CONFIG_SND_SEQUENCER_OSS=y 1275CONFIG_SND_SEQUENCER_OSS=y
1204CONFIG_SND_RTCTIMER=m
1205CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
1206# CONFIG_SND_DYNAMIC_MINORS is not set 1276# CONFIG_SND_DYNAMIC_MINORS is not set
1207CONFIG_SND_SUPPORT_OLD_API=y 1277CONFIG_SND_SUPPORT_OLD_API=y
1208CONFIG_SND_VERBOSE_PROCFS=y 1278CONFIG_SND_VERBOSE_PROCFS=y
1209# CONFIG_SND_VERBOSE_PRINTK is not set 1279# CONFIG_SND_VERBOSE_PRINTK is not set
1210# CONFIG_SND_DEBUG is not set 1280# CONFIG_SND_DEBUG is not set
1211 1281CONFIG_SND_VMASTER=y
1212#
1213# Generic devices
1214#
1215CONFIG_SND_MPU401_UART=m 1282CONFIG_SND_MPU401_UART=m
1216CONFIG_SND_AC97_CODEC=m 1283CONFIG_SND_AC97_CODEC=m
1284CONFIG_SND_DRIVERS=y
1217# CONFIG_SND_DUMMY is not set 1285# CONFIG_SND_DUMMY is not set
1218# CONFIG_SND_VIRMIDI is not set 1286# CONFIG_SND_VIRMIDI is not set
1219# CONFIG_SND_MTPAV is not set 1287# CONFIG_SND_MTPAV is not set
1220# CONFIG_SND_SERIAL_U16550 is not set 1288# CONFIG_SND_SERIAL_U16550 is not set
1221# CONFIG_SND_MPU401 is not set 1289# CONFIG_SND_MPU401 is not set
1222 1290# CONFIG_SND_AC97_POWER_SAVE is not set
1223# 1291CONFIG_SND_PCI=y
1224# PCI devices
1225#
1226# CONFIG_SND_AD1889 is not set 1292# CONFIG_SND_AD1889 is not set
1227# CONFIG_SND_ALS300 is not set 1293# CONFIG_SND_ALS300 is not set
1228# CONFIG_SND_ALI5451 is not set 1294# CONFIG_SND_ALI5451 is not set
@@ -1231,10 +1297,12 @@ CONFIG_SND_AC97_CODEC=m
1231# CONFIG_SND_AU8810 is not set 1297# CONFIG_SND_AU8810 is not set
1232# CONFIG_SND_AU8820 is not set 1298# CONFIG_SND_AU8820 is not set
1233# CONFIG_SND_AU8830 is not set 1299# CONFIG_SND_AU8830 is not set
1300# CONFIG_SND_AW2 is not set
1234# CONFIG_SND_AZT3328 is not set 1301# CONFIG_SND_AZT3328 is not set
1235# CONFIG_SND_BT87X is not set 1302# CONFIG_SND_BT87X is not set
1236# CONFIG_SND_CA0106 is not set 1303# CONFIG_SND_CA0106 is not set
1237# CONFIG_SND_CMIPCI is not set 1304# CONFIG_SND_CMIPCI is not set
1305# CONFIG_SND_OXYGEN is not set
1238# CONFIG_SND_CS4281 is not set 1306# CONFIG_SND_CS4281 is not set
1239# CONFIG_SND_CS46XX is not set 1307# CONFIG_SND_CS46XX is not set
1240# CONFIG_SND_DARLA20 is not set 1308# CONFIG_SND_DARLA20 is not set
@@ -1259,6 +1327,7 @@ CONFIG_SND_AC97_CODEC=m
1259# CONFIG_SND_HDA_INTEL is not set 1327# CONFIG_SND_HDA_INTEL is not set
1260# CONFIG_SND_HDSP is not set 1328# CONFIG_SND_HDSP is not set
1261# CONFIG_SND_HDSPM is not set 1329# CONFIG_SND_HDSPM is not set
1330# CONFIG_SND_HIFIER is not set
1262# CONFIG_SND_ICE1712 is not set 1331# CONFIG_SND_ICE1712 is not set
1263# CONFIG_SND_ICE1724 is not set 1332# CONFIG_SND_ICE1724 is not set
1264# CONFIG_SND_INTEL8X0 is not set 1333# CONFIG_SND_INTEL8X0 is not set
@@ -1276,43 +1345,26 @@ CONFIG_SND_AC97_CODEC=m
1276# CONFIG_SND_TRIDENT is not set 1345# CONFIG_SND_TRIDENT is not set
1277CONFIG_SND_VIA82XX=m 1346CONFIG_SND_VIA82XX=m
1278# CONFIG_SND_VIA82XX_MODEM is not set 1347# CONFIG_SND_VIA82XX_MODEM is not set
1348# CONFIG_SND_VIRTUOSO is not set
1279# CONFIG_SND_VX222 is not set 1349# CONFIG_SND_VX222 is not set
1280# CONFIG_SND_YMFPCI is not set 1350# CONFIG_SND_YMFPCI is not set
1281# CONFIG_SND_AC97_POWER_SAVE is not set 1351CONFIG_SND_MIPS=y
1282 1352CONFIG_SND_USB=y
1283#
1284# ALSA MIPS devices
1285#
1286
1287#
1288# USB devices
1289#
1290# CONFIG_SND_USB_AUDIO is not set 1353# CONFIG_SND_USB_AUDIO is not set
1291# CONFIG_SND_USB_CAIAQ is not set 1354# CONFIG_SND_USB_CAIAQ is not set
1292
1293#
1294# System on Chip audio support
1295#
1296# CONFIG_SND_SOC is not set 1355# CONFIG_SND_SOC is not set
1297
1298#
1299# Open Sound System
1300#
1301# CONFIG_SOUND_PRIME is not set 1356# CONFIG_SOUND_PRIME is not set
1302CONFIG_AC97_BUS=m 1357CONFIG_AC97_BUS=m
1303 1358CONFIG_HID_SUPPORT=y
1304#
1305# HID Devices
1306#
1307CONFIG_HID=y 1359CONFIG_HID=y
1308# CONFIG_HID_DEBUG is not set 1360# CONFIG_HID_DEBUG is not set
1361CONFIG_HIDRAW=y
1309 1362
1310# 1363#
1311# USB Input Devices 1364# USB Input Devices
1312# 1365#
1313CONFIG_USB_HID=m 1366CONFIG_USB_HID=m
1314# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1367CONFIG_HID_PID=y
1315# CONFIG_HID_FF is not set
1316CONFIG_USB_HIDDEV=y 1368CONFIG_USB_HIDDEV=y
1317 1369
1318# 1370#
@@ -1322,13 +1374,39 @@ CONFIG_USB_HIDDEV=y
1322# CONFIG_USB_MOUSE is not set 1374# CONFIG_USB_MOUSE is not set
1323 1375
1324# 1376#
1325# USB support 1377# Special HID drivers
1326# 1378#
1379CONFIG_HID_COMPAT=y
1380CONFIG_HID_A4TECH=m
1381CONFIG_HID_APPLE=m
1382CONFIG_HID_BELKIN=m
1383CONFIG_HID_BRIGHT=m
1384CONFIG_HID_CHERRY=m
1385CONFIG_HID_CHICONY=m
1386CONFIG_HID_CYPRESS=m
1387CONFIG_HID_DELL=m
1388CONFIG_HID_EZKEY=m
1389CONFIG_HID_GYRATION=m
1390CONFIG_HID_LOGITECH=m
1391CONFIG_LOGITECH_FF=y
1392CONFIG_LOGIRUMBLEPAD2_FF=y
1393CONFIG_HID_MICROSOFT=m
1394CONFIG_HID_MONTEREY=m
1395CONFIG_HID_PANTHERLORD=m
1396# CONFIG_PANTHERLORD_FF is not set
1397CONFIG_HID_PETALYNX=m
1398CONFIG_HID_SAMSUNG=m
1399CONFIG_HID_SONY=m
1400CONFIG_HID_SUNPLUS=m
1401# CONFIG_THRUSTMASTER_FF is not set
1402CONFIG_ZEROPLUS_FF=m
1403CONFIG_USB_SUPPORT=y
1327CONFIG_USB_ARCH_HAS_HCD=y 1404CONFIG_USB_ARCH_HAS_HCD=y
1328CONFIG_USB_ARCH_HAS_OHCI=y 1405CONFIG_USB_ARCH_HAS_OHCI=y
1329CONFIG_USB_ARCH_HAS_EHCI=y 1406CONFIG_USB_ARCH_HAS_EHCI=y
1330CONFIG_USB=y 1407CONFIG_USB=y
1331# CONFIG_USB_DEBUG is not set 1408# CONFIG_USB_DEBUG is not set
1409CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
1332 1410
1333# 1411#
1334# Miscellaneous USB options 1412# Miscellaneous USB options
@@ -1338,35 +1416,46 @@ CONFIG_USB_DEVICEFS=y
1338# CONFIG_USB_DYNAMIC_MINORS is not set 1416# CONFIG_USB_DYNAMIC_MINORS is not set
1339# CONFIG_USB_SUSPEND is not set 1417# CONFIG_USB_SUSPEND is not set
1340# CONFIG_USB_OTG is not set 1418# CONFIG_USB_OTG is not set
1419CONFIG_USB_OTG_WHITELIST=y
1420# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1421# CONFIG_USB_MON is not set
1422# CONFIG_USB_WUSB is not set
1423CONFIG_USB_WUSB_CBAF=m
1424# CONFIG_USB_WUSB_CBAF_DEBUG is not set
1341 1425
1342# 1426#
1343# USB Host Controller Drivers 1427# USB Host Controller Drivers
1344# 1428#
1429CONFIG_USB_C67X00_HCD=m
1345CONFIG_USB_EHCI_HCD=y 1430CONFIG_USB_EHCI_HCD=y
1346CONFIG_USB_EHCI_SPLIT_ISO=y
1347CONFIG_USB_EHCI_ROOT_HUB_TT=y 1431CONFIG_USB_EHCI_ROOT_HUB_TT=y
1348CONFIG_USB_EHCI_TT_NEWSCHED=y 1432CONFIG_USB_EHCI_TT_NEWSCHED=y
1349# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
1350# CONFIG_USB_ISP116X_HCD is not set 1433# CONFIG_USB_ISP116X_HCD is not set
1434CONFIG_USB_ISP1760_HCD=m
1351CONFIG_USB_OHCI_HCD=y 1435CONFIG_USB_OHCI_HCD=y
1352# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1436# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1353# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 1437# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
1354CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1438CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1355CONFIG_USB_UHCI_HCD=m 1439CONFIG_USB_UHCI_HCD=m
1356# CONFIG_USB_SL811_HCD is not set 1440# CONFIG_USB_SL811_HCD is not set
1441CONFIG_USB_R8A66597_HCD=m
1442# CONFIG_USB_WHCI_HCD is not set
1443# CONFIG_USB_HWA_HCD is not set
1357 1444
1358# 1445#
1359# USB Device Class drivers 1446# USB Device Class drivers
1360# 1447#
1361CONFIG_USB_ACM=y 1448CONFIG_USB_ACM=y
1362CONFIG_USB_PRINTER=y 1449CONFIG_USB_PRINTER=y
1450CONFIG_USB_WDM=m
1451CONFIG_USB_TMC=m
1363 1452
1364# 1453#
1365# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1454# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1366# 1455#
1367 1456
1368# 1457#
1369# may also be needed; see USB_STORAGE Help for more information 1458# see USB_STORAGE Help for more information
1370# 1459#
1371CONFIG_USB_STORAGE=y 1460CONFIG_USB_STORAGE=y
1372# CONFIG_USB_STORAGE_DEBUG is not set 1461# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1379,7 +1468,9 @@ CONFIG_USB_STORAGE=y
1379# CONFIG_USB_STORAGE_SDDR55 is not set 1468# CONFIG_USB_STORAGE_SDDR55 is not set
1380# CONFIG_USB_STORAGE_JUMPSHOT is not set 1469# CONFIG_USB_STORAGE_JUMPSHOT is not set
1381# CONFIG_USB_STORAGE_ALAUDA is not set 1470# CONFIG_USB_STORAGE_ALAUDA is not set
1471CONFIG_USB_STORAGE_ONETOUCH=y
1382# CONFIG_USB_STORAGE_KARMA is not set 1472# CONFIG_USB_STORAGE_KARMA is not set
1473CONFIG_USB_STORAGE_CYPRESS_ATACB=y
1383CONFIG_USB_LIBUSUAL=y 1474CONFIG_USB_LIBUSUAL=y
1384 1475
1385# 1476#
@@ -1387,15 +1478,10 @@ CONFIG_USB_LIBUSUAL=y
1387# 1478#
1388# CONFIG_USB_MDC800 is not set 1479# CONFIG_USB_MDC800 is not set
1389# CONFIG_USB_MICROTEK is not set 1480# CONFIG_USB_MICROTEK is not set
1390# CONFIG_USB_MON is not set
1391 1481
1392# 1482#
1393# USB port drivers 1483# USB port drivers
1394# 1484#
1395
1396#
1397# USB Serial Converter support
1398#
1399# CONFIG_USB_SERIAL is not set 1485# CONFIG_USB_SERIAL is not set
1400 1486
1401# 1487#
@@ -1404,7 +1490,7 @@ CONFIG_USB_LIBUSUAL=y
1404# CONFIG_USB_EMI62 is not set 1490# CONFIG_USB_EMI62 is not set
1405# CONFIG_USB_EMI26 is not set 1491# CONFIG_USB_EMI26 is not set
1406# CONFIG_USB_ADUTUX is not set 1492# CONFIG_USB_ADUTUX is not set
1407# CONFIG_USB_AUERSWALD is not set 1493CONFIG_USB_SEVSEG=m
1408# CONFIG_USB_RIO500 is not set 1494# CONFIG_USB_RIO500 is not set
1409# CONFIG_USB_LEGOTOWER is not set 1495# CONFIG_USB_LEGOTOWER is not set
1410# CONFIG_USB_LCD is not set 1496# CONFIG_USB_LCD is not set
@@ -1421,56 +1507,75 @@ CONFIG_USB_LIBUSUAL=y
1421# CONFIG_USB_TRANCEVIBRATOR is not set 1507# CONFIG_USB_TRANCEVIBRATOR is not set
1422# CONFIG_USB_IOWARRIOR is not set 1508# CONFIG_USB_IOWARRIOR is not set
1423# CONFIG_USB_TEST is not set 1509# CONFIG_USB_TEST is not set
1424 1510CONFIG_USB_ISIGHTFW=m
1425# 1511CONFIG_USB_VST=m
1426# USB DSL modem support
1427#
1428
1429#
1430# USB Gadget Support
1431#
1432# CONFIG_USB_GADGET is not set 1512# CONFIG_USB_GADGET is not set
1513# CONFIG_UWB is not set
1433# CONFIG_MMC is not set 1514# CONFIG_MMC is not set
1434 1515# CONFIG_MEMSTICK is not set
1435#
1436# LED devices
1437#
1438# CONFIG_NEW_LEDS is not set 1516# CONFIG_NEW_LEDS is not set
1439 1517# CONFIG_ACCESSIBILITY is not set
1440#
1441# LED drivers
1442#
1443
1444#
1445# LED Triggers
1446#
1447
1448#
1449# InfiniBand support
1450#
1451# CONFIG_INFINIBAND is not set 1518# CONFIG_INFINIBAND is not set
1519CONFIG_RTC_LIB=y
1520CONFIG_RTC_CLASS=m
1452 1521
1453# 1522#
1454# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 1523# RTC interfaces
1455# 1524#
1525CONFIG_RTC_INTF_SYSFS=y
1526CONFIG_RTC_INTF_PROC=y
1527CONFIG_RTC_INTF_DEV=y
1528CONFIG_RTC_INTF_DEV_UIE_EMUL=y
1529# CONFIG_RTC_DRV_TEST is not set
1456 1530
1457# 1531#
1458# Real Time Clock 1532# I2C RTC drivers
1459# 1533#
1460# CONFIG_RTC_CLASS is not set 1534# CONFIG_RTC_DRV_DS1307 is not set
1535# CONFIG_RTC_DRV_DS1374 is not set
1536# CONFIG_RTC_DRV_DS1672 is not set
1537# CONFIG_RTC_DRV_MAX6900 is not set
1538# CONFIG_RTC_DRV_RS5C372 is not set
1539# CONFIG_RTC_DRV_ISL1208 is not set
1540# CONFIG_RTC_DRV_X1205 is not set
1541# CONFIG_RTC_DRV_PCF8563 is not set
1542# CONFIG_RTC_DRV_PCF8583 is not set
1543# CONFIG_RTC_DRV_M41T80 is not set
1544# CONFIG_RTC_DRV_S35390A is not set
1545# CONFIG_RTC_DRV_FM3130 is not set
1546# CONFIG_RTC_DRV_RX8581 is not set
1461 1547
1462# 1548#
1463# DMA Engine support 1549# SPI RTC drivers
1464# 1550#
1465# CONFIG_DMA_ENGINE is not set
1466 1551
1467# 1552#
1468# DMA Clients 1553# Platform RTC drivers
1469# 1554#
1555CONFIG_RTC_DRV_CMOS=m
1556# CONFIG_RTC_DRV_DS1286 is not set
1557# CONFIG_RTC_DRV_DS1511 is not set
1558# CONFIG_RTC_DRV_DS1553 is not set
1559# CONFIG_RTC_DRV_DS1742 is not set
1560# CONFIG_RTC_DRV_STK17TA8 is not set
1561# CONFIG_RTC_DRV_M48T86 is not set
1562# CONFIG_RTC_DRV_M48T35 is not set
1563# CONFIG_RTC_DRV_M48T59 is not set
1564# CONFIG_RTC_DRV_BQ4802 is not set
1565# CONFIG_RTC_DRV_V3020 is not set
1470 1566
1471# 1567#
1472# DMA Devices 1568# on-CPU RTC drivers
1473# 1569#
1570# CONFIG_DMADEVICES is not set
1571CONFIG_UIO=m
1572CONFIG_UIO_CIF=m
1573# CONFIG_UIO_PDRV is not set
1574# CONFIG_UIO_PDRV_GENIRQ is not set
1575# CONFIG_UIO_SMX is not set
1576# CONFIG_UIO_SERCOS3 is not set
1577# CONFIG_STAGING is not set
1578CONFIG_STAGING_EXCLUDE_BUILD=y
1474 1579
1475# 1580#
1476# File systems 1581# File systems
@@ -1478,27 +1583,31 @@ CONFIG_USB_LIBUSUAL=y
1478CONFIG_EXT2_FS=y 1583CONFIG_EXT2_FS=y
1479# CONFIG_EXT2_FS_XATTR is not set 1584# CONFIG_EXT2_FS_XATTR is not set
1480CONFIG_EXT2_FS_XIP=y 1585CONFIG_EXT2_FS_XIP=y
1481CONFIG_FS_XIP=y
1482CONFIG_EXT3_FS=y 1586CONFIG_EXT3_FS=y
1483# CONFIG_EXT3_FS_XATTR is not set 1587# CONFIG_EXT3_FS_XATTR is not set
1484# CONFIG_EXT4DEV_FS is not set 1588CONFIG_EXT4_FS=m
1589CONFIG_EXT4DEV_COMPAT=y
1590CONFIG_EXT4_FS_XATTR=y
1591CONFIG_EXT4_FS_POSIX_ACL=y
1592CONFIG_EXT4_FS_SECURITY=y
1593CONFIG_FS_XIP=y
1485CONFIG_JBD=y 1594CONFIG_JBD=y
1486# CONFIG_JBD_DEBUG is not set 1595CONFIG_JBD2=m
1596CONFIG_FS_MBCACHE=m
1487CONFIG_REISERFS_FS=m 1597CONFIG_REISERFS_FS=m
1488# CONFIG_REISERFS_CHECK is not set 1598# CONFIG_REISERFS_CHECK is not set
1489# CONFIG_REISERFS_PROC_INFO is not set 1599# CONFIG_REISERFS_PROC_INFO is not set
1490# CONFIG_REISERFS_FS_XATTR is not set 1600# CONFIG_REISERFS_FS_XATTR is not set
1491# CONFIG_JFS_FS is not set 1601# CONFIG_JFS_FS is not set
1492CONFIG_FS_POSIX_ACL=y 1602CONFIG_FS_POSIX_ACL=y
1603CONFIG_FILE_LOCKING=y
1493# CONFIG_XFS_FS is not set 1604# CONFIG_XFS_FS is not set
1494# CONFIG_GFS2_FS is not set 1605# CONFIG_GFS2_FS is not set
1495# CONFIG_OCFS2_FS is not set 1606# CONFIG_OCFS2_FS is not set
1496# CONFIG_MINIX_FS is not set 1607CONFIG_DNOTIFY=y
1497# CONFIG_ROMFS_FS is not set
1498CONFIG_INOTIFY=y 1608CONFIG_INOTIFY=y
1499CONFIG_INOTIFY_USER=y 1609CONFIG_INOTIFY_USER=y
1500# CONFIG_QUOTA is not set 1610# CONFIG_QUOTA is not set
1501CONFIG_DNOTIFY=y
1502CONFIG_AUTOFS_FS=y 1611CONFIG_AUTOFS_FS=y
1503CONFIG_AUTOFS4_FS=y 1612CONFIG_AUTOFS4_FS=y
1504CONFIG_FUSE_FS=y 1613CONFIG_FUSE_FS=y
@@ -1530,11 +1639,11 @@ CONFIG_NTFS_RW=y
1530CONFIG_PROC_FS=y 1639CONFIG_PROC_FS=y
1531CONFIG_PROC_KCORE=y 1640CONFIG_PROC_KCORE=y
1532CONFIG_PROC_SYSCTL=y 1641CONFIG_PROC_SYSCTL=y
1642CONFIG_PROC_PAGE_MONITOR=y
1533CONFIG_SYSFS=y 1643CONFIG_SYSFS=y
1534CONFIG_TMPFS=y 1644CONFIG_TMPFS=y
1535# CONFIG_TMPFS_POSIX_ACL is not set 1645# CONFIG_TMPFS_POSIX_ACL is not set
1536# CONFIG_HUGETLB_PAGE is not set 1646# CONFIG_HUGETLB_PAGE is not set
1537CONFIG_RAMFS=y
1538# CONFIG_CONFIGFS_FS is not set 1647# CONFIG_CONFIGFS_FS is not set
1539 1648
1540# 1649#
@@ -1550,25 +1659,23 @@ CONFIG_RAMFS=y
1550# CONFIG_JFFS2_FS is not set 1659# CONFIG_JFFS2_FS is not set
1551# CONFIG_CRAMFS is not set 1660# CONFIG_CRAMFS is not set
1552# CONFIG_VXFS_FS is not set 1661# CONFIG_VXFS_FS is not set
1662# CONFIG_MINIX_FS is not set
1663CONFIG_OMFS_FS=m
1553# CONFIG_HPFS_FS is not set 1664# CONFIG_HPFS_FS is not set
1554# CONFIG_QNX4FS_FS is not set 1665# CONFIG_QNX4FS_FS is not set
1666# CONFIG_ROMFS_FS is not set
1555# CONFIG_SYSV_FS is not set 1667# CONFIG_SYSV_FS is not set
1556# CONFIG_UFS_FS is not set 1668# CONFIG_UFS_FS is not set
1557 1669CONFIG_NETWORK_FILESYSTEMS=y
1558#
1559# Network File Systems
1560#
1561CONFIG_NFS_FS=m 1670CONFIG_NFS_FS=m
1562CONFIG_NFS_V3=y 1671CONFIG_NFS_V3=y
1563CONFIG_NFS_V3_ACL=y 1672CONFIG_NFS_V3_ACL=y
1564CONFIG_NFS_V4=y 1673CONFIG_NFS_V4=y
1565CONFIG_NFS_DIRECTIO=y
1566CONFIG_NFSD=m 1674CONFIG_NFSD=m
1567CONFIG_NFSD_V2_ACL=y 1675CONFIG_NFSD_V2_ACL=y
1568CONFIG_NFSD_V3=y 1676CONFIG_NFSD_V3=y
1569CONFIG_NFSD_V3_ACL=y 1677CONFIG_NFSD_V3_ACL=y
1570CONFIG_NFSD_V4=y 1678CONFIG_NFSD_V4=y
1571CONFIG_NFSD_TCP=y
1572CONFIG_LOCKD=m 1679CONFIG_LOCKD=m
1573CONFIG_LOCKD_V4=y 1680CONFIG_LOCKD_V4=y
1574CONFIG_EXPORTFS=m 1681CONFIG_EXPORTFS=m
@@ -1576,7 +1683,7 @@ CONFIG_NFS_ACL_SUPPORT=m
1576CONFIG_NFS_COMMON=y 1683CONFIG_NFS_COMMON=y
1577CONFIG_SUNRPC=m 1684CONFIG_SUNRPC=m
1578CONFIG_SUNRPC_GSS=m 1685CONFIG_SUNRPC_GSS=m
1579# CONFIG_SUNRPC_BIND34 is not set 1686# CONFIG_SUNRPC_REGISTER_V4 is not set
1580CONFIG_RPCSEC_GSS_KRB5=m 1687CONFIG_RPCSEC_GSS_KRB5=m
1581# CONFIG_RPCSEC_GSS_SPKM3 is not set 1688# CONFIG_RPCSEC_GSS_SPKM3 is not set
1582CONFIG_SMB_FS=m 1689CONFIG_SMB_FS=m
@@ -1616,10 +1723,6 @@ CONFIG_MSDOS_PARTITION=y
1616# CONFIG_KARMA_PARTITION is not set 1723# CONFIG_KARMA_PARTITION is not set
1617# CONFIG_EFI_PARTITION is not set 1724# CONFIG_EFI_PARTITION is not set
1618# CONFIG_SYSV68_PARTITION is not set 1725# CONFIG_SYSV68_PARTITION is not set
1619
1620#
1621# Native Language Support
1622#
1623CONFIG_NLS=y 1726CONFIG_NLS=y
1624CONFIG_NLS_DEFAULT="utf8" 1727CONFIG_NLS_DEFAULT="utf8"
1625# CONFIG_NLS_CODEPAGE_437 is not set 1728# CONFIG_NLS_CODEPAGE_437 is not set
@@ -1660,30 +1763,31 @@ CONFIG_NLS_ISO8859_1=y
1660# CONFIG_NLS_KOI8_R is not set 1763# CONFIG_NLS_KOI8_R is not set
1661# CONFIG_NLS_KOI8_U is not set 1764# CONFIG_NLS_KOI8_U is not set
1662CONFIG_NLS_UTF8=y 1765CONFIG_NLS_UTF8=y
1663
1664#
1665# Distributed Lock Manager
1666#
1667# CONFIG_DLM is not set 1766# CONFIG_DLM is not set
1668 1767
1669# 1768#
1670# Profiling support
1671#
1672CONFIG_PROFILING=y
1673CONFIG_OPROFILE=m
1674
1675#
1676# Kernel hacking 1769# Kernel hacking
1677# 1770#
1678CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1771CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1679# CONFIG_PRINTK_TIME is not set 1772# CONFIG_PRINTK_TIME is not set
1773CONFIG_ENABLE_WARN_DEPRECATED=y
1680# CONFIG_ENABLE_MUST_CHECK is not set 1774# CONFIG_ENABLE_MUST_CHECK is not set
1775CONFIG_FRAME_WARN=2048
1681# CONFIG_MAGIC_SYSRQ is not set 1776# CONFIG_MAGIC_SYSRQ is not set
1682# CONFIG_UNUSED_SYMBOLS is not set 1777# CONFIG_UNUSED_SYMBOLS is not set
1683# CONFIG_DEBUG_FS is not set 1778# CONFIG_DEBUG_FS is not set
1684# CONFIG_HEADERS_CHECK is not set 1779# CONFIG_HEADERS_CHECK is not set
1685# CONFIG_DEBUG_KERNEL is not set 1780# CONFIG_DEBUG_KERNEL is not set
1686CONFIG_CROSSCOMPILE=y 1781# CONFIG_DEBUG_MEMORY_INIT is not set
1782# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1783CONFIG_SYSCTL_SYSCALL_CHECK=y
1784
1785#
1786# Tracers
1787#
1788CONFIG_DYNAMIC_PRINTK_DEBUG=y
1789# CONFIG_SAMPLES is not set
1790CONFIG_HAVE_ARCH_KGDB=y
1687CONFIG_CMDLINE="" 1791CONFIG_CMDLINE=""
1688 1792
1689# 1793#
@@ -1691,64 +1795,113 @@ CONFIG_CMDLINE=""
1691# 1795#
1692# CONFIG_KEYS is not set 1796# CONFIG_KEYS is not set
1693# CONFIG_SECURITY is not set 1797# CONFIG_SECURITY is not set
1798# CONFIG_SECURITYFS is not set
1799CONFIG_SECURITY_FILE_CAPABILITIES=y
1800CONFIG_CRYPTO=y
1694 1801
1695# 1802#
1696# Cryptographic options 1803# Crypto core or helper
1697# 1804#
1698CONFIG_CRYPTO=y 1805CONFIG_CRYPTO_FIPS=y
1699CONFIG_CRYPTO_ALGAPI=y 1806CONFIG_CRYPTO_ALGAPI=y
1700CONFIG_CRYPTO_BLKCIPHER=m 1807CONFIG_CRYPTO_AEAD=y
1808CONFIG_CRYPTO_BLKCIPHER=y
1701CONFIG_CRYPTO_HASH=y 1809CONFIG_CRYPTO_HASH=y
1810CONFIG_CRYPTO_RNG=y
1702CONFIG_CRYPTO_MANAGER=y 1811CONFIG_CRYPTO_MANAGER=y
1812CONFIG_CRYPTO_GF128MUL=m
1813# CONFIG_CRYPTO_NULL is not set
1814# CONFIG_CRYPTO_CRYPTD is not set
1815CONFIG_CRYPTO_AUTHENC=m
1816# CONFIG_CRYPTO_TEST is not set
1817
1818#
1819# Authenticated Encryption with Associated Data
1820#
1821CONFIG_CRYPTO_CCM=m
1822CONFIG_CRYPTO_GCM=m
1823CONFIG_CRYPTO_SEQIV=m
1824
1825#
1826# Block modes
1827#
1828CONFIG_CRYPTO_CBC=m
1829CONFIG_CRYPTO_CTR=m
1830CONFIG_CRYPTO_CTS=m
1831CONFIG_CRYPTO_ECB=m
1832# CONFIG_CRYPTO_LRW is not set
1833CONFIG_CRYPTO_PCBC=m
1834CONFIG_CRYPTO_XTS=m
1835
1836#
1837# Hash modes
1838#
1703CONFIG_CRYPTO_HMAC=y 1839CONFIG_CRYPTO_HMAC=y
1704# CONFIG_CRYPTO_XCBC is not set 1840# CONFIG_CRYPTO_XCBC is not set
1705# CONFIG_CRYPTO_NULL is not set 1841
1842#
1843# Digest
1844#
1845# CONFIG_CRYPTO_CRC32C is not set
1706# CONFIG_CRYPTO_MD4 is not set 1846# CONFIG_CRYPTO_MD4 is not set
1707CONFIG_CRYPTO_MD5=m 1847CONFIG_CRYPTO_MD5=m
1848# CONFIG_CRYPTO_MICHAEL_MIC is not set
1849CONFIG_CRYPTO_RMD128=m
1850CONFIG_CRYPTO_RMD160=m
1851CONFIG_CRYPTO_RMD256=m
1852CONFIG_CRYPTO_RMD320=m
1708CONFIG_CRYPTO_SHA1=m 1853CONFIG_CRYPTO_SHA1=m
1709# CONFIG_CRYPTO_SHA256 is not set 1854# CONFIG_CRYPTO_SHA256 is not set
1710# CONFIG_CRYPTO_SHA512 is not set 1855# CONFIG_CRYPTO_SHA512 is not set
1711# CONFIG_CRYPTO_WP512 is not set
1712# CONFIG_CRYPTO_TGR192 is not set 1856# CONFIG_CRYPTO_TGR192 is not set
1713# CONFIG_CRYPTO_GF128MUL is not set 1857# CONFIG_CRYPTO_WP512 is not set
1714CONFIG_CRYPTO_ECB=m 1858
1715CONFIG_CRYPTO_CBC=m 1859#
1716CONFIG_CRYPTO_PCBC=m 1860# Ciphers
1717# CONFIG_CRYPTO_LRW is not set 1861#
1718# CONFIG_CRYPTO_CRYPTD is not set 1862CONFIG_CRYPTO_AES=m
1719CONFIG_CRYPTO_DES=m 1863# CONFIG_CRYPTO_ANUBIS is not set
1720# CONFIG_CRYPTO_FCRYPT is not set 1864CONFIG_CRYPTO_ARC4=m
1721# CONFIG_CRYPTO_BLOWFISH is not set 1865# CONFIG_CRYPTO_BLOWFISH is not set
1722# CONFIG_CRYPTO_TWOFISH is not set 1866# CONFIG_CRYPTO_CAMELLIA is not set
1723# CONFIG_CRYPTO_SERPENT is not set
1724# CONFIG_CRYPTO_AES is not set
1725# CONFIG_CRYPTO_CAST5 is not set 1867# CONFIG_CRYPTO_CAST5 is not set
1726# CONFIG_CRYPTO_CAST6 is not set 1868# CONFIG_CRYPTO_CAST6 is not set
1727# CONFIG_CRYPTO_TEA is not set 1869CONFIG_CRYPTO_DES=m
1728CONFIG_CRYPTO_ARC4=m 1870# CONFIG_CRYPTO_FCRYPT is not set
1729# CONFIG_CRYPTO_KHAZAD is not set 1871# CONFIG_CRYPTO_KHAZAD is not set
1730# CONFIG_CRYPTO_ANUBIS is not set 1872CONFIG_CRYPTO_SALSA20=m
1873CONFIG_CRYPTO_SEED=m
1874# CONFIG_CRYPTO_SERPENT is not set
1875# CONFIG_CRYPTO_TEA is not set
1876# CONFIG_CRYPTO_TWOFISH is not set
1877
1878#
1879# Compression
1880#
1731CONFIG_CRYPTO_DEFLATE=m 1881CONFIG_CRYPTO_DEFLATE=m
1732# CONFIG_CRYPTO_MICHAEL_MIC is not set 1882CONFIG_CRYPTO_LZO=m
1733# CONFIG_CRYPTO_CRC32C is not set
1734# CONFIG_CRYPTO_CAMELLIA is not set
1735# CONFIG_CRYPTO_TEST is not set
1736 1883
1737# 1884#
1738# Hardware crypto devices 1885# Random Number Generation
1739# 1886#
1887CONFIG_CRYPTO_ANSI_CPRNG=m
1888# CONFIG_CRYPTO_HW is not set
1740 1889
1741# 1890#
1742# Library routines 1891# Library routines
1743# 1892#
1744CONFIG_BITREVERSE=y 1893CONFIG_BITREVERSE=y
1745CONFIG_CRC_CCITT=y 1894CONFIG_CRC_CCITT=y
1746# CONFIG_CRC16 is not set 1895CONFIG_CRC16=m
1747# CONFIG_CRC_ITU_T is not set 1896# CONFIG_CRC_T10DIF is not set
1897CONFIG_CRC_ITU_T=m
1748CONFIG_CRC32=y 1898CONFIG_CRC32=y
1899CONFIG_CRC7=m
1749# CONFIG_LIBCRC32C is not set 1900# CONFIG_LIBCRC32C is not set
1750CONFIG_ZLIB_INFLATE=m 1901CONFIG_ZLIB_INFLATE=m
1751CONFIG_ZLIB_DEFLATE=m 1902CONFIG_ZLIB_DEFLATE=m
1903CONFIG_LZO_COMPRESS=m
1904CONFIG_LZO_DECOMPRESS=m
1752CONFIG_TEXTSEARCH=y 1905CONFIG_TEXTSEARCH=y
1753CONFIG_TEXTSEARCH_KMP=m 1906CONFIG_TEXTSEARCH_KMP=m
1754CONFIG_TEXTSEARCH_BM=m 1907CONFIG_TEXTSEARCH_BM=m
diff --git a/arch/mips/configs/ip22_defconfig b/arch/mips/configs/ip22_defconfig
index f719bf5e01aa..115822876417 100644
--- a/arch/mips/configs/ip22_defconfig
+++ b/arch/mips/configs/ip22_defconfig
@@ -1,30 +1,34 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc2 3# Linux kernel version: 2.6.28-rc6
4# Tue Aug 7 12:39:49 2007 4# Fri Nov 28 15:41:33 2008
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
8# 8#
9# Machine selection 9# Machine selection
10# 10#
11CONFIG_ZONE_DMA=y
12# CONFIG_MACH_ALCHEMY is not set 11# CONFIG_MACH_ALCHEMY is not set
13# CONFIG_BASLER_EXCITE is not set 12# CONFIG_BASLER_EXCITE is not set
13# CONFIG_BCM47XX is not set
14# CONFIG_MIPS_COBALT is not set 14# CONFIG_MIPS_COBALT is not set
15# CONFIG_MACH_DECSTATION is not set 15# CONFIG_MACH_DECSTATION is not set
16# CONFIG_MACH_JAZZ is not set 16# CONFIG_MACH_JAZZ is not set
17# CONFIG_LASAT is not set
17# CONFIG_LEMOTE_FULONG is not set 18# CONFIG_LEMOTE_FULONG is not set
18# CONFIG_MIPS_MALTA is not set 19# CONFIG_MIPS_MALTA is not set
19# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
20# CONFIG_MARKEINS is not set 21# CONFIG_MACH_EMMA is not set
21# CONFIG_MACH_VR41XX is not set 22# CONFIG_MACH_VR41XX is not set
23# CONFIG_NXP_STB220 is not set
24# CONFIG_NXP_STB225 is not set
22# CONFIG_PNX8550_JBS is not set 25# CONFIG_PNX8550_JBS is not set
23# CONFIG_PNX8550_STB810 is not set 26# CONFIG_PNX8550_STB810 is not set
24# CONFIG_PMC_MSP is not set 27# CONFIG_PMC_MSP is not set
25# CONFIG_PMC_YOSEMITE is not set 28# CONFIG_PMC_YOSEMITE is not set
26CONFIG_SGI_IP22=y 29CONFIG_SGI_IP22=y
27# CONFIG_SGI_IP27 is not set 30# CONFIG_SGI_IP27 is not set
31# CONFIG_SGI_IP28 is not set
28# CONFIG_SGI_IP32 is not set 32# CONFIG_SGI_IP32 is not set
29# CONFIG_SIBYTE_CRHINE is not set 33# CONFIG_SIBYTE_CRHINE is not set
30# CONFIG_SIBYTE_CARMEL is not set 34# CONFIG_SIBYTE_CARMEL is not set
@@ -35,34 +39,49 @@ CONFIG_SGI_IP22=y
35# CONFIG_SIBYTE_SENTOSA is not set 39# CONFIG_SIBYTE_SENTOSA is not set
36# CONFIG_SIBYTE_BIGSUR is not set 40# CONFIG_SIBYTE_BIGSUR is not set
37# CONFIG_SNI_RM is not set 41# CONFIG_SNI_RM is not set
38# CONFIG_TOSHIBA_JMR3927 is not set 42# CONFIG_MACH_TX39XX is not set
39# CONFIG_TOSHIBA_RBTX4927 is not set 43# CONFIG_MACH_TX49XX is not set
40# CONFIG_TOSHIBA_RBTX4938 is not set 44# CONFIG_MIKROTIK_RB532 is not set
41# CONFIG_WR_PPMC is not set 45# CONFIG_WR_PPMC is not set
42CONFIG_RWSEM_GENERIC_SPINLOCK=y 46CONFIG_RWSEM_GENERIC_SPINLOCK=y
43# CONFIG_ARCH_HAS_ILOG2_U32 is not set 47# CONFIG_ARCH_HAS_ILOG2_U32 is not set
44# CONFIG_ARCH_HAS_ILOG2_U64 is not set 48# CONFIG_ARCH_HAS_ILOG2_U64 is not set
49CONFIG_ARCH_SUPPORTS_OPROFILE=y
45CONFIG_GENERIC_FIND_NEXT_BIT=y 50CONFIG_GENERIC_FIND_NEXT_BIT=y
46CONFIG_GENERIC_HWEIGHT=y 51CONFIG_GENERIC_HWEIGHT=y
47CONFIG_GENERIC_CALIBRATE_DELAY=y 52CONFIG_GENERIC_CALIBRATE_DELAY=y
53CONFIG_GENERIC_CLOCKEVENTS=y
48CONFIG_GENERIC_TIME=y 54CONFIG_GENERIC_TIME=y
55CONFIG_GENERIC_CMOS_UPDATE=y
49CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 56CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
50# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set 57# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
51CONFIG_ARC=y 58CONFIG_ARC=y
59CONFIG_CEVT_R4K=y
60CONFIG_CSRC_R4K=y
52CONFIG_DMA_NONCOHERENT=y 61CONFIG_DMA_NONCOHERENT=y
53CONFIG_DMA_NEED_PCI_MAP_STATE=y 62CONFIG_DMA_NEED_PCI_MAP_STATE=y
54CONFIG_EARLY_PRINTK=y 63CONFIG_EARLY_PRINTK=y
55CONFIG_SYS_HAS_EARLY_PRINTK=y 64CONFIG_SYS_HAS_EARLY_PRINTK=y
65# CONFIG_HOTPLUG_CPU is not set
66CONFIG_I8259=y
56# CONFIG_NO_IOPORT is not set 67# CONFIG_NO_IOPORT is not set
68CONFIG_GENERIC_ISA_DMA=y
57CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y 69CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y
58CONFIG_CPU_BIG_ENDIAN=y 70CONFIG_CPU_BIG_ENDIAN=y
59# CONFIG_CPU_LITTLE_ENDIAN is not set 71# CONFIG_CPU_LITTLE_ENDIAN is not set
60CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 72CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
61CONFIG_IRQ_CPU=y 73CONFIG_IRQ_CPU=y
62CONFIG_SWAP_IO_SPACE=y 74CONFIG_SWAP_IO_SPACE=y
75CONFIG_SGI_HAS_INDYDOG=y
76CONFIG_SGI_HAS_HAL2=y
77CONFIG_SGI_HAS_SEEQ=y
78CONFIG_SGI_HAS_WD93=y
79CONFIG_SGI_HAS_ZILOG=y
80CONFIG_SGI_HAS_I8042=y
81CONFIG_DEFAULT_SGI_PARTITION=y
63CONFIG_ARC32=y 82CONFIG_ARC32=y
64CONFIG_BOOT_ELF32=y 83CONFIG_BOOT_ELF32=y
65CONFIG_MIPS_L1_CACHE_SHIFT=5 84CONFIG_MIPS_L1_CACHE_SHIFT=7
66CONFIG_ARC_CONSOLE=y 85CONFIG_ARC_CONSOLE=y
67CONFIG_ARC_PROMLIB=y 86CONFIG_ARC_PROMLIB=y
68 87
@@ -82,6 +101,7 @@ CONFIG_ARC_PROMLIB=y
82# CONFIG_CPU_TX49XX is not set 101# CONFIG_CPU_TX49XX is not set
83CONFIG_CPU_R5000=y 102CONFIG_CPU_R5000=y
84# CONFIG_CPU_R5432 is not set 103# CONFIG_CPU_R5432 is not set
104# CONFIG_CPU_R5500 is not set
85# CONFIG_CPU_R6000 is not set 105# CONFIG_CPU_R6000 is not set
86# CONFIG_CPU_NEVADA is not set 106# CONFIG_CPU_NEVADA is not set
87# CONFIG_CPU_R8000 is not set 107# CONFIG_CPU_R8000 is not set
@@ -115,18 +135,24 @@ CONFIG_CPU_HAS_SYNC=y
115CONFIG_GENERIC_HARDIRQS=y 135CONFIG_GENERIC_HARDIRQS=y
116CONFIG_GENERIC_IRQ_PROBE=y 136CONFIG_GENERIC_IRQ_PROBE=y
117CONFIG_ARCH_FLATMEM_ENABLE=y 137CONFIG_ARCH_FLATMEM_ENABLE=y
138CONFIG_ARCH_POPULATES_NODE_MAP=y
118CONFIG_SELECT_MEMORY_MODEL=y 139CONFIG_SELECT_MEMORY_MODEL=y
119CONFIG_FLATMEM_MANUAL=y 140CONFIG_FLATMEM_MANUAL=y
120# CONFIG_DISCONTIGMEM_MANUAL is not set 141# CONFIG_DISCONTIGMEM_MANUAL is not set
121# CONFIG_SPARSEMEM_MANUAL is not set 142# CONFIG_SPARSEMEM_MANUAL is not set
122CONFIG_FLATMEM=y 143CONFIG_FLATMEM=y
123CONFIG_FLAT_NODE_MEM_MAP=y 144CONFIG_FLAT_NODE_MEM_MAP=y
124# CONFIG_SPARSEMEM_STATIC is not set 145CONFIG_PAGEFLAGS_EXTENDED=y
125CONFIG_SPLIT_PTLOCK_CPUS=4 146CONFIG_SPLIT_PTLOCK_CPUS=4
126# CONFIG_RESOURCES_64BIT is not set 147# CONFIG_RESOURCES_64BIT is not set
127CONFIG_ZONE_DMA_FLAG=1 148# CONFIG_PHYS_ADDR_T_64BIT is not set
128CONFIG_BOUNCE=y 149CONFIG_ZONE_DMA_FLAG=0
129CONFIG_VIRT_TO_BUS=y 150CONFIG_VIRT_TO_BUS=y
151CONFIG_UNEVICTABLE_LRU=y
152CONFIG_TICK_ONESHOT=y
153CONFIG_NO_HZ=y
154CONFIG_HIGH_RES_TIMERS=y
155CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
130# CONFIG_HZ_48 is not set 156# CONFIG_HZ_48 is not set
131# CONFIG_HZ_100 is not set 157# CONFIG_HZ_100 is not set
132# CONFIG_HZ_128 is not set 158# CONFIG_HZ_128 is not set
@@ -159,13 +185,20 @@ CONFIG_SYSVIPC_SYSCTL=y
159# CONFIG_POSIX_MQUEUE is not set 185# CONFIG_POSIX_MQUEUE is not set
160# CONFIG_BSD_PROCESS_ACCT is not set 186# CONFIG_BSD_PROCESS_ACCT is not set
161# CONFIG_TASKSTATS is not set 187# CONFIG_TASKSTATS is not set
162# CONFIG_USER_NS is not set
163# CONFIG_AUDIT is not set 188# CONFIG_AUDIT is not set
164CONFIG_IKCONFIG=y 189CONFIG_IKCONFIG=y
165CONFIG_IKCONFIG_PROC=y 190CONFIG_IKCONFIG_PROC=y
166CONFIG_LOG_BUF_SHIFT=14 191CONFIG_LOG_BUF_SHIFT=14
192# CONFIG_CGROUPS is not set
193# CONFIG_GROUP_SCHED is not set
167CONFIG_SYSFS_DEPRECATED=y 194CONFIG_SYSFS_DEPRECATED=y
195CONFIG_SYSFS_DEPRECATED_V2=y
168CONFIG_RELAY=y 196CONFIG_RELAY=y
197CONFIG_NAMESPACES=y
198CONFIG_UTS_NS=y
199CONFIG_IPC_NS=y
200CONFIG_USER_NS=y
201CONFIG_PID_NS=y
169# CONFIG_BLK_DEV_INITRD is not set 202# CONFIG_BLK_DEV_INITRD is not set
170# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 203# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
171CONFIG_SYSCTL=y 204CONFIG_SYSCTL=y
@@ -177,6 +210,8 @@ CONFIG_KALLSYMS=y
177CONFIG_PRINTK=y 210CONFIG_PRINTK=y
178CONFIG_BUG=y 211CONFIG_BUG=y
179CONFIG_ELF_CORE=y 212CONFIG_ELF_CORE=y
213# CONFIG_PCSPKR_PLATFORM is not set
214# CONFIG_COMPAT_BRK is not set
180CONFIG_BASE_FULL=y 215CONFIG_BASE_FULL=y
181CONFIG_FUTEX=y 216CONFIG_FUTEX=y
182CONFIG_ANON_INODES=y 217CONFIG_ANON_INODES=y
@@ -185,14 +220,21 @@ CONFIG_SIGNALFD=y
185CONFIG_TIMERFD=y 220CONFIG_TIMERFD=y
186CONFIG_EVENTFD=y 221CONFIG_EVENTFD=y
187CONFIG_SHMEM=y 222CONFIG_SHMEM=y
223CONFIG_AIO=y
188CONFIG_VM_EVENT_COUNTERS=y 224CONFIG_VM_EVENT_COUNTERS=y
189CONFIG_SLAB=y 225CONFIG_SLAB=y
190# CONFIG_SLUB is not set 226# CONFIG_SLUB is not set
191# CONFIG_SLOB is not set 227# CONFIG_SLOB is not set
228# CONFIG_PROFILING is not set
229# CONFIG_MARKERS is not set
230CONFIG_HAVE_OPROFILE=y
231# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
232CONFIG_SLABINFO=y
192CONFIG_RT_MUTEXES=y 233CONFIG_RT_MUTEXES=y
193# CONFIG_TINY_SHMEM is not set 234# CONFIG_TINY_SHMEM is not set
194CONFIG_BASE_SMALL=0 235CONFIG_BASE_SMALL=0
195CONFIG_MODULES=y 236CONFIG_MODULES=y
237# CONFIG_MODULE_FORCE_LOAD is not set
196CONFIG_MODULE_UNLOAD=y 238CONFIG_MODULE_UNLOAD=y
197# CONFIG_MODULE_FORCE_UNLOAD is not set 239# CONFIG_MODULE_FORCE_UNLOAD is not set
198CONFIG_MODVERSIONS=y 240CONFIG_MODVERSIONS=y
@@ -203,6 +245,7 @@ CONFIG_BLOCK=y
203# CONFIG_BLK_DEV_IO_TRACE is not set 245# CONFIG_BLK_DEV_IO_TRACE is not set
204# CONFIG_LSF is not set 246# CONFIG_LSF is not set
205# CONFIG_BLK_DEV_BSG is not set 247# CONFIG_BLK_DEV_BSG is not set
248# CONFIG_BLK_DEV_INTEGRITY is not set
206 249
207# 250#
208# IO Schedulers 251# IO Schedulers
@@ -216,6 +259,8 @@ CONFIG_DEFAULT_AS=y
216# CONFIG_DEFAULT_CFQ is not set 259# CONFIG_DEFAULT_CFQ is not set
217# CONFIG_DEFAULT_NOOP is not set 260# CONFIG_DEFAULT_NOOP is not set
218CONFIG_DEFAULT_IOSCHED="anticipatory" 261CONFIG_DEFAULT_IOSCHED="anticipatory"
262CONFIG_CLASSIC_RCU=y
263# CONFIG_FREEZER is not set
219 264
220# 265#
221# Bus options (PCI, PCMCIA, EISA, ISA, TC) 266# Bus options (PCI, PCMCIA, EISA, ISA, TC)
@@ -224,29 +269,24 @@ CONFIG_HW_HAS_EISA=y
224# CONFIG_ARCH_SUPPORTS_MSI is not set 269# CONFIG_ARCH_SUPPORTS_MSI is not set
225# CONFIG_EISA is not set 270# CONFIG_EISA is not set
226CONFIG_MMU=y 271CONFIG_MMU=y
227 272CONFIG_I8253=y
228#
229# PCCARD (PCMCIA/CardBus) support
230#
231 273
232# 274#
233# Executable file formats 275# Executable file formats
234# 276#
235CONFIG_BINFMT_ELF=y 277CONFIG_BINFMT_ELF=y
278# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
279# CONFIG_HAVE_AOUT is not set
236CONFIG_BINFMT_MISC=m 280CONFIG_BINFMT_MISC=m
237CONFIG_TRAD_SIGNALS=y 281CONFIG_TRAD_SIGNALS=y
238 282
239# 283#
240# Power management options 284# Power management options
241# 285#
286CONFIG_ARCH_SUSPEND_POSSIBLE=y
242CONFIG_PM=y 287CONFIG_PM=y
243# CONFIG_PM_LEGACY is not set
244# CONFIG_PM_DEBUG is not set 288# CONFIG_PM_DEBUG is not set
245# CONFIG_SUSPEND is not set 289# CONFIG_SUSPEND is not set
246
247#
248# Networking
249#
250CONFIG_NET=y 290CONFIG_NET=y
251 291
252# 292#
@@ -259,6 +299,8 @@ CONFIG_XFRM=y
259CONFIG_XFRM_USER=m 299CONFIG_XFRM_USER=m
260# CONFIG_XFRM_SUB_POLICY is not set 300# CONFIG_XFRM_SUB_POLICY is not set
261CONFIG_XFRM_MIGRATE=y 301CONFIG_XFRM_MIGRATE=y
302# CONFIG_XFRM_STATISTICS is not set
303CONFIG_XFRM_IPCOMP=m
262CONFIG_NET_KEY=y 304CONFIG_NET_KEY=y
263CONFIG_NET_KEY_MIGRATE=y 305CONFIG_NET_KEY_MIGRATE=y
264CONFIG_INET=y 306CONFIG_INET=y
@@ -282,42 +324,13 @@ CONFIG_INET_TUNNEL=m
282CONFIG_INET_XFRM_MODE_TRANSPORT=m 324CONFIG_INET_XFRM_MODE_TRANSPORT=m
283CONFIG_INET_XFRM_MODE_TUNNEL=m 325CONFIG_INET_XFRM_MODE_TUNNEL=m
284CONFIG_INET_XFRM_MODE_BEET=m 326CONFIG_INET_XFRM_MODE_BEET=m
327# CONFIG_INET_LRO is not set
285CONFIG_INET_DIAG=y 328CONFIG_INET_DIAG=y
286CONFIG_INET_TCP_DIAG=y 329CONFIG_INET_TCP_DIAG=y
287# CONFIG_TCP_CONG_ADVANCED is not set 330# CONFIG_TCP_CONG_ADVANCED is not set
288CONFIG_TCP_CONG_CUBIC=y 331CONFIG_TCP_CONG_CUBIC=y
289CONFIG_DEFAULT_TCP_CONG="cubic" 332CONFIG_DEFAULT_TCP_CONG="cubic"
290CONFIG_TCP_MD5SIG=y 333CONFIG_TCP_MD5SIG=y
291CONFIG_IP_VS=m
292# CONFIG_IP_VS_DEBUG is not set
293CONFIG_IP_VS_TAB_BITS=12
294
295#
296# IPVS transport protocol load balancing support
297#
298CONFIG_IP_VS_PROTO_TCP=y
299CONFIG_IP_VS_PROTO_UDP=y
300CONFIG_IP_VS_PROTO_ESP=y
301CONFIG_IP_VS_PROTO_AH=y
302
303#
304# IPVS scheduler
305#
306CONFIG_IP_VS_RR=m
307CONFIG_IP_VS_WRR=m
308CONFIG_IP_VS_LC=m
309CONFIG_IP_VS_WLC=m
310CONFIG_IP_VS_LBLC=m
311CONFIG_IP_VS_LBLCR=m
312CONFIG_IP_VS_DH=m
313CONFIG_IP_VS_SH=m
314CONFIG_IP_VS_SED=m
315CONFIG_IP_VS_NQ=m
316
317#
318# IPVS application helper
319#
320CONFIG_IP_VS_FTP=m
321CONFIG_IPV6=m 334CONFIG_IPV6=m
322CONFIG_IPV6_PRIVACY=y 335CONFIG_IPV6_PRIVACY=y
323CONFIG_IPV6_ROUTER_PREF=y 336CONFIG_IPV6_ROUTER_PREF=y
@@ -334,12 +347,16 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
334CONFIG_INET6_XFRM_MODE_BEET=m 347CONFIG_INET6_XFRM_MODE_BEET=m
335CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m 348CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
336CONFIG_IPV6_SIT=m 349CONFIG_IPV6_SIT=m
350CONFIG_IPV6_NDISC_NODETYPE=y
337CONFIG_IPV6_TUNNEL=m 351CONFIG_IPV6_TUNNEL=m
338CONFIG_IPV6_MULTIPLE_TABLES=y 352CONFIG_IPV6_MULTIPLE_TABLES=y
339CONFIG_IPV6_SUBTREES=y 353CONFIG_IPV6_SUBTREES=y
354CONFIG_IPV6_MROUTE=y
355CONFIG_IPV6_PIMSM_V2=y
340CONFIG_NETWORK_SECMARK=y 356CONFIG_NETWORK_SECMARK=y
341CONFIG_NETFILTER=y 357CONFIG_NETFILTER=y
342# CONFIG_NETFILTER_DEBUG is not set 358# CONFIG_NETFILTER_DEBUG is not set
359CONFIG_NETFILTER_ADVANCED=y
343 360
344# 361#
345# Core Netfilter Configuration 362# Core Netfilter Configuration
@@ -347,12 +364,12 @@ CONFIG_NETFILTER=y
347CONFIG_NETFILTER_NETLINK=m 364CONFIG_NETFILTER_NETLINK=m
348CONFIG_NETFILTER_NETLINK_QUEUE=m 365CONFIG_NETFILTER_NETLINK_QUEUE=m
349CONFIG_NETFILTER_NETLINK_LOG=m 366CONFIG_NETFILTER_NETLINK_LOG=m
350CONFIG_NF_CONNTRACK_ENABLED=m
351CONFIG_NF_CONNTRACK=m 367CONFIG_NF_CONNTRACK=m
352CONFIG_NF_CT_ACCT=y 368CONFIG_NF_CT_ACCT=y
353CONFIG_NF_CONNTRACK_MARK=y 369CONFIG_NF_CONNTRACK_MARK=y
354CONFIG_NF_CONNTRACK_SECMARK=y 370CONFIG_NF_CONNTRACK_SECMARK=y
355CONFIG_NF_CONNTRACK_EVENTS=y 371CONFIG_NF_CONNTRACK_EVENTS=y
372CONFIG_NF_CT_PROTO_DCCP=m
356CONFIG_NF_CT_PROTO_GRE=m 373CONFIG_NF_CT_PROTO_GRE=m
357CONFIG_NF_CT_PROTO_SCTP=m 374CONFIG_NF_CT_PROTO_SCTP=m
358CONFIG_NF_CT_PROTO_UDPLITE=m 375CONFIG_NF_CT_PROTO_UDPLITE=m
@@ -366,18 +383,22 @@ CONFIG_NF_CONNTRACK_SANE=m
366CONFIG_NF_CONNTRACK_SIP=m 383CONFIG_NF_CONNTRACK_SIP=m
367CONFIG_NF_CONNTRACK_TFTP=m 384CONFIG_NF_CONNTRACK_TFTP=m
368CONFIG_NF_CT_NETLINK=m 385CONFIG_NF_CT_NETLINK=m
386CONFIG_NETFILTER_TPROXY=m
369CONFIG_NETFILTER_XTABLES=m 387CONFIG_NETFILTER_XTABLES=m
370CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 388CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
371CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 389CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
390CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
372CONFIG_NETFILTER_XT_TARGET_DSCP=m 391CONFIG_NETFILTER_XT_TARGET_DSCP=m
373CONFIG_NETFILTER_XT_TARGET_MARK=m 392CONFIG_NETFILTER_XT_TARGET_MARK=m
374CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
375CONFIG_NETFILTER_XT_TARGET_NFLOG=m 393CONFIG_NETFILTER_XT_TARGET_NFLOG=m
394CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
376CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 395CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
396CONFIG_NETFILTER_XT_TARGET_RATEEST=m
397CONFIG_NETFILTER_XT_TARGET_TPROXY=m
377CONFIG_NETFILTER_XT_TARGET_TRACE=m 398CONFIG_NETFILTER_XT_TARGET_TRACE=m
378CONFIG_NETFILTER_XT_TARGET_SECMARK=m 399CONFIG_NETFILTER_XT_TARGET_SECMARK=m
379CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
380CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 400CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
401CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
381CONFIG_NETFILTER_XT_MATCH_COMMENT=m 402CONFIG_NETFILTER_XT_MATCH_COMMENT=m
382CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 403CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
383CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 404CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -386,39 +407,75 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
386CONFIG_NETFILTER_XT_MATCH_DCCP=m 407CONFIG_NETFILTER_XT_MATCH_DCCP=m
387CONFIG_NETFILTER_XT_MATCH_DSCP=m 408CONFIG_NETFILTER_XT_MATCH_DSCP=m
388CONFIG_NETFILTER_XT_MATCH_ESP=m 409CONFIG_NETFILTER_XT_MATCH_ESP=m
410CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
389CONFIG_NETFILTER_XT_MATCH_HELPER=m 411CONFIG_NETFILTER_XT_MATCH_HELPER=m
412CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
390CONFIG_NETFILTER_XT_MATCH_LENGTH=m 413CONFIG_NETFILTER_XT_MATCH_LENGTH=m
391CONFIG_NETFILTER_XT_MATCH_LIMIT=m 414CONFIG_NETFILTER_XT_MATCH_LIMIT=m
392CONFIG_NETFILTER_XT_MATCH_MAC=m 415CONFIG_NETFILTER_XT_MATCH_MAC=m
393CONFIG_NETFILTER_XT_MATCH_MARK=m 416CONFIG_NETFILTER_XT_MATCH_MARK=m
394CONFIG_NETFILTER_XT_MATCH_POLICY=m
395CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 417CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
418CONFIG_NETFILTER_XT_MATCH_OWNER=m
419CONFIG_NETFILTER_XT_MATCH_POLICY=m
396CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 420CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
397CONFIG_NETFILTER_XT_MATCH_QUOTA=m 421CONFIG_NETFILTER_XT_MATCH_QUOTA=m
422CONFIG_NETFILTER_XT_MATCH_RATEEST=m
398CONFIG_NETFILTER_XT_MATCH_REALM=m 423CONFIG_NETFILTER_XT_MATCH_REALM=m
424CONFIG_NETFILTER_XT_MATCH_RECENT=m
425CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
399CONFIG_NETFILTER_XT_MATCH_SCTP=m 426CONFIG_NETFILTER_XT_MATCH_SCTP=m
427CONFIG_NETFILTER_XT_MATCH_SOCKET=m
400CONFIG_NETFILTER_XT_MATCH_STATE=m 428CONFIG_NETFILTER_XT_MATCH_STATE=m
401CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 429CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
402CONFIG_NETFILTER_XT_MATCH_STRING=m 430CONFIG_NETFILTER_XT_MATCH_STRING=m
403CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 431CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
432CONFIG_NETFILTER_XT_MATCH_TIME=m
404CONFIG_NETFILTER_XT_MATCH_U32=m 433CONFIG_NETFILTER_XT_MATCH_U32=m
405CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 434CONFIG_IP_VS=m
435CONFIG_IP_VS_IPV6=y
436# CONFIG_IP_VS_DEBUG is not set
437CONFIG_IP_VS_TAB_BITS=12
438
439#
440# IPVS transport protocol load balancing support
441#
442CONFIG_IP_VS_PROTO_TCP=y
443CONFIG_IP_VS_PROTO_UDP=y
444CONFIG_IP_VS_PROTO_AH_ESP=y
445CONFIG_IP_VS_PROTO_ESP=y
446CONFIG_IP_VS_PROTO_AH=y
447
448#
449# IPVS scheduler
450#
451CONFIG_IP_VS_RR=m
452CONFIG_IP_VS_WRR=m
453CONFIG_IP_VS_LC=m
454CONFIG_IP_VS_WLC=m
455CONFIG_IP_VS_LBLC=m
456CONFIG_IP_VS_LBLCR=m
457CONFIG_IP_VS_DH=m
458CONFIG_IP_VS_SH=m
459CONFIG_IP_VS_SED=m
460CONFIG_IP_VS_NQ=m
461
462#
463# IPVS application helper
464#
465CONFIG_IP_VS_FTP=m
406 466
407# 467#
408# IP: Netfilter Configuration 468# IP: Netfilter Configuration
409# 469#
470CONFIG_NF_DEFRAG_IPV4=m
410CONFIG_NF_CONNTRACK_IPV4=m 471CONFIG_NF_CONNTRACK_IPV4=m
411CONFIG_NF_CONNTRACK_PROC_COMPAT=y 472CONFIG_NF_CONNTRACK_PROC_COMPAT=y
412CONFIG_IP_NF_QUEUE=m 473CONFIG_IP_NF_QUEUE=m
413CONFIG_IP_NF_IPTABLES=m 474CONFIG_IP_NF_IPTABLES=m
414CONFIG_IP_NF_MATCH_IPRANGE=m 475CONFIG_IP_NF_MATCH_ADDRTYPE=m
415CONFIG_IP_NF_MATCH_TOS=m
416CONFIG_IP_NF_MATCH_RECENT=m
417CONFIG_IP_NF_MATCH_ECN=m
418CONFIG_IP_NF_MATCH_AH=m 476CONFIG_IP_NF_MATCH_AH=m
477CONFIG_IP_NF_MATCH_ECN=m
419CONFIG_IP_NF_MATCH_TTL=m 478CONFIG_IP_NF_MATCH_TTL=m
420CONFIG_IP_NF_MATCH_OWNER=m
421CONFIG_IP_NF_MATCH_ADDRTYPE=m
422CONFIG_IP_NF_FILTER=m 479CONFIG_IP_NF_FILTER=m
423CONFIG_IP_NF_TARGET_REJECT=m 480CONFIG_IP_NF_TARGET_REJECT=m
424CONFIG_IP_NF_TARGET_LOG=m 481CONFIG_IP_NF_TARGET_LOG=m
@@ -426,11 +483,13 @@ CONFIG_IP_NF_TARGET_ULOG=m
426CONFIG_NF_NAT=m 483CONFIG_NF_NAT=m
427CONFIG_NF_NAT_NEEDED=y 484CONFIG_NF_NAT_NEEDED=y
428CONFIG_IP_NF_TARGET_MASQUERADE=m 485CONFIG_IP_NF_TARGET_MASQUERADE=m
429CONFIG_IP_NF_TARGET_REDIRECT=m
430CONFIG_IP_NF_TARGET_NETMAP=m 486CONFIG_IP_NF_TARGET_NETMAP=m
431CONFIG_IP_NF_TARGET_SAME=m 487CONFIG_IP_NF_TARGET_REDIRECT=m
432CONFIG_NF_NAT_SNMP_BASIC=m 488CONFIG_NF_NAT_SNMP_BASIC=m
489CONFIG_NF_NAT_PROTO_DCCP=m
433CONFIG_NF_NAT_PROTO_GRE=m 490CONFIG_NF_NAT_PROTO_GRE=m
491CONFIG_NF_NAT_PROTO_UDPLITE=m
492CONFIG_NF_NAT_PROTO_SCTP=m
434CONFIG_NF_NAT_FTP=m 493CONFIG_NF_NAT_FTP=m
435CONFIG_NF_NAT_IRC=m 494CONFIG_NF_NAT_IRC=m
436CONFIG_NF_NAT_TFTP=m 495CONFIG_NF_NAT_TFTP=m
@@ -439,32 +498,30 @@ CONFIG_NF_NAT_PPTP=m
439CONFIG_NF_NAT_H323=m 498CONFIG_NF_NAT_H323=m
440CONFIG_NF_NAT_SIP=m 499CONFIG_NF_NAT_SIP=m
441CONFIG_IP_NF_MANGLE=m 500CONFIG_IP_NF_MANGLE=m
442CONFIG_IP_NF_TARGET_TOS=m 501CONFIG_IP_NF_TARGET_CLUSTERIP=m
443CONFIG_IP_NF_TARGET_ECN=m 502CONFIG_IP_NF_TARGET_ECN=m
444CONFIG_IP_NF_TARGET_TTL=m 503CONFIG_IP_NF_TARGET_TTL=m
445CONFIG_IP_NF_TARGET_CLUSTERIP=m
446CONFIG_IP_NF_RAW=m 504CONFIG_IP_NF_RAW=m
447CONFIG_IP_NF_ARPTABLES=m 505CONFIG_IP_NF_ARPTABLES=m
448CONFIG_IP_NF_ARPFILTER=m 506CONFIG_IP_NF_ARPFILTER=m
449CONFIG_IP_NF_ARP_MANGLE=m 507CONFIG_IP_NF_ARP_MANGLE=m
450 508
451# 509#
452# IPv6: Netfilter Configuration (EXPERIMENTAL) 510# IPv6: Netfilter Configuration
453# 511#
454CONFIG_NF_CONNTRACK_IPV6=m 512CONFIG_NF_CONNTRACK_IPV6=m
455CONFIG_IP6_NF_QUEUE=m 513CONFIG_IP6_NF_QUEUE=m
456CONFIG_IP6_NF_IPTABLES=m 514CONFIG_IP6_NF_IPTABLES=m
457CONFIG_IP6_NF_MATCH_RT=m 515CONFIG_IP6_NF_MATCH_AH=m
458CONFIG_IP6_NF_MATCH_OPTS=m 516CONFIG_IP6_NF_MATCH_EUI64=m
459CONFIG_IP6_NF_MATCH_FRAG=m 517CONFIG_IP6_NF_MATCH_FRAG=m
518CONFIG_IP6_NF_MATCH_OPTS=m
460CONFIG_IP6_NF_MATCH_HL=m 519CONFIG_IP6_NF_MATCH_HL=m
461CONFIG_IP6_NF_MATCH_OWNER=m
462CONFIG_IP6_NF_MATCH_IPV6HEADER=m 520CONFIG_IP6_NF_MATCH_IPV6HEADER=m
463CONFIG_IP6_NF_MATCH_AH=m
464CONFIG_IP6_NF_MATCH_MH=m 521CONFIG_IP6_NF_MATCH_MH=m
465CONFIG_IP6_NF_MATCH_EUI64=m 522CONFIG_IP6_NF_MATCH_RT=m
466CONFIG_IP6_NF_FILTER=m
467CONFIG_IP6_NF_TARGET_LOG=m 523CONFIG_IP6_NF_TARGET_LOG=m
524CONFIG_IP6_NF_FILTER=m
468CONFIG_IP6_NF_TARGET_REJECT=m 525CONFIG_IP6_NF_TARGET_REJECT=m
469CONFIG_IP6_NF_MANGLE=m 526CONFIG_IP6_NF_MANGLE=m
470CONFIG_IP6_NF_TARGET_HL=m 527CONFIG_IP6_NF_TARGET_HL=m
@@ -479,6 +536,7 @@ CONFIG_SCTP_HMAC_MD5=y
479# CONFIG_TIPC is not set 536# CONFIG_TIPC is not set
480# CONFIG_ATM is not set 537# CONFIG_ATM is not set
481# CONFIG_BRIDGE is not set 538# CONFIG_BRIDGE is not set
539# CONFIG_NET_DSA is not set
482# CONFIG_VLAN_8021Q is not set 540# CONFIG_VLAN_8021Q is not set
483# CONFIG_DECNET is not set 541# CONFIG_DECNET is not set
484# CONFIG_LLC2 is not set 542# CONFIG_LLC2 is not set
@@ -488,12 +546,7 @@ CONFIG_SCTP_HMAC_MD5=y
488# CONFIG_LAPB is not set 546# CONFIG_LAPB is not set
489# CONFIG_ECONET is not set 547# CONFIG_ECONET is not set
490# CONFIG_WAN_ROUTER is not set 548# CONFIG_WAN_ROUTER is not set
491
492#
493# QoS and/or fair queueing
494#
495CONFIG_NET_SCHED=y 549CONFIG_NET_SCHED=y
496CONFIG_NET_SCH_FIFO=y
497 550
498# 551#
499# Queueing/Scheduling 552# Queueing/Scheduling
@@ -502,7 +555,7 @@ CONFIG_NET_SCH_CBQ=m
502CONFIG_NET_SCH_HTB=m 555CONFIG_NET_SCH_HTB=m
503CONFIG_NET_SCH_HFSC=m 556CONFIG_NET_SCH_HFSC=m
504CONFIG_NET_SCH_PRIO=m 557CONFIG_NET_SCH_PRIO=m
505CONFIG_NET_SCH_RR=m 558# CONFIG_NET_SCH_MULTIQ is not set
506CONFIG_NET_SCH_RED=m 559CONFIG_NET_SCH_RED=m
507CONFIG_NET_SCH_SFQ=m 560CONFIG_NET_SCH_SFQ=m
508CONFIG_NET_SCH_TEQL=m 561CONFIG_NET_SCH_TEQL=m
@@ -526,6 +579,7 @@ CONFIG_NET_CLS_U32=m
526# CONFIG_CLS_U32_MARK is not set 579# CONFIG_CLS_U32_MARK is not set
527CONFIG_NET_CLS_RSVP=m 580CONFIG_NET_CLS_RSVP=m
528CONFIG_NET_CLS_RSVP6=m 581CONFIG_NET_CLS_RSVP6=m
582CONFIG_NET_CLS_FLOW=m
529# CONFIG_NET_EMATCH is not set 583# CONFIG_NET_EMATCH is not set
530CONFIG_NET_CLS_ACT=y 584CONFIG_NET_CLS_ACT=y
531CONFIG_NET_ACT_POLICE=y 585CONFIG_NET_ACT_POLICE=y
@@ -533,35 +587,28 @@ CONFIG_NET_ACT_GACT=m
533CONFIG_GACT_PROB=y 587CONFIG_GACT_PROB=y
534CONFIG_NET_ACT_MIRRED=m 588CONFIG_NET_ACT_MIRRED=m
535CONFIG_NET_ACT_IPT=m 589CONFIG_NET_ACT_IPT=m
590CONFIG_NET_ACT_NAT=m
536CONFIG_NET_ACT_PEDIT=m 591CONFIG_NET_ACT_PEDIT=m
537CONFIG_NET_ACT_SIMP=m 592CONFIG_NET_ACT_SIMP=m
538CONFIG_NET_CLS_POLICE=y 593CONFIG_NET_ACT_SKBEDIT=m
539# CONFIG_NET_CLS_IND is not set 594# CONFIG_NET_CLS_IND is not set
595CONFIG_NET_SCH_FIFO=y
540 596
541# 597#
542# Network testing 598# Network testing
543# 599#
544# CONFIG_NET_PKTGEN is not set 600# CONFIG_NET_PKTGEN is not set
545# CONFIG_HAMRADIO is not set 601# CONFIG_HAMRADIO is not set
602# CONFIG_CAN is not set
546# CONFIG_IRDA is not set 603# CONFIG_IRDA is not set
547# CONFIG_BT is not set 604# CONFIG_BT is not set
548# CONFIG_AF_RXRPC is not set 605# CONFIG_AF_RXRPC is not set
606CONFIG_PHONET=m
549CONFIG_FIB_RULES=y 607CONFIG_FIB_RULES=y
550 608# CONFIG_WIRELESS is not set
551#
552# Wireless
553#
554CONFIG_CFG80211=m
555CONFIG_WIRELESS_EXT=y 609CONFIG_WIRELESS_EXT=y
556CONFIG_MAC80211=m
557# CONFIG_MAC80211_DEBUG is not set
558CONFIG_IEEE80211=m 610CONFIG_IEEE80211=m
559# CONFIG_IEEE80211_DEBUG is not set
560CONFIG_IEEE80211_CRYPT_WEP=m 611CONFIG_IEEE80211_CRYPT_WEP=m
561CONFIG_IEEE80211_CRYPT_CCMP=m
562CONFIG_IEEE80211_CRYPT_TKIP=m
563CONFIG_IEEE80211_SOFTMAC=m
564# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
565CONFIG_RFKILL=m 612CONFIG_RFKILL=m
566CONFIG_RFKILL_INPUT=m 613CONFIG_RFKILL_INPUT=m
567# CONFIG_NET_9P is not set 614# CONFIG_NET_9P is not set
@@ -588,7 +635,9 @@ CONFIG_CDROM_PKTCDVD=m
588CONFIG_CDROM_PKTCDVD_BUFFERS=8 635CONFIG_CDROM_PKTCDVD_BUFFERS=8
589# CONFIG_CDROM_PKTCDVD_WCACHE is not set 636# CONFIG_CDROM_PKTCDVD_WCACHE is not set
590CONFIG_ATA_OVER_ETH=m 637CONFIG_ATA_OVER_ETH=m
638# CONFIG_BLK_DEV_HD is not set
591# CONFIG_MISC_DEVICES is not set 639# CONFIG_MISC_DEVICES is not set
640CONFIG_HAVE_IDE=y
592# CONFIG_IDE is not set 641# CONFIG_IDE is not set
593 642
594# 643#
@@ -628,20 +677,22 @@ CONFIG_SCSI_SPI_ATTRS=m
628# CONFIG_SCSI_FC_ATTRS is not set 677# CONFIG_SCSI_FC_ATTRS is not set
629CONFIG_SCSI_ISCSI_ATTRS=m 678CONFIG_SCSI_ISCSI_ATTRS=m
630# CONFIG_SCSI_SAS_LIBSAS is not set 679# CONFIG_SCSI_SAS_LIBSAS is not set
680# CONFIG_SCSI_SRP_ATTRS is not set
631CONFIG_SCSI_LOWLEVEL=y 681CONFIG_SCSI_LOWLEVEL=y
632CONFIG_ISCSI_TCP=m 682CONFIG_ISCSI_TCP=m
633CONFIG_SGIWD93_SCSI=y 683CONFIG_SGIWD93_SCSI=y
634# CONFIG_SCSI_DEBUG is not set 684# CONFIG_SCSI_DEBUG is not set
685# CONFIG_SCSI_DH is not set
635# CONFIG_ATA is not set 686# CONFIG_ATA is not set
636# CONFIG_MD is not set 687# CONFIG_MD is not set
637CONFIG_NETDEVICES=y 688CONFIG_NETDEVICES=y
638# CONFIG_NETDEVICES_MULTIQUEUE is not set
639# CONFIG_IFB is not set 689# CONFIG_IFB is not set
640CONFIG_DUMMY=m 690CONFIG_DUMMY=m
641CONFIG_BONDING=m 691CONFIG_BONDING=m
642CONFIG_MACVLAN=m 692CONFIG_MACVLAN=m
643CONFIG_EQUALIZER=m 693CONFIG_EQUALIZER=m
644CONFIG_TUN=m 694CONFIG_TUN=m
695CONFIG_VETH=m
645CONFIG_PHYLIB=m 696CONFIG_PHYLIB=m
646 697
647# 698#
@@ -656,11 +707,21 @@ CONFIG_CICADA_PHY=m
656# CONFIG_SMSC_PHY is not set 707# CONFIG_SMSC_PHY is not set
657# CONFIG_BROADCOM_PHY is not set 708# CONFIG_BROADCOM_PHY is not set
658# CONFIG_ICPLUS_PHY is not set 709# CONFIG_ICPLUS_PHY is not set
659# CONFIG_FIXED_PHY is not set 710CONFIG_REALTEK_PHY=m
711CONFIG_MDIO_BITBANG=m
660CONFIG_NET_ETHERNET=y 712CONFIG_NET_ETHERNET=y
661# CONFIG_MII is not set 713CONFIG_MII=m
662# CONFIG_AX88796 is not set 714# CONFIG_AX88796 is not set
715CONFIG_SMC91X=m
663# CONFIG_DM9000 is not set 716# CONFIG_DM9000 is not set
717# CONFIG_IBM_NEW_EMAC_ZMII is not set
718# CONFIG_IBM_NEW_EMAC_RGMII is not set
719# CONFIG_IBM_NEW_EMAC_TAH is not set
720# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
721# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
722# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
723# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
724# CONFIG_B44 is not set
664CONFIG_SGISEEQ=y 725CONFIG_SGISEEQ=y
665# CONFIG_NETDEV_1000 is not set 726# CONFIG_NETDEV_1000 is not set
666# CONFIG_NETDEV_10000 is not set 727# CONFIG_NETDEV_10000 is not set
@@ -672,12 +733,12 @@ CONFIG_WLAN_PRE80211=y
672CONFIG_STRIP=m 733CONFIG_STRIP=m
673CONFIG_WLAN_80211=y 734CONFIG_WLAN_80211=y
674# CONFIG_LIBERTAS is not set 735# CONFIG_LIBERTAS is not set
736# CONFIG_IWLWIFI_LEDS is not set
675CONFIG_HOSTAP=m 737CONFIG_HOSTAP=m
676# CONFIG_HOSTAP_FIRMWARE is not set 738# CONFIG_HOSTAP_FIRMWARE is not set
677# CONFIG_WAN is not set 739# CONFIG_WAN is not set
678# CONFIG_PPP is not set 740# CONFIG_PPP is not set
679# CONFIG_SLIP is not set 741# CONFIG_SLIP is not set
680# CONFIG_SHAPER is not set
681# CONFIG_NETCONSOLE is not set 742# CONFIG_NETCONSOLE is not set
682# CONFIG_NETPOLL is not set 743# CONFIG_NETPOLL is not set
683# CONFIG_NET_POLL_CONTROLLER is not set 744# CONFIG_NET_POLL_CONTROLLER is not set
@@ -699,7 +760,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
699CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 760CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
700CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 761CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
701# CONFIG_INPUT_JOYDEV is not set 762# CONFIG_INPUT_JOYDEV is not set
702# CONFIG_INPUT_TSDEV is not set
703# CONFIG_INPUT_EVDEV is not set 763# CONFIG_INPUT_EVDEV is not set
704# CONFIG_INPUT_EVBUG is not set 764# CONFIG_INPUT_EVBUG is not set
705 765
@@ -720,6 +780,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
720# CONFIG_MOUSE_PS2_SYNAPTICS is not set 780# CONFIG_MOUSE_PS2_SYNAPTICS is not set
721# CONFIG_MOUSE_PS2_LIFEBOOK is not set 781# CONFIG_MOUSE_PS2_LIFEBOOK is not set
722CONFIG_MOUSE_PS2_TRACKPOINT=y 782CONFIG_MOUSE_PS2_TRACKPOINT=y
783# CONFIG_MOUSE_PS2_ELANTECH is not set
723# CONFIG_MOUSE_PS2_TOUCHKIT is not set 784# CONFIG_MOUSE_PS2_TOUCHKIT is not set
724CONFIG_MOUSE_SERIAL=m 785CONFIG_MOUSE_SERIAL=m
725# CONFIG_MOUSE_VSXXXAA is not set 786# CONFIG_MOUSE_VSXXXAA is not set
@@ -742,9 +803,11 @@ CONFIG_SERIO_RAW=m
742# Character devices 803# Character devices
743# 804#
744CONFIG_VT=y 805CONFIG_VT=y
806CONFIG_CONSOLE_TRANSLATIONS=y
745CONFIG_VT_CONSOLE=y 807CONFIG_VT_CONSOLE=y
746CONFIG_HW_CONSOLE=y 808CONFIG_HW_CONSOLE=y
747CONFIG_VT_HW_CONSOLE_BINDING=y 809CONFIG_VT_HW_CONSOLE_BINDING=y
810CONFIG_DEVKMEM=y
748# CONFIG_SERIAL_NONSTANDARD is not set 811# CONFIG_SERIAL_NONSTANDARD is not set
749 812
750# 813#
@@ -761,6 +824,17 @@ CONFIG_UNIX98_PTYS=y
761CONFIG_LEGACY_PTYS=y 824CONFIG_LEGACY_PTYS=y
762CONFIG_LEGACY_PTY_COUNT=256 825CONFIG_LEGACY_PTY_COUNT=256
763# CONFIG_IPMI_HANDLER is not set 826# CONFIG_IPMI_HANDLER is not set
827# CONFIG_HW_RANDOM is not set
828# CONFIG_R3964 is not set
829CONFIG_RAW_DRIVER=m
830CONFIG_MAX_RAW_DEVS=256
831# CONFIG_TCG_TPM is not set
832# CONFIG_I2C is not set
833# CONFIG_SPI is not set
834# CONFIG_W1 is not set
835# CONFIG_POWER_SUPPLY is not set
836# CONFIG_HWMON is not set
837CONFIG_THERMAL=m
764CONFIG_WATCHDOG=y 838CONFIG_WATCHDOG=y
765# CONFIG_WATCHDOG_NOWAYOUT is not set 839# CONFIG_WATCHDOG_NOWAYOUT is not set
766 840
@@ -769,47 +843,50 @@ CONFIG_WATCHDOG=y
769# 843#
770# CONFIG_SOFT_WATCHDOG is not set 844# CONFIG_SOFT_WATCHDOG is not set
771CONFIG_INDYDOG=m 845CONFIG_INDYDOG=m
772# CONFIG_HW_RANDOM is not set 846CONFIG_SSB_POSSIBLE=y
773# CONFIG_RTC is not set
774# CONFIG_R3964 is not set
775CONFIG_RAW_DRIVER=m
776CONFIG_MAX_RAW_DEVS=256
777# CONFIG_TCG_TPM is not set
778# CONFIG_I2C is not set
779 847
780# 848#
781# SPI support 849# Sonics Silicon Backplane
782# 850#
783# CONFIG_SPI is not set 851# CONFIG_SSB is not set
784# CONFIG_SPI_MASTER is not set
785# CONFIG_W1 is not set
786# CONFIG_POWER_SUPPLY is not set
787# CONFIG_HWMON is not set
788 852
789# 853#
790# Multifunction device drivers 854# Multifunction device drivers
791# 855#
856# CONFIG_MFD_CORE is not set
792# CONFIG_MFD_SM501 is not set 857# CONFIG_MFD_SM501 is not set
858# CONFIG_HTC_PASIC3 is not set
859# CONFIG_MFD_TMIO is not set
860# CONFIG_REGULATOR is not set
793 861
794# 862#
795# Multimedia devices 863# Multimedia devices
796# 864#
865
866#
867# Multimedia core support
868#
797# CONFIG_VIDEO_DEV is not set 869# CONFIG_VIDEO_DEV is not set
798# CONFIG_DVB_CORE is not set 870# CONFIG_DVB_CORE is not set
871# CONFIG_VIDEO_MEDIA is not set
872
873#
874# Multimedia drivers
875#
799# CONFIG_DAB is not set 876# CONFIG_DAB is not set
800 877
801# 878#
802# Graphics support 879# Graphics support
803# 880#
881# CONFIG_VGASTATE is not set
882# CONFIG_VIDEO_OUTPUT_CONTROL is not set
883# CONFIG_FB is not set
804# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 884# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
805 885
806# 886#
807# Display device support 887# Display device support
808# 888#
809# CONFIG_DISPLAY_SUPPORT is not set 889# CONFIG_DISPLAY_SUPPORT is not set
810# CONFIG_VGASTATE is not set
811# CONFIG_VIDEO_OUTPUT_CONTROL is not set
812# CONFIG_FB is not set
813 890
814# 891#
815# Console display driver support 892# Console display driver support
@@ -823,48 +900,77 @@ CONFIG_LOGO=y
823# CONFIG_LOGO_LINUX_VGA16 is not set 900# CONFIG_LOGO_LINUX_VGA16 is not set
824# CONFIG_LOGO_LINUX_CLUT224 is not set 901# CONFIG_LOGO_LINUX_CLUT224 is not set
825CONFIG_LOGO_SGI_CLUT224=y 902CONFIG_LOGO_SGI_CLUT224=y
826
827#
828# Sound
829#
830# CONFIG_SOUND is not set 903# CONFIG_SOUND is not set
831CONFIG_HID_SUPPORT=y 904CONFIG_HID_SUPPORT=y
832CONFIG_HID=y 905CONFIG_HID=y
833# CONFIG_HID_DEBUG is not set 906# CONFIG_HID_DEBUG is not set
907CONFIG_HIDRAW=y
908CONFIG_HID_PID=y
909
910#
911# Special HID drivers
912#
913CONFIG_HID_COMPAT=y
834CONFIG_USB_SUPPORT=y 914CONFIG_USB_SUPPORT=y
835# CONFIG_USB_ARCH_HAS_HCD is not set 915# CONFIG_USB_ARCH_HAS_HCD is not set
836# CONFIG_USB_ARCH_HAS_OHCI is not set 916# CONFIG_USB_ARCH_HAS_OHCI is not set
837# CONFIG_USB_ARCH_HAS_EHCI is not set 917# CONFIG_USB_ARCH_HAS_EHCI is not set
918# CONFIG_USB_OTG_WHITELIST is not set
919# CONFIG_USB_OTG_BLACKLIST_HUB is not set
838 920
839# 921#
840# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 922# Enable Host or Gadget support to see Inventra options
841# 923#
842 924
843# 925#
844# USB Gadget Support 926# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
845# 927#
846# CONFIG_USB_GADGET is not set 928# CONFIG_USB_GADGET is not set
847# CONFIG_MMC is not set 929# CONFIG_MMC is not set
930# CONFIG_MEMSTICK is not set
848# CONFIG_NEW_LEDS is not set 931# CONFIG_NEW_LEDS is not set
849# CONFIG_RTC_CLASS is not set 932# CONFIG_ACCESSIBILITY is not set
933CONFIG_RTC_LIB=y
934CONFIG_RTC_CLASS=y
935CONFIG_RTC_HCTOSYS=y
936CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
937# CONFIG_RTC_DEBUG is not set
850 938
851# 939#
852# DMA Engine support 940# RTC interfaces
853# 941#
854# CONFIG_DMA_ENGINE is not set 942CONFIG_RTC_INTF_SYSFS=y
943CONFIG_RTC_INTF_PROC=y
944CONFIG_RTC_INTF_DEV=y
945CONFIG_RTC_INTF_DEV_UIE_EMUL=y
946# CONFIG_RTC_DRV_TEST is not set
855 947
856# 948#
857# DMA Clients 949# SPI RTC drivers
858# 950#
859 951
860# 952#
861# DMA Devices 953# Platform RTC drivers
862# 954#
955# CONFIG_RTC_DRV_CMOS is not set
956CONFIG_RTC_DRV_DS1286=y
957# CONFIG_RTC_DRV_DS1511 is not set
958# CONFIG_RTC_DRV_DS1553 is not set
959# CONFIG_RTC_DRV_DS1742 is not set
960# CONFIG_RTC_DRV_STK17TA8 is not set
961# CONFIG_RTC_DRV_M48T86 is not set
962# CONFIG_RTC_DRV_M48T35 is not set
963# CONFIG_RTC_DRV_M48T59 is not set
964# CONFIG_RTC_DRV_BQ4802 is not set
965# CONFIG_RTC_DRV_V3020 is not set
863 966
864# 967#
865# Userspace I/O 968# on-CPU RTC drivers
866# 969#
970# CONFIG_DMADEVICES is not set
867# CONFIG_UIO is not set 971# CONFIG_UIO is not set
972# CONFIG_STAGING is not set
973CONFIG_STAGING_EXCLUDE_BUILD=y
868 974
869# 975#
870# File systems 976# File systems
@@ -876,29 +982,33 @@ CONFIG_EXT3_FS=y
876CONFIG_EXT3_FS_XATTR=y 982CONFIG_EXT3_FS_XATTR=y
877CONFIG_EXT3_FS_POSIX_ACL=y 983CONFIG_EXT3_FS_POSIX_ACL=y
878CONFIG_EXT3_FS_SECURITY=y 984CONFIG_EXT3_FS_SECURITY=y
879# CONFIG_EXT4DEV_FS is not set 985CONFIG_EXT4_FS=m
986CONFIG_EXT4DEV_COMPAT=y
987CONFIG_EXT4_FS_XATTR=y
988CONFIG_EXT4_FS_POSIX_ACL=y
989CONFIG_EXT4_FS_SECURITY=y
880CONFIG_JBD=y 990CONFIG_JBD=y
881# CONFIG_JBD_DEBUG is not set 991CONFIG_JBD2=m
882CONFIG_FS_MBCACHE=y 992CONFIG_FS_MBCACHE=y
883# CONFIG_REISERFS_FS is not set 993# CONFIG_REISERFS_FS is not set
884# CONFIG_JFS_FS is not set 994# CONFIG_JFS_FS is not set
885CONFIG_FS_POSIX_ACL=y 995CONFIG_FS_POSIX_ACL=y
996CONFIG_FILE_LOCKING=y
886CONFIG_XFS_FS=m 997CONFIG_XFS_FS=m
887CONFIG_XFS_QUOTA=y 998CONFIG_XFS_QUOTA=y
888CONFIG_XFS_SECURITY=y
889# CONFIG_XFS_POSIX_ACL is not set 999# CONFIG_XFS_POSIX_ACL is not set
890# CONFIG_XFS_RT is not set 1000# CONFIG_XFS_RT is not set
891# CONFIG_GFS2_FS is not set 1001# CONFIG_XFS_DEBUG is not set
892# CONFIG_OCFS2_FS is not set 1002# CONFIG_OCFS2_FS is not set
893CONFIG_MINIX_FS=m 1003CONFIG_DNOTIFY=y
894# CONFIG_ROMFS_FS is not set
895CONFIG_INOTIFY=y 1004CONFIG_INOTIFY=y
896CONFIG_INOTIFY_USER=y 1005CONFIG_INOTIFY_USER=y
897CONFIG_QUOTA=y 1006CONFIG_QUOTA=y
1007CONFIG_QUOTA_NETLINK_INTERFACE=y
1008# CONFIG_PRINT_QUOTA_WARNING is not set
898# CONFIG_QFMT_V1 is not set 1009# CONFIG_QFMT_V1 is not set
899CONFIG_QFMT_V2=m 1010CONFIG_QFMT_V2=m
900CONFIG_QUOTACTL=y 1011CONFIG_QUOTACTL=y
901CONFIG_DNOTIFY=y
902CONFIG_AUTOFS_FS=m 1012CONFIG_AUTOFS_FS=m
903CONFIG_AUTOFS4_FS=m 1013CONFIG_AUTOFS4_FS=m
904CONFIG_FUSE_FS=m 1014CONFIG_FUSE_FS=m
@@ -929,11 +1039,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
929CONFIG_PROC_FS=y 1039CONFIG_PROC_FS=y
930CONFIG_PROC_KCORE=y 1040CONFIG_PROC_KCORE=y
931CONFIG_PROC_SYSCTL=y 1041CONFIG_PROC_SYSCTL=y
1042CONFIG_PROC_PAGE_MONITOR=y
932CONFIG_SYSFS=y 1043CONFIG_SYSFS=y
933CONFIG_TMPFS=y 1044CONFIG_TMPFS=y
934CONFIG_TMPFS_POSIX_ACL=y 1045CONFIG_TMPFS_POSIX_ACL=y
935# CONFIG_HUGETLB_PAGE is not set 1046# CONFIG_HUGETLB_PAGE is not set
936CONFIG_RAMFS=y
937CONFIG_CONFIGFS_FS=m 1047CONFIG_CONFIGFS_FS=m
938 1048
939# 1049#
@@ -949,27 +1059,25 @@ CONFIG_CONFIGFS_FS=m
949CONFIG_EFS_FS=m 1059CONFIG_EFS_FS=m
950# CONFIG_CRAMFS is not set 1060# CONFIG_CRAMFS is not set
951# CONFIG_VXFS_FS is not set 1061# CONFIG_VXFS_FS is not set
1062CONFIG_MINIX_FS=m
1063CONFIG_OMFS_FS=m
952# CONFIG_HPFS_FS is not set 1064# CONFIG_HPFS_FS is not set
953# CONFIG_QNX4FS_FS is not set 1065# CONFIG_QNX4FS_FS is not set
1066# CONFIG_ROMFS_FS is not set
954# CONFIG_SYSV_FS is not set 1067# CONFIG_SYSV_FS is not set
955CONFIG_UFS_FS=m 1068CONFIG_UFS_FS=m
956# CONFIG_UFS_FS_WRITE is not set 1069# CONFIG_UFS_FS_WRITE is not set
957# CONFIG_UFS_DEBUG is not set 1070# CONFIG_UFS_DEBUG is not set
958 1071CONFIG_NETWORK_FILESYSTEMS=y
959#
960# Network File Systems
961#
962CONFIG_NFS_FS=m 1072CONFIG_NFS_FS=m
963CONFIG_NFS_V3=y 1073CONFIG_NFS_V3=y
964CONFIG_NFS_V3_ACL=y 1074CONFIG_NFS_V3_ACL=y
965# CONFIG_NFS_V4 is not set 1075# CONFIG_NFS_V4 is not set
966# CONFIG_NFS_DIRECTIO is not set
967CONFIG_NFSD=m 1076CONFIG_NFSD=m
968CONFIG_NFSD_V2_ACL=y 1077CONFIG_NFSD_V2_ACL=y
969CONFIG_NFSD_V3=y 1078CONFIG_NFSD_V3=y
970CONFIG_NFSD_V3_ACL=y 1079CONFIG_NFSD_V3_ACL=y
971# CONFIG_NFSD_V4 is not set 1080# CONFIG_NFSD_V4 is not set
972CONFIG_NFSD_TCP=y
973CONFIG_LOCKD=m 1081CONFIG_LOCKD=m
974CONFIG_LOCKD_V4=y 1082CONFIG_LOCKD_V4=y
975CONFIG_EXPORTFS=m 1083CONFIG_EXPORTFS=m
@@ -977,7 +1085,7 @@ CONFIG_NFS_ACL_SUPPORT=m
977CONFIG_NFS_COMMON=y 1085CONFIG_NFS_COMMON=y
978CONFIG_SUNRPC=m 1086CONFIG_SUNRPC=m
979CONFIG_SUNRPC_GSS=m 1087CONFIG_SUNRPC_GSS=m
980# CONFIG_SUNRPC_BIND34 is not set 1088# CONFIG_SUNRPC_REGISTER_V4 is not set
981CONFIG_RPCSEC_GSS_KRB5=m 1089CONFIG_RPCSEC_GSS_KRB5=m
982# CONFIG_RPCSEC_GSS_SPKM3 is not set 1090# CONFIG_RPCSEC_GSS_SPKM3 is not set
983CONFIG_SMB_FS=m 1091CONFIG_SMB_FS=m
@@ -986,12 +1094,12 @@ CONFIG_SMB_NLS_REMOTE="cp437"
986CONFIG_CIFS=m 1094CONFIG_CIFS=m
987# CONFIG_CIFS_STATS is not set 1095# CONFIG_CIFS_STATS is not set
988# CONFIG_CIFS_WEAK_PW_HASH is not set 1096# CONFIG_CIFS_WEAK_PW_HASH is not set
1097CONFIG_CIFS_UPCALL=y
989# CONFIG_CIFS_XATTR is not set 1098# CONFIG_CIFS_XATTR is not set
990# CONFIG_CIFS_DEBUG2 is not set 1099# CONFIG_CIFS_DEBUG2 is not set
991# CONFIG_CIFS_EXPERIMENTAL is not set 1100# CONFIG_CIFS_EXPERIMENTAL is not set
992# CONFIG_NCP_FS is not set 1101# CONFIG_NCP_FS is not set
993CONFIG_CODA_FS=m 1102CONFIG_CODA_FS=m
994# CONFIG_CODA_FS_OLD_API is not set
995# CONFIG_AFS_FS is not set 1103# CONFIG_AFS_FS is not set
996 1104
997# 1105#
@@ -1015,10 +1123,6 @@ CONFIG_SGI_PARTITION=y
1015# CONFIG_KARMA_PARTITION is not set 1123# CONFIG_KARMA_PARTITION is not set
1016# CONFIG_EFI_PARTITION is not set 1124# CONFIG_EFI_PARTITION is not set
1017# CONFIG_SYSV68_PARTITION is not set 1125# CONFIG_SYSV68_PARTITION is not set
1018
1019#
1020# Native Language Support
1021#
1022CONFIG_NLS=m 1126CONFIG_NLS=m
1023CONFIG_NLS_DEFAULT="iso8859-1" 1127CONFIG_NLS_DEFAULT="iso8859-1"
1024CONFIG_NLS_CODEPAGE_437=m 1128CONFIG_NLS_CODEPAGE_437=m
@@ -1059,30 +1163,32 @@ CONFIG_NLS_ISO8859_15=m
1059CONFIG_NLS_KOI8_R=m 1163CONFIG_NLS_KOI8_R=m
1060CONFIG_NLS_KOI8_U=m 1164CONFIG_NLS_KOI8_U=m
1061CONFIG_NLS_UTF8=m 1165CONFIG_NLS_UTF8=m
1062
1063#
1064# Distributed Lock Manager
1065#
1066CONFIG_DLM=m 1166CONFIG_DLM=m
1067# CONFIG_DLM_DEBUG is not set 1167# CONFIG_DLM_DEBUG is not set
1068 1168
1069# 1169#
1070# Profiling support
1071#
1072# CONFIG_PROFILING is not set
1073
1074#
1075# Kernel hacking 1170# Kernel hacking
1076# 1171#
1077CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1172CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1078# CONFIG_PRINTK_TIME is not set 1173# CONFIG_PRINTK_TIME is not set
1174CONFIG_ENABLE_WARN_DEPRECATED=y
1079CONFIG_ENABLE_MUST_CHECK=y 1175CONFIG_ENABLE_MUST_CHECK=y
1176CONFIG_FRAME_WARN=1024
1080# CONFIG_MAGIC_SYSRQ is not set 1177# CONFIG_MAGIC_SYSRQ is not set
1081# CONFIG_UNUSED_SYMBOLS is not set 1178# CONFIG_UNUSED_SYMBOLS is not set
1082# CONFIG_DEBUG_FS is not set 1179# CONFIG_DEBUG_FS is not set
1083# CONFIG_HEADERS_CHECK is not set 1180# CONFIG_HEADERS_CHECK is not set
1084# CONFIG_DEBUG_KERNEL is not set 1181# CONFIG_DEBUG_KERNEL is not set
1085CONFIG_CROSSCOMPILE=y 1182CONFIG_DEBUG_MEMORY_INIT=y
1183# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1184# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1185
1186#
1187# Tracers
1188#
1189CONFIG_DYNAMIC_PRINTK_DEBUG=y
1190# CONFIG_SAMPLES is not set
1191CONFIG_HAVE_ARCH_KGDB=y
1086CONFIG_CMDLINE="" 1192CONFIG_CMDLINE=""
1087 1193
1088# 1194#
@@ -1091,46 +1197,97 @@ CONFIG_CMDLINE=""
1091CONFIG_KEYS=y 1197CONFIG_KEYS=y
1092CONFIG_KEYS_DEBUG_PROC_KEYS=y 1198CONFIG_KEYS_DEBUG_PROC_KEYS=y
1093# CONFIG_SECURITY is not set 1199# CONFIG_SECURITY is not set
1200# CONFIG_SECURITYFS is not set
1201CONFIG_SECURITY_FILE_CAPABILITIES=y
1094CONFIG_CRYPTO=y 1202CONFIG_CRYPTO=y
1203
1204#
1205# Crypto core or helper
1206#
1207CONFIG_CRYPTO_FIPS=y
1095CONFIG_CRYPTO_ALGAPI=y 1208CONFIG_CRYPTO_ALGAPI=y
1096CONFIG_CRYPTO_ABLKCIPHER=m 1209CONFIG_CRYPTO_AEAD=y
1097CONFIG_CRYPTO_BLKCIPHER=m 1210CONFIG_CRYPTO_BLKCIPHER=y
1098CONFIG_CRYPTO_HASH=y 1211CONFIG_CRYPTO_HASH=y
1212CONFIG_CRYPTO_RNG=y
1099CONFIG_CRYPTO_MANAGER=y 1213CONFIG_CRYPTO_MANAGER=y
1214CONFIG_CRYPTO_GF128MUL=m
1215CONFIG_CRYPTO_NULL=m
1216CONFIG_CRYPTO_CRYPTD=m
1217CONFIG_CRYPTO_AUTHENC=m
1218# CONFIG_CRYPTO_TEST is not set
1219
1220#
1221# Authenticated Encryption with Associated Data
1222#
1223CONFIG_CRYPTO_CCM=m
1224CONFIG_CRYPTO_GCM=m
1225CONFIG_CRYPTO_SEQIV=m
1226
1227#
1228# Block modes
1229#
1230CONFIG_CRYPTO_CBC=m
1231CONFIG_CRYPTO_CTR=m
1232CONFIG_CRYPTO_CTS=m
1233CONFIG_CRYPTO_ECB=m
1234CONFIG_CRYPTO_LRW=m
1235CONFIG_CRYPTO_PCBC=m
1236CONFIG_CRYPTO_XTS=m
1237
1238#
1239# Hash modes
1240#
1100CONFIG_CRYPTO_HMAC=y 1241CONFIG_CRYPTO_HMAC=y
1101CONFIG_CRYPTO_XCBC=m 1242CONFIG_CRYPTO_XCBC=m
1102CONFIG_CRYPTO_NULL=m 1243
1244#
1245# Digest
1246#
1247CONFIG_CRYPTO_CRC32C=m
1103CONFIG_CRYPTO_MD4=m 1248CONFIG_CRYPTO_MD4=m
1104CONFIG_CRYPTO_MD5=y 1249CONFIG_CRYPTO_MD5=y
1250CONFIG_CRYPTO_MICHAEL_MIC=m
1251CONFIG_CRYPTO_RMD128=m
1252CONFIG_CRYPTO_RMD160=m
1253CONFIG_CRYPTO_RMD256=m
1254CONFIG_CRYPTO_RMD320=m
1105CONFIG_CRYPTO_SHA1=m 1255CONFIG_CRYPTO_SHA1=m
1106CONFIG_CRYPTO_SHA256=m 1256CONFIG_CRYPTO_SHA256=m
1107CONFIG_CRYPTO_SHA512=m 1257CONFIG_CRYPTO_SHA512=m
1108CONFIG_CRYPTO_WP512=m
1109CONFIG_CRYPTO_TGR192=m 1258CONFIG_CRYPTO_TGR192=m
1110CONFIG_CRYPTO_GF128MUL=m 1259CONFIG_CRYPTO_WP512=m
1111CONFIG_CRYPTO_ECB=m 1260
1112CONFIG_CRYPTO_CBC=m 1261#
1113CONFIG_CRYPTO_PCBC=m 1262# Ciphers
1114CONFIG_CRYPTO_LRW=m 1263#
1115CONFIG_CRYPTO_CRYPTD=m
1116CONFIG_CRYPTO_DES=m
1117CONFIG_CRYPTO_FCRYPT=m
1118CONFIG_CRYPTO_BLOWFISH=m
1119CONFIG_CRYPTO_TWOFISH=m
1120CONFIG_CRYPTO_TWOFISH_COMMON=m
1121CONFIG_CRYPTO_SERPENT=m
1122CONFIG_CRYPTO_AES=m 1264CONFIG_CRYPTO_AES=m
1265CONFIG_CRYPTO_ANUBIS=m
1266CONFIG_CRYPTO_ARC4=m
1267CONFIG_CRYPTO_BLOWFISH=m
1268CONFIG_CRYPTO_CAMELLIA=m
1123CONFIG_CRYPTO_CAST5=m 1269CONFIG_CRYPTO_CAST5=m
1124CONFIG_CRYPTO_CAST6=m 1270CONFIG_CRYPTO_CAST6=m
1125CONFIG_CRYPTO_TEA=m 1271CONFIG_CRYPTO_DES=m
1126CONFIG_CRYPTO_ARC4=m 1272CONFIG_CRYPTO_FCRYPT=m
1127CONFIG_CRYPTO_KHAZAD=m 1273CONFIG_CRYPTO_KHAZAD=m
1128CONFIG_CRYPTO_ANUBIS=m 1274CONFIG_CRYPTO_SALSA20=m
1275CONFIG_CRYPTO_SEED=m
1276CONFIG_CRYPTO_SERPENT=m
1277CONFIG_CRYPTO_TEA=m
1278CONFIG_CRYPTO_TWOFISH=m
1279CONFIG_CRYPTO_TWOFISH_COMMON=m
1280
1281#
1282# Compression
1283#
1129CONFIG_CRYPTO_DEFLATE=m 1284CONFIG_CRYPTO_DEFLATE=m
1130CONFIG_CRYPTO_MICHAEL_MIC=m 1285CONFIG_CRYPTO_LZO=m
1131CONFIG_CRYPTO_CRC32C=m 1286
1132CONFIG_CRYPTO_CAMELLIA=m 1287#
1133# CONFIG_CRYPTO_TEST is not set 1288# Random Number Generation
1289#
1290CONFIG_CRYPTO_ANSI_CPRNG=m
1134# CONFIG_CRYPTO_HW is not set 1291# CONFIG_CRYPTO_HW is not set
1135 1292
1136# 1293#
@@ -1139,12 +1296,15 @@ CONFIG_CRYPTO_CAMELLIA=m
1139CONFIG_BITREVERSE=m 1296CONFIG_BITREVERSE=m
1140# CONFIG_CRC_CCITT is not set 1297# CONFIG_CRC_CCITT is not set
1141CONFIG_CRC16=m 1298CONFIG_CRC16=m
1142# CONFIG_CRC_ITU_T is not set 1299CONFIG_CRC_T10DIF=m
1300CONFIG_CRC_ITU_T=m
1143CONFIG_CRC32=m 1301CONFIG_CRC32=m
1144# CONFIG_CRC7 is not set 1302# CONFIG_CRC7 is not set
1145CONFIG_LIBCRC32C=m 1303CONFIG_LIBCRC32C=m
1146CONFIG_ZLIB_INFLATE=m 1304CONFIG_ZLIB_INFLATE=m
1147CONFIG_ZLIB_DEFLATE=m 1305CONFIG_ZLIB_DEFLATE=m
1306CONFIG_LZO_COMPRESS=m
1307CONFIG_LZO_DECOMPRESS=m
1148CONFIG_TEXTSEARCH=y 1308CONFIG_TEXTSEARCH=y
1149CONFIG_TEXTSEARCH_KMP=m 1309CONFIG_TEXTSEARCH_KMP=m
1150CONFIG_TEXTSEARCH_BM=m 1310CONFIG_TEXTSEARCH_BM=m
diff --git a/arch/mips/configs/ip32_defconfig b/arch/mips/configs/ip32_defconfig
index fe4699df9626..de4c7a0a96dd 100644
--- a/arch/mips/configs/ip32_defconfig
+++ b/arch/mips/configs/ip32_defconfig
@@ -1,71 +1,71 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.20 3# Linux kernel version: 2.6.28-rc7
4# Tue Feb 20 21:47:33 2007 4# Wed Dec 10 14:39:08 2008
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
8# 8#
9# Machine selection 9# Machine selection
10# 10#
11CONFIG_ZONE_DMA=y 11# CONFIG_MACH_ALCHEMY is not set
12# CONFIG_MIPS_MTX1 is not set
13# CONFIG_MIPS_BOSPORUS is not set
14# CONFIG_MIPS_PB1000 is not set
15# CONFIG_MIPS_PB1100 is not set
16# CONFIG_MIPS_PB1500 is not set
17# CONFIG_MIPS_PB1550 is not set
18# CONFIG_MIPS_PB1200 is not set
19# CONFIG_MIPS_DB1000 is not set
20# CONFIG_MIPS_DB1100 is not set
21# CONFIG_MIPS_DB1500 is not set
22# CONFIG_MIPS_DB1550 is not set
23# CONFIG_MIPS_DB1200 is not set
24# CONFIG_MIPS_MIRAGE is not set
25# CONFIG_BASLER_EXCITE is not set 12# CONFIG_BASLER_EXCITE is not set
13# CONFIG_BCM47XX is not set
26# CONFIG_MIPS_COBALT is not set 14# CONFIG_MIPS_COBALT is not set
27# CONFIG_MACH_DECSTATION is not set 15# CONFIG_MACH_DECSTATION is not set
28# CONFIG_MACH_JAZZ is not set 16# CONFIG_MACH_JAZZ is not set
17# CONFIG_LASAT is not set
18# CONFIG_LEMOTE_FULONG is not set
29# CONFIG_MIPS_MALTA is not set 19# CONFIG_MIPS_MALTA is not set
30# CONFIG_WR_PPMC is not set
31# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
32# CONFIG_MOMENCO_JAGUAR_ATX is not set 21# CONFIG_MACH_EMMA is not set
33# CONFIG_MIPS_XXS1500 is not set 22# CONFIG_MACH_VR41XX is not set
23# CONFIG_NXP_STB220 is not set
24# CONFIG_NXP_STB225 is not set
34# CONFIG_PNX8550_JBS is not set 25# CONFIG_PNX8550_JBS is not set
35# CONFIG_PNX8550_STB810 is not set 26# CONFIG_PNX8550_STB810 is not set
36# CONFIG_MACH_VR41XX is not set 27# CONFIG_PMC_MSP is not set
37# CONFIG_PMC_YOSEMITE is not set 28# CONFIG_PMC_YOSEMITE is not set
38# CONFIG_MARKEINS is not set
39# CONFIG_SGI_IP22 is not set 29# CONFIG_SGI_IP22 is not set
40# CONFIG_SGI_IP27 is not set 30# CONFIG_SGI_IP27 is not set
31# CONFIG_SGI_IP28 is not set
41CONFIG_SGI_IP32=y 32CONFIG_SGI_IP32=y
42# CONFIG_SIBYTE_BIGSUR is not set
43# CONFIG_SIBYTE_SWARM is not set
44# CONFIG_SIBYTE_SENTOSA is not set
45# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_CARMEL is not set
47# CONFIG_SIBYTE_LITTLESUR is not set
48# CONFIG_SIBYTE_CRHINE is not set 33# CONFIG_SIBYTE_CRHINE is not set
34# CONFIG_SIBYTE_CARMEL is not set
49# CONFIG_SIBYTE_CRHONE is not set 35# CONFIG_SIBYTE_CRHONE is not set
36# CONFIG_SIBYTE_RHONE is not set
37# CONFIG_SIBYTE_SWARM is not set
38# CONFIG_SIBYTE_LITTLESUR is not set
39# CONFIG_SIBYTE_SENTOSA is not set
40# CONFIG_SIBYTE_BIGSUR is not set
50# CONFIG_SNI_RM is not set 41# CONFIG_SNI_RM is not set
51# CONFIG_TOSHIBA_JMR3927 is not set 42# CONFIG_MACH_TX39XX is not set
52# CONFIG_TOSHIBA_RBTX4927 is not set 43# CONFIG_MACH_TX49XX is not set
53# CONFIG_TOSHIBA_RBTX4938 is not set 44# CONFIG_MIKROTIK_RB532 is not set
45# CONFIG_WR_PPMC is not set
54CONFIG_RWSEM_GENERIC_SPINLOCK=y 46CONFIG_RWSEM_GENERIC_SPINLOCK=y
55# CONFIG_ARCH_HAS_ILOG2_U32 is not set 47# CONFIG_ARCH_HAS_ILOG2_U32 is not set
56# CONFIG_ARCH_HAS_ILOG2_U64 is not set 48# CONFIG_ARCH_HAS_ILOG2_U64 is not set
49CONFIG_ARCH_SUPPORTS_OPROFILE=y
57CONFIG_GENERIC_FIND_NEXT_BIT=y 50CONFIG_GENERIC_FIND_NEXT_BIT=y
58CONFIG_GENERIC_HWEIGHT=y 51CONFIG_GENERIC_HWEIGHT=y
59CONFIG_GENERIC_CALIBRATE_DELAY=y 52CONFIG_GENERIC_CALIBRATE_DELAY=y
53CONFIG_GENERIC_CLOCKEVENTS=y
60CONFIG_GENERIC_TIME=y 54CONFIG_GENERIC_TIME=y
55CONFIG_GENERIC_CMOS_UPDATE=y
61CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 56CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
62# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set 57# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
63CONFIG_ARC=y 58CONFIG_ARC=y
59CONFIG_CEVT_R4K=y
60CONFIG_CSRC_R4K=y
64CONFIG_DMA_NONCOHERENT=y 61CONFIG_DMA_NONCOHERENT=y
65CONFIG_DMA_NEED_PCI_MAP_STATE=y 62CONFIG_DMA_NEED_PCI_MAP_STATE=y
63# CONFIG_HOTPLUG_CPU is not set
64# CONFIG_NO_IOPORT is not set
66CONFIG_CPU_BIG_ENDIAN=y 65CONFIG_CPU_BIG_ENDIAN=y
67# CONFIG_CPU_LITTLE_ENDIAN is not set 66# CONFIG_CPU_LITTLE_ENDIAN is not set
68CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 67CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
68CONFIG_IRQ_CPU=y
69CONFIG_ARC32=y 69CONFIG_ARC32=y
70CONFIG_BOOT_ELF32=y 70CONFIG_BOOT_ELF32=y
71CONFIG_MIPS_L1_CACHE_SHIFT=5 71CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -75,6 +75,7 @@ CONFIG_ARC_PROMLIB=y
75# 75#
76# CPU selection 76# CPU selection
77# 77#
78# CONFIG_CPU_LOONGSON2 is not set
78# CONFIG_CPU_MIPS32_R1 is not set 79# CONFIG_CPU_MIPS32_R1 is not set
79# CONFIG_CPU_MIPS32_R2 is not set 80# CONFIG_CPU_MIPS32_R2 is not set
80# CONFIG_CPU_MIPS64_R1 is not set 81# CONFIG_CPU_MIPS64_R1 is not set
@@ -87,6 +88,7 @@ CONFIG_ARC_PROMLIB=y
87# CONFIG_CPU_TX49XX is not set 88# CONFIG_CPU_TX49XX is not set
88CONFIG_CPU_R5000=y 89CONFIG_CPU_R5000=y
89# CONFIG_CPU_R5432 is not set 90# CONFIG_CPU_R5432 is not set
91# CONFIG_CPU_R5500 is not set
90# CONFIG_CPU_R6000 is not set 92# CONFIG_CPU_R6000 is not set
91# CONFIG_CPU_NEVADA is not set 93# CONFIG_CPU_NEVADA is not set
92# CONFIG_CPU_R8000 is not set 94# CONFIG_CPU_R8000 is not set
@@ -116,65 +118,73 @@ CONFIG_RM7000_CPU_SCACHE=y
116CONFIG_MIPS_MT_DISABLED=y 118CONFIG_MIPS_MT_DISABLED=y
117# CONFIG_MIPS_MT_SMP is not set 119# CONFIG_MIPS_MT_SMP is not set
118# CONFIG_MIPS_MT_SMTC is not set 120# CONFIG_MIPS_MT_SMTC is not set
119# CONFIG_MIPS_VPE_LOADER is not set
120CONFIG_CPU_HAS_LLSC=y 121CONFIG_CPU_HAS_LLSC=y
121CONFIG_CPU_HAS_SYNC=y 122CONFIG_CPU_HAS_SYNC=y
122CONFIG_GENERIC_HARDIRQS=y 123CONFIG_GENERIC_HARDIRQS=y
123CONFIG_GENERIC_IRQ_PROBE=y 124CONFIG_GENERIC_IRQ_PROBE=y
124CONFIG_ARCH_FLATMEM_ENABLE=y 125CONFIG_ARCH_FLATMEM_ENABLE=y
126CONFIG_ARCH_POPULATES_NODE_MAP=y
125CONFIG_SELECT_MEMORY_MODEL=y 127CONFIG_SELECT_MEMORY_MODEL=y
126CONFIG_FLATMEM_MANUAL=y 128CONFIG_FLATMEM_MANUAL=y
127# CONFIG_DISCONTIGMEM_MANUAL is not set 129# CONFIG_DISCONTIGMEM_MANUAL is not set
128# CONFIG_SPARSEMEM_MANUAL is not set 130# CONFIG_SPARSEMEM_MANUAL is not set
129CONFIG_FLATMEM=y 131CONFIG_FLATMEM=y
130CONFIG_FLAT_NODE_MEM_MAP=y 132CONFIG_FLAT_NODE_MEM_MAP=y
131# CONFIG_SPARSEMEM_STATIC is not set 133CONFIG_PAGEFLAGS_EXTENDED=y
132CONFIG_SPLIT_PTLOCK_CPUS=4 134CONFIG_SPLIT_PTLOCK_CPUS=4
133CONFIG_RESOURCES_64BIT=y 135CONFIG_RESOURCES_64BIT=y
134CONFIG_ZONE_DMA_FLAG=1 136CONFIG_PHYS_ADDR_T_64BIT=y
137CONFIG_ZONE_DMA_FLAG=0
138CONFIG_VIRT_TO_BUS=y
139CONFIG_UNEVICTABLE_LRU=y
140# CONFIG_NO_HZ is not set
141# CONFIG_HIGH_RES_TIMERS is not set
142CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
135# CONFIG_HZ_48 is not set 143# CONFIG_HZ_48 is not set
136# CONFIG_HZ_100 is not set 144# CONFIG_HZ_100 is not set
137# CONFIG_HZ_128 is not set 145# CONFIG_HZ_128 is not set
138# CONFIG_HZ_250 is not set 146CONFIG_HZ_250=y
139# CONFIG_HZ_256 is not set 147# CONFIG_HZ_256 is not set
140CONFIG_HZ_1000=y 148# CONFIG_HZ_1000 is not set
141# CONFIG_HZ_1024 is not set 149# CONFIG_HZ_1024 is not set
142CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 150CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
143CONFIG_HZ=1000 151CONFIG_HZ=250
144# CONFIG_PREEMPT_NONE is not set 152CONFIG_PREEMPT_NONE=y
145CONFIG_PREEMPT_VOLUNTARY=y 153# CONFIG_PREEMPT_VOLUNTARY is not set
146# CONFIG_PREEMPT is not set 154# CONFIG_PREEMPT is not set
147# CONFIG_KEXEC is not set 155# CONFIG_KEXEC is not set
156# CONFIG_SECCOMP is not set
148CONFIG_LOCKDEP_SUPPORT=y 157CONFIG_LOCKDEP_SUPPORT=y
149CONFIG_STACKTRACE_SUPPORT=y 158CONFIG_STACKTRACE_SUPPORT=y
150CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 159CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
151 160
152# 161#
153# Code maturity level options 162# General setup
154# 163#
155CONFIG_EXPERIMENTAL=y 164CONFIG_EXPERIMENTAL=y
156CONFIG_BROKEN_ON_SMP=y 165CONFIG_BROKEN_ON_SMP=y
157CONFIG_INIT_ENV_ARG_LIMIT=32 166CONFIG_INIT_ENV_ARG_LIMIT=32
158
159#
160# General setup
161#
162CONFIG_LOCALVERSION="" 167CONFIG_LOCALVERSION=""
163CONFIG_LOCALVERSION_AUTO=y 168CONFIG_LOCALVERSION_AUTO=y
164CONFIG_SWAP=y 169CONFIG_SWAP=y
165CONFIG_SYSVIPC=y 170CONFIG_SYSVIPC=y
166# CONFIG_IPC_NS is not set
167CONFIG_SYSVIPC_SYSCTL=y 171CONFIG_SYSVIPC_SYSCTL=y
168# CONFIG_POSIX_MQUEUE is not set 172CONFIG_POSIX_MQUEUE=y
169CONFIG_BSD_PROCESS_ACCT=y 173CONFIG_BSD_PROCESS_ACCT=y
170# CONFIG_BSD_PROCESS_ACCT_V3 is not set 174# CONFIG_BSD_PROCESS_ACCT_V3 is not set
171# CONFIG_TASKSTATS is not set 175# CONFIG_TASKSTATS is not set
172# CONFIG_UTS_NS is not set 176CONFIG_AUDIT=y
173# CONFIG_AUDIT is not set 177CONFIG_IKCONFIG=y
174# CONFIG_IKCONFIG is not set 178CONFIG_IKCONFIG_PROC=y
179CONFIG_LOG_BUF_SHIFT=14
180# CONFIG_CGROUPS is not set
181# CONFIG_GROUP_SCHED is not set
175CONFIG_SYSFS_DEPRECATED=y 182CONFIG_SYSFS_DEPRECATED=y
183CONFIG_SYSFS_DEPRECATED_V2=y
176CONFIG_RELAY=y 184CONFIG_RELAY=y
177# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 185# CONFIG_NAMESPACES is not set
186# CONFIG_BLK_DEV_INITRD is not set
187CONFIG_CC_OPTIMIZE_FOR_SIZE=y
178CONFIG_SYSCTL=y 188CONFIG_SYSCTL=y
179CONFIG_EMBEDDED=y 189CONFIG_EMBEDDED=y
180CONFIG_SYSCTL_SYSCALL=y 190CONFIG_SYSCTL_SYSCALL=y
@@ -184,27 +194,43 @@ CONFIG_HOTPLUG=y
184CONFIG_PRINTK=y 194CONFIG_PRINTK=y
185CONFIG_BUG=y 195CONFIG_BUG=y
186CONFIG_ELF_CORE=y 196CONFIG_ELF_CORE=y
197CONFIG_PCSPKR_PLATFORM=y
198CONFIG_COMPAT_BRK=y
187CONFIG_BASE_FULL=y 199CONFIG_BASE_FULL=y
188CONFIG_FUTEX=y 200CONFIG_FUTEX=y
201CONFIG_ANON_INODES=y
189CONFIG_EPOLL=y 202CONFIG_EPOLL=y
203CONFIG_SIGNALFD=y
204CONFIG_TIMERFD=y
205CONFIG_EVENTFD=y
190CONFIG_SHMEM=y 206CONFIG_SHMEM=y
191CONFIG_SLAB=y 207CONFIG_AIO=y
192CONFIG_VM_EVENT_COUNTERS=y 208CONFIG_VM_EVENT_COUNTERS=y
209CONFIG_PCI_QUIRKS=y
210CONFIG_SLAB=y
211# CONFIG_SLUB is not set
212# CONFIG_SLOB is not set
213CONFIG_PROFILING=y
214# CONFIG_MARKERS is not set
215CONFIG_OPROFILE=m
216CONFIG_HAVE_OPROFILE=y
217# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
218CONFIG_SLABINFO=y
193CONFIG_RT_MUTEXES=y 219CONFIG_RT_MUTEXES=y
194# CONFIG_TINY_SHMEM is not set 220# CONFIG_TINY_SHMEM is not set
195CONFIG_BASE_SMALL=0 221CONFIG_BASE_SMALL=0
196# CONFIG_SLOB is not set 222CONFIG_MODULES=y
197 223# CONFIG_MODULE_FORCE_LOAD is not set
198# 224CONFIG_MODULE_UNLOAD=y
199# Loadable module support 225# CONFIG_MODULE_FORCE_UNLOAD is not set
200# 226# CONFIG_MODVERSIONS is not set
201# CONFIG_MODULES is not set 227# CONFIG_MODULE_SRCVERSION_ALL is not set
202 228CONFIG_KMOD=y
203#
204# Block layer
205#
206CONFIG_BLOCK=y 229CONFIG_BLOCK=y
207# CONFIG_BLK_DEV_IO_TRACE is not set 230# CONFIG_BLK_DEV_IO_TRACE is not set
231# CONFIG_BLK_DEV_BSG is not set
232# CONFIG_BLK_DEV_INTEGRITY is not set
233CONFIG_BLOCK_COMPAT=y
208 234
209# 235#
210# IO Schedulers 236# IO Schedulers
@@ -213,59 +239,50 @@ CONFIG_IOSCHED_NOOP=y
213CONFIG_IOSCHED_AS=y 239CONFIG_IOSCHED_AS=y
214CONFIG_IOSCHED_DEADLINE=y 240CONFIG_IOSCHED_DEADLINE=y
215CONFIG_IOSCHED_CFQ=y 241CONFIG_IOSCHED_CFQ=y
216CONFIG_DEFAULT_AS=y 242# CONFIG_DEFAULT_AS is not set
217# CONFIG_DEFAULT_DEADLINE is not set 243# CONFIG_DEFAULT_DEADLINE is not set
218# CONFIG_DEFAULT_CFQ is not set 244CONFIG_DEFAULT_CFQ=y
219# CONFIG_DEFAULT_NOOP is not set 245# CONFIG_DEFAULT_NOOP is not set
220CONFIG_DEFAULT_IOSCHED="anticipatory" 246CONFIG_DEFAULT_IOSCHED="cfq"
247CONFIG_CLASSIC_RCU=y
248# CONFIG_FREEZER is not set
221 249
222# 250#
223# Bus options (PCI, PCMCIA, EISA, ISA, TC) 251# Bus options (PCI, PCMCIA, EISA, ISA, TC)
224# 252#
225CONFIG_HW_HAS_PCI=y 253CONFIG_HW_HAS_PCI=y
226CONFIG_PCI=y 254CONFIG_PCI=y
255CONFIG_PCI_DOMAINS=y
256# CONFIG_ARCH_SUPPORTS_MSI is not set
257# CONFIG_PCI_LEGACY is not set
227CONFIG_MMU=y 258CONFIG_MMU=y
228
229#
230# PCCARD (PCMCIA/CardBus) support
231#
232# CONFIG_PCCARD is not set 259# CONFIG_PCCARD is not set
233
234#
235# PCI Hotplug Support
236#
237# CONFIG_HOTPLUG_PCI is not set 260# CONFIG_HOTPLUG_PCI is not set
238 261
239# 262#
240# Executable file formats 263# Executable file formats
241# 264#
242CONFIG_BINFMT_ELF=y 265CONFIG_BINFMT_ELF=y
266# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
267# CONFIG_HAVE_AOUT is not set
243CONFIG_BINFMT_MISC=y 268CONFIG_BINFMT_MISC=y
244# CONFIG_BUILD_ELF64 is not set
245CONFIG_MIPS32_COMPAT=y 269CONFIG_MIPS32_COMPAT=y
246CONFIG_COMPAT=y 270CONFIG_COMPAT=y
247CONFIG_SYSVIPC_COMPAT=y 271CONFIG_SYSVIPC_COMPAT=y
248CONFIG_MIPS32_O32=y 272CONFIG_MIPS32_O32=y
249# CONFIG_MIPS32_N32 is not set 273CONFIG_MIPS32_N32=y
250CONFIG_BINFMT_ELF32=y 274CONFIG_BINFMT_ELF32=y
251 275
252# 276#
253# Power management options 277# Power management options
254# 278#
255CONFIG_PM=y 279CONFIG_ARCH_SUSPEND_POSSIBLE=y
256# CONFIG_PM_LEGACY is not set 280# CONFIG_PM is not set
257# CONFIG_PM_DEBUG is not set
258# CONFIG_PM_SYSFS_DEPRECATED is not set
259
260#
261# Networking
262#
263CONFIG_NET=y 281CONFIG_NET=y
264 282
265# 283#
266# Networking options 284# Networking options
267# 285#
268# CONFIG_NETDEBUG is not set
269CONFIG_PACKET=y 286CONFIG_PACKET=y
270CONFIG_PACKET_MMAP=y 287CONFIG_PACKET_MMAP=y
271CONFIG_UNIX=y 288CONFIG_UNIX=y
@@ -273,56 +290,83 @@ CONFIG_XFRM=y
273CONFIG_XFRM_USER=y 290CONFIG_XFRM_USER=y
274# CONFIG_XFRM_SUB_POLICY is not set 291# CONFIG_XFRM_SUB_POLICY is not set
275CONFIG_XFRM_MIGRATE=y 292CONFIG_XFRM_MIGRATE=y
293# CONFIG_XFRM_STATISTICS is not set
294CONFIG_XFRM_IPCOMP=m
276CONFIG_NET_KEY=y 295CONFIG_NET_KEY=y
277CONFIG_NET_KEY_MIGRATE=y 296CONFIG_NET_KEY_MIGRATE=y
278CONFIG_INET=y 297CONFIG_INET=y
279# CONFIG_IP_MULTICAST is not set 298CONFIG_IP_MULTICAST=y
280# CONFIG_IP_ADVANCED_ROUTER is not set 299# CONFIG_IP_ADVANCED_ROUTER is not set
281CONFIG_IP_FIB_HASH=y 300CONFIG_IP_FIB_HASH=y
282CONFIG_IP_PNP=y 301CONFIG_IP_PNP=y
283# CONFIG_IP_PNP_DHCP is not set 302CONFIG_IP_PNP_DHCP=y
284CONFIG_IP_PNP_BOOTP=y 303CONFIG_IP_PNP_BOOTP=y
285# CONFIG_IP_PNP_RARP is not set 304# CONFIG_IP_PNP_RARP is not set
286# CONFIG_NET_IPIP is not set 305CONFIG_NET_IPIP=m
287# CONFIG_NET_IPGRE is not set 306CONFIG_NET_IPGRE=m
307# CONFIG_NET_IPGRE_BROADCAST is not set
308# CONFIG_IP_MROUTE is not set
288# CONFIG_ARPD is not set 309# CONFIG_ARPD is not set
289# CONFIG_SYN_COOKIES is not set 310# CONFIG_SYN_COOKIES is not set
290# CONFIG_INET_AH is not set 311CONFIG_INET_AH=m
291# CONFIG_INET_ESP is not set 312CONFIG_INET_ESP=m
292# CONFIG_INET_IPCOMP is not set 313CONFIG_INET_IPCOMP=m
293# CONFIG_INET_XFRM_TUNNEL is not set 314CONFIG_INET_XFRM_TUNNEL=m
294# CONFIG_INET_TUNNEL is not set 315CONFIG_INET_TUNNEL=m
295CONFIG_INET_XFRM_MODE_TRANSPORT=y 316CONFIG_INET_XFRM_MODE_TRANSPORT=y
296CONFIG_INET_XFRM_MODE_TUNNEL=y 317CONFIG_INET_XFRM_MODE_TUNNEL=y
297CONFIG_INET_XFRM_MODE_BEET=y 318CONFIG_INET_XFRM_MODE_BEET=y
319# CONFIG_INET_LRO is not set
298CONFIG_INET_DIAG=y 320CONFIG_INET_DIAG=y
299CONFIG_INET_TCP_DIAG=y 321CONFIG_INET_TCP_DIAG=y
300# CONFIG_TCP_CONG_ADVANCED is not set 322CONFIG_TCP_CONG_ADVANCED=y
323CONFIG_TCP_CONG_BIC=m
301CONFIG_TCP_CONG_CUBIC=y 324CONFIG_TCP_CONG_CUBIC=y
325CONFIG_TCP_CONG_WESTWOOD=m
326CONFIG_TCP_CONG_HTCP=m
327# CONFIG_TCP_CONG_HSTCP is not set
328# CONFIG_TCP_CONG_HYBLA is not set
329# CONFIG_TCP_CONG_VEGAS is not set
330# CONFIG_TCP_CONG_SCALABLE is not set
331# CONFIG_TCP_CONG_LP is not set
332# CONFIG_TCP_CONG_VENO is not set
333# CONFIG_TCP_CONG_YEAH is not set
334# CONFIG_TCP_CONG_ILLINOIS is not set
335# CONFIG_DEFAULT_BIC is not set
336CONFIG_DEFAULT_CUBIC=y
337# CONFIG_DEFAULT_HTCP is not set
338# CONFIG_DEFAULT_VEGAS is not set
339# CONFIG_DEFAULT_WESTWOOD is not set
340# CONFIG_DEFAULT_RENO is not set
302CONFIG_DEFAULT_TCP_CONG="cubic" 341CONFIG_DEFAULT_TCP_CONG="cubic"
303CONFIG_TCP_MD5SIG=y 342CONFIG_TCP_MD5SIG=y
304# CONFIG_IPV6 is not set 343CONFIG_IPV6=m
305# CONFIG_INET6_XFRM_TUNNEL is not set 344# CONFIG_IPV6_PRIVACY is not set
306# CONFIG_INET6_TUNNEL is not set 345# CONFIG_IPV6_ROUTER_PREF is not set
346# CONFIG_IPV6_OPTIMISTIC_DAD is not set
347CONFIG_INET6_AH=m
348CONFIG_INET6_ESP=m
349CONFIG_INET6_IPCOMP=m
350# CONFIG_IPV6_MIP6 is not set
351CONFIG_INET6_XFRM_TUNNEL=m
352CONFIG_INET6_TUNNEL=m
353CONFIG_INET6_XFRM_MODE_TRANSPORT=m
354CONFIG_INET6_XFRM_MODE_TUNNEL=m
355CONFIG_INET6_XFRM_MODE_BEET=m
356# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
357CONFIG_IPV6_SIT=m
358CONFIG_IPV6_NDISC_NODETYPE=y
359CONFIG_IPV6_TUNNEL=m
360# CONFIG_IPV6_MULTIPLE_TABLES is not set
361# CONFIG_IPV6_MROUTE is not set
307CONFIG_NETWORK_SECMARK=y 362CONFIG_NETWORK_SECMARK=y
308# CONFIG_NETFILTER is not set 363# CONFIG_NETFILTER is not set
309
310#
311# DCCP Configuration (EXPERIMENTAL)
312#
313# CONFIG_IP_DCCP is not set 364# CONFIG_IP_DCCP is not set
314
315#
316# SCTP Configuration (EXPERIMENTAL)
317#
318# CONFIG_IP_SCTP is not set 365# CONFIG_IP_SCTP is not set
319
320#
321# TIPC Configuration (EXPERIMENTAL)
322#
323# CONFIG_TIPC is not set 366# CONFIG_TIPC is not set
324# CONFIG_ATM is not set 367# CONFIG_ATM is not set
325# CONFIG_BRIDGE is not set 368# CONFIG_BRIDGE is not set
369# CONFIG_NET_DSA is not set
326# CONFIG_VLAN_8021Q is not set 370# CONFIG_VLAN_8021Q is not set
327# CONFIG_DECNET is not set 371# CONFIG_DECNET is not set
328# CONFIG_LLC2 is not set 372# CONFIG_LLC2 is not set
@@ -332,10 +376,6 @@ CONFIG_NETWORK_SECMARK=y
332# CONFIG_LAPB is not set 376# CONFIG_LAPB is not set
333# CONFIG_ECONET is not set 377# CONFIG_ECONET is not set
334# CONFIG_WAN_ROUTER is not set 378# CONFIG_WAN_ROUTER is not set
335
336#
337# QoS and/or fair queueing
338#
339# CONFIG_NET_SCHED is not set 379# CONFIG_NET_SCHED is not set
340 380
341# 381#
@@ -343,15 +383,14 @@ CONFIG_NETWORK_SECMARK=y
343# 383#
344# CONFIG_NET_PKTGEN is not set 384# CONFIG_NET_PKTGEN is not set
345# CONFIG_HAMRADIO is not set 385# CONFIG_HAMRADIO is not set
386# CONFIG_CAN is not set
346# CONFIG_IRDA is not set 387# CONFIG_IRDA is not set
347# CONFIG_BT is not set 388# CONFIG_BT is not set
348CONFIG_IEEE80211=y 389# CONFIG_AF_RXRPC is not set
349# CONFIG_IEEE80211_DEBUG is not set 390# CONFIG_PHONET is not set
350CONFIG_IEEE80211_CRYPT_WEP=y 391# CONFIG_WIRELESS is not set
351CONFIG_IEEE80211_CRYPT_CCMP=y 392# CONFIG_RFKILL is not set
352CONFIG_IEEE80211_SOFTMAC=y 393# CONFIG_NET_9P is not set
353# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
354CONFIG_WIRELESS_EXT=y
355 394
356# 395#
357# Device Drivers 396# Device Drivers
@@ -360,60 +399,40 @@ CONFIG_WIRELESS_EXT=y
360# 399#
361# Generic Driver Options 400# Generic Driver Options
362# 401#
402CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
363CONFIG_STANDALONE=y 403CONFIG_STANDALONE=y
364CONFIG_PREVENT_FIRMWARE_BUILD=y 404CONFIG_PREVENT_FIRMWARE_BUILD=y
365CONFIG_FW_LOADER=y 405CONFIG_FW_LOADER=y
406CONFIG_FIRMWARE_IN_KERNEL=y
407CONFIG_EXTRA_FIRMWARE=""
366# CONFIG_SYS_HYPERVISOR is not set 408# CONFIG_SYS_HYPERVISOR is not set
367
368#
369# Connector - unified userspace <-> kernelspace linker
370#
371CONFIG_CONNECTOR=y 409CONFIG_CONNECTOR=y
372CONFIG_PROC_EVENTS=y 410CONFIG_PROC_EVENTS=y
373
374#
375# Memory Technology Devices (MTD)
376#
377# CONFIG_MTD is not set 411# CONFIG_MTD is not set
378
379#
380# Parallel port support
381#
382# CONFIG_PARPORT is not set 412# CONFIG_PARPORT is not set
383 413CONFIG_BLK_DEV=y
384#
385# Plug and Play support
386#
387# CONFIG_PNPACPI is not set
388
389#
390# Block devices
391#
392# CONFIG_BLK_CPQ_DA is not set 414# CONFIG_BLK_CPQ_DA is not set
393# CONFIG_BLK_CPQ_CISS_DA is not set 415# CONFIG_BLK_CPQ_CISS_DA is not set
394# CONFIG_BLK_DEV_DAC960 is not set 416# CONFIG_BLK_DEV_DAC960 is not set
395# CONFIG_BLK_DEV_UMEM is not set 417# CONFIG_BLK_DEV_UMEM is not set
396# CONFIG_BLK_DEV_COW_COMMON is not set 418# CONFIG_BLK_DEV_COW_COMMON is not set
397CONFIG_BLK_DEV_LOOP=y 419CONFIG_BLK_DEV_LOOP=m
398# CONFIG_BLK_DEV_CRYPTOLOOP is not set 420CONFIG_BLK_DEV_CRYPTOLOOP=m
399# CONFIG_BLK_DEV_NBD is not set 421CONFIG_BLK_DEV_NBD=m
400# CONFIG_BLK_DEV_SX8 is not set 422# CONFIG_BLK_DEV_SX8 is not set
401# CONFIG_BLK_DEV_RAM is not set 423# CONFIG_BLK_DEV_RAM is not set
402# CONFIG_BLK_DEV_INITRD is not set 424# CONFIG_CDROM_PKTCDVD is not set
403CONFIG_CDROM_PKTCDVD=y 425# CONFIG_ATA_OVER_ETH is not set
404CONFIG_CDROM_PKTCDVD_BUFFERS=8 426# CONFIG_BLK_DEV_HD is not set
405# CONFIG_CDROM_PKTCDVD_WCACHE is not set 427CONFIG_MISC_DEVICES=y
406CONFIG_ATA_OVER_ETH=y 428# CONFIG_PHANTOM is not set
407 429# CONFIG_EEPROM_93CX6 is not set
408#
409# Misc devices
410#
411CONFIG_SGI_IOC4=y 430CONFIG_SGI_IOC4=y
412# CONFIG_TIFM_CORE is not set 431# CONFIG_TIFM_CORE is not set
413 432# CONFIG_ENCLOSURE_SERVICES is not set
414# 433# CONFIG_HP_ILO is not set
415# ATA/ATAPI/MFM/RLL support 434# CONFIG_C2PORT is not set
416# 435CONFIG_HAVE_IDE=y
417# CONFIG_IDE is not set 436# CONFIG_IDE is not set
418 437
419# 438#
@@ -421,19 +440,20 @@ CONFIG_SGI_IOC4=y
421# 440#
422CONFIG_RAID_ATTRS=y 441CONFIG_RAID_ATTRS=y
423CONFIG_SCSI=y 442CONFIG_SCSI=y
443CONFIG_SCSI_DMA=y
424CONFIG_SCSI_TGT=y 444CONFIG_SCSI_TGT=y
425CONFIG_SCSI_NETLINK=y 445# CONFIG_SCSI_NETLINK is not set
426CONFIG_SCSI_PROC_FS=y 446CONFIG_SCSI_PROC_FS=y
427 447
428# 448#
429# SCSI support type (disk, tape, CD-ROM) 449# SCSI support type (disk, tape, CD-ROM)
430# 450#
431CONFIG_BLK_DEV_SD=y 451CONFIG_BLK_DEV_SD=y
432CONFIG_CHR_DEV_ST=y 452# CONFIG_CHR_DEV_ST is not set
433CONFIG_CHR_DEV_OSST=y 453# CONFIG_CHR_DEV_OSST is not set
434CONFIG_BLK_DEV_SR=y 454CONFIG_BLK_DEV_SR=y
435CONFIG_BLK_DEV_SR_VENDOR=y 455CONFIG_BLK_DEV_SR_VENDOR=y
436CONFIG_CHR_DEV_SG=y 456CONFIG_CHR_DEV_SG=m
437# CONFIG_CHR_DEV_SCH is not set 457# CONFIG_CHR_DEV_SCH is not set
438 458
439# 459#
@@ -443,35 +463,36 @@ CONFIG_SCSI_MULTI_LUN=y
443CONFIG_SCSI_CONSTANTS=y 463CONFIG_SCSI_CONSTANTS=y
444CONFIG_SCSI_LOGGING=y 464CONFIG_SCSI_LOGGING=y
445CONFIG_SCSI_SCAN_ASYNC=y 465CONFIG_SCSI_SCAN_ASYNC=y
466CONFIG_SCSI_WAIT_SCAN=m
446 467
447# 468#
448# SCSI Transports 469# SCSI Transports
449# 470#
450CONFIG_SCSI_SPI_ATTRS=y 471CONFIG_SCSI_SPI_ATTRS=y
451CONFIG_SCSI_FC_ATTRS=y 472# CONFIG_SCSI_FC_ATTRS is not set
452# CONFIG_SCSI_ISCSI_ATTRS is not set 473# CONFIG_SCSI_ISCSI_ATTRS is not set
453CONFIG_SCSI_SAS_ATTRS=y 474CONFIG_SCSI_SAS_ATTRS=y
454CONFIG_SCSI_SAS_LIBSAS=y 475CONFIG_SCSI_SAS_LIBSAS=y
476CONFIG_SCSI_SAS_HOST_SMP=y
455# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set 477# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
456 478# CONFIG_SCSI_SRP_ATTRS is not set
457# 479CONFIG_SCSI_LOWLEVEL=y
458# SCSI low-level drivers
459#
460# CONFIG_ISCSI_TCP is not set 480# CONFIG_ISCSI_TCP is not set
461# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 481# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
462# CONFIG_SCSI_3W_9XXX is not set 482# CONFIG_SCSI_3W_9XXX is not set
463# CONFIG_SCSI_ACARD is not set 483# CONFIG_SCSI_ACARD is not set
464# CONFIG_SCSI_AACRAID is not set 484# CONFIG_SCSI_AACRAID is not set
465CONFIG_SCSI_AIC7XXX=y 485CONFIG_SCSI_AIC7XXX=y
466CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 486CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
467CONFIG_AIC7XXX_RESET_DELAY_MS=15000 487CONFIG_AIC7XXX_RESET_DELAY_MS=15000
468CONFIG_AIC7XXX_DEBUG_ENABLE=y 488CONFIG_AIC7XXX_DEBUG_ENABLE=y
469CONFIG_AIC7XXX_DEBUG_MASK=0 489CONFIG_AIC7XXX_DEBUG_MASK=0
470CONFIG_AIC7XXX_REG_PRETTY_PRINT=y 490CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
471# CONFIG_SCSI_AIC7XXX_OLD is not set 491# CONFIG_SCSI_AIC7XXX_OLD is not set
472# CONFIG_SCSI_AIC79XX is not set 492# CONFIG_SCSI_AIC79XX is not set
473CONFIG_SCSI_AIC94XX=y 493# CONFIG_SCSI_AIC94XX is not set
474# CONFIG_AIC94XX_DEBUG is not set 494# CONFIG_SCSI_DPT_I2O is not set
495# CONFIG_SCSI_ADVANSYS is not set
475# CONFIG_SCSI_ARCMSR is not set 496# CONFIG_SCSI_ARCMSR is not set
476# CONFIG_MEGARAID_NEWGEN is not set 497# CONFIG_MEGARAID_NEWGEN is not set
477# CONFIG_MEGARAID_LEGACY is not set 498# CONFIG_MEGARAID_LEGACY is not set
@@ -482,6 +503,7 @@ CONFIG_SCSI_AIC94XX=y
482# CONFIG_SCSI_IPS is not set 503# CONFIG_SCSI_IPS is not set
483# CONFIG_SCSI_INITIO is not set 504# CONFIG_SCSI_INITIO is not set
484# CONFIG_SCSI_INIA100 is not set 505# CONFIG_SCSI_INIA100 is not set
506# CONFIG_SCSI_MVSAS is not set
485# CONFIG_SCSI_STEX is not set 507# CONFIG_SCSI_STEX is not set
486# CONFIG_SCSI_SYM53C8XX_2 is not set 508# CONFIG_SCSI_SYM53C8XX_2 is not set
487# CONFIG_SCSI_QLOGIC_1280 is not set 509# CONFIG_SCSI_QLOGIC_1280 is not set
@@ -492,147 +514,81 @@ CONFIG_SCSI_AIC94XX=y
492# CONFIG_SCSI_DC390T is not set 514# CONFIG_SCSI_DC390T is not set
493# CONFIG_SCSI_DEBUG is not set 515# CONFIG_SCSI_DEBUG is not set
494# CONFIG_SCSI_SRP is not set 516# CONFIG_SCSI_SRP is not set
495 517# CONFIG_SCSI_DH is not set
496#
497# Serial ATA (prod) and Parallel ATA (experimental) drivers
498#
499# CONFIG_ATA is not set 518# CONFIG_ATA is not set
500
501#
502# Multi-device support (RAID and LVM)
503#
504# CONFIG_MD is not set 519# CONFIG_MD is not set
505
506#
507# Fusion MPT device support
508#
509# CONFIG_FUSION is not set 520# CONFIG_FUSION is not set
510# CONFIG_FUSION_SPI is not set
511# CONFIG_FUSION_FC is not set
512# CONFIG_FUSION_SAS is not set
513 521
514# 522#
515# IEEE 1394 (FireWire) support 523# IEEE 1394 (FireWire) support
516# 524#
517# CONFIG_IEEE1394 is not set
518 525
519# 526#
520# I2O device support 527# Enable only one of the two stacks, unless you know what you are doing
521# 528#
529# CONFIG_FIREWIRE is not set
530# CONFIG_IEEE1394 is not set
522# CONFIG_I2O is not set 531# CONFIG_I2O is not set
523
524#
525# Network device support
526#
527CONFIG_NETDEVICES=y 532CONFIG_NETDEVICES=y
528# CONFIG_DUMMY is not set 533CONFIG_DUMMY=m
529# CONFIG_BONDING is not set 534CONFIG_BONDING=m
535# CONFIG_MACVLAN is not set
530# CONFIG_EQUALIZER is not set 536# CONFIG_EQUALIZER is not set
531# CONFIG_TUN is not set 537# CONFIG_TUN is not set
532 538# CONFIG_VETH is not set
533#
534# ARCnet devices
535#
536# CONFIG_ARCNET is not set 539# CONFIG_ARCNET is not set
537 540# CONFIG_PHYLIB is not set
538#
539# PHY device support
540#
541CONFIG_PHYLIB=y
542
543#
544# MII PHY device drivers
545#
546CONFIG_MARVELL_PHY=y
547CONFIG_DAVICOM_PHY=y
548CONFIG_QSEMI_PHY=y
549CONFIG_LXT_PHY=y
550CONFIG_CICADA_PHY=y
551CONFIG_VITESSE_PHY=y
552CONFIG_SMSC_PHY=y
553# CONFIG_BROADCOM_PHY is not set
554# CONFIG_FIXED_PHY is not set
555
556#
557# Ethernet (10 or 100Mbit)
558#
559CONFIG_NET_ETHERNET=y 541CONFIG_NET_ETHERNET=y
560# CONFIG_MII is not set 542CONFIG_MII=y
543# CONFIG_AX88796 is not set
561CONFIG_SGI_O2MACE_ETH=y 544CONFIG_SGI_O2MACE_ETH=y
562# CONFIG_HAPPYMEAL is not set 545# CONFIG_HAPPYMEAL is not set
563# CONFIG_SUNGEM is not set 546# CONFIG_SUNGEM is not set
564# CONFIG_CASSINI is not set 547# CONFIG_CASSINI is not set
565# CONFIG_NET_VENDOR_3COM is not set 548# CONFIG_NET_VENDOR_3COM is not set
549# CONFIG_SMC91X is not set
566# CONFIG_DM9000 is not set 550# CONFIG_DM9000 is not set
567 551CONFIG_NET_TULIP=y
568# 552CONFIG_DE2104X=m
569# Tulip family network device support 553CONFIG_TULIP=m
570# 554# CONFIG_TULIP_MWI is not set
571# CONFIG_NET_TULIP is not set 555CONFIG_TULIP_MMIO=y
556# CONFIG_TULIP_NAPI is not set
557# CONFIG_DE4X5 is not set
558# CONFIG_WINBOND_840 is not set
559# CONFIG_DM9102 is not set
560# CONFIG_ULI526X is not set
572# CONFIG_HP100 is not set 561# CONFIG_HP100 is not set
562# CONFIG_IBM_NEW_EMAC_ZMII is not set
563# CONFIG_IBM_NEW_EMAC_RGMII is not set
564# CONFIG_IBM_NEW_EMAC_TAH is not set
565# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
566# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
567# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
568# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
573# CONFIG_NET_PCI is not set 569# CONFIG_NET_PCI is not set
574 570# CONFIG_B44 is not set
575# 571# CONFIG_ATL2 is not set
576# Ethernet (1000 Mbit) 572# CONFIG_NETDEV_1000 is not set
577# 573# CONFIG_NETDEV_10000 is not set
578# CONFIG_ACENIC is not set
579# CONFIG_DL2K is not set
580# CONFIG_E1000 is not set
581# CONFIG_NS83820 is not set
582# CONFIG_HAMACHI is not set
583# CONFIG_YELLOWFIN is not set
584# CONFIG_R8169 is not set
585# CONFIG_SIS190 is not set
586# CONFIG_SKGE is not set
587# CONFIG_SKY2 is not set
588# CONFIG_SK98LIN is not set
589# CONFIG_TIGON3 is not set
590# CONFIG_BNX2 is not set
591CONFIG_QLA3XXX=y
592# CONFIG_ATL1 is not set
593
594#
595# Ethernet (10000 Mbit)
596#
597# CONFIG_CHELSIO_T1 is not set
598CONFIG_CHELSIO_T3=y
599# CONFIG_IXGB is not set
600# CONFIG_S2IO is not set
601# CONFIG_MYRI10GE is not set
602CONFIG_NETXEN_NIC=y
603
604#
605# Token Ring devices
606#
607# CONFIG_TR is not set 574# CONFIG_TR is not set
608 575
609# 576#
610# Wireless LAN (non-hamradio) 577# Wireless LAN
611#
612# CONFIG_NET_RADIO is not set
613
614#
615# Wan interfaces
616# 578#
579# CONFIG_WLAN_PRE80211 is not set
580# CONFIG_WLAN_80211 is not set
581# CONFIG_IWLWIFI_LEDS is not set
617# CONFIG_WAN is not set 582# CONFIG_WAN is not set
618# CONFIG_FDDI is not set 583# CONFIG_FDDI is not set
619# CONFIG_HIPPI is not set 584# CONFIG_HIPPI is not set
620# CONFIG_PPP is not set 585# CONFIG_PPP is not set
621# CONFIG_SLIP is not set 586# CONFIG_SLIP is not set
622# CONFIG_NET_FC is not set 587# CONFIG_NET_FC is not set
623# CONFIG_SHAPER is not set
624# CONFIG_NETCONSOLE is not set 588# CONFIG_NETCONSOLE is not set
625# CONFIG_NETPOLL is not set 589# CONFIG_NETPOLL is not set
626# CONFIG_NET_POLL_CONTROLLER is not set 590# CONFIG_NET_POLL_CONTROLLER is not set
627
628#
629# ISDN subsystem
630#
631# CONFIG_ISDN is not set 591# CONFIG_ISDN is not set
632
633#
634# Telephony Support
635#
636# CONFIG_PHONE is not set 592# CONFIG_PHONE is not set
637 593
638# 594#
@@ -640,6 +596,7 @@ CONFIG_NETXEN_NIC=y
640# 596#
641CONFIG_INPUT=y 597CONFIG_INPUT=y
642# CONFIG_INPUT_FF_MEMLESS is not set 598# CONFIG_INPUT_FF_MEMLESS is not set
599# CONFIG_INPUT_POLLDEV is not set
643 600
644# 601#
645# Userland interfaces 602# Userland interfaces
@@ -649,16 +606,32 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
649CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 606CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
650CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 607CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
651# CONFIG_INPUT_JOYDEV is not set 608# CONFIG_INPUT_JOYDEV is not set
652# CONFIG_INPUT_TSDEV is not set 609CONFIG_INPUT_EVDEV=m
653# CONFIG_INPUT_EVDEV is not set
654# CONFIG_INPUT_EVBUG is not set 610# CONFIG_INPUT_EVBUG is not set
655 611
656# 612#
657# Input Device Drivers 613# Input Device Drivers
658# 614#
659# CONFIG_INPUT_KEYBOARD is not set 615CONFIG_INPUT_KEYBOARD=y
660# CONFIG_INPUT_MOUSE is not set 616CONFIG_KEYBOARD_ATKBD=y
617# CONFIG_KEYBOARD_SUNKBD is not set
618# CONFIG_KEYBOARD_LKKBD is not set
619# CONFIG_KEYBOARD_XTKBD is not set
620# CONFIG_KEYBOARD_NEWTON is not set
621# CONFIG_KEYBOARD_STOWAWAY is not set
622CONFIG_INPUT_MOUSE=y
623CONFIG_MOUSE_PS2=y
624CONFIG_MOUSE_PS2_ALPS=y
625CONFIG_MOUSE_PS2_LOGIPS2PP=y
626CONFIG_MOUSE_PS2_SYNAPTICS=y
627CONFIG_MOUSE_PS2_LIFEBOOK=y
628CONFIG_MOUSE_PS2_TRACKPOINT=y
629# CONFIG_MOUSE_PS2_ELANTECH is not set
630# CONFIG_MOUSE_PS2_TOUCHKIT is not set
631# CONFIG_MOUSE_SERIAL is not set
632# CONFIG_MOUSE_VSXXXAA is not set
661# CONFIG_INPUT_JOYSTICK is not set 633# CONFIG_INPUT_JOYSTICK is not set
634# CONFIG_INPUT_TABLET is not set
662# CONFIG_INPUT_TOUCHSCREEN is not set 635# CONFIG_INPUT_TOUCHSCREEN is not set
663# CONFIG_INPUT_MISC is not set 636# CONFIG_INPUT_MISC is not set
664 637
@@ -669,8 +642,8 @@ CONFIG_SERIO=y
669# CONFIG_SERIO_I8042 is not set 642# CONFIG_SERIO_I8042 is not set
670CONFIG_SERIO_SERPORT=y 643CONFIG_SERIO_SERPORT=y
671# CONFIG_SERIO_PCIPS2 is not set 644# CONFIG_SERIO_PCIPS2 is not set
672# CONFIG_SERIO_MACEPS2 is not set 645CONFIG_SERIO_MACEPS2=y
673# CONFIG_SERIO_LIBPS2 is not set 646CONFIG_SERIO_LIBPS2=y
674CONFIG_SERIO_RAW=y 647CONFIG_SERIO_RAW=y
675# CONFIG_GAMEPORT is not set 648# CONFIG_GAMEPORT is not set
676 649
@@ -678,10 +651,13 @@ CONFIG_SERIO_RAW=y
678# Character devices 651# Character devices
679# 652#
680CONFIG_VT=y 653CONFIG_VT=y
654# CONFIG_CONSOLE_TRANSLATIONS is not set
681CONFIG_VT_CONSOLE=y 655CONFIG_VT_CONSOLE=y
682CONFIG_HW_CONSOLE=y 656CONFIG_HW_CONSOLE=y
683CONFIG_VT_HW_CONSOLE_BINDING=y 657# CONFIG_VT_HW_CONSOLE_BINDING is not set
658CONFIG_DEVKMEM=y
684# CONFIG_SERIAL_NONSTANDARD is not set 659# CONFIG_SERIAL_NONSTANDARD is not set
660# CONFIG_NOZOMI is not set
685 661
686# 662#
687# Serial drivers 663# Serial drivers
@@ -702,192 +678,304 @@ CONFIG_SERIAL_CORE_CONSOLE=y
702CONFIG_UNIX98_PTYS=y 678CONFIG_UNIX98_PTYS=y
703CONFIG_LEGACY_PTYS=y 679CONFIG_LEGACY_PTYS=y
704CONFIG_LEGACY_PTY_COUNT=256 680CONFIG_LEGACY_PTY_COUNT=256
705
706#
707# IPMI
708#
709# CONFIG_IPMI_HANDLER is not set 681# CONFIG_IPMI_HANDLER is not set
710 682CONFIG_HW_RANDOM=y
711#
712# Watchdog Cards
713#
714# CONFIG_WATCHDOG is not set
715# CONFIG_HW_RANDOM is not set
716# CONFIG_RTC is not set
717# CONFIG_GEN_RTC is not set
718# CONFIG_DTLK is not set
719# CONFIG_R3964 is not set 683# CONFIG_R3964 is not set
720# CONFIG_APPLICOM is not set 684# CONFIG_APPLICOM is not set
721# CONFIG_DRM is not set
722# CONFIG_RAW_DRIVER is not set 685# CONFIG_RAW_DRIVER is not set
723
724#
725# TPM devices
726#
727# CONFIG_TCG_TPM is not set 686# CONFIG_TCG_TPM is not set
687CONFIG_DEVPORT=y
688# CONFIG_I2C is not set
689# CONFIG_SPI is not set
690# CONFIG_W1 is not set
691# CONFIG_POWER_SUPPLY is not set
692CONFIG_HWMON=y
693# CONFIG_HWMON_VID is not set
694# CONFIG_SENSORS_I5K_AMB is not set
695# CONFIG_SENSORS_F71805F is not set
696# CONFIG_SENSORS_F71882FG is not set
697# CONFIG_SENSORS_IT87 is not set
698# CONFIG_SENSORS_PC87360 is not set
699# CONFIG_SENSORS_PC87427 is not set
700# CONFIG_SENSORS_SIS5595 is not set
701# CONFIG_SENSORS_SMSC47M1 is not set
702# CONFIG_SENSORS_SMSC47B397 is not set
703# CONFIG_SENSORS_VIA686A is not set
704# CONFIG_SENSORS_VT1211 is not set
705# CONFIG_SENSORS_VT8231 is not set
706# CONFIG_SENSORS_W83627HF is not set
707# CONFIG_SENSORS_W83627EHF is not set
708# CONFIG_HWMON_DEBUG_CHIP is not set
709# CONFIG_THERMAL is not set
710# CONFIG_THERMAL_HWMON is not set
711CONFIG_WATCHDOG=y
712# CONFIG_WATCHDOG_NOWAYOUT is not set
728 713
729# 714#
730# I2C support 715# Watchdog Device Drivers
731# 716#
732# CONFIG_I2C is not set 717# CONFIG_SOFT_WATCHDOG is not set
718# CONFIG_ALIM7101_WDT is not set
733 719
734# 720#
735# SPI support 721# PCI-based Watchdog Cards
736# 722#
737# CONFIG_SPI is not set 723# CONFIG_PCIPCWATCHDOG is not set
738# CONFIG_SPI_MASTER is not set 724# CONFIG_WDTPCI is not set
725CONFIG_SSB_POSSIBLE=y
739 726
740# 727#
741# Dallas's 1-wire bus 728# Sonics Silicon Backplane
742# 729#
743# CONFIG_W1 is not set 730# CONFIG_SSB is not set
744 731
745# 732#
746# Hardware Monitoring support 733# Multifunction device drivers
747# 734#
748# CONFIG_HWMON is not set 735# CONFIG_MFD_CORE is not set
749# CONFIG_HWMON_VID is not set 736# CONFIG_MFD_SM501 is not set
737# CONFIG_HTC_PASIC3 is not set
738# CONFIG_MFD_TMIO is not set
739# CONFIG_REGULATOR is not set
750 740
751# 741#
752# Multimedia devices 742# Multimedia devices
753# 743#
754# CONFIG_VIDEO_DEV is not set
755 744
756# 745#
757# Digital Video Broadcasting Devices 746# Multimedia core support
758# 747#
759# CONFIG_DVB is not set 748CONFIG_VIDEO_DEV=m
749CONFIG_VIDEO_V4L2_COMMON=m
750CONFIG_VIDEO_ALLOW_V4L1=y
751CONFIG_VIDEO_V4L1_COMPAT=y
752# CONFIG_DVB_CORE is not set
753CONFIG_VIDEO_MEDIA=m
760 754
761# 755#
762# Graphics support 756# Multimedia drivers
763# 757#
764# CONFIG_FIRMWARE_EDID is not set 758# CONFIG_MEDIA_ATTACH is not set
765# CONFIG_FB is not set 759CONFIG_VIDEO_V4L2=m
760CONFIG_VIDEO_V4L1=m
761CONFIG_VIDEOBUF_GEN=m
762CONFIG_VIDEOBUF_VMALLOC=m
763CONFIG_VIDEO_CAPTURE_DRIVERS=y
764# CONFIG_VIDEO_ADV_DEBUG is not set
765# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
766CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
767CONFIG_VIDEO_VIVI=m
768# CONFIG_VIDEO_CPIA is not set
769# CONFIG_VIDEO_STRADIS is not set
770# CONFIG_SOC_CAMERA is not set
771CONFIG_RADIO_ADAPTERS=y
772# CONFIG_RADIO_GEMTEK_PCI is not set
773# CONFIG_RADIO_MAXIRADIO is not set
774# CONFIG_RADIO_MAESTRO is not set
775CONFIG_DAB=y
766 776
767# 777#
768# Console display driver support 778# Graphics support
769# 779#
770# CONFIG_VGA_CONSOLE is not set 780# CONFIG_DRM is not set
771CONFIG_DUMMY_CONSOLE=y 781# CONFIG_VGASTATE is not set
782CONFIG_VIDEO_OUTPUT_CONTROL=y
783CONFIG_FB=y
784CONFIG_FIRMWARE_EDID=y
785# CONFIG_FB_DDC is not set
786# CONFIG_FB_BOOT_VESA_SUPPORT is not set
787CONFIG_FB_CFB_FILLRECT=y
788CONFIG_FB_CFB_COPYAREA=y
789CONFIG_FB_CFB_IMAGEBLIT=y
790# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
791# CONFIG_FB_SYS_FILLRECT is not set
792# CONFIG_FB_SYS_COPYAREA is not set
793# CONFIG_FB_SYS_IMAGEBLIT is not set
794# CONFIG_FB_FOREIGN_ENDIAN is not set
795# CONFIG_FB_SYS_FOPS is not set
796# CONFIG_FB_SVGALIB is not set
797# CONFIG_FB_MACMODES is not set
798# CONFIG_FB_BACKLIGHT is not set
799# CONFIG_FB_MODE_HELPERS is not set
800# CONFIG_FB_TILEBLITTING is not set
801
802#
803# Frame buffer hardware drivers
804#
805# CONFIG_FB_CIRRUS is not set
806# CONFIG_FB_PM2 is not set
807# CONFIG_FB_CYBER2000 is not set
808# CONFIG_FB_ASILIANT is not set
809# CONFIG_FB_IMSTT is not set
810# CONFIG_FB_UVESA is not set
811CONFIG_FB_GBE=y
812CONFIG_FB_GBE_MEM=4
813# CONFIG_FB_S1D13XXX is not set
814# CONFIG_FB_NVIDIA is not set
815# CONFIG_FB_RIVA is not set
816# CONFIG_FB_MATROX is not set
817# CONFIG_FB_RADEON is not set
818# CONFIG_FB_ATY128 is not set
819# CONFIG_FB_ATY is not set
820# CONFIG_FB_S3 is not set
821# CONFIG_FB_SAVAGE is not set
822# CONFIG_FB_SIS is not set
823# CONFIG_FB_VIA is not set
824# CONFIG_FB_NEOMAGIC is not set
825# CONFIG_FB_KYRO is not set
826# CONFIG_FB_3DFX is not set
827# CONFIG_FB_VOODOO1 is not set
828# CONFIG_FB_VT8623 is not set
829# CONFIG_FB_TRIDENT is not set
830# CONFIG_FB_ARK is not set
831# CONFIG_FB_PM3 is not set
832# CONFIG_FB_CARMINE is not set
833# CONFIG_FB_VIRTUAL is not set
834# CONFIG_FB_METRONOME is not set
835# CONFIG_FB_MB862XX is not set
772# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 836# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
773 837
774# 838#
775# Sound 839# Display device support
776# 840#
777# CONFIG_SOUND is not set 841# CONFIG_DISPLAY_SUPPORT is not set
778 842
779# 843#
780# HID Devices 844# Console display driver support
781# 845#
846# CONFIG_VGA_CONSOLE is not set
847CONFIG_DUMMY_CONSOLE=y
848CONFIG_FRAMEBUFFER_CONSOLE=y
849# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
850# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
851CONFIG_FONTS=y
852CONFIG_FONT_8x8=y
853CONFIG_FONT_8x16=y
854# CONFIG_FONT_6x11 is not set
855# CONFIG_FONT_7x14 is not set
856# CONFIG_FONT_PEARL_8x8 is not set
857# CONFIG_FONT_ACORN_8x8 is not set
858# CONFIG_FONT_MINI_4x6 is not set
859# CONFIG_FONT_SUN8x16 is not set
860# CONFIG_FONT_SUN12x22 is not set
861# CONFIG_FONT_10x18 is not set
862CONFIG_LOGO=y
863# CONFIG_LOGO_LINUX_MONO is not set
864# CONFIG_LOGO_LINUX_VGA16 is not set
865# CONFIG_LOGO_LINUX_CLUT224 is not set
866CONFIG_LOGO_SGI_CLUT224=y
867# CONFIG_SOUND is not set
868CONFIG_HID_SUPPORT=y
782CONFIG_HID=y 869CONFIG_HID=y
783# CONFIG_HID_DEBUG is not set 870# CONFIG_HID_DEBUG is not set
871# CONFIG_HIDRAW is not set
872# CONFIG_HID_PID is not set
784 873
785# 874#
786# USB support 875# Special HID drivers
787#
788CONFIG_USB_ARCH_HAS_HCD=y
789CONFIG_USB_ARCH_HAS_OHCI=y
790CONFIG_USB_ARCH_HAS_EHCI=y
791# CONFIG_USB is not set
792
793#
794# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
795#
796
797#
798# USB Gadget Support
799#
800# CONFIG_USB_GADGET is not set
801
802#
803# MMC/SD Card support
804# 876#
877CONFIG_HID_COMPAT=y
878# CONFIG_USB_SUPPORT is not set
879# CONFIG_UWB is not set
805# CONFIG_MMC is not set 880# CONFIG_MMC is not set
806 881# CONFIG_MEMSTICK is not set
807#
808# LED devices
809#
810# CONFIG_NEW_LEDS is not set 882# CONFIG_NEW_LEDS is not set
811 883# CONFIG_ACCESSIBILITY is not set
812#
813# LED drivers
814#
815
816#
817# LED Triggers
818#
819
820#
821# InfiniBand support
822#
823# CONFIG_INFINIBAND is not set 884# CONFIG_INFINIBAND is not set
885CONFIG_RTC_LIB=y
886CONFIG_RTC_CLASS=y
887# CONFIG_RTC_HCTOSYS is not set
888# CONFIG_RTC_DEBUG is not set
824 889
825# 890#
826# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 891# RTC interfaces
827# 892#
893# CONFIG_RTC_INTF_SYSFS is not set
894# CONFIG_RTC_INTF_PROC is not set
895CONFIG_RTC_INTF_DEV=y
896# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
897# CONFIG_RTC_DRV_TEST is not set
828 898
829# 899#
830# Real Time Clock 900# SPI RTC drivers
831# 901#
832# CONFIG_RTC_CLASS is not set
833 902
834# 903#
835# DMA Engine support 904# Platform RTC drivers
836# 905#
837# CONFIG_DMA_ENGINE is not set 906CONFIG_RTC_DRV_CMOS=y
907# CONFIG_RTC_DRV_DS1286 is not set
908# CONFIG_RTC_DRV_DS1511 is not set
909# CONFIG_RTC_DRV_DS1553 is not set
910# CONFIG_RTC_DRV_DS1742 is not set
911# CONFIG_RTC_DRV_STK17TA8 is not set
912# CONFIG_RTC_DRV_M48T86 is not set
913# CONFIG_RTC_DRV_M48T35 is not set
914# CONFIG_RTC_DRV_M48T59 is not set
915# CONFIG_RTC_DRV_BQ4802 is not set
916# CONFIG_RTC_DRV_V3020 is not set
838 917
839# 918#
840# DMA Clients 919# on-CPU RTC drivers
841#
842
843#
844# DMA Devices
845#
846
847#
848# Auxiliary Display support
849#
850
851#
852# Virtualization
853# 920#
921# CONFIG_DMADEVICES is not set
922# CONFIG_UIO is not set
923# CONFIG_STAGING is not set
924CONFIG_STAGING_EXCLUDE_BUILD=y
854 925
855# 926#
856# File systems 927# File systems
857# 928#
858CONFIG_EXT2_FS=y 929CONFIG_EXT2_FS=y
859# CONFIG_EXT2_FS_XATTR is not set 930CONFIG_EXT2_FS_XATTR=y
931CONFIG_EXT2_FS_POSIX_ACL=y
932CONFIG_EXT2_FS_SECURITY=y
860# CONFIG_EXT2_FS_XIP is not set 933# CONFIG_EXT2_FS_XIP is not set
861# CONFIG_EXT3_FS is not set 934CONFIG_EXT3_FS=y
862# CONFIG_EXT4DEV_FS is not set 935CONFIG_EXT3_FS_XATTR=y
936CONFIG_EXT3_FS_POSIX_ACL=y
937CONFIG_EXT3_FS_SECURITY=y
938# CONFIG_EXT4_FS is not set
939CONFIG_JBD=y
940CONFIG_FS_MBCACHE=y
863# CONFIG_REISERFS_FS is not set 941# CONFIG_REISERFS_FS is not set
864# CONFIG_JFS_FS is not set 942# CONFIG_JFS_FS is not set
865CONFIG_FS_POSIX_ACL=y 943CONFIG_FS_POSIX_ACL=y
944CONFIG_FILE_LOCKING=y
866# CONFIG_XFS_FS is not set 945# CONFIG_XFS_FS is not set
867# CONFIG_GFS2_FS is not set 946# CONFIG_GFS2_FS is not set
868# CONFIG_OCFS2_FS is not set 947# CONFIG_OCFS2_FS is not set
869# CONFIG_MINIX_FS is not set 948CONFIG_DNOTIFY=y
870# CONFIG_ROMFS_FS is not set
871CONFIG_INOTIFY=y 949CONFIG_INOTIFY=y
872CONFIG_INOTIFY_USER=y 950CONFIG_INOTIFY_USER=y
873# CONFIG_QUOTA is not set 951CONFIG_QUOTA=y
874CONFIG_DNOTIFY=y 952# CONFIG_QUOTA_NETLINK_INTERFACE is not set
875# CONFIG_AUTOFS_FS is not set 953CONFIG_PRINT_QUOTA_WARNING=y
876# CONFIG_AUTOFS4_FS is not set 954CONFIG_QFMT_V1=m
877CONFIG_FUSE_FS=y 955CONFIG_QFMT_V2=m
956CONFIG_QUOTACTL=y
957CONFIG_AUTOFS_FS=m
958CONFIG_AUTOFS4_FS=m
959CONFIG_FUSE_FS=m
878CONFIG_GENERIC_ACL=y 960CONFIG_GENERIC_ACL=y
879 961
880# 962#
881# CD-ROM/DVD Filesystems 963# CD-ROM/DVD Filesystems
882# 964#
883# CONFIG_ISO9660_FS is not set 965CONFIG_ISO9660_FS=m
884# CONFIG_UDF_FS is not set 966CONFIG_JOLIET=y
967CONFIG_ZISOFS=y
968CONFIG_UDF_FS=m
969CONFIG_UDF_NLS=y
885 970
886# 971#
887# DOS/FAT/NT Filesystems 972# DOS/FAT/NT Filesystems
888# 973#
889# CONFIG_MSDOS_FS is not set 974CONFIG_FAT_FS=m
890# CONFIG_VFAT_FS is not set 975CONFIG_MSDOS_FS=m
976CONFIG_VFAT_FS=m
977CONFIG_FAT_DEFAULT_CODEPAGE=437
978CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
891# CONFIG_NTFS_FS is not set 979# CONFIG_NTFS_FS is not set
892 980
893# 981#
@@ -896,11 +984,11 @@ CONFIG_GENERIC_ACL=y
896CONFIG_PROC_FS=y 984CONFIG_PROC_FS=y
897CONFIG_PROC_KCORE=y 985CONFIG_PROC_KCORE=y
898CONFIG_PROC_SYSCTL=y 986CONFIG_PROC_SYSCTL=y
987CONFIG_PROC_PAGE_MONITOR=y
899CONFIG_SYSFS=y 988CONFIG_SYSFS=y
900CONFIG_TMPFS=y 989CONFIG_TMPFS=y
901CONFIG_TMPFS_POSIX_ACL=y 990CONFIG_TMPFS_POSIX_ACL=y
902# CONFIG_HUGETLB_PAGE is not set 991# CONFIG_HUGETLB_PAGE is not set
903CONFIG_RAMFS=y
904CONFIG_CONFIGFS_FS=y 992CONFIG_CONFIGFS_FS=y
905 993
906# 994#
@@ -916,33 +1004,42 @@ CONFIG_CONFIGFS_FS=y
916# CONFIG_EFS_FS is not set 1004# CONFIG_EFS_FS is not set
917# CONFIG_CRAMFS is not set 1005# CONFIG_CRAMFS is not set
918# CONFIG_VXFS_FS is not set 1006# CONFIG_VXFS_FS is not set
1007# CONFIG_MINIX_FS is not set
1008# CONFIG_OMFS_FS is not set
919# CONFIG_HPFS_FS is not set 1009# CONFIG_HPFS_FS is not set
920# CONFIG_QNX4FS_FS is not set 1010# CONFIG_QNX4FS_FS is not set
1011# CONFIG_ROMFS_FS is not set
921# CONFIG_SYSV_FS is not set 1012# CONFIG_SYSV_FS is not set
922# CONFIG_UFS_FS is not set 1013# CONFIG_UFS_FS is not set
923 1014CONFIG_NETWORK_FILESYSTEMS=y
924#
925# Network File Systems
926#
927CONFIG_NFS_FS=y 1015CONFIG_NFS_FS=y
928CONFIG_NFS_V3=y 1016CONFIG_NFS_V3=y
929# CONFIG_NFS_V3_ACL is not set 1017# CONFIG_NFS_V3_ACL is not set
930# CONFIG_NFS_V4 is not set 1018# CONFIG_NFS_V4 is not set
931# CONFIG_NFS_DIRECTIO is not set
932# CONFIG_NFSD is not set
933CONFIG_ROOT_NFS=y 1019CONFIG_ROOT_NFS=y
1020CONFIG_NFSD=m
1021CONFIG_NFSD_V3=y
1022# CONFIG_NFSD_V3_ACL is not set
1023# CONFIG_NFSD_V4 is not set
934CONFIG_LOCKD=y 1024CONFIG_LOCKD=y
935CONFIG_LOCKD_V4=y 1025CONFIG_LOCKD_V4=y
1026CONFIG_EXPORTFS=m
936CONFIG_NFS_COMMON=y 1027CONFIG_NFS_COMMON=y
937CONFIG_SUNRPC=y 1028CONFIG_SUNRPC=y
1029# CONFIG_SUNRPC_REGISTER_V4 is not set
938# CONFIG_RPCSEC_GSS_KRB5 is not set 1030# CONFIG_RPCSEC_GSS_KRB5 is not set
939# CONFIG_RPCSEC_GSS_SPKM3 is not set 1031# CONFIG_RPCSEC_GSS_SPKM3 is not set
940# CONFIG_SMB_FS is not set 1032# CONFIG_SMB_FS is not set
941# CONFIG_CIFS is not set 1033CONFIG_CIFS=m
1034# CONFIG_CIFS_STATS is not set
1035# CONFIG_CIFS_WEAK_PW_HASH is not set
1036# CONFIG_CIFS_UPCALL is not set
1037# CONFIG_CIFS_XATTR is not set
1038# CONFIG_CIFS_DEBUG2 is not set
1039# CONFIG_CIFS_EXPERIMENTAL is not set
942# CONFIG_NCP_FS is not set 1040# CONFIG_NCP_FS is not set
943# CONFIG_CODA_FS is not set 1041# CONFIG_CODA_FS is not set
944# CONFIG_AFS_FS is not set 1042# CONFIG_AFS_FS is not set
945# CONFIG_9P_FS is not set
946 1043
947# 1044#
948# Partition Types 1045# Partition Types
@@ -953,45 +1050,83 @@ CONFIG_PARTITION_ADVANCED=y
953# CONFIG_AMIGA_PARTITION is not set 1050# CONFIG_AMIGA_PARTITION is not set
954# CONFIG_ATARI_PARTITION is not set 1051# CONFIG_ATARI_PARTITION is not set
955# CONFIG_MAC_PARTITION is not set 1052# CONFIG_MAC_PARTITION is not set
956# CONFIG_MSDOS_PARTITION is not set 1053CONFIG_MSDOS_PARTITION=y
1054# CONFIG_BSD_DISKLABEL is not set
1055# CONFIG_MINIX_SUBPARTITION is not set
1056# CONFIG_SOLARIS_X86_PARTITION is not set
1057# CONFIG_UNIXWARE_DISKLABEL is not set
957# CONFIG_LDM_PARTITION is not set 1058# CONFIG_LDM_PARTITION is not set
958CONFIG_SGI_PARTITION=y 1059CONFIG_SGI_PARTITION=y
959# CONFIG_ULTRIX_PARTITION is not set 1060# CONFIG_ULTRIX_PARTITION is not set
960# CONFIG_SUN_PARTITION is not set 1061# CONFIG_SUN_PARTITION is not set
961# CONFIG_KARMA_PARTITION is not set 1062# CONFIG_KARMA_PARTITION is not set
962# CONFIG_EFI_PARTITION is not set 1063# CONFIG_EFI_PARTITION is not set
963 1064# CONFIG_SYSV68_PARTITION is not set
964# 1065CONFIG_NLS=y
965# Native Language Support 1066CONFIG_NLS_DEFAULT="iso8859-1"
966# 1067CONFIG_NLS_CODEPAGE_437=m
967# CONFIG_NLS is not set 1068CONFIG_NLS_CODEPAGE_737=m
968 1069CONFIG_NLS_CODEPAGE_775=m
969# 1070CONFIG_NLS_CODEPAGE_850=m
970# Distributed Lock Manager 1071CONFIG_NLS_CODEPAGE_852=m
971# 1072CONFIG_NLS_CODEPAGE_855=m
972CONFIG_DLM=y 1073CONFIG_NLS_CODEPAGE_857=m
973CONFIG_DLM_TCP=y 1074CONFIG_NLS_CODEPAGE_860=m
974# CONFIG_DLM_SCTP is not set 1075CONFIG_NLS_CODEPAGE_861=m
975# CONFIG_DLM_DEBUG is not set 1076CONFIG_NLS_CODEPAGE_862=m
976 1077CONFIG_NLS_CODEPAGE_863=m
977# 1078CONFIG_NLS_CODEPAGE_864=m
978# Profiling support 1079CONFIG_NLS_CODEPAGE_865=m
979# 1080CONFIG_NLS_CODEPAGE_866=m
980# CONFIG_PROFILING is not set 1081CONFIG_NLS_CODEPAGE_869=m
1082CONFIG_NLS_CODEPAGE_936=m
1083CONFIG_NLS_CODEPAGE_950=m
1084CONFIG_NLS_CODEPAGE_932=m
1085CONFIG_NLS_CODEPAGE_949=m
1086CONFIG_NLS_CODEPAGE_874=m
1087CONFIG_NLS_ISO8859_8=m
1088CONFIG_NLS_CODEPAGE_1250=m
1089CONFIG_NLS_CODEPAGE_1251=m
1090CONFIG_NLS_ASCII=m
1091CONFIG_NLS_ISO8859_1=m
1092CONFIG_NLS_ISO8859_2=m
1093CONFIG_NLS_ISO8859_3=m
1094CONFIG_NLS_ISO8859_4=m
1095CONFIG_NLS_ISO8859_5=m
1096CONFIG_NLS_ISO8859_6=m
1097CONFIG_NLS_ISO8859_7=m
1098CONFIG_NLS_ISO8859_9=m
1099CONFIG_NLS_ISO8859_13=m
1100CONFIG_NLS_ISO8859_14=m
1101CONFIG_NLS_ISO8859_15=m
1102CONFIG_NLS_KOI8_R=m
1103CONFIG_NLS_KOI8_U=m
1104CONFIG_NLS_UTF8=m
1105# CONFIG_DLM is not set
981 1106
982# 1107#
983# Kernel hacking 1108# Kernel hacking
984# 1109#
985CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1110CONFIG_TRACE_IRQFLAGS_SUPPORT=y
986# CONFIG_PRINTK_TIME is not set 1111# CONFIG_PRINTK_TIME is not set
1112CONFIG_ENABLE_WARN_DEPRECATED=y
987CONFIG_ENABLE_MUST_CHECK=y 1113CONFIG_ENABLE_MUST_CHECK=y
988# CONFIG_MAGIC_SYSRQ is not set 1114CONFIG_FRAME_WARN=2048
1115CONFIG_MAGIC_SYSRQ=y
989# CONFIG_UNUSED_SYMBOLS is not set 1116# CONFIG_UNUSED_SYMBOLS is not set
990# CONFIG_DEBUG_FS is not set 1117# CONFIG_DEBUG_FS is not set
991# CONFIG_HEADERS_CHECK is not set 1118# CONFIG_HEADERS_CHECK is not set
992# CONFIG_DEBUG_KERNEL is not set 1119# CONFIG_DEBUG_KERNEL is not set
993CONFIG_LOG_BUF_SHIFT=14 1120# CONFIG_DEBUG_MEMORY_INIT is not set
994CONFIG_CROSSCOMPILE=y 1121# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1122CONFIG_SYSCTL_SYSCALL_CHECK=y
1123
1124#
1125# Tracers
1126#
1127# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1128# CONFIG_SAMPLES is not set
1129CONFIG_HAVE_ARCH_KGDB=y
995CONFIG_CMDLINE="" 1130CONFIG_CMDLINE=""
996 1131
997# 1132#
@@ -1000,51 +1135,99 @@ CONFIG_CMDLINE=""
1000CONFIG_KEYS=y 1135CONFIG_KEYS=y
1001CONFIG_KEYS_DEBUG_PROC_KEYS=y 1136CONFIG_KEYS_DEBUG_PROC_KEYS=y
1002# CONFIG_SECURITY is not set 1137# CONFIG_SECURITY is not set
1138# CONFIG_SECURITYFS is not set
1139# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1140CONFIG_CRYPTO=y
1003 1141
1004# 1142#
1005# Cryptographic options 1143# Crypto core or helper
1006# 1144#
1007CONFIG_CRYPTO=y 1145# CONFIG_CRYPTO_FIPS is not set
1008CONFIG_CRYPTO_ALGAPI=y 1146CONFIG_CRYPTO_ALGAPI=y
1147CONFIG_CRYPTO_AEAD=y
1009CONFIG_CRYPTO_BLKCIPHER=y 1148CONFIG_CRYPTO_BLKCIPHER=y
1010CONFIG_CRYPTO_HASH=y 1149CONFIG_CRYPTO_HASH=y
1150CONFIG_CRYPTO_RNG=y
1011CONFIG_CRYPTO_MANAGER=y 1151CONFIG_CRYPTO_MANAGER=y
1152CONFIG_CRYPTO_GF128MUL=y
1153CONFIG_CRYPTO_NULL=y
1154# CONFIG_CRYPTO_CRYPTD is not set
1155CONFIG_CRYPTO_AUTHENC=m
1156# CONFIG_CRYPTO_TEST is not set
1157
1158#
1159# Authenticated Encryption with Associated Data
1160#
1161# CONFIG_CRYPTO_CCM is not set
1162# CONFIG_CRYPTO_GCM is not set
1163# CONFIG_CRYPTO_SEQIV is not set
1164
1165#
1166# Block modes
1167#
1168CONFIG_CRYPTO_CBC=y
1169# CONFIG_CRYPTO_CTR is not set
1170# CONFIG_CRYPTO_CTS is not set
1171CONFIG_CRYPTO_ECB=y
1172CONFIG_CRYPTO_LRW=y
1173CONFIG_CRYPTO_PCBC=y
1174# CONFIG_CRYPTO_XTS is not set
1175
1176#
1177# Hash modes
1178#
1012CONFIG_CRYPTO_HMAC=y 1179CONFIG_CRYPTO_HMAC=y
1013CONFIG_CRYPTO_XCBC=y 1180CONFIG_CRYPTO_XCBC=y
1014CONFIG_CRYPTO_NULL=y 1181
1182#
1183# Digest
1184#
1185CONFIG_CRYPTO_CRC32C=y
1015CONFIG_CRYPTO_MD4=y 1186CONFIG_CRYPTO_MD4=y
1016CONFIG_CRYPTO_MD5=y 1187CONFIG_CRYPTO_MD5=y
1188CONFIG_CRYPTO_MICHAEL_MIC=y
1189# CONFIG_CRYPTO_RMD128 is not set
1190# CONFIG_CRYPTO_RMD160 is not set
1191# CONFIG_CRYPTO_RMD256 is not set
1192# CONFIG_CRYPTO_RMD320 is not set
1017CONFIG_CRYPTO_SHA1=y 1193CONFIG_CRYPTO_SHA1=y
1018CONFIG_CRYPTO_SHA256=y 1194CONFIG_CRYPTO_SHA256=y
1019CONFIG_CRYPTO_SHA512=y 1195CONFIG_CRYPTO_SHA512=y
1020CONFIG_CRYPTO_WP512=y
1021CONFIG_CRYPTO_TGR192=y 1196CONFIG_CRYPTO_TGR192=y
1022CONFIG_CRYPTO_GF128MUL=y 1197CONFIG_CRYPTO_WP512=y
1023CONFIG_CRYPTO_ECB=y 1198
1024CONFIG_CRYPTO_CBC=y 1199#
1025CONFIG_CRYPTO_PCBC=y 1200# Ciphers
1026CONFIG_CRYPTO_LRW=y 1201#
1027CONFIG_CRYPTO_DES=y
1028CONFIG_CRYPTO_FCRYPT=y
1029CONFIG_CRYPTO_BLOWFISH=y
1030CONFIG_CRYPTO_TWOFISH=y
1031CONFIG_CRYPTO_TWOFISH_COMMON=y
1032CONFIG_CRYPTO_SERPENT=y
1033CONFIG_CRYPTO_AES=y 1202CONFIG_CRYPTO_AES=y
1203CONFIG_CRYPTO_ANUBIS=y
1204CONFIG_CRYPTO_ARC4=y
1205CONFIG_CRYPTO_BLOWFISH=y
1206CONFIG_CRYPTO_CAMELLIA=y
1034CONFIG_CRYPTO_CAST5=y 1207CONFIG_CRYPTO_CAST5=y
1035CONFIG_CRYPTO_CAST6=y 1208CONFIG_CRYPTO_CAST6=y
1036CONFIG_CRYPTO_TEA=y 1209CONFIG_CRYPTO_DES=y
1037CONFIG_CRYPTO_ARC4=y 1210CONFIG_CRYPTO_FCRYPT=y
1038CONFIG_CRYPTO_KHAZAD=y 1211CONFIG_CRYPTO_KHAZAD=y
1039CONFIG_CRYPTO_ANUBIS=y 1212# CONFIG_CRYPTO_SALSA20 is not set
1213# CONFIG_CRYPTO_SEED is not set
1214CONFIG_CRYPTO_SERPENT=y
1215CONFIG_CRYPTO_TEA=y
1216CONFIG_CRYPTO_TWOFISH=y
1217CONFIG_CRYPTO_TWOFISH_COMMON=y
1218
1219#
1220# Compression
1221#
1040CONFIG_CRYPTO_DEFLATE=y 1222CONFIG_CRYPTO_DEFLATE=y
1041CONFIG_CRYPTO_MICHAEL_MIC=y 1223# CONFIG_CRYPTO_LZO is not set
1042CONFIG_CRYPTO_CRC32C=y
1043CONFIG_CRYPTO_CAMELLIA=y
1044 1224
1045# 1225#
1046# Hardware crypto devices 1226# Random Number Generation
1047# 1227#
1228# CONFIG_CRYPTO_ANSI_CPRNG is not set
1229CONFIG_CRYPTO_HW=y
1230# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1048 1231
1049# 1232#
1050# Library routines 1233# Library routines
@@ -1052,10 +1235,15 @@ CONFIG_CRYPTO_CAMELLIA=y
1052CONFIG_BITREVERSE=y 1235CONFIG_BITREVERSE=y
1053# CONFIG_CRC_CCITT is not set 1236# CONFIG_CRC_CCITT is not set
1054CONFIG_CRC16=y 1237CONFIG_CRC16=y
1238CONFIG_CRC_T10DIF=y
1239CONFIG_CRC_ITU_T=m
1055CONFIG_CRC32=y 1240CONFIG_CRC32=y
1241# CONFIG_CRC7 is not set
1056CONFIG_LIBCRC32C=y 1242CONFIG_LIBCRC32C=y
1243CONFIG_AUDIT_GENERIC=y
1057CONFIG_ZLIB_INFLATE=y 1244CONFIG_ZLIB_INFLATE=y
1058CONFIG_ZLIB_DEFLATE=y 1245CONFIG_ZLIB_DEFLATE=y
1059CONFIG_PLIST=y 1246CONFIG_PLIST=y
1060CONFIG_HAS_IOMEM=y 1247CONFIG_HAS_IOMEM=y
1061CONFIG_HAS_IOPORT=y 1248CONFIG_HAS_IOPORT=y
1249CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/malta_defconfig b/arch/mips/configs/malta_defconfig
index 74daa0cf87e6..1ecdd3b65dc7 100644
--- a/arch/mips/configs/malta_defconfig
+++ b/arch/mips/configs/malta_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc2 3# Linux kernel version: 2.6.28-rc6
4# Tue Aug 7 12:59:29 2007 4# Mon Dec 1 08:08:19 2008
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -11,20 +11,25 @@ CONFIG_MIPS=y
11CONFIG_ZONE_DMA=y 11CONFIG_ZONE_DMA=y
12# CONFIG_MACH_ALCHEMY is not set 12# CONFIG_MACH_ALCHEMY is not set
13# CONFIG_BASLER_EXCITE is not set 13# CONFIG_BASLER_EXCITE is not set
14# CONFIG_BCM47XX is not set
14# CONFIG_MIPS_COBALT is not set 15# CONFIG_MIPS_COBALT is not set
15# CONFIG_MACH_DECSTATION is not set 16# CONFIG_MACH_DECSTATION is not set
16# CONFIG_MACH_JAZZ is not set 17# CONFIG_MACH_JAZZ is not set
18# CONFIG_LASAT is not set
17# CONFIG_LEMOTE_FULONG is not set 19# CONFIG_LEMOTE_FULONG is not set
18CONFIG_MIPS_MALTA=y 20CONFIG_MIPS_MALTA=y
19# CONFIG_MIPS_SIM is not set 21# CONFIG_MIPS_SIM is not set
20# CONFIG_MARKEINS is not set 22# CONFIG_MACH_EMMA is not set
21# CONFIG_MACH_VR41XX is not set 23# CONFIG_MACH_VR41XX is not set
24# CONFIG_NXP_STB220 is not set
25# CONFIG_NXP_STB225 is not set
22# CONFIG_PNX8550_JBS is not set 26# CONFIG_PNX8550_JBS is not set
23# CONFIG_PNX8550_STB810 is not set 27# CONFIG_PNX8550_STB810 is not set
24# CONFIG_PMC_MSP is not set 28# CONFIG_PMC_MSP is not set
25# CONFIG_PMC_YOSEMITE is not set 29# CONFIG_PMC_YOSEMITE is not set
26# CONFIG_SGI_IP22 is not set 30# CONFIG_SGI_IP22 is not set
27# CONFIG_SGI_IP27 is not set 31# CONFIG_SGI_IP27 is not set
32# CONFIG_SGI_IP28 is not set
28# CONFIG_SGI_IP32 is not set 33# CONFIG_SGI_IP32 is not set
29# CONFIG_SIBYTE_CRHINE is not set 34# CONFIG_SIBYTE_CRHINE is not set
30# CONFIG_SIBYTE_CARMEL is not set 35# CONFIG_SIBYTE_CARMEL is not set
@@ -35,13 +40,14 @@ CONFIG_MIPS_MALTA=y
35# CONFIG_SIBYTE_SENTOSA is not set 40# CONFIG_SIBYTE_SENTOSA is not set
36# CONFIG_SIBYTE_BIGSUR is not set 41# CONFIG_SIBYTE_BIGSUR is not set
37# CONFIG_SNI_RM is not set 42# CONFIG_SNI_RM is not set
38# CONFIG_TOSHIBA_JMR3927 is not set 43# CONFIG_MACH_TX39XX is not set
39# CONFIG_TOSHIBA_RBTX4927 is not set 44# CONFIG_MACH_TX49XX is not set
40# CONFIG_TOSHIBA_RBTX4938 is not set 45# CONFIG_MIKROTIK_RB532 is not set
41# CONFIG_WR_PPMC is not set 46# CONFIG_WR_PPMC is not set
42CONFIG_RWSEM_GENERIC_SPINLOCK=y 47CONFIG_RWSEM_GENERIC_SPINLOCK=y
43# CONFIG_ARCH_HAS_ILOG2_U32 is not set 48# CONFIG_ARCH_HAS_ILOG2_U32 is not set
44# CONFIG_ARCH_HAS_ILOG2_U64 is not set 49# CONFIG_ARCH_HAS_ILOG2_U64 is not set
50CONFIG_ARCH_SUPPORTS_OPROFILE=y
45CONFIG_GENERIC_FIND_NEXT_BIT=y 51CONFIG_GENERIC_FIND_NEXT_BIT=y
46CONFIG_GENERIC_HWEIGHT=y 52CONFIG_GENERIC_HWEIGHT=y
47CONFIG_GENERIC_CALIBRATE_DELAY=y 53CONFIG_GENERIC_CALIBRATE_DELAY=y
@@ -51,21 +57,26 @@ CONFIG_GENERIC_CMOS_UPDATE=y
51CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 57CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
52# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set 58# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
53CONFIG_ARCH_MAY_HAVE_PC_FDC=y 59CONFIG_ARCH_MAY_HAVE_PC_FDC=y
60CONFIG_BOOT_RAW=y
54CONFIG_CEVT_R4K=y 61CONFIG_CEVT_R4K=y
62CONFIG_CSRC_R4K=y
55CONFIG_DMA_NONCOHERENT=y 63CONFIG_DMA_NONCOHERENT=y
56CONFIG_DMA_NEED_PCI_MAP_STATE=y 64CONFIG_DMA_NEED_PCI_MAP_STATE=y
57CONFIG_EARLY_PRINTK=y 65CONFIG_EARLY_PRINTK=y
58CONFIG_SYS_HAS_EARLY_PRINTK=y 66CONFIG_SYS_HAS_EARLY_PRINTK=y
59CONFIG_GENERIC_ISA_DMA=y 67# CONFIG_HOTPLUG_CPU is not set
60CONFIG_I8259=y 68CONFIG_I8259=y
61CONFIG_MIPS_BONITO64=y 69CONFIG_MIPS_BONITO64=y
62CONFIG_MIPS_MSC=y 70CONFIG_MIPS_MSC=y
63# CONFIG_NO_IOPORT is not set 71# CONFIG_NO_IOPORT is not set
72CONFIG_GENERIC_ISA_DMA=y
64# CONFIG_CPU_BIG_ENDIAN is not set 73# CONFIG_CPU_BIG_ENDIAN is not set
65CONFIG_CPU_LITTLE_ENDIAN=y 74CONFIG_CPU_LITTLE_ENDIAN=y
66CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 75CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
67CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 76CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
68CONFIG_IRQ_CPU=y 77CONFIG_IRQ_CPU=y
78CONFIG_IRQ_GIC=y
79CONFIG_MIPS_BOARDS_GEN=y
69CONFIG_PCI_GT64XXX_PCI0=y 80CONFIG_PCI_GT64XXX_PCI0=y
70CONFIG_SWAP_IO_SPACE=y 81CONFIG_SWAP_IO_SPACE=y
71CONFIG_BOOT_ELF32=y 82CONFIG_BOOT_ELF32=y
@@ -74,10 +85,6 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
74# 85#
75# CPU selection 86# CPU selection
76# 87#
77CONFIG_TICK_ONESHOT=y
78CONFIG_NO_HZ=y
79CONFIG_HIGH_RES_TIMERS=y
80CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
81# CONFIG_CPU_LOONGSON2 is not set 88# CONFIG_CPU_LOONGSON2 is not set
82# CONFIG_CPU_MIPS32_R1 is not set 89# CONFIG_CPU_MIPS32_R1 is not set
83CONFIG_CPU_MIPS32_R2=y 90CONFIG_CPU_MIPS32_R2=y
@@ -91,6 +98,7 @@ CONFIG_CPU_MIPS32_R2=y
91# CONFIG_CPU_TX49XX is not set 98# CONFIG_CPU_TX49XX is not set
92# CONFIG_CPU_R5000 is not set 99# CONFIG_CPU_R5000 is not set
93# CONFIG_CPU_R5432 is not set 100# CONFIG_CPU_R5432 is not set
101# CONFIG_CPU_R5500 is not set
94# CONFIG_CPU_R6000 is not set 102# CONFIG_CPU_R6000 is not set
95# CONFIG_CPU_NEVADA is not set 103# CONFIG_CPU_NEVADA is not set
96# CONFIG_CPU_R8000 is not set 104# CONFIG_CPU_R8000 is not set
@@ -108,6 +116,7 @@ CONFIG_CPU_MIPSR2=y
108CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 116CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
109CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y 117CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
110CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 118CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
119CONFIG_HARDWARE_WATCHPOINTS=y
111 120
112# 121#
113# Kernel type 122# Kernel type
@@ -125,6 +134,8 @@ CONFIG_CPU_HAS_PREFETCH=y
125CONFIG_MIPS_MT_SMP=y 134CONFIG_MIPS_MT_SMP=y
126# CONFIG_MIPS_MT_SMTC is not set 135# CONFIG_MIPS_MT_SMTC is not set
127CONFIG_MIPS_MT=y 136CONFIG_MIPS_MT=y
137# CONFIG_SCHED_SMT is not set
138CONFIG_SYS_SUPPORTS_SCHED_SMT=y
128CONFIG_SYS_SUPPORTS_MULTITHREADING=y 139CONFIG_SYS_SUPPORTS_MULTITHREADING=y
129CONFIG_MIPS_MT_FPAFF=y 140CONFIG_MIPS_MT_FPAFF=y
130# CONFIG_MIPS_VPE_LOADER is not set 141# CONFIG_MIPS_VPE_LOADER is not set
@@ -132,7 +143,6 @@ CONFIG_CPU_HAS_LLSC=y
132# CONFIG_CPU_HAS_SMARTMIPS is not set 143# CONFIG_CPU_HAS_SMARTMIPS is not set
133CONFIG_CPU_MIPSR2_IRQ_VI=y 144CONFIG_CPU_MIPSR2_IRQ_VI=y
134CONFIG_CPU_MIPSR2_IRQ_EI=y 145CONFIG_CPU_MIPSR2_IRQ_EI=y
135CONFIG_CPU_MIPSR2_SRS=y
136CONFIG_CPU_HAS_SYNC=y 146CONFIG_CPU_HAS_SYNC=y
137CONFIG_GENERIC_HARDIRQS=y 147CONFIG_GENERIC_HARDIRQS=y
138CONFIG_GENERIC_IRQ_PROBE=y 148CONFIG_GENERIC_IRQ_PROBE=y
@@ -140,22 +150,30 @@ CONFIG_IRQ_PER_CPU=y
140CONFIG_CPU_SUPPORTS_HIGHMEM=y 150CONFIG_CPU_SUPPORTS_HIGHMEM=y
141CONFIG_SYS_SUPPORTS_SMARTMIPS=y 151CONFIG_SYS_SUPPORTS_SMARTMIPS=y
142CONFIG_ARCH_FLATMEM_ENABLE=y 152CONFIG_ARCH_FLATMEM_ENABLE=y
153CONFIG_ARCH_POPULATES_NODE_MAP=y
143CONFIG_SELECT_MEMORY_MODEL=y 154CONFIG_SELECT_MEMORY_MODEL=y
144CONFIG_FLATMEM_MANUAL=y 155CONFIG_FLATMEM_MANUAL=y
145# CONFIG_DISCONTIGMEM_MANUAL is not set 156# CONFIG_DISCONTIGMEM_MANUAL is not set
146# CONFIG_SPARSEMEM_MANUAL is not set 157# CONFIG_SPARSEMEM_MANUAL is not set
147CONFIG_FLATMEM=y 158CONFIG_FLATMEM=y
148CONFIG_FLAT_NODE_MEM_MAP=y 159CONFIG_FLAT_NODE_MEM_MAP=y
149# CONFIG_SPARSEMEM_STATIC is not set 160CONFIG_PAGEFLAGS_EXTENDED=y
150CONFIG_SPLIT_PTLOCK_CPUS=4 161CONFIG_SPLIT_PTLOCK_CPUS=4
151# CONFIG_RESOURCES_64BIT is not set 162# CONFIG_RESOURCES_64BIT is not set
163# CONFIG_PHYS_ADDR_T_64BIT is not set
152CONFIG_ZONE_DMA_FLAG=1 164CONFIG_ZONE_DMA_FLAG=1
153CONFIG_BOUNCE=y 165CONFIG_BOUNCE=y
154CONFIG_VIRT_TO_BUS=y 166CONFIG_VIRT_TO_BUS=y
167CONFIG_UNEVICTABLE_LRU=y
155CONFIG_SMP=y 168CONFIG_SMP=y
169CONFIG_SMP_UP=y
156CONFIG_SYS_SUPPORTS_SMP=y 170CONFIG_SYS_SUPPORTS_SMP=y
157CONFIG_NR_CPUS_DEFAULT_2=y 171CONFIG_NR_CPUS_DEFAULT_2=y
158CONFIG_NR_CPUS=2 172CONFIG_NR_CPUS=2
173CONFIG_TICK_ONESHOT=y
174CONFIG_NO_HZ=y
175CONFIG_HIGH_RES_TIMERS=y
176CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
159# CONFIG_HZ_48 is not set 177# CONFIG_HZ_48 is not set
160CONFIG_HZ_100=y 178CONFIG_HZ_100=y
161# CONFIG_HZ_128 is not set 179# CONFIG_HZ_128 is not set
@@ -168,7 +186,6 @@ CONFIG_HZ=100
168CONFIG_PREEMPT_NONE=y 186CONFIG_PREEMPT_NONE=y
169# CONFIG_PREEMPT_VOLUNTARY is not set 187# CONFIG_PREEMPT_VOLUNTARY is not set
170# CONFIG_PREEMPT is not set 188# CONFIG_PREEMPT is not set
171CONFIG_PREEMPT_BKL=y
172# CONFIG_KEXEC is not set 189# CONFIG_KEXEC is not set
173CONFIG_SECCOMP=y 190CONFIG_SECCOMP=y
174CONFIG_LOCKDEP_SUPPORT=y 191CONFIG_LOCKDEP_SUPPORT=y
@@ -189,13 +206,19 @@ CONFIG_SYSVIPC_SYSCTL=y
189# CONFIG_POSIX_MQUEUE is not set 206# CONFIG_POSIX_MQUEUE is not set
190# CONFIG_BSD_PROCESS_ACCT is not set 207# CONFIG_BSD_PROCESS_ACCT is not set
191# CONFIG_TASKSTATS is not set 208# CONFIG_TASKSTATS is not set
192# CONFIG_USER_NS is not set
193# CONFIG_AUDIT is not set 209# CONFIG_AUDIT is not set
194# CONFIG_IKCONFIG is not set 210# CONFIG_IKCONFIG is not set
195CONFIG_LOG_BUF_SHIFT=15 211CONFIG_LOG_BUF_SHIFT=15
196# CONFIG_CPUSETS is not set 212# CONFIG_CGROUPS is not set
213# CONFIG_GROUP_SCHED is not set
197CONFIG_SYSFS_DEPRECATED=y 214CONFIG_SYSFS_DEPRECATED=y
215CONFIG_SYSFS_DEPRECATED_V2=y
198CONFIG_RELAY=y 216CONFIG_RELAY=y
217CONFIG_NAMESPACES=y
218CONFIG_UTS_NS=y
219CONFIG_IPC_NS=y
220# CONFIG_USER_NS is not set
221CONFIG_PID_NS=y
199# CONFIG_BLK_DEV_INITRD is not set 222# CONFIG_BLK_DEV_INITRD is not set
200# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 223# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
201CONFIG_SYSCTL=y 224CONFIG_SYSCTL=y
@@ -207,6 +230,8 @@ CONFIG_HOTPLUG=y
207CONFIG_PRINTK=y 230CONFIG_PRINTK=y
208CONFIG_BUG=y 231CONFIG_BUG=y
209CONFIG_ELF_CORE=y 232CONFIG_ELF_CORE=y
233CONFIG_PCSPKR_PLATFORM=y
234# CONFIG_COMPAT_BRK is not set
210CONFIG_BASE_FULL=y 235CONFIG_BASE_FULL=y
211CONFIG_FUTEX=y 236CONFIG_FUTEX=y
212CONFIG_ANON_INODES=y 237CONFIG_ANON_INODES=y
@@ -215,14 +240,23 @@ CONFIG_SIGNALFD=y
215CONFIG_TIMERFD=y 240CONFIG_TIMERFD=y
216CONFIG_EVENTFD=y 241CONFIG_EVENTFD=y
217CONFIG_SHMEM=y 242CONFIG_SHMEM=y
243CONFIG_AIO=y
218CONFIG_VM_EVENT_COUNTERS=y 244CONFIG_VM_EVENT_COUNTERS=y
245CONFIG_PCI_QUIRKS=y
219CONFIG_SLAB=y 246CONFIG_SLAB=y
220# CONFIG_SLUB is not set 247# CONFIG_SLUB is not set
221# CONFIG_SLOB is not set 248# CONFIG_SLOB is not set
249# CONFIG_PROFILING is not set
250# CONFIG_MARKERS is not set
251CONFIG_HAVE_OPROFILE=y
252CONFIG_USE_GENERIC_SMP_HELPERS=y
253# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
254CONFIG_SLABINFO=y
222CONFIG_RT_MUTEXES=y 255CONFIG_RT_MUTEXES=y
223# CONFIG_TINY_SHMEM is not set 256# CONFIG_TINY_SHMEM is not set
224CONFIG_BASE_SMALL=0 257CONFIG_BASE_SMALL=0
225CONFIG_MODULES=y 258CONFIG_MODULES=y
259# CONFIG_MODULE_FORCE_LOAD is not set
226CONFIG_MODULE_UNLOAD=y 260CONFIG_MODULE_UNLOAD=y
227# CONFIG_MODULE_FORCE_UNLOAD is not set 261# CONFIG_MODULE_FORCE_UNLOAD is not set
228CONFIG_MODVERSIONS=y 262CONFIG_MODVERSIONS=y
@@ -234,6 +268,7 @@ CONFIG_BLOCK=y
234# CONFIG_BLK_DEV_IO_TRACE is not set 268# CONFIG_BLK_DEV_IO_TRACE is not set
235# CONFIG_LSF is not set 269# CONFIG_LSF is not set
236# CONFIG_BLK_DEV_BSG is not set 270# CONFIG_BLK_DEV_BSG is not set
271# CONFIG_BLK_DEV_INTEGRITY is not set
237 272
238# 273#
239# IO Schedulers 274# IO Schedulers
@@ -247,19 +282,19 @@ CONFIG_DEFAULT_AS=y
247# CONFIG_DEFAULT_CFQ is not set 282# CONFIG_DEFAULT_CFQ is not set
248# CONFIG_DEFAULT_NOOP is not set 283# CONFIG_DEFAULT_NOOP is not set
249CONFIG_DEFAULT_IOSCHED="anticipatory" 284CONFIG_DEFAULT_IOSCHED="anticipatory"
285CONFIG_CLASSIC_RCU=y
286# CONFIG_FREEZER is not set
250 287
251# 288#
252# Bus options (PCI, PCMCIA, EISA, ISA, TC) 289# Bus options (PCI, PCMCIA, EISA, ISA, TC)
253# 290#
254CONFIG_HW_HAS_PCI=y 291CONFIG_HW_HAS_PCI=y
255CONFIG_PCI=y 292CONFIG_PCI=y
293CONFIG_PCI_DOMAINS=y
256# CONFIG_ARCH_SUPPORTS_MSI is not set 294# CONFIG_ARCH_SUPPORTS_MSI is not set
295CONFIG_PCI_LEGACY=y
257CONFIG_MMU=y 296CONFIG_MMU=y
258CONFIG_I8253=y 297CONFIG_I8253=y
259
260#
261# PCCARD (PCMCIA/CardBus) support
262#
263# CONFIG_PCCARD is not set 298# CONFIG_PCCARD is not set
264# CONFIG_HOTPLUG_PCI is not set 299# CONFIG_HOTPLUG_PCI is not set
265 300
@@ -267,6 +302,8 @@ CONFIG_I8253=y
267# Executable file formats 302# Executable file formats
268# 303#
269CONFIG_BINFMT_ELF=y 304CONFIG_BINFMT_ELF=y
305# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
306# CONFIG_HAVE_AOUT is not set
270# CONFIG_BINFMT_MISC is not set 307# CONFIG_BINFMT_MISC is not set
271CONFIG_TRAD_SIGNALS=y 308CONFIG_TRAD_SIGNALS=y
272 309
@@ -274,12 +311,7 @@ CONFIG_TRAD_SIGNALS=y
274# Power management options 311# Power management options
275# 312#
276CONFIG_PM=y 313CONFIG_PM=y
277# CONFIG_PM_LEGACY is not set
278# CONFIG_PM_DEBUG is not set 314# CONFIG_PM_DEBUG is not set
279
280#
281# Networking
282#
283CONFIG_NET=y 315CONFIG_NET=y
284 316
285# 317#
@@ -292,6 +324,8 @@ CONFIG_XFRM=y
292CONFIG_XFRM_USER=m 324CONFIG_XFRM_USER=m
293# CONFIG_XFRM_SUB_POLICY is not set 325# CONFIG_XFRM_SUB_POLICY is not set
294CONFIG_XFRM_MIGRATE=y 326CONFIG_XFRM_MIGRATE=y
327# CONFIG_XFRM_STATISTICS is not set
328CONFIG_XFRM_IPCOMP=m
295CONFIG_NET_KEY=y 329CONFIG_NET_KEY=y
296CONFIG_NET_KEY_MIGRATE=y 330CONFIG_NET_KEY_MIGRATE=y
297CONFIG_INET=y 331CONFIG_INET=y
@@ -323,42 +357,13 @@ CONFIG_INET_TUNNEL=m
323CONFIG_INET_XFRM_MODE_TRANSPORT=m 357CONFIG_INET_XFRM_MODE_TRANSPORT=m
324CONFIG_INET_XFRM_MODE_TUNNEL=m 358CONFIG_INET_XFRM_MODE_TUNNEL=m
325CONFIG_INET_XFRM_MODE_BEET=y 359CONFIG_INET_XFRM_MODE_BEET=y
360CONFIG_INET_LRO=m
326CONFIG_INET_DIAG=y 361CONFIG_INET_DIAG=y
327CONFIG_INET_TCP_DIAG=y 362CONFIG_INET_TCP_DIAG=y
328# CONFIG_TCP_CONG_ADVANCED is not set 363# CONFIG_TCP_CONG_ADVANCED is not set
329CONFIG_TCP_CONG_CUBIC=y 364CONFIG_TCP_CONG_CUBIC=y
330CONFIG_DEFAULT_TCP_CONG="cubic" 365CONFIG_DEFAULT_TCP_CONG="cubic"
331CONFIG_TCP_MD5SIG=y 366CONFIG_TCP_MD5SIG=y
332CONFIG_IP_VS=m
333# CONFIG_IP_VS_DEBUG is not set
334CONFIG_IP_VS_TAB_BITS=12
335
336#
337# IPVS transport protocol load balancing support
338#
339CONFIG_IP_VS_PROTO_TCP=y
340CONFIG_IP_VS_PROTO_UDP=y
341CONFIG_IP_VS_PROTO_ESP=y
342CONFIG_IP_VS_PROTO_AH=y
343
344#
345# IPVS scheduler
346#
347CONFIG_IP_VS_RR=m
348CONFIG_IP_VS_WRR=m
349CONFIG_IP_VS_LC=m
350CONFIG_IP_VS_WLC=m
351CONFIG_IP_VS_LBLC=m
352CONFIG_IP_VS_LBLCR=m
353CONFIG_IP_VS_DH=m
354CONFIG_IP_VS_SH=m
355CONFIG_IP_VS_SED=m
356CONFIG_IP_VS_NQ=m
357
358#
359# IPVS application helper
360#
361CONFIG_IP_VS_FTP=m
362CONFIG_IPV6=m 367CONFIG_IPV6=m
363CONFIG_IPV6_PRIVACY=y 368CONFIG_IPV6_PRIVACY=y
364CONFIG_IPV6_ROUTER_PREF=y 369CONFIG_IPV6_ROUTER_PREF=y
@@ -375,11 +380,15 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
375CONFIG_INET6_XFRM_MODE_BEET=m 380CONFIG_INET6_XFRM_MODE_BEET=m
376# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 381# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
377CONFIG_IPV6_SIT=m 382CONFIG_IPV6_SIT=m
383CONFIG_IPV6_NDISC_NODETYPE=y
378CONFIG_IPV6_TUNNEL=m 384CONFIG_IPV6_TUNNEL=m
379# CONFIG_IPV6_MULTIPLE_TABLES is not set 385# CONFIG_IPV6_MULTIPLE_TABLES is not set
386CONFIG_IPV6_MROUTE=y
387CONFIG_IPV6_PIMSM_V2=y
380CONFIG_NETWORK_SECMARK=y 388CONFIG_NETWORK_SECMARK=y
381CONFIG_NETFILTER=y 389CONFIG_NETFILTER=y
382# CONFIG_NETFILTER_DEBUG is not set 390# CONFIG_NETFILTER_DEBUG is not set
391CONFIG_NETFILTER_ADVANCED=y
383CONFIG_BRIDGE_NETFILTER=y 392CONFIG_BRIDGE_NETFILTER=y
384 393
385# 394#
@@ -388,12 +397,12 @@ CONFIG_BRIDGE_NETFILTER=y
388CONFIG_NETFILTER_NETLINK=m 397CONFIG_NETFILTER_NETLINK=m
389CONFIG_NETFILTER_NETLINK_QUEUE=m 398CONFIG_NETFILTER_NETLINK_QUEUE=m
390CONFIG_NETFILTER_NETLINK_LOG=m 399CONFIG_NETFILTER_NETLINK_LOG=m
391CONFIG_NF_CONNTRACK_ENABLED=m
392CONFIG_NF_CONNTRACK=m 400CONFIG_NF_CONNTRACK=m
393CONFIG_NF_CT_ACCT=y 401CONFIG_NF_CT_ACCT=y
394CONFIG_NF_CONNTRACK_MARK=y 402CONFIG_NF_CONNTRACK_MARK=y
395CONFIG_NF_CONNTRACK_SECMARK=y 403CONFIG_NF_CONNTRACK_SECMARK=y
396CONFIG_NF_CONNTRACK_EVENTS=y 404CONFIG_NF_CONNTRACK_EVENTS=y
405CONFIG_NF_CT_PROTO_DCCP=m
397CONFIG_NF_CT_PROTO_GRE=m 406CONFIG_NF_CT_PROTO_GRE=m
398CONFIG_NF_CT_PROTO_SCTP=m 407CONFIG_NF_CT_PROTO_SCTP=m
399CONFIG_NF_CT_PROTO_UDPLITE=m 408CONFIG_NF_CT_PROTO_UDPLITE=m
@@ -407,18 +416,22 @@ CONFIG_NF_CONNTRACK_SANE=m
407CONFIG_NF_CONNTRACK_SIP=m 416CONFIG_NF_CONNTRACK_SIP=m
408CONFIG_NF_CONNTRACK_TFTP=m 417CONFIG_NF_CONNTRACK_TFTP=m
409CONFIG_NF_CT_NETLINK=m 418CONFIG_NF_CT_NETLINK=m
419CONFIG_NETFILTER_TPROXY=m
410CONFIG_NETFILTER_XTABLES=m 420CONFIG_NETFILTER_XTABLES=m
411CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 421CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
412CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 422CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
423# CONFIG_NETFILTER_XT_TARGET_CONNSECMARK is not set
413# CONFIG_NETFILTER_XT_TARGET_DSCP is not set 424# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
414CONFIG_NETFILTER_XT_TARGET_MARK=m 425CONFIG_NETFILTER_XT_TARGET_MARK=m
415CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
416CONFIG_NETFILTER_XT_TARGET_NFLOG=m 426CONFIG_NETFILTER_XT_TARGET_NFLOG=m
427CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
417CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 428CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
429CONFIG_NETFILTER_XT_TARGET_RATEEST=m
430CONFIG_NETFILTER_XT_TARGET_TPROXY=m
418CONFIG_NETFILTER_XT_TARGET_TRACE=m 431CONFIG_NETFILTER_XT_TARGET_TRACE=m
419CONFIG_NETFILTER_XT_TARGET_SECMARK=m 432CONFIG_NETFILTER_XT_TARGET_SECMARK=m
420# CONFIG_NETFILTER_XT_TARGET_CONNSECMARK is not set
421CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 433CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
434CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
422CONFIG_NETFILTER_XT_MATCH_COMMENT=m 435CONFIG_NETFILTER_XT_MATCH_COMMENT=m
423CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 436CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
424CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 437CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -427,40 +440,76 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
427CONFIG_NETFILTER_XT_MATCH_DCCP=m 440CONFIG_NETFILTER_XT_MATCH_DCCP=m
428# CONFIG_NETFILTER_XT_MATCH_DSCP is not set 441# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
429CONFIG_NETFILTER_XT_MATCH_ESP=m 442CONFIG_NETFILTER_XT_MATCH_ESP=m
443CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
430CONFIG_NETFILTER_XT_MATCH_HELPER=m 444CONFIG_NETFILTER_XT_MATCH_HELPER=m
445CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
431CONFIG_NETFILTER_XT_MATCH_LENGTH=m 446CONFIG_NETFILTER_XT_MATCH_LENGTH=m
432CONFIG_NETFILTER_XT_MATCH_LIMIT=m 447CONFIG_NETFILTER_XT_MATCH_LIMIT=m
433CONFIG_NETFILTER_XT_MATCH_MAC=m 448CONFIG_NETFILTER_XT_MATCH_MAC=m
434CONFIG_NETFILTER_XT_MATCH_MARK=m 449CONFIG_NETFILTER_XT_MATCH_MARK=m
435CONFIG_NETFILTER_XT_MATCH_POLICY=m
436CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 450CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
451CONFIG_NETFILTER_XT_MATCH_OWNER=m
452CONFIG_NETFILTER_XT_MATCH_POLICY=m
437# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set 453# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
438CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 454CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
439CONFIG_NETFILTER_XT_MATCH_QUOTA=m 455CONFIG_NETFILTER_XT_MATCH_QUOTA=m
456CONFIG_NETFILTER_XT_MATCH_RATEEST=m
440CONFIG_NETFILTER_XT_MATCH_REALM=m 457CONFIG_NETFILTER_XT_MATCH_REALM=m
458CONFIG_NETFILTER_XT_MATCH_RECENT=m
459# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
441CONFIG_NETFILTER_XT_MATCH_SCTP=m 460CONFIG_NETFILTER_XT_MATCH_SCTP=m
461CONFIG_NETFILTER_XT_MATCH_SOCKET=m
442CONFIG_NETFILTER_XT_MATCH_STATE=m 462CONFIG_NETFILTER_XT_MATCH_STATE=m
443CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 463CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
444CONFIG_NETFILTER_XT_MATCH_STRING=m 464CONFIG_NETFILTER_XT_MATCH_STRING=m
445CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 465CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
466CONFIG_NETFILTER_XT_MATCH_TIME=m
446CONFIG_NETFILTER_XT_MATCH_U32=m 467CONFIG_NETFILTER_XT_MATCH_U32=m
447CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 468CONFIG_IP_VS=m
469CONFIG_IP_VS_IPV6=y
470# CONFIG_IP_VS_DEBUG is not set
471CONFIG_IP_VS_TAB_BITS=12
472
473#
474# IPVS transport protocol load balancing support
475#
476CONFIG_IP_VS_PROTO_TCP=y
477CONFIG_IP_VS_PROTO_UDP=y
478CONFIG_IP_VS_PROTO_AH_ESP=y
479CONFIG_IP_VS_PROTO_ESP=y
480CONFIG_IP_VS_PROTO_AH=y
481
482#
483# IPVS scheduler
484#
485CONFIG_IP_VS_RR=m
486CONFIG_IP_VS_WRR=m
487CONFIG_IP_VS_LC=m
488CONFIG_IP_VS_WLC=m
489CONFIG_IP_VS_LBLC=m
490CONFIG_IP_VS_LBLCR=m
491CONFIG_IP_VS_DH=m
492CONFIG_IP_VS_SH=m
493CONFIG_IP_VS_SED=m
494CONFIG_IP_VS_NQ=m
495
496#
497# IPVS application helper
498#
499CONFIG_IP_VS_FTP=m
448 500
449# 501#
450# IP: Netfilter Configuration 502# IP: Netfilter Configuration
451# 503#
504CONFIG_NF_DEFRAG_IPV4=m
452CONFIG_NF_CONNTRACK_IPV4=m 505CONFIG_NF_CONNTRACK_IPV4=m
453CONFIG_NF_CONNTRACK_PROC_COMPAT=y 506CONFIG_NF_CONNTRACK_PROC_COMPAT=y
454CONFIG_IP_NF_QUEUE=m 507CONFIG_IP_NF_QUEUE=m
455CONFIG_IP_NF_IPTABLES=m 508CONFIG_IP_NF_IPTABLES=m
456CONFIG_IP_NF_MATCH_IPRANGE=m 509CONFIG_IP_NF_MATCH_ADDRTYPE=m
457CONFIG_IP_NF_MATCH_TOS=m
458CONFIG_IP_NF_MATCH_RECENT=m
459CONFIG_IP_NF_MATCH_ECN=m
460CONFIG_IP_NF_MATCH_AH=m 510CONFIG_IP_NF_MATCH_AH=m
511CONFIG_IP_NF_MATCH_ECN=m
461CONFIG_IP_NF_MATCH_TTL=m 512CONFIG_IP_NF_MATCH_TTL=m
462CONFIG_IP_NF_MATCH_OWNER=m
463CONFIG_IP_NF_MATCH_ADDRTYPE=m
464CONFIG_IP_NF_FILTER=m 513CONFIG_IP_NF_FILTER=m
465CONFIG_IP_NF_TARGET_REJECT=m 514CONFIG_IP_NF_TARGET_REJECT=m
466CONFIG_IP_NF_TARGET_LOG=m 515CONFIG_IP_NF_TARGET_LOG=m
@@ -468,11 +517,13 @@ CONFIG_IP_NF_TARGET_ULOG=m
468CONFIG_NF_NAT=m 517CONFIG_NF_NAT=m
469CONFIG_NF_NAT_NEEDED=y 518CONFIG_NF_NAT_NEEDED=y
470CONFIG_IP_NF_TARGET_MASQUERADE=m 519CONFIG_IP_NF_TARGET_MASQUERADE=m
471CONFIG_IP_NF_TARGET_REDIRECT=m
472CONFIG_IP_NF_TARGET_NETMAP=m 520CONFIG_IP_NF_TARGET_NETMAP=m
473CONFIG_IP_NF_TARGET_SAME=m 521CONFIG_IP_NF_TARGET_REDIRECT=m
474CONFIG_NF_NAT_SNMP_BASIC=m 522CONFIG_NF_NAT_SNMP_BASIC=m
523CONFIG_NF_NAT_PROTO_DCCP=m
475CONFIG_NF_NAT_PROTO_GRE=m 524CONFIG_NF_NAT_PROTO_GRE=m
525CONFIG_NF_NAT_PROTO_UDPLITE=m
526CONFIG_NF_NAT_PROTO_SCTP=m
476CONFIG_NF_NAT_FTP=m 527CONFIG_NF_NAT_FTP=m
477CONFIG_NF_NAT_IRC=m 528CONFIG_NF_NAT_IRC=m
478CONFIG_NF_NAT_TFTP=m 529CONFIG_NF_NAT_TFTP=m
@@ -481,40 +532,34 @@ CONFIG_NF_NAT_PPTP=m
481CONFIG_NF_NAT_H323=m 532CONFIG_NF_NAT_H323=m
482CONFIG_NF_NAT_SIP=m 533CONFIG_NF_NAT_SIP=m
483CONFIG_IP_NF_MANGLE=m 534CONFIG_IP_NF_MANGLE=m
484CONFIG_IP_NF_TARGET_TOS=m 535CONFIG_IP_NF_TARGET_CLUSTERIP=m
485CONFIG_IP_NF_TARGET_ECN=m 536CONFIG_IP_NF_TARGET_ECN=m
486CONFIG_IP_NF_TARGET_TTL=m 537CONFIG_IP_NF_TARGET_TTL=m
487CONFIG_IP_NF_TARGET_CLUSTERIP=m
488CONFIG_IP_NF_RAW=m 538CONFIG_IP_NF_RAW=m
489CONFIG_IP_NF_ARPTABLES=m 539CONFIG_IP_NF_ARPTABLES=m
490CONFIG_IP_NF_ARPFILTER=m 540CONFIG_IP_NF_ARPFILTER=m
491CONFIG_IP_NF_ARP_MANGLE=m 541CONFIG_IP_NF_ARP_MANGLE=m
492 542
493# 543#
494# IPv6: Netfilter Configuration (EXPERIMENTAL) 544# IPv6: Netfilter Configuration
495# 545#
496CONFIG_NF_CONNTRACK_IPV6=m 546CONFIG_NF_CONNTRACK_IPV6=m
497CONFIG_IP6_NF_QUEUE=m 547CONFIG_IP6_NF_QUEUE=m
498CONFIG_IP6_NF_IPTABLES=m 548CONFIG_IP6_NF_IPTABLES=m
499CONFIG_IP6_NF_MATCH_RT=m 549CONFIG_IP6_NF_MATCH_AH=m
500CONFIG_IP6_NF_MATCH_OPTS=m 550CONFIG_IP6_NF_MATCH_EUI64=m
501CONFIG_IP6_NF_MATCH_FRAG=m 551CONFIG_IP6_NF_MATCH_FRAG=m
552CONFIG_IP6_NF_MATCH_OPTS=m
502CONFIG_IP6_NF_MATCH_HL=m 553CONFIG_IP6_NF_MATCH_HL=m
503CONFIG_IP6_NF_MATCH_OWNER=m
504CONFIG_IP6_NF_MATCH_IPV6HEADER=m 554CONFIG_IP6_NF_MATCH_IPV6HEADER=m
505CONFIG_IP6_NF_MATCH_AH=m
506CONFIG_IP6_NF_MATCH_MH=m 555CONFIG_IP6_NF_MATCH_MH=m
507CONFIG_IP6_NF_MATCH_EUI64=m 556CONFIG_IP6_NF_MATCH_RT=m
508CONFIG_IP6_NF_FILTER=m
509CONFIG_IP6_NF_TARGET_LOG=m 557CONFIG_IP6_NF_TARGET_LOG=m
558CONFIG_IP6_NF_FILTER=m
510CONFIG_IP6_NF_TARGET_REJECT=m 559CONFIG_IP6_NF_TARGET_REJECT=m
511CONFIG_IP6_NF_MANGLE=m 560CONFIG_IP6_NF_MANGLE=m
512CONFIG_IP6_NF_TARGET_HL=m 561CONFIG_IP6_NF_TARGET_HL=m
513CONFIG_IP6_NF_RAW=m 562CONFIG_IP6_NF_RAW=m
514
515#
516# Bridge: Netfilter Configuration
517#
518CONFIG_BRIDGE_NF_EBTABLES=m 563CONFIG_BRIDGE_NF_EBTABLES=m
519CONFIG_BRIDGE_EBT_BROUTE=m 564CONFIG_BRIDGE_EBT_BROUTE=m
520CONFIG_BRIDGE_EBT_T_FILTER=m 565CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -523,6 +568,7 @@ CONFIG_BRIDGE_EBT_802_3=m
523CONFIG_BRIDGE_EBT_AMONG=m 568CONFIG_BRIDGE_EBT_AMONG=m
524CONFIG_BRIDGE_EBT_ARP=m 569CONFIG_BRIDGE_EBT_ARP=m
525CONFIG_BRIDGE_EBT_IP=m 570CONFIG_BRIDGE_EBT_IP=m
571CONFIG_BRIDGE_EBT_IP6=m
526CONFIG_BRIDGE_EBT_LIMIT=m 572CONFIG_BRIDGE_EBT_LIMIT=m
527CONFIG_BRIDGE_EBT_MARK=m 573CONFIG_BRIDGE_EBT_MARK=m
528CONFIG_BRIDGE_EBT_PKTTYPE=m 574CONFIG_BRIDGE_EBT_PKTTYPE=m
@@ -535,6 +581,7 @@ CONFIG_BRIDGE_EBT_REDIRECT=m
535CONFIG_BRIDGE_EBT_SNAT=m 581CONFIG_BRIDGE_EBT_SNAT=m
536CONFIG_BRIDGE_EBT_LOG=m 582CONFIG_BRIDGE_EBT_LOG=m
537CONFIG_BRIDGE_EBT_ULOG=m 583CONFIG_BRIDGE_EBT_ULOG=m
584CONFIG_BRIDGE_EBT_NFLOG=m
538# CONFIG_IP_DCCP is not set 585# CONFIG_IP_DCCP is not set
539CONFIG_IP_SCTP=m 586CONFIG_IP_SCTP=m
540# CONFIG_SCTP_DBG_MSG is not set 587# CONFIG_SCTP_DBG_MSG is not set
@@ -544,8 +591,12 @@ CONFIG_IP_SCTP=m
544CONFIG_SCTP_HMAC_MD5=y 591CONFIG_SCTP_HMAC_MD5=y
545# CONFIG_TIPC is not set 592# CONFIG_TIPC is not set
546# CONFIG_ATM is not set 593# CONFIG_ATM is not set
594CONFIG_STP=m
595CONFIG_GARP=m
547CONFIG_BRIDGE=m 596CONFIG_BRIDGE=m
597# CONFIG_NET_DSA is not set
548CONFIG_VLAN_8021Q=m 598CONFIG_VLAN_8021Q=m
599CONFIG_VLAN_8021Q_GVRP=y
549# CONFIG_DECNET is not set 600# CONFIG_DECNET is not set
550CONFIG_LLC=m 601CONFIG_LLC=m
551# CONFIG_LLC2 is not set 602# CONFIG_LLC2 is not set
@@ -559,12 +610,7 @@ CONFIG_IPDDP_DECAP=y
559# CONFIG_LAPB is not set 610# CONFIG_LAPB is not set
560# CONFIG_ECONET is not set 611# CONFIG_ECONET is not set
561# CONFIG_WAN_ROUTER is not set 612# CONFIG_WAN_ROUTER is not set
562
563#
564# QoS and/or fair queueing
565#
566CONFIG_NET_SCHED=y 613CONFIG_NET_SCHED=y
567CONFIG_NET_SCH_FIFO=y
568 614
569# 615#
570# Queueing/Scheduling 616# Queueing/Scheduling
@@ -573,7 +619,7 @@ CONFIG_NET_SCH_CBQ=m
573CONFIG_NET_SCH_HTB=m 619CONFIG_NET_SCH_HTB=m
574CONFIG_NET_SCH_HFSC=m 620CONFIG_NET_SCH_HFSC=m
575CONFIG_NET_SCH_PRIO=m 621CONFIG_NET_SCH_PRIO=m
576CONFIG_NET_SCH_RR=m 622# CONFIG_NET_SCH_MULTIQ is not set
577CONFIG_NET_SCH_RED=m 623CONFIG_NET_SCH_RED=m
578CONFIG_NET_SCH_SFQ=m 624CONFIG_NET_SCH_SFQ=m
579CONFIG_NET_SCH_TEQL=m 625CONFIG_NET_SCH_TEQL=m
@@ -597,6 +643,7 @@ CONFIG_NET_CLS_U32=m
597# CONFIG_CLS_U32_MARK is not set 643# CONFIG_CLS_U32_MARK is not set
598CONFIG_NET_CLS_RSVP=m 644CONFIG_NET_CLS_RSVP=m
599CONFIG_NET_CLS_RSVP6=m 645CONFIG_NET_CLS_RSVP6=m
646CONFIG_NET_CLS_FLOW=m
600# CONFIG_NET_EMATCH is not set 647# CONFIG_NET_EMATCH is not set
601CONFIG_NET_CLS_ACT=y 648CONFIG_NET_CLS_ACT=y
602CONFIG_NET_ACT_POLICE=y 649CONFIG_NET_ACT_POLICE=y
@@ -604,37 +651,51 @@ CONFIG_NET_ACT_GACT=m
604CONFIG_GACT_PROB=y 651CONFIG_GACT_PROB=y
605CONFIG_NET_ACT_MIRRED=m 652CONFIG_NET_ACT_MIRRED=m
606CONFIG_NET_ACT_IPT=m 653CONFIG_NET_ACT_IPT=m
654CONFIG_NET_ACT_NAT=m
607CONFIG_NET_ACT_PEDIT=m 655CONFIG_NET_ACT_PEDIT=m
608CONFIG_NET_ACT_SIMP=m 656CONFIG_NET_ACT_SIMP=m
609CONFIG_NET_CLS_POLICE=y 657CONFIG_NET_ACT_SKBEDIT=m
610CONFIG_NET_CLS_IND=y 658CONFIG_NET_CLS_IND=y
659CONFIG_NET_SCH_FIFO=y
611 660
612# 661#
613# Network testing 662# Network testing
614# 663#
615# CONFIG_NET_PKTGEN is not set 664# CONFIG_NET_PKTGEN is not set
616# CONFIG_HAMRADIO is not set 665# CONFIG_HAMRADIO is not set
666# CONFIG_CAN is not set
617# CONFIG_IRDA is not set 667# CONFIG_IRDA is not set
618# CONFIG_BT is not set 668# CONFIG_BT is not set
619# CONFIG_AF_RXRPC is not set 669# CONFIG_AF_RXRPC is not set
670CONFIG_PHONET=m
620CONFIG_FIB_RULES=y 671CONFIG_FIB_RULES=y
621 672CONFIG_WIRELESS=y
622#
623# Wireless
624#
625CONFIG_CFG80211=m 673CONFIG_CFG80211=m
674CONFIG_NL80211=y
675CONFIG_WIRELESS_OLD_REGULATORY=y
626CONFIG_WIRELESS_EXT=y 676CONFIG_WIRELESS_EXT=y
677CONFIG_WIRELESS_EXT_SYSFS=y
627CONFIG_MAC80211=m 678CONFIG_MAC80211=m
628# CONFIG_MAC80211_DEBUG is not set 679
680#
681# Rate control algorithm selection
682#
683CONFIG_MAC80211_RC_PID=y
684CONFIG_MAC80211_RC_MINSTREL=y
685CONFIG_MAC80211_RC_DEFAULT_PID=y
686# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set
687CONFIG_MAC80211_RC_DEFAULT="pid"
688CONFIG_MAC80211_MESH=y
689CONFIG_MAC80211_LEDS=y
690# CONFIG_MAC80211_DEBUG_MENU is not set
629CONFIG_IEEE80211=m 691CONFIG_IEEE80211=m
630# CONFIG_IEEE80211_DEBUG is not set 692# CONFIG_IEEE80211_DEBUG is not set
631CONFIG_IEEE80211_CRYPT_WEP=m 693CONFIG_IEEE80211_CRYPT_WEP=m
632CONFIG_IEEE80211_CRYPT_CCMP=m 694CONFIG_IEEE80211_CRYPT_CCMP=m
633CONFIG_IEEE80211_CRYPT_TKIP=m 695CONFIG_IEEE80211_CRYPT_TKIP=m
634CONFIG_IEEE80211_SOFTMAC=m
635# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
636CONFIG_RFKILL=m 696CONFIG_RFKILL=m
637CONFIG_RFKILL_INPUT=m 697CONFIG_RFKILL_INPUT=m
698CONFIG_RFKILL_LEDS=y
638# CONFIG_NET_9P is not set 699# CONFIG_NET_9P is not set
639 700
640# 701#
@@ -644,9 +705,12 @@ CONFIG_RFKILL_INPUT=m
644# 705#
645# Generic Driver Options 706# Generic Driver Options
646# 707#
708CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
647CONFIG_STANDALONE=y 709CONFIG_STANDALONE=y
648CONFIG_PREVENT_FIRMWARE_BUILD=y 710CONFIG_PREVENT_FIRMWARE_BUILD=y
649CONFIG_FW_LOADER=y 711CONFIG_FW_LOADER=y
712CONFIG_FIRMWARE_IN_KERNEL=y
713CONFIG_EXTRA_FIRMWARE=""
650# CONFIG_SYS_HYPERVISOR is not set 714# CONFIG_SYS_HYPERVISOR is not set
651CONFIG_CONNECTOR=m 715CONFIG_CONNECTOR=m
652CONFIG_MTD=y 716CONFIG_MTD=y
@@ -655,6 +719,7 @@ CONFIG_MTD=y
655CONFIG_MTD_PARTITIONS=y 719CONFIG_MTD_PARTITIONS=y
656# CONFIG_MTD_REDBOOT_PARTS is not set 720# CONFIG_MTD_REDBOOT_PARTS is not set
657# CONFIG_MTD_CMDLINE_PARTS is not set 721# CONFIG_MTD_CMDLINE_PARTS is not set
722# CONFIG_MTD_AR7_PARTS is not set
658 723
659# 724#
660# User Modules And Translation Layers 725# User Modules And Translation Layers
@@ -667,6 +732,7 @@ CONFIG_MTD_BLOCK=y
667# CONFIG_INFTL is not set 732# CONFIG_INFTL is not set
668# CONFIG_RFD_FTL is not set 733# CONFIG_RFD_FTL is not set
669# CONFIG_SSFDC is not set 734# CONFIG_SSFDC is not set
735CONFIG_MTD_OOPS=m
670 736
671# 737#
672# RAM/ROM/Flash chip drivers 738# RAM/ROM/Flash chip drivers
@@ -701,6 +767,7 @@ CONFIG_MTD_PHYSMAP=y
701CONFIG_MTD_PHYSMAP_START=0x0 767CONFIG_MTD_PHYSMAP_START=0x0
702CONFIG_MTD_PHYSMAP_LEN=0x0 768CONFIG_MTD_PHYSMAP_LEN=0x0
703CONFIG_MTD_PHYSMAP_BANKWIDTH=0 769CONFIG_MTD_PHYSMAP_BANKWIDTH=0
770# CONFIG_MTD_INTEL_VR_NOR is not set
704# CONFIG_MTD_PLATRAM is not set 771# CONFIG_MTD_PLATRAM is not set
705 772
706# 773#
@@ -748,25 +815,26 @@ CONFIG_BLK_DEV_NBD=m
748CONFIG_BLK_DEV_RAM=y 815CONFIG_BLK_DEV_RAM=y
749CONFIG_BLK_DEV_RAM_COUNT=16 816CONFIG_BLK_DEV_RAM_COUNT=16
750CONFIG_BLK_DEV_RAM_SIZE=4096 817CONFIG_BLK_DEV_RAM_SIZE=4096
751CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 818# CONFIG_BLK_DEV_XIP is not set
752CONFIG_CDROM_PKTCDVD=m 819CONFIG_CDROM_PKTCDVD=m
753CONFIG_CDROM_PKTCDVD_BUFFERS=8 820CONFIG_CDROM_PKTCDVD_BUFFERS=8
754# CONFIG_CDROM_PKTCDVD_WCACHE is not set 821# CONFIG_CDROM_PKTCDVD_WCACHE is not set
755CONFIG_ATA_OVER_ETH=m 822CONFIG_ATA_OVER_ETH=m
823# CONFIG_BLK_DEV_HD is not set
756# CONFIG_MISC_DEVICES is not set 824# CONFIG_MISC_DEVICES is not set
825CONFIG_HAVE_IDE=y
757CONFIG_IDE=y 826CONFIG_IDE=y
758CONFIG_IDE_MAX_HWIFS=4
759CONFIG_BLK_DEV_IDE=y
760 827
761# 828#
762# Please see Documentation/ide.txt for help/info on IDE drives 829# Please see Documentation/ide/ide.txt for help/info on IDE drives
763# 830#
764# CONFIG_BLK_DEV_IDE_SATA is not set 831# CONFIG_BLK_DEV_IDE_SATA is not set
765CONFIG_BLK_DEV_IDEDISK=y 832CONFIG_IDE_GD=y
766# CONFIG_IDEDISK_MULTI_MODE is not set 833CONFIG_IDE_GD_ATA=y
834# CONFIG_IDE_GD_ATAPI is not set
767CONFIG_BLK_DEV_IDECD=y 835CONFIG_BLK_DEV_IDECD=y
836CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
768# CONFIG_BLK_DEV_IDETAPE is not set 837# CONFIG_BLK_DEV_IDETAPE is not set
769# CONFIG_BLK_DEV_IDEFLOPPY is not set
770# CONFIG_BLK_DEV_IDESCSI is not set 838# CONFIG_BLK_DEV_IDESCSI is not set
771# CONFIG_IDE_TASK_IOCTL is not set 839# CONFIG_IDE_TASK_IOCTL is not set
772CONFIG_IDE_PROC_FS=y 840CONFIG_IDE_PROC_FS=y
@@ -775,24 +843,25 @@ CONFIG_IDE_PROC_FS=y
775# IDE chipset support/bugfixes 843# IDE chipset support/bugfixes
776# 844#
777CONFIG_IDE_GENERIC=y 845CONFIG_IDE_GENERIC=y
846# CONFIG_BLK_DEV_PLATFORM is not set
847CONFIG_BLK_DEV_IDEDMA_SFF=y
848
849#
850# PCI IDE chipsets support
851#
778CONFIG_BLK_DEV_IDEPCI=y 852CONFIG_BLK_DEV_IDEPCI=y
779# CONFIG_IDEPCI_SHARE_IRQ is not set
780CONFIG_IDEPCI_PCIBUS_ORDER=y 853CONFIG_IDEPCI_PCIBUS_ORDER=y
781# CONFIG_BLK_DEV_OFFBOARD is not set 854# CONFIG_BLK_DEV_OFFBOARD is not set
782CONFIG_BLK_DEV_GENERIC=y 855CONFIG_BLK_DEV_GENERIC=y
783# CONFIG_BLK_DEV_OPTI621 is not set 856# CONFIG_BLK_DEV_OPTI621 is not set
784CONFIG_BLK_DEV_IDEDMA_PCI=y 857CONFIG_BLK_DEV_IDEDMA_PCI=y
785# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
786# CONFIG_IDEDMA_ONLYDISK is not set
787# CONFIG_BLK_DEV_AEC62XX is not set 858# CONFIG_BLK_DEV_AEC62XX is not set
788# CONFIG_BLK_DEV_ALI15X3 is not set 859# CONFIG_BLK_DEV_ALI15X3 is not set
789# CONFIG_BLK_DEV_AMD74XX is not set 860# CONFIG_BLK_DEV_AMD74XX is not set
790# CONFIG_BLK_DEV_CMD64X is not set 861# CONFIG_BLK_DEV_CMD64X is not set
791# CONFIG_BLK_DEV_TRIFLEX is not set 862# CONFIG_BLK_DEV_TRIFLEX is not set
792# CONFIG_BLK_DEV_CY82C693 is not set
793# CONFIG_BLK_DEV_CS5520 is not set 863# CONFIG_BLK_DEV_CS5520 is not set
794# CONFIG_BLK_DEV_CS5530 is not set 864# CONFIG_BLK_DEV_CS5530 is not set
795# CONFIG_BLK_DEV_HPT34X is not set
796# CONFIG_BLK_DEV_HPT366 is not set 865# CONFIG_BLK_DEV_HPT366 is not set
797# CONFIG_BLK_DEV_JMICRON is not set 866# CONFIG_BLK_DEV_JMICRON is not set
798# CONFIG_BLK_DEV_SC1200 is not set 867# CONFIG_BLK_DEV_SC1200 is not set
@@ -808,10 +877,7 @@ CONFIG_BLK_DEV_IT8213=m
808# CONFIG_BLK_DEV_TRM290 is not set 877# CONFIG_BLK_DEV_TRM290 is not set
809# CONFIG_BLK_DEV_VIA82CXXX is not set 878# CONFIG_BLK_DEV_VIA82CXXX is not set
810CONFIG_BLK_DEV_TC86C001=m 879CONFIG_BLK_DEV_TC86C001=m
811# CONFIG_IDE_ARM is not set
812CONFIG_BLK_DEV_IDEDMA=y 880CONFIG_BLK_DEV_IDEDMA=y
813# CONFIG_IDEDMA_IVB is not set
814# CONFIG_BLK_DEV_HD is not set
815 881
816# 882#
817# SCSI device support 883# SCSI device support
@@ -848,8 +914,10 @@ CONFIG_SCSI_WAIT_SCAN=m
848# 914#
849CONFIG_SCSI_SPI_ATTRS=m 915CONFIG_SCSI_SPI_ATTRS=m
850CONFIG_SCSI_FC_ATTRS=m 916CONFIG_SCSI_FC_ATTRS=m
917# CONFIG_SCSI_FC_TGT_ATTRS is not set
851CONFIG_SCSI_ISCSI_ATTRS=m 918CONFIG_SCSI_ISCSI_ATTRS=m
852# CONFIG_SCSI_SAS_LIBSAS is not set 919# CONFIG_SCSI_SAS_LIBSAS is not set
920# CONFIG_SCSI_SRP_ATTRS is not set
853CONFIG_SCSI_LOWLEVEL=y 921CONFIG_SCSI_LOWLEVEL=y
854CONFIG_ISCSI_TCP=m 922CONFIG_ISCSI_TCP=m
855CONFIG_BLK_DEV_3W_XXXX_RAID=m 923CONFIG_BLK_DEV_3W_XXXX_RAID=m
@@ -866,6 +934,7 @@ CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
866# CONFIG_SCSI_AIC79XX is not set 934# CONFIG_SCSI_AIC79XX is not set
867# CONFIG_SCSI_AIC94XX is not set 935# CONFIG_SCSI_AIC94XX is not set
868# CONFIG_SCSI_DPT_I2O is not set 936# CONFIG_SCSI_DPT_I2O is not set
937# CONFIG_SCSI_ADVANSYS is not set
869# CONFIG_SCSI_ARCMSR is not set 938# CONFIG_SCSI_ARCMSR is not set
870# CONFIG_MEGARAID_NEWGEN is not set 939# CONFIG_MEGARAID_NEWGEN is not set
871# CONFIG_MEGARAID_LEGACY is not set 940# CONFIG_MEGARAID_LEGACY is not set
@@ -876,6 +945,7 @@ CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
876# CONFIG_SCSI_IPS is not set 945# CONFIG_SCSI_IPS is not set
877# CONFIG_SCSI_INITIO is not set 946# CONFIG_SCSI_INITIO is not set
878# CONFIG_SCSI_INIA100 is not set 947# CONFIG_SCSI_INIA100 is not set
948# CONFIG_SCSI_MVSAS is not set
879# CONFIG_SCSI_STEX is not set 949# CONFIG_SCSI_STEX is not set
880# CONFIG_SCSI_SYM53C8XX_2 is not set 950# CONFIG_SCSI_SYM53C8XX_2 is not set
881# CONFIG_SCSI_QLOGIC_1280 is not set 951# CONFIG_SCSI_QLOGIC_1280 is not set
@@ -887,6 +957,7 @@ CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
887# CONFIG_SCSI_NSP32 is not set 957# CONFIG_SCSI_NSP32 is not set
888# CONFIG_SCSI_DEBUG is not set 958# CONFIG_SCSI_DEBUG is not set
889# CONFIG_SCSI_SRP is not set 959# CONFIG_SCSI_SRP is not set
960# CONFIG_SCSI_DH is not set
890# CONFIG_ATA is not set 961# CONFIG_ATA is not set
891CONFIG_MD=y 962CONFIG_MD=y
892CONFIG_BLK_DEV_MD=m 963CONFIG_BLK_DEV_MD=m
@@ -905,32 +976,28 @@ CONFIG_DM_SNAPSHOT=m
905CONFIG_DM_MIRROR=m 976CONFIG_DM_MIRROR=m
906CONFIG_DM_ZERO=m 977CONFIG_DM_ZERO=m
907CONFIG_DM_MULTIPATH=m 978CONFIG_DM_MULTIPATH=m
908CONFIG_DM_MULTIPATH_EMC=m
909CONFIG_DM_MULTIPATH_RDAC=m
910# CONFIG_DM_DELAY is not set 979# CONFIG_DM_DELAY is not set
980# CONFIG_DM_UEVENT is not set
981# CONFIG_FUSION is not set
911 982
912# 983#
913# Fusion MPT device support 984# IEEE 1394 (FireWire) support
914# 985#
915# CONFIG_FUSION is not set
916# CONFIG_FUSION_SPI is not set
917# CONFIG_FUSION_FC is not set
918# CONFIG_FUSION_SAS is not set
919 986
920# 987#
921# IEEE 1394 (FireWire) support 988# Enable only one of the two stacks, unless you know what you are doing
922# 989#
923# CONFIG_FIREWIRE is not set 990# CONFIG_FIREWIRE is not set
924# CONFIG_IEEE1394 is not set 991# CONFIG_IEEE1394 is not set
925# CONFIG_I2O is not set 992# CONFIG_I2O is not set
926CONFIG_NETDEVICES=y 993CONFIG_NETDEVICES=y
927CONFIG_NETDEVICES_MULTIQUEUE=y
928CONFIG_IFB=m 994CONFIG_IFB=m
929CONFIG_DUMMY=m 995CONFIG_DUMMY=m
930CONFIG_BONDING=m 996CONFIG_BONDING=m
931CONFIG_MACVLAN=m 997CONFIG_MACVLAN=m
932CONFIG_EQUALIZER=m 998CONFIG_EQUALIZER=m
933CONFIG_TUN=m 999CONFIG_TUN=m
1000CONFIG_VETH=m
934# CONFIG_ARCNET is not set 1001# CONFIG_ARCNET is not set
935CONFIG_PHYLIB=m 1002CONFIG_PHYLIB=m
936 1003
@@ -946,26 +1013,34 @@ CONFIG_VITESSE_PHY=m
946CONFIG_SMSC_PHY=m 1013CONFIG_SMSC_PHY=m
947CONFIG_BROADCOM_PHY=m 1014CONFIG_BROADCOM_PHY=m
948CONFIG_ICPLUS_PHY=m 1015CONFIG_ICPLUS_PHY=m
949# CONFIG_FIXED_PHY is not set 1016CONFIG_REALTEK_PHY=m
1017CONFIG_MDIO_BITBANG=m
950CONFIG_NET_ETHERNET=y 1018CONFIG_NET_ETHERNET=y
951CONFIG_MII=y 1019CONFIG_MII=y
952CONFIG_AX88796=m 1020CONFIG_AX88796=m
1021# CONFIG_AX88796_93CX6 is not set
953# CONFIG_HAPPYMEAL is not set 1022# CONFIG_HAPPYMEAL is not set
954# CONFIG_SUNGEM is not set 1023# CONFIG_SUNGEM is not set
955# CONFIG_CASSINI is not set 1024# CONFIG_CASSINI is not set
956# CONFIG_NET_VENDOR_3COM is not set 1025# CONFIG_NET_VENDOR_3COM is not set
1026# CONFIG_SMC91X is not set
957# CONFIG_DM9000 is not set 1027# CONFIG_DM9000 is not set
958# CONFIG_NET_TULIP is not set 1028# CONFIG_NET_TULIP is not set
959# CONFIG_HP100 is not set 1029# CONFIG_HP100 is not set
1030# CONFIG_IBM_NEW_EMAC_ZMII is not set
1031# CONFIG_IBM_NEW_EMAC_RGMII is not set
1032# CONFIG_IBM_NEW_EMAC_TAH is not set
1033# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
1034# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
1035# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
1036# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
960CONFIG_NET_PCI=y 1037CONFIG_NET_PCI=y
961CONFIG_PCNET32=y 1038CONFIG_PCNET32=y
962# CONFIG_PCNET32_NAPI is not set
963# CONFIG_AMD8111_ETH is not set 1039# CONFIG_AMD8111_ETH is not set
964# CONFIG_ADAPTEC_STARFIRE is not set 1040# CONFIG_ADAPTEC_STARFIRE is not set
965# CONFIG_B44 is not set 1041# CONFIG_B44 is not set
966# CONFIG_FORCEDETH is not set 1042# CONFIG_FORCEDETH is not set
967CONFIG_TC35815=m 1043CONFIG_TC35815=m
968# CONFIG_DGRS is not set
969# CONFIG_EEPRO100 is not set 1044# CONFIG_EEPRO100 is not set
970# CONFIG_E100 is not set 1045# CONFIG_E100 is not set
971# CONFIG_FEALNX is not set 1046# CONFIG_FEALNX is not set
@@ -973,16 +1048,21 @@ CONFIG_TC35815=m
973# CONFIG_NE2K_PCI is not set 1048# CONFIG_NE2K_PCI is not set
974# CONFIG_8139CP is not set 1049# CONFIG_8139CP is not set
975# CONFIG_8139TOO is not set 1050# CONFIG_8139TOO is not set
1051# CONFIG_R6040 is not set
976# CONFIG_SIS900 is not set 1052# CONFIG_SIS900 is not set
977# CONFIG_EPIC100 is not set 1053# CONFIG_EPIC100 is not set
978# CONFIG_SUNDANCE is not set 1054# CONFIG_SUNDANCE is not set
979# CONFIG_TLAN is not set 1055# CONFIG_TLAN is not set
980# CONFIG_VIA_RHINE is not set 1056# CONFIG_VIA_RHINE is not set
981# CONFIG_SC92031 is not set 1057# CONFIG_SC92031 is not set
1058# CONFIG_ATL2 is not set
982CONFIG_NETDEV_1000=y 1059CONFIG_NETDEV_1000=y
983# CONFIG_ACENIC is not set 1060# CONFIG_ACENIC is not set
984# CONFIG_DL2K is not set 1061# CONFIG_DL2K is not set
985# CONFIG_E1000 is not set 1062# CONFIG_E1000 is not set
1063# CONFIG_E1000E is not set
1064# CONFIG_IP1000 is not set
1065# CONFIG_IGB is not set
986# CONFIG_NS83820 is not set 1066# CONFIG_NS83820 is not set
987# CONFIG_HAMACHI is not set 1067# CONFIG_HAMACHI is not set
988# CONFIG_YELLOWFIN is not set 1068# CONFIG_YELLOWFIN is not set
@@ -995,14 +1075,24 @@ CONFIG_NETDEV_1000=y
995# CONFIG_BNX2 is not set 1075# CONFIG_BNX2 is not set
996# CONFIG_QLA3XXX is not set 1076# CONFIG_QLA3XXX is not set
997# CONFIG_ATL1 is not set 1077# CONFIG_ATL1 is not set
1078# CONFIG_ATL1E is not set
1079# CONFIG_JME is not set
998CONFIG_NETDEV_10000=y 1080CONFIG_NETDEV_10000=y
999# CONFIG_CHELSIO_T1 is not set 1081# CONFIG_CHELSIO_T1 is not set
1000CONFIG_CHELSIO_T3=m 1082CONFIG_CHELSIO_T3=m
1083# CONFIG_ENIC is not set
1084# CONFIG_IXGBE is not set
1001# CONFIG_IXGB is not set 1085# CONFIG_IXGB is not set
1002# CONFIG_S2IO is not set 1086# CONFIG_S2IO is not set
1003# CONFIG_MYRI10GE is not set 1087# CONFIG_MYRI10GE is not set
1004CONFIG_NETXEN_NIC=m 1088CONFIG_NETXEN_NIC=m
1089# CONFIG_NIU is not set
1090# CONFIG_MLX4_EN is not set
1005# CONFIG_MLX4_CORE is not set 1091# CONFIG_MLX4_CORE is not set
1092# CONFIG_TEHUTI is not set
1093# CONFIG_BNX2X is not set
1094# CONFIG_QLGE is not set
1095# CONFIG_SFC is not set
1006# CONFIG_TR is not set 1096# CONFIG_TR is not set
1007 1097
1008# 1098#
@@ -1022,6 +1112,7 @@ CONFIG_IPW2200_QOS=y
1022# CONFIG_IPW2200_DEBUG is not set 1112# CONFIG_IPW2200_DEBUG is not set
1023CONFIG_LIBERTAS=m 1113CONFIG_LIBERTAS=m
1024# CONFIG_LIBERTAS_DEBUG is not set 1114# CONFIG_LIBERTAS_DEBUG is not set
1115# CONFIG_LIBERTAS_THINFIRM is not set
1025CONFIG_HERMES=m 1116CONFIG_HERMES=m
1026CONFIG_PLX_HERMES=m 1117CONFIG_PLX_HERMES=m
1027CONFIG_TMD_HERMES=m 1118CONFIG_TMD_HERMES=m
@@ -1030,25 +1121,30 @@ CONFIG_PCI_HERMES=m
1030CONFIG_ATMEL=m 1121CONFIG_ATMEL=m
1031CONFIG_PCI_ATMEL=m 1122CONFIG_PCI_ATMEL=m
1032CONFIG_PRISM54=m 1123CONFIG_PRISM54=m
1124# CONFIG_RTL8180 is not set
1125# CONFIG_ADM8211 is not set
1126# CONFIG_MAC80211_HWSIM is not set
1127# CONFIG_P54_COMMON is not set
1128# CONFIG_ATH5K is not set
1129# CONFIG_ATH9K is not set
1130# CONFIG_IWLCORE is not set
1131# CONFIG_IWLWIFI_LEDS is not set
1132# CONFIG_IWLAGN is not set
1133# CONFIG_IWL3945 is not set
1033CONFIG_HOSTAP=m 1134CONFIG_HOSTAP=m
1034CONFIG_HOSTAP_FIRMWARE=y 1135CONFIG_HOSTAP_FIRMWARE=y
1035CONFIG_HOSTAP_FIRMWARE_NVRAM=y 1136CONFIG_HOSTAP_FIRMWARE_NVRAM=y
1036CONFIG_HOSTAP_PLX=m 1137CONFIG_HOSTAP_PLX=m
1037CONFIG_HOSTAP_PCI=m 1138CONFIG_HOSTAP_PCI=m
1038CONFIG_BCM43XX=m 1139# CONFIG_B43 is not set
1039CONFIG_BCM43XX_DEBUG=y 1140# CONFIG_B43LEGACY is not set
1040CONFIG_BCM43XX_DMA=y 1141# CONFIG_RT2X00 is not set
1041CONFIG_BCM43XX_PIO=y
1042CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
1043# CONFIG_BCM43XX_DMA_MODE is not set
1044# CONFIG_BCM43XX_PIO_MODE is not set
1045# CONFIG_WAN is not set 1142# CONFIG_WAN is not set
1046# CONFIG_FDDI is not set 1143# CONFIG_FDDI is not set
1047# CONFIG_HIPPI is not set 1144# CONFIG_HIPPI is not set
1048# CONFIG_PPP is not set 1145# CONFIG_PPP is not set
1049# CONFIG_SLIP is not set 1146# CONFIG_SLIP is not set
1050# CONFIG_NET_FC is not set 1147# CONFIG_NET_FC is not set
1051# CONFIG_SHAPER is not set
1052# CONFIG_NETCONSOLE is not set 1148# CONFIG_NETCONSOLE is not set
1053# CONFIG_NETPOLL is not set 1149# CONFIG_NETPOLL is not set
1054# CONFIG_NET_POLL_CONTROLLER is not set 1150# CONFIG_NET_POLL_CONTROLLER is not set
@@ -1070,7 +1166,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
1070CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 1166CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
1071CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 1167CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
1072# CONFIG_INPUT_JOYDEV is not set 1168# CONFIG_INPUT_JOYDEV is not set
1073# CONFIG_INPUT_TSDEV is not set
1074# CONFIG_INPUT_EVDEV is not set 1169# CONFIG_INPUT_EVDEV is not set
1075# CONFIG_INPUT_EVBUG is not set 1170# CONFIG_INPUT_EVBUG is not set
1076 1171
@@ -1099,10 +1194,13 @@ CONFIG_SERIO_SERPORT=y
1099# Character devices 1194# Character devices
1100# 1195#
1101CONFIG_VT=y 1196CONFIG_VT=y
1197CONFIG_CONSOLE_TRANSLATIONS=y
1102CONFIG_VT_CONSOLE=y 1198CONFIG_VT_CONSOLE=y
1103CONFIG_HW_CONSOLE=y 1199CONFIG_HW_CONSOLE=y
1104CONFIG_VT_HW_CONSOLE_BINDING=y 1200CONFIG_VT_HW_CONSOLE_BINDING=y
1201CONFIG_DEVKMEM=y
1105# CONFIG_SERIAL_NONSTANDARD is not set 1202# CONFIG_SERIAL_NONSTANDARD is not set
1203# CONFIG_NOZOMI is not set
1106 1204
1107# 1205#
1108# Serial drivers 1206# Serial drivers
@@ -1124,101 +1222,165 @@ CONFIG_UNIX98_PTYS=y
1124CONFIG_LEGACY_PTYS=y 1222CONFIG_LEGACY_PTYS=y
1125CONFIG_LEGACY_PTY_COUNT=256 1223CONFIG_LEGACY_PTY_COUNT=256
1126# CONFIG_IPMI_HANDLER is not set 1224# CONFIG_IPMI_HANDLER is not set
1127# CONFIG_WATCHDOG is not set
1128CONFIG_HW_RANDOM=m 1225CONFIG_HW_RANDOM=m
1129CONFIG_RTC=y
1130# CONFIG_R3964 is not set 1226# CONFIG_R3964 is not set
1131# CONFIG_APPLICOM is not set 1227# CONFIG_APPLICOM is not set
1132# CONFIG_DRM is not set
1133# CONFIG_RAW_DRIVER is not set 1228# CONFIG_RAW_DRIVER is not set
1134# CONFIG_TCG_TPM is not set 1229# CONFIG_TCG_TPM is not set
1135CONFIG_DEVPORT=y 1230CONFIG_DEVPORT=y
1136# CONFIG_I2C is not set 1231# CONFIG_I2C is not set
1137
1138#
1139# SPI support
1140#
1141# CONFIG_SPI is not set 1232# CONFIG_SPI is not set
1142# CONFIG_SPI_MASTER is not set
1143# CONFIG_W1 is not set 1233# CONFIG_W1 is not set
1144# CONFIG_POWER_SUPPLY is not set 1234# CONFIG_POWER_SUPPLY is not set
1145# CONFIG_HWMON is not set 1235# CONFIG_HWMON is not set
1236# CONFIG_THERMAL is not set
1237# CONFIG_THERMAL_HWMON is not set
1238# CONFIG_WATCHDOG is not set
1239CONFIG_SSB_POSSIBLE=y
1240
1241#
1242# Sonics Silicon Backplane
1243#
1244# CONFIG_SSB is not set
1146 1245
1147# 1246#
1148# Multifunction device drivers 1247# Multifunction device drivers
1149# 1248#
1249# CONFIG_MFD_CORE is not set
1150# CONFIG_MFD_SM501 is not set 1250# CONFIG_MFD_SM501 is not set
1251# CONFIG_HTC_PASIC3 is not set
1252# CONFIG_MFD_TMIO is not set
1253# CONFIG_REGULATOR is not set
1151 1254
1152# 1255#
1153# Multimedia devices 1256# Multimedia devices
1154# 1257#
1258
1259#
1260# Multimedia core support
1261#
1155# CONFIG_VIDEO_DEV is not set 1262# CONFIG_VIDEO_DEV is not set
1156# CONFIG_DVB_CORE is not set 1263# CONFIG_DVB_CORE is not set
1264# CONFIG_VIDEO_MEDIA is not set
1265
1266#
1267# Multimedia drivers
1268#
1157# CONFIG_DAB is not set 1269# CONFIG_DAB is not set
1158 1270
1159# 1271#
1160# Graphics support 1272# Graphics support
1161# 1273#
1274# CONFIG_DRM is not set
1275# CONFIG_VGASTATE is not set
1276# CONFIG_VIDEO_OUTPUT_CONTROL is not set
1277# CONFIG_FB is not set
1162# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1278# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1163 1279
1164# 1280#
1165# Display device support 1281# Display device support
1166# 1282#
1167# CONFIG_DISPLAY_SUPPORT is not set 1283# CONFIG_DISPLAY_SUPPORT is not set
1168# CONFIG_VGASTATE is not set
1169# CONFIG_VIDEO_OUTPUT_CONTROL is not set
1170# CONFIG_FB is not set
1171 1284
1172# 1285#
1173# Console display driver support 1286# Console display driver support
1174# 1287#
1175# CONFIG_VGA_CONSOLE is not set 1288# CONFIG_VGA_CONSOLE is not set
1176CONFIG_DUMMY_CONSOLE=y 1289CONFIG_DUMMY_CONSOLE=y
1177
1178#
1179# Sound
1180#
1181# CONFIG_SOUND is not set 1290# CONFIG_SOUND is not set
1182CONFIG_HID_SUPPORT=y 1291CONFIG_HID_SUPPORT=y
1183CONFIG_HID=m 1292CONFIG_HID=m
1184# CONFIG_HID_DEBUG is not set 1293# CONFIG_HID_DEBUG is not set
1294# CONFIG_HIDRAW is not set
1295# CONFIG_HID_PID is not set
1296
1297#
1298# Special HID drivers
1299#
1300CONFIG_HID_COMPAT=y
1185CONFIG_USB_SUPPORT=y 1301CONFIG_USB_SUPPORT=y
1186CONFIG_USB_ARCH_HAS_HCD=y 1302CONFIG_USB_ARCH_HAS_HCD=y
1187CONFIG_USB_ARCH_HAS_OHCI=y 1303CONFIG_USB_ARCH_HAS_OHCI=y
1188CONFIG_USB_ARCH_HAS_EHCI=y 1304CONFIG_USB_ARCH_HAS_EHCI=y
1189# CONFIG_USB is not set 1305# CONFIG_USB is not set
1306# CONFIG_USB_OTG_WHITELIST is not set
1307# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1190 1308
1191# 1309#
1192# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1310# Enable Host or Gadget support to see Inventra options
1193# 1311#
1194 1312
1195# 1313#
1196# USB Gadget Support 1314# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1197# 1315#
1198# CONFIG_USB_GADGET is not set 1316# CONFIG_USB_GADGET is not set
1317# CONFIG_UWB is not set
1199# CONFIG_MMC is not set 1318# CONFIG_MMC is not set
1200# CONFIG_NEW_LEDS is not set 1319# CONFIG_MEMSTICK is not set
1320CONFIG_NEW_LEDS=y
1321CONFIG_LEDS_CLASS=m
1322
1323#
1324# LED drivers
1325#
1326
1327#
1328# LED Triggers
1329#
1330CONFIG_LEDS_TRIGGERS=y
1331CONFIG_LEDS_TRIGGER_TIMER=m
1332CONFIG_LEDS_TRIGGER_IDE_DISK=y
1333CONFIG_LEDS_TRIGGER_HEARTBEAT=m
1334CONFIG_LEDS_TRIGGER_BACKLIGHT=m
1335CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
1336# CONFIG_ACCESSIBILITY is not set
1201# CONFIG_INFINIBAND is not set 1337# CONFIG_INFINIBAND is not set
1202# CONFIG_RTC_CLASS is not set 1338CONFIG_RTC_LIB=y
1339CONFIG_RTC_CLASS=y
1340CONFIG_RTC_HCTOSYS=y
1341CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1342# CONFIG_RTC_DEBUG is not set
1203 1343
1204# 1344#
1205# DMA Engine support 1345# RTC interfaces
1206# 1346#
1207# CONFIG_DMA_ENGINE is not set 1347CONFIG_RTC_INTF_SYSFS=y
1348CONFIG_RTC_INTF_PROC=y
1349CONFIG_RTC_INTF_DEV=y
1350# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1351# CONFIG_RTC_DRV_TEST is not set
1208 1352
1209# 1353#
1210# DMA Clients 1354# SPI RTC drivers
1211# 1355#
1212 1356
1213# 1357#
1214# DMA Devices 1358# Platform RTC drivers
1215# 1359#
1360CONFIG_RTC_DRV_CMOS=y
1361# CONFIG_RTC_DRV_DS1286 is not set
1362# CONFIG_RTC_DRV_DS1511 is not set
1363# CONFIG_RTC_DRV_DS1553 is not set
1364# CONFIG_RTC_DRV_DS1742 is not set
1365# CONFIG_RTC_DRV_STK17TA8 is not set
1366# CONFIG_RTC_DRV_M48T86 is not set
1367# CONFIG_RTC_DRV_M48T35 is not set
1368# CONFIG_RTC_DRV_M48T59 is not set
1369# CONFIG_RTC_DRV_BQ4802 is not set
1370# CONFIG_RTC_DRV_V3020 is not set
1216 1371
1217# 1372#
1218# Userspace I/O 1373# on-CPU RTC drivers
1219# 1374#
1375# CONFIG_DMADEVICES is not set
1220CONFIG_UIO=m 1376CONFIG_UIO=m
1221CONFIG_UIO_CIF=m 1377CONFIG_UIO_CIF=m
1378# CONFIG_UIO_PDRV is not set
1379# CONFIG_UIO_PDRV_GENIRQ is not set
1380# CONFIG_UIO_SMX is not set
1381# CONFIG_UIO_SERCOS3 is not set
1382# CONFIG_STAGING is not set
1383CONFIG_STAGING_EXCLUDE_BUILD=y
1222 1384
1223# 1385#
1224# File systems 1386# File systems
@@ -1230,9 +1392,8 @@ CONFIG_EXT3_FS=y
1230CONFIG_EXT3_FS_XATTR=y 1392CONFIG_EXT3_FS_XATTR=y
1231# CONFIG_EXT3_FS_POSIX_ACL is not set 1393# CONFIG_EXT3_FS_POSIX_ACL is not set
1232# CONFIG_EXT3_FS_SECURITY is not set 1394# CONFIG_EXT3_FS_SECURITY is not set
1233# CONFIG_EXT4DEV_FS is not set 1395# CONFIG_EXT4_FS is not set
1234CONFIG_JBD=y 1396CONFIG_JBD=y
1235# CONFIG_JBD_DEBUG is not set
1236CONFIG_FS_MBCACHE=y 1397CONFIG_FS_MBCACHE=y
1237CONFIG_REISERFS_FS=m 1398CONFIG_REISERFS_FS=m
1238# CONFIG_REISERFS_CHECK is not set 1399# CONFIG_REISERFS_CHECK is not set
@@ -1246,22 +1407,22 @@ CONFIG_JFS_SECURITY=y
1246# CONFIG_JFS_DEBUG is not set 1407# CONFIG_JFS_DEBUG is not set
1247# CONFIG_JFS_STATISTICS is not set 1408# CONFIG_JFS_STATISTICS is not set
1248CONFIG_FS_POSIX_ACL=y 1409CONFIG_FS_POSIX_ACL=y
1410CONFIG_FILE_LOCKING=y
1249CONFIG_XFS_FS=m 1411CONFIG_XFS_FS=m
1250CONFIG_XFS_QUOTA=y 1412CONFIG_XFS_QUOTA=y
1251CONFIG_XFS_SECURITY=y
1252CONFIG_XFS_POSIX_ACL=y 1413CONFIG_XFS_POSIX_ACL=y
1253# CONFIG_XFS_RT is not set 1414# CONFIG_XFS_RT is not set
1254# CONFIG_GFS2_FS is not set 1415# CONFIG_XFS_DEBUG is not set
1255# CONFIG_OCFS2_FS is not set 1416# CONFIG_OCFS2_FS is not set
1256CONFIG_MINIX_FS=m 1417CONFIG_DNOTIFY=y
1257CONFIG_ROMFS_FS=m
1258CONFIG_INOTIFY=y 1418CONFIG_INOTIFY=y
1259CONFIG_INOTIFY_USER=y 1419CONFIG_INOTIFY_USER=y
1260CONFIG_QUOTA=y 1420CONFIG_QUOTA=y
1421# CONFIG_QUOTA_NETLINK_INTERFACE is not set
1422CONFIG_PRINT_QUOTA_WARNING=y
1261# CONFIG_QFMT_V1 is not set 1423# CONFIG_QFMT_V1 is not set
1262CONFIG_QFMT_V2=y 1424CONFIG_QFMT_V2=y
1263CONFIG_QUOTACTL=y 1425CONFIG_QUOTACTL=y
1264CONFIG_DNOTIFY=y
1265CONFIG_AUTOFS_FS=y 1426CONFIG_AUTOFS_FS=y
1266# CONFIG_AUTOFS4_FS is not set 1427# CONFIG_AUTOFS4_FS is not set
1267CONFIG_FUSE_FS=m 1428CONFIG_FUSE_FS=m
@@ -1291,11 +1452,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1291CONFIG_PROC_FS=y 1452CONFIG_PROC_FS=y
1292CONFIG_PROC_KCORE=y 1453CONFIG_PROC_KCORE=y
1293CONFIG_PROC_SYSCTL=y 1454CONFIG_PROC_SYSCTL=y
1455CONFIG_PROC_PAGE_MONITOR=y
1294CONFIG_SYSFS=y 1456CONFIG_SYSFS=y
1295CONFIG_TMPFS=y 1457CONFIG_TMPFS=y
1296# CONFIG_TMPFS_POSIX_ACL is not set 1458# CONFIG_TMPFS_POSIX_ACL is not set
1297# CONFIG_HUGETLB_PAGE is not set 1459# CONFIG_HUGETLB_PAGE is not set
1298CONFIG_RAMFS=y
1299# CONFIG_CONFIGFS_FS is not set 1460# CONFIG_CONFIGFS_FS is not set
1300 1461
1301# 1462#
@@ -1312,46 +1473,48 @@ CONFIG_EFS_FS=m
1312CONFIG_JFFS2_FS=m 1473CONFIG_JFFS2_FS=m
1313CONFIG_JFFS2_FS_DEBUG=0 1474CONFIG_JFFS2_FS_DEBUG=0
1314CONFIG_JFFS2_FS_WRITEBUFFER=y 1475CONFIG_JFFS2_FS_WRITEBUFFER=y
1476# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1315# CONFIG_JFFS2_SUMMARY is not set 1477# CONFIG_JFFS2_SUMMARY is not set
1316CONFIG_JFFS2_FS_XATTR=y 1478CONFIG_JFFS2_FS_XATTR=y
1317CONFIG_JFFS2_FS_POSIX_ACL=y 1479CONFIG_JFFS2_FS_POSIX_ACL=y
1318CONFIG_JFFS2_FS_SECURITY=y 1480CONFIG_JFFS2_FS_SECURITY=y
1319CONFIG_JFFS2_COMPRESSION_OPTIONS=y 1481CONFIG_JFFS2_COMPRESSION_OPTIONS=y
1320CONFIG_JFFS2_ZLIB=y 1482CONFIG_JFFS2_ZLIB=y
1483# CONFIG_JFFS2_LZO is not set
1321CONFIG_JFFS2_RTIME=y 1484CONFIG_JFFS2_RTIME=y
1322CONFIG_JFFS2_RUBIN=y 1485CONFIG_JFFS2_RUBIN=y
1323# CONFIG_JFFS2_CMODE_NONE is not set 1486# CONFIG_JFFS2_CMODE_NONE is not set
1324CONFIG_JFFS2_CMODE_PRIORITY=y 1487CONFIG_JFFS2_CMODE_PRIORITY=y
1325# CONFIG_JFFS2_CMODE_SIZE is not set 1488# CONFIG_JFFS2_CMODE_SIZE is not set
1489# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
1490# CONFIG_UBIFS_FS is not set
1326CONFIG_CRAMFS=m 1491CONFIG_CRAMFS=m
1327CONFIG_VXFS_FS=m 1492CONFIG_VXFS_FS=m
1493CONFIG_MINIX_FS=m
1494# CONFIG_OMFS_FS is not set
1328# CONFIG_HPFS_FS is not set 1495# CONFIG_HPFS_FS is not set
1329# CONFIG_QNX4FS_FS is not set 1496# CONFIG_QNX4FS_FS is not set
1497CONFIG_ROMFS_FS=m
1330CONFIG_SYSV_FS=m 1498CONFIG_SYSV_FS=m
1331CONFIG_UFS_FS=m 1499CONFIG_UFS_FS=m
1332# CONFIG_UFS_FS_WRITE is not set 1500# CONFIG_UFS_FS_WRITE is not set
1333# CONFIG_UFS_DEBUG is not set 1501# CONFIG_UFS_DEBUG is not set
1334 1502CONFIG_NETWORK_FILESYSTEMS=y
1335#
1336# Network File Systems
1337#
1338CONFIG_NFS_FS=y 1503CONFIG_NFS_FS=y
1339CONFIG_NFS_V3=y 1504CONFIG_NFS_V3=y
1340# CONFIG_NFS_V3_ACL is not set 1505# CONFIG_NFS_V3_ACL is not set
1341# CONFIG_NFS_V4 is not set 1506# CONFIG_NFS_V4 is not set
1342# CONFIG_NFS_DIRECTIO is not set 1507CONFIG_ROOT_NFS=y
1343CONFIG_NFSD=y 1508CONFIG_NFSD=y
1344CONFIG_NFSD_V3=y 1509CONFIG_NFSD_V3=y
1345# CONFIG_NFSD_V3_ACL is not set 1510# CONFIG_NFSD_V3_ACL is not set
1346# CONFIG_NFSD_V4 is not set 1511# CONFIG_NFSD_V4 is not set
1347# CONFIG_NFSD_TCP is not set
1348CONFIG_ROOT_NFS=y
1349CONFIG_LOCKD=y 1512CONFIG_LOCKD=y
1350CONFIG_LOCKD_V4=y 1513CONFIG_LOCKD_V4=y
1351CONFIG_EXPORTFS=y 1514CONFIG_EXPORTFS=y
1352CONFIG_NFS_COMMON=y 1515CONFIG_NFS_COMMON=y
1353CONFIG_SUNRPC=y 1516CONFIG_SUNRPC=y
1354# CONFIG_SUNRPC_BIND34 is not set 1517# CONFIG_SUNRPC_REGISTER_V4 is not set
1355# CONFIG_RPCSEC_GSS_KRB5 is not set 1518# CONFIG_RPCSEC_GSS_KRB5 is not set
1356# CONFIG_RPCSEC_GSS_SPKM3 is not set 1519# CONFIG_RPCSEC_GSS_SPKM3 is not set
1357# CONFIG_SMB_FS is not set 1520# CONFIG_SMB_FS is not set
@@ -1365,10 +1528,6 @@ CONFIG_SUNRPC=y
1365# 1528#
1366# CONFIG_PARTITION_ADVANCED is not set 1529# CONFIG_PARTITION_ADVANCED is not set
1367CONFIG_MSDOS_PARTITION=y 1530CONFIG_MSDOS_PARTITION=y
1368
1369#
1370# Native Language Support
1371#
1372CONFIG_NLS=m 1531CONFIG_NLS=m
1373CONFIG_NLS_DEFAULT="iso8859-1" 1532CONFIG_NLS_DEFAULT="iso8859-1"
1374CONFIG_NLS_CODEPAGE_437=m 1533CONFIG_NLS_CODEPAGE_437=m
@@ -1409,29 +1568,30 @@ CONFIG_NLS_ISO8859_15=m
1409CONFIG_NLS_KOI8_R=m 1568CONFIG_NLS_KOI8_R=m
1410CONFIG_NLS_KOI8_U=m 1569CONFIG_NLS_KOI8_U=m
1411CONFIG_NLS_UTF8=m 1570CONFIG_NLS_UTF8=m
1412
1413#
1414# Distributed Lock Manager
1415#
1416# CONFIG_DLM is not set 1571# CONFIG_DLM is not set
1417 1572
1418# 1573#
1419# Profiling support
1420#
1421# CONFIG_PROFILING is not set
1422
1423#
1424# Kernel hacking 1574# Kernel hacking
1425# 1575#
1426CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1576CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1427# CONFIG_PRINTK_TIME is not set 1577# CONFIG_PRINTK_TIME is not set
1578CONFIG_ENABLE_WARN_DEPRECATED=y
1428CONFIG_ENABLE_MUST_CHECK=y 1579CONFIG_ENABLE_MUST_CHECK=y
1580CONFIG_FRAME_WARN=1024
1429# CONFIG_MAGIC_SYSRQ is not set 1581# CONFIG_MAGIC_SYSRQ is not set
1430# CONFIG_UNUSED_SYMBOLS is not set 1582# CONFIG_UNUSED_SYMBOLS is not set
1431# CONFIG_DEBUG_FS is not set 1583# CONFIG_DEBUG_FS is not set
1432# CONFIG_HEADERS_CHECK is not set 1584# CONFIG_HEADERS_CHECK is not set
1433# CONFIG_DEBUG_KERNEL is not set 1585# CONFIG_DEBUG_KERNEL is not set
1434CONFIG_CROSSCOMPILE=y 1586# CONFIG_DEBUG_MEMORY_INIT is not set
1587# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1588
1589#
1590# Tracers
1591#
1592# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1593# CONFIG_SAMPLES is not set
1594CONFIG_HAVE_ARCH_KGDB=y
1435CONFIG_CMDLINE="" 1595CONFIG_CMDLINE=""
1436 1596
1437# 1597#
@@ -1439,51 +1599,103 @@ CONFIG_CMDLINE=""
1439# 1599#
1440# CONFIG_KEYS is not set 1600# CONFIG_KEYS is not set
1441# CONFIG_SECURITY is not set 1601# CONFIG_SECURITY is not set
1602# CONFIG_SECURITYFS is not set
1603# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1442CONFIG_XOR_BLOCKS=m 1604CONFIG_XOR_BLOCKS=m
1443CONFIG_ASYNC_CORE=m 1605CONFIG_ASYNC_CORE=m
1444CONFIG_ASYNC_MEMCPY=m 1606CONFIG_ASYNC_MEMCPY=m
1445CONFIG_ASYNC_XOR=m 1607CONFIG_ASYNC_XOR=m
1446CONFIG_CRYPTO=y 1608CONFIG_CRYPTO=y
1609
1610#
1611# Crypto core or helper
1612#
1613# CONFIG_CRYPTO_FIPS is not set
1447CONFIG_CRYPTO_ALGAPI=y 1614CONFIG_CRYPTO_ALGAPI=y
1448CONFIG_CRYPTO_ABLKCIPHER=m 1615CONFIG_CRYPTO_AEAD=y
1449CONFIG_CRYPTO_BLKCIPHER=m 1616CONFIG_CRYPTO_BLKCIPHER=y
1450CONFIG_CRYPTO_HASH=y 1617CONFIG_CRYPTO_HASH=y
1618CONFIG_CRYPTO_RNG=y
1451CONFIG_CRYPTO_MANAGER=y 1619CONFIG_CRYPTO_MANAGER=y
1620CONFIG_CRYPTO_GF128MUL=m
1621CONFIG_CRYPTO_NULL=m
1622CONFIG_CRYPTO_CRYPTD=m
1623CONFIG_CRYPTO_AUTHENC=m
1624# CONFIG_CRYPTO_TEST is not set
1625
1626#
1627# Authenticated Encryption with Associated Data
1628#
1629# CONFIG_CRYPTO_CCM is not set
1630# CONFIG_CRYPTO_GCM is not set
1631# CONFIG_CRYPTO_SEQIV is not set
1632
1633#
1634# Block modes
1635#
1636CONFIG_CRYPTO_CBC=m
1637# CONFIG_CRYPTO_CTR is not set
1638# CONFIG_CRYPTO_CTS is not set
1639CONFIG_CRYPTO_ECB=m
1640CONFIG_CRYPTO_LRW=m
1641CONFIG_CRYPTO_PCBC=m
1642# CONFIG_CRYPTO_XTS is not set
1643
1644#
1645# Hash modes
1646#
1452CONFIG_CRYPTO_HMAC=y 1647CONFIG_CRYPTO_HMAC=y
1453CONFIG_CRYPTO_XCBC=m 1648CONFIG_CRYPTO_XCBC=m
1454CONFIG_CRYPTO_NULL=m 1649
1650#
1651# Digest
1652#
1653CONFIG_CRYPTO_CRC32C=m
1455CONFIG_CRYPTO_MD4=m 1654CONFIG_CRYPTO_MD4=m
1456CONFIG_CRYPTO_MD5=y 1655CONFIG_CRYPTO_MD5=y
1656CONFIG_CRYPTO_MICHAEL_MIC=m
1657# CONFIG_CRYPTO_RMD128 is not set
1658# CONFIG_CRYPTO_RMD160 is not set
1659# CONFIG_CRYPTO_RMD256 is not set
1660# CONFIG_CRYPTO_RMD320 is not set
1457CONFIG_CRYPTO_SHA1=m 1661CONFIG_CRYPTO_SHA1=m
1458CONFIG_CRYPTO_SHA256=m 1662CONFIG_CRYPTO_SHA256=m
1459CONFIG_CRYPTO_SHA512=m 1663CONFIG_CRYPTO_SHA512=m
1460CONFIG_CRYPTO_WP512=m
1461CONFIG_CRYPTO_TGR192=m 1664CONFIG_CRYPTO_TGR192=m
1462CONFIG_CRYPTO_GF128MUL=m 1665CONFIG_CRYPTO_WP512=m
1463CONFIG_CRYPTO_ECB=m 1666
1464CONFIG_CRYPTO_CBC=m 1667#
1465CONFIG_CRYPTO_PCBC=m 1668# Ciphers
1466CONFIG_CRYPTO_LRW=m 1669#
1467CONFIG_CRYPTO_CRYPTD=m
1468CONFIG_CRYPTO_DES=m
1469CONFIG_CRYPTO_FCRYPT=m
1470CONFIG_CRYPTO_BLOWFISH=m
1471CONFIG_CRYPTO_TWOFISH=m
1472CONFIG_CRYPTO_TWOFISH_COMMON=m
1473CONFIG_CRYPTO_SERPENT=m
1474CONFIG_CRYPTO_AES=m 1670CONFIG_CRYPTO_AES=m
1671CONFIG_CRYPTO_ANUBIS=m
1672CONFIG_CRYPTO_ARC4=m
1673CONFIG_CRYPTO_BLOWFISH=m
1674CONFIG_CRYPTO_CAMELLIA=m
1475CONFIG_CRYPTO_CAST5=m 1675CONFIG_CRYPTO_CAST5=m
1476CONFIG_CRYPTO_CAST6=m 1676CONFIG_CRYPTO_CAST6=m
1477CONFIG_CRYPTO_TEA=m 1677CONFIG_CRYPTO_DES=m
1478CONFIG_CRYPTO_ARC4=m 1678CONFIG_CRYPTO_FCRYPT=m
1479CONFIG_CRYPTO_KHAZAD=m 1679CONFIG_CRYPTO_KHAZAD=m
1480CONFIG_CRYPTO_ANUBIS=m 1680# CONFIG_CRYPTO_SALSA20 is not set
1681# CONFIG_CRYPTO_SEED is not set
1682CONFIG_CRYPTO_SERPENT=m
1683CONFIG_CRYPTO_TEA=m
1684CONFIG_CRYPTO_TWOFISH=m
1685CONFIG_CRYPTO_TWOFISH_COMMON=m
1686
1687#
1688# Compression
1689#
1481CONFIG_CRYPTO_DEFLATE=m 1690CONFIG_CRYPTO_DEFLATE=m
1482CONFIG_CRYPTO_MICHAEL_MIC=m 1691# CONFIG_CRYPTO_LZO is not set
1483CONFIG_CRYPTO_CRC32C=m 1692
1484CONFIG_CRYPTO_CAMELLIA=m 1693#
1485# CONFIG_CRYPTO_TEST is not set 1694# Random Number Generation
1695#
1696# CONFIG_CRYPTO_ANSI_CPRNG is not set
1486CONFIG_CRYPTO_HW=y 1697CONFIG_CRYPTO_HW=y
1698# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1487 1699
1488# 1700#
1489# Library routines 1701# Library routines
@@ -1491,7 +1703,8 @@ CONFIG_CRYPTO_HW=y
1491CONFIG_BITREVERSE=y 1703CONFIG_BITREVERSE=y
1492# CONFIG_CRC_CCITT is not set 1704# CONFIG_CRC_CCITT is not set
1493CONFIG_CRC16=m 1705CONFIG_CRC16=m
1494# CONFIG_CRC_ITU_T is not set 1706# CONFIG_CRC_T10DIF is not set
1707CONFIG_CRC_ITU_T=m
1495CONFIG_CRC32=y 1708CONFIG_CRC32=y
1496# CONFIG_CRC7 is not set 1709# CONFIG_CRC7 is not set
1497CONFIG_LIBCRC32C=m 1710CONFIG_LIBCRC32C=m
diff --git a/arch/mips/include/asm/asmmacro.h b/arch/mips/include/asm/asmmacro.h
index 7a881755800f..6c8342ae74db 100644
--- a/arch/mips/include/asm/asmmacro.h
+++ b/arch/mips/include/asm/asmmacro.h
@@ -35,6 +35,16 @@
35 mtc0 \reg, CP0_TCSTATUS 35 mtc0 \reg, CP0_TCSTATUS
36 _ehb 36 _ehb
37 .endm 37 .endm
38#elif defined(CONFIG_CPU_MIPSR2)
39 .macro local_irq_enable reg=t0
40 ei
41 irq_enable_hazard
42 .endm
43
44 .macro local_irq_disable reg=t0
45 di
46 irq_disable_hazard
47 .endm
38#else 48#else
39 .macro local_irq_enable reg=t0 49 .macro local_irq_enable reg=t0
40 mfc0 \reg, CP0_STATUS 50 mfc0 \reg, CP0_STATUS
diff --git a/arch/mips/include/asm/pci.h b/arch/mips/include/asm/pci.h
index 5510c53b7feb..053e4634acee 100644
--- a/arch/mips/include/asm/pci.h
+++ b/arch/mips/include/asm/pci.h
@@ -79,6 +79,11 @@ static inline void pcibios_penalize_isa_irq(int irq, int active)
79 /* We don't do dynamic PCI IRQ allocation */ 79 /* We don't do dynamic PCI IRQ allocation */
80} 80}
81 81
82#define HAVE_PCI_MMAP
83
84extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
85 enum pci_mmap_state mmap_state, int write_combine);
86
82/* 87/*
83 * Dynamic DMA mapping stuff. 88 * Dynamic DMA mapping stuff.
84 * MIPS has everything mapped statically. 89 * MIPS has everything mapped statically.
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S
index 759f68066b5d..d0916a55cd77 100644
--- a/arch/mips/kernel/scall32-o32.S
+++ b/arch/mips/kernel/scall32-o32.S
@@ -262,14 +262,11 @@ bad_alignment:
262 LEAF(sys_syscall) 262 LEAF(sys_syscall)
263 subu t0, a0, __NR_O32_Linux # check syscall number 263 subu t0, a0, __NR_O32_Linux # check syscall number
264 sltiu v0, t0, __NR_O32_Linux_syscalls + 1 264 sltiu v0, t0, __NR_O32_Linux_syscalls + 1
265 beqz t0, einval # do not recurse
265 sll t1, t0, 3 266 sll t1, t0, 3
266 beqz v0, einval 267 beqz v0, einval
267
268 lw t2, sys_call_table(t1) # syscall routine 268 lw t2, sys_call_table(t1) # syscall routine
269 269
270 li v1, 4000 - __NR_O32_Linux # index of sys_syscall
271 beq t0, v1, einval # do not recurse
272
273 /* Some syscalls like execve get their arguments from struct pt_regs 270 /* Some syscalls like execve get their arguments from struct pt_regs
274 and claim zero arguments in the syscall table. Thus we have to 271 and claim zero arguments in the syscall table. Thus we have to
275 assume the worst case and shuffle around all potential arguments. 272 assume the worst case and shuffle around all potential arguments.
@@ -627,7 +624,7 @@ einval: li v0, -ENOSYS
627 sys sys_pselect6 6 624 sys sys_pselect6 6
628 sys sys_ppoll 5 625 sys sys_ppoll 5
629 sys sys_unshare 1 626 sys sys_unshare 1
630 sys sys_splice 4 627 sys sys_splice 6
631 sys sys_sync_file_range 7 /* 4305 */ 628 sys sys_sync_file_range 7 /* 4305 */
632 sys sys_tee 4 629 sys sys_tee 4
633 sys sys_vmsplice 4 630 sys sys_vmsplice 4
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
index e266b3aa6560..30f3b6317a83 100644
--- a/arch/mips/kernel/scall64-n32.S
+++ b/arch/mips/kernel/scall64-n32.S
@@ -390,7 +390,7 @@ EXPORT(sysn32_call_table)
390 PTR sys_splice 390 PTR sys_splice
391 PTR sys_sync_file_range 391 PTR sys_sync_file_range
392 PTR sys_tee 392 PTR sys_tee
393 PTR sys_vmsplice /* 6270 */ 393 PTR compat_sys_vmsplice /* 6270 */
394 PTR sys_move_pages 394 PTR sys_move_pages
395 PTR compat_sys_set_robust_list 395 PTR compat_sys_set_robust_list
396 PTR compat_sys_get_robust_list 396 PTR compat_sys_get_robust_list
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
index 6c7ef8313ebd..fefef4af8595 100644
--- a/arch/mips/kernel/scall64-o32.S
+++ b/arch/mips/kernel/scall64-o32.S
@@ -174,14 +174,12 @@ not_o32_scall:
174 END(handle_sys) 174 END(handle_sys)
175 175
176LEAF(sys32_syscall) 176LEAF(sys32_syscall)
177 sltu v0, a0, __NR_O32_Linux + __NR_O32_Linux_syscalls + 1 177 subu t0, a0, __NR_O32_Linux # check syscall number
178 sltiu v0, t0, __NR_O32_Linux_syscalls + 1
179 beqz t0, einval # do not recurse
180 dsll t1, t0, 3
178 beqz v0, einval 181 beqz v0, einval
179 182 ld t2, sys_call_table(t1) # syscall routine
180 dsll v0, a0, 3
181 ld t2, (sys_call_table - (__NR_O32_Linux * 8))(v0)
182
183 li v1, 4000 # indirect syscall number
184 beq a0, v1, einval # do not recurse
185 183
186 move a0, a1 # shift argument registers 184 move a0, a1 # shift argument registers
187 move a1, a2 185 move a1, a2
@@ -198,7 +196,7 @@ LEAF(sys32_syscall)
198 jr t2 196 jr t2
199 /* Unreached */ 197 /* Unreached */
200 198
201einval: li v0, -EINVAL 199einval: li v0, -ENOSYS
202 jr ra 200 jr ra
203 END(sys32_syscall) 201 END(sys32_syscall)
204 202
@@ -512,7 +510,7 @@ sys_call_table:
512 PTR sys_splice 510 PTR sys_splice
513 PTR sys32_sync_file_range /* 4305 */ 511 PTR sys32_sync_file_range /* 4305 */
514 PTR sys_tee 512 PTR sys_tee
515 PTR sys_vmsplice 513 PTR compat_sys_vmsplice
516 PTR compat_sys_move_pages 514 PTR compat_sys_move_pages
517 PTR compat_sys_set_robust_list 515 PTR compat_sys_set_robust_list
518 PTR compat_sys_get_robust_list /* 4310 */ 516 PTR compat_sys_get_robust_list /* 4310 */
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c
index 972b2d2b8401..a1b3da6bad5c 100644
--- a/arch/mips/kernel/vpe.c
+++ b/arch/mips/kernel/vpe.c
@@ -1134,7 +1134,7 @@ static int vpe_release(struct inode *inode, struct file *filp)
1134 1134
1135 /* It's good to be able to run the SP and if it chokes have a look at 1135 /* It's good to be able to run the SP and if it chokes have a look at
1136 the /dev/rt?. But if we reset the pointer to the shared struct we 1136 the /dev/rt?. But if we reset the pointer to the shared struct we
1137 loose what has happened. So perhaps if garbage is sent to the vpe 1137 lose what has happened. So perhaps if garbage is sent to the vpe
1138 device, use it as a trigger for the reset. Hopefully a nice 1138 device, use it as a trigger for the reset. Hopefully a nice
1139 executable will be along shortly. */ 1139 executable will be along shortly. */
1140 if (ret < 0) 1140 if (ret < 0)
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c
index 5b98d0e731c2..e6708b3ad343 100644
--- a/arch/mips/mm/dma-default.c
+++ b/arch/mips/mm/dma-default.c
@@ -111,6 +111,7 @@ EXPORT_SYMBOL(dma_alloc_coherent);
111void dma_free_noncoherent(struct device *dev, size_t size, void *vaddr, 111void dma_free_noncoherent(struct device *dev, size_t size, void *vaddr,
112 dma_addr_t dma_handle) 112 dma_addr_t dma_handle)
113{ 113{
114 plat_unmap_dma_mem(dma_handle);
114 free_pages((unsigned long) vaddr, get_order(size)); 115 free_pages((unsigned long) vaddr, get_order(size));
115} 116}
116 117
@@ -121,6 +122,8 @@ void dma_free_coherent(struct device *dev, size_t size, void *vaddr,
121{ 122{
122 unsigned long addr = (unsigned long) vaddr; 123 unsigned long addr = (unsigned long) vaddr;
123 124
125 plat_unmap_dma_mem(dma_handle);
126
124 if (!plat_device_is_coherent(dev)) 127 if (!plat_device_is_coherent(dev))
125 addr = CAC_ADDR(addr); 128 addr = CAC_ADDR(addr);
126 129
diff --git a/arch/mips/mti-malta/Makefile b/arch/mips/mti-malta/Makefile
index cef2db8d2225..32e847808df1 100644
--- a/arch/mips/mti-malta/Makefile
+++ b/arch/mips/mti-malta/Makefile
@@ -7,9 +7,8 @@
7# 7#
8obj-y := malta-amon.o malta-cmdline.o \ 8obj-y := malta-amon.o malta-cmdline.o \
9 malta-display.o malta-init.o malta-int.o \ 9 malta-display.o malta-init.o malta-int.o \
10 malta-memory.o malta-mtd.o \ 10 malta-memory.o malta-platform.o \
11 malta-platform.o malta-reset.o \ 11 malta-reset.o malta-setup.o malta-time.o
12 malta-setup.o malta-time.o
13 12
14obj-$(CONFIG_EARLY_PRINTK) += malta-console.o 13obj-$(CONFIG_EARLY_PRINTK) += malta-console.o
15obj-$(CONFIG_PCI) += malta-pci.o 14obj-$(CONFIG_PCI) += malta-pci.o
diff --git a/arch/mips/mti-malta/malta-mtd.c b/arch/mips/mti-malta/malta-mtd.c
deleted file mode 100644
index 8ad9bdf25dce..000000000000
--- a/arch/mips/mti-malta/malta-mtd.c
+++ /dev/null
@@ -1,63 +0,0 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2006 MIPS Technologies, Inc.
7 * written by Ralf Baechle <ralf@linux-mips.org>
8 */
9
10#include <linux/init.h>
11#include <linux/platform_device.h>
12#include <linux/mtd/partitions.h>
13#include <linux/mtd/physmap.h>
14#include <mtd/mtd-abi.h>
15
16static struct mtd_partition malta_mtd_partitions[] = {
17 {
18 .name = "YAMON",
19 .offset = 0x0,
20 .size = 0x100000,
21 .mask_flags = MTD_WRITEABLE
22 }, {
23 .name = "User FS",
24 .offset = 0x100000,
25 .size = 0x2e0000
26 }, {
27 .name = "Board Config",
28 .offset = 0x3e0000,
29 .size = 0x020000,
30 .mask_flags = MTD_WRITEABLE
31 }
32};
33
34static struct physmap_flash_data malta_flash_data = {
35 .width = 4,
36 .nr_parts = ARRAY_SIZE(malta_mtd_partitions),
37 .parts = malta_mtd_partitions
38};
39
40static struct resource malta_flash_resource = {
41 .start = 0x1e000000,
42 .end = 0x1e3fffff,
43 .flags = IORESOURCE_MEM
44};
45
46static struct platform_device malta_flash = {
47 .name = "physmap-flash",
48 .id = 0,
49 .dev = {
50 .platform_data = &malta_flash_data,
51 },
52 .num_resources = 1,
53 .resource = &malta_flash_resource,
54};
55
56static int __init malta_mtd_init(void)
57{
58 platform_device_register(&malta_flash);
59
60 return 0;
61}
62
63module_init(malta_mtd_init)
diff --git a/arch/mips/mti-malta/malta-platform.c b/arch/mips/mti-malta/malta-platform.c
index 83b9bab3cd3f..72e32a7715be 100644
--- a/arch/mips/mti-malta/malta-platform.c
+++ b/arch/mips/mti-malta/malta-platform.c
@@ -3,10 +3,14 @@
3 * License. See the file "COPYING" in the main directory of this archive 3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details. 4 * for more details.
5 * 5 *
6 * Copyright (C) 2007 MIPS Technologies, Inc. 6 * Copyright (C) 2006, 07 MIPS Technologies, Inc.
7 * written by Ralf Baechle (ralf@linux-mips.org) 7 * written by Ralf Baechle (ralf@linux-mips.org)
8 * written by Ralf Baechle <ralf@linux-mips.org>
8 * 9 *
9 * Probe driver for the Malta's UART ports: 10 * Copyright (C) 2008 Wind River Systems, Inc.
11 * updated by Tiejun Chen <tiejun.chen@windriver.com>
12 *
13 * 1. Probe driver for the Malta's UART ports:
10 * 14 *
11 * o 2 ports in the SMC SuperIO 15 * o 2 ports in the SMC SuperIO
12 * o 1 port in the CBUS UART, a discrete 16550 which normally is only used 16 * o 1 port in the CBUS UART, a discrete 16550 which normally is only used
@@ -14,10 +18,17 @@
14 * 18 *
15 * We don't use 8250_platform.c on Malta as it would result in the CBUS 19 * We don't use 8250_platform.c on Malta as it would result in the CBUS
16 * UART becoming ttyS0. 20 * UART becoming ttyS0.
21 *
22 * 2. Register RTC-CMOS platform device on Malta.
17 */ 23 */
18#include <linux/module.h>
19#include <linux/init.h> 24#include <linux/init.h>
20#include <linux/serial_8250.h> 25#include <linux/serial_8250.h>
26#include <linux/mc146818rtc.h>
27#include <linux/module.h>
28#include <linux/mtd/partitions.h>
29#include <linux/mtd/physmap.h>
30#include <linux/platform_device.h>
31#include <mtd/mtd-abi.h>
21 32
22#define SMC_PORT(base, int) \ 33#define SMC_PORT(base, int) \
23{ \ 34{ \
@@ -45,21 +56,93 @@ static struct plat_serial8250_port uart8250_data[] = {
45 { }, 56 { },
46}; 57};
47 58
48static struct platform_device uart8250_device = { 59static struct platform_device malta_uart8250_device = {
49 .name = "serial8250", 60 .name = "serial8250",
50 .id = PLAT8250_DEV_PLATFORM2, 61 .id = PLAT8250_DEV_PLATFORM,
51 .dev = { 62 .dev = {
52 .platform_data = uart8250_data, 63 .platform_data = uart8250_data,
53 }, 64 },
54}; 65};
55 66
56static int __init uart8250_init(void) 67struct resource malta_rtc_resources[] = {
68 {
69 .start = RTC_PORT(0),
70 .end = RTC_PORT(7),
71 .flags = IORESOURCE_IO,
72 }, {
73 .start = RTC_IRQ,
74 .end = RTC_IRQ,
75 .flags = IORESOURCE_IRQ,
76 }
77};
78
79static struct platform_device malta_rtc_device = {
80 .name = "rtc_cmos",
81 .id = -1,
82 .resource = malta_rtc_resources,
83 .num_resources = ARRAY_SIZE(malta_rtc_resources),
84};
85
86static struct mtd_partition malta_mtd_partitions[] = {
87 {
88 .name = "YAMON",
89 .offset = 0x0,
90 .size = 0x100000,
91 .mask_flags = MTD_WRITEABLE
92 }, {
93 .name = "User FS",
94 .offset = 0x100000,
95 .size = 0x2e0000
96 }, {
97 .name = "Board Config",
98 .offset = 0x3e0000,
99 .size = 0x020000,
100 .mask_flags = MTD_WRITEABLE
101 }
102};
103
104static struct physmap_flash_data malta_flash_data = {
105 .width = 4,
106 .nr_parts = ARRAY_SIZE(malta_mtd_partitions),
107 .parts = malta_mtd_partitions
108};
109
110static struct resource malta_flash_resource = {
111 .start = 0x1e000000,
112 .end = 0x1e3fffff,
113 .flags = IORESOURCE_MEM
114};
115
116static struct platform_device malta_flash_device = {
117 .name = "physmap-flash",
118 .id = 0,
119 .dev = {
120 .platform_data = &malta_flash_data,
121 },
122 .num_resources = 1,
123 .resource = &malta_flash_resource,
124};
125
126static struct platform_device *malta_devices[] __initdata = {
127 &malta_uart8250_device,
128 &malta_rtc_device,
129 &malta_flash_device,
130};
131
132static int __init malta_add_devices(void)
57{ 133{
58 return platform_device_register(&uart8250_device); 134 int err;
59}
60 135
61module_init(uart8250_init); 136 err = platform_add_devices(malta_devices, ARRAY_SIZE(malta_devices));
137 if (err)
138 return err;
139
140 /*
141 * Set RTC to BCD mode to support current alarm code.
142 */
143 CMOS_WRITE(CMOS_READ(RTC_CONTROL) & ~RTC_DM_BINARY, RTC_CONTROL);
144
145 return 0;
146}
62 147
63MODULE_AUTHOR("Ralf Baechle <ralf@linux-mips.org>"); 148device_initcall(malta_add_devices);
64MODULE_LICENSE("GPL");
65MODULE_DESCRIPTION("8250 UART probe driver for the Malta CBUS UART");
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c
index a377e9d2d029..62cae740e250 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -354,6 +354,30 @@ EXPORT_SYMBOL(PCIBIOS_MIN_IO);
354EXPORT_SYMBOL(PCIBIOS_MIN_MEM); 354EXPORT_SYMBOL(PCIBIOS_MIN_MEM);
355#endif 355#endif
356 356
357int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
358 enum pci_mmap_state mmap_state, int write_combine)
359{
360 unsigned long prot;
361
362 /*
363 * I/O space can be accessed via normal processor loads and stores on
364 * this platform but for now we elect not to do this and portable
365 * drivers should not do this anyway.
366 */
367 if (mmap_state == pci_mmap_io)
368 return -EINVAL;
369
370 /*
371 * Ignore write-combine; for now only return uncached mappings.
372 */
373 prot = pgprot_val(vma->vm_page_prot);
374 prot = (prot & ~_CACHE_MASK) | _CACHE_UNCACHED;
375 vma->vm_page_prot = __pgprot(prot);
376
377 return remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
378 vma->vm_end - vma->vm_start, vma->vm_page_prot);
379}
380
357char * (*pcibios_plat_setup)(char *str) __devinitdata; 381char * (*pcibios_plat_setup)(char *str) __devinitdata;
358 382
359char *__devinit pcibios_setup(char *str) 383char *__devinit pcibios_setup(char *str)
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S
index b7cbb1487af4..62fba8aa9b6e 100644
--- a/arch/mn10300/kernel/entry.S
+++ b/arch/mn10300/kernel/entry.S
@@ -180,6 +180,7 @@ ENTRY(resume_userspace)
180 180
181#ifdef CONFIG_PREEMPT 181#ifdef CONFIG_PREEMPT
182ENTRY(resume_kernel) 182ENTRY(resume_kernel)
183 __cli
183 mov (TI_preempt_count,a2),d0 # non-zero preempt_count ? 184 mov (TI_preempt_count,a2),d0 # non-zero preempt_count ?
184 cmp 0,d0 185 cmp 0,d0
185 bne restore_all 186 bne restore_all
@@ -190,7 +191,7 @@ need_resched:
190 mov (REG_EPSW,fp),d0 191 mov (REG_EPSW,fp),d0
191 and EPSW_IM,d0 192 and EPSW_IM,d0
192 cmp EPSW_IM_7,d0 # interrupts off (exception path) ? 193 cmp EPSW_IM_7,d0 # interrupts off (exception path) ?
193 beq restore_all 194 bne restore_all
194 call preempt_schedule_irq[],0 195 call preempt_schedule_irq[],0
195 jmp need_resched 196 jmp need_resched
196#endif 197#endif
diff --git a/arch/mn10300/kernel/gdb-io-serial.c b/arch/mn10300/kernel/gdb-io-serial.c
index 9a6d4e8ebe73..11584c51acd9 100644
--- a/arch/mn10300/kernel/gdb-io-serial.c
+++ b/arch/mn10300/kernel/gdb-io-serial.c
@@ -99,6 +99,7 @@ int gdbstub_io_rx_char(unsigned char *_ch, int nonblock)
99 try_again: 99 try_again:
100 /* pull chars out of the buffer */ 100 /* pull chars out of the buffer */
101 ix = gdbstub_rx_outp; 101 ix = gdbstub_rx_outp;
102 barrier();
102 if (ix == gdbstub_rx_inp) { 103 if (ix == gdbstub_rx_inp) {
103 if (nonblock) 104 if (nonblock)
104 return -EAGAIN; 105 return -EAGAIN;
@@ -110,6 +111,7 @@ int gdbstub_io_rx_char(unsigned char *_ch, int nonblock)
110 111
111 ch = gdbstub_rx_buffer[ix++]; 112 ch = gdbstub_rx_buffer[ix++];
112 st = gdbstub_rx_buffer[ix++]; 113 st = gdbstub_rx_buffer[ix++];
114 barrier();
113 gdbstub_rx_outp = ix & 0x00000fff; 115 gdbstub_rx_outp = ix & 0x00000fff;
114 116
115 if (st & UART_LSR_BI) { 117 if (st & UART_LSR_BI) {
diff --git a/arch/mn10300/kernel/mn10300-serial.c b/arch/mn10300/kernel/mn10300-serial.c
index aa07d0cd1905..59b9c4bf9583 100644
--- a/arch/mn10300/kernel/mn10300-serial.c
+++ b/arch/mn10300/kernel/mn10300-serial.c
@@ -566,6 +566,11 @@ static void mn10300_serial_transmit_interrupt(struct mn10300_serial_port *port)
566{ 566{
567 _enter("%s", port->name); 567 _enter("%s", port->name);
568 568
569 if (!port->uart.info || !port->uart.info->port.tty) {
570 mn10300_serial_dis_tx_intr(port);
571 return;
572 }
573
569 if (uart_tx_stopped(&port->uart) || 574 if (uart_tx_stopped(&port->uart) ||
570 uart_circ_empty(&port->uart.info->xmit)) 575 uart_circ_empty(&port->uart.info->xmit))
571 mn10300_serial_dis_tx_intr(port); 576 mn10300_serial_dis_tx_intr(port);
diff --git a/arch/mn10300/kernel/module.c b/arch/mn10300/kernel/module.c
index 8fa36893df7a..6b287f2e8e84 100644
--- a/arch/mn10300/kernel/module.c
+++ b/arch/mn10300/kernel/module.c
@@ -1,6 +1,6 @@
1/* MN10300 Kernel module helper routines 1/* MN10300 Kernel module helper routines
2 * 2 *
3 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. 3 * Copyright (C) 2007, 2008 Red Hat, Inc. All Rights Reserved.
4 * Written by Mark Salter (msalter@redhat.com) 4 * Written by Mark Salter (msalter@redhat.com)
5 * - Derived from arch/i386/kernel/module.c 5 * - Derived from arch/i386/kernel/module.c
6 * 6 *
@@ -64,21 +64,6 @@ int module_frob_arch_sections(Elf_Ehdr *hdr,
64 return 0; 64 return 0;
65} 65}
66 66
67static uint32_t reloc_get16(uint8_t *p)
68{
69 return p[0] | (p[1] << 8);
70}
71
72static uint32_t reloc_get24(uint8_t *p)
73{
74 return reloc_get16(p) | (p[2] << 16);
75}
76
77static uint32_t reloc_get32(uint8_t *p)
78{
79 return reloc_get16(p) | (reloc_get16(p+2) << 16);
80}
81
82static void reloc_put16(uint8_t *p, uint32_t val) 67static void reloc_put16(uint8_t *p, uint32_t val)
83{ 68{
84 p[0] = val & 0xff; 69 p[0] = val & 0xff;
@@ -144,25 +129,19 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
144 relocation = sym->st_value + rel[i].r_addend; 129 relocation = sym->st_value + rel[i].r_addend;
145 130
146 switch (ELF32_R_TYPE(rel[i].r_info)) { 131 switch (ELF32_R_TYPE(rel[i].r_info)) {
147 /* for the first four relocation types, we add the 132 /* for the first four relocation types, we simply
148 * adjustment into the value at the location given */ 133 * store the adjustment at the location given */
149 case R_MN10300_32: 134 case R_MN10300_32:
150 value = reloc_get32(location); 135 reloc_put32(location, relocation);
151 value += relocation;
152 reloc_put32(location, value);
153 break; 136 break;
154 case R_MN10300_24: 137 case R_MN10300_24:
155 value = reloc_get24(location); 138 reloc_put24(location, relocation);
156 value += relocation;
157 reloc_put24(location, value);
158 break; 139 break;
159 case R_MN10300_16: 140 case R_MN10300_16:
160 value = reloc_get16(location); 141 reloc_put16(location, relocation);
161 value += relocation;
162 reloc_put16(location, value);
163 break; 142 break;
164 case R_MN10300_8: 143 case R_MN10300_8:
165 *location += relocation; 144 *location = relocation;
166 break; 145 break;
167 146
168 /* for the next three relocation types, we write the 147 /* for the next three relocation types, we write the
diff --git a/arch/mn10300/kernel/setup.c b/arch/mn10300/kernel/setup.c
index 017121ce896f..e1d88ab51008 100644
--- a/arch/mn10300/kernel/setup.c
+++ b/arch/mn10300/kernel/setup.c
@@ -161,7 +161,7 @@ void __init setup_arch(char **cmdline_p)
161 reserve the page it is occupying. */ 161 reserve the page it is occupying. */
162 if (CONFIG_INTERRUPT_VECTOR_BASE >= CONFIG_KERNEL_RAM_BASE_ADDRESS && 162 if (CONFIG_INTERRUPT_VECTOR_BASE >= CONFIG_KERNEL_RAM_BASE_ADDRESS &&
163 CONFIG_INTERRUPT_VECTOR_BASE < memory_end) 163 CONFIG_INTERRUPT_VECTOR_BASE < memory_end)
164 reserve_bootmem(CONFIG_INTERRUPT_VECTOR_BASE, 1, 164 reserve_bootmem(CONFIG_INTERRUPT_VECTOR_BASE, PAGE_SIZE,
165 BOOTMEM_DEFAULT); 165 BOOTMEM_DEFAULT);
166 166
167 reserve_bootmem(PAGE_ALIGN(PFN_PHYS(free_pfn)), bootmap_size, 167 reserve_bootmem(PAGE_ALIGN(PFN_PHYS(free_pfn)), bootmap_size,
diff --git a/arch/mn10300/kernel/vmlinux.lds.S b/arch/mn10300/kernel/vmlinux.lds.S
index a3e80f444f55..b8259668f7dc 100644
--- a/arch/mn10300/kernel/vmlinux.lds.S
+++ b/arch/mn10300/kernel/vmlinux.lds.S
@@ -11,6 +11,7 @@
11#define __VMLINUX_LDS__ 11#define __VMLINUX_LDS__
12#include <asm-generic/vmlinux.lds.h> 12#include <asm-generic/vmlinux.lds.h>
13#include <asm/thread_info.h> 13#include <asm/thread_info.h>
14#include <asm/page.h>
14 15
15OUTPUT_FORMAT("elf32-am33lin", "elf32-am33lin", "elf32-am33lin") 16OUTPUT_FORMAT("elf32-am33lin", "elf32-am33lin", "elf32-am33lin")
16OUTPUT_ARCH(mn10300) 17OUTPUT_ARCH(mn10300)
@@ -55,13 +56,13 @@ SECTIONS
55 CONSTRUCTORS 56 CONSTRUCTORS
56 } 57 }
57 58
58 . = ALIGN(4096); 59 . = ALIGN(PAGE_SIZE);
59 __nosave_begin = .; 60 __nosave_begin = .;
60 .data_nosave : { *(.data.nosave) } 61 .data_nosave : { *(.data.nosave) }
61 . = ALIGN(4096); 62 . = ALIGN(PAGE_SIZE);
62 __nosave_end = .; 63 __nosave_end = .;
63 64
64 . = ALIGN(4096); 65 . = ALIGN(PAGE_SIZE);
65 .data.page_aligned : { *(.data.idt) } 66 .data.page_aligned : { *(.data.idt) }
66 67
67 . = ALIGN(32); 68 . = ALIGN(32);
@@ -78,7 +79,7 @@ SECTIONS
78 .data.init_task : { *(.data.init_task) } 79 .data.init_task : { *(.data.init_task) }
79 80
80 /* might get freed after init */ 81 /* might get freed after init */
81 . = ALIGN(4096); 82 . = ALIGN(PAGE_SIZE);
82 .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { 83 .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) {
83 __smp_locks = .; 84 __smp_locks = .;
84 *(.smp_locks) 85 *(.smp_locks)
@@ -86,7 +87,7 @@ SECTIONS
86 } 87 }
87 88
88 /* will be freed after init */ 89 /* will be freed after init */
89 . = ALIGN(4096); /* Init code and data */ 90 . = ALIGN(PAGE_SIZE); /* Init code and data */
90 __init_begin = .; 91 __init_begin = .;
91 .init.text : { 92 .init.text : {
92 _sinittext = .; 93 _sinittext = .;
@@ -120,17 +121,14 @@ SECTIONS
120 .exit.data : { *(.exit.data) } 121 .exit.data : { *(.exit.data) }
121 122
122#ifdef CONFIG_BLK_DEV_INITRD 123#ifdef CONFIG_BLK_DEV_INITRD
123 . = ALIGN(4096); 124 . = ALIGN(PAGE_SIZE);
124 __initramfs_start = .; 125 __initramfs_start = .;
125 .init.ramfs : { *(.init.ramfs) } 126 .init.ramfs : { *(.init.ramfs) }
126 __initramfs_end = .; 127 __initramfs_end = .;
127#endif 128#endif
128 129
129 . = ALIGN(32); 130 PERCPU(32)
130 __per_cpu_start = .; 131 . = ALIGN(PAGE_SIZE);
131 .data.percpu : { *(.data.percpu) }
132 __per_cpu_end = .;
133 . = ALIGN(4096);
134 __init_end = .; 132 __init_end = .;
135 /* freed after init ends here */ 133 /* freed after init ends here */
136 134
@@ -145,7 +143,7 @@ SECTIONS
145 _end = . ; 143 _end = . ;
146 144
147 /* This is where the kernel creates the early boot page tables */ 145 /* This is where the kernel creates the early boot page tables */
148 . = ALIGN(4096); 146 . = ALIGN(PAGE_SIZE);
149 pg0 = .; 147 pg0 = .;
150 148
151 /* Sections to be discarded */ 149 /* Sections to be discarded */
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 8fc6d72849ae..3d3daa674299 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -41,6 +41,7 @@ $(obj)/4xx.o: BOOTCFLAGS += -mcpu=405
41$(obj)/ebony.o: BOOTCFLAGS += -mcpu=405 41$(obj)/ebony.o: BOOTCFLAGS += -mcpu=405
42$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=405 42$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=405
43$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405 43$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405
44$(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405
44$(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405 45$(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405
45$(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405 46$(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405
46 47
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts
index 2c9d54a35bc3..4bdbaf4993a1 100644
--- a/arch/powerpc/boot/dts/mpc8349emitx.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitx.dts
@@ -91,6 +91,14 @@
91 interrupts = <18 0x8>; 91 interrupts = <18 0x8>;
92 interrupt-parent = <&ipic>; 92 interrupt-parent = <&ipic>;
93 }; 93 };
94
95 mcu_pio: mcu@a {
96 #gpio-cells = <2>;
97 compatible = "fsl,mc9s08qg8-mpc8349emitx",
98 "fsl,mcu-mpc8349emitx";
99 reg = <0x0a>;
100 gpio-controller;
101 };
94 }; 102 };
95 103
96 spi@7000 { 104 spi@7000 {
@@ -139,14 +147,6 @@
139 interrupt-parent = <&ipic>; 147 interrupt-parent = <&ipic>;
140 interrupts = <71 8>; 148 interrupts = <71 8>;
141 }; 149 };
142
143 mcu_pio: mcu@a {
144 #gpio-cells = <2>;
145 compatible = "fsl,mc9s08qg8-mpc8349emitx",
146 "fsl,mcu-mpc8349emitx";
147 reg = <0x0a>;
148 gpio-controller;
149 };
150 }; 150 };
151 151
152 usb@22000 { 152 usb@22000 {
diff --git a/arch/powerpc/configs/83xx/mpc834x_itx_defconfig b/arch/powerpc/configs/83xx/mpc834x_itx_defconfig
index e55ff7c47a36..07a674f5344e 100644
--- a/arch/powerpc/configs/83xx/mpc834x_itx_defconfig
+++ b/arch/powerpc/configs/83xx/mpc834x_itx_defconfig
@@ -723,7 +723,7 @@ CONFIG_CICADA_PHY=y
723# CONFIG_BROADCOM_PHY is not set 723# CONFIG_BROADCOM_PHY is not set
724# CONFIG_ICPLUS_PHY is not set 724# CONFIG_ICPLUS_PHY is not set
725# CONFIG_REALTEK_PHY is not set 725# CONFIG_REALTEK_PHY is not set
726# CONFIG_FIXED_PHY is not set 726CONFIG_FIXED_PHY=y
727# CONFIG_MDIO_BITBANG is not set 727# CONFIG_MDIO_BITBANG is not set
728# CONFIG_NET_ETHERNET is not set 728# CONFIG_NET_ETHERNET is not set
729CONFIG_NETDEV_1000=y 729CONFIG_NETDEV_1000=y
diff --git a/arch/powerpc/configs/mpc83xx_defconfig b/arch/powerpc/configs/mpc83xx_defconfig
index 15eb30c9b3f9..d582014b0a38 100644
--- a/arch/powerpc/configs/mpc83xx_defconfig
+++ b/arch/powerpc/configs/mpc83xx_defconfig
@@ -682,7 +682,7 @@ CONFIG_VITESSE_PHY=y
682# CONFIG_BROADCOM_PHY is not set 682# CONFIG_BROADCOM_PHY is not set
683CONFIG_ICPLUS_PHY=y 683CONFIG_ICPLUS_PHY=y
684# CONFIG_REALTEK_PHY is not set 684# CONFIG_REALTEK_PHY is not set
685# CONFIG_FIXED_PHY is not set 685CONFIG_FIXED_PHY=y
686# CONFIG_MDIO_BITBANG is not set 686# CONFIG_MDIO_BITBANG is not set
687CONFIG_NET_ETHERNET=y 687CONFIG_NET_ETHERNET=y
688CONFIG_MII=y 688CONFIG_MII=y
diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h
index 8931ba729d2b..bb62ad876de3 100644
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -104,4 +104,6 @@ static inline void kvmppc_set_pid(struct kvm_vcpu *vcpu, u32 new_pid)
104 } 104 }
105} 105}
106 106
107extern void kvmppc_core_destroy_mmu(struct kvm_vcpu *vcpu);
108
107#endif /* __POWERPC_KVM_PPC_H__ */ 109#endif /* __POWERPC_KVM_PPC_H__ */
diff --git a/arch/powerpc/kernel/cpu_setup_44x.S b/arch/powerpc/kernel/cpu_setup_44x.S
index 31c18b52affb..10b4ab1008af 100644
--- a/arch/powerpc/kernel/cpu_setup_44x.S
+++ b/arch/powerpc/kernel/cpu_setup_44x.S
@@ -40,6 +40,7 @@ _GLOBAL(__setup_cpu_460gt)
40 mtlr r4 40 mtlr r4
41 blr 41 blr
42 42
43_GLOBAL(__setup_cpu_440x5)
43_GLOBAL(__setup_cpu_440gx) 44_GLOBAL(__setup_cpu_440gx)
44_GLOBAL(__setup_cpu_440spe) 45_GLOBAL(__setup_cpu_440spe)
45 b __fixup_440A_mcheck 46 b __fixup_440A_mcheck
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index b1eb834bc0fc..7e8719504f39 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -39,6 +39,7 @@ extern void __setup_cpu_440epx(unsigned long offset, struct cpu_spec* spec);
39extern void __setup_cpu_440gx(unsigned long offset, struct cpu_spec* spec); 39extern void __setup_cpu_440gx(unsigned long offset, struct cpu_spec* spec);
40extern void __setup_cpu_440grx(unsigned long offset, struct cpu_spec* spec); 40extern void __setup_cpu_440grx(unsigned long offset, struct cpu_spec* spec);
41extern void __setup_cpu_440spe(unsigned long offset, struct cpu_spec* spec); 41extern void __setup_cpu_440spe(unsigned long offset, struct cpu_spec* spec);
42extern void __setup_cpu_440x5(unsigned long offset, struct cpu_spec* spec);
42extern void __setup_cpu_460ex(unsigned long offset, struct cpu_spec* spec); 43extern void __setup_cpu_460ex(unsigned long offset, struct cpu_spec* spec);
43extern void __setup_cpu_460gt(unsigned long offset, struct cpu_spec* spec); 44extern void __setup_cpu_460gt(unsigned long offset, struct cpu_spec* spec);
44extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); 45extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
@@ -1500,6 +1501,8 @@ static struct cpu_spec __initdata cpu_specs[] = {
1500 .cpu_user_features = COMMON_USER_BOOKE, 1501 .cpu_user_features = COMMON_USER_BOOKE,
1501 .icache_bsize = 32, 1502 .icache_bsize = 32,
1502 .dcache_bsize = 32, 1503 .dcache_bsize = 32,
1504 .cpu_setup = __setup_cpu_440x5,
1505 .machine_check = machine_check_440A,
1503 .platform = "ppc440", 1506 .platform = "ppc440",
1504 }, 1507 },
1505 { /* 460EX */ 1508 { /* 460EX */
diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c
index 1562daf8839a..3a6eaa876ee1 100644
--- a/arch/powerpc/kernel/dma.c
+++ b/arch/powerpc/kernel/dma.c
@@ -75,6 +75,7 @@ static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl,
75 for_each_sg(sgl, sg, nents, i) { 75 for_each_sg(sgl, sg, nents, i) {
76 sg->dma_address = sg_phys(sg) + get_dma_direct_offset(dev); 76 sg->dma_address = sg_phys(sg) + get_dma_direct_offset(dev);
77 sg->dma_length = sg->length; 77 sg->dma_length = sg->length;
78 __dma_sync_page(sg_page(sg), sg->offset, sg->length, direction);
78 } 79 }
79 80
80 return nents; 81 return nents;
diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
index bdc8b0e860e5..5c33bc14bd9f 100644
--- a/arch/powerpc/kernel/misc_32.S
+++ b/arch/powerpc/kernel/misc_32.S
@@ -479,17 +479,20 @@ _GLOBAL(_tlbil_pid)
479 * (no broadcast) 479 * (no broadcast)
480 */ 480 */
481_GLOBAL(_tlbil_va) 481_GLOBAL(_tlbil_va)
482 mfmsr r10
483 wrteei 0
482 slwi r4,r4,16 484 slwi r4,r4,16
483 mtspr SPRN_MAS6,r4 /* assume AS=0 for now */ 485 mtspr SPRN_MAS6,r4 /* assume AS=0 for now */
484 tlbsx 0,r3 486 tlbsx 0,r3
485 mfspr r4,SPRN_MAS1 /* check valid */ 487 mfspr r4,SPRN_MAS1 /* check valid */
486 andis. r3,r4,MAS1_VALID@h 488 andis. r3,r4,MAS1_VALID@h
487 beqlr 489 beq 1f
488 rlwinm r4,r4,0,1,31 490 rlwinm r4,r4,0,1,31
489 mtspr SPRN_MAS1,r4 491 mtspr SPRN_MAS1,r4
490 tlbwe 492 tlbwe
491 msync 493 msync
492 isync 494 isync
4951: wrtee r10
493 blr 496 blr
494#endif /* CONFIG_FSL_BOOKE */ 497#endif /* CONFIG_FSL_BOOKE */
495 498
diff --git a/arch/powerpc/kvm/44x_tlb.c b/arch/powerpc/kvm/44x_tlb.c
index 2e227a412bc2..ad72c6f9811f 100644
--- a/arch/powerpc/kvm/44x_tlb.c
+++ b/arch/powerpc/kvm/44x_tlb.c
@@ -124,6 +124,14 @@ static void kvmppc_44x_shadow_release(struct kvm_vcpu *vcpu,
124 } 124 }
125} 125}
126 126
127void kvmppc_core_destroy_mmu(struct kvm_vcpu *vcpu)
128{
129 int i;
130
131 for (i = 0; i <= tlb_44x_hwater; i++)
132 kvmppc_44x_shadow_release(vcpu, i);
133}
134
127void kvmppc_tlbe_set_modified(struct kvm_vcpu *vcpu, unsigned int i) 135void kvmppc_tlbe_set_modified(struct kvm_vcpu *vcpu, unsigned int i)
128{ 136{
129 vcpu->arch.shadow_tlb_mod[i] = 1; 137 vcpu->arch.shadow_tlb_mod[i] = 1;
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 90a6fc422b23..fda9baada132 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -238,6 +238,7 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
238 238
239void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu) 239void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu)
240{ 240{
241 kvmppc_core_destroy_mmu(vcpu);
241} 242}
242 243
243/* Note: clearing MSR[DE] just means that the debug interrupt will not be 244/* Note: clearing MSR[DE] just means that the debug interrupt will not be
diff --git a/arch/powerpc/lib/rheap.c b/arch/powerpc/lib/rheap.c
index 29b2941cada0..45907c1dae66 100644
--- a/arch/powerpc/lib/rheap.c
+++ b/arch/powerpc/lib/rheap.c
@@ -556,6 +556,7 @@ unsigned long rh_alloc_fixed(rh_info_t * info, unsigned long start, int size, co
556 be = blk->start + blk->size; 556 be = blk->start + blk->size;
557 if (s >= bs && e <= be) 557 if (s >= bs && e <= be)
558 break; 558 break;
559 blk = NULL;
559 } 560 }
560 561
561 if (blk == NULL) 562 if (blk == NULL)
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
index 7bbf4e4ed430..f0c3b88d50fa 100644
--- a/arch/powerpc/mm/hugetlbpage.c
+++ b/arch/powerpc/mm/hugetlbpage.c
@@ -507,6 +507,9 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
507{ 507{
508 struct hstate *hstate = hstate_file(file); 508 struct hstate *hstate = hstate_file(file);
509 int mmu_psize = shift_to_mmu_psize(huge_page_shift(hstate)); 509 int mmu_psize = shift_to_mmu_psize(huge_page_shift(hstate));
510
511 if (!mmu_huge_psizes[mmu_psize])
512 return -EINVAL;
510 return slice_get_unmapped_area(addr, len, flags, mmu_psize, 1, 0); 513 return slice_get_unmapped_area(addr, len, flags, mmu_psize, 1, 0);
511} 514}
512 515
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index a8397bbad3d4..cf81049e1e51 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -901,10 +901,17 @@ static void mark_reserved_regions_for_nid(int nid)
901 if (end_pfn > node_ar.end_pfn) 901 if (end_pfn > node_ar.end_pfn)
902 reserve_size = (node_ar.end_pfn << PAGE_SHIFT) 902 reserve_size = (node_ar.end_pfn << PAGE_SHIFT)
903 - (start_pfn << PAGE_SHIFT); 903 - (start_pfn << PAGE_SHIFT);
904 dbg("reserve_bootmem %lx %lx nid=%d\n", physbase, 904 /*
905 reserve_size, node_ar.nid); 905 * Only worry about *this* node, others may not
906 reserve_bootmem_node(NODE_DATA(node_ar.nid), physbase, 906 * yet have valid NODE_DATA().
907 reserve_size, BOOTMEM_DEFAULT); 907 */
908 if (node_ar.nid == nid) {
909 dbg("reserve_bootmem %lx %lx nid=%d\n",
910 physbase, reserve_size, node_ar.nid);
911 reserve_bootmem_node(NODE_DATA(node_ar.nid),
912 physbase, reserve_size,
913 BOOTMEM_DEFAULT);
914 }
908 /* 915 /*
909 * if reserved region is contained in the active region 916 * if reserved region is contained in the active region
910 * then done. 917 * then done.
@@ -929,7 +936,6 @@ static void mark_reserved_regions_for_nid(int nid)
929void __init do_init_bootmem(void) 936void __init do_init_bootmem(void)
930{ 937{
931 int nid; 938 int nid;
932 unsigned int i;
933 939
934 min_low_pfn = 0; 940 min_low_pfn = 0;
935 max_low_pfn = lmb_end_of_DRAM() >> PAGE_SHIFT; 941 max_low_pfn = lmb_end_of_DRAM() >> PAGE_SHIFT;
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c
index 442cf36aa172..0ce45c2b42f8 100644
--- a/arch/powerpc/platforms/cell/axon_msi.c
+++ b/arch/powerpc/platforms/cell/axon_msi.c
@@ -413,6 +413,9 @@ static int axon_msi_probe(struct of_device *device,
413 MSIC_CTRL_IRQ_ENABLE | MSIC_CTRL_ENABLE | 413 MSIC_CTRL_IRQ_ENABLE | MSIC_CTRL_ENABLE |
414 MSIC_CTRL_FIFO_SIZE); 414 MSIC_CTRL_FIFO_SIZE);
415 415
416 msic->read_offset = dcr_read(msic->dcr_host, MSIC_WRITE_OFFSET_REG)
417 & MSIC_FIFO_SIZE_MASK;
418
416 device->dev.platform_data = msic; 419 device->dev.platform_data = msic;
417 420
418 ppc_md.setup_msi_irqs = axon_msi_setup_msi_irqs; 421 ppc_md.setup_msi_irqs = axon_msi_setup_msi_irqs;
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index b24e1d085557..1890fb085cde 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -600,7 +600,7 @@ static int irq_choose_cpu(unsigned int virt_irq)
600 cpuid = first_cpu(tmp); 600 cpuid = first_cpu(tmp);
601 } 601 }
602 602
603 return cpuid; 603 return get_hard_smp_processor_id(cpuid);
604} 604}
605#else 605#else
606static int irq_choose_cpu(unsigned int virt_irq) 606static int irq_choose_cpu(unsigned int virt_irq)
diff --git a/arch/s390/kvm/sigp.c b/arch/s390/kvm/sigp.c
index 170392687ce0..2a01b9e02801 100644
--- a/arch/s390/kvm/sigp.c
+++ b/arch/s390/kvm/sigp.c
@@ -237,6 +237,11 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu)
237 u8 order_code; 237 u8 order_code;
238 int rc; 238 int rc;
239 239
240 /* sigp in userspace can exit */
241 if (vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE)
242 return kvm_s390_inject_program_int(vcpu,
243 PGM_PRIVILEGED_OPERATION);
244
240 order_code = disp2; 245 order_code = disp2;
241 if (base2) 246 if (base2)
242 order_code += vcpu->arch.guest_gprs[base2]; 247 order_code += vcpu->arch.guest_gprs[base2];
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 80119b3398e7..5c9cbfc14c4d 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -55,6 +55,8 @@ config GENERIC_HARDIRQS
55 55
56config GENERIC_HARDIRQS_NO__DO_IRQ 56config GENERIC_HARDIRQS_NO__DO_IRQ
57 def_bool y 57 def_bool y
58 depends on SUPERH32 && (!SH_DREAMCAST && !SH_SH4202_MICRODEV && \
59 !SH_7751_SYSTEMH && !HD64461)
58 60
59config GENERIC_IRQ_PROBE 61config GENERIC_IRQ_PROBE
60 def_bool y 62 def_bool y
diff --git a/arch/sparc/include/asm/bitops_32.h b/arch/sparc/include/asm/bitops_32.h
index 68b98a7e6454..9cf4ae0cd7ba 100644
--- a/arch/sparc/include/asm/bitops_32.h
+++ b/arch/sparc/include/asm/bitops_32.h
@@ -98,6 +98,7 @@ static inline void change_bit(unsigned long nr, volatile unsigned long *addr)
98#include <asm-generic/bitops/sched.h> 98#include <asm-generic/bitops/sched.h>
99#include <asm-generic/bitops/ffs.h> 99#include <asm-generic/bitops/ffs.h>
100#include <asm-generic/bitops/fls.h> 100#include <asm-generic/bitops/fls.h>
101#include <asm-generic/bitops/__fls.h>
101#include <asm-generic/bitops/fls64.h> 102#include <asm-generic/bitops/fls64.h>
102#include <asm-generic/bitops/hweight.h> 103#include <asm-generic/bitops/hweight.h>
103#include <asm-generic/bitops/lock.h> 104#include <asm-generic/bitops/lock.h>
diff --git a/arch/sparc/include/asm/ptrace_32.h b/arch/sparc/include/asm/ptrace_32.h
index d409c4f21a5c..4cef450167dd 100644
--- a/arch/sparc/include/asm/ptrace_32.h
+++ b/arch/sparc/include/asm/ptrace_32.h
@@ -62,6 +62,8 @@ struct sparc_stackf {
62 62
63#ifdef __KERNEL__ 63#ifdef __KERNEL__
64 64
65#include <asm/system.h>
66
65static inline bool pt_regs_is_syscall(struct pt_regs *regs) 67static inline bool pt_regs_is_syscall(struct pt_regs *regs)
66{ 68{
67 return (regs->psr & PSR_SYSCALL); 69 return (regs->psr & PSR_SYSCALL);
@@ -72,6 +74,14 @@ static inline bool pt_regs_clear_syscall(struct pt_regs *regs)
72 return (regs->psr &= ~PSR_SYSCALL); 74 return (regs->psr &= ~PSR_SYSCALL);
73} 75}
74 76
77#define arch_ptrace_stop_needed(exit_code, info) \
78({ flush_user_windows(); \
79 current_thread_info()->w_saved != 0; \
80})
81
82#define arch_ptrace_stop(exit_code, info) \
83 synchronize_user_stack()
84
75#define user_mode(regs) (!((regs)->psr & PSR_PS)) 85#define user_mode(regs) (!((regs)->psr & PSR_PS))
76#define instruction_pointer(regs) ((regs)->pc) 86#define instruction_pointer(regs) ((regs)->pc)
77#define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP]) 87#define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP])
diff --git a/arch/sparc/include/asm/ptrace_64.h b/arch/sparc/include/asm/ptrace_64.h
index 84e969f06afe..cd6fbfc20435 100644
--- a/arch/sparc/include/asm/ptrace_64.h
+++ b/arch/sparc/include/asm/ptrace_64.h
@@ -114,6 +114,7 @@ struct sparc_trapf {
114#ifdef __KERNEL__ 114#ifdef __KERNEL__
115 115
116#include <linux/threads.h> 116#include <linux/threads.h>
117#include <asm/system.h>
117 118
118static inline int pt_regs_trap_type(struct pt_regs *regs) 119static inline int pt_regs_trap_type(struct pt_regs *regs)
119{ 120{
@@ -130,6 +131,14 @@ static inline bool pt_regs_clear_syscall(struct pt_regs *regs)
130 return (regs->tstate &= ~TSTATE_SYSCALL); 131 return (regs->tstate &= ~TSTATE_SYSCALL);
131} 132}
132 133
134#define arch_ptrace_stop_needed(exit_code, info) \
135({ flush_user_windows(); \
136 get_thread_wsaved() != 0; \
137})
138
139#define arch_ptrace_stop(exit_code, info) \
140 synchronize_user_stack()
141
133struct global_reg_snapshot { 142struct global_reg_snapshot {
134 unsigned long tstate; 143 unsigned long tstate;
135 unsigned long tpc; 144 unsigned long tpc;
diff --git a/arch/sparc64/kernel/ptrace.c b/arch/sparc64/kernel/ptrace.c
index f43adbc773ca..a941c610e7ce 100644
--- a/arch/sparc64/kernel/ptrace.c
+++ b/arch/sparc64/kernel/ptrace.c
@@ -1014,7 +1014,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
1014 break; 1014 break;
1015 1015
1016 case PTRACE_SETFPREGS64: 1016 case PTRACE_SETFPREGS64:
1017 ret = copy_regset_to_user(child, view, REGSET_FP, 1017 ret = copy_regset_from_user(child, view, REGSET_FP,
1018 0 * sizeof(u64), 1018 0 * sizeof(u64),
1019 33 * sizeof(u64), 1019 33 * sizeof(u64),
1020 fps); 1020 fps);
diff --git a/arch/sparc64/kernel/visemul.c b/arch/sparc64/kernel/visemul.c
index 9e05cb5cb855..b956fd71c131 100644
--- a/arch/sparc64/kernel/visemul.c
+++ b/arch/sparc64/kernel/visemul.c
@@ -131,7 +131,7 @@
131#define VIS_OPF_SHIFT 5 131#define VIS_OPF_SHIFT 5
132#define VIS_OPF_MASK (0x1ff << VIS_OPF_SHIFT) 132#define VIS_OPF_MASK (0x1ff << VIS_OPF_SHIFT)
133 133
134#define RS1(INSN) (((INSN) >> 24) & 0x1f) 134#define RS1(INSN) (((INSN) >> 14) & 0x1f)
135#define RS2(INSN) (((INSN) >> 0) & 0x1f) 135#define RS2(INSN) (((INSN) >> 0) & 0x1f)
136#define RD(INSN) (((INSN) >> 25) & 0x1f) 136#define RD(INSN) (((INSN) >> 25) & 0x1f)
137 137
@@ -445,7 +445,7 @@ static void pdist(struct pt_regs *regs, unsigned int insn)
445 unsigned long i; 445 unsigned long i;
446 446
447 rs1 = fpd_regval(f, RS1(insn)); 447 rs1 = fpd_regval(f, RS1(insn));
448 rs2 = fpd_regval(f, RS1(insn)); 448 rs2 = fpd_regval(f, RS2(insn));
449 rd = fpd_regaddr(f, RD(insn)); 449 rd = fpd_regaddr(f, RD(insn));
450 450
451 rd_val = *rd; 451 rd_val = *rd;
@@ -807,6 +807,8 @@ int vis_emul(struct pt_regs *regs, unsigned int insn)
807 if (get_user(insn, (u32 __user *) pc)) 807 if (get_user(insn, (u32 __user *) pc))
808 return -EFAULT; 808 return -EFAULT;
809 809
810 save_and_clear_fpu();
811
810 opf = (insn & VIS_OPF_MASK) >> VIS_OPF_SHIFT; 812 opf = (insn & VIS_OPF_MASK) >> VIS_OPF_SHIFT;
811 switch (opf) { 813 switch (opf) {
812 default: 814 default:
diff --git a/arch/sparc64/lib/user_fixup.c b/arch/sparc64/lib/user_fixup.c
index 19d1fdb17d0e..05a361b0a1a4 100644
--- a/arch/sparc64/lib/user_fixup.c
+++ b/arch/sparc64/lib/user_fixup.c
@@ -24,7 +24,7 @@ static unsigned long compute_size(unsigned long start, unsigned long size, unsig
24 if (fault_addr < start || fault_addr >= end) { 24 if (fault_addr < start || fault_addr >= end) {
25 *offset = 0; 25 *offset = 0;
26 } else { 26 } else {
27 *offset = start - fault_addr; 27 *offset = fault_addr - start;
28 size = end - fault_addr; 28 size = end - fault_addr;
29 } 29 }
30 return size; 30 return size;
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c
index 19d579d74d27..8f44ebb0dec8 100644
--- a/arch/um/drivers/mconsole_kern.c
+++ b/arch/um/drivers/mconsole_kern.c
@@ -16,6 +16,8 @@
16#include <linux/slab.h> 16#include <linux/slab.h>
17#include <linux/syscalls.h> 17#include <linux/syscalls.h>
18#include <linux/utsname.h> 18#include <linux/utsname.h>
19#include <linux/socket.h>
20#include <linux/un.h>
19#include <linux/workqueue.h> 21#include <linux/workqueue.h>
20#include <linux/mutex.h> 22#include <linux/mutex.h>
21#include <asm/uaccess.h> 23#include <asm/uaccess.h>
@@ -785,7 +787,7 @@ static int __init mconsole_init(void)
785 /* long to avoid size mismatch warnings from gcc */ 787 /* long to avoid size mismatch warnings from gcc */
786 long sock; 788 long sock;
787 int err; 789 int err;
788 char file[256]; 790 char file[UNIX_PATH_MAX];
789 791
790 if (umid_file_name("mconsole", file, sizeof(file))) 792 if (umid_file_name("mconsole", file, sizeof(file)))
791 return -1; 793 return -1;
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index d4d4cb7629ea..1cbec0269d39 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -19,6 +19,8 @@ config X86_64
19config X86 19config X86
20 def_bool y 20 def_bool y
21 select HAVE_AOUT if X86_32 21 select HAVE_AOUT if X86_32
22 select HAVE_READQ
23 select HAVE_WRITEQ
22 select HAVE_UNSTABLE_SCHED_CLOCK 24 select HAVE_UNSTABLE_SCHED_CLOCK
23 select HAVE_IDE 25 select HAVE_IDE
24 select HAVE_OPROFILE 26 select HAVE_OPROFILE
@@ -87,6 +89,10 @@ config GENERIC_IOMAP
87config GENERIC_BUG 89config GENERIC_BUG
88 def_bool y 90 def_bool y
89 depends on BUG 91 depends on BUG
92 select GENERIC_BUG_RELATIVE_POINTERS if X86_64
93
94config GENERIC_BUG_RELATIVE_POINTERS
95 bool
90 96
91config GENERIC_HWEIGHT 97config GENERIC_HWEIGHT
92 def_bool y 98 def_bool y
@@ -457,10 +463,6 @@ config X86_CYCLONE_TIMER
457 def_bool y 463 def_bool y
458 depends on X86_GENERICARCH 464 depends on X86_GENERICARCH
459 465
460config ES7000_CLUSTERED_APIC
461 def_bool y
462 depends on SMP && X86_ES7000 && MPENTIUMIII
463
464source "arch/x86/Kconfig.cpu" 466source "arch/x86/Kconfig.cpu"
465 467
466config HPET_TIMER 468config HPET_TIMER
@@ -652,6 +654,30 @@ config X86_VISWS_APIC
652 def_bool y 654 def_bool y
653 depends on X86_32 && X86_VISWS 655 depends on X86_32 && X86_VISWS
654 656
657config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
658 bool "Reroute for broken boot IRQs"
659 default n
660 depends on X86_IO_APIC
661 help
662 This option enables a workaround that fixes a source of
663 spurious interrupts. This is recommended when threaded
664 interrupt handling is used on systems where the generation of
665 superfluous "boot interrupts" cannot be disabled.
666
667 Some chipsets generate a legacy INTx "boot IRQ" when the IRQ
668 entry in the chipset's IO-APIC is masked (as, e.g. the RT
669 kernel does during interrupt handling). On chipsets where this
670 boot IRQ generation cannot be disabled, this workaround keeps
671 the original IRQ line masked so that only the equivalent "boot
672 IRQ" is delivered to the CPUs. The workaround also tells the
673 kernel to set up the IRQ handler on the boot IRQ line. In this
674 way only one interrupt is delivered to the kernel. Otherwise
675 the spurious second interrupt may cause the kernel to bring
676 down (vital) interrupt lines.
677
678 Only affects "broken" chipsets. Interrupt sharing may be
679 increased on these systems.
680
655config X86_MCE 681config X86_MCE
656 bool "Machine Check Exception" 682 bool "Machine Check Exception"
657 depends on !X86_VOYAGER 683 depends on !X86_VOYAGER
@@ -948,24 +974,37 @@ config X86_PAE
948config ARCH_PHYS_ADDR_T_64BIT 974config ARCH_PHYS_ADDR_T_64BIT
949 def_bool X86_64 || X86_PAE 975 def_bool X86_64 || X86_PAE
950 976
977config DIRECT_GBPAGES
978 bool "Enable 1GB pages for kernel pagetables" if EMBEDDED
979 default y
980 depends on X86_64
981 help
982 Allow the kernel linear mapping to use 1GB pages on CPUs that
983 support it. This can improve the kernel's performance a tiny bit by
984 reducing TLB pressure. If in doubt, say "Y".
985
951# Common NUMA Features 986# Common NUMA Features
952config NUMA 987config NUMA
953 bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)" 988 bool "Numa Memory Allocation and Scheduler Support"
954 depends on SMP 989 depends on SMP
955 depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI) && EXPERIMENTAL) 990 depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI) && EXPERIMENTAL)
956 default n if X86_PC 991 default n if X86_PC
957 default y if (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP) 992 default y if (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP)
958 help 993 help
959 Enable NUMA (Non Uniform Memory Access) support. 994 Enable NUMA (Non Uniform Memory Access) support.
995
960 The kernel will try to allocate memory used by a CPU on the 996 The kernel will try to allocate memory used by a CPU on the
961 local memory controller of the CPU and add some more 997 local memory controller of the CPU and add some more
962 NUMA awareness to the kernel. 998 NUMA awareness to the kernel.
963 999
964 For 32-bit this is currently highly experimental and should be only 1000 For 64-bit this is recommended if the system is Intel Core i7
965 used for kernel development. It might also cause boot failures. 1001 (or later), AMD Opteron, or EM64T NUMA.
966 For 64-bit this is recommended on all multiprocessor Opteron systems. 1002
967 If the system is EM64T, you should say N unless your system is 1003 For 32-bit this is only needed on (rare) 32-bit-only platforms
968 EM64T NUMA. 1004 that support NUMA topologies, such as NUMAQ / Summit, or if you
1005 boot a 32-bit kernel on a 64-bit NUMA platform.
1006
1007 Otherwise, you should say N.
969 1008
970comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI" 1009comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
971 depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI) 1010 depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI)
@@ -1485,6 +1524,10 @@ config ARCH_ENABLE_MEMORY_HOTPLUG
1485 def_bool y 1524 def_bool y
1486 depends on X86_64 || (X86_32 && HIGHMEM) 1525 depends on X86_64 || (X86_32 && HIGHMEM)
1487 1526
1527config ARCH_ENABLE_MEMORY_HOTREMOVE
1528 def_bool y
1529 depends on MEMORY_HOTPLUG
1530
1488config HAVE_ARCH_EARLY_PFN_TO_NID 1531config HAVE_ARCH_EARLY_PFN_TO_NID
1489 def_bool X86_64 1532 def_bool X86_64
1490 depends on NUMA 1533 depends on NUMA
@@ -1624,13 +1667,6 @@ config APM_ALLOW_INTS
1624 many of the newer IBM Thinkpads. If you experience hangs when you 1667 many of the newer IBM Thinkpads. If you experience hangs when you
1625 suspend, try setting this to Y. Otherwise, say N. 1668 suspend, try setting this to Y. Otherwise, say N.
1626 1669
1627config APM_REAL_MODE_POWER_OFF
1628 bool "Use real mode APM BIOS call to power off"
1629 help
1630 Use real mode APM BIOS calls to switch off the computer. This is
1631 a work-around for a number of buggy BIOSes. Switch this option on if
1632 your computer crashes instead of powering off properly.
1633
1634endif # APM 1670endif # APM
1635 1671
1636source "arch/x86/kernel/cpu/cpufreq/Kconfig" 1672source "arch/x86/kernel/cpu/cpufreq/Kconfig"
diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
index 2a3dfbd5e677..4ee768660f75 100644
--- a/arch/x86/Kconfig.debug
+++ b/arch/x86/Kconfig.debug
@@ -114,18 +114,6 @@ config DEBUG_RODATA
114 data. This is recommended so that we can catch kernel bugs sooner. 114 data. This is recommended so that we can catch kernel bugs sooner.
115 If in doubt, say "Y". 115 If in doubt, say "Y".
116 116
117config DIRECT_GBPAGES
118 bool "Enable gbpages-mapped kernel pagetables"
119 depends on DEBUG_KERNEL && EXPERIMENTAL && X86_64
120 help
121 Enable gigabyte pages support (if the CPU supports it). This can
122 improve the kernel's performance a tiny bit by reducing TLB
123 pressure.
124
125 This is experimental code.
126
127 If in doubt, say "N".
128
129config DEBUG_RODATA_TEST 117config DEBUG_RODATA_TEST
130 bool "Testcase for the DEBUG_RODATA feature" 118 bool "Testcase for the DEBUG_RODATA feature"
131 depends on DEBUG_RODATA 119 depends on DEBUG_RODATA
@@ -307,10 +295,10 @@ config OPTIMIZE_INLINING
307 developers have marked 'inline'. Doing so takes away freedom from gcc to 295 developers have marked 'inline'. Doing so takes away freedom from gcc to
308 do what it thinks is best, which is desirable for the gcc 3.x series of 296 do what it thinks is best, which is desirable for the gcc 3.x series of
309 compilers. The gcc 4.x series have a rewritten inlining algorithm and 297 compilers. The gcc 4.x series have a rewritten inlining algorithm and
310 disabling this option will generate a smaller kernel there. Hopefully 298 enabling this option will generate a smaller kernel there. Hopefully
311 this algorithm is so good that allowing gcc4 to make the decision can 299 this algorithm is so good that allowing gcc 4.x and above to make the
312 become the default in the future, until then this option is there to 300 decision will become the default in the future. Until then this option
313 test gcc for this. 301 is there to test gcc for this.
314 302
315 If unsure, say N. 303 If unsure, say N.
316 304
diff --git a/arch/x86/boot/video-vga.c b/arch/x86/boot/video-vga.c
index b939cb476dec..5d4742ed4aa2 100644
--- a/arch/x86/boot/video-vga.c
+++ b/arch/x86/boot/video-vga.c
@@ -34,7 +34,7 @@ static struct mode_info cga_modes[] = {
34 { VIDEO_80x25, 80, 25, 0 }, 34 { VIDEO_80x25, 80, 25, 0 },
35}; 35};
36 36
37__videocard video_vga; 37static __videocard video_vga;
38 38
39/* Set basic 80x25 mode */ 39/* Set basic 80x25 mode */
40static u8 vga_set_basic_mode(void) 40static u8 vga_set_basic_mode(void)
@@ -259,7 +259,7 @@ static int vga_probe(void)
259 return mode_count[adapter]; 259 return mode_count[adapter];
260} 260}
261 261
262__videocard video_vga = { 262static __videocard video_vga = {
263 .card_name = "VGA", 263 .card_name = "VGA",
264 .probe = vga_probe, 264 .probe = vga_probe,
265 .set_mode = vga_set_mode, 265 .set_mode = vga_set_mode,
diff --git a/arch/x86/boot/video.c b/arch/x86/boot/video.c
index 83598b23093a..3bef2c1febe9 100644
--- a/arch/x86/boot/video.c
+++ b/arch/x86/boot/video.c
@@ -226,7 +226,7 @@ static unsigned int mode_menu(void)
226 226
227#ifdef CONFIG_VIDEO_RETAIN 227#ifdef CONFIG_VIDEO_RETAIN
228/* Save screen content to the heap */ 228/* Save screen content to the heap */
229struct saved_screen { 229static struct saved_screen {
230 int x, y; 230 int x, y;
231 int curx, cury; 231 int curx, cury;
232 u16 *data; 232 u16 *data;
diff --git a/arch/x86/configs/i386_defconfig b/arch/x86/configs/i386_defconfig
index 13b8c86ae985..b30a08ed8eb4 100644
--- a/arch/x86/configs/i386_defconfig
+++ b/arch/x86/configs/i386_defconfig
@@ -77,7 +77,7 @@ CONFIG_AUDIT=y
77CONFIG_AUDITSYSCALL=y 77CONFIG_AUDITSYSCALL=y
78CONFIG_AUDIT_TREE=y 78CONFIG_AUDIT_TREE=y
79# CONFIG_IKCONFIG is not set 79# CONFIG_IKCONFIG is not set
80CONFIG_LOG_BUF_SHIFT=17 80CONFIG_LOG_BUF_SHIFT=18
81CONFIG_CGROUPS=y 81CONFIG_CGROUPS=y
82# CONFIG_CGROUP_DEBUG is not set 82# CONFIG_CGROUP_DEBUG is not set
83CONFIG_CGROUP_NS=y 83CONFIG_CGROUP_NS=y
@@ -298,7 +298,7 @@ CONFIG_KEXEC=y
298CONFIG_CRASH_DUMP=y 298CONFIG_CRASH_DUMP=y
299# CONFIG_KEXEC_JUMP is not set 299# CONFIG_KEXEC_JUMP is not set
300CONFIG_PHYSICAL_START=0x1000000 300CONFIG_PHYSICAL_START=0x1000000
301CONFIG_RELOCATABLE=y 301# CONFIG_RELOCATABLE is not set
302CONFIG_PHYSICAL_ALIGN=0x200000 302CONFIG_PHYSICAL_ALIGN=0x200000
303CONFIG_HOTPLUG_CPU=y 303CONFIG_HOTPLUG_CPU=y
304# CONFIG_COMPAT_VDSO is not set 304# CONFIG_COMPAT_VDSO is not set
diff --git a/arch/x86/configs/x86_64_defconfig b/arch/x86/configs/x86_64_defconfig
index f0a03d7a7d63..0e7dbc0a3e46 100644
--- a/arch/x86/configs/x86_64_defconfig
+++ b/arch/x86/configs/x86_64_defconfig
@@ -77,7 +77,7 @@ CONFIG_AUDIT=y
77CONFIG_AUDITSYSCALL=y 77CONFIG_AUDITSYSCALL=y
78CONFIG_AUDIT_TREE=y 78CONFIG_AUDIT_TREE=y
79# CONFIG_IKCONFIG is not set 79# CONFIG_IKCONFIG is not set
80CONFIG_LOG_BUF_SHIFT=17 80CONFIG_LOG_BUF_SHIFT=18
81CONFIG_CGROUPS=y 81CONFIG_CGROUPS=y
82# CONFIG_CGROUP_DEBUG is not set 82# CONFIG_CGROUP_DEBUG is not set
83CONFIG_CGROUP_NS=y 83CONFIG_CGROUP_NS=y
@@ -298,7 +298,7 @@ CONFIG_SCHED_HRTICK=y
298CONFIG_KEXEC=y 298CONFIG_KEXEC=y
299CONFIG_CRASH_DUMP=y 299CONFIG_CRASH_DUMP=y
300CONFIG_PHYSICAL_START=0x1000000 300CONFIG_PHYSICAL_START=0x1000000
301CONFIG_RELOCATABLE=y 301# CONFIG_RELOCATABLE is not set
302CONFIG_PHYSICAL_ALIGN=0x200000 302CONFIG_PHYSICAL_ALIGN=0x200000
303CONFIG_HOTPLUG_CPU=y 303CONFIG_HOTPLUG_CPU=y
304# CONFIG_COMPAT_VDSO is not set 304# CONFIG_COMPAT_VDSO is not set
diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
index e82ebd652263..b195f85526e3 100644
--- a/arch/x86/ia32/ia32_signal.c
+++ b/arch/x86/ia32/ia32_signal.c
@@ -32,6 +32,8 @@
32#include <asm/proto.h> 32#include <asm/proto.h>
33#include <asm/vdso.h> 33#include <asm/vdso.h>
34 34
35#include <asm/sigframe.h>
36
35#define DEBUG_SIG 0 37#define DEBUG_SIG 0
36 38
37#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 39#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
@@ -41,7 +43,6 @@
41 X86_EFLAGS_ZF | X86_EFLAGS_AF | X86_EFLAGS_PF | \ 43 X86_EFLAGS_ZF | X86_EFLAGS_AF | X86_EFLAGS_PF | \
42 X86_EFLAGS_CF) 44 X86_EFLAGS_CF)
43 45
44asmlinkage int do_signal(struct pt_regs *regs, sigset_t *oldset);
45void signal_fault(struct pt_regs *regs, void __user *frame, char *where); 46void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
46 47
47int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from) 48int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from)
@@ -173,47 +174,28 @@ asmlinkage long sys32_sigaltstack(const stack_ia32_t __user *uss_ptr,
173/* 174/*
174 * Do a signal return; undo the signal stack. 175 * Do a signal return; undo the signal stack.
175 */ 176 */
177#define COPY(x) { \
178 err |= __get_user(regs->x, &sc->x); \
179}
176 180
177struct sigframe 181#define COPY_SEG_CPL3(seg) { \
178{ 182 unsigned short tmp; \
179 u32 pretcode; 183 err |= __get_user(tmp, &sc->seg); \
180 int sig; 184 regs->seg = tmp | 3; \
181 struct sigcontext_ia32 sc;
182 struct _fpstate_ia32 fpstate_unused; /* look at kernel/sigframe.h */
183 unsigned int extramask[_COMPAT_NSIG_WORDS-1];
184 char retcode[8];
185 /* fp state follows here */
186};
187
188struct rt_sigframe
189{
190 u32 pretcode;
191 int sig;
192 u32 pinfo;
193 u32 puc;
194 compat_siginfo_t info;
195 struct ucontext_ia32 uc;
196 char retcode[8];
197 /* fp state follows here */
198};
199
200#define COPY(x) { \
201 unsigned int reg; \
202 err |= __get_user(reg, &sc->x); \
203 regs->x = reg; \
204} 185}
205 186
206#define RELOAD_SEG(seg,mask) \ 187#define RELOAD_SEG(seg) { \
207 { unsigned int cur; \ 188 unsigned int cur, pre; \
208 unsigned short pre; \ 189 err |= __get_user(pre, &sc->seg); \
209 err |= __get_user(pre, &sc->seg); \ 190 savesegment(seg, cur); \
210 savesegment(seg, cur); \ 191 pre |= 3; \
211 pre |= mask; \ 192 if (pre != cur) \
212 if (pre != cur) loadsegment(seg, pre); } 193 loadsegment(seg, pre); \
194}
213 195
214static int ia32_restore_sigcontext(struct pt_regs *regs, 196static int ia32_restore_sigcontext(struct pt_regs *regs,
215 struct sigcontext_ia32 __user *sc, 197 struct sigcontext_ia32 __user *sc,
216 unsigned int *peax) 198 unsigned int *pax)
217{ 199{
218 unsigned int tmpflags, gs, oldgs, err = 0; 200 unsigned int tmpflags, gs, oldgs, err = 0;
219 void __user *buf; 201 void __user *buf;
@@ -240,18 +222,16 @@ static int ia32_restore_sigcontext(struct pt_regs *regs,
240 if (gs != oldgs) 222 if (gs != oldgs)
241 load_gs_index(gs); 223 load_gs_index(gs);
242 224
243 RELOAD_SEG(fs, 3); 225 RELOAD_SEG(fs);
244 RELOAD_SEG(ds, 3); 226 RELOAD_SEG(ds);
245 RELOAD_SEG(es, 3); 227 RELOAD_SEG(es);
246 228
247 COPY(di); COPY(si); COPY(bp); COPY(sp); COPY(bx); 229 COPY(di); COPY(si); COPY(bp); COPY(sp); COPY(bx);
248 COPY(dx); COPY(cx); COPY(ip); 230 COPY(dx); COPY(cx); COPY(ip);
249 /* Don't touch extended registers */ 231 /* Don't touch extended registers */
250 232
251 err |= __get_user(regs->cs, &sc->cs); 233 COPY_SEG_CPL3(cs);
252 regs->cs |= 3; 234 COPY_SEG_CPL3(ss);
253 err |= __get_user(regs->ss, &sc->ss);
254 regs->ss |= 3;
255 235
256 err |= __get_user(tmpflags, &sc->flags); 236 err |= __get_user(tmpflags, &sc->flags);
257 regs->flags = (regs->flags & ~FIX_EFLAGS) | (tmpflags & FIX_EFLAGS); 237 regs->flags = (regs->flags & ~FIX_EFLAGS) | (tmpflags & FIX_EFLAGS);
@@ -262,15 +242,13 @@ static int ia32_restore_sigcontext(struct pt_regs *regs,
262 buf = compat_ptr(tmp); 242 buf = compat_ptr(tmp);
263 err |= restore_i387_xstate_ia32(buf); 243 err |= restore_i387_xstate_ia32(buf);
264 244
265 err |= __get_user(tmp, &sc->ax); 245 err |= __get_user(*pax, &sc->ax);
266 *peax = tmp;
267
268 return err; 246 return err;
269} 247}
270 248
271asmlinkage long sys32_sigreturn(struct pt_regs *regs) 249asmlinkage long sys32_sigreturn(struct pt_regs *regs)
272{ 250{
273 struct sigframe __user *frame = (struct sigframe __user *)(regs->sp-8); 251 struct sigframe_ia32 __user *frame = (struct sigframe_ia32 __user *)(regs->sp-8);
274 sigset_t set; 252 sigset_t set;
275 unsigned int ax; 253 unsigned int ax;
276 254
@@ -300,12 +278,12 @@ badframe:
300 278
301asmlinkage long sys32_rt_sigreturn(struct pt_regs *regs) 279asmlinkage long sys32_rt_sigreturn(struct pt_regs *regs)
302{ 280{
303 struct rt_sigframe __user *frame; 281 struct rt_sigframe_ia32 __user *frame;
304 sigset_t set; 282 sigset_t set;
305 unsigned int ax; 283 unsigned int ax;
306 struct pt_regs tregs; 284 struct pt_regs tregs;
307 285
308 frame = (struct rt_sigframe __user *)(regs->sp - 4); 286 frame = (struct rt_sigframe_ia32 __user *)(regs->sp - 4);
309 287
310 if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) 288 if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
311 goto badframe; 289 goto badframe;
@@ -359,20 +337,15 @@ static int ia32_setup_sigcontext(struct sigcontext_ia32 __user *sc,
359 err |= __put_user(regs->dx, &sc->dx); 337 err |= __put_user(regs->dx, &sc->dx);
360 err |= __put_user(regs->cx, &sc->cx); 338 err |= __put_user(regs->cx, &sc->cx);
361 err |= __put_user(regs->ax, &sc->ax); 339 err |= __put_user(regs->ax, &sc->ax);
362 err |= __put_user(regs->cs, &sc->cs);
363 err |= __put_user(regs->ss, &sc->ss);
364 err |= __put_user(current->thread.trap_no, &sc->trapno); 340 err |= __put_user(current->thread.trap_no, &sc->trapno);
365 err |= __put_user(current->thread.error_code, &sc->err); 341 err |= __put_user(current->thread.error_code, &sc->err);
366 err |= __put_user(regs->ip, &sc->ip); 342 err |= __put_user(regs->ip, &sc->ip);
343 err |= __put_user(regs->cs, (unsigned int __user *)&sc->cs);
367 err |= __put_user(regs->flags, &sc->flags); 344 err |= __put_user(regs->flags, &sc->flags);
368 err |= __put_user(regs->sp, &sc->sp_at_signal); 345 err |= __put_user(regs->sp, &sc->sp_at_signal);
346 err |= __put_user(regs->ss, (unsigned int __user *)&sc->ss);
369 347
370 tmp = save_i387_xstate_ia32(fpstate); 348 err |= __put_user(ptr_to_compat(fpstate), &sc->fpstate);
371 if (tmp < 0)
372 err = -EFAULT;
373 else
374 err |= __put_user(ptr_to_compat(tmp ? fpstate : NULL),
375 &sc->fpstate);
376 349
377 /* non-iBCS2 extensions.. */ 350 /* non-iBCS2 extensions.. */
378 err |= __put_user(mask, &sc->oldmask); 351 err |= __put_user(mask, &sc->oldmask);
@@ -400,7 +373,7 @@ static void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
400 } 373 }
401 374
402 /* This is the legacy signal stack switching. */ 375 /* This is the legacy signal stack switching. */
403 else if ((regs->ss & 0xffff) != __USER_DS && 376 else if ((regs->ss & 0xffff) != __USER32_DS &&
404 !(ka->sa.sa_flags & SA_RESTORER) && 377 !(ka->sa.sa_flags & SA_RESTORER) &&
405 ka->sa.sa_restorer) 378 ka->sa.sa_restorer)
406 sp = (unsigned long) ka->sa.sa_restorer; 379 sp = (unsigned long) ka->sa.sa_restorer;
@@ -408,6 +381,8 @@ static void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
408 if (used_math()) { 381 if (used_math()) {
409 sp = sp - sig_xstate_ia32_size; 382 sp = sp - sig_xstate_ia32_size;
410 *fpstate = (struct _fpstate_ia32 *) sp; 383 *fpstate = (struct _fpstate_ia32 *) sp;
384 if (save_i387_xstate_ia32(*fpstate) < 0)
385 return (void __user *) -1L;
411 } 386 }
412 387
413 sp -= frame_size; 388 sp -= frame_size;
@@ -420,7 +395,7 @@ static void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
420int ia32_setup_frame(int sig, struct k_sigaction *ka, 395int ia32_setup_frame(int sig, struct k_sigaction *ka,
421 compat_sigset_t *set, struct pt_regs *regs) 396 compat_sigset_t *set, struct pt_regs *regs)
422{ 397{
423 struct sigframe __user *frame; 398 struct sigframe_ia32 __user *frame;
424 void __user *restorer; 399 void __user *restorer;
425 int err = 0; 400 int err = 0;
426 void __user *fpstate = NULL; 401 void __user *fpstate = NULL;
@@ -430,12 +405,10 @@ int ia32_setup_frame(int sig, struct k_sigaction *ka,
430 u16 poplmovl; 405 u16 poplmovl;
431 u32 val; 406 u32 val;
432 u16 int80; 407 u16 int80;
433 u16 pad;
434 } __attribute__((packed)) code = { 408 } __attribute__((packed)) code = {
435 0xb858, /* popl %eax ; movl $...,%eax */ 409 0xb858, /* popl %eax ; movl $...,%eax */
436 __NR_ia32_sigreturn, 410 __NR_ia32_sigreturn,
437 0x80cd, /* int $0x80 */ 411 0x80cd, /* int $0x80 */
438 0,
439 }; 412 };
440 413
441 frame = get_sigframe(ka, regs, sizeof(*frame), &fpstate); 414 frame = get_sigframe(ka, regs, sizeof(*frame), &fpstate);
@@ -471,7 +444,7 @@ int ia32_setup_frame(int sig, struct k_sigaction *ka,
471 * These are actually not used anymore, but left because some 444 * These are actually not used anymore, but left because some
472 * gdb versions depend on them as a marker. 445 * gdb versions depend on them as a marker.
473 */ 446 */
474 err |= __copy_to_user(frame->retcode, &code, 8); 447 err |= __put_user(*((u64 *)&code), (u64 *)frame->retcode);
475 if (err) 448 if (err)
476 return -EFAULT; 449 return -EFAULT;
477 450
@@ -501,7 +474,7 @@ int ia32_setup_frame(int sig, struct k_sigaction *ka,
501int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, 474int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
502 compat_sigset_t *set, struct pt_regs *regs) 475 compat_sigset_t *set, struct pt_regs *regs)
503{ 476{
504 struct rt_sigframe __user *frame; 477 struct rt_sigframe_ia32 __user *frame;
505 void __user *restorer; 478 void __user *restorer;
506 int err = 0; 479 int err = 0;
507 void __user *fpstate = NULL; 480 void __user *fpstate = NULL;
@@ -511,8 +484,7 @@ int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
511 u8 movl; 484 u8 movl;
512 u32 val; 485 u32 val;
513 u16 int80; 486 u16 int80;
514 u16 pad; 487 u8 pad;
515 u8 pad2;
516 } __attribute__((packed)) code = { 488 } __attribute__((packed)) code = {
517 0xb8, 489 0xb8,
518 __NR_ia32_rt_sigreturn, 490 __NR_ia32_rt_sigreturn,
@@ -559,7 +531,7 @@ int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
559 * Not actually used anymore, but left because some gdb 531 * Not actually used anymore, but left because some gdb
560 * versions need it. 532 * versions need it.
561 */ 533 */
562 err |= __copy_to_user(frame->retcode, &code, 8); 534 err |= __put_user(*((u64 *)&code), (u64 *)frame->retcode);
563 if (err) 535 if (err)
564 return -EFAULT; 536 return -EFAULT;
565 537
diff --git a/arch/x86/include/asm/amd_iommu_types.h b/arch/x86/include/asm/amd_iommu_types.h
index 1a30c0440c6b..ac302a2fa339 100644
--- a/arch/x86/include/asm/amd_iommu_types.h
+++ b/arch/x86/include/asm/amd_iommu_types.h
@@ -251,13 +251,6 @@ struct amd_iommu {
251 /* Pointer to PCI device of this IOMMU */ 251 /* Pointer to PCI device of this IOMMU */
252 struct pci_dev *dev; 252 struct pci_dev *dev;
253 253
254 /*
255 * Capability pointer. There could be more than one IOMMU per PCI
256 * device function if there are more than one AMD IOMMU capability
257 * pointers.
258 */
259 u16 cap_ptr;
260
261 /* physical address of MMIO space */ 254 /* physical address of MMIO space */
262 u64 mmio_phys; 255 u64 mmio_phys;
263 /* virtual address of MMIO space */ 256 /* virtual address of MMIO space */
@@ -266,6 +259,13 @@ struct amd_iommu {
266 /* capabilities of that IOMMU read from ACPI */ 259 /* capabilities of that IOMMU read from ACPI */
267 u32 cap; 260 u32 cap;
268 261
262 /*
263 * Capability pointer. There could be more than one IOMMU per PCI
264 * device function if there are more than one AMD IOMMU capability
265 * pointers.
266 */
267 u16 cap_ptr;
268
269 /* pci domain of this IOMMU */ 269 /* pci domain of this IOMMU */
270 u16 pci_seg; 270 u16 pci_seg;
271 271
@@ -284,19 +284,19 @@ struct amd_iommu {
284 /* size of command buffer */ 284 /* size of command buffer */
285 u32 cmd_buf_size; 285 u32 cmd_buf_size;
286 286
287 /* event buffer virtual address */
288 u8 *evt_buf;
289 /* size of event buffer */ 287 /* size of event buffer */
290 u32 evt_buf_size; 288 u32 evt_buf_size;
289 /* event buffer virtual address */
290 u8 *evt_buf;
291 /* MSI number for event interrupt */ 291 /* MSI number for event interrupt */
292 u16 evt_msi_num; 292 u16 evt_msi_num;
293 293
294 /* if one, we need to send a completion wait command */
295 int need_sync;
296
297 /* true if interrupts for this IOMMU are already enabled */ 294 /* true if interrupts for this IOMMU are already enabled */
298 bool int_enabled; 295 bool int_enabled;
299 296
297 /* if one, we need to send a completion wait command */
298 int need_sync;
299
300 /* default dma_ops domain for that IOMMU */ 300 /* default dma_ops domain for that IOMMU */
301 struct dma_ops_domain *default_dom; 301 struct dma_ops_domain *default_dom;
302}; 302};
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
index 3b1510b4fc57..25caa0738af5 100644
--- a/arch/x86/include/asm/apic.h
+++ b/arch/x86/include/asm/apic.h
@@ -193,6 +193,7 @@ extern u8 setup_APIC_eilvt_ibs(u8 vector, u8 msg_type, u8 mask);
193static inline void lapic_shutdown(void) { } 193static inline void lapic_shutdown(void) { }
194#define local_apic_timer_c2_ok 1 194#define local_apic_timer_c2_ok 1
195static inline void init_apic_mappings(void) { } 195static inline void init_apic_mappings(void) { }
196static inline void disable_local_APIC(void) { }
196 197
197#endif /* !CONFIG_X86_LOCAL_APIC */ 198#endif /* !CONFIG_X86_LOCAL_APIC */
198 199
diff --git a/arch/x86/include/asm/bigsmp/apic.h b/arch/x86/include/asm/bigsmp/apic.h
index 1d9543b9d358..ce547f24a1cd 100644
--- a/arch/x86/include/asm/bigsmp/apic.h
+++ b/arch/x86/include/asm/bigsmp/apic.h
@@ -24,8 +24,6 @@ static inline cpumask_t target_cpus(void)
24#define INT_DELIVERY_MODE (dest_Fixed) 24#define INT_DELIVERY_MODE (dest_Fixed)
25#define INT_DEST_MODE (0) /* phys delivery to target proc */ 25#define INT_DEST_MODE (0) /* phys delivery to target proc */
26#define NO_BALANCE_IRQ (0) 26#define NO_BALANCE_IRQ (0)
27#define WAKE_SECONDARY_VIA_INIT
28
29 27
30static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid) 28static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
31{ 29{
diff --git a/arch/x86/include/asm/bug.h b/arch/x86/include/asm/bug.h
index 3def2065fcea..d9cf1cd156d2 100644
--- a/arch/x86/include/asm/bug.h
+++ b/arch/x86/include/asm/bug.h
@@ -9,7 +9,7 @@
9#ifdef CONFIG_X86_32 9#ifdef CONFIG_X86_32
10# define __BUG_C0 "2:\t.long 1b, %c0\n" 10# define __BUG_C0 "2:\t.long 1b, %c0\n"
11#else 11#else
12# define __BUG_C0 "2:\t.quad 1b, %c0\n" 12# define __BUG_C0 "2:\t.long 1b - 2b, %c0 - 2b\n"
13#endif 13#endif
14 14
15#define BUG() \ 15#define BUG() \
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
index cfdf8c2c5c31..ea408dcba513 100644
--- a/arch/x86/include/asm/cpufeature.h
+++ b/arch/x86/include/asm/cpufeature.h
@@ -80,7 +80,6 @@
80#define X86_FEATURE_UP (3*32+ 9) /* smp kernel running on up */ 80#define X86_FEATURE_UP (3*32+ 9) /* smp kernel running on up */
81#define X86_FEATURE_FXSAVE_LEAK (3*32+10) /* "" FXSAVE leaks FOP/FIP/FOP */ 81#define X86_FEATURE_FXSAVE_LEAK (3*32+10) /* "" FXSAVE leaks FOP/FIP/FOP */
82#define X86_FEATURE_ARCH_PERFMON (3*32+11) /* Intel Architectural PerfMon */ 82#define X86_FEATURE_ARCH_PERFMON (3*32+11) /* Intel Architectural PerfMon */
83#define X86_FEATURE_NOPL (3*32+20) /* The NOPL (0F 1F) instructions */
84#define X86_FEATURE_PEBS (3*32+12) /* Precise-Event Based Sampling */ 83#define X86_FEATURE_PEBS (3*32+12) /* Precise-Event Based Sampling */
85#define X86_FEATURE_BTS (3*32+13) /* Branch Trace Store */ 84#define X86_FEATURE_BTS (3*32+13) /* Branch Trace Store */
86#define X86_FEATURE_SYSCALL32 (3*32+14) /* "" syscall in ia32 userspace */ 85#define X86_FEATURE_SYSCALL32 (3*32+14) /* "" syscall in ia32 userspace */
@@ -92,6 +91,8 @@
92#define X86_FEATURE_NOPL (3*32+20) /* The NOPL (0F 1F) instructions */ 91#define X86_FEATURE_NOPL (3*32+20) /* The NOPL (0F 1F) instructions */
93#define X86_FEATURE_AMDC1E (3*32+21) /* AMD C1E detected */ 92#define X86_FEATURE_AMDC1E (3*32+21) /* AMD C1E detected */
94#define X86_FEATURE_XTOPOLOGY (3*32+22) /* cpu topology enum extensions */ 93#define X86_FEATURE_XTOPOLOGY (3*32+22) /* cpu topology enum extensions */
94#define X86_FEATURE_TSC_RELIABLE (3*32+23) /* TSC is known to be reliable */
95#define X86_FEATURE_NONSTOP_TSC (3*32+24) /* TSC does not stop in C states */
95 96
96/* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */ 97/* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
97#define X86_FEATURE_XMM3 (4*32+ 0) /* "pni" SSE-3 */ 98#define X86_FEATURE_XMM3 (4*32+ 0) /* "pni" SSE-3 */
@@ -117,6 +118,7 @@
117#define X86_FEATURE_XSAVE (4*32+26) /* XSAVE/XRSTOR/XSETBV/XGETBV */ 118#define X86_FEATURE_XSAVE (4*32+26) /* XSAVE/XRSTOR/XSETBV/XGETBV */
118#define X86_FEATURE_OSXSAVE (4*32+27) /* "" XSAVE enabled in the OS */ 119#define X86_FEATURE_OSXSAVE (4*32+27) /* "" XSAVE enabled in the OS */
119#define X86_FEATURE_AVX (4*32+28) /* Advanced Vector Extensions */ 120#define X86_FEATURE_AVX (4*32+28) /* Advanced Vector Extensions */
121#define X86_FEATURE_HYPERVISOR (4*32+31) /* Running on a hypervisor */
120 122
121/* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */ 123/* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */
122#define X86_FEATURE_XSTORE (5*32+ 2) /* "rng" RNG present (xstore) */ 124#define X86_FEATURE_XSTORE (5*32+ 2) /* "rng" RNG present (xstore) */
@@ -237,6 +239,7 @@ extern const char * const x86_power_flags[32];
237#define cpu_has_xmm4_2 boot_cpu_has(X86_FEATURE_XMM4_2) 239#define cpu_has_xmm4_2 boot_cpu_has(X86_FEATURE_XMM4_2)
238#define cpu_has_x2apic boot_cpu_has(X86_FEATURE_X2APIC) 240#define cpu_has_x2apic boot_cpu_has(X86_FEATURE_X2APIC)
239#define cpu_has_xsave boot_cpu_has(X86_FEATURE_XSAVE) 241#define cpu_has_xsave boot_cpu_has(X86_FEATURE_XSAVE)
242#define cpu_has_hypervisor boot_cpu_has(X86_FEATURE_HYPERVISOR)
240 243
241#if defined(CONFIG_X86_INVLPG) || defined(CONFIG_X86_64) 244#if defined(CONFIG_X86_INVLPG) || defined(CONFIG_X86_64)
242# define cpu_has_invlpg 1 245# define cpu_has_invlpg 1
diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h
index 7f225a4b2a26..097794ff6b79 100644
--- a/arch/x86/include/asm/dma-mapping.h
+++ b/arch/x86/include/asm/dma-mapping.h
@@ -71,15 +71,13 @@ static inline struct dma_mapping_ops *get_dma_ops(struct device *dev)
71/* Make sure we keep the same behaviour */ 71/* Make sure we keep the same behaviour */
72static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) 72static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
73{ 73{
74#ifdef CONFIG_X86_32 74#ifdef CONFIG_X86_64
75 return 0;
76#else
77 struct dma_mapping_ops *ops = get_dma_ops(dev); 75 struct dma_mapping_ops *ops = get_dma_ops(dev);
78 if (ops->mapping_error) 76 if (ops->mapping_error)
79 return ops->mapping_error(dev, dma_addr); 77 return ops->mapping_error(dev, dma_addr);
80 78
81 return (dma_addr == bad_dma_address);
82#endif 79#endif
80 return (dma_addr == bad_dma_address);
83} 81}
84 82
85#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) 83#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
diff --git a/arch/x86/include/asm/emergency-restart.h b/arch/x86/include/asm/emergency-restart.h
index 94826cf87455..cc70c1c78ca4 100644
--- a/arch/x86/include/asm/emergency-restart.h
+++ b/arch/x86/include/asm/emergency-restart.h
@@ -8,7 +8,9 @@ enum reboot_type {
8 BOOT_BIOS = 'b', 8 BOOT_BIOS = 'b',
9#endif 9#endif
10 BOOT_ACPI = 'a', 10 BOOT_ACPI = 'a',
11 BOOT_EFI = 'e' 11 BOOT_EFI = 'e',
12 BOOT_CF9 = 'p',
13 BOOT_CF9_COND = 'q',
12}; 14};
13 15
14extern enum reboot_type reboot_type; 16extern enum reboot_type reboot_type;
diff --git a/arch/x86/include/asm/es7000/apic.h b/arch/x86/include/asm/es7000/apic.h
index 380f0b4f17ed..e24ef876915f 100644
--- a/arch/x86/include/asm/es7000/apic.h
+++ b/arch/x86/include/asm/es7000/apic.h
@@ -9,31 +9,27 @@ static inline int apic_id_registered(void)
9 return (1); 9 return (1);
10} 10}
11 11
12static inline cpumask_t target_cpus(void) 12static inline cpumask_t target_cpus_cluster(void)
13{ 13{
14#if defined CONFIG_ES7000_CLUSTERED_APIC
15 return CPU_MASK_ALL; 14 return CPU_MASK_ALL;
16#else 15}
16
17static inline cpumask_t target_cpus(void)
18{
17 return cpumask_of_cpu(smp_processor_id()); 19 return cpumask_of_cpu(smp_processor_id());
18#endif
19} 20}
20 21
21#if defined CONFIG_ES7000_CLUSTERED_APIC 22#define APIC_DFR_VALUE_CLUSTER (APIC_DFR_CLUSTER)
22#define APIC_DFR_VALUE (APIC_DFR_CLUSTER) 23#define INT_DELIVERY_MODE_CLUSTER (dest_LowestPrio)
23#define INT_DELIVERY_MODE (dest_LowestPrio) 24#define INT_DEST_MODE_CLUSTER (1) /* logical delivery broadcast to all procs */
24#define INT_DEST_MODE (1) /* logical delivery broadcast to all procs */ 25#define NO_BALANCE_IRQ_CLUSTER (1)
25#define NO_BALANCE_IRQ (1) 26
26#undef WAKE_SECONDARY_VIA_INIT
27#define WAKE_SECONDARY_VIA_MIP
28#else
29#define APIC_DFR_VALUE (APIC_DFR_FLAT) 27#define APIC_DFR_VALUE (APIC_DFR_FLAT)
30#define INT_DELIVERY_MODE (dest_Fixed) 28#define INT_DELIVERY_MODE (dest_Fixed)
31#define INT_DEST_MODE (0) /* phys delivery to target procs */ 29#define INT_DEST_MODE (0) /* phys delivery to target procs */
32#define NO_BALANCE_IRQ (0) 30#define NO_BALANCE_IRQ (0)
33#undef APIC_DEST_LOGICAL 31#undef APIC_DEST_LOGICAL
34#define APIC_DEST_LOGICAL 0x0 32#define APIC_DEST_LOGICAL 0x0
35#define WAKE_SECONDARY_VIA_INIT
36#endif
37 33
38static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid) 34static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
39{ 35{
@@ -60,6 +56,16 @@ static inline unsigned long calculate_ldr(int cpu)
60 * an APIC. See e.g. "AP-388 82489DX User's Manual" (Intel 56 * an APIC. See e.g. "AP-388 82489DX User's Manual" (Intel
61 * document number 292116). So here it goes... 57 * document number 292116). So here it goes...
62 */ 58 */
59static inline void init_apic_ldr_cluster(void)
60{
61 unsigned long val;
62 int cpu = smp_processor_id();
63
64 apic_write(APIC_DFR, APIC_DFR_VALUE_CLUSTER);
65 val = calculate_ldr(cpu);
66 apic_write(APIC_LDR, val);
67}
68
63static inline void init_apic_ldr(void) 69static inline void init_apic_ldr(void)
64{ 70{
65 unsigned long val; 71 unsigned long val;
@@ -70,10 +76,6 @@ static inline void init_apic_ldr(void)
70 apic_write(APIC_LDR, val); 76 apic_write(APIC_LDR, val);
71} 77}
72 78
73#ifndef CONFIG_X86_GENERICARCH
74extern void enable_apic_mode(void);
75#endif
76
77extern int apic_version [MAX_APICS]; 79extern int apic_version [MAX_APICS];
78static inline void setup_apic_routing(void) 80static inline void setup_apic_routing(void)
79{ 81{
@@ -144,7 +146,7 @@ static inline int check_phys_apicid_present(int cpu_physical_apicid)
144 return (1); 146 return (1);
145} 147}
146 148
147static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask) 149static inline unsigned int cpu_mask_to_apicid_cluster(cpumask_t cpumask)
148{ 150{
149 int num_bits_set; 151 int num_bits_set;
150 int cpus_found = 0; 152 int cpus_found = 0;
@@ -154,11 +156,7 @@ static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
154 num_bits_set = cpus_weight(cpumask); 156 num_bits_set = cpus_weight(cpumask);
155 /* Return id to all */ 157 /* Return id to all */
156 if (num_bits_set == NR_CPUS) 158 if (num_bits_set == NR_CPUS)
157#if defined CONFIG_ES7000_CLUSTERED_APIC
158 return 0xFF; 159 return 0xFF;
159#else
160 return cpu_to_logical_apicid(0);
161#endif
162 /* 160 /*
163 * The cpus in the mask must all be on the apic cluster. If are not 161 * The cpus in the mask must all be on the apic cluster. If are not
164 * on the same apicid cluster return default value of TARGET_CPUS. 162 * on the same apicid cluster return default value of TARGET_CPUS.
@@ -171,11 +169,40 @@ static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
171 if (apicid_cluster(apicid) != 169 if (apicid_cluster(apicid) !=
172 apicid_cluster(new_apicid)){ 170 apicid_cluster(new_apicid)){
173 printk ("%s: Not a valid mask!\n", __func__); 171 printk ("%s: Not a valid mask!\n", __func__);
174#if defined CONFIG_ES7000_CLUSTERED_APIC
175 return 0xFF; 172 return 0xFF;
176#else 173 }
174 apicid = new_apicid;
175 cpus_found++;
176 }
177 cpu++;
178 }
179 return apicid;
180}
181
182static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
183{
184 int num_bits_set;
185 int cpus_found = 0;
186 int cpu;
187 int apicid;
188
189 num_bits_set = cpus_weight(cpumask);
190 /* Return id to all */
191 if (num_bits_set == NR_CPUS)
192 return cpu_to_logical_apicid(0);
193 /*
194 * The cpus in the mask must all be on the apic cluster. If are not
195 * on the same apicid cluster return default value of TARGET_CPUS.
196 */
197 cpu = first_cpu(cpumask);
198 apicid = cpu_to_logical_apicid(cpu);
199 while (cpus_found < num_bits_set) {
200 if (cpu_isset(cpu, cpumask)) {
201 int new_apicid = cpu_to_logical_apicid(cpu);
202 if (apicid_cluster(apicid) !=
203 apicid_cluster(new_apicid)){
204 printk ("%s: Not a valid mask!\n", __func__);
177 return cpu_to_logical_apicid(0); 205 return cpu_to_logical_apicid(0);
178#endif
179 } 206 }
180 apicid = new_apicid; 207 apicid = new_apicid;
181 cpus_found++; 208 cpus_found++;
diff --git a/arch/x86/include/asm/es7000/wakecpu.h b/arch/x86/include/asm/es7000/wakecpu.h
index 398493461913..78f0daaee436 100644
--- a/arch/x86/include/asm/es7000/wakecpu.h
+++ b/arch/x86/include/asm/es7000/wakecpu.h
@@ -1,36 +1,12 @@
1#ifndef __ASM_ES7000_WAKECPU_H 1#ifndef __ASM_ES7000_WAKECPU_H
2#define __ASM_ES7000_WAKECPU_H 2#define __ASM_ES7000_WAKECPU_H
3 3
4/* 4#define TRAMPOLINE_PHYS_LOW 0x467
5 * This file copes with machines that wakeup secondary CPUs by the 5#define TRAMPOLINE_PHYS_HIGH 0x469
6 * INIT, INIT, STARTUP sequence.
7 */
8
9#ifdef CONFIG_ES7000_CLUSTERED_APIC
10#define WAKE_SECONDARY_VIA_MIP
11#else
12#define WAKE_SECONDARY_VIA_INIT
13#endif
14
15#ifdef WAKE_SECONDARY_VIA_MIP
16extern int es7000_start_cpu(int cpu, unsigned long eip);
17static inline int
18wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip)
19{
20 int boot_error = 0;
21 boot_error = es7000_start_cpu(phys_apicid, start_eip);
22 return boot_error;
23}
24#endif
25
26#define TRAMPOLINE_LOW phys_to_virt(0x467)
27#define TRAMPOLINE_HIGH phys_to_virt(0x469)
28
29#define boot_cpu_apicid boot_cpu_physical_apicid
30 6
31static inline void wait_for_init_deassert(atomic_t *deassert) 7static inline void wait_for_init_deassert(atomic_t *deassert)
32{ 8{
33#ifdef WAKE_SECONDARY_VIA_INIT 9#ifndef CONFIG_ES7000_CLUSTERED_APIC
34 while (!atomic_read(deassert)) 10 while (!atomic_read(deassert))
35 cpu_relax(); 11 cpu_relax();
36#endif 12#endif
@@ -50,9 +26,12 @@ static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
50{ 26{
51} 27}
52 28
53#define inquire_remote_apic(apicid) do { \ 29extern void __inquire_remote_apic(int apicid);
54 if (apic_verbosity >= APIC_DEBUG) \ 30
55 __inquire_remote_apic(apicid); \ 31static inline void inquire_remote_apic(int apicid)
56 } while (0) 32{
33 if (apic_verbosity >= APIC_DEBUG)
34 __inquire_remote_apic(apicid);
35}
57 36
58#endif /* __ASM_MACH_WAKECPU_H */ 37#endif /* __ASM_MACH_WAKECPU_H */
diff --git a/arch/x86/include/asm/genapic_32.h b/arch/x86/include/asm/genapic_32.h
index 5cbd4fcc06fd..0ac17d33a8c7 100644
--- a/arch/x86/include/asm/genapic_32.h
+++ b/arch/x86/include/asm/genapic_32.h
@@ -2,6 +2,7 @@
2#define _ASM_X86_GENAPIC_32_H 2#define _ASM_X86_GENAPIC_32_H
3 3
4#include <asm/mpspec.h> 4#include <asm/mpspec.h>
5#include <asm/atomic.h>
5 6
6/* 7/*
7 * Generic APIC driver interface. 8 * Generic APIC driver interface.
@@ -65,6 +66,14 @@ struct genapic {
65 void (*send_IPI_allbutself)(int vector); 66 void (*send_IPI_allbutself)(int vector);
66 void (*send_IPI_all)(int vector); 67 void (*send_IPI_all)(int vector);
67#endif 68#endif
69 int (*wakeup_cpu)(int apicid, unsigned long start_eip);
70 int trampoline_phys_low;
71 int trampoline_phys_high;
72 void (*wait_for_init_deassert)(atomic_t *deassert);
73 void (*smp_callin_clear_local_apic)(void);
74 void (*store_NMI_vector)(unsigned short *high, unsigned short *low);
75 void (*restore_NMI_vector)(unsigned short *high, unsigned short *low);
76 void (*inquire_remote_apic)(int apicid);
68}; 77};
69 78
70#define APICFUNC(x) .x = x, 79#define APICFUNC(x) .x = x,
@@ -105,16 +114,24 @@ struct genapic {
105 APICFUNC(get_apic_id) \ 114 APICFUNC(get_apic_id) \
106 .apic_id_mask = APIC_ID_MASK, \ 115 .apic_id_mask = APIC_ID_MASK, \
107 APICFUNC(cpu_mask_to_apicid) \ 116 APICFUNC(cpu_mask_to_apicid) \
108 APICFUNC(vector_allocation_domain) \ 117 APICFUNC(vector_allocation_domain) \
109 APICFUNC(acpi_madt_oem_check) \ 118 APICFUNC(acpi_madt_oem_check) \
110 IPIFUNC(send_IPI_mask) \ 119 IPIFUNC(send_IPI_mask) \
111 IPIFUNC(send_IPI_allbutself) \ 120 IPIFUNC(send_IPI_allbutself) \
112 IPIFUNC(send_IPI_all) \ 121 IPIFUNC(send_IPI_all) \
113 APICFUNC(enable_apic_mode) \ 122 APICFUNC(enable_apic_mode) \
114 APICFUNC(phys_pkg_id) \ 123 APICFUNC(phys_pkg_id) \
124 .trampoline_phys_low = TRAMPOLINE_PHYS_LOW, \
125 .trampoline_phys_high = TRAMPOLINE_PHYS_HIGH, \
126 APICFUNC(wait_for_init_deassert) \
127 APICFUNC(smp_callin_clear_local_apic) \
128 APICFUNC(store_NMI_vector) \
129 APICFUNC(restore_NMI_vector) \
130 APICFUNC(inquire_remote_apic) \
115} 131}
116 132
117extern struct genapic *genapic; 133extern struct genapic *genapic;
134extern void es7000_update_genapic_to_cluster(void);
118 135
119enum uv_system_type {UV_NONE, UV_LEGACY_APIC, UV_X2APIC, UV_NON_UNIQUE_APIC}; 136enum uv_system_type {UV_NONE, UV_LEGACY_APIC, UV_X2APIC, UV_NON_UNIQUE_APIC};
120#define get_uv_system_type() UV_NONE 137#define get_uv_system_type() UV_NONE
diff --git a/arch/x86/include/asm/genapic_64.h b/arch/x86/include/asm/genapic_64.h
index 13c4e96199ea..2cae011668b7 100644
--- a/arch/x86/include/asm/genapic_64.h
+++ b/arch/x86/include/asm/genapic_64.h
@@ -32,6 +32,8 @@ struct genapic {
32 unsigned int (*get_apic_id)(unsigned long x); 32 unsigned int (*get_apic_id)(unsigned long x);
33 unsigned long (*set_apic_id)(unsigned int id); 33 unsigned long (*set_apic_id)(unsigned int id);
34 unsigned long apic_id_mask; 34 unsigned long apic_id_mask;
35 /* wakeup_secondary_cpu */
36 int (*wakeup_cpu)(int apicid, unsigned long start_eip);
35}; 37};
36 38
37extern struct genapic *genapic; 39extern struct genapic *genapic;
diff --git a/arch/x86/include/asm/hypervisor.h b/arch/x86/include/asm/hypervisor.h
new file mode 100644
index 000000000000..369f5c5d09a1
--- /dev/null
+++ b/arch/x86/include/asm/hypervisor.h
@@ -0,0 +1,26 @@
1/*
2 * Copyright (C) 2008, VMware, Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
12 * NON INFRINGEMENT. See the GNU General Public License for more
13 * details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 */
20#ifndef ASM_X86__HYPERVISOR_H
21#define ASM_X86__HYPERVISOR_H
22
23extern unsigned long get_hypervisor_tsc_freq(void);
24extern void init_hypervisor(struct cpuinfo_x86 *c);
25
26#endif
diff --git a/arch/x86/include/asm/ia32.h b/arch/x86/include/asm/ia32.h
index 97989c0e534c..50ca486fd88c 100644
--- a/arch/x86/include/asm/ia32.h
+++ b/arch/x86/include/asm/ia32.h
@@ -129,24 +129,6 @@ typedef struct compat_siginfo {
129 } _sifields; 129 } _sifields;
130} compat_siginfo_t; 130} compat_siginfo_t;
131 131
132struct sigframe32 {
133 u32 pretcode;
134 int sig;
135 struct sigcontext_ia32 sc;
136 struct _fpstate_ia32 fpstate;
137 unsigned int extramask[_COMPAT_NSIG_WORDS-1];
138};
139
140struct rt_sigframe32 {
141 u32 pretcode;
142 int sig;
143 u32 pinfo;
144 u32 puc;
145 compat_siginfo_t info;
146 struct ucontext_ia32 uc;
147 struct _fpstate_ia32 fpstate;
148};
149
150struct ustat32 { 132struct ustat32 {
151 __u32 f_tfree; 133 __u32 f_tfree;
152 compat_ino_t f_tinode; 134 compat_ino_t f_tinode;
diff --git a/arch/x86/include/asm/idle.h b/arch/x86/include/asm/idle.h
index 44c89c3a23e9..38d87379e270 100644
--- a/arch/x86/include/asm/idle.h
+++ b/arch/x86/include/asm/idle.h
@@ -8,8 +8,13 @@ struct notifier_block;
8void idle_notifier_register(struct notifier_block *n); 8void idle_notifier_register(struct notifier_block *n);
9void idle_notifier_unregister(struct notifier_block *n); 9void idle_notifier_unregister(struct notifier_block *n);
10 10
11#ifdef CONFIG_X86_64
11void enter_idle(void); 12void enter_idle(void);
12void exit_idle(void); 13void exit_idle(void);
14#else /* !CONFIG_X86_64 */
15static inline void enter_idle(void) { }
16static inline void exit_idle(void) { }
17#endif /* CONFIG_X86_64 */
13 18
14void c1e_remove_cpu(int cpu); 19void c1e_remove_cpu(int cpu);
15 20
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index ac2abc88cd95..33513b9a67f3 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -4,6 +4,7 @@
4#define ARCH_HAS_IOREMAP_WC 4#define ARCH_HAS_IOREMAP_WC
5 5
6#include <linux/compiler.h> 6#include <linux/compiler.h>
7#include <asm-generic/int-ll64.h>
7 8
8#define build_mmio_read(name, size, type, reg, barrier) \ 9#define build_mmio_read(name, size, type, reg, barrier) \
9static inline type name(const volatile void __iomem *addr) \ 10static inline type name(const volatile void __iomem *addr) \
@@ -45,20 +46,40 @@ build_mmio_write(__writel, "l", unsigned int, "r", )
45#define mmiowb() barrier() 46#define mmiowb() barrier()
46 47
47#ifdef CONFIG_X86_64 48#ifdef CONFIG_X86_64
49
48build_mmio_read(readq, "q", unsigned long, "=r", :"memory") 50build_mmio_read(readq, "q", unsigned long, "=r", :"memory")
49build_mmio_read(__readq, "q", unsigned long, "=r", )
50build_mmio_write(writeq, "q", unsigned long, "r", :"memory") 51build_mmio_write(writeq, "q", unsigned long, "r", :"memory")
51build_mmio_write(__writeq, "q", unsigned long, "r", )
52 52
53#define readq_relaxed(a) __readq(a) 53#else
54#define __raw_readq __readq 54
55#define __raw_writeq writeq 55static inline __u64 readq(const volatile void __iomem *addr)
56{
57 const volatile u32 __iomem *p = addr;
58 u32 low, high;
59
60 low = readl(p);
61 high = readl(p + 1);
62
63 return low + ((u64)high << 32);
64}
65
66static inline void writeq(__u64 val, volatile void __iomem *addr)
67{
68 writel(val, addr);
69 writel(val >> 32, addr+4);
70}
56 71
57/* Let people know we have them */
58#define readq readq
59#define writeq writeq
60#endif 72#endif
61 73
74#define readq_relaxed(a) readq(a)
75
76#define __raw_readq(a) readq(a)
77#define __raw_writeq(val, addr) writeq(val, addr)
78
79/* Let people know that we have them */
80#define readq readq
81#define writeq writeq
82
62extern int iommu_bio_merge; 83extern int iommu_bio_merge;
63 84
64#ifdef CONFIG_X86_32 85#ifdef CONFIG_X86_32
diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h
index 6afd9933a7dd..e475e009ae5d 100644
--- a/arch/x86/include/asm/io_apic.h
+++ b/arch/x86/include/asm/io_apic.h
@@ -156,11 +156,21 @@ extern int sis_apic_bug;
156/* 1 if "noapic" boot option passed */ 156/* 1 if "noapic" boot option passed */
157extern int skip_ioapic_setup; 157extern int skip_ioapic_setup;
158 158
159/* 1 if "noapic" boot option passed */
160extern int noioapicquirk;
161
162/* -1 if "noapic" boot option passed */
163extern int noioapicreroute;
164
159/* 1 if the timer IRQ uses the '8259A Virtual Wire' mode */ 165/* 1 if the timer IRQ uses the '8259A Virtual Wire' mode */
160extern int timer_through_8259; 166extern int timer_through_8259;
161 167
162static inline void disable_ioapic_setup(void) 168static inline void disable_ioapic_setup(void)
163{ 169{
170#ifdef CONFIG_PCI
171 noioapicquirk = 1;
172 noioapicreroute = -1;
173#endif
164 skip_ioapic_setup = 1; 174 skip_ioapic_setup = 1;
165} 175}
166 176
diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kexec.h
index a1f22771a15a..c61d8b2ab8b9 100644
--- a/arch/x86/include/asm/kexec.h
+++ b/arch/x86/include/asm/kexec.h
@@ -5,21 +5,8 @@
5# define PA_CONTROL_PAGE 0 5# define PA_CONTROL_PAGE 0
6# define VA_CONTROL_PAGE 1 6# define VA_CONTROL_PAGE 1
7# define PA_PGD 2 7# define PA_PGD 2
8# define VA_PGD 3 8# define PA_SWAP_PAGE 3
9# define PA_PTE_0 4 9# define PAGES_NR 4
10# define VA_PTE_0 5
11# define PA_PTE_1 6
12# define VA_PTE_1 7
13# define PA_SWAP_PAGE 8
14# ifdef CONFIG_X86_PAE
15# define PA_PMD_0 9
16# define VA_PMD_0 10
17# define PA_PMD_1 11
18# define VA_PMD_1 12
19# define PAGES_NR 13
20# else
21# define PAGES_NR 9
22# endif
23#else 10#else
24# define PA_CONTROL_PAGE 0 11# define PA_CONTROL_PAGE 0
25# define VA_CONTROL_PAGE 1 12# define VA_CONTROL_PAGE 1
@@ -170,6 +157,20 @@ relocate_kernel(unsigned long indirection_page,
170 unsigned long start_address) ATTRIB_NORET; 157 unsigned long start_address) ATTRIB_NORET;
171#endif 158#endif
172 159
160#ifdef CONFIG_X86_32
161#define ARCH_HAS_KIMAGE_ARCH
162
163struct kimage_arch {
164 pgd_t *pgd;
165#ifdef CONFIG_X86_PAE
166 pmd_t *pmd0;
167 pmd_t *pmd1;
168#endif
169 pte_t *pte0;
170 pte_t *pte1;
171};
172#endif
173
173#endif /* __ASSEMBLY__ */ 174#endif /* __ASSEMBLY__ */
174 175
175#endif /* _ASM_X86_KEXEC_H */ 176#endif /* _ASM_X86_KEXEC_H */
diff --git a/arch/x86/include/asm/mach-default/mach_apic.h b/arch/x86/include/asm/mach-default/mach_apic.h
index ff3a6c236c00..6cb3a467e067 100644
--- a/arch/x86/include/asm/mach-default/mach_apic.h
+++ b/arch/x86/include/asm/mach-default/mach_apic.h
@@ -32,11 +32,13 @@ static inline cpumask_t target_cpus(void)
32#define vector_allocation_domain (genapic->vector_allocation_domain) 32#define vector_allocation_domain (genapic->vector_allocation_domain)
33#define read_apic_id() (GET_APIC_ID(apic_read(APIC_ID))) 33#define read_apic_id() (GET_APIC_ID(apic_read(APIC_ID)))
34#define send_IPI_self (genapic->send_IPI_self) 34#define send_IPI_self (genapic->send_IPI_self)
35#define wakeup_secondary_cpu (genapic->wakeup_cpu)
35extern void setup_apic_routing(void); 36extern void setup_apic_routing(void);
36#else 37#else
37#define INT_DELIVERY_MODE dest_LowestPrio 38#define INT_DELIVERY_MODE dest_LowestPrio
38#define INT_DEST_MODE 1 /* logical delivery broadcast to all procs */ 39#define INT_DEST_MODE 1 /* logical delivery broadcast to all procs */
39#define TARGET_CPUS (target_cpus()) 40#define TARGET_CPUS (target_cpus())
41#define wakeup_secondary_cpu wakeup_secondary_cpu_via_init
40/* 42/*
41 * Set up the logical destination ID. 43 * Set up the logical destination ID.
42 * 44 *
diff --git a/arch/x86/include/asm/mach-default/mach_wakecpu.h b/arch/x86/include/asm/mach-default/mach_wakecpu.h
index 9d80db91e992..ceb013660146 100644
--- a/arch/x86/include/asm/mach-default/mach_wakecpu.h
+++ b/arch/x86/include/asm/mach-default/mach_wakecpu.h
@@ -1,17 +1,8 @@
1#ifndef _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H 1#ifndef _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H
2#define _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H 2#define _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H
3 3
4/* 4#define TRAMPOLINE_PHYS_LOW (0x467)
5 * This file copes with machines that wakeup secondary CPUs by the 5#define TRAMPOLINE_PHYS_HIGH (0x469)
6 * INIT, INIT, STARTUP sequence.
7 */
8
9#define WAKE_SECONDARY_VIA_INIT
10
11#define TRAMPOLINE_LOW phys_to_virt(0x467)
12#define TRAMPOLINE_HIGH phys_to_virt(0x469)
13
14#define boot_cpu_apicid boot_cpu_physical_apicid
15 6
16static inline void wait_for_init_deassert(atomic_t *deassert) 7static inline void wait_for_init_deassert(atomic_t *deassert)
17{ 8{
@@ -33,9 +24,12 @@ static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
33{ 24{
34} 25}
35 26
36#define inquire_remote_apic(apicid) do { \ 27extern void __inquire_remote_apic(int apicid);
37 if (apic_verbosity >= APIC_DEBUG) \ 28
38 __inquire_remote_apic(apicid); \ 29static inline void inquire_remote_apic(int apicid)
39 } while (0) 30{
31 if (apic_verbosity >= APIC_DEBUG)
32 __inquire_remote_apic(apicid);
33}
40 34
41#endif /* _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H */ 35#endif /* _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H */
diff --git a/arch/x86/include/asm/mach-default/smpboot_hooks.h b/arch/x86/include/asm/mach-default/smpboot_hooks.h
index dbab36d64d48..23bf52103b89 100644
--- a/arch/x86/include/asm/mach-default/smpboot_hooks.h
+++ b/arch/x86/include/asm/mach-default/smpboot_hooks.h
@@ -13,9 +13,11 @@ static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip)
13 CMOS_WRITE(0xa, 0xf); 13 CMOS_WRITE(0xa, 0xf);
14 local_flush_tlb(); 14 local_flush_tlb();
15 pr_debug("1.\n"); 15 pr_debug("1.\n");
16 *((volatile unsigned short *) TRAMPOLINE_HIGH) = start_eip >> 4; 16 *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH)) =
17 start_eip >> 4;
17 pr_debug("2.\n"); 18 pr_debug("2.\n");
18 *((volatile unsigned short *) TRAMPOLINE_LOW) = start_eip & 0xf; 19 *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) =
20 start_eip & 0xf;
19 pr_debug("3.\n"); 21 pr_debug("3.\n");
20} 22}
21 23
@@ -32,7 +34,7 @@ static inline void smpboot_restore_warm_reset_vector(void)
32 */ 34 */
33 CMOS_WRITE(0, 0xf); 35 CMOS_WRITE(0, 0xf);
34 36
35 *((volatile long *) phys_to_virt(0x467)) = 0; 37 *((volatile long *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) = 0;
36} 38}
37 39
38static inline void __init smpboot_setup_io_apic(void) 40static inline void __init smpboot_setup_io_apic(void)
diff --git a/arch/x86/include/asm/mach-generic/mach_apic.h b/arch/x86/include/asm/mach-generic/mach_apic.h
index 5180bd7478fb..e430f47df667 100644
--- a/arch/x86/include/asm/mach-generic/mach_apic.h
+++ b/arch/x86/include/asm/mach-generic/mach_apic.h
@@ -27,6 +27,7 @@
27#define vector_allocation_domain (genapic->vector_allocation_domain) 27#define vector_allocation_domain (genapic->vector_allocation_domain)
28#define enable_apic_mode (genapic->enable_apic_mode) 28#define enable_apic_mode (genapic->enable_apic_mode)
29#define phys_pkg_id (genapic->phys_pkg_id) 29#define phys_pkg_id (genapic->phys_pkg_id)
30#define wakeup_secondary_cpu (genapic->wakeup_cpu)
30 31
31extern void generic_bigsmp_probe(void); 32extern void generic_bigsmp_probe(void);
32 33
diff --git a/arch/x86/include/asm/mach-generic/mach_wakecpu.h b/arch/x86/include/asm/mach-generic/mach_wakecpu.h
new file mode 100644
index 000000000000..1ab16b168c8a
--- /dev/null
+++ b/arch/x86/include/asm/mach-generic/mach_wakecpu.h
@@ -0,0 +1,12 @@
1#ifndef _ASM_X86_MACH_GENERIC_MACH_WAKECPU_H
2#define _ASM_X86_MACH_GENERIC_MACH_WAKECPU_H
3
4#define TRAMPOLINE_PHYS_LOW (genapic->trampoline_phys_low)
5#define TRAMPOLINE_PHYS_HIGH (genapic->trampoline_phys_high)
6#define wait_for_init_deassert (genapic->wait_for_init_deassert)
7#define smp_callin_clear_local_apic (genapic->smp_callin_clear_local_apic)
8#define store_NMI_vector (genapic->store_NMI_vector)
9#define restore_NMI_vector (genapic->restore_NMI_vector)
10#define inquire_remote_apic (genapic->inquire_remote_apic)
11
12#endif /* _ASM_X86_MACH_GENERIC_MACH_APIC_H */
diff --git a/arch/x86/include/asm/mmu_context_32.h b/arch/x86/include/asm/mmu_context_32.h
index 8e10015781fb..7e98ce1d2c0e 100644
--- a/arch/x86/include/asm/mmu_context_32.h
+++ b/arch/x86/include/asm/mmu_context_32.h
@@ -4,9 +4,8 @@
4static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk) 4static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
5{ 5{
6#ifdef CONFIG_SMP 6#ifdef CONFIG_SMP
7 unsigned cpu = smp_processor_id(); 7 if (x86_read_percpu(cpu_tlbstate.state) == TLBSTATE_OK)
8 if (per_cpu(cpu_tlbstate, cpu).state == TLBSTATE_OK) 8 x86_write_percpu(cpu_tlbstate.state, TLBSTATE_LAZY);
9 per_cpu(cpu_tlbstate, cpu).state = TLBSTATE_LAZY;
10#endif 9#endif
11} 10}
12 11
@@ -20,8 +19,8 @@ static inline void switch_mm(struct mm_struct *prev,
20 /* stop flush ipis for the previous mm */ 19 /* stop flush ipis for the previous mm */
21 cpu_clear(cpu, prev->cpu_vm_mask); 20 cpu_clear(cpu, prev->cpu_vm_mask);
22#ifdef CONFIG_SMP 21#ifdef CONFIG_SMP
23 per_cpu(cpu_tlbstate, cpu).state = TLBSTATE_OK; 22 x86_write_percpu(cpu_tlbstate.state, TLBSTATE_OK);
24 per_cpu(cpu_tlbstate, cpu).active_mm = next; 23 x86_write_percpu(cpu_tlbstate.active_mm, next);
25#endif 24#endif
26 cpu_set(cpu, next->cpu_vm_mask); 25 cpu_set(cpu, next->cpu_vm_mask);
27 26
@@ -36,8 +35,8 @@ static inline void switch_mm(struct mm_struct *prev,
36 } 35 }
37#ifdef CONFIG_SMP 36#ifdef CONFIG_SMP
38 else { 37 else {
39 per_cpu(cpu_tlbstate, cpu).state = TLBSTATE_OK; 38 x86_write_percpu(cpu_tlbstate.state, TLBSTATE_OK);
40 BUG_ON(per_cpu(cpu_tlbstate, cpu).active_mm != next); 39 BUG_ON(x86_read_percpu(cpu_tlbstate.active_mm) != next);
41 40
42 if (!cpu_test_and_set(cpu, next->cpu_vm_mask)) { 41 if (!cpu_test_and_set(cpu, next->cpu_vm_mask)) {
43 /* We were in lazy tlb mode and leave_mm disabled 42 /* We were in lazy tlb mode and leave_mm disabled
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index e38859d577a1..cb58643947b9 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -85,7 +85,9 @@
85/* AMD64 MSRs. Not complete. See the architecture manual for a more 85/* AMD64 MSRs. Not complete. See the architecture manual for a more
86 complete list. */ 86 complete list. */
87 87
88#define MSR_AMD64_PATCH_LEVEL 0x0000008b
88#define MSR_AMD64_NB_CFG 0xc001001f 89#define MSR_AMD64_NB_CFG 0xc001001f
90#define MSR_AMD64_PATCH_LOADER 0xc0010020
89#define MSR_AMD64_IBSFETCHCTL 0xc0011030 91#define MSR_AMD64_IBSFETCHCTL 0xc0011030
90#define MSR_AMD64_IBSFETCHLINAD 0xc0011031 92#define MSR_AMD64_IBSFETCHLINAD 0xc0011031
91#define MSR_AMD64_IBSFETCHPHYSAD 0xc0011032 93#define MSR_AMD64_IBSFETCHPHYSAD 0xc0011032
diff --git a/arch/x86/include/asm/msr.h b/arch/x86/include/asm/msr.h
index c2a812ebde89..4640ddd58fb9 100644
--- a/arch/x86/include/asm/msr.h
+++ b/arch/x86/include/asm/msr.h
@@ -22,10 +22,10 @@ static inline unsigned long long native_read_tscp(unsigned int *aux)
22} 22}
23 23
24/* 24/*
25 * i386 calling convention returns 64-bit value in edx:eax, while 25 * both i386 and x86_64 returns 64-bit value in edx:eax, but gcc's "A"
26 * x86_64 returns at rax. Also, the "A" constraint does not really 26 * constraint has different meanings. For i386, "A" means exactly
27 * mean rdx:rax in x86_64, so we need specialized behaviour for each 27 * edx:eax, while for x86_64 it doesn't mean rdx:rax or edx:eax. Instead,
28 * architecture 28 * it means rax *or* rdx.
29 */ 29 */
30#ifdef CONFIG_X86_64 30#ifdef CONFIG_X86_64
31#define DECLARE_ARGS(val, low, high) unsigned low, high 31#define DECLARE_ARGS(val, low, high) unsigned low, high
@@ -181,10 +181,10 @@ static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p)
181} 181}
182 182
183#define rdtscl(low) \ 183#define rdtscl(low) \
184 ((low) = (u32)native_read_tsc()) 184 ((low) = (u32)__native_read_tsc())
185 185
186#define rdtscll(val) \ 186#define rdtscll(val) \
187 ((val) = native_read_tsc()) 187 ((val) = __native_read_tsc())
188 188
189#define rdpmc(counter, low, high) \ 189#define rdpmc(counter, low, high) \
190do { \ 190do { \
diff --git a/arch/x86/include/asm/numaq/wakecpu.h b/arch/x86/include/asm/numaq/wakecpu.h
index c577bda5b1c5..6f499df8eddb 100644
--- a/arch/x86/include/asm/numaq/wakecpu.h
+++ b/arch/x86/include/asm/numaq/wakecpu.h
@@ -3,12 +3,8 @@
3 3
4/* This file copes with machines that wakeup secondary CPUs by NMIs */ 4/* This file copes with machines that wakeup secondary CPUs by NMIs */
5 5
6#define WAKE_SECONDARY_VIA_NMI 6#define TRAMPOLINE_PHYS_LOW (0x8)
7 7#define TRAMPOLINE_PHYS_HIGH (0xa)
8#define TRAMPOLINE_LOW phys_to_virt(0x8)
9#define TRAMPOLINE_HIGH phys_to_virt(0xa)
10
11#define boot_cpu_apicid boot_cpu_logical_apicid
12 8
13/* We don't do anything here because we use NMI's to boot instead */ 9/* We don't do anything here because we use NMI's to boot instead */
14static inline void wait_for_init_deassert(atomic_t *deassert) 10static inline void wait_for_init_deassert(atomic_t *deassert)
@@ -27,17 +23,23 @@ static inline void smp_callin_clear_local_apic(void)
27static inline void store_NMI_vector(unsigned short *high, unsigned short *low) 23static inline void store_NMI_vector(unsigned short *high, unsigned short *low)
28{ 24{
29 printk("Storing NMI vector\n"); 25 printk("Storing NMI vector\n");
30 *high = *((volatile unsigned short *) TRAMPOLINE_HIGH); 26 *high =
31 *low = *((volatile unsigned short *) TRAMPOLINE_LOW); 27 *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH));
28 *low =
29 *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW));
32} 30}
33 31
34static inline void restore_NMI_vector(unsigned short *high, unsigned short *low) 32static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
35{ 33{
36 printk("Restoring NMI vector\n"); 34 printk("Restoring NMI vector\n");
37 *((volatile unsigned short *) TRAMPOLINE_HIGH) = *high; 35 *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH)) =
38 *((volatile unsigned short *) TRAMPOLINE_LOW) = *low; 36 *high;
37 *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) =
38 *low;
39} 39}
40 40
41#define inquire_remote_apic(apicid) {} 41static inline void inquire_remote_apic(int apicid)
42{
43}
42 44
43#endif /* __ASM_NUMAQ_WAKECPU_H */ 45#endif /* __ASM_NUMAQ_WAKECPU_H */
diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
index 875b38edf193..647781298e7e 100644
--- a/arch/x86/include/asm/pci.h
+++ b/arch/x86/include/asm/pci.h
@@ -19,6 +19,8 @@ struct pci_sysdata {
19}; 19};
20 20
21extern int pci_routeirq; 21extern int pci_routeirq;
22extern int noioapicquirk;
23extern int noioapicreroute;
22 24
23/* scan a bus after allocating a pci_sysdata for it */ 25/* scan a bus after allocating a pci_sysdata for it */
24extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops, 26extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops,
diff --git a/arch/x86/include/asm/pgtable-2level.h b/arch/x86/include/asm/pgtable-2level.h
index b17edfd23628..e0d199fe1d83 100644
--- a/arch/x86/include/asm/pgtable-2level.h
+++ b/arch/x86/include/asm/pgtable-2level.h
@@ -56,23 +56,55 @@ static inline pte_t native_ptep_get_and_clear(pte_t *xp)
56#define pte_none(x) (!(x).pte_low) 56#define pte_none(x) (!(x).pte_low)
57 57
58/* 58/*
59 * Bits 0, 6 and 7 are taken, split up the 29 bits of offset 59 * Bits _PAGE_BIT_PRESENT, _PAGE_BIT_FILE and _PAGE_BIT_PROTNONE are taken,
60 * into this range: 60 * split up the 29 bits of offset into this range:
61 */ 61 */
62#define PTE_FILE_MAX_BITS 29 62#define PTE_FILE_MAX_BITS 29
63#define PTE_FILE_SHIFT1 (_PAGE_BIT_PRESENT + 1)
64#if _PAGE_BIT_FILE < _PAGE_BIT_PROTNONE
65#define PTE_FILE_SHIFT2 (_PAGE_BIT_FILE + 1)
66#define PTE_FILE_SHIFT3 (_PAGE_BIT_PROTNONE + 1)
67#else
68#define PTE_FILE_SHIFT2 (_PAGE_BIT_PROTNONE + 1)
69#define PTE_FILE_SHIFT3 (_PAGE_BIT_FILE + 1)
70#endif
71#define PTE_FILE_BITS1 (PTE_FILE_SHIFT2 - PTE_FILE_SHIFT1 - 1)
72#define PTE_FILE_BITS2 (PTE_FILE_SHIFT3 - PTE_FILE_SHIFT2 - 1)
63 73
64#define pte_to_pgoff(pte) \ 74#define pte_to_pgoff(pte) \
65 ((((pte).pte_low >> 1) & 0x1f) + (((pte).pte_low >> 8) << 5)) 75 ((((pte).pte_low >> PTE_FILE_SHIFT1) \
76 & ((1U << PTE_FILE_BITS1) - 1)) \
77 + ((((pte).pte_low >> PTE_FILE_SHIFT2) \
78 & ((1U << PTE_FILE_BITS2) - 1)) << PTE_FILE_BITS1) \
79 + (((pte).pte_low >> PTE_FILE_SHIFT3) \
80 << (PTE_FILE_BITS1 + PTE_FILE_BITS2)))
66 81
67#define pgoff_to_pte(off) \ 82#define pgoff_to_pte(off) \
68 ((pte_t) { .pte_low = (((off) & 0x1f) << 1) + \ 83 ((pte_t) { .pte_low = \
69 (((off) >> 5) << 8) + _PAGE_FILE }) 84 (((off) & ((1U << PTE_FILE_BITS1) - 1)) << PTE_FILE_SHIFT1) \
85 + ((((off) >> PTE_FILE_BITS1) & ((1U << PTE_FILE_BITS2) - 1)) \
86 << PTE_FILE_SHIFT2) \
87 + (((off) >> (PTE_FILE_BITS1 + PTE_FILE_BITS2)) \
88 << PTE_FILE_SHIFT3) \
89 + _PAGE_FILE })
70 90
71/* Encode and de-code a swap entry */ 91/* Encode and de-code a swap entry */
72#define __swp_type(x) (((x).val >> 1) & 0x1f) 92#if _PAGE_BIT_FILE < _PAGE_BIT_PROTNONE
73#define __swp_offset(x) ((x).val >> 8) 93#define SWP_TYPE_BITS (_PAGE_BIT_FILE - _PAGE_BIT_PRESENT - 1)
74#define __swp_entry(type, offset) \ 94#define SWP_OFFSET_SHIFT (_PAGE_BIT_PROTNONE + 1)
75 ((swp_entry_t) { ((type) << 1) | ((offset) << 8) }) 95#else
96#define SWP_TYPE_BITS (_PAGE_BIT_PROTNONE - _PAGE_BIT_PRESENT - 1)
97#define SWP_OFFSET_SHIFT (_PAGE_BIT_FILE + 1)
98#endif
99
100#define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > SWP_TYPE_BITS)
101
102#define __swp_type(x) (((x).val >> (_PAGE_BIT_PRESENT + 1)) \
103 & ((1U << SWP_TYPE_BITS) - 1))
104#define __swp_offset(x) ((x).val >> SWP_OFFSET_SHIFT)
105#define __swp_entry(type, offset) ((swp_entry_t) { \
106 ((type) << (_PAGE_BIT_PRESENT + 1)) \
107 | ((offset) << SWP_OFFSET_SHIFT) })
76#define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_low }) 108#define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_low })
77#define __swp_entry_to_pte(x) ((pte_t) { .pte = (x).val }) 109#define __swp_entry_to_pte(x) ((pte_t) { .pte = (x).val })
78 110
diff --git a/arch/x86/include/asm/pgtable-3level.h b/arch/x86/include/asm/pgtable-3level.h
index 52597aeadfff..447da43cddb3 100644
--- a/arch/x86/include/asm/pgtable-3level.h
+++ b/arch/x86/include/asm/pgtable-3level.h
@@ -166,6 +166,7 @@ static inline int pte_none(pte_t pte)
166#define PTE_FILE_MAX_BITS 32 166#define PTE_FILE_MAX_BITS 32
167 167
168/* Encode and de-code a swap entry */ 168/* Encode and de-code a swap entry */
169#define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > 5)
169#define __swp_type(x) (((x).val) & 0x1f) 170#define __swp_type(x) (((x).val) & 0x1f)
170#define __swp_offset(x) ((x).val >> 5) 171#define __swp_offset(x) ((x).val >> 5)
171#define __swp_entry(type, offset) ((swp_entry_t){(type) | (offset) << 5}) 172#define __swp_entry(type, offset) ((swp_entry_t){(type) | (offset) << 5})
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
index c012f3b11671..83e69f4a37f0 100644
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -10,7 +10,6 @@
10#define _PAGE_BIT_PCD 4 /* page cache disabled */ 10#define _PAGE_BIT_PCD 4 /* page cache disabled */
11#define _PAGE_BIT_ACCESSED 5 /* was accessed (raised by CPU) */ 11#define _PAGE_BIT_ACCESSED 5 /* was accessed (raised by CPU) */
12#define _PAGE_BIT_DIRTY 6 /* was written to (raised by CPU) */ 12#define _PAGE_BIT_DIRTY 6 /* was written to (raised by CPU) */
13#define _PAGE_BIT_FILE 6
14#define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */ 13#define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */
15#define _PAGE_BIT_PAT 7 /* on 4KB pages */ 14#define _PAGE_BIT_PAT 7 /* on 4KB pages */
16#define _PAGE_BIT_GLOBAL 8 /* Global TLB entry PPro+ */ 15#define _PAGE_BIT_GLOBAL 8 /* Global TLB entry PPro+ */
@@ -22,6 +21,12 @@
22#define _PAGE_BIT_CPA_TEST _PAGE_BIT_UNUSED1 21#define _PAGE_BIT_CPA_TEST _PAGE_BIT_UNUSED1
23#define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */ 22#define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */
24 23
24/* If _PAGE_BIT_PRESENT is clear, we use these: */
25/* - if the user mapped it with PROT_NONE; pte_present gives true */
26#define _PAGE_BIT_PROTNONE _PAGE_BIT_GLOBAL
27/* - set: nonlinear file mapping, saved PTE; unset:swap */
28#define _PAGE_BIT_FILE _PAGE_BIT_DIRTY
29
25#define _PAGE_PRESENT (_AT(pteval_t, 1) << _PAGE_BIT_PRESENT) 30#define _PAGE_PRESENT (_AT(pteval_t, 1) << _PAGE_BIT_PRESENT)
26#define _PAGE_RW (_AT(pteval_t, 1) << _PAGE_BIT_RW) 31#define _PAGE_RW (_AT(pteval_t, 1) << _PAGE_BIT_RW)
27#define _PAGE_USER (_AT(pteval_t, 1) << _PAGE_BIT_USER) 32#define _PAGE_USER (_AT(pteval_t, 1) << _PAGE_BIT_USER)
@@ -46,11 +51,8 @@
46#define _PAGE_NX (_AT(pteval_t, 0)) 51#define _PAGE_NX (_AT(pteval_t, 0))
47#endif 52#endif
48 53
49/* If _PAGE_PRESENT is clear, we use these: */ 54#define _PAGE_FILE (_AT(pteval_t, 1) << _PAGE_BIT_FILE)
50#define _PAGE_FILE _PAGE_DIRTY /* nonlinear file mapping, 55#define _PAGE_PROTNONE (_AT(pteval_t, 1) << _PAGE_BIT_PROTNONE)
51 * saved PTE; unset:swap */
52#define _PAGE_PROTNONE _PAGE_PSE /* if the user mapped it with PROT_NONE;
53 pte_present gives true */
54 56
55#define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | \ 57#define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | \
56 _PAGE_ACCESSED | _PAGE_DIRTY) 58 _PAGE_ACCESSED | _PAGE_DIRTY)
@@ -158,8 +160,19 @@
158#define PGD_IDENT_ATTR 0x001 /* PRESENT (no other attributes) */ 160#define PGD_IDENT_ATTR 0x001 /* PRESENT (no other attributes) */
159#endif 161#endif
160 162
163/*
164 * Macro to mark a page protection value as UC-
165 */
166#define pgprot_noncached(prot) \
167 ((boot_cpu_data.x86 > 3) \
168 ? (__pgprot(pgprot_val(prot) | _PAGE_CACHE_UC_MINUS)) \
169 : (prot))
170
161#ifndef __ASSEMBLY__ 171#ifndef __ASSEMBLY__
162 172
173#define pgprot_writecombine pgprot_writecombine
174extern pgprot_t pgprot_writecombine(pgprot_t prot);
175
163/* 176/*
164 * ZERO_PAGE is a global shared page that is always zero: used 177 * ZERO_PAGE is a global shared page that is always zero: used
165 * for zero-mapped memory areas etc.. 178 * for zero-mapped memory areas etc..
@@ -329,6 +342,9 @@ static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
329#define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask) 342#define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask)
330 343
331#ifndef __ASSEMBLY__ 344#ifndef __ASSEMBLY__
345/* Indicate that x86 has its own track and untrack pfn vma functions */
346#define __HAVE_PFNMAP_TRACKING
347
332#define __HAVE_PHYS_MEM_ACCESS_PROT 348#define __HAVE_PHYS_MEM_ACCESS_PROT
333struct file; 349struct file;
334pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, 350pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
diff --git a/arch/x86/include/asm/pgtable_32.h b/arch/x86/include/asm/pgtable_32.h
index f9d5889b336b..72b020deb46b 100644
--- a/arch/x86/include/asm/pgtable_32.h
+++ b/arch/x86/include/asm/pgtable_32.h
@@ -101,15 +101,6 @@ extern unsigned long pg0[];
101#endif 101#endif
102 102
103/* 103/*
104 * Macro to mark a page protection value as "uncacheable".
105 * On processors which do not support it, this is a no-op.
106 */
107#define pgprot_noncached(prot) \
108 ((boot_cpu_data.x86 > 3) \
109 ? (__pgprot(pgprot_val(prot) | _PAGE_PCD | _PAGE_PWT)) \
110 : (prot))
111
112/*
113 * Conversion functions: convert a page and protection to a page entry, 104 * Conversion functions: convert a page and protection to a page entry,
114 * and a page entry and page directory to the page they refer to. 105 * and a page entry and page directory to the page they refer to.
115 */ 106 */
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
index 545a0e042bb2..ba09289accaa 100644
--- a/arch/x86/include/asm/pgtable_64.h
+++ b/arch/x86/include/asm/pgtable_64.h
@@ -146,7 +146,7 @@ static inline void native_pgd_clear(pgd_t *pgd)
146#define PGDIR_MASK (~(PGDIR_SIZE - 1)) 146#define PGDIR_MASK (~(PGDIR_SIZE - 1))
147 147
148 148
149#define MAXMEM _AC(0x00003fffffffffff, UL) 149#define MAXMEM _AC(__AC(1, UL) << MAX_PHYSMEM_BITS, UL)
150#define VMALLOC_START _AC(0xffffc20000000000, UL) 150#define VMALLOC_START _AC(0xffffc20000000000, UL)
151#define VMALLOC_END _AC(0xffffe1ffffffffff, UL) 151#define VMALLOC_END _AC(0xffffe1ffffffffff, UL)
152#define VMEMMAP_START _AC(0xffffe20000000000, UL) 152#define VMEMMAP_START _AC(0xffffe20000000000, UL)
@@ -177,12 +177,6 @@ static inline int pmd_bad(pmd_t pmd)
177#define pages_to_mb(x) ((x) >> (20 - PAGE_SHIFT)) /* FIXME: is this right? */ 177#define pages_to_mb(x) ((x) >> (20 - PAGE_SHIFT)) /* FIXME: is this right? */
178 178
179/* 179/*
180 * Macro to mark a page protection value as "uncacheable".
181 */
182#define pgprot_noncached(prot) \
183 (__pgprot(pgprot_val((prot)) | _PAGE_PCD | _PAGE_PWT))
184
185/*
186 * Conversion functions: convert a page and protection to a page entry, 180 * Conversion functions: convert a page and protection to a page entry,
187 * and a page entry and page directory to the page they refer to. 181 * and a page entry and page directory to the page they refer to.
188 */ 182 */
@@ -250,10 +244,22 @@ static inline int pud_large(pud_t pte)
250extern int direct_gbpages; 244extern int direct_gbpages;
251 245
252/* Encode and de-code a swap entry */ 246/* Encode and de-code a swap entry */
253#define __swp_type(x) (((x).val >> 1) & 0x3f) 247#if _PAGE_BIT_FILE < _PAGE_BIT_PROTNONE
254#define __swp_offset(x) ((x).val >> 8) 248#define SWP_TYPE_BITS (_PAGE_BIT_FILE - _PAGE_BIT_PRESENT - 1)
255#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | \ 249#define SWP_OFFSET_SHIFT (_PAGE_BIT_PROTNONE + 1)
256 ((offset) << 8) }) 250#else
251#define SWP_TYPE_BITS (_PAGE_BIT_PROTNONE - _PAGE_BIT_PRESENT - 1)
252#define SWP_OFFSET_SHIFT (_PAGE_BIT_FILE + 1)
253#endif
254
255#define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > SWP_TYPE_BITS)
256
257#define __swp_type(x) (((x).val >> (_PAGE_BIT_PRESENT + 1)) \
258 & ((1U << SWP_TYPE_BITS) - 1))
259#define __swp_offset(x) ((x).val >> SWP_OFFSET_SHIFT)
260#define __swp_entry(type, offset) ((swp_entry_t) { \
261 ((type) << (_PAGE_BIT_PRESENT + 1)) \
262 | ((offset) << SWP_OFFSET_SHIFT) })
257#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val((pte)) }) 263#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val((pte)) })
258#define __swp_entry_to_pte(x) ((pte_t) { .pte = (x).val }) 264#define __swp_entry_to_pte(x) ((pte_t) { .pte = (x).val })
259 265
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 5ca01e383269..a570eafa4755 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -110,6 +110,7 @@ struct cpuinfo_x86 {
110 /* Index into per_cpu list: */ 110 /* Index into per_cpu list: */
111 u16 cpu_index; 111 u16 cpu_index;
112#endif 112#endif
113 unsigned int x86_hyper_vendor;
113} __attribute__((__aligned__(SMP_CACHE_BYTES))); 114} __attribute__((__aligned__(SMP_CACHE_BYTES)));
114 115
115#define X86_VENDOR_INTEL 0 116#define X86_VENDOR_INTEL 0
@@ -123,6 +124,9 @@ struct cpuinfo_x86 {
123 124
124#define X86_VENDOR_UNKNOWN 0xff 125#define X86_VENDOR_UNKNOWN 0xff
125 126
127#define X86_HYPER_VENDOR_NONE 0
128#define X86_HYPER_VENDOR_VMWARE 1
129
126/* 130/*
127 * capabilities of CPUs 131 * capabilities of CPUs
128 */ 132 */
diff --git a/arch/x86/include/asm/reboot.h b/arch/x86/include/asm/reboot.h
index df7710354f85..562d4fd31ba8 100644
--- a/arch/x86/include/asm/reboot.h
+++ b/arch/x86/include/asm/reboot.h
@@ -1,6 +1,8 @@
1#ifndef _ASM_X86_REBOOT_H 1#ifndef _ASM_X86_REBOOT_H
2#define _ASM_X86_REBOOT_H 2#define _ASM_X86_REBOOT_H
3 3
4#include <linux/kdebug.h>
5
4struct pt_regs; 6struct pt_regs;
5 7
6struct machine_ops { 8struct machine_ops {
@@ -18,4 +20,7 @@ void native_machine_crash_shutdown(struct pt_regs *regs);
18void native_machine_shutdown(void); 20void native_machine_shutdown(void);
19void machine_real_restart(const unsigned char *code, int length); 21void machine_real_restart(const unsigned char *code, int length);
20 22
23typedef void (*nmi_shootdown_cb)(int, struct die_args*);
24void nmi_shootdown_cpus(nmi_shootdown_cb callback);
25
21#endif /* _ASM_X86_REBOOT_H */ 26#endif /* _ASM_X86_REBOOT_H */
diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h
index f12d37237465..4fcd53fd5f43 100644
--- a/arch/x86/include/asm/setup.h
+++ b/arch/x86/include/asm/setup.h
@@ -8,6 +8,10 @@
8/* Interrupt control for vSMPowered x86_64 systems */ 8/* Interrupt control for vSMPowered x86_64 systems */
9void vsmp_init(void); 9void vsmp_init(void);
10 10
11
12void setup_bios_corruption_check(void);
13
14
11#ifdef CONFIG_X86_VISWS 15#ifdef CONFIG_X86_VISWS
12extern void visws_early_detect(void); 16extern void visws_early_detect(void);
13extern int is_visws_box(void); 17extern int is_visws_box(void);
@@ -16,6 +20,8 @@ static inline void visws_early_detect(void) { }
16static inline int is_visws_box(void) { return 0; } 20static inline int is_visws_box(void) { return 0; }
17#endif 21#endif
18 22
23extern int wakeup_secondary_cpu_via_nmi(int apicid, unsigned long start_eip);
24extern int wakeup_secondary_cpu_via_init(int apicid, unsigned long start_eip);
19/* 25/*
20 * Any setup quirks to be performed? 26 * Any setup quirks to be performed?
21 */ 27 */
@@ -39,6 +45,7 @@ struct x86_quirks {
39 void (*smp_read_mpc_oem)(struct mp_config_oemtable *oemtable, 45 void (*smp_read_mpc_oem)(struct mp_config_oemtable *oemtable,
40 unsigned short oemsize); 46 unsigned short oemsize);
41 int (*setup_ioapic_ids)(void); 47 int (*setup_ioapic_ids)(void);
48 int (*update_genapic)(void);
42}; 49};
43 50
44extern struct x86_quirks *x86_quirks; 51extern struct x86_quirks *x86_quirks;
diff --git a/arch/x86/include/asm/sigframe.h b/arch/x86/include/asm/sigframe.h
new file mode 100644
index 000000000000..4e0fe26d27d3
--- /dev/null
+++ b/arch/x86/include/asm/sigframe.h
@@ -0,0 +1,70 @@
1#ifndef _ASM_X86_SIGFRAME_H
2#define _ASM_X86_SIGFRAME_H
3
4#include <asm/sigcontext.h>
5#include <asm/siginfo.h>
6#include <asm/ucontext.h>
7
8#ifdef CONFIG_X86_32
9#define sigframe_ia32 sigframe
10#define rt_sigframe_ia32 rt_sigframe
11#define sigcontext_ia32 sigcontext
12#define _fpstate_ia32 _fpstate
13#define ucontext_ia32 ucontext
14#else /* !CONFIG_X86_32 */
15
16#ifdef CONFIG_IA32_EMULATION
17#include <asm/ia32.h>
18#endif /* CONFIG_IA32_EMULATION */
19
20#endif /* CONFIG_X86_32 */
21
22#if defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION)
23struct sigframe_ia32 {
24 u32 pretcode;
25 int sig;
26 struct sigcontext_ia32 sc;
27 /*
28 * fpstate is unused. fpstate is moved/allocated after
29 * retcode[] below. This movement allows to have the FP state and the
30 * future state extensions (xsave) stay together.
31 * And at the same time retaining the unused fpstate, prevents changing
32 * the offset of extramask[] in the sigframe and thus prevent any
33 * legacy application accessing/modifying it.
34 */
35 struct _fpstate_ia32 fpstate_unused;
36#ifdef CONFIG_IA32_EMULATION
37 unsigned int extramask[_COMPAT_NSIG_WORDS-1];
38#else /* !CONFIG_IA32_EMULATION */
39 unsigned long extramask[_NSIG_WORDS-1];
40#endif /* CONFIG_IA32_EMULATION */
41 char retcode[8];
42 /* fp state follows here */
43};
44
45struct rt_sigframe_ia32 {
46 u32 pretcode;
47 int sig;
48 u32 pinfo;
49 u32 puc;
50#ifdef CONFIG_IA32_EMULATION
51 compat_siginfo_t info;
52#else /* !CONFIG_IA32_EMULATION */
53 struct siginfo info;
54#endif /* CONFIG_IA32_EMULATION */
55 struct ucontext_ia32 uc;
56 char retcode[8];
57 /* fp state follows here */
58};
59#endif /* defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION) */
60
61#ifdef CONFIG_X86_64
62struct rt_sigframe {
63 char __user *pretcode;
64 struct ucontext uc;
65 struct siginfo info;
66 /* fp state follows here */
67};
68#endif /* CONFIG_X86_64 */
69
70#endif /* _ASM_X86_SIGFRAME_H */
diff --git a/arch/x86/include/asm/sparsemem.h b/arch/x86/include/asm/sparsemem.h
index be44f7dab395..e3cc3c063ec5 100644
--- a/arch/x86/include/asm/sparsemem.h
+++ b/arch/x86/include/asm/sparsemem.h
@@ -27,7 +27,7 @@
27#else /* CONFIG_X86_32 */ 27#else /* CONFIG_X86_32 */
28# define SECTION_SIZE_BITS 27 /* matt - 128 is convenient right now */ 28# define SECTION_SIZE_BITS 27 /* matt - 128 is convenient right now */
29# define MAX_PHYSADDR_BITS 44 29# define MAX_PHYSADDR_BITS 44
30# define MAX_PHYSMEM_BITS 44 30# define MAX_PHYSMEM_BITS 44 /* Can be max 45 bits */
31#endif 31#endif
32 32
33#endif /* CONFIG_SPARSEMEM */ 33#endif /* CONFIG_SPARSEMEM */
diff --git a/arch/x86/include/asm/syscalls.h b/arch/x86/include/asm/syscalls.h
index c0b0bda754ee..9c6797c3e56c 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(unsigned long); 43asmlinkage int sys_rt_sigreturn(struct pt_regs);
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/system.h b/arch/x86/include/asm/system.h
index 59555f48bf4c..8e626ea33a1a 100644
--- a/arch/x86/include/asm/system.h
+++ b/arch/x86/include/asm/system.h
@@ -314,6 +314,8 @@ extern void free_init_pages(char *what, unsigned long begin, unsigned long end);
314 314
315void default_idle(void); 315void default_idle(void);
316 316
317void stop_this_cpu(void *dummy);
318
317/* 319/*
318 * Force strict CPU ordering. 320 * Force strict CPU ordering.
319 * And yes, this is required on UP too when we're talking 321 * And yes, this is required on UP too when we're talking
diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h
index 4850e4b02b61..ff386ff50ed7 100644
--- a/arch/x86/include/asm/topology.h
+++ b/arch/x86/include/asm/topology.h
@@ -239,7 +239,7 @@ struct pci_bus;
239void set_pci_bus_resources_arch_default(struct pci_bus *b); 239void set_pci_bus_resources_arch_default(struct pci_bus *b);
240 240
241#ifdef CONFIG_SMP 241#ifdef CONFIG_SMP
242#define mc_capable() (boot_cpu_data.x86_max_cores > 1) 242#define mc_capable() (cpus_weight(per_cpu(cpu_core_map, 0)) != nr_cpu_ids)
243#define smt_capable() (smp_num_siblings > 1) 243#define smt_capable() (smp_num_siblings > 1)
244#endif 244#endif
245 245
diff --git a/arch/x86/include/asm/trampoline.h b/arch/x86/include/asm/trampoline.h
index fa0d79facdbc..780ba0ab94f9 100644
--- a/arch/x86/include/asm/trampoline.h
+++ b/arch/x86/include/asm/trampoline.h
@@ -3,6 +3,7 @@
3 3
4#ifndef __ASSEMBLY__ 4#ifndef __ASSEMBLY__
5 5
6#ifdef CONFIG_X86_TRAMPOLINE
6/* 7/*
7 * Trampoline 80x86 program as an array. 8 * Trampoline 80x86 program as an array.
8 */ 9 */
@@ -13,8 +14,14 @@ extern unsigned char *trampoline_base;
13extern unsigned long init_rsp; 14extern unsigned long init_rsp;
14extern unsigned long initial_code; 15extern unsigned long initial_code;
15 16
17#define TRAMPOLINE_SIZE roundup(trampoline_end - trampoline_data, PAGE_SIZE)
16#define TRAMPOLINE_BASE 0x6000 18#define TRAMPOLINE_BASE 0x6000
19
17extern unsigned long setup_trampoline(void); 20extern unsigned long setup_trampoline(void);
21extern void __init reserve_trampoline_memory(void);
22#else
23static inline void reserve_trampoline_memory(void) {};
24#endif /* CONFIG_X86_TRAMPOLINE */
18 25
19#endif /* __ASSEMBLY__ */ 26#endif /* __ASSEMBLY__ */
20 27
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
index 35c54921b2e4..580c3ee6c58c 100644
--- a/arch/x86/include/asm/uaccess.h
+++ b/arch/x86/include/asm/uaccess.h
@@ -350,14 +350,14 @@ do { \
350 350
351#define __put_user_nocheck(x, ptr, size) \ 351#define __put_user_nocheck(x, ptr, size) \
352({ \ 352({ \
353 long __pu_err; \ 353 int __pu_err; \
354 __put_user_size((x), (ptr), (size), __pu_err, -EFAULT); \ 354 __put_user_size((x), (ptr), (size), __pu_err, -EFAULT); \
355 __pu_err; \ 355 __pu_err; \
356}) 356})
357 357
358#define __get_user_nocheck(x, ptr, size) \ 358#define __get_user_nocheck(x, ptr, size) \
359({ \ 359({ \
360 long __gu_err; \ 360 int __gu_err; \
361 unsigned long __gu_val; \ 361 unsigned long __gu_val; \
362 __get_user_size(__gu_val, (ptr), (size), __gu_err, -EFAULT); \ 362 __get_user_size(__gu_val, (ptr), (size), __gu_err, -EFAULT); \
363 (x) = (__force __typeof__(*(ptr)))__gu_val; \ 363 (x) = (__force __typeof__(*(ptr)))__gu_val; \
diff --git a/arch/x86/include/asm/uv/bios.h b/arch/x86/include/asm/uv/bios.h
index d931d3b7e6f7..7ed17ff502b9 100644
--- a/arch/x86/include/asm/uv/bios.h
+++ b/arch/x86/include/asm/uv/bios.h
@@ -32,13 +32,18 @@
32enum uv_bios_cmd { 32enum uv_bios_cmd {
33 UV_BIOS_COMMON, 33 UV_BIOS_COMMON,
34 UV_BIOS_GET_SN_INFO, 34 UV_BIOS_GET_SN_INFO,
35 UV_BIOS_FREQ_BASE 35 UV_BIOS_FREQ_BASE,
36 UV_BIOS_WATCHLIST_ALLOC,
37 UV_BIOS_WATCHLIST_FREE,
38 UV_BIOS_MEMPROTECT,
39 UV_BIOS_GET_PARTITION_ADDR
36}; 40};
37 41
38/* 42/*
39 * Status values returned from a BIOS call. 43 * Status values returned from a BIOS call.
40 */ 44 */
41enum { 45enum {
46 BIOS_STATUS_MORE_PASSES = 1,
42 BIOS_STATUS_SUCCESS = 0, 47 BIOS_STATUS_SUCCESS = 0,
43 BIOS_STATUS_UNIMPLEMENTED = -ENOSYS, 48 BIOS_STATUS_UNIMPLEMENTED = -ENOSYS,
44 BIOS_STATUS_EINVAL = -EINVAL, 49 BIOS_STATUS_EINVAL = -EINVAL,
@@ -71,6 +76,21 @@ union partition_info_u {
71 }; 76 };
72}; 77};
73 78
79union uv_watchlist_u {
80 u64 val;
81 struct {
82 u64 blade : 16,
83 size : 32,
84 filler : 16;
85 };
86};
87
88enum uv_memprotect {
89 UV_MEMPROT_RESTRICT_ACCESS,
90 UV_MEMPROT_ALLOW_AMO,
91 UV_MEMPROT_ALLOW_RW
92};
93
74/* 94/*
75 * bios calls have 6 parameters 95 * bios calls have 6 parameters
76 */ 96 */
@@ -80,14 +100,20 @@ extern s64 uv_bios_call_reentrant(enum uv_bios_cmd, u64, u64, u64, u64, u64);
80 100
81extern s64 uv_bios_get_sn_info(int, int *, long *, long *, long *); 101extern s64 uv_bios_get_sn_info(int, int *, long *, long *, long *);
82extern s64 uv_bios_freq_base(u64, u64 *); 102extern s64 uv_bios_freq_base(u64, u64 *);
103extern int uv_bios_mq_watchlist_alloc(int, unsigned long, unsigned int,
104 unsigned long *);
105extern int uv_bios_mq_watchlist_free(int, int);
106extern s64 uv_bios_change_memprotect(u64, u64, enum uv_memprotect);
107extern s64 uv_bios_reserved_page_pa(u64, u64 *, u64 *, u64 *);
83 108
84extern void uv_bios_init(void); 109extern void uv_bios_init(void);
85 110
111extern unsigned long sn_rtc_cycles_per_second;
86extern int uv_type; 112extern int uv_type;
87extern long sn_partition_id; 113extern long sn_partition_id;
88extern long uv_coherency_id; 114extern long sn_coherency_id;
89extern long uv_region_size; 115extern long sn_region_size;
90#define partition_coherence_id() (uv_coherency_id) 116#define partition_coherence_id() (sn_coherency_id)
91 117
92extern struct kobject *sgi_uv_kobj; /* /sys/firmware/sgi_uv */ 118extern struct kobject *sgi_uv_kobj; /* /sys/firmware/sgi_uv */
93 119
diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h
index 7a5782610b2b..777327ef05c1 100644
--- a/arch/x86/include/asm/uv/uv_hub.h
+++ b/arch/x86/include/asm/uv/uv_hub.h
@@ -113,25 +113,37 @@
113 */ 113 */
114#define UV_MAX_NASID_VALUE (UV_MAX_NUMALINK_NODES * 2) 114#define UV_MAX_NASID_VALUE (UV_MAX_NUMALINK_NODES * 2)
115 115
116struct uv_scir_s {
117 struct timer_list timer;
118 unsigned long offset;
119 unsigned long last;
120 unsigned long idle_on;
121 unsigned long idle_off;
122 unsigned char state;
123 unsigned char enabled;
124};
125
116/* 126/*
117 * The following defines attributes of the HUB chip. These attributes are 127 * The following defines attributes of the HUB chip. These attributes are
118 * frequently referenced and are kept in the per-cpu data areas of each cpu. 128 * frequently referenced and are kept in the per-cpu data areas of each cpu.
119 * They are kept together in a struct to minimize cache misses. 129 * They are kept together in a struct to minimize cache misses.
120 */ 130 */
121struct uv_hub_info_s { 131struct uv_hub_info_s {
122 unsigned long global_mmr_base; 132 unsigned long global_mmr_base;
123 unsigned long gpa_mask; 133 unsigned long gpa_mask;
124 unsigned long gnode_upper; 134 unsigned long gnode_upper;
125 unsigned long lowmem_remap_top; 135 unsigned long lowmem_remap_top;
126 unsigned long lowmem_remap_base; 136 unsigned long lowmem_remap_base;
127 unsigned short pnode; 137 unsigned short pnode;
128 unsigned short pnode_mask; 138 unsigned short pnode_mask;
129 unsigned short coherency_domain_number; 139 unsigned short coherency_domain_number;
130 unsigned short numa_blade_id; 140 unsigned short numa_blade_id;
131 unsigned char blade_processor_id; 141 unsigned char blade_processor_id;
132 unsigned char m_val; 142 unsigned char m_val;
133 unsigned char n_val; 143 unsigned char n_val;
144 struct uv_scir_s scir;
134}; 145};
146
135DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info); 147DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
136#define uv_hub_info (&__get_cpu_var(__uv_hub_info)) 148#define uv_hub_info (&__get_cpu_var(__uv_hub_info))
137#define uv_cpu_hub_info(cpu) (&per_cpu(__uv_hub_info, cpu)) 149#define uv_cpu_hub_info(cpu) (&per_cpu(__uv_hub_info, cpu))
@@ -163,6 +175,30 @@ DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
163 175
164#define UV_APIC_PNODE_SHIFT 6 176#define UV_APIC_PNODE_SHIFT 6
165 177
178/* Local Bus from cpu's perspective */
179#define LOCAL_BUS_BASE 0x1c00000
180#define LOCAL_BUS_SIZE (4 * 1024 * 1024)
181
182/*
183 * System Controller Interface Reg
184 *
185 * Note there are NO leds on a UV system. This register is only
186 * used by the system controller to monitor system-wide operation.
187 * There are 64 regs per node. With Nahelem cpus (2 cores per node,
188 * 8 cpus per core, 2 threads per cpu) there are 32 cpu threads on
189 * a node.
190 *
191 * The window is located at top of ACPI MMR space
192 */
193#define SCIR_WINDOW_COUNT 64
194#define SCIR_LOCAL_MMR_BASE (LOCAL_BUS_BASE + \
195 LOCAL_BUS_SIZE - \
196 SCIR_WINDOW_COUNT)
197
198#define SCIR_CPU_HEARTBEAT 0x01 /* timer interrupt */
199#define SCIR_CPU_ACTIVITY 0x02 /* not idle */
200#define SCIR_CPU_HB_INTERVAL (HZ) /* once per second */
201
166/* 202/*
167 * Macros for converting between kernel virtual addresses, socket local physical 203 * Macros for converting between kernel virtual addresses, socket local physical
168 * addresses, and UV global physical addresses. 204 * addresses, and UV global physical addresses.
@@ -174,7 +210,7 @@ DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
174static inline unsigned long uv_soc_phys_ram_to_gpa(unsigned long paddr) 210static inline unsigned long uv_soc_phys_ram_to_gpa(unsigned long paddr)
175{ 211{
176 if (paddr < uv_hub_info->lowmem_remap_top) 212 if (paddr < uv_hub_info->lowmem_remap_top)
177 paddr += uv_hub_info->lowmem_remap_base; 213 paddr |= uv_hub_info->lowmem_remap_base;
178 return paddr | uv_hub_info->gnode_upper; 214 return paddr | uv_hub_info->gnode_upper;
179} 215}
180 216
@@ -182,19 +218,7 @@ static inline unsigned long uv_soc_phys_ram_to_gpa(unsigned long paddr)
182/* socket virtual --> UV global physical address */ 218/* socket virtual --> UV global physical address */
183static inline unsigned long uv_gpa(void *v) 219static inline unsigned long uv_gpa(void *v)
184{ 220{
185 return __pa(v) | uv_hub_info->gnode_upper; 221 return uv_soc_phys_ram_to_gpa(__pa(v));
186}
187
188/* socket virtual --> UV global physical address */
189static inline void *uv_vgpa(void *v)
190{
191 return (void *)uv_gpa(v);
192}
193
194/* UV global physical address --> socket virtual */
195static inline void *uv_va(unsigned long gpa)
196{
197 return __va(gpa & uv_hub_info->gpa_mask);
198} 222}
199 223
200/* pnode, offset --> socket virtual */ 224/* pnode, offset --> socket virtual */
@@ -277,6 +301,16 @@ static inline void uv_write_local_mmr(unsigned long offset, unsigned long val)
277 *uv_local_mmr_address(offset) = val; 301 *uv_local_mmr_address(offset) = val;
278} 302}
279 303
304static inline unsigned char uv_read_local_mmr8(unsigned long offset)
305{
306 return *((unsigned char *)uv_local_mmr_address(offset));
307}
308
309static inline void uv_write_local_mmr8(unsigned long offset, unsigned char val)
310{
311 *((unsigned char *)uv_local_mmr_address(offset)) = val;
312}
313
280/* 314/*
281 * Structures and definitions for converting between cpu, node, pnode, and blade 315 * Structures and definitions for converting between cpu, node, pnode, and blade
282 * numbers. 316 * numbers.
@@ -351,5 +385,20 @@ static inline int uv_num_possible_blades(void)
351 return uv_possible_blades; 385 return uv_possible_blades;
352} 386}
353 387
354#endif /* _ASM_X86_UV_UV_HUB_H */ 388/* Update SCIR state */
389static inline void uv_set_scir_bits(unsigned char value)
390{
391 if (uv_hub_info->scir.state != value) {
392 uv_hub_info->scir.state = value;
393 uv_write_local_mmr8(uv_hub_info->scir.offset, value);
394 }
395}
396static inline void uv_set_cpu_scir_bits(int cpu, unsigned char value)
397{
398 if (uv_cpu_hub_info(cpu)->scir.state != value) {
399 uv_cpu_hub_info(cpu)->scir.state = value;
400 uv_write_local_mmr8(uv_cpu_hub_info(cpu)->scir.offset, value);
401 }
402}
355 403
404#endif /* _ASM_X86_UV_UV_HUB_H */
diff --git a/arch/x86/include/asm/vmi.h b/arch/x86/include/asm/vmi.h
index b7c0dea119fe..61e08c0a2907 100644
--- a/arch/x86/include/asm/vmi.h
+++ b/arch/x86/include/asm/vmi.h
@@ -223,9 +223,15 @@ struct pci_header {
223} __attribute__((packed)); 223} __attribute__((packed));
224 224
225/* Function prototypes for bootstrapping */ 225/* Function prototypes for bootstrapping */
226#ifdef CONFIG_VMI
226extern void vmi_init(void); 227extern void vmi_init(void);
228extern void vmi_activate(void);
227extern void vmi_bringup(void); 229extern void vmi_bringup(void);
228extern void vmi_apply_boot_page_allocations(void); 230#else
231static inline void vmi_init(void) {}
232static inline void vmi_activate(void) {}
233static inline void vmi_bringup(void) {}
234#endif
229 235
230/* State needed to start an application processor in an SMP system. */ 236/* State needed to start an application processor in an SMP system. */
231struct vmi_ap_state { 237struct vmi_ap_state {
diff --git a/arch/x86/include/asm/vmware.h b/arch/x86/include/asm/vmware.h
new file mode 100644
index 000000000000..c11b7e100d83
--- /dev/null
+++ b/arch/x86/include/asm/vmware.h
@@ -0,0 +1,27 @@
1/*
2 * Copyright (C) 2008, VMware, Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
12 * NON INFRINGEMENT. See the GNU General Public License for more
13 * details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 */
20#ifndef ASM_X86__VMWARE_H
21#define ASM_X86__VMWARE_H
22
23extern unsigned long vmware_get_tsc_khz(void);
24extern int vmware_platform(void);
25extern void vmware_set_feature_bits(struct cpuinfo_x86 *c);
26
27#endif
diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h
index 3f6000d95fe2..5e79ca694326 100644
--- a/arch/x86/include/asm/xen/hypercall.h
+++ b/arch/x86/include/asm/xen/hypercall.h
@@ -33,8 +33,14 @@
33#ifndef _ASM_X86_XEN_HYPERCALL_H 33#ifndef _ASM_X86_XEN_HYPERCALL_H
34#define _ASM_X86_XEN_HYPERCALL_H 34#define _ASM_X86_XEN_HYPERCALL_H
35 35
36#include <linux/kernel.h>
37#include <linux/spinlock.h>
36#include <linux/errno.h> 38#include <linux/errno.h>
37#include <linux/string.h> 39#include <linux/string.h>
40#include <linux/types.h>
41
42#include <asm/page.h>
43#include <asm/pgtable.h>
38 44
39#include <xen/interface/xen.h> 45#include <xen/interface/xen.h>
40#include <xen/interface/sched.h> 46#include <xen/interface/sched.h>
diff --git a/arch/x86/include/asm/xen/hypervisor.h b/arch/x86/include/asm/xen/hypervisor.h
index a38d25ac87d2..81fbd735aec4 100644
--- a/arch/x86/include/asm/xen/hypervisor.h
+++ b/arch/x86/include/asm/xen/hypervisor.h
@@ -33,39 +33,10 @@
33#ifndef _ASM_X86_XEN_HYPERVISOR_H 33#ifndef _ASM_X86_XEN_HYPERVISOR_H
34#define _ASM_X86_XEN_HYPERVISOR_H 34#define _ASM_X86_XEN_HYPERVISOR_H
35 35
36#include <linux/types.h>
37#include <linux/kernel.h>
38
39#include <xen/interface/xen.h>
40#include <xen/interface/version.h>
41
42#include <asm/ptrace.h>
43#include <asm/page.h>
44#include <asm/desc.h>
45#if defined(__i386__)
46# ifdef CONFIG_X86_PAE
47# include <asm-generic/pgtable-nopud.h>
48# else
49# include <asm-generic/pgtable-nopmd.h>
50# endif
51#endif
52#include <asm/xen/hypercall.h>
53
54/* arch/i386/kernel/setup.c */ 36/* arch/i386/kernel/setup.c */
55extern struct shared_info *HYPERVISOR_shared_info; 37extern struct shared_info *HYPERVISOR_shared_info;
56extern struct start_info *xen_start_info; 38extern struct start_info *xen_start_info;
57 39
58/* arch/i386/mach-xen/evtchn.c */
59/* Force a proper event-channel callback from Xen. */
60extern void force_evtchn_callback(void);
61
62/* Turn jiffies into Xen system time. */
63u64 jiffies_to_st(unsigned long jiffies);
64
65
66#define MULTI_UVMFLAGS_INDEX 3
67#define MULTI_UVMDOMID_INDEX 4
68
69enum xen_domain_type { 40enum xen_domain_type {
70 XEN_NATIVE, 41 XEN_NATIVE,
71 XEN_PV_DOMAIN, 42 XEN_PV_DOMAIN,
@@ -74,9 +45,15 @@ enum xen_domain_type {
74 45
75extern enum xen_domain_type xen_domain_type; 46extern enum xen_domain_type xen_domain_type;
76 47
48#ifdef CONFIG_XEN
77#define xen_domain() (xen_domain_type != XEN_NATIVE) 49#define xen_domain() (xen_domain_type != XEN_NATIVE)
78#define xen_pv_domain() (xen_domain_type == XEN_PV_DOMAIN) 50#else
51#define xen_domain() (0)
52#endif
53
54#define xen_pv_domain() (xen_domain() && xen_domain_type == XEN_PV_DOMAIN)
55#define xen_hvm_domain() (xen_domain() && xen_domain_type == XEN_HVM_DOMAIN)
56
79#define xen_initial_domain() (xen_pv_domain() && xen_start_info->flags & SIF_INITDOMAIN) 57#define xen_initial_domain() (xen_pv_domain() && xen_start_info->flags & SIF_INITDOMAIN)
80#define xen_hvm_domain() (xen_domain_type == XEN_HVM_DOMAIN)
81 58
82#endif /* _ASM_X86_XEN_HYPERVISOR_H */ 59#endif /* _ASM_X86_XEN_HYPERVISOR_H */
diff --git a/arch/x86/include/asm/xen/page.h b/arch/x86/include/asm/xen/page.h
index bc628998a1b9..7ef617ef1df3 100644
--- a/arch/x86/include/asm/xen/page.h
+++ b/arch/x86/include/asm/xen/page.h
@@ -1,11 +1,16 @@
1#ifndef _ASM_X86_XEN_PAGE_H 1#ifndef _ASM_X86_XEN_PAGE_H
2#define _ASM_X86_XEN_PAGE_H 2#define _ASM_X86_XEN_PAGE_H
3 3
4#include <linux/kernel.h>
5#include <linux/types.h>
6#include <linux/spinlock.h>
4#include <linux/pfn.h> 7#include <linux/pfn.h>
5 8
6#include <asm/uaccess.h> 9#include <asm/uaccess.h>
10#include <asm/page.h>
7#include <asm/pgtable.h> 11#include <asm/pgtable.h>
8 12
13#include <xen/interface/xen.h>
9#include <xen/features.h> 14#include <xen/features.h>
10 15
11/* Xen machine address */ 16/* Xen machine address */
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
index b62a7667828e..1f208aaee780 100644
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@ -12,6 +12,7 @@ CFLAGS_REMOVE_tsc.o = -pg
12CFLAGS_REMOVE_rtc.o = -pg 12CFLAGS_REMOVE_rtc.o = -pg
13CFLAGS_REMOVE_paravirt-spinlocks.o = -pg 13CFLAGS_REMOVE_paravirt-spinlocks.o = -pg
14CFLAGS_REMOVE_ftrace.o = -pg 14CFLAGS_REMOVE_ftrace.o = -pg
15CFLAGS_REMOVE_early_printk.o = -pg
15endif 16endif
16 17
17# 18#
@@ -23,9 +24,9 @@ CFLAGS_vsyscall_64.o := $(PROFILING) -g0 $(nostackp)
23CFLAGS_hpet.o := $(nostackp) 24CFLAGS_hpet.o := $(nostackp)
24CFLAGS_tsc.o := $(nostackp) 25CFLAGS_tsc.o := $(nostackp)
25 26
26obj-y := process_$(BITS).o signal_$(BITS).o entry_$(BITS).o 27obj-y := process_$(BITS).o signal.o entry_$(BITS).o
27obj-y += traps.o irq.o irq_$(BITS).o dumpstack_$(BITS).o 28obj-y += traps.o irq.o irq_$(BITS).o dumpstack_$(BITS).o
28obj-y += time_$(BITS).o ioport.o ldt.o 29obj-y += time_$(BITS).o ioport.o ldt.o dumpstack.o
29obj-y += setup.o i8259.o irqinit_$(BITS).o setup_percpu.o 30obj-y += setup.o i8259.o irqinit_$(BITS).o setup_percpu.o
30obj-$(CONFIG_X86_VISWS) += visws_quirks.o 31obj-$(CONFIG_X86_VISWS) += visws_quirks.o
31obj-$(CONFIG_X86_32) += probe_roms_32.o 32obj-$(CONFIG_X86_32) += probe_roms_32.o
@@ -105,6 +106,8 @@ microcode-$(CONFIG_MICROCODE_INTEL) += microcode_intel.o
105microcode-$(CONFIG_MICROCODE_AMD) += microcode_amd.o 106microcode-$(CONFIG_MICROCODE_AMD) += microcode_amd.o
106obj-$(CONFIG_MICROCODE) += microcode.o 107obj-$(CONFIG_MICROCODE) += microcode.o
107 108
109obj-$(CONFIG_X86_CHECK_BIOS_CORRUPTION) += check.o
110
108### 111###
109# 64 bit specific files 112# 64 bit specific files
110ifeq ($(CONFIG_X86_64),y) 113ifeq ($(CONFIG_X86_64),y)
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 4c51a2f8fd31..65d0b72777ea 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1360,6 +1360,17 @@ static void __init acpi_process_madt(void)
1360 disable_acpi(); 1360 disable_acpi();
1361 } 1361 }
1362 } 1362 }
1363
1364 /*
1365 * ACPI supports both logical (e.g. Hyper-Threading) and physical
1366 * processors, where MPS only supports physical.
1367 */
1368 if (acpi_lapic && acpi_ioapic)
1369 printk(KERN_INFO "Using ACPI (MADT) for SMP configuration "
1370 "information\n");
1371 else if (acpi_lapic)
1372 printk(KERN_INFO "Using ACPI for processor (LAPIC) "
1373 "configuration information\n");
1363#endif 1374#endif
1364 return; 1375 return;
1365} 1376}
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
index e4899e0e8787..0a60d60ed036 100644
--- a/arch/x86/kernel/amd_iommu.c
+++ b/arch/x86/kernel/amd_iommu.c
@@ -187,6 +187,8 @@ static int iommu_queue_command(struct amd_iommu *iommu, struct iommu_cmd *cmd)
187 187
188 spin_lock_irqsave(&iommu->lock, flags); 188 spin_lock_irqsave(&iommu->lock, flags);
189 ret = __iommu_queue_command(iommu, cmd); 189 ret = __iommu_queue_command(iommu, cmd);
190 if (!ret)
191 iommu->need_sync = 1;
190 spin_unlock_irqrestore(&iommu->lock, flags); 192 spin_unlock_irqrestore(&iommu->lock, flags);
191 193
192 return ret; 194 return ret;
@@ -210,10 +212,13 @@ static int iommu_completion_wait(struct amd_iommu *iommu)
210 cmd.data[0] = CMD_COMPL_WAIT_INT_MASK; 212 cmd.data[0] = CMD_COMPL_WAIT_INT_MASK;
211 CMD_SET_TYPE(&cmd, CMD_COMPL_WAIT); 213 CMD_SET_TYPE(&cmd, CMD_COMPL_WAIT);
212 214
213 iommu->need_sync = 0;
214
215 spin_lock_irqsave(&iommu->lock, flags); 215 spin_lock_irqsave(&iommu->lock, flags);
216 216
217 if (!iommu->need_sync)
218 goto out;
219
220 iommu->need_sync = 0;
221
217 ret = __iommu_queue_command(iommu, &cmd); 222 ret = __iommu_queue_command(iommu, &cmd);
218 223
219 if (ret) 224 if (ret)
@@ -230,8 +235,9 @@ static int iommu_completion_wait(struct amd_iommu *iommu)
230 status &= ~MMIO_STATUS_COM_WAIT_INT_MASK; 235 status &= ~MMIO_STATUS_COM_WAIT_INT_MASK;
231 writel(status, iommu->mmio_base + MMIO_STATUS_OFFSET); 236 writel(status, iommu->mmio_base + MMIO_STATUS_OFFSET);
232 237
233 if (unlikely((i == EXIT_LOOP_COUNT) && printk_ratelimit())) 238 if (unlikely(i == EXIT_LOOP_COUNT))
234 printk(KERN_WARNING "AMD IOMMU: Completion wait loop failed\n"); 239 panic("AMD IOMMU: Completion wait loop failed\n");
240
235out: 241out:
236 spin_unlock_irqrestore(&iommu->lock, flags); 242 spin_unlock_irqrestore(&iommu->lock, flags);
237 243
@@ -254,8 +260,6 @@ static int iommu_queue_inv_dev_entry(struct amd_iommu *iommu, u16 devid)
254 260
255 ret = iommu_queue_command(iommu, &cmd); 261 ret = iommu_queue_command(iommu, &cmd);
256 262
257 iommu->need_sync = 1;
258
259 return ret; 263 return ret;
260} 264}
261 265
@@ -281,8 +285,6 @@ static int iommu_queue_inv_iommu_pages(struct amd_iommu *iommu,
281 285
282 ret = iommu_queue_command(iommu, &cmd); 286 ret = iommu_queue_command(iommu, &cmd);
283 287
284 iommu->need_sync = 1;
285
286 return ret; 288 return ret;
287} 289}
288 290
@@ -343,7 +345,7 @@ static int iommu_map(struct protection_domain *dom,
343 u64 __pte, *pte, *page; 345 u64 __pte, *pte, *page;
344 346
345 bus_addr = PAGE_ALIGN(bus_addr); 347 bus_addr = PAGE_ALIGN(bus_addr);
346 phys_addr = PAGE_ALIGN(bus_addr); 348 phys_addr = PAGE_ALIGN(phys_addr);
347 349
348 /* only support 512GB address spaces for now */ 350 /* only support 512GB address spaces for now */
349 if (bus_addr > IOMMU_MAP_SIZE_L3 || !(prot & IOMMU_PROT_MASK)) 351 if (bus_addr > IOMMU_MAP_SIZE_L3 || !(prot & IOMMU_PROT_MASK))
@@ -599,7 +601,7 @@ static void dma_ops_free_pagetable(struct dma_ops_domain *dma_dom)
599 continue; 601 continue;
600 602
601 p2 = IOMMU_PTE_PAGE(p1[i]); 603 p2 = IOMMU_PTE_PAGE(p1[i]);
602 for (j = 0; j < 512; ++i) { 604 for (j = 0; j < 512; ++j) {
603 if (!IOMMU_PTE_PRESENT(p2[j])) 605 if (!IOMMU_PTE_PRESENT(p2[j]))
604 continue; 606 continue;
605 p3 = IOMMU_PTE_PAGE(p2[j]); 607 p3 = IOMMU_PTE_PAGE(p2[j]);
@@ -762,8 +764,6 @@ static void set_device_domain(struct amd_iommu *iommu,
762 write_unlock_irqrestore(&amd_iommu_devtable_lock, flags); 764 write_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
763 765
764 iommu_queue_inv_dev_entry(iommu, devid); 766 iommu_queue_inv_dev_entry(iommu, devid);
765
766 iommu->need_sync = 1;
767} 767}
768 768
769/***************************************************************************** 769/*****************************************************************************
@@ -858,6 +858,9 @@ static int get_device_resources(struct device *dev,
858 print_devid(_bdf, 1); 858 print_devid(_bdf, 1);
859 } 859 }
860 860
861 if (domain_for_device(_bdf) == NULL)
862 set_device_domain(*iommu, *domain, _bdf);
863
861 return 1; 864 return 1;
862} 865}
863 866
@@ -908,7 +911,7 @@ static void dma_ops_domain_unmap(struct amd_iommu *iommu,
908 if (address >= dom->aperture_size) 911 if (address >= dom->aperture_size)
909 return; 912 return;
910 913
911 WARN_ON(address & 0xfffULL || address > dom->aperture_size); 914 WARN_ON(address & ~PAGE_MASK || address >= dom->aperture_size);
912 915
913 pte = dom->pte_pages[IOMMU_PTE_L1_INDEX(address)]; 916 pte = dom->pte_pages[IOMMU_PTE_L1_INDEX(address)];
914 pte += IOMMU_PTE_L0_INDEX(address); 917 pte += IOMMU_PTE_L0_INDEX(address);
@@ -920,8 +923,8 @@ static void dma_ops_domain_unmap(struct amd_iommu *iommu,
920 923
921/* 924/*
922 * This function contains common code for mapping of a physically 925 * This function contains common code for mapping of a physically
923 * contiguous memory region into DMA address space. It is uses by all 926 * contiguous memory region into DMA address space. It is used by all
924 * mapping functions provided by this IOMMU driver. 927 * mapping functions provided with this IOMMU driver.
925 * Must be called with the domain lock held. 928 * Must be called with the domain lock held.
926 */ 929 */
927static dma_addr_t __map_single(struct device *dev, 930static dma_addr_t __map_single(struct device *dev,
@@ -981,7 +984,8 @@ static void __unmap_single(struct amd_iommu *iommu,
981 dma_addr_t i, start; 984 dma_addr_t i, start;
982 unsigned int pages; 985 unsigned int pages;
983 986
984 if ((dma_addr == 0) || (dma_addr + size > dma_dom->aperture_size)) 987 if ((dma_addr == bad_dma_address) ||
988 (dma_addr + size > dma_dom->aperture_size))
985 return; 989 return;
986 990
987 pages = iommu_num_pages(dma_addr, size, PAGE_SIZE); 991 pages = iommu_num_pages(dma_addr, size, PAGE_SIZE);
@@ -1031,8 +1035,7 @@ static dma_addr_t map_single(struct device *dev, phys_addr_t paddr,
1031 if (addr == bad_dma_address) 1035 if (addr == bad_dma_address)
1032 goto out; 1036 goto out;
1033 1037
1034 if (unlikely(iommu->need_sync)) 1038 iommu_completion_wait(iommu);
1035 iommu_completion_wait(iommu);
1036 1039
1037out: 1040out:
1038 spin_unlock_irqrestore(&domain->lock, flags); 1041 spin_unlock_irqrestore(&domain->lock, flags);
@@ -1060,8 +1063,7 @@ static void unmap_single(struct device *dev, dma_addr_t dma_addr,
1060 1063
1061 __unmap_single(iommu, domain->priv, dma_addr, size, dir); 1064 __unmap_single(iommu, domain->priv, dma_addr, size, dir);
1062 1065
1063 if (unlikely(iommu->need_sync)) 1066 iommu_completion_wait(iommu);
1064 iommu_completion_wait(iommu);
1065 1067
1066 spin_unlock_irqrestore(&domain->lock, flags); 1068 spin_unlock_irqrestore(&domain->lock, flags);
1067} 1069}
@@ -1127,8 +1129,7 @@ static int map_sg(struct device *dev, struct scatterlist *sglist,
1127 goto unmap; 1129 goto unmap;
1128 } 1130 }
1129 1131
1130 if (unlikely(iommu->need_sync)) 1132 iommu_completion_wait(iommu);
1131 iommu_completion_wait(iommu);
1132 1133
1133out: 1134out:
1134 spin_unlock_irqrestore(&domain->lock, flags); 1135 spin_unlock_irqrestore(&domain->lock, flags);
@@ -1173,8 +1174,7 @@ static void unmap_sg(struct device *dev, struct scatterlist *sglist,
1173 s->dma_address = s->dma_length = 0; 1174 s->dma_address = s->dma_length = 0;
1174 } 1175 }
1175 1176
1176 if (unlikely(iommu->need_sync)) 1177 iommu_completion_wait(iommu);
1177 iommu_completion_wait(iommu);
1178 1178
1179 spin_unlock_irqrestore(&domain->lock, flags); 1179 spin_unlock_irqrestore(&domain->lock, flags);
1180} 1180}
@@ -1225,8 +1225,7 @@ static void *alloc_coherent(struct device *dev, size_t size,
1225 goto out; 1225 goto out;
1226 } 1226 }
1227 1227
1228 if (unlikely(iommu->need_sync)) 1228 iommu_completion_wait(iommu);
1229 iommu_completion_wait(iommu);
1230 1229
1231out: 1230out:
1232 spin_unlock_irqrestore(&domain->lock, flags); 1231 spin_unlock_irqrestore(&domain->lock, flags);
@@ -1257,8 +1256,7 @@ static void free_coherent(struct device *dev, size_t size,
1257 1256
1258 __unmap_single(iommu, domain->priv, dma_addr, size, DMA_BIDIRECTIONAL); 1257 __unmap_single(iommu, domain->priv, dma_addr, size, DMA_BIDIRECTIONAL);
1259 1258
1260 if (unlikely(iommu->need_sync)) 1259 iommu_completion_wait(iommu);
1261 iommu_completion_wait(iommu);
1262 1260
1263 spin_unlock_irqrestore(&domain->lock, flags); 1261 spin_unlock_irqrestore(&domain->lock, flags);
1264 1262
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
index 30ae2701b3df..c6cc22815d35 100644
--- a/arch/x86/kernel/amd_iommu_init.c
+++ b/arch/x86/kernel/amd_iommu_init.c
@@ -427,6 +427,10 @@ static u8 * __init alloc_command_buffer(struct amd_iommu *iommu)
427 memcpy_toio(iommu->mmio_base + MMIO_CMD_BUF_OFFSET, 427 memcpy_toio(iommu->mmio_base + MMIO_CMD_BUF_OFFSET,
428 &entry, sizeof(entry)); 428 &entry, sizeof(entry));
429 429
430 /* set head and tail to zero manually */
431 writel(0x00, iommu->mmio_base + MMIO_CMD_HEAD_OFFSET);
432 writel(0x00, iommu->mmio_base + MMIO_CMD_TAIL_OFFSET);
433
430 iommu_feature_enable(iommu, CONTROL_CMDBUF_EN); 434 iommu_feature_enable(iommu, CONTROL_CMDBUF_EN);
431 435
432 return cmd_buf; 436 return cmd_buf;
@@ -1074,7 +1078,8 @@ int __init amd_iommu_init(void)
1074 goto free; 1078 goto free;
1075 1079
1076 /* IOMMU rlookup table - find the IOMMU for a specific device */ 1080 /* IOMMU rlookup table - find the IOMMU for a specific device */
1077 amd_iommu_rlookup_table = (void *)__get_free_pages(GFP_KERNEL, 1081 amd_iommu_rlookup_table = (void *)__get_free_pages(
1082 GFP_KERNEL | __GFP_ZERO,
1078 get_order(rlookup_table_size)); 1083 get_order(rlookup_table_size));
1079 if (amd_iommu_rlookup_table == NULL) 1084 if (amd_iommu_rlookup_table == NULL)
1080 goto free; 1085 goto free;
diff --git a/arch/x86/kernel/apic.c b/arch/x86/kernel/apic.c
index 16f94879b525..20c6e12c0475 100644
--- a/arch/x86/kernel/apic.c
+++ b/arch/x86/kernel/apic.c
@@ -441,6 +441,7 @@ static void lapic_timer_setup(enum clock_event_mode mode,
441 v = apic_read(APIC_LVTT); 441 v = apic_read(APIC_LVTT);
442 v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR); 442 v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
443 apic_write(APIC_LVTT, v); 443 apic_write(APIC_LVTT, v);
444 apic_write(APIC_TMICT, 0xffffffff);
444 break; 445 break;
445 case CLOCK_EVT_MODE_RESUME: 446 case CLOCK_EVT_MODE_RESUME:
446 /* Nothing to do here */ 447 /* Nothing to do here */
@@ -559,13 +560,13 @@ static int __init calibrate_by_pmtimer(long deltapm, long *delta)
559 } else { 560 } else {
560 res = (((u64)deltapm) * mult) >> 22; 561 res = (((u64)deltapm) * mult) >> 22;
561 do_div(res, 1000000); 562 do_div(res, 1000000);
562 printk(KERN_WARNING "APIC calibration not consistent " 563 pr_warning("APIC calibration not consistent "
563 "with PM Timer: %ldms instead of 100ms\n", 564 "with PM Timer: %ldms instead of 100ms\n",
564 (long)res); 565 (long)res);
565 /* Correct the lapic counter value */ 566 /* Correct the lapic counter value */
566 res = (((u64)(*delta)) * pm_100ms); 567 res = (((u64)(*delta)) * pm_100ms);
567 do_div(res, deltapm); 568 do_div(res, deltapm);
568 printk(KERN_INFO "APIC delta adjusted to PM-Timer: " 569 pr_info("APIC delta adjusted to PM-Timer: "
569 "%lu (%ld)\n", (unsigned long)res, *delta); 570 "%lu (%ld)\n", (unsigned long)res, *delta);
570 *delta = (long)res; 571 *delta = (long)res;
571 } 572 }
@@ -645,8 +646,7 @@ static int __init calibrate_APIC_clock(void)
645 */ 646 */
646 if (calibration_result < (1000000 / HZ)) { 647 if (calibration_result < (1000000 / HZ)) {
647 local_irq_enable(); 648 local_irq_enable();
648 printk(KERN_WARNING 649 pr_warning("APIC frequency too slow, disabling apic timer\n");
649 "APIC frequency too slow, disabling apic timer\n");
650 return -1; 650 return -1;
651 } 651 }
652 652
@@ -672,13 +672,9 @@ static int __init calibrate_APIC_clock(void)
672 while (lapic_cal_loops <= LAPIC_CAL_LOOPS) 672 while (lapic_cal_loops <= LAPIC_CAL_LOOPS)
673 cpu_relax(); 673 cpu_relax();
674 674
675 local_irq_disable();
676
677 /* Stop the lapic timer */ 675 /* Stop the lapic timer */
678 lapic_timer_setup(CLOCK_EVT_MODE_SHUTDOWN, levt); 676 lapic_timer_setup(CLOCK_EVT_MODE_SHUTDOWN, levt);
679 677
680 local_irq_enable();
681
682 /* Jiffies delta */ 678 /* Jiffies delta */
683 deltaj = lapic_cal_j2 - lapic_cal_j1; 679 deltaj = lapic_cal_j2 - lapic_cal_j1;
684 apic_printk(APIC_VERBOSE, "... jiffies delta = %lu\n", deltaj); 680 apic_printk(APIC_VERBOSE, "... jiffies delta = %lu\n", deltaj);
@@ -692,8 +688,7 @@ static int __init calibrate_APIC_clock(void)
692 local_irq_enable(); 688 local_irq_enable();
693 689
694 if (levt->features & CLOCK_EVT_FEAT_DUMMY) { 690 if (levt->features & CLOCK_EVT_FEAT_DUMMY) {
695 printk(KERN_WARNING 691 pr_warning("APIC timer disabled due to verification failure.\n");
696 "APIC timer disabled due to verification failure.\n");
697 return -1; 692 return -1;
698 } 693 }
699 694
@@ -714,7 +709,7 @@ void __init setup_boot_APIC_clock(void)
714 * broadcast mechanism is used. On UP systems simply ignore it. 709 * broadcast mechanism is used. On UP systems simply ignore it.
715 */ 710 */
716 if (disable_apic_timer) { 711 if (disable_apic_timer) {
717 printk(KERN_INFO "Disabling APIC timer\n"); 712 pr_info("Disabling APIC timer\n");
718 /* No broadcast on UP ! */ 713 /* No broadcast on UP ! */
719 if (num_possible_cpus() > 1) { 714 if (num_possible_cpus() > 1) {
720 lapic_clockevent.mult = 1; 715 lapic_clockevent.mult = 1;
@@ -741,7 +736,7 @@ void __init setup_boot_APIC_clock(void)
741 if (nmi_watchdog != NMI_IO_APIC) 736 if (nmi_watchdog != NMI_IO_APIC)
742 lapic_clockevent.features &= ~CLOCK_EVT_FEAT_DUMMY; 737 lapic_clockevent.features &= ~CLOCK_EVT_FEAT_DUMMY;
743 else 738 else
744 printk(KERN_WARNING "APIC timer registered as dummy," 739 pr_warning("APIC timer registered as dummy,"
745 " due to nmi_watchdog=%d!\n", nmi_watchdog); 740 " due to nmi_watchdog=%d!\n", nmi_watchdog);
746 741
747 /* Setup the lapic or request the broadcast */ 742 /* Setup the lapic or request the broadcast */
@@ -773,8 +768,7 @@ static void local_apic_timer_interrupt(void)
773 * spurious. 768 * spurious.
774 */ 769 */
775 if (!evt->event_handler) { 770 if (!evt->event_handler) {
776 printk(KERN_WARNING 771 pr_warning("Spurious LAPIC timer interrupt on cpu %d\n", cpu);
777 "Spurious LAPIC timer interrupt on cpu %d\n", cpu);
778 /* Switch it off */ 772 /* Switch it off */
779 lapic_timer_setup(CLOCK_EVT_MODE_SHUTDOWN, evt); 773 lapic_timer_setup(CLOCK_EVT_MODE_SHUTDOWN, evt);
780 return; 774 return;
@@ -814,9 +808,7 @@ void smp_apic_timer_interrupt(struct pt_regs *regs)
814 * Besides, if we don't timer interrupts ignore the global 808 * Besides, if we don't timer interrupts ignore the global
815 * interrupt lock, which is the WrongThing (tm) to do. 809 * interrupt lock, which is the WrongThing (tm) to do.
816 */ 810 */
817#ifdef CONFIG_X86_64
818 exit_idle(); 811 exit_idle();
819#endif
820 irq_enter(); 812 irq_enter();
821 local_apic_timer_interrupt(); 813 local_apic_timer_interrupt();
822 irq_exit(); 814 irq_exit();
@@ -1093,7 +1085,7 @@ static void __cpuinit lapic_setup_esr(void)
1093 unsigned int oldvalue, value, maxlvt; 1085 unsigned int oldvalue, value, maxlvt;
1094 1086
1095 if (!lapic_is_integrated()) { 1087 if (!lapic_is_integrated()) {
1096 printk(KERN_INFO "No ESR for 82489DX.\n"); 1088 pr_info("No ESR for 82489DX.\n");
1097 return; 1089 return;
1098 } 1090 }
1099 1091
@@ -1104,7 +1096,7 @@ static void __cpuinit lapic_setup_esr(void)
1104 * ESR disabled - we can't do anything useful with the 1096 * ESR disabled - we can't do anything useful with the
1105 * errors anyway - mbligh 1097 * errors anyway - mbligh
1106 */ 1098 */
1107 printk(KERN_INFO "Leaving ESR disabled.\n"); 1099 pr_info("Leaving ESR disabled.\n");
1108 return; 1100 return;
1109 } 1101 }
1110 1102
@@ -1298,7 +1290,7 @@ void check_x2apic(void)
1298 rdmsr(MSR_IA32_APICBASE, msr, msr2); 1290 rdmsr(MSR_IA32_APICBASE, msr, msr2);
1299 1291
1300 if (msr & X2APIC_ENABLE) { 1292 if (msr & X2APIC_ENABLE) {
1301 printk("x2apic enabled by BIOS, switching to x2apic ops\n"); 1293 pr_info("x2apic enabled by BIOS, switching to x2apic ops\n");
1302 x2apic_preenabled = x2apic = 1; 1294 x2apic_preenabled = x2apic = 1;
1303 apic_ops = &x2apic_ops; 1295 apic_ops = &x2apic_ops;
1304 } 1296 }
@@ -1310,7 +1302,7 @@ void enable_x2apic(void)
1310 1302
1311 rdmsr(MSR_IA32_APICBASE, msr, msr2); 1303 rdmsr(MSR_IA32_APICBASE, msr, msr2);
1312 if (!(msr & X2APIC_ENABLE)) { 1304 if (!(msr & X2APIC_ENABLE)) {
1313 printk("Enabling x2apic\n"); 1305 pr_info("Enabling x2apic\n");
1314 wrmsr(MSR_IA32_APICBASE, msr | X2APIC_ENABLE, 0); 1306 wrmsr(MSR_IA32_APICBASE, msr | X2APIC_ENABLE, 0);
1315 } 1307 }
1316} 1308}
@@ -1325,9 +1317,8 @@ void __init enable_IR_x2apic(void)
1325 return; 1317 return;
1326 1318
1327 if (!x2apic_preenabled && disable_x2apic) { 1319 if (!x2apic_preenabled && disable_x2apic) {
1328 printk(KERN_INFO 1320 pr_info("Skipped enabling x2apic and Interrupt-remapping "
1329 "Skipped enabling x2apic and Interrupt-remapping " 1321 "because of nox2apic\n");
1330 "because of nox2apic\n");
1331 return; 1322 return;
1332 } 1323 }
1333 1324
@@ -1335,22 +1326,19 @@ void __init enable_IR_x2apic(void)
1335 panic("Bios already enabled x2apic, can't enforce nox2apic"); 1326 panic("Bios already enabled x2apic, can't enforce nox2apic");
1336 1327
1337 if (!x2apic_preenabled && skip_ioapic_setup) { 1328 if (!x2apic_preenabled && skip_ioapic_setup) {
1338 printk(KERN_INFO 1329 pr_info("Skipped enabling x2apic and Interrupt-remapping "
1339 "Skipped enabling x2apic and Interrupt-remapping " 1330 "because of skipping io-apic setup\n");
1340 "because of skipping io-apic setup\n");
1341 return; 1331 return;
1342 } 1332 }
1343 1333
1344 ret = dmar_table_init(); 1334 ret = dmar_table_init();
1345 if (ret) { 1335 if (ret) {
1346 printk(KERN_INFO 1336 pr_info("dmar_table_init() failed with %d:\n", ret);
1347 "dmar_table_init() failed with %d:\n", ret);
1348 1337
1349 if (x2apic_preenabled) 1338 if (x2apic_preenabled)
1350 panic("x2apic enabled by bios. But IR enabling failed"); 1339 panic("x2apic enabled by bios. But IR enabling failed");
1351 else 1340 else
1352 printk(KERN_INFO 1341 pr_info("Not enabling x2apic,Intr-remapping\n");
1353 "Not enabling x2apic,Intr-remapping\n");
1354 return; 1342 return;
1355 } 1343 }
1356 1344
@@ -1359,7 +1347,7 @@ void __init enable_IR_x2apic(void)
1359 1347
1360 ret = save_mask_IO_APIC_setup(); 1348 ret = save_mask_IO_APIC_setup();
1361 if (ret) { 1349 if (ret) {
1362 printk(KERN_INFO "Saving IO-APIC state failed: %d\n", ret); 1350 pr_info("Saving IO-APIC state failed: %d\n", ret);
1363 goto end; 1351 goto end;
1364 } 1352 }
1365 1353
@@ -1394,14 +1382,11 @@ end:
1394 1382
1395 if (!ret) { 1383 if (!ret) {
1396 if (!x2apic_preenabled) 1384 if (!x2apic_preenabled)
1397 printk(KERN_INFO 1385 pr_info("Enabled x2apic and interrupt-remapping\n");
1398 "Enabled x2apic and interrupt-remapping\n");
1399 else 1386 else
1400 printk(KERN_INFO 1387 pr_info("Enabled Interrupt-remapping\n");
1401 "Enabled Interrupt-remapping\n");
1402 } else 1388 } else
1403 printk(KERN_ERR 1389 pr_err("Failed to enable Interrupt-remapping and x2apic\n");
1404 "Failed to enable Interrupt-remapping and x2apic\n");
1405#else 1390#else
1406 if (!cpu_has_x2apic) 1391 if (!cpu_has_x2apic)
1407 return; 1392 return;
@@ -1410,8 +1395,8 @@ end:
1410 panic("x2apic enabled prior OS handover," 1395 panic("x2apic enabled prior OS handover,"
1411 " enable CONFIG_INTR_REMAP"); 1396 " enable CONFIG_INTR_REMAP");
1412 1397
1413 printk(KERN_INFO "Enable CONFIG_INTR_REMAP for enabling intr-remapping " 1398 pr_info("Enable CONFIG_INTR_REMAP for enabling intr-remapping "
1414 " and x2apic\n"); 1399 " and x2apic\n");
1415#endif 1400#endif
1416 1401
1417 return; 1402 return;
@@ -1428,7 +1413,7 @@ end:
1428static int __init detect_init_APIC(void) 1413static int __init detect_init_APIC(void)
1429{ 1414{
1430 if (!cpu_has_apic) { 1415 if (!cpu_has_apic) {
1431 printk(KERN_INFO "No local APIC present\n"); 1416 pr_info("No local APIC present\n");
1432 return -1; 1417 return -1;
1433 } 1418 }
1434 1419
@@ -1469,8 +1454,8 @@ static int __init detect_init_APIC(void)
1469 * "lapic" specified. 1454 * "lapic" specified.
1470 */ 1455 */
1471 if (!force_enable_local_apic) { 1456 if (!force_enable_local_apic) {
1472 printk(KERN_INFO "Local APIC disabled by BIOS -- " 1457 pr_info("Local APIC disabled by BIOS -- "
1473 "you can enable it with \"lapic\"\n"); 1458 "you can enable it with \"lapic\"\n");
1474 return -1; 1459 return -1;
1475 } 1460 }
1476 /* 1461 /*
@@ -1480,8 +1465,7 @@ static int __init detect_init_APIC(void)
1480 */ 1465 */
1481 rdmsr(MSR_IA32_APICBASE, l, h); 1466 rdmsr(MSR_IA32_APICBASE, l, h);
1482 if (!(l & MSR_IA32_APICBASE_ENABLE)) { 1467 if (!(l & MSR_IA32_APICBASE_ENABLE)) {
1483 printk(KERN_INFO 1468 pr_info("Local APIC disabled by BIOS -- reenabling.\n");
1484 "Local APIC disabled by BIOS -- reenabling.\n");
1485 l &= ~MSR_IA32_APICBASE_BASE; 1469 l &= ~MSR_IA32_APICBASE_BASE;
1486 l |= MSR_IA32_APICBASE_ENABLE | APIC_DEFAULT_PHYS_BASE; 1470 l |= MSR_IA32_APICBASE_ENABLE | APIC_DEFAULT_PHYS_BASE;
1487 wrmsr(MSR_IA32_APICBASE, l, h); 1471 wrmsr(MSR_IA32_APICBASE, l, h);
@@ -1494,7 +1478,7 @@ static int __init detect_init_APIC(void)
1494 */ 1478 */
1495 features = cpuid_edx(1); 1479 features = cpuid_edx(1);
1496 if (!(features & (1 << X86_FEATURE_APIC))) { 1480 if (!(features & (1 << X86_FEATURE_APIC))) {
1497 printk(KERN_WARNING "Could not enable APIC!\n"); 1481 pr_warning("Could not enable APIC!\n");
1498 return -1; 1482 return -1;
1499 } 1483 }
1500 set_cpu_cap(&boot_cpu_data, X86_FEATURE_APIC); 1484 set_cpu_cap(&boot_cpu_data, X86_FEATURE_APIC);
@@ -1505,14 +1489,14 @@ static int __init detect_init_APIC(void)
1505 if (l & MSR_IA32_APICBASE_ENABLE) 1489 if (l & MSR_IA32_APICBASE_ENABLE)
1506 mp_lapic_addr = l & MSR_IA32_APICBASE_BASE; 1490 mp_lapic_addr = l & MSR_IA32_APICBASE_BASE;
1507 1491
1508 printk(KERN_INFO "Found and enabled local APIC!\n"); 1492 pr_info("Found and enabled local APIC!\n");
1509 1493
1510 apic_pm_activate(); 1494 apic_pm_activate();
1511 1495
1512 return 0; 1496 return 0;
1513 1497
1514no_apic: 1498no_apic:
1515 printk(KERN_INFO "No local APIC present or hardware disabled\n"); 1499 pr_info("No local APIC present or hardware disabled\n");
1516 return -1; 1500 return -1;
1517} 1501}
1518#endif 1502#endif
@@ -1588,12 +1572,12 @@ int __init APIC_init_uniprocessor(void)
1588{ 1572{
1589#ifdef CONFIG_X86_64 1573#ifdef CONFIG_X86_64
1590 if (disable_apic) { 1574 if (disable_apic) {
1591 printk(KERN_INFO "Apic disabled\n"); 1575 pr_info("Apic disabled\n");
1592 return -1; 1576 return -1;
1593 } 1577 }
1594 if (!cpu_has_apic) { 1578 if (!cpu_has_apic) {
1595 disable_apic = 1; 1579 disable_apic = 1;
1596 printk(KERN_INFO "Apic disabled by BIOS\n"); 1580 pr_info("Apic disabled by BIOS\n");
1597 return -1; 1581 return -1;
1598 } 1582 }
1599#else 1583#else
@@ -1605,8 +1589,8 @@ int __init APIC_init_uniprocessor(void)
1605 */ 1589 */
1606 if (!cpu_has_apic && 1590 if (!cpu_has_apic &&
1607 APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) { 1591 APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) {
1608 printk(KERN_ERR "BIOS bug, local APIC 0x%x not detected!...\n", 1592 pr_err("BIOS bug, local APIC 0x%x not detected!...\n",
1609 boot_cpu_physical_apicid); 1593 boot_cpu_physical_apicid);
1610 clear_cpu_cap(&boot_cpu_data, X86_FEATURE_APIC); 1594 clear_cpu_cap(&boot_cpu_data, X86_FEATURE_APIC);
1611 return -1; 1595 return -1;
1612 } 1596 }
@@ -1682,9 +1666,7 @@ void smp_spurious_interrupt(struct pt_regs *regs)
1682{ 1666{
1683 u32 v; 1667 u32 v;
1684 1668
1685#ifdef CONFIG_X86_64
1686 exit_idle(); 1669 exit_idle();
1687#endif
1688 irq_enter(); 1670 irq_enter();
1689 /* 1671 /*
1690 * Check if this really is a spurious interrupt and ACK it 1672 * Check if this really is a spurious interrupt and ACK it
@@ -1699,8 +1681,8 @@ void smp_spurious_interrupt(struct pt_regs *regs)
1699 add_pda(irq_spurious_count, 1); 1681 add_pda(irq_spurious_count, 1);
1700#else 1682#else
1701 /* see sw-dev-man vol 3, chapter 7.4.13.5 */ 1683 /* see sw-dev-man vol 3, chapter 7.4.13.5 */
1702 printk(KERN_INFO "spurious APIC interrupt on CPU#%d, " 1684 pr_info("spurious APIC interrupt on CPU#%d, "
1703 "should never happen.\n", smp_processor_id()); 1685 "should never happen.\n", smp_processor_id());
1704 __get_cpu_var(irq_stat).irq_spurious_count++; 1686 __get_cpu_var(irq_stat).irq_spurious_count++;
1705#endif 1687#endif
1706 irq_exit(); 1688 irq_exit();
@@ -1713,9 +1695,7 @@ void smp_error_interrupt(struct pt_regs *regs)
1713{ 1695{
1714 u32 v, v1; 1696 u32 v, v1;
1715 1697
1716#ifdef CONFIG_X86_64
1717 exit_idle(); 1698 exit_idle();
1718#endif
1719 irq_enter(); 1699 irq_enter();
1720 /* First tickle the hardware, only then report what went on. -- REW */ 1700 /* First tickle the hardware, only then report what went on. -- REW */
1721 v = apic_read(APIC_ESR); 1701 v = apic_read(APIC_ESR);
@@ -1724,17 +1704,18 @@ void smp_error_interrupt(struct pt_regs *regs)
1724 ack_APIC_irq(); 1704 ack_APIC_irq();
1725 atomic_inc(&irq_err_count); 1705 atomic_inc(&irq_err_count);
1726 1706
1727 /* Here is what the APIC error bits mean: 1707 /*
1728 0: Send CS error 1708 * Here is what the APIC error bits mean:
1729 1: Receive CS error 1709 * 0: Send CS error
1730 2: Send accept error 1710 * 1: Receive CS error
1731 3: Receive accept error 1711 * 2: Send accept error
1732 4: Reserved 1712 * 3: Receive accept error
1733 5: Send illegal vector 1713 * 4: Reserved
1734 6: Received illegal vector 1714 * 5: Send illegal vector
1735 7: Illegal register address 1715 * 6: Received illegal vector
1736 */ 1716 * 7: Illegal register address
1737 printk(KERN_DEBUG "APIC error on CPU%d: %02x(%02x)\n", 1717 */
1718 pr_debug("APIC error on CPU%d: %02x(%02x)\n",
1738 smp_processor_id(), v , v1); 1719 smp_processor_id(), v , v1);
1739 irq_exit(); 1720 irq_exit();
1740} 1721}
@@ -1838,15 +1819,15 @@ void __cpuinit generic_processor_info(int apicid, int version)
1838 * Validate version 1819 * Validate version
1839 */ 1820 */
1840 if (version == 0x0) { 1821 if (version == 0x0) {
1841 printk(KERN_WARNING "BIOS bug, APIC version is 0 for CPU#%d! " 1822 pr_warning("BIOS bug, APIC version is 0 for CPU#%d! "
1842 "fixing up to 0x10. (tell your hw vendor)\n", 1823 "fixing up to 0x10. (tell your hw vendor)\n",
1843 version); 1824 version);
1844 version = 0x10; 1825 version = 0x10;
1845 } 1826 }
1846 apic_version[apicid] = version; 1827 apic_version[apicid] = version;
1847 1828
1848 if (num_processors >= NR_CPUS) { 1829 if (num_processors >= NR_CPUS) {
1849 printk(KERN_WARNING "WARNING: NR_CPUS limit of %i reached." 1830 pr_warning("WARNING: NR_CPUS limit of %i reached."
1850 " Processor ignored.\n", NR_CPUS); 1831 " Processor ignored.\n", NR_CPUS);
1851 return; 1832 return;
1852 } 1833 }
@@ -2209,7 +2190,7 @@ static int __init apic_set_verbosity(char *arg)
2209 else if (strcmp("verbose", arg) == 0) 2190 else if (strcmp("verbose", arg) == 0)
2210 apic_verbosity = APIC_VERBOSE; 2191 apic_verbosity = APIC_VERBOSE;
2211 else { 2192 else {
2212 printk(KERN_WARNING "APIC Verbosity level %s not recognised" 2193 pr_warning("APIC Verbosity level %s not recognised"
2213 " use apic=verbose or apic=debug\n", arg); 2194 " use apic=verbose or apic=debug\n", arg);
2214 return -EINVAL; 2195 return -EINVAL;
2215 } 2196 }
diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
index 5145a6e72bbb..3a26525a3f31 100644
--- a/arch/x86/kernel/apm_32.c
+++ b/arch/x86/kernel/apm_32.c
@@ -391,11 +391,7 @@ static int power_off;
391#else 391#else
392static int power_off = 1; 392static int power_off = 1;
393#endif 393#endif
394#ifdef CONFIG_APM_REAL_MODE_POWER_OFF
395static int realmode_power_off = 1;
396#else
397static int realmode_power_off; 394static int realmode_power_off;
398#endif
399#ifdef CONFIG_APM_ALLOW_INTS 395#ifdef CONFIG_APM_ALLOW_INTS
400static int allow_ints = 1; 396static int allow_ints = 1;
401#else 397#else
diff --git a/arch/x86/kernel/asm-offsets_32.c b/arch/x86/kernel/asm-offsets_32.c
index 6649d09ad88f..ee4df08feee6 100644
--- a/arch/x86/kernel/asm-offsets_32.c
+++ b/arch/x86/kernel/asm-offsets_32.c
@@ -11,7 +11,7 @@
11#include <linux/suspend.h> 11#include <linux/suspend.h>
12#include <linux/kbuild.h> 12#include <linux/kbuild.h>
13#include <asm/ucontext.h> 13#include <asm/ucontext.h>
14#include "sigframe.h" 14#include <asm/sigframe.h>
15#include <asm/pgtable.h> 15#include <asm/pgtable.h>
16#include <asm/fixmap.h> 16#include <asm/fixmap.h>
17#include <asm/processor.h> 17#include <asm/processor.h>
diff --git a/arch/x86/kernel/asm-offsets_64.c b/arch/x86/kernel/asm-offsets_64.c
index 7fcf63d22f8b..1d41d3f1edbc 100644
--- a/arch/x86/kernel/asm-offsets_64.c
+++ b/arch/x86/kernel/asm-offsets_64.c
@@ -20,6 +20,8 @@
20 20
21#include <xen/interface/xen.h> 21#include <xen/interface/xen.h>
22 22
23#include <asm/sigframe.h>
24
23#define __NO_STUBS 1 25#define __NO_STUBS 1
24#undef __SYSCALL 26#undef __SYSCALL
25#undef _ASM_X86_UNISTD_64_H 27#undef _ASM_X86_UNISTD_64_H
@@ -87,7 +89,7 @@ int main(void)
87 BLANK(); 89 BLANK();
88#undef ENTRY 90#undef ENTRY
89 DEFINE(IA32_RT_SIGFRAME_sigcontext, 91 DEFINE(IA32_RT_SIGFRAME_sigcontext,
90 offsetof (struct rt_sigframe32, uc.uc_mcontext)); 92 offsetof (struct rt_sigframe_ia32, uc.uc_mcontext));
91 BLANK(); 93 BLANK();
92#endif 94#endif
93 DEFINE(pbe_address, offsetof(struct pbe, address)); 95 DEFINE(pbe_address, offsetof(struct pbe, address));
diff --git a/arch/x86/kernel/bios_uv.c b/arch/x86/kernel/bios_uv.c
index f0dfe6f17e7e..2a0a2a3cac26 100644
--- a/arch/x86/kernel/bios_uv.c
+++ b/arch/x86/kernel/bios_uv.c
@@ -69,10 +69,10 @@ s64 uv_bios_call_reentrant(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3,
69 69
70long sn_partition_id; 70long sn_partition_id;
71EXPORT_SYMBOL_GPL(sn_partition_id); 71EXPORT_SYMBOL_GPL(sn_partition_id);
72long uv_coherency_id; 72long sn_coherency_id;
73EXPORT_SYMBOL_GPL(uv_coherency_id); 73EXPORT_SYMBOL_GPL(sn_coherency_id);
74long uv_region_size; 74long sn_region_size;
75EXPORT_SYMBOL_GPL(uv_region_size); 75EXPORT_SYMBOL_GPL(sn_region_size);
76int uv_type; 76int uv_type;
77 77
78 78
@@ -100,6 +100,56 @@ s64 uv_bios_get_sn_info(int fc, int *uvtype, long *partid, long *coher,
100 return ret; 100 return ret;
101} 101}
102 102
103int
104uv_bios_mq_watchlist_alloc(int blade, unsigned long addr, unsigned int mq_size,
105 unsigned long *intr_mmr_offset)
106{
107 union uv_watchlist_u size_blade;
108 u64 watchlist;
109 s64 ret;
110
111 size_blade.size = mq_size;
112 size_blade.blade = blade;
113
114 /*
115 * bios returns watchlist number or negative error number.
116 */
117 ret = (int)uv_bios_call_irqsave(UV_BIOS_WATCHLIST_ALLOC, addr,
118 size_blade.val, (u64)intr_mmr_offset,
119 (u64)&watchlist, 0);
120 if (ret < BIOS_STATUS_SUCCESS)
121 return ret;
122
123 return watchlist;
124}
125EXPORT_SYMBOL_GPL(uv_bios_mq_watchlist_alloc);
126
127int
128uv_bios_mq_watchlist_free(int blade, int watchlist_num)
129{
130 return (int)uv_bios_call_irqsave(UV_BIOS_WATCHLIST_FREE,
131 blade, watchlist_num, 0, 0, 0);
132}
133EXPORT_SYMBOL_GPL(uv_bios_mq_watchlist_free);
134
135s64
136uv_bios_change_memprotect(u64 paddr, u64 len, enum uv_memprotect perms)
137{
138 return uv_bios_call_irqsave(UV_BIOS_MEMPROTECT, paddr, len,
139 perms, 0, 0);
140}
141EXPORT_SYMBOL_GPL(uv_bios_change_memprotect);
142
143s64
144uv_bios_reserved_page_pa(u64 buf, u64 *cookie, u64 *addr, u64 *len)
145{
146 s64 ret;
147
148 ret = uv_bios_call_irqsave(UV_BIOS_GET_PARTITION_ADDR, (u64)cookie,
149 (u64)addr, buf, (u64)len, 0);
150 return ret;
151}
152EXPORT_SYMBOL_GPL(uv_bios_reserved_page_pa);
103 153
104s64 uv_bios_freq_base(u64 clock_type, u64 *ticks_per_second) 154s64 uv_bios_freq_base(u64 clock_type, u64 *ticks_per_second)
105{ 155{
diff --git a/arch/x86/kernel/check.c b/arch/x86/kernel/check.c
new file mode 100644
index 000000000000..2ac0ab71412a
--- /dev/null
+++ b/arch/x86/kernel/check.c
@@ -0,0 +1,161 @@
1#include <linux/module.h>
2#include <linux/sched.h>
3#include <linux/kthread.h>
4#include <linux/workqueue.h>
5#include <asm/e820.h>
6#include <asm/proto.h>
7
8/*
9 * Some BIOSes seem to corrupt the low 64k of memory during events
10 * like suspend/resume and unplugging an HDMI cable. Reserve all
11 * remaining free memory in that area and fill it with a distinct
12 * pattern.
13 */
14#define MAX_SCAN_AREAS 8
15
16static int __read_mostly memory_corruption_check = -1;
17
18static unsigned __read_mostly corruption_check_size = 64*1024;
19static unsigned __read_mostly corruption_check_period = 60; /* seconds */
20
21static struct e820entry scan_areas[MAX_SCAN_AREAS];
22static int num_scan_areas;
23
24
25static __init int set_corruption_check(char *arg)
26{
27 char *end;
28
29 memory_corruption_check = simple_strtol(arg, &end, 10);
30
31 return (*end == 0) ? 0 : -EINVAL;
32}
33early_param("memory_corruption_check", set_corruption_check);
34
35static __init int set_corruption_check_period(char *arg)
36{
37 char *end;
38
39 corruption_check_period = simple_strtoul(arg, &end, 10);
40
41 return (*end == 0) ? 0 : -EINVAL;
42}
43early_param("memory_corruption_check_period", set_corruption_check_period);
44
45static __init int set_corruption_check_size(char *arg)
46{
47 char *end;
48 unsigned size;
49
50 size = memparse(arg, &end);
51
52 if (*end == '\0')
53 corruption_check_size = size;
54
55 return (size == corruption_check_size) ? 0 : -EINVAL;
56}
57early_param("memory_corruption_check_size", set_corruption_check_size);
58
59
60void __init setup_bios_corruption_check(void)
61{
62 u64 addr = PAGE_SIZE; /* assume first page is reserved anyway */
63
64 if (memory_corruption_check == -1) {
65 memory_corruption_check =
66#ifdef CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
67 1
68#else
69 0
70#endif
71 ;
72 }
73
74 if (corruption_check_size == 0)
75 memory_corruption_check = 0;
76
77 if (!memory_corruption_check)
78 return;
79
80 corruption_check_size = round_up(corruption_check_size, PAGE_SIZE);
81
82 while (addr < corruption_check_size && num_scan_areas < MAX_SCAN_AREAS) {
83 u64 size;
84 addr = find_e820_area_size(addr, &size, PAGE_SIZE);
85
86 if (addr == 0)
87 break;
88
89 if ((addr + size) > corruption_check_size)
90 size = corruption_check_size - addr;
91
92 if (size == 0)
93 break;
94
95 e820_update_range(addr, size, E820_RAM, E820_RESERVED);
96 scan_areas[num_scan_areas].addr = addr;
97 scan_areas[num_scan_areas].size = size;
98 num_scan_areas++;
99
100 /* Assume we've already mapped this early memory */
101 memset(__va(addr), 0, size);
102
103 addr += size;
104 }
105
106 printk(KERN_INFO "Scanning %d areas for low memory corruption\n",
107 num_scan_areas);
108 update_e820();
109}
110
111
112void check_for_bios_corruption(void)
113{
114 int i;
115 int corruption = 0;
116
117 if (!memory_corruption_check)
118 return;
119
120 for (i = 0; i < num_scan_areas; i++) {
121 unsigned long *addr = __va(scan_areas[i].addr);
122 unsigned long size = scan_areas[i].size;
123
124 for (; size; addr++, size -= sizeof(unsigned long)) {
125 if (!*addr)
126 continue;
127 printk(KERN_ERR "Corrupted low memory at %p (%lx phys) = %08lx\n",
128 addr, __pa(addr), *addr);
129 corruption = 1;
130 *addr = 0;
131 }
132 }
133
134 WARN_ONCE(corruption, KERN_ERR "Memory corruption detected in low memory\n");
135}
136
137static void check_corruption(struct work_struct *dummy);
138static DECLARE_DELAYED_WORK(bios_check_work, check_corruption);
139
140static void check_corruption(struct work_struct *dummy)
141{
142 check_for_bios_corruption();
143 schedule_delayed_work(&bios_check_work,
144 round_jiffies_relative(corruption_check_period*HZ));
145}
146
147static int start_periodic_check_for_corruption(void)
148{
149 if (!memory_corruption_check || corruption_check_period == 0)
150 return 0;
151
152 printk(KERN_INFO "Scanning for low memory corruption every %d seconds\n",
153 corruption_check_period);
154
155 /* First time we run the checks right away */
156 schedule_delayed_work(&bios_check_work, 0);
157 return 0;
158}
159
160module_init(start_periodic_check_for_corruption);
161
diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
index 82ec6075c057..a5c04e88777e 100644
--- a/arch/x86/kernel/cpu/Makefile
+++ b/arch/x86/kernel/cpu/Makefile
@@ -4,6 +4,7 @@
4 4
5obj-y := intel_cacheinfo.o addon_cpuid_features.o 5obj-y := intel_cacheinfo.o addon_cpuid_features.o
6obj-y += proc.o capflags.o powerflags.o common.o 6obj-y += proc.o capflags.o powerflags.o common.o
7obj-y += vmware.o hypervisor.o
7 8
8obj-$(CONFIG_X86_32) += bugs.o cmpxchg.o 9obj-$(CONFIG_X86_32) += bugs.o cmpxchg.o
9obj-$(CONFIG_X86_64) += bugs_64.o 10obj-$(CONFIG_X86_64) += bugs_64.o
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index aba49c782fd6..42e0853030cb 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -36,6 +36,7 @@
36#include <asm/proto.h> 36#include <asm/proto.h>
37#include <asm/sections.h> 37#include <asm/sections.h>
38#include <asm/setup.h> 38#include <asm/setup.h>
39#include <asm/hypervisor.h>
39 40
40#include "cpu.h" 41#include "cpu.h"
41 42
@@ -703,6 +704,7 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
703 detect_ht(c); 704 detect_ht(c);
704#endif 705#endif
705 706
707 init_hypervisor(c);
706 /* 708 /*
707 * On SMP, boot_cpu_data holds the common feature set between 709 * On SMP, boot_cpu_data holds the common feature set between
708 * all CPUs; so make sure that we indicate which features are 710 * all CPUs; so make sure that we indicate which features are
diff --git a/arch/x86/kernel/cpu/hypervisor.c b/arch/x86/kernel/cpu/hypervisor.c
new file mode 100644
index 000000000000..fb5b86af0b01
--- /dev/null
+++ b/arch/x86/kernel/cpu/hypervisor.c
@@ -0,0 +1,58 @@
1/*
2 * Common hypervisor code
3 *
4 * Copyright (C) 2008, VMware, Inc.
5 * Author : Alok N Kataria <akataria@vmware.com>
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 as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
15 * NON INFRINGEMENT. See the GNU General Public License for more
16 * details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21 *
22 */
23
24#include <asm/processor.h>
25#include <asm/vmware.h>
26#include <asm/hypervisor.h>
27
28static inline void __cpuinit
29detect_hypervisor_vendor(struct cpuinfo_x86 *c)
30{
31 if (vmware_platform()) {
32 c->x86_hyper_vendor = X86_HYPER_VENDOR_VMWARE;
33 } else {
34 c->x86_hyper_vendor = X86_HYPER_VENDOR_NONE;
35 }
36}
37
38unsigned long get_hypervisor_tsc_freq(void)
39{
40 if (boot_cpu_data.x86_hyper_vendor == X86_HYPER_VENDOR_VMWARE)
41 return vmware_get_tsc_khz();
42 return 0;
43}
44
45static inline void __cpuinit
46hypervisor_set_feature_bits(struct cpuinfo_x86 *c)
47{
48 if (boot_cpu_data.x86_hyper_vendor == X86_HYPER_VENDOR_VMWARE) {
49 vmware_set_feature_bits(c);
50 return;
51 }
52}
53
54void __cpuinit init_hypervisor(struct cpuinfo_x86 *c)
55{
56 detect_hypervisor_vendor(c);
57 hypervisor_set_feature_bits(c);
58}
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index cce0b6118d55..816f27f289b1 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -307,12 +307,11 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
307 set_cpu_cap(c, X86_FEATURE_P4); 307 set_cpu_cap(c, X86_FEATURE_P4);
308 if (c->x86 == 6) 308 if (c->x86 == 6)
309 set_cpu_cap(c, X86_FEATURE_P3); 309 set_cpu_cap(c, X86_FEATURE_P3);
310#endif
310 311
311 if (cpu_has_bts) 312 if (cpu_has_bts)
312 ptrace_bts_init_intel(c); 313 ptrace_bts_init_intel(c);
313 314
314#endif
315
316 detect_extended_topology(c); 315 detect_extended_topology(c);
317 if (!cpu_has(c, X86_FEATURE_XTOPOLOGY)) { 316 if (!cpu_has(c, X86_FEATURE_XTOPOLOGY)) {
318 /* 317 /*
diff --git a/arch/x86/kernel/cpu/mcheck/mce_64.c b/arch/x86/kernel/cpu/mcheck/mce_64.c
index 4b031a4ac856..1c838032fd37 100644
--- a/arch/x86/kernel/cpu/mcheck/mce_64.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_64.c
@@ -510,12 +510,9 @@ static void __cpuinit mce_cpu_features(struct cpuinfo_x86 *c)
510 */ 510 */
511void __cpuinit mcheck_init(struct cpuinfo_x86 *c) 511void __cpuinit mcheck_init(struct cpuinfo_x86 *c)
512{ 512{
513 static cpumask_t mce_cpus = CPU_MASK_NONE;
514
515 mce_cpu_quirks(c); 513 mce_cpu_quirks(c);
516 514
517 if (mce_dont_init || 515 if (mce_dont_init ||
518 cpu_test_and_set(smp_processor_id(), mce_cpus) ||
519 !mce_available(c)) 516 !mce_available(c))
520 return; 517 return;
521 518
diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
index c78c04821ea1..1159e269e596 100644
--- a/arch/x86/kernel/cpu/mtrr/main.c
+++ b/arch/x86/kernel/cpu/mtrr/main.c
@@ -803,6 +803,7 @@ x86_get_mtrr_mem_range(struct res_range *range, int nr_range,
803} 803}
804 804
805static struct res_range __initdata range[RANGE_NUM]; 805static struct res_range __initdata range[RANGE_NUM];
806static int __initdata nr_range;
806 807
807#ifdef CONFIG_MTRR_SANITIZER 808#ifdef CONFIG_MTRR_SANITIZER
808 809
@@ -1206,39 +1207,43 @@ struct mtrr_cleanup_result {
1206#define PSHIFT (PAGE_SHIFT - 10) 1207#define PSHIFT (PAGE_SHIFT - 10)
1207 1208
1208static struct mtrr_cleanup_result __initdata result[NUM_RESULT]; 1209static struct mtrr_cleanup_result __initdata result[NUM_RESULT];
1209static struct res_range __initdata range_new[RANGE_NUM];
1210static unsigned long __initdata min_loss_pfn[RANGE_NUM]; 1210static unsigned long __initdata min_loss_pfn[RANGE_NUM];
1211 1211
1212static int __init mtrr_cleanup(unsigned address_bits) 1212static void __init print_out_mtrr_range_state(void)
1213{ 1213{
1214 unsigned long extra_remove_base, extra_remove_size;
1215 unsigned long base, size, def, dummy;
1216 mtrr_type type;
1217 int nr_range, nr_range_new;
1218 u64 chunk_size, gran_size;
1219 unsigned long range_sums, range_sums_new;
1220 int index_good;
1221 int num_reg_good;
1222 int i; 1214 int i;
1215 char start_factor = 'K', size_factor = 'K';
1216 unsigned long start_base, size_base;
1217 mtrr_type type;
1223 1218
1224 /* extra one for all 0 */ 1219 for (i = 0; i < num_var_ranges; i++) {
1225 int num[MTRR_NUM_TYPES + 1];
1226 1220
1227 if (!is_cpu(INTEL) || enable_mtrr_cleanup < 1) 1221 size_base = range_state[i].size_pfn << (PAGE_SHIFT - 10);
1228 return 0; 1222 if (!size_base)
1229 rdmsr(MTRRdefType_MSR, def, dummy); 1223 continue;
1230 def &= 0xff;
1231 if (def != MTRR_TYPE_UNCACHABLE)
1232 return 0;
1233 1224
1234 /* get it and store it aside */ 1225 size_base = to_size_factor(size_base, &size_factor),
1235 memset(range_state, 0, sizeof(range_state)); 1226 start_base = range_state[i].base_pfn << (PAGE_SHIFT - 10);
1236 for (i = 0; i < num_var_ranges; i++) { 1227 start_base = to_size_factor(start_base, &start_factor),
1237 mtrr_if->get(i, &base, &size, &type); 1228 type = range_state[i].type;
1238 range_state[i].base_pfn = base; 1229
1239 range_state[i].size_pfn = size; 1230 printk(KERN_DEBUG "reg %d, base: %ld%cB, range: %ld%cB, type %s\n",
1240 range_state[i].type = type; 1231 i, start_base, start_factor,
1232 size_base, size_factor,
1233 (type == MTRR_TYPE_UNCACHABLE) ? "UC" :
1234 ((type == MTRR_TYPE_WRPROT) ? "WP" :
1235 ((type == MTRR_TYPE_WRBACK) ? "WB" : "Other"))
1236 );
1241 } 1237 }
1238}
1239
1240static int __init mtrr_need_cleanup(void)
1241{
1242 int i;
1243 mtrr_type type;
1244 unsigned long size;
1245 /* extra one for all 0 */
1246 int num[MTRR_NUM_TYPES + 1];
1242 1247
1243 /* check entries number */ 1248 /* check entries number */
1244 memset(num, 0, sizeof(num)); 1249 memset(num, 0, sizeof(num));
@@ -1263,29 +1268,133 @@ static int __init mtrr_cleanup(unsigned address_bits)
1263 num_var_ranges - num[MTRR_NUM_TYPES]) 1268 num_var_ranges - num[MTRR_NUM_TYPES])
1264 return 0; 1269 return 0;
1265 1270
1266 /* print original var MTRRs at first, for debugging: */ 1271 return 1;
1267 printk(KERN_DEBUG "original variable MTRRs\n"); 1272}
1268 for (i = 0; i < num_var_ranges; i++) {
1269 char start_factor = 'K', size_factor = 'K';
1270 unsigned long start_base, size_base;
1271 1273
1272 size_base = range_state[i].size_pfn << (PAGE_SHIFT - 10); 1274static unsigned long __initdata range_sums;
1273 if (!size_base) 1275static void __init mtrr_calc_range_state(u64 chunk_size, u64 gran_size,
1274 continue; 1276 unsigned long extra_remove_base,
1277 unsigned long extra_remove_size,
1278 int i)
1279{
1280 int num_reg;
1281 static struct res_range range_new[RANGE_NUM];
1282 static int nr_range_new;
1283 unsigned long range_sums_new;
1284
1285 /* convert ranges to var ranges state */
1286 num_reg = x86_setup_var_mtrrs(range, nr_range,
1287 chunk_size, gran_size);
1288
1289 /* we got new setting in range_state, check it */
1290 memset(range_new, 0, sizeof(range_new));
1291 nr_range_new = x86_get_mtrr_mem_range(range_new, 0,
1292 extra_remove_base, extra_remove_size);
1293 range_sums_new = sum_ranges(range_new, nr_range_new);
1294
1295 result[i].chunk_sizek = chunk_size >> 10;
1296 result[i].gran_sizek = gran_size >> 10;
1297 result[i].num_reg = num_reg;
1298 if (range_sums < range_sums_new) {
1299 result[i].lose_cover_sizek =
1300 (range_sums_new - range_sums) << PSHIFT;
1301 result[i].bad = 1;
1302 } else
1303 result[i].lose_cover_sizek =
1304 (range_sums - range_sums_new) << PSHIFT;
1275 1305
1276 size_base = to_size_factor(size_base, &size_factor), 1306 /* double check it */
1277 start_base = range_state[i].base_pfn << (PAGE_SHIFT - 10); 1307 if (!result[i].bad && !result[i].lose_cover_sizek) {
1278 start_base = to_size_factor(start_base, &start_factor), 1308 if (nr_range_new != nr_range ||
1279 type = range_state[i].type; 1309 memcmp(range, range_new, sizeof(range)))
1310 result[i].bad = 1;
1311 }
1280 1312
1281 printk(KERN_DEBUG "reg %d, base: %ld%cB, range: %ld%cB, type %s\n", 1313 if (!result[i].bad && (range_sums - range_sums_new <
1282 i, start_base, start_factor, 1314 min_loss_pfn[num_reg])) {
1283 size_base, size_factor, 1315 min_loss_pfn[num_reg] =
1284 (type == MTRR_TYPE_UNCACHABLE) ? "UC" : 1316 range_sums - range_sums_new;
1285 ((type == MTRR_TYPE_WRPROT) ? "WP" :
1286 ((type == MTRR_TYPE_WRBACK) ? "WB" : "Other"))
1287 );
1288 } 1317 }
1318}
1319
1320static void __init mtrr_print_out_one_result(int i)
1321{
1322 char gran_factor, chunk_factor, lose_factor;
1323 unsigned long gran_base, chunk_base, lose_base;
1324
1325 gran_base = to_size_factor(result[i].gran_sizek, &gran_factor),
1326 chunk_base = to_size_factor(result[i].chunk_sizek, &chunk_factor),
1327 lose_base = to_size_factor(result[i].lose_cover_sizek, &lose_factor),
1328 printk(KERN_INFO "%sgran_size: %ld%c \tchunk_size: %ld%c \t",
1329 result[i].bad ? "*BAD*" : " ",
1330 gran_base, gran_factor, chunk_base, chunk_factor);
1331 printk(KERN_CONT "num_reg: %d \tlose cover RAM: %s%ld%c\n",
1332 result[i].num_reg, result[i].bad ? "-" : "",
1333 lose_base, lose_factor);
1334}
1335
1336static int __init mtrr_search_optimal_index(void)
1337{
1338 int i;
1339 int num_reg_good;
1340 int index_good;
1341
1342 if (nr_mtrr_spare_reg >= num_var_ranges)
1343 nr_mtrr_spare_reg = num_var_ranges - 1;
1344 num_reg_good = -1;
1345 for (i = num_var_ranges - nr_mtrr_spare_reg; i > 0; i--) {
1346 if (!min_loss_pfn[i])
1347 num_reg_good = i;
1348 }
1349
1350 index_good = -1;
1351 if (num_reg_good != -1) {
1352 for (i = 0; i < NUM_RESULT; i++) {
1353 if (!result[i].bad &&
1354 result[i].num_reg == num_reg_good &&
1355 !result[i].lose_cover_sizek) {
1356 index_good = i;
1357 break;
1358 }
1359 }
1360 }
1361
1362 return index_good;
1363}
1364
1365
1366static int __init mtrr_cleanup(unsigned address_bits)
1367{
1368 unsigned long extra_remove_base, extra_remove_size;
1369 unsigned long base, size, def, dummy;
1370 mtrr_type type;
1371 u64 chunk_size, gran_size;
1372 int index_good;
1373 int i;
1374
1375 if (!is_cpu(INTEL) || enable_mtrr_cleanup < 1)
1376 return 0;
1377 rdmsr(MTRRdefType_MSR, def, dummy);
1378 def &= 0xff;
1379 if (def != MTRR_TYPE_UNCACHABLE)
1380 return 0;
1381
1382 /* get it and store it aside */
1383 memset(range_state, 0, sizeof(range_state));
1384 for (i = 0; i < num_var_ranges; i++) {
1385 mtrr_if->get(i, &base, &size, &type);
1386 range_state[i].base_pfn = base;
1387 range_state[i].size_pfn = size;
1388 range_state[i].type = type;
1389 }
1390
1391 /* check if we need handle it and can handle it */
1392 if (!mtrr_need_cleanup())
1393 return 0;
1394
1395 /* print original var MTRRs at first, for debugging: */
1396 printk(KERN_DEBUG "original variable MTRRs\n");
1397 print_out_mtrr_range_state();
1289 1398
1290 memset(range, 0, sizeof(range)); 1399 memset(range, 0, sizeof(range));
1291 extra_remove_size = 0; 1400 extra_remove_size = 0;
@@ -1309,176 +1418,64 @@ static int __init mtrr_cleanup(unsigned address_bits)
1309 range_sums >> (20 - PAGE_SHIFT)); 1418 range_sums >> (20 - PAGE_SHIFT));
1310 1419
1311 if (mtrr_chunk_size && mtrr_gran_size) { 1420 if (mtrr_chunk_size && mtrr_gran_size) {
1312 int num_reg; 1421 i = 0;
1313 char gran_factor, chunk_factor, lose_factor; 1422 mtrr_calc_range_state(mtrr_chunk_size, mtrr_gran_size,
1314 unsigned long gran_base, chunk_base, lose_base; 1423 extra_remove_base, extra_remove_size, i);
1315
1316 debug_print++;
1317 /* convert ranges to var ranges state */
1318 num_reg = x86_setup_var_mtrrs(range, nr_range, mtrr_chunk_size,
1319 mtrr_gran_size);
1320 1424
1321 /* we got new setting in range_state, check it */ 1425 mtrr_print_out_one_result(i);
1322 memset(range_new, 0, sizeof(range_new));
1323 nr_range_new = x86_get_mtrr_mem_range(range_new, 0,
1324 extra_remove_base,
1325 extra_remove_size);
1326 range_sums_new = sum_ranges(range_new, nr_range_new);
1327 1426
1328 i = 0;
1329 result[i].chunk_sizek = mtrr_chunk_size >> 10;
1330 result[i].gran_sizek = mtrr_gran_size >> 10;
1331 result[i].num_reg = num_reg;
1332 if (range_sums < range_sums_new) {
1333 result[i].lose_cover_sizek =
1334 (range_sums_new - range_sums) << PSHIFT;
1335 result[i].bad = 1;
1336 } else
1337 result[i].lose_cover_sizek =
1338 (range_sums - range_sums_new) << PSHIFT;
1339
1340 gran_base = to_size_factor(result[i].gran_sizek, &gran_factor),
1341 chunk_base = to_size_factor(result[i].chunk_sizek, &chunk_factor),
1342 lose_base = to_size_factor(result[i].lose_cover_sizek, &lose_factor),
1343 printk(KERN_INFO "%sgran_size: %ld%c \tchunk_size: %ld%c \t",
1344 result[i].bad?"*BAD*":" ",
1345 gran_base, gran_factor, chunk_base, chunk_factor);
1346 printk(KERN_CONT "num_reg: %d \tlose cover RAM: %s%ld%c\n",
1347 result[i].num_reg, result[i].bad?"-":"",
1348 lose_base, lose_factor);
1349 if (!result[i].bad) { 1427 if (!result[i].bad) {
1350 set_var_mtrr_all(address_bits); 1428 set_var_mtrr_all(address_bits);
1351 return 1; 1429 return 1;
1352 } 1430 }
1353 printk(KERN_INFO "invalid mtrr_gran_size or mtrr_chunk_size, " 1431 printk(KERN_INFO "invalid mtrr_gran_size or mtrr_chunk_size, "
1354 "will find optimal one\n"); 1432 "will find optimal one\n");
1355 debug_print--;
1356 memset(result, 0, sizeof(result[0]));
1357 } 1433 }
1358 1434
1359 i = 0; 1435 i = 0;
1360 memset(min_loss_pfn, 0xff, sizeof(min_loss_pfn)); 1436 memset(min_loss_pfn, 0xff, sizeof(min_loss_pfn));
1361 memset(result, 0, sizeof(result)); 1437 memset(result, 0, sizeof(result));
1362 for (gran_size = (1ULL<<16); gran_size < (1ULL<<32); gran_size <<= 1) { 1438 for (gran_size = (1ULL<<16); gran_size < (1ULL<<32); gran_size <<= 1) {
1363 char gran_factor;
1364 unsigned long gran_base;
1365
1366 if (debug_print)
1367 gran_base = to_size_factor(gran_size >> 10, &gran_factor);
1368 1439
1369 for (chunk_size = gran_size; chunk_size < (1ULL<<32); 1440 for (chunk_size = gran_size; chunk_size < (1ULL<<32);
1370 chunk_size <<= 1) { 1441 chunk_size <<= 1) {
1371 int num_reg;
1372 1442
1373 if (debug_print) {
1374 char chunk_factor;
1375 unsigned long chunk_base;
1376
1377 chunk_base = to_size_factor(chunk_size>>10, &chunk_factor),
1378 printk(KERN_INFO "\n");
1379 printk(KERN_INFO "gran_size: %ld%c chunk_size: %ld%c \n",
1380 gran_base, gran_factor, chunk_base, chunk_factor);
1381 }
1382 if (i >= NUM_RESULT) 1443 if (i >= NUM_RESULT)
1383 continue; 1444 continue;
1384 1445
1385 /* convert ranges to var ranges state */ 1446 mtrr_calc_range_state(chunk_size, gran_size,
1386 num_reg = x86_setup_var_mtrrs(range, nr_range, 1447 extra_remove_base, extra_remove_size, i);
1387 chunk_size, gran_size); 1448 if (debug_print) {
1388 1449 mtrr_print_out_one_result(i);
1389 /* we got new setting in range_state, check it */ 1450 printk(KERN_INFO "\n");
1390 memset(range_new, 0, sizeof(range_new));
1391 nr_range_new = x86_get_mtrr_mem_range(range_new, 0,
1392 extra_remove_base, extra_remove_size);
1393 range_sums_new = sum_ranges(range_new, nr_range_new);
1394
1395 result[i].chunk_sizek = chunk_size >> 10;
1396 result[i].gran_sizek = gran_size >> 10;
1397 result[i].num_reg = num_reg;
1398 if (range_sums < range_sums_new) {
1399 result[i].lose_cover_sizek =
1400 (range_sums_new - range_sums) << PSHIFT;
1401 result[i].bad = 1;
1402 } else
1403 result[i].lose_cover_sizek =
1404 (range_sums - range_sums_new) << PSHIFT;
1405
1406 /* double check it */
1407 if (!result[i].bad && !result[i].lose_cover_sizek) {
1408 if (nr_range_new != nr_range ||
1409 memcmp(range, range_new, sizeof(range)))
1410 result[i].bad = 1;
1411 } 1451 }
1412 1452
1413 if (!result[i].bad && (range_sums - range_sums_new <
1414 min_loss_pfn[num_reg])) {
1415 min_loss_pfn[num_reg] =
1416 range_sums - range_sums_new;
1417 }
1418 i++; 1453 i++;
1419 } 1454 }
1420 } 1455 }
1421 1456
1422 /* print out all */
1423 for (i = 0; i < NUM_RESULT; i++) {
1424 char gran_factor, chunk_factor, lose_factor;
1425 unsigned long gran_base, chunk_base, lose_base;
1426
1427 gran_base = to_size_factor(result[i].gran_sizek, &gran_factor),
1428 chunk_base = to_size_factor(result[i].chunk_sizek, &chunk_factor),
1429 lose_base = to_size_factor(result[i].lose_cover_sizek, &lose_factor),
1430 printk(KERN_INFO "%sgran_size: %ld%c \tchunk_size: %ld%c \t",
1431 result[i].bad?"*BAD*":" ",
1432 gran_base, gran_factor, chunk_base, chunk_factor);
1433 printk(KERN_CONT "num_reg: %d \tlose cover RAM: %s%ld%c\n",
1434 result[i].num_reg, result[i].bad?"-":"",
1435 lose_base, lose_factor);
1436 }
1437
1438 /* try to find the optimal index */ 1457 /* try to find the optimal index */
1439 if (nr_mtrr_spare_reg >= num_var_ranges) 1458 index_good = mtrr_search_optimal_index();
1440 nr_mtrr_spare_reg = num_var_ranges - 1;
1441 num_reg_good = -1;
1442 for (i = num_var_ranges - nr_mtrr_spare_reg; i > 0; i--) {
1443 if (!min_loss_pfn[i])
1444 num_reg_good = i;
1445 }
1446
1447 index_good = -1;
1448 if (num_reg_good != -1) {
1449 for (i = 0; i < NUM_RESULT; i++) {
1450 if (!result[i].bad &&
1451 result[i].num_reg == num_reg_good &&
1452 !result[i].lose_cover_sizek) {
1453 index_good = i;
1454 break;
1455 }
1456 }
1457 }
1458 1459
1459 if (index_good != -1) { 1460 if (index_good != -1) {
1460 char gran_factor, chunk_factor, lose_factor;
1461 unsigned long gran_base, chunk_base, lose_base;
1462
1463 printk(KERN_INFO "Found optimal setting for mtrr clean up\n"); 1461 printk(KERN_INFO "Found optimal setting for mtrr clean up\n");
1464 i = index_good; 1462 i = index_good;
1465 gran_base = to_size_factor(result[i].gran_sizek, &gran_factor), 1463 mtrr_print_out_one_result(i);
1466 chunk_base = to_size_factor(result[i].chunk_sizek, &chunk_factor), 1464
1467 lose_base = to_size_factor(result[i].lose_cover_sizek, &lose_factor),
1468 printk(KERN_INFO "gran_size: %ld%c \tchunk_size: %ld%c \t",
1469 gran_base, gran_factor, chunk_base, chunk_factor);
1470 printk(KERN_CONT "num_reg: %d \tlose RAM: %ld%c\n",
1471 result[i].num_reg, lose_base, lose_factor);
1472 /* convert ranges to var ranges state */ 1465 /* convert ranges to var ranges state */
1473 chunk_size = result[i].chunk_sizek; 1466 chunk_size = result[i].chunk_sizek;
1474 chunk_size <<= 10; 1467 chunk_size <<= 10;
1475 gran_size = result[i].gran_sizek; 1468 gran_size = result[i].gran_sizek;
1476 gran_size <<= 10; 1469 gran_size <<= 10;
1477 debug_print++;
1478 x86_setup_var_mtrrs(range, nr_range, chunk_size, gran_size); 1470 x86_setup_var_mtrrs(range, nr_range, chunk_size, gran_size);
1479 debug_print--;
1480 set_var_mtrr_all(address_bits); 1471 set_var_mtrr_all(address_bits);
1472 printk(KERN_DEBUG "New variable MTRRs\n");
1473 print_out_mtrr_range_state();
1481 return 1; 1474 return 1;
1475 } else {
1476 /* print out all */
1477 for (i = 0; i < NUM_RESULT; i++)
1478 mtrr_print_out_one_result(i);
1482 } 1479 }
1483 1480
1484 printk(KERN_INFO "mtrr_cleanup: can not find optimal value\n"); 1481 printk(KERN_INFO "mtrr_cleanup: can not find optimal value\n");
@@ -1562,7 +1559,6 @@ int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
1562{ 1559{
1563 unsigned long i, base, size, highest_pfn = 0, def, dummy; 1560 unsigned long i, base, size, highest_pfn = 0, def, dummy;
1564 mtrr_type type; 1561 mtrr_type type;
1565 int nr_range;
1566 u64 total_trim_size; 1562 u64 total_trim_size;
1567 1563
1568 /* extra one for all 0 */ 1564 /* extra one for all 0 */
diff --git a/arch/x86/kernel/cpu/vmware.c b/arch/x86/kernel/cpu/vmware.c
new file mode 100644
index 000000000000..284c399e3234
--- /dev/null
+++ b/arch/x86/kernel/cpu/vmware.c
@@ -0,0 +1,112 @@
1/*
2 * VMware Detection code.
3 *
4 * Copyright (C) 2008, VMware, Inc.
5 * Author : Alok N Kataria <akataria@vmware.com>
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 as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
15 * NON INFRINGEMENT. See the GNU General Public License for more
16 * details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21 *
22 */
23
24#include <linux/dmi.h>
25#include <asm/div64.h>
26#include <asm/vmware.h>
27
28#define CPUID_VMWARE_INFO_LEAF 0x40000000
29#define VMWARE_HYPERVISOR_MAGIC 0x564D5868
30#define VMWARE_HYPERVISOR_PORT 0x5658
31
32#define VMWARE_PORT_CMD_GETVERSION 10
33#define VMWARE_PORT_CMD_GETHZ 45
34
35#define VMWARE_PORT(cmd, eax, ebx, ecx, edx) \
36 __asm__("inl (%%dx)" : \
37 "=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) : \
38 "0"(VMWARE_HYPERVISOR_MAGIC), \
39 "1"(VMWARE_PORT_CMD_##cmd), \
40 "2"(VMWARE_HYPERVISOR_PORT), "3"(UINT_MAX) : \
41 "memory");
42
43static inline int __vmware_platform(void)
44{
45 uint32_t eax, ebx, ecx, edx;
46 VMWARE_PORT(GETVERSION, eax, ebx, ecx, edx);
47 return eax != (uint32_t)-1 && ebx == VMWARE_HYPERVISOR_MAGIC;
48}
49
50static unsigned long __vmware_get_tsc_khz(void)
51{
52 uint64_t tsc_hz;
53 uint32_t eax, ebx, ecx, edx;
54
55 VMWARE_PORT(GETHZ, eax, ebx, ecx, edx);
56
57 if (ebx == UINT_MAX)
58 return 0;
59 tsc_hz = eax | (((uint64_t)ebx) << 32);
60 do_div(tsc_hz, 1000);
61 BUG_ON(tsc_hz >> 32);
62 return tsc_hz;
63}
64
65/*
66 * While checking the dmi string infomation, just checking the product
67 * serial key should be enough, as this will always have a VMware
68 * specific string when running under VMware hypervisor.
69 */
70int vmware_platform(void)
71{
72 if (cpu_has_hypervisor) {
73 unsigned int eax, ebx, ecx, edx;
74 char hyper_vendor_id[13];
75
76 cpuid(CPUID_VMWARE_INFO_LEAF, &eax, &ebx, &ecx, &edx);
77 memcpy(hyper_vendor_id + 0, &ebx, 4);
78 memcpy(hyper_vendor_id + 4, &ecx, 4);
79 memcpy(hyper_vendor_id + 8, &edx, 4);
80 hyper_vendor_id[12] = '\0';
81 if (!strcmp(hyper_vendor_id, "VMwareVMware"))
82 return 1;
83 } else if (dmi_available && dmi_name_in_serial("VMware") &&
84 __vmware_platform())
85 return 1;
86
87 return 0;
88}
89
90unsigned long vmware_get_tsc_khz(void)
91{
92 BUG_ON(!vmware_platform());
93 return __vmware_get_tsc_khz();
94}
95
96/*
97 * VMware hypervisor takes care of exporting a reliable TSC to the guest.
98 * Still, due to timing difference when running on virtual cpus, the TSC can
99 * be marked as unstable in some cases. For example, the TSC sync check at
100 * bootup can fail due to a marginal offset between vcpus' TSCs (though the
101 * TSCs do not drift from each other). Also, the ACPI PM timer clocksource
102 * is not suitable as a watchdog when running on a hypervisor because the
103 * kernel may miss a wrap of the counter if the vcpu is descheduled for a
104 * long time. To skip these checks at runtime we set these capability bits,
105 * so that the kernel could just trust the hypervisor with providing a
106 * reliable virtual TSC that is suitable for timekeeping.
107 */
108void __cpuinit vmware_set_feature_bits(struct cpuinfo_x86 *c)
109{
110 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
111 set_cpu_cap(c, X86_FEATURE_TSC_RELIABLE);
112}
diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index 268553817909..d84a852e4cd7 100644
--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -29,34 +29,17 @@
29 29
30#include <mach_ipi.h> 30#include <mach_ipi.h>
31 31
32/* This keeps a track of which one is crashing cpu. */
33static int crashing_cpu;
34 32
35#if defined(CONFIG_SMP) && defined(CONFIG_X86_LOCAL_APIC) 33#if defined(CONFIG_SMP) && defined(CONFIG_X86_LOCAL_APIC)
36static atomic_t waiting_for_crash_ipi;
37 34
38static int crash_nmi_callback(struct notifier_block *self, 35static void kdump_nmi_callback(int cpu, struct die_args *args)
39 unsigned long val, void *data)
40{ 36{
41 struct pt_regs *regs; 37 struct pt_regs *regs;
42#ifdef CONFIG_X86_32 38#ifdef CONFIG_X86_32
43 struct pt_regs fixed_regs; 39 struct pt_regs fixed_regs;
44#endif 40#endif
45 int cpu;
46 41
47 if (val != DIE_NMI_IPI) 42 regs = args->regs;
48 return NOTIFY_OK;
49
50 regs = ((struct die_args *)data)->regs;
51 cpu = raw_smp_processor_id();
52
53 /* Don't do anything if this handler is invoked on crashing cpu.
54 * Otherwise, system will completely hang. Crashing cpu can get
55 * an NMI if system was initially booted with nmi_watchdog parameter.
56 */
57 if (cpu == crashing_cpu)
58 return NOTIFY_STOP;
59 local_irq_disable();
60 43
61#ifdef CONFIG_X86_32 44#ifdef CONFIG_X86_32
62 if (!user_mode_vm(regs)) { 45 if (!user_mode_vm(regs)) {
@@ -65,54 +48,19 @@ static int crash_nmi_callback(struct notifier_block *self,
65 } 48 }
66#endif 49#endif
67 crash_save_cpu(regs, cpu); 50 crash_save_cpu(regs, cpu);
68 disable_local_APIC();
69 atomic_dec(&waiting_for_crash_ipi);
70 /* Assume hlt works */
71 halt();
72 for (;;)
73 cpu_relax();
74
75 return 1;
76}
77 51
78static void smp_send_nmi_allbutself(void) 52 disable_local_APIC();
79{
80 cpumask_t mask = cpu_online_map;
81 cpu_clear(safe_smp_processor_id(), mask);
82 if (!cpus_empty(mask))
83 send_IPI_mask(mask, NMI_VECTOR);
84} 53}
85 54
86static struct notifier_block crash_nmi_nb = { 55static void kdump_nmi_shootdown_cpus(void)
87 .notifier_call = crash_nmi_callback,
88};
89
90static void nmi_shootdown_cpus(void)
91{ 56{
92 unsigned long msecs; 57 nmi_shootdown_cpus(kdump_nmi_callback);
93
94 atomic_set(&waiting_for_crash_ipi, num_online_cpus() - 1);
95 /* Would it be better to replace the trap vector here? */
96 if (register_die_notifier(&crash_nmi_nb))
97 return; /* return what? */
98 /* Ensure the new callback function is set before sending
99 * out the NMI
100 */
101 wmb();
102 58
103 smp_send_nmi_allbutself();
104
105 msecs = 1000; /* Wait at most a second for the other cpus to stop */
106 while ((atomic_read(&waiting_for_crash_ipi) > 0) && msecs) {
107 mdelay(1);
108 msecs--;
109 }
110
111 /* Leave the nmi callback set */
112 disable_local_APIC(); 59 disable_local_APIC();
113} 60}
61
114#else 62#else
115static void nmi_shootdown_cpus(void) 63static void kdump_nmi_shootdown_cpus(void)
116{ 64{
117 /* There are no cpus to shootdown */ 65 /* There are no cpus to shootdown */
118} 66}
@@ -131,9 +79,7 @@ void native_machine_crash_shutdown(struct pt_regs *regs)
131 /* The kernel is broken so disable interrupts */ 79 /* The kernel is broken so disable interrupts */
132 local_irq_disable(); 80 local_irq_disable();
133 81
134 /* Make a note of crashing cpu. Will be used in NMI callback.*/ 82 kdump_nmi_shootdown_cpus();
135 crashing_cpu = safe_smp_processor_id();
136 nmi_shootdown_cpus();
137 lapic_shutdown(); 83 lapic_shutdown();
138#if defined(CONFIG_X86_IO_APIC) 84#if defined(CONFIG_X86_IO_APIC)
139 disable_IO_APIC(); 85 disable_IO_APIC();
diff --git a/arch/x86/kernel/ds.c b/arch/x86/kernel/ds.c
index a2d1176c38ee..d6938d9351cf 100644
--- a/arch/x86/kernel/ds.c
+++ b/arch/x86/kernel/ds.c
@@ -847,17 +847,16 @@ void __cpuinit ds_init_intel(struct cpuinfo_x86 *c)
847 switch (c->x86) { 847 switch (c->x86) {
848 case 0x6: 848 case 0x6:
849 switch (c->x86_model) { 849 switch (c->x86_model) {
850 case 0 ... 0xC:
851 /* sorry, don't know about them */
852 break;
850 case 0xD: 853 case 0xD:
851 case 0xE: /* Pentium M */ 854 case 0xE: /* Pentium M */
852 ds_configure(&ds_cfg_var); 855 ds_configure(&ds_cfg_var);
853 break; 856 break;
854 case 0xF: /* Core2 */ 857 default: /* Core2, Atom, ... */
855 case 0x1C: /* Atom */
856 ds_configure(&ds_cfg_64); 858 ds_configure(&ds_cfg_64);
857 break; 859 break;
858 default:
859 /* sorry, don't know about them */
860 break;
861 } 860 }
862 break; 861 break;
863 case 0xF: 862 case 0xF:
diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c
new file mode 100644
index 000000000000..5962176dfabb
--- /dev/null
+++ b/arch/x86/kernel/dumpstack.c
@@ -0,0 +1,319 @@
1/*
2 * Copyright (C) 1991, 1992 Linus Torvalds
3 * Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs
4 */
5#include <linux/kallsyms.h>
6#include <linux/kprobes.h>
7#include <linux/uaccess.h>
8#include <linux/utsname.h>
9#include <linux/hardirq.h>
10#include <linux/kdebug.h>
11#include <linux/module.h>
12#include <linux/ptrace.h>
13#include <linux/kexec.h>
14#include <linux/bug.h>
15#include <linux/nmi.h>
16#include <linux/sysfs.h>
17
18#include <asm/stacktrace.h>
19
20#include "dumpstack.h"
21
22int panic_on_unrecovered_nmi;
23unsigned int code_bytes = 64;
24int kstack_depth_to_print = 3 * STACKSLOTS_PER_LINE;
25static int die_counter;
26
27void printk_address(unsigned long address, int reliable)
28{
29 printk(" [<%p>] %s%pS\n", (void *) address,
30 reliable ? "" : "? ", (void *) address);
31}
32
33/*
34 * x86-64 can have up to three kernel stacks:
35 * process stack
36 * interrupt stack
37 * severe exception (double fault, nmi, stack fault, debug, mce) hardware stack
38 */
39
40static inline int valid_stack_ptr(struct thread_info *tinfo,
41 void *p, unsigned int size, void *end)
42{
43 void *t = tinfo;
44 if (end) {
45 if (p < end && p >= (end-THREAD_SIZE))
46 return 1;
47 else
48 return 0;
49 }
50 return p > t && p < t + THREAD_SIZE - size;
51}
52
53unsigned long
54print_context_stack(struct thread_info *tinfo,
55 unsigned long *stack, unsigned long bp,
56 const struct stacktrace_ops *ops, void *data,
57 unsigned long *end)
58{
59 struct stack_frame *frame = (struct stack_frame *)bp;
60
61 while (valid_stack_ptr(tinfo, stack, sizeof(*stack), end)) {
62 unsigned long addr;
63
64 addr = *stack;
65 if (__kernel_text_address(addr)) {
66 if ((unsigned long) stack == bp + sizeof(long)) {
67 ops->address(data, addr, 1);
68 frame = frame->next_frame;
69 bp = (unsigned long) frame;
70 } else {
71 ops->address(data, addr, bp == 0);
72 }
73 }
74 stack++;
75 }
76 return bp;
77}
78
79
80static void
81print_trace_warning_symbol(void *data, char *msg, unsigned long symbol)
82{
83 printk(data);
84 print_symbol(msg, symbol);
85 printk("\n");
86}
87
88static void print_trace_warning(void *data, char *msg)
89{
90 printk("%s%s\n", (char *)data, msg);
91}
92
93static int print_trace_stack(void *data, char *name)
94{
95 printk("%s <%s> ", (char *)data, name);
96 return 0;
97}
98
99/*
100 * Print one address/symbol entries per line.
101 */
102static void print_trace_address(void *data, unsigned long addr, int reliable)
103{
104 touch_nmi_watchdog();
105 printk(data);
106 printk_address(addr, reliable);
107}
108
109static const struct stacktrace_ops print_trace_ops = {
110 .warning = print_trace_warning,
111 .warning_symbol = print_trace_warning_symbol,
112 .stack = print_trace_stack,
113 .address = print_trace_address,
114};
115
116void
117show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
118 unsigned long *stack, unsigned long bp, char *log_lvl)
119{
120 printk("%sCall Trace:\n", log_lvl);
121 dump_trace(task, regs, stack, bp, &print_trace_ops, log_lvl);
122}
123
124void show_trace(struct task_struct *task, struct pt_regs *regs,
125 unsigned long *stack, unsigned long bp)
126{
127 show_trace_log_lvl(task, regs, stack, bp, "");
128}
129
130void show_stack(struct task_struct *task, unsigned long *sp)
131{
132 show_stack_log_lvl(task, NULL, sp, 0, "");
133}
134
135/*
136 * The architecture-independent dump_stack generator
137 */
138void dump_stack(void)
139{
140 unsigned long bp = 0;
141 unsigned long stack;
142
143#ifdef CONFIG_FRAME_POINTER
144 if (!bp)
145 get_bp(bp);
146#endif
147
148 printk("Pid: %d, comm: %.20s %s %s %.*s\n",
149 current->pid, current->comm, print_tainted(),
150 init_utsname()->release,
151 (int)strcspn(init_utsname()->version, " "),
152 init_utsname()->version);
153 show_trace(NULL, NULL, &stack, bp);
154}
155EXPORT_SYMBOL(dump_stack);
156
157static raw_spinlock_t die_lock = __RAW_SPIN_LOCK_UNLOCKED;
158static int die_owner = -1;
159static unsigned int die_nest_count;
160
161unsigned __kprobes long oops_begin(void)
162{
163 int cpu;
164 unsigned long flags;
165
166 oops_enter();
167
168 /* racy, but better than risking deadlock. */
169 raw_local_irq_save(flags);
170 cpu = smp_processor_id();
171 if (!__raw_spin_trylock(&die_lock)) {
172 if (cpu == die_owner)
173 /* nested oops. should stop eventually */;
174 else
175 __raw_spin_lock(&die_lock);
176 }
177 die_nest_count++;
178 die_owner = cpu;
179 console_verbose();
180 bust_spinlocks(1);
181 return flags;
182}
183
184void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr)
185{
186 if (regs && kexec_should_crash(current))
187 crash_kexec(regs);
188
189 bust_spinlocks(0);
190 die_owner = -1;
191 add_taint(TAINT_DIE);
192 die_nest_count--;
193 if (!die_nest_count)
194 /* Nest count reaches zero, release the lock. */
195 __raw_spin_unlock(&die_lock);
196 raw_local_irq_restore(flags);
197 oops_exit();
198
199 if (!signr)
200 return;
201 if (in_interrupt())
202 panic("Fatal exception in interrupt");
203 if (panic_on_oops)
204 panic("Fatal exception");
205 do_exit(signr);
206}
207
208int __kprobes __die(const char *str, struct pt_regs *regs, long err)
209{
210#ifdef CONFIG_X86_32
211 unsigned short ss;
212 unsigned long sp;
213#endif
214 printk(KERN_EMERG "%s: %04lx [#%d] ", str, err & 0xffff, ++die_counter);
215#ifdef CONFIG_PREEMPT
216 printk("PREEMPT ");
217#endif
218#ifdef CONFIG_SMP
219 printk("SMP ");
220#endif
221#ifdef CONFIG_DEBUG_PAGEALLOC
222 printk("DEBUG_PAGEALLOC");
223#endif
224 printk("\n");
225 sysfs_printk_last_file();
226 if (notify_die(DIE_OOPS, str, regs, err,
227 current->thread.trap_no, SIGSEGV) == NOTIFY_STOP)
228 return 1;
229
230 show_registers(regs);
231#ifdef CONFIG_X86_32
232 sp = (unsigned long) (&regs->sp);
233 savesegment(ss, ss);
234 if (user_mode(regs)) {
235 sp = regs->sp;
236 ss = regs->ss & 0xffff;
237 }
238 printk(KERN_EMERG "EIP: [<%08lx>] ", regs->ip);
239 print_symbol("%s", regs->ip);
240 printk(" SS:ESP %04x:%08lx\n", ss, sp);
241#else
242 /* Executive summary in case the oops scrolled away */
243 printk(KERN_ALERT "RIP ");
244 printk_address(regs->ip, 1);
245 printk(" RSP <%016lx>\n", regs->sp);
246#endif
247 return 0;
248}
249
250/*
251 * This is gone through when something in the kernel has done something bad
252 * and is about to be terminated:
253 */
254void die(const char *str, struct pt_regs *regs, long err)
255{
256 unsigned long flags = oops_begin();
257 int sig = SIGSEGV;
258
259 if (!user_mode_vm(regs))
260 report_bug(regs->ip, regs);
261
262 if (__die(str, regs, err))
263 sig = 0;
264 oops_end(flags, regs, sig);
265}
266
267void notrace __kprobes
268die_nmi(char *str, struct pt_regs *regs, int do_panic)
269{
270 unsigned long flags;
271
272 if (notify_die(DIE_NMIWATCHDOG, str, regs, 0, 2, SIGINT) == NOTIFY_STOP)
273 return;
274
275 /*
276 * We are in trouble anyway, lets at least try
277 * to get a message out.
278 */
279 flags = oops_begin();
280 printk(KERN_EMERG "%s", str);
281 printk(" on CPU%d, ip %08lx, registers:\n",
282 smp_processor_id(), regs->ip);
283 show_registers(regs);
284 oops_end(flags, regs, 0);
285 if (do_panic || panic_on_oops)
286 panic("Non maskable interrupt");
287 nmi_exit();
288 local_irq_enable();
289 do_exit(SIGBUS);
290}
291
292static int __init oops_setup(char *s)
293{
294 if (!s)
295 return -EINVAL;
296 if (!strcmp(s, "panic"))
297 panic_on_oops = 1;
298 return 0;
299}
300early_param("oops", oops_setup);
301
302static int __init kstack_setup(char *s)
303{
304 if (!s)
305 return -EINVAL;
306 kstack_depth_to_print = simple_strtoul(s, NULL, 0);
307 return 0;
308}
309early_param("kstack", kstack_setup);
310
311static int __init code_bytes_setup(char *s)
312{
313 code_bytes = simple_strtoul(s, NULL, 0);
314 if (code_bytes > 8192)
315 code_bytes = 8192;
316
317 return 1;
318}
319__setup("code_bytes=", code_bytes_setup);
diff --git a/arch/x86/kernel/dumpstack.h b/arch/x86/kernel/dumpstack.h
new file mode 100644
index 000000000000..3119a801c32b
--- /dev/null
+++ b/arch/x86/kernel/dumpstack.h
@@ -0,0 +1,39 @@
1/*
2 * Copyright (C) 1991, 1992 Linus Torvalds
3 * Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs
4 */
5
6#ifndef DUMPSTACK_H
7#define DUMPSTACK_H
8
9#ifdef CONFIG_X86_32
10#define STACKSLOTS_PER_LINE 8
11#define get_bp(bp) asm("movl %%ebp, %0" : "=r" (bp) :)
12#else
13#define STACKSLOTS_PER_LINE 4
14#define get_bp(bp) asm("movq %%rbp, %0" : "=r" (bp) :)
15#endif
16
17extern unsigned long
18print_context_stack(struct thread_info *tinfo,
19 unsigned long *stack, unsigned long bp,
20 const struct stacktrace_ops *ops, void *data,
21 unsigned long *end);
22
23extern void
24show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
25 unsigned long *stack, unsigned long bp, char *log_lvl);
26
27extern void
28show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
29 unsigned long *sp, unsigned long bp, char *log_lvl);
30
31extern unsigned int code_bytes;
32extern int kstack_depth_to_print;
33
34/* The form of the top of the frame on the stack */
35struct stack_frame {
36 struct stack_frame *next_frame;
37 unsigned long return_address;
38};
39#endif
diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
index b3614752197b..7b031b106ec8 100644
--- a/arch/x86/kernel/dumpstack_32.c
+++ b/arch/x86/kernel/dumpstack_32.c
@@ -17,64 +17,7 @@
17 17
18#include <asm/stacktrace.h> 18#include <asm/stacktrace.h>
19 19
20#define STACKSLOTS_PER_LINE 8 20#include "dumpstack.h"
21#define get_bp(bp) asm("movl %%ebp, %0" : "=r" (bp) :)
22
23int panic_on_unrecovered_nmi;
24int kstack_depth_to_print = 3 * STACKSLOTS_PER_LINE;
25static unsigned int code_bytes = 64;
26static int die_counter;
27
28void printk_address(unsigned long address, int reliable)
29{
30 printk(" [<%p>] %s%pS\n", (void *) address,
31 reliable ? "" : "? ", (void *) address);
32}
33
34static inline int valid_stack_ptr(struct thread_info *tinfo,
35 void *p, unsigned int size, void *end)
36{
37 void *t = tinfo;
38 if (end) {
39 if (p < end && p >= (end-THREAD_SIZE))
40 return 1;
41 else
42 return 0;
43 }
44 return p > t && p < t + THREAD_SIZE - size;
45}
46
47/* The form of the top of the frame on the stack */
48struct stack_frame {
49 struct stack_frame *next_frame;
50 unsigned long return_address;
51};
52
53static inline unsigned long
54print_context_stack(struct thread_info *tinfo,
55 unsigned long *stack, unsigned long bp,
56 const struct stacktrace_ops *ops, void *data,
57 unsigned long *end)
58{
59 struct stack_frame *frame = (struct stack_frame *)bp;
60
61 while (valid_stack_ptr(tinfo, stack, sizeof(*stack), end)) {
62 unsigned long addr;
63
64 addr = *stack;
65 if (__kernel_text_address(addr)) {
66 if ((unsigned long) stack == bp + sizeof(long)) {
67 ops->address(data, addr, 1);
68 frame = frame->next_frame;
69 bp = (unsigned long) frame;
70 } else {
71 ops->address(data, addr, bp == 0);
72 }
73 }
74 stack++;
75 }
76 return bp;
77}
78 21
79void dump_trace(struct task_struct *task, struct pt_regs *regs, 22void dump_trace(struct task_struct *task, struct pt_regs *regs,
80 unsigned long *stack, unsigned long bp, 23 unsigned long *stack, unsigned long bp,
@@ -119,57 +62,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
119} 62}
120EXPORT_SYMBOL(dump_trace); 63EXPORT_SYMBOL(dump_trace);
121 64
122static void 65void
123print_trace_warning_symbol(void *data, char *msg, unsigned long symbol)
124{
125 printk(data);
126 print_symbol(msg, symbol);
127 printk("\n");
128}
129
130static void print_trace_warning(void *data, char *msg)
131{
132 printk("%s%s\n", (char *)data, msg);
133}
134
135static int print_trace_stack(void *data, char *name)
136{
137 printk("%s <%s> ", (char *)data, name);
138 return 0;
139}
140
141/*
142 * Print one address/symbol entries per line.
143 */
144static void print_trace_address(void *data, unsigned long addr, int reliable)
145{
146 touch_nmi_watchdog();
147 printk(data);
148 printk_address(addr, reliable);
149}
150
151static const struct stacktrace_ops print_trace_ops = {
152 .warning = print_trace_warning,
153 .warning_symbol = print_trace_warning_symbol,
154 .stack = print_trace_stack,
155 .address = print_trace_address,
156};
157
158static void
159show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
160 unsigned long *stack, unsigned long bp, char *log_lvl)
161{
162 printk("%sCall Trace:\n", log_lvl);
163 dump_trace(task, regs, stack, bp, &print_trace_ops, log_lvl);
164}
165
166void show_trace(struct task_struct *task, struct pt_regs *regs,
167 unsigned long *stack, unsigned long bp)
168{
169 show_trace_log_lvl(task, regs, stack, bp, "");
170}
171
172static void
173show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs, 66show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
174 unsigned long *sp, unsigned long bp, char *log_lvl) 67 unsigned long *sp, unsigned long bp, char *log_lvl)
175{ 68{
@@ -196,33 +89,6 @@ show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
196 show_trace_log_lvl(task, regs, sp, bp, log_lvl); 89 show_trace_log_lvl(task, regs, sp, bp, log_lvl);
197} 90}
198 91
199void show_stack(struct task_struct *task, unsigned long *sp)
200{
201 show_stack_log_lvl(task, NULL, sp, 0, "");
202}
203
204/*
205 * The architecture-independent dump_stack generator
206 */
207void dump_stack(void)
208{
209 unsigned long bp = 0;
210 unsigned long stack;
211
212#ifdef CONFIG_FRAME_POINTER
213 if (!bp)
214 get_bp(bp);
215#endif
216
217 printk("Pid: %d, comm: %.20s %s %s %.*s\n",
218 current->pid, current->comm, print_tainted(),
219 init_utsname()->release,
220 (int)strcspn(init_utsname()->version, " "),
221 init_utsname()->version);
222 show_trace(NULL, NULL, &stack, bp);
223}
224
225EXPORT_SYMBOL(dump_stack);
226 92
227void show_registers(struct pt_regs *regs) 93void show_registers(struct pt_regs *regs)
228{ 94{
@@ -283,167 +149,3 @@ int is_valid_bugaddr(unsigned long ip)
283 return ud2 == 0x0b0f; 149 return ud2 == 0x0b0f;
284} 150}
285 151
286static raw_spinlock_t die_lock = __RAW_SPIN_LOCK_UNLOCKED;
287static int die_owner = -1;
288static unsigned int die_nest_count;
289
290unsigned __kprobes long oops_begin(void)
291{
292 unsigned long flags;
293
294 oops_enter();
295
296 if (die_owner != raw_smp_processor_id()) {
297 console_verbose();
298 raw_local_irq_save(flags);
299 __raw_spin_lock(&die_lock);
300 die_owner = smp_processor_id();
301 die_nest_count = 0;
302 bust_spinlocks(1);
303 } else {
304 raw_local_irq_save(flags);
305 }
306 die_nest_count++;
307 return flags;
308}
309
310void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr)
311{
312 bust_spinlocks(0);
313 die_owner = -1;
314 add_taint(TAINT_DIE);
315 __raw_spin_unlock(&die_lock);
316 raw_local_irq_restore(flags);
317
318 if (!regs)
319 return;
320
321 if (kexec_should_crash(current))
322 crash_kexec(regs);
323 if (in_interrupt())
324 panic("Fatal exception in interrupt");
325 if (panic_on_oops)
326 panic("Fatal exception");
327 oops_exit();
328 do_exit(signr);
329}
330
331int __kprobes __die(const char *str, struct pt_regs *regs, long err)
332{
333 unsigned short ss;
334 unsigned long sp;
335
336 printk(KERN_EMERG "%s: %04lx [#%d] ", str, err & 0xffff, ++die_counter);
337#ifdef CONFIG_PREEMPT
338 printk("PREEMPT ");
339#endif
340#ifdef CONFIG_SMP
341 printk("SMP ");
342#endif
343#ifdef CONFIG_DEBUG_PAGEALLOC
344 printk("DEBUG_PAGEALLOC");
345#endif
346 printk("\n");
347 sysfs_printk_last_file();
348 if (notify_die(DIE_OOPS, str, regs, err,
349 current->thread.trap_no, SIGSEGV) == NOTIFY_STOP)
350 return 1;
351
352 show_registers(regs);
353 /* Executive summary in case the oops scrolled away */
354 sp = (unsigned long) (&regs->sp);
355 savesegment(ss, ss);
356 if (user_mode(regs)) {
357 sp = regs->sp;
358 ss = regs->ss & 0xffff;
359 }
360 printk(KERN_EMERG "EIP: [<%08lx>] ", regs->ip);
361 print_symbol("%s", regs->ip);
362 printk(" SS:ESP %04x:%08lx\n", ss, sp);
363 return 0;
364}
365
366/*
367 * This is gone through when something in the kernel has done something bad
368 * and is about to be terminated:
369 */
370void die(const char *str, struct pt_regs *regs, long err)
371{
372 unsigned long flags = oops_begin();
373
374 if (die_nest_count < 3) {
375 report_bug(regs->ip, regs);
376
377 if (__die(str, regs, err))
378 regs = NULL;
379 } else {
380 printk(KERN_EMERG "Recursive die() failure, output suppressed\n");
381 }
382
383 oops_end(flags, regs, SIGSEGV);
384}
385
386static DEFINE_SPINLOCK(nmi_print_lock);
387
388void notrace __kprobes
389die_nmi(char *str, struct pt_regs *regs, int do_panic)
390{
391 if (notify_die(DIE_NMIWATCHDOG, str, regs, 0, 2, SIGINT) == NOTIFY_STOP)
392 return;
393
394 spin_lock(&nmi_print_lock);
395 /*
396 * We are in trouble anyway, lets at least try
397 * to get a message out:
398 */
399 bust_spinlocks(1);
400 printk(KERN_EMERG "%s", str);
401 printk(" on CPU%d, ip %08lx, registers:\n",
402 smp_processor_id(), regs->ip);
403 show_registers(regs);
404 if (do_panic)
405 panic("Non maskable interrupt");
406 console_silent();
407 spin_unlock(&nmi_print_lock);
408
409 /*
410 * If we are in kernel we are probably nested up pretty bad
411 * and might aswell get out now while we still can:
412 */
413 if (!user_mode_vm(regs)) {
414 current->thread.trap_no = 2;
415 crash_kexec(regs);
416 }
417
418 bust_spinlocks(0);
419 do_exit(SIGSEGV);
420}
421
422static int __init oops_setup(char *s)
423{
424 if (!s)
425 return -EINVAL;
426 if (!strcmp(s, "panic"))
427 panic_on_oops = 1;
428 return 0;
429}
430early_param("oops", oops_setup);
431
432static int __init kstack_setup(char *s)
433{
434 if (!s)
435 return -EINVAL;
436 kstack_depth_to_print = simple_strtoul(s, NULL, 0);
437 return 0;
438}
439early_param("kstack", kstack_setup);
440
441static int __init code_bytes_setup(char *s)
442{
443 code_bytes = simple_strtoul(s, NULL, 0);
444 if (code_bytes > 8192)
445 code_bytes = 8192;
446
447 return 1;
448}
449__setup("code_bytes=", code_bytes_setup);
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
index 96a5db7da8a7..33ff10287a5d 100644
--- a/arch/x86/kernel/dumpstack_64.c
+++ b/arch/x86/kernel/dumpstack_64.c
@@ -17,19 +17,7 @@
17 17
18#include <asm/stacktrace.h> 18#include <asm/stacktrace.h>
19 19
20#define STACKSLOTS_PER_LINE 4 20#include "dumpstack.h"
21#define get_bp(bp) asm("movq %%rbp, %0" : "=r" (bp) :)
22
23int panic_on_unrecovered_nmi;
24int kstack_depth_to_print = 3 * STACKSLOTS_PER_LINE;
25static unsigned int code_bytes = 64;
26static int die_counter;
27
28void printk_address(unsigned long address, int reliable)
29{
30 printk(" [<%p>] %s%pS\n", (void *) address,
31 reliable ? "" : "? ", (void *) address);
32}
33 21
34static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack, 22static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack,
35 unsigned *usedp, char **idp) 23 unsigned *usedp, char **idp)
@@ -113,51 +101,6 @@ static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack,
113 * severe exception (double fault, nmi, stack fault, debug, mce) hardware stack 101 * severe exception (double fault, nmi, stack fault, debug, mce) hardware stack
114 */ 102 */
115 103
116static inline int valid_stack_ptr(struct thread_info *tinfo,
117 void *p, unsigned int size, void *end)
118{
119 void *t = tinfo;
120 if (end) {
121 if (p < end && p >= (end-THREAD_SIZE))
122 return 1;
123 else
124 return 0;
125 }
126 return p > t && p < t + THREAD_SIZE - size;
127}
128
129/* The form of the top of the frame on the stack */
130struct stack_frame {
131 struct stack_frame *next_frame;
132 unsigned long return_address;
133};
134
135static inline unsigned long
136print_context_stack(struct thread_info *tinfo,
137 unsigned long *stack, unsigned long bp,
138 const struct stacktrace_ops *ops, void *data,
139 unsigned long *end)
140{
141 struct stack_frame *frame = (struct stack_frame *)bp;
142
143 while (valid_stack_ptr(tinfo, stack, sizeof(*stack), end)) {
144 unsigned long addr;
145
146 addr = *stack;
147 if (__kernel_text_address(addr)) {
148 if ((unsigned long) stack == bp + sizeof(long)) {
149 ops->address(data, addr, 1);
150 frame = frame->next_frame;
151 bp = (unsigned long) frame;
152 } else {
153 ops->address(data, addr, bp == 0);
154 }
155 }
156 stack++;
157 }
158 return bp;
159}
160
161void dump_trace(struct task_struct *task, struct pt_regs *regs, 104void dump_trace(struct task_struct *task, struct pt_regs *regs,
162 unsigned long *stack, unsigned long bp, 105 unsigned long *stack, unsigned long bp,
163 const struct stacktrace_ops *ops, void *data) 106 const struct stacktrace_ops *ops, void *data)
@@ -248,57 +191,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
248} 191}
249EXPORT_SYMBOL(dump_trace); 192EXPORT_SYMBOL(dump_trace);
250 193
251static void 194void
252print_trace_warning_symbol(void *data, char *msg, unsigned long symbol)
253{
254 printk(data);
255 print_symbol(msg, symbol);
256 printk("\n");
257}
258
259static void print_trace_warning(void *data, char *msg)
260{
261 printk("%s%s\n", (char *)data, msg);
262}
263
264static int print_trace_stack(void *data, char *name)
265{
266 printk("%s <%s> ", (char *)data, name);
267 return 0;
268}
269
270/*
271 * Print one address/symbol entries per line.
272 */
273static void print_trace_address(void *data, unsigned long addr, int reliable)
274{
275 touch_nmi_watchdog();
276 printk(data);
277 printk_address(addr, reliable);
278}
279
280static const struct stacktrace_ops print_trace_ops = {
281 .warning = print_trace_warning,
282 .warning_symbol = print_trace_warning_symbol,
283 .stack = print_trace_stack,
284 .address = print_trace_address,
285};
286
287static void
288show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
289 unsigned long *stack, unsigned long bp, char *log_lvl)
290{
291 printk("%sCall Trace:\n", log_lvl);
292 dump_trace(task, regs, stack, bp, &print_trace_ops, log_lvl);
293}
294
295void show_trace(struct task_struct *task, struct pt_regs *regs,
296 unsigned long *stack, unsigned long bp)
297{
298 show_trace_log_lvl(task, regs, stack, bp, "");
299}
300
301static void
302show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs, 195show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
303 unsigned long *sp, unsigned long bp, char *log_lvl) 196 unsigned long *sp, unsigned long bp, char *log_lvl)
304{ 197{
@@ -342,33 +235,6 @@ show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
342 show_trace_log_lvl(task, regs, sp, bp, log_lvl); 235 show_trace_log_lvl(task, regs, sp, bp, log_lvl);
343} 236}
344 237
345void show_stack(struct task_struct *task, unsigned long *sp)
346{
347 show_stack_log_lvl(task, NULL, sp, 0, "");
348}
349
350/*
351 * The architecture-independent dump_stack generator
352 */
353void dump_stack(void)
354{
355 unsigned long bp = 0;
356 unsigned long stack;
357
358#ifdef CONFIG_FRAME_POINTER
359 if (!bp)
360 get_bp(bp);
361#endif
362
363 printk("Pid: %d, comm: %.20s %s %s %.*s\n",
364 current->pid, current->comm, print_tainted(),
365 init_utsname()->release,
366 (int)strcspn(init_utsname()->version, " "),
367 init_utsname()->version);
368 show_trace(NULL, NULL, &stack, bp);
369}
370EXPORT_SYMBOL(dump_stack);
371
372void show_registers(struct pt_regs *regs) 238void show_registers(struct pt_regs *regs)
373{ 239{
374 int i; 240 int i;
@@ -429,147 +295,3 @@ int is_valid_bugaddr(unsigned long ip)
429 return ud2 == 0x0b0f; 295 return ud2 == 0x0b0f;
430} 296}
431 297
432static raw_spinlock_t die_lock = __RAW_SPIN_LOCK_UNLOCKED;
433static int die_owner = -1;
434static unsigned int die_nest_count;
435
436unsigned __kprobes long oops_begin(void)
437{
438 int cpu;
439 unsigned long flags;
440
441 oops_enter();
442
443 /* racy, but better than risking deadlock. */
444 raw_local_irq_save(flags);
445 cpu = smp_processor_id();
446 if (!__raw_spin_trylock(&die_lock)) {
447 if (cpu == die_owner)
448 /* nested oops. should stop eventually */;
449 else
450 __raw_spin_lock(&die_lock);
451 }
452 die_nest_count++;
453 die_owner = cpu;
454 console_verbose();
455 bust_spinlocks(1);
456 return flags;
457}
458
459void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr)
460{
461 die_owner = -1;
462 bust_spinlocks(0);
463 die_nest_count--;
464 if (!die_nest_count)
465 /* Nest count reaches zero, release the lock. */
466 __raw_spin_unlock(&die_lock);
467 raw_local_irq_restore(flags);
468 if (!regs) {
469 oops_exit();
470 return;
471 }
472 if (in_interrupt())
473 panic("Fatal exception in interrupt");
474 if (panic_on_oops)
475 panic("Fatal exception");
476 oops_exit();
477 do_exit(signr);
478}
479
480int __kprobes __die(const char *str, struct pt_regs *regs, long err)
481{
482 printk(KERN_EMERG "%s: %04lx [#%d] ", str, err & 0xffff, ++die_counter);
483#ifdef CONFIG_PREEMPT
484 printk("PREEMPT ");
485#endif
486#ifdef CONFIG_SMP
487 printk("SMP ");
488#endif
489#ifdef CONFIG_DEBUG_PAGEALLOC
490 printk("DEBUG_PAGEALLOC");
491#endif
492 printk("\n");
493 sysfs_printk_last_file();
494 if (notify_die(DIE_OOPS, str, regs, err,
495 current->thread.trap_no, SIGSEGV) == NOTIFY_STOP)
496 return 1;
497
498 show_registers(regs);
499 add_taint(TAINT_DIE);
500 /* Executive summary in case the oops scrolled away */
501 printk(KERN_ALERT "RIP ");
502 printk_address(regs->ip, 1);
503 printk(" RSP <%016lx>\n", regs->sp);
504 if (kexec_should_crash(current))
505 crash_kexec(regs);
506 return 0;
507}
508
509void die(const char *str, struct pt_regs *regs, long err)
510{
511 unsigned long flags = oops_begin();
512
513 if (!user_mode(regs))
514 report_bug(regs->ip, regs);
515
516 if (__die(str, regs, err))
517 regs = NULL;
518 oops_end(flags, regs, SIGSEGV);
519}
520
521notrace __kprobes void
522die_nmi(char *str, struct pt_regs *regs, int do_panic)
523{
524 unsigned long flags;
525
526 if (notify_die(DIE_NMIWATCHDOG, str, regs, 0, 2, SIGINT) == NOTIFY_STOP)
527 return;
528
529 flags = oops_begin();
530 /*
531 * We are in trouble anyway, lets at least try
532 * to get a message out.
533 */
534 printk(KERN_EMERG "%s", str);
535 printk(" on CPU%d, ip %08lx, registers:\n",
536 smp_processor_id(), regs->ip);
537 show_registers(regs);
538 if (kexec_should_crash(current))
539 crash_kexec(regs);
540 if (do_panic || panic_on_oops)
541 panic("Non maskable interrupt");
542 oops_end(flags, NULL, SIGBUS);
543 nmi_exit();
544 local_irq_enable();
545 do_exit(SIGBUS);
546}
547
548static int __init oops_setup(char *s)
549{
550 if (!s)
551 return -EINVAL;
552 if (!strcmp(s, "panic"))
553 panic_on_oops = 1;
554 return 0;
555}
556early_param("oops", oops_setup);
557
558static int __init kstack_setup(char *s)
559{
560 if (!s)
561 return -EINVAL;
562 kstack_depth_to_print = simple_strtoul(s, NULL, 0);
563 return 0;
564}
565early_param("kstack", kstack_setup);
566
567static int __init code_bytes_setup(char *s)
568{
569 code_bytes = simple_strtoul(s, NULL, 0);
570 if (code_bytes > 8192)
571 code_bytes = 8192;
572
573 return 1;
574}
575__setup("code_bytes=", code_bytes_setup);
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
index 7aafeb5263ef..65a13943e098 100644
--- a/arch/x86/kernel/e820.c
+++ b/arch/x86/kernel/e820.c
@@ -677,22 +677,6 @@ struct early_res {
677}; 677};
678static struct early_res early_res[MAX_EARLY_RES] __initdata = { 678static struct early_res early_res[MAX_EARLY_RES] __initdata = {
679 { 0, PAGE_SIZE, "BIOS data page" }, /* BIOS data page */ 679 { 0, PAGE_SIZE, "BIOS data page" }, /* BIOS data page */
680#if defined(CONFIG_X86_64) && defined(CONFIG_X86_TRAMPOLINE)
681 { TRAMPOLINE_BASE, TRAMPOLINE_BASE + 2 * PAGE_SIZE, "TRAMPOLINE" },
682#endif
683#if defined(CONFIG_X86_32) && defined(CONFIG_SMP)
684 /*
685 * But first pinch a few for the stack/trampoline stuff
686 * FIXME: Don't need the extra page at 4K, but need to fix
687 * trampoline before removing it. (see the GDT stuff)
688 */
689 { PAGE_SIZE, PAGE_SIZE + PAGE_SIZE, "EX TRAMPOLINE" },
690 /*
691 * Has to be in very low memory so we can execute
692 * real-mode AP code.
693 */
694 { TRAMPOLINE_BASE, TRAMPOLINE_BASE + PAGE_SIZE, "TRAMPOLINE" },
695#endif
696 {} 680 {}
697}; 681};
698 682
diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
index 34ad997d3834..23b138e31e9c 100644
--- a/arch/x86/kernel/early_printk.c
+++ b/arch/x86/kernel/early_printk.c
@@ -875,49 +875,6 @@ static struct console early_dbgp_console = {
875}; 875};
876#endif 876#endif
877 877
878/* Console interface to a host file on AMD's SimNow! */
879
880static int simnow_fd;
881
882enum {
883 MAGIC1 = 0xBACCD00A,
884 MAGIC2 = 0xCA110000,
885 XOPEN = 5,
886 XWRITE = 4,
887};
888
889static noinline long simnow(long cmd, long a, long b, long c)
890{
891 long ret;
892
893 asm volatile("cpuid" :
894 "=a" (ret) :
895 "b" (a), "c" (b), "d" (c), "0" (MAGIC1), "D" (cmd + MAGIC2));
896 return ret;
897}
898
899static void __init simnow_init(char *str)
900{
901 char *fn = "klog";
902
903 if (*str == '=')
904 fn = ++str;
905 /* error ignored */
906 simnow_fd = simnow(XOPEN, (unsigned long)fn, O_WRONLY|O_APPEND|O_CREAT, 0644);
907}
908
909static void simnow_write(struct console *con, const char *s, unsigned n)
910{
911 simnow(XWRITE, simnow_fd, (unsigned long)s, n);
912}
913
914static struct console simnow_console = {
915 .name = "simnow",
916 .write = simnow_write,
917 .flags = CON_PRINTBUFFER,
918 .index = -1,
919};
920
921/* Direct interface for emergencies */ 878/* Direct interface for emergencies */
922static struct console *early_console = &early_vga_console; 879static struct console *early_console = &early_vga_console;
923static int __initdata early_console_initialized; 880static int __initdata early_console_initialized;
@@ -960,10 +917,6 @@ static int __init setup_early_printk(char *buf)
960 max_ypos = boot_params.screen_info.orig_video_lines; 917 max_ypos = boot_params.screen_info.orig_video_lines;
961 current_ypos = boot_params.screen_info.orig_y; 918 current_ypos = boot_params.screen_info.orig_y;
962 early_console = &early_vga_console; 919 early_console = &early_vga_console;
963 } else if (!strncmp(buf, "simnow", 6)) {
964 simnow_init(buf + 6);
965 early_console = &simnow_console;
966 keep_early = 1;
967#ifdef CONFIG_EARLY_PRINTK_DBGP 920#ifdef CONFIG_EARLY_PRINTK_DBGP
968 } else if (!strncmp(buf, "dbgp", 4)) { 921 } else if (!strncmp(buf, "dbgp", 4)) {
969 if (early_dbgp_init(buf+4) < 0) 922 if (early_dbgp_init(buf+4) < 0)
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
index 28b597ef9ca1..f6402c4ba10d 100644
--- a/arch/x86/kernel/entry_32.S
+++ b/arch/x86/kernel/entry_32.S
@@ -1051,6 +1051,7 @@ ENTRY(kernel_thread_helper)
1051 push %eax 1051 push %eax
1052 CFI_ADJUST_CFA_OFFSET 4 1052 CFI_ADJUST_CFA_OFFSET 4
1053 call do_exit 1053 call do_exit
1054 ud2 # padding for call trace
1054 CFI_ENDPROC 1055 CFI_ENDPROC
1055ENDPROC(kernel_thread_helper) 1056ENDPROC(kernel_thread_helper)
1056 1057
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index 54927784bab9..42571baaca32 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -255,6 +255,7 @@ ENTRY(ret_from_fork)
255 call schedule_tail 255 call schedule_tail
256 GET_THREAD_INFO(%rcx) 256 GET_THREAD_INFO(%rcx)
257 testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%rcx) 257 testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%rcx)
258 CFI_REMEMBER_STATE
258 jnz rff_trace 259 jnz rff_trace
259rff_action: 260rff_action:
260 RESTORE_REST 261 RESTORE_REST
@@ -264,6 +265,7 @@ rff_action:
264 jnz int_ret_from_sys_call 265 jnz int_ret_from_sys_call
265 RESTORE_TOP_OF_STACK %rdi,ARGOFFSET 266 RESTORE_TOP_OF_STACK %rdi,ARGOFFSET
266 jmp ret_from_sys_call 267 jmp ret_from_sys_call
268 CFI_RESTORE_STATE
267rff_trace: 269rff_trace:
268 movq %rsp,%rdi 270 movq %rsp,%rdi
269 call syscall_trace_leave 271 call syscall_trace_leave
@@ -1170,6 +1172,7 @@ child_rip:
1170 # exit 1172 # exit
1171 mov %eax, %edi 1173 mov %eax, %edi
1172 call do_exit 1174 call do_exit
1175 ud2 # padding for call trace
1173 CFI_ENDPROC 1176 CFI_ENDPROC
1174ENDPROC(child_rip) 1177ENDPROC(child_rip)
1175 1178
diff --git a/arch/x86/kernel/es7000_32.c b/arch/x86/kernel/es7000_32.c
index 0aa2c443d600..53699c931ad4 100644
--- a/arch/x86/kernel/es7000_32.c
+++ b/arch/x86/kernel/es7000_32.c
@@ -38,8 +38,11 @@
38#include <asm/io.h> 38#include <asm/io.h>
39#include <asm/nmi.h> 39#include <asm/nmi.h>
40#include <asm/smp.h> 40#include <asm/smp.h>
41#include <asm/atomic.h>
41#include <asm/apicdef.h> 42#include <asm/apicdef.h>
42#include <mach_mpparse.h> 43#include <mach_mpparse.h>
44#include <asm/genapic.h>
45#include <asm/setup.h>
43 46
44/* 47/*
45 * ES7000 chipsets 48 * ES7000 chipsets
@@ -161,6 +164,43 @@ es7000_rename_gsi(int ioapic, int gsi)
161 return gsi; 164 return gsi;
162} 165}
163 166
167static int wakeup_secondary_cpu_via_mip(int cpu, unsigned long eip)
168{
169 unsigned long vect = 0, psaival = 0;
170
171 if (psai == NULL)
172 return -1;
173
174 vect = ((unsigned long)__pa(eip)/0x1000) << 16;
175 psaival = (0x1000000 | vect | cpu);
176
177 while (*psai & 0x1000000)
178 ;
179
180 *psai = psaival;
181
182 return 0;
183}
184
185static void noop_wait_for_deassert(atomic_t *deassert_not_used)
186{
187}
188
189static int __init es7000_update_genapic(void)
190{
191 genapic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
192
193 /* MPENTIUMIII */
194 if (boot_cpu_data.x86 == 6 &&
195 (boot_cpu_data.x86_model >= 7 || boot_cpu_data.x86_model <= 11)) {
196 es7000_update_genapic_to_cluster();
197 genapic->wait_for_init_deassert = noop_wait_for_deassert;
198 genapic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
199 }
200
201 return 0;
202}
203
164void __init 204void __init
165setup_unisys(void) 205setup_unisys(void)
166{ 206{
@@ -176,6 +216,8 @@ setup_unisys(void)
176 else 216 else
177 es7000_plat = ES7000_CLASSIC; 217 es7000_plat = ES7000_CLASSIC;
178 ioapic_renumber_irq = es7000_rename_gsi; 218 ioapic_renumber_irq = es7000_rename_gsi;
219
220 x86_quirks->update_genapic = es7000_update_genapic;
179} 221}
180 222
181/* 223/*
@@ -317,26 +359,6 @@ es7000_mip_write(struct mip_reg *mip_reg)
317 return status; 359 return status;
318} 360}
319 361
320int
321es7000_start_cpu(int cpu, unsigned long eip)
322{
323 unsigned long vect = 0, psaival = 0;
324
325 if (psai == NULL)
326 return -1;
327
328 vect = ((unsigned long)__pa(eip)/0x1000) << 16;
329 psaival = (0x1000000 | vect | cpu);
330
331 while (*psai & 0x1000000)
332 ;
333
334 *psai = psaival;
335
336 return 0;
337
338}
339
340void __init 362void __init
341es7000_sw_apic(void) 363es7000_sw_apic(void)
342{ 364{
diff --git a/arch/x86/kernel/genapic_64.c b/arch/x86/kernel/genapic_64.c
index 6c9bfc9e1e95..2bced78b0b8e 100644
--- a/arch/x86/kernel/genapic_64.c
+++ b/arch/x86/kernel/genapic_64.c
@@ -21,6 +21,7 @@
21#include <asm/smp.h> 21#include <asm/smp.h>
22#include <asm/ipi.h> 22#include <asm/ipi.h>
23#include <asm/genapic.h> 23#include <asm/genapic.h>
24#include <asm/setup.h>
24 25
25extern struct genapic apic_flat; 26extern struct genapic apic_flat;
26extern struct genapic apic_physflat; 27extern struct genapic apic_physflat;
@@ -53,6 +54,9 @@ void __init setup_apic_routing(void)
53 genapic = &apic_physflat; 54 genapic = &apic_physflat;
54 printk(KERN_INFO "Setting APIC routing to %s\n", genapic->name); 55 printk(KERN_INFO "Setting APIC routing to %s\n", genapic->name);
55 } 56 }
57
58 if (x86_quirks->update_genapic)
59 x86_quirks->update_genapic();
56} 60}
57 61
58/* Same for both flat and physical. */ 62/* Same for both flat and physical. */
diff --git a/arch/x86/kernel/genx2apic_uv_x.c b/arch/x86/kernel/genx2apic_uv_x.c
index 2c7dbdb98278..dece17289731 100644
--- a/arch/x86/kernel/genx2apic_uv_x.c
+++ b/arch/x86/kernel/genx2apic_uv_x.c
@@ -10,6 +10,7 @@
10 10
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/threads.h> 12#include <linux/threads.h>
13#include <linux/cpu.h>
13#include <linux/cpumask.h> 14#include <linux/cpumask.h>
14#include <linux/string.h> 15#include <linux/string.h>
15#include <linux/ctype.h> 16#include <linux/ctype.h>
@@ -17,6 +18,9 @@
17#include <linux/sched.h> 18#include <linux/sched.h>
18#include <linux/module.h> 19#include <linux/module.h>
19#include <linux/hardirq.h> 20#include <linux/hardirq.h>
21#include <linux/timer.h>
22#include <linux/proc_fs.h>
23#include <asm/current.h>
20#include <asm/smp.h> 24#include <asm/smp.h>
21#include <asm/ipi.h> 25#include <asm/ipi.h>
22#include <asm/genapic.h> 26#include <asm/genapic.h>
@@ -356,6 +360,103 @@ static __init void uv_rtc_init(void)
356} 360}
357 361
358/* 362/*
363 * percpu heartbeat timer
364 */
365static void uv_heartbeat(unsigned long ignored)
366{
367 struct timer_list *timer = &uv_hub_info->scir.timer;
368 unsigned char bits = uv_hub_info->scir.state;
369
370 /* flip heartbeat bit */
371 bits ^= SCIR_CPU_HEARTBEAT;
372
373 /* is this cpu idle? */
374 if (idle_cpu(raw_smp_processor_id()))
375 bits &= ~SCIR_CPU_ACTIVITY;
376 else
377 bits |= SCIR_CPU_ACTIVITY;
378
379 /* update system controller interface reg */
380 uv_set_scir_bits(bits);
381
382 /* enable next timer period */
383 mod_timer(timer, jiffies + SCIR_CPU_HB_INTERVAL);
384}
385
386static void __cpuinit uv_heartbeat_enable(int cpu)
387{
388 if (!uv_cpu_hub_info(cpu)->scir.enabled) {
389 struct timer_list *timer = &uv_cpu_hub_info(cpu)->scir.timer;
390
391 uv_set_cpu_scir_bits(cpu, SCIR_CPU_HEARTBEAT|SCIR_CPU_ACTIVITY);
392 setup_timer(timer, uv_heartbeat, cpu);
393 timer->expires = jiffies + SCIR_CPU_HB_INTERVAL;
394 add_timer_on(timer, cpu);
395 uv_cpu_hub_info(cpu)->scir.enabled = 1;
396 }
397
398 /* check boot cpu */
399 if (!uv_cpu_hub_info(0)->scir.enabled)
400 uv_heartbeat_enable(0);
401}
402
403#ifdef CONFIG_HOTPLUG_CPU
404static void __cpuinit uv_heartbeat_disable(int cpu)
405{
406 if (uv_cpu_hub_info(cpu)->scir.enabled) {
407 uv_cpu_hub_info(cpu)->scir.enabled = 0;
408 del_timer(&uv_cpu_hub_info(cpu)->scir.timer);
409 }
410 uv_set_cpu_scir_bits(cpu, 0xff);
411}
412
413/*
414 * cpu hotplug notifier
415 */
416static __cpuinit int uv_scir_cpu_notify(struct notifier_block *self,
417 unsigned long action, void *hcpu)
418{
419 long cpu = (long)hcpu;
420
421 switch (action) {
422 case CPU_ONLINE:
423 uv_heartbeat_enable(cpu);
424 break;
425 case CPU_DOWN_PREPARE:
426 uv_heartbeat_disable(cpu);
427 break;
428 default:
429 break;
430 }
431 return NOTIFY_OK;
432}
433
434static __init void uv_scir_register_cpu_notifier(void)
435{
436 hotcpu_notifier(uv_scir_cpu_notify, 0);
437}
438
439#else /* !CONFIG_HOTPLUG_CPU */
440
441static __init void uv_scir_register_cpu_notifier(void)
442{
443}
444
445static __init int uv_init_heartbeat(void)
446{
447 int cpu;
448
449 if (is_uv_system())
450 for_each_online_cpu(cpu)
451 uv_heartbeat_enable(cpu);
452 return 0;
453}
454
455late_initcall(uv_init_heartbeat);
456
457#endif /* !CONFIG_HOTPLUG_CPU */
458
459/*
359 * Called on each cpu to initialize the per_cpu UV data area. 460 * Called on each cpu to initialize the per_cpu UV data area.
360 * ZZZ hotplug not supported yet 461 * ZZZ hotplug not supported yet
361 */ 462 */
@@ -428,7 +529,7 @@ void __init uv_system_init(void)
428 529
429 uv_bios_init(); 530 uv_bios_init();
430 uv_bios_get_sn_info(0, &uv_type, &sn_partition_id, 531 uv_bios_get_sn_info(0, &uv_type, &sn_partition_id,
431 &uv_coherency_id, &uv_region_size); 532 &sn_coherency_id, &sn_region_size);
432 uv_rtc_init(); 533 uv_rtc_init();
433 534
434 for_each_present_cpu(cpu) { 535 for_each_present_cpu(cpu) {
@@ -439,8 +540,7 @@ void __init uv_system_init(void)
439 uv_blade_info[blade].nr_possible_cpus++; 540 uv_blade_info[blade].nr_possible_cpus++;
440 541
441 uv_cpu_hub_info(cpu)->lowmem_remap_base = lowmem_redir_base; 542 uv_cpu_hub_info(cpu)->lowmem_remap_base = lowmem_redir_base;
442 uv_cpu_hub_info(cpu)->lowmem_remap_top = 543 uv_cpu_hub_info(cpu)->lowmem_remap_top = lowmem_redir_size;
443 lowmem_redir_base + lowmem_redir_size;
444 uv_cpu_hub_info(cpu)->m_val = m_val; 544 uv_cpu_hub_info(cpu)->m_val = m_val;
445 uv_cpu_hub_info(cpu)->n_val = m_val; 545 uv_cpu_hub_info(cpu)->n_val = m_val;
446 uv_cpu_hub_info(cpu)->numa_blade_id = blade; 546 uv_cpu_hub_info(cpu)->numa_blade_id = blade;
@@ -450,7 +550,8 @@ void __init uv_system_init(void)
450 uv_cpu_hub_info(cpu)->gpa_mask = (1 << (m_val + n_val)) - 1; 550 uv_cpu_hub_info(cpu)->gpa_mask = (1 << (m_val + n_val)) - 1;
451 uv_cpu_hub_info(cpu)->gnode_upper = gnode_upper; 551 uv_cpu_hub_info(cpu)->gnode_upper = gnode_upper;
452 uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base; 552 uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base;
453 uv_cpu_hub_info(cpu)->coherency_domain_number = uv_coherency_id; 553 uv_cpu_hub_info(cpu)->coherency_domain_number = sn_coherency_id;
554 uv_cpu_hub_info(cpu)->scir.offset = SCIR_LOCAL_MMR_BASE + lcpu;
454 uv_node_to_blade[nid] = blade; 555 uv_node_to_blade[nid] = blade;
455 uv_cpu_to_blade[cpu] = blade; 556 uv_cpu_to_blade[cpu] = blade;
456 max_pnode = max(pnode, max_pnode); 557 max_pnode = max(pnode, max_pnode);
@@ -467,4 +568,6 @@ void __init uv_system_init(void)
467 map_mmioh_high(max_pnode); 568 map_mmioh_high(max_pnode);
468 569
469 uv_cpu_init(); 570 uv_cpu_init();
571 uv_scir_register_cpu_notifier();
572 proc_mkdir("sgi_uv", NULL);
470} 573}
diff --git a/arch/x86/kernel/head.c b/arch/x86/kernel/head.c
index 1dcb0f13897e..3e66bd364a9d 100644
--- a/arch/x86/kernel/head.c
+++ b/arch/x86/kernel/head.c
@@ -35,7 +35,6 @@ void __init reserve_ebda_region(void)
35 35
36 /* start of EBDA area */ 36 /* start of EBDA area */
37 ebda_addr = get_bios_ebda(); 37 ebda_addr = get_bios_ebda();
38 printk(KERN_INFO "BIOS EBDA/lowmem at: %08x/%08x\n", ebda_addr, lowmem);
39 38
40 /* Fixup: bios puts an EBDA in the top 64K segment */ 39 /* Fixup: bios puts an EBDA in the top 64K segment */
41 /* of conventional memory, but does not adjust lowmem. */ 40 /* of conventional memory, but does not adjust lowmem. */
diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c
index fa1d25dd83e3..ac108d1fe182 100644
--- a/arch/x86/kernel/head32.c
+++ b/arch/x86/kernel/head32.c
@@ -12,9 +12,12 @@
12#include <asm/sections.h> 12#include <asm/sections.h>
13#include <asm/e820.h> 13#include <asm/e820.h>
14#include <asm/bios_ebda.h> 14#include <asm/bios_ebda.h>
15#include <asm/trampoline.h>
15 16
16void __init i386_start_kernel(void) 17void __init i386_start_kernel(void)
17{ 18{
19 reserve_trampoline_memory();
20
18 reserve_early(__pa_symbol(&_text), __pa_symbol(&_end), "TEXT DATA BSS"); 21 reserve_early(__pa_symbol(&_text), __pa_symbol(&_end), "TEXT DATA BSS");
19 22
20#ifdef CONFIG_BLK_DEV_INITRD 23#ifdef CONFIG_BLK_DEV_INITRD
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index d16084f90649..388e05a5fc17 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -24,6 +24,7 @@
24#include <asm/kdebug.h> 24#include <asm/kdebug.h>
25#include <asm/e820.h> 25#include <asm/e820.h>
26#include <asm/bios_ebda.h> 26#include <asm/bios_ebda.h>
27#include <asm/trampoline.h>
27 28
28/* boot cpu pda */ 29/* boot cpu pda */
29static struct x8664_pda _boot_cpu_pda __read_mostly; 30static struct x8664_pda _boot_cpu_pda __read_mostly;
@@ -120,6 +121,8 @@ void __init x86_64_start_reservations(char *real_mode_data)
120{ 121{
121 copy_bootdata(__va(real_mode_data)); 122 copy_bootdata(__va(real_mode_data));
122 123
124 reserve_trampoline_memory();
125
123 reserve_early(__pa_symbol(&_text), __pa_symbol(&_end), "TEXT DATA BSS"); 126 reserve_early(__pa_symbol(&_text), __pa_symbol(&_end), "TEXT DATA BSS");
124 127
125#ifdef CONFIG_BLK_DEV_INITRD 128#ifdef CONFIG_BLK_DEV_INITRD
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 067d8de913f6..3f0a3edf0a57 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -33,7 +33,9 @@
33 * HPET address is set in acpi/boot.c, when an ACPI entry exists 33 * HPET address is set in acpi/boot.c, when an ACPI entry exists
34 */ 34 */
35unsigned long hpet_address; 35unsigned long hpet_address;
36unsigned long hpet_num_timers; 36#ifdef CONFIG_PCI_MSI
37static unsigned long hpet_num_timers;
38#endif
37static void __iomem *hpet_virt_address; 39static void __iomem *hpet_virt_address;
38 40
39struct hpet_dev { 41struct hpet_dev {
diff --git a/arch/x86/kernel/init_task.c b/arch/x86/kernel/init_task.c
index a4f93b4120c1..d39918076bb4 100644
--- a/arch/x86/kernel/init_task.c
+++ b/arch/x86/kernel/init_task.c
@@ -14,7 +14,6 @@ static struct fs_struct init_fs = INIT_FS;
14static struct signal_struct init_signals = INIT_SIGNALS(init_signals); 14static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
15static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); 15static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
16struct mm_struct init_mm = INIT_MM(init_mm); 16struct mm_struct init_mm = INIT_MM(init_mm);
17EXPORT_UNUSED_SYMBOL(init_mm); /* will be removed in 2.6.26 */
18 17
19/* 18/*
20 * Initial thread structure. 19 * Initial thread structure.
diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c
index 9043251210fb..679e7bbbbcd6 100644
--- a/arch/x86/kernel/io_apic.c
+++ b/arch/x86/kernel/io_apic.c
@@ -2216,10 +2216,9 @@ static void set_ir_ioapic_affinity_irq(unsigned int irq, cpumask_t mask)
2216asmlinkage void smp_irq_move_cleanup_interrupt(void) 2216asmlinkage void smp_irq_move_cleanup_interrupt(void)
2217{ 2217{
2218 unsigned vector, me; 2218 unsigned vector, me;
2219
2219 ack_APIC_irq(); 2220 ack_APIC_irq();
2220#ifdef CONFIG_X86_64
2221 exit_idle(); 2221 exit_idle();
2222#endif
2223 irq_enter(); 2222 irq_enter();
2224 2223
2225 me = smp_processor_id(); 2224 me = smp_processor_id();
diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
index 60eb84eb77a0..1d3d0e71b044 100644
--- a/arch/x86/kernel/irq_64.c
+++ b/arch/x86/kernel/irq_64.c
@@ -18,7 +18,6 @@
18#include <asm/idle.h> 18#include <asm/idle.h>
19#include <asm/smp.h> 19#include <asm/smp.h>
20 20
21#ifdef CONFIG_DEBUG_STACKOVERFLOW
22/* 21/*
23 * Probabilistic stack overflow check: 22 * Probabilistic stack overflow check:
24 * 23 *
@@ -28,19 +27,18 @@
28 */ 27 */
29static inline void stack_overflow_check(struct pt_regs *regs) 28static inline void stack_overflow_check(struct pt_regs *regs)
30{ 29{
30#ifdef CONFIG_DEBUG_STACKOVERFLOW
31 u64 curbase = (u64)task_stack_page(current); 31 u64 curbase = (u64)task_stack_page(current);
32 static unsigned long warned = -60*HZ; 32
33 33 WARN_ONCE(regs->sp >= curbase &&
34 if (regs->sp >= curbase && regs->sp <= curbase + THREAD_SIZE && 34 regs->sp <= curbase + THREAD_SIZE &&
35 regs->sp < curbase + sizeof(struct thread_info) + 128 && 35 regs->sp < curbase + sizeof(struct thread_info) +
36 time_after(jiffies, warned + 60*HZ)) { 36 sizeof(struct pt_regs) + 128,
37 printk("do_IRQ: %s near stack overflow (cur:%Lx,sp:%lx)\n", 37
38 current->comm, curbase, regs->sp); 38 "do_IRQ: %s near stack overflow (cur:%Lx,sp:%lx)\n",
39 show_stack(NULL,NULL); 39 current->comm, curbase, regs->sp);
40 warned = jiffies;
41 }
42}
43#endif 40#endif
41}
44 42
45/* 43/*
46 * do_IRQ handles all normal device IRQ's (the special 44 * do_IRQ handles all normal device IRQ's (the special
@@ -60,9 +58,7 @@ asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
60 irq_enter(); 58 irq_enter();
61 irq = __get_cpu_var(vector_irq)[vector]; 59 irq = __get_cpu_var(vector_irq)[vector];
62 60
63#ifdef CONFIG_DEBUG_STACKOVERFLOW
64 stack_overflow_check(regs); 61 stack_overflow_check(regs);
65#endif
66 62
67 desc = irq_to_desc(irq); 63 desc = irq_to_desc(irq);
68 if (likely(desc)) 64 if (likely(desc))
diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c
index 7a385746509a..37f420018a41 100644
--- a/arch/x86/kernel/machine_kexec_32.c
+++ b/arch/x86/kernel/machine_kexec_32.c
@@ -13,6 +13,7 @@
13#include <linux/numa.h> 13#include <linux/numa.h>
14#include <linux/ftrace.h> 14#include <linux/ftrace.h>
15#include <linux/suspend.h> 15#include <linux/suspend.h>
16#include <linux/gfp.h>
16 17
17#include <asm/pgtable.h> 18#include <asm/pgtable.h>
18#include <asm/pgalloc.h> 19#include <asm/pgalloc.h>
@@ -25,15 +26,6 @@
25#include <asm/system.h> 26#include <asm/system.h>
26#include <asm/cacheflush.h> 27#include <asm/cacheflush.h>
27 28
28#define PAGE_ALIGNED __attribute__ ((__aligned__(PAGE_SIZE)))
29static u32 kexec_pgd[1024] PAGE_ALIGNED;
30#ifdef CONFIG_X86_PAE
31static u32 kexec_pmd0[1024] PAGE_ALIGNED;
32static u32 kexec_pmd1[1024] PAGE_ALIGNED;
33#endif
34static u32 kexec_pte0[1024] PAGE_ALIGNED;
35static u32 kexec_pte1[1024] PAGE_ALIGNED;
36
37static void set_idt(void *newidt, __u16 limit) 29static void set_idt(void *newidt, __u16 limit)
38{ 30{
39 struct desc_ptr curidt; 31 struct desc_ptr curidt;
@@ -76,6 +68,76 @@ static void load_segments(void)
76#undef __STR 68#undef __STR
77} 69}
78 70
71static void machine_kexec_free_page_tables(struct kimage *image)
72{
73 free_page((unsigned long)image->arch.pgd);
74#ifdef CONFIG_X86_PAE
75 free_page((unsigned long)image->arch.pmd0);
76 free_page((unsigned long)image->arch.pmd1);
77#endif
78 free_page((unsigned long)image->arch.pte0);
79 free_page((unsigned long)image->arch.pte1);
80}
81
82static int machine_kexec_alloc_page_tables(struct kimage *image)
83{
84 image->arch.pgd = (pgd_t *)get_zeroed_page(GFP_KERNEL);
85#ifdef CONFIG_X86_PAE
86 image->arch.pmd0 = (pmd_t *)get_zeroed_page(GFP_KERNEL);
87 image->arch.pmd1 = (pmd_t *)get_zeroed_page(GFP_KERNEL);
88#endif
89 image->arch.pte0 = (pte_t *)get_zeroed_page(GFP_KERNEL);
90 image->arch.pte1 = (pte_t *)get_zeroed_page(GFP_KERNEL);
91 if (!image->arch.pgd ||
92#ifdef CONFIG_X86_PAE
93 !image->arch.pmd0 || !image->arch.pmd1 ||
94#endif
95 !image->arch.pte0 || !image->arch.pte1) {
96 machine_kexec_free_page_tables(image);
97 return -ENOMEM;
98 }
99 return 0;
100}
101
102static void machine_kexec_page_table_set_one(
103 pgd_t *pgd, pmd_t *pmd, pte_t *pte,
104 unsigned long vaddr, unsigned long paddr)
105{
106 pud_t *pud;
107
108 pgd += pgd_index(vaddr);
109#ifdef CONFIG_X86_PAE
110 if (!(pgd_val(*pgd) & _PAGE_PRESENT))
111 set_pgd(pgd, __pgd(__pa(pmd) | _PAGE_PRESENT));
112#endif
113 pud = pud_offset(pgd, vaddr);
114 pmd = pmd_offset(pud, vaddr);
115 if (!(pmd_val(*pmd) & _PAGE_PRESENT))
116 set_pmd(pmd, __pmd(__pa(pte) | _PAGE_TABLE));
117 pte = pte_offset_kernel(pmd, vaddr);
118 set_pte(pte, pfn_pte(paddr >> PAGE_SHIFT, PAGE_KERNEL_EXEC));
119}
120
121static void machine_kexec_prepare_page_tables(struct kimage *image)
122{
123 void *control_page;
124 pmd_t *pmd = 0;
125
126 control_page = page_address(image->control_code_page);
127#ifdef CONFIG_X86_PAE
128 pmd = image->arch.pmd0;
129#endif
130 machine_kexec_page_table_set_one(
131 image->arch.pgd, pmd, image->arch.pte0,
132 (unsigned long)control_page, __pa(control_page));
133#ifdef CONFIG_X86_PAE
134 pmd = image->arch.pmd1;
135#endif
136 machine_kexec_page_table_set_one(
137 image->arch.pgd, pmd, image->arch.pte1,
138 __pa(control_page), __pa(control_page));
139}
140
79/* 141/*
80 * A architecture hook called to validate the 142 * A architecture hook called to validate the
81 * proposed image and prepare the control pages 143 * proposed image and prepare the control pages
@@ -87,12 +149,20 @@ static void load_segments(void)
87 * reboot code buffer to allow us to avoid allocations 149 * reboot code buffer to allow us to avoid allocations
88 * later. 150 * later.
89 * 151 *
90 * Make control page executable. 152 * - Make control page executable.
153 * - Allocate page tables
154 * - Setup page tables
91 */ 155 */
92int machine_kexec_prepare(struct kimage *image) 156int machine_kexec_prepare(struct kimage *image)
93{ 157{
158 int error;
159
94 if (nx_enabled) 160 if (nx_enabled)
95 set_pages_x(image->control_code_page, 1); 161 set_pages_x(image->control_code_page, 1);
162 error = machine_kexec_alloc_page_tables(image);
163 if (error)
164 return error;
165 machine_kexec_prepare_page_tables(image);
96 return 0; 166 return 0;
97} 167}
98 168
@@ -104,6 +174,7 @@ void machine_kexec_cleanup(struct kimage *image)
104{ 174{
105 if (nx_enabled) 175 if (nx_enabled)
106 set_pages_nx(image->control_code_page, 1); 176 set_pages_nx(image->control_code_page, 1);
177 machine_kexec_free_page_tables(image);
107} 178}
108 179
109/* 180/*
@@ -150,18 +221,7 @@ void machine_kexec(struct kimage *image)
150 relocate_kernel_ptr = control_page; 221 relocate_kernel_ptr = control_page;
151 page_list[PA_CONTROL_PAGE] = __pa(control_page); 222 page_list[PA_CONTROL_PAGE] = __pa(control_page);
152 page_list[VA_CONTROL_PAGE] = (unsigned long)control_page; 223 page_list[VA_CONTROL_PAGE] = (unsigned long)control_page;
153 page_list[PA_PGD] = __pa(kexec_pgd); 224 page_list[PA_PGD] = __pa(image->arch.pgd);
154 page_list[VA_PGD] = (unsigned long)kexec_pgd;
155#ifdef CONFIG_X86_PAE
156 page_list[PA_PMD_0] = __pa(kexec_pmd0);
157 page_list[VA_PMD_0] = (unsigned long)kexec_pmd0;
158 page_list[PA_PMD_1] = __pa(kexec_pmd1);
159 page_list[VA_PMD_1] = (unsigned long)kexec_pmd1;
160#endif
161 page_list[PA_PTE_0] = __pa(kexec_pte0);
162 page_list[VA_PTE_0] = (unsigned long)kexec_pte0;
163 page_list[PA_PTE_1] = __pa(kexec_pte1);
164 page_list[VA_PTE_1] = (unsigned long)kexec_pte1;
165 225
166 if (image->type == KEXEC_TYPE_DEFAULT) 226 if (image->type == KEXEC_TYPE_DEFAULT)
167 page_list[PA_SWAP_PAGE] = (page_to_pfn(image->swap_page) 227 page_list[PA_SWAP_PAGE] = (page_to_pfn(image->swap_page)
diff --git a/arch/x86/kernel/microcode_amd.c b/arch/x86/kernel/microcode_amd.c
index 5f8e5d75a254..c25fdb382292 100644
--- a/arch/x86/kernel/microcode_amd.c
+++ b/arch/x86/kernel/microcode_amd.c
@@ -10,7 +10,7 @@
10 * This driver allows to upgrade microcode on AMD 10 * This driver allows to upgrade microcode on AMD
11 * family 0x10 and 0x11 processors. 11 * family 0x10 and 0x11 processors.
12 * 12 *
13 * Licensed unter the terms of the GNU General Public 13 * Licensed under the terms of the GNU General Public
14 * License version 2. See file COPYING for details. 14 * License version 2. See file COPYING for details.
15*/ 15*/
16 16
@@ -32,9 +32,9 @@
32#include <linux/platform_device.h> 32#include <linux/platform_device.h>
33#include <linux/pci.h> 33#include <linux/pci.h>
34#include <linux/pci_ids.h> 34#include <linux/pci_ids.h>
35#include <linux/uaccess.h>
35 36
36#include <asm/msr.h> 37#include <asm/msr.h>
37#include <asm/uaccess.h>
38#include <asm/processor.h> 38#include <asm/processor.h>
39#include <asm/microcode.h> 39#include <asm/microcode.h>
40 40
@@ -47,43 +47,38 @@ MODULE_LICENSE("GPL v2");
47#define UCODE_UCODE_TYPE 0x00000001 47#define UCODE_UCODE_TYPE 0x00000001
48 48
49struct equiv_cpu_entry { 49struct equiv_cpu_entry {
50 unsigned int installed_cpu; 50 u32 installed_cpu;
51 unsigned int fixed_errata_mask; 51 u32 fixed_errata_mask;
52 unsigned int fixed_errata_compare; 52 u32 fixed_errata_compare;
53 unsigned int equiv_cpu; 53 u16 equiv_cpu;
54}; 54 u16 res;
55} __attribute__((packed));
55 56
56struct microcode_header_amd { 57struct microcode_header_amd {
57 unsigned int data_code; 58 u32 data_code;
58 unsigned int patch_id; 59 u32 patch_id;
59 unsigned char mc_patch_data_id[2]; 60 u16 mc_patch_data_id;
60 unsigned char mc_patch_data_len; 61 u8 mc_patch_data_len;
61 unsigned char init_flag; 62 u8 init_flag;
62 unsigned int mc_patch_data_checksum; 63 u32 mc_patch_data_checksum;
63 unsigned int nb_dev_id; 64 u32 nb_dev_id;
64 unsigned int sb_dev_id; 65 u32 sb_dev_id;
65 unsigned char processor_rev_id[2]; 66 u16 processor_rev_id;
66 unsigned char nb_rev_id; 67 u8 nb_rev_id;
67 unsigned char sb_rev_id; 68 u8 sb_rev_id;
68 unsigned char bios_api_rev; 69 u8 bios_api_rev;
69 unsigned char reserved1[3]; 70 u8 reserved1[3];
70 unsigned int match_reg[8]; 71 u32 match_reg[8];
71}; 72} __attribute__((packed));
72 73
73struct microcode_amd { 74struct microcode_amd {
74 struct microcode_header_amd hdr; 75 struct microcode_header_amd hdr;
75 unsigned int mpb[0]; 76 unsigned int mpb[0];
76}; 77};
77 78
78#define UCODE_MAX_SIZE (2048) 79#define UCODE_MAX_SIZE 2048
79#define DEFAULT_UCODE_DATASIZE (896) 80#define UCODE_CONTAINER_SECTION_HDR 8
80#define MC_HEADER_SIZE (sizeof(struct microcode_header_amd)) 81#define UCODE_CONTAINER_HEADER_SIZE 12
81#define DEFAULT_UCODE_TOTALSIZE (DEFAULT_UCODE_DATASIZE + MC_HEADER_SIZE)
82#define DWSIZE (sizeof(u32))
83/* For now we support a fixed ucode total size only */
84#define get_totalsize(mc) \
85 ((((struct microcode_amd *)mc)->hdr.mc_patch_data_len * 28) \
86 + MC_HEADER_SIZE)
87 82
88/* serialize access to the physical write */ 83/* serialize access to the physical write */
89static DEFINE_SPINLOCK(microcode_update_lock); 84static DEFINE_SPINLOCK(microcode_update_lock);
@@ -93,31 +88,24 @@ static struct equiv_cpu_entry *equiv_cpu_table;
93static int collect_cpu_info_amd(int cpu, struct cpu_signature *csig) 88static int collect_cpu_info_amd(int cpu, struct cpu_signature *csig)
94{ 89{
95 struct cpuinfo_x86 *c = &cpu_data(cpu); 90 struct cpuinfo_x86 *c = &cpu_data(cpu);
91 u32 dummy;
96 92
97 memset(csig, 0, sizeof(*csig)); 93 memset(csig, 0, sizeof(*csig));
98
99 if (c->x86_vendor != X86_VENDOR_AMD || c->x86 < 0x10) { 94 if (c->x86_vendor != X86_VENDOR_AMD || c->x86 < 0x10) {
100 printk(KERN_ERR "microcode: CPU%d not a capable AMD processor\n", 95 printk(KERN_WARNING "microcode: CPU%d: AMD CPU family 0x%x not "
101 cpu); 96 "supported\n", cpu, c->x86);
102 return -1; 97 return -1;
103 } 98 }
104 99 rdmsr(MSR_AMD64_PATCH_LEVEL, csig->rev, dummy);
105 asm volatile("movl %1, %%ecx; rdmsr" 100 printk(KERN_INFO "microcode: CPU%d: patch_level=0x%x\n", cpu, csig->rev);
106 : "=a" (csig->rev)
107 : "i" (0x0000008B) : "ecx");
108
109 printk(KERN_INFO "microcode: collect_cpu_info_amd : patch_id=0x%x\n",
110 csig->rev);
111
112 return 0; 101 return 0;
113} 102}
114 103
115static int get_matching_microcode(int cpu, void *mc, int rev) 104static int get_matching_microcode(int cpu, void *mc, int rev)
116{ 105{
117 struct microcode_header_amd *mc_header = mc; 106 struct microcode_header_amd *mc_header = mc;
118 struct pci_dev *nb_pci_dev, *sb_pci_dev;
119 unsigned int current_cpu_id; 107 unsigned int current_cpu_id;
120 unsigned int equiv_cpu_id = 0x00; 108 u16 equiv_cpu_id = 0;
121 unsigned int i = 0; 109 unsigned int i = 0;
122 110
123 BUG_ON(equiv_cpu_table == NULL); 111 BUG_ON(equiv_cpu_table == NULL);
@@ -132,57 +120,25 @@ static int get_matching_microcode(int cpu, void *mc, int rev)
132 } 120 }
133 121
134 if (!equiv_cpu_id) { 122 if (!equiv_cpu_id) {
135 printk(KERN_ERR "microcode: CPU%d cpu_id " 123 printk(KERN_WARNING "microcode: CPU%d: cpu revision "
136 "not found in equivalent cpu table \n", cpu); 124 "not listed in equivalent cpu table\n", cpu);
137 return 0; 125 return 0;
138 } 126 }
139 127
140 if ((mc_header->processor_rev_id[0]) != (equiv_cpu_id & 0xff)) { 128 if (mc_header->processor_rev_id != equiv_cpu_id) {
141 printk(KERN_ERR 129 printk(KERN_ERR "microcode: CPU%d: patch mismatch "
142 "microcode: CPU%d patch does not match " 130 "(processor_rev_id: %x, equiv_cpu_id: %x)\n",
143 "(patch is %x, cpu extended is %x) \n", 131 cpu, mc_header->processor_rev_id, equiv_cpu_id);
144 cpu, mc_header->processor_rev_id[0],
145 (equiv_cpu_id & 0xff));
146 return 0; 132 return 0;
147 } 133 }
148 134
149 if ((mc_header->processor_rev_id[1]) != ((equiv_cpu_id >> 16) & 0xff)) { 135 /* ucode might be chipset specific -- currently we don't support this */
150 printk(KERN_ERR "microcode: CPU%d patch does not match " 136 if (mc_header->nb_dev_id || mc_header->sb_dev_id) {
151 "(patch is %x, cpu base id is %x) \n", 137 printk(KERN_ERR "microcode: CPU%d: loading of chipset "
152 cpu, mc_header->processor_rev_id[1], 138 "specific code not yet supported\n", cpu);
153 ((equiv_cpu_id >> 16) & 0xff));
154
155 return 0; 139 return 0;
156 } 140 }
157 141
158 /* ucode may be northbridge specific */
159 if (mc_header->nb_dev_id) {
160 nb_pci_dev = pci_get_device(PCI_VENDOR_ID_AMD,
161 (mc_header->nb_dev_id & 0xff),
162 NULL);
163 if ((!nb_pci_dev) ||
164 (mc_header->nb_rev_id != nb_pci_dev->revision)) {
165 printk(KERN_ERR "microcode: CPU%d NB mismatch \n", cpu);
166 pci_dev_put(nb_pci_dev);
167 return 0;
168 }
169 pci_dev_put(nb_pci_dev);
170 }
171
172 /* ucode may be southbridge specific */
173 if (mc_header->sb_dev_id) {
174 sb_pci_dev = pci_get_device(PCI_VENDOR_ID_AMD,
175 (mc_header->sb_dev_id & 0xff),
176 NULL);
177 if ((!sb_pci_dev) ||
178 (mc_header->sb_rev_id != sb_pci_dev->revision)) {
179 printk(KERN_ERR "microcode: CPU%d SB mismatch \n", cpu);
180 pci_dev_put(sb_pci_dev);
181 return 0;
182 }
183 pci_dev_put(sb_pci_dev);
184 }
185
186 if (mc_header->patch_id <= rev) 142 if (mc_header->patch_id <= rev)
187 return 0; 143 return 0;
188 144
@@ -192,12 +148,10 @@ static int get_matching_microcode(int cpu, void *mc, int rev)
192static void apply_microcode_amd(int cpu) 148static void apply_microcode_amd(int cpu)
193{ 149{
194 unsigned long flags; 150 unsigned long flags;
195 unsigned int eax, edx; 151 u32 rev, dummy;
196 unsigned int rev;
197 int cpu_num = raw_smp_processor_id(); 152 int cpu_num = raw_smp_processor_id();
198 struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num; 153 struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num;
199 struct microcode_amd *mc_amd = uci->mc; 154 struct microcode_amd *mc_amd = uci->mc;
200 unsigned long addr;
201 155
202 /* We should bind the task to the CPU */ 156 /* We should bind the task to the CPU */
203 BUG_ON(cpu_num != cpu); 157 BUG_ON(cpu_num != cpu);
@@ -206,42 +160,34 @@ static void apply_microcode_amd(int cpu)
206 return; 160 return;
207 161
208 spin_lock_irqsave(&microcode_update_lock, flags); 162 spin_lock_irqsave(&microcode_update_lock, flags);
209 163 wrmsrl(MSR_AMD64_PATCH_LOADER, (u64)(long)&mc_amd->hdr.data_code);
210 addr = (unsigned long)&mc_amd->hdr.data_code;
211 edx = (unsigned int)(((unsigned long)upper_32_bits(addr)));
212 eax = (unsigned int)(((unsigned long)lower_32_bits(addr)));
213
214 asm volatile("movl %0, %%ecx; wrmsr" :
215 : "i" (0xc0010020), "a" (eax), "d" (edx) : "ecx");
216
217 /* get patch id after patching */ 164 /* get patch id after patching */
218 asm volatile("movl %1, %%ecx; rdmsr" 165 rdmsr(MSR_AMD64_PATCH_LEVEL, rev, dummy);
219 : "=a" (rev)
220 : "i" (0x0000008B) : "ecx");
221
222 spin_unlock_irqrestore(&microcode_update_lock, flags); 166 spin_unlock_irqrestore(&microcode_update_lock, flags);
223 167
224 /* check current patch id and patch's id for match */ 168 /* check current patch id and patch's id for match */
225 if (rev != mc_amd->hdr.patch_id) { 169 if (rev != mc_amd->hdr.patch_id) {
226 printk(KERN_ERR "microcode: CPU%d update from revision " 170 printk(KERN_ERR "microcode: CPU%d: update failed "
227 "0x%x to 0x%x failed\n", cpu_num, 171 "(for patch_level=0x%x)\n", cpu, mc_amd->hdr.patch_id);
228 mc_amd->hdr.patch_id, rev);
229 return; 172 return;
230 } 173 }
231 174
232 printk(KERN_INFO "microcode: CPU%d updated from revision " 175 printk(KERN_INFO "microcode: CPU%d: updated (new patch_level=0x%x)\n",
233 "0x%x to 0x%x \n", 176 cpu, rev);
234 cpu_num, uci->cpu_sig.rev, mc_amd->hdr.patch_id);
235 177
236 uci->cpu_sig.rev = rev; 178 uci->cpu_sig.rev = rev;
237} 179}
238 180
239static void * get_next_ucode(u8 *buf, unsigned int size, 181static int get_ucode_data(void *to, const u8 *from, size_t n)
240 int (*get_ucode_data)(void *, const void *, size_t), 182{
241 unsigned int *mc_size) 183 memcpy(to, from, n);
184 return 0;
185}
186
187static void *get_next_ucode(const u8 *buf, unsigned int size,
188 unsigned int *mc_size)
242{ 189{
243 unsigned int total_size; 190 unsigned int total_size;
244#define UCODE_CONTAINER_SECTION_HDR 8
245 u8 section_hdr[UCODE_CONTAINER_SECTION_HDR]; 191 u8 section_hdr[UCODE_CONTAINER_SECTION_HDR];
246 void *mc; 192 void *mc;
247 193
@@ -249,39 +195,37 @@ static void * get_next_ucode(u8 *buf, unsigned int size,
249 return NULL; 195 return NULL;
250 196
251 if (section_hdr[0] != UCODE_UCODE_TYPE) { 197 if (section_hdr[0] != UCODE_UCODE_TYPE) {
252 printk(KERN_ERR "microcode: error! " 198 printk(KERN_ERR "microcode: error: invalid type field in "
253 "Wrong microcode payload type field\n"); 199 "container file section header\n");
254 return NULL; 200 return NULL;
255 } 201 }
256 202
257 total_size = (unsigned long) (section_hdr[4] + (section_hdr[5] << 8)); 203 total_size = (unsigned long) (section_hdr[4] + (section_hdr[5] << 8));
258 204
259 printk(KERN_INFO "microcode: size %u, total_size %u\n", 205 printk(KERN_DEBUG "microcode: size %u, total_size %u\n",
260 size, total_size); 206 size, total_size);
261 207
262 if (total_size > size || total_size > UCODE_MAX_SIZE) { 208 if (total_size > size || total_size > UCODE_MAX_SIZE) {
263 printk(KERN_ERR "microcode: error! Bad data in microcode data file\n"); 209 printk(KERN_ERR "microcode: error: size mismatch\n");
264 return NULL; 210 return NULL;
265 } 211 }
266 212
267 mc = vmalloc(UCODE_MAX_SIZE); 213 mc = vmalloc(UCODE_MAX_SIZE);
268 if (mc) { 214 if (mc) {
269 memset(mc, 0, UCODE_MAX_SIZE); 215 memset(mc, 0, UCODE_MAX_SIZE);
270 if (get_ucode_data(mc, buf + UCODE_CONTAINER_SECTION_HDR, total_size)) { 216 if (get_ucode_data(mc, buf + UCODE_CONTAINER_SECTION_HDR,
217 total_size)) {
271 vfree(mc); 218 vfree(mc);
272 mc = NULL; 219 mc = NULL;
273 } else 220 } else
274 *mc_size = total_size + UCODE_CONTAINER_SECTION_HDR; 221 *mc_size = total_size + UCODE_CONTAINER_SECTION_HDR;
275 } 222 }
276#undef UCODE_CONTAINER_SECTION_HDR
277 return mc; 223 return mc;
278} 224}
279 225
280 226
281static int install_equiv_cpu_table(u8 *buf, 227static int install_equiv_cpu_table(const u8 *buf)
282 int (*get_ucode_data)(void *, const void *, size_t))
283{ 228{
284#define UCODE_CONTAINER_HEADER_SIZE 12
285 u8 *container_hdr[UCODE_CONTAINER_HEADER_SIZE]; 229 u8 *container_hdr[UCODE_CONTAINER_HEADER_SIZE];
286 unsigned int *buf_pos = (unsigned int *)container_hdr; 230 unsigned int *buf_pos = (unsigned int *)container_hdr;
287 unsigned long size; 231 unsigned long size;
@@ -292,14 +236,15 @@ static int install_equiv_cpu_table(u8 *buf,
292 size = buf_pos[2]; 236 size = buf_pos[2];
293 237
294 if (buf_pos[1] != UCODE_EQUIV_CPU_TABLE_TYPE || !size) { 238 if (buf_pos[1] != UCODE_EQUIV_CPU_TABLE_TYPE || !size) {
295 printk(KERN_ERR "microcode: error! " 239 printk(KERN_ERR "microcode: error: invalid type field in "
296 "Wrong microcode equivalnet cpu table\n"); 240 "container file section header\n");
297 return 0; 241 return 0;
298 } 242 }
299 243
300 equiv_cpu_table = (struct equiv_cpu_entry *) vmalloc(size); 244 equiv_cpu_table = (struct equiv_cpu_entry *) vmalloc(size);
301 if (!equiv_cpu_table) { 245 if (!equiv_cpu_table) {
302 printk(KERN_ERR "microcode: error, can't allocate memory for equiv CPU table\n"); 246 printk(KERN_ERR "microcode: failed to allocate "
247 "equivalent CPU table\n");
303 return 0; 248 return 0;
304 } 249 }
305 250
@@ -310,7 +255,6 @@ static int install_equiv_cpu_table(u8 *buf,
310 } 255 }
311 256
312 return size + UCODE_CONTAINER_HEADER_SIZE; /* add header length */ 257 return size + UCODE_CONTAINER_HEADER_SIZE; /* add header length */
313#undef UCODE_CONTAINER_HEADER_SIZE
314} 258}
315 259
316static void free_equiv_cpu_table(void) 260static void free_equiv_cpu_table(void)
@@ -321,18 +265,20 @@ static void free_equiv_cpu_table(void)
321 } 265 }
322} 266}
323 267
324static int generic_load_microcode(int cpu, void *data, size_t size, 268static int generic_load_microcode(int cpu, const u8 *data, size_t size)
325 int (*get_ucode_data)(void *, const void *, size_t))
326{ 269{
327 struct ucode_cpu_info *uci = ucode_cpu_info + cpu; 270 struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
328 u8 *ucode_ptr = data, *new_mc = NULL, *mc; 271 const u8 *ucode_ptr = data;
272 void *new_mc = NULL;
273 void *mc;
329 int new_rev = uci->cpu_sig.rev; 274 int new_rev = uci->cpu_sig.rev;
330 unsigned int leftover; 275 unsigned int leftover;
331 unsigned long offset; 276 unsigned long offset;
332 277
333 offset = install_equiv_cpu_table(ucode_ptr, get_ucode_data); 278 offset = install_equiv_cpu_table(ucode_ptr);
334 if (!offset) { 279 if (!offset) {
335 printk(KERN_ERR "microcode: installing equivalent cpu table failed\n"); 280 printk(KERN_ERR "microcode: failed to create "
281 "equivalent cpu table\n");
336 return -EINVAL; 282 return -EINVAL;
337 } 283 }
338 284
@@ -343,7 +289,7 @@ static int generic_load_microcode(int cpu, void *data, size_t size,
343 unsigned int uninitialized_var(mc_size); 289 unsigned int uninitialized_var(mc_size);
344 struct microcode_header_amd *mc_header; 290 struct microcode_header_amd *mc_header;
345 291
346 mc = get_next_ucode(ucode_ptr, leftover, get_ucode_data, &mc_size); 292 mc = get_next_ucode(ucode_ptr, leftover, &mc_size);
347 if (!mc) 293 if (!mc)
348 break; 294 break;
349 295
@@ -353,7 +299,7 @@ static int generic_load_microcode(int cpu, void *data, size_t size,
353 vfree(new_mc); 299 vfree(new_mc);
354 new_rev = mc_header->patch_id; 300 new_rev = mc_header->patch_id;
355 new_mc = mc; 301 new_mc = mc;
356 } else 302 } else
357 vfree(mc); 303 vfree(mc);
358 304
359 ucode_ptr += mc_size; 305 ucode_ptr += mc_size;
@@ -365,9 +311,9 @@ static int generic_load_microcode(int cpu, void *data, size_t size,
365 if (uci->mc) 311 if (uci->mc)
366 vfree(uci->mc); 312 vfree(uci->mc);
367 uci->mc = new_mc; 313 uci->mc = new_mc;
368 pr_debug("microcode: CPU%d found a matching microcode update with" 314 pr_debug("microcode: CPU%d found a matching microcode "
369 " version 0x%x (current=0x%x)\n", 315 "update with version 0x%x (current=0x%x)\n",
370 cpu, new_rev, uci->cpu_sig.rev); 316 cpu, new_rev, uci->cpu_sig.rev);
371 } else 317 } else
372 vfree(new_mc); 318 vfree(new_mc);
373 } 319 }
@@ -377,12 +323,6 @@ static int generic_load_microcode(int cpu, void *data, size_t size,
377 return (int)leftover; 323 return (int)leftover;
378} 324}
379 325
380static int get_ucode_fw(void *to, const void *from, size_t n)
381{
382 memcpy(to, from, n);
383 return 0;
384}
385
386static int request_microcode_fw(int cpu, struct device *device) 326static int request_microcode_fw(int cpu, struct device *device)
387{ 327{
388 const char *fw_name = "amd-ucode/microcode_amd.bin"; 328 const char *fw_name = "amd-ucode/microcode_amd.bin";
@@ -394,12 +334,11 @@ static int request_microcode_fw(int cpu, struct device *device)
394 334
395 ret = request_firmware(&firmware, fw_name, device); 335 ret = request_firmware(&firmware, fw_name, device);
396 if (ret) { 336 if (ret) {
397 printk(KERN_ERR "microcode: ucode data file %s load failed\n", fw_name); 337 printk(KERN_ERR "microcode: failed to load file %s\n", fw_name);
398 return ret; 338 return ret;
399 } 339 }
400 340
401 ret = generic_load_microcode(cpu, (void*)firmware->data, firmware->size, 341 ret = generic_load_microcode(cpu, firmware->data, firmware->size);
402 &get_ucode_fw);
403 342
404 release_firmware(firmware); 343 release_firmware(firmware);
405 344
@@ -408,8 +347,8 @@ static int request_microcode_fw(int cpu, struct device *device)
408 347
409static int request_microcode_user(int cpu, const void __user *buf, size_t size) 348static int request_microcode_user(int cpu, const void __user *buf, size_t size)
410{ 349{
411 printk(KERN_WARNING "microcode: AMD microcode update via /dev/cpu/microcode" 350 printk(KERN_INFO "microcode: AMD microcode update via "
412 "is not supported\n"); 351 "/dev/cpu/microcode not supported\n");
413 return -1; 352 return -1;
414} 353}
415 354
@@ -433,3 +372,4 @@ struct microcode_ops * __init init_amd_microcode(void)
433{ 372{
434 return &microcode_amd_ops; 373 return &microcode_amd_ops;
435} 374}
375
diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c
index 82fb2809ce32..c9b721ba968c 100644
--- a/arch/x86/kernel/microcode_core.c
+++ b/arch/x86/kernel/microcode_core.c
@@ -99,7 +99,7 @@ MODULE_LICENSE("GPL");
99 99
100#define MICROCODE_VERSION "2.00" 100#define MICROCODE_VERSION "2.00"
101 101
102struct microcode_ops *microcode_ops; 102static struct microcode_ops *microcode_ops;
103 103
104/* no concurrent ->write()s are allowed on /dev/cpu/microcode */ 104/* no concurrent ->write()s are allowed on /dev/cpu/microcode */
105static DEFINE_MUTEX(microcode_mutex); 105static DEFINE_MUTEX(microcode_mutex);
@@ -203,7 +203,7 @@ MODULE_ALIAS_MISCDEV(MICROCODE_MINOR);
203#endif 203#endif
204 204
205/* fake device for request_firmware */ 205/* fake device for request_firmware */
206struct platform_device *microcode_pdev; 206static struct platform_device *microcode_pdev;
207 207
208static ssize_t reload_store(struct sys_device *dev, 208static ssize_t reload_store(struct sys_device *dev,
209 struct sysdev_attribute *attr, 209 struct sysdev_attribute *attr,
@@ -272,13 +272,18 @@ static struct attribute_group mc_attr_group = {
272 .name = "microcode", 272 .name = "microcode",
273}; 273};
274 274
275static void microcode_fini_cpu(int cpu) 275static void __microcode_fini_cpu(int cpu)
276{ 276{
277 struct ucode_cpu_info *uci = ucode_cpu_info + cpu; 277 struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
278 278
279 mutex_lock(&microcode_mutex);
280 microcode_ops->microcode_fini_cpu(cpu); 279 microcode_ops->microcode_fini_cpu(cpu);
281 uci->valid = 0; 280 uci->valid = 0;
281}
282
283static void microcode_fini_cpu(int cpu)
284{
285 mutex_lock(&microcode_mutex);
286 __microcode_fini_cpu(cpu);
282 mutex_unlock(&microcode_mutex); 287 mutex_unlock(&microcode_mutex);
283} 288}
284 289
@@ -306,12 +311,16 @@ static int microcode_resume_cpu(int cpu)
306 * to this cpu (a bit of paranoia): 311 * to this cpu (a bit of paranoia):
307 */ 312 */
308 if (microcode_ops->collect_cpu_info(cpu, &nsig)) { 313 if (microcode_ops->collect_cpu_info(cpu, &nsig)) {
309 microcode_fini_cpu(cpu); 314 __microcode_fini_cpu(cpu);
315 printk(KERN_ERR "failed to collect_cpu_info for resuming cpu #%d\n",
316 cpu);
310 return -1; 317 return -1;
311 } 318 }
312 319
313 if (memcmp(&nsig, &uci->cpu_sig, sizeof(nsig))) { 320 if ((nsig.sig != uci->cpu_sig.sig) || (nsig.pf != uci->cpu_sig.pf)) {
314 microcode_fini_cpu(cpu); 321 __microcode_fini_cpu(cpu);
322 printk(KERN_ERR "cached ucode doesn't match the resuming cpu #%d\n",
323 cpu);
315 /* Should we look for a new ucode here? */ 324 /* Should we look for a new ucode here? */
316 return 1; 325 return 1;
317 } 326 }
@@ -319,7 +328,7 @@ static int microcode_resume_cpu(int cpu)
319 return 0; 328 return 0;
320} 329}
321 330
322void microcode_update_cpu(int cpu) 331static void microcode_update_cpu(int cpu)
323{ 332{
324 struct ucode_cpu_info *uci = ucode_cpu_info + cpu; 333 struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
325 int err = 0; 334 int err = 0;
diff --git a/arch/x86/kernel/microcode_intel.c b/arch/x86/kernel/microcode_intel.c
index 622dc4a21784..b7f4c929e615 100644
--- a/arch/x86/kernel/microcode_intel.c
+++ b/arch/x86/kernel/microcode_intel.c
@@ -155,6 +155,7 @@ static DEFINE_SPINLOCK(microcode_update_lock);
155static int collect_cpu_info(int cpu_num, struct cpu_signature *csig) 155static int collect_cpu_info(int cpu_num, struct cpu_signature *csig)
156{ 156{
157 struct cpuinfo_x86 *c = &cpu_data(cpu_num); 157 struct cpuinfo_x86 *c = &cpu_data(cpu_num);
158 unsigned long flags;
158 unsigned int val[2]; 159 unsigned int val[2];
159 160
160 memset(csig, 0, sizeof(*csig)); 161 memset(csig, 0, sizeof(*csig));
@@ -174,11 +175,16 @@ static int collect_cpu_info(int cpu_num, struct cpu_signature *csig)
174 csig->pf = 1 << ((val[1] >> 18) & 7); 175 csig->pf = 1 << ((val[1] >> 18) & 7);
175 } 176 }
176 177
178 /* serialize access to the physical write to MSR 0x79 */
179 spin_lock_irqsave(&microcode_update_lock, flags);
180
177 wrmsr(MSR_IA32_UCODE_REV, 0, 0); 181 wrmsr(MSR_IA32_UCODE_REV, 0, 0);
178 /* see notes above for revision 1.07. Apparent chip bug */ 182 /* see notes above for revision 1.07. Apparent chip bug */
179 sync_core(); 183 sync_core();
180 /* get the current revision from MSR 0x8B */ 184 /* get the current revision from MSR 0x8B */
181 rdmsr(MSR_IA32_UCODE_REV, val[0], csig->rev); 185 rdmsr(MSR_IA32_UCODE_REV, val[0], csig->rev);
186 spin_unlock_irqrestore(&microcode_update_lock, flags);
187
182 pr_debug("microcode: collect_cpu_info : sig=0x%x, pf=0x%x, rev=0x%x\n", 188 pr_debug("microcode: collect_cpu_info : sig=0x%x, pf=0x%x, rev=0x%x\n",
183 csig->sig, csig->pf, csig->rev); 189 csig->sig, csig->pf, csig->rev);
184 190
@@ -465,7 +471,7 @@ static void microcode_fini_cpu(int cpu)
465 uci->mc = NULL; 471 uci->mc = NULL;
466} 472}
467 473
468struct microcode_ops microcode_intel_ops = { 474static struct microcode_ops microcode_intel_ops = {
469 .request_microcode_user = request_microcode_user, 475 .request_microcode_user = request_microcode_user,
470 .request_microcode_fw = request_microcode_fw, 476 .request_microcode_fw = request_microcode_fw,
471 .collect_cpu_info = collect_cpu_info, 477 .collect_cpu_info = collect_cpu_info,
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c
index f98f4e1dba09..45e3b69808ba 100644
--- a/arch/x86/kernel/mpparse.c
+++ b/arch/x86/kernel/mpparse.c
@@ -586,23 +586,23 @@ static void __init __get_smp_config(unsigned int early)
586{ 586{
587 struct intel_mp_floating *mpf = mpf_found; 587 struct intel_mp_floating *mpf = mpf_found;
588 588
589 if (x86_quirks->mach_get_smp_config) { 589 if (!mpf)
590 if (x86_quirks->mach_get_smp_config(early)) 590 return;
591 return; 591
592 }
593 if (acpi_lapic && early) 592 if (acpi_lapic && early)
594 return; 593 return;
594
595 /* 595 /*
596 * ACPI supports both logical (e.g. Hyper-Threading) and physical 596 * MPS doesn't support hyperthreading, aka only have
597 * processors, where MPS only supports physical. 597 * thread 0 apic id in MPS table
598 */ 598 */
599 if (acpi_lapic && acpi_ioapic) { 599 if (acpi_lapic && acpi_ioapic)
600 printk(KERN_INFO "Using ACPI (MADT) for SMP configuration "
601 "information\n");
602 return; 600 return;
603 } else if (acpi_lapic) 601
604 printk(KERN_INFO "Using ACPI for processor (LAPIC) " 602 if (x86_quirks->mach_get_smp_config) {
605 "configuration information\n"); 603 if (x86_quirks->mach_get_smp_config(early))
604 return;
605 }
606 606
607 printk(KERN_INFO "Intel MultiProcessor Specification v1.%d\n", 607 printk(KERN_INFO "Intel MultiProcessor Specification v1.%d\n",
608 mpf->mpf_specification); 608 mpf->mpf_specification);
diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c
index 2c97f07f1c2c..8bd1bf9622a7 100644
--- a/arch/x86/kernel/nmi.c
+++ b/arch/x86/kernel/nmi.c
@@ -131,6 +131,11 @@ static void report_broken_nmi(int cpu, int *prev_nmi_count)
131 atomic_dec(&nmi_active); 131 atomic_dec(&nmi_active);
132} 132}
133 133
134static void __acpi_nmi_disable(void *__unused)
135{
136 apic_write(APIC_LVT0, APIC_DM_NMI | APIC_LVT_MASKED);
137}
138
134int __init check_nmi_watchdog(void) 139int __init check_nmi_watchdog(void)
135{ 140{
136 unsigned int *prev_nmi_count; 141 unsigned int *prev_nmi_count;
@@ -179,8 +184,12 @@ int __init check_nmi_watchdog(void)
179 kfree(prev_nmi_count); 184 kfree(prev_nmi_count);
180 return 0; 185 return 0;
181error: 186error:
182 if (nmi_watchdog == NMI_IO_APIC && !timer_through_8259) 187 if (nmi_watchdog == NMI_IO_APIC) {
183 disable_8259A_irq(0); 188 if (!timer_through_8259)
189 disable_8259A_irq(0);
190 on_each_cpu(__acpi_nmi_disable, NULL, 1);
191 }
192
184#ifdef CONFIG_X86_32 193#ifdef CONFIG_X86_32
185 timer_ack = 0; 194 timer_ack = 0;
186#endif 195#endif
@@ -199,12 +208,17 @@ static int __init setup_nmi_watchdog(char *str)
199 ++str; 208 ++str;
200 } 209 }
201 210
202 get_option(&str, &nmi); 211 if (!strncmp(str, "lapic", 5))
203 212 nmi_watchdog = NMI_LOCAL_APIC;
204 if (nmi >= NMI_INVALID) 213 else if (!strncmp(str, "ioapic", 6))
205 return 0; 214 nmi_watchdog = NMI_IO_APIC;
215 else {
216 get_option(&str, &nmi);
217 if (nmi >= NMI_INVALID)
218 return 0;
219 nmi_watchdog = nmi;
220 }
206 221
207 nmi_watchdog = nmi;
208 return 1; 222 return 1;
209} 223}
210__setup("nmi_watchdog=", setup_nmi_watchdog); 224__setup("nmi_watchdog=", setup_nmi_watchdog);
@@ -285,11 +299,6 @@ void acpi_nmi_enable(void)
285 on_each_cpu(__acpi_nmi_enable, NULL, 1); 299 on_each_cpu(__acpi_nmi_enable, NULL, 1);
286} 300}
287 301
288static void __acpi_nmi_disable(void *__unused)
289{
290 apic_write(APIC_LVT0, APIC_DM_NMI | APIC_LVT_MASKED);
291}
292
293/* 302/*
294 * Disable timer based NMIs on all CPUs: 303 * Disable timer based NMIs on all CPUs:
295 */ 304 */
@@ -340,6 +349,8 @@ void stop_apic_nmi_watchdog(void *unused)
340 return; 349 return;
341 if (nmi_watchdog == NMI_LOCAL_APIC) 350 if (nmi_watchdog == NMI_LOCAL_APIC)
342 lapic_watchdog_stop(); 351 lapic_watchdog_stop();
352 else
353 __acpi_nmi_disable(NULL);
343 __get_cpu_var(wd_enabled) = 0; 354 __get_cpu_var(wd_enabled) = 0;
344 atomic_dec(&nmi_active); 355 atomic_dec(&nmi_active);
345} 356}
@@ -465,6 +476,24 @@ nmi_watchdog_tick(struct pt_regs *regs, unsigned reason)
465 476
466#ifdef CONFIG_SYSCTL 477#ifdef CONFIG_SYSCTL
467 478
479static void enable_ioapic_nmi_watchdog_single(void *unused)
480{
481 __get_cpu_var(wd_enabled) = 1;
482 atomic_inc(&nmi_active);
483 __acpi_nmi_enable(NULL);
484}
485
486static void enable_ioapic_nmi_watchdog(void)
487{
488 on_each_cpu(enable_ioapic_nmi_watchdog_single, NULL, 1);
489 touch_nmi_watchdog();
490}
491
492static void disable_ioapic_nmi_watchdog(void)
493{
494 on_each_cpu(stop_apic_nmi_watchdog, NULL, 1);
495}
496
468static int __init setup_unknown_nmi_panic(char *str) 497static int __init setup_unknown_nmi_panic(char *str)
469{ 498{
470 unknown_nmi_panic = 1; 499 unknown_nmi_panic = 1;
@@ -507,6 +536,11 @@ int proc_nmi_enabled(struct ctl_table *table, int write, struct file *file,
507 enable_lapic_nmi_watchdog(); 536 enable_lapic_nmi_watchdog();
508 else 537 else
509 disable_lapic_nmi_watchdog(); 538 disable_lapic_nmi_watchdog();
539 } else if (nmi_watchdog == NMI_IO_APIC) {
540 if (nmi_watchdog_enabled)
541 enable_ioapic_nmi_watchdog();
542 else
543 disable_ioapic_nmi_watchdog();
510 } else { 544 } else {
511 printk(KERN_WARNING 545 printk(KERN_WARNING
512 "NMI watchdog doesn't know what hardware to touch\n"); 546 "NMI watchdog doesn't know what hardware to touch\n");
diff --git a/arch/x86/kernel/numaq_32.c b/arch/x86/kernel/numaq_32.c
index 4caff39078e0..0deea37a53cf 100644
--- a/arch/x86/kernel/numaq_32.c
+++ b/arch/x86/kernel/numaq_32.c
@@ -31,7 +31,7 @@
31#include <asm/numaq.h> 31#include <asm/numaq.h>
32#include <asm/topology.h> 32#include <asm/topology.h>
33#include <asm/processor.h> 33#include <asm/processor.h>
34#include <asm/mpspec.h> 34#include <asm/genapic.h>
35#include <asm/e820.h> 35#include <asm/e820.h>
36#include <asm/setup.h> 36#include <asm/setup.h>
37 37
@@ -235,6 +235,13 @@ static int __init numaq_setup_ioapic_ids(void)
235 return 1; 235 return 1;
236} 236}
237 237
238static int __init numaq_update_genapic(void)
239{
240 genapic->wakeup_cpu = wakeup_secondary_cpu_via_nmi;
241
242 return 0;
243}
244
238static struct x86_quirks numaq_x86_quirks __initdata = { 245static struct x86_quirks numaq_x86_quirks __initdata = {
239 .arch_pre_time_init = numaq_pre_time_init, 246 .arch_pre_time_init = numaq_pre_time_init,
240 .arch_time_init = NULL, 247 .arch_time_init = NULL,
@@ -250,6 +257,7 @@ static struct x86_quirks numaq_x86_quirks __initdata = {
250 .mpc_oem_pci_bus = mpc_oem_pci_bus, 257 .mpc_oem_pci_bus = mpc_oem_pci_bus,
251 .smp_read_mpc_oem = smp_read_mpc_oem, 258 .smp_read_mpc_oem = smp_read_mpc_oem,
252 .setup_ioapic_ids = numaq_setup_ioapic_ids, 259 .setup_ioapic_ids = numaq_setup_ioapic_ids,
260 .update_genapic = numaq_update_genapic,
253}; 261};
254 262
255void numaq_mps_oem_check(struct mp_config_table *mpc, char *oem, 263void numaq_mps_oem_check(struct mp_config_table *mpc, char *oem,
diff --git a/arch/x86/kernel/paravirt-spinlocks.c b/arch/x86/kernel/paravirt-spinlocks.c
index 0e9f1982b1dd..95777b0faa73 100644
--- a/arch/x86/kernel/paravirt-spinlocks.c
+++ b/arch/x86/kernel/paravirt-spinlocks.c
@@ -7,7 +7,8 @@
7 7
8#include <asm/paravirt.h> 8#include <asm/paravirt.h>
9 9
10static void default_spin_lock_flags(struct raw_spinlock *lock, unsigned long flags) 10static inline void
11default_spin_lock_flags(raw_spinlock_t *lock, unsigned long flags)
11{ 12{
12 __raw_spin_lock(lock); 13 __raw_spin_lock(lock);
13} 14}
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c
index a42b02b4df68..a35eaa379ff6 100644
--- a/arch/x86/kernel/pci-gart_64.c
+++ b/arch/x86/kernel/pci-gart_64.c
@@ -123,6 +123,8 @@ static void free_iommu(unsigned long offset, int size)
123 123
124 spin_lock_irqsave(&iommu_bitmap_lock, flags); 124 spin_lock_irqsave(&iommu_bitmap_lock, flags);
125 iommu_area_free(iommu_gart_bitmap, offset, size); 125 iommu_area_free(iommu_gart_bitmap, offset, size);
126 if (offset >= next_bit)
127 next_bit = offset + size;
126 spin_unlock_irqrestore(&iommu_bitmap_lock, flags); 128 spin_unlock_irqrestore(&iommu_bitmap_lock, flags);
127} 129}
128 130
@@ -743,10 +745,8 @@ void __init gart_iommu_init(void)
743 unsigned long scratch; 745 unsigned long scratch;
744 long i; 746 long i;
745 747
746 if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0) { 748 if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0)
747 printk(KERN_INFO "PCI-GART: No AMD GART found.\n");
748 return; 749 return;
749 }
750 750
751#ifndef CONFIG_AGP_AMD64 751#ifndef CONFIG_AGP_AMD64
752 no_agp = 1; 752 no_agp = 1;
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index b06100f1d612..9bfc3f719d47 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -9,6 +9,7 @@
9#include <linux/pm.h> 9#include <linux/pm.h>
10#include <linux/clockchips.h> 10#include <linux/clockchips.h>
11#include <asm/system.h> 11#include <asm/system.h>
12#include <asm/apic.h>
12 13
13unsigned long idle_halt; 14unsigned long idle_halt;
14EXPORT_SYMBOL(idle_halt); 15EXPORT_SYMBOL(idle_halt);
@@ -123,6 +124,21 @@ void default_idle(void)
123EXPORT_SYMBOL(default_idle); 124EXPORT_SYMBOL(default_idle);
124#endif 125#endif
125 126
127void stop_this_cpu(void *dummy)
128{
129 local_irq_disable();
130 /*
131 * Remove this CPU:
132 */
133 cpu_clear(smp_processor_id(), cpu_online_map);
134 disable_local_APIC();
135
136 for (;;) {
137 if (hlt_works(smp_processor_id()))
138 halt();
139 }
140}
141
126static void do_nothing(void *unused) 142static void do_nothing(void *unused)
127{ 143{
128} 144}
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
index 0a6d8c12e10d..06180dff5b2e 100644
--- a/arch/x86/kernel/ptrace.c
+++ b/arch/x86/kernel/ptrace.c
@@ -929,17 +929,16 @@ void __cpuinit ptrace_bts_init_intel(struct cpuinfo_x86 *c)
929 switch (c->x86) { 929 switch (c->x86) {
930 case 0x6: 930 case 0x6:
931 switch (c->x86_model) { 931 switch (c->x86_model) {
932 case 0 ... 0xC:
933 /* sorry, don't know about them */
934 break;
932 case 0xD: 935 case 0xD:
933 case 0xE: /* Pentium M */ 936 case 0xE: /* Pentium M */
934 bts_configure(&bts_cfg_pentium_m); 937 bts_configure(&bts_cfg_pentium_m);
935 break; 938 break;
936 case 0xF: /* Core2 */ 939 default: /* Core2, Atom, ... */
937 case 0x1C: /* Atom */
938 bts_configure(&bts_cfg_core2); 940 bts_configure(&bts_cfg_core2);
939 break; 941 break;
940 default:
941 /* sorry, don't know about them */
942 break;
943 } 942 }
944 break; 943 break;
945 case 0xF: 944 case 0xF:
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index cc5a2545dd41..61f718df6eec 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -21,6 +21,9 @@
21# include <asm/iommu.h> 21# include <asm/iommu.h>
22#endif 22#endif
23 23
24#include <mach_ipi.h>
25
26
24/* 27/*
25 * Power off function, if any 28 * Power off function, if any
26 */ 29 */
@@ -36,7 +39,10 @@ int reboot_force;
36static int reboot_cpu = -1; 39static int reboot_cpu = -1;
37#endif 40#endif
38 41
39/* reboot=b[ios] | s[mp] | t[riple] | k[bd] | e[fi] [, [w]arm | [c]old] 42/* This is set by the PCI code if either type 1 or type 2 PCI is detected */
43bool port_cf9_safe = false;
44
45/* reboot=b[ios] | s[mp] | t[riple] | k[bd] | e[fi] [, [w]arm | [c]old] | p[ci]
40 warm Don't set the cold reboot flag 46 warm Don't set the cold reboot flag
41 cold Set the cold reboot flag 47 cold Set the cold reboot flag
42 bios Reboot by jumping through the BIOS (only for X86_32) 48 bios Reboot by jumping through the BIOS (only for X86_32)
@@ -45,6 +51,7 @@ static int reboot_cpu = -1;
45 kbd Use the keyboard controller. cold reset (default) 51 kbd Use the keyboard controller. cold reset (default)
46 acpi Use the RESET_REG in the FADT 52 acpi Use the RESET_REG in the FADT
47 efi Use efi reset_system runtime service 53 efi Use efi reset_system runtime service
54 pci Use the so-called "PCI reset register", CF9
48 force Avoid anything that could hang. 55 force Avoid anything that could hang.
49 */ 56 */
50static int __init reboot_setup(char *str) 57static int __init reboot_setup(char *str)
@@ -79,6 +86,7 @@ static int __init reboot_setup(char *str)
79 case 'k': 86 case 'k':
80 case 't': 87 case 't':
81 case 'e': 88 case 'e':
89 case 'p':
82 reboot_type = *str; 90 reboot_type = *str;
83 break; 91 break;
84 92
@@ -404,12 +412,27 @@ static void native_machine_emergency_restart(void)
404 reboot_type = BOOT_KBD; 412 reboot_type = BOOT_KBD;
405 break; 413 break;
406 414
407
408 case BOOT_EFI: 415 case BOOT_EFI:
409 if (efi_enabled) 416 if (efi_enabled)
410 efi.reset_system(reboot_mode ? EFI_RESET_WARM : EFI_RESET_COLD, 417 efi.reset_system(reboot_mode ?
418 EFI_RESET_WARM :
419 EFI_RESET_COLD,
411 EFI_SUCCESS, 0, NULL); 420 EFI_SUCCESS, 0, NULL);
421 reboot_type = BOOT_KBD;
422 break;
412 423
424 case BOOT_CF9:
425 port_cf9_safe = true;
426 /* fall through */
427
428 case BOOT_CF9_COND:
429 if (port_cf9_safe) {
430 u8 cf9 = inb(0xcf9) & ~6;
431 outb(cf9|2, 0xcf9); /* Request hard reset */
432 udelay(50);
433 outb(cf9|6, 0xcf9); /* Actually do the reset */
434 udelay(50);
435 }
413 reboot_type = BOOT_KBD; 436 reboot_type = BOOT_KBD;
414 break; 437 break;
415 } 438 }
@@ -470,6 +493,11 @@ static void native_machine_restart(char *__unused)
470 493
471static void native_machine_halt(void) 494static void native_machine_halt(void)
472{ 495{
496 /* stop other cpus and apics */
497 machine_shutdown();
498
499 /* stop this cpu */
500 stop_this_cpu(NULL);
473} 501}
474 502
475static void native_machine_power_off(void) 503static void native_machine_power_off(void)
@@ -523,3 +551,95 @@ void machine_crash_shutdown(struct pt_regs *regs)
523 machine_ops.crash_shutdown(regs); 551 machine_ops.crash_shutdown(regs);
524} 552}
525#endif 553#endif
554
555
556#if defined(CONFIG_SMP)
557
558/* This keeps a track of which one is crashing cpu. */
559static int crashing_cpu;
560static nmi_shootdown_cb shootdown_callback;
561
562static atomic_t waiting_for_crash_ipi;
563
564static int crash_nmi_callback(struct notifier_block *self,
565 unsigned long val, void *data)
566{
567 int cpu;
568
569 if (val != DIE_NMI_IPI)
570 return NOTIFY_OK;
571
572 cpu = raw_smp_processor_id();
573
574 /* Don't do anything if this handler is invoked on crashing cpu.
575 * Otherwise, system will completely hang. Crashing cpu can get
576 * an NMI if system was initially booted with nmi_watchdog parameter.
577 */
578 if (cpu == crashing_cpu)
579 return NOTIFY_STOP;
580 local_irq_disable();
581
582 shootdown_callback(cpu, (struct die_args *)data);
583
584 atomic_dec(&waiting_for_crash_ipi);
585 /* Assume hlt works */
586 halt();
587 for (;;)
588 cpu_relax();
589
590 return 1;
591}
592
593static void smp_send_nmi_allbutself(void)
594{
595 cpumask_t mask = cpu_online_map;
596 cpu_clear(safe_smp_processor_id(), mask);
597 if (!cpus_empty(mask))
598 send_IPI_mask(mask, NMI_VECTOR);
599}
600
601static struct notifier_block crash_nmi_nb = {
602 .notifier_call = crash_nmi_callback,
603};
604
605/* Halt all other CPUs, calling the specified function on each of them
606 *
607 * This function can be used to halt all other CPUs on crash
608 * or emergency reboot time. The function passed as parameter
609 * will be called inside a NMI handler on all CPUs.
610 */
611void nmi_shootdown_cpus(nmi_shootdown_cb callback)
612{
613 unsigned long msecs;
614 local_irq_disable();
615
616 /* Make a note of crashing cpu. Will be used in NMI callback.*/
617 crashing_cpu = safe_smp_processor_id();
618
619 shootdown_callback = callback;
620
621 atomic_set(&waiting_for_crash_ipi, num_online_cpus() - 1);
622 /* Would it be better to replace the trap vector here? */
623 if (register_die_notifier(&crash_nmi_nb))
624 return; /* return what? */
625 /* Ensure the new callback function is set before sending
626 * out the NMI
627 */
628 wmb();
629
630 smp_send_nmi_allbutself();
631
632 msecs = 1000; /* Wait at most a second for the other cpus to stop */
633 while ((atomic_read(&waiting_for_crash_ipi) > 0) && msecs) {
634 mdelay(1);
635 msecs--;
636 }
637
638 /* Leave the nmi callback set */
639}
640#else /* !CONFIG_SMP */
641void nmi_shootdown_cpus(nmi_shootdown_cb callback)
642{
643 /* No other CPUs to shoot down */
644}
645#endif
diff --git a/arch/x86/kernel/relocate_kernel_32.S b/arch/x86/kernel/relocate_kernel_32.S
index 6f50664b2ba5..a160f3119725 100644
--- a/arch/x86/kernel/relocate_kernel_32.S
+++ b/arch/x86/kernel/relocate_kernel_32.S
@@ -10,15 +10,12 @@
10#include <asm/page.h> 10#include <asm/page.h>
11#include <asm/kexec.h> 11#include <asm/kexec.h>
12#include <asm/processor-flags.h> 12#include <asm/processor-flags.h>
13#include <asm/pgtable.h>
14 13
15/* 14/*
16 * Must be relocatable PIC code callable as a C function 15 * Must be relocatable PIC code callable as a C function
17 */ 16 */
18 17
19#define PTR(x) (x << 2) 18#define PTR(x) (x << 2)
20#define PAGE_ATTR (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)
21#define PAE_PGD_ATTR (_PAGE_PRESENT)
22 19
23/* control_page + KEXEC_CONTROL_CODE_MAX_SIZE 20/* control_page + KEXEC_CONTROL_CODE_MAX_SIZE
24 * ~ control_page + PAGE_SIZE are used as data storage and stack for 21 * ~ control_page + PAGE_SIZE are used as data storage and stack for
@@ -39,7 +36,6 @@
39#define CP_PA_BACKUP_PAGES_MAP DATA(0x1c) 36#define CP_PA_BACKUP_PAGES_MAP DATA(0x1c)
40 37
41 .text 38 .text
42 .align PAGE_SIZE
43 .globl relocate_kernel 39 .globl relocate_kernel
44relocate_kernel: 40relocate_kernel:
45 /* Save the CPU context, used for jumping back */ 41 /* Save the CPU context, used for jumping back */
@@ -60,117 +56,6 @@ relocate_kernel:
60 movl %cr4, %eax 56 movl %cr4, %eax
61 movl %eax, CR4(%edi) 57 movl %eax, CR4(%edi)
62 58
63#ifdef CONFIG_X86_PAE
64 /* map the control page at its virtual address */
65
66 movl PTR(VA_PGD)(%ebp), %edi
67 movl PTR(VA_CONTROL_PAGE)(%ebp), %eax
68 andl $0xc0000000, %eax
69 shrl $27, %eax
70 addl %edi, %eax
71
72 movl PTR(PA_PMD_0)(%ebp), %edx
73 orl $PAE_PGD_ATTR, %edx
74 movl %edx, (%eax)
75
76 movl PTR(VA_PMD_0)(%ebp), %edi
77 movl PTR(VA_CONTROL_PAGE)(%ebp), %eax
78 andl $0x3fe00000, %eax
79 shrl $18, %eax
80 addl %edi, %eax
81
82 movl PTR(PA_PTE_0)(%ebp), %edx
83 orl $PAGE_ATTR, %edx
84 movl %edx, (%eax)
85
86 movl PTR(VA_PTE_0)(%ebp), %edi
87 movl PTR(VA_CONTROL_PAGE)(%ebp), %eax
88 andl $0x001ff000, %eax
89 shrl $9, %eax
90 addl %edi, %eax
91
92 movl PTR(PA_CONTROL_PAGE)(%ebp), %edx
93 orl $PAGE_ATTR, %edx
94 movl %edx, (%eax)
95
96 /* identity map the control page at its physical address */
97
98 movl PTR(VA_PGD)(%ebp), %edi
99 movl PTR(PA_CONTROL_PAGE)(%ebp), %eax
100 andl $0xc0000000, %eax
101 shrl $27, %eax
102 addl %edi, %eax
103
104 movl PTR(PA_PMD_1)(%ebp), %edx
105 orl $PAE_PGD_ATTR, %edx
106 movl %edx, (%eax)
107
108 movl PTR(VA_PMD_1)(%ebp), %edi
109 movl PTR(PA_CONTROL_PAGE)(%ebp), %eax
110 andl $0x3fe00000, %eax
111 shrl $18, %eax
112 addl %edi, %eax
113
114 movl PTR(PA_PTE_1)(%ebp), %edx
115 orl $PAGE_ATTR, %edx
116 movl %edx, (%eax)
117
118 movl PTR(VA_PTE_1)(%ebp), %edi
119 movl PTR(PA_CONTROL_PAGE)(%ebp), %eax
120 andl $0x001ff000, %eax
121 shrl $9, %eax
122 addl %edi, %eax
123
124 movl PTR(PA_CONTROL_PAGE)(%ebp), %edx
125 orl $PAGE_ATTR, %edx
126 movl %edx, (%eax)
127#else
128 /* map the control page at its virtual address */
129
130 movl PTR(VA_PGD)(%ebp), %edi
131 movl PTR(VA_CONTROL_PAGE)(%ebp), %eax
132 andl $0xffc00000, %eax
133 shrl $20, %eax
134 addl %edi, %eax
135
136 movl PTR(PA_PTE_0)(%ebp), %edx
137 orl $PAGE_ATTR, %edx
138 movl %edx, (%eax)
139
140 movl PTR(VA_PTE_0)(%ebp), %edi
141 movl PTR(VA_CONTROL_PAGE)(%ebp), %eax
142 andl $0x003ff000, %eax
143 shrl $10, %eax
144 addl %edi, %eax
145
146 movl PTR(PA_CONTROL_PAGE)(%ebp), %edx
147 orl $PAGE_ATTR, %edx
148 movl %edx, (%eax)
149
150 /* identity map the control page at its physical address */
151
152 movl PTR(VA_PGD)(%ebp), %edi
153 movl PTR(PA_CONTROL_PAGE)(%ebp), %eax
154 andl $0xffc00000, %eax
155 shrl $20, %eax
156 addl %edi, %eax
157
158 movl PTR(PA_PTE_1)(%ebp), %edx
159 orl $PAGE_ATTR, %edx
160 movl %edx, (%eax)
161
162 movl PTR(VA_PTE_1)(%ebp), %edi
163 movl PTR(PA_CONTROL_PAGE)(%ebp), %eax
164 andl $0x003ff000, %eax
165 shrl $10, %eax
166 addl %edi, %eax
167
168 movl PTR(PA_CONTROL_PAGE)(%ebp), %edx
169 orl $PAGE_ATTR, %edx
170 movl %edx, (%eax)
171#endif
172
173relocate_new_kernel:
174 /* read the arguments and say goodbye to the stack */ 59 /* read the arguments and say goodbye to the stack */
175 movl 20+4(%esp), %ebx /* page_list */ 60 movl 20+4(%esp), %ebx /* page_list */
176 movl 20+8(%esp), %ebp /* list of pages */ 61 movl 20+8(%esp), %ebp /* list of pages */
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 81f5d22747ae..a31223828597 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -98,6 +98,7 @@
98 98
99#include <mach_apic.h> 99#include <mach_apic.h>
100#include <asm/paravirt.h> 100#include <asm/paravirt.h>
101#include <asm/hypervisor.h>
101 102
102#include <asm/percpu.h> 103#include <asm/percpu.h>
103#include <asm/topology.h> 104#include <asm/topology.h>
@@ -584,161 +585,24 @@ static int __init setup_elfcorehdr(char *arg)
584early_param("elfcorehdr", setup_elfcorehdr); 585early_param("elfcorehdr", setup_elfcorehdr);
585#endif 586#endif
586 587
587static struct x86_quirks default_x86_quirks __initdata; 588static int __init default_update_genapic(void)
588
589struct x86_quirks *x86_quirks __initdata = &default_x86_quirks;
590
591/*
592 * Some BIOSes seem to corrupt the low 64k of memory during events
593 * like suspend/resume and unplugging an HDMI cable. Reserve all
594 * remaining free memory in that area and fill it with a distinct
595 * pattern.
596 */
597#ifdef CONFIG_X86_CHECK_BIOS_CORRUPTION
598#define MAX_SCAN_AREAS 8
599
600static int __read_mostly memory_corruption_check = -1;
601
602static unsigned __read_mostly corruption_check_size = 64*1024;
603static unsigned __read_mostly corruption_check_period = 60; /* seconds */
604
605static struct e820entry scan_areas[MAX_SCAN_AREAS];
606static int num_scan_areas;
607
608
609static int set_corruption_check(char *arg)
610{ 589{
611 char *end; 590#ifdef CONFIG_X86_SMP
612 591# if defined(CONFIG_X86_GENERICARCH) || defined(CONFIG_X86_64)
613 memory_corruption_check = simple_strtol(arg, &end, 10); 592 genapic->wakeup_cpu = wakeup_secondary_cpu_via_init;
614 593# endif
615 return (*end == 0) ? 0 : -EINVAL;
616}
617early_param("memory_corruption_check", set_corruption_check);
618
619static int set_corruption_check_period(char *arg)
620{
621 char *end;
622
623 corruption_check_period = simple_strtoul(arg, &end, 10);
624
625 return (*end == 0) ? 0 : -EINVAL;
626}
627early_param("memory_corruption_check_period", set_corruption_check_period);
628
629static int set_corruption_check_size(char *arg)
630{
631 char *end;
632 unsigned size;
633
634 size = memparse(arg, &end);
635
636 if (*end == '\0')
637 corruption_check_size = size;
638
639 return (size == corruption_check_size) ? 0 : -EINVAL;
640}
641early_param("memory_corruption_check_size", set_corruption_check_size);
642
643
644static void __init setup_bios_corruption_check(void)
645{
646 u64 addr = PAGE_SIZE; /* assume first page is reserved anyway */
647
648 if (memory_corruption_check == -1) {
649 memory_corruption_check =
650#ifdef CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
651 1
652#else
653 0
654#endif 594#endif
655 ;
656 }
657
658 if (corruption_check_size == 0)
659 memory_corruption_check = 0;
660
661 if (!memory_corruption_check)
662 return;
663
664 corruption_check_size = round_up(corruption_check_size, PAGE_SIZE);
665
666 while(addr < corruption_check_size && num_scan_areas < MAX_SCAN_AREAS) {
667 u64 size;
668 addr = find_e820_area_size(addr, &size, PAGE_SIZE);
669
670 if (addr == 0)
671 break;
672 595
673 if ((addr + size) > corruption_check_size) 596 return 0;
674 size = corruption_check_size - addr;
675
676 if (size == 0)
677 break;
678
679 e820_update_range(addr, size, E820_RAM, E820_RESERVED);
680 scan_areas[num_scan_areas].addr = addr;
681 scan_areas[num_scan_areas].size = size;
682 num_scan_areas++;
683
684 /* Assume we've already mapped this early memory */
685 memset(__va(addr), 0, size);
686
687 addr += size;
688 }
689
690 printk(KERN_INFO "Scanning %d areas for low memory corruption\n",
691 num_scan_areas);
692 update_e820();
693}
694
695static struct timer_list periodic_check_timer;
696
697void check_for_bios_corruption(void)
698{
699 int i;
700 int corruption = 0;
701
702 if (!memory_corruption_check)
703 return;
704
705 for(i = 0; i < num_scan_areas; i++) {
706 unsigned long *addr = __va(scan_areas[i].addr);
707 unsigned long size = scan_areas[i].size;
708
709 for(; size; addr++, size -= sizeof(unsigned long)) {
710 if (!*addr)
711 continue;
712 printk(KERN_ERR "Corrupted low memory at %p (%lx phys) = %08lx\n",
713 addr, __pa(addr), *addr);
714 corruption = 1;
715 *addr = 0;
716 }
717 }
718
719 WARN(corruption, KERN_ERR "Memory corruption detected in low memory\n");
720}
721
722static void periodic_check_for_corruption(unsigned long data)
723{
724 check_for_bios_corruption();
725 mod_timer(&periodic_check_timer, round_jiffies(jiffies + corruption_check_period*HZ));
726} 597}
727 598
728void start_periodic_check_for_corruption(void) 599static struct x86_quirks default_x86_quirks __initdata = {
729{ 600 .update_genapic = default_update_genapic,
730 if (!memory_corruption_check || corruption_check_period == 0) 601};
731 return;
732
733 printk(KERN_INFO "Scanning for low memory corruption every %d seconds\n",
734 corruption_check_period);
735 602
736 init_timer(&periodic_check_timer); 603struct x86_quirks *x86_quirks __initdata = &default_x86_quirks;
737 periodic_check_timer.function = &periodic_check_for_corruption;
738 periodic_check_for_corruption(0);
739}
740#endif
741 604
605#ifdef CONFIG_X86_RESERVE_LOW_64K
742static int __init dmi_low_memory_corruption(const struct dmi_system_id *d) 606static int __init dmi_low_memory_corruption(const struct dmi_system_id *d)
743{ 607{
744 printk(KERN_NOTICE 608 printk(KERN_NOTICE
@@ -750,6 +614,7 @@ static int __init dmi_low_memory_corruption(const struct dmi_system_id *d)
750 614
751 return 0; 615 return 0;
752} 616}
617#endif
753 618
754/* List of systems that have known low memory corruption BIOS problems */ 619/* List of systems that have known low memory corruption BIOS problems */
755static struct dmi_system_id __initdata bad_bios_dmi_table[] = { 620static struct dmi_system_id __initdata bad_bios_dmi_table[] = {
@@ -795,6 +660,9 @@ void __init setup_arch(char **cmdline_p)
795 printk(KERN_INFO "Command line: %s\n", boot_command_line); 660 printk(KERN_INFO "Command line: %s\n", boot_command_line);
796#endif 661#endif
797 662
663 /* VMI may relocate the fixmap; do this before touching ioremap area */
664 vmi_init();
665
798 early_cpu_init(); 666 early_cpu_init();
799 early_ioremap_init(); 667 early_ioremap_init();
800 668
@@ -881,13 +749,8 @@ void __init setup_arch(char **cmdline_p)
881 check_efer(); 749 check_efer();
882#endif 750#endif
883 751
884#if defined(CONFIG_VMI) && defined(CONFIG_X86_32) 752 /* Must be before kernel pagetables are setup */
885 /* 753 vmi_activate();
886 * Must be before kernel pagetables are setup
887 * or fixmap area is touched.
888 */
889 vmi_init();
890#endif
891 754
892 /* after early param, so could get panic from serial */ 755 /* after early param, so could get panic from serial */
893 reserve_early_setup_data(); 756 reserve_early_setup_data();
@@ -910,6 +773,12 @@ void __init setup_arch(char **cmdline_p)
910 773
911 dmi_check_system(bad_bios_dmi_table); 774 dmi_check_system(bad_bios_dmi_table);
912 775
776 /*
777 * VMware detection requires dmi to be available, so this
778 * needs to be done after dmi_scan_machine, for the BP.
779 */
780 init_hypervisor(&boot_cpu_data);
781
913#ifdef CONFIG_X86_32 782#ifdef CONFIG_X86_32
914 probe_roms(); 783 probe_roms();
915#endif 784#endif
diff --git a/arch/x86/kernel/sigframe.h b/arch/x86/kernel/sigframe.h
deleted file mode 100644
index cc673aa55ce4..000000000000
--- a/arch/x86/kernel/sigframe.h
+++ /dev/null
@@ -1,42 +0,0 @@
1#ifdef CONFIG_X86_32
2struct sigframe {
3 char __user *pretcode;
4 int sig;
5 struct sigcontext sc;
6 /*
7 * fpstate is unused. fpstate is moved/allocated after
8 * retcode[] below. This movement allows to have the FP state and the
9 * future state extensions (xsave) stay together.
10 * And at the same time retaining the unused fpstate, prevents changing
11 * the offset of extramask[] in the sigframe and thus prevent any
12 * legacy application accessing/modifying it.
13 */
14 struct _fpstate fpstate_unused;
15 unsigned long extramask[_NSIG_WORDS-1];
16 char retcode[8];
17 /* fp state follows here */
18};
19
20struct rt_sigframe {
21 char __user *pretcode;
22 int sig;
23 struct siginfo __user *pinfo;
24 void __user *puc;
25 struct siginfo info;
26 struct ucontext uc;
27 char retcode[8];
28 /* fp state follows here */
29};
30#else
31struct rt_sigframe {
32 char __user *pretcode;
33 struct ucontext uc;
34 struct siginfo info;
35 /* fp state follows here */
36};
37
38int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
39 sigset_t *set, struct pt_regs *regs);
40int ia32_setup_frame(int sig, struct k_sigaction *ka,
41 sigset_t *set, struct pt_regs *regs);
42#endif
diff --git a/arch/x86/kernel/signal_32.c b/arch/x86/kernel/signal.c
index d6dd057d0f22..89bb7668041d 100644
--- a/arch/x86/kernel/signal_32.c
+++ b/arch/x86/kernel/signal.c
@@ -1,36 +1,41 @@
1/* 1/*
2 * Copyright (C) 1991, 1992 Linus Torvalds 2 * Copyright (C) 1991, 1992 Linus Torvalds
3 * Copyright (C) 2000, 2001, 2002 Andi Kleen SuSE Labs
3 * 4 *
4 * 1997-11-28 Modified for POSIX.1b signals by Richard Henderson 5 * 1997-11-28 Modified for POSIX.1b signals by Richard Henderson
5 * 2000-06-20 Pentium III FXSR, SSE support by Gareth Hughes 6 * 2000-06-20 Pentium III FXSR, SSE support by Gareth Hughes
7 * 2000-2002 x86-64 support by Andi Kleen
6 */ 8 */
7#include <linux/list.h>
8 9
9#include <linux/personality.h> 10#include <linux/sched.h>
10#include <linux/binfmts.h> 11#include <linux/mm.h>
11#include <linux/suspend.h> 12#include <linux/smp.h>
12#include <linux/kernel.h> 13#include <linux/kernel.h>
13#include <linux/ptrace.h>
14#include <linux/signal.h> 14#include <linux/signal.h>
15#include <linux/stddef.h>
16#include <linux/unistd.h>
17#include <linux/errno.h> 15#include <linux/errno.h>
18#include <linux/sched.h>
19#include <linux/wait.h> 16#include <linux/wait.h>
17#include <linux/ptrace.h>
20#include <linux/tracehook.h> 18#include <linux/tracehook.h>
21#include <linux/elf.h> 19#include <linux/unistd.h>
22#include <linux/smp.h> 20#include <linux/stddef.h>
23#include <linux/mm.h> 21#include <linux/personality.h>
22#include <linux/uaccess.h>
24 23
25#include <asm/processor.h> 24#include <asm/processor.h>
26#include <asm/ucontext.h> 25#include <asm/ucontext.h>
27#include <asm/uaccess.h>
28#include <asm/i387.h> 26#include <asm/i387.h>
29#include <asm/vdso.h> 27#include <asm/vdso.h>
28
29#ifdef CONFIG_X86_64
30#include <asm/proto.h>
31#include <asm/ia32_unistd.h>
32#include <asm/mce.h>
33#endif /* CONFIG_X86_64 */
34
30#include <asm/syscall.h> 35#include <asm/syscall.h>
31#include <asm/syscalls.h> 36#include <asm/syscalls.h>
32 37
33#include "sigframe.h" 38#include <asm/sigframe.h>
34 39
35#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 40#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
36 41
@@ -45,74 +50,6 @@
45# define FIX_EFLAGS __FIX_EFLAGS 50# define FIX_EFLAGS __FIX_EFLAGS
46#endif 51#endif
47 52
48/*
49 * Atomically swap in the new signal mask, and wait for a signal.
50 */
51asmlinkage int
52sys_sigsuspend(int history0, int history1, old_sigset_t mask)
53{
54 mask &= _BLOCKABLE;
55 spin_lock_irq(&current->sighand->siglock);
56 current->saved_sigmask = current->blocked;
57 siginitset(&current->blocked, mask);
58 recalc_sigpending();
59 spin_unlock_irq(&current->sighand->siglock);
60
61 current->state = TASK_INTERRUPTIBLE;
62 schedule();
63 set_restore_sigmask();
64
65 return -ERESTARTNOHAND;
66}
67
68asmlinkage int
69sys_sigaction(int sig, const struct old_sigaction __user *act,
70 struct old_sigaction __user *oact)
71{
72 struct k_sigaction new_ka, old_ka;
73 int ret;
74
75 if (act) {
76 old_sigset_t mask;
77
78 if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
79 __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
80 __get_user(new_ka.sa.sa_restorer, &act->sa_restorer))
81 return -EFAULT;
82
83 __get_user(new_ka.sa.sa_flags, &act->sa_flags);
84 __get_user(mask, &act->sa_mask);
85 siginitset(&new_ka.sa.sa_mask, mask);
86 }
87
88 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
89
90 if (!ret && oact) {
91 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
92 __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
93 __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer))
94 return -EFAULT;
95
96 __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
97 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask);
98 }
99
100 return ret;
101}
102
103asmlinkage int sys_sigaltstack(unsigned long bx)
104{
105 /*
106 * This is needed to make gcc realize it doesn't own the
107 * "struct pt_regs"
108 */
109 struct pt_regs *regs = (struct pt_regs *)&bx;
110 const stack_t __user *uss = (const stack_t __user *)bx;
111 stack_t __user *uoss = (stack_t __user *)regs->cx;
112
113 return do_sigaltstack(uss, uoss, regs->sp);
114}
115
116#define COPY(x) { \ 53#define COPY(x) { \
117 err |= __get_user(regs->x, &sc->x); \ 54 err |= __get_user(regs->x, &sc->x); \
118} 55}
@@ -123,7 +60,7 @@ asmlinkage int sys_sigaltstack(unsigned long bx)
123 regs->seg = tmp; \ 60 regs->seg = tmp; \
124} 61}
125 62
126#define COPY_SEG_STRICT(seg) { \ 63#define COPY_SEG_CPL3(seg) { \
127 unsigned short tmp; \ 64 unsigned short tmp; \
128 err |= __get_user(tmp, &sc->seg); \ 65 err |= __get_user(tmp, &sc->seg); \
129 regs->seg = tmp | 3; \ 66 regs->seg = tmp | 3; \
@@ -135,9 +72,6 @@ asmlinkage int sys_sigaltstack(unsigned long bx)
135 loadsegment(seg, tmp); \ 72 loadsegment(seg, tmp); \
136} 73}
137 74
138/*
139 * Do a signal return; undo the signal stack.
140 */
141static int 75static int
142restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, 76restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc,
143 unsigned long *pax) 77 unsigned long *pax)
@@ -149,14 +83,36 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc,
149 /* Always make any pending restarted system calls return -EINTR */ 83 /* Always make any pending restarted system calls return -EINTR */
150 current_thread_info()->restart_block.fn = do_no_restart_syscall; 84 current_thread_info()->restart_block.fn = do_no_restart_syscall;
151 85
86#ifdef CONFIG_X86_32
152 GET_SEG(gs); 87 GET_SEG(gs);
153 COPY_SEG(fs); 88 COPY_SEG(fs);
154 COPY_SEG(es); 89 COPY_SEG(es);
155 COPY_SEG(ds); 90 COPY_SEG(ds);
91#endif /* CONFIG_X86_32 */
92
156 COPY(di); COPY(si); COPY(bp); COPY(sp); COPY(bx); 93 COPY(di); COPY(si); COPY(bp); COPY(sp); COPY(bx);
157 COPY(dx); COPY(cx); COPY(ip); 94 COPY(dx); COPY(cx); COPY(ip);
158 COPY_SEG_STRICT(cs); 95
159 COPY_SEG_STRICT(ss); 96#ifdef CONFIG_X86_64
97 COPY(r8);
98 COPY(r9);
99 COPY(r10);
100 COPY(r11);
101 COPY(r12);
102 COPY(r13);
103 COPY(r14);
104 COPY(r15);
105#endif /* CONFIG_X86_64 */
106
107#ifdef CONFIG_X86_32
108 COPY_SEG_CPL3(cs);
109 COPY_SEG_CPL3(ss);
110#else /* !CONFIG_X86_32 */
111 /* Kernel saves and restores only the CS segment register on signals,
112 * which is the bare minimum needed to allow mixed 32/64-bit code.
113 * App's signal handler can save/restore other segments if needed. */
114 COPY_SEG_CPL3(cs);
115#endif /* CONFIG_X86_32 */
160 116
161 err |= __get_user(tmpflags, &sc->flags); 117 err |= __get_user(tmpflags, &sc->flags);
162 regs->flags = (regs->flags & ~FIX_EFLAGS) | (tmpflags & FIX_EFLAGS); 118 regs->flags = (regs->flags & ~FIX_EFLAGS) | (tmpflags & FIX_EFLAGS);
@@ -169,102 +125,24 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc,
169 return err; 125 return err;
170} 126}
171 127
172asmlinkage unsigned long sys_sigreturn(unsigned long __unused)
173{
174 struct sigframe __user *frame;
175 struct pt_regs *regs;
176 unsigned long ax;
177 sigset_t set;
178
179 regs = (struct pt_regs *) &__unused;
180 frame = (struct sigframe __user *)(regs->sp - 8);
181
182 if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
183 goto badframe;
184 if (__get_user(set.sig[0], &frame->sc.oldmask) || (_NSIG_WORDS > 1
185 && __copy_from_user(&set.sig[1], &frame->extramask,
186 sizeof(frame->extramask))))
187 goto badframe;
188
189 sigdelsetmask(&set, ~_BLOCKABLE);
190 spin_lock_irq(&current->sighand->siglock);
191 current->blocked = set;
192 recalc_sigpending();
193 spin_unlock_irq(&current->sighand->siglock);
194
195 if (restore_sigcontext(regs, &frame->sc, &ax))
196 goto badframe;
197 return ax;
198
199badframe:
200 if (show_unhandled_signals && printk_ratelimit()) {
201 printk("%s%s[%d] bad frame in sigreturn frame:"
202 "%p ip:%lx sp:%lx oeax:%lx",
203 task_pid_nr(current) > 1 ? KERN_INFO : KERN_EMERG,
204 current->comm, task_pid_nr(current), frame, regs->ip,
205 regs->sp, regs->orig_ax);
206 print_vma_addr(" in ", regs->ip);
207 printk(KERN_CONT "\n");
208 }
209
210 force_sig(SIGSEGV, current);
211
212 return 0;
213}
214
215static long do_rt_sigreturn(struct pt_regs *regs)
216{
217 struct rt_sigframe __user *frame;
218 unsigned long ax;
219 sigset_t set;
220
221 frame = (struct rt_sigframe __user *)(regs->sp - sizeof(long));
222 if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
223 goto badframe;
224 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
225 goto badframe;
226
227 sigdelsetmask(&set, ~_BLOCKABLE);
228 spin_lock_irq(&current->sighand->siglock);
229 current->blocked = set;
230 recalc_sigpending();
231 spin_unlock_irq(&current->sighand->siglock);
232
233 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &ax))
234 goto badframe;
235
236 if (do_sigaltstack(&frame->uc.uc_stack, NULL, regs->sp) == -EFAULT)
237 goto badframe;
238
239 return ax;
240
241badframe:
242 signal_fault(regs, frame, "rt_sigreturn");
243 return 0;
244}
245
246asmlinkage int sys_rt_sigreturn(unsigned long __unused)
247{
248 struct pt_regs *regs = (struct pt_regs *)&__unused;
249
250 return do_rt_sigreturn(regs);
251}
252
253/*
254 * Set up a signal frame.
255 */
256static int 128static int
257setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate, 129setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate,
258 struct pt_regs *regs, unsigned long mask) 130 struct pt_regs *regs, unsigned long mask)
259{ 131{
260 int tmp, err = 0; 132 int err = 0;
261 133
262 err |= __put_user(regs->fs, (unsigned int __user *)&sc->fs); 134#ifdef CONFIG_X86_32
263 savesegment(gs, tmp); 135 {
264 err |= __put_user(tmp, (unsigned int __user *)&sc->gs); 136 unsigned int tmp;
265 137
138 savesegment(gs, tmp);
139 err |= __put_user(tmp, (unsigned int __user *)&sc->gs);
140 }
141 err |= __put_user(regs->fs, (unsigned int __user *)&sc->fs);
266 err |= __put_user(regs->es, (unsigned int __user *)&sc->es); 142 err |= __put_user(regs->es, (unsigned int __user *)&sc->es);
267 err |= __put_user(regs->ds, (unsigned int __user *)&sc->ds); 143 err |= __put_user(regs->ds, (unsigned int __user *)&sc->ds);
144#endif /* CONFIG_X86_32 */
145
268 err |= __put_user(regs->di, &sc->di); 146 err |= __put_user(regs->di, &sc->di);
269 err |= __put_user(regs->si, &sc->si); 147 err |= __put_user(regs->si, &sc->si);
270 err |= __put_user(regs->bp, &sc->bp); 148 err |= __put_user(regs->bp, &sc->bp);
@@ -273,19 +151,33 @@ setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate,
273 err |= __put_user(regs->dx, &sc->dx); 151 err |= __put_user(regs->dx, &sc->dx);
274 err |= __put_user(regs->cx, &sc->cx); 152 err |= __put_user(regs->cx, &sc->cx);
275 err |= __put_user(regs->ax, &sc->ax); 153 err |= __put_user(regs->ax, &sc->ax);
154#ifdef CONFIG_X86_64
155 err |= __put_user(regs->r8, &sc->r8);
156 err |= __put_user(regs->r9, &sc->r9);
157 err |= __put_user(regs->r10, &sc->r10);
158 err |= __put_user(regs->r11, &sc->r11);
159 err |= __put_user(regs->r12, &sc->r12);
160 err |= __put_user(regs->r13, &sc->r13);
161 err |= __put_user(regs->r14, &sc->r14);
162 err |= __put_user(regs->r15, &sc->r15);
163#endif /* CONFIG_X86_64 */
164
276 err |= __put_user(current->thread.trap_no, &sc->trapno); 165 err |= __put_user(current->thread.trap_no, &sc->trapno);
277 err |= __put_user(current->thread.error_code, &sc->err); 166 err |= __put_user(current->thread.error_code, &sc->err);
278 err |= __put_user(regs->ip, &sc->ip); 167 err |= __put_user(regs->ip, &sc->ip);
168#ifdef CONFIG_X86_32
279 err |= __put_user(regs->cs, (unsigned int __user *)&sc->cs); 169 err |= __put_user(regs->cs, (unsigned int __user *)&sc->cs);
280 err |= __put_user(regs->flags, &sc->flags); 170 err |= __put_user(regs->flags, &sc->flags);
281 err |= __put_user(regs->sp, &sc->sp_at_signal); 171 err |= __put_user(regs->sp, &sc->sp_at_signal);
282 err |= __put_user(regs->ss, (unsigned int __user *)&sc->ss); 172 err |= __put_user(regs->ss, (unsigned int __user *)&sc->ss);
173#else /* !CONFIG_X86_32 */
174 err |= __put_user(regs->flags, &sc->flags);
175 err |= __put_user(regs->cs, &sc->cs);
176 err |= __put_user(0, &sc->gs);
177 err |= __put_user(0, &sc->fs);
178#endif /* CONFIG_X86_32 */
283 179
284 tmp = save_i387_xstate(fpstate); 180 err |= __put_user(fpstate, &sc->fpstate);
285 if (tmp < 0)
286 err = 1;
287 else
288 err |= __put_user(tmp ? fpstate : NULL, &sc->fpstate);
289 181
290 /* non-iBCS2 extensions.. */ 182 /* non-iBCS2 extensions.. */
291 err |= __put_user(mask, &sc->oldmask); 183 err |= __put_user(mask, &sc->oldmask);
@@ -295,6 +187,32 @@ setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate,
295} 187}
296 188
297/* 189/*
190 * Set up a signal frame.
191 */
192#ifdef CONFIG_X86_32
193static const struct {
194 u16 poplmovl;
195 u32 val;
196 u16 int80;
197} __attribute__((packed)) retcode = {
198 0xb858, /* popl %eax; movl $..., %eax */
199 __NR_sigreturn,
200 0x80cd, /* int $0x80 */
201};
202
203static const struct {
204 u8 movl;
205 u32 val;
206 u16 int80;
207 u8 pad;
208} __attribute__((packed)) rt_retcode = {
209 0xb8, /* movl $..., %eax */
210 __NR_rt_sigreturn,
211 0x80cd, /* int $0x80 */
212 0
213};
214
215/*
298 * Determine which stack to use.. 216 * Determine which stack to use..
299 */ 217 */
300static inline void __user * 218static inline void __user *
@@ -328,6 +246,8 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size,
328 if (used_math()) { 246 if (used_math()) {
329 sp = sp - sig_xstate_size; 247 sp = sp - sig_xstate_size;
330 *fpstate = (struct _fpstate *) sp; 248 *fpstate = (struct _fpstate *) sp;
249 if (save_i387_xstate(*fpstate) < 0)
250 return (void __user *)-1L;
331 } 251 }
332 252
333 sp -= frame_size; 253 sp -= frame_size;
@@ -383,9 +303,7 @@ __setup_frame(int sig, struct k_sigaction *ka, sigset_t *set,
383 * reasons and because gdb uses it as a signature to notice 303 * reasons and because gdb uses it as a signature to notice
384 * signal handler stack frames. 304 * signal handler stack frames.
385 */ 305 */
386 err |= __put_user(0xb858, (short __user *)(frame->retcode+0)); 306 err |= __put_user(*((u64 *)&retcode), (u64 *)frame->retcode);
387 err |= __put_user(__NR_sigreturn, (int __user *)(frame->retcode+2));
388 err |= __put_user(0x80cd, (short __user *)(frame->retcode+6));
389 307
390 if (err) 308 if (err)
391 return -EFAULT; 309 return -EFAULT;
@@ -454,9 +372,7 @@ static int __setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
454 * reasons and because gdb uses it as a signature to notice 372 * reasons and because gdb uses it as a signature to notice
455 * signal handler stack frames. 373 * signal handler stack frames.
456 */ 374 */
457 err |= __put_user(0xb8, (char __user *)(frame->retcode+0)); 375 err |= __put_user(*((u64 *)&rt_retcode), (u64 *)frame->retcode);
458 err |= __put_user(__NR_rt_sigreturn, (int __user *)(frame->retcode+1));
459 err |= __put_user(0x80cd, (short __user *)(frame->retcode+5));
460 376
461 if (err) 377 if (err)
462 return -EFAULT; 378 return -EFAULT;
@@ -475,23 +391,293 @@ static int __setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
475 391
476 return 0; 392 return 0;
477} 393}
394#else /* !CONFIG_X86_32 */
395/*
396 * Determine which stack to use..
397 */
398static void __user *
399get_stack(struct k_sigaction *ka, unsigned long sp, unsigned long size)
400{
401 /* Default to using normal stack - redzone*/
402 sp -= 128;
403
404 /* This is the X/Open sanctioned signal stack switching. */
405 if (ka->sa.sa_flags & SA_ONSTACK) {
406 if (sas_ss_flags(sp) == 0)
407 sp = current->sas_ss_sp + current->sas_ss_size;
408 }
409
410 return (void __user *)round_down(sp - size, 64);
411}
412
413static int __setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
414 sigset_t *set, struct pt_regs *regs)
415{
416 struct rt_sigframe __user *frame;
417 void __user *fp = NULL;
418 int err = 0;
419 struct task_struct *me = current;
420
421 if (used_math()) {
422 fp = get_stack(ka, regs->sp, sig_xstate_size);
423 frame = (void __user *)round_down(
424 (unsigned long)fp - sizeof(struct rt_sigframe), 16) - 8;
425
426 if (save_i387_xstate(fp) < 0)
427 return -EFAULT;
428 } else
429 frame = get_stack(ka, regs->sp, sizeof(struct rt_sigframe)) - 8;
430
431 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
432 return -EFAULT;
433
434 if (ka->sa.sa_flags & SA_SIGINFO) {
435 if (copy_siginfo_to_user(&frame->info, info))
436 return -EFAULT;
437 }
438
439 /* Create the ucontext. */
440 if (cpu_has_xsave)
441 err |= __put_user(UC_FP_XSTATE, &frame->uc.uc_flags);
442 else
443 err |= __put_user(0, &frame->uc.uc_flags);
444 err |= __put_user(0, &frame->uc.uc_link);
445 err |= __put_user(me->sas_ss_sp, &frame->uc.uc_stack.ss_sp);
446 err |= __put_user(sas_ss_flags(regs->sp),
447 &frame->uc.uc_stack.ss_flags);
448 err |= __put_user(me->sas_ss_size, &frame->uc.uc_stack.ss_size);
449 err |= setup_sigcontext(&frame->uc.uc_mcontext, fp, regs, set->sig[0]);
450 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
451
452 /* Set up to return from userspace. If provided, use a stub
453 already in userspace. */
454 /* x86-64 should always use SA_RESTORER. */
455 if (ka->sa.sa_flags & SA_RESTORER) {
456 err |= __put_user(ka->sa.sa_restorer, &frame->pretcode);
457 } else {
458 /* could use a vstub here */
459 return -EFAULT;
460 }
461
462 if (err)
463 return -EFAULT;
464
465 /* Set up registers for signal handler */
466 regs->di = sig;
467 /* In case the signal handler was declared without prototypes */
468 regs->ax = 0;
469
470 /* This also works for non SA_SIGINFO handlers because they expect the
471 next argument after the signal number on the stack. */
472 regs->si = (unsigned long)&frame->info;
473 regs->dx = (unsigned long)&frame->uc;
474 regs->ip = (unsigned long) ka->sa.sa_handler;
475
476 regs->sp = (unsigned long)frame;
477
478 /* Set up the CS register to run signal handlers in 64-bit mode,
479 even if the handler happens to be interrupting 32-bit code. */
480 regs->cs = __USER_CS;
481
482 return 0;
483}
484#endif /* CONFIG_X86_32 */
485
486#ifdef CONFIG_X86_32
487/*
488 * Atomically swap in the new signal mask, and wait for a signal.
489 */
490asmlinkage int
491sys_sigsuspend(int history0, int history1, old_sigset_t mask)
492{
493 mask &= _BLOCKABLE;
494 spin_lock_irq(&current->sighand->siglock);
495 current->saved_sigmask = current->blocked;
496 siginitset(&current->blocked, mask);
497 recalc_sigpending();
498 spin_unlock_irq(&current->sighand->siglock);
499
500 current->state = TASK_INTERRUPTIBLE;
501 schedule();
502 set_restore_sigmask();
503
504 return -ERESTARTNOHAND;
505}
506
507asmlinkage int
508sys_sigaction(int sig, const struct old_sigaction __user *act,
509 struct old_sigaction __user *oact)
510{
511 struct k_sigaction new_ka, old_ka;
512 int ret;
513
514 if (act) {
515 old_sigset_t mask;
516
517 if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
518 __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
519 __get_user(new_ka.sa.sa_restorer, &act->sa_restorer))
520 return -EFAULT;
521
522 __get_user(new_ka.sa.sa_flags, &act->sa_flags);
523 __get_user(mask, &act->sa_mask);
524 siginitset(&new_ka.sa.sa_mask, mask);
525 }
526
527 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
528
529 if (!ret && oact) {
530 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
531 __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
532 __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer))
533 return -EFAULT;
534
535 __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
536 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask);
537 }
538
539 return ret;
540}
541#endif /* CONFIG_X86_32 */
542
543#ifdef CONFIG_X86_32
544asmlinkage int sys_sigaltstack(unsigned long bx)
545{
546 /*
547 * This is needed to make gcc realize it doesn't own the
548 * "struct pt_regs"
549 */
550 struct pt_regs *regs = (struct pt_regs *)&bx;
551 const stack_t __user *uss = (const stack_t __user *)bx;
552 stack_t __user *uoss = (stack_t __user *)regs->cx;
553
554 return do_sigaltstack(uss, uoss, regs->sp);
555}
556#else /* !CONFIG_X86_32 */
557asmlinkage long
558sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
559 struct pt_regs *regs)
560{
561 return do_sigaltstack(uss, uoss, regs->sp);
562}
563#endif /* CONFIG_X86_32 */
564
565/*
566 * Do a signal return; undo the signal stack.
567 */
568#ifdef CONFIG_X86_32
569asmlinkage unsigned long sys_sigreturn(unsigned long __unused)
570{
571 struct sigframe __user *frame;
572 struct pt_regs *regs;
573 unsigned long ax;
574 sigset_t set;
575
576 regs = (struct pt_regs *) &__unused;
577 frame = (struct sigframe __user *)(regs->sp - 8);
578
579 if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
580 goto badframe;
581 if (__get_user(set.sig[0], &frame->sc.oldmask) || (_NSIG_WORDS > 1
582 && __copy_from_user(&set.sig[1], &frame->extramask,
583 sizeof(frame->extramask))))
584 goto badframe;
585
586 sigdelsetmask(&set, ~_BLOCKABLE);
587 spin_lock_irq(&current->sighand->siglock);
588 current->blocked = set;
589 recalc_sigpending();
590 spin_unlock_irq(&current->sighand->siglock);
591
592 if (restore_sigcontext(regs, &frame->sc, &ax))
593 goto badframe;
594 return ax;
595
596badframe:
597 signal_fault(regs, frame, "sigreturn");
598
599 return 0;
600}
601#endif /* CONFIG_X86_32 */
602
603static long do_rt_sigreturn(struct pt_regs *regs)
604{
605 struct rt_sigframe __user *frame;
606 unsigned long ax;
607 sigset_t set;
608
609 frame = (struct rt_sigframe __user *)(regs->sp - sizeof(long));
610 if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
611 goto badframe;
612 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
613 goto badframe;
614
615 sigdelsetmask(&set, ~_BLOCKABLE);
616 spin_lock_irq(&current->sighand->siglock);
617 current->blocked = set;
618 recalc_sigpending();
619 spin_unlock_irq(&current->sighand->siglock);
620
621 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &ax))
622 goto badframe;
623
624 if (do_sigaltstack(&frame->uc.uc_stack, NULL, regs->sp) == -EFAULT)
625 goto badframe;
626
627 return ax;
628
629badframe:
630 signal_fault(regs, frame, "rt_sigreturn");
631 return 0;
632}
633
634#ifdef CONFIG_X86_32
635asmlinkage int sys_rt_sigreturn(struct pt_regs regs)
636{
637 return do_rt_sigreturn(&regs);
638}
639#else /* !CONFIG_X86_32 */
640asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
641{
642 return do_rt_sigreturn(regs);
643}
644#endif /* CONFIG_X86_32 */
478 645
479/* 646/*
480 * OK, we're invoking a handler: 647 * OK, we're invoking a handler:
481 */ 648 */
482static int signr_convert(int sig) 649static int signr_convert(int sig)
483{ 650{
651#ifdef CONFIG_X86_32
484 struct thread_info *info = current_thread_info(); 652 struct thread_info *info = current_thread_info();
485 653
486 if (info->exec_domain && info->exec_domain->signal_invmap && sig < 32) 654 if (info->exec_domain && info->exec_domain->signal_invmap && sig < 32)
487 return info->exec_domain->signal_invmap[sig]; 655 return info->exec_domain->signal_invmap[sig];
656#endif /* CONFIG_X86_32 */
488 return sig; 657 return sig;
489} 658}
490 659
660#ifdef CONFIG_X86_32
661
491#define is_ia32 1 662#define is_ia32 1
492#define ia32_setup_frame __setup_frame 663#define ia32_setup_frame __setup_frame
493#define ia32_setup_rt_frame __setup_rt_frame 664#define ia32_setup_rt_frame __setup_rt_frame
494 665
666#else /* !CONFIG_X86_32 */
667
668#ifdef CONFIG_IA32_EMULATION
669#define is_ia32 test_thread_flag(TIF_IA32)
670#else /* !CONFIG_IA32_EMULATION */
671#define is_ia32 0
672#endif /* CONFIG_IA32_EMULATION */
673
674int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
675 sigset_t *set, struct pt_regs *regs);
676int ia32_setup_frame(int sig, struct k_sigaction *ka,
677 sigset_t *set, struct pt_regs *regs);
678
679#endif /* CONFIG_X86_32 */
680
495static int 681static int
496setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, 682setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
497 sigset_t *set, struct pt_regs *regs) 683 sigset_t *set, struct pt_regs *regs)
@@ -592,7 +778,13 @@ handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka,
592 return 0; 778 return 0;
593} 779}
594 780
781#ifdef CONFIG_X86_32
595#define NR_restart_syscall __NR_restart_syscall 782#define NR_restart_syscall __NR_restart_syscall
783#else /* !CONFIG_X86_32 */
784#define NR_restart_syscall \
785 test_thread_flag(TIF_IA32) ? __NR_ia32_restart_syscall : __NR_restart_syscall
786#endif /* CONFIG_X86_32 */
787
596/* 788/*
597 * Note that 'init' is a special process: it doesn't get signals it doesn't 789 * Note that 'init' is a special process: it doesn't get signals it doesn't
598 * want to handle. Thus you cannot kill init even with a SIGKILL even by 790 * want to handle. Thus you cannot kill init even with a SIGKILL even by
@@ -704,8 +896,9 @@ void signal_fault(struct pt_regs *regs, void __user *frame, char *where)
704 struct task_struct *me = current; 896 struct task_struct *me = current;
705 897
706 if (show_unhandled_signals && printk_ratelimit()) { 898 if (show_unhandled_signals && printk_ratelimit()) {
707 printk(KERN_INFO 899 printk("%s"
708 "%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx", 900 "%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx",
901 task_pid_nr(current) > 1 ? KERN_INFO : KERN_EMERG,
709 me->comm, me->pid, where, frame, 902 me->comm, me->pid, where, frame,
710 regs->ip, regs->sp, regs->orig_ax); 903 regs->ip, regs->sp, regs->orig_ax);
711 print_vma_addr(" in ", regs->ip); 904 print_vma_addr(" in ", regs->ip);
diff --git a/arch/x86/kernel/signal_64.c b/arch/x86/kernel/signal_64.c
deleted file mode 100644
index a5c9627f4db9..000000000000
--- a/arch/x86/kernel/signal_64.c
+++ /dev/null
@@ -1,516 +0,0 @@
1/*
2 * Copyright (C) 1991, 1992 Linus Torvalds
3 * Copyright (C) 2000, 2001, 2002 Andi Kleen SuSE Labs
4 *
5 * 1997-11-28 Modified for POSIX.1b signals by Richard Henderson
6 * 2000-06-20 Pentium III FXSR, SSE support by Gareth Hughes
7 * 2000-2002 x86-64 support by Andi Kleen
8 */
9
10#include <linux/sched.h>
11#include <linux/mm.h>
12#include <linux/smp.h>
13#include <linux/kernel.h>
14#include <linux/signal.h>
15#include <linux/errno.h>
16#include <linux/wait.h>
17#include <linux/ptrace.h>
18#include <linux/tracehook.h>
19#include <linux/unistd.h>
20#include <linux/stddef.h>
21#include <linux/personality.h>
22#include <linux/compiler.h>
23#include <linux/uaccess.h>
24
25#include <asm/processor.h>
26#include <asm/ucontext.h>
27#include <asm/i387.h>
28#include <asm/proto.h>
29#include <asm/ia32_unistd.h>
30#include <asm/mce.h>
31#include <asm/syscall.h>
32#include <asm/syscalls.h>
33#include "sigframe.h"
34
35#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
36
37#define __FIX_EFLAGS (X86_EFLAGS_AC | X86_EFLAGS_OF | \
38 X86_EFLAGS_DF | X86_EFLAGS_TF | X86_EFLAGS_SF | \
39 X86_EFLAGS_ZF | X86_EFLAGS_AF | X86_EFLAGS_PF | \
40 X86_EFLAGS_CF)
41
42#ifdef CONFIG_X86_32
43# define FIX_EFLAGS (__FIX_EFLAGS | X86_EFLAGS_RF)
44#else
45# define FIX_EFLAGS __FIX_EFLAGS
46#endif
47
48asmlinkage long
49sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
50 struct pt_regs *regs)
51{
52 return do_sigaltstack(uss, uoss, regs->sp);
53}
54
55#define COPY(x) { \
56 err |= __get_user(regs->x, &sc->x); \
57}
58
59#define COPY_SEG_STRICT(seg) { \
60 unsigned short tmp; \
61 err |= __get_user(tmp, &sc->seg); \
62 regs->seg = tmp | 3; \
63}
64
65/*
66 * Do a signal return; undo the signal stack.
67 */
68static int
69restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc,
70 unsigned long *pax)
71{
72 void __user *buf;
73 unsigned int tmpflags;
74 unsigned int err = 0;
75
76 /* Always make any pending restarted system calls return -EINTR */
77 current_thread_info()->restart_block.fn = do_no_restart_syscall;
78
79 COPY(di); COPY(si); COPY(bp); COPY(sp); COPY(bx);
80 COPY(dx); COPY(cx); COPY(ip);
81 COPY(r8);
82 COPY(r9);
83 COPY(r10);
84 COPY(r11);
85 COPY(r12);
86 COPY(r13);
87 COPY(r14);
88 COPY(r15);
89
90 /* Kernel saves and restores only the CS segment register on signals,
91 * which is the bare minimum needed to allow mixed 32/64-bit code.
92 * App's signal handler can save/restore other segments if needed. */
93 COPY_SEG_STRICT(cs);
94
95 err |= __get_user(tmpflags, &sc->flags);
96 regs->flags = (regs->flags & ~FIX_EFLAGS) | (tmpflags & FIX_EFLAGS);
97 regs->orig_ax = -1; /* disable syscall checks */
98
99 err |= __get_user(buf, &sc->fpstate);
100 err |= restore_i387_xstate(buf);
101
102 err |= __get_user(*pax, &sc->ax);
103 return err;
104}
105
106static long do_rt_sigreturn(struct pt_regs *regs)
107{
108 struct rt_sigframe __user *frame;
109 unsigned long ax;
110 sigset_t set;
111
112 frame = (struct rt_sigframe __user *)(regs->sp - sizeof(long));
113 if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
114 goto badframe;
115 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
116 goto badframe;
117
118 sigdelsetmask(&set, ~_BLOCKABLE);
119 spin_lock_irq(&current->sighand->siglock);
120 current->blocked = set;
121 recalc_sigpending();
122 spin_unlock_irq(&current->sighand->siglock);
123
124 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &ax))
125 goto badframe;
126
127 if (do_sigaltstack(&frame->uc.uc_stack, NULL, regs->sp) == -EFAULT)
128 goto badframe;
129
130 return ax;
131
132badframe:
133 signal_fault(regs, frame, "rt_sigreturn");
134 return 0;
135}
136
137asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
138{
139 return do_rt_sigreturn(regs);
140}
141
142/*
143 * Set up a signal frame.
144 */
145
146static inline int
147setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs,
148 unsigned long mask, struct task_struct *me)
149{
150 int err = 0;
151
152 err |= __put_user(regs->cs, &sc->cs);
153 err |= __put_user(0, &sc->gs);
154 err |= __put_user(0, &sc->fs);
155
156 err |= __put_user(regs->di, &sc->di);
157 err |= __put_user(regs->si, &sc->si);
158 err |= __put_user(regs->bp, &sc->bp);
159 err |= __put_user(regs->sp, &sc->sp);
160 err |= __put_user(regs->bx, &sc->bx);
161 err |= __put_user(regs->dx, &sc->dx);
162 err |= __put_user(regs->cx, &sc->cx);
163 err |= __put_user(regs->ax, &sc->ax);
164 err |= __put_user(regs->r8, &sc->r8);
165 err |= __put_user(regs->r9, &sc->r9);
166 err |= __put_user(regs->r10, &sc->r10);
167 err |= __put_user(regs->r11, &sc->r11);
168 err |= __put_user(regs->r12, &sc->r12);
169 err |= __put_user(regs->r13, &sc->r13);
170 err |= __put_user(regs->r14, &sc->r14);
171 err |= __put_user(regs->r15, &sc->r15);
172 err |= __put_user(me->thread.trap_no, &sc->trapno);
173 err |= __put_user(me->thread.error_code, &sc->err);
174 err |= __put_user(regs->ip, &sc->ip);
175 err |= __put_user(regs->flags, &sc->flags);
176 err |= __put_user(mask, &sc->oldmask);
177 err |= __put_user(me->thread.cr2, &sc->cr2);
178
179 return err;
180}
181
182/*
183 * Determine which stack to use..
184 */
185
186static void __user *
187get_stack(struct k_sigaction *ka, struct pt_regs *regs, unsigned long size)
188{
189 unsigned long sp;
190
191 /* Default to using normal stack - redzone*/
192 sp = regs->sp - 128;
193
194 /* This is the X/Open sanctioned signal stack switching. */
195 if (ka->sa.sa_flags & SA_ONSTACK) {
196 if (sas_ss_flags(sp) == 0)
197 sp = current->sas_ss_sp + current->sas_ss_size;
198 }
199
200 return (void __user *)round_down(sp - size, 64);
201}
202
203static int __setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
204 sigset_t *set, struct pt_regs *regs)
205{
206 struct rt_sigframe __user *frame;
207 void __user *fp = NULL;
208 int err = 0;
209 struct task_struct *me = current;
210
211 if (used_math()) {
212 fp = get_stack(ka, regs, sig_xstate_size);
213 frame = (void __user *)round_down(
214 (unsigned long)fp - sizeof(struct rt_sigframe), 16) - 8;
215
216 if (save_i387_xstate(fp) < 0)
217 return -EFAULT;
218 } else
219 frame = get_stack(ka, regs, sizeof(struct rt_sigframe)) - 8;
220
221 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
222 return -EFAULT;
223
224 if (ka->sa.sa_flags & SA_SIGINFO) {
225 if (copy_siginfo_to_user(&frame->info, info))
226 return -EFAULT;
227 }
228
229 /* Create the ucontext. */
230 if (cpu_has_xsave)
231 err |= __put_user(UC_FP_XSTATE, &frame->uc.uc_flags);
232 else
233 err |= __put_user(0, &frame->uc.uc_flags);
234 err |= __put_user(0, &frame->uc.uc_link);
235 err |= __put_user(me->sas_ss_sp, &frame->uc.uc_stack.ss_sp);
236 err |= __put_user(sas_ss_flags(regs->sp),
237 &frame->uc.uc_stack.ss_flags);
238 err |= __put_user(me->sas_ss_size, &frame->uc.uc_stack.ss_size);
239 err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, set->sig[0], me);
240 err |= __put_user(fp, &frame->uc.uc_mcontext.fpstate);
241 if (sizeof(*set) == 16) {
242 __put_user(set->sig[0], &frame->uc.uc_sigmask.sig[0]);
243 __put_user(set->sig[1], &frame->uc.uc_sigmask.sig[1]);
244 } else
245 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
246
247 /* Set up to return from userspace. If provided, use a stub
248 already in userspace. */
249 /* x86-64 should always use SA_RESTORER. */
250 if (ka->sa.sa_flags & SA_RESTORER) {
251 err |= __put_user(ka->sa.sa_restorer, &frame->pretcode);
252 } else {
253 /* could use a vstub here */
254 return -EFAULT;
255 }
256
257 if (err)
258 return -EFAULT;
259
260 /* Set up registers for signal handler */
261 regs->di = sig;
262 /* In case the signal handler was declared without prototypes */
263 regs->ax = 0;
264
265 /* This also works for non SA_SIGINFO handlers because they expect the
266 next argument after the signal number on the stack. */
267 regs->si = (unsigned long)&frame->info;
268 regs->dx = (unsigned long)&frame->uc;
269 regs->ip = (unsigned long) ka->sa.sa_handler;
270
271 regs->sp = (unsigned long)frame;
272
273 /* Set up the CS register to run signal handlers in 64-bit mode,
274 even if the handler happens to be interrupting 32-bit code. */
275 regs->cs = __USER_CS;
276
277 return 0;
278}
279
280/*
281 * OK, we're invoking a handler
282 */
283static int signr_convert(int sig)
284{
285 return sig;
286}
287
288#ifdef CONFIG_IA32_EMULATION
289#define is_ia32 test_thread_flag(TIF_IA32)
290#else
291#define is_ia32 0
292#endif
293
294static int
295setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
296 sigset_t *set, struct pt_regs *regs)
297{
298 int usig = signr_convert(sig);
299 int ret;
300
301 /* Set up the stack frame */
302 if (is_ia32) {
303 if (ka->sa.sa_flags & SA_SIGINFO)
304 ret = ia32_setup_rt_frame(usig, ka, info, set, regs);
305 else
306 ret = ia32_setup_frame(usig, ka, set, regs);
307 } else
308 ret = __setup_rt_frame(sig, ka, info, set, regs);
309
310 if (ret) {
311 force_sigsegv(sig, current);
312 return -EFAULT;
313 }
314
315 return ret;
316}
317
318static int
319handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka,
320 sigset_t *oldset, struct pt_regs *regs)
321{
322 int ret;
323
324 /* Are we from a system call? */
325 if (syscall_get_nr(current, regs) >= 0) {
326 /* If so, check system call restarting.. */
327 switch (syscall_get_error(current, regs)) {
328 case -ERESTART_RESTARTBLOCK:
329 case -ERESTARTNOHAND:
330 regs->ax = -EINTR;
331 break;
332
333 case -ERESTARTSYS:
334 if (!(ka->sa.sa_flags & SA_RESTART)) {
335 regs->ax = -EINTR;
336 break;
337 }
338 /* fallthrough */
339 case -ERESTARTNOINTR:
340 regs->ax = regs->orig_ax;
341 regs->ip -= 2;
342 break;
343 }
344 }
345
346 /*
347 * If TF is set due to a debugger (TIF_FORCED_TF), clear the TF
348 * flag so that register information in the sigcontext is correct.
349 */
350 if (unlikely(regs->flags & X86_EFLAGS_TF) &&
351 likely(test_and_clear_thread_flag(TIF_FORCED_TF)))
352 regs->flags &= ~X86_EFLAGS_TF;
353
354 ret = setup_rt_frame(sig, ka, info, oldset, regs);
355
356 if (ret)
357 return ret;
358
359#ifdef CONFIG_X86_64
360 /*
361 * This has nothing to do with segment registers,
362 * despite the name. This magic affects uaccess.h
363 * macros' behavior. Reset it to the normal setting.
364 */
365 set_fs(USER_DS);
366#endif
367
368 /*
369 * Clear the direction flag as per the ABI for function entry.
370 */
371 regs->flags &= ~X86_EFLAGS_DF;
372
373 /*
374 * Clear TF when entering the signal handler, but
375 * notify any tracer that was single-stepping it.
376 * The tracer may want to single-step inside the
377 * handler too.
378 */
379 regs->flags &= ~X86_EFLAGS_TF;
380
381 spin_lock_irq(&current->sighand->siglock);
382 sigorsets(&current->blocked, &current->blocked, &ka->sa.sa_mask);
383 if (!(ka->sa.sa_flags & SA_NODEFER))
384 sigaddset(&current->blocked, sig);
385 recalc_sigpending();
386 spin_unlock_irq(&current->sighand->siglock);
387
388 tracehook_signal_handler(sig, info, ka, regs,
389 test_thread_flag(TIF_SINGLESTEP));
390
391 return 0;
392}
393
394#define NR_restart_syscall \
395 test_thread_flag(TIF_IA32) ? __NR_ia32_restart_syscall : __NR_restart_syscall
396/*
397 * Note that 'init' is a special process: it doesn't get signals it doesn't
398 * want to handle. Thus you cannot kill init even with a SIGKILL even by
399 * mistake.
400 */
401static void do_signal(struct pt_regs *regs)
402{
403 struct k_sigaction ka;
404 siginfo_t info;
405 int signr;
406 sigset_t *oldset;
407
408 /*
409 * We want the common case to go fast, which is why we may in certain
410 * cases get here from kernel mode. Just return without doing anything
411 * if so.
412 * X86_32: vm86 regs switched out by assembly code before reaching
413 * here, so testing against kernel CS suffices.
414 */
415 if (!user_mode(regs))
416 return;
417
418 if (current_thread_info()->status & TS_RESTORE_SIGMASK)
419 oldset = &current->saved_sigmask;
420 else
421 oldset = &current->blocked;
422
423 signr = get_signal_to_deliver(&info, &ka, regs, NULL);
424 if (signr > 0) {
425 /*
426 * Re-enable any watchpoints before delivering the
427 * signal to user space. The processor register will
428 * have been cleared if the watchpoint triggered
429 * inside the kernel.
430 */
431 if (current->thread.debugreg7)
432 set_debugreg(current->thread.debugreg7, 7);
433
434 /* Whee! Actually deliver the signal. */
435 if (handle_signal(signr, &info, &ka, oldset, regs) == 0) {
436 /*
437 * A signal was successfully delivered; the saved
438 * sigmask will have been stored in the signal frame,
439 * and will be restored by sigreturn, so we can simply
440 * clear the TS_RESTORE_SIGMASK flag.
441 */
442 current_thread_info()->status &= ~TS_RESTORE_SIGMASK;
443 }
444 return;
445 }
446
447 /* Did we come from a system call? */
448 if (syscall_get_nr(current, regs) >= 0) {
449 /* Restart the system call - no handlers present */
450 switch (syscall_get_error(current, regs)) {
451 case -ERESTARTNOHAND:
452 case -ERESTARTSYS:
453 case -ERESTARTNOINTR:
454 regs->ax = regs->orig_ax;
455 regs->ip -= 2;
456 break;
457
458 case -ERESTART_RESTARTBLOCK:
459 regs->ax = NR_restart_syscall;
460 regs->ip -= 2;
461 break;
462 }
463 }
464
465 /*
466 * If there's no signal to deliver, we just put the saved sigmask
467 * back.
468 */
469 if (current_thread_info()->status & TS_RESTORE_SIGMASK) {
470 current_thread_info()->status &= ~TS_RESTORE_SIGMASK;
471 sigprocmask(SIG_SETMASK, &current->saved_sigmask, NULL);
472 }
473}
474
475/*
476 * notification of userspace execution resumption
477 * - triggered by the TIF_WORK_MASK flags
478 */
479void
480do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags)
481{
482#if defined(CONFIG_X86_64) && defined(CONFIG_X86_MCE)
483 /* notify userspace of pending MCEs */
484 if (thread_info_flags & _TIF_MCE_NOTIFY)
485 mce_notify_user();
486#endif /* CONFIG_X86_64 && CONFIG_X86_MCE */
487
488 /* deal with pending signal delivery */
489 if (thread_info_flags & _TIF_SIGPENDING)
490 do_signal(regs);
491
492 if (thread_info_flags & _TIF_NOTIFY_RESUME) {
493 clear_thread_flag(TIF_NOTIFY_RESUME);
494 tracehook_notify_resume(regs);
495 }
496
497#ifdef CONFIG_X86_32
498 clear_thread_flag(TIF_IRET);
499#endif /* CONFIG_X86_32 */
500}
501
502void signal_fault(struct pt_regs *regs, void __user *frame, char *where)
503{
504 struct task_struct *me = current;
505
506 if (show_unhandled_signals && printk_ratelimit()) {
507 printk(KERN_INFO
508 "%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx",
509 me->comm, me->pid, where, frame,
510 regs->ip, regs->sp, regs->orig_ax);
511 print_vma_addr(" in ", regs->ip);
512 printk(KERN_CONT "\n");
513 }
514
515 force_sig(SIGSEGV, me);
516}
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
index 18f9b19f5f8f..3f92b134ab90 100644
--- a/arch/x86/kernel/smp.c
+++ b/arch/x86/kernel/smp.c
@@ -140,19 +140,6 @@ void native_send_call_func_ipi(cpumask_t mask)
140 send_IPI_mask(mask, CALL_FUNCTION_VECTOR); 140 send_IPI_mask(mask, CALL_FUNCTION_VECTOR);
141} 141}
142 142
143static void stop_this_cpu(void *dummy)
144{
145 local_irq_disable();
146 /*
147 * Remove this CPU:
148 */
149 cpu_clear(smp_processor_id(), cpu_online_map);
150 disable_local_APIC();
151 if (hlt_works(smp_processor_id()))
152 for (;;) halt();
153 for (;;);
154}
155
156/* 143/*
157 * this function calls the 'stop' function on all other CPUs in the system. 144 * this function calls the 'stop' function on all other CPUs in the system.
158 */ 145 */
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 1a3c3253f0ed..7a430c4d1551 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -62,6 +62,7 @@
62#include <asm/mtrr.h> 62#include <asm/mtrr.h>
63#include <asm/vmi.h> 63#include <asm/vmi.h>
64#include <asm/genapic.h> 64#include <asm/genapic.h>
65#include <asm/setup.h>
65#include <linux/mc146818rtc.h> 66#include <linux/mc146818rtc.h>
66 67
67#include <mach_apic.h> 68#include <mach_apic.h>
@@ -294,9 +295,7 @@ static void __cpuinit start_secondary(void *unused)
294 * fragile that we want to limit the things done here to the 295 * fragile that we want to limit the things done here to the
295 * most necessary things. 296 * most necessary things.
296 */ 297 */
297#ifdef CONFIG_VMI
298 vmi_bringup(); 298 vmi_bringup();
299#endif
300 cpu_init(); 299 cpu_init();
301 preempt_disable(); 300 preempt_disable();
302 smp_callin(); 301 smp_callin();
@@ -536,7 +535,7 @@ static void impress_friends(void)
536 pr_debug("Before bogocount - setting activated=1.\n"); 535 pr_debug("Before bogocount - setting activated=1.\n");
537} 536}
538 537
539static inline void __inquire_remote_apic(int apicid) 538void __inquire_remote_apic(int apicid)
540{ 539{
541 unsigned i, regs[] = { APIC_ID >> 4, APIC_LVR >> 4, APIC_SPIV >> 4 }; 540 unsigned i, regs[] = { APIC_ID >> 4, APIC_LVR >> 4, APIC_SPIV >> 4 };
542 char *names[] = { "ID", "VERSION", "SPIV" }; 541 char *names[] = { "ID", "VERSION", "SPIV" };
@@ -575,14 +574,13 @@ static inline void __inquire_remote_apic(int apicid)
575 } 574 }
576} 575}
577 576
578#ifdef WAKE_SECONDARY_VIA_NMI
579/* 577/*
580 * Poke the other CPU in the eye via NMI to wake it up. Remember that the normal 578 * Poke the other CPU in the eye via NMI to wake it up. Remember that the normal
581 * INIT, INIT, STARTUP sequence will reset the chip hard for us, and this 579 * INIT, INIT, STARTUP sequence will reset the chip hard for us, and this
582 * won't ... remember to clear down the APIC, etc later. 580 * won't ... remember to clear down the APIC, etc later.
583 */ 581 */
584static int __devinit 582int __devinit
585wakeup_secondary_cpu(int logical_apicid, unsigned long start_eip) 583wakeup_secondary_cpu_via_nmi(int logical_apicid, unsigned long start_eip)
586{ 584{
587 unsigned long send_status, accept_status = 0; 585 unsigned long send_status, accept_status = 0;
588 int maxlvt; 586 int maxlvt;
@@ -599,7 +597,7 @@ wakeup_secondary_cpu(int logical_apicid, unsigned long start_eip)
599 * Give the other CPU some time to accept the IPI. 597 * Give the other CPU some time to accept the IPI.
600 */ 598 */
601 udelay(200); 599 udelay(200);
602 if (APIC_INTEGRATED(apic_version[phys_apicid])) { 600 if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) {
603 maxlvt = lapic_get_maxlvt(); 601 maxlvt = lapic_get_maxlvt();
604 if (maxlvt > 3) /* Due to the Pentium erratum 3AP. */ 602 if (maxlvt > 3) /* Due to the Pentium erratum 3AP. */
605 apic_write(APIC_ESR, 0); 603 apic_write(APIC_ESR, 0);
@@ -614,11 +612,9 @@ wakeup_secondary_cpu(int logical_apicid, unsigned long start_eip)
614 612
615 return (send_status | accept_status); 613 return (send_status | accept_status);
616} 614}
617#endif /* WAKE_SECONDARY_VIA_NMI */
618 615
619#ifdef WAKE_SECONDARY_VIA_INIT 616int __devinit
620static int __devinit 617wakeup_secondary_cpu_via_init(int phys_apicid, unsigned long start_eip)
621wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip)
622{ 618{
623 unsigned long send_status, accept_status = 0; 619 unsigned long send_status, accept_status = 0;
624 int maxlvt, num_starts, j; 620 int maxlvt, num_starts, j;
@@ -737,7 +733,6 @@ wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip)
737 733
738 return (send_status | accept_status); 734 return (send_status | accept_status);
739} 735}
740#endif /* WAKE_SECONDARY_VIA_INIT */
741 736
742struct create_idle { 737struct create_idle {
743 struct work_struct work; 738 struct work_struct work;
diff --git a/arch/x86/kernel/time_64.c b/arch/x86/kernel/time_64.c
index 083a4a5bb00f..1b7711b31037 100644
--- a/arch/x86/kernel/time_64.c
+++ b/arch/x86/kernel/time_64.c
@@ -80,6 +80,8 @@ unsigned long __init calibrate_cpu(void)
80 break; 80 break;
81 no_ctr_free = (i == 4); 81 no_ctr_free = (i == 4);
82 if (no_ctr_free) { 82 if (no_ctr_free) {
83 WARN(1, KERN_WARNING "Warning: AMD perfctrs busy ... "
84 "cpu_khz value may be incorrect.\n");
83 i = 3; 85 i = 3;
84 rdmsrl(MSR_K7_EVNTSEL3, evntsel3); 86 rdmsrl(MSR_K7_EVNTSEL3, evntsel3);
85 wrmsrl(MSR_K7_EVNTSEL3, 0); 87 wrmsrl(MSR_K7_EVNTSEL3, 0);
diff --git a/arch/x86/kernel/tlb_32.c b/arch/x86/kernel/tlb_32.c
index f4049f3513b6..4290d918b58a 100644
--- a/arch/x86/kernel/tlb_32.c
+++ b/arch/x86/kernel/tlb_32.c
@@ -34,9 +34,8 @@ static DEFINE_SPINLOCK(tlbstate_lock);
34 */ 34 */
35void leave_mm(int cpu) 35void leave_mm(int cpu)
36{ 36{
37 if (per_cpu(cpu_tlbstate, cpu).state == TLBSTATE_OK) 37 BUG_ON(x86_read_percpu(cpu_tlbstate.state) == TLBSTATE_OK);
38 BUG(); 38 cpu_clear(cpu, x86_read_percpu(cpu_tlbstate.active_mm)->cpu_vm_mask);
39 cpu_clear(cpu, per_cpu(cpu_tlbstate, cpu).active_mm->cpu_vm_mask);
40 load_cr3(swapper_pg_dir); 39 load_cr3(swapper_pg_dir);
41} 40}
42EXPORT_SYMBOL_GPL(leave_mm); 41EXPORT_SYMBOL_GPL(leave_mm);
@@ -104,8 +103,8 @@ void smp_invalidate_interrupt(struct pt_regs *regs)
104 * BUG(); 103 * BUG();
105 */ 104 */
106 105
107 if (flush_mm == per_cpu(cpu_tlbstate, cpu).active_mm) { 106 if (flush_mm == x86_read_percpu(cpu_tlbstate.active_mm)) {
108 if (per_cpu(cpu_tlbstate, cpu).state == TLBSTATE_OK) { 107 if (x86_read_percpu(cpu_tlbstate.state) == TLBSTATE_OK) {
109 if (flush_va == TLB_FLUSH_ALL) 108 if (flush_va == TLB_FLUSH_ALL)
110 local_flush_tlb(); 109 local_flush_tlb();
111 else 110 else
@@ -238,7 +237,7 @@ static void do_flush_tlb_all(void *info)
238 unsigned long cpu = smp_processor_id(); 237 unsigned long cpu = smp_processor_id();
239 238
240 __flush_tlb_all(); 239 __flush_tlb_all();
241 if (per_cpu(cpu_tlbstate, cpu).state == TLBSTATE_LAZY) 240 if (x86_read_percpu(cpu_tlbstate.state) == TLBSTATE_LAZY)
242 leave_mm(cpu); 241 leave_mm(cpu);
243} 242}
244 243
diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c
index 04431f34fd16..6a00e5faaa74 100644
--- a/arch/x86/kernel/tlb_uv.c
+++ b/arch/x86/kernel/tlb_uv.c
@@ -566,14 +566,10 @@ static int __init uv_ptc_init(void)
566 if (!is_uv_system()) 566 if (!is_uv_system())
567 return 0; 567 return 0;
568 568
569 if (!proc_mkdir("sgi_uv", NULL))
570 return -EINVAL;
571
572 proc_uv_ptc = create_proc_entry(UV_PTC_BASENAME, 0444, NULL); 569 proc_uv_ptc = create_proc_entry(UV_PTC_BASENAME, 0444, NULL);
573 if (!proc_uv_ptc) { 570 if (!proc_uv_ptc) {
574 printk(KERN_ERR "unable to create %s proc entry\n", 571 printk(KERN_ERR "unable to create %s proc entry\n",
575 UV_PTC_BASENAME); 572 UV_PTC_BASENAME);
576 remove_proc_entry("sgi_uv", NULL);
577 return -EINVAL; 573 return -EINVAL;
578 } 574 }
579 proc_uv_ptc->proc_fops = &proc_uv_ptc_operations; 575 proc_uv_ptc->proc_fops = &proc_uv_ptc_operations;
diff --git a/arch/x86/kernel/trampoline.c b/arch/x86/kernel/trampoline.c
index 1106fac6024d..808031a5ba19 100644
--- a/arch/x86/kernel/trampoline.c
+++ b/arch/x86/kernel/trampoline.c
@@ -1,10 +1,26 @@
1#include <linux/io.h> 1#include <linux/io.h>
2 2
3#include <asm/trampoline.h> 3#include <asm/trampoline.h>
4#include <asm/e820.h>
4 5
5/* ready for x86_64 and x86 */ 6/* ready for x86_64 and x86 */
6unsigned char *trampoline_base = __va(TRAMPOLINE_BASE); 7unsigned char *trampoline_base = __va(TRAMPOLINE_BASE);
7 8
9void __init reserve_trampoline_memory(void)
10{
11#ifdef CONFIG_X86_32
12 /*
13 * But first pinch a few for the stack/trampoline stuff
14 * FIXME: Don't need the extra page at 4K, but need to fix
15 * trampoline before removing it. (see the GDT stuff)
16 */
17 reserve_early(PAGE_SIZE, PAGE_SIZE + PAGE_SIZE, "EX TRAMPOLINE");
18#endif
19 /* Has to be in very low memory so we can execute real-mode AP code. */
20 reserve_early(TRAMPOLINE_BASE, TRAMPOLINE_BASE + TRAMPOLINE_SIZE,
21 "TRAMPOLINE");
22}
23
8/* 24/*
9 * Currently trivial. Write the real->protected mode 25 * Currently trivial. Write the real->protected mode
10 * bootstrap into the page concerned. The caller 26 * bootstrap into the page concerned. The caller
@@ -12,7 +28,6 @@ unsigned char *trampoline_base = __va(TRAMPOLINE_BASE);
12 */ 28 */
13unsigned long setup_trampoline(void) 29unsigned long setup_trampoline(void)
14{ 30{
15 memcpy(trampoline_base, trampoline_data, 31 memcpy(trampoline_base, trampoline_data, TRAMPOLINE_SIZE);
16 trampoline_end - trampoline_data);
17 return virt_to_phys(trampoline_base); 32 return virt_to_phys(trampoline_base);
18} 33}
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 04d242ab0161..c320c29255c2 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -664,7 +664,7 @@ void math_error(void __user *ip)
664{ 664{
665 struct task_struct *task; 665 struct task_struct *task;
666 siginfo_t info; 666 siginfo_t info;
667 unsigned short cwd, swd; 667 unsigned short cwd, swd, err;
668 668
669 /* 669 /*
670 * Save the info for the exception handler and clear the error. 670 * Save the info for the exception handler and clear the error.
@@ -675,7 +675,6 @@ void math_error(void __user *ip)
675 task->thread.error_code = 0; 675 task->thread.error_code = 0;
676 info.si_signo = SIGFPE; 676 info.si_signo = SIGFPE;
677 info.si_errno = 0; 677 info.si_errno = 0;
678 info.si_code = __SI_FAULT;
679 info.si_addr = ip; 678 info.si_addr = ip;
680 /* 679 /*
681 * (~cwd & swd) will mask out exceptions that are not set to unmasked 680 * (~cwd & swd) will mask out exceptions that are not set to unmasked
@@ -689,34 +688,31 @@ void math_error(void __user *ip)
689 */ 688 */
690 cwd = get_fpu_cwd(task); 689 cwd = get_fpu_cwd(task);
691 swd = get_fpu_swd(task); 690 swd = get_fpu_swd(task);
692 switch (swd & ~cwd & 0x3f) { 691
693 case 0x000: /* No unmasked exception */ 692 err = swd & ~cwd & 0x3f;
694#ifdef CONFIG_X86_32 693
694#if CONFIG_X86_32
695 if (!err)
695 return; 696 return;
696#endif 697#endif
697 default: /* Multiple exceptions */ 698
698 break; 699 if (err & 0x001) { /* Invalid op */
699 case 0x001: /* Invalid Op */
700 /* 700 /*
701 * swd & 0x240 == 0x040: Stack Underflow 701 * swd & 0x240 == 0x040: Stack Underflow
702 * swd & 0x240 == 0x240: Stack Overflow 702 * swd & 0x240 == 0x240: Stack Overflow
703 * User must clear the SF bit (0x40) if set 703 * User must clear the SF bit (0x40) if set
704 */ 704 */
705 info.si_code = FPE_FLTINV; 705 info.si_code = FPE_FLTINV;
706 break; 706 } else if (err & 0x004) { /* Divide by Zero */
707 case 0x002: /* Denormalize */
708 case 0x010: /* Underflow */
709 info.si_code = FPE_FLTUND;
710 break;
711 case 0x004: /* Zero Divide */
712 info.si_code = FPE_FLTDIV; 707 info.si_code = FPE_FLTDIV;
713 break; 708 } else if (err & 0x008) { /* Overflow */
714 case 0x008: /* Overflow */
715 info.si_code = FPE_FLTOVF; 709 info.si_code = FPE_FLTOVF;
716 break; 710 } else if (err & 0x012) { /* Denormal, Underflow */
717 case 0x020: /* Precision */ 711 info.si_code = FPE_FLTUND;
712 } else if (err & 0x020) { /* Precision */
718 info.si_code = FPE_FLTRES; 713 info.si_code = FPE_FLTRES;
719 break; 714 } else {
715 info.si_code = __SI_FAULT|SI_KERNEL; /* WTF? */
720 } 716 }
721 force_sig_info(SIGFPE, &info, task); 717 force_sig_info(SIGFPE, &info, task);
722} 718}
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index 424093b157d3..599e58168631 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -15,6 +15,7 @@
15#include <asm/vgtod.h> 15#include <asm/vgtod.h>
16#include <asm/time.h> 16#include <asm/time.h>
17#include <asm/delay.h> 17#include <asm/delay.h>
18#include <asm/hypervisor.h>
18 19
19unsigned int cpu_khz; /* TSC clocks / usec, not used here */ 20unsigned int cpu_khz; /* TSC clocks / usec, not used here */
20EXPORT_SYMBOL(cpu_khz); 21EXPORT_SYMBOL(cpu_khz);
@@ -31,6 +32,7 @@ static int tsc_unstable;
31 erroneous rdtsc usage on !cpu_has_tsc processors */ 32 erroneous rdtsc usage on !cpu_has_tsc processors */
32static int tsc_disabled = -1; 33static int tsc_disabled = -1;
33 34
35static int tsc_clocksource_reliable;
34/* 36/*
35 * Scheduler clock - returns current time in nanosec units. 37 * Scheduler clock - returns current time in nanosec units.
36 */ 38 */
@@ -98,6 +100,15 @@ int __init notsc_setup(char *str)
98 100
99__setup("notsc", notsc_setup); 101__setup("notsc", notsc_setup);
100 102
103static int __init tsc_setup(char *str)
104{
105 if (!strcmp(str, "reliable"))
106 tsc_clocksource_reliable = 1;
107 return 1;
108}
109
110__setup("tsc=", tsc_setup);
111
101#define MAX_RETRIES 5 112#define MAX_RETRIES 5
102#define SMI_TRESHOLD 50000 113#define SMI_TRESHOLD 50000
103 114
@@ -352,9 +363,15 @@ unsigned long native_calibrate_tsc(void)
352{ 363{
353 u64 tsc1, tsc2, delta, ref1, ref2; 364 u64 tsc1, tsc2, delta, ref1, ref2;
354 unsigned long tsc_pit_min = ULONG_MAX, tsc_ref_min = ULONG_MAX; 365 unsigned long tsc_pit_min = ULONG_MAX, tsc_ref_min = ULONG_MAX;
355 unsigned long flags, latch, ms, fast_calibrate; 366 unsigned long flags, latch, ms, fast_calibrate, tsc_khz;
356 int hpet = is_hpet_enabled(), i, loopmin; 367 int hpet = is_hpet_enabled(), i, loopmin;
357 368
369 tsc_khz = get_hypervisor_tsc_freq();
370 if (tsc_khz) {
371 printk(KERN_INFO "TSC: Frequency read from the hypervisor\n");
372 return tsc_khz;
373 }
374
358 local_irq_save(flags); 375 local_irq_save(flags);
359 fast_calibrate = quick_pit_calibrate(); 376 fast_calibrate = quick_pit_calibrate();
360 local_irq_restore(flags); 377 local_irq_restore(flags);
@@ -731,24 +748,21 @@ static struct dmi_system_id __initdata bad_tsc_dmi_table[] = {
731 {} 748 {}
732}; 749};
733 750
734/* 751static void __init check_system_tsc_reliable(void)
735 * Geode_LX - the OLPC CPU has a possibly a very reliable TSC 752{
736 */
737#ifdef CONFIG_MGEODE_LX 753#ifdef CONFIG_MGEODE_LX
738/* RTSC counts during suspend */ 754 /* RTSC counts during suspend */
739#define RTSC_SUSP 0x100 755#define RTSC_SUSP 0x100
740
741static void __init check_geode_tsc_reliable(void)
742{
743 unsigned long res_low, res_high; 756 unsigned long res_low, res_high;
744 757
745 rdmsr_safe(MSR_GEODE_BUSCONT_CONF0, &res_low, &res_high); 758 rdmsr_safe(MSR_GEODE_BUSCONT_CONF0, &res_low, &res_high);
759 /* Geode_LX - the OLPC CPU has a possibly a very reliable TSC */
746 if (res_low & RTSC_SUSP) 760 if (res_low & RTSC_SUSP)
747 clocksource_tsc.flags &= ~CLOCK_SOURCE_MUST_VERIFY; 761 tsc_clocksource_reliable = 1;
748}
749#else
750static inline void check_geode_tsc_reliable(void) { }
751#endif 762#endif
763 if (boot_cpu_has(X86_FEATURE_TSC_RELIABLE))
764 tsc_clocksource_reliable = 1;
765}
752 766
753/* 767/*
754 * Make an educated guess if the TSC is trustworthy and synchronized 768 * Make an educated guess if the TSC is trustworthy and synchronized
@@ -783,6 +797,8 @@ static void __init init_tsc_clocksource(void)
783{ 797{
784 clocksource_tsc.mult = clocksource_khz2mult(tsc_khz, 798 clocksource_tsc.mult = clocksource_khz2mult(tsc_khz,
785 clocksource_tsc.shift); 799 clocksource_tsc.shift);
800 if (tsc_clocksource_reliable)
801 clocksource_tsc.flags &= ~CLOCK_SOURCE_MUST_VERIFY;
786 /* lower the rating if we already know its unstable: */ 802 /* lower the rating if we already know its unstable: */
787 if (check_tsc_unstable()) { 803 if (check_tsc_unstable()) {
788 clocksource_tsc.rating = 0; 804 clocksource_tsc.rating = 0;
@@ -843,7 +859,7 @@ void __init tsc_init(void)
843 if (unsynchronized_tsc()) 859 if (unsynchronized_tsc())
844 mark_tsc_unstable("TSCs unsynchronized"); 860 mark_tsc_unstable("TSCs unsynchronized");
845 861
846 check_geode_tsc_reliable(); 862 check_system_tsc_reliable();
847 init_tsc_clocksource(); 863 init_tsc_clocksource();
848} 864}
849 865
diff --git a/arch/x86/kernel/tsc_sync.c b/arch/x86/kernel/tsc_sync.c
index 1c0dfbca87c1..bf36328f6ef9 100644
--- a/arch/x86/kernel/tsc_sync.c
+++ b/arch/x86/kernel/tsc_sync.c
@@ -112,6 +112,12 @@ void __cpuinit check_tsc_sync_source(int cpu)
112 if (unsynchronized_tsc()) 112 if (unsynchronized_tsc())
113 return; 113 return;
114 114
115 if (boot_cpu_has(X86_FEATURE_TSC_RELIABLE)) {
116 printk(KERN_INFO
117 "Skipping synchronization checks as TSC is reliable.\n");
118 return;
119 }
120
115 printk(KERN_INFO "checking TSC synchronization [CPU#%d -> CPU#%d]:", 121 printk(KERN_INFO "checking TSC synchronization [CPU#%d -> CPU#%d]:",
116 smp_processor_id(), cpu); 122 smp_processor_id(), cpu);
117 123
@@ -165,7 +171,7 @@ void __cpuinit check_tsc_sync_target(void)
165{ 171{
166 int cpus = 2; 172 int cpus = 2;
167 173
168 if (unsynchronized_tsc()) 174 if (unsynchronized_tsc() || boot_cpu_has(X86_FEATURE_TSC_RELIABLE))
169 return; 175 return;
170 176
171 /* 177 /*
diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c
index 8087e0cd877d..23206ba16874 100644
--- a/arch/x86/kernel/vmi_32.c
+++ b/arch/x86/kernel/vmi_32.c
@@ -841,8 +841,6 @@ static inline int __init activate_vmi(void)
841 841
842void __init vmi_init(void) 842void __init vmi_init(void)
843{ 843{
844 unsigned long flags;
845
846 if (!vmi_rom) 844 if (!vmi_rom)
847 probe_vmi_rom(); 845 probe_vmi_rom();
848 else 846 else
@@ -854,13 +852,21 @@ void __init vmi_init(void)
854 852
855 reserve_top_address(-vmi_rom->virtual_top); 853 reserve_top_address(-vmi_rom->virtual_top);
856 854
857 local_irq_save(flags);
858 activate_vmi();
859
860#ifdef CONFIG_X86_IO_APIC 855#ifdef CONFIG_X86_IO_APIC
861 /* This is virtual hardware; timer routing is wired correctly */ 856 /* This is virtual hardware; timer routing is wired correctly */
862 no_timer_check = 1; 857 no_timer_check = 1;
863#endif 858#endif
859}
860
861void vmi_activate(void)
862{
863 unsigned long flags;
864
865 if (!vmi_rom)
866 return;
867
868 local_irq_save(flags);
869 activate_vmi();
864 local_irq_restore(flags & X86_EFLAGS_IF); 870 local_irq_restore(flags & X86_EFLAGS_IF);
865} 871}
866 872
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index f1983d9477cd..410ddbc1aa2e 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -1038,13 +1038,13 @@ static int kvm_sync_page(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp)
1038 } 1038 }
1039 1039
1040 rmap_write_protect(vcpu->kvm, sp->gfn); 1040 rmap_write_protect(vcpu->kvm, sp->gfn);
1041 kvm_unlink_unsync_page(vcpu->kvm, sp);
1041 if (vcpu->arch.mmu.sync_page(vcpu, sp)) { 1042 if (vcpu->arch.mmu.sync_page(vcpu, sp)) {
1042 kvm_mmu_zap_page(vcpu->kvm, sp); 1043 kvm_mmu_zap_page(vcpu->kvm, sp);
1043 return 1; 1044 return 1;
1044 } 1045 }
1045 1046
1046 kvm_mmu_flush_tlb(vcpu); 1047 kvm_mmu_flush_tlb(vcpu);
1047 kvm_unlink_unsync_page(vcpu->kvm, sp);
1048 return 0; 1048 return 0;
1049} 1049}
1050 1050
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
index 613ec9aa674a..84eee43bbe74 100644
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -331,6 +331,7 @@ static int FNAME(shadow_walk_entry)(struct kvm_shadow_walk *_sw,
331 r = kvm_read_guest_atomic(vcpu->kvm, gw->pte_gpa[level - 2], 331 r = kvm_read_guest_atomic(vcpu->kvm, gw->pte_gpa[level - 2],
332 &curr_pte, sizeof(curr_pte)); 332 &curr_pte, sizeof(curr_pte));
333 if (r || curr_pte != gw->ptes[level - 2]) { 333 if (r || curr_pte != gw->ptes[level - 2]) {
334 kvm_mmu_put_page(shadow_page, sptep);
334 kvm_release_pfn_clean(sw->pfn); 335 kvm_release_pfn_clean(sw->pfn);
335 sw->sptep = NULL; 336 sw->sptep = NULL;
336 return 1; 337 return 1;
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index d06b4dc0e2ea..a4018b01e1f9 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -3149,7 +3149,9 @@ static void vmx_intr_assist(struct kvm_vcpu *vcpu)
3149 3149
3150 if (cpu_has_virtual_nmis()) { 3150 if (cpu_has_virtual_nmis()) {
3151 if (vcpu->arch.nmi_pending && !vcpu->arch.nmi_injected) { 3151 if (vcpu->arch.nmi_pending && !vcpu->arch.nmi_injected) {
3152 if (vmx_nmi_enabled(vcpu)) { 3152 if (vcpu->arch.interrupt.pending) {
3153 enable_nmi_window(vcpu);
3154 } else if (vmx_nmi_enabled(vcpu)) {
3153 vcpu->arch.nmi_pending = false; 3155 vcpu->arch.nmi_pending = false;
3154 vcpu->arch.nmi_injected = true; 3156 vcpu->arch.nmi_injected = true;
3155 } else { 3157 } else {
diff --git a/arch/x86/mach-generic/bigsmp.c b/arch/x86/mach-generic/bigsmp.c
index 3c3b471ea496..3624a364b7f3 100644
--- a/arch/x86/mach-generic/bigsmp.c
+++ b/arch/x86/mach-generic/bigsmp.c
@@ -17,6 +17,7 @@
17#include <asm/bigsmp/apic.h> 17#include <asm/bigsmp/apic.h>
18#include <asm/bigsmp/ipi.h> 18#include <asm/bigsmp/ipi.h>
19#include <asm/mach-default/mach_mpparse.h> 19#include <asm/mach-default/mach_mpparse.h>
20#include <asm/mach-default/mach_wakecpu.h>
20 21
21static int dmi_bigsmp; /* can be set by dmi scanners */ 22static int dmi_bigsmp; /* can be set by dmi scanners */
22 23
diff --git a/arch/x86/mach-generic/default.c b/arch/x86/mach-generic/default.c
index 9e835a11a13a..e63a4a76d8cd 100644
--- a/arch/x86/mach-generic/default.c
+++ b/arch/x86/mach-generic/default.c
@@ -16,6 +16,7 @@
16#include <asm/mach-default/mach_apic.h> 16#include <asm/mach-default/mach_apic.h>
17#include <asm/mach-default/mach_ipi.h> 17#include <asm/mach-default/mach_ipi.h>
18#include <asm/mach-default/mach_mpparse.h> 18#include <asm/mach-default/mach_mpparse.h>
19#include <asm/mach-default/mach_wakecpu.h>
19 20
20/* should be called last. */ 21/* should be called last. */
21static int probe_default(void) 22static int probe_default(void)
diff --git a/arch/x86/mach-generic/es7000.c b/arch/x86/mach-generic/es7000.c
index 28459cab3ddb..7b4e6d0d1690 100644
--- a/arch/x86/mach-generic/es7000.c
+++ b/arch/x86/mach-generic/es7000.c
@@ -16,7 +16,19 @@
16#include <asm/es7000/apic.h> 16#include <asm/es7000/apic.h>
17#include <asm/es7000/ipi.h> 17#include <asm/es7000/ipi.h>
18#include <asm/es7000/mpparse.h> 18#include <asm/es7000/mpparse.h>
19#include <asm/es7000/wakecpu.h> 19#include <asm/mach-default/mach_wakecpu.h>
20
21void __init es7000_update_genapic_to_cluster(void)
22{
23 genapic->target_cpus = target_cpus_cluster;
24 genapic->int_delivery_mode = INT_DELIVERY_MODE_CLUSTER;
25 genapic->int_dest_mode = INT_DEST_MODE_CLUSTER;
26 genapic->no_balance_irq = NO_BALANCE_IRQ_CLUSTER;
27
28 genapic->init_apic_ldr = init_apic_ldr_cluster;
29
30 genapic->cpu_mask_to_apicid = cpu_mask_to_apicid_cluster;
31}
20 32
21static int probe_es7000(void) 33static int probe_es7000(void)
22{ 34{
diff --git a/arch/x86/mach-generic/probe.c b/arch/x86/mach-generic/probe.c
index 5a7e4619e1c4..c346d9d0226f 100644
--- a/arch/x86/mach-generic/probe.c
+++ b/arch/x86/mach-generic/probe.c
@@ -15,6 +15,7 @@
15#include <asm/mpspec.h> 15#include <asm/mpspec.h>
16#include <asm/apicdef.h> 16#include <asm/apicdef.h>
17#include <asm/genapic.h> 17#include <asm/genapic.h>
18#include <asm/setup.h>
18 19
19extern struct genapic apic_numaq; 20extern struct genapic apic_numaq;
20extern struct genapic apic_summit; 21extern struct genapic apic_summit;
@@ -57,6 +58,9 @@ static int __init parse_apic(char *arg)
57 } 58 }
58 } 59 }
59 60
61 if (x86_quirks->update_genapic)
62 x86_quirks->update_genapic();
63
60 /* Parsed again by __setup for debug/verbose */ 64 /* Parsed again by __setup for debug/verbose */
61 return 0; 65 return 0;
62} 66}
@@ -72,12 +76,15 @@ void __init generic_bigsmp_probe(void)
72 * - we find more than 8 CPUs in acpi LAPIC listing with xAPIC support 76 * - we find more than 8 CPUs in acpi LAPIC listing with xAPIC support
73 */ 77 */
74 78
75 if (!cmdline_apic && genapic == &apic_default) 79 if (!cmdline_apic && genapic == &apic_default) {
76 if (apic_bigsmp.probe()) { 80 if (apic_bigsmp.probe()) {
77 genapic = &apic_bigsmp; 81 genapic = &apic_bigsmp;
82 if (x86_quirks->update_genapic)
83 x86_quirks->update_genapic();
78 printk(KERN_INFO "Overriding APIC driver with %s\n", 84 printk(KERN_INFO "Overriding APIC driver with %s\n",
79 genapic->name); 85 genapic->name);
80 } 86 }
87 }
81#endif 88#endif
82} 89}
83 90
@@ -94,6 +101,9 @@ void __init generic_apic_probe(void)
94 /* Not visible without early console */ 101 /* Not visible without early console */
95 if (!apic_probe[i]) 102 if (!apic_probe[i])
96 panic("Didn't find an APIC driver"); 103 panic("Didn't find an APIC driver");
104
105 if (x86_quirks->update_genapic)
106 x86_quirks->update_genapic();
97 } 107 }
98 printk(KERN_INFO "Using APIC driver %s\n", genapic->name); 108 printk(KERN_INFO "Using APIC driver %s\n", genapic->name);
99} 109}
@@ -108,6 +118,8 @@ int __init mps_oem_check(struct mp_config_table *mpc, char *oem,
108 if (apic_probe[i]->mps_oem_check(mpc, oem, productid)) { 118 if (apic_probe[i]->mps_oem_check(mpc, oem, productid)) {
109 if (!cmdline_apic) { 119 if (!cmdline_apic) {
110 genapic = apic_probe[i]; 120 genapic = apic_probe[i];
121 if (x86_quirks->update_genapic)
122 x86_quirks->update_genapic();
111 printk(KERN_INFO "Switched to APIC driver `%s'.\n", 123 printk(KERN_INFO "Switched to APIC driver `%s'.\n",
112 genapic->name); 124 genapic->name);
113 } 125 }
@@ -124,6 +136,8 @@ int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
124 if (apic_probe[i]->acpi_madt_oem_check(oem_id, oem_table_id)) { 136 if (apic_probe[i]->acpi_madt_oem_check(oem_id, oem_table_id)) {
125 if (!cmdline_apic) { 137 if (!cmdline_apic) {
126 genapic = apic_probe[i]; 138 genapic = apic_probe[i];
139 if (x86_quirks->update_genapic)
140 x86_quirks->update_genapic();
127 printk(KERN_INFO "Switched to APIC driver `%s'.\n", 141 printk(KERN_INFO "Switched to APIC driver `%s'.\n",
128 genapic->name); 142 genapic->name);
129 } 143 }
diff --git a/arch/x86/mach-generic/summit.c b/arch/x86/mach-generic/summit.c
index 6272b5e69da6..2c6d234e0009 100644
--- a/arch/x86/mach-generic/summit.c
+++ b/arch/x86/mach-generic/summit.c
@@ -16,6 +16,7 @@
16#include <asm/summit/apic.h> 16#include <asm/summit/apic.h>
17#include <asm/summit/ipi.h> 17#include <asm/summit/ipi.h>
18#include <asm/summit/mpparse.h> 18#include <asm/summit/mpparse.h>
19#include <asm/mach-default/mach_wakecpu.h>
19 20
20static int probe_summit(void) 21static int probe_summit(void)
21{ 22{
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 31e8730fa246..20ef272c412c 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -413,6 +413,7 @@ static noinline void pgtable_bad(unsigned long address, struct pt_regs *regs,
413 unsigned long error_code) 413 unsigned long error_code)
414{ 414{
415 unsigned long flags = oops_begin(); 415 unsigned long flags = oops_begin();
416 int sig = SIGKILL;
416 struct task_struct *tsk; 417 struct task_struct *tsk;
417 418
418 printk(KERN_ALERT "%s: Corrupted page table at address %lx\n", 419 printk(KERN_ALERT "%s: Corrupted page table at address %lx\n",
@@ -423,8 +424,8 @@ static noinline void pgtable_bad(unsigned long address, struct pt_regs *regs,
423 tsk->thread.trap_no = 14; 424 tsk->thread.trap_no = 14;
424 tsk->thread.error_code = error_code; 425 tsk->thread.error_code = error_code;
425 if (__die("Bad pagetable", regs, error_code)) 426 if (__die("Bad pagetable", regs, error_code))
426 regs = NULL; 427 sig = 0;
427 oops_end(flags, regs, SIGKILL); 428 oops_end(flags, regs, sig);
428} 429}
429#endif 430#endif
430 431
@@ -590,6 +591,7 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code)
590 int fault; 591 int fault;
591#ifdef CONFIG_X86_64 592#ifdef CONFIG_X86_64
592 unsigned long flags; 593 unsigned long flags;
594 int sig;
593#endif 595#endif
594 596
595 tsk = current; 597 tsk = current;
@@ -849,11 +851,12 @@ no_context:
849 bust_spinlocks(0); 851 bust_spinlocks(0);
850 do_exit(SIGKILL); 852 do_exit(SIGKILL);
851#else 853#else
854 sig = SIGKILL;
852 if (__die("Oops", regs, error_code)) 855 if (__die("Oops", regs, error_code))
853 regs = NULL; 856 sig = 0;
854 /* Executive summary in case the body of the oops scrolled away */ 857 /* Executive summary in case the body of the oops scrolled away */
855 printk(KERN_EMERG "CR2: %016lx\n", address); 858 printk(KERN_EMERG "CR2: %016lx\n", address);
856 oops_end(flags, regs, SIGKILL); 859 oops_end(flags, regs, sig);
857#endif 860#endif
858 861
859/* 862/*
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index 333c9e79d46f..800e1d94c1b5 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -967,8 +967,6 @@ void __init mem_init(void)
967 int codesize, reservedpages, datasize, initsize; 967 int codesize, reservedpages, datasize, initsize;
968 int tmp; 968 int tmp;
969 969
970 start_periodic_check_for_corruption();
971
972#ifdef CONFIG_FLATMEM 970#ifdef CONFIG_FLATMEM
973 BUG_ON(!mem_map); 971 BUG_ON(!mem_map);
974#endif 972#endif
@@ -1038,11 +1036,25 @@ void __init mem_init(void)
1038 (unsigned long)&_text, (unsigned long)&_etext, 1036 (unsigned long)&_text, (unsigned long)&_etext,
1039 ((unsigned long)&_etext - (unsigned long)&_text) >> 10); 1037 ((unsigned long)&_etext - (unsigned long)&_text) >> 10);
1040 1038
1039 /*
1040 * Check boundaries twice: Some fundamental inconsistencies can
1041 * be detected at build time already.
1042 */
1043#define __FIXADDR_TOP (-PAGE_SIZE)
1044#ifdef CONFIG_HIGHMEM
1045 BUILD_BUG_ON(PKMAP_BASE + LAST_PKMAP*PAGE_SIZE > FIXADDR_START);
1046 BUILD_BUG_ON(VMALLOC_END > PKMAP_BASE);
1047#endif
1048#define high_memory (-128UL << 20)
1049 BUILD_BUG_ON(VMALLOC_START >= VMALLOC_END);
1050#undef high_memory
1051#undef __FIXADDR_TOP
1052
1041#ifdef CONFIG_HIGHMEM 1053#ifdef CONFIG_HIGHMEM
1042 BUG_ON(PKMAP_BASE + LAST_PKMAP*PAGE_SIZE > FIXADDR_START); 1054 BUG_ON(PKMAP_BASE + LAST_PKMAP*PAGE_SIZE > FIXADDR_START);
1043 BUG_ON(VMALLOC_END > PKMAP_BASE); 1055 BUG_ON(VMALLOC_END > PKMAP_BASE);
1044#endif 1056#endif
1045 BUG_ON(VMALLOC_START > VMALLOC_END); 1057 BUG_ON(VMALLOC_START >= VMALLOC_END);
1046 BUG_ON((unsigned long)high_memory > VMALLOC_START); 1058 BUG_ON((unsigned long)high_memory > VMALLOC_START);
1047 1059
1048 if (boot_cpu_data.wp_works_ok < 0) 1060 if (boot_cpu_data.wp_works_ok < 0)
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 9db01db6e3cd..9f7a0d24d42a 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -902,8 +902,6 @@ void __init mem_init(void)
902 long codesize, reservedpages, datasize, initsize; 902 long codesize, reservedpages, datasize, initsize;
903 unsigned long absent_pages; 903 unsigned long absent_pages;
904 904
905 start_periodic_check_for_corruption();
906
907 pci_iommu_alloc(); 905 pci_iommu_alloc();
908 906
909 /* clear_bss() already clear the empty_zero_page */ 907 /* clear_bss() already clear the empty_zero_page */
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index d4c4307ff3e0..bd85d42819e1 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -223,7 +223,8 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
223 * Check if the request spans more than any BAR in the iomem resource 223 * Check if the request spans more than any BAR in the iomem resource
224 * tree. 224 * tree.
225 */ 225 */
226 WARN_ON(iomem_map_sanity_check(phys_addr, size)); 226 WARN_ONCE(iomem_map_sanity_check(phys_addr, size),
227 KERN_INFO "Info: mapping multiple BARs. Your kernel is fine.");
227 228
228 /* 229 /*
229 * Don't allow anybody to remap normal RAM that we're using.. 230 * Don't allow anybody to remap normal RAM that we're using..
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index eb1bf000d12e..541bcc944a5b 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -596,6 +596,242 @@ void unmap_devmem(unsigned long pfn, unsigned long size, pgprot_t vma_prot)
596 free_memtype(addr, addr + size); 596 free_memtype(addr, addr + size);
597} 597}
598 598
599/*
600 * Internal interface to reserve a range of physical memory with prot.
601 * Reserved non RAM regions only and after successful reserve_memtype,
602 * this func also keeps identity mapping (if any) in sync with this new prot.
603 */
604static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t vma_prot)
605{
606 int is_ram = 0;
607 int id_sz, ret;
608 unsigned long flags;
609 unsigned long want_flags = (pgprot_val(vma_prot) & _PAGE_CACHE_MASK);
610
611 is_ram = pagerange_is_ram(paddr, paddr + size);
612
613 if (is_ram != 0) {
614 /*
615 * For mapping RAM pages, drivers need to call
616 * set_memory_[uc|wc|wb] directly, for reserve and free, before
617 * setting up the PTE.
618 */
619 WARN_ON_ONCE(1);
620 return 0;
621 }
622
623 ret = reserve_memtype(paddr, paddr + size, want_flags, &flags);
624 if (ret)
625 return ret;
626
627 if (flags != want_flags) {
628 free_memtype(paddr, paddr + size);
629 printk(KERN_ERR
630 "%s:%d map pfn expected mapping type %s for %Lx-%Lx, got %s\n",
631 current->comm, current->pid,
632 cattr_name(want_flags),
633 (unsigned long long)paddr,
634 (unsigned long long)(paddr + size),
635 cattr_name(flags));
636 return -EINVAL;
637 }
638
639 /* Need to keep identity mapping in sync */
640 if (paddr >= __pa(high_memory))
641 return 0;
642
643 id_sz = (__pa(high_memory) < paddr + size) ?
644 __pa(high_memory) - paddr :
645 size;
646
647 if (ioremap_change_attr((unsigned long)__va(paddr), id_sz, flags) < 0) {
648 free_memtype(paddr, paddr + size);
649 printk(KERN_ERR
650 "%s:%d reserve_pfn_range ioremap_change_attr failed %s "
651 "for %Lx-%Lx\n",
652 current->comm, current->pid,
653 cattr_name(flags),
654 (unsigned long long)paddr,
655 (unsigned long long)(paddr + size));
656 return -EINVAL;
657 }
658 return 0;
659}
660
661/*
662 * Internal interface to free a range of physical memory.
663 * Frees non RAM regions only.
664 */
665static void free_pfn_range(u64 paddr, unsigned long size)
666{
667 int is_ram;
668
669 is_ram = pagerange_is_ram(paddr, paddr + size);
670 if (is_ram == 0)
671 free_memtype(paddr, paddr + size);
672}
673
674/*
675 * track_pfn_vma_copy is called when vma that is covering the pfnmap gets
676 * copied through copy_page_range().
677 *
678 * If the vma has a linear pfn mapping for the entire range, we get the prot
679 * from pte and reserve the entire vma range with single reserve_pfn_range call.
680 * Otherwise, we reserve the entire vma range, my ging through the PTEs page
681 * by page to get physical address and protection.
682 */
683int track_pfn_vma_copy(struct vm_area_struct *vma)
684{
685 int retval = 0;
686 unsigned long i, j;
687 u64 paddr;
688 unsigned long prot;
689 unsigned long vma_start = vma->vm_start;
690 unsigned long vma_end = vma->vm_end;
691 unsigned long vma_size = vma_end - vma_start;
692
693 if (!pat_enabled)
694 return 0;
695
696 if (is_linear_pfn_mapping(vma)) {
697 /*
698 * reserve the whole chunk covered by vma. We need the
699 * starting address and protection from pte.
700 */
701 if (follow_phys(vma, vma_start, 0, &prot, &paddr)) {
702 WARN_ON_ONCE(1);
703 return -EINVAL;
704 }
705 return reserve_pfn_range(paddr, vma_size, __pgprot(prot));
706 }
707
708 /* reserve entire vma page by page, using pfn and prot from pte */
709 for (i = 0; i < vma_size; i += PAGE_SIZE) {
710 if (follow_phys(vma, vma_start + i, 0, &prot, &paddr))
711 continue;
712
713 retval = reserve_pfn_range(paddr, PAGE_SIZE, __pgprot(prot));
714 if (retval)
715 goto cleanup_ret;
716 }
717 return 0;
718
719cleanup_ret:
720 /* Reserve error: Cleanup partial reservation and return error */
721 for (j = 0; j < i; j += PAGE_SIZE) {
722 if (follow_phys(vma, vma_start + j, 0, &prot, &paddr))
723 continue;
724
725 free_pfn_range(paddr, PAGE_SIZE);
726 }
727
728 return retval;
729}
730
731/*
732 * track_pfn_vma_new is called when a _new_ pfn mapping is being established
733 * for physical range indicated by pfn and size.
734 *
735 * prot is passed in as a parameter for the new mapping. If the vma has a
736 * linear pfn mapping for the entire range reserve the entire vma range with
737 * single reserve_pfn_range call.
738 * Otherwise, we look t the pfn and size and reserve only the specified range
739 * page by page.
740 *
741 * Note that this function can be called with caller trying to map only a
742 * subrange/page inside the vma.
743 */
744int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t prot,
745 unsigned long pfn, unsigned long size)
746{
747 int retval = 0;
748 unsigned long i, j;
749 u64 base_paddr;
750 u64 paddr;
751 unsigned long vma_start = vma->vm_start;
752 unsigned long vma_end = vma->vm_end;
753 unsigned long vma_size = vma_end - vma_start;
754
755 if (!pat_enabled)
756 return 0;
757
758 if (is_linear_pfn_mapping(vma)) {
759 /* reserve the whole chunk starting from vm_pgoff */
760 paddr = (u64)vma->vm_pgoff << PAGE_SHIFT;
761 return reserve_pfn_range(paddr, vma_size, prot);
762 }
763
764 /* reserve page by page using pfn and size */
765 base_paddr = (u64)pfn << PAGE_SHIFT;
766 for (i = 0; i < size; i += PAGE_SIZE) {
767 paddr = base_paddr + i;
768 retval = reserve_pfn_range(paddr, PAGE_SIZE, prot);
769 if (retval)
770 goto cleanup_ret;
771 }
772 return 0;
773
774cleanup_ret:
775 /* Reserve error: Cleanup partial reservation and return error */
776 for (j = 0; j < i; j += PAGE_SIZE) {
777 paddr = base_paddr + j;
778 free_pfn_range(paddr, PAGE_SIZE);
779 }
780
781 return retval;
782}
783
784/*
785 * untrack_pfn_vma is called while unmapping a pfnmap for a region.
786 * untrack can be called for a specific region indicated by pfn and size or
787 * can be for the entire vma (in which case size can be zero).
788 */
789void untrack_pfn_vma(struct vm_area_struct *vma, unsigned long pfn,
790 unsigned long size)
791{
792 unsigned long i;
793 u64 paddr;
794 unsigned long prot;
795 unsigned long vma_start = vma->vm_start;
796 unsigned long vma_end = vma->vm_end;
797 unsigned long vma_size = vma_end - vma_start;
798
799 if (!pat_enabled)
800 return;
801
802 if (is_linear_pfn_mapping(vma)) {
803 /* free the whole chunk starting from vm_pgoff */
804 paddr = (u64)vma->vm_pgoff << PAGE_SHIFT;
805 free_pfn_range(paddr, vma_size);
806 return;
807 }
808
809 if (size != 0 && size != vma_size) {
810 /* free page by page, using pfn and size */
811 paddr = (u64)pfn << PAGE_SHIFT;
812 for (i = 0; i < size; i += PAGE_SIZE) {
813 paddr = paddr + i;
814 free_pfn_range(paddr, PAGE_SIZE);
815 }
816 } else {
817 /* free entire vma, page by page, using the pfn from pte */
818 for (i = 0; i < vma_size; i += PAGE_SIZE) {
819 if (follow_phys(vma, vma_start + i, 0, &prot, &paddr))
820 continue;
821
822 free_pfn_range(paddr, PAGE_SIZE);
823 }
824 }
825}
826
827pgprot_t pgprot_writecombine(pgprot_t prot)
828{
829 if (pat_enabled)
830 return __pgprot(pgprot_val(prot) | _PAGE_CACHE_WC);
831 else
832 return pgprot_noncached(prot);
833}
834
599#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_X86_PAT) 835#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_X86_PAT)
600 836
601/* get Nth element of the linked list */ 837/* get Nth element of the linked list */
diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
index 022cd41ea9b4..202864ad49a7 100644
--- a/arch/x86/oprofile/nmi_int.c
+++ b/arch/x86/oprofile/nmi_int.c
@@ -401,14 +401,13 @@ static int __init ppro_init(char **cpu_type)
401 *cpu_type = "i386/pii"; 401 *cpu_type = "i386/pii";
402 break; 402 break;
403 case 6 ... 8: 403 case 6 ... 8:
404 case 10 ... 11:
404 *cpu_type = "i386/piii"; 405 *cpu_type = "i386/piii";
405 break; 406 break;
406 case 9: 407 case 9:
408 case 13:
407 *cpu_type = "i386/p6_mobile"; 409 *cpu_type = "i386/p6_mobile";
408 break; 410 break;
409 case 10 ... 13:
410 *cpu_type = "i386/p6";
411 break;
412 case 14: 411 case 14:
413 *cpu_type = "i386/core"; 412 *cpu_type = "i386/core";
414 break; 413 break;
diff --git a/arch/x86/oprofile/op_model_ppro.c b/arch/x86/oprofile/op_model_ppro.c
index 716d26f0e5d4..e9f80c744cf3 100644
--- a/arch/x86/oprofile/op_model_ppro.c
+++ b/arch/x86/oprofile/op_model_ppro.c
@@ -156,6 +156,8 @@ static void ppro_start(struct op_msrs const * const msrs)
156 unsigned int low, high; 156 unsigned int low, high;
157 int i; 157 int i;
158 158
159 if (!reset_value)
160 return;
159 for (i = 0; i < num_counters; ++i) { 161 for (i = 0; i < num_counters; ++i) {
160 if (reset_value[i]) { 162 if (reset_value[i]) {
161 CTRL_READ(low, high, msrs, i); 163 CTRL_READ(low, high, msrs, i);
@@ -171,6 +173,8 @@ static void ppro_stop(struct op_msrs const * const msrs)
171 unsigned int low, high; 173 unsigned int low, high;
172 int i; 174 int i;
173 175
176 if (!reset_value)
177 return;
174 for (i = 0; i < num_counters; ++i) { 178 for (i = 0; i < num_counters; ++i) {
175 if (!reset_value[i]) 179 if (!reset_value[i])
176 continue; 180 continue;
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index b67732bbb85a..bb1a01f089e2 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -23,6 +23,12 @@ unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 |
23unsigned int pci_early_dump_regs; 23unsigned int pci_early_dump_regs;
24static int pci_bf_sort; 24static int pci_bf_sort;
25int pci_routeirq; 25int pci_routeirq;
26int noioapicquirk;
27#ifdef CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS
28int noioapicreroute = 0;
29#else
30int noioapicreroute = 1;
31#endif
26int pcibios_last_bus = -1; 32int pcibios_last_bus = -1;
27unsigned long pirq_table_addr; 33unsigned long pirq_table_addr;
28struct pci_bus *pci_root_bus; 34struct pci_bus *pci_root_bus;
@@ -519,6 +525,17 @@ char * __devinit pcibios_setup(char *str)
519 } else if (!strcmp(str, "skip_isa_align")) { 525 } else if (!strcmp(str, "skip_isa_align")) {
520 pci_probe |= PCI_CAN_SKIP_ISA_ALIGN; 526 pci_probe |= PCI_CAN_SKIP_ISA_ALIGN;
521 return NULL; 527 return NULL;
528 } else if (!strcmp(str, "noioapicquirk")) {
529 noioapicquirk = 1;
530 return NULL;
531 } else if (!strcmp(str, "ioapicreroute")) {
532 if (noioapicreroute != -1)
533 noioapicreroute = 0;
534 return NULL;
535 } else if (!strcmp(str, "noioapicreroute")) {
536 if (noioapicreroute != -1)
537 noioapicreroute = 1;
538 return NULL;
522 } 539 }
523 return str; 540 return str;
524} 541}
diff --git a/arch/x86/pci/direct.c b/arch/x86/pci/direct.c
index 9915293500fb..9a5af6c8fbe9 100644
--- a/arch/x86/pci/direct.c
+++ b/arch/x86/pci/direct.c
@@ -173,7 +173,7 @@ static int pci_conf2_write(unsigned int seg, unsigned int bus,
173 173
174#undef PCI_CONF2_ADDRESS 174#undef PCI_CONF2_ADDRESS
175 175
176static struct pci_raw_ops pci_direct_conf2 = { 176struct pci_raw_ops pci_direct_conf2 = {
177 .read = pci_conf2_read, 177 .read = pci_conf2_read,
178 .write = pci_conf2_write, 178 .write = pci_conf2_write,
179}; 179};
@@ -289,6 +289,7 @@ int __init pci_direct_probe(void)
289 289
290 if (pci_check_type1()) { 290 if (pci_check_type1()) {
291 raw_pci_ops = &pci_direct_conf1; 291 raw_pci_ops = &pci_direct_conf1;
292 port_cf9_safe = true;
292 return 1; 293 return 1;
293 } 294 }
294 release_resource(region); 295 release_resource(region);
@@ -305,6 +306,7 @@ int __init pci_direct_probe(void)
305 306
306 if (pci_check_type2()) { 307 if (pci_check_type2()) {
307 raw_pci_ops = &pci_direct_conf2; 308 raw_pci_ops = &pci_direct_conf2;
309 port_cf9_safe = true;
308 return 2; 310 return 2;
309 } 311 }
310 312
diff --git a/arch/x86/pci/pci.h b/arch/x86/pci/pci.h
index 15b9cf6be729..1959018aac02 100644
--- a/arch/x86/pci/pci.h
+++ b/arch/x86/pci/pci.h
@@ -96,6 +96,7 @@ extern struct pci_raw_ops *raw_pci_ops;
96extern struct pci_raw_ops *raw_pci_ext_ops; 96extern struct pci_raw_ops *raw_pci_ext_ops;
97 97
98extern struct pci_raw_ops pci_direct_conf1; 98extern struct pci_raw_ops pci_direct_conf1;
99extern bool port_cf9_safe;
99 100
100/* arch_initcall level */ 101/* arch_initcall level */
101extern int pci_direct_probe(void); 102extern int pci_direct_probe(void);
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 5e4686d70f62..bea215230b20 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -28,6 +28,7 @@
28#include <linux/console.h> 28#include <linux/console.h>
29 29
30#include <xen/interface/xen.h> 30#include <xen/interface/xen.h>
31#include <xen/interface/version.h>
31#include <xen/interface/physdev.h> 32#include <xen/interface/physdev.h>
32#include <xen/interface/vcpu.h> 33#include <xen/interface/vcpu.h>
33#include <xen/features.h> 34#include <xen/features.h>
@@ -793,7 +794,7 @@ static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high)
793 794
794 ret = 0; 795 ret = 0;
795 796
796 switch(msr) { 797 switch (msr) {
797#ifdef CONFIG_X86_64 798#ifdef CONFIG_X86_64
798 unsigned which; 799 unsigned which;
799 u64 base; 800 u64 base;
@@ -1453,7 +1454,7 @@ static __init void xen_map_identity_early(pmd_t *pmd, unsigned long max_pfn)
1453 1454
1454 ident_pte = 0; 1455 ident_pte = 0;
1455 pfn = 0; 1456 pfn = 0;
1456 for(pmdidx = 0; pmdidx < PTRS_PER_PMD && pfn < max_pfn; pmdidx++) { 1457 for (pmdidx = 0; pmdidx < PTRS_PER_PMD && pfn < max_pfn; pmdidx++) {
1457 pte_t *pte_page; 1458 pte_t *pte_page;
1458 1459
1459 /* Reuse or allocate a page of ptes */ 1460 /* Reuse or allocate a page of ptes */
@@ -1471,7 +1472,7 @@ static __init void xen_map_identity_early(pmd_t *pmd, unsigned long max_pfn)
1471 } 1472 }
1472 1473
1473 /* Install mappings */ 1474 /* Install mappings */
1474 for(pteidx = 0; pteidx < PTRS_PER_PTE; pteidx++, pfn++) { 1475 for (pteidx = 0; pteidx < PTRS_PER_PTE; pteidx++, pfn++) {
1475 pte_t pte; 1476 pte_t pte;
1476 1477
1477 if (pfn > max_pfn_mapped) 1478 if (pfn > max_pfn_mapped)
@@ -1485,7 +1486,7 @@ static __init void xen_map_identity_early(pmd_t *pmd, unsigned long max_pfn)
1485 } 1486 }
1486 } 1487 }
1487 1488
1488 for(pteidx = 0; pteidx < ident_pte; pteidx += PTRS_PER_PTE) 1489 for (pteidx = 0; pteidx < ident_pte; pteidx += PTRS_PER_PTE)
1489 set_page_prot(&level1_ident_pgt[pteidx], PAGE_KERNEL_RO); 1490 set_page_prot(&level1_ident_pgt[pteidx], PAGE_KERNEL_RO);
1490 1491
1491 set_page_prot(pmd, PAGE_KERNEL_RO); 1492 set_page_prot(pmd, PAGE_KERNEL_RO);
@@ -1499,7 +1500,7 @@ static void convert_pfn_mfn(void *v)
1499 1500
1500 /* All levels are converted the same way, so just treat them 1501 /* All levels are converted the same way, so just treat them
1501 as ptes. */ 1502 as ptes. */
1502 for(i = 0; i < PTRS_PER_PTE; i++) 1503 for (i = 0; i < PTRS_PER_PTE; i++)
1503 pte[i] = xen_make_pte(pte[i].pte); 1504 pte[i] = xen_make_pte(pte[i].pte);
1504} 1505}
1505 1506
@@ -1514,7 +1515,8 @@ static void convert_pfn_mfn(void *v)
1514 * of the physical mapping once some sort of allocator has been set 1515 * of the physical mapping once some sort of allocator has been set
1515 * up. 1516 * up.
1516 */ 1517 */
1517static __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) 1518static __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd,
1519 unsigned long max_pfn)
1518{ 1520{
1519 pud_t *l3; 1521 pud_t *l3;
1520 pmd_t *l2; 1522 pmd_t *l2;
@@ -1577,7 +1579,8 @@ static __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pf
1577#else /* !CONFIG_X86_64 */ 1579#else /* !CONFIG_X86_64 */
1578static pmd_t level2_kernel_pgt[PTRS_PER_PMD] __page_aligned_bss; 1580static pmd_t level2_kernel_pgt[PTRS_PER_PMD] __page_aligned_bss;
1579 1581
1580static __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) 1582static __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd,
1583 unsigned long max_pfn)
1581{ 1584{
1582 pmd_t *kernel_pmd; 1585 pmd_t *kernel_pmd;
1583 1586
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index 636ef4caa52d..773d68d3e912 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -154,13 +154,13 @@ void xen_setup_mfn_list_list(void)
154{ 154{
155 unsigned pfn, idx; 155 unsigned pfn, idx;
156 156
157 for(pfn = 0; pfn < MAX_DOMAIN_PAGES; pfn += P2M_ENTRIES_PER_PAGE) { 157 for (pfn = 0; pfn < MAX_DOMAIN_PAGES; pfn += P2M_ENTRIES_PER_PAGE) {
158 unsigned topidx = p2m_top_index(pfn); 158 unsigned topidx = p2m_top_index(pfn);
159 159
160 p2m_top_mfn[topidx] = virt_to_mfn(p2m_top[topidx]); 160 p2m_top_mfn[topidx] = virt_to_mfn(p2m_top[topidx]);
161 } 161 }
162 162
163 for(idx = 0; idx < ARRAY_SIZE(p2m_top_mfn_list); idx++) { 163 for (idx = 0; idx < ARRAY_SIZE(p2m_top_mfn_list); idx++) {
164 unsigned topidx = idx * P2M_ENTRIES_PER_PAGE; 164 unsigned topidx = idx * P2M_ENTRIES_PER_PAGE;
165 p2m_top_mfn_list[idx] = virt_to_mfn(&p2m_top_mfn[topidx]); 165 p2m_top_mfn_list[idx] = virt_to_mfn(&p2m_top_mfn[topidx]);
166 } 166 }
@@ -179,7 +179,7 @@ void __init xen_build_dynamic_phys_to_machine(void)
179 unsigned long max_pfn = min(MAX_DOMAIN_PAGES, xen_start_info->nr_pages); 179 unsigned long max_pfn = min(MAX_DOMAIN_PAGES, xen_start_info->nr_pages);
180 unsigned pfn; 180 unsigned pfn;
181 181
182 for(pfn = 0; pfn < max_pfn; pfn += P2M_ENTRIES_PER_PAGE) { 182 for (pfn = 0; pfn < max_pfn; pfn += P2M_ENTRIES_PER_PAGE) {
183 unsigned topidx = p2m_top_index(pfn); 183 unsigned topidx = p2m_top_index(pfn);
184 184
185 p2m_top[topidx] = &mfn_list[pfn]; 185 p2m_top[topidx] = &mfn_list[pfn];
@@ -207,7 +207,7 @@ static void alloc_p2m(unsigned long **pp, unsigned long *mfnp)
207 p = (void *)__get_free_page(GFP_KERNEL | __GFP_NOFAIL); 207 p = (void *)__get_free_page(GFP_KERNEL | __GFP_NOFAIL);
208 BUG_ON(p == NULL); 208 BUG_ON(p == NULL);
209 209
210 for(i = 0; i < P2M_ENTRIES_PER_PAGE; i++) 210 for (i = 0; i < P2M_ENTRIES_PER_PAGE; i++)
211 p[i] = INVALID_P2M_ENTRY; 211 p[i] = INVALID_P2M_ENTRY;
212 212
213 if (cmpxchg(pp, p2m_missing, p) != p2m_missing) 213 if (cmpxchg(pp, p2m_missing, p) != p2m_missing)
@@ -407,7 +407,8 @@ out:
407 preempt_enable(); 407 preempt_enable();
408} 408}
409 409
410pte_t xen_ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr, pte_t *ptep) 410pte_t xen_ptep_modify_prot_start(struct mm_struct *mm,
411 unsigned long addr, pte_t *ptep)
411{ 412{
412 /* Just return the pte as-is. We preserve the bits on commit */ 413 /* Just return the pte as-is. We preserve the bits on commit */
413 return *ptep; 414 return *ptep;
@@ -878,7 +879,8 @@ static void __xen_pgd_pin(struct mm_struct *mm, pgd_t *pgd)
878 879
879 if (user_pgd) { 880 if (user_pgd) {
880 xen_pin_page(mm, virt_to_page(user_pgd), PT_PGD); 881 xen_pin_page(mm, virt_to_page(user_pgd), PT_PGD);
881 xen_do_pin(MMUEXT_PIN_L4_TABLE, PFN_DOWN(__pa(user_pgd))); 882 xen_do_pin(MMUEXT_PIN_L4_TABLE,
883 PFN_DOWN(__pa(user_pgd)));
882 } 884 }
883 } 885 }
884#else /* CONFIG_X86_32 */ 886#else /* CONFIG_X86_32 */
@@ -993,7 +995,8 @@ static void __xen_pgd_unpin(struct mm_struct *mm, pgd_t *pgd)
993 pgd_t *user_pgd = xen_get_user_pgd(pgd); 995 pgd_t *user_pgd = xen_get_user_pgd(pgd);
994 996
995 if (user_pgd) { 997 if (user_pgd) {
996 xen_do_pin(MMUEXT_UNPIN_TABLE, PFN_DOWN(__pa(user_pgd))); 998 xen_do_pin(MMUEXT_UNPIN_TABLE,
999 PFN_DOWN(__pa(user_pgd)));
997 xen_unpin_page(mm, virt_to_page(user_pgd), PT_PGD); 1000 xen_unpin_page(mm, virt_to_page(user_pgd), PT_PGD);
998 } 1001 }
999 } 1002 }
diff --git a/arch/x86/xen/multicalls.c b/arch/x86/xen/multicalls.c
index 8ea8a0d0b0de..c738644b5435 100644
--- a/arch/x86/xen/multicalls.c
+++ b/arch/x86/xen/multicalls.c
@@ -154,7 +154,7 @@ void xen_mc_flush(void)
154 ret, smp_processor_id()); 154 ret, smp_processor_id());
155 dump_stack(); 155 dump_stack();
156 for (i = 0; i < b->mcidx; i++) { 156 for (i = 0; i < b->mcidx; i++) {
157 printk(" call %2d/%d: op=%lu arg=[%lx] result=%ld\n", 157 printk(KERN_DEBUG " call %2d/%d: op=%lu arg=[%lx] result=%ld\n",
158 i+1, b->mcidx, 158 i+1, b->mcidx,
159 b->debug[i].op, 159 b->debug[i].op,
160 b->debug[i].args[0], 160 b->debug[i].args[0],
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index d67901083888..15c6c68db6a2 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -28,6 +28,9 @@
28/* These are code, but not functions. Defined in entry.S */ 28/* These are code, but not functions. Defined in entry.S */
29extern const char xen_hypervisor_callback[]; 29extern const char xen_hypervisor_callback[];
30extern const char xen_failsafe_callback[]; 30extern const char xen_failsafe_callback[];
31extern void xen_sysenter_target(void);
32extern void xen_syscall_target(void);
33extern void xen_syscall32_target(void);
31 34
32 35
33/** 36/**
@@ -110,7 +113,6 @@ static __cpuinit int register_callback(unsigned type, const void *func)
110 113
111void __cpuinit xen_enable_sysenter(void) 114void __cpuinit xen_enable_sysenter(void)
112{ 115{
113 extern void xen_sysenter_target(void);
114 int ret; 116 int ret;
115 unsigned sysenter_feature; 117 unsigned sysenter_feature;
116 118
@@ -132,8 +134,6 @@ void __cpuinit xen_enable_syscall(void)
132{ 134{
133#ifdef CONFIG_X86_64 135#ifdef CONFIG_X86_64
134 int ret; 136 int ret;
135 extern void xen_syscall_target(void);
136 extern void xen_syscall32_target(void);
137 137
138 ret = register_callback(CALLBACKTYPE_syscall, xen_syscall_target); 138 ret = register_callback(CALLBACKTYPE_syscall, xen_syscall_target);
139 if (ret != 0) { 139 if (ret != 0) {
@@ -160,7 +160,8 @@ void __init xen_arch_setup(void)
160 HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_writable_pagetables); 160 HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_writable_pagetables);
161 161
162 if (!xen_feature(XENFEAT_auto_translated_physmap)) 162 if (!xen_feature(XENFEAT_auto_translated_physmap))
163 HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_pae_extended_cr3); 163 HYPERVISOR_vm_assist(VMASST_CMD_enable,
164 VMASST_TYPE_pae_extended_cr3);
164 165
165 if (register_callback(CALLBACKTYPE_event, xen_hypervisor_callback) || 166 if (register_callback(CALLBACKTYPE_event, xen_hypervisor_callback) ||
166 register_callback(CALLBACKTYPE_failsafe, xen_failsafe_callback)) 167 register_callback(CALLBACKTYPE_failsafe, xen_failsafe_callback))
diff --git a/block/blk-barrier.c b/block/blk-barrier.c
index 5c99ff8d2db8..6e72d661ae42 100644
--- a/block/blk-barrier.c
+++ b/block/blk-barrier.c
@@ -161,7 +161,7 @@ static inline struct request *start_ordered(struct request_queue *q,
161 /* 161 /*
162 * Prep proxy barrier request. 162 * Prep proxy barrier request.
163 */ 163 */
164 blkdev_dequeue_request(rq); 164 elv_dequeue_request(q, rq);
165 q->orig_bar_rq = rq; 165 q->orig_bar_rq = rq;
166 rq = &q->bar_rq; 166 rq = &q->bar_rq;
167 blk_rq_init(q, rq); 167 blk_rq_init(q, rq);
@@ -219,7 +219,7 @@ int blk_do_ordered(struct request_queue *q, struct request **rqp)
219 * This can happen when the queue switches to 219 * This can happen when the queue switches to
220 * ORDERED_NONE while this request is on it. 220 * ORDERED_NONE while this request is on it.
221 */ 221 */
222 blkdev_dequeue_request(rq); 222 elv_dequeue_request(q, rq);
223 if (__blk_end_request(rq, -EOPNOTSUPP, 223 if (__blk_end_request(rq, -EOPNOTSUPP,
224 blk_rq_bytes(rq))) 224 blk_rq_bytes(rq)))
225 BUG(); 225 BUG();
diff --git a/block/blk-core.c b/block/blk-core.c
index 10e8a64a5a5b..c36aa98fafa3 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -592,7 +592,7 @@ blk_init_queue_node(request_fn_proc *rfn, spinlock_t *lock, int node_id)
592 1 << QUEUE_FLAG_STACKABLE); 592 1 << QUEUE_FLAG_STACKABLE);
593 q->queue_lock = lock; 593 q->queue_lock = lock;
594 594
595 blk_queue_segment_boundary(q, 0xffffffff); 595 blk_queue_segment_boundary(q, BLK_SEG_BOUNDARY_MASK);
596 596
597 blk_queue_make_request(q, __make_request); 597 blk_queue_make_request(q, __make_request);
598 blk_queue_max_segment_size(q, MAX_SEGMENT_SIZE); 598 blk_queue_max_segment_size(q, MAX_SEGMENT_SIZE);
@@ -1637,6 +1637,28 @@ int blk_insert_cloned_request(struct request_queue *q, struct request *rq)
1637EXPORT_SYMBOL_GPL(blk_insert_cloned_request); 1637EXPORT_SYMBOL_GPL(blk_insert_cloned_request);
1638 1638
1639/** 1639/**
1640 * blkdev_dequeue_request - dequeue request and start timeout timer
1641 * @req: request to dequeue
1642 *
1643 * Dequeue @req and start timeout timer on it. This hands off the
1644 * request to the driver.
1645 *
1646 * Block internal functions which don't want to start timer should
1647 * call elv_dequeue_request().
1648 */
1649void blkdev_dequeue_request(struct request *req)
1650{
1651 elv_dequeue_request(req->q, req);
1652
1653 /*
1654 * We are now handing the request to the hardware, add the
1655 * timeout handler.
1656 */
1657 blk_add_timer(req);
1658}
1659EXPORT_SYMBOL(blkdev_dequeue_request);
1660
1661/**
1640 * __end_that_request_first - end I/O on a request 1662 * __end_that_request_first - end I/O on a request
1641 * @req: the request being processed 1663 * @req: the request being processed
1642 * @error: %0 for success, < %0 for error 1664 * @error: %0 for success, < %0 for error
@@ -1774,7 +1796,7 @@ static void end_that_request_last(struct request *req, int error)
1774 blk_queue_end_tag(req->q, req); 1796 blk_queue_end_tag(req->q, req);
1775 1797
1776 if (blk_queued_rq(req)) 1798 if (blk_queued_rq(req))
1777 blkdev_dequeue_request(req); 1799 elv_dequeue_request(req->q, req);
1778 1800
1779 if (unlikely(laptop_mode) && blk_fs_request(req)) 1801 if (unlikely(laptop_mode) && blk_fs_request(req))
1780 laptop_io_completion(); 1802 laptop_io_completion();
diff --git a/block/blk-map.c b/block/blk-map.c
index 0f4b4b881811..2990447f45e9 100644
--- a/block/blk-map.c
+++ b/block/blk-map.c
@@ -224,7 +224,7 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
224 */ 224 */
225 bio_get(bio); 225 bio_get(bio);
226 bio_endio(bio, 0); 226 bio_endio(bio, 0);
227 bio_unmap_user(bio); 227 __blk_rq_unmap_user(bio);
228 return -EINVAL; 228 return -EINVAL;
229 } 229 }
230 230
diff --git a/block/blk-settings.c b/block/blk-settings.c
index 41392fbe19ff..afa55e14e278 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -125,6 +125,9 @@ void blk_queue_make_request(struct request_queue *q, make_request_fn *mfn)
125 q->nr_requests = BLKDEV_MAX_RQ; 125 q->nr_requests = BLKDEV_MAX_RQ;
126 blk_queue_max_phys_segments(q, MAX_PHYS_SEGMENTS); 126 blk_queue_max_phys_segments(q, MAX_PHYS_SEGMENTS);
127 blk_queue_max_hw_segments(q, MAX_HW_SEGMENTS); 127 blk_queue_max_hw_segments(q, MAX_HW_SEGMENTS);
128 blk_queue_segment_boundary(q, BLK_SEG_BOUNDARY_MASK);
129 blk_queue_max_segment_size(q, MAX_SEGMENT_SIZE);
130
128 q->make_request_fn = mfn; 131 q->make_request_fn = mfn;
129 q->backing_dev_info.ra_pages = 132 q->backing_dev_info.ra_pages =
130 (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE; 133 (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
@@ -314,6 +317,7 @@ void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b)
314 /* zero is "infinity" */ 317 /* zero is "infinity" */
315 t->max_sectors = min_not_zero(t->max_sectors, b->max_sectors); 318 t->max_sectors = min_not_zero(t->max_sectors, b->max_sectors);
316 t->max_hw_sectors = min_not_zero(t->max_hw_sectors, b->max_hw_sectors); 319 t->max_hw_sectors = min_not_zero(t->max_hw_sectors, b->max_hw_sectors);
320 t->seg_boundary_mask = min_not_zero(t->seg_boundary_mask, b->seg_boundary_mask);
317 321
318 t->max_phys_segments = min(t->max_phys_segments, b->max_phys_segments); 322 t->max_phys_segments = min(t->max_phys_segments, b->max_phys_segments);
319 t->max_hw_segments = min(t->max_hw_segments, b->max_hw_segments); 323 t->max_hw_segments = min(t->max_hw_segments, b->max_hw_segments);
diff --git a/block/bsg.c b/block/bsg.c
index e8bd2475682a..e73e50daf3d0 100644
--- a/block/bsg.c
+++ b/block/bsg.c
@@ -202,6 +202,8 @@ static int blk_fill_sgv4_hdr_rq(struct request_queue *q, struct request *rq,
202 rq->timeout = q->sg_timeout; 202 rq->timeout = q->sg_timeout;
203 if (!rq->timeout) 203 if (!rq->timeout)
204 rq->timeout = BLK_DEFAULT_SG_TIMEOUT; 204 rq->timeout = BLK_DEFAULT_SG_TIMEOUT;
205 if (rq->timeout < BLK_MIN_SG_TIMEOUT)
206 rq->timeout = BLK_MIN_SG_TIMEOUT;
205 207
206 return 0; 208 return 0;
207} 209}
diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
index 3d3e7a46f38c..67eb93cff699 100644
--- a/block/compat_ioctl.c
+++ b/block/compat_ioctl.c
@@ -677,6 +677,29 @@ static int compat_blkdev_driver_ioctl(struct block_device *bdev, fmode_t mode,
677 case DVD_WRITE_STRUCT: 677 case DVD_WRITE_STRUCT:
678 case DVD_AUTH: 678 case DVD_AUTH:
679 arg = (unsigned long)compat_ptr(arg); 679 arg = (unsigned long)compat_ptr(arg);
680 /* These intepret arg as an unsigned long, not as a pointer,
681 * so we must not do compat_ptr() conversion. */
682 case HDIO_SET_MULTCOUNT:
683 case HDIO_SET_UNMASKINTR:
684 case HDIO_SET_KEEPSETTINGS:
685 case HDIO_SET_32BIT:
686 case HDIO_SET_NOWERR:
687 case HDIO_SET_DMA:
688 case HDIO_SET_PIO_MODE:
689 case HDIO_SET_NICE:
690 case HDIO_SET_WCACHE:
691 case HDIO_SET_ACOUSTIC:
692 case HDIO_SET_BUSSTATE:
693 case HDIO_SET_ADDRESS:
694 case CDROMEJECT_SW:
695 case CDROM_SET_OPTIONS:
696 case CDROM_CLEAR_OPTIONS:
697 case CDROM_SELECT_SPEED:
698 case CDROM_SELECT_DISC:
699 case CDROM_MEDIA_CHANGED:
700 case CDROM_DRIVE_STATUS:
701 case CDROM_LOCKDOOR:
702 case CDROM_DEBUG:
680 break; 703 break;
681 default: 704 default:
682 /* unknown ioctl number */ 705 /* unknown ioctl number */
@@ -699,8 +722,14 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
699 struct backing_dev_info *bdi; 722 struct backing_dev_info *bdi;
700 loff_t size; 723 loff_t size;
701 724
725 /*
726 * O_NDELAY can be altered using fcntl(.., F_SETFL, ..), so we have
727 * to updated it before every ioctl.
728 */
702 if (file->f_flags & O_NDELAY) 729 if (file->f_flags & O_NDELAY)
703 mode |= FMODE_NDELAY_NOW; 730 mode |= FMODE_NDELAY;
731 else
732 mode &= ~FMODE_NDELAY;
704 733
705 switch (cmd) { 734 switch (cmd) {
706 case HDIO_GETGEO: 735 case HDIO_GETGEO:
diff --git a/block/elevator.c b/block/elevator.c
index 9ac82dde99dd..a6951f76ba0c 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -844,14 +844,7 @@ void elv_dequeue_request(struct request_queue *q, struct request *rq)
844 */ 844 */
845 if (blk_account_rq(rq)) 845 if (blk_account_rq(rq))
846 q->in_flight++; 846 q->in_flight++;
847
848 /*
849 * We are now handing the request to the hardware, add the
850 * timeout handler.
851 */
852 blk_add_timer(rq);
853} 847}
854EXPORT_SYMBOL(elv_dequeue_request);
855 848
856int elv_queue_empty(struct request_queue *q) 849int elv_queue_empty(struct request_queue *q)
857{ 850{
diff --git a/block/genhd.c b/block/genhd.c
index 27549e470da5..2f7feda61e35 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -1102,6 +1102,7 @@ struct gendisk *alloc_disk_node(int minors, int node_id)
1102 kfree(disk); 1102 kfree(disk);
1103 return NULL; 1103 return NULL;
1104 } 1104 }
1105 disk->node_id = node_id;
1105 if (disk_expand_part_tbl(disk, 0)) { 1106 if (disk_expand_part_tbl(disk, 0)) {
1106 free_part_stats(&disk->part0); 1107 free_part_stats(&disk->part0);
1107 kfree(disk); 1108 kfree(disk);
@@ -1116,7 +1117,6 @@ struct gendisk *alloc_disk_node(int minors, int node_id)
1116 device_initialize(disk_to_dev(disk)); 1117 device_initialize(disk_to_dev(disk));
1117 INIT_WORK(&disk->async_notify, 1118 INIT_WORK(&disk->async_notify,
1118 media_change_notify_thread); 1119 media_change_notify_thread);
1119 disk->node_id = node_id;
1120 } 1120 }
1121 return disk; 1121 return disk;
1122} 1122}
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
index 5963cf91a3a0..d0bb92cbefb9 100644
--- a/block/scsi_ioctl.c
+++ b/block/scsi_ioctl.c
@@ -208,6 +208,8 @@ static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
208 rq->timeout = q->sg_timeout; 208 rq->timeout = q->sg_timeout;
209 if (!rq->timeout) 209 if (!rq->timeout)
210 rq->timeout = BLK_DEFAULT_SG_TIMEOUT; 210 rq->timeout = BLK_DEFAULT_SG_TIMEOUT;
211 if (rq->timeout < BLK_MIN_SG_TIMEOUT)
212 rq->timeout = BLK_MIN_SG_TIMEOUT;
211 213
212 return 0; 214 return 0;
213} 215}
diff --git a/crypto/Kconfig b/crypto/Kconfig
index 39dbd8e4dde1..dc20a34ba5ef 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -31,35 +31,63 @@ config CRYPTO_FIPS
31 31
32config CRYPTO_ALGAPI 32config CRYPTO_ALGAPI
33 tristate 33 tristate
34 select CRYPTO_ALGAPI2
34 help 35 help
35 This option provides the API for cryptographic algorithms. 36 This option provides the API for cryptographic algorithms.
36 37
38config CRYPTO_ALGAPI2
39 tristate
40
37config CRYPTO_AEAD 41config CRYPTO_AEAD
38 tristate 42 tristate
43 select CRYPTO_AEAD2
39 select CRYPTO_ALGAPI 44 select CRYPTO_ALGAPI
40 45
46config CRYPTO_AEAD2
47 tristate
48 select CRYPTO_ALGAPI2
49
41config CRYPTO_BLKCIPHER 50config CRYPTO_BLKCIPHER
42 tristate 51 tristate
52 select CRYPTO_BLKCIPHER2
43 select CRYPTO_ALGAPI 53 select CRYPTO_ALGAPI
44 select CRYPTO_RNG 54
55config CRYPTO_BLKCIPHER2
56 tristate
57 select CRYPTO_ALGAPI2
58 select CRYPTO_RNG2
45 59
46config CRYPTO_HASH 60config CRYPTO_HASH
47 tristate 61 tristate
62 select CRYPTO_HASH2
48 select CRYPTO_ALGAPI 63 select CRYPTO_ALGAPI
49 64
65config CRYPTO_HASH2
66 tristate
67 select CRYPTO_ALGAPI2
68
50config CRYPTO_RNG 69config CRYPTO_RNG
51 tristate 70 tristate
71 select CRYPTO_RNG2
52 select CRYPTO_ALGAPI 72 select CRYPTO_ALGAPI
53 73
74config CRYPTO_RNG2
75 tristate
76 select CRYPTO_ALGAPI2
77
54config CRYPTO_MANAGER 78config CRYPTO_MANAGER
55 tristate "Cryptographic algorithm manager" 79 tristate "Cryptographic algorithm manager"
56 select CRYPTO_AEAD 80 select CRYPTO_MANAGER2
57 select CRYPTO_HASH
58 select CRYPTO_BLKCIPHER
59 help 81 help
60 Create default cryptographic template instantiations such as 82 Create default cryptographic template instantiations such as
61 cbc(aes). 83 cbc(aes).
62 84
85config CRYPTO_MANAGER2
86 def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
87 select CRYPTO_AEAD2
88 select CRYPTO_HASH2
89 select CRYPTO_BLKCIPHER2
90
63config CRYPTO_GF128MUL 91config CRYPTO_GF128MUL
64 tristate "GF(2^128) multiplication functions (EXPERIMENTAL)" 92 tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
65 depends on EXPERIMENTAL 93 depends on EXPERIMENTAL
diff --git a/crypto/Makefile b/crypto/Makefile
index 5862b807334e..cd4a4ed078ff 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -9,24 +9,24 @@ obj-$(CONFIG_CRYPTO_FIPS) += fips.o
9 9
10crypto_algapi-$(CONFIG_PROC_FS) += proc.o 10crypto_algapi-$(CONFIG_PROC_FS) += proc.o
11crypto_algapi-objs := algapi.o scatterwalk.o $(crypto_algapi-y) 11crypto_algapi-objs := algapi.o scatterwalk.o $(crypto_algapi-y)
12obj-$(CONFIG_CRYPTO_ALGAPI) += crypto_algapi.o 12obj-$(CONFIG_CRYPTO_ALGAPI2) += crypto_algapi.o
13 13
14obj-$(CONFIG_CRYPTO_AEAD) += aead.o 14obj-$(CONFIG_CRYPTO_AEAD2) += aead.o
15 15
16crypto_blkcipher-objs := ablkcipher.o 16crypto_blkcipher-objs := ablkcipher.o
17crypto_blkcipher-objs += blkcipher.o 17crypto_blkcipher-objs += blkcipher.o
18obj-$(CONFIG_CRYPTO_BLKCIPHER) += crypto_blkcipher.o 18obj-$(CONFIG_CRYPTO_BLKCIPHER2) += crypto_blkcipher.o
19obj-$(CONFIG_CRYPTO_BLKCIPHER) += chainiv.o 19obj-$(CONFIG_CRYPTO_BLKCIPHER2) += chainiv.o
20obj-$(CONFIG_CRYPTO_BLKCIPHER) += eseqiv.o 20obj-$(CONFIG_CRYPTO_BLKCIPHER2) += eseqiv.o
21obj-$(CONFIG_CRYPTO_SEQIV) += seqiv.o 21obj-$(CONFIG_CRYPTO_SEQIV) += seqiv.o
22 22
23crypto_hash-objs := hash.o 23crypto_hash-objs := hash.o
24crypto_hash-objs += ahash.o 24crypto_hash-objs += ahash.o
25obj-$(CONFIG_CRYPTO_HASH) += crypto_hash.o 25obj-$(CONFIG_CRYPTO_HASH2) += crypto_hash.o
26 26
27cryptomgr-objs := algboss.o testmgr.o 27cryptomgr-objs := algboss.o testmgr.o
28 28
29obj-$(CONFIG_CRYPTO_MANAGER) += cryptomgr.o 29obj-$(CONFIG_CRYPTO_MANAGER2) += cryptomgr.o
30obj-$(CONFIG_CRYPTO_HMAC) += hmac.o 30obj-$(CONFIG_CRYPTO_HMAC) += hmac.o
31obj-$(CONFIG_CRYPTO_XCBC) += xcbc.o 31obj-$(CONFIG_CRYPTO_XCBC) += xcbc.o
32obj-$(CONFIG_CRYPTO_NULL) += crypto_null.o 32obj-$(CONFIG_CRYPTO_NULL) += crypto_null.o
@@ -73,8 +73,8 @@ obj-$(CONFIG_CRYPTO_MICHAEL_MIC) += michael_mic.o
73obj-$(CONFIG_CRYPTO_CRC32C) += crc32c.o 73obj-$(CONFIG_CRYPTO_CRC32C) += crc32c.o
74obj-$(CONFIG_CRYPTO_AUTHENC) += authenc.o 74obj-$(CONFIG_CRYPTO_AUTHENC) += authenc.o
75obj-$(CONFIG_CRYPTO_LZO) += lzo.o 75obj-$(CONFIG_CRYPTO_LZO) += lzo.o
76obj-$(CONFIG_CRYPTO_RNG) += rng.o 76obj-$(CONFIG_CRYPTO_RNG2) += rng.o
77obj-$(CONFIG_CRYPTO_RNG) += krng.o 77obj-$(CONFIG_CRYPTO_RNG2) += krng.o
78obj-$(CONFIG_CRYPTO_ANSI_CPRNG) += ansi_cprng.o 78obj-$(CONFIG_CRYPTO_ANSI_CPRNG) += ansi_cprng.o
79obj-$(CONFIG_CRYPTO_TEST) += tcrypt.o 79obj-$(CONFIG_CRYPTO_TEST) += tcrypt.o
80 80
diff --git a/crypto/async_tx/async_xor.c b/crypto/async_tx/async_xor.c
index c029d3eb9ef0..595b78672b36 100644
--- a/crypto/async_tx/async_xor.c
+++ b/crypto/async_tx/async_xor.c
@@ -53,10 +53,17 @@ do_async_xor(struct dma_chan *chan, struct page *dest, struct page **src_list,
53 int xor_src_cnt; 53 int xor_src_cnt;
54 dma_addr_t dma_dest; 54 dma_addr_t dma_dest;
55 55
56 dma_dest = dma_map_page(dma->dev, dest, offset, len, DMA_FROM_DEVICE); 56 /* map the dest bidrectional in case it is re-used as a source */
57 for (i = 0; i < src_cnt; i++) 57 dma_dest = dma_map_page(dma->dev, dest, offset, len, DMA_BIDIRECTIONAL);
58 for (i = 0; i < src_cnt; i++) {
59 /* only map the dest once */
60 if (unlikely(src_list[i] == dest)) {
61 dma_src[i] = dma_dest;
62 continue;
63 }
58 dma_src[i] = dma_map_page(dma->dev, src_list[i], offset, 64 dma_src[i] = dma_map_page(dma->dev, src_list[i], offset,
59 len, DMA_TO_DEVICE); 65 len, DMA_TO_DEVICE);
66 }
60 67
61 while (src_cnt) { 68 while (src_cnt) {
62 async_flags = flags; 69 async_flags = flags;
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index a0a178dd189c..1423b0c0cd2e 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -174,15 +174,6 @@ static int acpi_battery_get_property(struct power_supply *psy,
174 break; 174 break;
175 case POWER_SUPPLY_PROP_CURRENT_NOW: 175 case POWER_SUPPLY_PROP_CURRENT_NOW:
176 val->intval = battery->current_now * 1000; 176 val->intval = battery->current_now * 1000;
177 /* if power units are mW, convert to mA by
178 dividing by current voltage (mV/1000) */
179 if (!battery->power_unit) {
180 if (battery->voltage_now) {
181 val->intval /= battery->voltage_now;
182 val->intval *= 1000;
183 } else
184 val->intval = -1;
185 }
186 break; 177 break;
187 case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: 178 case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
188 case POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN: 179 case POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN:
diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
index 11acaee14d66..bf79d83bdfbb 100644
--- a/drivers/acpi/pci_irq.c
+++ b/drivers/acpi/pci_irq.c
@@ -384,6 +384,27 @@ acpi_pci_free_irq(struct acpi_prt_entry *entry,
384 return irq; 384 return irq;
385} 385}
386 386
387#ifdef CONFIG_X86_IO_APIC
388extern int noioapicquirk;
389
390static int bridge_has_boot_interrupt_variant(struct pci_bus *bus)
391{
392 struct pci_bus *bus_it;
393
394 for (bus_it = bus ; bus_it ; bus_it = bus_it->parent) {
395 if (!bus_it->self)
396 return 0;
397
398 printk(KERN_INFO "vendor=%04x device=%04x\n", bus_it->self->vendor,
399 bus_it->self->device);
400
401 if (bus_it->self->irq_reroute_variant)
402 return bus_it->self->irq_reroute_variant;
403 }
404 return 0;
405}
406#endif /* CONFIG_X86_IO_APIC */
407
387/* 408/*
388 * acpi_pci_irq_lookup 409 * acpi_pci_irq_lookup
389 * success: return IRQ >= 0 410 * success: return IRQ >= 0
@@ -413,6 +434,41 @@ acpi_pci_irq_lookup(struct pci_bus *bus,
413 } 434 }
414 435
415 ret = func(entry, triggering, polarity, link); 436 ret = func(entry, triggering, polarity, link);
437
438#ifdef CONFIG_X86_IO_APIC
439 /*
440 * Some chipsets (e.g. intel 6700PXH) generate a legacy INTx when the
441 * IRQ entry in the chipset's IO-APIC is masked (as, e.g. the RT kernel
442 * does during interrupt handling). When this INTx generation cannot be
443 * disabled, we reroute these interrupts to their legacy equivalent to
444 * get rid of spurious interrupts.
445 */
446 if (!noioapicquirk) {
447 switch (bridge_has_boot_interrupt_variant(bus)) {
448 case 0:
449 /* no rerouting necessary */
450 break;
451
452 case INTEL_IRQ_REROUTE_VARIANT:
453 /*
454 * Remap according to INTx routing table in 6700PXH
455 * specs, intel order number 302628-002, section
456 * 2.15.2. Other chipsets (80332, ...) have the same
457 * mapping and are handled here as well.
458 */
459 printk(KERN_INFO "pci irq %d -> rerouted to legacy "
460 "irq %d\n", ret, (ret % 4) + 16);
461 ret = (ret % 4) + 16;
462 break;
463
464 default:
465 printk(KERN_INFO "not rerouting irq %d to legacy irq: "
466 "unknown mapping\n", ret);
467 break;
468 }
469 }
470#endif /* CONFIG_X86_IO_APIC */
471
416 return ret; 472 return ret;
417} 473}
418 474
diff --git a/drivers/acpi/toshiba_acpi.c b/drivers/acpi/toshiba_acpi.c
index 25f531d892de..40e60fc2e596 100644
--- a/drivers/acpi/toshiba_acpi.c
+++ b/drivers/acpi/toshiba_acpi.c
@@ -824,32 +824,36 @@ static int __init toshiba_acpi_init(void)
824 toshiba_acpi_exit(); 824 toshiba_acpi_exit();
825 return -ENOMEM; 825 return -ENOMEM;
826 } 826 }
827 }
828 827
829 /* Register input device for kill switch */ 828 /* Register input device for kill switch */
830 toshiba_acpi.poll_dev = input_allocate_polled_device(); 829 toshiba_acpi.poll_dev = input_allocate_polled_device();
831 if (!toshiba_acpi.poll_dev) { 830 if (!toshiba_acpi.poll_dev) {
832 printk(MY_ERR "unable to allocate kill-switch input device\n"); 831 printk(MY_ERR
833 toshiba_acpi_exit(); 832 "unable to allocate kill-switch input device\n");
834 return -ENOMEM; 833 toshiba_acpi_exit();
835 } 834 return -ENOMEM;
836 toshiba_acpi.poll_dev->private = &toshiba_acpi; 835 }
837 toshiba_acpi.poll_dev->poll = bt_poll_rfkill; 836 toshiba_acpi.poll_dev->private = &toshiba_acpi;
838 toshiba_acpi.poll_dev->poll_interval = 1000; /* msecs */ 837 toshiba_acpi.poll_dev->poll = bt_poll_rfkill;
839 838 toshiba_acpi.poll_dev->poll_interval = 1000; /* msecs */
840 toshiba_acpi.poll_dev->input->name = toshiba_acpi.rfk_name; 839
841 toshiba_acpi.poll_dev->input->id.bustype = BUS_HOST; 840 toshiba_acpi.poll_dev->input->name = toshiba_acpi.rfk_name;
842 toshiba_acpi.poll_dev->input->id.vendor = 0x0930; /* Toshiba USB ID */ 841 toshiba_acpi.poll_dev->input->id.bustype = BUS_HOST;
843 set_bit(EV_SW, toshiba_acpi.poll_dev->input->evbit); 842 /* Toshiba USB ID */
844 set_bit(SW_RFKILL_ALL, toshiba_acpi.poll_dev->input->swbit); 843 toshiba_acpi.poll_dev->input->id.vendor = 0x0930;
845 input_report_switch(toshiba_acpi.poll_dev->input, SW_RFKILL_ALL, TRUE); 844 set_bit(EV_SW, toshiba_acpi.poll_dev->input->evbit);
846 input_sync(toshiba_acpi.poll_dev->input); 845 set_bit(SW_RFKILL_ALL, toshiba_acpi.poll_dev->input->swbit);
847 846 input_report_switch(toshiba_acpi.poll_dev->input,
848 ret = input_register_polled_device(toshiba_acpi.poll_dev); 847 SW_RFKILL_ALL, TRUE);
849 if (ret) { 848 input_sync(toshiba_acpi.poll_dev->input);
850 printk(MY_ERR "unable to register kill-switch input device\n"); 849
851 toshiba_acpi_exit(); 850 ret = input_register_polled_device(toshiba_acpi.poll_dev);
852 return ret; 851 if (ret) {
852 printk(MY_ERR
853 "unable to register kill-switch input device\n");
854 toshiba_acpi_exit();
855 return ret;
856 }
853 } 857 }
854 858
855 return 0; 859 return 0;
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 78fbec8ceda0..421b7c71e72d 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -153,7 +153,7 @@ config SATA_PROMISE
153 If unsure, say N. 153 If unsure, say N.
154 154
155config SATA_SX4 155config SATA_SX4
156 tristate "Promise SATA SX4 support" 156 tristate "Promise SATA SX4 support (Experimental)"
157 depends on PCI && EXPERIMENTAL 157 depends on PCI && EXPERIMENTAL
158 help 158 help
159 This option enables support for Promise Serial ATA SX4. 159 This option enables support for Promise Serial ATA SX4.
@@ -219,8 +219,8 @@ config PATA_ACPI
219 otherwise unsupported hardware. 219 otherwise unsupported hardware.
220 220
221config PATA_ALI 221config PATA_ALI
222 tristate "ALi PATA support (Experimental)" 222 tristate "ALi PATA support"
223 depends on PCI && EXPERIMENTAL 223 depends on PCI
224 help 224 help
225 This option enables support for the ALi ATA interfaces 225 This option enables support for the ALi ATA interfaces
226 found on the many ALi chipsets. 226 found on the many ALi chipsets.
@@ -263,7 +263,7 @@ config PATA_ATIIXP
263 If unsure, say N. 263 If unsure, say N.
264 264
265config PATA_CMD640_PCI 265config PATA_CMD640_PCI
266 tristate "CMD640 PCI PATA support (Very Experimental)" 266 tristate "CMD640 PCI PATA support (Experimental)"
267 depends on PCI && EXPERIMENTAL 267 depends on PCI && EXPERIMENTAL
268 help 268 help
269 This option enables support for the CMD640 PCI IDE 269 This option enables support for the CMD640 PCI IDE
@@ -291,8 +291,8 @@ config PATA_CS5520
291 If unsure, say N. 291 If unsure, say N.
292 292
293config PATA_CS5530 293config PATA_CS5530
294 tristate "CS5530 PATA support (Experimental)" 294 tristate "CS5530 PATA support"
295 depends on PCI && EXPERIMENTAL 295 depends on PCI
296 help 296 help
297 This option enables support for the Cyrix/NatSemi/AMD CS5530 297 This option enables support for the Cyrix/NatSemi/AMD CS5530
298 companion chip used with the MediaGX/Geode processor family. 298 companion chip used with the MediaGX/Geode processor family.
@@ -309,8 +309,8 @@ config PATA_CS5535
309 If unsure, say N. 309 If unsure, say N.
310 310
311config PATA_CS5536 311config PATA_CS5536
312 tristate "CS5536 PATA support (Experimental)" 312 tristate "CS5536 PATA support"
313 depends on PCI && X86 && !X86_64 && EXPERIMENTAL 313 depends on PCI && X86 && !X86_64
314 help 314 help
315 This option enables support for the AMD CS5536 315 This option enables support for the AMD CS5536
316 companion chip used with the Geode LX processor family. 316 companion chip used with the Geode LX processor family.
@@ -363,7 +363,7 @@ config PATA_HPT37X
363 If unsure, say N. 363 If unsure, say N.
364 364
365config PATA_HPT3X2N 365config PATA_HPT3X2N
366 tristate "HPT 372N/302N PATA support (Very Experimental)" 366 tristate "HPT 372N/302N PATA support (Experimental)"
367 depends on PCI && EXPERIMENTAL 367 depends on PCI && EXPERIMENTAL
368 help 368 help
369 This option enables support for the N variant HPT PATA 369 This option enables support for the N variant HPT PATA
@@ -389,8 +389,8 @@ config PATA_HPT3X3_DMA
389 problems with DMA on this chipset. 389 problems with DMA on this chipset.
390 390
391config PATA_ISAPNP 391config PATA_ISAPNP
392 tristate "ISA Plug and Play PATA support (Experimental)" 392 tristate "ISA Plug and Play PATA support"
393 depends on EXPERIMENTAL && ISAPNP 393 depends on ISAPNP
394 help 394 help
395 This option enables support for ISA plug & play ATA 395 This option enables support for ISA plug & play ATA
396 controllers such as those found on old soundcards. 396 controllers such as those found on old soundcards.
@@ -498,8 +498,8 @@ config PATA_NINJA32
498 If unsure, say N. 498 If unsure, say N.
499 499
500config PATA_NS87410 500config PATA_NS87410
501 tristate "Nat Semi NS87410 PATA support (Experimental)" 501 tristate "Nat Semi NS87410 PATA support"
502 depends on PCI && EXPERIMENTAL 502 depends on PCI
503 help 503 help
504 This option enables support for the National Semiconductor 504 This option enables support for the National Semiconductor
505 NS87410 PCI-IDE controller. 505 NS87410 PCI-IDE controller.
@@ -507,8 +507,8 @@ config PATA_NS87410
507 If unsure, say N. 507 If unsure, say N.
508 508
509config PATA_NS87415 509config PATA_NS87415
510 tristate "Nat Semi NS87415 PATA support (Experimental)" 510 tristate "Nat Semi NS87415 PATA support"
511 depends on PCI && EXPERIMENTAL 511 depends on PCI
512 help 512 help
513 This option enables support for the National Semiconductor 513 This option enables support for the National Semiconductor
514 NS87415 PCI-IDE controller. 514 NS87415 PCI-IDE controller.
@@ -544,8 +544,8 @@ config PATA_PCMCIA
544 If unsure, say N. 544 If unsure, say N.
545 545
546config PATA_PDC_OLD 546config PATA_PDC_OLD
547 tristate "Older Promise PATA controller support (Experimental)" 547 tristate "Older Promise PATA controller support"
548 depends on PCI && EXPERIMENTAL 548 depends on PCI
549 help 549 help
550 This option enables support for the Promise 20246, 20262, 20263, 550 This option enables support for the Promise 20246, 20262, 20263,
551 20265 and 20267 adapters. 551 20265 and 20267 adapters.
@@ -559,7 +559,7 @@ config PATA_QDI
559 Support for QDI 6500 and 6580 PATA controllers on VESA local bus. 559 Support for QDI 6500 and 6580 PATA controllers on VESA local bus.
560 560
561config PATA_RADISYS 561config PATA_RADISYS
562 tristate "RADISYS 82600 PATA support (Very Experimental)" 562 tristate "RADISYS 82600 PATA support (Experimental)"
563 depends on PCI && EXPERIMENTAL 563 depends on PCI && EXPERIMENTAL
564 help 564 help
565 This option enables support for the RADISYS 82600 565 This option enables support for the RADISYS 82600
@@ -586,8 +586,8 @@ config PATA_RZ1000
586 If unsure, say N. 586 If unsure, say N.
587 587
588config PATA_SC1200 588config PATA_SC1200
589 tristate "SC1200 PATA support (Very Experimental)" 589 tristate "SC1200 PATA support"
590 depends on PCI && EXPERIMENTAL 590 depends on PCI
591 help 591 help
592 This option enables support for the NatSemi/AMD SC1200 SoC 592 This option enables support for the NatSemi/AMD SC1200 SoC
593 companion chip used with the Geode processor family. 593 companion chip used with the Geode processor family.
@@ -620,8 +620,8 @@ config PATA_SIL680
620 If unsure, say N. 620 If unsure, say N.
621 621
622config PATA_SIS 622config PATA_SIS
623 tristate "SiS PATA support (Experimental)" 623 tristate "SiS PATA support"
624 depends on PCI && EXPERIMENTAL 624 depends on PCI
625 help 625 help
626 This option enables support for SiS PATA controllers 626 This option enables support for SiS PATA controllers
627 627
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index d6d97d8f3fa4..c11936e13dd3 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -1072,7 +1072,14 @@ static int piix_broken_suspend(void)
1072 * matching is necessary because dmi_system_id.matches is 1072 * matching is necessary because dmi_system_id.matches is
1073 * limited to four entries. 1073 * limited to four entries.
1074 */ 1074 */
1075 if (!strcmp(dmi_get_system_info(DMI_SYS_VENDOR), "TOSHIBA") && 1075 if (dmi_get_system_info(DMI_SYS_VENDOR) &&
1076 dmi_get_system_info(DMI_PRODUCT_NAME) &&
1077 dmi_get_system_info(DMI_PRODUCT_VERSION) &&
1078 dmi_get_system_info(DMI_PRODUCT_SERIAL) &&
1079 dmi_get_system_info(DMI_BOARD_VENDOR) &&
1080 dmi_get_system_info(DMI_BOARD_NAME) &&
1081 dmi_get_system_info(DMI_BOARD_VERSION) &&
1082 !strcmp(dmi_get_system_info(DMI_SYS_VENDOR), "TOSHIBA") &&
1076 !strcmp(dmi_get_system_info(DMI_PRODUCT_NAME), "000000") && 1083 !strcmp(dmi_get_system_info(DMI_PRODUCT_NAME), "000000") &&
1077 !strcmp(dmi_get_system_info(DMI_PRODUCT_VERSION), "000000") && 1084 !strcmp(dmi_get_system_info(DMI_PRODUCT_VERSION), "000000") &&
1078 !strcmp(dmi_get_system_info(DMI_PRODUCT_SERIAL), "000000") && 1085 !strcmp(dmi_get_system_info(DMI_PRODUCT_SERIAL), "000000") &&
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 5e2eb740df46..bc6695e3c848 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4050,17 +4050,70 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
4050 { "ST3160023AS", "3.42", ATA_HORKAGE_NONCQ }, 4050 { "ST3160023AS", "3.42", ATA_HORKAGE_NONCQ },
4051 4051
4052 /* Seagate NCQ + FLUSH CACHE firmware bug */ 4052 /* Seagate NCQ + FLUSH CACHE firmware bug */
4053 { "ST31500341AS", "9JU138", ATA_HORKAGE_NONCQ | 4053 { "ST31500341AS", "SD15", ATA_HORKAGE_NONCQ |
4054 ATA_HORKAGE_FIRMWARE_WARN }, 4054 ATA_HORKAGE_FIRMWARE_WARN },
4055 { "ST31000333AS", "9FZ136", ATA_HORKAGE_NONCQ | 4055 { "ST31500341AS", "SD16", ATA_HORKAGE_NONCQ |
4056 ATA_HORKAGE_FIRMWARE_WARN }, 4056 ATA_HORKAGE_FIRMWARE_WARN },
4057 { "ST3640623AS", "9FZ164", ATA_HORKAGE_NONCQ | 4057 { "ST31500341AS", "SD17", ATA_HORKAGE_NONCQ |
4058 ATA_HORKAGE_FIRMWARE_WARN }, 4058 ATA_HORKAGE_FIRMWARE_WARN },
4059 { "ST3640323AS", "9FZ134", ATA_HORKAGE_NONCQ | 4059 { "ST31500341AS", "SD18", ATA_HORKAGE_NONCQ |
4060 ATA_HORKAGE_FIRMWARE_WARN }, 4060 ATA_HORKAGE_FIRMWARE_WARN },
4061 { "ST3320813AS", "9FZ182", ATA_HORKAGE_NONCQ | 4061 { "ST31500341AS", "SD19", ATA_HORKAGE_NONCQ |
4062 ATA_HORKAGE_FIRMWARE_WARN }, 4062 ATA_HORKAGE_FIRMWARE_WARN },
4063 { "ST3320613AS", "9FZ162", ATA_HORKAGE_NONCQ | 4063
4064 { "ST31000333AS", "SD15", ATA_HORKAGE_NONCQ |
4065 ATA_HORKAGE_FIRMWARE_WARN },
4066 { "ST31000333AS", "SD16", ATA_HORKAGE_NONCQ |
4067 ATA_HORKAGE_FIRMWARE_WARN },
4068 { "ST31000333AS", "SD17", ATA_HORKAGE_NONCQ |
4069 ATA_HORKAGE_FIRMWARE_WARN },
4070 { "ST31000333AS", "SD18", ATA_HORKAGE_NONCQ |
4071 ATA_HORKAGE_FIRMWARE_WARN },
4072 { "ST31000333AS", "SD19", ATA_HORKAGE_NONCQ |
4073 ATA_HORKAGE_FIRMWARE_WARN },
4074
4075 { "ST3640623AS", "SD15", ATA_HORKAGE_NONCQ |
4076 ATA_HORKAGE_FIRMWARE_WARN },
4077 { "ST3640623AS", "SD16", ATA_HORKAGE_NONCQ |
4078 ATA_HORKAGE_FIRMWARE_WARN },
4079 { "ST3640623AS", "SD17", ATA_HORKAGE_NONCQ |
4080 ATA_HORKAGE_FIRMWARE_WARN },
4081 { "ST3640623AS", "SD18", ATA_HORKAGE_NONCQ |
4082 ATA_HORKAGE_FIRMWARE_WARN },
4083 { "ST3640623AS", "SD19", ATA_HORKAGE_NONCQ |
4084 ATA_HORKAGE_FIRMWARE_WARN },
4085
4086 { "ST3640323AS", "SD15", ATA_HORKAGE_NONCQ |
4087 ATA_HORKAGE_FIRMWARE_WARN },
4088 { "ST3640323AS", "SD16", ATA_HORKAGE_NONCQ |
4089 ATA_HORKAGE_FIRMWARE_WARN },
4090 { "ST3640323AS", "SD17", ATA_HORKAGE_NONCQ |
4091 ATA_HORKAGE_FIRMWARE_WARN },
4092 { "ST3640323AS", "SD18", ATA_HORKAGE_NONCQ |
4093 ATA_HORKAGE_FIRMWARE_WARN },
4094 { "ST3640323AS", "SD19", ATA_HORKAGE_NONCQ |
4095 ATA_HORKAGE_FIRMWARE_WARN },
4096
4097 { "ST3320813AS", "SD15", ATA_HORKAGE_NONCQ |
4098 ATA_HORKAGE_FIRMWARE_WARN },
4099 { "ST3320813AS", "SD16", ATA_HORKAGE_NONCQ |
4100 ATA_HORKAGE_FIRMWARE_WARN },
4101 { "ST3320813AS", "SD17", ATA_HORKAGE_NONCQ |
4102 ATA_HORKAGE_FIRMWARE_WARN },
4103 { "ST3320813AS", "SD18", ATA_HORKAGE_NONCQ |
4104 ATA_HORKAGE_FIRMWARE_WARN },
4105 { "ST3320813AS", "SD19", ATA_HORKAGE_NONCQ |
4106 ATA_HORKAGE_FIRMWARE_WARN },
4107
4108 { "ST3320613AS", "SD15", ATA_HORKAGE_NONCQ |
4109 ATA_HORKAGE_FIRMWARE_WARN },
4110 { "ST3320613AS", "SD16", ATA_HORKAGE_NONCQ |
4111 ATA_HORKAGE_FIRMWARE_WARN },
4112 { "ST3320613AS", "SD17", ATA_HORKAGE_NONCQ |
4113 ATA_HORKAGE_FIRMWARE_WARN },
4114 { "ST3320613AS", "SD18", ATA_HORKAGE_NONCQ |
4115 ATA_HORKAGE_FIRMWARE_WARN },
4116 { "ST3320613AS", "SD19", ATA_HORKAGE_NONCQ |
4064 ATA_HORKAGE_FIRMWARE_WARN }, 4117 ATA_HORKAGE_FIRMWARE_WARN },
4065 4118
4066 /* Blacklist entries taken from Silicon Image 3124/3132 4119 /* Blacklist entries taken from Silicon Image 3124/3132
diff --git a/drivers/ata/pata_hpt366.c b/drivers/ata/pata_hpt366.c
index f2b83eabc7c7..e0c4f05d7d57 100644
--- a/drivers/ata/pata_hpt366.c
+++ b/drivers/ata/pata_hpt366.c
@@ -183,7 +183,9 @@ static unsigned long hpt366_filter(struct ata_device *adev, unsigned long mask)
183 mask &= ~(0xF8 << ATA_SHIFT_UDMA); 183 mask &= ~(0xF8 << ATA_SHIFT_UDMA);
184 if (hpt_dma_blacklisted(adev, "UDMA4", bad_ata66_4)) 184 if (hpt_dma_blacklisted(adev, "UDMA4", bad_ata66_4))
185 mask &= ~(0xF0 << ATA_SHIFT_UDMA); 185 mask &= ~(0xF0 << ATA_SHIFT_UDMA);
186 } 186 } else if (adev->class == ATA_DEV_ATAPI)
187 mask &= ~(ATA_MASK_MWDMA | ATA_MASK_UDMA);
188
187 return ata_bmdma_mode_filter(adev, mask); 189 return ata_bmdma_mode_filter(adev, mask);
188} 190}
189 191
@@ -211,11 +213,15 @@ static u32 hpt36x_find_mode(struct ata_port *ap, int speed)
211 213
212static int hpt36x_cable_detect(struct ata_port *ap) 214static int hpt36x_cable_detect(struct ata_port *ap)
213{ 215{
214 u8 ata66;
215 struct pci_dev *pdev = to_pci_dev(ap->host->dev); 216 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
217 u8 ata66;
216 218
219 /*
220 * Each channel of pata_hpt366 occupies separate PCI function
221 * as the primary channel and bit1 indicates the cable type.
222 */
217 pci_read_config_byte(pdev, 0x5A, &ata66); 223 pci_read_config_byte(pdev, 0x5A, &ata66);
218 if (ata66 & (1 << ap->port_no)) 224 if (ata66 & 2)
219 return ATA_CBL_PATA40; 225 return ATA_CBL_PATA40;
220 return ATA_CBL_PATA80; 226 return ATA_CBL_PATA80;
221} 227}
@@ -382,10 +388,10 @@ static int hpt36x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
382 /* PCI clocking determines the ATA timing values to use */ 388 /* PCI clocking determines the ATA timing values to use */
383 /* info_hpt366 is safe against re-entry so we can scribble on it */ 389 /* info_hpt366 is safe against re-entry so we can scribble on it */
384 switch((reg1 & 0x700) >> 8) { 390 switch((reg1 & 0x700) >> 8) {
385 case 5: 391 case 9:
386 hpriv = &hpt366_40; 392 hpriv = &hpt366_40;
387 break; 393 break;
388 case 9: 394 case 5:
389 hpriv = &hpt366_25; 395 hpriv = &hpt366_25;
390 break; 396 break;
391 default: 397 default:
diff --git a/drivers/ata/pata_ninja32.c b/drivers/ata/pata_ninja32.c
index 4e466eae8b46..4dd9a3b031e4 100644
--- a/drivers/ata/pata_ninja32.c
+++ b/drivers/ata/pata_ninja32.c
@@ -44,7 +44,7 @@
44#include <linux/libata.h> 44#include <linux/libata.h>
45 45
46#define DRV_NAME "pata_ninja32" 46#define DRV_NAME "pata_ninja32"
47#define DRV_VERSION "0.1.1" 47#define DRV_VERSION "0.1.3"
48 48
49 49
50/** 50/**
@@ -130,7 +130,8 @@ static int ninja32_init_one(struct pci_dev *dev, const struct pci_device_id *id)
130 return rc; 130 return rc;
131 pci_set_master(dev); 131 pci_set_master(dev);
132 132
133 /* Set up the register mappings */ 133 /* Set up the register mappings. We use the I/O mapping as only the
134 older chips also have MMIO on BAR 1 */
134 base = host->iomap[0]; 135 base = host->iomap[0];
135 if (!base) 136 if (!base)
136 return -ENOMEM; 137 return -ENOMEM;
@@ -167,8 +168,12 @@ static int ninja32_reinit_one(struct pci_dev *pdev)
167#endif 168#endif
168 169
169static const struct pci_device_id ninja32[] = { 170static const struct pci_device_id ninja32[] = {
171 { 0x10FC, 0x0003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
172 { 0x1145, 0x8008, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
173 { 0x1145, 0xf008, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
170 { 0x1145, 0xf021, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, 174 { 0x1145, 0xf021, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
171 { 0x1145, 0xf024, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, 175 { 0x1145, 0xf024, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
176 { 0x1145, 0xf02C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
172 { }, 177 { },
173}; 178};
174 179
diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c
index d34236611752..e4be55e047f6 100644
--- a/drivers/ata/pata_sis.c
+++ b/drivers/ata/pata_sis.c
@@ -56,7 +56,6 @@ static const struct sis_laptop sis_laptop[] = {
56 { 0x5513, 0x1043, 0x1107 }, /* ASUS A6K */ 56 { 0x5513, 0x1043, 0x1107 }, /* ASUS A6K */
57 { 0x5513, 0x1734, 0x105F }, /* FSC Amilo A1630 */ 57 { 0x5513, 0x1734, 0x105F }, /* FSC Amilo A1630 */
58 { 0x5513, 0x1071, 0x8640 }, /* EasyNote K5305 */ 58 { 0x5513, 0x1071, 0x8640 }, /* EasyNote K5305 */
59 { 0x5513, 0x1039, 0x5513 }, /* Targa Visionary 1000 */
60 /* end marker */ 59 /* end marker */
61 { 0, } 60 { 0, }
62}; 61};
diff --git a/drivers/atm/horizon.c b/drivers/atm/horizon.c
index 615412364e99..6b969f8c684f 100644
--- a/drivers/atm/horizon.c
+++ b/drivers/atm/horizon.c
@@ -2705,7 +2705,7 @@ static int __devinit hrz_probe(struct pci_dev *pci_dev, const struct pci_device_
2705 2705
2706 /* XXX DEV_LABEL is a guess */ 2706 /* XXX DEV_LABEL is a guess */
2707 if (!request_region(iobase, HRZ_IO_EXTENT, DEV_LABEL)) { 2707 if (!request_region(iobase, HRZ_IO_EXTENT, DEV_LABEL)) {
2708 return -EINVAL; 2708 err = -EINVAL;
2709 goto out_disable; 2709 goto out_disable;
2710 } 2710 }
2711 2711
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 9364dc554257..9f7c543cc04b 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -1693,6 +1693,11 @@ static int rebuild_lun_table(ctlr_info_t *h, int first_time)
1693 for (i = 0; i <= h->highest_lun; i++) { 1693 for (i = 0; i <= h->highest_lun; i++) {
1694 int j; 1694 int j;
1695 drv_found = 0; 1695 drv_found = 0;
1696
1697 /* skip holes in the array from already deleted drives */
1698 if (h->drv[i].raid_level == -1)
1699 continue;
1700
1696 for (j = 0; j < num_luns; j++) { 1701 for (j = 0; j < num_luns; j++) {
1697 memcpy(&lunid, &ld_buff->LUN[j][0], 4); 1702 memcpy(&lunid, &ld_buff->LUN[j][0], 4);
1698 lunid = le32_to_cpu(lunid); 1703 lunid = le32_to_cpu(lunid);
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index f20bf359b84f..dc7a8c352da2 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -302,7 +302,7 @@ static struct kobj_type kobj_pkt_type_wqueue = {
302static void pkt_sysfs_dev_new(struct pktcdvd_device *pd) 302static void pkt_sysfs_dev_new(struct pktcdvd_device *pd)
303{ 303{
304 if (class_pktcdvd) { 304 if (class_pktcdvd) {
305 pd->dev = device_create(class_pktcdvd, NULL, pd->pkt_dev, NULL, 305 pd->dev = device_create(class_pktcdvd, NULL, MKDEV(0, 0), NULL,
306 "%s", pd->name); 306 "%s", pd->name);
307 if (IS_ERR(pd->dev)) 307 if (IS_ERR(pd->dev))
308 pd->dev = NULL; 308 pd->dev = NULL;
@@ -2790,7 +2790,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)
2790 return 0; 2790 return 0;
2791 2791
2792out_mem: 2792out_mem:
2793 blkdev_put(bdev, FMODE_READ|FMODE_WRITE); 2793 blkdev_put(bdev, FMODE_READ | FMODE_NDELAY);
2794 /* This is safe: open() is still holding a reference. */ 2794 /* This is safe: open() is still holding a reference. */
2795 module_put(THIS_MODULE); 2795 module_put(THIS_MODULE);
2796 return ret; 2796 return ret;
@@ -2975,7 +2975,7 @@ static int pkt_remove_dev(dev_t pkt_dev)
2975 pkt_debugfs_dev_remove(pd); 2975 pkt_debugfs_dev_remove(pd);
2976 pkt_sysfs_dev_remove(pd); 2976 pkt_sysfs_dev_remove(pd);
2977 2977
2978 blkdev_put(pd->bdev, FMODE_READ|FMODE_WRITE); 2978 blkdev_put(pd->bdev, FMODE_READ | FMODE_NDELAY);
2979 2979
2980 remove_proc_entry(pd->name, pkt_proc); 2980 remove_proc_entry(pd->name, pkt_proc);
2981 DPRINTK(DRIVER_NAME": writer %s unmapped\n", pd->name); 2981 DPRINTK(DRIVER_NAME": writer %s unmapped\n", pd->name);
diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
index d16b02423d61..7d2e91cccb13 100644
--- a/drivers/cdrom/cdrom.c
+++ b/drivers/cdrom/cdrom.c
@@ -2081,10 +2081,6 @@ static int cdrom_read_cdda_bpc(struct cdrom_device_info *cdi, __u8 __user *ubuf,
2081 if (!q) 2081 if (!q)
2082 return -ENXIO; 2082 return -ENXIO;
2083 2083
2084 rq = blk_get_request(q, READ, GFP_KERNEL);
2085 if (!rq)
2086 return -ENOMEM;
2087
2088 cdi->last_sense = 0; 2084 cdi->last_sense = 0;
2089 2085
2090 while (nframes) { 2086 while (nframes) {
@@ -2096,9 +2092,17 @@ static int cdrom_read_cdda_bpc(struct cdrom_device_info *cdi, __u8 __user *ubuf,
2096 2092
2097 len = nr * CD_FRAMESIZE_RAW; 2093 len = nr * CD_FRAMESIZE_RAW;
2098 2094
2095 rq = blk_get_request(q, READ, GFP_KERNEL);
2096 if (!rq) {
2097 ret = -ENOMEM;
2098 break;
2099 }
2100
2099 ret = blk_rq_map_user(q, rq, NULL, ubuf, len, GFP_KERNEL); 2101 ret = blk_rq_map_user(q, rq, NULL, ubuf, len, GFP_KERNEL);
2100 if (ret) 2102 if (ret) {
2103 blk_put_request(rq);
2101 break; 2104 break;
2105 }
2102 2106
2103 rq->cmd[0] = GPCMD_READ_CD; 2107 rq->cmd[0] = GPCMD_READ_CD;
2104 rq->cmd[1] = 1 << 2; 2108 rq->cmd[1] = 1 << 2;
@@ -2124,6 +2128,7 @@ static int cdrom_read_cdda_bpc(struct cdrom_device_info *cdi, __u8 __user *ubuf,
2124 2128
2125 if (blk_rq_unmap_user(bio)) 2129 if (blk_rq_unmap_user(bio))
2126 ret = -EFAULT; 2130 ret = -EFAULT;
2131 blk_put_request(rq);
2127 2132
2128 if (ret) 2133 if (ret)
2129 break; 2134 break;
@@ -2133,7 +2138,6 @@ static int cdrom_read_cdda_bpc(struct cdrom_device_info *cdi, __u8 __user *ubuf,
2133 ubuf += len; 2138 ubuf += len;
2134 } 2139 }
2135 2140
2136 blk_put_request(rq);
2137 return ret; 2141 return ret;
2138} 2142}
2139 2143
diff --git a/drivers/char/cp437.uni b/drivers/char/cp437.uni
index 1f06889a96b9..bc6163484f62 100644
--- a/drivers/char/cp437.uni
+++ b/drivers/char/cp437.uni
@@ -27,7 +27,7 @@
270x0c U+2640 270x0c U+2640
280x0d U+266a 280x0d U+266a
290x0e U+266b 290x0e U+266b
300x0f U+263c 300x0f U+263c U+00a4
310x10 U+25b6 U+25ba 310x10 U+25b6 U+25ba
320x11 U+25c0 U+25c4 320x11 U+25c0 U+25c4
330x12 U+2195 330x12 U+2195
@@ -55,7 +55,7 @@
550x24 U+0024 550x24 U+0024
560x25 U+0025 560x25 U+0025
570x26 U+0026 570x26 U+0026
580x27 U+0027 580x27 U+0027 U+00b4
590x28 U+0028 590x28 U+0028
600x29 U+0029 600x29 U+0029
610x2a U+002a 610x2a U+002a
@@ -84,7 +84,7 @@
840x41 U+0041 U+00c0 U+00c1 U+00c2 U+00c3 840x41 U+0041 U+00c0 U+00c1 U+00c2 U+00c3
850x42 U+0042 850x42 U+0042
860x43 U+0043 U+00a9 860x43 U+0043 U+00a9
870x44 U+0044 870x44 U+0044 U+00d0
880x45 U+0045 U+00c8 U+00ca U+00cb 880x45 U+0045 U+00c8 U+00ca U+00cb
890x46 U+0046 890x46 U+0046
900x47 U+0047 900x47 U+0047
@@ -140,7 +140,7 @@
1400x79 U+0079 U+00fd 1400x79 U+0079 U+00fd
1410x7a U+007a 1410x7a U+007a
1420x7b U+007b 1420x7b U+007b
1430x7c U+007c U+00a5 1430x7c U+007c U+00a6
1440x7d U+007d 1440x7d U+007d
1450x7e U+007e 1450x7e U+007e
146# 146#
@@ -263,10 +263,10 @@
2630xe8 U+03a6 U+00d8 2630xe8 U+03a6 U+00d8
2640xe9 U+0398 2640xe9 U+0398
2650xea U+03a9 U+2126 2650xea U+03a9 U+2126
2660xeb U+03b4 2660xeb U+03b4 U+00f0
2670xec U+221e 2670xec U+221e
2680xed U+03c6 U+00f8 2680xed U+03c6 U+00f8
2690xee U+03b5 2690xee U+03b5 U+2208
2700xef U+2229 2700xef U+2229
2710xf0 U+2261 2710xf0 U+2261
2720xf1 U+00b1 2720xf1 U+00b1
diff --git a/drivers/char/serial167.c b/drivers/char/serial167.c
index 3b23270eaa65..a8f15e6be594 100644
--- a/drivers/char/serial167.c
+++ b/drivers/char/serial167.c
@@ -418,7 +418,7 @@ static irqreturn_t cd2401_rxerr_interrupt(int irq, void *dev_id)
418 TTY_OVERRUN); 418 TTY_OVERRUN);
419 /* 419 /*
420 If the flip buffer itself is 420 If the flip buffer itself is
421 overflowing, we still loose 421 overflowing, we still lose
422 the next incoming character. 422 the next incoming character.
423 */ 423 */
424 if (tty_buffer_request_room(tty, 1) != 424 if (tty_buffer_request_room(tty, 1) !=
diff --git a/drivers/char/vt.c b/drivers/char/vt.c
index a5af6072e2b3..008176edbd64 100644
--- a/drivers/char/vt.c
+++ b/drivers/char/vt.c
@@ -2274,7 +2274,7 @@ rescan_last_byte:
2274 continue; /* nothing to display */ 2274 continue; /* nothing to display */
2275 } 2275 }
2276 /* Glyph not found */ 2276 /* Glyph not found */
2277 if ((!(vc->vc_utf && !vc->vc_disp_ctrl) || c < 128) && !(c & ~charmask)) { 2277 if ((!(vc->vc_utf && !vc->vc_disp_ctrl) && c < 128) && !(c & ~charmask)) {
2278 /* In legacy mode use the glyph we get by a 1:1 mapping. 2278 /* In legacy mode use the glyph we get by a 1:1 mapping.
2279 This would make absolutely no sense with Unicode in mind, 2279 This would make absolutely no sense with Unicode in mind,
2280 but do this for ASCII characters since a font may lack 2280 but do this for ASCII characters since a font may lack
diff --git a/drivers/char/xilinx_hwicap/buffer_icap.c b/drivers/char/xilinx_hwicap/buffer_icap.c
index aa7f7962a9a0..05d897764f02 100644
--- a/drivers/char/xilinx_hwicap/buffer_icap.c
+++ b/drivers/char/xilinx_hwicap/buffer_icap.c
@@ -21,9 +21,6 @@
21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 * FOR A PARTICULAR PURPOSE. 22 * FOR A PARTICULAR PURPOSE.
23 * 23 *
24 * Xilinx products are not intended for use in life support appliances,
25 * devices, or systems. Use in such applications is expressly prohibited.
26 *
27 * (c) Copyright 2003-2008 Xilinx Inc. 24 * (c) Copyright 2003-2008 Xilinx Inc.
28 * All rights reserved. 25 * All rights reserved.
29 * 26 *
diff --git a/drivers/char/xilinx_hwicap/buffer_icap.h b/drivers/char/xilinx_hwicap/buffer_icap.h
index 8b0252bf06e2..d4f419ee87ab 100644
--- a/drivers/char/xilinx_hwicap/buffer_icap.h
+++ b/drivers/char/xilinx_hwicap/buffer_icap.h
@@ -21,9 +21,6 @@
21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 * FOR A PARTICULAR PURPOSE. 22 * FOR A PARTICULAR PURPOSE.
23 * 23 *
24 * Xilinx products are not intended for use in life support appliances,
25 * devices, or systems. Use in such applications is expressly prohibited.
26 *
27 * (c) Copyright 2003-2008 Xilinx Inc. 24 * (c) Copyright 2003-2008 Xilinx Inc.
28 * All rights reserved. 25 * All rights reserved.
29 * 26 *
diff --git a/drivers/char/xilinx_hwicap/fifo_icap.c b/drivers/char/xilinx_hwicap/fifo_icap.c
index 776b50528478..02225eb19cf6 100644
--- a/drivers/char/xilinx_hwicap/fifo_icap.c
+++ b/drivers/char/xilinx_hwicap/fifo_icap.c
@@ -21,9 +21,6 @@
21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 * FOR A PARTICULAR PURPOSE. 22 * FOR A PARTICULAR PURPOSE.
23 * 23 *
24 * Xilinx products are not intended for use in life support appliances,
25 * devices, or systems. Use in such applications is expressly prohibited.
26 *
27 * (c) Copyright 2007-2008 Xilinx Inc. 24 * (c) Copyright 2007-2008 Xilinx Inc.
28 * All rights reserved. 25 * All rights reserved.
29 * 26 *
diff --git a/drivers/char/xilinx_hwicap/fifo_icap.h b/drivers/char/xilinx_hwicap/fifo_icap.h
index 62bda453c90b..4c9dd9a3b62a 100644
--- a/drivers/char/xilinx_hwicap/fifo_icap.h
+++ b/drivers/char/xilinx_hwicap/fifo_icap.h
@@ -21,9 +21,6 @@
21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 * FOR A PARTICULAR PURPOSE. 22 * FOR A PARTICULAR PURPOSE.
23 * 23 *
24 * Xilinx products are not intended for use in life support appliances,
25 * devices, or systems. Use in such applications is expressly prohibited.
26 *
27 * (c) Copyright 2007-2008 Xilinx Inc. 24 * (c) Copyright 2007-2008 Xilinx Inc.
28 * All rights reserved. 25 * All rights reserved.
29 * 26 *
diff --git a/drivers/char/xilinx_hwicap/xilinx_hwicap.c b/drivers/char/xilinx_hwicap/xilinx_hwicap.c
index d16131949097..f40ab699860f 100644
--- a/drivers/char/xilinx_hwicap/xilinx_hwicap.c
+++ b/drivers/char/xilinx_hwicap/xilinx_hwicap.c
@@ -21,9 +21,6 @@
21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 * FOR A PARTICULAR PURPOSE. 22 * FOR A PARTICULAR PURPOSE.
23 * 23 *
24 * Xilinx products are not intended for use in life support appliances,
25 * devices, or systems. Use in such applications is expressly prohibited.
26 *
27 * (c) Copyright 2002 Xilinx Inc., Systems Engineering Group 24 * (c) Copyright 2002 Xilinx Inc., Systems Engineering Group
28 * (c) Copyright 2004 Xilinx Inc., Systems Engineering Group 25 * (c) Copyright 2004 Xilinx Inc., Systems Engineering Group
29 * (c) Copyright 2007-2008 Xilinx Inc. 26 * (c) Copyright 2007-2008 Xilinx Inc.
diff --git a/drivers/char/xilinx_hwicap/xilinx_hwicap.h b/drivers/char/xilinx_hwicap/xilinx_hwicap.h
index 24d0d9b938fb..8cca11981c5f 100644
--- a/drivers/char/xilinx_hwicap/xilinx_hwicap.h
+++ b/drivers/char/xilinx_hwicap/xilinx_hwicap.h
@@ -21,9 +21,6 @@
21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 21 * INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 * FOR A PARTICULAR PURPOSE. 22 * FOR A PARTICULAR PURPOSE.
23 * 23 *
24 * Xilinx products are not intended for use in life support appliances,
25 * devices, or systems. Use in such applications is expressly prohibited.
26 *
27 * (c) Copyright 2003-2007 Xilinx Inc. 24 * (c) Copyright 2003-2007 Xilinx Inc.
28 * All rights reserved. 25 * All rights reserved.
29 * 26 *
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
index 5317e08221ec..657996517374 100644
--- a/drivers/dma/dmaengine.c
+++ b/drivers/dma/dmaengine.c
@@ -388,7 +388,10 @@ int dma_async_device_register(struct dma_device *device)
388 388
389 init_completion(&device->done); 389 init_completion(&device->done);
390 kref_init(&device->refcount); 390 kref_init(&device->refcount);
391
392 mutex_lock(&dma_list_mutex);
391 device->dev_id = id++; 393 device->dev_id = id++;
394 mutex_unlock(&dma_list_mutex);
392 395
393 /* represent channels in sysfs. Probably want devs too */ 396 /* represent channels in sysfs. Probably want devs too */
394 list_for_each_entry(chan, &device->channels, device_node) { 397 list_for_each_entry(chan, &device->channels, device_node) {
diff --git a/drivers/dma/ioat_dma.c b/drivers/dma/ioat_dma.c
index ecd743f7cc61..6607fdd00b1c 100644
--- a/drivers/dma/ioat_dma.c
+++ b/drivers/dma/ioat_dma.c
@@ -1341,10 +1341,12 @@ static void ioat_dma_start_null_desc(struct ioat_dma_chan *ioat_chan)
1341 */ 1341 */
1342#define IOAT_TEST_SIZE 2000 1342#define IOAT_TEST_SIZE 2000
1343 1343
1344DECLARE_COMPLETION(test_completion);
1344static void ioat_dma_test_callback(void *dma_async_param) 1345static void ioat_dma_test_callback(void *dma_async_param)
1345{ 1346{
1346 printk(KERN_ERR "ioatdma: ioat_dma_test_callback(%p)\n", 1347 printk(KERN_ERR "ioatdma: ioat_dma_test_callback(%p)\n",
1347 dma_async_param); 1348 dma_async_param);
1349 complete(&test_completion);
1348} 1350}
1349 1351
1350/** 1352/**
@@ -1410,7 +1412,8 @@ static int ioat_dma_self_test(struct ioatdma_device *device)
1410 goto free_resources; 1412 goto free_resources;
1411 } 1413 }
1412 device->common.device_issue_pending(dma_chan); 1414 device->common.device_issue_pending(dma_chan);
1413 msleep(1); 1415
1416 wait_for_completion_timeout(&test_completion, msecs_to_jiffies(3000));
1414 1417
1415 if (device->common.device_is_tx_complete(dma_chan, cookie, NULL, NULL) 1418 if (device->common.device_is_tx_complete(dma_chan, cookie, NULL, NULL)
1416 != DMA_SUCCESS) { 1419 != DMA_SUCCESS) {
diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c
index c7a9306d951d..6be317262200 100644
--- a/drivers/dma/iop-adma.c
+++ b/drivers/dma/iop-adma.c
@@ -85,18 +85,28 @@ iop_adma_run_tx_complete_actions(struct iop_adma_desc_slot *desc,
85 enum dma_ctrl_flags flags = desc->async_tx.flags; 85 enum dma_ctrl_flags flags = desc->async_tx.flags;
86 u32 src_cnt; 86 u32 src_cnt;
87 dma_addr_t addr; 87 dma_addr_t addr;
88 dma_addr_t dest;
88 89
90 src_cnt = unmap->unmap_src_cnt;
91 dest = iop_desc_get_dest_addr(unmap, iop_chan);
89 if (!(flags & DMA_COMPL_SKIP_DEST_UNMAP)) { 92 if (!(flags & DMA_COMPL_SKIP_DEST_UNMAP)) {
90 addr = iop_desc_get_dest_addr(unmap, iop_chan); 93 enum dma_data_direction dir;
91 dma_unmap_page(dev, addr, len, DMA_FROM_DEVICE); 94
95 if (src_cnt > 1) /* is xor? */
96 dir = DMA_BIDIRECTIONAL;
97 else
98 dir = DMA_FROM_DEVICE;
99
100 dma_unmap_page(dev, dest, len, dir);
92 } 101 }
93 102
94 if (!(flags & DMA_COMPL_SKIP_SRC_UNMAP)) { 103 if (!(flags & DMA_COMPL_SKIP_SRC_UNMAP)) {
95 src_cnt = unmap->unmap_src_cnt;
96 while (src_cnt--) { 104 while (src_cnt--) {
97 addr = iop_desc_get_src_addr(unmap, 105 addr = iop_desc_get_src_addr(unmap,
98 iop_chan, 106 iop_chan,
99 src_cnt); 107 src_cnt);
108 if (addr == dest)
109 continue;
100 dma_unmap_page(dev, addr, len, 110 dma_unmap_page(dev, addr, len,
101 DMA_TO_DEVICE); 111 DMA_TO_DEVICE);
102 } 112 }
diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c
index 0328da020a10..bcda17426411 100644
--- a/drivers/dma/mv_xor.c
+++ b/drivers/dma/mv_xor.c
@@ -311,17 +311,26 @@ mv_xor_run_tx_complete_actions(struct mv_xor_desc_slot *desc,
311 enum dma_ctrl_flags flags = desc->async_tx.flags; 311 enum dma_ctrl_flags flags = desc->async_tx.flags;
312 u32 src_cnt; 312 u32 src_cnt;
313 dma_addr_t addr; 313 dma_addr_t addr;
314 dma_addr_t dest;
314 315
316 src_cnt = unmap->unmap_src_cnt;
317 dest = mv_desc_get_dest_addr(unmap);
315 if (!(flags & DMA_COMPL_SKIP_DEST_UNMAP)) { 318 if (!(flags & DMA_COMPL_SKIP_DEST_UNMAP)) {
316 addr = mv_desc_get_dest_addr(unmap); 319 enum dma_data_direction dir;
317 dma_unmap_page(dev, addr, len, DMA_FROM_DEVICE); 320
321 if (src_cnt > 1) /* is xor ? */
322 dir = DMA_BIDIRECTIONAL;
323 else
324 dir = DMA_FROM_DEVICE;
325 dma_unmap_page(dev, dest, len, dir);
318 } 326 }
319 327
320 if (!(flags & DMA_COMPL_SKIP_SRC_UNMAP)) { 328 if (!(flags & DMA_COMPL_SKIP_SRC_UNMAP)) {
321 src_cnt = unmap->unmap_src_cnt;
322 while (src_cnt--) { 329 while (src_cnt--) {
323 addr = mv_desc_get_src_addr(unmap, 330 addr = mv_desc_get_src_addr(unmap,
324 src_cnt); 331 src_cnt);
332 if (addr == dest)
333 continue;
325 dma_unmap_page(dev, addr, len, 334 dma_unmap_page(dev, addr, len,
326 DMA_TO_DEVICE); 335 DMA_TO_DEVICE);
327 } 336 }
diff --git a/drivers/firewire/fw-ohci.c b/drivers/firewire/fw-ohci.c
index 46610b090415..ab9c01e462ef 100644
--- a/drivers/firewire/fw-ohci.c
+++ b/drivers/firewire/fw-ohci.c
@@ -974,6 +974,7 @@ at_context_queue_packet(struct context *ctx, struct fw_packet *packet)
974 packet->ack = RCODE_SEND_ERROR; 974 packet->ack = RCODE_SEND_ERROR;
975 return -1; 975 return -1;
976 } 976 }
977 packet->payload_bus = payload_bus;
977 978
978 d[2].req_count = cpu_to_le16(packet->payload_length); 979 d[2].req_count = cpu_to_le16(packet->payload_length);
979 d[2].data_address = cpu_to_le32(payload_bus); 980 d[2].data_address = cpu_to_le32(payload_bus);
@@ -1025,7 +1026,6 @@ static int handle_at_packet(struct context *context,
1025 struct driver_data *driver_data; 1026 struct driver_data *driver_data;
1026 struct fw_packet *packet; 1027 struct fw_packet *packet;
1027 struct fw_ohci *ohci = context->ohci; 1028 struct fw_ohci *ohci = context->ohci;
1028 dma_addr_t payload_bus;
1029 int evt; 1029 int evt;
1030 1030
1031 if (last->transfer_status == 0) 1031 if (last->transfer_status == 0)
@@ -1038,9 +1038,8 @@ static int handle_at_packet(struct context *context,
1038 /* This packet was cancelled, just continue. */ 1038 /* This packet was cancelled, just continue. */
1039 return 1; 1039 return 1;
1040 1040
1041 payload_bus = le32_to_cpu(last->data_address); 1041 if (packet->payload_bus)
1042 if (payload_bus != 0) 1042 dma_unmap_single(ohci->card.device, packet->payload_bus,
1043 dma_unmap_single(ohci->card.device, payload_bus,
1044 packet->payload_length, DMA_TO_DEVICE); 1043 packet->payload_length, DMA_TO_DEVICE);
1045 1044
1046 evt = le16_to_cpu(last->transfer_status) & 0x1f; 1045 evt = le16_to_cpu(last->transfer_status) & 0x1f;
@@ -1697,6 +1696,10 @@ static int ohci_cancel_packet(struct fw_card *card, struct fw_packet *packet)
1697 if (packet->ack != 0) 1696 if (packet->ack != 0)
1698 goto out; 1697 goto out;
1699 1698
1699 if (packet->payload_bus)
1700 dma_unmap_single(ohci->card.device, packet->payload_bus,
1701 packet->payload_length, DMA_TO_DEVICE);
1702
1700 log_ar_at_event('T', packet->speed, packet->header, 0x20); 1703 log_ar_at_event('T', packet->speed, packet->header, 0x20);
1701 driver_data->packet = NULL; 1704 driver_data->packet = NULL;
1702 packet->ack = RCODE_CANCELLED; 1705 packet->ack = RCODE_CANCELLED;
diff --git a/drivers/firewire/fw-transaction.c b/drivers/firewire/fw-transaction.c
index 022ac4fabb67..2884f876397b 100644
--- a/drivers/firewire/fw-transaction.c
+++ b/drivers/firewire/fw-transaction.c
@@ -207,6 +207,7 @@ fw_fill_request(struct fw_packet *packet, int tcode, int tlabel,
207 packet->speed = speed; 207 packet->speed = speed;
208 packet->generation = generation; 208 packet->generation = generation;
209 packet->ack = 0; 209 packet->ack = 0;
210 packet->payload_bus = 0;
210} 211}
211 212
212/** 213/**
@@ -581,6 +582,8 @@ fw_fill_response(struct fw_packet *response, u32 *request_header,
581 BUG(); 582 BUG();
582 return; 583 return;
583 } 584 }
585
586 response->payload_bus = 0;
584} 587}
585EXPORT_SYMBOL(fw_fill_response); 588EXPORT_SYMBOL(fw_fill_response);
586 589
diff --git a/drivers/firewire/fw-transaction.h b/drivers/firewire/fw-transaction.h
index aed7dbb17cda..839466f0a795 100644
--- a/drivers/firewire/fw-transaction.h
+++ b/drivers/firewire/fw-transaction.h
@@ -27,6 +27,7 @@
27#include <linux/list.h> 27#include <linux/list.h>
28#include <linux/spinlock_types.h> 28#include <linux/spinlock_types.h>
29#include <linux/timer.h> 29#include <linux/timer.h>
30#include <linux/types.h>
30#include <linux/workqueue.h> 31#include <linux/workqueue.h>
31 32
32#define TCODE_IS_READ_REQUEST(tcode) (((tcode) & ~1) == 4) 33#define TCODE_IS_READ_REQUEST(tcode) (((tcode) & ~1) == 4)
@@ -153,6 +154,7 @@ struct fw_packet {
153 size_t header_length; 154 size_t header_length;
154 void *payload; 155 void *payload;
155 size_t payload_length; 156 size_t payload_length;
157 dma_addr_t payload_bus;
156 u32 timestamp; 158 u32 timestamp;
157 159
158 /* 160 /*
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
index 8daf4793ac32..4a597d8c2f70 100644
--- a/drivers/firmware/dmi_scan.c
+++ b/drivers/firmware/dmi_scan.c
@@ -467,6 +467,17 @@ const char *dmi_get_system_info(int field)
467} 467}
468EXPORT_SYMBOL(dmi_get_system_info); 468EXPORT_SYMBOL(dmi_get_system_info);
469 469
470/**
471 * dmi_name_in_serial - Check if string is in the DMI product serial
472 * information.
473 */
474int dmi_name_in_serial(const char *str)
475{
476 int f = DMI_PRODUCT_SERIAL;
477 if (dmi_ident[f] && strstr(dmi_ident[f], str))
478 return 1;
479 return 0;
480}
470 481
471/** 482/**
472 * dmi_name_in_vendors - Check if string is anywhere in the DMI vendor information. 483 * dmi_name_in_vendors - Check if string is anywhere in the DMI vendor information.
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index ba89b42f790a..afa8a12cd009 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -717,7 +717,7 @@ static int i915_getparam(struct drm_device *dev, void *data,
717 value = dev->pci_device; 717 value = dev->pci_device;
718 break; 718 break;
719 case I915_PARAM_HAS_GEM: 719 case I915_PARAM_HAS_GEM:
720 value = 1; 720 value = dev_priv->has_gem;
721 break; 721 break;
722 default: 722 default:
723 DRM_ERROR("Unknown parameter %d\n", param->param); 723 DRM_ERROR("Unknown parameter %d\n", param->param);
@@ -830,6 +830,14 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
830 830
831 dev_priv->regs = ioremap(base, size); 831 dev_priv->regs = ioremap(base, size);
832 832
833#ifdef CONFIG_HIGHMEM64G
834 /* don't enable GEM on PAE - needs agp + set_memory_* interface fixes */
835 dev_priv->has_gem = 0;
836#else
837 /* enable GEM by default */
838 dev_priv->has_gem = 1;
839#endif
840
833 i915_gem_load(dev); 841 i915_gem_load(dev);
834 842
835 /* Init HWS */ 843 /* Init HWS */
@@ -847,9 +855,10 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
847 * and the registers being closely associated. 855 * and the registers being closely associated.
848 * 856 *
849 * According to chipset errata, on the 965GM, MSI interrupts may 857 * According to chipset errata, on the 965GM, MSI interrupts may
850 * be lost or delayed 858 * be lost or delayed, but we use them anyways to avoid
859 * stuck interrupts on some machines.
851 */ 860 */
852 if (!IS_I945G(dev) && !IS_I945GM(dev) && !IS_I965GM(dev)) 861 if (!IS_I945G(dev) && !IS_I945GM(dev))
853 pci_enable_msi(dev->pdev); 862 pci_enable_msi(dev->pdev);
854 863
855 intel_opregion_init(dev); 864 intel_opregion_init(dev);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 0a4f39b9a0ec..b3cc4731aa7c 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -106,6 +106,8 @@ struct intel_opregion {
106typedef struct drm_i915_private { 106typedef struct drm_i915_private {
107 struct drm_device *dev; 107 struct drm_device *dev;
108 108
109 int has_gem;
110
109 void __iomem *regs; 111 void __iomem *regs;
110 drm_local_map_t *sarea; 112 drm_local_map_t *sarea;
111 113
@@ -244,6 +246,10 @@ typedef struct drm_i915_private {
244 * List of objects currently involved in rendering from the 246 * List of objects currently involved in rendering from the
245 * ringbuffer. 247 * ringbuffer.
246 * 248 *
249 * Includes buffers having the contents of their GPU caches
250 * flushed, not necessarily primitives. last_rendering_seqno
251 * represents when the rendering involved will be completed.
252 *
247 * A reference is held on the buffer while on this list. 253 * A reference is held on the buffer while on this list.
248 */ 254 */
249 struct list_head active_list; 255 struct list_head active_list;
@@ -253,6 +259,8 @@ typedef struct drm_i915_private {
253 * still have a write_domain which needs to be flushed before 259 * still have a write_domain which needs to be flushed before
254 * unbinding. 260 * unbinding.
255 * 261 *
262 * last_rendering_seqno is 0 while an object is in this list.
263 *
256 * A reference is held on the buffer while on this list. 264 * A reference is held on the buffer while on this list.
257 */ 265 */
258 struct list_head flushing_list; 266 struct list_head flushing_list;
@@ -261,6 +269,8 @@ typedef struct drm_i915_private {
261 * LRU list of objects which are not in the ringbuffer and 269 * LRU list of objects which are not in the ringbuffer and
262 * are ready to unbind, but are still in the GTT. 270 * are ready to unbind, but are still in the GTT.
263 * 271 *
272 * last_rendering_seqno is 0 while an object is in this list.
273 *
264 * A reference is not held on the buffer while on this list, 274 * A reference is not held on the buffer while on this list,
265 * as merely being GTT-bound shouldn't prevent its being 275 * as merely being GTT-bound shouldn't prevent its being
266 * freed, and we'll pull it off the list in the free path. 276 * freed, and we'll pull it off the list in the free path.
@@ -371,8 +381,8 @@ struct drm_i915_gem_object {
371 uint32_t agp_type; 381 uint32_t agp_type;
372 382
373 /** 383 /**
374 * Flagging of which individual pages are valid in GEM_DOMAIN_CPU when 384 * If present, while GEM_DOMAIN_CPU is in the read domain this array
375 * GEM_DOMAIN_CPU is not in the object's read domain. 385 * flags which individual pages are valid.
376 */ 386 */
377 uint8_t *page_cpu_valid; 387 uint8_t *page_cpu_valid;
378}; 388};
@@ -394,9 +404,6 @@ struct drm_i915_gem_request {
394 /** Time at which this request was emitted, in jiffies. */ 404 /** Time at which this request was emitted, in jiffies. */
395 unsigned long emitted_jiffies; 405 unsigned long emitted_jiffies;
396 406
397 /** Cache domains that were flushed at the start of the request. */
398 uint32_t flush_domains;
399
400 struct list_head list; 407 struct list_head list;
401}; 408};
402 409
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index d58ddef468f8..24fe8c10b4b2 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -33,21 +33,21 @@
33 33
34#define I915_GEM_GPU_DOMAINS (~(I915_GEM_DOMAIN_CPU | I915_GEM_DOMAIN_GTT)) 34#define I915_GEM_GPU_DOMAINS (~(I915_GEM_DOMAIN_CPU | I915_GEM_DOMAIN_GTT))
35 35
36static int 36static void
37i915_gem_object_set_domain(struct drm_gem_object *obj, 37i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj,
38 uint32_t read_domains, 38 uint32_t read_domains,
39 uint32_t write_domain); 39 uint32_t write_domain);
40static int 40static void i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj);
41i915_gem_object_set_domain_range(struct drm_gem_object *obj, 41static void i915_gem_object_flush_gtt_write_domain(struct drm_gem_object *obj);
42 uint64_t offset, 42static void i915_gem_object_flush_cpu_write_domain(struct drm_gem_object *obj);
43 uint64_t size, 43static int i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj,
44 uint32_t read_domains, 44 int write);
45 uint32_t write_domain); 45static int i915_gem_object_set_to_cpu_domain(struct drm_gem_object *obj,
46static int 46 int write);
47i915_gem_set_domain(struct drm_gem_object *obj, 47static int i915_gem_object_set_cpu_read_domain_range(struct drm_gem_object *obj,
48 struct drm_file *file_priv, 48 uint64_t offset,
49 uint32_t read_domains, 49 uint64_t size);
50 uint32_t write_domain); 50static void i915_gem_object_set_to_full_cpu_read_domain(struct drm_gem_object *obj);
51static int i915_gem_object_get_page_list(struct drm_gem_object *obj); 51static int i915_gem_object_get_page_list(struct drm_gem_object *obj);
52static void i915_gem_object_free_page_list(struct drm_gem_object *obj); 52static void i915_gem_object_free_page_list(struct drm_gem_object *obj);
53static int i915_gem_object_wait_rendering(struct drm_gem_object *obj); 53static int i915_gem_object_wait_rendering(struct drm_gem_object *obj);
@@ -162,8 +162,8 @@ i915_gem_pread_ioctl(struct drm_device *dev, void *data,
162 162
163 mutex_lock(&dev->struct_mutex); 163 mutex_lock(&dev->struct_mutex);
164 164
165 ret = i915_gem_object_set_domain_range(obj, args->offset, args->size, 165 ret = i915_gem_object_set_cpu_read_domain_range(obj, args->offset,
166 I915_GEM_DOMAIN_CPU, 0); 166 args->size);
167 if (ret != 0) { 167 if (ret != 0) {
168 drm_gem_object_unreference(obj); 168 drm_gem_object_unreference(obj);
169 mutex_unlock(&dev->struct_mutex); 169 mutex_unlock(&dev->struct_mutex);
@@ -260,8 +260,7 @@ i915_gem_gtt_pwrite(struct drm_device *dev, struct drm_gem_object *obj,
260 mutex_unlock(&dev->struct_mutex); 260 mutex_unlock(&dev->struct_mutex);
261 return ret; 261 return ret;
262 } 262 }
263 ret = i915_gem_set_domain(obj, file_priv, 263 ret = i915_gem_object_set_to_gtt_domain(obj, 1);
264 I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
265 if (ret) 264 if (ret)
266 goto fail; 265 goto fail;
267 266
@@ -320,8 +319,7 @@ i915_gem_shmem_pwrite(struct drm_device *dev, struct drm_gem_object *obj,
320 319
321 mutex_lock(&dev->struct_mutex); 320 mutex_lock(&dev->struct_mutex);
322 321
323 ret = i915_gem_set_domain(obj, file_priv, 322 ret = i915_gem_object_set_to_cpu_domain(obj, 1);
324 I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU);
325 if (ret) { 323 if (ret) {
326 mutex_unlock(&dev->struct_mutex); 324 mutex_unlock(&dev->struct_mutex);
327 return ret; 325 return ret;
@@ -397,7 +395,8 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
397} 395}
398 396
399/** 397/**
400 * Called when user space prepares to use an object 398 * Called when user space prepares to use an object with the CPU, either
399 * through the mmap ioctl's mapping or a GTT mapping.
401 */ 400 */
402int 401int
403i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, 402i915_gem_set_domain_ioctl(struct drm_device *dev, void *data,
@@ -405,11 +404,26 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data,
405{ 404{
406 struct drm_i915_gem_set_domain *args = data; 405 struct drm_i915_gem_set_domain *args = data;
407 struct drm_gem_object *obj; 406 struct drm_gem_object *obj;
407 uint32_t read_domains = args->read_domains;
408 uint32_t write_domain = args->write_domain;
408 int ret; 409 int ret;
409 410
410 if (!(dev->driver->driver_features & DRIVER_GEM)) 411 if (!(dev->driver->driver_features & DRIVER_GEM))
411 return -ENODEV; 412 return -ENODEV;
412 413
414 /* Only handle setting domains to types used by the CPU. */
415 if (write_domain & ~(I915_GEM_DOMAIN_CPU | I915_GEM_DOMAIN_GTT))
416 return -EINVAL;
417
418 if (read_domains & ~(I915_GEM_DOMAIN_CPU | I915_GEM_DOMAIN_GTT))
419 return -EINVAL;
420
421 /* Having something in the write domain implies it's in the read
422 * domain, and only that read domain. Enforce that in the request.
423 */
424 if (write_domain != 0 && read_domains != write_domain)
425 return -EINVAL;
426
413 obj = drm_gem_object_lookup(dev, file_priv, args->handle); 427 obj = drm_gem_object_lookup(dev, file_priv, args->handle);
414 if (obj == NULL) 428 if (obj == NULL)
415 return -EBADF; 429 return -EBADF;
@@ -417,10 +431,21 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data,
417 mutex_lock(&dev->struct_mutex); 431 mutex_lock(&dev->struct_mutex);
418#if WATCH_BUF 432#if WATCH_BUF
419 DRM_INFO("set_domain_ioctl %p(%d), %08x %08x\n", 433 DRM_INFO("set_domain_ioctl %p(%d), %08x %08x\n",
420 obj, obj->size, args->read_domains, args->write_domain); 434 obj, obj->size, read_domains, write_domain);
421#endif 435#endif
422 ret = i915_gem_set_domain(obj, file_priv, 436 if (read_domains & I915_GEM_DOMAIN_GTT) {
423 args->read_domains, args->write_domain); 437 ret = i915_gem_object_set_to_gtt_domain(obj, write_domain != 0);
438
439 /* Silently promote "you're not bound, there was nothing to do"
440 * to success, since the client was just asking us to
441 * make sure everything was done.
442 */
443 if (ret == -EINVAL)
444 ret = 0;
445 } else {
446 ret = i915_gem_object_set_to_cpu_domain(obj, write_domain != 0);
447 }
448
424 drm_gem_object_unreference(obj); 449 drm_gem_object_unreference(obj);
425 mutex_unlock(&dev->struct_mutex); 450 mutex_unlock(&dev->struct_mutex);
426 return ret; 451 return ret;
@@ -455,10 +480,9 @@ i915_gem_sw_finish_ioctl(struct drm_device *dev, void *data,
455 obj_priv = obj->driver_private; 480 obj_priv = obj->driver_private;
456 481
457 /* Pinned buffers may be scanout, so flush the cache */ 482 /* Pinned buffers may be scanout, so flush the cache */
458 if ((obj->write_domain & I915_GEM_DOMAIN_CPU) && obj_priv->pin_count) { 483 if (obj_priv->pin_count)
459 i915_gem_clflush_object(obj); 484 i915_gem_object_flush_cpu_write_domain(obj);
460 drm_agp_chipset_flush(dev); 485
461 }
462 drm_gem_object_unreference(obj); 486 drm_gem_object_unreference(obj);
463 mutex_unlock(&dev->struct_mutex); 487 mutex_unlock(&dev->struct_mutex);
464 return ret; 488 return ret;
@@ -532,7 +556,7 @@ i915_gem_object_free_page_list(struct drm_gem_object *obj)
532} 556}
533 557
534static void 558static void
535i915_gem_object_move_to_active(struct drm_gem_object *obj) 559i915_gem_object_move_to_active(struct drm_gem_object *obj, uint32_t seqno)
536{ 560{
537 struct drm_device *dev = obj->dev; 561 struct drm_device *dev = obj->dev;
538 drm_i915_private_t *dev_priv = dev->dev_private; 562 drm_i915_private_t *dev_priv = dev->dev_private;
@@ -546,8 +570,20 @@ i915_gem_object_move_to_active(struct drm_gem_object *obj)
546 /* Move from whatever list we were on to the tail of execution. */ 570 /* Move from whatever list we were on to the tail of execution. */
547 list_move_tail(&obj_priv->list, 571 list_move_tail(&obj_priv->list,
548 &dev_priv->mm.active_list); 572 &dev_priv->mm.active_list);
573 obj_priv->last_rendering_seqno = seqno;
549} 574}
550 575
576static void
577i915_gem_object_move_to_flushing(struct drm_gem_object *obj)
578{
579 struct drm_device *dev = obj->dev;
580 drm_i915_private_t *dev_priv = dev->dev_private;
581 struct drm_i915_gem_object *obj_priv = obj->driver_private;
582
583 BUG_ON(!obj_priv->active);
584 list_move_tail(&obj_priv->list, &dev_priv->mm.flushing_list);
585 obj_priv->last_rendering_seqno = 0;
586}
551 587
552static void 588static void
553i915_gem_object_move_to_inactive(struct drm_gem_object *obj) 589i915_gem_object_move_to_inactive(struct drm_gem_object *obj)
@@ -562,6 +598,7 @@ i915_gem_object_move_to_inactive(struct drm_gem_object *obj)
562 else 598 else
563 list_move_tail(&obj_priv->list, &dev_priv->mm.inactive_list); 599 list_move_tail(&obj_priv->list, &dev_priv->mm.inactive_list);
564 600
601 obj_priv->last_rendering_seqno = 0;
565 if (obj_priv->active) { 602 if (obj_priv->active) {
566 obj_priv->active = 0; 603 obj_priv->active = 0;
567 drm_gem_object_unreference(obj); 604 drm_gem_object_unreference(obj);
@@ -610,10 +647,28 @@ i915_add_request(struct drm_device *dev, uint32_t flush_domains)
610 647
611 request->seqno = seqno; 648 request->seqno = seqno;
612 request->emitted_jiffies = jiffies; 649 request->emitted_jiffies = jiffies;
613 request->flush_domains = flush_domains;
614 was_empty = list_empty(&dev_priv->mm.request_list); 650 was_empty = list_empty(&dev_priv->mm.request_list);
615 list_add_tail(&request->list, &dev_priv->mm.request_list); 651 list_add_tail(&request->list, &dev_priv->mm.request_list);
616 652
653 /* Associate any objects on the flushing list matching the write
654 * domain we're flushing with our flush.
655 */
656 if (flush_domains != 0) {
657 struct drm_i915_gem_object *obj_priv, *next;
658
659 list_for_each_entry_safe(obj_priv, next,
660 &dev_priv->mm.flushing_list, list) {
661 struct drm_gem_object *obj = obj_priv->obj;
662
663 if ((obj->write_domain & flush_domains) ==
664 obj->write_domain) {
665 obj->write_domain = 0;
666 i915_gem_object_move_to_active(obj, seqno);
667 }
668 }
669
670 }
671
617 if (was_empty && !dev_priv->mm.suspended) 672 if (was_empty && !dev_priv->mm.suspended)
618 schedule_delayed_work(&dev_priv->mm.retire_work, HZ); 673 schedule_delayed_work(&dev_priv->mm.retire_work, HZ);
619 return seqno; 674 return seqno;
@@ -676,30 +731,10 @@ i915_gem_retire_request(struct drm_device *dev,
676 __func__, request->seqno, obj); 731 __func__, request->seqno, obj);
677#endif 732#endif
678 733
679 if (obj->write_domain != 0) { 734 if (obj->write_domain != 0)
680 list_move_tail(&obj_priv->list, 735 i915_gem_object_move_to_flushing(obj);
681 &dev_priv->mm.flushing_list); 736 else
682 } else {
683 i915_gem_object_move_to_inactive(obj); 737 i915_gem_object_move_to_inactive(obj);
684 }
685 }
686
687 if (request->flush_domains != 0) {
688 struct drm_i915_gem_object *obj_priv, *next;
689
690 /* Clear the write domain and activity from any buffers
691 * that are just waiting for a flush matching the one retired.
692 */
693 list_for_each_entry_safe(obj_priv, next,
694 &dev_priv->mm.flushing_list, list) {
695 struct drm_gem_object *obj = obj_priv->obj;
696
697 if (obj->write_domain & request->flush_domains) {
698 obj->write_domain = 0;
699 i915_gem_object_move_to_inactive(obj);
700 }
701 }
702
703 } 738 }
704} 739}
705 740
@@ -892,25 +927,10 @@ i915_gem_object_wait_rendering(struct drm_gem_object *obj)
892 struct drm_i915_gem_object *obj_priv = obj->driver_private; 927 struct drm_i915_gem_object *obj_priv = obj->driver_private;
893 int ret; 928 int ret;
894 929
895 /* If there are writes queued to the buffer, flush and 930 /* This function only exists to support waiting for existing rendering,
896 * create a new seqno to wait for. 931 * not for emitting required flushes.
897 */ 932 */
898 if (obj->write_domain & ~(I915_GEM_DOMAIN_CPU|I915_GEM_DOMAIN_GTT)) { 933 BUG_ON((obj->write_domain & I915_GEM_GPU_DOMAINS) != 0);
899 uint32_t write_domain = obj->write_domain;
900#if WATCH_BUF
901 DRM_INFO("%s: flushing object %p from write domain %08x\n",
902 __func__, obj, write_domain);
903#endif
904 i915_gem_flush(dev, 0, write_domain);
905
906 i915_gem_object_move_to_active(obj);
907 obj_priv->last_rendering_seqno = i915_add_request(dev,
908 write_domain);
909 BUG_ON(obj_priv->last_rendering_seqno == 0);
910#if WATCH_LRU
911 DRM_INFO("%s: flush moves to exec list %p\n", __func__, obj);
912#endif
913 }
914 934
915 /* If there is rendering queued on the buffer being evicted, wait for 935 /* If there is rendering queued on the buffer being evicted, wait for
916 * it. 936 * it.
@@ -950,24 +970,16 @@ i915_gem_object_unbind(struct drm_gem_object *obj)
950 return -EINVAL; 970 return -EINVAL;
951 } 971 }
952 972
953 /* Wait for any rendering to complete
954 */
955 ret = i915_gem_object_wait_rendering(obj);
956 if (ret) {
957 DRM_ERROR("wait_rendering failed: %d\n", ret);
958 return ret;
959 }
960
961 /* Move the object to the CPU domain to ensure that 973 /* Move the object to the CPU domain to ensure that
962 * any possible CPU writes while it's not in the GTT 974 * any possible CPU writes while it's not in the GTT
963 * are flushed when we go to remap it. This will 975 * are flushed when we go to remap it. This will
964 * also ensure that all pending GPU writes are finished 976 * also ensure that all pending GPU writes are finished
965 * before we unbind. 977 * before we unbind.
966 */ 978 */
967 ret = i915_gem_object_set_domain(obj, I915_GEM_DOMAIN_CPU, 979 ret = i915_gem_object_set_to_cpu_domain(obj, 1);
968 I915_GEM_DOMAIN_CPU);
969 if (ret) { 980 if (ret) {
970 DRM_ERROR("set_domain failed: %d\n", ret); 981 if (ret != -ERESTARTSYS)
982 DRM_ERROR("set_domain failed: %d\n", ret);
971 return ret; 983 return ret;
972 } 984 }
973 985
@@ -1083,6 +1095,21 @@ i915_gem_evict_something(struct drm_device *dev)
1083} 1095}
1084 1096
1085static int 1097static int
1098i915_gem_evict_everything(struct drm_device *dev)
1099{
1100 int ret;
1101
1102 for (;;) {
1103 ret = i915_gem_evict_something(dev);
1104 if (ret != 0)
1105 break;
1106 }
1107 if (ret == -ENOMEM)
1108 return 0;
1109 return ret;
1110}
1111
1112static int
1086i915_gem_object_get_page_list(struct drm_gem_object *obj) 1113i915_gem_object_get_page_list(struct drm_gem_object *obj)
1087{ 1114{
1088 struct drm_i915_gem_object *obj_priv = obj->driver_private; 1115 struct drm_i915_gem_object *obj_priv = obj->driver_private;
@@ -1168,7 +1195,8 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment)
1168 1195
1169 ret = i915_gem_evict_something(dev); 1196 ret = i915_gem_evict_something(dev);
1170 if (ret != 0) { 1197 if (ret != 0) {
1171 DRM_ERROR("Failed to evict a buffer %d\n", ret); 1198 if (ret != -ERESTARTSYS)
1199 DRM_ERROR("Failed to evict a buffer %d\n", ret);
1172 return ret; 1200 return ret;
1173 } 1201 }
1174 goto search_free; 1202 goto search_free;
@@ -1228,6 +1256,143 @@ i915_gem_clflush_object(struct drm_gem_object *obj)
1228 drm_clflush_pages(obj_priv->page_list, obj->size / PAGE_SIZE); 1256 drm_clflush_pages(obj_priv->page_list, obj->size / PAGE_SIZE);
1229} 1257}
1230 1258
1259/** Flushes any GPU write domain for the object if it's dirty. */
1260static void
1261i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj)
1262{
1263 struct drm_device *dev = obj->dev;
1264 uint32_t seqno;
1265
1266 if ((obj->write_domain & I915_GEM_GPU_DOMAINS) == 0)
1267 return;
1268
1269 /* Queue the GPU write cache flushing we need. */
1270 i915_gem_flush(dev, 0, obj->write_domain);
1271 seqno = i915_add_request(dev, obj->write_domain);
1272 obj->write_domain = 0;
1273 i915_gem_object_move_to_active(obj, seqno);
1274}
1275
1276/** Flushes the GTT write domain for the object if it's dirty. */
1277static void
1278i915_gem_object_flush_gtt_write_domain(struct drm_gem_object *obj)
1279{
1280 if (obj->write_domain != I915_GEM_DOMAIN_GTT)
1281 return;
1282
1283 /* No actual flushing is required for the GTT write domain. Writes
1284 * to it immediately go to main memory as far as we know, so there's
1285 * no chipset flush. It also doesn't land in render cache.
1286 */
1287 obj->write_domain = 0;
1288}
1289
1290/** Flushes the CPU write domain for the object if it's dirty. */
1291static void
1292i915_gem_object_flush_cpu_write_domain(struct drm_gem_object *obj)
1293{
1294 struct drm_device *dev = obj->dev;
1295
1296 if (obj->write_domain != I915_GEM_DOMAIN_CPU)
1297 return;
1298
1299 i915_gem_clflush_object(obj);
1300 drm_agp_chipset_flush(dev);
1301 obj->write_domain = 0;
1302}
1303
1304/**
1305 * Moves a single object to the GTT read, and possibly write domain.
1306 *
1307 * This function returns when the move is complete, including waiting on
1308 * flushes to occur.
1309 */
1310static int
1311i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj, int write)
1312{
1313 struct drm_i915_gem_object *obj_priv = obj->driver_private;
1314 int ret;
1315
1316 /* Not valid to be called on unbound objects. */
1317 if (obj_priv->gtt_space == NULL)
1318 return -EINVAL;
1319
1320 i915_gem_object_flush_gpu_write_domain(obj);
1321 /* Wait on any GPU rendering and flushing to occur. */
1322 ret = i915_gem_object_wait_rendering(obj);
1323 if (ret != 0)
1324 return ret;
1325
1326 /* If we're writing through the GTT domain, then CPU and GPU caches
1327 * will need to be invalidated at next use.
1328 */
1329 if (write)
1330 obj->read_domains &= I915_GEM_DOMAIN_GTT;
1331
1332 i915_gem_object_flush_cpu_write_domain(obj);
1333
1334 /* It should now be out of any other write domains, and we can update
1335 * the domain values for our changes.
1336 */
1337 BUG_ON((obj->write_domain & ~I915_GEM_DOMAIN_GTT) != 0);
1338 obj->read_domains |= I915_GEM_DOMAIN_GTT;
1339 if (write) {
1340 obj->write_domain = I915_GEM_DOMAIN_GTT;
1341 obj_priv->dirty = 1;
1342 }
1343
1344 return 0;
1345}
1346
1347/**
1348 * Moves a single object to the CPU read, and possibly write domain.
1349 *
1350 * This function returns when the move is complete, including waiting on
1351 * flushes to occur.
1352 */
1353static int
1354i915_gem_object_set_to_cpu_domain(struct drm_gem_object *obj, int write)
1355{
1356 struct drm_device *dev = obj->dev;
1357 int ret;
1358
1359 i915_gem_object_flush_gpu_write_domain(obj);
1360 /* Wait on any GPU rendering and flushing to occur. */
1361 ret = i915_gem_object_wait_rendering(obj);
1362 if (ret != 0)
1363 return ret;
1364
1365 i915_gem_object_flush_gtt_write_domain(obj);
1366
1367 /* If we have a partially-valid cache of the object in the CPU,
1368 * finish invalidating it and free the per-page flags.
1369 */
1370 i915_gem_object_set_to_full_cpu_read_domain(obj);
1371
1372 /* Flush the CPU cache if it's still invalid. */
1373 if ((obj->read_domains & I915_GEM_DOMAIN_CPU) == 0) {
1374 i915_gem_clflush_object(obj);
1375 drm_agp_chipset_flush(dev);
1376
1377 obj->read_domains |= I915_GEM_DOMAIN_CPU;
1378 }
1379
1380 /* It should now be out of any other write domains, and we can update
1381 * the domain values for our changes.
1382 */
1383 BUG_ON((obj->write_domain & ~I915_GEM_DOMAIN_CPU) != 0);
1384
1385 /* If we're writing through the CPU, then the GPU read domains will
1386 * need to be invalidated at next use.
1387 */
1388 if (write) {
1389 obj->read_domains &= I915_GEM_DOMAIN_CPU;
1390 obj->write_domain = I915_GEM_DOMAIN_CPU;
1391 }
1392
1393 return 0;
1394}
1395
1231/* 1396/*
1232 * Set the next domain for the specified object. This 1397 * Set the next domain for the specified object. This
1233 * may not actually perform the necessary flushing/invaliding though, 1398 * may not actually perform the necessary flushing/invaliding though,
@@ -1339,16 +1504,18 @@ i915_gem_clflush_object(struct drm_gem_object *obj)
1339 * MI_FLUSH 1504 * MI_FLUSH
1340 * drm_agp_chipset_flush 1505 * drm_agp_chipset_flush
1341 */ 1506 */
1342static int 1507static void
1343i915_gem_object_set_domain(struct drm_gem_object *obj, 1508i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj,
1344 uint32_t read_domains, 1509 uint32_t read_domains,
1345 uint32_t write_domain) 1510 uint32_t write_domain)
1346{ 1511{
1347 struct drm_device *dev = obj->dev; 1512 struct drm_device *dev = obj->dev;
1348 struct drm_i915_gem_object *obj_priv = obj->driver_private; 1513 struct drm_i915_gem_object *obj_priv = obj->driver_private;
1349 uint32_t invalidate_domains = 0; 1514 uint32_t invalidate_domains = 0;
1350 uint32_t flush_domains = 0; 1515 uint32_t flush_domains = 0;
1351 int ret; 1516
1517 BUG_ON(read_domains & I915_GEM_DOMAIN_CPU);
1518 BUG_ON(write_domain == I915_GEM_DOMAIN_CPU);
1352 1519
1353#if WATCH_BUF 1520#if WATCH_BUF
1354 DRM_INFO("%s: object %p read %08x -> %08x write %08x -> %08x\n", 1521 DRM_INFO("%s: object %p read %08x -> %08x write %08x -> %08x\n",
@@ -1385,34 +1552,11 @@ i915_gem_object_set_domain(struct drm_gem_object *obj,
1385 DRM_INFO("%s: CPU domain flush %08x invalidate %08x\n", 1552 DRM_INFO("%s: CPU domain flush %08x invalidate %08x\n",
1386 __func__, flush_domains, invalidate_domains); 1553 __func__, flush_domains, invalidate_domains);
1387#endif 1554#endif
1388 /*
1389 * If we're invaliding the CPU cache and flushing a GPU cache,
1390 * then pause for rendering so that the GPU caches will be
1391 * flushed before the cpu cache is invalidated
1392 */
1393 if ((invalidate_domains & I915_GEM_DOMAIN_CPU) &&
1394 (flush_domains & ~(I915_GEM_DOMAIN_CPU |
1395 I915_GEM_DOMAIN_GTT))) {
1396 ret = i915_gem_object_wait_rendering(obj);
1397 if (ret)
1398 return ret;
1399 }
1400 i915_gem_clflush_object(obj); 1555 i915_gem_clflush_object(obj);
1401 } 1556 }
1402 1557
1403 if ((write_domain | flush_domains) != 0) 1558 if ((write_domain | flush_domains) != 0)
1404 obj->write_domain = write_domain; 1559 obj->write_domain = write_domain;
1405
1406 /* If we're invalidating the CPU domain, clear the per-page CPU
1407 * domain list as well.
1408 */
1409 if (obj_priv->page_cpu_valid != NULL &&
1410 (write_domain != 0 ||
1411 read_domains & I915_GEM_DOMAIN_CPU)) {
1412 drm_free(obj_priv->page_cpu_valid, obj->size / PAGE_SIZE,
1413 DRM_MEM_DRIVER);
1414 obj_priv->page_cpu_valid = NULL;
1415 }
1416 obj->read_domains = read_domains; 1560 obj->read_domains = read_domains;
1417 1561
1418 dev->invalidate_domains |= invalidate_domains; 1562 dev->invalidate_domains |= invalidate_domains;
@@ -1423,47 +1567,94 @@ i915_gem_object_set_domain(struct drm_gem_object *obj,
1423 obj->read_domains, obj->write_domain, 1567 obj->read_domains, obj->write_domain,
1424 dev->invalidate_domains, dev->flush_domains); 1568 dev->invalidate_domains, dev->flush_domains);
1425#endif 1569#endif
1426 return 0;
1427} 1570}
1428 1571
1429/** 1572/**
1430 * Set the read/write domain on a range of the object. 1573 * Moves the object from a partially CPU read to a full one.
1431 * 1574 *
1432 * Currently only implemented for CPU reads, otherwise drops to normal 1575 * Note that this only resolves i915_gem_object_set_cpu_read_domain_range(),
1433 * i915_gem_object_set_domain(). 1576 * and doesn't handle transitioning from !(read_domains & I915_GEM_DOMAIN_CPU).
1434 */ 1577 */
1435static int 1578static void
1436i915_gem_object_set_domain_range(struct drm_gem_object *obj, 1579i915_gem_object_set_to_full_cpu_read_domain(struct drm_gem_object *obj)
1437 uint64_t offset,
1438 uint64_t size,
1439 uint32_t read_domains,
1440 uint32_t write_domain)
1441{ 1580{
1581 struct drm_device *dev = obj->dev;
1442 struct drm_i915_gem_object *obj_priv = obj->driver_private; 1582 struct drm_i915_gem_object *obj_priv = obj->driver_private;
1443 int ret, i;
1444 1583
1445 if (obj->read_domains & I915_GEM_DOMAIN_CPU) 1584 if (!obj_priv->page_cpu_valid)
1446 return 0; 1585 return;
1447 1586
1448 if (read_domains != I915_GEM_DOMAIN_CPU || 1587 /* If we're partially in the CPU read domain, finish moving it in.
1449 write_domain != 0) 1588 */
1450 return i915_gem_object_set_domain(obj, 1589 if (obj->read_domains & I915_GEM_DOMAIN_CPU) {
1451 read_domains, write_domain); 1590 int i;
1452 1591
1453 /* Wait on any GPU rendering to the object to be flushed. */ 1592 for (i = 0; i <= (obj->size - 1) / PAGE_SIZE; i++) {
1593 if (obj_priv->page_cpu_valid[i])
1594 continue;
1595 drm_clflush_pages(obj_priv->page_list + i, 1);
1596 }
1597 drm_agp_chipset_flush(dev);
1598 }
1599
1600 /* Free the page_cpu_valid mappings which are now stale, whether
1601 * or not we've got I915_GEM_DOMAIN_CPU.
1602 */
1603 drm_free(obj_priv->page_cpu_valid, obj->size / PAGE_SIZE,
1604 DRM_MEM_DRIVER);
1605 obj_priv->page_cpu_valid = NULL;
1606}
1607
1608/**
1609 * Set the CPU read domain on a range of the object.
1610 *
1611 * The object ends up with I915_GEM_DOMAIN_CPU in its read flags although it's
1612 * not entirely valid. The page_cpu_valid member of the object flags which
1613 * pages have been flushed, and will be respected by
1614 * i915_gem_object_set_to_cpu_domain() if it's called on to get a valid mapping
1615 * of the whole object.
1616 *
1617 * This function returns when the move is complete, including waiting on
1618 * flushes to occur.
1619 */
1620static int
1621i915_gem_object_set_cpu_read_domain_range(struct drm_gem_object *obj,
1622 uint64_t offset, uint64_t size)
1623{
1624 struct drm_i915_gem_object *obj_priv = obj->driver_private;
1625 int i, ret;
1626
1627 if (offset == 0 && size == obj->size)
1628 return i915_gem_object_set_to_cpu_domain(obj, 0);
1629
1630 i915_gem_object_flush_gpu_write_domain(obj);
1631 /* Wait on any GPU rendering and flushing to occur. */
1454 ret = i915_gem_object_wait_rendering(obj); 1632 ret = i915_gem_object_wait_rendering(obj);
1455 if (ret) 1633 if (ret != 0)
1456 return ret; 1634 return ret;
1635 i915_gem_object_flush_gtt_write_domain(obj);
1457 1636
1637 /* If we're already fully in the CPU read domain, we're done. */
1638 if (obj_priv->page_cpu_valid == NULL &&
1639 (obj->read_domains & I915_GEM_DOMAIN_CPU) != 0)
1640 return 0;
1641
1642 /* Otherwise, create/clear the per-page CPU read domain flag if we're
1643 * newly adding I915_GEM_DOMAIN_CPU
1644 */
1458 if (obj_priv->page_cpu_valid == NULL) { 1645 if (obj_priv->page_cpu_valid == NULL) {
1459 obj_priv->page_cpu_valid = drm_calloc(1, obj->size / PAGE_SIZE, 1646 obj_priv->page_cpu_valid = drm_calloc(1, obj->size / PAGE_SIZE,
1460 DRM_MEM_DRIVER); 1647 DRM_MEM_DRIVER);
1461 } 1648 if (obj_priv->page_cpu_valid == NULL)
1649 return -ENOMEM;
1650 } else if ((obj->read_domains & I915_GEM_DOMAIN_CPU) == 0)
1651 memset(obj_priv->page_cpu_valid, 0, obj->size / PAGE_SIZE);
1462 1652
1463 /* Flush the cache on any pages that are still invalid from the CPU's 1653 /* Flush the cache on any pages that are still invalid from the CPU's
1464 * perspective. 1654 * perspective.
1465 */ 1655 */
1466 for (i = offset / PAGE_SIZE; i <= (offset + size - 1) / PAGE_SIZE; i++) { 1656 for (i = offset / PAGE_SIZE; i <= (offset + size - 1) / PAGE_SIZE;
1657 i++) {
1467 if (obj_priv->page_cpu_valid[i]) 1658 if (obj_priv->page_cpu_valid[i])
1468 continue; 1659 continue;
1469 1660
@@ -1472,39 +1663,14 @@ i915_gem_object_set_domain_range(struct drm_gem_object *obj,
1472 obj_priv->page_cpu_valid[i] = 1; 1663 obj_priv->page_cpu_valid[i] = 1;
1473 } 1664 }
1474 1665
1475 return 0; 1666 /* It should now be out of any other write domains, and we can update
1476} 1667 * the domain values for our changes.
1477
1478/**
1479 * Once all of the objects have been set in the proper domain,
1480 * perform the necessary flush and invalidate operations.
1481 *
1482 * Returns the write domains flushed, for use in flush tracking.
1483 */
1484static uint32_t
1485i915_gem_dev_set_domain(struct drm_device *dev)
1486{
1487 uint32_t flush_domains = dev->flush_domains;
1488
1489 /*
1490 * Now that all the buffers are synced to the proper domains,
1491 * flush and invalidate the collected domains
1492 */ 1668 */
1493 if (dev->invalidate_domains | dev->flush_domains) { 1669 BUG_ON((obj->write_domain & ~I915_GEM_DOMAIN_CPU) != 0);
1494#if WATCH_EXEC
1495 DRM_INFO("%s: invalidate_domains %08x flush_domains %08x\n",
1496 __func__,
1497 dev->invalidate_domains,
1498 dev->flush_domains);
1499#endif
1500 i915_gem_flush(dev,
1501 dev->invalidate_domains,
1502 dev->flush_domains);
1503 dev->invalidate_domains = 0;
1504 dev->flush_domains = 0;
1505 }
1506 1670
1507 return flush_domains; 1671 obj->read_domains |= I915_GEM_DOMAIN_CPU;
1672
1673 return 0;
1508} 1674}
1509 1675
1510/** 1676/**
@@ -1585,6 +1751,18 @@ i915_gem_object_pin_and_relocate(struct drm_gem_object *obj,
1585 return -EINVAL; 1751 return -EINVAL;
1586 } 1752 }
1587 1753
1754 if (reloc.write_domain & I915_GEM_DOMAIN_CPU ||
1755 reloc.read_domains & I915_GEM_DOMAIN_CPU) {
1756 DRM_ERROR("reloc with read/write CPU domains: "
1757 "obj %p target %d offset %d "
1758 "read %08x write %08x",
1759 obj, reloc.target_handle,
1760 (int) reloc.offset,
1761 reloc.read_domains,
1762 reloc.write_domain);
1763 return -EINVAL;
1764 }
1765
1588 if (reloc.write_domain && target_obj->pending_write_domain && 1766 if (reloc.write_domain && target_obj->pending_write_domain &&
1589 reloc.write_domain != target_obj->pending_write_domain) { 1767 reloc.write_domain != target_obj->pending_write_domain) {
1590 DRM_ERROR("Write domain conflict: " 1768 DRM_ERROR("Write domain conflict: "
@@ -1625,19 +1803,11 @@ i915_gem_object_pin_and_relocate(struct drm_gem_object *obj,
1625 continue; 1803 continue;
1626 } 1804 }
1627 1805
1628 /* Now that we're going to actually write some data in, 1806 ret = i915_gem_object_set_to_gtt_domain(obj, 1);
1629 * make sure that any rendering using this buffer's contents 1807 if (ret != 0) {
1630 * is completed. 1808 drm_gem_object_unreference(target_obj);
1631 */ 1809 i915_gem_object_unpin(obj);
1632 i915_gem_object_wait_rendering(obj); 1810 return -EINVAL;
1633
1634 /* As we're writing through the gtt, flush
1635 * any CPU writes before we write the relocations
1636 */
1637 if (obj->write_domain & I915_GEM_DOMAIN_CPU) {
1638 i915_gem_clflush_object(obj);
1639 drm_agp_chipset_flush(dev);
1640 obj->write_domain = 0;
1641 } 1811 }
1642 1812
1643 /* Map the page containing the relocation we're going to 1813 /* Map the page containing the relocation we're going to
@@ -1779,6 +1949,7 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
1779 int ret, i, pinned = 0; 1949 int ret, i, pinned = 0;
1780 uint64_t exec_offset; 1950 uint64_t exec_offset;
1781 uint32_t seqno, flush_domains; 1951 uint32_t seqno, flush_domains;
1952 int pin_tries;
1782 1953
1783#if WATCH_EXEC 1954#if WATCH_EXEC
1784 DRM_INFO("buffers_ptr %d buffer_count %d len %08x\n", 1955 DRM_INFO("buffers_ptr %d buffer_count %d len %08x\n",
@@ -1827,14 +1998,7 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
1827 return -EBUSY; 1998 return -EBUSY;
1828 } 1999 }
1829 2000
1830 /* Zero the gloabl flush/invalidate flags. These 2001 /* Look up object handles */
1831 * will be modified as each object is bound to the
1832 * gtt
1833 */
1834 dev->invalidate_domains = 0;
1835 dev->flush_domains = 0;
1836
1837 /* Look up object handles and perform the relocations */
1838 for (i = 0; i < args->buffer_count; i++) { 2002 for (i = 0; i < args->buffer_count; i++) {
1839 object_list[i] = drm_gem_object_lookup(dev, file_priv, 2003 object_list[i] = drm_gem_object_lookup(dev, file_priv,
1840 exec_list[i].handle); 2004 exec_list[i].handle);
@@ -1844,17 +2008,39 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
1844 ret = -EBADF; 2008 ret = -EBADF;
1845 goto err; 2009 goto err;
1846 } 2010 }
2011 }
1847 2012
1848 object_list[i]->pending_read_domains = 0; 2013 /* Pin and relocate */
1849 object_list[i]->pending_write_domain = 0; 2014 for (pin_tries = 0; ; pin_tries++) {
1850 ret = i915_gem_object_pin_and_relocate(object_list[i], 2015 ret = 0;
1851 file_priv, 2016 for (i = 0; i < args->buffer_count; i++) {
1852 &exec_list[i]); 2017 object_list[i]->pending_read_domains = 0;
1853 if (ret) { 2018 object_list[i]->pending_write_domain = 0;
1854 DRM_ERROR("object bind and relocate failed %d\n", ret); 2019 ret = i915_gem_object_pin_and_relocate(object_list[i],
2020 file_priv,
2021 &exec_list[i]);
2022 if (ret)
2023 break;
2024 pinned = i + 1;
2025 }
2026 /* success */
2027 if (ret == 0)
2028 break;
2029
2030 /* error other than GTT full, or we've already tried again */
2031 if (ret != -ENOMEM || pin_tries >= 1) {
2032 DRM_ERROR("Failed to pin buffers %d\n", ret);
1855 goto err; 2033 goto err;
1856 } 2034 }
1857 pinned = i + 1; 2035
2036 /* unpin all of our buffers */
2037 for (i = 0; i < pinned; i++)
2038 i915_gem_object_unpin(object_list[i]);
2039
2040 /* evict everyone we can from the aperture */
2041 ret = i915_gem_evict_everything(dev);
2042 if (ret)
2043 goto err;
1858 } 2044 }
1859 2045
1860 /* Set the pending read domains for the batch buffer to COMMAND */ 2046 /* Set the pending read domains for the batch buffer to COMMAND */
@@ -1864,21 +2050,37 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
1864 2050
1865 i915_verify_inactive(dev, __FILE__, __LINE__); 2051 i915_verify_inactive(dev, __FILE__, __LINE__);
1866 2052
2053 /* Zero the global flush/invalidate flags. These
2054 * will be modified as new domains are computed
2055 * for each object
2056 */
2057 dev->invalidate_domains = 0;
2058 dev->flush_domains = 0;
2059
1867 for (i = 0; i < args->buffer_count; i++) { 2060 for (i = 0; i < args->buffer_count; i++) {
1868 struct drm_gem_object *obj = object_list[i]; 2061 struct drm_gem_object *obj = object_list[i];
1869 2062
1870 /* make sure all previous memory operations have passed */ 2063 /* Compute new gpu domains and update invalidate/flush */
1871 ret = i915_gem_object_set_domain(obj, 2064 i915_gem_object_set_to_gpu_domain(obj,
1872 obj->pending_read_domains, 2065 obj->pending_read_domains,
1873 obj->pending_write_domain); 2066 obj->pending_write_domain);
1874 if (ret)
1875 goto err;
1876 } 2067 }
1877 2068
1878 i915_verify_inactive(dev, __FILE__, __LINE__); 2069 i915_verify_inactive(dev, __FILE__, __LINE__);
1879 2070
1880 /* Flush/invalidate caches and chipset buffer */ 2071 if (dev->invalidate_domains | dev->flush_domains) {
1881 flush_domains = i915_gem_dev_set_domain(dev); 2072#if WATCH_EXEC
2073 DRM_INFO("%s: invalidate_domains %08x flush_domains %08x\n",
2074 __func__,
2075 dev->invalidate_domains,
2076 dev->flush_domains);
2077#endif
2078 i915_gem_flush(dev,
2079 dev->invalidate_domains,
2080 dev->flush_domains);
2081 if (dev->flush_domains)
2082 (void)i915_add_request(dev, dev->flush_domains);
2083 }
1882 2084
1883 i915_verify_inactive(dev, __FILE__, __LINE__); 2085 i915_verify_inactive(dev, __FILE__, __LINE__);
1884 2086
@@ -1898,8 +2100,6 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
1898 ~0); 2100 ~0);
1899#endif 2101#endif
1900 2102
1901 (void)i915_add_request(dev, flush_domains);
1902
1903 /* Exec the batchbuffer */ 2103 /* Exec the batchbuffer */
1904 ret = i915_dispatch_gem_execbuffer(dev, args, exec_offset); 2104 ret = i915_dispatch_gem_execbuffer(dev, args, exec_offset);
1905 if (ret) { 2105 if (ret) {
@@ -1927,10 +2127,8 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
1927 i915_file_priv->mm.last_gem_seqno = seqno; 2127 i915_file_priv->mm.last_gem_seqno = seqno;
1928 for (i = 0; i < args->buffer_count; i++) { 2128 for (i = 0; i < args->buffer_count; i++) {
1929 struct drm_gem_object *obj = object_list[i]; 2129 struct drm_gem_object *obj = object_list[i];
1930 struct drm_i915_gem_object *obj_priv = obj->driver_private;
1931 2130
1932 i915_gem_object_move_to_active(obj); 2131 i915_gem_object_move_to_active(obj, seqno);
1933 obj_priv->last_rendering_seqno = seqno;
1934#if WATCH_LRU 2132#if WATCH_LRU
1935 DRM_INFO("%s: move to exec list %p\n", __func__, obj); 2133 DRM_INFO("%s: move to exec list %p\n", __func__, obj);
1936#endif 2134#endif
@@ -2061,11 +2259,7 @@ i915_gem_pin_ioctl(struct drm_device *dev, void *data,
2061 /* XXX - flush the CPU caches for pinned objects 2259 /* XXX - flush the CPU caches for pinned objects
2062 * as the X server doesn't manage domains yet 2260 * as the X server doesn't manage domains yet
2063 */ 2261 */
2064 if (obj->write_domain & I915_GEM_DOMAIN_CPU) { 2262 i915_gem_object_flush_cpu_write_domain(obj);
2065 i915_gem_clflush_object(obj);
2066 drm_agp_chipset_flush(dev);
2067 obj->write_domain = 0;
2068 }
2069 args->offset = obj_priv->gtt_offset; 2263 args->offset = obj_priv->gtt_offset;
2070 drm_gem_object_unreference(obj); 2264 drm_gem_object_unreference(obj);
2071 mutex_unlock(&dev->struct_mutex); 2265 mutex_unlock(&dev->struct_mutex);
@@ -2115,7 +2309,14 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data,
2115 } 2309 }
2116 2310
2117 obj_priv = obj->driver_private; 2311 obj_priv = obj->driver_private;
2118 args->busy = obj_priv->active; 2312 /* Don't count being on the flushing list against the object being
2313 * done. Otherwise, a buffer left on the flushing list but not getting
2314 * flushed (because nobody's flushing that domain) won't ever return
2315 * unbusy and get reused by libdrm's bo cache. The other expected
2316 * consumer of this interface, OpenGL's occlusion queries, also specs
2317 * that the objects get unbusy "eventually" without any interference.
2318 */
2319 args->busy = obj_priv->active && obj_priv->last_rendering_seqno != 0;
2119 2320
2120 drm_gem_object_unreference(obj); 2321 drm_gem_object_unreference(obj);
2121 mutex_unlock(&dev->struct_mutex); 2322 mutex_unlock(&dev->struct_mutex);
@@ -2167,29 +2368,6 @@ void i915_gem_free_object(struct drm_gem_object *obj)
2167 drm_free(obj->driver_private, 1, DRM_MEM_DRIVER); 2368 drm_free(obj->driver_private, 1, DRM_MEM_DRIVER);
2168} 2369}
2169 2370
2170static int
2171i915_gem_set_domain(struct drm_gem_object *obj,
2172 struct drm_file *file_priv,
2173 uint32_t read_domains,
2174 uint32_t write_domain)
2175{
2176 struct drm_device *dev = obj->dev;
2177 int ret;
2178 uint32_t flush_domains;
2179
2180 BUG_ON(!mutex_is_locked(&dev->struct_mutex));
2181
2182 ret = i915_gem_object_set_domain(obj, read_domains, write_domain);
2183 if (ret)
2184 return ret;
2185 flush_domains = i915_gem_dev_set_domain(obj->dev);
2186
2187 if (flush_domains & ~(I915_GEM_DOMAIN_CPU|I915_GEM_DOMAIN_GTT))
2188 (void) i915_add_request(dev, flush_domains);
2189
2190 return 0;
2191}
2192
2193/** Unbinds all objects that are on the given buffer list. */ 2371/** Unbinds all objects that are on the given buffer list. */
2194static int 2372static int
2195i915_gem_evict_from_list(struct drm_device *dev, struct list_head *head) 2373i915_gem_evict_from_list(struct drm_device *dev, struct list_head *head)
diff --git a/drivers/gpu/drm/i915/i915_gem_proc.c b/drivers/gpu/drm/i915/i915_gem_proc.c
index 93de15b4c9a7..e8d5abe1250e 100644
--- a/drivers/gpu/drm/i915/i915_gem_proc.c
+++ b/drivers/gpu/drm/i915/i915_gem_proc.c
@@ -166,10 +166,9 @@ static int i915_gem_request_info(char *buf, char **start, off_t offset,
166 list_for_each_entry(gem_request, &dev_priv->mm.request_list, 166 list_for_each_entry(gem_request, &dev_priv->mm.request_list,
167 list) 167 list)
168 { 168 {
169 DRM_PROC_PRINT(" %d @ %d %08x\n", 169 DRM_PROC_PRINT(" %d @ %d\n",
170 gem_request->seqno, 170 gem_request->seqno,
171 (int) (jiffies - gem_request->emitted_jiffies), 171 (int) (jiffies - gem_request->emitted_jiffies));
172 gem_request->flush_domains);
173 } 172 }
174 if (len > request + offset) 173 if (len > request + offset)
175 return request; 174 return request;
diff --git a/drivers/gpu/drm/i915/i915_gem_tiling.c b/drivers/gpu/drm/i915/i915_gem_tiling.c
index e8b85ac4ca04..a8cb69469c64 100644
--- a/drivers/gpu/drm/i915/i915_gem_tiling.c
+++ b/drivers/gpu/drm/i915/i915_gem_tiling.c
@@ -119,9 +119,10 @@ i915_gem_detect_bit_6_swizzle(struct drm_device *dev)
119 dcc & DCC_CHANNEL_XOR_DISABLE) { 119 dcc & DCC_CHANNEL_XOR_DISABLE) {
120 swizzle_x = I915_BIT_6_SWIZZLE_9_10; 120 swizzle_x = I915_BIT_6_SWIZZLE_9_10;
121 swizzle_y = I915_BIT_6_SWIZZLE_9; 121 swizzle_y = I915_BIT_6_SWIZZLE_9;
122 } else if (IS_I965GM(dev) || IS_GM45(dev)) { 122 } else if ((IS_I965GM(dev) || IS_GM45(dev)) &&
123 /* GM965 only does bit 11-based channel 123 (dcc & DCC_CHANNEL_XOR_BIT_17) == 0) {
124 * randomization 124 /* GM965/GM45 does either bit 11 or bit 17
125 * swizzling.
125 */ 126 */
126 swizzle_x = I915_BIT_6_SWIZZLE_9_10_11; 127 swizzle_x = I915_BIT_6_SWIZZLE_9_10_11;
127 swizzle_y = I915_BIT_6_SWIZZLE_9_11; 128 swizzle_y = I915_BIT_6_SWIZZLE_9_11;
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 0e476eba36e6..9d24aaeb8a45 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -522,6 +522,7 @@
522#define DCC_ADDRESSING_MODE_DUAL_CHANNEL_INTERLEAVED (2 << 0) 522#define DCC_ADDRESSING_MODE_DUAL_CHANNEL_INTERLEAVED (2 << 0)
523#define DCC_ADDRESSING_MODE_MASK (3 << 0) 523#define DCC_ADDRESSING_MODE_MASK (3 << 0)
524#define DCC_CHANNEL_XOR_DISABLE (1 << 10) 524#define DCC_CHANNEL_XOR_DISABLE (1 << 10)
525#define DCC_CHANNEL_XOR_BIT_17 (1 << 9)
525 526
526/** 965 MCH register controlling DRAM channel configuration */ 527/** 965 MCH register controlling DRAM channel configuration */
527#define C0DRB3 0x10206 528#define C0DRB3 0x10206
diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
index 7a183789be97..3bbb871b25d5 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.h
+++ b/drivers/gpu/drm/radeon/radeon_drv.h
@@ -299,7 +299,6 @@ typedef struct drm_radeon_private {
299 atomic_t swi_emitted; 299 atomic_t swi_emitted;
300 int vblank_crtc; 300 int vblank_crtc;
301 uint32_t irq_enable_reg; 301 uint32_t irq_enable_reg;
302 int irq_enabled;
303 uint32_t r500_disp_irq_reg; 302 uint32_t r500_disp_irq_reg;
304 303
305 struct radeon_surface surfaces[RADEON_MAX_SURFACES]; 304 struct radeon_surface surfaces[RADEON_MAX_SURFACES];
diff --git a/drivers/gpu/drm/radeon/radeon_irq.c b/drivers/gpu/drm/radeon/radeon_irq.c
index 97c0599fdb1e..99be11418ac2 100644
--- a/drivers/gpu/drm/radeon/radeon_irq.c
+++ b/drivers/gpu/drm/radeon/radeon_irq.c
@@ -44,7 +44,8 @@ void radeon_irq_set_state(struct drm_device *dev, u32 mask, int state)
44 else 44 else
45 dev_priv->irq_enable_reg &= ~mask; 45 dev_priv->irq_enable_reg &= ~mask;
46 46
47 RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg); 47 if (!dev->irq_enabled)
48 RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg);
48} 49}
49 50
50static void r500_vbl_irq_set_state(struct drm_device *dev, u32 mask, int state) 51static void r500_vbl_irq_set_state(struct drm_device *dev, u32 mask, int state)
@@ -56,7 +57,8 @@ static void r500_vbl_irq_set_state(struct drm_device *dev, u32 mask, int state)
56 else 57 else
57 dev_priv->r500_disp_irq_reg &= ~mask; 58 dev_priv->r500_disp_irq_reg &= ~mask;
58 59
59 RADEON_WRITE(R500_DxMODE_INT_MASK, dev_priv->r500_disp_irq_reg); 60 if (!dev->irq_enabled)
61 RADEON_WRITE(R500_DxMODE_INT_MASK, dev_priv->r500_disp_irq_reg);
60} 62}
61 63
62int radeon_enable_vblank(struct drm_device *dev, int crtc) 64int radeon_enable_vblank(struct drm_device *dev, int crtc)
@@ -355,8 +357,6 @@ void radeon_driver_irq_uninstall(struct drm_device * dev)
355 if (!dev_priv) 357 if (!dev_priv)
356 return; 358 return;
357 359
358 dev_priv->irq_enabled = 0;
359
360 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690) 360 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690)
361 RADEON_WRITE(R500_DxMODE_INT_MASK, 0); 361 RADEON_WRITE(R500_DxMODE_INT_MASK, 0);
362 /* Disable *all* interrupts */ 362 /* Disable *all* interrupts */
diff --git a/drivers/i2c/busses/i2c-cpm.c b/drivers/i2c/busses/i2c-cpm.c
index 228f75723063..3fcf78e906db 100644
--- a/drivers/i2c/busses/i2c-cpm.c
+++ b/drivers/i2c/busses/i2c-cpm.c
@@ -365,6 +365,7 @@ static int cpm_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
365 pmsg = &msgs[tptr]; 365 pmsg = &msgs[tptr];
366 if (pmsg->flags & I2C_M_RD) 366 if (pmsg->flags & I2C_M_RD)
367 ret = wait_event_interruptible_timeout(cpm->i2c_wait, 367 ret = wait_event_interruptible_timeout(cpm->i2c_wait,
368 (in_be16(&tbdf[tptr].cbd_sc) & BD_SC_NAK) ||
368 !(in_be16(&rbdf[rptr].cbd_sc) & BD_SC_EMPTY), 369 !(in_be16(&rbdf[rptr].cbd_sc) & BD_SC_EMPTY),
369 1 * HZ); 370 1 * HZ);
370 else 371 else
diff --git a/drivers/i2c/busses/i2c-highlander.c b/drivers/i2c/busses/i2c-highlander.c
index f4d22ae9d294..e5a8dae4a289 100644
--- a/drivers/i2c/busses/i2c-highlander.c
+++ b/drivers/i2c/busses/i2c-highlander.c
@@ -92,7 +92,7 @@ static void highlander_i2c_setup(struct highlander_i2c_dev *dev)
92static void smbus_write_data(u8 *src, u16 *dst, int len) 92static void smbus_write_data(u8 *src, u16 *dst, int len)
93{ 93{
94 for (; len > 1; len -= 2) { 94 for (; len > 1; len -= 2) {
95 *dst++ = be16_to_cpup((u16 *)src); 95 *dst++ = be16_to_cpup((__be16 *)src);
96 src += 2; 96 src += 2;
97 } 97 }
98 98
@@ -103,7 +103,7 @@ static void smbus_write_data(u8 *src, u16 *dst, int len)
103static void smbus_read_data(u16 *src, u8 *dst, int len) 103static void smbus_read_data(u16 *src, u8 *dst, int len)
104{ 104{
105 for (; len > 1; len -= 2) { 105 for (; len > 1; len -= 2) {
106 *(u16 *)dst = cpu_to_be16p(src++); 106 *(__be16 *)dst = cpu_to_be16p(src++);
107 dst += 2; 107 dst += 2;
108 } 108 }
109 109
diff --git a/drivers/i2c/busses/i2c-pmcmsp.c b/drivers/i2c/busses/i2c-pmcmsp.c
index dcf2045b5222..0bdb2d7f0570 100644
--- a/drivers/i2c/busses/i2c-pmcmsp.c
+++ b/drivers/i2c/busses/i2c-pmcmsp.c
@@ -486,7 +486,7 @@ static enum pmcmsptwi_xfer_result pmcmsptwi_xfer_cmd(
486 486
487 if (cmd->type == MSP_TWI_CMD_WRITE || 487 if (cmd->type == MSP_TWI_CMD_WRITE ||
488 cmd->type == MSP_TWI_CMD_WRITE_READ) { 488 cmd->type == MSP_TWI_CMD_WRITE_READ) {
489 __be64 tmp = cpu_to_be64p((u64 *)cmd->write_data); 489 u64 tmp = be64_to_cpup((__be64 *)cmd->write_data);
490 tmp >>= (MSP_MAX_BYTES_PER_RW - cmd->write_len) * 8; 490 tmp >>= (MSP_MAX_BYTES_PER_RW - cmd->write_len) * 8;
491 dev_dbg(&pmcmsptwi_adapter.dev, "Writing 0x%016llx\n", tmp); 491 dev_dbg(&pmcmsptwi_adapter.dev, "Writing 0x%016llx\n", tmp);
492 pmcmsptwi_writel(tmp & 0x00000000ffffffffLL, 492 pmcmsptwi_writel(tmp & 0x00000000ffffffffLL,
diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
index 1fac4e233133..b7434d24904e 100644
--- a/drivers/i2c/busses/i2c-s3c2410.c
+++ b/drivers/i2c/busses/i2c-s3c2410.c
@@ -56,6 +56,7 @@ enum s3c24xx_i2c_state {
56struct s3c24xx_i2c { 56struct s3c24xx_i2c {
57 spinlock_t lock; 57 spinlock_t lock;
58 wait_queue_head_t wait; 58 wait_queue_head_t wait;
59 unsigned int suspended:1;
59 60
60 struct i2c_msg *msg; 61 struct i2c_msg *msg;
61 unsigned int msg_num; 62 unsigned int msg_num;
@@ -507,7 +508,7 @@ static int s3c24xx_i2c_doxfer(struct s3c24xx_i2c *i2c, struct i2c_msg *msgs, int
507 unsigned long timeout; 508 unsigned long timeout;
508 int ret; 509 int ret;
509 510
510 if (!(readl(i2c->regs + S3C2410_IICCON) & S3C2410_IICCON_IRQEN)) 511 if (i2c->suspended)
511 return -EIO; 512 return -EIO;
512 513
513 ret = s3c24xx_i2c_set_master(i2c); 514 ret = s3c24xx_i2c_set_master(i2c);
@@ -986,17 +987,26 @@ static int s3c24xx_i2c_remove(struct platform_device *pdev)
986} 987}
987 988
988#ifdef CONFIG_PM 989#ifdef CONFIG_PM
990static int s3c24xx_i2c_suspend_late(struct platform_device *dev,
991 pm_message_t msg)
992{
993 struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
994 i2c->suspended = 1;
995 return 0;
996}
997
989static int s3c24xx_i2c_resume(struct platform_device *dev) 998static int s3c24xx_i2c_resume(struct platform_device *dev)
990{ 999{
991 struct s3c24xx_i2c *i2c = platform_get_drvdata(dev); 1000 struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
992 1001
993 if (i2c != NULL) 1002 i2c->suspended = 0;
994 s3c24xx_i2c_init(i2c); 1003 s3c24xx_i2c_init(i2c);
995 1004
996 return 0; 1005 return 0;
997} 1006}
998 1007
999#else 1008#else
1009#define s3c24xx_i2c_suspend_late NULL
1000#define s3c24xx_i2c_resume NULL 1010#define s3c24xx_i2c_resume NULL
1001#endif 1011#endif
1002 1012
@@ -1005,6 +1015,7 @@ static int s3c24xx_i2c_resume(struct platform_device *dev)
1005static struct platform_driver s3c2410_i2c_driver = { 1015static struct platform_driver s3c2410_i2c_driver = {
1006 .probe = s3c24xx_i2c_probe, 1016 .probe = s3c24xx_i2c_probe,
1007 .remove = s3c24xx_i2c_remove, 1017 .remove = s3c24xx_i2c_remove,
1018 .suspend_late = s3c24xx_i2c_suspend_late,
1008 .resume = s3c24xx_i2c_resume, 1019 .resume = s3c24xx_i2c_resume,
1009 .driver = { 1020 .driver = {
1010 .owner = THIS_MODULE, 1021 .owner = THIS_MODULE,
@@ -1015,6 +1026,7 @@ static struct platform_driver s3c2410_i2c_driver = {
1015static struct platform_driver s3c2440_i2c_driver = { 1026static struct platform_driver s3c2440_i2c_driver = {
1016 .probe = s3c24xx_i2c_probe, 1027 .probe = s3c24xx_i2c_probe,
1017 .remove = s3c24xx_i2c_remove, 1028 .remove = s3c24xx_i2c_remove,
1029 .suspend_late = s3c24xx_i2c_suspend_late,
1018 .resume = s3c24xx_i2c_resume, 1030 .resume = s3c24xx_i2c_resume,
1019 .driver = { 1031 .driver = {
1020 .owner = THIS_MODULE, 1032 .owner = THIS_MODULE,
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index 6d7401772a8f..e6857e01d1ba 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -669,10 +669,12 @@ config BLK_DEV_CELLEB
669 669
670endif 670endif
671 671
672# TODO: BLK_DEV_IDEDMA_PCI -> BLK_DEV_IDEDMA_SFF
672config BLK_DEV_IDE_PMAC 673config BLK_DEV_IDE_PMAC
673 tristate "PowerMac on-board IDE support" 674 tristate "PowerMac on-board IDE support"
674 depends on PPC_PMAC && IDE=y 675 depends on PPC_PMAC && IDE=y
675 select IDE_TIMINGS 676 select IDE_TIMINGS
677 select BLK_DEV_IDEDMA_PCI
676 help 678 help
677 This driver provides support for the on-board IDE controller on 679 This driver provides support for the on-board IDE controller on
678 most of the recent Apple Power Macintoshes and PowerBooks. 680 most of the recent Apple Power Macintoshes and PowerBooks.
@@ -689,16 +691,6 @@ config BLK_DEV_IDE_PMAC_ATA100FIRST
689 CD-ROM on hda. This option changes this to more natural hda for 691 CD-ROM on hda. This option changes this to more natural hda for
690 hard disk and hdc for CD-ROM. 692 hard disk and hdc for CD-ROM.
691 693
692config BLK_DEV_IDEDMA_PMAC
693 bool "PowerMac IDE DMA support"
694 depends on BLK_DEV_IDE_PMAC
695 select BLK_DEV_IDEDMA_PCI
696 help
697 This option allows the driver for the on-board IDE controller on
698 Power Macintoshes and PowerBooks to use DMA (direct memory access)
699 to transfer data to and from memory. Saying Y is safe and improves
700 performance.
701
702config BLK_DEV_IDE_AU1XXX 694config BLK_DEV_IDE_AU1XXX
703 bool "IDE for AMD Alchemy Au1200" 695 bool "IDE for AMD Alchemy Au1200"
704 depends on SOC_AU1200 696 depends on SOC_AU1200
@@ -912,7 +904,7 @@ config BLK_DEV_UMC8672
912endif 904endif
913 905
914config BLK_DEV_IDEDMA 906config BLK_DEV_IDEDMA
915 def_bool BLK_DEV_IDEDMA_SFF || BLK_DEV_IDEDMA_PMAC || \ 907 def_bool BLK_DEV_IDEDMA_SFF || \
916 BLK_DEV_IDEDMA_ICS || BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA 908 BLK_DEV_IDEDMA_ICS || BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
917 909
918endif # IDE 910endif # IDE
diff --git a/drivers/ide/alim15x3.c b/drivers/ide/alim15x3.c
index e56c7b72f9e2..45d2356bb725 100644
--- a/drivers/ide/alim15x3.c
+++ b/drivers/ide/alim15x3.c
@@ -591,7 +591,7 @@ static int __init ali15x3_ide_init(void)
591 591
592static void __exit ali15x3_ide_exit(void) 592static void __exit ali15x3_ide_exit(void)
593{ 593{
594 return pci_unregister_driver(&alim15x3_pci_driver); 594 pci_unregister_driver(&alim15x3_pci_driver);
595} 595}
596 596
597module_init(ali15x3_ide_init); 597module_init(ali15x3_ide_init);
diff --git a/drivers/ide/amd74xx.c b/drivers/ide/amd74xx.c
index 81ec73134eda..c6bcd3014a29 100644
--- a/drivers/ide/amd74xx.c
+++ b/drivers/ide/amd74xx.c
@@ -3,7 +3,7 @@
3 * IDE driver for Linux. 3 * IDE driver for Linux.
4 * 4 *
5 * Copyright (c) 2000-2002 Vojtech Pavlik 5 * Copyright (c) 2000-2002 Vojtech Pavlik
6 * Copyright (c) 2007 Bartlomiej Zolnierkiewicz 6 * Copyright (c) 2007-2008 Bartlomiej Zolnierkiewicz
7 * 7 *
8 * Based on the work of: 8 * Based on the work of:
9 * Andre Hedrick 9 * Andre Hedrick
@@ -263,6 +263,15 @@ static int __devinit amd74xx_probe(struct pci_dev *dev, const struct pci_device_
263 d.udma_mask = ATA_UDMA5; 263 d.udma_mask = ATA_UDMA5;
264 } 264 }
265 265
266 /*
267 * It seems that on some nVidia controllers using AltStatus
268 * register can be unreliable so default to Status register
269 * if the device is in Compatibility Mode.
270 */
271 if (dev->vendor == PCI_VENDOR_ID_NVIDIA &&
272 ide_pci_is_in_compatibility_mode(dev))
273 d.host_flags |= IDE_HFLAG_BROKEN_ALTSTATUS;
274
266 printk(KERN_INFO "%s %s: UDMA%s controller\n", 275 printk(KERN_INFO "%s %s: UDMA%s controller\n",
267 d.name, pci_name(dev), amd_dma[fls(d.udma_mask) - 1]); 276 d.name, pci_name(dev), amd_dma[fls(d.udma_mask) - 1]);
268 277
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index 7162d67562af..cc35d6dbd410 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -132,10 +132,14 @@ int ide_end_request (ide_drive_t *drive, int uptodate, int nr_sectors)
132} 132}
133EXPORT_SYMBOL(ide_end_request); 133EXPORT_SYMBOL(ide_end_request);
134 134
135static void ide_complete_power_step(ide_drive_t *drive, struct request *rq, u8 stat, u8 error) 135static void ide_complete_power_step(ide_drive_t *drive, struct request *rq)
136{ 136{
137 struct request_pm_state *pm = rq->data; 137 struct request_pm_state *pm = rq->data;
138 138
139#ifdef DEBUG_PM
140 printk(KERN_INFO "%s: complete_power_step(step: %d)\n",
141 drive->name, pm->pm_step);
142#endif
139 if (drive->media != ide_disk) 143 if (drive->media != ide_disk)
140 return; 144 return;
141 145
@@ -172,7 +176,7 @@ static ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *
172 /* Not supported? Switch to next step now. */ 176 /* Not supported? Switch to next step now. */
173 if (ata_id_flush_enabled(drive->id) == 0 || 177 if (ata_id_flush_enabled(drive->id) == 0 ||
174 (drive->dev_flags & IDE_DFLAG_WCACHE) == 0) { 178 (drive->dev_flags & IDE_DFLAG_WCACHE) == 0) {
175 ide_complete_power_step(drive, rq, 0, 0); 179 ide_complete_power_step(drive, rq);
176 return ide_stopped; 180 return ide_stopped;
177 } 181 }
178 if (ata_id_flush_ext_enabled(drive->id)) 182 if (ata_id_flush_ext_enabled(drive->id))
@@ -191,7 +195,7 @@ static ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *
191 if (drive->media != ide_disk) 195 if (drive->media != ide_disk)
192 pm->pm_step = IDE_PM_RESTORE_DMA; 196 pm->pm_step = IDE_PM_RESTORE_DMA;
193 else 197 else
194 ide_complete_power_step(drive, rq, 0, 0); 198 ide_complete_power_step(drive, rq);
195 return ide_stopped; 199 return ide_stopped;
196 case IDE_PM_IDLE: /* Resume step 2 (idle) */ 200 case IDE_PM_IDLE: /* Resume step 2 (idle) */
197 args->tf.command = ATA_CMD_IDLEIMMEDIATE; 201 args->tf.command = ATA_CMD_IDLEIMMEDIATE;
@@ -322,11 +326,8 @@ void ide_end_drive_cmd (ide_drive_t *drive, u8 stat, u8 err)
322 } 326 }
323 } else if (blk_pm_request(rq)) { 327 } else if (blk_pm_request(rq)) {
324 struct request_pm_state *pm = rq->data; 328 struct request_pm_state *pm = rq->data;
325#ifdef DEBUG_PM 329
326 printk("%s: complete_power_step(step: %d, stat: %x, err: %x)\n", 330 ide_complete_power_step(drive, rq);
327 drive->name, rq->pm->pm_step, stat, err);
328#endif
329 ide_complete_power_step(drive, rq, stat, err);
330 if (pm->pm_step == IDE_PM_COMPLETED) 331 if (pm->pm_step == IDE_PM_COMPLETED)
331 ide_complete_pm_request(drive, rq); 332 ide_complete_pm_request(drive, rq);
332 return; 333 return;
@@ -804,7 +805,7 @@ static ide_startstop_t start_request (ide_drive_t *drive, struct request *rq)
804 struct request_pm_state *pm = rq->data; 805 struct request_pm_state *pm = rq->data;
805#ifdef DEBUG_PM 806#ifdef DEBUG_PM
806 printk("%s: start_power_step(step: %d)\n", 807 printk("%s: start_power_step(step: %d)\n",
807 drive->name, rq->pm->pm_step); 808 drive->name, pm->pm_step);
808#endif 809#endif
809 startstop = ide_start_power_step(drive, rq); 810 startstop = ide_start_power_step(drive, rq);
810 if (startstop == ide_stopped && 811 if (startstop == ide_stopped &&
@@ -967,14 +968,13 @@ static void ide_do_request (ide_hwgroup_t *hwgroup, int masked_irq)
967 ide_startstop_t startstop; 968 ide_startstop_t startstop;
968 int loops = 0; 969 int loops = 0;
969 970
970 /* for atari only: POSSIBLY BROKEN HERE(?) */
971 ide_get_lock(ide_intr, hwgroup);
972
973 /* caller must own ide_lock */ 971 /* caller must own ide_lock */
974 BUG_ON(!irqs_disabled()); 972 BUG_ON(!irqs_disabled());
975 973
976 while (!hwgroup->busy) { 974 while (!hwgroup->busy) {
977 hwgroup->busy = 1; 975 hwgroup->busy = 1;
976 /* for atari only */
977 ide_get_lock(ide_intr, hwgroup);
978 drive = choose_drive(hwgroup); 978 drive = choose_drive(hwgroup);
979 if (drive == NULL) { 979 if (drive == NULL) {
980 int sleeping = 0; 980 int sleeping = 0;
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
index 5d6ba14e211d..c41c3b9b6f02 100644
--- a/drivers/ide/ide-iops.c
+++ b/drivers/ide/ide-iops.c
@@ -457,18 +457,14 @@ int drive_is_ready (ide_drive_t *drive)
457 if (drive->waiting_for_dma) 457 if (drive->waiting_for_dma)
458 return hwif->dma_ops->dma_test_irq(drive); 458 return hwif->dma_ops->dma_test_irq(drive);
459 459
460#if 0
461 /* need to guarantee 400ns since last command was issued */
462 udelay(1);
463#endif
464
465 /* 460 /*
466 * We do a passive status test under shared PCI interrupts on 461 * We do a passive status test under shared PCI interrupts on
467 * cards that truly share the ATA side interrupt, but may also share 462 * cards that truly share the ATA side interrupt, but may also share
468 * an interrupt with another pci card/device. We make no assumptions 463 * an interrupt with another pci card/device. We make no assumptions
469 * about possible isa-pnp and pci-pnp issues yet. 464 * about possible isa-pnp and pci-pnp issues yet.
470 */ 465 */
471 if (hwif->io_ports.ctl_addr) 466 if (hwif->io_ports.ctl_addr &&
467 (hwif->host_flags & IDE_HFLAG_BROKEN_ALTSTATUS) == 0)
472 stat = hwif->tp_ops->read_altstatus(hwif); 468 stat = hwif->tp_ops->read_altstatus(hwif);
473 else 469 else
474 /* Note: this may clear a pending IRQ!! */ 470 /* Note: this may clear a pending IRQ!! */
@@ -610,6 +606,7 @@ static const struct drive_list_entry ivb_list[] = {
610 { "TSSTcorp CDDVDW SH-S202N" , "SB01" }, 606 { "TSSTcorp CDDVDW SH-S202N" , "SB01" },
611 { "TSSTcorp CDDVDW SH-S202H" , "SB00" }, 607 { "TSSTcorp CDDVDW SH-S202H" , "SB00" },
612 { "TSSTcorp CDDVDW SH-S202H" , "SB01" }, 608 { "TSSTcorp CDDVDW SH-S202H" , "SB01" },
609 { "SAMSUNG SP0822N" , "WA100-10" },
613 { NULL , NULL } 610 { NULL , NULL }
614}; 611};
615 612
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 1649ea54f76c..c55bdbd22314 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -266,7 +266,8 @@ static int actual_try_to_identify (ide_drive_t *drive, u8 cmd)
266 /* take a deep breath */ 266 /* take a deep breath */
267 msleep(50); 267 msleep(50);
268 268
269 if (io_ports->ctl_addr) { 269 if (io_ports->ctl_addr &&
270 (hwif->host_flags & IDE_HFLAG_BROKEN_ALTSTATUS) == 0) {
270 a = tp_ops->read_altstatus(hwif); 271 a = tp_ops->read_altstatus(hwif);
271 s = tp_ops->read_status(hwif); 272 s = tp_ops->read_status(hwif);
272 if ((a ^ s) & ~ATA_IDX) 273 if ((a ^ s) & ~ATA_IDX)
diff --git a/drivers/ide/pmac.c b/drivers/ide/pmac.c
index 2e19d6298536..7c481bb56fab 100644
--- a/drivers/ide/pmac.c
+++ b/drivers/ide/pmac.c
@@ -66,7 +66,6 @@ typedef struct pmac_ide_hwif {
66 struct macio_dev *mdev; 66 struct macio_dev *mdev;
67 u32 timings[4]; 67 u32 timings[4];
68 volatile u32 __iomem * *kauai_fcr; 68 volatile u32 __iomem * *kauai_fcr;
69#ifdef CONFIG_BLK_DEV_IDEDMA_PMAC
70 /* Those fields are duplicating what is in hwif. We currently 69 /* Those fields are duplicating what is in hwif. We currently
71 * can't use the hwif ones because of some assumptions that are 70 * can't use the hwif ones because of some assumptions that are
72 * beeing done by the generic code about the kind of dma controller 71 * beeing done by the generic code about the kind of dma controller
@@ -74,8 +73,6 @@ typedef struct pmac_ide_hwif {
74 */ 73 */
75 volatile struct dbdma_regs __iomem * dma_regs; 74 volatile struct dbdma_regs __iomem * dma_regs;
76 struct dbdma_cmd* dma_table_cpu; 75 struct dbdma_cmd* dma_table_cpu;
77#endif
78
79} pmac_ide_hwif_t; 76} pmac_ide_hwif_t;
80 77
81enum { 78enum {
@@ -222,8 +219,6 @@ static const char* model_name[] = {
222#define KAUAI_FCR_UATA_RESET_N 0x00000002 219#define KAUAI_FCR_UATA_RESET_N 0x00000002
223#define KAUAI_FCR_UATA_ENABLE 0x00000001 220#define KAUAI_FCR_UATA_ENABLE 0x00000001
224 221
225#ifdef CONFIG_BLK_DEV_IDEDMA_PMAC
226
227/* Rounded Multiword DMA timings 222/* Rounded Multiword DMA timings
228 * 223 *
229 * I gave up finding a generic formula for all controller 224 * I gave up finding a generic formula for all controller
@@ -413,8 +408,6 @@ static int pmac_ide_build_dmatable(ide_drive_t *drive, struct request *rq);
413static void pmac_ide_selectproc(ide_drive_t *drive); 408static void pmac_ide_selectproc(ide_drive_t *drive);
414static void pmac_ide_kauai_selectproc(ide_drive_t *drive); 409static void pmac_ide_kauai_selectproc(ide_drive_t *drive);
415 410
416#endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */
417
418#define PMAC_IDE_REG(x) \ 411#define PMAC_IDE_REG(x) \
419 ((void __iomem *)((drive)->hwif->io_ports.data_addr + (x))) 412 ((void __iomem *)((drive)->hwif->io_ports.data_addr + (x)))
420 413
@@ -584,8 +577,6 @@ pmac_ide_set_pio_mode(ide_drive_t *drive, const u8 pio)
584 pmac_ide_do_update_timings(drive); 577 pmac_ide_do_update_timings(drive);
585} 578}
586 579
587#ifdef CONFIG_BLK_DEV_IDEDMA_PMAC
588
589/* 580/*
590 * Calculate KeyLargo ATA/66 UDMA timings 581 * Calculate KeyLargo ATA/66 UDMA timings
591 */ 582 */
@@ -786,7 +777,6 @@ set_timings_mdma(ide_drive_t *drive, int intf_type, u32 *timings, u32 *timings2,
786 drive->name, speed & 0xf, *timings); 777 drive->name, speed & 0xf, *timings);
787#endif 778#endif
788} 779}
789#endif /* #ifdef CONFIG_BLK_DEV_IDEDMA_PMAC */
790 780
791static void pmac_ide_set_dma_mode(ide_drive_t *drive, const u8 speed) 781static void pmac_ide_set_dma_mode(ide_drive_t *drive, const u8 speed)
792{ 782{
@@ -804,7 +794,6 @@ static void pmac_ide_set_dma_mode(ide_drive_t *drive, const u8 speed)
804 tl[0] = *timings; 794 tl[0] = *timings;
805 tl[1] = *timings2; 795 tl[1] = *timings2;
806 796
807#ifdef CONFIG_BLK_DEV_IDEDMA_PMAC
808 if (speed >= XFER_UDMA_0) { 797 if (speed >= XFER_UDMA_0) {
809 if (pmif->kind == controller_kl_ata4) 798 if (pmif->kind == controller_kl_ata4)
810 ret = set_timings_udma_ata4(&tl[0], speed); 799 ret = set_timings_udma_ata4(&tl[0], speed);
@@ -817,7 +806,7 @@ static void pmac_ide_set_dma_mode(ide_drive_t *drive, const u8 speed)
817 ret = -1; 806 ret = -1;
818 } else 807 } else
819 set_timings_mdma(drive, pmif->kind, &tl[0], &tl[1], speed); 808 set_timings_mdma(drive, pmif->kind, &tl[0], &tl[1], speed);
820#endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */ 809
821 if (ret) 810 if (ret)
822 return; 811 return;
823 812
@@ -1008,9 +997,7 @@ static const struct ide_port_info pmac_port_info = {
1008 .chipset = ide_pmac, 997 .chipset = ide_pmac,
1009 .tp_ops = &pmac_tp_ops, 998 .tp_ops = &pmac_tp_ops,
1010 .port_ops = &pmac_ide_port_ops, 999 .port_ops = &pmac_ide_port_ops,
1011#ifdef CONFIG_BLK_DEV_IDEDMA_PMAC
1012 .dma_ops = &pmac_dma_ops, 1000 .dma_ops = &pmac_dma_ops,
1013#endif
1014 .host_flags = IDE_HFLAG_SET_PIO_MODE_KEEP_DMA | 1001 .host_flags = IDE_HFLAG_SET_PIO_MODE_KEEP_DMA |
1015 IDE_HFLAG_POST_SET_MODE | 1002 IDE_HFLAG_POST_SET_MODE |
1016 IDE_HFLAG_MMIO | 1003 IDE_HFLAG_MMIO |
@@ -1182,7 +1169,7 @@ pmac_ide_macio_attach(struct macio_dev *mdev, const struct of_device_id *match)
1182 pmif->regbase = regbase; 1169 pmif->regbase = regbase;
1183 pmif->irq = irq; 1170 pmif->irq = irq;
1184 pmif->kauai_fcr = NULL; 1171 pmif->kauai_fcr = NULL;
1185#ifdef CONFIG_BLK_DEV_IDEDMA_PMAC 1172
1186 if (macio_resource_count(mdev) >= 2) { 1173 if (macio_resource_count(mdev) >= 2) {
1187 if (macio_request_resource(mdev, 1, "ide-pmac (dma)")) 1174 if (macio_request_resource(mdev, 1, "ide-pmac (dma)"))
1188 printk(KERN_WARNING "ide-pmac: can't request DMA " 1175 printk(KERN_WARNING "ide-pmac: can't request DMA "
@@ -1192,7 +1179,7 @@ pmac_ide_macio_attach(struct macio_dev *mdev, const struct of_device_id *match)
1192 pmif->dma_regs = ioremap(macio_resource_start(mdev, 1), 0x1000); 1179 pmif->dma_regs = ioremap(macio_resource_start(mdev, 1), 0x1000);
1193 } else 1180 } else
1194 pmif->dma_regs = NULL; 1181 pmif->dma_regs = NULL;
1195#endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */ 1182
1196 dev_set_drvdata(&mdev->ofdev.dev, pmif); 1183 dev_set_drvdata(&mdev->ofdev.dev, pmif);
1197 1184
1198 memset(&hw, 0, sizeof(hw)); 1185 memset(&hw, 0, sizeof(hw));
@@ -1300,9 +1287,7 @@ pmac_ide_pci_attach(struct pci_dev *pdev, const struct pci_device_id *id)
1300 1287
1301 base = ioremap(rbase, rlen); 1288 base = ioremap(rbase, rlen);
1302 pmif->regbase = (unsigned long) base + 0x2000; 1289 pmif->regbase = (unsigned long) base + 0x2000;
1303#ifdef CONFIG_BLK_DEV_IDEDMA_PMAC
1304 pmif->dma_regs = base + 0x1000; 1290 pmif->dma_regs = base + 0x1000;
1305#endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */
1306 pmif->kauai_fcr = base; 1291 pmif->kauai_fcr = base;
1307 pmif->irq = pdev->irq; 1292 pmif->irq = pdev->irq;
1308 1293
@@ -1434,8 +1419,6 @@ out:
1434 return error; 1419 return error;
1435} 1420}
1436 1421
1437#ifdef CONFIG_BLK_DEV_IDEDMA_PMAC
1438
1439/* 1422/*
1440 * pmac_ide_build_dmatable builds the DBDMA command list 1423 * pmac_ide_build_dmatable builds the DBDMA command list
1441 * for a transfer and sets the DBDMA channel to point to it. 1424 * for a transfer and sets the DBDMA channel to point to it.
@@ -1723,13 +1706,6 @@ static int __devinit pmac_ide_init_dma(ide_hwif_t *hwif,
1723 1706
1724 return 0; 1707 return 0;
1725} 1708}
1726#else
1727static int __devinit pmac_ide_init_dma(ide_hwif_t *hwif,
1728 const struct ide_port_info *d)
1729{
1730 return -EOPNOTSUPP;
1731}
1732#endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */
1733 1709
1734module_init(pmac_ide_probe); 1710module_init(pmac_ide_probe);
1735 1711
diff --git a/drivers/ide/sgiioc4.c b/drivers/ide/sgiioc4.c
index 7defa0ae2014..a687a7dfea6f 100644
--- a/drivers/ide/sgiioc4.c
+++ b/drivers/ide/sgiioc4.c
@@ -550,7 +550,7 @@ static const struct ide_dma_ops sgiioc4_dma_ops = {
550 .dma_timeout = ide_dma_timeout, 550 .dma_timeout = ide_dma_timeout,
551}; 551};
552 552
553static const struct ide_port_info sgiioc4_port_info __devinitdata = { 553static const struct ide_port_info sgiioc4_port_info __devinitconst = {
554 .name = DRV_NAME, 554 .name = DRV_NAME,
555 .chipset = ide_pci, 555 .chipset = ide_pci,
556 .init_dma = ide_dma_sgiioc4, 556 .init_dma = ide_dma_sgiioc4,
@@ -633,7 +633,7 @@ out:
633 return ret; 633 return ret;
634} 634}
635 635
636int 636int __devinit
637ioc4_ide_attach_one(struct ioc4_driver_data *idd) 637ioc4_ide_attach_one(struct ioc4_driver_data *idd)
638{ 638{
639 /* PCI-RT does not bring out IDE connection. 639 /* PCI-RT does not bring out IDE connection.
@@ -645,7 +645,7 @@ ioc4_ide_attach_one(struct ioc4_driver_data *idd)
645 return pci_init_sgiioc4(idd->idd_pdev); 645 return pci_init_sgiioc4(idd->idd_pdev);
646} 646}
647 647
648static struct ioc4_submodule ioc4_ide_submodule = { 648static struct ioc4_submodule __devinitdata ioc4_ide_submodule = {
649 .is_name = "IOC4_ide", 649 .is_name = "IOC4_ide",
650 .is_owner = THIS_MODULE, 650 .is_owner = THIS_MODULE,
651 .is_probe = ioc4_ide_attach_one, 651 .is_probe = ioc4_ide_attach_one,
diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c
index 9e39f73282ee..79ef5fd928ae 100644
--- a/drivers/ieee1394/nodemgr.c
+++ b/drivers/ieee1394/nodemgr.c
@@ -115,8 +115,14 @@ static int nodemgr_bus_read(struct csr1212_csr *csr, u64 addr, u16 length,
115 return error; 115 return error;
116} 116}
117 117
118#define OUI_FREECOM_TECHNOLOGIES_GMBH 0x0001db
119
118static int nodemgr_get_max_rom(quadlet_t *bus_info_data, void *__ci) 120static int nodemgr_get_max_rom(quadlet_t *bus_info_data, void *__ci)
119{ 121{
122 /* Freecom FireWire Hard Drive firmware bug */
123 if (be32_to_cpu(bus_info_data[3]) >> 8 == OUI_FREECOM_TECHNOLOGIES_GMBH)
124 return 0;
125
120 return (be32_to_cpu(bus_info_data[2]) >> 8) & 0x3; 126 return (be32_to_cpu(bus_info_data[2]) >> 8) & 0x3;
121} 127}
122 128
@@ -1685,6 +1691,7 @@ static int nodemgr_host_thread(void *data)
1685 g = get_hpsb_generation(host); 1691 g = get_hpsb_generation(host);
1686 for (i = 0; i < 4 ; i++) { 1692 for (i = 0; i < 4 ; i++) {
1687 msleep_interruptible(63); 1693 msleep_interruptible(63);
1694 try_to_freeze();
1688 if (kthread_should_stop()) 1695 if (kthread_should_stop())
1689 goto exit; 1696 goto exit;
1690 1697
@@ -1725,6 +1732,7 @@ static int nodemgr_host_thread(void *data)
1725 /* Sleep 3 seconds */ 1732 /* Sleep 3 seconds */
1726 for (i = 3000/200; i; i--) { 1733 for (i = 3000/200; i; i--) {
1727 msleep_interruptible(200); 1734 msleep_interruptible(200);
1735 try_to_freeze();
1728 if (kthread_should_stop()) 1736 if (kthread_should_stop())
1729 goto exit; 1737 goto exit;
1730 1738
diff --git a/drivers/isdn/hardware/avm/b1isa.c b/drivers/isdn/hardware/avm/b1isa.c
index 1e288eeb5e2a..6461a32bc838 100644
--- a/drivers/isdn/hardware/avm/b1isa.c
+++ b/drivers/isdn/hardware/avm/b1isa.c
@@ -233,10 +233,8 @@ static void __exit b1isa_exit(void)
233 int i; 233 int i;
234 234
235 for (i = 0; i < MAX_CARDS; i++) { 235 for (i = 0; i < MAX_CARDS; i++) {
236 if (!io[i]) 236 if (isa_dev[i].resource[0].start)
237 break; 237 b1isa_remove(&isa_dev[i]);
238
239 b1isa_remove(&isa_dev[i]);
240 } 238 }
241 unregister_capi_driver(&capi_driver_b1isa); 239 unregister_capi_driver(&capi_driver_b1isa);
242} 240}
diff --git a/drivers/isdn/hysdn/hysdn_net.c b/drivers/isdn/hysdn/hysdn_net.c
index cfa8fa5e44ab..3f2a0a20c19b 100644
--- a/drivers/isdn/hysdn/hysdn_net.c
+++ b/drivers/isdn/hysdn/hysdn_net.c
@@ -83,12 +83,12 @@ net_open(struct net_device *dev)
83 83
84 /* Fill in the MAC-level header (if not already set) */ 84 /* Fill in the MAC-level header (if not already set) */
85 if (!card->mac_addr[0]) { 85 if (!card->mac_addr[0]) {
86 for (i = 0; i < ETH_ALEN - sizeof(unsigned long); i++) 86 for (i = 0; i < ETH_ALEN; i++)
87 dev->dev_addr[i] = 0xfc; 87 dev->dev_addr[i] = 0xfc;
88 if ((in_dev = dev->ip_ptr) != NULL) { 88 if ((in_dev = dev->ip_ptr) != NULL) {
89 struct in_ifaddr *ifa = in_dev->ifa_list; 89 struct in_ifaddr *ifa = in_dev->ifa_list;
90 if (ifa != NULL) 90 if (ifa != NULL)
91 memcpy(dev->dev_addr + (ETH_ALEN - sizeof(unsigned long)), &ifa->ifa_local, sizeof(unsigned long)); 91 memcpy(dev->dev_addr + (ETH_ALEN - sizeof(ifa->ifa_local)), &ifa->ifa_local, sizeof(ifa->ifa_local));
92 } 92 }
93 } else 93 } else
94 memcpy(dev->dev_addr, card->mac_addr, ETH_ALEN); 94 memcpy(dev->dev_addr, card->mac_addr, ETH_ALEN);
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index ac89a5deaca2..ab7c8e4a61f9 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -208,16 +208,19 @@ static void bitmap_checkfree(struct bitmap *bitmap, unsigned long page)
208 */ 208 */
209 209
210/* IO operations when bitmap is stored near all superblocks */ 210/* IO operations when bitmap is stored near all superblocks */
211static struct page *read_sb_page(mddev_t *mddev, long offset, unsigned long index) 211static struct page *read_sb_page(mddev_t *mddev, long offset,
212 struct page *page,
213 unsigned long index, int size)
212{ 214{
213 /* choose a good rdev and read the page from there */ 215 /* choose a good rdev and read the page from there */
214 216
215 mdk_rdev_t *rdev; 217 mdk_rdev_t *rdev;
216 struct list_head *tmp; 218 struct list_head *tmp;
217 struct page *page = alloc_page(GFP_KERNEL);
218 sector_t target; 219 sector_t target;
219 220
220 if (!page) 221 if (!page)
222 page = alloc_page(GFP_KERNEL);
223 if (!page)
221 return ERR_PTR(-ENOMEM); 224 return ERR_PTR(-ENOMEM);
222 225
223 rdev_for_each(rdev, tmp, mddev) { 226 rdev_for_each(rdev, tmp, mddev) {
@@ -227,7 +230,9 @@ static struct page *read_sb_page(mddev_t *mddev, long offset, unsigned long inde
227 230
228 target = rdev->sb_start + offset + index * (PAGE_SIZE/512); 231 target = rdev->sb_start + offset + index * (PAGE_SIZE/512);
229 232
230 if (sync_page_io(rdev->bdev, target, PAGE_SIZE, page, READ)) { 233 if (sync_page_io(rdev->bdev, target,
234 roundup(size, bdev_hardsect_size(rdev->bdev)),
235 page, READ)) {
231 page->index = index; 236 page->index = index;
232 attach_page_buffers(page, NULL); /* so that free_buffer will 237 attach_page_buffers(page, NULL); /* so that free_buffer will
233 * quietly no-op */ 238 * quietly no-op */
@@ -544,7 +549,9 @@ static int bitmap_read_sb(struct bitmap *bitmap)
544 549
545 bitmap->sb_page = read_page(bitmap->file, 0, bitmap, bytes); 550 bitmap->sb_page = read_page(bitmap->file, 0, bitmap, bytes);
546 } else { 551 } else {
547 bitmap->sb_page = read_sb_page(bitmap->mddev, bitmap->offset, 0); 552 bitmap->sb_page = read_sb_page(bitmap->mddev, bitmap->offset,
553 NULL,
554 0, sizeof(bitmap_super_t));
548 } 555 }
549 if (IS_ERR(bitmap->sb_page)) { 556 if (IS_ERR(bitmap->sb_page)) {
550 err = PTR_ERR(bitmap->sb_page); 557 err = PTR_ERR(bitmap->sb_page);
@@ -957,11 +964,16 @@ static int bitmap_init_from_disk(struct bitmap *bitmap, sector_t start)
957 */ 964 */
958 page = bitmap->sb_page; 965 page = bitmap->sb_page;
959 offset = sizeof(bitmap_super_t); 966 offset = sizeof(bitmap_super_t);
967 read_sb_page(bitmap->mddev, bitmap->offset,
968 page,
969 index, count);
960 } else if (file) { 970 } else if (file) {
961 page = read_page(file, index, bitmap, count); 971 page = read_page(file, index, bitmap, count);
962 offset = 0; 972 offset = 0;
963 } else { 973 } else {
964 page = read_sb_page(bitmap->mddev, bitmap->offset, index); 974 page = read_sb_page(bitmap->mddev, bitmap->offset,
975 NULL,
976 index, count);
965 offset = 0; 977 offset = 0;
966 } 978 }
967 if (IS_ERR(page)) { /* read error */ 979 if (IS_ERR(page)) { /* read error */
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index a63161aec487..04e5fd742c2c 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -668,7 +668,7 @@ static void check_for_valid_limits(struct io_restrictions *rs)
668 if (!rs->max_segment_size) 668 if (!rs->max_segment_size)
669 rs->max_segment_size = MAX_SEGMENT_SIZE; 669 rs->max_segment_size = MAX_SEGMENT_SIZE;
670 if (!rs->seg_boundary_mask) 670 if (!rs->seg_boundary_mask)
671 rs->seg_boundary_mask = -1; 671 rs->seg_boundary_mask = BLK_SEG_BOUNDARY_MASK;
672 if (!rs->bounce_pfn) 672 if (!rs->bounce_pfn)
673 rs->bounce_pfn = -1; 673 rs->bounce_pfn = -1;
674} 674}
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index d62fd4f6b52e..ee090413e598 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -2008,6 +2008,9 @@ mptscsih_host_reset(struct scsi_cmnd *SCpnt)
2008 return FAILED; 2008 return FAILED;
2009 } 2009 }
2010 2010
2011 /* make sure we have no outstanding commands at this stage */
2012 mptscsih_flush_running_cmds(hd);
2013
2011 ioc = hd->ioc; 2014 ioc = hd->ioc;
2012 printk(MYIOC_s_INFO_FMT "attempting host reset! (sc=%p)\n", 2015 printk(MYIOC_s_INFO_FMT "attempting host reset! (sc=%p)\n",
2013 ioc->name, SCpnt); 2016 ioc->name, SCpnt);
diff --git a/drivers/message/i2o/i2o_block.c b/drivers/message/i2o/i2o_block.c
index 84bdc2ee69e6..a443e136dc41 100644
--- a/drivers/message/i2o/i2o_block.c
+++ b/drivers/message/i2o/i2o_block.c
@@ -354,7 +354,7 @@ static inline void i2o_block_sglist_free(struct i2o_block_request *ireq)
354 * @req: the request to prepare 354 * @req: the request to prepare
355 * 355 *
356 * Allocate the necessary i2o_block_request struct and connect it to 356 * Allocate the necessary i2o_block_request struct and connect it to
357 * the request. This is needed that we not loose the SG list later on. 357 * the request. This is needed that we not lose the SG list later on.
358 * 358 *
359 * Returns BLKPREP_OK on success or BLKPREP_DEFER on failure. 359 * Returns BLKPREP_OK on success or BLKPREP_DEFER on failure.
360 */ 360 */
diff --git a/drivers/message/i2o/iop.c b/drivers/message/i2o/iop.c
index be2b5926d26c..6e53a30bfd38 100644
--- a/drivers/message/i2o/iop.c
+++ b/drivers/message/i2o/iop.c
@@ -49,7 +49,6 @@ static int i2o_hrt_get(struct i2o_controller *c);
49/** 49/**
50 * i2o_msg_get_wait - obtain an I2O message from the IOP 50 * i2o_msg_get_wait - obtain an I2O message from the IOP
51 * @c: I2O controller 51 * @c: I2O controller
52 * @msg: pointer to a I2O message pointer
53 * @wait: how long to wait until timeout 52 * @wait: how long to wait until timeout
54 * 53 *
55 * This function waits up to wait seconds for a message slot to be 54 * This function waits up to wait seconds for a message slot to be
diff --git a/drivers/misc/sgi-gru/grufault.c b/drivers/misc/sgi-gru/grufault.c
index 8c389d606c30..3ee698ad8599 100644
--- a/drivers/misc/sgi-gru/grufault.c
+++ b/drivers/misc/sgi-gru/grufault.c
@@ -254,7 +254,11 @@ static int atomic_pte_lookup(struct vm_area_struct *vma, unsigned long vaddr,
254 return 1; 254 return 1;
255 255
256 *paddr = pte_pfn(pte) << PAGE_SHIFT; 256 *paddr = pte_pfn(pte) << PAGE_SHIFT;
257#ifdef CONFIG_HUGETLB_PAGE
257 *pageshift = is_vm_hugetlb_page(vma) ? HPAGE_SHIFT : PAGE_SHIFT; 258 *pageshift = is_vm_hugetlb_page(vma) ? HPAGE_SHIFT : PAGE_SHIFT;
259#else
260 *pageshift = PAGE_SHIFT;
261#endif
258 return 0; 262 return 0;
259 263
260err: 264err:
diff --git a/drivers/misc/sgi-gru/grufile.c b/drivers/misc/sgi-gru/grufile.c
index 5c027b6b4e5a..650983806392 100644
--- a/drivers/misc/sgi-gru/grufile.c
+++ b/drivers/misc/sgi-gru/grufile.c
@@ -481,7 +481,7 @@ struct vm_operations_struct gru_vm_ops = {
481 .fault = gru_fault, 481 .fault = gru_fault,
482}; 482};
483 483
484module_init(gru_init); 484fs_initcall(gru_init);
485module_exit(gru_exit); 485module_exit(gru_exit);
486 486
487module_param(gru_options, ulong, 0644); 487module_param(gru_options, ulong, 0644);
diff --git a/drivers/misc/sgi-gru/gruprocfs.c b/drivers/misc/sgi-gru/gruprocfs.c
index 533923f83f1a..73b0ca061bb5 100644
--- a/drivers/misc/sgi-gru/gruprocfs.c
+++ b/drivers/misc/sgi-gru/gruprocfs.c
@@ -317,7 +317,6 @@ int gru_proc_init(void)
317{ 317{
318 struct proc_entry *p; 318 struct proc_entry *p;
319 319
320 proc_mkdir("sgi_uv", NULL);
321 proc_gru = proc_mkdir("sgi_uv/gru", NULL); 320 proc_gru = proc_mkdir("sgi_uv/gru", NULL);
322 321
323 for (p = proc_files; p->name; p++) 322 for (p = proc_files; p->name; p++)
diff --git a/drivers/misc/sgi-xp/xp.h b/drivers/misc/sgi-xp/xp.h
index ed1722e50049..7b4cbd5e03e9 100644
--- a/drivers/misc/sgi-xp/xp.h
+++ b/drivers/misc/sgi-xp/xp.h
@@ -194,9 +194,10 @@ enum xp_retval {
194 xpGruSendMqError, /* 59: gru send message queue related error */ 194 xpGruSendMqError, /* 59: gru send message queue related error */
195 195
196 xpBadChannelNumber, /* 60: invalid channel number */ 196 xpBadChannelNumber, /* 60: invalid channel number */
197 xpBadMsgType, /* 60: invalid message type */ 197 xpBadMsgType, /* 61: invalid message type */
198 xpBiosError, /* 62: BIOS error */
198 199
199 xpUnknownReason /* 61: unknown reason - must be last in enum */ 200 xpUnknownReason /* 63: unknown reason - must be last in enum */
200}; 201};
201 202
202/* 203/*
@@ -345,6 +346,8 @@ extern unsigned long (*xp_pa) (void *);
345extern enum xp_retval (*xp_remote_memcpy) (unsigned long, const unsigned long, 346extern enum xp_retval (*xp_remote_memcpy) (unsigned long, const unsigned long,
346 size_t); 347 size_t);
347extern int (*xp_cpu_to_nasid) (int); 348extern int (*xp_cpu_to_nasid) (int);
349extern enum xp_retval (*xp_expand_memprotect) (unsigned long, unsigned long);
350extern enum xp_retval (*xp_restrict_memprotect) (unsigned long, unsigned long);
348 351
349extern u64 xp_nofault_PIOR_target; 352extern u64 xp_nofault_PIOR_target;
350extern int xp_nofault_PIOR(void *); 353extern int xp_nofault_PIOR(void *);
diff --git a/drivers/misc/sgi-xp/xp_main.c b/drivers/misc/sgi-xp/xp_main.c
index 66a1d19e08ad..9a2e77172d94 100644
--- a/drivers/misc/sgi-xp/xp_main.c
+++ b/drivers/misc/sgi-xp/xp_main.c
@@ -51,6 +51,13 @@ EXPORT_SYMBOL_GPL(xp_remote_memcpy);
51int (*xp_cpu_to_nasid) (int cpuid); 51int (*xp_cpu_to_nasid) (int cpuid);
52EXPORT_SYMBOL_GPL(xp_cpu_to_nasid); 52EXPORT_SYMBOL_GPL(xp_cpu_to_nasid);
53 53
54enum xp_retval (*xp_expand_memprotect) (unsigned long phys_addr,
55 unsigned long size);
56EXPORT_SYMBOL_GPL(xp_expand_memprotect);
57enum xp_retval (*xp_restrict_memprotect) (unsigned long phys_addr,
58 unsigned long size);
59EXPORT_SYMBOL_GPL(xp_restrict_memprotect);
60
54/* 61/*
55 * xpc_registrations[] keeps track of xpc_connect()'s done by the kernel-level 62 * xpc_registrations[] keeps track of xpc_connect()'s done by the kernel-level
56 * users of XPC. 63 * users of XPC.
diff --git a/drivers/misc/sgi-xp/xp_sn2.c b/drivers/misc/sgi-xp/xp_sn2.c
index 1440134caf31..fb3ec9d735a9 100644
--- a/drivers/misc/sgi-xp/xp_sn2.c
+++ b/drivers/misc/sgi-xp/xp_sn2.c
@@ -120,6 +120,38 @@ xp_cpu_to_nasid_sn2(int cpuid)
120 return cpuid_to_nasid(cpuid); 120 return cpuid_to_nasid(cpuid);
121} 121}
122 122
123static enum xp_retval
124xp_expand_memprotect_sn2(unsigned long phys_addr, unsigned long size)
125{
126 u64 nasid_array = 0;
127 int ret;
128
129 ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_1,
130 &nasid_array);
131 if (ret != 0) {
132 dev_err(xp, "sn_change_memprotect(,, "
133 "SN_MEMPROT_ACCESS_CLASS_1,) failed ret=%d\n", ret);
134 return xpSalError;
135 }
136 return xpSuccess;
137}
138
139static enum xp_retval
140xp_restrict_memprotect_sn2(unsigned long phys_addr, unsigned long size)
141{
142 u64 nasid_array = 0;
143 int ret;
144
145 ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_0,
146 &nasid_array);
147 if (ret != 0) {
148 dev_err(xp, "sn_change_memprotect(,, "
149 "SN_MEMPROT_ACCESS_CLASS_0,) failed ret=%d\n", ret);
150 return xpSalError;
151 }
152 return xpSuccess;
153}
154
123enum xp_retval 155enum xp_retval
124xp_init_sn2(void) 156xp_init_sn2(void)
125{ 157{
@@ -132,6 +164,8 @@ xp_init_sn2(void)
132 xp_pa = xp_pa_sn2; 164 xp_pa = xp_pa_sn2;
133 xp_remote_memcpy = xp_remote_memcpy_sn2; 165 xp_remote_memcpy = xp_remote_memcpy_sn2;
134 xp_cpu_to_nasid = xp_cpu_to_nasid_sn2; 166 xp_cpu_to_nasid = xp_cpu_to_nasid_sn2;
167 xp_expand_memprotect = xp_expand_memprotect_sn2;
168 xp_restrict_memprotect = xp_restrict_memprotect_sn2;
135 169
136 return xp_register_nofault_code_sn2(); 170 return xp_register_nofault_code_sn2();
137} 171}
diff --git a/drivers/misc/sgi-xp/xp_uv.c b/drivers/misc/sgi-xp/xp_uv.c
index d9f7ce2510bc..d238576b26fa 100644
--- a/drivers/misc/sgi-xp/xp_uv.c
+++ b/drivers/misc/sgi-xp/xp_uv.c
@@ -15,6 +15,11 @@
15 15
16#include <linux/device.h> 16#include <linux/device.h>
17#include <asm/uv/uv_hub.h> 17#include <asm/uv/uv_hub.h>
18#if defined CONFIG_X86_64
19#include <asm/uv/bios.h>
20#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
21#include <asm/sn/sn_sal.h>
22#endif
18#include "../sgi-gru/grukservices.h" 23#include "../sgi-gru/grukservices.h"
19#include "xp.h" 24#include "xp.h"
20 25
@@ -49,18 +54,79 @@ xp_cpu_to_nasid_uv(int cpuid)
49 return UV_PNODE_TO_NASID(uv_cpu_to_pnode(cpuid)); 54 return UV_PNODE_TO_NASID(uv_cpu_to_pnode(cpuid));
50} 55}
51 56
57static enum xp_retval
58xp_expand_memprotect_uv(unsigned long phys_addr, unsigned long size)
59{
60 int ret;
61
62#if defined CONFIG_X86_64
63 ret = uv_bios_change_memprotect(phys_addr, size, UV_MEMPROT_ALLOW_RW);
64 if (ret != BIOS_STATUS_SUCCESS) {
65 dev_err(xp, "uv_bios_change_memprotect(,, "
66 "UV_MEMPROT_ALLOW_RW) failed, ret=%d\n", ret);
67 return xpBiosError;
68 }
69
70#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
71 u64 nasid_array;
72
73 ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_1,
74 &nasid_array);
75 if (ret != 0) {
76 dev_err(xp, "sn_change_memprotect(,, "
77 "SN_MEMPROT_ACCESS_CLASS_1,) failed ret=%d\n", ret);
78 return xpSalError;
79 }
80#else
81 #error not a supported configuration
82#endif
83 return xpSuccess;
84}
85
86static enum xp_retval
87xp_restrict_memprotect_uv(unsigned long phys_addr, unsigned long size)
88{
89 int ret;
90
91#if defined CONFIG_X86_64
92 ret = uv_bios_change_memprotect(phys_addr, size,
93 UV_MEMPROT_RESTRICT_ACCESS);
94 if (ret != BIOS_STATUS_SUCCESS) {
95 dev_err(xp, "uv_bios_change_memprotect(,, "
96 "UV_MEMPROT_RESTRICT_ACCESS) failed, ret=%d\n", ret);
97 return xpBiosError;
98 }
99
100#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
101 u64 nasid_array;
102
103 ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_0,
104 &nasid_array);
105 if (ret != 0) {
106 dev_err(xp, "sn_change_memprotect(,, "
107 "SN_MEMPROT_ACCESS_CLASS_0,) failed ret=%d\n", ret);
108 return xpSalError;
109 }
110#else
111 #error not a supported configuration
112#endif
113 return xpSuccess;
114}
115
52enum xp_retval 116enum xp_retval
53xp_init_uv(void) 117xp_init_uv(void)
54{ 118{
55 BUG_ON(!is_uv()); 119 BUG_ON(!is_uv());
56 120
57 xp_max_npartitions = XP_MAX_NPARTITIONS_UV; 121 xp_max_npartitions = XP_MAX_NPARTITIONS_UV;
58 xp_partition_id = 0; /* !!! not correct value */ 122 xp_partition_id = sn_partition_id;
59 xp_region_size = 0; /* !!! not correct value */ 123 xp_region_size = sn_region_size;
60 124
61 xp_pa = xp_pa_uv; 125 xp_pa = xp_pa_uv;
62 xp_remote_memcpy = xp_remote_memcpy_uv; 126 xp_remote_memcpy = xp_remote_memcpy_uv;
63 xp_cpu_to_nasid = xp_cpu_to_nasid_uv; 127 xp_cpu_to_nasid = xp_cpu_to_nasid_uv;
128 xp_expand_memprotect = xp_expand_memprotect_uv;
129 xp_restrict_memprotect = xp_restrict_memprotect_uv;
64 130
65 return xpSuccess; 131 return xpSuccess;
66} 132}
diff --git a/drivers/misc/sgi-xp/xpc.h b/drivers/misc/sgi-xp/xpc.h
index 619208d61862..a5bd658c2e83 100644
--- a/drivers/misc/sgi-xp/xpc.h
+++ b/drivers/misc/sgi-xp/xpc.h
@@ -181,6 +181,18 @@ struct xpc_vars_part_sn2 {
181 xpc_nasid_mask_nlongs)) 181 xpc_nasid_mask_nlongs))
182 182
183/* 183/*
184 * Info pertinent to a GRU message queue using a watch list for irq generation.
185 */
186struct xpc_gru_mq_uv {
187 void *address; /* address of GRU message queue */
188 unsigned int order; /* size of GRU message queue as a power of 2 */
189 int irq; /* irq raised when message is received in mq */
190 int mmr_blade; /* blade where watchlist was allocated from */
191 unsigned long mmr_offset; /* offset of irq mmr located on mmr_blade */
192 int watchlist_num; /* number of watchlist allocatd by BIOS */
193};
194
195/*
184 * The activate_mq is used to send/receive GRU messages that affect XPC's 196 * The activate_mq is used to send/receive GRU messages that affect XPC's
185 * heartbeat, partition active state, and channel state. This is UV only. 197 * heartbeat, partition active state, and channel state. This is UV only.
186 */ 198 */
diff --git a/drivers/misc/sgi-xp/xpc_sn2.c b/drivers/misc/sgi-xp/xpc_sn2.c
index b4882ccf6344..73b7fb8de47a 100644
--- a/drivers/misc/sgi-xp/xpc_sn2.c
+++ b/drivers/misc/sgi-xp/xpc_sn2.c
@@ -553,22 +553,17 @@ static u64 xpc_prot_vec_sn2[MAX_NUMNODES];
553static enum xp_retval 553static enum xp_retval
554xpc_allow_amo_ops_sn2(struct amo *amos_page) 554xpc_allow_amo_ops_sn2(struct amo *amos_page)
555{ 555{
556 u64 nasid_array = 0; 556 enum xp_retval ret = xpSuccess;
557 int ret;
558 557
559 /* 558 /*
560 * On SHUB 1.1, we cannot call sn_change_memprotect() since the BIST 559 * On SHUB 1.1, we cannot call sn_change_memprotect() since the BIST
561 * collides with memory operations. On those systems we call 560 * collides with memory operations. On those systems we call
562 * xpc_allow_amo_ops_shub_wars_1_1_sn2() instead. 561 * xpc_allow_amo_ops_shub_wars_1_1_sn2() instead.
563 */ 562 */
564 if (!enable_shub_wars_1_1()) { 563 if (!enable_shub_wars_1_1())
565 ret = sn_change_memprotect(ia64_tpa((u64)amos_page), PAGE_SIZE, 564 ret = xp_expand_memprotect(ia64_tpa((u64)amos_page), PAGE_SIZE);
566 SN_MEMPROT_ACCESS_CLASS_1, 565
567 &nasid_array); 566 return ret;
568 if (ret != 0)
569 return xpSalError;
570 }
571 return xpSuccess;
572} 567}
573 568
574/* 569/*
diff --git a/drivers/misc/sgi-xp/xpc_uv.c b/drivers/misc/sgi-xp/xpc_uv.c
index 1ac694c01623..91a55b1b1037 100644
--- a/drivers/misc/sgi-xp/xpc_uv.c
+++ b/drivers/misc/sgi-xp/xpc_uv.c
@@ -18,7 +18,15 @@
18#include <linux/interrupt.h> 18#include <linux/interrupt.h>
19#include <linux/delay.h> 19#include <linux/delay.h>
20#include <linux/device.h> 20#include <linux/device.h>
21#include <linux/err.h>
21#include <asm/uv/uv_hub.h> 22#include <asm/uv/uv_hub.h>
23#if defined CONFIG_X86_64
24#include <asm/uv/bios.h>
25#include <asm/uv/uv_irq.h>
26#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
27#include <asm/sn/intr.h>
28#include <asm/sn/sn_sal.h>
29#endif
22#include "../sgi-gru/gru.h" 30#include "../sgi-gru/gru.h"
23#include "../sgi-gru/grukservices.h" 31#include "../sgi-gru/grukservices.h"
24#include "xpc.h" 32#include "xpc.h"
@@ -27,15 +35,17 @@ static atomic64_t xpc_heartbeat_uv;
27static DECLARE_BITMAP(xpc_heartbeating_to_mask_uv, XP_MAX_NPARTITIONS_UV); 35static DECLARE_BITMAP(xpc_heartbeating_to_mask_uv, XP_MAX_NPARTITIONS_UV);
28 36
29#define XPC_ACTIVATE_MSG_SIZE_UV (1 * GRU_CACHE_LINE_BYTES) 37#define XPC_ACTIVATE_MSG_SIZE_UV (1 * GRU_CACHE_LINE_BYTES)
30#define XPC_NOTIFY_MSG_SIZE_UV (2 * GRU_CACHE_LINE_BYTES) 38#define XPC_ACTIVATE_MQ_SIZE_UV (4 * XP_MAX_NPARTITIONS_UV * \
39 XPC_ACTIVATE_MSG_SIZE_UV)
40#define XPC_ACTIVATE_IRQ_NAME "xpc_activate"
31 41
32#define XPC_ACTIVATE_MQ_SIZE_UV (4 * XP_MAX_NPARTITIONS_UV * \ 42#define XPC_NOTIFY_MSG_SIZE_UV (2 * GRU_CACHE_LINE_BYTES)
33 XPC_ACTIVATE_MSG_SIZE_UV) 43#define XPC_NOTIFY_MQ_SIZE_UV (4 * XP_MAX_NPARTITIONS_UV * \
34#define XPC_NOTIFY_MQ_SIZE_UV (4 * XP_MAX_NPARTITIONS_UV * \ 44 XPC_NOTIFY_MSG_SIZE_UV)
35 XPC_NOTIFY_MSG_SIZE_UV) 45#define XPC_NOTIFY_IRQ_NAME "xpc_notify"
36 46
37static void *xpc_activate_mq_uv; 47static struct xpc_gru_mq_uv *xpc_activate_mq_uv;
38static void *xpc_notify_mq_uv; 48static struct xpc_gru_mq_uv *xpc_notify_mq_uv;
39 49
40static int 50static int
41xpc_setup_partitions_sn_uv(void) 51xpc_setup_partitions_sn_uv(void)
@@ -52,62 +62,209 @@ xpc_setup_partitions_sn_uv(void)
52 return 0; 62 return 0;
53} 63}
54 64
55static void * 65static int
56xpc_create_gru_mq_uv(unsigned int mq_size, int cpuid, unsigned int irq, 66xpc_get_gru_mq_irq_uv(struct xpc_gru_mq_uv *mq, int cpu, char *irq_name)
67{
68#if defined CONFIG_X86_64
69 mq->irq = uv_setup_irq(irq_name, cpu, mq->mmr_blade, mq->mmr_offset);
70 if (mq->irq < 0) {
71 dev_err(xpc_part, "uv_setup_irq() returned error=%d\n",
72 mq->irq);
73 }
74
75#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
76 int mmr_pnode;
77 unsigned long mmr_value;
78
79 if (strcmp(irq_name, XPC_ACTIVATE_IRQ_NAME) == 0)
80 mq->irq = SGI_XPC_ACTIVATE;
81 else if (strcmp(irq_name, XPC_NOTIFY_IRQ_NAME) == 0)
82 mq->irq = SGI_XPC_NOTIFY;
83 else
84 return -EINVAL;
85
86 mmr_pnode = uv_blade_to_pnode(mq->mmr_blade);
87 mmr_value = (unsigned long)cpu_physical_id(cpu) << 32 | mq->irq;
88
89 uv_write_global_mmr64(mmr_pnode, mq->mmr_offset, mmr_value);
90#else
91 #error not a supported configuration
92#endif
93
94 return 0;
95}
96
97static void
98xpc_release_gru_mq_irq_uv(struct xpc_gru_mq_uv *mq)
99{
100#if defined CONFIG_X86_64
101 uv_teardown_irq(mq->irq, mq->mmr_blade, mq->mmr_offset);
102
103#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
104 int mmr_pnode;
105 unsigned long mmr_value;
106
107 mmr_pnode = uv_blade_to_pnode(mq->mmr_blade);
108 mmr_value = 1UL << 16;
109
110 uv_write_global_mmr64(mmr_pnode, mq->mmr_offset, mmr_value);
111#else
112 #error not a supported configuration
113#endif
114}
115
116static int
117xpc_gru_mq_watchlist_alloc_uv(struct xpc_gru_mq_uv *mq)
118{
119 int ret;
120
121#if defined CONFIG_X86_64
122 ret = uv_bios_mq_watchlist_alloc(mq->mmr_blade, uv_gpa(mq->address),
123 mq->order, &mq->mmr_offset);
124 if (ret < 0) {
125 dev_err(xpc_part, "uv_bios_mq_watchlist_alloc() failed, "
126 "ret=%d\n", ret);
127 return ret;
128 }
129#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
130 ret = sn_mq_watchlist_alloc(mq->mmr_blade, uv_gpa(mq->address),
131 mq->order, &mq->mmr_offset);
132 if (ret < 0) {
133 dev_err(xpc_part, "sn_mq_watchlist_alloc() failed, ret=%d\n",
134 ret);
135 return -EBUSY;
136 }
137#else
138 #error not a supported configuration
139#endif
140
141 mq->watchlist_num = ret;
142 return 0;
143}
144
145static void
146xpc_gru_mq_watchlist_free_uv(struct xpc_gru_mq_uv *mq)
147{
148 int ret;
149
150#if defined CONFIG_X86_64
151 ret = uv_bios_mq_watchlist_free(mq->mmr_blade, mq->watchlist_num);
152 BUG_ON(ret != BIOS_STATUS_SUCCESS);
153#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
154 ret = sn_mq_watchlist_free(mq->mmr_blade, mq->watchlist_num);
155 BUG_ON(ret != SALRET_OK);
156#else
157 #error not a supported configuration
158#endif
159}
160
161static struct xpc_gru_mq_uv *
162xpc_create_gru_mq_uv(unsigned int mq_size, int cpu, char *irq_name,
57 irq_handler_t irq_handler) 163 irq_handler_t irq_handler)
58{ 164{
165 enum xp_retval xp_ret;
59 int ret; 166 int ret;
60 int nid; 167 int nid;
61 int mq_order; 168 int pg_order;
62 struct page *page; 169 struct page *page;
63 void *mq; 170 struct xpc_gru_mq_uv *mq;
171
172 mq = kmalloc(sizeof(struct xpc_gru_mq_uv), GFP_KERNEL);
173 if (mq == NULL) {
174 dev_err(xpc_part, "xpc_create_gru_mq_uv() failed to kmalloc() "
175 "a xpc_gru_mq_uv structure\n");
176 ret = -ENOMEM;
177 goto out_1;
178 }
179
180 pg_order = get_order(mq_size);
181 mq->order = pg_order + PAGE_SHIFT;
182 mq_size = 1UL << mq->order;
183
184 mq->mmr_blade = uv_cpu_to_blade_id(cpu);
64 185
65 nid = cpu_to_node(cpuid); 186 nid = cpu_to_node(cpu);
66 mq_order = get_order(mq_size);
67 page = alloc_pages_node(nid, GFP_KERNEL | __GFP_ZERO | GFP_THISNODE, 187 page = alloc_pages_node(nid, GFP_KERNEL | __GFP_ZERO | GFP_THISNODE,
68 mq_order); 188 pg_order);
69 if (page == NULL) { 189 if (page == NULL) {
70 dev_err(xpc_part, "xpc_create_gru_mq_uv() failed to alloc %d " 190 dev_err(xpc_part, "xpc_create_gru_mq_uv() failed to alloc %d "
71 "bytes of memory on nid=%d for GRU mq\n", mq_size, nid); 191 "bytes of memory on nid=%d for GRU mq\n", mq_size, nid);
72 return NULL; 192 ret = -ENOMEM;
193 goto out_2;
73 } 194 }
195 mq->address = page_address(page);
74 196
75 mq = page_address(page); 197 ret = gru_create_message_queue(mq->address, mq_size);
76 ret = gru_create_message_queue(mq, mq_size);
77 if (ret != 0) { 198 if (ret != 0) {
78 dev_err(xpc_part, "gru_create_message_queue() returned " 199 dev_err(xpc_part, "gru_create_message_queue() returned "
79 "error=%d\n", ret); 200 "error=%d\n", ret);
80 free_pages((unsigned long)mq, mq_order); 201 ret = -EINVAL;
81 return NULL; 202 goto out_3;
82 } 203 }
83 204
84 /* !!! Need to do some other things to set up IRQ */ 205 /* enable generation of irq when GRU mq operation occurs to this mq */
206 ret = xpc_gru_mq_watchlist_alloc_uv(mq);
207 if (ret != 0)
208 goto out_3;
85 209
86 ret = request_irq(irq, irq_handler, 0, "xpc", NULL); 210 ret = xpc_get_gru_mq_irq_uv(mq, cpu, irq_name);
211 if (ret != 0)
212 goto out_4;
213
214 ret = request_irq(mq->irq, irq_handler, 0, irq_name, NULL);
87 if (ret != 0) { 215 if (ret != 0) {
88 dev_err(xpc_part, "request_irq(irq=%d) returned error=%d\n", 216 dev_err(xpc_part, "request_irq(irq=%d) returned error=%d\n",
89 irq, ret); 217 mq->irq, ret);
90 free_pages((unsigned long)mq, mq_order); 218 goto out_5;
91 return NULL;
92 } 219 }
93 220
94 /* !!! enable generation of irq when GRU mq op occurs to this mq */ 221 /* allow other partitions to access this GRU mq */
95 222 xp_ret = xp_expand_memprotect(xp_pa(mq->address), mq_size);
96 /* ??? allow other partitions to access GRU mq? */ 223 if (xp_ret != xpSuccess) {
224 ret = -EACCES;
225 goto out_6;
226 }
97 227
98 return mq; 228 return mq;
229
230 /* something went wrong */
231out_6:
232 free_irq(mq->irq, NULL);
233out_5:
234 xpc_release_gru_mq_irq_uv(mq);
235out_4:
236 xpc_gru_mq_watchlist_free_uv(mq);
237out_3:
238 free_pages((unsigned long)mq->address, pg_order);
239out_2:
240 kfree(mq);
241out_1:
242 return ERR_PTR(ret);
99} 243}
100 244
101static void 245static void
102xpc_destroy_gru_mq_uv(void *mq, unsigned int mq_size, unsigned int irq) 246xpc_destroy_gru_mq_uv(struct xpc_gru_mq_uv *mq)
103{ 247{
104 /* ??? disallow other partitions to access GRU mq? */ 248 unsigned int mq_size;
249 int pg_order;
250 int ret;
251
252 /* disallow other partitions to access GRU mq */
253 mq_size = 1UL << mq->order;
254 ret = xp_restrict_memprotect(xp_pa(mq->address), mq_size);
255 BUG_ON(ret != xpSuccess);
105 256
106 /* !!! disable generation of irq when GRU mq op occurs to this mq */ 257 /* unregister irq handler and release mq irq/vector mapping */
258 free_irq(mq->irq, NULL);
259 xpc_release_gru_mq_irq_uv(mq);
107 260
108 free_irq(irq, NULL); 261 /* disable generation of irq when GRU mq op occurs to this mq */
262 xpc_gru_mq_watchlist_free_uv(mq);
109 263
110 free_pages((unsigned long)mq, get_order(mq_size)); 264 pg_order = mq->order - PAGE_SHIFT;
265 free_pages((unsigned long)mq->address, pg_order);
266
267 kfree(mq);
111} 268}
112 269
113static enum xp_retval 270static enum xp_retval
@@ -402,7 +559,10 @@ xpc_handle_activate_IRQ_uv(int irq, void *dev_id)
402 struct xpc_partition *part; 559 struct xpc_partition *part;
403 int wakeup_hb_checker = 0; 560 int wakeup_hb_checker = 0;
404 561
405 while ((msg_hdr = gru_get_next_message(xpc_activate_mq_uv)) != NULL) { 562 while (1) {
563 msg_hdr = gru_get_next_message(xpc_activate_mq_uv->address);
564 if (msg_hdr == NULL)
565 break;
406 566
407 partid = msg_hdr->partid; 567 partid = msg_hdr->partid;
408 if (partid < 0 || partid >= XP_MAX_NPARTITIONS_UV) { 568 if (partid < 0 || partid >= XP_MAX_NPARTITIONS_UV) {
@@ -418,7 +578,7 @@ xpc_handle_activate_IRQ_uv(int irq, void *dev_id)
418 } 578 }
419 } 579 }
420 580
421 gru_free_message(xpc_activate_mq_uv, msg_hdr); 581 gru_free_message(xpc_activate_mq_uv->address, msg_hdr);
422 } 582 }
423 583
424 if (wakeup_hb_checker) 584 if (wakeup_hb_checker)
@@ -482,7 +642,7 @@ xpc_send_local_activate_IRQ_uv(struct xpc_partition *part, int act_state_req)
482 struct xpc_partition_uv *part_uv = &part->sn.uv; 642 struct xpc_partition_uv *part_uv = &part->sn.uv;
483 643
484 /* 644 /*
485 * !!! Make our side think that the remote parition sent an activate 645 * !!! Make our side think that the remote partition sent an activate
486 * !!! message our way by doing what the activate IRQ handler would 646 * !!! message our way by doing what the activate IRQ handler would
487 * !!! do had one really been sent. 647 * !!! do had one really been sent.
488 */ 648 */
@@ -500,14 +660,39 @@ static enum xp_retval
500xpc_get_partition_rsvd_page_pa_uv(void *buf, u64 *cookie, unsigned long *rp_pa, 660xpc_get_partition_rsvd_page_pa_uv(void *buf, u64 *cookie, unsigned long *rp_pa,
501 size_t *len) 661 size_t *len)
502{ 662{
503 /* !!! call the UV version of sn_partition_reserved_page_pa() */ 663 s64 status;
504 return xpUnsupported; 664 enum xp_retval ret;
665
666#if defined CONFIG_X86_64
667 status = uv_bios_reserved_page_pa((u64)buf, cookie, (u64 *)rp_pa,
668 (u64 *)len);
669 if (status == BIOS_STATUS_SUCCESS)
670 ret = xpSuccess;
671 else if (status == BIOS_STATUS_MORE_PASSES)
672 ret = xpNeedMoreInfo;
673 else
674 ret = xpBiosError;
675
676#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
677 status = sn_partition_reserved_page_pa((u64)buf, cookie, rp_pa, len);
678 if (status == SALRET_OK)
679 ret = xpSuccess;
680 else if (status == SALRET_MORE_PASSES)
681 ret = xpNeedMoreInfo;
682 else
683 ret = xpSalError;
684
685#else
686 #error not a supported configuration
687#endif
688
689 return ret;
505} 690}
506 691
507static int 692static int
508xpc_setup_rsvd_page_sn_uv(struct xpc_rsvd_page *rp) 693xpc_setup_rsvd_page_sn_uv(struct xpc_rsvd_page *rp)
509{ 694{
510 rp->sn.activate_mq_gpa = uv_gpa(xpc_activate_mq_uv); 695 rp->sn.activate_mq_gpa = uv_gpa(xpc_activate_mq_uv->address);
511 return 0; 696 return 0;
512} 697}
513 698
@@ -1411,22 +1596,18 @@ xpc_init_uv(void)
1411 return -E2BIG; 1596 return -E2BIG;
1412 } 1597 }
1413 1598
1414 /* ??? The cpuid argument's value is 0, is that what we want? */ 1599 xpc_activate_mq_uv = xpc_create_gru_mq_uv(XPC_ACTIVATE_MQ_SIZE_UV, 0,
1415 /* !!! The irq argument's value isn't correct. */ 1600 XPC_ACTIVATE_IRQ_NAME,
1416 xpc_activate_mq_uv = xpc_create_gru_mq_uv(XPC_ACTIVATE_MQ_SIZE_UV, 0, 0,
1417 xpc_handle_activate_IRQ_uv); 1601 xpc_handle_activate_IRQ_uv);
1418 if (xpc_activate_mq_uv == NULL) 1602 if (IS_ERR(xpc_activate_mq_uv))
1419 return -ENOMEM; 1603 return PTR_ERR(xpc_activate_mq_uv);
1420 1604
1421 /* ??? The cpuid argument's value is 0, is that what we want? */ 1605 xpc_notify_mq_uv = xpc_create_gru_mq_uv(XPC_NOTIFY_MQ_SIZE_UV, 0,
1422 /* !!! The irq argument's value isn't correct. */ 1606 XPC_NOTIFY_IRQ_NAME,
1423 xpc_notify_mq_uv = xpc_create_gru_mq_uv(XPC_NOTIFY_MQ_SIZE_UV, 0, 0,
1424 xpc_handle_notify_IRQ_uv); 1607 xpc_handle_notify_IRQ_uv);
1425 if (xpc_notify_mq_uv == NULL) { 1608 if (IS_ERR(xpc_notify_mq_uv)) {
1426 /* !!! The irq argument's value isn't correct. */ 1609 xpc_destroy_gru_mq_uv(xpc_activate_mq_uv);
1427 xpc_destroy_gru_mq_uv(xpc_activate_mq_uv, 1610 return PTR_ERR(xpc_notify_mq_uv);
1428 XPC_ACTIVATE_MQ_SIZE_UV, 0);
1429 return -ENOMEM;
1430 } 1611 }
1431 1612
1432 return 0; 1613 return 0;
@@ -1435,9 +1616,6 @@ xpc_init_uv(void)
1435void 1616void
1436xpc_exit_uv(void) 1617xpc_exit_uv(void)
1437{ 1618{
1438 /* !!! The irq argument's value isn't correct. */ 1619 xpc_destroy_gru_mq_uv(xpc_notify_mq_uv);
1439 xpc_destroy_gru_mq_uv(xpc_notify_mq_uv, XPC_NOTIFY_MQ_SIZE_UV, 0); 1620 xpc_destroy_gru_mq_uv(xpc_activate_mq_uv);
1440
1441 /* !!! The irq argument's value isn't correct. */
1442 xpc_destroy_gru_mq_uv(xpc_activate_mq_uv, XPC_ACTIVATE_MQ_SIZE_UV, 0);
1443} 1621}
diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
index 76a76751da36..6659b2275c0c 100644
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
@@ -37,9 +37,9 @@
37#define OPCODE_NORM_READ 0x03 /* Read data bytes (low frequency) */ 37#define OPCODE_NORM_READ 0x03 /* Read data bytes (low frequency) */
38#define OPCODE_FAST_READ 0x0b /* Read data bytes (high frequency) */ 38#define OPCODE_FAST_READ 0x0b /* Read data bytes (high frequency) */
39#define OPCODE_PP 0x02 /* Page program (up to 256 bytes) */ 39#define OPCODE_PP 0x02 /* Page program (up to 256 bytes) */
40#define OPCODE_BE_4K 0x20 /* Erase 4KiB block */ 40#define OPCODE_BE_4K 0x20 /* Erase 4KiB block */
41#define OPCODE_BE_32K 0x52 /* Erase 32KiB block */ 41#define OPCODE_BE_32K 0x52 /* Erase 32KiB block */
42#define OPCODE_BE 0xc7 /* Erase whole flash block */ 42#define OPCODE_CHIP_ERASE 0xc7 /* Erase whole flash chip */
43#define OPCODE_SE 0xd8 /* Sector erase (usually 64KiB) */ 43#define OPCODE_SE 0xd8 /* Sector erase (usually 64KiB) */
44#define OPCODE_RDID 0x9f /* Read JEDEC ID */ 44#define OPCODE_RDID 0x9f /* Read JEDEC ID */
45 45
@@ -167,7 +167,7 @@ static int wait_till_ready(struct m25p *flash)
167 * 167 *
168 * Returns 0 if successful, non-zero otherwise. 168 * Returns 0 if successful, non-zero otherwise.
169 */ 169 */
170static int erase_block(struct m25p *flash) 170static int erase_chip(struct m25p *flash)
171{ 171{
172 DEBUG(MTD_DEBUG_LEVEL3, "%s: %s %dKiB\n", 172 DEBUG(MTD_DEBUG_LEVEL3, "%s: %s %dKiB\n",
173 flash->spi->dev.bus_id, __func__, 173 flash->spi->dev.bus_id, __func__,
@@ -181,7 +181,7 @@ static int erase_block(struct m25p *flash)
181 write_enable(flash); 181 write_enable(flash);
182 182
183 /* Set up command buffer. */ 183 /* Set up command buffer. */
184 flash->command[0] = OPCODE_BE; 184 flash->command[0] = OPCODE_CHIP_ERASE;
185 185
186 spi_write(flash->spi, flash->command, 1); 186 spi_write(flash->spi, flash->command, 1);
187 187
@@ -250,15 +250,18 @@ static int m25p80_erase(struct mtd_info *mtd, struct erase_info *instr)
250 250
251 mutex_lock(&flash->lock); 251 mutex_lock(&flash->lock);
252 252
253 /* REVISIT in some cases we could speed up erasing large regions 253 /* whole-chip erase? */
254 * by using OPCODE_SE instead of OPCODE_BE_4K 254 if (len == flash->mtd.size && erase_chip(flash)) {
255 */
256
257 /* now erase those sectors */
258 if (len == flash->mtd.size && erase_block(flash)) {
259 instr->state = MTD_ERASE_FAILED; 255 instr->state = MTD_ERASE_FAILED;
260 mutex_unlock(&flash->lock); 256 mutex_unlock(&flash->lock);
261 return -EIO; 257 return -EIO;
258
259 /* REVISIT in some cases we could speed up erasing large regions
260 * by using OPCODE_SE instead of OPCODE_BE_4K. We may have set up
261 * to use "small sector erase", but that's not always optimal.
262 */
263
264 /* "sector"-at-a-time erase */
262 } else { 265 } else {
263 while (len) { 266 while (len) {
264 if (erase_sector(flash, addr)) { 267 if (erase_sector(flash, addr)) {
@@ -574,10 +577,11 @@ static struct flash_info *__devinit jedec_probe(struct spi_device *spi)
574 for (tmp = 0, info = m25p_data; 577 for (tmp = 0, info = m25p_data;
575 tmp < ARRAY_SIZE(m25p_data); 578 tmp < ARRAY_SIZE(m25p_data);
576 tmp++, info++) { 579 tmp++, info++) {
577 if (info->jedec_id == jedec) 580 if (info->jedec_id == jedec) {
578 if (ext_jedec != 0 && info->ext_id != ext_jedec) 581 if (info->ext_id != 0 && info->ext_id != ext_jedec)
579 continue; 582 continue;
580 return info; 583 return info;
584 }
581 } 585 }
582 dev_err(&spi->dev, "unrecognized JEDEC id %06x\n", jedec); 586 dev_err(&spi->dev, "unrecognized JEDEC id %06x\n", jedec);
583 return NULL; 587 return NULL;
diff --git a/drivers/mtd/maps/physmap.c b/drivers/mtd/maps/physmap.c
index 42d844f8f6bf..dfbf3f270cea 100644
--- a/drivers/mtd/maps/physmap.c
+++ b/drivers/mtd/maps/physmap.c
@@ -19,7 +19,7 @@
19#include <linux/mtd/partitions.h> 19#include <linux/mtd/partitions.h>
20#include <linux/mtd/physmap.h> 20#include <linux/mtd/physmap.h>
21#include <linux/mtd/concat.h> 21#include <linux/mtd/concat.h>
22#include <asm/io.h> 22#include <linux/io.h>
23 23
24#define MAX_RESOURCES 4 24#define MAX_RESOURCES 4
25 25
@@ -27,7 +27,6 @@ struct physmap_flash_info {
27 struct mtd_info *mtd[MAX_RESOURCES]; 27 struct mtd_info *mtd[MAX_RESOURCES];
28 struct mtd_info *cmtd; 28 struct mtd_info *cmtd;
29 struct map_info map[MAX_RESOURCES]; 29 struct map_info map[MAX_RESOURCES];
30 struct resource *res;
31#ifdef CONFIG_MTD_PARTITIONS 30#ifdef CONFIG_MTD_PARTITIONS
32 int nr_parts; 31 int nr_parts;
33 struct mtd_partition *parts; 32 struct mtd_partition *parts;
@@ -70,16 +69,7 @@ static int physmap_flash_remove(struct platform_device *dev)
70#endif 69#endif
71 map_destroy(info->mtd[i]); 70 map_destroy(info->mtd[i]);
72 } 71 }
73
74 if (info->map[i].virt != NULL)
75 iounmap(info->map[i].virt);
76 }
77
78 if (info->res != NULL) {
79 release_resource(info->res);
80 kfree(info->res);
81 } 72 }
82
83 return 0; 73 return 0;
84} 74}
85 75
@@ -101,7 +91,8 @@ static int physmap_flash_probe(struct platform_device *dev)
101 if (physmap_data == NULL) 91 if (physmap_data == NULL)
102 return -ENODEV; 92 return -ENODEV;
103 93
104 info = kzalloc(sizeof(struct physmap_flash_info), GFP_KERNEL); 94 info = devm_kzalloc(&dev->dev, sizeof(struct physmap_flash_info),
95 GFP_KERNEL);
105 if (info == NULL) { 96 if (info == NULL) {
106 err = -ENOMEM; 97 err = -ENOMEM;
107 goto err_out; 98 goto err_out;
@@ -114,10 +105,10 @@ static int physmap_flash_probe(struct platform_device *dev)
114 (unsigned long long)(dev->resource[i].end - dev->resource[i].start + 1), 105 (unsigned long long)(dev->resource[i].end - dev->resource[i].start + 1),
115 (unsigned long long)dev->resource[i].start); 106 (unsigned long long)dev->resource[i].start);
116 107
117 info->res = request_mem_region(dev->resource[i].start, 108 if (!devm_request_mem_region(&dev->dev,
118 dev->resource[i].end - dev->resource[i].start + 1, 109 dev->resource[i].start,
119 dev->dev.bus_id); 110 dev->resource[i].end - dev->resource[i].start + 1,
120 if (info->res == NULL) { 111 dev->dev.bus_id)) {
121 dev_err(&dev->dev, "Could not reserve memory region\n"); 112 dev_err(&dev->dev, "Could not reserve memory region\n");
122 err = -ENOMEM; 113 err = -ENOMEM;
123 goto err_out; 114 goto err_out;
@@ -129,7 +120,8 @@ static int physmap_flash_probe(struct platform_device *dev)
129 info->map[i].bankwidth = physmap_data->width; 120 info->map[i].bankwidth = physmap_data->width;
130 info->map[i].set_vpp = physmap_data->set_vpp; 121 info->map[i].set_vpp = physmap_data->set_vpp;
131 122
132 info->map[i].virt = ioremap(info->map[i].phys, info->map[i].size); 123 info->map[i].virt = devm_ioremap(&dev->dev, info->map[i].phys,
124 info->map[i].size);
133 if (info->map[i].virt == NULL) { 125 if (info->map[i].virt == NULL) {
134 dev_err(&dev->dev, "Failed to ioremap flash region\n"); 126 dev_err(&dev->dev, "Failed to ioremap flash region\n");
135 err = EIO; 127 err = EIO;
diff --git a/drivers/mtd/nand/fsl_upm.c b/drivers/mtd/nand/fsl_upm.c
index 024e3fffd4bb..a83192f80eba 100644
--- a/drivers/mtd/nand/fsl_upm.c
+++ b/drivers/mtd/nand/fsl_upm.c
@@ -163,9 +163,11 @@ static int __devinit fun_chip_init(struct fsl_upm_nand *fun,
163 ret = parse_mtd_partitions(&fun->mtd, part_types, &fun->parts, 0); 163 ret = parse_mtd_partitions(&fun->mtd, part_types, &fun->parts, 0);
164 164
165#ifdef CONFIG_MTD_OF_PARTS 165#ifdef CONFIG_MTD_OF_PARTS
166 if (ret == 0) 166 if (ret == 0) {
167 ret = of_mtd_parse_partitions(fun->dev, &fun->mtd, 167 ret = of_mtd_parse_partitions(fun->dev, flash_np, &fun->parts);
168 flash_np, &fun->parts); 168 if (ret < 0)
169 goto err;
170 }
169#endif 171#endif
170 if (ret > 0) 172 if (ret > 0)
171 ret = add_mtd_partitions(&fun->mtd, fun->parts, ret); 173 ret = add_mtd_partitions(&fun->mtd, fun->parts, ret);
diff --git a/drivers/mtd/nand/pasemi_nand.c b/drivers/mtd/nand/pasemi_nand.c
index 75c899039023..9bd6c9ac8443 100644
--- a/drivers/mtd/nand/pasemi_nand.c
+++ b/drivers/mtd/nand/pasemi_nand.c
@@ -141,6 +141,7 @@ static int __devinit pasemi_nand_probe(struct of_device *ofdev,
141 } 141 }
142 142
143 lpcctl = pci_resource_start(pdev, 0); 143 lpcctl = pci_resource_start(pdev, 0);
144 pci_dev_put(pdev);
144 145
145 if (!request_region(lpcctl, 4, driver_name)) { 146 if (!request_region(lpcctl, 4, driver_name)) {
146 err = -EBUSY; 147 err = -EBUSY;
diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
index c0fa9c9edf08..15f0a26730ae 100644
--- a/drivers/mtd/nand/pxa3xx_nand.c
+++ b/drivers/mtd/nand/pxa3xx_nand.c
@@ -269,6 +269,7 @@ static struct pxa3xx_nand_timing stm2GbX16_timing = {
269 269
270static struct pxa3xx_nand_flash stm2GbX16 = { 270static struct pxa3xx_nand_flash stm2GbX16 = {
271 .timing = &stm2GbX16_timing, 271 .timing = &stm2GbX16_timing,
272 .cmdset = &largepage_cmdset,
272 .page_per_block = 64, 273 .page_per_block = 64,
273 .page_size = 2048, 274 .page_size = 2048,
274 .flash_width = 16, 275 .flash_width = 16,
diff --git a/drivers/mtd/onenand/omap2.c b/drivers/mtd/onenand/omap2.c
index e39b21d3e168..a7e4d985f5ef 100644
--- a/drivers/mtd/onenand/omap2.c
+++ b/drivers/mtd/onenand/omap2.c
@@ -32,19 +32,18 @@
32#include <linux/platform_device.h> 32#include <linux/platform_device.h>
33#include <linux/interrupt.h> 33#include <linux/interrupt.h>
34#include <linux/delay.h> 34#include <linux/delay.h>
35#include <linux/dma-mapping.h>
36#include <linux/io.h>
35 37
36#include <asm/io.h>
37#include <asm/mach/flash.h> 38#include <asm/mach/flash.h>
38#include <asm/arch/gpmc.h> 39#include <mach/gpmc.h>
39#include <asm/arch/onenand.h> 40#include <mach/onenand.h>
40#include <asm/arch/gpio.h> 41#include <mach/gpio.h>
41#include <asm/arch/pm.h> 42#include <mach/pm.h>
42 43
43#include <linux/dma-mapping.h> 44#include <mach/dma.h>
44#include <asm/dma-mapping.h>
45#include <asm/arch/dma.h>
46 45
47#include <asm/arch/board.h> 46#include <mach/board.h>
48 47
49#define DRIVER_NAME "omap2-onenand" 48#define DRIVER_NAME "omap2-onenand"
50 49
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index f19acf8b9220..017383ad5ec6 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -114,7 +114,7 @@ obj-$(CONFIG_EL2) += 3c503.o 8390p.o
114obj-$(CONFIG_NE2000) += ne.o 8390p.o 114obj-$(CONFIG_NE2000) += ne.o 8390p.o
115obj-$(CONFIG_NE2_MCA) += ne2.o 8390p.o 115obj-$(CONFIG_NE2_MCA) += ne2.o 8390p.o
116obj-$(CONFIG_HPLAN) += hp.o 8390p.o 116obj-$(CONFIG_HPLAN) += hp.o 8390p.o
117obj-$(CONFIG_HPLAN_PLUS) += hp-plus.o 8390.o 117obj-$(CONFIG_HPLAN_PLUS) += hp-plus.o 8390p.o
118obj-$(CONFIG_ULTRA) += smc-ultra.o 8390.o 118obj-$(CONFIG_ULTRA) += smc-ultra.o 8390.o
119obj-$(CONFIG_ULTRAMCA) += smc-mca.o 8390.o 119obj-$(CONFIG_ULTRAMCA) += smc-mca.o 8390.o
120obj-$(CONFIG_ULTRA32) += smc-ultra32.o 8390.o 120obj-$(CONFIG_ULTRA32) += smc-ultra32.o 8390.o
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index d07e3f148951..9e8222f9e90e 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -543,9 +543,9 @@ bnx2_free_rx_mem(struct bnx2 *bp)
543 for (j = 0; j < bp->rx_max_pg_ring; j++) { 543 for (j = 0; j < bp->rx_max_pg_ring; j++) {
544 if (rxr->rx_pg_desc_ring[j]) 544 if (rxr->rx_pg_desc_ring[j])
545 pci_free_consistent(bp->pdev, RXBD_RING_SIZE, 545 pci_free_consistent(bp->pdev, RXBD_RING_SIZE,
546 rxr->rx_pg_desc_ring[i], 546 rxr->rx_pg_desc_ring[j],
547 rxr->rx_pg_desc_mapping[i]); 547 rxr->rx_pg_desc_mapping[j]);
548 rxr->rx_pg_desc_ring[i] = NULL; 548 rxr->rx_pg_desc_ring[j] = NULL;
549 } 549 }
550 if (rxr->rx_pg_ring) 550 if (rxr->rx_pg_ring)
551 vfree(rxr->rx_pg_ring); 551 vfree(rxr->rx_pg_ring);
@@ -3144,6 +3144,28 @@ bnx2_has_work(struct bnx2_napi *bnapi)
3144 return 0; 3144 return 0;
3145} 3145}
3146 3146
3147static void
3148bnx2_chk_missed_msi(struct bnx2 *bp)
3149{
3150 struct bnx2_napi *bnapi = &bp->bnx2_napi[0];
3151 u32 msi_ctrl;
3152
3153 if (bnx2_has_work(bnapi)) {
3154 msi_ctrl = REG_RD(bp, BNX2_PCICFG_MSI_CONTROL);
3155 if (!(msi_ctrl & BNX2_PCICFG_MSI_CONTROL_ENABLE))
3156 return;
3157
3158 if (bnapi->last_status_idx == bp->idle_chk_status_idx) {
3159 REG_WR(bp, BNX2_PCICFG_MSI_CONTROL, msi_ctrl &
3160 ~BNX2_PCICFG_MSI_CONTROL_ENABLE);
3161 REG_WR(bp, BNX2_PCICFG_MSI_CONTROL, msi_ctrl);
3162 bnx2_msi(bp->irq_tbl[0].vector, bnapi);
3163 }
3164 }
3165
3166 bp->idle_chk_status_idx = bnapi->last_status_idx;
3167}
3168
3147static void bnx2_poll_link(struct bnx2 *bp, struct bnx2_napi *bnapi) 3169static void bnx2_poll_link(struct bnx2 *bp, struct bnx2_napi *bnapi)
3148{ 3170{
3149 struct status_block *sblk = bnapi->status_blk.msi; 3171 struct status_block *sblk = bnapi->status_blk.msi;
@@ -3218,14 +3240,15 @@ static int bnx2_poll(struct napi_struct *napi, int budget)
3218 3240
3219 work_done = bnx2_poll_work(bp, bnapi, work_done, budget); 3241 work_done = bnx2_poll_work(bp, bnapi, work_done, budget);
3220 3242
3221 if (unlikely(work_done >= budget))
3222 break;
3223
3224 /* bnapi->last_status_idx is used below to tell the hw how 3243 /* bnapi->last_status_idx is used below to tell the hw how
3225 * much work has been processed, so we must read it before 3244 * much work has been processed, so we must read it before
3226 * checking for more work. 3245 * checking for more work.
3227 */ 3246 */
3228 bnapi->last_status_idx = sblk->status_idx; 3247 bnapi->last_status_idx = sblk->status_idx;
3248
3249 if (unlikely(work_done >= budget))
3250 break;
3251
3229 rmb(); 3252 rmb();
3230 if (likely(!bnx2_has_work(bnapi))) { 3253 if (likely(!bnx2_has_work(bnapi))) {
3231 netif_rx_complete(bp->dev, napi); 3254 netif_rx_complete(bp->dev, napi);
@@ -4570,6 +4593,8 @@ bnx2_init_chip(struct bnx2 *bp)
4570 for (i = 0; i < BNX2_MAX_MSIX_VEC; i++) 4593 for (i = 0; i < BNX2_MAX_MSIX_VEC; i++)
4571 bp->bnx2_napi[i].last_status_idx = 0; 4594 bp->bnx2_napi[i].last_status_idx = 0;
4572 4595
4596 bp->idle_chk_status_idx = 0xffff;
4597
4573 bp->rx_mode = BNX2_EMAC_RX_MODE_SORT_MODE; 4598 bp->rx_mode = BNX2_EMAC_RX_MODE_SORT_MODE;
4574 4599
4575 /* Set up how to generate a link change interrupt. */ 4600 /* Set up how to generate a link change interrupt. */
@@ -5718,6 +5743,10 @@ bnx2_timer(unsigned long data)
5718 if (atomic_read(&bp->intr_sem) != 0) 5743 if (atomic_read(&bp->intr_sem) != 0)
5719 goto bnx2_restart_timer; 5744 goto bnx2_restart_timer;
5720 5745
5746 if ((bp->flags & (BNX2_FLAG_USING_MSI | BNX2_FLAG_ONE_SHOT_MSI)) ==
5747 BNX2_FLAG_USING_MSI)
5748 bnx2_chk_missed_msi(bp);
5749
5721 bnx2_send_heart_beat(bp); 5750 bnx2_send_heart_beat(bp);
5722 5751
5723 bp->stats_blk->stat_FwRxDrop = 5752 bp->stats_blk->stat_FwRxDrop =
diff --git a/drivers/net/bnx2.h b/drivers/net/bnx2.h
index 617d95340160..0b032c3c7b61 100644
--- a/drivers/net/bnx2.h
+++ b/drivers/net/bnx2.h
@@ -378,6 +378,9 @@ struct l2_fhdr {
378 * pci_config_l definition 378 * pci_config_l definition
379 * offset: 0000 379 * offset: 0000
380 */ 380 */
381#define BNX2_PCICFG_MSI_CONTROL 0x00000058
382#define BNX2_PCICFG_MSI_CONTROL_ENABLE (1L<<16)
383
381#define BNX2_PCICFG_MISC_CONFIG 0x00000068 384#define BNX2_PCICFG_MISC_CONFIG 0x00000068
382#define BNX2_PCICFG_MISC_CONFIG_TARGET_BYTE_SWAP (1L<<2) 385#define BNX2_PCICFG_MISC_CONFIG_TARGET_BYTE_SWAP (1L<<2)
383#define BNX2_PCICFG_MISC_CONFIG_TARGET_MB_WORD_SWAP (1L<<3) 386#define BNX2_PCICFG_MISC_CONFIG_TARGET_MB_WORD_SWAP (1L<<3)
@@ -6863,6 +6866,9 @@ struct bnx2 {
6863 6866
6864 u8 num_tx_rings; 6867 u8 num_tx_rings;
6865 u8 num_rx_rings; 6868 u8 num_rx_rings;
6869
6870 u32 idle_chk_status_idx;
6871
6866}; 6872};
6867 6873
6868#define REG_RD(bp, offset) \ 6874#define REG_RD(bp, offset) \
diff --git a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c
index d6c7d2aa761b..7092df50ff78 100644
--- a/drivers/net/chelsio/sge.c
+++ b/drivers/net/chelsio/sge.c
@@ -1035,10 +1035,6 @@ MODULE_PARM_DESC(copybreak, "Receive copy threshold");
1035 * @pdev: the PCI device that received the packet 1035 * @pdev: the PCI device that received the packet
1036 * @fl: the SGE free list holding the packet 1036 * @fl: the SGE free list holding the packet
1037 * @len: the actual packet length, excluding any SGE padding 1037 * @len: the actual packet length, excluding any SGE padding
1038 * @dma_pad: padding at beginning of buffer left by SGE DMA
1039 * @skb_pad: padding to be used if the packet is copied
1040 * @copy_thres: length threshold under which a packet should be copied
1041 * @drop_thres: # of remaining buffers before we start dropping packets
1042 * 1038 *
1043 * Get the next packet from a free list and complete setup of the 1039 * Get the next packet from a free list and complete setup of the
1044 * sk_buff. If the packet is small we make a copy and recycle the 1040 * sk_buff. If the packet is small we make a copy and recycle the
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c
index 523b9716a543..d115a6d30f29 100644
--- a/drivers/net/e1000e/ich8lan.c
+++ b/drivers/net/e1000e/ich8lan.c
@@ -1893,12 +1893,17 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
1893 ctrl |= E1000_CTRL_PHY_RST; 1893 ctrl |= E1000_CTRL_PHY_RST;
1894 } 1894 }
1895 ret_val = e1000_acquire_swflag_ich8lan(hw); 1895 ret_val = e1000_acquire_swflag_ich8lan(hw);
1896 /* Whether or not the swflag was acquired, we need to reset the part */
1896 hw_dbg(hw, "Issuing a global reset to ich8lan"); 1897 hw_dbg(hw, "Issuing a global reset to ich8lan");
1897 ew32(CTRL, (ctrl | E1000_CTRL_RST)); 1898 ew32(CTRL, (ctrl | E1000_CTRL_RST));
1898 msleep(20); 1899 msleep(20);
1899 1900
1900 /* release the swflag because it is not reset by hardware reset */ 1901 if (!ret_val) {
1901 e1000_release_swflag_ich8lan(hw); 1902 /* release the swflag because it is not reset by
1903 * hardware reset
1904 */
1905 e1000_release_swflag_ich8lan(hw);
1906 }
1902 1907
1903 ret_val = e1000e_get_auto_rd_done(hw); 1908 ret_val = e1000e_get_auto_rd_done(hw);
1904 if (ret_val) { 1909 if (ret_val) {
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index 91795f78c3e4..122539a0e1fe 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -345,7 +345,6 @@ no_buffers:
345/** 345/**
346 * e1000_alloc_jumbo_rx_buffers - Replace used jumbo receive buffers 346 * e1000_alloc_jumbo_rx_buffers - Replace used jumbo receive buffers
347 * @adapter: address of board private structure 347 * @adapter: address of board private structure
348 * @rx_ring: pointer to receive ring structure
349 * @cleaned_count: number of buffers to allocate this pass 348 * @cleaned_count: number of buffers to allocate this pass
350 **/ 349 **/
351 350
diff --git a/drivers/net/enc28j60.c b/drivers/net/enc28j60.c
index e1b441effbbe..36cb6e95b465 100644
--- a/drivers/net/enc28j60.c
+++ b/drivers/net/enc28j60.c
@@ -568,6 +568,17 @@ static u16 erxrdpt_workaround(u16 next_packet_ptr, u16 start, u16 end)
568 return erxrdpt; 568 return erxrdpt;
569} 569}
570 570
571/*
572 * Calculate wrap around when reading beyond the end of the RX buffer
573 */
574static u16 rx_packet_start(u16 ptr)
575{
576 if (ptr + RSV_SIZE > RXEND_INIT)
577 return (ptr + RSV_SIZE) - (RXEND_INIT - RXSTART_INIT + 1);
578 else
579 return ptr + RSV_SIZE;
580}
581
571static void nolock_rxfifo_init(struct enc28j60_net *priv, u16 start, u16 end) 582static void nolock_rxfifo_init(struct enc28j60_net *priv, u16 start, u16 end)
572{ 583{
573 u16 erxrdpt; 584 u16 erxrdpt;
@@ -938,8 +949,9 @@ static void enc28j60_hw_rx(struct net_device *ndev)
938 skb->dev = ndev; 949 skb->dev = ndev;
939 skb_reserve(skb, NET_IP_ALIGN); 950 skb_reserve(skb, NET_IP_ALIGN);
940 /* copy the packet from the receive buffer */ 951 /* copy the packet from the receive buffer */
941 enc28j60_mem_read(priv, priv->next_pk_ptr + sizeof(rsv), 952 enc28j60_mem_read(priv,
942 len, skb_put(skb, len)); 953 rx_packet_start(priv->next_pk_ptr),
954 len, skb_put(skb, len));
943 if (netif_msg_pktdata(priv)) 955 if (netif_msg_pktdata(priv))
944 dump_packet(__func__, skb->len, skb->data); 956 dump_packet(__func__, skb->len, skb->data);
945 skb->protocol = eth_type_trans(skb, ndev); 957 skb->protocol = eth_type_trans(skb, ndev);
@@ -947,7 +959,7 @@ static void enc28j60_hw_rx(struct net_device *ndev)
947 ndev->stats.rx_packets++; 959 ndev->stats.rx_packets++;
948 ndev->stats.rx_bytes += len; 960 ndev->stats.rx_bytes += len;
949 ndev->last_rx = jiffies; 961 ndev->last_rx = jiffies;
950 netif_rx(skb); 962 netif_rx_ni(skb);
951 } 963 }
952 } 964 }
953 /* 965 /*
diff --git a/drivers/net/hp-plus.c b/drivers/net/hp-plus.c
index fbbd3e660c27..c01e290d09d2 100644
--- a/drivers/net/hp-plus.c
+++ b/drivers/net/hp-plus.c
@@ -230,7 +230,7 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr)
230 dev->open = &hpp_open; 230 dev->open = &hpp_open;
231 dev->stop = &hpp_close; 231 dev->stop = &hpp_close;
232#ifdef CONFIG_NET_POLL_CONTROLLER 232#ifdef CONFIG_NET_POLL_CONTROLLER
233 dev->poll_controller = ei_poll; 233 dev->poll_controller = eip_poll;
234#endif 234#endif
235 235
236 ei_status.name = name; 236 ei_status.name = name;
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index 1cbae85b1426..20d27e622ec1 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -1980,7 +1980,6 @@ static void igb_configure_rx(struct igb_adapter *adapter)
1980 1980
1981/** 1981/**
1982 * igb_free_tx_resources - Free Tx Resources per Queue 1982 * igb_free_tx_resources - Free Tx Resources per Queue
1983 * @adapter: board private structure
1984 * @tx_ring: Tx descriptor ring for a specific queue 1983 * @tx_ring: Tx descriptor ring for a specific queue
1985 * 1984 *
1986 * Free all transmit software resources 1985 * Free all transmit software resources
@@ -2033,7 +2032,6 @@ static void igb_unmap_and_free_tx_resource(struct igb_adapter *adapter,
2033 2032
2034/** 2033/**
2035 * igb_clean_tx_ring - Free Tx Buffers 2034 * igb_clean_tx_ring - Free Tx Buffers
2036 * @adapter: board private structure
2037 * @tx_ring: ring to be cleaned 2035 * @tx_ring: ring to be cleaned
2038 **/ 2036 **/
2039static void igb_clean_tx_ring(struct igb_ring *tx_ring) 2037static void igb_clean_tx_ring(struct igb_ring *tx_ring)
@@ -2080,7 +2078,6 @@ static void igb_clean_all_tx_rings(struct igb_adapter *adapter)
2080 2078
2081/** 2079/**
2082 * igb_free_rx_resources - Free Rx Resources 2080 * igb_free_rx_resources - Free Rx Resources
2083 * @adapter: board private structure
2084 * @rx_ring: ring to clean the resources from 2081 * @rx_ring: ring to clean the resources from
2085 * 2082 *
2086 * Free all receive software resources 2083 * Free all receive software resources
@@ -2120,7 +2117,6 @@ static void igb_free_all_rx_resources(struct igb_adapter *adapter)
2120 2117
2121/** 2118/**
2122 * igb_clean_rx_ring - Free Rx Buffers per Queue 2119 * igb_clean_rx_ring - Free Rx Buffers per Queue
2123 * @adapter: board private structure
2124 * @rx_ring: ring to free buffers from 2120 * @rx_ring: ring to free buffers from
2125 **/ 2121 **/
2126static void igb_clean_rx_ring(struct igb_ring *rx_ring) 2122static void igb_clean_rx_ring(struct igb_ring *rx_ring)
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 8ed823ae639e..5236f633ee36 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -1320,7 +1320,6 @@ static inline void ixgbe_irq_enable(struct ixgbe_adapter *adapter)
1320 * ixgbe_intr - legacy mode Interrupt Handler 1320 * ixgbe_intr - legacy mode Interrupt Handler
1321 * @irq: interrupt number 1321 * @irq: interrupt number
1322 * @data: pointer to a network interface device structure 1322 * @data: pointer to a network interface device structure
1323 * @pt_regs: CPU registers structure
1324 **/ 1323 **/
1325static irqreturn_t ixgbe_intr(int irq, void *data) 1324static irqreturn_t ixgbe_intr(int irq, void *data)
1326{ 1325{
diff --git a/drivers/net/jme.h b/drivers/net/jme.h
index f863aee6648b..3f5d91543246 100644
--- a/drivers/net/jme.h
+++ b/drivers/net/jme.h
@@ -22,7 +22,7 @@
22 */ 22 */
23 23
24#ifndef __JME_H_INCLUDED__ 24#ifndef __JME_H_INCLUDED__
25#define __JME_H_INCLUDEE__ 25#define __JME_H_INCLUDED__
26 26
27#define DRV_NAME "jme" 27#define DRV_NAME "jme"
28#define DRV_VERSION "1.0.3" 28#define DRV_VERSION "1.0.3"
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 42394505bb50..590039cbb146 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -70,6 +70,9 @@ static void macvlan_broadcast(struct sk_buff *skb,
70 struct sk_buff *nskb; 70 struct sk_buff *nskb;
71 unsigned int i; 71 unsigned int i;
72 72
73 if (skb->protocol == htons(ETH_P_PAUSE))
74 return;
75
73 for (i = 0; i < MACVLAN_HASH_SIZE; i++) { 76 for (i = 0; i < MACVLAN_HASH_SIZE; i++) {
74 hlist_for_each_entry_rcu(vlan, n, &port->vlan_hash[i], hlist) { 77 hlist_for_each_entry_rcu(vlan, n, &port->vlan_hash[i], hlist) {
75 dev = vlan->dev; 78 dev = vlan->dev;
diff --git a/drivers/net/netx-eth.c b/drivers/net/netx-eth.c
index b9bed82e1d21..b289a0a2b945 100644
--- a/drivers/net/netx-eth.c
+++ b/drivers/net/netx-eth.c
@@ -401,6 +401,8 @@ static int netx_eth_drv_probe(struct platform_device *pdev)
401 priv->xmac_base = priv->xc->xmac_base; 401 priv->xmac_base = priv->xc->xmac_base;
402 priv->sram_base = priv->xc->sram_base; 402 priv->sram_base = priv->xc->sram_base;
403 403
404 spin_lock_init(&priv->lock);
405
404 ret = pfifo_request(PFIFO_MASK(priv->id)); 406 ret = pfifo_request(PFIFO_MASK(priv->id));
405 if (ret) { 407 if (ret) {
406 printk("unable to request PFIFO\n"); 408 printk("unable to request PFIFO\n");
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c
index b37a498939ae..0418045166c3 100644
--- a/drivers/net/pcmcia/axnet_cs.c
+++ b/drivers/net/pcmcia/axnet_cs.c
@@ -779,6 +779,7 @@ static struct pcmcia_device_id axnet_ids[] = {
779 PCMCIA_DEVICE_PROD_ID12("IO DATA", "ETXPCM", 0x547e66dc, 0x233adac2), 779 PCMCIA_DEVICE_PROD_ID12("IO DATA", "ETXPCM", 0x547e66dc, 0x233adac2),
780 PCMCIA_DEVICE_PROD_ID12("Linksys", "EtherFast 10/100 PC Card (PCMPC100 V3)", 0x0733cc81, 0x232019a8), 780 PCMCIA_DEVICE_PROD_ID12("Linksys", "EtherFast 10/100 PC Card (PCMPC100 V3)", 0x0733cc81, 0x232019a8),
781 PCMCIA_DEVICE_PROD_ID12("MELCO", "LPC3-TX", 0x481e0094, 0xf91af609), 781 PCMCIA_DEVICE_PROD_ID12("MELCO", "LPC3-TX", 0x481e0094, 0xf91af609),
782 PCMCIA_DEVICE_PROD_ID12("NETGEAR", "FA411", 0x9aa79dc3, 0x40fad875),
782 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "100BASE", 0x281f1c5d, 0x7c2add04), 783 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "100BASE", 0x281f1c5d, 0x7c2add04),
783 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "FastEtherCard", 0x281f1c5d, 0x7ef26116), 784 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "FastEtherCard", 0x281f1c5d, 0x7ef26116),
784 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "FEP501", 0x281f1c5d, 0x2e272058), 785 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "FEP501", 0x281f1c5d, 0x2e272058),
@@ -1174,7 +1175,6 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
1174 * ax_interrupt - handle the interrupts from an 8390 1175 * ax_interrupt - handle the interrupts from an 8390
1175 * @irq: interrupt number 1176 * @irq: interrupt number
1176 * @dev_id: a pointer to the net_device 1177 * @dev_id: a pointer to the net_device
1177 * @regs: unused
1178 * 1178 *
1179 * Handle the ether interface interrupts. We pull packets from 1179 * Handle the ether interface interrupts. We pull packets from
1180 * the 8390 via the card specific functions and fire them at the networking 1180 * the 8390 via the card specific functions and fire them at the networking
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c
index e40d6301aa7a..ce486f094492 100644
--- a/drivers/net/pcmcia/pcnet_cs.c
+++ b/drivers/net/pcmcia/pcnet_cs.c
@@ -1693,7 +1693,6 @@ static struct pcmcia_device_id pcnet_ids[] = {
1693 PCMCIA_DEVICE_PROD_ID12("National Semiconductor", "InfoMover NE4100", 0x36e1191f, 0xa6617ec8), 1693 PCMCIA_DEVICE_PROD_ID12("National Semiconductor", "InfoMover NE4100", 0x36e1191f, 0xa6617ec8),
1694 PCMCIA_DEVICE_PROD_ID12("NEC", "PC-9801N-J12", 0x18df0ba0, 0xbc912d76), 1694 PCMCIA_DEVICE_PROD_ID12("NEC", "PC-9801N-J12", 0x18df0ba0, 0xbc912d76),
1695 PCMCIA_DEVICE_PROD_ID12("NETGEAR", "FA410TX", 0x9aa79dc3, 0x60e5bc0e), 1695 PCMCIA_DEVICE_PROD_ID12("NETGEAR", "FA410TX", 0x9aa79dc3, 0x60e5bc0e),
1696 PCMCIA_DEVICE_PROD_ID12("NETGEAR", "FA411", 0x9aa79dc3, 0x40fad875),
1697 PCMCIA_DEVICE_PROD_ID12("Network Everywhere", "Fast Ethernet 10/100 PC Card", 0x820a67b6, 0x31ed1a5f), 1696 PCMCIA_DEVICE_PROD_ID12("Network Everywhere", "Fast Ethernet 10/100 PC Card", 0x820a67b6, 0x31ed1a5f),
1698 PCMCIA_DEVICE_PROD_ID12("NextCom K.K.", "Next Hawk", 0xaedaec74, 0xad050ef1), 1697 PCMCIA_DEVICE_PROD_ID12("NextCom K.K.", "Next Hawk", 0xaedaec74, 0xad050ef1),
1699 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "10/100Mbps Ethernet Card", 0x281f1c5d, 0x6e41773b), 1698 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "10/100Mbps Ethernet Card", 0x281f1c5d, 0x6e41773b),
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
index 536bda1f428b..289fc267edf3 100644
--- a/drivers/net/phy/mdio_bus.c
+++ b/drivers/net/phy/mdio_bus.c
@@ -105,8 +105,6 @@ int mdiobus_register(struct mii_bus *bus)
105 return -EINVAL; 105 return -EINVAL;
106 } 106 }
107 107
108 bus->state = MDIOBUS_REGISTERED;
109
110 mutex_init(&bus->mdio_lock); 108 mutex_init(&bus->mdio_lock);
111 109
112 if (bus->reset) 110 if (bus->reset)
@@ -123,6 +121,9 @@ int mdiobus_register(struct mii_bus *bus)
123 } 121 }
124 } 122 }
125 123
124 if (!err)
125 bus->state = MDIOBUS_REGISTERED;
126
126 pr_info("%s: probed\n", bus->name); 127 pr_info("%s: probed\n", bus->name);
127 128
128 return err; 129 return err;
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 55bc24b234e3..25acbbde4a60 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -227,8 +227,17 @@ struct phy_device * get_phy_device(struct mii_bus *bus, int addr)
227 if (r) 227 if (r)
228 return ERR_PTR(r); 228 return ERR_PTR(r);
229 229
230 /* If the phy_id is all Fs or all 0s, there is no device there */ 230 /* If the phy_id is mostly Fs, there is no device there */
231 if ((0xffff == phy_id) || (0x00 == phy_id)) 231 if ((phy_id & 0x1fffffff) == 0x1fffffff)
232 return NULL;
233
234 /*
235 * Broken hardware is sometimes missing the pull down 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)
232 return NULL; 241 return NULL;
233 242
234 dev = phy_device_create(bus, addr, phy_id); 243 dev = phy_device_create(bus, addr, phy_id);
diff --git a/drivers/net/phy/vitesse.c b/drivers/net/phy/vitesse.c
index 8874497b6bbf..dd3b2447e85a 100644
--- a/drivers/net/phy/vitesse.c
+++ b/drivers/net/phy/vitesse.c
@@ -34,6 +34,8 @@
34#define MII_VSC8244_IMASK_DUPLEX 0x1000 34#define MII_VSC8244_IMASK_DUPLEX 0x1000
35#define MII_VSC8244_IMASK_MASK 0xf000 35#define MII_VSC8244_IMASK_MASK 0xf000
36 36
37#define MII_VSC8221_IMASK_MASK 0xa000
38
37/* Vitesse Interrupt Status Register */ 39/* Vitesse Interrupt Status Register */
38#define MII_VSC8244_ISTAT 0x1a 40#define MII_VSC8244_ISTAT 0x1a
39#define MII_VSC8244_ISTAT_STATUS 0x8000 41#define MII_VSC8244_ISTAT_STATUS 0x8000
@@ -49,6 +51,12 @@
49#define MII_VSC8244_AUXCONSTAT_GBIT 0x0010 51#define MII_VSC8244_AUXCONSTAT_GBIT 0x0010
50#define MII_VSC8244_AUXCONSTAT_100 0x0008 52#define MII_VSC8244_AUXCONSTAT_100 0x0008
51 53
54#define MII_VSC8221_AUXCONSTAT_INIT 0x0004 /* need to set this bit? */
55#define MII_VSC8221_AUXCONSTAT_RESERVED 0x0004
56
57#define PHY_ID_VSC8244 0x000fc6c0
58#define PHY_ID_VSC8221 0x000fc550
59
52MODULE_DESCRIPTION("Vitesse PHY driver"); 60MODULE_DESCRIPTION("Vitesse PHY driver");
53MODULE_AUTHOR("Kriston Carson"); 61MODULE_AUTHOR("Kriston Carson");
54MODULE_LICENSE("GPL"); 62MODULE_LICENSE("GPL");
@@ -95,13 +103,15 @@ static int vsc824x_ack_interrupt(struct phy_device *phydev)
95 return (err < 0) ? err : 0; 103 return (err < 0) ? err : 0;
96} 104}
97 105
98static int vsc824x_config_intr(struct phy_device *phydev) 106static int vsc82xx_config_intr(struct phy_device *phydev)
99{ 107{
100 int err; 108 int err;
101 109
102 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) 110 if (phydev->interrupts == PHY_INTERRUPT_ENABLED)
103 err = phy_write(phydev, MII_VSC8244_IMASK, 111 err = phy_write(phydev, MII_VSC8244_IMASK,
104 MII_VSC8244_IMASK_MASK); 112 phydev->drv->phy_id == PHY_ID_VSC8244 ?
113 MII_VSC8244_IMASK_MASK :
114 MII_VSC8221_IMASK_MASK);
105 else { 115 else {
106 /* 116 /*
107 * The Vitesse PHY cannot clear the interrupt 117 * The Vitesse PHY cannot clear the interrupt
@@ -120,7 +130,7 @@ static int vsc824x_config_intr(struct phy_device *phydev)
120 130
121/* Vitesse 824x */ 131/* Vitesse 824x */
122static struct phy_driver vsc8244_driver = { 132static struct phy_driver vsc8244_driver = {
123 .phy_id = 0x000fc6c0, 133 .phy_id = PHY_ID_VSC8244,
124 .name = "Vitesse VSC8244", 134 .name = "Vitesse VSC8244",
125 .phy_id_mask = 0x000fffc0, 135 .phy_id_mask = 0x000fffc0,
126 .features = PHY_GBIT_FEATURES, 136 .features = PHY_GBIT_FEATURES,
@@ -129,19 +139,55 @@ static struct phy_driver vsc8244_driver = {
129 .config_aneg = &genphy_config_aneg, 139 .config_aneg = &genphy_config_aneg,
130 .read_status = &genphy_read_status, 140 .read_status = &genphy_read_status,
131 .ack_interrupt = &vsc824x_ack_interrupt, 141 .ack_interrupt = &vsc824x_ack_interrupt,
132 .config_intr = &vsc824x_config_intr, 142 .config_intr = &vsc82xx_config_intr,
133 .driver = { .owner = THIS_MODULE,}, 143 .driver = { .owner = THIS_MODULE,},
134}; 144};
135 145
136static int __init vsc8244_init(void) 146static int vsc8221_config_init(struct phy_device *phydev)
137{ 147{
138 return phy_driver_register(&vsc8244_driver); 148 int err;
149
150 err = phy_write(phydev, MII_VSC8244_AUX_CONSTAT,
151 MII_VSC8221_AUXCONSTAT_INIT);
152 return err;
153
154 /* Perhaps we should set EXT_CON1 based on the interface?
155 Options are 802.3Z SerDes or SGMII */
156}
157
158/* Vitesse 8221 */
159static struct phy_driver vsc8221_driver = {
160 .phy_id = PHY_ID_VSC8221,
161 .phy_id_mask = 0x000ffff0,
162 .name = "Vitesse VSC8221",
163 .features = PHY_GBIT_FEATURES,
164 .flags = PHY_HAS_INTERRUPT,
165 .config_init = &vsc8221_config_init,
166 .config_aneg = &genphy_config_aneg,
167 .read_status = &genphy_read_status,
168 .ack_interrupt = &vsc824x_ack_interrupt,
169 .config_intr = &vsc82xx_config_intr,
170 .driver = { .owner = THIS_MODULE,},
171};
172
173static int __init vsc82xx_init(void)
174{
175 int err;
176
177 err = phy_driver_register(&vsc8244_driver);
178 if (err < 0)
179 return err;
180 err = phy_driver_register(&vsc8221_driver);
181 if (err < 0)
182 phy_driver_unregister(&vsc8244_driver);
183 return err;
139} 184}
140 185
141static void __exit vsc8244_exit(void) 186static void __exit vsc82xx_exit(void)
142{ 187{
143 phy_driver_unregister(&vsc8244_driver); 188 phy_driver_unregister(&vsc8244_driver);
189 phy_driver_unregister(&vsc8221_driver);
144} 190}
145 191
146module_init(vsc8244_init); 192module_init(vsc82xx_init);
147module_exit(vsc8244_exit); 193module_exit(vsc82xx_exit);
diff --git a/drivers/net/pppol2tp.c b/drivers/net/pppol2tp.c
index 185b1dff10a8..e98d9773158d 100644
--- a/drivers/net/pppol2tp.c
+++ b/drivers/net/pppol2tp.c
@@ -1353,6 +1353,7 @@ static int pppol2tp_release(struct socket *sock)
1353 kfree_skb(skb); 1353 kfree_skb(skb);
1354 sock_put(sk); 1354 sock_put(sk);
1355 } 1355 }
1356 sock_put(sk);
1356 } 1357 }
1357 1358
1358 release_sock(sk); 1359 release_sock(sk);
diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c
index fa3a460f8e2f..8e8337e8b072 100644
--- a/drivers/net/sis900.c
+++ b/drivers/net/sis900.c
@@ -1630,7 +1630,6 @@ sis900_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
1630 * sis900_interrupt - sis900 interrupt handler 1630 * sis900_interrupt - sis900 interrupt handler
1631 * @irq: the irq number 1631 * @irq: the irq number
1632 * @dev_instance: the client data object 1632 * @dev_instance: the client data object
1633 * @regs: snapshot of processor context
1634 * 1633 *
1635 * The interrupt handler does all of the Rx thread work, 1634 * The interrupt handler does all of the Rx thread work,
1636 * and cleans up after the Tx thread 1635 * and cleans up after the Tx thread
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c
index b6435d0d71f9..07599b492359 100644
--- a/drivers/net/spider_net.c
+++ b/drivers/net/spider_net.c
@@ -672,7 +672,6 @@ write_hash:
672/** 672/**
673 * spider_net_prepare_tx_descr - fill tx descriptor with skb data 673 * spider_net_prepare_tx_descr - fill tx descriptor with skb data
674 * @card: card structure 674 * @card: card structure
675 * @descr: descriptor structure to fill out
676 * @skb: packet to use 675 * @skb: packet to use
677 * 676 *
678 * returns 0 on success, <0 on failure. 677 * returns 0 on success, <0 on failure.
@@ -867,7 +866,6 @@ spider_net_release_tx_chain(struct spider_net_card *card, int brutal)
867/** 866/**
868 * spider_net_kick_tx_dma - enables TX DMA processing 867 * spider_net_kick_tx_dma - enables TX DMA processing
869 * @card: card structure 868 * @card: card structure
870 * @descr: descriptor address to enable TX processing at
871 * 869 *
872 * This routine will start the transmit DMA running if 870 * This routine will start the transmit DMA running if
873 * it is not already running. This routine ned only be 871 * it is not already running. This routine ned only be
@@ -1637,7 +1635,6 @@ spider_net_handle_error_irq(struct spider_net_card *card, u32 status_reg,
1637 * spider_net_interrupt - interrupt handler for spider_net 1635 * spider_net_interrupt - interrupt handler for spider_net
1638 * @irq: interrupt number 1636 * @irq: interrupt number
1639 * @ptr: pointer to net_device 1637 * @ptr: pointer to net_device
1640 * @regs: PU registers
1641 * 1638 *
1642 * returns IRQ_HANDLED, if interrupt was for driver, or IRQ_NONE, if no 1639 * returns IRQ_HANDLED, if interrupt was for driver, or IRQ_NONE, if no
1643 * interrupt found raised by card. 1640 * interrupt found raised by card.
@@ -2419,7 +2416,6 @@ spider_net_undo_pci_setup(struct spider_net_card *card)
2419 2416
2420/** 2417/**
2421 * spider_net_setup_pci_dev - sets up the device in terms of PCI operations 2418 * spider_net_setup_pci_dev - sets up the device in terms of PCI operations
2422 * @card: card structure
2423 * @pdev: PCI device 2419 * @pdev: PCI device
2424 * 2420 *
2425 * Returns the card structure or NULL if any errors occur 2421 * Returns the card structure or NULL if any errors occur
diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c
index 1d2ef8f47780..5a40f2d78beb 100644
--- a/drivers/net/starfire.c
+++ b/drivers/net/starfire.c
@@ -1509,6 +1509,11 @@ static int __netdev_rx(struct net_device *dev, int *quota)
1509 desc->status = 0; 1509 desc->status = 0;
1510 np->rx_done = (np->rx_done + 1) % DONE_Q_SIZE; 1510 np->rx_done = (np->rx_done + 1) % DONE_Q_SIZE;
1511 } 1511 }
1512
1513 if (*quota == 0) { /* out of rx quota */
1514 retcode = 1;
1515 goto out;
1516 }
1512 writew(np->rx_done, np->base + CompletionQConsumerIdx); 1517 writew(np->rx_done, np->base + CompletionQConsumerIdx);
1513 1518
1514 out: 1519 out:
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c
index 4291458955ef..fed7eba65ead 100644
--- a/drivers/net/sungem.c
+++ b/drivers/net/sungem.c
@@ -1142,6 +1142,70 @@ static int gem_start_xmit(struct sk_buff *skb, struct net_device *dev)
1142 return NETDEV_TX_OK; 1142 return NETDEV_TX_OK;
1143} 1143}
1144 1144
1145static void gem_pcs_reset(struct gem *gp)
1146{
1147 int limit;
1148 u32 val;
1149
1150 /* Reset PCS unit. */
1151 val = readl(gp->regs + PCS_MIICTRL);
1152 val |= PCS_MIICTRL_RST;
1153 writel(val, gp->regs + PCS_MIICTRL);
1154
1155 limit = 32;
1156 while (readl(gp->regs + PCS_MIICTRL) & PCS_MIICTRL_RST) {
1157 udelay(100);
1158 if (limit-- <= 0)
1159 break;
1160 }
1161 if (limit <= 0)
1162 printk(KERN_WARNING "%s: PCS reset bit would not clear.\n",
1163 gp->dev->name);
1164}
1165
1166static void gem_pcs_reinit_adv(struct gem *gp)
1167{
1168 u32 val;
1169
1170 /* Make sure PCS is disabled while changing advertisement
1171 * configuration.
1172 */
1173 val = readl(gp->regs + PCS_CFG);
1174 val &= ~(PCS_CFG_ENABLE | PCS_CFG_TO);
1175 writel(val, gp->regs + PCS_CFG);
1176
1177 /* Advertise all capabilities except assymetric
1178 * pause.
1179 */
1180 val = readl(gp->regs + PCS_MIIADV);
1181 val |= (PCS_MIIADV_FD | PCS_MIIADV_HD |
1182 PCS_MIIADV_SP | PCS_MIIADV_AP);
1183 writel(val, gp->regs + PCS_MIIADV);
1184
1185 /* Enable and restart auto-negotiation, disable wrapback/loopback,
1186 * and re-enable PCS.
1187 */
1188 val = readl(gp->regs + PCS_MIICTRL);
1189 val |= (PCS_MIICTRL_RAN | PCS_MIICTRL_ANE);
1190 val &= ~PCS_MIICTRL_WB;
1191 writel(val, gp->regs + PCS_MIICTRL);
1192
1193 val = readl(gp->regs + PCS_CFG);
1194 val |= PCS_CFG_ENABLE;
1195 writel(val, gp->regs + PCS_CFG);
1196
1197 /* Make sure serialink loopback is off. The meaning
1198 * of this bit is logically inverted based upon whether
1199 * you are in Serialink or SERDES mode.
1200 */
1201 val = readl(gp->regs + PCS_SCTRL);
1202 if (gp->phy_type == phy_serialink)
1203 val &= ~PCS_SCTRL_LOOP;
1204 else
1205 val |= PCS_SCTRL_LOOP;
1206 writel(val, gp->regs + PCS_SCTRL);
1207}
1208
1145#define STOP_TRIES 32 1209#define STOP_TRIES 32
1146 1210
1147/* Must be invoked under gp->lock and gp->tx_lock. */ 1211/* Must be invoked under gp->lock and gp->tx_lock. */
@@ -1168,6 +1232,9 @@ static void gem_reset(struct gem *gp)
1168 1232
1169 if (limit <= 0) 1233 if (limit <= 0)
1170 printk(KERN_ERR "%s: SW reset is ghetto.\n", gp->dev->name); 1234 printk(KERN_ERR "%s: SW reset is ghetto.\n", gp->dev->name);
1235
1236 if (gp->phy_type == phy_serialink || gp->phy_type == phy_serdes)
1237 gem_pcs_reinit_adv(gp);
1171} 1238}
1172 1239
1173/* Must be invoked under gp->lock and gp->tx_lock. */ 1240/* Must be invoked under gp->lock and gp->tx_lock. */
@@ -1324,7 +1391,7 @@ static int gem_set_link_modes(struct gem *gp)
1324 gp->phy_type == phy_serdes) { 1391 gp->phy_type == phy_serdes) {
1325 u32 pcs_lpa = readl(gp->regs + PCS_MIILP); 1392 u32 pcs_lpa = readl(gp->regs + PCS_MIILP);
1326 1393
1327 if (pcs_lpa & PCS_MIIADV_FD) 1394 if ((pcs_lpa & PCS_MIIADV_FD) || gp->phy_type == phy_serdes)
1328 full_duplex = 1; 1395 full_duplex = 1;
1329 speed = SPEED_1000; 1396 speed = SPEED_1000;
1330 } 1397 }
@@ -1488,6 +1555,9 @@ static void gem_link_timer(unsigned long data)
1488 val = readl(gp->regs + PCS_MIISTAT); 1555 val = readl(gp->regs + PCS_MIISTAT);
1489 1556
1490 if ((val & PCS_MIISTAT_LS) != 0) { 1557 if ((val & PCS_MIISTAT_LS) != 0) {
1558 if (gp->lstate == link_up)
1559 goto restart;
1560
1491 gp->lstate = link_up; 1561 gp->lstate = link_up;
1492 netif_carrier_on(gp->dev); 1562 netif_carrier_on(gp->dev);
1493 (void)gem_set_link_modes(gp); 1563 (void)gem_set_link_modes(gp);
@@ -1708,61 +1778,8 @@ static void gem_init_phy(struct gem *gp)
1708 if (gp->phy_mii.def && gp->phy_mii.def->ops->init) 1778 if (gp->phy_mii.def && gp->phy_mii.def->ops->init)
1709 gp->phy_mii.def->ops->init(&gp->phy_mii); 1779 gp->phy_mii.def->ops->init(&gp->phy_mii);
1710 } else { 1780 } else {
1711 u32 val; 1781 gem_pcs_reset(gp);
1712 int limit; 1782 gem_pcs_reinit_adv(gp);
1713
1714 /* Reset PCS unit. */
1715 val = readl(gp->regs + PCS_MIICTRL);
1716 val |= PCS_MIICTRL_RST;
1717 writeb(val, gp->regs + PCS_MIICTRL);
1718
1719 limit = 32;
1720 while (readl(gp->regs + PCS_MIICTRL) & PCS_MIICTRL_RST) {
1721 udelay(100);
1722 if (limit-- <= 0)
1723 break;
1724 }
1725 if (limit <= 0)
1726 printk(KERN_WARNING "%s: PCS reset bit would not clear.\n",
1727 gp->dev->name);
1728
1729 /* Make sure PCS is disabled while changing advertisement
1730 * configuration.
1731 */
1732 val = readl(gp->regs + PCS_CFG);
1733 val &= ~(PCS_CFG_ENABLE | PCS_CFG_TO);
1734 writel(val, gp->regs + PCS_CFG);
1735
1736 /* Advertise all capabilities except assymetric
1737 * pause.
1738 */
1739 val = readl(gp->regs + PCS_MIIADV);
1740 val |= (PCS_MIIADV_FD | PCS_MIIADV_HD |
1741 PCS_MIIADV_SP | PCS_MIIADV_AP);
1742 writel(val, gp->regs + PCS_MIIADV);
1743
1744 /* Enable and restart auto-negotiation, disable wrapback/loopback,
1745 * and re-enable PCS.
1746 */
1747 val = readl(gp->regs + PCS_MIICTRL);
1748 val |= (PCS_MIICTRL_RAN | PCS_MIICTRL_ANE);
1749 val &= ~PCS_MIICTRL_WB;
1750 writel(val, gp->regs + PCS_MIICTRL);
1751
1752 val = readl(gp->regs + PCS_CFG);
1753 val |= PCS_CFG_ENABLE;
1754 writel(val, gp->regs + PCS_CFG);
1755
1756 /* Make sure serialink loopback is off. The meaning
1757 * of this bit is logically inverted based upon whether
1758 * you are in Serialink or SERDES mode.
1759 */
1760 val = readl(gp->regs + PCS_SCTRL);
1761 if (gp->phy_type == phy_serialink)
1762 val &= ~PCS_SCTRL_LOOP;
1763 else
1764 val |= PCS_SCTRL_LOOP;
1765 writel(val, gp->regs + PCS_SCTRL);
1766 } 1783 }
1767 1784
1768 /* Default aneg parameters */ 1785 /* Default aneg parameters */
@@ -2680,6 +2697,21 @@ static int gem_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
2680 cmd->speed = 0; 2697 cmd->speed = 0;
2681 cmd->duplex = cmd->port = cmd->phy_address = 2698 cmd->duplex = cmd->port = cmd->phy_address =
2682 cmd->transceiver = cmd->autoneg = 0; 2699 cmd->transceiver = cmd->autoneg = 0;
2700
2701 /* serdes means usually a Fibre connector, with most fixed */
2702 if (gp->phy_type == phy_serdes) {
2703 cmd->port = PORT_FIBRE;
2704 cmd->supported = (SUPPORTED_1000baseT_Half |
2705 SUPPORTED_1000baseT_Full |
2706 SUPPORTED_FIBRE | SUPPORTED_Autoneg |
2707 SUPPORTED_Pause | SUPPORTED_Asym_Pause);
2708 cmd->advertising = cmd->supported;
2709 cmd->transceiver = XCVR_INTERNAL;
2710 if (gp->lstate == link_up)
2711 cmd->speed = SPEED_1000;
2712 cmd->duplex = DUPLEX_FULL;
2713 cmd->autoneg = 1;
2714 }
2683 } 2715 }
2684 cmd->maxtxpkt = cmd->maxrxpkt = 0; 2716 cmd->maxtxpkt = cmd->maxrxpkt = 0;
2685 2717
diff --git a/drivers/net/tlan.c b/drivers/net/tlan.c
index c41d68761364..e60498232b94 100644
--- a/drivers/net/tlan.c
+++ b/drivers/net/tlan.c
@@ -1098,6 +1098,7 @@ static int TLan_StartTx( struct sk_buff *skb, struct net_device *dev )
1098 dma_addr_t tail_list_phys; 1098 dma_addr_t tail_list_phys;
1099 u8 *tail_buffer; 1099 u8 *tail_buffer;
1100 unsigned long flags; 1100 unsigned long flags;
1101 unsigned int txlen;
1101 1102
1102 if ( ! priv->phyOnline ) { 1103 if ( ! priv->phyOnline ) {
1103 TLAN_DBG( TLAN_DEBUG_TX, "TRANSMIT: %s PHY is not ready\n", 1104 TLAN_DBG( TLAN_DEBUG_TX, "TRANSMIT: %s PHY is not ready\n",
@@ -1108,6 +1109,7 @@ static int TLan_StartTx( struct sk_buff *skb, struct net_device *dev )
1108 1109
1109 if (skb_padto(skb, TLAN_MIN_FRAME_SIZE)) 1110 if (skb_padto(skb, TLAN_MIN_FRAME_SIZE))
1110 return 0; 1111 return 0;
1112 txlen = max(skb->len, (unsigned int)TLAN_MIN_FRAME_SIZE);
1111 1113
1112 tail_list = priv->txList + priv->txTail; 1114 tail_list = priv->txList + priv->txTail;
1113 tail_list_phys = priv->txListDMA + sizeof(TLanList) * priv->txTail; 1115 tail_list_phys = priv->txListDMA + sizeof(TLanList) * priv->txTail;
@@ -1125,16 +1127,16 @@ static int TLan_StartTx( struct sk_buff *skb, struct net_device *dev )
1125 1127
1126 if ( bbuf ) { 1128 if ( bbuf ) {
1127 tail_buffer = priv->txBuffer + ( priv->txTail * TLAN_MAX_FRAME_SIZE ); 1129 tail_buffer = priv->txBuffer + ( priv->txTail * TLAN_MAX_FRAME_SIZE );
1128 skb_copy_from_linear_data(skb, tail_buffer, skb->len); 1130 skb_copy_from_linear_data(skb, tail_buffer, txlen);
1129 } else { 1131 } else {
1130 tail_list->buffer[0].address = pci_map_single(priv->pciDev, 1132 tail_list->buffer[0].address = pci_map_single(priv->pciDev,
1131 skb->data, skb->len, 1133 skb->data, txlen,
1132 PCI_DMA_TODEVICE); 1134 PCI_DMA_TODEVICE);
1133 TLan_StoreSKB(tail_list, skb); 1135 TLan_StoreSKB(tail_list, skb);
1134 } 1136 }
1135 1137
1136 tail_list->frameSize = (u16) skb->len; 1138 tail_list->frameSize = (u16) txlen;
1137 tail_list->buffer[0].count = TLAN_LAST_BUFFER | (u32) skb->len; 1139 tail_list->buffer[0].count = TLAN_LAST_BUFFER | (u32) txlen;
1138 tail_list->buffer[1].count = 0; 1140 tail_list->buffer[1].count = 0;
1139 tail_list->buffer[1].address = 0; 1141 tail_list->buffer[1].address = 0;
1140 1142
@@ -1431,7 +1433,9 @@ static u32 TLan_HandleTxEOF( struct net_device *dev, u16 host_int )
1431 if ( ! bbuf ) { 1433 if ( ! bbuf ) {
1432 struct sk_buff *skb = TLan_GetSKB(head_list); 1434 struct sk_buff *skb = TLan_GetSKB(head_list);
1433 pci_unmap_single(priv->pciDev, head_list->buffer[0].address, 1435 pci_unmap_single(priv->pciDev, head_list->buffer[0].address,
1434 skb->len, PCI_DMA_TODEVICE); 1436 max(skb->len,
1437 (unsigned int)TLAN_MIN_FRAME_SIZE),
1438 PCI_DMA_TODEVICE);
1435 dev_kfree_skb_any(skb); 1439 dev_kfree_skb_any(skb);
1436 head_list->buffer[8].address = 0; 1440 head_list->buffer[8].address = 0;
1437 head_list->buffer[9].address = 0; 1441 head_list->buffer[9].address = 0;
@@ -2055,9 +2059,12 @@ static void TLan_FreeLists( struct net_device *dev )
2055 list = priv->txList + i; 2059 list = priv->txList + i;
2056 skb = TLan_GetSKB(list); 2060 skb = TLan_GetSKB(list);
2057 if ( skb ) { 2061 if ( skb ) {
2058 pci_unmap_single(priv->pciDev, 2062 pci_unmap_single(
2059 list->buffer[0].address, skb->len, 2063 priv->pciDev,
2060 PCI_DMA_TODEVICE); 2064 list->buffer[0].address,
2065 max(skb->len,
2066 (unsigned int)TLAN_MIN_FRAME_SIZE),
2067 PCI_DMA_TODEVICE);
2061 dev_kfree_skb_any( skb ); 2068 dev_kfree_skb_any( skb );
2062 list->buffer[8].address = 0; 2069 list->buffer[8].address = 0;
2063 list->buffer[9].address = 0; 2070 list->buffer[9].address = 0;
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index cfd4d052d666..2d14255eb103 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -240,6 +240,10 @@ static u64 ath5k_get_tsf(struct ieee80211_hw *hw);
240static void ath5k_reset_tsf(struct ieee80211_hw *hw); 240static void ath5k_reset_tsf(struct ieee80211_hw *hw);
241static int ath5k_beacon_update(struct ieee80211_hw *hw, 241static int ath5k_beacon_update(struct ieee80211_hw *hw,
242 struct sk_buff *skb); 242 struct sk_buff *skb);
243static void ath5k_bss_info_changed(struct ieee80211_hw *hw,
244 struct ieee80211_vif *vif,
245 struct ieee80211_bss_conf *bss_conf,
246 u32 changes);
243 247
244static struct ieee80211_ops ath5k_hw_ops = { 248static struct ieee80211_ops ath5k_hw_ops = {
245 .tx = ath5k_tx, 249 .tx = ath5k_tx,
@@ -256,6 +260,7 @@ static struct ieee80211_ops ath5k_hw_ops = {
256 .get_tx_stats = ath5k_get_tx_stats, 260 .get_tx_stats = ath5k_get_tx_stats,
257 .get_tsf = ath5k_get_tsf, 261 .get_tsf = ath5k_get_tsf,
258 .reset_tsf = ath5k_reset_tsf, 262 .reset_tsf = ath5k_reset_tsf,
263 .bss_info_changed = ath5k_bss_info_changed,
259}; 264};
260 265
261/* 266/*
@@ -2942,7 +2947,7 @@ static void ath5k_configure_filter(struct ieee80211_hw *hw,
2942 sc->opmode != NL80211_IFTYPE_MESH_POINT && 2947 sc->opmode != NL80211_IFTYPE_MESH_POINT &&
2943 test_bit(ATH_STAT_PROMISC, sc->status)) 2948 test_bit(ATH_STAT_PROMISC, sc->status))
2944 rfilt |= AR5K_RX_FILTER_PROM; 2949 rfilt |= AR5K_RX_FILTER_PROM;
2945 if (sc->opmode == NL80211_IFTYPE_STATION || 2950 if ((sc->opmode == NL80211_IFTYPE_STATION && sc->assoc) ||
2946 sc->opmode == NL80211_IFTYPE_ADHOC) { 2951 sc->opmode == NL80211_IFTYPE_ADHOC) {
2947 rfilt |= AR5K_RX_FILTER_BEACON; 2952 rfilt |= AR5K_RX_FILTER_BEACON;
2948 } 2953 }
@@ -3083,4 +3088,32 @@ ath5k_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb)
3083end: 3088end:
3084 return ret; 3089 return ret;
3085} 3090}
3091static void
3092set_beacon_filter(struct ieee80211_hw *hw, bool enable)
3093{
3094 struct ath5k_softc *sc = hw->priv;
3095 struct ath5k_hw *ah = sc->ah;
3096 u32 rfilt;
3097 rfilt = ath5k_hw_get_rx_filter(ah);
3098 if (enable)
3099 rfilt |= AR5K_RX_FILTER_BEACON;
3100 else
3101 rfilt &= ~AR5K_RX_FILTER_BEACON;
3102 ath5k_hw_set_rx_filter(ah, rfilt);
3103 sc->filter_flags = rfilt;
3104}
3086 3105
3106static void ath5k_bss_info_changed(struct ieee80211_hw *hw,
3107 struct ieee80211_vif *vif,
3108 struct ieee80211_bss_conf *bss_conf,
3109 u32 changes)
3110{
3111 struct ath5k_softc *sc = hw->priv;
3112 if (changes & BSS_CHANGED_ASSOC) {
3113 mutex_lock(&sc->lock);
3114 sc->assoc = bss_conf->assoc;
3115 if (sc->opmode == NL80211_IFTYPE_STATION)
3116 set_beacon_filter(hw, sc->assoc);
3117 mutex_unlock(&sc->lock);
3118 }
3119}
diff --git a/drivers/net/wireless/ath5k/base.h b/drivers/net/wireless/ath5k/base.h
index 06d1054ca94b..facc60ddada2 100644
--- a/drivers/net/wireless/ath5k/base.h
+++ b/drivers/net/wireless/ath5k/base.h
@@ -179,6 +179,7 @@ struct ath5k_softc {
179 179
180 struct timer_list calib_tim; /* calibration timer */ 180 struct timer_list calib_tim; /* calibration timer */
181 int power_level; /* Requested tx power in dbm */ 181 int power_level; /* Requested tx power in dbm */
182 bool assoc; /* assocate state */
182}; 183};
183 184
184#define ath5k_hw_hasbssidmask(_ah) \ 185#define ath5k_hw_hasbssidmask(_ah) \
diff --git a/drivers/net/wireless/ath5k/debug.c b/drivers/net/wireless/ath5k/debug.c
index 19980cbd5d5f..ccaeb5c219d2 100644
--- a/drivers/net/wireless/ath5k/debug.c
+++ b/drivers/net/wireless/ath5k/debug.c
@@ -417,19 +417,19 @@ ath5k_debug_init_device(struct ath5k_softc *sc)
417 sc->debug.debugfs_phydir = debugfs_create_dir(wiphy_name(sc->hw->wiphy), 417 sc->debug.debugfs_phydir = debugfs_create_dir(wiphy_name(sc->hw->wiphy),
418 ath5k_global_debugfs); 418 ath5k_global_debugfs);
419 419
420 sc->debug.debugfs_debug = debugfs_create_file("debug", 0666, 420 sc->debug.debugfs_debug = debugfs_create_file("debug", S_IWUSR | S_IRUGO,
421 sc->debug.debugfs_phydir, sc, &fops_debug); 421 sc->debug.debugfs_phydir, sc, &fops_debug);
422 422
423 sc->debug.debugfs_registers = debugfs_create_file("registers", 0444, 423 sc->debug.debugfs_registers = debugfs_create_file("registers", S_IRUGO,
424 sc->debug.debugfs_phydir, sc, &fops_registers); 424 sc->debug.debugfs_phydir, sc, &fops_registers);
425 425
426 sc->debug.debugfs_tsf = debugfs_create_file("tsf", 0666, 426 sc->debug.debugfs_tsf = debugfs_create_file("tsf", S_IWUSR | S_IRUGO,
427 sc->debug.debugfs_phydir, sc, &fops_tsf); 427 sc->debug.debugfs_phydir, sc, &fops_tsf);
428 428
429 sc->debug.debugfs_beacon = debugfs_create_file("beacon", 0666, 429 sc->debug.debugfs_beacon = debugfs_create_file("beacon", S_IWUSR | S_IRUGO,
430 sc->debug.debugfs_phydir, sc, &fops_beacon); 430 sc->debug.debugfs_phydir, sc, &fops_beacon);
431 431
432 sc->debug.debugfs_reset = debugfs_create_file("reset", 0222, 432 sc->debug.debugfs_reset = debugfs_create_file("reset", S_IWUSR,
433 sc->debug.debugfs_phydir, sc, &fops_reset); 433 sc->debug.debugfs_phydir, sc, &fops_reset);
434} 434}
435 435
diff --git a/drivers/net/wireless/ath9k/beacon.c b/drivers/net/wireless/ath9k/beacon.c
index 9e15c30bbc06..4dd1c1bda0fb 100644
--- a/drivers/net/wireless/ath9k/beacon.c
+++ b/drivers/net/wireless/ath9k/beacon.c
@@ -170,7 +170,7 @@ static struct ath_buf *ath_beacon_generate(struct ath_softc *sc, int if_id)
170 skb = (struct sk_buff *)bf->bf_mpdu; 170 skb = (struct sk_buff *)bf->bf_mpdu;
171 if (skb) { 171 if (skb) {
172 pci_unmap_single(sc->pdev, bf->bf_dmacontext, 172 pci_unmap_single(sc->pdev, bf->bf_dmacontext,
173 skb_end_pointer(skb) - skb->head, 173 skb->len,
174 PCI_DMA_TODEVICE); 174 PCI_DMA_TODEVICE);
175 } 175 }
176 176
@@ -193,7 +193,7 @@ static struct ath_buf *ath_beacon_generate(struct ath_softc *sc, int if_id)
193 193
194 bf->bf_buf_addr = bf->bf_dmacontext = 194 bf->bf_buf_addr = bf->bf_dmacontext =
195 pci_map_single(sc->pdev, skb->data, 195 pci_map_single(sc->pdev, skb->data,
196 skb_end_pointer(skb) - skb->head, 196 skb->len,
197 PCI_DMA_TODEVICE); 197 PCI_DMA_TODEVICE);
198 198
199 skb = ieee80211_get_buffered_bc(sc->hw, avp->av_if_data); 199 skb = ieee80211_get_buffered_bc(sc->hw, avp->av_if_data);
@@ -352,7 +352,7 @@ int ath_beacon_alloc(struct ath_softc *sc, int if_id)
352 if (bf->bf_mpdu != NULL) { 352 if (bf->bf_mpdu != NULL) {
353 skb = (struct sk_buff *)bf->bf_mpdu; 353 skb = (struct sk_buff *)bf->bf_mpdu;
354 pci_unmap_single(sc->pdev, bf->bf_dmacontext, 354 pci_unmap_single(sc->pdev, bf->bf_dmacontext,
355 skb_end_pointer(skb) - skb->head, 355 skb->len,
356 PCI_DMA_TODEVICE); 356 PCI_DMA_TODEVICE);
357 dev_kfree_skb_any(skb); 357 dev_kfree_skb_any(skb);
358 bf->bf_mpdu = NULL; 358 bf->bf_mpdu = NULL;
@@ -412,7 +412,7 @@ int ath_beacon_alloc(struct ath_softc *sc, int if_id)
412 412
413 bf->bf_buf_addr = bf->bf_dmacontext = 413 bf->bf_buf_addr = bf->bf_dmacontext =
414 pci_map_single(sc->pdev, skb->data, 414 pci_map_single(sc->pdev, skb->data,
415 skb_end_pointer(skb) - skb->head, 415 skb->len,
416 PCI_DMA_TODEVICE); 416 PCI_DMA_TODEVICE);
417 bf->bf_mpdu = skb; 417 bf->bf_mpdu = skb;
418 418
@@ -439,7 +439,7 @@ void ath_beacon_return(struct ath_softc *sc, struct ath_vap *avp)
439 if (bf->bf_mpdu != NULL) { 439 if (bf->bf_mpdu != NULL) {
440 struct sk_buff *skb = (struct sk_buff *)bf->bf_mpdu; 440 struct sk_buff *skb = (struct sk_buff *)bf->bf_mpdu;
441 pci_unmap_single(sc->pdev, bf->bf_dmacontext, 441 pci_unmap_single(sc->pdev, bf->bf_dmacontext,
442 skb_end_pointer(skb) - skb->head, 442 skb->len,
443 PCI_DMA_TODEVICE); 443 PCI_DMA_TODEVICE);
444 dev_kfree_skb_any(skb); 444 dev_kfree_skb_any(skb);
445 bf->bf_mpdu = NULL; 445 bf->bf_mpdu = NULL;
diff --git a/drivers/net/wireless/ath9k/recv.c b/drivers/net/wireless/ath9k/recv.c
index 4983402af559..504a0444d89f 100644
--- a/drivers/net/wireless/ath9k/recv.c
+++ b/drivers/net/wireless/ath9k/recv.c
@@ -49,10 +49,12 @@ static void ath_rx_buf_link(struct ath_softc *sc, struct ath_buf *bf)
49 ASSERT(skb != NULL); 49 ASSERT(skb != NULL);
50 ds->ds_vdata = skb->data; 50 ds->ds_vdata = skb->data;
51 51
52 /* setup rx descriptors */ 52 /* setup rx descriptors. The sc_rxbufsize here tells the harware
53 * how much data it can DMA to us and that we are prepared
54 * to process */
53 ath9k_hw_setuprxdesc(ah, 55 ath9k_hw_setuprxdesc(ah,
54 ds, 56 ds,
55 skb_tailroom(skb), /* buffer size */ 57 sc->sc_rxbufsize,
56 0); 58 0);
57 59
58 if (sc->sc_rxlink == NULL) 60 if (sc->sc_rxlink == NULL)
@@ -398,6 +400,13 @@ static struct sk_buff *ath_rxbuf_alloc(struct ath_softc *sc,
398 * in rx'd frames. 400 * in rx'd frames.
399 */ 401 */
400 402
403 /* Note: the kernel can allocate a value greater than
404 * what we ask it to give us. We really only need 4 KB as that
405 * is this hardware supports and in fact we need at least 3849
406 * as that is the MAX AMSDU size this hardware supports.
407 * Unfortunately this means we may get 8 KB here from the
408 * kernel... and that is actually what is observed on some
409 * systems :( */
401 skb = dev_alloc_skb(len + sc->sc_cachelsz - 1); 410 skb = dev_alloc_skb(len + sc->sc_cachelsz - 1);
402 if (skb != NULL) { 411 if (skb != NULL) {
403 off = ((unsigned long) skb->data) % sc->sc_cachelsz; 412 off = ((unsigned long) skb->data) % sc->sc_cachelsz;
@@ -456,7 +465,7 @@ static int ath_rx_indicate(struct ath_softc *sc,
456 if (nskb != NULL) { 465 if (nskb != NULL) {
457 bf->bf_mpdu = nskb; 466 bf->bf_mpdu = nskb;
458 bf->bf_buf_addr = pci_map_single(sc->pdev, nskb->data, 467 bf->bf_buf_addr = pci_map_single(sc->pdev, nskb->data,
459 skb_end_pointer(nskb) - nskb->head, 468 sc->sc_rxbufsize,
460 PCI_DMA_FROMDEVICE); 469 PCI_DMA_FROMDEVICE);
461 bf->bf_dmacontext = bf->bf_buf_addr; 470 bf->bf_dmacontext = bf->bf_buf_addr;
462 ATH_RX_CONTEXT(nskb)->ctx_rxbuf = bf; 471 ATH_RX_CONTEXT(nskb)->ctx_rxbuf = bf;
@@ -542,7 +551,7 @@ int ath_rx_init(struct ath_softc *sc, int nbufs)
542 551
543 bf->bf_mpdu = skb; 552 bf->bf_mpdu = skb;
544 bf->bf_buf_addr = pci_map_single(sc->pdev, skb->data, 553 bf->bf_buf_addr = pci_map_single(sc->pdev, skb->data,
545 skb_end_pointer(skb) - skb->head, 554 sc->sc_rxbufsize,
546 PCI_DMA_FROMDEVICE); 555 PCI_DMA_FROMDEVICE);
547 bf->bf_dmacontext = bf->bf_buf_addr; 556 bf->bf_dmacontext = bf->bf_buf_addr;
548 ATH_RX_CONTEXT(skb)->ctx_rxbuf = bf; 557 ATH_RX_CONTEXT(skb)->ctx_rxbuf = bf;
@@ -1007,7 +1016,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush)
1007 1016
1008 pci_dma_sync_single_for_cpu(sc->pdev, 1017 pci_dma_sync_single_for_cpu(sc->pdev,
1009 bf->bf_buf_addr, 1018 bf->bf_buf_addr,
1010 skb_tailroom(skb), 1019 sc->sc_rxbufsize,
1011 PCI_DMA_FROMDEVICE); 1020 PCI_DMA_FROMDEVICE);
1012 pci_unmap_single(sc->pdev, 1021 pci_unmap_single(sc->pdev,
1013 bf->bf_buf_addr, 1022 bf->bf_buf_addr,
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
index dcce3542d5a7..7a9f901d4ff6 100644
--- a/drivers/net/wireless/ipw2200.c
+++ b/drivers/net/wireless/ipw2200.c
@@ -3897,6 +3897,7 @@ static int ipw_disassociate(void *data)
3897 if (!(priv->status & (STATUS_ASSOCIATED | STATUS_ASSOCIATING))) 3897 if (!(priv->status & (STATUS_ASSOCIATED | STATUS_ASSOCIATING)))
3898 return 0; 3898 return 0;
3899 ipw_send_disassociate(data, 0); 3899 ipw_send_disassociate(data, 0);
3900 netif_carrier_off(priv->net_dev);
3900 return 1; 3901 return 1;
3901} 3902}
3902 3903
@@ -10190,6 +10191,9 @@ static int ipw_tx_skb(struct ipw_priv *priv, struct ieee80211_txb *txb,
10190 u16 remaining_bytes; 10191 u16 remaining_bytes;
10191 int fc; 10192 int fc;
10192 10193
10194 if (!(priv->status & STATUS_ASSOCIATED))
10195 goto drop;
10196
10193 hdr_len = ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl)); 10197 hdr_len = ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl));
10194 switch (priv->ieee->iw_mode) { 10198 switch (priv->ieee->iw_mode) {
10195 case IW_MODE_ADHOC: 10199 case IW_MODE_ADHOC:
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 444c5cc05f03..c4c0371c763b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1384,9 +1384,11 @@ void iwl_rx_handle(struct iwl_priv *priv)
1384 1384
1385 rxq->queue[i] = NULL; 1385 rxq->queue[i] = NULL;
1386 1386
1387 pci_dma_sync_single_for_cpu(priv->pci_dev, rxb->aligned_dma_addr, 1387 dma_sync_single_range_for_cpu(
1388 priv->hw_params.rx_buf_size, 1388 &priv->pci_dev->dev, rxb->real_dma_addr,
1389 PCI_DMA_FROMDEVICE); 1389 rxb->aligned_dma_addr - rxb->real_dma_addr,
1390 priv->hw_params.rx_buf_size,
1391 PCI_DMA_FROMDEVICE);
1390 pkt = (struct iwl_rx_packet *)rxb->skb->data; 1392 pkt = (struct iwl_rx_packet *)rxb->skb->data;
1391 1393
1392 /* Reclaim a command buffer only if this packet is a response 1394 /* Reclaim a command buffer only if this packet is a response
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 4c312c55f90c..01a845851338 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -290,6 +290,9 @@ void iwl_clear_stations_table(struct iwl_priv *priv)
290 priv->num_stations = 0; 290 priv->num_stations = 0;
291 memset(priv->stations, 0, sizeof(priv->stations)); 291 memset(priv->stations, 0, sizeof(priv->stations));
292 292
293 /* clean ucode key table bit map */
294 priv->ucode_key_table = 0;
295
293 spin_unlock_irqrestore(&priv->sta_lock, flags); 296 spin_unlock_irqrestore(&priv->sta_lock, flags);
294} 297}
295EXPORT_SYMBOL(iwl_clear_stations_table); 298EXPORT_SYMBOL(iwl_clear_stations_table);
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c
index 61797f3f8d5c..26f7084d3011 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.c
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.c
@@ -475,7 +475,7 @@ static int iwl_get_free_ucode_key_index(struct iwl_priv *priv)
475 if (!test_and_set_bit(i, &priv->ucode_key_table)) 475 if (!test_and_set_bit(i, &priv->ucode_key_table))
476 return i; 476 return i;
477 477
478 return -1; 478 return WEP_INVALID_OFFSET;
479} 479}
480 480
481int iwl_send_static_wepkey_cmd(struct iwl_priv *priv, u8 send_if_empty) 481int iwl_send_static_wepkey_cmd(struct iwl_priv *priv, u8 send_if_empty)
@@ -620,6 +620,9 @@ static int iwl_set_wep_dynamic_key_info(struct iwl_priv *priv,
620 /* else, we are overriding an existing key => no need to allocated room 620 /* else, we are overriding an existing key => no need to allocated room
621 * in uCode. */ 621 * in uCode. */
622 622
623 WARN(priv->stations[sta_id].sta.key.key_offset == WEP_INVALID_OFFSET,
624 "no space for new kew");
625
623 priv->stations[sta_id].sta.key.key_flags = key_flags; 626 priv->stations[sta_id].sta.key.key_flags = key_flags;
624 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_KEY_MASK; 627 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_KEY_MASK;
625 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK; 628 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
@@ -637,6 +640,7 @@ static int iwl_set_ccmp_dynamic_key_info(struct iwl_priv *priv,
637{ 640{
638 unsigned long flags; 641 unsigned long flags;
639 __le16 key_flags = 0; 642 __le16 key_flags = 0;
643 int ret;
640 644
641 key_flags |= (STA_KEY_FLG_CCMP | STA_KEY_FLG_MAP_KEY_MSK); 645 key_flags |= (STA_KEY_FLG_CCMP | STA_KEY_FLG_MAP_KEY_MSK);
642 key_flags |= cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS); 646 key_flags |= cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS);
@@ -664,14 +668,18 @@ static int iwl_set_ccmp_dynamic_key_info(struct iwl_priv *priv,
664 /* else, we are overriding an existing key => no need to allocated room 668 /* else, we are overriding an existing key => no need to allocated room
665 * in uCode. */ 669 * in uCode. */
666 670
671 WARN(priv->stations[sta_id].sta.key.key_offset == WEP_INVALID_OFFSET,
672 "no space for new kew");
673
667 priv->stations[sta_id].sta.key.key_flags = key_flags; 674 priv->stations[sta_id].sta.key.key_flags = key_flags;
668 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_KEY_MASK; 675 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_KEY_MASK;
669 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK; 676 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
670 677
678 ret = iwl_send_add_sta(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
679
671 spin_unlock_irqrestore(&priv->sta_lock, flags); 680 spin_unlock_irqrestore(&priv->sta_lock, flags);
672 681
673 IWL_DEBUG_INFO("hwcrypto: modify ucode station key info\n"); 682 return ret;
674 return iwl_send_add_sta(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
675} 683}
676 684
677static int iwl_set_tkip_dynamic_key_info(struct iwl_priv *priv, 685static int iwl_set_tkip_dynamic_key_info(struct iwl_priv *priv,
@@ -696,6 +704,9 @@ static int iwl_set_tkip_dynamic_key_info(struct iwl_priv *priv,
696 /* else, we are overriding an existing key => no need to allocated room 704 /* else, we are overriding an existing key => no need to allocated room
697 * in uCode. */ 705 * in uCode. */
698 706
707 WARN(priv->stations[sta_id].sta.key.key_offset == WEP_INVALID_OFFSET,
708 "no space for new kew");
709
699 /* This copy is acutally not needed: we get the key with each TX */ 710 /* This copy is acutally not needed: we get the key with each TX */
700 memcpy(priv->stations[sta_id].keyinfo.key, keyconf->key, 16); 711 memcpy(priv->stations[sta_id].keyinfo.key, keyconf->key, 16);
701 712
@@ -734,6 +745,13 @@ int iwl_remove_dynamic_key(struct iwl_priv *priv,
734 return 0; 745 return 0;
735 } 746 }
736 747
748 if (priv->stations[sta_id].sta.key.key_offset == WEP_INVALID_OFFSET) {
749 IWL_WARNING("Removing wrong key %d 0x%x\n",
750 keyconf->keyidx, key_flags);
751 spin_unlock_irqrestore(&priv->sta_lock, flags);
752 return 0;
753 }
754
737 if (!test_and_clear_bit(priv->stations[sta_id].sta.key.key_offset, 755 if (!test_and_clear_bit(priv->stations[sta_id].sta.key.key_offset,
738 &priv->ucode_key_table)) 756 &priv->ucode_key_table))
739 IWL_ERROR("index %d not used in uCode key table.\n", 757 IWL_ERROR("index %d not used in uCode key table.\n",
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c
index fe1867b25ff7..cac732f4047f 100644
--- a/drivers/net/wireless/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/zd1211rw/zd_mac.c
@@ -615,7 +615,7 @@ static int filter_ack(struct ieee80211_hw *hw, struct ieee80211_hdr *rx_hdr,
615 struct ieee80211_hdr *tx_hdr; 615 struct ieee80211_hdr *tx_hdr;
616 616
617 tx_hdr = (struct ieee80211_hdr *)skb->data; 617 tx_hdr = (struct ieee80211_hdr *)skb->data;
618 if (likely(!compare_ether_addr(tx_hdr->addr2, rx_hdr->addr1))) 618 if (likely(!memcmp(tx_hdr->addr2, rx_hdr->addr1, ETH_ALEN)))
619 { 619 {
620 __skb_unlink(skb, q); 620 __skb_unlink(skb, q);
621 tx_status(hw, skb, IEEE80211_TX_STAT_ACK, stats->signal, 1); 621 tx_status(hw, skb, IEEE80211_TX_STAT_ACK, stats->signal, 1);
diff --git a/drivers/pci/hotplug/acpiphp.h b/drivers/pci/hotplug/acpiphp.h
index f9e244da30ae..9bcb6cbd5aa9 100644
--- a/drivers/pci/hotplug/acpiphp.h
+++ b/drivers/pci/hotplug/acpiphp.h
@@ -113,7 +113,7 @@ struct acpiphp_slot {
113 113
114 u8 device; /* pci device# */ 114 u8 device; /* pci device# */
115 115
116 u32 sun; /* ACPI _SUN (slot unique number) */ 116 unsigned long long sun; /* ACPI _SUN (slot unique number) */
117 u32 flags; /* see below */ 117 u32 flags; /* see below */
118}; 118};
119 119
diff --git a/drivers/pci/hotplug/acpiphp_core.c b/drivers/pci/hotplug/acpiphp_core.c
index 95b536a23d25..43c10bd261b4 100644
--- a/drivers/pci/hotplug/acpiphp_core.c
+++ b/drivers/pci/hotplug/acpiphp_core.c
@@ -337,7 +337,7 @@ int acpiphp_register_hotplug_slot(struct acpiphp_slot *acpiphp_slot)
337 slot->hotplug_slot->info->cur_bus_speed = PCI_SPEED_UNKNOWN; 337 slot->hotplug_slot->info->cur_bus_speed = PCI_SPEED_UNKNOWN;
338 338
339 acpiphp_slot->slot = slot; 339 acpiphp_slot->slot = slot;
340 snprintf(name, SLOT_NAME_SIZE, "%u", slot->acpi_slot->sun); 340 snprintf(name, SLOT_NAME_SIZE, "%llu", slot->acpi_slot->sun);
341 341
342 retval = pci_hp_register(slot->hotplug_slot, 342 retval = pci_hp_register(slot->hotplug_slot,
343 acpiphp_slot->bridge->pci_bus, 343 acpiphp_slot->bridge->pci_bus,
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index 955aae4071f7..3affc6472e65 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -255,13 +255,13 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
255 255
256 bridge->nr_slots++; 256 bridge->nr_slots++;
257 257
258 dbg("found ACPI PCI Hotplug slot %d at PCI %04x:%02x:%02x\n", 258 dbg("found ACPI PCI Hotplug slot %llu at PCI %04x:%02x:%02x\n",
259 slot->sun, pci_domain_nr(bridge->pci_bus), 259 slot->sun, pci_domain_nr(bridge->pci_bus),
260 bridge->pci_bus->number, slot->device); 260 bridge->pci_bus->number, slot->device);
261 retval = acpiphp_register_hotplug_slot(slot); 261 retval = acpiphp_register_hotplug_slot(slot);
262 if (retval) { 262 if (retval) {
263 if (retval == -EBUSY) 263 if (retval == -EBUSY)
264 warn("Slot %d already registered by another " 264 warn("Slot %llu already registered by another "
265 "hotplug driver\n", slot->sun); 265 "hotplug driver\n", slot->sun);
266 else 266 else
267 warn("acpiphp_register_hotplug_slot failed " 267 warn("acpiphp_register_hotplug_slot failed "
diff --git a/drivers/pci/hotplug/ibmphp_core.c b/drivers/pci/hotplug/ibmphp_core.c
index c892daae74d6..633e743442ac 100644
--- a/drivers/pci/hotplug/ibmphp_core.c
+++ b/drivers/pci/hotplug/ibmphp_core.c
@@ -1402,10 +1402,6 @@ static int __init ibmphp_init(void)
1402 goto error; 1402 goto error;
1403 } 1403 }
1404 1404
1405 /* lock ourselves into memory with a module
1406 * count of -1 so that no one can unload us. */
1407 module_put(THIS_MODULE);
1408
1409exit: 1405exit:
1410 return rc; 1406 return rc;
1411 1407
@@ -1423,4 +1419,3 @@ static void __exit ibmphp_exit(void)
1423} 1419}
1424 1420
1425module_init(ibmphp_init); 1421module_init(ibmphp_init);
1426module_exit(ibmphp_exit);
diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
index 4b23bc39b11e..39cf248d24e3 100644
--- a/drivers/pci/hotplug/pciehp_core.c
+++ b/drivers/pci/hotplug/pciehp_core.c
@@ -432,18 +432,19 @@ static int pciehp_probe(struct pcie_device *dev, const struct pcie_port_service_
432 goto err_out_release_ctlr; 432 goto err_out_release_ctlr;
433 } 433 }
434 434
435 /* Check if slot is occupied */
435 t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset); 436 t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset);
436 437 t_slot->hpc_ops->get_adapter_status(t_slot, &value);
437 t_slot->hpc_ops->get_adapter_status(t_slot, &value); /* Check if slot is occupied */ 438 if (value) {
438 if (value && pciehp_force) { 439 if (pciehp_force)
439 rc = pciehp_enable_slot(t_slot); 440 pciehp_enable_slot(t_slot);
440 if (rc) /* -ENODEV: shouldn't happen, but deal with it */ 441 } else {
441 value = 0; 442 /* Power off slot if not occupied */
442 } 443 if (POWER_CTRL(ctrl)) {
443 if ((POWER_CTRL(ctrl)) && !value) { 444 rc = t_slot->hpc_ops->power_off_slot(t_slot);
444 rc = t_slot->hpc_ops->power_off_slot(t_slot); /* Power off slot if not occupied*/ 445 if (rc)
445 if (rc) 446 goto err_out_free_ctrl_slot;
446 goto err_out_free_ctrl_slot; 447 }
447 } 448 }
448 449
449 return 0; 450 return 0;
diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c
index dfc63d01f20a..aac7006949f1 100644
--- a/drivers/pci/pcie/aer/aerdrv_core.c
+++ b/drivers/pci/pcie/aer/aerdrv_core.c
@@ -252,7 +252,7 @@ static void report_resume(struct pci_dev *dev, void *data)
252 252
253 if (!dev->driver || 253 if (!dev->driver ||
254 !dev->driver->err_handler || 254 !dev->driver->err_handler ||
255 !dev->driver->err_handler->slot_reset) 255 !dev->driver->err_handler->resume)
256 return; 256 return;
257 257
258 err_handler = dev->driver->err_handler; 258 err_handler = dev->driver->err_handler;
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 8f63f4c6b85f..9aad608bcf3f 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -16,6 +16,7 @@
16#include <linux/pm.h> 16#include <linux/pm.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/slab.h> 18#include <linux/slab.h>
19#include <linux/jiffies.h>
19#include <linux/pci-aspm.h> 20#include <linux/pci-aspm.h>
20#include "../pci.h" 21#include "../pci.h"
21 22
@@ -161,11 +162,12 @@ static void pcie_check_clock_pm(struct pci_dev *pdev)
161 */ 162 */
162static void pcie_aspm_configure_common_clock(struct pci_dev *pdev) 163static void pcie_aspm_configure_common_clock(struct pci_dev *pdev)
163{ 164{
164 int pos, child_pos; 165 int pos, child_pos, i = 0;
165 u16 reg16 = 0; 166 u16 reg16 = 0;
166 struct pci_dev *child_dev; 167 struct pci_dev *child_dev;
167 int same_clock = 1; 168 int same_clock = 1;
168 169 unsigned long start_jiffies;
170 u16 child_regs[8], parent_reg;
169 /* 171 /*
170 * all functions of a slot should have the same Slot Clock 172 * all functions of a slot should have the same Slot Clock
171 * Configuration, so just check one function 173 * Configuration, so just check one function
@@ -191,16 +193,19 @@ static void pcie_aspm_configure_common_clock(struct pci_dev *pdev)
191 child_pos = pci_find_capability(child_dev, PCI_CAP_ID_EXP); 193 child_pos = pci_find_capability(child_dev, PCI_CAP_ID_EXP);
192 pci_read_config_word(child_dev, child_pos + PCI_EXP_LNKCTL, 194 pci_read_config_word(child_dev, child_pos + PCI_EXP_LNKCTL,
193 &reg16); 195 &reg16);
196 child_regs[i] = reg16;
194 if (same_clock) 197 if (same_clock)
195 reg16 |= PCI_EXP_LNKCTL_CCC; 198 reg16 |= PCI_EXP_LNKCTL_CCC;
196 else 199 else
197 reg16 &= ~PCI_EXP_LNKCTL_CCC; 200 reg16 &= ~PCI_EXP_LNKCTL_CCC;
198 pci_write_config_word(child_dev, child_pos + PCI_EXP_LNKCTL, 201 pci_write_config_word(child_dev, child_pos + PCI_EXP_LNKCTL,
199 reg16); 202 reg16);
203 i++;
200 } 204 }
201 205
202 /* Configure upstream component */ 206 /* Configure upstream component */
203 pci_read_config_word(pdev, pos + PCI_EXP_LNKCTL, &reg16); 207 pci_read_config_word(pdev, pos + PCI_EXP_LNKCTL, &reg16);
208 parent_reg = reg16;
204 if (same_clock) 209 if (same_clock)
205 reg16 |= PCI_EXP_LNKCTL_CCC; 210 reg16 |= PCI_EXP_LNKCTL_CCC;
206 else 211 else
@@ -212,12 +217,30 @@ static void pcie_aspm_configure_common_clock(struct pci_dev *pdev)
212 pci_write_config_word(pdev, pos + PCI_EXP_LNKCTL, reg16); 217 pci_write_config_word(pdev, pos + PCI_EXP_LNKCTL, reg16);
213 218
214 /* Wait for link training end */ 219 /* Wait for link training end */
215 while (1) { 220 /* break out after waiting for 1 second */
221 start_jiffies = jiffies;
222 while ((jiffies - start_jiffies) < HZ) {
216 pci_read_config_word(pdev, pos + PCI_EXP_LNKSTA, &reg16); 223 pci_read_config_word(pdev, pos + PCI_EXP_LNKSTA, &reg16);
217 if (!(reg16 & PCI_EXP_LNKSTA_LT)) 224 if (!(reg16 & PCI_EXP_LNKSTA_LT))
218 break; 225 break;
219 cpu_relax(); 226 cpu_relax();
220 } 227 }
228 /* training failed -> recover */
229 if ((jiffies - start_jiffies) >= HZ) {
230 dev_printk (KERN_ERR, &pdev->dev, "ASPM: Could not configure"
231 " common clock\n");
232 i = 0;
233 list_for_each_entry(child_dev, &pdev->subordinate->devices,
234 bus_list) {
235 child_pos = pci_find_capability(child_dev,
236 PCI_CAP_ID_EXP);
237 pci_write_config_word(child_dev,
238 child_pos + PCI_EXP_LNKCTL,
239 child_regs[i]);
240 i++;
241 }
242 pci_write_config_word(pdev, pos + PCI_EXP_LNKCTL, parent_reg);
243 }
221} 244}
222 245
223/* 246/*
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 5049a47030ac..ce0985615133 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -22,6 +22,7 @@
22#include <linux/delay.h> 22#include <linux/delay.h>
23#include <linux/acpi.h> 23#include <linux/acpi.h>
24#include <linux/kallsyms.h> 24#include <linux/kallsyms.h>
25#include <linux/dmi.h>
25#include "pci.h" 26#include "pci.h"
26 27
27int isa_dma_bridge_buggy; 28int isa_dma_bridge_buggy;
@@ -605,27 +606,6 @@ static void __init quirk_ioapic_rmw(struct pci_dev *dev)
605 sis_apic_bug = 1; 606 sis_apic_bug = 1;
606} 607}
607DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, PCI_ANY_ID, quirk_ioapic_rmw); 608DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, PCI_ANY_ID, quirk_ioapic_rmw);
608
609#define AMD8131_revA0 0x01
610#define AMD8131_revB0 0x11
611#define AMD8131_MISC 0x40
612#define AMD8131_NIOAMODE_BIT 0
613static void quirk_amd_8131_ioapic(struct pci_dev *dev)
614{
615 unsigned char tmp;
616
617 if (nr_ioapics == 0)
618 return;
619
620 if (dev->revision == AMD8131_revA0 || dev->revision == AMD8131_revB0) {
621 dev_info(&dev->dev, "Fixing up AMD8131 IOAPIC mode\n");
622 pci_read_config_byte( dev, AMD8131_MISC, &tmp);
623 tmp &= ~(1 << AMD8131_NIOAMODE_BIT);
624 pci_write_config_byte( dev, AMD8131_MISC, tmp);
625 }
626}
627DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_amd_8131_ioapic);
628DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_amd_8131_ioapic);
629#endif /* CONFIG_X86_IO_APIC */ 609#endif /* CONFIG_X86_IO_APIC */
630 610
631/* 611/*
@@ -1422,6 +1402,155 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x2609, quirk_intel_pcie_pm);
1422DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x260a, quirk_intel_pcie_pm); 1402DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x260a, quirk_intel_pcie_pm);
1423DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x260b, quirk_intel_pcie_pm); 1403DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x260b, quirk_intel_pcie_pm);
1424 1404
1405#ifdef CONFIG_X86_IO_APIC
1406/*
1407 * Boot interrupts on some chipsets cannot be turned off. For these chipsets,
1408 * remap the original interrupt in the linux kernel to the boot interrupt, so
1409 * that a PCI device's interrupt handler is installed on the boot interrupt
1410 * line instead.
1411 */
1412static void quirk_reroute_to_boot_interrupts_intel(struct pci_dev *dev)
1413{
1414 if (noioapicquirk || noioapicreroute)
1415 return;
1416
1417 dev->irq_reroute_variant = INTEL_IRQ_REROUTE_VARIANT;
1418
1419 printk(KERN_INFO "PCI quirk: reroute interrupts for 0x%04x:0x%04x\n",
1420 dev->vendor, dev->device);
1421 return;
1422}
1423DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80333_0, quirk_reroute_to_boot_interrupts_intel);
1424DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80333_1, quirk_reroute_to_boot_interrupts_intel);
1425DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_0, quirk_reroute_to_boot_interrupts_intel);
1426DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_0, quirk_reroute_to_boot_interrupts_intel);
1427DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_1, quirk_reroute_to_boot_interrupts_intel);
1428DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHV, quirk_reroute_to_boot_interrupts_intel);
1429DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80332_0, quirk_reroute_to_boot_interrupts_intel);
1430DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80332_1, quirk_reroute_to_boot_interrupts_intel);
1431DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80333_0, quirk_reroute_to_boot_interrupts_intel);
1432DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80333_1, quirk_reroute_to_boot_interrupts_intel);
1433DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_0, quirk_reroute_to_boot_interrupts_intel);
1434DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_0, quirk_reroute_to_boot_interrupts_intel);
1435DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_1, quirk_reroute_to_boot_interrupts_intel);
1436DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHV, quirk_reroute_to_boot_interrupts_intel);
1437DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80332_0, quirk_reroute_to_boot_interrupts_intel);
1438DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80332_1, quirk_reroute_to_boot_interrupts_intel);
1439
1440/*
1441 * On some chipsets we can disable the generation of legacy INTx boot
1442 * interrupts.
1443 */
1444
1445/*
1446 * IO-APIC1 on 6300ESB generates boot interrupts, see intel order no
1447 * 300641-004US, section 5.7.3.
1448 */
1449#define INTEL_6300_IOAPIC_ABAR 0x40
1450#define INTEL_6300_DISABLE_BOOT_IRQ (1<<14)
1451
1452static void quirk_disable_intel_boot_interrupt(struct pci_dev *dev)
1453{
1454 u16 pci_config_word;
1455
1456 if (noioapicquirk)
1457 return;
1458
1459 pci_read_config_word(dev, INTEL_6300_IOAPIC_ABAR, &pci_config_word);
1460 pci_config_word |= INTEL_6300_DISABLE_BOOT_IRQ;
1461 pci_write_config_word(dev, INTEL_6300_IOAPIC_ABAR, pci_config_word);
1462
1463 printk(KERN_INFO "disabled boot interrupt on device 0x%04x:0x%04x\n",
1464 dev->vendor, dev->device);
1465}
1466DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_10, quirk_disable_intel_boot_interrupt);
1467DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_10, quirk_disable_intel_boot_interrupt);
1468
1469/*
1470 * disable boot interrupts on HT-1000
1471 */
1472#define BC_HT1000_FEATURE_REG 0x64
1473#define BC_HT1000_PIC_REGS_ENABLE (1<<0)
1474#define BC_HT1000_MAP_IDX 0xC00
1475#define BC_HT1000_MAP_DATA 0xC01
1476
1477static void quirk_disable_broadcom_boot_interrupt(struct pci_dev *dev)
1478{
1479 u32 pci_config_dword;
1480 u8 irq;
1481
1482 if (noioapicquirk)
1483 return;
1484
1485 pci_read_config_dword(dev, BC_HT1000_FEATURE_REG, &pci_config_dword);
1486 pci_write_config_dword(dev, BC_HT1000_FEATURE_REG, pci_config_dword |
1487 BC_HT1000_PIC_REGS_ENABLE);
1488
1489 for (irq = 0x10; irq < 0x10 + 32; irq++) {
1490 outb(irq, BC_HT1000_MAP_IDX);
1491 outb(0x00, BC_HT1000_MAP_DATA);
1492 }
1493
1494 pci_write_config_dword(dev, BC_HT1000_FEATURE_REG, pci_config_dword);
1495
1496 printk(KERN_INFO "disabled boot interrupts on PCI device"
1497 "0x%04x:0x%04x\n", dev->vendor, dev->device);
1498}
1499DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000SB, quirk_disable_broadcom_boot_interrupt);
1500DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000SB, quirk_disable_broadcom_boot_interrupt);
1501
1502/*
1503 * disable boot interrupts on AMD and ATI chipsets
1504 */
1505/*
1506 * NOIOAMODE needs to be disabled to disable "boot interrupts". For AMD 8131
1507 * rev. A0 and B0, NOIOAMODE needs to be disabled anyway to fix IO-APIC mode
1508 * (due to an erratum).
1509 */
1510#define AMD_813X_MISC 0x40
1511#define AMD_813X_NOIOAMODE (1<<0)
1512
1513static void quirk_disable_amd_813x_boot_interrupt(struct pci_dev *dev)
1514{
1515 u32 pci_config_dword;
1516
1517 if (noioapicquirk)
1518 return;
1519
1520 pci_read_config_dword(dev, AMD_813X_MISC, &pci_config_dword);
1521 pci_config_dword &= ~AMD_813X_NOIOAMODE;
1522 pci_write_config_dword(dev, AMD_813X_MISC, pci_config_dword);
1523
1524 printk(KERN_INFO "disabled boot interrupts on PCI device "
1525 "0x%04x:0x%04x\n", dev->vendor, dev->device);
1526}
1527DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_amd_813x_boot_interrupt);
1528DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8132_BRIDGE, quirk_disable_amd_813x_boot_interrupt);
1529
1530#define AMD_8111_PCI_IRQ_ROUTING 0x56
1531
1532static void quirk_disable_amd_8111_boot_interrupt(struct pci_dev *dev)
1533{
1534 u16 pci_config_word;
1535
1536 if (noioapicquirk)
1537 return;
1538
1539 pci_read_config_word(dev, AMD_8111_PCI_IRQ_ROUTING, &pci_config_word);
1540 if (!pci_config_word) {
1541 printk(KERN_INFO "boot interrupts on PCI device 0x%04x:0x%04x "
1542 "already disabled\n",
1543 dev->vendor, dev->device);
1544 return;
1545 }
1546 pci_write_config_word(dev, AMD_8111_PCI_IRQ_ROUTING, 0);
1547 printk(KERN_INFO "disabled boot interrupts on PCI device "
1548 "0x%04x:0x%04x\n", dev->vendor, dev->device);
1549}
1550DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8111_SMBUS, quirk_disable_amd_8111_boot_interrupt);
1551DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8111_SMBUS, quirk_disable_amd_8111_boot_interrupt);
1552#endif /* CONFIG_X86_IO_APIC */
1553
1425/* 1554/*
1426 * Toshiba TC86C001 IDE controller reports the standard 8-byte BAR0 size 1555 * Toshiba TC86C001 IDE controller reports the standard 8-byte BAR0 size
1427 * but the PIO transfers won't work if BAR0 falls at the odd 8 bytes. 1556 * but the PIO transfers won't work if BAR0 falls at the odd 8 bytes.
@@ -1828,6 +1957,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SERVERWORKS,
1828 PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB, 1957 PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB,
1829 ht_enable_msi_mapping); 1958 ht_enable_msi_mapping);
1830 1959
1960/* The P5N32-SLI Premium motherboard from Asus has a problem with msi
1961 * for the MCP55 NIC. It is not yet determined whether the msi problem
1962 * also affects other devices. As for now, turn off msi for this device.
1963 */
1964static void __devinit nvenet_msi_disable(struct pci_dev *dev)
1965{
1966 if (dmi_name_in_vendors("P5N32-SLI PREMIUM")) {
1967 dev_info(&dev->dev,
1968 "Disabling msi for MCP55 NIC on P5N32-SLI Premium\n");
1969 dev->no_msi = 1;
1970 }
1971}
1972DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_NVIDIA,
1973 PCI_DEVICE_ID_NVIDIA_NVENET_15,
1974 nvenet_msi_disable);
1975
1831static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev) 1976static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev)
1832{ 1977{
1833 struct pci_dev *host_bridge; 1978 struct pci_dev *host_bridge;
diff --git a/drivers/pci/slot.c b/drivers/pci/slot.c
index 4dd1c3e157ae..5a8ccb4f604d 100644
--- a/drivers/pci/slot.c
+++ b/drivers/pci/slot.c
@@ -253,6 +253,7 @@ placeholder:
253 __func__, pci_domain_nr(parent), parent->number, slot_nr); 253 __func__, pci_domain_nr(parent), parent->number, slot_nr);
254 254
255out: 255out:
256 kfree(slot_name);
256 up_write(&pci_bus_sem); 257 up_write(&pci_bus_sem);
257 return slot; 258 return slot;
258err: 259err:
diff --git a/drivers/pcmcia/bfin_cf_pcmcia.c b/drivers/pcmcia/bfin_cf_pcmcia.c
index bb7338863fb9..b59d4115d20f 100644
--- a/drivers/pcmcia/bfin_cf_pcmcia.c
+++ b/drivers/pcmcia/bfin_cf_pcmcia.c
@@ -334,6 +334,6 @@ static void __exit bfin_cf_exit(void)
334module_init(bfin_cf_init); 334module_init(bfin_cf_init);
335module_exit(bfin_cf_exit); 335module_exit(bfin_cf_exit);
336 336
337MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>") 337MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
338MODULE_DESCRIPTION("BFIN CF/PCMCIA Driver"); 338MODULE_DESCRIPTION("BFIN CF/PCMCIA Driver");
339MODULE_LICENSE("GPL"); 339MODULE_LICENSE("GPL");
diff --git a/drivers/rtc/rtc-ds1672.c b/drivers/rtc/rtc-ds1672.c
index 341d7a5b45a2..4e91419e8911 100644
--- a/drivers/rtc/rtc-ds1672.c
+++ b/drivers/rtc/rtc-ds1672.c
@@ -209,12 +209,18 @@ static int ds1672_probe(struct i2c_client *client,
209 return err; 209 return err;
210} 210}
211 211
212static struct i2c_device_id ds1672_id[] = {
213 { "ds1672", 0 },
214 { }
215};
216
212static struct i2c_driver ds1672_driver = { 217static struct i2c_driver ds1672_driver = {
213 .driver = { 218 .driver = {
214 .name = "rtc-ds1672", 219 .name = "rtc-ds1672",
215 }, 220 },
216 .probe = &ds1672_probe, 221 .probe = &ds1672_probe,
217 .remove = &ds1672_remove, 222 .remove = &ds1672_remove,
223 .id_table = ds1672_id,
218}; 224};
219 225
220static int __init ds1672_init(void) 226static int __init ds1672_init(void)
diff --git a/drivers/rtc/rtc-max6900.c b/drivers/rtc/rtc-max6900.c
index 80782798763f..a4f6665ab3c5 100644
--- a/drivers/rtc/rtc-max6900.c
+++ b/drivers/rtc/rtc-max6900.c
@@ -247,12 +247,18 @@ max6900_probe(struct i2c_client *client, const struct i2c_device_id *id)
247 return 0; 247 return 0;
248} 248}
249 249
250static struct i2c_device_id max6900_id[] = {
251 { "max6900", 0 },
252 { }
253};
254
250static struct i2c_driver max6900_driver = { 255static struct i2c_driver max6900_driver = {
251 .driver = { 256 .driver = {
252 .name = "rtc-max6900", 257 .name = "rtc-max6900",
253 }, 258 },
254 .probe = max6900_probe, 259 .probe = max6900_probe,
255 .remove = max6900_remove, 260 .remove = max6900_remove,
261 .id_table = max6900_id,
256}; 262};
257 263
258static int __init max6900_init(void) 264static int __init max6900_init(void)
diff --git a/drivers/rtc/rtc-starfire.c b/drivers/rtc/rtc-starfire.c
index 7ccb0dd700af..5be98bfd7ed3 100644
--- a/drivers/rtc/rtc-starfire.c
+++ b/drivers/rtc/rtc-starfire.c
@@ -6,7 +6,6 @@
6#include <linux/kernel.h> 6#include <linux/kernel.h>
7#include <linux/module.h> 7#include <linux/module.h>
8#include <linux/init.h> 8#include <linux/init.h>
9#include <linux/time.h>
10#include <linux/rtc.h> 9#include <linux/rtc.h>
11#include <linux/platform_device.h> 10#include <linux/platform_device.h>
12 11
@@ -16,11 +15,6 @@ MODULE_AUTHOR("David S. Miller <davem@davemloft.net>");
16MODULE_DESCRIPTION("Starfire RTC driver"); 15MODULE_DESCRIPTION("Starfire RTC driver");
17MODULE_LICENSE("GPL"); 16MODULE_LICENSE("GPL");
18 17
19struct starfire_rtc {
20 struct rtc_device *rtc;
21 spinlock_t lock;
22};
23
24static u32 starfire_get_time(void) 18static u32 starfire_get_time(void)
25{ 19{
26 static char obp_gettod[32]; 20 static char obp_gettod[32];
@@ -35,64 +29,31 @@ static u32 starfire_get_time(void)
35 29
36static int starfire_read_time(struct device *dev, struct rtc_time *tm) 30static int starfire_read_time(struct device *dev, struct rtc_time *tm)
37{ 31{
38 struct starfire_rtc *p = dev_get_drvdata(dev); 32 rtc_time_to_tm(starfire_get_time(), tm);
39 unsigned long flags, secs; 33 return rtc_valid_tm(tm);
40
41 spin_lock_irqsave(&p->lock, flags);
42 secs = starfire_get_time();
43 spin_unlock_irqrestore(&p->lock, flags);
44
45 rtc_time_to_tm(secs, tm);
46
47 return 0;
48}
49
50static int starfire_set_time(struct device *dev, struct rtc_time *tm)
51{
52 unsigned long secs;
53 int err;
54
55 err = rtc_tm_to_time(tm, &secs);
56 if (err)
57 return err;
58
59 /* Do nothing, time is set using the service processor
60 * console on this platform.
61 */
62 return 0;
63} 34}
64 35
65static const struct rtc_class_ops starfire_rtc_ops = { 36static const struct rtc_class_ops starfire_rtc_ops = {
66 .read_time = starfire_read_time, 37 .read_time = starfire_read_time,
67 .set_time = starfire_set_time,
68}; 38};
69 39
70static int __devinit starfire_rtc_probe(struct platform_device *pdev) 40static int __init starfire_rtc_probe(struct platform_device *pdev)
71{ 41{
72 struct starfire_rtc *p = kzalloc(sizeof(*p), GFP_KERNEL); 42 struct rtc_device *rtc = rtc_device_register("starfire", &pdev->dev,
73 43 &starfire_rtc_ops, THIS_MODULE);
74 if (!p) 44 if (IS_ERR(rtc))
75 return -ENOMEM; 45 return PTR_ERR(rtc);
76 46
77 spin_lock_init(&p->lock); 47 platform_set_drvdata(pdev, rtc);
78 48
79 p->rtc = rtc_device_register("starfire", &pdev->dev,
80 &starfire_rtc_ops, THIS_MODULE);
81 if (IS_ERR(p->rtc)) {
82 int err = PTR_ERR(p->rtc);
83 kfree(p);
84 return err;
85 }
86 platform_set_drvdata(pdev, p);
87 return 0; 49 return 0;
88} 50}
89 51
90static int __devexit starfire_rtc_remove(struct platform_device *pdev) 52static int __exit starfire_rtc_remove(struct platform_device *pdev)
91{ 53{
92 struct starfire_rtc *p = platform_get_drvdata(pdev); 54 struct rtc_device *rtc = platform_get_drvdata(pdev);
93 55
94 rtc_device_unregister(p->rtc); 56 rtc_device_unregister(rtc);
95 kfree(p);
96 57
97 return 0; 58 return 0;
98} 59}
@@ -102,13 +63,12 @@ static struct platform_driver starfire_rtc_driver = {
102 .name = "rtc-starfire", 63 .name = "rtc-starfire",
103 .owner = THIS_MODULE, 64 .owner = THIS_MODULE,
104 }, 65 },
105 .probe = starfire_rtc_probe, 66 .remove = __exit_p(starfire_rtc_remove),
106 .remove = __devexit_p(starfire_rtc_remove),
107}; 67};
108 68
109static int __init starfire_rtc_init(void) 69static int __init starfire_rtc_init(void)
110{ 70{
111 return platform_driver_register(&starfire_rtc_driver); 71 return platform_driver_probe(&starfire_rtc_driver, starfire_rtc_probe);
112} 72}
113 73
114static void __exit starfire_rtc_exit(void) 74static void __exit starfire_rtc_exit(void)
diff --git a/drivers/rtc/rtc-twl4030.c b/drivers/rtc/rtc-twl4030.c
index abe87a4d2665..01d8da9afdc8 100644
--- a/drivers/rtc/rtc-twl4030.c
+++ b/drivers/rtc/rtc-twl4030.c
@@ -337,7 +337,7 @@ static int twl4030_rtc_ioctl(struct device *dev, unsigned int cmd,
337} 337}
338 338
339#else 339#else
340#define omap_rtc_ioctl NULL 340#define twl4030_rtc_ioctl NULL
341#endif 341#endif
342 342
343static irqreturn_t twl4030_rtc_interrupt(int irq, void *rtc) 343static irqreturn_t twl4030_rtc_interrupt(int irq, void *rtc)
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c
index 35364f64da7f..c557ba34e1aa 100644
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -720,7 +720,6 @@ static int zfcp_erp_adapter_strategy_generic(struct zfcp_erp_action *act,
720 goto failed_openfcp; 720 goto failed_openfcp;
721 721
722 atomic_set_mask(ZFCP_STATUS_COMMON_OPEN, &act->adapter->status); 722 atomic_set_mask(ZFCP_STATUS_COMMON_OPEN, &act->adapter->status);
723 schedule_work(&act->adapter->scan_work);
724 723
725 return ZFCP_ERP_SUCCEEDED; 724 return ZFCP_ERP_SUCCEEDED;
726 725
@@ -1186,7 +1185,9 @@ static void zfcp_erp_scsi_scan(struct work_struct *work)
1186 container_of(work, struct zfcp_erp_add_work, work); 1185 container_of(work, struct zfcp_erp_add_work, work);
1187 struct zfcp_unit *unit = p->unit; 1186 struct zfcp_unit *unit = p->unit;
1188 struct fc_rport *rport = unit->port->rport; 1187 struct fc_rport *rport = unit->port->rport;
1189 scsi_scan_target(&rport->dev, 0, rport->scsi_target_id, 1188
1189 if (rport && rport->port_state == FC_PORTSTATE_ONLINE)
1190 scsi_scan_target(&rport->dev, 0, rport->scsi_target_id,
1190 scsilun_to_int((struct scsi_lun *)&unit->fcp_lun), 0); 1191 scsilun_to_int((struct scsi_lun *)&unit->fcp_lun), 0);
1191 atomic_clear_mask(ZFCP_STATUS_UNIT_SCSI_WORK_PENDING, &unit->status); 1192 atomic_clear_mask(ZFCP_STATUS_UNIT_SCSI_WORK_PENDING, &unit->status);
1192 zfcp_unit_put(unit); 1193 zfcp_unit_put(unit);
@@ -1282,6 +1283,8 @@ static void zfcp_erp_action_cleanup(struct zfcp_erp_action *act, int result)
1282 case ZFCP_ERP_ACTION_REOPEN_ADAPTER: 1283 case ZFCP_ERP_ACTION_REOPEN_ADAPTER:
1283 if (result != ZFCP_ERP_SUCCEEDED) 1284 if (result != ZFCP_ERP_SUCCEEDED)
1284 zfcp_erp_rports_del(adapter); 1285 zfcp_erp_rports_del(adapter);
1286 else
1287 schedule_work(&adapter->scan_work);
1285 zfcp_adapter_put(adapter); 1288 zfcp_adapter_put(adapter);
1286 break; 1289 break;
1287 } 1290 }
diff --git a/drivers/s390/scsi/zfcp_fc.c b/drivers/s390/scsi/zfcp_fc.c
index 1a7c80a77ff5..8aab3091a7b1 100644
--- a/drivers/s390/scsi/zfcp_fc.c
+++ b/drivers/s390/scsi/zfcp_fc.c
@@ -50,7 +50,8 @@ static int zfcp_wka_port_get(struct zfcp_wka_port *wka_port)
50 if (mutex_lock_interruptible(&wka_port->mutex)) 50 if (mutex_lock_interruptible(&wka_port->mutex))
51 return -ERESTARTSYS; 51 return -ERESTARTSYS;
52 52
53 if (wka_port->status != ZFCP_WKA_PORT_ONLINE) { 53 if (wka_port->status == ZFCP_WKA_PORT_OFFLINE ||
54 wka_port->status == ZFCP_WKA_PORT_CLOSING) {
54 wka_port->status = ZFCP_WKA_PORT_OPENING; 55 wka_port->status = ZFCP_WKA_PORT_OPENING;
55 if (zfcp_fsf_open_wka_port(wka_port)) 56 if (zfcp_fsf_open_wka_port(wka_port))
56 wka_port->status = ZFCP_WKA_PORT_OFFLINE; 57 wka_port->status = ZFCP_WKA_PORT_OFFLINE;
@@ -125,8 +126,7 @@ static void _zfcp_fc_incoming_rscn(struct zfcp_fsf_req *fsf_req, u32 range,
125 126
126 read_lock_irqsave(&zfcp_data.config_lock, flags); 127 read_lock_irqsave(&zfcp_data.config_lock, flags);
127 list_for_each_entry(port, &fsf_req->adapter->port_list_head, list) { 128 list_for_each_entry(port, &fsf_req->adapter->port_list_head, list) {
128 /* FIXME: ZFCP_STATUS_PORT_DID_DID check is racy */ 129 if (!(atomic_read(&port->status) & ZFCP_STATUS_PORT_PHYS_OPEN))
129 if (!(atomic_read(&port->status) & ZFCP_STATUS_PORT_DID_DID))
130 /* Try to connect to unused ports anyway. */ 130 /* Try to connect to unused ports anyway. */
131 zfcp_erp_port_reopen(port, 131 zfcp_erp_port_reopen(port,
132 ZFCP_STATUS_COMMON_ERP_FAILED, 132 ZFCP_STATUS_COMMON_ERP_FAILED,
@@ -610,7 +610,6 @@ int zfcp_scan_ports(struct zfcp_adapter *adapter)
610 int ret, i; 610 int ret, i;
611 struct zfcp_gpn_ft *gpn_ft; 611 struct zfcp_gpn_ft *gpn_ft;
612 612
613 zfcp_erp_wait(adapter); /* wait until adapter is finished with ERP */
614 if (fc_host_port_type(adapter->scsi_host) != FC_PORTTYPE_NPORT) 613 if (fc_host_port_type(adapter->scsi_host) != FC_PORTTYPE_NPORT)
615 return 0; 614 return 0;
616 615
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index d024442ee128..dc0367690405 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -930,8 +930,10 @@ struct zfcp_fsf_req *zfcp_fsf_abort_fcp_command(unsigned long old_req_id,
930 goto out; 930 goto out;
931 req = zfcp_fsf_req_create(adapter, FSF_QTCB_ABORT_FCP_CMND, 931 req = zfcp_fsf_req_create(adapter, FSF_QTCB_ABORT_FCP_CMND,
932 req_flags, adapter->pool.fsf_req_abort); 932 req_flags, adapter->pool.fsf_req_abort);
933 if (IS_ERR(req)) 933 if (IS_ERR(req)) {
934 req = NULL;
934 goto out; 935 goto out;
936 }
935 937
936 if (unlikely(!(atomic_read(&unit->status) & 938 if (unlikely(!(atomic_read(&unit->status) &
937 ZFCP_STATUS_COMMON_UNBLOCKED))) 939 ZFCP_STATUS_COMMON_UNBLOCKED)))
@@ -1584,6 +1586,7 @@ static void zfcp_fsf_open_wka_port_handler(struct zfcp_fsf_req *req)
1584 wka_port->status = ZFCP_WKA_PORT_OFFLINE; 1586 wka_port->status = ZFCP_WKA_PORT_OFFLINE;
1585 break; 1587 break;
1586 case FSF_PORT_ALREADY_OPEN: 1588 case FSF_PORT_ALREADY_OPEN:
1589 break;
1587 case FSF_GOOD: 1590 case FSF_GOOD:
1588 wka_port->handle = header->port_handle; 1591 wka_port->handle = header->port_handle;
1589 wka_port->status = ZFCP_WKA_PORT_ONLINE; 1592 wka_port->status = ZFCP_WKA_PORT_ONLINE;
@@ -2113,18 +2116,21 @@ static inline void zfcp_fsf_trace_latency(struct zfcp_fsf_req *fsf_req)
2113 2116
2114static void zfcp_fsf_send_fcp_command_task_handler(struct zfcp_fsf_req *req) 2117static void zfcp_fsf_send_fcp_command_task_handler(struct zfcp_fsf_req *req)
2115{ 2118{
2116 struct scsi_cmnd *scpnt = req->data; 2119 struct scsi_cmnd *scpnt;
2117 struct fcp_rsp_iu *fcp_rsp_iu = (struct fcp_rsp_iu *) 2120 struct fcp_rsp_iu *fcp_rsp_iu = (struct fcp_rsp_iu *)
2118 &(req->qtcb->bottom.io.fcp_rsp); 2121 &(req->qtcb->bottom.io.fcp_rsp);
2119 u32 sns_len; 2122 u32 sns_len;
2120 char *fcp_rsp_info = (unsigned char *) &fcp_rsp_iu[1]; 2123 char *fcp_rsp_info = (unsigned char *) &fcp_rsp_iu[1];
2121 unsigned long flags; 2124 unsigned long flags;
2122 2125
2123 if (unlikely(!scpnt))
2124 return;
2125
2126 read_lock_irqsave(&req->adapter->abort_lock, flags); 2126 read_lock_irqsave(&req->adapter->abort_lock, flags);
2127 2127
2128 scpnt = req->data;
2129 if (unlikely(!scpnt)) {
2130 read_unlock_irqrestore(&req->adapter->abort_lock, flags);
2131 return;
2132 }
2133
2128 if (unlikely(req->status & ZFCP_STATUS_FSFREQ_ABORTED)) { 2134 if (unlikely(req->status & ZFCP_STATUS_FSFREQ_ABORTED)) {
2129 set_host_byte(scpnt, DID_SOFT_ERROR); 2135 set_host_byte(scpnt, DID_SOFT_ERROR);
2130 set_driver_byte(scpnt, SUGGEST_RETRY); 2136 set_driver_byte(scpnt, SUGGEST_RETRY);
@@ -2442,8 +2448,10 @@ struct zfcp_fsf_req *zfcp_fsf_send_fcp_ctm(struct zfcp_adapter *adapter,
2442 goto out; 2448 goto out;
2443 req = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND, req_flags, 2449 req = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND, req_flags,
2444 adapter->pool.fsf_req_scsi); 2450 adapter->pool.fsf_req_scsi);
2445 if (IS_ERR(req)) 2451 if (IS_ERR(req)) {
2452 req = NULL;
2446 goto out; 2453 goto out;
2454 }
2447 2455
2448 req->status |= ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT; 2456 req->status |= ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT;
2449 req->data = unit; 2457 req->data = unit;
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c
index e46fd3e9f68f..468c880f8b6d 100644
--- a/drivers/s390/scsi/zfcp_scsi.c
+++ b/drivers/s390/scsi/zfcp_scsi.c
@@ -88,7 +88,7 @@ static int zfcp_scsi_queuecommand(struct scsi_cmnd *scpnt,
88 ret = zfcp_fsf_send_fcp_command_task(adapter, unit, scpnt, 0, 88 ret = zfcp_fsf_send_fcp_command_task(adapter, unit, scpnt, 0,
89 ZFCP_REQ_AUTO_CLEANUP); 89 ZFCP_REQ_AUTO_CLEANUP);
90 if (unlikely(ret == -EBUSY)) 90 if (unlikely(ret == -EBUSY))
91 zfcp_scsi_command_fail(scpnt, DID_NO_CONNECT); 91 return SCSI_MLQUEUE_DEVICE_BUSY;
92 else if (unlikely(ret < 0)) 92 else if (unlikely(ret < 0))
93 return SCSI_MLQUEUE_HOST_BUSY; 93 return SCSI_MLQUEUE_HOST_BUSY;
94 94
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index 9aa301c1ed07..94acbeed4e7c 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -175,8 +175,8 @@ static struct aac_driver_ident aac_drivers[] = {
175 { aac_rx_init, "percraid", "DELL ", "PERCRAID ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* PERC 3/Di (Boxster/PERC3DiB) */ 175 { aac_rx_init, "percraid", "DELL ", "PERCRAID ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* PERC 3/Di (Boxster/PERC3DiB) */
176 { aac_rx_init, "aacraid", "ADAPTEC ", "catapult ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* catapult */ 176 { aac_rx_init, "aacraid", "ADAPTEC ", "catapult ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* catapult */
177 { aac_rx_init, "aacraid", "ADAPTEC ", "tomcat ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* tomcat */ 177 { aac_rx_init, "aacraid", "ADAPTEC ", "tomcat ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* tomcat */
178 { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2120S ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2120S (Crusader) */ 178 { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2120S ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Adaptec 2120S (Crusader) */
179 { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2200S ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S (Vulcan) */ 179 { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2200S ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Adaptec 2200S (Vulcan) */
180 { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2200S ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S (Vulcan-2m) */ 180 { aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2200S ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S (Vulcan-2m) */
181 { aac_rx_init, "aacraid", "Legend ", "Legend S220 ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Legend S220 (Legend Crusader) */ 181 { aac_rx_init, "aacraid", "Legend ", "Legend S220 ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Legend S220 (Legend Crusader) */
182 { aac_rx_init, "aacraid", "Legend ", "Legend S230 ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Legend S230 (Legend Vulcan) */ 182 { aac_rx_init, "aacraid", "Legend ", "Legend S230 ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Legend S230 (Legend Vulcan) */
@@ -427,8 +427,8 @@ static int aac_slave_configure(struct scsi_device *sdev)
427 * Firmware has an individual device recovery time typically 427 * Firmware has an individual device recovery time typically
428 * of 35 seconds, give us a margin. 428 * of 35 seconds, give us a margin.
429 */ 429 */
430 if (sdev->timeout < (45 * HZ)) 430 if (sdev->request_queue->rq_timeout < (45 * HZ))
431 sdev->timeout = 45 * HZ; 431 blk_queue_rq_timeout(sdev->request_queue, 45*HZ);
432 for (cid = 0; cid < aac->maximum_num_containers; ++cid) 432 for (cid = 0; cid < aac->maximum_num_containers; ++cid)
433 if (aac->fsa_dev[cid].valid) 433 if (aac->fsa_dev[cid].valid)
434 ++num_lsu; 434 ++num_lsu;
diff --git a/drivers/scsi/device_handler/scsi_dh_hp_sw.c b/drivers/scsi/device_handler/scsi_dh_hp_sw.c
index 9aec4ca64e56..f7da7530875e 100644
--- a/drivers/scsi/device_handler/scsi_dh_hp_sw.c
+++ b/drivers/scsi/device_handler/scsi_dh_hp_sw.c
@@ -107,6 +107,7 @@ static int hp_sw_tur(struct scsi_device *sdev, struct hp_sw_dh_data *h)
107 struct request *req; 107 struct request *req;
108 int ret; 108 int ret;
109 109
110retry:
110 req = blk_get_request(sdev->request_queue, WRITE, GFP_NOIO); 111 req = blk_get_request(sdev->request_queue, WRITE, GFP_NOIO);
111 if (!req) 112 if (!req)
112 return SCSI_DH_RES_TEMP_UNAVAIL; 113 return SCSI_DH_RES_TEMP_UNAVAIL;
@@ -121,7 +122,6 @@ static int hp_sw_tur(struct scsi_device *sdev, struct hp_sw_dh_data *h)
121 memset(req->sense, 0, SCSI_SENSE_BUFFERSIZE); 122 memset(req->sense, 0, SCSI_SENSE_BUFFERSIZE);
122 req->sense_len = 0; 123 req->sense_len = 0;
123 124
124retry:
125 ret = blk_execute_rq(req->q, NULL, req, 1); 125 ret = blk_execute_rq(req->q, NULL, req, 1);
126 if (ret == -EIO) { 126 if (ret == -EIO) {
127 if (req->sense_len > 0) { 127 if (req->sense_len > 0) {
@@ -136,8 +136,10 @@ retry:
136 h->path_state = HP_SW_PATH_ACTIVE; 136 h->path_state = HP_SW_PATH_ACTIVE;
137 ret = SCSI_DH_OK; 137 ret = SCSI_DH_OK;
138 } 138 }
139 if (ret == SCSI_DH_IMM_RETRY) 139 if (ret == SCSI_DH_IMM_RETRY) {
140 blk_put_request(req);
140 goto retry; 141 goto retry;
142 }
141 if (ret == SCSI_DH_DEV_OFFLINED) { 143 if (ret == SCSI_DH_DEV_OFFLINED) {
142 h->path_state = HP_SW_PATH_PASSIVE; 144 h->path_state = HP_SW_PATH_PASSIVE;
143 ret = SCSI_DH_OK; 145 ret = SCSI_DH_OK;
@@ -200,6 +202,7 @@ static int hp_sw_start_stop(struct scsi_device *sdev, struct hp_sw_dh_data *h)
200 struct request *req; 202 struct request *req;
201 int ret, retry; 203 int ret, retry;
202 204
205retry:
203 req = blk_get_request(sdev->request_queue, WRITE, GFP_NOIO); 206 req = blk_get_request(sdev->request_queue, WRITE, GFP_NOIO);
204 if (!req) 207 if (!req)
205 return SCSI_DH_RES_TEMP_UNAVAIL; 208 return SCSI_DH_RES_TEMP_UNAVAIL;
@@ -216,7 +219,6 @@ static int hp_sw_start_stop(struct scsi_device *sdev, struct hp_sw_dh_data *h)
216 req->sense_len = 0; 219 req->sense_len = 0;
217 retry = h->retries; 220 retry = h->retries;
218 221
219retry:
220 ret = blk_execute_rq(req->q, NULL, req, 1); 222 ret = blk_execute_rq(req->q, NULL, req, 1);
221 if (ret == -EIO) { 223 if (ret == -EIO) {
222 if (req->sense_len > 0) { 224 if (req->sense_len > 0) {
@@ -231,8 +233,10 @@ retry:
231 ret = SCSI_DH_OK; 233 ret = SCSI_DH_OK;
232 234
233 if (ret == SCSI_DH_RETRY) { 235 if (ret == SCSI_DH_RETRY) {
234 if (--retry) 236 if (--retry) {
237 blk_put_request(req);
235 goto retry; 238 goto retry;
239 }
236 ret = SCSI_DH_IO; 240 ret = SCSI_DH_IO;
237 } 241 }
238 242
diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c
index 87e09f35d3d4..6cad1758243a 100644
--- a/drivers/scsi/ibmvscsi/ibmvscsi.c
+++ b/drivers/scsi/ibmvscsi/ibmvscsi.c
@@ -1442,7 +1442,7 @@ static int ibmvscsi_slave_configure(struct scsi_device *sdev)
1442 spin_lock_irqsave(shost->host_lock, lock_flags); 1442 spin_lock_irqsave(shost->host_lock, lock_flags);
1443 if (sdev->type == TYPE_DISK) { 1443 if (sdev->type == TYPE_DISK) {
1444 sdev->allow_restart = 1; 1444 sdev->allow_restart = 1;
1445 sdev->timeout = 60 * HZ; 1445 blk_queue_rq_timeout(sdev->request_queue, 60 * HZ);
1446 } 1446 }
1447 scsi_adjust_queue_depth(sdev, 0, shost->cmd_per_lun); 1447 scsi_adjust_queue_depth(sdev, 0, shost->cmd_per_lun);
1448 spin_unlock_irqrestore(shost->host_lock, lock_flags); 1448 spin_unlock_irqrestore(shost->host_lock, lock_flags);
diff --git a/drivers/scsi/ibmvscsi/ibmvstgt.c b/drivers/scsi/ibmvscsi/ibmvstgt.c
index 2a5b29d12172..e2dd6a45924a 100644
--- a/drivers/scsi/ibmvscsi/ibmvstgt.c
+++ b/drivers/scsi/ibmvscsi/ibmvstgt.c
@@ -864,21 +864,23 @@ static int ibmvstgt_probe(struct vio_dev *dev, const struct vio_device_id *id)
864 864
865 INIT_WORK(&vport->crq_work, handle_crq); 865 INIT_WORK(&vport->crq_work, handle_crq);
866 866
867 err = crq_queue_create(&vport->crq_queue, target); 867 err = scsi_add_host(shost, target->dev);
868 if (err) 868 if (err)
869 goto free_srp_target; 869 goto free_srp_target;
870 870
871 err = scsi_add_host(shost, target->dev); 871 err = scsi_tgt_alloc_queue(shost);
872 if (err) 872 if (err)
873 goto destroy_queue; 873 goto remove_host;
874 874
875 err = scsi_tgt_alloc_queue(shost); 875 err = crq_queue_create(&vport->crq_queue, target);
876 if (err) 876 if (err)
877 goto destroy_queue; 877 goto free_queue;
878 878
879 return 0; 879 return 0;
880destroy_queue: 880free_queue:
881 crq_queue_destroy(target); 881 scsi_tgt_free_queue(shost);
882remove_host:
883 scsi_remove_host(shost);
882free_srp_target: 884free_srp_target:
883 srp_target_free(target); 885 srp_target_free(target);
884put_host: 886put_host:
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index 801c7cf54d2e..3fdee7370ccc 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -489,12 +489,6 @@ __iscsi_conn_send_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
489 if (!__kfifo_get(session->cmdpool.queue, 489 if (!__kfifo_get(session->cmdpool.queue,
490 (void*)&task, sizeof(void*))) 490 (void*)&task, sizeof(void*)))
491 return NULL; 491 return NULL;
492
493 if ((hdr->opcode == (ISCSI_OP_NOOP_OUT | ISCSI_OP_IMMEDIATE)) &&
494 hdr->ttt == RESERVED_ITT) {
495 conn->ping_task = task;
496 conn->last_ping = jiffies;
497 }
498 } 492 }
499 /* 493 /*
500 * released in complete pdu for task we expect a response for, and 494 * released in complete pdu for task we expect a response for, and
@@ -703,6 +697,11 @@ static void iscsi_send_nopout(struct iscsi_conn *conn, struct iscsi_nopin *rhdr)
703 task = __iscsi_conn_send_pdu(conn, (struct iscsi_hdr *)&hdr, NULL, 0); 697 task = __iscsi_conn_send_pdu(conn, (struct iscsi_hdr *)&hdr, NULL, 0);
704 if (!task) 698 if (!task)
705 iscsi_conn_printk(KERN_ERR, conn, "Could not send nopout\n"); 699 iscsi_conn_printk(KERN_ERR, conn, "Could not send nopout\n");
700 else if (!rhdr) {
701 /* only track our nops */
702 conn->ping_task = task;
703 conn->last_ping = jiffies;
704 }
706} 705}
707 706
708static int iscsi_handle_reject(struct iscsi_conn *conn, struct iscsi_hdr *hdr, 707static int iscsi_handle_reject(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c
index a454f94623d7..17ce7abe17ee 100644
--- a/drivers/scsi/megaraid/megaraid_sas.c
+++ b/drivers/scsi/megaraid/megaraid_sas.c
@@ -1016,7 +1016,8 @@ static int megasas_slave_configure(struct scsi_device *sdev)
1016 * The RAID firmware may require extended timeouts. 1016 * The RAID firmware may require extended timeouts.
1017 */ 1017 */
1018 if (sdev->channel >= MEGASAS_MAX_PD_CHANNELS) 1018 if (sdev->channel >= MEGASAS_MAX_PD_CHANNELS)
1019 sdev->timeout = MEGASAS_DEFAULT_CMD_TIMEOUT * HZ; 1019 blk_queue_rq_timeout(sdev->request_queue,
1020 MEGASAS_DEFAULT_CMD_TIMEOUT * HZ);
1020 return 0; 1021 return 0;
1021} 1022}
1022 1023
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 386361778ebb..edfaf241c5ba 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -932,8 +932,7 @@ static int scsi_eh_try_stu(struct scsi_cmnd *scmd)
932 int i, rtn = NEEDS_RETRY; 932 int i, rtn = NEEDS_RETRY;
933 933
934 for (i = 0; rtn == NEEDS_RETRY && i < 2; i++) 934 for (i = 0; rtn == NEEDS_RETRY && i < 2; i++)
935 rtn = scsi_send_eh_cmnd(scmd, stu_command, 6, 935 rtn = scsi_send_eh_cmnd(scmd, stu_command, 6, scmd->device->request_queue->rq_timeout, 0);
936 scmd->device->timeout, 0);
937 936
938 if (rtn == SUCCESS) 937 if (rtn == SUCCESS)
939 return 0; 938 return 0;
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index f5d3b96890dc..148d3af92aef 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -567,15 +567,18 @@ static inline int scsi_host_is_busy(struct Scsi_Host *shost)
567 */ 567 */
568static void scsi_run_queue(struct request_queue *q) 568static void scsi_run_queue(struct request_queue *q)
569{ 569{
570 struct scsi_device *starved_head = NULL, *sdev = q->queuedata; 570 struct scsi_device *sdev = q->queuedata;
571 struct Scsi_Host *shost = sdev->host; 571 struct Scsi_Host *shost = sdev->host;
572 LIST_HEAD(starved_list);
572 unsigned long flags; 573 unsigned long flags;
573 574
574 if (scsi_target(sdev)->single_lun) 575 if (scsi_target(sdev)->single_lun)
575 scsi_single_lun_run(sdev); 576 scsi_single_lun_run(sdev);
576 577
577 spin_lock_irqsave(shost->host_lock, flags); 578 spin_lock_irqsave(shost->host_lock, flags);
578 while (!list_empty(&shost->starved_list) && !scsi_host_is_busy(shost)) { 579 list_splice_init(&shost->starved_list, &starved_list);
580
581 while (!list_empty(&starved_list)) {
579 int flagset; 582 int flagset;
580 583
581 /* 584 /*
@@ -588,24 +591,18 @@ static void scsi_run_queue(struct request_queue *q)
588 * scsi_request_fn must get the host_lock before checking 591 * scsi_request_fn must get the host_lock before checking
589 * or modifying starved_list or starved_entry. 592 * or modifying starved_list or starved_entry.
590 */ 593 */
591 sdev = list_entry(shost->starved_list.next, 594 if (scsi_host_is_busy(shost))
592 struct scsi_device, starved_entry);
593 /*
594 * The *queue_ready functions can add a device back onto the
595 * starved list's tail, so we must check for a infinite loop.
596 */
597 if (sdev == starved_head)
598 break; 595 break;
599 if (!starved_head)
600 starved_head = sdev;
601 596
597 sdev = list_entry(starved_list.next,
598 struct scsi_device, starved_entry);
599 list_del_init(&sdev->starved_entry);
602 if (scsi_target_is_busy(scsi_target(sdev))) { 600 if (scsi_target_is_busy(scsi_target(sdev))) {
603 list_move_tail(&sdev->starved_entry, 601 list_move_tail(&sdev->starved_entry,
604 &shost->starved_list); 602 &shost->starved_list);
605 continue; 603 continue;
606 } 604 }
607 605
608 list_del_init(&sdev->starved_entry);
609 spin_unlock(shost->host_lock); 606 spin_unlock(shost->host_lock);
610 607
611 spin_lock(sdev->request_queue->queue_lock); 608 spin_lock(sdev->request_queue->queue_lock);
@@ -621,6 +618,8 @@ static void scsi_run_queue(struct request_queue *q)
621 618
622 spin_lock(shost->host_lock); 619 spin_lock(shost->host_lock);
623 } 620 }
621 /* put any unprocessed entries back */
622 list_splice(&starved_list, &shost->starved_list);
624 spin_unlock_irqrestore(shost->host_lock, flags); 623 spin_unlock_irqrestore(shost->host_lock, flags);
625 624
626 blk_run_queue(q); 625 blk_run_queue(q);
@@ -649,8 +648,8 @@ static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd)
649 struct request *req = cmd->request; 648 struct request *req = cmd->request;
650 unsigned long flags; 649 unsigned long flags;
651 650
652 scsi_unprep_request(req);
653 spin_lock_irqsave(q->queue_lock, flags); 651 spin_lock_irqsave(q->queue_lock, flags);
652 scsi_unprep_request(req);
654 blk_requeue_request(q, req); 653 blk_requeue_request(q, req);
655 spin_unlock_irqrestore(q->queue_lock, flags); 654 spin_unlock_irqrestore(q->queue_lock, flags);
656 655
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index c9e1242eaf25..5081b3981d3c 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -757,7 +757,7 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
757 * access to the device is prohibited. 757 * access to the device is prohibited.
758 */ 758 */
759 error = scsi_nonblockable_ioctl(sdp, cmd, p, 759 error = scsi_nonblockable_ioctl(sdp, cmd, p,
760 (mode & FMODE_NDELAY_NOW) != 0); 760 (mode & FMODE_NDELAY) != 0);
761 if (!scsi_block_when_processing_errors(sdp) || !error) 761 if (!scsi_block_when_processing_errors(sdp) || !error)
762 return error; 762 return error;
763 763
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 62b6633e3a97..45b66b98a516 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -521,7 +521,7 @@ static int sr_block_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
521 * if it doesn't recognise the ioctl 521 * if it doesn't recognise the ioctl
522 */ 522 */
523 ret = scsi_nonblockable_ioctl(sdev, cmd, argp, 523 ret = scsi_nonblockable_ioctl(sdev, cmd, argp,
524 (mode & FMODE_NDELAY_NOW) != 0); 524 (mode & FMODE_NDELAY) != 0);
525 if (ret != -ENODEV) 525 if (ret != -ENODEV)
526 return ret; 526 return ret;
527 return scsi_ioctl(sdev, cmd, argp); 527 return scsi_ioctl(sdev, cmd, argp);
diff --git a/drivers/scsi/stex.c b/drivers/scsi/stex.c
index 3790906a77d1..2fa830c0be27 100644
--- a/drivers/scsi/stex.c
+++ b/drivers/scsi/stex.c
@@ -477,7 +477,7 @@ stex_slave_config(struct scsi_device *sdev)
477{ 477{
478 sdev->use_10_for_rw = 1; 478 sdev->use_10_for_rw = 1;
479 sdev->use_10_for_ms = 1; 479 sdev->use_10_for_ms = 1;
480 sdev->timeout = 60 * HZ; 480 blk_queue_rq_timeout(sdev->request_queue, 60 * HZ);
481 sdev->tagged_supported = 1; 481 sdev->tagged_supported = 1;
482 482
483 return 0; 483 return 0;
diff --git a/drivers/serial/ioc3_serial.c b/drivers/serial/ioc3_serial.c
index 6dd98f9fb89c..ae3699d77dd0 100644
--- a/drivers/serial/ioc3_serial.c
+++ b/drivers/serial/ioc3_serial.c
@@ -2149,7 +2149,7 @@ out4:
2149 return ret; 2149 return ret;
2150} 2150}
2151 2151
2152static struct ioc3_submodule ioc3uart_submodule = { 2152static struct ioc3_submodule ioc3uart_ops = {
2153 .name = "IOC3uart", 2153 .name = "IOC3uart",
2154 .probe = ioc3uart_probe, 2154 .probe = ioc3uart_probe,
2155 .remove = ioc3uart_remove, 2155 .remove = ioc3uart_remove,
@@ -2173,7 +2173,7 @@ static int __devinit ioc3uart_init(void)
2173 __func__); 2173 __func__);
2174 return ret; 2174 return ret;
2175 } 2175 }
2176 ret = ioc3_register_submodule(&ioc3uart_submodule); 2176 ret = ioc3_register_submodule(&ioc3uart_ops);
2177 if (ret) 2177 if (ret)
2178 uart_unregister_driver(&ioc3_uart); 2178 uart_unregister_driver(&ioc3_uart);
2179 return ret; 2179 return ret;
@@ -2181,7 +2181,7 @@ static int __devinit ioc3uart_init(void)
2181 2181
2182static void __devexit ioc3uart_exit(void) 2182static void __devexit ioc3uart_exit(void)
2183{ 2183{
2184 ioc3_unregister_submodule(&ioc3uart_submodule); 2184 ioc3_unregister_submodule(&ioc3uart_ops);
2185 uart_unregister_driver(&ioc3_uart); 2185 uart_unregister_driver(&ioc3_uart);
2186} 2186}
2187 2187
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c
index 6117d3db0b66..28c00c3d58f5 100644
--- a/drivers/serial/mpc52xx_uart.c
+++ b/drivers/serial/mpc52xx_uart.c
@@ -591,8 +591,8 @@ mpc52xx_uart_set_termios(struct uart_port *port, struct ktermios *new,
591 /* Update the per-port timeout */ 591 /* Update the per-port timeout */
592 uart_update_timeout(port, new->c_cflag, baud); 592 uart_update_timeout(port, new->c_cflag, baud);
593 593
594 /* Do our best to flush TX & RX, so we don't loose anything */ 594 /* Do our best to flush TX & RX, so we don't lose anything */
595 /* But we don't wait indefinitly ! */ 595 /* But we don't wait indefinitely ! */
596 j = 5000000; /* Maximum wait */ 596 j = 5000000; /* Maximum wait */
597 /* FIXME Can't receive chars since set_termios might be called at early 597 /* FIXME Can't receive chars since set_termios might be called at early
598 * boot for the console, all stuff is not yet ready to receive at that 598 * boot for the console, all stuff is not yet ready to receive at that
diff --git a/drivers/serial/s3c2440.c b/drivers/serial/s3c2440.c
index 317d239ab740..29cbb0afef8e 100644
--- a/drivers/serial/s3c2440.c
+++ b/drivers/serial/s3c2440.c
@@ -177,5 +177,5 @@ module_exit(s3c2440_serial_exit);
177 177
178MODULE_DESCRIPTION("Samsung S3C2440,S3C2442 SoC Serial port driver"); 178MODULE_DESCRIPTION("Samsung S3C2440,S3C2442 SoC Serial port driver");
179MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); 179MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>");
180MODULE_LICENSE("GPLi v2"); 180MODULE_LICENSE("GPL v2");
181MODULE_ALIAS("platform:s3c2440-uart"); 181MODULE_ALIAS("platform:s3c2440-uart");
diff --git a/drivers/sh/maple/maple.c b/drivers/sh/maple/maple.c
index d1812d32f47d..63f0de29aa14 100644
--- a/drivers/sh/maple/maple.c
+++ b/drivers/sh/maple/maple.c
@@ -827,7 +827,7 @@ static int __init maple_bus_init(void)
827 827
828 maple_queue_cache = 828 maple_queue_cache =
829 kmem_cache_create("maple_queue_cache", 0x400, 0, 829 kmem_cache_create("maple_queue_cache", 0x400, 0,
830 SLAB_POISON|SLAB_HWCACHE_ALIGN, NULL); 830 SLAB_HWCACHE_ALIGN, NULL);
831 831
832 if (!maple_queue_cache) 832 if (!maple_queue_cache)
833 goto cleanup_bothirqs; 833 goto cleanup_bothirqs;
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index c95b286a1239..5d457c96bd7e 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -22,6 +22,8 @@ menuconfig STAGING
22 If in doubt, say N here. 22 If in doubt, say N here.
23 23
24 24
25if STAGING
26
25config STAGING_EXCLUDE_BUILD 27config STAGING_EXCLUDE_BUILD
26 bool "Exclude Staging drivers from being built" if STAGING 28 bool "Exclude Staging drivers from being built" if STAGING
27 default y 29 default y
@@ -62,3 +64,4 @@ source "drivers/staging/at76_usb/Kconfig"
62source "drivers/staging/poch/Kconfig" 64source "drivers/staging/poch/Kconfig"
63 65
64endif # !STAGING_EXCLUDE_BUILD 66endif # !STAGING_EXCLUDE_BUILD
67endif # STAGING
diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c
index 8e74657f106c..43a863c5cc43 100644
--- a/drivers/usb/class/usbtmc.c
+++ b/drivers/usb/class/usbtmc.c
@@ -51,6 +51,7 @@ static struct usb_device_id usbtmc_devices[] = {
51 { USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 0), }, 51 { USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 0), },
52 { 0, } /* terminating entry */ 52 { 0, } /* terminating entry */
53}; 53};
54MODULE_DEVICE_TABLE(usb, usbtmc_devices);
54 55
55/* 56/*
56 * This structure is the capabilities for the device 57 * This structure is the capabilities for the device
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
index 3d7793d93031..8c081308b0e2 100644
--- a/drivers/usb/core/driver.c
+++ b/drivers/usb/core/driver.c
@@ -279,7 +279,9 @@ static int usb_unbind_interface(struct device *dev)
279 * altsetting means creating new endpoint device entries). 279 * altsetting means creating new endpoint device entries).
280 * When either of these happens, defer the Set-Interface. 280 * When either of these happens, defer the Set-Interface.
281 */ 281 */
282 if (!error && intf->dev.power.status == DPM_ON) 282 if (intf->cur_altsetting->desc.bAlternateSetting == 0)
283 ; /* Already in altsetting 0 so skip Set-Interface */
284 else if (!error && intf->dev.power.status == DPM_ON)
283 usb_set_interface(udev, intf->altsetting[0]. 285 usb_set_interface(udev, intf->altsetting[0].
284 desc.bInterfaceNumber, 0); 286 desc.bInterfaceNumber, 0);
285 else 287 else
diff --git a/drivers/usb/gadget/f_rndis.c b/drivers/usb/gadget/f_rndis.c
index 428b5993575a..3a8bb53fc473 100644
--- a/drivers/usb/gadget/f_rndis.c
+++ b/drivers/usb/gadget/f_rndis.c
@@ -651,6 +651,8 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
651 fs_in_desc.bEndpointAddress; 651 fs_in_desc.bEndpointAddress;
652 hs_out_desc.bEndpointAddress = 652 hs_out_desc.bEndpointAddress =
653 fs_out_desc.bEndpointAddress; 653 fs_out_desc.bEndpointAddress;
654 hs_notify_desc.bEndpointAddress =
655 fs_notify_desc.bEndpointAddress;
654 656
655 /* copy descriptors, and track endpoint copies */ 657 /* copy descriptors, and track endpoint copies */
656 f->hs_descriptors = usb_copy_descriptors(eth_hs_function); 658 f->hs_descriptors = usb_copy_descriptors(eth_hs_function);
@@ -662,6 +664,8 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
662 f->hs_descriptors, &hs_in_desc); 664 f->hs_descriptors, &hs_in_desc);
663 rndis->hs.out = usb_find_endpoint(eth_hs_function, 665 rndis->hs.out = usb_find_endpoint(eth_hs_function,
664 f->hs_descriptors, &hs_out_desc); 666 f->hs_descriptors, &hs_out_desc);
667 rndis->hs.notify = usb_find_endpoint(eth_hs_function,
668 f->hs_descriptors, &hs_notify_desc);
665 } 669 }
666 670
667 rndis->port.open = rndis_open; 671 rndis->port.open = rndis_open;
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 51d7bdea2869..fb6f2933b01b 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -143,6 +143,7 @@ static struct ftdi_sio_quirk ftdi_HE_TIRA1_quirk = {
143static struct usb_device_id id_table_combined [] = { 143static struct usb_device_id id_table_combined [] = {
144 { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) }, 144 { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) },
145 { USB_DEVICE(FTDI_VID, FTDI_CANUSB_PID) }, 145 { USB_DEVICE(FTDI_VID, FTDI_CANUSB_PID) },
146 { USB_DEVICE(FTDI_VID, FTDI_CANDAPTER_PID) },
146 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_0_PID) }, 147 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_0_PID) },
147 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_1_PID) }, 148 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_1_PID) },
148 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_2_PID) }, 149 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_2_PID) },
@@ -166,6 +167,7 @@ static struct usb_device_id id_table_combined [] = {
166 { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_PID) }, 167 { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_PID) },
167 { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) }, 168 { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) },
168 { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) }, 169 { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) },
170 { USB_DEVICE(FTDI_VID, FTDI_SPROG_II) },
169 { USB_DEVICE(FTDI_VID, FTDI_XF_632_PID) }, 171 { USB_DEVICE(FTDI_VID, FTDI_XF_632_PID) },
170 { USB_DEVICE(FTDI_VID, FTDI_XF_634_PID) }, 172 { USB_DEVICE(FTDI_VID, FTDI_XF_634_PID) },
171 { USB_DEVICE(FTDI_VID, FTDI_XF_547_PID) }, 173 { USB_DEVICE(FTDI_VID, FTDI_XF_547_PID) },
@@ -1498,7 +1500,7 @@ static int ftdi_open(struct tty_struct *tty,
1498 priv->interface, buf, 0, WDR_TIMEOUT); 1500 priv->interface, buf, 0, WDR_TIMEOUT);
1499 1501
1500 /* Termios defaults are set by usb_serial_init. We don't change 1502 /* Termios defaults are set by usb_serial_init. We don't change
1501 port->tty->termios - this would loose speed settings, etc. 1503 port->tty->termios - this would lose speed settings, etc.
1502 This is same behaviour as serial.c/rs_open() - Kuba */ 1504 This is same behaviour as serial.c/rs_open() - Kuba */
1503 1505
1504 /* ftdi_set_termios will send usb control messages */ 1506 /* ftdi_set_termios will send usb control messages */
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
index 07a3992abad2..373ee09975bb 100644
--- a/drivers/usb/serial/ftdi_sio.h
+++ b/drivers/usb/serial/ftdi_sio.h
@@ -40,6 +40,9 @@
40/* AlphaMicro Components AMC-232USB01 device */ 40/* AlphaMicro Components AMC-232USB01 device */
41#define FTDI_AMC232_PID 0xFF00 /* Product Id */ 41#define FTDI_AMC232_PID 0xFF00 /* Product Id */
42 42
43/* www.candapter.com Ewert Energy Systems CANdapter device */
44#define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */
45
43/* SCS HF Radio Modems PID's (http://www.scs-ptc.com) */ 46/* SCS HF Radio Modems PID's (http://www.scs-ptc.com) */
44/* the VID is the standard ftdi vid (FTDI_VID) */ 47/* the VID is the standard ftdi vid (FTDI_VID) */
45#define FTDI_SCS_DEVICE_0_PID 0xD010 /* SCS PTC-IIusb */ 48#define FTDI_SCS_DEVICE_0_PID 0xD010 /* SCS PTC-IIusb */
@@ -75,6 +78,9 @@
75/* OpenDCC (www.opendcc.de) product id */ 78/* OpenDCC (www.opendcc.de) product id */
76#define FTDI_OPENDCC_PID 0xBFD8 79#define FTDI_OPENDCC_PID 0xBFD8
77 80
81/* Sprog II (Andrew Crosland's SprogII DCC interface) */
82#define FTDI_SPROG_II 0xF0C8
83
78/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */ 84/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
79/* they use the ftdi chipset for the USB interface and the vendor id is the same */ 85/* they use the ftdi chipset for the USB interface and the vendor id is the same */
80#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */ 86#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index 491c8857b644..1aed584be5eb 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -91,6 +91,8 @@ static struct usb_device_id id_table [] = {
91 { USB_DEVICE(WS002IN_VENDOR_ID, WS002IN_PRODUCT_ID) }, 91 { USB_DEVICE(WS002IN_VENDOR_ID, WS002IN_PRODUCT_ID) },
92 { USB_DEVICE(COREGA_VENDOR_ID, COREGA_PRODUCT_ID) }, 92 { USB_DEVICE(COREGA_VENDOR_ID, COREGA_PRODUCT_ID) },
93 { USB_DEVICE(YCCABLE_VENDOR_ID, YCCABLE_PRODUCT_ID) }, 93 { USB_DEVICE(YCCABLE_VENDOR_ID, YCCABLE_PRODUCT_ID) },
94 { USB_DEVICE(SUPERIAL_VENDOR_ID, SUPERIAL_PRODUCT_ID) },
95 { USB_DEVICE(HP_VENDOR_ID, HP_LD220_PRODUCT_ID) },
94 { } /* Terminating entry */ 96 { } /* Terminating entry */
95}; 97};
96 98
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
index a3bd039c78e9..54974f446a8c 100644
--- a/drivers/usb/serial/pl2303.h
+++ b/drivers/usb/serial/pl2303.h
@@ -110,3 +110,11 @@
110/* Y.C. Cable U.S.A., Inc - USB to RS-232 */ 110/* Y.C. Cable U.S.A., Inc - USB to RS-232 */
111#define YCCABLE_VENDOR_ID 0x05ad 111#define YCCABLE_VENDOR_ID 0x05ad
112#define YCCABLE_PRODUCT_ID 0x0fba 112#define YCCABLE_PRODUCT_ID 0x0fba
113
114/* "Superial" USB - Serial */
115#define SUPERIAL_VENDOR_ID 0x5372
116#define SUPERIAL_PRODUCT_ID 0x2303
117
118/* Hewlett-Packard LD220-HP POS Pole Display */
119#define HP_VENDOR_ID 0x03f0
120#define HP_LD220_PRODUCT_ID 0x3524
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
index 31c42d1cae13..01d0c70d60e9 100644
--- a/drivers/usb/serial/ti_usb_3410_5052.c
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
@@ -16,56 +16,6 @@
16 * For questions or problems with this driver, contact Texas Instruments 16 * For questions or problems with this driver, contact Texas Instruments
17 * technical support, or Al Borchers <alborchers@steinerpoint.com>, or 17 * technical support, or Al Borchers <alborchers@steinerpoint.com>, or
18 * Peter Berger <pberger@brimson.com>. 18 * Peter Berger <pberger@brimson.com>.
19 *
20 * This driver needs this hotplug script in /etc/hotplug/usb/ti_usb_3410_5052
21 * or in /etc/hotplug.d/usb/ti_usb_3410_5052.hotplug to set the device
22 * configuration.
23 *
24 * #!/bin/bash
25 *
26 * BOOT_CONFIG=1
27 * ACTIVE_CONFIG=2
28 *
29 * if [[ "$ACTION" != "add" ]]
30 * then
31 * exit
32 * fi
33 *
34 * CONFIG_PATH=/sys${DEVPATH%/?*}/bConfigurationValue
35 *
36 * if [[ 0`cat $CONFIG_PATH` -ne $BOOT_CONFIG ]]
37 * then
38 * exit
39 * fi
40 *
41 * PRODUCT=${PRODUCT%/?*} # delete version
42 * VENDOR_ID=`printf "%d" 0x${PRODUCT%/?*}`
43 * PRODUCT_ID=`printf "%d" 0x${PRODUCT#*?/}`
44 *
45 * PARAM_PATH=/sys/module/ti_usb_3410_5052/parameters
46 *
47 * function scan() {
48 * s=$1
49 * shift
50 * for i
51 * do
52 * if [[ $s -eq $i ]]
53 * then
54 * return 0
55 * fi
56 * done
57 * return 1
58 * }
59 *
60 * IFS=$IFS,
61 *
62 * if (scan $VENDOR_ID 1105 `cat $PARAM_PATH/vendor_3410` &&
63 * scan $PRODUCT_ID 13328 `cat $PARAM_PATH/product_3410`) ||
64 * (scan $VENDOR_ID 1105 `cat $PARAM_PATH/vendor_5052` &&
65 * scan $PRODUCT_ID 20562 20818 20570 20575 `cat $PARAM_PATH/product_5052`)
66 * then
67 * echo $ACTIVE_CONFIG > $CONFIG_PATH
68 * fi
69 */ 19 */
70 20
71#include <linux/kernel.h> 21#include <linux/kernel.h>
@@ -457,9 +407,10 @@ static int ti_startup(struct usb_serial *serial)
457 goto free_tdev; 407 goto free_tdev;
458 } 408 }
459 409
460 /* the second configuration must be set (in sysfs by hotplug script) */ 410 /* the second configuration must be set */
461 if (dev->actconfig->desc.bConfigurationValue == TI_BOOT_CONFIG) { 411 if (dev->actconfig->desc.bConfigurationValue == TI_BOOT_CONFIG) {
462 status = -ENODEV; 412 status = usb_driver_set_configuration(dev, TI_ACTIVE_CONFIG);
413 status = status ? status : -ENODEV;
463 goto free_tdev; 414 goto free_tdev;
464 } 415 }
465 416
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index e61f2bfc64ad..bfcc1fe82518 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -167,8 +167,22 @@ UNUSUAL_DEV( 0x0421, 0x005d, 0x0001, 0x0600,
167 US_SC_DEVICE, US_PR_DEVICE, NULL, 167 US_SC_DEVICE, US_PR_DEVICE, NULL,
168 US_FL_FIX_CAPACITY ), 168 US_FL_FIX_CAPACITY ),
169 169
170/* Reported by Ozan Sener <themgzzy@gmail.com> */
171UNUSUAL_DEV( 0x0421, 0x0060, 0x0551, 0x0551,
172 "Nokia",
173 "3500c",
174 US_SC_DEVICE, US_PR_DEVICE, NULL,
175 US_FL_FIX_CAPACITY ),
176
177/* Reported by CSECSY Laszlo <boobaa@frugalware.org> */
178UNUSUAL_DEV( 0x0421, 0x0063, 0x0001, 0x0601,
179 "Nokia",
180 "Nokia 3109c",
181 US_SC_DEVICE, US_PR_DEVICE, NULL,
182 US_FL_FIX_CAPACITY ),
183
170/* Patch for Nokia 5310 capacity */ 184/* Patch for Nokia 5310 capacity */
171UNUSUAL_DEV( 0x0421, 0x006a, 0x0000, 0x0591, 185UNUSUAL_DEV( 0x0421, 0x006a, 0x0000, 0x0701,
172 "Nokia", 186 "Nokia",
173 "5310", 187 "5310",
174 US_SC_DEVICE, US_PR_DEVICE, NULL, 188 US_SC_DEVICE, US_PR_DEVICE, NULL,
diff --git a/drivers/video/aty/radeon_accel.c b/drivers/video/aty/radeon_accel.c
index a547e5d4c8bf..a469a3d6edcb 100644
--- a/drivers/video/aty/radeon_accel.c
+++ b/drivers/video/aty/radeon_accel.c
@@ -5,61 +5,61 @@
5 * --dte 5 * --dte
6 */ 6 */
7 7
8#define FLUSH_CACHE_WORKAROUND 1 8static void radeon_fixup_offset(struct radeonfb_info *rinfo)
9
10void radeon_fifo_update_and_wait(struct radeonfb_info *rinfo, int entries)
11{ 9{
12 int i; 10 u32 local_base;
11
12 /* *** Ugly workaround *** */
13 /*
14 * On some platforms, the video memory is mapped at 0 in radeon chip space
15 * (like PPCs) by the firmware. X will always move it up so that it's seen
16 * by the chip to be at the same address as the PCI BAR.
17 * That means that when switching back from X, there is a mismatch between
18 * the offsets programmed into the engine. This means that potentially,
19 * accel operations done before radeonfb has a chance to re-init the engine
20 * will have incorrect offsets, and potentially trash system memory !
21 *
22 * The correct fix is for fbcon to never call any accel op before the engine
23 * has properly been re-initialized (by a call to set_var), but this is a
24 * complex fix. This workaround in the meantime, called before every accel
25 * operation, makes sure the offsets are in sync.
26 */
13 27
14 for (i=0; i<2000000; i++) { 28 radeon_fifo_wait (1);
15 rinfo->fifo_free = INREG(RBBM_STATUS) & 0x7f; 29 local_base = INREG(MC_FB_LOCATION) << 16;
16 if (rinfo->fifo_free >= entries) 30 if (local_base == rinfo->fb_local_base)
17 return; 31 return;
18 udelay(10);
19 }
20 printk(KERN_ERR "radeonfb: FIFO Timeout !\n");
21 /* XXX Todo: attempt to reset the engine */
22}
23 32
24static inline void radeon_fifo_wait(struct radeonfb_info *rinfo, int entries) 33 rinfo->fb_local_base = local_base;
25{
26 if (entries <= rinfo->fifo_free)
27 rinfo->fifo_free -= entries;
28 else
29 radeon_fifo_update_and_wait(rinfo, entries);
30}
31 34
32static inline void radeonfb_set_creg(struct radeonfb_info *rinfo, u32 reg, 35 radeon_fifo_wait (3);
33 u32 *cache, u32 new_val) 36 OUTREG(DEFAULT_PITCH_OFFSET, (rinfo->pitch << 0x16) |
34{ 37 (rinfo->fb_local_base >> 10));
35 if (new_val == *cache) 38 OUTREG(DST_PITCH_OFFSET, (rinfo->pitch << 0x16) | (rinfo->fb_local_base >> 10));
36 return; 39 OUTREG(SRC_PITCH_OFFSET, (rinfo->pitch << 0x16) | (rinfo->fb_local_base >> 10));
37 *cache = new_val;
38 radeon_fifo_wait(rinfo, 1);
39 OUTREG(reg, new_val);
40} 40}
41 41
42static void radeonfb_prim_fillrect(struct radeonfb_info *rinfo, 42static void radeonfb_prim_fillrect(struct radeonfb_info *rinfo,
43 const struct fb_fillrect *region) 43 const struct fb_fillrect *region)
44{ 44{
45 radeonfb_set_creg(rinfo, DP_GUI_MASTER_CNTL, &rinfo->dp_gui_mc_cache, 45 radeon_fifo_wait(4);
46 rinfo->dp_gui_mc_base | GMC_BRUSH_SOLID_COLOR | ROP3_P); 46
47 radeonfb_set_creg(rinfo, DP_CNTL, &rinfo->dp_cntl_cache, 47 OUTREG(DP_GUI_MASTER_CNTL,
48 DST_X_LEFT_TO_RIGHT | DST_Y_TOP_TO_BOTTOM); 48 rinfo->dp_gui_master_cntl /* contains, like GMC_DST_32BPP */
49 radeonfb_set_creg(rinfo, DP_BRUSH_FRGD_CLR, &rinfo->dp_brush_fg_cache, 49 | GMC_BRUSH_SOLID_COLOR
50 region->color); 50 | ROP3_P);
51 51 if (radeon_get_dstbpp(rinfo->depth) != DST_8BPP)
52 /* Ensure the dst cache is flushed and the engine idle before 52 OUTREG(DP_BRUSH_FRGD_CLR, rinfo->pseudo_palette[region->color]);
53 * issuing the operation. 53 else
54 * 54 OUTREG(DP_BRUSH_FRGD_CLR, region->color);
55 * This works around engine lockups on some cards 55 OUTREG(DP_WRITE_MSK, 0xffffffff);
56 */ 56 OUTREG(DP_CNTL, (DST_X_LEFT_TO_RIGHT | DST_Y_TOP_TO_BOTTOM));
57#if FLUSH_CACHE_WORKAROUND 57
58 radeon_fifo_wait(rinfo, 2); 58 radeon_fifo_wait(2);
59 OUTREG(DSTCACHE_CTLSTAT, RB2D_DC_FLUSH_ALL); 59 OUTREG(DSTCACHE_CTLSTAT, RB2D_DC_FLUSH_ALL);
60 OUTREG(WAIT_UNTIL, (WAIT_2D_IDLECLEAN | WAIT_DMA_GUI_IDLE)); 60 OUTREG(WAIT_UNTIL, (WAIT_2D_IDLECLEAN | WAIT_DMA_GUI_IDLE));
61#endif 61
62 radeon_fifo_wait(rinfo, 2); 62 radeon_fifo_wait(2);
63 OUTREG(DST_Y_X, (region->dy << 16) | region->dx); 63 OUTREG(DST_Y_X, (region->dy << 16) | region->dx);
64 OUTREG(DST_WIDTH_HEIGHT, (region->width << 16) | region->height); 64 OUTREG(DST_WIDTH_HEIGHT, (region->width << 16) | region->height);
65} 65}
@@ -70,14 +70,15 @@ void radeonfb_fillrect(struct fb_info *info, const struct fb_fillrect *region)
70 struct fb_fillrect modded; 70 struct fb_fillrect modded;
71 int vxres, vyres; 71 int vxres, vyres;
72 72
73 WARN_ON(rinfo->gfx_mode); 73 if (info->state != FBINFO_STATE_RUNNING)
74 if (info->state != FBINFO_STATE_RUNNING || rinfo->gfx_mode)
75 return; 74 return;
76 if (info->flags & FBINFO_HWACCEL_DISABLED) { 75 if (info->flags & FBINFO_HWACCEL_DISABLED) {
77 cfb_fillrect(info, region); 76 cfb_fillrect(info, region);
78 return; 77 return;
79 } 78 }
80 79
80 radeon_fixup_offset(rinfo);
81
81 vxres = info->var.xres_virtual; 82 vxres = info->var.xres_virtual;
82 vyres = info->var.yres_virtual; 83 vyres = info->var.yres_virtual;
83 84
@@ -90,10 +91,6 @@ void radeonfb_fillrect(struct fb_info *info, const struct fb_fillrect *region)
90 if(modded.dx + modded.width > vxres) modded.width = vxres - modded.dx; 91 if(modded.dx + modded.width > vxres) modded.width = vxres - modded.dx;
91 if(modded.dy + modded.height > vyres) modded.height = vyres - modded.dy; 92 if(modded.dy + modded.height > vyres) modded.height = vyres - modded.dy;
92 93
93 if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
94 info->fix.visual == FB_VISUAL_DIRECTCOLOR )
95 modded.color = ((u32 *) (info->pseudo_palette))[region->color];
96
97 radeonfb_prim_fillrect(rinfo, &modded); 94 radeonfb_prim_fillrect(rinfo, &modded);
98} 95}
99 96
@@ -112,22 +109,22 @@ static void radeonfb_prim_copyarea(struct radeonfb_info *rinfo,
112 if ( xdir < 0 ) { sx += w-1; dx += w-1; } 109 if ( xdir < 0 ) { sx += w-1; dx += w-1; }
113 if ( ydir < 0 ) { sy += h-1; dy += h-1; } 110 if ( ydir < 0 ) { sy += h-1; dy += h-1; }
114 111
115 radeonfb_set_creg(rinfo, DP_GUI_MASTER_CNTL, &rinfo->dp_gui_mc_cache, 112 radeon_fifo_wait(3);
116 rinfo->dp_gui_mc_base | 113 OUTREG(DP_GUI_MASTER_CNTL,
117 GMC_BRUSH_NONE | 114 rinfo->dp_gui_master_cntl /* i.e. GMC_DST_32BPP */
118 GMC_SRC_DATATYPE_COLOR | 115 | GMC_BRUSH_NONE
119 ROP3_S | 116 | GMC_SRC_DSTCOLOR
120 DP_SRC_SOURCE_MEMORY); 117 | ROP3_S
121 radeonfb_set_creg(rinfo, DP_CNTL, &rinfo->dp_cntl_cache, 118 | DP_SRC_SOURCE_MEMORY );
122 (xdir>=0 ? DST_X_LEFT_TO_RIGHT : 0) | 119 OUTREG(DP_WRITE_MSK, 0xffffffff);
123 (ydir>=0 ? DST_Y_TOP_TO_BOTTOM : 0)); 120 OUTREG(DP_CNTL, (xdir>=0 ? DST_X_LEFT_TO_RIGHT : 0)
124 121 | (ydir>=0 ? DST_Y_TOP_TO_BOTTOM : 0));
125#if FLUSH_CACHE_WORKAROUND 122
126 radeon_fifo_wait(rinfo, 2); 123 radeon_fifo_wait(2);
127 OUTREG(DSTCACHE_CTLSTAT, RB2D_DC_FLUSH_ALL); 124 OUTREG(DSTCACHE_CTLSTAT, RB2D_DC_FLUSH_ALL);
128 OUTREG(WAIT_UNTIL, (WAIT_2D_IDLECLEAN | WAIT_DMA_GUI_IDLE)); 125 OUTREG(WAIT_UNTIL, (WAIT_2D_IDLECLEAN | WAIT_DMA_GUI_IDLE));
129#endif 126
130 radeon_fifo_wait(rinfo, 3); 127 radeon_fifo_wait(3);
131 OUTREG(SRC_Y_X, (sy << 16) | sx); 128 OUTREG(SRC_Y_X, (sy << 16) | sx);
132 OUTREG(DST_Y_X, (dy << 16) | dx); 129 OUTREG(DST_Y_X, (dy << 16) | dx);
133 OUTREG(DST_HEIGHT_WIDTH, (h << 16) | w); 130 OUTREG(DST_HEIGHT_WIDTH, (h << 16) | w);
@@ -146,14 +143,15 @@ void radeonfb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
146 modded.width = area->width; 143 modded.width = area->width;
147 modded.height = area->height; 144 modded.height = area->height;
148 145
149 WARN_ON(rinfo->gfx_mode); 146 if (info->state != FBINFO_STATE_RUNNING)
150 if (info->state != FBINFO_STATE_RUNNING || rinfo->gfx_mode)
151 return; 147 return;
152 if (info->flags & FBINFO_HWACCEL_DISABLED) { 148 if (info->flags & FBINFO_HWACCEL_DISABLED) {
153 cfb_copyarea(info, area); 149 cfb_copyarea(info, area);
154 return; 150 return;
155 } 151 }
156 152
153 radeon_fixup_offset(rinfo);
154
157 vxres = info->var.xres_virtual; 155 vxres = info->var.xres_virtual;
158 vyres = info->var.yres_virtual; 156 vyres = info->var.yres_virtual;
159 157
@@ -170,115 +168,13 @@ void radeonfb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
170 radeonfb_prim_copyarea(rinfo, &modded); 168 radeonfb_prim_copyarea(rinfo, &modded);
171} 169}
172 170
173static void radeonfb_prim_imageblit(struct radeonfb_info *rinfo,
174 const struct fb_image *image,
175 u32 fg, u32 bg)
176{
177 unsigned int dwords;
178 u32 *bits;
179
180 radeonfb_set_creg(rinfo, DP_GUI_MASTER_CNTL, &rinfo->dp_gui_mc_cache,
181 rinfo->dp_gui_mc_base |
182 GMC_BRUSH_NONE | GMC_DST_CLIP_LEAVE |
183 GMC_SRC_DATATYPE_MONO_FG_BG |
184 ROP3_S |
185 GMC_BYTE_ORDER_MSB_TO_LSB |
186 DP_SRC_SOURCE_HOST_DATA);
187 radeonfb_set_creg(rinfo, DP_CNTL, &rinfo->dp_cntl_cache,
188 DST_X_LEFT_TO_RIGHT | DST_Y_TOP_TO_BOTTOM);
189 radeonfb_set_creg(rinfo, DP_SRC_FRGD_CLR, &rinfo->dp_src_fg_cache, fg);
190 radeonfb_set_creg(rinfo, DP_SRC_BKGD_CLR, &rinfo->dp_src_bg_cache, bg);
191
192 /* Ensure the dst cache is flushed and the engine idle before
193 * issuing the operation.
194 *
195 * This works around engine lockups on some cards
196 */
197#if FLUSH_CACHE_WORKAROUND
198 radeon_fifo_wait(rinfo, 2);
199 OUTREG(DSTCACHE_CTLSTAT, RB2D_DC_FLUSH_ALL);
200 OUTREG(WAIT_UNTIL, (WAIT_2D_IDLECLEAN | WAIT_DMA_GUI_IDLE));
201#endif
202
203 /* X here pads width to a multiple of 32 and uses the clipper to
204 * adjust the result. Is that really necessary ? Things seem to
205 * work ok for me without that and the doco doesn't seem to imply]
206 * there is such a restriction.
207 */
208 radeon_fifo_wait(rinfo, 4);
209 OUTREG(SC_TOP_LEFT, (image->dy << 16) | image->dx);
210 OUTREG(SC_BOTTOM_RIGHT, ((image->dy + image->height) << 16) |
211 (image->dx + image->width));
212 OUTREG(DST_Y_X, (image->dy << 16) | image->dx);
213
214 OUTREG(DST_HEIGHT_WIDTH, (image->height << 16) | ((image->width + 31) & ~31));
215
216 dwords = (image->width + 31) >> 5;
217 dwords *= image->height;
218 bits = (u32*)(image->data);
219
220 while(dwords >= 8) {
221 radeon_fifo_wait(rinfo, 8);
222#if BITS_PER_LONG == 64
223 __raw_writeq(*((u64 *)(bits)), rinfo->mmio_base + HOST_DATA0);
224 __raw_writeq(*((u64 *)(bits+2)), rinfo->mmio_base + HOST_DATA2);
225 __raw_writeq(*((u64 *)(bits+4)), rinfo->mmio_base + HOST_DATA4);
226 __raw_writeq(*((u64 *)(bits+6)), rinfo->mmio_base + HOST_DATA6);
227 bits += 8;
228#else
229 __raw_writel(*(bits++), rinfo->mmio_base + HOST_DATA0);
230 __raw_writel(*(bits++), rinfo->mmio_base + HOST_DATA1);
231 __raw_writel(*(bits++), rinfo->mmio_base + HOST_DATA2);
232 __raw_writel(*(bits++), rinfo->mmio_base + HOST_DATA3);
233 __raw_writel(*(bits++), rinfo->mmio_base + HOST_DATA4);
234 __raw_writel(*(bits++), rinfo->mmio_base + HOST_DATA5);
235 __raw_writel(*(bits++), rinfo->mmio_base + HOST_DATA6);
236 __raw_writel(*(bits++), rinfo->mmio_base + HOST_DATA7);
237#endif
238 dwords -= 8;
239 }
240 while(dwords--) {
241 radeon_fifo_wait(rinfo, 1);
242 __raw_writel(*(bits++), rinfo->mmio_base + HOST_DATA0);
243 }
244}
245
246void radeonfb_imageblit(struct fb_info *info, const struct fb_image *image) 171void radeonfb_imageblit(struct fb_info *info, const struct fb_image *image)
247{ 172{
248 struct radeonfb_info *rinfo = info->par; 173 struct radeonfb_info *rinfo = info->par;
249 u32 fg, bg;
250
251 WARN_ON(rinfo->gfx_mode);
252 if (info->state != FBINFO_STATE_RUNNING || rinfo->gfx_mode)
253 return;
254 174
255 if (!image->width || !image->height) 175 if (info->state != FBINFO_STATE_RUNNING)
256 return; 176 return;
257 177 radeon_engine_idle();
258 /* We only do 1 bpp color expansion for now */
259 if (info->flags & FBINFO_HWACCEL_DISABLED || image->depth != 1)
260 goto fallback;
261
262 /* Fallback if running out of the screen. We may do clipping
263 * in the future */
264 if ((image->dx + image->width) > info->var.xres_virtual ||
265 (image->dy + image->height) > info->var.yres_virtual)
266 goto fallback;
267
268 if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
269 info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
270 fg = ((u32*)(info->pseudo_palette))[image->fg_color];
271 bg = ((u32*)(info->pseudo_palette))[image->bg_color];
272 } else {
273 fg = image->fg_color;
274 bg = image->bg_color;
275 }
276
277 radeonfb_prim_imageblit(rinfo, image, fg, bg);
278 return;
279
280 fallback:
281 radeon_engine_idle(rinfo);
282 178
283 cfb_imageblit(info, image); 179 cfb_imageblit(info, image);
284} 180}
@@ -289,8 +185,7 @@ int radeonfb_sync(struct fb_info *info)
289 185
290 if (info->state != FBINFO_STATE_RUNNING) 186 if (info->state != FBINFO_STATE_RUNNING)
291 return 0; 187 return 0;
292 188 radeon_engine_idle();
293 radeon_engine_idle(rinfo);
294 189
295 return 0; 190 return 0;
296} 191}
@@ -366,10 +261,9 @@ void radeonfb_engine_init (struct radeonfb_info *rinfo)
366 /* disable 3D engine */ 261 /* disable 3D engine */
367 OUTREG(RB3D_CNTL, 0); 262 OUTREG(RB3D_CNTL, 0);
368 263
369 rinfo->fifo_free = 0;
370 radeonfb_engine_reset(rinfo); 264 radeonfb_engine_reset(rinfo);
371 265
372 radeon_fifo_wait(rinfo, 1); 266 radeon_fifo_wait (1);
373 if (IS_R300_VARIANT(rinfo)) { 267 if (IS_R300_VARIANT(rinfo)) {
374 OUTREG(RB2D_DSTCACHE_MODE, INREG(RB2D_DSTCACHE_MODE) | 268 OUTREG(RB2D_DSTCACHE_MODE, INREG(RB2D_DSTCACHE_MODE) |
375 RB2D_DC_AUTOFLUSH_ENABLE | 269 RB2D_DC_AUTOFLUSH_ENABLE |
@@ -383,7 +277,7 @@ void radeonfb_engine_init (struct radeonfb_info *rinfo)
383 OUTREG(RB2D_DSTCACHE_MODE, 0); 277 OUTREG(RB2D_DSTCACHE_MODE, 0);
384 } 278 }
385 279
386 radeon_fifo_wait(rinfo, 3); 280 radeon_fifo_wait (3);
387 /* We re-read MC_FB_LOCATION from card as it can have been 281 /* We re-read MC_FB_LOCATION from card as it can have been
388 * modified by XFree drivers (ouch !) 282 * modified by XFree drivers (ouch !)
389 */ 283 */
@@ -394,57 +288,41 @@ void radeonfb_engine_init (struct radeonfb_info *rinfo)
394 OUTREG(DST_PITCH_OFFSET, (rinfo->pitch << 0x16) | (rinfo->fb_local_base >> 10)); 288 OUTREG(DST_PITCH_OFFSET, (rinfo->pitch << 0x16) | (rinfo->fb_local_base >> 10));
395 OUTREG(SRC_PITCH_OFFSET, (rinfo->pitch << 0x16) | (rinfo->fb_local_base >> 10)); 289 OUTREG(SRC_PITCH_OFFSET, (rinfo->pitch << 0x16) | (rinfo->fb_local_base >> 10));
396 290
397 radeon_fifo_wait(rinfo, 1); 291 radeon_fifo_wait (1);
398#ifdef __BIG_ENDIAN 292#if defined(__BIG_ENDIAN)
399 OUTREGP(DP_DATATYPE, HOST_BIG_ENDIAN_EN, ~HOST_BIG_ENDIAN_EN); 293 OUTREGP(DP_DATATYPE, HOST_BIG_ENDIAN_EN, ~HOST_BIG_ENDIAN_EN);
400#else 294#else
401 OUTREGP(DP_DATATYPE, 0, ~HOST_BIG_ENDIAN_EN); 295 OUTREGP(DP_DATATYPE, 0, ~HOST_BIG_ENDIAN_EN);
402#endif 296#endif
403 radeon_fifo_wait(rinfo, 2); 297 radeon_fifo_wait (2);
404 OUTREG(DEFAULT_SC_TOP_LEFT, 0); 298 OUTREG(DEFAULT_SC_TOP_LEFT, 0);
405 OUTREG(DEFAULT_SC_BOTTOM_RIGHT, (DEFAULT_SC_RIGHT_MAX | 299 OUTREG(DEFAULT_SC_BOTTOM_RIGHT, (DEFAULT_SC_RIGHT_MAX |
406 DEFAULT_SC_BOTTOM_MAX)); 300 DEFAULT_SC_BOTTOM_MAX));
407 301
408 /* set default DP_GUI_MASTER_CNTL */
409 temp = radeon_get_dstbpp(rinfo->depth); 302 temp = radeon_get_dstbpp(rinfo->depth);
410 rinfo->dp_gui_mc_base = ((temp << 8) | GMC_CLR_CMP_CNTL_DIS); 303 rinfo->dp_gui_master_cntl = ((temp << 8) | GMC_CLR_CMP_CNTL_DIS);
411 304
412 rinfo->dp_gui_mc_cache = rinfo->dp_gui_mc_base | 305 radeon_fifo_wait (1);
413 GMC_BRUSH_SOLID_COLOR | 306 OUTREG(DP_GUI_MASTER_CNTL, (rinfo->dp_gui_master_cntl |
414 GMC_SRC_DATATYPE_COLOR; 307 GMC_BRUSH_SOLID_COLOR |
415 radeon_fifo_wait(rinfo, 1); 308 GMC_SRC_DATATYPE_COLOR));
416 OUTREG(DP_GUI_MASTER_CNTL, rinfo->dp_gui_mc_cache);
417 309
310 radeon_fifo_wait (7);
418 311
419 /* clear line drawing regs */ 312 /* clear line drawing regs */
420 radeon_fifo_wait(rinfo, 2);
421 OUTREG(DST_LINE_START, 0); 313 OUTREG(DST_LINE_START, 0);
422 OUTREG(DST_LINE_END, 0); 314 OUTREG(DST_LINE_END, 0);
423 315
424 /* set brush and source color regs */ 316 /* set brush color regs */
425 rinfo->dp_brush_fg_cache = 0xffffffff; 317 OUTREG(DP_BRUSH_FRGD_CLR, 0xffffffff);
426 rinfo->dp_brush_bg_cache = 0x00000000; 318 OUTREG(DP_BRUSH_BKGD_CLR, 0x00000000);
427 rinfo->dp_src_fg_cache = 0xffffffff; 319
428 rinfo->dp_src_bg_cache = 0x00000000; 320 /* set source color regs */
429 radeon_fifo_wait(rinfo, 4); 321 OUTREG(DP_SRC_FRGD_CLR, 0xffffffff);
430 OUTREG(DP_BRUSH_FRGD_CLR, rinfo->dp_brush_fg_cache); 322 OUTREG(DP_SRC_BKGD_CLR, 0x00000000);
431 OUTREG(DP_BRUSH_BKGD_CLR, rinfo->dp_brush_bg_cache);
432 OUTREG(DP_SRC_FRGD_CLR, rinfo->dp_src_fg_cache);
433 OUTREG(DP_SRC_BKGD_CLR, rinfo->dp_src_bg_cache);
434
435 /* Default direction */
436 rinfo->dp_cntl_cache = DST_X_LEFT_TO_RIGHT | DST_Y_TOP_TO_BOTTOM;
437 radeon_fifo_wait(rinfo, 1);
438 OUTREG(DP_CNTL, rinfo->dp_cntl_cache);
439 323
440 /* default write mask */ 324 /* default write mask */
441 radeon_fifo_wait(rinfo, 1);
442 OUTREG(DP_WRITE_MSK, 0xffffffff); 325 OUTREG(DP_WRITE_MSK, 0xffffffff);
443 326
444 /* Default to no swapping of host data */ 327 radeon_engine_idle ();
445 radeon_fifo_wait(rinfo, 1);
446 OUTREG(RBBM_GUICNTL, RBBM_GUICNTL_HOST_DATA_SWAP_NONE);
447
448 /* Make sure it's settled */
449 radeon_engine_idle(rinfo);
450} 328}
diff --git a/drivers/video/aty/radeon_backlight.c b/drivers/video/aty/radeon_backlight.c
index f343ba83f0ae..1a056adb61c8 100644
--- a/drivers/video/aty/radeon_backlight.c
+++ b/drivers/video/aty/radeon_backlight.c
@@ -66,7 +66,7 @@ static int radeon_bl_update_status(struct backlight_device *bd)
66 level = bd->props.brightness; 66 level = bd->props.brightness;
67 67
68 del_timer_sync(&rinfo->lvds_timer); 68 del_timer_sync(&rinfo->lvds_timer);
69 radeon_engine_idle(rinfo); 69 radeon_engine_idle();
70 70
71 lvds_gen_cntl = INREG(LVDS_GEN_CNTL); 71 lvds_gen_cntl = INREG(LVDS_GEN_CNTL);
72 if (level > 0) { 72 if (level > 0) {
diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c
index b3ffe8205d2b..d0f1a7fc2c9d 100644
--- a/drivers/video/aty/radeon_base.c
+++ b/drivers/video/aty/radeon_base.c
@@ -852,6 +852,7 @@ static int radeonfb_pan_display (struct fb_var_screeninfo *var,
852 if (rinfo->asleep) 852 if (rinfo->asleep)
853 return 0; 853 return 0;
854 854
855 radeon_fifo_wait(2);
855 OUTREG(CRTC_OFFSET, ((var->yoffset * var->xres_virtual + var->xoffset) 856 OUTREG(CRTC_OFFSET, ((var->yoffset * var->xres_virtual + var->xoffset)
856 * var->bits_per_pixel / 8) & ~7); 857 * var->bits_per_pixel / 8) & ~7);
857 return 0; 858 return 0;
@@ -881,6 +882,7 @@ static int radeonfb_ioctl (struct fb_info *info, unsigned int cmd,
881 if (rc) 882 if (rc)
882 return rc; 883 return rc;
883 884
885 radeon_fifo_wait(2);
884 if (value & 0x01) { 886 if (value & 0x01) {
885 tmp = INREG(LVDS_GEN_CNTL); 887 tmp = INREG(LVDS_GEN_CNTL);
886 888
@@ -938,7 +940,7 @@ int radeon_screen_blank(struct radeonfb_info *rinfo, int blank, int mode_switch)
938 if (rinfo->lock_blank) 940 if (rinfo->lock_blank)
939 return 0; 941 return 0;
940 942
941 radeon_engine_idle(rinfo); 943 radeon_engine_idle();
942 944
943 val = INREG(CRTC_EXT_CNTL); 945 val = INREG(CRTC_EXT_CNTL);
944 val &= ~(CRTC_DISPLAY_DIS | CRTC_HSYNC_DIS | 946 val &= ~(CRTC_DISPLAY_DIS | CRTC_HSYNC_DIS |
@@ -1046,7 +1048,7 @@ static int radeonfb_blank (int blank, struct fb_info *info)
1046 1048
1047 if (rinfo->asleep) 1049 if (rinfo->asleep)
1048 return 0; 1050 return 0;
1049 1051
1050 return radeon_screen_blank(rinfo, blank, 0); 1052 return radeon_screen_blank(rinfo, blank, 0);
1051} 1053}
1052 1054
@@ -1072,6 +1074,8 @@ static int radeon_setcolreg (unsigned regno, unsigned red, unsigned green,
1072 pindex = regno; 1074 pindex = regno;
1073 1075
1074 if (!rinfo->asleep) { 1076 if (!rinfo->asleep) {
1077 radeon_fifo_wait(9);
1078
1075 if (rinfo->bpp == 16) { 1079 if (rinfo->bpp == 16) {
1076 pindex = regno * 8; 1080 pindex = regno * 8;
1077 1081
@@ -1240,6 +1244,8 @@ static void radeon_write_pll_regs(struct radeonfb_info *rinfo, struct radeon_reg
1240{ 1244{
1241 int i; 1245 int i;
1242 1246
1247 radeon_fifo_wait(20);
1248
1243 /* Workaround from XFree */ 1249 /* Workaround from XFree */
1244 if (rinfo->is_mobility) { 1250 if (rinfo->is_mobility) {
1245 /* A temporal workaround for the occational blanking on certain laptop 1251 /* A temporal workaround for the occational blanking on certain laptop
@@ -1335,7 +1341,7 @@ static void radeon_lvds_timer_func(unsigned long data)
1335{ 1341{
1336 struct radeonfb_info *rinfo = (struct radeonfb_info *)data; 1342 struct radeonfb_info *rinfo = (struct radeonfb_info *)data;
1337 1343
1338 radeon_engine_idle(rinfo); 1344 radeon_engine_idle();
1339 1345
1340 OUTREG(LVDS_GEN_CNTL, rinfo->pending_lvds_gen_cntl); 1346 OUTREG(LVDS_GEN_CNTL, rinfo->pending_lvds_gen_cntl);
1341} 1347}
@@ -1353,11 +1359,10 @@ void radeon_write_mode (struct radeonfb_info *rinfo, struct radeon_regs *mode,
1353 if (nomodeset) 1359 if (nomodeset)
1354 return; 1360 return;
1355 1361
1356 radeon_engine_idle(rinfo);
1357
1358 if (!regs_only) 1362 if (!regs_only)
1359 radeon_screen_blank(rinfo, FB_BLANK_NORMAL, 0); 1363 radeon_screen_blank(rinfo, FB_BLANK_NORMAL, 0);
1360 1364
1365 radeon_fifo_wait(31);
1361 for (i=0; i<10; i++) 1366 for (i=0; i<10; i++)
1362 OUTREG(common_regs[i].reg, common_regs[i].val); 1367 OUTREG(common_regs[i].reg, common_regs[i].val);
1363 1368
@@ -1385,6 +1390,7 @@ void radeon_write_mode (struct radeonfb_info *rinfo, struct radeon_regs *mode,
1385 radeon_write_pll_regs(rinfo, mode); 1390 radeon_write_pll_regs(rinfo, mode);
1386 1391
1387 if ((primary_mon == MT_DFP) || (primary_mon == MT_LCD)) { 1392 if ((primary_mon == MT_DFP) || (primary_mon == MT_LCD)) {
1393 radeon_fifo_wait(10);
1388 OUTREG(FP_CRTC_H_TOTAL_DISP, mode->fp_crtc_h_total_disp); 1394 OUTREG(FP_CRTC_H_TOTAL_DISP, mode->fp_crtc_h_total_disp);
1389 OUTREG(FP_CRTC_V_TOTAL_DISP, mode->fp_crtc_v_total_disp); 1395 OUTREG(FP_CRTC_V_TOTAL_DISP, mode->fp_crtc_v_total_disp);
1390 OUTREG(FP_H_SYNC_STRT_WID, mode->fp_h_sync_strt_wid); 1396 OUTREG(FP_H_SYNC_STRT_WID, mode->fp_h_sync_strt_wid);
@@ -1399,6 +1405,7 @@ void radeon_write_mode (struct radeonfb_info *rinfo, struct radeon_regs *mode,
1399 if (!regs_only) 1405 if (!regs_only)
1400 radeon_screen_blank(rinfo, FB_BLANK_UNBLANK, 0); 1406 radeon_screen_blank(rinfo, FB_BLANK_UNBLANK, 0);
1401 1407
1408 radeon_fifo_wait(2);
1402 OUTPLL(VCLK_ECP_CNTL, mode->vclk_ecp_cntl); 1409 OUTPLL(VCLK_ECP_CNTL, mode->vclk_ecp_cntl);
1403 1410
1404 return; 1411 return;
@@ -1549,7 +1556,7 @@ static int radeonfb_set_par(struct fb_info *info)
1549 /* We always want engine to be idle on a mode switch, even 1556 /* We always want engine to be idle on a mode switch, even
1550 * if we won't actually change the mode 1557 * if we won't actually change the mode
1551 */ 1558 */
1552 radeon_engine_idle(rinfo); 1559 radeon_engine_idle();
1553 1560
1554 hSyncStart = mode->xres + mode->right_margin; 1561 hSyncStart = mode->xres + mode->right_margin;
1555 hSyncEnd = hSyncStart + mode->hsync_len; 1562 hSyncEnd = hSyncStart + mode->hsync_len;
@@ -1844,6 +1851,7 @@ static int radeonfb_set_par(struct fb_info *info)
1844 return 0; 1851 return 0;
1845} 1852}
1846 1853
1854
1847static struct fb_ops radeonfb_ops = { 1855static struct fb_ops radeonfb_ops = {
1848 .owner = THIS_MODULE, 1856 .owner = THIS_MODULE,
1849 .fb_check_var = radeonfb_check_var, 1857 .fb_check_var = radeonfb_check_var,
@@ -1867,7 +1875,6 @@ static int __devinit radeon_set_fbinfo (struct radeonfb_info *rinfo)
1867 info->par = rinfo; 1875 info->par = rinfo;
1868 info->pseudo_palette = rinfo->pseudo_palette; 1876 info->pseudo_palette = rinfo->pseudo_palette;
1869 info->flags = FBINFO_DEFAULT 1877 info->flags = FBINFO_DEFAULT
1870 | FBINFO_HWACCEL_IMAGEBLIT
1871 | FBINFO_HWACCEL_COPYAREA 1878 | FBINFO_HWACCEL_COPYAREA
1872 | FBINFO_HWACCEL_FILLRECT 1879 | FBINFO_HWACCEL_FILLRECT
1873 | FBINFO_HWACCEL_XPAN 1880 | FBINFO_HWACCEL_XPAN
@@ -1875,7 +1882,6 @@ static int __devinit radeon_set_fbinfo (struct radeonfb_info *rinfo)
1875 info->fbops = &radeonfb_ops; 1882 info->fbops = &radeonfb_ops;
1876 info->screen_base = rinfo->fb_base; 1883 info->screen_base = rinfo->fb_base;
1877 info->screen_size = rinfo->mapped_vram; 1884 info->screen_size = rinfo->mapped_vram;
1878
1879 /* Fill fix common fields */ 1885 /* Fill fix common fields */
1880 strlcpy(info->fix.id, rinfo->name, sizeof(info->fix.id)); 1886 strlcpy(info->fix.id, rinfo->name, sizeof(info->fix.id));
1881 info->fix.smem_start = rinfo->fb_base_phys; 1887 info->fix.smem_start = rinfo->fb_base_phys;
@@ -1890,25 +1896,8 @@ static int __devinit radeon_set_fbinfo (struct radeonfb_info *rinfo)
1890 info->fix.mmio_len = RADEON_REGSIZE; 1896 info->fix.mmio_len = RADEON_REGSIZE;
1891 info->fix.accel = FB_ACCEL_ATI_RADEON; 1897 info->fix.accel = FB_ACCEL_ATI_RADEON;
1892 1898
1893 /* Allocate colormap */
1894 fb_alloc_cmap(&info->cmap, 256, 0); 1899 fb_alloc_cmap(&info->cmap, 256, 0);
1895 1900
1896 /* Setup pixmap used for acceleration */
1897#define PIXMAP_SIZE (2048 * 4)
1898
1899 info->pixmap.addr = kmalloc(PIXMAP_SIZE, GFP_KERNEL);
1900 if (!info->pixmap.addr) {
1901 printk(KERN_ERR "radeonfb: Failed to allocate pixmap !\n");
1902 noaccel = 1;
1903 goto bail;
1904 }
1905 info->pixmap.size = PIXMAP_SIZE;
1906 info->pixmap.flags = FB_PIXMAP_SYSTEM;
1907 info->pixmap.scan_align = 4;
1908 info->pixmap.buf_align = 4;
1909 info->pixmap.access_align = 32;
1910
1911bail:
1912 if (noaccel) 1901 if (noaccel)
1913 info->flags |= FBINFO_HWACCEL_DISABLED; 1902 info->flags |= FBINFO_HWACCEL_DISABLED;
1914 1903
@@ -2017,6 +2006,7 @@ static void radeon_identify_vram(struct radeonfb_info *rinfo)
2017 u32 tom = INREG(NB_TOM); 2006 u32 tom = INREG(NB_TOM);
2018 tmp = ((((tom >> 16) - (tom & 0xffff) + 1) << 6) * 1024); 2007 tmp = ((((tom >> 16) - (tom & 0xffff) + 1) << 6) * 1024);
2019 2008
2009 radeon_fifo_wait(6);
2020 OUTREG(MC_FB_LOCATION, tom); 2010 OUTREG(MC_FB_LOCATION, tom);
2021 OUTREG(DISPLAY_BASE_ADDR, (tom & 0xffff) << 16); 2011 OUTREG(DISPLAY_BASE_ADDR, (tom & 0xffff) << 16);
2022 OUTREG(CRTC2_DISPLAY_BASE_ADDR, (tom & 0xffff) << 16); 2012 OUTREG(CRTC2_DISPLAY_BASE_ADDR, (tom & 0xffff) << 16);
diff --git a/drivers/video/aty/radeon_pm.c b/drivers/video/aty/radeon_pm.c
index 3df5015f1d13..675abdafc2d8 100644
--- a/drivers/video/aty/radeon_pm.c
+++ b/drivers/video/aty/radeon_pm.c
@@ -2653,9 +2653,9 @@ int radeonfb_pci_suspend(struct pci_dev *pdev, pm_message_t mesg)
2653 2653
2654 if (!(info->flags & FBINFO_HWACCEL_DISABLED)) { 2654 if (!(info->flags & FBINFO_HWACCEL_DISABLED)) {
2655 /* Make sure engine is reset */ 2655 /* Make sure engine is reset */
2656 radeon_engine_idle(rinfo); 2656 radeon_engine_idle();
2657 radeonfb_engine_reset(rinfo); 2657 radeonfb_engine_reset(rinfo);
2658 radeon_engine_idle(rinfo); 2658 radeon_engine_idle();
2659 } 2659 }
2660 2660
2661 /* Blank display and LCD */ 2661 /* Blank display and LCD */
@@ -2767,7 +2767,7 @@ int radeonfb_pci_resume(struct pci_dev *pdev)
2767 2767
2768 rinfo->asleep = 0; 2768 rinfo->asleep = 0;
2769 } else 2769 } else
2770 radeon_engine_idle(rinfo); 2770 radeon_engine_idle();
2771 2771
2772 /* Restore display & engine */ 2772 /* Restore display & engine */
2773 radeon_write_mode (rinfo, &rinfo->state, 1); 2773 radeon_write_mode (rinfo, &rinfo->state, 1);
diff --git a/drivers/video/aty/radeonfb.h b/drivers/video/aty/radeonfb.h
index ea0b5b47acaf..3ea1b00fdd22 100644
--- a/drivers/video/aty/radeonfb.h
+++ b/drivers/video/aty/radeonfb.h
@@ -336,15 +336,7 @@ struct radeonfb_info {
336 int mon2_type; 336 int mon2_type;
337 u8 *mon2_EDID; 337 u8 *mon2_EDID;
338 338
339 /* accel bits */ 339 u32 dp_gui_master_cntl;
340 u32 dp_gui_mc_base;
341 u32 dp_gui_mc_cache;
342 u32 dp_cntl_cache;
343 u32 dp_brush_fg_cache;
344 u32 dp_brush_bg_cache;
345 u32 dp_src_fg_cache;
346 u32 dp_src_bg_cache;
347 u32 fifo_free;
348 340
349 struct pll_info pll; 341 struct pll_info pll;
350 342
@@ -356,7 +348,6 @@ struct radeonfb_info {
356 int lock_blank; 348 int lock_blank;
357 int dynclk; 349 int dynclk;
358 int no_schedule; 350 int no_schedule;
359 int gfx_mode;
360 enum radeon_pm_mode pm_mode; 351 enum radeon_pm_mode pm_mode;
361 reinit_function_ptr reinit_func; 352 reinit_function_ptr reinit_func;
362 353
@@ -401,14 +392,8 @@ static inline void _radeon_msleep(struct radeonfb_info *rinfo, unsigned long ms)
401#define OUTREG8(addr,val) writeb(val, (rinfo->mmio_base)+addr) 392#define OUTREG8(addr,val) writeb(val, (rinfo->mmio_base)+addr)
402#define INREG16(addr) readw((rinfo->mmio_base)+addr) 393#define INREG16(addr) readw((rinfo->mmio_base)+addr)
403#define OUTREG16(addr,val) writew(val, (rinfo->mmio_base)+addr) 394#define OUTREG16(addr,val) writew(val, (rinfo->mmio_base)+addr)
404
405#ifdef CONFIG_PPC
406#define INREG(addr) ({ eieio(); ld_le32(rinfo->mmio_base+(addr)); })
407#define OUTREG(addr,val) do { eieio(); st_le32(rinfo->mmio_base+(addr),(val)); } while(0)
408#else
409#define INREG(addr) readl((rinfo->mmio_base)+addr) 395#define INREG(addr) readl((rinfo->mmio_base)+addr)
410#define OUTREG(addr,val) writel(val, (rinfo->mmio_base)+addr) 396#define OUTREG(addr,val) writel(val, (rinfo->mmio_base)+addr)
411#endif
412 397
413static inline void _OUTREGP(struct radeonfb_info *rinfo, u32 addr, 398static inline void _OUTREGP(struct radeonfb_info *rinfo, u32 addr,
414 u32 val, u32 mask) 399 u32 val, u32 mask)
@@ -550,7 +535,17 @@ static inline u32 radeon_get_dstbpp(u16 depth)
550 * 2D Engine helper routines 535 * 2D Engine helper routines
551 */ 536 */
552 537
553extern void radeon_fifo_update_and_wait(struct radeonfb_info *rinfo, int entries); 538static inline void _radeon_fifo_wait(struct radeonfb_info *rinfo, int entries)
539{
540 int i;
541
542 for (i=0; i<2000000; i++) {
543 if ((INREG(RBBM_STATUS) & 0x7f) >= entries)
544 return;
545 udelay(1);
546 }
547 printk(KERN_ERR "radeonfb: FIFO Timeout !\n");
548}
554 549
555static inline void radeon_engine_flush (struct radeonfb_info *rinfo) 550static inline void radeon_engine_flush (struct radeonfb_info *rinfo)
556{ 551{
@@ -563,7 +558,7 @@ static inline void radeon_engine_flush (struct radeonfb_info *rinfo)
563 /* Ensure FIFO is empty, ie, make sure the flush commands 558 /* Ensure FIFO is empty, ie, make sure the flush commands
564 * has reached the cache 559 * has reached the cache
565 */ 560 */
566 radeon_fifo_update_and_wait(rinfo, 64); 561 _radeon_fifo_wait (rinfo, 64);
567 562
568 /* Wait for the flush to complete */ 563 /* Wait for the flush to complete */
569 for (i=0; i < 2000000; i++) { 564 for (i=0; i < 2000000; i++) {
@@ -575,12 +570,12 @@ static inline void radeon_engine_flush (struct radeonfb_info *rinfo)
575} 570}
576 571
577 572
578static inline void radeon_engine_idle(struct radeonfb_info *rinfo) 573static inline void _radeon_engine_idle(struct radeonfb_info *rinfo)
579{ 574{
580 int i; 575 int i;
581 576
582 /* ensure FIFO is empty before waiting for idle */ 577 /* ensure FIFO is empty before waiting for idle */
583 radeon_fifo_update_and_wait (rinfo, 64); 578 _radeon_fifo_wait (rinfo, 64);
584 579
585 for (i=0; i<2000000; i++) { 580 for (i=0; i<2000000; i++) {
586 if (((INREG(RBBM_STATUS) & GUI_ACTIVE)) == 0) { 581 if (((INREG(RBBM_STATUS) & GUI_ACTIVE)) == 0) {
@@ -593,6 +588,8 @@ static inline void radeon_engine_idle(struct radeonfb_info *rinfo)
593} 588}
594 589
595 590
591#define radeon_engine_idle() _radeon_engine_idle(rinfo)
592#define radeon_fifo_wait(entries) _radeon_fifo_wait(rinfo,entries)
596#define radeon_msleep(ms) _radeon_msleep(rinfo,ms) 593#define radeon_msleep(ms) _radeon_msleep(rinfo,ms)
597 594
598 595
@@ -622,7 +619,6 @@ extern void radeonfb_imageblit(struct fb_info *p, const struct fb_image *image);
622extern int radeonfb_sync(struct fb_info *info); 619extern int radeonfb_sync(struct fb_info *info);
623extern void radeonfb_engine_init (struct radeonfb_info *rinfo); 620extern void radeonfb_engine_init (struct radeonfb_info *rinfo);
624extern void radeonfb_engine_reset(struct radeonfb_info *rinfo); 621extern void radeonfb_engine_reset(struct radeonfb_info *rinfo);
625extern void radeon_fixup_mem_offset(struct radeonfb_info *rinfo);
626 622
627/* Other functions */ 623/* Other functions */
628extern int radeon_screen_blank(struct radeonfb_info *rinfo, int blank, int mode_switch); 624extern int radeon_screen_blank(struct radeonfb_info *rinfo, int blank, int mode_switch);
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 67ff370d80af..0b2adefe9e3d 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -3531,12 +3531,18 @@ static void fbcon_exit(void)
3531 softback_buf = 0UL; 3531 softback_buf = 0UL;
3532 3532
3533 for (i = 0; i < FB_MAX; i++) { 3533 for (i = 0; i < FB_MAX; i++) {
3534 int pending;
3535
3534 mapped = 0; 3536 mapped = 0;
3535 info = registered_fb[i]; 3537 info = registered_fb[i];
3536 3538
3537 if (info == NULL) 3539 if (info == NULL)
3538 continue; 3540 continue;
3539 3541
3542 pending = cancel_work_sync(&info->queue);
3543 DPRINTK("fbcon: %s pending work\n", (pending ? "canceled" :
3544 "no"));
3545
3540 for (j = first_fb_vc; j <= last_fb_vc; j++) { 3546 for (j = first_fb_vc; j <= last_fb_vc; j++) {
3541 if (con2fb_map[j] == i) 3547 if (con2fb_map[j] == i)
3542 mapped = 1; 3548 mapped = 1;
diff --git a/drivers/video/macfb.c b/drivers/video/macfb.c
index b790ddff76f9..ee380d5f3410 100644
--- a/drivers/video/macfb.c
+++ b/drivers/video/macfb.c
@@ -164,7 +164,6 @@ static struct fb_var_screeninfo macfb_defined = {
164}; 164};
165 165
166static struct fb_fix_screeninfo macfb_fix = { 166static struct fb_fix_screeninfo macfb_fix = {
167 .id = "Macintosh ",
168 .type = FB_TYPE_PACKED_PIXELS, 167 .type = FB_TYPE_PACKED_PIXELS,
169 .accel = FB_ACCEL_NONE, 168 .accel = FB_ACCEL_NONE,
170}; 169};
@@ -760,22 +759,22 @@ static int __init macfb_init(void)
760 759
761 switch(ndev->dr_hw) { 760 switch(ndev->dr_hw) {
762 case NUBUS_DRHW_APPLE_MDC: 761 case NUBUS_DRHW_APPLE_MDC:
763 strcat( macfb_fix.id, "Display Card" ); 762 strcpy(macfb_fix.id, "Mac Disp. Card");
764 macfb_setpalette = mdc_setpalette; 763 macfb_setpalette = mdc_setpalette;
765 macfb_defined.activate = FB_ACTIVATE_NOW; 764 macfb_defined.activate = FB_ACTIVATE_NOW;
766 break; 765 break;
767 case NUBUS_DRHW_APPLE_TFB: 766 case NUBUS_DRHW_APPLE_TFB:
768 strcat( macfb_fix.id, "Toby" ); 767 strcpy(macfb_fix.id, "Toby");
769 macfb_setpalette = toby_setpalette; 768 macfb_setpalette = toby_setpalette;
770 macfb_defined.activate = FB_ACTIVATE_NOW; 769 macfb_defined.activate = FB_ACTIVATE_NOW;
771 break; 770 break;
772 case NUBUS_DRHW_APPLE_JET: 771 case NUBUS_DRHW_APPLE_JET:
773 strcat( macfb_fix.id, "Jet"); 772 strcpy(macfb_fix.id, "Jet");
774 macfb_setpalette = jet_setpalette; 773 macfb_setpalette = jet_setpalette;
775 macfb_defined.activate = FB_ACTIVATE_NOW; 774 macfb_defined.activate = FB_ACTIVATE_NOW;
776 break; 775 break;
777 default: 776 default:
778 strcat( macfb_fix.id, "Generic NuBus" ); 777 strcpy(macfb_fix.id, "Generic NuBus");
779 break; 778 break;
780 } 779 }
781 } 780 }
@@ -786,21 +785,11 @@ static int __init macfb_init(void)
786 if (!video_is_nubus) 785 if (!video_is_nubus)
787 switch( mac_bi_data.id ) 786 switch( mac_bi_data.id )
788 { 787 {
789 /* These don't have onboard video. Eventually, we may
790 be able to write separate framebuffer drivers for
791 them (tobyfb.c, hiresfb.c, etc, etc) */
792 case MAC_MODEL_II:
793 case MAC_MODEL_IIX:
794 case MAC_MODEL_IICX:
795 case MAC_MODEL_IIFX:
796 strcat( macfb_fix.id, "Generic NuBus" );
797 break;
798
799 /* Valkyrie Quadras */ 788 /* Valkyrie Quadras */
800 case MAC_MODEL_Q630: 789 case MAC_MODEL_Q630:
801 /* I'm not sure about this one */ 790 /* I'm not sure about this one */
802 case MAC_MODEL_P588: 791 case MAC_MODEL_P588:
803 strcat( macfb_fix.id, "Valkyrie built-in" ); 792 strcpy(macfb_fix.id, "Valkyrie");
804 macfb_setpalette = valkyrie_setpalette; 793 macfb_setpalette = valkyrie_setpalette;
805 macfb_defined.activate = FB_ACTIVATE_NOW; 794 macfb_defined.activate = FB_ACTIVATE_NOW;
806 valkyrie_cmap_regs = ioremap(DAC_BASE, 0x1000); 795 valkyrie_cmap_regs = ioremap(DAC_BASE, 0x1000);
@@ -823,7 +812,7 @@ static int __init macfb_init(void)
823 case MAC_MODEL_Q700: 812 case MAC_MODEL_Q700:
824 case MAC_MODEL_Q900: 813 case MAC_MODEL_Q900:
825 case MAC_MODEL_Q950: 814 case MAC_MODEL_Q950:
826 strcat( macfb_fix.id, "DAFB built-in" ); 815 strcpy(macfb_fix.id, "DAFB");
827 macfb_setpalette = dafb_setpalette; 816 macfb_setpalette = dafb_setpalette;
828 macfb_defined.activate = FB_ACTIVATE_NOW; 817 macfb_defined.activate = FB_ACTIVATE_NOW;
829 dafb_cmap_regs = ioremap(DAFB_BASE, 0x1000); 818 dafb_cmap_regs = ioremap(DAFB_BASE, 0x1000);
@@ -831,7 +820,7 @@ static int __init macfb_init(void)
831 820
832 /* LC II uses the V8 framebuffer */ 821 /* LC II uses the V8 framebuffer */
833 case MAC_MODEL_LCII: 822 case MAC_MODEL_LCII:
834 strcat( macfb_fix.id, "V8 built-in" ); 823 strcpy(macfb_fix.id, "V8");
835 macfb_setpalette = v8_brazil_setpalette; 824 macfb_setpalette = v8_brazil_setpalette;
836 macfb_defined.activate = FB_ACTIVATE_NOW; 825 macfb_defined.activate = FB_ACTIVATE_NOW;
837 v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000); 826 v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000);
@@ -843,7 +832,7 @@ static int __init macfb_init(void)
843 case MAC_MODEL_IIVI: 832 case MAC_MODEL_IIVI:
844 case MAC_MODEL_IIVX: 833 case MAC_MODEL_IIVX:
845 case MAC_MODEL_P600: 834 case MAC_MODEL_P600:
846 strcat( macfb_fix.id, "Brazil built-in" ); 835 strcpy(macfb_fix.id, "Brazil");
847 macfb_setpalette = v8_brazil_setpalette; 836 macfb_setpalette = v8_brazil_setpalette;
848 macfb_defined.activate = FB_ACTIVATE_NOW; 837 macfb_defined.activate = FB_ACTIVATE_NOW;
849 v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000); 838 v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000);
@@ -860,7 +849,7 @@ static int __init macfb_init(void)
860 case MAC_MODEL_P460: 849 case MAC_MODEL_P460:
861 macfb_setpalette = v8_brazil_setpalette; 850 macfb_setpalette = v8_brazil_setpalette;
862 macfb_defined.activate = FB_ACTIVATE_NOW; 851 macfb_defined.activate = FB_ACTIVATE_NOW;
863 strcat( macfb_fix.id, "Sonora built-in" ); 852 strcpy(macfb_fix.id, "Sonora");
864 v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000); 853 v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000);
865 break; 854 break;
866 855
@@ -871,7 +860,7 @@ static int __init macfb_init(void)
871 case MAC_MODEL_IISI: 860 case MAC_MODEL_IISI:
872 macfb_setpalette = rbv_setpalette; 861 macfb_setpalette = rbv_setpalette;
873 macfb_defined.activate = FB_ACTIVATE_NOW; 862 macfb_defined.activate = FB_ACTIVATE_NOW;
874 strcat( macfb_fix.id, "RBV built-in" ); 863 strcpy(macfb_fix.id, "RBV");
875 rbv_cmap_regs = ioremap(DAC_BASE, 0x1000); 864 rbv_cmap_regs = ioremap(DAC_BASE, 0x1000);
876 break; 865 break;
877 866
@@ -880,7 +869,7 @@ static int __init macfb_init(void)
880 case MAC_MODEL_C660: 869 case MAC_MODEL_C660:
881 macfb_setpalette = civic_setpalette; 870 macfb_setpalette = civic_setpalette;
882 macfb_defined.activate = FB_ACTIVATE_NOW; 871 macfb_defined.activate = FB_ACTIVATE_NOW;
883 strcat( macfb_fix.id, "Civic built-in" ); 872 strcpy(macfb_fix.id, "Civic");
884 civic_cmap_regs = ioremap(CIVIC_BASE, 0x1000); 873 civic_cmap_regs = ioremap(CIVIC_BASE, 0x1000);
885 break; 874 break;
886 875
@@ -901,7 +890,7 @@ static int __init macfb_init(void)
901 v8_brazil_cmap_regs = 890 v8_brazil_cmap_regs =
902 ioremap(DAC_BASE, 0x1000); 891 ioremap(DAC_BASE, 0x1000);
903 } 892 }
904 strcat( macfb_fix.id, "LC built-in" ); 893 strcpy(macfb_fix.id, "LC");
905 break; 894 break;
906 /* We think this may be like the LC II */ 895 /* We think this may be like the LC II */
907 case MAC_MODEL_CCL: 896 case MAC_MODEL_CCL:
@@ -911,18 +900,18 @@ static int __init macfb_init(void)
911 v8_brazil_cmap_regs = 900 v8_brazil_cmap_regs =
912 ioremap(DAC_BASE, 0x1000); 901 ioremap(DAC_BASE, 0x1000);
913 } 902 }
914 strcat( macfb_fix.id, "Color Classic built-in" ); 903 strcpy(macfb_fix.id, "Color Classic");
915 break; 904 break;
916 905
917 /* And we *do* mean "weirdos" */ 906 /* And we *do* mean "weirdos" */
918 case MAC_MODEL_TV: 907 case MAC_MODEL_TV:
919 strcat( macfb_fix.id, "Mac TV built-in" ); 908 strcpy(macfb_fix.id, "Mac TV");
920 break; 909 break;
921 910
922 /* These don't have colour, so no need to worry */ 911 /* These don't have colour, so no need to worry */
923 case MAC_MODEL_SE30: 912 case MAC_MODEL_SE30:
924 case MAC_MODEL_CLII: 913 case MAC_MODEL_CLII:
925 strcat( macfb_fix.id, "Monochrome built-in" ); 914 strcpy(macfb_fix.id, "Monochrome");
926 break; 915 break;
927 916
928 /* Powerbooks are particularly difficult. Many of 917 /* Powerbooks are particularly difficult. Many of
@@ -935,7 +924,7 @@ static int __init macfb_init(void)
935 case MAC_MODEL_PB140: 924 case MAC_MODEL_PB140:
936 case MAC_MODEL_PB145: 925 case MAC_MODEL_PB145:
937 case MAC_MODEL_PB170: 926 case MAC_MODEL_PB170:
938 strcat( macfb_fix.id, "DDC built-in" ); 927 strcpy(macfb_fix.id, "DDC");
939 break; 928 break;
940 929
941 /* Internal is GSC, External (if present) is ViSC */ 930 /* Internal is GSC, External (if present) is ViSC */
@@ -945,13 +934,13 @@ static int __init macfb_init(void)
945 case MAC_MODEL_PB180: 934 case MAC_MODEL_PB180:
946 case MAC_MODEL_PB210: 935 case MAC_MODEL_PB210:
947 case MAC_MODEL_PB230: 936 case MAC_MODEL_PB230:
948 strcat( macfb_fix.id, "GSC built-in" ); 937 strcpy(macfb_fix.id, "GSC");
949 break; 938 break;
950 939
951 /* Internal is TIM, External is ViSC */ 940 /* Internal is TIM, External is ViSC */
952 case MAC_MODEL_PB165C: 941 case MAC_MODEL_PB165C:
953 case MAC_MODEL_PB180C: 942 case MAC_MODEL_PB180C:
954 strcat( macfb_fix.id, "TIM built-in" ); 943 strcpy(macfb_fix.id, "TIM");
955 break; 944 break;
956 945
957 /* Internal is CSC, External is Keystone+Ariel. */ 946 /* Internal is CSC, External is Keystone+Ariel. */
@@ -963,12 +952,12 @@ static int __init macfb_init(void)
963 case MAC_MODEL_PB280C: 952 case MAC_MODEL_PB280C:
964 macfb_setpalette = csc_setpalette; 953 macfb_setpalette = csc_setpalette;
965 macfb_defined.activate = FB_ACTIVATE_NOW; 954 macfb_defined.activate = FB_ACTIVATE_NOW;
966 strcat( macfb_fix.id, "CSC built-in" ); 955 strcpy(macfb_fix.id, "CSC");
967 csc_cmap_regs = ioremap(CSC_BASE, 0x1000); 956 csc_cmap_regs = ioremap(CSC_BASE, 0x1000);
968 break; 957 break;
969 958
970 default: 959 default:
971 strcat( macfb_fix.id, "Unknown/Unsupported built-in" ); 960 strcpy(macfb_fix.id, "Unknown");
972 break; 961 break;
973 } 962 }
974 963
@@ -978,16 +967,23 @@ static int __init macfb_init(void)
978 fb_info.pseudo_palette = pseudo_palette; 967 fb_info.pseudo_palette = pseudo_palette;
979 fb_info.flags = FBINFO_DEFAULT; 968 fb_info.flags = FBINFO_DEFAULT;
980 969
981 fb_alloc_cmap(&fb_info.cmap, video_cmap_len, 0); 970 err = fb_alloc_cmap(&fb_info.cmap, video_cmap_len, 0);
971 if (err)
972 goto fail_unmap;
982 973
983 err = register_framebuffer(&fb_info); 974 err = register_framebuffer(&fb_info);
984 if (!err) 975 if (err)
985 printk("fb%d: %s frame buffer device\n", 976 goto fail_dealloc;
986 fb_info.node, fb_info.fix.id); 977
987 else { 978 printk("fb%d: %s frame buffer device\n",
988 iounmap(fb_info.screen_base); 979 fb_info.node, fb_info.fix.id);
989 iounmap_macfb(); 980 return 0;
990 } 981
982fail_dealloc:
983 fb_dealloc_cmap(&fb_info.cmap);
984fail_unmap:
985 iounmap(fb_info.screen_base);
986 iounmap_macfb();
991 return err; 987 return err;
992} 988}
993 989
diff --git a/drivers/video/mb862xx/mb862xxfb.c b/drivers/video/mb862xx/mb862xxfb.c
index 38718d95fbb9..fb64234a3825 100644
--- a/drivers/video/mb862xx/mb862xxfb.c
+++ b/drivers/video/mb862xx/mb862xxfb.c
@@ -927,9 +927,9 @@ static int __devinit mb862xx_pci_probe(struct pci_dev *pdev,
927 } 927 }
928 928
929 dev_dbg(dev, "fb phys 0x%llx 0x%lx\n", 929 dev_dbg(dev, "fb phys 0x%llx 0x%lx\n",
930 (u64)par->fb_base_phys, (ulong)par->mapped_vram); 930 (unsigned long long)par->fb_base_phys, (ulong)par->mapped_vram);
931 dev_dbg(dev, "mmio phys 0x%llx 0x%lx\n", 931 dev_dbg(dev, "mmio phys 0x%llx 0x%lx\n",
932 (u64)par->mmio_base_phys, (ulong)par->mmio_len); 932 (unsigned long long)par->mmio_base_phys, (ulong)par->mmio_len);
933 933
934 if (mb862xx_pci_gdc_init(par)) 934 if (mb862xx_pci_gdc_init(par))
935 goto io_unmap; 935 goto io_unmap;
diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
index 5a5e407dc45f..1a49519dafa4 100644
--- a/drivers/video/omap/omapfb_main.c
+++ b/drivers/video/omap/omapfb_main.c
@@ -392,7 +392,7 @@ static void set_fb_fix(struct fb_info *fbi)
392 int bpp; 392 int bpp;
393 393
394 rg = &plane->fbdev->mem_desc.region[plane->idx]; 394 rg = &plane->fbdev->mem_desc.region[plane->idx];
395 fbi->screen_base = (char __iomem *)rg->vaddr; 395 fbi->screen_base = rg->vaddr;
396 fix->smem_start = rg->paddr; 396 fix->smem_start = rg->paddr;
397 fix->smem_len = rg->size; 397 fix->smem_len = rg->size;
398 398
diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c
index a3765e0be4a8..763c1ea5dce5 100644
--- a/drivers/watchdog/hpwdt.c
+++ b/drivers/watchdog/hpwdt.c
@@ -40,6 +40,7 @@
40#include <linux/bootmem.h> 40#include <linux/bootmem.h>
41#include <linux/slab.h> 41#include <linux/slab.h>
42#include <asm/desc.h> 42#include <asm/desc.h>
43#include <asm/cacheflush.h>
43 44
44#define PCI_BIOS32_SD_VALUE 0x5F32335F /* "_32_" */ 45#define PCI_BIOS32_SD_VALUE 0x5F32335F /* "_32_" */
45#define CRU_BIOS_SIGNATURE_VALUE 0x55524324 46#define CRU_BIOS_SIGNATURE_VALUE 0x55524324
@@ -394,6 +395,8 @@ static void __devinit dmi_find_cru(const struct dmi_header *dm)
394 smbios_cru64_ptr->double_offset; 395 smbios_cru64_ptr->double_offset;
395 cru_rom_addr = ioremap(cru_physical_address, 396 cru_rom_addr = ioremap(cru_physical_address,
396 smbios_cru64_ptr->double_length); 397 smbios_cru64_ptr->double_length);
398 set_memory_x((unsigned long)cru_rom_addr & PAGE_MASK,
399 smbios_cru64_ptr->double_length >> PAGE_SHIFT);
397 } 400 }
398 } 401 }
399} 402}
@@ -482,7 +485,7 @@ static int hpwdt_pretimeout(struct notifier_block *nb, unsigned long ulReason,
482 "Management Log for details.\n"); 485 "Management Log for details.\n");
483 } 486 }
484 487
485 return NOTIFY_STOP; 488 return NOTIFY_OK;
486} 489}
487 490
488/* 491/*
diff --git a/drivers/watchdog/iTCO_vendor_support.c b/drivers/watchdog/iTCO_vendor_support.c
index ca344a85eb95..2474ebca88f6 100644
--- a/drivers/watchdog/iTCO_vendor_support.c
+++ b/drivers/watchdog/iTCO_vendor_support.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * intel TCO vendor specific watchdog driver support 2 * intel TCO vendor specific watchdog driver support
3 * 3 *
4 * (c) Copyright 2006 Wim Van Sebroeck <wim@iguana.be>. 4 * (c) Copyright 2006-2008 Wim Van Sebroeck <wim@iguana.be>.
5 * 5 *
6 * This program is free software; you can redistribute it and/or 6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License 7 * modify it under the terms of the GNU General Public License
@@ -19,8 +19,7 @@
19 19
20/* Module and version information */ 20/* Module and version information */
21#define DRV_NAME "iTCO_vendor_support" 21#define DRV_NAME "iTCO_vendor_support"
22#define DRV_VERSION "1.01" 22#define DRV_VERSION "1.02"
23#define DRV_RELDATE "11-Nov-2006"
24#define PFX DRV_NAME ": " 23#define PFX DRV_NAME ": "
25 24
26/* Includes */ 25/* Includes */
@@ -78,24 +77,6 @@ MODULE_PARM_DESC(vendorsupport, "iTCO vendor specific support mode, default=0 (n
78 * 20.6 seconds. 77 * 20.6 seconds.
79 */ 78 */
80 79
81static void supermicro_old_pre_start(unsigned long acpibase)
82{
83 unsigned long val32;
84
85 val32 = inl(SMI_EN);
86 val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */
87 outl(val32, SMI_EN); /* Needed to activate watchdog */
88}
89
90static void supermicro_old_pre_stop(unsigned long acpibase)
91{
92 unsigned long val32;
93
94 val32 = inl(SMI_EN);
95 val32 &= 0x00002000; /* Turn on SMI clearing watchdog */
96 outl(val32, SMI_EN); /* Needed to deactivate watchdog */
97}
98
99static void supermicro_old_pre_keepalive(unsigned long acpibase) 80static void supermicro_old_pre_keepalive(unsigned long acpibase)
100{ 81{
101 /* Reload TCO Timer (done in iTCO_wdt_keepalive) + */ 82 /* Reload TCO Timer (done in iTCO_wdt_keepalive) + */
@@ -247,18 +228,14 @@ static void supermicro_new_pre_set_heartbeat(unsigned int heartbeat)
247void iTCO_vendor_pre_start(unsigned long acpibase, 228void iTCO_vendor_pre_start(unsigned long acpibase,
248 unsigned int heartbeat) 229 unsigned int heartbeat)
249{ 230{
250 if (vendorsupport == SUPERMICRO_OLD_BOARD) 231 if (vendorsupport == SUPERMICRO_NEW_BOARD)
251 supermicro_old_pre_start(acpibase);
252 else if (vendorsupport == SUPERMICRO_NEW_BOARD)
253 supermicro_new_pre_start(heartbeat); 232 supermicro_new_pre_start(heartbeat);
254} 233}
255EXPORT_SYMBOL(iTCO_vendor_pre_start); 234EXPORT_SYMBOL(iTCO_vendor_pre_start);
256 235
257void iTCO_vendor_pre_stop(unsigned long acpibase) 236void iTCO_vendor_pre_stop(unsigned long acpibase)
258{ 237{
259 if (vendorsupport == SUPERMICRO_OLD_BOARD) 238 if (vendorsupport == SUPERMICRO_NEW_BOARD)
260 supermicro_old_pre_stop(acpibase);
261 else if (vendorsupport == SUPERMICRO_NEW_BOARD)
262 supermicro_new_pre_stop(); 239 supermicro_new_pre_stop();
263} 240}
264EXPORT_SYMBOL(iTCO_vendor_pre_stop); 241EXPORT_SYMBOL(iTCO_vendor_pre_stop);
diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c
index bfb93bc2ca9f..5b395a4ddfdf 100644
--- a/drivers/watchdog/iTCO_wdt.c
+++ b/drivers/watchdog/iTCO_wdt.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * intel TCO Watchdog Driver (Used in i82801 and i6300ESB chipsets) 2 * intel TCO Watchdog Driver (Used in i82801 and i6300ESB chipsets)
3 * 3 *
4 * (c) Copyright 2006-2007 Wim Van Sebroeck <wim@iguana.be>. 4 * (c) Copyright 2006-2008 Wim Van Sebroeck <wim@iguana.be>.
5 * 5 *
6 * This program is free software; you can redistribute it and/or 6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License 7 * modify it under the terms of the GNU General Public License
@@ -20,34 +20,41 @@
20 * 82801BAM (ICH2-M) : document number 290687-002, 298242-027, 20 * 82801BAM (ICH2-M) : document number 290687-002, 298242-027,
21 * 82801CA (ICH3-S) : document number 290733-003, 290739-013, 21 * 82801CA (ICH3-S) : document number 290733-003, 290739-013,
22 * 82801CAM (ICH3-M) : document number 290716-001, 290718-007, 22 * 82801CAM (ICH3-M) : document number 290716-001, 290718-007,
23 * 82801DB (ICH4) : document number 290744-001, 290745-020, 23 * 82801DB (ICH4) : document number 290744-001, 290745-025,
24 * 82801DBM (ICH4-M) : document number 252337-001, 252663-005, 24 * 82801DBM (ICH4-M) : document number 252337-001, 252663-008,
25 * 82801E (C-ICH) : document number 273599-001, 273645-002, 25 * 82801E (C-ICH) : document number 273599-001, 273645-002,
26 * 82801EB (ICH5) : document number 252516-001, 252517-003, 26 * 82801EB (ICH5) : document number 252516-001, 252517-028,
27 * 82801ER (ICH5R) : document number 252516-001, 252517-003, 27 * 82801ER (ICH5R) : document number 252516-001, 252517-028,
28 * 82801FB (ICH6) : document number 301473-002, 301474-007, 28 * 6300ESB (6300ESB) : document number 300641-004, 300884-013,
29 * 82801FR (ICH6R) : document number 301473-002, 301474-007, 29 * 82801FB (ICH6) : document number 301473-002, 301474-026,
30 * 82801FBM (ICH6-M) : document number 301473-002, 301474-007, 30 * 82801FR (ICH6R) : document number 301473-002, 301474-026,
31 * 82801FW (ICH6W) : document number 301473-001, 301474-007, 31 * 82801FBM (ICH6-M) : document number 301473-002, 301474-026,
32 * 82801FRW (ICH6RW) : document number 301473-001, 301474-007, 32 * 82801FW (ICH6W) : document number 301473-001, 301474-026,
33 * 82801GB (ICH7) : document number 307013-002, 307014-009, 33 * 82801FRW (ICH6RW) : document number 301473-001, 301474-026,
34 * 82801GR (ICH7R) : document number 307013-002, 307014-009, 34 * 631xESB (631xESB) : document number 313082-001, 313075-006,
35 * 82801GDH (ICH7DH) : document number 307013-002, 307014-009, 35 * 632xESB (632xESB) : document number 313082-001, 313075-006,
36 * 82801GBM (ICH7-M) : document number 307013-002, 307014-009, 36 * 82801GB (ICH7) : document number 307013-003, 307014-024,
37 * 82801GHM (ICH7-M DH) : document number 307013-002, 307014-009, 37 * 82801GR (ICH7R) : document number 307013-003, 307014-024,
38 * 82801HB (ICH8) : document number 313056-003, 313057-009, 38 * 82801GDH (ICH7DH) : document number 307013-003, 307014-024,
39 * 82801HR (ICH8R) : document number 313056-003, 313057-009, 39 * 82801GBM (ICH7-M) : document number 307013-003, 307014-024,
40 * 82801HBM (ICH8M) : document number 313056-003, 313057-009, 40 * 82801GHM (ICH7-M DH) : document number 307013-003, 307014-024,
41 * 82801HH (ICH8DH) : document number 313056-003, 313057-009, 41 * 82801GU (ICH7-U) : document number 307013-003, 307014-024,
42 * 82801HO (ICH8DO) : document number 313056-003, 313057-009, 42 * 82801HB (ICH8) : document number 313056-003, 313057-017,
43 * 82801HEM (ICH8M-E) : document number 313056-003, 313057-009, 43 * 82801HR (ICH8R) : document number 313056-003, 313057-017,
44 * 82801IB (ICH9) : document number 316972-001, 316973-006, 44 * 82801HBM (ICH8M) : document number 313056-003, 313057-017,
45 * 82801IR (ICH9R) : document number 316972-001, 316973-006, 45 * 82801HH (ICH8DH) : document number 313056-003, 313057-017,
46 * 82801IH (ICH9DH) : document number 316972-001, 316973-006, 46 * 82801HO (ICH8DO) : document number 313056-003, 313057-017,
47 * 82801IO (ICH9DO) : document number 316972-001, 316973-006, 47 * 82801HEM (ICH8M-E) : document number 313056-003, 313057-017,
48 * 6300ESB (6300ESB) : document number 300641-003, 300884-010, 48 * 82801IB (ICH9) : document number 316972-004, 316973-012,
49 * 631xESB (631xESB) : document number 313082-001, 313075-005, 49 * 82801IR (ICH9R) : document number 316972-004, 316973-012,
50 * 632xESB (632xESB) : document number 313082-001, 313075-005 50 * 82801IH (ICH9DH) : document number 316972-004, 316973-012,
51 * 82801IO (ICH9DO) : document number 316972-004, 316973-012,
52 * 82801IBM (ICH9M) : document number 316972-004, 316973-012,
53 * 82801IEM (ICH9M-E) : document number 316972-004, 316973-012,
54 * 82801JIB (ICH10) : document number 319973-002, 319974-002,
55 * 82801JIR (ICH10R) : document number 319973-002, 319974-002,
56 * 82801JD (ICH10D) : document number 319973-002, 319974-002,
57 * 82801JDO (ICH10DO) : document number 319973-002, 319974-002
51 */ 58 */
52 59
53/* 60/*
@@ -56,8 +63,7 @@
56 63
57/* Module and version information */ 64/* Module and version information */
58#define DRV_NAME "iTCO_wdt" 65#define DRV_NAME "iTCO_wdt"
59#define DRV_VERSION "1.03" 66#define DRV_VERSION "1.04"
60#define DRV_RELDATE "30-Apr-2008"
61#define PFX DRV_NAME ": " 67#define PFX DRV_NAME ": "
62 68
63/* Includes */ 69/* Includes */
@@ -96,19 +102,26 @@ enum iTCO_chipsets {
96 TCO_ICH6, /* ICH6 & ICH6R */ 102 TCO_ICH6, /* ICH6 & ICH6R */
97 TCO_ICH6M, /* ICH6-M */ 103 TCO_ICH6M, /* ICH6-M */
98 TCO_ICH6W, /* ICH6W & ICH6RW */ 104 TCO_ICH6W, /* ICH6W & ICH6RW */
105 TCO_631XESB, /* 631xESB/632xESB */
99 TCO_ICH7, /* ICH7 & ICH7R */ 106 TCO_ICH7, /* ICH7 & ICH7R */
100 TCO_ICH7M, /* ICH7-M */ 107 TCO_ICH7DH, /* ICH7DH */
108 TCO_ICH7M, /* ICH7-M & ICH7-U */
101 TCO_ICH7MDH, /* ICH7-M DH */ 109 TCO_ICH7MDH, /* ICH7-M DH */
102 TCO_ICH8, /* ICH8 & ICH8R */ 110 TCO_ICH8, /* ICH8 & ICH8R */
103 TCO_ICH8ME, /* ICH8M-E */
104 TCO_ICH8DH, /* ICH8DH */ 111 TCO_ICH8DH, /* ICH8DH */
105 TCO_ICH8DO, /* ICH8DO */ 112 TCO_ICH8DO, /* ICH8DO */
106 TCO_ICH8M, /* ICH8M */ 113 TCO_ICH8M, /* ICH8M */
114 TCO_ICH8ME, /* ICH8M-E */
107 TCO_ICH9, /* ICH9 */ 115 TCO_ICH9, /* ICH9 */
108 TCO_ICH9R, /* ICH9R */ 116 TCO_ICH9R, /* ICH9R */
109 TCO_ICH9DH, /* ICH9DH */ 117 TCO_ICH9DH, /* ICH9DH */
110 TCO_ICH9DO, /* ICH9DO */ 118 TCO_ICH9DO, /* ICH9DO */
111 TCO_631XESB, /* 631xESB/632xESB */ 119 TCO_ICH9M, /* ICH9M */
120 TCO_ICH9ME, /* ICH9M-E */
121 TCO_ICH10, /* ICH10 */
122 TCO_ICH10R, /* ICH10R */
123 TCO_ICH10D, /* ICH10D */
124 TCO_ICH10DO, /* ICH10DO */
112}; 125};
113 126
114static struct { 127static struct {
@@ -129,19 +142,26 @@ static struct {
129 {"ICH6 or ICH6R", 2}, 142 {"ICH6 or ICH6R", 2},
130 {"ICH6-M", 2}, 143 {"ICH6-M", 2},
131 {"ICH6W or ICH6RW", 2}, 144 {"ICH6W or ICH6RW", 2},
145 {"631xESB/632xESB", 2},
132 {"ICH7 or ICH7R", 2}, 146 {"ICH7 or ICH7R", 2},
133 {"ICH7-M", 2}, 147 {"ICH7DH", 2},
148 {"ICH7-M or ICH7-U", 2},
134 {"ICH7-M DH", 2}, 149 {"ICH7-M DH", 2},
135 {"ICH8 or ICH8R", 2}, 150 {"ICH8 or ICH8R", 2},
136 {"ICH8M-E", 2},
137 {"ICH8DH", 2}, 151 {"ICH8DH", 2},
138 {"ICH8DO", 2}, 152 {"ICH8DO", 2},
139 {"ICH8M", 2}, 153 {"ICH8M", 2},
154 {"ICH8M-E", 2},
140 {"ICH9", 2}, 155 {"ICH9", 2},
141 {"ICH9R", 2}, 156 {"ICH9R", 2},
142 {"ICH9DH", 2}, 157 {"ICH9DH", 2},
143 {"ICH9DO", 2}, 158 {"ICH9DO", 2},
144 {"631xESB/632xESB", 2}, 159 {"ICH9M", 2},
160 {"ICH9M-E", 2},
161 {"ICH10", 2},
162 {"ICH10R", 2},
163 {"ICH10D", 2},
164 {"ICH10DO", 2},
145 {NULL, 0} 165 {NULL, 0}
146}; 166};
147 167
@@ -175,18 +195,6 @@ static struct pci_device_id iTCO_wdt_pci_tbl[] = {
175 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH6_0, TCO_ICH6)}, 195 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH6_0, TCO_ICH6)},
176 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH6_1, TCO_ICH6M)}, 196 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH6_1, TCO_ICH6M)},
177 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH6_2, TCO_ICH6W)}, 197 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH6_2, TCO_ICH6W)},
178 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH7_0, TCO_ICH7)},
179 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH7_1, TCO_ICH7M)},
180 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH7_31, TCO_ICH7MDH)},
181 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH8_0, TCO_ICH8)},
182 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH8_1, TCO_ICH8ME)},
183 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH8_2, TCO_ICH8DH)},
184 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH8_3, TCO_ICH8DO)},
185 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH8_4, TCO_ICH8M)},
186 { ITCO_PCI_DEVICE(0x2918, TCO_ICH9)},
187 { ITCO_PCI_DEVICE(0x2916, TCO_ICH9R)},
188 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH9_2, TCO_ICH9DH)},
189 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH9_4, TCO_ICH9DO)},
190 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ESB2_0, TCO_631XESB)}, 198 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ESB2_0, TCO_631XESB)},
191 { ITCO_PCI_DEVICE(0x2671, TCO_631XESB)}, 199 { ITCO_PCI_DEVICE(0x2671, TCO_631XESB)},
192 { ITCO_PCI_DEVICE(0x2672, TCO_631XESB)}, 200 { ITCO_PCI_DEVICE(0x2672, TCO_631XESB)},
@@ -203,6 +211,25 @@ static struct pci_device_id iTCO_wdt_pci_tbl[] = {
203 { ITCO_PCI_DEVICE(0x267d, TCO_631XESB)}, 211 { ITCO_PCI_DEVICE(0x267d, TCO_631XESB)},
204 { ITCO_PCI_DEVICE(0x267e, TCO_631XESB)}, 212 { ITCO_PCI_DEVICE(0x267e, TCO_631XESB)},
205 { ITCO_PCI_DEVICE(0x267f, TCO_631XESB)}, 213 { ITCO_PCI_DEVICE(0x267f, TCO_631XESB)},
214 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH7_0, TCO_ICH7)},
215 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH7_30, TCO_ICH7DH)},
216 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH7_1, TCO_ICH7M)},
217 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH7_31, TCO_ICH7MDH)},
218 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH8_0, TCO_ICH8)},
219 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH8_2, TCO_ICH8DH)},
220 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH8_3, TCO_ICH8DO)},
221 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH8_4, TCO_ICH8M)},
222 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH8_1, TCO_ICH8ME)},
223 { ITCO_PCI_DEVICE(0x2918, TCO_ICH9)},
224 { ITCO_PCI_DEVICE(0x2916, TCO_ICH9R)},
225 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH9_2, TCO_ICH9DH)},
226 { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH9_4, TCO_ICH9DO)},
227 { ITCO_PCI_DEVICE(0x2919, TCO_ICH9M)},
228 { ITCO_PCI_DEVICE(0x2917, TCO_ICH9ME)},
229 { ITCO_PCI_DEVICE(0x3a18, TCO_ICH10)},
230 { ITCO_PCI_DEVICE(0x3a16, TCO_ICH10R)},
231 { ITCO_PCI_DEVICE(0x3a1a, TCO_ICH10D)},
232 { ITCO_PCI_DEVICE(0x3a14, TCO_ICH10DO)},
206 { 0, }, /* End of list */ 233 { 0, }, /* End of list */
207}; 234};
208MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl); 235MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl);
@@ -311,6 +338,7 @@ static int iTCO_wdt_unset_NO_REBOOT_bit(void)
311static int iTCO_wdt_start(void) 338static int iTCO_wdt_start(void)
312{ 339{
313 unsigned int val; 340 unsigned int val;
341 unsigned long val32;
314 342
315 spin_lock(&iTCO_wdt_private.io_lock); 343 spin_lock(&iTCO_wdt_private.io_lock);
316 344
@@ -323,6 +351,18 @@ static int iTCO_wdt_start(void)
323 return -EIO; 351 return -EIO;
324 } 352 }
325 353
354 /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */
355 val32 = inl(SMI_EN);
356 val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */
357 outl(val32, SMI_EN);
358
359 /* Force the timer to its reload value by writing to the TCO_RLD
360 register */
361 if (iTCO_wdt_private.iTCO_version == 2)
362 outw(0x01, TCO_RLD);
363 else if (iTCO_wdt_private.iTCO_version == 1)
364 outb(0x01, TCO_RLD);
365
326 /* Bit 11: TCO Timer Halt -> 0 = The TCO timer is enabled to count */ 366 /* Bit 11: TCO Timer Halt -> 0 = The TCO timer is enabled to count */
327 val = inw(TCO1_CNT); 367 val = inw(TCO1_CNT);
328 val &= 0xf7ff; 368 val &= 0xf7ff;
@@ -338,6 +378,7 @@ static int iTCO_wdt_start(void)
338static int iTCO_wdt_stop(void) 378static int iTCO_wdt_stop(void)
339{ 379{
340 unsigned int val; 380 unsigned int val;
381 unsigned long val32;
341 382
342 spin_lock(&iTCO_wdt_private.io_lock); 383 spin_lock(&iTCO_wdt_private.io_lock);
343 384
@@ -349,6 +390,11 @@ static int iTCO_wdt_stop(void)
349 outw(val, TCO1_CNT); 390 outw(val, TCO1_CNT);
350 val = inw(TCO1_CNT); 391 val = inw(TCO1_CNT);
351 392
393 /* Bit 13: TCO_EN -> 1 = Enables the TCO logic to generate SMI# */
394 val32 = inl(SMI_EN);
395 val32 |= 0x00002000;
396 outl(val32, SMI_EN);
397
352 /* Set the NO_REBOOT bit to prevent later reboots, just for sure */ 398 /* Set the NO_REBOOT bit to prevent later reboots, just for sure */
353 iTCO_wdt_set_NO_REBOOT_bit(); 399 iTCO_wdt_set_NO_REBOOT_bit();
354 400
@@ -459,7 +505,6 @@ static int iTCO_wdt_open(struct inode *inode, struct file *file)
459 /* 505 /*
460 * Reload and activate timer 506 * Reload and activate timer
461 */ 507 */
462 iTCO_wdt_keepalive();
463 iTCO_wdt_start(); 508 iTCO_wdt_start();
464 return nonseekable_open(inode, file); 509 return nonseekable_open(inode, file);
465} 510}
@@ -604,7 +649,6 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev,
604 int ret; 649 int ret;
605 u32 base_address; 650 u32 base_address;
606 unsigned long RCBA; 651 unsigned long RCBA;
607 unsigned long val32;
608 652
609 /* 653 /*
610 * Find the ACPI/PM base I/O address which is the base 654 * Find the ACPI/PM base I/O address which is the base
@@ -644,17 +688,13 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev,
644 /* Set the NO_REBOOT bit to prevent later reboots, just for sure */ 688 /* Set the NO_REBOOT bit to prevent later reboots, just for sure */
645 iTCO_wdt_set_NO_REBOOT_bit(); 689 iTCO_wdt_set_NO_REBOOT_bit();
646 690
647 /* Set the TCO_EN bit in SMI_EN register */ 691 /* The TCO logic uses the TCO_EN bit in the SMI_EN register */
648 if (!request_region(SMI_EN, 4, "iTCO_wdt")) { 692 if (!request_region(SMI_EN, 4, "iTCO_wdt")) {
649 printk(KERN_ERR PFX 693 printk(KERN_ERR PFX
650 "I/O address 0x%04lx already in use\n", SMI_EN); 694 "I/O address 0x%04lx already in use\n", SMI_EN);
651 ret = -EIO; 695 ret = -EIO;
652 goto out; 696 goto out;
653 } 697 }
654 val32 = inl(SMI_EN);
655 val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */
656 outl(val32, SMI_EN);
657 release_region(SMI_EN, 4);
658 698
659 /* The TCO I/O registers reside in a 32-byte range pointed to 699 /* The TCO I/O registers reside in a 32-byte range pointed to
660 by the TCOBASE value */ 700 by the TCOBASE value */
@@ -662,7 +702,7 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev,
662 printk(KERN_ERR PFX "I/O address 0x%04lx already in use\n", 702 printk(KERN_ERR PFX "I/O address 0x%04lx already in use\n",
663 TCOBASE); 703 TCOBASE);
664 ret = -EIO; 704 ret = -EIO;
665 goto out; 705 goto unreg_smi_en;
666 } 706 }
667 707
668 printk(KERN_INFO PFX 708 printk(KERN_INFO PFX
@@ -672,8 +712,9 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev,
672 TCOBASE); 712 TCOBASE);
673 713
674 /* Clear out the (probably old) status */ 714 /* Clear out the (probably old) status */
675 outb(0, TCO1_STS); 715 outb(8, TCO1_STS); /* Clear the Time Out Status bit */
676 outb(3, TCO2_STS); 716 outb(2, TCO2_STS); /* Clear SECOND_TO_STS bit */
717 outb(4, TCO2_STS); /* Clear BOOT_STS bit */
677 718
678 /* Make sure the watchdog is not running */ 719 /* Make sure the watchdog is not running */
679 iTCO_wdt_stop(); 720 iTCO_wdt_stop();
@@ -701,6 +742,8 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev,
701 742
702unreg_region: 743unreg_region:
703 release_region(TCOBASE, 0x20); 744 release_region(TCOBASE, 0x20);
745unreg_smi_en:
746 release_region(SMI_EN, 4);
704out: 747out:
705 if (iTCO_wdt_private.iTCO_version == 2) 748 if (iTCO_wdt_private.iTCO_version == 2)
706 iounmap(iTCO_wdt_private.gcs); 749 iounmap(iTCO_wdt_private.gcs);
@@ -718,6 +761,7 @@ static void __devexit iTCO_wdt_cleanup(void)
718 /* Deregister */ 761 /* Deregister */
719 misc_deregister(&iTCO_wdt_miscdev); 762 misc_deregister(&iTCO_wdt_miscdev);
720 release_region(TCOBASE, 0x20); 763 release_region(TCOBASE, 0x20);
764 release_region(SMI_EN, 4);
721 if (iTCO_wdt_private.iTCO_version == 2) 765 if (iTCO_wdt_private.iTCO_version == 2)
722 iounmap(iTCO_wdt_private.gcs); 766 iounmap(iTCO_wdt_private.gcs);
723 pci_dev_put(iTCO_wdt_private.pdev); 767 pci_dev_put(iTCO_wdt_private.pdev);
@@ -782,8 +826,8 @@ static int __init iTCO_wdt_init_module(void)
782{ 826{
783 int err; 827 int err;
784 828
785 printk(KERN_INFO PFX "Intel TCO WatchDog Timer Driver v%s (%s)\n", 829 printk(KERN_INFO PFX "Intel TCO WatchDog Timer Driver v%s\n",
786 DRV_VERSION, DRV_RELDATE); 830 DRV_VERSION);
787 831
788 err = platform_driver_register(&iTCO_wdt_driver); 832 err = platform_driver_register(&iTCO_wdt_driver);
789 if (err) 833 if (err)
diff --git a/drivers/watchdog/mtx-1_wdt.c b/drivers/watchdog/mtx-1_wdt.c
index b4b7b0a4c119..3acce623f209 100644
--- a/drivers/watchdog/mtx-1_wdt.c
+++ b/drivers/watchdog/mtx-1_wdt.c
@@ -98,6 +98,8 @@ static void mtx1_wdt_reset(void)
98 98
99static void mtx1_wdt_start(void) 99static void mtx1_wdt_start(void)
100{ 100{
101 unsigned long flags;
102
101 spin_lock_irqsave(&mtx1_wdt_device.lock, flags); 103 spin_lock_irqsave(&mtx1_wdt_device.lock, flags);
102 if (!mtx1_wdt_device.queue) { 104 if (!mtx1_wdt_device.queue) {
103 mtx1_wdt_device.queue = 1; 105 mtx1_wdt_device.queue = 1;
@@ -110,6 +112,8 @@ static void mtx1_wdt_start(void)
110 112
111static int mtx1_wdt_stop(void) 113static int mtx1_wdt_stop(void)
112{ 114{
115 unsigned long flags;
116
113 spin_lock_irqsave(&mtx1_wdt_device.lock, flags); 117 spin_lock_irqsave(&mtx1_wdt_device.lock, flags);
114 if (mtx1_wdt_device.queue) { 118 if (mtx1_wdt_device.queue) {
115 mtx1_wdt_device.queue = 0; 119 mtx1_wdt_device.queue = 0;
diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
index 526c191e84ea..8dc7109d61b7 100644
--- a/drivers/xen/balloon.c
+++ b/drivers/xen/balloon.c
@@ -44,13 +44,15 @@
44#include <linux/list.h> 44#include <linux/list.h>
45#include <linux/sysdev.h> 45#include <linux/sysdev.h>
46 46
47#include <asm/xen/hypervisor.h>
48#include <asm/page.h> 47#include <asm/page.h>
49#include <asm/pgalloc.h> 48#include <asm/pgalloc.h>
50#include <asm/pgtable.h> 49#include <asm/pgtable.h>
51#include <asm/uaccess.h> 50#include <asm/uaccess.h>
52#include <asm/tlb.h> 51#include <asm/tlb.h>
53 52
53#include <asm/xen/hypervisor.h>
54#include <asm/xen/hypercall.h>
55#include <xen/interface/xen.h>
54#include <xen/interface/memory.h> 56#include <xen/interface/memory.h>
55#include <xen/xenbus.h> 57#include <xen/xenbus.h>
56#include <xen/features.h> 58#include <xen/features.h>
diff --git a/drivers/xen/features.c b/drivers/xen/features.c
index 0707714e40d6..99eda169c779 100644
--- a/drivers/xen/features.c
+++ b/drivers/xen/features.c
@@ -8,7 +8,11 @@
8#include <linux/types.h> 8#include <linux/types.h>
9#include <linux/cache.h> 9#include <linux/cache.h>
10#include <linux/module.h> 10#include <linux/module.h>
11#include <asm/xen/hypervisor.h> 11
12#include <asm/xen/hypercall.h>
13
14#include <xen/interface/xen.h>
15#include <xen/interface/version.h>
12#include <xen/features.h> 16#include <xen/features.h>
13 17
14u8 xen_features[XENFEAT_NR_SUBMAPS * 32] __read_mostly; 18u8 xen_features[XENFEAT_NR_SUBMAPS * 32] __read_mostly;
diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c
index 06592b9da83c..7d8f531fb8e8 100644
--- a/drivers/xen/grant-table.c
+++ b/drivers/xen/grant-table.c
@@ -40,6 +40,7 @@
40#include <xen/interface/xen.h> 40#include <xen/interface/xen.h>
41#include <xen/page.h> 41#include <xen/page.h>
42#include <xen/grant_table.h> 42#include <xen/grant_table.h>
43#include <asm/xen/hypercall.h>
43 44
44#include <asm/pgtable.h> 45#include <asm/pgtable.h>
45#include <asm/sync_bitops.h> 46#include <asm/sync_bitops.h>
diff --git a/fs/9p/fid.c b/fs/9p/fid.c
index 3031e3233dd6..2a983d49d19c 100644
--- a/fs/9p/fid.c
+++ b/fs/9p/fid.c
@@ -45,7 +45,7 @@ int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid)
45 struct v9fs_dentry *dent; 45 struct v9fs_dentry *dent;
46 46
47 P9_DPRINTK(P9_DEBUG_VFS, "fid %d dentry %s\n", 47 P9_DPRINTK(P9_DEBUG_VFS, "fid %d dentry %s\n",
48 fid->fid, dentry->d_iname); 48 fid->fid, dentry->d_name.name);
49 49
50 dent = dentry->d_fsdata; 50 dent = dentry->d_fsdata;
51 if (!dent) { 51 if (!dent) {
@@ -79,7 +79,7 @@ static struct p9_fid *v9fs_fid_find(struct dentry *dentry, u32 uid, int any)
79 struct p9_fid *fid, *ret; 79 struct p9_fid *fid, *ret;
80 80
81 P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p) uid %d any %d\n", 81 P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p) uid %d any %d\n",
82 dentry->d_iname, dentry, uid, any); 82 dentry->d_name.name, dentry, uid, any);
83 dent = (struct v9fs_dentry *) dentry->d_fsdata; 83 dent = (struct v9fs_dentry *) dentry->d_fsdata;
84 ret = NULL; 84 ret = NULL;
85 if (dent) { 85 if (dent) {
diff --git a/fs/9p/v9fs.c b/fs/9p/v9fs.c
index 24eb01087b6d..332b5ff02fec 100644
--- a/fs/9p/v9fs.c
+++ b/fs/9p/v9fs.c
@@ -160,7 +160,7 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses)
160 v9ses->flags |= V9FS_ACCESS_ANY; 160 v9ses->flags |= V9FS_ACCESS_ANY;
161 else { 161 else {
162 v9ses->flags |= V9FS_ACCESS_SINGLE; 162 v9ses->flags |= V9FS_ACCESS_SINGLE;
163 v9ses->uid = simple_strtol(s, &e, 10); 163 v9ses->uid = simple_strtoul(s, &e, 10);
164 if (*e != '\0') 164 if (*e != '\0')
165 v9ses->uid = ~0; 165 v9ses->uid = ~0;
166 } 166 }
diff --git a/fs/9p/vfs_dentry.c b/fs/9p/vfs_dentry.c
index f9534f18df0a..06dcc7c4f234 100644
--- a/fs/9p/vfs_dentry.c
+++ b/fs/9p/vfs_dentry.c
@@ -52,7 +52,8 @@
52 52
53static int v9fs_dentry_delete(struct dentry *dentry) 53static int v9fs_dentry_delete(struct dentry *dentry)
54{ 54{
55 P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry); 55 P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name,
56 dentry);
56 57
57 return 1; 58 return 1;
58} 59}
@@ -69,7 +70,8 @@ static int v9fs_dentry_delete(struct dentry *dentry)
69static int v9fs_cached_dentry_delete(struct dentry *dentry) 70static int v9fs_cached_dentry_delete(struct dentry *dentry)
70{ 71{
71 struct inode *inode = dentry->d_inode; 72 struct inode *inode = dentry->d_inode;
72 P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry); 73 P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name,
74 dentry);
73 75
74 if(!inode) 76 if(!inode)
75 return 1; 77 return 1;
@@ -88,7 +90,8 @@ void v9fs_dentry_release(struct dentry *dentry)
88 struct v9fs_dentry *dent; 90 struct v9fs_dentry *dent;
89 struct p9_fid *temp, *current_fid; 91 struct p9_fid *temp, *current_fid;
90 92
91 P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry); 93 P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name,
94 dentry);
92 dent = dentry->d_fsdata; 95 dent = dentry->d_fsdata;
93 if (dent) { 96 if (dent) {
94 list_for_each_entry_safe(current_fid, temp, &dent->fidlist, 97 list_for_each_entry_safe(current_fid, temp, &dent->fidlist,
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 8314d3f43b71..2dfcf5487efe 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -963,7 +963,8 @@ static int v9fs_vfs_readlink(struct dentry *dentry, char __user * buffer,
963 if (buflen > PATH_MAX) 963 if (buflen > PATH_MAX)
964 buflen = PATH_MAX; 964 buflen = PATH_MAX;
965 965
966 P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry); 966 P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name,
967 dentry);
967 968
968 retval = v9fs_readlink(dentry, link, buflen); 969 retval = v9fs_readlink(dentry, link, buflen);
969 970
@@ -1022,7 +1023,8 @@ v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
1022{ 1023{
1023 char *s = nd_get_link(nd); 1024 char *s = nd_get_link(nd);
1024 1025
1025 P9_DPRINTK(P9_DEBUG_VFS, " %s %s\n", dentry->d_name.name, s); 1026 P9_DPRINTK(P9_DEBUG_VFS, " %s %s\n", dentry->d_name.name,
1027 IS_ERR(s) ? "<error>" : s);
1026 if (!IS_ERR(s)) 1028 if (!IS_ERR(s))
1027 __putname(s); 1029 __putname(s);
1028} 1030}
diff --git a/fs/block_dev.c b/fs/block_dev.c
index db831efbdbbd..99e0ae1a4c78 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1135,12 +1135,15 @@ static int blkdev_open(struct inode * inode, struct file * filp)
1135 if (res) 1135 if (res)
1136 return res; 1136 return res;
1137 1137
1138 if (!(filp->f_mode & FMODE_EXCL)) 1138 if (filp->f_mode & FMODE_EXCL) {
1139 return 0; 1139 res = bd_claim(bdev, filp);
1140 if (res)
1141 goto out_blkdev_put;
1142 }
1140 1143
1141 if (!(res = bd_claim(bdev, filp))) 1144 return 0;
1142 return 0;
1143 1145
1146 out_blkdev_put:
1144 blkdev_put(bdev, filp->f_mode); 1147 blkdev_put(bdev, filp->f_mode);
1145 return res; 1148 return res;
1146} 1149}
@@ -1203,8 +1206,16 @@ static long block_ioctl(struct file *file, unsigned cmd, unsigned long arg)
1203{ 1206{
1204 struct block_device *bdev = I_BDEV(file->f_mapping->host); 1207 struct block_device *bdev = I_BDEV(file->f_mapping->host);
1205 fmode_t mode = file->f_mode; 1208 fmode_t mode = file->f_mode;
1209
1210 /*
1211 * O_NDELAY can be altered using fcntl(.., F_SETFL, ..), so we have
1212 * to updated it before every ioctl.
1213 */
1206 if (file->f_flags & O_NDELAY) 1214 if (file->f_flags & O_NDELAY)
1207 mode |= FMODE_NDELAY_NOW; 1215 mode |= FMODE_NDELAY;
1216 else
1217 mode &= ~FMODE_NDELAY;
1218
1208 return blkdev_ioctl(bdev, mode, cmd, arg); 1219 return blkdev_ioctl(bdev, mode, cmd, arg);
1209} 1220}
1210 1221
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index 2af8626ced43..6d51696dc762 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -3983,7 +3983,8 @@ parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
3983 3983
3984 node->flags = le16_to_cpu(pSMBr->DFSFlags); 3984 node->flags = le16_to_cpu(pSMBr->DFSFlags);
3985 if (is_unicode) { 3985 if (is_unicode) {
3986 __le16 *tmp = kmalloc(strlen(searchName)*2, GFP_KERNEL); 3986 __le16 *tmp = kmalloc(strlen(searchName)*2 + 2,
3987 GFP_KERNEL);
3987 cifsConvertToUCS((__le16 *) tmp, searchName, 3988 cifsConvertToUCS((__le16 *) tmp, searchName,
3988 PATH_MAX, nls_codepage, remap); 3989 PATH_MAX, nls_codepage, remap);
3989 node->path_consumed = hostlen_fromUCS(tmp, 3990 node->path_consumed = hostlen_fromUCS(tmp,
diff --git a/fs/exec.c b/fs/exec.c
index 4e834f16d9da..ec5df9a38313 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1159,6 +1159,7 @@ EXPORT_SYMBOL(remove_arg_zero);
1159 */ 1159 */
1160int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) 1160int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)
1161{ 1161{
1162 unsigned int depth = bprm->recursion_depth;
1162 int try,retval; 1163 int try,retval;
1163 struct linux_binfmt *fmt; 1164 struct linux_binfmt *fmt;
1164#ifdef __alpha__ 1165#ifdef __alpha__
@@ -1219,8 +1220,15 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)
1219 continue; 1220 continue;
1220 read_unlock(&binfmt_lock); 1221 read_unlock(&binfmt_lock);
1221 retval = fn(bprm, regs); 1222 retval = fn(bprm, regs);
1223 /*
1224 * Restore the depth counter to its starting value
1225 * in this call, so we don't have to rely on every
1226 * load_binary function to restore it on return.
1227 */
1228 bprm->recursion_depth = depth;
1222 if (retval >= 0) { 1229 if (retval >= 0) {
1223 tracehook_report_exec(fmt, bprm, regs); 1230 if (depth == 0)
1231 tracehook_report_exec(fmt, bprm, regs);
1224 put_binfmt(fmt); 1232 put_binfmt(fmt);
1225 allow_write_access(bprm->file); 1233 allow_write_access(bprm->file);
1226 if (bprm->file) 1234 if (bprm->file)
diff --git a/fs/exportfs/expfs.c b/fs/exportfs/expfs.c
index 80246bad1b7f..890e01828817 100644
--- a/fs/exportfs/expfs.c
+++ b/fs/exportfs/expfs.c
@@ -367,6 +367,8 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
367 * Try to get any dentry for the given file handle from the filesystem. 367 * Try to get any dentry for the given file handle from the filesystem.
368 */ 368 */
369 result = nop->fh_to_dentry(mnt->mnt_sb, fid, fh_len, fileid_type); 369 result = nop->fh_to_dentry(mnt->mnt_sb, fid, fh_len, fileid_type);
370 if (!result)
371 result = ERR_PTR(-ESTALE);
370 if (IS_ERR(result)) 372 if (IS_ERR(result))
371 return result; 373 return result;
372 374
@@ -420,6 +422,8 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
420 422
421 target_dir = nop->fh_to_parent(mnt->mnt_sb, fid, 423 target_dir = nop->fh_to_parent(mnt->mnt_sb, fid,
422 fh_len, fileid_type); 424 fh_len, fileid_type);
425 if (!target_dir)
426 goto err_result;
423 err = PTR_ERR(target_dir); 427 err = PTR_ERR(target_dir);
424 if (IS_ERR(target_dir)) 428 if (IS_ERR(target_dir))
425 goto err_result; 429 goto err_result;
diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
index d2003cdc36aa..db35cfdb3c8b 100644
--- a/fs/ext4/balloc.c
+++ b/fs/ext4/balloc.c
@@ -609,8 +609,8 @@ int ext4_has_free_blocks(struct ext4_sb_info *sbi, s64 nblocks)
609 609
610 if (free_blocks - (nblocks + root_blocks + dirty_blocks) < 610 if (free_blocks - (nblocks + root_blocks + dirty_blocks) <
611 EXT4_FREEBLOCKS_WATERMARK) { 611 EXT4_FREEBLOCKS_WATERMARK) {
612 free_blocks = percpu_counter_sum(fbc); 612 free_blocks = percpu_counter_sum_positive(fbc);
613 dirty_blocks = percpu_counter_sum(dbc); 613 dirty_blocks = percpu_counter_sum_positive(dbc);
614 if (dirty_blocks < 0) { 614 if (dirty_blocks < 0) {
615 printk(KERN_CRIT "Dirty block accounting " 615 printk(KERN_CRIT "Dirty block accounting "
616 "went wrong %lld\n", 616 "went wrong %lld\n",
diff --git a/fs/fcntl.c b/fs/fcntl.c
index ac4f7db9f134..549daf8005fb 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -19,6 +19,7 @@
19#include <linux/signal.h> 19#include <linux/signal.h>
20#include <linux/rcupdate.h> 20#include <linux/rcupdate.h>
21#include <linux/pid_namespace.h> 21#include <linux/pid_namespace.h>
22#include <linux/smp_lock.h>
22 23
23#include <asm/poll.h> 24#include <asm/poll.h>
24#include <asm/siginfo.h> 25#include <asm/siginfo.h>
@@ -175,6 +176,11 @@ static int setfl(int fd, struct file * filp, unsigned long arg)
175 if (error) 176 if (error)
176 return error; 177 return error;
177 178
179 /*
180 * We still need a lock here for now to keep multiple FASYNC calls
181 * from racing with each other.
182 */
183 lock_kernel();
178 if ((arg ^ filp->f_flags) & FASYNC) { 184 if ((arg ^ filp->f_flags) & FASYNC) {
179 if (filp->f_op && filp->f_op->fasync) { 185 if (filp->f_op && filp->f_op->fasync) {
180 error = filp->f_op->fasync(fd, filp, (arg & FASYNC) != 0); 186 error = filp->f_op->fasync(fd, filp, (arg & FASYNC) != 0);
@@ -185,6 +191,7 @@ static int setfl(int fd, struct file * filp, unsigned long arg)
185 191
186 filp->f_flags = (arg & SETFL_MASK) | (filp->f_flags & ~SETFL_MASK); 192 filp->f_flags = (arg & SETFL_MASK) | (filp->f_flags & ~SETFL_MASK);
187 out: 193 out:
194 unlock_kernel();
188 return error; 195 return error;
189} 196}
190 197
diff --git a/fs/inotify.c b/fs/inotify.c
index 7bbed1b89825..dae3f28f30d4 100644
--- a/fs/inotify.c
+++ b/fs/inotify.c
@@ -428,11 +428,13 @@ void inotify_unmount_inodes(struct list_head *list)
428 watches = &inode->inotify_watches; 428 watches = &inode->inotify_watches;
429 list_for_each_entry_safe(watch, next_w, watches, i_list) { 429 list_for_each_entry_safe(watch, next_w, watches, i_list) {
430 struct inotify_handle *ih= watch->ih; 430 struct inotify_handle *ih= watch->ih;
431 get_inotify_watch(watch);
431 mutex_lock(&ih->mutex); 432 mutex_lock(&ih->mutex);
432 ih->in_ops->handle_event(watch, watch->wd, IN_UNMOUNT, 0, 433 ih->in_ops->handle_event(watch, watch->wd, IN_UNMOUNT, 0,
433 NULL, NULL); 434 NULL, NULL);
434 inotify_remove_watch_locked(ih, watch); 435 inotify_remove_watch_locked(ih, watch);
435 mutex_unlock(&ih->mutex); 436 mutex_unlock(&ih->mutex);
437 put_inotify_watch(watch);
436 } 438 }
437 mutex_unlock(&inode->inotify_mutex); 439 mutex_unlock(&inode->inotify_mutex);
438 iput(inode); 440 iput(inode);
diff --git a/fs/ioctl.c b/fs/ioctl.c
index d152856c371b..43e8b2c0664b 100644
--- a/fs/ioctl.c
+++ b/fs/ioctl.c
@@ -400,11 +400,9 @@ static int ioctl_fioasync(unsigned int fd, struct file *filp,
400 400
401 /* Did FASYNC state change ? */ 401 /* Did FASYNC state change ? */
402 if ((flag ^ filp->f_flags) & FASYNC) { 402 if ((flag ^ filp->f_flags) & FASYNC) {
403 if (filp->f_op && filp->f_op->fasync) { 403 if (filp->f_op && filp->f_op->fasync)
404 lock_kernel();
405 error = filp->f_op->fasync(fd, filp, on); 404 error = filp->f_op->fasync(fd, filp, on);
406 unlock_kernel(); 405 else
407 } else
408 error = -ENOTTY; 406 error = -ENOTTY;
409 } 407 }
410 if (error) 408 if (error)
@@ -440,11 +438,17 @@ int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
440 break; 438 break;
441 439
442 case FIONBIO: 440 case FIONBIO:
441 /* BKL needed to avoid races tweaking f_flags */
442 lock_kernel();
443 error = ioctl_fionbio(filp, argp); 443 error = ioctl_fionbio(filp, argp);
444 unlock_kernel();
444 break; 445 break;
445 446
446 case FIOASYNC: 447 case FIOASYNC:
448 /* BKL needed to avoid races tweaking f_flags */
449 lock_kernel();
447 error = ioctl_fioasync(fd, filp, argp); 450 error = ioctl_fioasync(fd, filp, argp);
451 unlock_kernel();
448 break; 452 break;
449 453
450 case FIOQSIZE: 454 case FIOQSIZE:
diff --git a/fs/lockd/host.c b/fs/lockd/host.c
index 9fd8889097b7..70fc63a1727b 100644
--- a/fs/lockd/host.c
+++ b/fs/lockd/host.c
@@ -167,7 +167,8 @@ static struct nlm_host *nlm_lookup_host(struct nlm_lookup_host_info *ni)
167 continue; 167 continue;
168 if (host->h_server != ni->server) 168 if (host->h_server != ni->server)
169 continue; 169 continue;
170 if (!nlm_cmp_addr(nlm_srcaddr(host), ni->src_sap)) 170 if (ni->server &&
171 !nlm_cmp_addr(nlm_srcaddr(host), ni->src_sap))
171 continue; 172 continue;
172 173
173 /* Move to head of hash chain. */ 174 /* Move to head of hash chain. */
diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c
index c631a83931ce..56b076736b56 100644
--- a/fs/lockd/svc.c
+++ b/fs/lockd/svc.c
@@ -181,6 +181,7 @@ lockd(void *vrqstp)
181 } 181 }
182 flush_signals(current); 182 flush_signals(current);
183 cancel_delayed_work_sync(&grace_period_end); 183 cancel_delayed_work_sync(&grace_period_end);
184 locks_end_grace(&lockd_manager);
184 if (nlmsvc_ops) 185 if (nlmsvc_ops)
185 nlmsvc_invalidate_all(); 186 nlmsvc_invalidate_all();
186 nlm_shutdown_hosts(); 187 nlm_shutdown_hosts();
diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c
index bb93946ace22..b79ec930d9f1 100644
--- a/fs/nfsd/nfs4recover.c
+++ b/fs/nfsd/nfs4recover.c
@@ -225,12 +225,12 @@ nfsd4_list_rec_dir(struct dentry *dir, recdir_func *f)
225 return 0; 225 return 0;
226 226
227 nfs4_save_user(&uid, &gid); 227 nfs4_save_user(&uid, &gid);
228 INIT_LIST_HEAD(dentries);
228 229
229 filp = dentry_open(dget(dir), mntget(rec_dir.mnt), O_RDONLY); 230 filp = dentry_open(dget(dir), mntget(rec_dir.mnt), O_RDONLY);
230 status = PTR_ERR(filp); 231 status = PTR_ERR(filp);
231 if (IS_ERR(filp)) 232 if (IS_ERR(filp))
232 goto out; 233 goto out;
233 INIT_LIST_HEAD(dentries);
234 status = vfs_readdir(filp, nfsd4_build_dentrylist, &dla); 234 status = vfs_readdir(filp, nfsd4_build_dentrylist, &dla);
235 fput(filp); 235 fput(filp);
236 while (!list_empty(dentries)) { 236 while (!list_empty(dentries)) {
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index b0bebc552a11..1a052ac2bde9 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -3261,6 +3261,7 @@ nfs4_state_shutdown(void)
3261{ 3261{
3262 cancel_rearming_delayed_workqueue(laundry_wq, &laundromat_work); 3262 cancel_rearming_delayed_workqueue(laundry_wq, &laundromat_work);
3263 destroy_workqueue(laundry_wq); 3263 destroy_workqueue(laundry_wq);
3264 locks_end_grace(&nfsd4_manager);
3264 nfs4_lock_state(); 3265 nfs4_lock_state();
3265 nfs4_release_reclaim(); 3266 nfs4_release_reclaim();
3266 __nfs4_state_shutdown(); 3267 __nfs4_state_shutdown();
diff --git a/fs/ocfs2/ocfs2_fs.h b/fs/ocfs2/ocfs2_fs.h
index 5f180cf7abbd..5e0c0d0aef7d 100644
--- a/fs/ocfs2/ocfs2_fs.h
+++ b/fs/ocfs2/ocfs2_fs.h
@@ -86,7 +86,8 @@
86#define OCFS2_CLEAR_INCOMPAT_FEATURE(sb,mask) \ 86#define OCFS2_CLEAR_INCOMPAT_FEATURE(sb,mask) \
87 OCFS2_SB(sb)->s_feature_incompat &= ~(mask) 87 OCFS2_SB(sb)->s_feature_incompat &= ~(mask)
88 88
89#define OCFS2_FEATURE_COMPAT_SUPP OCFS2_FEATURE_COMPAT_BACKUP_SB 89#define OCFS2_FEATURE_COMPAT_SUPP (OCFS2_FEATURE_COMPAT_BACKUP_SB \
90 | OCFS2_FEATURE_COMPAT_JBD2_SB)
90#define OCFS2_FEATURE_INCOMPAT_SUPP (OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT \ 91#define OCFS2_FEATURE_INCOMPAT_SUPP (OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT \
91 | OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC \ 92 | OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC \
92 | OCFS2_FEATURE_INCOMPAT_INLINE_DATA \ 93 | OCFS2_FEATURE_INCOMPAT_INLINE_DATA \
@@ -153,6 +154,11 @@
153#define OCFS2_FEATURE_COMPAT_BACKUP_SB 0x0001 154#define OCFS2_FEATURE_COMPAT_BACKUP_SB 0x0001
154 155
155/* 156/*
157 * The filesystem will correctly handle journal feature bits.
158 */
159#define OCFS2_FEATURE_COMPAT_JBD2_SB 0x0002
160
161/*
156 * Unwritten extents support. 162 * Unwritten extents support.
157 */ 163 */
158#define OCFS2_FEATURE_RO_COMPAT_UNWRITTEN 0x0001 164#define OCFS2_FEATURE_RO_COMPAT_UNWRITTEN 0x0001
diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
index 054e2efb0b7e..74d7367ade13 100644
--- a/fs/ocfs2/xattr.c
+++ b/fs/ocfs2/xattr.c
@@ -2645,9 +2645,9 @@ static int ocfs2_xattr_update_xattr_search(struct inode *inode,
2645 return ret; 2645 return ret;
2646 } 2646 }
2647 2647
2648 i = xs->here - old_xh->xh_entries;
2649 xs->here = &xs->header->xh_entries[i];
2650 } 2648 }
2649 i = xs->here - old_xh->xh_entries;
2650 xs->here = &xs->header->xh_entries[i];
2651 } 2651 }
2652 2652
2653 return ret; 2653 return ret;
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 486cf3fe7139..d4677603c889 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -371,7 +371,7 @@ static int lstats_show_proc(struct seq_file *m, void *v)
371 task->latency_record[i].time, 371 task->latency_record[i].time,
372 task->latency_record[i].max); 372 task->latency_record[i].max);
373 for (q = 0; q < LT_BACKTRACEDEPTH; q++) { 373 for (q = 0; q < LT_BACKTRACEDEPTH; q++) {
374 char sym[KSYM_NAME_LEN]; 374 char sym[KSYM_SYMBOL_LEN];
375 char *c; 375 char *c;
376 if (!task->latency_record[i].backtrace[q]) 376 if (!task->latency_record[i].backtrace[q])
377 break; 377 break;
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index b770c095e45c..3a8bdd7f5756 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -557,9 +557,9 @@ static u64 swap_pte_to_pagemap_entry(pte_t pte)
557 return swp_type(e) | (swp_offset(e) << MAX_SWAPFILES_SHIFT); 557 return swp_type(e) | (swp_offset(e) << MAX_SWAPFILES_SHIFT);
558} 558}
559 559
560static unsigned long pte_to_pagemap_entry(pte_t pte) 560static u64 pte_to_pagemap_entry(pte_t pte)
561{ 561{
562 unsigned long pme = 0; 562 u64 pme = 0;
563 if (is_swap_pte(pte)) 563 if (is_swap_pte(pte))
564 pme = PM_PFRAME(swap_pte_to_pagemap_entry(pte)) 564 pme = PM_PFRAME(swap_pte_to_pagemap_entry(pte))
565 | PM_PSHIFT(PAGE_SHIFT) | PM_SWAP; 565 | PM_PSHIFT(PAGE_SHIFT) | PM_SWAP;
diff --git a/fs/ubifs/commit.c b/fs/ubifs/commit.c
index 0a6aa2cc78f0..b49884c8c10e 100644
--- a/fs/ubifs/commit.c
+++ b/fs/ubifs/commit.c
@@ -234,8 +234,8 @@ int ubifs_bg_thread(void *info)
234 int err; 234 int err;
235 struct ubifs_info *c = info; 235 struct ubifs_info *c = info;
236 236
237 ubifs_msg("background thread \"%s\" started, PID %d", 237 dbg_msg("background thread \"%s\" started, PID %d",
238 c->bgt_name, current->pid); 238 c->bgt_name, current->pid);
239 set_freezable(); 239 set_freezable();
240 240
241 while (1) { 241 while (1) {
diff --git a/fs/ubifs/debug.c b/fs/ubifs/debug.c
index 7186400750e7..510ffa0bbda4 100644
--- a/fs/ubifs/debug.c
+++ b/fs/ubifs/debug.c
@@ -101,21 +101,24 @@ static void sprintf_key(const struct ubifs_info *c, const union ubifs_key *key,
101 if (c->key_fmt == UBIFS_SIMPLE_KEY_FMT) { 101 if (c->key_fmt == UBIFS_SIMPLE_KEY_FMT) {
102 switch (type) { 102 switch (type) {
103 case UBIFS_INO_KEY: 103 case UBIFS_INO_KEY:
104 sprintf(p, "(%lu, %s)", key_inum(c, key), 104 sprintf(p, "(%lu, %s)", (unsigned long)key_inum(c, key),
105 get_key_type(type)); 105 get_key_type(type));
106 break; 106 break;
107 case UBIFS_DENT_KEY: 107 case UBIFS_DENT_KEY:
108 case UBIFS_XENT_KEY: 108 case UBIFS_XENT_KEY:
109 sprintf(p, "(%lu, %s, %#08x)", key_inum(c, key), 109 sprintf(p, "(%lu, %s, %#08x)",
110 (unsigned long)key_inum(c, key),
110 get_key_type(type), key_hash(c, key)); 111 get_key_type(type), key_hash(c, key));
111 break; 112 break;
112 case UBIFS_DATA_KEY: 113 case UBIFS_DATA_KEY:
113 sprintf(p, "(%lu, %s, %u)", key_inum(c, key), 114 sprintf(p, "(%lu, %s, %u)",
115 (unsigned long)key_inum(c, key),
114 get_key_type(type), key_block(c, key)); 116 get_key_type(type), key_block(c, key));
115 break; 117 break;
116 case UBIFS_TRUN_KEY: 118 case UBIFS_TRUN_KEY:
117 sprintf(p, "(%lu, %s)", 119 sprintf(p, "(%lu, %s)",
118 key_inum(c, key), get_key_type(type)); 120 (unsigned long)key_inum(c, key),
121 get_key_type(type));
119 break; 122 break;
120 default: 123 default:
121 sprintf(p, "(bad key type: %#08x, %#08x)", 124 sprintf(p, "(bad key type: %#08x, %#08x)",
@@ -364,8 +367,8 @@ void dbg_dump_node(const struct ubifs_info *c, const void *node)
364 le32_to_cpu(mst->ihead_lnum)); 367 le32_to_cpu(mst->ihead_lnum));
365 printk(KERN_DEBUG "\tihead_offs %u\n", 368 printk(KERN_DEBUG "\tihead_offs %u\n",
366 le32_to_cpu(mst->ihead_offs)); 369 le32_to_cpu(mst->ihead_offs));
367 printk(KERN_DEBUG "\tindex_size %u\n", 370 printk(KERN_DEBUG "\tindex_size %llu\n",
368 le32_to_cpu(mst->index_size)); 371 (unsigned long long)le64_to_cpu(mst->index_size));
369 printk(KERN_DEBUG "\tlpt_lnum %u\n", 372 printk(KERN_DEBUG "\tlpt_lnum %u\n",
370 le32_to_cpu(mst->lpt_lnum)); 373 le32_to_cpu(mst->lpt_lnum));
371 printk(KERN_DEBUG "\tlpt_offs %u\n", 374 printk(KERN_DEBUG "\tlpt_offs %u\n",
@@ -1589,7 +1592,7 @@ static struct fsck_inode *add_inode(struct ubifs_info *c,
1589 1592
1590 if (inum > c->highest_inum) { 1593 if (inum > c->highest_inum) {
1591 ubifs_err("too high inode number, max. is %lu", 1594 ubifs_err("too high inode number, max. is %lu",
1592 c->highest_inum); 1595 (unsigned long)c->highest_inum);
1593 return ERR_PTR(-EINVAL); 1596 return ERR_PTR(-EINVAL);
1594 } 1597 }
1595 1598
@@ -1668,16 +1671,18 @@ static struct fsck_inode *read_add_inode(struct ubifs_info *c,
1668 ino_key_init(c, &key, inum); 1671 ino_key_init(c, &key, inum);
1669 err = ubifs_lookup_level0(c, &key, &znode, &n); 1672 err = ubifs_lookup_level0(c, &key, &znode, &n);
1670 if (!err) { 1673 if (!err) {
1671 ubifs_err("inode %lu not found in index", inum); 1674 ubifs_err("inode %lu not found in index", (unsigned long)inum);
1672 return ERR_PTR(-ENOENT); 1675 return ERR_PTR(-ENOENT);
1673 } else if (err < 0) { 1676 } else if (err < 0) {
1674 ubifs_err("error %d while looking up inode %lu", err, inum); 1677 ubifs_err("error %d while looking up inode %lu",
1678 err, (unsigned long)inum);
1675 return ERR_PTR(err); 1679 return ERR_PTR(err);
1676 } 1680 }
1677 1681
1678 zbr = &znode->zbranch[n]; 1682 zbr = &znode->zbranch[n];
1679 if (zbr->len < UBIFS_INO_NODE_SZ) { 1683 if (zbr->len < UBIFS_INO_NODE_SZ) {
1680 ubifs_err("bad node %lu node length %d", inum, zbr->len); 1684 ubifs_err("bad node %lu node length %d",
1685 (unsigned long)inum, zbr->len);
1681 return ERR_PTR(-EINVAL); 1686 return ERR_PTR(-EINVAL);
1682 } 1687 }
1683 1688
@@ -1697,7 +1702,7 @@ static struct fsck_inode *read_add_inode(struct ubifs_info *c,
1697 kfree(ino); 1702 kfree(ino);
1698 if (IS_ERR(fscki)) { 1703 if (IS_ERR(fscki)) {
1699 ubifs_err("error %ld while adding inode %lu node", 1704 ubifs_err("error %ld while adding inode %lu node",
1700 PTR_ERR(fscki), inum); 1705 PTR_ERR(fscki), (unsigned long)inum);
1701 return fscki; 1706 return fscki;
1702 } 1707 }
1703 1708
@@ -1786,7 +1791,8 @@ static int check_leaf(struct ubifs_info *c, struct ubifs_zbranch *zbr,
1786 if (IS_ERR(fscki)) { 1791 if (IS_ERR(fscki)) {
1787 err = PTR_ERR(fscki); 1792 err = PTR_ERR(fscki);
1788 ubifs_err("error %d while processing data node and " 1793 ubifs_err("error %d while processing data node and "
1789 "trying to find inode node %lu", err, inum); 1794 "trying to find inode node %lu",
1795 err, (unsigned long)inum);
1790 goto out_dump; 1796 goto out_dump;
1791 } 1797 }
1792 1798
@@ -1819,7 +1825,8 @@ static int check_leaf(struct ubifs_info *c, struct ubifs_zbranch *zbr,
1819 if (IS_ERR(fscki)) { 1825 if (IS_ERR(fscki)) {
1820 err = PTR_ERR(fscki); 1826 err = PTR_ERR(fscki);
1821 ubifs_err("error %d while processing entry node and " 1827 ubifs_err("error %d while processing entry node and "
1822 "trying to find inode node %lu", err, inum); 1828 "trying to find inode node %lu",
1829 err, (unsigned long)inum);
1823 goto out_dump; 1830 goto out_dump;
1824 } 1831 }
1825 1832
@@ -1832,7 +1839,7 @@ static int check_leaf(struct ubifs_info *c, struct ubifs_zbranch *zbr,
1832 err = PTR_ERR(fscki); 1839 err = PTR_ERR(fscki);
1833 ubifs_err("error %d while processing entry node and " 1840 ubifs_err("error %d while processing entry node and "
1834 "trying to find parent inode node %lu", 1841 "trying to find parent inode node %lu",
1835 err, inum); 1842 err, (unsigned long)inum);
1836 goto out_dump; 1843 goto out_dump;
1837 } 1844 }
1838 1845
@@ -1923,7 +1930,8 @@ static int check_inodes(struct ubifs_info *c, struct fsck_data *fsckd)
1923 fscki->references != 1) { 1930 fscki->references != 1) {
1924 ubifs_err("directory inode %lu has %d " 1931 ubifs_err("directory inode %lu has %d "
1925 "direntries which refer it, but " 1932 "direntries which refer it, but "
1926 "should be 1", fscki->inum, 1933 "should be 1",
1934 (unsigned long)fscki->inum,
1927 fscki->references); 1935 fscki->references);
1928 goto out_dump; 1936 goto out_dump;
1929 } 1937 }
@@ -1931,27 +1939,29 @@ static int check_inodes(struct ubifs_info *c, struct fsck_data *fsckd)
1931 fscki->references != 0) { 1939 fscki->references != 0) {
1932 ubifs_err("root inode %lu has non-zero (%d) " 1940 ubifs_err("root inode %lu has non-zero (%d) "
1933 "direntries which refer it", 1941 "direntries which refer it",
1934 fscki->inum, fscki->references); 1942 (unsigned long)fscki->inum,
1943 fscki->references);
1935 goto out_dump; 1944 goto out_dump;
1936 } 1945 }
1937 if (fscki->calc_sz != fscki->size) { 1946 if (fscki->calc_sz != fscki->size) {
1938 ubifs_err("directory inode %lu size is %lld, " 1947 ubifs_err("directory inode %lu size is %lld, "
1939 "but calculated size is %lld", 1948 "but calculated size is %lld",
1940 fscki->inum, fscki->size, 1949 (unsigned long)fscki->inum,
1941 fscki->calc_sz); 1950 fscki->size, fscki->calc_sz);
1942 goto out_dump; 1951 goto out_dump;
1943 } 1952 }
1944 if (fscki->calc_cnt != fscki->nlink) { 1953 if (fscki->calc_cnt != fscki->nlink) {
1945 ubifs_err("directory inode %lu nlink is %d, " 1954 ubifs_err("directory inode %lu nlink is %d, "
1946 "but calculated nlink is %d", 1955 "but calculated nlink is %d",
1947 fscki->inum, fscki->nlink, 1956 (unsigned long)fscki->inum,
1948 fscki->calc_cnt); 1957 fscki->nlink, fscki->calc_cnt);
1949 goto out_dump; 1958 goto out_dump;
1950 } 1959 }
1951 } else { 1960 } else {
1952 if (fscki->references != fscki->nlink) { 1961 if (fscki->references != fscki->nlink) {
1953 ubifs_err("inode %lu nlink is %d, but " 1962 ubifs_err("inode %lu nlink is %d, but "
1954 "calculated nlink is %d", fscki->inum, 1963 "calculated nlink is %d",
1964 (unsigned long)fscki->inum,
1955 fscki->nlink, fscki->references); 1965 fscki->nlink, fscki->references);
1956 goto out_dump; 1966 goto out_dump;
1957 } 1967 }
@@ -1959,20 +1969,21 @@ static int check_inodes(struct ubifs_info *c, struct fsck_data *fsckd)
1959 if (fscki->xattr_sz != fscki->calc_xsz) { 1969 if (fscki->xattr_sz != fscki->calc_xsz) {
1960 ubifs_err("inode %lu has xattr size %u, but " 1970 ubifs_err("inode %lu has xattr size %u, but "
1961 "calculated size is %lld", 1971 "calculated size is %lld",
1962 fscki->inum, fscki->xattr_sz, 1972 (unsigned long)fscki->inum, fscki->xattr_sz,
1963 fscki->calc_xsz); 1973 fscki->calc_xsz);
1964 goto out_dump; 1974 goto out_dump;
1965 } 1975 }
1966 if (fscki->xattr_cnt != fscki->calc_xcnt) { 1976 if (fscki->xattr_cnt != fscki->calc_xcnt) {
1967 ubifs_err("inode %lu has %u xattrs, but " 1977 ubifs_err("inode %lu has %u xattrs, but "
1968 "calculated count is %lld", fscki->inum, 1978 "calculated count is %lld",
1979 (unsigned long)fscki->inum,
1969 fscki->xattr_cnt, fscki->calc_xcnt); 1980 fscki->xattr_cnt, fscki->calc_xcnt);
1970 goto out_dump; 1981 goto out_dump;
1971 } 1982 }
1972 if (fscki->xattr_nms != fscki->calc_xnms) { 1983 if (fscki->xattr_nms != fscki->calc_xnms) {
1973 ubifs_err("inode %lu has xattr names' size %u, but " 1984 ubifs_err("inode %lu has xattr names' size %u, but "
1974 "calculated names' size is %lld", 1985 "calculated names' size is %lld",
1975 fscki->inum, fscki->xattr_nms, 1986 (unsigned long)fscki->inum, fscki->xattr_nms,
1976 fscki->calc_xnms); 1987 fscki->calc_xnms);
1977 goto out_dump; 1988 goto out_dump;
1978 } 1989 }
@@ -1985,11 +1996,12 @@ out_dump:
1985 ino_key_init(c, &key, fscki->inum); 1996 ino_key_init(c, &key, fscki->inum);
1986 err = ubifs_lookup_level0(c, &key, &znode, &n); 1997 err = ubifs_lookup_level0(c, &key, &znode, &n);
1987 if (!err) { 1998 if (!err) {
1988 ubifs_err("inode %lu not found in index", fscki->inum); 1999 ubifs_err("inode %lu not found in index",
2000 (unsigned long)fscki->inum);
1989 return -ENOENT; 2001 return -ENOENT;
1990 } else if (err < 0) { 2002 } else if (err < 0) {
1991 ubifs_err("error %d while looking up inode %lu", 2003 ubifs_err("error %d while looking up inode %lu",
1992 err, fscki->inum); 2004 err, (unsigned long)fscki->inum);
1993 return err; 2005 return err;
1994 } 2006 }
1995 2007
@@ -2007,7 +2019,7 @@ out_dump:
2007 } 2019 }
2008 2020
2009 ubifs_msg("dump of the inode %lu sitting in LEB %d:%d", 2021 ubifs_msg("dump of the inode %lu sitting in LEB %d:%d",
2010 fscki->inum, zbr->lnum, zbr->offs); 2022 (unsigned long)fscki->inum, zbr->lnum, zbr->offs);
2011 dbg_dump_node(c, ino); 2023 dbg_dump_node(c, ino);
2012 kfree(ino); 2024 kfree(ino);
2013 return -EINVAL; 2025 return -EINVAL;
diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
index 526c01ec8003..0422c98e1793 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -161,7 +161,7 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, const struct inode *dir,
161 return ERR_PTR(-EINVAL); 161 return ERR_PTR(-EINVAL);
162 } 162 }
163 ubifs_warn("running out of inode numbers (current %lu, max %d)", 163 ubifs_warn("running out of inode numbers (current %lu, max %d)",
164 c->highest_inum, INUM_WATERMARK); 164 (unsigned long)c->highest_inum, INUM_WATERMARK);
165 } 165 }
166 166
167 inode->i_ino = ++c->highest_inum; 167 inode->i_ino = ++c->highest_inum;
@@ -428,7 +428,8 @@ static int ubifs_readdir(struct file *file, void *dirent, filldir_t filldir)
428 dbg_gen("feed '%s', ino %llu, new f_pos %#x", 428 dbg_gen("feed '%s', ino %llu, new f_pos %#x",
429 dent->name, (unsigned long long)le64_to_cpu(dent->inum), 429 dent->name, (unsigned long long)le64_to_cpu(dent->inum),
430 key_hash_flash(c, &dent->key)); 430 key_hash_flash(c, &dent->key));
431 ubifs_assert(dent->ch.sqnum > ubifs_inode(dir)->creat_sqnum); 431 ubifs_assert(le64_to_cpu(dent->ch.sqnum) >
432 ubifs_inode(dir)->creat_sqnum);
432 433
433 nm.len = le16_to_cpu(dent->nlen); 434 nm.len = le16_to_cpu(dent->nlen);
434 over = filldir(dirent, dent->name, nm.len, file->f_pos, 435 over = filldir(dirent, dent->name, nm.len, file->f_pos,
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
index 51cf511d44d9..2624411d9758 100644
--- a/fs/ubifs/file.c
+++ b/fs/ubifs/file.c
@@ -72,7 +72,7 @@ static int read_block(struct inode *inode, void *addr, unsigned int block,
72 return err; 72 return err;
73 } 73 }
74 74
75 ubifs_assert(dn->ch.sqnum > ubifs_inode(inode)->creat_sqnum); 75 ubifs_assert(le64_to_cpu(dn->ch.sqnum) > ubifs_inode(inode)->creat_sqnum);
76 76
77 len = le32_to_cpu(dn->size); 77 len = le32_to_cpu(dn->size);
78 if (len <= 0 || len > UBIFS_BLOCK_SIZE) 78 if (len <= 0 || len > UBIFS_BLOCK_SIZE)
@@ -626,7 +626,7 @@ static int populate_page(struct ubifs_info *c, struct page *page,
626 626
627 dn = bu->buf + (bu->zbranch[nn].offs - offs); 627 dn = bu->buf + (bu->zbranch[nn].offs - offs);
628 628
629 ubifs_assert(dn->ch.sqnum > 629 ubifs_assert(le64_to_cpu(dn->ch.sqnum) >
630 ubifs_inode(inode)->creat_sqnum); 630 ubifs_inode(inode)->creat_sqnum);
631 631
632 len = le32_to_cpu(dn->size); 632 len = le32_to_cpu(dn->size);
@@ -691,32 +691,22 @@ out_err:
691/** 691/**
692 * ubifs_do_bulk_read - do bulk-read. 692 * ubifs_do_bulk_read - do bulk-read.
693 * @c: UBIFS file-system description object 693 * @c: UBIFS file-system description object
694 * @page1: first page 694 * @bu: bulk-read information
695 * @page1: first page to read
695 * 696 *
696 * This function returns %1 if the bulk-read is done, otherwise %0 is returned. 697 * This function returns %1 if the bulk-read is done, otherwise %0 is returned.
697 */ 698 */
698static int ubifs_do_bulk_read(struct ubifs_info *c, struct page *page1) 699static int ubifs_do_bulk_read(struct ubifs_info *c, struct bu_info *bu,
700 struct page *page1)
699{ 701{
700 pgoff_t offset = page1->index, end_index; 702 pgoff_t offset = page1->index, end_index;
701 struct address_space *mapping = page1->mapping; 703 struct address_space *mapping = page1->mapping;
702 struct inode *inode = mapping->host; 704 struct inode *inode = mapping->host;
703 struct ubifs_inode *ui = ubifs_inode(inode); 705 struct ubifs_inode *ui = ubifs_inode(inode);
704 struct bu_info *bu;
705 int err, page_idx, page_cnt, ret = 0, n = 0; 706 int err, page_idx, page_cnt, ret = 0, n = 0;
707 int allocate = bu->buf ? 0 : 1;
706 loff_t isize; 708 loff_t isize;
707 709
708 bu = kmalloc(sizeof(struct bu_info), GFP_NOFS);
709 if (!bu)
710 return 0;
711
712 bu->buf_len = c->bulk_read_buf_size;
713 bu->buf = kmalloc(bu->buf_len, GFP_NOFS);
714 if (!bu->buf)
715 goto out_free;
716
717 data_key_init(c, &bu->key, inode->i_ino,
718 offset << UBIFS_BLOCKS_PER_PAGE_SHIFT);
719
720 err = ubifs_tnc_get_bu_keys(c, bu); 710 err = ubifs_tnc_get_bu_keys(c, bu);
721 if (err) 711 if (err)
722 goto out_warn; 712 goto out_warn;
@@ -735,12 +725,25 @@ static int ubifs_do_bulk_read(struct ubifs_info *c, struct page *page1)
735 * together. If all the pages were like this, bulk-read would 725 * together. If all the pages were like this, bulk-read would
736 * reduce performance, so we turn it off for a while. 726 * reduce performance, so we turn it off for a while.
737 */ 727 */
738 ui->read_in_a_row = 0; 728 goto out_bu_off;
739 ui->bulk_read = 0;
740 goto out_free;
741 } 729 }
742 730
743 if (bu->cnt) { 731 if (bu->cnt) {
732 if (allocate) {
733 /*
734 * Allocate bulk-read buffer depending on how many data
735 * nodes we are going to read.
736 */
737 bu->buf_len = bu->zbranch[bu->cnt - 1].offs +
738 bu->zbranch[bu->cnt - 1].len -
739 bu->zbranch[0].offs;
740 ubifs_assert(bu->buf_len > 0);
741 ubifs_assert(bu->buf_len <= c->leb_size);
742 bu->buf = kmalloc(bu->buf_len, GFP_NOFS | __GFP_NOWARN);
743 if (!bu->buf)
744 goto out_bu_off;
745 }
746
744 err = ubifs_tnc_bulk_read(c, bu); 747 err = ubifs_tnc_bulk_read(c, bu);
745 if (err) 748 if (err)
746 goto out_warn; 749 goto out_warn;
@@ -779,13 +782,17 @@ static int ubifs_do_bulk_read(struct ubifs_info *c, struct page *page1)
779 ui->last_page_read = offset + page_idx - 1; 782 ui->last_page_read = offset + page_idx - 1;
780 783
781out_free: 784out_free:
782 kfree(bu->buf); 785 if (allocate)
783 kfree(bu); 786 kfree(bu->buf);
784 return ret; 787 return ret;
785 788
786out_warn: 789out_warn:
787 ubifs_warn("ignoring error %d and skipping bulk-read", err); 790 ubifs_warn("ignoring error %d and skipping bulk-read", err);
788 goto out_free; 791 goto out_free;
792
793out_bu_off:
794 ui->read_in_a_row = ui->bulk_read = 0;
795 goto out_free;
789} 796}
790 797
791/** 798/**
@@ -803,18 +810,20 @@ static int ubifs_bulk_read(struct page *page)
803 struct ubifs_info *c = inode->i_sb->s_fs_info; 810 struct ubifs_info *c = inode->i_sb->s_fs_info;
804 struct ubifs_inode *ui = ubifs_inode(inode); 811 struct ubifs_inode *ui = ubifs_inode(inode);
805 pgoff_t index = page->index, last_page_read = ui->last_page_read; 812 pgoff_t index = page->index, last_page_read = ui->last_page_read;
806 int ret = 0; 813 struct bu_info *bu;
814 int err = 0, allocated = 0;
807 815
808 ui->last_page_read = index; 816 ui->last_page_read = index;
809
810 if (!c->bulk_read) 817 if (!c->bulk_read)
811 return 0; 818 return 0;
819
812 /* 820 /*
813 * Bulk-read is protected by ui_mutex, but it is an optimization, so 821 * Bulk-read is protected by @ui->ui_mutex, but it is an optimization,
814 * don't bother if we cannot lock the mutex. 822 * so don't bother if we cannot lock the mutex.
815 */ 823 */
816 if (!mutex_trylock(&ui->ui_mutex)) 824 if (!mutex_trylock(&ui->ui_mutex))
817 return 0; 825 return 0;
826
818 if (index != last_page_read + 1) { 827 if (index != last_page_read + 1) {
819 /* Turn off bulk-read if we stop reading sequentially */ 828 /* Turn off bulk-read if we stop reading sequentially */
820 ui->read_in_a_row = 1; 829 ui->read_in_a_row = 1;
@@ -822,6 +831,7 @@ static int ubifs_bulk_read(struct page *page)
822 ui->bulk_read = 0; 831 ui->bulk_read = 0;
823 goto out_unlock; 832 goto out_unlock;
824 } 833 }
834
825 if (!ui->bulk_read) { 835 if (!ui->bulk_read) {
826 ui->read_in_a_row += 1; 836 ui->read_in_a_row += 1;
827 if (ui->read_in_a_row < 3) 837 if (ui->read_in_a_row < 3)
@@ -829,10 +839,35 @@ static int ubifs_bulk_read(struct page *page)
829 /* Three reads in a row, so switch on bulk-read */ 839 /* Three reads in a row, so switch on bulk-read */
830 ui->bulk_read = 1; 840 ui->bulk_read = 1;
831 } 841 }
832 ret = ubifs_do_bulk_read(c, page); 842
843 /*
844 * If possible, try to use pre-allocated bulk-read information, which
845 * is protected by @c->bu_mutex.
846 */
847 if (mutex_trylock(&c->bu_mutex))
848 bu = &c->bu;
849 else {
850 bu = kmalloc(sizeof(struct bu_info), GFP_NOFS | __GFP_NOWARN);
851 if (!bu)
852 goto out_unlock;
853
854 bu->buf = NULL;
855 allocated = 1;
856 }
857
858 bu->buf_len = c->max_bu_buf_len;
859 data_key_init(c, &bu->key, inode->i_ino,
860 page->index << UBIFS_BLOCKS_PER_PAGE_SHIFT);
861 err = ubifs_do_bulk_read(c, bu, page);
862
863 if (!allocated)
864 mutex_unlock(&c->bu_mutex);
865 else
866 kfree(bu);
867
833out_unlock: 868out_unlock:
834 mutex_unlock(&ui->ui_mutex); 869 mutex_unlock(&ui->ui_mutex);
835 return ret; 870 return err;
836} 871}
837 872
838static int ubifs_readpage(struct file *file, struct page *page) 873static int ubifs_readpage(struct file *file, struct page *page)
diff --git a/fs/ubifs/journal.c b/fs/ubifs/journal.c
index 22993f867d19..f91b745908ea 100644
--- a/fs/ubifs/journal.c
+++ b/fs/ubifs/journal.c
@@ -690,8 +690,9 @@ int ubifs_jnl_write_data(struct ubifs_info *c, const struct inode *inode,
690 int dlen = UBIFS_DATA_NODE_SZ + UBIFS_BLOCK_SIZE * WORST_COMPR_FACTOR; 690 int dlen = UBIFS_DATA_NODE_SZ + UBIFS_BLOCK_SIZE * WORST_COMPR_FACTOR;
691 struct ubifs_inode *ui = ubifs_inode(inode); 691 struct ubifs_inode *ui = ubifs_inode(inode);
692 692
693 dbg_jnl("ino %lu, blk %u, len %d, key %s", key_inum(c, key), 693 dbg_jnl("ino %lu, blk %u, len %d, key %s",
694 key_block(c, key), len, DBGKEY(key)); 694 (unsigned long)key_inum(c, key), key_block(c, key), len,
695 DBGKEY(key));
695 ubifs_assert(len <= UBIFS_BLOCK_SIZE); 696 ubifs_assert(len <= UBIFS_BLOCK_SIZE);
696 697
697 data = kmalloc(dlen, GFP_NOFS); 698 data = kmalloc(dlen, GFP_NOFS);
@@ -1128,7 +1129,8 @@ int ubifs_jnl_truncate(struct ubifs_info *c, const struct inode *inode,
1128 ino_t inum = inode->i_ino; 1129 ino_t inum = inode->i_ino;
1129 unsigned int blk; 1130 unsigned int blk;
1130 1131
1131 dbg_jnl("ino %lu, size %lld -> %lld", inum, old_size, new_size); 1132 dbg_jnl("ino %lu, size %lld -> %lld",
1133 (unsigned long)inum, old_size, new_size);
1132 ubifs_assert(!ui->data_len); 1134 ubifs_assert(!ui->data_len);
1133 ubifs_assert(S_ISREG(inode->i_mode)); 1135 ubifs_assert(S_ISREG(inode->i_mode));
1134 ubifs_assert(mutex_is_locked(&ui->ui_mutex)); 1136 ubifs_assert(mutex_is_locked(&ui->ui_mutex));
diff --git a/fs/ubifs/key.h b/fs/ubifs/key.h
index 9ee65086f627..3f1f16bc25c9 100644
--- a/fs/ubifs/key.h
+++ b/fs/ubifs/key.h
@@ -345,7 +345,7 @@ static inline int key_type_flash(const struct ubifs_info *c, const void *k)
345{ 345{
346 const union ubifs_key *key = k; 346 const union ubifs_key *key = k;
347 347
348 return le32_to_cpu(key->u32[1]) >> UBIFS_S_KEY_BLOCK_BITS; 348 return le32_to_cpu(key->j32[1]) >> UBIFS_S_KEY_BLOCK_BITS;
349} 349}
350 350
351/** 351/**
@@ -416,7 +416,7 @@ static inline unsigned int key_block_flash(const struct ubifs_info *c,
416{ 416{
417 const union ubifs_key *key = k; 417 const union ubifs_key *key = k;
418 418
419 return le32_to_cpu(key->u32[1]) & UBIFS_S_KEY_BLOCK_MASK; 419 return le32_to_cpu(key->j32[1]) & UBIFS_S_KEY_BLOCK_MASK;
420} 420}
421 421
422/** 422/**
diff --git a/fs/ubifs/lpt_commit.c b/fs/ubifs/lpt_commit.c
index eed5a0025d63..a41434b42785 100644
--- a/fs/ubifs/lpt_commit.c
+++ b/fs/ubifs/lpt_commit.c
@@ -571,8 +571,6 @@ static struct ubifs_pnode *next_pnode(struct ubifs_info *c,
571 /* We assume here that LEB zero is never an LPT LEB */ 571 /* We assume here that LEB zero is never an LPT LEB */
572 if (nnode->nbranch[iip].lnum) 572 if (nnode->nbranch[iip].lnum)
573 return ubifs_get_pnode(c, nnode, iip); 573 return ubifs_get_pnode(c, nnode, iip);
574 else
575 return NULL;
576 } 574 }
577 575
578 /* Go up while can't go right */ 576 /* Go up while can't go right */
diff --git a/fs/ubifs/orphan.c b/fs/ubifs/orphan.c
index 02d3462f4d3e..9bd5a43d4526 100644
--- a/fs/ubifs/orphan.c
+++ b/fs/ubifs/orphan.c
@@ -105,7 +105,7 @@ int ubifs_add_orphan(struct ubifs_info *c, ino_t inum)
105 list_add_tail(&orphan->list, &c->orph_list); 105 list_add_tail(&orphan->list, &c->orph_list);
106 list_add_tail(&orphan->new_list, &c->orph_new); 106 list_add_tail(&orphan->new_list, &c->orph_new);
107 spin_unlock(&c->orphan_lock); 107 spin_unlock(&c->orphan_lock);
108 dbg_gen("ino %lu", inum); 108 dbg_gen("ino %lu", (unsigned long)inum);
109 return 0; 109 return 0;
110} 110}
111 111
@@ -132,14 +132,16 @@ void ubifs_delete_orphan(struct ubifs_info *c, ino_t inum)
132 else { 132 else {
133 if (o->dnext) { 133 if (o->dnext) {
134 spin_unlock(&c->orphan_lock); 134 spin_unlock(&c->orphan_lock);
135 dbg_gen("deleted twice ino %lu", inum); 135 dbg_gen("deleted twice ino %lu",
136 (unsigned long)inum);
136 return; 137 return;
137 } 138 }
138 if (o->cnext) { 139 if (o->cnext) {
139 o->dnext = c->orph_dnext; 140 o->dnext = c->orph_dnext;
140 c->orph_dnext = o; 141 c->orph_dnext = o;
141 spin_unlock(&c->orphan_lock); 142 spin_unlock(&c->orphan_lock);
142 dbg_gen("delete later ino %lu", inum); 143 dbg_gen("delete later ino %lu",
144 (unsigned long)inum);
143 return; 145 return;
144 } 146 }
145 rb_erase(p, &c->orph_tree); 147 rb_erase(p, &c->orph_tree);
@@ -151,12 +153,12 @@ void ubifs_delete_orphan(struct ubifs_info *c, ino_t inum)
151 } 153 }
152 spin_unlock(&c->orphan_lock); 154 spin_unlock(&c->orphan_lock);
153 kfree(o); 155 kfree(o);
154 dbg_gen("inum %lu", inum); 156 dbg_gen("inum %lu", (unsigned long)inum);
155 return; 157 return;
156 } 158 }
157 } 159 }
158 spin_unlock(&c->orphan_lock); 160 spin_unlock(&c->orphan_lock);
159 dbg_err("missing orphan ino %lu", inum); 161 dbg_err("missing orphan ino %lu", (unsigned long)inum);
160 dbg_dump_stack(); 162 dbg_dump_stack();
161} 163}
162 164
@@ -448,7 +450,7 @@ static void erase_deleted(struct ubifs_info *c)
448 rb_erase(&orphan->rb, &c->orph_tree); 450 rb_erase(&orphan->rb, &c->orph_tree);
449 list_del(&orphan->list); 451 list_del(&orphan->list);
450 c->tot_orphans -= 1; 452 c->tot_orphans -= 1;
451 dbg_gen("deleting orphan ino %lu", orphan->inum); 453 dbg_gen("deleting orphan ino %lu", (unsigned long)orphan->inum);
452 kfree(orphan); 454 kfree(orphan);
453 } 455 }
454 c->orph_dnext = NULL; 456 c->orph_dnext = NULL;
@@ -536,8 +538,8 @@ static int insert_dead_orphan(struct ubifs_info *c, ino_t inum)
536 list_add_tail(&orphan->list, &c->orph_list); 538 list_add_tail(&orphan->list, &c->orph_list);
537 orphan->dnext = c->orph_dnext; 539 orphan->dnext = c->orph_dnext;
538 c->orph_dnext = orphan; 540 c->orph_dnext = orphan;
539 dbg_mnt("ino %lu, new %d, tot %d", 541 dbg_mnt("ino %lu, new %d, tot %d", (unsigned long)inum,
540 inum, c->new_orphans, c->tot_orphans); 542 c->new_orphans, c->tot_orphans);
541 return 0; 543 return 0;
542} 544}
543 545
@@ -609,7 +611,8 @@ static int do_kill_orphans(struct ubifs_info *c, struct ubifs_scan_leb *sleb,
609 n = (le32_to_cpu(orph->ch.len) - UBIFS_ORPH_NODE_SZ) >> 3; 611 n = (le32_to_cpu(orph->ch.len) - UBIFS_ORPH_NODE_SZ) >> 3;
610 for (i = 0; i < n; i++) { 612 for (i = 0; i < n; i++) {
611 inum = le64_to_cpu(orph->inos[i]); 613 inum = le64_to_cpu(orph->inos[i]);
612 dbg_rcvry("deleting orphaned inode %lu", inum); 614 dbg_rcvry("deleting orphaned inode %lu",
615 (unsigned long)inum);
613 err = ubifs_tnc_remove_ino(c, inum); 616 err = ubifs_tnc_remove_ino(c, inum);
614 if (err) 617 if (err)
615 return err; 618 return err;
@@ -840,8 +843,8 @@ static int dbg_orphan_check(struct ubifs_info *c, struct ubifs_zbranch *zbr,
840 if (inum != ci->last_ino) { 843 if (inum != ci->last_ino) {
841 /* Lowest node type is the inode node, so it comes first */ 844 /* Lowest node type is the inode node, so it comes first */
842 if (key_type(c, &zbr->key) != UBIFS_INO_KEY) 845 if (key_type(c, &zbr->key) != UBIFS_INO_KEY)
843 ubifs_err("found orphan node ino %lu, type %d", inum, 846 ubifs_err("found orphan node ino %lu, type %d",
844 key_type(c, &zbr->key)); 847 (unsigned long)inum, key_type(c, &zbr->key));
845 ci->last_ino = inum; 848 ci->last_ino = inum;
846 ci->tot_inos += 1; 849 ci->tot_inos += 1;
847 err = ubifs_tnc_read_node(c, zbr, ci->node); 850 err = ubifs_tnc_read_node(c, zbr, ci->node);
@@ -853,7 +856,8 @@ static int dbg_orphan_check(struct ubifs_info *c, struct ubifs_zbranch *zbr,
853 /* Must be recorded as an orphan */ 856 /* Must be recorded as an orphan */
854 if (!dbg_find_check_orphan(&ci->root, inum) && 857 if (!dbg_find_check_orphan(&ci->root, inum) &&
855 !dbg_find_orphan(c, inum)) { 858 !dbg_find_orphan(c, inum)) {
856 ubifs_err("missing orphan, ino %lu", inum); 859 ubifs_err("missing orphan, ino %lu",
860 (unsigned long)inum);
857 ci->missing += 1; 861 ci->missing += 1;
858 } 862 }
859 } 863 }
diff --git a/fs/ubifs/recovery.c b/fs/ubifs/recovery.c
index 77d26c141cf6..90acac603e63 100644
--- a/fs/ubifs/recovery.c
+++ b/fs/ubifs/recovery.c
@@ -168,12 +168,12 @@ static int write_rcvrd_mst_node(struct ubifs_info *c,
168 struct ubifs_mst_node *mst) 168 struct ubifs_mst_node *mst)
169{ 169{
170 int err = 0, lnum = UBIFS_MST_LNUM, sz = c->mst_node_alsz; 170 int err = 0, lnum = UBIFS_MST_LNUM, sz = c->mst_node_alsz;
171 uint32_t save_flags; 171 __le32 save_flags;
172 172
173 dbg_rcvry("recovery"); 173 dbg_rcvry("recovery");
174 174
175 save_flags = mst->flags; 175 save_flags = mst->flags;
176 mst->flags = cpu_to_le32(le32_to_cpu(mst->flags) | UBIFS_MST_RCVRY); 176 mst->flags |= cpu_to_le32(UBIFS_MST_RCVRY);
177 177
178 ubifs_prepare_node(c, mst, UBIFS_MST_NODE_SZ, 1); 178 ubifs_prepare_node(c, mst, UBIFS_MST_NODE_SZ, 1);
179 err = ubi_leb_change(c->ubi, lnum, mst, sz, UBI_SHORTTERM); 179 err = ubi_leb_change(c->ubi, lnum, mst, sz, UBI_SHORTTERM);
@@ -1435,13 +1435,13 @@ static int fix_size_in_place(struct ubifs_info *c, struct size_entry *e)
1435 err = ubi_leb_change(c->ubi, lnum, c->sbuf, len, UBI_UNKNOWN); 1435 err = ubi_leb_change(c->ubi, lnum, c->sbuf, len, UBI_UNKNOWN);
1436 if (err) 1436 if (err)
1437 goto out; 1437 goto out;
1438 dbg_rcvry("inode %lu at %d:%d size %lld -> %lld ", e->inum, lnum, offs, 1438 dbg_rcvry("inode %lu at %d:%d size %lld -> %lld ",
1439 i_size, e->d_size); 1439 (unsigned long)e->inum, lnum, offs, i_size, e->d_size);
1440 return 0; 1440 return 0;
1441 1441
1442out: 1442out:
1443 ubifs_warn("inode %lu failed to fix size %lld -> %lld error %d", 1443 ubifs_warn("inode %lu failed to fix size %lld -> %lld error %d",
1444 e->inum, e->i_size, e->d_size, err); 1444 (unsigned long)e->inum, e->i_size, e->d_size, err);
1445 return err; 1445 return err;
1446} 1446}
1447 1447
@@ -1472,7 +1472,8 @@ int ubifs_recover_size(struct ubifs_info *c)
1472 return err; 1472 return err;
1473 if (err == -ENOENT) { 1473 if (err == -ENOENT) {
1474 /* Remove data nodes that have no inode */ 1474 /* Remove data nodes that have no inode */
1475 dbg_rcvry("removing ino %lu", e->inum); 1475 dbg_rcvry("removing ino %lu",
1476 (unsigned long)e->inum);
1476 err = ubifs_tnc_remove_ino(c, e->inum); 1477 err = ubifs_tnc_remove_ino(c, e->inum);
1477 if (err) 1478 if (err)
1478 return err; 1479 return err;
@@ -1493,8 +1494,8 @@ int ubifs_recover_size(struct ubifs_info *c)
1493 return PTR_ERR(inode); 1494 return PTR_ERR(inode);
1494 if (inode->i_size < e->d_size) { 1495 if (inode->i_size < e->d_size) {
1495 dbg_rcvry("ino %lu size %lld -> %lld", 1496 dbg_rcvry("ino %lu size %lld -> %lld",
1496 e->inum, e->d_size, 1497 (unsigned long)e->inum,
1497 inode->i_size); 1498 e->d_size, inode->i_size);
1498 inode->i_size = e->d_size; 1499 inode->i_size = e->d_size;
1499 ubifs_inode(inode)->ui_size = e->d_size; 1500 ubifs_inode(inode)->ui_size = e->d_size;
1500 e->inode = inode; 1501 e->inode = inode;
diff --git a/fs/ubifs/replay.c b/fs/ubifs/replay.c
index 7399692af859..21f7d047c306 100644
--- a/fs/ubifs/replay.c
+++ b/fs/ubifs/replay.c
@@ -1065,7 +1065,7 @@ int ubifs_replay_journal(struct ubifs_info *c)
1065 ubifs_assert(c->bud_bytes <= c->max_bud_bytes || c->need_recovery); 1065 ubifs_assert(c->bud_bytes <= c->max_bud_bytes || c->need_recovery);
1066 dbg_mnt("finished, log head LEB %d:%d, max_sqnum %llu, " 1066 dbg_mnt("finished, log head LEB %d:%d, max_sqnum %llu, "
1067 "highest_inum %lu", c->lhead_lnum, c->lhead_offs, c->max_sqnum, 1067 "highest_inum %lu", c->lhead_lnum, c->lhead_offs, c->max_sqnum,
1068 c->highest_inum); 1068 (unsigned long)c->highest_inum);
1069out: 1069out:
1070 destroy_replay_tree(c); 1070 destroy_replay_tree(c);
1071 destroy_bud_list(c); 1071 destroy_bud_list(c);
diff --git a/fs/ubifs/sb.c b/fs/ubifs/sb.c
index 2bf753b38889..0f392351dc5a 100644
--- a/fs/ubifs/sb.c
+++ b/fs/ubifs/sb.c
@@ -81,6 +81,7 @@ static int create_default_filesystem(struct ubifs_info *c)
81 int lpt_lebs, lpt_first, orph_lebs, big_lpt, ino_waste, sup_flags = 0; 81 int lpt_lebs, lpt_first, orph_lebs, big_lpt, ino_waste, sup_flags = 0;
82 int min_leb_cnt = UBIFS_MIN_LEB_CNT; 82 int min_leb_cnt = UBIFS_MIN_LEB_CNT;
83 uint64_t tmp64, main_bytes; 83 uint64_t tmp64, main_bytes;
84 __le64 tmp_le64;
84 85
85 /* Some functions called from here depend on the @c->key_len filed */ 86 /* Some functions called from here depend on the @c->key_len filed */
86 c->key_len = UBIFS_SK_LEN; 87 c->key_len = UBIFS_SK_LEN;
@@ -295,10 +296,10 @@ static int create_default_filesystem(struct ubifs_info *c)
295 ino->ch.node_type = UBIFS_INO_NODE; 296 ino->ch.node_type = UBIFS_INO_NODE;
296 ino->creat_sqnum = cpu_to_le64(++c->max_sqnum); 297 ino->creat_sqnum = cpu_to_le64(++c->max_sqnum);
297 ino->nlink = cpu_to_le32(2); 298 ino->nlink = cpu_to_le32(2);
298 tmp = cpu_to_le64(CURRENT_TIME_SEC.tv_sec); 299 tmp_le64 = cpu_to_le64(CURRENT_TIME_SEC.tv_sec);
299 ino->atime_sec = tmp; 300 ino->atime_sec = tmp_le64;
300 ino->ctime_sec = tmp; 301 ino->ctime_sec = tmp_le64;
301 ino->mtime_sec = tmp; 302 ino->mtime_sec = tmp_le64;
302 ino->atime_nsec = 0; 303 ino->atime_nsec = 0;
303 ino->ctime_nsec = 0; 304 ino->ctime_nsec = 0;
304 ino->mtime_nsec = 0; 305 ino->mtime_nsec = 0;
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index 8780efbf40ac..d80b2aef42b6 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -36,6 +36,12 @@
36#include <linux/mount.h> 36#include <linux/mount.h>
37#include "ubifs.h" 37#include "ubifs.h"
38 38
39/*
40 * Maximum amount of memory we may 'kmalloc()' without worrying that we are
41 * allocating too much.
42 */
43#define UBIFS_KMALLOC_OK (128*1024)
44
39/* Slab cache for UBIFS inodes */ 45/* Slab cache for UBIFS inodes */
40struct kmem_cache *ubifs_inode_slab; 46struct kmem_cache *ubifs_inode_slab;
41 47
@@ -561,18 +567,11 @@ static int init_constants_early(struct ubifs_info *c)
561 * calculations when reporting free space. 567 * calculations when reporting free space.
562 */ 568 */
563 c->leb_overhead = c->leb_size % UBIFS_MAX_DATA_NODE_SZ; 569 c->leb_overhead = c->leb_size % UBIFS_MAX_DATA_NODE_SZ;
564 /* Buffer size for bulk-reads */
565 c->bulk_read_buf_size = UBIFS_MAX_BULK_READ * UBIFS_MAX_DATA_NODE_SZ;
566 if (c->bulk_read_buf_size > c->leb_size)
567 c->bulk_read_buf_size = c->leb_size;
568 if (c->bulk_read_buf_size > 128 * 1024) {
569 /* Check if we can kmalloc more than 128KiB */
570 void *try = kmalloc(c->bulk_read_buf_size, GFP_KERNEL);
571 570
572 kfree(try); 571 /* Buffer size for bulk-reads */
573 if (!try) 572 c->max_bu_buf_len = UBIFS_MAX_BULK_READ * UBIFS_MAX_DATA_NODE_SZ;
574 c->bulk_read_buf_size = 128 * 1024; 573 if (c->max_bu_buf_len > c->leb_size)
575 } 574 c->max_bu_buf_len = c->leb_size;
576 return 0; 575 return 0;
577} 576}
578 577
@@ -992,6 +991,34 @@ static void destroy_journal(struct ubifs_info *c)
992} 991}
993 992
994/** 993/**
994 * bu_init - initialize bulk-read information.
995 * @c: UBIFS file-system description object
996 */
997static void bu_init(struct ubifs_info *c)
998{
999 ubifs_assert(c->bulk_read == 1);
1000
1001 if (c->bu.buf)
1002 return; /* Already initialized */
1003
1004again:
1005 c->bu.buf = kmalloc(c->max_bu_buf_len, GFP_KERNEL | __GFP_NOWARN);
1006 if (!c->bu.buf) {
1007 if (c->max_bu_buf_len > UBIFS_KMALLOC_OK) {
1008 c->max_bu_buf_len = UBIFS_KMALLOC_OK;
1009 goto again;
1010 }
1011
1012 /* Just disable bulk-read */
1013 ubifs_warn("Cannot allocate %d bytes of memory for bulk-read, "
1014 "disabling it", c->max_bu_buf_len);
1015 c->mount_opts.bulk_read = 1;
1016 c->bulk_read = 0;
1017 return;
1018 }
1019}
1020
1021/**
995 * mount_ubifs - mount UBIFS file-system. 1022 * mount_ubifs - mount UBIFS file-system.
996 * @c: UBIFS file-system description object 1023 * @c: UBIFS file-system description object
997 * 1024 *
@@ -1059,6 +1086,13 @@ static int mount_ubifs(struct ubifs_info *c)
1059 goto out_free; 1086 goto out_free;
1060 } 1087 }
1061 1088
1089 if (c->bulk_read == 1)
1090 bu_init(c);
1091
1092 /*
1093 * We have to check all CRCs, even for data nodes, when we mount the FS
1094 * (specifically, when we are replaying).
1095 */
1062 c->always_chk_crc = 1; 1096 c->always_chk_crc = 1;
1063 1097
1064 err = ubifs_read_superblock(c); 1098 err = ubifs_read_superblock(c);
@@ -1289,6 +1323,7 @@ out_cbuf:
1289out_dereg: 1323out_dereg:
1290 dbg_failure_mode_deregistration(c); 1324 dbg_failure_mode_deregistration(c);
1291out_free: 1325out_free:
1326 kfree(c->bu.buf);
1292 vfree(c->ileb_buf); 1327 vfree(c->ileb_buf);
1293 vfree(c->sbuf); 1328 vfree(c->sbuf);
1294 kfree(c->bottom_up_buf); 1329 kfree(c->bottom_up_buf);
@@ -1325,10 +1360,11 @@ static void ubifs_umount(struct ubifs_info *c)
1325 kfree(c->cbuf); 1360 kfree(c->cbuf);
1326 kfree(c->rcvrd_mst_node); 1361 kfree(c->rcvrd_mst_node);
1327 kfree(c->mst_node); 1362 kfree(c->mst_node);
1363 kfree(c->bu.buf);
1364 vfree(c->ileb_buf);
1328 vfree(c->sbuf); 1365 vfree(c->sbuf);
1329 kfree(c->bottom_up_buf); 1366 kfree(c->bottom_up_buf);
1330 UBIFS_DBG(vfree(c->dbg_buf)); 1367 UBIFS_DBG(vfree(c->dbg_buf));
1331 vfree(c->ileb_buf);
1332 dbg_failure_mode_deregistration(c); 1368 dbg_failure_mode_deregistration(c);
1333} 1369}
1334 1370
@@ -1626,6 +1662,7 @@ static int ubifs_remount_fs(struct super_block *sb, int *flags, char *data)
1626 ubifs_err("invalid or unknown remount parameter"); 1662 ubifs_err("invalid or unknown remount parameter");
1627 return err; 1663 return err;
1628 } 1664 }
1665
1629 if ((sb->s_flags & MS_RDONLY) && !(*flags & MS_RDONLY)) { 1666 if ((sb->s_flags & MS_RDONLY) && !(*flags & MS_RDONLY)) {
1630 err = ubifs_remount_rw(c); 1667 err = ubifs_remount_rw(c);
1631 if (err) 1668 if (err)
@@ -1633,6 +1670,14 @@ static int ubifs_remount_fs(struct super_block *sb, int *flags, char *data)
1633 } else if (!(sb->s_flags & MS_RDONLY) && (*flags & MS_RDONLY)) 1670 } else if (!(sb->s_flags & MS_RDONLY) && (*flags & MS_RDONLY))
1634 ubifs_remount_ro(c); 1671 ubifs_remount_ro(c);
1635 1672
1673 if (c->bulk_read == 1)
1674 bu_init(c);
1675 else {
1676 dbg_gen("disable bulk-read");
1677 kfree(c->bu.buf);
1678 c->bu.buf = NULL;
1679 }
1680
1636 return 0; 1681 return 0;
1637} 1682}
1638 1683
@@ -1723,6 +1768,7 @@ static int ubifs_fill_super(struct super_block *sb, void *data, int silent)
1723 mutex_init(&c->log_mutex); 1768 mutex_init(&c->log_mutex);
1724 mutex_init(&c->mst_mutex); 1769 mutex_init(&c->mst_mutex);
1725 mutex_init(&c->umount_mutex); 1770 mutex_init(&c->umount_mutex);
1771 mutex_init(&c->bu_mutex);
1726 init_waitqueue_head(&c->cmt_wq); 1772 init_waitqueue_head(&c->cmt_wq);
1727 c->buds = RB_ROOT; 1773 c->buds = RB_ROOT;
1728 c->old_idx = RB_ROOT; 1774 c->old_idx = RB_ROOT;
diff --git a/fs/ubifs/tnc.c b/fs/ubifs/tnc.c
index d27fd918b9c9..6eef5344a145 100644
--- a/fs/ubifs/tnc.c
+++ b/fs/ubifs/tnc.c
@@ -1501,7 +1501,12 @@ out:
1501 * @bu: bulk-read parameters and results 1501 * @bu: bulk-read parameters and results
1502 * 1502 *
1503 * Lookup consecutive data node keys for the same inode that reside 1503 * Lookup consecutive data node keys for the same inode that reside
1504 * consecutively in the same LEB. 1504 * consecutively in the same LEB. This function returns zero in case of success
1505 * and a negative error code in case of failure.
1506 *
1507 * Note, if the bulk-read buffer length (@bu->buf_len) is known, this function
1508 * makes sure bulk-read nodes fit the buffer. Otherwise, this function prepares
1509 * maxumum possible amount of nodes for bulk-read.
1505 */ 1510 */
1506int ubifs_tnc_get_bu_keys(struct ubifs_info *c, struct bu_info *bu) 1511int ubifs_tnc_get_bu_keys(struct ubifs_info *c, struct bu_info *bu)
1507{ 1512{
@@ -2677,7 +2682,7 @@ int ubifs_tnc_remove_ino(struct ubifs_info *c, ino_t inum)
2677 struct ubifs_dent_node *xent, *pxent = NULL; 2682 struct ubifs_dent_node *xent, *pxent = NULL;
2678 struct qstr nm = { .name = NULL }; 2683 struct qstr nm = { .name = NULL };
2679 2684
2680 dbg_tnc("ino %lu", inum); 2685 dbg_tnc("ino %lu", (unsigned long)inum);
2681 2686
2682 /* 2687 /*
2683 * Walk all extended attribute entries and remove them together with 2688 * Walk all extended attribute entries and remove them together with
@@ -2697,7 +2702,8 @@ int ubifs_tnc_remove_ino(struct ubifs_info *c, ino_t inum)
2697 } 2702 }
2698 2703
2699 xattr_inum = le64_to_cpu(xent->inum); 2704 xattr_inum = le64_to_cpu(xent->inum);
2700 dbg_tnc("xent '%s', ino %lu", xent->name, xattr_inum); 2705 dbg_tnc("xent '%s', ino %lu", xent->name,
2706 (unsigned long)xattr_inum);
2701 2707
2702 nm.name = xent->name; 2708 nm.name = xent->name;
2703 nm.len = le16_to_cpu(xent->nlen); 2709 nm.len = le16_to_cpu(xent->nlen);
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
index a7bd32fa15b9..46b172560a06 100644
--- a/fs/ubifs/ubifs.h
+++ b/fs/ubifs/ubifs.h
@@ -753,7 +753,7 @@ struct ubifs_znode {
753}; 753};
754 754
755/** 755/**
756 * struct bu_info - bulk-read information 756 * struct bu_info - bulk-read information.
757 * @key: first data node key 757 * @key: first data node key
758 * @zbranch: zbranches of data nodes to bulk read 758 * @zbranch: zbranches of data nodes to bulk read
759 * @buf: buffer to read into 759 * @buf: buffer to read into
@@ -969,7 +969,10 @@ struct ubifs_mount_opts {
969 * @mst_node: master node 969 * @mst_node: master node
970 * @mst_offs: offset of valid master node 970 * @mst_offs: offset of valid master node
971 * @mst_mutex: protects the master node area, @mst_node, and @mst_offs 971 * @mst_mutex: protects the master node area, @mst_node, and @mst_offs
972 * @bulk_read_buf_size: buffer size for bulk-reads 972 *
973 * @max_bu_buf_len: maximum bulk-read buffer length
974 * @bu_mutex: protects the pre-allocated bulk-read buffer and @c->bu
975 * @bu: pre-allocated bulk-read information
973 * 976 *
974 * @log_lebs: number of logical eraseblocks in the log 977 * @log_lebs: number of logical eraseblocks in the log
975 * @log_bytes: log size in bytes 978 * @log_bytes: log size in bytes
@@ -1217,7 +1220,10 @@ struct ubifs_info {
1217 struct ubifs_mst_node *mst_node; 1220 struct ubifs_mst_node *mst_node;
1218 int mst_offs; 1221 int mst_offs;
1219 struct mutex mst_mutex; 1222 struct mutex mst_mutex;
1220 int bulk_read_buf_size; 1223
1224 int max_bu_buf_len;
1225 struct mutex bu_mutex;
1226 struct bu_info bu;
1221 1227
1222 int log_lebs; 1228 int log_lebs;
1223 long long log_bytes; 1229 long long log_bytes;
diff --git a/fs/xfs/xfs_rename.c b/fs/xfs/xfs_rename.c
index d700dacdb10e..c903130be7fd 100644
--- a/fs/xfs/xfs_rename.c
+++ b/fs/xfs/xfs_rename.c
@@ -212,7 +212,7 @@ xfs_rename(
212 if (unlikely((target_dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) && 212 if (unlikely((target_dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) &&
213 (target_dp->i_d.di_projid != src_ip->i_d.di_projid))) { 213 (target_dp->i_d.di_projid != src_ip->i_d.di_projid))) {
214 error = XFS_ERROR(EXDEV); 214 error = XFS_ERROR(EXDEV);
215 xfs_rename_unlock4(inodes, XFS_ILOCK_SHARED); 215 xfs_rename_unlock4(inodes, XFS_ILOCK_EXCL);
216 xfs_trans_cancel(tp, cancel_flags); 216 xfs_trans_cancel(tp, cancel_flags);
217 goto std_return; 217 goto std_return;
218 } 218 }
diff --git a/include/asm-generic/atomic.h b/include/asm-generic/atomic.h
index 4ec0a296bdec..7abdaa91ccd3 100644
--- a/include/asm-generic/atomic.h
+++ b/include/asm-generic/atomic.h
@@ -251,7 +251,7 @@ static inline long atomic_long_add_unless(atomic_long_t *l, long a, long u)
251#define atomic_long_cmpxchg(l, old, new) \ 251#define atomic_long_cmpxchg(l, old, new) \
252 (atomic_cmpxchg((atomic_t *)(l), (old), (new))) 252 (atomic_cmpxchg((atomic_t *)(l), (old), (new)))
253#define atomic_long_xchg(v, new) \ 253#define atomic_long_xchg(v, new) \
254 (atomic_xchg((atomic_t *)(l), (new))) 254 (atomic_xchg((atomic_t *)(v), (new)))
255 255
256#endif /* BITS_PER_LONG == 64 */ 256#endif /* BITS_PER_LONG == 64 */
257 257
diff --git a/include/asm-generic/audit_write.h b/include/asm-generic/audit_write.h
index f10d367fb2a5..c5f1c2c920e2 100644
--- a/include/asm-generic/audit_write.h
+++ b/include/asm-generic/audit_write.h
@@ -1,6 +1,8 @@
1#include <asm-generic/audit_dir_write.h> 1#include <asm-generic/audit_dir_write.h>
2__NR_acct, 2__NR_acct,
3#ifdef __NR_swapon
3__NR_swapon, 4__NR_swapon,
5#endif
4__NR_quotactl, 6__NR_quotactl,
5__NR_truncate, 7__NR_truncate,
6#ifdef __NR_truncate64 8#ifdef __NR_truncate64
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
index 12c07c1866b2..4c794d73fb84 100644
--- a/include/asm-generic/bug.h
+++ b/include/asm-generic/bug.h
@@ -8,9 +8,17 @@
8#ifdef CONFIG_GENERIC_BUG 8#ifdef CONFIG_GENERIC_BUG
9#ifndef __ASSEMBLY__ 9#ifndef __ASSEMBLY__
10struct bug_entry { 10struct bug_entry {
11#ifndef CONFIG_GENERIC_BUG_RELATIVE_POINTERS
11 unsigned long bug_addr; 12 unsigned long bug_addr;
13#else
14 signed int bug_addr_disp;
15#endif
12#ifdef CONFIG_DEBUG_BUGVERBOSE 16#ifdef CONFIG_DEBUG_BUGVERBOSE
17#ifndef CONFIG_GENERIC_BUG_RELATIVE_POINTERS
13 const char *file; 18 const char *file;
19#else
20 signed int file_disp;
21#endif
14 unsigned short line; 22 unsigned short line;
15#endif 23#endif
16 unsigned short flags; 24 unsigned short flags;
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
index ef87f889ef62..72ebe91005a8 100644
--- a/include/asm-generic/pgtable.h
+++ b/include/asm-generic/pgtable.h
@@ -129,6 +129,10 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addres
129#define move_pte(pte, prot, old_addr, new_addr) (pte) 129#define move_pte(pte, prot, old_addr, new_addr) (pte)
130#endif 130#endif
131 131
132#ifndef pgprot_writecombine
133#define pgprot_writecombine pgprot_noncached
134#endif
135
132/* 136/*
133 * When walking page tables, get the address of the next boundary, 137 * When walking page tables, get the address of the next boundary,
134 * or the end address of the range if that comes earlier. Although no 138 * or the end address of the range if that comes earlier. Although no
@@ -289,6 +293,52 @@ static inline void ptep_modify_prot_commit(struct mm_struct *mm,
289#define arch_flush_lazy_cpu_mode() do {} while (0) 293#define arch_flush_lazy_cpu_mode() do {} while (0)
290#endif 294#endif
291 295
296#ifndef __HAVE_PFNMAP_TRACKING
297/*
298 * Interface that can be used by architecture code to keep track of
299 * memory type of pfn mappings (remap_pfn_range, vm_insert_pfn)
300 *
301 * track_pfn_vma_new is called when a _new_ pfn mapping is being established
302 * for physical range indicated by pfn and size.
303 */
304static inline int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t prot,
305 unsigned long pfn, unsigned long size)
306{
307 return 0;
308}
309
310/*
311 * Interface that can be used by architecture code to keep track of
312 * memory type of pfn mappings (remap_pfn_range, vm_insert_pfn)
313 *
314 * track_pfn_vma_copy is called when vma that is covering the pfnmap gets
315 * copied through copy_page_range().
316 */
317static inline int track_pfn_vma_copy(struct vm_area_struct *vma)
318{
319 return 0;
320}
321
322/*
323 * Interface that can be used by architecture code to keep track of
324 * memory type of pfn mappings (remap_pfn_range, vm_insert_pfn)
325 *
326 * untrack_pfn_vma is called while unmapping a pfnmap for a region.
327 * untrack can be called for a specific region indicated by pfn and size or
328 * can be for the entire vma (in which case size can be zero).
329 */
330static inline void untrack_pfn_vma(struct vm_area_struct *vma,
331 unsigned long pfn, unsigned long size)
332{
333}
334#else
335extern int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t prot,
336 unsigned long pfn, unsigned long size);
337extern int track_pfn_vma_copy(struct vm_area_struct *vma);
338extern void untrack_pfn_vma(struct vm_area_struct *vma, unsigned long pfn,
339 unsigned long size);
340#endif
341
292#endif /* !__ASSEMBLY__ */ 342#endif /* !__ASSEMBLY__ */
293 343
294#endif /* _ASM_GENERIC_PGTABLE_H */ 344#endif /* _ASM_GENERIC_PGTABLE_H */
diff --git a/include/asm-mn10300/uaccess.h b/include/asm-mn10300/uaccess.h
index 46b9b647f3c3..8a3a4dd55763 100644
--- a/include/asm-mn10300/uaccess.h
+++ b/include/asm-mn10300/uaccess.h
@@ -266,7 +266,7 @@ extern int __get_user_unknown(void);
266 " .section .fixup,\"ax\" \n" \ 266 " .section .fixup,\"ax\" \n" \
267 "4: \n" \ 267 "4: \n" \
268 " mov %5,%0 \n" \ 268 " mov %5,%0 \n" \
269 " jmp 2b \n" \ 269 " jmp 3b \n" \
270 " .previous \n" \ 270 " .previous \n" \
271 " .section __ex_table,\"a\"\n" \ 271 " .section __ex_table,\"a\"\n" \
272 " .balign 4 \n" \ 272 " .balign 4 \n" \
diff --git a/include/linux/audit.h b/include/linux/audit.h
index 6272a395d43c..8f0672d13eb1 100644
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -391,6 +391,7 @@ extern int audit_classify_arch(int arch);
391#ifdef CONFIG_AUDITSYSCALL 391#ifdef CONFIG_AUDITSYSCALL
392/* These are defined in auditsc.c */ 392/* These are defined in auditsc.c */
393 /* Public API */ 393 /* Public API */
394extern void audit_finish_fork(struct task_struct *child);
394extern int audit_alloc(struct task_struct *task); 395extern int audit_alloc(struct task_struct *task);
395extern void audit_free(struct task_struct *task); 396extern void audit_free(struct task_struct *task);
396extern void audit_syscall_entry(int arch, 397extern void audit_syscall_entry(int arch,
@@ -434,7 +435,7 @@ static inline void audit_ptrace(struct task_struct *t)
434 435
435 /* Private API (for audit.c only) */ 436 /* Private API (for audit.c only) */
436extern unsigned int audit_serial(void); 437extern unsigned int audit_serial(void);
437extern void auditsc_get_stamp(struct audit_context *ctx, 438extern int auditsc_get_stamp(struct audit_context *ctx,
438 struct timespec *t, unsigned int *serial); 439 struct timespec *t, unsigned int *serial);
439extern int audit_set_loginuid(struct task_struct *task, uid_t loginuid); 440extern int audit_set_loginuid(struct task_struct *task, uid_t loginuid);
440#define audit_get_loginuid(t) ((t)->loginuid) 441#define audit_get_loginuid(t) ((t)->loginuid)
@@ -504,6 +505,7 @@ static inline int audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat)
504extern int audit_n_rules; 505extern int audit_n_rules;
505extern int audit_signals; 506extern int audit_signals;
506#else 507#else
508#define audit_finish_fork(t)
507#define audit_alloc(t) ({ 0; }) 509#define audit_alloc(t) ({ 0; })
508#define audit_free(t) do { ; } while (0) 510#define audit_free(t) do { ; } while (0)
509#define audit_syscall_entry(ta,a,b,c,d,e) do { ; } while (0) 511#define audit_syscall_entry(ta,a,b,c,d,e) do { ; } while (0)
@@ -516,7 +518,7 @@ extern int audit_signals;
516#define audit_inode(n,d) do { ; } while (0) 518#define audit_inode(n,d) do { ; } while (0)
517#define audit_inode_child(d,i,p) do { ; } while (0) 519#define audit_inode_child(d,i,p) do { ; } while (0)
518#define audit_core_dumps(i) do { ; } while (0) 520#define audit_core_dumps(i) do { ; } while (0)
519#define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) 521#define auditsc_get_stamp(c,t,s) (0)
520#define audit_get_loginuid(t) (-1) 522#define audit_get_loginuid(t) (-1)
521#define audit_get_sessionid(t) (-1) 523#define audit_get_sessionid(t) (-1)
522#define audit_log_task_context(b) do { ; } while (0) 524#define audit_log_task_context(b) do { ; } while (0)
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index a135256b272c..031a315c0509 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -662,6 +662,7 @@ extern unsigned long blk_max_low_pfn, blk_max_pfn;
662 * default timeout for SG_IO if none specified 662 * default timeout for SG_IO if none specified
663 */ 663 */
664#define BLK_DEFAULT_SG_TIMEOUT (60 * HZ) 664#define BLK_DEFAULT_SG_TIMEOUT (60 * HZ)
665#define BLK_MIN_SG_TIMEOUT (7 * HZ)
665 666
666#ifdef CONFIG_BOUNCE 667#ifdef CONFIG_BOUNCE
667extern int init_emergency_isa_pool(void); 668extern int init_emergency_isa_pool(void);
@@ -786,6 +787,8 @@ static inline void blk_run_address_space(struct address_space *mapping)
786 blk_run_backing_dev(mapping->backing_dev_info, NULL); 787 blk_run_backing_dev(mapping->backing_dev_info, NULL);
787} 788}
788 789
790extern void blkdev_dequeue_request(struct request *req);
791
789/* 792/*
790 * blk_end_request() and friends. 793 * blk_end_request() and friends.
791 * __blk_end_request() and end_request() must be called with 794 * __blk_end_request() and end_request() must be called with
@@ -820,11 +823,6 @@ extern void blk_update_request(struct request *rq, int error,
820extern unsigned int blk_rq_bytes(struct request *rq); 823extern unsigned int blk_rq_bytes(struct request *rq);
821extern unsigned int blk_rq_cur_bytes(struct request *rq); 824extern unsigned int blk_rq_cur_bytes(struct request *rq);
822 825
823static inline void blkdev_dequeue_request(struct request *req)
824{
825 elv_dequeue_request(req->q, req);
826}
827
828/* 826/*
829 * Access functions for manipulating queue properties 827 * Access functions for manipulating queue properties
830 */ 828 */
@@ -921,6 +919,8 @@ extern void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter);
921 919
922#define MAX_SEGMENT_SIZE 65536 920#define MAX_SEGMENT_SIZE 65536
923 921
922#define BLK_SEG_BOUNDARY_MASK 0xFFFFFFFFUL
923
924#define blkdev_entry_to_request(entry) list_entry((entry), struct request, queuelist) 924#define blkdev_entry_to_request(entry) list_entry((entry), struct request, queuelist)
925 925
926static inline int queue_hardsect_size(struct request_queue *q) 926static inline int queue_hardsect_size(struct request_queue *q)
diff --git a/include/linux/can/core.h b/include/linux/can/core.h
index e9ca210ffa5b..f50785ad4781 100644
--- a/include/linux/can/core.h
+++ b/include/linux/can/core.h
@@ -19,7 +19,7 @@
19#include <linux/skbuff.h> 19#include <linux/skbuff.h>
20#include <linux/netdevice.h> 20#include <linux/netdevice.h>
21 21
22#define CAN_VERSION "20071116" 22#define CAN_VERSION "20081130"
23 23
24/* increment this number each time you change some user-space interface */ 24/* increment this number each time you change some user-space interface */
25#define CAN_ABI_VERSION "8" 25#define CAN_ABI_VERSION "8"
diff --git a/include/linux/dmi.h b/include/linux/dmi.h
index e5084eb5943a..2bfda178f274 100644
--- a/include/linux/dmi.h
+++ b/include/linux/dmi.h
@@ -44,6 +44,7 @@ extern const struct dmi_device * dmi_find_device(int type, const char *name,
44extern void dmi_scan_machine(void); 44extern void dmi_scan_machine(void);
45extern int dmi_get_year(int field); 45extern int dmi_get_year(int field);
46extern int dmi_name_in_vendors(const char *str); 46extern int dmi_name_in_vendors(const char *str);
47extern int dmi_name_in_serial(const char *str);
47extern int dmi_available; 48extern int dmi_available;
48extern int dmi_walk(void (*decode)(const struct dmi_header *)); 49extern int dmi_walk(void (*decode)(const struct dmi_header *));
49 50
@@ -56,6 +57,7 @@ static inline const struct dmi_device * dmi_find_device(int type, const char *na
56static inline void dmi_scan_machine(void) { return; } 57static inline void dmi_scan_machine(void) { return; }
57static inline int dmi_get_year(int year) { return 0; } 58static inline int dmi_get_year(int year) { return 0; }
58static inline int dmi_name_in_vendors(const char *s) { return 0; } 59static inline int dmi_name_in_vendors(const char *s) { return 0; }
60static inline int dmi_name_in_serial(const char *s) { return 0; }
59#define dmi_available 0 61#define dmi_available 0
60static inline int dmi_walk(void (*decode)(const struct dmi_header *)) 62static inline int dmi_walk(void (*decode)(const struct dmi_header *))
61 { return -1; } 63 { return -1; }
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 0dcdd9458f4b..4a853ef6fd35 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -63,23 +63,24 @@ extern int dir_notify_enable;
63#define MAY_ACCESS 16 63#define MAY_ACCESS 16
64#define MAY_OPEN 32 64#define MAY_OPEN 32
65 65
66#define FMODE_READ ((__force fmode_t)1) 66/* file is open for reading */
67#define FMODE_WRITE ((__force fmode_t)2) 67#define FMODE_READ ((__force fmode_t)1)
68 68/* file is open for writing */
69/* Internal kernel extensions */ 69#define FMODE_WRITE ((__force fmode_t)2)
70#define FMODE_LSEEK ((__force fmode_t)4) 70/* file is seekable */
71#define FMODE_PREAD ((__force fmode_t)8) 71#define FMODE_LSEEK ((__force fmode_t)4)
72#define FMODE_PWRITE FMODE_PREAD /* These go hand in hand */ 72/* file can be accessed using pread/pwrite */
73 73#define FMODE_PREAD ((__force fmode_t)8)
74/* File is being opened for execution. Primary users of this flag are 74#define FMODE_PWRITE FMODE_PREAD /* These go hand in hand */
75 distributed filesystems that can use it to achieve correct ETXTBUSY 75/* File is opened for execution with sys_execve / sys_uselib */
76 behavior for cross-node execution/opening_for_writing of files */ 76#define FMODE_EXEC ((__force fmode_t)16)
77#define FMODE_EXEC ((__force fmode_t)16) 77/* File is opened with O_NDELAY (only set for block devices) */
78 78#define FMODE_NDELAY ((__force fmode_t)32)
79#define FMODE_NDELAY ((__force fmode_t)32) 79/* File is opened with O_EXCL (only set for block devices) */
80#define FMODE_EXCL ((__force fmode_t)64) 80#define FMODE_EXCL ((__force fmode_t)64)
81/* File is opened using open(.., 3, ..) and is writeable only for ioctls
82 (specialy hack for floppy.c) */
81#define FMODE_WRITE_IOCTL ((__force fmode_t)128) 83#define FMODE_WRITE_IOCTL ((__force fmode_t)128)
82#define FMODE_NDELAY_NOW ((__force fmode_t)256)
83 84
84#define RW_MASK 1 85#define RW_MASK 1
85#define RWA_MASK 2 86#define RWA_MASK 2
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 703eb53cfa2b..9c5bc6be2b09 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -6,6 +6,7 @@
6#include <linux/ktime.h> 6#include <linux/ktime.h>
7#include <linux/init.h> 7#include <linux/init.h>
8#include <linux/types.h> 8#include <linux/types.h>
9#include <linux/module.h>
9#include <linux/kallsyms.h> 10#include <linux/kallsyms.h>
10 11
11#ifdef CONFIG_FUNCTION_TRACER 12#ifdef CONFIG_FUNCTION_TRACER
@@ -231,7 +232,7 @@ ftrace_init_module(unsigned long *start, unsigned long *end) { }
231 232
232struct boot_trace { 233struct boot_trace {
233 pid_t caller; 234 pid_t caller;
234 char func[KSYM_NAME_LEN]; 235 char func[KSYM_SYMBOL_LEN];
235 int result; 236 int result;
236 unsigned long long duration; /* usecs */ 237 unsigned long long duration; /* usecs */
237 ktime_t calltime; 238 ktime_t calltime;
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 54525be4b5f8..010fb26a1579 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -1296,6 +1296,13 @@ extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *o
1296#define ide_pci_register_driver(d) pci_register_driver(d) 1296#define ide_pci_register_driver(d) pci_register_driver(d)
1297#endif 1297#endif
1298 1298
1299static inline int ide_pci_is_in_compatibility_mode(struct pci_dev *dev)
1300{
1301 if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE && (dev->class & 5) != 5)
1302 return 1;
1303 return 0;
1304}
1305
1299void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *, int, 1306void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *, int,
1300 hw_regs_t *, hw_regs_t **); 1307 hw_regs_t *, hw_regs_t **);
1301void ide_setup_pci_noise(struct pci_dev *, const struct ide_port_info *); 1308void ide_setup_pci_noise(struct pci_dev *, const struct ide_port_info *);
@@ -1375,6 +1382,7 @@ enum {
1375 IDE_HFLAG_IO_32BIT = (1 << 24), 1382 IDE_HFLAG_IO_32BIT = (1 << 24),
1376 /* unmask IRQs */ 1383 /* unmask IRQs */
1377 IDE_HFLAG_UNMASK_IRQS = (1 << 25), 1384 IDE_HFLAG_UNMASK_IRQS = (1 << 25),
1385 IDE_HFLAG_BROKEN_ALTSTATUS = (1 << 26),
1378 /* serialize ports if DMA is possible (for sl82c105) */ 1386 /* serialize ports if DMA is possible (for sl82c105) */
1379 IDE_HFLAG_SERIALIZE_DMA = (1 << 27), 1387 IDE_HFLAG_SERIALIZE_DMA = (1 << 27),
1380 /* force host out of "simplex" mode */ 1388 /* force host out of "simplex" mode */
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index 17f76fc05173..adc34f2c6eff 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -100,6 +100,10 @@ struct kimage {
100#define KEXEC_TYPE_DEFAULT 0 100#define KEXEC_TYPE_DEFAULT 0
101#define KEXEC_TYPE_CRASH 1 101#define KEXEC_TYPE_CRASH 1
102 unsigned int preserve_context : 1; 102 unsigned int preserve_context : 1;
103
104#ifdef ARCH_HAS_KIMAGE_ARCH
105 struct kimage_arch arch;
106#endif
103}; 107};
104 108
105 109
diff --git a/include/linux/mm.h b/include/linux/mm.h
index ffee2f743418..d3ddd735e375 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -145,6 +145,23 @@ extern pgprot_t protection_map[16];
145#define FAULT_FLAG_WRITE 0x01 /* Fault was a write access */ 145#define FAULT_FLAG_WRITE 0x01 /* Fault was a write access */
146#define FAULT_FLAG_NONLINEAR 0x02 /* Fault was via a nonlinear mapping */ 146#define FAULT_FLAG_NONLINEAR 0x02 /* Fault was via a nonlinear mapping */
147 147
148/*
149 * This interface is used by x86 PAT code to identify a pfn mapping that is
150 * linear over entire vma. This is to optimize PAT code that deals with
151 * marking the physical region with a particular prot. This is not for generic
152 * mm use. Note also that this check will not work if the pfn mapping is
153 * linear for a vma starting at physical address 0. In which case PAT code
154 * falls back to slow path of reserving physical range page by page.
155 */
156static inline int is_linear_pfn_mapping(struct vm_area_struct *vma)
157{
158 return ((vma->vm_flags & VM_PFNMAP) && vma->vm_pgoff);
159}
160
161static inline int is_pfn_mapping(struct vm_area_struct *vma)
162{
163 return (vma->vm_flags & VM_PFNMAP);
164}
148 165
149/* 166/*
150 * vm_fault is filled by the the pagefault handler and passed to the vma's 167 * vm_fault is filled by the the pagefault handler and passed to the vma's
@@ -781,6 +798,8 @@ int copy_page_range(struct mm_struct *dst, struct mm_struct *src,
781 struct vm_area_struct *vma); 798 struct vm_area_struct *vma);
782void unmap_mapping_range(struct address_space *mapping, 799void unmap_mapping_range(struct address_space *mapping,
783 loff_t const holebegin, loff_t const holelen, int even_cows); 800 loff_t const holebegin, loff_t const holelen, int even_cows);
801int follow_phys(struct vm_area_struct *vma, unsigned long address,
802 unsigned int flags, unsigned long *prot, resource_size_t *phys);
784int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, 803int generic_access_phys(struct vm_area_struct *vma, unsigned long addr,
785 void *buf, int len, int write); 804 void *buf, int len, int write);
786 805
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 9d77b1d7dca8..e26f54952892 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -319,6 +319,7 @@ enum
319{ 319{
320 NAPI_STATE_SCHED, /* Poll is scheduled */ 320 NAPI_STATE_SCHED, /* Poll is scheduled */
321 NAPI_STATE_DISABLE, /* Disable pending */ 321 NAPI_STATE_DISABLE, /* Disable pending */
322 NAPI_STATE_NPSVC, /* Netpoll - don't dequeue from poll_list */
322}; 323};
323 324
324extern void __napi_schedule(struct napi_struct *n); 325extern void __napi_schedule(struct napi_struct *n);
@@ -1497,6 +1498,12 @@ static inline void netif_rx_complete(struct net_device *dev,
1497{ 1498{
1498 unsigned long flags; 1499 unsigned long flags;
1499 1500
1501 /*
1502 * don't let napi dequeue from the cpu poll list
1503 * just in case its running on a different cpu
1504 */
1505 if (unlikely(test_bit(NAPI_STATE_NPSVC, &napi->state)))
1506 return;
1500 local_irq_save(flags); 1507 local_irq_save(flags);
1501 __netif_rx_complete(dev, napi); 1508 __netif_rx_complete(dev, napi);
1502 local_irq_restore(flags); 1509 local_irq_restore(flags);
diff --git a/include/linux/netfilter/nfnetlink_conntrack.h b/include/linux/netfilter/nfnetlink_conntrack.h
index c19595c89304..29fe9ea1d346 100644
--- a/include/linux/netfilter/nfnetlink_conntrack.h
+++ b/include/linux/netfilter/nfnetlink_conntrack.h
@@ -141,6 +141,7 @@ enum ctattr_protonat {
141#define CTA_PROTONAT_MAX (__CTA_PROTONAT_MAX - 1) 141#define CTA_PROTONAT_MAX (__CTA_PROTONAT_MAX - 1)
142 142
143enum ctattr_natseq { 143enum ctattr_natseq {
144 CTA_NAT_SEQ_UNSPEC,
144 CTA_NAT_SEQ_CORRECTION_POS, 145 CTA_NAT_SEQ_CORRECTION_POS,
145 CTA_NAT_SEQ_OFFSET_BEFORE, 146 CTA_NAT_SEQ_OFFSET_BEFORE,
146 CTA_NAT_SEQ_OFFSET_AFTER, 147 CTA_NAT_SEQ_OFFSET_AFTER,
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h
index be41b609c88f..e52ce475d19f 100644
--- a/include/linux/netfilter/x_tables.h
+++ b/include/linux/netfilter/x_tables.h
@@ -251,7 +251,7 @@ struct xt_target_param {
251 */ 251 */
252struct xt_tgchk_param { 252struct xt_tgchk_param {
253 const char *table; 253 const char *table;
254 void *entryinfo; 254 const void *entryinfo;
255 const struct xt_target *target; 255 const struct xt_target *target;
256 void *targinfo; 256 void *targinfo;
257 unsigned int hook_mask; 257 unsigned int hook_mask;
diff --git a/include/linux/pci.h b/include/linux/pci.h
index feb4657bb043..03b0b8c3c81b 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -134,6 +134,11 @@ enum pci_dev_flags {
134 PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2, 134 PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2,
135}; 135};
136 136
137enum pci_irq_reroute_variant {
138 INTEL_IRQ_REROUTE_VARIANT = 1,
139 MAX_IRQ_REROUTE_VARIANTS = 3
140};
141
137typedef unsigned short __bitwise pci_bus_flags_t; 142typedef unsigned short __bitwise pci_bus_flags_t;
138enum pci_bus_flags { 143enum pci_bus_flags {
139 PCI_BUS_FLAGS_NO_MSI = (__force pci_bus_flags_t) 1, 144 PCI_BUS_FLAGS_NO_MSI = (__force pci_bus_flags_t) 1,
@@ -218,6 +223,7 @@ struct pci_dev {
218 unsigned int no_msi:1; /* device may not use msi */ 223 unsigned int no_msi:1; /* device may not use msi */
219 unsigned int block_ucfg_access:1; /* userspace config space access is blocked */ 224 unsigned int block_ucfg_access:1; /* userspace config space access is blocked */
220 unsigned int broken_parity_status:1; /* Device generates false positive parity */ 225 unsigned int broken_parity_status:1; /* Device generates false positive parity */
226 unsigned int irq_reroute_variant:2; /* device needs IRQ rerouting variant */
221 unsigned int msi_enabled:1; 227 unsigned int msi_enabled:1;
222 unsigned int msix_enabled:1; 228 unsigned int msix_enabled:1;
223 unsigned int ari_enabled:1; /* ARI forwarding */ 229 unsigned int ari_enabled:1; /* ARI forwarding */
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 1800f1d6e40d..b6e694454280 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2304,6 +2304,10 @@
2304#define PCI_DEVICE_ID_INTEL_PXH_0 0x0329 2304#define PCI_DEVICE_ID_INTEL_PXH_0 0x0329
2305#define PCI_DEVICE_ID_INTEL_PXH_1 0x032A 2305#define PCI_DEVICE_ID_INTEL_PXH_1 0x032A
2306#define PCI_DEVICE_ID_INTEL_PXHV 0x032C 2306#define PCI_DEVICE_ID_INTEL_PXHV 0x032C
2307#define PCI_DEVICE_ID_INTEL_80332_0 0x0330
2308#define PCI_DEVICE_ID_INTEL_80332_1 0x0332
2309#define PCI_DEVICE_ID_INTEL_80333_0 0x0370
2310#define PCI_DEVICE_ID_INTEL_80333_1 0x0372
2307#define PCI_DEVICE_ID_INTEL_82375 0x0482 2311#define PCI_DEVICE_ID_INTEL_82375 0x0482
2308#define PCI_DEVICE_ID_INTEL_82424 0x0483 2312#define PCI_DEVICE_ID_INTEL_82424 0x0483
2309#define PCI_DEVICE_ID_INTEL_82378 0x0484 2313#define PCI_DEVICE_ID_INTEL_82378 0x0484
@@ -2376,6 +2380,7 @@
2376#define PCI_DEVICE_ID_INTEL_ESB_4 0x25a4 2380#define PCI_DEVICE_ID_INTEL_ESB_4 0x25a4
2377#define PCI_DEVICE_ID_INTEL_ESB_5 0x25a6 2381#define PCI_DEVICE_ID_INTEL_ESB_5 0x25a6
2378#define PCI_DEVICE_ID_INTEL_ESB_9 0x25ab 2382#define PCI_DEVICE_ID_INTEL_ESB_9 0x25ab
2383#define PCI_DEVICE_ID_INTEL_ESB_10 0x25ac
2379#define PCI_DEVICE_ID_INTEL_82820_HB 0x2500 2384#define PCI_DEVICE_ID_INTEL_82820_HB 0x2500
2380#define PCI_DEVICE_ID_INTEL_82820_UP_HB 0x2501 2385#define PCI_DEVICE_ID_INTEL_82820_UP_HB 0x2501
2381#define PCI_DEVICE_ID_INTEL_82850_HB 0x2530 2386#define PCI_DEVICE_ID_INTEL_82850_HB 0x2530
diff --git a/include/linux/security.h b/include/linux/security.h
index c13f1cec9abb..e3d4ecda2673 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -1818,17 +1818,21 @@ static inline int security_settime(struct timespec *ts, struct timezone *tz)
1818 1818
1819static inline int security_vm_enough_memory(long pages) 1819static inline int security_vm_enough_memory(long pages)
1820{ 1820{
1821 WARN_ON(current->mm == NULL);
1821 return cap_vm_enough_memory(current->mm, pages); 1822 return cap_vm_enough_memory(current->mm, pages);
1822} 1823}
1823 1824
1824static inline int security_vm_enough_memory_kern(long pages) 1825static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages)
1825{ 1826{
1826 return cap_vm_enough_memory(current->mm, pages); 1827 WARN_ON(mm == NULL);
1828 return cap_vm_enough_memory(mm, pages);
1827} 1829}
1828 1830
1829static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages) 1831static inline int security_vm_enough_memory_kern(long pages)
1830{ 1832{
1831 return cap_vm_enough_memory(mm, pages); 1833 /* If current->mm is a kernel thread then we will pass NULL,
1834 for this specific case that is fine */
1835 return cap_vm_enough_memory(current->mm, pages);
1832} 1836}
1833 1837
1834static inline int security_bprm_alloc(struct linux_binprm *bprm) 1838static inline int security_bprm_alloc(struct linux_binprm *bprm)
diff --git a/include/linux/smp.h b/include/linux/smp.h
index 3f9a60043a97..6e7ba16ff454 100644
--- a/include/linux/smp.h
+++ b/include/linux/smp.h
@@ -146,6 +146,8 @@ static inline void smp_send_reschedule(int cpu) { }
146}) 146})
147#define smp_call_function_mask(mask, func, info, wait) \ 147#define smp_call_function_mask(mask, func, info, wait) \
148 (up_smp_call_function(func, info)) 148 (up_smp_call_function(func, info))
149#define smp_call_function_many(mask, func, info, wait) \
150 (up_smp_call_function(func, info))
149static inline void init_call_single_data(void) 151static inline void init_call_single_data(void)
150{ 152{
151} 153}
diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h
index 73a2f4eb1f7a..9b42baed3900 100644
--- a/include/linux/usb/ch9.h
+++ b/include/linux/usb/ch9.h
@@ -158,8 +158,12 @@ struct usb_ctrlrequest {
158 * (rarely) accepted by SET_DESCRIPTOR. 158 * (rarely) accepted by SET_DESCRIPTOR.
159 * 159 *
160 * Note that all multi-byte values here are encoded in little endian 160 * Note that all multi-byte values here are encoded in little endian
161 * byte order "on the wire". But when exposed through Linux-USB APIs, 161 * byte order "on the wire". Within the kernel and when exposed
162 * they've been converted to cpu byte order. 162 * through the Linux-USB APIs, they are not converted to cpu byte
163 * order; it is the responsibility of the client code to do this.
164 * The single exception is when device and configuration descriptors (but
165 * not other descriptors) are read from usbfs (i.e. /proc/bus/usb/BBB/DDD);
166 * in this case the fields are converted to host endianness by the kernel.
163 */ 167 */
164 168
165/* 169/*
diff --git a/include/net/af_unix.h b/include/net/af_unix.h
index c29ff1da8a18..1614d78c60ed 100644
--- a/include/net/af_unix.h
+++ b/include/net/af_unix.h
@@ -9,6 +9,7 @@
9extern void unix_inflight(struct file *fp); 9extern void unix_inflight(struct file *fp);
10extern void unix_notinflight(struct file *fp); 10extern void unix_notinflight(struct file *fp);
11extern void unix_gc(void); 11extern void unix_gc(void);
12extern void wait_for_unix_gc(void);
12 13
13#define UNIX_HASH_SIZE 256 14#define UNIX_HASH_SIZE 256
14 15
diff --git a/include/net/irda/irda_device.h b/include/net/irda/irda_device.h
index 3025ae17ddbe..94c852d47d0f 100644
--- a/include/net/irda/irda_device.h
+++ b/include/net/irda/irda_device.h
@@ -135,9 +135,11 @@ struct dongle_reg {
135 135
136/* 136/*
137 * Per-packet information we need to hide inside sk_buff 137 * Per-packet information we need to hide inside sk_buff
138 * (must not exceed 48 bytes, check with struct sk_buff) 138 * (must not exceed 48 bytes, check with struct sk_buff)
139 * The default_qdisc_pad field is a temporary hack.
139 */ 140 */
140struct irda_skb_cb { 141struct irda_skb_cb {
142 unsigned int default_qdisc_pad;
141 magic_t magic; /* Be sure that we can trust the information */ 143 magic_t magic; /* Be sure that we can trust the information */
142 __u32 next_speed; /* The Speed to be set *after* this frame */ 144 __u32 next_speed; /* The Speed to be set *after* this frame */
143 __u16 mtt; /* Minimum turn around time */ 145 __u16 mtt; /* Minimum turn around time */
diff --git a/include/net/request_sock.h b/include/net/request_sock.h
index cac811e51f6d..c7190846e128 100644
--- a/include/net/request_sock.h
+++ b/include/net/request_sock.h
@@ -31,6 +31,7 @@ struct request_sock_ops {
31 int family; 31 int family;
32 int obj_size; 32 int obj_size;
33 struct kmem_cache *slab; 33 struct kmem_cache *slab;
34 char *slab_name;
34 int (*rtx_syn_ack)(struct sock *sk, 35 int (*rtx_syn_ack)(struct sock *sk,
35 struct request_sock *req); 36 struct request_sock *req);
36 void (*send_ack)(struct sock *sk, struct sk_buff *skb, 37 void (*send_ack)(struct sock *sk, struct sk_buff *skb,
diff --git a/include/net/timewait_sock.h b/include/net/timewait_sock.h
index 1e1ee3253fd8..97c3b14da55d 100644
--- a/include/net/timewait_sock.h
+++ b/include/net/timewait_sock.h
@@ -16,6 +16,7 @@
16 16
17struct timewait_sock_ops { 17struct timewait_sock_ops {
18 struct kmem_cache *twsk_slab; 18 struct kmem_cache *twsk_slab;
19 char *twsk_slab_name;
19 unsigned int twsk_obj_size; 20 unsigned int twsk_obj_size;
20 int (*twsk_unique)(struct sock *sk, 21 int (*twsk_unique)(struct sock *sk,
21 struct sock *sktw, void *twp); 22 struct sock *sktw, void *twp);
diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h
index 49d8913c4f86..6e04e6fe79c7 100644
--- a/include/scsi/scsi_transport_fc.h
+++ b/include/scsi/scsi_transport_fc.h
@@ -357,7 +357,7 @@ struct fc_rport { /* aka fc_starget_attrs */
357/* bit field values for struct fc_rport "flags" field: */ 357/* bit field values for struct fc_rport "flags" field: */
358#define FC_RPORT_DEVLOSS_PENDING 0x01 358#define FC_RPORT_DEVLOSS_PENDING 0x01
359#define FC_RPORT_SCAN_PENDING 0x02 359#define FC_RPORT_SCAN_PENDING 0x02
360#define FC_RPORT_FAST_FAIL_TIMEDOUT 0x03 360#define FC_RPORT_FAST_FAIL_TIMEDOUT 0x04
361 361
362#define dev_to_rport(d) \ 362#define dev_to_rport(d) \
363 container_of(d, struct fc_rport, dev) 363 container_of(d, struct fc_rport, dev)
diff --git a/include/video/radeon.h b/include/video/radeon.h
index d5dcaf154ba4..1cd09cc5b169 100644
--- a/include/video/radeon.h
+++ b/include/video/radeon.h
@@ -525,9 +525,6 @@
525#define CRTC_DISPLAY_DIS (1 << 10) 525#define CRTC_DISPLAY_DIS (1 << 10)
526#define CRTC_CRT_ON (1 << 15) 526#define CRTC_CRT_ON (1 << 15)
527 527
528/* DSTCACHE_MODE bits constants */
529#define RB2D_DC_AUTOFLUSH_ENABLE (1 << 8)
530#define RB2D_DC_DC_DISABLE_IGNORE_PE (1 << 17)
531 528
532/* DSTCACHE_CTLSTAT bit constants */ 529/* DSTCACHE_CTLSTAT bit constants */
533#define RB2D_DC_FLUSH_2D (1 << 0) 530#define RB2D_DC_FLUSH_2D (1 << 0)
@@ -869,10 +866,15 @@
869#define GMC_DST_16BPP_YVYU422 0x00000c00 866#define GMC_DST_16BPP_YVYU422 0x00000c00
870#define GMC_DST_32BPP_AYUV444 0x00000e00 867#define GMC_DST_32BPP_AYUV444 0x00000e00
871#define GMC_DST_16BPP_ARGB4444 0x00000f00 868#define GMC_DST_16BPP_ARGB4444 0x00000f00
869#define GMC_SRC_MONO 0x00000000
870#define GMC_SRC_MONO_LBKGD 0x00001000
871#define GMC_SRC_DSTCOLOR 0x00003000
872#define GMC_BYTE_ORDER_MSB_TO_LSB 0x00000000 872#define GMC_BYTE_ORDER_MSB_TO_LSB 0x00000000
873#define GMC_BYTE_ORDER_LSB_TO_MSB 0x00004000 873#define GMC_BYTE_ORDER_LSB_TO_MSB 0x00004000
874#define GMC_DP_CONVERSION_TEMP_9300 0x00008000 874#define GMC_DP_CONVERSION_TEMP_9300 0x00008000
875#define GMC_DP_CONVERSION_TEMP_6500 0x00000000 875#define GMC_DP_CONVERSION_TEMP_6500 0x00000000
876#define GMC_DP_SRC_RECT 0x02000000
877#define GMC_DP_SRC_HOST 0x03000000
876#define GMC_DP_SRC_HOST_BYTEALIGN 0x04000000 878#define GMC_DP_SRC_HOST_BYTEALIGN 0x04000000
877#define GMC_3D_FCN_EN_CLR 0x00000000 879#define GMC_3D_FCN_EN_CLR 0x00000000
878#define GMC_3D_FCN_EN_SET 0x08000000 880#define GMC_3D_FCN_EN_SET 0x08000000
@@ -883,9 +885,6 @@
883#define GMC_WRITE_MASK_LEAVE 0x00000000 885#define GMC_WRITE_MASK_LEAVE 0x00000000
884#define GMC_WRITE_MASK_SET 0x40000000 886#define GMC_WRITE_MASK_SET 0x40000000
885#define GMC_CLR_CMP_CNTL_DIS (1 << 28) 887#define GMC_CLR_CMP_CNTL_DIS (1 << 28)
886#define GMC_SRC_DATATYPE_MASK (3 << 12)
887#define GMC_SRC_DATATYPE_MONO_FG_BG (0 << 12)
888#define GMC_SRC_DATATYPE_MONO_FG_LA (1 << 12)
889#define GMC_SRC_DATATYPE_COLOR (3 << 12) 888#define GMC_SRC_DATATYPE_COLOR (3 << 12)
890#define ROP3_S 0x00cc0000 889#define ROP3_S 0x00cc0000
891#define ROP3_SRCCOPY 0x00cc0000 890#define ROP3_SRCCOPY 0x00cc0000
@@ -894,7 +893,6 @@
894#define DP_SRC_SOURCE_MASK (7 << 24) 893#define DP_SRC_SOURCE_MASK (7 << 24)
895#define GMC_BRUSH_NONE (15 << 4) 894#define GMC_BRUSH_NONE (15 << 4)
896#define DP_SRC_SOURCE_MEMORY (2 << 24) 895#define DP_SRC_SOURCE_MEMORY (2 << 24)
897#define DP_SRC_SOURCE_HOST_DATA (3 << 24)
898#define GMC_BRUSH_SOLIDCOLOR 0x000000d0 896#define GMC_BRUSH_SOLIDCOLOR 0x000000d0
899 897
900/* DP_MIX bit constants */ 898/* DP_MIX bit constants */
@@ -980,12 +978,6 @@
980#define DISP_PWR_MAN_TV_ENABLE_RST (1 << 25) 978#define DISP_PWR_MAN_TV_ENABLE_RST (1 << 25)
981#define DISP_PWR_MAN_AUTO_PWRUP_EN (1 << 26) 979#define DISP_PWR_MAN_AUTO_PWRUP_EN (1 << 26)
982 980
983/* RBBM_GUICNTL constants */
984#define RBBM_GUICNTL_HOST_DATA_SWAP_NONE (0 << 0)
985#define RBBM_GUICNTL_HOST_DATA_SWAP_16BIT (1 << 0)
986#define RBBM_GUICNTL_HOST_DATA_SWAP_32BIT (2 << 0)
987#define RBBM_GUICNTL_HOST_DATA_SWAP_HDW (3 << 0)
988
989/* masks */ 981/* masks */
990 982
991#define CONFIG_MEMSIZE_MASK 0x1f000000 983#define CONFIG_MEMSIZE_MASK 0x1f000000
diff --git a/include/xen/interface/event_channel.h b/include/xen/interface/event_channel.h
index 919b5bdcb2bd..2090881c3650 100644
--- a/include/xen/interface/event_channel.h
+++ b/include/xen/interface/event_channel.h
@@ -9,6 +9,8 @@
9#ifndef __XEN_PUBLIC_EVENT_CHANNEL_H__ 9#ifndef __XEN_PUBLIC_EVENT_CHANNEL_H__
10#define __XEN_PUBLIC_EVENT_CHANNEL_H__ 10#define __XEN_PUBLIC_EVENT_CHANNEL_H__
11 11
12#include <xen/interface/xen.h>
13
12typedef uint32_t evtchn_port_t; 14typedef uint32_t evtchn_port_t;
13DEFINE_GUEST_HANDLE(evtchn_port_t); 15DEFINE_GUEST_HANDLE(evtchn_port_t);
14 16
diff --git a/kernel/audit.c b/kernel/audit.c
index 4414e93d8750..ce6d8ea3131e 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -61,8 +61,11 @@
61 61
62#include "audit.h" 62#include "audit.h"
63 63
64/* No auditing will take place until audit_initialized != 0. 64/* No auditing will take place until audit_initialized == AUDIT_INITIALIZED.
65 * (Initialization happens after skb_init is called.) */ 65 * (Initialization happens after skb_init is called.) */
66#define AUDIT_DISABLED -1
67#define AUDIT_UNINITIALIZED 0
68#define AUDIT_INITIALIZED 1
66static int audit_initialized; 69static int audit_initialized;
67 70
68#define AUDIT_OFF 0 71#define AUDIT_OFF 0
@@ -965,6 +968,9 @@ static int __init audit_init(void)
965{ 968{
966 int i; 969 int i;
967 970
971 if (audit_initialized == AUDIT_DISABLED)
972 return 0;
973
968 printk(KERN_INFO "audit: initializing netlink socket (%s)\n", 974 printk(KERN_INFO "audit: initializing netlink socket (%s)\n",
969 audit_default ? "enabled" : "disabled"); 975 audit_default ? "enabled" : "disabled");
970 audit_sock = netlink_kernel_create(&init_net, NETLINK_AUDIT, 0, 976 audit_sock = netlink_kernel_create(&init_net, NETLINK_AUDIT, 0,
@@ -976,7 +982,7 @@ static int __init audit_init(void)
976 982
977 skb_queue_head_init(&audit_skb_queue); 983 skb_queue_head_init(&audit_skb_queue);
978 skb_queue_head_init(&audit_skb_hold_queue); 984 skb_queue_head_init(&audit_skb_hold_queue);
979 audit_initialized = 1; 985 audit_initialized = AUDIT_INITIALIZED;
980 audit_enabled = audit_default; 986 audit_enabled = audit_default;
981 audit_ever_enabled |= !!audit_default; 987 audit_ever_enabled |= !!audit_default;
982 988
@@ -999,13 +1005,21 @@ __initcall(audit_init);
999static int __init audit_enable(char *str) 1005static int __init audit_enable(char *str)
1000{ 1006{
1001 audit_default = !!simple_strtol(str, NULL, 0); 1007 audit_default = !!simple_strtol(str, NULL, 0);
1002 printk(KERN_INFO "audit: %s%s\n", 1008 if (!audit_default)
1003 audit_default ? "enabled" : "disabled", 1009 audit_initialized = AUDIT_DISABLED;
1004 audit_initialized ? "" : " (after initialization)"); 1010
1005 if (audit_initialized) { 1011 printk(KERN_INFO "audit: %s", audit_default ? "enabled" : "disabled");
1012
1013 if (audit_initialized == AUDIT_INITIALIZED) {
1006 audit_enabled = audit_default; 1014 audit_enabled = audit_default;
1007 audit_ever_enabled |= !!audit_default; 1015 audit_ever_enabled |= !!audit_default;
1016 } else if (audit_initialized == AUDIT_UNINITIALIZED) {
1017 printk(" (after initialization)");
1018 } else {
1019 printk(" (until reboot)");
1008 } 1020 }
1021 printk("\n");
1022
1009 return 1; 1023 return 1;
1010} 1024}
1011 1025
@@ -1107,9 +1121,7 @@ unsigned int audit_serial(void)
1107static inline void audit_get_stamp(struct audit_context *ctx, 1121static inline void audit_get_stamp(struct audit_context *ctx,
1108 struct timespec *t, unsigned int *serial) 1122 struct timespec *t, unsigned int *serial)
1109{ 1123{
1110 if (ctx) 1124 if (!ctx || !auditsc_get_stamp(ctx, t, serial)) {
1111 auditsc_get_stamp(ctx, t, serial);
1112 else {
1113 *t = CURRENT_TIME; 1125 *t = CURRENT_TIME;
1114 *serial = audit_serial(); 1126 *serial = audit_serial();
1115 } 1127 }
@@ -1146,7 +1158,7 @@ struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask,
1146 int reserve; 1158 int reserve;
1147 unsigned long timeout_start = jiffies; 1159 unsigned long timeout_start = jiffies;
1148 1160
1149 if (!audit_initialized) 1161 if (audit_initialized != AUDIT_INITIALIZED)
1150 return NULL; 1162 return NULL;
1151 1163
1152 if (unlikely(audit_filter_type(type))) 1164 if (unlikely(audit_filter_type(type)))
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index cf5bc2f5f9c3..2a3f0afc4d2a 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -1459,7 +1459,6 @@ void audit_free(struct task_struct *tsk)
1459 1459
1460/** 1460/**
1461 * audit_syscall_entry - fill in an audit record at syscall entry 1461 * audit_syscall_entry - fill in an audit record at syscall entry
1462 * @tsk: task being audited
1463 * @arch: architecture type 1462 * @arch: architecture type
1464 * @major: major syscall type (function) 1463 * @major: major syscall type (function)
1465 * @a1: additional syscall register 1 1464 * @a1: additional syscall register 1
@@ -1548,9 +1547,25 @@ void audit_syscall_entry(int arch, int major,
1548 context->ppid = 0; 1547 context->ppid = 0;
1549} 1548}
1550 1549
1550void audit_finish_fork(struct task_struct *child)
1551{
1552 struct audit_context *ctx = current->audit_context;
1553 struct audit_context *p = child->audit_context;
1554 if (!p || !ctx || !ctx->auditable)
1555 return;
1556 p->arch = ctx->arch;
1557 p->major = ctx->major;
1558 memcpy(p->argv, ctx->argv, sizeof(ctx->argv));
1559 p->ctime = ctx->ctime;
1560 p->dummy = ctx->dummy;
1561 p->auditable = ctx->auditable;
1562 p->in_syscall = ctx->in_syscall;
1563 p->filterkey = kstrdup(ctx->filterkey, GFP_KERNEL);
1564 p->ppid = current->pid;
1565}
1566
1551/** 1567/**
1552 * audit_syscall_exit - deallocate audit context after a system call 1568 * audit_syscall_exit - deallocate audit context after a system call
1553 * @tsk: task being audited
1554 * @valid: success/failure flag 1569 * @valid: success/failure flag
1555 * @return_code: syscall return value 1570 * @return_code: syscall return value
1556 * 1571 *
@@ -1942,15 +1957,18 @@ EXPORT_SYMBOL_GPL(__audit_inode_child);
1942 * 1957 *
1943 * Also sets the context as auditable. 1958 * Also sets the context as auditable.
1944 */ 1959 */
1945void auditsc_get_stamp(struct audit_context *ctx, 1960int auditsc_get_stamp(struct audit_context *ctx,
1946 struct timespec *t, unsigned int *serial) 1961 struct timespec *t, unsigned int *serial)
1947{ 1962{
1963 if (!ctx->in_syscall)
1964 return 0;
1948 if (!ctx->serial) 1965 if (!ctx->serial)
1949 ctx->serial = audit_serial(); 1966 ctx->serial = audit_serial();
1950 t->tv_sec = ctx->ctime.tv_sec; 1967 t->tv_sec = ctx->ctime.tv_sec;
1951 t->tv_nsec = ctx->ctime.tv_nsec; 1968 t->tv_nsec = ctx->ctime.tv_nsec;
1952 *serial = ctx->serial; 1969 *serial = ctx->serial;
1953 ctx->auditable = 1; 1970 ctx->auditable = 1;
1971 return 1;
1954} 1972}
1955 1973
1956/* global counter which is incremented every time something logs in */ 1974/* global counter which is incremented every time something logs in */
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index fe00b3b983a8..8185a0f09594 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -702,7 +702,7 @@ static int rebind_subsystems(struct cgroupfs_root *root,
702 * any child cgroups exist. This is theoretically supportable 702 * any child cgroups exist. This is theoretically supportable
703 * but involves complex error handling, so it's being left until 703 * but involves complex error handling, so it's being left until
704 * later */ 704 * later */
705 if (!list_empty(&cgrp->children)) 705 if (root->number_of_cgroups > 1)
706 return -EBUSY; 706 return -EBUSY;
707 707
708 /* Process each subsystem */ 708 /* Process each subsystem */
diff --git a/kernel/fork.c b/kernel/fork.c
index 2a372a0e206f..495da2e9a8b4 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -315,17 +315,20 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
315 file = tmp->vm_file; 315 file = tmp->vm_file;
316 if (file) { 316 if (file) {
317 struct inode *inode = file->f_path.dentry->d_inode; 317 struct inode *inode = file->f_path.dentry->d_inode;
318 struct address_space *mapping = file->f_mapping;
319
318 get_file(file); 320 get_file(file);
319 if (tmp->vm_flags & VM_DENYWRITE) 321 if (tmp->vm_flags & VM_DENYWRITE)
320 atomic_dec(&inode->i_writecount); 322 atomic_dec(&inode->i_writecount);
321 323 spin_lock(&mapping->i_mmap_lock);
322 /* insert tmp into the share list, just after mpnt */ 324 if (tmp->vm_flags & VM_SHARED)
323 spin_lock(&file->f_mapping->i_mmap_lock); 325 mapping->i_mmap_writable++;
324 tmp->vm_truncate_count = mpnt->vm_truncate_count; 326 tmp->vm_truncate_count = mpnt->vm_truncate_count;
325 flush_dcache_mmap_lock(file->f_mapping); 327 flush_dcache_mmap_lock(mapping);
328 /* insert tmp into the share list, just after mpnt */
326 vma_prio_tree_add(tmp, mpnt); 329 vma_prio_tree_add(tmp, mpnt);
327 flush_dcache_mmap_unlock(file->f_mapping); 330 flush_dcache_mmap_unlock(mapping);
328 spin_unlock(&file->f_mapping->i_mmap_lock); 331 spin_unlock(&mapping->i_mmap_lock);
329 } 332 }
330 333
331 /* 334 /*
@@ -1398,6 +1401,7 @@ long do_fork(unsigned long clone_flags,
1398 init_completion(&vfork); 1401 init_completion(&vfork);
1399 } 1402 }
1400 1403
1404 audit_finish_fork(p);
1401 tracehook_report_clone(trace, regs, clone_flags, nr, p); 1405 tracehook_report_clone(trace, regs, clone_flags, nr, p);
1402 1406
1403 /* 1407 /*
diff --git a/kernel/latencytop.c b/kernel/latencytop.c
index 5e7b45c56923..449db466bdbc 100644
--- a/kernel/latencytop.c
+++ b/kernel/latencytop.c
@@ -191,7 +191,7 @@ static int lstats_show(struct seq_file *m, void *v)
191 latency_record[i].time, 191 latency_record[i].time,
192 latency_record[i].max); 192 latency_record[i].max);
193 for (q = 0; q < LT_BACKTRACEDEPTH; q++) { 193 for (q = 0; q < LT_BACKTRACEDEPTH; q++) {
194 char sym[KSYM_NAME_LEN]; 194 char sym[KSYM_SYMBOL_LEN];
195 char *c; 195 char *c;
196 if (!latency_record[i].backtrace[q]) 196 if (!latency_record[i].backtrace[q])
197 break; 197 break;
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
index 895337b16a24..4e5288a831de 100644
--- a/kernel/posix-cpu-timers.c
+++ b/kernel/posix-cpu-timers.c
@@ -311,7 +311,7 @@ static int cpu_clock_sample_group(const clockid_t which_clock,
311 struct task_cputime cputime; 311 struct task_cputime cputime;
312 312
313 thread_group_cputime(p, &cputime); 313 thread_group_cputime(p, &cputime);
314 switch (which_clock) { 314 switch (CPUCLOCK_WHICH(which_clock)) {
315 default: 315 default:
316 return -EINVAL; 316 return -EINVAL;
317 case CPUCLOCK_PROF: 317 case CPUCLOCK_PROF:
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
index 5e79c662294b..a140e44eebba 100644
--- a/kernel/posix-timers.c
+++ b/kernel/posix-timers.c
@@ -197,6 +197,11 @@ static int common_timer_create(struct k_itimer *new_timer)
197 return 0; 197 return 0;
198} 198}
199 199
200static int no_timer_create(struct k_itimer *new_timer)
201{
202 return -EOPNOTSUPP;
203}
204
200/* 205/*
201 * Return nonzero if we know a priori this clockid_t value is bogus. 206 * Return nonzero if we know a priori this clockid_t value is bogus.
202 */ 207 */
@@ -248,6 +253,7 @@ static __init int init_posix_timers(void)
248 .clock_getres = hrtimer_get_res, 253 .clock_getres = hrtimer_get_res,
249 .clock_get = posix_get_monotonic_raw, 254 .clock_get = posix_get_monotonic_raw,
250 .clock_set = do_posix_clock_nosettime, 255 .clock_set = do_posix_clock_nosettime,
256 .timer_create = no_timer_create,
251 }; 257 };
252 258
253 register_posix_clock(CLOCK_REALTIME, &clock_realtime); 259 register_posix_clock(CLOCK_REALTIME, &clock_realtime);
diff --git a/kernel/power/swap.c b/kernel/power/swap.c
index b7713b53d07a..6da14358537c 100644
--- a/kernel/power/swap.c
+++ b/kernel/power/swap.c
@@ -633,7 +633,7 @@ void swsusp_close(fmode_t mode)
633 return; 633 return;
634 } 634 }
635 635
636 blkdev_put(resume_bdev, mode); /* move up */ 636 blkdev_put(resume_bdev, mode);
637} 637}
638 638
639static int swsusp_header_init(void) 639static int swsusp_header_init(void)
diff --git a/kernel/relay.c b/kernel/relay.c
index 32b0befdcb6a..09ac2008f77b 100644
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -1317,12 +1317,9 @@ static ssize_t relay_file_splice_read(struct file *in,
1317 if (ret < 0) 1317 if (ret < 0)
1318 break; 1318 break;
1319 else if (!ret) { 1319 else if (!ret) {
1320 if (spliced) 1320 if (flags & SPLICE_F_NONBLOCK)
1321 break;
1322 if (flags & SPLICE_F_NONBLOCK) {
1323 ret = -EAGAIN; 1321 ret = -EAGAIN;
1324 break; 1322 break;
1325 }
1326 } 1323 }
1327 1324
1328 *ppos += ret; 1325 *ppos += ret;
diff --git a/kernel/sched.c b/kernel/sched.c
index b7480fb5c3dc..e4bb1dd7b308 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -6587,7 +6587,9 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)
6587 req = list_entry(rq->migration_queue.next, 6587 req = list_entry(rq->migration_queue.next,
6588 struct migration_req, list); 6588 struct migration_req, list);
6589 list_del_init(&req->list); 6589 list_del_init(&req->list);
6590 spin_unlock_irq(&rq->lock);
6590 complete(&req->done); 6591 complete(&req->done);
6592 spin_lock_irq(&rq->lock);
6591 } 6593 }
6592 spin_unlock_irq(&rq->lock); 6594 spin_unlock_irq(&rq->lock);
6593 break; 6595 break;
diff --git a/kernel/sched_clock.c b/kernel/sched_clock.c
index 81787248b60f..e8ab096ddfe3 100644
--- a/kernel/sched_clock.c
+++ b/kernel/sched_clock.c
@@ -118,13 +118,13 @@ static u64 __update_sched_clock(struct sched_clock_data *scd, u64 now)
118 118
119 /* 119 /*
120 * scd->clock = clamp(scd->tick_gtod + delta, 120 * scd->clock = clamp(scd->tick_gtod + delta,
121 * max(scd->tick_gtod, scd->clock), 121 * max(scd->tick_gtod, scd->clock),
122 * max(scd->clock, scd->tick_gtod + TICK_NSEC)); 122 * scd->tick_gtod + TICK_NSEC);
123 */ 123 */
124 124
125 clock = scd->tick_gtod + delta; 125 clock = scd->tick_gtod + delta;
126 min_clock = wrap_max(scd->tick_gtod, scd->clock); 126 min_clock = wrap_max(scd->tick_gtod, scd->clock);
127 max_clock = wrap_max(scd->clock, scd->tick_gtod + TICK_NSEC); 127 max_clock = scd->tick_gtod + TICK_NSEC;
128 128
129 clock = wrap_max(clock, min_clock); 129 clock = wrap_max(clock, min_clock);
130 clock = wrap_min(clock, max_clock); 130 clock = wrap_min(clock, max_clock);
diff --git a/kernel/softlockup.c b/kernel/softlockup.c
index 3953e4aed733..dc0b3be6b7d5 100644
--- a/kernel/softlockup.c
+++ b/kernel/softlockup.c
@@ -188,7 +188,7 @@ static void check_hung_task(struct task_struct *t, unsigned long now)
188 if ((long)(now - t->last_switch_timestamp) < 188 if ((long)(now - t->last_switch_timestamp) <
189 sysctl_hung_task_timeout_secs) 189 sysctl_hung_task_timeout_secs)
190 return; 190 return;
191 if (sysctl_hung_task_warnings < 0) 191 if (!sysctl_hung_task_warnings)
192 return; 192 return;
193 sysctl_hung_task_warnings--; 193 sysctl_hung_task_warnings--;
194 194
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index e7acfb482a68..fa05e88aa76f 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -518,6 +518,28 @@ void update_wall_time(void)
518 /* correct the clock when NTP error is too big */ 518 /* correct the clock when NTP error is too big */
519 clocksource_adjust(offset); 519 clocksource_adjust(offset);
520 520
521 /*
522 * Since in the loop above, we accumulate any amount of time
523 * in xtime_nsec over a second into xtime.tv_sec, its possible for
524 * xtime_nsec to be fairly small after the loop. Further, if we're
525 * slightly speeding the clocksource up in clocksource_adjust(),
526 * its possible the required corrective factor to xtime_nsec could
527 * cause it to underflow.
528 *
529 * Now, we cannot simply roll the accumulated second back, since
530 * the NTP subsystem has been notified via second_overflow. So
531 * instead we push xtime_nsec forward by the amount we underflowed,
532 * and add that amount into the error.
533 *
534 * We'll correct this error next time through this function, when
535 * xtime_nsec is not as small.
536 */
537 if (unlikely((s64)clock->xtime_nsec < 0)) {
538 s64 neg = -(s64)clock->xtime_nsec;
539 clock->xtime_nsec = 0;
540 clock->error += neg << (NTP_SCALE_SHIFT - clock->shift);
541 }
542
521 /* store full nanoseconds into xtime after rounding it up and 543 /* store full nanoseconds into xtime after rounding it up and
522 * add the remainder to the error difference. 544 * add the remainder to the error difference.
523 */ 545 */
diff --git a/lib/bug.c b/lib/bug.c
index bfeafd60ee9f..300e41afbf97 100644
--- a/lib/bug.c
+++ b/lib/bug.c
@@ -5,6 +5,8 @@
5 5
6 CONFIG_BUG - emit BUG traps. Nothing happens without this. 6 CONFIG_BUG - emit BUG traps. Nothing happens without this.
7 CONFIG_GENERIC_BUG - enable this code. 7 CONFIG_GENERIC_BUG - enable this code.
8 CONFIG_GENERIC_BUG_RELATIVE_POINTERS - use 32-bit pointers relative to
9 the containing struct bug_entry for bug_addr and file.
8 CONFIG_DEBUG_BUGVERBOSE - emit full file+line information for each BUG 10 CONFIG_DEBUG_BUGVERBOSE - emit full file+line information for each BUG
9 11
10 CONFIG_BUG and CONFIG_DEBUG_BUGVERBOSE are potentially user-settable 12 CONFIG_BUG and CONFIG_DEBUG_BUGVERBOSE are potentially user-settable
@@ -43,6 +45,15 @@
43 45
44extern const struct bug_entry __start___bug_table[], __stop___bug_table[]; 46extern const struct bug_entry __start___bug_table[], __stop___bug_table[];
45 47
48static inline unsigned long bug_addr(const struct bug_entry *bug)
49{
50#ifndef CONFIG_GENERIC_BUG_RELATIVE_POINTERS
51 return bug->bug_addr;
52#else
53 return (unsigned long)bug + bug->bug_addr_disp;
54#endif
55}
56
46#ifdef CONFIG_MODULES 57#ifdef CONFIG_MODULES
47static LIST_HEAD(module_bug_list); 58static LIST_HEAD(module_bug_list);
48 59
@@ -55,7 +66,7 @@ static const struct bug_entry *module_find_bug(unsigned long bugaddr)
55 unsigned i; 66 unsigned i;
56 67
57 for (i = 0; i < mod->num_bugs; ++i, ++bug) 68 for (i = 0; i < mod->num_bugs; ++i, ++bug)
58 if (bugaddr == bug->bug_addr) 69 if (bugaddr == bug_addr(bug))
59 return bug; 70 return bug;
60 } 71 }
61 return NULL; 72 return NULL;
@@ -108,7 +119,7 @@ const struct bug_entry *find_bug(unsigned long bugaddr)
108 const struct bug_entry *bug; 119 const struct bug_entry *bug;
109 120
110 for (bug = __start___bug_table; bug < __stop___bug_table; ++bug) 121 for (bug = __start___bug_table; bug < __stop___bug_table; ++bug)
111 if (bugaddr == bug->bug_addr) 122 if (bugaddr == bug_addr(bug))
112 return bug; 123 return bug;
113 124
114 return module_find_bug(bugaddr); 125 return module_find_bug(bugaddr);
@@ -133,7 +144,11 @@ enum bug_trap_type report_bug(unsigned long bugaddr, struct pt_regs *regs)
133 144
134 if (bug) { 145 if (bug) {
135#ifdef CONFIG_DEBUG_BUGVERBOSE 146#ifdef CONFIG_DEBUG_BUGVERBOSE
147#ifndef CONFIG_GENERIC_BUG_RELATIVE_POINTERS
136 file = bug->file; 148 file = bug->file;
149#else
150 file = (const char *)bug + bug->file_disp;
151#endif
137 line = bug->line; 152 line = bug->line;
138#endif 153#endif
139 warning = (bug->flags & BUGFLAG_WARNING) != 0; 154 warning = (bug->flags & BUGFLAG_WARNING) != 0;
diff --git a/lib/dynamic_printk.c b/lib/dynamic_printk.c
index d83660fd6fdd..8e30295e8566 100644
--- a/lib/dynamic_printk.c
+++ b/lib/dynamic_printk.c
@@ -135,7 +135,7 @@ int unregister_dynamic_debug_module(char *mod_name)
135 nr_entries--; 135 nr_entries--;
136out: 136out:
137 up(&debug_list_mutex); 137 up(&debug_list_mutex);
138 return 0; 138 return ret;
139} 139}
140EXPORT_SYMBOL_GPL(unregister_dynamic_debug_module); 140EXPORT_SYMBOL_GPL(unregister_dynamic_debug_module);
141 141
@@ -289,7 +289,7 @@ static ssize_t pr_debug_write(struct file *file, const char __user *buf,
289 dynamic_enabled = DYNAMIC_ENABLED_SOME; 289 dynamic_enabled = DYNAMIC_ENABLED_SOME;
290 err = 0; 290 err = 0;
291 printk(KERN_DEBUG 291 printk(KERN_DEBUG
292 "debugging enabled for module %s", 292 "debugging enabled for module %s\n",
293 elem->name); 293 elem->name);
294 } else if (!value && (elem->enable == 1)) { 294 } else if (!value && (elem->enable == 1)) {
295 elem->enable = 0; 295 elem->enable = 0;
@@ -309,7 +309,7 @@ static ssize_t pr_debug_write(struct file *file, const char __user *buf,
309 err = 0; 309 err = 0;
310 printk(KERN_DEBUG 310 printk(KERN_DEBUG
311 "debugging disabled for module " 311 "debugging disabled for module "
312 "%s", elem->name); 312 "%s\n", elem->name);
313 } 313 }
314 } 314 }
315 } 315 }
diff --git a/lib/idr.c b/lib/idr.c
index 7a785a0c2ea0..1c4f9281f412 100644
--- a/lib/idr.c
+++ b/lib/idr.c
@@ -220,8 +220,14 @@ build_up:
220 */ 220 */
221 while ((layers < (MAX_LEVEL - 1)) && (id >= (1 << (layers*IDR_BITS)))) { 221 while ((layers < (MAX_LEVEL - 1)) && (id >= (1 << (layers*IDR_BITS)))) {
222 layers++; 222 layers++;
223 if (!p->count) 223 if (!p->count) {
224 /* special case: if the tree is currently empty,
225 * then we grow the tree by moving the top node
226 * upwards.
227 */
228 p->layer++;
224 continue; 229 continue;
230 }
225 if (!(new = get_from_free_list(idp))) { 231 if (!(new = get_from_free_list(idp))) {
226 /* 232 /*
227 * The allocation failed. If we built part of 233 * The allocation failed. If we built part of
diff --git a/lib/percpu_counter.c b/lib/percpu_counter.c
index a8663890a88c..b255b939bc1b 100644
--- a/lib/percpu_counter.c
+++ b/lib/percpu_counter.c
@@ -62,10 +62,7 @@ s64 __percpu_counter_sum(struct percpu_counter *fbc)
62 for_each_online_cpu(cpu) { 62 for_each_online_cpu(cpu) {
63 s32 *pcount = per_cpu_ptr(fbc->counters, cpu); 63 s32 *pcount = per_cpu_ptr(fbc->counters, cpu);
64 ret += *pcount; 64 ret += *pcount;
65 *pcount = 0;
66 } 65 }
67 fbc->count = ret;
68
69 spin_unlock(&fbc->lock); 66 spin_unlock(&fbc->lock);
70 return ret; 67 return ret;
71} 68}
@@ -104,13 +101,13 @@ void percpu_counter_destroy(struct percpu_counter *fbc)
104 if (!fbc->counters) 101 if (!fbc->counters)
105 return; 102 return;
106 103
107 free_percpu(fbc->counters);
108 fbc->counters = NULL;
109#ifdef CONFIG_HOTPLUG_CPU 104#ifdef CONFIG_HOTPLUG_CPU
110 mutex_lock(&percpu_counters_lock); 105 mutex_lock(&percpu_counters_lock);
111 list_del(&fbc->list); 106 list_del(&fbc->list);
112 mutex_unlock(&percpu_counters_lock); 107 mutex_unlock(&percpu_counters_lock);
113#endif 108#endif
109 free_percpu(fbc->counters);
110 fbc->counters = NULL;
114} 111}
115EXPORT_SYMBOL(percpu_counter_destroy); 112EXPORT_SYMBOL(percpu_counter_destroy);
116 113
diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index f2e574dbc300..801c08b046e6 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -176,6 +176,9 @@ int bdi_register(struct backing_dev_info *bdi, struct device *parent,
176 int ret = 0; 176 int ret = 0;
177 struct device *dev; 177 struct device *dev;
178 178
179 if (bdi->dev) /* The driver needs to use separate queues per device */
180 goto exit;
181
179 va_start(args, fmt); 182 va_start(args, fmt);
180 dev = device_create_vargs(bdi_class, parent, MKDEV(0, 0), bdi, fmt, args); 183 dev = device_create_vargs(bdi_class, parent, MKDEV(0, 0), bdi, fmt, args);
181 va_end(args); 184 va_end(args);
diff --git a/mm/memory.c b/mm/memory.c
index 164951c47305..f01b7eed6e16 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -669,6 +669,16 @@ int copy_page_range(struct mm_struct *dst_mm, struct mm_struct *src_mm,
669 if (is_vm_hugetlb_page(vma)) 669 if (is_vm_hugetlb_page(vma))
670 return copy_hugetlb_page_range(dst_mm, src_mm, vma); 670 return copy_hugetlb_page_range(dst_mm, src_mm, vma);
671 671
672 if (unlikely(is_pfn_mapping(vma))) {
673 /*
674 * We do not free on error cases below as remove_vma
675 * gets called on error from higher level routine
676 */
677 ret = track_pfn_vma_copy(vma);
678 if (ret)
679 return ret;
680 }
681
672 /* 682 /*
673 * We need to invalidate the secondary MMU mappings only when 683 * We need to invalidate the secondary MMU mappings only when
674 * there could be a permission downgrade on the ptes of the 684 * there could be a permission downgrade on the ptes of the
@@ -915,6 +925,9 @@ unsigned long unmap_vmas(struct mmu_gather **tlbp,
915 if (vma->vm_flags & VM_ACCOUNT) 925 if (vma->vm_flags & VM_ACCOUNT)
916 *nr_accounted += (end - start) >> PAGE_SHIFT; 926 *nr_accounted += (end - start) >> PAGE_SHIFT;
917 927
928 if (unlikely(is_pfn_mapping(vma)))
929 untrack_pfn_vma(vma, 0, 0);
930
918 while (start != end) { 931 while (start != end) {
919 if (!tlb_start_valid) { 932 if (!tlb_start_valid) {
920 tlb_start = start; 933 tlb_start = start;
@@ -1430,6 +1443,7 @@ out:
1430int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr, 1443int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr,
1431 unsigned long pfn) 1444 unsigned long pfn)
1432{ 1445{
1446 int ret;
1433 /* 1447 /*
1434 * Technically, architectures with pte_special can avoid all these 1448 * Technically, architectures with pte_special can avoid all these
1435 * restrictions (same for remap_pfn_range). However we would like 1449 * restrictions (same for remap_pfn_range). However we would like
@@ -1444,7 +1458,15 @@ int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr,
1444 1458
1445 if (addr < vma->vm_start || addr >= vma->vm_end) 1459 if (addr < vma->vm_start || addr >= vma->vm_end)
1446 return -EFAULT; 1460 return -EFAULT;
1447 return insert_pfn(vma, addr, pfn, vma->vm_page_prot); 1461 if (track_pfn_vma_new(vma, vma->vm_page_prot, pfn, PAGE_SIZE))
1462 return -EINVAL;
1463
1464 ret = insert_pfn(vma, addr, pfn, vma->vm_page_prot);
1465
1466 if (ret)
1467 untrack_pfn_vma(vma, pfn, PAGE_SIZE);
1468
1469 return ret;
1448} 1470}
1449EXPORT_SYMBOL(vm_insert_pfn); 1471EXPORT_SYMBOL(vm_insert_pfn);
1450 1472
@@ -1575,14 +1597,17 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
1575 * behaviour that some programs depend on. We mark the "original" 1597 * behaviour that some programs depend on. We mark the "original"
1576 * un-COW'ed pages by matching them up with "vma->vm_pgoff". 1598 * un-COW'ed pages by matching them up with "vma->vm_pgoff".
1577 */ 1599 */
1578 if (is_cow_mapping(vma->vm_flags)) { 1600 if (addr == vma->vm_start && end == vma->vm_end)
1579 if (addr != vma->vm_start || end != vma->vm_end)
1580 return -EINVAL;
1581 vma->vm_pgoff = pfn; 1601 vma->vm_pgoff = pfn;
1582 } 1602 else if (is_cow_mapping(vma->vm_flags))
1603 return -EINVAL;
1583 1604
1584 vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP; 1605 vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
1585 1606
1607 err = track_pfn_vma_new(vma, prot, pfn, PAGE_ALIGN(size));
1608 if (err)
1609 return -EINVAL;
1610
1586 BUG_ON(addr >= end); 1611 BUG_ON(addr >= end);
1587 pfn -= addr >> PAGE_SHIFT; 1612 pfn -= addr >> PAGE_SHIFT;
1588 pgd = pgd_offset(mm, addr); 1613 pgd = pgd_offset(mm, addr);
@@ -1594,6 +1619,10 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
1594 if (err) 1619 if (err)
1595 break; 1620 break;
1596 } while (pgd++, addr = next, addr != end); 1621 } while (pgd++, addr = next, addr != end);
1622
1623 if (err)
1624 untrack_pfn_vma(vma, pfn, PAGE_ALIGN(size));
1625
1597 return err; 1626 return err;
1598} 1627}
1599EXPORT_SYMBOL(remap_pfn_range); 1628EXPORT_SYMBOL(remap_pfn_range);
@@ -2865,9 +2894,9 @@ int in_gate_area_no_task(unsigned long addr)
2865#endif /* __HAVE_ARCH_GATE_AREA */ 2894#endif /* __HAVE_ARCH_GATE_AREA */
2866 2895
2867#ifdef CONFIG_HAVE_IOREMAP_PROT 2896#ifdef CONFIG_HAVE_IOREMAP_PROT
2868static resource_size_t follow_phys(struct vm_area_struct *vma, 2897int follow_phys(struct vm_area_struct *vma,
2869 unsigned long address, unsigned int flags, 2898 unsigned long address, unsigned int flags,
2870 unsigned long *prot) 2899 unsigned long *prot, resource_size_t *phys)
2871{ 2900{
2872 pgd_t *pgd; 2901 pgd_t *pgd;
2873 pud_t *pud; 2902 pud_t *pud;
@@ -2876,24 +2905,26 @@ static resource_size_t follow_phys(struct vm_area_struct *vma,
2876 spinlock_t *ptl; 2905 spinlock_t *ptl;
2877 resource_size_t phys_addr = 0; 2906 resource_size_t phys_addr = 0;
2878 struct mm_struct *mm = vma->vm_mm; 2907 struct mm_struct *mm = vma->vm_mm;
2908 int ret = -EINVAL;
2879 2909
2880 VM_BUG_ON(!(vma->vm_flags & (VM_IO | VM_PFNMAP))); 2910 if (!(vma->vm_flags & (VM_IO | VM_PFNMAP)))
2911 goto out;
2881 2912
2882 pgd = pgd_offset(mm, address); 2913 pgd = pgd_offset(mm, address);
2883 if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd))) 2914 if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd)))
2884 goto no_page_table; 2915 goto out;
2885 2916
2886 pud = pud_offset(pgd, address); 2917 pud = pud_offset(pgd, address);
2887 if (pud_none(*pud) || unlikely(pud_bad(*pud))) 2918 if (pud_none(*pud) || unlikely(pud_bad(*pud)))
2888 goto no_page_table; 2919 goto out;
2889 2920
2890 pmd = pmd_offset(pud, address); 2921 pmd = pmd_offset(pud, address);
2891 if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd))) 2922 if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd)))
2892 goto no_page_table; 2923 goto out;
2893 2924
2894 /* We cannot handle huge page PFN maps. Luckily they don't exist. */ 2925 /* We cannot handle huge page PFN maps. Luckily they don't exist. */
2895 if (pmd_huge(*pmd)) 2926 if (pmd_huge(*pmd))
2896 goto no_page_table; 2927 goto out;
2897 2928
2898 ptep = pte_offset_map_lock(mm, pmd, address, &ptl); 2929 ptep = pte_offset_map_lock(mm, pmd, address, &ptl);
2899 if (!ptep) 2930 if (!ptep)
@@ -2908,13 +2939,13 @@ static resource_size_t follow_phys(struct vm_area_struct *vma,
2908 phys_addr <<= PAGE_SHIFT; /* Shift here to avoid overflow on PAE */ 2939 phys_addr <<= PAGE_SHIFT; /* Shift here to avoid overflow on PAE */
2909 2940
2910 *prot = pgprot_val(pte_pgprot(pte)); 2941 *prot = pgprot_val(pte_pgprot(pte));
2942 *phys = phys_addr;
2943 ret = 0;
2911 2944
2912unlock: 2945unlock:
2913 pte_unmap_unlock(ptep, ptl); 2946 pte_unmap_unlock(ptep, ptl);
2914out: 2947out:
2915 return phys_addr; 2948 return ret;
2916no_page_table:
2917 return 0;
2918} 2949}
2919 2950
2920int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, 2951int generic_access_phys(struct vm_area_struct *vma, unsigned long addr,
@@ -2925,12 +2956,7 @@ int generic_access_phys(struct vm_area_struct *vma, unsigned long addr,
2925 void *maddr; 2956 void *maddr;
2926 int offset = addr & (PAGE_SIZE-1); 2957 int offset = addr & (PAGE_SIZE-1);
2927 2958
2928 if (!(vma->vm_flags & (VM_IO | VM_PFNMAP))) 2959 if (follow_phys(vma, addr, write, &prot, &phys_addr))
2929 return -EINVAL;
2930
2931 phys_addr = follow_phys(vma, addr, write, &prot);
2932
2933 if (!phys_addr)
2934 return -EINVAL; 2960 return -EINVAL;
2935 2961
2936 maddr = ioremap_prot(phys_addr, PAGE_SIZE, prot); 2962 maddr = ioremap_prot(phys_addr, PAGE_SIZE, prot);
diff --git a/mm/migrate.c b/mm/migrate.c
index 1e0d6b237f44..037b0967c1e3 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -987,25 +987,18 @@ out:
987/* 987/*
988 * Determine the nodes of an array of pages and store it in an array of status. 988 * Determine the nodes of an array of pages and store it in an array of status.
989 */ 989 */
990static int do_pages_stat(struct mm_struct *mm, unsigned long nr_pages, 990static void do_pages_stat_array(struct mm_struct *mm, unsigned long nr_pages,
991 const void __user * __user *pages, 991 const void __user **pages, int *status)
992 int __user *status)
993{ 992{
994 unsigned long i; 993 unsigned long i;
995 int err;
996 994
997 down_read(&mm->mmap_sem); 995 down_read(&mm->mmap_sem);
998 996
999 for (i = 0; i < nr_pages; i++) { 997 for (i = 0; i < nr_pages; i++) {
1000 const void __user *p; 998 unsigned long addr = (unsigned long)(*pages);
1001 unsigned long addr;
1002 struct vm_area_struct *vma; 999 struct vm_area_struct *vma;
1003 struct page *page; 1000 struct page *page;
1004 1001 int err = -EFAULT;
1005 err = -EFAULT;
1006 if (get_user(p, pages+i))
1007 goto out;
1008 addr = (unsigned long) p;
1009 1002
1010 vma = find_vma(mm, addr); 1003 vma = find_vma(mm, addr);
1011 if (!vma) 1004 if (!vma)
@@ -1024,12 +1017,52 @@ static int do_pages_stat(struct mm_struct *mm, unsigned long nr_pages,
1024 1017
1025 err = page_to_nid(page); 1018 err = page_to_nid(page);
1026set_status: 1019set_status:
1027 put_user(err, status+i); 1020 *status = err;
1021
1022 pages++;
1023 status++;
1024 }
1025
1026 up_read(&mm->mmap_sem);
1027}
1028
1029/*
1030 * Determine the nodes of a user array of pages and store it in
1031 * a user array of status.
1032 */
1033static int do_pages_stat(struct mm_struct *mm, unsigned long nr_pages,
1034 const void __user * __user *pages,
1035 int __user *status)
1036{
1037#define DO_PAGES_STAT_CHUNK_NR 16
1038 const void __user *chunk_pages[DO_PAGES_STAT_CHUNK_NR];
1039 int chunk_status[DO_PAGES_STAT_CHUNK_NR];
1040 unsigned long i, chunk_nr = DO_PAGES_STAT_CHUNK_NR;
1041 int err;
1042
1043 for (i = 0; i < nr_pages; i += chunk_nr) {
1044 if (chunk_nr + i > nr_pages)
1045 chunk_nr = nr_pages - i;
1046
1047 err = copy_from_user(chunk_pages, &pages[i],
1048 chunk_nr * sizeof(*chunk_pages));
1049 if (err) {
1050 err = -EFAULT;
1051 goto out;
1052 }
1053
1054 do_pages_stat_array(mm, chunk_nr, chunk_pages, chunk_status);
1055
1056 err = copy_to_user(&status[i], chunk_status,
1057 chunk_nr * sizeof(*chunk_status));
1058 if (err) {
1059 err = -EFAULT;
1060 goto out;
1061 }
1028 } 1062 }
1029 err = 0; 1063 err = 0;
1030 1064
1031out: 1065out:
1032 up_read(&mm->mmap_sem);
1033 return err; 1066 return err;
1034} 1067}
1035 1068
diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c
index 0b3cbf090a67..ab27ff750519 100644
--- a/mm/page_cgroup.c
+++ b/mm/page_cgroup.c
@@ -49,6 +49,9 @@ static int __init alloc_node_page_cgroup(int nid)
49 start_pfn = NODE_DATA(nid)->node_start_pfn; 49 start_pfn = NODE_DATA(nid)->node_start_pfn;
50 nr_pages = NODE_DATA(nid)->node_spanned_pages; 50 nr_pages = NODE_DATA(nid)->node_spanned_pages;
51 51
52 if (!nr_pages)
53 return 0;
54
52 table_size = sizeof(struct page_cgroup) * nr_pages; 55 table_size = sizeof(struct page_cgroup) * nr_pages;
53 56
54 base = __alloc_bootmem_node_nopanic(NODE_DATA(nid), 57 base = __alloc_bootmem_node_nopanic(NODE_DATA(nid),
diff --git a/mm/slob.c b/mm/slob.c
index cb675d126791..bf7e8fc3aed8 100644
--- a/mm/slob.c
+++ b/mm/slob.c
@@ -535,7 +535,7 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size,
535 struct kmem_cache *c; 535 struct kmem_cache *c;
536 536
537 c = slob_alloc(sizeof(struct kmem_cache), 537 c = slob_alloc(sizeof(struct kmem_cache),
538 flags, ARCH_KMALLOC_MINALIGN, -1); 538 GFP_KERNEL, ARCH_KMALLOC_MINALIGN, -1);
539 539
540 if (c) { 540 if (c) {
541 c->name = name; 541 c->name = name;
diff --git a/mm/slub.c b/mm/slub.c
index 749588a50a5a..a2cd47d89e0a 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3597,7 +3597,7 @@ static int list_locations(struct kmem_cache *s, char *buf,
3597 for (i = 0; i < t.count; i++) { 3597 for (i = 0; i < t.count; i++) {
3598 struct location *l = &t.loc[i]; 3598 struct location *l = &t.loc[i];
3599 3599
3600 if (len > PAGE_SIZE - 100) 3600 if (len > PAGE_SIZE - KSYM_SYMBOL_LEN - 100)
3601 break; 3601 break;
3602 len += sprintf(buf + len, "%7ld ", l->count); 3602 len += sprintf(buf + len, "%7ld ", l->count);
3603 3603
diff --git a/mm/swap.c b/mm/swap.c
index 2152e48a7b8f..b135ec90cdeb 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -299,7 +299,6 @@ void lru_add_drain(void)
299 put_cpu(); 299 put_cpu();
300} 300}
301 301
302#if defined(CONFIG_NUMA) || defined(CONFIG_UNEVICTABLE_LRU)
303static void lru_add_drain_per_cpu(struct work_struct *dummy) 302static void lru_add_drain_per_cpu(struct work_struct *dummy)
304{ 303{
305 lru_add_drain(); 304 lru_add_drain();
@@ -313,18 +312,6 @@ int lru_add_drain_all(void)
313 return schedule_on_each_cpu(lru_add_drain_per_cpu); 312 return schedule_on_each_cpu(lru_add_drain_per_cpu);
314} 313}
315 314
316#else
317
318/*
319 * Returns 0 for success
320 */
321int lru_add_drain_all(void)
322{
323 lru_add_drain();
324 return 0;
325}
326#endif
327
328/* 315/*
329 * Batched page_cache_release(). Decrement the reference count on all the 316 * Batched page_cache_release(). Decrement the reference count on all the
330 * passed pages. If it fell to zero then remove the page from the LRU and 317 * passed pages. If it fell to zero then remove the page from the LRU and
@@ -445,6 +432,7 @@ void ____pagevec_lru_add(struct pagevec *pvec, enum lru_list lru)
445 for (i = 0; i < pagevec_count(pvec); i++) { 432 for (i = 0; i < pagevec_count(pvec); i++) {
446 struct page *page = pvec->pages[i]; 433 struct page *page = pvec->pages[i];
447 struct zone *pagezone = page_zone(page); 434 struct zone *pagezone = page_zone(page);
435 int file;
448 436
449 if (pagezone != zone) { 437 if (pagezone != zone) {
450 if (zone) 438 if (zone)
@@ -456,8 +444,12 @@ void ____pagevec_lru_add(struct pagevec *pvec, enum lru_list lru)
456 VM_BUG_ON(PageUnevictable(page)); 444 VM_BUG_ON(PageUnevictable(page));
457 VM_BUG_ON(PageLRU(page)); 445 VM_BUG_ON(PageLRU(page));
458 SetPageLRU(page); 446 SetPageLRU(page);
459 if (is_active_lru(lru)) 447 file = is_file_lru(lru);
448 zone->recent_scanned[file]++;
449 if (is_active_lru(lru)) {
460 SetPageActive(page); 450 SetPageActive(page);
451 zone->recent_rotated[file]++;
452 }
461 add_page_to_lru_list(zone, page, lru); 453 add_page_to_lru_list(zone, page, lru);
462 } 454 }
463 if (zone) 455 if (zone)
diff --git a/mm/swapfile.c b/mm/swapfile.c
index 90cb67a5417c..54a9f87e5162 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -1462,6 +1462,15 @@ static int __init procswaps_init(void)
1462__initcall(procswaps_init); 1462__initcall(procswaps_init);
1463#endif /* CONFIG_PROC_FS */ 1463#endif /* CONFIG_PROC_FS */
1464 1464
1465#ifdef MAX_SWAPFILES_CHECK
1466static int __init max_swapfiles_check(void)
1467{
1468 MAX_SWAPFILES_CHECK();
1469 return 0;
1470}
1471late_initcall(max_swapfiles_check);
1472#endif
1473
1465/* 1474/*
1466 * Written 01/25/92 by Simmule Turner, heavily changed by Linus. 1475 * Written 01/25/92 by Simmule Turner, heavily changed by Linus.
1467 * 1476 *
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index f3f6e0758562..1ddb77ba3995 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -1717,7 +1717,7 @@ static int s_show(struct seq_file *m, void *p)
1717 v->addr, v->addr + v->size, v->size); 1717 v->addr, v->addr + v->size, v->size);
1718 1718
1719 if (v->caller) { 1719 if (v->caller) {
1720 char buff[2 * KSYM_NAME_LEN]; 1720 char buff[KSYM_SYMBOL_LEN];
1721 1721
1722 seq_putc(m, ' '); 1722 seq_putc(m, ' ');
1723 sprint_symbol(buff, (unsigned long)v->caller); 1723 sprint_symbol(buff, (unsigned long)v->caller);
diff --git a/net/atm/svc.c b/net/atm/svc.c
index de1e4f2f3a43..8fb54dc870b3 100644
--- a/net/atm/svc.c
+++ b/net/atm/svc.c
@@ -293,7 +293,10 @@ static int svc_listen(struct socket *sock,int backlog)
293 error = -EINVAL; 293 error = -EINVAL;
294 goto out; 294 goto out;
295 } 295 }
296 vcc_insert_socket(sk); 296 if (test_bit(ATM_VF_LISTEN, &vcc->flags)) {
297 error = -EADDRINUSE;
298 goto out;
299 }
297 set_bit(ATM_VF_WAITING, &vcc->flags); 300 set_bit(ATM_VF_WAITING, &vcc->flags);
298 prepare_to_wait(sk->sk_sleep, &wait, TASK_UNINTERRUPTIBLE); 301 prepare_to_wait(sk->sk_sleep, &wait, TASK_UNINTERRUPTIBLE);
299 sigd_enq(vcc,as_listen,NULL,NULL,&vcc->local); 302 sigd_enq(vcc,as_listen,NULL,NULL,&vcc->local);
@@ -307,6 +310,7 @@ static int svc_listen(struct socket *sock,int backlog)
307 goto out; 310 goto out;
308 } 311 }
309 set_bit(ATM_VF_LISTEN,&vcc->flags); 312 set_bit(ATM_VF_LISTEN,&vcc->flags);
313 vcc_insert_socket(sk);
310 sk->sk_max_ack_backlog = backlog > 0 ? backlog : ATM_BACKLOG_DEFAULT; 314 sk->sk_max_ack_backlog = backlog > 0 ? backlog : ATM_BACKLOG_DEFAULT;
311 error = -sk->sk_err; 315 error = -sk->sk_err;
312out: 316out:
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
index fa5cda4e552a..45f61c348e36 100644
--- a/net/bridge/br_netfilter.c
+++ b/net/bridge/br_netfilter.c
@@ -101,6 +101,18 @@ static inline __be16 pppoe_proto(const struct sk_buff *skb)
101 pppoe_proto(skb) == htons(PPP_IPV6) && \ 101 pppoe_proto(skb) == htons(PPP_IPV6) && \
102 brnf_filter_pppoe_tagged) 102 brnf_filter_pppoe_tagged)
103 103
104static void fake_update_pmtu(struct dst_entry *dst, u32 mtu)
105{
106}
107
108static struct dst_ops fake_dst_ops = {
109 .family = AF_INET,
110 .protocol = __constant_htons(ETH_P_IP),
111 .update_pmtu = fake_update_pmtu,
112 .entry_size = sizeof(struct rtable),
113 .entries = ATOMIC_INIT(0),
114};
115
104/* 116/*
105 * Initialize bogus route table used to keep netfilter happy. 117 * Initialize bogus route table used to keep netfilter happy.
106 * Currently, we fill in the PMTU entry because netfilter 118 * Currently, we fill in the PMTU entry because netfilter
@@ -117,6 +129,7 @@ void br_netfilter_rtable_init(struct net_bridge *br)
117 rt->u.dst.path = &rt->u.dst; 129 rt->u.dst.path = &rt->u.dst;
118 rt->u.dst.metrics[RTAX_MTU - 1] = 1500; 130 rt->u.dst.metrics[RTAX_MTU - 1] = 1500;
119 rt->u.dst.flags = DST_NOXFRM; 131 rt->u.dst.flags = DST_NOXFRM;
132 rt->u.dst.ops = &fake_dst_ops;
120} 133}
121 134
122static inline struct rtable *bridge_parent_rtable(const struct net_device *dev) 135static inline struct rtable *bridge_parent_rtable(const struct net_device *dev)
diff --git a/net/can/af_can.c b/net/can/af_can.c
index 7d4d2b3c137e..3dadb338addd 100644
--- a/net/can/af_can.c
+++ b/net/can/af_can.c
@@ -319,23 +319,52 @@ static struct dev_rcv_lists *find_dev_rcv_lists(struct net_device *dev)
319 return n ? d : NULL; 319 return n ? d : NULL;
320} 320}
321 321
322/**
323 * find_rcv_list - determine optimal filterlist inside device filter struct
324 * @can_id: pointer to CAN identifier of a given can_filter
325 * @mask: pointer to CAN mask of a given can_filter
326 * @d: pointer to the device filter struct
327 *
328 * Description:
329 * Returns the optimal filterlist to reduce the filter handling in the
330 * receive path. This function is called by service functions that need
331 * to register or unregister a can_filter in the filter lists.
332 *
333 * A filter matches in general, when
334 *
335 * <received_can_id> & mask == can_id & mask
336 *
337 * so every bit set in the mask (even CAN_EFF_FLAG, CAN_RTR_FLAG) describe
338 * relevant bits for the filter.
339 *
340 * The filter can be inverted (CAN_INV_FILTER bit set in can_id) or it can
341 * filter for error frames (CAN_ERR_FLAG bit set in mask). For error frames
342 * there is a special filterlist and a special rx path filter handling.
343 *
344 * Return:
345 * Pointer to optimal filterlist for the given can_id/mask pair.
346 * Constistency checked mask.
347 * Reduced can_id to have a preprocessed filter compare value.
348 */
322static struct hlist_head *find_rcv_list(canid_t *can_id, canid_t *mask, 349static struct hlist_head *find_rcv_list(canid_t *can_id, canid_t *mask,
323 struct dev_rcv_lists *d) 350 struct dev_rcv_lists *d)
324{ 351{
325 canid_t inv = *can_id & CAN_INV_FILTER; /* save flag before masking */ 352 canid_t inv = *can_id & CAN_INV_FILTER; /* save flag before masking */
326 353
327 /* filter error frames */ 354 /* filter for error frames in extra filterlist */
328 if (*mask & CAN_ERR_FLAG) { 355 if (*mask & CAN_ERR_FLAG) {
329 /* clear CAN_ERR_FLAG in list entry */ 356 /* clear CAN_ERR_FLAG in filter entry */
330 *mask &= CAN_ERR_MASK; 357 *mask &= CAN_ERR_MASK;
331 return &d->rx[RX_ERR]; 358 return &d->rx[RX_ERR];
332 } 359 }
333 360
334 /* ensure valid values in can_mask */ 361 /* with cleared CAN_ERR_FLAG we have a simple mask/value filterpair */
335 if (*mask & CAN_EFF_FLAG) 362
336 *mask &= (CAN_EFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG); 363#define CAN_EFF_RTR_FLAGS (CAN_EFF_FLAG | CAN_RTR_FLAG)
337 else 364
338 *mask &= (CAN_SFF_MASK | CAN_RTR_FLAG); 365 /* ensure valid values in can_mask for 'SFF only' frame filtering */
366 if ((*mask & CAN_EFF_FLAG) && !(*can_id & CAN_EFF_FLAG))
367 *mask &= (CAN_SFF_MASK | CAN_EFF_RTR_FLAGS);
339 368
340 /* reduce condition testing at receive time */ 369 /* reduce condition testing at receive time */
341 *can_id &= *mask; 370 *can_id &= *mask;
@@ -348,15 +377,19 @@ static struct hlist_head *find_rcv_list(canid_t *can_id, canid_t *mask,
348 if (!(*mask)) 377 if (!(*mask))
349 return &d->rx[RX_ALL]; 378 return &d->rx[RX_ALL];
350 379
351 /* use extra filterset for the subscription of exactly *ONE* can_id */ 380 /* extra filterlists for the subscription of a single non-RTR can_id */
352 if (*can_id & CAN_EFF_FLAG) { 381 if (((*mask & CAN_EFF_RTR_FLAGS) == CAN_EFF_RTR_FLAGS)
353 if (*mask == (CAN_EFF_MASK | CAN_EFF_FLAG)) { 382 && !(*can_id & CAN_RTR_FLAG)) {
354 /* RFC: a use-case for hash-tables in the future? */ 383
355 return &d->rx[RX_EFF]; 384 if (*can_id & CAN_EFF_FLAG) {
385 if (*mask == (CAN_EFF_MASK | CAN_EFF_RTR_FLAGS)) {
386 /* RFC: a future use-case for hash-tables? */
387 return &d->rx[RX_EFF];
388 }
389 } else {
390 if (*mask == (CAN_SFF_MASK | CAN_EFF_RTR_FLAGS))
391 return &d->rx_sff[*can_id];
356 } 392 }
357 } else {
358 if (*mask == CAN_SFF_MASK)
359 return &d->rx_sff[*can_id];
360 } 393 }
361 394
362 /* default: filter via can_id/can_mask */ 395 /* default: filter via can_id/can_mask */
@@ -589,7 +622,10 @@ static int can_rcv_filter(struct dev_rcv_lists *d, struct sk_buff *skb)
589 } 622 }
590 } 623 }
591 624
592 /* check CAN_ID specific entries */ 625 /* check filterlists for single non-RTR can_ids */
626 if (can_id & CAN_RTR_FLAG)
627 return matches;
628
593 if (can_id & CAN_EFF_FLAG) { 629 if (can_id & CAN_EFF_FLAG) {
594 hlist_for_each_entry_rcu(r, n, &d->rx[RX_EFF], list) { 630 hlist_for_each_entry_rcu(r, n, &d->rx[RX_EFF], list) {
595 if (r->can_id == can_id) { 631 if (r->can_id == can_id) {
diff --git a/net/can/bcm.c b/net/can/bcm.c
index d0dd382001e2..da0d426c0ce4 100644
--- a/net/can/bcm.c
+++ b/net/can/bcm.c
@@ -64,10 +64,11 @@
64#define BCM_CAN_DLC_MASK 0x0F /* clean private flags in can_dlc by masking */ 64#define BCM_CAN_DLC_MASK 0x0F /* clean private flags in can_dlc by masking */
65 65
66/* get best masking value for can_rx_register() for a given single can_id */ 66/* get best masking value for can_rx_register() for a given single can_id */
67#define REGMASK(id) ((id & CAN_RTR_FLAG) | ((id & CAN_EFF_FLAG) ? \ 67#define REGMASK(id) ((id & CAN_EFF_FLAG) ? \
68 (CAN_EFF_MASK | CAN_EFF_FLAG) : CAN_SFF_MASK)) 68 (CAN_EFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG) : \
69 (CAN_SFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG))
69 70
70#define CAN_BCM_VERSION "20080415" 71#define CAN_BCM_VERSION CAN_VERSION
71static __initdata const char banner[] = KERN_INFO 72static __initdata const char banner[] = KERN_INFO
72 "can: broadcast manager protocol (rev " CAN_BCM_VERSION ")\n"; 73 "can: broadcast manager protocol (rev " CAN_BCM_VERSION ")\n";
73 74
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index 6c7af390be0a..dadac6281f20 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -133,9 +133,11 @@ static int poll_one_napi(struct netpoll_info *npinfo,
133 133
134 npinfo->rx_flags |= NETPOLL_RX_DROP; 134 npinfo->rx_flags |= NETPOLL_RX_DROP;
135 atomic_inc(&trapped); 135 atomic_inc(&trapped);
136 set_bit(NAPI_STATE_NPSVC, &napi->state);
136 137
137 work = napi->poll(napi, budget); 138 work = napi->poll(napi, budget);
138 139
140 clear_bit(NAPI_STATE_NPSVC, &napi->state);
139 atomic_dec(&trapped); 141 atomic_dec(&trapped);
140 npinfo->rx_flags &= ~NETPOLL_RX_DROP; 142 npinfo->rx_flags &= ~NETPOLL_RX_DROP;
141 143
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index d49ef8301b5b..65f7757465bd 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -149,7 +149,7 @@ void skb_under_panic(struct sk_buff *skb, int sz, void *here)
149 149
150void skb_truesize_bug(struct sk_buff *skb) 150void skb_truesize_bug(struct sk_buff *skb)
151{ 151{
152 printk(KERN_ERR "SKB BUG: Invalid truesize (%u) " 152 WARN(net_ratelimit(), KERN_ERR "SKB BUG: Invalid truesize (%u) "
153 "len=%u, sizeof(sk_buff)=%Zd\n", 153 "len=%u, sizeof(sk_buff)=%Zd\n",
154 skb->truesize, skb->len, sizeof(struct sk_buff)); 154 skb->truesize, skb->len, sizeof(struct sk_buff));
155} 155}
diff --git a/net/core/sock.c b/net/core/sock.c
index 341e39456952..edf7220889a4 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -2035,9 +2035,6 @@ static inline void release_proto_idx(struct proto *prot)
2035 2035
2036int proto_register(struct proto *prot, int alloc_slab) 2036int proto_register(struct proto *prot, int alloc_slab)
2037{ 2037{
2038 char *request_sock_slab_name = NULL;
2039 char *timewait_sock_slab_name;
2040
2041 if (alloc_slab) { 2038 if (alloc_slab) {
2042 prot->slab = kmem_cache_create(prot->name, prot->obj_size, 0, 2039 prot->slab = kmem_cache_create(prot->name, prot->obj_size, 0,
2043 SLAB_HWCACHE_ALIGN, NULL); 2040 SLAB_HWCACHE_ALIGN, NULL);
@@ -2051,12 +2048,12 @@ int proto_register(struct proto *prot, int alloc_slab)
2051 if (prot->rsk_prot != NULL) { 2048 if (prot->rsk_prot != NULL) {
2052 static const char mask[] = "request_sock_%s"; 2049 static const char mask[] = "request_sock_%s";
2053 2050
2054 request_sock_slab_name = kmalloc(strlen(prot->name) + sizeof(mask) - 1, GFP_KERNEL); 2051 prot->rsk_prot->slab_name = kmalloc(strlen(prot->name) + sizeof(mask) - 1, GFP_KERNEL);
2055 if (request_sock_slab_name == NULL) 2052 if (prot->rsk_prot->slab_name == NULL)
2056 goto out_free_sock_slab; 2053 goto out_free_sock_slab;
2057 2054
2058 sprintf(request_sock_slab_name, mask, prot->name); 2055 sprintf(prot->rsk_prot->slab_name, mask, prot->name);
2059 prot->rsk_prot->slab = kmem_cache_create(request_sock_slab_name, 2056 prot->rsk_prot->slab = kmem_cache_create(prot->rsk_prot->slab_name,
2060 prot->rsk_prot->obj_size, 0, 2057 prot->rsk_prot->obj_size, 0,
2061 SLAB_HWCACHE_ALIGN, NULL); 2058 SLAB_HWCACHE_ALIGN, NULL);
2062 2059
@@ -2070,14 +2067,14 @@ int proto_register(struct proto *prot, int alloc_slab)
2070 if (prot->twsk_prot != NULL) { 2067 if (prot->twsk_prot != NULL) {
2071 static const char mask[] = "tw_sock_%s"; 2068 static const char mask[] = "tw_sock_%s";
2072 2069
2073 timewait_sock_slab_name = kmalloc(strlen(prot->name) + sizeof(mask) - 1, GFP_KERNEL); 2070 prot->twsk_prot->twsk_slab_name = kmalloc(strlen(prot->name) + sizeof(mask) - 1, GFP_KERNEL);
2074 2071
2075 if (timewait_sock_slab_name == NULL) 2072 if (prot->twsk_prot->twsk_slab_name == NULL)
2076 goto out_free_request_sock_slab; 2073 goto out_free_request_sock_slab;
2077 2074
2078 sprintf(timewait_sock_slab_name, mask, prot->name); 2075 sprintf(prot->twsk_prot->twsk_slab_name, mask, prot->name);
2079 prot->twsk_prot->twsk_slab = 2076 prot->twsk_prot->twsk_slab =
2080 kmem_cache_create(timewait_sock_slab_name, 2077 kmem_cache_create(prot->twsk_prot->twsk_slab_name,
2081 prot->twsk_prot->twsk_obj_size, 2078 prot->twsk_prot->twsk_obj_size,
2082 0, SLAB_HWCACHE_ALIGN, 2079 0, SLAB_HWCACHE_ALIGN,
2083 NULL); 2080 NULL);
@@ -2093,14 +2090,14 @@ int proto_register(struct proto *prot, int alloc_slab)
2093 return 0; 2090 return 0;
2094 2091
2095out_free_timewait_sock_slab_name: 2092out_free_timewait_sock_slab_name:
2096 kfree(timewait_sock_slab_name); 2093 kfree(prot->twsk_prot->twsk_slab_name);
2097out_free_request_sock_slab: 2094out_free_request_sock_slab:
2098 if (prot->rsk_prot && prot->rsk_prot->slab) { 2095 if (prot->rsk_prot && prot->rsk_prot->slab) {
2099 kmem_cache_destroy(prot->rsk_prot->slab); 2096 kmem_cache_destroy(prot->rsk_prot->slab);
2100 prot->rsk_prot->slab = NULL; 2097 prot->rsk_prot->slab = NULL;
2101 } 2098 }
2102out_free_request_sock_slab_name: 2099out_free_request_sock_slab_name:
2103 kfree(request_sock_slab_name); 2100 kfree(prot->rsk_prot->slab_name);
2104out_free_sock_slab: 2101out_free_sock_slab:
2105 kmem_cache_destroy(prot->slab); 2102 kmem_cache_destroy(prot->slab);
2106 prot->slab = NULL; 2103 prot->slab = NULL;
@@ -2123,18 +2120,14 @@ void proto_unregister(struct proto *prot)
2123 } 2120 }
2124 2121
2125 if (prot->rsk_prot != NULL && prot->rsk_prot->slab != NULL) { 2122 if (prot->rsk_prot != NULL && prot->rsk_prot->slab != NULL) {
2126 const char *name = kmem_cache_name(prot->rsk_prot->slab);
2127
2128 kmem_cache_destroy(prot->rsk_prot->slab); 2123 kmem_cache_destroy(prot->rsk_prot->slab);
2129 kfree(name); 2124 kfree(prot->rsk_prot->slab_name);
2130 prot->rsk_prot->slab = NULL; 2125 prot->rsk_prot->slab = NULL;
2131 } 2126 }
2132 2127
2133 if (prot->twsk_prot != NULL && prot->twsk_prot->twsk_slab != NULL) { 2128 if (prot->twsk_prot != NULL && prot->twsk_prot->twsk_slab != NULL) {
2134 const char *name = kmem_cache_name(prot->twsk_prot->twsk_slab);
2135
2136 kmem_cache_destroy(prot->twsk_prot->twsk_slab); 2129 kmem_cache_destroy(prot->twsk_prot->twsk_slab);
2137 kfree(name); 2130 kfree(prot->twsk_prot->twsk_slab_name);
2138 prot->twsk_prot->twsk_slab = NULL; 2131 prot->twsk_prot->twsk_slab = NULL;
2139 } 2132 }
2140} 2133}
diff --git a/net/ipv4/netfilter/nf_nat_rule.c b/net/ipv4/netfilter/nf_nat_rule.c
index bea54a685109..8d489e746b21 100644
--- a/net/ipv4/netfilter/nf_nat_rule.c
+++ b/net/ipv4/netfilter/nf_nat_rule.c
@@ -61,7 +61,7 @@ static struct
61static struct xt_table nat_table = { 61static struct xt_table nat_table = {
62 .name = "nat", 62 .name = "nat",
63 .valid_hooks = NAT_VALID_HOOKS, 63 .valid_hooks = NAT_VALID_HOOKS,
64 .lock = __RW_LOCK_UNLOCKED(__nat_table.lock), 64 .lock = __RW_LOCK_UNLOCKED(nat_table.lock),
65 .me = THIS_MODULE, 65 .me = THIS_MODULE,
66 .af = AF_INET, 66 .af = AF_INET,
67}; 67};
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index ba85d8831893..fe3b4bdfd251 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -1028,10 +1028,6 @@ unsigned int tcp_sync_mss(struct sock *sk, u32 pmtu)
1028 1028
1029/* Compute the current effective MSS, taking SACKs and IP options, 1029/* Compute the current effective MSS, taking SACKs and IP options,
1030 * and even PMTU discovery events into account. 1030 * and even PMTU discovery events into account.
1031 *
1032 * LARGESEND note: !tcp_urg_mode is overkill, only frames up to snd_up
1033 * cannot be large. However, taking into account rare use of URG, this
1034 * is not a big flaw.
1035 */ 1031 */
1036unsigned int tcp_current_mss(struct sock *sk, int large_allowed) 1032unsigned int tcp_current_mss(struct sock *sk, int large_allowed)
1037{ 1033{
@@ -1046,7 +1042,7 @@ unsigned int tcp_current_mss(struct sock *sk, int large_allowed)
1046 1042
1047 mss_now = tp->mss_cache; 1043 mss_now = tp->mss_cache;
1048 1044
1049 if (large_allowed && sk_can_gso(sk) && !tcp_urg_mode(tp)) 1045 if (large_allowed && sk_can_gso(sk))
1050 doing_tso = 1; 1046 doing_tso = 1;
1051 1047
1052 if (dst) { 1048 if (dst) {
@@ -1516,6 +1512,10 @@ static int tcp_mtu_probe(struct sock *sk)
1516 * send_head. This happens as incoming acks open up the remote 1512 * send_head. This happens as incoming acks open up the remote
1517 * window for us. 1513 * window for us.
1518 * 1514 *
1515 * LARGESEND note: !tcp_urg_mode is overkill, only frames between
1516 * snd_up-64k-mss .. snd_up cannot be large. However, taking into
1517 * account rare use of URG, this is not a big flaw.
1518 *
1519 * Returns 1, if no segments are in flight and we have queued segments, but 1519 * Returns 1, if no segments are in flight and we have queued segments, but
1520 * cannot send anything now because of SWS or another problem. 1520 * cannot send anything now because of SWS or another problem.
1521 */ 1521 */
@@ -1567,7 +1567,7 @@ static int tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle)
1567 } 1567 }
1568 1568
1569 limit = mss_now; 1569 limit = mss_now;
1570 if (tso_segs > 1) 1570 if (tso_segs > 1 && !tcp_urg_mode(tp))
1571 limit = tcp_mss_split_point(sk, skb, mss_now, 1571 limit = tcp_mss_split_point(sk, skb, mss_now,
1572 cwnd_quota); 1572 cwnd_quota);
1573 1573
@@ -1616,6 +1616,7 @@ void __tcp_push_pending_frames(struct sock *sk, unsigned int cur_mss,
1616 */ 1616 */
1617void tcp_push_one(struct sock *sk, unsigned int mss_now) 1617void tcp_push_one(struct sock *sk, unsigned int mss_now)
1618{ 1618{
1619 struct tcp_sock *tp = tcp_sk(sk);
1619 struct sk_buff *skb = tcp_send_head(sk); 1620 struct sk_buff *skb = tcp_send_head(sk);
1620 unsigned int tso_segs, cwnd_quota; 1621 unsigned int tso_segs, cwnd_quota;
1621 1622
@@ -1630,7 +1631,7 @@ void tcp_push_one(struct sock *sk, unsigned int mss_now)
1630 BUG_ON(!tso_segs); 1631 BUG_ON(!tso_segs);
1631 1632
1632 limit = mss_now; 1633 limit = mss_now;
1633 if (tso_segs > 1) 1634 if (tso_segs > 1 && !tcp_urg_mode(tp))
1634 limit = tcp_mss_split_point(sk, skb, mss_now, 1635 limit = tcp_mss_split_point(sk, skb, mss_now,
1635 cwnd_quota); 1636 cwnd_quota);
1636 1637
diff --git a/net/ipv4/tcp_vegas.c b/net/ipv4/tcp_vegas.c
index 14504dada116..a453aac91bd3 100644
--- a/net/ipv4/tcp_vegas.c
+++ b/net/ipv4/tcp_vegas.c
@@ -40,18 +40,14 @@
40 40
41#include "tcp_vegas.h" 41#include "tcp_vegas.h"
42 42
43/* Default values of the Vegas variables, in fixed-point representation 43static int alpha = 2;
44 * with V_PARAM_SHIFT bits to the right of the binary point. 44static int beta = 4;
45 */ 45static int gamma = 1;
46#define V_PARAM_SHIFT 1
47static int alpha = 2<<V_PARAM_SHIFT;
48static int beta = 4<<V_PARAM_SHIFT;
49static int gamma = 1<<V_PARAM_SHIFT;
50 46
51module_param(alpha, int, 0644); 47module_param(alpha, int, 0644);
52MODULE_PARM_DESC(alpha, "lower bound of packets in network (scale by 2)"); 48MODULE_PARM_DESC(alpha, "lower bound of packets in network");
53module_param(beta, int, 0644); 49module_param(beta, int, 0644);
54MODULE_PARM_DESC(beta, "upper bound of packets in network (scale by 2)"); 50MODULE_PARM_DESC(beta, "upper bound of packets in network");
55module_param(gamma, int, 0644); 51module_param(gamma, int, 0644);
56MODULE_PARM_DESC(gamma, "limit on increase (scale by 2)"); 52MODULE_PARM_DESC(gamma, "limit on increase (scale by 2)");
57 53
@@ -172,49 +168,13 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
172 return; 168 return;
173 } 169 }
174 170
175 /* The key players are v_beg_snd_una and v_beg_snd_nxt.
176 *
177 * These are so named because they represent the approximate values
178 * of snd_una and snd_nxt at the beginning of the current RTT. More
179 * precisely, they represent the amount of data sent during the RTT.
180 * At the end of the RTT, when we receive an ACK for v_beg_snd_nxt,
181 * we will calculate that (v_beg_snd_nxt - v_beg_snd_una) outstanding
182 * bytes of data have been ACKed during the course of the RTT, giving
183 * an "actual" rate of:
184 *
185 * (v_beg_snd_nxt - v_beg_snd_una) / (rtt duration)
186 *
187 * Unfortunately, v_beg_snd_una is not exactly equal to snd_una,
188 * because delayed ACKs can cover more than one segment, so they
189 * don't line up nicely with the boundaries of RTTs.
190 *
191 * Another unfortunate fact of life is that delayed ACKs delay the
192 * advance of the left edge of our send window, so that the number
193 * of bytes we send in an RTT is often less than our cwnd will allow.
194 * So we keep track of our cwnd separately, in v_beg_snd_cwnd.
195 */
196
197 if (after(ack, vegas->beg_snd_nxt)) { 171 if (after(ack, vegas->beg_snd_nxt)) {
198 /* Do the Vegas once-per-RTT cwnd adjustment. */ 172 /* Do the Vegas once-per-RTT cwnd adjustment. */
199 u32 old_wnd, old_snd_cwnd;
200
201
202 /* Here old_wnd is essentially the window of data that was
203 * sent during the previous RTT, and has all
204 * been acknowledged in the course of the RTT that ended
205 * with the ACK we just received. Likewise, old_snd_cwnd
206 * is the cwnd during the previous RTT.
207 */
208 old_wnd = (vegas->beg_snd_nxt - vegas->beg_snd_una) /
209 tp->mss_cache;
210 old_snd_cwnd = vegas->beg_snd_cwnd;
211 173
212 /* Save the extent of the current window so we can use this 174 /* Save the extent of the current window so we can use this
213 * at the end of the next RTT. 175 * at the end of the next RTT.
214 */ 176 */
215 vegas->beg_snd_una = vegas->beg_snd_nxt;
216 vegas->beg_snd_nxt = tp->snd_nxt; 177 vegas->beg_snd_nxt = tp->snd_nxt;
217 vegas->beg_snd_cwnd = tp->snd_cwnd;
218 178
219 /* We do the Vegas calculations only if we got enough RTT 179 /* We do the Vegas calculations only if we got enough RTT
220 * samples that we can be reasonably sure that we got 180 * samples that we can be reasonably sure that we got
@@ -252,22 +212,14 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
252 * 212 *
253 * This is: 213 * This is:
254 * (actual rate in segments) * baseRTT 214 * (actual rate in segments) * baseRTT
255 * We keep it as a fixed point number with
256 * V_PARAM_SHIFT bits to the right of the binary point.
257 */ 215 */
258 target_cwnd = ((u64)old_wnd * vegas->baseRTT); 216 target_cwnd = tp->snd_cwnd * vegas->baseRTT / rtt;
259 target_cwnd <<= V_PARAM_SHIFT;
260 do_div(target_cwnd, rtt);
261 217
262 /* Calculate the difference between the window we had, 218 /* Calculate the difference between the window we had,
263 * and the window we would like to have. This quantity 219 * and the window we would like to have. This quantity
264 * is the "Diff" from the Arizona Vegas papers. 220 * is the "Diff" from the Arizona Vegas papers.
265 *
266 * Again, this is a fixed point number with
267 * V_PARAM_SHIFT bits to the right of the binary
268 * point.
269 */ 221 */
270 diff = (old_wnd << V_PARAM_SHIFT) - target_cwnd; 222 diff = tp->snd_cwnd * (rtt-vegas->baseRTT) / vegas->baseRTT;
271 223
272 if (diff > gamma && tp->snd_ssthresh > 2 ) { 224 if (diff > gamma && tp->snd_ssthresh > 2 ) {
273 /* Going too fast. Time to slow down 225 /* Going too fast. Time to slow down
@@ -282,16 +234,13 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
282 * truncation robs us of full link 234 * truncation robs us of full link
283 * utilization. 235 * utilization.
284 */ 236 */
285 tp->snd_cwnd = min(tp->snd_cwnd, 237 tp->snd_cwnd = min(tp->snd_cwnd, (u32)target_cwnd+1);
286 ((u32)target_cwnd >>
287 V_PARAM_SHIFT)+1);
288 238
289 } else if (tp->snd_cwnd <= tp->snd_ssthresh) { 239 } else if (tp->snd_cwnd <= tp->snd_ssthresh) {
290 /* Slow start. */ 240 /* Slow start. */
291 tcp_slow_start(tp); 241 tcp_slow_start(tp);
292 } else { 242 } else {
293 /* Congestion avoidance. */ 243 /* Congestion avoidance. */
294 u32 next_snd_cwnd;
295 244
296 /* Figure out where we would like cwnd 245 /* Figure out where we would like cwnd
297 * to be. 246 * to be.
@@ -300,32 +249,25 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
300 /* The old window was too fast, so 249 /* The old window was too fast, so
301 * we slow down. 250 * we slow down.
302 */ 251 */
303 next_snd_cwnd = old_snd_cwnd - 1; 252 tp->snd_cwnd--;
304 } else if (diff < alpha) { 253 } else if (diff < alpha) {
305 /* We don't have enough extra packets 254 /* We don't have enough extra packets
306 * in the network, so speed up. 255 * in the network, so speed up.
307 */ 256 */
308 next_snd_cwnd = old_snd_cwnd + 1; 257 tp->snd_cwnd++;
309 } else { 258 } else {
310 /* Sending just as fast as we 259 /* Sending just as fast as we
311 * should be. 260 * should be.
312 */ 261 */
313 next_snd_cwnd = old_snd_cwnd;
314 } 262 }
315
316 /* Adjust cwnd upward or downward, toward the
317 * desired value.
318 */
319 if (next_snd_cwnd > tp->snd_cwnd)
320 tp->snd_cwnd++;
321 else if (next_snd_cwnd < tp->snd_cwnd)
322 tp->snd_cwnd--;
323 } 263 }
324 264
325 if (tp->snd_cwnd < 2) 265 if (tp->snd_cwnd < 2)
326 tp->snd_cwnd = 2; 266 tp->snd_cwnd = 2;
327 else if (tp->snd_cwnd > tp->snd_cwnd_clamp) 267 else if (tp->snd_cwnd > tp->snd_cwnd_clamp)
328 tp->snd_cwnd = tp->snd_cwnd_clamp; 268 tp->snd_cwnd = tp->snd_cwnd_clamp;
269
270 tp->snd_ssthresh = tcp_current_ssthresh(sk);
329 } 271 }
330 272
331 /* Wipe the slate clean for the next RTT. */ 273 /* Wipe the slate clean for the next RTT. */
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
index 172438320eec..d0f54d18e19b 100644
--- a/net/ipv6/ndisc.c
+++ b/net/ipv6/ndisc.c
@@ -912,8 +912,13 @@ static void ndisc_recv_na(struct sk_buff *skb)
912 is invalid, but ndisc specs say nothing 912 is invalid, but ndisc specs say nothing
913 about it. It could be misconfiguration, or 913 about it. It could be misconfiguration, or
914 an smart proxy agent tries to help us :-) 914 an smart proxy agent tries to help us :-)
915
916 We should not print the error if NA has been
917 received from loopback - it is just our own
918 unsolicited advertisement.
915 */ 919 */
916 ND_PRINTK1(KERN_WARNING 920 if (skb->pkt_type != PACKET_LOOPBACK)
921 ND_PRINTK1(KERN_WARNING
917 "ICMPv6 NA: someone advertises our address on %s!\n", 922 "ICMPv6 NA: someone advertises our address on %s!\n",
918 ifp->idev->dev->name); 923 ifp->idev->dev->name);
919 in6_ifa_put(ifp); 924 in6_ifa_put(ifp);
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index 7fef8ea1f5ec..d254446b85b5 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -99,7 +99,7 @@ struct sta_info *sta_info_get(struct ieee80211_local *local, const u8 *addr)
99 99
100 sta = rcu_dereference(local->sta_hash[STA_HASH(addr)]); 100 sta = rcu_dereference(local->sta_hash[STA_HASH(addr)]);
101 while (sta) { 101 while (sta) {
102 if (compare_ether_addr(sta->sta.addr, addr) == 0) 102 if (memcmp(sta->sta.addr, addr, ETH_ALEN) == 0)
103 break; 103 break;
104 sta = rcu_dereference(sta->hnext); 104 sta = rcu_dereference(sta->hnext);
105 } 105 }
diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c
index 742f811ca416..ab4ddba874be 100644
--- a/net/mac80211/wext.c
+++ b/net/mac80211/wext.c
@@ -271,6 +271,7 @@ static int ieee80211_ioctl_siwmode(struct net_device *dev,
271 __u32 *mode, char *extra) 271 __u32 *mode, char *extra)
272{ 272{
273 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); 273 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
274 struct ieee80211_local *local = sdata->local;
274 int type; 275 int type;
275 276
276 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) 277 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
@@ -281,6 +282,13 @@ static int ieee80211_ioctl_siwmode(struct net_device *dev,
281 type = NL80211_IFTYPE_STATION; 282 type = NL80211_IFTYPE_STATION;
282 break; 283 break;
283 case IW_MODE_ADHOC: 284 case IW_MODE_ADHOC:
285 /* Setting ad-hoc mode on non ibss channel is not
286 * supported.
287 */
288 if (local->oper_channel &&
289 (local->oper_channel->flags & IEEE80211_CHAN_NO_IBSS))
290 return -EOPNOTSUPP;
291
284 type = NL80211_IFTYPE_ADHOC; 292 type = NL80211_IFTYPE_ADHOC;
285 break; 293 break;
286 case IW_MODE_REPEAT: 294 case IW_MODE_REPEAT:
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index 622d7c671cb7..233fdd2d7d21 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -305,9 +305,7 @@ void nf_conntrack_hash_insert(struct nf_conn *ct)
305 hash = hash_conntrack(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple); 305 hash = hash_conntrack(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
306 repl_hash = hash_conntrack(&ct->tuplehash[IP_CT_DIR_REPLY].tuple); 306 repl_hash = hash_conntrack(&ct->tuplehash[IP_CT_DIR_REPLY].tuple);
307 307
308 spin_lock_bh(&nf_conntrack_lock);
309 __nf_conntrack_hash_insert(ct, hash, repl_hash); 308 __nf_conntrack_hash_insert(ct, hash, repl_hash);
310 spin_unlock_bh(&nf_conntrack_lock);
311} 309}
312EXPORT_SYMBOL_GPL(nf_conntrack_hash_insert); 310EXPORT_SYMBOL_GPL(nf_conntrack_hash_insert);
313 311
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
index a040d46f85d6..5f4a6516b3b6 100644
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -1090,7 +1090,7 @@ ctnetlink_create_conntrack(struct nlattr *cda[],
1090 struct nf_conn_help *help; 1090 struct nf_conn_help *help;
1091 struct nf_conntrack_helper *helper; 1091 struct nf_conntrack_helper *helper;
1092 1092
1093 ct = nf_conntrack_alloc(&init_net, otuple, rtuple, GFP_KERNEL); 1093 ct = nf_conntrack_alloc(&init_net, otuple, rtuple, GFP_ATOMIC);
1094 if (ct == NULL || IS_ERR(ct)) 1094 if (ct == NULL || IS_ERR(ct))
1095 return -ENOMEM; 1095 return -ENOMEM;
1096 1096
@@ -1138,7 +1138,7 @@ ctnetlink_create_conntrack(struct nlattr *cda[],
1138 } 1138 }
1139 } 1139 }
1140 1140
1141 nf_ct_acct_ext_add(ct, GFP_KERNEL); 1141 nf_ct_acct_ext_add(ct, GFP_ATOMIC);
1142 1142
1143#if defined(CONFIG_NF_CONNTRACK_MARK) 1143#if defined(CONFIG_NF_CONNTRACK_MARK)
1144 if (cda[CTA_MARK]) 1144 if (cda[CTA_MARK])
@@ -1212,13 +1212,14 @@ ctnetlink_new_conntrack(struct sock *ctnl, struct sk_buff *skb,
1212 atomic_inc(&master_ct->ct_general.use); 1212 atomic_inc(&master_ct->ct_general.use);
1213 } 1213 }
1214 1214
1215 spin_unlock_bh(&nf_conntrack_lock);
1216 err = -ENOENT; 1215 err = -ENOENT;
1217 if (nlh->nlmsg_flags & NLM_F_CREATE) 1216 if (nlh->nlmsg_flags & NLM_F_CREATE)
1218 err = ctnetlink_create_conntrack(cda, 1217 err = ctnetlink_create_conntrack(cda,
1219 &otuple, 1218 &otuple,
1220 &rtuple, 1219 &rtuple,
1221 master_ct); 1220 master_ct);
1221 spin_unlock_bh(&nf_conntrack_lock);
1222
1222 if (err < 0 && master_ct) 1223 if (err < 0 && master_ct)
1223 nf_ct_put(master_ct); 1224 nf_ct_put(master_ct);
1224 1225
diff --git a/net/netfilter/xt_socket.c b/net/netfilter/xt_socket.c
index 02a8fed21082..1acc089be7e9 100644
--- a/net/netfilter/xt_socket.c
+++ b/net/netfilter/xt_socket.c
@@ -141,7 +141,7 @@ socket_mt(const struct sk_buff *skb, const struct xt_match_param *par)
141 sk = nf_tproxy_get_sock_v4(dev_net(skb->dev), protocol, 141 sk = nf_tproxy_get_sock_v4(dev_net(skb->dev), protocol,
142 saddr, daddr, sport, dport, par->in, false); 142 saddr, daddr, sport, dport, par->in, false);
143 if (sk != NULL) { 143 if (sk != NULL) {
144 bool wildcard = (inet_sk(sk)->rcv_saddr == 0); 144 bool wildcard = (sk->sk_state != TCP_TIME_WAIT && inet_sk(sk)->rcv_saddr == 0);
145 145
146 nf_tproxy_put_sock(sk); 146 nf_tproxy_put_sock(sk);
147 if (wildcard) 147 if (wildcard)
diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c
index e8a5c32b0f10..8c0308032178 100644
--- a/net/netlabel/netlabel_unlabeled.c
+++ b/net/netlabel/netlabel_unlabeled.c
@@ -562,7 +562,6 @@ static int netlbl_unlhsh_remove_addr4(struct net *net,
562 const struct in_addr *mask, 562 const struct in_addr *mask,
563 struct netlbl_audit *audit_info) 563 struct netlbl_audit *audit_info)
564{ 564{
565 int ret_val = 0;
566 struct netlbl_af4list *list_entry; 565 struct netlbl_af4list *list_entry;
567 struct netlbl_unlhsh_addr4 *entry; 566 struct netlbl_unlhsh_addr4 *entry;
568 struct audit_buffer *audit_buf; 567 struct audit_buffer *audit_buf;
@@ -574,9 +573,10 @@ static int netlbl_unlhsh_remove_addr4(struct net *net,
574 list_entry = netlbl_af4list_remove(addr->s_addr, mask->s_addr, 573 list_entry = netlbl_af4list_remove(addr->s_addr, mask->s_addr,
575 &iface->addr4_list); 574 &iface->addr4_list);
576 spin_unlock(&netlbl_unlhsh_lock); 575 spin_unlock(&netlbl_unlhsh_lock);
577 if (list_entry == NULL) 576 if (list_entry != NULL)
578 ret_val = -ENOENT; 577 entry = netlbl_unlhsh_addr4_entry(list_entry);
579 entry = netlbl_unlhsh_addr4_entry(list_entry); 578 else
579 entry = NULL;
580 580
581 audit_buf = netlbl_audit_start_common(AUDIT_MAC_UNLBL_STCDEL, 581 audit_buf = netlbl_audit_start_common(AUDIT_MAC_UNLBL_STCDEL,
582 audit_info); 582 audit_info);
@@ -587,19 +587,21 @@ static int netlbl_unlhsh_remove_addr4(struct net *net,
587 addr->s_addr, mask->s_addr); 587 addr->s_addr, mask->s_addr);
588 if (dev != NULL) 588 if (dev != NULL)
589 dev_put(dev); 589 dev_put(dev);
590 if (entry && security_secid_to_secctx(entry->secid, 590 if (entry != NULL &&
591 &secctx, 591 security_secid_to_secctx(entry->secid,
592 &secctx_len) == 0) { 592 &secctx, &secctx_len) == 0) {
593 audit_log_format(audit_buf, " sec_obj=%s", secctx); 593 audit_log_format(audit_buf, " sec_obj=%s", secctx);
594 security_release_secctx(secctx, secctx_len); 594 security_release_secctx(secctx, secctx_len);
595 } 595 }
596 audit_log_format(audit_buf, " res=%u", ret_val == 0 ? 1 : 0); 596 audit_log_format(audit_buf, " res=%u", entry != NULL ? 1 : 0);
597 audit_log_end(audit_buf); 597 audit_log_end(audit_buf);
598 } 598 }
599 599
600 if (ret_val == 0) 600 if (entry == NULL)
601 call_rcu(&entry->rcu, netlbl_unlhsh_free_addr4); 601 return -ENOENT;
602 return ret_val; 602
603 call_rcu(&entry->rcu, netlbl_unlhsh_free_addr4);
604 return 0;
603} 605}
604 606
605#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) 607#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
@@ -623,7 +625,6 @@ static int netlbl_unlhsh_remove_addr6(struct net *net,
623 const struct in6_addr *mask, 625 const struct in6_addr *mask,
624 struct netlbl_audit *audit_info) 626 struct netlbl_audit *audit_info)
625{ 627{
626 int ret_val = 0;
627 struct netlbl_af6list *list_entry; 628 struct netlbl_af6list *list_entry;
628 struct netlbl_unlhsh_addr6 *entry; 629 struct netlbl_unlhsh_addr6 *entry;
629 struct audit_buffer *audit_buf; 630 struct audit_buffer *audit_buf;
@@ -634,9 +635,10 @@ static int netlbl_unlhsh_remove_addr6(struct net *net,
634 spin_lock(&netlbl_unlhsh_lock); 635 spin_lock(&netlbl_unlhsh_lock);
635 list_entry = netlbl_af6list_remove(addr, mask, &iface->addr6_list); 636 list_entry = netlbl_af6list_remove(addr, mask, &iface->addr6_list);
636 spin_unlock(&netlbl_unlhsh_lock); 637 spin_unlock(&netlbl_unlhsh_lock);
637 if (list_entry == NULL) 638 if (list_entry != NULL)
638 ret_val = -ENOENT; 639 entry = netlbl_unlhsh_addr6_entry(list_entry);
639 entry = netlbl_unlhsh_addr6_entry(list_entry); 640 else
641 entry = NULL;
640 642
641 audit_buf = netlbl_audit_start_common(AUDIT_MAC_UNLBL_STCDEL, 643 audit_buf = netlbl_audit_start_common(AUDIT_MAC_UNLBL_STCDEL,
642 audit_info); 644 audit_info);
@@ -647,19 +649,21 @@ static int netlbl_unlhsh_remove_addr6(struct net *net,
647 addr, mask); 649 addr, mask);
648 if (dev != NULL) 650 if (dev != NULL)
649 dev_put(dev); 651 dev_put(dev);
650 if (entry && security_secid_to_secctx(entry->secid, 652 if (entry != NULL &&
651 &secctx, 653 security_secid_to_secctx(entry->secid,
652 &secctx_len) == 0) { 654 &secctx, &secctx_len) == 0) {
653 audit_log_format(audit_buf, " sec_obj=%s", secctx); 655 audit_log_format(audit_buf, " sec_obj=%s", secctx);
654 security_release_secctx(secctx, secctx_len); 656 security_release_secctx(secctx, secctx_len);
655 } 657 }
656 audit_log_format(audit_buf, " res=%u", ret_val == 0 ? 1 : 0); 658 audit_log_format(audit_buf, " res=%u", entry != NULL ? 1 : 0);
657 audit_log_end(audit_buf); 659 audit_log_end(audit_buf);
658 } 660 }
659 661
660 if (ret_val == 0) 662 if (entry == NULL)
661 call_rcu(&entry->rcu, netlbl_unlhsh_free_addr6); 663 return -ENOENT;
662 return ret_val; 664
665 call_rcu(&entry->rcu, netlbl_unlhsh_free_addr6);
666 return 0;
663} 667}
664#endif /* IPv6 */ 668#endif /* IPv6 */
665 669
diff --git a/net/phonet/pep-gprs.c b/net/phonet/pep-gprs.c
index 9978afbd9f2a..803eeef0aa85 100644
--- a/net/phonet/pep-gprs.c
+++ b/net/phonet/pep-gprs.c
@@ -155,12 +155,13 @@ static void gprs_data_ready(struct sock *sk, int len)
155static void gprs_write_space(struct sock *sk) 155static void gprs_write_space(struct sock *sk)
156{ 156{
157 struct gprs_dev *dev = sk->sk_user_data; 157 struct gprs_dev *dev = sk->sk_user_data;
158 struct net_device *net = dev->net;
158 unsigned credits = pep_writeable(sk); 159 unsigned credits = pep_writeable(sk);
159 160
160 spin_lock_bh(&dev->tx_lock); 161 spin_lock_bh(&dev->tx_lock);
161 dev->tx_max = credits; 162 dev->tx_max = credits;
162 if (credits > skb_queue_len(&dev->tx_queue)) 163 if (credits > skb_queue_len(&dev->tx_queue) && netif_running(net))
163 netif_wake_queue(dev->net); 164 netif_wake_queue(net);
164 spin_unlock_bh(&dev->tx_lock); 165 spin_unlock_bh(&dev->tx_lock);
165} 166}
166 167
@@ -168,6 +169,23 @@ static void gprs_write_space(struct sock *sk)
168 * Network device callbacks 169 * Network device callbacks
169 */ 170 */
170 171
172static int gprs_open(struct net_device *dev)
173{
174 struct gprs_dev *gp = netdev_priv(dev);
175
176 gprs_write_space(gp->sk);
177 return 0;
178}
179
180static int gprs_close(struct net_device *dev)
181{
182 struct gprs_dev *gp = netdev_priv(dev);
183
184 netif_stop_queue(dev);
185 flush_work(&gp->tx_work);
186 return 0;
187}
188
171static int gprs_xmit(struct sk_buff *skb, struct net_device *net) 189static int gprs_xmit(struct sk_buff *skb, struct net_device *net)
172{ 190{
173 struct gprs_dev *dev = netdev_priv(net); 191 struct gprs_dev *dev = netdev_priv(net);
@@ -254,6 +272,8 @@ static void gprs_setup(struct net_device *net)
254 net->tx_queue_len = 10; 272 net->tx_queue_len = 10;
255 273
256 net->destructor = free_netdev; 274 net->destructor = free_netdev;
275 net->open = gprs_open;
276 net->stop = gprs_close;
257 net->hard_start_xmit = gprs_xmit; /* mandatory */ 277 net->hard_start_xmit = gprs_xmit; /* mandatory */
258 net->change_mtu = gprs_set_mtu; 278 net->change_mtu = gprs_set_mtu;
259 net->get_stats = gprs_get_stats; 279 net->get_stats = gprs_get_stats;
@@ -318,7 +338,6 @@ int gprs_attach(struct sock *sk)
318 dev->sk = sk; 338 dev->sk = sk;
319 339
320 printk(KERN_DEBUG"%s: attached\n", net->name); 340 printk(KERN_DEBUG"%s: attached\n", net->name);
321 gprs_write_space(sk); /* kick off TX */
322 return net->ifindex; 341 return net->ifindex;
323 342
324out_rel: 343out_rel:
@@ -341,7 +360,5 @@ void gprs_detach(struct sock *sk)
341 360
342 printk(KERN_DEBUG"%s: detached\n", net->name); 361 printk(KERN_DEBUG"%s: detached\n", net->name);
343 unregister_netdev(net); 362 unregister_netdev(net);
344 flush_scheduled_work();
345 sock_put(sk); 363 sock_put(sk);
346 skb_queue_purge(&dev->tx_queue);
347} 364}
diff --git a/net/phonet/pn_dev.c b/net/phonet/pn_dev.c
index 53be9fc82aaa..f93ff8ef47d0 100644
--- a/net/phonet/pn_dev.c
+++ b/net/phonet/pn_dev.c
@@ -115,7 +115,7 @@ int phonet_address_del(struct net_device *dev, u8 addr)
115 pnd = __phonet_get(dev); 115 pnd = __phonet_get(dev);
116 if (!pnd || !test_and_clear_bit(addr >> 2, pnd->addrs)) 116 if (!pnd || !test_and_clear_bit(addr >> 2, pnd->addrs))
117 err = -EADDRNOTAVAIL; 117 err = -EADDRNOTAVAIL;
118 if (bitmap_empty(pnd->addrs, 64)) 118 else if (bitmap_empty(pnd->addrs, 64))
119 __phonet_device_free(pnd); 119 __phonet_device_free(pnd);
120 spin_unlock_bh(&pndevs.lock); 120 spin_unlock_bh(&pndevs.lock);
121 return err; 121 return err;
diff --git a/net/phonet/pn_netlink.c b/net/phonet/pn_netlink.c
index b1770d66bc8d..242fe8f8c322 100644
--- a/net/phonet/pn_netlink.c
+++ b/net/phonet/pn_netlink.c
@@ -123,6 +123,7 @@ nla_put_failure:
123 123
124static int getaddr_dumpit(struct sk_buff *skb, struct netlink_callback *cb) 124static int getaddr_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
125{ 125{
126 struct net *net = sock_net(skb->sk);
126 struct phonet_device *pnd; 127 struct phonet_device *pnd;
127 int dev_idx = 0, dev_start_idx = cb->args[0]; 128 int dev_idx = 0, dev_start_idx = cb->args[0];
128 int addr_idx = 0, addr_start_idx = cb->args[1]; 129 int addr_idx = 0, addr_start_idx = cb->args[1];
@@ -131,6 +132,8 @@ static int getaddr_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
131 list_for_each_entry(pnd, &pndevs.list, list) { 132 list_for_each_entry(pnd, &pndevs.list, list) {
132 u8 addr; 133 u8 addr;
133 134
135 if (!net_eq(dev_net(pnd->netdev), net))
136 continue;
134 if (dev_idx > dev_start_idx) 137 if (dev_idx > dev_start_idx)
135 addr_start_idx = 0; 138 addr_start_idx = 0;
136 if (dev_idx++ < dev_start_idx) 139 if (dev_idx++ < dev_start_idx)
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c
index a7f1ce11bc22..0c1cc7612800 100644
--- a/net/rose/af_rose.c
+++ b/net/rose/af_rose.c
@@ -1072,6 +1072,10 @@ static int rose_sendmsg(struct kiocb *iocb, struct socket *sock,
1072 unsigned char *asmptr; 1072 unsigned char *asmptr;
1073 int n, size, qbit = 0; 1073 int n, size, qbit = 0;
1074 1074
1075 /* ROSE empty frame has no meaning : don't send */
1076 if (len == 0)
1077 return 0;
1078
1075 if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_EOR|MSG_CMSG_COMPAT)) 1079 if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_EOR|MSG_CMSG_COMPAT))
1076 return -EINVAL; 1080 return -EINVAL;
1077 1081
@@ -1265,6 +1269,12 @@ static int rose_recvmsg(struct kiocb *iocb, struct socket *sock,
1265 skb_reset_transport_header(skb); 1269 skb_reset_transport_header(skb);
1266 copied = skb->len; 1270 copied = skb->len;
1267 1271
1272 /* ROSE empty frame has no meaning : ignore it */
1273 if (copied == 0) {
1274 skb_free_datagram(sk, skb);
1275 return copied;
1276 }
1277
1268 if (copied > size) { 1278 if (copied > size) {
1269 copied = size; 1279 copied = size;
1270 msg->msg_flags |= MSG_TRUNC; 1280 msg->msg_flags |= MSG_TRUNC;
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
index a11959908d9a..98402f0efa47 100644
--- a/net/sched/sch_netem.c
+++ b/net/sched/sch_netem.c
@@ -46,9 +46,6 @@
46 layering other disciplines. It does not need to do bandwidth 46 layering other disciplines. It does not need to do bandwidth
47 control either since that can be handled by using token 47 control either since that can be handled by using token
48 bucket or other rate control. 48 bucket or other rate control.
49
50 The simulator is limited by the Linux timer resolution
51 and will create packet bursts on the HZ boundary (1ms).
52*/ 49*/
53 50
54struct netem_sched_data { 51struct netem_sched_data {
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 95293f549e9c..a1951dcc5776 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -1183,7 +1183,11 @@ int svc_addsock(struct svc_serv *serv,
1183 else if (so->state > SS_UNCONNECTED) 1183 else if (so->state > SS_UNCONNECTED)
1184 err = -EISCONN; 1184 err = -EISCONN;
1185 else { 1185 else {
1186 svsk = svc_setup_socket(serv, so, &err, SVC_SOCK_DEFAULTS); 1186 if (!try_module_get(THIS_MODULE))
1187 err = -ENOENT;
1188 else
1189 svsk = svc_setup_socket(serv, so, &err,
1190 SVC_SOCK_DEFAULTS);
1187 if (svsk) { 1191 if (svsk) {
1188 struct sockaddr_storage addr; 1192 struct sockaddr_storage addr;
1189 struct sockaddr *sin = (struct sockaddr *)&addr; 1193 struct sockaddr *sin = (struct sockaddr *)&addr;
@@ -1196,7 +1200,8 @@ int svc_addsock(struct svc_serv *serv,
1196 spin_unlock_bh(&serv->sv_lock); 1200 spin_unlock_bh(&serv->sv_lock);
1197 svc_xprt_received(&svsk->sk_xprt); 1201 svc_xprt_received(&svsk->sk_xprt);
1198 err = 0; 1202 err = 0;
1199 } 1203 } else
1204 module_put(THIS_MODULE);
1200 } 1205 }
1201 if (err) { 1206 if (err) {
1202 sockfd_put(so); 1207 sockfd_put(so);
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index eb90f77bb0e2..66d5ac4773ab 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -1343,6 +1343,7 @@ static int unix_dgram_sendmsg(struct kiocb *kiocb, struct socket *sock,
1343 1343
1344 if (NULL == siocb->scm) 1344 if (NULL == siocb->scm)
1345 siocb->scm = &tmp_scm; 1345 siocb->scm = &tmp_scm;
1346 wait_for_unix_gc();
1346 err = scm_send(sock, msg, siocb->scm); 1347 err = scm_send(sock, msg, siocb->scm);
1347 if (err < 0) 1348 if (err < 0)
1348 return err; 1349 return err;
@@ -1493,6 +1494,7 @@ static int unix_stream_sendmsg(struct kiocb *kiocb, struct socket *sock,
1493 1494
1494 if (NULL == siocb->scm) 1495 if (NULL == siocb->scm)
1495 siocb->scm = &tmp_scm; 1496 siocb->scm = &tmp_scm;
1497 wait_for_unix_gc();
1496 err = scm_send(sock, msg, siocb->scm); 1498 err = scm_send(sock, msg, siocb->scm);
1497 if (err < 0) 1499 if (err < 0)
1498 return err; 1500 return err;
diff --git a/net/unix/garbage.c b/net/unix/garbage.c
index 6d4a9a8de5ef..abb3ab34cb1e 100644
--- a/net/unix/garbage.c
+++ b/net/unix/garbage.c
@@ -80,6 +80,7 @@
80#include <linux/file.h> 80#include <linux/file.h>
81#include <linux/proc_fs.h> 81#include <linux/proc_fs.h>
82#include <linux/mutex.h> 82#include <linux/mutex.h>
83#include <linux/wait.h>
83 84
84#include <net/sock.h> 85#include <net/sock.h>
85#include <net/af_unix.h> 86#include <net/af_unix.h>
@@ -91,6 +92,7 @@
91static LIST_HEAD(gc_inflight_list); 92static LIST_HEAD(gc_inflight_list);
92static LIST_HEAD(gc_candidates); 93static LIST_HEAD(gc_candidates);
93static DEFINE_SPINLOCK(unix_gc_lock); 94static DEFINE_SPINLOCK(unix_gc_lock);
95static DECLARE_WAIT_QUEUE_HEAD(unix_gc_wait);
94 96
95unsigned int unix_tot_inflight; 97unsigned int unix_tot_inflight;
96 98
@@ -266,12 +268,16 @@ static void inc_inflight_move_tail(struct unix_sock *u)
266 list_move_tail(&u->link, &gc_candidates); 268 list_move_tail(&u->link, &gc_candidates);
267} 269}
268 270
269/* The external entry point: unix_gc() */ 271static bool gc_in_progress = false;
270 272
271void unix_gc(void) 273void wait_for_unix_gc(void)
272{ 274{
273 static bool gc_in_progress = false; 275 wait_event(unix_gc_wait, gc_in_progress == false);
276}
274 277
278/* The external entry point: unix_gc() */
279void unix_gc(void)
280{
275 struct unix_sock *u; 281 struct unix_sock *u;
276 struct unix_sock *next; 282 struct unix_sock *next;
277 struct sk_buff_head hitlist; 283 struct sk_buff_head hitlist;
@@ -376,6 +382,7 @@ void unix_gc(void)
376 /* All candidates should have been detached by now. */ 382 /* All candidates should have been detached by now. */
377 BUG_ON(!list_empty(&gc_candidates)); 383 BUG_ON(!list_empty(&gc_candidates));
378 gc_in_progress = false; 384 gc_in_progress = false;
385 wake_up(&unix_gc_wait);
379 386
380 out: 387 out:
381 spin_unlock(&unix_gc_lock); 388 spin_unlock(&unix_gc_lock);
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 626dbb688499..eb3b1a9f9b12 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -343,9 +343,9 @@ static int ignore_request(struct wiphy *wiphy, enum reg_set_by set_by,
343 return 0; 343 return 0;
344 return -EALREADY; 344 return -EALREADY;
345 } 345 }
346 if (WARN_ON(!is_alpha2_set(alpha2) || !is_an_alpha2(alpha2)), 346 if (WARN(!is_alpha2_set(alpha2) || !is_an_alpha2(alpha2),
347 "Invalid Country IE regulatory hint passed " 347 "Invalid Country IE regulatory hint passed "
348 "to the wireless core\n") 348 "to the wireless core\n"))
349 return -EINVAL; 349 return -EINVAL;
350 /* We ignore Country IE hints for now, as we haven't yet 350 /* We ignore Country IE hints for now, as we haven't yet
351 * added the dot11MultiDomainCapabilityEnabled flag 351 * added the dot11MultiDomainCapabilityEnabled flag
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index 058f04f54b90..fb216c9adf86 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -817,6 +817,7 @@ int xfrm_policy_flush(u8 type, struct xfrm_audit *audit_info)
817 continue; 817 continue;
818 hlist_del(&pol->bydst); 818 hlist_del(&pol->bydst);
819 hlist_del(&pol->byidx); 819 hlist_del(&pol->byidx);
820 list_del(&pol->walk.all);
820 write_unlock_bh(&xfrm_policy_lock); 821 write_unlock_bh(&xfrm_policy_lock);
821 822
822 xfrm_audit_policy_delete(pol, 1, audit_info->loginuid, 823 xfrm_audit_policy_delete(pol, 1, audit_info->loginuid,
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 5dd3e89f620a..596ceabd6504 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -69,6 +69,7 @@ enum {
69}; 69};
70 70
71enum { 71enum {
72 STAC_92HD73XX_NO_JD, /* no jack-detection */
72 STAC_92HD73XX_REF, 73 STAC_92HD73XX_REF,
73 STAC_DELL_M6_AMIC, 74 STAC_DELL_M6_AMIC,
74 STAC_DELL_M6_DMIC, 75 STAC_DELL_M6_DMIC,
@@ -127,6 +128,7 @@ enum {
127}; 128};
128 129
129enum { 130enum {
131 STAC_D965_REF_NO_JD, /* no jack-detection */
130 STAC_D965_REF, 132 STAC_D965_REF,
131 STAC_D965_3ST, 133 STAC_D965_3ST,
132 STAC_D965_5ST, 134 STAC_D965_5ST,
@@ -1611,6 +1613,7 @@ static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = {
1611}; 1613};
1612 1614
1613static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { 1615static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = {
1616 [STAC_92HD73XX_NO_JD] = "no-jd",
1614 [STAC_92HD73XX_REF] = "ref", 1617 [STAC_92HD73XX_REF] = "ref",
1615 [STAC_DELL_M6_AMIC] = "dell-m6-amic", 1618 [STAC_DELL_M6_AMIC] = "dell-m6-amic",
1616 [STAC_DELL_M6_DMIC] = "dell-m6-dmic", 1619 [STAC_DELL_M6_DMIC] = "dell-m6-dmic",
@@ -1640,6 +1643,8 @@ static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = {
1640 "unknown Dell", STAC_DELL_M6_DMIC), 1643 "unknown Dell", STAC_DELL_M6_DMIC),
1641 SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x029f, 1644 SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x029f,
1642 "Dell Studio 1537", STAC_DELL_M6_DMIC), 1645 "Dell Studio 1537", STAC_DELL_M6_DMIC),
1646 SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02a0,
1647 "Dell Studio 17", STAC_DELL_M6_DMIC),
1643 {} /* terminator */ 1648 {} /* terminator */
1644}; 1649};
1645 1650
@@ -2027,6 +2032,7 @@ static unsigned int dell_3st_pin_configs[14] = {
2027}; 2032};
2028 2033
2029static unsigned int *stac927x_brd_tbl[STAC_927X_MODELS] = { 2034static unsigned int *stac927x_brd_tbl[STAC_927X_MODELS] = {
2035 [STAC_D965_REF_NO_JD] = ref927x_pin_configs,
2030 [STAC_D965_REF] = ref927x_pin_configs, 2036 [STAC_D965_REF] = ref927x_pin_configs,
2031 [STAC_D965_3ST] = d965_3st_pin_configs, 2037 [STAC_D965_3ST] = d965_3st_pin_configs,
2032 [STAC_D965_5ST] = d965_5st_pin_configs, 2038 [STAC_D965_5ST] = d965_5st_pin_configs,
@@ -2035,6 +2041,7 @@ static unsigned int *stac927x_brd_tbl[STAC_927X_MODELS] = {
2035}; 2041};
2036 2042
2037static const char *stac927x_models[STAC_927X_MODELS] = { 2043static const char *stac927x_models[STAC_927X_MODELS] = {
2044 [STAC_D965_REF_NO_JD] = "ref-no-jd",
2038 [STAC_D965_REF] = "ref", 2045 [STAC_D965_REF] = "ref",
2039 [STAC_D965_3ST] = "3stack", 2046 [STAC_D965_3ST] = "3stack",
2040 [STAC_D965_5ST] = "5stack", 2047 [STAC_D965_5ST] = "5stack",
@@ -2896,7 +2903,7 @@ static int stac92xx_auto_create_multi_out_ctls(struct hda_codec *codec,
2896 } 2903 }
2897 2904
2898 if ((spec->multiout.num_dacs - cfg->line_outs) > 0 && 2905 if ((spec->multiout.num_dacs - cfg->line_outs) > 0 &&
2899 cfg->hp_outs && !spec->multiout.hp_nid) 2906 cfg->hp_outs == 1 && !spec->multiout.hp_nid)
2900 spec->multiout.hp_nid = nid; 2907 spec->multiout.hp_nid = nid;
2901 2908
2902 if (cfg->hp_outs > 1 && cfg->line_out_type == AUTO_PIN_LINE_OUT) { 2909 if (cfg->hp_outs > 1 && cfg->line_out_type == AUTO_PIN_LINE_OUT) {
@@ -4254,14 +4261,17 @@ again:
4254 4261
4255 switch (spec->multiout.num_dacs) { 4262 switch (spec->multiout.num_dacs) {
4256 case 0x3: /* 6 Channel */ 4263 case 0x3: /* 6 Channel */
4264 spec->multiout.hp_nid = 0x17;
4257 spec->mixer = stac92hd73xx_6ch_mixer; 4265 spec->mixer = stac92hd73xx_6ch_mixer;
4258 spec->init = stac92hd73xx_6ch_core_init; 4266 spec->init = stac92hd73xx_6ch_core_init;
4259 break; 4267 break;
4260 case 0x4: /* 8 Channel */ 4268 case 0x4: /* 8 Channel */
4269 spec->multiout.hp_nid = 0x18;
4261 spec->mixer = stac92hd73xx_8ch_mixer; 4270 spec->mixer = stac92hd73xx_8ch_mixer;
4262 spec->init = stac92hd73xx_8ch_core_init; 4271 spec->init = stac92hd73xx_8ch_core_init;
4263 break; 4272 break;
4264 case 0x5: /* 10 Channel */ 4273 case 0x5: /* 10 Channel */
4274 spec->multiout.hp_nid = 0x19;
4265 spec->mixer = stac92hd73xx_10ch_mixer; 4275 spec->mixer = stac92hd73xx_10ch_mixer;
4266 spec->init = stac92hd73xx_10ch_core_init; 4276 spec->init = stac92hd73xx_10ch_core_init;
4267 }; 4277 };
@@ -4297,6 +4307,7 @@ again:
4297 spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; 4307 spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP];
4298 spec->eapd_switch = 0; 4308 spec->eapd_switch = 0;
4299 spec->num_amps = 1; 4309 spec->num_amps = 1;
4310 spec->multiout.hp_nid = 0; /* dual HPs */
4300 4311
4301 if (!spec->init) 4312 if (!spec->init)
4302 spec->init = dell_m6_core_init; 4313 spec->init = dell_m6_core_init;
@@ -4351,6 +4362,9 @@ again:
4351 return err; 4362 return err;
4352 } 4363 }
4353 4364
4365 if (spec->board_config == STAC_92HD73XX_NO_JD)
4366 spec->hp_detect = 0;
4367
4354 codec->patch_ops = stac92xx_patch_ops; 4368 codec->patch_ops = stac92xx_patch_ops;
4355 4369
4356 return 0; 4370 return 0;
@@ -4899,6 +4913,10 @@ static int patch_stac927x(struct hda_codec *codec)
4899 */ 4913 */
4900 codec->bus->needs_damn_long_delay = 1; 4914 codec->bus->needs_damn_long_delay = 1;
4901 4915
4916 /* no jack detecion for ref-no-jd model */
4917 if (spec->board_config == STAC_D965_REF_NO_JD)
4918 spec->hp_detect = 0;
4919
4902 return 0; 4920 return 0;
4903} 4921}
4904 4922
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c
index e9084fdd2082..acd68efb2b75 100644
--- a/sound/soc/omap/omap-pcm.c
+++ b/sound/soc/omap/omap-pcm.c
@@ -233,7 +233,7 @@ static int omap_pcm_open(struct snd_pcm_substream *substream)
233 if (ret < 0) 233 if (ret < 0)
234 goto out; 234 goto out;
235 235
236 prtd = kzalloc(sizeof(prtd), GFP_KERNEL); 236 prtd = kzalloc(sizeof(*prtd), GFP_KERNEL);
237 if (prtd == NULL) { 237 if (prtd == NULL) {
238 ret = -ENOMEM; 238 ret = -ENOMEM;
239 goto out; 239 goto out;