aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2007-08-28 01:56:11 -0400
committerPaul Mackerras <paulus@samba.org>2007-08-28 01:56:11 -0400
commit35438c4327df18dbf5e7f597b69299119f4a14de (patch)
treea4589d731015db93f2eba8f84ffb1f48a8084020
parent2f6c9d961081dc7b109eb19166244bcb2a5dfc28 (diff)
parentb07d68b5ca4d55a16fab223d63d5fb36f89ff42f (diff)
Merge branch 'linux-2.6' into for-2.6.24
-rw-r--r--Documentation/DocBook/deviceiobook.tmpl3
-rw-r--r--Documentation/HOWTO4
-rw-r--r--Documentation/SubmittingPatches2
-rw-r--r--Documentation/accounting/getdelays.c2
-rw-r--r--Documentation/dvb/get_dvb_firmware24
-rw-r--r--Documentation/feature-removal-schedule.txt8
-rw-r--r--Documentation/filesystems/9p.txt24
-rw-r--r--Documentation/kernel-parameters.txt19
-rw-r--r--Documentation/ko_KR/HOWTO623
-rw-r--r--Documentation/vm/numa_memory_policy.txt332
-rw-r--r--Documentation/watchdog/00-INDEX10
-rw-r--r--MAINTAINERS14
-rw-r--r--Makefile4
-rw-r--r--arch/arm/mach-ks8695/board-micrel.c8
-rw-r--r--arch/arm/mach-s3c2442/Kconfig2
-rw-r--r--arch/avr32/boards/atngw100/setup.c18
-rw-r--r--arch/avr32/boards/atstk1000/Kconfig26
-rw-r--r--arch/avr32/boards/atstk1000/atstk1002.c62
-rw-r--r--arch/cris/arch-v10/drivers/Kconfig1
-rw-r--r--arch/cris/arch-v32/drivers/Kconfig1
-rw-r--r--arch/h8300/kernel/process.c1
-rw-r--r--arch/h8300/kernel/sys_h8300.c1
-rw-r--r--arch/i386/Kconfig13
-rw-r--r--arch/i386/Makefile4
-rw-r--r--arch/i386/boot/boot.h24
-rw-r--r--arch/i386/boot/cpucheck.c3
-rw-r--r--arch/i386/boot/edd.c60
-rw-r--r--arch/i386/boot/tty.c14
-rw-r--r--arch/i386/boot/video-vga.c17
-rw-r--r--arch/i386/boot/video.c2
-rw-r--r--arch/i386/kernel/alternative.c2
-rw-r--r--arch/i386/kernel/apic.c2
-rw-r--r--arch/i386/kernel/io_apic.c8
-rw-r--r--arch/i386/kernel/nmi.c4
-rw-r--r--arch/i386/kernel/tsc.c1
-rw-r--r--arch/i386/mm/fault.c5
-rw-r--r--arch/i386/xen/xen-head.S6
-rw-r--r--arch/ia64/Kconfig12
-rw-r--r--arch/ia64/configs/bigsur_defconfig2
-rw-r--r--arch/ia64/configs/gensparse_defconfig2
-rw-r--r--arch/ia64/configs/sim_defconfig2
-rw-r--r--arch/ia64/configs/sn2_defconfig2
-rw-r--r--arch/ia64/configs/tiger_defconfig2
-rw-r--r--arch/ia64/configs/zx1_defconfig2
-rw-r--r--arch/ia64/defconfig3
-rw-r--r--arch/ia64/hp/sim/boot/boot_head.S1
-rw-r--r--arch/ia64/kernel/cpufreq/acpi-cpufreq.c6
-rw-r--r--arch/ia64/kernel/irq.c5
-rw-r--r--arch/ia64/kernel/mca.c34
-rw-r--r--arch/ia64/kernel/process.c10
-rw-r--r--arch/ia64/kernel/ptrace.c10
-rw-r--r--arch/ia64/kernel/setup.c7
-rw-r--r--arch/ia64/kernel/vmlinux.lds.S12
-rw-r--r--arch/ia64/mm/fault.c14
-rw-r--r--arch/ia64/sn/kernel/irq.c12
-rw-r--r--arch/m68k/kernel/setup.c2
-rw-r--r--arch/m68k/kernel/vmlinux-std.lds4
-rw-r--r--arch/m68k/mm/motorola.c6
-rw-r--r--arch/m68knommu/kernel/process.c1
-rw-r--r--arch/m68knommu/kernel/sys_m68k.c1
-rw-r--r--arch/mips/Kconfig32
-rw-r--r--arch/mips/au1000/Kconfig1
-rw-r--r--arch/mips/au1000/common/gpio.c12
-rw-r--r--arch/mips/configs/bigsur_defconfig4
-rw-r--r--arch/mips/configs/capcella_defconfig417
-rw-r--r--arch/mips/configs/cobalt_defconfig341
-rw-r--r--arch/mips/configs/e55_defconfig319
-rw-r--r--arch/mips/configs/ip22_defconfig373
-rw-r--r--arch/mips/configs/ip27_defconfig394
-rw-r--r--arch/mips/configs/jmr3927_defconfig396
-rw-r--r--arch/mips/configs/malta_defconfig426
-rw-r--r--arch/mips/configs/mpc30x_defconfig572
-rw-r--r--arch/mips/configs/rbhma4200_defconfig332
-rw-r--r--arch/mips/configs/rbhma4500_defconfig239
-rw-r--r--arch/mips/configs/sb1250-swarm_defconfig4
-rw-r--r--arch/mips/configs/tb0219_defconfig504
-rw-r--r--arch/mips/configs/tb0226_defconfig548
-rw-r--r--arch/mips/configs/tb0287_defconfig592
-rw-r--r--arch/mips/configs/workpad_defconfig507
-rw-r--r--arch/mips/defconfig373
-rw-r--r--arch/mips/jmr3927/rbhma3100/irq.c48
-rw-r--r--arch/mips/jmr3927/rbhma3100/setup.c13
-rw-r--r--arch/mips/kernel/Makefile1
-rw-r--r--arch/mips/kernel/asm-offsets.c4
-rw-r--r--arch/mips/kernel/cpu-bugs64.c2
-rw-r--r--arch/mips/kernel/irixsig.c2
-rw-r--r--arch/mips/kernel/irq_txx9.c192
-rw-r--r--arch/mips/kernel/machine_kexec.c5
-rw-r--r--arch/mips/kernel/mips-mt.c7
-rw-r--r--arch/mips/kernel/smp-mt.c6
-rw-r--r--arch/mips/kernel/smtc.c2
-rw-r--r--arch/mips/kernel/traps.c31
-rw-r--r--arch/mips/kernel/vmlinux.lds.S7
-rw-r--r--arch/mips/lib/Makefile2
-rw-r--r--arch/mips/lib/cmpdi2.c27
-rw-r--r--arch/mips/mips-boards/malta/malta_smtc.c16
-rw-r--r--arch/mips/mips-boards/sim/sim_int.c88
-rw-r--r--arch/mips/mipssim/sim_smp.c6
-rw-r--r--arch/mips/mm/init.c9
-rw-r--r--arch/mips/pci/pci.c9
-rw-r--r--arch/mips/philips/pnx8550/common/Kconfig1
-rw-r--r--arch/mips/pmc-sierra/yosemite/smp.c6
-rw-r--r--arch/mips/qemu/q-smp.c6
-rw-r--r--arch/mips/sgi-ip22/ip22-mc.c2
-rw-r--r--arch/mips/sgi-ip22/ip22-setup.c1
-rw-r--r--arch/mips/sgi-ip27/ip27-irq.c8
-rw-r--r--arch/mips/sgi-ip27/ip27-smp.c4
-rw-r--r--arch/mips/sibyte/bcm1480/irq.c4
-rw-r--r--arch/mips/sibyte/cfe/console.c2
-rw-r--r--arch/mips/sibyte/cfe/smp.c6
-rw-r--r--arch/mips/sibyte/sb1250/irq.c4
-rw-r--r--arch/mips/sni/pcimt_scache.c37
-rw-r--r--arch/mips/sni/reset.c4
-rw-r--r--arch/mips/sni/setup.c2
-rw-r--r--arch/mips/tx4927/common/Makefile2
-rw-r--r--arch/mips/tx4927/common/tx4927_irq.c395
-rw-r--r--arch/mips/tx4927/toshiba_rbtx4927/Makefile2
-rw-r--r--arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c171
-rw-r--r--arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c11
-rw-r--r--arch/mips/tx4938/common/Makefile1
-rw-r--r--arch/mips/tx4938/common/irq.c279
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/Makefile2
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/irq.c2
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/setup.c11
-rw-r--r--arch/parisc/kernel/sys_parisc32.c141
-rw-r--r--arch/parisc/kernel/syscall_table.S4
-rw-r--r--arch/parisc/kernel/vmlinux.lds.S2
-rw-r--r--arch/powerpc/boot/dts/mpc8544ds.dts88
-rw-r--r--arch/powerpc/boot/dts/mpc8641_hpcn.dts114
-rw-r--r--arch/powerpc/configs/cell_defconfig220
-rw-r--r--arch/powerpc/kernel/traps.c4
-rw-r--r--arch/powerpc/mm/slb.c36
-rw-r--r--arch/powerpc/platforms/85xx/Kconfig1
-rw-r--r--arch/powerpc/platforms/85xx/mpc8544_ds.c214
-rw-r--r--arch/powerpc/platforms/86xx/Kconfig1
-rw-r--r--arch/powerpc/platforms/86xx/mpc86xx_hpcn.c224
-rw-r--r--arch/powerpc/platforms/Kconfig8
-rw-r--r--arch/powerpc/platforms/Makefile3
-rw-r--r--arch/powerpc/platforms/cell/cbe_regs.h8
-rw-r--r--arch/powerpc/platforms/cell/cbe_thermal.c6
-rw-r--r--arch/powerpc/platforms/cell/pervasive.c26
-rw-r--r--arch/powerpc/platforms/cell/spu_manage.c2
-rw-r--r--arch/powerpc/platforms/fsl_uli1575.c255
-rw-r--r--arch/powerpc/platforms/pasemi/iommu.c6
-rw-r--r--arch/powerpc/sysdev/axonram.c46
-rw-r--r--arch/powerpc/sysdev/fsl_pci.c2
-rw-r--r--arch/powerpc/sysdev/fsl_soc.c1
-rw-r--r--arch/powerpc/sysdev/rtc_cmos_setup.c17
-rw-r--r--arch/s390/hypfs/inode.c33
-rw-r--r--arch/s390/kernel/Makefile2
-rw-r--r--arch/s390/kernel/diag.c102
-rw-r--r--arch/s390/kernel/dis.c2
-rw-r--r--arch/s390/kernel/kprobes.c2
-rw-r--r--arch/s390/kernel/s390_ksyms.c1
-rw-r--r--arch/s390/mm/cmm.c1
-rw-r--r--arch/s390/mm/init.c17
-rw-r--r--arch/sh/Makefile17
-rw-r--r--arch/sh/kernel/cpu/sh4/setup-sh4-202.c5
-rw-r--r--arch/sh/kernel/early_printk.c2
-rw-r--r--arch/sh/kernel/machvec.c7
-rw-r--r--arch/sh/kernel/ptrace.c1
-rw-r--r--arch/sh64/kernel/setup.c4
-rw-r--r--arch/sh64/kernel/signal.c1
-rw-r--r--arch/sparc/kernel/ebus.c1
-rw-r--r--arch/sparc/lib/Makefile3
-rw-r--r--arch/sparc/lib/cmpdi2.c27
-rw-r--r--arch/sparc/lib/libgcc.h18
-rw-r--r--arch/sparc/mm/io-unit.c18
-rw-r--r--arch/sparc/mm/iommu.c12
-rw-r--r--arch/sparc/mm/sun4c.c2
-rw-r--r--arch/sparc/prom/console.c3
-rw-r--r--arch/sparc64/kernel/head.S14
-rw-r--r--arch/sparc64/kernel/mdesc.c38
-rw-r--r--arch/sparc64/kernel/trampoline.S7
-rw-r--r--arch/sparc64/lib/Makefile2
-rw-r--r--arch/sparc64/lib/NG2copy_from_user.S40
-rw-r--r--arch/sparc64/lib/NG2copy_to_user.S49
-rw-r--r--arch/sparc64/lib/NG2memcpy.S520
-rw-r--r--arch/sparc64/lib/NG2page.S61
-rw-r--r--arch/sparc64/lib/NG2patch.S33
-rw-r--r--arch/sparc64/lib/NGpage.S1
-rw-r--r--arch/um/drivers/ubd_kern.c4
-rw-r--r--arch/x86_64/Makefile4
-rw-r--r--arch/x86_64/kernel/head.S3
-rw-r--r--arch/x86_64/kernel/io_apic.c8
-rw-r--r--arch/x86_64/kernel/nmi.c4
-rw-r--r--arch/x86_64/kernel/pci-dma.c4
-rw-r--r--drivers/acpi/Kconfig18
-rw-r--r--drivers/acpi/ac.c5
-rw-r--r--drivers/acpi/asus_acpi.c2
-rw-r--r--drivers/acpi/battery.c52
-rw-r--r--drivers/acpi/bus.c10
-rw-r--r--drivers/acpi/button.c2
-rw-r--r--drivers/acpi/ec.c47
-rw-r--r--drivers/acpi/event.c22
-rw-r--r--drivers/acpi/hardware/hwsleep.c19
-rw-r--r--drivers/acpi/namespace/nsxfeval.c2
-rw-r--r--drivers/acpi/processor_core.c13
-rw-r--r--drivers/acpi/processor_idle.c32
-rw-r--r--drivers/acpi/sbs.c3
-rw-r--r--drivers/acpi/scan.c5
-rw-r--r--drivers/acpi/sleep/main.c2
-rw-r--r--drivers/acpi/tables/tbutils.c71
-rw-r--r--drivers/acpi/thermal.c67
-rw-r--r--drivers/acpi/utilities/utglobal.c1
-rw-r--r--drivers/acpi/video.c109
-rw-r--r--drivers/ata/ata_piix.c9
-rw-r--r--drivers/ata/libata-core.c9
-rw-r--r--drivers/ata/pata_artop.c19
-rw-r--r--drivers/ata/pata_hpt37x.c20
-rw-r--r--drivers/ata/pata_hpt3x2n.c8
-rw-r--r--drivers/ata/pata_isapnp.c2
-rw-r--r--drivers/ata/pata_it821x.c2
-rw-r--r--drivers/ata/pata_pdc2027x.c18
-rw-r--r--drivers/ata/pata_sis.c1
-rw-r--r--drivers/ata/pata_via.c5
-rw-r--r--drivers/ata/sata_mv.c3
-rw-r--r--drivers/atm/Kconfig5
-rw-r--r--drivers/auxdisplay/Kconfig5
-rw-r--r--drivers/auxdisplay/cfag12864b.c2
-rw-r--r--drivers/block/Kconfig7
-rw-r--r--drivers/block/lguest_blk.c9
-rw-r--r--drivers/block/sunvdc.c2
-rw-r--r--drivers/char/agp/amd-k7-agp.c2
-rw-r--r--drivers/char/agp/ati-agp.c3
-rw-r--r--drivers/char/agp/efficeon-agp.c2
-rw-r--r--drivers/char/agp/hp-agp.c1
-rw-r--r--drivers/char/agp/i460-agp.c4
-rw-r--r--drivers/char/agp/intel-agp.c14
-rw-r--r--drivers/char/agp/nvidia-agp.c3
-rw-r--r--drivers/char/agp/via-agp.c5
-rw-r--r--drivers/char/drm/drm_bufs.c13
-rw-r--r--drivers/char/drm/via_dmablit.c2
-rw-r--r--drivers/char/ipmi/ipmi_si_intf.c2
-rw-r--r--drivers/char/keyboard.c4
-rw-r--r--drivers/char/lcd.c1
-rw-r--r--drivers/char/sonypi.c2
-rw-r--r--drivers/char/synclink_gt.c4
-rw-r--r--drivers/char/tpm/tpm.c2
-rw-r--r--drivers/char/tpm/tpm.h2
-rw-r--r--drivers/char/tpm/tpm_atmel.c2
-rw-r--r--drivers/char/tpm/tpm_atmel.h2
-rw-r--r--drivers/char/tpm/tpm_bios.c2
-rw-r--r--drivers/char/tpm/tpm_nsc.c2
-rw-r--r--drivers/char/tpm/tpm_tis.c2
-rw-r--r--drivers/char/tty_io.c6
-rw-r--r--drivers/char/watchdog/alim1535_wdt.c7
-rw-r--r--drivers/char/watchdog/eurotechwdt.c13
-rw-r--r--drivers/crypto/Kconfig5
-rw-r--r--drivers/dma/ioatdma.c25
-rw-r--r--drivers/dma/ioatdma.h3
-rw-r--r--drivers/firewire/fw-card.c6
-rw-r--r--drivers/firewire/fw-sbp2.c49
-rw-r--r--drivers/hid/Kconfig5
-rw-r--r--drivers/hwmon/smsc47m1.c2
-rw-r--r--drivers/hwmon/w83627ehf.c56
-rw-r--r--drivers/hwmon/w83781d.c4
-rw-r--r--drivers/ide/Kconfig12
-rw-r--r--drivers/ide/cris/ide-cris.c2
-rw-r--r--drivers/ide/ide-disk.c18
-rw-r--r--drivers/ide/ide-dma.c45
-rw-r--r--drivers/ide/ide-iops.c45
-rw-r--r--drivers/ide/pci/cs5530.c8
-rw-r--r--drivers/ide/pci/hpt34x.c6
-rw-r--r--drivers/ide/pci/ns87415.c9
-rw-r--r--drivers/ide/pci/pdc202xx_new.c10
-rw-r--r--drivers/ide/pci/pdc202xx_old.c9
-rw-r--r--drivers/ide/pci/triflex.c3
-rw-r--r--drivers/ide/ppc/pmac.c14
-rw-r--r--drivers/ieee1394/sbp2.c14
-rw-r--r--drivers/infiniband/core/agent.c24
-rw-r--r--drivers/infiniband/core/agent.h6
-rw-r--r--drivers/infiniband/core/device.c2
-rw-r--r--drivers/infiniband/core/mad.c25
-rw-r--r--drivers/infiniband/core/mad_rmpp.c8
-rw-r--r--drivers/infiniband/core/sa_query.c4
-rw-r--r--drivers/infiniband/core/umem.c5
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_cm.c16
-rw-r--r--drivers/infiniband/hw/mlx4/cq.c2
-rw-r--r--drivers/infiniband/hw/mlx4/mad.c2
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_verbs.c1
-rw-r--r--drivers/infiniband/ulp/srp/ib_srp.c31
-rw-r--r--drivers/input/misc/Kconfig1
-rw-r--r--drivers/isdn/hisax/hfc_usb.c603
-rw-r--r--drivers/isdn/hisax/hfc_usb.h130
-rw-r--r--drivers/isdn/i4l/isdn_bsdcomp.c5
-rw-r--r--drivers/isdn/i4l/isdn_common.c2
-rw-r--r--drivers/kvm/Kconfig5
-rw-r--r--drivers/kvm/kvm_main.c4
-rw-r--r--drivers/lguest/Kconfig2
-rw-r--r--drivers/macintosh/Kconfig5
-rw-r--r--drivers/macintosh/adb.c4
-rw-r--r--drivers/macintosh/mac_hid.c1
-rw-r--r--drivers/macintosh/via-pmu.c34
-rw-r--r--drivers/macintosh/via-pmu68k.c240
-rw-r--r--drivers/md/Kconfig2
-rw-r--r--drivers/md/dm-mpath-rdac.c2
-rw-r--r--drivers/md/raid1.c25
-rw-r--r--drivers/media/dvb/b2c2/flexcop-i2c.c7
-rw-r--r--drivers/media/dvb/dvb-core/dvb_net.c5
-rw-r--r--drivers/media/dvb/frontends/dvb-pll.c2
-rw-r--r--drivers/media/video/cafe_ccic.c35
-rw-r--r--drivers/media/video/em28xx/em28xx-video.c1
-rw-r--r--drivers/media/video/ivtv/ivtv-ioctl.c3
-rw-r--r--drivers/media/video/ov7670.c5
-rw-r--r--drivers/media/video/pwc/pwc-if.c52
-rw-r--r--drivers/media/video/pwc/pwc.h1
-rw-r--r--drivers/misc/Kconfig5
-rw-r--r--drivers/misc/asus-laptop.c5
-rw-r--r--drivers/misc/sony-laptop.c28
-rw-r--r--drivers/misc/thinkpad_acpi.c26
-rw-r--r--drivers/mmc/core/bus.c4
-rw-r--r--drivers/mmc/core/host.c4
-rw-r--r--drivers/mmc/host/sdhci.c53
-rw-r--r--drivers/mmc/host/sdhci.h1
-rw-r--r--drivers/net/Kconfig15
-rw-r--r--drivers/net/bsd_comp.c6
-rw-r--r--drivers/net/dm9000.c25
-rw-r--r--drivers/net/ehea/ehea_main.c8
-rw-r--r--drivers/net/ehea/ehea_qmr.c6
-rw-r--r--drivers/net/eql.c2
-rw-r--r--drivers/net/forcedeth.c12
-rw-r--r--drivers/net/irda/kingsun-sir.c4
-rw-r--r--drivers/net/meth.c2
-rw-r--r--drivers/net/mlx4/reset.c3
-rw-r--r--drivers/net/myri10ge/myri10ge.c34
-rw-r--r--drivers/net/phy/phy_device.c2
-rw-r--r--drivers/net/ppp_generic.c2
-rw-r--r--drivers/net/sgiseeq.c4
-rw-r--r--drivers/net/sky2.c68
-rw-r--r--drivers/net/sky2.h3
-rw-r--r--drivers/net/slip.c2
-rw-r--r--drivers/pci/hotplug/acpiphp_ibm.c7
-rw-r--r--drivers/pci/hotplug/cpqphp_ctrl.c4
-rw-r--r--drivers/pci/pci.h8
-rw-r--r--drivers/pci/probe.c18
-rw-r--r--drivers/pci/quirks.c7
-rw-r--r--drivers/pnp/card.c16
-rw-r--r--drivers/pnp/core.c7
-rw-r--r--drivers/pnp/driver.c6
-rw-r--r--drivers/pnp/interface.c9
-rw-r--r--drivers/pnp/isapnp/core.c24
-rw-r--r--drivers/pnp/isapnp/proc.c45
-rw-r--r--drivers/pnp/manager.c27
-rw-r--r--drivers/pnp/pnpacpi/core.c4
-rw-r--r--drivers/pnp/pnpacpi/rsparser.c23
-rw-r--r--drivers/pnp/pnpbios/core.c44
-rw-r--r--drivers/pnp/pnpbios/proc.c2
-rw-r--r--drivers/pnp/pnpbios/rsparser.c9
-rw-r--r--drivers/pnp/resource.c26
-rw-r--r--drivers/rtc/rtc-m41t80.c2
-rw-r--r--drivers/rtc/rtc-max6902.c6
-rw-r--r--drivers/rtc/rtc-rs5c348.c2
-rw-r--r--drivers/s390/block/dasd_diag.c1
-rw-r--r--drivers/s390/char/raw3270.c1
-rw-r--r--drivers/s390/char/vmur.c250
-rw-r--r--drivers/s390/char/vmur.h1
-rw-r--r--drivers/s390/cio/cmf.c10
-rw-r--r--drivers/s390/cio/device.c5
-rw-r--r--drivers/s390/cio/device_id.c48
-rw-r--r--drivers/s390/cio/qdio.c5
-rw-r--r--drivers/scsi/Kconfig10
-rw-r--r--drivers/serial/8250.c85
-rw-r--r--drivers/serial/8250_pci.c192
-rw-r--r--drivers/serial/serial_core.c7
-rw-r--r--drivers/serial/serial_txx9.c14
-rw-r--r--drivers/serial/sunsu.c5
-rw-r--r--drivers/serial/sunzilog.c14
-rw-r--r--drivers/usb/Kconfig4
-rw-r--r--drivers/usb/atm/cxacru.c3
-rw-r--r--drivers/usb/atm/ueagle-atm.c5
-rw-r--r--drivers/usb/class/cdc-acm.c12
-rw-r--r--drivers/usb/core/driver.c9
-rw-r--r--drivers/usb/core/hub.c3
-rw-r--r--drivers/usb/core/message.c28
-rw-r--r--drivers/usb/core/quirks.c12
-rw-r--r--drivers/usb/gadget/dummy_hcd.c2
-rw-r--r--drivers/usb/gadget/file_storage.c10
-rw-r--r--drivers/usb/gadget/fsl_usb2_udc.c77
-rw-r--r--drivers/usb/gadget/pxa2xx_udc.c4
-rw-r--r--drivers/usb/host/Kconfig2
-rw-r--r--drivers/usb/host/ehci-au1xxx.c5
-rw-r--r--drivers/usb/host/ehci-hcd.c67
-rw-r--r--drivers/usb/host/ehci-mem.c3
-rw-r--r--drivers/usb/host/ehci-ppc-soc.c22
-rw-r--r--drivers/usb/host/ehci-q.c4
-rw-r--r--drivers/usb/host/ehci-sched.c127
-rw-r--r--drivers/usb/host/ehci.h14
-rw-r--r--drivers/usb/host/ohci-dbg.c2
-rw-r--r--drivers/usb/host/r8a66597-hcd.c2
-rw-r--r--drivers/usb/host/u132-hcd.c3
-rw-r--r--drivers/usb/serial/airprime.c1
-rw-r--r--drivers/usb/serial/belkin_sa.c4
-rw-r--r--drivers/usb/serial/ftdi_sio.c2
-rw-r--r--drivers/usb/serial/ftdi_sio.h3
-rw-r--r--drivers/usb/serial/garmin_gps.c93
-rw-r--r--drivers/usb/serial/ipaq.c1
-rw-r--r--drivers/usb/serial/option.c10
-rw-r--r--drivers/usb/serial/oti6858.c10
-rw-r--r--drivers/usb/serial/safe_serial.c6
-rw-r--r--drivers/usb/serial/visor.c2
-rw-r--r--drivers/usb/serial/visor.h3
-rw-r--r--drivers/usb/storage/unusual_devs.h2
-rw-r--r--drivers/usb/storage/usb.c33
-rw-r--r--drivers/usb/storage/usb.h1
-rw-r--r--drivers/video/au1100fb.c92
-rw-r--r--drivers/video/bw2.c22
-rw-r--r--drivers/video/cg3.c17
-rw-r--r--drivers/video/console/Kconfig2
-rw-r--r--drivers/video/console/newport_con.c3
-rw-r--r--drivers/video/console/sticore.c14
-rw-r--r--drivers/video/imsttfb.c2
-rw-r--r--drivers/video/pxafb.c2
-rw-r--r--drivers/w1/w1_int.c10
-rw-r--r--drivers/zorro/zorro-sysfs.c2
-rw-r--r--fs/9p/fid.c17
-rw-r--r--fs/9p/fid.h1
-rw-r--r--fs/autofs4/root.c31
-rw-r--r--fs/cifs/CHANGES5
-rw-r--r--fs/cifs/README13
-rw-r--r--fs/cifs/TODO3
-rw-r--r--fs/cifs/file.c33
-rw-r--r--fs/cifs/sess.c4
-rw-r--r--fs/direct-io.c18
-rw-r--r--fs/ecryptfs/inode.c4
-rw-r--r--fs/exec.c25
-rw-r--r--fs/jffs2/write.c3
-rw-r--r--fs/proc/array.c44
-rw-r--r--fs/signalfd.c14
-rw-r--r--fs/sysfs/bin.c7
-rw-r--r--fs/sysfs/dir.c21
-rw-r--r--include/acpi/acpi_bus.h10
-rw-r--r--include/acpi/acpixf.h2
-rw-r--r--include/acpi/acstruct.h2
-rw-r--r--include/asm-avr32/io.h2
-rw-r--r--include/asm-avr32/pgalloc.h30
-rw-r--r--include/asm-avr32/pgtable.h4
-rw-r--r--include/asm-i386/io.h3
-rw-r--r--include/asm-i386/io_apic.h1
-rw-r--r--include/asm-i386/mach-default/mach_wakecpu.h3
-rw-r--r--include/asm-i386/mach-es7000/mach_wakecpu.h3
-rw-r--r--include/asm-i386/nmi.h3
-rw-r--r--include/asm-ia64/atomic.h4
-rw-r--r--include/asm-ia64/hw_irq.h7
-rw-r--r--include/asm-ia64/machvec.h7
-rw-r--r--include/asm-ia64/machvec_init.h1
-rw-r--r--include/asm-ia64/machvec_sn2.h2
-rw-r--r--include/asm-m68k/ioctls.h4
-rw-r--r--include/asm-m68k/page.h10
-rw-r--r--include/asm-m68k/processor.h4
-rw-r--r--include/asm-m68k/termbits.h5
-rw-r--r--include/asm-m68k/termios.h6
-rw-r--r--include/asm-m68knommu/pgtable.h2
-rw-r--r--include/asm-mips/bcache.h1
-rw-r--r--include/asm-mips/edac.h17
-rw-r--r--include/asm-mips/gt64240.h1235
-rw-r--r--include/asm-mips/jmr3927/jmr3927.h3
-rw-r--r--include/asm-mips/jmr3927/tx3927.h36
-rw-r--r--include/asm-mips/mach-generic/ide.h76
-rw-r--r--include/asm-mips/marvell.h59
-rw-r--r--include/asm-mips/pgtable-32.h16
-rw-r--r--include/asm-mips/pgtable.h12
-rw-r--r--include/asm-mips/smtc.h10
-rw-r--r--include/asm-mips/stacktrace.h6
-rw-r--r--include/asm-mips/tx4927/toshiba_rbtx4927.h2
-rw-r--r--include/asm-mips/tx4927/tx4927.h49
-rw-r--r--include/asm-mips/tx4927/tx4927_pci.h23
-rw-r--r--include/asm-mips/tx4938/rbtx4938.h25
-rw-r--r--include/asm-mips/tx4938/tx4938.h41
-rw-r--r--include/asm-mips/txx9irq.h30
-rw-r--r--include/asm-parisc/io.h10
-rw-r--r--include/asm-parisc/vga.h6
-rw-r--r--include/asm-powerpc/reg_booke.h12
-rw-r--r--include/asm-s390/atomic.h26
-rw-r--r--include/asm-s390/cio.h15
-rw-r--r--include/asm-s390/diag.h39
-rw-r--r--include/asm-s390/pgalloc.h2
-rw-r--r--include/asm-sh/dma-mapping.h19
-rw-r--r--include/asm-sh64/dma-mapping.h18
-rw-r--r--include/asm-sparc/sbus.h1
-rw-r--r--include/asm-sparc/sfp-machine.h6
-rw-r--r--include/asm-sparc/tlbflush.h6
-rw-r--r--include/asm-sparc64/elf.h10
-rw-r--r--include/asm-sparc64/percpu.h4
-rw-r--r--include/asm-sparc64/sfp-machine.h2
-rw-r--r--include/asm-sparc64/system.h26
-rw-r--r--include/asm-x86_64/io_apic.h6
-rw-r--r--include/asm-x86_64/nmi.h3
-rw-r--r--include/linux/Kbuild1
-rw-r--r--include/linux/audit.h4
-rw-r--r--include/linux/ide.h4
-rw-r--r--include/linux/if_pppol2tp.h4
-rw-r--r--include/linux/input.h6
-rw-r--r--include/linux/kbd_kern.h3
-rw-r--r--include/linux/mempolicy.h2
-rw-r--r--include/linux/mm.h2
-rw-r--r--include/linux/mmzone.h18
-rw-r--r--include/linux/mod_devicetable.h3
-rw-r--r--include/linux/pci.h4
-rw-r--r--include/linux/pci_ids.h10
-rw-r--r--include/linux/pmu.h2
-rw-r--r--include/linux/sched.h8
-rw-r--r--include/linux/security.h20
-rw-r--r--include/linux/selection.h2
-rw-r--r--include/linux/serial_reg.h1
-rw-r--r--include/linux/videodev2.h2
-rw-r--r--include/math-emu/op-common.h5
-rw-r--r--include/math-emu/soft-fp.h7
-rw-r--r--include/rdma/ib_mad.h2
-rw-r--r--include/rdma/ib_verbs.h7
-rw-r--r--init/main.c12
-rw-r--r--kernel/auditsc.c2
-rw-r--r--kernel/futex.c1
-rw-r--r--kernel/irq/manage.c2
-rw-r--r--kernel/module.c3
-rw-r--r--kernel/posix-timers.c9
-rw-r--r--kernel/printk.c13
-rw-r--r--kernel/sched.c88
-rw-r--r--kernel/sched_debug.c3
-rw-r--r--kernel/sched_fair.c106
-rw-r--r--kernel/sched_rt.c11
-rw-r--r--kernel/signal.c4
-rw-r--r--kernel/sysctl.c34
-rw-r--r--kernel/workqueue.c2
-rw-r--r--lib/Kconfig3
-rw-r--r--lib/Makefile3
-rw-r--r--lib/iomap.c15
-rw-r--r--mm/hugetlb.c2
-rw-r--r--mm/mempolicy.c2
-rw-r--r--mm/mmap.c6
-rw-r--r--mm/nommu.c2
-rw-r--r--mm/page_alloc.c13
-rw-r--r--mm/slab.c14
-rw-r--r--mm/slub.c15
-rw-r--r--mm/sparse.c14
-rw-r--r--mm/vmscan.c69
-rw-r--r--net/802/psnap.c17
-rw-r--r--net/8021q/vlan_dev.c12
-rw-r--r--net/8021q/vlanproc.c2
-rw-r--r--net/9p/conv.c1
-rw-r--r--net/9p/mux.c9
-rw-r--r--net/ax25/ax25_iface.c2
-rw-r--r--net/bridge/br_netfilter.c12
-rw-r--r--net/bridge/br_stp_if.c2
-rw-r--r--net/bridge/br_sysfs_br.c25
-rw-r--r--net/core/dev_mcast.c14
-rw-r--r--net/core/ethtool.c1
-rw-r--r--net/core/neighbour.c3
-rw-r--r--net/dccp/ccids/ccid2.c2
-rw-r--r--net/econet/af_econet.c3
-rw-r--r--net/ipv4/ah4.c2
-rw-r--r--net/ipv4/ip_sockglue.c4
-rw-r--r--net/ipv4/netfilter/nf_nat_sip.c2
-rw-r--r--net/ipv4/tcp_input.c10
-rw-r--r--net/ipv6/ip6_output.c2
-rw-r--r--net/ipv6/ipv6_sockglue.c6
-rw-r--r--net/irda/irmod.c2
-rw-r--r--net/irda/irnetlink.c2
-rw-r--r--net/mac80211/ieee80211.c1
-rw-r--r--net/mac80211/ieee80211_sta.c6
-rw-r--r--net/netfilter/nf_conntrack_sip.c8
-rw-r--r--net/netfilter/xt_u32.c2
-rw-r--r--net/socket.c2
-rw-r--r--security/commoncap.c4
-rw-r--r--security/dummy.c4
-rw-r--r--security/selinux/hooks.c4
-rw-r--r--security/selinux/ss/services.c2
567 files changed, 8334 insertions, 10830 deletions
diff --git a/Documentation/DocBook/deviceiobook.tmpl b/Documentation/DocBook/deviceiobook.tmpl
index 90ed23df1f68..c917de681ccd 100644
--- a/Documentation/DocBook/deviceiobook.tmpl
+++ b/Documentation/DocBook/deviceiobook.tmpl
@@ -316,7 +316,8 @@ CPU B: spin_unlock_irqrestore(&amp;dev_lock, flags)
316 316
317 <chapter id="pubfunctions"> 317 <chapter id="pubfunctions">
318 <title>Public Functions Provided</title> 318 <title>Public Functions Provided</title>
319!Einclude/asm-i386/io.h 319!Iinclude/asm-i386/io.h
320!Elib/iomap.c
320 </chapter> 321 </chapter>
321 322
322</book> 323</book>
diff --git a/Documentation/HOWTO b/Documentation/HOWTO
index f8cc3f8ed152..c64e969dc33b 100644
--- a/Documentation/HOWTO
+++ b/Documentation/HOWTO
@@ -208,7 +208,7 @@ tools. One such tool that is particularly recommended is the Linux
208Cross-Reference project, which is able to present source code in a 208Cross-Reference project, which is able to present source code in a
209self-referential, indexed webpage format. An excellent up-to-date 209self-referential, indexed webpage format. An excellent up-to-date
210repository of the kernel code may be found at: 210repository of the kernel code may be found at:
211 http://sosdg.org/~coywolf/lxr/ 211 http://users.sosdg.org/~qiyong/lxr/
212 212
213 213
214The development process 214The development process
@@ -384,7 +384,7 @@ One of the best ways to put into practice your hacking skills is by fixing
384bugs reported by other people. Not only you will help to make the kernel 384bugs reported by other people. Not only you will help to make the kernel
385more stable, you'll learn to fix real world problems and you will improve 385more stable, you'll learn to fix real world problems and you will improve
386your skills, and other developers will be aware of your presence. Fixing 386your skills, and other developers will be aware of your presence. Fixing
387bugs is one of the best ways to earn merit amongst the developers, because 387bugs is one of the best ways to get merits among other developers, because
388not many people like wasting time fixing other people's bugs. 388not many people like wasting time fixing other people's bugs.
389 389
390To work in the already reported bug reports, go to http://bugzilla.kernel.org. 390To work in the already reported bug reports, go to http://bugzilla.kernel.org.
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index d6b45a9b29b4..397575880dc4 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -560,7 +560,7 @@ NO!!!! No more huge patch bombs to linux-kernel@vger.kernel.org people!
560 <http://marc.theaimsgroup.com/?l=linux-kernel&m=112112749912944&w=2> 560 <http://marc.theaimsgroup.com/?l=linux-kernel&m=112112749912944&w=2>
561 561
562Kernel Documentation/CodingStyle: 562Kernel Documentation/CodingStyle:
563 <http://sosdg.org/~coywolf/lxr/source/Documentation/CodingStyle> 563 <http://users.sosdg.org/~qiyong/lxr/source/Documentation/CodingStyle>
564 564
565Linus Torvalds's mail on the canonical patch format: 565Linus Torvalds's mail on the canonical patch format:
566 <http://lkml.org/lkml/2005/4/7/183> 566 <http://lkml.org/lkml/2005/4/7/183>
diff --git a/Documentation/accounting/getdelays.c b/Documentation/accounting/getdelays.c
index 24c5aade8998..cbee3a27f768 100644
--- a/Documentation/accounting/getdelays.c
+++ b/Documentation/accounting/getdelays.c
@@ -196,7 +196,7 @@ void print_delayacct(struct taskstats *t)
196 "IO %15s%15s\n" 196 "IO %15s%15s\n"
197 " %15llu%15llu\n" 197 " %15llu%15llu\n"
198 "MEM %15s%15s\n" 198 "MEM %15s%15s\n"
199 " %15llu%15llu\n" 199 " %15llu%15llu\n",
200 "count", "real total", "virtual total", "delay total", 200 "count", "real total", "virtual total", "delay total",
201 t->cpu_count, t->cpu_run_real_total, t->cpu_run_virtual_total, 201 t->cpu_count, t->cpu_run_real_total, t->cpu_run_virtual_total,
202 t->cpu_delay_total, 202 t->cpu_delay_total,
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware
index b4d306ae9234..f2e908d7f90d 100644
--- a/Documentation/dvb/get_dvb_firmware
+++ b/Documentation/dvb/get_dvb_firmware
@@ -111,21 +111,21 @@ sub tda10045 {
111} 111}
112 112
113sub tda10046 { 113sub tda10046 {
114 my $sourcefile = "tt_budget_217g.zip"; 114 my $sourcefile = "TT_PCI_2.19h_28_11_2006.zip";
115 my $url = "http://www.technotrend.de/new/217g/$sourcefile"; 115 my $url = "http://technotrend-online.com/download/software/219/$sourcefile";
116 my $hash = "6a7e1e2f2644b162ff0502367553c72d"; 116 my $hash = "6a7e1e2f2644b162ff0502367553c72d";
117 my $outfile = "dvb-fe-tda10046.fw"; 117 my $outfile = "dvb-fe-tda10046.fw";
118 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); 118 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
119 119
120 checkstandard(); 120 checkstandard();
121 121
122 wgetfile($sourcefile, $url); 122 wgetfile($sourcefile, $url);
123 unzip($sourcefile, $tmpdir); 123 unzip($sourcefile, $tmpdir);
124 extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x3f731, 24478, "$tmpdir/fwtmp"); 124 extract("$tmpdir/TT_PCI_2.19h_28_11_2006/software/OEM/PCI/App/ttlcdacc.dll", 0x65389, 24478, "$tmpdir/fwtmp");
125 verify("$tmpdir/fwtmp", $hash); 125 verify("$tmpdir/fwtmp", $hash);
126 copy("$tmpdir/fwtmp", $outfile); 126 copy("$tmpdir/fwtmp", $outfile);
127 127
128 $outfile; 128 $outfile;
129} 129}
130 130
131sub tda10046lifeview { 131sub tda10046lifeview {
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index a43d2878a4ef..b9a3fdc1cc5a 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -197,6 +197,14 @@ Who: Len Brown <len.brown@intel.com>
197 197
198--------------------------- 198---------------------------
199 199
200What: /proc/acpi/event
201When: February 2008
202Why: /proc/acpi/event has been replaced by events via the input layer
203 and netlink since 2.6.23.
204Who: Len Brown <len.brown@intel.com>
205
206---------------------------
207
200What: Compaq touchscreen device emulation 208What: Compaq touchscreen device emulation
201When: Oct 2007 209When: Oct 2007
202Files: drivers/input/tsdev.c 210Files: drivers/input/tsdev.c
diff --git a/Documentation/filesystems/9p.txt b/Documentation/filesystems/9p.txt
index bbd8b28c13de..cda6905cbe49 100644
--- a/Documentation/filesystems/9p.txt
+++ b/Documentation/filesystems/9p.txt
@@ -6,12 +6,26 @@ ABOUT
6 6
7v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol. 7v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
8 8
9This software was originally developed by Ron Minnich <rminnich@lanl.gov> 9This software was originally developed by Ron Minnich <rminnich@sandia.gov>
10and Maya Gokhale <maya@lanl.gov>. Additional development by Greg Watson 10and Maya Gokhale. Additional development by Greg Watson
11<gwatson@lanl.gov> and most recently Eric Van Hensbergen 11<gwatson@lanl.gov> and most recently Eric Van Hensbergen
12<ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox 12<ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
13<rsc@swtch.com>. 13<rsc@swtch.com>.
14 14
15The best detailed explanation of the Linux implementation and applications of
16the 9p client is available in the form of a USENIX paper:
17 http://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html
18
19Other applications are described in the following papers:
20 * XCPU & Clustering
21 http://www.xcpu.org/xcpu-talk.pdf
22 * KVMFS: control file system for KVM
23 http://www.xcpu.org/kvmfs.pdf
24 * CellFS: A New ProgrammingModel for the Cell BE
25 http://www.xcpu.org/cellfs-talk.pdf
26 * PROSE I/O: Using 9p to enable Application Partitions
27 http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf
28
15USAGE 29USAGE
16===== 30=====
17 31
@@ -90,9 +104,9 @@ subset of the namespace by extending the path: '#U*'/tmp would just export
90and export. 104and export.
91 105
92A Linux version of the 9p server is now maintained under the npfs project 106A Linux version of the 9p server is now maintained under the npfs project
93on sourceforge (http://sourceforge.net/projects/npfs). There is also a 107on sourceforge (http://sourceforge.net/projects/npfs). The currently
94more stable single-threaded version of the server (named spfs) available from 108maintained version is the single-threaded version of the server (named spfs)
95the same CVS repository. 109available from the same CVS repository.
96 110
97There are user and developer mailing lists available through the v9fs project 111There are user and developer mailing lists available through the v9fs project
98on sourceforge (http://sourceforge.net/projects/v9fs). 112on sourceforge (http://sourceforge.net/projects/v9fs).
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 975f029be25c..b41cde31d112 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -952,14 +952,10 @@ and is between 256 and 4096 characters. It is defined in the file
952 Format: <1-256> 952 Format: <1-256>
953 953
954 maxcpus= [SMP] Maximum number of processors that an SMP kernel 954 maxcpus= [SMP] Maximum number of processors that an SMP kernel
955 should make use of. 955 should make use of. maxcpus=n : n >= 0 limits the
956 Using "nosmp" or "maxcpus=0" will disable SMP 956 kernel to using 'n' processors. n=0 is a special case,
957 entirely (the MPS table probe still happens, though). 957 it is equivalent to "nosmp", which also disables
958 A command-line option of "maxcpus=<NUM>", where <NUM> 958 the IO APIC.
959 is an integer greater than 0, limits the maximum number
960 of CPUs activated in SMP mode to <NUM>.
961 Using "maxcpus=1" on an SMP kernel is the trivial
962 case of an SMP kernel with only one CPU.
963 959
964 max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or 960 max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or
965 equal to this physical address is ignored. 961 equal to this physical address is ignored.
@@ -1184,7 +1180,8 @@ and is between 256 and 4096 characters. It is defined in the file
1184 1180
1185 nosep [BUGS=X86-32] Disables x86 SYSENTER/SYSEXIT support. 1181 nosep [BUGS=X86-32] Disables x86 SYSENTER/SYSEXIT support.
1186 1182
1187 nosmp [SMP] Tells an SMP kernel to act as a UP kernel. 1183 nosmp [SMP] Tells an SMP kernel to act as a UP kernel,
1184 and disable the IO APIC. legacy for "maxcpus=0".
1188 1185
1189 nosoftlockup [KNL] Disable the soft-lockup detector. 1186 nosoftlockup [KNL] Disable the soft-lockup detector.
1190 1187
@@ -1826,6 +1823,10 @@ and is between 256 and 4096 characters. It is defined in the file
1826 -1: disable all active trip points in all thermal zones 1823 -1: disable all active trip points in all thermal zones
1827 <degrees C>: override all lowest active trip points 1824 <degrees C>: override all lowest active trip points
1828 1825
1826 thermal.crt= [HW,ACPI]
1827 -1: disable all critical trip points in all thermal zones
1828 <degrees C>: lower all critical trip points
1829
1829 thermal.nocrt= [HW,ACPI] 1830 thermal.nocrt= [HW,ACPI]
1830 Set to disable actions on ACPI thermal zone 1831 Set to disable actions on ACPI thermal zone
1831 critical and hot trip points. 1832 critical and hot trip points.
diff --git a/Documentation/ko_KR/HOWTO b/Documentation/ko_KR/HOWTO
new file mode 100644
index 000000000000..b51d7ca842ba
--- /dev/null
+++ b/Documentation/ko_KR/HOWTO
@@ -0,0 +1,623 @@
1NOTE:
2This is a version of Documentation/HOWTO translated into korean
3This document is maintained by minchan Kim < minchan.kim@gmail.com>
4If you find any difference between this document and the original file or
5a problem with the translation, please contact the maintainer of this file.
6
7Please also note that the purpose of this file is to be easier to
8read for non English (read: korean) speakers and is not intended as
9a fork. So if you have any comments or updates for this file please
10try to update the original English file first.
11
12==================================
13이 문서는
14Documentation/HOWTO
15의 한글 번역입니다.
16
17역자: 김민찬 <minchan.kim@gmail.com >
18감수: 이제이미 <jamee.lee@samsung.com>
19==================================
20
21어떻게 리눅스 커널 개발을 하는가
22---------------------------------
23
24이 문서는 커널 개발에 있어 가장 중요한 문서이다. 이 문서는
25리눅스 커널 개발자가 되는 법과 리눅스 커널 개발 커뮤니티와 일하는
26법을 담고있다. 커널 프로그래밍의기술적인 측면과 관련된 내용들은
27포함하지 않으려고 하였지만 올바으로 여러분을 안내하는 데 도움이
28될 것이다.
29
30이 문서에서 오래된 것을 발견하면 문서의 아래쪽에 나열된 메인트너에게
31패치를 보내달라.
32
33
34소개
35----
36
37자, 여러분은 리눅스 커널 개발자가 되는 법을 배우고 싶은가? 아니면
38상사로부터"이 장치를 위한 리눅스 드라이버를 작성하시오"라는 말을
39들었는가? 이 문서는 여러분이 겪게 될 과정과 커뮤니티와 일하는 법을
40조언하여 여러분의 목적을 달성하기 위해 필요한 것 모두를 알려주는
41것이다.
42
43커널은 대부분은 C로 작성되었어고 몇몇 아키텍쳐의 의존적인 부분은
44어셈블리로 작성되었다. 커널 개발을 위해 C를 잘 이해하고 있어야 한다.
45여러분이 특정 아키텍쳐의 low-level 개발을 할 것이 아니라면
46어셈블리(특정 아키텍쳐)는 잘 알아야 할 필요는 없다.
47다음의 참고서적들은 기본에 충실한 C 교육이나 수년간의 경험에 견주지는
48못하지만 적어도 참고 용도로는 좋을 것이다
49 - "The C Programming Language" by Kernighan and Ritchie [Prentice Hall]
50 - "Practical C Programming" by Steve Oualline [O'Reilly]
51 - "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
52
53커널은 GNU C와 GNU 툴체인을 사용하여 작성되었다. 이 툴들은 ISO C89 표준을
54따르는 반면 표준에 있지 않은 많은 확장기능도 가지고 있다. 커널은 표준 C
55라이브러리와는 관계없이 freestanding C 환경이어서 C 표준의 일부는
56지원되지 않는다. 임의의 long long 나누기나 floating point는 지원되지 않는다.
57때론 이런 이유로 커널이 그런 확장 기능을 가진 툴체인을 가지고 만들어졌다는
58것이 이해하기 어려울 수도 있고 게다가 불행하게도 그런 것을 정확하게 설명하는
59어떤 참고문서도 있지 않다. 정보를 얻기 위해서는 gcc info (`info gcc`)페이지를
60살펴보라.
61
62여러분은 기존의 개발 커뮤니티와 일하는 법을 배우려고 하고 있다는 것을
63기억하라. 코딩, 스타일, 절차에 관한 훌륭한 표준을 가진 사람들이 모인
64다양한 그룹이 있다. 이 표준들은 오랜동안 크고 지역적으로 분산된 팀들에
65의해 가장 좋은 방법으로 일하기위하여 찾은 것을 기초로 만들어져왔다.
66그 표준들은 문서화가 잘 되어 있기 때문에 가능한한 미리 많은 표준들에
67관하여 배우려고 시도하라. 다른 사람들은 여러분이나 여러분의 회사가
68일하는 방식에 적응하는 것을 원하지는 않는다.
69
70
71법적 문제
72---------
73
74리눅스 커널 소스 코드는 GPL로 배포(release)되었다. 소스트리의 메인
75디렉토리에 있는 라이센스에 관하여 상세하게 쓰여 있는 COPYING이라는
76파일을 봐라.여러분이 라이센스에 관한 더 깊은 문제를 가지고 있다면
77리눅스 커널 메일링 리스트에 묻지말고 변호사와 연락하라. 메일링
78리스트들에 있는 사람들은 변호사가 아니기 때문에 법적 문제에 관하여
79그들의 말에 의지해서는 안된다.
80
81GPL에 관한 잦은 질문들과 답변들은 다음을 참조하라.
82 http://www.gnu.org/licenses/gpl-faq.html
83
84
85문서
86----
87
88리눅스 커널 소스 트리는 커널 커뮤니티와 일하는 법을 배우기 위한 많은
89귀중한 문서들을 가지고 있다. 새로운 기능들이 커널에 들어가게 될 때,
90그 기능을 어떻게 사용하는지에 관한 설명을 위하여 새로운 문서 파일을
91추가하는 것을 권장한다. 커널이 유저스페이스로 노출하는 인터페이스를
92변경하게 되면 변경을 설명하는 메뉴얼 페이지들에 대한 패치나 정보를
93mtk-manpages@gmx.net의 메인트너에게 보낼 것을 권장한다.
94
95다음은 커널 소스 트리에 있는 읽어야 할 파일들의 리스트이다.
96 README
97 이 파일은 리눅스 커널에 관하여 간단한 배경 설명과 커널을 설정하고
98 빌드하기 위해 필요한 것을 설명한다. 커널에 입문하는 사람들은 여기서
99 시작해야 한다.
100
101 Documentation/Changes
102 이 파일은 커널을 성공적으로 빌드하고 실행시키기 위해 필요한 다양한
103 소프트웨어 패키지들의 최소 버젼을 나열한다.
104
105 Documentation/CodingStyle
106 이 문서는 리눅스 커널 코딩 스타일과 그렇게 한 몇몇 이유를 설명한다.
107 모든 새로운 코드는 이 문서에 가이드라인들을 따라야 한다. 대부분의
108 메인트너들은 이 규칙을 따르는 패치들만을 받아들일 것이고 많은 사람들이
109 그 패치가 올바른 스타일일 경우만 코드를 검토할 것이다.
110
111 Documentation/SubmittingPatches
112 Documentation/SubmittingDrivers
113 이 파일들은 성공적으로 패치를 만들고 보내는 법을 다음의 내용들로
114 굉장히 상세히 설명하고 있다(그러나 다음으로 한정되진 않는다).
115 - Email 내용들
116 - Email 양식
117 - 그것을 누구에게 보낼지
118 이러한 규칙들을 따르는 것이 성공을 보장하진 않는다(왜냐하면 모든
119 패치들은 내용과 스타일에 관하여 면밀히 검토되기 때문이다).
120 그러나 규칙을 따르지 않는다면 거의 성공하지도 못할 것이다.
121
122 올바른 패치들을 만드는 법에 관한 훌륭한 다른 문서들이 있다.
123 "The Perfect Patch"
124 http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt
125 "Linux kernel patch submission format"
126 http://linux.yyz.us/patch-format.html
127
128 Documentation/stable_api_nonsense.txt
129 이 문서는 의도적으로 커널이 변하지 않는 API를 갖지 않도록 결정한
130 이유를 설명하며 다음과 같은 것들을 포함한다.
131 - 서브시스템 shim-layer(호환성을 위해?)
132 - 운영 체제들 간의 드라이버 이식성
133 - 커널 소스 트리내에 빠른 변화를 늦추는 것(또는 빠른 변화를 막는 것)
134 이 문서는 리눅스 개발 철학을 이해하는데 필수적이며 다른 운영체제에서
135 리눅스로 옮겨오는 사람들에게는 매우 중요하다.
136
137
138 Documentation/SecurityBugs
139 여러분들이 리눅스 커널의 보안 문제를 발견했다고 생각한다면 이 문서에
140 나온 단계에 따라서 커널 개발자들에게 알리고 그 문제를 해결할 수 있도록
141 도와 달라.
142
143 Documentation/ManagementStyle
144 이 문서는 리눅스 커널 메인트너들이 어떻게 그들의 방법론의 정신을
145 어떻게 공유하고 운영하는지를 설명한다. 이것은 커널 개발에 입문하는
146 모든 사람들(또는 커널 개발에 작은 호기심이라도 있는 사람들)이
147 읽어야 할 중요한 문서이다. 왜냐하면 이 문서는 커널 메인트너들의
148 독특한 행동에 관하여 흔히 있는 오해들과 혼란들을 해소하고 있기
149 때문이다.
150
151 Documentation/stable_kernel_rules.txt
152 이 문서는 안정적인 커널 배포가 이루어지는 규칙을 설명하고 있으며
153 여러분들이 이러한 배포들 중 하나에 변경을 하길 원한다면
154 무엇을 해야 하는지를 설명한다.
155
156 Documentation/kernel-docs.txt
157 커널 개발에 관계된 외부 문서의 리스트이다. 커널 내의 포함된 문서들
158 중에 여러분이 찾고 싶은 문서를 발견하지 못할 경우 이 리스트를
159 살펴보라.
160
161 Documentation/applying-patches.txt
162 패치가 무엇이며 그것을 커널의 다른 개발 브랜치들에 어떻게
163 적용하는지에 관하여 자세히 설명 하고 있는 좋은 입문서이다.
164
165커널은 소스 코드 그 자체에서 자동적으로 만들어질 수 있는 많은 문서들을
166가지고 있다. 이것은 커널 내의 API에 대한 모든 설명, 그리고 락킹을
167올바르게 처리하는 법에 관한 규칙을 포함하고 있다. 이 문서는
168Documentation/DocBook/ 디렉토리 내에서 만들어지며 PDF, Postscript, HTML,
169그리고 man 페이지들로 다음과 같이 실행하여 만들어 진다.
170 make pdfdocs
171 make psdocs
172 make htmldocs
173 make mandocs
174각각의 명령을 메인 커널 소스 디렉토리로부터 실행한다.
175
176
177커널 개발자가 되는 것
178---------------------
179
180여러분이 리눅스 커널 개발에 관하여 아무것도 모른다면 Linux KernelNewbies
181프로젝트를 봐야 한다.
182 http://kernelnewbies.org
183그곳은 거의 모든 종류의 기본적인 커널 개발 질문들(질문하기 전에 먼저
184아카이브를 찾아봐라. 과거에 이미 답변되었을 수도 있다)을 할수있는 도움이
185될만한 메일링 리스트가 있다. 또한 실시간으로 질문 할수 있는 IRC 채널도
186가지고 있으며 리눅스 커널 개발을 배우는 데 유용한 문서들을 보유하고 있다.
187
188웹사이트는 코드구성, 서브시스템들, 그리고 현재 프로젝트들
189(트리 내, 외부에 존재하는)에 관한 기본적인 정보들을 가지고 있다. 또한
190그곳은 커널 컴파일이나 패치를 하는 법과 같은 기본적인 것들을 설명한다.
191
192여러분이 어디서 시작해야 할진 모르지만 커널 개발 커뮤니티에 참여할 수
193있는 일들을 찾길 원한다면 리눅스 커널 Janitor 프로젝트를 살펴봐라.
194 http://janitor.kernelnewbies.org/
195그곳은 시작하기에 아주 딱 좋은 곳이다. 그곳은 리눅스 커널 소스 트리내에
196간단히 정리되고 수정될 수 있는 문제들에 관하여 설명한다. 여러분은 이
197프로젝트를 대표하는 개발자들과 일하면서 자신의 패치를 리눅스 커널 트리에
198반영하기 위한 기본적인 것들을 배우게 될것이며 여러분이 아직 아이디어를
199가지고 있지 않다면 다음에 무엇을 해야할지에 관한 방향을 배울 수 있을
200것이다.
201
202여러분들이 이미 커널 트리에 반영하길 원하는 코드 묶음을 가지고 있지만
203올바른 포맷으로 포장하는데 도움이 필요하다면 그러한 문제를 돕기 위해
204만들어진 kernel-mentors 프로젝트가 있다. 그곳은 메일링 리스트이며
205다음에서 참조할 수 있다.
206 http://selenic.com/mailman/listinfo/kernel-mentors
207
208리눅스 커널 코드에 실제 변경을 하기 전에 반드시 그 코드가 어떻게
209동작하는지 이해하고 있어야 한다. 코드를 분석하기 위하여 특정한 툴의
210도움을 빌려서라도 코드를 직접 읽는 것보다 좋은 것은 없다(대부분의
211자잘한 부분들은 잘 코멘트되어 있다). 그런 툴들 중에 특히 추천할만한
212것은 Linux Cross-Reference project이며 그것은 자기 참조 방식이며
213소스코드를 인덱스된 웹 페이지들의 형태로 보여준다. 최신의 멋진 커널
214코드 저장소는 다음을 통하여 참조할 수 있다.
215 http://sosdg.org/~coywolf/lxr/
216
217
218개발 프로세스
219-------------
220
221리눅스 커널 개발 프로세스는 현재 몇몇 다른 메인 커널 "브랜치들"과
222서브시스템에 특화된 커널 브랜치들로 구성된다. 몇몇 다른 메인
223브랜치들은 다음과 같다.
224 - main 2.6.x 커널 트리
225 - 2.6.x.y - 안정된 커널 트리
226 - 2.6.x -git 커널 패치들
227 - 2.6.x -mm 커널 패치들
228 - 서브시스템을 위한 커널 트리들과 패치들
229
2302.6.x 커널 트리
231---------------
232
2332.6.x 커널들은 Linux Torvalds가 관리하며 kernel.org의 pub/linux/kernel/v2.6/
234디렉토리에서 참조될 수 있다.개발 프로세스는 다음과 같다.
235 - 새로운 커널이 배포되자마자 2주의 시간이 주어진다. 이 기간동은
236 메인트너들은 큰 diff들을 Linus에게 제출할 수 있다. 대개 이 패치들은
237 몇 주 동안 -mm 커널내에 이미 있었던 것들이다. 큰 변경들을 제출하는 데
238 선호되는 방법은 git(커널의 소스 관리 툴, 더 많은 정보들은 http://git.or.cz/
239 에서 참조할 수 있다)를 사용하는 것이지만 순수한 패치파일의 형식으로 보내도
240 것도 무관하다.
241 - 2주 후에 -rc1 커널이 배포되며 지금부터는 전체 커널의 안정성에 영향을
242 미칠수 있는 새로운 기능들을 포함하지 않는 패치들만을 추가될 수 있다.
243 완전히 새로운 드라이버(혹은 파일시스템)는 -rc1 이후에만 받아들여진다는
244 것을 기억해라. 왜냐하면 변경이 자체내에서만 발생하고 추가된 코드가
245 드라이버 외부의 다른 부분에는 영향을 주지 않으므로 그런 변경은
246 퇴보(regression)를 일으킬 만한 위험을 가지고 있지 않기 때문이다. -rc1이
247 배포된 이후에 git를 사용하여 패치들을 Linus에게 보낼수 있지만 패치들은
248 공식적인 메일링 리스트로 보내서 검토를 받을 필요가 있다.
249 - 새로운 -rc는 Linus는 현재 git tree가 테스트 하기에 충분히 안정된 상태에
250 있다고 판단될 때마다 배포된다. 목표는 새로운 -rc 커널을 매주 배포하는
251 것이다.
252 - 이러한 프로세스는 커널이 "준비"되었다고 여겨질때까지 계속된다.
253 프로세스는 대체로 6주간 지속된다.
254 - 각 -rc 배포에 있는 알려진 퇴보의 목록들은 다음 URI에 남겨진다.
255 http://kernelnewbies.org/known_regressions
256
257커널 배포에 있어서 언급할만한 가치가 있는 리눅스 커널 메일링 리스트의
258Andrew Morton의 글이 있다.
259 "커널이 언제 배포될지는 아무로 모른다. 왜냐하면 배포는 알려진
260 버그의 상황에 따라 배포되는 것이지 미리정해 놓은 시간에 따라
261 배포되는 것은 아니기 때문이다."
262
2632.6.x.y - 안정 커널 트리
264------------------------
265
2664 자리 숫자로 이루어진 버젼의 커널들은 -stable 커널들이다. 그것들은 2.6.x
267커널에서 발견된 큰 퇴보들이나 보안 문제들 중 비교적 작고 중요한 수정들을
268포함한다.
269
270이것은 가장 최근의 안정적인 커널을 원하는 사용자에게 추천되는 브랜치이며,
271개발/실험적 버젼을 테스트하는 것을 돕는데는 별로 관심이 없다.
272
273어떤 2.6.x.y 커널도 사용가능하지 않다면 그때는 가장 높은 숫자의 2.6.x
274커널이 현재의 안정 커널이다.
275
2762.6.x.y는 "stable" 팀<stable@kernel.org>에 의해 관리되며 거의 매번 격주로
277배포된다.
278
279커널 트리 문서들 내에 Documentation/stable_kernel_rules.txt 파일은 어떤
280종류의 변경들이 -stable 트리로 들어왔는지와 배포 프로세스가 어떻게
281진행되는지를 설명한다.
282
283
2842.6.x -git 패치들
285------------------
286git 저장소(그러므로 -git이라는 이름이 붙음)에는 날마다 관리되는 Linus의
287커널 트리의 snapshot 들이 있다. 이 패치들은 일반적으로 날마다 배포되며
288Linus의 트리의 현재 상태를 나타낸다. 이 패치들은 정상적인지 조금도
289살펴보지 않고 자동적으로 생성된 것이므로 -rc 커널들 보다도 더 실험적이다.
290
2912.6.x -mm 커널 패치들
292---------------------
293Andrew Morton에 의해 배포된 실험적인 커널 패치들이다. Andrew는 모든 다른
294서브시스템 커널 트리와 패치들을 가져와서 리눅스 커널 메일링 리스트로
295온 많은 패치들과 한데 묶는다. 이 트리는 새로운 기능들과 패치들을 위한
296장소를 제공하는 역할을 한다. 하나의 패치가 -mm에 한동안 있으면서 그 가치가
297증명되게 되면 Andrew나 서브시스템 메인트너는 그것을 메인라인에 포함시키기
298위하여 Linus에게 보낸다.
299
300커널 트리에 포함하고 싶은 모든 새로운 패치들은 Linus에게 보내지기 전에
301-mm 트리에서 테스트를 하는 것을 적극 추천한다.
302
303이 커널들은 안정되게 사용할 시스템에서에 실행하는 것은 적합하지 않으며
304다른 브랜치들의 어떤 것들보다 위험하다.
305
306여러분이 커널 개발 프로세스를 돕길 원한다면 이 커널 배포들을 사용하고
307테스트한 후 어떤 문제를 발견하거나 또는 모든 것이 잘 동작한다면 리눅스
308커널 메일링 리스트로 피드백을 해달라.
309
310이 커널들은 일반적으로 모든 다른 실험적인 패치들과 배포될 당시의
311사용가능한 메인라인 -git 커널들의 몇몇 변경을 포함한다.
312
313-mm 커널들은 정해진 일정대로 배포되지 않는다. 하지만 대개 몇몇 -mm 커널들은
314각 -rc 커널(1부터 3이 흔함) 사이에서 배포된다.
315
316서브시스템 커널 트리들과 패치들
317-------------------------------
318많은 다른 커널 서브시스템 개발자들은 커널의 다른 부분들에서 무슨 일이
319일어나고 있는지를 볼수 있도록 그들의 개발 트리를 공개한다. 이 트리들은
320위에서 설명하였던 것 처럼 -mm 커널 배포들로 합쳐진다.
321
322다음은 활용가능한 커널 트리들을 나열한다.
323 git trees:
324 - Kbuild development tree, Sam Ravnborg < sam@ravnborg.org>
325 git.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git
326
327 - ACPI development tree, Len Brown <len.brown@intel.com >
328 git.kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
329
330 - Block development tree, Jens Axboe <axboe@suse.de>
331 git.kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
332
333 - DRM development tree, Dave Airlie <airlied@linux.ie>
334 git.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git
335
336 - ia64 development tree, Tony Luck < tony.luck@intel.com>
337 git.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git
338
339 - infiniband, Roland Dreier <rolandd@cisco.com >
340 git.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git
341
342 - libata, Jeff Garzik <jgarzik@pobox.com>
343 git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git
344
345 - network drivers, Jeff Garzik <jgarzik@pobox.com>
346 git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
347
348 - pcmcia, Dominik Brodowski < linux@dominikbrodowski.net>
349 git.kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
350
351 - SCSI, James Bottomley < James.Bottomley@SteelEye.com>
352 git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
353
354 quilt trees:
355 - USB, PCI, Driver Core, and I2C, Greg Kroah-Hartman < gregkh@suse.de>
356 kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
357 - x86-64, partly i386, Andi Kleen < ak@suse.de>
358 ftp.firstfloor.org:/pub/ak/x86_64/quilt/
359
360 다른 커널 트리들은 http://kernel.org/git와 MAINTAINERS 파일에서 참조할 수
361 있다.
362
363버그 보고
364---------
365bugzilla.kernel.org는 리눅스 커널 개발자들이 커널의 버그를 추적하는 곳이다.
366사용자들은 발견한 모든 버그들을 보고하기 위하여 이 툴을 사용할 것을 권장한다.
367kernel bugzilla를 사용하는 자세한 방법은 다음을 참조하라.
368 http://test.kernel.org/bugzilla/faq.html
369
370메인 커널 소스 디렉토리에 있는 REPORTING-BUGS 파일은 커널 버그일 것 같은
371것을 보고하는는 법에 관한 좋은 템플릿이고 문제를 추적하기 위해서 커널
372개발자들이 필요로 하는 정보가 무엇들인지를 상세히 설명하고 있다.
373
374
375버그 리포트들의 관리
376--------------------
377
378여러분의 해킹 기술을 연습하는 가장 좋은 방법 중의 하는 다른 사람들이
379보고한 버그들을 수정하는 것이다. 여러분은 커널을 더욱 안정화시키는데
380도움을 줄 뿐만이 아니라 실제있는 문제들을 수정하는 법을 배우게 되고
381그와 함께 여러분들의 기술은 향상될 것이며 다른 개발자들이 여러분의
382존재에 대해 알게 될 것이다. 버그를 수정하는 것은 개발자들 사이에서
383점수를 얻을 수 있는 가장 좋은 방법중의 하나이다. 왜냐하면 많은 사람들은
384다른 사람들의 버그들을 수정하기 위하여 시간을 낭비하지 않기 때문이다.
385
386이미 보고된 버그 리포트들을 가지고 작업하기 위해서 http://bugzilla.kernelorg를
387참조하라. 여러분이 앞으로 생겨날 버그 리포트들의 조언자가 되길 원한다면
388bugme-new 메일링 리스트나(새로운 버그 리포트들만이 이곳에서 메일로 전해진다)
389bugme-janitor 메일링 리스트(bugzilla에 모든 변화들이 여기서 메일로 전해진다)
390에 등록하면 된다.
391
392 http://lists.osdl.org/mailman/listinfo/bugme-new
393 http://lists.osdl.org/mailman/listinfo/bugme-janitors
394
395
396
397메일링 리스트들
398---------------
399
400위의 몇몇 문서들이 설명하였지만 핵심 커널 개발자들의 대다수는
401리눅스 커널 메일링 리스트에 참여하고 있다. 리스트에 등록하고 해지하는
402방법에 관한 자세한 사항은 다음에서 참조할 수 있다.
403 http://vger.kernel.org/vger-lists.html#linux-kernel
404웹상의 많은 다른 곳에도 메일링 리스트의 아카이브들이 있다.
405이러한 아카이브들을 찾으려면 검색 엔진을 사용하라. 예를 들어:
406 http://dir.gmane.org/gmane.linux.kernel
407여러분이 새로운 문제에 관해 리스트에 올리기 전에 말하고 싶은 주제에 대한
408것을 아카이브에서 먼저 찾기를 강력히 권장한다. 이미 상세하게 토론된 많은
409것들이 메일링 리스트의 아카이브에 기록되어 있다.
410
411각각의 커널 서브시스템들의 대부분은 자신들의 개발에 관한 노력들로 이루어진
412분리된 메일링 리스트를 따로 가지고 있다. 다른 그룹들이 무슨 리스트를 가지고
413있는지는 MAINTAINERS 파일을 참조하라.
414
415많은 리스트들은 kernel.org에서 호스트되고 있다. 그 정보들은 다음에서 참조될 수 있다.
416 http://vger.kernel.org/vger-lists.html
417
418리스트들을 사용할 때는 올바른 예절을 따를 것을 유념해라.
419대단하진 않지만 다음 URL은 리스트(혹은 모든 리스트)와 대화하는 몇몇 간단한
420가이드라인을 가지고 있다.
421 http://www.albion.com/netiquette/
422
423여러 사람들이 여러분의 메일에 응답한다면 CC: 즉 수신 리스트는 꽤 커지게
424될 것이다. 아무 이유없이 CC에서 어떤 사람도 제거하거나 리스트 주소로만
425회신하지 마라. 메일을 보낸 사람으로서 하나를 받고 리스트로부터 또
426하나를 받아 두번 받는 것에 익숙하여 있으니 mail-header를 조작하려고 하지
427말아라. 사람들은 그런 것을 좋아하지 않을 것이다.
428
429여러분의 회신의 문맥을 원래대로 유지해야 한다. 여러분들의 회신의 윗부분에
430"John 커널해커는 작성했다...."를 유지하며 여러분들의 의견을 그 메일의 윗부분에
431작성하지 말고 각 인용한 단락들 사이에 넣어라.
432
433여러분들이 패치들을 메일에 넣는다면 그것들은 Documentation/SubmittingPatches에
434나와있는데로 명백히(plain) 읽을 수 있는 텍스트여야 한다. 커널 개발자들은
435첨부파일이나 압축된 패치들을 원하지 않는다. 그들은 여러분들의 패치의
436각 라인 단위로 코멘트를 하길 원하며 압축하거나 첨부하지 않고 보내는 것이
437그렇게 할 수 있는 유일한 방법이다. 여러분들이 사용하는 메일 프로그램이
438스페이스나 탭 문자들을 조작하지 않는지 확인하라. 가장 좋은 첫 테스트는
439메일을 자신에게 보내보고 스스로 그 패치를 적용해보라. 그것이 동작하지
440않는다면 여러분의 메일 프로그램을 고치던가 제대로 동작하는 프로그램으로
441바꾸어라.
442
443무엇보다도 메일링 리스트의 다른 구독자들에게 보여주려 한다는 것을 기억하라.
444
445
446커뮤니티와 일하는 법
447--------------------
448
449커널 커뮤니티의 목적은 가능한한 가장 좋은 커널을 제공하는 것이다. 여러분이
450받아들여질 패치를 제출하게 되면 그 패치의 기술적인 이점으로 검토될 것이다.
451그럼 여러분들은 무엇을 기대하고 있어야 하는가?
452 - 비판
453 - 의견
454 - 변경을 위한 요구
455 - 당위성을 위한 요구
456 - 고요
457
458기억하라. 이것들은 여러분의 패치가 커널로 들어가기 위한 과정이다. 여러분의
459패치들은 비판과 다른 의견을 받을 수 있고 그것들을 기술적인 레벨로 평가하고
460재작업하거나 또는 왜 수정하면 안되는지에 관하여 명료하고 간결한 이유를
461말할 수 있어야 한다. 여러분이 제출한 것에 어떤 응답도 있지 않다면 몇 일을
462기다려보고 다시 시도해라. 때론 너무 많은 메일들 속에 묻혀버리기도 한다.
463
464여러분은 무엇을 해서는 안되는가?
465 - 여러분의 패치가 아무 질문 없이 받아들여지기를 기대하는 것
466 - 방어적이 되는 것
467 - 의견을 무시하는 것
468 - 요청된 변경을 하지 않고 패치를 다시 제출하는 것
469
470가능한한 가장 좋은 기술적인 해답을 찾고 있는 커뮤니티에서는 항상
471어떤 패치가 얼마나 좋은지에 관하여 다른 의견들이 있을 수 있다. 여러분은
472협조적이어야 하고 기꺼이 여러분의 생각을 커널 내에 맞추어야 한다. 아니면
473적어도 여러분의 것이 가치있다는 것을 중명하여야 한다. 잘못된 것도 여러분이
474올바른 방향의 해결책으로 이끌어갈 의지가 있다면 받아들여질 것이라는 점을
475기억하라.
476
477여러분의 첫 패치에 여러분이 수정해야하는 십여개 정도의 회신이 오는
478경우도 흔하다. 이것은 여러분의 패치가 받아들여지지 않을 것이라는 것을
479의미하는 것이 아니고 개인적으로 여러분에게 감정이 있어서 그러는 것도
480아니다. 간단히 여러분의 패치에 제기된 문제들을 수정하고 그것을 다시
481보내라.
482
483
484커널 커뮤니티와 기업 조직간의 차이점
485-----------------------------------------------------------------
486커널 커뮤니티는 가장 전통적인 회사의 개발 환경과는 다르다. 여기에 여러분들의
487문제를 피하기 위한 목록이 있다.
488 여러분들이 제안한 변경들에 관하여 말할 때 좋은 것들 :
489 - " 이것은 여러 문제들을 해겹합니다."
490 - "이것은 2000 라인의 코드를 제거합니다."
491 - "이것은 내가 말하려는 것에 관해 설명하는 패치입니다."
492 - "나는 5개의 다른 아키텍쳐에서 그것을 테스트했슴으로..."
493 - "여기에 일련의 작은 패치들이 있습음로..."
494 - "이것은 일반적인 머신에서 성능을 향상시키므로..."
495
496 여러분들이 말할 때 피해야 할 좋지 않은 것들 :
497 - "우리를 그것을 AIT/ptx/Solaris에서 이러한 방법으로 했다. 그러므로 그것은 좋은 것임에 틀립없다..."
498 - "나는 20년동안 이것을 해왔다. 그러므로..."
499 - "이것은 돈을 벌기위해 나의 회사가 필요로 하는 것이다."
500 - "이것은 우리의 엔터프라이즈 상품 라인을 위한 것이다."
501 - "여기에 나의 생각을 말하고 있는 1000 페이지 설계 문서가 있다."
502 - "나는 6달동안 이것을 했으니..."
503 - "여기세 5000라인 짜리 패치가 있으니..."
504 - "나는 현재 뒤죽박죽인 것을 재작성했다. 그리고 여기에..."
505 - "나는 마감시한을 가지고 있으므로 이 패치는 지금 적용될 필요가 있다."
506
507커널 커뮤니티가 전통적인 소프트웨어 엔지니어링 개발 환경들과
508또 다른 점은 얼굴을 보지 않고 일한다는 점이다. 이메일과 irc를 대화의
509주요수단으로 사용하는 것의 한가지 장점은 성별이나 인종의 차별이
510없다는 것이다. 리눅스 커널의 작업 환경에서는 단지 이메일 주소만
511알수 있기 때문에 여성과 소수 민족들도 모두 받아들여진다. 국제적으로
512일하게 되는 측면은 사람의 이름에 근거하여 성별을 추측할 수 없게
513하기때문에 차별을 없애는 데 도움을 준다. Andrea라는 이름을 가진 남자와
514Pat이라는 이름을 가진 여자가 있을 수도 있는 것이다. 리눅스 커널에서
515작업하며 생각을 표현해왔던 대부분의 여성들은 긍정적인 경험을 가지고
516있다.
517
518언어 장벽은 영어에 익숙하지 않은 몇몇 사람들에게 문제가 될 수도 있다.
519 언어의 훌륭한 구사는 메일링 리스트에서 올바르게 자신의 생각을
520표현하기 위하여 필요하다. 그래서 여러분은 이메일을 보내기 전에
521영어를 올바르게 사용하고 있는지를 체크하는 것이 바람직하다.
522
523
524여러분의 변경을 나누어라
525------------------------
526
527리눅스 커널 커뮤니티는 한꺼번에 굉장히 큰 코드의 묶음을 쉽게
528받아들이지 않는다. 변경은 적절하게 소개되고, 검토되고, 각각의
529부분으로 작게 나누어져야 한다. 이것은 회사에서 하는 것과는 정확히
530반대되는 것이다. 여러분들의 제안은 개발 초기에 일찍이 소개되야 한다.
531그래서 여러분들은 자신이 하고 있는 것에 관하여 피드백을 받을 수 있게
532된다. 커뮤니티가 여러분들이 커뮤니티와 함께 일하고 있다는 것을
533느끼도록 만들고 커뮤니티가 여러분의 기능을 위한 쓰레기 장으로서
534사용되지 않고 있다는 것을 느끼게 하자. 그러나 메일링 리스트에 한번에
53550개의 이메일을 보내지는 말아라. 여러분들의 일련의 패치들은 항상
536더 작아야 한다.
537
538패치를 나누는 이유는 다음과 같다.
539
5401) 작은 패치들은 여러분의 패치들이 적용될 수 있는 확률을 높여준다.
541 왜냐하면 다른 사람들은 정확성을 검증하기 위하여 많은 시간과 노력을
542 들이기를 원하지 않는다. 5줄의 패치는 메인트너가 거의 몇 초간 힐끗
543 보면 적용될 수 있다. 그러나 500 줄의 패치는 정확성을 검토하기 위하여
544 몇시간이 걸릴 수도 있다(걸리는 시간은 패치의 크기 혹은 다른 것에
545 비례하여 기하급수적으로 늘어난다).
546
547 패치를 작게 만드는 것은 무엇인가 잘못되었을 때 디버그하는 것을
548 쉽게 만든다. 즉, 그렇게 만드는 것은 매우 큰 패치를 적용한 후에
549 조사하는 것 보다 작은 패치를 적용한 후에 (그리고 몇몇의 것이
550 깨졌을 때) 하나씩 패치들을 제거해가며 디버그 하기 쉽도록 만들어 준다.
551
5522) 작은 패치들을 보내는 것뿐만 아니라 패치들을 제출하기전에 재작성하고
553 간단하게(혹은 간단한게 재배치하여) 하는 것도 중요하다.
554
555여기에 커널 개발자 Al Viro의 이야기가 있다.
556 "학생의 수학 숙제를 채점하는 선생님을 생각해보라. 선생님은 학생들이
557 답을 얻을때까지 겪은 시행착오를 보길 원하지 않는다. 선생님들은
558 간결하고 가장 뛰어난 답을 보길 원한다. 훌륭한 학생은 이것을 알고
559 마지막으로 답을 얻기 전 중간 과정들을 제출하진 않는다.
560
561 커널 개발도 마찬가지이다. 메인트너들과 검토하는 사람들은 문제를
562 풀어나가는 과정속에 숨겨진 과정을 보길 원하진 않는다. 그들은
563 간결하고 멋진 답을 보길 원한다."
564
565커뮤니티와 함께 일하며 뛰어난 답을 찾고 여러분들의 완성되지 않은 일들
566사이에 균형을 유지해야 하는 어려움이 있을 수 있다. 그러므로 프로세스의
567초반에 여러분의 일을 향상시키기위한 피드백을 얻는 것 뿐만 아니라
568여러분들의 변경들을 작은 묶음으로 유지해서 심지어는 여러분의 작업의
569모든 부분이 지금은 포함될 준비가 되어있지 않지만 작은 부분은 이미
570받아들여질 수 있도록 유지하는 것이 바람직하다.
571
572또한 완성되지 않았고 "나중에 수정될 것이다." 와 같은 것들은 포함하는
573패치들은 받아들여지지 않을 것이라는 점을 유념하라.
574
575변경을 정당화해라
576-----------------
577
578여러분들의 나누어진 패치들을 리눅스 커뮤니티가 왜 반영해야 하는지를
579알도록 하는 것은 매우 중요하다. 새로운 기능들이 필요하고 유용하다는
580것은 반드시 그에 맞는 이유가 있어야 한다.
581
582
583변경을 문서화해라
584-----------------
585
586여러분이 패치를 보내려 할때는 여러분이 무엇을 말하려고 하는지를 충분히
587생각하여 이메일을 작성해야 한다. 이 정보는 패치를 위한 ChangeLog가 될
588것이다. 그리고 항상 그 내용을 보길 원하는 모든 사람들을 위해 보존될
589것이다. 패치는 완벽하게 다음과 같은 내용들을 포함하여 설명해야 한다.
590 - 변경이 왜 필요한지
591 - 패치에 관한 전체 설계 어프로치
592 - 구현 상세들
593 - 테스트 결과들
594
595이것이 무엇인지 더 자세한 것을 알고 싶다면 다음 문서의 ChageLog 항을 봐라.
596 "The Perfect Patch"
597 http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt
598
599
600
601
602이 모든 것을 하는 것은 매우 어려운 일이다. 완벽히 소화하는 데는 적어도 몇년이
603걸릴 수도 있다. 많은 인내와 결의가 필요한 계속되는 개선의 과정이다. 그러나
604가능한한 포기하지 말라. 많은 사람들은 이전부터 해왔던 것이고 그 사람들도
605정확하게 여러분들이 지금 서 있는 그 곳부터 시작했었다.
606
607
608
609
610----------
611"개발 프로세스"(http://linux.tar.gz/articles/2.6-development_process) 섹션을
612작성하는데 있어 참고할 문서를 사용하도록 허락해준 Paolo Ciarrocchi에게
613감사한다. 여러분들이 말해야 할 것과 말해서는 안되는 것의 목록 중 일부를 제공해준
614Randy Dunlap과 Gerrit Huizenga에게 감사한다. 또한 검토와 의견 그리고
615공헌을 아끼지 않은 Pat Mochel, Hanna Linder, Randy Dunlap, Kay Sievers,
616Vojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook, Andrew Morton, Andi Kleen,
617Vadim Lobanov, Jesper Juhl, Adrian Bunk, Keri Harris, Frans Pop,
618David A. Wheeler, Junio Hamano, Michael Kerrisk, and Alex Shepard에게도 감사를 전한다.
619그들의 도움이 없었다면 이 문서는 존재하지 않았을 것이다.
620
621
622
623메인트너: Greg Kroah-Hartman <greg@kroah.com>
diff --git a/Documentation/vm/numa_memory_policy.txt b/Documentation/vm/numa_memory_policy.txt
new file mode 100644
index 000000000000..8242f52d0f22
--- /dev/null
+++ b/Documentation/vm/numa_memory_policy.txt
@@ -0,0 +1,332 @@
1
2What is Linux Memory Policy?
3
4In the Linux kernel, "memory policy" determines from which node the kernel will
5allocate memory in a NUMA system or in an emulated NUMA system. Linux has
6supported platforms with Non-Uniform Memory Access architectures since 2.4.?.
7The current memory policy support was added to Linux 2.6 around May 2004. This
8document attempts to describe the concepts and APIs of the 2.6 memory policy
9support.
10
11Memory policies should not be confused with cpusets (Documentation/cpusets.txt)
12which is an administrative mechanism for restricting the nodes from which
13memory may be allocated by a set of processes. Memory policies are a
14programming interface that a NUMA-aware application can take advantage of. When
15both cpusets and policies are applied to a task, the restrictions of the cpuset
16takes priority. See "MEMORY POLICIES AND CPUSETS" below for more details.
17
18MEMORY POLICY CONCEPTS
19
20Scope of Memory Policies
21
22The Linux kernel supports _scopes_ of memory policy, described here from
23most general to most specific:
24
25 System Default Policy: this policy is "hard coded" into the kernel. It
26 is the policy that governs all page allocations that aren't controlled
27 by one of the more specific policy scopes discussed below. When the
28 system is "up and running", the system default policy will use "local
29 allocation" described below. However, during boot up, the system
30 default policy will be set to interleave allocations across all nodes
31 with "sufficient" memory, so as not to overload the initial boot node
32 with boot-time allocations.
33
34 Task/Process Policy: this is an optional, per-task policy. When defined
35 for a specific task, this policy controls all page allocations made by or
36 on behalf of the task that aren't controlled by a more specific scope.
37 If a task does not define a task policy, then all page allocations that
38 would have been controlled by the task policy "fall back" to the System
39 Default Policy.
40
41 The task policy applies to the entire address space of a task. Thus,
42 it is inheritable, and indeed is inherited, across both fork()
43 [clone() w/o the CLONE_VM flag] and exec*(). This allows a parent task
44 to establish the task policy for a child task exec()'d from an
45 executable image that has no awareness of memory policy. See the
46 MEMORY POLICY APIS section, below, for an overview of the system call
47 that a task may use to set/change it's task/process policy.
48
49 In a multi-threaded task, task policies apply only to the thread
50 [Linux kernel task] that installs the policy and any threads
51 subsequently created by that thread. Any sibling threads existing
52 at the time a new task policy is installed retain their current
53 policy.
54
55 A task policy applies only to pages allocated after the policy is
56 installed. Any pages already faulted in by the task when the task
57 changes its task policy remain where they were allocated based on
58 the policy at the time they were allocated.
59
60 VMA Policy: A "VMA" or "Virtual Memory Area" refers to a range of a task's
61 virtual adddress space. A task may define a specific policy for a range
62 of its virtual address space. See the MEMORY POLICIES APIS section,
63 below, for an overview of the mbind() system call used to set a VMA
64 policy.
65
66 A VMA policy will govern the allocation of pages that back this region of
67 the address space. Any regions of the task's address space that don't
68 have an explicit VMA policy will fall back to the task policy, which may
69 itself fall back to the System Default Policy.
70
71 VMA policies have a few complicating details:
72
73 VMA policy applies ONLY to anonymous pages. These include pages
74 allocated for anonymous segments, such as the task stack and heap, and
75 any regions of the address space mmap()ed with the MAP_ANONYMOUS flag.
76 If a VMA policy is applied to a file mapping, it will be ignored if
77 the mapping used the MAP_SHARED flag. If the file mapping used the
78 MAP_PRIVATE flag, the VMA policy will only be applied when an
79 anonymous page is allocated on an attempt to write to the mapping--
80 i.e., at Copy-On-Write.
81
82 VMA policies are shared between all tasks that share a virtual address
83 space--a.k.a. threads--independent of when the policy is installed; and
84 they are inherited across fork(). However, because VMA policies refer
85 to a specific region of a task's address space, and because the address
86 space is discarded and recreated on exec*(), VMA policies are NOT
87 inheritable across exec(). Thus, only NUMA-aware applications may
88 use VMA policies.
89
90 A task may install a new VMA policy on a sub-range of a previously
91 mmap()ed region. When this happens, Linux splits the existing virtual
92 memory area into 2 or 3 VMAs, each with it's own policy.
93
94 By default, VMA policy applies only to pages allocated after the policy
95 is installed. Any pages already faulted into the VMA range remain
96 where they were allocated based on the policy at the time they were
97 allocated. However, since 2.6.16, Linux supports page migration via
98 the mbind() system call, so that page contents can be moved to match
99 a newly installed policy.
100
101 Shared Policy: Conceptually, shared policies apply to "memory objects"
102 mapped shared into one or more tasks' distinct address spaces. An
103 application installs a shared policies the same way as VMA policies--using
104 the mbind() system call specifying a range of virtual addresses that map
105 the shared object. However, unlike VMA policies, which can be considered
106 to be an attribute of a range of a task's address space, shared policies
107 apply directly to the shared object. Thus, all tasks that attach to the
108 object share the policy, and all pages allocated for the shared object,
109 by any task, will obey the shared policy.
110
111 As of 2.6.22, only shared memory segments, created by shmget() or
112 mmap(MAP_ANONYMOUS|MAP_SHARED), support shared policy. When shared
113 policy support was added to Linux, the associated data structures were
114 added to hugetlbfs shmem segments. At the time, hugetlbfs did not
115 support allocation at fault time--a.k.a lazy allocation--so hugetlbfs
116 shmem segments were never "hooked up" to the shared policy support.
117 Although hugetlbfs segments now support lazy allocation, their support
118 for shared policy has not been completed.
119
120 As mentioned above [re: VMA policies], allocations of page cache
121 pages for regular files mmap()ed with MAP_SHARED ignore any VMA
122 policy installed on the virtual address range backed by the shared
123 file mapping. Rather, shared page cache pages, including pages backing
124 private mappings that have not yet been written by the task, follow
125 task policy, if any, else System Default Policy.
126
127 The shared policy infrastructure supports different policies on subset
128 ranges of the shared object. However, Linux still splits the VMA of
129 the task that installs the policy for each range of distinct policy.
130 Thus, different tasks that attach to a shared memory segment can have
131 different VMA configurations mapping that one shared object. This
132 can be seen by examining the /proc/<pid>/numa_maps of tasks sharing
133 a shared memory region, when one task has installed shared policy on
134 one or more ranges of the region.
135
136Components of Memory Policies
137
138 A Linux memory policy is a tuple consisting of a "mode" and an optional set
139 of nodes. The mode determine the behavior of the policy, while the
140 optional set of nodes can be viewed as the arguments to the behavior.
141
142 Internally, memory policies are implemented by a reference counted
143 structure, struct mempolicy. Details of this structure will be discussed
144 in context, below, as required to explain the behavior.
145
146 Note: in some functions AND in the struct mempolicy itself, the mode
147 is called "policy". However, to avoid confusion with the policy tuple,
148 this document will continue to use the term "mode".
149
150 Linux memory policy supports the following 4 behavioral modes:
151
152 Default Mode--MPOL_DEFAULT: The behavior specified by this mode is
153 context or scope dependent.
154
155 As mentioned in the Policy Scope section above, during normal
156 system operation, the System Default Policy is hard coded to
157 contain the Default mode.
158
159 In this context, default mode means "local" allocation--that is
160 attempt to allocate the page from the node associated with the cpu
161 where the fault occurs. If the "local" node has no memory, or the
162 node's memory can be exhausted [no free pages available], local
163 allocation will "fallback to"--attempt to allocate pages from--
164 "nearby" nodes, in order of increasing "distance".
165
166 Implementation detail -- subject to change: "Fallback" uses
167 a per node list of sibling nodes--called zonelists--built at
168 boot time, or when nodes or memory are added or removed from
169 the system [memory hotplug]. These per node zonelist are
170 constructed with nodes in order of increasing distance based
171 on information provided by the platform firmware.
172
173 When a task/process policy or a shared policy contains the Default
174 mode, this also means "local allocation", as described above.
175
176 In the context of a VMA, Default mode means "fall back to task
177 policy"--which may or may not specify Default mode. Thus, Default
178 mode can not be counted on to mean local allocation when used
179 on a non-shared region of the address space. However, see
180 MPOL_PREFERRED below.
181
182 The Default mode does not use the optional set of nodes.
183
184 MPOL_BIND: This mode specifies that memory must come from the
185 set of nodes specified by the policy.
186
187 The memory policy APIs do not specify an order in which the nodes
188 will be searched. However, unlike "local allocation", the Bind
189 policy does not consider the distance between the nodes. Rather,
190 allocations will fallback to the nodes specified by the policy in
191 order of numeric node id. Like everything in Linux, this is subject
192 to change.
193
194 MPOL_PREFERRED: This mode specifies that the allocation should be
195 attempted from the single node specified in the policy. If that
196 allocation fails, the kernel will search other nodes, exactly as
197 it would for a local allocation that started at the preferred node
198 in increasing distance from the preferred node. "Local" allocation
199 policy can be viewed as a Preferred policy that starts at the node
200 containing the cpu where the allocation takes place.
201
202 Internally, the Preferred policy uses a single node--the
203 preferred_node member of struct mempolicy. A "distinguished
204 value of this preferred_node, currently '-1', is interpreted
205 as "the node containing the cpu where the allocation takes
206 place"--local allocation. This is the way to specify
207 local allocation for a specific range of addresses--i.e. for
208 VMA policies.
209
210 MPOL_INTERLEAVED: This mode specifies that page allocations be
211 interleaved, on a page granularity, across the nodes specified in
212 the policy. This mode also behaves slightly differently, based on
213 the context where it is used:
214
215 For allocation of anonymous pages and shared memory pages,
216 Interleave mode indexes the set of nodes specified by the policy
217 using the page offset of the faulting address into the segment
218 [VMA] containing the address modulo the number of nodes specified
219 by the policy. It then attempts to allocate a page, starting at
220 the selected node, as if the node had been specified by a Preferred
221 policy or had been selected by a local allocation. That is,
222 allocation will follow the per node zonelist.
223
224 For allocation of page cache pages, Interleave mode indexes the set
225 of nodes specified by the policy using a node counter maintained
226 per task. This counter wraps around to the lowest specified node
227 after it reaches the highest specified node. This will tend to
228 spread the pages out over the nodes specified by the policy based
229 on the order in which they are allocated, rather than based on any
230 page offset into an address range or file. During system boot up,
231 the temporary interleaved system default policy works in this
232 mode.
233
234MEMORY POLICY APIs
235
236Linux supports 3 system calls for controlling memory policy. These APIS
237always affect only the calling task, the calling task's address space, or
238some shared object mapped into the calling task's address space.
239
240 Note: the headers that define these APIs and the parameter data types
241 for user space applications reside in a package that is not part of
242 the Linux kernel. The kernel system call interfaces, with the 'sys_'
243 prefix, are defined in <linux/syscalls.h>; the mode and flag
244 definitions are defined in <linux/mempolicy.h>.
245
246Set [Task] Memory Policy:
247
248 long set_mempolicy(int mode, const unsigned long *nmask,
249 unsigned long maxnode);
250
251 Set's the calling task's "task/process memory policy" to mode
252 specified by the 'mode' argument and the set of nodes defined
253 by 'nmask'. 'nmask' points to a bit mask of node ids containing
254 at least 'maxnode' ids.
255
256 See the set_mempolicy(2) man page for more details
257
258
259Get [Task] Memory Policy or Related Information
260
261 long get_mempolicy(int *mode,
262 const unsigned long *nmask, unsigned long maxnode,
263 void *addr, int flags);
264
265 Queries the "task/process memory policy" of the calling task, or
266 the policy or location of a specified virtual address, depending
267 on the 'flags' argument.
268
269 See the get_mempolicy(2) man page for more details
270
271
272Install VMA/Shared Policy for a Range of Task's Address Space
273
274 long mbind(void *start, unsigned long len, int mode,
275 const unsigned long *nmask, unsigned long maxnode,
276 unsigned flags);
277
278 mbind() installs the policy specified by (mode, nmask, maxnodes) as
279 a VMA policy for the range of the calling task's address space
280 specified by the 'start' and 'len' arguments. Additional actions
281 may be requested via the 'flags' argument.
282
283 See the mbind(2) man page for more details.
284
285MEMORY POLICY COMMAND LINE INTERFACE
286
287Although not strictly part of the Linux implementation of memory policy,
288a command line tool, numactl(8), exists that allows one to:
289
290+ set the task policy for a specified program via set_mempolicy(2), fork(2) and
291 exec(2)
292
293+ set the shared policy for a shared memory segment via mbind(2)
294
295The numactl(8) tool is packages with the run-time version of the library
296containing the memory policy system call wrappers. Some distributions
297package the headers and compile-time libraries in a separate development
298package.
299
300
301MEMORY POLICIES AND CPUSETS
302
303Memory policies work within cpusets as described above. For memory policies
304that require a node or set of nodes, the nodes are restricted to the set of
305nodes whose memories are allowed by the cpuset constraints. If the
306intersection of the set of nodes specified for the policy and the set of nodes
307allowed by the cpuset is the empty set, the policy is considered invalid and
308cannot be installed.
309
310The interaction of memory policies and cpusets can be problematic for a
311couple of reasons:
312
3131) the memory policy APIs take physical node id's as arguments. However, the
314 memory policy APIs do not provide a way to determine what nodes are valid
315 in the context where the application is running. An application MAY consult
316 the cpuset file system [directly or via an out of tree, and not generally
317 available, libcpuset API] to obtain this information, but then the
318 application must be aware that it is running in a cpuset and use what are
319 intended primarily as administrative APIs.
320
321 However, as long as the policy specifies at least one node that is valid
322 in the controlling cpuset, the policy can be used.
323
3242) when tasks in two cpusets share access to a memory region, such as shared
325 memory segments created by shmget() of mmap() with the MAP_ANONYMOUS and
326 MAP_SHARED flags, and any of the tasks install shared policy on the region,
327 only nodes whose memories are allowed in both cpusets may be used in the
328 policies. Again, obtaining this information requires "stepping outside"
329 the memory policy APIs, as well as knowing in what cpusets other task might
330 be attaching to the shared region, to use the cpuset information.
331 Furthermore, if the cpusets' allowed memory sets are disjoint, "local"
332 allocation is the only valid policy.
diff --git a/Documentation/watchdog/00-INDEX b/Documentation/watchdog/00-INDEX
new file mode 100644
index 000000000000..c3ea47e507fe
--- /dev/null
+++ b/Documentation/watchdog/00-INDEX
@@ -0,0 +1,10 @@
100-INDEX
2 - this file.
3pcwd-watchdog.txt
4 - documentation for Berkshire Products PC Watchdog ISA cards.
5src/
6 - directory holding watchdog related example programs.
7watchdog-api.txt
8 - description of the Linux Watchdog driver API.
9wdt.txt
10 - description of the Watchdog Timer Interfaces for Linux.
diff --git a/MAINTAINERS b/MAINTAINERS
index e4dde7f1f8d2..48ca8b47150d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -167,11 +167,11 @@ S: Maintained
167P: Eric Van Hensbergen 167P: Eric Van Hensbergen
168M: ericvh@gmail.com 168M: ericvh@gmail.com
169P: Ron Minnich 169P: Ron Minnich
170M: rminnich@lanl.gov 170M: rminnich@sandia.gov
171P: Latchesar Ionkov 171P: Latchesar Ionkov
172M: lucho@ionkov.net 172M: lucho@ionkov.net
173L: v9fs-developer@lists.sourceforge.net 173L: v9fs-developer@lists.sourceforge.net
174W: http://v9fs.sf.net 174W: http://swik.net/v9fs
175T: git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs.git 175T: git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs.git
176S: Maintained 176S: Maintained
177 177
@@ -1009,7 +1009,7 @@ P: Steve French
1009M: sfrench@samba.org 1009M: sfrench@samba.org
1010L: linux-cifs-client@lists.samba.org 1010L: linux-cifs-client@lists.samba.org
1011L: samba-technical@lists.samba.org 1011L: samba-technical@lists.samba.org
1012W: http://us1.samba.org/samba/Linux_CIFS_client.html 1012W: http://linux-cifs.samba.org/
1013T: git kernel.org:/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git 1013T: git kernel.org:/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git
1014S: Supported 1014S: Supported
1015 1015
@@ -2661,6 +2661,12 @@ L: netdev@vger.kernel.org
2661T: git kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6.git 2661T: git kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6.git
2662S: Maintained 2662S: Maintained
2663 2663
2664NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK)
2665P: Paul Moore
2666M: paul.moore@hp.com
2667L: netdev@vger.kernel.org
2668S: Maintained
2669
2664NETWORKING [WIRELESS] 2670NETWORKING [WIRELESS]
2665P: John W. Linville 2671P: John W. Linville
2666M: linville@tuxdriver.com 2672M: linville@tuxdriver.com
@@ -3452,7 +3458,7 @@ S: Maintained
3452 3458
3453TPM DEVICE DRIVER 3459TPM DEVICE DRIVER
3454P: Kylene Hall 3460P: Kylene Hall
3455M: kjhall@us.ibm.com 3461M: tpmdd-devel@lists.sourceforge.net
3456W: http://tpmdd.sourceforge.net 3462W: http://tpmdd.sourceforge.net
3457P: Marcel Selhorst 3463P: Marcel Selhorst
3458M: tpm@selhorst.net 3464M: tpm@selhorst.net
diff --git a/Makefile b/Makefile
index f3229a4945bf..eb28ccb7a2c0 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,8 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 23 3SUBLEVEL = 23
4EXTRAVERSION =-rc3 4EXTRAVERSION =-rc4
5NAME = Holy Dancing Manatees, Batman! 5NAME = Pink Farting Weasel
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
8# To see a list of typical targets execute "make help" 8# To see a list of typical targets execute "make help"
diff --git a/arch/arm/mach-ks8695/board-micrel.c b/arch/arm/mach-ks8695/board-micrel.c
index 8fc0edb5211e..2feeef81d843 100644
--- a/arch/arm/mach-ks8695/board-micrel.c
+++ b/arch/arm/mach-ks8695/board-micrel.c
@@ -23,24 +23,24 @@
23#include "generic.h" 23#include "generic.h"
24 24
25#ifdef CONFIG_PCI 25#ifdef CONFIG_PCI
26static int __init micrel_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 26static int micrel_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
27{ 27{
28 return KS8695_IRQ_EXTERN0; 28 return KS8695_IRQ_EXTERN0;
29} 29}
30 30
31static struct ks8695_pci_cfg micrel_pci = { 31static struct ks8695_pci_cfg __initdata micrel_pci = {
32 .mode = KS8695_MODE_MINIPCI, 32 .mode = KS8695_MODE_MINIPCI,
33 .map_irq = micrel_pci_map_irq, 33 .map_irq = micrel_pci_map_irq,
34}; 34};
35#endif 35#endif
36 36
37 37
38static void micrel_init(void) 38static void __init micrel_init(void)
39{ 39{
40 printk(KERN_INFO "Micrel KS8695 Development Board initializing\n"); 40 printk(KERN_INFO "Micrel KS8695 Development Board initializing\n");
41 41
42#ifdef CONFIG_PCI 42#ifdef CONFIG_PCI
43 ks8695_init_pci(&micrel_pci); 43// ks8695_init_pci(&micrel_pci);
44#endif 44#endif
45 45
46 /* Add devices */ 46 /* Add devices */
diff --git a/arch/arm/mach-s3c2442/Kconfig b/arch/arm/mach-s3c2442/Kconfig
index 88d5fd34fe3b..26d131a77074 100644
--- a/arch/arm/mach-s3c2442/Kconfig
+++ b/arch/arm/mach-s3c2442/Kconfig
@@ -6,7 +6,7 @@
6 6
7config CPU_S3C2442 7config CPU_S3C2442
8 bool 8 bool
9 depends on ARCH_S3C2420 9 depends on ARCH_S3C2410
10 select S3C2410_CLOCK 10 select S3C2410_CLOCK
11 select S3C2410_GPIO 11 select S3C2410_GPIO
12 select S3C2410_PM if PM 12 select S3C2410_PM if PM
diff --git a/arch/avr32/boards/atngw100/setup.c b/arch/avr32/boards/atngw100/setup.c
index 2edcecdea8bd..ef801563bbf5 100644
--- a/arch/avr32/boards/atngw100/setup.c
+++ b/arch/avr32/boards/atngw100/setup.c
@@ -9,6 +9,7 @@
9 */ 9 */
10#include <linux/clk.h> 10#include <linux/clk.h>
11#include <linux/etherdevice.h> 11#include <linux/etherdevice.h>
12#include <linux/i2c-gpio.h>
12#include <linux/init.h> 13#include <linux/init.h>
13#include <linux/linkage.h> 14#include <linux/linkage.h>
14#include <linux/platform_device.h> 15#include <linux/platform_device.h>
@@ -123,6 +124,19 @@ static struct platform_device ngw_gpio_leds = {
123 } 124 }
124}; 125};
125 126
127static struct i2c_gpio_platform_data i2c_gpio_data = {
128 .sda_pin = GPIO_PIN_PA(6),
129 .scl_pin = GPIO_PIN_PA(7),
130};
131
132static struct platform_device i2c_gpio_device = {
133 .name = "i2c-gpio",
134 .id = 0,
135 .dev = {
136 .platform_data = &i2c_gpio_data,
137 },
138};
139
126static int __init atngw100_init(void) 140static int __init atngw100_init(void)
127{ 141{
128 unsigned i; 142 unsigned i;
@@ -147,6 +161,10 @@ static int __init atngw100_init(void)
147 } 161 }
148 platform_device_register(&ngw_gpio_leds); 162 platform_device_register(&ngw_gpio_leds);
149 163
164 at32_select_gpio(i2c_gpio_data.sda_pin, 0);
165 at32_select_gpio(i2c_gpio_data.scl_pin, 0);
166 platform_device_register(&i2c_gpio_device);
167
150 return 0; 168 return 0;
151} 169}
152postcore_initcall(atngw100_init); 170postcore_initcall(atngw100_init);
diff --git a/arch/avr32/boards/atstk1000/Kconfig b/arch/avr32/boards/atstk1000/Kconfig
index 71bc7d364fb7..718578f64069 100644
--- a/arch/avr32/boards/atstk1000/Kconfig
+++ b/arch/avr32/boards/atstk1000/Kconfig
@@ -50,4 +50,30 @@ config BOARD_ATSTK1002_SPI1
50 GPIO lines and accessed through the J1 jumper block. Say "y" 50 GPIO lines and accessed through the J1 jumper block. Say "y"
51 here to configure that SPI controller. 51 here to configure that SPI controller.
52 52
53config BOARD_ATSTK1002_J2_LED
54 bool
55 default BOARD_ATSTK1002_J2_LED8 || BOARD_ATSTK1002_J2_RGB
56
57choice
58 prompt "LEDs connected to J2:"
59 depends on LEDS_GPIO && !BOARD_ATSTK1002_SW4_CUSTOM
60 optional
61 help
62 Select this if you have jumpered the J2 jumper block to the
63 LED0..LED7 amber leds, or to the RGB leds, using a ten-pin
64 IDC cable. A default "heartbeat" trigger is provided, but
65 you can of course override this.
66
67config BOARD_ATSTK1002_J2_LED8
68 bool "LED0..LED7"
69 help
70 Select this if J2 is jumpered to LED0..LED7 amber leds.
71
72config BOARD_ATSTK1002_J2_RGB
73 bool "RGB leds"
74 help
75 Select this if J2 is jumpered to the RGB leds.
76
77endchoice
78
53endif # stk 1002 79endif # stk 1002
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c
index cb93eabb9c6c..c9981b731efa 100644
--- a/arch/avr32/boards/atstk1000/atstk1002.c
+++ b/arch/avr32/boards/atstk1000/atstk1002.c
@@ -11,6 +11,7 @@
11#include <linux/etherdevice.h> 11#include <linux/etherdevice.h>
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/leds.h>
14#include <linux/platform_device.h> 15#include <linux/platform_device.h>
15#include <linux/string.h> 16#include <linux/string.h>
16#include <linux/types.h> 17#include <linux/types.h>
@@ -120,6 +121,65 @@ static void __init set_hw_addr(struct platform_device *pdev)
120 clk_put(pclk); 121 clk_put(pclk);
121} 122}
122 123
124#ifdef CONFIG_BOARD_ATSTK1002_J2_LED
125
126static struct gpio_led stk_j2_led[] = {
127#ifdef CONFIG_BOARD_ATSTK1002_J2_LED8
128#define LEDSTRING "J2 jumpered to LED8"
129 { .name = "led0:amber", .gpio = GPIO_PIN_PB( 8), },
130 { .name = "led1:amber", .gpio = GPIO_PIN_PB( 9), },
131 { .name = "led2:amber", .gpio = GPIO_PIN_PB(10), },
132 { .name = "led3:amber", .gpio = GPIO_PIN_PB(13), },
133 { .name = "led4:amber", .gpio = GPIO_PIN_PB(14), },
134 { .name = "led5:amber", .gpio = GPIO_PIN_PB(15), },
135 { .name = "led6:amber", .gpio = GPIO_PIN_PB(16), },
136 { .name = "led7:amber", .gpio = GPIO_PIN_PB(30),
137 .default_trigger = "heartbeat", },
138#else /* RGB */
139#define LEDSTRING "J2 jumpered to RGB LEDs"
140 { .name = "r1:red", .gpio = GPIO_PIN_PB( 8), },
141 { .name = "g1:green", .gpio = GPIO_PIN_PB(10), },
142 { .name = "b1:blue", .gpio = GPIO_PIN_PB(14), },
143
144 { .name = "r2:red", .gpio = GPIO_PIN_PB( 9),
145 .default_trigger = "heartbeat", },
146 { .name = "g2:green", .gpio = GPIO_PIN_PB(13), },
147 { .name = "b2:blue", .gpio = GPIO_PIN_PB(15),
148 .default_trigger = "heartbeat", },
149 /* PB16, PB30 unused */
150#endif
151};
152
153static struct gpio_led_platform_data stk_j2_led_data = {
154 .num_leds = ARRAY_SIZE(stk_j2_led),
155 .leds = stk_j2_led,
156};
157
158static struct platform_device stk_j2_led_dev = {
159 .name = "leds-gpio",
160 .id = 2, /* gpio block J2 */
161 .dev = {
162 .platform_data = &stk_j2_led_data,
163 },
164};
165
166static void setup_j2_leds(void)
167{
168 unsigned i;
169
170 for (i = 0; i < ARRAY_SIZE(stk_j2_led); i++)
171 at32_select_gpio(stk_j2_led[i].gpio, AT32_GPIOF_OUTPUT);
172
173 printk("STK1002: " LEDSTRING "\n");
174 platform_device_register(&stk_j2_led_dev);
175}
176
177#else
178static void setup_j2_leds(void)
179{
180}
181#endif
182
123void __init setup_board(void) 183void __init setup_board(void)
124{ 184{
125#ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM 185#ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM
@@ -185,6 +245,8 @@ static int __init atstk1002_init(void)
185 at32_add_device_ssc(0, ATMEL_SSC_TX); 245 at32_add_device_ssc(0, ATMEL_SSC_TX);
186#endif 246#endif
187 247
248 setup_j2_leds();
249
188 return 0; 250 return 0;
189} 251}
190postcore_initcall(atstk1002_init); 252postcore_initcall(atstk1002_init);
diff --git a/arch/cris/arch-v10/drivers/Kconfig b/arch/cris/arch-v10/drivers/Kconfig
index e7e724bc0ba6..03e2e68f947d 100644
--- a/arch/cris/arch-v10/drivers/Kconfig
+++ b/arch/cris/arch-v10/drivers/Kconfig
@@ -548,6 +548,7 @@ config ETRAX_IDE
548 select BLK_DEV_IDEDISK 548 select BLK_DEV_IDEDISK
549 select BLK_DEV_IDECD 549 select BLK_DEV_IDECD
550 select BLK_DEV_IDEDMA 550 select BLK_DEV_IDEDMA
551 select IDE_GENERIC
551 help 552 help
552 Enable this to get support for ATA/IDE. 553 Enable this to get support for ATA/IDE.
553 You can't use parallel ports or SCSI ports 554 You can't use parallel ports or SCSI ports
diff --git a/arch/cris/arch-v32/drivers/Kconfig b/arch/cris/arch-v32/drivers/Kconfig
index 1d859c16931e..cc6ba5423754 100644
--- a/arch/cris/arch-v32/drivers/Kconfig
+++ b/arch/cris/arch-v32/drivers/Kconfig
@@ -592,6 +592,7 @@ config ETRAX_IDE
592 select BLK_DEV_IDEDISK 592 select BLK_DEV_IDEDISK
593 select BLK_DEV_IDECD 593 select BLK_DEV_IDECD
594 select BLK_DEV_IDEDMA 594 select BLK_DEV_IDEDMA
595 select IDE_GENERIC
595 help 596 help
596 Enables the ETRAX IDE driver. 597 Enables the ETRAX IDE driver.
597 598
diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c
index e061b63a0038..dfbe7ab9ffe2 100644
--- a/arch/h8300/kernel/process.c
+++ b/arch/h8300/kernel/process.c
@@ -37,6 +37,7 @@
37#include <linux/a.out.h> 37#include <linux/a.out.h>
38#include <linux/interrupt.h> 38#include <linux/interrupt.h>
39#include <linux/reboot.h> 39#include <linux/reboot.h>
40#include <linux/fs.h>
40 41
41#include <asm/uaccess.h> 42#include <asm/uaccess.h>
42#include <asm/system.h> 43#include <asm/system.h>
diff --git a/arch/h8300/kernel/sys_h8300.c b/arch/h8300/kernel/sys_h8300.c
index de7688cfd573..ddc62727dc9f 100644
--- a/arch/h8300/kernel/sys_h8300.c
+++ b/arch/h8300/kernel/sys_h8300.c
@@ -18,6 +18,7 @@
18#include <linux/mman.h> 18#include <linux/mman.h>
19#include <linux/file.h> 19#include <linux/file.h>
20#include <linux/utsname.h> 20#include <linux/utsname.h>
21#include <linux/fs.h>
21 22
22#include <asm/setup.h> 23#include <asm/setup.h>
23#include <asm/uaccess.h> 24#include <asm/uaccess.h>
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index f9524933258a..97b64d7d6bf6 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -614,10 +614,14 @@ config X86_PAE
614 614
615# Common NUMA Features 615# Common NUMA Features
616config NUMA 616config NUMA
617 bool "Numa Memory Allocation and Scheduler Support" 617 bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
618 depends on SMP && HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT || X86_GENERICARCH) && ACPI) 618 depends on SMP && HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT || X86_GENERICARCH) && ACPI) && EXPERIMENTAL
619 default n if X86_PC 619 default n if X86_PC
620 default y if (X86_NUMAQ || X86_SUMMIT) 620 default y if (X86_NUMAQ || X86_SUMMIT)
621 help
622 NUMA support for i386. This is currently high experimental
623 and should be only used for kernel development. It might also
624 cause boot failures.
621 625
622comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI" 626comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
623 depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI) 627 depends on X86_SUMMIT && (!HIGHMEM64G || !ACPI)
@@ -1228,6 +1232,11 @@ menuconfig INSTRUMENTATION
1228 bool "Instrumentation Support" 1232 bool "Instrumentation Support"
1229 depends on EXPERIMENTAL 1233 depends on EXPERIMENTAL
1230 default y 1234 default y
1235 ---help---
1236 Say Y here to get to see options related to performance measurement,
1237 debugging, and testing. This option alone does not add any kernel code.
1238
1239 If you say N, all options in this submenu will be skipped and disabled.
1231 1240
1232if INSTRUMENTATION 1241if INSTRUMENTATION
1233 1242
diff --git a/arch/i386/Makefile b/arch/i386/Makefile
index 01f0ff0daaf4..52b932478c6d 100644
--- a/arch/i386/Makefile
+++ b/arch/i386/Makefile
@@ -51,8 +51,8 @@ cflags-y += -maccumulate-outgoing-args
51CFLAGS += $(shell if [ $(call cc-version) -lt 0400 ] ; then echo $(call cc-option,-fno-unit-at-a-time); fi ;) 51CFLAGS += $(shell if [ $(call cc-version) -lt 0400 ] ; then echo $(call cc-option,-fno-unit-at-a-time); fi ;)
52 52
53# do binutils support CFI? 53# do binutils support CFI?
54cflags-y += $(call as-instr,.cfi_startproc\n.cfi_endproc,-DCONFIG_AS_CFI=1,) 54cflags-y += $(call as-instr,.cfi_startproc\n.cfi_rel_offset esp${comma}0\n.cfi_endproc,-DCONFIG_AS_CFI=1,)
55AFLAGS += $(call as-instr,.cfi_startproc\n.cfi_endproc,-DCONFIG_AS_CFI=1,) 55AFLAGS += $(call as-instr,.cfi_startproc\n.cfi_rel_offset esp${comma}0\n.cfi_endproc,-DCONFIG_AS_CFI=1,)
56 56
57# is .cfi_signal_frame supported too? 57# is .cfi_signal_frame supported too?
58cflags-y += $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1,) 58cflags-y += $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1,)
diff --git a/arch/i386/boot/boot.h b/arch/i386/boot/boot.h
index dec70c9b6050..20bab9431acb 100644
--- a/arch/i386/boot/boot.h
+++ b/arch/i386/boot/boot.h
@@ -87,7 +87,7 @@ static inline void set_fs(u16 seg)
87static inline u16 fs(void) 87static inline u16 fs(void)
88{ 88{
89 u16 seg; 89 u16 seg;
90 asm("movw %%fs,%0" : "=rm" (seg)); 90 asm volatile("movw %%fs,%0" : "=rm" (seg));
91 return seg; 91 return seg;
92} 92}
93 93
@@ -98,7 +98,7 @@ static inline void set_gs(u16 seg)
98static inline u16 gs(void) 98static inline u16 gs(void)
99{ 99{
100 u16 seg; 100 u16 seg;
101 asm("movw %%gs,%0" : "=rm" (seg)); 101 asm volatile("movw %%gs,%0" : "=rm" (seg));
102 return seg; 102 return seg;
103} 103}
104 104
@@ -107,19 +107,19 @@ typedef unsigned int addr_t;
107static inline u8 rdfs8(addr_t addr) 107static inline u8 rdfs8(addr_t addr)
108{ 108{
109 u8 v; 109 u8 v;
110 asm("movb %%fs:%1,%0" : "=r" (v) : "m" (*(u8 *)addr)); 110 asm volatile("movb %%fs:%1,%0" : "=r" (v) : "m" (*(u8 *)addr));
111 return v; 111 return v;
112} 112}
113static inline u16 rdfs16(addr_t addr) 113static inline u16 rdfs16(addr_t addr)
114{ 114{
115 u16 v; 115 u16 v;
116 asm("movw %%fs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr)); 116 asm volatile("movw %%fs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr));
117 return v; 117 return v;
118} 118}
119static inline u32 rdfs32(addr_t addr) 119static inline u32 rdfs32(addr_t addr)
120{ 120{
121 u32 v; 121 u32 v;
122 asm("movl %%fs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr)); 122 asm volatile("movl %%fs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr));
123 return v; 123 return v;
124} 124}
125 125
@@ -139,19 +139,19 @@ static inline void wrfs32(u32 v, addr_t addr)
139static inline u8 rdgs8(addr_t addr) 139static inline u8 rdgs8(addr_t addr)
140{ 140{
141 u8 v; 141 u8 v;
142 asm("movb %%gs:%1,%0" : "=r" (v) : "m" (*(u8 *)addr)); 142 asm volatile("movb %%gs:%1,%0" : "=r" (v) : "m" (*(u8 *)addr));
143 return v; 143 return v;
144} 144}
145static inline u16 rdgs16(addr_t addr) 145static inline u16 rdgs16(addr_t addr)
146{ 146{
147 u16 v; 147 u16 v;
148 asm("movw %%gs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr)); 148 asm volatile("movw %%gs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr));
149 return v; 149 return v;
150} 150}
151static inline u32 rdgs32(addr_t addr) 151static inline u32 rdgs32(addr_t addr)
152{ 152{
153 u32 v; 153 u32 v;
154 asm("movl %%gs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr)); 154 asm volatile("movl %%gs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr));
155 return v; 155 return v;
156} 156}
157 157
@@ -180,15 +180,15 @@ static inline int memcmp(const void *s1, const void *s2, size_t len)
180static inline int memcmp_fs(const void *s1, addr_t s2, size_t len) 180static inline int memcmp_fs(const void *s1, addr_t s2, size_t len)
181{ 181{
182 u8 diff; 182 u8 diff;
183 asm("fs; repe; cmpsb; setnz %0" 183 asm volatile("fs; repe; cmpsb; setnz %0"
184 : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len)); 184 : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
185 return diff; 185 return diff;
186} 186}
187static inline int memcmp_gs(const void *s1, addr_t s2, size_t len) 187static inline int memcmp_gs(const void *s1, addr_t s2, size_t len)
188{ 188{
189 u8 diff; 189 u8 diff;
190 asm("gs; repe; cmpsb; setnz %0" 190 asm volatile("gs; repe; cmpsb; setnz %0"
191 : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len)); 191 : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
192 return diff; 192 return diff;
193} 193}
194 194
diff --git a/arch/i386/boot/cpucheck.c b/arch/i386/boot/cpucheck.c
index 991e8ceae1de..e655a89c5510 100644
--- a/arch/i386/boot/cpucheck.c
+++ b/arch/i386/boot/cpucheck.c
@@ -96,7 +96,8 @@ static int has_fpu(void)
96 asm volatile("movl %0,%%cr0" : : "r" (cr0)); 96 asm volatile("movl %0,%%cr0" : : "r" (cr0));
97 } 97 }
98 98
99 asm("fninit ; fnstsw %0 ; fnstcw %1" : "+m" (fsw), "+m" (fcw)); 99 asm volatile("fninit ; fnstsw %0 ; fnstcw %1"
100 : "+m" (fsw), "+m" (fcw));
100 101
101 return fsw == 0 && (fcw & 0x103f) == 0x003f; 102 return fsw == 0 && (fcw & 0x103f) == 0x003f;
102} 103}
diff --git a/arch/i386/boot/edd.c b/arch/i386/boot/edd.c
index 658834d9f92a..bd138e442ec2 100644
--- a/arch/i386/boot/edd.c
+++ b/arch/i386/boot/edd.c
@@ -19,57 +19,28 @@
19 19
20#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE) 20#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE)
21 21
22struct edd_dapa {
23 u8 pkt_size;
24 u8 rsvd;
25 u16 sector_cnt;
26 u16 buf_off, buf_seg;
27 u64 lba;
28 u64 buf_lin_addr;
29};
30
31/* 22/*
32 * Read the MBR (first sector) from a specific device. 23 * Read the MBR (first sector) from a specific device.
33 */ 24 */
34static int read_mbr(u8 devno, void *buf) 25static int read_mbr(u8 devno, void *buf)
35{ 26{
36 struct edd_dapa dapa; 27 u16 ax, bx, cx, dx;
37 u16 ax, bx, cx, dx, si;
38
39 memset(&dapa, 0, sizeof dapa);
40 dapa.pkt_size = sizeof(dapa);
41 dapa.sector_cnt = 1;
42 dapa.buf_off = (size_t)buf;
43 dapa.buf_seg = ds();
44 /* dapa.lba = 0; */
45
46 ax = 0x4200; /* Extended Read */
47 si = (size_t)&dapa;
48 dx = devno;
49 asm("pushfl; stc; int $0x13; setc %%al; popfl"
50 : "+a" (ax), "+S" (si), "+d" (dx)
51 : "m" (dapa)
52 : "ebx", "ecx", "edi", "memory");
53
54 if (!(u8)ax)
55 return 0; /* OK */
56 28
57 ax = 0x0201; /* Legacy Read, one sector */ 29 ax = 0x0201; /* Legacy Read, one sector */
58 cx = 0x0001; /* Sector 0-0-1 */ 30 cx = 0x0001; /* Sector 0-0-1 */
59 dx = devno; 31 dx = devno;
60 bx = (size_t)buf; 32 bx = (size_t)buf;
61 asm("pushfl; stc; int $0x13; setc %%al; popfl" 33 asm volatile("pushfl; stc; int $0x13; setc %%al; popfl"
62 : "+a" (ax), "+c" (cx), "+d" (dx), "+b" (bx) 34 : "+a" (ax), "+c" (cx), "+d" (dx), "+b" (bx)
63 : : "esi", "edi", "memory"); 35 : : "esi", "edi", "memory");
64 36
65 return -(u8)ax; /* 0 or -1 */ 37 return -(u8)ax; /* 0 or -1 */
66} 38}
67 39
68static u32 read_mbr_sig(u8 devno, struct edd_info *ei) 40static u32 read_mbr_sig(u8 devno, struct edd_info *ei, u32 *mbrsig)
69{ 41{
70 int sector_size; 42 int sector_size;
71 char *mbrbuf_ptr, *mbrbuf_end; 43 char *mbrbuf_ptr, *mbrbuf_end;
72 u32 mbrsig;
73 u32 buf_base, mbr_base; 44 u32 buf_base, mbr_base;
74 extern char _end[]; 45 extern char _end[];
75 46
@@ -85,15 +56,15 @@ static u32 read_mbr_sig(u8 devno, struct edd_info *ei)
85 56
86 /* Make sure we actually have space on the heap... */ 57 /* Make sure we actually have space on the heap... */
87 if (!(boot_params.hdr.loadflags & CAN_USE_HEAP)) 58 if (!(boot_params.hdr.loadflags & CAN_USE_HEAP))
88 return 0; 59 return -1;
89 if (mbrbuf_end > (char *)(size_t)boot_params.hdr.heap_end_ptr) 60 if (mbrbuf_end > (char *)(size_t)boot_params.hdr.heap_end_ptr)
90 return 0; 61 return -1;
91 62
92 if (read_mbr(devno, mbrbuf_ptr)) 63 if (read_mbr(devno, mbrbuf_ptr))
93 return 0; 64 return -1;
94 65
95 mbrsig = *(u32 *)&mbrbuf_ptr[EDD_MBR_SIG_OFFSET]; 66 *mbrsig = *(u32 *)&mbrbuf_ptr[EDD_MBR_SIG_OFFSET];
96 return mbrsig; 67 return 0;
97} 68}
98 69
99static int get_edd_info(u8 devno, struct edd_info *ei) 70static int get_edd_info(u8 devno, struct edd_info *ei)
@@ -160,6 +131,7 @@ void query_edd(void)
160 int do_edd = 1; 131 int do_edd = 1;
161 int devno; 132 int devno;
162 struct edd_info ei, *edp; 133 struct edd_info ei, *edp;
134 u32 *mbrptr;
163 135
164 if (cmdline_find_option("edd", eddarg, sizeof eddarg) > 0) { 136 if (cmdline_find_option("edd", eddarg, sizeof eddarg) > 0) {
165 if (!strcmp(eddarg, "skipmbr") || !strcmp(eddarg, "skip")) 137 if (!strcmp(eddarg, "skipmbr") || !strcmp(eddarg, "skip"))
@@ -168,7 +140,8 @@ void query_edd(void)
168 do_edd = 0; 140 do_edd = 0;
169 } 141 }
170 142
171 edp = (struct edd_info *)boot_params.eddbuf; 143 edp = boot_params.eddbuf;
144 mbrptr = boot_params.edd_mbr_sig_buffer;
172 145
173 if (!do_edd) 146 if (!do_edd)
174 return; 147 return;
@@ -186,11 +159,8 @@ void query_edd(void)
186 boot_params.eddbuf_entries++; 159 boot_params.eddbuf_entries++;
187 } 160 }
188 161
189 if (do_mbr) { 162 if (do_mbr && !read_mbr_sig(devno, &ei, mbrptr++))
190 u32 mbr_sig; 163 boot_params.edd_mbr_sig_buf_entries = devno-0x80+1;
191 mbr_sig = read_mbr_sig(devno, &ei);
192 boot_params.edd_mbr_sig_buffer[devno-0x80] = mbr_sig;
193 }
194 } 164 }
195} 165}
196 166
diff --git a/arch/i386/boot/tty.c b/arch/i386/boot/tty.c
index 9c668aad3515..f3f14bd26371 100644
--- a/arch/i386/boot/tty.c
+++ b/arch/i386/boot/tty.c
@@ -54,9 +54,9 @@ static u8 gettime(void)
54 u16 ax = 0x0200; 54 u16 ax = 0x0200;
55 u16 cx, dx; 55 u16 cx, dx;
56 56
57 asm("int $0x1a" 57 asm volatile("int $0x1a"
58 : "+a" (ax), "=c" (cx), "=d" (dx) 58 : "+a" (ax), "=c" (cx), "=d" (dx)
59 : : "ebx", "esi", "edi"); 59 : : "ebx", "esi", "edi");
60 60
61 return dx >> 8; 61 return dx >> 8;
62} 62}
@@ -67,7 +67,7 @@ static u8 gettime(void)
67int getchar(void) 67int getchar(void)
68{ 68{
69 u16 ax = 0; 69 u16 ax = 0;
70 asm("int $0x16" : "+a" (ax)); 70 asm volatile("int $0x16" : "+a" (ax));
71 71
72 return ax & 0xff; 72 return ax & 0xff;
73} 73}
@@ -75,9 +75,9 @@ int getchar(void)
75static int kbd_pending(void) 75static int kbd_pending(void)
76{ 76{
77 u8 pending; 77 u8 pending;
78 asm("int $0x16; setnz %0" 78 asm volatile("int $0x16; setnz %0"
79 : "=rm" (pending) 79 : "=rm" (pending)
80 : "a" (0x0100)); 80 : "a" (0x0100));
81 return pending; 81 return pending;
82} 82}
83 83
diff --git a/arch/i386/boot/video-vga.c b/arch/i386/boot/video-vga.c
index 700d09a9c9b3..aef02f9ec0c1 100644
--- a/arch/i386/boot/video-vga.c
+++ b/arch/i386/boot/video-vga.c
@@ -47,16 +47,16 @@ static u8 vga_set_basic_mode(void)
47 47
48#ifdef CONFIG_VIDEO_400_HACK 48#ifdef CONFIG_VIDEO_400_HACK
49 if (adapter >= ADAPTER_VGA) { 49 if (adapter >= ADAPTER_VGA) {
50 asm(INT10 50 asm volatile(INT10
51 : : "a" (0x1202), "b" (0x0030) 51 : : "a" (0x1202), "b" (0x0030)
52 : "ecx", "edx", "esi", "edi"); 52 : "ecx", "edx", "esi", "edi");
53 } 53 }
54#endif 54#endif
55 55
56 ax = 0x0f00; 56 ax = 0x0f00;
57 asm(INT10 57 asm volatile(INT10
58 : "+a" (ax) 58 : "+a" (ax)
59 : : "ebx", "ecx", "edx", "esi", "edi"); 59 : : "ebx", "ecx", "edx", "esi", "edi");
60 60
61 mode = (u8)ax; 61 mode = (u8)ax;
62 62
@@ -73,9 +73,10 @@ static u8 vga_set_basic_mode(void)
73 mode = 3; 73 mode = 3;
74 74
75 /* Set the mode */ 75 /* Set the mode */
76 ax = mode;
76 asm volatile(INT10 77 asm volatile(INT10
77 : : "a" (mode) 78 : "+a" (ax)
78 : "ebx", "ecx", "edx", "esi", "edi"); 79 : : "ebx", "ecx", "edx", "esi", "edi");
79 do_restore = 1; 80 do_restore = 1;
80 return mode; 81 return mode;
81} 82}
diff --git a/arch/i386/boot/video.c b/arch/i386/boot/video.c
index 958130ef0042..693f20d3102e 100644
--- a/arch/i386/boot/video.c
+++ b/arch/i386/boot/video.c
@@ -61,7 +61,7 @@ static void store_video_mode(void)
61 61
62 /* Not all BIOSes are clean with respect to the top bit */ 62 /* Not all BIOSes are clean with respect to the top bit */
63 boot_params.screen_info.orig_video_mode = ax & 0x7f; 63 boot_params.screen_info.orig_video_mode = ax & 0x7f;
64 boot_params.screen_info.orig_video_page = page; 64 boot_params.screen_info.orig_video_page = page >> 8;
65} 65}
66 66
67/* 67/*
diff --git a/arch/i386/kernel/alternative.c b/arch/i386/kernel/alternative.c
index 1b66d5c70eaf..9f4ac8b02de4 100644
--- a/arch/i386/kernel/alternative.c
+++ b/arch/i386/kernel/alternative.c
@@ -366,6 +366,8 @@ void apply_paravirt(struct paravirt_patch_site *start,
366 unsigned int used; 366 unsigned int used;
367 367
368 BUG_ON(p->len > MAX_PATCH_LEN); 368 BUG_ON(p->len > MAX_PATCH_LEN);
369 /* prep the buffer with the original instructions */
370 memcpy(insnbuf, p->instr, p->len);
369 used = paravirt_ops.patch(p->instrtype, p->clobbers, insnbuf, 371 used = paravirt_ops.patch(p->instrtype, p->clobbers, insnbuf,
370 (unsigned long)p->instr, p->len); 372 (unsigned long)p->instr, p->len);
371 373
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c
index f9fff29e01a9..3d67ae18d762 100644
--- a/arch/i386/kernel/apic.c
+++ b/arch/i386/kernel/apic.c
@@ -1085,7 +1085,7 @@ static int __init detect_init_APIC (void)
1085 if (l & MSR_IA32_APICBASE_ENABLE) 1085 if (l & MSR_IA32_APICBASE_ENABLE)
1086 mp_lapic_addr = l & MSR_IA32_APICBASE_BASE; 1086 mp_lapic_addr = l & MSR_IA32_APICBASE_BASE;
1087 1087
1088 if (nmi_watchdog != NMI_NONE) 1088 if (nmi_watchdog != NMI_NONE && nmi_watchdog != NMI_DISABLED)
1089 nmi_watchdog = NMI_LOCAL_APIC; 1089 nmi_watchdog = NMI_LOCAL_APIC;
1090 1090
1091 printk(KERN_INFO "Found and enabled local APIC!\n"); 1091 printk(KERN_INFO "Found and enabled local APIC!\n");
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
index 4b8a8da4b2e0..e2f4a1c68547 100644
--- a/arch/i386/kernel/io_apic.c
+++ b/arch/i386/kernel/io_apic.c
@@ -754,14 +754,6 @@ static int pirq_entries [MAX_PIRQS];
754static int pirqs_enabled; 754static int pirqs_enabled;
755int skip_ioapic_setup; 755int skip_ioapic_setup;
756 756
757static int __init ioapic_setup(char *str)
758{
759 skip_ioapic_setup = 1;
760 return 1;
761}
762
763__setup("noapic", ioapic_setup);
764
765static int __init ioapic_pirq_setup(char *str) 757static int __init ioapic_pirq_setup(char *str)
766{ 758{
767 int i, max; 759 int i, max;
diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c
index 99beac7f96ce..8c1c965eb2a8 100644
--- a/arch/i386/kernel/nmi.c
+++ b/arch/i386/kernel/nmi.c
@@ -77,7 +77,7 @@ static int __init check_nmi_watchdog(void)
77 unsigned int *prev_nmi_count; 77 unsigned int *prev_nmi_count;
78 int cpu; 78 int cpu;
79 79
80 if ((nmi_watchdog == NMI_NONE) || (nmi_watchdog == NMI_DEFAULT)) 80 if ((nmi_watchdog == NMI_NONE) || (nmi_watchdog == NMI_DISABLED))
81 return 0; 81 return 0;
82 82
83 if (!atomic_read(&nmi_active)) 83 if (!atomic_read(&nmi_active))
@@ -424,7 +424,7 @@ int proc_nmi_enabled(struct ctl_table *table, int write, struct file *file,
424 if (!!old_state == !!nmi_watchdog_enabled) 424 if (!!old_state == !!nmi_watchdog_enabled)
425 return 0; 425 return 0;
426 426
427 if (atomic_read(&nmi_active) < 0) { 427 if (atomic_read(&nmi_active) < 0 || nmi_watchdog == NMI_DISABLED) {
428 printk( KERN_WARNING "NMI watchdog is permanently disabled\n"); 428 printk( KERN_WARNING "NMI watchdog is permanently disabled\n");
429 return -EIO; 429 return -EIO;
430 } 430 }
diff --git a/arch/i386/kernel/tsc.c b/arch/i386/kernel/tsc.c
index debd7dbb4158..a39280b4dd3a 100644
--- a/arch/i386/kernel/tsc.c
+++ b/arch/i386/kernel/tsc.c
@@ -292,7 +292,6 @@ static struct clocksource clocksource_tsc = {
292 292
293void mark_tsc_unstable(char *reason) 293void mark_tsc_unstable(char *reason)
294{ 294{
295 sched_clock_unstable_event();
296 if (!tsc_unstable) { 295 if (!tsc_unstable) {
297 tsc_unstable = 1; 296 tsc_unstable = 1;
298 tsc_enabled = 0; 297 tsc_enabled = 0;
diff --git a/arch/i386/mm/fault.c b/arch/i386/mm/fault.c
index 01ffdd4964f0..fcb38e7f3543 100644
--- a/arch/i386/mm/fault.c
+++ b/arch/i386/mm/fault.c
@@ -249,9 +249,10 @@ static inline pmd_t *vmalloc_sync_one(pgd_t *pgd, unsigned long address)
249 pmd_k = pmd_offset(pud_k, address); 249 pmd_k = pmd_offset(pud_k, address);
250 if (!pmd_present(*pmd_k)) 250 if (!pmd_present(*pmd_k))
251 return NULL; 251 return NULL;
252 if (!pmd_present(*pmd)) 252 if (!pmd_present(*pmd)) {
253 set_pmd(pmd, *pmd_k); 253 set_pmd(pmd, *pmd_k);
254 else 254 arch_flush_lazy_mmu_mode();
255 } else
255 BUG_ON(pmd_page(*pmd) != pmd_page(*pmd_k)); 256 BUG_ON(pmd_page(*pmd) != pmd_page(*pmd_k));
256 return pmd_k; 257 return pmd_k;
257} 258}
diff --git a/arch/i386/xen/xen-head.S b/arch/i386/xen/xen-head.S
index bc71f3bc4014..f8d6937db2ec 100644
--- a/arch/i386/xen/xen-head.S
+++ b/arch/i386/xen/xen-head.S
@@ -7,20 +7,20 @@
7#include <asm/boot.h> 7#include <asm/boot.h>
8#include <xen/interface/elfnote.h> 8#include <xen/interface/elfnote.h>
9 9
10 .section .init.text 10.pushsection .init.text
11ENTRY(startup_xen) 11ENTRY(startup_xen)
12 movl %esi,xen_start_info 12 movl %esi,xen_start_info
13 cld 13 cld
14 movl $(init_thread_union+THREAD_SIZE),%esp 14 movl $(init_thread_union+THREAD_SIZE),%esp
15 jmp xen_start_kernel 15 jmp xen_start_kernel
16.popsection
16 17
17.pushsection ".bss.page_aligned" 18.pushsection .bss.page_aligned
18 .align PAGE_SIZE_asm 19 .align PAGE_SIZE_asm
19ENTRY(hypercall_page) 20ENTRY(hypercall_page)
20 .skip 0x1000 21 .skip 0x1000
21.popsection 22.popsection
22 23
23 .section .text
24 ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz "linux") 24 ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz "linux")
25 ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz "2.6") 25 ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz "2.6")
26 ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz "xen-3.0") 26 ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz "xen-3.0")
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 21aa4fc5f8ef..8c39913d1729 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -327,17 +327,7 @@ config FORCE_CPEI_RETARGET
327 This option it useful to enable this feature on older BIOS's as well. 327 This option it useful to enable this feature on older BIOS's as well.
328 You can also enable this by using boot command line option force_cpei=1. 328 You can also enable this by using boot command line option force_cpei=1.
329 329
330config PREEMPT 330source "kernel/Kconfig.preempt"
331 bool "Preemptible Kernel"
332 help
333 This option reduces the latency of the kernel when reacting to
334 real-time or interactive events by allowing a low priority process to
335 be preempted even if it is in kernel mode executing a system call.
336 This allows applications to run more reliably even when the system is
337 under load.
338
339 Say Y here if you are building a kernel for a desktop, embedded
340 or real-time system. Say N if you are unsure.
341 331
342source "mm/Kconfig" 332source "mm/Kconfig"
343 333
diff --git a/arch/ia64/configs/bigsur_defconfig b/arch/ia64/configs/bigsur_defconfig
index 9eb48c0927b0..6dd8655664f3 100644
--- a/arch/ia64/configs/bigsur_defconfig
+++ b/arch/ia64/configs/bigsur_defconfig
@@ -42,7 +42,7 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
42CONFIG_CC_ALIGN_LABELS=0 42CONFIG_CC_ALIGN_LABELS=0
43CONFIG_CC_ALIGN_LOOPS=0 43CONFIG_CC_ALIGN_LOOPS=0
44CONFIG_CC_ALIGN_JUMPS=0 44CONFIG_CC_ALIGN_JUMPS=0
45CONFIG_SLAB=y 45CONFIG_SLUB=y
46# CONFIG_TINY_SHMEM is not set 46# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0 47CONFIG_BASE_SMALL=0
48# CONFIG_SLOB is not set 48# CONFIG_SLOB is not set
diff --git a/arch/ia64/configs/gensparse_defconfig b/arch/ia64/configs/gensparse_defconfig
index 3a9ed951db08..e86fbd39c795 100644
--- a/arch/ia64/configs/gensparse_defconfig
+++ b/arch/ia64/configs/gensparse_defconfig
@@ -43,7 +43,7 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0 43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
46CONFIG_SLAB=y 46CONFIG_SLUB=y
47# CONFIG_TINY_SHMEM is not set 47# CONFIG_TINY_SHMEM is not set
48CONFIG_BASE_SMALL=0 48CONFIG_BASE_SMALL=0
49# CONFIG_SLOB is not set 49# CONFIG_SLOB is not set
diff --git a/arch/ia64/configs/sim_defconfig b/arch/ia64/configs/sim_defconfig
index c420d9f3df98..546a772f438e 100644
--- a/arch/ia64/configs/sim_defconfig
+++ b/arch/ia64/configs/sim_defconfig
@@ -43,7 +43,7 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
43CONFIG_CC_ALIGN_LABELS=0 43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0 44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0 45CONFIG_CC_ALIGN_JUMPS=0
46CONFIG_SLAB=y 46CONFIG_SLUB=y
47# CONFIG_TINY_SHMEM is not set 47# CONFIG_TINY_SHMEM is not set
48CONFIG_BASE_SMALL=0 48CONFIG_BASE_SMALL=0
49# CONFIG_SLOB is not set 49# CONFIG_SLOB is not set
diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig
index 4c9ffc47bc7a..9aecfceeb38c 100644
--- a/arch/ia64/configs/sn2_defconfig
+++ b/arch/ia64/configs/sn2_defconfig
@@ -46,7 +46,7 @@ CONFIG_BASE_FULL=y
46CONFIG_FUTEX=y 46CONFIG_FUTEX=y
47CONFIG_EPOLL=y 47CONFIG_EPOLL=y
48CONFIG_SHMEM=y 48CONFIG_SHMEM=y
49CONFIG_SLAB=y 49CONFIG_SLUB=y
50CONFIG_VM_EVENT_COUNTERS=y 50CONFIG_VM_EVENT_COUNTERS=y
51CONFIG_RT_MUTEXES=y 51CONFIG_RT_MUTEXES=y
52# CONFIG_TINY_SHMEM is not set 52# CONFIG_TINY_SHMEM is not set
diff --git a/arch/ia64/configs/tiger_defconfig b/arch/ia64/configs/tiger_defconfig
index 3dbb3987df27..797acf9066c1 100644
--- a/arch/ia64/configs/tiger_defconfig
+++ b/arch/ia64/configs/tiger_defconfig
@@ -53,7 +53,7 @@ CONFIG_TIMERFD=y
53CONFIG_EVENTFD=y 53CONFIG_EVENTFD=y
54CONFIG_SHMEM=y 54CONFIG_SHMEM=y
55CONFIG_VM_EVENT_COUNTERS=y 55CONFIG_VM_EVENT_COUNTERS=y
56CONFIG_SLAB=y 56CONFIG_SLUB=y
57# CONFIG_SLUB is not set 57# CONFIG_SLUB is not set
58# CONFIG_SLOB is not set 58# CONFIG_SLOB is not set
59CONFIG_RT_MUTEXES=y 59CONFIG_RT_MUTEXES=y
diff --git a/arch/ia64/configs/zx1_defconfig b/arch/ia64/configs/zx1_defconfig
index 4a060fc39934..0a06b1333c95 100644
--- a/arch/ia64/configs/zx1_defconfig
+++ b/arch/ia64/configs/zx1_defconfig
@@ -48,7 +48,7 @@ CONFIG_BASE_FULL=y
48CONFIG_FUTEX=y 48CONFIG_FUTEX=y
49CONFIG_EPOLL=y 49CONFIG_EPOLL=y
50CONFIG_SHMEM=y 50CONFIG_SHMEM=y
51CONFIG_SLAB=y 51CONFIG_SLUB=y
52CONFIG_VM_EVENT_COUNTERS=y 52CONFIG_VM_EVENT_COUNTERS=y
53CONFIG_RT_MUTEXES=y 53CONFIG_RT_MUTEXES=y
54# CONFIG_TINY_SHMEM is not set 54# CONFIG_TINY_SHMEM is not set
diff --git a/arch/ia64/defconfig b/arch/ia64/defconfig
index 03172dc8c403..0210545e7f61 100644
--- a/arch/ia64/defconfig
+++ b/arch/ia64/defconfig
@@ -53,8 +53,7 @@ CONFIG_TIMERFD=y
53CONFIG_EVENTFD=y 53CONFIG_EVENTFD=y
54CONFIG_SHMEM=y 54CONFIG_SHMEM=y
55CONFIG_VM_EVENT_COUNTERS=y 55CONFIG_VM_EVENT_COUNTERS=y
56CONFIG_SLAB=y 56CONFIG_SLUB=y
57# CONFIG_SLUB is not set
58# CONFIG_SLOB is not set 57# CONFIG_SLOB is not set
59CONFIG_RT_MUTEXES=y 58CONFIG_RT_MUTEXES=y
60# CONFIG_TINY_SHMEM is not set 59# CONFIG_TINY_SHMEM is not set
diff --git a/arch/ia64/hp/sim/boot/boot_head.S b/arch/ia64/hp/sim/boot/boot_head.S
index a9bd71ac78e2..8808565491fb 100644
--- a/arch/ia64/hp/sim/boot/boot_head.S
+++ b/arch/ia64/hp/sim/boot/boot_head.S
@@ -26,6 +26,7 @@ GLOBAL_ENTRY(_start)
26 movl sp = stack_mem+16384-16 26 movl sp = stack_mem+16384-16
27 bsw.1 27 bsw.1
28 br.call.sptk.many rp=start_bootloader 28 br.call.sptk.many rp=start_bootloader
290: nop 0 /* dummy nop to make unwinding work */
29END(_start) 30END(_start)
30 31
31/* 32/*
diff --git a/arch/ia64/kernel/cpufreq/acpi-cpufreq.c b/arch/ia64/kernel/cpufreq/acpi-cpufreq.c
index 15c08d52f09f..8c6ec7070844 100644
--- a/arch/ia64/kernel/cpufreq/acpi-cpufreq.c
+++ b/arch/ia64/kernel/cpufreq/acpi-cpufreq.c
@@ -113,10 +113,8 @@ processor_get_freq (
113 113
114 saved_mask = current->cpus_allowed; 114 saved_mask = current->cpus_allowed;
115 set_cpus_allowed(current, cpumask_of_cpu(cpu)); 115 set_cpus_allowed(current, cpumask_of_cpu(cpu));
116 if (smp_processor_id() != cpu) { 116 if (smp_processor_id() != cpu)
117 ret = -EAGAIN;
118 goto migrate_end; 117 goto migrate_end;
119 }
120 118
121 /* processor_get_pstate gets the instantaneous frequency */ 119 /* processor_get_pstate gets the instantaneous frequency */
122 ret = processor_get_pstate(&value); 120 ret = processor_get_pstate(&value);
@@ -125,7 +123,7 @@ processor_get_freq (
125 set_cpus_allowed(current, saved_mask); 123 set_cpus_allowed(current, saved_mask);
126 printk(KERN_WARNING "get performance failed with error %d\n", 124 printk(KERN_WARNING "get performance failed with error %d\n",
127 ret); 125 ret);
128 ret = -EAGAIN; 126 ret = 0;
129 goto migrate_end; 127 goto migrate_end;
130 } 128 }
131 clock_freq = extract_clock(data, value, cpu); 129 clock_freq = extract_clock(data, value, cpu);
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index cc3ee4ef37af..44be1c952b7c 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -33,6 +33,11 @@ void ack_bad_irq(unsigned int irq)
33} 33}
34 34
35#ifdef CONFIG_IA64_GENERIC 35#ifdef CONFIG_IA64_GENERIC
36ia64_vector __ia64_irq_to_vector(int irq)
37{
38 return irq_cfg[irq].vector;
39}
40
36unsigned int __ia64_local_vector_to_irq (ia64_vector vec) 41unsigned int __ia64_local_vector_to_irq (ia64_vector vec)
37{ 42{
38 return __get_cpu_var(vector_irq)[vec]; 43 return __get_cpu_var(vector_irq)[vec];
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index ff28620cb992..63b73f3d4c9f 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -2018,22 +2018,26 @@ ia64_mca_late_init(void)
2018 2018
2019 if (cpe_vector >= 0) { 2019 if (cpe_vector >= 0) {
2020 /* If platform supports CPEI, enable the irq. */ 2020 /* If platform supports CPEI, enable the irq. */
2021 cpe_poll_enabled = 0; 2021 irq = local_vector_to_irq(cpe_vector);
2022 for (irq = 0; irq < NR_IRQS; ++irq) 2022 if (irq > 0) {
2023 if (irq_to_vector(irq) == cpe_vector) { 2023 cpe_poll_enabled = 0;
2024 desc = irq_desc + irq; 2024 desc = irq_desc + irq;
2025 desc->status |= IRQ_PER_CPU; 2025 desc->status |= IRQ_PER_CPU;
2026 setup_irq(irq, &mca_cpe_irqaction); 2026 setup_irq(irq, &mca_cpe_irqaction);
2027 ia64_cpe_irq = irq; 2027 ia64_cpe_irq = irq;
2028 } 2028 ia64_mca_register_cpev(cpe_vector);
2029 ia64_mca_register_cpev(cpe_vector); 2029 IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n",
2030 IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n", __FUNCTION__); 2030 __FUNCTION__);
2031 } else { 2031 return 0;
2032 /* If platform doesn't support CPEI, get the timer going. */
2033 if (cpe_poll_enabled) {
2034 ia64_mca_cpe_poll(0UL);
2035 IA64_MCA_DEBUG("%s: CPEP setup and enabled.\n", __FUNCTION__);
2036 } 2032 }
2033 printk(KERN_ERR "%s: Failed to find irq for CPE "
2034 "interrupt handler, vector %d\n",
2035 __FUNCTION__, cpe_vector);
2036 }
2037 /* If platform doesn't support CPEI, get the timer going. */
2038 if (cpe_poll_enabled) {
2039 ia64_mca_cpe_poll(0UL);
2040 IA64_MCA_DEBUG("%s: CPEP setup and enabled.\n", __FUNCTION__);
2037 } 2041 }
2038 } 2042 }
2039#endif 2043#endif
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index 4158906c45aa..c613fc0e91cc 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -198,9 +198,13 @@ default_idle (void)
198{ 198{
199 local_irq_enable(); 199 local_irq_enable();
200 while (!need_resched()) { 200 while (!need_resched()) {
201 if (can_do_pal_halt) 201 if (can_do_pal_halt) {
202 safe_halt(); 202 local_irq_disable();
203 else 203 if (!need_resched()) {
204 safe_halt();
205 }
206 local_irq_enable();
207 } else
204 cpu_relax(); 208 cpu_relax();
205 } 209 }
206} 210}
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
index 00f803246948..122444a97897 100644
--- a/arch/ia64/kernel/ptrace.c
+++ b/arch/ia64/kernel/ptrace.c
@@ -951,10 +951,14 @@ access_uarea (struct task_struct *child, unsigned long addr,
951 return 0; 951 return 0;
952 952
953 case PT_CR_IPSR: 953 case PT_CR_IPSR:
954 if (write_access) 954 if (write_access) {
955 pt->cr_ipsr = ((*data & IPSR_MASK) 955 unsigned long tmp = *data;
956 /* psr.ri==3 is a reserved value: SDM 2:25 */
957 if ((tmp & IA64_PSR_RI) == IA64_PSR_RI)
958 tmp &= ~IA64_PSR_RI;
959 pt->cr_ipsr = ((tmp & IPSR_MASK)
956 | (pt->cr_ipsr & ~IPSR_MASK)); 960 | (pt->cr_ipsr & ~IPSR_MASK));
957 else 961 } else
958 *data = (pt->cr_ipsr & IPSR_MASK); 962 *data = (pt->cr_ipsr & IPSR_MASK);
959 return 0; 963 return 0;
960 964
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index cd9a37a552c3..407efea04bf5 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -389,6 +389,13 @@ early_console_setup (char *cmdline)
389 if (!efi_setup_pcdp_console(cmdline)) 389 if (!efi_setup_pcdp_console(cmdline))
390 earlycons++; 390 earlycons++;
391#endif 391#endif
392#ifdef CONFIG_HP_SIMSERIAL_CONSOLE
393 {
394 extern struct console hpsim_cons;
395 register_console(&hpsim_cons);
396 earlycons++;
397 }
398#endif
392 399
393 return (earlycons) ? 0 : -1; 400 return (earlycons) ? 0 : -1;
394} 401}
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S
index 83e80677de70..00232b4357ba 100644
--- a/arch/ia64/kernel/vmlinux.lds.S
+++ b/arch/ia64/kernel/vmlinux.lds.S
@@ -20,6 +20,8 @@ PHDRS {
20 code PT_LOAD; 20 code PT_LOAD;
21 percpu PT_LOAD; 21 percpu PT_LOAD;
22 data PT_LOAD; 22 data PT_LOAD;
23 note PT_NOTE;
24 unwind 0x70000001; /* PT_IA_64_UNWIND, but ld doesn't match the name */
23} 25}
24SECTIONS 26SECTIONS
25{ 27{
@@ -62,6 +64,9 @@ SECTIONS
62 64
63 /* Read-only data */ 65 /* Read-only data */
64 66
67 NOTES :code :note /* put .notes in text and mark in PT_NOTE */
68 code_continues : {} :code /* switch back to regular program... */
69
65 /* Exception table */ 70 /* Exception table */
66 . = ALIGN(16); 71 . = ALIGN(16);
67 __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) 72 __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET)
@@ -99,7 +104,8 @@ SECTIONS
99 __start_unwind = .; 104 __start_unwind = .;
100 *(.IA_64.unwind*) 105 *(.IA_64.unwind*)
101 __end_unwind = .; 106 __end_unwind = .;
102 } 107 } :code :unwind
108 code_continues2 : {} : code
103 109
104 RODATA 110 RODATA
105 111
@@ -276,10 +282,6 @@ SECTIONS
276 .debug_typenames 0 : { *(.debug_typenames) } 282 .debug_typenames 0 : { *(.debug_typenames) }
277 .debug_varnames 0 : { *(.debug_varnames) } 283 .debug_varnames 0 : { *(.debug_varnames) }
278 /* These must appear regardless of . */ 284 /* These must appear regardless of . */
279 /* Discard them for now since Intel SoftSDV cannot handle them.
280 .comment 0 : { *(.comment) }
281 .note 0 : { *(.note) }
282 */
283 /DISCARD/ : { *(.comment) } 285 /DISCARD/ : { *(.comment) }
284 /DISCARD/ : { *(.note) } 286 /DISCARD/ : { *(.note) }
285} 287}
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
index 73ccb6010c05..9150ffaff9e8 100644
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -112,11 +112,17 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
112 down_read(&mm->mmap_sem); 112 down_read(&mm->mmap_sem);
113 113
114 vma = find_vma_prev(mm, address, &prev_vma); 114 vma = find_vma_prev(mm, address, &prev_vma);
115 if (!vma) 115 if (!vma && !prev_vma )
116 goto bad_area; 116 goto bad_area;
117 117
118 /* find_vma_prev() returns vma such that address < vma->vm_end or NULL */ 118 /*
119 if (address < vma->vm_start) 119 * find_vma_prev() returns vma such that address < vma->vm_end or NULL
120 *
121 * May find no vma, but could be that the last vm area is the
122 * register backing store that needs to expand upwards, in
123 * this case vma will be null, but prev_vma will ne non-null
124 */
125 if (( !vma && prev_vma ) || (address < vma->vm_start) )
120 goto check_expansion; 126 goto check_expansion;
121 127
122 good_area: 128 good_area:
@@ -172,6 +178,8 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
172 178
173 check_expansion: 179 check_expansion:
174 if (!(prev_vma && (prev_vma->vm_flags & VM_GROWSUP) && (address == prev_vma->vm_end))) { 180 if (!(prev_vma && (prev_vma->vm_flags & VM_GROWSUP) && (address == prev_vma->vm_end))) {
181 if (!vma)
182 goto bad_area;
175 if (!(vma->vm_flags & VM_GROWSDOWN)) 183 if (!(vma->vm_flags & VM_GROWSDOWN))
176 goto bad_area; 184 goto bad_area;
177 if (REGION_NUMBER(address) != REGION_NUMBER(vma->vm_start) 185 if (REGION_NUMBER(address) != REGION_NUMBER(vma->vm_start)
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c
index 7f6d2360a262..360047389449 100644
--- a/arch/ia64/sn/kernel/irq.c
+++ b/arch/ia64/sn/kernel/irq.c
@@ -256,6 +256,13 @@ struct irq_chip irq_type_sn = {
256 .set_affinity = sn_set_affinity_irq 256 .set_affinity = sn_set_affinity_irq
257}; 257};
258 258
259ia64_vector sn_irq_to_vector(int irq)
260{
261 if (irq >= IA64_NUM_VECTORS)
262 return 0;
263 return (ia64_vector)irq;
264}
265
259unsigned int sn_local_vector_to_irq(u8 vector) 266unsigned int sn_local_vector_to_irq(u8 vector)
260{ 267{
261 return (CPU_VECTOR_TO_IRQ(smp_processor_id(), vector)); 268 return (CPU_VECTOR_TO_IRQ(smp_processor_id(), vector));
@@ -398,7 +405,10 @@ sn_call_force_intr_provider(struct sn_irq_info *sn_irq_info)
398 struct sn_pcibus_provider *pci_provider; 405 struct sn_pcibus_provider *pci_provider;
399 406
400 pci_provider = sn_pci_provider[sn_irq_info->irq_bridge_type]; 407 pci_provider = sn_pci_provider[sn_irq_info->irq_bridge_type];
401 if (pci_provider && pci_provider->force_interrupt) 408
409 /* Don't force an interrupt if the irq has been disabled */
410 if (!(irq_desc[sn_irq_info->irq_irq].status & IRQ_DISABLED) &&
411 pci_provider && pci_provider->force_interrupt)
402 (*pci_provider->force_interrupt)(sn_irq_info); 412 (*pci_provider->force_interrupt)(sn_irq_info);
403} 413}
404 414
diff --git a/arch/m68k/kernel/setup.c b/arch/m68k/kernel/setup.c
index 7e6d5fb75390..ed3a4caec620 100644
--- a/arch/m68k/kernel/setup.c
+++ b/arch/m68k/kernel/setup.c
@@ -62,7 +62,6 @@ EXPORT_SYMBOL(m68k_num_memory);
62int m68k_realnum_memory; 62int m68k_realnum_memory;
63EXPORT_SYMBOL(m68k_realnum_memory); 63EXPORT_SYMBOL(m68k_realnum_memory);
64unsigned long m68k_memoffset; 64unsigned long m68k_memoffset;
65EXPORT_SYMBOL(m68k_memoffset);
66struct mem_info m68k_memory[NUM_MEMINFO]; 65struct mem_info m68k_memory[NUM_MEMINFO];
67EXPORT_SYMBOL(m68k_memory); 66EXPORT_SYMBOL(m68k_memory);
68 67
@@ -200,7 +199,6 @@ static void __init m68k_parse_bootinfo(const struct bi_record *record)
200 (m68k_num_memory - 1)); 199 (m68k_num_memory - 1));
201 m68k_num_memory = 1; 200 m68k_num_memory = 1;
202 } 201 }
203 m68k_memoffset = m68k_memory[0].addr-PAGE_OFFSET;
204#endif 202#endif
205} 203}
206 204
diff --git a/arch/m68k/kernel/vmlinux-std.lds b/arch/m68k/kernel/vmlinux-std.lds
index c42245775a4d..59fe285865ec 100644
--- a/arch/m68k/kernel/vmlinux-std.lds
+++ b/arch/m68k/kernel/vmlinux-std.lds
@@ -19,6 +19,8 @@ SECTIONS
19 *(.gnu.warning) 19 *(.gnu.warning)
20 } :text = 0x4e75 20 } :text = 0x4e75
21 21
22 _etext = .; /* End of text section */
23
22 . = ALIGN(16); /* Exception table */ 24 . = ALIGN(16); /* Exception table */
23 __start___ex_table = .; 25 __start___ex_table = .;
24 __ex_table : { *(__ex_table) } 26 __ex_table : { *(__ex_table) }
@@ -26,8 +28,6 @@ SECTIONS
26 28
27 RODATA 29 RODATA
28 30
29 _etext = .; /* End of text section */
30
31 .data : { /* Data */ 31 .data : { /* Data */
32 DATA_DATA 32 DATA_DATA
33 CONSTRUCTORS 33 CONSTRUCTORS
diff --git a/arch/m68k/mm/motorola.c b/arch/m68k/mm/motorola.c
index 7d571a2b44dd..30d34f285024 100644
--- a/arch/m68k/mm/motorola.c
+++ b/arch/m68k/mm/motorola.c
@@ -210,11 +210,7 @@ void __init paging_init(void)
210 int i; 210 int i;
211 211
212#ifdef DEBUG 212#ifdef DEBUG
213 { 213 printk ("start of paging_init (%p, %lx)\n", kernel_pg_dir, availmem);
214 extern unsigned long availmem;
215 printk ("start of paging_init (%p, %lx)\n",
216 kernel_pg_dir, availmem);
217 }
218#endif 214#endif
219 215
220 /* Fix the cache mode in the page descriptors for the 680[46]0. */ 216 /* Fix the cache mode in the page descriptors for the 680[46]0. */
diff --git a/arch/m68knommu/kernel/process.c b/arch/m68knommu/kernel/process.c
index 846f97534685..47502d5ec19f 100644
--- a/arch/m68knommu/kernel/process.c
+++ b/arch/m68knommu/kernel/process.c
@@ -28,6 +28,7 @@
28#include <linux/a.out.h> 28#include <linux/a.out.h>
29#include <linux/interrupt.h> 29#include <linux/interrupt.h>
30#include <linux/reboot.h> 30#include <linux/reboot.h>
31#include <linux/fs.h>
31 32
32#include <asm/uaccess.h> 33#include <asm/uaccess.h>
33#include <asm/system.h> 34#include <asm/system.h>
diff --git a/arch/m68knommu/kernel/sys_m68k.c b/arch/m68knommu/kernel/sys_m68k.c
index 48e6b33e8b44..15d62c5279a9 100644
--- a/arch/m68knommu/kernel/sys_m68k.c
+++ b/arch/m68knommu/kernel/sys_m68k.c
@@ -18,6 +18,7 @@
18#include <linux/mman.h> 18#include <linux/mman.h>
19#include <linux/file.h> 19#include <linux/file.h>
20#include <linux/utsname.h> 20#include <linux/utsname.h>
21#include <linux/fs.h>
21 22
22#include <asm/setup.h> 23#include <asm/setup.h>
23#include <asm/uaccess.h> 24#include <asm/uaccess.h>
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 3b404b7dfa39..04797b289c21 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -28,7 +28,6 @@ config BASLER_EXCITE
28 select MIPS_RM9122 28 select MIPS_RM9122
29 select SYS_HAS_CPU_RM9000 29 select SYS_HAS_CPU_RM9000
30 select SYS_SUPPORTS_32BIT_KERNEL 30 select SYS_SUPPORTS_32BIT_KERNEL
31 select SYS_SUPPORTS_64BIT_KERNEL
32 select SYS_SUPPORTS_BIG_ENDIAN 31 select SYS_SUPPORTS_BIG_ENDIAN
33 select SYS_SUPPORTS_KGDB 32 select SYS_SUPPORTS_KGDB
34 help 33 help
@@ -126,6 +125,7 @@ config LEMOTE_FULONG
126 select SYS_SUPPORTS_HIGHMEM 125 select SYS_SUPPORTS_HIGHMEM
127 select SYS_HAS_EARLY_PRINTK 126 select SYS_HAS_EARLY_PRINTK
128 select GENERIC_HARDIRQS_NO__DO_IRQ 127 select GENERIC_HARDIRQS_NO__DO_IRQ
128 select GENERIC_ISA_DMA_SUPPORT_BROKEN
129 select CPU_HAS_WB 129 select CPU_HAS_WB
130 help 130 help
131 Lemote Fulong mini-PC board based on the Chinese Loongson-2E CPU and 131 Lemote Fulong mini-PC board based on the Chinese Loongson-2E CPU and
@@ -192,8 +192,7 @@ config MIPS_MALTA
192 board. 192 board.
193 193
194config MIPS_SEAD 194config MIPS_SEAD
195 bool "MIPS SEAD board (EXPERIMENTAL)" 195 bool "MIPS SEAD board"
196 depends on EXPERIMENTAL
197 select IRQ_CPU 196 select IRQ_CPU
198 select DMA_NONCOHERENT 197 select DMA_NONCOHERENT
199 select SYS_HAS_EARLY_PRINTK 198 select SYS_HAS_EARLY_PRINTK
@@ -528,6 +527,7 @@ config TOSHIBA_JMR3927
528 select DMA_NONCOHERENT 527 select DMA_NONCOHERENT
529 select HW_HAS_PCI 528 select HW_HAS_PCI
530 select MIPS_TX3927 529 select MIPS_TX3927
530 select IRQ_TXX9
531 select SWAP_IO_SPACE 531 select SWAP_IO_SPACE
532 select SYS_HAS_CPU_TX39XX 532 select SYS_HAS_CPU_TX39XX
533 select SYS_SUPPORTS_32BIT_KERNEL 533 select SYS_SUPPORTS_32BIT_KERNEL
@@ -540,7 +540,9 @@ config TOSHIBA_RBTX4927
540 select DMA_NONCOHERENT 540 select DMA_NONCOHERENT
541 select HAS_TXX9_SERIAL 541 select HAS_TXX9_SERIAL
542 select HW_HAS_PCI 542 select HW_HAS_PCI
543 select I8259 543 select IRQ_CPU
544 select IRQ_TXX9
545 select I8259 if TOSHIBA_FPCIB0
544 select SWAP_IO_SPACE 546 select SWAP_IO_SPACE
545 select SYS_HAS_CPU_TX49XX 547 select SYS_HAS_CPU_TX49XX
546 select SYS_SUPPORTS_32BIT_KERNEL 548 select SYS_SUPPORTS_32BIT_KERNEL
@@ -555,12 +557,11 @@ config TOSHIBA_RBTX4927
555 557
556config TOSHIBA_RBTX4938 558config TOSHIBA_RBTX4938
557 bool "Toshiba RBTX4938 board" 559 bool "Toshiba RBTX4938 board"
558 select HAVE_STD_PC_SERIAL_PORT
559 select DMA_NONCOHERENT 560 select DMA_NONCOHERENT
560 select GENERIC_ISA_DMA
561 select HAS_TXX9_SERIAL 561 select HAS_TXX9_SERIAL
562 select HW_HAS_PCI 562 select HW_HAS_PCI
563 select I8259 563 select IRQ_CPU
564 select IRQ_TXX9
564 select SWAP_IO_SPACE 565 select SWAP_IO_SPACE
565 select SYS_HAS_CPU_TX49XX 566 select SYS_HAS_CPU_TX49XX
566 select SYS_SUPPORTS_32BIT_KERNEL 567 select SYS_SUPPORTS_32BIT_KERNEL
@@ -604,7 +605,6 @@ source "arch/mips/sibyte/Kconfig"
604source "arch/mips/tx4927/Kconfig" 605source "arch/mips/tx4927/Kconfig"
605source "arch/mips/tx4938/Kconfig" 606source "arch/mips/tx4938/Kconfig"
606source "arch/mips/vr41xx/Kconfig" 607source "arch/mips/vr41xx/Kconfig"
607source "arch/mips/philips/pnx8550/common/Kconfig"
608 608
609endmenu 609endmenu
610 610
@@ -693,9 +693,9 @@ config EARLY_PRINTK
693config SYS_HAS_EARLY_PRINTK 693config SYS_HAS_EARLY_PRINTK
694 bool 694 bool
695 695
696config GENERIC_ISA_DMA 696config HOTPLUG_CPU
697 bool 697 bool
698 select ZONE_DMA 698 default n
699 699
700config I8259 700config I8259
701 bool 701 bool
@@ -712,9 +712,13 @@ config MIPS_DISABLE_OBSOLETE_IDE
712config NO_IOPORT 712config NO_IOPORT
713 def_bool n 713 def_bool n
714 714
715config GENERIC_ISA_DMA
716 bool
717 select ZONE_DMA if GENERIC_ISA_DMA_SUPPORT_BROKEN=n
718
715config GENERIC_ISA_DMA_SUPPORT_BROKEN 719config GENERIC_ISA_DMA_SUPPORT_BROKEN
716 bool 720 bool
717 select ZONE_DMA 721 select GENERIC_ISA_DMA
718 722
719config GENERIC_GPIO 723config GENERIC_GPIO
720 bool 724 bool
@@ -768,6 +772,9 @@ config IRQ_MSP_SLP
768config IRQ_MSP_CIC 772config IRQ_MSP_CIC
769 bool 773 bool
770 774
775config IRQ_TXX9
776 bool
777
771config MIPS_BOARDS_GEN 778config MIPS_BOARDS_GEN
772 bool 779 bool
773 780
@@ -1427,8 +1434,7 @@ config SB1_PASS_2_1_WORKAROUNDS
1427 default y 1434 default y
1428 1435
1429config 64BIT_PHYS_ADDR 1436config 64BIT_PHYS_ADDR
1430 bool "Support for 64-bit physical address space" 1437 bool
1431 depends on (CPU_R4X00 || CPU_R5000 || CPU_RM7000 || CPU_RM9000 || CPU_R10000 || CPU_SB1 || CPU_MIPS32 || CPU_MIPS64) && 32BIT
1432 1438
1433config CPU_HAS_LLSC 1439config CPU_HAS_LLSC
1434 bool 1440 bool
diff --git a/arch/mips/au1000/Kconfig b/arch/mips/au1000/Kconfig
index abea88098253..29c95d97217d 100644
--- a/arch/mips/au1000/Kconfig
+++ b/arch/mips/au1000/Kconfig
@@ -136,6 +136,7 @@ config SOC_AU1200
136 136
137config SOC_AU1X00 137config SOC_AU1X00
138 bool 138 bool
139 select 64BIT_PHYS_ADDR
139 select SYS_HAS_CPU_MIPS32_R1 140 select SYS_HAS_CPU_MIPS32_R1
140 select SYS_SUPPORTS_32BIT_KERNEL 141 select SYS_SUPPORTS_32BIT_KERNEL
141 select SYS_SUPPORTS_APM_EMULATION 142 select SYS_SUPPORTS_APM_EMULATION
diff --git a/arch/mips/au1000/common/gpio.c b/arch/mips/au1000/common/gpio.c
index 7abe42099439..8527856aec45 100644
--- a/arch/mips/au1000/common/gpio.c
+++ b/arch/mips/au1000/common/gpio.c
@@ -131,12 +131,12 @@ int au1xxx_gpio_direction_input(unsigned gpio)
131{ 131{
132 if (gpio >= AU1XXX_GPIO_BASE) 132 if (gpio >= AU1XXX_GPIO_BASE)
133#if defined(CONFIG_SOC_AU1000) 133#if defined(CONFIG_SOC_AU1000)
134 ; 134 return -ENODEV;
135#else 135#else
136 return au1xxx_gpio2_direction_input(gpio); 136 return au1xxx_gpio2_direction_input(gpio);
137#endif 137#endif
138 else 138
139 return au1xxx_gpio1_direction_input(gpio); 139 return au1xxx_gpio1_direction_input(gpio);
140} 140}
141 141
142EXPORT_SYMBOL(au1xxx_gpio_direction_input); 142EXPORT_SYMBOL(au1xxx_gpio_direction_input);
@@ -145,12 +145,12 @@ int au1xxx_gpio_direction_output(unsigned gpio, int value)
145{ 145{
146 if (gpio >= AU1XXX_GPIO_BASE) 146 if (gpio >= AU1XXX_GPIO_BASE)
147#if defined(CONFIG_SOC_AU1000) 147#if defined(CONFIG_SOC_AU1000)
148 ; 148 return -ENODEV;
149#else 149#else
150 return au1xxx_gpio2_direction_output(gpio, value); 150 return au1xxx_gpio2_direction_output(gpio, value);
151#endif 151#endif
152 else 152
153 return au1xxx_gpio1_direction_output(gpio, value); 153 return au1xxx_gpio1_direction_output(gpio, value);
154} 154}
155 155
156EXPORT_SYMBOL(au1xxx_gpio_direction_output); 156EXPORT_SYMBOL(au1xxx_gpio_direction_output);
diff --git a/arch/mips/configs/bigsur_defconfig b/arch/mips/configs/bigsur_defconfig
index 67a80f4c7d87..700a3a2d688e 100644
--- a/arch/mips/configs/bigsur_defconfig
+++ b/arch/mips/configs/bigsur_defconfig
@@ -663,8 +663,8 @@ CONFIG_MOXA_SMARTIO_NEW=m
663# CONFIG_SX is not set 663# CONFIG_SX is not set
664# CONFIG_RIO is not set 664# CONFIG_RIO is not set
665# CONFIG_STALDRV is not set 665# CONFIG_STALDRV is not set
666CONFIG_SIBYTE_SB1250_DUART=y 666CONFIG_SERIAL_SB1250_DUART=y
667CONFIG_SIBYTE_SB1250_DUART_CONSOLE=y 667CONFIG_SERIAL_SB1250_DUART_CONSOLE=y
668 668
669# 669#
670# Serial drivers 670# Serial drivers
diff --git a/arch/mips/configs/capcella_defconfig b/arch/mips/configs/capcella_defconfig
index 4dc3197e2e9f..8ecbbb226c76 100644
--- a/arch/mips/configs/capcella_defconfig
+++ b/arch/mips/configs/capcella_defconfig
@@ -1,60 +1,47 @@
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.23-rc2
4# Tue Feb 20 21:47:22 2007 4# Wed Aug 8 10:23:16 2007
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
26# CONFIG_MIPS_COBALT is not set 13# CONFIG_MIPS_COBALT is not set
27# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
28# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 21# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 22CONFIG_MACH_VR41XX=y
36# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
38CONFIG_MACH_VR41XX=y 25# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
43# CONFIG_SGI_IP27 is not set 29# CONFIG_SGI_IP27 is not set
44# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 41# CONFIG_TOSHIBA_JMR3927 is not set
56# CONFIG_TOSHIBA_RBTX4927 is not set 42# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 43# CONFIG_TOSHIBA_RBTX4938 is not set
44# CONFIG_WR_PPMC is not set
58# CONFIG_CASIO_E55 is not set 45# CONFIG_CASIO_E55 is not set
59# CONFIG_IBM_WORKPAD is not set 46# CONFIG_IBM_WORKPAD is not set
60# CONFIG_NEC_CMBVR4133 is not set 47# CONFIG_NEC_CMBVR4133 is not set
@@ -73,6 +60,8 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
73CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 60CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
74CONFIG_DMA_NONCOHERENT=y 61CONFIG_DMA_NONCOHERENT=y
75CONFIG_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
76# CONFIG_CPU_BIG_ENDIAN is not set 65# CONFIG_CPU_BIG_ENDIAN is not set
77CONFIG_CPU_LITTLE_ENDIAN=y 66CONFIG_CPU_LITTLE_ENDIAN=y
78CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 67CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
@@ -82,6 +71,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
82# 71#
83# CPU selection 72# CPU selection
84# 73#
74# CONFIG_CPU_LOONGSON2 is not set
85# CONFIG_CPU_MIPS32_R1 is not set 75# CONFIG_CPU_MIPS32_R1 is not set
86# CONFIG_CPU_MIPS32_R2 is not set 76# CONFIG_CPU_MIPS32_R2 is not set
87# CONFIG_CPU_MIPS64_R1 is not set 77# CONFIG_CPU_MIPS64_R1 is not set
@@ -103,7 +93,6 @@ CONFIG_CPU_VR41XX=y
103# CONFIG_CPU_SB1 is not set 93# CONFIG_CPU_SB1 is not set
104CONFIG_SYS_HAS_CPU_VR41XX=y 94CONFIG_SYS_HAS_CPU_VR41XX=y
105CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 95CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
106CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
107CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 96CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
108CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y 97CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
109 98
@@ -119,7 +108,6 @@ CONFIG_PAGE_SIZE_4KB=y
119CONFIG_MIPS_MT_DISABLED=y 108CONFIG_MIPS_MT_DISABLED=y
120# CONFIG_MIPS_MT_SMP is not set 109# CONFIG_MIPS_MT_SMP is not set
121# CONFIG_MIPS_MT_SMTC is not set 110# CONFIG_MIPS_MT_SMTC is not set
122# CONFIG_MIPS_VPE_LOADER is not set
123CONFIG_CPU_HAS_SYNC=y 111CONFIG_CPU_HAS_SYNC=y
124CONFIG_GENERIC_HARDIRQS=y 112CONFIG_GENERIC_HARDIRQS=y
125CONFIG_GENERIC_IRQ_PROBE=y 113CONFIG_GENERIC_IRQ_PROBE=y
@@ -133,48 +121,47 @@ CONFIG_FLAT_NODE_MEM_MAP=y
133# CONFIG_SPARSEMEM_STATIC is not set 121# CONFIG_SPARSEMEM_STATIC is not set
134CONFIG_SPLIT_PTLOCK_CPUS=4 122CONFIG_SPLIT_PTLOCK_CPUS=4
135# CONFIG_RESOURCES_64BIT is not set 123# CONFIG_RESOURCES_64BIT is not set
136CONFIG_ZONE_DMA_FLAG=1 124CONFIG_ZONE_DMA_FLAG=0
125CONFIG_VIRT_TO_BUS=y
137# CONFIG_HZ_48 is not set 126# CONFIG_HZ_48 is not set
138# CONFIG_HZ_100 is not set 127# CONFIG_HZ_100 is not set
139# CONFIG_HZ_128 is not set 128# CONFIG_HZ_128 is not set
140# CONFIG_HZ_250 is not set 129CONFIG_HZ_250=y
141# CONFIG_HZ_256 is not set 130# CONFIG_HZ_256 is not set
142CONFIG_HZ_1000=y 131# CONFIG_HZ_1000 is not set
143# CONFIG_HZ_1024 is not set 132# CONFIG_HZ_1024 is not set
144CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 133CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
145CONFIG_HZ=1000 134CONFIG_HZ=250
146CONFIG_PREEMPT_NONE=y 135CONFIG_PREEMPT_NONE=y
147# CONFIG_PREEMPT_VOLUNTARY is not set 136# CONFIG_PREEMPT_VOLUNTARY is not set
148# CONFIG_PREEMPT is not set 137# CONFIG_PREEMPT is not set
149# CONFIG_KEXEC is not set 138# CONFIG_KEXEC is not set
139CONFIG_SECCOMP=y
150CONFIG_LOCKDEP_SUPPORT=y 140CONFIG_LOCKDEP_SUPPORT=y
151CONFIG_STACKTRACE_SUPPORT=y 141CONFIG_STACKTRACE_SUPPORT=y
152CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 142CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
153 143
154# 144#
155# Code maturity level options 145# General setup
156# 146#
157CONFIG_EXPERIMENTAL=y 147CONFIG_EXPERIMENTAL=y
158CONFIG_BROKEN_ON_SMP=y 148CONFIG_BROKEN_ON_SMP=y
159CONFIG_INIT_ENV_ARG_LIMIT=32 149CONFIG_INIT_ENV_ARG_LIMIT=32
160
161#
162# General setup
163#
164CONFIG_LOCALVERSION="" 150CONFIG_LOCALVERSION=""
165CONFIG_LOCALVERSION_AUTO=y 151CONFIG_LOCALVERSION_AUTO=y
166CONFIG_SWAP=y 152CONFIG_SWAP=y
167CONFIG_SYSVIPC=y 153CONFIG_SYSVIPC=y
168# CONFIG_IPC_NS is not set
169CONFIG_SYSVIPC_SYSCTL=y 154CONFIG_SYSVIPC_SYSCTL=y
170# CONFIG_POSIX_MQUEUE is not set 155# CONFIG_POSIX_MQUEUE is not set
171# CONFIG_BSD_PROCESS_ACCT is not set 156# CONFIG_BSD_PROCESS_ACCT is not set
172# CONFIG_TASKSTATS is not set 157# CONFIG_TASKSTATS is not set
173# CONFIG_UTS_NS is not set 158# CONFIG_USER_NS is not set
174# CONFIG_AUDIT is not set 159# CONFIG_AUDIT is not set
175# CONFIG_IKCONFIG is not set 160# CONFIG_IKCONFIG is not set
161CONFIG_LOG_BUF_SHIFT=14
176CONFIG_SYSFS_DEPRECATED=y 162CONFIG_SYSFS_DEPRECATED=y
177# CONFIG_RELAY is not set 163# CONFIG_RELAY is not set
164# CONFIG_BLK_DEV_INITRD is not set
178# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 165# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
179CONFIG_SYSCTL=y 166CONFIG_SYSCTL=y
180CONFIG_EMBEDDED=y 167CONFIG_EMBEDDED=y
@@ -187,32 +174,30 @@ CONFIG_BUG=y
187CONFIG_ELF_CORE=y 174CONFIG_ELF_CORE=y
188CONFIG_BASE_FULL=y 175CONFIG_BASE_FULL=y
189CONFIG_FUTEX=y 176CONFIG_FUTEX=y
177CONFIG_ANON_INODES=y
190CONFIG_EPOLL=y 178CONFIG_EPOLL=y
179CONFIG_SIGNALFD=y
180CONFIG_TIMERFD=y
181CONFIG_EVENTFD=y
191CONFIG_SHMEM=y 182CONFIG_SHMEM=y
192CONFIG_SLAB=y
193CONFIG_VM_EVENT_COUNTERS=y 183CONFIG_VM_EVENT_COUNTERS=y
184CONFIG_SLAB=y
185# CONFIG_SLUB is not set
186# CONFIG_SLOB is not set
194CONFIG_RT_MUTEXES=y 187CONFIG_RT_MUTEXES=y
195# CONFIG_TINY_SHMEM is not set 188# CONFIG_TINY_SHMEM is not set
196CONFIG_BASE_SMALL=0 189CONFIG_BASE_SMALL=0
197# CONFIG_SLOB is not set
198
199#
200# Loadable module support
201#
202CONFIG_MODULES=y 190CONFIG_MODULES=y
203CONFIG_MODULE_UNLOAD=y 191CONFIG_MODULE_UNLOAD=y
204# CONFIG_MODULE_FORCE_UNLOAD is not set 192CONFIG_MODULE_FORCE_UNLOAD=y
205CONFIG_MODVERSIONS=y 193CONFIG_MODVERSIONS=y
206CONFIG_MODULE_SRCVERSION_ALL=y 194CONFIG_MODULE_SRCVERSION_ALL=y
207CONFIG_KMOD=y 195CONFIG_KMOD=y
208
209#
210# Block layer
211#
212CONFIG_BLOCK=y 196CONFIG_BLOCK=y
213# CONFIG_LBD is not set 197# CONFIG_LBD is not set
214# CONFIG_BLK_DEV_IO_TRACE is not set 198# CONFIG_BLK_DEV_IO_TRACE is not set
215# CONFIG_LSF is not set 199# CONFIG_LSF is not set
200# CONFIG_BLK_DEV_BSG is not set
216 201
217# 202#
218# IO Schedulers 203# IO Schedulers
@@ -232,16 +217,13 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
232# 217#
233CONFIG_HW_HAS_PCI=y 218CONFIG_HW_HAS_PCI=y
234CONFIG_PCI=y 219CONFIG_PCI=y
220# CONFIG_ARCH_SUPPORTS_MSI is not set
235CONFIG_MMU=y 221CONFIG_MMU=y
236 222
237# 223#
238# PCCARD (PCMCIA/CardBus) support 224# PCCARD (PCMCIA/CardBus) support
239# 225#
240# CONFIG_PCCARD is not set 226# CONFIG_PCCARD is not set
241
242#
243# PCI Hotplug Support
244#
245# CONFIG_HOTPLUG_PCI is not set 227# CONFIG_HOTPLUG_PCI is not set
246 228
247# 229#
@@ -254,10 +236,7 @@ CONFIG_TRAD_SIGNALS=y
254# 236#
255# Power management options 237# Power management options
256# 238#
257CONFIG_PM=y 239# CONFIG_PM is not set
258# CONFIG_PM_LEGACY is not set
259# CONFIG_PM_DEBUG is not set
260# CONFIG_PM_SYSFS_DEPRECATED is not set
261 240
262# 241#
263# Networking 242# Networking
@@ -267,7 +246,6 @@ CONFIG_NET=y
267# 246#
268# Networking options 247# Networking options
269# 248#
270# CONFIG_NETDEBUG is not set
271CONFIG_PACKET=y 249CONFIG_PACKET=y
272CONFIG_PACKET_MMAP=y 250CONFIG_PACKET_MMAP=y
273CONFIG_UNIX=y 251CONFIG_UNIX=y
@@ -309,20 +287,13 @@ CONFIG_TCP_MD5SIG=y
309# CONFIG_INET6_TUNNEL is not set 287# CONFIG_INET6_TUNNEL is not set
310CONFIG_NETWORK_SECMARK=y 288CONFIG_NETWORK_SECMARK=y
311# CONFIG_NETFILTER is not set 289# CONFIG_NETFILTER is not set
312
313#
314# DCCP Configuration (EXPERIMENTAL)
315#
316# CONFIG_IP_DCCP is not set 290# CONFIG_IP_DCCP is not set
317 291CONFIG_IP_SCTP=m
318# 292# CONFIG_SCTP_DBG_MSG is not set
319# SCTP Configuration (EXPERIMENTAL) 293# CONFIG_SCTP_DBG_OBJCNT is not set
320# 294# CONFIG_SCTP_HMAC_NONE is not set
321# CONFIG_IP_SCTP is not set 295# CONFIG_SCTP_HMAC_SHA1 is not set
322 296CONFIG_SCTP_HMAC_MD5=y
323#
324# TIPC Configuration (EXPERIMENTAL)
325#
326# CONFIG_TIPC is not set 297# CONFIG_TIPC is not set
327# CONFIG_ATM is not set 298# CONFIG_ATM is not set
328# CONFIG_BRIDGE is not set 299# CONFIG_BRIDGE is not set
@@ -348,7 +319,17 @@ CONFIG_NETWORK_SECMARK=y
348# CONFIG_HAMRADIO is not set 319# CONFIG_HAMRADIO is not set
349# CONFIG_IRDA is not set 320# CONFIG_IRDA is not set
350# CONFIG_BT is not set 321# CONFIG_BT is not set
322# CONFIG_AF_RXRPC is not set
323
324#
325# Wireless
326#
327# CONFIG_CFG80211 is not set
328# CONFIG_WIRELESS_EXT is not set
329# CONFIG_MAC80211 is not set
351# CONFIG_IEEE80211 is not set 330# CONFIG_IEEE80211 is not set
331# CONFIG_RFKILL is not set
332# CONFIG_NET_9P is not set
352 333
353# 334#
354# Device Drivers 335# Device Drivers
@@ -361,30 +342,10 @@ CONFIG_STANDALONE=y
361CONFIG_PREVENT_FIRMWARE_BUILD=y 342CONFIG_PREVENT_FIRMWARE_BUILD=y
362CONFIG_FW_LOADER=m 343CONFIG_FW_LOADER=m
363# CONFIG_SYS_HYPERVISOR is not set 344# CONFIG_SYS_HYPERVISOR is not set
364 345# CONFIG_CONNECTOR is not set
365#
366# Connector - unified userspace <-> kernelspace linker
367#
368CONFIG_CONNECTOR=m
369
370#
371# Memory Technology Devices (MTD)
372#
373# CONFIG_MTD is not set 346# CONFIG_MTD is not set
374
375#
376# Parallel port support
377#
378# CONFIG_PARPORT is not set 347# CONFIG_PARPORT is not set
379 348CONFIG_BLK_DEV=y
380#
381# Plug and Play support
382#
383# CONFIG_PNPACPI is not set
384
385#
386# Block devices
387#
388# CONFIG_BLK_CPQ_DA is not set 349# CONFIG_BLK_CPQ_DA is not set
389# CONFIG_BLK_CPQ_CISS_DA is not set 350# CONFIG_BLK_CPQ_CISS_DA is not set
390# CONFIG_BLK_DEV_DAC960 is not set 351# CONFIG_BLK_DEV_DAC960 is not set
@@ -397,19 +358,9 @@ CONFIG_BLK_DEV_RAM=y
397CONFIG_BLK_DEV_RAM_COUNT=16 358CONFIG_BLK_DEV_RAM_COUNT=16
398CONFIG_BLK_DEV_RAM_SIZE=4096 359CONFIG_BLK_DEV_RAM_SIZE=4096
399CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 360CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
400# CONFIG_BLK_DEV_INITRD is not set
401# CONFIG_CDROM_PKTCDVD is not set 361# CONFIG_CDROM_PKTCDVD is not set
402# CONFIG_ATA_OVER_ETH is not set 362# CONFIG_ATA_OVER_ETH is not set
403 363# CONFIG_MISC_DEVICES is not set
404#
405# Misc devices
406#
407CONFIG_SGI_IOC4=m
408# CONFIG_TIFM_CORE is not set
409
410#
411# ATA/ATAPI/MFM/RLL support
412#
413CONFIG_IDE=y 364CONFIG_IDE=y
414CONFIG_IDE_MAX_HWIFS=4 365CONFIG_IDE_MAX_HWIFS=4
415CONFIG_BLK_DEV_IDE=y 366CONFIG_BLK_DEV_IDE=y
@@ -424,15 +375,16 @@ CONFIG_BLK_DEV_IDEDISK=y
424# CONFIG_BLK_DEV_IDETAPE is not set 375# CONFIG_BLK_DEV_IDETAPE is not set
425# CONFIG_BLK_DEV_IDEFLOPPY is not set 376# CONFIG_BLK_DEV_IDEFLOPPY is not set
426# CONFIG_IDE_TASK_IOCTL is not set 377# CONFIG_IDE_TASK_IOCTL is not set
378CONFIG_IDE_PROC_FS=y
427 379
428# 380#
429# IDE chipset support/bugfixes 381# IDE chipset support/bugfixes
430# 382#
431CONFIG_IDE_GENERIC=y 383CONFIG_IDE_GENERIC=y
432# CONFIG_BLK_DEV_IDEPCI is not set 384# CONFIG_BLK_DEV_IDEPCI is not set
385# CONFIG_IDEPCI_PCIBUS_ORDER is not set
433# CONFIG_IDE_ARM is not set 386# CONFIG_IDE_ARM is not set
434# CONFIG_BLK_DEV_IDEDMA is not set 387# CONFIG_BLK_DEV_IDEDMA is not set
435# CONFIG_IDEDMA_AUTO is not set
436# CONFIG_BLK_DEV_HD is not set 388# CONFIG_BLK_DEV_HD is not set
437 389
438# 390#
@@ -440,16 +392,9 @@ CONFIG_IDE_GENERIC=y
440# 392#
441# CONFIG_RAID_ATTRS is not set 393# CONFIG_RAID_ATTRS is not set
442# CONFIG_SCSI is not set 394# CONFIG_SCSI is not set
395# CONFIG_SCSI_DMA is not set
443# CONFIG_SCSI_NETLINK is not set 396# CONFIG_SCSI_NETLINK is not set
444
445#
446# Serial ATA (prod) and Parallel ATA (experimental) drivers
447#
448# CONFIG_ATA is not set 397# CONFIG_ATA is not set
449
450#
451# Multi-device support (RAID and LVM)
452#
453# CONFIG_MD is not set 398# CONFIG_MD is not set
454 399
455# 400#
@@ -460,30 +405,17 @@ CONFIG_IDE_GENERIC=y
460# 405#
461# IEEE 1394 (FireWire) support 406# IEEE 1394 (FireWire) support
462# 407#
408# CONFIG_FIREWIRE is not set
463# CONFIG_IEEE1394 is not set 409# CONFIG_IEEE1394 is not set
464
465#
466# I2O device support
467#
468# CONFIG_I2O is not set 410# CONFIG_I2O is not set
469
470#
471# Network device support
472#
473CONFIG_NETDEVICES=y 411CONFIG_NETDEVICES=y
412# CONFIG_NETDEVICES_MULTIQUEUE is not set
474# CONFIG_DUMMY is not set 413# CONFIG_DUMMY is not set
475# CONFIG_BONDING is not set 414# CONFIG_BONDING is not set
415# CONFIG_MACVLAN is not set
476# CONFIG_EQUALIZER is not set 416# CONFIG_EQUALIZER is not set
477# CONFIG_TUN is not set 417# CONFIG_TUN is not set
478
479#
480# ARCnet devices
481#
482# CONFIG_ARCNET is not set 418# CONFIG_ARCNET is not set
483
484#
485# PHY device support
486#
487CONFIG_PHYLIB=m 419CONFIG_PHYLIB=m
488 420
489# 421#
@@ -497,22 +429,16 @@ CONFIG_CICADA_PHY=m
497CONFIG_VITESSE_PHY=m 429CONFIG_VITESSE_PHY=m
498CONFIG_SMSC_PHY=m 430CONFIG_SMSC_PHY=m
499# CONFIG_BROADCOM_PHY is not set 431# CONFIG_BROADCOM_PHY is not set
432# CONFIG_ICPLUS_PHY is not set
500# CONFIG_FIXED_PHY is not set 433# CONFIG_FIXED_PHY is not set
501
502#
503# Ethernet (10 or 100Mbit)
504#
505CONFIG_NET_ETHERNET=y 434CONFIG_NET_ETHERNET=y
506CONFIG_MII=y 435CONFIG_MII=y
436# CONFIG_AX88796 is not set
507# CONFIG_HAPPYMEAL is not set 437# CONFIG_HAPPYMEAL is not set
508# CONFIG_SUNGEM is not set 438# CONFIG_SUNGEM is not set
509# CONFIG_CASSINI is not set 439# CONFIG_CASSINI is not set
510# CONFIG_NET_VENDOR_3COM is not set 440# CONFIG_NET_VENDOR_3COM is not set
511# CONFIG_DM9000 is not set 441# CONFIG_DM9000 is not set
512
513#
514# Tulip family network device support
515#
516# CONFIG_NET_TULIP is not set 442# CONFIG_NET_TULIP is not set
517# CONFIG_HP100 is not set 443# CONFIG_HP100 is not set
518CONFIG_NET_PCI=y 444CONFIG_NET_PCI=y
@@ -521,6 +447,7 @@ CONFIG_NET_PCI=y
521# CONFIG_ADAPTEC_STARFIRE is not set 447# CONFIG_ADAPTEC_STARFIRE is not set
522# CONFIG_B44 is not set 448# CONFIG_B44 is not set
523# CONFIG_FORCEDETH is not set 449# CONFIG_FORCEDETH is not set
450# CONFIG_TC35815 is not set
524# CONFIG_DGRS is not set 451# CONFIG_DGRS is not set
525# CONFIG_EEPRO100 is not set 452# CONFIG_EEPRO100 is not set
526# CONFIG_E100 is not set 453# CONFIG_E100 is not set
@@ -539,50 +466,15 @@ CONFIG_8139TOO_PIO=y
539# CONFIG_TLAN is not set 466# CONFIG_TLAN is not set
540# CONFIG_VIA_RHINE is not set 467# CONFIG_VIA_RHINE is not set
541# CONFIG_SC92031 is not set 468# CONFIG_SC92031 is not set
542 469# CONFIG_NETDEV_1000 is not set
543# 470# CONFIG_NETDEV_10000 is not set
544# Ethernet (1000 Mbit)
545#
546# CONFIG_ACENIC is not set
547# CONFIG_DL2K is not set
548# CONFIG_E1000 is not set
549# CONFIG_NS83820 is not set
550# CONFIG_HAMACHI is not set
551# CONFIG_YELLOWFIN is not set
552# CONFIG_R8169 is not set
553# CONFIG_SIS190 is not set
554# CONFIG_SKGE is not set
555# CONFIG_SKY2 is not set
556# CONFIG_SK98LIN is not set
557# CONFIG_VIA_VELOCITY is not set
558# CONFIG_TIGON3 is not set
559# CONFIG_BNX2 is not set
560CONFIG_QLA3XXX=m
561# CONFIG_ATL1 is not set
562
563#
564# Ethernet (10000 Mbit)
565#
566# CONFIG_CHELSIO_T1 is not set
567CONFIG_CHELSIO_T3=m
568# CONFIG_IXGB is not set
569# CONFIG_S2IO is not set
570# CONFIG_MYRI10GE is not set
571CONFIG_NETXEN_NIC=m
572
573#
574# Token Ring devices
575#
576# CONFIG_TR is not set 471# CONFIG_TR is not set
577 472
578# 473#
579# Wireless LAN (non-hamradio) 474# Wireless LAN
580#
581# CONFIG_NET_RADIO is not set
582
583#
584# Wan interfaces
585# 475#
476# CONFIG_WLAN_PRE80211 is not set
477# CONFIG_WLAN_80211 is not set
586# CONFIG_WAN is not set 478# CONFIG_WAN is not set
587# CONFIG_FDDI is not set 479# CONFIG_FDDI is not set
588# CONFIG_HIPPI is not set 480# CONFIG_HIPPI is not set
@@ -592,15 +484,7 @@ CONFIG_NETXEN_NIC=m
592# CONFIG_NETCONSOLE is not set 484# CONFIG_NETCONSOLE is not set
593# CONFIG_NETPOLL is not set 485# CONFIG_NETPOLL is not set
594# CONFIG_NET_POLL_CONTROLLER is not set 486# CONFIG_NET_POLL_CONTROLLER is not set
595
596#
597# ISDN subsystem
598#
599# CONFIG_ISDN is not set 487# CONFIG_ISDN is not set
600
601#
602# Telephony Support
603#
604# CONFIG_PHONE is not set 488# CONFIG_PHONE is not set
605 489
606# 490#
@@ -608,6 +492,7 @@ CONFIG_NETXEN_NIC=m
608# 492#
609CONFIG_INPUT=y 493CONFIG_INPUT=y
610# CONFIG_INPUT_FF_MEMLESS is not set 494# CONFIG_INPUT_FF_MEMLESS is not set
495# CONFIG_INPUT_POLLDEV is not set
611 496
612# 497#
613# Userland interfaces 498# Userland interfaces
@@ -624,6 +509,7 @@ CONFIG_INPUT=y
624# CONFIG_INPUT_KEYBOARD is not set 509# CONFIG_INPUT_KEYBOARD is not set
625# CONFIG_INPUT_MOUSE is not set 510# CONFIG_INPUT_MOUSE is not set
626# CONFIG_INPUT_JOYSTICK is not set 511# CONFIG_INPUT_JOYSTICK is not set
512# CONFIG_INPUT_TABLET is not set
627# CONFIG_INPUT_TOUCHSCREEN is not set 513# CONFIG_INPUT_TOUCHSCREEN is not set
628# CONFIG_INPUT_MISC is not set 514# CONFIG_INPUT_MISC is not set
629 515
@@ -658,34 +544,17 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
658CONFIG_UNIX98_PTYS=y 544CONFIG_UNIX98_PTYS=y
659CONFIG_LEGACY_PTYS=y 545CONFIG_LEGACY_PTYS=y
660CONFIG_LEGACY_PTY_COUNT=256 546CONFIG_LEGACY_PTY_COUNT=256
661
662#
663# IPMI
664#
665# CONFIG_IPMI_HANDLER is not set 547# CONFIG_IPMI_HANDLER is not set
666
667#
668# Watchdog Cards
669#
670# CONFIG_WATCHDOG is not set 548# CONFIG_WATCHDOG is not set
671# CONFIG_HW_RANDOM is not set 549# CONFIG_HW_RANDOM is not set
672# CONFIG_RTC is not set 550# CONFIG_RTC is not set
673# CONFIG_GEN_RTC is not set
674# CONFIG_DTLK is not set
675# CONFIG_R3964 is not set 551# CONFIG_R3964 is not set
676# CONFIG_APPLICOM is not set 552# CONFIG_APPLICOM is not set
677# CONFIG_DRM is not set 553# CONFIG_DRM is not set
678CONFIG_GPIO_VR41XX=y 554CONFIG_GPIO_VR41XX=y
679# CONFIG_RAW_DRIVER is not set 555# CONFIG_RAW_DRIVER is not set
680
681#
682# TPM devices
683#
684# CONFIG_TCG_TPM is not set 556# CONFIG_TCG_TPM is not set
685 557CONFIG_DEVPORT=y
686#
687# I2C support
688#
689# CONFIG_I2C is not set 558# CONFIG_I2C is not set
690 559
691# 560#
@@ -693,32 +562,33 @@ CONFIG_GPIO_VR41XX=y
693# 562#
694# CONFIG_SPI is not set 563# CONFIG_SPI is not set
695# CONFIG_SPI_MASTER is not set 564# CONFIG_SPI_MASTER is not set
696
697#
698# Dallas's 1-wire bus
699#
700# CONFIG_W1 is not set 565# CONFIG_W1 is not set
566# CONFIG_POWER_SUPPLY is not set
567# CONFIG_HWMON is not set
701 568
702# 569#
703# Hardware Monitoring support 570# Multifunction device drivers
704# 571#
705# CONFIG_HWMON is not set 572# CONFIG_MFD_SM501 is not set
706# CONFIG_HWMON_VID is not set
707 573
708# 574#
709# Multimedia devices 575# Multimedia devices
710# 576#
711# CONFIG_VIDEO_DEV is not set 577# CONFIG_VIDEO_DEV is not set
578# CONFIG_DVB_CORE is not set
579# CONFIG_DAB is not set
712 580
713# 581#
714# Digital Video Broadcasting Devices 582# Graphics support
715# 583#
716# CONFIG_DVB is not set 584# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
717 585
718# 586#
719# Graphics support 587# Display device support
720# 588#
721# CONFIG_FIRMWARE_EDID is not set 589# CONFIG_DISPLAY_SUPPORT is not set
590# CONFIG_VGASTATE is not set
591# CONFIG_VIDEO_OUTPUT_CONTROL is not set
722# CONFIG_FB is not set 592# CONFIG_FB is not set
723 593
724# 594#
@@ -726,65 +596,16 @@ CONFIG_GPIO_VR41XX=y
726# 596#
727# CONFIG_VGA_CONSOLE is not set 597# CONFIG_VGA_CONSOLE is not set
728CONFIG_DUMMY_CONSOLE=y 598CONFIG_DUMMY_CONSOLE=y
729# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
730 599
731# 600#
732# Sound 601# Sound
733# 602#
734# CONFIG_SOUND is not set 603# CONFIG_SOUND is not set
735 604# CONFIG_HID_SUPPORT is not set
736# 605# CONFIG_USB_SUPPORT is not set
737# HID Devices
738#
739# CONFIG_HID is not set
740
741#
742# USB support
743#
744CONFIG_USB_ARCH_HAS_HCD=y
745CONFIG_USB_ARCH_HAS_OHCI=y
746CONFIG_USB_ARCH_HAS_EHCI=y
747# CONFIG_USB is not set
748
749#
750# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
751#
752
753#
754# USB Gadget Support
755#
756# CONFIG_USB_GADGET is not set
757
758#
759# MMC/SD Card support
760#
761# CONFIG_MMC is not set 606# CONFIG_MMC is not set
762
763#
764# LED devices
765#
766# CONFIG_NEW_LEDS is not set 607# CONFIG_NEW_LEDS is not set
767
768#
769# LED drivers
770#
771
772#
773# LED Triggers
774#
775
776#
777# InfiniBand support
778#
779# CONFIG_INFINIBAND is not set 608# CONFIG_INFINIBAND is not set
780
781#
782# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
783#
784
785#
786# Real Time Clock
787#
788CONFIG_RTC_LIB=y 609CONFIG_RTC_LIB=y
789CONFIG_RTC_CLASS=y 610CONFIG_RTC_CLASS=y
790CONFIG_RTC_HCTOSYS=y 611CONFIG_RTC_HCTOSYS=y
@@ -798,18 +619,29 @@ CONFIG_RTC_INTF_SYSFS=y
798CONFIG_RTC_INTF_PROC=y 619CONFIG_RTC_INTF_PROC=y
799CONFIG_RTC_INTF_DEV=y 620CONFIG_RTC_INTF_DEV=y
800# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set 621# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
622# CONFIG_RTC_DRV_TEST is not set
623
624#
625# SPI RTC drivers
626#
801 627
802# 628#
803# RTC drivers 629# Platform RTC drivers
804# 630#
631# CONFIG_RTC_DRV_CMOS is not set
805# CONFIG_RTC_DRV_DS1553 is not set 632# CONFIG_RTC_DRV_DS1553 is not set
633# CONFIG_RTC_DRV_STK17TA8 is not set
806# CONFIG_RTC_DRV_DS1742 is not set 634# CONFIG_RTC_DRV_DS1742 is not set
807# CONFIG_RTC_DRV_M48T86 is not set 635# CONFIG_RTC_DRV_M48T86 is not set
808CONFIG_RTC_DRV_VR41XX=y 636# CONFIG_RTC_DRV_M48T59 is not set
809# CONFIG_RTC_DRV_TEST is not set
810# CONFIG_RTC_DRV_V3020 is not set 637# CONFIG_RTC_DRV_V3020 is not set
811 638
812# 639#
640# on-CPU RTC drivers
641#
642CONFIG_RTC_DRV_VR41XX=y
643
644#
813# DMA Engine support 645# DMA Engine support
814# 646#
815# CONFIG_DMA_ENGINE is not set 647# CONFIG_DMA_ENGINE is not set
@@ -823,12 +655,9 @@ CONFIG_RTC_DRV_VR41XX=y
823# 655#
824 656
825# 657#
826# Auxiliary Display support 658# Userspace I/O
827#
828
829#
830# Virtualization
831# 659#
660# CONFIG_UIO is not set
832 661
833# 662#
834# File systems 663# File systems
@@ -836,8 +665,14 @@ CONFIG_RTC_DRV_VR41XX=y
836CONFIG_EXT2_FS=y 665CONFIG_EXT2_FS=y
837# CONFIG_EXT2_FS_XATTR is not set 666# CONFIG_EXT2_FS_XATTR is not set
838# CONFIG_EXT2_FS_XIP is not set 667# CONFIG_EXT2_FS_XIP is not set
839# CONFIG_EXT3_FS is not set 668CONFIG_EXT3_FS=y
669CONFIG_EXT3_FS_XATTR=y
670# CONFIG_EXT3_FS_POSIX_ACL is not set
671# CONFIG_EXT3_FS_SECURITY is not set
840# CONFIG_EXT4DEV_FS is not set 672# CONFIG_EXT4DEV_FS is not set
673CONFIG_JBD=y
674# CONFIG_JBD_DEBUG is not set
675CONFIG_FS_MBCACHE=y
841# CONFIG_REISERFS_FS is not set 676# CONFIG_REISERFS_FS is not set
842# CONFIG_JFS_FS is not set 677# CONFIG_JFS_FS is not set
843CONFIG_FS_POSIX_ACL=y 678CONFIG_FS_POSIX_ACL=y
@@ -852,7 +687,7 @@ CONFIG_INOTIFY_USER=y
852CONFIG_DNOTIFY=y 687CONFIG_DNOTIFY=y
853# CONFIG_AUTOFS_FS is not set 688# CONFIG_AUTOFS_FS is not set
854CONFIG_AUTOFS4_FS=y 689CONFIG_AUTOFS4_FS=y
855CONFIG_FUSE_FS=m 690# CONFIG_FUSE_FS is not set
856CONFIG_GENERIC_ACL=y 691CONFIG_GENERIC_ACL=y
857 692
858# 693#
@@ -879,7 +714,7 @@ CONFIG_TMPFS=y
879CONFIG_TMPFS_POSIX_ACL=y 714CONFIG_TMPFS_POSIX_ACL=y
880# CONFIG_HUGETLB_PAGE is not set 715# CONFIG_HUGETLB_PAGE is not set
881CONFIG_RAMFS=y 716CONFIG_RAMFS=y
882CONFIG_CONFIGFS_FS=m 717# CONFIG_CONFIGFS_FS is not set
883 718
884# 719#
885# Miscellaneous filesystems 720# Miscellaneous filesystems
@@ -905,14 +740,12 @@ CONFIG_NFS_FS=y
905# CONFIG_NFS_V3 is not set 740# CONFIG_NFS_V3 is not set
906# CONFIG_NFS_V4 is not set 741# CONFIG_NFS_V4 is not set
907# CONFIG_NFS_DIRECTIO is not set 742# CONFIG_NFS_DIRECTIO is not set
908CONFIG_NFSD=y 743# CONFIG_NFSD is not set
909# CONFIG_NFSD_V3 is not set
910# CONFIG_NFSD_TCP is not set
911CONFIG_ROOT_NFS=y 744CONFIG_ROOT_NFS=y
912CONFIG_LOCKD=y 745CONFIG_LOCKD=y
913CONFIG_EXPORTFS=y
914CONFIG_NFS_COMMON=y 746CONFIG_NFS_COMMON=y
915CONFIG_SUNRPC=y 747CONFIG_SUNRPC=y
748# CONFIG_SUNRPC_BIND34 is not set
916# CONFIG_RPCSEC_GSS_KRB5 is not set 749# CONFIG_RPCSEC_GSS_KRB5 is not set
917# CONFIG_RPCSEC_GSS_SPKM3 is not set 750# CONFIG_RPCSEC_GSS_SPKM3 is not set
918# CONFIG_SMB_FS is not set 751# CONFIG_SMB_FS is not set
@@ -920,7 +753,6 @@ CONFIG_SUNRPC=y
920# CONFIG_NCP_FS is not set 753# CONFIG_NCP_FS is not set
921# CONFIG_CODA_FS is not set 754# CONFIG_CODA_FS is not set
922# CONFIG_AFS_FS is not set 755# CONFIG_AFS_FS is not set
923# CONFIG_9P_FS is not set
924 756
925# 757#
926# Partition Types 758# Partition Types
@@ -936,10 +768,7 @@ CONFIG_MSDOS_PARTITION=y
936# 768#
937# Distributed Lock Manager 769# Distributed Lock Manager
938# 770#
939CONFIG_DLM=m 771# CONFIG_DLM is not set
940CONFIG_DLM_TCP=y
941# CONFIG_DLM_SCTP is not set
942# CONFIG_DLM_DEBUG is not set
943 772
944# 773#
945# Profiling support 774# Profiling support
@@ -957,7 +786,6 @@ CONFIG_ENABLE_MUST_CHECK=y
957# CONFIG_DEBUG_FS is not set 786# CONFIG_DEBUG_FS is not set
958# CONFIG_HEADERS_CHECK is not set 787# CONFIG_HEADERS_CHECK is not set
959# CONFIG_DEBUG_KERNEL is not set 788# CONFIG_DEBUG_KERNEL is not set
960CONFIG_LOG_BUF_SHIFT=14
961CONFIG_CROSSCOMPILE=y 789CONFIG_CROSSCOMPILE=y
962CONFIG_CMDLINE="mem=32M console=ttyVR0,38400" 790CONFIG_CMDLINE="mem=32M console=ttyVR0,38400"
963 791
@@ -966,10 +794,6 @@ CONFIG_CMDLINE="mem=32M console=ttyVR0,38400"
966# 794#
967# CONFIG_KEYS is not set 795# CONFIG_KEYS is not set
968# CONFIG_SECURITY is not set 796# CONFIG_SECURITY is not set
969
970#
971# Cryptographic options
972#
973CONFIG_CRYPTO=y 797CONFIG_CRYPTO=y
974CONFIG_CRYPTO_ALGAPI=y 798CONFIG_CRYPTO_ALGAPI=y
975CONFIG_CRYPTO_BLKCIPHER=m 799CONFIG_CRYPTO_BLKCIPHER=m
@@ -990,6 +814,7 @@ CONFIG_CRYPTO_ECB=m
990CONFIG_CRYPTO_CBC=m 814CONFIG_CRYPTO_CBC=m
991CONFIG_CRYPTO_PCBC=m 815CONFIG_CRYPTO_PCBC=m
992CONFIG_CRYPTO_LRW=m 816CONFIG_CRYPTO_LRW=m
817# CONFIG_CRYPTO_CRYPTD is not set
993CONFIG_CRYPTO_DES=m 818CONFIG_CRYPTO_DES=m
994CONFIG_CRYPTO_FCRYPT=m 819CONFIG_CRYPTO_FCRYPT=m
995CONFIG_CRYPTO_BLOWFISH=m 820CONFIG_CRYPTO_BLOWFISH=m
@@ -1008,10 +833,7 @@ CONFIG_CRYPTO_MICHAEL_MIC=m
1008# CONFIG_CRYPTO_CRC32C is not set 833# CONFIG_CRYPTO_CRC32C is not set
1009CONFIG_CRYPTO_CAMELLIA=m 834CONFIG_CRYPTO_CAMELLIA=m
1010# CONFIG_CRYPTO_TEST is not set 835# CONFIG_CRYPTO_TEST is not set
1011 836# CONFIG_CRYPTO_HW is not set
1012#
1013# Hardware crypto devices
1014#
1015 837
1016# 838#
1017# Library routines 839# Library routines
@@ -1019,10 +841,13 @@ CONFIG_CRYPTO_CAMELLIA=m
1019CONFIG_BITREVERSE=y 841CONFIG_BITREVERSE=y
1020# CONFIG_CRC_CCITT is not set 842# CONFIG_CRC_CCITT is not set
1021# CONFIG_CRC16 is not set 843# CONFIG_CRC16 is not set
844# CONFIG_CRC_ITU_T is not set
1022CONFIG_CRC32=y 845CONFIG_CRC32=y
846# CONFIG_CRC7 is not set
1023# CONFIG_LIBCRC32C is not set 847# CONFIG_LIBCRC32C is not set
1024CONFIG_ZLIB_INFLATE=m 848CONFIG_ZLIB_INFLATE=m
1025CONFIG_ZLIB_DEFLATE=m 849CONFIG_ZLIB_DEFLATE=m
1026CONFIG_PLIST=y 850CONFIG_PLIST=y
1027CONFIG_HAS_IOMEM=y 851CONFIG_HAS_IOMEM=y
1028CONFIG_HAS_IOPORT=y 852CONFIG_HAS_IOPORT=y
853CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/cobalt_defconfig b/arch/mips/configs/cobalt_defconfig
index 6d6a01b9a817..ebcb7ad8814b 100644
--- a/arch/mips/configs/cobalt_defconfig
+++ b/arch/mips/configs/cobalt_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.22-rc2 3# Linux kernel version: 2.6.23-rc2
4# Fri May 25 11:17:29 2007 4# Tue Aug 7 22:12:54 2007
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -13,33 +13,35 @@ CONFIG_MIPS=y
13CONFIG_MIPS_COBALT=y 13CONFIG_MIPS_COBALT=y
14# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
15# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
16# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
17# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
18# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
19# CONFIG_WR_PPMC is not set
20# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
21# CONFIG_MARKEINS is not set
22# CONFIG_MACH_VR41XX is not set
21# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
22# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
23# CONFIG_MACH_VR41XX is not set 25# CONFIG_PMC_MSP is not set
24# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
25# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
26# CONFIG_MARKEINS is not set
27# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
28# CONFIG_SGI_IP27 is not set 29# CONFIG_SGI_IP27 is not set
29# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
30# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
31# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
32# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
33# CONFIG_SIBYTE_RHONE is not set
34# CONFIG_SIBYTE_CARMEL is not set
35# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
37# CONFIG_SIBYTE_CRHINE is not set
38# CONFIG_SIBYTE_CRHONE is not set
39# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
40# CONFIG_TOSHIBA_JMR3927 is not set 41# CONFIG_TOSHIBA_JMR3927 is not set
41# CONFIG_TOSHIBA_RBTX4927 is not set 42# CONFIG_TOSHIBA_RBTX4927 is not set
42# CONFIG_TOSHIBA_RBTX4938 is not set 43# CONFIG_TOSHIBA_RBTX4938 is not set
44# CONFIG_WR_PPMC is not set
43CONFIG_RWSEM_GENERIC_SPINLOCK=y 45CONFIG_RWSEM_GENERIC_SPINLOCK=y
44# CONFIG_ARCH_HAS_ILOG2_U32 is not set 46# CONFIG_ARCH_HAS_ILOG2_U32 is not set
45# CONFIG_ARCH_HAS_ILOG2_U64 is not set 47# CONFIG_ARCH_HAS_ILOG2_U64 is not set
@@ -54,6 +56,7 @@ CONFIG_DMA_NEED_PCI_MAP_STATE=y
54CONFIG_EARLY_PRINTK=y 56CONFIG_EARLY_PRINTK=y
55CONFIG_SYS_HAS_EARLY_PRINTK=y 57CONFIG_SYS_HAS_EARLY_PRINTK=y
56CONFIG_I8259=y 58CONFIG_I8259=y
59# CONFIG_NO_IOPORT is not set
57# CONFIG_CPU_BIG_ENDIAN is not set 60# CONFIG_CPU_BIG_ENDIAN is not set
58CONFIG_CPU_LITTLE_ENDIAN=y 61CONFIG_CPU_LITTLE_ENDIAN=y
59CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 62CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
@@ -64,6 +67,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
64# 67#
65# CPU selection 68# CPU selection
66# 69#
70# CONFIG_CPU_LOONGSON2 is not set
67# CONFIG_CPU_MIPS32_R1 is not set 71# CONFIG_CPU_MIPS32_R1 is not set
68# CONFIG_CPU_MIPS32_R2 is not set 72# CONFIG_CPU_MIPS32_R2 is not set
69# CONFIG_CPU_MIPS64_R1 is not set 73# CONFIG_CPU_MIPS64_R1 is not set
@@ -101,7 +105,6 @@ CONFIG_PAGE_SIZE_4KB=y
101CONFIG_MIPS_MT_DISABLED=y 105CONFIG_MIPS_MT_DISABLED=y
102# CONFIG_MIPS_MT_SMP is not set 106# CONFIG_MIPS_MT_SMP is not set
103# CONFIG_MIPS_MT_SMTC is not set 107# CONFIG_MIPS_MT_SMTC is not set
104# CONFIG_MIPS_VPE_LOADER is not set
105CONFIG_CPU_HAS_LLSC=y 108CONFIG_CPU_HAS_LLSC=y
106CONFIG_CPU_HAS_SYNC=y 109CONFIG_CPU_HAS_SYNC=y
107CONFIG_GENERIC_HARDIRQS=y 110CONFIG_GENERIC_HARDIRQS=y
@@ -117,43 +120,40 @@ CONFIG_FLAT_NODE_MEM_MAP=y
117CONFIG_SPLIT_PTLOCK_CPUS=4 120CONFIG_SPLIT_PTLOCK_CPUS=4
118# CONFIG_RESOURCES_64BIT is not set 121# CONFIG_RESOURCES_64BIT is not set
119CONFIG_ZONE_DMA_FLAG=0 122CONFIG_ZONE_DMA_FLAG=0
123CONFIG_VIRT_TO_BUS=y
120# CONFIG_HZ_48 is not set 124# CONFIG_HZ_48 is not set
121# CONFIG_HZ_100 is not set 125# CONFIG_HZ_100 is not set
122# CONFIG_HZ_128 is not set 126# CONFIG_HZ_128 is not set
123# CONFIG_HZ_250 is not set 127CONFIG_HZ_250=y
124# CONFIG_HZ_256 is not set 128# CONFIG_HZ_256 is not set
125CONFIG_HZ_1000=y 129# CONFIG_HZ_1000 is not set
126# CONFIG_HZ_1024 is not set 130# CONFIG_HZ_1024 is not set
127CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 131CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
128CONFIG_HZ=1000 132CONFIG_HZ=250
129CONFIG_PREEMPT_NONE=y 133CONFIG_PREEMPT_NONE=y
130# CONFIG_PREEMPT_VOLUNTARY is not set 134# CONFIG_PREEMPT_VOLUNTARY is not set
131# CONFIG_PREEMPT is not set 135# CONFIG_PREEMPT is not set
132# CONFIG_KEXEC is not set 136# CONFIG_KEXEC is not set
137CONFIG_SECCOMP=y
133CONFIG_LOCKDEP_SUPPORT=y 138CONFIG_LOCKDEP_SUPPORT=y
134CONFIG_STACKTRACE_SUPPORT=y 139CONFIG_STACKTRACE_SUPPORT=y
135CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 140CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
136 141
137# 142#
138# Code maturity level options 143# General setup
139# 144#
140CONFIG_EXPERIMENTAL=y 145CONFIG_EXPERIMENTAL=y
141CONFIG_BROKEN_ON_SMP=y 146CONFIG_BROKEN_ON_SMP=y
142CONFIG_INIT_ENV_ARG_LIMIT=32 147CONFIG_INIT_ENV_ARG_LIMIT=32
143
144#
145# General setup
146#
147CONFIG_LOCALVERSION="" 148CONFIG_LOCALVERSION=""
148CONFIG_LOCALVERSION_AUTO=y 149CONFIG_LOCALVERSION_AUTO=y
149CONFIG_SWAP=y 150CONFIG_SWAP=y
150CONFIG_SYSVIPC=y 151CONFIG_SYSVIPC=y
151# CONFIG_IPC_NS is not set
152CONFIG_SYSVIPC_SYSCTL=y 152CONFIG_SYSVIPC_SYSCTL=y
153# CONFIG_POSIX_MQUEUE is not set 153# CONFIG_POSIX_MQUEUE is not set
154# CONFIG_BSD_PROCESS_ACCT is not set 154# CONFIG_BSD_PROCESS_ACCT is not set
155# CONFIG_TASKSTATS is not set 155# CONFIG_TASKSTATS is not set
156# CONFIG_UTS_NS is not set 156# CONFIG_USER_NS is not set
157# CONFIG_AUDIT is not set 157# CONFIG_AUDIT is not set
158# CONFIG_IKCONFIG is not set 158# CONFIG_IKCONFIG is not set
159CONFIG_LOG_BUF_SHIFT=14 159CONFIG_LOG_BUF_SHIFT=14
@@ -185,19 +185,17 @@ CONFIG_SLAB=y
185CONFIG_RT_MUTEXES=y 185CONFIG_RT_MUTEXES=y
186# CONFIG_TINY_SHMEM is not set 186# CONFIG_TINY_SHMEM is not set
187CONFIG_BASE_SMALL=0 187CONFIG_BASE_SMALL=0
188 188CONFIG_MODULES=y
189# 189CONFIG_MODULE_UNLOAD=y
190# Loadable module support 190# CONFIG_MODULE_FORCE_UNLOAD is not set
191# 191# CONFIG_MODVERSIONS is not set
192# CONFIG_MODULES is not set 192# CONFIG_MODULE_SRCVERSION_ALL is not set
193 193# CONFIG_KMOD is not set
194#
195# Block layer
196#
197CONFIG_BLOCK=y 194CONFIG_BLOCK=y
198# CONFIG_LBD is not set 195# CONFIG_LBD is not set
199# CONFIG_BLK_DEV_IO_TRACE is not set 196# CONFIG_BLK_DEV_IO_TRACE is not set
200# CONFIG_LSF is not set 197# CONFIG_LSF is not set
198# CONFIG_BLK_DEV_BSG is not set
201 199
202# 200#
203# IO Schedulers 201# IO Schedulers
@@ -236,10 +234,7 @@ CONFIG_TRAD_SIGNALS=y
236# 234#
237# Power management options 235# Power management options
238# 236#
239CONFIG_PM=y 237# CONFIG_PM is not set
240# CONFIG_PM_LEGACY is not set
241# CONFIG_PM_DEBUG is not set
242# CONFIG_PM_SYSFS_DEPRECATED is not set
243 238
244# 239#
245# Networking 240# Networking
@@ -286,20 +281,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
286# CONFIG_INET6_TUNNEL is not set 281# CONFIG_INET6_TUNNEL is not set
287# CONFIG_NETWORK_SECMARK is not set 282# CONFIG_NETWORK_SECMARK is not set
288# CONFIG_NETFILTER is not set 283# CONFIG_NETFILTER is not set
289
290#
291# DCCP Configuration (EXPERIMENTAL)
292#
293# CONFIG_IP_DCCP is not set 284# CONFIG_IP_DCCP is not set
294
295#
296# SCTP Configuration (EXPERIMENTAL)
297#
298# CONFIG_IP_SCTP is not set 285# CONFIG_IP_SCTP is not set
299
300#
301# TIPC Configuration (EXPERIMENTAL)
302#
303# CONFIG_TIPC is not set 286# CONFIG_TIPC is not set
304# CONFIG_ATM is not set 287# CONFIG_ATM is not set
305# CONFIG_BRIDGE is not set 288# CONFIG_BRIDGE is not set
@@ -335,6 +318,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
335# CONFIG_MAC80211 is not set 318# CONFIG_MAC80211 is not set
336# CONFIG_IEEE80211 is not set 319# CONFIG_IEEE80211 is not set
337# CONFIG_RFKILL is not set 320# CONFIG_RFKILL is not set
321# CONFIG_NET_9P is not set
338 322
339# 323#
340# Device Drivers 324# Device Drivers
@@ -347,12 +331,7 @@ CONFIG_STANDALONE=y
347CONFIG_PREVENT_FIRMWARE_BUILD=y 331CONFIG_PREVENT_FIRMWARE_BUILD=y
348CONFIG_FW_LOADER=y 332CONFIG_FW_LOADER=y
349# CONFIG_SYS_HYPERVISOR is not set 333# CONFIG_SYS_HYPERVISOR is not set
350 334# CONFIG_CONNECTOR is not set
351#
352# Connector - unified userspace <-> kernelspace linker
353#
354CONFIG_CONNECTOR=y
355CONFIG_PROC_EVENTS=y
356CONFIG_MTD=y 335CONFIG_MTD=y
357# CONFIG_MTD_DEBUG is not set 336# CONFIG_MTD_DEBUG is not set
358# CONFIG_MTD_CONCAT is not set 337# CONFIG_MTD_CONCAT is not set
@@ -430,20 +409,8 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=0
430# UBI - Unsorted block images 409# UBI - Unsorted block images
431# 410#
432# CONFIG_MTD_UBI is not set 411# CONFIG_MTD_UBI is not set
433
434#
435# Parallel port support
436#
437# CONFIG_PARPORT is not set 412# CONFIG_PARPORT is not set
438 413CONFIG_BLK_DEV=y
439#
440# Plug and Play support
441#
442# CONFIG_PNPACPI is not set
443
444#
445# Block devices
446#
447# CONFIG_BLK_CPQ_DA is not set 414# CONFIG_BLK_CPQ_DA is not set
448# CONFIG_BLK_CPQ_CISS_DA is not set 415# CONFIG_BLK_CPQ_CISS_DA is not set
449# CONFIG_BLK_DEV_DAC960 is not set 416# CONFIG_BLK_DEV_DAC960 is not set
@@ -453,17 +420,11 @@ CONFIG_BLK_DEV_LOOP=y
453# CONFIG_BLK_DEV_CRYPTOLOOP is not set 420# CONFIG_BLK_DEV_CRYPTOLOOP is not set
454# CONFIG_BLK_DEV_NBD is not set 421# CONFIG_BLK_DEV_NBD is not set
455# CONFIG_BLK_DEV_SX8 is not set 422# CONFIG_BLK_DEV_SX8 is not set
423# CONFIG_BLK_DEV_UB is not set
456# CONFIG_BLK_DEV_RAM is not set 424# CONFIG_BLK_DEV_RAM is not set
457# CONFIG_CDROM_PKTCDVD is not set 425# CONFIG_CDROM_PKTCDVD is not set
458# CONFIG_ATA_OVER_ETH is not set 426# CONFIG_ATA_OVER_ETH is not set
459 427# CONFIG_MISC_DEVICES is not set
460#
461# Misc devices
462#
463# CONFIG_PHANTOM is not set
464# CONFIG_SGI_IOC4 is not set
465# CONFIG_TIFM_CORE is not set
466# CONFIG_BLINK is not set
467# CONFIG_IDE is not set 428# CONFIG_IDE is not set
468 429
469# 430#
@@ -471,6 +432,7 @@ CONFIG_BLK_DEV_LOOP=y
471# 432#
472CONFIG_RAID_ATTRS=y 433CONFIG_RAID_ATTRS=y
473CONFIG_SCSI=y 434CONFIG_SCSI=y
435CONFIG_SCSI_DMA=y
474# CONFIG_SCSI_TGT is not set 436# CONFIG_SCSI_TGT is not set
475# CONFIG_SCSI_NETLINK is not set 437# CONFIG_SCSI_NETLINK is not set
476CONFIG_SCSI_PROC_FS=y 438CONFIG_SCSI_PROC_FS=y
@@ -492,6 +454,7 @@ CONFIG_BLK_DEV_SD=y
492# CONFIG_SCSI_CONSTANTS is not set 454# CONFIG_SCSI_CONSTANTS is not set
493# CONFIG_SCSI_LOGGING is not set 455# CONFIG_SCSI_LOGGING is not set
494# CONFIG_SCSI_SCAN_ASYNC is not set 456# CONFIG_SCSI_SCAN_ASYNC is not set
457CONFIG_SCSI_WAIT_SCAN=m
495 458
496# 459#
497# SCSI Transports 460# SCSI Transports
@@ -499,45 +462,8 @@ CONFIG_BLK_DEV_SD=y
499# CONFIG_SCSI_SPI_ATTRS is not set 462# CONFIG_SCSI_SPI_ATTRS is not set
500# CONFIG_SCSI_FC_ATTRS is not set 463# CONFIG_SCSI_FC_ATTRS is not set
501# CONFIG_SCSI_ISCSI_ATTRS is not set 464# CONFIG_SCSI_ISCSI_ATTRS is not set
502# CONFIG_SCSI_SAS_ATTRS is not set
503# CONFIG_SCSI_SAS_LIBSAS is not set 465# CONFIG_SCSI_SAS_LIBSAS is not set
504 466# CONFIG_SCSI_LOWLEVEL is not set
505#
506# SCSI low-level drivers
507#
508# CONFIG_ISCSI_TCP is not set
509# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
510# CONFIG_SCSI_3W_9XXX is not set
511# CONFIG_SCSI_ACARD is not set
512# CONFIG_SCSI_AACRAID is not set
513# CONFIG_SCSI_AIC7XXX is not set
514# CONFIG_SCSI_AIC7XXX_OLD is not set
515# CONFIG_SCSI_AIC79XX is not set
516# CONFIG_SCSI_AIC94XX is not set
517# CONFIG_SCSI_DPT_I2O is not set
518# CONFIG_SCSI_ARCMSR is not set
519# CONFIG_MEGARAID_NEWGEN is not set
520# CONFIG_MEGARAID_LEGACY is not set
521# CONFIG_MEGARAID_SAS is not set
522# CONFIG_SCSI_HPTIOP is not set
523# CONFIG_SCSI_DMX3191D is not set
524# CONFIG_SCSI_FUTURE_DOMAIN is not set
525# CONFIG_SCSI_IPS is not set
526# CONFIG_SCSI_INITIO is not set
527# CONFIG_SCSI_INIA100 is not set
528# CONFIG_SCSI_STEX is not set
529# CONFIG_SCSI_SYM53C8XX_2 is not set
530# CONFIG_SCSI_IPR is not set
531# CONFIG_SCSI_QLOGIC_1280 is not set
532# CONFIG_SCSI_QLA_FC is not set
533# CONFIG_SCSI_QLA_ISCSI is not set
534# CONFIG_SCSI_LPFC is not set
535# CONFIG_SCSI_DC395x is not set
536# CONFIG_SCSI_DC390T is not set
537# CONFIG_SCSI_NSP32 is not set
538# CONFIG_SCSI_DEBUG is not set
539# CONFIG_SCSI_ESP_CORE is not set
540# CONFIG_SCSI_SRP is not set
541CONFIG_ATA=y 467CONFIG_ATA=y
542# CONFIG_ATA_NONSTANDARD is not set 468# CONFIG_ATA_NONSTANDARD is not set
543# CONFIG_SATA_AHCI is not set 469# CONFIG_SATA_AHCI is not set
@@ -593,10 +519,6 @@ CONFIG_ATA=y
593CONFIG_PATA_VIA=y 519CONFIG_PATA_VIA=y
594# CONFIG_PATA_WINBOND is not set 520# CONFIG_PATA_WINBOND is not set
595# CONFIG_PATA_PLATFORM is not set 521# CONFIG_PATA_PLATFORM is not set
596
597#
598# Multi-device support (RAID and LVM)
599#
600# CONFIG_MD is not set 522# CONFIG_MD is not set
601 523
602# 524#
@@ -612,41 +534,24 @@ CONFIG_PATA_VIA=y
612# 534#
613# CONFIG_FIREWIRE is not set 535# CONFIG_FIREWIRE is not set
614# CONFIG_IEEE1394 is not set 536# CONFIG_IEEE1394 is not set
615
616#
617# I2O device support
618#
619# CONFIG_I2O is not set 537# CONFIG_I2O is not set
620
621#
622# Network device support
623#
624CONFIG_NETDEVICES=y 538CONFIG_NETDEVICES=y
539# CONFIG_NETDEVICES_MULTIQUEUE is not set
625# CONFIG_DUMMY is not set 540# CONFIG_DUMMY is not set
626# CONFIG_BONDING is not set 541# CONFIG_BONDING is not set
542# CONFIG_MACVLAN is not set
627# CONFIG_EQUALIZER is not set 543# CONFIG_EQUALIZER is not set
628# CONFIG_TUN is not set 544# CONFIG_TUN is not set
629
630#
631# ARCnet devices
632#
633# CONFIG_ARCNET is not set 545# CONFIG_ARCNET is not set
634# CONFIG_PHYLIB is not set 546# CONFIG_PHYLIB is not set
635
636#
637# Ethernet (10 or 100Mbit)
638#
639CONFIG_NET_ETHERNET=y 547CONFIG_NET_ETHERNET=y
640# CONFIG_MII is not set 548# CONFIG_MII is not set
549# CONFIG_AX88796 is not set
641# CONFIG_HAPPYMEAL is not set 550# CONFIG_HAPPYMEAL is not set
642# CONFIG_SUNGEM is not set 551# CONFIG_SUNGEM is not set
643# CONFIG_CASSINI is not set 552# CONFIG_CASSINI is not set
644# CONFIG_NET_VENDOR_3COM is not set 553# CONFIG_NET_VENDOR_3COM is not set
645# CONFIG_DM9000 is not set 554# CONFIG_DM9000 is not set
646
647#
648# Tulip family network device support
649#
650CONFIG_NET_TULIP=y 555CONFIG_NET_TULIP=y
651CONFIG_DE2104X=y 556CONFIG_DE2104X=y
652CONFIG_TULIP=y 557CONFIG_TULIP=y
@@ -661,10 +566,6 @@ CONFIG_TULIP=y
661# CONFIG_NET_PCI is not set 566# CONFIG_NET_PCI is not set
662# CONFIG_NETDEV_1000 is not set 567# CONFIG_NETDEV_1000 is not set
663# CONFIG_NETDEV_10000 is not set 568# CONFIG_NETDEV_10000 is not set
664
665#
666# Token Ring devices
667#
668# CONFIG_TR is not set 569# CONFIG_TR is not set
669 570
670# 571#
@@ -672,6 +573,16 @@ CONFIG_TULIP=y
672# 573#
673# CONFIG_WLAN_PRE80211 is not set 574# CONFIG_WLAN_PRE80211 is not set
674# CONFIG_WLAN_80211 is not set 575# CONFIG_WLAN_80211 is not set
576
577#
578# USB Network Adapters
579#
580# CONFIG_USB_CATC is not set
581# CONFIG_USB_KAWETH is not set
582# CONFIG_USB_PEGASUS is not set
583# CONFIG_USB_RTL8150 is not set
584# CONFIG_USB_USBNET_MII is not set
585# CONFIG_USB_USBNET is not set
675# CONFIG_WAN is not set 586# CONFIG_WAN is not set
676# CONFIG_FDDI is not set 587# CONFIG_FDDI is not set
677# CONFIG_HIPPI is not set 588# CONFIG_HIPPI is not set
@@ -682,15 +593,7 @@ CONFIG_TULIP=y
682# CONFIG_NETCONSOLE is not set 593# CONFIG_NETCONSOLE is not set
683# CONFIG_NETPOLL is not set 594# CONFIG_NETPOLL is not set
684# CONFIG_NET_POLL_CONTROLLER is not set 595# CONFIG_NET_POLL_CONTROLLER is not set
685
686#
687# ISDN subsystem
688#
689# CONFIG_ISDN is not set 596# CONFIG_ISDN is not set
690
691#
692# Telephony Support
693#
694# CONFIG_PHONE is not set 597# CONFIG_PHONE is not set
695 598
696# 599#
@@ -698,6 +601,7 @@ CONFIG_TULIP=y
698# 601#
699CONFIG_INPUT=y 602CONFIG_INPUT=y
700# CONFIG_INPUT_FF_MEMLESS is not set 603# CONFIG_INPUT_FF_MEMLESS is not set
604CONFIG_INPUT_POLLDEV=y
701 605
702# 606#
703# Userland interfaces 607# Userland interfaces
@@ -705,7 +609,7 @@ CONFIG_INPUT=y
705# CONFIG_INPUT_MOUSEDEV is not set 609# CONFIG_INPUT_MOUSEDEV is not set
706# CONFIG_INPUT_JOYDEV is not set 610# CONFIG_INPUT_JOYDEV is not set
707# CONFIG_INPUT_TSDEV is not set 611# CONFIG_INPUT_TSDEV is not set
708# CONFIG_INPUT_EVDEV is not set 612CONFIG_INPUT_EVDEV=y
709# CONFIG_INPUT_EVBUG is not set 613# CONFIG_INPUT_EVBUG is not set
710 614
711# 615#
@@ -725,7 +629,6 @@ CONFIG_INPUT_COBALT_BTNS=y
725# CONFIG_INPUT_POWERMATE is not set 629# CONFIG_INPUT_POWERMATE is not set
726# CONFIG_INPUT_YEALINK is not set 630# CONFIG_INPUT_YEALINK is not set
727# CONFIG_INPUT_UINPUT is not set 631# CONFIG_INPUT_UINPUT is not set
728CONFIG_INPUT_POLLDEV=y
729 632
730# 633#
731# Hardware I/O ports 634# Hardware I/O ports
@@ -761,24 +664,15 @@ CONFIG_SERIAL_CORE_CONSOLE=y
761CONFIG_UNIX98_PTYS=y 664CONFIG_UNIX98_PTYS=y
762CONFIG_LEGACY_PTYS=y 665CONFIG_LEGACY_PTYS=y
763CONFIG_LEGACY_PTY_COUNT=256 666CONFIG_LEGACY_PTY_COUNT=256
764
765#
766# IPMI
767#
768# CONFIG_IPMI_HANDLER is not set 667# CONFIG_IPMI_HANDLER is not set
769# CONFIG_WATCHDOG is not set 668# CONFIG_WATCHDOG is not set
770# CONFIG_HW_RANDOM is not set 669# CONFIG_HW_RANDOM is not set
771# CONFIG_RTC is not set 670# CONFIG_RTC is not set
772# CONFIG_GEN_RTC is not set
773CONFIG_COBALT_LCD=y 671CONFIG_COBALT_LCD=y
774# CONFIG_R3964 is not set 672# CONFIG_R3964 is not set
775# CONFIG_APPLICOM is not set 673# CONFIG_APPLICOM is not set
776# CONFIG_DRM is not set 674# CONFIG_DRM is not set
777# CONFIG_RAW_DRIVER is not set 675# CONFIG_RAW_DRIVER is not set
778
779#
780# TPM devices
781#
782# CONFIG_TCG_TPM is not set 676# CONFIG_TCG_TPM is not set
783CONFIG_DEVPORT=y 677CONFIG_DEVPORT=y
784# CONFIG_I2C is not set 678# CONFIG_I2C is not set
@@ -788,11 +682,8 @@ CONFIG_DEVPORT=y
788# 682#
789# CONFIG_SPI is not set 683# CONFIG_SPI is not set
790# CONFIG_SPI_MASTER is not set 684# CONFIG_SPI_MASTER is not set
791
792#
793# Dallas's 1-wire bus
794#
795# CONFIG_W1 is not set 685# CONFIG_W1 is not set
686# CONFIG_POWER_SUPPLY is not set
796# CONFIG_HWMON is not set 687# CONFIG_HWMON is not set
797 688
798# 689#
@@ -817,6 +708,7 @@ CONFIG_DEVPORT=y
817# 708#
818# CONFIG_DISPLAY_SUPPORT is not set 709# CONFIG_DISPLAY_SUPPORT is not set
819# CONFIG_VGASTATE is not set 710# CONFIG_VGASTATE is not set
711# CONFIG_VIDEO_OUTPUT_CONTROL is not set
820# CONFIG_FB is not set 712# CONFIG_FB is not set
821 713
822# 714#
@@ -829,55 +721,131 @@ CONFIG_DUMMY_CONSOLE=y
829# Sound 721# Sound
830# 722#
831# CONFIG_SOUND is not set 723# CONFIG_SOUND is not set
724CONFIG_HID_SUPPORT=y
725CONFIG_HID=m
726# CONFIG_HID_DEBUG is not set
832 727
833# 728#
834# HID Devices 729# USB Input Devices
835# 730#
836# CONFIG_HID is not set 731CONFIG_USB_HID=m
732# CONFIG_USB_HIDINPUT_POWERBOOK is not set
733# CONFIG_HID_FF is not set
734# CONFIG_USB_HIDDEV is not set
837 735
838# 736#
839# USB support 737# USB HID Boot Protocol drivers
840# 738#
739# CONFIG_USB_KBD is not set
740# CONFIG_USB_MOUSE is not set
741CONFIG_USB_SUPPORT=y
841CONFIG_USB_ARCH_HAS_HCD=y 742CONFIG_USB_ARCH_HAS_HCD=y
842CONFIG_USB_ARCH_HAS_OHCI=y 743CONFIG_USB_ARCH_HAS_OHCI=y
843CONFIG_USB_ARCH_HAS_EHCI=y 744CONFIG_USB_ARCH_HAS_EHCI=y
844# CONFIG_USB is not set 745CONFIG_USB=m
746# CONFIG_USB_DEBUG is not set
747
748#
749# Miscellaneous USB options
750#
751# CONFIG_USB_DEVICEFS is not set
752# CONFIG_USB_DEVICE_CLASS is not set
753# CONFIG_USB_DYNAMIC_MINORS is not set
754# CONFIG_USB_OTG is not set
755
756#
757# USB Host Controller Drivers
758#
759CONFIG_USB_EHCI_HCD=m
760# CONFIG_USB_EHCI_SPLIT_ISO is not set
761# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
762# CONFIG_USB_EHCI_TT_NEWSCHED is not set
763# CONFIG_USB_ISP116X_HCD is not set
764CONFIG_USB_OHCI_HCD=m
765# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
766# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
767CONFIG_USB_OHCI_LITTLE_ENDIAN=y
768# CONFIG_USB_UHCI_HCD is not set
769# CONFIG_USB_SL811_HCD is not set
770# CONFIG_USB_R8A66597_HCD is not set
771
772#
773# USB Device Class drivers
774#
775# CONFIG_USB_ACM is not set
776# CONFIG_USB_PRINTER is not set
845 777
846# 778#
847# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 779# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
848# 780#
849 781
850# 782#
851# USB Gadget Support 783# may also be needed; see USB_STORAGE Help for more information
852# 784#
853# CONFIG_USB_GADGET is not set 785CONFIG_USB_STORAGE=m
854# CONFIG_MMC is not set 786# CONFIG_USB_STORAGE_DEBUG is not set
787# CONFIG_USB_STORAGE_DATAFAB is not set
788# CONFIG_USB_STORAGE_FREECOM is not set
789# CONFIG_USB_STORAGE_DPCM is not set
790# CONFIG_USB_STORAGE_USBAT is not set
791# CONFIG_USB_STORAGE_SDDR09 is not set
792# CONFIG_USB_STORAGE_SDDR55 is not set
793# CONFIG_USB_STORAGE_JUMPSHOT is not set
794# CONFIG_USB_STORAGE_ALAUDA is not set
795# CONFIG_USB_STORAGE_ONETOUCH is not set
796# CONFIG_USB_STORAGE_KARMA is not set
797# CONFIG_USB_LIBUSUAL is not set
855 798
856# 799#
857# LED devices 800# USB Imaging devices
858# 801#
859# CONFIG_NEW_LEDS is not set 802# CONFIG_USB_MDC800 is not set
803# CONFIG_USB_MICROTEK is not set
804CONFIG_USB_MON=y
860 805
861# 806#
862# LED drivers 807# USB port drivers
863# 808#
864 809
865# 810#
866# LED Triggers 811# USB Serial Converter support
867# 812#
813# CONFIG_USB_SERIAL is not set
868 814
869# 815#
870# InfiniBand support 816# USB Miscellaneous drivers
871# 817#
872# CONFIG_INFINIBAND is not set 818# CONFIG_USB_EMI62 is not set
819# CONFIG_USB_EMI26 is not set
820# CONFIG_USB_ADUTUX is not set
821# CONFIG_USB_AUERSWALD is not set
822# CONFIG_USB_RIO500 is not set
823# CONFIG_USB_LEGOTOWER is not set
824# CONFIG_USB_LCD is not set
825# CONFIG_USB_BERRY_CHARGE is not set
826# CONFIG_USB_LED is not set
827# CONFIG_USB_CYPRESS_CY7C63 is not set
828# CONFIG_USB_CYTHERM is not set
829# CONFIG_USB_PHIDGET is not set
830# CONFIG_USB_IDMOUSE is not set
831# CONFIG_USB_FTDI_ELAN is not set
832# CONFIG_USB_APPLEDISPLAY is not set
833# CONFIG_USB_SISUSBVGA is not set
834# CONFIG_USB_LD is not set
835# CONFIG_USB_TRANCEVIBRATOR is not set
836# CONFIG_USB_IOWARRIOR is not set
873 837
874# 838#
875# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 839# USB DSL modem support
876# 840#
877 841
878# 842#
879# Real Time Clock 843# USB Gadget Support
880# 844#
845# CONFIG_USB_GADGET is not set
846# CONFIG_MMC is not set
847# CONFIG_NEW_LEDS is not set
848# CONFIG_INFINIBAND is not set
881CONFIG_RTC_LIB=y 849CONFIG_RTC_LIB=y
882CONFIG_RTC_CLASS=y 850CONFIG_RTC_CLASS=y
883CONFIG_RTC_HCTOSYS=y 851CONFIG_RTC_HCTOSYS=y
@@ -894,10 +862,6 @@ CONFIG_RTC_INTF_DEV=y
894# CONFIG_RTC_DRV_TEST is not set 862# CONFIG_RTC_DRV_TEST is not set
895 863
896# 864#
897# I2C RTC drivers
898#
899
900#
901# SPI RTC drivers 865# SPI RTC drivers
902# 866#
903 867
@@ -906,8 +870,10 @@ CONFIG_RTC_INTF_DEV=y
906# 870#
907CONFIG_RTC_DRV_CMOS=y 871CONFIG_RTC_DRV_CMOS=y
908# CONFIG_RTC_DRV_DS1553 is not set 872# CONFIG_RTC_DRV_DS1553 is not set
873# CONFIG_RTC_DRV_STK17TA8 is not set
909# CONFIG_RTC_DRV_DS1742 is not set 874# CONFIG_RTC_DRV_DS1742 is not set
910# CONFIG_RTC_DRV_M48T86 is not set 875# CONFIG_RTC_DRV_M48T86 is not set
876# CONFIG_RTC_DRV_M48T59 is not set
911# CONFIG_RTC_DRV_V3020 is not set 877# CONFIG_RTC_DRV_V3020 is not set
912 878
913# 879#
@@ -928,6 +894,11 @@ CONFIG_RTC_DRV_CMOS=y
928# 894#
929 895
930# 896#
897# Userspace I/O
898#
899# CONFIG_UIO is not set
900
901#
931# File systems 902# File systems
932# 903#
933CONFIG_EXT2_FS=y 904CONFIG_EXT2_FS=y
@@ -1032,7 +1003,6 @@ CONFIG_SUNRPC=y
1032# CONFIG_NCP_FS is not set 1003# CONFIG_NCP_FS is not set
1033# CONFIG_CODA_FS is not set 1004# CONFIG_CODA_FS is not set
1034# CONFIG_AFS_FS is not set 1005# CONFIG_AFS_FS is not set
1035# CONFIG_9P_FS is not set
1036 1006
1037# 1007#
1038# Partition Types 1008# Partition Types
@@ -1074,10 +1044,6 @@ CONFIG_CMDLINE=""
1074# 1044#
1075# CONFIG_KEYS is not set 1045# CONFIG_KEYS is not set
1076# CONFIG_SECURITY is not set 1046# CONFIG_SECURITY is not set
1077
1078#
1079# Cryptographic options
1080#
1081# CONFIG_CRYPTO is not set 1047# CONFIG_CRYPTO is not set
1082 1048
1083# 1049#
@@ -1088,6 +1054,7 @@ CONFIG_BITREVERSE=y
1088# CONFIG_CRC16 is not set 1054# CONFIG_CRC16 is not set
1089# CONFIG_CRC_ITU_T is not set 1055# CONFIG_CRC_ITU_T is not set
1090CONFIG_CRC32=y 1056CONFIG_CRC32=y
1057# CONFIG_CRC7 is not set
1091CONFIG_LIBCRC32C=y 1058CONFIG_LIBCRC32C=y
1092CONFIG_PLIST=y 1059CONFIG_PLIST=y
1093CONFIG_HAS_IOMEM=y 1060CONFIG_HAS_IOMEM=y
diff --git a/arch/mips/configs/e55_defconfig b/arch/mips/configs/e55_defconfig
index 5467d750b6eb..d0d07faeb844 100644
--- a/arch/mips/configs/e55_defconfig
+++ b/arch/mips/configs/e55_defconfig
@@ -1,60 +1,47 @@
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.23-rc2
4# Tue Feb 20 21:47:28 2007 4# Wed Aug 8 10:36:25 2007
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
26# CONFIG_MIPS_COBALT is not set 13# CONFIG_MIPS_COBALT is not set
27# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
28# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 21# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 22CONFIG_MACH_VR41XX=y
36# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
38CONFIG_MACH_VR41XX=y 25# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
43# CONFIG_SGI_IP27 is not set 29# CONFIG_SGI_IP27 is not set
44# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 41# CONFIG_TOSHIBA_JMR3927 is not set
56# CONFIG_TOSHIBA_RBTX4927 is not set 42# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 43# CONFIG_TOSHIBA_RBTX4938 is not set
44# CONFIG_WR_PPMC is not set
58CONFIG_CASIO_E55=y 45CONFIG_CASIO_E55=y
59# CONFIG_IBM_WORKPAD is not set 46# CONFIG_IBM_WORKPAD is not set
60# CONFIG_NEC_CMBVR4133 is not set 47# CONFIG_NEC_CMBVR4133 is not set
@@ -72,6 +59,8 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
72CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 59CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
73CONFIG_DMA_NONCOHERENT=y 60CONFIG_DMA_NONCOHERENT=y
74CONFIG_DMA_NEED_PCI_MAP_STATE=y 61CONFIG_DMA_NEED_PCI_MAP_STATE=y
62# CONFIG_HOTPLUG_CPU is not set
63# CONFIG_NO_IOPORT is not set
75# CONFIG_CPU_BIG_ENDIAN is not set 64# CONFIG_CPU_BIG_ENDIAN is not set
76CONFIG_CPU_LITTLE_ENDIAN=y 65CONFIG_CPU_LITTLE_ENDIAN=y
77CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 66CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
@@ -81,6 +70,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
81# 70#
82# CPU selection 71# CPU selection
83# 72#
73# CONFIG_CPU_LOONGSON2 is not set
84# CONFIG_CPU_MIPS32_R1 is not set 74# CONFIG_CPU_MIPS32_R1 is not set
85# CONFIG_CPU_MIPS32_R2 is not set 75# CONFIG_CPU_MIPS32_R2 is not set
86# CONFIG_CPU_MIPS64_R1 is not set 76# CONFIG_CPU_MIPS64_R1 is not set
@@ -102,7 +92,6 @@ CONFIG_CPU_VR41XX=y
102# CONFIG_CPU_SB1 is not set 92# CONFIG_CPU_SB1 is not set
103CONFIG_SYS_HAS_CPU_VR41XX=y 93CONFIG_SYS_HAS_CPU_VR41XX=y
104CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 94CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
105CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
106CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 95CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
107CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y 96CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
108 97
@@ -118,7 +107,6 @@ CONFIG_PAGE_SIZE_4KB=y
118CONFIG_MIPS_MT_DISABLED=y 107CONFIG_MIPS_MT_DISABLED=y
119# CONFIG_MIPS_MT_SMP is not set 108# CONFIG_MIPS_MT_SMP is not set
120# CONFIG_MIPS_MT_SMTC is not set 109# CONFIG_MIPS_MT_SMTC is not set
121# CONFIG_MIPS_VPE_LOADER is not set
122CONFIG_CPU_HAS_SYNC=y 110CONFIG_CPU_HAS_SYNC=y
123CONFIG_GENERIC_HARDIRQS=y 111CONFIG_GENERIC_HARDIRQS=y
124CONFIG_GENERIC_IRQ_PROBE=y 112CONFIG_GENERIC_IRQ_PROBE=y
@@ -132,45 +120,44 @@ CONFIG_FLAT_NODE_MEM_MAP=y
132# CONFIG_SPARSEMEM_STATIC is not set 120# CONFIG_SPARSEMEM_STATIC is not set
133CONFIG_SPLIT_PTLOCK_CPUS=4 121CONFIG_SPLIT_PTLOCK_CPUS=4
134# CONFIG_RESOURCES_64BIT is not set 122# CONFIG_RESOURCES_64BIT is not set
135CONFIG_ZONE_DMA_FLAG=1 123CONFIG_ZONE_DMA_FLAG=0
124CONFIG_VIRT_TO_BUS=y
136# CONFIG_HZ_48 is not set 125# CONFIG_HZ_48 is not set
137# CONFIG_HZ_100 is not set 126# CONFIG_HZ_100 is not set
138# CONFIG_HZ_128 is not set 127# CONFIG_HZ_128 is not set
139# CONFIG_HZ_250 is not set 128CONFIG_HZ_250=y
140# CONFIG_HZ_256 is not set 129# CONFIG_HZ_256 is not set
141CONFIG_HZ_1000=y 130# CONFIG_HZ_1000 is not set
142# CONFIG_HZ_1024 is not set 131# CONFIG_HZ_1024 is not set
143CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 132CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
144CONFIG_HZ=1000 133CONFIG_HZ=250
145CONFIG_PREEMPT_NONE=y 134CONFIG_PREEMPT_NONE=y
146# CONFIG_PREEMPT_VOLUNTARY is not set 135# CONFIG_PREEMPT_VOLUNTARY is not set
147# CONFIG_PREEMPT is not set 136# CONFIG_PREEMPT is not set
148# CONFIG_KEXEC is not set 137# CONFIG_KEXEC is not set
138CONFIG_SECCOMP=y
149CONFIG_LOCKDEP_SUPPORT=y 139CONFIG_LOCKDEP_SUPPORT=y
150CONFIG_STACKTRACE_SUPPORT=y 140CONFIG_STACKTRACE_SUPPORT=y
151CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 141CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
152 142
153# 143#
154# Code maturity level options 144# General setup
155# 145#
156CONFIG_EXPERIMENTAL=y 146CONFIG_EXPERIMENTAL=y
157CONFIG_BROKEN_ON_SMP=y 147CONFIG_BROKEN_ON_SMP=y
158CONFIG_INIT_ENV_ARG_LIMIT=32 148CONFIG_INIT_ENV_ARG_LIMIT=32
159
160#
161# General setup
162#
163CONFIG_LOCALVERSION="" 149CONFIG_LOCALVERSION=""
164CONFIG_LOCALVERSION_AUTO=y 150CONFIG_LOCALVERSION_AUTO=y
165CONFIG_SWAP=y 151CONFIG_SWAP=y
166CONFIG_SYSVIPC=y 152CONFIG_SYSVIPC=y
167# CONFIG_IPC_NS is not set
168CONFIG_SYSVIPC_SYSCTL=y 153CONFIG_SYSVIPC_SYSCTL=y
169# CONFIG_BSD_PROCESS_ACCT is not set 154# CONFIG_BSD_PROCESS_ACCT is not set
170# CONFIG_UTS_NS is not set 155# CONFIG_USER_NS is not set
171# CONFIG_IKCONFIG is not set 156# CONFIG_IKCONFIG is not set
157CONFIG_LOG_BUF_SHIFT=14
172CONFIG_SYSFS_DEPRECATED=y 158CONFIG_SYSFS_DEPRECATED=y
173# CONFIG_RELAY is not set 159# CONFIG_RELAY is not set
160# CONFIG_BLK_DEV_INITRD is not set
174# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 161# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
175CONFIG_SYSCTL=y 162CONFIG_SYSCTL=y
176CONFIG_EMBEDDED=y 163CONFIG_EMBEDDED=y
@@ -183,32 +170,30 @@ CONFIG_BUG=y
183CONFIG_ELF_CORE=y 170CONFIG_ELF_CORE=y
184CONFIG_BASE_FULL=y 171CONFIG_BASE_FULL=y
185CONFIG_FUTEX=y 172CONFIG_FUTEX=y
173CONFIG_ANON_INODES=y
186CONFIG_EPOLL=y 174CONFIG_EPOLL=y
175CONFIG_SIGNALFD=y
176CONFIG_TIMERFD=y
177CONFIG_EVENTFD=y
187CONFIG_SHMEM=y 178CONFIG_SHMEM=y
188CONFIG_SLAB=y
189CONFIG_VM_EVENT_COUNTERS=y 179CONFIG_VM_EVENT_COUNTERS=y
180CONFIG_SLAB=y
181# CONFIG_SLUB is not set
182# CONFIG_SLOB is not set
190CONFIG_RT_MUTEXES=y 183CONFIG_RT_MUTEXES=y
191# CONFIG_TINY_SHMEM is not set 184# CONFIG_TINY_SHMEM is not set
192CONFIG_BASE_SMALL=0 185CONFIG_BASE_SMALL=0
193# CONFIG_SLOB is not set
194
195#
196# Loadable module support
197#
198CONFIG_MODULES=y 186CONFIG_MODULES=y
199CONFIG_MODULE_UNLOAD=y 187CONFIG_MODULE_UNLOAD=y
200# CONFIG_MODULE_FORCE_UNLOAD is not set 188CONFIG_MODULE_FORCE_UNLOAD=y
201CONFIG_MODVERSIONS=y 189CONFIG_MODVERSIONS=y
202CONFIG_MODULE_SRCVERSION_ALL=y 190CONFIG_MODULE_SRCVERSION_ALL=y
203CONFIG_KMOD=y 191CONFIG_KMOD=y
204
205#
206# Block layer
207#
208CONFIG_BLOCK=y 192CONFIG_BLOCK=y
209# CONFIG_LBD is not set 193# CONFIG_LBD is not set
210# CONFIG_BLK_DEV_IO_TRACE is not set 194# CONFIG_BLK_DEV_IO_TRACE is not set
211# CONFIG_LSF is not set 195# CONFIG_LSF is not set
196# CONFIG_BLK_DEV_BSG is not set
212 197
213# 198#
214# IO Schedulers 199# IO Schedulers
@@ -226,6 +211,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
226# 211#
227# Bus options (PCI, PCMCIA, EISA, ISA, TC) 212# Bus options (PCI, PCMCIA, EISA, ISA, TC)
228# 213#
214# CONFIG_ARCH_SUPPORTS_MSI is not set
229CONFIG_ISA=y 215CONFIG_ISA=y
230CONFIG_MMU=y 216CONFIG_MMU=y
231 217
@@ -234,10 +220,6 @@ CONFIG_MMU=y
234# 220#
235 221
236# 222#
237# PCI Hotplug Support
238#
239
240#
241# Executable file formats 223# Executable file formats
242# 224#
243CONFIG_BINFMT_ELF=y 225CONFIG_BINFMT_ELF=y
@@ -247,10 +229,7 @@ CONFIG_TRAD_SIGNALS=y
247# 229#
248# Power management options 230# Power management options
249# 231#
250CONFIG_PM=y 232# CONFIG_PM is not set
251# CONFIG_PM_LEGACY is not set
252# CONFIG_PM_DEBUG is not set
253# CONFIG_PM_SYSFS_DEPRECATED is not set
254 233
255# 234#
256# Networking 235# Networking
@@ -267,46 +246,18 @@ CONFIG_PM=y
267CONFIG_STANDALONE=y 246CONFIG_STANDALONE=y
268CONFIG_PREVENT_FIRMWARE_BUILD=y 247CONFIG_PREVENT_FIRMWARE_BUILD=y
269# CONFIG_SYS_HYPERVISOR is not set 248# CONFIG_SYS_HYPERVISOR is not set
270
271#
272# Connector - unified userspace <-> kernelspace linker
273#
274
275#
276# Memory Technology Devices (MTD)
277#
278# CONFIG_MTD is not set 249# CONFIG_MTD is not set
279
280#
281# Parallel port support
282#
283# CONFIG_PARPORT is not set 250# CONFIG_PARPORT is not set
284
285#
286# Plug and Play support
287#
288# CONFIG_PNP is not set 251# CONFIG_PNP is not set
289# CONFIG_PNPACPI is not set 252CONFIG_BLK_DEV=y
290
291#
292# Block devices
293#
294# CONFIG_BLK_DEV_COW_COMMON is not set 253# CONFIG_BLK_DEV_COW_COMMON is not set
295# CONFIG_BLK_DEV_LOOP is not set 254# CONFIG_BLK_DEV_LOOP is not set
296CONFIG_BLK_DEV_RAM=m 255CONFIG_BLK_DEV_RAM=y
297CONFIG_BLK_DEV_RAM_COUNT=16 256CONFIG_BLK_DEV_RAM_COUNT=16
298CONFIG_BLK_DEV_RAM_SIZE=4096 257CONFIG_BLK_DEV_RAM_SIZE=4096
299CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 258CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
300# CONFIG_BLK_DEV_INITRD is not set
301# CONFIG_CDROM_PKTCDVD is not set 259# CONFIG_CDROM_PKTCDVD is not set
302 260# CONFIG_MISC_DEVICES is not set
303#
304# Misc devices
305#
306
307#
308# ATA/ATAPI/MFM/RLL support
309#
310CONFIG_IDE=y 261CONFIG_IDE=y
311CONFIG_IDE_MAX_HWIFS=4 262CONFIG_IDE_MAX_HWIFS=4
312CONFIG_BLK_DEV_IDE=y 263CONFIG_BLK_DEV_IDE=y
@@ -321,15 +272,16 @@ CONFIG_BLK_DEV_IDEDISK=y
321# CONFIG_BLK_DEV_IDETAPE is not set 272# CONFIG_BLK_DEV_IDETAPE is not set
322# CONFIG_BLK_DEV_IDEFLOPPY is not set 273# CONFIG_BLK_DEV_IDEFLOPPY is not set
323# CONFIG_IDE_TASK_IOCTL is not set 274# CONFIG_IDE_TASK_IOCTL is not set
275CONFIG_IDE_PROC_FS=y
324 276
325# 277#
326# IDE chipset support/bugfixes 278# IDE chipset support/bugfixes
327# 279#
328CONFIG_IDE_GENERIC=y 280CONFIG_IDE_GENERIC=y
281# CONFIG_IDEPCI_PCIBUS_ORDER is not set
329# CONFIG_IDE_ARM is not set 282# CONFIG_IDE_ARM is not set
330# CONFIG_IDE_CHIPSETS is not set 283# CONFIG_IDE_CHIPSETS is not set
331# CONFIG_BLK_DEV_IDEDMA is not set 284# CONFIG_BLK_DEV_IDEDMA is not set
332# CONFIG_IDEDMA_AUTO is not set
333# CONFIG_BLK_DEV_HD is not set 285# CONFIG_BLK_DEV_HD is not set
334 286
335# 287#
@@ -337,43 +289,10 @@ CONFIG_IDE_GENERIC=y
337# 289#
338# CONFIG_RAID_ATTRS is not set 290# CONFIG_RAID_ATTRS is not set
339# CONFIG_SCSI is not set 291# CONFIG_SCSI is not set
292# CONFIG_SCSI_DMA is not set
340# CONFIG_SCSI_NETLINK is not set 293# CONFIG_SCSI_NETLINK is not set
341
342#
343# Serial ATA (prod) and Parallel ATA (experimental) drivers
344#
345# CONFIG_ATA is not set 294# CONFIG_ATA is not set
346
347#
348# Old CD-ROM drivers (not SCSI, not IDE)
349#
350# CONFIG_CD_NO_IDESCSI is not set
351
352#
353# Multi-device support (RAID and LVM)
354#
355# CONFIG_MD is not set 295# CONFIG_MD is not set
356
357#
358# Fusion MPT device support
359#
360# CONFIG_FUSION is not set
361
362#
363# IEEE 1394 (FireWire) support
364#
365
366#
367# I2O device support
368#
369
370#
371# ISDN subsystem
372#
373
374#
375# Telephony Support
376#
377# CONFIG_PHONE is not set 296# CONFIG_PHONE is not set
378 297
379# 298#
@@ -381,14 +300,12 @@ CONFIG_IDE_GENERIC=y
381# 300#
382CONFIG_INPUT=y 301CONFIG_INPUT=y
383# CONFIG_INPUT_FF_MEMLESS is not set 302# CONFIG_INPUT_FF_MEMLESS is not set
303# CONFIG_INPUT_POLLDEV is not set
384 304
385# 305#
386# Userland interfaces 306# Userland interfaces
387# 307#
388CONFIG_INPUT_MOUSEDEV=y 308# CONFIG_INPUT_MOUSEDEV is not set
389CONFIG_INPUT_MOUSEDEV_PSAUX=y
390CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
391CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
392# CONFIG_INPUT_JOYDEV is not set 309# CONFIG_INPUT_JOYDEV is not set
393# CONFIG_INPUT_TSDEV is not set 310# CONFIG_INPUT_TSDEV is not set
394# CONFIG_INPUT_EVDEV is not set 311# CONFIG_INPUT_EVDEV is not set
@@ -400,6 +317,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
400# CONFIG_INPUT_KEYBOARD is not set 317# CONFIG_INPUT_KEYBOARD is not set
401# CONFIG_INPUT_MOUSE is not set 318# CONFIG_INPUT_MOUSE is not set
402# CONFIG_INPUT_JOYSTICK is not set 319# CONFIG_INPUT_JOYSTICK is not set
320# CONFIG_INPUT_TABLET is not set
403# CONFIG_INPUT_TOUCHSCREEN is not set 321# CONFIG_INPUT_TOUCHSCREEN is not set
404# CONFIG_INPUT_MISC is not set 322# CONFIG_INPUT_MISC is not set
405 323
@@ -433,45 +351,16 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
433CONFIG_UNIX98_PTYS=y 351CONFIG_UNIX98_PTYS=y
434CONFIG_LEGACY_PTYS=y 352CONFIG_LEGACY_PTYS=y
435CONFIG_LEGACY_PTY_COUNT=256 353CONFIG_LEGACY_PTY_COUNT=256
436
437#
438# IPMI
439#
440# CONFIG_IPMI_HANDLER is not set 354# CONFIG_IPMI_HANDLER is not set
441 355# CONFIG_WATCHDOG is not set
442#
443# Watchdog Cards
444#
445CONFIG_WATCHDOG=y
446# CONFIG_WATCHDOG_NOWAYOUT is not set
447
448#
449# Watchdog Device Drivers
450#
451# CONFIG_SOFT_WATCHDOG is not set
452
453#
454# ISA-based Watchdog Cards
455#
456# CONFIG_PCWATCHDOG is not set
457# CONFIG_MIXCOMWD is not set
458# CONFIG_WDT is not set
459# CONFIG_HW_RANDOM is not set 356# CONFIG_HW_RANDOM is not set
460# CONFIG_RTC is not set 357# CONFIG_RTC is not set
461# CONFIG_GEN_RTC is not set
462# CONFIG_DTLK is not set 358# CONFIG_DTLK is not set
463# CONFIG_R3964 is not set 359# CONFIG_R3964 is not set
464CONFIG_GPIO_VR41XX=y 360CONFIG_GPIO_VR41XX=y
465# CONFIG_RAW_DRIVER is not set 361# CONFIG_RAW_DRIVER is not set
466
467#
468# TPM devices
469#
470# CONFIG_TCG_TPM is not set 362# CONFIG_TCG_TPM is not set
471 363CONFIG_DEVPORT=y
472#
473# I2C support
474#
475# CONFIG_I2C is not set 364# CONFIG_I2C is not set
476 365
477# 366#
@@ -479,31 +368,32 @@ CONFIG_GPIO_VR41XX=y
479# 368#
480# CONFIG_SPI is not set 369# CONFIG_SPI is not set
481# CONFIG_SPI_MASTER is not set 370# CONFIG_SPI_MASTER is not set
482
483#
484# Dallas's 1-wire bus
485#
486# CONFIG_W1 is not set 371# CONFIG_W1 is not set
372# CONFIG_POWER_SUPPLY is not set
373# CONFIG_HWMON is not set
487 374
488# 375#
489# Hardware Monitoring support 376# Multifunction device drivers
490# 377#
491# CONFIG_HWMON is not set 378# CONFIG_MFD_SM501 is not set
492# CONFIG_HWMON_VID is not set
493 379
494# 380#
495# Multimedia devices 381# Multimedia devices
496# 382#
497# CONFIG_VIDEO_DEV is not set 383# CONFIG_VIDEO_DEV is not set
384# CONFIG_DAB is not set
498 385
499# 386#
500# Digital Video Broadcasting Devices 387# Graphics support
501# 388#
389# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
502 390
503# 391#
504# Graphics support 392# Display device support
505# 393#
506# CONFIG_FIRMWARE_EDID is not set 394# CONFIG_DISPLAY_SUPPORT is not set
395# CONFIG_VGASTATE is not set
396# CONFIG_VIDEO_OUTPUT_CONTROL is not set
507# CONFIG_FB is not set 397# CONFIG_FB is not set
508 398
509# 399#
@@ -512,65 +402,49 @@ CONFIG_GPIO_VR41XX=y
512# CONFIG_VGA_CONSOLE is not set 402# CONFIG_VGA_CONSOLE is not set
513# CONFIG_MDA_CONSOLE is not set 403# CONFIG_MDA_CONSOLE is not set
514CONFIG_DUMMY_CONSOLE=y 404CONFIG_DUMMY_CONSOLE=y
515# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
516 405
517# 406#
518# Sound 407# Sound
519# 408#
520# CONFIG_SOUND is not set 409# CONFIG_SOUND is not set
521 410# CONFIG_HID_SUPPORT is not set
522# 411# CONFIG_USB_SUPPORT is not set
523# HID Devices
524#
525CONFIG_HID=y
526# CONFIG_HID_DEBUG is not set
527
528#
529# USB support
530#
531# CONFIG_USB_ARCH_HAS_HCD is not set
532# CONFIG_USB_ARCH_HAS_OHCI is not set
533# CONFIG_USB_ARCH_HAS_EHCI is not set
534
535#
536# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
537#
538
539#
540# USB Gadget Support
541#
542# CONFIG_USB_GADGET is not set
543
544#
545# MMC/SD Card support
546#
547# CONFIG_MMC is not set 412# CONFIG_MMC is not set
548
549#
550# LED devices
551#
552# CONFIG_NEW_LEDS is not set 413# CONFIG_NEW_LEDS is not set
414CONFIG_RTC_LIB=y
415CONFIG_RTC_CLASS=y
416CONFIG_RTC_HCTOSYS=y
417CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
418# CONFIG_RTC_DEBUG is not set
553 419
554# 420#
555# LED drivers 421# RTC interfaces
556# 422#
423CONFIG_RTC_INTF_SYSFS=y
424CONFIG_RTC_INTF_PROC=y
425CONFIG_RTC_INTF_DEV=y
426# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
427# CONFIG_RTC_DRV_TEST is not set
557 428
558# 429#
559# LED Triggers 430# SPI RTC drivers
560# 431#
561 432
562# 433#
563# InfiniBand support 434# Platform RTC drivers
564# 435#
436# CONFIG_RTC_DRV_CMOS is not set
437# CONFIG_RTC_DRV_DS1553 is not set
438# CONFIG_RTC_DRV_STK17TA8 is not set
439# CONFIG_RTC_DRV_DS1742 is not set
440# CONFIG_RTC_DRV_M48T86 is not set
441# CONFIG_RTC_DRV_M48T59 is not set
442# CONFIG_RTC_DRV_V3020 is not set
565 443
566# 444#
567# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 445# on-CPU RTC drivers
568# 446#
569 447CONFIG_RTC_DRV_VR41XX=y
570#
571# Real Time Clock
572#
573# CONFIG_RTC_CLASS is not set
574 448
575# 449#
576# DMA Engine support 450# DMA Engine support
@@ -586,12 +460,9 @@ CONFIG_HID=y
586# 460#
587 461
588# 462#
589# Auxiliary Display support 463# Userspace I/O
590#
591
592#
593# Virtualization
594# 464#
465# CONFIG_UIO is not set
595 466
596# 467#
597# File systems 468# File systems
@@ -599,8 +470,14 @@ CONFIG_HID=y
599CONFIG_EXT2_FS=y 470CONFIG_EXT2_FS=y
600# CONFIG_EXT2_FS_XATTR is not set 471# CONFIG_EXT2_FS_XATTR is not set
601# CONFIG_EXT2_FS_XIP is not set 472# CONFIG_EXT2_FS_XIP is not set
602# CONFIG_EXT3_FS is not set 473CONFIG_EXT3_FS=y
474CONFIG_EXT3_FS_XATTR=y
475# CONFIG_EXT3_FS_POSIX_ACL is not set
476# CONFIG_EXT3_FS_SECURITY is not set
603# CONFIG_EXT4DEV_FS is not set 477# CONFIG_EXT4DEV_FS is not set
478CONFIG_JBD=y
479# CONFIG_JBD_DEBUG is not set
480CONFIG_FS_MBCACHE=y
604# CONFIG_REISERFS_FS is not set 481# CONFIG_REISERFS_FS is not set
605# CONFIG_JFS_FS is not set 482# CONFIG_JFS_FS is not set
606CONFIG_FS_POSIX_ACL=y 483CONFIG_FS_POSIX_ACL=y
@@ -614,7 +491,7 @@ CONFIG_INOTIFY_USER=y
614CONFIG_DNOTIFY=y 491CONFIG_DNOTIFY=y
615# CONFIG_AUTOFS_FS is not set 492# CONFIG_AUTOFS_FS is not set
616CONFIG_AUTOFS4_FS=y 493CONFIG_AUTOFS4_FS=y
617CONFIG_FUSE_FS=m 494# CONFIG_FUSE_FS is not set
618CONFIG_GENERIC_ACL=y 495CONFIG_GENERIC_ACL=y
619 496
620# 497#
@@ -687,7 +564,6 @@ CONFIG_ENABLE_MUST_CHECK=y
687# CONFIG_DEBUG_FS is not set 564# CONFIG_DEBUG_FS is not set
688# CONFIG_HEADERS_CHECK is not set 565# CONFIG_HEADERS_CHECK is not set
689# CONFIG_DEBUG_KERNEL is not set 566# CONFIG_DEBUG_KERNEL is not set
690CONFIG_LOG_BUF_SHIFT=14
691CONFIG_CROSSCOMPILE=y 567CONFIG_CROSSCOMPILE=y
692CONFIG_CMDLINE="console=ttyVR0,19200 ide0=0x1f0,0x3f6,40 mem=8M" 568CONFIG_CMDLINE="console=ttyVR0,19200 ide0=0x1f0,0x3f6,40 mem=8M"
693 569
@@ -696,10 +572,6 @@ CONFIG_CMDLINE="console=ttyVR0,19200 ide0=0x1f0,0x3f6,40 mem=8M"
696# 572#
697# CONFIG_KEYS is not set 573# CONFIG_KEYS is not set
698# CONFIG_SECURITY is not set 574# CONFIG_SECURITY is not set
699
700#
701# Cryptographic options
702#
703# CONFIG_CRYPTO is not set 575# CONFIG_CRYPTO is not set
704 576
705# 577#
@@ -707,8 +579,11 @@ CONFIG_CMDLINE="console=ttyVR0,19200 ide0=0x1f0,0x3f6,40 mem=8M"
707# 579#
708# CONFIG_CRC_CCITT is not set 580# CONFIG_CRC_CCITT is not set
709# CONFIG_CRC16 is not set 581# CONFIG_CRC16 is not set
582# CONFIG_CRC_ITU_T is not set
710# CONFIG_CRC32 is not set 583# CONFIG_CRC32 is not set
584# CONFIG_CRC7 is not set
711# CONFIG_LIBCRC32C is not set 585# CONFIG_LIBCRC32C is not set
712CONFIG_PLIST=y 586CONFIG_PLIST=y
713CONFIG_HAS_IOMEM=y 587CONFIG_HAS_IOMEM=y
714CONFIG_HAS_IOPORT=y 588CONFIG_HAS_IOPORT=y
589CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/ip22_defconfig b/arch/mips/configs/ip22_defconfig
index 934d8a008936..670039bb1a7c 100644
--- a/arch/mips/configs/ip22_defconfig
+++ b/arch/mips/configs/ip22_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.20 3# Linux kernel version: 2.6.23-rc2
4# Tue Feb 20 21:47:32 2007 4# Tue Aug 7 12:39:49 2007
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -9,52 +9,40 @@ CONFIG_MIPS=y
9# Machine selection 9# Machine selection
10# 10#
11CONFIG_ZONE_DMA=y 11CONFIG_ZONE_DMA=y
12# CONFIG_MIPS_MTX1 is not set 12# CONFIG_MACH_ALCHEMY 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 13# CONFIG_BASLER_EXCITE 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_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 18# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 19# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 20# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 21# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 22# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 23# CONFIG_MACH_VR41XX is not set
36# CONFIG_PNX8550_JBS is not set 24# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 25# CONFIG_PNX8550_STB810 is not set
38# CONFIG_MACH_VR41XX is not set 26# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 27# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 28# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42CONFIG_SGI_IP22=y 29CONFIG_SGI_IP22=y
43# CONFIG_SGI_IP27 is not set 30# CONFIG_SGI_IP27 is not set
44# CONFIG_SGI_IP32 is not set 31# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 32# CONFIG_SIBYTE_CRHINE is not set
33# CONFIG_SIBYTE_CARMEL is not set
34# CONFIG_SIBYTE_CRHONE is not set
35# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 36# CONFIG_SIBYTE_SWARM is not set
37# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 38# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 39# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 40# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 41# CONFIG_SNI_RM is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 42# CONFIG_TOSHIBA_JMR3927 is not set
56# CONFIG_TOSHIBA_RBTX4927 is not set 43# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 44# CONFIG_TOSHIBA_RBTX4938 is not set
45# CONFIG_WR_PPMC is not set
58CONFIG_RWSEM_GENERIC_SPINLOCK=y 46CONFIG_RWSEM_GENERIC_SPINLOCK=y
59# CONFIG_ARCH_HAS_ILOG2_U32 is not set 47# CONFIG_ARCH_HAS_ILOG2_U32 is not set
60# CONFIG_ARCH_HAS_ILOG2_U64 is not set 48# CONFIG_ARCH_HAS_ILOG2_U64 is not set
@@ -67,6 +55,9 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
67CONFIG_ARC=y 55CONFIG_ARC=y
68CONFIG_DMA_NONCOHERENT=y 56CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 57CONFIG_DMA_NEED_PCI_MAP_STATE=y
58CONFIG_EARLY_PRINTK=y
59CONFIG_SYS_HAS_EARLY_PRINTK=y
60# CONFIG_NO_IOPORT is not set
70CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y 61CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y
71CONFIG_CPU_BIG_ENDIAN=y 62CONFIG_CPU_BIG_ENDIAN=y
72# CONFIG_CPU_LITTLE_ENDIAN is not set 63# CONFIG_CPU_LITTLE_ENDIAN is not set
@@ -82,6 +73,7 @@ CONFIG_ARC_PROMLIB=y
82# 73#
83# CPU selection 74# CPU selection
84# 75#
76# CONFIG_CPU_LOONGSON2 is not set
85# CONFIG_CPU_MIPS32_R1 is not set 77# CONFIG_CPU_MIPS32_R1 is not set
86# CONFIG_CPU_MIPS32_R2 is not set 78# CONFIG_CPU_MIPS32_R2 is not set
87# CONFIG_CPU_MIPS64_R1 is not set 79# CONFIG_CPU_MIPS64_R1 is not set
@@ -122,8 +114,6 @@ CONFIG_IP22_CPU_SCACHE=y
122CONFIG_MIPS_MT_DISABLED=y 114CONFIG_MIPS_MT_DISABLED=y
123# CONFIG_MIPS_MT_SMP is not set 115# CONFIG_MIPS_MT_SMP is not set
124# CONFIG_MIPS_MT_SMTC is not set 116# CONFIG_MIPS_MT_SMTC is not set
125# CONFIG_MIPS_VPE_LOADER is not set
126# CONFIG_64BIT_PHYS_ADDR is not set
127CONFIG_CPU_HAS_LLSC=y 117CONFIG_CPU_HAS_LLSC=y
128CONFIG_CPU_HAS_SYNC=y 118CONFIG_CPU_HAS_SYNC=y
129CONFIG_GENERIC_HARDIRQS=y 119CONFIG_GENERIC_HARDIRQS=y
@@ -139,6 +129,8 @@ CONFIG_FLAT_NODE_MEM_MAP=y
139CONFIG_SPLIT_PTLOCK_CPUS=4 129CONFIG_SPLIT_PTLOCK_CPUS=4
140# CONFIG_RESOURCES_64BIT is not set 130# CONFIG_RESOURCES_64BIT is not set
141CONFIG_ZONE_DMA_FLAG=1 131CONFIG_ZONE_DMA_FLAG=1
132CONFIG_BOUNCE=y
133CONFIG_VIRT_TO_BUS=y
142# CONFIG_HZ_48 is not set 134# CONFIG_HZ_48 is not set
143# CONFIG_HZ_100 is not set 135# CONFIG_HZ_100 is not set
144# CONFIG_HZ_128 is not set 136# CONFIG_HZ_128 is not set
@@ -152,35 +144,33 @@ CONFIG_HZ=1000
152CONFIG_PREEMPT_VOLUNTARY=y 144CONFIG_PREEMPT_VOLUNTARY=y
153# CONFIG_PREEMPT is not set 145# CONFIG_PREEMPT is not set
154# CONFIG_KEXEC is not set 146# CONFIG_KEXEC is not set
147CONFIG_SECCOMP=y
155CONFIG_LOCKDEP_SUPPORT=y 148CONFIG_LOCKDEP_SUPPORT=y
156CONFIG_STACKTRACE_SUPPORT=y 149CONFIG_STACKTRACE_SUPPORT=y
157CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 150CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
158 151
159# 152#
160# Code maturity level options 153# General setup
161# 154#
162CONFIG_EXPERIMENTAL=y 155CONFIG_EXPERIMENTAL=y
163CONFIG_BROKEN_ON_SMP=y 156CONFIG_BROKEN_ON_SMP=y
164CONFIG_INIT_ENV_ARG_LIMIT=32 157CONFIG_INIT_ENV_ARG_LIMIT=32
165
166#
167# General setup
168#
169CONFIG_LOCALVERSION="" 158CONFIG_LOCALVERSION=""
170CONFIG_LOCALVERSION_AUTO=y 159CONFIG_LOCALVERSION_AUTO=y
171CONFIG_SWAP=y 160CONFIG_SWAP=y
172CONFIG_SYSVIPC=y 161CONFIG_SYSVIPC=y
173# CONFIG_IPC_NS is not set
174CONFIG_SYSVIPC_SYSCTL=y 162CONFIG_SYSVIPC_SYSCTL=y
175# CONFIG_POSIX_MQUEUE is not set 163# CONFIG_POSIX_MQUEUE is not set
176# CONFIG_BSD_PROCESS_ACCT is not set 164# CONFIG_BSD_PROCESS_ACCT is not set
177# CONFIG_TASKSTATS is not set 165# CONFIG_TASKSTATS is not set
178# CONFIG_UTS_NS is not set 166# CONFIG_USER_NS is not set
179# CONFIG_AUDIT is not set 167# CONFIG_AUDIT is not set
180CONFIG_IKCONFIG=y 168CONFIG_IKCONFIG=y
181CONFIG_IKCONFIG_PROC=y 169CONFIG_IKCONFIG_PROC=y
170CONFIG_LOG_BUF_SHIFT=14
182CONFIG_SYSFS_DEPRECATED=y 171CONFIG_SYSFS_DEPRECATED=y
183CONFIG_RELAY=y 172CONFIG_RELAY=y
173# CONFIG_BLK_DEV_INITRD is not set
184# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 174# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
185CONFIG_SYSCTL=y 175CONFIG_SYSCTL=y
186CONFIG_EMBEDDED=y 176CONFIG_EMBEDDED=y
@@ -193,32 +183,30 @@ CONFIG_BUG=y
193CONFIG_ELF_CORE=y 183CONFIG_ELF_CORE=y
194CONFIG_BASE_FULL=y 184CONFIG_BASE_FULL=y
195CONFIG_FUTEX=y 185CONFIG_FUTEX=y
186CONFIG_ANON_INODES=y
196CONFIG_EPOLL=y 187CONFIG_EPOLL=y
188CONFIG_SIGNALFD=y
189CONFIG_TIMERFD=y
190CONFIG_EVENTFD=y
197CONFIG_SHMEM=y 191CONFIG_SHMEM=y
198CONFIG_SLAB=y
199CONFIG_VM_EVENT_COUNTERS=y 192CONFIG_VM_EVENT_COUNTERS=y
193CONFIG_SLAB=y
194# CONFIG_SLUB is not set
195# CONFIG_SLOB is not set
200CONFIG_RT_MUTEXES=y 196CONFIG_RT_MUTEXES=y
201# CONFIG_TINY_SHMEM is not set 197# CONFIG_TINY_SHMEM is not set
202CONFIG_BASE_SMALL=0 198CONFIG_BASE_SMALL=0
203# CONFIG_SLOB is not set
204
205#
206# Loadable module support
207#
208CONFIG_MODULES=y 199CONFIG_MODULES=y
209CONFIG_MODULE_UNLOAD=y 200CONFIG_MODULE_UNLOAD=y
210# CONFIG_MODULE_FORCE_UNLOAD is not set 201# CONFIG_MODULE_FORCE_UNLOAD is not set
211CONFIG_MODVERSIONS=y 202CONFIG_MODVERSIONS=y
212CONFIG_MODULE_SRCVERSION_ALL=y 203CONFIG_MODULE_SRCVERSION_ALL=y
213CONFIG_KMOD=y 204CONFIG_KMOD=y
214
215#
216# Block layer
217#
218CONFIG_BLOCK=y 205CONFIG_BLOCK=y
219# CONFIG_LBD is not set 206# CONFIG_LBD is not set
220# CONFIG_BLK_DEV_IO_TRACE is not set 207# CONFIG_BLK_DEV_IO_TRACE is not set
221# CONFIG_LSF is not set 208# CONFIG_LSF is not set
209# CONFIG_BLK_DEV_BSG is not set
222 210
223# 211#
224# IO Schedulers 212# IO Schedulers
@@ -237,6 +225,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
237# Bus options (PCI, PCMCIA, EISA, ISA, TC) 225# Bus options (PCI, PCMCIA, EISA, ISA, TC)
238# 226#
239CONFIG_HW_HAS_EISA=y 227CONFIG_HW_HAS_EISA=y
228# CONFIG_ARCH_SUPPORTS_MSI is not set
240# CONFIG_EISA is not set 229# CONFIG_EISA is not set
241CONFIG_MMU=y 230CONFIG_MMU=y
242 231
@@ -245,10 +234,6 @@ CONFIG_MMU=y
245# 234#
246 235
247# 236#
248# PCI Hotplug Support
249#
250
251#
252# Executable file formats 237# Executable file formats
253# 238#
254CONFIG_BINFMT_ELF=y 239CONFIG_BINFMT_ELF=y
@@ -261,7 +246,7 @@ CONFIG_TRAD_SIGNALS=y
261CONFIG_PM=y 246CONFIG_PM=y
262# CONFIG_PM_LEGACY is not set 247# CONFIG_PM_LEGACY is not set
263# CONFIG_PM_DEBUG is not set 248# CONFIG_PM_DEBUG is not set
264# CONFIG_PM_SYSFS_DEPRECATED is not set 249# CONFIG_SUSPEND is not set
265 250
266# 251#
267# Networking 252# Networking
@@ -271,7 +256,6 @@ CONFIG_NET=y
271# 256#
272# Networking options 257# Networking options
273# 258#
274# CONFIG_NETDEBUG is not set
275CONFIG_PACKET=y 259CONFIG_PACKET=y
276CONFIG_PACKET_MMAP=y 260CONFIG_PACKET_MMAP=y
277CONFIG_UNIX=y 261CONFIG_UNIX=y
@@ -308,10 +292,6 @@ CONFIG_INET_TCP_DIAG=y
308CONFIG_TCP_CONG_CUBIC=y 292CONFIG_TCP_CONG_CUBIC=y
309CONFIG_DEFAULT_TCP_CONG="cubic" 293CONFIG_DEFAULT_TCP_CONG="cubic"
310CONFIG_TCP_MD5SIG=y 294CONFIG_TCP_MD5SIG=y
311
312#
313# IP: Virtual Server Configuration
314#
315CONFIG_IP_VS=m 295CONFIG_IP_VS=m
316# CONFIG_IP_VS_DEBUG is not set 296# CONFIG_IP_VS_DEBUG is not set
317CONFIG_IP_VS_TAB_BITS=12 297CONFIG_IP_VS_TAB_BITS=12
@@ -346,10 +326,11 @@ CONFIG_IPV6=m
346CONFIG_IPV6_PRIVACY=y 326CONFIG_IPV6_PRIVACY=y
347CONFIG_IPV6_ROUTER_PREF=y 327CONFIG_IPV6_ROUTER_PREF=y
348CONFIG_IPV6_ROUTE_INFO=y 328CONFIG_IPV6_ROUTE_INFO=y
329CONFIG_IPV6_OPTIMISTIC_DAD=y
349CONFIG_INET6_AH=m 330CONFIG_INET6_AH=m
350CONFIG_INET6_ESP=m 331CONFIG_INET6_ESP=m
351CONFIG_INET6_IPCOMP=m 332CONFIG_INET6_IPCOMP=m
352CONFIG_IPV6_MIP6=y 333CONFIG_IPV6_MIP6=m
353CONFIG_INET6_XFRM_TUNNEL=m 334CONFIG_INET6_XFRM_TUNNEL=m
354CONFIG_INET6_TUNNEL=m 335CONFIG_INET6_TUNNEL=m
355CONFIG_INET6_XFRM_MODE_TRANSPORT=m 336CONFIG_INET6_XFRM_MODE_TRANSPORT=m
@@ -371,8 +352,6 @@ CONFIG_NETFILTER_NETLINK=m
371CONFIG_NETFILTER_NETLINK_QUEUE=m 352CONFIG_NETFILTER_NETLINK_QUEUE=m
372CONFIG_NETFILTER_NETLINK_LOG=m 353CONFIG_NETFILTER_NETLINK_LOG=m
373CONFIG_NF_CONNTRACK_ENABLED=m 354CONFIG_NF_CONNTRACK_ENABLED=m
374CONFIG_NF_CONNTRACK_SUPPORT=y
375# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
376CONFIG_NF_CONNTRACK=m 355CONFIG_NF_CONNTRACK=m
377CONFIG_NF_CT_ACCT=y 356CONFIG_NF_CT_ACCT=y
378CONFIG_NF_CONNTRACK_MARK=y 357CONFIG_NF_CONNTRACK_MARK=y
@@ -380,6 +359,7 @@ CONFIG_NF_CONNTRACK_SECMARK=y
380CONFIG_NF_CONNTRACK_EVENTS=y 359CONFIG_NF_CONNTRACK_EVENTS=y
381CONFIG_NF_CT_PROTO_GRE=m 360CONFIG_NF_CT_PROTO_GRE=m
382CONFIG_NF_CT_PROTO_SCTP=m 361CONFIG_NF_CT_PROTO_SCTP=m
362CONFIG_NF_CT_PROTO_UDPLITE=m
383CONFIG_NF_CONNTRACK_AMANDA=m 363CONFIG_NF_CONNTRACK_AMANDA=m
384CONFIG_NF_CONNTRACK_FTP=m 364CONFIG_NF_CONNTRACK_FTP=m
385CONFIG_NF_CONNTRACK_H323=m 365CONFIG_NF_CONNTRACK_H323=m
@@ -398,11 +378,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
398CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 378CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
399CONFIG_NETFILTER_XT_TARGET_NFLOG=m 379CONFIG_NETFILTER_XT_TARGET_NFLOG=m
400CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 380CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
381CONFIG_NETFILTER_XT_TARGET_TRACE=m
401CONFIG_NETFILTER_XT_TARGET_SECMARK=m 382CONFIG_NETFILTER_XT_TARGET_SECMARK=m
402CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m 383CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
403CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 384CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
404CONFIG_NETFILTER_XT_MATCH_COMMENT=m 385CONFIG_NETFILTER_XT_MATCH_COMMENT=m
405CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 386CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
387CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
406CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 388CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
407CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 389CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
408CONFIG_NETFILTER_XT_MATCH_DCCP=m 390CONFIG_NETFILTER_XT_MATCH_DCCP=m
@@ -423,6 +405,7 @@ CONFIG_NETFILTER_XT_MATCH_STATE=m
423CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 405CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
424CONFIG_NETFILTER_XT_MATCH_STRING=m 406CONFIG_NETFILTER_XT_MATCH_STRING=m
425CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 407CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
408CONFIG_NETFILTER_XT_MATCH_U32=m
426CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 409CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
427 410
428# 411#
@@ -490,25 +473,13 @@ CONFIG_IP6_NF_TARGET_REJECT=m
490CONFIG_IP6_NF_MANGLE=m 473CONFIG_IP6_NF_MANGLE=m
491CONFIG_IP6_NF_TARGET_HL=m 474CONFIG_IP6_NF_TARGET_HL=m
492CONFIG_IP6_NF_RAW=m 475CONFIG_IP6_NF_RAW=m
493
494#
495# DCCP Configuration (EXPERIMENTAL)
496#
497# CONFIG_IP_DCCP is not set 476# CONFIG_IP_DCCP is not set
498
499#
500# SCTP Configuration (EXPERIMENTAL)
501#
502CONFIG_IP_SCTP=m 477CONFIG_IP_SCTP=m
503# CONFIG_SCTP_DBG_MSG is not set 478# CONFIG_SCTP_DBG_MSG is not set
504# CONFIG_SCTP_DBG_OBJCNT is not set 479# CONFIG_SCTP_DBG_OBJCNT is not set
505# CONFIG_SCTP_HMAC_NONE is not set 480# CONFIG_SCTP_HMAC_NONE is not set
506# CONFIG_SCTP_HMAC_SHA1 is not set 481# CONFIG_SCTP_HMAC_SHA1 is not set
507CONFIG_SCTP_HMAC_MD5=y 482CONFIG_SCTP_HMAC_MD5=y
508
509#
510# TIPC Configuration (EXPERIMENTAL)
511#
512# CONFIG_TIPC is not set 483# CONFIG_TIPC is not set
513# CONFIG_ATM is not set 484# CONFIG_ATM is not set
514# CONFIG_BRIDGE is not set 485# CONFIG_BRIDGE is not set
@@ -527,9 +498,6 @@ CONFIG_SCTP_HMAC_MD5=y
527# 498#
528CONFIG_NET_SCHED=y 499CONFIG_NET_SCHED=y
529CONFIG_NET_SCH_FIFO=y 500CONFIG_NET_SCH_FIFO=y
530# CONFIG_NET_SCH_CLK_JIFFIES is not set
531CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
532# CONFIG_NET_SCH_CLK_CPU is not set
533 501
534# 502#
535# Queueing/Scheduling 503# Queueing/Scheduling
@@ -538,6 +506,7 @@ CONFIG_NET_SCH_CBQ=m
538CONFIG_NET_SCH_HTB=m 506CONFIG_NET_SCH_HTB=m
539CONFIG_NET_SCH_HFSC=m 507CONFIG_NET_SCH_HFSC=m
540CONFIG_NET_SCH_PRIO=m 508CONFIG_NET_SCH_PRIO=m
509CONFIG_NET_SCH_RR=m
541CONFIG_NET_SCH_RED=m 510CONFIG_NET_SCH_RED=m
542CONFIG_NET_SCH_SFQ=m 511CONFIG_NET_SCH_SFQ=m
543CONFIG_NET_SCH_TEQL=m 512CONFIG_NET_SCH_TEQL=m
@@ -562,10 +531,16 @@ CONFIG_NET_CLS_U32=m
562CONFIG_NET_CLS_RSVP=m 531CONFIG_NET_CLS_RSVP=m
563CONFIG_NET_CLS_RSVP6=m 532CONFIG_NET_CLS_RSVP6=m
564# CONFIG_NET_EMATCH is not set 533# CONFIG_NET_EMATCH is not set
565# CONFIG_NET_CLS_ACT is not set 534CONFIG_NET_CLS_ACT=y
535CONFIG_NET_ACT_POLICE=y
536CONFIG_NET_ACT_GACT=m
537CONFIG_GACT_PROB=y
538CONFIG_NET_ACT_MIRRED=m
539CONFIG_NET_ACT_IPT=m
540CONFIG_NET_ACT_PEDIT=m
541CONFIG_NET_ACT_SIMP=m
566CONFIG_NET_CLS_POLICE=y 542CONFIG_NET_CLS_POLICE=y
567# CONFIG_NET_CLS_IND is not set 543# CONFIG_NET_CLS_IND is not set
568CONFIG_NET_ESTIMATOR=y
569 544
570# 545#
571# Network testing 546# Network testing
@@ -574,14 +549,26 @@ CONFIG_NET_ESTIMATOR=y
574# CONFIG_HAMRADIO is not set 549# CONFIG_HAMRADIO is not set
575# CONFIG_IRDA is not set 550# CONFIG_IRDA is not set
576# CONFIG_BT is not set 551# CONFIG_BT is not set
552# CONFIG_AF_RXRPC is not set
553CONFIG_FIB_RULES=y
554
555#
556# Wireless
557#
558CONFIG_CFG80211=m
559CONFIG_WIRELESS_EXT=y
560CONFIG_MAC80211=m
561# CONFIG_MAC80211_DEBUG is not set
577CONFIG_IEEE80211=m 562CONFIG_IEEE80211=m
578# CONFIG_IEEE80211_DEBUG is not set 563# CONFIG_IEEE80211_DEBUG is not set
579CONFIG_IEEE80211_CRYPT_WEP=m 564CONFIG_IEEE80211_CRYPT_WEP=m
580CONFIG_IEEE80211_CRYPT_CCMP=m 565CONFIG_IEEE80211_CRYPT_CCMP=m
566CONFIG_IEEE80211_CRYPT_TKIP=m
581CONFIG_IEEE80211_SOFTMAC=m 567CONFIG_IEEE80211_SOFTMAC=m
582# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 568# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
583CONFIG_WIRELESS_EXT=y 569CONFIG_RFKILL=m
584CONFIG_FIB_RULES=y 570CONFIG_RFKILL_INPUT=m
571# CONFIG_NET_9P is not set
585 572
586# 573#
587# Device Drivers 574# Device Drivers
@@ -593,47 +580,19 @@ CONFIG_FIB_RULES=y
593CONFIG_STANDALONE=y 580CONFIG_STANDALONE=y
594CONFIG_PREVENT_FIRMWARE_BUILD=y 581CONFIG_PREVENT_FIRMWARE_BUILD=y
595# CONFIG_SYS_HYPERVISOR is not set 582# CONFIG_SYS_HYPERVISOR is not set
596
597#
598# Connector - unified userspace <-> kernelspace linker
599#
600CONFIG_CONNECTOR=m 583CONFIG_CONNECTOR=m
601
602#
603# Memory Technology Devices (MTD)
604#
605# CONFIG_MTD is not set 584# CONFIG_MTD is not set
606
607#
608# Parallel port support
609#
610# CONFIG_PARPORT is not set 585# CONFIG_PARPORT is not set
611 586CONFIG_BLK_DEV=y
612#
613# Plug and Play support
614#
615# CONFIG_PNPACPI is not set
616
617#
618# Block devices
619#
620# CONFIG_BLK_DEV_COW_COMMON is not set 587# CONFIG_BLK_DEV_COW_COMMON is not set
621# CONFIG_BLK_DEV_LOOP is not set 588# CONFIG_BLK_DEV_LOOP is not set
622# CONFIG_BLK_DEV_NBD is not set 589# CONFIG_BLK_DEV_NBD is not set
623# CONFIG_BLK_DEV_RAM is not set 590# CONFIG_BLK_DEV_RAM is not set
624# CONFIG_BLK_DEV_INITRD is not set
625CONFIG_CDROM_PKTCDVD=m 591CONFIG_CDROM_PKTCDVD=m
626CONFIG_CDROM_PKTCDVD_BUFFERS=8 592CONFIG_CDROM_PKTCDVD_BUFFERS=8
627# CONFIG_CDROM_PKTCDVD_WCACHE is not set 593# CONFIG_CDROM_PKTCDVD_WCACHE is not set
628CONFIG_ATA_OVER_ETH=m 594CONFIG_ATA_OVER_ETH=m
629 595# CONFIG_MISC_DEVICES is not set
630#
631# Misc devices
632#
633
634#
635# ATA/ATAPI/MFM/RLL support
636#
637# CONFIG_IDE is not set 596# CONFIG_IDE is not set
638 597
639# 598#
@@ -641,6 +600,7 @@ CONFIG_ATA_OVER_ETH=m
641# 600#
642CONFIG_RAID_ATTRS=m 601CONFIG_RAID_ATTRS=m
643CONFIG_SCSI=y 602CONFIG_SCSI=y
603CONFIG_SCSI_DMA=y
644CONFIG_SCSI_TGT=m 604CONFIG_SCSI_TGT=m
645# CONFIG_SCSI_NETLINK is not set 605# CONFIG_SCSI_NETLINK is not set
646CONFIG_SCSI_PROC_FS=y 606CONFIG_SCSI_PROC_FS=y
@@ -663,6 +623,7 @@ CONFIG_CHR_DEV_SCH=m
663CONFIG_SCSI_CONSTANTS=y 623CONFIG_SCSI_CONSTANTS=y
664# CONFIG_SCSI_LOGGING is not set 624# CONFIG_SCSI_LOGGING is not set
665CONFIG_SCSI_SCAN_ASYNC=y 625CONFIG_SCSI_SCAN_ASYNC=y
626CONFIG_SCSI_WAIT_SCAN=m
666 627
667# 628#
668# SCSI Transports 629# SCSI Transports
@@ -670,51 +631,21 @@ CONFIG_SCSI_SCAN_ASYNC=y
670CONFIG_SCSI_SPI_ATTRS=m 631CONFIG_SCSI_SPI_ATTRS=m
671# CONFIG_SCSI_FC_ATTRS is not set 632# CONFIG_SCSI_FC_ATTRS is not set
672CONFIG_SCSI_ISCSI_ATTRS=m 633CONFIG_SCSI_ISCSI_ATTRS=m
673CONFIG_SCSI_SAS_ATTRS=m
674# CONFIG_SCSI_SAS_LIBSAS is not set 634# CONFIG_SCSI_SAS_LIBSAS is not set
675 635CONFIG_SCSI_LOWLEVEL=y
676#
677# SCSI low-level drivers
678#
679CONFIG_ISCSI_TCP=m 636CONFIG_ISCSI_TCP=m
680CONFIG_SGIWD93_SCSI=y 637CONFIG_SGIWD93_SCSI=y
681# CONFIG_SCSI_DEBUG is not set 638# CONFIG_SCSI_DEBUG is not set
682
683#
684# Serial ATA (prod) and Parallel ATA (experimental) drivers
685#
686# CONFIG_ATA is not set 639# CONFIG_ATA is not set
687
688#
689# Multi-device support (RAID and LVM)
690#
691# CONFIG_MD is not set 640# CONFIG_MD is not set
692
693#
694# Fusion MPT device support
695#
696# CONFIG_FUSION is not set
697
698#
699# IEEE 1394 (FireWire) support
700#
701
702#
703# I2O device support
704#
705
706#
707# Network device support
708#
709CONFIG_NETDEVICES=y 641CONFIG_NETDEVICES=y
642# CONFIG_NETDEVICES_MULTIQUEUE is not set
643# CONFIG_IFB is not set
710CONFIG_DUMMY=m 644CONFIG_DUMMY=m
711CONFIG_BONDING=m 645CONFIG_BONDING=m
646CONFIG_MACVLAN=m
712CONFIG_EQUALIZER=m 647CONFIG_EQUALIZER=m
713CONFIG_TUN=m 648CONFIG_TUN=m
714
715#
716# PHY device support
717#
718CONFIG_PHYLIB=m 649CONFIG_PHYLIB=m
719 650
720# 651#
@@ -728,36 +659,25 @@ CONFIG_CICADA_PHY=m
728# CONFIG_VITESSE_PHY is not set 659# CONFIG_VITESSE_PHY is not set
729# CONFIG_SMSC_PHY is not set 660# CONFIG_SMSC_PHY is not set
730# CONFIG_BROADCOM_PHY is not set 661# CONFIG_BROADCOM_PHY is not set
662# CONFIG_ICPLUS_PHY is not set
731# CONFIG_FIXED_PHY is not set 663# CONFIG_FIXED_PHY is not set
732
733#
734# Ethernet (10 or 100Mbit)
735#
736CONFIG_NET_ETHERNET=y 664CONFIG_NET_ETHERNET=y
737# CONFIG_MII is not set 665# CONFIG_MII is not set
666# CONFIG_AX88796 is not set
738# CONFIG_DM9000 is not set 667# CONFIG_DM9000 is not set
739CONFIG_SGISEEQ=y 668CONFIG_SGISEEQ=y
669# CONFIG_NETDEV_1000 is not set
670# CONFIG_NETDEV_10000 is not set
740 671
741# 672#
742# Ethernet (1000 Mbit) 673# Wireless LAN
743#
744
745#
746# Ethernet (10000 Mbit)
747#
748
749#
750# Token Ring devices
751#
752
753#
754# Wireless LAN (non-hamradio)
755#
756# CONFIG_NET_RADIO is not set
757
758#
759# Wan interfaces
760# 674#
675CONFIG_WLAN_PRE80211=y
676CONFIG_STRIP=m
677CONFIG_WLAN_80211=y
678# CONFIG_LIBERTAS is not set
679CONFIG_HOSTAP=m
680# CONFIG_HOSTAP_FIRMWARE is not set
761# CONFIG_WAN is not set 681# CONFIG_WAN is not set
762# CONFIG_PPP is not set 682# CONFIG_PPP is not set
763# CONFIG_SLIP is not set 683# CONFIG_SLIP is not set
@@ -765,15 +685,7 @@ CONFIG_SGISEEQ=y
765# CONFIG_NETCONSOLE is not set 685# CONFIG_NETCONSOLE is not set
766# CONFIG_NETPOLL is not set 686# CONFIG_NETPOLL is not set
767# CONFIG_NET_POLL_CONTROLLER is not set 687# CONFIG_NET_POLL_CONTROLLER is not set
768
769#
770# ISDN subsystem
771#
772# CONFIG_ISDN is not set 688# CONFIG_ISDN is not set
773
774#
775# Telephony Support
776#
777# CONFIG_PHONE is not set 689# CONFIG_PHONE is not set
778 690
779# 691#
@@ -781,6 +693,7 @@ CONFIG_SGISEEQ=y
781# 693#
782CONFIG_INPUT=y 694CONFIG_INPUT=y
783# CONFIG_INPUT_FF_MEMLESS is not set 695# CONFIG_INPUT_FF_MEMLESS is not set
696# CONFIG_INPUT_POLLDEV is not set
784 697
785# 698#
786# Userland interfaces 699# Userland interfaces
@@ -806,9 +719,16 @@ CONFIG_KEYBOARD_ATKBD=y
806# CONFIG_KEYBOARD_STOWAWAY is not set 719# CONFIG_KEYBOARD_STOWAWAY is not set
807CONFIG_INPUT_MOUSE=y 720CONFIG_INPUT_MOUSE=y
808CONFIG_MOUSE_PS2=m 721CONFIG_MOUSE_PS2=m
722# CONFIG_MOUSE_PS2_ALPS is not set
723CONFIG_MOUSE_PS2_LOGIPS2PP=y
724# CONFIG_MOUSE_PS2_SYNAPTICS is not set
725# CONFIG_MOUSE_PS2_LIFEBOOK is not set
726CONFIG_MOUSE_PS2_TRACKPOINT=y
727# CONFIG_MOUSE_PS2_TOUCHKIT is not set
809CONFIG_MOUSE_SERIAL=m 728CONFIG_MOUSE_SERIAL=m
810# CONFIG_MOUSE_VSXXXAA is not set 729# CONFIG_MOUSE_VSXXXAA is not set
811# CONFIG_INPUT_JOYSTICK is not set 730# CONFIG_INPUT_JOYSTICK is not set
731# CONFIG_INPUT_TABLET is not set
812# CONFIG_INPUT_TOUCHSCREEN is not set 732# CONFIG_INPUT_TOUCHSCREEN is not set
813# CONFIG_INPUT_MISC is not set 733# CONFIG_INPUT_MISC is not set
814 734
@@ -844,15 +764,7 @@ CONFIG_SERIAL_CORE=m
844CONFIG_UNIX98_PTYS=y 764CONFIG_UNIX98_PTYS=y
845CONFIG_LEGACY_PTYS=y 765CONFIG_LEGACY_PTYS=y
846CONFIG_LEGACY_PTY_COUNT=256 766CONFIG_LEGACY_PTY_COUNT=256
847
848#
849# IPMI
850#
851# CONFIG_IPMI_HANDLER is not set 767# CONFIG_IPMI_HANDLER is not set
852
853#
854# Watchdog Cards
855#
856CONFIG_WATCHDOG=y 768CONFIG_WATCHDOG=y
857# CONFIG_WATCHDOG_NOWAYOUT is not set 769# CONFIG_WATCHDOG_NOWAYOUT is not set
858 770
@@ -864,20 +776,10 @@ CONFIG_INDYDOG=m
864# CONFIG_HW_RANDOM is not set 776# CONFIG_HW_RANDOM is not set
865# CONFIG_RTC is not set 777# CONFIG_RTC is not set
866CONFIG_SGI_DS1286=m 778CONFIG_SGI_DS1286=m
867# CONFIG_GEN_RTC is not set
868# CONFIG_DTLK is not set
869# CONFIG_R3964 is not set 779# CONFIG_R3964 is not set
870CONFIG_RAW_DRIVER=m 780CONFIG_RAW_DRIVER=m
871CONFIG_MAX_RAW_DEVS=256 781CONFIG_MAX_RAW_DEVS=256
872
873#
874# TPM devices
875#
876# CONFIG_TCG_TPM is not set 782# CONFIG_TCG_TPM is not set
877
878#
879# I2C support
880#
881# CONFIG_I2C is not set 783# CONFIG_I2C is not set
882 784
883# 785#
@@ -885,32 +787,33 @@ CONFIG_MAX_RAW_DEVS=256
885# 787#
886# CONFIG_SPI is not set 788# CONFIG_SPI is not set
887# CONFIG_SPI_MASTER is not set 789# CONFIG_SPI_MASTER is not set
888
889#
890# Dallas's 1-wire bus
891#
892# CONFIG_W1 is not set 790# CONFIG_W1 is not set
791# CONFIG_POWER_SUPPLY is not set
792# CONFIG_HWMON is not set
893 793
894# 794#
895# Hardware Monitoring support 795# Multifunction device drivers
896# 796#
897# CONFIG_HWMON is not set 797# CONFIG_MFD_SM501 is not set
898# CONFIG_HWMON_VID is not set
899 798
900# 799#
901# Multimedia devices 800# Multimedia devices
902# 801#
903# CONFIG_VIDEO_DEV is not set 802# CONFIG_VIDEO_DEV is not set
803# CONFIG_DVB_CORE is not set
804# CONFIG_DAB is not set
904 805
905# 806#
906# Digital Video Broadcasting Devices 807# Graphics support
907# 808#
908# CONFIG_DVB is not set 809# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
909 810
910# 811#
911# Graphics support 812# Display device support
912# 813#
913CONFIG_FIRMWARE_EDID=y 814# CONFIG_DISPLAY_SUPPORT is not set
815# CONFIG_VGASTATE is not set
816# CONFIG_VIDEO_OUTPUT_CONTROL is not set
914# CONFIG_FB is not set 817# CONFIG_FB is not set
915 818
916# 819#
@@ -920,31 +823,20 @@ CONFIG_FIRMWARE_EDID=y
920CONFIG_SGI_NEWPORT_CONSOLE=y 823CONFIG_SGI_NEWPORT_CONSOLE=y
921CONFIG_DUMMY_CONSOLE=y 824CONFIG_DUMMY_CONSOLE=y
922CONFIG_FONT_8x16=y 825CONFIG_FONT_8x16=y
923
924#
925# Logo configuration
926#
927CONFIG_LOGO=y 826CONFIG_LOGO=y
928# CONFIG_LOGO_LINUX_MONO is not set 827# CONFIG_LOGO_LINUX_MONO is not set
929# CONFIG_LOGO_LINUX_VGA16 is not set 828# CONFIG_LOGO_LINUX_VGA16 is not set
930# CONFIG_LOGO_LINUX_CLUT224 is not set 829# CONFIG_LOGO_LINUX_CLUT224 is not set
931CONFIG_LOGO_SGI_CLUT224=y 830CONFIG_LOGO_SGI_CLUT224=y
932# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
933 831
934# 832#
935# Sound 833# Sound
936# 834#
937# CONFIG_SOUND is not set 835# CONFIG_SOUND is not set
938 836CONFIG_HID_SUPPORT=y
939#
940# HID Devices
941#
942CONFIG_HID=y 837CONFIG_HID=y
943# CONFIG_HID_DEBUG is not set 838# CONFIG_HID_DEBUG is not set
944 839CONFIG_USB_SUPPORT=y
945#
946# USB support
947#
948# CONFIG_USB_ARCH_HAS_HCD is not set 840# CONFIG_USB_ARCH_HAS_HCD is not set
949# CONFIG_USB_ARCH_HAS_OHCI is not set 841# CONFIG_USB_ARCH_HAS_OHCI is not set
950# CONFIG_USB_ARCH_HAS_EHCI is not set 842# CONFIG_USB_ARCH_HAS_EHCI is not set
@@ -957,36 +849,8 @@ CONFIG_HID=y
957# USB Gadget Support 849# USB Gadget Support
958# 850#
959# CONFIG_USB_GADGET is not set 851# CONFIG_USB_GADGET is not set
960
961#
962# MMC/SD Card support
963#
964# CONFIG_MMC is not set 852# CONFIG_MMC is not set
965
966#
967# LED devices
968#
969# CONFIG_NEW_LEDS is not set 853# CONFIG_NEW_LEDS is not set
970
971#
972# LED drivers
973#
974
975#
976# LED Triggers
977#
978
979#
980# InfiniBand support
981#
982
983#
984# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
985#
986
987#
988# Real Time Clock
989#
990# CONFIG_RTC_CLASS is not set 854# CONFIG_RTC_CLASS is not set
991 855
992# 856#
@@ -1003,12 +867,9 @@ CONFIG_HID=y
1003# 867#
1004 868
1005# 869#
1006# Auxiliary Display support 870# Userspace I/O
1007#
1008
1009#
1010# Virtualization
1011# 871#
872# CONFIG_UIO is not set
1012 873
1013# 874#
1014# File systems 875# File systems
@@ -1121,6 +982,7 @@ CONFIG_NFS_ACL_SUPPORT=m
1121CONFIG_NFS_COMMON=y 982CONFIG_NFS_COMMON=y
1122CONFIG_SUNRPC=m 983CONFIG_SUNRPC=m
1123CONFIG_SUNRPC_GSS=m 984CONFIG_SUNRPC_GSS=m
985# CONFIG_SUNRPC_BIND34 is not set
1124CONFIG_RPCSEC_GSS_KRB5=m 986CONFIG_RPCSEC_GSS_KRB5=m
1125# CONFIG_RPCSEC_GSS_SPKM3 is not set 987# CONFIG_RPCSEC_GSS_SPKM3 is not set
1126CONFIG_SMB_FS=m 988CONFIG_SMB_FS=m
@@ -1136,7 +998,6 @@ CONFIG_CIFS=m
1136CONFIG_CODA_FS=m 998CONFIG_CODA_FS=m
1137# CONFIG_CODA_FS_OLD_API is not set 999# CONFIG_CODA_FS_OLD_API is not set
1138# CONFIG_AFS_FS is not set 1000# CONFIG_AFS_FS is not set
1139# CONFIG_9P_FS is not set
1140 1001
1141# 1002#
1142# Partition Types 1003# Partition Types
@@ -1158,6 +1019,7 @@ CONFIG_SGI_PARTITION=y
1158# CONFIG_SUN_PARTITION is not set 1019# CONFIG_SUN_PARTITION is not set
1159# CONFIG_KARMA_PARTITION is not set 1020# CONFIG_KARMA_PARTITION is not set
1160# CONFIG_EFI_PARTITION is not set 1021# CONFIG_EFI_PARTITION is not set
1022# CONFIG_SYSV68_PARTITION is not set
1161 1023
1162# 1024#
1163# Native Language Support 1025# Native Language Support
@@ -1207,8 +1069,6 @@ CONFIG_NLS_UTF8=m
1207# Distributed Lock Manager 1069# Distributed Lock Manager
1208# 1070#
1209CONFIG_DLM=m 1071CONFIG_DLM=m
1210CONFIG_DLM_TCP=y
1211# CONFIG_DLM_SCTP is not set
1212# CONFIG_DLM_DEBUG is not set 1072# CONFIG_DLM_DEBUG is not set
1213 1073
1214# 1074#
@@ -1227,7 +1087,6 @@ CONFIG_ENABLE_MUST_CHECK=y
1227# CONFIG_DEBUG_FS is not set 1087# CONFIG_DEBUG_FS is not set
1228# CONFIG_HEADERS_CHECK is not set 1088# CONFIG_HEADERS_CHECK is not set
1229# CONFIG_DEBUG_KERNEL is not set 1089# CONFIG_DEBUG_KERNEL is not set
1230CONFIG_LOG_BUF_SHIFT=14
1231CONFIG_CROSSCOMPILE=y 1090CONFIG_CROSSCOMPILE=y
1232CONFIG_CMDLINE="" 1091CONFIG_CMDLINE=""
1233 1092
@@ -1237,12 +1096,9 @@ CONFIG_CMDLINE=""
1237CONFIG_KEYS=y 1096CONFIG_KEYS=y
1238CONFIG_KEYS_DEBUG_PROC_KEYS=y 1097CONFIG_KEYS_DEBUG_PROC_KEYS=y
1239# CONFIG_SECURITY is not set 1098# CONFIG_SECURITY is not set
1240
1241#
1242# Cryptographic options
1243#
1244CONFIG_CRYPTO=y 1099CONFIG_CRYPTO=y
1245CONFIG_CRYPTO_ALGAPI=y 1100CONFIG_CRYPTO_ALGAPI=y
1101CONFIG_CRYPTO_ABLKCIPHER=m
1246CONFIG_CRYPTO_BLKCIPHER=m 1102CONFIG_CRYPTO_BLKCIPHER=m
1247CONFIG_CRYPTO_HASH=y 1103CONFIG_CRYPTO_HASH=y
1248CONFIG_CRYPTO_MANAGER=y 1104CONFIG_CRYPTO_MANAGER=y
@@ -1261,6 +1117,7 @@ CONFIG_CRYPTO_ECB=m
1261CONFIG_CRYPTO_CBC=m 1117CONFIG_CRYPTO_CBC=m
1262CONFIG_CRYPTO_PCBC=m 1118CONFIG_CRYPTO_PCBC=m
1263CONFIG_CRYPTO_LRW=m 1119CONFIG_CRYPTO_LRW=m
1120CONFIG_CRYPTO_CRYPTD=m
1264CONFIG_CRYPTO_DES=m 1121CONFIG_CRYPTO_DES=m
1265CONFIG_CRYPTO_FCRYPT=m 1122CONFIG_CRYPTO_FCRYPT=m
1266CONFIG_CRYPTO_BLOWFISH=m 1123CONFIG_CRYPTO_BLOWFISH=m
@@ -1279,10 +1136,7 @@ CONFIG_CRYPTO_MICHAEL_MIC=m
1279CONFIG_CRYPTO_CRC32C=m 1136CONFIG_CRYPTO_CRC32C=m
1280CONFIG_CRYPTO_CAMELLIA=m 1137CONFIG_CRYPTO_CAMELLIA=m
1281# CONFIG_CRYPTO_TEST is not set 1138# CONFIG_CRYPTO_TEST is not set
1282 1139# CONFIG_CRYPTO_HW is not set
1283#
1284# Hardware crypto devices
1285#
1286 1140
1287# 1141#
1288# Library routines 1142# Library routines
@@ -1290,7 +1144,9 @@ CONFIG_CRYPTO_CAMELLIA=m
1290CONFIG_BITREVERSE=m 1144CONFIG_BITREVERSE=m
1291# CONFIG_CRC_CCITT is not set 1145# CONFIG_CRC_CCITT is not set
1292CONFIG_CRC16=m 1146CONFIG_CRC16=m
1147# CONFIG_CRC_ITU_T is not set
1293CONFIG_CRC32=m 1148CONFIG_CRC32=m
1149# CONFIG_CRC7 is not set
1294CONFIG_LIBCRC32C=m 1150CONFIG_LIBCRC32C=m
1295CONFIG_ZLIB_INFLATE=m 1151CONFIG_ZLIB_INFLATE=m
1296CONFIG_ZLIB_DEFLATE=m 1152CONFIG_ZLIB_DEFLATE=m
@@ -1301,3 +1157,4 @@ CONFIG_TEXTSEARCH_FSM=m
1301CONFIG_PLIST=y 1157CONFIG_PLIST=y
1302CONFIG_HAS_IOMEM=y 1158CONFIG_HAS_IOMEM=y
1303CONFIG_HAS_IOPORT=y 1159CONFIG_HAS_IOPORT=y
1160CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/ip27_defconfig b/arch/mips/configs/ip27_defconfig
index eb35f7518d06..49bcc58929ba 100644
--- a/arch/mips/configs/ip27_defconfig
+++ b/arch/mips/configs/ip27_defconfig
@@ -1,66 +1,52 @@
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.23-rc2
4# Tue Feb 20 21:47:32 2007 4# Tue Aug 7 13:04:24 2007
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
26# CONFIG_MIPS_COBALT is not set 13# CONFIG_MIPS_COBALT is not set
27# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
28# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 21# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 22# CONFIG_MACH_VR41XX is not set
36# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
38# CONFIG_MACH_VR41XX is not set 25# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
43CONFIG_SGI_IP27=y 29CONFIG_SGI_IP27=y
44# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 41# CONFIG_TOSHIBA_JMR3927 is not set
56# CONFIG_TOSHIBA_RBTX4927 is not set 42# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 43# CONFIG_TOSHIBA_RBTX4938 is not set
44# CONFIG_WR_PPMC is not set
58CONFIG_SGI_SN_M_MODE=y 45CONFIG_SGI_SN_M_MODE=y
59# CONFIG_SGI_SN_N_MODE is not set 46# CONFIG_SGI_SN_N_MODE is not set
60# CONFIG_MAPPED_KERNEL is not set 47# CONFIG_MAPPED_KERNEL is not set
61# CONFIG_REPLICATE_KTEXT is not set 48# CONFIG_REPLICATE_KTEXT is not set
62# CONFIG_REPLICATE_EXHANDLERS is not set 49# CONFIG_REPLICATE_EXHANDLERS is not set
63CONFIG_EARLY_PRINTK=y
64CONFIG_RWSEM_GENERIC_SPINLOCK=y 50CONFIG_RWSEM_GENERIC_SPINLOCK=y
65# CONFIG_ARCH_HAS_ILOG2_U32 is not set 51# CONFIG_ARCH_HAS_ILOG2_U32 is not set
66# CONFIG_ARCH_HAS_ILOG2_U64 is not set 52# CONFIG_ARCH_HAS_ILOG2_U64 is not set
@@ -72,6 +58,9 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
72CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 58CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
73CONFIG_ARC=y 59CONFIG_ARC=y
74CONFIG_DMA_IP27=y 60CONFIG_DMA_IP27=y
61CONFIG_EARLY_PRINTK=y
62CONFIG_SYS_HAS_EARLY_PRINTK=y
63# CONFIG_NO_IOPORT is not set
75CONFIG_CPU_BIG_ENDIAN=y 64CONFIG_CPU_BIG_ENDIAN=y
76# CONFIG_CPU_LITTLE_ENDIAN is not set 65# CONFIG_CPU_LITTLE_ENDIAN is not set
77CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 66CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
@@ -82,6 +71,7 @@ CONFIG_BOOT_ELF64=y
82# 71#
83# CPU selection 72# CPU selection
84# 73#
74# CONFIG_CPU_LOONGSON2 is not set
85# CONFIG_CPU_MIPS32_R1 is not set 75# CONFIG_CPU_MIPS32_R1 is not set
86# CONFIG_CPU_MIPS32_R2 is not set 76# CONFIG_CPU_MIPS32_R2 is not set
87# CONFIG_CPU_MIPS64_R1 is not set 77# CONFIG_CPU_MIPS64_R1 is not set
@@ -119,7 +109,6 @@ CONFIG_CPU_HAS_PREFETCH=y
119CONFIG_MIPS_MT_DISABLED=y 109CONFIG_MIPS_MT_DISABLED=y
120# CONFIG_MIPS_MT_SMP is not set 110# CONFIG_MIPS_MT_SMP is not set
121# CONFIG_MIPS_MT_SMTC is not set 111# CONFIG_MIPS_MT_SMTC is not set
122# CONFIG_MIPS_VPE_LOADER is not set
123CONFIG_CPU_HAS_LLSC=y 112CONFIG_CPU_HAS_LLSC=y
124CONFIG_CPU_HAS_SYNC=y 113CONFIG_CPU_HAS_SYNC=y
125CONFIG_GENERIC_HARDIRQS=y 114CONFIG_GENERIC_HARDIRQS=y
@@ -141,7 +130,8 @@ CONFIG_NEED_MULTIPLE_NODES=y
141CONFIG_SPLIT_PTLOCK_CPUS=4 130CONFIG_SPLIT_PTLOCK_CPUS=4
142CONFIG_MIGRATION=y 131CONFIG_MIGRATION=y
143CONFIG_RESOURCES_64BIT=y 132CONFIG_RESOURCES_64BIT=y
144CONFIG_ZONE_DMA_FLAG=1 133CONFIG_ZONE_DMA_FLAG=0
134CONFIG_VIRT_TO_BUS=y
145CONFIG_SMP=y 135CONFIG_SMP=y
146CONFIG_SYS_SUPPORTS_SMP=y 136CONFIG_SYS_SUPPORTS_SMP=y
147CONFIG_NR_CPUS_DEFAULT_64=y 137CONFIG_NR_CPUS_DEFAULT_64=y
@@ -161,36 +151,34 @@ CONFIG_PREEMPT_NONE=y
161CONFIG_PREEMPT_BKL=y 151CONFIG_PREEMPT_BKL=y
162# CONFIG_MIPS_INSANE_LARGE is not set 152# CONFIG_MIPS_INSANE_LARGE is not set
163# CONFIG_KEXEC is not set 153# CONFIG_KEXEC is not set
154CONFIG_SECCOMP=y
164CONFIG_LOCKDEP_SUPPORT=y 155CONFIG_LOCKDEP_SUPPORT=y
165CONFIG_STACKTRACE_SUPPORT=y 156CONFIG_STACKTRACE_SUPPORT=y
166CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 157CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
167 158
168# 159#
169# Code maturity level options 160# General setup
170# 161#
171CONFIG_EXPERIMENTAL=y 162CONFIG_EXPERIMENTAL=y
172CONFIG_LOCK_KERNEL=y 163CONFIG_LOCK_KERNEL=y
173CONFIG_INIT_ENV_ARG_LIMIT=32 164CONFIG_INIT_ENV_ARG_LIMIT=32
174
175#
176# General setup
177#
178CONFIG_LOCALVERSION="" 165CONFIG_LOCALVERSION=""
179CONFIG_LOCALVERSION_AUTO=y 166CONFIG_LOCALVERSION_AUTO=y
180CONFIG_SWAP=y 167CONFIG_SWAP=y
181CONFIG_SYSVIPC=y 168CONFIG_SYSVIPC=y
182# CONFIG_IPC_NS is not set
183CONFIG_SYSVIPC_SYSCTL=y 169CONFIG_SYSVIPC_SYSCTL=y
184CONFIG_POSIX_MQUEUE=y 170CONFIG_POSIX_MQUEUE=y
185# CONFIG_BSD_PROCESS_ACCT is not set 171# CONFIG_BSD_PROCESS_ACCT is not set
186# CONFIG_TASKSTATS is not set 172# CONFIG_TASKSTATS is not set
187# CONFIG_UTS_NS is not set 173# CONFIG_USER_NS is not set
188# CONFIG_AUDIT is not set 174# CONFIG_AUDIT is not set
189CONFIG_IKCONFIG=y 175CONFIG_IKCONFIG=y
190CONFIG_IKCONFIG_PROC=y 176CONFIG_IKCONFIG_PROC=y
177CONFIG_LOG_BUF_SHIFT=15
191CONFIG_CPUSETS=y 178CONFIG_CPUSETS=y
192CONFIG_SYSFS_DEPRECATED=y 179CONFIG_SYSFS_DEPRECATED=y
193CONFIG_RELAY=y 180CONFIG_RELAY=y
181# CONFIG_BLK_DEV_INITRD is not set
194# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 182# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
195CONFIG_SYSCTL=y 183CONFIG_SYSCTL=y
196CONFIG_EMBEDDED=y 184CONFIG_EMBEDDED=y
@@ -203,18 +191,19 @@ CONFIG_BUG=y
203CONFIG_ELF_CORE=y 191CONFIG_ELF_CORE=y
204CONFIG_BASE_FULL=y 192CONFIG_BASE_FULL=y
205CONFIG_FUTEX=y 193CONFIG_FUTEX=y
194CONFIG_ANON_INODES=y
206CONFIG_EPOLL=y 195CONFIG_EPOLL=y
196CONFIG_SIGNALFD=y
197CONFIG_TIMERFD=y
198CONFIG_EVENTFD=y
207CONFIG_SHMEM=y 199CONFIG_SHMEM=y
208CONFIG_SLAB=y
209CONFIG_VM_EVENT_COUNTERS=y 200CONFIG_VM_EVENT_COUNTERS=y
201CONFIG_SLAB=y
202# CONFIG_SLUB is not set
203# CONFIG_SLOB is not set
210CONFIG_RT_MUTEXES=y 204CONFIG_RT_MUTEXES=y
211# CONFIG_TINY_SHMEM is not set 205# CONFIG_TINY_SHMEM is not set
212CONFIG_BASE_SMALL=0 206CONFIG_BASE_SMALL=0
213# CONFIG_SLOB is not set
214
215#
216# Loadable module support
217#
218CONFIG_MODULES=y 207CONFIG_MODULES=y
219CONFIG_MODULE_UNLOAD=y 208CONFIG_MODULE_UNLOAD=y
220# CONFIG_MODULE_FORCE_UNLOAD is not set 209# CONFIG_MODULE_FORCE_UNLOAD is not set
@@ -222,12 +211,9 @@ CONFIG_MODULE_UNLOAD=y
222CONFIG_MODULE_SRCVERSION_ALL=y 211CONFIG_MODULE_SRCVERSION_ALL=y
223CONFIG_KMOD=y 212CONFIG_KMOD=y
224CONFIG_STOP_MACHINE=y 213CONFIG_STOP_MACHINE=y
225
226#
227# Block layer
228#
229CONFIG_BLOCK=y 214CONFIG_BLOCK=y
230# CONFIG_BLK_DEV_IO_TRACE is not set 215# CONFIG_BLK_DEV_IO_TRACE is not set
216# CONFIG_BLK_DEV_BSG is not set
231 217
232# 218#
233# IO Schedulers 219# IO Schedulers
@@ -248,16 +234,13 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
248CONFIG_HW_HAS_PCI=y 234CONFIG_HW_HAS_PCI=y
249CONFIG_PCI=y 235CONFIG_PCI=y
250CONFIG_PCI_DOMAINS=y 236CONFIG_PCI_DOMAINS=y
237# CONFIG_ARCH_SUPPORTS_MSI is not set
251CONFIG_MMU=y 238CONFIG_MMU=y
252 239
253# 240#
254# PCCARD (PCMCIA/CardBus) support 241# PCCARD (PCMCIA/CardBus) support
255# 242#
256# CONFIG_PCCARD is not set 243# CONFIG_PCCARD is not set
257
258#
259# PCI Hotplug Support
260#
261# CONFIG_HOTPLUG_PCI is not set 244# CONFIG_HOTPLUG_PCI is not set
262 245
263# 246#
@@ -279,7 +262,6 @@ CONFIG_BINFMT_ELF32=y
279CONFIG_PM=y 262CONFIG_PM=y
280# CONFIG_PM_LEGACY is not set 263# CONFIG_PM_LEGACY is not set
281# CONFIG_PM_DEBUG is not set 264# CONFIG_PM_DEBUG is not set
282# CONFIG_PM_SYSFS_DEPRECATED is not set
283 265
284# 266#
285# Networking 267# Networking
@@ -289,7 +271,6 @@ CONFIG_NET=y
289# 271#
290# Networking options 272# Networking options
291# 273#
292# CONFIG_NETDEBUG is not set
293CONFIG_PACKET=y 274CONFIG_PACKET=y
294CONFIG_PACKET_MMAP=y 275CONFIG_PACKET_MMAP=y
295CONFIG_UNIX=y 276CONFIG_UNIX=y
@@ -331,20 +312,13 @@ CONFIG_TCP_MD5SIG=y
331# CONFIG_INET6_TUNNEL is not set 312# CONFIG_INET6_TUNNEL is not set
332CONFIG_NETWORK_SECMARK=y 313CONFIG_NETWORK_SECMARK=y
333# CONFIG_NETFILTER is not set 314# CONFIG_NETFILTER is not set
334
335#
336# DCCP Configuration (EXPERIMENTAL)
337#
338# CONFIG_IP_DCCP is not set 315# CONFIG_IP_DCCP is not set
339 316CONFIG_IP_SCTP=m
340# 317# CONFIG_SCTP_DBG_MSG is not set
341# SCTP Configuration (EXPERIMENTAL) 318# CONFIG_SCTP_DBG_OBJCNT is not set
342# 319# CONFIG_SCTP_HMAC_NONE is not set
343# CONFIG_IP_SCTP is not set 320# CONFIG_SCTP_HMAC_SHA1 is not set
344 321CONFIG_SCTP_HMAC_MD5=y
345#
346# TIPC Configuration (EXPERIMENTAL)
347#
348# CONFIG_TIPC is not set 322# CONFIG_TIPC is not set
349# CONFIG_ATM is not set 323# CONFIG_ATM is not set
350# CONFIG_BRIDGE is not set 324# CONFIG_BRIDGE is not set
@@ -363,9 +337,6 @@ CONFIG_NETWORK_SECMARK=y
363# 337#
364CONFIG_NET_SCHED=y 338CONFIG_NET_SCHED=y
365CONFIG_NET_SCH_FIFO=y 339CONFIG_NET_SCH_FIFO=y
366# CONFIG_NET_SCH_CLK_JIFFIES is not set
367CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
368# CONFIG_NET_SCH_CLK_CPU is not set
369 340
370# 341#
371# Queueing/Scheduling 342# Queueing/Scheduling
@@ -374,6 +345,7 @@ CONFIG_NET_SCH_CBQ=m
374CONFIG_NET_SCH_HTB=m 345CONFIG_NET_SCH_HTB=m
375CONFIG_NET_SCH_HFSC=m 346CONFIG_NET_SCH_HFSC=m
376CONFIG_NET_SCH_PRIO=m 347CONFIG_NET_SCH_PRIO=m
348CONFIG_NET_SCH_RR=m
377CONFIG_NET_SCH_RED=m 349CONFIG_NET_SCH_RED=m
378CONFIG_NET_SCH_SFQ=m 350CONFIG_NET_SCH_SFQ=m
379CONFIG_NET_SCH_TEQL=m 351CONFIG_NET_SCH_TEQL=m
@@ -398,10 +370,15 @@ CONFIG_CLS_U32_MARK=y
398CONFIG_NET_CLS_RSVP=m 370CONFIG_NET_CLS_RSVP=m
399CONFIG_NET_CLS_RSVP6=m 371CONFIG_NET_CLS_RSVP6=m
400# CONFIG_NET_EMATCH is not set 372# CONFIG_NET_EMATCH is not set
401# CONFIG_NET_CLS_ACT is not set 373CONFIG_NET_CLS_ACT=y
374CONFIG_NET_ACT_POLICE=y
375CONFIG_NET_ACT_GACT=m
376CONFIG_GACT_PROB=y
377CONFIG_NET_ACT_MIRRED=m
378CONFIG_NET_ACT_PEDIT=m
379# CONFIG_NET_ACT_SIMP is not set
402CONFIG_NET_CLS_POLICE=y 380CONFIG_NET_CLS_POLICE=y
403# CONFIG_NET_CLS_IND is not set 381# CONFIG_NET_CLS_IND is not set
404CONFIG_NET_ESTIMATOR=y
405 382
406# 383#
407# Network testing 384# Network testing
@@ -410,13 +387,24 @@ CONFIG_NET_ESTIMATOR=y
410# CONFIG_HAMRADIO is not set 387# CONFIG_HAMRADIO is not set
411# CONFIG_IRDA is not set 388# CONFIG_IRDA is not set
412# CONFIG_BT is not set 389# CONFIG_BT is not set
390# CONFIG_AF_RXRPC is not set
391
392#
393# Wireless
394#
395CONFIG_CFG80211=m
396CONFIG_WIRELESS_EXT=y
397CONFIG_MAC80211=m
398# CONFIG_MAC80211_DEBUG is not set
413CONFIG_IEEE80211=m 399CONFIG_IEEE80211=m
414# CONFIG_IEEE80211_DEBUG is not set 400# CONFIG_IEEE80211_DEBUG is not set
415CONFIG_IEEE80211_CRYPT_WEP=m 401CONFIG_IEEE80211_CRYPT_WEP=m
416CONFIG_IEEE80211_CRYPT_CCMP=m 402CONFIG_IEEE80211_CRYPT_CCMP=m
403CONFIG_IEEE80211_CRYPT_TKIP=m
417CONFIG_IEEE80211_SOFTMAC=m 404CONFIG_IEEE80211_SOFTMAC=m
418# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 405# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
419CONFIG_WIRELESS_EXT=y 406CONFIG_RFKILL=m
407# CONFIG_NET_9P is not set
420 408
421# 409#
422# Device Drivers 410# Device Drivers
@@ -429,30 +417,10 @@ CONFIG_STANDALONE=y
429CONFIG_PREVENT_FIRMWARE_BUILD=y 417CONFIG_PREVENT_FIRMWARE_BUILD=y
430CONFIG_FW_LOADER=y 418CONFIG_FW_LOADER=y
431# CONFIG_SYS_HYPERVISOR is not set 419# CONFIG_SYS_HYPERVISOR is not set
432
433#
434# Connector - unified userspace <-> kernelspace linker
435#
436CONFIG_CONNECTOR=m 420CONFIG_CONNECTOR=m
437
438#
439# Memory Technology Devices (MTD)
440#
441# CONFIG_MTD is not set 421# CONFIG_MTD is not set
442
443#
444# Parallel port support
445#
446# CONFIG_PARPORT is not set 422# CONFIG_PARPORT is not set
447 423CONFIG_BLK_DEV=y
448#
449# Plug and Play support
450#
451# CONFIG_PNPACPI is not set
452
453#
454# Block devices
455#
456# CONFIG_BLK_CPQ_DA is not set 424# CONFIG_BLK_CPQ_DA is not set
457# CONFIG_BLK_CPQ_CISS_DA is not set 425# CONFIG_BLK_CPQ_CISS_DA is not set
458# CONFIG_BLK_DEV_DAC960 is not set 426# CONFIG_BLK_DEV_DAC960 is not set
@@ -463,21 +431,11 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
463# CONFIG_BLK_DEV_NBD is not set 431# CONFIG_BLK_DEV_NBD is not set
464# CONFIG_BLK_DEV_SX8 is not set 432# CONFIG_BLK_DEV_SX8 is not set
465# CONFIG_BLK_DEV_RAM is not set 433# CONFIG_BLK_DEV_RAM is not set
466# CONFIG_BLK_DEV_INITRD is not set
467CONFIG_CDROM_PKTCDVD=m 434CONFIG_CDROM_PKTCDVD=m
468CONFIG_CDROM_PKTCDVD_BUFFERS=8 435CONFIG_CDROM_PKTCDVD_BUFFERS=8
469# CONFIG_CDROM_PKTCDVD_WCACHE is not set 436# CONFIG_CDROM_PKTCDVD_WCACHE is not set
470CONFIG_ATA_OVER_ETH=m 437CONFIG_ATA_OVER_ETH=m
471 438# CONFIG_MISC_DEVICES is not set
472#
473# Misc devices
474#
475CONFIG_SGI_IOC4=m
476# CONFIG_TIFM_CORE is not set
477
478#
479# ATA/ATAPI/MFM/RLL support
480#
481# CONFIG_IDE is not set 439# CONFIG_IDE is not set
482 440
483# 441#
@@ -485,6 +443,7 @@ CONFIG_SGI_IOC4=m
485# 443#
486CONFIG_RAID_ATTRS=m 444CONFIG_RAID_ATTRS=m
487CONFIG_SCSI=y 445CONFIG_SCSI=y
446CONFIG_SCSI_DMA=y
488CONFIG_SCSI_TGT=m 447CONFIG_SCSI_TGT=m
489CONFIG_SCSI_NETLINK=y 448CONFIG_SCSI_NETLINK=y
490CONFIG_SCSI_PROC_FS=y 449CONFIG_SCSI_PROC_FS=y
@@ -507,6 +466,7 @@ CONFIG_CHR_DEV_SCH=m
507CONFIG_SCSI_CONSTANTS=y 466CONFIG_SCSI_CONSTANTS=y
508CONFIG_SCSI_LOGGING=y 467CONFIG_SCSI_LOGGING=y
509CONFIG_SCSI_SCAN_ASYNC=y 468CONFIG_SCSI_SCAN_ASYNC=y
469CONFIG_SCSI_WAIT_SCAN=m
510 470
511# 471#
512# SCSI Transports 472# SCSI Transports
@@ -517,10 +477,7 @@ CONFIG_SCSI_ISCSI_ATTRS=m
517CONFIG_SCSI_SAS_ATTRS=m 477CONFIG_SCSI_SAS_ATTRS=m
518CONFIG_SCSI_SAS_LIBSAS=m 478CONFIG_SCSI_SAS_LIBSAS=m
519# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set 479# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
520 480CONFIG_SCSI_LOWLEVEL=y
521#
522# SCSI low-level drivers
523#
524# CONFIG_ISCSI_TCP is not set 481# CONFIG_ISCSI_TCP is not set
525# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 482# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
526# CONFIG_SCSI_3W_9XXX is not set 483# CONFIG_SCSI_3W_9XXX is not set
@@ -551,15 +508,7 @@ CONFIG_SCSI_QLOGIC_1280=y
551# CONFIG_SCSI_DC390T is not set 508# CONFIG_SCSI_DC390T is not set
552# CONFIG_SCSI_DEBUG is not set 509# CONFIG_SCSI_DEBUG is not set
553# CONFIG_SCSI_SRP is not set 510# CONFIG_SCSI_SRP is not set
554
555#
556# Serial ATA (prod) and Parallel ATA (experimental) drivers
557#
558# CONFIG_ATA is not set 511# CONFIG_ATA is not set
559
560#
561# Multi-device support (RAID and LVM)
562#
563CONFIG_MD=y 512CONFIG_MD=y
564CONFIG_BLK_DEV_MD=y 513CONFIG_BLK_DEV_MD=y
565CONFIG_MD_LINEAR=m 514CONFIG_MD_LINEAR=m
@@ -578,6 +527,8 @@ CONFIG_DM_MIRROR=m
578CONFIG_DM_ZERO=m 527CONFIG_DM_ZERO=m
579CONFIG_DM_MULTIPATH=m 528CONFIG_DM_MULTIPATH=m
580CONFIG_DM_MULTIPATH_EMC=m 529CONFIG_DM_MULTIPATH_EMC=m
530CONFIG_DM_MULTIPATH_RDAC=m
531# CONFIG_DM_DELAY is not set
581 532
582# 533#
583# Fusion MPT device support 534# Fusion MPT device support
@@ -590,30 +541,18 @@ CONFIG_DM_MULTIPATH_EMC=m
590# 541#
591# IEEE 1394 (FireWire) support 542# IEEE 1394 (FireWire) support
592# 543#
544# CONFIG_FIREWIRE is not set
593# CONFIG_IEEE1394 is not set 545# CONFIG_IEEE1394 is not set
594
595#
596# I2O device support
597#
598# CONFIG_I2O is not set 546# CONFIG_I2O is not set
599
600#
601# Network device support
602#
603CONFIG_NETDEVICES=y 547CONFIG_NETDEVICES=y
548CONFIG_NETDEVICES_MULTIQUEUE=y
549CONFIG_IFB=m
604# CONFIG_DUMMY is not set 550# CONFIG_DUMMY is not set
605# CONFIG_BONDING is not set 551# CONFIG_BONDING is not set
552CONFIG_MACVLAN=m
606# CONFIG_EQUALIZER is not set 553# CONFIG_EQUALIZER is not set
607# CONFIG_TUN is not set 554# CONFIG_TUN is not set
608
609#
610# ARCnet devices
611#
612# CONFIG_ARCNET is not set 555# CONFIG_ARCNET is not set
613
614#
615# PHY device support
616#
617CONFIG_PHYLIB=m 556CONFIG_PHYLIB=m
618 557
619# 558#
@@ -627,30 +566,21 @@ CONFIG_CICADA_PHY=m
627CONFIG_VITESSE_PHY=m 566CONFIG_VITESSE_PHY=m
628CONFIG_SMSC_PHY=m 567CONFIG_SMSC_PHY=m
629# CONFIG_BROADCOM_PHY is not set 568# CONFIG_BROADCOM_PHY is not set
569CONFIG_ICPLUS_PHY=m
630# CONFIG_FIXED_PHY is not set 570# CONFIG_FIXED_PHY is not set
631
632#
633# Ethernet (10 or 100Mbit)
634#
635CONFIG_NET_ETHERNET=y 571CONFIG_NET_ETHERNET=y
636CONFIG_MII=y 572CONFIG_MII=y
573CONFIG_AX88796=m
637CONFIG_SGI_IOC3_ETH=y 574CONFIG_SGI_IOC3_ETH=y
638# CONFIG_HAPPYMEAL is not set 575# CONFIG_HAPPYMEAL is not set
639# CONFIG_SUNGEM is not set 576# CONFIG_SUNGEM is not set
640# CONFIG_CASSINI is not set 577# CONFIG_CASSINI is not set
641# CONFIG_NET_VENDOR_3COM is not set 578# CONFIG_NET_VENDOR_3COM is not set
642# CONFIG_DM9000 is not set 579# CONFIG_DM9000 is not set
643
644#
645# Tulip family network device support
646#
647# CONFIG_NET_TULIP is not set 580# CONFIG_NET_TULIP is not set
648# CONFIG_HP100 is not set 581# CONFIG_HP100 is not set
649# CONFIG_NET_PCI is not set 582# CONFIG_NET_PCI is not set
650 583CONFIG_NETDEV_1000=y
651#
652# Ethernet (1000 Mbit)
653#
654# CONFIG_ACENIC is not set 584# CONFIG_ACENIC is not set
655# CONFIG_DL2K is not set 585# CONFIG_DL2K is not set
656# CONFIG_E1000 is not set 586# CONFIG_E1000 is not set
@@ -661,35 +591,57 @@ CONFIG_SGI_IOC3_ETH=y
661# CONFIG_SIS190 is not set 591# CONFIG_SIS190 is not set
662# CONFIG_SKGE is not set 592# CONFIG_SKGE is not set
663# CONFIG_SKY2 is not set 593# CONFIG_SKY2 is not set
664# CONFIG_SK98LIN is not set 594CONFIG_VIA_VELOCITY=m
665# CONFIG_TIGON3 is not set 595# CONFIG_TIGON3 is not set
666# CONFIG_BNX2 is not set 596# CONFIG_BNX2 is not set
667CONFIG_QLA3XXX=m 597CONFIG_QLA3XXX=m
668# CONFIG_ATL1 is not set 598# CONFIG_ATL1 is not set
669 599CONFIG_NETDEV_10000=y
670#
671# Ethernet (10000 Mbit)
672#
673# CONFIG_CHELSIO_T1 is not set 600# CONFIG_CHELSIO_T1 is not set
674CONFIG_CHELSIO_T3=m 601CONFIG_CHELSIO_T3=m
675# CONFIG_IXGB is not set 602# CONFIG_IXGB is not set
676# CONFIG_S2IO is not set 603# CONFIG_S2IO is not set
677# CONFIG_MYRI10GE is not set 604# CONFIG_MYRI10GE is not set
678CONFIG_NETXEN_NIC=m 605CONFIG_NETXEN_NIC=m
679 606# CONFIG_MLX4_CORE is not set
680#
681# Token Ring devices
682#
683# CONFIG_TR is not set 607# CONFIG_TR is not set
684 608
685# 609#
686# Wireless LAN (non-hamradio) 610# Wireless LAN
687# 611#
688# CONFIG_NET_RADIO is not set 612# CONFIG_WLAN_PRE80211 is not set
689 613CONFIG_WLAN_80211=y
690# 614CONFIG_IPW2100=m
691# Wan interfaces 615CONFIG_IPW2100_MONITOR=y
692# 616CONFIG_IPW2100_DEBUG=y
617CONFIG_IPW2200=m
618CONFIG_IPW2200_MONITOR=y
619CONFIG_IPW2200_RADIOTAP=y
620CONFIG_IPW2200_PROMISCUOUS=y
621CONFIG_IPW2200_QOS=y
622CONFIG_IPW2200_DEBUG=y
623CONFIG_LIBERTAS=m
624# CONFIG_LIBERTAS_DEBUG is not set
625CONFIG_HERMES=m
626CONFIG_PLX_HERMES=m
627CONFIG_TMD_HERMES=m
628CONFIG_NORTEL_HERMES=m
629CONFIG_PCI_HERMES=m
630CONFIG_ATMEL=m
631CONFIG_PCI_ATMEL=m
632CONFIG_PRISM54=m
633CONFIG_HOSTAP=m
634CONFIG_HOSTAP_FIRMWARE=y
635CONFIG_HOSTAP_FIRMWARE_NVRAM=y
636CONFIG_HOSTAP_PLX=m
637CONFIG_HOSTAP_PCI=m
638CONFIG_BCM43XX=m
639CONFIG_BCM43XX_DEBUG=y
640CONFIG_BCM43XX_DMA=y
641CONFIG_BCM43XX_PIO=y
642CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
643# CONFIG_BCM43XX_DMA_MODE is not set
644# CONFIG_BCM43XX_PIO_MODE is not set
693# CONFIG_WAN is not set 645# CONFIG_WAN is not set
694# CONFIG_FDDI is not set 646# CONFIG_FDDI is not set
695# CONFIG_HIPPI is not set 647# CONFIG_HIPPI is not set
@@ -700,15 +652,7 @@ CONFIG_NETXEN_NIC=m
700# CONFIG_NETCONSOLE is not set 652# CONFIG_NETCONSOLE is not set
701# CONFIG_NETPOLL is not set 653# CONFIG_NETPOLL is not set
702# CONFIG_NET_POLL_CONTROLLER is not set 654# CONFIG_NET_POLL_CONTROLLER is not set
703
704#
705# ISDN subsystem
706#
707# CONFIG_ISDN is not set 655# CONFIG_ISDN is not set
708
709#
710# Telephony Support
711#
712# CONFIG_PHONE is not set 656# CONFIG_PHONE is not set
713 657
714# 658#
@@ -756,34 +700,17 @@ CONFIG_SERIAL_CORE_CONSOLE=y
756CONFIG_UNIX98_PTYS=y 700CONFIG_UNIX98_PTYS=y
757CONFIG_LEGACY_PTYS=y 701CONFIG_LEGACY_PTYS=y
758CONFIG_LEGACY_PTY_COUNT=256 702CONFIG_LEGACY_PTY_COUNT=256
759
760#
761# IPMI
762#
763# CONFIG_IPMI_HANDLER is not set 703# CONFIG_IPMI_HANDLER is not set
764
765#
766# Watchdog Cards
767#
768# CONFIG_WATCHDOG is not set 704# CONFIG_WATCHDOG is not set
769# CONFIG_HW_RANDOM is not set 705CONFIG_HW_RANDOM=m
770# CONFIG_RTC is not set 706# CONFIG_RTC is not set
771CONFIG_SGI_IP27_RTC=y 707CONFIG_SGI_IP27_RTC=y
772# CONFIG_GEN_RTC is not set
773# CONFIG_DTLK is not set
774# CONFIG_R3964 is not set 708# CONFIG_R3964 is not set
775# CONFIG_APPLICOM is not set 709# CONFIG_APPLICOM is not set
776# CONFIG_DRM is not set 710# CONFIG_DRM is not set
777# CONFIG_RAW_DRIVER is not set 711# CONFIG_RAW_DRIVER is not set
778
779#
780# TPM devices
781#
782# CONFIG_TCG_TPM is not set 712# CONFIG_TCG_TPM is not set
783 713CONFIG_DEVPORT=y
784#
785# I2C support
786#
787# CONFIG_I2C is not set 714# CONFIG_I2C is not set
788 715
789# 716#
@@ -791,43 +718,40 @@ CONFIG_SGI_IP27_RTC=y
791# 718#
792# CONFIG_SPI is not set 719# CONFIG_SPI is not set
793# CONFIG_SPI_MASTER is not set 720# CONFIG_SPI_MASTER is not set
794
795#
796# Dallas's 1-wire bus
797#
798# CONFIG_W1 is not set 721# CONFIG_W1 is not set
722# CONFIG_POWER_SUPPLY is not set
723# CONFIG_HWMON is not set
799 724
800# 725#
801# Hardware Monitoring support 726# Multifunction device drivers
802# 727#
803# CONFIG_HWMON is not set 728# CONFIG_MFD_SM501 is not set
804# CONFIG_HWMON_VID is not set
805 729
806# 730#
807# Multimedia devices 731# Multimedia devices
808# 732#
809# CONFIG_VIDEO_DEV is not set 733# CONFIG_VIDEO_DEV is not set
734# CONFIG_DVB_CORE is not set
735# CONFIG_DAB is not set
810 736
811# 737#
812# Digital Video Broadcasting Devices 738# Graphics support
813# 739#
814# CONFIG_DVB is not set 740# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
815 741
816# 742#
817# Graphics support 743# Display device support
818# 744#
819# CONFIG_FIRMWARE_EDID is not set 745# CONFIG_DISPLAY_SUPPORT is not set
746# CONFIG_VGASTATE is not set
747# CONFIG_VIDEO_OUTPUT_CONTROL is not set
820# CONFIG_FB is not set 748# CONFIG_FB is not set
821# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
822 749
823# 750#
824# Sound 751# Sound
825# 752#
826# CONFIG_SOUND is not set 753# CONFIG_SOUND is not set
827 754CONFIG_USB_SUPPORT=y
828#
829# USB support
830#
831CONFIG_USB_ARCH_HAS_HCD=y 755CONFIG_USB_ARCH_HAS_HCD=y
832CONFIG_USB_ARCH_HAS_OHCI=y 756CONFIG_USB_ARCH_HAS_OHCI=y
833CONFIG_USB_ARCH_HAS_EHCI=y 757CONFIG_USB_ARCH_HAS_EHCI=y
@@ -841,37 +765,9 @@ CONFIG_USB_ARCH_HAS_EHCI=y
841# USB Gadget Support 765# USB Gadget Support
842# 766#
843# CONFIG_USB_GADGET is not set 767# CONFIG_USB_GADGET is not set
844
845#
846# MMC/SD Card support
847#
848# CONFIG_MMC is not set 768# CONFIG_MMC is not set
849
850#
851# LED devices
852#
853# CONFIG_NEW_LEDS is not set 769# CONFIG_NEW_LEDS is not set
854
855#
856# LED drivers
857#
858
859#
860# LED Triggers
861#
862
863#
864# InfiniBand support
865#
866# CONFIG_INFINIBAND is not set 770# CONFIG_INFINIBAND is not set
867
868#
869# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
870#
871
872#
873# Real Time Clock
874#
875# CONFIG_RTC_CLASS is not set 771# CONFIG_RTC_CLASS is not set
876 772
877# 773#
@@ -888,12 +784,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
888# 784#
889 785
890# 786#
891# Auxiliary Display support 787# Userspace I/O
892#
893
894#
895# Virtualization
896# 788#
789CONFIG_UIO=y
790# CONFIG_UIO_CIF is not set
897 791
898# 792#
899# File systems 793# File systems
@@ -992,6 +886,7 @@ CONFIG_LOCKD_V4=y
992CONFIG_NFS_COMMON=y 886CONFIG_NFS_COMMON=y
993CONFIG_SUNRPC=y 887CONFIG_SUNRPC=y
994CONFIG_SUNRPC_GSS=y 888CONFIG_SUNRPC_GSS=y
889# CONFIG_SUNRPC_BIND34 is not set
995CONFIG_RPCSEC_GSS_KRB5=y 890CONFIG_RPCSEC_GSS_KRB5=y
996# CONFIG_RPCSEC_GSS_SPKM3 is not set 891# CONFIG_RPCSEC_GSS_SPKM3 is not set
997# CONFIG_SMB_FS is not set 892# CONFIG_SMB_FS is not set
@@ -999,7 +894,6 @@ CONFIG_RPCSEC_GSS_KRB5=y
999# CONFIG_NCP_FS is not set 894# CONFIG_NCP_FS is not set
1000# CONFIG_CODA_FS is not set 895# CONFIG_CODA_FS is not set
1001# CONFIG_AFS_FS is not set 896# CONFIG_AFS_FS is not set
1002# CONFIG_9P_FS is not set
1003 897
1004# 898#
1005# Partition Types 899# Partition Types
@@ -1021,6 +915,7 @@ CONFIG_SGI_PARTITION=y
1021# CONFIG_SUN_PARTITION is not set 915# CONFIG_SUN_PARTITION is not set
1022# CONFIG_KARMA_PARTITION is not set 916# CONFIG_KARMA_PARTITION is not set
1023# CONFIG_EFI_PARTITION is not set 917# CONFIG_EFI_PARTITION is not set
918# CONFIG_SYSV68_PARTITION is not set
1024 919
1025# 920#
1026# Native Language Support 921# Native Language Support
@@ -1031,8 +926,6 @@ CONFIG_SGI_PARTITION=y
1031# Distributed Lock Manager 926# Distributed Lock Manager
1032# 927#
1033CONFIG_DLM=m 928CONFIG_DLM=m
1034CONFIG_DLM_TCP=y
1035# CONFIG_DLM_SCTP is not set
1036# CONFIG_DLM_DEBUG is not set 929# CONFIG_DLM_DEBUG is not set
1037 930
1038# 931#
@@ -1051,7 +944,6 @@ CONFIG_ENABLE_MUST_CHECK=y
1051# CONFIG_DEBUG_FS is not set 944# CONFIG_DEBUG_FS is not set
1052# CONFIG_HEADERS_CHECK is not set 945# CONFIG_HEADERS_CHECK is not set
1053# CONFIG_DEBUG_KERNEL is not set 946# CONFIG_DEBUG_KERNEL is not set
1054CONFIG_LOG_BUF_SHIFT=15
1055CONFIG_CROSSCOMPILE=y 947CONFIG_CROSSCOMPILE=y
1056CONFIG_CMDLINE="" 948CONFIG_CMDLINE=""
1057CONFIG_SYS_SUPPORTS_KGDB=y 949CONFIG_SYS_SUPPORTS_KGDB=y
@@ -1062,12 +954,13 @@ CONFIG_SYS_SUPPORTS_KGDB=y
1062CONFIG_KEYS=y 954CONFIG_KEYS=y
1063CONFIG_KEYS_DEBUG_PROC_KEYS=y 955CONFIG_KEYS_DEBUG_PROC_KEYS=y
1064# CONFIG_SECURITY is not set 956# CONFIG_SECURITY is not set
1065 957CONFIG_XOR_BLOCKS=m
1066# 958CONFIG_ASYNC_CORE=m
1067# Cryptographic options 959CONFIG_ASYNC_MEMCPY=m
1068# 960CONFIG_ASYNC_XOR=m
1069CONFIG_CRYPTO=y 961CONFIG_CRYPTO=y
1070CONFIG_CRYPTO_ALGAPI=y 962CONFIG_CRYPTO_ALGAPI=y
963CONFIG_CRYPTO_ABLKCIPHER=m
1071CONFIG_CRYPTO_BLKCIPHER=y 964CONFIG_CRYPTO_BLKCIPHER=y
1072CONFIG_CRYPTO_HASH=y 965CONFIG_CRYPTO_HASH=y
1073CONFIG_CRYPTO_MANAGER=y 966CONFIG_CRYPTO_MANAGER=y
@@ -1086,6 +979,7 @@ CONFIG_CRYPTO_ECB=m
1086CONFIG_CRYPTO_CBC=y 979CONFIG_CRYPTO_CBC=y
1087CONFIG_CRYPTO_PCBC=m 980CONFIG_CRYPTO_PCBC=m
1088CONFIG_CRYPTO_LRW=m 981CONFIG_CRYPTO_LRW=m
982CONFIG_CRYPTO_CRYPTD=m
1089CONFIG_CRYPTO_DES=y 983CONFIG_CRYPTO_DES=y
1090CONFIG_CRYPTO_FCRYPT=m 984CONFIG_CRYPTO_FCRYPT=m
1091CONFIG_CRYPTO_BLOWFISH=m 985CONFIG_CRYPTO_BLOWFISH=m
@@ -1104,21 +998,21 @@ CONFIG_CRYPTO_MICHAEL_MIC=m
1104CONFIG_CRYPTO_CRC32C=m 998CONFIG_CRYPTO_CRC32C=m
1105CONFIG_CRYPTO_CAMELLIA=m 999CONFIG_CRYPTO_CAMELLIA=m
1106# CONFIG_CRYPTO_TEST is not set 1000# CONFIG_CRYPTO_TEST is not set
1107 1001CONFIG_CRYPTO_HW=y
1108#
1109# Hardware crypto devices
1110#
1111 1002
1112# 1003#
1113# Library routines 1004# Library routines
1114# 1005#
1115CONFIG_BITREVERSE=y 1006CONFIG_BITREVERSE=y
1116# CONFIG_CRC_CCITT is not set 1007CONFIG_CRC_CCITT=m
1117CONFIG_CRC16=m 1008# CONFIG_CRC16 is not set
1009# CONFIG_CRC_ITU_T is not set
1118CONFIG_CRC32=y 1010CONFIG_CRC32=y
1011# CONFIG_CRC7 is not set
1119CONFIG_LIBCRC32C=m 1012CONFIG_LIBCRC32C=m
1120CONFIG_ZLIB_INFLATE=m 1013CONFIG_ZLIB_INFLATE=m
1121CONFIG_ZLIB_DEFLATE=m 1014CONFIG_ZLIB_DEFLATE=m
1122CONFIG_PLIST=y 1015CONFIG_PLIST=y
1123CONFIG_HAS_IOMEM=y 1016CONFIG_HAS_IOMEM=y
1124CONFIG_HAS_IOPORT=y 1017CONFIG_HAS_IOPORT=y
1018CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/jmr3927_defconfig b/arch/mips/configs/jmr3927_defconfig
index 95a72d2750ef..eb96791c33ea 100644
--- a/arch/mips/configs/jmr3927_defconfig
+++ b/arch/mips/configs/jmr3927_defconfig
@@ -1,60 +1,47 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc3 3# Linux kernel version: 2.6.23-rc1
4# Thu Mar 15 00:40:40 2007 4# Thu Aug 2 23:07:36 2007
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
26# CONFIG_MIPS_COBALT is not set 13# CONFIG_MIPS_COBALT is not set
27# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
28# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 21# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 22# CONFIG_MACH_VR41XX is not set
36# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
38# CONFIG_MACH_VR41XX is not set 25# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
43# CONFIG_SGI_IP27 is not set 29# CONFIG_SGI_IP27 is not set
44# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
55CONFIG_TOSHIBA_JMR3927=y 41CONFIG_TOSHIBA_JMR3927=y
56# CONFIG_TOSHIBA_RBTX4927 is not set 42# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 43# CONFIG_TOSHIBA_RBTX4938 is not set
44# CONFIG_WR_PPMC is not set
58CONFIG_RWSEM_GENERIC_SPINLOCK=y 45CONFIG_RWSEM_GENERIC_SPINLOCK=y
59# CONFIG_ARCH_HAS_ILOG2_U32 is not set 46# CONFIG_ARCH_HAS_ILOG2_U32 is not set
60# CONFIG_ARCH_HAS_ILOG2_U64 is not set 47# CONFIG_ARCH_HAS_ILOG2_U64 is not set
@@ -66,10 +53,12 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
66CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 53CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
67CONFIG_DMA_NONCOHERENT=y 54CONFIG_DMA_NONCOHERENT=y
68CONFIG_DMA_NEED_PCI_MAP_STATE=y 55CONFIG_DMA_NEED_PCI_MAP_STATE=y
56# CONFIG_NO_IOPORT is not set
69CONFIG_CPU_BIG_ENDIAN=y 57CONFIG_CPU_BIG_ENDIAN=y
70# CONFIG_CPU_LITTLE_ENDIAN is not set 58# CONFIG_CPU_LITTLE_ENDIAN is not set
71CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 59CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
72CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 60CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
61CONFIG_IRQ_TXX9=y
73CONFIG_MIPS_TX3927=y 62CONFIG_MIPS_TX3927=y
74CONFIG_SWAP_IO_SPACE=y 63CONFIG_SWAP_IO_SPACE=y
75CONFIG_MIPS_L1_CACHE_SHIFT=5 64CONFIG_MIPS_L1_CACHE_SHIFT=5
@@ -77,6 +66,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
77# 66#
78# CPU selection 67# CPU selection
79# 68#
69# CONFIG_CPU_LOONGSON2 is not set
80# CONFIG_CPU_MIPS32_R1 is not set 70# CONFIG_CPU_MIPS32_R1 is not set
81# CONFIG_CPU_MIPS32_R2 is not set 71# CONFIG_CPU_MIPS32_R2 is not set
82# CONFIG_CPU_MIPS64_R1 is not set 72# CONFIG_CPU_MIPS64_R1 is not set
@@ -112,21 +102,17 @@ CONFIG_PAGE_SIZE_4KB=y
112CONFIG_MIPS_MT_DISABLED=y 102CONFIG_MIPS_MT_DISABLED=y
113# CONFIG_MIPS_MT_SMP is not set 103# CONFIG_MIPS_MT_SMP is not set
114# CONFIG_MIPS_MT_SMTC is not set 104# CONFIG_MIPS_MT_SMTC is not set
115# CONFIG_MIPS_VPE_LOADER is not set
116CONFIG_CPU_HAS_SYNC=y 105CONFIG_CPU_HAS_SYNC=y
117CONFIG_GENERIC_HARDIRQS=y 106CONFIG_GENERIC_HARDIRQS=y
118CONFIG_GENERIC_IRQ_PROBE=y 107CONFIG_GENERIC_IRQ_PROBE=y
119CONFIG_ARCH_FLATMEM_ENABLE=y 108CONFIG_ARCH_FLATMEM_ENABLE=y
120CONFIG_SELECT_MEMORY_MODEL=y
121CONFIG_FLATMEM_MANUAL=y
122# CONFIG_DISCONTIGMEM_MANUAL is not set
123# CONFIG_SPARSEMEM_MANUAL is not set
124CONFIG_FLATMEM=y 109CONFIG_FLATMEM=y
125CONFIG_FLAT_NODE_MEM_MAP=y 110CONFIG_FLAT_NODE_MEM_MAP=y
126# CONFIG_SPARSEMEM_STATIC is not set 111# CONFIG_SPARSEMEM_STATIC is not set
127CONFIG_SPLIT_PTLOCK_CPUS=4 112CONFIG_SPLIT_PTLOCK_CPUS=4
128# CONFIG_RESOURCES_64BIT is not set 113# CONFIG_RESOURCES_64BIT is not set
129CONFIG_ZONE_DMA_FLAG=1 114CONFIG_ZONE_DMA_FLAG=0
115CONFIG_VIRT_TO_BUS=y
130# CONFIG_HZ_48 is not set 116# CONFIG_HZ_48 is not set
131# CONFIG_HZ_100 is not set 117# CONFIG_HZ_100 is not set
132# CONFIG_HZ_128 is not set 118# CONFIG_HZ_128 is not set
@@ -139,37 +125,30 @@ CONFIG_HZ=250
139CONFIG_PREEMPT_NONE=y 125CONFIG_PREEMPT_NONE=y
140# CONFIG_PREEMPT_VOLUNTARY is not set 126# CONFIG_PREEMPT_VOLUNTARY is not set
141# CONFIG_PREEMPT is not set 127# CONFIG_PREEMPT is not set
142# CONFIG_KEXEC is not set 128# CONFIG_SECCOMP is not set
143CONFIG_LOCKDEP_SUPPORT=y 129CONFIG_LOCKDEP_SUPPORT=y
144CONFIG_STACKTRACE_SUPPORT=y 130CONFIG_STACKTRACE_SUPPORT=y
145CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 131CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
146 132
147# 133#
148# Code maturity level options 134# General setup
149# 135#
150CONFIG_EXPERIMENTAL=y 136# CONFIG_EXPERIMENTAL is not set
151CONFIG_BROKEN_ON_SMP=y 137CONFIG_BROKEN_ON_SMP=y
152CONFIG_INIT_ENV_ARG_LIMIT=32 138CONFIG_INIT_ENV_ARG_LIMIT=32
153
154#
155# General setup
156#
157CONFIG_LOCALVERSION="" 139CONFIG_LOCALVERSION=""
158CONFIG_LOCALVERSION_AUTO=y 140CONFIG_LOCALVERSION_AUTO=y
159CONFIG_SWAP=y 141CONFIG_SWAP=y
160CONFIG_SYSVIPC=y 142CONFIG_SYSVIPC=y
161# CONFIG_IPC_NS is not set
162CONFIG_SYSVIPC_SYSCTL=y 143CONFIG_SYSVIPC_SYSCTL=y
163# CONFIG_POSIX_MQUEUE is not set
164# CONFIG_BSD_PROCESS_ACCT is not set 144# CONFIG_BSD_PROCESS_ACCT is not set
165# CONFIG_TASKSTATS is not set 145# CONFIG_TASKSTATS is not set
166# CONFIG_UTS_NS is not set
167# CONFIG_AUDIT is not set 146# CONFIG_AUDIT is not set
168# CONFIG_IKCONFIG is not set 147# CONFIG_IKCONFIG is not set
148CONFIG_LOG_BUF_SHIFT=14
169CONFIG_SYSFS_DEPRECATED=y 149CONFIG_SYSFS_DEPRECATED=y
170# CONFIG_RELAY is not set 150# CONFIG_RELAY is not set
171# CONFIG_BLK_DEV_INITRD is not set 151# CONFIG_BLK_DEV_INITRD is not set
172# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
173CONFIG_SYSCTL=y 152CONFIG_SYSCTL=y
174CONFIG_EMBEDDED=y 153CONFIG_EMBEDDED=y
175CONFIG_SYSCTL_SYSCALL=y 154CONFIG_SYSCTL_SYSCALL=y
@@ -181,23 +160,20 @@ CONFIG_BUG=y
181CONFIG_ELF_CORE=y 160CONFIG_ELF_CORE=y
182CONFIG_BASE_FULL=y 161CONFIG_BASE_FULL=y
183CONFIG_FUTEX=y 162CONFIG_FUTEX=y
163CONFIG_ANON_INODES=y
184CONFIG_EPOLL=y 164CONFIG_EPOLL=y
165CONFIG_SIGNALFD=y
166CONFIG_TIMERFD=y
167CONFIG_EVENTFD=y
185CONFIG_SHMEM=y 168CONFIG_SHMEM=y
186CONFIG_SLAB=y
187CONFIG_VM_EVENT_COUNTERS=y 169CONFIG_VM_EVENT_COUNTERS=y
170CONFIG_SLAB=y
171# CONFIG_SLUB is not set
172# CONFIG_SLOB is not set
188CONFIG_RT_MUTEXES=y 173CONFIG_RT_MUTEXES=y
189# CONFIG_TINY_SHMEM is not set 174# CONFIG_TINY_SHMEM is not set
190CONFIG_BASE_SMALL=0 175CONFIG_BASE_SMALL=0
191# CONFIG_SLOB is not set
192
193#
194# Loadable module support
195#
196# CONFIG_MODULES is not set 176# CONFIG_MODULES is not set
197
198#
199# Block layer
200#
201CONFIG_BLOCK=y 177CONFIG_BLOCK=y
202# CONFIG_LBD is not set 178# CONFIG_LBD is not set
203# CONFIG_BLK_DEV_IO_TRACE is not set 179# CONFIG_BLK_DEV_IO_TRACE is not set
@@ -221,6 +197,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
221# 197#
222CONFIG_HW_HAS_PCI=y 198CONFIG_HW_HAS_PCI=y
223CONFIG_PCI=y 199CONFIG_PCI=y
200# CONFIG_ARCH_SUPPORTS_MSI is not set
224CONFIG_MMU=y 201CONFIG_MMU=y
225 202
226# 203#
@@ -228,10 +205,6 @@ CONFIG_MMU=y
228# 205#
229 206
230# 207#
231# PCI Hotplug Support
232#
233
234#
235# Executable file formats 208# Executable file formats
236# 209#
237CONFIG_BINFMT_ELF=y 210CONFIG_BINFMT_ELF=y
@@ -251,7 +224,6 @@ CONFIG_NET=y
251# 224#
252# Networking options 225# Networking options
253# 226#
254# CONFIG_NETDEBUG is not set
255CONFIG_PACKET=y 227CONFIG_PACKET=y
256# CONFIG_PACKET_MMAP is not set 228# CONFIG_PACKET_MMAP is not set
257CONFIG_UNIX=y 229CONFIG_UNIX=y
@@ -266,7 +238,6 @@ CONFIG_IP_PNP_BOOTP=y
266# CONFIG_IP_PNP_RARP is not set 238# CONFIG_IP_PNP_RARP is not set
267# CONFIG_NET_IPIP is not set 239# CONFIG_NET_IPIP is not set
268# CONFIG_NET_IPGRE is not set 240# CONFIG_NET_IPGRE is not set
269# CONFIG_ARPD is not set
270# CONFIG_SYN_COOKIES is not set 241# CONFIG_SYN_COOKIES is not set
271# CONFIG_INET_AH is not set 242# CONFIG_INET_AH is not set
272# CONFIG_INET_ESP is not set 243# CONFIG_INET_ESP is not set
@@ -280,38 +251,17 @@ CONFIG_IP_PNP_BOOTP=y
280# CONFIG_TCP_CONG_ADVANCED is not set 251# CONFIG_TCP_CONG_ADVANCED is not set
281CONFIG_TCP_CONG_CUBIC=y 252CONFIG_TCP_CONG_CUBIC=y
282CONFIG_DEFAULT_TCP_CONG="cubic" 253CONFIG_DEFAULT_TCP_CONG="cubic"
283# CONFIG_TCP_MD5SIG is not set
284# CONFIG_IPV6 is not set 254# CONFIG_IPV6 is not set
285# CONFIG_INET6_XFRM_TUNNEL is not set 255# CONFIG_INET6_XFRM_TUNNEL is not set
286# CONFIG_INET6_TUNNEL is not set 256# CONFIG_INET6_TUNNEL is not set
287# CONFIG_NETWORK_SECMARK is not set 257# CONFIG_NETWORK_SECMARK is not set
288# CONFIG_NETFILTER is not set 258# CONFIG_NETFILTER is not set
289
290#
291# DCCP Configuration (EXPERIMENTAL)
292#
293# CONFIG_IP_DCCP is not set
294
295#
296# SCTP Configuration (EXPERIMENTAL)
297#
298# CONFIG_IP_SCTP is not set
299
300#
301# TIPC Configuration (EXPERIMENTAL)
302#
303# CONFIG_TIPC is not set
304# CONFIG_ATM is not set
305# CONFIG_BRIDGE is not set 259# CONFIG_BRIDGE is not set
306# CONFIG_VLAN_8021Q is not set 260# CONFIG_VLAN_8021Q is not set
307# CONFIG_DECNET is not set 261# CONFIG_DECNET is not set
308# CONFIG_LLC2 is not set 262# CONFIG_LLC2 is not set
309# CONFIG_IPX is not set 263# CONFIG_IPX is not set
310# CONFIG_ATALK is not set 264# CONFIG_ATALK is not set
311# CONFIG_X25 is not set
312# CONFIG_LAPB is not set
313# CONFIG_ECONET is not set
314# CONFIG_WAN_ROUTER is not set
315 265
316# 266#
317# QoS and/or fair queueing 267# QoS and/or fair queueing
@@ -325,7 +275,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
325# CONFIG_HAMRADIO is not set 275# CONFIG_HAMRADIO is not set
326# CONFIG_IRDA is not set 276# CONFIG_IRDA is not set
327# CONFIG_BT is not set 277# CONFIG_BT is not set
278
279#
280# Wireless
281#
282# CONFIG_CFG80211 is not set
283# CONFIG_WIRELESS_EXT is not set
328# CONFIG_IEEE80211 is not set 284# CONFIG_IEEE80211 is not set
285# CONFIG_RFKILL is not set
329 286
330# 287#
331# Device Drivers 288# Device Drivers
@@ -337,34 +294,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
337CONFIG_STANDALONE=y 294CONFIG_STANDALONE=y
338CONFIG_PREVENT_FIRMWARE_BUILD=y 295CONFIG_PREVENT_FIRMWARE_BUILD=y
339# CONFIG_SYS_HYPERVISOR is not set 296# CONFIG_SYS_HYPERVISOR is not set
340
341#
342# Connector - unified userspace <-> kernelspace linker
343#
344# CONFIG_CONNECTOR is not set 297# CONFIG_CONNECTOR is not set
345
346#
347# Memory Technology Devices (MTD)
348#
349# CONFIG_MTD is not set 298# CONFIG_MTD is not set
350
351#
352# Parallel port support
353#
354# CONFIG_PARPORT is not set 299# CONFIG_PARPORT is not set
355 300CONFIG_BLK_DEV=y
356#
357# Plug and Play support
358#
359# CONFIG_PNPACPI is not set
360
361#
362# Block devices
363#
364# CONFIG_BLK_CPQ_DA is not set 301# CONFIG_BLK_CPQ_DA is not set
365# CONFIG_BLK_CPQ_CISS_DA is not set 302# CONFIG_BLK_CPQ_CISS_DA is not set
366# CONFIG_BLK_DEV_DAC960 is not set 303# CONFIG_BLK_DEV_DAC960 is not set
367# CONFIG_BLK_DEV_UMEM is not set
368# CONFIG_BLK_DEV_COW_COMMON is not set 304# CONFIG_BLK_DEV_COW_COMMON is not set
369# CONFIG_BLK_DEV_LOOP is not set 305# CONFIG_BLK_DEV_LOOP is not set
370# CONFIG_BLK_DEV_NBD is not set 306# CONFIG_BLK_DEV_NBD is not set
@@ -372,16 +308,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
372# CONFIG_BLK_DEV_RAM is not set 308# CONFIG_BLK_DEV_RAM is not set
373# CONFIG_CDROM_PKTCDVD is not set 309# CONFIG_CDROM_PKTCDVD is not set
374# CONFIG_ATA_OVER_ETH is not set 310# CONFIG_ATA_OVER_ETH is not set
375 311# CONFIG_MISC_DEVICES is not set
376#
377# Misc devices
378#
379# CONFIG_SGI_IOC4 is not set
380# CONFIG_TIFM_CORE is not set
381
382#
383# ATA/ATAPI/MFM/RLL support
384#
385# CONFIG_IDE is not set 312# CONFIG_IDE is not set
386 313
387# 314#
@@ -389,16 +316,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
389# 316#
390# CONFIG_RAID_ATTRS is not set 317# CONFIG_RAID_ATTRS is not set
391# CONFIG_SCSI is not set 318# CONFIG_SCSI is not set
319# CONFIG_SCSI_DMA is not set
392# CONFIG_SCSI_NETLINK is not set 320# CONFIG_SCSI_NETLINK is not set
393
394#
395# Serial ATA (prod) and Parallel ATA (experimental) drivers
396#
397# CONFIG_ATA is not set 321# CONFIG_ATA is not set
398
399#
400# Multi-device support (RAID and LVM)
401#
402# CONFIG_MD is not set 322# CONFIG_MD is not set
403 323
404# 324#
@@ -409,46 +329,28 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
409# 329#
410# IEEE 1394 (FireWire) support 330# IEEE 1394 (FireWire) support
411# 331#
412# CONFIG_IEEE1394 is not set
413 332
414# 333#
415# I2O device support 334# An alternative FireWire stack is available with EXPERIMENTAL=y
416# 335#
336# CONFIG_IEEE1394 is not set
417# CONFIG_I2O is not set 337# CONFIG_I2O is not set
418
419#
420# Network device support
421#
422CONFIG_NETDEVICES=y 338CONFIG_NETDEVICES=y
339# CONFIG_NETDEVICES_MULTIQUEUE is not set
423# CONFIG_DUMMY is not set 340# CONFIG_DUMMY is not set
424# CONFIG_BONDING is not set 341# CONFIG_BONDING is not set
425# CONFIG_EQUALIZER is not set 342# CONFIG_EQUALIZER is not set
426# CONFIG_TUN is not set 343# CONFIG_TUN is not set
427
428#
429# ARCnet devices
430#
431# CONFIG_ARCNET is not set 344# CONFIG_ARCNET is not set
432
433#
434# PHY device support
435#
436# CONFIG_PHYLIB is not set 345# CONFIG_PHYLIB is not set
437
438#
439# Ethernet (10 or 100Mbit)
440#
441CONFIG_NET_ETHERNET=y 346CONFIG_NET_ETHERNET=y
442CONFIG_MII=y 347CONFIG_MII=y
348# CONFIG_AX88796 is not set
443# CONFIG_HAPPYMEAL is not set 349# CONFIG_HAPPYMEAL is not set
444# CONFIG_SUNGEM is not set 350# CONFIG_SUNGEM is not set
445# CONFIG_CASSINI is not set 351# CONFIG_CASSINI is not set
446# CONFIG_NET_VENDOR_3COM is not set 352# CONFIG_NET_VENDOR_3COM is not set
447# CONFIG_DM9000 is not set 353# CONFIG_DM9000 is not set
448
449#
450# Tulip family network device support
451#
452# CONFIG_NET_TULIP is not set 354# CONFIG_NET_TULIP is not set
453# CONFIG_HP100 is not set 355# CONFIG_HP100 is not set
454CONFIG_NET_PCI=y 356CONFIG_NET_PCI=y
@@ -464,76 +366,28 @@ CONFIG_TC35815=y
464# CONFIG_FEALNX is not set 366# CONFIG_FEALNX is not set
465# CONFIG_NATSEMI is not set 367# CONFIG_NATSEMI is not set
466# CONFIG_NE2K_PCI is not set 368# CONFIG_NE2K_PCI is not set
467# CONFIG_8139CP is not set
468# CONFIG_8139TOO is not set 369# CONFIG_8139TOO is not set
469# CONFIG_SIS900 is not set 370# CONFIG_SIS900 is not set
470# CONFIG_EPIC100 is not set 371# CONFIG_EPIC100 is not set
471# CONFIG_SUNDANCE is not set 372# CONFIG_SUNDANCE is not set
472# CONFIG_TLAN is not set 373# CONFIG_TLAN is not set
473# CONFIG_VIA_RHINE is not set 374# CONFIG_VIA_RHINE is not set
474# CONFIG_SC92031 is not set 375# CONFIG_NETDEV_1000 is not set
475 376# CONFIG_NETDEV_10000 is not set
476#
477# Ethernet (1000 Mbit)
478#
479# CONFIG_ACENIC is not set
480# CONFIG_DL2K is not set
481# CONFIG_E1000 is not set
482# CONFIG_NS83820 is not set
483# CONFIG_HAMACHI is not set
484# CONFIG_YELLOWFIN is not set
485# CONFIG_R8169 is not set
486# CONFIG_SIS190 is not set
487# CONFIG_SKGE is not set
488# CONFIG_SKY2 is not set
489# CONFIG_SK98LIN is not set
490# CONFIG_VIA_VELOCITY is not set
491# CONFIG_TIGON3 is not set
492# CONFIG_BNX2 is not set
493# CONFIG_QLA3XXX is not set
494# CONFIG_ATL1 is not set
495
496#
497# Ethernet (10000 Mbit)
498#
499# CONFIG_CHELSIO_T1 is not set
500# CONFIG_CHELSIO_T3 is not set
501# CONFIG_IXGB is not set
502# CONFIG_S2IO is not set
503# CONFIG_MYRI10GE is not set
504# CONFIG_NETXEN_NIC is not set
505
506#
507# Token Ring devices
508#
509# CONFIG_TR is not set 377# CONFIG_TR is not set
510 378
511# 379#
512# Wireless LAN (non-hamradio) 380# Wireless LAN
513#
514# CONFIG_NET_RADIO is not set
515
516#
517# Wan interfaces
518# 381#
382# CONFIG_WLAN_PRE80211 is not set
383# CONFIG_WLAN_80211 is not set
519# CONFIG_WAN is not set 384# CONFIG_WAN is not set
520# CONFIG_FDDI is not set 385# CONFIG_FDDI is not set
521# CONFIG_HIPPI is not set
522# CONFIG_PPP is not set 386# CONFIG_PPP is not set
523# CONFIG_SLIP is not set 387# CONFIG_SLIP is not set
524# CONFIG_SHAPER is not set
525# CONFIG_NETCONSOLE is not set
526# CONFIG_NETPOLL is not set 388# CONFIG_NETPOLL is not set
527# CONFIG_NET_POLL_CONTROLLER is not set 389# CONFIG_NET_POLL_CONTROLLER is not set
528
529#
530# ISDN subsystem
531#
532# CONFIG_ISDN is not set 390# CONFIG_ISDN is not set
533
534#
535# Telephony Support
536#
537# CONFIG_PHONE is not set 391# CONFIG_PHONE is not set
538 392
539# 393#
@@ -541,6 +395,7 @@ CONFIG_TC35815=y
541# 395#
542CONFIG_INPUT=y 396CONFIG_INPUT=y
543# CONFIG_INPUT_FF_MEMLESS is not set 397# CONFIG_INPUT_FF_MEMLESS is not set
398# CONFIG_INPUT_POLLDEV is not set
544 399
545# 400#
546# Userland interfaces 401# Userland interfaces
@@ -557,6 +412,7 @@ CONFIG_INPUT=y
557# CONFIG_INPUT_KEYBOARD is not set 412# CONFIG_INPUT_KEYBOARD is not set
558# CONFIG_INPUT_MOUSE is not set 413# CONFIG_INPUT_MOUSE is not set
559# CONFIG_INPUT_JOYSTICK is not set 414# CONFIG_INPUT_JOYSTICK is not set
415# CONFIG_INPUT_TABLET is not set
560# CONFIG_INPUT_TOUCHSCREEN is not set 416# CONFIG_INPUT_TOUCHSCREEN is not set
561# CONFIG_INPUT_MISC is not set 417# CONFIG_INPUT_MISC is not set
562 418
@@ -607,33 +463,15 @@ CONFIG_SERIAL_TXX9_STDSERIAL=y
607# CONFIG_UNIX98_PTYS is not set 463# CONFIG_UNIX98_PTYS is not set
608CONFIG_LEGACY_PTYS=y 464CONFIG_LEGACY_PTYS=y
609CONFIG_LEGACY_PTY_COUNT=256 465CONFIG_LEGACY_PTY_COUNT=256
610
611#
612# IPMI
613#
614# CONFIG_IPMI_HANDLER is not set 466# CONFIG_IPMI_HANDLER is not set
615
616#
617# Watchdog Cards
618#
619# CONFIG_WATCHDOG is not set 467# CONFIG_WATCHDOG is not set
620# CONFIG_HW_RANDOM is not set 468# CONFIG_HW_RANDOM is not set
621# CONFIG_RTC is not set 469# CONFIG_RTC is not set
622# CONFIG_GEN_RTC is not set
623# CONFIG_DTLK is not set
624# CONFIG_R3964 is not set 470# CONFIG_R3964 is not set
625# CONFIG_APPLICOM is not set 471# CONFIG_APPLICOM is not set
626# CONFIG_DRM is not set 472# CONFIG_DRM is not set
627# CONFIG_RAW_DRIVER is not set 473# CONFIG_RAW_DRIVER is not set
628 474CONFIG_DEVPORT=y
629#
630# TPM devices
631#
632# CONFIG_TCG_TPM is not set
633
634#
635# I2C support
636#
637# CONFIG_I2C is not set 475# CONFIG_I2C is not set
638 476
639# 477#
@@ -641,17 +479,9 @@ CONFIG_LEGACY_PTY_COUNT=256
641# 479#
642# CONFIG_SPI is not set 480# CONFIG_SPI is not set
643# CONFIG_SPI_MASTER is not set 481# CONFIG_SPI_MASTER is not set
644
645#
646# Dallas's 1-wire bus
647#
648# CONFIG_W1 is not set 482# CONFIG_W1 is not set
649 483# CONFIG_POWER_SUPPLY is not set
650#
651# Hardware Monitoring support
652#
653# CONFIG_HWMON is not set 484# CONFIG_HWMON is not set
654# CONFIG_HWMON_VID is not set
655 485
656# 486#
657# Multifunction device drivers 487# Multifunction device drivers
@@ -662,75 +492,31 @@ CONFIG_LEGACY_PTY_COUNT=256
662# Multimedia devices 492# Multimedia devices
663# 493#
664# CONFIG_VIDEO_DEV is not set 494# CONFIG_VIDEO_DEV is not set
495# CONFIG_DVB_CORE is not set
496# CONFIG_DAB is not set
665 497
666# 498#
667# Digital Video Broadcasting Devices 499# Graphics support
668# 500#
669# CONFIG_DVB is not set 501# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
670 502
671# 503#
672# Graphics support 504# Display device support
673# 505#
674# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 506# CONFIG_DISPLAY_SUPPORT is not set
507# CONFIG_VGASTATE is not set
508# CONFIG_VIDEO_OUTPUT_CONTROL is not set
675# CONFIG_FB is not set 509# CONFIG_FB is not set
676 510
677# 511#
678# Sound 512# Sound
679# 513#
680# CONFIG_SOUND is not set 514# CONFIG_SOUND is not set
681 515# CONFIG_HID_SUPPORT is not set
682# 516# CONFIG_USB_SUPPORT is not set
683# HID Devices
684#
685# CONFIG_HID is not set
686
687#
688# USB support
689#
690CONFIG_USB_ARCH_HAS_HCD=y
691CONFIG_USB_ARCH_HAS_OHCI=y
692CONFIG_USB_ARCH_HAS_EHCI=y
693# CONFIG_USB is not set
694
695#
696# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
697#
698
699#
700# USB Gadget Support
701#
702# CONFIG_USB_GADGET is not set
703
704#
705# MMC/SD Card support
706#
707# CONFIG_MMC is not set 517# CONFIG_MMC is not set
708
709#
710# LED devices
711#
712# CONFIG_NEW_LEDS is not set 518# CONFIG_NEW_LEDS is not set
713
714#
715# LED drivers
716#
717
718#
719# LED Triggers
720#
721
722#
723# InfiniBand support
724#
725# CONFIG_INFINIBAND is not set 519# CONFIG_INFINIBAND is not set
726
727#
728# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
729#
730
731#
732# Real Time Clock
733#
734CONFIG_RTC_LIB=y 520CONFIG_RTC_LIB=y
735CONFIG_RTC_CLASS=y 521CONFIG_RTC_CLASS=y
736CONFIG_RTC_HCTOSYS=y 522CONFIG_RTC_HCTOSYS=y
@@ -744,17 +530,28 @@ CONFIG_RTC_INTF_SYSFS=y
744CONFIG_RTC_INTF_PROC=y 530CONFIG_RTC_INTF_PROC=y
745CONFIG_RTC_INTF_DEV=y 531CONFIG_RTC_INTF_DEV=y
746# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set 532# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
533# CONFIG_RTC_DRV_TEST is not set
534
535#
536# SPI RTC drivers
537#
747 538
748# 539#
749# RTC drivers 540# Platform RTC drivers
750# 541#
542# CONFIG_RTC_DRV_CMOS is not set
751# CONFIG_RTC_DRV_DS1553 is not set 543# CONFIG_RTC_DRV_DS1553 is not set
544# CONFIG_RTC_DRV_STK17TA8 is not set
752CONFIG_RTC_DRV_DS1742=y 545CONFIG_RTC_DRV_DS1742=y
753# CONFIG_RTC_DRV_M48T86 is not set 546# CONFIG_RTC_DRV_M48T86 is not set
754# CONFIG_RTC_DRV_TEST is not set 547# CONFIG_RTC_DRV_M48T59 is not set
755# CONFIG_RTC_DRV_V3020 is not set 548# CONFIG_RTC_DRV_V3020 is not set
756 549
757# 550#
551# on-CPU RTC drivers
552#
553
554#
758# DMA Engine support 555# DMA Engine support
759# 556#
760# CONFIG_DMA_ENGINE is not set 557# CONFIG_DMA_ENGINE is not set
@@ -768,24 +565,19 @@ CONFIG_RTC_DRV_DS1742=y
768# 565#
769 566
770# 567#
771# Auxiliary Display support 568# Userspace I/O
772#
773
774#
775# Virtualization
776# 569#
570# CONFIG_UIO is not set
777 571
778# 572#
779# File systems 573# File systems
780# 574#
781# CONFIG_EXT2_FS is not set 575# CONFIG_EXT2_FS is not set
782# CONFIG_EXT3_FS is not set 576# CONFIG_EXT3_FS is not set
783# CONFIG_EXT4DEV_FS is not set
784# CONFIG_REISERFS_FS is not set 577# CONFIG_REISERFS_FS is not set
785# CONFIG_JFS_FS is not set 578# CONFIG_JFS_FS is not set
786# CONFIG_FS_POSIX_ACL is not set 579# CONFIG_FS_POSIX_ACL is not set
787# CONFIG_XFS_FS is not set 580# CONFIG_XFS_FS is not set
788# CONFIG_GFS2_FS is not set
789# CONFIG_OCFS2_FS is not set 581# CONFIG_OCFS2_FS is not set
790# CONFIG_MINIX_FS is not set 582# CONFIG_MINIX_FS is not set
791# CONFIG_ROMFS_FS is not set 583# CONFIG_ROMFS_FS is not set
@@ -820,18 +612,11 @@ CONFIG_SYSFS=y
820# CONFIG_TMPFS is not set 612# CONFIG_TMPFS is not set
821# CONFIG_HUGETLB_PAGE is not set 613# CONFIG_HUGETLB_PAGE is not set
822CONFIG_RAMFS=y 614CONFIG_RAMFS=y
823# CONFIG_CONFIGFS_FS is not set
824 615
825# 616#
826# Miscellaneous filesystems 617# Miscellaneous filesystems
827# 618#
828# CONFIG_ADFS_FS is not set
829# CONFIG_AFFS_FS is not set
830# CONFIG_HFS_FS is not set
831# CONFIG_HFSPLUS_FS is not set 619# CONFIG_HFSPLUS_FS is not set
832# CONFIG_BEFS_FS is not set
833# CONFIG_BFS_FS is not set
834# CONFIG_EFS_FS is not set
835# CONFIG_CRAMFS is not set 620# CONFIG_CRAMFS is not set
836# CONFIG_VXFS_FS is not set 621# CONFIG_VXFS_FS is not set
837# CONFIG_HPFS_FS is not set 622# CONFIG_HPFS_FS is not set
@@ -844,21 +629,16 @@ CONFIG_RAMFS=y
844# 629#
845CONFIG_NFS_FS=y 630CONFIG_NFS_FS=y
846# CONFIG_NFS_V3 is not set 631# CONFIG_NFS_V3 is not set
847# CONFIG_NFS_V4 is not set
848# CONFIG_NFS_DIRECTIO is not set 632# CONFIG_NFS_DIRECTIO is not set
849# CONFIG_NFSD is not set 633# CONFIG_NFSD is not set
850CONFIG_ROOT_NFS=y 634CONFIG_ROOT_NFS=y
851CONFIG_LOCKD=y 635CONFIG_LOCKD=y
852CONFIG_NFS_COMMON=y 636CONFIG_NFS_COMMON=y
853CONFIG_SUNRPC=y 637CONFIG_SUNRPC=y
854# CONFIG_RPCSEC_GSS_KRB5 is not set
855# CONFIG_RPCSEC_GSS_SPKM3 is not set
856# CONFIG_SMB_FS is not set 638# CONFIG_SMB_FS is not set
857# CONFIG_CIFS is not set 639# CONFIG_CIFS is not set
858# CONFIG_NCP_FS is not set 640# CONFIG_NCP_FS is not set
859# CONFIG_CODA_FS is not set 641# CONFIG_CODA_FS is not set
860# CONFIG_AFS_FS is not set
861# CONFIG_9P_FS is not set
862 642
863# 643#
864# Partition Types 644# Partition Types
@@ -872,16 +652,6 @@ CONFIG_MSDOS_PARTITION=y
872# CONFIG_NLS is not set 652# CONFIG_NLS is not set
873 653
874# 654#
875# Distributed Lock Manager
876#
877# CONFIG_DLM is not set
878
879#
880# Profiling support
881#
882# CONFIG_PROFILING is not set
883
884#
885# Kernel hacking 655# Kernel hacking
886# 656#
887CONFIG_TRACE_IRQFLAGS_SUPPORT=y 657CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -892,7 +662,6 @@ CONFIG_ENABLE_MUST_CHECK=y
892# CONFIG_DEBUG_FS is not set 662# CONFIG_DEBUG_FS is not set
893# CONFIG_HEADERS_CHECK is not set 663# CONFIG_HEADERS_CHECK is not set
894# CONFIG_DEBUG_KERNEL is not set 664# CONFIG_DEBUG_KERNEL is not set
895CONFIG_LOG_BUF_SHIFT=14
896CONFIG_CROSSCOMPILE=y 665CONFIG_CROSSCOMPILE=y
897CONFIG_CMDLINE="" 666CONFIG_CMDLINE=""
898 667
@@ -901,10 +670,6 @@ CONFIG_CMDLINE=""
901# 670#
902# CONFIG_KEYS is not set 671# CONFIG_KEYS is not set
903# CONFIG_SECURITY is not set 672# CONFIG_SECURITY is not set
904
905#
906# Cryptographic options
907#
908# CONFIG_CRYPTO is not set 673# CONFIG_CRYPTO is not set
909 674
910# 675#
@@ -913,8 +678,11 @@ CONFIG_CMDLINE=""
913CONFIG_BITREVERSE=y 678CONFIG_BITREVERSE=y
914# CONFIG_CRC_CCITT is not set 679# CONFIG_CRC_CCITT is not set
915# CONFIG_CRC16 is not set 680# CONFIG_CRC16 is not set
681# CONFIG_CRC_ITU_T is not set
916CONFIG_CRC32=y 682CONFIG_CRC32=y
683# CONFIG_CRC7 is not set
917# CONFIG_LIBCRC32C is not set 684# CONFIG_LIBCRC32C is not set
918CONFIG_PLIST=y 685CONFIG_PLIST=y
919CONFIG_HAS_IOMEM=y 686CONFIG_HAS_IOMEM=y
920CONFIG_HAS_IOPORT=y 687CONFIG_HAS_IOPORT=y
688CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/malta_defconfig b/arch/mips/configs/malta_defconfig
index fbfa5685887c..fbd2d802fdfd 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.20 3# Linux kernel version: 2.6.23-rc2
4# Sun Feb 18 21:27:55 2007 4# Tue Aug 7 12:59:29 2007
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -9,52 +9,40 @@ CONFIG_MIPS=y
9# Machine selection 9# Machine selection
10# 10#
11CONFIG_ZONE_DMA=y 11CONFIG_ZONE_DMA=y
12# CONFIG_MIPS_MTX1 is not set 12# CONFIG_MACH_ALCHEMY 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 13# CONFIG_BASLER_EXCITE 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_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 18# CONFIG_MIPS_ATLAS is not set
30CONFIG_MIPS_MALTA=y 19CONFIG_MIPS_MALTA=y
31# CONFIG_MIPS_SEAD is not set 20# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 21# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 22# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 23# CONFIG_MACH_VR41XX is not set
36# CONFIG_PNX8550_JBS is not set 24# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 25# CONFIG_PNX8550_STB810 is not set
38# CONFIG_MACH_VR41XX is not set 26# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 27# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 28# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42# CONFIG_SGI_IP22 is not set 29# CONFIG_SGI_IP22 is not set
43# CONFIG_SGI_IP27 is not set 30# CONFIG_SGI_IP27 is not set
44# CONFIG_SGI_IP32 is not set 31# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 32# CONFIG_SIBYTE_CRHINE is not set
33# CONFIG_SIBYTE_CARMEL is not set
34# CONFIG_SIBYTE_CRHONE is not set
35# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 36# CONFIG_SIBYTE_SWARM is not set
37# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 38# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 39# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 40# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 41# CONFIG_SNI_RM is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 42# CONFIG_TOSHIBA_JMR3927 is not set
56# CONFIG_TOSHIBA_RBTX4927 is not set 43# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 44# CONFIG_TOSHIBA_RBTX4938 is not set
45# CONFIG_WR_PPMC is not set
58CONFIG_RWSEM_GENERIC_SPINLOCK=y 46CONFIG_RWSEM_GENERIC_SPINLOCK=y
59# CONFIG_ARCH_HAS_ILOG2_U32 is not set 47# CONFIG_ARCH_HAS_ILOG2_U32 is not set
60# CONFIG_ARCH_HAS_ILOG2_U64 is not set 48# CONFIG_ARCH_HAS_ILOG2_U64 is not set
@@ -67,25 +55,28 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
67CONFIG_ARCH_MAY_HAVE_PC_FDC=y 55CONFIG_ARCH_MAY_HAVE_PC_FDC=y
68CONFIG_DMA_NONCOHERENT=y 56CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 57CONFIG_DMA_NEED_PCI_MAP_STATE=y
58CONFIG_EARLY_PRINTK=y
59CONFIG_SYS_HAS_EARLY_PRINTK=y
70CONFIG_GENERIC_ISA_DMA=y 60CONFIG_GENERIC_ISA_DMA=y
71CONFIG_I8259=y 61CONFIG_I8259=y
72CONFIG_MIPS_BONITO64=y 62CONFIG_MIPS_BONITO64=y
73CONFIG_MIPS_MSC=y 63CONFIG_MIPS_MSC=y
64# CONFIG_NO_IOPORT is not set
74# CONFIG_CPU_BIG_ENDIAN is not set 65# CONFIG_CPU_BIG_ENDIAN is not set
75CONFIG_CPU_LITTLE_ENDIAN=y 66CONFIG_CPU_LITTLE_ENDIAN=y
76CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 67CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
77CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 68CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
78CONFIG_IRQ_CPU=y 69CONFIG_IRQ_CPU=y
79CONFIG_MIPS_BOARDS_GEN=y 70CONFIG_MIPS_BOARDS_GEN=y
80CONFIG_MIPS_GT64120=y 71CONFIG_PCI_GT64XXX_PCI0=y
81CONFIG_SWAP_IO_SPACE=y 72CONFIG_SWAP_IO_SPACE=y
82CONFIG_BOOT_ELF32=y 73CONFIG_BOOT_ELF32=y
83CONFIG_MIPS_L1_CACHE_SHIFT=5 74CONFIG_MIPS_L1_CACHE_SHIFT=5
84CONFIG_HAVE_STD_PC_SERIAL_PORT=y
85 75
86# 76#
87# CPU selection 77# CPU selection
88# 78#
79# CONFIG_CPU_LOONGSON2 is not set
89# CONFIG_CPU_MIPS32_R1 is not set 80# CONFIG_CPU_MIPS32_R1 is not set
90CONFIG_CPU_MIPS32_R2=y 81CONFIG_CPU_MIPS32_R2=y
91# CONFIG_CPU_MIPS64_R1 is not set 82# CONFIG_CPU_MIPS64_R1 is not set
@@ -131,14 +122,14 @@ CONFIG_CPU_HAS_PREFETCH=y
131# CONFIG_MIPS_MT_DISABLED is not set 122# CONFIG_MIPS_MT_DISABLED is not set
132CONFIG_MIPS_MT_SMP=y 123CONFIG_MIPS_MT_SMP=y
133# CONFIG_MIPS_MT_SMTC is not set 124# CONFIG_MIPS_MT_SMTC is not set
134# CONFIG_MIPS_VPE_LOADER is not set
135CONFIG_MIPS_MT=y 125CONFIG_MIPS_MT=y
136CONFIG_SYS_SUPPORTS_MULTITHREADING=y 126CONFIG_SYS_SUPPORTS_MULTITHREADING=y
137CONFIG_MIPS_MT_FPAFF=y 127CONFIG_MIPS_MT_FPAFF=y
138# CONFIG_64BIT_PHYS_ADDR is not set 128# CONFIG_MIPS_VPE_LOADER is not set
139CONFIG_CPU_HAS_LLSC=y 129CONFIG_CPU_HAS_LLSC=y
140# CONFIG_CPU_HAS_SMARTMIPS is not set 130# CONFIG_CPU_HAS_SMARTMIPS is not set
141CONFIG_CPU_MIPSR2_IRQ_VI=y 131CONFIG_CPU_MIPSR2_IRQ_VI=y
132CONFIG_CPU_MIPSR2_IRQ_EI=y
142CONFIG_CPU_MIPSR2_SRS=y 133CONFIG_CPU_MIPSR2_SRS=y
143CONFIG_CPU_HAS_SYNC=y 134CONFIG_CPU_HAS_SYNC=y
144CONFIG_GENERIC_HARDIRQS=y 135CONFIG_GENERIC_HARDIRQS=y
@@ -157,8 +148,11 @@ CONFIG_FLAT_NODE_MEM_MAP=y
157CONFIG_SPLIT_PTLOCK_CPUS=4 148CONFIG_SPLIT_PTLOCK_CPUS=4
158# CONFIG_RESOURCES_64BIT is not set 149# CONFIG_RESOURCES_64BIT is not set
159CONFIG_ZONE_DMA_FLAG=1 150CONFIG_ZONE_DMA_FLAG=1
151CONFIG_BOUNCE=y
152CONFIG_VIRT_TO_BUS=y
160CONFIG_SMP=y 153CONFIG_SMP=y
161CONFIG_SYS_SUPPORTS_SMP=y 154CONFIG_SYS_SUPPORTS_SMP=y
155CONFIG_NR_CPUS_DEFAULT_2=y
162CONFIG_NR_CPUS=2 156CONFIG_NR_CPUS=2
163# CONFIG_HZ_48 is not set 157# CONFIG_HZ_48 is not set
164CONFIG_HZ_100=y 158CONFIG_HZ_100=y
@@ -174,35 +168,33 @@ CONFIG_PREEMPT_NONE=y
174# CONFIG_PREEMPT is not set 168# CONFIG_PREEMPT is not set
175CONFIG_PREEMPT_BKL=y 169CONFIG_PREEMPT_BKL=y
176# CONFIG_KEXEC is not set 170# CONFIG_KEXEC is not set
171CONFIG_SECCOMP=y
177CONFIG_LOCKDEP_SUPPORT=y 172CONFIG_LOCKDEP_SUPPORT=y
178CONFIG_STACKTRACE_SUPPORT=y 173CONFIG_STACKTRACE_SUPPORT=y
179CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 174CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
180 175
181# 176#
182# Code maturity level options 177# General setup
183# 178#
184CONFIG_EXPERIMENTAL=y 179CONFIG_EXPERIMENTAL=y
185CONFIG_LOCK_KERNEL=y 180CONFIG_LOCK_KERNEL=y
186CONFIG_INIT_ENV_ARG_LIMIT=32 181CONFIG_INIT_ENV_ARG_LIMIT=32
187
188#
189# General setup
190#
191CONFIG_LOCALVERSION="" 182CONFIG_LOCALVERSION=""
192CONFIG_LOCALVERSION_AUTO=y 183CONFIG_LOCALVERSION_AUTO=y
193CONFIG_SWAP=y 184CONFIG_SWAP=y
194CONFIG_SYSVIPC=y 185CONFIG_SYSVIPC=y
195# CONFIG_IPC_NS is not set
196CONFIG_SYSVIPC_SYSCTL=y 186CONFIG_SYSVIPC_SYSCTL=y
197# CONFIG_POSIX_MQUEUE is not set 187# CONFIG_POSIX_MQUEUE is not set
198# CONFIG_BSD_PROCESS_ACCT is not set 188# CONFIG_BSD_PROCESS_ACCT is not set
199# CONFIG_TASKSTATS is not set 189# CONFIG_TASKSTATS is not set
200# CONFIG_UTS_NS is not set 190# CONFIG_USER_NS is not set
201# CONFIG_AUDIT is not set 191# CONFIG_AUDIT is not set
202# CONFIG_IKCONFIG is not set 192# CONFIG_IKCONFIG is not set
193CONFIG_LOG_BUF_SHIFT=15
203# CONFIG_CPUSETS is not set 194# CONFIG_CPUSETS is not set
204CONFIG_SYSFS_DEPRECATED=y 195CONFIG_SYSFS_DEPRECATED=y
205CONFIG_RELAY=y 196CONFIG_RELAY=y
197# CONFIG_BLK_DEV_INITRD is not set
206# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 198# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
207CONFIG_SYSCTL=y 199CONFIG_SYSCTL=y
208CONFIG_EMBEDDED=y 200CONFIG_EMBEDDED=y
@@ -215,18 +207,19 @@ CONFIG_BUG=y
215CONFIG_ELF_CORE=y 207CONFIG_ELF_CORE=y
216CONFIG_BASE_FULL=y 208CONFIG_BASE_FULL=y
217CONFIG_FUTEX=y 209CONFIG_FUTEX=y
210CONFIG_ANON_INODES=y
218CONFIG_EPOLL=y 211CONFIG_EPOLL=y
212CONFIG_SIGNALFD=y
213CONFIG_TIMERFD=y
214CONFIG_EVENTFD=y
219CONFIG_SHMEM=y 215CONFIG_SHMEM=y
220CONFIG_SLAB=y
221CONFIG_VM_EVENT_COUNTERS=y 216CONFIG_VM_EVENT_COUNTERS=y
217CONFIG_SLAB=y
218# CONFIG_SLUB is not set
219# CONFIG_SLOB is not set
222CONFIG_RT_MUTEXES=y 220CONFIG_RT_MUTEXES=y
223# CONFIG_TINY_SHMEM is not set 221# CONFIG_TINY_SHMEM is not set
224CONFIG_BASE_SMALL=0 222CONFIG_BASE_SMALL=0
225# CONFIG_SLOB is not set
226
227#
228# Loadable module support
229#
230CONFIG_MODULES=y 223CONFIG_MODULES=y
231CONFIG_MODULE_UNLOAD=y 224CONFIG_MODULE_UNLOAD=y
232# CONFIG_MODULE_FORCE_UNLOAD is not set 225# CONFIG_MODULE_FORCE_UNLOAD is not set
@@ -234,14 +227,11 @@ CONFIG_MODVERSIONS=y
234CONFIG_MODULE_SRCVERSION_ALL=y 227CONFIG_MODULE_SRCVERSION_ALL=y
235CONFIG_KMOD=y 228CONFIG_KMOD=y
236CONFIG_STOP_MACHINE=y 229CONFIG_STOP_MACHINE=y
237
238#
239# Block layer
240#
241CONFIG_BLOCK=y 230CONFIG_BLOCK=y
242# CONFIG_LBD is not set 231# CONFIG_LBD is not set
243# CONFIG_BLK_DEV_IO_TRACE is not set 232# CONFIG_BLK_DEV_IO_TRACE is not set
244# CONFIG_LSF is not set 233# CONFIG_LSF is not set
234# CONFIG_BLK_DEV_BSG is not set
245 235
246# 236#
247# IO Schedulers 237# IO Schedulers
@@ -261,16 +251,13 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
261# 251#
262CONFIG_HW_HAS_PCI=y 252CONFIG_HW_HAS_PCI=y
263CONFIG_PCI=y 253CONFIG_PCI=y
254# CONFIG_ARCH_SUPPORTS_MSI is not set
264CONFIG_MMU=y 255CONFIG_MMU=y
265 256
266# 257#
267# PCCARD (PCMCIA/CardBus) support 258# PCCARD (PCMCIA/CardBus) support
268# 259#
269# CONFIG_PCCARD is not set 260# CONFIG_PCCARD is not set
270
271#
272# PCI Hotplug Support
273#
274# CONFIG_HOTPLUG_PCI is not set 261# CONFIG_HOTPLUG_PCI is not set
275 262
276# 263#
@@ -286,7 +273,6 @@ CONFIG_TRAD_SIGNALS=y
286CONFIG_PM=y 273CONFIG_PM=y
287# CONFIG_PM_LEGACY is not set 274# CONFIG_PM_LEGACY is not set
288# CONFIG_PM_DEBUG is not set 275# CONFIG_PM_DEBUG is not set
289# CONFIG_PM_SYSFS_DEPRECATED is not set
290 276
291# 277#
292# Networking 278# Networking
@@ -296,7 +282,6 @@ CONFIG_NET=y
296# 282#
297# Networking options 283# Networking options
298# 284#
299# CONFIG_NETDEBUG is not set
300CONFIG_PACKET=y 285CONFIG_PACKET=y
301CONFIG_PACKET_MMAP=y 286CONFIG_PACKET_MMAP=y
302CONFIG_UNIX=y 287CONFIG_UNIX=y
@@ -314,7 +299,6 @@ CONFIG_ASK_IP_FIB_HASH=y
314CONFIG_IP_FIB_HASH=y 299CONFIG_IP_FIB_HASH=y
315CONFIG_IP_MULTIPLE_TABLES=y 300CONFIG_IP_MULTIPLE_TABLES=y
316CONFIG_IP_ROUTE_MULTIPATH=y 301CONFIG_IP_ROUTE_MULTIPATH=y
317# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
318CONFIG_IP_ROUTE_VERBOSE=y 302CONFIG_IP_ROUTE_VERBOSE=y
319CONFIG_IP_PNP=y 303CONFIG_IP_PNP=y
320CONFIG_IP_PNP_DHCP=y 304CONFIG_IP_PNP_DHCP=y
@@ -342,10 +326,6 @@ CONFIG_INET_TCP_DIAG=y
342CONFIG_TCP_CONG_CUBIC=y 326CONFIG_TCP_CONG_CUBIC=y
343CONFIG_DEFAULT_TCP_CONG="cubic" 327CONFIG_DEFAULT_TCP_CONG="cubic"
344CONFIG_TCP_MD5SIG=y 328CONFIG_TCP_MD5SIG=y
345
346#
347# IP: Virtual Server Configuration
348#
349CONFIG_IP_VS=m 329CONFIG_IP_VS=m
350# CONFIG_IP_VS_DEBUG is not set 330# CONFIG_IP_VS_DEBUG is not set
351CONFIG_IP_VS_TAB_BITS=12 331CONFIG_IP_VS_TAB_BITS=12
@@ -380,6 +360,7 @@ CONFIG_IPV6=m
380CONFIG_IPV6_PRIVACY=y 360CONFIG_IPV6_PRIVACY=y
381CONFIG_IPV6_ROUTER_PREF=y 361CONFIG_IPV6_ROUTER_PREF=y
382CONFIG_IPV6_ROUTE_INFO=y 362CONFIG_IPV6_ROUTE_INFO=y
363CONFIG_IPV6_OPTIMISTIC_DAD=y
383CONFIG_INET6_AH=m 364CONFIG_INET6_AH=m
384CONFIG_INET6_ESP=m 365CONFIG_INET6_ESP=m
385CONFIG_INET6_IPCOMP=m 366CONFIG_INET6_IPCOMP=m
@@ -405,8 +386,6 @@ CONFIG_NETFILTER_NETLINK=m
405CONFIG_NETFILTER_NETLINK_QUEUE=m 386CONFIG_NETFILTER_NETLINK_QUEUE=m
406CONFIG_NETFILTER_NETLINK_LOG=m 387CONFIG_NETFILTER_NETLINK_LOG=m
407CONFIG_NF_CONNTRACK_ENABLED=m 388CONFIG_NF_CONNTRACK_ENABLED=m
408CONFIG_NF_CONNTRACK_SUPPORT=y
409# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
410CONFIG_NF_CONNTRACK=m 389CONFIG_NF_CONNTRACK=m
411CONFIG_NF_CT_ACCT=y 390CONFIG_NF_CT_ACCT=y
412CONFIG_NF_CONNTRACK_MARK=y 391CONFIG_NF_CONNTRACK_MARK=y
@@ -414,6 +393,7 @@ CONFIG_NF_CONNTRACK_SECMARK=y
414CONFIG_NF_CONNTRACK_EVENTS=y 393CONFIG_NF_CONNTRACK_EVENTS=y
415CONFIG_NF_CT_PROTO_GRE=m 394CONFIG_NF_CT_PROTO_GRE=m
416CONFIG_NF_CT_PROTO_SCTP=m 395CONFIG_NF_CT_PROTO_SCTP=m
396CONFIG_NF_CT_PROTO_UDPLITE=m
417CONFIG_NF_CONNTRACK_AMANDA=m 397CONFIG_NF_CONNTRACK_AMANDA=m
418CONFIG_NF_CONNTRACK_FTP=m 398CONFIG_NF_CONNTRACK_FTP=m
419CONFIG_NF_CONNTRACK_H323=m 399CONFIG_NF_CONNTRACK_H323=m
@@ -432,11 +412,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
432CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 412CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
433CONFIG_NETFILTER_XT_TARGET_NFLOG=m 413CONFIG_NETFILTER_XT_TARGET_NFLOG=m
434CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 414CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
415CONFIG_NETFILTER_XT_TARGET_TRACE=m
435CONFIG_NETFILTER_XT_TARGET_SECMARK=m 416CONFIG_NETFILTER_XT_TARGET_SECMARK=m
436# CONFIG_NETFILTER_XT_TARGET_CONNSECMARK is not set 417# CONFIG_NETFILTER_XT_TARGET_CONNSECMARK is not set
437CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 418CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
438CONFIG_NETFILTER_XT_MATCH_COMMENT=m 419CONFIG_NETFILTER_XT_MATCH_COMMENT=m
439CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 420CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
421CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
440CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 422CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
441CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 423CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
442CONFIG_NETFILTER_XT_MATCH_DCCP=m 424CONFIG_NETFILTER_XT_MATCH_DCCP=m
@@ -458,6 +440,7 @@ CONFIG_NETFILTER_XT_MATCH_STATE=m
458CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 440CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
459CONFIG_NETFILTER_XT_MATCH_STRING=m 441CONFIG_NETFILTER_XT_MATCH_STRING=m
460CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 442CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
443CONFIG_NETFILTER_XT_MATCH_U32=m
461CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 444CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
462 445
463# 446#
@@ -549,25 +532,13 @@ CONFIG_BRIDGE_EBT_REDIRECT=m
549CONFIG_BRIDGE_EBT_SNAT=m 532CONFIG_BRIDGE_EBT_SNAT=m
550CONFIG_BRIDGE_EBT_LOG=m 533CONFIG_BRIDGE_EBT_LOG=m
551CONFIG_BRIDGE_EBT_ULOG=m 534CONFIG_BRIDGE_EBT_ULOG=m
552
553#
554# DCCP Configuration (EXPERIMENTAL)
555#
556# CONFIG_IP_DCCP is not set 535# CONFIG_IP_DCCP is not set
557
558#
559# SCTP Configuration (EXPERIMENTAL)
560#
561CONFIG_IP_SCTP=m 536CONFIG_IP_SCTP=m
562# CONFIG_SCTP_DBG_MSG is not set 537# CONFIG_SCTP_DBG_MSG is not set
563# CONFIG_SCTP_DBG_OBJCNT is not set 538# CONFIG_SCTP_DBG_OBJCNT is not set
564# CONFIG_SCTP_HMAC_NONE is not set 539# CONFIG_SCTP_HMAC_NONE is not set
565# CONFIG_SCTP_HMAC_SHA1 is not set 540# CONFIG_SCTP_HMAC_SHA1 is not set
566CONFIG_SCTP_HMAC_MD5=y 541CONFIG_SCTP_HMAC_MD5=y
567
568#
569# TIPC Configuration (EXPERIMENTAL)
570#
571# CONFIG_TIPC is not set 542# CONFIG_TIPC is not set
572# CONFIG_ATM is not set 543# CONFIG_ATM is not set
573CONFIG_BRIDGE=m 544CONFIG_BRIDGE=m
@@ -591,9 +562,6 @@ CONFIG_IPDDP_DECAP=y
591# 562#
592CONFIG_NET_SCHED=y 563CONFIG_NET_SCHED=y
593CONFIG_NET_SCH_FIFO=y 564CONFIG_NET_SCH_FIFO=y
594CONFIG_NET_SCH_CLK_JIFFIES=y
595# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
596# CONFIG_NET_SCH_CLK_CPU is not set
597 565
598# 566#
599# Queueing/Scheduling 567# Queueing/Scheduling
@@ -602,6 +570,7 @@ CONFIG_NET_SCH_CBQ=m
602CONFIG_NET_SCH_HTB=m 570CONFIG_NET_SCH_HTB=m
603CONFIG_NET_SCH_HFSC=m 571CONFIG_NET_SCH_HFSC=m
604CONFIG_NET_SCH_PRIO=m 572CONFIG_NET_SCH_PRIO=m
573CONFIG_NET_SCH_RR=m
605CONFIG_NET_SCH_RED=m 574CONFIG_NET_SCH_RED=m
606CONFIG_NET_SCH_SFQ=m 575CONFIG_NET_SCH_SFQ=m
607CONFIG_NET_SCH_TEQL=m 576CONFIG_NET_SCH_TEQL=m
@@ -626,10 +595,16 @@ CONFIG_NET_CLS_U32=m
626CONFIG_NET_CLS_RSVP=m 595CONFIG_NET_CLS_RSVP=m
627CONFIG_NET_CLS_RSVP6=m 596CONFIG_NET_CLS_RSVP6=m
628# CONFIG_NET_EMATCH is not set 597# CONFIG_NET_EMATCH is not set
629# CONFIG_NET_CLS_ACT is not set 598CONFIG_NET_CLS_ACT=y
599CONFIG_NET_ACT_POLICE=y
600CONFIG_NET_ACT_GACT=m
601CONFIG_GACT_PROB=y
602CONFIG_NET_ACT_MIRRED=m
603CONFIG_NET_ACT_IPT=m
604CONFIG_NET_ACT_PEDIT=m
605CONFIG_NET_ACT_SIMP=m
630CONFIG_NET_CLS_POLICE=y 606CONFIG_NET_CLS_POLICE=y
631CONFIG_NET_CLS_IND=y 607CONFIG_NET_CLS_IND=y
632CONFIG_NET_ESTIMATOR=y
633 608
634# 609#
635# Network testing 610# Network testing
@@ -638,14 +613,26 @@ CONFIG_NET_ESTIMATOR=y
638# CONFIG_HAMRADIO is not set 613# CONFIG_HAMRADIO is not set
639# CONFIG_IRDA is not set 614# CONFIG_IRDA is not set
640# CONFIG_BT is not set 615# CONFIG_BT is not set
616# CONFIG_AF_RXRPC is not set
617CONFIG_FIB_RULES=y
618
619#
620# Wireless
621#
622CONFIG_CFG80211=m
623CONFIG_WIRELESS_EXT=y
624CONFIG_MAC80211=m
625# CONFIG_MAC80211_DEBUG is not set
641CONFIG_IEEE80211=m 626CONFIG_IEEE80211=m
642# CONFIG_IEEE80211_DEBUG is not set 627# CONFIG_IEEE80211_DEBUG is not set
643CONFIG_IEEE80211_CRYPT_WEP=m 628CONFIG_IEEE80211_CRYPT_WEP=m
644CONFIG_IEEE80211_CRYPT_CCMP=m 629CONFIG_IEEE80211_CRYPT_CCMP=m
630CONFIG_IEEE80211_CRYPT_TKIP=m
645CONFIG_IEEE80211_SOFTMAC=m 631CONFIG_IEEE80211_SOFTMAC=m
646# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 632# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
647CONFIG_WIRELESS_EXT=y 633CONFIG_RFKILL=m
648CONFIG_FIB_RULES=y 634CONFIG_RFKILL_INPUT=m
635# CONFIG_NET_9P is not set
649 636
650# 637#
651# Device Drivers 638# Device Drivers
@@ -658,15 +645,7 @@ CONFIG_STANDALONE=y
658CONFIG_PREVENT_FIRMWARE_BUILD=y 645CONFIG_PREVENT_FIRMWARE_BUILD=y
659CONFIG_FW_LOADER=y 646CONFIG_FW_LOADER=y
660# CONFIG_SYS_HYPERVISOR is not set 647# CONFIG_SYS_HYPERVISOR is not set
661
662#
663# Connector - unified userspace <-> kernelspace linker
664#
665CONFIG_CONNECTOR=m 648CONFIG_CONNECTOR=m
666
667#
668# Memory Technology Devices (MTD)
669#
670CONFIG_MTD=y 649CONFIG_MTD=y
671# CONFIG_MTD_DEBUG is not set 650# CONFIG_MTD_DEBUG is not set
672# CONFIG_MTD_CONCAT is not set 651# CONFIG_MTD_CONCAT is not set
@@ -710,7 +689,6 @@ CONFIG_MTD_CFI_UTIL=y
710# CONFIG_MTD_RAM is not set 689# CONFIG_MTD_RAM is not set
711# CONFIG_MTD_ROM is not set 690# CONFIG_MTD_ROM is not set
712# CONFIG_MTD_ABSENT is not set 691# CONFIG_MTD_ABSENT is not set
713# CONFIG_MTD_OBSOLETE_CHIPS is not set
714 692
715# 693#
716# Mapping drivers for chip access 694# Mapping drivers for chip access
@@ -737,30 +715,23 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=0
737# CONFIG_MTD_DOC2000 is not set 715# CONFIG_MTD_DOC2000 is not set
738# CONFIG_MTD_DOC2001 is not set 716# CONFIG_MTD_DOC2001 is not set
739# CONFIG_MTD_DOC2001PLUS is not set 717# CONFIG_MTD_DOC2001PLUS is not set
740
741#
742# NAND Flash Device Drivers
743#
744# CONFIG_MTD_NAND is not set 718# CONFIG_MTD_NAND is not set
745# CONFIG_MTD_NAND_CAFE is not set
746
747#
748# OneNAND Flash Device Drivers
749#
750# CONFIG_MTD_ONENAND is not set 719# CONFIG_MTD_ONENAND is not set
751 720
752# 721#
753# Parallel port support 722# UBI - Unsorted block images
754#
755# CONFIG_PARPORT is not set
756
757#
758# Plug and Play support
759# 723#
724CONFIG_MTD_UBI=m
725CONFIG_MTD_UBI_WL_THRESHOLD=4096
726CONFIG_MTD_UBI_BEB_RESERVE=1
727CONFIG_MTD_UBI_GLUEBI=y
760 728
761# 729#
762# Block devices 730# UBI debugging options
763# 731#
732# CONFIG_MTD_UBI_DEBUG is not set
733# CONFIG_PARPORT is not set
734CONFIG_BLK_DEV=y
764CONFIG_BLK_DEV_FD=m 735CONFIG_BLK_DEV_FD=m
765# CONFIG_BLK_CPQ_DA is not set 736# CONFIG_BLK_CPQ_DA is not set
766# CONFIG_BLK_CPQ_CISS_DA is not set 737# CONFIG_BLK_CPQ_CISS_DA is not set
@@ -775,21 +746,11 @@ CONFIG_BLK_DEV_RAM=y
775CONFIG_BLK_DEV_RAM_COUNT=16 746CONFIG_BLK_DEV_RAM_COUNT=16
776CONFIG_BLK_DEV_RAM_SIZE=4096 747CONFIG_BLK_DEV_RAM_SIZE=4096
777CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 748CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
778# CONFIG_BLK_DEV_INITRD is not set
779CONFIG_CDROM_PKTCDVD=m 749CONFIG_CDROM_PKTCDVD=m
780CONFIG_CDROM_PKTCDVD_BUFFERS=8 750CONFIG_CDROM_PKTCDVD_BUFFERS=8
781# CONFIG_CDROM_PKTCDVD_WCACHE is not set 751# CONFIG_CDROM_PKTCDVD_WCACHE is not set
782CONFIG_ATA_OVER_ETH=m 752CONFIG_ATA_OVER_ETH=m
783 753# CONFIG_MISC_DEVICES is not set
784#
785# Misc devices
786#
787CONFIG_SGI_IOC4=m
788# CONFIG_TIFM_CORE is not set
789
790#
791# ATA/ATAPI/MFM/RLL support
792#
793CONFIG_IDE=y 754CONFIG_IDE=y
794CONFIG_IDE_MAX_HWIFS=4 755CONFIG_IDE_MAX_HWIFS=4
795CONFIG_BLK_DEV_IDE=y 756CONFIG_BLK_DEV_IDE=y
@@ -805,6 +766,7 @@ CONFIG_BLK_DEV_IDECD=y
805# CONFIG_BLK_DEV_IDEFLOPPY is not set 766# CONFIG_BLK_DEV_IDEFLOPPY is not set
806# CONFIG_BLK_DEV_IDESCSI is not set 767# CONFIG_BLK_DEV_IDESCSI is not set
807# CONFIG_IDE_TASK_IOCTL is not set 768# CONFIG_IDE_TASK_IOCTL is not set
769CONFIG_IDE_PROC_FS=y
808 770
809# 771#
810# IDE chipset support/bugfixes 772# IDE chipset support/bugfixes
@@ -812,12 +774,12 @@ CONFIG_BLK_DEV_IDECD=y
812CONFIG_IDE_GENERIC=y 774CONFIG_IDE_GENERIC=y
813CONFIG_BLK_DEV_IDEPCI=y 775CONFIG_BLK_DEV_IDEPCI=y
814# CONFIG_IDEPCI_SHARE_IRQ is not set 776# CONFIG_IDEPCI_SHARE_IRQ is not set
777CONFIG_IDEPCI_PCIBUS_ORDER=y
815# CONFIG_BLK_DEV_OFFBOARD is not set 778# CONFIG_BLK_DEV_OFFBOARD is not set
816CONFIG_BLK_DEV_GENERIC=y 779CONFIG_BLK_DEV_GENERIC=y
817# CONFIG_BLK_DEV_OPTI621 is not set 780# CONFIG_BLK_DEV_OPTI621 is not set
818CONFIG_BLK_DEV_IDEDMA_PCI=y 781CONFIG_BLK_DEV_IDEDMA_PCI=y
819# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 782# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
820CONFIG_IDEDMA_PCI_AUTO=y
821# CONFIG_IDEDMA_ONLYDISK is not set 783# CONFIG_IDEDMA_ONLYDISK is not set
822# CONFIG_BLK_DEV_AEC62XX is not set 784# CONFIG_BLK_DEV_AEC62XX is not set
823# CONFIG_BLK_DEV_ALI15X3 is not set 785# CONFIG_BLK_DEV_ALI15X3 is not set
@@ -846,7 +808,6 @@ CONFIG_BLK_DEV_TC86C001=m
846# CONFIG_IDE_ARM is not set 808# CONFIG_IDE_ARM is not set
847CONFIG_BLK_DEV_IDEDMA=y 809CONFIG_BLK_DEV_IDEDMA=y
848# CONFIG_IDEDMA_IVB is not set 810# CONFIG_IDEDMA_IVB is not set
849CONFIG_IDEDMA_AUTO=y
850# CONFIG_BLK_DEV_HD is not set 811# CONFIG_BLK_DEV_HD is not set
851 812
852# 813#
@@ -854,6 +815,7 @@ CONFIG_IDEDMA_AUTO=y
854# 815#
855CONFIG_RAID_ATTRS=m 816CONFIG_RAID_ATTRS=m
856CONFIG_SCSI=m 817CONFIG_SCSI=m
818CONFIG_SCSI_DMA=y
857CONFIG_SCSI_TGT=m 819CONFIG_SCSI_TGT=m
858CONFIG_SCSI_NETLINK=y 820CONFIG_SCSI_NETLINK=y
859CONFIG_SCSI_PROC_FS=y 821CONFIG_SCSI_PROC_FS=y
@@ -876,6 +838,7 @@ CONFIG_SCSI_MULTI_LUN=y
876CONFIG_SCSI_CONSTANTS=y 838CONFIG_SCSI_CONSTANTS=y
877CONFIG_SCSI_LOGGING=y 839CONFIG_SCSI_LOGGING=y
878CONFIG_SCSI_SCAN_ASYNC=y 840CONFIG_SCSI_SCAN_ASYNC=y
841CONFIG_SCSI_WAIT_SCAN=m
879 842
880# 843#
881# SCSI Transports 844# SCSI Transports
@@ -883,12 +846,8 @@ CONFIG_SCSI_SCAN_ASYNC=y
883CONFIG_SCSI_SPI_ATTRS=m 846CONFIG_SCSI_SPI_ATTRS=m
884CONFIG_SCSI_FC_ATTRS=m 847CONFIG_SCSI_FC_ATTRS=m
885CONFIG_SCSI_ISCSI_ATTRS=m 848CONFIG_SCSI_ISCSI_ATTRS=m
886CONFIG_SCSI_SAS_ATTRS=m
887# CONFIG_SCSI_SAS_LIBSAS is not set 849# CONFIG_SCSI_SAS_LIBSAS is not set
888 850CONFIG_SCSI_LOWLEVEL=y
889#
890# SCSI low-level drivers
891#
892CONFIG_ISCSI_TCP=m 851CONFIG_ISCSI_TCP=m
893CONFIG_BLK_DEV_3W_XXXX_RAID=m 852CONFIG_BLK_DEV_3W_XXXX_RAID=m
894CONFIG_SCSI_3W_9XXX=m 853CONFIG_SCSI_3W_9XXX=m
@@ -925,15 +884,7 @@ CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
925# CONFIG_SCSI_NSP32 is not set 884# CONFIG_SCSI_NSP32 is not set
926# CONFIG_SCSI_DEBUG is not set 885# CONFIG_SCSI_DEBUG is not set
927# CONFIG_SCSI_SRP is not set 886# CONFIG_SCSI_SRP is not set
928
929#
930# Serial ATA (prod) and Parallel ATA (experimental) drivers
931#
932# CONFIG_ATA is not set 887# CONFIG_ATA is not set
933
934#
935# Multi-device support (RAID and LVM)
936#
937CONFIG_MD=y 888CONFIG_MD=y
938CONFIG_BLK_DEV_MD=m 889CONFIG_BLK_DEV_MD=m
939CONFIG_MD_LINEAR=m 890CONFIG_MD_LINEAR=m
@@ -952,6 +903,8 @@ CONFIG_DM_MIRROR=m
952CONFIG_DM_ZERO=m 903CONFIG_DM_ZERO=m
953CONFIG_DM_MULTIPATH=m 904CONFIG_DM_MULTIPATH=m
954CONFIG_DM_MULTIPATH_EMC=m 905CONFIG_DM_MULTIPATH_EMC=m
906CONFIG_DM_MULTIPATH_RDAC=m
907# CONFIG_DM_DELAY is not set
955 908
956# 909#
957# Fusion MPT device support 910# Fusion MPT device support
@@ -964,30 +917,18 @@ CONFIG_DM_MULTIPATH_EMC=m
964# 917#
965# IEEE 1394 (FireWire) support 918# IEEE 1394 (FireWire) support
966# 919#
920# CONFIG_FIREWIRE is not set
967# CONFIG_IEEE1394 is not set 921# CONFIG_IEEE1394 is not set
968
969#
970# I2O device support
971#
972# CONFIG_I2O is not set 922# CONFIG_I2O is not set
973
974#
975# Network device support
976#
977CONFIG_NETDEVICES=y 923CONFIG_NETDEVICES=y
924CONFIG_NETDEVICES_MULTIQUEUE=y
925CONFIG_IFB=m
978CONFIG_DUMMY=m 926CONFIG_DUMMY=m
979CONFIG_BONDING=m 927CONFIG_BONDING=m
928CONFIG_MACVLAN=m
980CONFIG_EQUALIZER=m 929CONFIG_EQUALIZER=m
981CONFIG_TUN=m 930CONFIG_TUN=m
982
983#
984# ARCnet devices
985#
986# CONFIG_ARCNET is not set 931# CONFIG_ARCNET is not set
987
988#
989# PHY device support
990#
991CONFIG_PHYLIB=m 932CONFIG_PHYLIB=m
992 933
993# 934#
@@ -1000,23 +941,17 @@ CONFIG_LXT_PHY=m
1000CONFIG_CICADA_PHY=m 941CONFIG_CICADA_PHY=m
1001CONFIG_VITESSE_PHY=m 942CONFIG_VITESSE_PHY=m
1002CONFIG_SMSC_PHY=m 943CONFIG_SMSC_PHY=m
1003# CONFIG_BROADCOM_PHY is not set 944CONFIG_BROADCOM_PHY=m
945CONFIG_ICPLUS_PHY=m
1004# CONFIG_FIXED_PHY is not set 946# CONFIG_FIXED_PHY is not set
1005
1006#
1007# Ethernet (10 or 100Mbit)
1008#
1009CONFIG_NET_ETHERNET=y 947CONFIG_NET_ETHERNET=y
1010CONFIG_MII=y 948CONFIG_MII=y
949CONFIG_AX88796=m
1011# CONFIG_HAPPYMEAL is not set 950# CONFIG_HAPPYMEAL is not set
1012# CONFIG_SUNGEM is not set 951# CONFIG_SUNGEM is not set
1013# CONFIG_CASSINI is not set 952# CONFIG_CASSINI is not set
1014# CONFIG_NET_VENDOR_3COM is not set 953# CONFIG_NET_VENDOR_3COM is not set
1015# CONFIG_DM9000 is not set 954# CONFIG_DM9000 is not set
1016
1017#
1018# Tulip family network device support
1019#
1020# CONFIG_NET_TULIP is not set 955# CONFIG_NET_TULIP is not set
1021# CONFIG_HP100 is not set 956# CONFIG_HP100 is not set
1022CONFIG_NET_PCI=y 957CONFIG_NET_PCI=y
@@ -1026,6 +961,7 @@ CONFIG_PCNET32=y
1026# CONFIG_ADAPTEC_STARFIRE is not set 961# CONFIG_ADAPTEC_STARFIRE is not set
1027# CONFIG_B44 is not set 962# CONFIG_B44 is not set
1028# CONFIG_FORCEDETH is not set 963# CONFIG_FORCEDETH is not set
964CONFIG_TC35815=m
1029# CONFIG_DGRS is not set 965# CONFIG_DGRS is not set
1030# CONFIG_EEPRO100 is not set 966# CONFIG_EEPRO100 is not set
1031# CONFIG_E100 is not set 967# CONFIG_E100 is not set
@@ -1040,10 +976,7 @@ CONFIG_PCNET32=y
1040# CONFIG_TLAN is not set 976# CONFIG_TLAN is not set
1041# CONFIG_VIA_RHINE is not set 977# CONFIG_VIA_RHINE is not set
1042# CONFIG_SC92031 is not set 978# CONFIG_SC92031 is not set
1043 979CONFIG_NETDEV_1000=y
1044#
1045# Ethernet (1000 Mbit)
1046#
1047# CONFIG_ACENIC is not set 980# CONFIG_ACENIC is not set
1048# CONFIG_DL2K is not set 981# CONFIG_DL2K is not set
1049# CONFIG_E1000 is not set 982# CONFIG_E1000 is not set
@@ -1054,36 +987,58 @@ CONFIG_PCNET32=y
1054# CONFIG_SIS190 is not set 987# CONFIG_SIS190 is not set
1055# CONFIG_SKGE is not set 988# CONFIG_SKGE is not set
1056# CONFIG_SKY2 is not set 989# CONFIG_SKY2 is not set
1057# CONFIG_SK98LIN is not set
1058# CONFIG_VIA_VELOCITY is not set 990# CONFIG_VIA_VELOCITY is not set
1059# CONFIG_TIGON3 is not set 991# CONFIG_TIGON3 is not set
1060# CONFIG_BNX2 is not set 992# CONFIG_BNX2 is not set
1061# CONFIG_QLA3XXX is not set 993# CONFIG_QLA3XXX is not set
1062# CONFIG_ATL1 is not set 994# CONFIG_ATL1 is not set
1063 995CONFIG_NETDEV_10000=y
1064#
1065# Ethernet (10000 Mbit)
1066#
1067# CONFIG_CHELSIO_T1 is not set 996# CONFIG_CHELSIO_T1 is not set
1068CONFIG_CHELSIO_T3=m 997CONFIG_CHELSIO_T3=m
1069# CONFIG_IXGB is not set 998# CONFIG_IXGB is not set
1070# CONFIG_S2IO is not set 999# CONFIG_S2IO is not set
1071# CONFIG_MYRI10GE is not set 1000# CONFIG_MYRI10GE is not set
1072CONFIG_NETXEN_NIC=m 1001CONFIG_NETXEN_NIC=m
1073 1002# CONFIG_MLX4_CORE is not set
1074#
1075# Token Ring devices
1076#
1077# CONFIG_TR is not set 1003# CONFIG_TR is not set
1078 1004
1079# 1005#
1080# Wireless LAN (non-hamradio) 1006# Wireless LAN
1081# 1007#
1082# CONFIG_NET_RADIO is not set 1008CONFIG_WLAN_PRE80211=y
1083 1009CONFIG_STRIP=m
1084# 1010CONFIG_WLAN_80211=y
1085# Wan interfaces 1011CONFIG_IPW2100=m
1086# 1012CONFIG_IPW2100_MONITOR=y
1013# CONFIG_IPW2100_DEBUG is not set
1014CONFIG_IPW2200=m
1015CONFIG_IPW2200_MONITOR=y
1016CONFIG_IPW2200_RADIOTAP=y
1017CONFIG_IPW2200_PROMISCUOUS=y
1018CONFIG_IPW2200_QOS=y
1019# CONFIG_IPW2200_DEBUG is not set
1020CONFIG_LIBERTAS=m
1021# CONFIG_LIBERTAS_DEBUG is not set
1022CONFIG_HERMES=m
1023CONFIG_PLX_HERMES=m
1024CONFIG_TMD_HERMES=m
1025CONFIG_NORTEL_HERMES=m
1026CONFIG_PCI_HERMES=m
1027CONFIG_ATMEL=m
1028CONFIG_PCI_ATMEL=m
1029CONFIG_PRISM54=m
1030CONFIG_HOSTAP=m
1031CONFIG_HOSTAP_FIRMWARE=y
1032CONFIG_HOSTAP_FIRMWARE_NVRAM=y
1033CONFIG_HOSTAP_PLX=m
1034CONFIG_HOSTAP_PCI=m
1035CONFIG_BCM43XX=m
1036CONFIG_BCM43XX_DEBUG=y
1037CONFIG_BCM43XX_DMA=y
1038CONFIG_BCM43XX_PIO=y
1039CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
1040# CONFIG_BCM43XX_DMA_MODE is not set
1041# CONFIG_BCM43XX_PIO_MODE is not set
1087# CONFIG_WAN is not set 1042# CONFIG_WAN is not set
1088# CONFIG_FDDI is not set 1043# CONFIG_FDDI is not set
1089# CONFIG_HIPPI is not set 1044# CONFIG_HIPPI is not set
@@ -1094,15 +1049,7 @@ CONFIG_NETXEN_NIC=m
1094# CONFIG_NETCONSOLE is not set 1049# CONFIG_NETCONSOLE is not set
1095# CONFIG_NETPOLL is not set 1050# CONFIG_NETPOLL is not set
1096# CONFIG_NET_POLL_CONTROLLER is not set 1051# CONFIG_NET_POLL_CONTROLLER is not set
1097
1098#
1099# ISDN subsystem
1100#
1101# CONFIG_ISDN is not set 1052# CONFIG_ISDN is not set
1102
1103#
1104# Telephony Support
1105#
1106# CONFIG_PHONE is not set 1053# CONFIG_PHONE is not set
1107 1054
1108# 1055#
@@ -1110,6 +1057,7 @@ CONFIG_NETXEN_NIC=m
1110# 1057#
1111CONFIG_INPUT=y 1058CONFIG_INPUT=y
1112# CONFIG_INPUT_FF_MEMLESS is not set 1059# CONFIG_INPUT_FF_MEMLESS is not set
1060# CONFIG_INPUT_POLLDEV is not set
1113 1061
1114# 1062#
1115# Userland interfaces 1063# Userland interfaces
@@ -1129,6 +1077,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
1129# CONFIG_INPUT_KEYBOARD is not set 1077# CONFIG_INPUT_KEYBOARD is not set
1130# CONFIG_INPUT_MOUSE is not set 1078# CONFIG_INPUT_MOUSE is not set
1131# CONFIG_INPUT_JOYSTICK is not set 1079# CONFIG_INPUT_JOYSTICK is not set
1080# CONFIG_INPUT_TABLET is not set
1132# CONFIG_INPUT_TOUCHSCREEN is not set 1081# CONFIG_INPUT_TOUCHSCREEN is not set
1133# CONFIG_INPUT_MISC is not set 1082# CONFIG_INPUT_MISC is not set
1134 1083
@@ -1171,32 +1120,16 @@ CONFIG_SERIAL_CORE_CONSOLE=y
1171CONFIG_UNIX98_PTYS=y 1120CONFIG_UNIX98_PTYS=y
1172CONFIG_LEGACY_PTYS=y 1121CONFIG_LEGACY_PTYS=y
1173CONFIG_LEGACY_PTY_COUNT=256 1122CONFIG_LEGACY_PTY_COUNT=256
1174
1175#
1176# IPMI
1177#
1178# CONFIG_IPMI_HANDLER is not set 1123# CONFIG_IPMI_HANDLER is not set
1179
1180#
1181# Watchdog Cards
1182#
1183# CONFIG_WATCHDOG is not set 1124# CONFIG_WATCHDOG is not set
1184# CONFIG_HW_RANDOM is not set 1125CONFIG_HW_RANDOM=m
1185CONFIG_RTC=y 1126CONFIG_RTC=y
1186# CONFIG_DTLK is not set
1187# CONFIG_R3964 is not set 1127# CONFIG_R3964 is not set
1188# CONFIG_APPLICOM is not set 1128# CONFIG_APPLICOM is not set
1189# CONFIG_DRM is not set 1129# CONFIG_DRM is not set
1190# CONFIG_RAW_DRIVER is not set 1130# CONFIG_RAW_DRIVER is not set
1191
1192#
1193# TPM devices
1194#
1195# CONFIG_TCG_TPM is not set 1131# CONFIG_TCG_TPM is not set
1196 1132CONFIG_DEVPORT=y
1197#
1198# I2C support
1199#
1200# CONFIG_I2C is not set 1133# CONFIG_I2C is not set
1201 1134
1202# 1135#
@@ -1204,32 +1137,33 @@ CONFIG_RTC=y
1204# 1137#
1205# CONFIG_SPI is not set 1138# CONFIG_SPI is not set
1206# CONFIG_SPI_MASTER is not set 1139# CONFIG_SPI_MASTER is not set
1207
1208#
1209# Dallas's 1-wire bus
1210#
1211# CONFIG_W1 is not set 1140# CONFIG_W1 is not set
1141# CONFIG_POWER_SUPPLY is not set
1142# CONFIG_HWMON is not set
1212 1143
1213# 1144#
1214# Hardware Monitoring support 1145# Multifunction device drivers
1215# 1146#
1216# CONFIG_HWMON is not set 1147# CONFIG_MFD_SM501 is not set
1217# CONFIG_HWMON_VID is not set
1218 1148
1219# 1149#
1220# Multimedia devices 1150# Multimedia devices
1221# 1151#
1222# CONFIG_VIDEO_DEV is not set 1152# CONFIG_VIDEO_DEV is not set
1153# CONFIG_DVB_CORE is not set
1154# CONFIG_DAB is not set
1223 1155
1224# 1156#
1225# Digital Video Broadcasting Devices 1157# Graphics support
1226# 1158#
1227# CONFIG_DVB is not set 1159# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1228 1160
1229# 1161#
1230# Graphics support 1162# Display device support
1231# 1163#
1232# CONFIG_FIRMWARE_EDID is not set 1164# CONFIG_DISPLAY_SUPPORT is not set
1165# CONFIG_VGASTATE is not set
1166# CONFIG_VIDEO_OUTPUT_CONTROL is not set
1233# CONFIG_FB is not set 1167# CONFIG_FB is not set
1234 1168
1235# 1169#
@@ -1237,22 +1171,15 @@ CONFIG_RTC=y
1237# 1171#
1238# CONFIG_VGA_CONSOLE is not set 1172# CONFIG_VGA_CONSOLE is not set
1239CONFIG_DUMMY_CONSOLE=y 1173CONFIG_DUMMY_CONSOLE=y
1240# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1241 1174
1242# 1175#
1243# Sound 1176# Sound
1244# 1177#
1245# CONFIG_SOUND is not set 1178# CONFIG_SOUND is not set
1246 1179CONFIG_HID_SUPPORT=y
1247#
1248# HID Devices
1249#
1250CONFIG_HID=m 1180CONFIG_HID=m
1251# CONFIG_HID_DEBUG is not set 1181# CONFIG_HID_DEBUG is not set
1252 1182CONFIG_USB_SUPPORT=y
1253#
1254# USB support
1255#
1256CONFIG_USB_ARCH_HAS_HCD=y 1183CONFIG_USB_ARCH_HAS_HCD=y
1257CONFIG_USB_ARCH_HAS_OHCI=y 1184CONFIG_USB_ARCH_HAS_OHCI=y
1258CONFIG_USB_ARCH_HAS_EHCI=y 1185CONFIG_USB_ARCH_HAS_EHCI=y
@@ -1266,37 +1193,9 @@ CONFIG_USB_ARCH_HAS_EHCI=y
1266# USB Gadget Support 1193# USB Gadget Support
1267# 1194#
1268# CONFIG_USB_GADGET is not set 1195# CONFIG_USB_GADGET is not set
1269
1270#
1271# MMC/SD Card support
1272#
1273# CONFIG_MMC is not set 1196# CONFIG_MMC is not set
1274
1275#
1276# LED devices
1277#
1278# CONFIG_NEW_LEDS is not set 1197# CONFIG_NEW_LEDS is not set
1279
1280#
1281# LED drivers
1282#
1283
1284#
1285# LED Triggers
1286#
1287
1288#
1289# InfiniBand support
1290#
1291# CONFIG_INFINIBAND is not set 1198# CONFIG_INFINIBAND is not set
1292
1293#
1294# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1295#
1296
1297#
1298# Real Time Clock
1299#
1300# CONFIG_RTC_CLASS is not set 1199# CONFIG_RTC_CLASS is not set
1301 1200
1302# 1201#
@@ -1313,12 +1212,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
1313# 1212#
1314 1213
1315# 1214#
1316# Auxiliary Display support 1215# Userspace I/O
1317#
1318
1319#
1320# Virtualization
1321# 1216#
1217CONFIG_UIO=m
1218CONFIG_UIO_CIF=m
1322 1219
1323# 1220#
1324# File systems 1221# File systems
@@ -1451,6 +1348,7 @@ CONFIG_LOCKD_V4=y
1451CONFIG_EXPORTFS=y 1348CONFIG_EXPORTFS=y
1452CONFIG_NFS_COMMON=y 1349CONFIG_NFS_COMMON=y
1453CONFIG_SUNRPC=y 1350CONFIG_SUNRPC=y
1351# CONFIG_SUNRPC_BIND34 is not set
1454# CONFIG_RPCSEC_GSS_KRB5 is not set 1352# CONFIG_RPCSEC_GSS_KRB5 is not set
1455# CONFIG_RPCSEC_GSS_SPKM3 is not set 1353# CONFIG_RPCSEC_GSS_SPKM3 is not set
1456# CONFIG_SMB_FS is not set 1354# CONFIG_SMB_FS is not set
@@ -1458,7 +1356,6 @@ CONFIG_SUNRPC=y
1458# CONFIG_NCP_FS is not set 1356# CONFIG_NCP_FS is not set
1459# CONFIG_CODA_FS is not set 1357# CONFIG_CODA_FS is not set
1460# CONFIG_AFS_FS is not set 1358# CONFIG_AFS_FS is not set
1461# CONFIG_9P_FS is not set
1462 1359
1463# 1360#
1464# Partition Types 1361# Partition Types
@@ -1531,7 +1428,6 @@ CONFIG_ENABLE_MUST_CHECK=y
1531# CONFIG_DEBUG_FS is not set 1428# CONFIG_DEBUG_FS is not set
1532# CONFIG_HEADERS_CHECK is not set 1429# CONFIG_HEADERS_CHECK is not set
1533# CONFIG_DEBUG_KERNEL is not set 1430# CONFIG_DEBUG_KERNEL is not set
1534CONFIG_LOG_BUF_SHIFT=15
1535CONFIG_CROSSCOMPILE=y 1431CONFIG_CROSSCOMPILE=y
1536CONFIG_CMDLINE="" 1432CONFIG_CMDLINE=""
1537 1433
@@ -1540,12 +1436,13 @@ CONFIG_CMDLINE=""
1540# 1436#
1541# CONFIG_KEYS is not set 1437# CONFIG_KEYS is not set
1542# CONFIG_SECURITY is not set 1438# CONFIG_SECURITY is not set
1543 1439CONFIG_XOR_BLOCKS=m
1544# 1440CONFIG_ASYNC_CORE=m
1545# Cryptographic options 1441CONFIG_ASYNC_MEMCPY=m
1546# 1442CONFIG_ASYNC_XOR=m
1547CONFIG_CRYPTO=y 1443CONFIG_CRYPTO=y
1548CONFIG_CRYPTO_ALGAPI=y 1444CONFIG_CRYPTO_ALGAPI=y
1445CONFIG_CRYPTO_ABLKCIPHER=m
1549CONFIG_CRYPTO_BLKCIPHER=m 1446CONFIG_CRYPTO_BLKCIPHER=m
1550CONFIG_CRYPTO_HASH=y 1447CONFIG_CRYPTO_HASH=y
1551CONFIG_CRYPTO_MANAGER=y 1448CONFIG_CRYPTO_MANAGER=y
@@ -1564,6 +1461,7 @@ CONFIG_CRYPTO_ECB=m
1564CONFIG_CRYPTO_CBC=m 1461CONFIG_CRYPTO_CBC=m
1565CONFIG_CRYPTO_PCBC=m 1462CONFIG_CRYPTO_PCBC=m
1566CONFIG_CRYPTO_LRW=m 1463CONFIG_CRYPTO_LRW=m
1464CONFIG_CRYPTO_CRYPTD=m
1567CONFIG_CRYPTO_DES=m 1465CONFIG_CRYPTO_DES=m
1568CONFIG_CRYPTO_FCRYPT=m 1466CONFIG_CRYPTO_FCRYPT=m
1569CONFIG_CRYPTO_BLOWFISH=m 1467CONFIG_CRYPTO_BLOWFISH=m
@@ -1582,10 +1480,7 @@ CONFIG_CRYPTO_MICHAEL_MIC=m
1582CONFIG_CRYPTO_CRC32C=m 1480CONFIG_CRYPTO_CRC32C=m
1583CONFIG_CRYPTO_CAMELLIA=m 1481CONFIG_CRYPTO_CAMELLIA=m
1584# CONFIG_CRYPTO_TEST is not set 1482# CONFIG_CRYPTO_TEST is not set
1585 1483CONFIG_CRYPTO_HW=y
1586#
1587# Hardware crypto devices
1588#
1589 1484
1590# 1485#
1591# Library routines 1486# Library routines
@@ -1593,7 +1488,9 @@ CONFIG_CRYPTO_CAMELLIA=m
1593CONFIG_BITREVERSE=y 1488CONFIG_BITREVERSE=y
1594# CONFIG_CRC_CCITT is not set 1489# CONFIG_CRC_CCITT is not set
1595CONFIG_CRC16=m 1490CONFIG_CRC16=m
1491# CONFIG_CRC_ITU_T is not set
1596CONFIG_CRC32=y 1492CONFIG_CRC32=y
1493# CONFIG_CRC7 is not set
1597CONFIG_LIBCRC32C=m 1494CONFIG_LIBCRC32C=m
1598CONFIG_ZLIB_INFLATE=m 1495CONFIG_ZLIB_INFLATE=m
1599CONFIG_ZLIB_DEFLATE=m 1496CONFIG_ZLIB_DEFLATE=m
@@ -1604,3 +1501,4 @@ CONFIG_TEXTSEARCH_FSM=m
1604CONFIG_PLIST=y 1501CONFIG_PLIST=y
1605CONFIG_HAS_IOMEM=y 1502CONFIG_HAS_IOMEM=y
1606CONFIG_HAS_IOPORT=y 1503CONFIG_HAS_IOPORT=y
1504CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/mpc30x_defconfig b/arch/mips/configs/mpc30x_defconfig
index 239810b6c88d..8334350d7229 100644
--- a/arch/mips/configs/mpc30x_defconfig
+++ b/arch/mips/configs/mpc30x_defconfig
@@ -1,60 +1,47 @@
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.23-rc2
4# Tue Feb 20 21:47:35 2007 4# Wed Aug 8 15:09:51 2007
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
26# CONFIG_MIPS_COBALT is not set 13# CONFIG_MIPS_COBALT is not set
27# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
28# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 21# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 22CONFIG_MACH_VR41XX=y
36# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
38CONFIG_MACH_VR41XX=y 25# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
43# CONFIG_SGI_IP27 is not set 29# CONFIG_SGI_IP27 is not set
44# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 41# CONFIG_TOSHIBA_JMR3927 is not set
56# CONFIG_TOSHIBA_RBTX4927 is not set 42# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 43# CONFIG_TOSHIBA_RBTX4938 is not set
44# CONFIG_WR_PPMC is not set
58# CONFIG_CASIO_E55 is not set 45# CONFIG_CASIO_E55 is not set
59# CONFIG_IBM_WORKPAD is not set 46# CONFIG_IBM_WORKPAD is not set
60# CONFIG_NEC_CMBVR4133 is not set 47# CONFIG_NEC_CMBVR4133 is not set
@@ -73,6 +60,8 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
73CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 60CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
74CONFIG_DMA_NONCOHERENT=y 61CONFIG_DMA_NONCOHERENT=y
75CONFIG_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
76# CONFIG_CPU_BIG_ENDIAN is not set 65# CONFIG_CPU_BIG_ENDIAN is not set
77CONFIG_CPU_LITTLE_ENDIAN=y 66CONFIG_CPU_LITTLE_ENDIAN=y
78CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 67CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
@@ -82,6 +71,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
82# 71#
83# CPU selection 72# CPU selection
84# 73#
74# CONFIG_CPU_LOONGSON2 is not set
85# CONFIG_CPU_MIPS32_R1 is not set 75# CONFIG_CPU_MIPS32_R1 is not set
86# CONFIG_CPU_MIPS32_R2 is not set 76# CONFIG_CPU_MIPS32_R2 is not set
87# CONFIG_CPU_MIPS64_R1 is not set 77# CONFIG_CPU_MIPS64_R1 is not set
@@ -103,7 +93,6 @@ CONFIG_CPU_VR41XX=y
103# CONFIG_CPU_SB1 is not set 93# CONFIG_CPU_SB1 is not set
104CONFIG_SYS_HAS_CPU_VR41XX=y 94CONFIG_SYS_HAS_CPU_VR41XX=y
105CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 95CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
106CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
107CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 96CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
108CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y 97CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
109 98
@@ -119,7 +108,6 @@ CONFIG_PAGE_SIZE_4KB=y
119CONFIG_MIPS_MT_DISABLED=y 108CONFIG_MIPS_MT_DISABLED=y
120# CONFIG_MIPS_MT_SMP is not set 109# CONFIG_MIPS_MT_SMP is not set
121# CONFIG_MIPS_MT_SMTC is not set 110# CONFIG_MIPS_MT_SMTC is not set
122# CONFIG_MIPS_VPE_LOADER is not set
123CONFIG_CPU_HAS_SYNC=y 111CONFIG_CPU_HAS_SYNC=y
124CONFIG_GENERIC_HARDIRQS=y 112CONFIG_GENERIC_HARDIRQS=y
125CONFIG_GENERIC_IRQ_PROBE=y 113CONFIG_GENERIC_IRQ_PROBE=y
@@ -133,48 +121,47 @@ CONFIG_FLAT_NODE_MEM_MAP=y
133# CONFIG_SPARSEMEM_STATIC is not set 121# CONFIG_SPARSEMEM_STATIC is not set
134CONFIG_SPLIT_PTLOCK_CPUS=4 122CONFIG_SPLIT_PTLOCK_CPUS=4
135# CONFIG_RESOURCES_64BIT is not set 123# CONFIG_RESOURCES_64BIT is not set
136CONFIG_ZONE_DMA_FLAG=1 124CONFIG_ZONE_DMA_FLAG=0
125CONFIG_VIRT_TO_BUS=y
137# CONFIG_HZ_48 is not set 126# CONFIG_HZ_48 is not set
138# CONFIG_HZ_100 is not set 127# CONFIG_HZ_100 is not set
139# CONFIG_HZ_128 is not set 128# CONFIG_HZ_128 is not set
140# CONFIG_HZ_250 is not set 129CONFIG_HZ_250=y
141# CONFIG_HZ_256 is not set 130# CONFIG_HZ_256 is not set
142CONFIG_HZ_1000=y 131# CONFIG_HZ_1000 is not set
143# CONFIG_HZ_1024 is not set 132# CONFIG_HZ_1024 is not set
144CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 133CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
145CONFIG_HZ=1000 134CONFIG_HZ=250
146CONFIG_PREEMPT_NONE=y 135CONFIG_PREEMPT_NONE=y
147# CONFIG_PREEMPT_VOLUNTARY is not set 136# CONFIG_PREEMPT_VOLUNTARY is not set
148# CONFIG_PREEMPT is not set 137# CONFIG_PREEMPT is not set
149# CONFIG_KEXEC is not set 138# CONFIG_KEXEC is not set
139CONFIG_SECCOMP=y
150CONFIG_LOCKDEP_SUPPORT=y 140CONFIG_LOCKDEP_SUPPORT=y
151CONFIG_STACKTRACE_SUPPORT=y 141CONFIG_STACKTRACE_SUPPORT=y
152CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 142CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
153 143
154# 144#
155# Code maturity level options 145# General setup
156# 146#
157CONFIG_EXPERIMENTAL=y 147CONFIG_EXPERIMENTAL=y
158CONFIG_BROKEN_ON_SMP=y 148CONFIG_BROKEN_ON_SMP=y
159CONFIG_INIT_ENV_ARG_LIMIT=32 149CONFIG_INIT_ENV_ARG_LIMIT=32
160
161#
162# General setup
163#
164CONFIG_LOCALVERSION="" 150CONFIG_LOCALVERSION=""
165CONFIG_LOCALVERSION_AUTO=y 151CONFIG_LOCALVERSION_AUTO=y
166CONFIG_SWAP=y 152CONFIG_SWAP=y
167CONFIG_SYSVIPC=y 153CONFIG_SYSVIPC=y
168# CONFIG_IPC_NS is not set
169CONFIG_SYSVIPC_SYSCTL=y 154CONFIG_SYSVIPC_SYSCTL=y
170# CONFIG_POSIX_MQUEUE is not set 155# CONFIG_POSIX_MQUEUE is not set
171# CONFIG_BSD_PROCESS_ACCT is not set 156# CONFIG_BSD_PROCESS_ACCT is not set
172# CONFIG_TASKSTATS is not set 157# CONFIG_TASKSTATS is not set
173# CONFIG_UTS_NS is not set 158# CONFIG_USER_NS is not set
174# CONFIG_AUDIT is not set 159# CONFIG_AUDIT is not set
175# CONFIG_IKCONFIG is not set 160# CONFIG_IKCONFIG is not set
161CONFIG_LOG_BUF_SHIFT=14
176CONFIG_SYSFS_DEPRECATED=y 162CONFIG_SYSFS_DEPRECATED=y
177CONFIG_RELAY=y 163CONFIG_RELAY=y
164# CONFIG_BLK_DEV_INITRD is not set
178# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 165# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
179CONFIG_SYSCTL=y 166CONFIG_SYSCTL=y
180CONFIG_EMBEDDED=y 167CONFIG_EMBEDDED=y
@@ -187,32 +174,30 @@ CONFIG_BUG=y
187CONFIG_ELF_CORE=y 174CONFIG_ELF_CORE=y
188CONFIG_BASE_FULL=y 175CONFIG_BASE_FULL=y
189CONFIG_FUTEX=y 176CONFIG_FUTEX=y
177CONFIG_ANON_INODES=y
190CONFIG_EPOLL=y 178CONFIG_EPOLL=y
179CONFIG_SIGNALFD=y
180CONFIG_TIMERFD=y
181CONFIG_EVENTFD=y
191CONFIG_SHMEM=y 182CONFIG_SHMEM=y
192CONFIG_SLAB=y
193CONFIG_VM_EVENT_COUNTERS=y 183CONFIG_VM_EVENT_COUNTERS=y
184CONFIG_SLAB=y
185# CONFIG_SLUB is not set
186# CONFIG_SLOB is not set
194CONFIG_RT_MUTEXES=y 187CONFIG_RT_MUTEXES=y
195# CONFIG_TINY_SHMEM is not set 188# CONFIG_TINY_SHMEM is not set
196CONFIG_BASE_SMALL=0 189CONFIG_BASE_SMALL=0
197# CONFIG_SLOB is not set
198
199#
200# Loadable module support
201#
202CONFIG_MODULES=y 190CONFIG_MODULES=y
203CONFIG_MODULE_UNLOAD=y 191CONFIG_MODULE_UNLOAD=y
204# CONFIG_MODULE_FORCE_UNLOAD is not set 192# CONFIG_MODULE_FORCE_UNLOAD is not set
205CONFIG_MODVERSIONS=y 193CONFIG_MODVERSIONS=y
206CONFIG_MODULE_SRCVERSION_ALL=y 194CONFIG_MODULE_SRCVERSION_ALL=y
207CONFIG_KMOD=y 195CONFIG_KMOD=y
208
209#
210# Block layer
211#
212CONFIG_BLOCK=y 196CONFIG_BLOCK=y
213# CONFIG_LBD is not set 197# CONFIG_LBD is not set
214# CONFIG_BLK_DEV_IO_TRACE is not set 198# CONFIG_BLK_DEV_IO_TRACE is not set
215# CONFIG_LSF is not set 199# CONFIG_LSF is not set
200# CONFIG_BLK_DEV_BSG is not set
216 201
217# 202#
218# IO Schedulers 203# IO Schedulers
@@ -232,29 +217,13 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
232# 217#
233CONFIG_HW_HAS_PCI=y 218CONFIG_HW_HAS_PCI=y
234CONFIG_PCI=y 219CONFIG_PCI=y
220# CONFIG_ARCH_SUPPORTS_MSI is not set
235CONFIG_MMU=y 221CONFIG_MMU=y
236 222
237# 223#
238# PCCARD (PCMCIA/CardBus) support 224# PCCARD (PCMCIA/CardBus) support
239# 225#
240CONFIG_PCCARD=y 226# CONFIG_PCCARD is not set
241# CONFIG_PCMCIA_DEBUG is not set
242CONFIG_PCMCIA=y
243CONFIG_PCMCIA_LOAD_CIS=y
244CONFIG_PCMCIA_IOCTL=y
245# CONFIG_CARDBUS is not set
246
247#
248# PC-card bridges
249#
250# CONFIG_YENTA is not set
251# CONFIG_PD6729 is not set
252# CONFIG_I82092 is not set
253# CONFIG_PCMCIA_VRC4173 is not set
254
255#
256# PCI Hotplug Support
257#
258# CONFIG_HOTPLUG_PCI is not set 227# CONFIG_HOTPLUG_PCI is not set
259 228
260# 229#
@@ -267,10 +236,7 @@ CONFIG_TRAD_SIGNALS=y
267# 236#
268# Power management options 237# Power management options
269# 238#
270CONFIG_PM=y 239# CONFIG_PM is not set
271# CONFIG_PM_LEGACY is not set
272# CONFIG_PM_DEBUG is not set
273# CONFIG_PM_SYSFS_DEPRECATED is not set
274 240
275# 241#
276# Networking 242# Networking
@@ -280,7 +246,6 @@ CONFIG_NET=y
280# 246#
281# Networking options 247# Networking options
282# 248#
283# CONFIG_NETDEBUG is not set
284CONFIG_PACKET=y 249CONFIG_PACKET=y
285CONFIG_PACKET_MMAP=y 250CONFIG_PACKET_MMAP=y
286CONFIG_UNIX=y 251CONFIG_UNIX=y
@@ -313,26 +278,17 @@ CONFIG_INET_TCP_DIAG=y
313# CONFIG_TCP_CONG_ADVANCED is not set 278# CONFIG_TCP_CONG_ADVANCED is not set
314CONFIG_TCP_CONG_CUBIC=y 279CONFIG_TCP_CONG_CUBIC=y
315CONFIG_DEFAULT_TCP_CONG="cubic" 280CONFIG_DEFAULT_TCP_CONG="cubic"
316CONFIG_TCP_MD5SIG=y 281# CONFIG_TCP_MD5SIG is not set
317# CONFIG_IPV6 is not set 282# CONFIG_IPV6 is not set
318# CONFIG_INET6_XFRM_TUNNEL is not set 283# CONFIG_INET6_XFRM_TUNNEL is not set
319# CONFIG_INET6_TUNNEL is not set 284# CONFIG_INET6_TUNNEL is not set
320CONFIG_NETWORK_SECMARK=y 285CONFIG_NETWORK_SECMARK=y
321# CONFIG_NETFILTER is not set 286# CONFIG_NETFILTER is not set
322
323#
324# DCCP Configuration (EXPERIMENTAL)
325#
326# CONFIG_IP_DCCP is not set 287# CONFIG_IP_DCCP is not set
327
328#
329# SCTP Configuration (EXPERIMENTAL)
330#
331# CONFIG_IP_SCTP is not set 288# CONFIG_IP_SCTP is not set
332 289# CONFIG_SCTP_HMAC_NONE is not set
333# 290# CONFIG_SCTP_HMAC_SHA1 is not set
334# TIPC Configuration (EXPERIMENTAL) 291# CONFIG_SCTP_HMAC_MD5 is not set
335#
336# CONFIG_TIPC is not set 292# CONFIG_TIPC is not set
337# CONFIG_ATM is not set 293# CONFIG_ATM is not set
338# CONFIG_BRIDGE is not set 294# CONFIG_BRIDGE is not set
@@ -358,14 +314,17 @@ CONFIG_NETWORK_SECMARK=y
358# CONFIG_HAMRADIO is not set 314# CONFIG_HAMRADIO is not set
359# CONFIG_IRDA is not set 315# CONFIG_IRDA is not set
360# CONFIG_BT is not set 316# CONFIG_BT is not set
361CONFIG_IEEE80211=m 317# CONFIG_AF_RXRPC is not set
362# CONFIG_IEEE80211_DEBUG is not set 318
363CONFIG_IEEE80211_CRYPT_WEP=m 319#
364CONFIG_IEEE80211_CRYPT_CCMP=m 320# Wireless
365CONFIG_IEEE80211_CRYPT_TKIP=m 321#
366CONFIG_IEEE80211_SOFTMAC=m 322# CONFIG_CFG80211 is not set
367# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 323# CONFIG_WIRELESS_EXT is not set
368CONFIG_WIRELESS_EXT=y 324# CONFIG_MAC80211 is not set
325# CONFIG_IEEE80211 is not set
326# CONFIG_RFKILL is not set
327# CONFIG_NET_9P is not set
369 328
370# 329#
371# Device Drivers 330# Device Drivers
@@ -378,30 +337,10 @@ CONFIG_STANDALONE=y
378CONFIG_PREVENT_FIRMWARE_BUILD=y 337CONFIG_PREVENT_FIRMWARE_BUILD=y
379CONFIG_FW_LOADER=y 338CONFIG_FW_LOADER=y
380# CONFIG_SYS_HYPERVISOR is not set 339# CONFIG_SYS_HYPERVISOR is not set
381
382#
383# Connector - unified userspace <-> kernelspace linker
384#
385CONFIG_CONNECTOR=m 340CONFIG_CONNECTOR=m
386
387#
388# Memory Technology Devices (MTD)
389#
390# CONFIG_MTD is not set 341# CONFIG_MTD is not set
391
392#
393# Parallel port support
394#
395# CONFIG_PARPORT is not set 342# CONFIG_PARPORT is not set
396 343CONFIG_BLK_DEV=y
397#
398# Plug and Play support
399#
400# CONFIG_PNPACPI is not set
401
402#
403# Block devices
404#
405# CONFIG_BLK_CPQ_DA is not set 344# CONFIG_BLK_CPQ_DA is not set
406# CONFIG_BLK_CPQ_CISS_DA is not set 345# CONFIG_BLK_CPQ_CISS_DA is not set
407# CONFIG_BLK_DEV_DAC960 is not set 346# CONFIG_BLK_DEV_DAC960 is not set
@@ -412,19 +351,9 @@ CONFIG_CONNECTOR=m
412# CONFIG_BLK_DEV_SX8 is not set 351# CONFIG_BLK_DEV_SX8 is not set
413# CONFIG_BLK_DEV_UB is not set 352# CONFIG_BLK_DEV_UB is not set
414# CONFIG_BLK_DEV_RAM is not set 353# CONFIG_BLK_DEV_RAM is not set
415# CONFIG_BLK_DEV_INITRD is not set
416# CONFIG_CDROM_PKTCDVD is not set 354# CONFIG_CDROM_PKTCDVD is not set
417CONFIG_ATA_OVER_ETH=m 355CONFIG_ATA_OVER_ETH=m
418 356# CONFIG_MISC_DEVICES is not set
419#
420# Misc devices
421#
422CONFIG_SGI_IOC4=m
423# CONFIG_TIFM_CORE is not set
424
425#
426# ATA/ATAPI/MFM/RLL support
427#
428CONFIG_IDE=y 357CONFIG_IDE=y
429CONFIG_IDE_MAX_HWIFS=4 358CONFIG_IDE_MAX_HWIFS=4
430CONFIG_BLK_DEV_IDE=y 359CONFIG_BLK_DEV_IDE=y
@@ -435,20 +364,20 @@ CONFIG_BLK_DEV_IDE=y
435# CONFIG_BLK_DEV_IDE_SATA is not set 364# CONFIG_BLK_DEV_IDE_SATA is not set
436CONFIG_BLK_DEV_IDEDISK=y 365CONFIG_BLK_DEV_IDEDISK=y
437# CONFIG_IDEDISK_MULTI_MODE is not set 366# CONFIG_IDEDISK_MULTI_MODE is not set
438CONFIG_BLK_DEV_IDECS=m
439# CONFIG_BLK_DEV_IDECD is not set 367# CONFIG_BLK_DEV_IDECD is not set
440# CONFIG_BLK_DEV_IDETAPE is not set 368# CONFIG_BLK_DEV_IDETAPE is not set
441# CONFIG_BLK_DEV_IDEFLOPPY is not set 369# CONFIG_BLK_DEV_IDEFLOPPY is not set
442# CONFIG_IDE_TASK_IOCTL is not set 370# CONFIG_IDE_TASK_IOCTL is not set
371CONFIG_IDE_PROC_FS=y
443 372
444# 373#
445# IDE chipset support/bugfixes 374# IDE chipset support/bugfixes
446# 375#
447CONFIG_IDE_GENERIC=y 376CONFIG_IDE_GENERIC=y
448# CONFIG_BLK_DEV_IDEPCI is not set 377# CONFIG_BLK_DEV_IDEPCI is not set
378# CONFIG_IDEPCI_PCIBUS_ORDER is not set
449# CONFIG_IDE_ARM is not set 379# CONFIG_IDE_ARM is not set
450# CONFIG_BLK_DEV_IDEDMA is not set 380# CONFIG_BLK_DEV_IDEDMA is not set
451# CONFIG_IDEDMA_AUTO is not set
452# CONFIG_BLK_DEV_HD is not set 381# CONFIG_BLK_DEV_HD is not set
453 382
454# 383#
@@ -456,16 +385,9 @@ CONFIG_IDE_GENERIC=y
456# 385#
457# CONFIG_RAID_ATTRS is not set 386# CONFIG_RAID_ATTRS is not set
458# CONFIG_SCSI is not set 387# CONFIG_SCSI is not set
388# CONFIG_SCSI_DMA is not set
459# CONFIG_SCSI_NETLINK is not set 389# CONFIG_SCSI_NETLINK is not set
460
461#
462# Serial ATA (prod) and Parallel ATA (experimental) drivers
463#
464# CONFIG_ATA is not set 390# CONFIG_ATA is not set
465
466#
467# Multi-device support (RAID and LVM)
468#
469# CONFIG_MD is not set 391# CONFIG_MD is not set
470 392
471# 393#
@@ -476,135 +398,38 @@ CONFIG_IDE_GENERIC=y
476# 398#
477# IEEE 1394 (FireWire) support 399# IEEE 1394 (FireWire) support
478# 400#
401# CONFIG_FIREWIRE is not set
479# CONFIG_IEEE1394 is not set 402# CONFIG_IEEE1394 is not set
480
481#
482# I2O device support
483#
484# CONFIG_I2O is not set 403# CONFIG_I2O is not set
485
486#
487# Network device support
488#
489CONFIG_NETDEVICES=y 404CONFIG_NETDEVICES=y
405# CONFIG_NETDEVICES_MULTIQUEUE is not set
490# CONFIG_DUMMY is not set 406# CONFIG_DUMMY is not set
491# CONFIG_BONDING is not set 407# CONFIG_BONDING is not set
408# CONFIG_MACVLAN is not set
492# CONFIG_EQUALIZER is not set 409# CONFIG_EQUALIZER is not set
493# CONFIG_TUN is not set 410# CONFIG_TUN is not set
494
495#
496# ARCnet devices
497#
498# CONFIG_ARCNET is not set 411# CONFIG_ARCNET is not set
499
500#
501# PHY device support
502#
503
504#
505# Ethernet (10 or 100Mbit)
506#
507# CONFIG_NET_ETHERNET is not set 412# CONFIG_NET_ETHERNET is not set
508CONFIG_MII=m 413CONFIG_MII=m
509 414# CONFIG_NETDEV_1000 is not set
510# 415# CONFIG_NETDEV_10000 is not set
511# Ethernet (1000 Mbit)
512#
513# CONFIG_ACENIC is not set
514# CONFIG_DL2K is not set
515# CONFIG_E1000 is not set
516# CONFIG_NS83820 is not set
517# CONFIG_HAMACHI is not set
518# CONFIG_YELLOWFIN is not set
519# CONFIG_R8169 is not set
520# CONFIG_SIS190 is not set
521# CONFIG_SKGE is not set
522# CONFIG_SKY2 is not set
523# CONFIG_SK98LIN is not set
524# CONFIG_TIGON3 is not set
525# CONFIG_BNX2 is not set
526CONFIG_QLA3XXX=m
527# CONFIG_ATL1 is not set
528
529#
530# Ethernet (10000 Mbit)
531#
532# CONFIG_CHELSIO_T1 is not set
533CONFIG_CHELSIO_T3=m
534# CONFIG_IXGB is not set
535# CONFIG_S2IO is not set
536# CONFIG_MYRI10GE is not set
537CONFIG_NETXEN_NIC=m
538
539#
540# Token Ring devices
541#
542# CONFIG_TR is not set 416# CONFIG_TR is not set
543 417
544# 418#
545# Wireless LAN (non-hamradio) 419# Wireless LAN
546# 420#
547CONFIG_NET_RADIO=y 421# CONFIG_WLAN_PRE80211 is not set
548# CONFIG_NET_WIRELESS_RTNETLINK is not set 422# CONFIG_WLAN_80211 is not set
549 423
550# 424#
551# Obsolete Wireless cards support (pre-802.11) 425# USB Network Adapters
552#
553# CONFIG_STRIP is not set
554# CONFIG_PCMCIA_WAVELAN is not set
555# CONFIG_PCMCIA_NETWAVE is not set
556
557#
558# Wireless 802.11 Frequency Hopping cards support
559#
560# CONFIG_PCMCIA_RAYCS is not set
561
562#
563# Wireless 802.11b ISA/PCI cards support
564#
565# CONFIG_IPW2100 is not set
566# CONFIG_IPW2200 is not set
567CONFIG_HERMES=m
568# CONFIG_PLX_HERMES is not set
569# CONFIG_TMD_HERMES is not set
570# CONFIG_NORTEL_HERMES is not set
571# CONFIG_PCI_HERMES is not set
572# CONFIG_ATMEL is not set
573
574#
575# Wireless 802.11b Pcmcia/Cardbus cards support
576#
577CONFIG_PCMCIA_HERMES=m
578# CONFIG_PCMCIA_SPECTRUM is not set
579# CONFIG_AIRO_CS is not set
580# CONFIG_PCMCIA_WL3501 is not set
581
582#
583# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
584#
585# CONFIG_PRISM54 is not set
586# CONFIG_USB_ZD1201 is not set
587# CONFIG_HOSTAP is not set
588# CONFIG_BCM43XX is not set
589# CONFIG_ZD1211RW is not set
590CONFIG_NET_WIRELESS=y
591
592#
593# PCMCIA network device support
594#
595CONFIG_NET_PCMCIA=y
596CONFIG_PCMCIA_3C589=m
597CONFIG_PCMCIA_3C574=m
598CONFIG_PCMCIA_FMVJ18X=m
599CONFIG_PCMCIA_PCNET=m
600CONFIG_PCMCIA_NMCLAN=m
601CONFIG_PCMCIA_SMC91C92=m
602CONFIG_PCMCIA_XIRC2PS=m
603CONFIG_PCMCIA_AXNET=m
604
605#
606# Wan interfaces
607# 426#
427# CONFIG_USB_CATC is not set
428# CONFIG_USB_KAWETH is not set
429CONFIG_USB_PEGASUS=m
430# CONFIG_USB_RTL8150 is not set
431# CONFIG_USB_USBNET_MII is not set
432# CONFIG_USB_USBNET is not set
608# CONFIG_WAN is not set 433# CONFIG_WAN is not set
609# CONFIG_FDDI is not set 434# CONFIG_FDDI is not set
610# CONFIG_HIPPI is not set 435# CONFIG_HIPPI is not set
@@ -614,15 +439,7 @@ CONFIG_PCMCIA_AXNET=m
614# CONFIG_NETCONSOLE is not set 439# CONFIG_NETCONSOLE is not set
615# CONFIG_NETPOLL is not set 440# CONFIG_NETPOLL is not set
616# CONFIG_NET_POLL_CONTROLLER is not set 441# CONFIG_NET_POLL_CONTROLLER is not set
617
618#
619# ISDN subsystem
620#
621# CONFIG_ISDN is not set 442# CONFIG_ISDN is not set
622
623#
624# Telephony Support
625#
626# CONFIG_PHONE is not set 443# CONFIG_PHONE is not set
627 444
628# 445#
@@ -630,14 +447,12 @@ CONFIG_PCMCIA_AXNET=m
630# 447#
631CONFIG_INPUT=y 448CONFIG_INPUT=y
632# CONFIG_INPUT_FF_MEMLESS is not set 449# CONFIG_INPUT_FF_MEMLESS is not set
450# CONFIG_INPUT_POLLDEV is not set
633 451
634# 452#
635# Userland interfaces 453# Userland interfaces
636# 454#
637CONFIG_INPUT_MOUSEDEV=y 455# CONFIG_INPUT_MOUSEDEV is not set
638CONFIG_INPUT_MOUSEDEV_PSAUX=y
639CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
640CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
641# CONFIG_INPUT_JOYDEV is not set 456# CONFIG_INPUT_JOYDEV is not set
642# CONFIG_INPUT_TSDEV is not set 457# CONFIG_INPUT_TSDEV is not set
643# CONFIG_INPUT_EVDEV is not set 458# CONFIG_INPUT_EVDEV is not set
@@ -649,18 +464,14 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
649# CONFIG_INPUT_KEYBOARD is not set 464# CONFIG_INPUT_KEYBOARD is not set
650# CONFIG_INPUT_MOUSE is not set 465# CONFIG_INPUT_MOUSE is not set
651# CONFIG_INPUT_JOYSTICK is not set 466# CONFIG_INPUT_JOYSTICK is not set
467# CONFIG_INPUT_TABLET is not set
652# CONFIG_INPUT_TOUCHSCREEN is not set 468# CONFIG_INPUT_TOUCHSCREEN is not set
653# CONFIG_INPUT_MISC is not set 469# CONFIG_INPUT_MISC is not set
654 470
655# 471#
656# Hardware I/O ports 472# Hardware I/O ports
657# 473#
658CONFIG_SERIO=y 474# CONFIG_SERIO is not set
659# CONFIG_SERIO_I8042 is not set
660CONFIG_SERIO_SERPORT=y
661# CONFIG_SERIO_PCIPS2 is not set
662# CONFIG_SERIO_LIBPS2 is not set
663CONFIG_SERIO_RAW=m
664# CONFIG_GAMEPORT is not set 475# CONFIG_GAMEPORT is not set
665 476
666# 477#
@@ -680,46 +491,25 @@ CONFIG_VT_HW_CONSOLE_BINDING=y
680# 491#
681# Non-8250 serial port support 492# Non-8250 serial port support
682# 493#
683# CONFIG_SERIAL_VR41XX is not set 494CONFIG_SERIAL_CORE=y
495CONFIG_SERIAL_CORE_CONSOLE=y
496CONFIG_SERIAL_VR41XX=y
497CONFIG_SERIAL_VR41XX_CONSOLE=y
684# CONFIG_SERIAL_JSM is not set 498# CONFIG_SERIAL_JSM is not set
685CONFIG_UNIX98_PTYS=y 499CONFIG_UNIX98_PTYS=y
686CONFIG_LEGACY_PTYS=y 500CONFIG_LEGACY_PTYS=y
687CONFIG_LEGACY_PTY_COUNT=256 501CONFIG_LEGACY_PTY_COUNT=256
688
689#
690# IPMI
691#
692# CONFIG_IPMI_HANDLER is not set 502# CONFIG_IPMI_HANDLER is not set
693
694#
695# Watchdog Cards
696#
697# CONFIG_WATCHDOG is not set 503# CONFIG_WATCHDOG is not set
698# CONFIG_HW_RANDOM is not set 504# CONFIG_HW_RANDOM is not set
699# CONFIG_RTC is not set 505# CONFIG_RTC is not set
700# CONFIG_GEN_RTC is not set
701# CONFIG_DTLK is not set
702# CONFIG_R3964 is not set 506# CONFIG_R3964 is not set
703# CONFIG_APPLICOM is not set 507# CONFIG_APPLICOM is not set
704# CONFIG_DRM is not set 508# CONFIG_DRM is not set
705 509CONFIG_GPIO_VR41XX=y
706#
707# PCMCIA character devices
708#
709# CONFIG_SYNCLINK_CS is not set
710# CONFIG_CARDMAN_4000 is not set
711# CONFIG_CARDMAN_4040 is not set
712# CONFIG_GPIO_VR41XX is not set
713# CONFIG_RAW_DRIVER is not set 510# CONFIG_RAW_DRIVER is not set
714
715#
716# TPM devices
717#
718# CONFIG_TCG_TPM is not set 511# CONFIG_TCG_TPM is not set
719 512CONFIG_DEVPORT=y
720#
721# I2C support
722#
723# CONFIG_I2C is not set 513# CONFIG_I2C is not set
724 514
725# 515#
@@ -727,33 +517,33 @@ CONFIG_LEGACY_PTY_COUNT=256
727# 517#
728# CONFIG_SPI is not set 518# CONFIG_SPI is not set
729# CONFIG_SPI_MASTER is not set 519# CONFIG_SPI_MASTER is not set
730
731#
732# Dallas's 1-wire bus
733#
734# CONFIG_W1 is not set 520# CONFIG_W1 is not set
521# CONFIG_POWER_SUPPLY is not set
522# CONFIG_HWMON is not set
735 523
736# 524#
737# Hardware Monitoring support 525# Multifunction device drivers
738# 526#
739# CONFIG_HWMON is not set 527# CONFIG_MFD_SM501 is not set
740# CONFIG_HWMON_VID is not set
741 528
742# 529#
743# Multimedia devices 530# Multimedia devices
744# 531#
745# CONFIG_VIDEO_DEV is not set 532# CONFIG_VIDEO_DEV is not set
533# CONFIG_DVB_CORE is not set
534# CONFIG_DAB is not set
746 535
747# 536#
748# Digital Video Broadcasting Devices 537# Graphics support
749# 538#
750# CONFIG_DVB is not set 539# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
751# CONFIG_USB_DABUSB is not set
752 540
753# 541#
754# Graphics support 542# Display device support
755# 543#
756# CONFIG_FIRMWARE_EDID is not set 544# CONFIG_DISPLAY_SUPPORT is not set
545# CONFIG_VGASTATE is not set
546# CONFIG_VIDEO_OUTPUT_CONTROL is not set
757# CONFIG_FB is not set 547# CONFIG_FB is not set
758 548
759# 549#
@@ -761,22 +551,13 @@ CONFIG_LEGACY_PTY_COUNT=256
761# 551#
762# CONFIG_VGA_CONSOLE is not set 552# CONFIG_VGA_CONSOLE is not set
763CONFIG_DUMMY_CONSOLE=y 553CONFIG_DUMMY_CONSOLE=y
764# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
765 554
766# 555#
767# Sound 556# Sound
768# 557#
769# CONFIG_SOUND is not set 558# CONFIG_SOUND is not set
770 559# CONFIG_HID_SUPPORT is not set
771# 560CONFIG_USB_SUPPORT=y
772# HID Devices
773#
774CONFIG_HID=y
775# CONFIG_HID_DEBUG is not set
776
777#
778# USB support
779#
780CONFIG_USB_ARCH_HAS_HCD=y 561CONFIG_USB_ARCH_HAS_HCD=y
781CONFIG_USB_ARCH_HAS_OHCI=y 562CONFIG_USB_ARCH_HAS_OHCI=y
782CONFIG_USB_ARCH_HAS_EHCI=y 563CONFIG_USB_ARCH_HAS_EHCI=y
@@ -787,8 +568,8 @@ CONFIG_USB=m
787# Miscellaneous USB options 568# Miscellaneous USB options
788# 569#
789CONFIG_USB_DEVICEFS=y 570CONFIG_USB_DEVICEFS=y
571CONFIG_USB_DEVICE_CLASS=y
790# CONFIG_USB_DYNAMIC_MINORS is not set 572# CONFIG_USB_DYNAMIC_MINORS is not set
791# CONFIG_USB_SUSPEND is not set
792# CONFIG_USB_OTG is not set 573# CONFIG_USB_OTG is not set
793 574
794# 575#
@@ -802,6 +583,7 @@ CONFIG_USB_OHCI_HCD=m
802CONFIG_USB_OHCI_LITTLE_ENDIAN=y 583CONFIG_USB_OHCI_LITTLE_ENDIAN=y
803# CONFIG_USB_UHCI_HCD is not set 584# CONFIG_USB_UHCI_HCD is not set
804# CONFIG_USB_SL811_HCD is not set 585# CONFIG_USB_SL811_HCD is not set
586# CONFIG_USB_R8A66597_HCD is not set
805 587
806# 588#
807# USB Device Class drivers 589# USB Device Class drivers
@@ -819,43 +601,9 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
819# CONFIG_USB_LIBUSUAL is not set 601# CONFIG_USB_LIBUSUAL is not set
820 602
821# 603#
822# USB Input Devices
823#
824# CONFIG_USB_HID is not set
825
826#
827# USB HID Boot Protocol drivers
828#
829# CONFIG_USB_KBD is not set
830# CONFIG_USB_MOUSE is not set
831# CONFIG_USB_AIPTEK is not set
832# CONFIG_USB_WACOM is not set
833# CONFIG_USB_ACECAD is not set
834# CONFIG_USB_KBTAB is not set
835# CONFIG_USB_POWERMATE is not set
836# CONFIG_USB_TOUCHSCREEN is not set
837# CONFIG_USB_YEALINK is not set
838# CONFIG_USB_XPAD is not set
839# CONFIG_USB_ATI_REMOTE is not set
840# CONFIG_USB_ATI_REMOTE2 is not set
841# CONFIG_USB_KEYSPAN_REMOTE is not set
842# CONFIG_USB_APPLETOUCH is not set
843# CONFIG_USB_GTCO is not set
844
845#
846# USB Imaging devices 604# USB Imaging devices
847# 605#
848# CONFIG_USB_MDC800 is not set 606# CONFIG_USB_MDC800 is not set
849
850#
851# USB Network Adapters
852#
853# CONFIG_USB_CATC is not set
854# CONFIG_USB_KAWETH is not set
855CONFIG_USB_PEGASUS=m
856# CONFIG_USB_RTL8150 is not set
857# CONFIG_USB_USBNET_MII is not set
858# CONFIG_USB_USBNET is not set
859# CONFIG_USB_MON is not set 607# CONFIG_USB_MON is not set
860 608
861# 609#
@@ -887,6 +635,7 @@ CONFIG_USB_PEGASUS=m
887# CONFIG_USB_APPLEDISPLAY is not set 635# CONFIG_USB_APPLEDISPLAY is not set
888# CONFIG_USB_LD is not set 636# CONFIG_USB_LD is not set
889# CONFIG_USB_TRANCEVIBRATOR is not set 637# CONFIG_USB_TRANCEVIBRATOR is not set
638# CONFIG_USB_IOWARRIOR is not set
890# CONFIG_USB_TEST is not set 639# CONFIG_USB_TEST is not set
891 640
892# 641#
@@ -897,38 +646,43 @@ CONFIG_USB_PEGASUS=m
897# USB Gadget Support 646# USB Gadget Support
898# 647#
899# CONFIG_USB_GADGET is not set 648# CONFIG_USB_GADGET is not set
900
901#
902# MMC/SD Card support
903#
904# CONFIG_MMC is not set 649# CONFIG_MMC is not set
905
906#
907# LED devices
908#
909# CONFIG_NEW_LEDS is not set 650# CONFIG_NEW_LEDS is not set
651# CONFIG_INFINIBAND is not set
652CONFIG_RTC_LIB=y
653CONFIG_RTC_CLASS=y
654CONFIG_RTC_HCTOSYS=y
655CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
656# CONFIG_RTC_DEBUG is not set
910 657
911# 658#
912# LED drivers 659# RTC interfaces
913#
914
915#
916# LED Triggers
917# 660#
661CONFIG_RTC_INTF_SYSFS=y
662CONFIG_RTC_INTF_PROC=y
663CONFIG_RTC_INTF_DEV=y
664# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
665# CONFIG_RTC_DRV_TEST is not set
918 666
919# 667#
920# InfiniBand support 668# SPI RTC drivers
921# 669#
922# CONFIG_INFINIBAND is not set
923 670
924# 671#
925# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 672# Platform RTC drivers
926# 673#
674# CONFIG_RTC_DRV_CMOS is not set
675# CONFIG_RTC_DRV_DS1553 is not set
676# CONFIG_RTC_DRV_STK17TA8 is not set
677# CONFIG_RTC_DRV_DS1742 is not set
678# CONFIG_RTC_DRV_M48T86 is not set
679# CONFIG_RTC_DRV_M48T59 is not set
680# CONFIG_RTC_DRV_V3020 is not set
927 681
928# 682#
929# Real Time Clock 683# on-CPU RTC drivers
930# 684#
931# CONFIG_RTC_CLASS is not set 685CONFIG_RTC_DRV_VR41XX=y
932 686
933# 687#
934# DMA Engine support 688# DMA Engine support
@@ -944,12 +698,9 @@ CONFIG_USB_PEGASUS=m
944# 698#
945 699
946# 700#
947# Auxiliary Display support 701# Userspace I/O
948#
949
950#
951# Virtualization
952# 702#
703# CONFIG_UIO is not set
953 704
954# 705#
955# File systems 706# File systems
@@ -973,7 +724,7 @@ CONFIG_INOTIFY_USER=y
973CONFIG_DNOTIFY=y 724CONFIG_DNOTIFY=y
974CONFIG_AUTOFS_FS=y 725CONFIG_AUTOFS_FS=y
975CONFIG_AUTOFS4_FS=y 726CONFIG_AUTOFS4_FS=y
976CONFIG_FUSE_FS=m 727# CONFIG_FUSE_FS is not set
977 728
978# 729#
979# CD-ROM/DVD Filesystems 730# CD-ROM/DVD Filesystems
@@ -1005,7 +756,6 @@ CONFIG_CONFIGFS_FS=m
1005# 756#
1006# CONFIG_ADFS_FS is not set 757# CONFIG_ADFS_FS is not set
1007# CONFIG_AFFS_FS is not set 758# CONFIG_AFFS_FS is not set
1008# CONFIG_ECRYPT_FS is not set
1009# CONFIG_HFS_FS is not set 759# CONFIG_HFS_FS is not set
1010# CONFIG_HFSPLUS_FS is not set 760# CONFIG_HFSPLUS_FS is not set
1011# CONFIG_BEFS_FS is not set 761# CONFIG_BEFS_FS is not set
@@ -1029,6 +779,7 @@ CONFIG_NFS_FS=y
1029CONFIG_LOCKD=y 779CONFIG_LOCKD=y
1030CONFIG_NFS_COMMON=y 780CONFIG_NFS_COMMON=y
1031CONFIG_SUNRPC=y 781CONFIG_SUNRPC=y
782# CONFIG_SUNRPC_BIND34 is not set
1032# CONFIG_RPCSEC_GSS_KRB5 is not set 783# CONFIG_RPCSEC_GSS_KRB5 is not set
1033# CONFIG_RPCSEC_GSS_SPKM3 is not set 784# CONFIG_RPCSEC_GSS_SPKM3 is not set
1034# CONFIG_SMB_FS is not set 785# CONFIG_SMB_FS is not set
@@ -1036,7 +787,6 @@ CONFIG_SUNRPC=y
1036# CONFIG_NCP_FS is not set 787# CONFIG_NCP_FS is not set
1037# CONFIG_CODA_FS is not set 788# CONFIG_CODA_FS is not set
1038# CONFIG_AFS_FS is not set 789# CONFIG_AFS_FS is not set
1039# CONFIG_9P_FS is not set
1040 790
1041# 791#
1042# Partition Types 792# Partition Types
@@ -1052,10 +802,7 @@ CONFIG_MSDOS_PARTITION=y
1052# 802#
1053# Distributed Lock Manager 803# Distributed Lock Manager
1054# 804#
1055CONFIG_DLM=m 805# CONFIG_DLM is not set
1056CONFIG_DLM_TCP=y
1057# CONFIG_DLM_SCTP is not set
1058# CONFIG_DLM_DEBUG is not set
1059 806
1060# 807#
1061# Profiling support 808# Profiling support
@@ -1073,73 +820,26 @@ CONFIG_ENABLE_MUST_CHECK=y
1073# CONFIG_DEBUG_FS is not set 820# CONFIG_DEBUG_FS is not set
1074# CONFIG_HEADERS_CHECK is not set 821# CONFIG_HEADERS_CHECK is not set
1075# CONFIG_DEBUG_KERNEL is not set 822# CONFIG_DEBUG_KERNEL is not set
1076CONFIG_LOG_BUF_SHIFT=14
1077CONFIG_CROSSCOMPILE=y 823CONFIG_CROSSCOMPILE=y
1078CONFIG_CMDLINE="mem=32M console=ttyVR0,19200 ide0=0x170,0x376,73" 824CONFIG_CMDLINE="mem=32M console=ttyVR0,19200 ide0=0x170,0x376,73"
1079 825
1080# 826#
1081# Security options 827# Security options
1082# 828#
1083CONFIG_KEYS=y 829# CONFIG_KEYS is not set
1084CONFIG_KEYS_DEBUG_PROC_KEYS=y
1085# CONFIG_SECURITY is not set 830# CONFIG_SECURITY is not set
1086 831# CONFIG_CRYPTO is not set
1087#
1088# Cryptographic options
1089#
1090CONFIG_CRYPTO=y
1091CONFIG_CRYPTO_ALGAPI=y
1092CONFIG_CRYPTO_BLKCIPHER=m
1093CONFIG_CRYPTO_HASH=y
1094CONFIG_CRYPTO_MANAGER=y
1095CONFIG_CRYPTO_HMAC=y
1096CONFIG_CRYPTO_XCBC=m
1097CONFIG_CRYPTO_NULL=m
1098CONFIG_CRYPTO_MD4=m
1099CONFIG_CRYPTO_MD5=y
1100CONFIG_CRYPTO_SHA1=m
1101CONFIG_CRYPTO_SHA256=m
1102CONFIG_CRYPTO_SHA512=m
1103CONFIG_CRYPTO_WP512=m
1104CONFIG_CRYPTO_TGR192=m
1105CONFIG_CRYPTO_GF128MUL=m
1106CONFIG_CRYPTO_ECB=m
1107CONFIG_CRYPTO_CBC=m
1108CONFIG_CRYPTO_PCBC=m
1109CONFIG_CRYPTO_LRW=m
1110CONFIG_CRYPTO_DES=m
1111CONFIG_CRYPTO_FCRYPT=m
1112CONFIG_CRYPTO_BLOWFISH=m
1113CONFIG_CRYPTO_TWOFISH=m
1114CONFIG_CRYPTO_TWOFISH_COMMON=m
1115CONFIG_CRYPTO_SERPENT=m
1116CONFIG_CRYPTO_AES=m
1117CONFIG_CRYPTO_CAST5=m
1118CONFIG_CRYPTO_CAST6=m
1119CONFIG_CRYPTO_TEA=m
1120CONFIG_CRYPTO_ARC4=m
1121CONFIG_CRYPTO_KHAZAD=m
1122CONFIG_CRYPTO_ANUBIS=m
1123CONFIG_CRYPTO_DEFLATE=m
1124CONFIG_CRYPTO_MICHAEL_MIC=m
1125CONFIG_CRYPTO_CRC32C=m
1126CONFIG_CRYPTO_CAMELLIA=m
1127# CONFIG_CRYPTO_TEST is not set
1128
1129#
1130# Hardware crypto devices
1131#
1132 832
1133# 833#
1134# Library routines 834# Library routines
1135# 835#
1136CONFIG_BITREVERSE=y
1137# CONFIG_CRC_CCITT is not set 836# CONFIG_CRC_CCITT is not set
1138CONFIG_CRC16=m 837# CONFIG_CRC16 is not set
1139CONFIG_CRC32=y 838# CONFIG_CRC_ITU_T is not set
1140CONFIG_LIBCRC32C=m 839# CONFIG_CRC32 is not set
1141CONFIG_ZLIB_INFLATE=m 840# CONFIG_CRC7 is not set
1142CONFIG_ZLIB_DEFLATE=m 841# CONFIG_LIBCRC32C is not set
1143CONFIG_PLIST=y 842CONFIG_PLIST=y
1144CONFIG_HAS_IOMEM=y 843CONFIG_HAS_IOMEM=y
1145CONFIG_HAS_IOPORT=y 844CONFIG_HAS_IOPORT=y
845CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/rbhma4200_defconfig b/arch/mips/configs/rbhma4200_defconfig
index 9913980add21..9383a598094b 100644
--- a/arch/mips/configs/rbhma4200_defconfig
+++ b/arch/mips/configs/rbhma4200_defconfig
@@ -1,58 +1,47 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21 3# Linux kernel version: 2.6.23-rc1
4# Wed May 9 23:44:19 2007 4# Thu Aug 2 22:55:57 2007
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
8# 8#
9# Machine selection 9# Machine selection
10# 10#
11# CONFIG_MIPS_MTX1 is not set 11# CONFIG_MACH_ALCHEMY is not set
12# CONFIG_MIPS_BOSPORUS is not set
13# CONFIG_MIPS_PB1000 is not set
14# CONFIG_MIPS_PB1100 is not set
15# CONFIG_MIPS_PB1500 is not set
16# CONFIG_MIPS_PB1550 is not set
17# CONFIG_MIPS_PB1200 is not set
18# CONFIG_MIPS_DB1000 is not set
19# CONFIG_MIPS_DB1100 is not set
20# CONFIG_MIPS_DB1500 is not set
21# CONFIG_MIPS_DB1550 is not set
22# CONFIG_MIPS_DB1200 is not set
23# CONFIG_MIPS_MIRAGE is not set
24# CONFIG_BASLER_EXCITE is not set 12# CONFIG_BASLER_EXCITE is not set
25# CONFIG_MIPS_COBALT is not set 13# CONFIG_MIPS_COBALT is not set
26# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
27# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
28# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
29# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
30# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
31# CONFIG_WR_PPMC is not set
32# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
33# CONFIG_MIPS_XXS1500 is not set 21# CONFIG_MARKEINS is not set
22# CONFIG_MACH_VR41XX is not set
34# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
35# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
36# CONFIG_MACH_VR41XX is not set 25# CONFIG_PMC_MSP is not set
37# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
38# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
39# CONFIG_MARKEINS is not set
40# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
41# CONFIG_SGI_IP27 is not set 29# CONFIG_SGI_IP27 is not set
42# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
43# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
44# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
45# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
46# CONFIG_SIBYTE_RHONE is not set
47# CONFIG_SIBYTE_CARMEL is not set
48# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
49# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
50# CONFIG_SIBYTE_CRHINE is not set
51# CONFIG_SIBYTE_CRHONE is not set
52# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
53# CONFIG_TOSHIBA_JMR3927 is not set 41# CONFIG_TOSHIBA_JMR3927 is not set
54CONFIG_TOSHIBA_RBTX4927=y 42CONFIG_TOSHIBA_RBTX4927=y
55# CONFIG_TOSHIBA_RBTX4938 is not set 43# CONFIG_TOSHIBA_RBTX4938 is not set
44# CONFIG_WR_PPMC is not set
56# CONFIG_TOSHIBA_FPCIB0 is not set 45# CONFIG_TOSHIBA_FPCIB0 is not set
57CONFIG_RWSEM_GENERIC_SPINLOCK=y 46CONFIG_RWSEM_GENERIC_SPINLOCK=y
58# CONFIG_ARCH_HAS_ILOG2_U32 is not set 47# CONFIG_ARCH_HAS_ILOG2_U32 is not set
@@ -65,17 +54,20 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
65CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 54CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
66CONFIG_DMA_NONCOHERENT=y 55CONFIG_DMA_NONCOHERENT=y
67CONFIG_DMA_NEED_PCI_MAP_STATE=y 56CONFIG_DMA_NEED_PCI_MAP_STATE=y
68CONFIG_I8259=y 57# CONFIG_NO_IOPORT is not set
69CONFIG_CPU_BIG_ENDIAN=y 58CONFIG_CPU_BIG_ENDIAN=y
70# CONFIG_CPU_LITTLE_ENDIAN is not set 59# CONFIG_CPU_LITTLE_ENDIAN is not set
71CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 60CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
72CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 61CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
62CONFIG_IRQ_CPU=y
63CONFIG_IRQ_TXX9=y
73CONFIG_SWAP_IO_SPACE=y 64CONFIG_SWAP_IO_SPACE=y
74CONFIG_MIPS_L1_CACHE_SHIFT=5 65CONFIG_MIPS_L1_CACHE_SHIFT=5
75 66
76# 67#
77# CPU selection 68# CPU selection
78# 69#
70# CONFIG_CPU_LOONGSON2 is not set
79# CONFIG_CPU_MIPS32_R1 is not set 71# CONFIG_CPU_MIPS32_R1 is not set
80# CONFIG_CPU_MIPS32_R2 is not set 72# CONFIG_CPU_MIPS32_R2 is not set
81# CONFIG_CPU_MIPS64_R1 is not set 73# CONFIG_CPU_MIPS64_R1 is not set
@@ -114,22 +106,18 @@ CONFIG_CPU_HAS_PREFETCH=y
114CONFIG_MIPS_MT_DISABLED=y 106CONFIG_MIPS_MT_DISABLED=y
115# CONFIG_MIPS_MT_SMP is not set 107# CONFIG_MIPS_MT_SMP is not set
116# CONFIG_MIPS_MT_SMTC is not set 108# CONFIG_MIPS_MT_SMTC is not set
117# CONFIG_MIPS_VPE_LOADER is not set
118CONFIG_CPU_HAS_LLSC=y 109CONFIG_CPU_HAS_LLSC=y
119CONFIG_CPU_HAS_SYNC=y 110CONFIG_CPU_HAS_SYNC=y
120CONFIG_GENERIC_HARDIRQS=y 111CONFIG_GENERIC_HARDIRQS=y
121CONFIG_GENERIC_IRQ_PROBE=y 112CONFIG_GENERIC_IRQ_PROBE=y
122CONFIG_ARCH_FLATMEM_ENABLE=y 113CONFIG_ARCH_FLATMEM_ENABLE=y
123CONFIG_SELECT_MEMORY_MODEL=y
124CONFIG_FLATMEM_MANUAL=y
125# CONFIG_DISCONTIGMEM_MANUAL is not set
126# CONFIG_SPARSEMEM_MANUAL is not set
127CONFIG_FLATMEM=y 114CONFIG_FLATMEM=y
128CONFIG_FLAT_NODE_MEM_MAP=y 115CONFIG_FLAT_NODE_MEM_MAP=y
129# CONFIG_SPARSEMEM_STATIC is not set 116# CONFIG_SPARSEMEM_STATIC is not set
130CONFIG_SPLIT_PTLOCK_CPUS=4 117CONFIG_SPLIT_PTLOCK_CPUS=4
131# CONFIG_RESOURCES_64BIT is not set 118# CONFIG_RESOURCES_64BIT is not set
132CONFIG_ZONE_DMA_FLAG=0 119CONFIG_ZONE_DMA_FLAG=0
120CONFIG_VIRT_TO_BUS=y
133# CONFIG_HZ_48 is not set 121# CONFIG_HZ_48 is not set
134# CONFIG_HZ_100 is not set 122# CONFIG_HZ_100 is not set
135# CONFIG_HZ_128 is not set 123# CONFIG_HZ_128 is not set
@@ -142,31 +130,24 @@ CONFIG_HZ=250
142CONFIG_PREEMPT_NONE=y 130CONFIG_PREEMPT_NONE=y
143# CONFIG_PREEMPT_VOLUNTARY is not set 131# CONFIG_PREEMPT_VOLUNTARY is not set
144# CONFIG_PREEMPT is not set 132# CONFIG_PREEMPT is not set
145# CONFIG_KEXEC is not set 133# CONFIG_SECCOMP is not set
146CONFIG_LOCKDEP_SUPPORT=y 134CONFIG_LOCKDEP_SUPPORT=y
147CONFIG_STACKTRACE_SUPPORT=y 135CONFIG_STACKTRACE_SUPPORT=y
148CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 136CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
149 137
150# 138#
151# Code maturity level options 139# General setup
152# 140#
153CONFIG_EXPERIMENTAL=y 141# CONFIG_EXPERIMENTAL is not set
154CONFIG_BROKEN_ON_SMP=y 142CONFIG_BROKEN_ON_SMP=y
155CONFIG_INIT_ENV_ARG_LIMIT=32 143CONFIG_INIT_ENV_ARG_LIMIT=32
156
157#
158# General setup
159#
160CONFIG_LOCALVERSION="" 144CONFIG_LOCALVERSION=""
161CONFIG_LOCALVERSION_AUTO=y 145CONFIG_LOCALVERSION_AUTO=y
162CONFIG_SWAP=y 146CONFIG_SWAP=y
163CONFIG_SYSVIPC=y 147CONFIG_SYSVIPC=y
164# CONFIG_IPC_NS is not set
165CONFIG_SYSVIPC_SYSCTL=y 148CONFIG_SYSVIPC_SYSCTL=y
166# CONFIG_POSIX_MQUEUE is not set
167# CONFIG_BSD_PROCESS_ACCT is not set 149# CONFIG_BSD_PROCESS_ACCT is not set
168# CONFIG_TASKSTATS is not set 150# CONFIG_TASKSTATS is not set
169# CONFIG_UTS_NS is not set
170# CONFIG_AUDIT is not set 151# CONFIG_AUDIT is not set
171CONFIG_IKCONFIG=y 152CONFIG_IKCONFIG=y
172CONFIG_IKCONFIG_PROC=y 153CONFIG_IKCONFIG_PROC=y
@@ -175,7 +156,6 @@ CONFIG_SYSFS_DEPRECATED=y
175# CONFIG_RELAY is not set 156# CONFIG_RELAY is not set
176CONFIG_BLK_DEV_INITRD=y 157CONFIG_BLK_DEV_INITRD=y
177CONFIG_INITRAMFS_SOURCE="" 158CONFIG_INITRAMFS_SOURCE=""
178CONFIG_CC_OPTIMIZE_FOR_SIZE=y
179CONFIG_SYSCTL=y 159CONFIG_SYSCTL=y
180CONFIG_EMBEDDED=y 160CONFIG_EMBEDDED=y
181CONFIG_SYSCTL_SYSCALL=y 161CONFIG_SYSCTL_SYSCALL=y
@@ -187,7 +167,11 @@ CONFIG_BUG=y
187CONFIG_ELF_CORE=y 167CONFIG_ELF_CORE=y
188CONFIG_BASE_FULL=y 168CONFIG_BASE_FULL=y
189# CONFIG_FUTEX is not set 169# CONFIG_FUTEX is not set
170CONFIG_ANON_INODES=y
190# CONFIG_EPOLL is not set 171# CONFIG_EPOLL is not set
172CONFIG_SIGNALFD=y
173CONFIG_TIMERFD=y
174CONFIG_EVENTFD=y
191CONFIG_SHMEM=y 175CONFIG_SHMEM=y
192CONFIG_VM_EVENT_COUNTERS=y 176CONFIG_VM_EVENT_COUNTERS=y
193CONFIG_SLAB=y 177CONFIG_SLAB=y
@@ -195,19 +179,11 @@ CONFIG_SLAB=y
195# CONFIG_SLOB is not set 179# CONFIG_SLOB is not set
196# CONFIG_TINY_SHMEM is not set 180# CONFIG_TINY_SHMEM is not set
197CONFIG_BASE_SMALL=0 181CONFIG_BASE_SMALL=0
198
199#
200# Loadable module support
201#
202CONFIG_MODULES=y 182CONFIG_MODULES=y
203# CONFIG_MODULE_UNLOAD is not set 183# CONFIG_MODULE_UNLOAD is not set
204# CONFIG_MODVERSIONS is not set 184# CONFIG_MODVERSIONS is not set
205# CONFIG_MODULE_SRCVERSION_ALL is not set 185# CONFIG_MODULE_SRCVERSION_ALL is not set
206CONFIG_KMOD=y 186CONFIG_KMOD=y
207
208#
209# Block layer
210#
211CONFIG_BLOCK=y 187CONFIG_BLOCK=y
212# CONFIG_LBD is not set 188# CONFIG_LBD is not set
213# CONFIG_BLK_DEV_IO_TRACE is not set 189# CONFIG_BLK_DEV_IO_TRACE is not set
@@ -273,7 +249,6 @@ CONFIG_IP_PNP=y
273# CONFIG_NET_IPIP is not set 249# CONFIG_NET_IPIP is not set
274# CONFIG_NET_IPGRE is not set 250# CONFIG_NET_IPGRE is not set
275# CONFIG_IP_MROUTE is not set 251# CONFIG_IP_MROUTE is not set
276# CONFIG_ARPD is not set
277# CONFIG_SYN_COOKIES is not set 252# CONFIG_SYN_COOKIES is not set
278# CONFIG_INET_AH is not set 253# CONFIG_INET_AH is not set
279# CONFIG_INET_ESP is not set 254# CONFIG_INET_ESP is not set
@@ -288,38 +263,17 @@ CONFIG_INET_TCP_DIAG=y
288# CONFIG_TCP_CONG_ADVANCED is not set 263# CONFIG_TCP_CONG_ADVANCED is not set
289CONFIG_TCP_CONG_CUBIC=y 264CONFIG_TCP_CONG_CUBIC=y
290CONFIG_DEFAULT_TCP_CONG="cubic" 265CONFIG_DEFAULT_TCP_CONG="cubic"
291# CONFIG_TCP_MD5SIG is not set
292# CONFIG_IPV6 is not set 266# CONFIG_IPV6 is not set
293# CONFIG_INET6_XFRM_TUNNEL is not set 267# CONFIG_INET6_XFRM_TUNNEL is not set
294# CONFIG_INET6_TUNNEL is not set 268# CONFIG_INET6_TUNNEL is not set
295# CONFIG_NETWORK_SECMARK is not set 269# CONFIG_NETWORK_SECMARK is not set
296# CONFIG_NETFILTER is not set 270# CONFIG_NETFILTER is not set
297
298#
299# DCCP Configuration (EXPERIMENTAL)
300#
301# CONFIG_IP_DCCP is not set
302
303#
304# SCTP Configuration (EXPERIMENTAL)
305#
306# CONFIG_IP_SCTP is not set
307
308#
309# TIPC Configuration (EXPERIMENTAL)
310#
311# CONFIG_TIPC is not set
312# CONFIG_ATM is not set
313# CONFIG_BRIDGE is not set 271# CONFIG_BRIDGE is not set
314# CONFIG_VLAN_8021Q is not set 272# CONFIG_VLAN_8021Q is not set
315# CONFIG_DECNET is not set 273# CONFIG_DECNET is not set
316# CONFIG_LLC2 is not set 274# CONFIG_LLC2 is not set
317# CONFIG_IPX is not set 275# CONFIG_IPX is not set
318# CONFIG_ATALK is not set 276# CONFIG_ATALK is not set
319# CONFIG_X25 is not set
320# CONFIG_LAPB is not set
321# CONFIG_ECONET is not set
322# CONFIG_WAN_ROUTER is not set
323 277
324# 278#
325# QoS and/or fair queueing 279# QoS and/or fair queueing
@@ -333,14 +287,12 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
333# CONFIG_HAMRADIO is not set 287# CONFIG_HAMRADIO is not set
334# CONFIG_IRDA is not set 288# CONFIG_IRDA is not set
335# CONFIG_BT is not set 289# CONFIG_BT is not set
336# CONFIG_AF_RXRPC is not set
337 290
338# 291#
339# Wireless 292# Wireless
340# 293#
341# CONFIG_CFG80211 is not set 294# CONFIG_CFG80211 is not set
342# CONFIG_WIRELESS_EXT is not set 295# CONFIG_WIRELESS_EXT is not set
343# CONFIG_MAC80211 is not set
344# CONFIG_IEEE80211 is not set 296# CONFIG_IEEE80211 is not set
345# CONFIG_RFKILL is not set 297# CONFIG_RFKILL is not set
346 298
@@ -354,30 +306,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
354CONFIG_STANDALONE=y 306CONFIG_STANDALONE=y
355CONFIG_PREVENT_FIRMWARE_BUILD=y 307CONFIG_PREVENT_FIRMWARE_BUILD=y
356# CONFIG_SYS_HYPERVISOR is not set 308# CONFIG_SYS_HYPERVISOR is not set
357
358#
359# Connector - unified userspace <-> kernelspace linker
360#
361# CONFIG_CONNECTOR is not set 309# CONFIG_CONNECTOR is not set
362# CONFIG_MTD is not set 310# CONFIG_MTD is not set
363
364#
365# Parallel port support
366#
367# CONFIG_PARPORT is not set 311# CONFIG_PARPORT is not set
368 312CONFIG_BLK_DEV=y
369#
370# Plug and Play support
371#
372# CONFIG_PNPACPI is not set
373
374#
375# Block devices
376#
377# CONFIG_BLK_CPQ_DA is not set 313# CONFIG_BLK_CPQ_DA is not set
378# CONFIG_BLK_CPQ_CISS_DA is not set 314# CONFIG_BLK_CPQ_CISS_DA is not set
379# CONFIG_BLK_DEV_DAC960 is not set 315# CONFIG_BLK_DEV_DAC960 is not set
380# CONFIG_BLK_DEV_UMEM is not set
381# CONFIG_BLK_DEV_COW_COMMON is not set 316# CONFIG_BLK_DEV_COW_COMMON is not set
382CONFIG_BLK_DEV_LOOP=y 317CONFIG_BLK_DEV_LOOP=y
383# CONFIG_BLK_DEV_CRYPTOLOOP is not set 318# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -389,18 +324,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
389CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 324CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
390# CONFIG_CDROM_PKTCDVD is not set 325# CONFIG_CDROM_PKTCDVD is not set
391# CONFIG_ATA_OVER_ETH is not set 326# CONFIG_ATA_OVER_ETH is not set
392 327# CONFIG_MISC_DEVICES is not set
393#
394# Misc devices
395#
396# CONFIG_PHANTOM is not set
397# CONFIG_SGI_IOC4 is not set
398# CONFIG_TIFM_CORE is not set
399# CONFIG_BLINK is not set
400
401#
402# ATA/ATAPI/MFM/RLL support
403#
404# CONFIG_IDE is not set 328# CONFIG_IDE is not set
405 329
406# 330#
@@ -408,16 +332,9 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
408# 332#
409# CONFIG_RAID_ATTRS is not set 333# CONFIG_RAID_ATTRS is not set
410# CONFIG_SCSI is not set 334# CONFIG_SCSI is not set
335# CONFIG_SCSI_DMA is not set
411# CONFIG_SCSI_NETLINK is not set 336# CONFIG_SCSI_NETLINK is not set
412
413#
414# Serial ATA (prod) and Parallel ATA (experimental) drivers
415#
416# CONFIG_ATA is not set 337# CONFIG_ATA is not set
417
418#
419# Multi-device support (RAID and LVM)
420#
421# CONFIG_MD is not set 338# CONFIG_MD is not set
422 339
423# 340#
@@ -428,83 +345,34 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
428# 345#
429# IEEE 1394 (FireWire) support 346# IEEE 1394 (FireWire) support
430# 347#
431# CONFIG_IEEE1394 is not set
432 348
433# 349#
434# I2O device support 350# An alternative FireWire stack is available with EXPERIMENTAL=y
435# 351#
352# CONFIG_IEEE1394 is not set
436# CONFIG_I2O is not set 353# CONFIG_I2O is not set
437
438#
439# Network device support
440#
441CONFIG_NETDEVICES=y 354CONFIG_NETDEVICES=y
355# CONFIG_NETDEVICES_MULTIQUEUE is not set
442# CONFIG_DUMMY is not set 356# CONFIG_DUMMY is not set
443# CONFIG_BONDING is not set 357# CONFIG_BONDING is not set
444# CONFIG_EQUALIZER is not set 358# CONFIG_EQUALIZER is not set
445# CONFIG_TUN is not set 359# CONFIG_TUN is not set
446
447#
448# ARCnet devices
449#
450# CONFIG_ARCNET is not set 360# CONFIG_ARCNET is not set
451
452#
453# PHY device support
454#
455# CONFIG_PHYLIB is not set 361# CONFIG_PHYLIB is not set
456
457#
458# Ethernet (10 or 100Mbit)
459#
460CONFIG_NET_ETHERNET=y 362CONFIG_NET_ETHERNET=y
461# CONFIG_MII is not set 363# CONFIG_MII is not set
364# CONFIG_AX88796 is not set
462# CONFIG_HAPPYMEAL is not set 365# CONFIG_HAPPYMEAL is not set
463# CONFIG_SUNGEM is not set 366# CONFIG_SUNGEM is not set
464# CONFIG_CASSINI is not set 367# CONFIG_CASSINI is not set
465# CONFIG_NET_VENDOR_3COM is not set 368# CONFIG_NET_VENDOR_3COM is not set
466# CONFIG_DM9000 is not set 369# CONFIG_DM9000 is not set
467
468#
469# Tulip family network device support
470#
471# CONFIG_NET_TULIP is not set 370# CONFIG_NET_TULIP is not set
472# CONFIG_HP100 is not set 371# CONFIG_HP100 is not set
473CONFIG_NE2000=y 372CONFIG_NE2000=y
474# CONFIG_NET_PCI is not set 373# CONFIG_NET_PCI is not set
475 374# CONFIG_NETDEV_1000 is not set
476# 375# CONFIG_NETDEV_10000 is not set
477# Ethernet (1000 Mbit)
478#
479# CONFIG_ACENIC is not set
480# CONFIG_DL2K is not set
481# CONFIG_E1000 is not set
482# CONFIG_NS83820 is not set
483# CONFIG_HAMACHI is not set
484# CONFIG_YELLOWFIN is not set
485# CONFIG_R8169 is not set
486# CONFIG_SIS190 is not set
487# CONFIG_SKGE is not set
488# CONFIG_SKY2 is not set
489# CONFIG_SK98LIN is not set
490# CONFIG_TIGON3 is not set
491# CONFIG_BNX2 is not set
492# CONFIG_QLA3XXX is not set
493# CONFIG_ATL1 is not set
494
495#
496# Ethernet (10000 Mbit)
497#
498# CONFIG_CHELSIO_T1 is not set
499# CONFIG_CHELSIO_T3 is not set
500# CONFIG_IXGB is not set
501# CONFIG_S2IO is not set
502# CONFIG_MYRI10GE is not set
503# CONFIG_NETXEN_NIC is not set
504
505#
506# Token Ring devices
507#
508# CONFIG_TR is not set 376# CONFIG_TR is not set
509 377
510# 378#
@@ -512,28 +380,13 @@ CONFIG_NE2000=y
512# 380#
513# CONFIG_WLAN_PRE80211 is not set 381# CONFIG_WLAN_PRE80211 is not set
514# CONFIG_WLAN_80211 is not set 382# CONFIG_WLAN_80211 is not set
515
516#
517# Wan interfaces
518#
519# CONFIG_WAN is not set 383# CONFIG_WAN is not set
520# CONFIG_FDDI is not set 384# CONFIG_FDDI is not set
521# CONFIG_HIPPI is not set
522# CONFIG_PPP is not set 385# CONFIG_PPP is not set
523# CONFIG_SLIP is not set 386# CONFIG_SLIP is not set
524# CONFIG_SHAPER is not set
525# CONFIG_NETCONSOLE is not set
526# CONFIG_NETPOLL is not set 387# CONFIG_NETPOLL is not set
527# CONFIG_NET_POLL_CONTROLLER is not set 388# CONFIG_NET_POLL_CONTROLLER is not set
528
529#
530# ISDN subsystem
531#
532# CONFIG_ISDN is not set 389# CONFIG_ISDN is not set
533
534#
535# Telephony Support
536#
537# CONFIG_PHONE is not set 390# CONFIG_PHONE is not set
538 391
539# 392#
@@ -577,29 +430,14 @@ CONFIG_SERIAL_TXX9_STDSERIAL=y
577CONFIG_UNIX98_PTYS=y 430CONFIG_UNIX98_PTYS=y
578CONFIG_LEGACY_PTYS=y 431CONFIG_LEGACY_PTYS=y
579CONFIG_LEGACY_PTY_COUNT=256 432CONFIG_LEGACY_PTY_COUNT=256
580
581#
582# IPMI
583#
584# CONFIG_IPMI_HANDLER is not set 433# CONFIG_IPMI_HANDLER is not set
585
586#
587# Watchdog Cards
588#
589# CONFIG_WATCHDOG is not set 434# CONFIG_WATCHDOG is not set
590# CONFIG_HW_RANDOM is not set 435# CONFIG_HW_RANDOM is not set
591# CONFIG_RTC is not set 436# CONFIG_RTC is not set
592# CONFIG_GEN_RTC is not set
593# CONFIG_DTLK is not set
594# CONFIG_R3964 is not set 437# CONFIG_R3964 is not set
595# CONFIG_APPLICOM is not set 438# CONFIG_APPLICOM is not set
596# CONFIG_DRM is not set 439# CONFIG_DRM is not set
597# CONFIG_RAW_DRIVER is not set 440# CONFIG_RAW_DRIVER is not set
598
599#
600# TPM devices
601#
602# CONFIG_TCG_TPM is not set
603CONFIG_DEVPORT=y 441CONFIG_DEVPORT=y
604# CONFIG_I2C is not set 442# CONFIG_I2C is not set
605 443
@@ -608,11 +446,8 @@ CONFIG_DEVPORT=y
608# 446#
609# CONFIG_SPI is not set 447# CONFIG_SPI is not set
610# CONFIG_SPI_MASTER is not set 448# CONFIG_SPI_MASTER is not set
611
612#
613# Dallas's 1-wire bus
614#
615# CONFIG_W1 is not set 449# CONFIG_W1 is not set
450# CONFIG_POWER_SUPPLY is not set
616# CONFIG_HWMON is not set 451# CONFIG_HWMON is not set
617 452
618# 453#
@@ -624,11 +459,8 @@ CONFIG_DEVPORT=y
624# Multimedia devices 459# Multimedia devices
625# 460#
626# CONFIG_VIDEO_DEV is not set 461# CONFIG_VIDEO_DEV is not set
627 462# CONFIG_DVB_CORE is not set
628# 463# CONFIG_DAB is not set
629# Digital Video Broadcasting Devices
630#
631# CONFIG_DVB is not set
632 464
633# 465#
634# Graphics support 466# Graphics support
@@ -640,56 +472,17 @@ CONFIG_DEVPORT=y
640# 472#
641# CONFIG_DISPLAY_SUPPORT is not set 473# CONFIG_DISPLAY_SUPPORT is not set
642# CONFIG_VGASTATE is not set 474# CONFIG_VGASTATE is not set
475# CONFIG_VIDEO_OUTPUT_CONTROL is not set
643# CONFIG_FB is not set 476# CONFIG_FB is not set
644 477
645# 478#
646# Sound 479# Sound
647# 480#
648# CONFIG_SOUND is not set 481# CONFIG_SOUND is not set
649 482# CONFIG_USB_SUPPORT is not set
650#
651# USB support
652#
653CONFIG_USB_ARCH_HAS_HCD=y
654CONFIG_USB_ARCH_HAS_OHCI=y
655CONFIG_USB_ARCH_HAS_EHCI=y
656# CONFIG_USB is not set
657
658#
659# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
660#
661
662#
663# USB Gadget Support
664#
665# CONFIG_USB_GADGET is not set
666# CONFIG_MMC is not set 483# CONFIG_MMC is not set
667
668#
669# LED devices
670#
671# CONFIG_NEW_LEDS is not set 484# CONFIG_NEW_LEDS is not set
672
673#
674# LED drivers
675#
676
677#
678# LED Triggers
679#
680
681#
682# InfiniBand support
683#
684# CONFIG_INFINIBAND is not set 485# CONFIG_INFINIBAND is not set
685
686#
687# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
688#
689
690#
691# Real Time Clock
692#
693CONFIG_RTC_LIB=y 486CONFIG_RTC_LIB=y
694CONFIG_RTC_CLASS=y 487CONFIG_RTC_CLASS=y
695CONFIG_RTC_HCTOSYS=y 488CONFIG_RTC_HCTOSYS=y
@@ -706,19 +499,18 @@ CONFIG_RTC_INTF_DEV=y
706# CONFIG_RTC_DRV_TEST is not set 499# CONFIG_RTC_DRV_TEST is not set
707 500
708# 501#
709# I2C RTC drivers
710#
711
712#
713# SPI RTC drivers 502# SPI RTC drivers
714# 503#
715 504
716# 505#
717# Platform RTC drivers 506# Platform RTC drivers
718# 507#
508# CONFIG_RTC_DRV_CMOS is not set
719# CONFIG_RTC_DRV_DS1553 is not set 509# CONFIG_RTC_DRV_DS1553 is not set
510# CONFIG_RTC_DRV_STK17TA8 is not set
720CONFIG_RTC_DRV_DS1742=y 511CONFIG_RTC_DRV_DS1742=y
721# CONFIG_RTC_DRV_M48T86 is not set 512# CONFIG_RTC_DRV_M48T86 is not set
513# CONFIG_RTC_DRV_M48T59 is not set
722# CONFIG_RTC_DRV_V3020 is not set 514# CONFIG_RTC_DRV_V3020 is not set
723 515
724# 516#
@@ -739,24 +531,19 @@ CONFIG_RTC_DRV_DS1742=y
739# 531#
740 532
741# 533#
742# Auxiliary Display support 534# Userspace I/O
743#
744
745#
746# Virtualization
747# 535#
536# CONFIG_UIO is not set
748 537
749# 538#
750# File systems 539# File systems
751# 540#
752# CONFIG_EXT2_FS is not set 541# CONFIG_EXT2_FS is not set
753# CONFIG_EXT3_FS is not set 542# CONFIG_EXT3_FS is not set
754# CONFIG_EXT4DEV_FS is not set
755# CONFIG_REISERFS_FS is not set 543# CONFIG_REISERFS_FS is not set
756# CONFIG_JFS_FS is not set 544# CONFIG_JFS_FS is not set
757CONFIG_FS_POSIX_ACL=y 545CONFIG_FS_POSIX_ACL=y
758# CONFIG_XFS_FS is not set 546# CONFIG_XFS_FS is not set
759# CONFIG_GFS2_FS is not set
760# CONFIG_OCFS2_FS is not set 547# CONFIG_OCFS2_FS is not set
761# CONFIG_MINIX_FS is not set 548# CONFIG_MINIX_FS is not set
762# CONFIG_ROMFS_FS is not set 549# CONFIG_ROMFS_FS is not set
@@ -793,18 +580,11 @@ CONFIG_TMPFS=y
793CONFIG_TMPFS_POSIX_ACL=y 580CONFIG_TMPFS_POSIX_ACL=y
794# CONFIG_HUGETLB_PAGE is not set 581# CONFIG_HUGETLB_PAGE is not set
795CONFIG_RAMFS=y 582CONFIG_RAMFS=y
796# CONFIG_CONFIGFS_FS is not set
797 583
798# 584#
799# Miscellaneous filesystems 585# Miscellaneous filesystems
800# 586#
801# CONFIG_ADFS_FS is not set
802# CONFIG_AFFS_FS is not set
803# CONFIG_HFS_FS is not set
804# CONFIG_HFSPLUS_FS is not set 587# CONFIG_HFSPLUS_FS is not set
805# CONFIG_BEFS_FS is not set
806# CONFIG_BFS_FS is not set
807# CONFIG_EFS_FS is not set
808# CONFIG_CRAMFS is not set 588# CONFIG_CRAMFS is not set
809# CONFIG_VXFS_FS is not set 589# CONFIG_VXFS_FS is not set
810# CONFIG_HPFS_FS is not set 590# CONFIG_HPFS_FS is not set
@@ -818,7 +598,6 @@ CONFIG_RAMFS=y
818CONFIG_NFS_FS=y 598CONFIG_NFS_FS=y
819CONFIG_NFS_V3=y 599CONFIG_NFS_V3=y
820# CONFIG_NFS_V3_ACL is not set 600# CONFIG_NFS_V3_ACL is not set
821# CONFIG_NFS_V4 is not set
822# CONFIG_NFS_DIRECTIO is not set 601# CONFIG_NFS_DIRECTIO is not set
823# CONFIG_NFSD is not set 602# CONFIG_NFSD is not set
824CONFIG_ROOT_NFS=y 603CONFIG_ROOT_NFS=y
@@ -826,15 +605,10 @@ CONFIG_LOCKD=y
826CONFIG_LOCKD_V4=y 605CONFIG_LOCKD_V4=y
827CONFIG_NFS_COMMON=y 606CONFIG_NFS_COMMON=y
828CONFIG_SUNRPC=y 607CONFIG_SUNRPC=y
829# CONFIG_SUNRPC_BIND34 is not set
830# CONFIG_RPCSEC_GSS_KRB5 is not set
831# CONFIG_RPCSEC_GSS_SPKM3 is not set
832# CONFIG_SMB_FS is not set 608# CONFIG_SMB_FS is not set
833# CONFIG_CIFS is not set 609# CONFIG_CIFS is not set
834# CONFIG_NCP_FS is not set 610# CONFIG_NCP_FS is not set
835# CONFIG_CODA_FS is not set 611# CONFIG_CODA_FS is not set
836# CONFIG_AFS_FS is not set
837# CONFIG_9P_FS is not set
838 612
839# 613#
840# Partition Types 614# Partition Types
@@ -848,16 +622,6 @@ CONFIG_MSDOS_PARTITION=y
848# CONFIG_NLS is not set 622# CONFIG_NLS is not set
849 623
850# 624#
851# Distributed Lock Manager
852#
853# CONFIG_DLM is not set
854
855#
856# Profiling support
857#
858# CONFIG_PROFILING is not set
859
860#
861# Kernel hacking 625# Kernel hacking
862# 626#
863CONFIG_TRACE_IRQFLAGS_SUPPORT=y 627CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -877,10 +641,6 @@ CONFIG_SYS_SUPPORTS_KGDB=y
877# 641#
878# CONFIG_KEYS is not set 642# CONFIG_KEYS is not set
879# CONFIG_SECURITY is not set 643# CONFIG_SECURITY is not set
880
881#
882# Cryptographic options
883#
884# CONFIG_CRYPTO is not set 644# CONFIG_CRYPTO is not set
885 645
886# 646#
@@ -889,7 +649,9 @@ CONFIG_SYS_SUPPORTS_KGDB=y
889CONFIG_BITREVERSE=y 649CONFIG_BITREVERSE=y
890# CONFIG_CRC_CCITT is not set 650# CONFIG_CRC_CCITT is not set
891# CONFIG_CRC16 is not set 651# CONFIG_CRC16 is not set
652# CONFIG_CRC_ITU_T is not set
892CONFIG_CRC32=y 653CONFIG_CRC32=y
654# CONFIG_CRC7 is not set
893# CONFIG_LIBCRC32C is not set 655# CONFIG_LIBCRC32C is not set
894CONFIG_HAS_IOMEM=y 656CONFIG_HAS_IOMEM=y
895CONFIG_HAS_IOPORT=y 657CONFIG_HAS_IOPORT=y
diff --git a/arch/mips/configs/rbhma4500_defconfig b/arch/mips/configs/rbhma4500_defconfig
index 40453cd7c70e..d1b56cc0fd7c 100644
--- a/arch/mips/configs/rbhma4500_defconfig
+++ b/arch/mips/configs/rbhma4500_defconfig
@@ -1,48 +1,47 @@
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-rc5 3# Linux kernel version: 2.6.23-rc1
4# Fri Jun 22 21:39:45 2007 4# Thu Aug 2 22:59:53 2007
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_LEMOTE_FULONG is not set
13# CONFIG_MACH_ALCHEMY is not set 11# CONFIG_MACH_ALCHEMY is not set
14# CONFIG_BASLER_EXCITE is not set 12# CONFIG_BASLER_EXCITE is not set
15# CONFIG_MIPS_COBALT is not set 13# CONFIG_MIPS_COBALT is not set
16# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
17# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
18# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
19# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
20# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
21# CONFIG_WR_PPMC is not set
22# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
21# CONFIG_MARKEINS is not set
22# CONFIG_MACH_VR41XX is not set
23# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
24# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
25# CONFIG_MACH_VR41XX is not set
26# CONFIG_PMC_MSP is not set 25# CONFIG_PMC_MSP is not set
27# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
28# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
29# CONFIG_MARKEINS is not set
30# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
31# CONFIG_SGI_IP27 is not set 29# CONFIG_SGI_IP27 is not set
32# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
33# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
34# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
35# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
36# CONFIG_SIBYTE_RHONE is not set
37# CONFIG_SIBYTE_CARMEL is not set
38# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
39# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
40# CONFIG_SIBYTE_CRHINE is not set
41# CONFIG_SIBYTE_CRHONE is not set
42# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
43# CONFIG_TOSHIBA_JMR3927 is not set 41# CONFIG_TOSHIBA_JMR3927 is not set
44# CONFIG_TOSHIBA_RBTX4927 is not set 42# CONFIG_TOSHIBA_RBTX4927 is not set
45CONFIG_TOSHIBA_RBTX4938=y 43CONFIG_TOSHIBA_RBTX4938=y
44# CONFIG_WR_PPMC is not set
46 45
47# 46#
48# Multiplex Pin Select 47# Multiplex Pin Select
@@ -61,17 +60,16 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
61CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 60CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
62CONFIG_DMA_NONCOHERENT=y 61CONFIG_DMA_NONCOHERENT=y
63CONFIG_DMA_NEED_PCI_MAP_STATE=y 62CONFIG_DMA_NEED_PCI_MAP_STATE=y
64CONFIG_GENERIC_ISA_DMA=y
65CONFIG_I8259=y
66# CONFIG_NO_IOPORT is not set 63# CONFIG_NO_IOPORT is not set
67CONFIG_GENERIC_GPIO=y 64CONFIG_GENERIC_GPIO=y
68# CONFIG_CPU_BIG_ENDIAN is not set 65# CONFIG_CPU_BIG_ENDIAN is not set
69CONFIG_CPU_LITTLE_ENDIAN=y 66CONFIG_CPU_LITTLE_ENDIAN=y
70CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 67CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
71CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 68CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
69CONFIG_IRQ_CPU=y
70CONFIG_IRQ_TXX9=y
72CONFIG_SWAP_IO_SPACE=y 71CONFIG_SWAP_IO_SPACE=y
73CONFIG_MIPS_L1_CACHE_SHIFT=5 72CONFIG_MIPS_L1_CACHE_SHIFT=5
74CONFIG_HAVE_STD_PC_SERIAL_PORT=y
75 73
76# 74#
77# CPU selection 75# CPU selection
@@ -114,22 +112,18 @@ CONFIG_CPU_HAS_PREFETCH=y
114CONFIG_MIPS_MT_DISABLED=y 112CONFIG_MIPS_MT_DISABLED=y
115# CONFIG_MIPS_MT_SMP is not set 113# CONFIG_MIPS_MT_SMP is not set
116# CONFIG_MIPS_MT_SMTC is not set 114# CONFIG_MIPS_MT_SMTC is not set
117# CONFIG_MIPS_VPE_LOADER is not set
118CONFIG_CPU_HAS_LLSC=y 115CONFIG_CPU_HAS_LLSC=y
119CONFIG_CPU_HAS_SYNC=y 116CONFIG_CPU_HAS_SYNC=y
120CONFIG_GENERIC_HARDIRQS=y 117CONFIG_GENERIC_HARDIRQS=y
121CONFIG_GENERIC_IRQ_PROBE=y 118CONFIG_GENERIC_IRQ_PROBE=y
122CONFIG_ARCH_FLATMEM_ENABLE=y 119CONFIG_ARCH_FLATMEM_ENABLE=y
123CONFIG_SELECT_MEMORY_MODEL=y
124CONFIG_FLATMEM_MANUAL=y
125# CONFIG_DISCONTIGMEM_MANUAL is not set
126# CONFIG_SPARSEMEM_MANUAL is not set
127CONFIG_FLATMEM=y 120CONFIG_FLATMEM=y
128CONFIG_FLAT_NODE_MEM_MAP=y 121CONFIG_FLAT_NODE_MEM_MAP=y
129# CONFIG_SPARSEMEM_STATIC is not set 122# CONFIG_SPARSEMEM_STATIC is not set
130CONFIG_SPLIT_PTLOCK_CPUS=4 123CONFIG_SPLIT_PTLOCK_CPUS=4
131# CONFIG_RESOURCES_64BIT is not set 124# CONFIG_RESOURCES_64BIT is not set
132CONFIG_ZONE_DMA_FLAG=1 125CONFIG_ZONE_DMA_FLAG=0
126CONFIG_VIRT_TO_BUS=y
133# CONFIG_HZ_48 is not set 127# CONFIG_HZ_48 is not set
134# CONFIG_HZ_100 is not set 128# CONFIG_HZ_100 is not set
135# CONFIG_HZ_128 is not set 129# CONFIG_HZ_128 is not set
@@ -142,31 +136,24 @@ CONFIG_HZ=250
142CONFIG_PREEMPT_NONE=y 136CONFIG_PREEMPT_NONE=y
143# CONFIG_PREEMPT_VOLUNTARY is not set 137# CONFIG_PREEMPT_VOLUNTARY is not set
144# CONFIG_PREEMPT is not set 138# CONFIG_PREEMPT is not set
145# CONFIG_KEXEC is not set 139# CONFIG_SECCOMP is not set
146CONFIG_LOCKDEP_SUPPORT=y 140CONFIG_LOCKDEP_SUPPORT=y
147CONFIG_STACKTRACE_SUPPORT=y 141CONFIG_STACKTRACE_SUPPORT=y
148CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 142CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
149 143
150# 144#
151# Code maturity level options 145# General setup
152# 146#
153CONFIG_EXPERIMENTAL=y 147# CONFIG_EXPERIMENTAL is not set
154CONFIG_BROKEN_ON_SMP=y 148CONFIG_BROKEN_ON_SMP=y
155CONFIG_INIT_ENV_ARG_LIMIT=32 149CONFIG_INIT_ENV_ARG_LIMIT=32
156
157#
158# General setup
159#
160CONFIG_LOCALVERSION="" 150CONFIG_LOCALVERSION=""
161CONFIG_LOCALVERSION_AUTO=y 151CONFIG_LOCALVERSION_AUTO=y
162CONFIG_SWAP=y 152CONFIG_SWAP=y
163CONFIG_SYSVIPC=y 153CONFIG_SYSVIPC=y
164# CONFIG_IPC_NS is not set
165CONFIG_SYSVIPC_SYSCTL=y 154CONFIG_SYSVIPC_SYSCTL=y
166# CONFIG_POSIX_MQUEUE is not set
167# CONFIG_BSD_PROCESS_ACCT is not set 155# CONFIG_BSD_PROCESS_ACCT is not set
168# CONFIG_TASKSTATS is not set 156# CONFIG_TASKSTATS is not set
169# CONFIG_UTS_NS is not set
170# CONFIG_AUDIT is not set 157# CONFIG_AUDIT is not set
171CONFIG_IKCONFIG=y 158CONFIG_IKCONFIG=y
172CONFIG_IKCONFIG_PROC=y 159CONFIG_IKCONFIG_PROC=y
@@ -175,7 +162,6 @@ CONFIG_SYSFS_DEPRECATED=y
175# CONFIG_RELAY is not set 162# CONFIG_RELAY is not set
176CONFIG_BLK_DEV_INITRD=y 163CONFIG_BLK_DEV_INITRD=y
177CONFIG_INITRAMFS_SOURCE="" 164CONFIG_INITRAMFS_SOURCE=""
178CONFIG_CC_OPTIMIZE_FOR_SIZE=y
179CONFIG_SYSCTL=y 165CONFIG_SYSCTL=y
180CONFIG_EMBEDDED=y 166CONFIG_EMBEDDED=y
181CONFIG_SYSCTL_SYSCALL=y 167CONFIG_SYSCTL_SYSCALL=y
@@ -199,19 +185,11 @@ CONFIG_SLAB=y
199# CONFIG_SLOB is not set 185# CONFIG_SLOB is not set
200# CONFIG_TINY_SHMEM is not set 186# CONFIG_TINY_SHMEM is not set
201CONFIG_BASE_SMALL=0 187CONFIG_BASE_SMALL=0
202
203#
204# Loadable module support
205#
206CONFIG_MODULES=y 188CONFIG_MODULES=y
207# CONFIG_MODULE_UNLOAD is not set 189# CONFIG_MODULE_UNLOAD is not set
208# CONFIG_MODVERSIONS is not set 190# CONFIG_MODVERSIONS is not set
209# CONFIG_MODULE_SRCVERSION_ALL is not set 191# CONFIG_MODULE_SRCVERSION_ALL is not set
210CONFIG_KMOD=y 192CONFIG_KMOD=y
211
212#
213# Block layer
214#
215CONFIG_BLOCK=y 193CONFIG_BLOCK=y
216# CONFIG_LBD is not set 194# CONFIG_LBD is not set
217# CONFIG_BLK_DEV_IO_TRACE is not set 195# CONFIG_BLK_DEV_IO_TRACE is not set
@@ -277,7 +255,6 @@ CONFIG_IP_PNP=y
277# CONFIG_NET_IPIP is not set 255# CONFIG_NET_IPIP is not set
278# CONFIG_NET_IPGRE is not set 256# CONFIG_NET_IPGRE is not set
279# CONFIG_IP_MROUTE is not set 257# CONFIG_IP_MROUTE is not set
280# CONFIG_ARPD is not set
281# CONFIG_SYN_COOKIES is not set 258# CONFIG_SYN_COOKIES is not set
282# CONFIG_INET_AH is not set 259# CONFIG_INET_AH is not set
283# CONFIG_INET_ESP is not set 260# CONFIG_INET_ESP is not set
@@ -292,26 +269,17 @@ CONFIG_INET_TCP_DIAG=y
292# CONFIG_TCP_CONG_ADVANCED is not set 269# CONFIG_TCP_CONG_ADVANCED is not set
293CONFIG_TCP_CONG_CUBIC=y 270CONFIG_TCP_CONG_CUBIC=y
294CONFIG_DEFAULT_TCP_CONG="cubic" 271CONFIG_DEFAULT_TCP_CONG="cubic"
295# CONFIG_TCP_MD5SIG is not set
296# CONFIG_IPV6 is not set 272# CONFIG_IPV6 is not set
297# CONFIG_INET6_XFRM_TUNNEL is not set 273# CONFIG_INET6_XFRM_TUNNEL is not set
298# CONFIG_INET6_TUNNEL is not set 274# CONFIG_INET6_TUNNEL is not set
299# CONFIG_NETWORK_SECMARK is not set 275# CONFIG_NETWORK_SECMARK is not set
300# CONFIG_NETFILTER is not set 276# CONFIG_NETFILTER is not set
301# CONFIG_IP_DCCP is not set
302# CONFIG_IP_SCTP is not set
303# CONFIG_TIPC is not set
304# CONFIG_ATM is not set
305# CONFIG_BRIDGE is not set 277# CONFIG_BRIDGE is not set
306# CONFIG_VLAN_8021Q is not set 278# CONFIG_VLAN_8021Q is not set
307# CONFIG_DECNET is not set 279# CONFIG_DECNET is not set
308# CONFIG_LLC2 is not set 280# CONFIG_LLC2 is not set
309# CONFIG_IPX is not set 281# CONFIG_IPX is not set
310# CONFIG_ATALK is not set 282# CONFIG_ATALK is not set
311# CONFIG_X25 is not set
312# CONFIG_LAPB is not set
313# CONFIG_ECONET is not set
314# CONFIG_WAN_ROUTER is not set
315 283
316# 284#
317# QoS and/or fair queueing 285# QoS and/or fair queueing
@@ -325,14 +293,12 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
325# CONFIG_HAMRADIO is not set 293# CONFIG_HAMRADIO is not set
326# CONFIG_IRDA is not set 294# CONFIG_IRDA is not set
327# CONFIG_BT is not set 295# CONFIG_BT is not set
328# CONFIG_AF_RXRPC is not set
329 296
330# 297#
331# Wireless 298# Wireless
332# 299#
333# CONFIG_CFG80211 is not set 300# CONFIG_CFG80211 is not set
334# CONFIG_WIRELESS_EXT is not set 301# CONFIG_WIRELESS_EXT is not set
335# CONFIG_MAC80211 is not set
336# CONFIG_IEEE80211 is not set 302# CONFIG_IEEE80211 is not set
337# CONFIG_RFKILL is not set 303# CONFIG_RFKILL is not set
338 304
@@ -346,30 +312,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
346CONFIG_STANDALONE=y 312CONFIG_STANDALONE=y
347CONFIG_PREVENT_FIRMWARE_BUILD=y 313CONFIG_PREVENT_FIRMWARE_BUILD=y
348# CONFIG_SYS_HYPERVISOR is not set 314# CONFIG_SYS_HYPERVISOR is not set
349
350#
351# Connector - unified userspace <-> kernelspace linker
352#
353# CONFIG_CONNECTOR is not set 315# CONFIG_CONNECTOR is not set
354# CONFIG_MTD is not set 316# CONFIG_MTD is not set
355
356#
357# Parallel port support
358#
359# CONFIG_PARPORT is not set 317# CONFIG_PARPORT is not set
360 318CONFIG_BLK_DEV=y
361#
362# Plug and Play support
363#
364# CONFIG_PNPACPI is not set
365
366#
367# Block devices
368#
369# CONFIG_BLK_CPQ_DA is not set 319# CONFIG_BLK_CPQ_DA is not set
370# CONFIG_BLK_CPQ_CISS_DA is not set 320# CONFIG_BLK_CPQ_CISS_DA is not set
371# CONFIG_BLK_DEV_DAC960 is not set 321# CONFIG_BLK_DEV_DAC960 is not set
372# CONFIG_BLK_DEV_UMEM is not set
373# CONFIG_BLK_DEV_COW_COMMON is not set 322# CONFIG_BLK_DEV_COW_COMMON is not set
374CONFIG_BLK_DEV_LOOP=y 323CONFIG_BLK_DEV_LOOP=y
375# CONFIG_BLK_DEV_CRYPTOLOOP is not set 324# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -381,14 +330,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
381CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 330CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
382# CONFIG_CDROM_PKTCDVD is not set 331# CONFIG_CDROM_PKTCDVD is not set
383# CONFIG_ATA_OVER_ETH is not set 332# CONFIG_ATA_OVER_ETH is not set
384 333# CONFIG_MISC_DEVICES is not set
385#
386# Misc devices
387#
388# CONFIG_PHANTOM is not set
389# CONFIG_SGI_IOC4 is not set
390# CONFIG_TIFM_CORE is not set
391# CONFIG_BLINK is not set
392# CONFIG_IDE is not set 334# CONFIG_IDE is not set
393 335
394# 336#
@@ -396,12 +338,9 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
396# 338#
397# CONFIG_RAID_ATTRS is not set 339# CONFIG_RAID_ATTRS is not set
398# CONFIG_SCSI is not set 340# CONFIG_SCSI is not set
341# CONFIG_SCSI_DMA is not set
399# CONFIG_SCSI_NETLINK is not set 342# CONFIG_SCSI_NETLINK is not set
400# CONFIG_ATA is not set 343# CONFIG_ATA is not set
401
402#
403# Multi-device support (RAID and LVM)
404#
405# CONFIG_MD is not set 344# CONFIG_MD is not set
406 345
407# 346#
@@ -412,39 +351,28 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
412# 351#
413# IEEE 1394 (FireWire) support 352# IEEE 1394 (FireWire) support
414# 353#
415# CONFIG_FIREWIRE is not set
416# CONFIG_IEEE1394 is not set
417 354
418# 355#
419# I2O device support 356# An alternative FireWire stack is available with EXPERIMENTAL=y
420# 357#
358# CONFIG_IEEE1394 is not set
421# CONFIG_I2O is not set 359# CONFIG_I2O is not set
422
423#
424# Network device support
425#
426CONFIG_NETDEVICES=y 360CONFIG_NETDEVICES=y
361# CONFIG_NETDEVICES_MULTIQUEUE is not set
427# CONFIG_DUMMY is not set 362# CONFIG_DUMMY is not set
428# CONFIG_BONDING is not set 363# CONFIG_BONDING is not set
429# CONFIG_EQUALIZER is not set 364# CONFIG_EQUALIZER is not set
430# CONFIG_TUN is not set 365# CONFIG_TUN is not set
431# CONFIG_ARCNET is not set 366# CONFIG_ARCNET is not set
432# CONFIG_PHYLIB is not set 367# CONFIG_PHYLIB is not set
433
434#
435# Ethernet (10 or 100Mbit)
436#
437CONFIG_NET_ETHERNET=y 368CONFIG_NET_ETHERNET=y
438CONFIG_MII=y 369CONFIG_MII=y
370# CONFIG_AX88796 is not set
439# CONFIG_HAPPYMEAL is not set 371# CONFIG_HAPPYMEAL is not set
440# CONFIG_SUNGEM is not set 372# CONFIG_SUNGEM is not set
441# CONFIG_CASSINI is not set 373# CONFIG_CASSINI is not set
442# CONFIG_NET_VENDOR_3COM is not set 374# CONFIG_NET_VENDOR_3COM is not set
443# CONFIG_DM9000 is not set 375# CONFIG_DM9000 is not set
444
445#
446# Tulip family network device support
447#
448# CONFIG_NET_TULIP is not set 376# CONFIG_NET_TULIP is not set
449# CONFIG_HP100 is not set 377# CONFIG_HP100 is not set
450CONFIG_NE2000=y 378CONFIG_NE2000=y
@@ -461,14 +389,12 @@ CONFIG_TC35815=y
461# CONFIG_FEALNX is not set 389# CONFIG_FEALNX is not set
462# CONFIG_NATSEMI is not set 390# CONFIG_NATSEMI is not set
463# CONFIG_NE2K_PCI is not set 391# CONFIG_NE2K_PCI is not set
464# CONFIG_8139CP is not set
465# CONFIG_8139TOO is not set 392# CONFIG_8139TOO is not set
466# CONFIG_SIS900 is not set 393# CONFIG_SIS900 is not set
467# CONFIG_EPIC100 is not set 394# CONFIG_EPIC100 is not set
468# CONFIG_SUNDANCE is not set 395# CONFIG_SUNDANCE is not set
469# CONFIG_TLAN is not set 396# CONFIG_TLAN is not set
470# CONFIG_VIA_RHINE is not set 397# CONFIG_VIA_RHINE is not set
471# CONFIG_SC92031 is not set
472# CONFIG_NETDEV_1000 is not set 398# CONFIG_NETDEV_1000 is not set
473# CONFIG_NETDEV_10000 is not set 399# CONFIG_NETDEV_10000 is not set
474# CONFIG_TR is not set 400# CONFIG_TR is not set
@@ -480,22 +406,11 @@ CONFIG_TC35815=y
480# CONFIG_WLAN_80211 is not set 406# CONFIG_WLAN_80211 is not set
481# CONFIG_WAN is not set 407# CONFIG_WAN is not set
482# CONFIG_FDDI is not set 408# CONFIG_FDDI is not set
483# CONFIG_HIPPI is not set
484# CONFIG_PPP is not set 409# CONFIG_PPP is not set
485# CONFIG_SLIP is not set 410# CONFIG_SLIP is not set
486# CONFIG_SHAPER is not set
487# CONFIG_NETCONSOLE is not set
488# CONFIG_NETPOLL is not set 411# CONFIG_NETPOLL is not set
489# CONFIG_NET_POLL_CONTROLLER is not set 412# CONFIG_NET_POLL_CONTROLLER is not set
490
491#
492# ISDN subsystem
493#
494# CONFIG_ISDN is not set 413# CONFIG_ISDN is not set
495
496#
497# Telephony Support
498#
499# CONFIG_PHONE is not set 414# CONFIG_PHONE is not set
500 415
501# 416#
@@ -534,24 +449,14 @@ CONFIG_SERIAL_TXX9_STDSERIAL=y
534CONFIG_UNIX98_PTYS=y 449CONFIG_UNIX98_PTYS=y
535CONFIG_LEGACY_PTYS=y 450CONFIG_LEGACY_PTYS=y
536CONFIG_LEGACY_PTY_COUNT=256 451CONFIG_LEGACY_PTY_COUNT=256
537
538#
539# IPMI
540#
541# CONFIG_IPMI_HANDLER is not set 452# CONFIG_IPMI_HANDLER is not set
542# CONFIG_WATCHDOG is not set 453# CONFIG_WATCHDOG is not set
543# CONFIG_HW_RANDOM is not set 454# CONFIG_HW_RANDOM is not set
544# CONFIG_RTC is not set 455# CONFIG_RTC is not set
545# CONFIG_GEN_RTC is not set
546# CONFIG_R3964 is not set 456# CONFIG_R3964 is not set
547# CONFIG_APPLICOM is not set 457# CONFIG_APPLICOM is not set
548# CONFIG_DRM is not set 458# CONFIG_DRM is not set
549# CONFIG_RAW_DRIVER is not set 459# CONFIG_RAW_DRIVER is not set
550
551#
552# TPM devices
553#
554# CONFIG_TCG_TPM is not set
555CONFIG_DEVPORT=y 460CONFIG_DEVPORT=y
556# CONFIG_I2C is not set 461# CONFIG_I2C is not set
557 462
@@ -564,19 +469,15 @@ CONFIG_SPI_MASTER=y
564# 469#
565# SPI Master Controller Drivers 470# SPI Master Controller Drivers
566# 471#
567# CONFIG_SPI_BITBANG is not set
568CONFIG_SPI_TXX9=y 472CONFIG_SPI_TXX9=y
569 473
570# 474#
571# SPI Protocol Masters 475# SPI Protocol Masters
572# 476#
573CONFIG_SPI_AT25=y 477CONFIG_SPI_AT25=y
574# CONFIG_SPI_SPIDEV is not set 478# CONFIG_SPI_TLE62X0 is not set
575
576#
577# Dallas's 1-wire bus
578#
579# CONFIG_W1 is not set 479# CONFIG_W1 is not set
480# CONFIG_POWER_SUPPLY is not set
580# CONFIG_HWMON is not set 481# CONFIG_HWMON is not set
581 482
582# 483#
@@ -601,56 +502,17 @@ CONFIG_SPI_AT25=y
601# 502#
602# CONFIG_DISPLAY_SUPPORT is not set 503# CONFIG_DISPLAY_SUPPORT is not set
603# CONFIG_VGASTATE is not set 504# CONFIG_VGASTATE is not set
505# CONFIG_VIDEO_OUTPUT_CONTROL is not set
604# CONFIG_FB is not set 506# CONFIG_FB is not set
605 507
606# 508#
607# Sound 509# Sound
608# 510#
609# CONFIG_SOUND is not set 511# CONFIG_SOUND is not set
610 512# CONFIG_USB_SUPPORT is not set
611#
612# USB support
613#
614CONFIG_USB_ARCH_HAS_HCD=y
615CONFIG_USB_ARCH_HAS_OHCI=y
616CONFIG_USB_ARCH_HAS_EHCI=y
617# CONFIG_USB is not set
618
619#
620# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
621#
622
623#
624# USB Gadget Support
625#
626# CONFIG_USB_GADGET is not set
627# CONFIG_MMC is not set 513# CONFIG_MMC is not set
628
629#
630# LED devices
631#
632# CONFIG_NEW_LEDS is not set 514# CONFIG_NEW_LEDS is not set
633
634#
635# LED drivers
636#
637
638#
639# LED Triggers
640#
641
642#
643# InfiniBand support
644#
645# CONFIG_INFINIBAND is not set 515# CONFIG_INFINIBAND is not set
646
647#
648# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
649#
650
651#
652# Real Time Clock
653#
654CONFIG_RTC_LIB=y 516CONFIG_RTC_LIB=y
655CONFIG_RTC_CLASS=y 517CONFIG_RTC_CLASS=y
656CONFIG_RTC_HCTOSYS=y 518CONFIG_RTC_HCTOSYS=y
@@ -667,10 +529,6 @@ CONFIG_RTC_INTF_DEV_UIE_EMUL=y
667# CONFIG_RTC_DRV_TEST is not set 529# CONFIG_RTC_DRV_TEST is not set
668 530
669# 531#
670# I2C RTC drivers
671#
672
673#
674# SPI RTC drivers 532# SPI RTC drivers
675# 533#
676CONFIG_RTC_DRV_RS5C348=y 534CONFIG_RTC_DRV_RS5C348=y
@@ -681,8 +539,10 @@ CONFIG_RTC_DRV_RS5C348=y
681# 539#
682# CONFIG_RTC_DRV_CMOS is not set 540# CONFIG_RTC_DRV_CMOS is not set
683# CONFIG_RTC_DRV_DS1553 is not set 541# CONFIG_RTC_DRV_DS1553 is not set
542# CONFIG_RTC_DRV_STK17TA8 is not set
684# CONFIG_RTC_DRV_DS1742 is not set 543# CONFIG_RTC_DRV_DS1742 is not set
685# CONFIG_RTC_DRV_M48T86 is not set 544# CONFIG_RTC_DRV_M48T86 is not set
545# CONFIG_RTC_DRV_M48T59 is not set
686# CONFIG_RTC_DRV_V3020 is not set 546# CONFIG_RTC_DRV_V3020 is not set
687 547
688# 548#
@@ -703,16 +563,19 @@ CONFIG_RTC_DRV_RS5C348=y
703# 563#
704 564
705# 565#
566# Userspace I/O
567#
568# CONFIG_UIO is not set
569
570#
706# File systems 571# File systems
707# 572#
708# CONFIG_EXT2_FS is not set 573# CONFIG_EXT2_FS is not set
709# CONFIG_EXT3_FS is not set 574# CONFIG_EXT3_FS is not set
710# CONFIG_EXT4DEV_FS is not set
711# CONFIG_REISERFS_FS is not set 575# CONFIG_REISERFS_FS is not set
712# CONFIG_JFS_FS is not set 576# CONFIG_JFS_FS is not set
713CONFIG_FS_POSIX_ACL=y 577CONFIG_FS_POSIX_ACL=y
714# CONFIG_XFS_FS is not set 578# CONFIG_XFS_FS is not set
715# CONFIG_GFS2_FS is not set
716# CONFIG_OCFS2_FS is not set 579# CONFIG_OCFS2_FS is not set
717# CONFIG_MINIX_FS is not set 580# CONFIG_MINIX_FS is not set
718# CONFIG_ROMFS_FS is not set 581# CONFIG_ROMFS_FS is not set
@@ -749,18 +612,11 @@ CONFIG_TMPFS=y
749CONFIG_TMPFS_POSIX_ACL=y 612CONFIG_TMPFS_POSIX_ACL=y
750# CONFIG_HUGETLB_PAGE is not set 613# CONFIG_HUGETLB_PAGE is not set
751CONFIG_RAMFS=y 614CONFIG_RAMFS=y
752# CONFIG_CONFIGFS_FS is not set
753 615
754# 616#
755# Miscellaneous filesystems 617# Miscellaneous filesystems
756# 618#
757# CONFIG_ADFS_FS is not set
758# CONFIG_AFFS_FS is not set
759# CONFIG_HFS_FS is not set
760# CONFIG_HFSPLUS_FS is not set 619# CONFIG_HFSPLUS_FS is not set
761# CONFIG_BEFS_FS is not set
762# CONFIG_BFS_FS is not set
763# CONFIG_EFS_FS is not set
764# CONFIG_CRAMFS is not set 620# CONFIG_CRAMFS is not set
765# CONFIG_VXFS_FS is not set 621# CONFIG_VXFS_FS is not set
766# CONFIG_HPFS_FS is not set 622# CONFIG_HPFS_FS is not set
@@ -774,7 +630,6 @@ CONFIG_RAMFS=y
774CONFIG_NFS_FS=y 630CONFIG_NFS_FS=y
775CONFIG_NFS_V3=y 631CONFIG_NFS_V3=y
776# CONFIG_NFS_V3_ACL is not set 632# CONFIG_NFS_V3_ACL is not set
777# CONFIG_NFS_V4 is not set
778# CONFIG_NFS_DIRECTIO is not set 633# CONFIG_NFS_DIRECTIO is not set
779# CONFIG_NFSD is not set 634# CONFIG_NFSD is not set
780CONFIG_ROOT_NFS=y 635CONFIG_ROOT_NFS=y
@@ -782,15 +637,10 @@ CONFIG_LOCKD=y
782CONFIG_LOCKD_V4=y 637CONFIG_LOCKD_V4=y
783CONFIG_NFS_COMMON=y 638CONFIG_NFS_COMMON=y
784CONFIG_SUNRPC=y 639CONFIG_SUNRPC=y
785# CONFIG_SUNRPC_BIND34 is not set
786# CONFIG_RPCSEC_GSS_KRB5 is not set
787# CONFIG_RPCSEC_GSS_SPKM3 is not set
788# CONFIG_SMB_FS is not set 640# CONFIG_SMB_FS is not set
789# CONFIG_CIFS is not set 641# CONFIG_CIFS is not set
790# CONFIG_NCP_FS is not set 642# CONFIG_NCP_FS is not set
791# CONFIG_CODA_FS is not set 643# CONFIG_CODA_FS is not set
792# CONFIG_AFS_FS is not set
793# CONFIG_9P_FS is not set
794 644
795# 645#
796# Partition Types 646# Partition Types
@@ -804,16 +654,6 @@ CONFIG_MSDOS_PARTITION=y
804# CONFIG_NLS is not set 654# CONFIG_NLS is not set
805 655
806# 656#
807# Distributed Lock Manager
808#
809# CONFIG_DLM is not set
810
811#
812# Profiling support
813#
814# CONFIG_PROFILING is not set
815
816#
817# Kernel hacking 657# Kernel hacking
818# 658#
819CONFIG_TRACE_IRQFLAGS_SUPPORT=y 659CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -833,10 +673,6 @@ CONFIG_SYS_SUPPORTS_KGDB=y
833# 673#
834# CONFIG_KEYS is not set 674# CONFIG_KEYS is not set
835# CONFIG_SECURITY is not set 675# CONFIG_SECURITY is not set
836
837#
838# Cryptographic options
839#
840# CONFIG_CRYPTO is not set 676# CONFIG_CRYPTO is not set
841 677
842# 678#
@@ -847,6 +683,7 @@ CONFIG_BITREVERSE=y
847# CONFIG_CRC16 is not set 683# CONFIG_CRC16 is not set
848# CONFIG_CRC_ITU_T is not set 684# CONFIG_CRC_ITU_T is not set
849CONFIG_CRC32=y 685CONFIG_CRC32=y
686# CONFIG_CRC7 is not set
850# CONFIG_LIBCRC32C is not set 687# CONFIG_LIBCRC32C is not set
851CONFIG_HAS_IOMEM=y 688CONFIG_HAS_IOMEM=y
852CONFIG_HAS_IOPORT=y 689CONFIG_HAS_IOPORT=y
diff --git a/arch/mips/configs/sb1250-swarm_defconfig b/arch/mips/configs/sb1250-swarm_defconfig
index e72fdf36b3fe..93f9e8331ad7 100644
--- a/arch/mips/configs/sb1250-swarm_defconfig
+++ b/arch/mips/configs/sb1250-swarm_defconfig
@@ -655,8 +655,8 @@ CONFIG_MOXA_SMARTIO_NEW=m
655# CONFIG_SX is not set 655# CONFIG_SX is not set
656# CONFIG_RIO is not set 656# CONFIG_RIO is not set
657# CONFIG_STALDRV is not set 657# CONFIG_STALDRV is not set
658CONFIG_SIBYTE_SB1250_DUART=y 658CONFIG_SERIAL_SB1250_DUART=y
659CONFIG_SIBYTE_SB1250_DUART_CONSOLE=y 659CONFIG_SERIAL_SB1250_DUART_CONSOLE=y
660 660
661# 661#
662# Serial drivers 662# Serial drivers
diff --git a/arch/mips/configs/tb0219_defconfig b/arch/mips/configs/tb0219_defconfig
index e9f2cef4c716..326aa7aa40ea 100644
--- a/arch/mips/configs/tb0219_defconfig
+++ b/arch/mips/configs/tb0219_defconfig
@@ -1,60 +1,47 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc6 3# Linux kernel version: 2.6.23-rc2
4# Sun Apr 15 01:06:01 2007 4# Wed Aug 8 16:11:47 2007
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
26# CONFIG_MIPS_COBALT is not set 13# CONFIG_MIPS_COBALT is not set
27# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
28# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 21# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 22CONFIG_MACH_VR41XX=y
36# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
38CONFIG_MACH_VR41XX=y 25# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
43# CONFIG_SGI_IP27 is not set 29# CONFIG_SGI_IP27 is not set
44# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 41# CONFIG_TOSHIBA_JMR3927 is not set
56# CONFIG_TOSHIBA_RBTX4927 is not set 42# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 43# CONFIG_TOSHIBA_RBTX4938 is not set
44# CONFIG_WR_PPMC is not set
58# CONFIG_CASIO_E55 is not set 45# CONFIG_CASIO_E55 is not set
59# CONFIG_IBM_WORKPAD is not set 46# CONFIG_IBM_WORKPAD is not set
60# CONFIG_NEC_CMBVR4133 is not set 47# CONFIG_NEC_CMBVR4133 is not set
@@ -76,6 +63,8 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
76CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 63CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
77CONFIG_DMA_NONCOHERENT=y 64CONFIG_DMA_NONCOHERENT=y
78CONFIG_DMA_NEED_PCI_MAP_STATE=y 65CONFIG_DMA_NEED_PCI_MAP_STATE=y
66# CONFIG_HOTPLUG_CPU is not set
67# CONFIG_NO_IOPORT is not set
79# CONFIG_CPU_BIG_ENDIAN is not set 68# CONFIG_CPU_BIG_ENDIAN is not set
80CONFIG_CPU_LITTLE_ENDIAN=y 69CONFIG_CPU_LITTLE_ENDIAN=y
81CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 70CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
@@ -85,6 +74,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
85# 74#
86# CPU selection 75# CPU selection
87# 76#
77# CONFIG_CPU_LOONGSON2 is not set
88# CONFIG_CPU_MIPS32_R1 is not set 78# CONFIG_CPU_MIPS32_R1 is not set
89# CONFIG_CPU_MIPS32_R2 is not set 79# CONFIG_CPU_MIPS32_R2 is not set
90# CONFIG_CPU_MIPS64_R1 is not set 80# CONFIG_CPU_MIPS64_R1 is not set
@@ -106,7 +96,6 @@ CONFIG_CPU_VR41XX=y
106# CONFIG_CPU_SB1 is not set 96# CONFIG_CPU_SB1 is not set
107CONFIG_SYS_HAS_CPU_VR41XX=y 97CONFIG_SYS_HAS_CPU_VR41XX=y
108CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 98CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
109CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
110CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 99CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
111CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y 100CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
112 101
@@ -122,7 +111,6 @@ CONFIG_PAGE_SIZE_4KB=y
122CONFIG_MIPS_MT_DISABLED=y 111CONFIG_MIPS_MT_DISABLED=y
123# CONFIG_MIPS_MT_SMP is not set 112# CONFIG_MIPS_MT_SMP is not set
124# CONFIG_MIPS_MT_SMTC is not set 113# CONFIG_MIPS_MT_SMTC is not set
125# CONFIG_MIPS_VPE_LOADER is not set
126CONFIG_CPU_HAS_SYNC=y 114CONFIG_CPU_HAS_SYNC=y
127CONFIG_GENERIC_HARDIRQS=y 115CONFIG_GENERIC_HARDIRQS=y
128CONFIG_GENERIC_IRQ_PROBE=y 116CONFIG_GENERIC_IRQ_PROBE=y
@@ -136,46 +124,44 @@ CONFIG_FLAT_NODE_MEM_MAP=y
136# CONFIG_SPARSEMEM_STATIC is not set 124# CONFIG_SPARSEMEM_STATIC is not set
137CONFIG_SPLIT_PTLOCK_CPUS=4 125CONFIG_SPLIT_PTLOCK_CPUS=4
138# CONFIG_RESOURCES_64BIT is not set 126# CONFIG_RESOURCES_64BIT is not set
139CONFIG_ZONE_DMA_FLAG=1 127CONFIG_ZONE_DMA_FLAG=0
128CONFIG_VIRT_TO_BUS=y
140# CONFIG_HZ_48 is not set 129# CONFIG_HZ_48 is not set
141# CONFIG_HZ_100 is not set 130# CONFIG_HZ_100 is not set
142# CONFIG_HZ_128 is not set 131# CONFIG_HZ_128 is not set
143# CONFIG_HZ_250 is not set 132CONFIG_HZ_250=y
144# CONFIG_HZ_256 is not set 133# CONFIG_HZ_256 is not set
145CONFIG_HZ_1000=y 134# CONFIG_HZ_1000 is not set
146# CONFIG_HZ_1024 is not set 135# CONFIG_HZ_1024 is not set
147CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 136CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
148CONFIG_HZ=1000 137CONFIG_HZ=250
149CONFIG_PREEMPT_NONE=y 138CONFIG_PREEMPT_NONE=y
150# CONFIG_PREEMPT_VOLUNTARY is not set 139# CONFIG_PREEMPT_VOLUNTARY is not set
151# CONFIG_PREEMPT is not set 140# CONFIG_PREEMPT is not set
152# CONFIG_KEXEC is not set 141# CONFIG_KEXEC is not set
142CONFIG_SECCOMP=y
153CONFIG_LOCKDEP_SUPPORT=y 143CONFIG_LOCKDEP_SUPPORT=y
154CONFIG_STACKTRACE_SUPPORT=y 144CONFIG_STACKTRACE_SUPPORT=y
155CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 145CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
156 146
157# 147#
158# Code maturity level options 148# General setup
159# 149#
160CONFIG_EXPERIMENTAL=y 150CONFIG_EXPERIMENTAL=y
161CONFIG_BROKEN_ON_SMP=y 151CONFIG_BROKEN_ON_SMP=y
162CONFIG_INIT_ENV_ARG_LIMIT=32 152CONFIG_INIT_ENV_ARG_LIMIT=32
163
164#
165# General setup
166#
167CONFIG_LOCALVERSION="" 153CONFIG_LOCALVERSION=""
168CONFIG_LOCALVERSION_AUTO=y 154CONFIG_LOCALVERSION_AUTO=y
169CONFIG_SWAP=y 155CONFIG_SWAP=y
170CONFIG_SYSVIPC=y 156CONFIG_SYSVIPC=y
171# CONFIG_IPC_NS is not set
172CONFIG_SYSVIPC_SYSCTL=y 157CONFIG_SYSVIPC_SYSCTL=y
173# CONFIG_POSIX_MQUEUE is not set 158# CONFIG_POSIX_MQUEUE is not set
174# CONFIG_BSD_PROCESS_ACCT is not set 159# CONFIG_BSD_PROCESS_ACCT is not set
175# CONFIG_TASKSTATS is not set 160# CONFIG_TASKSTATS is not set
176# CONFIG_UTS_NS is not set 161# CONFIG_USER_NS is not set
177# CONFIG_AUDIT is not set 162# CONFIG_AUDIT is not set
178# CONFIG_IKCONFIG is not set 163# CONFIG_IKCONFIG is not set
164CONFIG_LOG_BUF_SHIFT=14
179CONFIG_SYSFS_DEPRECATED=y 165CONFIG_SYSFS_DEPRECATED=y
180# CONFIG_RELAY is not set 166# CONFIG_RELAY is not set
181# CONFIG_BLK_DEV_INITRD is not set 167# CONFIG_BLK_DEV_INITRD is not set
@@ -191,32 +177,30 @@ CONFIG_BUG=y
191CONFIG_ELF_CORE=y 177CONFIG_ELF_CORE=y
192CONFIG_BASE_FULL=y 178CONFIG_BASE_FULL=y
193CONFIG_FUTEX=y 179CONFIG_FUTEX=y
180CONFIG_ANON_INODES=y
194CONFIG_EPOLL=y 181CONFIG_EPOLL=y
182CONFIG_SIGNALFD=y
183CONFIG_TIMERFD=y
184CONFIG_EVENTFD=y
195CONFIG_SHMEM=y 185CONFIG_SHMEM=y
196CONFIG_SLAB=y
197CONFIG_VM_EVENT_COUNTERS=y 186CONFIG_VM_EVENT_COUNTERS=y
187CONFIG_SLAB=y
188# CONFIG_SLUB is not set
189# CONFIG_SLOB is not set
198CONFIG_RT_MUTEXES=y 190CONFIG_RT_MUTEXES=y
199# CONFIG_TINY_SHMEM is not set 191# CONFIG_TINY_SHMEM is not set
200CONFIG_BASE_SMALL=0 192CONFIG_BASE_SMALL=0
201# CONFIG_SLOB is not set
202
203#
204# Loadable module support
205#
206CONFIG_MODULES=y 193CONFIG_MODULES=y
207CONFIG_MODULE_UNLOAD=y 194CONFIG_MODULE_UNLOAD=y
208# CONFIG_MODULE_FORCE_UNLOAD is not set 195CONFIG_MODULE_FORCE_UNLOAD=y
209CONFIG_MODVERSIONS=y 196CONFIG_MODVERSIONS=y
210CONFIG_MODULE_SRCVERSION_ALL=y 197CONFIG_MODULE_SRCVERSION_ALL=y
211CONFIG_KMOD=y 198CONFIG_KMOD=y
212
213#
214# Block layer
215#
216CONFIG_BLOCK=y 199CONFIG_BLOCK=y
217# CONFIG_LBD is not set 200# CONFIG_LBD is not set
218# CONFIG_BLK_DEV_IO_TRACE is not set 201# CONFIG_BLK_DEV_IO_TRACE is not set
219# CONFIG_LSF is not set 202# CONFIG_LSF is not set
203# CONFIG_BLK_DEV_BSG is not set
220 204
221# 205#
222# IO Schedulers 206# IO Schedulers
@@ -236,16 +220,13 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
236# 220#
237CONFIG_HW_HAS_PCI=y 221CONFIG_HW_HAS_PCI=y
238CONFIG_PCI=y 222CONFIG_PCI=y
223# CONFIG_ARCH_SUPPORTS_MSI is not set
239CONFIG_MMU=y 224CONFIG_MMU=y
240 225
241# 226#
242# PCCARD (PCMCIA/CardBus) support 227# PCCARD (PCMCIA/CardBus) support
243# 228#
244# CONFIG_PCCARD is not set 229# CONFIG_PCCARD is not set
245
246#
247# PCI Hotplug Support
248#
249# CONFIG_HOTPLUG_PCI is not set 230# CONFIG_HOTPLUG_PCI is not set
250 231
251# 232#
@@ -258,10 +239,7 @@ CONFIG_TRAD_SIGNALS=y
258# 239#
259# Power management options 240# Power management options
260# 241#
261CONFIG_PM=y 242# CONFIG_PM is not set
262# CONFIG_PM_LEGACY is not set
263# CONFIG_PM_DEBUG is not set
264# CONFIG_PM_SYSFS_DEPRECATED is not set
265 243
266# 244#
267# Networking 245# Networking
@@ -271,14 +249,9 @@ CONFIG_NET=y
271# 249#
272# Networking options 250# Networking options
273# 251#
274# CONFIG_NETDEBUG is not set
275CONFIG_PACKET=y 252CONFIG_PACKET=y
276# CONFIG_PACKET_MMAP is not set 253# CONFIG_PACKET_MMAP is not set
277CONFIG_UNIX=y 254CONFIG_UNIX=y
278CONFIG_XFRM=y
279# CONFIG_XFRM_USER is not set
280# CONFIG_XFRM_SUB_POLICY is not set
281CONFIG_XFRM_MIGRATE=y
282# CONFIG_NET_KEY is not set 255# CONFIG_NET_KEY is not set
283CONFIG_INET=y 256CONFIG_INET=y
284CONFIG_IP_MULTICAST=y 257CONFIG_IP_MULTICAST=y
@@ -288,7 +261,6 @@ CONFIG_ASK_IP_FIB_HASH=y
288CONFIG_IP_FIB_HASH=y 261CONFIG_IP_FIB_HASH=y
289CONFIG_IP_MULTIPLE_TABLES=y 262CONFIG_IP_MULTIPLE_TABLES=y
290CONFIG_IP_ROUTE_MULTIPATH=y 263CONFIG_IP_ROUTE_MULTIPATH=y
291# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
292CONFIG_IP_ROUTE_VERBOSE=y 264CONFIG_IP_ROUTE_VERBOSE=y
293CONFIG_IP_PNP=y 265CONFIG_IP_PNP=y
294# CONFIG_IP_PNP_DHCP is not set 266# CONFIG_IP_PNP_DHCP is not set
@@ -305,34 +277,25 @@ CONFIG_SYN_COOKIES=y
305# CONFIG_INET_IPCOMP is not set 277# CONFIG_INET_IPCOMP is not set
306# CONFIG_INET_XFRM_TUNNEL is not set 278# CONFIG_INET_XFRM_TUNNEL is not set
307CONFIG_INET_TUNNEL=m 279CONFIG_INET_TUNNEL=m
308CONFIG_INET_XFRM_MODE_TRANSPORT=m 280# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
309CONFIG_INET_XFRM_MODE_TUNNEL=m 281# CONFIG_INET_XFRM_MODE_TUNNEL is not set
310CONFIG_INET_XFRM_MODE_BEET=m 282# CONFIG_INET_XFRM_MODE_BEET is not set
311CONFIG_INET_DIAG=y 283CONFIG_INET_DIAG=y
312CONFIG_INET_TCP_DIAG=y 284CONFIG_INET_TCP_DIAG=y
313# CONFIG_TCP_CONG_ADVANCED is not set 285# CONFIG_TCP_CONG_ADVANCED is not set
314CONFIG_TCP_CONG_CUBIC=y 286CONFIG_TCP_CONG_CUBIC=y
315CONFIG_DEFAULT_TCP_CONG="cubic" 287CONFIG_DEFAULT_TCP_CONG="cubic"
316CONFIG_TCP_MD5SIG=y 288# CONFIG_TCP_MD5SIG is not set
317# CONFIG_IPV6 is not set 289# CONFIG_IPV6 is not set
318# CONFIG_INET6_XFRM_TUNNEL is not set 290# CONFIG_INET6_XFRM_TUNNEL is not set
319# CONFIG_INET6_TUNNEL is not set 291# CONFIG_INET6_TUNNEL is not set
320CONFIG_NETWORK_SECMARK=y 292CONFIG_NETWORK_SECMARK=y
321# CONFIG_NETFILTER is not set 293# CONFIG_NETFILTER is not set
322
323#
324# DCCP Configuration (EXPERIMENTAL)
325#
326# CONFIG_IP_DCCP is not set 294# CONFIG_IP_DCCP is not set
327
328#
329# SCTP Configuration (EXPERIMENTAL)
330#
331# CONFIG_IP_SCTP is not set 295# CONFIG_IP_SCTP is not set
332 296# CONFIG_SCTP_HMAC_NONE is not set
333# 297# CONFIG_SCTP_HMAC_SHA1 is not set
334# TIPC Configuration (EXPERIMENTAL) 298# CONFIG_SCTP_HMAC_MD5 is not set
335#
336# CONFIG_TIPC is not set 299# CONFIG_TIPC is not set
337# CONFIG_ATM is not set 300# CONFIG_ATM is not set
338# CONFIG_BRIDGE is not set 301# CONFIG_BRIDGE is not set
@@ -358,10 +321,20 @@ CONFIG_NETWORK_SECMARK=y
358# CONFIG_HAMRADIO is not set 321# CONFIG_HAMRADIO is not set
359# CONFIG_IRDA is not set 322# CONFIG_IRDA is not set
360# CONFIG_BT is not set 323# CONFIG_BT is not set
361# CONFIG_IEEE80211 is not set 324# CONFIG_AF_RXRPC is not set
362CONFIG_FIB_RULES=y 325CONFIG_FIB_RULES=y
363 326
364# 327#
328# Wireless
329#
330# CONFIG_CFG80211 is not set
331# CONFIG_WIRELESS_EXT is not set
332# CONFIG_MAC80211 is not set
333# CONFIG_IEEE80211 is not set
334# CONFIG_RFKILL is not set
335# CONFIG_NET_9P is not set
336
337#
365# Device Drivers 338# Device Drivers
366# 339#
367 340
@@ -372,30 +345,10 @@ CONFIG_STANDALONE=y
372CONFIG_PREVENT_FIRMWARE_BUILD=y 345CONFIG_PREVENT_FIRMWARE_BUILD=y
373CONFIG_FW_LOADER=m 346CONFIG_FW_LOADER=m
374# CONFIG_SYS_HYPERVISOR is not set 347# CONFIG_SYS_HYPERVISOR is not set
375
376#
377# Connector - unified userspace <-> kernelspace linker
378#
379# CONFIG_CONNECTOR is not set 348# CONFIG_CONNECTOR is not set
380
381#
382# Memory Technology Devices (MTD)
383#
384# CONFIG_MTD is not set 349# CONFIG_MTD is not set
385
386#
387# Parallel port support
388#
389# CONFIG_PARPORT is not set 350# CONFIG_PARPORT is not set
390 351CONFIG_BLK_DEV=y
391#
392# Plug and Play support
393#
394# CONFIG_PNPACPI is not set
395
396#
397# Block devices
398#
399# CONFIG_BLK_CPQ_DA is not set 352# CONFIG_BLK_CPQ_DA is not set
400# CONFIG_BLK_CPQ_CISS_DA is not set 353# CONFIG_BLK_CPQ_CISS_DA is not set
401# CONFIG_BLK_DEV_DAC960 is not set 354# CONFIG_BLK_DEV_DAC960 is not set
@@ -412,16 +365,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
412CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 365CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
413# CONFIG_CDROM_PKTCDVD is not set 366# CONFIG_CDROM_PKTCDVD is not set
414# CONFIG_ATA_OVER_ETH is not set 367# CONFIG_ATA_OVER_ETH is not set
415 368# CONFIG_MISC_DEVICES is not set
416#
417# Misc devices
418#
419CONFIG_SGI_IOC4=m
420# CONFIG_TIFM_CORE is not set
421
422#
423# ATA/ATAPI/MFM/RLL support
424#
425# CONFIG_IDE is not set 369# CONFIG_IDE is not set
426 370
427# 371#
@@ -429,16 +373,9 @@ CONFIG_SGI_IOC4=m
429# 373#
430# CONFIG_RAID_ATTRS is not set 374# CONFIG_RAID_ATTRS is not set
431# CONFIG_SCSI is not set 375# CONFIG_SCSI is not set
376# CONFIG_SCSI_DMA is not set
432# CONFIG_SCSI_NETLINK is not set 377# CONFIG_SCSI_NETLINK is not set
433
434#
435# Serial ATA (prod) and Parallel ATA (experimental) drivers
436#
437# CONFIG_ATA is not set 378# CONFIG_ATA is not set
438
439#
440# Multi-device support (RAID and LVM)
441#
442# CONFIG_MD is not set 379# CONFIG_MD is not set
443 380
444# 381#
@@ -449,30 +386,17 @@ CONFIG_SGI_IOC4=m
449# 386#
450# IEEE 1394 (FireWire) support 387# IEEE 1394 (FireWire) support
451# 388#
389# CONFIG_FIREWIRE is not set
452# CONFIG_IEEE1394 is not set 390# CONFIG_IEEE1394 is not set
453
454#
455# I2O device support
456#
457# CONFIG_I2O is not set 391# CONFIG_I2O is not set
458
459#
460# Network device support
461#
462CONFIG_NETDEVICES=y 392CONFIG_NETDEVICES=y
463CONFIG_DUMMY=m 393# CONFIG_NETDEVICES_MULTIQUEUE is not set
394# CONFIG_DUMMY is not set
464# CONFIG_BONDING is not set 395# CONFIG_BONDING is not set
396# CONFIG_MACVLAN is not set
465# CONFIG_EQUALIZER is not set 397# CONFIG_EQUALIZER is not set
466# CONFIG_TUN is not set 398# CONFIG_TUN is not set
467
468#
469# ARCnet devices
470#
471# CONFIG_ARCNET is not set 399# CONFIG_ARCNET is not set
472
473#
474# PHY device support
475#
476CONFIG_PHYLIB=m 400CONFIG_PHYLIB=m
477 401
478# 402#
@@ -486,29 +410,46 @@ CONFIG_CICADA_PHY=m
486CONFIG_VITESSE_PHY=m 410CONFIG_VITESSE_PHY=m
487CONFIG_SMSC_PHY=m 411CONFIG_SMSC_PHY=m
488# CONFIG_BROADCOM_PHY is not set 412# CONFIG_BROADCOM_PHY is not set
413# CONFIG_ICPLUS_PHY is not set
489# CONFIG_FIXED_PHY is not set 414# CONFIG_FIXED_PHY is not set
490
491#
492# Ethernet (10 or 100Mbit)
493#
494CONFIG_NET_ETHERNET=y 415CONFIG_NET_ETHERNET=y
495CONFIG_MII=y 416CONFIG_MII=y
417# CONFIG_AX88796 is not set
496# CONFIG_HAPPYMEAL is not set 418# CONFIG_HAPPYMEAL is not set
497# CONFIG_SUNGEM is not set 419# CONFIG_SUNGEM is not set
498# CONFIG_CASSINI is not set 420# CONFIG_CASSINI is not set
499# CONFIG_NET_VENDOR_3COM is not set 421# CONFIG_NET_VENDOR_3COM is not set
500# CONFIG_DM9000 is not set 422# CONFIG_DM9000 is not set
501
502#
503# Tulip family network device support
504#
505# CONFIG_NET_TULIP is not set 423# CONFIG_NET_TULIP is not set
506# CONFIG_HP100 is not set 424# CONFIG_HP100 is not set
507# CONFIG_NET_PCI is not set 425CONFIG_NET_PCI=y
508 426# CONFIG_PCNET32 is not set
509# 427# CONFIG_AMD8111_ETH is not set
510# Ethernet (1000 Mbit) 428# CONFIG_ADAPTEC_STARFIRE is not set
511# 429# CONFIG_B44 is not set
430# CONFIG_FORCEDETH is not set
431# CONFIG_TC35815 is not set
432# CONFIG_DGRS is not set
433# CONFIG_EEPRO100 is not set
434# CONFIG_E100 is not set
435# CONFIG_FEALNX is not set
436# CONFIG_NATSEMI is not set
437# CONFIG_NE2K_PCI is not set
438# CONFIG_8139CP is not set
439CONFIG_8139TOO=y
440CONFIG_8139TOO_PIO=y
441# CONFIG_8139TOO_TUNE_TWISTER is not set
442# CONFIG_8139TOO_8129 is not set
443# CONFIG_8139_OLD_RX_RESET is not set
444# CONFIG_SIS900 is not set
445# CONFIG_EPIC100 is not set
446# CONFIG_SUNDANCE is not set
447# CONFIG_TLAN is not set
448CONFIG_VIA_RHINE=y
449CONFIG_VIA_RHINE_MMIO=y
450# CONFIG_VIA_RHINE_NAPI is not set
451# CONFIG_SC92031 is not set
452CONFIG_NETDEV_1000=y
512# CONFIG_ACENIC is not set 453# CONFIG_ACENIC is not set
513# CONFIG_DL2K is not set 454# CONFIG_DL2K is not set
514# CONFIG_E1000 is not set 455# CONFIG_E1000 is not set
@@ -520,35 +461,29 @@ CONFIG_R8169=y
520# CONFIG_SIS190 is not set 461# CONFIG_SIS190 is not set
521# CONFIG_SKGE is not set 462# CONFIG_SKGE is not set
522# CONFIG_SKY2 is not set 463# CONFIG_SKY2 is not set
523# CONFIG_SK98LIN is not set 464CONFIG_VIA_VELOCITY=y
524# CONFIG_TIGON3 is not set 465# CONFIG_TIGON3 is not set
525# CONFIG_BNX2 is not set 466# CONFIG_BNX2 is not set
526CONFIG_QLA3XXX=m 467# CONFIG_QLA3XXX is not set
527# CONFIG_ATL1 is not set 468# CONFIG_ATL1 is not set
528 469# CONFIG_NETDEV_10000 is not set
529#
530# Ethernet (10000 Mbit)
531#
532# CONFIG_CHELSIO_T1 is not set
533CONFIG_CHELSIO_T3=m
534# CONFIG_IXGB is not set
535# CONFIG_S2IO is not set
536# CONFIG_MYRI10GE is not set
537CONFIG_NETXEN_NIC=m
538
539#
540# Token Ring devices
541#
542# CONFIG_TR is not set 470# CONFIG_TR is not set
543 471
544# 472#
545# Wireless LAN (non-hamradio) 473# Wireless LAN
546# 474#
547# CONFIG_NET_RADIO is not set 475# CONFIG_WLAN_PRE80211 is not set
476# CONFIG_WLAN_80211 is not set
548 477
549# 478#
550# Wan interfaces 479# USB Network Adapters
551# 480#
481# CONFIG_USB_CATC is not set
482# CONFIG_USB_KAWETH is not set
483# CONFIG_USB_PEGASUS is not set
484# CONFIG_USB_RTL8150 is not set
485# CONFIG_USB_USBNET_MII is not set
486# CONFIG_USB_USBNET is not set
552# CONFIG_WAN is not set 487# CONFIG_WAN is not set
553# CONFIG_FDDI is not set 488# CONFIG_FDDI is not set
554# CONFIG_HIPPI is not set 489# CONFIG_HIPPI is not set
@@ -558,15 +493,7 @@ CONFIG_NETXEN_NIC=m
558# CONFIG_NETCONSOLE is not set 493# CONFIG_NETCONSOLE is not set
559# CONFIG_NETPOLL is not set 494# CONFIG_NETPOLL is not set
560# CONFIG_NET_POLL_CONTROLLER is not set 495# CONFIG_NET_POLL_CONTROLLER is not set
561
562#
563# ISDN subsystem
564#
565# CONFIG_ISDN is not set 496# CONFIG_ISDN is not set
566
567#
568# Telephony Support
569#
570# CONFIG_PHONE is not set 497# CONFIG_PHONE is not set
571 498
572# 499#
@@ -574,6 +501,7 @@ CONFIG_NETXEN_NIC=m
574# 501#
575CONFIG_INPUT=y 502CONFIG_INPUT=y
576# CONFIG_INPUT_FF_MEMLESS is not set 503# CONFIG_INPUT_FF_MEMLESS is not set
504# CONFIG_INPUT_POLLDEV is not set
577 505
578# 506#
579# Userland interfaces 507# Userland interfaces
@@ -590,6 +518,7 @@ CONFIG_INPUT=y
590# CONFIG_INPUT_KEYBOARD is not set 518# CONFIG_INPUT_KEYBOARD is not set
591# CONFIG_INPUT_MOUSE is not set 519# CONFIG_INPUT_MOUSE is not set
592# CONFIG_INPUT_JOYSTICK is not set 520# CONFIG_INPUT_JOYSTICK is not set
521# CONFIG_INPUT_TABLET is not set
593# CONFIG_INPUT_TOUCHSCREEN is not set 522# CONFIG_INPUT_TOUCHSCREEN is not set
594# CONFIG_INPUT_MISC is not set 523# CONFIG_INPUT_MISC is not set
595 524
@@ -624,35 +553,18 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
624CONFIG_UNIX98_PTYS=y 553CONFIG_UNIX98_PTYS=y
625CONFIG_LEGACY_PTYS=y 554CONFIG_LEGACY_PTYS=y
626CONFIG_LEGACY_PTY_COUNT=256 555CONFIG_LEGACY_PTY_COUNT=256
627
628#
629# IPMI
630#
631# CONFIG_IPMI_HANDLER is not set 556# CONFIG_IPMI_HANDLER is not set
632
633#
634# Watchdog Cards
635#
636# CONFIG_WATCHDOG is not set 557# CONFIG_WATCHDOG is not set
637# CONFIG_HW_RANDOM is not set 558# CONFIG_HW_RANDOM is not set
638# CONFIG_RTC is not set 559# CONFIG_RTC is not set
639# CONFIG_GEN_RTC is not set
640# CONFIG_DTLK is not set
641# CONFIG_R3964 is not set 560# CONFIG_R3964 is not set
642# CONFIG_APPLICOM is not set 561# CONFIG_APPLICOM is not set
643CONFIG_GPIO_TB0219=y 562CONFIG_GPIO_TB0219=y
644# CONFIG_DRM is not set 563# CONFIG_DRM is not set
645CONFIG_GPIO_VR41XX=y 564CONFIG_GPIO_VR41XX=y
646# CONFIG_RAW_DRIVER is not set 565# CONFIG_RAW_DRIVER is not set
647
648#
649# TPM devices
650#
651# CONFIG_TCG_TPM is not set 566# CONFIG_TCG_TPM is not set
652 567CONFIG_DEVPORT=y
653#
654# I2C support
655#
656# CONFIG_I2C is not set 568# CONFIG_I2C is not set
657 569
658# 570#
@@ -660,17 +572,9 @@ CONFIG_GPIO_VR41XX=y
660# 572#
661# CONFIG_SPI is not set 573# CONFIG_SPI is not set
662# CONFIG_SPI_MASTER is not set 574# CONFIG_SPI_MASTER is not set
663
664#
665# Dallas's 1-wire bus
666#
667# CONFIG_W1 is not set 575# CONFIG_W1 is not set
668 576# CONFIG_POWER_SUPPLY is not set
669#
670# Hardware Monitoring support
671#
672# CONFIG_HWMON is not set 577# CONFIG_HWMON is not set
673# CONFIG_HWMON_VID is not set
674 578
675# 579#
676# Multifunction device drivers 580# Multifunction device drivers
@@ -681,17 +585,20 @@ CONFIG_GPIO_VR41XX=y
681# Multimedia devices 585# Multimedia devices
682# 586#
683# CONFIG_VIDEO_DEV is not set 587# CONFIG_VIDEO_DEV is not set
588# CONFIG_DVB_CORE is not set
589# CONFIG_DAB is not set
684 590
685# 591#
686# Digital Video Broadcasting Devices 592# Graphics support
687# 593#
688# CONFIG_DVB is not set 594# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
689# CONFIG_USB_DABUSB is not set
690 595
691# 596#
692# Graphics support 597# Display device support
693# 598#
694# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 599# CONFIG_DISPLAY_SUPPORT is not set
600# CONFIG_VGASTATE is not set
601# CONFIG_VIDEO_OUTPUT_CONTROL is not set
695# CONFIG_FB is not set 602# CONFIG_FB is not set
696 603
697# 604#
@@ -704,16 +611,8 @@ CONFIG_DUMMY_CONSOLE=y
704# Sound 611# Sound
705# 612#
706# CONFIG_SOUND is not set 613# CONFIG_SOUND is not set
707 614# CONFIG_HID_SUPPORT is not set
708# 615CONFIG_USB_SUPPORT=y
709# HID Devices
710#
711CONFIG_HID=y
712# CONFIG_HID_DEBUG is not set
713
714#
715# USB support
716#
717CONFIG_USB_ARCH_HAS_HCD=y 616CONFIG_USB_ARCH_HAS_HCD=y
718CONFIG_USB_ARCH_HAS_OHCI=y 617CONFIG_USB_ARCH_HAS_OHCI=y
719CONFIG_USB_ARCH_HAS_EHCI=y 618CONFIG_USB_ARCH_HAS_EHCI=y
@@ -724,8 +623,8 @@ CONFIG_USB=m
724# Miscellaneous USB options 623# Miscellaneous USB options
725# 624#
726CONFIG_USB_DEVICEFS=y 625CONFIG_USB_DEVICEFS=y
626CONFIG_USB_DEVICE_CLASS=y
727# CONFIG_USB_DYNAMIC_MINORS is not set 627# CONFIG_USB_DYNAMIC_MINORS is not set
728# CONFIG_USB_SUSPEND is not set
729# CONFIG_USB_OTG is not set 628# CONFIG_USB_OTG is not set
730 629
731# 630#
@@ -735,7 +634,6 @@ CONFIG_USB_EHCI_HCD=m
735# CONFIG_USB_EHCI_SPLIT_ISO is not set 634# CONFIG_USB_EHCI_SPLIT_ISO is not set
736# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 635# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
737# CONFIG_USB_EHCI_TT_NEWSCHED is not set 636# CONFIG_USB_EHCI_TT_NEWSCHED is not set
738# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
739# CONFIG_USB_ISP116X_HCD is not set 637# CONFIG_USB_ISP116X_HCD is not set
740CONFIG_USB_OHCI_HCD=m 638CONFIG_USB_OHCI_HCD=m
741# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 639# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -743,6 +641,7 @@ CONFIG_USB_OHCI_HCD=m
743CONFIG_USB_OHCI_LITTLE_ENDIAN=y 641CONFIG_USB_OHCI_LITTLE_ENDIAN=y
744# CONFIG_USB_UHCI_HCD is not set 642# CONFIG_USB_UHCI_HCD is not set
745# CONFIG_USB_SL811_HCD is not set 643# CONFIG_USB_SL811_HCD is not set
644# CONFIG_USB_R8A66597_HCD is not set
746 645
747# 646#
748# USB Device Class drivers 647# USB Device Class drivers
@@ -760,43 +659,9 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
760# CONFIG_USB_LIBUSUAL is not set 659# CONFIG_USB_LIBUSUAL is not set
761 660
762# 661#
763# USB Input Devices
764#
765# CONFIG_USB_HID is not set
766
767#
768# USB HID Boot Protocol drivers
769#
770# CONFIG_USB_KBD is not set
771# CONFIG_USB_MOUSE is not set
772# CONFIG_USB_AIPTEK is not set
773# CONFIG_USB_WACOM is not set
774# CONFIG_USB_ACECAD is not set
775# CONFIG_USB_KBTAB is not set
776# CONFIG_USB_POWERMATE is not set
777# CONFIG_USB_TOUCHSCREEN is not set
778# CONFIG_USB_YEALINK is not set
779# CONFIG_USB_XPAD is not set
780# CONFIG_USB_ATI_REMOTE is not set
781# CONFIG_USB_ATI_REMOTE2 is not set
782# CONFIG_USB_KEYSPAN_REMOTE is not set
783# CONFIG_USB_APPLETOUCH is not set
784# CONFIG_USB_GTCO is not set
785
786#
787# USB Imaging devices 662# USB Imaging devices
788# 663#
789# CONFIG_USB_MDC800 is not set 664# CONFIG_USB_MDC800 is not set
790
791#
792# USB Network Adapters
793#
794# CONFIG_USB_CATC is not set
795# CONFIG_USB_KAWETH is not set
796# CONFIG_USB_PEGASUS is not set
797# CONFIG_USB_RTL8150 is not set
798# CONFIG_USB_USBNET_MII is not set
799# CONFIG_USB_USBNET is not set
800CONFIG_USB_MON=y 665CONFIG_USB_MON=y
801 666
802# 667#
@@ -840,37 +705,9 @@ CONFIG_USB_MON=y
840# USB Gadget Support 705# USB Gadget Support
841# 706#
842# CONFIG_USB_GADGET is not set 707# CONFIG_USB_GADGET is not set
843
844#
845# MMC/SD Card support
846#
847# CONFIG_MMC is not set 708# CONFIG_MMC is not set
848
849#
850# LED devices
851#
852# CONFIG_NEW_LEDS is not set 709# CONFIG_NEW_LEDS is not set
853
854#
855# LED drivers
856#
857
858#
859# LED Triggers
860#
861
862#
863# InfiniBand support
864#
865# CONFIG_INFINIBAND is not set 710# CONFIG_INFINIBAND is not set
866
867#
868# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
869#
870
871#
872# Real Time Clock
873#
874CONFIG_RTC_LIB=y 711CONFIG_RTC_LIB=y
875CONFIG_RTC_CLASS=y 712CONFIG_RTC_CLASS=y
876CONFIG_RTC_HCTOSYS=y 713CONFIG_RTC_HCTOSYS=y
@@ -884,18 +721,29 @@ CONFIG_RTC_INTF_SYSFS=y
884CONFIG_RTC_INTF_PROC=y 721CONFIG_RTC_INTF_PROC=y
885CONFIG_RTC_INTF_DEV=y 722CONFIG_RTC_INTF_DEV=y
886# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set 723# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
724# CONFIG_RTC_DRV_TEST is not set
725
726#
727# SPI RTC drivers
728#
887 729
888# 730#
889# RTC drivers 731# Platform RTC drivers
890# 732#
733# CONFIG_RTC_DRV_CMOS is not set
891# CONFIG_RTC_DRV_DS1553 is not set 734# CONFIG_RTC_DRV_DS1553 is not set
735# CONFIG_RTC_DRV_STK17TA8 is not set
892# CONFIG_RTC_DRV_DS1742 is not set 736# CONFIG_RTC_DRV_DS1742 is not set
893# CONFIG_RTC_DRV_M48T86 is not set 737# CONFIG_RTC_DRV_M48T86 is not set
894CONFIG_RTC_DRV_VR41XX=y 738# CONFIG_RTC_DRV_M48T59 is not set
895# CONFIG_RTC_DRV_TEST is not set
896# CONFIG_RTC_DRV_V3020 is not set 739# CONFIG_RTC_DRV_V3020 is not set
897 740
898# 741#
742# on-CPU RTC drivers
743#
744CONFIG_RTC_DRV_VR41XX=y
745
746#
899# DMA Engine support 747# DMA Engine support
900# 748#
901# CONFIG_DMA_ENGINE is not set 749# CONFIG_DMA_ENGINE is not set
@@ -909,12 +757,9 @@ CONFIG_RTC_DRV_VR41XX=y
909# 757#
910 758
911# 759#
912# Auxiliary Display support 760# Userspace I/O
913#
914
915#
916# Virtualization
917# 761#
762# CONFIG_UIO is not set
918 763
919# 764#
920# File systems 765# File systems
@@ -922,8 +767,14 @@ CONFIG_RTC_DRV_VR41XX=y
922CONFIG_EXT2_FS=y 767CONFIG_EXT2_FS=y
923# CONFIG_EXT2_FS_XATTR is not set 768# CONFIG_EXT2_FS_XATTR is not set
924# CONFIG_EXT2_FS_XIP is not set 769# CONFIG_EXT2_FS_XIP is not set
925# CONFIG_EXT3_FS is not set 770CONFIG_EXT3_FS=y
771CONFIG_EXT3_FS_XATTR=y
772# CONFIG_EXT3_FS_POSIX_ACL is not set
773# CONFIG_EXT3_FS_SECURITY is not set
926# CONFIG_EXT4DEV_FS is not set 774# CONFIG_EXT4DEV_FS is not set
775CONFIG_JBD=y
776# CONFIG_JBD_DEBUG is not set
777CONFIG_FS_MBCACHE=y
927# CONFIG_REISERFS_FS is not set 778# CONFIG_REISERFS_FS is not set
928# CONFIG_JFS_FS is not set 779# CONFIG_JFS_FS is not set
929CONFIG_FS_POSIX_ACL=y 780CONFIG_FS_POSIX_ACL=y
@@ -938,7 +789,7 @@ CONFIG_INOTIFY_USER=y
938CONFIG_DNOTIFY=y 789CONFIG_DNOTIFY=y
939# CONFIG_AUTOFS_FS is not set 790# CONFIG_AUTOFS_FS is not set
940CONFIG_AUTOFS4_FS=y 791CONFIG_AUTOFS4_FS=y
941CONFIG_FUSE_FS=m 792# CONFIG_FUSE_FS is not set
942CONFIG_GENERIC_ACL=y 793CONFIG_GENERIC_ACL=y
943 794
944# 795#
@@ -965,7 +816,7 @@ CONFIG_TMPFS=y
965CONFIG_TMPFS_POSIX_ACL=y 816CONFIG_TMPFS_POSIX_ACL=y
966# CONFIG_HUGETLB_PAGE is not set 817# CONFIG_HUGETLB_PAGE is not set
967CONFIG_RAMFS=y 818CONFIG_RAMFS=y
968CONFIG_CONFIGFS_FS=m 819# CONFIG_CONFIGFS_FS is not set
969 820
970# 821#
971# Miscellaneous filesystems 822# Miscellaneous filesystems
@@ -1003,6 +854,7 @@ CONFIG_LOCKD_V4=y
1003CONFIG_EXPORTFS=y 854CONFIG_EXPORTFS=y
1004CONFIG_NFS_COMMON=y 855CONFIG_NFS_COMMON=y
1005CONFIG_SUNRPC=y 856CONFIG_SUNRPC=y
857# CONFIG_SUNRPC_BIND34 is not set
1006# CONFIG_RPCSEC_GSS_KRB5 is not set 858# CONFIG_RPCSEC_GSS_KRB5 is not set
1007# CONFIG_RPCSEC_GSS_SPKM3 is not set 859# CONFIG_RPCSEC_GSS_SPKM3 is not set
1008# CONFIG_SMB_FS is not set 860# CONFIG_SMB_FS is not set
@@ -1010,7 +862,6 @@ CONFIG_SUNRPC=y
1010# CONFIG_NCP_FS is not set 862# CONFIG_NCP_FS is not set
1011# CONFIG_CODA_FS is not set 863# CONFIG_CODA_FS is not set
1012# CONFIG_AFS_FS is not set 864# CONFIG_AFS_FS is not set
1013# CONFIG_9P_FS is not set
1014 865
1015# 866#
1016# Partition Types 867# Partition Types
@@ -1026,10 +877,7 @@ CONFIG_MSDOS_PARTITION=y
1026# 877#
1027# Distributed Lock Manager 878# Distributed Lock Manager
1028# 879#
1029CONFIG_DLM=m 880# CONFIG_DLM is not set
1030CONFIG_DLM_TCP=y
1031# CONFIG_DLM_SCTP is not set
1032# CONFIG_DLM_DEBUG is not set
1033 881
1034# 882#
1035# Profiling support 883# Profiling support
@@ -1047,7 +895,6 @@ CONFIG_ENABLE_MUST_CHECK=y
1047# CONFIG_DEBUG_FS is not set 895# CONFIG_DEBUG_FS is not set
1048# CONFIG_HEADERS_CHECK is not set 896# CONFIG_HEADERS_CHECK is not set
1049# CONFIG_DEBUG_KERNEL is not set 897# CONFIG_DEBUG_KERNEL is not set
1050CONFIG_LOG_BUF_SHIFT=14
1051CONFIG_CROSSCOMPILE=y 898CONFIG_CROSSCOMPILE=y
1052CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs" 899CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs"
1053 900
@@ -1056,63 +903,20 @@ CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs"
1056# 903#
1057# CONFIG_KEYS is not set 904# CONFIG_KEYS is not set
1058# CONFIG_SECURITY is not set 905# CONFIG_SECURITY is not set
1059 906# CONFIG_CRYPTO is not set
1060#
1061# Cryptographic options
1062#
1063CONFIG_CRYPTO=y
1064CONFIG_CRYPTO_ALGAPI=y
1065CONFIG_CRYPTO_BLKCIPHER=m
1066CONFIG_CRYPTO_HASH=m
1067CONFIG_CRYPTO_MANAGER=m
1068CONFIG_CRYPTO_HMAC=m
1069CONFIG_CRYPTO_XCBC=m
1070CONFIG_CRYPTO_NULL=m
1071CONFIG_CRYPTO_MD4=m
1072CONFIG_CRYPTO_MD5=y
1073CONFIG_CRYPTO_SHA1=m
1074CONFIG_CRYPTO_SHA256=m
1075CONFIG_CRYPTO_SHA512=m
1076CONFIG_CRYPTO_WP512=m
1077CONFIG_CRYPTO_TGR192=m
1078CONFIG_CRYPTO_GF128MUL=m
1079CONFIG_CRYPTO_ECB=m
1080CONFIG_CRYPTO_CBC=m
1081CONFIG_CRYPTO_PCBC=m
1082CONFIG_CRYPTO_LRW=m
1083CONFIG_CRYPTO_DES=m
1084CONFIG_CRYPTO_FCRYPT=m
1085CONFIG_CRYPTO_BLOWFISH=m
1086CONFIG_CRYPTO_TWOFISH=m
1087CONFIG_CRYPTO_TWOFISH_COMMON=m
1088CONFIG_CRYPTO_SERPENT=m
1089CONFIG_CRYPTO_AES=m
1090CONFIG_CRYPTO_CAST5=m
1091CONFIG_CRYPTO_CAST6=m
1092CONFIG_CRYPTO_TEA=m
1093CONFIG_CRYPTO_ARC4=m
1094CONFIG_CRYPTO_KHAZAD=m
1095CONFIG_CRYPTO_ANUBIS=m
1096CONFIG_CRYPTO_DEFLATE=m
1097CONFIG_CRYPTO_MICHAEL_MIC=m
1098CONFIG_CRYPTO_CRC32C=m
1099CONFIG_CRYPTO_CAMELLIA=m
1100# CONFIG_CRYPTO_TEST is not set
1101
1102#
1103# Hardware crypto devices
1104#
1105 907
1106# 908#
1107# Library routines 909# Library routines
1108# 910#
1109CONFIG_BITREVERSE=y 911CONFIG_BITREVERSE=y
1110# CONFIG_CRC_CCITT is not set 912CONFIG_CRC_CCITT=y
1111# CONFIG_CRC16 is not set 913# CONFIG_CRC16 is not set
914# CONFIG_CRC_ITU_T is not set
1112CONFIG_CRC32=y 915CONFIG_CRC32=y
1113CONFIG_LIBCRC32C=m 916# CONFIG_CRC7 is not set
917# CONFIG_LIBCRC32C is not set
1114CONFIG_ZLIB_INFLATE=m 918CONFIG_ZLIB_INFLATE=m
1115CONFIG_ZLIB_DEFLATE=m
1116CONFIG_PLIST=y 919CONFIG_PLIST=y
1117CONFIG_HAS_IOMEM=y 920CONFIG_HAS_IOMEM=y
1118CONFIG_HAS_IOPORT=y 921CONFIG_HAS_IOPORT=y
922CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/tb0226_defconfig b/arch/mips/configs/tb0226_defconfig
index aea67568842a..9fd0faeacf53 100644
--- a/arch/mips/configs/tb0226_defconfig
+++ b/arch/mips/configs/tb0226_defconfig
@@ -1,68 +1,56 @@
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.23-rc2
4# Tue Feb 20 21:47:41 2007 4# Thu Aug 9 11:16:55 2007
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
26# CONFIG_MIPS_COBALT is not set 13# CONFIG_MIPS_COBALT is not set
27# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
28# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 21# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 22CONFIG_MACH_VR41XX=y
36# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
38CONFIG_MACH_VR41XX=y 25# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
43# CONFIG_SGI_IP27 is not set 29# CONFIG_SGI_IP27 is not set
44# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 41# CONFIG_TOSHIBA_JMR3927 is not set
56# CONFIG_TOSHIBA_RBTX4927 is not set 42# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 43# CONFIG_TOSHIBA_RBTX4938 is not set
44# CONFIG_WR_PPMC is not set
58# CONFIG_CASIO_E55 is not set 45# CONFIG_CASIO_E55 is not set
59# CONFIG_IBM_WORKPAD is not set 46# CONFIG_IBM_WORKPAD is not set
60# CONFIG_NEC_CMBVR4133 is not set 47# CONFIG_NEC_CMBVR4133 is not set
61CONFIG_TANBAC_TB022X=y 48CONFIG_TANBAC_TB022X=y
62CONFIG_TANBAC_TB0226=y
63# CONFIG_TANBAC_TB0287 is not set
64# CONFIG_VICTOR_MPC30X is not set 49# CONFIG_VICTOR_MPC30X is not set
65# CONFIG_ZAO_CAPCELLA is not set 50# CONFIG_ZAO_CAPCELLA is not set
51# CONFIG_TANBAC_TB0219 is not set
52CONFIG_TANBAC_TB0226=y
53# CONFIG_TANBAC_TB0287 is not set
66CONFIG_PCI_VR41XX=y 54CONFIG_PCI_VR41XX=y
67CONFIG_RWSEM_GENERIC_SPINLOCK=y 55CONFIG_RWSEM_GENERIC_SPINLOCK=y
68# CONFIG_ARCH_HAS_ILOG2_U32 is not set 56# CONFIG_ARCH_HAS_ILOG2_U32 is not set
@@ -75,6 +63,8 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
75CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 63CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
76CONFIG_DMA_NONCOHERENT=y 64CONFIG_DMA_NONCOHERENT=y
77CONFIG_DMA_NEED_PCI_MAP_STATE=y 65CONFIG_DMA_NEED_PCI_MAP_STATE=y
66# CONFIG_HOTPLUG_CPU is not set
67# CONFIG_NO_IOPORT is not set
78# CONFIG_CPU_BIG_ENDIAN is not set 68# CONFIG_CPU_BIG_ENDIAN is not set
79CONFIG_CPU_LITTLE_ENDIAN=y 69CONFIG_CPU_LITTLE_ENDIAN=y
80CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 70CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
@@ -84,6 +74,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
84# 74#
85# CPU selection 75# CPU selection
86# 76#
77# CONFIG_CPU_LOONGSON2 is not set
87# CONFIG_CPU_MIPS32_R1 is not set 78# CONFIG_CPU_MIPS32_R1 is not set
88# CONFIG_CPU_MIPS32_R2 is not set 79# CONFIG_CPU_MIPS32_R2 is not set
89# CONFIG_CPU_MIPS64_R1 is not set 80# CONFIG_CPU_MIPS64_R1 is not set
@@ -105,7 +96,6 @@ CONFIG_CPU_VR41XX=y
105# CONFIG_CPU_SB1 is not set 96# CONFIG_CPU_SB1 is not set
106CONFIG_SYS_HAS_CPU_VR41XX=y 97CONFIG_SYS_HAS_CPU_VR41XX=y
107CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 98CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
108CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
109CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 99CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
110CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y 100CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
111 101
@@ -121,7 +111,6 @@ CONFIG_PAGE_SIZE_4KB=y
121CONFIG_MIPS_MT_DISABLED=y 111CONFIG_MIPS_MT_DISABLED=y
122# CONFIG_MIPS_MT_SMP is not set 112# CONFIG_MIPS_MT_SMP is not set
123# CONFIG_MIPS_MT_SMTC is not set 113# CONFIG_MIPS_MT_SMTC is not set
124# CONFIG_MIPS_VPE_LOADER is not set
125CONFIG_CPU_HAS_SYNC=y 114CONFIG_CPU_HAS_SYNC=y
126CONFIG_GENERIC_HARDIRQS=y 115CONFIG_GENERIC_HARDIRQS=y
127CONFIG_GENERIC_IRQ_PROBE=y 116CONFIG_GENERIC_IRQ_PROBE=y
@@ -135,48 +124,47 @@ CONFIG_FLAT_NODE_MEM_MAP=y
135# CONFIG_SPARSEMEM_STATIC is not set 124# CONFIG_SPARSEMEM_STATIC is not set
136CONFIG_SPLIT_PTLOCK_CPUS=4 125CONFIG_SPLIT_PTLOCK_CPUS=4
137# CONFIG_RESOURCES_64BIT is not set 126# CONFIG_RESOURCES_64BIT is not set
138CONFIG_ZONE_DMA_FLAG=1 127CONFIG_ZONE_DMA_FLAG=0
128CONFIG_VIRT_TO_BUS=y
139# CONFIG_HZ_48 is not set 129# CONFIG_HZ_48 is not set
140# CONFIG_HZ_100 is not set 130# CONFIG_HZ_100 is not set
141# CONFIG_HZ_128 is not set 131# CONFIG_HZ_128 is not set
142# CONFIG_HZ_250 is not set 132CONFIG_HZ_250=y
143# CONFIG_HZ_256 is not set 133# CONFIG_HZ_256 is not set
144CONFIG_HZ_1000=y 134# CONFIG_HZ_1000 is not set
145# CONFIG_HZ_1024 is not set 135# CONFIG_HZ_1024 is not set
146CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 136CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
147CONFIG_HZ=1000 137CONFIG_HZ=250
148CONFIG_PREEMPT_NONE=y 138CONFIG_PREEMPT_NONE=y
149# CONFIG_PREEMPT_VOLUNTARY is not set 139# CONFIG_PREEMPT_VOLUNTARY is not set
150# CONFIG_PREEMPT is not set 140# CONFIG_PREEMPT is not set
151# CONFIG_KEXEC is not set 141# CONFIG_KEXEC is not set
142CONFIG_SECCOMP=y
152CONFIG_LOCKDEP_SUPPORT=y 143CONFIG_LOCKDEP_SUPPORT=y
153CONFIG_STACKTRACE_SUPPORT=y 144CONFIG_STACKTRACE_SUPPORT=y
154CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 145CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
155 146
156# 147#
157# Code maturity level options 148# General setup
158# 149#
159CONFIG_EXPERIMENTAL=y 150CONFIG_EXPERIMENTAL=y
160CONFIG_BROKEN_ON_SMP=y 151CONFIG_BROKEN_ON_SMP=y
161CONFIG_INIT_ENV_ARG_LIMIT=32 152CONFIG_INIT_ENV_ARG_LIMIT=32
162
163#
164# General setup
165#
166CONFIG_LOCALVERSION="" 153CONFIG_LOCALVERSION=""
167CONFIG_LOCALVERSION_AUTO=y 154CONFIG_LOCALVERSION_AUTO=y
168CONFIG_SWAP=y 155CONFIG_SWAP=y
169CONFIG_SYSVIPC=y 156CONFIG_SYSVIPC=y
170# CONFIG_IPC_NS is not set
171CONFIG_SYSVIPC_SYSCTL=y 157CONFIG_SYSVIPC_SYSCTL=y
172# CONFIG_POSIX_MQUEUE is not set 158# CONFIG_POSIX_MQUEUE is not set
173# CONFIG_BSD_PROCESS_ACCT is not set 159# CONFIG_BSD_PROCESS_ACCT is not set
174# CONFIG_TASKSTATS is not set 160# CONFIG_TASKSTATS is not set
175# CONFIG_UTS_NS is not set 161# CONFIG_USER_NS is not set
176# CONFIG_AUDIT is not set 162# CONFIG_AUDIT is not set
177# CONFIG_IKCONFIG is not set 163# CONFIG_IKCONFIG is not set
164CONFIG_LOG_BUF_SHIFT=14
178CONFIG_SYSFS_DEPRECATED=y 165CONFIG_SYSFS_DEPRECATED=y
179# CONFIG_RELAY is not set 166# CONFIG_RELAY is not set
167# CONFIG_BLK_DEV_INITRD is not set
180# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 168# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
181CONFIG_SYSCTL=y 169CONFIG_SYSCTL=y
182CONFIG_EMBEDDED=y 170CONFIG_EMBEDDED=y
@@ -189,32 +177,30 @@ CONFIG_BUG=y
189CONFIG_ELF_CORE=y 177CONFIG_ELF_CORE=y
190CONFIG_BASE_FULL=y 178CONFIG_BASE_FULL=y
191CONFIG_FUTEX=y 179CONFIG_FUTEX=y
180CONFIG_ANON_INODES=y
192CONFIG_EPOLL=y 181CONFIG_EPOLL=y
182CONFIG_SIGNALFD=y
183CONFIG_TIMERFD=y
184CONFIG_EVENTFD=y
193CONFIG_SHMEM=y 185CONFIG_SHMEM=y
194CONFIG_SLAB=y
195CONFIG_VM_EVENT_COUNTERS=y 186CONFIG_VM_EVENT_COUNTERS=y
187CONFIG_SLAB=y
188# CONFIG_SLUB is not set
189# CONFIG_SLOB is not set
196CONFIG_RT_MUTEXES=y 190CONFIG_RT_MUTEXES=y
197# CONFIG_TINY_SHMEM is not set 191# CONFIG_TINY_SHMEM is not set
198CONFIG_BASE_SMALL=0 192CONFIG_BASE_SMALL=0
199# CONFIG_SLOB is not set
200
201#
202# Loadable module support
203#
204CONFIG_MODULES=y 193CONFIG_MODULES=y
205CONFIG_MODULE_UNLOAD=y 194CONFIG_MODULE_UNLOAD=y
206# CONFIG_MODULE_FORCE_UNLOAD is not set 195CONFIG_MODULE_FORCE_UNLOAD=y
207CONFIG_MODVERSIONS=y 196CONFIG_MODVERSIONS=y
208CONFIG_MODULE_SRCVERSION_ALL=y 197CONFIG_MODULE_SRCVERSION_ALL=y
209CONFIG_KMOD=y 198CONFIG_KMOD=y
210
211#
212# Block layer
213#
214CONFIG_BLOCK=y 199CONFIG_BLOCK=y
215# CONFIG_LBD is not set 200# CONFIG_LBD is not set
216# CONFIG_BLK_DEV_IO_TRACE is not set 201# CONFIG_BLK_DEV_IO_TRACE is not set
217# CONFIG_LSF is not set 202# CONFIG_LSF is not set
203# CONFIG_BLK_DEV_BSG is not set
218 204
219# 205#
220# IO Schedulers 206# IO Schedulers
@@ -234,16 +220,13 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
234# 220#
235CONFIG_HW_HAS_PCI=y 221CONFIG_HW_HAS_PCI=y
236CONFIG_PCI=y 222CONFIG_PCI=y
223# CONFIG_ARCH_SUPPORTS_MSI is not set
237CONFIG_MMU=y 224CONFIG_MMU=y
238 225
239# 226#
240# PCCARD (PCMCIA/CardBus) support 227# PCCARD (PCMCIA/CardBus) support
241# 228#
242# CONFIG_PCCARD is not set 229# CONFIG_PCCARD is not set
243
244#
245# PCI Hotplug Support
246#
247# CONFIG_HOTPLUG_PCI is not set 230# CONFIG_HOTPLUG_PCI is not set
248 231
249# 232#
@@ -256,10 +239,7 @@ CONFIG_TRAD_SIGNALS=y
256# 239#
257# Power management options 240# Power management options
258# 241#
259CONFIG_PM=y 242# CONFIG_PM is not set
260# CONFIG_PM_LEGACY is not set
261# CONFIG_PM_DEBUG is not set
262# CONFIG_PM_SYSFS_DEPRECATED is not set
263 243
264# 244#
265# Networking 245# Networking
@@ -269,14 +249,9 @@ CONFIG_NET=y
269# 249#
270# Networking options 250# Networking options
271# 251#
272# CONFIG_NETDEBUG is not set
273CONFIG_PACKET=y 252CONFIG_PACKET=y
274# CONFIG_PACKET_MMAP is not set 253# CONFIG_PACKET_MMAP is not set
275CONFIG_UNIX=y 254CONFIG_UNIX=y
276CONFIG_XFRM=y
277# CONFIG_XFRM_USER is not set
278# CONFIG_XFRM_SUB_POLICY is not set
279CONFIG_XFRM_MIGRATE=y
280# CONFIG_NET_KEY is not set 255# CONFIG_NET_KEY is not set
281CONFIG_INET=y 256CONFIG_INET=y
282CONFIG_IP_MULTICAST=y 257CONFIG_IP_MULTICAST=y
@@ -286,7 +261,6 @@ CONFIG_ASK_IP_FIB_HASH=y
286CONFIG_IP_FIB_HASH=y 261CONFIG_IP_FIB_HASH=y
287CONFIG_IP_MULTIPLE_TABLES=y 262CONFIG_IP_MULTIPLE_TABLES=y
288CONFIG_IP_ROUTE_MULTIPATH=y 263CONFIG_IP_ROUTE_MULTIPATH=y
289# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
290CONFIG_IP_ROUTE_VERBOSE=y 264CONFIG_IP_ROUTE_VERBOSE=y
291CONFIG_IP_PNP=y 265CONFIG_IP_PNP=y
292# CONFIG_IP_PNP_DHCP is not set 266# CONFIG_IP_PNP_DHCP is not set
@@ -302,34 +276,25 @@ CONFIG_SYN_COOKIES=y
302# CONFIG_INET_IPCOMP is not set 276# CONFIG_INET_IPCOMP is not set
303# CONFIG_INET_XFRM_TUNNEL is not set 277# CONFIG_INET_XFRM_TUNNEL is not set
304# CONFIG_INET_TUNNEL is not set 278# CONFIG_INET_TUNNEL is not set
305CONFIG_INET_XFRM_MODE_TRANSPORT=m 279# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
306CONFIG_INET_XFRM_MODE_TUNNEL=m 280# CONFIG_INET_XFRM_MODE_TUNNEL is not set
307CONFIG_INET_XFRM_MODE_BEET=m 281# CONFIG_INET_XFRM_MODE_BEET is not set
308CONFIG_INET_DIAG=y 282CONFIG_INET_DIAG=y
309CONFIG_INET_TCP_DIAG=y 283CONFIG_INET_TCP_DIAG=y
310# CONFIG_TCP_CONG_ADVANCED is not set 284# CONFIG_TCP_CONG_ADVANCED is not set
311CONFIG_TCP_CONG_CUBIC=y 285CONFIG_TCP_CONG_CUBIC=y
312CONFIG_DEFAULT_TCP_CONG="cubic" 286CONFIG_DEFAULT_TCP_CONG="cubic"
313CONFIG_TCP_MD5SIG=y 287# CONFIG_TCP_MD5SIG is not set
314# CONFIG_IPV6 is not set 288# CONFIG_IPV6 is not set
315# CONFIG_INET6_XFRM_TUNNEL is not set 289# CONFIG_INET6_XFRM_TUNNEL is not set
316# CONFIG_INET6_TUNNEL is not set 290# CONFIG_INET6_TUNNEL is not set
317CONFIG_NETWORK_SECMARK=y 291CONFIG_NETWORK_SECMARK=y
318# CONFIG_NETFILTER is not set 292# CONFIG_NETFILTER is not set
319
320#
321# DCCP Configuration (EXPERIMENTAL)
322#
323# CONFIG_IP_DCCP is not set 293# CONFIG_IP_DCCP is not set
324
325#
326# SCTP Configuration (EXPERIMENTAL)
327#
328# CONFIG_IP_SCTP is not set 294# CONFIG_IP_SCTP is not set
329 295# CONFIG_SCTP_HMAC_NONE is not set
330# 296# CONFIG_SCTP_HMAC_SHA1 is not set
331# TIPC Configuration (EXPERIMENTAL) 297# CONFIG_SCTP_HMAC_MD5 is not set
332#
333# CONFIG_TIPC is not set 298# CONFIG_TIPC is not set
334# CONFIG_ATM is not set 299# CONFIG_ATM is not set
335# CONFIG_BRIDGE is not set 300# CONFIG_BRIDGE is not set
@@ -355,10 +320,20 @@ CONFIG_NETWORK_SECMARK=y
355# CONFIG_HAMRADIO is not set 320# CONFIG_HAMRADIO is not set
356# CONFIG_IRDA is not set 321# CONFIG_IRDA is not set
357# CONFIG_BT is not set 322# CONFIG_BT is not set
358# CONFIG_IEEE80211 is not set 323# CONFIG_AF_RXRPC is not set
359CONFIG_FIB_RULES=y 324CONFIG_FIB_RULES=y
360 325
361# 326#
327# Wireless
328#
329# CONFIG_CFG80211 is not set
330# CONFIG_WIRELESS_EXT is not set
331# CONFIG_MAC80211 is not set
332# CONFIG_IEEE80211 is not set
333# CONFIG_RFKILL is not set
334# CONFIG_NET_9P is not set
335
336#
362# Device Drivers 337# Device Drivers
363# 338#
364 339
@@ -369,30 +344,10 @@ CONFIG_STANDALONE=y
369CONFIG_PREVENT_FIRMWARE_BUILD=y 344CONFIG_PREVENT_FIRMWARE_BUILD=y
370CONFIG_FW_LOADER=y 345CONFIG_FW_LOADER=y
371# CONFIG_SYS_HYPERVISOR is not set 346# CONFIG_SYS_HYPERVISOR is not set
372 347# CONFIG_CONNECTOR is not set
373#
374# Connector - unified userspace <-> kernelspace linker
375#
376CONFIG_CONNECTOR=m
377
378#
379# Memory Technology Devices (MTD)
380#
381# CONFIG_MTD is not set 348# CONFIG_MTD is not set
382
383#
384# Parallel port support
385#
386# CONFIG_PARPORT is not set 349# CONFIG_PARPORT is not set
387 350CONFIG_BLK_DEV=y
388#
389# Plug and Play support
390#
391# CONFIG_PNPACPI is not set
392
393#
394# Block devices
395#
396# CONFIG_BLK_CPQ_DA is not set 351# CONFIG_BLK_CPQ_DA is not set
397# CONFIG_BLK_CPQ_CISS_DA is not set 352# CONFIG_BLK_CPQ_CISS_DA is not set
398# CONFIG_BLK_DEV_DAC960 is not set 353# CONFIG_BLK_DEV_DAC960 is not set
@@ -407,19 +362,9 @@ CONFIG_BLK_DEV_RAM=y
407CONFIG_BLK_DEV_RAM_COUNT=16 362CONFIG_BLK_DEV_RAM_COUNT=16
408CONFIG_BLK_DEV_RAM_SIZE=4096 363CONFIG_BLK_DEV_RAM_SIZE=4096
409CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 364CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
410# CONFIG_BLK_DEV_INITRD is not set
411# CONFIG_CDROM_PKTCDVD is not set 365# CONFIG_CDROM_PKTCDVD is not set
412# CONFIG_ATA_OVER_ETH is not set 366# CONFIG_ATA_OVER_ETH is not set
413 367# CONFIG_MISC_DEVICES is not set
414#
415# Misc devices
416#
417CONFIG_SGI_IOC4=m
418# CONFIG_TIFM_CORE is not set
419
420#
421# ATA/ATAPI/MFM/RLL support
422#
423# CONFIG_IDE is not set 368# CONFIG_IDE is not set
424 369
425# 370#
@@ -427,6 +372,7 @@ CONFIG_SGI_IOC4=m
427# 372#
428# CONFIG_RAID_ATTRS is not set 373# CONFIG_RAID_ATTRS is not set
429CONFIG_SCSI=y 374CONFIG_SCSI=y
375CONFIG_SCSI_DMA=y
430CONFIG_SCSI_TGT=m 376CONFIG_SCSI_TGT=m
431# CONFIG_SCSI_NETLINK is not set 377# CONFIG_SCSI_NETLINK is not set
432CONFIG_SCSI_PROC_FS=y 378CONFIG_SCSI_PROC_FS=y
@@ -448,6 +394,7 @@ CONFIG_SCSI_MULTI_LUN=y
448# CONFIG_SCSI_CONSTANTS is not set 394# CONFIG_SCSI_CONSTANTS is not set
449# CONFIG_SCSI_LOGGING is not set 395# CONFIG_SCSI_LOGGING is not set
450CONFIG_SCSI_SCAN_ASYNC=y 396CONFIG_SCSI_SCAN_ASYNC=y
397CONFIG_SCSI_WAIT_SCAN=m
451 398
452# 399#
453# SCSI Transports 400# SCSI Transports
@@ -458,51 +405,8 @@ CONFIG_SCSI_SCAN_ASYNC=y
458CONFIG_SCSI_SAS_ATTRS=m 405CONFIG_SCSI_SAS_ATTRS=m
459CONFIG_SCSI_SAS_LIBSAS=m 406CONFIG_SCSI_SAS_LIBSAS=m
460# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set 407# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
461 408# CONFIG_SCSI_LOWLEVEL is not set
462#
463# SCSI low-level drivers
464#
465# CONFIG_ISCSI_TCP is not set
466# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
467# CONFIG_SCSI_3W_9XXX is not set
468# CONFIG_SCSI_ACARD is not set
469# CONFIG_SCSI_AACRAID is not set
470# CONFIG_SCSI_AIC7XXX is not set
471# CONFIG_SCSI_AIC7XXX_OLD is not set
472# CONFIG_SCSI_AIC79XX is not set
473CONFIG_SCSI_AIC94XX=m
474# CONFIG_AIC94XX_DEBUG is not set
475# CONFIG_SCSI_DPT_I2O is not set
476# CONFIG_SCSI_ARCMSR is not set
477# CONFIG_MEGARAID_NEWGEN is not set
478# CONFIG_MEGARAID_LEGACY is not set
479# CONFIG_MEGARAID_SAS is not set
480# CONFIG_SCSI_HPTIOP is not set
481# CONFIG_SCSI_DMX3191D is not set
482# CONFIG_SCSI_FUTURE_DOMAIN is not set
483# CONFIG_SCSI_IPS is not set
484# CONFIG_SCSI_INITIO is not set
485# CONFIG_SCSI_INIA100 is not set
486# CONFIG_SCSI_STEX is not set
487# CONFIG_SCSI_SYM53C8XX_2 is not set
488# CONFIG_SCSI_QLOGIC_1280 is not set
489# CONFIG_SCSI_QLA_FC is not set
490# CONFIG_SCSI_QLA_ISCSI is not set
491# CONFIG_SCSI_LPFC is not set
492# CONFIG_SCSI_DC395x is not set
493# CONFIG_SCSI_DC390T is not set
494# CONFIG_SCSI_NSP32 is not set
495# CONFIG_SCSI_DEBUG is not set
496# CONFIG_SCSI_SRP is not set
497
498#
499# Serial ATA (prod) and Parallel ATA (experimental) drivers
500#
501# CONFIG_ATA is not set 409# CONFIG_ATA is not set
502
503#
504# Multi-device support (RAID and LVM)
505#
506# CONFIG_MD is not set 410# CONFIG_MD is not set
507 411
508# 412#
@@ -516,59 +420,26 @@ CONFIG_SCSI_AIC94XX=m
516# 420#
517# IEEE 1394 (FireWire) support 421# IEEE 1394 (FireWire) support
518# 422#
423# CONFIG_FIREWIRE is not set
519# CONFIG_IEEE1394 is not set 424# CONFIG_IEEE1394 is not set
520
521#
522# I2O device support
523#
524# CONFIG_I2O is not set 425# CONFIG_I2O is not set
525
526#
527# Network device support
528#
529CONFIG_NETDEVICES=y 426CONFIG_NETDEVICES=y
427# CONFIG_NETDEVICES_MULTIQUEUE is not set
530# CONFIG_DUMMY is not set 428# CONFIG_DUMMY is not set
531# CONFIG_BONDING is not set 429# CONFIG_BONDING is not set
430# CONFIG_MACVLAN is not set
532# CONFIG_EQUALIZER is not set 431# CONFIG_EQUALIZER is not set
533# CONFIG_TUN is not set 432# CONFIG_TUN is not set
534
535#
536# ARCnet devices
537#
538# CONFIG_ARCNET is not set 433# CONFIG_ARCNET is not set
539 434# CONFIG_PHYLIB is not set
540#
541# PHY device support
542#
543CONFIG_PHYLIB=m
544
545#
546# MII PHY device drivers
547#
548CONFIG_MARVELL_PHY=m
549CONFIG_DAVICOM_PHY=m
550CONFIG_QSEMI_PHY=m
551CONFIG_LXT_PHY=m
552CONFIG_CICADA_PHY=m
553CONFIG_VITESSE_PHY=m
554CONFIG_SMSC_PHY=m
555# CONFIG_BROADCOM_PHY is not set
556# CONFIG_FIXED_PHY is not set
557
558#
559# Ethernet (10 or 100Mbit)
560#
561CONFIG_NET_ETHERNET=y 435CONFIG_NET_ETHERNET=y
562CONFIG_MII=y 436CONFIG_MII=y
437# CONFIG_AX88796 is not set
563# CONFIG_HAPPYMEAL is not set 438# CONFIG_HAPPYMEAL is not set
564# CONFIG_SUNGEM is not set 439# CONFIG_SUNGEM is not set
565# CONFIG_CASSINI is not set 440# CONFIG_CASSINI is not set
566# CONFIG_NET_VENDOR_3COM is not set 441# CONFIG_NET_VENDOR_3COM is not set
567# CONFIG_DM9000 is not set 442# CONFIG_DM9000 is not set
568
569#
570# Tulip family network device support
571#
572# CONFIG_NET_TULIP is not set 443# CONFIG_NET_TULIP is not set
573# CONFIG_HP100 is not set 444# CONFIG_HP100 is not set
574CONFIG_NET_PCI=y 445CONFIG_NET_PCI=y
@@ -577,6 +448,7 @@ CONFIG_NET_PCI=y
577# CONFIG_ADAPTEC_STARFIRE is not set 448# CONFIG_ADAPTEC_STARFIRE is not set
578# CONFIG_B44 is not set 449# CONFIG_B44 is not set
579# CONFIG_FORCEDETH is not set 450# CONFIG_FORCEDETH is not set
451# CONFIG_TC35815 is not set
580# CONFIG_DGRS is not set 452# CONFIG_DGRS is not set
581# CONFIG_EEPRO100 is not set 453# CONFIG_EEPRO100 is not set
582CONFIG_E100=y 454CONFIG_E100=y
@@ -591,50 +463,25 @@ CONFIG_E100=y
591# CONFIG_TLAN is not set 463# CONFIG_TLAN is not set
592# CONFIG_VIA_RHINE is not set 464# CONFIG_VIA_RHINE is not set
593# CONFIG_SC92031 is not set 465# CONFIG_SC92031 is not set
594 466# CONFIG_NETDEV_1000 is not set
595# 467# CONFIG_NETDEV_10000 is not set
596# Ethernet (1000 Mbit)
597#
598# CONFIG_ACENIC is not set
599# CONFIG_DL2K is not set
600# CONFIG_E1000 is not set
601# CONFIG_NS83820 is not set
602# CONFIG_HAMACHI is not set
603# CONFIG_YELLOWFIN is not set
604# CONFIG_R8169 is not set
605# CONFIG_SIS190 is not set
606# CONFIG_SKGE is not set
607# CONFIG_SKY2 is not set
608# CONFIG_SK98LIN is not set
609# CONFIG_VIA_VELOCITY is not set
610# CONFIG_TIGON3 is not set
611# CONFIG_BNX2 is not set
612CONFIG_QLA3XXX=m
613# CONFIG_ATL1 is not set
614
615#
616# Ethernet (10000 Mbit)
617#
618# CONFIG_CHELSIO_T1 is not set
619CONFIG_CHELSIO_T3=m
620# CONFIG_IXGB is not set
621# CONFIG_S2IO is not set
622# CONFIG_MYRI10GE is not set
623CONFIG_NETXEN_NIC=m
624
625#
626# Token Ring devices
627#
628# CONFIG_TR is not set 468# CONFIG_TR is not set
629 469
630# 470#
631# Wireless LAN (non-hamradio) 471# Wireless LAN
632# 472#
633# CONFIG_NET_RADIO is not set 473# CONFIG_WLAN_PRE80211 is not set
474# CONFIG_WLAN_80211 is not set
634 475
635# 476#
636# Wan interfaces 477# USB Network Adapters
637# 478#
479CONFIG_USB_CATC=m
480CONFIG_USB_KAWETH=m
481CONFIG_USB_PEGASUS=m
482CONFIG_USB_RTL8150=m
483# CONFIG_USB_USBNET_MII is not set
484# CONFIG_USB_USBNET is not set
638# CONFIG_WAN is not set 485# CONFIG_WAN is not set
639# CONFIG_FDDI is not set 486# CONFIG_FDDI is not set
640# CONFIG_HIPPI is not set 487# CONFIG_HIPPI is not set
@@ -645,15 +492,7 @@ CONFIG_NETXEN_NIC=m
645# CONFIG_NETCONSOLE is not set 492# CONFIG_NETCONSOLE is not set
646# CONFIG_NETPOLL is not set 493# CONFIG_NETPOLL is not set
647# CONFIG_NET_POLL_CONTROLLER is not set 494# CONFIG_NET_POLL_CONTROLLER is not set
648
649#
650# ISDN subsystem
651#
652# CONFIG_ISDN is not set 495# CONFIG_ISDN is not set
653
654#
655# Telephony Support
656#
657# CONFIG_PHONE is not set 496# CONFIG_PHONE is not set
658 497
659# 498#
@@ -661,6 +500,7 @@ CONFIG_NETXEN_NIC=m
661# 500#
662CONFIG_INPUT=y 501CONFIG_INPUT=y
663# CONFIG_INPUT_FF_MEMLESS is not set 502# CONFIG_INPUT_FF_MEMLESS is not set
503# CONFIG_INPUT_POLLDEV is not set
664 504
665# 505#
666# Userland interfaces 506# Userland interfaces
@@ -677,6 +517,7 @@ CONFIG_INPUT=y
677# CONFIG_INPUT_KEYBOARD is not set 517# CONFIG_INPUT_KEYBOARD is not set
678# CONFIG_INPUT_MOUSE is not set 518# CONFIG_INPUT_MOUSE is not set
679# CONFIG_INPUT_JOYSTICK is not set 519# CONFIG_INPUT_JOYSTICK is not set
520# CONFIG_INPUT_TABLET is not set
680# CONFIG_INPUT_TOUCHSCREEN is not set 521# CONFIG_INPUT_TOUCHSCREEN is not set
681# CONFIG_INPUT_MISC is not set 522# CONFIG_INPUT_MISC is not set
682 523
@@ -711,35 +552,18 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
711CONFIG_UNIX98_PTYS=y 552CONFIG_UNIX98_PTYS=y
712CONFIG_LEGACY_PTYS=y 553CONFIG_LEGACY_PTYS=y
713CONFIG_LEGACY_PTY_COUNT=256 554CONFIG_LEGACY_PTY_COUNT=256
714
715#
716# IPMI
717#
718# CONFIG_IPMI_HANDLER is not set 555# CONFIG_IPMI_HANDLER is not set
719
720#
721# Watchdog Cards
722#
723# CONFIG_WATCHDOG is not set 556# CONFIG_WATCHDOG is not set
724# CONFIG_HW_RANDOM is not set 557# CONFIG_HW_RANDOM is not set
725# CONFIG_RTC is not set 558# CONFIG_RTC is not set
726# CONFIG_GEN_RTC is not set
727# CONFIG_DTLK is not set
728# CONFIG_R3964 is not set 559# CONFIG_R3964 is not set
729# CONFIG_APPLICOM is not set 560# CONFIG_APPLICOM is not set
730# CONFIG_TANBAC_TB0219 is not set 561# CONFIG_GPIO_TB0219 is not set
731# CONFIG_DRM is not set 562# CONFIG_DRM is not set
732CONFIG_GPIO_VR41XX=y 563CONFIG_GPIO_VR41XX=y
733# CONFIG_RAW_DRIVER is not set 564# CONFIG_RAW_DRIVER is not set
734
735#
736# TPM devices
737#
738# CONFIG_TCG_TPM is not set 565# CONFIG_TCG_TPM is not set
739 566CONFIG_DEVPORT=y
740#
741# I2C support
742#
743# CONFIG_I2C is not set 567# CONFIG_I2C is not set
744 568
745# 569#
@@ -747,33 +571,33 @@ CONFIG_GPIO_VR41XX=y
747# 571#
748# CONFIG_SPI is not set 572# CONFIG_SPI is not set
749# CONFIG_SPI_MASTER is not set 573# CONFIG_SPI_MASTER is not set
750
751#
752# Dallas's 1-wire bus
753#
754# CONFIG_W1 is not set 574# CONFIG_W1 is not set
575# CONFIG_POWER_SUPPLY is not set
576# CONFIG_HWMON is not set
755 577
756# 578#
757# Hardware Monitoring support 579# Multifunction device drivers
758# 580#
759# CONFIG_HWMON is not set 581# CONFIG_MFD_SM501 is not set
760# CONFIG_HWMON_VID is not set
761 582
762# 583#
763# Multimedia devices 584# Multimedia devices
764# 585#
765# CONFIG_VIDEO_DEV is not set 586# CONFIG_VIDEO_DEV is not set
587# CONFIG_DVB_CORE is not set
588# CONFIG_DAB is not set
766 589
767# 590#
768# Digital Video Broadcasting Devices 591# Graphics support
769# 592#
770# CONFIG_DVB is not set 593# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
771# CONFIG_USB_DABUSB is not set
772 594
773# 595#
774# Graphics support 596# Display device support
775# 597#
776# CONFIG_FIRMWARE_EDID is not set 598# CONFIG_DISPLAY_SUPPORT is not set
599# CONFIG_VGASTATE is not set
600# CONFIG_VIDEO_OUTPUT_CONTROL is not set
777# CONFIG_FB is not set 601# CONFIG_FB is not set
778 602
779# 603#
@@ -781,22 +605,13 @@ CONFIG_GPIO_VR41XX=y
781# 605#
782# CONFIG_VGA_CONSOLE is not set 606# CONFIG_VGA_CONSOLE is not set
783CONFIG_DUMMY_CONSOLE=y 607CONFIG_DUMMY_CONSOLE=y
784# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
785 608
786# 609#
787# Sound 610# Sound
788# 611#
789# CONFIG_SOUND is not set 612# CONFIG_SOUND is not set
790 613# CONFIG_HID_SUPPORT is not set
791# 614CONFIG_USB_SUPPORT=y
792# HID Devices
793#
794CONFIG_HID=y
795# CONFIG_HID_DEBUG is not set
796
797#
798# USB support
799#
800CONFIG_USB_ARCH_HAS_HCD=y 615CONFIG_USB_ARCH_HAS_HCD=y
801CONFIG_USB_ARCH_HAS_OHCI=y 616CONFIG_USB_ARCH_HAS_OHCI=y
802CONFIG_USB_ARCH_HAS_EHCI=y 617CONFIG_USB_ARCH_HAS_EHCI=y
@@ -807,8 +622,8 @@ CONFIG_USB=y
807# Miscellaneous USB options 622# Miscellaneous USB options
808# 623#
809CONFIG_USB_DEVICEFS=y 624CONFIG_USB_DEVICEFS=y
625CONFIG_USB_DEVICE_CLASS=y
810# CONFIG_USB_DYNAMIC_MINORS is not set 626# CONFIG_USB_DYNAMIC_MINORS is not set
811# CONFIG_USB_SUSPEND is not set
812# CONFIG_USB_OTG is not set 627# CONFIG_USB_OTG is not set
813 628
814# 629#
@@ -818,7 +633,6 @@ CONFIG_USB_EHCI_HCD=y
818# CONFIG_USB_EHCI_SPLIT_ISO is not set 633# CONFIG_USB_EHCI_SPLIT_ISO is not set
819# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 634# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
820# CONFIG_USB_EHCI_TT_NEWSCHED is not set 635# CONFIG_USB_EHCI_TT_NEWSCHED is not set
821# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
822# CONFIG_USB_ISP116X_HCD is not set 636# CONFIG_USB_ISP116X_HCD is not set
823CONFIG_USB_OHCI_HCD=y 637CONFIG_USB_OHCI_HCD=y
824# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 638# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -826,11 +640,12 @@ CONFIG_USB_OHCI_HCD=y
826CONFIG_USB_OHCI_LITTLE_ENDIAN=y 640CONFIG_USB_OHCI_LITTLE_ENDIAN=y
827# CONFIG_USB_UHCI_HCD is not set 641# CONFIG_USB_UHCI_HCD is not set
828# CONFIG_USB_SL811_HCD is not set 642# CONFIG_USB_SL811_HCD is not set
643# CONFIG_USB_R8A66597_HCD is not set
829 644
830# 645#
831# USB Device Class drivers 646# USB Device Class drivers
832# 647#
833# CONFIG_USB_ACM is not set 648CONFIG_USB_ACM=y
834# CONFIG_USB_PRINTER is not set 649# CONFIG_USB_PRINTER is not set
835 650
836# 651#
@@ -854,44 +669,10 @@ CONFIG_USB_STORAGE=y
854# CONFIG_USB_LIBUSUAL is not set 669# CONFIG_USB_LIBUSUAL is not set
855 670
856# 671#
857# USB Input Devices
858#
859# CONFIG_USB_HID is not set
860
861#
862# USB HID Boot Protocol drivers
863#
864# CONFIG_USB_KBD is not set
865# CONFIG_USB_MOUSE is not set
866# CONFIG_USB_AIPTEK is not set
867# CONFIG_USB_WACOM is not set
868# CONFIG_USB_ACECAD is not set
869# CONFIG_USB_KBTAB is not set
870# CONFIG_USB_POWERMATE is not set
871# CONFIG_USB_TOUCHSCREEN is not set
872# CONFIG_USB_YEALINK is not set
873# CONFIG_USB_XPAD is not set
874# CONFIG_USB_ATI_REMOTE is not set
875# CONFIG_USB_ATI_REMOTE2 is not set
876# CONFIG_USB_KEYSPAN_REMOTE is not set
877# CONFIG_USB_APPLETOUCH is not set
878# CONFIG_USB_GTCO is not set
879
880#
881# USB Imaging devices 672# USB Imaging devices
882# 673#
883# CONFIG_USB_MDC800 is not set 674# CONFIG_USB_MDC800 is not set
884# CONFIG_USB_MICROTEK is not set 675# CONFIG_USB_MICROTEK is not set
885
886#
887# USB Network Adapters
888#
889# CONFIG_USB_CATC is not set
890# CONFIG_USB_KAWETH is not set
891# CONFIG_USB_PEGASUS is not set
892# CONFIG_USB_RTL8150 is not set
893# CONFIG_USB_USBNET_MII is not set
894# CONFIG_USB_USBNET is not set
895# CONFIG_USB_MON is not set 676# CONFIG_USB_MON is not set
896 677
897# 678#
@@ -924,6 +705,7 @@ CONFIG_USB_STORAGE=y
924# CONFIG_USB_SISUSBVGA is not set 705# CONFIG_USB_SISUSBVGA is not set
925# CONFIG_USB_LD is not set 706# CONFIG_USB_LD is not set
926# CONFIG_USB_TRANCEVIBRATOR is not set 707# CONFIG_USB_TRANCEVIBRATOR is not set
708# CONFIG_USB_IOWARRIOR is not set
927# CONFIG_USB_TEST is not set 709# CONFIG_USB_TEST is not set
928 710
929# 711#
@@ -934,37 +716,9 @@ CONFIG_USB_STORAGE=y
934# USB Gadget Support 716# USB Gadget Support
935# 717#
936# CONFIG_USB_GADGET is not set 718# CONFIG_USB_GADGET is not set
937
938#
939# MMC/SD Card support
940#
941# CONFIG_MMC is not set 719# CONFIG_MMC is not set
942
943#
944# LED devices
945#
946# CONFIG_NEW_LEDS is not set 720# CONFIG_NEW_LEDS is not set
947
948#
949# LED drivers
950#
951
952#
953# LED Triggers
954#
955
956#
957# InfiniBand support
958#
959# CONFIG_INFINIBAND is not set 721# CONFIG_INFINIBAND is not set
960
961#
962# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
963#
964
965#
966# Real Time Clock
967#
968CONFIG_RTC_LIB=y 722CONFIG_RTC_LIB=y
969CONFIG_RTC_CLASS=y 723CONFIG_RTC_CLASS=y
970CONFIG_RTC_HCTOSYS=y 724CONFIG_RTC_HCTOSYS=y
@@ -978,18 +732,29 @@ CONFIG_RTC_INTF_SYSFS=y
978CONFIG_RTC_INTF_PROC=y 732CONFIG_RTC_INTF_PROC=y
979CONFIG_RTC_INTF_DEV=y 733CONFIG_RTC_INTF_DEV=y
980# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set 734# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
735# CONFIG_RTC_DRV_TEST is not set
736
737#
738# SPI RTC drivers
739#
981 740
982# 741#
983# RTC drivers 742# Platform RTC drivers
984# 743#
744# CONFIG_RTC_DRV_CMOS is not set
985# CONFIG_RTC_DRV_DS1553 is not set 745# CONFIG_RTC_DRV_DS1553 is not set
746# CONFIG_RTC_DRV_STK17TA8 is not set
986# CONFIG_RTC_DRV_DS1742 is not set 747# CONFIG_RTC_DRV_DS1742 is not set
987# CONFIG_RTC_DRV_M48T86 is not set 748# CONFIG_RTC_DRV_M48T86 is not set
988CONFIG_RTC_DRV_VR41XX=y 749# CONFIG_RTC_DRV_M48T59 is not set
989# CONFIG_RTC_DRV_TEST is not set
990# CONFIG_RTC_DRV_V3020 is not set 750# CONFIG_RTC_DRV_V3020 is not set
991 751
992# 752#
753# on-CPU RTC drivers
754#
755CONFIG_RTC_DRV_VR41XX=y
756
757#
993# DMA Engine support 758# DMA Engine support
994# 759#
995# CONFIG_DMA_ENGINE is not set 760# CONFIG_DMA_ENGINE is not set
@@ -1003,12 +768,9 @@ CONFIG_RTC_DRV_VR41XX=y
1003# 768#
1004 769
1005# 770#
1006# Auxiliary Display support 771# Userspace I/O
1007#
1008
1009#
1010# Virtualization
1011# 772#
773# CONFIG_UIO is not set
1012 774
1013# 775#
1014# File systems 776# File systems
@@ -1032,7 +794,7 @@ CONFIG_INOTIFY_USER=y
1032CONFIG_DNOTIFY=y 794CONFIG_DNOTIFY=y
1033# CONFIG_AUTOFS_FS is not set 795# CONFIG_AUTOFS_FS is not set
1034CONFIG_AUTOFS4_FS=y 796CONFIG_AUTOFS4_FS=y
1035CONFIG_FUSE_FS=m 797# CONFIG_FUSE_FS is not set
1036CONFIG_GENERIC_ACL=y 798CONFIG_GENERIC_ACL=y
1037 799
1038# 800#
@@ -1059,7 +821,7 @@ CONFIG_TMPFS=y
1059CONFIG_TMPFS_POSIX_ACL=y 821CONFIG_TMPFS_POSIX_ACL=y
1060# CONFIG_HUGETLB_PAGE is not set 822# CONFIG_HUGETLB_PAGE is not set
1061CONFIG_RAMFS=y 823CONFIG_RAMFS=y
1062CONFIG_CONFIGFS_FS=m 824# CONFIG_CONFIGFS_FS is not set
1063 825
1064# 826#
1065# Miscellaneous filesystems 827# Miscellaneous filesystems
@@ -1097,6 +859,7 @@ CONFIG_LOCKD_V4=y
1097CONFIG_EXPORTFS=m 859CONFIG_EXPORTFS=m
1098CONFIG_NFS_COMMON=y 860CONFIG_NFS_COMMON=y
1099CONFIG_SUNRPC=y 861CONFIG_SUNRPC=y
862# CONFIG_SUNRPC_BIND34 is not set
1100# CONFIG_RPCSEC_GSS_KRB5 is not set 863# CONFIG_RPCSEC_GSS_KRB5 is not set
1101# CONFIG_RPCSEC_GSS_SPKM3 is not set 864# CONFIG_RPCSEC_GSS_SPKM3 is not set
1102# CONFIG_SMB_FS is not set 865# CONFIG_SMB_FS is not set
@@ -1104,7 +867,6 @@ CONFIG_SUNRPC=y
1104# CONFIG_NCP_FS is not set 867# CONFIG_NCP_FS is not set
1105# CONFIG_CODA_FS is not set 868# CONFIG_CODA_FS is not set
1106# CONFIG_AFS_FS is not set 869# CONFIG_AFS_FS is not set
1107# CONFIG_9P_FS is not set
1108 870
1109# 871#
1110# Partition Types 872# Partition Types
@@ -1120,10 +882,7 @@ CONFIG_MSDOS_PARTITION=y
1120# 882#
1121# Distributed Lock Manager 883# Distributed Lock Manager
1122# 884#
1123CONFIG_DLM=m 885# CONFIG_DLM is not set
1124CONFIG_DLM_TCP=y
1125# CONFIG_DLM_SCTP is not set
1126# CONFIG_DLM_DEBUG is not set
1127 886
1128# 887#
1129# Profiling support 888# Profiling support
@@ -1141,7 +900,6 @@ CONFIG_ENABLE_MUST_CHECK=y
1141# CONFIG_DEBUG_FS is not set 900# CONFIG_DEBUG_FS is not set
1142# CONFIG_HEADERS_CHECK is not set 901# CONFIG_HEADERS_CHECK is not set
1143# CONFIG_DEBUG_KERNEL is not set 902# CONFIG_DEBUG_KERNEL is not set
1144CONFIG_LOG_BUF_SHIFT=14
1145CONFIG_CROSSCOMPILE=y 903CONFIG_CROSSCOMPILE=y
1146CONFIG_CMDLINE="mem=32M console=ttyVR0,115200" 904CONFIG_CMDLINE="mem=32M console=ttyVR0,115200"
1147 905
@@ -1150,62 +908,20 @@ CONFIG_CMDLINE="mem=32M console=ttyVR0,115200"
1150# 908#
1151# CONFIG_KEYS is not set 909# CONFIG_KEYS is not set
1152# CONFIG_SECURITY is not set 910# CONFIG_SECURITY is not set
1153 911# CONFIG_CRYPTO is not set
1154#
1155# Cryptographic options
1156#
1157CONFIG_CRYPTO=y
1158CONFIG_CRYPTO_ALGAPI=y
1159CONFIG_CRYPTO_BLKCIPHER=m
1160CONFIG_CRYPTO_HASH=m
1161CONFIG_CRYPTO_MANAGER=m
1162CONFIG_CRYPTO_HMAC=m
1163CONFIG_CRYPTO_XCBC=m
1164CONFIG_CRYPTO_NULL=m
1165CONFIG_CRYPTO_MD4=m
1166CONFIG_CRYPTO_MD5=y
1167CONFIG_CRYPTO_SHA1=m
1168CONFIG_CRYPTO_SHA256=m
1169CONFIG_CRYPTO_SHA512=m
1170CONFIG_CRYPTO_WP512=m
1171CONFIG_CRYPTO_TGR192=m
1172CONFIG_CRYPTO_GF128MUL=m
1173CONFIG_CRYPTO_ECB=m
1174CONFIG_CRYPTO_CBC=m
1175CONFIG_CRYPTO_PCBC=m
1176CONFIG_CRYPTO_LRW=m
1177CONFIG_CRYPTO_DES=m
1178CONFIG_CRYPTO_FCRYPT=m
1179CONFIG_CRYPTO_BLOWFISH=m
1180CONFIG_CRYPTO_TWOFISH=m
1181CONFIG_CRYPTO_TWOFISH_COMMON=m
1182CONFIG_CRYPTO_SERPENT=m
1183CONFIG_CRYPTO_AES=m
1184CONFIG_CRYPTO_CAST5=m
1185CONFIG_CRYPTO_CAST6=m
1186CONFIG_CRYPTO_TEA=m
1187CONFIG_CRYPTO_ARC4=m
1188CONFIG_CRYPTO_KHAZAD=m
1189CONFIG_CRYPTO_ANUBIS=m
1190CONFIG_CRYPTO_DEFLATE=m
1191CONFIG_CRYPTO_MICHAEL_MIC=m
1192CONFIG_CRYPTO_CRC32C=m
1193CONFIG_CRYPTO_CAMELLIA=m
1194# CONFIG_CRYPTO_TEST is not set
1195
1196#
1197# Hardware crypto devices
1198#
1199 912
1200# 913#
1201# Library routines 914# Library routines
1202# 915#
916CONFIG_BITREVERSE=m
1203# CONFIG_CRC_CCITT is not set 917# CONFIG_CRC_CCITT is not set
1204# CONFIG_CRC16 is not set 918# CONFIG_CRC16 is not set
1205# CONFIG_CRC32 is not set 919# CONFIG_CRC_ITU_T is not set
1206CONFIG_LIBCRC32C=m 920CONFIG_CRC32=m
921# CONFIG_CRC7 is not set
922# CONFIG_LIBCRC32C is not set
1207CONFIG_ZLIB_INFLATE=m 923CONFIG_ZLIB_INFLATE=m
1208CONFIG_ZLIB_DEFLATE=m
1209CONFIG_PLIST=y 924CONFIG_PLIST=y
1210CONFIG_HAS_IOMEM=y 925CONFIG_HAS_IOMEM=y
1211CONFIG_HAS_IOPORT=y 926CONFIG_HAS_IOPORT=y
927CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/tb0287_defconfig b/arch/mips/configs/tb0287_defconfig
index 66383ecff200..499b6bd7ee68 100644
--- a/arch/mips/configs/tb0287_defconfig
+++ b/arch/mips/configs/tb0287_defconfig
@@ -1,68 +1,56 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc1 3# Linux kernel version: 2.6.23-rc2
4# Thu Feb 22 10:38:09 2007 4# Thu Aug 9 14:03:54 2007
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
26# CONFIG_MIPS_COBALT is not set 13# CONFIG_MIPS_COBALT is not set
27# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
28# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 21# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 22CONFIG_MACH_VR41XX=y
36# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
38CONFIG_MACH_VR41XX=y 25# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
43# CONFIG_SGI_IP27 is not set 29# CONFIG_SGI_IP27 is not set
44# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 41# CONFIG_TOSHIBA_JMR3927 is not set
56# CONFIG_TOSHIBA_RBTX4927 is not set 42# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 43# CONFIG_TOSHIBA_RBTX4938 is not set
44# CONFIG_WR_PPMC is not set
58# CONFIG_CASIO_E55 is not set 45# CONFIG_CASIO_E55 is not set
59# CONFIG_IBM_WORKPAD is not set 46# CONFIG_IBM_WORKPAD is not set
60# CONFIG_NEC_CMBVR4133 is not set 47# CONFIG_NEC_CMBVR4133 is not set
61CONFIG_TANBAC_TB022X=y 48CONFIG_TANBAC_TB022X=y
62# CONFIG_TANBAC_TB0226 is not set
63CONFIG_TANBAC_TB0287=y
64# CONFIG_VICTOR_MPC30X is not set 49# CONFIG_VICTOR_MPC30X is not set
65# CONFIG_ZAO_CAPCELLA is not set 50# CONFIG_ZAO_CAPCELLA is not set
51# CONFIG_TANBAC_TB0219 is not set
52# CONFIG_TANBAC_TB0226 is not set
53CONFIG_TANBAC_TB0287=y
66CONFIG_PCI_VR41XX=y 54CONFIG_PCI_VR41XX=y
67CONFIG_RWSEM_GENERIC_SPINLOCK=y 55CONFIG_RWSEM_GENERIC_SPINLOCK=y
68# CONFIG_ARCH_HAS_ILOG2_U32 is not set 56# CONFIG_ARCH_HAS_ILOG2_U32 is not set
@@ -75,6 +63,8 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
75CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 63CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
76CONFIG_DMA_NONCOHERENT=y 64CONFIG_DMA_NONCOHERENT=y
77CONFIG_DMA_NEED_PCI_MAP_STATE=y 65CONFIG_DMA_NEED_PCI_MAP_STATE=y
66# CONFIG_HOTPLUG_CPU is not set
67# CONFIG_NO_IOPORT is not set
78# CONFIG_CPU_BIG_ENDIAN is not set 68# CONFIG_CPU_BIG_ENDIAN is not set
79CONFIG_CPU_LITTLE_ENDIAN=y 69CONFIG_CPU_LITTLE_ENDIAN=y
80CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 70CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
@@ -84,6 +74,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
84# 74#
85# CPU selection 75# CPU selection
86# 76#
77# CONFIG_CPU_LOONGSON2 is not set
87# CONFIG_CPU_MIPS32_R1 is not set 78# CONFIG_CPU_MIPS32_R1 is not set
88# CONFIG_CPU_MIPS32_R2 is not set 79# CONFIG_CPU_MIPS32_R2 is not set
89# CONFIG_CPU_MIPS64_R1 is not set 80# CONFIG_CPU_MIPS64_R1 is not set
@@ -105,7 +96,6 @@ CONFIG_CPU_VR41XX=y
105# CONFIG_CPU_SB1 is not set 96# CONFIG_CPU_SB1 is not set
106CONFIG_SYS_HAS_CPU_VR41XX=y 97CONFIG_SYS_HAS_CPU_VR41XX=y
107CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 98CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
108CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
109CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 99CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
110CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y 100CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
111 101
@@ -121,7 +111,6 @@ CONFIG_PAGE_SIZE_4KB=y
121CONFIG_MIPS_MT_DISABLED=y 111CONFIG_MIPS_MT_DISABLED=y
122# CONFIG_MIPS_MT_SMP is not set 112# CONFIG_MIPS_MT_SMP is not set
123# CONFIG_MIPS_MT_SMTC is not set 113# CONFIG_MIPS_MT_SMTC is not set
124# CONFIG_MIPS_VPE_LOADER is not set
125CONFIG_CPU_HAS_SYNC=y 114CONFIG_CPU_HAS_SYNC=y
126CONFIG_GENERIC_HARDIRQS=y 115CONFIG_GENERIC_HARDIRQS=y
127CONFIG_GENERIC_IRQ_PROBE=y 116CONFIG_GENERIC_IRQ_PROBE=y
@@ -135,86 +124,83 @@ CONFIG_FLAT_NODE_MEM_MAP=y
135# CONFIG_SPARSEMEM_STATIC is not set 124# CONFIG_SPARSEMEM_STATIC is not set
136CONFIG_SPLIT_PTLOCK_CPUS=4 125CONFIG_SPLIT_PTLOCK_CPUS=4
137# CONFIG_RESOURCES_64BIT is not set 126# CONFIG_RESOURCES_64BIT is not set
138CONFIG_ZONE_DMA_FLAG=1 127CONFIG_ZONE_DMA_FLAG=0
128CONFIG_VIRT_TO_BUS=y
139# CONFIG_HZ_48 is not set 129# CONFIG_HZ_48 is not set
140# CONFIG_HZ_100 is not set 130# CONFIG_HZ_100 is not set
141# CONFIG_HZ_128 is not set 131# CONFIG_HZ_128 is not set
142# CONFIG_HZ_250 is not set 132CONFIG_HZ_250=y
143# CONFIG_HZ_256 is not set 133# CONFIG_HZ_256 is not set
144CONFIG_HZ_1000=y 134# CONFIG_HZ_1000 is not set
145# CONFIG_HZ_1024 is not set 135# CONFIG_HZ_1024 is not set
146CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 136CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
147CONFIG_HZ=1000 137CONFIG_HZ=250
148CONFIG_PREEMPT_NONE=y 138CONFIG_PREEMPT_NONE=y
149# CONFIG_PREEMPT_VOLUNTARY is not set 139# CONFIG_PREEMPT_VOLUNTARY is not set
150# CONFIG_PREEMPT is not set 140# CONFIG_PREEMPT is not set
151# CONFIG_KEXEC is not set 141# CONFIG_KEXEC is not set
142CONFIG_SECCOMP=y
152CONFIG_LOCKDEP_SUPPORT=y 143CONFIG_LOCKDEP_SUPPORT=y
153CONFIG_STACKTRACE_SUPPORT=y 144CONFIG_STACKTRACE_SUPPORT=y
154CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 145CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
155 146
156# 147#
157# Code maturity level options 148# General setup
158# 149#
159CONFIG_EXPERIMENTAL=y 150CONFIG_EXPERIMENTAL=y
160CONFIG_BROKEN_ON_SMP=y 151CONFIG_BROKEN_ON_SMP=y
161CONFIG_INIT_ENV_ARG_LIMIT=32 152CONFIG_INIT_ENV_ARG_LIMIT=32
162
163#
164# General setup
165#
166CONFIG_LOCALVERSION="" 153CONFIG_LOCALVERSION=""
167CONFIG_LOCALVERSION_AUTO=y 154CONFIG_LOCALVERSION_AUTO=y
168CONFIG_SWAP=y 155CONFIG_SWAP=y
169CONFIG_SYSVIPC=y 156CONFIG_SYSVIPC=y
170# CONFIG_IPC_NS is not set
171CONFIG_SYSVIPC_SYSCTL=y 157CONFIG_SYSVIPC_SYSCTL=y
172# CONFIG_POSIX_MQUEUE is not set 158# CONFIG_POSIX_MQUEUE is not set
173# CONFIG_BSD_PROCESS_ACCT is not set 159# CONFIG_BSD_PROCESS_ACCT is not set
174# CONFIG_TASKSTATS is not set 160# CONFIG_TASKSTATS is not set
175# CONFIG_UTS_NS is not set 161# CONFIG_USER_NS is not set
176# CONFIG_AUDIT is not set 162# CONFIG_AUDIT is not set
177# CONFIG_IKCONFIG is not set 163# CONFIG_IKCONFIG is not set
164CONFIG_LOG_BUF_SHIFT=14
178CONFIG_SYSFS_DEPRECATED=y 165CONFIG_SYSFS_DEPRECATED=y
179# CONFIG_RELAY is not set 166# CONFIG_RELAY is not set
167# CONFIG_BLK_DEV_INITRD is not set
180# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 168# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
181CONFIG_SYSCTL=y 169CONFIG_SYSCTL=y
182CONFIG_EMBEDDED=y 170CONFIG_EMBEDDED=y
183# CONFIG_SYSCTL_SYSCALL is not set 171# CONFIG_SYSCTL_SYSCALL is not set
184CONFIG_KALLSYMS=y 172CONFIG_KALLSYMS=y
185# CONFIG_KALLSYMS_EXTRA_PASS is not set 173# CONFIG_KALLSYMS_EXTRA_PASS is not set
186# CONFIG_HOTPLUG is not set 174CONFIG_HOTPLUG=y
187CONFIG_PRINTK=y 175CONFIG_PRINTK=y
188CONFIG_BUG=y 176CONFIG_BUG=y
189CONFIG_ELF_CORE=y 177CONFIG_ELF_CORE=y
190CONFIG_BASE_FULL=y 178CONFIG_BASE_FULL=y
191CONFIG_FUTEX=y 179CONFIG_FUTEX=y
180CONFIG_ANON_INODES=y
192CONFIG_EPOLL=y 181CONFIG_EPOLL=y
182CONFIG_SIGNALFD=y
183CONFIG_TIMERFD=y
184CONFIG_EVENTFD=y
193CONFIG_SHMEM=y 185CONFIG_SHMEM=y
194CONFIG_SLAB=y
195CONFIG_VM_EVENT_COUNTERS=y 186CONFIG_VM_EVENT_COUNTERS=y
187CONFIG_SLAB=y
188# CONFIG_SLUB is not set
189# CONFIG_SLOB is not set
196CONFIG_RT_MUTEXES=y 190CONFIG_RT_MUTEXES=y
197# CONFIG_TINY_SHMEM is not set 191# CONFIG_TINY_SHMEM is not set
198CONFIG_BASE_SMALL=0 192CONFIG_BASE_SMALL=0
199# CONFIG_SLOB is not set
200
201#
202# Loadable module support
203#
204CONFIG_MODULES=y 193CONFIG_MODULES=y
205CONFIG_MODULE_UNLOAD=y 194CONFIG_MODULE_UNLOAD=y
206# CONFIG_MODULE_FORCE_UNLOAD is not set 195CONFIG_MODULE_FORCE_UNLOAD=y
207CONFIG_MODVERSIONS=y 196CONFIG_MODVERSIONS=y
208CONFIG_MODULE_SRCVERSION_ALL=y 197CONFIG_MODULE_SRCVERSION_ALL=y
209CONFIG_KMOD=y 198CONFIG_KMOD=y
210
211#
212# Block layer
213#
214CONFIG_BLOCK=y 199CONFIG_BLOCK=y
215# CONFIG_LBD is not set 200# CONFIG_LBD is not set
216# CONFIG_BLK_DEV_IO_TRACE is not set 201# CONFIG_BLK_DEV_IO_TRACE is not set
217# CONFIG_LSF is not set 202# CONFIG_LSF is not set
203# CONFIG_BLK_DEV_BSG is not set
218 204
219# 205#
220# IO Schedulers 206# IO Schedulers
@@ -234,15 +220,14 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
234# 220#
235CONFIG_HW_HAS_PCI=y 221CONFIG_HW_HAS_PCI=y
236CONFIG_PCI=y 222CONFIG_PCI=y
223# CONFIG_ARCH_SUPPORTS_MSI is not set
237CONFIG_MMU=y 224CONFIG_MMU=y
238 225
239# 226#
240# PCCARD (PCMCIA/CardBus) support 227# PCCARD (PCMCIA/CardBus) support
241# 228#
242 229# CONFIG_PCCARD is not set
243# 230# CONFIG_HOTPLUG_PCI is not set
244# PCI Hotplug Support
245#
246 231
247# 232#
248# Executable file formats 233# Executable file formats
@@ -254,10 +239,7 @@ CONFIG_TRAD_SIGNALS=y
254# 239#
255# Power management options 240# Power management options
256# 241#
257CONFIG_PM=y 242# CONFIG_PM is not set
258# CONFIG_PM_LEGACY is not set
259# CONFIG_PM_DEBUG is not set
260# CONFIG_PM_SYSFS_DEPRECATED is not set
261 243
262# 244#
263# Networking 245# Networking
@@ -267,14 +249,9 @@ CONFIG_NET=y
267# 249#
268# Networking options 250# Networking options
269# 251#
270# CONFIG_NETDEBUG is not set
271CONFIG_PACKET=y 252CONFIG_PACKET=y
272# CONFIG_PACKET_MMAP is not set 253# CONFIG_PACKET_MMAP is not set
273CONFIG_UNIX=y 254CONFIG_UNIX=y
274CONFIG_XFRM=y
275# CONFIG_XFRM_USER is not set
276# CONFIG_XFRM_SUB_POLICY is not set
277CONFIG_XFRM_MIGRATE=y
278# CONFIG_NET_KEY is not set 255# CONFIG_NET_KEY is not set
279CONFIG_INET=y 256CONFIG_INET=y
280CONFIG_IP_MULTICAST=y 257CONFIG_IP_MULTICAST=y
@@ -284,7 +261,6 @@ CONFIG_ASK_IP_FIB_HASH=y
284CONFIG_IP_FIB_HASH=y 261CONFIG_IP_FIB_HASH=y
285CONFIG_IP_MULTIPLE_TABLES=y 262CONFIG_IP_MULTIPLE_TABLES=y
286CONFIG_IP_ROUTE_MULTIPATH=y 263CONFIG_IP_ROUTE_MULTIPATH=y
287# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
288CONFIG_IP_ROUTE_VERBOSE=y 264CONFIG_IP_ROUTE_VERBOSE=y
289CONFIG_IP_PNP=y 265CONFIG_IP_PNP=y
290# CONFIG_IP_PNP_DHCP is not set 266# CONFIG_IP_PNP_DHCP is not set
@@ -301,9 +277,9 @@ CONFIG_SYN_COOKIES=y
301# CONFIG_INET_IPCOMP is not set 277# CONFIG_INET_IPCOMP is not set
302# CONFIG_INET_XFRM_TUNNEL is not set 278# CONFIG_INET_XFRM_TUNNEL is not set
303CONFIG_INET_TUNNEL=m 279CONFIG_INET_TUNNEL=m
304CONFIG_INET_XFRM_MODE_TRANSPORT=m 280# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
305CONFIG_INET_XFRM_MODE_TUNNEL=m 281# CONFIG_INET_XFRM_MODE_TUNNEL is not set
306CONFIG_INET_XFRM_MODE_BEET=y 282# CONFIG_INET_XFRM_MODE_BEET is not set
307CONFIG_INET_DIAG=y 283CONFIG_INET_DIAG=y
308CONFIG_INET_TCP_DIAG=y 284CONFIG_INET_TCP_DIAG=y
309CONFIG_TCP_CONG_ADVANCED=y 285CONFIG_TCP_CONG_ADVANCED=y
@@ -317,6 +293,8 @@ CONFIG_TCP_CONG_HTCP=m
317# CONFIG_TCP_CONG_SCALABLE is not set 293# CONFIG_TCP_CONG_SCALABLE is not set
318# CONFIG_TCP_CONG_LP is not set 294# CONFIG_TCP_CONG_LP is not set
319# CONFIG_TCP_CONG_VENO is not set 295# CONFIG_TCP_CONG_VENO is not set
296# CONFIG_TCP_CONG_YEAH is not set
297# CONFIG_TCP_CONG_ILLINOIS is not set
320CONFIG_DEFAULT_BIC=y 298CONFIG_DEFAULT_BIC=y
321# CONFIG_DEFAULT_CUBIC is not set 299# CONFIG_DEFAULT_CUBIC is not set
322# CONFIG_DEFAULT_HTCP is not set 300# CONFIG_DEFAULT_HTCP is not set
@@ -324,26 +302,14 @@ CONFIG_DEFAULT_BIC=y
324# CONFIG_DEFAULT_WESTWOOD is not set 302# CONFIG_DEFAULT_WESTWOOD is not set
325# CONFIG_DEFAULT_RENO is not set 303# CONFIG_DEFAULT_RENO is not set
326CONFIG_DEFAULT_TCP_CONG="bic" 304CONFIG_DEFAULT_TCP_CONG="bic"
327CONFIG_TCP_MD5SIG=y 305# CONFIG_TCP_MD5SIG is not set
328# CONFIG_IPV6 is not set 306# CONFIG_IPV6 is not set
329# CONFIG_INET6_XFRM_TUNNEL is not set 307# CONFIG_INET6_XFRM_TUNNEL is not set
330# CONFIG_INET6_TUNNEL is not set 308# CONFIG_INET6_TUNNEL is not set
331CONFIG_NETWORK_SECMARK=y 309CONFIG_NETWORK_SECMARK=y
332# CONFIG_NETFILTER is not set 310# CONFIG_NETFILTER is not set
333
334#
335# DCCP Configuration (EXPERIMENTAL)
336#
337# CONFIG_IP_DCCP is not set 311# CONFIG_IP_DCCP is not set
338
339#
340# SCTP Configuration (EXPERIMENTAL)
341#
342# CONFIG_IP_SCTP is not set 312# CONFIG_IP_SCTP is not set
343
344#
345# TIPC Configuration (EXPERIMENTAL)
346#
347# CONFIG_TIPC is not set 313# CONFIG_TIPC is not set
348# CONFIG_ATM is not set 314# CONFIG_ATM is not set
349# CONFIG_BRIDGE is not set 315# CONFIG_BRIDGE is not set
@@ -369,10 +335,20 @@ CONFIG_NETWORK_SECMARK=y
369# CONFIG_HAMRADIO is not set 335# CONFIG_HAMRADIO is not set
370# CONFIG_IRDA is not set 336# CONFIG_IRDA is not set
371# CONFIG_BT is not set 337# CONFIG_BT is not set
372# CONFIG_IEEE80211 is not set 338# CONFIG_AF_RXRPC is not set
373CONFIG_FIB_RULES=y 339CONFIG_FIB_RULES=y
374 340
375# 341#
342# Wireless
343#
344# CONFIG_CFG80211 is not set
345# CONFIG_WIRELESS_EXT is not set
346# CONFIG_MAC80211 is not set
347# CONFIG_IEEE80211 is not set
348# CONFIG_RFKILL is not set
349# CONFIG_NET_9P is not set
350
351#
376# Device Drivers 352# Device Drivers
377# 353#
378 354
@@ -381,31 +357,12 @@ CONFIG_FIB_RULES=y
381# 357#
382CONFIG_STANDALONE=y 358CONFIG_STANDALONE=y
383CONFIG_PREVENT_FIRMWARE_BUILD=y 359CONFIG_PREVENT_FIRMWARE_BUILD=y
360CONFIG_FW_LOADER=m
384# CONFIG_SYS_HYPERVISOR is not set 361# CONFIG_SYS_HYPERVISOR is not set
385
386#
387# Connector - unified userspace <-> kernelspace linker
388#
389# CONFIG_CONNECTOR is not set 362# CONFIG_CONNECTOR is not set
390
391#
392# Memory Technology Devices (MTD)
393#
394# CONFIG_MTD is not set 363# CONFIG_MTD is not set
395
396#
397# Parallel port support
398#
399# CONFIG_PARPORT is not set 364# CONFIG_PARPORT is not set
400 365CONFIG_BLK_DEV=y
401#
402# Plug and Play support
403#
404# CONFIG_PNPACPI is not set
405
406#
407# Block devices
408#
409# CONFIG_BLK_CPQ_DA is not set 366# CONFIG_BLK_CPQ_DA is not set
410# CONFIG_BLK_CPQ_CISS_DA is not set 367# CONFIG_BLK_CPQ_CISS_DA is not set
411# CONFIG_BLK_DEV_DAC960 is not set 368# CONFIG_BLK_DEV_DAC960 is not set
@@ -420,19 +377,9 @@ CONFIG_BLK_DEV_RAM=y
420CONFIG_BLK_DEV_RAM_COUNT=16 377CONFIG_BLK_DEV_RAM_COUNT=16
421CONFIG_BLK_DEV_RAM_SIZE=4096 378CONFIG_BLK_DEV_RAM_SIZE=4096
422CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 379CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
423# CONFIG_BLK_DEV_INITRD is not set
424# CONFIG_CDROM_PKTCDVD is not set 380# CONFIG_CDROM_PKTCDVD is not set
425# CONFIG_ATA_OVER_ETH is not set 381# CONFIG_ATA_OVER_ETH is not set
426 382# CONFIG_MISC_DEVICES is not set
427#
428# Misc devices
429#
430CONFIG_SGI_IOC4=m
431# CONFIG_TIFM_CORE is not set
432
433#
434# ATA/ATAPI/MFM/RLL support
435#
436# CONFIG_IDE is not set 383# CONFIG_IDE is not set
437 384
438# 385#
@@ -440,6 +387,7 @@ CONFIG_SGI_IOC4=m
440# 387#
441# CONFIG_RAID_ATTRS is not set 388# CONFIG_RAID_ATTRS is not set
442CONFIG_SCSI=y 389CONFIG_SCSI=y
390CONFIG_SCSI_DMA=y
443CONFIG_SCSI_TGT=m 391CONFIG_SCSI_TGT=m
444# CONFIG_SCSI_NETLINK is not set 392# CONFIG_SCSI_NETLINK is not set
445CONFIG_SCSI_PROC_FS=y 393CONFIG_SCSI_PROC_FS=y
@@ -461,6 +409,7 @@ CONFIG_BLK_DEV_SD=y
461# CONFIG_SCSI_CONSTANTS is not set 409# CONFIG_SCSI_CONSTANTS is not set
462# CONFIG_SCSI_LOGGING is not set 410# CONFIG_SCSI_LOGGING is not set
463CONFIG_SCSI_SCAN_ASYNC=y 411CONFIG_SCSI_SCAN_ASYNC=y
412CONFIG_SCSI_WAIT_SCAN=m
464 413
465# 414#
466# SCSI Transports 415# SCSI Transports
@@ -468,48 +417,8 @@ CONFIG_SCSI_SCAN_ASYNC=y
468# CONFIG_SCSI_SPI_ATTRS is not set 417# CONFIG_SCSI_SPI_ATTRS is not set
469# CONFIG_SCSI_FC_ATTRS is not set 418# CONFIG_SCSI_FC_ATTRS is not set
470# CONFIG_SCSI_ISCSI_ATTRS is not set 419# CONFIG_SCSI_ISCSI_ATTRS is not set
471# CONFIG_SCSI_SAS_ATTRS is not set
472# CONFIG_SCSI_SAS_LIBSAS is not set 420# CONFIG_SCSI_SAS_LIBSAS is not set
473 421# CONFIG_SCSI_LOWLEVEL is not set
474#
475# SCSI low-level drivers
476#
477# CONFIG_ISCSI_TCP is not set
478# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
479# CONFIG_SCSI_3W_9XXX is not set
480# CONFIG_SCSI_ACARD is not set
481# CONFIG_SCSI_AACRAID is not set
482# CONFIG_SCSI_AIC7XXX is not set
483# CONFIG_SCSI_AIC7XXX_OLD is not set
484# CONFIG_SCSI_AIC79XX is not set
485# CONFIG_SCSI_AIC94XX is not set
486# CONFIG_SCSI_DPT_I2O is not set
487# CONFIG_SCSI_ARCMSR is not set
488# CONFIG_MEGARAID_NEWGEN is not set
489# CONFIG_MEGARAID_LEGACY is not set
490# CONFIG_MEGARAID_SAS is not set
491# CONFIG_SCSI_HPTIOP is not set
492# CONFIG_SCSI_DMX3191D is not set
493# CONFIG_SCSI_FUTURE_DOMAIN is not set
494# CONFIG_SCSI_IPS is not set
495# CONFIG_SCSI_INITIO is not set
496# CONFIG_SCSI_INIA100 is not set
497# CONFIG_SCSI_STEX is not set
498# CONFIG_SCSI_SYM53C8XX_2 is not set
499# CONFIG_SCSI_IPR is not set
500# CONFIG_SCSI_QLOGIC_1280 is not set
501# CONFIG_SCSI_QLA_FC is not set
502# CONFIG_SCSI_QLA_ISCSI is not set
503# CONFIG_SCSI_LPFC is not set
504# CONFIG_SCSI_DC395x is not set
505# CONFIG_SCSI_DC390T is not set
506# CONFIG_SCSI_NSP32 is not set
507# CONFIG_SCSI_DEBUG is not set
508# CONFIG_SCSI_SRP is not set
509
510#
511# Serial ATA (prod) and Parallel ATA (experimental) drivers
512#
513CONFIG_ATA=y 422CONFIG_ATA=y
514# CONFIG_ATA_NONSTANDARD is not set 423# CONFIG_ATA_NONSTANDARD is not set
515# CONFIG_SATA_AHCI is not set 424# CONFIG_SATA_AHCI is not set
@@ -532,6 +441,7 @@ CONFIG_ATA=y
532# CONFIG_PATA_AMD is not set 441# CONFIG_PATA_AMD is not set
533# CONFIG_PATA_ARTOP is not set 442# CONFIG_PATA_ARTOP is not set
534# CONFIG_PATA_ATIIXP is not set 443# CONFIG_PATA_ATIIXP is not set
444# CONFIG_PATA_CMD640_PCI is not set
535# CONFIG_PATA_CMD64X is not set 445# CONFIG_PATA_CMD64X is not set
536# CONFIG_PATA_CS5520 is not set 446# CONFIG_PATA_CS5520 is not set
537# CONFIG_PATA_CS5530 is not set 447# CONFIG_PATA_CS5530 is not set
@@ -564,10 +474,6 @@ CONFIG_PATA_SIL680=y
564# CONFIG_PATA_VIA is not set 474# CONFIG_PATA_VIA is not set
565# CONFIG_PATA_WINBOND is not set 475# CONFIG_PATA_WINBOND is not set
566# CONFIG_PATA_PLATFORM is not set 476# CONFIG_PATA_PLATFORM is not set
567
568#
569# Multi-device support (RAID and LVM)
570#
571# CONFIG_MD is not set 477# CONFIG_MD is not set
572 478
573# 479#
@@ -581,17 +487,16 @@ CONFIG_PATA_SIL680=y
581# 487#
582# IEEE 1394 (FireWire) support 488# IEEE 1394 (FireWire) support
583# 489#
490# CONFIG_FIREWIRE is not set
584CONFIG_IEEE1394=m 491CONFIG_IEEE1394=m
585 492
586# 493#
587# Subsystem Options 494# Subsystem Options
588# 495#
589# CONFIG_IEEE1394_VERBOSEDEBUG is not set 496# CONFIG_IEEE1394_VERBOSEDEBUG is not set
590CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
591CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
592 497
593# 498#
594# Device Drivers 499# Controllers
595# 500#
596 501
597# 502#
@@ -600,59 +505,63 @@ CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
600CONFIG_IEEE1394_OHCI1394=m 505CONFIG_IEEE1394_OHCI1394=m
601 506
602# 507#
603# Protocol Drivers 508# Protocols
604# 509#
605CONFIG_IEEE1394_VIDEO1394=m 510CONFIG_IEEE1394_VIDEO1394=m
606CONFIG_IEEE1394_SBP2=m 511CONFIG_IEEE1394_SBP2=m
512# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
513CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
607CONFIG_IEEE1394_ETH1394=m 514CONFIG_IEEE1394_ETH1394=m
608CONFIG_IEEE1394_DV1394=m 515CONFIG_IEEE1394_DV1394=m
609CONFIG_IEEE1394_RAWIO=m 516CONFIG_IEEE1394_RAWIO=m
610
611#
612# I2O device support
613#
614# CONFIG_I2O is not set 517# CONFIG_I2O is not set
615
616#
617# Network device support
618#
619CONFIG_NETDEVICES=y 518CONFIG_NETDEVICES=y
620CONFIG_DUMMY=m 519# CONFIG_NETDEVICES_MULTIQUEUE is not set
520# CONFIG_DUMMY is not set
621# CONFIG_BONDING is not set 521# CONFIG_BONDING is not set
522# CONFIG_MACVLAN is not set
622# CONFIG_EQUALIZER is not set 523# CONFIG_EQUALIZER is not set
623# CONFIG_TUN is not set 524# CONFIG_TUN is not set
624
625#
626# ARCnet devices
627#
628# CONFIG_ARCNET is not set 525# CONFIG_ARCNET is not set
629
630#
631# PHY device support
632#
633# CONFIG_PHYLIB is not set 526# CONFIG_PHYLIB is not set
634
635#
636# Ethernet (10 or 100Mbit)
637#
638CONFIG_NET_ETHERNET=y 527CONFIG_NET_ETHERNET=y
639CONFIG_MII=y 528CONFIG_MII=y
529# CONFIG_AX88796 is not set
640# CONFIG_HAPPYMEAL is not set 530# CONFIG_HAPPYMEAL is not set
641# CONFIG_SUNGEM is not set 531# CONFIG_SUNGEM is not set
642# CONFIG_CASSINI is not set 532# CONFIG_CASSINI is not set
643# CONFIG_NET_VENDOR_3COM is not set 533# CONFIG_NET_VENDOR_3COM is not set
644# CONFIG_DM9000 is not set 534# CONFIG_DM9000 is not set
645
646#
647# Tulip family network device support
648#
649# CONFIG_NET_TULIP is not set 535# CONFIG_NET_TULIP is not set
650# CONFIG_HP100 is not set 536# CONFIG_HP100 is not set
651# CONFIG_NET_PCI is not set 537CONFIG_NET_PCI=y
652 538# CONFIG_PCNET32 is not set
653# 539# CONFIG_AMD8111_ETH is not set
654# Ethernet (1000 Mbit) 540# CONFIG_ADAPTEC_STARFIRE is not set
655# 541# CONFIG_B44 is not set
542# CONFIG_FORCEDETH is not set
543# CONFIG_TC35815 is not set
544# CONFIG_DGRS is not set
545# CONFIG_EEPRO100 is not set
546# CONFIG_E100 is not set
547# CONFIG_FEALNX is not set
548# CONFIG_NATSEMI is not set
549# CONFIG_NE2K_PCI is not set
550# CONFIG_8139CP is not set
551CONFIG_8139TOO=y
552CONFIG_8139TOO_PIO=y
553# CONFIG_8139TOO_TUNE_TWISTER is not set
554# CONFIG_8139TOO_8129 is not set
555# CONFIG_8139_OLD_RX_RESET is not set
556# CONFIG_SIS900 is not set
557# CONFIG_EPIC100 is not set
558# CONFIG_SUNDANCE is not set
559# CONFIG_TLAN is not set
560CONFIG_VIA_RHINE=y
561CONFIG_VIA_RHINE_MMIO=y
562# CONFIG_VIA_RHINE_NAPI is not set
563# CONFIG_SC92031 is not set
564CONFIG_NETDEV_1000=y
656# CONFIG_ACENIC is not set 565# CONFIG_ACENIC is not set
657# CONFIG_DL2K is not set 566# CONFIG_DL2K is not set
658# CONFIG_E1000 is not set 567# CONFIG_E1000 is not set
@@ -664,35 +573,29 @@ CONFIG_R8169=y
664# CONFIG_SIS190 is not set 573# CONFIG_SIS190 is not set
665# CONFIG_SKGE is not set 574# CONFIG_SKGE is not set
666# CONFIG_SKY2 is not set 575# CONFIG_SKY2 is not set
667# CONFIG_SK98LIN is not set 576CONFIG_VIA_VELOCITY=y
668# CONFIG_TIGON3 is not set 577# CONFIG_TIGON3 is not set
669# CONFIG_BNX2 is not set 578# CONFIG_BNX2 is not set
670# CONFIG_QLA3XXX is not set 579# CONFIG_QLA3XXX is not set
671# CONFIG_ATL1 is not set 580# CONFIG_ATL1 is not set
672 581# CONFIG_NETDEV_10000 is not set
673#
674# Ethernet (10000 Mbit)
675#
676# CONFIG_CHELSIO_T1 is not set
677CONFIG_CHELSIO_T3=m
678# CONFIG_IXGB is not set
679# CONFIG_S2IO is not set
680# CONFIG_MYRI10GE is not set
681CONFIG_NETXEN_NIC=m
682
683#
684# Token Ring devices
685#
686# CONFIG_TR is not set 582# CONFIG_TR is not set
687 583
688# 584#
689# Wireless LAN (non-hamradio) 585# Wireless LAN
690# 586#
691# CONFIG_NET_RADIO is not set 587# CONFIG_WLAN_PRE80211 is not set
588# CONFIG_WLAN_80211 is not set
692 589
693# 590#
694# Wan interfaces 591# USB Network Adapters
695# 592#
593# CONFIG_USB_CATC is not set
594# CONFIG_USB_KAWETH is not set
595# CONFIG_USB_PEGASUS is not set
596# CONFIG_USB_RTL8150 is not set
597# CONFIG_USB_USBNET_MII is not set
598# CONFIG_USB_USBNET is not set
696# CONFIG_WAN is not set 599# CONFIG_WAN is not set
697# CONFIG_FDDI is not set 600# CONFIG_FDDI is not set
698# CONFIG_HIPPI is not set 601# CONFIG_HIPPI is not set
@@ -703,15 +606,7 @@ CONFIG_NETXEN_NIC=m
703# CONFIG_NETCONSOLE is not set 606# CONFIG_NETCONSOLE is not set
704# CONFIG_NETPOLL is not set 607# CONFIG_NETPOLL is not set
705# CONFIG_NET_POLL_CONTROLLER is not set 608# CONFIG_NET_POLL_CONTROLLER is not set
706
707#
708# ISDN subsystem
709#
710# CONFIG_ISDN is not set 609# CONFIG_ISDN is not set
711
712#
713# Telephony Support
714#
715# CONFIG_PHONE is not set 610# CONFIG_PHONE is not set
716 611
717# 612#
@@ -719,11 +614,15 @@ CONFIG_NETXEN_NIC=m
719# 614#
720CONFIG_INPUT=y 615CONFIG_INPUT=y
721# CONFIG_INPUT_FF_MEMLESS is not set 616# CONFIG_INPUT_FF_MEMLESS is not set
617# CONFIG_INPUT_POLLDEV is not set
722 618
723# 619#
724# Userland interfaces 620# Userland interfaces
725# 621#
726# CONFIG_INPUT_MOUSEDEV is not set 622CONFIG_INPUT_MOUSEDEV=y
623CONFIG_INPUT_MOUSEDEV_PSAUX=y
624CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
625CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
727# CONFIG_INPUT_JOYDEV is not set 626# CONFIG_INPUT_JOYDEV is not set
728# CONFIG_INPUT_TSDEV is not set 627# CONFIG_INPUT_TSDEV is not set
729# CONFIG_INPUT_EVDEV is not set 628# CONFIG_INPUT_EVDEV is not set
@@ -735,6 +634,7 @@ CONFIG_INPUT=y
735# CONFIG_INPUT_KEYBOARD is not set 634# CONFIG_INPUT_KEYBOARD is not set
736# CONFIG_INPUT_MOUSE is not set 635# CONFIG_INPUT_MOUSE is not set
737# CONFIG_INPUT_JOYSTICK is not set 636# CONFIG_INPUT_JOYSTICK is not set
637# CONFIG_INPUT_TABLET is not set
738# CONFIG_INPUT_TOUCHSCREEN is not set 638# CONFIG_INPUT_TOUCHSCREEN is not set
739# CONFIG_INPUT_MISC is not set 639# CONFIG_INPUT_MISC is not set
740 640
@@ -769,35 +669,18 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
769CONFIG_UNIX98_PTYS=y 669CONFIG_UNIX98_PTYS=y
770CONFIG_LEGACY_PTYS=y 670CONFIG_LEGACY_PTYS=y
771CONFIG_LEGACY_PTY_COUNT=256 671CONFIG_LEGACY_PTY_COUNT=256
772
773#
774# IPMI
775#
776# CONFIG_IPMI_HANDLER is not set 672# CONFIG_IPMI_HANDLER is not set
777
778#
779# Watchdog Cards
780#
781# CONFIG_WATCHDOG is not set 673# CONFIG_WATCHDOG is not set
782# CONFIG_HW_RANDOM is not set 674# CONFIG_HW_RANDOM is not set
783# CONFIG_RTC is not set 675# CONFIG_RTC is not set
784# CONFIG_GEN_RTC is not set
785# CONFIG_DTLK is not set
786# CONFIG_R3964 is not set 676# CONFIG_R3964 is not set
787# CONFIG_APPLICOM is not set 677# CONFIG_APPLICOM is not set
788# CONFIG_TANBAC_TB0219 is not set 678# CONFIG_GPIO_TB0219 is not set
789# CONFIG_DRM is not set 679# CONFIG_DRM is not set
790CONFIG_GPIO_VR41XX=y 680CONFIG_GPIO_VR41XX=y
791# CONFIG_RAW_DRIVER is not set 681# CONFIG_RAW_DRIVER is not set
792
793#
794# TPM devices
795#
796# CONFIG_TCG_TPM is not set 682# CONFIG_TCG_TPM is not set
797 683CONFIG_DEVPORT=y
798#
799# I2C support
800#
801# CONFIG_I2C is not set 684# CONFIG_I2C is not set
802 685
803# 686#
@@ -805,17 +688,9 @@ CONFIG_GPIO_VR41XX=y
805# 688#
806# CONFIG_SPI is not set 689# CONFIG_SPI is not set
807# CONFIG_SPI_MASTER is not set 690# CONFIG_SPI_MASTER is not set
808
809#
810# Dallas's 1-wire bus
811#
812# CONFIG_W1 is not set 691# CONFIG_W1 is not set
813 692# CONFIG_POWER_SUPPLY is not set
814#
815# Hardware Monitoring support
816#
817# CONFIG_HWMON is not set 693# CONFIG_HWMON is not set
818# CONFIG_HWMON_VID is not set
819 694
820# 695#
821# Multifunction device drivers 696# Multifunction device drivers
@@ -826,23 +701,31 @@ CONFIG_MFD_SM501=y
826# Multimedia devices 701# Multimedia devices
827# 702#
828# CONFIG_VIDEO_DEV is not set 703# CONFIG_VIDEO_DEV is not set
704# CONFIG_DVB_CORE is not set
705# CONFIG_DAB is not set
829 706
830# 707#
831# Digital Video Broadcasting Devices 708# Graphics support
832# 709#
833# CONFIG_DVB is not set 710# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
834# CONFIG_USB_DABUSB is not set
835 711
836# 712#
837# Graphics support 713# Display device support
838# 714#
839# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 715# CONFIG_DISPLAY_SUPPORT is not set
716# CONFIG_VGASTATE is not set
717CONFIG_VIDEO_OUTPUT_CONTROL=m
840CONFIG_FB=y 718CONFIG_FB=y
841# CONFIG_FIRMWARE_EDID is not set 719# CONFIG_FIRMWARE_EDID is not set
842# CONFIG_FB_DDC is not set 720# CONFIG_FB_DDC is not set
843CONFIG_FB_CFB_FILLRECT=y 721CONFIG_FB_CFB_FILLRECT=y
844CONFIG_FB_CFB_COPYAREA=y 722CONFIG_FB_CFB_COPYAREA=y
845CONFIG_FB_CFB_IMAGEBLIT=y 723CONFIG_FB_CFB_IMAGEBLIT=y
724# CONFIG_FB_SYS_FILLRECT is not set
725# CONFIG_FB_SYS_COPYAREA is not set
726# CONFIG_FB_SYS_IMAGEBLIT is not set
727# CONFIG_FB_SYS_FOPS is not set
728CONFIG_FB_DEFERRED_IO=y
846# CONFIG_FB_SVGALIB is not set 729# CONFIG_FB_SVGALIB is not set
847# CONFIG_FB_MACMODES is not set 730# CONFIG_FB_MACMODES is not set
848# CONFIG_FB_BACKLIGHT is not set 731# CONFIG_FB_BACKLIGHT is not set
@@ -850,7 +733,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
850# CONFIG_FB_TILEBLITTING is not set 733# CONFIG_FB_TILEBLITTING is not set
851 734
852# 735#
853# Frambuffer hardware drivers 736# Frame buffer hardware drivers
854# 737#
855# CONFIG_FB_CIRRUS is not set 738# CONFIG_FB_CIRRUS is not set
856# CONFIG_FB_PM2 is not set 739# CONFIG_FB_PM2 is not set
@@ -871,8 +754,10 @@ CONFIG_FB_CFB_IMAGEBLIT=y
871# CONFIG_FB_KYRO is not set 754# CONFIG_FB_KYRO is not set
872# CONFIG_FB_3DFX is not set 755# CONFIG_FB_3DFX is not set
873# CONFIG_FB_VOODOO1 is not set 756# CONFIG_FB_VOODOO1 is not set
874# CONFIG_FB_SMIVGX is not set 757# CONFIG_FB_VT8623 is not set
875# CONFIG_FB_TRIDENT is not set 758# CONFIG_FB_TRIDENT is not set
759# CONFIG_FB_ARK is not set
760# CONFIG_FB_PM3 is not set
876CONFIG_FB_SM501=y 761CONFIG_FB_SM501=y
877# CONFIG_FB_VIRTUAL is not set 762# CONFIG_FB_VIRTUAL is not set
878 763
@@ -881,27 +766,44 @@ CONFIG_FB_SM501=y
881# 766#
882# CONFIG_VGA_CONSOLE is not set 767# CONFIG_VGA_CONSOLE is not set
883CONFIG_DUMMY_CONSOLE=y 768CONFIG_DUMMY_CONSOLE=y
884# CONFIG_FRAMEBUFFER_CONSOLE is not set 769CONFIG_FRAMEBUFFER_CONSOLE=y
885 770# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
886# 771# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
887# Logo configuration 772CONFIG_FONTS=y
888# 773CONFIG_FONT_8x8=y
774CONFIG_FONT_8x16=y
775# CONFIG_FONT_6x11 is not set
776# CONFIG_FONT_7x14 is not set
777# CONFIG_FONT_PEARL_8x8 is not set
778# CONFIG_FONT_ACORN_8x8 is not set
779# CONFIG_FONT_MINI_4x6 is not set
780# CONFIG_FONT_SUN8x16 is not set
781# CONFIG_FONT_SUN12x22 is not set
782# CONFIG_FONT_10x18 is not set
889# CONFIG_LOGO is not set 783# CONFIG_LOGO is not set
890 784
891# 785#
892# Sound 786# Sound
893# 787#
894# CONFIG_SOUND is not set 788# CONFIG_SOUND is not set
789CONFIG_HID_SUPPORT=y
790CONFIG_HID=y
791# CONFIG_HID_DEBUG is not set
895 792
896# 793#
897# HID Devices 794# USB Input Devices
898# 795#
899CONFIG_HID=y 796CONFIG_USB_HID=m
900# CONFIG_HID_DEBUG is not set 797# CONFIG_USB_HIDINPUT_POWERBOOK is not set
798# CONFIG_HID_FF is not set
799# CONFIG_USB_HIDDEV is not set
901 800
902# 801#
903# USB support 802# USB HID Boot Protocol drivers
904# 803#
804# CONFIG_USB_KBD is not set
805# CONFIG_USB_MOUSE is not set
806CONFIG_USB_SUPPORT=y
905CONFIG_USB_ARCH_HAS_HCD=y 807CONFIG_USB_ARCH_HAS_HCD=y
906CONFIG_USB_ARCH_HAS_OHCI=y 808CONFIG_USB_ARCH_HAS_OHCI=y
907CONFIG_USB_ARCH_HAS_EHCI=y 809CONFIG_USB_ARCH_HAS_EHCI=y
@@ -912,8 +814,8 @@ CONFIG_USB=m
912# Miscellaneous USB options 814# Miscellaneous USB options
913# 815#
914# CONFIG_USB_DEVICEFS is not set 816# CONFIG_USB_DEVICEFS is not set
817CONFIG_USB_DEVICE_CLASS=y
915# CONFIG_USB_DYNAMIC_MINORS is not set 818# CONFIG_USB_DYNAMIC_MINORS is not set
916# CONFIG_USB_SUSPEND is not set
917# CONFIG_USB_OTG is not set 819# CONFIG_USB_OTG is not set
918 820
919# 821#
@@ -923,7 +825,6 @@ CONFIG_USB_EHCI_HCD=m
923# CONFIG_USB_EHCI_SPLIT_ISO is not set 825# CONFIG_USB_EHCI_SPLIT_ISO is not set
924# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 826# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
925# CONFIG_USB_EHCI_TT_NEWSCHED is not set 827# CONFIG_USB_EHCI_TT_NEWSCHED is not set
926# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
927# CONFIG_USB_ISP116X_HCD is not set 828# CONFIG_USB_ISP116X_HCD is not set
928CONFIG_USB_OHCI_HCD=m 829CONFIG_USB_OHCI_HCD=m
929# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 830# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -931,6 +832,7 @@ CONFIG_USB_OHCI_HCD=m
931CONFIG_USB_OHCI_LITTLE_ENDIAN=y 832CONFIG_USB_OHCI_LITTLE_ENDIAN=y
932# CONFIG_USB_UHCI_HCD is not set 833# CONFIG_USB_UHCI_HCD is not set
933# CONFIG_USB_SL811_HCD is not set 834# CONFIG_USB_SL811_HCD is not set
835# CONFIG_USB_R8A66597_HCD is not set
934 836
935# 837#
936# USB Device Class drivers 838# USB Device Class drivers
@@ -959,47 +861,10 @@ CONFIG_USB_STORAGE=m
959# CONFIG_USB_LIBUSUAL is not set 861# CONFIG_USB_LIBUSUAL is not set
960 862
961# 863#
962# USB Input Devices
963#
964CONFIG_USB_HID=m
965# CONFIG_USB_HIDINPUT_POWERBOOK is not set
966# CONFIG_HID_FF is not set
967# CONFIG_USB_HIDDEV is not set
968
969#
970# USB HID Boot Protocol drivers
971#
972# CONFIG_USB_KBD is not set
973# CONFIG_USB_MOUSE is not set
974# CONFIG_USB_AIPTEK is not set
975# CONFIG_USB_WACOM is not set
976# CONFIG_USB_ACECAD is not set
977# CONFIG_USB_KBTAB is not set
978# CONFIG_USB_POWERMATE is not set
979# CONFIG_USB_TOUCHSCREEN is not set
980# CONFIG_USB_YEALINK is not set
981# CONFIG_USB_XPAD is not set
982# CONFIG_USB_ATI_REMOTE is not set
983# CONFIG_USB_ATI_REMOTE2 is not set
984# CONFIG_USB_KEYSPAN_REMOTE is not set
985# CONFIG_USB_APPLETOUCH is not set
986# CONFIG_USB_GTCO is not set
987
988#
989# USB Imaging devices 864# USB Imaging devices
990# 865#
991# CONFIG_USB_MDC800 is not set 866# CONFIG_USB_MDC800 is not set
992# CONFIG_USB_MICROTEK is not set 867# CONFIG_USB_MICROTEK is not set
993
994#
995# USB Network Adapters
996#
997# CONFIG_USB_CATC is not set
998# CONFIG_USB_KAWETH is not set
999# CONFIG_USB_PEGASUS is not set
1000# CONFIG_USB_RTL8150 is not set
1001# CONFIG_USB_USBNET_MII is not set
1002# CONFIG_USB_USBNET is not set
1003CONFIG_USB_MON=y 868CONFIG_USB_MON=y
1004 869
1005# 870#
@@ -1032,6 +897,7 @@ CONFIG_USB_MON=y
1032# CONFIG_USB_SISUSBVGA is not set 897# CONFIG_USB_SISUSBVGA is not set
1033# CONFIG_USB_LD is not set 898# CONFIG_USB_LD is not set
1034# CONFIG_USB_TRANCEVIBRATOR is not set 899# CONFIG_USB_TRANCEVIBRATOR is not set
900# CONFIG_USB_IOWARRIOR is not set
1035 901
1036# 902#
1037# USB DSL modem support 903# USB DSL modem support
@@ -1041,37 +907,9 @@ CONFIG_USB_MON=y
1041# USB Gadget Support 907# USB Gadget Support
1042# 908#
1043# CONFIG_USB_GADGET is not set 909# CONFIG_USB_GADGET is not set
1044
1045#
1046# MMC/SD Card support
1047#
1048# CONFIG_MMC is not set 910# CONFIG_MMC is not set
1049
1050#
1051# LED devices
1052#
1053# CONFIG_NEW_LEDS is not set 911# CONFIG_NEW_LEDS is not set
1054
1055#
1056# LED drivers
1057#
1058
1059#
1060# LED Triggers
1061#
1062
1063#
1064# InfiniBand support
1065#
1066# CONFIG_INFINIBAND is not set 912# CONFIG_INFINIBAND is not set
1067
1068#
1069# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1070#
1071
1072#
1073# Real Time Clock
1074#
1075# CONFIG_RTC_CLASS is not set 913# CONFIG_RTC_CLASS is not set
1076 914
1077# 915#
@@ -1088,12 +926,9 @@ CONFIG_USB_MON=y
1088# 926#
1089 927
1090# 928#
1091# Auxiliary Display support 929# Userspace I/O
1092#
1093
1094#
1095# Virtualization
1096# 930#
931# CONFIG_UIO is not set
1097 932
1098# 933#
1099# File systems 934# File systems
@@ -1111,7 +946,7 @@ CONFIG_JBD=y
1111CONFIG_FS_MBCACHE=y 946CONFIG_FS_MBCACHE=y
1112# CONFIG_REISERFS_FS is not set 947# CONFIG_REISERFS_FS is not set
1113# CONFIG_JFS_FS is not set 948# CONFIG_JFS_FS is not set
1114# CONFIG_FS_POSIX_ACL is not set 949CONFIG_FS_POSIX_ACL=y
1115CONFIG_XFS_FS=y 950CONFIG_XFS_FS=y
1116CONFIG_XFS_QUOTA=y 951CONFIG_XFS_QUOTA=y
1117# CONFIG_XFS_SECURITY is not set 952# CONFIG_XFS_SECURITY is not set
@@ -1125,10 +960,11 @@ CONFIG_INOTIFY=y
1125CONFIG_INOTIFY_USER=y 960CONFIG_INOTIFY_USER=y
1126# CONFIG_QUOTA is not set 961# CONFIG_QUOTA is not set
1127CONFIG_QUOTACTL=y 962CONFIG_QUOTACTL=y
1128# CONFIG_DNOTIFY is not set 963CONFIG_DNOTIFY=y
1129# CONFIG_AUTOFS_FS is not set 964# CONFIG_AUTOFS_FS is not set
1130CONFIG_AUTOFS4_FS=y 965CONFIG_AUTOFS4_FS=y
1131# CONFIG_FUSE_FS is not set 966# CONFIG_FUSE_FS is not set
967CONFIG_GENERIC_ACL=y
1132 968
1133# 969#
1134# CD-ROM/DVD Filesystems 970# CD-ROM/DVD Filesystems
@@ -1151,10 +987,10 @@ CONFIG_PROC_KCORE=y
1151CONFIG_PROC_SYSCTL=y 987CONFIG_PROC_SYSCTL=y
1152CONFIG_SYSFS=y 988CONFIG_SYSFS=y
1153CONFIG_TMPFS=y 989CONFIG_TMPFS=y
1154# CONFIG_TMPFS_POSIX_ACL is not set 990CONFIG_TMPFS_POSIX_ACL=y
1155# CONFIG_HUGETLB_PAGE is not set 991# CONFIG_HUGETLB_PAGE is not set
1156CONFIG_RAMFS=y 992CONFIG_RAMFS=y
1157CONFIG_CONFIGFS_FS=m 993# CONFIG_CONFIGFS_FS is not set
1158 994
1159# 995#
1160# Miscellaneous filesystems 996# Miscellaneous filesystems
@@ -1181,12 +1017,18 @@ CONFIG_NFS_V3=y
1181# CONFIG_NFS_V3_ACL is not set 1017# CONFIG_NFS_V3_ACL is not set
1182# CONFIG_NFS_V4 is not set 1018# CONFIG_NFS_V4 is not set
1183# CONFIG_NFS_DIRECTIO is not set 1019# CONFIG_NFS_DIRECTIO is not set
1184# CONFIG_NFSD is not set 1020CONFIG_NFSD=m
1021CONFIG_NFSD_V3=y
1022# CONFIG_NFSD_V3_ACL is not set
1023# CONFIG_NFSD_V4 is not set
1024CONFIG_NFSD_TCP=y
1185CONFIG_ROOT_NFS=y 1025CONFIG_ROOT_NFS=y
1186CONFIG_LOCKD=y 1026CONFIG_LOCKD=y
1187CONFIG_LOCKD_V4=y 1027CONFIG_LOCKD_V4=y
1028CONFIG_EXPORTFS=m
1188CONFIG_NFS_COMMON=y 1029CONFIG_NFS_COMMON=y
1189CONFIG_SUNRPC=y 1030CONFIG_SUNRPC=y
1031# CONFIG_SUNRPC_BIND34 is not set
1190# CONFIG_RPCSEC_GSS_KRB5 is not set 1032# CONFIG_RPCSEC_GSS_KRB5 is not set
1191# CONFIG_RPCSEC_GSS_SPKM3 is not set 1033# CONFIG_RPCSEC_GSS_SPKM3 is not set
1192# CONFIG_SMB_FS is not set 1034# CONFIG_SMB_FS is not set
@@ -1194,7 +1036,6 @@ CONFIG_SUNRPC=y
1194# CONFIG_NCP_FS is not set 1036# CONFIG_NCP_FS is not set
1195# CONFIG_CODA_FS is not set 1037# CONFIG_CODA_FS is not set
1196# CONFIG_AFS_FS is not set 1038# CONFIG_AFS_FS is not set
1197# CONFIG_9P_FS is not set
1198 1039
1199# 1040#
1200# Partition Types 1041# Partition Types
@@ -1210,10 +1051,7 @@ CONFIG_MSDOS_PARTITION=y
1210# 1051#
1211# Distributed Lock Manager 1052# Distributed Lock Manager
1212# 1053#
1213CONFIG_DLM=m 1054# CONFIG_DLM is not set
1214CONFIG_DLM_TCP=y
1215# CONFIG_DLM_SCTP is not set
1216# CONFIG_DLM_DEBUG is not set
1217 1055
1218# 1056#
1219# Profiling support 1057# Profiling support
@@ -1231,7 +1069,6 @@ CONFIG_ENABLE_MUST_CHECK=y
1231# CONFIG_DEBUG_FS is not set 1069# CONFIG_DEBUG_FS is not set
1232# CONFIG_HEADERS_CHECK is not set 1070# CONFIG_HEADERS_CHECK is not set
1233# CONFIG_DEBUG_KERNEL is not set 1071# CONFIG_DEBUG_KERNEL is not set
1234CONFIG_LOG_BUF_SHIFT=14
1235CONFIG_CROSSCOMPILE=y 1072CONFIG_CROSSCOMPILE=y
1236CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs" 1073CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs"
1237 1074
@@ -1240,63 +1077,20 @@ CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs"
1240# 1077#
1241# CONFIG_KEYS is not set 1078# CONFIG_KEYS is not set
1242# CONFIG_SECURITY is not set 1079# CONFIG_SECURITY is not set
1243 1080# CONFIG_CRYPTO is not set
1244#
1245# Cryptographic options
1246#
1247CONFIG_CRYPTO=y
1248CONFIG_CRYPTO_ALGAPI=y
1249CONFIG_CRYPTO_BLKCIPHER=m
1250CONFIG_CRYPTO_HASH=m
1251CONFIG_CRYPTO_MANAGER=m
1252CONFIG_CRYPTO_HMAC=m
1253CONFIG_CRYPTO_XCBC=m
1254CONFIG_CRYPTO_NULL=m
1255CONFIG_CRYPTO_MD4=m
1256CONFIG_CRYPTO_MD5=y
1257CONFIG_CRYPTO_SHA1=m
1258CONFIG_CRYPTO_SHA256=m
1259CONFIG_CRYPTO_SHA512=m
1260CONFIG_CRYPTO_WP512=m
1261CONFIG_CRYPTO_TGR192=m
1262CONFIG_CRYPTO_GF128MUL=m
1263CONFIG_CRYPTO_ECB=m
1264CONFIG_CRYPTO_CBC=m
1265CONFIG_CRYPTO_PCBC=m
1266CONFIG_CRYPTO_LRW=m
1267CONFIG_CRYPTO_DES=m
1268CONFIG_CRYPTO_FCRYPT=m
1269CONFIG_CRYPTO_BLOWFISH=m
1270CONFIG_CRYPTO_TWOFISH=m
1271CONFIG_CRYPTO_TWOFISH_COMMON=m
1272CONFIG_CRYPTO_SERPENT=m
1273CONFIG_CRYPTO_AES=m
1274CONFIG_CRYPTO_CAST5=m
1275CONFIG_CRYPTO_CAST6=m
1276CONFIG_CRYPTO_TEA=m
1277CONFIG_CRYPTO_ARC4=m
1278CONFIG_CRYPTO_KHAZAD=m
1279CONFIG_CRYPTO_ANUBIS=m
1280CONFIG_CRYPTO_DEFLATE=m
1281CONFIG_CRYPTO_MICHAEL_MIC=m
1282CONFIG_CRYPTO_CRC32C=m
1283CONFIG_CRYPTO_CAMELLIA=m
1284# CONFIG_CRYPTO_TEST is not set
1285
1286#
1287# Hardware crypto devices
1288#
1289 1081
1290# 1082#
1291# Library routines 1083# Library routines
1292# 1084#
1293CONFIG_BITREVERSE=y 1085CONFIG_BITREVERSE=y
1294# CONFIG_CRC_CCITT is not set 1086CONFIG_CRC_CCITT=y
1295# CONFIG_CRC16 is not set 1087# CONFIG_CRC16 is not set
1088# CONFIG_CRC_ITU_T is not set
1296CONFIG_CRC32=y 1089CONFIG_CRC32=y
1297CONFIG_LIBCRC32C=m 1090# CONFIG_CRC7 is not set
1091# CONFIG_LIBCRC32C is not set
1298CONFIG_ZLIB_INFLATE=m 1092CONFIG_ZLIB_INFLATE=m
1299CONFIG_ZLIB_DEFLATE=m
1300CONFIG_PLIST=y 1093CONFIG_PLIST=y
1301CONFIG_HAS_IOMEM=y 1094CONFIG_HAS_IOMEM=y
1302CONFIG_HAS_IOPORT=y 1095CONFIG_HAS_IOPORT=y
1096CONFIG_HAS_DMA=y
diff --git a/arch/mips/configs/workpad_defconfig b/arch/mips/configs/workpad_defconfig
index db6fd4f15719..b52256ca0b53 100644
--- a/arch/mips/configs/workpad_defconfig
+++ b/arch/mips/configs/workpad_defconfig
@@ -1,60 +1,47 @@
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.23-rc2
4# Tue Feb 20 21:47:42 2007 4# Thu Aug 9 14:33:57 2007
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
26# CONFIG_MIPS_COBALT is not set 13# CONFIG_MIPS_COBALT is not set
27# CONFIG_MACH_DECSTATION is not set 14# CONFIG_MACH_DECSTATION is not set
28# CONFIG_MACH_JAZZ is not set 15# CONFIG_MACH_JAZZ is not set
16# CONFIG_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 17# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 18# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 19# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 20# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 21# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 22CONFIG_MACH_VR41XX=y
36# CONFIG_PNX8550_JBS is not set 23# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 24# CONFIG_PNX8550_STB810 is not set
38CONFIG_MACH_VR41XX=y 25# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 26# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 27# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42# CONFIG_SGI_IP22 is not set 28# CONFIG_SGI_IP22 is not set
43# CONFIG_SGI_IP27 is not set 29# CONFIG_SGI_IP27 is not set
44# CONFIG_SGI_IP32 is not set 30# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 37# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 38# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 39# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 40# CONFIG_SNI_RM is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 41# CONFIG_TOSHIBA_JMR3927 is not set
56# CONFIG_TOSHIBA_RBTX4927 is not set 42# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 43# CONFIG_TOSHIBA_RBTX4938 is not set
44# CONFIG_WR_PPMC is not set
58# CONFIG_CASIO_E55 is not set 45# CONFIG_CASIO_E55 is not set
59CONFIG_IBM_WORKPAD=y 46CONFIG_IBM_WORKPAD=y
60# CONFIG_NEC_CMBVR4133 is not set 47# CONFIG_NEC_CMBVR4133 is not set
@@ -72,6 +59,8 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
72CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 59CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
73CONFIG_DMA_NONCOHERENT=y 60CONFIG_DMA_NONCOHERENT=y
74CONFIG_DMA_NEED_PCI_MAP_STATE=y 61CONFIG_DMA_NEED_PCI_MAP_STATE=y
62# CONFIG_HOTPLUG_CPU is not set
63# CONFIG_NO_IOPORT is not set
75# CONFIG_CPU_BIG_ENDIAN is not set 64# CONFIG_CPU_BIG_ENDIAN is not set
76CONFIG_CPU_LITTLE_ENDIAN=y 65CONFIG_CPU_LITTLE_ENDIAN=y
77CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 66CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
@@ -81,6 +70,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
81# 70#
82# CPU selection 71# CPU selection
83# 72#
73# CONFIG_CPU_LOONGSON2 is not set
84# CONFIG_CPU_MIPS32_R1 is not set 74# CONFIG_CPU_MIPS32_R1 is not set
85# CONFIG_CPU_MIPS32_R2 is not set 75# CONFIG_CPU_MIPS32_R2 is not set
86# CONFIG_CPU_MIPS64_R1 is not set 76# CONFIG_CPU_MIPS64_R1 is not set
@@ -102,7 +92,6 @@ CONFIG_CPU_VR41XX=y
102# CONFIG_CPU_SB1 is not set 92# CONFIG_CPU_SB1 is not set
103CONFIG_SYS_HAS_CPU_VR41XX=y 93CONFIG_SYS_HAS_CPU_VR41XX=y
104CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 94CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
105CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
106CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 95CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
107CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y 96CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
108 97
@@ -118,7 +107,6 @@ CONFIG_PAGE_SIZE_4KB=y
118CONFIG_MIPS_MT_DISABLED=y 107CONFIG_MIPS_MT_DISABLED=y
119# CONFIG_MIPS_MT_SMP is not set 108# CONFIG_MIPS_MT_SMP is not set
120# CONFIG_MIPS_MT_SMTC is not set 109# CONFIG_MIPS_MT_SMTC is not set
121# CONFIG_MIPS_VPE_LOADER is not set
122CONFIG_CPU_HAS_SYNC=y 110CONFIG_CPU_HAS_SYNC=y
123CONFIG_GENERIC_HARDIRQS=y 111CONFIG_GENERIC_HARDIRQS=y
124CONFIG_GENERIC_IRQ_PROBE=y 112CONFIG_GENERIC_IRQ_PROBE=y
@@ -132,48 +120,47 @@ CONFIG_FLAT_NODE_MEM_MAP=y
132# CONFIG_SPARSEMEM_STATIC is not set 120# CONFIG_SPARSEMEM_STATIC is not set
133CONFIG_SPLIT_PTLOCK_CPUS=4 121CONFIG_SPLIT_PTLOCK_CPUS=4
134# CONFIG_RESOURCES_64BIT is not set 122# CONFIG_RESOURCES_64BIT is not set
135CONFIG_ZONE_DMA_FLAG=1 123CONFIG_ZONE_DMA_FLAG=0
124CONFIG_VIRT_TO_BUS=y
136# CONFIG_HZ_48 is not set 125# CONFIG_HZ_48 is not set
137# CONFIG_HZ_100 is not set 126# CONFIG_HZ_100 is not set
138# CONFIG_HZ_128 is not set 127# CONFIG_HZ_128 is not set
139# CONFIG_HZ_250 is not set 128CONFIG_HZ_250=y
140# CONFIG_HZ_256 is not set 129# CONFIG_HZ_256 is not set
141CONFIG_HZ_1000=y 130# CONFIG_HZ_1000 is not set
142# CONFIG_HZ_1024 is not set 131# CONFIG_HZ_1024 is not set
143CONFIG_SYS_SUPPORTS_ARBIT_HZ=y 132CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
144CONFIG_HZ=1000 133CONFIG_HZ=250
145CONFIG_PREEMPT_NONE=y 134CONFIG_PREEMPT_NONE=y
146# CONFIG_PREEMPT_VOLUNTARY is not set 135# CONFIG_PREEMPT_VOLUNTARY is not set
147# CONFIG_PREEMPT is not set 136# CONFIG_PREEMPT is not set
148# CONFIG_KEXEC is not set 137# CONFIG_KEXEC is not set
138CONFIG_SECCOMP=y
149CONFIG_LOCKDEP_SUPPORT=y 139CONFIG_LOCKDEP_SUPPORT=y
150CONFIG_STACKTRACE_SUPPORT=y 140CONFIG_STACKTRACE_SUPPORT=y
151CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 141CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
152 142
153# 143#
154# Code maturity level options 144# General setup
155# 145#
156CONFIG_EXPERIMENTAL=y 146CONFIG_EXPERIMENTAL=y
157CONFIG_BROKEN_ON_SMP=y 147CONFIG_BROKEN_ON_SMP=y
158CONFIG_INIT_ENV_ARG_LIMIT=32 148CONFIG_INIT_ENV_ARG_LIMIT=32
159
160#
161# General setup
162#
163CONFIG_LOCALVERSION="" 149CONFIG_LOCALVERSION=""
164CONFIG_LOCALVERSION_AUTO=y 150CONFIG_LOCALVERSION_AUTO=y
165CONFIG_SWAP=y 151CONFIG_SWAP=y
166CONFIG_SYSVIPC=y 152CONFIG_SYSVIPC=y
167# CONFIG_IPC_NS is not set
168CONFIG_SYSVIPC_SYSCTL=y 153CONFIG_SYSVIPC_SYSCTL=y
169# CONFIG_POSIX_MQUEUE is not set 154# CONFIG_POSIX_MQUEUE is not set
170# CONFIG_BSD_PROCESS_ACCT is not set 155# CONFIG_BSD_PROCESS_ACCT is not set
171# CONFIG_TASKSTATS is not set 156# CONFIG_TASKSTATS is not set
172# CONFIG_UTS_NS is not set 157# CONFIG_USER_NS is not set
173# CONFIG_AUDIT is not set 158# CONFIG_AUDIT is not set
174# CONFIG_IKCONFIG is not set 159# CONFIG_IKCONFIG is not set
160CONFIG_LOG_BUF_SHIFT=14
175CONFIG_SYSFS_DEPRECATED=y 161CONFIG_SYSFS_DEPRECATED=y
176# CONFIG_RELAY is not set 162# CONFIG_RELAY is not set
163# CONFIG_BLK_DEV_INITRD is not set
177# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 164# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
178CONFIG_SYSCTL=y 165CONFIG_SYSCTL=y
179CONFIG_EMBEDDED=y 166CONFIG_EMBEDDED=y
@@ -186,32 +173,30 @@ CONFIG_BUG=y
186CONFIG_ELF_CORE=y 173CONFIG_ELF_CORE=y
187CONFIG_BASE_FULL=y 174CONFIG_BASE_FULL=y
188CONFIG_FUTEX=y 175CONFIG_FUTEX=y
176CONFIG_ANON_INODES=y
189CONFIG_EPOLL=y 177CONFIG_EPOLL=y
178CONFIG_SIGNALFD=y
179CONFIG_TIMERFD=y
180CONFIG_EVENTFD=y
190CONFIG_SHMEM=y 181CONFIG_SHMEM=y
191CONFIG_SLAB=y
192CONFIG_VM_EVENT_COUNTERS=y 182CONFIG_VM_EVENT_COUNTERS=y
183CONFIG_SLAB=y
184# CONFIG_SLUB is not set
185# CONFIG_SLOB is not set
193CONFIG_RT_MUTEXES=y 186CONFIG_RT_MUTEXES=y
194# CONFIG_TINY_SHMEM is not set 187# CONFIG_TINY_SHMEM is not set
195CONFIG_BASE_SMALL=0 188CONFIG_BASE_SMALL=0
196# CONFIG_SLOB is not set
197
198#
199# Loadable module support
200#
201CONFIG_MODULES=y 189CONFIG_MODULES=y
202CONFIG_MODULE_UNLOAD=y 190CONFIG_MODULE_UNLOAD=y
203# CONFIG_MODULE_FORCE_UNLOAD is not set 191CONFIG_MODULE_FORCE_UNLOAD=y
204CONFIG_MODVERSIONS=y 192CONFIG_MODVERSIONS=y
205CONFIG_MODULE_SRCVERSION_ALL=y 193CONFIG_MODULE_SRCVERSION_ALL=y
206CONFIG_KMOD=y 194CONFIG_KMOD=y
207
208#
209# Block layer
210#
211CONFIG_BLOCK=y 195CONFIG_BLOCK=y
212# CONFIG_LBD is not set 196# CONFIG_LBD is not set
213# CONFIG_BLK_DEV_IO_TRACE is not set 197# CONFIG_BLK_DEV_IO_TRACE is not set
214# CONFIG_LSF is not set 198# CONFIG_LSF is not set
199# CONFIG_BLK_DEV_BSG is not set
215 200
216# 201#
217# IO Schedulers 202# IO Schedulers
@@ -229,6 +214,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
229# 214#
230# Bus options (PCI, PCMCIA, EISA, ISA, TC) 215# Bus options (PCI, PCMCIA, EISA, ISA, TC)
231# 216#
217# CONFIG_ARCH_SUPPORTS_MSI is not set
232CONFIG_ISA=y 218CONFIG_ISA=y
233CONFIG_MMU=y 219CONFIG_MMU=y
234 220
@@ -250,10 +236,6 @@ CONFIG_PCMCIA_PROBE=y
250CONFIG_PCMCIA_VRC4171=y 236CONFIG_PCMCIA_VRC4171=y
251 237
252# 238#
253# PCI Hotplug Support
254#
255
256#
257# Executable file formats 239# Executable file formats
258# 240#
259CONFIG_BINFMT_ELF=y 241CONFIG_BINFMT_ELF=y
@@ -263,10 +245,7 @@ CONFIG_TRAD_SIGNALS=y
263# 245#
264# Power management options 246# Power management options
265# 247#
266CONFIG_PM=y 248# CONFIG_PM is not set
267# CONFIG_PM_LEGACY is not set
268# CONFIG_PM_DEBUG is not set
269# CONFIG_PM_SYSFS_DEPRECATED is not set
270 249
271# 250#
272# Networking 251# Networking
@@ -276,7 +255,6 @@ CONFIG_NET=y
276# 255#
277# Networking options 256# Networking options
278# 257#
279# CONFIG_NETDEBUG is not set
280CONFIG_PACKET=y 258CONFIG_PACKET=y
281CONFIG_PACKET_MMAP=y 259CONFIG_PACKET_MMAP=y
282CONFIG_UNIX=y 260CONFIG_UNIX=y
@@ -301,34 +279,25 @@ CONFIG_IP_FIB_HASH=y
301# CONFIG_INET_IPCOMP is not set 279# CONFIG_INET_IPCOMP is not set
302# CONFIG_INET_XFRM_TUNNEL is not set 280# CONFIG_INET_XFRM_TUNNEL is not set
303# CONFIG_INET_TUNNEL is not set 281# CONFIG_INET_TUNNEL is not set
304CONFIG_INET_XFRM_MODE_TRANSPORT=m 282# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
305CONFIG_INET_XFRM_MODE_TUNNEL=m 283# CONFIG_INET_XFRM_MODE_TUNNEL is not set
306CONFIG_INET_XFRM_MODE_BEET=m 284# CONFIG_INET_XFRM_MODE_BEET is not set
307CONFIG_INET_DIAG=y 285CONFIG_INET_DIAG=y
308CONFIG_INET_TCP_DIAG=y 286CONFIG_INET_TCP_DIAG=y
309# CONFIG_TCP_CONG_ADVANCED is not set 287# CONFIG_TCP_CONG_ADVANCED is not set
310CONFIG_TCP_CONG_CUBIC=y 288CONFIG_TCP_CONG_CUBIC=y
311CONFIG_DEFAULT_TCP_CONG="cubic" 289CONFIG_DEFAULT_TCP_CONG="cubic"
312CONFIG_TCP_MD5SIG=y 290# CONFIG_TCP_MD5SIG is not set
313# CONFIG_IPV6 is not set 291# CONFIG_IPV6 is not set
314# CONFIG_INET6_XFRM_TUNNEL is not set 292# CONFIG_INET6_XFRM_TUNNEL is not set
315# CONFIG_INET6_TUNNEL is not set 293# CONFIG_INET6_TUNNEL is not set
316CONFIG_NETWORK_SECMARK=y 294CONFIG_NETWORK_SECMARK=y
317# CONFIG_NETFILTER is not set 295# CONFIG_NETFILTER is not set
318
319#
320# DCCP Configuration (EXPERIMENTAL)
321#
322# CONFIG_IP_DCCP is not set 296# CONFIG_IP_DCCP is not set
323
324#
325# SCTP Configuration (EXPERIMENTAL)
326#
327# CONFIG_IP_SCTP is not set 297# CONFIG_IP_SCTP is not set
328 298# CONFIG_SCTP_HMAC_NONE is not set
329# 299# CONFIG_SCTP_HMAC_SHA1 is not set
330# TIPC Configuration (EXPERIMENTAL) 300# CONFIG_SCTP_HMAC_MD5 is not set
331#
332# CONFIG_TIPC is not set 301# CONFIG_TIPC is not set
333# CONFIG_ATM is not set 302# CONFIG_ATM is not set
334# CONFIG_BRIDGE is not set 303# CONFIG_BRIDGE is not set
@@ -354,8 +323,17 @@ CONFIG_NETWORK_SECMARK=y
354# CONFIG_HAMRADIO is not set 323# CONFIG_HAMRADIO is not set
355# CONFIG_IRDA is not set 324# CONFIG_IRDA is not set
356# CONFIG_BT is not set 325# CONFIG_BT is not set
357# CONFIG_IEEE80211 is not set 326# CONFIG_AF_RXRPC is not set
327
328#
329# Wireless
330#
331# CONFIG_CFG80211 is not set
358CONFIG_WIRELESS_EXT=y 332CONFIG_WIRELESS_EXT=y
333# CONFIG_MAC80211 is not set
334# CONFIG_IEEE80211 is not set
335# CONFIG_RFKILL is not set
336# CONFIG_NET_9P is not set
359 337
360# 338#
361# Device Drivers 339# Device Drivers
@@ -368,31 +346,11 @@ CONFIG_STANDALONE=y
368CONFIG_PREVENT_FIRMWARE_BUILD=y 346CONFIG_PREVENT_FIRMWARE_BUILD=y
369CONFIG_FW_LOADER=y 347CONFIG_FW_LOADER=y
370# CONFIG_SYS_HYPERVISOR is not set 348# CONFIG_SYS_HYPERVISOR is not set
371 349# CONFIG_CONNECTOR is not set
372#
373# Connector - unified userspace <-> kernelspace linker
374#
375CONFIG_CONNECTOR=m
376
377#
378# Memory Technology Devices (MTD)
379#
380# CONFIG_MTD is not set 350# CONFIG_MTD is not set
381
382#
383# Parallel port support
384#
385# CONFIG_PARPORT is not set 351# CONFIG_PARPORT is not set
386
387#
388# Plug and Play support
389#
390# CONFIG_PNP is not set 352# CONFIG_PNP is not set
391# CONFIG_PNPACPI is not set 353CONFIG_BLK_DEV=y
392
393#
394# Block devices
395#
396# CONFIG_BLK_DEV_COW_COMMON is not set 354# CONFIG_BLK_DEV_COW_COMMON is not set
397# CONFIG_BLK_DEV_LOOP is not set 355# CONFIG_BLK_DEV_LOOP is not set
398# CONFIG_BLK_DEV_NBD is not set 356# CONFIG_BLK_DEV_NBD is not set
@@ -400,17 +358,9 @@ CONFIG_BLK_DEV_RAM=m
400CONFIG_BLK_DEV_RAM_COUNT=16 358CONFIG_BLK_DEV_RAM_COUNT=16
401CONFIG_BLK_DEV_RAM_SIZE=4096 359CONFIG_BLK_DEV_RAM_SIZE=4096
402CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 360CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
403# CONFIG_BLK_DEV_INITRD is not set
404# CONFIG_CDROM_PKTCDVD is not set 361# CONFIG_CDROM_PKTCDVD is not set
405# CONFIG_ATA_OVER_ETH is not set 362# CONFIG_ATA_OVER_ETH is not set
406 363# CONFIG_MISC_DEVICES is not set
407#
408# Misc devices
409#
410
411#
412# ATA/ATAPI/MFM/RLL support
413#
414CONFIG_IDE=y 364CONFIG_IDE=y
415CONFIG_IDE_MAX_HWIFS=4 365CONFIG_IDE_MAX_HWIFS=4
416CONFIG_BLK_DEV_IDE=y 366CONFIG_BLK_DEV_IDE=y
@@ -426,15 +376,16 @@ CONFIG_BLK_DEV_IDECS=m
426# CONFIG_BLK_DEV_IDETAPE is not set 376# CONFIG_BLK_DEV_IDETAPE is not set
427# CONFIG_BLK_DEV_IDEFLOPPY is not set 377# CONFIG_BLK_DEV_IDEFLOPPY is not set
428# CONFIG_IDE_TASK_IOCTL is not set 378# CONFIG_IDE_TASK_IOCTL is not set
379CONFIG_IDE_PROC_FS=y
429 380
430# 381#
431# IDE chipset support/bugfixes 382# IDE chipset support/bugfixes
432# 383#
433CONFIG_IDE_GENERIC=y 384CONFIG_IDE_GENERIC=y
385# CONFIG_IDEPCI_PCIBUS_ORDER is not set
434# CONFIG_IDE_ARM is not set 386# CONFIG_IDE_ARM is not set
435# CONFIG_IDE_CHIPSETS is not set 387# CONFIG_IDE_CHIPSETS is not set
436# CONFIG_BLK_DEV_IDEDMA is not set 388# CONFIG_BLK_DEV_IDEDMA is not set
437# CONFIG_IDEDMA_AUTO is not set
438# CONFIG_BLK_DEV_HD is not set 389# CONFIG_BLK_DEV_HD is not set
439 390
440# 391#
@@ -442,135 +393,38 @@ CONFIG_IDE_GENERIC=y
442# 393#
443# CONFIG_RAID_ATTRS is not set 394# CONFIG_RAID_ATTRS is not set
444# CONFIG_SCSI is not set 395# CONFIG_SCSI is not set
396# CONFIG_SCSI_DMA is not set
445# CONFIG_SCSI_NETLINK is not set 397# CONFIG_SCSI_NETLINK is not set
446
447#
448# Serial ATA (prod) and Parallel ATA (experimental) drivers
449#
450# CONFIG_ATA is not set 398# CONFIG_ATA is not set
451
452#
453# Old CD-ROM drivers (not SCSI, not IDE)
454#
455# CONFIG_CD_NO_IDESCSI is not set
456
457#
458# Multi-device support (RAID and LVM)
459#
460# CONFIG_MD is not set 399# CONFIG_MD is not set
461
462#
463# Fusion MPT device support
464#
465# CONFIG_FUSION is not set
466
467#
468# IEEE 1394 (FireWire) support
469#
470
471#
472# I2O device support
473#
474
475#
476# Network device support
477#
478CONFIG_NETDEVICES=y 400CONFIG_NETDEVICES=y
401# CONFIG_NETDEVICES_MULTIQUEUE is not set
479# CONFIG_DUMMY is not set 402# CONFIG_DUMMY is not set
480# CONFIG_BONDING is not set 403# CONFIG_BONDING is not set
404# CONFIG_MACVLAN is not set
481# CONFIG_EQUALIZER is not set 405# CONFIG_EQUALIZER is not set
482# CONFIG_TUN is not set 406# CONFIG_TUN is not set
483
484#
485# ARCnet devices
486#
487# CONFIG_ARCNET is not set 407# CONFIG_ARCNET is not set
488 408# CONFIG_NET_ETHERNET is not set
489#
490# PHY device support
491#
492CONFIG_PHYLIB=m
493
494#
495# MII PHY device drivers
496#
497CONFIG_MARVELL_PHY=m
498CONFIG_DAVICOM_PHY=m
499CONFIG_QSEMI_PHY=m
500CONFIG_LXT_PHY=m
501CONFIG_CICADA_PHY=m
502CONFIG_VITESSE_PHY=m
503CONFIG_SMSC_PHY=m
504# CONFIG_BROADCOM_PHY is not set
505# CONFIG_FIXED_PHY is not set
506
507#
508# Ethernet (10 or 100Mbit)
509#
510CONFIG_NET_ETHERNET=y
511CONFIG_MII=m 409CONFIG_MII=m
512# CONFIG_NET_VENDOR_3COM is not set 410# CONFIG_NETDEV_1000 is not set
513# CONFIG_NET_VENDOR_SMC is not set 411# CONFIG_NETDEV_10000 is not set
514# CONFIG_DM9000 is not set
515# CONFIG_NET_VENDOR_RACAL is not set
516# CONFIG_AT1700 is not set
517# CONFIG_DEPCA is not set
518# CONFIG_HP100 is not set
519# CONFIG_NET_ISA is not set
520# CONFIG_NET_PCI is not set
521
522#
523# Ethernet (1000 Mbit)
524#
525
526#
527# Ethernet (10000 Mbit)
528#
529
530#
531# Token Ring devices
532#
533# CONFIG_TR is not set 412# CONFIG_TR is not set
534 413
535# 414#
536# Wireless LAN (non-hamradio) 415# Wireless LAN
537#
538CONFIG_NET_RADIO=y
539# CONFIG_NET_WIRELESS_RTNETLINK is not set
540
541#
542# Obsolete Wireless cards support (pre-802.11)
543#
544# CONFIG_STRIP is not set
545# CONFIG_ARLAN is not set
546# CONFIG_WAVELAN is not set
547# CONFIG_PCMCIA_WAVELAN is not set
548# CONFIG_PCMCIA_NETWAVE is not set
549
550#
551# Wireless 802.11 Frequency Hopping cards support
552# 416#
417# CONFIG_WLAN_PRE80211 is not set
418CONFIG_WLAN_80211=y
553# CONFIG_PCMCIA_RAYCS is not set 419# CONFIG_PCMCIA_RAYCS is not set
554 420# CONFIG_LIBERTAS is not set
555#
556# Wireless 802.11b ISA/PCI cards support
557#
558CONFIG_HERMES=m 421CONFIG_HERMES=m
559# CONFIG_ATMEL is not set 422# CONFIG_ATMEL is not set
560
561#
562# Wireless 802.11b Pcmcia/Cardbus cards support
563#
564CONFIG_PCMCIA_HERMES=m 423CONFIG_PCMCIA_HERMES=m
565# CONFIG_PCMCIA_SPECTRUM is not set 424# CONFIG_PCMCIA_SPECTRUM is not set
566# CONFIG_AIRO_CS is not set 425# CONFIG_AIRO_CS is not set
567# CONFIG_PCMCIA_WL3501 is not set 426# CONFIG_PCMCIA_WL3501 is not set
568# CONFIG_HOSTAP is not set 427# CONFIG_HOSTAP is not set
569CONFIG_NET_WIRELESS=y
570
571#
572# PCMCIA network device support
573#
574CONFIG_NET_PCMCIA=y 428CONFIG_NET_PCMCIA=y
575CONFIG_PCMCIA_3C589=m 429CONFIG_PCMCIA_3C589=m
576CONFIG_PCMCIA_3C574=m 430CONFIG_PCMCIA_3C574=m
@@ -580,10 +434,6 @@ CONFIG_PCMCIA_NMCLAN=m
580CONFIG_PCMCIA_SMC91C92=m 434CONFIG_PCMCIA_SMC91C92=m
581CONFIG_PCMCIA_XIRC2PS=m 435CONFIG_PCMCIA_XIRC2PS=m
582CONFIG_PCMCIA_AXNET=m 436CONFIG_PCMCIA_AXNET=m
583
584#
585# Wan interfaces
586#
587# CONFIG_WAN is not set 437# CONFIG_WAN is not set
588# CONFIG_PPP is not set 438# CONFIG_PPP is not set
589# CONFIG_SLIP is not set 439# CONFIG_SLIP is not set
@@ -591,15 +441,7 @@ CONFIG_PCMCIA_AXNET=m
591# CONFIG_NETCONSOLE is not set 441# CONFIG_NETCONSOLE is not set
592# CONFIG_NETPOLL is not set 442# CONFIG_NETPOLL is not set
593# CONFIG_NET_POLL_CONTROLLER is not set 443# CONFIG_NET_POLL_CONTROLLER is not set
594
595#
596# ISDN subsystem
597#
598# CONFIG_ISDN is not set 444# CONFIG_ISDN is not set
599
600#
601# Telephony Support
602#
603# CONFIG_PHONE is not set 445# CONFIG_PHONE is not set
604 446
605# 447#
@@ -607,6 +449,7 @@ CONFIG_PCMCIA_AXNET=m
607# 449#
608CONFIG_INPUT=y 450CONFIG_INPUT=y
609# CONFIG_INPUT_FF_MEMLESS is not set 451# CONFIG_INPUT_FF_MEMLESS is not set
452# CONFIG_INPUT_POLLDEV is not set
610 453
611# 454#
612# Userland interfaces 455# Userland interfaces
@@ -623,6 +466,7 @@ CONFIG_INPUT=y
623# CONFIG_INPUT_KEYBOARD is not set 466# CONFIG_INPUT_KEYBOARD is not set
624# CONFIG_INPUT_MOUSE is not set 467# CONFIG_INPUT_MOUSE is not set
625# CONFIG_INPUT_JOYSTICK is not set 468# CONFIG_INPUT_JOYSTICK is not set
469# CONFIG_INPUT_TABLET is not set
626# CONFIG_INPUT_TOUCHSCREEN is not set 470# CONFIG_INPUT_TOUCHSCREEN is not set
627# CONFIG_INPUT_MISC is not set 471# CONFIG_INPUT_MISC is not set
628 472
@@ -656,19 +500,10 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
656CONFIG_UNIX98_PTYS=y 500CONFIG_UNIX98_PTYS=y
657CONFIG_LEGACY_PTYS=y 501CONFIG_LEGACY_PTYS=y
658CONFIG_LEGACY_PTY_COUNT=256 502CONFIG_LEGACY_PTY_COUNT=256
659
660#
661# IPMI
662#
663# CONFIG_IPMI_HANDLER is not set 503# CONFIG_IPMI_HANDLER is not set
664
665#
666# Watchdog Cards
667#
668# CONFIG_WATCHDOG is not set 504# CONFIG_WATCHDOG is not set
669# CONFIG_HW_RANDOM is not set 505# CONFIG_HW_RANDOM is not set
670# CONFIG_RTC is not set 506# CONFIG_RTC is not set
671# CONFIG_GEN_RTC is not set
672# CONFIG_DTLK is not set 507# CONFIG_DTLK is not set
673# CONFIG_R3964 is not set 508# CONFIG_R3964 is not set
674 509
@@ -678,17 +513,10 @@ CONFIG_LEGACY_PTY_COUNT=256
678# CONFIG_SYNCLINK_CS is not set 513# CONFIG_SYNCLINK_CS is not set
679# CONFIG_CARDMAN_4000 is not set 514# CONFIG_CARDMAN_4000 is not set
680# CONFIG_CARDMAN_4040 is not set 515# CONFIG_CARDMAN_4040 is not set
681# CONFIG_GPIO_VR41XX is not set 516CONFIG_GPIO_VR41XX=y
682# CONFIG_RAW_DRIVER is not set 517# CONFIG_RAW_DRIVER is not set
683
684#
685# TPM devices
686#
687# CONFIG_TCG_TPM is not set 518# CONFIG_TCG_TPM is not set
688 519CONFIG_DEVPORT=y
689#
690# I2C support
691#
692# CONFIG_I2C is not set 520# CONFIG_I2C is not set
693 521
694# 522#
@@ -696,32 +524,33 @@ CONFIG_LEGACY_PTY_COUNT=256
696# 524#
697# CONFIG_SPI is not set 525# CONFIG_SPI is not set
698# CONFIG_SPI_MASTER is not set 526# CONFIG_SPI_MASTER is not set
699
700#
701# Dallas's 1-wire bus
702#
703# CONFIG_W1 is not set 527# CONFIG_W1 is not set
528# CONFIG_POWER_SUPPLY is not set
529# CONFIG_HWMON is not set
704 530
705# 531#
706# Hardware Monitoring support 532# Multifunction device drivers
707# 533#
708# CONFIG_HWMON is not set 534# CONFIG_MFD_SM501 is not set
709# CONFIG_HWMON_VID is not set
710 535
711# 536#
712# Multimedia devices 537# Multimedia devices
713# 538#
714# CONFIG_VIDEO_DEV is not set 539# CONFIG_VIDEO_DEV is not set
540# CONFIG_DVB_CORE is not set
541# CONFIG_DAB is not set
715 542
716# 543#
717# Digital Video Broadcasting Devices 544# Graphics support
718# 545#
719# CONFIG_DVB is not set 546# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
720 547
721# 548#
722# Graphics support 549# Display device support
723# 550#
724# CONFIG_FIRMWARE_EDID is not set 551# CONFIG_DISPLAY_SUPPORT is not set
552# CONFIG_VGASTATE is not set
553# CONFIG_VIDEO_OUTPUT_CONTROL is not set
725# CONFIG_FB is not set 554# CONFIG_FB is not set
726 555
727# 556#
@@ -730,65 +559,51 @@ CONFIG_LEGACY_PTY_COUNT=256
730# CONFIG_VGA_CONSOLE is not set 559# CONFIG_VGA_CONSOLE is not set
731# CONFIG_MDA_CONSOLE is not set 560# CONFIG_MDA_CONSOLE is not set
732CONFIG_DUMMY_CONSOLE=y 561CONFIG_DUMMY_CONSOLE=y
733# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
734 562
735# 563#
736# Sound 564# Sound
737# 565#
738# CONFIG_SOUND is not set 566# CONFIG_SOUND is not set
739 567CONFIG_HID_SUPPORT=y
740#
741# HID Devices
742#
743CONFIG_HID=y 568CONFIG_HID=y
744# CONFIG_HID_DEBUG is not set 569# CONFIG_HID_DEBUG is not set
745 570# CONFIG_USB_SUPPORT is not set
746#
747# USB support
748#
749# CONFIG_USB_ARCH_HAS_HCD is not set
750# CONFIG_USB_ARCH_HAS_OHCI is not set
751# CONFIG_USB_ARCH_HAS_EHCI is not set
752
753#
754# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
755#
756
757#
758# USB Gadget Support
759#
760# CONFIG_USB_GADGET is not set
761
762#
763# MMC/SD Card support
764#
765# CONFIG_MMC is not set 571# CONFIG_MMC is not set
766
767#
768# LED devices
769#
770# CONFIG_NEW_LEDS is not set 572# CONFIG_NEW_LEDS is not set
573CONFIG_RTC_LIB=y
574CONFIG_RTC_CLASS=y
575CONFIG_RTC_HCTOSYS=y
576CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
577# CONFIG_RTC_DEBUG is not set
771 578
772# 579#
773# LED drivers 580# RTC interfaces
774#
775
776#
777# LED Triggers
778# 581#
582CONFIG_RTC_INTF_SYSFS=y
583CONFIG_RTC_INTF_PROC=y
584CONFIG_RTC_INTF_DEV=y
585# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
586# CONFIG_RTC_DRV_TEST is not set
779 587
780# 588#
781# InfiniBand support 589# SPI RTC drivers
782# 590#
783 591
784# 592#
785# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 593# Platform RTC drivers
786# 594#
595# CONFIG_RTC_DRV_CMOS is not set
596# CONFIG_RTC_DRV_DS1553 is not set
597# CONFIG_RTC_DRV_STK17TA8 is not set
598# CONFIG_RTC_DRV_DS1742 is not set
599# CONFIG_RTC_DRV_M48T86 is not set
600# CONFIG_RTC_DRV_M48T59 is not set
601# CONFIG_RTC_DRV_V3020 is not set
787 602
788# 603#
789# Real Time Clock 604# on-CPU RTC drivers
790# 605#
791# CONFIG_RTC_CLASS is not set 606CONFIG_RTC_DRV_VR41XX=y
792 607
793# 608#
794# DMA Engine support 609# DMA Engine support
@@ -804,23 +619,25 @@ CONFIG_HID=y
804# 619#
805 620
806# 621#
807# Auxiliary Display support 622# Userspace I/O
808#
809
810#
811# Virtualization
812# 623#
624# CONFIG_UIO is not set
813 625
814# 626#
815# File systems 627# File systems
816# 628#
817CONFIG_EXT2_FS=y 629CONFIG_EXT2_FS=y
818CONFIG_EXT2_FS_XATTR=y 630CONFIG_EXT2_FS_XATTR=y
819CONFIG_EXT2_FS_POSIX_ACL=y 631# CONFIG_EXT2_FS_POSIX_ACL is not set
820CONFIG_EXT2_FS_SECURITY=y 632# CONFIG_EXT2_FS_SECURITY is not set
821# CONFIG_EXT2_FS_XIP is not set 633# CONFIG_EXT2_FS_XIP is not set
822# CONFIG_EXT3_FS is not set 634CONFIG_EXT3_FS=y
635CONFIG_EXT3_FS_XATTR=y
636# CONFIG_EXT3_FS_POSIX_ACL is not set
637# CONFIG_EXT3_FS_SECURITY is not set
823# CONFIG_EXT4DEV_FS is not set 638# CONFIG_EXT4DEV_FS is not set
639CONFIG_JBD=y
640# CONFIG_JBD_DEBUG is not set
824CONFIG_FS_MBCACHE=y 641CONFIG_FS_MBCACHE=y
825# CONFIG_REISERFS_FS is not set 642# CONFIG_REISERFS_FS is not set
826# CONFIG_JFS_FS is not set 643# CONFIG_JFS_FS is not set
@@ -836,7 +653,7 @@ CONFIG_INOTIFY_USER=y
836CONFIG_DNOTIFY=y 653CONFIG_DNOTIFY=y
837# CONFIG_AUTOFS_FS is not set 654# CONFIG_AUTOFS_FS is not set
838CONFIG_AUTOFS4_FS=y 655CONFIG_AUTOFS4_FS=y
839CONFIG_FUSE_FS=m 656# CONFIG_FUSE_FS is not set
840CONFIG_GENERIC_ACL=y 657CONFIG_GENERIC_ACL=y
841 658
842# 659#
@@ -863,7 +680,7 @@ CONFIG_TMPFS=y
863CONFIG_TMPFS_POSIX_ACL=y 680CONFIG_TMPFS_POSIX_ACL=y
864# CONFIG_HUGETLB_PAGE is not set 681# CONFIG_HUGETLB_PAGE is not set
865CONFIG_RAMFS=y 682CONFIG_RAMFS=y
866CONFIG_CONFIGFS_FS=m 683# CONFIG_CONFIGFS_FS is not set
867 684
868# 685#
869# Miscellaneous filesystems 686# Miscellaneous filesystems
@@ -885,17 +702,22 @@ CONFIG_CONFIGFS_FS=m
885# 702#
886# Network File Systems 703# Network File Systems
887# 704#
888CONFIG_NFS_FS=y 705CONFIG_NFS_FS=m
889# CONFIG_NFS_V3 is not set 706CONFIG_NFS_V3=y
707# CONFIG_NFS_V3_ACL is not set
890# CONFIG_NFS_V4 is not set 708# CONFIG_NFS_V4 is not set
891# CONFIG_NFS_DIRECTIO is not set 709# CONFIG_NFS_DIRECTIO is not set
892CONFIG_NFSD=y 710CONFIG_NFSD=m
893# CONFIG_NFSD_V3 is not set 711CONFIG_NFSD_V3=y
712# CONFIG_NFSD_V3_ACL is not set
713# CONFIG_NFSD_V4 is not set
894# CONFIG_NFSD_TCP is not set 714# CONFIG_NFSD_TCP is not set
895CONFIG_LOCKD=y 715CONFIG_LOCKD=m
896CONFIG_EXPORTFS=y 716CONFIG_LOCKD_V4=y
717CONFIG_EXPORTFS=m
897CONFIG_NFS_COMMON=y 718CONFIG_NFS_COMMON=y
898CONFIG_SUNRPC=y 719CONFIG_SUNRPC=m
720# CONFIG_SUNRPC_BIND34 is not set
899# CONFIG_RPCSEC_GSS_KRB5 is not set 721# CONFIG_RPCSEC_GSS_KRB5 is not set
900# CONFIG_RPCSEC_GSS_SPKM3 is not set 722# CONFIG_RPCSEC_GSS_SPKM3 is not set
901# CONFIG_SMB_FS is not set 723# CONFIG_SMB_FS is not set
@@ -903,7 +725,6 @@ CONFIG_SUNRPC=y
903# CONFIG_NCP_FS is not set 725# CONFIG_NCP_FS is not set
904# CONFIG_CODA_FS is not set 726# CONFIG_CODA_FS is not set
905# CONFIG_AFS_FS is not set 727# CONFIG_AFS_FS is not set
906# CONFIG_9P_FS is not set
907 728
908# 729#
909# Partition Types 730# Partition Types
@@ -919,10 +740,7 @@ CONFIG_MSDOS_PARTITION=y
919# 740#
920# Distributed Lock Manager 741# Distributed Lock Manager
921# 742#
922CONFIG_DLM=m 743# CONFIG_DLM is not set
923CONFIG_DLM_TCP=y
924# CONFIG_DLM_SCTP is not set
925# CONFIG_DLM_DEBUG is not set
926 744
927# 745#
928# Profiling support 746# Profiling support
@@ -940,7 +758,6 @@ CONFIG_ENABLE_MUST_CHECK=y
940# CONFIG_DEBUG_FS is not set 758# CONFIG_DEBUG_FS is not set
941# CONFIG_HEADERS_CHECK is not set 759# CONFIG_HEADERS_CHECK is not set
942# CONFIG_DEBUG_KERNEL is not set 760# CONFIG_DEBUG_KERNEL is not set
943CONFIG_LOG_BUF_SHIFT=14
944CONFIG_CROSSCOMPILE=y 761CONFIG_CROSSCOMPILE=y
945CONFIG_CMDLINE="console=ttyVR0,19200 ide0=0x170,0x376,49 mem=16M" 762CONFIG_CMDLINE="console=ttyVR0,19200 ide0=0x170,0x376,49 mem=16M"
946 763
@@ -949,52 +766,7 @@ CONFIG_CMDLINE="console=ttyVR0,19200 ide0=0x170,0x376,49 mem=16M"
949# 766#
950# CONFIG_KEYS is not set 767# CONFIG_KEYS is not set
951# CONFIG_SECURITY is not set 768# CONFIG_SECURITY is not set
952 769# CONFIG_CRYPTO is not set
953#
954# Cryptographic options
955#
956CONFIG_CRYPTO=y
957CONFIG_CRYPTO_ALGAPI=y
958CONFIG_CRYPTO_BLKCIPHER=m
959CONFIG_CRYPTO_HASH=m
960CONFIG_CRYPTO_MANAGER=m
961CONFIG_CRYPTO_HMAC=m
962CONFIG_CRYPTO_XCBC=m
963CONFIG_CRYPTO_NULL=m
964CONFIG_CRYPTO_MD4=m
965CONFIG_CRYPTO_MD5=y
966CONFIG_CRYPTO_SHA1=m
967CONFIG_CRYPTO_SHA256=m
968CONFIG_CRYPTO_SHA512=m
969CONFIG_CRYPTO_WP512=m
970CONFIG_CRYPTO_TGR192=m
971CONFIG_CRYPTO_GF128MUL=m
972CONFIG_CRYPTO_ECB=m
973CONFIG_CRYPTO_CBC=m
974CONFIG_CRYPTO_PCBC=m
975CONFIG_CRYPTO_LRW=m
976CONFIG_CRYPTO_DES=m
977CONFIG_CRYPTO_FCRYPT=m
978CONFIG_CRYPTO_BLOWFISH=m
979CONFIG_CRYPTO_TWOFISH=m
980CONFIG_CRYPTO_TWOFISH_COMMON=m
981CONFIG_CRYPTO_SERPENT=m
982CONFIG_CRYPTO_AES=m
983CONFIG_CRYPTO_CAST5=m
984CONFIG_CRYPTO_CAST6=m
985CONFIG_CRYPTO_TEA=m
986CONFIG_CRYPTO_ARC4=m
987CONFIG_CRYPTO_KHAZAD=m
988CONFIG_CRYPTO_ANUBIS=m
989CONFIG_CRYPTO_DEFLATE=m
990CONFIG_CRYPTO_MICHAEL_MIC=m
991CONFIG_CRYPTO_CRC32C=m
992CONFIG_CRYPTO_CAMELLIA=m
993# CONFIG_CRYPTO_TEST is not set
994
995#
996# Hardware crypto devices
997#
998 770
999# 771#
1000# Library routines 772# Library routines
@@ -1002,10 +774,11 @@ CONFIG_CRYPTO_CAMELLIA=m
1002CONFIG_BITREVERSE=y 774CONFIG_BITREVERSE=y
1003# CONFIG_CRC_CCITT is not set 775# CONFIG_CRC_CCITT is not set
1004# CONFIG_CRC16 is not set 776# CONFIG_CRC16 is not set
777# CONFIG_CRC_ITU_T is not set
1005CONFIG_CRC32=y 778CONFIG_CRC32=y
1006CONFIG_LIBCRC32C=m 779# CONFIG_CRC7 is not set
1007CONFIG_ZLIB_INFLATE=m 780# CONFIG_LIBCRC32C is not set
1008CONFIG_ZLIB_DEFLATE=m
1009CONFIG_PLIST=y 781CONFIG_PLIST=y
1010CONFIG_HAS_IOMEM=y 782CONFIG_HAS_IOMEM=y
1011CONFIG_HAS_IOPORT=y 783CONFIG_HAS_IOPORT=y
784CONFIG_HAS_DMA=y
diff --git a/arch/mips/defconfig b/arch/mips/defconfig
index d3d81fb2765a..670039bb1a7c 100644
--- a/arch/mips/defconfig
+++ b/arch/mips/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.20 3# Linux kernel version: 2.6.23-rc2
4# Tue Feb 20 21:47:14 2007 4# Tue Aug 7 12:39:49 2007
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -9,52 +9,40 @@ CONFIG_MIPS=y
9# Machine selection 9# Machine selection
10# 10#
11CONFIG_ZONE_DMA=y 11CONFIG_ZONE_DMA=y
12# CONFIG_MIPS_MTX1 is not set 12# CONFIG_MACH_ALCHEMY 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 13# CONFIG_BASLER_EXCITE 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_LEMOTE_FULONG is not set
29# CONFIG_MIPS_ATLAS is not set 18# CONFIG_MIPS_ATLAS is not set
30# CONFIG_MIPS_MALTA is not set 19# CONFIG_MIPS_MALTA is not set
31# CONFIG_MIPS_SEAD is not set 20# CONFIG_MIPS_SEAD is not set
32# CONFIG_WR_PPMC is not set
33# CONFIG_MIPS_SIM is not set 21# CONFIG_MIPS_SIM is not set
34# CONFIG_MOMENCO_JAGUAR_ATX is not set 22# CONFIG_MARKEINS is not set
35# CONFIG_MIPS_XXS1500 is not set 23# CONFIG_MACH_VR41XX is not set
36# CONFIG_PNX8550_JBS is not set 24# CONFIG_PNX8550_JBS is not set
37# CONFIG_PNX8550_STB810 is not set 25# CONFIG_PNX8550_STB810 is not set
38# CONFIG_MACH_VR41XX is not set 26# CONFIG_PMC_MSP is not set
39# CONFIG_PMC_YOSEMITE is not set 27# CONFIG_PMC_YOSEMITE is not set
40# CONFIG_QEMU is not set 28# CONFIG_QEMU is not set
41# CONFIG_MARKEINS is not set
42CONFIG_SGI_IP22=y 29CONFIG_SGI_IP22=y
43# CONFIG_SGI_IP27 is not set 30# CONFIG_SGI_IP27 is not set
44# CONFIG_SGI_IP32 is not set 31# CONFIG_SGI_IP32 is not set
45# CONFIG_SIBYTE_BIGSUR is not set 32# CONFIG_SIBYTE_CRHINE is not set
33# CONFIG_SIBYTE_CARMEL is not set
34# CONFIG_SIBYTE_CRHONE is not set
35# CONFIG_SIBYTE_RHONE is not set
46# CONFIG_SIBYTE_SWARM is not set 36# CONFIG_SIBYTE_SWARM is not set
37# CONFIG_SIBYTE_LITTLESUR is not set
47# CONFIG_SIBYTE_SENTOSA is not set 38# CONFIG_SIBYTE_SENTOSA is not set
48# CONFIG_SIBYTE_RHONE is not set
49# CONFIG_SIBYTE_CARMEL is not set
50# CONFIG_SIBYTE_PTSWARM is not set 39# CONFIG_SIBYTE_PTSWARM is not set
51# CONFIG_SIBYTE_LITTLESUR is not set 40# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_CRHINE is not set
53# CONFIG_SIBYTE_CRHONE is not set
54# CONFIG_SNI_RM is not set 41# CONFIG_SNI_RM is not set
55# CONFIG_TOSHIBA_JMR3927 is not set 42# CONFIG_TOSHIBA_JMR3927 is not set
56# CONFIG_TOSHIBA_RBTX4927 is not set 43# CONFIG_TOSHIBA_RBTX4927 is not set
57# CONFIG_TOSHIBA_RBTX4938 is not set 44# CONFIG_TOSHIBA_RBTX4938 is not set
45# CONFIG_WR_PPMC is not set
58CONFIG_RWSEM_GENERIC_SPINLOCK=y 46CONFIG_RWSEM_GENERIC_SPINLOCK=y
59# CONFIG_ARCH_HAS_ILOG2_U32 is not set 47# CONFIG_ARCH_HAS_ILOG2_U32 is not set
60# CONFIG_ARCH_HAS_ILOG2_U64 is not set 48# CONFIG_ARCH_HAS_ILOG2_U64 is not set
@@ -67,6 +55,9 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
67CONFIG_ARC=y 55CONFIG_ARC=y
68CONFIG_DMA_NONCOHERENT=y 56CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 57CONFIG_DMA_NEED_PCI_MAP_STATE=y
58CONFIG_EARLY_PRINTK=y
59CONFIG_SYS_HAS_EARLY_PRINTK=y
60# CONFIG_NO_IOPORT is not set
70CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y 61CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y
71CONFIG_CPU_BIG_ENDIAN=y 62CONFIG_CPU_BIG_ENDIAN=y
72# CONFIG_CPU_LITTLE_ENDIAN is not set 63# CONFIG_CPU_LITTLE_ENDIAN is not set
@@ -82,6 +73,7 @@ CONFIG_ARC_PROMLIB=y
82# 73#
83# CPU selection 74# CPU selection
84# 75#
76# CONFIG_CPU_LOONGSON2 is not set
85# CONFIG_CPU_MIPS32_R1 is not set 77# CONFIG_CPU_MIPS32_R1 is not set
86# CONFIG_CPU_MIPS32_R2 is not set 78# CONFIG_CPU_MIPS32_R2 is not set
87# CONFIG_CPU_MIPS64_R1 is not set 79# CONFIG_CPU_MIPS64_R1 is not set
@@ -122,8 +114,6 @@ CONFIG_IP22_CPU_SCACHE=y
122CONFIG_MIPS_MT_DISABLED=y 114CONFIG_MIPS_MT_DISABLED=y
123# CONFIG_MIPS_MT_SMP is not set 115# CONFIG_MIPS_MT_SMP is not set
124# CONFIG_MIPS_MT_SMTC is not set 116# CONFIG_MIPS_MT_SMTC is not set
125# CONFIG_MIPS_VPE_LOADER is not set
126# CONFIG_64BIT_PHYS_ADDR is not set
127CONFIG_CPU_HAS_LLSC=y 117CONFIG_CPU_HAS_LLSC=y
128CONFIG_CPU_HAS_SYNC=y 118CONFIG_CPU_HAS_SYNC=y
129CONFIG_GENERIC_HARDIRQS=y 119CONFIG_GENERIC_HARDIRQS=y
@@ -139,6 +129,8 @@ CONFIG_FLAT_NODE_MEM_MAP=y
139CONFIG_SPLIT_PTLOCK_CPUS=4 129CONFIG_SPLIT_PTLOCK_CPUS=4
140# CONFIG_RESOURCES_64BIT is not set 130# CONFIG_RESOURCES_64BIT is not set
141CONFIG_ZONE_DMA_FLAG=1 131CONFIG_ZONE_DMA_FLAG=1
132CONFIG_BOUNCE=y
133CONFIG_VIRT_TO_BUS=y
142# CONFIG_HZ_48 is not set 134# CONFIG_HZ_48 is not set
143# CONFIG_HZ_100 is not set 135# CONFIG_HZ_100 is not set
144# CONFIG_HZ_128 is not set 136# CONFIG_HZ_128 is not set
@@ -152,35 +144,33 @@ CONFIG_HZ=1000
152CONFIG_PREEMPT_VOLUNTARY=y 144CONFIG_PREEMPT_VOLUNTARY=y
153# CONFIG_PREEMPT is not set 145# CONFIG_PREEMPT is not set
154# CONFIG_KEXEC is not set 146# CONFIG_KEXEC is not set
147CONFIG_SECCOMP=y
155CONFIG_LOCKDEP_SUPPORT=y 148CONFIG_LOCKDEP_SUPPORT=y
156CONFIG_STACKTRACE_SUPPORT=y 149CONFIG_STACKTRACE_SUPPORT=y
157CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 150CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
158 151
159# 152#
160# Code maturity level options 153# General setup
161# 154#
162CONFIG_EXPERIMENTAL=y 155CONFIG_EXPERIMENTAL=y
163CONFIG_BROKEN_ON_SMP=y 156CONFIG_BROKEN_ON_SMP=y
164CONFIG_INIT_ENV_ARG_LIMIT=32 157CONFIG_INIT_ENV_ARG_LIMIT=32
165
166#
167# General setup
168#
169CONFIG_LOCALVERSION="" 158CONFIG_LOCALVERSION=""
170CONFIG_LOCALVERSION_AUTO=y 159CONFIG_LOCALVERSION_AUTO=y
171CONFIG_SWAP=y 160CONFIG_SWAP=y
172CONFIG_SYSVIPC=y 161CONFIG_SYSVIPC=y
173# CONFIG_IPC_NS is not set
174CONFIG_SYSVIPC_SYSCTL=y 162CONFIG_SYSVIPC_SYSCTL=y
175# CONFIG_POSIX_MQUEUE is not set 163# CONFIG_POSIX_MQUEUE is not set
176# CONFIG_BSD_PROCESS_ACCT is not set 164# CONFIG_BSD_PROCESS_ACCT is not set
177# CONFIG_TASKSTATS is not set 165# CONFIG_TASKSTATS is not set
178# CONFIG_UTS_NS is not set 166# CONFIG_USER_NS is not set
179# CONFIG_AUDIT is not set 167# CONFIG_AUDIT is not set
180CONFIG_IKCONFIG=y 168CONFIG_IKCONFIG=y
181CONFIG_IKCONFIG_PROC=y 169CONFIG_IKCONFIG_PROC=y
170CONFIG_LOG_BUF_SHIFT=14
182CONFIG_SYSFS_DEPRECATED=y 171CONFIG_SYSFS_DEPRECATED=y
183CONFIG_RELAY=y 172CONFIG_RELAY=y
173# CONFIG_BLK_DEV_INITRD is not set
184# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 174# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
185CONFIG_SYSCTL=y 175CONFIG_SYSCTL=y
186CONFIG_EMBEDDED=y 176CONFIG_EMBEDDED=y
@@ -193,32 +183,30 @@ CONFIG_BUG=y
193CONFIG_ELF_CORE=y 183CONFIG_ELF_CORE=y
194CONFIG_BASE_FULL=y 184CONFIG_BASE_FULL=y
195CONFIG_FUTEX=y 185CONFIG_FUTEX=y
186CONFIG_ANON_INODES=y
196CONFIG_EPOLL=y 187CONFIG_EPOLL=y
188CONFIG_SIGNALFD=y
189CONFIG_TIMERFD=y
190CONFIG_EVENTFD=y
197CONFIG_SHMEM=y 191CONFIG_SHMEM=y
198CONFIG_SLAB=y
199CONFIG_VM_EVENT_COUNTERS=y 192CONFIG_VM_EVENT_COUNTERS=y
193CONFIG_SLAB=y
194# CONFIG_SLUB is not set
195# CONFIG_SLOB is not set
200CONFIG_RT_MUTEXES=y 196CONFIG_RT_MUTEXES=y
201# CONFIG_TINY_SHMEM is not set 197# CONFIG_TINY_SHMEM is not set
202CONFIG_BASE_SMALL=0 198CONFIG_BASE_SMALL=0
203# CONFIG_SLOB is not set
204
205#
206# Loadable module support
207#
208CONFIG_MODULES=y 199CONFIG_MODULES=y
209CONFIG_MODULE_UNLOAD=y 200CONFIG_MODULE_UNLOAD=y
210# CONFIG_MODULE_FORCE_UNLOAD is not set 201# CONFIG_MODULE_FORCE_UNLOAD is not set
211CONFIG_MODVERSIONS=y 202CONFIG_MODVERSIONS=y
212CONFIG_MODULE_SRCVERSION_ALL=y 203CONFIG_MODULE_SRCVERSION_ALL=y
213CONFIG_KMOD=y 204CONFIG_KMOD=y
214
215#
216# Block layer
217#
218CONFIG_BLOCK=y 205CONFIG_BLOCK=y
219# CONFIG_LBD is not set 206# CONFIG_LBD is not set
220# CONFIG_BLK_DEV_IO_TRACE is not set 207# CONFIG_BLK_DEV_IO_TRACE is not set
221# CONFIG_LSF is not set 208# CONFIG_LSF is not set
209# CONFIG_BLK_DEV_BSG is not set
222 210
223# 211#
224# IO Schedulers 212# IO Schedulers
@@ -237,6 +225,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
237# Bus options (PCI, PCMCIA, EISA, ISA, TC) 225# Bus options (PCI, PCMCIA, EISA, ISA, TC)
238# 226#
239CONFIG_HW_HAS_EISA=y 227CONFIG_HW_HAS_EISA=y
228# CONFIG_ARCH_SUPPORTS_MSI is not set
240# CONFIG_EISA is not set 229# CONFIG_EISA is not set
241CONFIG_MMU=y 230CONFIG_MMU=y
242 231
@@ -245,10 +234,6 @@ CONFIG_MMU=y
245# 234#
246 235
247# 236#
248# PCI Hotplug Support
249#
250
251#
252# Executable file formats 237# Executable file formats
253# 238#
254CONFIG_BINFMT_ELF=y 239CONFIG_BINFMT_ELF=y
@@ -261,7 +246,7 @@ CONFIG_TRAD_SIGNALS=y
261CONFIG_PM=y 246CONFIG_PM=y
262# CONFIG_PM_LEGACY is not set 247# CONFIG_PM_LEGACY is not set
263# CONFIG_PM_DEBUG is not set 248# CONFIG_PM_DEBUG is not set
264# CONFIG_PM_SYSFS_DEPRECATED is not set 249# CONFIG_SUSPEND is not set
265 250
266# 251#
267# Networking 252# Networking
@@ -271,7 +256,6 @@ CONFIG_NET=y
271# 256#
272# Networking options 257# Networking options
273# 258#
274# CONFIG_NETDEBUG is not set
275CONFIG_PACKET=y 259CONFIG_PACKET=y
276CONFIG_PACKET_MMAP=y 260CONFIG_PACKET_MMAP=y
277CONFIG_UNIX=y 261CONFIG_UNIX=y
@@ -308,10 +292,6 @@ CONFIG_INET_TCP_DIAG=y
308CONFIG_TCP_CONG_CUBIC=y 292CONFIG_TCP_CONG_CUBIC=y
309CONFIG_DEFAULT_TCP_CONG="cubic" 293CONFIG_DEFAULT_TCP_CONG="cubic"
310CONFIG_TCP_MD5SIG=y 294CONFIG_TCP_MD5SIG=y
311
312#
313# IP: Virtual Server Configuration
314#
315CONFIG_IP_VS=m 295CONFIG_IP_VS=m
316# CONFIG_IP_VS_DEBUG is not set 296# CONFIG_IP_VS_DEBUG is not set
317CONFIG_IP_VS_TAB_BITS=12 297CONFIG_IP_VS_TAB_BITS=12
@@ -346,10 +326,11 @@ CONFIG_IPV6=m
346CONFIG_IPV6_PRIVACY=y 326CONFIG_IPV6_PRIVACY=y
347CONFIG_IPV6_ROUTER_PREF=y 327CONFIG_IPV6_ROUTER_PREF=y
348CONFIG_IPV6_ROUTE_INFO=y 328CONFIG_IPV6_ROUTE_INFO=y
329CONFIG_IPV6_OPTIMISTIC_DAD=y
349CONFIG_INET6_AH=m 330CONFIG_INET6_AH=m
350CONFIG_INET6_ESP=m 331CONFIG_INET6_ESP=m
351CONFIG_INET6_IPCOMP=m 332CONFIG_INET6_IPCOMP=m
352CONFIG_IPV6_MIP6=y 333CONFIG_IPV6_MIP6=m
353CONFIG_INET6_XFRM_TUNNEL=m 334CONFIG_INET6_XFRM_TUNNEL=m
354CONFIG_INET6_TUNNEL=m 335CONFIG_INET6_TUNNEL=m
355CONFIG_INET6_XFRM_MODE_TRANSPORT=m 336CONFIG_INET6_XFRM_MODE_TRANSPORT=m
@@ -371,8 +352,6 @@ CONFIG_NETFILTER_NETLINK=m
371CONFIG_NETFILTER_NETLINK_QUEUE=m 352CONFIG_NETFILTER_NETLINK_QUEUE=m
372CONFIG_NETFILTER_NETLINK_LOG=m 353CONFIG_NETFILTER_NETLINK_LOG=m
373CONFIG_NF_CONNTRACK_ENABLED=m 354CONFIG_NF_CONNTRACK_ENABLED=m
374CONFIG_NF_CONNTRACK_SUPPORT=y
375# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
376CONFIG_NF_CONNTRACK=m 355CONFIG_NF_CONNTRACK=m
377CONFIG_NF_CT_ACCT=y 356CONFIG_NF_CT_ACCT=y
378CONFIG_NF_CONNTRACK_MARK=y 357CONFIG_NF_CONNTRACK_MARK=y
@@ -380,6 +359,7 @@ CONFIG_NF_CONNTRACK_SECMARK=y
380CONFIG_NF_CONNTRACK_EVENTS=y 359CONFIG_NF_CONNTRACK_EVENTS=y
381CONFIG_NF_CT_PROTO_GRE=m 360CONFIG_NF_CT_PROTO_GRE=m
382CONFIG_NF_CT_PROTO_SCTP=m 361CONFIG_NF_CT_PROTO_SCTP=m
362CONFIG_NF_CT_PROTO_UDPLITE=m
383CONFIG_NF_CONNTRACK_AMANDA=m 363CONFIG_NF_CONNTRACK_AMANDA=m
384CONFIG_NF_CONNTRACK_FTP=m 364CONFIG_NF_CONNTRACK_FTP=m
385CONFIG_NF_CONNTRACK_H323=m 365CONFIG_NF_CONNTRACK_H323=m
@@ -398,11 +378,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
398CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 378CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
399CONFIG_NETFILTER_XT_TARGET_NFLOG=m 379CONFIG_NETFILTER_XT_TARGET_NFLOG=m
400CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 380CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
381CONFIG_NETFILTER_XT_TARGET_TRACE=m
401CONFIG_NETFILTER_XT_TARGET_SECMARK=m 382CONFIG_NETFILTER_XT_TARGET_SECMARK=m
402CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m 383CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
403CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 384CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
404CONFIG_NETFILTER_XT_MATCH_COMMENT=m 385CONFIG_NETFILTER_XT_MATCH_COMMENT=m
405CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 386CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
387CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
406CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 388CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
407CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 389CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
408CONFIG_NETFILTER_XT_MATCH_DCCP=m 390CONFIG_NETFILTER_XT_MATCH_DCCP=m
@@ -423,6 +405,7 @@ CONFIG_NETFILTER_XT_MATCH_STATE=m
423CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 405CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
424CONFIG_NETFILTER_XT_MATCH_STRING=m 406CONFIG_NETFILTER_XT_MATCH_STRING=m
425CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 407CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
408CONFIG_NETFILTER_XT_MATCH_U32=m
426CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 409CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
427 410
428# 411#
@@ -490,25 +473,13 @@ CONFIG_IP6_NF_TARGET_REJECT=m
490CONFIG_IP6_NF_MANGLE=m 473CONFIG_IP6_NF_MANGLE=m
491CONFIG_IP6_NF_TARGET_HL=m 474CONFIG_IP6_NF_TARGET_HL=m
492CONFIG_IP6_NF_RAW=m 475CONFIG_IP6_NF_RAW=m
493
494#
495# DCCP Configuration (EXPERIMENTAL)
496#
497# CONFIG_IP_DCCP is not set 476# CONFIG_IP_DCCP is not set
498
499#
500# SCTP Configuration (EXPERIMENTAL)
501#
502CONFIG_IP_SCTP=m 477CONFIG_IP_SCTP=m
503# CONFIG_SCTP_DBG_MSG is not set 478# CONFIG_SCTP_DBG_MSG is not set
504# CONFIG_SCTP_DBG_OBJCNT is not set 479# CONFIG_SCTP_DBG_OBJCNT is not set
505# CONFIG_SCTP_HMAC_NONE is not set 480# CONFIG_SCTP_HMAC_NONE is not set
506# CONFIG_SCTP_HMAC_SHA1 is not set 481# CONFIG_SCTP_HMAC_SHA1 is not set
507CONFIG_SCTP_HMAC_MD5=y 482CONFIG_SCTP_HMAC_MD5=y
508
509#
510# TIPC Configuration (EXPERIMENTAL)
511#
512# CONFIG_TIPC is not set 483# CONFIG_TIPC is not set
513# CONFIG_ATM is not set 484# CONFIG_ATM is not set
514# CONFIG_BRIDGE is not set 485# CONFIG_BRIDGE is not set
@@ -527,9 +498,6 @@ CONFIG_SCTP_HMAC_MD5=y
527# 498#
528CONFIG_NET_SCHED=y 499CONFIG_NET_SCHED=y
529CONFIG_NET_SCH_FIFO=y 500CONFIG_NET_SCH_FIFO=y
530# CONFIG_NET_SCH_CLK_JIFFIES is not set
531CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
532# CONFIG_NET_SCH_CLK_CPU is not set
533 501
534# 502#
535# Queueing/Scheduling 503# Queueing/Scheduling
@@ -538,6 +506,7 @@ CONFIG_NET_SCH_CBQ=m
538CONFIG_NET_SCH_HTB=m 506CONFIG_NET_SCH_HTB=m
539CONFIG_NET_SCH_HFSC=m 507CONFIG_NET_SCH_HFSC=m
540CONFIG_NET_SCH_PRIO=m 508CONFIG_NET_SCH_PRIO=m
509CONFIG_NET_SCH_RR=m
541CONFIG_NET_SCH_RED=m 510CONFIG_NET_SCH_RED=m
542CONFIG_NET_SCH_SFQ=m 511CONFIG_NET_SCH_SFQ=m
543CONFIG_NET_SCH_TEQL=m 512CONFIG_NET_SCH_TEQL=m
@@ -562,10 +531,16 @@ CONFIG_NET_CLS_U32=m
562CONFIG_NET_CLS_RSVP=m 531CONFIG_NET_CLS_RSVP=m
563CONFIG_NET_CLS_RSVP6=m 532CONFIG_NET_CLS_RSVP6=m
564# CONFIG_NET_EMATCH is not set 533# CONFIG_NET_EMATCH is not set
565# CONFIG_NET_CLS_ACT is not set 534CONFIG_NET_CLS_ACT=y
535CONFIG_NET_ACT_POLICE=y
536CONFIG_NET_ACT_GACT=m
537CONFIG_GACT_PROB=y
538CONFIG_NET_ACT_MIRRED=m
539CONFIG_NET_ACT_IPT=m
540CONFIG_NET_ACT_PEDIT=m
541CONFIG_NET_ACT_SIMP=m
566CONFIG_NET_CLS_POLICE=y 542CONFIG_NET_CLS_POLICE=y
567# CONFIG_NET_CLS_IND is not set 543# CONFIG_NET_CLS_IND is not set
568CONFIG_NET_ESTIMATOR=y
569 544
570# 545#
571# Network testing 546# Network testing
@@ -574,14 +549,26 @@ CONFIG_NET_ESTIMATOR=y
574# CONFIG_HAMRADIO is not set 549# CONFIG_HAMRADIO is not set
575# CONFIG_IRDA is not set 550# CONFIG_IRDA is not set
576# CONFIG_BT is not set 551# CONFIG_BT is not set
552# CONFIG_AF_RXRPC is not set
553CONFIG_FIB_RULES=y
554
555#
556# Wireless
557#
558CONFIG_CFG80211=m
559CONFIG_WIRELESS_EXT=y
560CONFIG_MAC80211=m
561# CONFIG_MAC80211_DEBUG is not set
577CONFIG_IEEE80211=m 562CONFIG_IEEE80211=m
578# CONFIG_IEEE80211_DEBUG is not set 563# CONFIG_IEEE80211_DEBUG is not set
579CONFIG_IEEE80211_CRYPT_WEP=m 564CONFIG_IEEE80211_CRYPT_WEP=m
580CONFIG_IEEE80211_CRYPT_CCMP=m 565CONFIG_IEEE80211_CRYPT_CCMP=m
566CONFIG_IEEE80211_CRYPT_TKIP=m
581CONFIG_IEEE80211_SOFTMAC=m 567CONFIG_IEEE80211_SOFTMAC=m
582# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 568# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
583CONFIG_WIRELESS_EXT=y 569CONFIG_RFKILL=m
584CONFIG_FIB_RULES=y 570CONFIG_RFKILL_INPUT=m
571# CONFIG_NET_9P is not set
585 572
586# 573#
587# Device Drivers 574# Device Drivers
@@ -593,47 +580,19 @@ CONFIG_FIB_RULES=y
593CONFIG_STANDALONE=y 580CONFIG_STANDALONE=y
594CONFIG_PREVENT_FIRMWARE_BUILD=y 581CONFIG_PREVENT_FIRMWARE_BUILD=y
595# CONFIG_SYS_HYPERVISOR is not set 582# CONFIG_SYS_HYPERVISOR is not set
596
597#
598# Connector - unified userspace <-> kernelspace linker
599#
600CONFIG_CONNECTOR=m 583CONFIG_CONNECTOR=m
601
602#
603# Memory Technology Devices (MTD)
604#
605# CONFIG_MTD is not set 584# CONFIG_MTD is not set
606
607#
608# Parallel port support
609#
610# CONFIG_PARPORT is not set 585# CONFIG_PARPORT is not set
611 586CONFIG_BLK_DEV=y
612#
613# Plug and Play support
614#
615# CONFIG_PNPACPI is not set
616
617#
618# Block devices
619#
620# CONFIG_BLK_DEV_COW_COMMON is not set 587# CONFIG_BLK_DEV_COW_COMMON is not set
621# CONFIG_BLK_DEV_LOOP is not set 588# CONFIG_BLK_DEV_LOOP is not set
622# CONFIG_BLK_DEV_NBD is not set 589# CONFIG_BLK_DEV_NBD is not set
623# CONFIG_BLK_DEV_RAM is not set 590# CONFIG_BLK_DEV_RAM is not set
624# CONFIG_BLK_DEV_INITRD is not set
625CONFIG_CDROM_PKTCDVD=m 591CONFIG_CDROM_PKTCDVD=m
626CONFIG_CDROM_PKTCDVD_BUFFERS=8 592CONFIG_CDROM_PKTCDVD_BUFFERS=8
627# CONFIG_CDROM_PKTCDVD_WCACHE is not set 593# CONFIG_CDROM_PKTCDVD_WCACHE is not set
628CONFIG_ATA_OVER_ETH=m 594CONFIG_ATA_OVER_ETH=m
629 595# CONFIG_MISC_DEVICES is not set
630#
631# Misc devices
632#
633
634#
635# ATA/ATAPI/MFM/RLL support
636#
637# CONFIG_IDE is not set 596# CONFIG_IDE is not set
638 597
639# 598#
@@ -641,6 +600,7 @@ CONFIG_ATA_OVER_ETH=m
641# 600#
642CONFIG_RAID_ATTRS=m 601CONFIG_RAID_ATTRS=m
643CONFIG_SCSI=y 602CONFIG_SCSI=y
603CONFIG_SCSI_DMA=y
644CONFIG_SCSI_TGT=m 604CONFIG_SCSI_TGT=m
645# CONFIG_SCSI_NETLINK is not set 605# CONFIG_SCSI_NETLINK is not set
646CONFIG_SCSI_PROC_FS=y 606CONFIG_SCSI_PROC_FS=y
@@ -663,6 +623,7 @@ CONFIG_CHR_DEV_SCH=m
663CONFIG_SCSI_CONSTANTS=y 623CONFIG_SCSI_CONSTANTS=y
664# CONFIG_SCSI_LOGGING is not set 624# CONFIG_SCSI_LOGGING is not set
665CONFIG_SCSI_SCAN_ASYNC=y 625CONFIG_SCSI_SCAN_ASYNC=y
626CONFIG_SCSI_WAIT_SCAN=m
666 627
667# 628#
668# SCSI Transports 629# SCSI Transports
@@ -670,51 +631,21 @@ CONFIG_SCSI_SCAN_ASYNC=y
670CONFIG_SCSI_SPI_ATTRS=m 631CONFIG_SCSI_SPI_ATTRS=m
671# CONFIG_SCSI_FC_ATTRS is not set 632# CONFIG_SCSI_FC_ATTRS is not set
672CONFIG_SCSI_ISCSI_ATTRS=m 633CONFIG_SCSI_ISCSI_ATTRS=m
673CONFIG_SCSI_SAS_ATTRS=m
674# CONFIG_SCSI_SAS_LIBSAS is not set 634# CONFIG_SCSI_SAS_LIBSAS is not set
675 635CONFIG_SCSI_LOWLEVEL=y
676#
677# SCSI low-level drivers
678#
679CONFIG_ISCSI_TCP=m 636CONFIG_ISCSI_TCP=m
680CONFIG_SGIWD93_SCSI=y 637CONFIG_SGIWD93_SCSI=y
681# CONFIG_SCSI_DEBUG is not set 638# CONFIG_SCSI_DEBUG is not set
682
683#
684# Serial ATA (prod) and Parallel ATA (experimental) drivers
685#
686# CONFIG_ATA is not set 639# CONFIG_ATA is not set
687
688#
689# Multi-device support (RAID and LVM)
690#
691# CONFIG_MD is not set 640# CONFIG_MD is not set
692
693#
694# Fusion MPT device support
695#
696# CONFIG_FUSION is not set
697
698#
699# IEEE 1394 (FireWire) support
700#
701
702#
703# I2O device support
704#
705
706#
707# Network device support
708#
709CONFIG_NETDEVICES=y 641CONFIG_NETDEVICES=y
642# CONFIG_NETDEVICES_MULTIQUEUE is not set
643# CONFIG_IFB is not set
710CONFIG_DUMMY=m 644CONFIG_DUMMY=m
711CONFIG_BONDING=m 645CONFIG_BONDING=m
646CONFIG_MACVLAN=m
712CONFIG_EQUALIZER=m 647CONFIG_EQUALIZER=m
713CONFIG_TUN=m 648CONFIG_TUN=m
714
715#
716# PHY device support
717#
718CONFIG_PHYLIB=m 649CONFIG_PHYLIB=m
719 650
720# 651#
@@ -728,36 +659,25 @@ CONFIG_CICADA_PHY=m
728# CONFIG_VITESSE_PHY is not set 659# CONFIG_VITESSE_PHY is not set
729# CONFIG_SMSC_PHY is not set 660# CONFIG_SMSC_PHY is not set
730# CONFIG_BROADCOM_PHY is not set 661# CONFIG_BROADCOM_PHY is not set
662# CONFIG_ICPLUS_PHY is not set
731# CONFIG_FIXED_PHY is not set 663# CONFIG_FIXED_PHY is not set
732
733#
734# Ethernet (10 or 100Mbit)
735#
736CONFIG_NET_ETHERNET=y 664CONFIG_NET_ETHERNET=y
737# CONFIG_MII is not set 665# CONFIG_MII is not set
666# CONFIG_AX88796 is not set
738# CONFIG_DM9000 is not set 667# CONFIG_DM9000 is not set
739CONFIG_SGISEEQ=y 668CONFIG_SGISEEQ=y
669# CONFIG_NETDEV_1000 is not set
670# CONFIG_NETDEV_10000 is not set
740 671
741# 672#
742# Ethernet (1000 Mbit) 673# Wireless LAN
743#
744
745#
746# Ethernet (10000 Mbit)
747#
748
749#
750# Token Ring devices
751#
752
753#
754# Wireless LAN (non-hamradio)
755#
756# CONFIG_NET_RADIO is not set
757
758#
759# Wan interfaces
760# 674#
675CONFIG_WLAN_PRE80211=y
676CONFIG_STRIP=m
677CONFIG_WLAN_80211=y
678# CONFIG_LIBERTAS is not set
679CONFIG_HOSTAP=m
680# CONFIG_HOSTAP_FIRMWARE is not set
761# CONFIG_WAN is not set 681# CONFIG_WAN is not set
762# CONFIG_PPP is not set 682# CONFIG_PPP is not set
763# CONFIG_SLIP is not set 683# CONFIG_SLIP is not set
@@ -765,15 +685,7 @@ CONFIG_SGISEEQ=y
765# CONFIG_NETCONSOLE is not set 685# CONFIG_NETCONSOLE is not set
766# CONFIG_NETPOLL is not set 686# CONFIG_NETPOLL is not set
767# CONFIG_NET_POLL_CONTROLLER is not set 687# CONFIG_NET_POLL_CONTROLLER is not set
768
769#
770# ISDN subsystem
771#
772# CONFIG_ISDN is not set 688# CONFIG_ISDN is not set
773
774#
775# Telephony Support
776#
777# CONFIG_PHONE is not set 689# CONFIG_PHONE is not set
778 690
779# 691#
@@ -781,6 +693,7 @@ CONFIG_SGISEEQ=y
781# 693#
782CONFIG_INPUT=y 694CONFIG_INPUT=y
783# CONFIG_INPUT_FF_MEMLESS is not set 695# CONFIG_INPUT_FF_MEMLESS is not set
696# CONFIG_INPUT_POLLDEV is not set
784 697
785# 698#
786# Userland interfaces 699# Userland interfaces
@@ -806,9 +719,16 @@ CONFIG_KEYBOARD_ATKBD=y
806# CONFIG_KEYBOARD_STOWAWAY is not set 719# CONFIG_KEYBOARD_STOWAWAY is not set
807CONFIG_INPUT_MOUSE=y 720CONFIG_INPUT_MOUSE=y
808CONFIG_MOUSE_PS2=m 721CONFIG_MOUSE_PS2=m
722# CONFIG_MOUSE_PS2_ALPS is not set
723CONFIG_MOUSE_PS2_LOGIPS2PP=y
724# CONFIG_MOUSE_PS2_SYNAPTICS is not set
725# CONFIG_MOUSE_PS2_LIFEBOOK is not set
726CONFIG_MOUSE_PS2_TRACKPOINT=y
727# CONFIG_MOUSE_PS2_TOUCHKIT is not set
809CONFIG_MOUSE_SERIAL=m 728CONFIG_MOUSE_SERIAL=m
810# CONFIG_MOUSE_VSXXXAA is not set 729# CONFIG_MOUSE_VSXXXAA is not set
811# CONFIG_INPUT_JOYSTICK is not set 730# CONFIG_INPUT_JOYSTICK is not set
731# CONFIG_INPUT_TABLET is not set
812# CONFIG_INPUT_TOUCHSCREEN is not set 732# CONFIG_INPUT_TOUCHSCREEN is not set
813# CONFIG_INPUT_MISC is not set 733# CONFIG_INPUT_MISC is not set
814 734
@@ -844,15 +764,7 @@ CONFIG_SERIAL_CORE=m
844CONFIG_UNIX98_PTYS=y 764CONFIG_UNIX98_PTYS=y
845CONFIG_LEGACY_PTYS=y 765CONFIG_LEGACY_PTYS=y
846CONFIG_LEGACY_PTY_COUNT=256 766CONFIG_LEGACY_PTY_COUNT=256
847
848#
849# IPMI
850#
851# CONFIG_IPMI_HANDLER is not set 767# CONFIG_IPMI_HANDLER is not set
852
853#
854# Watchdog Cards
855#
856CONFIG_WATCHDOG=y 768CONFIG_WATCHDOG=y
857# CONFIG_WATCHDOG_NOWAYOUT is not set 769# CONFIG_WATCHDOG_NOWAYOUT is not set
858 770
@@ -864,20 +776,10 @@ CONFIG_INDYDOG=m
864# CONFIG_HW_RANDOM is not set 776# CONFIG_HW_RANDOM is not set
865# CONFIG_RTC is not set 777# CONFIG_RTC is not set
866CONFIG_SGI_DS1286=m 778CONFIG_SGI_DS1286=m
867# CONFIG_GEN_RTC is not set
868# CONFIG_DTLK is not set
869# CONFIG_R3964 is not set 779# CONFIG_R3964 is not set
870CONFIG_RAW_DRIVER=m 780CONFIG_RAW_DRIVER=m
871CONFIG_MAX_RAW_DEVS=256 781CONFIG_MAX_RAW_DEVS=256
872
873#
874# TPM devices
875#
876# CONFIG_TCG_TPM is not set 782# CONFIG_TCG_TPM is not set
877
878#
879# I2C support
880#
881# CONFIG_I2C is not set 783# CONFIG_I2C is not set
882 784
883# 785#
@@ -885,32 +787,33 @@ CONFIG_MAX_RAW_DEVS=256
885# 787#
886# CONFIG_SPI is not set 788# CONFIG_SPI is not set
887# CONFIG_SPI_MASTER is not set 789# CONFIG_SPI_MASTER is not set
888
889#
890# Dallas's 1-wire bus
891#
892# CONFIG_W1 is not set 790# CONFIG_W1 is not set
791# CONFIG_POWER_SUPPLY is not set
792# CONFIG_HWMON is not set
893 793
894# 794#
895# Hardware Monitoring support 795# Multifunction device drivers
896# 796#
897# CONFIG_HWMON is not set 797# CONFIG_MFD_SM501 is not set
898# CONFIG_HWMON_VID is not set
899 798
900# 799#
901# Multimedia devices 800# Multimedia devices
902# 801#
903# CONFIG_VIDEO_DEV is not set 802# CONFIG_VIDEO_DEV is not set
803# CONFIG_DVB_CORE is not set
804# CONFIG_DAB is not set
904 805
905# 806#
906# Digital Video Broadcasting Devices 807# Graphics support
907# 808#
908# CONFIG_DVB is not set 809# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
909 810
910# 811#
911# Graphics support 812# Display device support
912# 813#
913CONFIG_FIRMWARE_EDID=y 814# CONFIG_DISPLAY_SUPPORT is not set
815# CONFIG_VGASTATE is not set
816# CONFIG_VIDEO_OUTPUT_CONTROL is not set
914# CONFIG_FB is not set 817# CONFIG_FB is not set
915 818
916# 819#
@@ -920,31 +823,20 @@ CONFIG_FIRMWARE_EDID=y
920CONFIG_SGI_NEWPORT_CONSOLE=y 823CONFIG_SGI_NEWPORT_CONSOLE=y
921CONFIG_DUMMY_CONSOLE=y 824CONFIG_DUMMY_CONSOLE=y
922CONFIG_FONT_8x16=y 825CONFIG_FONT_8x16=y
923
924#
925# Logo configuration
926#
927CONFIG_LOGO=y 826CONFIG_LOGO=y
928# CONFIG_LOGO_LINUX_MONO is not set 827# CONFIG_LOGO_LINUX_MONO is not set
929# CONFIG_LOGO_LINUX_VGA16 is not set 828# CONFIG_LOGO_LINUX_VGA16 is not set
930# CONFIG_LOGO_LINUX_CLUT224 is not set 829# CONFIG_LOGO_LINUX_CLUT224 is not set
931CONFIG_LOGO_SGI_CLUT224=y 830CONFIG_LOGO_SGI_CLUT224=y
932# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
933 831
934# 832#
935# Sound 833# Sound
936# 834#
937# CONFIG_SOUND is not set 835# CONFIG_SOUND is not set
938 836CONFIG_HID_SUPPORT=y
939#
940# HID Devices
941#
942CONFIG_HID=y 837CONFIG_HID=y
943# CONFIG_HID_DEBUG is not set 838# CONFIG_HID_DEBUG is not set
944 839CONFIG_USB_SUPPORT=y
945#
946# USB support
947#
948# CONFIG_USB_ARCH_HAS_HCD is not set 840# CONFIG_USB_ARCH_HAS_HCD is not set
949# CONFIG_USB_ARCH_HAS_OHCI is not set 841# CONFIG_USB_ARCH_HAS_OHCI is not set
950# CONFIG_USB_ARCH_HAS_EHCI is not set 842# CONFIG_USB_ARCH_HAS_EHCI is not set
@@ -957,36 +849,8 @@ CONFIG_HID=y
957# USB Gadget Support 849# USB Gadget Support
958# 850#
959# CONFIG_USB_GADGET is not set 851# CONFIG_USB_GADGET is not set
960
961#
962# MMC/SD Card support
963#
964# CONFIG_MMC is not set 852# CONFIG_MMC is not set
965
966#
967# LED devices
968#
969# CONFIG_NEW_LEDS is not set 853# CONFIG_NEW_LEDS is not set
970
971#
972# LED drivers
973#
974
975#
976# LED Triggers
977#
978
979#
980# InfiniBand support
981#
982
983#
984# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
985#
986
987#
988# Real Time Clock
989#
990# CONFIG_RTC_CLASS is not set 854# CONFIG_RTC_CLASS is not set
991 855
992# 856#
@@ -1003,12 +867,9 @@ CONFIG_HID=y
1003# 867#
1004 868
1005# 869#
1006# Auxiliary Display support 870# Userspace I/O
1007#
1008
1009#
1010# Virtualization
1011# 871#
872# CONFIG_UIO is not set
1012 873
1013# 874#
1014# File systems 875# File systems
@@ -1121,6 +982,7 @@ CONFIG_NFS_ACL_SUPPORT=m
1121CONFIG_NFS_COMMON=y 982CONFIG_NFS_COMMON=y
1122CONFIG_SUNRPC=m 983CONFIG_SUNRPC=m
1123CONFIG_SUNRPC_GSS=m 984CONFIG_SUNRPC_GSS=m
985# CONFIG_SUNRPC_BIND34 is not set
1124CONFIG_RPCSEC_GSS_KRB5=m 986CONFIG_RPCSEC_GSS_KRB5=m
1125# CONFIG_RPCSEC_GSS_SPKM3 is not set 987# CONFIG_RPCSEC_GSS_SPKM3 is not set
1126CONFIG_SMB_FS=m 988CONFIG_SMB_FS=m
@@ -1136,7 +998,6 @@ CONFIG_CIFS=m
1136CONFIG_CODA_FS=m 998CONFIG_CODA_FS=m
1137# CONFIG_CODA_FS_OLD_API is not set 999# CONFIG_CODA_FS_OLD_API is not set
1138# CONFIG_AFS_FS is not set 1000# CONFIG_AFS_FS is not set
1139# CONFIG_9P_FS is not set
1140 1001
1141# 1002#
1142# Partition Types 1003# Partition Types
@@ -1158,6 +1019,7 @@ CONFIG_SGI_PARTITION=y
1158# CONFIG_SUN_PARTITION is not set 1019# CONFIG_SUN_PARTITION is not set
1159# CONFIG_KARMA_PARTITION is not set 1020# CONFIG_KARMA_PARTITION is not set
1160# CONFIG_EFI_PARTITION is not set 1021# CONFIG_EFI_PARTITION is not set
1022# CONFIG_SYSV68_PARTITION is not set
1161 1023
1162# 1024#
1163# Native Language Support 1025# Native Language Support
@@ -1207,8 +1069,6 @@ CONFIG_NLS_UTF8=m
1207# Distributed Lock Manager 1069# Distributed Lock Manager
1208# 1070#
1209CONFIG_DLM=m 1071CONFIG_DLM=m
1210CONFIG_DLM_TCP=y
1211# CONFIG_DLM_SCTP is not set
1212# CONFIG_DLM_DEBUG is not set 1072# CONFIG_DLM_DEBUG is not set
1213 1073
1214# 1074#
@@ -1227,7 +1087,6 @@ CONFIG_ENABLE_MUST_CHECK=y
1227# CONFIG_DEBUG_FS is not set 1087# CONFIG_DEBUG_FS is not set
1228# CONFIG_HEADERS_CHECK is not set 1088# CONFIG_HEADERS_CHECK is not set
1229# CONFIG_DEBUG_KERNEL is not set 1089# CONFIG_DEBUG_KERNEL is not set
1230CONFIG_LOG_BUF_SHIFT=14
1231CONFIG_CROSSCOMPILE=y 1090CONFIG_CROSSCOMPILE=y
1232CONFIG_CMDLINE="" 1091CONFIG_CMDLINE=""
1233 1092
@@ -1237,12 +1096,9 @@ CONFIG_CMDLINE=""
1237CONFIG_KEYS=y 1096CONFIG_KEYS=y
1238CONFIG_KEYS_DEBUG_PROC_KEYS=y 1097CONFIG_KEYS_DEBUG_PROC_KEYS=y
1239# CONFIG_SECURITY is not set 1098# CONFIG_SECURITY is not set
1240
1241#
1242# Cryptographic options
1243#
1244CONFIG_CRYPTO=y 1099CONFIG_CRYPTO=y
1245CONFIG_CRYPTO_ALGAPI=y 1100CONFIG_CRYPTO_ALGAPI=y
1101CONFIG_CRYPTO_ABLKCIPHER=m
1246CONFIG_CRYPTO_BLKCIPHER=m 1102CONFIG_CRYPTO_BLKCIPHER=m
1247CONFIG_CRYPTO_HASH=y 1103CONFIG_CRYPTO_HASH=y
1248CONFIG_CRYPTO_MANAGER=y 1104CONFIG_CRYPTO_MANAGER=y
@@ -1261,6 +1117,7 @@ CONFIG_CRYPTO_ECB=m
1261CONFIG_CRYPTO_CBC=m 1117CONFIG_CRYPTO_CBC=m
1262CONFIG_CRYPTO_PCBC=m 1118CONFIG_CRYPTO_PCBC=m
1263CONFIG_CRYPTO_LRW=m 1119CONFIG_CRYPTO_LRW=m
1120CONFIG_CRYPTO_CRYPTD=m
1264CONFIG_CRYPTO_DES=m 1121CONFIG_CRYPTO_DES=m
1265CONFIG_CRYPTO_FCRYPT=m 1122CONFIG_CRYPTO_FCRYPT=m
1266CONFIG_CRYPTO_BLOWFISH=m 1123CONFIG_CRYPTO_BLOWFISH=m
@@ -1279,10 +1136,7 @@ CONFIG_CRYPTO_MICHAEL_MIC=m
1279CONFIG_CRYPTO_CRC32C=m 1136CONFIG_CRYPTO_CRC32C=m
1280CONFIG_CRYPTO_CAMELLIA=m 1137CONFIG_CRYPTO_CAMELLIA=m
1281# CONFIG_CRYPTO_TEST is not set 1138# CONFIG_CRYPTO_TEST is not set
1282 1139# CONFIG_CRYPTO_HW is not set
1283#
1284# Hardware crypto devices
1285#
1286 1140
1287# 1141#
1288# Library routines 1142# Library routines
@@ -1290,7 +1144,9 @@ CONFIG_CRYPTO_CAMELLIA=m
1290CONFIG_BITREVERSE=m 1144CONFIG_BITREVERSE=m
1291# CONFIG_CRC_CCITT is not set 1145# CONFIG_CRC_CCITT is not set
1292CONFIG_CRC16=m 1146CONFIG_CRC16=m
1147# CONFIG_CRC_ITU_T is not set
1293CONFIG_CRC32=m 1148CONFIG_CRC32=m
1149# CONFIG_CRC7 is not set
1294CONFIG_LIBCRC32C=m 1150CONFIG_LIBCRC32C=m
1295CONFIG_ZLIB_INFLATE=m 1151CONFIG_ZLIB_INFLATE=m
1296CONFIG_ZLIB_DEFLATE=m 1152CONFIG_ZLIB_DEFLATE=m
@@ -1301,3 +1157,4 @@ CONFIG_TEXTSEARCH_FSM=m
1301CONFIG_PLIST=y 1157CONFIG_PLIST=y
1302CONFIG_HAS_IOMEM=y 1158CONFIG_HAS_IOMEM=y
1303CONFIG_HAS_IOPORT=y 1159CONFIG_HAS_IOPORT=y
1160CONFIG_HAS_DMA=y
diff --git a/arch/mips/jmr3927/rbhma3100/irq.c b/arch/mips/jmr3927/rbhma3100/irq.c
index 1187b44a3dd4..d9efe692e551 100644
--- a/arch/mips/jmr3927/rbhma3100/irq.c
+++ b/arch/mips/jmr3927/rbhma3100/irq.c
@@ -45,9 +45,6 @@
45#error JMR3927_IRQ_END > NR_IRQS 45#error JMR3927_IRQ_END > NR_IRQS
46#endif 46#endif
47 47
48#define irc_dlevel 0
49#define irc_elevel 1
50
51static unsigned char irc_level[TX3927_NUM_IR] = { 48static unsigned char irc_level[TX3927_NUM_IR] = {
52 5, 5, 5, 5, 5, 5, /* INT[5:0] */ 49 5, 5, 5, 5, 5, 5, /* INT[5:0] */
53 7, 7, /* SIO */ 50 7, 7, /* SIO */
@@ -80,34 +77,6 @@ static void unmask_irq_ioc(unsigned int irq)
80 (void)jmr3927_ioc_reg_in(JMR3927_IOC_REV_ADDR); 77 (void)jmr3927_ioc_reg_in(JMR3927_IOC_REV_ADDR);
81} 78}
82 79
83static void mask_irq_irc(unsigned int irq)
84{
85 unsigned int irq_nr = irq - JMR3927_IRQ_IRC;
86 volatile unsigned long *ilrp = &tx3927_ircptr->ilr[irq_nr / 2];
87 if (irq_nr & 1)
88 *ilrp = (*ilrp & 0x00ff) | (irc_dlevel << 8);
89 else
90 *ilrp = (*ilrp & 0xff00) | irc_dlevel;
91 /* update IRCSR */
92 tx3927_ircptr->imr = 0;
93 tx3927_ircptr->imr = irc_elevel;
94 /* flush write buffer */
95 (void)tx3927_ircptr->ssr;
96}
97
98static void unmask_irq_irc(unsigned int irq)
99{
100 unsigned int irq_nr = irq - JMR3927_IRQ_IRC;
101 volatile unsigned long *ilrp = &tx3927_ircptr->ilr[irq_nr / 2];
102 if (irq_nr & 1)
103 *ilrp = (*ilrp & 0x00ff) | (irc_level[irq_nr] << 8);
104 else
105 *ilrp = (*ilrp & 0xff00) | irc_level[irq_nr];
106 /* update IRCSR */
107 tx3927_ircptr->imr = 0;
108 tx3927_ircptr->imr = irc_elevel;
109}
110
111asmlinkage void plat_irq_dispatch(void) 80asmlinkage void plat_irq_dispatch(void)
112{ 81{
113 unsigned long cp0_cause = read_c0_cause(); 82 unsigned long cp0_cause = read_c0_cause();
@@ -168,10 +137,6 @@ void __init arch_init_irq(void)
168 /* clear PCI Reset interrupts */ 137 /* clear PCI Reset interrupts */
169 jmr3927_ioc_reg_out(0, JMR3927_IOC_RESET_ADDR); 138 jmr3927_ioc_reg_out(0, JMR3927_IOC_RESET_ADDR);
170 139
171 /* enable interrupt control */
172 tx3927_ircptr->cer = TX3927_IRCER_ICE;
173 tx3927_ircptr->imr = irc_elevel;
174
175 jmr3927_irq_init(); 140 jmr3927_irq_init();
176 141
177 /* setup IOC interrupt 1 (PCI, MODEM) */ 142 /* setup IOC interrupt 1 (PCI, MODEM) */
@@ -193,20 +158,13 @@ static struct irq_chip jmr3927_irq_ioc = {
193 .unmask = unmask_irq_ioc, 158 .unmask = unmask_irq_ioc,
194}; 159};
195 160
196static struct irq_chip jmr3927_irq_irc = {
197 .name = "jmr3927_irc",
198 .ack = mask_irq_irc,
199 .mask = mask_irq_irc,
200 .mask_ack = mask_irq_irc,
201 .unmask = unmask_irq_irc,
202};
203
204static void __init jmr3927_irq_init(void) 161static void __init jmr3927_irq_init(void)
205{ 162{
206 u32 i; 163 u32 i;
207 164
208 for (i = JMR3927_IRQ_IRC; i < JMR3927_IRQ_IRC + JMR3927_NR_IRQ_IRC; i++) 165 txx9_irq_init(TX3927_IRC_REG);
209 set_irq_chip_and_handler(i, &jmr3927_irq_irc, handle_level_irq); 166 for (i = 0; i < TXx9_MAX_IR; i++)
167 txx9_irq_set_pri(i, irc_level[i]);
210 for (i = JMR3927_IRQ_IOC; i < JMR3927_IRQ_IOC + JMR3927_NR_IRQ_IOC; i++) 168 for (i = JMR3927_IRQ_IOC; i < JMR3927_IRQ_IOC + JMR3927_NR_IRQ_IOC; i++)
211 set_irq_chip_and_handler(i, &jmr3927_irq_ioc, handle_level_irq); 169 set_irq_chip_and_handler(i, &jmr3927_irq_ioc, handle_level_irq);
212} 170}
diff --git a/arch/mips/jmr3927/rbhma3100/setup.c b/arch/mips/jmr3927/rbhma3100/setup.c
index 8303001516d2..fde56e86c2ab 100644
--- a/arch/mips/jmr3927/rbhma3100/setup.c
+++ b/arch/mips/jmr3927/rbhma3100/setup.c
@@ -290,19 +290,6 @@ static void __init tx3927_setup(void)
290 tx3927_ccfgptr->crir, 290 tx3927_ccfgptr->crir,
291 tx3927_ccfgptr->ccfg, tx3927_ccfgptr->pcfg); 291 tx3927_ccfgptr->ccfg, tx3927_ccfgptr->pcfg);
292 292
293 /* IRC */
294 /* disable interrupt control */
295 tx3927_ircptr->cer = 0;
296 /* mask all IRC interrupts */
297 tx3927_ircptr->imr = 0;
298 for (i = 0; i < TX3927_NUM_IR / 2; i++) {
299 tx3927_ircptr->ilr[i] = 0;
300 }
301 /* setup IRC interrupt mode (Low Active) */
302 for (i = 0; i < TX3927_NUM_IR / 8; i++) {
303 tx3927_ircptr->cr[i] = 0;
304 }
305
306 /* TMR */ 293 /* TMR */
307 /* disable all timers */ 294 /* disable all timers */
308 for (i = 0; i < TX3927_NR_TMR; i++) { 295 for (i = 0; i < TX3927_NR_TMR; i++) {
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile
index 07344cb37596..2fd96d95a39c 100644
--- a/arch/mips/kernel/Makefile
+++ b/arch/mips/kernel/Makefile
@@ -50,6 +50,7 @@ obj-$(CONFIG_IRQ_CPU) += irq_cpu.o
50obj-$(CONFIG_IRQ_CPU_RM7K) += irq-rm7000.o 50obj-$(CONFIG_IRQ_CPU_RM7K) += irq-rm7000.o
51obj-$(CONFIG_IRQ_CPU_RM9K) += irq-rm9000.o 51obj-$(CONFIG_IRQ_CPU_RM9K) += irq-rm9000.o
52obj-$(CONFIG_MIPS_BOARDS_GEN) += irq-msc01.o 52obj-$(CONFIG_MIPS_BOARDS_GEN) += irq-msc01.o
53obj-$(CONFIG_IRQ_TXX9) += irq_txx9.o
53 54
54obj-$(CONFIG_32BIT) += scall32-o32.o 55obj-$(CONFIG_32BIT) += scall32-o32.o
55obj-$(CONFIG_64BIT) += scall64-64.o 56obj-$(CONFIG_64BIT) += scall64-64.o
diff --git a/arch/mips/kernel/asm-offsets.c b/arch/mips/kernel/asm-offsets.c
index 013327286c26..ca136298acdc 100644
--- a/arch/mips/kernel/asm-offsets.c
+++ b/arch/mips/kernel/asm-offsets.c
@@ -232,6 +232,10 @@ void output_mm_defines(void)
232 constant("#define _PMD_T_LOG2 ", PMD_T_LOG2); 232 constant("#define _PMD_T_LOG2 ", PMD_T_LOG2);
233 constant("#define _PTE_T_LOG2 ", PTE_T_LOG2); 233 constant("#define _PTE_T_LOG2 ", PTE_T_LOG2);
234 linefeed; 234 linefeed;
235 constant("#define _PGD_ORDER ", PGD_ORDER);
236 constant("#define _PMD_ORDER ", PMD_ORDER);
237 constant("#define _PTE_ORDER ", PTE_ORDER);
238 linefeed;
235 constant("#define _PMD_SHIFT ", PMD_SHIFT); 239 constant("#define _PMD_SHIFT ", PMD_SHIFT);
236 constant("#define _PGDIR_SHIFT ", PGDIR_SHIFT); 240 constant("#define _PGDIR_SHIFT ", PGDIR_SHIFT);
237 linefeed; 241 linefeed;
diff --git a/arch/mips/kernel/cpu-bugs64.c b/arch/mips/kernel/cpu-bugs64.c
index c09337b947b9..ac04f0adc408 100644
--- a/arch/mips/kernel/cpu-bugs64.c
+++ b/arch/mips/kernel/cpu-bugs64.c
@@ -29,7 +29,7 @@ static inline void align_mod(const int align, const int mod)
29 ".endr\n\t" 29 ".endr\n\t"
30 ".set pop" 30 ".set pop"
31 : 31 :
32 : "n" (align), "n" (mod)); 32 : "rn" (align), "rn" (mod));
33} 33}
34 34
35static inline void mult_sh_align_mod(long *v1, long *v2, long *w, 35static inline void mult_sh_align_mod(long *v1, long *v2, long *w,
diff --git a/arch/mips/kernel/irixsig.c b/arch/mips/kernel/irixsig.c
index 6980deb6dced..28b2a8f00911 100644
--- a/arch/mips/kernel/irixsig.c
+++ b/arch/mips/kernel/irixsig.c
@@ -725,7 +725,7 @@ asmlinkage int irix_getcontext(struct pt_regs *regs)
725 current->comm, current->pid, ctx); 725 current->comm, current->pid, ctx);
726#endif 726#endif
727 727
728 if (!access_ok(VERIFY_WRITE, ctx, sizeof(*ctx))); 728 if (!access_ok(VERIFY_WRITE, ctx, sizeof(*ctx)))
729 return -EFAULT; 729 return -EFAULT;
730 730
731 error = __put_user(current->thread.irix_oldctx, &ctx->link); 731 error = __put_user(current->thread.irix_oldctx, &ctx->link);
diff --git a/arch/mips/kernel/irq_txx9.c b/arch/mips/kernel/irq_txx9.c
new file mode 100644
index 000000000000..a4d1462c27f7
--- /dev/null
+++ b/arch/mips/kernel/irq_txx9.c
@@ -0,0 +1,192 @@
1/*
2 * linux/arch/mips/kernel/irq_txx9.c
3 *
4 * Based on linux/arch/mips/jmr3927/rbhma3100/irq.c,
5 * linux/arch/mips/tx4927/common/tx4927_irq.c,
6 * linux/arch/mips/tx4938/common/irq.c
7 *
8 * Copyright 2001, 2003-2005 MontaVista Software Inc.
9 * Author: MontaVista Software, Inc.
10 * ahennessy@mvista.com
11 * source@mvista.com
12 * Copyright (C) 2000-2001 Toshiba Corporation
13 *
14 * This file is subject to the terms and conditions of the GNU General Public
15 * License. See the file "COPYING" in the main directory of this archive
16 * for more details.
17 */
18#include <linux/init.h>
19#include <linux/interrupt.h>
20#include <linux/types.h>
21#include <asm/txx9irq.h>
22
23struct txx9_irc_reg {
24 u32 cer;
25 u32 cr[2];
26 u32 unused0;
27 u32 ilr[8];
28 u32 unused1[4];
29 u32 imr;
30 u32 unused2[7];
31 u32 scr;
32 u32 unused3[7];
33 u32 ssr;
34 u32 unused4[7];
35 u32 csr;
36};
37
38/* IRCER : Int. Control Enable */
39#define TXx9_IRCER_ICE 0x00000001
40
41/* IRCR : Int. Control */
42#define TXx9_IRCR_LOW 0x00000000
43#define TXx9_IRCR_HIGH 0x00000001
44#define TXx9_IRCR_DOWN 0x00000002
45#define TXx9_IRCR_UP 0x00000003
46#define TXx9_IRCR_EDGE(cr) ((cr) & 0x00000002)
47
48/* IRSCR : Int. Status Control */
49#define TXx9_IRSCR_EIClrE 0x00000100
50#define TXx9_IRSCR_EIClr_MASK 0x0000000f
51
52/* IRCSR : Int. Current Status */
53#define TXx9_IRCSR_IF 0x00010000
54#define TXx9_IRCSR_ILV_MASK 0x00000700
55#define TXx9_IRCSR_IVL_MASK 0x0000001f
56
57#define irc_dlevel 0
58#define irc_elevel 1
59
60static struct txx9_irc_reg __iomem *txx9_ircptr __read_mostly;
61
62static struct {
63 unsigned char level;
64 unsigned char mode;
65} txx9irq[TXx9_MAX_IR] __read_mostly;
66
67static void txx9_irq_unmask(unsigned int irq)
68{
69 unsigned int irq_nr = irq - TXX9_IRQ_BASE;
70 u32 __iomem *ilrp = &txx9_ircptr->ilr[(irq_nr % 16 ) / 2];
71 int ofs = irq_nr / 16 * 16 + (irq_nr & 1) * 8;
72
73 __raw_writel((__raw_readl(ilrp) & ~(0xff << ofs))
74 | (txx9irq[irq_nr].level << ofs),
75 ilrp);
76#ifdef CONFIG_CPU_TX39XX
77 /* update IRCSR */
78 __raw_writel(0, &txx9_ircptr->imr);
79 __raw_writel(irc_elevel, &txx9_ircptr->imr);
80#endif
81}
82
83static inline void txx9_irq_mask(unsigned int irq)
84{
85 unsigned int irq_nr = irq - TXX9_IRQ_BASE;
86 u32 __iomem *ilrp = &txx9_ircptr->ilr[(irq_nr % 16) / 2];
87 int ofs = irq_nr / 16 * 16 + (irq_nr & 1) * 8;
88
89 __raw_writel((__raw_readl(ilrp) & ~(0xff << ofs))
90 | (irc_dlevel << ofs),
91 ilrp);
92#ifdef CONFIG_CPU_TX39XX
93 /* update IRCSR */
94 __raw_writel(0, &txx9_ircptr->imr);
95 __raw_writel(irc_elevel, &txx9_ircptr->imr);
96 /* flush write buffer */
97 __raw_readl(&txx9_ircptr->ssr);
98#else
99 mmiowb();
100#endif
101}
102
103static void txx9_irq_mask_ack(unsigned int irq)
104{
105 unsigned int irq_nr = irq - TXX9_IRQ_BASE;
106
107 txx9_irq_mask(irq);
108 /* clear edge detection */
109 if (unlikely(TXx9_IRCR_EDGE(txx9irq[irq_nr].mode)))
110 __raw_writel(TXx9_IRSCR_EIClrE | irq_nr, &txx9_ircptr->scr);
111}
112
113static int txx9_irq_set_type(unsigned int irq, unsigned int flow_type)
114{
115 unsigned int irq_nr = irq - TXX9_IRQ_BASE;
116 u32 cr;
117 u32 __iomem *crp;
118 int ofs;
119 int mode;
120
121 if (flow_type & IRQF_TRIGGER_PROBE)
122 return 0;
123 switch (flow_type & IRQF_TRIGGER_MASK) {
124 case IRQF_TRIGGER_RISING: mode = TXx9_IRCR_UP; break;
125 case IRQF_TRIGGER_FALLING: mode = TXx9_IRCR_DOWN; break;
126 case IRQF_TRIGGER_HIGH: mode = TXx9_IRCR_HIGH; break;
127 case IRQF_TRIGGER_LOW: mode = TXx9_IRCR_LOW; break;
128 default:
129 return -EINVAL;
130 }
131 crp = &txx9_ircptr->cr[(unsigned int)irq_nr / 8];
132 cr = __raw_readl(crp);
133 ofs = (irq_nr & (8 - 1)) * 2;
134 cr &= ~(0x3 << ofs);
135 cr |= (mode & 0x3) << ofs;
136 __raw_writel(cr, crp);
137 txx9irq[irq_nr].mode = mode;
138 return 0;
139}
140
141static struct irq_chip txx9_irq_chip = {
142 .name = "TXX9",
143 .ack = txx9_irq_mask_ack,
144 .mask = txx9_irq_mask,
145 .mask_ack = txx9_irq_mask_ack,
146 .unmask = txx9_irq_unmask,
147 .set_type = txx9_irq_set_type,
148};
149
150void __init txx9_irq_init(unsigned long baseaddr)
151{
152 int i;
153
154 txx9_ircptr = ioremap(baseaddr, sizeof(struct txx9_irc_reg));
155 for (i = 0; i < TXx9_MAX_IR; i++) {
156 txx9irq[i].level = 4; /* middle level */
157 txx9irq[i].mode = TXx9_IRCR_LOW;
158 set_irq_chip_and_handler(TXX9_IRQ_BASE + i,
159 &txx9_irq_chip, handle_level_irq);
160 }
161
162 /* mask all IRC interrupts */
163 __raw_writel(0, &txx9_ircptr->imr);
164 for (i = 0; i < 8; i++)
165 __raw_writel(0, &txx9_ircptr->ilr[i]);
166 /* setup IRC interrupt mode (Low Active) */
167 for (i = 0; i < 2; i++)
168 __raw_writel(0, &txx9_ircptr->cr[i]);
169 /* enable interrupt control */
170 __raw_writel(TXx9_IRCER_ICE, &txx9_ircptr->cer);
171 __raw_writel(irc_elevel, &txx9_ircptr->imr);
172}
173
174int __init txx9_irq_set_pri(int irc_irq, int new_pri)
175{
176 int old_pri;
177
178 if ((unsigned int)irc_irq >= TXx9_MAX_IR)
179 return 0;
180 old_pri = txx9irq[irc_irq].level;
181 txx9irq[irc_irq].level = new_pri;
182 return old_pri;
183}
184
185int txx9_irq(void)
186{
187 u32 csr = __raw_readl(&txx9_ircptr->csr);
188
189 if (likely(!(csr & TXx9_IRCSR_IF)))
190 return TXX9_IRQ_BASE + (csr & (TXx9_MAX_IR - 1));
191 return -1;
192}
diff --git a/arch/mips/kernel/machine_kexec.c b/arch/mips/kernel/machine_kexec.c
index 22960d67cf07..85beb9b0b2d0 100644
--- a/arch/mips/kernel/machine_kexec.c
+++ b/arch/mips/kernel/machine_kexec.c
@@ -78,11 +78,8 @@ machine_kexec(struct kimage *image)
78 */ 78 */
79 local_irq_disable(); 79 local_irq_disable();
80 80
81 flush_icache_range(reboot_code_buffer,
82 reboot_code_buffer + KEXEC_CONTROL_CODE_SIZE);
83
84 printk("Will call new kernel at %08lx\n", image->start); 81 printk("Will call new kernel at %08lx\n", image->start);
85 printk("Bye ...\n"); 82 printk("Bye ...\n");
86 flush_cache_all(); 83 __flush_cache_all();
87 ((noretfun_t) reboot_code_buffer)(); 84 ((noretfun_t) reboot_code_buffer)();
88} 85}
diff --git a/arch/mips/kernel/mips-mt.c b/arch/mips/kernel/mips-mt.c
index 7169a4db37b8..56750b02ab40 100644
--- a/arch/mips/kernel/mips-mt.c
+++ b/arch/mips/kernel/mips-mt.c
@@ -4,6 +4,7 @@
4 */ 4 */
5 5
6#include <linux/device.h> 6#include <linux/device.h>
7#include <linux/kallsyms.h>
7#include <linux/kernel.h> 8#include <linux/kernel.h>
8#include <linux/sched.h> 9#include <linux/sched.h>
9#include <linux/module.h> 10#include <linux/module.h>
@@ -84,8 +85,9 @@ void mips_mt_regdump(unsigned long mvpctl)
84 read_vpe_c0_vpeconf0()); 85 read_vpe_c0_vpeconf0());
85 printk(" VPE%d.Status : %08lx\n", 86 printk(" VPE%d.Status : %08lx\n",
86 i, read_vpe_c0_status()); 87 i, read_vpe_c0_status());
87 printk(" VPE%d.EPC : %08lx\n", 88 printk(" VPE%d.EPC : %08lx ",
88 i, read_vpe_c0_epc()); 89 i, read_vpe_c0_epc());
90 print_symbol("%s\n", read_vpe_c0_epc());
89 printk(" VPE%d.Cause : %08lx\n", 91 printk(" VPE%d.Cause : %08lx\n",
90 i, read_vpe_c0_cause()); 92 i, read_vpe_c0_cause());
91 printk(" VPE%d.Config7 : %08lx\n", 93 printk(" VPE%d.Config7 : %08lx\n",
@@ -110,7 +112,8 @@ void mips_mt_regdump(unsigned long mvpctl)
110 } 112 }
111 printk(" TCStatus : %08lx\n", tcstatval); 113 printk(" TCStatus : %08lx\n", tcstatval);
112 printk(" TCBind : %08lx\n", read_tc_c0_tcbind()); 114 printk(" TCBind : %08lx\n", read_tc_c0_tcbind());
113 printk(" TCRestart : %08lx\n", read_tc_c0_tcrestart()); 115 printk(" TCRestart : %08lx ", read_tc_c0_tcrestart());
116 print_symbol("%s\n", read_tc_c0_tcrestart());
114 printk(" TCHalt : %08lx\n", haltval); 117 printk(" TCHalt : %08lx\n", haltval);
115 printk(" TCContext : %08lx\n", read_tc_c0_tccontext()); 118 printk(" TCContext : %08lx\n", read_tc_c0_tccontext());
116 if (!haltval) 119 if (!haltval)
diff --git a/arch/mips/kernel/smp-mt.c b/arch/mips/kernel/smp-mt.c
index 19b30d6f1727..05dcce416325 100644
--- a/arch/mips/kernel/smp-mt.c
+++ b/arch/mips/kernel/smp-mt.c
@@ -287,7 +287,7 @@ void __init plat_prepare_cpus(unsigned int max_cpus)
287 * (unsigned long)idle->thread_info the gp 287 * (unsigned long)idle->thread_info the gp
288 * assumes a 1:1 mapping of TC => VPE 288 * assumes a 1:1 mapping of TC => VPE
289 */ 289 */
290void prom_boot_secondary(int cpu, struct task_struct *idle) 290void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
291{ 291{
292 struct thread_info *gp = task_thread_info(idle); 292 struct thread_info *gp = task_thread_info(idle);
293 dvpe(); 293 dvpe();
@@ -321,7 +321,7 @@ void prom_boot_secondary(int cpu, struct task_struct *idle)
321 evpe(EVPE_ENABLE); 321 evpe(EVPE_ENABLE);
322} 322}
323 323
324void prom_init_secondary(void) 324void __cpuinit prom_init_secondary(void)
325{ 325{
326 /* Enable per-cpu interrupts */ 326 /* Enable per-cpu interrupts */
327 327
@@ -330,7 +330,7 @@ void prom_init_secondary(void)
330 (STATUSF_IP0 | STATUSF_IP1 | STATUSF_IP6 | STATUSF_IP7)); 330 (STATUSF_IP0 | STATUSF_IP1 | STATUSF_IP6 | STATUSF_IP7));
331} 331}
332 332
333void prom_smp_finish(void) 333void __cpuinit prom_smp_finish(void)
334{ 334{
335 write_c0_compare(read_c0_count() + (8* mips_hpt_frequency/HZ)); 335 write_c0_compare(read_c0_count() + (8* mips_hpt_frequency/HZ));
336 336
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c
index 16aa5d37117c..43826c16101d 100644
--- a/arch/mips/kernel/smtc.c
+++ b/arch/mips/kernel/smtc.c
@@ -28,8 +28,6 @@
28 * This file should be built into the kernel only if CONFIG_MIPS_MT_SMTC is set. 28 * This file should be built into the kernel only if CONFIG_MIPS_MT_SMTC is set.
29 */ 29 */
30 30
31#define MIPS_CPU_IPI_IRQ 1
32
33#define LOCK_MT_PRA() \ 31#define LOCK_MT_PRA() \
34 local_irq_save(flags); \ 32 local_irq_save(flags); \
35 mtflags = dmt() 33 mtflags = dmt()
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index c8e291c83057..6379003f9d8d 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -606,6 +606,8 @@ asmlinkage void do_ov(struct pt_regs *regs)
606 */ 606 */
607asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31) 607asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31)
608{ 608{
609 siginfo_t info;
610
609 die_if_kernel("FP exception in kernel code", regs); 611 die_if_kernel("FP exception in kernel code", regs);
610 612
611 if (fcr31 & FPU_CSR_UNI_X) { 613 if (fcr31 & FPU_CSR_UNI_X) {
@@ -641,9 +643,22 @@ asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31)
641 force_sig(sig, current); 643 force_sig(sig, current);
642 644
643 return; 645 return;
644 } 646 } else if (fcr31 & FPU_CSR_INV_X)
645 647 info.si_code = FPE_FLTINV;
646 force_sig(SIGFPE, current); 648 else if (fcr31 & FPU_CSR_DIV_X)
649 info.si_code = FPE_FLTDIV;
650 else if (fcr31 & FPU_CSR_OVF_X)
651 info.si_code = FPE_FLTOVF;
652 else if (fcr31 & FPU_CSR_UDF_X)
653 info.si_code = FPE_FLTUND;
654 else if (fcr31 & FPU_CSR_INE_X)
655 info.si_code = FPE_FLTRES;
656 else
657 info.si_code = __SI_FAULT;
658 info.si_signo = SIGFPE;
659 info.si_errno = 0;
660 info.si_addr = (void __user *) regs->cp0_epc;
661 force_sig_info(SIGFPE, &info, current);
647} 662}
648 663
649asmlinkage void do_bp(struct pt_regs *regs) 664asmlinkage void do_bp(struct pt_regs *regs)
@@ -1035,19 +1050,11 @@ void ejtag_exception_handler(struct pt_regs *regs)
1035/* 1050/*
1036 * NMI exception handler. 1051 * NMI exception handler.
1037 */ 1052 */
1038void nmi_exception_handler(struct pt_regs *regs) 1053NORET_TYPE void ATTRIB_NORET nmi_exception_handler(struct pt_regs *regs)
1039{ 1054{
1040#ifdef CONFIG_MIPS_MT_SMTC
1041 unsigned long dvpret = dvpe();
1042 bust_spinlocks(1);
1043 printk("NMI taken!!!!\n");
1044 mips_mt_regdump(dvpret);
1045#else
1046 bust_spinlocks(1); 1055 bust_spinlocks(1);
1047 printk("NMI taken!!!!\n"); 1056 printk("NMI taken!!!!\n");
1048#endif /* CONFIG_MIPS_MT_SMTC */
1049 die("NMI", regs); 1057 die("NMI", regs);
1050 while(1) ;
1051} 1058}
1052 1059
1053#define VECTORSPACING 0x100 /* for EI/VI mode */ 1060#define VECTORSPACING 0x100 /* for EI/VI mode */
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
index bc9bae2a73f4..60bbaecde187 100644
--- a/arch/mips/kernel/vmlinux.lds.S
+++ b/arch/mips/kernel/vmlinux.lds.S
@@ -142,15 +142,16 @@ SECTIONS
142 *(.exitcall.exit) 142 *(.exitcall.exit)
143 143
144 /* ABI crap starts here */ 144 /* ABI crap starts here */
145 *(.comment)
146 *(.MIPS.options) 145 *(.MIPS.options)
147 *(.note)
148 *(.options) 146 *(.options)
149 *(.pdr) 147 *(.pdr)
150 *(.reginfo) 148 *(.reginfo)
151 *(.mdebug*)
152 } 149 }
153 150
151 /* These mark the ABI of the kernel for debuggers. */
152 .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
153 .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
154
154 /* This is the MIPS specific mdebug section. */ 155 /* This is the MIPS specific mdebug section. */
155 .mdebug : { *(.mdebug) } 156 .mdebug : { *(.mdebug) }
156 157
diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile
index 91ed1eb33102..8810dfb915dd 100644
--- a/arch/mips/lib/Makefile
+++ b/arch/mips/lib/Makefile
@@ -28,4 +28,4 @@ obj-$(CONFIG_CPU_TX49XX) += dump_tlb.o
28obj-$(CONFIG_CPU_VR41XX) += dump_tlb.o 28obj-$(CONFIG_CPU_VR41XX) += dump_tlb.o
29 29
30# libgcc-style stuff needed in the kernel 30# libgcc-style stuff needed in the kernel
31obj-y += ashldi3.o ashrdi3.o lshrdi3.o ucmpdi2.o 31obj-y += ashldi3.o ashrdi3.o cmpdi2.o lshrdi3.o ucmpdi2.o
diff --git a/arch/mips/lib/cmpdi2.c b/arch/mips/lib/cmpdi2.c
new file mode 100644
index 000000000000..8c1306437ed1
--- /dev/null
+++ b/arch/mips/lib/cmpdi2.c
@@ -0,0 +1,27 @@
1#include <linux/module.h>
2
3#include "libgcc.h"
4
5word_type __cmpdi2(long long a, long long b)
6{
7 const DWunion au = {
8 .ll = a
9 };
10 const DWunion bu = {
11 .ll = b
12 };
13
14 if (au.s.high < bu.s.high)
15 return 0;
16 else if (au.s.high > bu.s.high)
17 return 2;
18
19 if ((unsigned int) au.s.low < (unsigned int) bu.s.low)
20 return 0;
21 else if ((unsigned int) au.s.low > (unsigned int) bu.s.low)
22 return 2;
23
24 return 1;
25}
26
27EXPORT_SYMBOL(__cmpdi2);
diff --git a/arch/mips/mips-boards/malta/malta_smtc.c b/arch/mips/mips-boards/malta/malta_smtc.c
index 0fb4c269901c..ae05d058cb37 100644
--- a/arch/mips/mips-boards/malta/malta_smtc.c
+++ b/arch/mips/mips-boards/malta/malta_smtc.c
@@ -1,6 +1,7 @@
1/* 1/*
2 * Malta Platform-specific hooks for SMP operation 2 * Malta Platform-specific hooks for SMP operation
3 */ 3 */
4#include <linux/irq.h>
4#include <linux/init.h> 5#include <linux/init.h>
5 6
6#include <asm/mipsregs.h> 7#include <asm/mipsregs.h>
@@ -24,7 +25,7 @@ void core_send_ipi(int cpu, unsigned int action)
24 * Platform "CPU" startup hook 25 * Platform "CPU" startup hook
25 */ 26 */
26 27
27void prom_boot_secondary(int cpu, struct task_struct *idle) 28void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
28{ 29{
29 smtc_boot_secondary(cpu, idle); 30 smtc_boot_secondary(cpu, idle);
30} 31}
@@ -33,7 +34,7 @@ void prom_boot_secondary(int cpu, struct task_struct *idle)
33 * Post-config but pre-boot cleanup entry point 34 * Post-config but pre-boot cleanup entry point
34 */ 35 */
35 36
36void prom_init_secondary(void) 37void __cpuinit prom_init_secondary(void)
37{ 38{
38 void smtc_init_secondary(void); 39 void smtc_init_secondary(void);
39 int myvpe; 40 int myvpe;
@@ -42,10 +43,11 @@ void prom_init_secondary(void)
42 myvpe = read_c0_tcbind() & TCBIND_CURVPE; 43 myvpe = read_c0_tcbind() & TCBIND_CURVPE;
43 if (myvpe != 0) { 44 if (myvpe != 0) {
44 /* Ideally, this should be done only once per VPE, but... */ 45 /* Ideally, this should be done only once per VPE, but... */
45 clear_c0_status(STATUSF_IP2); 46 clear_c0_status(ST0_IM);
46 set_c0_status(STATUSF_IP0 | STATUSF_IP1 | STATUSF_IP3 47 set_c0_status((0x100 << cp0_compare_irq)
47 | STATUSF_IP4 | STATUSF_IP5 | STATUSF_IP6 48 | (0x100 << MIPS_CPU_IPI_IRQ));
48 | STATUSF_IP7); 49 if (cp0_perfcount_irq >= 0)
50 set_c0_status(0x100 << cp0_perfcount_irq);
49 } 51 }
50 52
51 smtc_init_secondary(); 53 smtc_init_secondary();
@@ -74,7 +76,7 @@ void __init plat_prepare_cpus(unsigned int max_cpus)
74 * SMP initialization finalization entry point 76 * SMP initialization finalization entry point
75 */ 77 */
76 78
77void prom_smp_finish(void) 79void __cpuinit prom_smp_finish(void)
78{ 80{
79 smtc_smp_finish(); 81 smtc_smp_finish();
80} 82}
diff --git a/arch/mips/mips-boards/sim/sim_int.c b/arch/mips/mips-boards/sim/sim_int.c
deleted file mode 100644
index 766e0159ee5b..000000000000
--- a/arch/mips/mips-boards/sim/sim_int.c
+++ /dev/null
@@ -1,88 +0,0 @@
1/*
2 * Copyright (C) 1999, 2005 MIPS Technologies, Inc. All rights reserved.
3 *
4 * This program is free software; you can distribute it and/or modify it
5 * under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 *
17 */
18#include <linux/init.h>
19#include <linux/sched.h>
20#include <linux/slab.h>
21#include <linux/interrupt.h>
22#include <linux/kernel_stat.h>
23#include <asm/mips-boards/simint.h>
24#include <asm/irq_cpu.h>
25
26static inline int clz(unsigned long x)
27{
28 __asm__ (
29 " .set push \n"
30 " .set mips32 \n"
31 " clz %0, %1 \n"
32 " .set pop \n"
33 : "=r" (x)
34 : "r" (x));
35
36 return x;
37}
38
39/*
40 * Version of ffs that only looks at bits 12..15.
41 */
42static inline unsigned int irq_ffs(unsigned int pending)
43{
44#if defined(CONFIG_CPU_MIPS32) || defined(CONFIG_CPU_MIPS64)
45 return -clz(pending) + 31 - CAUSEB_IP;
46#else
47 unsigned int a0 = 7;
48 unsigned int t0;
49
50 t0 = s0 & 0xf000;
51 t0 = t0 < 1;
52 t0 = t0 << 2;
53 a0 = a0 - t0;
54 s0 = s0 << t0;
55
56 t0 = s0 & 0xc000;
57 t0 = t0 < 1;
58 t0 = t0 << 1;
59 a0 = a0 - t0;
60 s0 = s0 << t0;
61
62 t0 = s0 & 0x8000;
63 t0 = t0 < 1;
64 //t0 = t0 << 2;
65 a0 = a0 - t0;
66 //s0 = s0 << t0;
67
68 return a0;
69#endif
70}
71
72asmlinkage void plat_irq_dispatch(void)
73{
74 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
75 int irq;
76
77 irq = irq_ffs(pending);
78
79 if (irq > 0)
80 do_IRQ(MIPS_CPU_IRQ_BASE + irq);
81 else
82 spurious_interrupt();
83}
84
85void __init arch_init_irq(void)
86{
87 mips_cpu_irq_init();
88}
diff --git a/arch/mips/mipssim/sim_smp.c b/arch/mips/mipssim/sim_smp.c
index 38fa807b99f9..ccbbccac23ef 100644
--- a/arch/mips/mipssim/sim_smp.c
+++ b/arch/mips/mipssim/sim_smp.c
@@ -53,7 +53,7 @@ void core_send_ipi(int cpu, unsigned int action)
53 * Platform "CPU" startup hook 53 * Platform "CPU" startup hook
54 */ 54 */
55 55
56void prom_boot_secondary(int cpu, struct task_struct *idle) 56void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
57{ 57{
58#ifdef CONFIG_MIPS_MT_SMTC 58#ifdef CONFIG_MIPS_MT_SMTC
59 smtc_boot_secondary(cpu, idle); 59 smtc_boot_secondary(cpu, idle);
@@ -64,7 +64,7 @@ void prom_boot_secondary(int cpu, struct task_struct *idle)
64 * Post-config but pre-boot cleanup entry point 64 * Post-config but pre-boot cleanup entry point
65 */ 65 */
66 66
67void prom_init_secondary(void) 67void __cpuinit prom_init_secondary(void)
68{ 68{
69#ifdef CONFIG_MIPS_MT_SMTC 69#ifdef CONFIG_MIPS_MT_SMTC
70 void smtc_init_secondary(void); 70 void smtc_init_secondary(void);
@@ -103,7 +103,7 @@ void plat_prepare_cpus(unsigned int max_cpus)
103 * SMP initialization finalization entry point 103 * SMP initialization finalization entry point
104 */ 104 */
105 105
106void prom_smp_finish(void) 106void __cpuinit prom_smp_finish(void)
107{ 107{
108#ifdef CONFIG_MIPS_MT_SMTC 108#ifdef CONFIG_MIPS_MT_SMTC
109 smtc_smp_finish(); 109 smtc_smp_finish();
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index b8cb0dde3af0..09d91505b90c 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -26,6 +26,7 @@
26#include <linux/proc_fs.h> 26#include <linux/proc_fs.h>
27#include <linux/pfn.h> 27#include <linux/pfn.h>
28 28
29#include <asm/asm-offsets.h>
29#include <asm/bootinfo.h> 30#include <asm/bootinfo.h>
30#include <asm/cachectl.h> 31#include <asm/cachectl.h>
31#include <asm/cpu.h> 32#include <asm/cpu.h>
@@ -498,7 +499,13 @@ unsigned long pgd_current[NR_CPUS];
498 * different layout ... 499 * different layout ...
499 */ 500 */
500#define __page_aligned(order) __attribute__((__aligned__(PAGE_SIZE<<order))) 501#define __page_aligned(order) __attribute__((__aligned__(PAGE_SIZE<<order)))
501pgd_t swapper_pg_dir[PTRS_PER_PGD] __page_aligned(PGD_ORDER); 502
503/*
504 * gcc 3.3 and older have trouble determining that PTRS_PER_PGD and PGD_ORDER
505 * are constants. So we use the variants from asm-offset.h until that gcc
506 * will officially be retired.
507 */
508pgd_t swapper_pg_dir[_PTRS_PER_PGD] __page_aligned(_PGD_ORDER);
502#ifdef CONFIG_64BIT 509#ifdef CONFIG_64BIT
503#ifdef MODULE_START 510#ifdef MODULE_START
504pgd_t module_pg_dir[PTRS_PER_PGD] __page_aligned(PGD_ORDER); 511pgd_t module_pg_dir[PTRS_PER_PGD] __page_aligned(PGD_ORDER);
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c
index 99d8f4fd3ff4..6c5c684d1422 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -75,7 +75,7 @@ pcibios_align_resource(void *data, struct resource *res,
75 res->start = start; 75 res->start = start;
76} 76}
77 77
78void __init register_pci_controller(struct pci_controller *hose) 78void __devinit register_pci_controller(struct pci_controller *hose)
79{ 79{
80 if (request_resource(&iomem_resource, hose->mem_resource) < 0) 80 if (request_resource(&iomem_resource, hose->mem_resource) < 0)
81 goto out; 81 goto out;
@@ -230,7 +230,7 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
230 return pcibios_plat_dev_init(dev); 230 return pcibios_plat_dev_init(dev);
231} 231}
232 232
233static void __devinit pcibios_fixup_device_resources(struct pci_dev *dev, 233static void pcibios_fixup_device_resources(struct pci_dev *dev,
234 struct pci_bus *bus) 234 struct pci_bus *bus)
235{ 235{
236 /* Update device resources. */ 236 /* Update device resources. */
@@ -251,7 +251,7 @@ static void __devinit pcibios_fixup_device_resources(struct pci_dev *dev,
251 } 251 }
252} 252}
253 253
254void __devinit pcibios_fixup_bus(struct pci_bus *bus) 254void pcibios_fixup_bus(struct pci_bus *bus)
255{ 255{
256 /* Propagate hose info into the subordinate devices. */ 256 /* Propagate hose info into the subordinate devices. */
257 257
@@ -282,8 +282,7 @@ pcibios_update_irq(struct pci_dev *dev, int irq)
282 pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq); 282 pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
283} 283}
284 284
285void __devinit 285void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
286pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
287 struct resource *res) 286 struct resource *res)
288{ 287{
289 struct pci_controller *hose = (struct pci_controller *)dev->sysdata; 288 struct pci_controller *hose = (struct pci_controller *)dev->sysdata;
diff --git a/arch/mips/philips/pnx8550/common/Kconfig b/arch/mips/philips/pnx8550/common/Kconfig
deleted file mode 100644
index 072572d173cc..000000000000
--- a/arch/mips/philips/pnx8550/common/Kconfig
+++ /dev/null
@@ -1 +0,0 @@
1# Place holder
diff --git a/arch/mips/pmc-sierra/yosemite/smp.c b/arch/mips/pmc-sierra/yosemite/smp.c
index 1c852d6a7654..b0f12cd2968a 100644
--- a/arch/mips/pmc-sierra/yosemite/smp.c
+++ b/arch/mips/pmc-sierra/yosemite/smp.c
@@ -77,7 +77,7 @@ void __init plat_prepare_cpus(unsigned int max_cpus)
77 * stack so the first thing we do is throw away that stuff and load useful 77 * stack so the first thing we do is throw away that stuff and load useful
78 * values into the registers ... 78 * values into the registers ...
79 */ 79 */
80void __init prom_boot_secondary(int cpu, struct task_struct *idle) 80void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
81{ 81{
82 unsigned long gp = (unsigned long) task_thread_info(idle); 82 unsigned long gp = (unsigned long) task_thread_info(idle);
83 unsigned long sp = __KSTK_TOS(idle); 83 unsigned long sp = __KSTK_TOS(idle);
@@ -97,12 +97,12 @@ void prom_cpus_done(void)
97 * After we've done initial boot, this function is called to allow the 97 * After we've done initial boot, this function is called to allow the
98 * board code to clean up state, if needed 98 * board code to clean up state, if needed
99 */ 99 */
100void prom_init_secondary(void) 100void __cpuinit prom_init_secondary(void)
101{ 101{
102 set_c0_status(ST0_CO | ST0_IE | ST0_IM); 102 set_c0_status(ST0_CO | ST0_IE | ST0_IM);
103} 103}
104 104
105void prom_smp_finish(void) 105void __cpuinit prom_smp_finish(void)
106{ 106{
107} 107}
108 108
diff --git a/arch/mips/qemu/q-smp.c b/arch/mips/qemu/q-smp.c
index 786bbfa214d1..4b0178d0df0b 100644
--- a/arch/mips/qemu/q-smp.c
+++ b/arch/mips/qemu/q-smp.c
@@ -22,11 +22,11 @@ void core_send_ipi(int cpu, unsigned int action)
22 * After we've done initial boot, this function is called to allow the 22 * After we've done initial boot, this function is called to allow the
23 * board code to clean up state, if needed 23 * board code to clean up state, if needed
24 */ 24 */
25void prom_init_secondary(void) 25void __cpuinit prom_init_secondary(void)
26{ 26{
27} 27}
28 28
29void prom_smp_finish(void) 29void __cpuinit prom_smp_finish(void)
30{ 30{
31} 31}
32 32
@@ -43,7 +43,7 @@ void __init prom_prepare_cpus(unsigned int max_cpus)
43/* 43/*
44 * Firmware CPU startup hook 44 * Firmware CPU startup hook
45 */ 45 */
46void prom_boot_secondary(int cpu, struct task_struct *idle) 46void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
47{ 47{
48} 48}
49 49
diff --git a/arch/mips/sgi-ip22/ip22-mc.c b/arch/mips/sgi-ip22/ip22-mc.c
index ddb6506d8341..01a805dcc67c 100644
--- a/arch/mips/sgi-ip22/ip22-mc.c
+++ b/arch/mips/sgi-ip22/ip22-mc.c
@@ -47,7 +47,7 @@ struct mem {
47/* 47/*
48 * Detect installed memory, do some sanity checks and notify kernel about it 48 * Detect installed memory, do some sanity checks and notify kernel about it
49 */ 49 */
50static void probe_memory(void) 50static void __init probe_memory(void)
51{ 51{
52 int i, j, found, cnt = 0; 52 int i, j, found, cnt = 0;
53 struct mem bank[4]; 53 struct mem bank[4];
diff --git a/arch/mips/sgi-ip22/ip22-setup.c b/arch/mips/sgi-ip22/ip22-setup.c
index 25097ecc9baa..e7ce7982db72 100644
--- a/arch/mips/sgi-ip22/ip22-setup.c
+++ b/arch/mips/sgi-ip22/ip22-setup.c
@@ -29,6 +29,7 @@
29#include <asm/sgi/ip22.h> 29#include <asm/sgi/ip22.h>
30 30
31unsigned long sgi_gfxaddr; 31unsigned long sgi_gfxaddr;
32EXPORT_SYMBOL_GPL(sgi_gfxaddr);
32 33
33/* 34/*
34 * Stop-A is originally a Sun thing that isn't standard on IP22 so to avoid 35 * Stop-A is originally a Sun thing that isn't standard on IP22 so to avoid
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c
index ba8e0794630c..856649cf9f1e 100644
--- a/arch/mips/sgi-ip27/ip27-irq.c
+++ b/arch/mips/sgi-ip27/ip27-irq.c
@@ -207,11 +207,9 @@ static int intr_connect_level(int cpu, int bit)
207{ 207{
208 nasid_t nasid = COMPACT_TO_NASID_NODEID(cpu_to_node(cpu)); 208 nasid_t nasid = COMPACT_TO_NASID_NODEID(cpu_to_node(cpu));
209 struct slice_data *si = cpu_data[cpu].data; 209 struct slice_data *si = cpu_data[cpu].data;
210 unsigned long flags;
211 210
212 set_bit(bit, si->irq_enable_mask); 211 set_bit(bit, si->irq_enable_mask);
213 212
214 local_irq_save(flags);
215 if (!cputoslice(cpu)) { 213 if (!cputoslice(cpu)) {
216 REMOTE_HUB_S(nasid, PI_INT_MASK0_A, si->irq_enable_mask[0]); 214 REMOTE_HUB_S(nasid, PI_INT_MASK0_A, si->irq_enable_mask[0]);
217 REMOTE_HUB_S(nasid, PI_INT_MASK1_A, si->irq_enable_mask[1]); 215 REMOTE_HUB_S(nasid, PI_INT_MASK1_A, si->irq_enable_mask[1]);
@@ -219,7 +217,6 @@ static int intr_connect_level(int cpu, int bit)
219 REMOTE_HUB_S(nasid, PI_INT_MASK0_B, si->irq_enable_mask[0]); 217 REMOTE_HUB_S(nasid, PI_INT_MASK0_B, si->irq_enable_mask[0]);
220 REMOTE_HUB_S(nasid, PI_INT_MASK1_B, si->irq_enable_mask[1]); 218 REMOTE_HUB_S(nasid, PI_INT_MASK1_B, si->irq_enable_mask[1]);
221 } 219 }
222 local_irq_restore(flags);
223 220
224 return 0; 221 return 0;
225} 222}
@@ -285,6 +282,8 @@ static unsigned int startup_bridge_irq(unsigned int irq)
285 282
286 bridge->b_wid_tflush; 283 bridge->b_wid_tflush;
287 284
285 intr_connect_level(cpu, swlevel);
286
288 return 0; /* Never anything pending. */ 287 return 0; /* Never anything pending. */
289} 288}
290 289
@@ -292,7 +291,6 @@ static unsigned int startup_bridge_irq(unsigned int irq)
292static void shutdown_bridge_irq(unsigned int irq) 291static void shutdown_bridge_irq(unsigned int irq)
293{ 292{
294 struct bridge_controller *bc = IRQ_TO_BRIDGE(irq); 293 struct bridge_controller *bc = IRQ_TO_BRIDGE(irq);
295 struct hub_data *hub = hub_data(cpu_to_node(bc->irq_cpu));
296 bridge_t *bridge = bc->base; 294 bridge_t *bridge = bc->base;
297 int pin, swlevel; 295 int pin, swlevel;
298 cpuid_t cpu; 296 cpuid_t cpu;
@@ -307,8 +305,6 @@ static void shutdown_bridge_irq(unsigned int irq)
307 swlevel = find_level(&cpu, irq); 305 swlevel = find_level(&cpu, irq);
308 intr_disconnect_level(cpu, swlevel); 306 intr_disconnect_level(cpu, swlevel);
309 307
310 __clear_bit(swlevel, hub->irq_alloc_mask);
311
312 bridge->b_int_enable &= ~(1 << pin); 308 bridge->b_int_enable &= ~(1 << pin);
313 bridge->b_wid_tflush; 309 bridge->b_wid_tflush;
314} 310}
diff --git a/arch/mips/sgi-ip27/ip27-smp.c b/arch/mips/sgi-ip27/ip27-smp.c
index 08e79141b47c..fbb27728a76a 100644
--- a/arch/mips/sgi-ip27/ip27-smp.c
+++ b/arch/mips/sgi-ip27/ip27-smp.c
@@ -171,7 +171,7 @@ void __init plat_prepare_cpus(unsigned int max_cpus)
171 * set sp to the kernel stack of the newly created idle process, gp to the proc 171 * set sp to the kernel stack of the newly created idle process, gp to the proc
172 * struct so that current_thread_info() will work. 172 * struct so that current_thread_info() will work.
173 */ 173 */
174void __init prom_boot_secondary(int cpu, struct task_struct *idle) 174void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
175{ 175{
176 unsigned long gp = (unsigned long)task_thread_info(idle); 176 unsigned long gp = (unsigned long)task_thread_info(idle);
177 unsigned long sp = __KSTK_TOS(idle); 177 unsigned long sp = __KSTK_TOS(idle);
@@ -191,7 +191,7 @@ void __init prom_cpus_done(void)
191{ 191{
192} 192}
193 193
194void prom_smp_finish(void) 194void __cpuinit prom_smp_finish(void)
195{ 195{
196} 196}
197 197
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c
index ba0c4b776c85..79ae6ef979bb 100644
--- a/arch/mips/sibyte/bcm1480/irq.c
+++ b/arch/mips/sibyte/bcm1480/irq.c
@@ -76,7 +76,7 @@ __setup("nokgdb", nokgdb);
76 76
77/* Default to UART1 */ 77/* Default to UART1 */
78int kgdb_port = 1; 78int kgdb_port = 1;
79#ifdef CONFIG_SIBYTE_SB1250_DUART 79#ifdef CONFIG_SERIAL_SB1250_DUART
80extern char sb1250_duart_present[]; 80extern char sb1250_duart_present[];
81#endif 81#endif
82#endif 82#endif
@@ -404,7 +404,7 @@ void __init arch_init_irq(void)
404 if (kgdb_flag) { 404 if (kgdb_flag) {
405 kgdb_irq = K_BCM1480_INT_UART_0 + kgdb_port; 405 kgdb_irq = K_BCM1480_INT_UART_0 + kgdb_port;
406 406
407#ifdef CONFIG_SIBYTE_SB1250_DUART 407#ifdef CONFIG_SERIAL_SB1250_DUART
408 sb1250_duart_present[kgdb_port] = 0; 408 sb1250_duart_present[kgdb_port] = 0;
409#endif 409#endif
410 /* Setup uart 1 settings, mapper */ 410 /* Setup uart 1 settings, mapper */
diff --git a/arch/mips/sibyte/cfe/console.c b/arch/mips/sibyte/cfe/console.c
index c6ec748175b0..4cec9d798d2f 100644
--- a/arch/mips/sibyte/cfe/console.c
+++ b/arch/mips/sibyte/cfe/console.c
@@ -46,7 +46,7 @@ static int cfe_console_setup(struct console *cons, char *str)
46 /* XXXKW think about interaction with 'console=' cmdline arg */ 46 /* XXXKW think about interaction with 'console=' cmdline arg */
47 /* If none of the console options are configured, the build will break. */ 47 /* If none of the console options are configured, the build will break. */
48 if (cfe_getenv("BOOT_CONSOLE", consdev, 32) >= 0) { 48 if (cfe_getenv("BOOT_CONSOLE", consdev, 32) >= 0) {
49#ifdef CONFIG_SIBYTE_SB1250_DUART 49#ifdef CONFIG_SERIAL_SB1250_DUART
50 if (!strcmp(consdev, "uart0")) { 50 if (!strcmp(consdev, "uart0")) {
51 setleds("u0cn"); 51 setleds("u0cn");
52 } else if (!strcmp(consdev, "uart1")) { 52 } else if (!strcmp(consdev, "uart1")) {
diff --git a/arch/mips/sibyte/cfe/smp.c b/arch/mips/sibyte/cfe/smp.c
index eab20e2db323..5de4cff9d14a 100644
--- a/arch/mips/sibyte/cfe/smp.c
+++ b/arch/mips/sibyte/cfe/smp.c
@@ -58,7 +58,7 @@ void __init plat_prepare_cpus(unsigned int max_cpus)
58 * Setup the PC, SP, and GP of a secondary processor and start it 58 * Setup the PC, SP, and GP of a secondary processor and start it
59 * running! 59 * running!
60 */ 60 */
61void prom_boot_secondary(int cpu, struct task_struct *idle) 61void __cpuinit prom_boot_secondary(int cpu, struct task_struct *idle)
62{ 62{
63 int retval; 63 int retval;
64 64
@@ -72,7 +72,7 @@ void prom_boot_secondary(int cpu, struct task_struct *idle)
72/* 72/*
73 * Code to run on secondary just after probing the CPU 73 * Code to run on secondary just after probing the CPU
74 */ 74 */
75void prom_init_secondary(void) 75void __cpuinit prom_init_secondary(void)
76{ 76{
77#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80) 77#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
78 extern void bcm1480_smp_init(void); 78 extern void bcm1480_smp_init(void);
@@ -89,7 +89,7 @@ void prom_init_secondary(void)
89 * Do any tidying up before marking online and running the idle 89 * Do any tidying up before marking online and running the idle
90 * loop 90 * loop
91 */ 91 */
92void prom_smp_finish(void) 92void __cpuinit prom_smp_finish(void)
93{ 93{
94#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80) 94#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
95 extern void bcm1480_smp_finish(void); 95 extern void bcm1480_smp_finish(void);
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c
index 0e6a13c0bd0e..ad593a6c20be 100644
--- a/arch/mips/sibyte/sb1250/irq.c
+++ b/arch/mips/sibyte/sb1250/irq.c
@@ -61,7 +61,7 @@ static int kgdb_irq;
61 61
62/* Default to UART1 */ 62/* Default to UART1 */
63int kgdb_port = 1; 63int kgdb_port = 1;
64#ifdef CONFIG_SIBYTE_SB1250_DUART 64#ifdef CONFIG_SERIAL_SB1250_DUART
65extern char sb1250_duart_present[]; 65extern char sb1250_duart_present[];
66#endif 66#endif
67#endif 67#endif
@@ -359,7 +359,7 @@ void __init arch_init_irq(void)
359 if (kgdb_flag) { 359 if (kgdb_flag) {
360 kgdb_irq = K_INT_UART_0 + kgdb_port; 360 kgdb_irq = K_INT_UART_0 + kgdb_port;
361 361
362#ifdef CONFIG_SIBYTE_SB1250_DUART 362#ifdef CONFIG_SERIAL_SB1250_DUART
363 sb1250_duart_present[kgdb_port] = 0; 363 sb1250_duart_present[kgdb_port] = 0;
364#endif 364#endif
365 /* Setup uart 1 settings, mapper */ 365 /* Setup uart 1 settings, mapper */
diff --git a/arch/mips/sni/pcimt_scache.c b/arch/mips/sni/pcimt_scache.c
deleted file mode 100644
index a59d457fa8b1..000000000000
--- a/arch/mips/sni/pcimt_scache.c
+++ /dev/null
@@ -1,37 +0,0 @@
1/*
2 * arch/mips/sni/pcimt_scache.c
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 *
8 * Copyright (c) 1997, 1998 by Ralf Baechle
9 */
10#include <linux/init.h>
11#include <linux/kernel.h>
12#include <asm/bcache.h>
13#include <asm/sni.h>
14
15#define cacheconf (*(volatile unsigned int *)PCIMT_CACHECONF)
16#define invspace (*(volatile unsigned int *)PCIMT_INVSPACE)
17
18void __init sni_pcimt_sc_init(void)
19{
20 unsigned int scsiz, sc_size;
21
22 scsiz = cacheconf & 7;
23 if (scsiz == 0) {
24 printk("Second level cache is deactived.\n");
25 return;
26 }
27 if (scsiz >= 6) {
28 printk("Invalid second level cache size configured, "
29 "deactivating second level cache.\n");
30 cacheconf = 0;
31 return;
32 }
33
34 sc_size = 128 << scsiz;
35 printk("%dkb second level cache detected, deactivating.\n", sc_size);
36 cacheconf = 0;
37}
diff --git a/arch/mips/sni/reset.c b/arch/mips/sni/reset.c
index 2eada8aea682..38b6a97a31b5 100644
--- a/arch/mips/sni/reset.c
+++ b/arch/mips/sni/reset.c
@@ -40,10 +40,6 @@ void sni_machine_restart(char *command)
40 } 40 }
41} 41}
42 42
43void sni_machine_halt(void)
44{
45}
46
47void sni_machine_power_off(void) 43void sni_machine_power_off(void)
48{ 44{
49 *(volatile unsigned char *)PCIMT_CSWCSM = 0xfd; 45 *(volatile unsigned char *)PCIMT_CSWCSM = 0xfd;
diff --git a/arch/mips/sni/setup.c b/arch/mips/sni/setup.c
index 4fedfbda0c79..6edbb3051c82 100644
--- a/arch/mips/sni/setup.c
+++ b/arch/mips/sni/setup.c
@@ -26,7 +26,6 @@
26unsigned int sni_brd_type; 26unsigned int sni_brd_type;
27 27
28extern void sni_machine_restart(char *command); 28extern void sni_machine_restart(char *command);
29extern void sni_machine_halt(void);
30extern void sni_machine_power_off(void); 29extern void sni_machine_power_off(void);
31 30
32static void __init sni_display_setup(void) 31static void __init sni_display_setup(void)
@@ -87,7 +86,6 @@ void __init plat_mem_setup(void)
87 } 86 }
88 87
89 _machine_restart = sni_machine_restart; 88 _machine_restart = sni_machine_restart;
90 _machine_halt = sni_machine_halt;
91 pm_power_off = sni_machine_power_off; 89 pm_power_off = sni_machine_power_off;
92 90
93 sni_display_setup(); 91 sni_display_setup();
diff --git a/arch/mips/tx4927/common/Makefile b/arch/mips/tx4927/common/Makefile
index 9cb9535ebacb..18375787e094 100644
--- a/arch/mips/tx4927/common/Makefile
+++ b/arch/mips/tx4927/common/Makefile
@@ -10,3 +10,5 @@ obj-y += tx4927_prom.o tx4927_setup.o tx4927_irq.o
10 10
11obj-$(CONFIG_TOSHIBA_FPCIB0) += smsc_fdc37m81x.o 11obj-$(CONFIG_TOSHIBA_FPCIB0) += smsc_fdc37m81x.o
12obj-$(CONFIG_KGDB) += tx4927_dbgio.o 12obj-$(CONFIG_KGDB) += tx4927_dbgio.o
13
14EXTRA_CFLAGS += -Werror
diff --git a/arch/mips/tx4927/common/tx4927_irq.c b/arch/mips/tx4927/common/tx4927_irq.c
index 00b0b975f349..0aabd57fdad2 100644
--- a/arch/mips/tx4927/common/tx4927_irq.c
+++ b/arch/mips/tx4927/common/tx4927_irq.c
@@ -23,398 +23,20 @@
23 * with this program; if not, write to the Free Software Foundation, Inc., 23 * with this program; if not, write to the Free Software Foundation, Inc.,
24 * 675 Mass Ave, Cambridge, MA 02139, USA. 24 * 675 Mass Ave, Cambridge, MA 02139, USA.
25 */ 25 */
26#include <linux/errno.h>
27#include <linux/init.h> 26#include <linux/init.h>
28#include <linux/kernel_stat.h>
29#include <linux/module.h>
30#include <linux/signal.h>
31#include <linux/sched.h>
32#include <linux/types.h>
33#include <linux/interrupt.h> 27#include <linux/interrupt.h>
34#include <linux/ioport.h> 28#include <asm/irq_cpu.h>
35#include <linux/timex.h>
36#include <linux/slab.h>
37#include <linux/random.h>
38#include <linux/irq.h>
39#include <linux/bitops.h>
40#include <asm/bootinfo.h>
41#include <asm/io.h>
42#include <asm/irq.h>
43#include <asm/mipsregs.h> 29#include <asm/mipsregs.h>
44#include <asm/system.h>
45#include <asm/tx4927/tx4927.h> 30#include <asm/tx4927/tx4927.h>
46#ifdef CONFIG_TOSHIBA_RBTX4927 31#ifdef CONFIG_TOSHIBA_RBTX4927
47#include <asm/tx4927/toshiba_rbtx4927.h> 32#include <asm/tx4927/toshiba_rbtx4927.h>
48#endif 33#endif
49 34
50/*
51 * DEBUG
52 */
53
54#undef TX4927_IRQ_DEBUG
55
56#ifdef TX4927_IRQ_DEBUG
57#define TX4927_IRQ_NONE 0x00000000
58
59#define TX4927_IRQ_INFO ( 1 << 0 )
60#define TX4927_IRQ_WARN ( 1 << 1 )
61#define TX4927_IRQ_EROR ( 1 << 2 )
62
63#define TX4927_IRQ_INIT ( 1 << 5 )
64#define TX4927_IRQ_NEST1 ( 1 << 6 )
65#define TX4927_IRQ_NEST2 ( 1 << 7 )
66#define TX4927_IRQ_NEST3 ( 1 << 8 )
67#define TX4927_IRQ_NEST4 ( 1 << 9 )
68
69#define TX4927_IRQ_CP0_INIT ( 1 << 10 )
70#define TX4927_IRQ_CP0_ENABLE ( 1 << 13 )
71#define TX4927_IRQ_CP0_DISABLE ( 1 << 14 )
72
73#define TX4927_IRQ_PIC_INIT ( 1 << 20 )
74#define TX4927_IRQ_PIC_ENABLE ( 1 << 23 )
75#define TX4927_IRQ_PIC_DISABLE ( 1 << 24 )
76
77#define TX4927_IRQ_ALL 0xffffffff
78#endif
79
80#ifdef TX4927_IRQ_DEBUG
81static const u32 tx4927_irq_debug_flag = (TX4927_IRQ_NONE
82 | TX4927_IRQ_INFO
83 | TX4927_IRQ_WARN | TX4927_IRQ_EROR
84// | TX4927_IRQ_CP0_INIT
85// | TX4927_IRQ_CP0_ENABLE
86// | TX4927_IRQ_CP0_ENDIRQ
87// | TX4927_IRQ_PIC_INIT
88// | TX4927_IRQ_PIC_ENABLE
89// | TX4927_IRQ_PIC_DISABLE
90// | TX4927_IRQ_INIT
91// | TX4927_IRQ_NEST1
92// | TX4927_IRQ_NEST2
93// | TX4927_IRQ_NEST3
94// | TX4927_IRQ_NEST4
95 );
96#endif
97
98#ifdef TX4927_IRQ_DEBUG
99#define TX4927_IRQ_DPRINTK(flag,str...) \
100 if ( (tx4927_irq_debug_flag) & (flag) ) \
101 { \
102 char tmp[100]; \
103 sprintf( tmp, str ); \
104 printk( "%s(%s:%u)::%s", __FUNCTION__, __FILE__, __LINE__, tmp ); \
105 }
106#else
107#define TX4927_IRQ_DPRINTK(flag,str...)
108#endif
109
110/*
111 * Forwad definitions for all pic's
112 */
113
114static void tx4927_irq_cp0_enable(unsigned int irq);
115static void tx4927_irq_cp0_disable(unsigned int irq);
116
117static void tx4927_irq_pic_enable(unsigned int irq);
118static void tx4927_irq_pic_disable(unsigned int irq);
119
120/*
121 * Kernel structs for all pic's
122 */
123
124#define TX4927_CP0_NAME "TX4927-CP0"
125static struct irq_chip tx4927_irq_cp0_type = {
126 .name = TX4927_CP0_NAME,
127 .ack = tx4927_irq_cp0_disable,
128 .mask = tx4927_irq_cp0_disable,
129 .mask_ack = tx4927_irq_cp0_disable,
130 .unmask = tx4927_irq_cp0_enable,
131};
132
133#define TX4927_PIC_NAME "TX4927-PIC"
134static struct irq_chip tx4927_irq_pic_type = {
135 .name = TX4927_PIC_NAME,
136 .ack = tx4927_irq_pic_disable,
137 .mask = tx4927_irq_pic_disable,
138 .mask_ack = tx4927_irq_pic_disable,
139 .unmask = tx4927_irq_pic_enable,
140};
141
142#define TX4927_PIC_ACTION(s) { no_action, 0, CPU_MASK_NONE, s, NULL, NULL }
143static struct irqaction tx4927_irq_pic_action =
144TX4927_PIC_ACTION(TX4927_PIC_NAME);
145
146#define CCP0_STATUS 12
147#define CCP0_CAUSE 13
148
149/*
150 * Functions for cp0
151 */
152
153#define tx4927_irq_cp0_mask(irq) ( 1 << ( irq-TX4927_IRQ_CP0_BEG+8 ) )
154
155static void
156tx4927_irq_cp0_modify(unsigned cp0_reg, unsigned clr_bits, unsigned set_bits)
157{
158 unsigned long val = 0;
159
160 switch (cp0_reg) {
161 case CCP0_STATUS:
162 val = read_c0_status();
163 break;
164
165 case CCP0_CAUSE:
166 val = read_c0_cause();
167 break;
168
169 }
170
171 val &= (~clr_bits);
172 val |= (set_bits);
173
174 switch (cp0_reg) {
175 case CCP0_STATUS:{
176 write_c0_status(val);
177 break;
178 }
179 case CCP0_CAUSE:{
180 write_c0_cause(val);
181 break;
182 }
183 }
184}
185
186static void __init tx4927_irq_cp0_init(void)
187{
188 int i;
189
190 TX4927_IRQ_DPRINTK(TX4927_IRQ_CP0_INIT, "beg=%d end=%d\n",
191 TX4927_IRQ_CP0_BEG, TX4927_IRQ_CP0_END);
192
193 for (i = TX4927_IRQ_CP0_BEG; i <= TX4927_IRQ_CP0_END; i++)
194 set_irq_chip_and_handler(i, &tx4927_irq_cp0_type,
195 handle_level_irq);
196}
197
198static void tx4927_irq_cp0_enable(unsigned int irq)
199{
200 TX4927_IRQ_DPRINTK(TX4927_IRQ_CP0_ENABLE, "irq=%d \n", irq);
201
202 tx4927_irq_cp0_modify(CCP0_STATUS, 0, tx4927_irq_cp0_mask(irq));
203}
204
205static void tx4927_irq_cp0_disable(unsigned int irq)
206{
207 TX4927_IRQ_DPRINTK(TX4927_IRQ_CP0_DISABLE, "irq=%d \n", irq);
208
209 tx4927_irq_cp0_modify(CCP0_STATUS, tx4927_irq_cp0_mask(irq), 0);
210}
211
212/*
213 * Functions for pic
214 */
215u32 tx4927_irq_pic_addr(int irq)
216{
217 /* MVMCP -- need to formulize this */
218 irq -= TX4927_IRQ_PIC_BEG;
219 switch (irq) {
220 case 17:
221 case 16:
222 case 1:
223 case 0:
224 return (0xff1ff610);
225
226 case 19:
227 case 18:
228 case 3:
229 case 2:
230 return (0xff1ff614);
231
232 case 21:
233 case 20:
234 case 5:
235 case 4:
236 return (0xff1ff618);
237
238 case 23:
239 case 22:
240 case 7:
241 case 6:
242 return (0xff1ff61c);
243
244 case 25:
245 case 24:
246 case 9:
247 case 8:
248 return (0xff1ff620);
249
250 case 27:
251 case 26:
252 case 11:
253 case 10:
254 return (0xff1ff624);
255
256 case 29:
257 case 28:
258 case 13:
259 case 12:
260 return (0xff1ff628);
261
262 case 31:
263 case 30:
264 case 15:
265 case 14:
266 return (0xff1ff62c);
267
268 }
269 return (0);
270}
271
272u32 tx4927_irq_pic_mask(int irq)
273{
274 /* MVMCP -- need to formulize this */
275 irq -= TX4927_IRQ_PIC_BEG;
276 switch (irq) {
277 case 31:
278 case 29:
279 case 27:
280 case 25:
281 case 23:
282 case 21:
283 case 19:
284 case 17:{
285 return (0x07000000);
286 }
287 case 30:
288 case 28:
289 case 26:
290 case 24:
291 case 22:
292 case 20:
293 case 18:
294 case 16:{
295 return (0x00070000);
296 }
297 case 15:
298 case 13:
299 case 11:
300 case 9:
301 case 7:
302 case 5:
303 case 3:
304 case 1:{
305 return (0x00000700);
306 }
307 case 14:
308 case 12:
309 case 10:
310 case 8:
311 case 6:
312 case 4:
313 case 2:
314 case 0:{
315 return (0x00000007);
316 }
317 }
318 return (0x00000000);
319}
320
321static void tx4927_irq_pic_modify(unsigned pic_reg, unsigned clr_bits,
322 unsigned set_bits)
323{
324 unsigned long val = 0;
325
326 val = TX4927_RD(pic_reg);
327 val &= (~clr_bits);
328 val |= (set_bits);
329 TX4927_WR(pic_reg, val);
330}
331
332static void __init tx4927_irq_pic_init(void)
333{
334 int i;
335
336 TX4927_IRQ_DPRINTK(TX4927_IRQ_PIC_INIT, "beg=%d end=%d\n",
337 TX4927_IRQ_PIC_BEG, TX4927_IRQ_PIC_END);
338
339 for (i = TX4927_IRQ_PIC_BEG; i <= TX4927_IRQ_PIC_END; i++)
340 set_irq_chip_and_handler(i, &tx4927_irq_pic_type,
341 handle_level_irq);
342
343 setup_irq(TX4927_IRQ_NEST_PIC_ON_CP0, &tx4927_irq_pic_action);
344
345 TX4927_WR(0xff1ff640, 0x6); /* irq level mask -- only accept hightest */
346 TX4927_WR(0xff1ff600, TX4927_RD(0xff1ff600) | 0x1); /* irq enable */
347}
348
349static void tx4927_irq_pic_enable(unsigned int irq)
350{
351 TX4927_IRQ_DPRINTK(TX4927_IRQ_PIC_ENABLE, "irq=%d\n", irq);
352
353 tx4927_irq_pic_modify(tx4927_irq_pic_addr(irq), 0,
354 tx4927_irq_pic_mask(irq));
355}
356
357static void tx4927_irq_pic_disable(unsigned int irq)
358{
359 TX4927_IRQ_DPRINTK(TX4927_IRQ_PIC_DISABLE, "irq=%d\n", irq);
360
361 tx4927_irq_pic_modify(tx4927_irq_pic_addr(irq),
362 tx4927_irq_pic_mask(irq), 0);
363}
364
365/*
366 * Main init functions
367 */
368void __init tx4927_irq_init(void) 35void __init tx4927_irq_init(void)
369{ 36{
370 TX4927_IRQ_DPRINTK(TX4927_IRQ_INIT, "-\n"); 37 mips_cpu_irq_init();
371 38 txx9_irq_init(TX4927_IRC_REG);
372 TX4927_IRQ_DPRINTK(TX4927_IRQ_INIT, "=Calling tx4927_irq_cp0_init()\n"); 39 set_irq_chained_handler(TX4927_IRQ_NEST_PIC_ON_CP0, handle_simple_irq);
373 tx4927_irq_cp0_init();
374
375 TX4927_IRQ_DPRINTK(TX4927_IRQ_INIT, "=Calling tx4927_irq_pic_init()\n");
376 tx4927_irq_pic_init();
377
378 TX4927_IRQ_DPRINTK(TX4927_IRQ_INIT, "+\n");
379}
380
381static int tx4927_irq_nested(void)
382{
383 int sw_irq = 0;
384 u32 level2;
385
386 TX4927_IRQ_DPRINTK(TX4927_IRQ_NEST1, "-\n");
387
388 level2 = TX4927_RD(0xff1ff6a0);
389 TX4927_IRQ_DPRINTK(TX4927_IRQ_NEST2, "=level2a=0x%x\n", level2);
390
391 if ((level2 & 0x10000) == 0) {
392 level2 &= 0x1f;
393 TX4927_IRQ_DPRINTK(TX4927_IRQ_NEST3, "=level2b=0x%x\n", level2);
394
395 sw_irq = TX4927_IRQ_PIC_BEG + level2;
396 TX4927_IRQ_DPRINTK(TX4927_IRQ_NEST3, "=sw_irq=%d\n", sw_irq);
397
398 if (sw_irq == 27) {
399 TX4927_IRQ_DPRINTK(TX4927_IRQ_NEST4, "=irq-%d\n",
400 sw_irq);
401
402#ifdef CONFIG_TOSHIBA_RBTX4927
403 {
404 sw_irq = toshiba_rbtx4927_irq_nested(sw_irq);
405 }
406#endif
407
408 TX4927_IRQ_DPRINTK(TX4927_IRQ_NEST4, "=irq+%d\n",
409 sw_irq);
410 }
411 }
412
413 TX4927_IRQ_DPRINTK(TX4927_IRQ_NEST2, "=sw_irq=%d\n", sw_irq);
414
415 TX4927_IRQ_DPRINTK(TX4927_IRQ_NEST1, "+\n");
416
417 return (sw_irq);
418} 40}
419 41
420asmlinkage void plat_irq_dispatch(void) 42asmlinkage void plat_irq_dispatch(void)
@@ -424,9 +46,12 @@ asmlinkage void plat_irq_dispatch(void)
424 if (pending & STATUSF_IP7) /* cpu timer */ 46 if (pending & STATUSF_IP7) /* cpu timer */
425 do_IRQ(TX4927_IRQ_CPU_TIMER); 47 do_IRQ(TX4927_IRQ_CPU_TIMER);
426 else if (pending & STATUSF_IP2) { /* tx4927 pic */ 48 else if (pending & STATUSF_IP2) { /* tx4927 pic */
427 unsigned int irq = tx4927_irq_nested(); 49 int irq = txx9_irq();
428 50#ifdef CONFIG_TOSHIBA_RBTX4927
429 if (unlikely(irq == 0)) { 51 if (irq == TX4927_IRQ_NEST_EXT_ON_PIC)
52 irq = toshiba_rbtx4927_irq_nested(irq);
53#endif
54 if (unlikely(irq < 0)) {
430 spurious_interrupt(); 55 spurious_interrupt();
431 return; 56 return;
432 } 57 }
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/Makefile b/arch/mips/tx4927/toshiba_rbtx4927/Makefile
index 8a991f3c1a6f..13f96725d772 100644
--- a/arch/mips/tx4927/toshiba_rbtx4927/Makefile
+++ b/arch/mips/tx4927/toshiba_rbtx4927/Makefile
@@ -1,3 +1,5 @@
1obj-y += toshiba_rbtx4927_prom.o 1obj-y += toshiba_rbtx4927_prom.o
2obj-y += toshiba_rbtx4927_setup.o 2obj-y += toshiba_rbtx4927_setup.o
3obj-y += toshiba_rbtx4927_irq.o 3obj-y += toshiba_rbtx4927_irq.o
4
5EXTRA_CFLAGS += -Werror
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
index e265fcd31b60..9607ad5e734a 100644
--- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
+++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
@@ -133,6 +133,7 @@ JP7 is not bus master -- do NOT use -- only 4 pci bus master's allowed -- SouthB
133#include <linux/bootmem.h> 133#include <linux/bootmem.h>
134#include <linux/blkdev.h> 134#include <linux/blkdev.h>
135#ifdef CONFIG_TOSHIBA_FPCIB0 135#ifdef CONFIG_TOSHIBA_FPCIB0
136#include <asm/i8259.h>
136#include <asm/tx4927/smsc_fdc37m81x.h> 137#include <asm/tx4927/smsc_fdc37m81x.h>
137#endif 138#endif
138#include <asm/tx4927/toshiba_rbtx4927.h> 139#include <asm/tx4927/toshiba_rbtx4927.h>
@@ -151,11 +152,6 @@ JP7 is not bus master -- do NOT use -- only 4 pci bus master's allowed -- SouthB
151#define TOSHIBA_RBTX4927_IRQ_IOC_ENABLE ( 1 << 13 ) 152#define TOSHIBA_RBTX4927_IRQ_IOC_ENABLE ( 1 << 13 )
152#define TOSHIBA_RBTX4927_IRQ_IOC_DISABLE ( 1 << 14 ) 153#define TOSHIBA_RBTX4927_IRQ_IOC_DISABLE ( 1 << 14 )
153 154
154#define TOSHIBA_RBTX4927_IRQ_ISA_INIT ( 1 << 20 )
155#define TOSHIBA_RBTX4927_IRQ_ISA_ENABLE ( 1 << 23 )
156#define TOSHIBA_RBTX4927_IRQ_ISA_DISABLE ( 1 << 24 )
157#define TOSHIBA_RBTX4927_IRQ_ISA_MASK ( 1 << 25 )
158
159#define TOSHIBA_RBTX4927_SETUP_ALL 0xffffffff 155#define TOSHIBA_RBTX4927_SETUP_ALL 0xffffffff
160#endif 156#endif
161 157
@@ -167,10 +163,6 @@ static const u32 toshiba_rbtx4927_irq_debug_flag =
167// | TOSHIBA_RBTX4927_IRQ_IOC_INIT 163// | TOSHIBA_RBTX4927_IRQ_IOC_INIT
168// | TOSHIBA_RBTX4927_IRQ_IOC_ENABLE 164// | TOSHIBA_RBTX4927_IRQ_IOC_ENABLE
169// | TOSHIBA_RBTX4927_IRQ_IOC_DISABLE 165// | TOSHIBA_RBTX4927_IRQ_IOC_DISABLE
170// | TOSHIBA_RBTX4927_IRQ_ISA_INIT
171// | TOSHIBA_RBTX4927_IRQ_ISA_ENABLE
172// | TOSHIBA_RBTX4927_IRQ_ISA_DISABLE
173// | TOSHIBA_RBTX4927_IRQ_ISA_MASK
174 ); 166 );
175#endif 167#endif
176 168
@@ -196,33 +188,14 @@ static const u32 toshiba_rbtx4927_irq_debug_flag =
196#define TOSHIBA_RBTX4927_IRQ_IOC_BEG ((TX4927_IRQ_PIC_END+1)+TOSHIBA_RBTX4927_IRQ_IOC_RAW_BEG) /* 56 */ 188#define TOSHIBA_RBTX4927_IRQ_IOC_BEG ((TX4927_IRQ_PIC_END+1)+TOSHIBA_RBTX4927_IRQ_IOC_RAW_BEG) /* 56 */
197#define TOSHIBA_RBTX4927_IRQ_IOC_END ((TX4927_IRQ_PIC_END+1)+TOSHIBA_RBTX4927_IRQ_IOC_RAW_END) /* 63 */ 189#define TOSHIBA_RBTX4927_IRQ_IOC_END ((TX4927_IRQ_PIC_END+1)+TOSHIBA_RBTX4927_IRQ_IOC_RAW_END) /* 63 */
198 190
199
200#define TOSHIBA_RBTX4927_IRQ_ISA_BEG MI8259_IRQ_ISA_BEG
201#define TOSHIBA_RBTX4927_IRQ_ISA_END MI8259_IRQ_ISA_END
202#define TOSHIBA_RBTX4927_IRQ_ISA_MID ((TOSHIBA_RBTX4927_IRQ_ISA_BEG+TOSHIBA_RBTX4927_IRQ_ISA_END+1)/2)
203
204
205#define TOSHIBA_RBTX4927_IRQ_NEST_IOC_ON_PIC TX4927_IRQ_NEST_EXT_ON_PIC 191#define TOSHIBA_RBTX4927_IRQ_NEST_IOC_ON_PIC TX4927_IRQ_NEST_EXT_ON_PIC
206#define TOSHIBA_RBTX4927_IRQ_NEST_ISA_ON_IOC (TOSHIBA_RBTX4927_IRQ_IOC_BEG+2) 192#define TOSHIBA_RBTX4927_IRQ_NEST_ISA_ON_IOC (TOSHIBA_RBTX4927_IRQ_IOC_BEG+2)
207#define TOSHIBA_RBTX4927_IRQ_NEST_ISA_ON_ISA (TOSHIBA_RBTX4927_IRQ_ISA_BEG+2)
208 193
209extern int tx4927_using_backplane; 194extern int tx4927_using_backplane;
210 195
211#ifdef CONFIG_TOSHIBA_FPCIB0
212extern void enable_8259A_irq(unsigned int irq);
213extern void disable_8259A_irq(unsigned int irq);
214extern void mask_and_ack_8259A(unsigned int irq);
215#endif
216
217static void toshiba_rbtx4927_irq_ioc_enable(unsigned int irq); 196static void toshiba_rbtx4927_irq_ioc_enable(unsigned int irq);
218static void toshiba_rbtx4927_irq_ioc_disable(unsigned int irq); 197static void toshiba_rbtx4927_irq_ioc_disable(unsigned int irq);
219 198
220#ifdef CONFIG_TOSHIBA_FPCIB0
221static void toshiba_rbtx4927_irq_isa_enable(unsigned int irq);
222static void toshiba_rbtx4927_irq_isa_disable(unsigned int irq);
223static void toshiba_rbtx4927_irq_isa_mask_and_ack(unsigned int irq);
224#endif
225
226#define TOSHIBA_RBTX4927_IOC_NAME "RBTX4927-IOC" 199#define TOSHIBA_RBTX4927_IOC_NAME "RBTX4927-IOC"
227static struct irq_chip toshiba_rbtx4927_irq_ioc_type = { 200static struct irq_chip toshiba_rbtx4927_irq_ioc_type = {
228 .name = TOSHIBA_RBTX4927_IOC_NAME, 201 .name = TOSHIBA_RBTX4927_IOC_NAME,
@@ -235,18 +208,6 @@ static struct irq_chip toshiba_rbtx4927_irq_ioc_type = {
235#define TOSHIBA_RBTX4927_IOC_INTR_STAT 0xbc002006 208#define TOSHIBA_RBTX4927_IOC_INTR_STAT 0xbc002006
236 209
237 210
238#ifdef CONFIG_TOSHIBA_FPCIB0
239#define TOSHIBA_RBTX4927_ISA_NAME "RBTX4927-ISA"
240static struct irq_chip toshiba_rbtx4927_irq_isa_type = {
241 .name = TOSHIBA_RBTX4927_ISA_NAME,
242 .ack = toshiba_rbtx4927_irq_isa_mask_and_ack,
243 .mask = toshiba_rbtx4927_irq_isa_disable,
244 .mask_ack = toshiba_rbtx4927_irq_isa_mask_and_ack,
245 .unmask = toshiba_rbtx4927_irq_isa_enable,
246};
247#endif
248
249
250u32 bit2num(u32 num) 211u32 bit2num(u32 num)
251{ 212{
252 u32 i; 213 u32 i;
@@ -271,31 +232,10 @@ int toshiba_rbtx4927_irq_nested(int sw_irq)
271 } 232 }
272 } 233 }
273#ifdef CONFIG_TOSHIBA_FPCIB0 234#ifdef CONFIG_TOSHIBA_FPCIB0
274 { 235 if (tx4927_using_backplane) {
275 if (tx4927_using_backplane) { 236 int irq = i8259_irq();
276 u32 level4; 237 if (irq >= 0)
277 u32 level5; 238 sw_irq = irq;
278 outb(0x0A, 0x20);
279 level4 = inb(0x20) & 0xff;
280 if (level4) {
281 sw_irq =
282 TOSHIBA_RBTX4927_IRQ_ISA_BEG +
283 bit2num(level4);
284 if (sw_irq !=
285 TOSHIBA_RBTX4927_IRQ_NEST_ISA_ON_ISA) {
286 goto RETURN;
287 }
288 }
289
290 outb(0x0A, 0xA0);
291 level5 = inb(0xA0) & 0xff;
292 if (level5) {
293 sw_irq =
294 TOSHIBA_RBTX4927_IRQ_ISA_MID +
295 bit2num(level5);
296 goto RETURN;
297 }
298 }
299 } 239 }
300#endif 240#endif
301 241
@@ -307,12 +247,6 @@ int toshiba_rbtx4927_irq_nested(int sw_irq)
307#define TOSHIBA_RBTX4927_PIC_ACTION(s) { no_action, IRQF_SHARED, CPU_MASK_NONE, s, NULL, NULL } 247#define TOSHIBA_RBTX4927_PIC_ACTION(s) { no_action, IRQF_SHARED, CPU_MASK_NONE, s, NULL, NULL }
308static struct irqaction toshiba_rbtx4927_irq_ioc_action = 248static struct irqaction toshiba_rbtx4927_irq_ioc_action =
309TOSHIBA_RBTX4927_PIC_ACTION(TOSHIBA_RBTX4927_IOC_NAME); 249TOSHIBA_RBTX4927_PIC_ACTION(TOSHIBA_RBTX4927_IOC_NAME);
310#ifdef CONFIG_TOSHIBA_FPCIB0
311static struct irqaction toshiba_rbtx4927_irq_isa_master =
312TOSHIBA_RBTX4927_PIC_ACTION(TOSHIBA_RBTX4927_ISA_NAME "/M");
313static struct irqaction toshiba_rbtx4927_irq_isa_slave =
314TOSHIBA_RBTX4927_PIC_ACTION(TOSHIBA_RBTX4927_ISA_NAME "/S");
315#endif
316 250
317 251
318/**********************************************************************************/ 252/**********************************************************************************/
@@ -378,92 +312,6 @@ static void toshiba_rbtx4927_irq_ioc_disable(unsigned int irq)
378} 312}
379 313
380 314
381/**********************************************************************************/
382/* Functions for isa */
383/**********************************************************************************/
384
385
386#ifdef CONFIG_TOSHIBA_FPCIB0
387static void __init toshiba_rbtx4927_irq_isa_init(void)
388{
389 int i;
390
391 TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_ISA_INIT,
392 "beg=%d end=%d\n",
393 TOSHIBA_RBTX4927_IRQ_ISA_BEG,
394 TOSHIBA_RBTX4927_IRQ_ISA_END);
395
396 for (i = TOSHIBA_RBTX4927_IRQ_ISA_BEG;
397 i <= TOSHIBA_RBTX4927_IRQ_ISA_END; i++)
398 set_irq_chip_and_handler(i, &toshiba_rbtx4927_irq_isa_type,
399 handle_level_irq);
400
401 setup_irq(TOSHIBA_RBTX4927_IRQ_NEST_ISA_ON_IOC,
402 &toshiba_rbtx4927_irq_isa_master);
403 setup_irq(TOSHIBA_RBTX4927_IRQ_NEST_ISA_ON_ISA,
404 &toshiba_rbtx4927_irq_isa_slave);
405
406 /* make sure we are looking at IRR (not ISR) */
407 outb(0x0A, 0x20);
408 outb(0x0A, 0xA0);
409}
410#endif
411
412
413#ifdef CONFIG_TOSHIBA_FPCIB0
414static void toshiba_rbtx4927_irq_isa_enable(unsigned int irq)
415{
416 TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_ISA_ENABLE,
417 "irq=%d\n", irq);
418
419 if (irq < TOSHIBA_RBTX4927_IRQ_ISA_BEG
420 || irq > TOSHIBA_RBTX4927_IRQ_ISA_END) {
421 TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_EROR,
422 "bad irq=%d\n", irq);
423 panic("\n");
424 }
425
426 enable_8259A_irq(irq);
427}
428#endif
429
430
431#ifdef CONFIG_TOSHIBA_FPCIB0
432static void toshiba_rbtx4927_irq_isa_disable(unsigned int irq)
433{
434 TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_ISA_DISABLE,
435 "irq=%d\n", irq);
436
437 if (irq < TOSHIBA_RBTX4927_IRQ_ISA_BEG
438 || irq > TOSHIBA_RBTX4927_IRQ_ISA_END) {
439 TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_EROR,
440 "bad irq=%d\n", irq);
441 panic("\n");
442 }
443
444 disable_8259A_irq(irq);
445}
446#endif
447
448
449#ifdef CONFIG_TOSHIBA_FPCIB0
450static void toshiba_rbtx4927_irq_isa_mask_and_ack(unsigned int irq)
451{
452 TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_ISA_MASK,
453 "irq=%d\n", irq);
454
455 if (irq < TOSHIBA_RBTX4927_IRQ_ISA_BEG
456 || irq > TOSHIBA_RBTX4927_IRQ_ISA_END) {
457 TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_EROR,
458 "bad irq=%d\n", irq);
459 panic("\n");
460 }
461
462 mask_and_ack_8259A(irq);
463}
464#endif
465
466
467void __init arch_init_irq(void) 315void __init arch_init_irq(void)
468{ 316{
469 extern void tx4927_irq_init(void); 317 extern void tx4927_irq_init(void);
@@ -471,12 +319,11 @@ void __init arch_init_irq(void)
471 tx4927_irq_init(); 319 tx4927_irq_init();
472 toshiba_rbtx4927_irq_ioc_init(); 320 toshiba_rbtx4927_irq_ioc_init();
473#ifdef CONFIG_TOSHIBA_FPCIB0 321#ifdef CONFIG_TOSHIBA_FPCIB0
474 { 322 if (tx4927_using_backplane)
475 if (tx4927_using_backplane) { 323 init_i8259_irqs();
476 toshiba_rbtx4927_irq_isa_init();
477 }
478 }
479#endif 324#endif
325 /* Onboard 10M Ether: High Active */
326 set_irq_type(RBTX4927_RTL_8019_IRQ, IRQF_TRIGGER_HIGH);
480 327
481 wbflush(); 328 wbflush();
482} 329}
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
index ea5a70b252a0..3e84237abe63 100644
--- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
+++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
@@ -151,7 +151,6 @@ unsigned long mips_memory_upper;
151static int tx4927_ccfg_toeon = 1; 151static int tx4927_ccfg_toeon = 1;
152static int tx4927_pcic_trdyto = 0; /* default: disabled */ 152static int tx4927_pcic_trdyto = 0; /* default: disabled */
153unsigned long tx4927_ce_base[8]; 153unsigned long tx4927_ce_base[8];
154void tx4927_pci_setup(void);
155void tx4927_reset_pci_pcic(void); 154void tx4927_reset_pci_pcic(void);
156int tx4927_pci66 = 0; /* 0:auto */ 155int tx4927_pci66 = 0; /* 0:auto */
157#endif 156#endif
@@ -442,7 +441,7 @@ arch_initcall(tx4927_pcibios_init);
442extern struct resource pci_io_resource; 441extern struct resource pci_io_resource;
443extern struct resource pci_mem_resource; 442extern struct resource pci_mem_resource;
444 443
445void tx4927_pci_setup(void) 444void __init tx4927_pci_setup(void)
446{ 445{
447 static int called = 0; 446 static int called = 0;
448 extern unsigned int tx4927_get_mem_size(void); 447 extern unsigned int tx4927_get_mem_size(void);
@@ -748,12 +747,6 @@ void __init toshiba_rbtx4927_setup(void)
748 } 747 }
749#endif 748#endif
750 749
751 /* setup irq stuff */
752 TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_SETUP,
753 ":Setting up tx4927 pic.\n");
754 TX4927_WR(0xff1ff604, 0x00000400); /* irq trigger */
755 TX4927_WR(0xff1ff608, 0x00000000); /* irq trigger */
756
757 /* setup serial stuff */ 750 /* setup serial stuff */
758 TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_SETUP, 751 TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_SETUP,
759 ":Setting up tx4927 sio.\n"); 752 ":Setting up tx4927 sio.\n");
@@ -915,7 +908,7 @@ void __init toshiba_rbtx4927_setup(void)
915 req.iotype = UPIO_MEM; 908 req.iotype = UPIO_MEM;
916 req.membase = (char *)(0xff1ff300 + i * 0x100); 909 req.membase = (char *)(0xff1ff300 + i * 0x100);
917 req.mapbase = 0xff1ff300 + i * 0x100; 910 req.mapbase = 0xff1ff300 + i * 0x100;
918 req.irq = 32 + i; 911 req.irq = TX4927_IRQ_PIC_BEG + 8 + i;
919 req.flags |= UPF_BUGGY_UART /*HAVE_CTS_LINE*/; 912 req.flags |= UPF_BUGGY_UART /*HAVE_CTS_LINE*/;
920 req.uartclk = 50000000; 913 req.uartclk = 50000000;
921 early_serial_txx9_setup(&req); 914 early_serial_txx9_setup(&req);
diff --git a/arch/mips/tx4938/common/Makefile b/arch/mips/tx4938/common/Makefile
index 83cda518f204..8352eca67906 100644
--- a/arch/mips/tx4938/common/Makefile
+++ b/arch/mips/tx4938/common/Makefile
@@ -9,3 +9,4 @@
9obj-y += prom.o setup.o irq.o 9obj-y += prom.o setup.o irq.o
10obj-$(CONFIG_KGDB) += dbgio.o 10obj-$(CONFIG_KGDB) += dbgio.o
11 11
12EXTRA_CFLAGS += -Werror
diff --git a/arch/mips/tx4938/common/irq.c b/arch/mips/tx4938/common/irq.c
index 3a2dbfc25014..c059b899d120 100644
--- a/arch/mips/tx4938/common/irq.c
+++ b/arch/mips/tx4938/common/irq.c
@@ -11,284 +11,21 @@
11 * 11 *
12 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com) 12 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
13 */ 13 */
14#include <linux/errno.h>
15#include <linux/init.h> 14#include <linux/init.h>
16#include <linux/kernel_stat.h>
17#include <linux/module.h>
18#include <linux/signal.h>
19#include <linux/sched.h>
20#include <linux/types.h>
21#include <linux/interrupt.h> 15#include <linux/interrupt.h>
22#include <linux/ioport.h> 16#include <asm/irq_cpu.h>
23#include <linux/timex.h>
24#include <linux/slab.h>
25#include <linux/random.h>
26#include <linux/irq.h>
27#include <asm/bitops.h>
28#include <asm/bootinfo.h>
29#include <asm/io.h>
30#include <asm/irq.h>
31#include <asm/mipsregs.h> 17#include <asm/mipsregs.h>
32#include <asm/system.h>
33#include <asm/wbflush.h>
34#include <asm/tx4938/rbtx4938.h> 18#include <asm/tx4938/rbtx4938.h>
35 19
36/**********************************************************************************/
37/* Forwad definitions for all pic's */
38/**********************************************************************************/
39
40static void tx4938_irq_cp0_enable(unsigned int irq);
41static void tx4938_irq_cp0_disable(unsigned int irq);
42
43static void tx4938_irq_pic_enable(unsigned int irq);
44static void tx4938_irq_pic_disable(unsigned int irq);
45
46/**********************************************************************************/
47/* Kernel structs for all pic's */
48/**********************************************************************************/
49
50#define TX4938_CP0_NAME "TX4938-CP0"
51static struct irq_chip tx4938_irq_cp0_type = {
52 .name = TX4938_CP0_NAME,
53 .ack = tx4938_irq_cp0_disable,
54 .mask = tx4938_irq_cp0_disable,
55 .mask_ack = tx4938_irq_cp0_disable,
56 .unmask = tx4938_irq_cp0_enable,
57};
58
59#define TX4938_PIC_NAME "TX4938-PIC"
60static struct irq_chip tx4938_irq_pic_type = {
61 .name = TX4938_PIC_NAME,
62 .ack = tx4938_irq_pic_disable,
63 .mask = tx4938_irq_pic_disable,
64 .mask_ack = tx4938_irq_pic_disable,
65 .unmask = tx4938_irq_pic_enable,
66};
67
68static struct irqaction tx4938_irq_pic_action = {
69 .handler = no_action,
70 .flags = 0,
71 .mask = CPU_MASK_NONE,
72 .name = TX4938_PIC_NAME
73};
74
75/**********************************************************************************/
76/* Functions for cp0 */
77/**********************************************************************************/
78
79#define tx4938_irq_cp0_mask(irq) ( 1 << ( irq-TX4938_IRQ_CP0_BEG+8 ) )
80
81static void __init
82tx4938_irq_cp0_init(void)
83{
84 int i;
85
86 for (i = TX4938_IRQ_CP0_BEG; i <= TX4938_IRQ_CP0_END; i++)
87 set_irq_chip_and_handler(i, &tx4938_irq_cp0_type,
88 handle_level_irq);
89}
90
91static void
92tx4938_irq_cp0_enable(unsigned int irq)
93{
94 set_c0_status(tx4938_irq_cp0_mask(irq));
95}
96
97static void
98tx4938_irq_cp0_disable(unsigned int irq)
99{
100 clear_c0_status(tx4938_irq_cp0_mask(irq));
101}
102
103/**********************************************************************************/
104/* Functions for pic */
105/**********************************************************************************/
106
107u32
108tx4938_irq_pic_addr(int irq)
109{
110 /* MVMCP -- need to formulize this */
111 irq -= TX4938_IRQ_PIC_BEG;
112
113 switch (irq) {
114 case 17:
115 case 16:
116 case 1:
117 case 0:{
118 return (TX4938_MKA(TX4938_IRC_IRLVL0));
119 }
120 case 19:
121 case 18:
122 case 3:
123 case 2:{
124 return (TX4938_MKA(TX4938_IRC_IRLVL1));
125 }
126 case 21:
127 case 20:
128 case 5:
129 case 4:{
130 return (TX4938_MKA(TX4938_IRC_IRLVL2));
131 }
132 case 23:
133 case 22:
134 case 7:
135 case 6:{
136 return (TX4938_MKA(TX4938_IRC_IRLVL3));
137 }
138 case 25:
139 case 24:
140 case 9:
141 case 8:{
142 return (TX4938_MKA(TX4938_IRC_IRLVL4));
143 }
144 case 27:
145 case 26:
146 case 11:
147 case 10:{
148 return (TX4938_MKA(TX4938_IRC_IRLVL5));
149 }
150 case 29:
151 case 28:
152 case 13:
153 case 12:{
154 return (TX4938_MKA(TX4938_IRC_IRLVL6));
155 }
156 case 31:
157 case 30:
158 case 15:
159 case 14:{
160 return (TX4938_MKA(TX4938_IRC_IRLVL7));
161 }
162 }
163
164 return 0;
165}
166
167u32
168tx4938_irq_pic_mask(int irq)
169{
170 /* MVMCP -- need to formulize this */
171 irq -= TX4938_IRQ_PIC_BEG;
172
173 switch (irq) {
174 case 31:
175 case 29:
176 case 27:
177 case 25:
178 case 23:
179 case 21:
180 case 19:
181 case 17:{
182 return (0x07000000);
183 }
184 case 30:
185 case 28:
186 case 26:
187 case 24:
188 case 22:
189 case 20:
190 case 18:
191 case 16:{
192 return (0x00070000);
193 }
194 case 15:
195 case 13:
196 case 11:
197 case 9:
198 case 7:
199 case 5:
200 case 3:
201 case 1:{
202 return (0x00000700);
203 }
204 case 14:
205 case 12:
206 case 10:
207 case 8:
208 case 6:
209 case 4:
210 case 2:
211 case 0:{
212 return (0x00000007);
213 }
214 }
215 return 0x00000000;
216}
217
218static void
219tx4938_irq_pic_modify(unsigned pic_reg, unsigned clr_bits, unsigned set_bits)
220{
221 unsigned long val = 0;
222
223 val = TX4938_RD(pic_reg);
224 val &= (~clr_bits);
225 val |= (set_bits);
226 TX4938_WR(pic_reg, val);
227 mmiowb();
228 TX4938_RD(pic_reg);
229}
230
231static void __init
232tx4938_irq_pic_init(void)
233{
234 int i;
235
236 for (i = TX4938_IRQ_PIC_BEG; i <= TX4938_IRQ_PIC_END; i++)
237 set_irq_chip_and_handler(i, &tx4938_irq_pic_type,
238 handle_level_irq);
239
240 setup_irq(TX4938_IRQ_NEST_PIC_ON_CP0, &tx4938_irq_pic_action);
241
242 TX4938_WR(0xff1ff640, 0x6); /* irq level mask -- only accept hightest */
243 TX4938_WR(0xff1ff600, TX4938_RD(0xff1ff600) | 0x1); /* irq enable */
244}
245
246static void
247tx4938_irq_pic_enable(unsigned int irq)
248{
249 tx4938_irq_pic_modify(tx4938_irq_pic_addr(irq), 0,
250 tx4938_irq_pic_mask(irq));
251}
252
253static void
254tx4938_irq_pic_disable(unsigned int irq)
255{
256 tx4938_irq_pic_modify(tx4938_irq_pic_addr(irq),
257 tx4938_irq_pic_mask(irq), 0);
258}
259
260/**********************************************************************************/
261/* Main init functions */
262/**********************************************************************************/
263
264void __init 20void __init
265tx4938_irq_init(void) 21tx4938_irq_init(void)
266{ 22{
267 tx4938_irq_cp0_init(); 23 mips_cpu_irq_init();
268 tx4938_irq_pic_init(); 24 txx9_irq_init(TX4938_IRC_REG);
25 set_irq_chained_handler(TX4938_IRQ_NEST_PIC_ON_CP0, handle_simple_irq);
269} 26}
270 27
271int 28int toshiba_rbtx4938_irq_nested(int irq);
272tx4938_irq_nested(void)
273{
274 int sw_irq = 0;
275 u32 level2;
276
277 level2 = TX4938_RD(0xff1ff6a0);
278 if ((level2 & 0x10000) == 0) {
279 level2 &= 0x1f;
280 sw_irq = TX4938_IRQ_PIC_BEG + level2;
281 if (sw_irq == 26) {
282 {
283 extern int toshiba_rbtx4938_irq_nested(int sw_irq);
284 sw_irq = toshiba_rbtx4938_irq_nested(sw_irq);
285 }
286 }
287 }
288
289 wbflush();
290 return sw_irq;
291}
292 29
293asmlinkage void plat_irq_dispatch(void) 30asmlinkage void plat_irq_dispatch(void)
294{ 31{
@@ -297,8 +34,10 @@ asmlinkage void plat_irq_dispatch(void)
297 if (pending & STATUSF_IP7) 34 if (pending & STATUSF_IP7)
298 do_IRQ(TX4938_IRQ_CPU_TIMER); 35 do_IRQ(TX4938_IRQ_CPU_TIMER);
299 else if (pending & STATUSF_IP2) { 36 else if (pending & STATUSF_IP2) {
300 int irq = tx4938_irq_nested(); 37 int irq = txx9_irq();
301 if (irq) 38 if (irq == TX4938_IRQ_PIC_BEG + TX4938_IR_INT(0))
39 irq = toshiba_rbtx4938_irq_nested(irq);
40 if (irq >= 0)
302 do_IRQ(irq); 41 do_IRQ(irq);
303 else 42 else
304 spurious_interrupt(); 43 spurious_interrupt();
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/Makefile b/arch/mips/tx4938/toshiba_rbtx4938/Makefile
index 10c94e62bf5b..675bb1c3e40c 100644
--- a/arch/mips/tx4938/toshiba_rbtx4938/Makefile
+++ b/arch/mips/tx4938/toshiba_rbtx4938/Makefile
@@ -7,3 +7,5 @@
7# 7#
8 8
9obj-y += prom.o setup.o irq.o spi_eeprom.o 9obj-y += prom.o setup.o irq.o spi_eeprom.o
10
11EXTRA_CFLAGS += -Werror
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/irq.c b/arch/mips/tx4938/toshiba_rbtx4938/irq.c
index 91aea7aff515..f00185017e80 100644
--- a/arch/mips/tx4938/toshiba_rbtx4938/irq.c
+++ b/arch/mips/tx4938/toshiba_rbtx4938/irq.c
@@ -181,7 +181,7 @@ void __init arch_init_irq(void)
181 tx4938_irq_init(); 181 tx4938_irq_init();
182 toshiba_rbtx4938_irq_ioc_init(); 182 toshiba_rbtx4938_irq_ioc_init();
183 /* Onboard 10M Ether: High Active */ 183 /* Onboard 10M Ether: High Active */
184 TX4938_WR(TX4938_MKA(TX4938_IRC_IRDM0), 0x00000040); 184 set_irq_type(RBTX4938_IRQ_ETHER, IRQF_TRIGGER_HIGH);
185 185
186 wbflush(); 186 wbflush();
187} 187}
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/setup.c b/arch/mips/tx4938/toshiba_rbtx4938/setup.c
index f9ad482749e4..84ebff711e6e 100644
--- a/arch/mips/tx4938/toshiba_rbtx4938/setup.c
+++ b/arch/mips/tx4938/toshiba_rbtx4938/setup.c
@@ -773,10 +773,6 @@ void __init tx4938_board_setup(void)
773 txboard_add_phys_region(base, size); 773 txboard_add_phys_region(base, size);
774 } 774 }
775 775
776 /* IRC */
777 /* disable interrupt control */
778 tx4938_ircptr->cer = 0;
779
780 /* TMR */ 776 /* TMR */
781 /* disable all timers */ 777 /* disable all timers */
782 for (i = 0; i < TX4938_NR_TMR; i++) { 778 for (i = 0; i < TX4938_NR_TMR; i++) {
@@ -875,9 +871,6 @@ void __init toshiba_rbtx4938_setup(void)
875 if (txx9_master_clock == 0) 871 if (txx9_master_clock == 0)
876 txx9_master_clock = 25000000; /* 25MHz */ 872 txx9_master_clock = 25000000; /* 25MHz */
877 tx4938_board_setup(); 873 tx4938_board_setup();
878 /* setup irq stuff */
879 TX4938_WR(TX4938_MKA(TX4938_IRC_IRDM0), 0x00000000); /* irq trigger */
880 TX4938_WR(TX4938_MKA(TX4938_IRC_IRDM1), 0x00000000); /* irq trigger */
881 /* setup serial stuff */ 874 /* setup serial stuff */
882 TX4938_WR(0xff1ff314, 0x00000000); /* h/w flow control off */ 875 TX4938_WR(0xff1ff314, 0x00000000); /* h/w flow control off */
883 TX4938_WR(0xff1ff414, 0x00000000); /* h/w flow control off */ 876 TX4938_WR(0xff1ff414, 0x00000000); /* h/w flow control off */
@@ -897,7 +890,7 @@ void __init toshiba_rbtx4938_setup(void)
897 req.iotype = UPIO_MEM; 890 req.iotype = UPIO_MEM;
898 req.membase = (char *)(0xff1ff300 + i * 0x100); 891 req.membase = (char *)(0xff1ff300 + i * 0x100);
899 req.mapbase = 0xff1ff300 + i * 0x100; 892 req.mapbase = 0xff1ff300 + i * 0x100;
900 req.irq = 32 + i; 893 req.irq = RBTX4938_IRQ_IRC_SIO(i);
901 req.flags |= UPF_BUGGY_UART /*HAVE_CTS_LINE*/; 894 req.flags |= UPF_BUGGY_UART /*HAVE_CTS_LINE*/;
902 req.uartclk = 50000000; 895 req.uartclk = 50000000;
903 early_serial_txx9_setup(&req); 896 early_serial_txx9_setup(&req);
@@ -1122,7 +1115,7 @@ static void __init txx9_spi_init(unsigned long base, int irq)
1122static int __init rbtx4938_spi_init(void) 1115static int __init rbtx4938_spi_init(void)
1123{ 1116{
1124 struct spi_board_info srtc_info = { 1117 struct spi_board_info srtc_info = {
1125 .modalias = "rs5c348", 1118 .modalias = "rtc-rs5c348",
1126 .max_speed_hz = 1000000, /* 1.0Mbps @ Vdd 2.0V */ 1119 .max_speed_hz = 1000000, /* 1.0Mbps @ Vdd 2.0V */
1127 .bus_num = 0, 1120 .bus_num = 0,
1128 .chip_select = 16 + SRTC_CS, 1121 .chip_select = 16 + SRTC_CS,
diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c
index bb23ff71c28e..2989c6682bf6 100644
--- a/arch/parisc/kernel/sys_parisc32.c
+++ b/arch/parisc/kernel/sys_parisc32.c
@@ -285,147 +285,6 @@ int cp_compat_stat(struct kstat *stat, struct compat_stat __user *statbuf)
285 return err; 285 return err;
286} 286}
287 287
288struct linux32_dirent {
289 u32 d_ino;
290 compat_off_t d_off;
291 u16 d_reclen;
292 char d_name[1];
293};
294
295struct old_linux32_dirent {
296 u32 d_ino;
297 u32 d_offset;
298 u16 d_namlen;
299 char d_name[1];
300};
301
302struct getdents32_callback {
303 struct linux32_dirent __user * current_dir;
304 struct linux32_dirent __user * previous;
305 int count;
306 int error;
307};
308
309struct readdir32_callback {
310 struct old_linux32_dirent __user * dirent;
311 int count;
312};
313
314#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
315static int filldir32 (void *__buf, const char *name, int namlen,
316 loff_t offset, u64 ino, unsigned int d_type)
317{
318 struct linux32_dirent __user * dirent;
319 struct getdents32_callback * buf = (struct getdents32_callback *) __buf;
320 int reclen = ALIGN(NAME_OFFSET(dirent) + namlen + 1, 4);
321 u32 d_ino;
322
323 buf->error = -EINVAL; /* only used if we fail.. */
324 if (reclen > buf->count)
325 return -EINVAL;
326 d_ino = ino;
327 if (sizeof(d_ino) < sizeof(ino) && d_ino != ino)
328 return -EOVERFLOW;
329 dirent = buf->previous;
330 if (dirent)
331 put_user(offset, &dirent->d_off);
332 dirent = buf->current_dir;
333 buf->previous = dirent;
334 put_user(d_ino, &dirent->d_ino);
335 put_user(reclen, &dirent->d_reclen);
336 copy_to_user(dirent->d_name, name, namlen);
337 put_user(0, dirent->d_name + namlen);
338 dirent = ((void __user *)dirent) + reclen;
339 buf->current_dir = dirent;
340 buf->count -= reclen;
341 return 0;
342}
343
344asmlinkage long
345sys32_getdents (unsigned int fd, void __user * dirent, unsigned int count)
346{
347 struct file * file;
348 struct linux32_dirent __user * lastdirent;
349 struct getdents32_callback buf;
350 int error;
351
352 error = -EFAULT;
353 if (!access_ok(VERIFY_WRITE, dirent, count))
354 goto out;
355
356 error = -EBADF;
357 file = fget(fd);
358 if (!file)
359 goto out;
360
361 buf.current_dir = (struct linux32_dirent __user *) dirent;
362 buf.previous = NULL;
363 buf.count = count;
364 buf.error = 0;
365
366 error = vfs_readdir(file, filldir32, &buf);
367 if (error < 0)
368 goto out_putf;
369 error = buf.error;
370 lastdirent = buf.previous;
371 if (lastdirent) {
372 if (put_user(file->f_pos, &lastdirent->d_off))
373 error = -EFAULT;
374 else
375 error = count - buf.count;
376 }
377
378out_putf:
379 fput(file);
380out:
381 return error;
382}
383
384static int fillonedir32(void * __buf, const char * name, int namlen,
385 loff_t offset, u64 ino, unsigned int d_type)
386{
387 struct readdir32_callback * buf = (struct readdir32_callback *) __buf;
388 struct old_linux32_dirent __user * dirent;
389 u32 d_ino;
390
391 if (buf->count)
392 return -EINVAL;
393 d_ino = ino;
394 if (sizeof(d_ino) < sizeof(ino) && d_ino != ino)
395 return -EOVERFLOW;
396 buf->count++;
397 dirent = buf->dirent;
398 put_user(d_ino, &dirent->d_ino);
399 put_user(offset, &dirent->d_offset);
400 put_user(namlen, &dirent->d_namlen);
401 copy_to_user(dirent->d_name, name, namlen);
402 put_user(0, dirent->d_name + namlen);
403 return 0;
404}
405
406asmlinkage long
407sys32_readdir (unsigned int fd, void __user * dirent, unsigned int count)
408{
409 int error;
410 struct file * file;
411 struct readdir32_callback buf;
412
413 error = -EBADF;
414 file = fget(fd);
415 if (!file)
416 goto out;
417
418 buf.count = 0;
419 buf.dirent = dirent;
420
421 error = vfs_readdir(file, fillonedir32, &buf);
422 if (error >= 0)
423 error = buf.count;
424 fput(file);
425out:
426 return error;
427}
428
429/*** copied from mips64 ***/ 288/*** copied from mips64 ***/
430/* 289/*
431 * Ooo, nasty. We need here to frob 32-bit unsigned longs to 290 * Ooo, nasty. We need here to frob 32-bit unsigned longs to
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
index 627f3c28ad8c..2540786a970f 100644
--- a/arch/parisc/kernel/syscall_table.S
+++ b/arch/parisc/kernel/syscall_table.S
@@ -222,9 +222,7 @@
222 ENTRY_SAME(setfsgid) 222 ENTRY_SAME(setfsgid)
223 /* I think this might work */ 223 /* I think this might work */
224 ENTRY_SAME(llseek) /* 140 */ 224 ENTRY_SAME(llseek) /* 140 */
225 /* struct linux_dirent has longs, like 'unsigned long d_ino' which 225 ENTRY_COMP(getdents)
226 * almost definitely should be 'ino_t d_ino' but it's too late now */
227 ENTRY_DIFF(getdents)
228 /* it is POSSIBLE that select will be OK because even though fd_set 226 /* it is POSSIBLE that select will be OK because even though fd_set
229 * contains longs, the macros and sizes are clever. */ 227 * contains longs, the macros and sizes are clever. */
230 ENTRY_COMP(select) 228 ENTRY_COMP(select)
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S
index d4e6a93c8d9a..ee7a16eb6fdd 100644
--- a/arch/parisc/kernel/vmlinux.lds.S
+++ b/arch/parisc/kernel/vmlinux.lds.S
@@ -81,6 +81,8 @@ SECTIONS
81 __ex_table : { *(__ex_table) } 81 __ex_table : { *(__ex_table) }
82 __stop___ex_table = .; 82 __stop___ex_table = .;
83 83
84 NOTES
85
84 __start___unwind = .; /* unwind info */ 86 __start___unwind = .; /* unwind info */
85 .PARISC.unwind : { *(.PARISC.unwind) } 87 .PARISC.unwind : { *(.PARISC.unwind) }
86 __stop___unwind = .; 88 __stop___unwind = .;
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts
index 4680e2010887..3e79bf0a3159 100644
--- a/arch/powerpc/boot/dts/mpc8544ds.dts
+++ b/arch/powerpc/boot/dts/mpc8544ds.dts
@@ -44,8 +44,18 @@
44 #size-cells = <1>; 44 #size-cells = <1>;
45 #interrupt-cells = <2>; 45 #interrupt-cells = <2>;
46 device_type = "soc"; 46 device_type = "soc";
47 ranges = <0 e0000000 00100000>; 47
48 reg = <e0000000 00100000>; // CCSRBAR 1M 48
49 ranges = <00001000 e0001000 000ff000
50 80000000 80000000 20000000
51 a0000000 a0000000 10000000
52 b0000000 b0000000 00100000
53 c0000000 c0000000 20000000
54 b0100000 b0100000 00100000
55 e1000000 e1000000 00010000
56 e1010000 e1010000 00010000
57 e1020000 e1020000 00010000>;
58 reg = <e0000000 00001000>; // CCSRBAR 1M
49 bus-frequency = <0>; // Filled out by uboot. 59 bus-frequency = <0>; // Filled out by uboot.
50 60
51 memory-controller@2000 { 61 memory-controller@2000 {
@@ -161,8 +171,8 @@
161 interrupt-parent = <&mpic>; 171 interrupt-parent = <&mpic>;
162 interrupts = <18 2>; 172 interrupts = <18 2>;
163 bus-range = <0 ff>; 173 bus-range = <0 ff>;
164 ranges = <02000000 0 80000000 80000000 0 10000000 174 ranges = <02000000 0 c0000000 c0000000 0 20000000
165 01000000 0 00000000 e2000000 0 00800000>; 175 01000000 0 00000000 e1000000 0 00010000>;
166 clock-frequency = <3f940aa>; 176 clock-frequency = <3f940aa>;
167 #interrupt-cells = <1>; 177 #interrupt-cells = <1>;
168 #size-cells = <2>; 178 #size-cells = <2>;
@@ -178,8 +188,8 @@
178 #address-cells = <3>; 188 #address-cells = <3>;
179 reg = <9000 1000>; 189 reg = <9000 1000>;
180 bus-range = <0 ff>; 190 bus-range = <0 ff>;
181 ranges = <02000000 0 90000000 90000000 0 10000000 191 ranges = <02000000 0 80000000 80000000 0 20000000
182 01000000 0 00000000 e3000000 0 00800000>; 192 01000000 0 00000000 e1010000 0 00010000>;
183 clock-frequency = <1fca055>; 193 clock-frequency = <1fca055>;
184 interrupt-parent = <&mpic>; 194 interrupt-parent = <&mpic>;
185 interrupts = <1a 2>; 195 interrupts = <1a 2>;
@@ -202,7 +212,7 @@
202 reg = <a000 1000>; 212 reg = <a000 1000>;
203 bus-range = <0 ff>; 213 bus-range = <0 ff>;
204 ranges = <02000000 0 a0000000 a0000000 0 10000000 214 ranges = <02000000 0 a0000000 a0000000 0 10000000
205 01000000 0 00000000 e2800000 0 00800000>; 215 01000000 0 00000000 e1020000 0 00010000>;
206 clock-frequency = <1fca055>; 216 clock-frequency = <1fca055>;
207 interrupt-parent = <&mpic>; 217 interrupt-parent = <&mpic>;
208 interrupts = <19 2>; 218 interrupts = <19 2>;
@@ -224,49 +234,29 @@
224 #address-cells = <3>; 234 #address-cells = <3>;
225 reg = <b000 1000>; 235 reg = <b000 1000>;
226 bus-range = <0 ff>; 236 bus-range = <0 ff>;
227 ranges = <02000000 0 b0000000 b0000000 0 10000000 237 ranges = <02000000 0 b0000000 b0000000 0 00100000
228 01000000 0 00000000 e3800000 0 00800000>; 238 01000000 0 00000000 b0100000 0 00100000>;
229 clock-frequency = <1fca055>; 239 clock-frequency = <1fca055>;
230 interrupt-parent = <&mpic>; 240 interrupt-parent = <&mpic>;
231 interrupts = <1b 2>; 241 interrupts = <1b 2>;
232 interrupt-map-mask = <f800 0 0 7>; 242 interrupt-map-mask = <fb00 0 0 0>;
233 interrupt-map = < 243 interrupt-map = <
234
235 // IDSEL 0x1a
236 d000 0 0 1 &i8259 6 2
237 d000 0 0 2 &i8259 3 2
238 d000 0 0 3 &i8259 4 2
239 d000 0 0 4 &i8259 5 2
240
241 // IDSEL 0x1b
242 d800 0 0 1 &i8259 5 2
243 d800 0 0 2 &i8259 0 0
244 d800 0 0 3 &i8259 0 0
245 d800 0 0 4 &i8259 0 0
246
247 // IDSEL 0x1c USB 244 // IDSEL 0x1c USB
248 e000 0 0 1 &i8259 9 2 245 e000 0 0 0 &i8259 c 2
249 e000 0 0 2 &i8259 a 2 246 e100 0 0 0 &i8259 9 2
250 e000 0 0 3 &i8259 c 2 247 e200 0 0 0 &i8259 a 2
251 e000 0 0 4 &i8259 7 2 248 e300 0 0 0 &i8259 b 2
252 249
253 // IDSEL 0x1d Audio 250 // IDSEL 0x1d Audio
254 e800 0 0 1 &i8259 9 2 251 e800 0 0 0 &i8259 6 2
255 e800 0 0 2 &i8259 a 2
256 e800 0 0 3 &i8259 b 2
257 e800 0 0 4 &i8259 0 0
258 252
259 // IDSEL 0x1e Legacy 253 // IDSEL 0x1e Legacy
260 f000 0 0 1 &i8259 c 2 254 f000 0 0 0 &i8259 7 2
261 f000 0 0 2 &i8259 0 0 255 f100 0 0 0 &i8259 7 2
262 f000 0 0 3 &i8259 0 0
263 f000 0 0 4 &i8259 0 0
264 256
265 // IDSEL 0x1f IDE/SATA 257 // IDSEL 0x1f IDE/SATA
266 f800 0 0 1 &i8259 6 2 258 f800 0 0 0 &i8259 e 2
267 f800 0 0 2 &i8259 0 0 259 f900 0 0 0 &i8259 5 2
268 f800 0 0 3 &i8259 0 0
269 f800 0 0 4 &i8259 0 0
270 >; 260 >;
271 uli1575@0 { 261 uli1575@0 {
272 reg = <0 0 0 0 0>; 262 reg = <0 0 0 0 0>;
@@ -274,10 +264,10 @@
274 #address-cells = <3>; 264 #address-cells = <3>;
275 ranges = <02000000 0 b0000000 265 ranges = <02000000 0 b0000000
276 02000000 0 b0000000 266 02000000 0 b0000000
277 0 10000000 267 0 00100000
278 01000000 0 00000000 268 01000000 0 00000000
279 01000000 0 00000000 269 01000000 0 00000000
280 0 00080000>; 270 0 00100000>;
281 271
282 pci_bridge@0 { 272 pci_bridge@0 {
283 reg = <0 0 0 0 0>; 273 reg = <0 0 0 0 0>;
@@ -285,10 +275,10 @@
285 #address-cells = <3>; 275 #address-cells = <3>;
286 ranges = <02000000 0 b0000000 276 ranges = <02000000 0 b0000000
287 02000000 0 b0000000 277 02000000 0 b0000000
288 0 20000000 278 0 00100000
289 01000000 0 00000000 279 01000000 0 00000000
290 01000000 0 00000000 280 01000000 0 00000000
291 0 00100000>; 281 0 00100000>;
292 282
293 isa@1e { 283 isa@1e {
294 device_type = "isa"; 284 device_type = "isa";
@@ -296,7 +286,8 @@
296 #size-cells = <1>; 286 #size-cells = <1>;
297 #address-cells = <2>; 287 #address-cells = <2>;
298 reg = <f000 0 0 0 0>; 288 reg = <f000 0 0 0 0>;
299 ranges = <1 0 01000000 0 0 289 ranges = <1 0
290 01000000 0 0
300 00001000>; 291 00001000>;
301 interrupt-parent = <&i8259>; 292 interrupt-parent = <&i8259>;
302 293
@@ -312,8 +303,7 @@
312 built-in; 303 built-in;
313 compatible = "chrp,iic"; 304 compatible = "chrp,iic";
314 interrupts = <9 2>; 305 interrupts = <9 2>;
315 interrupt-parent = 306 interrupt-parent = <&mpic>;
316 <&mpic>;
317 }; 307 };
318 308
319 i8042@60 { 309 i8042@60 {
@@ -321,8 +311,7 @@
321 #address-cells = <1>; 311 #address-cells = <1>;
322 reg = <1 60 1 1 64 1>; 312 reg = <1 60 1 1 64 1>;
323 interrupts = <1 3 c 3>; 313 interrupts = <1 3 c 3>;
324 interrupt-parent = 314 interrupt-parent = <&i8259>;
325 <&i8259>;
326 315
327 keyboard@0 { 316 keyboard@0 {
328 reg = <0>; 317 reg = <0>;
@@ -336,8 +325,7 @@
336 }; 325 };
337 326
338 rtc@70 { 327 rtc@70 {
339 compatible = 328 compatible = "pnpPNP,b00";
340 "pnpPNP,b00";
341 reg = <1 70 2>; 329 reg = <1 70 2>;
342 }; 330 };
343 331
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
index 5d82709cfcbb..b0166e5c177e 100644
--- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts
+++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
@@ -224,98 +224,36 @@
224 clock-frequency = <1fca055>; 224 clock-frequency = <1fca055>;
225 interrupt-parent = <&mpic>; 225 interrupt-parent = <&mpic>;
226 interrupts = <18 2>; 226 interrupts = <18 2>;
227 interrupt-map-mask = <f800 0 0 7>; 227 interrupt-map-mask = <fb00 0 0 0>;
228 interrupt-map = < 228 interrupt-map = <
229 /* IDSEL 0x11 */ 229 /* IDSEL 0x11 */
230 8800 0 0 1 &i8259 3 2 230 8800 0 0 1 &i8259 9 2
231 8800 0 0 2 &i8259 4 2 231 8800 0 0 2 &i8259 a 2
232 8800 0 0 3 &i8259 5 2 232 8800 0 0 3 &i8259 b 2
233 8800 0 0 4 &i8259 6 2 233 8800 0 0 4 &i8259 c 2
234 234
235 /* IDSEL 0x12 */ 235 /* IDSEL 0x12 */
236 9000 0 0 1 &i8259 4 2 236 9000 0 0 1 &i8259 a 2
237 9000 0 0 2 &i8259 5 2 237 9000 0 0 2 &i8259 b 2
238 9000 0 0 3 &i8259 6 2 238 9000 0 0 3 &i8259 c 2
239 9000 0 0 4 &i8259 3 2 239 9000 0 0 4 &i8259 9 2
240 240
241 /* IDSEL 0x13 */ 241 // IDSEL 0x1c USB
242 9800 0 0 1 &i8259 0 0 242 e000 0 0 0 &i8259 c 2
243 9800 0 0 2 &i8259 0 0 243 e100 0 0 0 &i8259 9 2
244 9800 0 0 3 &i8259 0 0 244 e200 0 0 0 &i8259 a 2
245 9800 0 0 4 &i8259 0 0 245 e300 0 0 0 &i8259 b 2
246 246
247 /* IDSEL 0x14 */ 247 // IDSEL 0x1d Audio
248 a000 0 0 1 &i8259 0 0 248 e800 0 0 0 &i8259 6 2
249 a000 0 0 2 &i8259 0 0 249
250 a000 0 0 3 &i8259 0 0 250 // IDSEL 0x1e Legacy
251 a000 0 0 4 &i8259 0 0 251 f000 0 0 0 &i8259 7 2
252 252 f100 0 0 0 &i8259 7 2
253 /* IDSEL 0x15 */ 253
254 a800 0 0 1 &i8259 0 0 254 // IDSEL 0x1f IDE/SATA
255 a800 0 0 2 &i8259 0 0 255 f800 0 0 0 &i8259 e 2
256 a800 0 0 3 &i8259 0 0 256 f900 0 0 0 &i8259 5 2
257 a800 0 0 4 &i8259 0 0
258
259 /* IDSEL 0x16 */
260 b000 0 0 1 &i8259 0 0
261 b000 0 0 2 &i8259 0 0
262 b000 0 0 3 &i8259 0 0
263 b000 0 0 4 &i8259 0 0
264
265 /* IDSEL 0x17 */
266 b800 0 0 1 &i8259 0 0
267 b800 0 0 2 &i8259 0 0
268 b800 0 0 3 &i8259 0 0
269 b800 0 0 4 &i8259 0 0
270
271 /* IDSEL 0x18 */
272 c000 0 0 1 &i8259 0 0
273 c000 0 0 2 &i8259 0 0
274 c000 0 0 3 &i8259 0 0
275 c000 0 0 4 &i8259 0 0
276
277 /* IDSEL 0x19 */
278 c800 0 0 1 &i8259 0 0
279 c800 0 0 2 &i8259 0 0
280 c800 0 0 3 &i8259 0 0
281 c800 0 0 4 &i8259 0 0
282
283 /* IDSEL 0x1a */
284 d000 0 0 1 &i8259 6 2
285 d000 0 0 2 &i8259 3 2
286 d000 0 0 3 &i8259 4 2
287 d000 0 0 4 &i8259 5 2
288
289
290 /* IDSEL 0x1b */
291 d800 0 0 1 &i8259 5 2
292 d800 0 0 2 &i8259 0 0
293 d800 0 0 3 &i8259 0 0
294 d800 0 0 4 &i8259 0 0
295
296 /* IDSEL 0x1c */
297 e000 0 0 1 &i8259 9 2
298 e000 0 0 2 &i8259 a 2
299 e000 0 0 3 &i8259 c 2
300 e000 0 0 4 &i8259 7 2
301
302 /* IDSEL 0x1d */
303 e800 0 0 1 &i8259 9 2
304 e800 0 0 2 &i8259 a 2
305 e800 0 0 3 &i8259 b 2
306 e800 0 0 4 &i8259 0 0
307
308 /* IDSEL 0x1e */
309 f000 0 0 1 &i8259 c 2
310 f000 0 0 2 &i8259 0 0
311 f000 0 0 3 &i8259 0 0
312 f000 0 0 4 &i8259 0 0
313
314 /* IDSEL 0x1f */
315 f800 0 0 1 &i8259 6 2
316 f800 0 0 2 &i8259 0 0
317 f800 0 0 3 &i8259 0 0
318 f800 0 0 4 &i8259 0 0
319 >; 257 >;
320 uli1575@0 { 258 uli1575@0 {
321 reg = <0 0 0 0 0>; 259 reg = <0 0 0 0 0>;
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig
index d9ac24e8de16..8b47c846421c 100644
--- a/arch/powerpc/configs/cell_defconfig
+++ b/arch/powerpc/configs/cell_defconfig
@@ -1,9 +1,23 @@
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-rc6 3# Linux kernel version: 2.6.23-rc3
4# Tue Jun 26 12:32:34 2007 4# Wed Aug 22 15:19:19 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7
8#
9# Processor support
10#
11# CONFIG_POWER4_ONLY is not set
12CONFIG_POWER3=y
13CONFIG_POWER4=y
14CONFIG_PPC_FPU=y
15CONFIG_ALTIVEC=y
16CONFIG_PPC_STD_MMU=y
17CONFIG_PPC_MM_SLICES=y
18CONFIG_VIRT_CPU_ACCOUNTING=y
19CONFIG_SMP=y
20CONFIG_NR_CPUS=4
7CONFIG_64BIT=y 21CONFIG_64BIT=y
8CONFIG_PPC_MERGE=y 22CONFIG_PPC_MERGE=y
9CONFIG_MMU=y 23CONFIG_MMU=y
@@ -15,6 +29,7 @@ CONFIG_ARCH_HAS_ILOG2_U64=y
15CONFIG_GENERIC_HWEIGHT=y 29CONFIG_GENERIC_HWEIGHT=y
16CONFIG_GENERIC_CALIBRATE_DELAY=y 30CONFIG_GENERIC_CALIBRATE_DELAY=y
17CONFIG_GENERIC_FIND_NEXT_BIT=y 31CONFIG_GENERIC_FIND_NEXT_BIT=y
32CONFIG_ARCH_NO_VIRT_TO_BUS=y
18CONFIG_PPC=y 33CONFIG_PPC=y
19CONFIG_EARLY_PRINTK=y 34CONFIG_EARLY_PRINTK=y
20CONFIG_COMPAT=y 35CONFIG_COMPAT=y
@@ -22,51 +37,33 @@ CONFIG_SYSVIPC_COMPAT=y
22CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 37CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
23CONFIG_ARCH_MAY_HAVE_PC_FDC=y 38CONFIG_ARCH_MAY_HAVE_PC_FDC=y
24CONFIG_PPC_OF=y 39CONFIG_PPC_OF=y
40CONFIG_OF=y
25CONFIG_PPC_UDBG_16550=y 41CONFIG_PPC_UDBG_16550=y
26# CONFIG_GENERIC_TBSYNC is not set 42# CONFIG_GENERIC_TBSYNC is not set
27CONFIG_AUDIT_ARCH=y 43CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y 44CONFIG_GENERIC_BUG=y
29# CONFIG_DEFAULT_UIMAGE is not set 45# CONFIG_DEFAULT_UIMAGE is not set
30
31#
32# Processor support
33#
34# CONFIG_POWER4_ONLY is not set
35CONFIG_POWER3=y
36CONFIG_POWER4=y
37CONFIG_PPC_FPU=y
38# CONFIG_PPC_DCR_NATIVE is not set 46# CONFIG_PPC_DCR_NATIVE is not set
39CONFIG_PPC_DCR_MMIO=y 47CONFIG_PPC_DCR_MMIO=y
40CONFIG_PPC_DCR=y 48CONFIG_PPC_DCR=y
41CONFIG_PPC_OF_PLATFORM_PCI=y 49CONFIG_PPC_OF_PLATFORM_PCI=y
42CONFIG_ALTIVEC=y
43CONFIG_PPC_STD_MMU=y
44CONFIG_PPC_MM_SLICES=y
45CONFIG_VIRT_CPU_ACCOUNTING=y
46CONFIG_SMP=y
47CONFIG_NR_CPUS=4
48CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 50CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
49 51
50# 52#
51# Code maturity level options 53# General setup
52# 54#
53CONFIG_EXPERIMENTAL=y 55CONFIG_EXPERIMENTAL=y
54CONFIG_LOCK_KERNEL=y 56CONFIG_LOCK_KERNEL=y
55CONFIG_INIT_ENV_ARG_LIMIT=32 57CONFIG_INIT_ENV_ARG_LIMIT=32
56
57#
58# General setup
59#
60CONFIG_LOCALVERSION="" 58CONFIG_LOCALVERSION=""
61CONFIG_LOCALVERSION_AUTO=y 59CONFIG_LOCALVERSION_AUTO=y
62CONFIG_SWAP=y 60CONFIG_SWAP=y
63CONFIG_SYSVIPC=y 61CONFIG_SYSVIPC=y
64# CONFIG_IPC_NS is not set
65CONFIG_SYSVIPC_SYSCTL=y 62CONFIG_SYSVIPC_SYSCTL=y
66# CONFIG_POSIX_MQUEUE is not set 63# CONFIG_POSIX_MQUEUE is not set
67# CONFIG_BSD_PROCESS_ACCT is not set 64# CONFIG_BSD_PROCESS_ACCT is not set
68# CONFIG_TASKSTATS is not set 65# CONFIG_TASKSTATS is not set
69# CONFIG_UTS_NS is not set 66# CONFIG_USER_NS is not set
70# CONFIG_AUDIT is not set 67# CONFIG_AUDIT is not set
71CONFIG_IKCONFIG=y 68CONFIG_IKCONFIG=y
72CONFIG_IKCONFIG_PROC=y 69CONFIG_IKCONFIG_PROC=y
@@ -96,16 +93,13 @@ CONFIG_TIMERFD=y
96CONFIG_EVENTFD=y 93CONFIG_EVENTFD=y
97CONFIG_SHMEM=y 94CONFIG_SHMEM=y
98CONFIG_VM_EVENT_COUNTERS=y 95CONFIG_VM_EVENT_COUNTERS=y
99CONFIG_SLAB=y 96CONFIG_SLUB_DEBUG=y
100# CONFIG_SLUB is not set 97# CONFIG_SLAB is not set
98CONFIG_SLUB=y
101# CONFIG_SLOB is not set 99# CONFIG_SLOB is not set
102CONFIG_RT_MUTEXES=y 100CONFIG_RT_MUTEXES=y
103# CONFIG_TINY_SHMEM is not set 101# CONFIG_TINY_SHMEM is not set
104CONFIG_BASE_SMALL=0 102CONFIG_BASE_SMALL=0
105
106#
107# Loadable module support
108#
109CONFIG_MODULES=y 103CONFIG_MODULES=y
110CONFIG_MODULE_UNLOAD=y 104CONFIG_MODULE_UNLOAD=y
111# CONFIG_MODULE_FORCE_UNLOAD is not set 105# CONFIG_MODULE_FORCE_UNLOAD is not set
@@ -113,12 +107,9 @@ CONFIG_MODULE_UNLOAD=y
113# CONFIG_MODULE_SRCVERSION_ALL is not set 107# CONFIG_MODULE_SRCVERSION_ALL is not set
114CONFIG_KMOD=y 108CONFIG_KMOD=y
115CONFIG_STOP_MACHINE=y 109CONFIG_STOP_MACHINE=y
116
117#
118# Block layer
119#
120CONFIG_BLOCK=y 110CONFIG_BLOCK=y
121# CONFIG_BLK_DEV_IO_TRACE is not set 111# CONFIG_BLK_DEV_IO_TRACE is not set
112# CONFIG_BLK_DEV_BSG is not set
122 113
123# 114#
124# IO Schedulers 115# IO Schedulers
@@ -138,7 +129,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
138# 129#
139CONFIG_PPC_MULTIPLATFORM=y 130CONFIG_PPC_MULTIPLATFORM=y
140# CONFIG_EMBEDDED6xx is not set 131# CONFIG_EMBEDDED6xx is not set
141# CONFIG_APUS is not set 132# CONFIG_PPC_82xx is not set
133# CONFIG_PPC_83xx is not set
134# CONFIG_PPC_86xx is not set
142# CONFIG_PPC_PSERIES is not set 135# CONFIG_PPC_PSERIES is not set
143# CONFIG_PPC_ISERIES is not set 136# CONFIG_PPC_ISERIES is not set
144# CONFIG_PPC_MPC52xx is not set 137# CONFIG_PPC_MPC52xx is not set
@@ -158,7 +151,11 @@ CONFIG_PS3_HTAB_SIZE=20
158CONFIG_PS3_USE_LPAR_ADDR=y 151CONFIG_PS3_USE_LPAR_ADDR=y
159CONFIG_PS3_VUART=y 152CONFIG_PS3_VUART=y
160CONFIG_PS3_PS3AV=y 153CONFIG_PS3_PS3AV=y
161CONFIG_PS3_SYS_MANAGER=y 154CONFIG_PS3_SYS_MANAGER=m
155CONFIG_PS3_STORAGE=y
156CONFIG_PS3_DISK=y
157CONFIG_PS3_ROM=m
158CONFIG_PS3_FLASH=m
162CONFIG_PPC_CELL=y 159CONFIG_PPC_CELL=y
163CONFIG_PPC_CELL_NATIVE=y 160CONFIG_PPC_CELL_NATIVE=y
164CONFIG_PPC_IBM_CELL_BLADE=y 161CONFIG_PPC_IBM_CELL_BLADE=y
@@ -171,6 +168,7 @@ CONFIG_SPU_BASE=y
171CONFIG_CBE_RAS=y 168CONFIG_CBE_RAS=y
172CONFIG_CBE_THERM=m 169CONFIG_CBE_THERM=m
173CONFIG_CBE_CPUFREQ=m 170CONFIG_CBE_CPUFREQ=m
171CONFIG_CBE_CPUFREQ_PMI=m
174# CONFIG_PQ2ADS is not set 172# CONFIG_PQ2ADS is not set
175CONFIG_PPC_NATIVE=y 173CONFIG_PPC_NATIVE=y
176CONFIG_UDBG_RTAS_CONSOLE=y 174CONFIG_UDBG_RTAS_CONSOLE=y
@@ -183,7 +181,7 @@ CONFIG_PPC_RTAS=y
183# CONFIG_RTAS_ERROR_LOGGING is not set 181# CONFIG_RTAS_ERROR_LOGGING is not set
184CONFIG_RTAS_PROC=y 182CONFIG_RTAS_PROC=y
185CONFIG_RTAS_FLASH=y 183CONFIG_RTAS_FLASH=y
186# CONFIG_PPC_PMI is not set 184CONFIG_PPC_PMI=m
187CONFIG_MMIO_NVRAM=y 185CONFIG_MMIO_NVRAM=y
188# CONFIG_PPC_MPC106 is not set 186# CONFIG_PPC_MPC106 is not set
189# CONFIG_PPC_970_NAP is not set 187# CONFIG_PPC_970_NAP is not set
@@ -206,6 +204,8 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
206# CPU Frequency drivers 204# CPU Frequency drivers
207# 205#
208# CONFIG_CPM2 is not set 206# CONFIG_CPM2 is not set
207CONFIG_AXON_RAM=m
208# CONFIG_FSL_ULI1575 is not set
209 209
210# 210#
211# Kernel options 211# Kernel options
@@ -248,6 +248,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
248CONFIG_MIGRATION=y 248CONFIG_MIGRATION=y
249CONFIG_RESOURCES_64BIT=y 249CONFIG_RESOURCES_64BIT=y
250CONFIG_ZONE_DMA_FLAG=1 250CONFIG_ZONE_DMA_FLAG=1
251CONFIG_BOUNCE=y
251CONFIG_ARCH_MEMORY_PROBE=y 252CONFIG_ARCH_MEMORY_PROBE=y
252CONFIG_NODES_SPAN_OTHER_NODES=y 253CONFIG_NODES_SPAN_OTHER_NODES=y
253CONFIG_PPC_HAS_HASH_64K=y 254CONFIG_PPC_HAS_HASH_64K=y
@@ -268,7 +269,9 @@ CONFIG_GENERIC_ISA_DMA=y
268# CONFIG_PPC_INDIRECT_PCI is not set 269# CONFIG_PPC_INDIRECT_PCI is not set
269CONFIG_PCI=y 270CONFIG_PCI=y
270CONFIG_PCI_DOMAINS=y 271CONFIG_PCI_DOMAINS=y
272CONFIG_PCI_SYSCALL=y
271CONFIG_PCIEPORTBUS=y 273CONFIG_PCIEPORTBUS=y
274CONFIG_PCIEAER=y
272CONFIG_ARCH_SUPPORTS_MSI=y 275CONFIG_ARCH_SUPPORTS_MSI=y
273# CONFIG_PCI_MSI is not set 276# CONFIG_PCI_MSI is not set
274# CONFIG_PCI_DEBUG is not set 277# CONFIG_PCI_DEBUG is not set
@@ -359,6 +362,7 @@ CONFIG_NETFILTER_XT_TARGET_DSCP=m
359CONFIG_NETFILTER_XT_TARGET_MARK=m 362CONFIG_NETFILTER_XT_TARGET_MARK=m
360CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 363CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
361CONFIG_NETFILTER_XT_TARGET_NFLOG=m 364CONFIG_NETFILTER_XT_TARGET_NFLOG=m
365# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
362CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 366CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
363CONFIG_NETFILTER_XT_MATCH_COMMENT=m 367CONFIG_NETFILTER_XT_MATCH_COMMENT=m
364CONFIG_NETFILTER_XT_MATCH_DCCP=m 368CONFIG_NETFILTER_XT_MATCH_DCCP=m
@@ -377,6 +381,7 @@ CONFIG_NETFILTER_XT_MATCH_SCTP=m
377CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 381CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
378CONFIG_NETFILTER_XT_MATCH_STRING=m 382CONFIG_NETFILTER_XT_MATCH_STRING=m
379CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 383CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
384CONFIG_NETFILTER_XT_MATCH_U32=m
380CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 385CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
381 386
382# 387#
@@ -448,6 +453,7 @@ CONFIG_NET_CLS_ROUTE=y
448# CONFIG_MAC80211 is not set 453# CONFIG_MAC80211 is not set
449# CONFIG_IEEE80211 is not set 454# CONFIG_IEEE80211 is not set
450# CONFIG_RFKILL is not set 455# CONFIG_RFKILL is not set
456# CONFIG_NET_9P is not set
451 457
452# 458#
453# Device Drivers 459# Device Drivers
@@ -462,28 +468,12 @@ CONFIG_FW_LOADER=y
462# CONFIG_DEBUG_DRIVER is not set 468# CONFIG_DEBUG_DRIVER is not set
463# CONFIG_DEBUG_DEVRES is not set 469# CONFIG_DEBUG_DEVRES is not set
464# CONFIG_SYS_HYPERVISOR is not set 470# CONFIG_SYS_HYPERVISOR is not set
465
466#
467# Connector - unified userspace <-> kernelspace linker
468#
469# CONFIG_CONNECTOR is not set 471# CONFIG_CONNECTOR is not set
470# CONFIG_MTD is not set 472# CONFIG_MTD is not set
471 473CONFIG_OF_DEVICE=y
472#
473# Parallel port support
474#
475# CONFIG_PARPORT is not set 474# CONFIG_PARPORT is not set
476 475CONFIG_BLK_DEV=y
477#
478# Plug and Play support
479#
480# CONFIG_PNPACPI is not set
481
482#
483# Block devices
484#
485# CONFIG_BLK_DEV_FD is not set 476# CONFIG_BLK_DEV_FD is not set
486# CONFIG_BLK_CPQ_DA is not set
487# CONFIG_BLK_CPQ_CISS_DA is not set 477# CONFIG_BLK_CPQ_CISS_DA is not set
488# CONFIG_BLK_DEV_DAC960 is not set 478# CONFIG_BLK_DEV_DAC960 is not set
489# CONFIG_BLK_DEV_UMEM is not set 479# CONFIG_BLK_DEV_UMEM is not set
@@ -499,14 +489,11 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
499CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 489CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
500# CONFIG_CDROM_PKTCDVD is not set 490# CONFIG_CDROM_PKTCDVD is not set
501# CONFIG_ATA_OVER_ETH is not set 491# CONFIG_ATA_OVER_ETH is not set
502 492CONFIG_MISC_DEVICES=y
503#
504# Misc devices
505#
506# CONFIG_PHANTOM is not set 493# CONFIG_PHANTOM is not set
494# CONFIG_EEPROM_93CX6 is not set
507# CONFIG_SGI_IOC4 is not set 495# CONFIG_SGI_IOC4 is not set
508# CONFIG_TIFM_CORE is not set 496# CONFIG_TIFM_CORE is not set
509# CONFIG_BLINK is not set
510CONFIG_IDE=y 497CONFIG_IDE=y
511CONFIG_BLK_DEV_IDE=y 498CONFIG_BLK_DEV_IDE=y
512 499
@@ -572,6 +559,7 @@ CONFIG_BLK_DEV_IDEDMA=y
572# 559#
573# CONFIG_RAID_ATTRS is not set 560# CONFIG_RAID_ATTRS is not set
574CONFIG_SCSI=y 561CONFIG_SCSI=y
562CONFIG_SCSI_DMA=y
575# CONFIG_SCSI_TGT is not set 563# CONFIG_SCSI_TGT is not set
576# CONFIG_SCSI_NETLINK is not set 564# CONFIG_SCSI_NETLINK is not set
577CONFIG_SCSI_PROC_FS=y 565CONFIG_SCSI_PROC_FS=y
@@ -604,10 +592,7 @@ CONFIG_SCSI_WAIT_SCAN=m
604# CONFIG_SCSI_ISCSI_ATTRS is not set 592# CONFIG_SCSI_ISCSI_ATTRS is not set
605CONFIG_SCSI_SAS_ATTRS=y 593CONFIG_SCSI_SAS_ATTRS=y
606# CONFIG_SCSI_SAS_LIBSAS is not set 594# CONFIG_SCSI_SAS_LIBSAS is not set
607 595CONFIG_SCSI_LOWLEVEL=y
608#
609# SCSI low-level drivers
610#
611# CONFIG_ISCSI_TCP is not set 596# CONFIG_ISCSI_TCP is not set
612# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 597# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
613# CONFIG_SCSI_3W_9XXX is not set 598# CONFIG_SCSI_3W_9XXX is not set
@@ -622,7 +607,6 @@ CONFIG_SCSI_SAS_ATTRS=y
622# CONFIG_MEGARAID_LEGACY is not set 607# CONFIG_MEGARAID_LEGACY is not set
623# CONFIG_MEGARAID_SAS is not set 608# CONFIG_MEGARAID_SAS is not set
624# CONFIG_SCSI_HPTIOP is not set 609# CONFIG_SCSI_HPTIOP is not set
625# CONFIG_SCSI_BUSLOGIC is not set
626# CONFIG_SCSI_DMX3191D is not set 610# CONFIG_SCSI_DMX3191D is not set
627# CONFIG_SCSI_EATA is not set 611# CONFIG_SCSI_EATA is not set
628# CONFIG_SCSI_FUTURE_DOMAIN is not set 612# CONFIG_SCSI_FUTURE_DOMAIN is not set
@@ -696,10 +680,6 @@ CONFIG_PATA_PDC2027X=m
696# CONFIG_PATA_VIA is not set 680# CONFIG_PATA_VIA is not set
697# CONFIG_PATA_WINBOND is not set 681# CONFIG_PATA_WINBOND is not set
698# CONFIG_PATA_SCC is not set 682# CONFIG_PATA_SCC is not set
699
700#
701# Multi-device support (RAID and LVM)
702#
703CONFIG_MD=y 683CONFIG_MD=y
704CONFIG_BLK_DEV_MD=m 684CONFIG_BLK_DEV_MD=m
705CONFIG_MD_LINEAR=m 685CONFIG_MD_LINEAR=m
@@ -717,6 +697,7 @@ CONFIG_DM_MIRROR=m
717CONFIG_DM_ZERO=m 697CONFIG_DM_ZERO=m
718CONFIG_DM_MULTIPATH=m 698CONFIG_DM_MULTIPATH=m
719# CONFIG_DM_MULTIPATH_EMC is not set 699# CONFIG_DM_MULTIPATH_EMC is not set
700# CONFIG_DM_MULTIPATH_RDAC is not set
720# CONFIG_DM_DELAY is not set 701# CONFIG_DM_DELAY is not set
721 702
722# 703#
@@ -728,43 +709,30 @@ CONFIG_FUSION=y
728CONFIG_FUSION_SAS=y 709CONFIG_FUSION_SAS=y
729CONFIG_FUSION_MAX_SGE=128 710CONFIG_FUSION_MAX_SGE=128
730# CONFIG_FUSION_CTL is not set 711# CONFIG_FUSION_CTL is not set
712# CONFIG_FUSION_LOGGING is not set
731 713
732# 714#
733# IEEE 1394 (FireWire) support 715# IEEE 1394 (FireWire) support
734# 716#
735# CONFIG_FIREWIRE is not set 717# CONFIG_FIREWIRE is not set
736# CONFIG_IEEE1394 is not set 718# CONFIG_IEEE1394 is not set
737
738#
739# I2O device support
740#
741# CONFIG_I2O is not set 719# CONFIG_I2O is not set
742# CONFIG_MACINTOSH_DRIVERS is not set 720# CONFIG_MACINTOSH_DRIVERS is not set
743
744#
745# Network device support
746#
747CONFIG_NETDEVICES=y 721CONFIG_NETDEVICES=y
722# CONFIG_NETDEVICES_MULTIQUEUE is not set
748# CONFIG_DUMMY is not set 723# CONFIG_DUMMY is not set
749CONFIG_BONDING=m 724CONFIG_BONDING=m
725CONFIG_MACVLAN=m
750# CONFIG_EQUALIZER is not set 726# CONFIG_EQUALIZER is not set
751CONFIG_TUN=y 727CONFIG_TUN=y
752# CONFIG_ARCNET is not set 728# CONFIG_ARCNET is not set
753# CONFIG_PHYLIB is not set 729# CONFIG_PHYLIB is not set
754
755#
756# Ethernet (10 or 100Mbit)
757#
758CONFIG_NET_ETHERNET=y 730CONFIG_NET_ETHERNET=y
759CONFIG_MII=y 731CONFIG_MII=y
760# CONFIG_HAPPYMEAL is not set 732# CONFIG_HAPPYMEAL is not set
761# CONFIG_SUNGEM is not set 733# CONFIG_SUNGEM is not set
762# CONFIG_CASSINI is not set 734# CONFIG_CASSINI is not set
763# CONFIG_NET_VENDOR_3COM is not set 735# CONFIG_NET_VENDOR_3COM is not set
764
765#
766# Tulip family network device support
767#
768# CONFIG_NET_TULIP is not set 736# CONFIG_NET_TULIP is not set
769# CONFIG_HP100 is not set 737# CONFIG_HP100 is not set
770# CONFIG_NET_PCI is not set 738# CONFIG_NET_PCI is not set
@@ -781,11 +749,12 @@ CONFIG_E1000_NAPI=y
781# CONFIG_SIS190 is not set 749# CONFIG_SIS190 is not set
782CONFIG_SKGE=m 750CONFIG_SKGE=m
783CONFIG_SKY2=m 751CONFIG_SKY2=m
784# CONFIG_SK98LIN is not set 752# CONFIG_SKY2_DEBUG is not set
785# CONFIG_VIA_VELOCITY is not set 753# CONFIG_VIA_VELOCITY is not set
786CONFIG_TIGON3=y 754CONFIG_TIGON3=y
787# CONFIG_BNX2 is not set 755# CONFIG_BNX2 is not set
788CONFIG_SPIDER_NET=y 756CONFIG_SPIDER_NET=y
757CONFIG_GELIC_NET=m
789# CONFIG_QLA3XXX is not set 758# CONFIG_QLA3XXX is not set
790# CONFIG_ATL1 is not set 759# CONFIG_ATL1 is not set
791CONFIG_NETDEV_10000=y 760CONFIG_NETDEV_10000=y
@@ -824,15 +793,7 @@ CONFIG_NETDEV_10000=y
824# CONFIG_NETCONSOLE is not set 793# CONFIG_NETCONSOLE is not set
825# CONFIG_NETPOLL is not set 794# CONFIG_NETPOLL is not set
826# CONFIG_NET_POLL_CONTROLLER is not set 795# CONFIG_NET_POLL_CONTROLLER is not set
827
828#
829# ISDN subsystem
830#
831# CONFIG_ISDN is not set 796# CONFIG_ISDN is not set
832
833#
834# Telephony Support
835#
836# CONFIG_PHONE is not set 797# CONFIG_PHONE is not set
837 798
838# 799#
@@ -925,10 +886,6 @@ CONFIG_UNIX98_PTYS=y
925CONFIG_HVC_DRIVER=y 886CONFIG_HVC_DRIVER=y
926CONFIG_HVC_RTAS=y 887CONFIG_HVC_RTAS=y
927CONFIG_HVC_BEAT=y 888CONFIG_HVC_BEAT=y
928
929#
930# IPMI
931#
932CONFIG_IPMI_HANDLER=m 889CONFIG_IPMI_HANDLER=m
933# CONFIG_IPMI_PANIC_EVENT is not set 890# CONFIG_IPMI_PANIC_EVENT is not set
934CONFIG_IPMI_DEVICE_INTERFACE=m 891CONFIG_IPMI_DEVICE_INTERFACE=m
@@ -963,10 +920,6 @@ CONFIG_GEN_RTC=y
963# CONFIG_DRM is not set 920# CONFIG_DRM is not set
964# CONFIG_RAW_DRIVER is not set 921# CONFIG_RAW_DRIVER is not set
965# CONFIG_HANGCHECK_TIMER is not set 922# CONFIG_HANGCHECK_TIMER is not set
966
967#
968# TPM devices
969#
970# CONFIG_TCG_TPM is not set 923# CONFIG_TCG_TPM is not set
971CONFIG_DEVPORT=y 924CONFIG_DEVPORT=y
972CONFIG_I2C=y 925CONFIG_I2C=y
@@ -1000,6 +953,7 @@ CONFIG_I2C_ALGOBIT=y
1000# CONFIG_I2C_SIS5595 is not set 953# CONFIG_I2C_SIS5595 is not set
1001# CONFIG_I2C_SIS630 is not set 954# CONFIG_I2C_SIS630 is not set
1002# CONFIG_I2C_SIS96X is not set 955# CONFIG_I2C_SIS96X is not set
956# CONFIG_I2C_TAOS_EVM is not set
1003# CONFIG_I2C_STUB is not set 957# CONFIG_I2C_STUB is not set
1004# CONFIG_I2C_TINY_USB is not set 958# CONFIG_I2C_TINY_USB is not set
1005# CONFIG_I2C_VIA is not set 959# CONFIG_I2C_VIA is not set
@@ -1011,11 +965,13 @@ CONFIG_I2C_ALGOBIT=y
1011# 965#
1012# CONFIG_SENSORS_DS1337 is not set 966# CONFIG_SENSORS_DS1337 is not set
1013# CONFIG_SENSORS_DS1374 is not set 967# CONFIG_SENSORS_DS1374 is not set
968# CONFIG_DS1682 is not set
1014# CONFIG_SENSORS_EEPROM is not set 969# CONFIG_SENSORS_EEPROM is not set
1015# CONFIG_SENSORS_PCF8574 is not set 970# CONFIG_SENSORS_PCF8574 is not set
1016# CONFIG_SENSORS_PCA9539 is not set 971# CONFIG_SENSORS_PCA9539 is not set
1017# CONFIG_SENSORS_PCF8591 is not set 972# CONFIG_SENSORS_PCF8591 is not set
1018# CONFIG_SENSORS_MAX6875 is not set 973# CONFIG_SENSORS_MAX6875 is not set
974# CONFIG_SENSORS_TSL2550 is not set
1019# CONFIG_I2C_DEBUG_CORE is not set 975# CONFIG_I2C_DEBUG_CORE is not set
1020# CONFIG_I2C_DEBUG_ALGO is not set 976# CONFIG_I2C_DEBUG_ALGO is not set
1021# CONFIG_I2C_DEBUG_BUS is not set 977# CONFIG_I2C_DEBUG_BUS is not set
@@ -1026,11 +982,8 @@ CONFIG_I2C_ALGOBIT=y
1026# 982#
1027# CONFIG_SPI is not set 983# CONFIG_SPI is not set
1028# CONFIG_SPI_MASTER is not set 984# CONFIG_SPI_MASTER is not set
1029
1030#
1031# Dallas's 1-wire bus
1032#
1033# CONFIG_W1 is not set 985# CONFIG_W1 is not set
986# CONFIG_POWER_SUPPLY is not set
1034# CONFIG_HWMON is not set 987# CONFIG_HWMON is not set
1035 988
1036# 989#
@@ -1055,6 +1008,7 @@ CONFIG_I2C_ALGOBIT=y
1055# 1008#
1056# CONFIG_DISPLAY_SUPPORT is not set 1009# CONFIG_DISPLAY_SUPPORT is not set
1057# CONFIG_VGASTATE is not set 1010# CONFIG_VGASTATE is not set
1011CONFIG_VIDEO_OUTPUT_CONTROL=m
1058# CONFIG_FB is not set 1012# CONFIG_FB is not set
1059# CONFIG_FB_IBM_GXT4500 is not set 1013# CONFIG_FB_IBM_GXT4500 is not set
1060 1014
@@ -1068,10 +1022,7 @@ CONFIG_DUMMY_CONSOLE=y
1068# Sound 1022# Sound
1069# 1023#
1070# CONFIG_SOUND is not set 1024# CONFIG_SOUND is not set
1071 1025CONFIG_HID_SUPPORT=y
1072#
1073# HID Devices
1074#
1075CONFIG_HID=m 1026CONFIG_HID=m
1076# CONFIG_HID_DEBUG is not set 1027# CONFIG_HID_DEBUG is not set
1077 1028
@@ -1085,10 +1036,7 @@ CONFIG_HID=m
1085# 1036#
1086# CONFIG_USB_KBD is not set 1037# CONFIG_USB_KBD is not set
1087# CONFIG_USB_MOUSE is not set 1038# CONFIG_USB_MOUSE is not set
1088 1039CONFIG_USB_SUPPORT=y
1089#
1090# USB support
1091#
1092CONFIG_USB_ARCH_HAS_HCD=y 1040CONFIG_USB_ARCH_HAS_HCD=y
1093CONFIG_USB_ARCH_HAS_OHCI=y 1041CONFIG_USB_ARCH_HAS_OHCI=y
1094CONFIG_USB_ARCH_HAS_EHCI=y 1042CONFIG_USB_ARCH_HAS_EHCI=y
@@ -1122,6 +1070,7 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
1122CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1070CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1123# CONFIG_USB_UHCI_HCD is not set 1071# CONFIG_USB_UHCI_HCD is not set
1124# CONFIG_USB_SL811_HCD is not set 1072# CONFIG_USB_SL811_HCD is not set
1073# CONFIG_USB_R8A66597_HCD is not set
1125 1074
1126# 1075#
1127# USB Device Class drivers 1076# USB Device Class drivers
@@ -1199,23 +1148,7 @@ CONFIG_USB_MON=y
1199# 1148#
1200# CONFIG_USB_GADGET is not set 1149# CONFIG_USB_GADGET is not set
1201# CONFIG_MMC is not set 1150# CONFIG_MMC is not set
1202
1203#
1204# LED devices
1205#
1206# CONFIG_NEW_LEDS is not set 1151# CONFIG_NEW_LEDS is not set
1207
1208#
1209# LED drivers
1210#
1211
1212#
1213# LED Triggers
1214#
1215
1216#
1217# InfiniBand support
1218#
1219CONFIG_INFINIBAND=m 1152CONFIG_INFINIBAND=m
1220CONFIG_INFINIBAND_USER_MAD=m 1153CONFIG_INFINIBAND_USER_MAD=m
1221CONFIG_INFINIBAND_USER_ACCESS=m 1154CONFIG_INFINIBAND_USER_ACCESS=m
@@ -1231,14 +1164,13 @@ CONFIG_INFINIBAND_IPOIB_DEBUG=y
1231CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y 1164CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
1232# CONFIG_INFINIBAND_SRP is not set 1165# CONFIG_INFINIBAND_SRP is not set
1233# CONFIG_INFINIBAND_ISER is not set 1166# CONFIG_INFINIBAND_ISER is not set
1167CONFIG_EDAC=y
1234 1168
1235# 1169#
1236# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 1170# Reporting subsystems
1237#
1238
1239#
1240# Real Time Clock
1241# 1171#
1172# CONFIG_EDAC_DEBUG is not set
1173CONFIG_EDAC_MM_EDAC=y
1242# CONFIG_RTC_CLASS is not set 1174# CONFIG_RTC_CLASS is not set
1243 1175
1244# 1176#
@@ -1255,6 +1187,12 @@ CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
1255# 1187#
1256 1188
1257# 1189#
1190# Userspace I/O
1191#
1192CONFIG_UIO=m
1193# CONFIG_UIO_CIF is not set
1194
1195#
1258# File systems 1196# File systems
1259# 1197#
1260CONFIG_EXT2_FS=y 1198CONFIG_EXT2_FS=y
@@ -1357,7 +1295,6 @@ CONFIG_SUNRPC=y
1357# CONFIG_NCP_FS is not set 1295# CONFIG_NCP_FS is not set
1358# CONFIG_CODA_FS is not set 1296# CONFIG_CODA_FS is not set
1359# CONFIG_AFS_FS is not set 1297# CONFIG_AFS_FS is not set
1360# CONFIG_9P_FS is not set
1361 1298
1362# 1299#
1363# Partition Types 1300# Partition Types
@@ -1439,6 +1376,7 @@ CONFIG_BITREVERSE=y
1439# CONFIG_CRC16 is not set 1376# CONFIG_CRC16 is not set
1440# CONFIG_CRC_ITU_T is not set 1377# CONFIG_CRC_ITU_T is not set
1441CONFIG_CRC32=y 1378CONFIG_CRC32=y
1379# CONFIG_CRC7 is not set
1442# CONFIG_LIBCRC32C is not set 1380# CONFIG_LIBCRC32C is not set
1443CONFIG_ZLIB_INFLATE=m 1381CONFIG_ZLIB_INFLATE=m
1444CONFIG_ZLIB_DEFLATE=m 1382CONFIG_ZLIB_DEFLATE=m
@@ -1471,9 +1409,10 @@ CONFIG_DEBUG_FS=y
1471CONFIG_DEBUG_KERNEL=y 1409CONFIG_DEBUG_KERNEL=y
1472# CONFIG_DEBUG_SHIRQ is not set 1410# CONFIG_DEBUG_SHIRQ is not set
1473# CONFIG_DETECT_SOFTLOCKUP is not set 1411# CONFIG_DETECT_SOFTLOCKUP is not set
1412CONFIG_SCHED_DEBUG=y
1474# CONFIG_SCHEDSTATS is not set 1413# CONFIG_SCHEDSTATS is not set
1475# CONFIG_TIMER_STATS is not set 1414# CONFIG_TIMER_STATS is not set
1476# CONFIG_DEBUG_SLAB is not set 1415# CONFIG_SLUB_DEBUG_ON is not set
1477# CONFIG_DEBUG_RT_MUTEXES is not set 1416# CONFIG_DEBUG_RT_MUTEXES is not set
1478# CONFIG_RT_MUTEX_TESTER is not set 1417# CONFIG_RT_MUTEX_TESTER is not set
1479# CONFIG_DEBUG_SPINLOCK is not set 1418# CONFIG_DEBUG_SPINLOCK is not set
@@ -1504,10 +1443,6 @@ CONFIG_IRQSTACKS=y
1504# 1443#
1505# CONFIG_KEYS is not set 1444# CONFIG_KEYS is not set
1506# CONFIG_SECURITY is not set 1445# CONFIG_SECURITY is not set
1507
1508#
1509# Cryptographic options
1510#
1511CONFIG_CRYPTO=y 1446CONFIG_CRYPTO=y
1512CONFIG_CRYPTO_ALGAPI=y 1447CONFIG_CRYPTO_ALGAPI=y
1513CONFIG_CRYPTO_BLKCIPHER=m 1448CONFIG_CRYPTO_BLKCIPHER=m
@@ -1546,7 +1481,4 @@ CONFIG_CRYPTO_DEFLATE=m
1546# CONFIG_CRYPTO_CRC32C is not set 1481# CONFIG_CRYPTO_CRC32C is not set
1547# CONFIG_CRYPTO_CAMELLIA is not set 1482# CONFIG_CRYPTO_CAMELLIA is not set
1548# CONFIG_CRYPTO_TEST is not set 1483# CONFIG_CRYPTO_TEST is not set
1549 1484CONFIG_CRYPTO_HW=y
1550#
1551# Hardware crypto devices
1552#
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index 2bb1cb911783..d8502e377518 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -299,7 +299,7 @@ static inline int check_io_access(struct pt_regs *regs)
299#ifndef CONFIG_FSL_BOOKE 299#ifndef CONFIG_FSL_BOOKE
300#define get_mc_reason(regs) ((regs)->dsisr) 300#define get_mc_reason(regs) ((regs)->dsisr)
301#else 301#else
302#define get_mc_reason(regs) (mfspr(SPRN_MCSR)) 302#define get_mc_reason(regs) (mfspr(SPRN_MCSR) & MCSR_MASK)
303#endif 303#endif
304#define REASON_FP ESR_FP 304#define REASON_FP ESR_FP
305#define REASON_ILLEGAL (ESR_PIL | ESR_PUO) 305#define REASON_ILLEGAL (ESR_PIL | ESR_PUO)
@@ -414,8 +414,6 @@ void machine_check_exception(struct pt_regs *regs)
414 printk("Data Cache Push Parity Error\n"); 414 printk("Data Cache Push Parity Error\n");
415 if (reason & MCSR_DCPERR) 415 if (reason & MCSR_DCPERR)
416 printk("Data Cache Parity Error\n"); 416 printk("Data Cache Parity Error\n");
417 if (reason & MCSR_GL_CI)
418 printk("Guarded Load or Cache-Inhibited stwcx.\n");
419 if (reason & MCSR_BUS_IAERR) 417 if (reason & MCSR_BUS_IAERR)
420 printk("Bus - Instruction Address Error\n"); 418 printk("Bus - Instruction Address Error\n");
421 if (reason & MCSR_BUS_RAERR) 419 if (reason & MCSR_BUS_RAERR)
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
index a73d2d700973..ff1811ac6c81 100644
--- a/arch/powerpc/mm/slb.c
+++ b/arch/powerpc/mm/slb.c
@@ -74,6 +74,22 @@ static inline void slb_shadow_clear(unsigned long entry)
74 get_slb_shadow()->save_area[entry].esid = 0; 74 get_slb_shadow()->save_area[entry].esid = 0;
75} 75}
76 76
77static inline void create_shadowed_slbe(unsigned long ea, unsigned long flags,
78 unsigned long entry)
79{
80 /*
81 * Updating the shadow buffer before writing the SLB ensures
82 * we don't get a stale entry here if we get preempted by PHYP
83 * between these two statements.
84 */
85 slb_shadow_update(ea, flags, entry);
86
87 asm volatile("slbmte %0,%1" :
88 : "r" (mk_vsid_data(ea, flags)),
89 "r" (mk_esid_data(ea, entry))
90 : "memory" );
91}
92
77void slb_flush_and_rebolt(void) 93void slb_flush_and_rebolt(void)
78{ 94{
79 /* If you change this make sure you change SLB_NUM_BOLTED 95 /* If you change this make sure you change SLB_NUM_BOLTED
@@ -226,12 +242,16 @@ void slb_initialize(void)
226 vflags = SLB_VSID_KERNEL | vmalloc_llp; 242 vflags = SLB_VSID_KERNEL | vmalloc_llp;
227 243
228 /* Invalidate the entire SLB (even slot 0) & all the ERATS */ 244 /* Invalidate the entire SLB (even slot 0) & all the ERATS */
229 slb_shadow_update(PAGE_OFFSET, lflags, 0); 245 asm volatile("isync":::"memory");
230 asm volatile("isync; slbia; sync; slbmte %0,%1; isync" :: 246 asm volatile("slbmte %0,%0"::"r" (0) : "memory");
231 "r" (get_slb_shadow()->save_area[0].vsid), 247 asm volatile("isync; slbia; isync":::"memory");
232 "r" (get_slb_shadow()->save_area[0].esid) : "memory"); 248 create_shadowed_slbe(PAGE_OFFSET, lflags, 0);
233 249
234 slb_shadow_update(VMALLOC_START, vflags, 1); 250 create_shadowed_slbe(VMALLOC_START, vflags, 1);
235 251
236 slb_flush_and_rebolt(); 252 /* We don't bolt the stack for the time being - we're in boot,
253 * so the stack is in the bolted segment. By the time it goes
254 * elsewhere, we'll call _switch() which will bolt in the new
255 * one. */
256 asm volatile("isync":::"memory");
237} 257}
diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig
index f58184086c8c..f620171ad6b1 100644
--- a/arch/powerpc/platforms/85xx/Kconfig
+++ b/arch/powerpc/platforms/85xx/Kconfig
@@ -33,6 +33,7 @@ config MPC8544_DS
33 bool "Freescale MPC8544 DS" 33 bool "Freescale MPC8544 DS"
34 select PPC_I8259 34 select PPC_I8259
35 select DEFAULT_UIMAGE 35 select DEFAULT_UIMAGE
36 select FSL_ULI1575
36 help 37 help
37 This option enables support for the MPC8544 DS board 38 This option enables support for the MPC8544 DS board
38 39
diff --git a/arch/powerpc/platforms/85xx/mpc8544_ds.c b/arch/powerpc/platforms/85xx/mpc8544_ds.c
index 4905f6f8903b..0f834d8be444 100644
--- a/arch/powerpc/platforms/85xx/mpc8544_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc8544_ds.c
@@ -114,211 +114,25 @@ void __init mpc8544_ds_pic_init(void)
114} 114}
115 115
116#ifdef CONFIG_PCI 116#ifdef CONFIG_PCI
117enum pirq { PIRQA = 8, PIRQB, PIRQC, PIRQD, PIRQE, PIRQF, PIRQG, PIRQH }; 117extern int uses_fsl_uli_m1575;
118extern int uli_exclude_device(struct pci_controller *hose,
119 u_char bus, u_char devfn);
118 120
119/* 121static int mpc85xx_exclude_device(struct pci_controller *hose,
120 * Value in table -- IRQ number 122 u_char bus, u_char devfn)
121 */
122const unsigned char uli1575_irq_route_table[16] = {
123 0, /* 0: Reserved */
124 0x8,
125 0, /* 2: Reserved */
126 0x2,
127 0x4,
128 0x5,
129 0x7,
130 0x6,
131 0, /* 8: Reserved */
132 0x1,
133 0x3,
134 0x9,
135 0xb,
136 0, /* 13: Reserved */
137 0xd,
138 0xf,
139};
140
141static int __devinit
142get_pci_irq_from_of(struct pci_controller *hose, int slot, int pin)
143{
144 struct of_irq oirq;
145 u32 laddr[3];
146 struct device_node *hosenode = hose ? hose->arch_data : NULL;
147
148 if (!hosenode)
149 return -EINVAL;
150
151 laddr[0] = (hose->first_busno << 16) | (PCI_DEVFN(slot, 0) << 8);
152 laddr[1] = laddr[2] = 0;
153 of_irq_map_raw(hosenode, &pin, 1, laddr, &oirq);
154 DBG("mpc8544_ds: pci irq addr %x, slot %d, pin %d, irq %d\n",
155 laddr[0], slot, pin, oirq.specifier[0]);
156 return oirq.specifier[0];
157}
158
159/*8259*/
160static void __devinit quirk_uli1575(struct pci_dev *dev)
161{
162 unsigned short temp;
163 struct pci_controller *hose = pci_bus_to_host(dev->bus);
164 unsigned char irq2pin[16];
165 unsigned long pirq_map_word = 0;
166 u32 irq;
167 int i;
168
169 /*
170 * ULI1575 interrupts route setup
171 */
172 memset(irq2pin, 0, 16); /* Initialize default value 0 */
173
174 irq2pin[6]=PIRQA+3; /* enabled mapping for IRQ6 to PIRQD, used by SATA */
175
176 /*
177 * PIRQE -> PIRQF mapping set manually
178 *
179 * IRQ pin IRQ#
180 * PIRQE ---- 9
181 * PIRQF ---- 10
182 * PIRQG ---- 11
183 * PIRQH ---- 12
184 */
185 for (i = 0; i < 4; i++)
186 irq2pin[i + 9] = PIRQE + i;
187
188 /* Set IRQ-PIRQ Mapping to ULI1575 */
189 for (i = 0; i < 16; i++)
190 if (irq2pin[i])
191 pirq_map_word |= (uli1575_irq_route_table[i] & 0xf)
192 << ((irq2pin[i] - PIRQA) * 4);
193
194 pirq_map_word |= 1<<26; /* disable INTx in EP mode*/
195
196 /* ULI1575 IRQ mapping conf register default value is 0xb9317542 */
197 DBG("Setup ULI1575 IRQ mapping configuration register value = 0x%x\n",
198 (int)pirq_map_word);
199 pci_write_config_dword(dev, 0x48, pirq_map_word);
200
201#define ULI1575_SET_DEV_IRQ(slot, pin, reg) \
202 do { \
203 int irq; \
204 irq = get_pci_irq_from_of(hose, slot, pin); \
205 if (irq > 0 && irq < 16) \
206 pci_write_config_byte(dev, reg, irq2pin[irq]); \
207 else \
208 printk(KERN_WARNING "ULI1575 device" \
209 "(slot %d, pin %d) irq %d is invalid.\n", \
210 slot, pin, irq); \
211 } while(0)
212
213 /* USB 1.1 OHCI controller 1, slot 28, pin 1 */
214 ULI1575_SET_DEV_IRQ(28, 1, 0x86);
215
216 /* USB 1.1 OHCI controller 2, slot 28, pin 2 */
217 ULI1575_SET_DEV_IRQ(28, 2, 0x87);
218
219 /* USB 1.1 OHCI controller 3, slot 28, pin 3 */
220 ULI1575_SET_DEV_IRQ(28, 3, 0x88);
221
222 /* USB 2.0 controller, slot 28, pin 4 */
223 irq = get_pci_irq_from_of(hose, 28, 4);
224 if (irq >= 0 && irq <= 15)
225 pci_write_config_dword(dev, 0x74, uli1575_irq_route_table[irq]);
226
227 /* Audio controller, slot 29, pin 1 */
228 ULI1575_SET_DEV_IRQ(29, 1, 0x8a);
229
230 /* Modem controller, slot 29, pin 2 */
231 ULI1575_SET_DEV_IRQ(29, 2, 0x8b);
232
233 /* HD audio controller, slot 29, pin 3 */
234 ULI1575_SET_DEV_IRQ(29, 3, 0x8c);
235
236 /* SMB interrupt: slot 30, pin 1 */
237 ULI1575_SET_DEV_IRQ(30, 1, 0x8e);
238
239 /* PMU ACPI SCI interrupt: slot 30, pin 2 */
240 ULI1575_SET_DEV_IRQ(30, 2, 0x8f);
241
242 /* Serial ATA interrupt: slot 31, pin 1 */
243 ULI1575_SET_DEV_IRQ(31, 1, 0x8d);
244
245 /* Primary PATA IDE IRQ: 14
246 * Secondary PATA IDE IRQ: 15
247 */
248 pci_write_config_byte(dev, 0x44, 0x30 | uli1575_irq_route_table[14]);
249 pci_write_config_byte(dev, 0x75, uli1575_irq_route_table[15]);
250
251 /* Set IRQ14 and IRQ15 to legacy IRQs */
252 pci_read_config_word(dev, 0x46, &temp);
253 temp |= 0xc000;
254 pci_write_config_word(dev, 0x46, temp);
255
256 /* Set i8259 interrupt trigger
257 * IRQ 3: Level
258 * IRQ 4: Level
259 * IRQ 5: Level
260 * IRQ 6: Level
261 * IRQ 7: Level
262 * IRQ 9: Level
263 * IRQ 10: Level
264 * IRQ 11: Level
265 * IRQ 12: Level
266 * IRQ 14: Edge
267 * IRQ 15: Edge
268 */
269 outb(0xfa, 0x4d0);
270 outb(0x1e, 0x4d1);
271
272#undef ULI1575_SET_DEV_IRQ
273}
274
275/* SATA */
276static void __devinit quirk_uli5288(struct pci_dev *dev)
277{ 123{
278 unsigned char c; 124 struct device_node* node;
279 125 struct resource rsrc;
280 pci_read_config_byte(dev, 0x83, &c);
281 c |= 0x80; /* read/write lock */
282 pci_write_config_byte(dev, 0x83, c);
283
284 pci_write_config_byte(dev, 0x09, 0x01); /* Base class code: storage */
285 pci_write_config_byte(dev, 0x0a, 0x06); /* IDE disk */
286 126
287 pci_read_config_byte(dev, 0x83, &c); 127 node = (struct device_node *)hose->arch_data;
288 c &= 0x7f; 128 of_address_to_resource(node, 0, &rsrc);
289 pci_write_config_byte(dev, 0x83, c);
290
291 pci_read_config_byte(dev, 0x84, &c);
292 c |= 0x01; /* emulated PATA mode enabled */
293 pci_write_config_byte(dev, 0x84, c);
294}
295 129
296/* PATA */ 130 if ((rsrc.start & 0xfffff) == 0xb000) {
297static void __devinit quirk_uli5229(struct pci_dev *dev) 131 return uli_exclude_device(hose, bus, devfn);
298{ 132 }
299 unsigned short temp;
300 pci_write_config_word(dev, 0x04, 0x0405); /* MEM IO MSI */
301 pci_read_config_word(dev, 0x4a, &temp);
302 temp |= 0x1000; /* Enable Native IRQ 14/15 */
303 pci_write_config_word(dev, 0x4a, temp);
304}
305 133
306/*Bridge*/ 134 return PCIBIOS_SUCCESSFUL;
307static void __devinit early_uli5249(struct pci_dev *dev)
308{
309 unsigned char temp;
310 pci_write_config_word(dev, 0x04, 0x0007); /* mem access */
311 pci_read_config_byte(dev, 0x7c, &temp);
312 pci_write_config_byte(dev, 0x7c, 0x80); /* R/W lock control */
313 pci_write_config_byte(dev, 0x09, 0x01); /* set as pci-pci bridge */
314 pci_write_config_byte(dev, 0x7c, temp); /* restore pci bus debug control */
315 dev->class |= 0x1;
316} 135}
317
318DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x1575, quirk_uli1575);
319DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5288, quirk_uli5288);
320DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229);
321DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AL, 0x5249, early_uli5249);
322#endif /* CONFIG_PCI */ 136#endif /* CONFIG_PCI */
323 137
324/* 138/*
@@ -342,6 +156,8 @@ static void __init mpc8544_ds_setup_arch(void)
342 else 156 else
343 fsl_add_bridge(np, 0); 157 fsl_add_bridge(np, 0);
344 } 158 }
159 uses_fsl_uli_m1575 = 1;
160 ppc_md.pci_exclude_device = mpc85xx_exclude_device;
345#endif 161#endif
346 162
347 printk("MPC8544 DS board from Freescale Semiconductor\n"); 163 printk("MPC8544 DS board from Freescale Semiconductor\n");
diff --git a/arch/powerpc/platforms/86xx/Kconfig b/arch/powerpc/platforms/86xx/Kconfig
index 343b76d0d793..685b2fbbbe00 100644
--- a/arch/powerpc/platforms/86xx/Kconfig
+++ b/arch/powerpc/platforms/86xx/Kconfig
@@ -7,6 +7,7 @@ config MPC8641_HPCN
7 bool "Freescale MPC8641 HPCN" 7 bool "Freescale MPC8641 HPCN"
8 select PPC_I8259 8 select PPC_I8259
9 select DEFAULT_UIMAGE 9 select DEFAULT_UIMAGE
10 select FSL_ULI1575
10 help 11 help
11 This option enables support for the MPC8641 HPCN board. 12 This option enables support for the MPC8641 HPCN board.
12 13
diff --git a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
index e9eaa0749ae6..56b27caf7a27 100644
--- a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
+++ b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
@@ -107,220 +107,25 @@ mpc86xx_hpcn_init_irq(void)
107} 107}
108 108
109#ifdef CONFIG_PCI 109#ifdef CONFIG_PCI
110extern int uses_fsl_uli_m1575;
111extern int uli_exclude_device(struct pci_controller *hose,
112 u_char bus, u_char devfn);
110 113
111enum pirq{PIRQA = 8, PIRQB, PIRQC, PIRQD, PIRQE, PIRQF, PIRQG, PIRQH}; 114static int mpc86xx_exclude_device(struct pci_controller *hose,
112const unsigned char uli1575_irq_route_table[16] = { 115 u_char bus, u_char devfn)
113 0, /* 0: Reserved */
114 0x8, /* 1: 0b1000 */
115 0, /* 2: Reserved */
116 0x2, /* 3: 0b0010 */
117 0x4, /* 4: 0b0100 */
118 0x5, /* 5: 0b0101 */
119 0x7, /* 6: 0b0111 */
120 0x6, /* 7: 0b0110 */
121 0, /* 8: Reserved */
122 0x1, /* 9: 0b0001 */
123 0x3, /* 10: 0b0011 */
124 0x9, /* 11: 0b1001 */
125 0xb, /* 12: 0b1011 */
126 0, /* 13: Reserved */
127 0xd, /* 14, 0b1101 */
128 0xf, /* 15, 0b1111 */
129};
130
131static int __devinit
132get_pci_irq_from_of(struct pci_controller *hose, int slot, int pin)
133{
134 struct of_irq oirq;
135 u32 laddr[3];
136 struct device_node *hosenode = hose ? hose->arch_data : NULL;
137
138 if (!hosenode) return -EINVAL;
139
140 laddr[0] = (hose->first_busno << 16) | (PCI_DEVFN(slot, 0) << 8);
141 laddr[1] = laddr[2] = 0;
142 of_irq_map_raw(hosenode, &pin, 1, laddr, &oirq);
143 DBG("mpc86xx_hpcn: pci irq addr %x, slot %d, pin %d, irq %d\n",
144 laddr[0], slot, pin, oirq.specifier[0]);
145 return oirq.specifier[0];
146}
147
148static void __devinit quirk_uli1575(struct pci_dev *dev)
149{
150 unsigned short temp;
151 struct pci_controller *hose = pci_bus_to_host(dev->bus);
152 unsigned char irq2pin[16], c;
153 unsigned long pirq_map_word = 0;
154 u32 irq;
155 int i;
156
157 /*
158 * ULI1575 interrupts route setup
159 */
160 memset(irq2pin, 0, 16); /* Initialize default value 0 */
161
162 /*
163 * PIRQA -> PIRQD mapping read from OF-tree
164 *
165 * interrupts for PCI slot0 -- PIRQA / PIRQB / PIRQC / PIRQD
166 * PCI slot1 -- PIRQB / PIRQC / PIRQD / PIRQA
167 */
168 for (i = 0; i < 4; i++){
169 irq = get_pci_irq_from_of(hose, 17, i + 1);
170 if (irq > 0 && irq < 16)
171 irq2pin[irq] = PIRQA + i;
172 else
173 printk(KERN_WARNING "ULI1575 device"
174 "(slot %d, pin %d) irq %d is invalid.\n",
175 17, i, irq);
176 }
177
178 /*
179 * PIRQE -> PIRQF mapping set manually
180 *
181 * IRQ pin IRQ#
182 * PIRQE ---- 9
183 * PIRQF ---- 10
184 * PIRQG ---- 11
185 * PIRQH ---- 12
186 */
187 for (i = 0; i < 4; i++) irq2pin[i + 9] = PIRQE + i;
188
189 /* Set IRQ-PIRQ Mapping to ULI1575 */
190 for (i = 0; i < 16; i++)
191 if (irq2pin[i])
192 pirq_map_word |= (uli1575_irq_route_table[i] & 0xf)
193 << ((irq2pin[i] - PIRQA) * 4);
194
195 /* ULI1575 IRQ mapping conf register default value is 0xb9317542 */
196 DBG("Setup ULI1575 IRQ mapping configuration register value = 0x%x\n",
197 pirq_map_word);
198 pci_write_config_dword(dev, 0x48, pirq_map_word);
199
200#define ULI1575_SET_DEV_IRQ(slot, pin, reg) \
201 do { \
202 int irq; \
203 irq = get_pci_irq_from_of(hose, slot, pin); \
204 if (irq > 0 && irq < 16) \
205 pci_write_config_byte(dev, reg, irq2pin[irq]); \
206 else \
207 printk(KERN_WARNING "ULI1575 device" \
208 "(slot %d, pin %d) irq %d is invalid.\n", \
209 slot, pin, irq); \
210 } while(0)
211
212 /* USB 1.1 OHCI controller 1, slot 28, pin 1 */
213 ULI1575_SET_DEV_IRQ(28, 1, 0x86);
214
215 /* USB 1.1 OHCI controller 2, slot 28, pin 2 */
216 ULI1575_SET_DEV_IRQ(28, 2, 0x87);
217
218 /* USB 1.1 OHCI controller 3, slot 28, pin 3 */
219 ULI1575_SET_DEV_IRQ(28, 3, 0x88);
220
221 /* USB 2.0 controller, slot 28, pin 4 */
222 irq = get_pci_irq_from_of(hose, 28, 4);
223 if (irq >= 0 && irq <=15)
224 pci_write_config_dword(dev, 0x74, uli1575_irq_route_table[irq]);
225
226 /* Audio controller, slot 29, pin 1 */
227 ULI1575_SET_DEV_IRQ(29, 1, 0x8a);
228
229 /* Modem controller, slot 29, pin 2 */
230 ULI1575_SET_DEV_IRQ(29, 2, 0x8b);
231
232 /* HD audio controller, slot 29, pin 3 */
233 ULI1575_SET_DEV_IRQ(29, 3, 0x8c);
234
235 /* SMB interrupt: slot 30, pin 1 */
236 ULI1575_SET_DEV_IRQ(30, 1, 0x8e);
237
238 /* PMU ACPI SCI interrupt: slot 30, pin 2 */
239 ULI1575_SET_DEV_IRQ(30, 2, 0x8f);
240
241 /* Serial ATA interrupt: slot 31, pin 1 */
242 ULI1575_SET_DEV_IRQ(31, 1, 0x8d);
243
244 /* Primary PATA IDE IRQ: 14
245 * Secondary PATA IDE IRQ: 15
246 */
247 pci_write_config_byte(dev, 0x44, 0x30 | uli1575_irq_route_table[14]);
248 pci_write_config_byte(dev, 0x75, uli1575_irq_route_table[15]);
249
250 /* Set IRQ14 and IRQ15 to legacy IRQs */
251 pci_read_config_word(dev, 0x46, &temp);
252 temp |= 0xc000;
253 pci_write_config_word(dev, 0x46, temp);
254
255 /* Set i8259 interrupt trigger
256 * IRQ 3: Level
257 * IRQ 4: Level
258 * IRQ 5: Level
259 * IRQ 6: Level
260 * IRQ 7: Level
261 * IRQ 9: Level
262 * IRQ 10: Level
263 * IRQ 11: Level
264 * IRQ 12: Level
265 * IRQ 14: Edge
266 * IRQ 15: Edge
267 */
268 outb(0xfa, 0x4d0);
269 outb(0x1e, 0x4d1);
270
271#undef ULI1575_SET_DEV_IRQ
272
273 /* Disable the HD interface and enable the AC97 interface. */
274 pci_read_config_byte(dev, 0xb8, &c);
275 c &= 0x7f;
276 pci_write_config_byte(dev, 0xb8, c);
277}
278
279static void __devinit quirk_uli5288(struct pci_dev *dev)
280{ 116{
281 unsigned char c; 117 struct device_node* node;
118 struct resource rsrc;
282 119
283 pci_read_config_byte(dev,0x83,&c); 120 node = (struct device_node *)hose->arch_data;
284 c |= 0x80; 121 of_address_to_resource(node, 0, &rsrc);
285 pci_write_config_byte(dev, 0x83, c);
286 122
287 pci_write_config_byte(dev, 0x09, 0x01); 123 if ((rsrc.start & 0xfffff) == 0x8000) {
288 pci_write_config_byte(dev, 0x0a, 0x06); 124 return uli_exclude_device(hose, bus, devfn);
289 125 }
290 pci_read_config_byte(dev,0x83,&c);
291 c &= 0x7f;
292 pci_write_config_byte(dev, 0x83, c);
293
294 pci_read_config_byte(dev,0x84,&c);
295 c |= 0x01;
296 pci_write_config_byte(dev, 0x84, c);
297}
298
299static void __devinit quirk_uli5229(struct pci_dev *dev)
300{
301 unsigned short temp;
302 pci_write_config_word(dev, 0x04, 0x0405);
303 dev->class &= ~0x5;
304 pci_read_config_word(dev, 0x4a, &temp);
305 temp |= 0x1000;
306 pci_write_config_word(dev, 0x4a, temp);
307}
308 126
309static void __devinit early_uli5249(struct pci_dev *dev) 127 return PCIBIOS_SUCCESSFUL;
310{
311 unsigned char temp;
312 pci_write_config_word(dev, 0x04, 0x0007);
313 pci_read_config_byte(dev, 0x7c, &temp);
314 pci_write_config_byte(dev, 0x7c, 0x80);
315 pci_write_config_byte(dev, 0x09, 0x01);
316 pci_write_config_byte(dev, 0x7c, temp);
317 dev->class |= 0x1;
318} 128}
319
320DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x1575, quirk_uli1575);
321DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5288, quirk_uli5288);
322DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229);
323DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AL, 0x5249, early_uli5249);
324#endif /* CONFIG_PCI */ 129#endif /* CONFIG_PCI */
325 130
326 131
@@ -353,6 +158,9 @@ mpc86xx_hpcn_setup_arch(void)
353 else 158 else
354 fsl_add_bridge(np, 0); 159 fsl_add_bridge(np, 0);
355 } 160 }
161 uses_fsl_uli_m1575 = 1;
162 ppc_md.pci_exclude_device = mpc86xx_exclude_device;
163
356#endif 164#endif
357 165
358 printk("MPC86xx HPCN board from Freescale Semiconductor\n"); 166 printk("MPC86xx HPCN board from Freescale Semiconductor\n");
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig
index 2c937fb207fe..041df77ec117 100644
--- a/arch/powerpc/platforms/Kconfig
+++ b/arch/powerpc/platforms/Kconfig
@@ -283,4 +283,12 @@ config AXON_RAM
283 minor numbers are available in /proc/devices, /proc/partitions or 283 minor numbers are available in /proc/devices, /proc/partitions or
284 in /sys/block/axonram?/dev. 284 in /sys/block/axonram?/dev.
285 285
286config FSL_ULI1575
287 bool
288 default n
289 help
290 Supports for the ULI1575 PCIe south bridge that exists on some
291 Freescale reference boards. The boards all use the ULI in pretty
292 much the same way.
293
286endmenu 294endmenu
diff --git a/arch/powerpc/platforms/Makefile b/arch/powerpc/platforms/Makefile
index d6e041a46d25..d44e832b01f2 100644
--- a/arch/powerpc/platforms/Makefile
+++ b/arch/powerpc/platforms/Makefile
@@ -1,3 +1,6 @@
1
2obj-$(CONFIG_FSL_ULI1575) += fsl_uli1575.o
3
1ifeq ($(CONFIG_PPC_MERGE),y) 4ifeq ($(CONFIG_PPC_MERGE),y)
2obj-$(CONFIG_PPC_PMAC) += powermac/ 5obj-$(CONFIG_PPC_PMAC) += powermac/
3else 6else
diff --git a/arch/powerpc/platforms/cell/cbe_regs.h b/arch/powerpc/platforms/cell/cbe_regs.h
index 17d597144877..b24025f2ac7a 100644
--- a/arch/powerpc/platforms/cell/cbe_regs.h
+++ b/arch/powerpc/platforms/cell/cbe_regs.h
@@ -113,10 +113,14 @@ struct cbe_pmd_regs {
113 u64 checkstop_fir; /* 0x0c00 */ 113 u64 checkstop_fir; /* 0x0c00 */
114 u64 recoverable_fir; /* 0x0c08 */ 114 u64 recoverable_fir; /* 0x0c08 */
115 u64 spec_att_mchk_fir; /* 0x0c10 */ 115 u64 spec_att_mchk_fir; /* 0x0c10 */
116 u64 fir_mode_reg; /* 0x0c18 */ 116 u32 fir_mode_reg; /* 0x0c18 */
117 u8 pad_0x0c1c_0x0c20 [4]; /* 0x0c1c */
118#define CBE_PMD_FIR_MODE_M8 0x00800
117 u64 fir_enable_mask; /* 0x0c20 */ 119 u64 fir_enable_mask; /* 0x0c20 */
118 120
119 u8 pad_0x0c28_0x1000 [0x1000 - 0x0c28]; /* 0x0c28 */ 121 u8 pad_0x0c28_0x0ca8 [0x0ca8 - 0x0c28]; /* 0x0c28 */
122 u64 ras_esc_0; /* 0x0ca8 */
123 u8 pad_0x0cb0_0x1000 [0x1000 - 0x0cb0]; /* 0x0cb0 */
120}; 124};
121 125
122extern struct cbe_pmd_regs __iomem *cbe_get_pmd_regs(struct device_node *np); 126extern struct cbe_pmd_regs __iomem *cbe_get_pmd_regs(struct device_node *np);
diff --git a/arch/powerpc/platforms/cell/cbe_thermal.c b/arch/powerpc/platforms/cell/cbe_thermal.c
index e4132f8f51b3..fb5eda48467d 100644
--- a/arch/powerpc/platforms/cell/cbe_thermal.c
+++ b/arch/powerpc/platforms/cell/cbe_thermal.c
@@ -88,17 +88,13 @@ static struct cbe_pmd_regs __iomem *get_pmd_regs(struct sys_device *sysdev)
88/* returns the value for a given spu in a given register */ 88/* returns the value for a given spu in a given register */
89static u8 spu_read_register_value(struct sys_device *sysdev, union spe_reg __iomem *reg) 89static u8 spu_read_register_value(struct sys_device *sysdev, union spe_reg __iomem *reg)
90{ 90{
91 const unsigned int *id;
92 union spe_reg value; 91 union spe_reg value;
93 struct spu *spu; 92 struct spu *spu;
94 93
95 /* getting the id from the reg attribute will not work on future device-tree layouts
96 * in future we should store the id to the spu struct and use it here */
97 spu = container_of(sysdev, struct spu, sysdev); 94 spu = container_of(sysdev, struct spu, sysdev);
98 id = of_get_property(spu_devnode(spu), "reg", NULL);
99 value.val = in_be64(&reg->val); 95 value.val = in_be64(&reg->val);
100 96
101 return value.spe[*id]; 97 return value.spe[spu->spe_id];
102} 98}
103 99
104static ssize_t spu_show_temp(struct sys_device *sysdev, char *buf) 100static ssize_t spu_show_temp(struct sys_device *sysdev, char *buf)
diff --git a/arch/powerpc/platforms/cell/pervasive.c b/arch/powerpc/platforms/cell/pervasive.c
index 812bf563ed65..4ede22d363fa 100644
--- a/arch/powerpc/platforms/cell/pervasive.c
+++ b/arch/powerpc/platforms/cell/pervasive.c
@@ -38,6 +38,8 @@
38#include "pervasive.h" 38#include "pervasive.h"
39#include "cbe_regs.h" 39#include "cbe_regs.h"
40 40
41static int sysreset_hack;
42
41static void cbe_power_save(void) 43static void cbe_power_save(void)
42{ 44{
43 unsigned long ctrl, thread_switch_control; 45 unsigned long ctrl, thread_switch_control;
@@ -85,6 +87,9 @@ static void cbe_power_save(void)
85 87
86static int cbe_system_reset_exception(struct pt_regs *regs) 88static int cbe_system_reset_exception(struct pt_regs *regs)
87{ 89{
90 int cpu;
91 struct cbe_pmd_regs __iomem *pmd;
92
88 switch (regs->msr & SRR1_WAKEMASK) { 93 switch (regs->msr & SRR1_WAKEMASK) {
89 case SRR1_WAKEEE: 94 case SRR1_WAKEEE:
90 do_IRQ(regs); 95 do_IRQ(regs);
@@ -93,6 +98,18 @@ static int cbe_system_reset_exception(struct pt_regs *regs)
93 timer_interrupt(regs); 98 timer_interrupt(regs);
94 break; 99 break;
95 case SRR1_WAKEMT: 100 case SRR1_WAKEMT:
101 /*
102 * The BMC can inject user triggered system reset exceptions,
103 * but cannot set the system reset reason in srr1,
104 * so check an extra register here.
105 */
106 if (sysreset_hack && (cpu = smp_processor_id()) == 0) {
107 pmd = cbe_get_cpu_pmd_regs(cpu);
108 if (in_be64(&pmd->ras_esc_0) & 0xffff) {
109 out_be64(&pmd->ras_esc_0, 0);
110 return 0;
111 }
112 }
96 break; 113 break;
97#ifdef CONFIG_CBE_RAS 114#ifdef CONFIG_CBE_RAS
98 case SRR1_WAKESYSERR: 115 case SRR1_WAKESYSERR:
@@ -113,9 +130,12 @@ static int cbe_system_reset_exception(struct pt_regs *regs)
113void __init cbe_pervasive_init(void) 130void __init cbe_pervasive_init(void)
114{ 131{
115 int cpu; 132 int cpu;
133
116 if (!cpu_has_feature(CPU_FTR_PAUSE_ZERO)) 134 if (!cpu_has_feature(CPU_FTR_PAUSE_ZERO))
117 return; 135 return;
118 136
137 sysreset_hack = machine_is_compatible("IBM,CBPLUS-1.0");
138
119 for_each_possible_cpu(cpu) { 139 for_each_possible_cpu(cpu) {
120 struct cbe_pmd_regs __iomem *regs = cbe_get_cpu_pmd_regs(cpu); 140 struct cbe_pmd_regs __iomem *regs = cbe_get_cpu_pmd_regs(cpu);
121 if (!regs) 141 if (!regs)
@@ -124,6 +144,12 @@ void __init cbe_pervasive_init(void)
124 /* Enable Pause(0) control bit */ 144 /* Enable Pause(0) control bit */
125 out_be64(&regs->pmcr, in_be64(&regs->pmcr) | 145 out_be64(&regs->pmcr, in_be64(&regs->pmcr) |
126 CBE_PMD_PAUSE_ZERO_CONTROL); 146 CBE_PMD_PAUSE_ZERO_CONTROL);
147
148 /* Enable JTAG system-reset hack */
149 if (sysreset_hack)
150 out_be32(&regs->fir_mode_reg,
151 in_be32(&regs->fir_mode_reg) |
152 CBE_PMD_FIR_MODE_M8);
127 } 153 }
128 154
129 ppc_md.power_save = cbe_power_save; 155 ppc_md.power_save = cbe_power_save;
diff --git a/arch/powerpc/platforms/cell/spu_manage.c b/arch/powerpc/platforms/cell/spu_manage.c
index 5eb88346181a..7c0668a9dcc7 100644
--- a/arch/powerpc/platforms/cell/spu_manage.c
+++ b/arch/powerpc/platforms/cell/spu_manage.c
@@ -48,7 +48,7 @@ static u64 __init find_spu_unit_number(struct device_node *spe)
48{ 48{
49 const unsigned int *prop; 49 const unsigned int *prop;
50 int proplen; 50 int proplen;
51 prop = of_get_property(spe, "unit-id", &proplen); 51 prop = of_get_property(spe, "physical-id", &proplen);
52 if (proplen == 4) 52 if (proplen == 4)
53 return (u64)*prop; 53 return (u64)*prop;
54 54
diff --git a/arch/powerpc/platforms/fsl_uli1575.c b/arch/powerpc/platforms/fsl_uli1575.c
new file mode 100644
index 000000000000..afc9141be63e
--- /dev/null
+++ b/arch/powerpc/platforms/fsl_uli1575.c
@@ -0,0 +1,255 @@
1/*
2 * ULI M1575 setup code - specific to Freescale boards
3 *
4 * Copyright 2007 Freescale Semiconductor Inc.
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 */
11
12#include <linux/stddef.h>
13#include <linux/kernel.h>
14#include <linux/pci.h>
15#include <linux/interrupt.h>
16#include <linux/mc146818rtc.h>
17
18#include <asm/system.h>
19#include <asm/pci-bridge.h>
20
21#define ULI_PIRQA 0x08
22#define ULI_PIRQB 0x09
23#define ULI_PIRQC 0x0a
24#define ULI_PIRQD 0x0b
25#define ULI_PIRQE 0x0c
26#define ULI_PIRQF 0x0d
27#define ULI_PIRQG 0x0e
28
29#define ULI_8259_NONE 0x00
30#define ULI_8259_IRQ1 0x08
31#define ULI_8259_IRQ3 0x02
32#define ULI_8259_IRQ4 0x04
33#define ULI_8259_IRQ5 0x05
34#define ULI_8259_IRQ6 0x07
35#define ULI_8259_IRQ7 0x06
36#define ULI_8259_IRQ9 0x01
37#define ULI_8259_IRQ10 0x03
38#define ULI_8259_IRQ11 0x09
39#define ULI_8259_IRQ12 0x0b
40#define ULI_8259_IRQ14 0x0d
41#define ULI_8259_IRQ15 0x0f
42
43u8 uli_pirq_to_irq[8] = {
44 ULI_8259_IRQ9, /* PIRQA */
45 ULI_8259_IRQ10, /* PIRQB */
46 ULI_8259_IRQ11, /* PIRQC */
47 ULI_8259_IRQ12, /* PIRQD */
48 ULI_8259_IRQ5, /* PIRQE */
49 ULI_8259_IRQ6, /* PIRQF */
50 ULI_8259_IRQ7, /* PIRQG */
51 ULI_8259_NONE, /* PIRQH */
52};
53
54/* set in board code if you want this quirks to do something */
55int uses_fsl_uli_m1575;
56
57/* Bridge */
58static void __devinit early_uli5249(struct pci_dev *dev)
59{
60 unsigned char temp;
61
62 if (!uses_fsl_uli_m1575)
63 return;
64
65 pci_write_config_word(dev, PCI_COMMAND, PCI_COMMAND_IO |
66 PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
67
68 /* read/write lock */
69 pci_read_config_byte(dev, 0x7c, &temp);
70 pci_write_config_byte(dev, 0x7c, 0x80);
71
72 /* set as P2P bridge */
73 pci_write_config_byte(dev, PCI_CLASS_PROG, 0x01);
74 dev->class |= 0x1;
75
76 /* restore lock */
77 pci_write_config_byte(dev, 0x7c, temp);
78}
79
80
81static void __devinit quirk_uli1575(struct pci_dev *dev)
82{
83 int i;
84
85 if (!uses_fsl_uli_m1575)
86 return;
87
88 /*
89 * ULI1575 interrupts route setup
90 */
91
92 /* ULI1575 IRQ mapping conf register maps PIRQx to IRQn */
93 for (i = 0; i < 4; i++) {
94 u8 val = uli_pirq_to_irq[i*2] | (uli_pirq_to_irq[i*2+1] << 4);
95 pci_write_config_byte(dev, 0x48 + i, val);
96 }
97
98 /* USB 1.1 OHCI controller 1: dev 28, func 0 - IRQ12 */
99 pci_write_config_byte(dev, 0x86, ULI_PIRQD);
100
101 /* USB 1.1 OHCI controller 2: dev 28, func 1 - IRQ9 */
102 pci_write_config_byte(dev, 0x87, ULI_PIRQA);
103
104 /* USB 1.1 OHCI controller 3: dev 28, func 2 - IRQ10 */
105 pci_write_config_byte(dev, 0x88, ULI_PIRQB);
106
107 /* Lan controller: dev 27, func 0 - IRQ6 */
108 pci_write_config_byte(dev, 0x89, ULI_PIRQF);
109
110 /* AC97 Audio controller: dev 29, func 0 - IRQ6 */
111 pci_write_config_byte(dev, 0x8a, ULI_PIRQF);
112
113 /* Modem controller: dev 29, func 1 - IRQ6 */
114 pci_write_config_byte(dev, 0x8b, ULI_PIRQF);
115
116 /* HD Audio controller: dev 29, func 2 - IRQ6 */
117 pci_write_config_byte(dev, 0x8c, ULI_PIRQF);
118
119 /* SATA controller: dev 31, func 1 - IRQ5 */
120 pci_write_config_byte(dev, 0x8d, ULI_PIRQE);
121
122 /* SMB interrupt: dev 30, func 1 - IRQ7 */
123 pci_write_config_byte(dev, 0x8e, ULI_PIRQG);
124
125 /* PMU ACPI SCI interrupt: dev 30, func 2 - IRQ7 */
126 pci_write_config_byte(dev, 0x8f, ULI_PIRQG);
127
128 /* USB 2.0 controller: dev 28, func 3 */
129 pci_write_config_byte(dev, 0x74, ULI_8259_IRQ11);
130
131 /* Primary PATA IDE IRQ: 14
132 * Secondary PATA IDE IRQ: 15
133 */
134 pci_write_config_byte(dev, 0x44, 0x30 | ULI_8259_IRQ14);
135 pci_write_config_byte(dev, 0x75, ULI_8259_IRQ15);
136}
137
138static void __devinit quirk_final_uli1575(struct pci_dev *dev)
139{
140 /* Set i8259 interrupt trigger
141 * IRQ 3: Level
142 * IRQ 4: Level
143 * IRQ 5: Level
144 * IRQ 6: Level
145 * IRQ 7: Level
146 * IRQ 9: Level
147 * IRQ 10: Level
148 * IRQ 11: Level
149 * IRQ 12: Level
150 * IRQ 14: Edge
151 * IRQ 15: Edge
152 */
153 if (!uses_fsl_uli_m1575)
154 return;
155
156 outb(0xfa, 0x4d0);
157 outb(0x1e, 0x4d1);
158
159 /* setup RTC */
160 CMOS_WRITE(RTC_SET, RTC_CONTROL);
161 CMOS_WRITE(RTC_24H, RTC_CONTROL);
162
163 /* ensure month, date, and week alarm fields are ignored */
164 CMOS_WRITE(0, RTC_VALID);
165
166 outb_p(0x7c, 0x72);
167 outb_p(RTC_ALARM_DONT_CARE, 0x73);
168
169 outb_p(0x7d, 0x72);
170 outb_p(RTC_ALARM_DONT_CARE, 0x73);
171}
172
173/* SATA */
174static void __devinit quirk_uli5288(struct pci_dev *dev)
175{
176 unsigned char c;
177 unsigned int d;
178
179 if (!uses_fsl_uli_m1575)
180 return;
181
182 /* read/write lock */
183 pci_read_config_byte(dev, 0x83, &c);
184 pci_write_config_byte(dev, 0x83, c|0x80);
185
186 pci_read_config_dword(dev, PCI_CLASS_REVISION, &d);
187 d = (d & 0xff) | (PCI_CLASS_STORAGE_SATA_AHCI << 8);
188 pci_write_config_dword(dev, PCI_CLASS_REVISION, d);
189
190 /* restore lock */
191 pci_write_config_byte(dev, 0x83, c);
192
193 /* disable emulated PATA mode enabled */
194 pci_read_config_byte(dev, 0x84, &c);
195 pci_write_config_byte(dev, 0x84, c & ~0x01);
196}
197
198/* PATA */
199static void __devinit quirk_uli5229(struct pci_dev *dev)
200{
201 unsigned short temp;
202
203 if (!uses_fsl_uli_m1575)
204 return;
205
206 pci_write_config_word(dev, PCI_COMMAND, PCI_COMMAND_INTX_DISABLE |
207 PCI_COMMAND_MASTER | PCI_COMMAND_IO);
208
209 /* Enable Native IRQ 14/15 */
210 pci_read_config_word(dev, 0x4a, &temp);
211 pci_write_config_word(dev, 0x4a, temp | 0x1000);
212}
213
214/* We have to do a dummy read on the P2P for the RTC to work, WTF */
215static void __devinit quirk_final_uli5249(struct pci_dev *dev)
216{
217 int i;
218 u8 *dummy;
219 struct pci_bus *bus = dev->bus;
220
221 for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) {
222 if ((bus->resource[i]) &&
223 (bus->resource[i]->flags & IORESOURCE_MEM)) {
224 dummy = ioremap(bus->resource[i]->start, 0x4);
225 if (dummy) {
226 in_8(dummy);
227 iounmap(dummy);
228 }
229 break;
230 }
231 }
232}
233
234DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AL, 0x5249, early_uli5249);
235DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x1575, quirk_uli1575);
236DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5288, quirk_uli5288);
237DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229);
238DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x5249, quirk_final_uli5249);
239DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x1575, quirk_final_uli1575);
240
241int uli_exclude_device(struct pci_controller *hose,
242 u_char bus, u_char devfn)
243{
244 if (bus == (hose->first_busno + 2)) {
245 /* exclude Modem controller */
246 if ((PCI_SLOT(devfn) == 29) && (PCI_FUNC(devfn) == 1))
247 return PCIBIOS_DEVICE_NOT_FOUND;
248
249 /* exclude HD Audio controller */
250 if ((PCI_SLOT(devfn) == 29) && (PCI_FUNC(devfn) == 2))
251 return PCIBIOS_DEVICE_NOT_FOUND;
252 }
253
254 return PCIBIOS_SUCCESSFUL;
255}
diff --git a/arch/powerpc/platforms/pasemi/iommu.c b/arch/powerpc/platforms/pasemi/iommu.c
index c910ec9c2bdf..6c42787fb382 100644
--- a/arch/powerpc/platforms/pasemi/iommu.c
+++ b/arch/powerpc/platforms/pasemi/iommu.c
@@ -93,7 +93,7 @@ static void iobmap_build(struct iommu_table *tbl, long index,
93 93
94 pr_debug("iobmap: build at: %lx, %lx, addr: %lx\n", index, npages, uaddr); 94 pr_debug("iobmap: build at: %lx, %lx, addr: %lx\n", index, npages, uaddr);
95 95
96 bus_addr = (tbl->it_offset + index) << PAGE_SHIFT; 96 bus_addr = (tbl->it_offset + index) << IOBMAP_PAGE_SHIFT;
97 97
98 ip = ((u32 *)tbl->it_base) + index; 98 ip = ((u32 *)tbl->it_base) + index;
99 99
@@ -118,7 +118,7 @@ static void iobmap_free(struct iommu_table *tbl, long index,
118 118
119 pr_debug("iobmap: free at: %lx, %lx\n", index, npages); 119 pr_debug("iobmap: free at: %lx, %lx\n", index, npages);
120 120
121 bus_addr = (tbl->it_offset + index) << PAGE_SHIFT; 121 bus_addr = (tbl->it_offset + index) << IOBMAP_PAGE_SHIFT;
122 122
123 ip = ((u32 *)tbl->it_base) + index; 123 ip = ((u32 *)tbl->it_base) + index;
124 124
@@ -137,7 +137,7 @@ static void iommu_table_iobmap_setup(void)
137 iommu_table_iobmap.it_busno = 0; 137 iommu_table_iobmap.it_busno = 0;
138 iommu_table_iobmap.it_offset = 0; 138 iommu_table_iobmap.it_offset = 0;
139 /* it_size is in number of entries */ 139 /* it_size is in number of entries */
140 iommu_table_iobmap.it_size = 0x80000000 >> PAGE_SHIFT; 140 iommu_table_iobmap.it_size = 0x80000000 >> IOBMAP_PAGE_SHIFT;
141 141
142 /* Initialize the common IOMMU code */ 142 /* Initialize the common IOMMU code */
143 iommu_table_iobmap.it_base = (unsigned long)iob_l2_base; 143 iommu_table_iobmap.it_base = (unsigned long)iob_l2_base;
diff --git a/arch/powerpc/sysdev/axonram.c b/arch/powerpc/sysdev/axonram.c
index 2326d5dc5752..ab037a3a40db 100644
--- a/arch/powerpc/sysdev/axonram.c
+++ b/arch/powerpc/sysdev/axonram.c
@@ -59,8 +59,7 @@
59struct axon_ram_bank { 59struct axon_ram_bank {
60 struct of_device *device; 60 struct of_device *device;
61 struct gendisk *disk; 61 struct gendisk *disk;
62 unsigned int irq_correctable; 62 unsigned int irq_id;
63 unsigned int irq_uncorrectable;
64 unsigned long ph_addr; 63 unsigned long ph_addr;
65 unsigned long io_addr; 64 unsigned long io_addr;
66 unsigned long size; 65 unsigned long size;
@@ -93,16 +92,9 @@ axon_ram_irq_handler(int irq, void *dev)
93 92
94 BUG_ON(!bank); 93 BUG_ON(!bank);
95 94
96 if (irq == bank->irq_correctable) { 95 dev_err(&device->dev, "Correctable memory error occured\n");
97 dev_err(&device->dev, "Correctable memory error occured\n"); 96 bank->ecc_counter++;
98 bank->ecc_counter++; 97 return IRQ_HANDLED;
99 return IRQ_HANDLED;
100 } else if (irq == bank->irq_uncorrectable) {
101 dev_err(&device->dev, "Uncorrectable memory error occured\n");
102 panic("Critical ECC error on %s", device->node->full_name);
103 }
104
105 return IRQ_NONE;
106} 98}
107 99
108/** 100/**
@@ -259,28 +251,18 @@ axon_ram_probe(struct of_device *device, const struct of_device_id *device_id)
259 blk_queue_hardsect_size(bank->disk->queue, AXON_RAM_SECTOR_SIZE); 251 blk_queue_hardsect_size(bank->disk->queue, AXON_RAM_SECTOR_SIZE);
260 add_disk(bank->disk); 252 add_disk(bank->disk);
261 253
262 bank->irq_correctable = irq_of_parse_and_map(device->node, 0); 254 bank->irq_id = irq_of_parse_and_map(device->node, 0);
263 bank->irq_uncorrectable = irq_of_parse_and_map(device->node, 1); 255 if (bank->irq_id == NO_IRQ) {
264 if ((bank->irq_correctable <= 0) || (bank->irq_uncorrectable <= 0)) {
265 dev_err(&device->dev, "Cannot access ECC interrupt ID\n"); 256 dev_err(&device->dev, "Cannot access ECC interrupt ID\n");
266 rc = -EFAULT; 257 rc = -EFAULT;
267 goto failed; 258 goto failed;
268 } 259 }
269 260
270 rc = request_irq(bank->irq_correctable, axon_ram_irq_handler, 261 rc = request_irq(bank->irq_id, axon_ram_irq_handler,
271 AXON_RAM_IRQ_FLAGS, bank->disk->disk_name, device);
272 if (rc != 0) {
273 dev_err(&device->dev, "Cannot register ECC interrupt handler\n");
274 bank->irq_correctable = bank->irq_uncorrectable = 0;
275 rc = -EFAULT;
276 goto failed;
277 }
278
279 rc = request_irq(bank->irq_uncorrectable, axon_ram_irq_handler,
280 AXON_RAM_IRQ_FLAGS, bank->disk->disk_name, device); 262 AXON_RAM_IRQ_FLAGS, bank->disk->disk_name, device);
281 if (rc != 0) { 263 if (rc != 0) {
282 dev_err(&device->dev, "Cannot register ECC interrupt handler\n"); 264 dev_err(&device->dev, "Cannot register ECC interrupt handler\n");
283 bank->irq_uncorrectable = 0; 265 bank->irq_id = NO_IRQ;
284 rc = -EFAULT; 266 rc = -EFAULT;
285 goto failed; 267 goto failed;
286 } 268 }
@@ -296,13 +278,9 @@ axon_ram_probe(struct of_device *device, const struct of_device_id *device_id)
296 278
297failed: 279failed:
298 if (bank != NULL) { 280 if (bank != NULL) {
299 if (bank->irq_uncorrectable > 0) 281 if (bank->irq_id != NO_IRQ)
300 free_irq(bank->irq_uncorrectable, device); 282 free_irq(bank->irq_id, device);
301 if (bank->irq_correctable > 0)
302 free_irq(bank->irq_correctable, device);
303 if (bank->disk != NULL) { 283 if (bank->disk != NULL) {
304 if (bank->disk->queue != NULL)
305 blk_cleanup_queue(bank->disk->queue);
306 if (bank->disk->major > 0) 284 if (bank->disk->major > 0)
307 unregister_blkdev(bank->disk->major, 285 unregister_blkdev(bank->disk->major,
308 bank->disk->disk_name); 286 bank->disk->disk_name);
@@ -329,9 +307,7 @@ axon_ram_remove(struct of_device *device)
329 BUG_ON(!bank || !bank->disk); 307 BUG_ON(!bank || !bank->disk);
330 308
331 device_remove_file(&device->dev, &dev_attr_ecc); 309 device_remove_file(&device->dev, &dev_attr_ecc);
332 free_irq(bank->irq_uncorrectable, device); 310 free_irq(bank->irq_id, device);
333 free_irq(bank->irq_correctable, device);
334 blk_cleanup_queue(bank->disk->queue);
335 unregister_blkdev(bank->disk->major, bank->disk->disk_name); 311 unregister_blkdev(bank->disk->major, bank->disk->disk_name);
336 del_gendisk(bank->disk); 312 del_gendisk(bank->disk);
337 iounmap((void __iomem *) bank->io_addr); 313 iounmap((void __iomem *) bank->io_addr);
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index 9fb0ce5c7176..114c90f8f560 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -251,6 +251,8 @@ DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568E, quirk_fsl_pcie_transpare
251DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568, quirk_fsl_pcie_transparent); 251DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568, quirk_fsl_pcie_transparent);
252DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567E, quirk_fsl_pcie_transparent); 252DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567E, quirk_fsl_pcie_transparent);
253DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567, quirk_fsl_pcie_transparent); 253DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567, quirk_fsl_pcie_transparent);
254DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533E, quirk_fsl_pcie_transparent);
255DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_transparent);
254DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_transparent); 256DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_transparent);
255DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_transparent); 257DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_transparent);
256DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_transparent); 258DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_transparent);
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
index 565f57d777fe..f3abce11bead 100644
--- a/arch/powerpc/sysdev/fsl_soc.c
+++ b/arch/powerpc/sysdev/fsl_soc.c
@@ -22,6 +22,7 @@
22#include <linux/module.h> 22#include <linux/module.h>
23#include <linux/device.h> 23#include <linux/device.h>
24#include <linux/platform_device.h> 24#include <linux/platform_device.h>
25#include <linux/of_platform.h>
25#include <linux/phy.h> 26#include <linux/phy.h>
26#include <linux/fsl_devices.h> 27#include <linux/fsl_devices.h>
27#include <linux/fs_enet_pd.h> 28#include <linux/fs_enet_pd.h>
diff --git a/arch/powerpc/sysdev/rtc_cmos_setup.c b/arch/powerpc/sysdev/rtc_cmos_setup.c
index e276048b8c5f..0c9ac7ee08fb 100644
--- a/arch/powerpc/sysdev/rtc_cmos_setup.c
+++ b/arch/powerpc/sysdev/rtc_cmos_setup.c
@@ -20,14 +20,16 @@ static int __init add_rtc(void)
20{ 20{
21 struct device_node *np; 21 struct device_node *np;
22 struct platform_device *pd; 22 struct platform_device *pd;
23 struct resource res; 23 struct resource res[2];
24 int ret; 24 int ret;
25 25
26 memset(&res, 0, sizeof(res));
27
26 np = of_find_compatible_node(NULL, NULL, "pnpPNP,b00"); 28 np = of_find_compatible_node(NULL, NULL, "pnpPNP,b00");
27 if (!np) 29 if (!np)
28 return -ENODEV; 30 return -ENODEV;
29 31
30 ret = of_address_to_resource(np, 0, &res); 32 ret = of_address_to_resource(np, 0, &res[0]);
31 of_node_put(np); 33 of_node_put(np);
32 if (ret) 34 if (ret)
33 return ret; 35 return ret;
@@ -36,11 +38,18 @@ static int __init add_rtc(void)
36 * RTC_PORT(x) is hardcoded in asm/mc146818rtc.h. Verify that the 38 * RTC_PORT(x) is hardcoded in asm/mc146818rtc.h. Verify that the
37 * address provided by the device node matches. 39 * address provided by the device node matches.
38 */ 40 */
39 if (res.start != RTC_PORT(0)) 41 if (res[0].start != RTC_PORT(0))
40 return -EINVAL; 42 return -EINVAL;
41 43
44 /* Use a fixed interrupt value of 8 since on PPC if we are using this
45 * its off an i8259 which we ensure has interrupt numbers 0..15. */
46 res[1].start = 8;
47 res[1].end = 8;
48 res[1].flags = IORESOURCE_IRQ;
49
42 pd = platform_device_register_simple("rtc_cmos", -1, 50 pd = platform_device_register_simple("rtc_cmos", -1,
43 &res, 1); 51 &res[0], 2);
52
44 if (IS_ERR(pd)) 53 if (IS_ERR(pd))
45 return PTR_ERR(pd); 54 return PTR_ERR(pd);
46 55
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c
index ad4ca75c0f04..5245717295b8 100644
--- a/arch/s390/hypfs/inode.c
+++ b/arch/s390/hypfs/inode.c
@@ -60,17 +60,28 @@ static void hypfs_add_dentry(struct dentry *dentry)
60 hypfs_last_dentry = dentry; 60 hypfs_last_dentry = dentry;
61} 61}
62 62
63static inline int hypfs_positive(struct dentry *dentry)
64{
65 return dentry->d_inode && !d_unhashed(dentry);
66}
67
63static void hypfs_remove(struct dentry *dentry) 68static void hypfs_remove(struct dentry *dentry)
64{ 69{
65 struct dentry *parent; 70 struct dentry *parent;
66 71
67 parent = dentry->d_parent; 72 parent = dentry->d_parent;
68 if (S_ISDIR(dentry->d_inode->i_mode)) 73 if (!parent || !parent->d_inode)
69 simple_rmdir(parent->d_inode, dentry); 74 return;
70 else 75 mutex_lock(&parent->d_inode->i_mutex);
71 simple_unlink(parent->d_inode, dentry); 76 if (hypfs_positive(dentry)) {
77 if (S_ISDIR(dentry->d_inode->i_mode))
78 simple_rmdir(parent->d_inode, dentry);
79 else
80 simple_unlink(parent->d_inode, dentry);
81 }
72 d_delete(dentry); 82 d_delete(dentry);
73 dput(dentry); 83 dput(dentry);
84 mutex_unlock(&parent->d_inode->i_mutex);
74} 85}
75 86
76static void hypfs_delete_tree(struct dentry *root) 87static void hypfs_delete_tree(struct dentry *root)
@@ -315,6 +326,7 @@ static int hypfs_fill_super(struct super_block *sb, void *data, int silent)
315 } 326 }
316 hypfs_update_update(sb); 327 hypfs_update_update(sb);
317 sb->s_root = root_dentry; 328 sb->s_root = root_dentry;
329 printk(KERN_INFO "hypfs: Hypervisor filesystem mounted\n");
318 return 0; 330 return 0;
319 331
320err_tree: 332err_tree:
@@ -356,13 +368,17 @@ static struct dentry *hypfs_create_file(struct super_block *sb,
356 qname.name = name; 368 qname.name = name;
357 qname.len = strlen(name); 369 qname.len = strlen(name);
358 qname.hash = full_name_hash(name, qname.len); 370 qname.hash = full_name_hash(name, qname.len);
371 mutex_lock(&parent->d_inode->i_mutex);
359 dentry = lookup_one_len(name, parent, strlen(name)); 372 dentry = lookup_one_len(name, parent, strlen(name));
360 if (IS_ERR(dentry)) 373 if (IS_ERR(dentry)) {
361 return ERR_PTR(-ENOMEM); 374 dentry = ERR_PTR(-ENOMEM);
375 goto fail;
376 }
362 inode = hypfs_make_inode(sb, mode); 377 inode = hypfs_make_inode(sb, mode);
363 if (!inode) { 378 if (!inode) {
364 dput(dentry); 379 dput(dentry);
365 return ERR_PTR(-ENOMEM); 380 dentry = ERR_PTR(-ENOMEM);
381 goto fail;
366 } 382 }
367 if (mode & S_IFREG) { 383 if (mode & S_IFREG) {
368 inode->i_fop = &hypfs_file_ops; 384 inode->i_fop = &hypfs_file_ops;
@@ -379,6 +395,8 @@ static struct dentry *hypfs_create_file(struct super_block *sb,
379 inode->i_private = data; 395 inode->i_private = data;
380 d_instantiate(dentry, inode); 396 d_instantiate(dentry, inode);
381 dget(dentry); 397 dget(dentry);
398fail:
399 mutex_unlock(&parent->d_inode->i_mutex);
382 return dentry; 400 return dentry;
383} 401}
384 402
@@ -391,7 +409,6 @@ struct dentry *hypfs_mkdir(struct super_block *sb, struct dentry *parent,
391 if (IS_ERR(dentry)) 409 if (IS_ERR(dentry))
392 return dentry; 410 return dentry;
393 hypfs_add_dentry(dentry); 411 hypfs_add_dentry(dentry);
394 parent->d_inode->i_nlink++;
395 return dentry; 412 return dentry;
396} 413}
397 414
diff --git a/arch/s390/kernel/Makefile b/arch/s390/kernel/Makefile
index 3195d375bd51..56cb71007cd9 100644
--- a/arch/s390/kernel/Makefile
+++ b/arch/s390/kernel/Makefile
@@ -6,7 +6,7 @@ EXTRA_AFLAGS := -traditional
6 6
7obj-y := bitmap.o traps.o time.o process.o base.o early.o \ 7obj-y := bitmap.o traps.o time.o process.o base.o early.o \
8 setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \ 8 setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \
9 semaphore.o s390_ext.o debug.o irq.o ipl.o dis.o 9 semaphore.o s390_ext.o debug.o irq.o ipl.o dis.o diag.o
10 10
11obj-y += $(if $(CONFIG_64BIT),entry64.o,entry.o) 11obj-y += $(if $(CONFIG_64BIT),entry64.o,entry.o)
12obj-y += $(if $(CONFIG_64BIT),reipl64.o,reipl.o) 12obj-y += $(if $(CONFIG_64BIT),reipl64.o,reipl.o)
diff --git a/arch/s390/kernel/diag.c b/arch/s390/kernel/diag.c
new file mode 100644
index 000000000000..c032d11da8a1
--- /dev/null
+++ b/arch/s390/kernel/diag.c
@@ -0,0 +1,102 @@
1/*
2 * Implementation of s390 diagnose codes
3 *
4 * Copyright IBM Corp. 2007
5 * Author(s): Michael Holzheu <holzheu@de.ibm.com>
6 */
7
8#include <linux/module.h>
9#include <asm/diag.h>
10
11/*
12 * Diagnose 10: Release pages
13 */
14void diag10(unsigned long addr)
15{
16 if (addr >= 0x7ff00000)
17 return;
18 asm volatile(
19#ifdef CONFIG_64BIT
20 " sam31\n"
21 " diag %0,%0,0x10\n"
22 "0: sam64\n"
23#else
24 " diag %0,%0,0x10\n"
25 "0:\n"
26#endif
27 EX_TABLE(0b, 0b)
28 : : "a" (addr));
29}
30EXPORT_SYMBOL(diag10);
31
32/*
33 * Diagnose 14: Input spool file manipulation
34 */
35int diag14(unsigned long rx, unsigned long ry1, unsigned long subcode)
36{
37 register unsigned long _ry1 asm("2") = ry1;
38 register unsigned long _ry2 asm("3") = subcode;
39 int rc = 0;
40
41 asm volatile(
42#ifdef CONFIG_64BIT
43 " sam31\n"
44 " diag %2,2,0x14\n"
45 " sam64\n"
46#else
47 " diag %2,2,0x14\n"
48#endif
49 " ipm %0\n"
50 " srl %0,28\n"
51 : "=d" (rc), "+d" (_ry2)
52 : "d" (rx), "d" (_ry1)
53 : "cc");
54
55 return rc;
56}
57EXPORT_SYMBOL(diag14);
58
59/*
60 * Diagnose 210: Get information about a virtual device
61 */
62int diag210(struct diag210 *addr)
63{
64 /*
65 * diag 210 needs its data below the 2GB border, so we
66 * use a static data area to be sure
67 */
68 static struct diag210 diag210_tmp;
69 static DEFINE_SPINLOCK(diag210_lock);
70 unsigned long flags;
71 int ccode;
72
73 spin_lock_irqsave(&diag210_lock, flags);
74 diag210_tmp = *addr;
75
76#ifdef CONFIG_64BIT
77 asm volatile(
78 " lhi %0,-1\n"
79 " sam31\n"
80 " diag %1,0,0x210\n"
81 "0: ipm %0\n"
82 " srl %0,28\n"
83 "1: sam64\n"
84 EX_TABLE(0b, 1b)
85 : "=&d" (ccode) : "a" (&diag210_tmp) : "cc", "memory");
86#else
87 asm volatile(
88 " lhi %0,-1\n"
89 " diag %1,0,0x210\n"
90 "0: ipm %0\n"
91 " srl %0,28\n"
92 "1:\n"
93 EX_TABLE(0b, 1b)
94 : "=&d" (ccode) : "a" (&diag210_tmp) : "cc", "memory");
95#endif
96
97 *addr = diag210_tmp;
98 spin_unlock_irqrestore(&diag210_lock, flags);
99
100 return ccode;
101}
102EXPORT_SYMBOL(diag210);
diff --git a/arch/s390/kernel/dis.c b/arch/s390/kernel/dis.c
index d3057318f2bf..50d2235df732 100644
--- a/arch/s390/kernel/dis.c
+++ b/arch/s390/kernel/dis.c
@@ -577,7 +577,7 @@ static struct insn opcode_b2[] = {
577 { "esta", 0x4a, INSTR_RRE_RR }, 577 { "esta", 0x4a, INSTR_RRE_RR },
578 { "lura", 0x4b, INSTR_RRE_RR }, 578 { "lura", 0x4b, INSTR_RRE_RR },
579 { "tar", 0x4c, INSTR_RRE_AR }, 579 { "tar", 0x4c, INSTR_RRE_AR },
580 { "cpya", INSTR_RRE_AA }, 580 { "cpya", 0x4d, INSTR_RRE_AA },
581 { "sar", 0x4e, INSTR_RRE_AR }, 581 { "sar", 0x4e, INSTR_RRE_AR },
582 { "ear", 0x4f, INSTR_RRE_RA }, 582 { "ear", 0x4f, INSTR_RRE_RA },
583 { "csp", 0x50, INSTR_RRE_RR }, 583 { "csp", 0x50, INSTR_RRE_RR },
diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c
index 358d2bbbc481..e40373d9fbce 100644
--- a/arch/s390/kernel/kprobes.c
+++ b/arch/s390/kernel/kprobes.c
@@ -85,7 +85,7 @@ void __kprobes get_instruction_type(struct arch_specific_insn *ainsn)
85 ainsn->reg = (*ainsn->insn & 0xf0) >> 4; 85 ainsn->reg = (*ainsn->insn & 0xf0) >> 4;
86 86
87 /* save the instruction length (pop 5-5) in bytes */ 87 /* save the instruction length (pop 5-5) in bytes */
88 switch (*(__u8 *) (ainsn->insn) >> 4) { 88 switch (*(__u8 *) (ainsn->insn) >> 6) {
89 case 0: 89 case 0:
90 ainsn->ilen = 2; 90 ainsn->ilen = 2;
91 break; 91 break;
diff --git a/arch/s390/kernel/s390_ksyms.c b/arch/s390/kernel/s390_ksyms.c
index 90b5ef529eb7..7234c737f825 100644
--- a/arch/s390/kernel/s390_ksyms.c
+++ b/arch/s390/kernel/s390_ksyms.c
@@ -25,7 +25,6 @@ EXPORT_SYMBOL(_oi_bitmap);
25EXPORT_SYMBOL(_ni_bitmap); 25EXPORT_SYMBOL(_ni_bitmap);
26EXPORT_SYMBOL(_zb_findmap); 26EXPORT_SYMBOL(_zb_findmap);
27EXPORT_SYMBOL(_sb_findmap); 27EXPORT_SYMBOL(_sb_findmap);
28EXPORT_SYMBOL(diag10);
29 28
30/* 29/*
31 * semaphore ops 30 * semaphore ops
diff --git a/arch/s390/mm/cmm.c b/arch/s390/mm/cmm.c
index c5b2f4f078bc..fabc50adc46a 100644
--- a/arch/s390/mm/cmm.c
+++ b/arch/s390/mm/cmm.c
@@ -20,6 +20,7 @@
20 20
21#include <asm/pgalloc.h> 21#include <asm/pgalloc.h>
22#include <asm/uaccess.h> 22#include <asm/uaccess.h>
23#include <asm/diag.h>
23 24
24static char *sender = "VMRMSVM"; 25static char *sender = "VMRMSVM";
25module_param(sender, charp, 0400); 26module_param(sender, charp, 0400);
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c
index 9098531a2671..3a25bbf2eb0a 100644
--- a/arch/s390/mm/init.c
+++ b/arch/s390/mm/init.c
@@ -42,23 +42,6 @@ DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
42pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__((__aligned__(PAGE_SIZE))); 42pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__((__aligned__(PAGE_SIZE)));
43char empty_zero_page[PAGE_SIZE] __attribute__((__aligned__(PAGE_SIZE))); 43char empty_zero_page[PAGE_SIZE] __attribute__((__aligned__(PAGE_SIZE)));
44 44
45void diag10(unsigned long addr)
46{
47 if (addr >= 0x7ff00000)
48 return;
49 asm volatile(
50#ifdef CONFIG_64BIT
51 " sam31\n"
52 " diag %0,%0,0x10\n"
53 "0: sam64\n"
54#else
55 " diag %0,%0,0x10\n"
56 "0:\n"
57#endif
58 EX_TABLE(0b,0b)
59 : : "a" (addr));
60}
61
62void show_mem(void) 45void show_mem(void)
63{ 46{
64 int i, total = 0, reserved = 0; 47 int i, total = 0, reserved = 0;
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index 3d211aa33cd8..97ac58682d0f 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -34,6 +34,8 @@ isa-y := $(isa-y)-nofpu
34endif 34endif
35endif 35endif
36 36
37isa-y := $(isa-y)-up
38
37cflags-$(CONFIG_CPU_SH2) := $(call cc-option,-m2,) 39cflags-$(CONFIG_CPU_SH2) := $(call cc-option,-m2,)
38cflags-$(CONFIG_CPU_SH2A) += $(call cc-option,-m2a,) \ 40cflags-$(CONFIG_CPU_SH2A) += $(call cc-option,-m2a,) \
39 $(call cc-option,-m2a-nofpu,) 41 $(call cc-option,-m2a-nofpu,)
@@ -46,7 +48,20 @@ cflags-$(CONFIG_CPU_SH4A) += $(call cc-option,-m4a,) \
46cflags-$(CONFIG_CPU_BIG_ENDIAN) += -mb 48cflags-$(CONFIG_CPU_BIG_ENDIAN) += -mb
47cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml 49cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml
48 50
49cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),) -ffreestanding 51#
52# -Wa,-isa= tuning implies -Wa,-dsp for the versions of binutils that
53# support it, while -Wa,-dsp by itself limits the range of usable opcodes
54# on certain CPU subtypes. Try the ISA variant first, and if that fails,
55# fall back on -Wa,-dsp for the old binutils versions. Even without DSP
56# opcodes, we always want the best ISA tuning the version of binutils
57# will provide.
58#
59isaflags-y := $(call as-option,-Wa$(comma)-isa=$(isa-y),)
60
61isaflags-$(CONFIG_SH_DSP) := \
62 $(call as-option,-Wa$(comma)-isa=$(isa-y),-Wa$(comma)-dsp)
63
64cflags-y += $(isaflags-y) -ffreestanding
50 65
51cflags-$(CONFIG_MORE_COMPILE_OPTIONS) += \ 66cflags-$(CONFIG_MORE_COMPILE_OPTIONS) += \
52 $(shell echo $(CONFIG_COMPILE_OPTIONS) | sed -e 's/"//g') 67 $(shell echo $(CONFIG_COMPILE_OPTIONS) | sed -e 's/"//g')
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh4-202.c b/arch/sh/kernel/cpu/sh4/setup-sh4-202.c
index 6e4e96541358..dab193293f20 100644
--- a/arch/sh/kernel/cpu/sh4/setup-sh4-202.c
+++ b/arch/sh/kernel/cpu/sh4/setup-sh4-202.c
@@ -41,3 +41,8 @@ static int __init sh4202_devices_setup(void)
41 ARRAY_SIZE(sh4202_devices)); 41 ARRAY_SIZE(sh4202_devices));
42} 42}
43__initcall(sh4202_devices_setup); 43__initcall(sh4202_devices_setup);
44
45void __init plat_irq_setup(void)
46{
47 /* do nothing - all IRL interrupts are handled by the board code */
48}
diff --git a/arch/sh/kernel/early_printk.c b/arch/sh/kernel/early_printk.c
index 9833493d8867..80b637c30203 100644
--- a/arch/sh/kernel/early_printk.c
+++ b/arch/sh/kernel/early_printk.c
@@ -76,7 +76,7 @@ static void scif_sercon_putc(int c)
76 sci_in(&scif_port, SCxSR); 76 sci_in(&scif_port, SCxSR);
77 sci_out(&scif_port, SCxSR, 0xf3 & ~(0x20 | 0x40)); 77 sci_out(&scif_port, SCxSR, 0xf3 & ~(0x20 | 0x40));
78 78
79 while ((sci_in(&scif_port, SCxSR) & 0x40) == 0); 79 while ((sci_in(&scif_port, SCxSR) & 0x40) == 0)
80 ; 80 ;
81 81
82 if (c == '\n') 82 if (c == '\n')
diff --git a/arch/sh/kernel/machvec.c b/arch/sh/kernel/machvec.c
index 23c5948f0124..129b2cfd18a8 100644
--- a/arch/sh/kernel/machvec.c
+++ b/arch/sh/kernel/machvec.c
@@ -91,6 +91,13 @@ void __init sh_mv_setup(void)
91 (unsigned long)&__machvec_start); 91 (unsigned long)&__machvec_start);
92 92
93 /* 93 /*
94 * Sanity check for machvec section alignment. Ensure
95 * __initmv hasn't been misused.
96 */
97 if (machvec_size % sizeof(struct sh_machine_vector))
98 panic("machvec misaligned, invalid __initmv use?");
99
100 /*
94 * If the machvec hasn't been preselected, use the first 101 * If the machvec hasn't been preselected, use the first
95 * vector (usually the only one) from .machvec.init. 102 * vector (usually the only one) from .machvec.init.
96 */ 103 */
diff --git a/arch/sh/kernel/ptrace.c b/arch/sh/kernel/ptrace.c
index 891d1d46c902..f64a2d2416d4 100644
--- a/arch/sh/kernel/ptrace.c
+++ b/arch/sh/kernel/ptrace.c
@@ -93,6 +93,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
93 case PTRACE_PEEKTEXT: /* read word at location addr. */ 93 case PTRACE_PEEKTEXT: /* read word at location addr. */
94 case PTRACE_PEEKDATA: 94 case PTRACE_PEEKDATA:
95 ret = generic_ptrace_peekdata(child, addr, data); 95 ret = generic_ptrace_peekdata(child, addr, data);
96 break;
96 97
97 /* read the word at location addr in the USER area. */ 98 /* read the word at location addr in the USER area. */
98 case PTRACE_PEEKUSR: { 99 case PTRACE_PEEKUSR: {
diff --git a/arch/sh64/kernel/setup.c b/arch/sh64/kernel/setup.c
index 53e9d20a874a..2b7264c0c6f7 100644
--- a/arch/sh64/kernel/setup.c
+++ b/arch/sh64/kernel/setup.c
@@ -59,10 +59,6 @@
59#include <asm/setup.h> 59#include <asm/setup.h>
60#include <asm/smp.h> 60#include <asm/smp.h>
61 61
62#ifdef CONFIG_VT
63#include <linux/console.h>
64#endif
65
66struct screen_info screen_info; 62struct screen_info screen_info;
67 63
68#ifdef CONFIG_BLK_DEV_RAM 64#ifdef CONFIG_BLK_DEV_RAM
diff --git a/arch/sh64/kernel/signal.c b/arch/sh64/kernel/signal.c
index 0bb4a8f94276..79fc48cf54c6 100644
--- a/arch/sh64/kernel/signal.c
+++ b/arch/sh64/kernel/signal.c
@@ -25,7 +25,6 @@
25#include <linux/ptrace.h> 25#include <linux/ptrace.h>
26#include <linux/unistd.h> 26#include <linux/unistd.h>
27#include <linux/stddef.h> 27#include <linux/stddef.h>
28#include <linux/personality.h>
29#include <asm/ucontext.h> 28#include <asm/ucontext.h>
30#include <asm/uaccess.h> 29#include <asm/uaccess.h>
31#include <asm/pgtable.h> 30#include <asm/pgtable.h>
diff --git a/arch/sparc/kernel/ebus.c b/arch/sparc/kernel/ebus.c
index ac352eb6dff3..e2d02fd13f35 100644
--- a/arch/sparc/kernel/ebus.c
+++ b/arch/sparc/kernel/ebus.c
@@ -238,6 +238,7 @@ void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_device *d
238 sd = &dev->ofdev.dev.archdata; 238 sd = &dev->ofdev.dev.archdata;
239 sd->prom_node = dp; 239 sd->prom_node = dp;
240 sd->op = &dev->ofdev; 240 sd->op = &dev->ofdev;
241 sd->iommu = dev->bus->ofdev.dev.parent->archdata.iommu;
241 242
242 dev->ofdev.node = dp; 243 dev->ofdev.node = dp;
243 dev->ofdev.dev.parent = &dev->bus->ofdev.dev; 244 dev->ofdev.dev.parent = &dev->bus->ofdev.dev;
diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile
index 9ddc5b9ce3bd..76effdbea075 100644
--- a/arch/sparc/lib/Makefile
+++ b/arch/sparc/lib/Makefile
@@ -8,6 +8,7 @@ lib-y := mul.o rem.o sdiv.o udiv.o umul.o urem.o ashrdi3.o memcpy.o memset.o \
8 strlen.o checksum.o blockops.o memscan.o memcmp.o strncmp.o \ 8 strlen.o checksum.o blockops.o memscan.o memcmp.o strncmp.o \
9 strncpy_from_user.o divdi3.o udivdi3.o strlen_user.o \ 9 strncpy_from_user.o divdi3.o udivdi3.o strlen_user.o \
10 copy_user.o locks.o atomic.o \ 10 copy_user.o locks.o atomic.o \
11 lshrdi3.o ashldi3.o rwsem.o muldi3.o bitext.o 11 lshrdi3.o ashldi3.o rwsem.o muldi3.o bitext.o \
12 cmpdi2.o
12 13
13obj-y += iomap.o atomic32.o 14obj-y += iomap.o atomic32.o
diff --git a/arch/sparc/lib/cmpdi2.c b/arch/sparc/lib/cmpdi2.c
new file mode 100644
index 000000000000..8c1306437ed1
--- /dev/null
+++ b/arch/sparc/lib/cmpdi2.c
@@ -0,0 +1,27 @@
1#include <linux/module.h>
2
3#include "libgcc.h"
4
5word_type __cmpdi2(long long a, long long b)
6{
7 const DWunion au = {
8 .ll = a
9 };
10 const DWunion bu = {
11 .ll = b
12 };
13
14 if (au.s.high < bu.s.high)
15 return 0;
16 else if (au.s.high > bu.s.high)
17 return 2;
18
19 if ((unsigned int) au.s.low < (unsigned int) bu.s.low)
20 return 0;
21 else if ((unsigned int) au.s.low > (unsigned int) bu.s.low)
22 return 2;
23
24 return 1;
25}
26
27EXPORT_SYMBOL(__cmpdi2);
diff --git a/arch/sparc/lib/libgcc.h b/arch/sparc/lib/libgcc.h
new file mode 100644
index 000000000000..b84fd797f3ea
--- /dev/null
+++ b/arch/sparc/lib/libgcc.h
@@ -0,0 +1,18 @@
1#ifndef __ASM_LIBGCC_H
2#define __ASM_LIBGCC_H
3
4#include <asm/byteorder.h>
5
6typedef int word_type __attribute__ ((mode (__word__)));
7
8struct DWstruct {
9 int high, low;
10};
11
12typedef union
13{
14 struct DWstruct s;
15 long long ll;
16} DWunion;
17
18#endif /* __ASM_LIBGCC_H */
diff --git a/arch/sparc/mm/io-unit.c b/arch/sparc/mm/io-unit.c
index 4ccda77d08d6..7c89893b1fe8 100644
--- a/arch/sparc/mm/io-unit.c
+++ b/arch/sparc/mm/io-unit.c
@@ -66,7 +66,7 @@ iounit_init(int sbi_node, int io_node, struct sbus_bus *sbus)
66 } 66 }
67 if(!xpt) panic("Cannot map External Page Table."); 67 if(!xpt) panic("Cannot map External Page Table.");
68 68
69 sbus->iommu = (struct iommu_struct *)iounit; 69 sbus->ofdev.dev.archdata.iommu = iounit;
70 iounit->page_table = xpt; 70 iounit->page_table = xpt;
71 spin_lock_init(&iounit->lock); 71 spin_lock_init(&iounit->lock);
72 72
@@ -127,7 +127,7 @@ nexti: scan = find_next_zero_bit(iounit->bmap, limit, scan);
127static __u32 iounit_get_scsi_one(char *vaddr, unsigned long len, struct sbus_bus *sbus) 127static __u32 iounit_get_scsi_one(char *vaddr, unsigned long len, struct sbus_bus *sbus)
128{ 128{
129 unsigned long ret, flags; 129 unsigned long ret, flags;
130 struct iounit_struct *iounit = (struct iounit_struct *)sbus->iommu; 130 struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu;
131 131
132 spin_lock_irqsave(&iounit->lock, flags); 132 spin_lock_irqsave(&iounit->lock, flags);
133 ret = iounit_get_area(iounit, (unsigned long)vaddr, len); 133 ret = iounit_get_area(iounit, (unsigned long)vaddr, len);
@@ -138,7 +138,7 @@ static __u32 iounit_get_scsi_one(char *vaddr, unsigned long len, struct sbus_bus
138static void iounit_get_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_bus *sbus) 138static void iounit_get_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_bus *sbus)
139{ 139{
140 unsigned long flags; 140 unsigned long flags;
141 struct iounit_struct *iounit = (struct iounit_struct *)sbus->iommu; 141 struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu;
142 142
143 /* FIXME: Cache some resolved pages - often several sg entries are to the same page */ 143 /* FIXME: Cache some resolved pages - often several sg entries are to the same page */
144 spin_lock_irqsave(&iounit->lock, flags); 144 spin_lock_irqsave(&iounit->lock, flags);
@@ -153,7 +153,7 @@ static void iounit_get_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_bus
153static void iounit_release_scsi_one(__u32 vaddr, unsigned long len, struct sbus_bus *sbus) 153static void iounit_release_scsi_one(__u32 vaddr, unsigned long len, struct sbus_bus *sbus)
154{ 154{
155 unsigned long flags; 155 unsigned long flags;
156 struct iounit_struct *iounit = (struct iounit_struct *)sbus->iommu; 156 struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu;
157 157
158 spin_lock_irqsave(&iounit->lock, flags); 158 spin_lock_irqsave(&iounit->lock, flags);
159 len = ((vaddr & ~PAGE_MASK) + len + (PAGE_SIZE-1)) >> PAGE_SHIFT; 159 len = ((vaddr & ~PAGE_MASK) + len + (PAGE_SIZE-1)) >> PAGE_SHIFT;
@@ -168,7 +168,7 @@ static void iounit_release_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_
168{ 168{
169 unsigned long flags; 169 unsigned long flags;
170 unsigned long vaddr, len; 170 unsigned long vaddr, len;
171 struct iounit_struct *iounit = (struct iounit_struct *)sbus->iommu; 171 struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu;
172 172
173 spin_lock_irqsave(&iounit->lock, flags); 173 spin_lock_irqsave(&iounit->lock, flags);
174 while (sz != 0) { 174 while (sz != 0) {
@@ -211,7 +211,7 @@ static int iounit_map_dma_area(dma_addr_t *pba, unsigned long va, __u32 addr, in
211 i = ((addr - IOUNIT_DMA_BASE) >> PAGE_SHIFT); 211 i = ((addr - IOUNIT_DMA_BASE) >> PAGE_SHIFT);
212 212
213 for_each_sbus(sbus) { 213 for_each_sbus(sbus) {
214 struct iounit_struct *iounit = (struct iounit_struct *)sbus->iommu; 214 struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu;
215 215
216 iopte = (iopte_t *)(iounit->page_table + i); 216 iopte = (iopte_t *)(iounit->page_table + i);
217 *iopte = MKIOPTE(__pa(page)); 217 *iopte = MKIOPTE(__pa(page));
@@ -235,7 +235,7 @@ static void iounit_unmap_dma_area(unsigned long addr, int len)
235static struct page *iounit_translate_dvma(unsigned long addr) 235static struct page *iounit_translate_dvma(unsigned long addr)
236{ 236{
237 struct sbus_bus *sbus = sbus_root; /* They are all the same */ 237 struct sbus_bus *sbus = sbus_root; /* They are all the same */
238 struct iounit_struct *iounit = (struct iounit_struct *)sbus->iommu; 238 struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu;
239 int i; 239 int i;
240 iopte_t *iopte; 240 iopte_t *iopte;
241 241
@@ -279,7 +279,7 @@ __u32 iounit_map_dma_init(struct sbus_bus *sbus, int size)
279 unsigned long rotor, scan, limit; 279 unsigned long rotor, scan, limit;
280 unsigned long flags; 280 unsigned long flags;
281 __u32 ret; 281 __u32 ret;
282 struct iounit_struct *iounit = (struct iounit_struct *)sbus->iommu; 282 struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu;
283 283
284 npages = (size + (PAGE_SIZE-1)) >> PAGE_SHIFT; 284 npages = (size + (PAGE_SIZE-1)) >> PAGE_SHIFT;
285 i = 0x0213; 285 i = 0x0213;
@@ -315,7 +315,7 @@ nexti: scan = find_next_zero_bit(iounit->bmap, limit, scan);
315__u32 iounit_map_dma_page(__u32 vaddr, void *addr, struct sbus_bus *sbus) 315__u32 iounit_map_dma_page(__u32 vaddr, void *addr, struct sbus_bus *sbus)
316{ 316{
317 int scan = (vaddr - IOUNIT_DMA_BASE) >> PAGE_SHIFT; 317 int scan = (vaddr - IOUNIT_DMA_BASE) >> PAGE_SHIFT;
318 struct iounit_struct *iounit = (struct iounit_struct *)sbus->iommu; 318 struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu;
319 319
320 iounit->page_table[scan] = MKIOPTE(__pa(((unsigned long)addr) & PAGE_MASK)); 320 iounit->page_table[scan] = MKIOPTE(__pa(((unsigned long)addr) & PAGE_MASK));
321 return vaddr + (((unsigned long)addr) & ~PAGE_MASK); 321 return vaddr + (((unsigned long)addr) & ~PAGE_MASK);
diff --git a/arch/sparc/mm/iommu.c b/arch/sparc/mm/iommu.c
index be042efd1ba4..52e907af9d29 100644
--- a/arch/sparc/mm/iommu.c
+++ b/arch/sparc/mm/iommu.c
@@ -132,7 +132,7 @@ iommu_init(int iommund, struct sbus_bus *sbus)
132 impl, vers, iommu->page_table, 132 impl, vers, iommu->page_table,
133 (int)(IOMMU_NPTES*sizeof(iopte_t)), (int)IOMMU_NPTES); 133 (int)(IOMMU_NPTES*sizeof(iopte_t)), (int)IOMMU_NPTES);
134 134
135 sbus->iommu = iommu; 135 sbus->ofdev.dev.archdata.iommu = iommu;
136} 136}
137 137
138/* This begs to be btfixup-ed by srmmu. */ 138/* This begs to be btfixup-ed by srmmu. */
@@ -166,7 +166,7 @@ static void iommu_flush_iotlb(iopte_t *iopte, unsigned int niopte)
166 166
167static u32 iommu_get_one(struct page *page, int npages, struct sbus_bus *sbus) 167static u32 iommu_get_one(struct page *page, int npages, struct sbus_bus *sbus)
168{ 168{
169 struct iommu_struct *iommu = sbus->iommu; 169 struct iommu_struct *iommu = sbus->ofdev.dev.archdata.iommu;
170 int ioptex; 170 int ioptex;
171 iopte_t *iopte, *iopte0; 171 iopte_t *iopte, *iopte0;
172 unsigned int busa, busa0; 172 unsigned int busa, busa0;
@@ -291,7 +291,7 @@ static void iommu_get_scsi_sgl_pflush(struct scatterlist *sg, int sz, struct sbu
291 291
292static void iommu_release_one(u32 busa, int npages, struct sbus_bus *sbus) 292static void iommu_release_one(u32 busa, int npages, struct sbus_bus *sbus)
293{ 293{
294 struct iommu_struct *iommu = sbus->iommu; 294 struct iommu_struct *iommu = sbus->ofdev.dev.archdata.iommu;
295 int ioptex; 295 int ioptex;
296 int i; 296 int i;
297 297
@@ -334,7 +334,7 @@ static int iommu_map_dma_area(dma_addr_t *pba, unsigned long va,
334 unsigned long addr, int len) 334 unsigned long addr, int len)
335{ 335{
336 unsigned long page, end; 336 unsigned long page, end;
337 struct iommu_struct *iommu = sbus_root->iommu; 337 struct iommu_struct *iommu = sbus_root->ofdev.dev.archdata.iommu;
338 iopte_t *iopte = iommu->page_table; 338 iopte_t *iopte = iommu->page_table;
339 iopte_t *first; 339 iopte_t *first;
340 int ioptex; 340 int ioptex;
@@ -399,7 +399,7 @@ static int iommu_map_dma_area(dma_addr_t *pba, unsigned long va,
399 399
400static void iommu_unmap_dma_area(unsigned long busa, int len) 400static void iommu_unmap_dma_area(unsigned long busa, int len)
401{ 401{
402 struct iommu_struct *iommu = sbus_root->iommu; 402 struct iommu_struct *iommu = sbus_root->ofdev.dev.archdata.iommu;
403 iopte_t *iopte = iommu->page_table; 403 iopte_t *iopte = iommu->page_table;
404 unsigned long end; 404 unsigned long end;
405 int ioptex = (busa - iommu->start) >> PAGE_SHIFT; 405 int ioptex = (busa - iommu->start) >> PAGE_SHIFT;
@@ -420,7 +420,7 @@ static void iommu_unmap_dma_area(unsigned long busa, int len)
420 420
421static struct page *iommu_translate_dvma(unsigned long busa) 421static struct page *iommu_translate_dvma(unsigned long busa)
422{ 422{
423 struct iommu_struct *iommu = sbus_root->iommu; 423 struct iommu_struct *iommu = sbus_root->ofdev.dev.archdata.iommu;
424 iopte_t *iopte = iommu->page_table; 424 iopte_t *iopte = iommu->page_table;
425 425
426 iopte += ((busa - iommu->start) >> PAGE_SHIFT); 426 iopte += ((busa - iommu->start) >> PAGE_SHIFT);
diff --git a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c
index 79d60d86f6f8..005a3e72d4f2 100644
--- a/arch/sparc/mm/sun4c.c
+++ b/arch/sparc/mm/sun4c.c
@@ -268,7 +268,6 @@ static inline void sun4c_init_clean_mmu(unsigned long kernel_end)
268 unsigned char savectx, ctx; 268 unsigned char savectx, ctx;
269 269
270 savectx = sun4c_get_context(); 270 savectx = sun4c_get_context();
271 kernel_end = SUN4C_REAL_PGDIR_ALIGN(kernel_end);
272 for (ctx = 0; ctx < num_contexts; ctx++) { 271 for (ctx = 0; ctx < num_contexts; ctx++) {
273 sun4c_set_context(ctx); 272 sun4c_set_context(ctx);
274 for (vaddr = 0; vaddr < 0x20000000; vaddr += SUN4C_REAL_PGDIR_SIZE) 273 for (vaddr = 0; vaddr < 0x20000000; vaddr += SUN4C_REAL_PGDIR_SIZE)
@@ -2064,7 +2063,6 @@ void __init sun4c_paging_init(void)
2064 unsigned long end_pfn, pages_avail; 2063 unsigned long end_pfn, pages_avail;
2065 2064
2066 kernel_end = (unsigned long) &end; 2065 kernel_end = (unsigned long) &end;
2067 kernel_end += (SUN4C_REAL_PGDIR_SIZE * 4);
2068 kernel_end = SUN4C_REAL_PGDIR_ALIGN(kernel_end); 2066 kernel_end = SUN4C_REAL_PGDIR_ALIGN(kernel_end);
2069 2067
2070 pages_avail = 0; 2068 pages_avail = 0;
diff --git a/arch/sparc/prom/console.c b/arch/sparc/prom/console.c
index 8d1cfb0d5068..2a007a784415 100644
--- a/arch/sparc/prom/console.c
+++ b/arch/sparc/prom/console.c
@@ -17,9 +17,6 @@
17 17
18extern void restore_current(void); 18extern void restore_current(void);
19 19
20static char con_name_jmc[] = "/obio/su@"; /* "/obio/su@0,3002f8"; */
21#define CON_SIZE_JMC (sizeof(con_name_jmc))
22
23/* Non blocking get character from console input device, returns -1 20/* Non blocking get character from console input device, returns -1
24 * if no input was taken. This can be used for polling. 21 * if no input was taken. This can be used for polling.
25 */ 22 */
diff --git a/arch/sparc64/kernel/head.S b/arch/sparc64/kernel/head.S
index ac18bd8e273f..63144ad476f6 100644
--- a/arch/sparc64/kernel/head.S
+++ b/arch/sparc64/kernel/head.S
@@ -501,7 +501,7 @@ niagara_tlb_fixup:
501 cmp %g1, SUN4V_CHIP_NIAGARA1 501 cmp %g1, SUN4V_CHIP_NIAGARA1
502 be,pt %xcc, niagara_patch 502 be,pt %xcc, niagara_patch
503 cmp %g1, SUN4V_CHIP_NIAGARA2 503 cmp %g1, SUN4V_CHIP_NIAGARA2
504 be,pt %xcc, niagara_patch 504 be,pt %xcc, niagara2_patch
505 nop 505 nop
506 506
507 call generic_patch_copyops 507 call generic_patch_copyops
@@ -512,6 +512,15 @@ niagara_tlb_fixup:
512 nop 512 nop
513 513
514 ba,a,pt %xcc, 80f 514 ba,a,pt %xcc, 80f
515niagara2_patch:
516 call niagara2_patch_copyops
517 nop
518 call niagara_patch_bzero
519 nop
520 call niagara2_patch_pageops
521 nop
522
523 ba,a,pt %xcc, 80f
515 524
516niagara_patch: 525niagara_patch:
517 call niagara_patch_copyops 526 call niagara_patch_copyops
@@ -706,12 +715,13 @@ setup_trap_table:
706 715
707 membar #Sync 716 membar #Sync
708 717
718 BRANCH_IF_SUN4V(o2, 1f)
719
709 /* Kill PROM timer */ 720 /* Kill PROM timer */
710 sethi %hi(0x80000000), %o2 721 sethi %hi(0x80000000), %o2
711 sllx %o2, 32, %o2 722 sllx %o2, 32, %o2
712 wr %o2, 0, %tick_cmpr 723 wr %o2, 0, %tick_cmpr
713 724
714 BRANCH_IF_SUN4V(o2, 1f)
715 BRANCH_IF_ANY_CHEETAH(o2, o3, 1f) 725 BRANCH_IF_ANY_CHEETAH(o2, o3, 1f)
716 726
717 ba,pt %xcc, 2f 727 ba,pt %xcc, 2f
diff --git a/arch/sparc64/kernel/mdesc.c b/arch/sparc64/kernel/mdesc.c
index 95059c2ec414..9f22e4ff6015 100644
--- a/arch/sparc64/kernel/mdesc.c
+++ b/arch/sparc64/kernel/mdesc.c
@@ -9,6 +9,7 @@
9#include <linux/list.h> 9#include <linux/list.h>
10#include <linux/slab.h> 10#include <linux/slab.h>
11#include <linux/mm.h> 11#include <linux/mm.h>
12#include <linux/miscdevice.h>
12 13
13#include <asm/hypervisor.h> 14#include <asm/hypervisor.h>
14#include <asm/mdesc.h> 15#include <asm/mdesc.h>
@@ -836,6 +837,43 @@ void __devinit mdesc_fill_in_cpu_data(cpumask_t mask)
836 mdesc_release(hp); 837 mdesc_release(hp);
837} 838}
838 839
840static ssize_t mdesc_read(struct file *file, char __user *buf,
841 size_t len, loff_t *offp)
842{
843 struct mdesc_handle *hp = mdesc_grab();
844 int err;
845
846 if (!hp)
847 return -ENODEV;
848
849 err = hp->handle_size;
850 if (len < hp->handle_size)
851 err = -EMSGSIZE;
852 else if (copy_to_user(buf, &hp->mdesc, hp->handle_size))
853 err = -EFAULT;
854 mdesc_release(hp);
855
856 return err;
857}
858
859static const struct file_operations mdesc_fops = {
860 .read = mdesc_read,
861 .owner = THIS_MODULE,
862};
863
864static struct miscdevice mdesc_misc = {
865 .minor = MISC_DYNAMIC_MINOR,
866 .name = "mdesc",
867 .fops = &mdesc_fops,
868};
869
870static int __init mdesc_misc_init(void)
871{
872 return misc_register(&mdesc_misc);
873}
874
875__initcall(mdesc_misc_init);
876
839void __init sun4v_mdesc_init(void) 877void __init sun4v_mdesc_init(void)
840{ 878{
841 struct mdesc_handle *hp; 879 struct mdesc_handle *hp;
diff --git a/arch/sparc64/kernel/trampoline.S b/arch/sparc64/kernel/trampoline.S
index 9448595f9063..9533a25ce5d2 100644
--- a/arch/sparc64/kernel/trampoline.S
+++ b/arch/sparc64/kernel/trampoline.S
@@ -95,14 +95,13 @@ spitfire_startup:
95 membar #Sync 95 membar #Sync
96 96
97startup_continue: 97startup_continue:
98 mov %o0, %l0
99 BRANCH_IF_SUN4V(g1, niagara_lock_tlb)
100
98 sethi %hi(0x80000000), %g2 101 sethi %hi(0x80000000), %g2
99 sllx %g2, 32, %g2 102 sllx %g2, 32, %g2
100 wr %g2, 0, %tick_cmpr 103 wr %g2, 0, %tick_cmpr
101 104
102 mov %o0, %l0
103
104 BRANCH_IF_SUN4V(g1, niagara_lock_tlb)
105
106 /* Call OBP by hand to lock KERNBASE into i/d tlbs. 105 /* Call OBP by hand to lock KERNBASE into i/d tlbs.
107 * We lock 2 consequetive entries if we are 'bigkernel'. 106 * We lock 2 consequetive entries if we are 'bigkernel'.
108 */ 107 */
diff --git a/arch/sparc64/lib/Makefile b/arch/sparc64/lib/Makefile
index f95fbfa3eeb8..f095e13910bc 100644
--- a/arch/sparc64/lib/Makefile
+++ b/arch/sparc64/lib/Makefile
@@ -13,6 +13,8 @@ lib-y := PeeCeeI.o copy_page.o clear_page.o strlen.o strncmp.o \
13 U3memcpy.o U3copy_from_user.o U3copy_to_user.o U3patch.o \ 13 U3memcpy.o U3copy_from_user.o U3copy_to_user.o U3patch.o \
14 NGmemcpy.o NGcopy_from_user.o NGcopy_to_user.o NGpatch.o \ 14 NGmemcpy.o NGcopy_from_user.o NGcopy_to_user.o NGpatch.o \
15 NGpage.o NGbzero.o \ 15 NGpage.o NGbzero.o \
16 NG2memcpy.o NG2copy_from_user.o NG2copy_to_user.o NG2patch.o \
17 NG2page.o \
16 GENmemcpy.o GENcopy_from_user.o GENcopy_to_user.o GENpatch.o \ 18 GENmemcpy.o GENcopy_from_user.o GENcopy_to_user.o GENpatch.o \
17 GENpage.o GENbzero.o \ 19 GENpage.o GENbzero.o \
18 copy_in_user.o user_fixup.o memmove.o \ 20 copy_in_user.o user_fixup.o memmove.o \
diff --git a/arch/sparc64/lib/NG2copy_from_user.S b/arch/sparc64/lib/NG2copy_from_user.S
new file mode 100644
index 000000000000..c77ef5f22102
--- /dev/null
+++ b/arch/sparc64/lib/NG2copy_from_user.S
@@ -0,0 +1,40 @@
1/* NG2copy_from_user.S: Niagara-2 optimized copy from userspace.
2 *
3 * Copyright (C) 2007 David S. Miller (davem@davemloft.net)
4 */
5
6#define EX_LD(x) \
798: x; \
8 .section .fixup; \
9 .align 4; \
1099: wr %g0, ASI_AIUS, %asi;\
11 retl; \
12 mov 1, %o0; \
13 .section __ex_table,"a";\
14 .align 4; \
15 .word 98b, 99b; \
16 .text; \
17 .align 4;
18
19#ifndef ASI_AIUS
20#define ASI_AIUS 0x11
21#endif
22
23#ifndef ASI_BLK_AIUS_4V
24#define ASI_BLK_AIUS_4V 0x17
25#endif
26
27#define FUNC_NAME NG2copy_from_user
28#define LOAD(type,addr,dest) type##a [addr] %asi, dest
29#define LOAD_BLK(addr,dest) ldda [addr] ASI_BLK_AIUS_4V, dest
30#define EX_RETVAL(x) 0
31
32#ifdef __KERNEL__
33#define PREAMBLE \
34 rd %asi, %g1; \
35 cmp %g1, ASI_AIUS; \
36 bne,pn %icc, memcpy_user_stub; \
37 nop
38#endif
39
40#include "NG2memcpy.S"
diff --git a/arch/sparc64/lib/NG2copy_to_user.S b/arch/sparc64/lib/NG2copy_to_user.S
new file mode 100644
index 000000000000..4bd4093acbbd
--- /dev/null
+++ b/arch/sparc64/lib/NG2copy_to_user.S
@@ -0,0 +1,49 @@
1/* NG2copy_to_user.S: Niagara-2 optimized copy to userspace.
2 *
3 * Copyright (C) 2007 David S. Miller (davem@davemloft.net)
4 */
5
6#define EX_ST(x) \
798: x; \
8 .section .fixup; \
9 .align 4; \
1099: wr %g0, ASI_AIUS, %asi;\
11 retl; \
12 mov 1, %o0; \
13 .section __ex_table,"a";\
14 .align 4; \
15 .word 98b, 99b; \
16 .text; \
17 .align 4;
18
19#ifndef ASI_AIUS
20#define ASI_AIUS 0x11
21#endif
22
23#ifndef ASI_BLK_AIUS_4V
24#define ASI_BLK_AIUS_4V 0x17
25#endif
26
27#ifndef ASI_BLK_INIT_QUAD_LDD_AIUS
28#define ASI_BLK_INIT_QUAD_LDD_AIUS 0x23
29#endif
30
31#define FUNC_NAME NG2copy_to_user
32#define STORE(type,src,addr) type##a src, [addr] ASI_AIUS
33#define STORE_ASI ASI_BLK_INIT_QUAD_LDD_AIUS
34#define STORE_BLK(src,addr) stda src, [addr] ASI_BLK_AIUS_4V
35#define EX_RETVAL(x) 0
36
37#ifdef __KERNEL__
38 /* Writing to %asi is _expensive_ so we hardcode it.
39 * Reading %asi to check for KERNEL_DS is comparatively
40 * cheap.
41 */
42#define PREAMBLE \
43 rd %asi, %g1; \
44 cmp %g1, ASI_AIUS; \
45 bne,pn %icc, memcpy_user_stub; \
46 nop
47#endif
48
49#include "NG2memcpy.S"
diff --git a/arch/sparc64/lib/NG2memcpy.S b/arch/sparc64/lib/NG2memcpy.S
new file mode 100644
index 000000000000..0aed75653b50
--- /dev/null
+++ b/arch/sparc64/lib/NG2memcpy.S
@@ -0,0 +1,520 @@
1/* NG2memcpy.S: Niagara-2 optimized memcpy.
2 *
3 * Copyright (C) 2007 David S. Miller (davem@davemloft.net)
4 */
5
6#ifdef __KERNEL__
7#include <asm/visasm.h>
8#include <asm/asi.h>
9#define GLOBAL_SPARE %g7
10#else
11#define ASI_PNF 0x82
12#define ASI_BLK_P 0xf0
13#define ASI_BLK_INIT_QUAD_LDD_P 0xe2
14#define FPRS_FEF 0x04
15#ifdef MEMCPY_DEBUG
16#define VISEntryHalf rd %fprs, %o5; wr %g0, FPRS_FEF, %fprs; \
17 clr %g1; clr %g2; clr %g3; subcc %g0, %g0, %g0;
18#define VISExitHalf and %o5, FPRS_FEF, %o5; wr %o5, 0x0, %fprs
19#else
20#define VISEntryHalf rd %fprs, %o5; wr %g0, FPRS_FEF, %fprs
21#define VISExitHalf and %o5, FPRS_FEF, %o5; wr %o5, 0x0, %fprs
22#endif
23#define GLOBAL_SPARE %g5
24#endif
25
26#ifndef STORE_ASI
27#ifndef SIMULATE_NIAGARA_ON_NON_NIAGARA
28#define STORE_ASI ASI_BLK_INIT_QUAD_LDD_P
29#else
30#define STORE_ASI 0x80 /* ASI_P */
31#endif
32#endif
33
34#ifndef EX_LD
35#define EX_LD(x) x
36#endif
37
38#ifndef EX_ST
39#define EX_ST(x) x
40#endif
41
42#ifndef EX_RETVAL
43#define EX_RETVAL(x) x
44#endif
45
46#ifndef LOAD
47#define LOAD(type,addr,dest) type [addr], dest
48#endif
49
50#ifndef LOAD_BLK
51#define LOAD_BLK(addr,dest) ldda [addr] ASI_BLK_P, dest
52#endif
53
54#ifndef STORE
55#ifndef MEMCPY_DEBUG
56#define STORE(type,src,addr) type src, [addr]
57#else
58#define STORE(type,src,addr) type##a src, [addr] 0x80
59#endif
60#endif
61
62#ifndef STORE_BLK
63#define STORE_BLK(src,addr) stda src, [addr] ASI_BLK_P
64#endif
65
66#ifndef STORE_INIT
67#define STORE_INIT(src,addr) stxa src, [addr] STORE_ASI
68#endif
69
70#ifndef FUNC_NAME
71#define FUNC_NAME NG2memcpy
72#endif
73
74#ifndef PREAMBLE
75#define PREAMBLE
76#endif
77
78#ifndef XCC
79#define XCC xcc
80#endif
81
82#define FREG_FROB(x0, x1, x2, x3, x4, x5, x6, x7, x8) \
83 faligndata %x0, %x1, %f0; \
84 faligndata %x1, %x2, %f2; \
85 faligndata %x2, %x3, %f4; \
86 faligndata %x3, %x4, %f6; \
87 faligndata %x4, %x5, %f8; \
88 faligndata %x5, %x6, %f10; \
89 faligndata %x6, %x7, %f12; \
90 faligndata %x7, %x8, %f14;
91
92#define FREG_MOVE_1(x0) \
93 fmovd %x0, %f0;
94#define FREG_MOVE_2(x0, x1) \
95 fmovd %x0, %f0; \
96 fmovd %x1, %f2;
97#define FREG_MOVE_3(x0, x1, x2) \
98 fmovd %x0, %f0; \
99 fmovd %x1, %f2; \
100 fmovd %x2, %f4;
101#define FREG_MOVE_4(x0, x1, x2, x3) \
102 fmovd %x0, %f0; \
103 fmovd %x1, %f2; \
104 fmovd %x2, %f4; \
105 fmovd %x3, %f6;
106#define FREG_MOVE_5(x0, x1, x2, x3, x4) \
107 fmovd %x0, %f0; \
108 fmovd %x1, %f2; \
109 fmovd %x2, %f4; \
110 fmovd %x3, %f6; \
111 fmovd %x4, %f8;
112#define FREG_MOVE_6(x0, x1, x2, x3, x4, x5) \
113 fmovd %x0, %f0; \
114 fmovd %x1, %f2; \
115 fmovd %x2, %f4; \
116 fmovd %x3, %f6; \
117 fmovd %x4, %f8; \
118 fmovd %x5, %f10;
119#define FREG_MOVE_7(x0, x1, x2, x3, x4, x5, x6) \
120 fmovd %x0, %f0; \
121 fmovd %x1, %f2; \
122 fmovd %x2, %f4; \
123 fmovd %x3, %f6; \
124 fmovd %x4, %f8; \
125 fmovd %x5, %f10; \
126 fmovd %x6, %f12;
127#define FREG_MOVE_8(x0, x1, x2, x3, x4, x5, x6, x7) \
128 fmovd %x0, %f0; \
129 fmovd %x1, %f2; \
130 fmovd %x2, %f4; \
131 fmovd %x3, %f6; \
132 fmovd %x4, %f8; \
133 fmovd %x5, %f10; \
134 fmovd %x6, %f12; \
135 fmovd %x7, %f14;
136#define FREG_LOAD_1(base, x0) \
137 EX_LD(LOAD(ldd, base + 0x00, %x0))
138#define FREG_LOAD_2(base, x0, x1) \
139 EX_LD(LOAD(ldd, base + 0x00, %x0)); \
140 EX_LD(LOAD(ldd, base + 0x08, %x1));
141#define FREG_LOAD_3(base, x0, x1, x2) \
142 EX_LD(LOAD(ldd, base + 0x00, %x0)); \
143 EX_LD(LOAD(ldd, base + 0x08, %x1)); \
144 EX_LD(LOAD(ldd, base + 0x10, %x2));
145#define FREG_LOAD_4(base, x0, x1, x2, x3) \
146 EX_LD(LOAD(ldd, base + 0x00, %x0)); \
147 EX_LD(LOAD(ldd, base + 0x08, %x1)); \
148 EX_LD(LOAD(ldd, base + 0x10, %x2)); \
149 EX_LD(LOAD(ldd, base + 0x18, %x3));
150#define FREG_LOAD_5(base, x0, x1, x2, x3, x4) \
151 EX_LD(LOAD(ldd, base + 0x00, %x0)); \
152 EX_LD(LOAD(ldd, base + 0x08, %x1)); \
153 EX_LD(LOAD(ldd, base + 0x10, %x2)); \
154 EX_LD(LOAD(ldd, base + 0x18, %x3)); \
155 EX_LD(LOAD(ldd, base + 0x20, %x4));
156#define FREG_LOAD_6(base, x0, x1, x2, x3, x4, x5) \
157 EX_LD(LOAD(ldd, base + 0x00, %x0)); \
158 EX_LD(LOAD(ldd, base + 0x08, %x1)); \
159 EX_LD(LOAD(ldd, base + 0x10, %x2)); \
160 EX_LD(LOAD(ldd, base + 0x18, %x3)); \
161 EX_LD(LOAD(ldd, base + 0x20, %x4)); \
162 EX_LD(LOAD(ldd, base + 0x28, %x5));
163#define FREG_LOAD_7(base, x0, x1, x2, x3, x4, x5, x6) \
164 EX_LD(LOAD(ldd, base + 0x00, %x0)); \
165 EX_LD(LOAD(ldd, base + 0x08, %x1)); \
166 EX_LD(LOAD(ldd, base + 0x10, %x2)); \
167 EX_LD(LOAD(ldd, base + 0x18, %x3)); \
168 EX_LD(LOAD(ldd, base + 0x20, %x4)); \
169 EX_LD(LOAD(ldd, base + 0x28, %x5)); \
170 EX_LD(LOAD(ldd, base + 0x30, %x6));
171
172 .register %g2,#scratch
173 .register %g3,#scratch
174
175 .text
176 .align 64
177
178 .globl FUNC_NAME
179 .type FUNC_NAME,#function
180FUNC_NAME: /* %o0=dst, %o1=src, %o2=len */
181 srlx %o2, 31, %g2
182 cmp %g2, 0
183 tne %xcc, 5
184 PREAMBLE
185 mov %o0, GLOBAL_SPARE
186 cmp %o2, 0
187 be,pn %XCC, 85f
188 or %o0, %o1, %o3
189 cmp %o2, 16
190 blu,a,pn %XCC, 80f
191 or %o3, %o2, %o3
192
193 /* 2 blocks (128 bytes) is the minimum we can do the block
194 * copy with. We need to ensure that we'll iterate at least
195 * once in the block copy loop. At worst we'll need to align
196 * the destination to a 64-byte boundary which can chew up
197 * to (64 - 1) bytes from the length before we perform the
198 * block copy loop.
199 *
200 * However, the cut-off point, performance wise, is around
201 * 4 64-byte blocks.
202 */
203 cmp %o2, (4 * 64)
204 blu,pt %XCC, 75f
205 andcc %o3, 0x7, %g0
206
207 /* %o0: dst
208 * %o1: src
209 * %o2: len (known to be >= 128)
210 *
211 * The block copy loops can use %o4, %g2, %g3 as
212 * temporaries while copying the data. %o5 must
213 * be preserved between VISEntryHalf and VISExitHalf
214 */
215
216 LOAD(prefetch, %o1 + 0x000, #one_read)
217 LOAD(prefetch, %o1 + 0x040, #one_read)
218 LOAD(prefetch, %o1 + 0x080, #one_read)
219
220 /* Align destination on 64-byte boundary. */
221 andcc %o0, (64 - 1), %o4
222 be,pt %XCC, 2f
223 sub %o4, 64, %o4
224 sub %g0, %o4, %o4 ! bytes to align dst
225 sub %o2, %o4, %o2
2261: subcc %o4, 1, %o4
227 EX_LD(LOAD(ldub, %o1, %g1))
228 EX_ST(STORE(stb, %g1, %o0))
229 add %o1, 1, %o1
230 bne,pt %XCC, 1b
231 add %o0, 1, %o0
232
2332:
234 /* Clobbers o5/g1/g2/g3/g7/icc/xcc. We must preserve
235 * o5 from here until we hit VISExitHalf.
236 */
237 VISEntryHalf
238
239 alignaddr %o1, %g0, %g0
240
241 add %o1, (64 - 1), %o4
242 andn %o4, (64 - 1), %o4
243 andn %o2, (64 - 1), %g1
244 sub %o2, %g1, %o2
245
246 and %o1, (64 - 1), %g2
247 add %o1, %g1, %o1
248 sub %o0, %o4, %g3
249 brz,pt %g2, 190f
250 cmp %g2, 32
251 blu,a 5f
252 cmp %g2, 16
253 cmp %g2, 48
254 blu,a 4f
255 cmp %g2, 40
256 cmp %g2, 56
257 blu 170f
258 nop
259 ba,a,pt %xcc, 180f
260
2614: /* 32 <= low bits < 48 */
262 blu 150f
263 nop
264 ba,a,pt %xcc, 160f
2655: /* 0 < low bits < 32 */
266 blu,a 6f
267 cmp %g2, 8
268 cmp %g2, 24
269 blu 130f
270 nop
271 ba,a,pt %xcc, 140f
2726: /* 0 < low bits < 16 */
273 bgeu 120f
274 nop
275 /* fall through for 0 < low bits < 8 */
276110: sub %o4, 64, %g2
277 EX_LD(LOAD_BLK(%g2, %f0))
2781: EX_ST(STORE_INIT(%g0, %o4 + %g3))
279 EX_LD(LOAD_BLK(%o4, %f16))
280 FREG_FROB(f0, f2, f4, f6, f8, f10, f12, f14, f16)
281 EX_ST(STORE_BLK(%f0, %o4 + %g3))
282 FREG_MOVE_8(f16, f18, f20, f22, f24, f26, f28, f30)
283 subcc %g1, 64, %g1
284 add %o4, 64, %o4
285 bne,pt %xcc, 1b
286 LOAD(prefetch, %o4 + 64, #one_read)
287 ba,pt %xcc, 195f
288 nop
289
290120: sub %o4, 56, %g2
291 FREG_LOAD_7(%g2, f0, f2, f4, f6, f8, f10, f12)
2921: EX_ST(STORE_INIT(%g0, %o4 + %g3))
293 EX_LD(LOAD_BLK(%o4, %f16))
294 FREG_FROB(f0, f2, f4, f6, f8, f10, f12, f16, f18)
295 EX_ST(STORE_BLK(%f0, %o4 + %g3))
296 FREG_MOVE_7(f18, f20, f22, f24, f26, f28, f30)
297 subcc %g1, 64, %g1
298 add %o4, 64, %o4
299 bne,pt %xcc, 1b
300 LOAD(prefetch, %o4 + 64, #one_read)
301 ba,pt %xcc, 195f
302 nop
303
304130: sub %o4, 48, %g2
305 FREG_LOAD_6(%g2, f0, f2, f4, f6, f8, f10)
3061: EX_ST(STORE_INIT(%g0, %o4 + %g3))
307 EX_LD(LOAD_BLK(%o4, %f16))
308 FREG_FROB(f0, f2, f4, f6, f8, f10, f16, f18, f20)
309 EX_ST(STORE_BLK(%f0, %o4 + %g3))
310 FREG_MOVE_6(f20, f22, f24, f26, f28, f30)
311 subcc %g1, 64, %g1
312 add %o4, 64, %o4
313 bne,pt %xcc, 1b
314 LOAD(prefetch, %o4 + 64, #one_read)
315 ba,pt %xcc, 195f
316 nop
317
318140: sub %o4, 40, %g2
319 FREG_LOAD_5(%g2, f0, f2, f4, f6, f8)
3201: EX_ST(STORE_INIT(%g0, %o4 + %g3))
321 EX_LD(LOAD_BLK(%o4, %f16))
322 FREG_FROB(f0, f2, f4, f6, f8, f16, f18, f20, f22)
323 EX_ST(STORE_BLK(%f0, %o4 + %g3))
324 FREG_MOVE_5(f22, f24, f26, f28, f30)
325 subcc %g1, 64, %g1
326 add %o4, 64, %o4
327 bne,pt %xcc, 1b
328 LOAD(prefetch, %o4 + 64, #one_read)
329 ba,pt %xcc, 195f
330 nop
331
332150: sub %o4, 32, %g2
333 FREG_LOAD_4(%g2, f0, f2, f4, f6)
3341: EX_ST(STORE_INIT(%g0, %o4 + %g3))
335 EX_LD(LOAD_BLK(%o4, %f16))
336 FREG_FROB(f0, f2, f4, f6, f16, f18, f20, f22, f24)
337 EX_ST(STORE_BLK(%f0, %o4 + %g3))
338 FREG_MOVE_4(f24, f26, f28, f30)
339 subcc %g1, 64, %g1
340 add %o4, 64, %o4
341 bne,pt %xcc, 1b
342 LOAD(prefetch, %o4 + 64, #one_read)
343 ba,pt %xcc, 195f
344 nop
345
346160: sub %o4, 24, %g2
347 FREG_LOAD_3(%g2, f0, f2, f4)
3481: EX_ST(STORE_INIT(%g0, %o4 + %g3))
349 EX_LD(LOAD_BLK(%o4, %f16))
350 FREG_FROB(f0, f2, f4, f16, f18, f20, f22, f24, f26)
351 EX_ST(STORE_BLK(%f0, %o4 + %g3))
352 FREG_MOVE_3(f26, f28, f30)
353 subcc %g1, 64, %g1
354 add %o4, 64, %o4
355 bne,pt %xcc, 1b
356 LOAD(prefetch, %o4 + 64, #one_read)
357 ba,pt %xcc, 195f
358 nop
359
360170: sub %o4, 16, %g2
361 FREG_LOAD_2(%g2, f0, f2)
3621: EX_ST(STORE_INIT(%g0, %o4 + %g3))
363 EX_LD(LOAD_BLK(%o4, %f16))
364 FREG_FROB(f0, f2, f16, f18, f20, f22, f24, f26, f28)
365 EX_ST(STORE_BLK(%f0, %o4 + %g3))
366 FREG_MOVE_2(f28, f30)
367 subcc %g1, 64, %g1
368 add %o4, 64, %o4
369 bne,pt %xcc, 1b
370 LOAD(prefetch, %o4 + 64, #one_read)
371 ba,pt %xcc, 195f
372 nop
373
374180: sub %o4, 8, %g2
375 FREG_LOAD_1(%g2, f0)
3761: EX_ST(STORE_INIT(%g0, %o4 + %g3))
377 EX_LD(LOAD_BLK(%o4, %f16))
378 FREG_FROB(f0, f16, f18, f20, f22, f24, f26, f28, f30)
379 EX_ST(STORE_BLK(%f0, %o4 + %g3))
380 FREG_MOVE_1(f30)
381 subcc %g1, 64, %g1
382 add %o4, 64, %o4
383 bne,pt %xcc, 1b
384 LOAD(prefetch, %o4 + 64, #one_read)
385 ba,pt %xcc, 195f
386 nop
387
388190:
3891: EX_ST(STORE_INIT(%g0, %o4 + %g3))
390 subcc %g1, 64, %g1
391 EX_LD(LOAD_BLK(%o4, %f0))
392 EX_ST(STORE_BLK(%f0, %o4 + %g3))
393 add %o4, 64, %o4
394 bne,pt %xcc, 1b
395 LOAD(prefetch, %o4 + 64, #one_read)
396
397195:
398 add %o4, %g3, %o0
399 membar #Sync
400
401 VISExitHalf
402
403 /* %o2 contains any final bytes still needed to be copied
404 * over. If anything is left, we copy it one byte at a time.
405 */
406 brz,pt %o2, 85f
407 sub %o0, %o1, %o3
408 ba,a,pt %XCC, 90f
409
410 .align 64
41175: /* 16 < len <= 64 */
412 bne,pn %XCC, 75f
413 sub %o0, %o1, %o3
414
41572:
416 andn %o2, 0xf, %o4
417 and %o2, 0xf, %o2
4181: subcc %o4, 0x10, %o4
419 EX_LD(LOAD(ldx, %o1, %o5))
420 add %o1, 0x08, %o1
421 EX_LD(LOAD(ldx, %o1, %g1))
422 sub %o1, 0x08, %o1
423 EX_ST(STORE(stx, %o5, %o1 + %o3))
424 add %o1, 0x8, %o1
425 EX_ST(STORE(stx, %g1, %o1 + %o3))
426 bgu,pt %XCC, 1b
427 add %o1, 0x8, %o1
42873: andcc %o2, 0x8, %g0
429 be,pt %XCC, 1f
430 nop
431 sub %o2, 0x8, %o2
432 EX_LD(LOAD(ldx, %o1, %o5))
433 EX_ST(STORE(stx, %o5, %o1 + %o3))
434 add %o1, 0x8, %o1
4351: andcc %o2, 0x4, %g0
436 be,pt %XCC, 1f
437 nop
438 sub %o2, 0x4, %o2
439 EX_LD(LOAD(lduw, %o1, %o5))
440 EX_ST(STORE(stw, %o5, %o1 + %o3))
441 add %o1, 0x4, %o1
4421: cmp %o2, 0
443 be,pt %XCC, 85f
444 nop
445 ba,pt %xcc, 90f
446 nop
447
44875:
449 andcc %o0, 0x7, %g1
450 sub %g1, 0x8, %g1
451 be,pn %icc, 2f
452 sub %g0, %g1, %g1
453 sub %o2, %g1, %o2
454
4551: subcc %g1, 1, %g1
456 EX_LD(LOAD(ldub, %o1, %o5))
457 EX_ST(STORE(stb, %o5, %o1 + %o3))
458 bgu,pt %icc, 1b
459 add %o1, 1, %o1
460
4612: add %o1, %o3, %o0
462 andcc %o1, 0x7, %g1
463 bne,pt %icc, 8f
464 sll %g1, 3, %g1
465
466 cmp %o2, 16
467 bgeu,pt %icc, 72b
468 nop
469 ba,a,pt %xcc, 73b
470
4718: mov 64, %o3
472 andn %o1, 0x7, %o1
473 EX_LD(LOAD(ldx, %o1, %g2))
474 sub %o3, %g1, %o3
475 andn %o2, 0x7, %o4
476 sllx %g2, %g1, %g2
4771: add %o1, 0x8, %o1
478 EX_LD(LOAD(ldx, %o1, %g3))
479 subcc %o4, 0x8, %o4
480 srlx %g3, %o3, %o5
481 or %o5, %g2, %o5
482 EX_ST(STORE(stx, %o5, %o0))
483 add %o0, 0x8, %o0
484 bgu,pt %icc, 1b
485 sllx %g3, %g1, %g2
486
487 srl %g1, 3, %g1
488 andcc %o2, 0x7, %o2
489 be,pn %icc, 85f
490 add %o1, %g1, %o1
491 ba,pt %xcc, 90f
492 sub %o0, %o1, %o3
493
494 .align 64
49580: /* 0 < len <= 16 */
496 andcc %o3, 0x3, %g0
497 bne,pn %XCC, 90f
498 sub %o0, %o1, %o3
499
5001:
501 subcc %o2, 4, %o2
502 EX_LD(LOAD(lduw, %o1, %g1))
503 EX_ST(STORE(stw, %g1, %o1 + %o3))
504 bgu,pt %XCC, 1b
505 add %o1, 4, %o1
506
50785: retl
508 mov EX_RETVAL(GLOBAL_SPARE), %o0
509
510 .align 32
51190:
512 subcc %o2, 1, %o2
513 EX_LD(LOAD(ldub, %o1, %g1))
514 EX_ST(STORE(stb, %g1, %o1 + %o3))
515 bgu,pt %XCC, 90b
516 add %o1, 1, %o1
517 retl
518 mov EX_RETVAL(GLOBAL_SPARE), %o0
519
520 .size FUNC_NAME, .-FUNC_NAME
diff --git a/arch/sparc64/lib/NG2page.S b/arch/sparc64/lib/NG2page.S
new file mode 100644
index 000000000000..73b6b7c72cbf
--- /dev/null
+++ b/arch/sparc64/lib/NG2page.S
@@ -0,0 +1,61 @@
1/* NG2page.S: Niagara-2 optimized clear and copy page.
2 *
3 * Copyright (C) 2007 (davem@davemloft.net)
4 */
5
6#include <asm/asi.h>
7#include <asm/page.h>
8#include <asm/visasm.h>
9
10 .text
11 .align 32
12
13 /* This is heavily simplified from the sun4u variants
14 * because Niagara-2 does not have any D-cache aliasing issues.
15 */
16NG2copy_user_page: /* %o0=dest, %o1=src, %o2=vaddr */
17 prefetch [%o1 + 0x00], #one_read
18 prefetch [%o1 + 0x40], #one_read
19 VISEntryHalf
20 set PAGE_SIZE, %g7
21 sub %o0, %o1, %g3
221: stxa %g0, [%o1 + %g3] ASI_BLK_INIT_QUAD_LDD_P
23 subcc %g7, 64, %g7
24 ldda [%o1] ASI_BLK_P, %f0
25 stda %f0, [%o1 + %g3] ASI_BLK_P
26 add %o1, 64, %o1
27 bne,pt %xcc, 1b
28 prefetch [%o1 + 0x40], #one_read
29 membar #Sync
30 VISExitHalf
31 retl
32 nop
33
34#define BRANCH_ALWAYS 0x10680000
35#define NOP 0x01000000
36#define NG_DO_PATCH(OLD, NEW) \
37 sethi %hi(NEW), %g1; \
38 or %g1, %lo(NEW), %g1; \
39 sethi %hi(OLD), %g2; \
40 or %g2, %lo(OLD), %g2; \
41 sub %g1, %g2, %g1; \
42 sethi %hi(BRANCH_ALWAYS), %g3; \
43 sll %g1, 11, %g1; \
44 srl %g1, 11 + 2, %g1; \
45 or %g3, %lo(BRANCH_ALWAYS), %g3; \
46 or %g3, %g1, %g3; \
47 stw %g3, [%g2]; \
48 sethi %hi(NOP), %g3; \
49 or %g3, %lo(NOP), %g3; \
50 stw %g3, [%g2 + 0x4]; \
51 flush %g2;
52
53 .globl niagara2_patch_pageops
54 .type niagara2_patch_pageops,#function
55niagara2_patch_pageops:
56 NG_DO_PATCH(copy_user_page, NG2copy_user_page)
57 NG_DO_PATCH(_clear_page, NGclear_page)
58 NG_DO_PATCH(clear_user_page, NGclear_user_page)
59 retl
60 nop
61 .size niagara2_patch_pageops,.-niagara2_patch_pageops
diff --git a/arch/sparc64/lib/NG2patch.S b/arch/sparc64/lib/NG2patch.S
new file mode 100644
index 000000000000..28c36f06a6d1
--- /dev/null
+++ b/arch/sparc64/lib/NG2patch.S
@@ -0,0 +1,33 @@
1/* NG2patch.S: Patch Ultra-I routines with Niagara-2 variant.
2 *
3 * Copyright (C) 2007 David S. Miller <davem@davemloft.net>
4 */
5
6#define BRANCH_ALWAYS 0x10680000
7#define NOP 0x01000000
8#define NG_DO_PATCH(OLD, NEW) \
9 sethi %hi(NEW), %g1; \
10 or %g1, %lo(NEW), %g1; \
11 sethi %hi(OLD), %g2; \
12 or %g2, %lo(OLD), %g2; \
13 sub %g1, %g2, %g1; \
14 sethi %hi(BRANCH_ALWAYS), %g3; \
15 sll %g1, 11, %g1; \
16 srl %g1, 11 + 2, %g1; \
17 or %g3, %lo(BRANCH_ALWAYS), %g3; \
18 or %g3, %g1, %g3; \
19 stw %g3, [%g2]; \
20 sethi %hi(NOP), %g3; \
21 or %g3, %lo(NOP), %g3; \
22 stw %g3, [%g2 + 0x4]; \
23 flush %g2;
24
25 .globl niagara2_patch_copyops
26 .type niagara2_patch_copyops,#function
27niagara2_patch_copyops:
28 NG_DO_PATCH(memcpy, NG2memcpy)
29 NG_DO_PATCH(___copy_from_user, NG2copy_from_user)
30 NG_DO_PATCH(___copy_to_user, NG2copy_to_user)
31 retl
32 nop
33 .size niagara2_patch_copyops,.-niagara2_patch_copyops
diff --git a/arch/sparc64/lib/NGpage.S b/arch/sparc64/lib/NGpage.S
index 8ce3a0c9c537..428920de05ba 100644
--- a/arch/sparc64/lib/NGpage.S
+++ b/arch/sparc64/lib/NGpage.S
@@ -45,6 +45,7 @@ NGcopy_user_page: /* %o0=dest, %o1=src, %o2=vaddr */
45 retl 45 retl
46 nop 46 nop
47 47
48 .globl NGclear_page, NGclear_user_page
48NGclear_page: /* %o0=dest */ 49NGclear_page: /* %o0=dest */
49NGclear_user_page: /* %o0=dest, %o1=vaddr */ 50NGclear_user_page: /* %o0=dest, %o1=vaddr */
50 mov 8, %g1 51 mov 8, %g1
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index aff661fe2ee1..0eabe73c964d 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -612,6 +612,8 @@ static int ubd_open_dev(struct ubd *ubd_dev)
612 ubd_dev->fd = fd; 612 ubd_dev->fd = fd;
613 613
614 if(ubd_dev->cow.file != NULL){ 614 if(ubd_dev->cow.file != NULL){
615 blk_queue_max_sectors(ubd_dev->queue, 8 * sizeof(long));
616
615 err = -ENOMEM; 617 err = -ENOMEM;
616 ubd_dev->cow.bitmap = (void *) vmalloc(ubd_dev->cow.bitmap_len); 618 ubd_dev->cow.bitmap = (void *) vmalloc(ubd_dev->cow.bitmap_len);
617 if(ubd_dev->cow.bitmap == NULL){ 619 if(ubd_dev->cow.bitmap == NULL){
@@ -712,8 +714,6 @@ static int ubd_add(int n, char **error_out)
712 ubd_dev->queue->queuedata = ubd_dev; 714 ubd_dev->queue->queuedata = ubd_dev;
713 715
714 blk_queue_max_hw_segments(ubd_dev->queue, MAX_SG); 716 blk_queue_max_hw_segments(ubd_dev->queue, MAX_SG);
715 if(ubd_dev->cow.file != NULL)
716 blk_queue_max_sectors(ubd_dev->queue, 8 * sizeof(long));
717 err = ubd_disk_register(MAJOR_NR, ubd_dev->size, n, &ubd_gendisk[n]); 717 err = ubd_disk_register(MAJOR_NR, ubd_dev->size, n, &ubd_gendisk[n]);
718 if(err){ 718 if(err){
719 *error_out = "Failed to register device"; 719 *error_out = "Failed to register device";
diff --git a/arch/x86_64/Makefile b/arch/x86_64/Makefile
index 128561d3e876..b024e4a86895 100644
--- a/arch/x86_64/Makefile
+++ b/arch/x86_64/Makefile
@@ -57,8 +57,8 @@ cflags-y += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,)
57cflags-y += -maccumulate-outgoing-args 57cflags-y += -maccumulate-outgoing-args
58 58
59# do binutils support CFI? 59# do binutils support CFI?
60cflags-y += $(call as-instr,.cfi_startproc\n.cfi_endproc,-DCONFIG_AS_CFI=1,) 60cflags-y += $(call as-instr,.cfi_startproc\n.cfi_rel_offset rsp${comma}0\n.cfi_endproc,-DCONFIG_AS_CFI=1,)
61AFLAGS += $(call as-instr,.cfi_startproc\n.cfi_endproc,-DCONFIG_AS_CFI=1,) 61AFLAGS += $(call as-instr,.cfi_startproc\n.cfi_rel_offset rsp${comma}0\n.cfi_endproc,-DCONFIG_AS_CFI=1,)
62 62
63# is .cfi_signal_frame supported too? 63# is .cfi_signal_frame supported too?
64cflags-y += $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1,) 64cflags-y += $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1,)
diff --git a/arch/x86_64/kernel/head.S b/arch/x86_64/kernel/head.S
index e89abcdbdde8..b6167fe3330e 100644
--- a/arch/x86_64/kernel/head.S
+++ b/arch/x86_64/kernel/head.S
@@ -345,8 +345,7 @@ NEXT_PAGE(level2_kernel_pgt)
345 /* 40MB kernel mapping. The kernel code cannot be bigger than that. 345 /* 40MB kernel mapping. The kernel code cannot be bigger than that.
346 When you change this change KERNEL_TEXT_SIZE in page.h too. */ 346 When you change this change KERNEL_TEXT_SIZE in page.h too. */
347 /* (2^48-(2*1024*1024*1024)-((2^39)*511)-((2^30)*510)) = 0 */ 347 /* (2^48-(2*1024*1024*1024)-((2^39)*511)-((2^30)*510)) = 0 */
348 PMDS(0x0000000000000000, __PAGE_KERNEL_LARGE_EXEC|_PAGE_GLOBAL, 348 PMDS(0x0000000000000000, __PAGE_KERNEL_LARGE_EXEC|_PAGE_GLOBAL, KERNEL_TEXT_SIZE/PMD_SIZE)
349 KERNEL_TEXT_SIZE/PMD_SIZE)
350 /* Module mapping starts here */ 349 /* Module mapping starts here */
351 .fill (PTRS_PER_PMD - (KERNEL_TEXT_SIZE/PMD_SIZE)),8,0 350 .fill (PTRS_PER_PMD - (KERNEL_TEXT_SIZE/PMD_SIZE)),8,0
352 351
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c
index f57f8b901912..966fa1062491 100644
--- a/arch/x86_64/kernel/io_apic.c
+++ b/arch/x86_64/kernel/io_apic.c
@@ -397,14 +397,12 @@ static void clear_IO_APIC (void)
397int skip_ioapic_setup; 397int skip_ioapic_setup;
398int ioapic_force; 398int ioapic_force;
399 399
400/* dummy parsing: see setup.c */ 400static int __init parse_noapic(char *str)
401
402static int __init disable_ioapic_setup(char *str)
403{ 401{
404 skip_ioapic_setup = 1; 402 disable_ioapic_setup();
405 return 0; 403 return 0;
406} 404}
407early_param("noapic", disable_ioapic_setup); 405early_param("noapic", parse_noapic);
408 406
409/* Actually the next is obsolete, but keep it for paranoid reasons -AK */ 407/* Actually the next is obsolete, but keep it for paranoid reasons -AK */
410static int __init disable_timer_pin_setup(char *arg) 408static int __init disable_timer_pin_setup(char *arg)
diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c
index cb8ee9d02f86..0ec6d2ddb931 100644
--- a/arch/x86_64/kernel/nmi.c
+++ b/arch/x86_64/kernel/nmi.c
@@ -85,7 +85,7 @@ int __init check_nmi_watchdog (void)
85 int *counts; 85 int *counts;
86 int cpu; 86 int cpu;
87 87
88 if ((nmi_watchdog == NMI_NONE) || (nmi_watchdog == NMI_DEFAULT)) 88 if ((nmi_watchdog == NMI_NONE) || (nmi_watchdog == NMI_DISABLED))
89 return 0; 89 return 0;
90 90
91 if (!atomic_read(&nmi_active)) 91 if (!atomic_read(&nmi_active))
@@ -442,7 +442,7 @@ int proc_nmi_enabled(struct ctl_table *table, int write, struct file *file,
442 if (!!old_state == !!nmi_watchdog_enabled) 442 if (!!old_state == !!nmi_watchdog_enabled)
443 return 0; 443 return 0;
444 444
445 if (atomic_read(&nmi_active) < 0) { 445 if (atomic_read(&nmi_active) < 0 || nmi_watchdog == NMI_DISABLED) {
446 printk( KERN_WARNING "NMI watchdog is permanently disabled\n"); 446 printk( KERN_WARNING "NMI watchdog is permanently disabled\n");
447 return -EIO; 447 return -EIO;
448 } 448 }
diff --git a/arch/x86_64/kernel/pci-dma.c b/arch/x86_64/kernel/pci-dma.c
index 05d745ede561..29711445c818 100644
--- a/arch/x86_64/kernel/pci-dma.c
+++ b/arch/x86_64/kernel/pci-dma.c
@@ -82,6 +82,10 @@ dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
82 if (dma_mask == 0) 82 if (dma_mask == 0)
83 dma_mask = DMA_32BIT_MASK; 83 dma_mask = DMA_32BIT_MASK;
84 84
85 /* Device not DMA able */
86 if (dev->dma_mask == NULL)
87 return NULL;
88
85 /* Don't invoke OOM killer */ 89 /* Don't invoke OOM killer */
86 gfp |= __GFP_NORETRY; 90 gfp |= __GFP_NORETRY;
87 91
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index f1372de4ce79..4875f0149eb4 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -68,6 +68,24 @@ config ACPI_PROCFS
68 68
69 Say N to delete /proc/acpi/ files that have moved to /sys/ 69 Say N to delete /proc/acpi/ files that have moved to /sys/
70 70
71config ACPI_PROC_EVENT
72 bool "Deprecated /proc/acpi/event support"
73 depends on PROC_FS
74 default y
75 ---help---
76 A user-space daemon, acpi, typically read /proc/acpi/event
77 and handled all ACPI sub-system generated events.
78
79 These events are now delivered to user-space via
80 either the input layer, or as netlink events.
81
82 This build option enables the old code for legacy
83 user-space implementation. After some time, this will
84 be moved under CONFIG_ACPI_PROCFS, and then deleted.
85
86 Say Y here to retain the old behaviour. Say N if your
87 user-space is newer than kernel 2.6.23 (September 2007).
88
71config ACPI_AC 89config ACPI_AC
72 tristate "AC Adapter" 90 tristate "AC Adapter"
73 depends on X86 91 depends on X86
diff --git a/drivers/acpi/ac.c b/drivers/acpi/ac.c
index d8b35093527a..26d70702b313 100644
--- a/drivers/acpi/ac.c
+++ b/drivers/acpi/ac.c
@@ -204,7 +204,10 @@ static void acpi_ac_notify(acpi_handle handle, u32 event, void *data)
204 case ACPI_NOTIFY_BUS_CHECK: 204 case ACPI_NOTIFY_BUS_CHECK:
205 case ACPI_NOTIFY_DEVICE_CHECK: 205 case ACPI_NOTIFY_DEVICE_CHECK:
206 acpi_ac_get_state(ac); 206 acpi_ac_get_state(ac);
207 acpi_bus_generate_event(device, event, (u32) ac->state); 207 acpi_bus_generate_proc_event(device, event, (u32) ac->state);
208 acpi_bus_generate_netlink_event(device->pnp.device_class,
209 device->dev.bus_id, event,
210 (u32) ac->state);
208 break; 211 break;
209 default: 212 default:
210 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 213 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
diff --git a/drivers/acpi/asus_acpi.c b/drivers/acpi/asus_acpi.c
index 86fd142f4bf3..d915fec9bf63 100644
--- a/drivers/acpi/asus_acpi.c
+++ b/drivers/acpi/asus_acpi.c
@@ -1069,7 +1069,7 @@ static void asus_hotk_notify(acpi_handle handle, u32 event, void *data)
1069 hotk->brightness = (event & ~((u32) BR_DOWN)); 1069 hotk->brightness = (event & ~((u32) BR_DOWN));
1070 } 1070 }
1071 1071
1072 acpi_bus_generate_event(hotk->device, event, 1072 acpi_bus_generate_proc_event(hotk->device, event,
1073 hotk->event_count[event % 128]++); 1073 hotk->event_count[event % 128]++);
1074 1074
1075 return; 1075 return;
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index d7b499fe0cd9..9b2c0f74f869 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -113,7 +113,7 @@ struct acpi_battery_info {
113 acpi_string oem_info; 113 acpi_string oem_info;
114}; 114};
115 115
116enum acpi_battery_files { 116enum acpi_battery_files{
117 ACPI_BATTERY_INFO = 0, 117 ACPI_BATTERY_INFO = 0,
118 ACPI_BATTERY_STATE, 118 ACPI_BATTERY_STATE,
119 ACPI_BATTERY_ALARM, 119 ACPI_BATTERY_ALARM,
@@ -129,14 +129,13 @@ struct acpi_battery_flags {
129}; 129};
130 130
131struct acpi_battery { 131struct acpi_battery {
132 struct mutex mutex;
132 struct acpi_device *device; 133 struct acpi_device *device;
133 struct acpi_battery_flags flags; 134 struct acpi_battery_flags flags;
134 struct acpi_buffer bif_data; 135 struct acpi_buffer bif_data;
135 struct acpi_buffer bst_data; 136 struct acpi_buffer bst_data;
136 struct mutex lock;
137 unsigned long alarm; 137 unsigned long alarm;
138 unsigned long update_time[ACPI_BATTERY_NUMFILES]; 138 unsigned long update_time[ACPI_BATTERY_NUMFILES];
139
140}; 139};
141 140
142inline int acpi_battery_present(struct acpi_battery *battery) 141inline int acpi_battery_present(struct acpi_battery *battery)
@@ -236,10 +235,10 @@ static int acpi_battery_get_info(struct acpi_battery *battery)
236 return 0; 235 return 0;
237 236
238 /* Evaluate _BIF */ 237 /* Evaluate _BIF */
239 mutex_lock(&battery->lock); 238
240 status = acpi_evaluate_object(acpi_battery_handle(battery), "_BIF", 239 status =
241 NULL, &buffer); 240 acpi_evaluate_object(acpi_battery_handle(battery), "_BIF", NULL,
242 mutex_unlock(&battery->lock); 241 &buffer);
243 if (ACPI_FAILURE(status)) { 242 if (ACPI_FAILURE(status)) {
244 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _BIF")); 243 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _BIF"));
245 return -ENODEV; 244 return -ENODEV;
@@ -286,10 +285,10 @@ static int acpi_battery_get_state(struct acpi_battery *battery)
286 return 0; 285 return 0;
287 286
288 /* Evaluate _BST */ 287 /* Evaluate _BST */
289 mutex_lock(&battery->lock); 288
290 status = acpi_evaluate_object(acpi_battery_handle(battery), "_BST", 289 status =
291 NULL, &buffer); 290 acpi_evaluate_object(acpi_battery_handle(battery), "_BST", NULL,
292 mutex_unlock(&battery->lock); 291 &buffer);
293 if (ACPI_FAILURE(status)) { 292 if (ACPI_FAILURE(status)) {
294 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _BST")); 293 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _BST"));
295 return -ENODEV; 294 return -ENODEV;
@@ -337,10 +336,9 @@ static int acpi_battery_set_alarm(struct acpi_battery *battery,
337 336
338 arg0.integer.value = alarm; 337 arg0.integer.value = alarm;
339 338
340 mutex_lock(&battery->lock); 339 status =
341 status = acpi_evaluate_object(acpi_battery_handle(battery), "_BTP", 340 acpi_evaluate_object(acpi_battery_handle(battery), "_BTP",
342 &arg_list, NULL); 341 &arg_list, NULL);
343 mutex_unlock(&battery->lock);
344 if (ACPI_FAILURE(status)) 342 if (ACPI_FAILURE(status))
345 return -ENODEV; 343 return -ENODEV;
346 344
@@ -660,6 +658,8 @@ acpi_battery_write_alarm(struct file *file,
660 if (!battery || (count > sizeof(alarm_string) - 1)) 658 if (!battery || (count > sizeof(alarm_string) - 1))
661 return -EINVAL; 659 return -EINVAL;
662 660
661 mutex_lock(&battery->mutex);
662
663 result = acpi_battery_update(battery, 1, &update_result); 663 result = acpi_battery_update(battery, 1, &update_result);
664 if (result) { 664 if (result) {
665 result = -ENODEV; 665 result = -ENODEV;
@@ -688,7 +688,9 @@ acpi_battery_write_alarm(struct file *file,
688 acpi_battery_check_result(battery, result); 688 acpi_battery_check_result(battery, result);
689 689
690 if (!result) 690 if (!result)
691 return count; 691 result = count;
692
693 mutex_unlock(&battery->mutex);
692 694
693 return result; 695 return result;
694} 696}
@@ -712,6 +714,8 @@ static int acpi_battery_read(int fid, struct seq_file *seq)
712 int update_result = ACPI_BATTERY_NONE_UPDATE; 714 int update_result = ACPI_BATTERY_NONE_UPDATE;
713 int update = 0; 715 int update = 0;
714 716
717 mutex_lock(&battery->mutex);
718
715 update = (get_seconds() - battery->update_time[fid] >= update_time); 719 update = (get_seconds() - battery->update_time[fid] >= update_time);
716 update = (update | battery->flags.update[fid]); 720 update = (update | battery->flags.update[fid]);
717 721
@@ -729,6 +733,7 @@ static int acpi_battery_read(int fid, struct seq_file *seq)
729 result = acpi_read_funcs[fid].print(seq, result); 733 result = acpi_read_funcs[fid].print(seq, result);
730 acpi_battery_check_result(battery, result); 734 acpi_battery_check_result(battery, result);
731 battery->flags.update[fid] = result; 735 battery->flags.update[fid] = result;
736 mutex_unlock(&battery->mutex);
732 return result; 737 return result;
733} 738}
734 739
@@ -867,8 +872,11 @@ static void acpi_battery_notify(acpi_handle handle, u32 event, void *data)
867 case ACPI_NOTIFY_DEVICE_CHECK: 872 case ACPI_NOTIFY_DEVICE_CHECK:
868 device = battery->device; 873 device = battery->device;
869 acpi_battery_notify_update(battery); 874 acpi_battery_notify_update(battery);
870 acpi_bus_generate_event(device, event, 875 acpi_bus_generate_proc_event(device, event,
871 acpi_battery_present(battery)); 876 acpi_battery_present(battery));
877 acpi_bus_generate_netlink_event(device->pnp.device_class,
878 device->dev.bus_id, event,
879 acpi_battery_present(battery));
872 break; 880 break;
873 default: 881 default:
874 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 882 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
@@ -892,7 +900,10 @@ static int acpi_battery_add(struct acpi_device *device)
892 if (!battery) 900 if (!battery)
893 return -ENOMEM; 901 return -ENOMEM;
894 902
895 mutex_init(&battery->lock); 903 mutex_init(&battery->mutex);
904
905 mutex_lock(&battery->mutex);
906
896 battery->device = device; 907 battery->device = device;
897 strcpy(acpi_device_name(device), ACPI_BATTERY_DEVICE_NAME); 908 strcpy(acpi_device_name(device), ACPI_BATTERY_DEVICE_NAME);
898 strcpy(acpi_device_class(device), ACPI_BATTERY_CLASS); 909 strcpy(acpi_device_class(device), ACPI_BATTERY_CLASS);
@@ -928,6 +939,7 @@ static int acpi_battery_add(struct acpi_device *device)
928 kfree(battery); 939 kfree(battery);
929 } 940 }
930 941
942 mutex_unlock(&battery->mutex);
931 943
932 return result; 944 return result;
933} 945}
@@ -942,6 +954,8 @@ static int acpi_battery_remove(struct acpi_device *device, int type)
942 954
943 battery = acpi_driver_data(device); 955 battery = acpi_driver_data(device);
944 956
957 mutex_lock(&battery->mutex);
958
945 status = acpi_remove_notify_handler(device->handle, 959 status = acpi_remove_notify_handler(device->handle,
946 ACPI_ALL_NOTIFY, 960 ACPI_ALL_NOTIFY,
947 acpi_battery_notify); 961 acpi_battery_notify);
@@ -952,7 +966,9 @@ static int acpi_battery_remove(struct acpi_device *device, int type)
952 966
953 kfree(battery->bst_data.pointer); 967 kfree(battery->bst_data.pointer);
954 968
955 mutex_destroy(&battery->lock); 969 mutex_unlock(&battery->mutex);
970
971 mutex_destroy(&battery->mutex);
956 972
957 kfree(battery); 973 kfree(battery);
958 974
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 6b2658c96242..9ba778a2b484 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -276,6 +276,7 @@ EXPORT_SYMBOL(acpi_bus_set_power);
276 Event Management 276 Event Management
277 -------------------------------------------------------------------------- */ 277 -------------------------------------------------------------------------- */
278 278
279#ifdef CONFIG_ACPI_PROC_EVENT
279static DEFINE_SPINLOCK(acpi_bus_event_lock); 280static DEFINE_SPINLOCK(acpi_bus_event_lock);
280 281
281LIST_HEAD(acpi_bus_event_list); 282LIST_HEAD(acpi_bus_event_list);
@@ -283,7 +284,7 @@ DECLARE_WAIT_QUEUE_HEAD(acpi_bus_event_queue);
283 284
284extern int event_is_open; 285extern int event_is_open;
285 286
286int acpi_bus_generate_event(struct acpi_device *device, u8 type, int data) 287int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data)
287{ 288{
288 struct acpi_bus_event *event = NULL; 289 struct acpi_bus_event *event = NULL;
289 unsigned long flags = 0; 290 unsigned long flags = 0;
@@ -292,10 +293,6 @@ int acpi_bus_generate_event(struct acpi_device *device, u8 type, int data)
292 if (!device) 293 if (!device)
293 return -EINVAL; 294 return -EINVAL;
294 295
295 if (acpi_bus_generate_genetlink_event(device, type, data))
296 printk(KERN_WARNING PREFIX
297 "Failed to generate an ACPI event via genetlink!\n");
298
299 /* drop event on the floor if no one's listening */ 296 /* drop event on the floor if no one's listening */
300 if (!event_is_open) 297 if (!event_is_open)
301 return 0; 298 return 0;
@@ -318,7 +315,7 @@ int acpi_bus_generate_event(struct acpi_device *device, u8 type, int data)
318 return 0; 315 return 0;
319} 316}
320 317
321EXPORT_SYMBOL(acpi_bus_generate_event); 318EXPORT_SYMBOL(acpi_bus_generate_proc_event);
322 319
323int acpi_bus_receive_event(struct acpi_bus_event *event) 320int acpi_bus_receive_event(struct acpi_bus_event *event)
324{ 321{
@@ -364,6 +361,7 @@ int acpi_bus_receive_event(struct acpi_bus_event *event)
364} 361}
365 362
366EXPORT_SYMBOL(acpi_bus_receive_event); 363EXPORT_SYMBOL(acpi_bus_receive_event);
364#endif /* CONFIG_ACPI_PROC_EVENT */
367 365
368/* -------------------------------------------------------------------------- 366/* --------------------------------------------------------------------------
369 Notification Handling 367 Notification Handling
diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c
index 540581338ef5..2e79a3395ecf 100644
--- a/drivers/acpi/button.c
+++ b/drivers/acpi/button.c
@@ -284,7 +284,7 @@ static void acpi_button_notify(acpi_handle handle, u32 event, void *data)
284 } 284 }
285 input_sync(input); 285 input_sync(input);
286 286
287 acpi_bus_generate_event(button->device, event, 287 acpi_bus_generate_proc_event(button->device, event,
288 ++button->pushed); 288 ++button->pushed);
289 break; 289 break;
290 default: 290 default:
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 56bee9e065cf..43749c86861f 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -696,14 +696,6 @@ ec_parse_device(acpi_handle handle, u32 Level, void *context, void **retval)
696 return AE_CTRL_TERMINATE; 696 return AE_CTRL_TERMINATE;
697} 697}
698 698
699static void ec_remove_handlers(struct acpi_ec *ec)
700{
701 acpi_remove_address_space_handler(ec->handle,
702 ACPI_ADR_SPACE_EC,
703 &acpi_ec_space_handler);
704 acpi_remove_gpe_handler(NULL, ec->gpe, &acpi_ec_gpe_handler);
705}
706
707static int acpi_ec_add(struct acpi_device *device) 699static int acpi_ec_add(struct acpi_device *device)
708{ 700{
709 struct acpi_ec *ec = NULL; 701 struct acpi_ec *ec = NULL;
@@ -727,13 +719,16 @@ static int acpi_ec_add(struct acpi_device *device)
727 /* Check if we found the boot EC */ 719 /* Check if we found the boot EC */
728 if (boot_ec) { 720 if (boot_ec) {
729 if (boot_ec->gpe == ec->gpe) { 721 if (boot_ec->gpe == ec->gpe) {
730 ec_remove_handlers(boot_ec); 722 /* We might have incorrect info for GL at boot time */
731 mutex_destroy(&boot_ec->lock); 723 mutex_lock(&boot_ec->lock);
732 kfree(boot_ec); 724 boot_ec->global_lock = ec->global_lock;
733 first_ec = boot_ec = NULL; 725 /* Copy handlers from new ec into boot ec */
726 list_splice(&ec->list, &boot_ec->list);
727 mutex_unlock(&boot_ec->lock);
728 kfree(ec);
729 ec = boot_ec;
734 } 730 }
735 } 731 } else
736 if (!first_ec)
737 first_ec = ec; 732 first_ec = ec;
738 ec->handle = device->handle; 733 ec->handle = device->handle;
739 acpi_driver_data(device) = ec; 734 acpi_driver_data(device) = ec;
@@ -762,6 +757,9 @@ static int acpi_ec_remove(struct acpi_device *device, int type)
762 if (ec == first_ec) 757 if (ec == first_ec)
763 first_ec = NULL; 758 first_ec = NULL;
764 759
760 /* Don't touch boot EC */
761 if (boot_ec != ec)
762 kfree(ec);
765 return 0; 763 return 0;
766} 764}
767 765
@@ -825,7 +823,9 @@ static int acpi_ec_start(struct acpi_device *device)
825 if (!ec) 823 if (!ec)
826 return -EINVAL; 824 return -EINVAL;
827 825
828 ret = ec_install_handlers(ec); 826 /* Boot EC is already working */
827 if (ec != boot_ec)
828 ret = ec_install_handlers(ec);
829 829
830 /* EC is fully operational, allow queries */ 830 /* EC is fully operational, allow queries */
831 atomic_set(&ec->query_pending, 0); 831 atomic_set(&ec->query_pending, 0);
@@ -835,6 +835,7 @@ static int acpi_ec_start(struct acpi_device *device)
835 835
836static int acpi_ec_stop(struct acpi_device *device, int type) 836static int acpi_ec_stop(struct acpi_device *device, int type)
837{ 837{
838 acpi_status status;
838 struct acpi_ec *ec; 839 struct acpi_ec *ec;
839 840
840 if (!device) 841 if (!device)
@@ -843,7 +844,21 @@ static int acpi_ec_stop(struct acpi_device *device, int type)
843 ec = acpi_driver_data(device); 844 ec = acpi_driver_data(device);
844 if (!ec) 845 if (!ec)
845 return -EINVAL; 846 return -EINVAL;
846 ec_remove_handlers(ec); 847
848 /* Don't touch boot EC */
849 if (ec == boot_ec)
850 return 0;
851
852 status = acpi_remove_address_space_handler(ec->handle,
853 ACPI_ADR_SPACE_EC,
854 &acpi_ec_space_handler);
855 if (ACPI_FAILURE(status))
856 return -ENODEV;
857
858 status = acpi_remove_gpe_handler(NULL, ec->gpe, &acpi_ec_gpe_handler);
859 if (ACPI_FAILURE(status))
860 return -ENODEV;
861
847 return 0; 862 return 0;
848} 863}
849 864
diff --git a/drivers/acpi/event.c b/drivers/acpi/event.c
index 95637a4ff782..a2b9304596ce 100644
--- a/drivers/acpi/event.c
+++ b/drivers/acpi/event.c
@@ -17,6 +17,7 @@
17#define _COMPONENT ACPI_SYSTEM_COMPONENT 17#define _COMPONENT ACPI_SYSTEM_COMPONENT
18ACPI_MODULE_NAME("event"); 18ACPI_MODULE_NAME("event");
19 19
20#ifdef CONFIG_ACPI_PROC_EVENT
20/* Global vars for handling event proc entry */ 21/* Global vars for handling event proc entry */
21static DEFINE_SPINLOCK(acpi_system_event_lock); 22static DEFINE_SPINLOCK(acpi_system_event_lock);
22int event_is_open = 0; 23int event_is_open = 0;
@@ -106,6 +107,7 @@ static const struct file_operations acpi_system_event_ops = {
106 .release = acpi_system_close_event, 107 .release = acpi_system_close_event,
107 .poll = acpi_system_poll_event, 108 .poll = acpi_system_poll_event,
108}; 109};
110#endif /* CONFIG_ACPI_PROC_EVENT */
109 111
110#ifdef CONFIG_NET 112#ifdef CONFIG_NET
111static unsigned int acpi_event_seqnum; 113static unsigned int acpi_event_seqnum;
@@ -147,7 +149,8 @@ static struct genl_multicast_group acpi_event_mcgrp = {
147 .name = ACPI_GENL_MCAST_GROUP_NAME, 149 .name = ACPI_GENL_MCAST_GROUP_NAME,
148}; 150};
149 151
150int acpi_bus_generate_genetlink_event(struct acpi_device *device, 152int acpi_bus_generate_netlink_event(const char *device_class,
153 const char *bus_id,
151 u8 type, int data) 154 u8 type, int data)
152{ 155{
153 struct sk_buff *skb; 156 struct sk_buff *skb;
@@ -191,8 +194,8 @@ int acpi_bus_generate_genetlink_event(struct acpi_device *device,
191 194
192 memset(event, 0, sizeof(struct acpi_genl_event)); 195 memset(event, 0, sizeof(struct acpi_genl_event));
193 196
194 strcpy(event->device_class, device->pnp.device_class); 197 strcpy(event->device_class, device_class);
195 strcpy(event->bus_id, device->dev.bus_id); 198 strcpy(event->bus_id, bus_id);
196 event->type = type; 199 event->type = type;
197 event->data = data; 200 event->data = data;
198 201
@@ -211,6 +214,8 @@ int acpi_bus_generate_genetlink_event(struct acpi_device *device,
211 return 0; 214 return 0;
212} 215}
213 216
217EXPORT_SYMBOL(acpi_bus_generate_netlink_event);
218
214static int acpi_event_genetlink_init(void) 219static int acpi_event_genetlink_init(void)
215{ 220{
216 int result; 221 int result;
@@ -228,12 +233,15 @@ static int acpi_event_genetlink_init(void)
228} 233}
229 234
230#else 235#else
231int acpi_bus_generate_genetlink_event(struct acpi_device *device, u8 type, 236int acpi_bus_generate_netlink_event(const char *device_class,
232 int data) 237 const char *bus_id,
238 u8 type, int data)
233{ 239{
234 return 0; 240 return 0;
235} 241}
236 242
243EXPORT_SYMBOL(acpi_generate_netlink_event);
244
237static int acpi_event_genetlink_init(void) 245static int acpi_event_genetlink_init(void)
238{ 246{
239 return -ENODEV; 247 return -ENODEV;
@@ -242,7 +250,9 @@ static int acpi_event_genetlink_init(void)
242 250
243static int __init acpi_event_init(void) 251static int __init acpi_event_init(void)
244{ 252{
253#ifdef CONFIG_ACPI_PROC_EVENT
245 struct proc_dir_entry *entry; 254 struct proc_dir_entry *entry;
255#endif
246 int error = 0; 256 int error = 0;
247 257
248 if (acpi_disabled) 258 if (acpi_disabled)
@@ -254,12 +264,14 @@ static int __init acpi_event_init(void)
254 printk(KERN_WARNING PREFIX 264 printk(KERN_WARNING PREFIX
255 "Failed to create genetlink family for ACPI event\n"); 265 "Failed to create genetlink family for ACPI event\n");
256 266
267#ifdef CONFIG_ACPI_PROC_EVENT
257 /* 'event' [R] */ 268 /* 'event' [R] */
258 entry = create_proc_entry("event", S_IRUSR, acpi_root_dir); 269 entry = create_proc_entry("event", S_IRUSR, acpi_root_dir);
259 if (entry) 270 if (entry)
260 entry->proc_fops = &acpi_system_event_ops; 271 entry->proc_fops = &acpi_system_event_ops;
261 else 272 else
262 return -ENODEV; 273 return -ENODEV;
274#endif
263 275
264 return 0; 276 return 0;
265} 277}
diff --git a/drivers/acpi/hardware/hwsleep.c b/drivers/acpi/hardware/hwsleep.c
index 76c525dc590b..cf69c0040a39 100644
--- a/drivers/acpi/hardware/hwsleep.c
+++ b/drivers/acpi/hardware/hwsleep.c
@@ -576,13 +576,10 @@ acpi_status acpi_leave_sleep_state(u8 sleep_state)
576 ACPI_EXCEPTION((AE_INFO, status, "During Method _BFS")); 576 ACPI_EXCEPTION((AE_INFO, status, "During Method _BFS"));
577 } 577 }
578 578
579 status = acpi_evaluate_object(NULL, METHOD_NAME__WAK, &arg_list, NULL);
580 if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
581 ACPI_EXCEPTION((AE_INFO, status, "During Method _WAK"));
582 }
583 /* TBD: _WAK "sometimes" returns stuff - do we want to look at it? */
584
585 /* 579 /*
580 * GPEs must be enabled before _WAK is called as GPEs
581 * might get fired there
582 *
586 * Restore the GPEs: 583 * Restore the GPEs:
587 * 1) Disable/Clear all GPEs 584 * 1) Disable/Clear all GPEs
588 * 2) Enable all runtime GPEs 585 * 2) Enable all runtime GPEs
@@ -591,13 +588,19 @@ acpi_status acpi_leave_sleep_state(u8 sleep_state)
591 if (ACPI_FAILURE(status)) { 588 if (ACPI_FAILURE(status)) {
592 return_ACPI_STATUS(status); 589 return_ACPI_STATUS(status);
593 } 590 }
594 acpi_gbl_system_awake_and_running = TRUE;
595
596 status = acpi_hw_enable_all_runtime_gpes(); 591 status = acpi_hw_enable_all_runtime_gpes();
597 if (ACPI_FAILURE(status)) { 592 if (ACPI_FAILURE(status)) {
598 return_ACPI_STATUS(status); 593 return_ACPI_STATUS(status);
599 } 594 }
600 595
596 status = acpi_evaluate_object(NULL, METHOD_NAME__WAK, &arg_list, NULL);
597 if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
598 ACPI_EXCEPTION((AE_INFO, status, "During Method _WAK"));
599 }
600 /* TBD: _WAK "sometimes" returns stuff - do we want to look at it? */
601
602 acpi_gbl_system_awake_and_running = TRUE;
603
601 /* Enable power button */ 604 /* Enable power button */
602 605
603 (void) 606 (void)
diff --git a/drivers/acpi/namespace/nsxfeval.c b/drivers/acpi/namespace/nsxfeval.c
index ab65b2c2560e..f39fbc6b9237 100644
--- a/drivers/acpi/namespace/nsxfeval.c
+++ b/drivers/acpi/namespace/nsxfeval.c
@@ -540,7 +540,7 @@ acpi_ns_get_device_callback(acpi_handle obj_handle,
540 ******************************************************************************/ 540 ******************************************************************************/
541 541
542acpi_status 542acpi_status
543acpi_get_devices(char *HID, 543acpi_get_devices(const char *HID,
544 acpi_walk_callback user_function, 544 acpi_walk_callback user_function,
545 void *context, void **return_value) 545 void *context, void **return_value)
546{ 546{
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index 498422343f38..e944aaee4e06 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -698,16 +698,23 @@ static void acpi_processor_notify(acpi_handle handle, u32 event, void *data)
698 switch (event) { 698 switch (event) {
699 case ACPI_PROCESSOR_NOTIFY_PERFORMANCE: 699 case ACPI_PROCESSOR_NOTIFY_PERFORMANCE:
700 acpi_processor_ppc_has_changed(pr); 700 acpi_processor_ppc_has_changed(pr);
701 acpi_bus_generate_event(device, event, 701 acpi_bus_generate_proc_event(device, event,
702 pr->performance_platform_limit); 702 pr->performance_platform_limit);
703 acpi_bus_generate_netlink_event(device->pnp.device_class,
704 device->dev.bus_id, event,
705 pr->performance_platform_limit);
703 break; 706 break;
704 case ACPI_PROCESSOR_NOTIFY_POWER: 707 case ACPI_PROCESSOR_NOTIFY_POWER:
705 acpi_processor_cst_has_changed(pr); 708 acpi_processor_cst_has_changed(pr);
706 acpi_bus_generate_event(device, event, 0); 709 acpi_bus_generate_proc_event(device, event, 0);
710 acpi_bus_generate_netlink_event(device->pnp.device_class,
711 device->dev.bus_id, event, 0);
707 break; 712 break;
708 case ACPI_PROCESSOR_NOTIFY_THROTTLING: 713 case ACPI_PROCESSOR_NOTIFY_THROTTLING:
709 acpi_processor_tstate_has_changed(pr); 714 acpi_processor_tstate_has_changed(pr);
710 acpi_bus_generate_event(device, event, 0); 715 acpi_bus_generate_proc_event(device, event, 0);
716 acpi_bus_generate_netlink_event(device->pnp.device_class,
717 device->dev.bus_id, event, 0);
711 default: 718 default:
712 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 719 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
713 "Unsupported event [0x%x]\n", event)); 720 "Unsupported event [0x%x]\n", event));
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index a8634a0655fc..d9b8af763e1e 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -63,6 +63,7 @@
63ACPI_MODULE_NAME("processor_idle"); 63ACPI_MODULE_NAME("processor_idle");
64#define ACPI_PROCESSOR_FILE_POWER "power" 64#define ACPI_PROCESSOR_FILE_POWER "power"
65#define US_TO_PM_TIMER_TICKS(t) ((t * (PM_TIMER_FREQUENCY/1000)) / 1000) 65#define US_TO_PM_TIMER_TICKS(t) ((t * (PM_TIMER_FREQUENCY/1000)) / 1000)
66#define PM_TIMER_TICK_NS (1000000000ULL/PM_TIMER_FREQUENCY)
66#define C2_OVERHEAD 4 /* 1us (3.579 ticks per us) */ 67#define C2_OVERHEAD 4 /* 1us (3.579 ticks per us) */
67#define C3_OVERHEAD 4 /* 1us (3.579 ticks per us) */ 68#define C3_OVERHEAD 4 /* 1us (3.579 ticks per us) */
68static void (*pm_idle_save) (void) __read_mostly; 69static void (*pm_idle_save) (void) __read_mostly;
@@ -462,6 +463,9 @@ static void acpi_processor_idle(void)
462 * TBD: Can't get time duration while in C1, as resumes 463 * TBD: Can't get time duration while in C1, as resumes
463 * go to an ISR rather than here. Need to instrument 464 * go to an ISR rather than here. Need to instrument
464 * base interrupt handler. 465 * base interrupt handler.
466 *
467 * Note: the TSC better not stop in C1, sched_clock() will
468 * skew otherwise.
465 */ 469 */
466 sleep_ticks = 0xFFFFFFFF; 470 sleep_ticks = 0xFFFFFFFF;
467 break; 471 break;
@@ -469,6 +473,8 @@ static void acpi_processor_idle(void)
469 case ACPI_STATE_C2: 473 case ACPI_STATE_C2:
470 /* Get start time (ticks) */ 474 /* Get start time (ticks) */
471 t1 = inl(acpi_gbl_FADT.xpm_timer_block.address); 475 t1 = inl(acpi_gbl_FADT.xpm_timer_block.address);
476 /* Tell the scheduler that we are going deep-idle: */
477 sched_clock_idle_sleep_event();
472 /* Invoke C2 */ 478 /* Invoke C2 */
473 acpi_state_timer_broadcast(pr, cx, 1); 479 acpi_state_timer_broadcast(pr, cx, 1);
474 acpi_cstate_enter(cx); 480 acpi_cstate_enter(cx);
@@ -479,17 +485,22 @@ static void acpi_processor_idle(void)
479 /* TSC halts in C2, so notify users */ 485 /* TSC halts in C2, so notify users */
480 mark_tsc_unstable("possible TSC halt in C2"); 486 mark_tsc_unstable("possible TSC halt in C2");
481#endif 487#endif
488 /* Compute time (ticks) that we were actually asleep */
489 sleep_ticks = ticks_elapsed(t1, t2);
490
491 /* Tell the scheduler how much we idled: */
492 sched_clock_idle_wakeup_event(sleep_ticks*PM_TIMER_TICK_NS);
493
482 /* Re-enable interrupts */ 494 /* Re-enable interrupts */
483 local_irq_enable(); 495 local_irq_enable();
496 /* Do not account our idle-switching overhead: */
497 sleep_ticks -= cx->latency_ticks + C2_OVERHEAD;
498
484 current_thread_info()->status |= TS_POLLING; 499 current_thread_info()->status |= TS_POLLING;
485 /* Compute time (ticks) that we were actually asleep */
486 sleep_ticks =
487 ticks_elapsed(t1, t2) - cx->latency_ticks - C2_OVERHEAD;
488 acpi_state_timer_broadcast(pr, cx, 0); 500 acpi_state_timer_broadcast(pr, cx, 0);
489 break; 501 break;
490 502
491 case ACPI_STATE_C3: 503 case ACPI_STATE_C3:
492
493 /* 504 /*
494 * disable bus master 505 * disable bus master
495 * bm_check implies we need ARB_DIS 506 * bm_check implies we need ARB_DIS
@@ -518,6 +529,8 @@ static void acpi_processor_idle(void)
518 t1 = inl(acpi_gbl_FADT.xpm_timer_block.address); 529 t1 = inl(acpi_gbl_FADT.xpm_timer_block.address);
519 /* Invoke C3 */ 530 /* Invoke C3 */
520 acpi_state_timer_broadcast(pr, cx, 1); 531 acpi_state_timer_broadcast(pr, cx, 1);
532 /* Tell the scheduler that we are going deep-idle: */
533 sched_clock_idle_sleep_event();
521 acpi_cstate_enter(cx); 534 acpi_cstate_enter(cx);
522 /* Get end time (ticks) */ 535 /* Get end time (ticks) */
523 t2 = inl(acpi_gbl_FADT.xpm_timer_block.address); 536 t2 = inl(acpi_gbl_FADT.xpm_timer_block.address);
@@ -531,12 +544,17 @@ static void acpi_processor_idle(void)
531 /* TSC halts in C3, so notify users */ 544 /* TSC halts in C3, so notify users */
532 mark_tsc_unstable("TSC halts in C3"); 545 mark_tsc_unstable("TSC halts in C3");
533#endif 546#endif
547 /* Compute time (ticks) that we were actually asleep */
548 sleep_ticks = ticks_elapsed(t1, t2);
549 /* Tell the scheduler how much we idled: */
550 sched_clock_idle_wakeup_event(sleep_ticks*PM_TIMER_TICK_NS);
551
534 /* Re-enable interrupts */ 552 /* Re-enable interrupts */
535 local_irq_enable(); 553 local_irq_enable();
554 /* Do not account our idle-switching overhead: */
555 sleep_ticks -= cx->latency_ticks + C3_OVERHEAD;
556
536 current_thread_info()->status |= TS_POLLING; 557 current_thread_info()->status |= TS_POLLING;
537 /* Compute time (ticks) that we were actually asleep */
538 sleep_ticks =
539 ticks_elapsed(t1, t2) - cx->latency_ticks - C3_OVERHEAD;
540 acpi_state_timer_broadcast(pr, cx, 0); 558 acpi_state_timer_broadcast(pr, cx, 0);
541 break; 559 break;
542 560
diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c
index 82c3a550016d..a578986e3214 100644
--- a/drivers/acpi/sbs.c
+++ b/drivers/acpi/sbs.c
@@ -440,11 +440,12 @@ static int acpi_sbs_generate_event(struct acpi_device *device,
440 strcpy(acpi_device_bid(device), bid); 440 strcpy(acpi_device_bid(device), bid);
441 strcpy(acpi_device_class(device), class); 441 strcpy(acpi_device_class(device), class);
442 442
443 result = acpi_bus_generate_event(device, event, state); 443 result = acpi_bus_generate_proc_event(device, event, state);
444 444
445 strcpy(acpi_device_bid(device), bid_saved); 445 strcpy(acpi_device_bid(device), bid_saved);
446 strcpy(acpi_device_class(device), class_saved); 446 strcpy(acpi_device_class(device), class_saved);
447 447
448 acpi_bus_generate_netlink_event(class, bid, event, state);
448 return result; 449 return result;
449} 450}
450 451
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index be74347d1354..64620d668742 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -35,8 +35,9 @@ struct acpi_device_bus_id{
35 * e.g. on a device with hid:IBM0001 and cid:ACPI0001 you get: 35 * e.g. on a device with hid:IBM0001 and cid:ACPI0001 you get:
36 * char *modalias: "acpi:IBM0001:ACPI0001" 36 * char *modalias: "acpi:IBM0001:ACPI0001"
37*/ 37*/
38int create_modalias(struct acpi_device *acpi_dev, char *modalias, int size){ 38static int create_modalias(struct acpi_device *acpi_dev, char *modalias,
39 39 int size)
40{
40 int len; 41 int len;
41 42
42 if (!acpi_dev->flags.hardware_id) 43 if (!acpi_dev->flags.hardware_id)
diff --git a/drivers/acpi/sleep/main.c b/drivers/acpi/sleep/main.c
index e8cff5dd4cbc..c52ade816fb4 100644
--- a/drivers/acpi/sleep/main.c
+++ b/drivers/acpi/sleep/main.c
@@ -305,7 +305,7 @@ int acpi_pm_device_sleep_state(struct device *dev, int wake, int *d_min_p)
305 unsigned long d_min, d_max; 305 unsigned long d_min, d_max;
306 306
307 if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &adev))) { 307 if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &adev))) {
308 printk(KERN_ERR "ACPI handle has no context!\n"); 308 printk(KERN_DEBUG "ACPI handle has no context!\n");
309 return -ENODEV; 309 return -ENODEV;
310 } 310 }
311 311
diff --git a/drivers/acpi/tables/tbutils.c b/drivers/acpi/tables/tbutils.c
index 1da64b4518c0..8cc9492ffbf2 100644
--- a/drivers/acpi/tables/tbutils.c
+++ b/drivers/acpi/tables/tbutils.c
@@ -51,6 +51,65 @@ ACPI_MODULE_NAME("tbutils")
51static acpi_physical_address 51static acpi_physical_address
52acpi_tb_get_root_table_entry(u8 * table_entry, 52acpi_tb_get_root_table_entry(u8 * table_entry,
53 acpi_native_uint table_entry_size); 53 acpi_native_uint table_entry_size);
54/*******************************************************************************
55 *
56 * FUNCTION: acpi_tb_check_xsdt
57 *
58 * PARAMETERS: address - Pointer to the XSDT
59 *
60 * RETURN: status
61 * AE_OK - XSDT is okay
62 * AE_NO_MEMORY - can't map XSDT
63 * AE_INVALID_TABLE_LENGTH - invalid table length
64 * AE_NULL_ENTRY - XSDT has NULL entry
65 *
66 * DESCRIPTION: validate XSDT
67******************************************************************************/
68
69static acpi_status
70acpi_tb_check_xsdt(acpi_physical_address address)
71{
72 struct acpi_table_header *table;
73 u32 length;
74 u64 xsdt_entry_address;
75 u8 *table_entry;
76 u32 table_count;
77 int i;
78
79 table = acpi_os_map_memory(address, sizeof(struct acpi_table_header));
80 if (!table)
81 return AE_NO_MEMORY;
82
83 length = table->length;
84 acpi_os_unmap_memory(table, sizeof(struct acpi_table_header));
85 if (length < sizeof(struct acpi_table_header))
86 return AE_INVALID_TABLE_LENGTH;
87
88 table = acpi_os_map_memory(address, length);
89 if (!table)
90 return AE_NO_MEMORY;
91
92 /* Calculate the number of tables described in XSDT */
93 table_count =
94 (u32) ((table->length -
95 sizeof(struct acpi_table_header)) / sizeof(u64));
96 table_entry =
97 ACPI_CAST_PTR(u8, table) + sizeof(struct acpi_table_header);
98 for (i = 0; i < table_count; i++) {
99 ACPI_MOVE_64_TO_64(&xsdt_entry_address, table_entry);
100 if (!xsdt_entry_address) {
101 /* XSDT has NULL entry */
102 break;
103 }
104 table_entry += sizeof(u64);
105 }
106 acpi_os_unmap_memory(table, length);
107
108 if (i < table_count)
109 return AE_NULL_ENTRY;
110 else
111 return AE_OK;
112}
54 113
55/******************************************************************************* 114/*******************************************************************************
56 * 115 *
@@ -341,6 +400,7 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address, u8 flags)
341 u32 table_count; 400 u32 table_count;
342 struct acpi_table_header *table; 401 struct acpi_table_header *table;
343 acpi_physical_address address; 402 acpi_physical_address address;
403 acpi_physical_address rsdt_address;
344 u32 length; 404 u32 length;
345 u8 *table_entry; 405 u8 *table_entry;
346 acpi_status status; 406 acpi_status status;
@@ -369,6 +429,8 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address, u8 flags)
369 */ 429 */
370 address = (acpi_physical_address) rsdp->xsdt_physical_address; 430 address = (acpi_physical_address) rsdp->xsdt_physical_address;
371 table_entry_size = sizeof(u64); 431 table_entry_size = sizeof(u64);
432 rsdt_address = (acpi_physical_address)
433 rsdp->rsdt_physical_address;
372 } else { 434 } else {
373 /* Root table is an RSDT (32-bit physical addresses) */ 435 /* Root table is an RSDT (32-bit physical addresses) */
374 436
@@ -382,6 +444,15 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address, u8 flags)
382 */ 444 */
383 acpi_os_unmap_memory(rsdp, sizeof(struct acpi_table_rsdp)); 445 acpi_os_unmap_memory(rsdp, sizeof(struct acpi_table_rsdp));
384 446
447 if (table_entry_size == sizeof(u64)) {
448 if (acpi_tb_check_xsdt(address) == AE_NULL_ENTRY) {
449 /* XSDT has NULL entry, RSDT is used */
450 address = rsdt_address;
451 table_entry_size = sizeof(u32);
452 ACPI_WARNING((AE_INFO, "BIOS XSDT has NULL entry,"
453 "using RSDT"));
454 }
455 }
385 /* Map the RSDT/XSDT table header to get the full table length */ 456 /* Map the RSDT/XSDT table header to get the full table length */
386 457
387 table = acpi_os_map_memory(address, sizeof(struct acpi_table_header)); 458 table = acpi_os_map_memory(address, sizeof(struct acpi_table_header));
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 1e06159fd9c4..bc6d5866ef98 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -77,23 +77,27 @@ MODULE_LICENSE("GPL");
77 77
78static int act; 78static int act;
79module_param(act, int, 0644); 79module_param(act, int, 0644);
80MODULE_PARM_DESC(act, "Disable or override all lowest active trip points.\n"); 80MODULE_PARM_DESC(act, "Disable or override all lowest active trip points.");
81
82static int crt;
83module_param(crt, int, 0644);
84MODULE_PARM_DESC(crt, "Disable or lower all critical trip points.");
81 85
82static int tzp; 86static int tzp;
83module_param(tzp, int, 0444); 87module_param(tzp, int, 0444);
84MODULE_PARM_DESC(tzp, "Thermal zone polling frequency, in 1/10 seconds.\n"); 88MODULE_PARM_DESC(tzp, "Thermal zone polling frequency, in 1/10 seconds.");
85 89
86static int nocrt; 90static int nocrt;
87module_param(nocrt, int, 0); 91module_param(nocrt, int, 0);
88MODULE_PARM_DESC(nocrt, "Set to disable action on ACPI thermal zone critical and hot trips.\n"); 92MODULE_PARM_DESC(nocrt, "Set to take no action upon ACPI thermal zone critical trips points.");
89 93
90static int off; 94static int off;
91module_param(off, int, 0); 95module_param(off, int, 0);
92MODULE_PARM_DESC(off, "Set to disable ACPI thermal support.\n"); 96MODULE_PARM_DESC(off, "Set to disable ACPI thermal support.");
93 97
94static int psv; 98static int psv;
95module_param(psv, int, 0644); 99module_param(psv, int, 0644);
96MODULE_PARM_DESC(psv, "Disable or override all passive trip points.\n"); 100MODULE_PARM_DESC(psv, "Disable or override all passive trip points.");
97 101
98static int acpi_thermal_add(struct acpi_device *device); 102static int acpi_thermal_add(struct acpi_device *device);
99static int acpi_thermal_remove(struct acpi_device *device, int type); 103static int acpi_thermal_remove(struct acpi_device *device, int type);
@@ -340,6 +344,20 @@ static int acpi_thermal_get_trip_points(struct acpi_thermal *tz)
340 tz->trips.critical.temperature)); 344 tz->trips.critical.temperature));
341 } 345 }
342 346
347 if (tz->trips.critical.flags.valid == 1) {
348 if (crt == -1) {
349 tz->trips.critical.flags.valid = 0;
350 } else if (crt > 0) {
351 unsigned long crt_k = CELSIUS_TO_KELVIN(crt);
352
353 /*
354 * Allow override to lower critical threshold
355 */
356 if (crt_k < tz->trips.critical.temperature)
357 tz->trips.critical.temperature = crt_k;
358 }
359 }
360
343 /* Critical Sleep (optional) */ 361 /* Critical Sleep (optional) */
344 362
345 status = 363 status =
@@ -485,8 +503,12 @@ static int acpi_thermal_critical(struct acpi_thermal *tz)
485 printk(KERN_EMERG 503 printk(KERN_EMERG
486 "Critical temperature reached (%ld C), shutting down.\n", 504 "Critical temperature reached (%ld C), shutting down.\n",
487 KELVIN_TO_CELSIUS(tz->temperature)); 505 KELVIN_TO_CELSIUS(tz->temperature));
488 acpi_bus_generate_event(tz->device, ACPI_THERMAL_NOTIFY_CRITICAL, 506 acpi_bus_generate_proc_event(tz->device, ACPI_THERMAL_NOTIFY_CRITICAL,
489 tz->trips.critical.flags.enabled); 507 tz->trips.critical.flags.enabled);
508 acpi_bus_generate_netlink_event(tz->device->pnp.device_class,
509 tz->device->dev.bus_id,
510 ACPI_THERMAL_NOTIFY_CRITICAL,
511 tz->trips.critical.flags.enabled);
490 512
491 orderly_poweroff(true); 513 orderly_poweroff(true);
492 514
@@ -504,8 +526,12 @@ static int acpi_thermal_hot(struct acpi_thermal *tz)
504 } else if (tz->trips.hot.flags.enabled) 526 } else if (tz->trips.hot.flags.enabled)
505 tz->trips.hot.flags.enabled = 0; 527 tz->trips.hot.flags.enabled = 0;
506 528
507 acpi_bus_generate_event(tz->device, ACPI_THERMAL_NOTIFY_HOT, 529 acpi_bus_generate_proc_event(tz->device, ACPI_THERMAL_NOTIFY_HOT,
508 tz->trips.hot.flags.enabled); 530 tz->trips.hot.flags.enabled);
531 acpi_bus_generate_netlink_event(tz->device->pnp.device_class,
532 tz->device->dev.bus_id,
533 ACPI_THERMAL_NOTIFY_HOT,
534 tz->trips.hot.flags.enabled);
509 535
510 /* TBD: Call user-mode "sleep(S4)" function */ 536 /* TBD: Call user-mode "sleep(S4)" function */
511 537
@@ -1067,9 +1093,9 @@ static int acpi_thermal_add_fs(struct acpi_device *device)
1067 entry->owner = THIS_MODULE; 1093 entry->owner = THIS_MODULE;
1068 } 1094 }
1069 1095
1070 /* 'trip_points' [R/W] */ 1096 /* 'trip_points' [R] */
1071 entry = create_proc_entry(ACPI_THERMAL_FILE_TRIP_POINTS, 1097 entry = create_proc_entry(ACPI_THERMAL_FILE_TRIP_POINTS,
1072 S_IFREG | S_IRUGO | S_IWUSR, 1098 S_IRUGO,
1073 acpi_device_dir(device)); 1099 acpi_device_dir(device));
1074 if (!entry) 1100 if (!entry)
1075 return -ENODEV; 1101 return -ENODEV;
@@ -1149,12 +1175,16 @@ static void acpi_thermal_notify(acpi_handle handle, u32 event, void *data)
1149 case ACPI_THERMAL_NOTIFY_THRESHOLDS: 1175 case ACPI_THERMAL_NOTIFY_THRESHOLDS:
1150 acpi_thermal_get_trip_points(tz); 1176 acpi_thermal_get_trip_points(tz);
1151 acpi_thermal_check(tz); 1177 acpi_thermal_check(tz);
1152 acpi_bus_generate_event(device, event, 0); 1178 acpi_bus_generate_proc_event(device, event, 0);
1179 acpi_bus_generate_netlink_event(device->pnp.device_class,
1180 device->dev.bus_id, event, 0);
1153 break; 1181 break;
1154 case ACPI_THERMAL_NOTIFY_DEVICES: 1182 case ACPI_THERMAL_NOTIFY_DEVICES:
1155 if (tz->flags.devices) 1183 if (tz->flags.devices)
1156 acpi_thermal_get_devices(tz); 1184 acpi_thermal_get_devices(tz);
1157 acpi_bus_generate_event(device, event, 0); 1185 acpi_bus_generate_proc_event(device, event, 0);
1186 acpi_bus_generate_netlink_event(device->pnp.device_class,
1187 device->dev.bus_id, event, 0);
1158 break; 1188 break;
1159 default: 1189 default:
1160 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 1190 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
@@ -1339,6 +1369,13 @@ static int thermal_act(struct dmi_system_id *d) {
1339 } 1369 }
1340 return 0; 1370 return 0;
1341} 1371}
1372static int thermal_nocrt(struct dmi_system_id *d) {
1373
1374 printk(KERN_NOTICE "ACPI: %s detected: "
1375 "disabling all critical thermal trip point actions.\n", d->ident);
1376 nocrt = 1;
1377 return 0;
1378}
1342static int thermal_tzp(struct dmi_system_id *d) { 1379static int thermal_tzp(struct dmi_system_id *d) {
1343 1380
1344 if (tzp == 0) { 1381 if (tzp == 0) {
@@ -1387,6 +1424,14 @@ static struct dmi_system_id thermal_dmi_table[] __initdata = {
1387 DMI_MATCH(DMI_BOARD_NAME, "i915GMm-HFS"), 1424 DMI_MATCH(DMI_BOARD_NAME, "i915GMm-HFS"),
1388 }, 1425 },
1389 }, 1426 },
1427 {
1428 .callback = thermal_nocrt,
1429 .ident = "Gigabyte GA-7ZX",
1430 .matches = {
1431 DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."),
1432 DMI_MATCH(DMI_BOARD_NAME, "7ZX"),
1433 },
1434 },
1390 {} 1435 {}
1391}; 1436};
1392#endif /* CONFIG_DMI */ 1437#endif /* CONFIG_DMI */
diff --git a/drivers/acpi/utilities/utglobal.c b/drivers/acpi/utilities/utglobal.c
index 1621655d6e2b..93ea8290b4f7 100644
--- a/drivers/acpi/utilities/utglobal.c
+++ b/drivers/acpi/utilities/utglobal.c
@@ -126,6 +126,7 @@ const char *acpi_format_exception(acpi_status status)
126 "Unknown exception code: 0x%8.8X", status)); 126 "Unknown exception code: 0x%8.8X", status));
127 127
128 exception = "UNKNOWN_STATUS_CODE"; 128 exception = "UNKNOWN_STATUS_CODE";
129 dump_stack();
129 } 130 }
130 131
131 return (ACPI_CAST_PTR(const char, exception)); 132 return (ACPI_CAST_PTR(const char, exception));
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index d98701941981..3c9bb85a6a93 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -31,7 +31,7 @@
31#include <linux/list.h> 31#include <linux/list.h>
32#include <linux/proc_fs.h> 32#include <linux/proc_fs.h>
33#include <linux/seq_file.h> 33#include <linux/seq_file.h>
34 34#include <linux/input.h>
35#include <linux/backlight.h> 35#include <linux/backlight.h>
36#include <linux/video_output.h> 36#include <linux/video_output.h>
37#include <asm/uaccess.h> 37#include <asm/uaccess.h>
@@ -138,6 +138,8 @@ struct acpi_video_bus {
138 struct semaphore sem; 138 struct semaphore sem;
139 struct list_head video_device_list; 139 struct list_head video_device_list;
140 struct proc_dir_entry *dir; 140 struct proc_dir_entry *dir;
141 struct input_dev *input;
142 char phys[32]; /* for input device */
141}; 143};
142 144
143struct acpi_video_device_flags { 145struct acpi_video_device_flags {
@@ -1764,6 +1766,9 @@ static void acpi_video_bus_notify(acpi_handle handle, u32 event, void *data)
1764{ 1766{
1765 struct acpi_video_bus *video = data; 1767 struct acpi_video_bus *video = data;
1766 struct acpi_device *device = NULL; 1768 struct acpi_device *device = NULL;
1769 struct input_dev *input;
1770 int keycode;
1771
1767 1772
1768 printk("video bus notify\n"); 1773 printk("video bus notify\n");
1769 1774
@@ -1771,11 +1776,13 @@ static void acpi_video_bus_notify(acpi_handle handle, u32 event, void *data)
1771 return; 1776 return;
1772 1777
1773 device = video->device; 1778 device = video->device;
1779 input = video->input;
1774 1780
1775 switch (event) { 1781 switch (event) {
1776 case ACPI_VIDEO_NOTIFY_SWITCH: /* User requested a switch, 1782 case ACPI_VIDEO_NOTIFY_SWITCH: /* User requested a switch,
1777 * most likely via hotkey. */ 1783 * most likely via hotkey. */
1778 acpi_bus_generate_event(device, event, 0); 1784 acpi_bus_generate_proc_event(device, event, 0);
1785 keycode = KEY_SWITCHVIDEOMODE;
1779 break; 1786 break;
1780 1787
1781 case ACPI_VIDEO_NOTIFY_PROBE: /* User plugged in or removed a video 1788 case ACPI_VIDEO_NOTIFY_PROBE: /* User plugged in or removed a video
@@ -1783,22 +1790,38 @@ static void acpi_video_bus_notify(acpi_handle handle, u32 event, void *data)
1783 acpi_video_device_enumerate(video); 1790 acpi_video_device_enumerate(video);
1784 acpi_video_device_rebind(video); 1791 acpi_video_device_rebind(video);
1785 acpi_video_switch_output(video, event); 1792 acpi_video_switch_output(video, event);
1786 acpi_bus_generate_event(device, event, 0); 1793 acpi_bus_generate_proc_event(device, event, 0);
1794 keycode = KEY_SWITCHVIDEOMODE;
1787 break; 1795 break;
1788 1796
1789 case ACPI_VIDEO_NOTIFY_CYCLE: /* Cycle Display output hotkey pressed. */ 1797 case ACPI_VIDEO_NOTIFY_CYCLE: /* Cycle Display output hotkey pressed. */
1798 acpi_video_switch_output(video, event);
1799 acpi_bus_generate_proc_event(device, event, 0);
1800 keycode = KEY_SWITCHVIDEOMODE;
1801 break;
1790 case ACPI_VIDEO_NOTIFY_NEXT_OUTPUT: /* Next Display output hotkey pressed. */ 1802 case ACPI_VIDEO_NOTIFY_NEXT_OUTPUT: /* Next Display output hotkey pressed. */
1803 acpi_video_switch_output(video, event);
1804 acpi_bus_generate_proc_event(device, event, 0);
1805 keycode = KEY_VIDEO_NEXT;
1806 break;
1791 case ACPI_VIDEO_NOTIFY_PREV_OUTPUT: /* previous Display output hotkey pressed. */ 1807 case ACPI_VIDEO_NOTIFY_PREV_OUTPUT: /* previous Display output hotkey pressed. */
1792 acpi_video_switch_output(video, event); 1808 acpi_video_switch_output(video, event);
1793 acpi_bus_generate_event(device, event, 0); 1809 acpi_bus_generate_proc_event(device, event, 0);
1810 keycode = KEY_VIDEO_PREV;
1794 break; 1811 break;
1795 1812
1796 default: 1813 default:
1814 keycode = KEY_UNKNOWN;
1797 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 1815 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
1798 "Unsupported event [0x%x]\n", event)); 1816 "Unsupported event [0x%x]\n", event));
1799 break; 1817 break;
1800 } 1818 }
1801 1819
1820 input_report_key(input, keycode, 1);
1821 input_sync(input);
1822 input_report_key(input, keycode, 0);
1823 input_sync(input);
1824
1802 return; 1825 return;
1803} 1826}
1804 1827
@@ -1806,38 +1829,65 @@ static void acpi_video_device_notify(acpi_handle handle, u32 event, void *data)
1806{ 1829{
1807 struct acpi_video_device *video_device = data; 1830 struct acpi_video_device *video_device = data;
1808 struct acpi_device *device = NULL; 1831 struct acpi_device *device = NULL;
1832 struct acpi_video_bus *bus;
1833 struct input_dev *input;
1834 int keycode;
1809 1835
1810 if (!video_device) 1836 if (!video_device)
1811 return; 1837 return;
1812 1838
1813 device = video_device->dev; 1839 device = video_device->dev;
1840 bus = video_device->video;
1841 input = bus->input;
1814 1842
1815 switch (event) { 1843 switch (event) {
1816 case ACPI_VIDEO_NOTIFY_SWITCH: /* change in status (cycle output device) */
1817 case ACPI_VIDEO_NOTIFY_PROBE: /* change in status (output device status) */
1818 acpi_bus_generate_event(device, event, 0);
1819 break;
1820 case ACPI_VIDEO_NOTIFY_CYCLE_BRIGHTNESS: /* Cycle brightness */ 1844 case ACPI_VIDEO_NOTIFY_CYCLE_BRIGHTNESS: /* Cycle brightness */
1845 acpi_video_switch_brightness(video_device, event);
1846 acpi_bus_generate_proc_event(device, event, 0);
1847 keycode = KEY_BRIGHTNESS_CYCLE;
1848 break;
1821 case ACPI_VIDEO_NOTIFY_INC_BRIGHTNESS: /* Increase brightness */ 1849 case ACPI_VIDEO_NOTIFY_INC_BRIGHTNESS: /* Increase brightness */
1850 acpi_video_switch_brightness(video_device, event);
1851 acpi_bus_generate_proc_event(device, event, 0);
1852 keycode = KEY_BRIGHTNESSUP;
1853 break;
1822 case ACPI_VIDEO_NOTIFY_DEC_BRIGHTNESS: /* Decrease brightness */ 1854 case ACPI_VIDEO_NOTIFY_DEC_BRIGHTNESS: /* Decrease brightness */
1855 acpi_video_switch_brightness(video_device, event);
1856 acpi_bus_generate_proc_event(device, event, 0);
1857 keycode = KEY_BRIGHTNESSDOWN;
1858 break;
1823 case ACPI_VIDEO_NOTIFY_ZERO_BRIGHTNESS: /* zero brightnesss */ 1859 case ACPI_VIDEO_NOTIFY_ZERO_BRIGHTNESS: /* zero brightnesss */
1860 acpi_video_switch_brightness(video_device, event);
1861 acpi_bus_generate_proc_event(device, event, 0);
1862 keycode = KEY_BRIGHTNESS_ZERO;
1863 break;
1824 case ACPI_VIDEO_NOTIFY_DISPLAY_OFF: /* display device off */ 1864 case ACPI_VIDEO_NOTIFY_DISPLAY_OFF: /* display device off */
1825 acpi_video_switch_brightness(video_device, event); 1865 acpi_video_switch_brightness(video_device, event);
1826 acpi_bus_generate_event(device, event, 0); 1866 acpi_bus_generate_proc_event(device, event, 0);
1867 keycode = KEY_DISPLAY_OFF;
1827 break; 1868 break;
1828 default: 1869 default:
1870 keycode = KEY_UNKNOWN;
1829 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 1871 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
1830 "Unsupported event [0x%x]\n", event)); 1872 "Unsupported event [0x%x]\n", event));
1831 break; 1873 break;
1832 } 1874 }
1875
1876 input_report_key(input, keycode, 1);
1877 input_sync(input);
1878 input_report_key(input, keycode, 0);
1879 input_sync(input);
1880
1833 return; 1881 return;
1834} 1882}
1835 1883
1884static int instance;
1836static int acpi_video_bus_add(struct acpi_device *device) 1885static int acpi_video_bus_add(struct acpi_device *device)
1837{ 1886{
1838 int result = 0; 1887 int result = 0;
1839 acpi_status status = 0; 1888 acpi_status status = 0;
1840 struct acpi_video_bus *video = NULL; 1889 struct acpi_video_bus *video = NULL;
1890 struct input_dev *input;
1841 1891
1842 1892
1843 if (!device) 1893 if (!device)
@@ -1847,6 +1897,13 @@ static int acpi_video_bus_add(struct acpi_device *device)
1847 if (!video) 1897 if (!video)
1848 return -ENOMEM; 1898 return -ENOMEM;
1849 1899
1900 /* a hack to fix the duplicate name "VID" problem on T61 */
1901 if (!strcmp(device->pnp.bus_id, "VID")) {
1902 if (instance)
1903 device->pnp.bus_id[3] = '0' + instance;
1904 instance ++;
1905 }
1906
1850 video->device = device; 1907 video->device = device;
1851 strcpy(acpi_device_name(device), ACPI_VIDEO_BUS_NAME); 1908 strcpy(acpi_device_name(device), ACPI_VIDEO_BUS_NAME);
1852 strcpy(acpi_device_class(device), ACPI_VIDEO_CLASS); 1909 strcpy(acpi_device_class(device), ACPI_VIDEO_CLASS);
@@ -1881,6 +1938,39 @@ static int acpi_video_bus_add(struct acpi_device *device)
1881 goto end; 1938 goto end;
1882 } 1939 }
1883 1940
1941
1942 video->input = input = input_allocate_device();
1943
1944 snprintf(video->phys, sizeof(video->phys),
1945 "%s/video/input0", acpi_device_hid(video->device));
1946
1947 input->name = acpi_device_name(video->device);
1948 input->phys = video->phys;
1949 input->id.bustype = BUS_HOST;
1950 input->id.product = 0x06;
1951 input->evbit[0] = BIT(EV_KEY);
1952 set_bit(KEY_SWITCHVIDEOMODE, input->keybit);
1953 set_bit(KEY_VIDEO_NEXT, input->keybit);
1954 set_bit(KEY_VIDEO_PREV, input->keybit);
1955 set_bit(KEY_BRIGHTNESS_CYCLE, input->keybit);
1956 set_bit(KEY_BRIGHTNESSUP, input->keybit);
1957 set_bit(KEY_BRIGHTNESSDOWN, input->keybit);
1958 set_bit(KEY_BRIGHTNESS_ZERO, input->keybit);
1959 set_bit(KEY_DISPLAY_OFF, input->keybit);
1960 set_bit(KEY_UNKNOWN, input->keybit);
1961 result = input_register_device(input);
1962 if (result) {
1963 acpi_remove_notify_handler(video->device->handle,
1964 ACPI_DEVICE_NOTIFY,
1965 acpi_video_bus_notify);
1966 acpi_video_bus_stop_devices(video);
1967 acpi_video_bus_put_devices(video);
1968 kfree(video->attached_array);
1969 acpi_video_bus_remove_fs(device);
1970 goto end;
1971 }
1972
1973
1884 printk(KERN_INFO PREFIX "%s [%s] (multi-head: %s rom: %s post: %s)\n", 1974 printk(KERN_INFO PREFIX "%s [%s] (multi-head: %s rom: %s post: %s)\n",
1885 ACPI_VIDEO_DEVICE_NAME, acpi_device_bid(device), 1975 ACPI_VIDEO_DEVICE_NAME, acpi_device_bid(device),
1886 video->flags.multihead ? "yes" : "no", 1976 video->flags.multihead ? "yes" : "no",
@@ -1914,6 +2004,7 @@ static int acpi_video_bus_remove(struct acpi_device *device, int type)
1914 acpi_video_bus_put_devices(video); 2004 acpi_video_bus_put_devices(video);
1915 acpi_video_bus_remove_fs(device); 2005 acpi_video_bus_remove_fs(device);
1916 2006
2007 input_unregister_device(video->input);
1917 kfree(video->attached_array); 2008 kfree(video->attached_array);
1918 kfree(video); 2009 kfree(video);
1919 2010
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index a78832ea81fa..071d274afaab 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -436,7 +436,7 @@ static const struct piix_map_db ich8_map_db = {
436 /* PM PS SM SS MAP */ 436 /* PM PS SM SS MAP */
437 { P0, P2, P1, P3 }, /* 00b (hardwired when in AHCI) */ 437 { P0, P2, P1, P3 }, /* 00b (hardwired when in AHCI) */
438 { RV, RV, RV, RV }, 438 { RV, RV, RV, RV },
439 { IDE, IDE, NA, NA }, /* 10b (IDE mode) */ 439 { P0, P2, IDE, IDE }, /* 10b (IDE mode) */
440 { RV, RV, RV, RV }, 440 { RV, RV, RV, RV },
441 }, 441 },
442}; 442};
@@ -901,6 +901,13 @@ static int piix_broken_suspend(void)
901 }, 901 },
902 }, 902 },
903 { 903 {
904 .ident = "TECRA M7",
905 .matches = {
906 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
907 DMI_MATCH(DMI_PRODUCT_NAME, "TECRA M7"),
908 },
909 },
910 {
904 .ident = "Satellite U205", 911 .ident = "Satellite U205",
905 .matches = { 912 .matches = {
906 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), 913 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 60e78bef469f..2ad4dda6d4a7 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1723,7 +1723,7 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
1723 tf.protocol = ATA_PROT_NODATA; 1723 tf.protocol = ATA_PROT_NODATA;
1724 tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; 1724 tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
1725 err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0); 1725 err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0);
1726 if (err_mask) { 1726 if (err_mask && id[2] != 0x738c) {
1727 rc = -EIO; 1727 rc = -EIO;
1728 reason = "SPINUP failed"; 1728 reason = "SPINUP failed";
1729 goto err_out; 1729 goto err_out;
@@ -3700,11 +3700,16 @@ int ata_dev_revalidate(struct ata_device *dev, unsigned int readid_flags)
3700 goto fail; 3700 goto fail;
3701 3701
3702 /* verify n_sectors hasn't changed */ 3702 /* verify n_sectors hasn't changed */
3703 if (dev->class == ATA_DEV_ATA && dev->n_sectors != n_sectors) { 3703 if (dev->class == ATA_DEV_ATA && n_sectors &&
3704 dev->n_sectors != n_sectors) {
3704 ata_dev_printk(dev, KERN_INFO, "n_sectors mismatch " 3705 ata_dev_printk(dev, KERN_INFO, "n_sectors mismatch "
3705 "%llu != %llu\n", 3706 "%llu != %llu\n",
3706 (unsigned long long)n_sectors, 3707 (unsigned long long)n_sectors,
3707 (unsigned long long)dev->n_sectors); 3708 (unsigned long long)dev->n_sectors);
3709
3710 /* restore original n_sectors */
3711 dev->n_sectors = n_sectors;
3712
3708 rc = -ENODEV; 3713 rc = -ENODEV;
3709 goto fail; 3714 goto fail;
3710 } 3715 }
diff --git a/drivers/ata/pata_artop.c b/drivers/ata/pata_artop.c
index ce589d96ca42..b5352ebecef9 100644
--- a/drivers/ata/pata_artop.c
+++ b/drivers/ata/pata_artop.c
@@ -2,6 +2,7 @@
2 * pata_artop.c - ARTOP ATA controller driver 2 * pata_artop.c - ARTOP ATA controller driver
3 * 3 *
4 * (C) 2006 Red Hat <alan@redhat.com> 4 * (C) 2006 Red Hat <alan@redhat.com>
5 * (C) 2007 Bartlomiej Zolnierkiewicz
5 * 6 *
6 * Based in part on drivers/ide/pci/aec62xx.c 7 * Based in part on drivers/ide/pci/aec62xx.c
7 * Copyright (C) 1999-2002 Andre Hedrick <andre@linux-ide.org> 8 * Copyright (C) 1999-2002 Andre Hedrick <andre@linux-ide.org>
@@ -28,7 +29,7 @@
28#include <linux/ata.h> 29#include <linux/ata.h>
29 30
30#define DRV_NAME "pata_artop" 31#define DRV_NAME "pata_artop"
31#define DRV_VERSION "0.4.3" 32#define DRV_VERSION "0.4.4"
32 33
33/* 34/*
34 * The ARTOP has 33 Mhz and "over clocked" timing tables. Until we 35 * The ARTOP has 33 Mhz and "over clocked" timing tables. Until we
@@ -430,7 +431,7 @@ static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id)
430 .udma_mask = ATA_UDMA4, 431 .udma_mask = ATA_UDMA4,
431 .port_ops = &artop6260_ops, 432 .port_ops = &artop6260_ops,
432 }; 433 };
433 static const struct ata_port_info info_626x_fast = { 434 static const struct ata_port_info info_628x = {
434 .sht = &artop_sht, 435 .sht = &artop_sht,
435 .flags = ATA_FLAG_SLAVE_POSS, 436 .flags = ATA_FLAG_SLAVE_POSS,
436 .pio_mask = 0x1f, /* pio0-4 */ 437 .pio_mask = 0x1f, /* pio0-4 */
@@ -438,6 +439,14 @@ static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id)
438 .udma_mask = ATA_UDMA5, 439 .udma_mask = ATA_UDMA5,
439 .port_ops = &artop6260_ops, 440 .port_ops = &artop6260_ops,
440 }; 441 };
442 static const struct ata_port_info info_628x_fast = {
443 .sht = &artop_sht,
444 .flags = ATA_FLAG_SLAVE_POSS,
445 .pio_mask = 0x1f, /* pio0-4 */
446 .mwdma_mask = 0x07, /* mwdma0-2 */
447 .udma_mask = ATA_UDMA6,
448 .port_ops = &artop6260_ops,
449 };
441 const struct ata_port_info *ppi[] = { NULL, NULL }; 450 const struct ata_port_info *ppi[] = { NULL, NULL };
442 451
443 if (!printed_version++) 452 if (!printed_version++)
@@ -455,13 +464,13 @@ static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id)
455 } 464 }
456 else if (id->driver_data == 1) /* 6260 */ 465 else if (id->driver_data == 1) /* 6260 */
457 ppi[0] = &info_626x; 466 ppi[0] = &info_626x;
458 else if (id->driver_data == 2) { /* 6260 or 6260 + fast */ 467 else if (id->driver_data == 2) { /* 6280 or 6280 + fast */
459 unsigned long io = pci_resource_start(pdev, 4); 468 unsigned long io = pci_resource_start(pdev, 4);
460 u8 reg; 469 u8 reg;
461 470
462 ppi[0] = &info_626x; 471 ppi[0] = &info_628x;
463 if (inb(io) & 0x10) 472 if (inb(io) & 0x10)
464 ppi[0] = &info_626x_fast; 473 ppi[0] = &info_628x_fast;
465 /* Mac systems come up with some registers not set as we 474 /* Mac systems come up with some registers not set as we
466 will need them */ 475 will need them */
467 476
diff --git a/drivers/ata/pata_hpt37x.c b/drivers/ata/pata_hpt37x.c
index 84d9c5568567..c5ddd937dbf2 100644
--- a/drivers/ata/pata_hpt37x.c
+++ b/drivers/ata/pata_hpt37x.c
@@ -8,12 +8,10 @@
8 * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org> 8 * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org>
9 * Portions Copyright (C) 2001 Sun Microsystems, Inc. 9 * Portions Copyright (C) 2001 Sun Microsystems, Inc.
10 * Portions Copyright (C) 2003 Red Hat Inc 10 * Portions Copyright (C) 2003 Red Hat Inc
11 * Portions Copyright (C) 2005-2006 MontaVista Software, Inc. 11 * Portions Copyright (C) 2005-2007 MontaVista Software, Inc.
12 * 12 *
13 * TODO 13 * TODO
14 * PLL mode 14 * Look into engine reset on timeout errors. Should not be required.
15 * Look into engine reset on timeout errors. Should not be
16 * required.
17 */ 15 */
18 16
19#include <linux/kernel.h> 17#include <linux/kernel.h>
@@ -26,7 +24,7 @@
26#include <linux/libata.h> 24#include <linux/libata.h>
27 25
28#define DRV_NAME "pata_hpt37x" 26#define DRV_NAME "pata_hpt37x"
29#define DRV_VERSION "0.6.7" 27#define DRV_VERSION "0.6.9"
30 28
31struct hpt_clock { 29struct hpt_clock {
32 u8 xfer_speed; 30 u8 xfer_speed;
@@ -1092,9 +1090,7 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
1092 int dpll, adjust; 1090 int dpll, adjust;
1093 1091
1094 /* Compute DPLL */ 1092 /* Compute DPLL */
1095 dpll = 2; 1093 dpll = (port->udma_mask & 0xC0) ? 3 : 2;
1096 if (port->udma_mask & 0xE0)
1097 dpll = 3;
1098 1094
1099 f_low = (MHz[clock_slot] * 48) / MHz[dpll]; 1095 f_low = (MHz[clock_slot] * 48) / MHz[dpll];
1100 f_high = f_low + 2; 1096 f_high = f_low + 2;
@@ -1116,7 +1112,7 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
1116 pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low | 0x100); 1112 pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low | 0x100);
1117 } 1113 }
1118 if (adjust == 8) { 1114 if (adjust == 8) {
1119 printk(KERN_WARNING "hpt37x: DPLL did not stabilize.\n"); 1115 printk(KERN_ERR "pata_hpt37x: DPLL did not stabilize!\n");
1120 return -ENODEV; 1116 return -ENODEV;
1121 } 1117 }
1122 if (dpll == 3) 1118 if (dpll == 3)
@@ -1124,7 +1120,8 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
1124 else 1120 else
1125 private_data = (void *)hpt37x_timings_50; 1121 private_data = (void *)hpt37x_timings_50;
1126 1122
1127 printk(KERN_INFO "hpt37x: Bus clock %dMHz, using DPLL.\n", MHz[dpll]); 1123 printk(KERN_INFO "pata_hpt37x: bus clock %dMHz, using %dMHz DPLL.\n",
1124 MHz[clock_slot], MHz[dpll]);
1128 } else { 1125 } else {
1129 private_data = (void *)chip_table->clocks[clock_slot]; 1126 private_data = (void *)chip_table->clocks[clock_slot];
1130 /* 1127 /*
@@ -1137,7 +1134,8 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
1137 port = &info_hpt370_33; 1134 port = &info_hpt370_33;
1138 if (clock_slot < 2 && port == &info_hpt370a) 1135 if (clock_slot < 2 && port == &info_hpt370a)
1139 port = &info_hpt370a_33; 1136 port = &info_hpt370a_33;
1140 printk(KERN_INFO "hpt37x: %s: Bus clock %dMHz.\n", chip_table->name, MHz[clock_slot]); 1137 printk(KERN_INFO "pata_hpt37x: %s using %dMHz bus clock.\n",
1138 chip_table->name, MHz[clock_slot]);
1141 } 1139 }
1142 1140
1143 /* Now kick off ATA set up */ 1141 /* Now kick off ATA set up */
diff --git a/drivers/ata/pata_hpt3x2n.c b/drivers/ata/pata_hpt3x2n.c
index aa29cde09f8b..f8f234bfc8ce 100644
--- a/drivers/ata/pata_hpt3x2n.c
+++ b/drivers/ata/pata_hpt3x2n.c
@@ -8,7 +8,7 @@
8 * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org> 8 * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org>
9 * Portions Copyright (C) 2001 Sun Microsystems, Inc. 9 * Portions Copyright (C) 2001 Sun Microsystems, Inc.
10 * Portions Copyright (C) 2003 Red Hat Inc 10 * Portions Copyright (C) 2003 Red Hat Inc
11 * Portions Copyright (C) 2005-2006 MontaVista Software, Inc. 11 * Portions Copyright (C) 2005-2007 MontaVista Software, Inc.
12 * 12 *
13 * 13 *
14 * TODO 14 * TODO
@@ -25,7 +25,7 @@
25#include <linux/libata.h> 25#include <linux/libata.h>
26 26
27#define DRV_NAME "pata_hpt3x2n" 27#define DRV_NAME "pata_hpt3x2n"
28#define DRV_VERSION "0.3.3" 28#define DRV_VERSION "0.3.4"
29 29
30enum { 30enum {
31 HPT_PCI_FAST = (1 << 31), 31 HPT_PCI_FAST = (1 << 31),
@@ -579,10 +579,12 @@ static int hpt3x2n_init_one(struct pci_dev *dev, const struct pci_device_id *id)
579 pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low); 579 pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low);
580 } 580 }
581 if (adjust == 8) { 581 if (adjust == 8) {
582 printk(KERN_WARNING "hpt3x2n: DPLL did not stabilize.\n"); 582 printk(KERN_ERR "pata_hpt3x2n: DPLL did not stabilize!\n");
583 return -ENODEV; 583 return -ENODEV;
584 } 584 }
585 585
586 printk(KERN_INFO "pata_hpt37x: bus clock %dMHz, using 66MHz DPLL.\n",
587 pci_mhz);
586 /* Set our private data up. We only need a few flags so we use 588 /* Set our private data up. We only need a few flags so we use
587 it directly */ 589 it directly */
588 port.private_data = NULL; 590 port.private_data = NULL;
diff --git a/drivers/ata/pata_isapnp.c b/drivers/ata/pata_isapnp.c
index 5525518204e6..91a396fa5b20 100644
--- a/drivers/ata/pata_isapnp.c
+++ b/drivers/ata/pata_isapnp.c
@@ -139,6 +139,8 @@ static struct pnp_device_id isapnp_devices[] = {
139 {.id = ""} 139 {.id = ""}
140}; 140};
141 141
142MODULE_DEVICE_TABLE(pnp, isapnp_devices);
143
142static struct pnp_driver isapnp_driver = { 144static struct pnp_driver isapnp_driver = {
143 .name = DRV_NAME, 145 .name = DRV_NAME,
144 .id_table = isapnp_devices, 146 .id_table = isapnp_devices,
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c
index 430673be1df7..7225124d96c2 100644
--- a/drivers/ata/pata_it821x.c
+++ b/drivers/ata/pata_it821x.c
@@ -587,7 +587,7 @@ static int it821x_port_start(struct ata_port *ap)
587 itdev->want[1][1] = ATA_ANY; 587 itdev->want[1][1] = ATA_ANY;
588 itdev->last_device = -1; 588 itdev->last_device = -1;
589 589
590 if (pdev->revision == 0x11) { 590 if (pdev->revision == 0x10) {
591 itdev->timing10 = 1; 591 itdev->timing10 = 1;
592 /* Need to disable ATAPI DMA for this case */ 592 /* Need to disable ATAPI DMA for this case */
593 if (!itdev->smart) 593 if (!itdev->smart)
diff --git a/drivers/ata/pata_pdc2027x.c b/drivers/ata/pata_pdc2027x.c
index 69a5aa4949f5..e3245b36269a 100644
--- a/drivers/ata/pata_pdc2027x.c
+++ b/drivers/ata/pata_pdc2027x.c
@@ -563,13 +563,13 @@ static long pdc_read_counter(struct ata_host *host)
563 u32 bccrl, bccrh, bccrlv, bccrhv; 563 u32 bccrl, bccrh, bccrlv, bccrhv;
564 564
565retry: 565retry:
566 bccrl = readl(mmio_base + PDC_BYTE_COUNT) & 0xffff; 566 bccrl = readl(mmio_base + PDC_BYTE_COUNT) & 0x7fff;
567 bccrh = readl(mmio_base + PDC_BYTE_COUNT + 0x100) & 0xffff; 567 bccrh = readl(mmio_base + PDC_BYTE_COUNT + 0x100) & 0x7fff;
568 rmb(); 568 rmb();
569 569
570 /* Read the counter values again for verification */ 570 /* Read the counter values again for verification */
571 bccrlv = readl(mmio_base + PDC_BYTE_COUNT) & 0xffff; 571 bccrlv = readl(mmio_base + PDC_BYTE_COUNT) & 0x7fff;
572 bccrhv = readl(mmio_base + PDC_BYTE_COUNT + 0x100) & 0xffff; 572 bccrhv = readl(mmio_base + PDC_BYTE_COUNT + 0x100) & 0x7fff;
573 rmb(); 573 rmb();
574 574
575 counter = (bccrh << 15) | bccrl; 575 counter = (bccrh << 15) | bccrl;
@@ -692,16 +692,16 @@ static long pdc_detect_pll_input_clock(struct ata_host *host)
692 struct timeval start_time, end_time; 692 struct timeval start_time, end_time;
693 long pll_clock, usec_elapsed; 693 long pll_clock, usec_elapsed;
694 694
695 /* Read current counter value */
696 start_count = pdc_read_counter(host);
697 do_gettimeofday(&start_time);
698
699 /* Start the test mode */ 695 /* Start the test mode */
700 scr = readl(mmio_base + PDC_SYS_CTL); 696 scr = readl(mmio_base + PDC_SYS_CTL);
701 PDPRINTK("scr[%X]\n", scr); 697 PDPRINTK("scr[%X]\n", scr);
702 writel(scr | (0x01 << 14), mmio_base + PDC_SYS_CTL); 698 writel(scr | (0x01 << 14), mmio_base + PDC_SYS_CTL);
703 readl(mmio_base + PDC_SYS_CTL); /* flush */ 699 readl(mmio_base + PDC_SYS_CTL); /* flush */
704 700
701 /* Read current counter value */
702 start_count = pdc_read_counter(host);
703 do_gettimeofday(&start_time);
704
705 /* Let the counter run for 100 ms. */ 705 /* Let the counter run for 100 ms. */
706 mdelay(100); 706 mdelay(100);
707 707
@@ -719,7 +719,7 @@ static long pdc_detect_pll_input_clock(struct ata_host *host)
719 usec_elapsed = (end_time.tv_sec - start_time.tv_sec) * 1000000 + 719 usec_elapsed = (end_time.tv_sec - start_time.tv_sec) * 1000000 +
720 (end_time.tv_usec - start_time.tv_usec); 720 (end_time.tv_usec - start_time.tv_usec);
721 721
722 pll_clock = (start_count - end_count) / 100 * 722 pll_clock = ((start_count - end_count) & 0x3fffffff) / 100 *
723 (100000000 / usec_elapsed); 723 (100000000 / usec_elapsed);
724 724
725 PDPRINTK("start[%ld] end[%ld] \n", start_count, end_count); 725 PDPRINTK("start[%ld] end[%ld] \n", start_count, end_count);
diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c
index 66bd0e83ac07..2bd7645f1a88 100644
--- a/drivers/ata/pata_sis.c
+++ b/drivers/ata/pata_sis.c
@@ -54,6 +54,7 @@ struct sis_laptop {
54static const struct sis_laptop sis_laptop[] = { 54static const struct sis_laptop sis_laptop[] = {
55 /* devid, subvendor, subdev */ 55 /* devid, subvendor, subdev */
56 { 0x5513, 0x1043, 0x1107 }, /* ASUS A6K */ 56 { 0x5513, 0x1043, 0x1107 }, /* ASUS A6K */
57 { 0x5513, 0x1734, 0x105F }, /* FSC Amilo A1630 */
57 /* end marker */ 58 /* end marker */
58 { 0, } 59 { 0, }
59}; 60};
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c
index f645fe22cd1e..ea18e33f50ef 100644
--- a/drivers/ata/pata_via.c
+++ b/drivers/ata/pata_via.c
@@ -63,7 +63,7 @@
63#include <linux/dmi.h> 63#include <linux/dmi.h>
64 64
65#define DRV_NAME "pata_via" 65#define DRV_NAME "pata_via"
66#define DRV_VERSION "0.3.1" 66#define DRV_VERSION "0.3.2"
67 67
68/* 68/*
69 * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx 69 * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx
@@ -144,6 +144,9 @@ static int via_cable_override(struct pci_dev *pdev)
144 /* Systems by DMI */ 144 /* Systems by DMI */
145 if (dmi_check_system(cable_dmi_table)) 145 if (dmi_check_system(cable_dmi_table))
146 return 1; 146 return 1;
147 /* Arima W730-K8/Targa Visionary 811/... */
148 if (pdev->subsystem_vendor == 0x161F && pdev->subsystem_device == 0x2032)
149 return 1;
147 return 0; 150 return 0;
148} 151}
149 152
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 8ec520885b95..3acf65e75eb2 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -621,6 +621,9 @@ static const struct pci_device_id mv_pci_tbl[] = {
621 { PCI_VDEVICE(MARVELL, 0x5041), chip_504x }, 621 { PCI_VDEVICE(MARVELL, 0x5041), chip_504x },
622 { PCI_VDEVICE(MARVELL, 0x5080), chip_5080 }, 622 { PCI_VDEVICE(MARVELL, 0x5080), chip_5080 },
623 { PCI_VDEVICE(MARVELL, 0x5081), chip_508x }, 623 { PCI_VDEVICE(MARVELL, 0x5081), chip_508x },
624 /* RocketRAID 1740/174x have different identifiers */
625 { PCI_VDEVICE(TTI, 0x1740), chip_508x },
626 { PCI_VDEVICE(TTI, 0x1742), chip_508x },
624 627
625 { PCI_VDEVICE(MARVELL, 0x6040), chip_604x }, 628 { PCI_VDEVICE(MARVELL, 0x6040), chip_604x },
626 { PCI_VDEVICE(MARVELL, 0x6041), chip_604x }, 629 { PCI_VDEVICE(MARVELL, 0x6041), chip_604x },
diff --git a/drivers/atm/Kconfig b/drivers/atm/Kconfig
index bed9f58c2d5a..b554edac1ced 100644
--- a/drivers/atm/Kconfig
+++ b/drivers/atm/Kconfig
@@ -6,6 +6,11 @@ menuconfig ATM_DRIVERS
6 bool "ATM drivers" 6 bool "ATM drivers"
7 depends on NETDEVICES && ATM 7 depends on NETDEVICES && ATM
8 default y 8 default y
9 ---help---
10 Say Y here to get to see options for Asynchronous Transfer Mode
11 device drivers. This option alone does not add any kernel code.
12
13 If you say N, all options in this submenu will be skipped and disabled.
9 14
10if ATM_DRIVERS && NETDEVICES && ATM 15if ATM_DRIVERS && NETDEVICES && ATM
11 16
diff --git a/drivers/auxdisplay/Kconfig b/drivers/auxdisplay/Kconfig
index de2fcce10ba5..043353bd0600 100644
--- a/drivers/auxdisplay/Kconfig
+++ b/drivers/auxdisplay/Kconfig
@@ -8,6 +8,11 @@
8menuconfig AUXDISPLAY 8menuconfig AUXDISPLAY
9 depends on PARPORT 9 depends on PARPORT
10 bool "Auxiliary Display support" 10 bool "Auxiliary Display support"
11 ---help---
12 Say Y here to get to see options for auxiliary display drivers.
13 This option alone does not add any kernel code.
14
15 If you say N, all options in this submenu will be skipped and disabled.
11 16
12if AUXDISPLAY && PARPORT 17if AUXDISPLAY && PARPORT
13 18
diff --git a/drivers/auxdisplay/cfag12864b.c b/drivers/auxdisplay/cfag12864b.c
index cb44cb4f6a47..80bb06105387 100644
--- a/drivers/auxdisplay/cfag12864b.c
+++ b/drivers/auxdisplay/cfag12864b.c
@@ -355,7 +355,7 @@ static int __init cfag12864b_init(void)
355 355
356 cfag12864b_cache = kmalloc(sizeof(unsigned char) * 356 cfag12864b_cache = kmalloc(sizeof(unsigned char) *
357 CFAG12864B_SIZE, GFP_KERNEL); 357 CFAG12864B_SIZE, GFP_KERNEL);
358 if (cfag12864b_buffer == NULL) { 358 if (cfag12864b_cache == NULL) {
359 printk(KERN_ERR CFAG12864B_NAME ": ERROR: " 359 printk(KERN_ERR CFAG12864B_NAME ": ERROR: "
360 "can't alloc cache buffer (%i bytes)\n", 360 "can't alloc cache buffer (%i bytes)\n",
361 CFAG12864B_SIZE); 361 CFAG12864B_SIZE);
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index a4a311992408..4245b7f80a49 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -6,6 +6,12 @@ menuconfig BLK_DEV
6 bool "Block devices" 6 bool "Block devices"
7 depends on BLOCK 7 depends on BLOCK
8 default y 8 default y
9 ---help---
10 Say Y here to get to see options for various different block device
11 drivers. This option alone does not add any kernel code.
12
13 If you say N, all options in this submenu will be skipped and disabled;
14 only do this if you know what you are doing.
9 15
10if BLK_DEV 16if BLK_DEV
11 17
@@ -62,6 +68,7 @@ config AMIGA_Z2RAM
62config BLK_DEV_XD 68config BLK_DEV_XD
63 tristate "XT hard disk support" 69 tristate "XT hard disk support"
64 depends on ISA && ISA_DMA_API 70 depends on ISA && ISA_DMA_API
71 select CHECK_SIGNATURE
65 help 72 help
66 Very old 8 bit hard disk controllers used in the IBM XT computer 73 Very old 8 bit hard disk controllers used in the IBM XT computer
67 will be supported if you say Y here. 74 will be supported if you say Y here.
diff --git a/drivers/block/lguest_blk.c b/drivers/block/lguest_blk.c
index 93e3c4001bf5..160cf14431ac 100644
--- a/drivers/block/lguest_blk.c
+++ b/drivers/block/lguest_blk.c
@@ -308,9 +308,12 @@ static int lguestblk_probe(struct lguest_device *lgdev)
308 } 308 }
309 309
310 /* This allocates a "struct gendisk" where we pack all the information 310 /* This allocates a "struct gendisk" where we pack all the information
311 * about the disk which the rest of Linux sees. We ask for one minor 311 * about the disk which the rest of Linux sees. The argument is the
312 * number; I do wonder if we should be asking for more. */ 312 * number of minor devices desired: we need one minor for the main
313 bd->disk = alloc_disk(1); 313 * disk, and one for each partition. Of course, we can't possibly know
314 * how many partitions are on the disk (add_disk does that).
315 */
316 bd->disk = alloc_disk(16);
314 if (!bd->disk) { 317 if (!bd->disk) {
315 err = -ENOMEM; 318 err = -ENOMEM;
316 goto out_unregister_blkdev; 319 goto out_unregister_blkdev;
diff --git a/drivers/block/sunvdc.c b/drivers/block/sunvdc.c
index 4dff49256ac2..317a790c153b 100644
--- a/drivers/block/sunvdc.c
+++ b/drivers/block/sunvdc.c
@@ -417,7 +417,7 @@ static int __send_request(struct request *req)
417 desc->req_id = port->req_id; 417 desc->req_id = port->req_id;
418 desc->operation = op; 418 desc->operation = op;
419 if (port->vdisk_type == VD_DISK_TYPE_DISK) { 419 if (port->vdisk_type == VD_DISK_TYPE_DISK) {
420 desc->slice = 2; 420 desc->slice = 0xff;
421 } else { 421 } else {
422 desc->slice = 0; 422 desc->slice = 0;
423 } 423 }
diff --git a/drivers/char/agp/amd-k7-agp.c b/drivers/char/agp/amd-k7-agp.c
index df0ddf14b85c..f60bca70d1fb 100644
--- a/drivers/char/agp/amd-k7-agp.c
+++ b/drivers/char/agp/amd-k7-agp.c
@@ -223,6 +223,8 @@ static int amd_irongate_configure(void)
223 pci_read_config_dword(agp_bridge->dev, AMD_MMBASE, &temp); 223 pci_read_config_dword(agp_bridge->dev, AMD_MMBASE, &temp);
224 temp = (temp & PCI_BASE_ADDRESS_MEM_MASK); 224 temp = (temp & PCI_BASE_ADDRESS_MEM_MASK);
225 amd_irongate_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); 225 amd_irongate_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096);
226 if (!amd_irongate_private.registers)
227 return -ENOMEM;
226 228
227 /* Write out the address of the gatt table */ 229 /* Write out the address of the gatt table */
228 writel(agp_bridge->gatt_bus_addr, amd_irongate_private.registers+AMD_ATTBASE); 230 writel(agp_bridge->gatt_bus_addr, amd_irongate_private.registers+AMD_ATTBASE);
diff --git a/drivers/char/agp/ati-agp.c b/drivers/char/agp/ati-agp.c
index da7513d7b4e7..2d46b713c8f2 100644
--- a/drivers/char/agp/ati-agp.c
+++ b/drivers/char/agp/ati-agp.c
@@ -213,6 +213,9 @@ static int ati_configure(void)
213 temp = (temp & 0xfffff000); 213 temp = (temp & 0xfffff000);
214 ati_generic_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); 214 ati_generic_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096);
215 215
216 if (!ati_generic_private.registers)
217 return -ENOMEM;
218
216 if (is_r200()) 219 if (is_r200())
217 pci_write_config_dword(agp_bridge->dev, ATI_RS100_IG_AGPMODE, 0x20000); 220 pci_write_config_dword(agp_bridge->dev, ATI_RS100_IG_AGPMODE, 0x20000);
218 else 221 else
diff --git a/drivers/char/agp/efficeon-agp.c b/drivers/char/agp/efficeon-agp.c
index df8da7262853..d78cd09186aa 100644
--- a/drivers/char/agp/efficeon-agp.c
+++ b/drivers/char/agp/efficeon-agp.c
@@ -375,6 +375,7 @@ static int __devinit agp_efficeon_probe(struct pci_dev *pdev,
375 if (!r->start && r->end) { 375 if (!r->start && r->end) {
376 if (pci_assign_resource(pdev, 0)) { 376 if (pci_assign_resource(pdev, 0)) {
377 printk(KERN_ERR PFX "could not assign resource 0\n"); 377 printk(KERN_ERR PFX "could not assign resource 0\n");
378 agp_put_bridge(bridge);
378 return -ENODEV; 379 return -ENODEV;
379 } 380 }
380 } 381 }
@@ -386,6 +387,7 @@ static int __devinit agp_efficeon_probe(struct pci_dev *pdev,
386 */ 387 */
387 if (pci_enable_device(pdev)) { 388 if (pci_enable_device(pdev)) {
388 printk(KERN_ERR PFX "Unable to Enable PCI device\n"); 389 printk(KERN_ERR PFX "Unable to Enable PCI device\n");
390 agp_put_bridge(bridge);
389 return -ENODEV; 391 return -ENODEV;
390 } 392 }
391 393
diff --git a/drivers/char/agp/hp-agp.c b/drivers/char/agp/hp-agp.c
index bcdb149c8179..313a133a1172 100644
--- a/drivers/char/agp/hp-agp.c
+++ b/drivers/char/agp/hp-agp.c
@@ -221,6 +221,7 @@ hp_zx1_lba_init (u64 hpa)
221 if (cap != PCI_CAP_ID_AGP) { 221 if (cap != PCI_CAP_ID_AGP) {
222 printk(KERN_ERR PFX "Invalid capability ID 0x%02x at 0x%x\n", 222 printk(KERN_ERR PFX "Invalid capability ID 0x%02x at 0x%x\n",
223 cap, hp->lba_cap_offset); 223 cap, hp->lba_cap_offset);
224 iounmap(hp->lba_regs);
224 return -ENODEV; 225 return -ENODEV;
225 } 226 }
226 227
diff --git a/drivers/char/agp/i460-agp.c b/drivers/char/agp/i460-agp.c
index 53354bf83af7..75d2aca6353d 100644
--- a/drivers/char/agp/i460-agp.c
+++ b/drivers/char/agp/i460-agp.c
@@ -249,6 +249,10 @@ static int i460_create_gatt_table (struct agp_bridge_data *bridge)
249 num_entries = A_SIZE_8(temp)->num_entries; 249 num_entries = A_SIZE_8(temp)->num_entries;
250 250
251 i460.gatt = ioremap(INTEL_I460_ATTBASE, PAGE_SIZE << page_order); 251 i460.gatt = ioremap(INTEL_I460_ATTBASE, PAGE_SIZE << page_order);
252 if (!i460.gatt) {
253 printk(KERN_ERR PFX "ioremap failed\n");
254 return -ENOMEM;
255 }
252 256
253 /* These are no good, the should be removed from the agp_bridge strucure... */ 257 /* These are no good, the should be removed from the agp_bridge strucure... */
254 agp_bridge->gatt_table_real = NULL; 258 agp_bridge->gatt_table_real = NULL;
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 294cdbf4d44d..2c9ca2c64628 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -930,8 +930,10 @@ static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge)
930 temp &= 0xfff80000; 930 temp &= 0xfff80000;
931 931
932 intel_private.registers = ioremap(temp,128 * 4096); 932 intel_private.registers = ioremap(temp,128 * 4096);
933 if (!intel_private.registers) 933 if (!intel_private.registers) {
934 iounmap(intel_private.gtt);
934 return -ENOMEM; 935 return -ENOMEM;
936 }
935 937
936 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; 938 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000;
937 global_cache_flush(); /* FIXME: ? */ 939 global_cache_flush(); /* FIXME: ? */
@@ -985,13 +987,15 @@ static int intel_i965_create_gatt_table(struct agp_bridge_data *bridge)
985 temp &= 0xfff00000; 987 temp &= 0xfff00000;
986 intel_private.gtt = ioremap((temp + (512 * 1024)) , 512 * 1024); 988 intel_private.gtt = ioremap((temp + (512 * 1024)) , 512 * 1024);
987 989
988 if (!intel_private.gtt) 990 if (!intel_private.gtt)
989 return -ENOMEM; 991 return -ENOMEM;
990 992
991 993
992 intel_private.registers = ioremap(temp,128 * 4096); 994 intel_private.registers = ioremap(temp,128 * 4096);
993 if (!intel_private.registers) 995 if (!intel_private.registers) {
994 return -ENOMEM; 996 iounmap(intel_private.gtt);
997 return -ENOMEM;
998 }
995 999
996 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; 1000 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000;
997 global_cache_flush(); /* FIXME: ? */ 1001 global_cache_flush(); /* FIXME: ? */
diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c
index 6cd7373dcdf4..225ed2a53d45 100644
--- a/drivers/char/agp/nvidia-agp.c
+++ b/drivers/char/agp/nvidia-agp.c
@@ -157,6 +157,9 @@ static int nvidia_configure(void)
157 nvidia_private.aperture = 157 nvidia_private.aperture =
158 (volatile u32 __iomem *) ioremap(apbase, 33 * PAGE_SIZE); 158 (volatile u32 __iomem *) ioremap(apbase, 33 * PAGE_SIZE);
159 159
160 if (!nvidia_private.aperture)
161 return -ENOMEM;
162
160 return 0; 163 return 0;
161} 164}
162 165
diff --git a/drivers/char/agp/via-agp.c b/drivers/char/agp/via-agp.c
index 9aaf401a8975..0ecc54d327bc 100644
--- a/drivers/char/agp/via-agp.c
+++ b/drivers/char/agp/via-agp.c
@@ -399,6 +399,11 @@ static struct agp_device_ids via_agp_device_ids[] __devinitdata =
399 .device_id = PCI_DEVICE_ID_VIA_P4M890, 399 .device_id = PCI_DEVICE_ID_VIA_P4M890,
400 .chipset_name = "P4M890", 400 .chipset_name = "P4M890",
401 }, 401 },
402 /* P4M900 */
403 {
404 .device_id = PCI_DEVICE_ID_VIA_VT3364,
405 .chipset_name = "P4M900",
406 },
402 { }, /* dummy final entry, always present */ 407 { }, /* dummy final entry, always present */
403}; 408};
404 409
diff --git a/drivers/char/drm/drm_bufs.c b/drivers/char/drm/drm_bufs.c
index 923174c54a1c..c115b39b8517 100644
--- a/drivers/char/drm/drm_bufs.c
+++ b/drivers/char/drm/drm_bufs.c
@@ -177,8 +177,14 @@ static int drm_addmap_core(struct drm_device * dev, unsigned int offset,
177 MTRR_TYPE_WRCOMB, 1); 177 MTRR_TYPE_WRCOMB, 1);
178 } 178 }
179 } 179 }
180 if (map->type == _DRM_REGISTERS) 180 if (map->type == _DRM_REGISTERS) {
181 map->handle = ioremap(map->offset, map->size); 181 map->handle = ioremap(map->offset, map->size);
182 if (!map->handle) {
183 drm_free(map, sizeof(*map), DRM_MEM_MAPS);
184 return -ENOMEM;
185 }
186 }
187
182 break; 188 break;
183 case _DRM_SHM: 189 case _DRM_SHM:
184 list = drm_find_matching_map(dev, map); 190 list = drm_find_matching_map(dev, map);
@@ -479,11 +485,6 @@ int drm_rmmap_ioctl(struct inode *inode, struct file *filp,
479 return -EINVAL; 485 return -EINVAL;
480 } 486 }
481 487
482 if (!map) {
483 mutex_unlock(&dev->struct_mutex);
484 return -EINVAL;
485 }
486
487 /* Register and framebuffer maps are permanent */ 488 /* Register and framebuffer maps are permanent */
488 if ((map->type == _DRM_REGISTERS) || (map->type == _DRM_FRAME_BUFFER)) { 489 if ((map->type == _DRM_REGISTERS) || (map->type == _DRM_FRAME_BUFFER)) {
489 mutex_unlock(&dev->struct_mutex); 490 mutex_unlock(&dev->struct_mutex);
diff --git a/drivers/char/drm/via_dmablit.c b/drivers/char/drm/via_dmablit.c
index 832de1d9ba7e..3dd1ed3d1bf5 100644
--- a/drivers/char/drm/via_dmablit.c
+++ b/drivers/char/drm/via_dmablit.c
@@ -560,7 +560,7 @@ via_init_dmablit(struct drm_device *dev)
560 blitq->head = 0; 560 blitq->head = 0;
561 blitq->cur = 0; 561 blitq->cur = 0;
562 blitq->serviced = 0; 562 blitq->serviced = 0;
563 blitq->num_free = VIA_NUM_BLIT_SLOTS; 563 blitq->num_free = VIA_NUM_BLIT_SLOTS - 1;
564 blitq->num_outstanding = 0; 564 blitq->num_outstanding = 0;
565 blitq->is_active = 0; 565 blitq->is_active = 0;
566 blitq->aborting = 0; 566 blitq->aborting = 0;
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index d57083a9e4e0..f2e5cb1bedf3 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -2292,7 +2292,7 @@ static int __devinit ipmi_of_probe(struct of_device *dev,
2292 info->irq = irq_of_parse_and_map(dev->node, 0); 2292 info->irq = irq_of_parse_and_map(dev->node, 0);
2293 info->dev = &dev->dev; 2293 info->dev = &dev->dev;
2294 2294
2295 dev_dbg(&dev->dev, "addr 0x%lx regsize %ld spacing %ld irq %x\n", 2295 dev_dbg(&dev->dev, "addr 0x%lx regsize %d spacing %d irq %x\n",
2296 info->io.addr_data, info->io.regsize, info->io.regspacing, 2296 info->io.addr_data, info->io.regsize, info->io.regspacing,
2297 info->irq); 2297 info->irq);
2298 2298
diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c
index 2ce0af1bd588..d95f316afb5a 100644
--- a/drivers/char/keyboard.c
+++ b/drivers/char/keyboard.c
@@ -1022,10 +1022,6 @@ static const unsigned short x86_keycodes[256] =
1022 308,310,313,314,315,317,318,319,320,357,322,323,324,325,276,330, 1022 308,310,313,314,315,317,318,319,320,357,322,323,324,325,276,330,
1023 332,340,365,342,343,344,345,346,356,270,341,368,369,370,371,372 }; 1023 332,340,365,342,343,344,345,346,356,270,341,368,369,370,371,372 };
1024 1024
1025#ifdef CONFIG_MAC_EMUMOUSEBTN
1026extern int mac_hid_mouse_emulate_buttons(int, int, int);
1027#endif /* CONFIG_MAC_EMUMOUSEBTN */
1028
1029#ifdef CONFIG_SPARC 1025#ifdef CONFIG_SPARC
1030static int sparc_l1_a_state = 0; 1026static int sparc_l1_a_state = 0;
1031extern void sun_do_break(void); 1027extern void sun_do_break(void);
diff --git a/drivers/char/lcd.c b/drivers/char/lcd.c
index 1f0962616ee5..4fe9206f84de 100644
--- a/drivers/char/lcd.c
+++ b/drivers/char/lcd.c
@@ -25,7 +25,6 @@
25#include <asm/io.h> 25#include <asm/io.h>
26#include <asm/uaccess.h> 26#include <asm/uaccess.h>
27#include <asm/system.h> 27#include <asm/system.h>
28#include <linux/delay.h>
29 28
30#include "lcd.h" 29#include "lcd.h"
31 30
diff --git a/drivers/char/sonypi.c b/drivers/char/sonypi.c
index aeec67e27264..859858561ab6 100644
--- a/drivers/char/sonypi.c
+++ b/drivers/char/sonypi.c
@@ -875,7 +875,7 @@ found:
875 875
876#ifdef CONFIG_ACPI 876#ifdef CONFIG_ACPI
877 if (sonypi_acpi_device) 877 if (sonypi_acpi_device)
878 acpi_bus_generate_event(sonypi_acpi_device, 1, event); 878 acpi_bus_generate_proc_event(sonypi_acpi_device, 1, event);
879#endif 879#endif
880 880
881 kfifo_put(sonypi_device.fifo, (unsigned char *)&event, sizeof(event)); 881 kfifo_put(sonypi_device.fifo, (unsigned char *)&event, sizeof(event));
diff --git a/drivers/char/synclink_gt.c b/drivers/char/synclink_gt.c
index bbb7f1292665..2f97d2f8f916 100644
--- a/drivers/char/synclink_gt.c
+++ b/drivers/char/synclink_gt.c
@@ -1565,6 +1565,9 @@ static int hdlcdev_open(struct net_device *dev)
1565 int rc; 1565 int rc;
1566 unsigned long flags; 1566 unsigned long flags;
1567 1567
1568 if (!try_module_get(THIS_MODULE))
1569 return -EBUSY;
1570
1568 DBGINFO(("%s hdlcdev_open\n", dev->name)); 1571 DBGINFO(("%s hdlcdev_open\n", dev->name));
1569 1572
1570 /* generic HDLC layer open processing */ 1573 /* generic HDLC layer open processing */
@@ -1634,6 +1637,7 @@ static int hdlcdev_close(struct net_device *dev)
1634 info->netcount=0; 1637 info->netcount=0;
1635 spin_unlock_irqrestore(&info->netlock, flags); 1638 spin_unlock_irqrestore(&info->netlock, flags);
1636 1639
1640 module_put(THIS_MODULE);
1637 return 0; 1641 return 0;
1638} 1642}
1639 1643
diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c
index 9bb542913b86..39564b76d4a3 100644
--- a/drivers/char/tpm/tpm.c
+++ b/drivers/char/tpm/tpm.c
@@ -7,7 +7,7 @@
7 * Reiner Sailer <sailer@watson.ibm.com> 7 * Reiner Sailer <sailer@watson.ibm.com>
8 * Kylene Hall <kjhall@us.ibm.com> 8 * Kylene Hall <kjhall@us.ibm.com>
9 * 9 *
10 * Maintained by: <tpmdd_devel@lists.sourceforge.net> 10 * Maintained by: <tpmdd-devel@lists.sourceforge.net>
11 * 11 *
12 * Device driver for TCG/TCPA TPM (trusted platform module). 12 * Device driver for TCG/TCPA TPM (trusted platform module).
13 * Specifications at www.trustedcomputinggroup.org 13 * Specifications at www.trustedcomputinggroup.org
diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
index b2e2b002a1bb..d15ccddc92eb 100644
--- a/drivers/char/tpm/tpm.h
+++ b/drivers/char/tpm/tpm.h
@@ -7,7 +7,7 @@
7 * Reiner Sailer <sailer@watson.ibm.com> 7 * Reiner Sailer <sailer@watson.ibm.com>
8 * Kylene Hall <kjhall@us.ibm.com> 8 * Kylene Hall <kjhall@us.ibm.com>
9 * 9 *
10 * Maintained by: <tpmdd_devel@lists.sourceforge.net> 10 * Maintained by: <tpmdd-devel@lists.sourceforge.net>
11 * 11 *
12 * Device driver for TCG/TCPA TPM (trusted platform module). 12 * Device driver for TCG/TCPA TPM (trusted platform module).
13 * Specifications at www.trustedcomputinggroup.org 13 * Specifications at www.trustedcomputinggroup.org
diff --git a/drivers/char/tpm/tpm_atmel.c b/drivers/char/tpm/tpm_atmel.c
index 1ab0896070be..d0e7926eb486 100644
--- a/drivers/char/tpm/tpm_atmel.c
+++ b/drivers/char/tpm/tpm_atmel.c
@@ -7,7 +7,7 @@
7 * Reiner Sailer <sailer@watson.ibm.com> 7 * Reiner Sailer <sailer@watson.ibm.com>
8 * Kylene Hall <kjhall@us.ibm.com> 8 * Kylene Hall <kjhall@us.ibm.com>
9 * 9 *
10 * Maintained by: <tpmdd_devel@lists.sourceforge.net> 10 * Maintained by: <tpmdd-devel@lists.sourceforge.net>
11 * 11 *
12 * Device driver for TCG/TCPA TPM (trusted platform module). 12 * Device driver for TCG/TCPA TPM (trusted platform module).
13 * Specifications at www.trustedcomputinggroup.org 13 * Specifications at www.trustedcomputinggroup.org
diff --git a/drivers/char/tpm/tpm_atmel.h b/drivers/char/tpm/tpm_atmel.h
index 9363bcf0a402..6c831f9466b7 100644
--- a/drivers/char/tpm/tpm_atmel.h
+++ b/drivers/char/tpm/tpm_atmel.h
@@ -4,7 +4,7 @@
4 * Authors: 4 * Authors:
5 * Kylene Hall <kjhall@us.ibm.com> 5 * Kylene Hall <kjhall@us.ibm.com>
6 * 6 *
7 * Maintained by: <tpmdd_devel@lists.sourceforge.net> 7 * Maintained by: <tpmdd-devel@lists.sourceforge.net>
8 * 8 *
9 * Device driver for TCG/TCPA TPM (trusted platform module). 9 * Device driver for TCG/TCPA TPM (trusted platform module).
10 * Specifications at www.trustedcomputinggroup.org 10 * Specifications at www.trustedcomputinggroup.org
diff --git a/drivers/char/tpm/tpm_bios.c b/drivers/char/tpm/tpm_bios.c
index 8677fc6a545e..60a2d2630e36 100644
--- a/drivers/char/tpm/tpm_bios.c
+++ b/drivers/char/tpm/tpm_bios.c
@@ -7,6 +7,8 @@
7 * Reiner Sailer <sailer@watson.ibm.com> 7 * Reiner Sailer <sailer@watson.ibm.com>
8 * Kylene Hall <kjhall@us.ibm.com> 8 * Kylene Hall <kjhall@us.ibm.com>
9 * 9 *
10 * Maintained by: <tpmdd-devel@lists.sourceforge.net>
11 *
10 * Access to the eventlog extended by the TCG BIOS of PC platform 12 * Access to the eventlog extended by the TCG BIOS of PC platform
11 * 13 *
12 * This program is free software; you can redistribute it and/or 14 * This program is free software; you can redistribute it and/or
diff --git a/drivers/char/tpm/tpm_nsc.c b/drivers/char/tpm/tpm_nsc.c
index 608f73071bef..6313326bc41f 100644
--- a/drivers/char/tpm/tpm_nsc.c
+++ b/drivers/char/tpm/tpm_nsc.c
@@ -7,7 +7,7 @@
7 * Reiner Sailer <sailer@watson.ibm.com> 7 * Reiner Sailer <sailer@watson.ibm.com>
8 * Kylene Hall <kjhall@us.ibm.com> 8 * Kylene Hall <kjhall@us.ibm.com>
9 * 9 *
10 * Maintained by: <tpmdd_devel@lists.sourceforge.net> 10 * Maintained by: <tpmdd-devel@lists.sourceforge.net>
11 * 11 *
12 * Device driver for TCG/TCPA TPM (trusted platform module). 12 * Device driver for TCG/TCPA TPM (trusted platform module).
13 * Specifications at www.trustedcomputinggroup.org 13 * Specifications at www.trustedcomputinggroup.org
diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c
index 483f3f60013c..23fa18a6654c 100644
--- a/drivers/char/tpm/tpm_tis.c
+++ b/drivers/char/tpm/tpm_tis.c
@@ -5,6 +5,8 @@
5 * Leendert van Doorn <leendert@watson.ibm.com> 5 * Leendert van Doorn <leendert@watson.ibm.com>
6 * Kylene Hall <kjhall@us.ibm.com> 6 * Kylene Hall <kjhall@us.ibm.com>
7 * 7 *
8 * Maintained by: <tpmdd-devel@lists.sourceforge.net>
9 *
8 * Device driver for TCG/TCPA TPM (trusted platform module). 10 * Device driver for TCG/TCPA TPM (trusted platform module).
9 * Specifications at www.trustedcomputinggroup.org 11 * Specifications at www.trustedcomputinggroup.org
10 * 12 *
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index 51ea93cab6c4..9c867cf6de64 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -2063,8 +2063,7 @@ static int init_dev(struct tty_driver *driver, int idx,
2063 } 2063 }
2064 2064
2065 if (!*tp_loc) { 2065 if (!*tp_loc) {
2066 tp = (struct ktermios *) kmalloc(sizeof(struct ktermios), 2066 tp = kmalloc(sizeof(struct ktermios), GFP_KERNEL);
2067 GFP_KERNEL);
2068 if (!tp) 2067 if (!tp)
2069 goto free_mem_out; 2068 goto free_mem_out;
2070 *tp = driver->init_termios; 2069 *tp = driver->init_termios;
@@ -2094,8 +2093,7 @@ static int init_dev(struct tty_driver *driver, int idx,
2094 } 2093 }
2095 2094
2096 if (!*o_tp_loc) { 2095 if (!*o_tp_loc) {
2097 o_tp = (struct ktermios *) 2096 o_tp = kmalloc(sizeof(struct ktermios), GFP_KERNEL);
2098 kmalloc(sizeof(struct ktermios), GFP_KERNEL);
2099 if (!o_tp) 2097 if (!o_tp)
2100 goto free_mem_out; 2098 goto free_mem_out;
2101 *o_tp = driver->other->init_termios; 2099 *o_tp = driver->other->init_termios;
diff --git a/drivers/char/watchdog/alim1535_wdt.c b/drivers/char/watchdog/alim1535_wdt.c
index e3f6a7d0c83d..c404fc69e7e6 100644
--- a/drivers/char/watchdog/alim1535_wdt.c
+++ b/drivers/char/watchdog/alim1535_wdt.c
@@ -312,6 +312,7 @@ static int ali_notify_sys(struct notifier_block *this, unsigned long code, void
312 */ 312 */
313 313
314static struct pci_device_id ali_pci_tbl[] = { 314static struct pci_device_id ali_pci_tbl[] = {
315 { PCI_VENDOR_ID_AL, 0x1533, PCI_ANY_ID, PCI_ANY_ID,},
315 { PCI_VENDOR_ID_AL, 0x1535, PCI_ANY_ID, PCI_ANY_ID,}, 316 { PCI_VENDOR_ID_AL, 0x1535, PCI_ANY_ID, PCI_ANY_ID,},
316 { 0, }, 317 { 0, },
317}; 318};
@@ -329,9 +330,11 @@ static int __init ali_find_watchdog(void)
329 struct pci_dev *pdev; 330 struct pci_dev *pdev;
330 u32 wdog; 331 u32 wdog;
331 332
332 /* Check for a 1535 series bridge */ 333 /* Check for a 1533/1535 series bridge */
333 pdev = pci_get_device(PCI_VENDOR_ID_AL, 0x1535, NULL); 334 pdev = pci_get_device(PCI_VENDOR_ID_AL, 0x1535, NULL);
334 if(pdev == NULL) 335 if (pdev == NULL)
336 pdev = pci_get_device(PCI_VENDOR_ID_AL, 0x1533, NULL);
337 if (pdev == NULL)
335 return -ENODEV; 338 return -ENODEV;
336 pci_dev_put(pdev); 339 pci_dev_put(pdev);
337 340
diff --git a/drivers/char/watchdog/eurotechwdt.c b/drivers/char/watchdog/eurotechwdt.c
index b070324e27a6..b14e9d1f164d 100644
--- a/drivers/char/watchdog/eurotechwdt.c
+++ b/drivers/char/watchdog/eurotechwdt.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Eurotech CPU-1220/1410 on board WDT driver 2 * Eurotech CPU-1220/1410/1420 on board WDT driver
3 * 3 *
4 * (c) Copyright 2001 Ascensit <support@ascensit.com> 4 * (c) Copyright 2001 Ascensit <support@ascensit.com>
5 * (c) Copyright 2001 Rodolfo Giometti <giometti@ascensit.com> 5 * (c) Copyright 2001 Rodolfo Giometti <giometti@ascensit.com>
@@ -25,6 +25,9 @@
25 25
26/* Changelog: 26/* Changelog:
27 * 27 *
28 * 2001 - Rodolfo Giometti
29 * Initial release
30 *
28 * 2002/04/25 - Rob Radez 31 * 2002/04/25 - Rob Radez
29 * clean up #includes 32 * clean up #includes
30 * clean up locking 33 * clean up locking
@@ -33,13 +36,15 @@
33 * add WDIOC_GETSTATUS and WDIOC_SETOPTIONS ioctls 36 * add WDIOC_GETSTATUS and WDIOC_SETOPTIONS ioctls
34 * add expect_close support 37 * add expect_close support
35 * 38 *
36 * 2001 - Rodolfo Giometti
37 * Initial release
38 *
39 * 2002.05.30 - Joel Becker <joel.becker@oracle.com> 39 * 2002.05.30 - Joel Becker <joel.becker@oracle.com>
40 * Added Matt Domsch's nowayout module option. 40 * Added Matt Domsch's nowayout module option.
41 */ 41 */
42 42
43/*
44 * The eurotech CPU-1220/1410/1420's watchdog is a part
45 * of the on-board SUPER I/O device SMSC FDC 37B782.
46 */
47
43#include <linux/interrupt.h> 48#include <linux/interrupt.h>
44#include <linux/module.h> 49#include <linux/module.h>
45#include <linux/moduleparam.h> 50#include <linux/moduleparam.h>
diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
index 84ebfcc1ffb4..c0fc4aeb8596 100644
--- a/drivers/crypto/Kconfig
+++ b/drivers/crypto/Kconfig
@@ -2,6 +2,11 @@
2menuconfig CRYPTO_HW 2menuconfig CRYPTO_HW
3 bool "Hardware crypto devices" 3 bool "Hardware crypto devices"
4 default y 4 default y
5 ---help---
6 Say Y here to get to see options for hardware crypto devices and
7 processors. This option alone does not add any kernel code.
8
9 If you say N, all options in this submenu will be skipped and disabled.
5 10
6if CRYPTO_HW 11if CRYPTO_HW
7 12
diff --git a/drivers/dma/ioatdma.c b/drivers/dma/ioatdma.c
index 5fbe56b5cea0..41b18c5a3141 100644
--- a/drivers/dma/ioatdma.c
+++ b/drivers/dma/ioatdma.c
@@ -191,17 +191,12 @@ static int ioat_dma_alloc_chan_resources(struct dma_chan *chan)
191 int i; 191 int i;
192 LIST_HEAD(tmp_list); 192 LIST_HEAD(tmp_list);
193 193
194 /* 194 /* have we already been set up? */
195 * In-use bit automatically set by reading chanctrl 195 if (!list_empty(&ioat_chan->free_desc))
196 * If 0, we got it, if 1, someone else did 196 return INITIAL_IOAT_DESC_COUNT;
197 */
198 chanctrl = readw(ioat_chan->reg_base + IOAT_CHANCTRL_OFFSET);
199 if (chanctrl & IOAT_CHANCTRL_CHANNEL_IN_USE)
200 return -EBUSY;
201 197
202 /* Setup register to interrupt and write completion status on error */ 198 /* Setup register to interrupt and write completion status on error */
203 chanctrl = IOAT_CHANCTRL_CHANNEL_IN_USE | 199 chanctrl = IOAT_CHANCTRL_ERR_INT_EN |
204 IOAT_CHANCTRL_ERR_INT_EN |
205 IOAT_CHANCTRL_ANY_ERR_ABORT_EN | 200 IOAT_CHANCTRL_ANY_ERR_ABORT_EN |
206 IOAT_CHANCTRL_ERR_COMPLETION_EN; 201 IOAT_CHANCTRL_ERR_COMPLETION_EN;
207 writew(chanctrl, ioat_chan->reg_base + IOAT_CHANCTRL_OFFSET); 202 writew(chanctrl, ioat_chan->reg_base + IOAT_CHANCTRL_OFFSET);
@@ -282,11 +277,6 @@ static void ioat_dma_free_chan_resources(struct dma_chan *chan)
282 in_use_descs - 1); 277 in_use_descs - 1);
283 278
284 ioat_chan->last_completion = ioat_chan->completion_addr = 0; 279 ioat_chan->last_completion = ioat_chan->completion_addr = 0;
285
286 /* Tell hw the chan is free */
287 chanctrl = readw(ioat_chan->reg_base + IOAT_CHANCTRL_OFFSET);
288 chanctrl &= ~IOAT_CHANCTRL_CHANNEL_IN_USE;
289 writew(chanctrl, ioat_chan->reg_base + IOAT_CHANCTRL_OFFSET);
290} 280}
291 281
292static struct dma_async_tx_descriptor * 282static struct dma_async_tx_descriptor *
@@ -347,8 +337,7 @@ ioat_dma_prep_memcpy(struct dma_chan *chan, size_t len, int int_en)
347 new->async_tx.ack = 0; /* client is in control of this ack */ 337 new->async_tx.ack = 0; /* client is in control of this ack */
348 new->async_tx.cookie = -EBUSY; 338 new->async_tx.cookie = -EBUSY;
349 339
350 pci_unmap_len_set(new, src_len, orig_len); 340 pci_unmap_len_set(new, len, orig_len);
351 pci_unmap_len_set(new, dst_len, orig_len);
352 spin_unlock_bh(&ioat_chan->desc_lock); 341 spin_unlock_bh(&ioat_chan->desc_lock);
353 342
354 return new ? &new->async_tx : NULL; 343 return new ? &new->async_tx : NULL;
@@ -423,11 +412,11 @@ static void ioat_dma_memcpy_cleanup(struct ioat_dma_chan *chan)
423 */ 412 */
424 pci_unmap_page(chan->device->pdev, 413 pci_unmap_page(chan->device->pdev,
425 pci_unmap_addr(desc, dst), 414 pci_unmap_addr(desc, dst),
426 pci_unmap_len(desc, dst_len), 415 pci_unmap_len(desc, len),
427 PCI_DMA_FROMDEVICE); 416 PCI_DMA_FROMDEVICE);
428 pci_unmap_page(chan->device->pdev, 417 pci_unmap_page(chan->device->pdev,
429 pci_unmap_addr(desc, src), 418 pci_unmap_addr(desc, src),
430 pci_unmap_len(desc, src_len), 419 pci_unmap_len(desc, len),
431 PCI_DMA_TODEVICE); 420 PCI_DMA_TODEVICE);
432 } 421 }
433 422
diff --git a/drivers/dma/ioatdma.h b/drivers/dma/ioatdma.h
index d3726478031a..bf4dad70e0f5 100644
--- a/drivers/dma/ioatdma.h
+++ b/drivers/dma/ioatdma.h
@@ -111,10 +111,9 @@ struct ioat_desc_sw {
111 struct ioat_dma_descriptor *hw; 111 struct ioat_dma_descriptor *hw;
112 struct list_head node; 112 struct list_head node;
113 int tx_cnt; 113 int tx_cnt;
114 DECLARE_PCI_UNMAP_LEN(len)
114 DECLARE_PCI_UNMAP_ADDR(src) 115 DECLARE_PCI_UNMAP_ADDR(src)
115 DECLARE_PCI_UNMAP_LEN(src_len)
116 DECLARE_PCI_UNMAP_ADDR(dst) 116 DECLARE_PCI_UNMAP_ADDR(dst)
117 DECLARE_PCI_UNMAP_LEN(dst_len)
118 struct dma_async_tx_descriptor async_tx; 117 struct dma_async_tx_descriptor async_tx;
119}; 118};
120 119
diff --git a/drivers/firewire/fw-card.c b/drivers/firewire/fw-card.c
index 0aeab3218bb6..3e9719948a8e 100644
--- a/drivers/firewire/fw-card.c
+++ b/drivers/firewire/fw-card.c
@@ -510,9 +510,11 @@ fw_core_remove_card(struct fw_card *card)
510 /* Set up the dummy driver. */ 510 /* Set up the dummy driver. */
511 card->driver = &dummy_driver; 511 card->driver = &dummy_driver;
512 512
513 fw_flush_transactions(card);
514
515 fw_destroy_nodes(card); 513 fw_destroy_nodes(card);
514 flush_scheduled_work();
515
516 fw_flush_transactions(card);
517 del_timer_sync(&card->flush_timer);
516 518
517 fw_card_put(card); 519 fw_card_put(card);
518} 520}
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c
index ba816ef6def1..238730f75db1 100644
--- a/drivers/firewire/fw-sbp2.c
+++ b/drivers/firewire/fw-sbp2.c
@@ -159,6 +159,7 @@ struct sbp2_pointer {
159 159
160struct sbp2_orb { 160struct sbp2_orb {
161 struct fw_transaction t; 161 struct fw_transaction t;
162 struct kref kref;
162 dma_addr_t request_bus; 163 dma_addr_t request_bus;
163 int rcode; 164 int rcode;
164 struct sbp2_pointer pointer; 165 struct sbp2_pointer pointer;
@@ -280,6 +281,14 @@ static const struct {
280}; 281};
281 282
282static void 283static void
284free_orb(struct kref *kref)
285{
286 struct sbp2_orb *orb = container_of(kref, struct sbp2_orb, kref);
287
288 kfree(orb);
289}
290
291static void
283sbp2_status_write(struct fw_card *card, struct fw_request *request, 292sbp2_status_write(struct fw_card *card, struct fw_request *request,
284 int tcode, int destination, int source, 293 int tcode, int destination, int source,
285 int generation, int speed, 294 int generation, int speed,
@@ -312,8 +321,8 @@ sbp2_status_write(struct fw_card *card, struct fw_request *request,
312 spin_lock_irqsave(&card->lock, flags); 321 spin_lock_irqsave(&card->lock, flags);
313 list_for_each_entry(orb, &sd->orb_list, link) { 322 list_for_each_entry(orb, &sd->orb_list, link) {
314 if (STATUS_GET_ORB_HIGH(status) == 0 && 323 if (STATUS_GET_ORB_HIGH(status) == 0 &&
315 STATUS_GET_ORB_LOW(status) == orb->request_bus && 324 STATUS_GET_ORB_LOW(status) == orb->request_bus) {
316 orb->rcode == RCODE_COMPLETE) { 325 orb->rcode = RCODE_COMPLETE;
317 list_del(&orb->link); 326 list_del(&orb->link);
318 break; 327 break;
319 } 328 }
@@ -325,6 +334,8 @@ sbp2_status_write(struct fw_card *card, struct fw_request *request,
325 else 334 else
326 fw_error("status write for unknown orb\n"); 335 fw_error("status write for unknown orb\n");
327 336
337 kref_put(&orb->kref, free_orb);
338
328 fw_send_response(card, request, RCODE_COMPLETE); 339 fw_send_response(card, request, RCODE_COMPLETE);
329} 340}
330 341
@@ -335,13 +346,27 @@ complete_transaction(struct fw_card *card, int rcode,
335 struct sbp2_orb *orb = data; 346 struct sbp2_orb *orb = data;
336 unsigned long flags; 347 unsigned long flags;
337 348
338 orb->rcode = rcode; 349 /*
339 if (rcode != RCODE_COMPLETE) { 350 * This is a little tricky. We can get the status write for
340 spin_lock_irqsave(&card->lock, flags); 351 * the orb before we get this callback. The status write
352 * handler above will assume the orb pointer transaction was
353 * successful and set the rcode to RCODE_COMPLETE for the orb.
354 * So this callback only sets the rcode if it hasn't already
355 * been set and only does the cleanup if the transaction
356 * failed and we didn't already get a status write.
357 */
358 spin_lock_irqsave(&card->lock, flags);
359
360 if (orb->rcode == -1)
361 orb->rcode = rcode;
362 if (orb->rcode != RCODE_COMPLETE) {
341 list_del(&orb->link); 363 list_del(&orb->link);
342 spin_unlock_irqrestore(&card->lock, flags);
343 orb->callback(orb, NULL); 364 orb->callback(orb, NULL);
344 } 365 }
366
367 spin_unlock_irqrestore(&card->lock, flags);
368
369 kref_put(&orb->kref, free_orb);
345} 370}
346 371
347static void 372static void
@@ -360,6 +385,10 @@ sbp2_send_orb(struct sbp2_orb *orb, struct fw_unit *unit,
360 list_add_tail(&orb->link, &sd->orb_list); 385 list_add_tail(&orb->link, &sd->orb_list);
361 spin_unlock_irqrestore(&device->card->lock, flags); 386 spin_unlock_irqrestore(&device->card->lock, flags);
362 387
388 /* Take a ref for the orb list and for the transaction callback. */
389 kref_get(&orb->kref);
390 kref_get(&orb->kref);
391
363 fw_send_request(device->card, &orb->t, TCODE_WRITE_BLOCK_REQUEST, 392 fw_send_request(device->card, &orb->t, TCODE_WRITE_BLOCK_REQUEST,
364 node_id, generation, device->max_speed, offset, 393 node_id, generation, device->max_speed, offset,
365 &orb->pointer, sizeof(orb->pointer), 394 &orb->pointer, sizeof(orb->pointer),
@@ -416,6 +445,7 @@ sbp2_send_management_orb(struct fw_unit *unit, int node_id, int generation,
416 if (orb == NULL) 445 if (orb == NULL)
417 return -ENOMEM; 446 return -ENOMEM;
418 447
448 kref_init(&orb->base.kref);
419 orb->response_bus = 449 orb->response_bus =
420 dma_map_single(device->card->device, &orb->response, 450 dma_map_single(device->card->device, &orb->response,
421 sizeof(orb->response), DMA_FROM_DEVICE); 451 sizeof(orb->response), DMA_FROM_DEVICE);
@@ -490,7 +520,7 @@ sbp2_send_management_orb(struct fw_unit *unit, int node_id, int generation,
490 if (response) 520 if (response)
491 fw_memcpy_from_be32(response, 521 fw_memcpy_from_be32(response,
492 orb->response, sizeof(orb->response)); 522 orb->response, sizeof(orb->response));
493 kfree(orb); 523 kref_put(&orb->base.kref, free_orb);
494 524
495 return retval; 525 return retval;
496} 526}
@@ -886,7 +916,6 @@ complete_command_orb(struct sbp2_orb *base_orb, struct sbp2_status *status)
886 916
887 orb->cmd->result = result; 917 orb->cmd->result = result;
888 orb->done(orb->cmd); 918 orb->done(orb->cmd);
889 kfree(orb);
890} 919}
891 920
892static int sbp2_command_orb_map_scatterlist(struct sbp2_command_orb *orb) 921static int sbp2_command_orb_map_scatterlist(struct sbp2_command_orb *orb)
@@ -1005,6 +1034,7 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done)
1005 1034
1006 /* Initialize rcode to something not RCODE_COMPLETE. */ 1035 /* Initialize rcode to something not RCODE_COMPLETE. */
1007 orb->base.rcode = -1; 1036 orb->base.rcode = -1;
1037 kref_init(&orb->base.kref);
1008 1038
1009 orb->unit = unit; 1039 orb->unit = unit;
1010 orb->done = done; 1040 orb->done = done;
@@ -1051,10 +1081,11 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done)
1051 sbp2_send_orb(&orb->base, unit, sd->node_id, sd->generation, 1081 sbp2_send_orb(&orb->base, unit, sd->node_id, sd->generation,
1052 sd->command_block_agent_address + SBP2_ORB_POINTER); 1082 sd->command_block_agent_address + SBP2_ORB_POINTER);
1053 1083
1084 kref_put(&orb->base.kref, free_orb);
1054 return 0; 1085 return 0;
1055 1086
1056 fail_mapping: 1087 fail_mapping:
1057 kfree(orb); 1088 kref_put(&orb->base.kref, free_orb);
1058 fail_alloc: 1089 fail_alloc:
1059 return SCSI_MLQUEUE_HOST_BUSY; 1090 return SCSI_MLQUEUE_HOST_BUSY;
1060} 1091}
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index 3b63b0b78122..19667fcc722a 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -5,6 +5,11 @@ menuconfig HID_SUPPORT
5 bool "HID Devices" 5 bool "HID Devices"
6 depends on INPUT 6 depends on INPUT
7 default y 7 default y
8 ---help---
9 Say Y here to get to see options for various computer-human interface
10 device drivers. This option alone does not add any kernel code.
11
12 If you say N, all options in this submenu will be skipped and disabled.
8 13
9if HID_SUPPORT 14if HID_SUPPORT
10 15
diff --git a/drivers/hwmon/smsc47m1.c b/drivers/hwmon/smsc47m1.c
index 338ee4f54614..d3181967f167 100644
--- a/drivers/hwmon/smsc47m1.c
+++ b/drivers/hwmon/smsc47m1.c
@@ -585,6 +585,8 @@ static int __devinit smsc47m1_probe(struct platform_device *pdev)
585 585
586 if ((err = device_create_file(dev, &dev_attr_alarms))) 586 if ((err = device_create_file(dev, &dev_attr_alarms)))
587 goto error_remove_files; 587 goto error_remove_files;
588 if ((err = device_create_file(dev, &dev_attr_name)))
589 goto error_remove_files;
588 590
589 data->class_dev = hwmon_device_register(dev); 591 data->class_dev = hwmon_device_register(dev);
590 if (IS_ERR(data->class_dev)) { 592 if (IS_ERR(data->class_dev)) {
diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
index c51ae2e17758..d9a9ec7dd84a 100644
--- a/drivers/hwmon/w83627ehf.c
+++ b/drivers/hwmon/w83627ehf.c
@@ -309,18 +309,16 @@ static inline int is_word_sized(u16 reg)
309 || (reg & 0x00ff) == 0x55)); 309 || (reg & 0x00ff) == 0x55));
310} 310}
311 311
312/* We assume that the default bank is 0, thus the following two functions do 312/* Registers 0x50-0x5f are banked */
313 nothing for registers which live in bank 0. For others, they respectively
314 set the bank register to the correct value (before the register is
315 accessed), and back to 0 (afterwards). */
316static inline void w83627ehf_set_bank(struct w83627ehf_data *data, u16 reg) 313static inline void w83627ehf_set_bank(struct w83627ehf_data *data, u16 reg)
317{ 314{
318 if (reg & 0xff00) { 315 if ((reg & 0x00f0) == 0x50) {
319 outb_p(W83627EHF_REG_BANK, data->addr + ADDR_REG_OFFSET); 316 outb_p(W83627EHF_REG_BANK, data->addr + ADDR_REG_OFFSET);
320 outb_p(reg >> 8, data->addr + DATA_REG_OFFSET); 317 outb_p(reg >> 8, data->addr + DATA_REG_OFFSET);
321 } 318 }
322} 319}
323 320
321/* Not strictly necessary, but play it safe for now */
324static inline void w83627ehf_reset_bank(struct w83627ehf_data *data, u16 reg) 322static inline void w83627ehf_reset_bank(struct w83627ehf_data *data, u16 reg)
325{ 323{
326 if (reg & 0xff00) { 324 if (reg & 0xff00) {
@@ -421,6 +419,31 @@ static void w83627ehf_write_fan_div(struct w83627ehf_data *data, int nr)
421 } 419 }
422} 420}
423 421
422static void w83627ehf_update_fan_div(struct w83627ehf_data *data)
423{
424 int i;
425
426 i = w83627ehf_read_value(data, W83627EHF_REG_FANDIV1);
427 data->fan_div[0] = (i >> 4) & 0x03;
428 data->fan_div[1] = (i >> 6) & 0x03;
429 i = w83627ehf_read_value(data, W83627EHF_REG_FANDIV2);
430 data->fan_div[2] = (i >> 6) & 0x03;
431 i = w83627ehf_read_value(data, W83627EHF_REG_VBAT);
432 data->fan_div[0] |= (i >> 3) & 0x04;
433 data->fan_div[1] |= (i >> 4) & 0x04;
434 data->fan_div[2] |= (i >> 5) & 0x04;
435 if (data->has_fan & ((1 << 3) | (1 << 4))) {
436 i = w83627ehf_read_value(data, W83627EHF_REG_DIODE);
437 data->fan_div[3] = i & 0x03;
438 data->fan_div[4] = ((i >> 2) & 0x03)
439 | ((i >> 5) & 0x04);
440 }
441 if (data->has_fan & (1 << 3)) {
442 i = w83627ehf_read_value(data, W83627EHF_REG_SMI_OVT);
443 data->fan_div[3] |= (i >> 5) & 0x04;
444 }
445}
446
424static struct w83627ehf_data *w83627ehf_update_device(struct device *dev) 447static struct w83627ehf_data *w83627ehf_update_device(struct device *dev)
425{ 448{
426 struct w83627ehf_data *data = dev_get_drvdata(dev); 449 struct w83627ehf_data *data = dev_get_drvdata(dev);
@@ -432,25 +455,7 @@ static struct w83627ehf_data *w83627ehf_update_device(struct device *dev)
432 if (time_after(jiffies, data->last_updated + HZ + HZ/2) 455 if (time_after(jiffies, data->last_updated + HZ + HZ/2)
433 || !data->valid) { 456 || !data->valid) {
434 /* Fan clock dividers */ 457 /* Fan clock dividers */
435 i = w83627ehf_read_value(data, W83627EHF_REG_FANDIV1); 458 w83627ehf_update_fan_div(data);
436 data->fan_div[0] = (i >> 4) & 0x03;
437 data->fan_div[1] = (i >> 6) & 0x03;
438 i = w83627ehf_read_value(data, W83627EHF_REG_FANDIV2);
439 data->fan_div[2] = (i >> 6) & 0x03;
440 i = w83627ehf_read_value(data, W83627EHF_REG_VBAT);
441 data->fan_div[0] |= (i >> 3) & 0x04;
442 data->fan_div[1] |= (i >> 4) & 0x04;
443 data->fan_div[2] |= (i >> 5) & 0x04;
444 if (data->has_fan & ((1 << 3) | (1 << 4))) {
445 i = w83627ehf_read_value(data, W83627EHF_REG_DIODE);
446 data->fan_div[3] = i & 0x03;
447 data->fan_div[4] = ((i >> 2) & 0x03)
448 | ((i >> 5) & 0x04);
449 }
450 if (data->has_fan & (1 << 3)) {
451 i = w83627ehf_read_value(data, W83627EHF_REG_SMI_OVT);
452 data->fan_div[3] |= (i >> 5) & 0x04;
453 }
454 459
455 /* Measured voltages and limits */ 460 /* Measured voltages and limits */
456 for (i = 0; i < data->in_num; i++) { 461 for (i = 0; i < data->in_num; i++) {
@@ -1312,6 +1317,9 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
1312 if (!(i & (1 << 1)) && (!fan5pin)) 1317 if (!(i & (1 << 1)) && (!fan5pin))
1313 data->has_fan |= (1 << 4); 1318 data->has_fan |= (1 << 4);
1314 1319
1320 /* Read fan clock dividers immediately */
1321 w83627ehf_update_fan_div(data);
1322
1315 /* Register sysfs hooks */ 1323 /* Register sysfs hooks */
1316 for (i = 0; i < ARRAY_SIZE(sda_sf3_arrays); i++) 1324 for (i = 0; i < ARRAY_SIZE(sda_sf3_arrays); i++)
1317 if ((err = device_create_file(dev, 1325 if ((err = device_create_file(dev,
diff --git a/drivers/hwmon/w83781d.c b/drivers/hwmon/w83781d.c
index f85b48fea1c4..c95909cc1d21 100644
--- a/drivers/hwmon/w83781d.c
+++ b/drivers/hwmon/w83781d.c
@@ -740,9 +740,9 @@ store_sensor(struct device *dev, struct device_attribute *da,
740static SENSOR_DEVICE_ATTR(temp1_type, S_IRUGO | S_IWUSR, 740static SENSOR_DEVICE_ATTR(temp1_type, S_IRUGO | S_IWUSR,
741 show_sensor, store_sensor, 0); 741 show_sensor, store_sensor, 0);
742static SENSOR_DEVICE_ATTR(temp2_type, S_IRUGO | S_IWUSR, 742static SENSOR_DEVICE_ATTR(temp2_type, S_IRUGO | S_IWUSR,
743 show_sensor, store_sensor, 0); 743 show_sensor, store_sensor, 1);
744static SENSOR_DEVICE_ATTR(temp3_type, S_IRUGO | S_IWUSR, 744static SENSOR_DEVICE_ATTR(temp3_type, S_IRUGO | S_IWUSR,
745 show_sensor, store_sensor, 0); 745 show_sensor, store_sensor, 2);
746 746
747/* I2C devices get this name attribute automatically, but for ISA devices 747/* I2C devices get this name attribute automatically, but for ISA devices
748 we must create it by ourselves. */ 748 we must create it by ourselves. */
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index e049f65bc3a2..7adb61bad6ad 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -304,9 +304,9 @@ comment "IDE chipset support/bugfixes"
304 304
305config IDE_GENERIC 305config IDE_GENERIC
306 tristate "generic/default IDE chipset support" 306 tristate "generic/default IDE chipset support"
307 default y 307 default H8300
308 help 308 help
309 If unsure, say Y. 309 If unsure, say N.
310 310
311config BLK_DEV_CMD640 311config BLK_DEV_CMD640
312 bool "CMD640 chipset bugfix/support" 312 bool "CMD640 chipset bugfix/support"
@@ -345,6 +345,7 @@ config BLK_DEV_CMD640_ENHANCED
345config BLK_DEV_IDEPNP 345config BLK_DEV_IDEPNP
346 bool "PNP EIDE support" 346 bool "PNP EIDE support"
347 depends on PNP 347 depends on PNP
348 select IDE_GENERIC
348 help 349 help
349 If you have a PnP (Plug and Play) compatible EIDE card and 350 If you have a PnP (Plug and Play) compatible EIDE card and
350 would like the kernel to automatically detect and activate 351 would like the kernel to automatically detect and activate
@@ -834,6 +835,7 @@ config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ
834 835
835config IDE_ARM 836config IDE_ARM
836 def_bool ARM && (ARCH_CLPS7500 || ARCH_RPC || ARCH_SHARK) 837 def_bool ARM && (ARCH_CLPS7500 || ARCH_RPC || ARCH_SHARK)
838 select IDE_GENERIC
837 839
838config BLK_DEV_IDE_ICSIDE 840config BLK_DEV_IDE_ICSIDE
839 tristate "ICS IDE interface support" 841 tristate "ICS IDE interface support"
@@ -867,6 +869,7 @@ config BLK_DEV_IDE_BAST
867config BLK_DEV_GAYLE 869config BLK_DEV_GAYLE
868 bool "Amiga Gayle IDE interface support" 870 bool "Amiga Gayle IDE interface support"
869 depends on AMIGA 871 depends on AMIGA
872 select IDE_GENERIC
870 help 873 help
871 This is the IDE driver for the Amiga Gayle IDE interface. It supports 874 This is the IDE driver for the Amiga Gayle IDE interface. It supports
872 both the `A1200 style' and `A4000 style' of the Gayle IDE interface, 875 both the `A1200 style' and `A4000 style' of the Gayle IDE interface,
@@ -898,6 +901,7 @@ config BLK_DEV_IDEDOUBLER
898config BLK_DEV_BUDDHA 901config BLK_DEV_BUDDHA
899 bool "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)" 902 bool "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)"
900 depends on ZORRO && EXPERIMENTAL 903 depends on ZORRO && EXPERIMENTAL
904 select IDE_GENERIC
901 help 905 help
902 This is the IDE driver for the IDE interfaces on the Buddha, 906 This is the IDE driver for the IDE interfaces on the Buddha,
903 Catweasel and X-Surf expansion boards. It supports up to two interfaces 907 Catweasel and X-Surf expansion boards. It supports up to two interfaces
@@ -910,6 +914,7 @@ config BLK_DEV_BUDDHA
910config BLK_DEV_FALCON_IDE 914config BLK_DEV_FALCON_IDE
911 bool "Falcon IDE interface support" 915 bool "Falcon IDE interface support"
912 depends on ATARI 916 depends on ATARI
917 select IDE_GENERIC
913 help 918 help
914 This is the IDE driver for the builtin IDE interface on the Atari 919 This is the IDE driver for the builtin IDE interface on the Atari
915 Falcon. Say Y if you have a Falcon and want to use IDE devices (hard 920 Falcon. Say Y if you have a Falcon and want to use IDE devices (hard
@@ -919,6 +924,7 @@ config BLK_DEV_FALCON_IDE
919config BLK_DEV_MAC_IDE 924config BLK_DEV_MAC_IDE
920 bool "Macintosh Quadra/Powerbook IDE interface support" 925 bool "Macintosh Quadra/Powerbook IDE interface support"
921 depends on MAC 926 depends on MAC
927 select IDE_GENERIC
922 help 928 help
923 This is the IDE driver for the builtin IDE interface on some m68k 929 This is the IDE driver for the builtin IDE interface on some m68k
924 Macintosh models. It supports both the `Quadra style' (used in 930 Macintosh models. It supports both the `Quadra style' (used in
@@ -932,6 +938,7 @@ config BLK_DEV_MAC_IDE
932config BLK_DEV_Q40IDE 938config BLK_DEV_Q40IDE
933 bool "Q40/Q60 IDE interface support" 939 bool "Q40/Q60 IDE interface support"
934 depends on Q40 940 depends on Q40
941 select IDE_GENERIC
935 help 942 help
936 Enable the on-board IDE controller in the Q40/Q60. This should 943 Enable the on-board IDE controller in the Q40/Q60. This should
937 normally be on; disable it only if you are running a custom hard 944 normally be on; disable it only if you are running a custom hard
@@ -940,6 +947,7 @@ config BLK_DEV_Q40IDE
940config BLK_DEV_MPC8xx_IDE 947config BLK_DEV_MPC8xx_IDE
941 bool "MPC8xx IDE support" 948 bool "MPC8xx IDE support"
942 depends on 8xx && IDE=y && BLK_DEV_IDE=y 949 depends on 8xx && IDE=y && BLK_DEV_IDE=y
950 select IDE_GENERIC
943 help 951 help
944 This option provides support for IDE on Motorola MPC8xx Systems. 952 This option provides support for IDE on Motorola MPC8xx Systems.
945 Please see 'Type of MPC8xx IDE interface' for details. 953 Please see 'Type of MPC8xx IDE interface' for details.
diff --git a/drivers/ide/cris/ide-cris.c b/drivers/ide/cris/ide-cris.c
index fbfea46a34f2..04636f7eaae7 100644
--- a/drivers/ide/cris/ide-cris.c
+++ b/drivers/ide/cris/ide-cris.c
@@ -718,6 +718,8 @@ static void tune_cris_ide(ide_drive_t *drive, u8 pio)
718 } 718 }
719 719
720 cris_ide_set_speed(TYPE_PIO, setup, strobe, hold); 720 cris_ide_set_speed(TYPE_PIO, setup, strobe, hold);
721
722 (void)ide_config_drive_speed(drive, XFER_PIO_0 + pio);
721} 723}
722 724
723static int speed_cris_ide(ide_drive_t *drive, u8 speed) 725static int speed_cris_ide(ide_drive_t *drive, u8 speed)
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index 5ce4216f72a2..eba1adbc1b6a 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -481,6 +481,15 @@ static inline int idedisk_supports_lba48(const struct hd_driveid *id)
481 && id->lba_capacity_2; 481 && id->lba_capacity_2;
482} 482}
483 483
484/*
485 * Some disks report total number of sectors instead of
486 * maximum sector address. We list them here.
487 */
488static const struct drive_list_entry hpa_list[] = {
489 { "ST340823A", NULL },
490 { NULL, NULL }
491};
492
484static void idedisk_check_hpa(ide_drive_t *drive) 493static void idedisk_check_hpa(ide_drive_t *drive)
485{ 494{
486 unsigned long long capacity, set_max; 495 unsigned long long capacity, set_max;
@@ -492,6 +501,15 @@ static void idedisk_check_hpa(ide_drive_t *drive)
492 else 501 else
493 set_max = idedisk_read_native_max_address(drive); 502 set_max = idedisk_read_native_max_address(drive);
494 503
504 if (ide_in_drive_list(drive->id, hpa_list)) {
505 /*
506 * Since we are inclusive wrt to firmware revisions do this
507 * extra check and apply the workaround only when needed.
508 */
509 if (set_max == capacity + 1)
510 set_max--;
511 }
512
495 if (set_max <= capacity) 513 if (set_max <= capacity)
496 return; 514 return;
497 515
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c
index 5fe1d72ab451..ff644a5e12cd 100644
--- a/drivers/ide/ide-dma.c
+++ b/drivers/ide/ide-dma.c
@@ -135,25 +135,6 @@ static const struct drive_list_entry drive_blacklist [] = {
135}; 135};
136 136
137/** 137/**
138 * ide_in_drive_list - look for drive in black/white list
139 * @id: drive identifier
140 * @drive_table: list to inspect
141 *
142 * Look for a drive in the blacklist and the whitelist tables
143 * Returns 1 if the drive is found in the table.
144 */
145
146int ide_in_drive_list(struct hd_driveid *id, const struct drive_list_entry *drive_table)
147{
148 for ( ; drive_table->id_model ; drive_table++)
149 if ((!strcmp(drive_table->id_model, id->model)) &&
150 (!drive_table->id_firmware ||
151 strstr(id->fw_rev, drive_table->id_firmware)))
152 return 1;
153 return 0;
154}
155
156/**
157 * ide_dma_intr - IDE DMA interrupt handler 138 * ide_dma_intr - IDE DMA interrupt handler
158 * @drive: the drive the interrupt is for 139 * @drive: the drive the interrupt is for
159 * 140 *
@@ -349,9 +330,17 @@ EXPORT_SYMBOL_GPL(ide_destroy_dmatable);
349 330
350static int config_drive_for_dma (ide_drive_t *drive) 331static int config_drive_for_dma (ide_drive_t *drive)
351{ 332{
333 ide_hwif_t *hwif = drive->hwif;
352 struct hd_driveid *id = drive->id; 334 struct hd_driveid *id = drive->id;
353 335
354 if ((id->capability & 1) && drive->hwif->autodma) { 336 /* consult the list of known "bad" drives */
337 if (__ide_dma_bad_drive(drive))
338 return -1;
339
340 if (drive->media != ide_disk && hwif->atapi_dma == 0)
341 return -1;
342
343 if ((id->capability & 1) && drive->autodma) {
355 /* 344 /*
356 * Enable DMA on any drive that has 345 * Enable DMA on any drive that has
357 * UltraDMA (mode 0/1/2/3/4/5/6) enabled 346 * UltraDMA (mode 0/1/2/3/4/5/6) enabled
@@ -514,20 +503,6 @@ int __ide_dma_on (ide_drive_t *drive)
514EXPORT_SYMBOL(__ide_dma_on); 503EXPORT_SYMBOL(__ide_dma_on);
515 504
516/** 505/**
517 * __ide_dma_check - check DMA setup
518 * @drive: drive to check
519 *
520 * Don't use - due for extermination
521 */
522
523int __ide_dma_check (ide_drive_t *drive)
524{
525 return config_drive_for_dma(drive);
526}
527
528EXPORT_SYMBOL(__ide_dma_check);
529
530/**
531 * ide_dma_setup - begin a DMA phase 506 * ide_dma_setup - begin a DMA phase
532 * @drive: target device 507 * @drive: target device
533 * 508 *
@@ -1021,7 +996,7 @@ void ide_setup_dma (ide_hwif_t *hwif, unsigned long dma_base, unsigned int num_p
1021 if (!hwif->dma_host_on) 996 if (!hwif->dma_host_on)
1022 hwif->dma_host_on = &ide_dma_host_on; 997 hwif->dma_host_on = &ide_dma_host_on;
1023 if (!hwif->ide_dma_check) 998 if (!hwif->ide_dma_check)
1024 hwif->ide_dma_check = &__ide_dma_check; 999 hwif->ide_dma_check = &config_drive_for_dma;
1025 if (!hwif->dma_setup) 1000 if (!hwif->dma_setup)
1026 hwif->dma_setup = &ide_dma_setup; 1001 hwif->dma_setup = &ide_dma_setup;
1027 if (!hwif->dma_exec_cmd) 1002 if (!hwif->dma_exec_cmd)
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
index 92578b6832e9..f4cd2700cae5 100644
--- a/drivers/ide/ide-iops.c
+++ b/drivers/ide/ide-iops.c
@@ -565,6 +565,36 @@ int ide_wait_stat (ide_startstop_t *startstop, ide_drive_t *drive, u8 good, u8 b
565 565
566EXPORT_SYMBOL(ide_wait_stat); 566EXPORT_SYMBOL(ide_wait_stat);
567 567
568/**
569 * ide_in_drive_list - look for drive in black/white list
570 * @id: drive identifier
571 * @drive_table: list to inspect
572 *
573 * Look for a drive in the blacklist and the whitelist tables
574 * Returns 1 if the drive is found in the table.
575 */
576
577int ide_in_drive_list(struct hd_driveid *id, const struct drive_list_entry *drive_table)
578{
579 for ( ; drive_table->id_model; drive_table++)
580 if ((!strcmp(drive_table->id_model, id->model)) &&
581 (!drive_table->id_firmware ||
582 strstr(id->fw_rev, drive_table->id_firmware)))
583 return 1;
584 return 0;
585}
586
587EXPORT_SYMBOL_GPL(ide_in_drive_list);
588
589/*
590 * Early UDMA66 devices don't set bit14 to 1, only bit13 is valid.
591 * We list them here and depend on the device side cable detection for them.
592 */
593static const struct drive_list_entry ivb_list[] = {
594 { "QUANTUM FIREBALLlct10 05" , "A03.0900" },
595 { NULL , NULL }
596};
597
568/* 598/*
569 * All hosts that use the 80c ribbon must use! 599 * All hosts that use the 80c ribbon must use!
570 * The name is derived from upper byte of word 93 and the 80c ribbon. 600 * The name is derived from upper byte of word 93 and the 80c ribbon.
@@ -573,11 +603,16 @@ u8 eighty_ninty_three (ide_drive_t *drive)
573{ 603{
574 ide_hwif_t *hwif = drive->hwif; 604 ide_hwif_t *hwif = drive->hwif;
575 struct hd_driveid *id = drive->id; 605 struct hd_driveid *id = drive->id;
606 int ivb = ide_in_drive_list(id, ivb_list);
576 607
577 if (hwif->cbl == ATA_CBL_PATA40_SHORT) 608 if (hwif->cbl == ATA_CBL_PATA40_SHORT)
578 return 1; 609 return 1;
579 610
580 if (hwif->cbl != ATA_CBL_PATA80) 611 if (ivb)
612 printk(KERN_DEBUG "%s: skipping word 93 validity check\n",
613 drive->name);
614
615 if (hwif->cbl != ATA_CBL_PATA80 && !ivb)
581 goto no_80w; 616 goto no_80w;
582 617
583 /* Check for SATA but only if we are ATA5 or higher */ 618 /* Check for SATA but only if we are ATA5 or higher */
@@ -587,11 +622,11 @@ u8 eighty_ninty_three (ide_drive_t *drive)
587 /* 622 /*
588 * FIXME: 623 * FIXME:
589 * - change master/slave IDENTIFY order 624 * - change master/slave IDENTIFY order
590 * - force bit13 (80c cable present) check 625 * - force bit13 (80c cable present) check also for !ivb devices
591 * (unless the slave device is pre-ATA3) 626 * (unless the slave device is pre-ATA3)
592 */ 627 */
593#ifndef CONFIG_IDEDMA_IVB 628#ifndef CONFIG_IDEDMA_IVB
594 if (id->hw_config & 0x4000) 629 if ((id->hw_config & 0x4000) || (ivb && (id->hw_config & 0x2000)))
595#else 630#else
596 if (id->hw_config & 0x6000) 631 if (id->hw_config & 0x6000)
597#endif 632#endif
@@ -795,7 +830,7 @@ int ide_config_drive_speed (ide_drive_t *drive, u8 speed)
795 hwif->OUTB(drive->ctl | 2, IDE_CONTROL_REG); 830 hwif->OUTB(drive->ctl | 2, IDE_CONTROL_REG);
796 hwif->OUTB(speed, IDE_NSECTOR_REG); 831 hwif->OUTB(speed, IDE_NSECTOR_REG);
797 hwif->OUTB(SETFEATURES_XFER, IDE_FEATURE_REG); 832 hwif->OUTB(SETFEATURES_XFER, IDE_FEATURE_REG);
798 hwif->OUTB(WIN_SETFEATURES, IDE_COMMAND_REG); 833 hwif->OUTBSYNC(drive, WIN_SETFEATURES, IDE_COMMAND_REG);
799 if ((IDE_CONTROL_REG) && (drive->quirk_list == 2)) 834 if ((IDE_CONTROL_REG) && (drive->quirk_list == 2))
800 hwif->OUTB(drive->ctl, IDE_CONTROL_REG); 835 hwif->OUTB(drive->ctl, IDE_CONTROL_REG);
801 udelay(1); 836 udelay(1);
@@ -822,7 +857,7 @@ int ide_config_drive_speed (ide_drive_t *drive, u8 speed)
822 */ 857 */
823 for (i = 0; i < 10; i++) { 858 for (i = 0; i < 10; i++) {
824 udelay(1); 859 udelay(1);
825 if (OK_STAT((stat = hwif->INB(IDE_STATUS_REG)), DRIVE_READY, BUSY_STAT|DRQ_STAT|ERR_STAT)) { 860 if (OK_STAT((stat = hwif->INB(IDE_STATUS_REG)), drive->ready_stat, BUSY_STAT|DRQ_STAT|ERR_STAT)) {
826 error = 0; 861 error = 0;
827 break; 862 break;
828 } 863 }
diff --git a/drivers/ide/pci/cs5530.c b/drivers/ide/pci/cs5530.c
index acaf71fd4c09..e5949b1d3fb0 100644
--- a/drivers/ide/pci/cs5530.c
+++ b/drivers/ide/pci/cs5530.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * linux/drivers/ide/pci/cs5530.c Version 0.73 Mar 10 2007 2 * linux/drivers/ide/pci/cs5530.c Version 0.74 Jul 28 2007
3 * 3 *
4 * Copyright (C) 2000 Andre Hedrick <andre@linux-ide.org> 4 * Copyright (C) 2000 Andre Hedrick <andre@linux-ide.org>
5 * Copyright (C) 2000 Mark Lord <mlord@pobox.com> 5 * Copyright (C) 2000 Mark Lord <mlord@pobox.com>
@@ -207,6 +207,9 @@ static unsigned int __devinit init_chipset_cs5530 (struct pci_dev *dev, const ch
207 struct pci_dev *master_0 = NULL, *cs5530_0 = NULL; 207 struct pci_dev *master_0 = NULL, *cs5530_0 = NULL;
208 unsigned long flags; 208 unsigned long flags;
209 209
210 if (pci_resource_start(dev, 4) == 0)
211 return -EFAULT;
212
210 dev = NULL; 213 dev = NULL;
211 while ((dev = pci_get_device(PCI_VENDOR_ID_CYRIX, PCI_ANY_ID, dev)) != NULL) { 214 while ((dev = pci_get_device(PCI_VENDOR_ID_CYRIX, PCI_ANY_ID, dev)) != NULL) {
212 switch (dev->device) { 215 switch (dev->device) {
@@ -325,6 +328,9 @@ static void __devinit init_hwif_cs5530 (ide_hwif_t *hwif)
325 /* needs autotuning later */ 328 /* needs autotuning later */
326 } 329 }
327 330
331 if (hwif->dma_base == 0)
332 return;
333
328 hwif->atapi_dma = 1; 334 hwif->atapi_dma = 1;
329 hwif->ultra_mask = 0x07; 335 hwif->ultra_mask = 0x07;
330 hwif->mwdma_mask = 0x07; 336 hwif->mwdma_mask = 0x07;
diff --git a/drivers/ide/pci/hpt34x.c b/drivers/ide/pci/hpt34x.c
index 19778c5fe711..cb8fe5643d3b 100644
--- a/drivers/ide/pci/hpt34x.c
+++ b/drivers/ide/pci/hpt34x.c
@@ -89,11 +89,7 @@ static int hpt34x_config_drive_xfer_rate (ide_drive_t *drive)
89 drive->init_speed = 0; 89 drive->init_speed = 0;
90 90
91 if (ide_tune_dma(drive)) 91 if (ide_tune_dma(drive))
92#ifndef CONFIG_HPT34X_AUTODMA
93 return -1; 92 return -1;
94#else
95 return 0;
96#endif
97 93
98 if (ide_use_fast_pio(drive)) 94 if (ide_use_fast_pio(drive))
99 hpt34x_tune_drive(drive, 255); 95 hpt34x_tune_drive(drive, 255);
@@ -160,9 +156,11 @@ static void __devinit init_hwif_hpt34x(ide_hwif_t *hwif)
160 if (!hwif->dma_base) 156 if (!hwif->dma_base)
161 return; 157 return;
162 158
159#ifdef CONFIG_HPT34X_AUTODMA
163 hwif->ultra_mask = 0x07; 160 hwif->ultra_mask = 0x07;
164 hwif->mwdma_mask = 0x07; 161 hwif->mwdma_mask = 0x07;
165 hwif->swdma_mask = 0x07; 162 hwif->swdma_mask = 0x07;
163#endif
166 164
167 hwif->ide_dma_check = &hpt34x_config_drive_xfer_rate; 165 hwif->ide_dma_check = &hpt34x_config_drive_xfer_rate;
168 if (!noautodma) 166 if (!noautodma)
diff --git a/drivers/ide/pci/ns87415.c b/drivers/ide/pci/ns87415.c
index 09941f37d635..465c935fdf25 100644
--- a/drivers/ide/pci/ns87415.c
+++ b/drivers/ide/pci/ns87415.c
@@ -187,14 +187,6 @@ static int ns87415_ide_dma_setup(ide_drive_t *drive)
187 return 1; 187 return 1;
188} 188}
189 189
190static int ns87415_ide_dma_check (ide_drive_t *drive)
191{
192 if (drive->media != ide_disk)
193 return -1;
194
195 return __ide_dma_check(drive);
196}
197
198static void __devinit init_hwif_ns87415 (ide_hwif_t *hwif) 190static void __devinit init_hwif_ns87415 (ide_hwif_t *hwif)
199{ 191{
200 struct pci_dev *dev = hwif->pci_dev; 192 struct pci_dev *dev = hwif->pci_dev;
@@ -266,7 +258,6 @@ static void __devinit init_hwif_ns87415 (ide_hwif_t *hwif)
266 258
267 outb(0x60, hwif->dma_status); 259 outb(0x60, hwif->dma_status);
268 hwif->dma_setup = &ns87415_ide_dma_setup; 260 hwif->dma_setup = &ns87415_ide_dma_setup;
269 hwif->ide_dma_check = &ns87415_ide_dma_check;
270 hwif->ide_dma_end = &ns87415_ide_dma_end; 261 hwif->ide_dma_end = &ns87415_ide_dma_end;
271 262
272 if (!noautodma) 263 if (!noautodma)
diff --git a/drivers/ide/pci/pdc202xx_new.c b/drivers/ide/pci/pdc202xx_new.c
index 8a66a2871b3a..f6db2f37efad 100644
--- a/drivers/ide/pci/pdc202xx_new.c
+++ b/drivers/ide/pci/pdc202xx_new.c
@@ -378,6 +378,9 @@ static unsigned int __devinit init_chipset_pdcnew(struct pci_dev *dev, const cha
378 int f, r; 378 int f, r;
379 u8 pll_ctl0, pll_ctl1; 379 u8 pll_ctl0, pll_ctl1;
380 380
381 if (dma_base == 0)
382 return -EFAULT;
383
381#ifdef CONFIG_PPC_PMAC 384#ifdef CONFIG_PPC_PMAC
382 apple_kiwi_init(dev); 385 apple_kiwi_init(dev);
383#endif 386#endif
@@ -494,15 +497,18 @@ static void __devinit init_hwif_pdc202new(ide_hwif_t *hwif)
494 hwif->speedproc = &pdcnew_tune_chipset; 497 hwif->speedproc = &pdcnew_tune_chipset;
495 hwif->resetproc = &pdcnew_reset; 498 hwif->resetproc = &pdcnew_reset;
496 499
500 hwif->err_stops_fifo = 1;
501
497 hwif->drives[0].autotune = hwif->drives[1].autotune = 1; 502 hwif->drives[0].autotune = hwif->drives[1].autotune = 1;
498 503
504 if (hwif->dma_base == 0)
505 return;
506
499 hwif->atapi_dma = 1; 507 hwif->atapi_dma = 1;
500 508
501 hwif->ultra_mask = hwif->cds->udma_mask; 509 hwif->ultra_mask = hwif->cds->udma_mask;
502 hwif->mwdma_mask = 0x07; 510 hwif->mwdma_mask = 0x07;
503 511
504 hwif->err_stops_fifo = 1;
505
506 hwif->ide_dma_check = &pdcnew_config_drive_xfer_rate; 512 hwif->ide_dma_check = &pdcnew_config_drive_xfer_rate;
507 513
508 if (hwif->cbl != ATA_CBL_PATA40_SHORT) 514 if (hwif->cbl != ATA_CBL_PATA40_SHORT)
diff --git a/drivers/ide/pci/pdc202xx_old.c b/drivers/ide/pci/pdc202xx_old.c
index fbcb0bb9c956..e19a891171cb 100644
--- a/drivers/ide/pci/pdc202xx_old.c
+++ b/drivers/ide/pci/pdc202xx_old.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * linux/drivers/ide/pci/pdc202xx_old.c Version 0.50 Mar 3, 2007 2 * linux/drivers/ide/pci/pdc202xx_old.c Version 0.51 Jul 27, 2007
3 * 3 *
4 * Copyright (C) 1998-2002 Andre Hedrick <andre@linux-ide.org> 4 * Copyright (C) 1998-2002 Andre Hedrick <andre@linux-ide.org>
5 * Copyright (C) 2006-2007 MontaVista Software, Inc. 5 * Copyright (C) 2006-2007 MontaVista Software, Inc.
@@ -337,15 +337,18 @@ static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif)
337 337
338 hwif->speedproc = &pdc202xx_tune_chipset; 338 hwif->speedproc = &pdc202xx_tune_chipset;
339 339
340 hwif->err_stops_fifo = 1;
341
340 hwif->drives[0].autotune = hwif->drives[1].autotune = 1; 342 hwif->drives[0].autotune = hwif->drives[1].autotune = 1;
341 343
344 if (hwif->dma_base == 0)
345 return;
346
342 hwif->ultra_mask = hwif->cds->udma_mask; 347 hwif->ultra_mask = hwif->cds->udma_mask;
343 hwif->mwdma_mask = 0x07; 348 hwif->mwdma_mask = 0x07;
344 hwif->swdma_mask = 0x07; 349 hwif->swdma_mask = 0x07;
345 hwif->atapi_dma = 1; 350 hwif->atapi_dma = 1;
346 351
347 hwif->err_stops_fifo = 1;
348
349 hwif->ide_dma_check = &pdc202xx_config_drive_xfer_rate; 352 hwif->ide_dma_check = &pdc202xx_config_drive_xfer_rate;
350 hwif->dma_lost_irq = &pdc202xx_dma_lost_irq; 353 hwif->dma_lost_irq = &pdc202xx_dma_lost_irq;
351 hwif->dma_timeout = &pdc202xx_dma_timeout; 354 hwif->dma_timeout = &pdc202xx_dma_timeout;
diff --git a/drivers/ide/pci/triflex.c b/drivers/ide/pci/triflex.c
index 024bbfae0429..098692a6d615 100644
--- a/drivers/ide/pci/triflex.c
+++ b/drivers/ide/pci/triflex.c
@@ -115,6 +115,9 @@ static void __devinit init_hwif_triflex(ide_hwif_t *hwif)
115 hwif->tuneproc = &triflex_tune_drive; 115 hwif->tuneproc = &triflex_tune_drive;
116 hwif->speedproc = &triflex_tune_chipset; 116 hwif->speedproc = &triflex_tune_chipset;
117 117
118 if (hwif->dma_base == 0)
119 return;
120
118 hwif->atapi_dma = 1; 121 hwif->atapi_dma = 1;
119 hwif->mwdma_mask = 0x07; 122 hwif->mwdma_mask = 0x07;
120 hwif->swdma_mask = 0x07; 123 hwif->swdma_mask = 0x07;
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c
index 33630ad3e794..4b13cd9a027d 100644
--- a/drivers/ide/ppc/pmac.c
+++ b/drivers/ide/ppc/pmac.c
@@ -604,6 +604,9 @@ out:
604 drive->id->dma_1word |= 0x0101; break; 604 drive->id->dma_1word |= 0x0101; break;
605 default: break; 605 default: break;
606 } 606 }
607 if (!drive->init_speed)
608 drive->init_speed = command;
609 drive->current_speed = command;
607 } 610 }
608 enable_irq(hwif->irq); 611 enable_irq(hwif->irq);
609 return result; 612 return result;
@@ -986,7 +989,6 @@ pmac_ide_tune_chipset (ide_drive_t *drive, byte speed)
986 return ret; 989 return ret;
987 990
988 pmac_ide_do_update_timings(drive); 991 pmac_ide_do_update_timings(drive);
989 drive->current_speed = speed;
990 992
991 return 0; 993 return 0;
992} 994}
@@ -1737,11 +1739,6 @@ pmac_ide_mdma_enable(ide_drive_t *drive, u16 mode)
1737 /* Apply timings to controller */ 1739 /* Apply timings to controller */
1738 *timings = timing_local[0]; 1740 *timings = timing_local[0];
1739 *timings2 = timing_local[1]; 1741 *timings2 = timing_local[1];
1740
1741 /* Set speed info in drive */
1742 drive->current_speed = mode;
1743 if (!drive->init_speed)
1744 drive->init_speed = mode;
1745 1742
1746 return 1; 1743 return 1;
1747} 1744}
@@ -1793,11 +1790,6 @@ pmac_ide_udma_enable(ide_drive_t *drive, u16 mode)
1793 *timings = timing_local[0]; 1790 *timings = timing_local[0];
1794 *timings2 = timing_local[1]; 1791 *timings2 = timing_local[1];
1795 1792
1796 /* Set speed info in drive */
1797 drive->current_speed = mode;
1798 if (!drive->init_speed)
1799 drive->init_speed = mode;
1800
1801 return 1; 1793 return 1;
1802} 1794}
1803 1795
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c
index 47dbe8f17e82..a81ba8fca0db 100644
--- a/drivers/ieee1394/sbp2.c
+++ b/drivers/ieee1394/sbp2.c
@@ -513,9 +513,9 @@ static int sbp2util_create_command_orb_pool(struct sbp2_lu *lu)
513 return 0; 513 return 0;
514} 514}
515 515
516static void sbp2util_remove_command_orb_pool(struct sbp2_lu *lu) 516static void sbp2util_remove_command_orb_pool(struct sbp2_lu *lu,
517 struct hpsb_host *host)
517{ 518{
518 struct hpsb_host *host = lu->hi->host;
519 struct list_head *lh, *next; 519 struct list_head *lh, *next;
520 struct sbp2_command_info *cmd; 520 struct sbp2_command_info *cmd;
521 unsigned long flags; 521 unsigned long flags;
@@ -922,15 +922,16 @@ static void sbp2_remove_device(struct sbp2_lu *lu)
922 922
923 if (!lu) 923 if (!lu)
924 return; 924 return;
925
926 hi = lu->hi; 925 hi = lu->hi;
926 if (!hi)
927 goto no_hi;
927 928
928 if (lu->shost) { 929 if (lu->shost) {
929 scsi_remove_host(lu->shost); 930 scsi_remove_host(lu->shost);
930 scsi_host_put(lu->shost); 931 scsi_host_put(lu->shost);
931 } 932 }
932 flush_scheduled_work(); 933 flush_scheduled_work();
933 sbp2util_remove_command_orb_pool(lu); 934 sbp2util_remove_command_orb_pool(lu, hi->host);
934 935
935 list_del(&lu->lu_list); 936 list_del(&lu->lu_list);
936 937
@@ -971,9 +972,8 @@ static void sbp2_remove_device(struct sbp2_lu *lu)
971 972
972 lu->ud->device.driver_data = NULL; 973 lu->ud->device.driver_data = NULL;
973 974
974 if (hi) 975 module_put(hi->host->driver->owner);
975 module_put(hi->host->driver->owner); 976no_hi:
976
977 kfree(lu); 977 kfree(lu);
978} 978}
979 979
diff --git a/drivers/infiniband/core/agent.c b/drivers/infiniband/core/agent.c
index db2633e4aae6..ae7c2880e624 100644
--- a/drivers/infiniband/core/agent.c
+++ b/drivers/infiniband/core/agent.c
@@ -78,15 +78,14 @@ ib_get_agent_port(struct ib_device *device, int port_num)
78 return entry; 78 return entry;
79} 79}
80 80
81int agent_send_response(struct ib_mad *mad, struct ib_grh *grh, 81void agent_send_response(struct ib_mad *mad, struct ib_grh *grh,
82 struct ib_wc *wc, struct ib_device *device, 82 struct ib_wc *wc, struct ib_device *device,
83 int port_num, int qpn) 83 int port_num, int qpn)
84{ 84{
85 struct ib_agent_port_private *port_priv; 85 struct ib_agent_port_private *port_priv;
86 struct ib_mad_agent *agent; 86 struct ib_mad_agent *agent;
87 struct ib_mad_send_buf *send_buf; 87 struct ib_mad_send_buf *send_buf;
88 struct ib_ah *ah; 88 struct ib_ah *ah;
89 int ret;
90 struct ib_mad_send_wr_private *mad_send_wr; 89 struct ib_mad_send_wr_private *mad_send_wr;
91 90
92 if (device->node_type == RDMA_NODE_IB_SWITCH) 91 if (device->node_type == RDMA_NODE_IB_SWITCH)
@@ -96,23 +95,21 @@ int agent_send_response(struct ib_mad *mad, struct ib_grh *grh,
96 95
97 if (!port_priv) { 96 if (!port_priv) {
98 printk(KERN_ERR SPFX "Unable to find port agent\n"); 97 printk(KERN_ERR SPFX "Unable to find port agent\n");
99 return -ENODEV; 98 return;
100 } 99 }
101 100
102 agent = port_priv->agent[qpn]; 101 agent = port_priv->agent[qpn];
103 ah = ib_create_ah_from_wc(agent->qp->pd, wc, grh, port_num); 102 ah = ib_create_ah_from_wc(agent->qp->pd, wc, grh, port_num);
104 if (IS_ERR(ah)) { 103 if (IS_ERR(ah)) {
105 ret = PTR_ERR(ah); 104 printk(KERN_ERR SPFX "ib_create_ah_from_wc error\n");
106 printk(KERN_ERR SPFX "ib_create_ah_from_wc error:%d\n", ret); 105 return;
107 return ret;
108 } 106 }
109 107
110 send_buf = ib_create_send_mad(agent, wc->src_qp, wc->pkey_index, 0, 108 send_buf = ib_create_send_mad(agent, wc->src_qp, wc->pkey_index, 0,
111 IB_MGMT_MAD_HDR, IB_MGMT_MAD_DATA, 109 IB_MGMT_MAD_HDR, IB_MGMT_MAD_DATA,
112 GFP_KERNEL); 110 GFP_KERNEL);
113 if (IS_ERR(send_buf)) { 111 if (IS_ERR(send_buf)) {
114 ret = PTR_ERR(send_buf); 112 printk(KERN_ERR SPFX "ib_create_send_mad error\n");
115 printk(KERN_ERR SPFX "ib_create_send_mad error:%d\n", ret);
116 goto err1; 113 goto err1;
117 } 114 }
118 115
@@ -126,16 +123,15 @@ int agent_send_response(struct ib_mad *mad, struct ib_grh *grh,
126 mad_send_wr->send_wr.wr.ud.port_num = port_num; 123 mad_send_wr->send_wr.wr.ud.port_num = port_num;
127 } 124 }
128 125
129 if ((ret = ib_post_send_mad(send_buf, NULL))) { 126 if (ib_post_send_mad(send_buf, NULL)) {
130 printk(KERN_ERR SPFX "ib_post_send_mad error:%d\n", ret); 127 printk(KERN_ERR SPFX "ib_post_send_mad error\n");
131 goto err2; 128 goto err2;
132 } 129 }
133 return 0; 130 return;
134err2: 131err2:
135 ib_free_send_mad(send_buf); 132 ib_free_send_mad(send_buf);
136err1: 133err1:
137 ib_destroy_ah(ah); 134 ib_destroy_ah(ah);
138 return ret;
139} 135}
140 136
141static void agent_send_handler(struct ib_mad_agent *mad_agent, 137static void agent_send_handler(struct ib_mad_agent *mad_agent,
diff --git a/drivers/infiniband/core/agent.h b/drivers/infiniband/core/agent.h
index 86d72fab37b0..fb9ed1489f95 100644
--- a/drivers/infiniband/core/agent.h
+++ b/drivers/infiniband/core/agent.h
@@ -46,8 +46,8 @@ extern int ib_agent_port_open(struct ib_device *device, int port_num);
46 46
47extern int ib_agent_port_close(struct ib_device *device, int port_num); 47extern int ib_agent_port_close(struct ib_device *device, int port_num);
48 48
49extern int agent_send_response(struct ib_mad *mad, struct ib_grh *grh, 49extern void agent_send_response(struct ib_mad *mad, struct ib_grh *grh,
50 struct ib_wc *wc, struct ib_device *device, 50 struct ib_wc *wc, struct ib_device *device,
51 int port_num, int qpn); 51 int port_num, int qpn);
52 52
53#endif /* __AGENT_H_ */ 53#endif /* __AGENT_H_ */
diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index 3ada17c0f239..2506c43ba041 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -702,7 +702,7 @@ int ib_find_pkey(struct ib_device *device,
702 if (ret) 702 if (ret)
703 return ret; 703 return ret;
704 704
705 if (pkey == tmp_pkey) { 705 if ((pkey & 0x7fff) == (tmp_pkey & 0x7fff)) {
706 *index = i; 706 *index = i;
707 return 0; 707 return 0;
708 } 708 }
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index bc547f1d34ba..6f4287716ab1 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -1842,16 +1842,11 @@ static void ib_mad_recv_done_handler(struct ib_mad_port_private *port_priv,
1842{ 1842{
1843 struct ib_mad_qp_info *qp_info; 1843 struct ib_mad_qp_info *qp_info;
1844 struct ib_mad_private_header *mad_priv_hdr; 1844 struct ib_mad_private_header *mad_priv_hdr;
1845 struct ib_mad_private *recv, *response; 1845 struct ib_mad_private *recv, *response = NULL;
1846 struct ib_mad_list_head *mad_list; 1846 struct ib_mad_list_head *mad_list;
1847 struct ib_mad_agent_private *mad_agent; 1847 struct ib_mad_agent_private *mad_agent;
1848 int port_num; 1848 int port_num;
1849 1849
1850 response = kmem_cache_alloc(ib_mad_cache, GFP_KERNEL);
1851 if (!response)
1852 printk(KERN_ERR PFX "ib_mad_recv_done_handler no memory "
1853 "for response buffer\n");
1854
1855 mad_list = (struct ib_mad_list_head *)(unsigned long)wc->wr_id; 1850 mad_list = (struct ib_mad_list_head *)(unsigned long)wc->wr_id;
1856 qp_info = mad_list->mad_queue->qp_info; 1851 qp_info = mad_list->mad_queue->qp_info;
1857 dequeue_mad(mad_list); 1852 dequeue_mad(mad_list);
@@ -1879,6 +1874,13 @@ static void ib_mad_recv_done_handler(struct ib_mad_port_private *port_priv,
1879 if (!validate_mad(&recv->mad.mad, qp_info->qp->qp_num)) 1874 if (!validate_mad(&recv->mad.mad, qp_info->qp->qp_num))
1880 goto out; 1875 goto out;
1881 1876
1877 response = kmem_cache_alloc(ib_mad_cache, GFP_KERNEL);
1878 if (!response) {
1879 printk(KERN_ERR PFX "ib_mad_recv_done_handler no memory "
1880 "for response buffer\n");
1881 goto out;
1882 }
1883
1882 if (port_priv->device->node_type == RDMA_NODE_IB_SWITCH) 1884 if (port_priv->device->node_type == RDMA_NODE_IB_SWITCH)
1883 port_num = wc->port_num; 1885 port_num = wc->port_num;
1884 else 1886 else
@@ -1914,12 +1916,11 @@ static void ib_mad_recv_done_handler(struct ib_mad_port_private *port_priv,
1914 response->header.recv_wc.recv_buf.mad = &response->mad.mad; 1916 response->header.recv_wc.recv_buf.mad = &response->mad.mad;
1915 response->header.recv_wc.recv_buf.grh = &response->grh; 1917 response->header.recv_wc.recv_buf.grh = &response->grh;
1916 1918
1917 if (!agent_send_response(&response->mad.mad, 1919 agent_send_response(&response->mad.mad,
1918 &response->grh, wc, 1920 &response->grh, wc,
1919 port_priv->device, 1921 port_priv->device,
1920 smi_get_fwd_port(&recv->mad.smp), 1922 smi_get_fwd_port(&recv->mad.smp),
1921 qp_info->qp->qp_num)) 1923 qp_info->qp->qp_num);
1922 response = NULL;
1923 1924
1924 goto out; 1925 goto out;
1925 } 1926 }
diff --git a/drivers/infiniband/core/mad_rmpp.c b/drivers/infiniband/core/mad_rmpp.c
index 3663fd7022be..d43bc62005b3 100644
--- a/drivers/infiniband/core/mad_rmpp.c
+++ b/drivers/infiniband/core/mad_rmpp.c
@@ -163,8 +163,10 @@ static struct ib_mad_send_buf *alloc_response_msg(struct ib_mad_agent *agent,
163 hdr_len, 0, GFP_KERNEL); 163 hdr_len, 0, GFP_KERNEL);
164 if (IS_ERR(msg)) 164 if (IS_ERR(msg))
165 ib_destroy_ah(ah); 165 ib_destroy_ah(ah);
166 else 166 else {
167 msg->ah = ah; 167 msg->ah = ah;
168 msg->context[0] = ah;
169 }
168 170
169 return msg; 171 return msg;
170} 172}
@@ -197,9 +199,7 @@ static void ack_ds_ack(struct ib_mad_agent_private *agent,
197 199
198void ib_rmpp_send_handler(struct ib_mad_send_wc *mad_send_wc) 200void ib_rmpp_send_handler(struct ib_mad_send_wc *mad_send_wc)
199{ 201{
200 struct ib_rmpp_mad *rmpp_mad = mad_send_wc->send_buf->mad; 202 if (mad_send_wc->send_buf->context[0] == mad_send_wc->send_buf->ah)
201
202 if (rmpp_mad->rmpp_hdr.rmpp_type != IB_MGMT_RMPP_TYPE_ACK)
203 ib_destroy_ah(mad_send_wc->send_buf->ah); 203 ib_destroy_ah(mad_send_wc->send_buf->ah);
204 ib_free_send_mad(mad_send_wc->send_buf); 204 ib_free_send_mad(mad_send_wc->send_buf);
205} 205}
diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c
index 20ab6b3e484d..d271bd715c12 100644
--- a/drivers/infiniband/core/sa_query.c
+++ b/drivers/infiniband/core/sa_query.c
@@ -385,9 +385,7 @@ static void update_sm_ah(struct work_struct *work)
385 385
386 new_ah->pkey_index = 0; 386 new_ah->pkey_index = 0;
387 if (ib_find_pkey(port->agent->device, port->port_num, 387 if (ib_find_pkey(port->agent->device, port->port_num,
388 IB_DEFAULT_PKEY_FULL, &new_ah->pkey_index) && 388 IB_DEFAULT_PKEY_FULL, &new_ah->pkey_index))
389 ib_find_pkey(port->agent->device, port->port_num,
390 IB_DEFAULT_PKEY_PARTIAL, &new_ah->pkey_index))
391 printk(KERN_ERR "Couldn't find index for default PKey\n"); 389 printk(KERN_ERR "Couldn't find index for default PKey\n");
392 390
393 memset(&ah_attr, 0, sizeof ah_attr); 391 memset(&ah_attr, 0, sizeof ah_attr);
diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index 26d0470eef6e..664d2faa9e74 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -40,6 +40,11 @@
40 40
41#include "uverbs.h" 41#include "uverbs.h"
42 42
43#define IB_UMEM_MAX_PAGE_CHUNK \
44 ((PAGE_SIZE - offsetof(struct ib_umem_chunk, page_list)) / \
45 ((void *) &((struct ib_umem_chunk *) 0)->page_list[1] - \
46 (void *) &((struct ib_umem_chunk *) 0)->page_list[0]))
47
43static void __ib_umem_release(struct ib_device *dev, struct ib_umem *umem, int dirty) 48static void __ib_umem_release(struct ib_device *dev, struct ib_umem *umem, int dirty)
44{ 49{
45 struct ib_umem_chunk *chunk, *tmp; 50 struct ib_umem_chunk *chunk, *tmp;
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c
index 9574088f0d4e..1cdfcd43b0bc 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_cm.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_cm.c
@@ -139,7 +139,7 @@ static void release_tid(struct t3cdev *tdev, u32 hwtid, struct sk_buff *skb)
139 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); 139 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
140 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_TID_RELEASE, hwtid)); 140 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_TID_RELEASE, hwtid));
141 skb->priority = CPL_PRIORITY_SETUP; 141 skb->priority = CPL_PRIORITY_SETUP;
142 tdev->send(tdev, skb); 142 cxgb3_ofld_send(tdev, skb);
143 return; 143 return;
144} 144}
145 145
@@ -161,7 +161,7 @@ int iwch_quiesce_tid(struct iwch_ep *ep)
161 req->val = cpu_to_be64(1 << S_TCB_RX_QUIESCE); 161 req->val = cpu_to_be64(1 << S_TCB_RX_QUIESCE);
162 162
163 skb->priority = CPL_PRIORITY_DATA; 163 skb->priority = CPL_PRIORITY_DATA;
164 ep->com.tdev->send(ep->com.tdev, skb); 164 cxgb3_ofld_send(ep->com.tdev, skb);
165 return 0; 165 return 0;
166} 166}
167 167
@@ -183,7 +183,7 @@ int iwch_resume_tid(struct iwch_ep *ep)
183 req->val = 0; 183 req->val = 0;
184 184
185 skb->priority = CPL_PRIORITY_DATA; 185 skb->priority = CPL_PRIORITY_DATA;
186 ep->com.tdev->send(ep->com.tdev, skb); 186 cxgb3_ofld_send(ep->com.tdev, skb);
187 return 0; 187 return 0;
188} 188}
189 189
@@ -784,7 +784,7 @@ static int update_rx_credits(struct iwch_ep *ep, u32 credits)
784 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_RX_DATA_ACK, ep->hwtid)); 784 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_RX_DATA_ACK, ep->hwtid));
785 req->credit_dack = htonl(V_RX_CREDITS(credits) | V_RX_FORCE_ACK(1)); 785 req->credit_dack = htonl(V_RX_CREDITS(credits) | V_RX_FORCE_ACK(1));
786 skb->priority = CPL_PRIORITY_ACK; 786 skb->priority = CPL_PRIORITY_ACK;
787 ep->com.tdev->send(ep->com.tdev, skb); 787 cxgb3_ofld_send(ep->com.tdev, skb);
788 return credits; 788 return credits;
789} 789}
790 790
@@ -1152,7 +1152,7 @@ static int listen_start(struct iwch_listen_ep *ep)
1152 req->opt1 = htonl(V_CONN_POLICY(CPL_CONN_POLICY_ASK)); 1152 req->opt1 = htonl(V_CONN_POLICY(CPL_CONN_POLICY_ASK));
1153 1153
1154 skb->priority = 1; 1154 skb->priority = 1;
1155 ep->com.tdev->send(ep->com.tdev, skb); 1155 cxgb3_ofld_send(ep->com.tdev, skb);
1156 return 0; 1156 return 0;
1157} 1157}
1158 1158
@@ -1186,7 +1186,7 @@ static int listen_stop(struct iwch_listen_ep *ep)
1186 req->cpu_idx = 0; 1186 req->cpu_idx = 0;
1187 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_LISTSRV_REQ, ep->stid)); 1187 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_LISTSRV_REQ, ep->stid));
1188 skb->priority = 1; 1188 skb->priority = 1;
1189 ep->com.tdev->send(ep->com.tdev, skb); 1189 cxgb3_ofld_send(ep->com.tdev, skb);
1190 return 0; 1190 return 0;
1191} 1191}
1192 1192
@@ -1264,7 +1264,7 @@ static void reject_cr(struct t3cdev *tdev, u32 hwtid, __be32 peer_ip,
1264 rpl->opt0l_status = htonl(CPL_PASS_OPEN_REJECT); 1264 rpl->opt0l_status = htonl(CPL_PASS_OPEN_REJECT);
1265 rpl->opt2 = 0; 1265 rpl->opt2 = 0;
1266 rpl->rsvd = rpl->opt2; 1266 rpl->rsvd = rpl->opt2;
1267 tdev->send(tdev, skb); 1267 cxgb3_ofld_send(tdev, skb);
1268 } 1268 }
1269} 1269}
1270 1270
@@ -1557,7 +1557,7 @@ static int peer_abort(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
1557 rpl->wr.wr_lo = htonl(V_WR_TID(ep->hwtid)); 1557 rpl->wr.wr_lo = htonl(V_WR_TID(ep->hwtid));
1558 OPCODE_TID(rpl) = htonl(MK_OPCODE_TID(CPL_ABORT_RPL, ep->hwtid)); 1558 OPCODE_TID(rpl) = htonl(MK_OPCODE_TID(CPL_ABORT_RPL, ep->hwtid));
1559 rpl->cmd = CPL_ABORT_NO_RST; 1559 rpl->cmd = CPL_ABORT_NO_RST;
1560 ep->com.tdev->send(ep->com.tdev, rpl_skb); 1560 cxgb3_ofld_send(ep->com.tdev, rpl_skb);
1561 if (state != ABORTING) { 1561 if (state != ABORTING) {
1562 state_set(&ep->com, DEAD); 1562 state_set(&ep->com, DEAD);
1563 release_ep_resources(ep); 1563 release_ep_resources(ep);
diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c
index 660b27aecae5..8bf44daf45ec 100644
--- a/drivers/infiniband/hw/mlx4/cq.c
+++ b/drivers/infiniband/hw/mlx4/cq.c
@@ -389,7 +389,7 @@ static int mlx4_ib_poll_one(struct mlx4_ib_cq *cq,
389 wc->opcode = IB_WC_SEND; 389 wc->opcode = IB_WC_SEND;
390 break; 390 break;
391 case MLX4_OPCODE_RDMA_READ: 391 case MLX4_OPCODE_RDMA_READ:
392 wc->opcode = IB_WC_SEND; 392 wc->opcode = IB_WC_RDMA_READ;
393 wc->byte_len = be32_to_cpu(cqe->byte_cnt); 393 wc->byte_len = be32_to_cpu(cqe->byte_cnt);
394 break; 394 break;
395 case MLX4_OPCODE_ATOMIC_CS: 395 case MLX4_OPCODE_ATOMIC_CS:
diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c
index 333091787c5f..0ed02b7834da 100644
--- a/drivers/infiniband/hw/mlx4/mad.c
+++ b/drivers/infiniband/hw/mlx4/mad.c
@@ -109,7 +109,7 @@ int mlx4_MAD_IFC(struct mlx4_ib_dev *dev, int ignore_mkey, int ignore_bkey,
109 in_modifier, op_modifier, 109 in_modifier, op_modifier,
110 MLX4_CMD_MAD_IFC, MLX4_CMD_TIME_CLASS_C); 110 MLX4_CMD_MAD_IFC, MLX4_CMD_TIME_CLASS_C);
111 111
112 if (!err); 112 if (!err)
113 memcpy(response_mad, outmailbox->buf, 256); 113 memcpy(response_mad, outmailbox->buf, 256);
114 114
115 mlx4_free_cmd_mailbox(dev->dev, inmailbox); 115 mlx4_free_cmd_mailbox(dev->dev, inmailbox);
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_verbs.c b/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
index 982eb88e27ec..563aeacf9e14 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
@@ -211,6 +211,7 @@ out_free_cq:
211 211
212out_free_mr: 212out_free_mr:
213 ib_dereg_mr(priv->mr); 213 ib_dereg_mr(priv->mr);
214 ipoib_cm_dev_cleanup(dev);
214 215
215out_free_pd: 216out_free_pd:
216 ib_dealloc_pd(priv->pd); 217 ib_dealloc_pd(priv->pd);
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index f01ca182f226..f6a051428144 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -75,16 +75,12 @@ module_param(topspin_workarounds, int, 0444);
75MODULE_PARM_DESC(topspin_workarounds, 75MODULE_PARM_DESC(topspin_workarounds,
76 "Enable workarounds for Topspin/Cisco SRP target bugs if != 0"); 76 "Enable workarounds for Topspin/Cisco SRP target bugs if != 0");
77 77
78static const u8 topspin_oui[3] = { 0x00, 0x05, 0xad };
79
80static int mellanox_workarounds = 1; 78static int mellanox_workarounds = 1;
81 79
82module_param(mellanox_workarounds, int, 0444); 80module_param(mellanox_workarounds, int, 0444);
83MODULE_PARM_DESC(mellanox_workarounds, 81MODULE_PARM_DESC(mellanox_workarounds,
84 "Enable workarounds for Mellanox SRP target bugs if != 0"); 82 "Enable workarounds for Mellanox SRP target bugs if != 0");
85 83
86static const u8 mellanox_oui[3] = { 0x00, 0x02, 0xc9 };
87
88static void srp_add_one(struct ib_device *device); 84static void srp_add_one(struct ib_device *device);
89static void srp_remove_one(struct ib_device *device); 85static void srp_remove_one(struct ib_device *device);
90static void srp_completion(struct ib_cq *cq, void *target_ptr); 86static void srp_completion(struct ib_cq *cq, void *target_ptr);
@@ -108,6 +104,24 @@ static const char *srp_target_info(struct Scsi_Host *host)
108 return host_to_target(host)->target_name; 104 return host_to_target(host)->target_name;
109} 105}
110 106
107static int srp_target_is_topspin(struct srp_target_port *target)
108{
109 static const u8 topspin_oui[3] = { 0x00, 0x05, 0xad };
110 static const u8 cisco_oui[3] = { 0x00, 0x1b, 0x0d };
111
112 return topspin_workarounds &&
113 (!memcmp(&target->ioc_guid, topspin_oui, sizeof topspin_oui) ||
114 !memcmp(&target->ioc_guid, cisco_oui, sizeof cisco_oui));
115}
116
117static int srp_target_is_mellanox(struct srp_target_port *target)
118{
119 static const u8 mellanox_oui[3] = { 0x00, 0x02, 0xc9 };
120
121 return mellanox_workarounds &&
122 !memcmp(&target->ioc_guid, mellanox_oui, sizeof mellanox_oui);
123}
124
111static struct srp_iu *srp_alloc_iu(struct srp_host *host, size_t size, 125static struct srp_iu *srp_alloc_iu(struct srp_host *host, size_t size,
112 gfp_t gfp_mask, 126 gfp_t gfp_mask,
113 enum dma_data_direction direction) 127 enum dma_data_direction direction)
@@ -360,7 +374,7 @@ static int srp_send_req(struct srp_target_port *target)
360 * zero out the first 8 bytes of our initiator port ID and set 374 * zero out the first 8 bytes of our initiator port ID and set
361 * the second 8 bytes to the local node GUID. 375 * the second 8 bytes to the local node GUID.
362 */ 376 */
363 if (topspin_workarounds && !memcmp(&target->ioc_guid, topspin_oui, 3)) { 377 if (srp_target_is_topspin(target)) {
364 printk(KERN_DEBUG PFX "Topspin/Cisco initiator port ID workaround " 378 printk(KERN_DEBUG PFX "Topspin/Cisco initiator port ID workaround "
365 "activated for target GUID %016llx\n", 379 "activated for target GUID %016llx\n",
366 (unsigned long long) be64_to_cpu(target->ioc_guid)); 380 (unsigned long long) be64_to_cpu(target->ioc_guid));
@@ -585,8 +599,8 @@ static int srp_map_fmr(struct srp_target_port *target, struct scatterlist *scat,
585 if (!dev->fmr_pool) 599 if (!dev->fmr_pool)
586 return -ENODEV; 600 return -ENODEV;
587 601
588 if ((ib_sg_dma_address(ibdev, &scat[0]) & ~dev->fmr_page_mask) && 602 if (srp_target_is_mellanox(target) &&
589 mellanox_workarounds && !memcmp(&target->ioc_guid, mellanox_oui, 3)) 603 (ib_sg_dma_address(ibdev, &scat[0]) & ~dev->fmr_page_mask))
590 return -EINVAL; 604 return -EINVAL;
591 605
592 len = page_cnt = 0; 606 len = page_cnt = 0;
@@ -1087,8 +1101,7 @@ static void srp_cm_rej_handler(struct ib_cm_id *cm_id,
1087 break; 1101 break;
1088 1102
1089 case IB_CM_REJ_PORT_REDIRECT: 1103 case IB_CM_REJ_PORT_REDIRECT:
1090 if (topspin_workarounds && 1104 if (srp_target_is_topspin(target)) {
1091 !memcmp(&target->ioc_guid, topspin_oui, 3)) {
1092 /* 1105 /*
1093 * Topspin/Cisco SRP gateways incorrectly send 1106 * Topspin/Cisco SRP gateways incorrectly send
1094 * reject reason code 25 when they mean 24 1107 * reject reason code 25 when they mean 24
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index 9b26574f1466..d602b8fa7d46 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -68,6 +68,7 @@ config INPUT_WISTRON_BTNS
68 select INPUT_POLLDEV 68 select INPUT_POLLDEV
69 select NEW_LEDS 69 select NEW_LEDS
70 select LEDS_CLASS 70 select LEDS_CLASS
71 select CHECK_SIGNATURE
71 help 72 help
72 Say Y here for support of Winstron laptop button interface, used on 73 Say Y here for support of Winstron laptop button interface, used on
73 laptops of various brands, including Acer and Fujitsu-Siemens. If 74 laptops of various brands, including Acer and Fujitsu-Siemens. If
diff --git a/drivers/isdn/hisax/hfc_usb.c b/drivers/isdn/hisax/hfc_usb.c
index b1a26e02df02..60843b3f3b6f 100644
--- a/drivers/isdn/hisax/hfc_usb.c
+++ b/drivers/isdn/hisax/hfc_usb.c
@@ -1,12 +1,12 @@
1/* 1/*
2 * hfc_usb.c 2 * hfc_usb.c
3 * 3 *
4 * $Id: hfc_usb.c,v 2.3.2.13 2006/02/17 17:17:22 mbachem Exp $ 4 * $Id: hfc_usb.c,v 2.3.2.20 2007/08/20 14:07:54 mbachem Exp $
5 * 5 *
6 * modular HiSax ISDN driver for Colognechip HFC-S USB chip 6 * modular HiSax ISDN driver for Colognechip HFC-S USB chip
7 * 7 *
8 * Authors : Peter Sprenger (sprenger@moving-bytes.de) 8 * Authors : Peter Sprenger (sprenger@moving-bytes.de)
9 * Martin Bachem (info@colognechip.com) 9 * Martin Bachem (m.bachem@gmx.de, info@colognechip.com)
10 * 10 *
11 * based on the first hfc_usb driver of 11 * based on the first hfc_usb driver of
12 * Werner Cornelius (werner@isdn-development.de) 12 * Werner Cornelius (werner@isdn-development.de)
@@ -37,24 +37,25 @@
37#include <linux/kernel_stat.h> 37#include <linux/kernel_stat.h>
38#include <linux/usb.h> 38#include <linux/usb.h>
39#include <linux/kernel.h> 39#include <linux/kernel.h>
40#include <linux/smp_lock.h>
41#include <linux/sched.h>
42#include <linux/moduleparam.h>
40#include "hisax.h" 43#include "hisax.h"
41#include "hisax_if.h" 44#include "hisax_if.h"
42#include "hfc_usb.h" 45#include "hfc_usb.h"
43 46
44static const char *hfcusb_revision = 47static const char *hfcusb_revision =
45 "$Revision: 2.3.2.13 $ $Date: 2006/02/17 17:17:22 $ "; 48 "$Revision: 2.3.2.20 $ $Date: 2007/08/20 14:07:54 $ ";
46 49
47/* Hisax debug support 50/* Hisax debug support
48* use "modprobe debug=x" where x is bitfield of USB_DBG & ISDN_DBG 51* debug flags defined in hfc_usb.h as HFCUSB_DBG_[*]
49*/ 52*/
50#ifdef CONFIG_HISAX_DEBUG
51#include <linux/moduleparam.h>
52#define __debug_variable hfc_debug 53#define __debug_variable hfc_debug
53#include "hisax_debug.h" 54#include "hisax_debug.h"
54static u_int debug; 55static u_int debug;
55module_param(debug, uint, 0); 56module_param(debug, uint, 0);
56static int hfc_debug; 57static int hfc_debug;
57#endif 58
58 59
59/* private vendor specific data */ 60/* private vendor specific data */
60typedef struct { 61typedef struct {
@@ -63,9 +64,7 @@ typedef struct {
63 char *vend_name; // device name 64 char *vend_name; // device name
64} hfcsusb_vdata; 65} hfcsusb_vdata;
65 66
66/****************************************/ 67/* VID/PID device list */
67/* data defining the devices to be used */
68/****************************************/
69static struct usb_device_id hfcusb_idtab[] = { 68static struct usb_device_id hfcusb_idtab[] = {
70 { 69 {
71 USB_DEVICE(0x0959, 0x2bd0), 70 USB_DEVICE(0x0959, 0x2bd0),
@@ -90,49 +89,47 @@ static struct usb_device_id hfcusb_idtab[] = {
90 .driver_info = (unsigned long) &((hfcsusb_vdata) 89 .driver_info = (unsigned long) &((hfcsusb_vdata)
91 {LED_SCHEME1, {4, 0, 2, 1}, 90 {LED_SCHEME1, {4, 0, 2, 1},
92 "Stollmann USB TA"}), 91 "Stollmann USB TA"}),
93 }, 92 },
94 { 93 {
95 USB_DEVICE(0x0742, 0x2009), 94 USB_DEVICE(0x0742, 0x2009),
96 .driver_info = (unsigned long) &((hfcsusb_vdata) 95 .driver_info = (unsigned long) &((hfcsusb_vdata)
97 {LED_SCHEME1, {4, 0, 2, 1}, 96 {LED_SCHEME1, {4, 0, 2, 1},
98 "Aceex USB ISDN TA"}), 97 "Aceex USB ISDN TA"}),
99 }, 98 },
100 { 99 {
101 USB_DEVICE(0x0742, 0x200A), 100 USB_DEVICE(0x0742, 0x200A),
102 .driver_info = (unsigned long) &((hfcsusb_vdata) 101 .driver_info = (unsigned long) &((hfcsusb_vdata)
103 {LED_SCHEME1, {4, 0, 2, 1}, 102 {LED_SCHEME1, {4, 0, 2, 1},
104 "OEM USB ISDN TA"}), 103 "OEM USB ISDN TA"}),
105 }, 104 },
106 { 105 {
107 USB_DEVICE(0x08e3, 0x0301), 106 USB_DEVICE(0x08e3, 0x0301),
108 .driver_info = (unsigned long) &((hfcsusb_vdata) 107 .driver_info = (unsigned long) &((hfcsusb_vdata)
109 {LED_SCHEME1, {2, 0, 1, 4}, 108 {LED_SCHEME1, {2, 0, 1, 4},
110 "Olitec USB RNIS"}), 109 "Olitec USB RNIS"}),
111 }, 110 },
112 { 111 {
113 USB_DEVICE(0x07fa, 0x0846), 112 USB_DEVICE(0x07fa, 0x0846),
114 .driver_info = (unsigned long) &((hfcsusb_vdata) 113 .driver_info = (unsigned long) &((hfcsusb_vdata)
115 {LED_SCHEME1, {0x80, -64, -32, -16}, 114 {LED_SCHEME1, {0x80, -64, -32, -16},
116 "Bewan Modem RNIS USB"}), 115 "Bewan Modem RNIS USB"}),
117 }, 116 },
118 { 117 {
119 USB_DEVICE(0x07fa, 0x0847), 118 USB_DEVICE(0x07fa, 0x0847),
120 .driver_info = (unsigned long) &((hfcsusb_vdata) 119 .driver_info = (unsigned long) &((hfcsusb_vdata)
121 {LED_SCHEME1, {0x80, -64, -32, -16}, 120 {LED_SCHEME1, {0x80, -64, -32, -16},
122 "Djinn Numeris USB"}), 121 "Djinn Numeris USB"}),
123 }, 122 },
124 { 123 {
125 USB_DEVICE(0x07b0, 0x0006), 124 USB_DEVICE(0x07b0, 0x0006),
126 .driver_info = (unsigned long) &((hfcsusb_vdata) 125 .driver_info = (unsigned long) &((hfcsusb_vdata)
127 {LED_SCHEME1, {0x80, -64, -32, -16}, 126 {LED_SCHEME1, {0x80, -64, -32, -16},
128 "Twister ISDN TA"}), 127 "Twister ISDN TA"}),
129 }, 128 },
130 { } 129 { }
131}; 130};
132 131
133/***************************************************************/
134/* structure defining input+output fifos (interrupt/bulk mode) */ 132/* structure defining input+output fifos (interrupt/bulk mode) */
135/***************************************************************/
136struct usb_fifo; /* forward definition */ 133struct usb_fifo; /* forward definition */
137typedef struct iso_urb_struct { 134typedef struct iso_urb_struct {
138 struct urb *purb; 135 struct urb *purb;
@@ -140,8 +137,8 @@ typedef struct iso_urb_struct {
140 struct usb_fifo *owner_fifo; /* pointer to owner fifo */ 137 struct usb_fifo *owner_fifo; /* pointer to owner fifo */
141} iso_urb_struct; 138} iso_urb_struct;
142 139
143
144struct hfcusb_data; /* forward definition */ 140struct hfcusb_data; /* forward definition */
141
145typedef struct usb_fifo { 142typedef struct usb_fifo {
146 int fifonum; /* fifo index attached to this structure */ 143 int fifonum; /* fifo index attached to this structure */
147 int active; /* fifo is currently active */ 144 int active; /* fifo is currently active */
@@ -160,15 +157,12 @@ typedef struct usb_fifo {
160 struct hisax_if *hif; /* hisax interface */ 157 struct hisax_if *hif; /* hisax interface */
161 int delete_flg; /* only delete skbuff once */ 158 int delete_flg; /* only delete skbuff once */
162 int last_urblen; /* remember length of last packet */ 159 int last_urblen; /* remember length of last packet */
163
164} usb_fifo; 160} usb_fifo;
165 161
166/*********************************************/
167/* structure holding all data for one device */ 162/* structure holding all data for one device */
168/*********************************************/
169typedef struct hfcusb_data { 163typedef struct hfcusb_data {
170 /* HiSax Interface for loadable Layer1 drivers */ 164 /* HiSax Interface for loadable Layer1 drivers */
171 struct hisax_d_if d_if; /* see hisax_if.h */ 165 struct hisax_d_if d_if; /* see hisax_if.h */
172 struct hisax_b_if b_if[2]; /* see hisax_if.h */ 166 struct hisax_b_if b_if[2]; /* see hisax_if.h */
173 int protocol; 167 int protocol;
174 168
@@ -176,12 +170,13 @@ typedef struct hfcusb_data {
176 int if_used; /* used interface number */ 170 int if_used; /* used interface number */
177 int alt_used; /* used alternate config */ 171 int alt_used; /* used alternate config */
178 int ctrl_paksize; /* control pipe packet size */ 172 int ctrl_paksize; /* control pipe packet size */
179 int ctrl_in_pipe, ctrl_out_pipe; /* handles for control pipe */ 173 int ctrl_in_pipe, /* handles for control pipe */
174 ctrl_out_pipe;
180 int cfg_used; /* configuration index used */ 175 int cfg_used; /* configuration index used */
181 int vend_idx; /* vendor found */ 176 int vend_idx; /* vendor found */
182 int b_mode[2]; /* B-channel mode */ 177 int b_mode[2]; /* B-channel mode */
183 int l1_activated; /* layer 1 activated */ 178 int l1_activated; /* layer 1 activated */
184 int disc_flag; /* 'true' if device was disonnected to avoid some USB actions */ 179 int disc_flag; /* TRUE if device was disonnected to avoid some USB actions */
185 int packet_size, iso_packet_size; 180 int packet_size, iso_packet_size;
186 181
187 /* control pipe background handling */ 182 /* control pipe background handling */
@@ -208,7 +203,6 @@ typedef struct hfcusb_data {
208static void collect_rx_frame(usb_fifo * fifo, __u8 * data, int len, 203static void collect_rx_frame(usb_fifo * fifo, __u8 * data, int len,
209 int finish); 204 int finish);
210 205
211
212static inline const char * 206static inline const char *
213symbolic(struct hfcusb_symbolic_list list[], const int num) 207symbolic(struct hfcusb_symbolic_list list[], const int num)
214{ 208{
@@ -219,10 +213,6 @@ symbolic(struct hfcusb_symbolic_list list[], const int num)
219 return "<unknown ERROR>"; 213 return "<unknown ERROR>";
220} 214}
221 215
222
223/******************************************************/
224/* start next background transfer for control channel */
225/******************************************************/
226static void 216static void
227ctrl_start_transfer(hfcusb_data * hfc) 217ctrl_start_transfer(hfcusb_data * hfc)
228{ 218{
@@ -240,10 +230,6 @@ ctrl_start_transfer(hfcusb_data * hfc)
240 } 230 }
241} /* ctrl_start_transfer */ 231} /* ctrl_start_transfer */
242 232
243/************************************/
244/* queue a control transfer request */
245/* return 0 on success. */
246/************************************/
247static int 233static int
248queue_control_request(hfcusb_data * hfc, __u8 reg, __u8 val, int action) 234queue_control_request(hfcusb_data * hfc, __u8 reg, __u8 val, int action)
249{ 235{
@@ -260,19 +246,8 @@ queue_control_request(hfcusb_data * hfc, __u8 reg, __u8 val, int action)
260 if (++hfc->ctrl_cnt == 1) 246 if (++hfc->ctrl_cnt == 1)
261 ctrl_start_transfer(hfc); 247 ctrl_start_transfer(hfc);
262 return (0); 248 return (0);
263} /* queue_control_request */
264
265static int
266control_action_handler(hfcusb_data * hfc, int reg, int val, int action)
267{
268 if (!action)
269 return (1); /* no action defined */
270 return (0);
271} 249}
272 250
273/***************************************************************/
274/* control completion routine handling background control cmds */
275/***************************************************************/
276static void 251static void
277ctrl_complete(struct urb *urb) 252ctrl_complete(struct urb *urb)
278{ 253{
@@ -282,9 +257,6 @@ ctrl_complete(struct urb *urb)
282 urb->dev = hfc->dev; 257 urb->dev = hfc->dev;
283 if (hfc->ctrl_cnt) { 258 if (hfc->ctrl_cnt) {
284 buf = &hfc->ctrl_buff[hfc->ctrl_out_idx]; 259 buf = &hfc->ctrl_buff[hfc->ctrl_out_idx];
285 control_action_handler(hfc, buf->hfc_reg, buf->reg_val,
286 buf->action);
287
288 hfc->ctrl_cnt--; /* decrement actual count */ 260 hfc->ctrl_cnt--; /* decrement actual count */
289 if (++hfc->ctrl_out_idx >= HFC_CTRL_BUFSIZE) 261 if (++hfc->ctrl_out_idx >= HFC_CTRL_BUFSIZE)
290 hfc->ctrl_out_idx = 0; /* pointer wrap */ 262 hfc->ctrl_out_idx = 0; /* pointer wrap */
@@ -293,9 +265,7 @@ ctrl_complete(struct urb *urb)
293 } 265 }
294} /* ctrl_complete */ 266} /* ctrl_complete */
295 267
296/***************************************************/
297/* write led data to auxport & invert if necessary */ 268/* write led data to auxport & invert if necessary */
298/***************************************************/
299static void 269static void
300write_led(hfcusb_data * hfc, __u8 led_state) 270write_led(hfcusb_data * hfc, __u8 led_state)
301{ 271{
@@ -305,9 +275,6 @@ write_led(hfcusb_data * hfc, __u8 led_state)
305 } 275 }
306} 276}
307 277
308/**************************/
309/* handle LED bits */
310/**************************/
311static void 278static void
312set_led_bit(hfcusb_data * hfc, signed short led_bits, int unset) 279set_led_bit(hfcusb_data * hfc, signed short led_bits, int unset)
313{ 280{
@@ -324,9 +291,7 @@ set_led_bit(hfcusb_data * hfc, signed short led_bits, int unset)
324 } 291 }
325} 292}
326 293
327/**************************/ 294/* handle LED requests */
328/* handle LED requests */
329/**************************/
330static void 295static void
331handle_led(hfcusb_data * hfc, int event) 296handle_led(hfcusb_data * hfc, int event)
332{ 297{
@@ -339,85 +304,73 @@ handle_led(hfcusb_data * hfc, int event)
339 304
340 switch (event) { 305 switch (event) {
341 case LED_POWER_ON: 306 case LED_POWER_ON:
342 set_led_bit(hfc, driver_info->led_bits[0], 307 set_led_bit(hfc, driver_info->led_bits[0], 0);
343 0); 308 set_led_bit(hfc, driver_info->led_bits[1], 1);
344 set_led_bit(hfc, driver_info->led_bits[1], 309 set_led_bit(hfc, driver_info->led_bits[2], 1);
345 1); 310 set_led_bit(hfc, driver_info->led_bits[3], 1);
346 set_led_bit(hfc, driver_info->led_bits[2],
347 1);
348 set_led_bit(hfc, driver_info->led_bits[3],
349 1);
350 break; 311 break;
351 case LED_POWER_OFF: /* no Power off handling */ 312 case LED_POWER_OFF:
313 set_led_bit(hfc, driver_info->led_bits[0], 1);
314 set_led_bit(hfc, driver_info->led_bits[1], 1);
315 set_led_bit(hfc, driver_info->led_bits[2], 1);
316 set_led_bit(hfc, driver_info->led_bits[3], 1);
352 break; 317 break;
353 case LED_S0_ON: 318 case LED_S0_ON:
354 set_led_bit(hfc, driver_info->led_bits[1], 319 set_led_bit(hfc, driver_info->led_bits[1], 0);
355 0);
356 break; 320 break;
357 case LED_S0_OFF: 321 case LED_S0_OFF:
358 set_led_bit(hfc, driver_info->led_bits[1], 322 set_led_bit(hfc, driver_info->led_bits[1], 1);
359 1);
360 break; 323 break;
361 case LED_B1_ON: 324 case LED_B1_ON:
362 set_led_bit(hfc, driver_info->led_bits[2], 325 set_led_bit(hfc, driver_info->led_bits[2], 0);
363 0);
364 break; 326 break;
365 case LED_B1_OFF: 327 case LED_B1_OFF:
366 set_led_bit(hfc, driver_info->led_bits[2], 328 set_led_bit(hfc, driver_info->led_bits[2], 1);
367 1);
368 break; 329 break;
369 case LED_B2_ON: 330 case LED_B2_ON:
370 set_led_bit(hfc, driver_info->led_bits[3], 331 set_led_bit(hfc, driver_info->led_bits[3], 0);
371 0);
372 break; 332 break;
373 case LED_B2_OFF: 333 case LED_B2_OFF:
374 set_led_bit(hfc, driver_info->led_bits[3], 334 set_led_bit(hfc, driver_info->led_bits[3], 1);
375 1);
376 break; 335 break;
377 } 336 }
378 write_led(hfc, hfc->led_state); 337 write_led(hfc, hfc->led_state);
379} 338}
380 339
381/********************************/ 340/* ISDN l1 timer T3 expires */
382/* called when timer t3 expires */
383/********************************/
384static void 341static void
385l1_timer_expire_t3(hfcusb_data * hfc) 342l1_timer_expire_t3(hfcusb_data * hfc)
386{ 343{
387 hfc->d_if.ifc.l1l2(&hfc->d_if.ifc, PH_DEACTIVATE | INDICATION, 344 hfc->d_if.ifc.l1l2(&hfc->d_if.ifc, PH_DEACTIVATE | INDICATION,
388 NULL); 345 NULL);
389#ifdef CONFIG_HISAX_DEBUG 346
390 DBG(ISDN_DBG, 347 DBG(HFCUSB_DBG_STATES,
391 "HFC-S USB: PH_DEACTIVATE | INDICATION sent (T3 expire)"); 348 "HFC-S USB: PH_DEACTIVATE | INDICATION sent (T3 expire)");
392#endif 349
393 hfc->l1_activated = false; 350 hfc->l1_activated = 0;
394 handle_led(hfc, LED_S0_OFF); 351 handle_led(hfc, LED_S0_OFF);
395 /* deactivate : */ 352 /* deactivate : */
396 queue_control_request(hfc, HFCUSB_STATES, 0x10, 1); 353 queue_control_request(hfc, HFCUSB_STATES, 0x10, 1);
397 queue_control_request(hfc, HFCUSB_STATES, 3, 1); 354 queue_control_request(hfc, HFCUSB_STATES, 3, 1);
398} 355}
399 356
400/********************************/ 357/* ISDN l1 timer T4 expires */
401/* called when timer t4 expires */
402/********************************/
403static void 358static void
404l1_timer_expire_t4(hfcusb_data * hfc) 359l1_timer_expire_t4(hfcusb_data * hfc)
405{ 360{
406 hfc->d_if.ifc.l1l2(&hfc->d_if.ifc, PH_DEACTIVATE | INDICATION, 361 hfc->d_if.ifc.l1l2(&hfc->d_if.ifc, PH_DEACTIVATE | INDICATION,
407 NULL); 362 NULL);
408#ifdef CONFIG_HISAX_DEBUG 363
409 DBG(ISDN_DBG, 364 DBG(HFCUSB_DBG_STATES,
410 "HFC-S USB: PH_DEACTIVATE | INDICATION sent (T4 expire)"); 365 "HFC-S USB: PH_DEACTIVATE | INDICATION sent (T4 expire)");
411#endif 366
412 hfc->l1_activated = false; 367 hfc->l1_activated = 0;
413 handle_led(hfc, LED_S0_OFF); 368 handle_led(hfc, LED_S0_OFF);
414} 369}
415 370
416/*****************************/ 371/* S0 state changed */
417/* handle S0 state changes */
418/*****************************/
419static void 372static void
420state_handler(hfcusb_data * hfc, __u8 state) 373s0_state_handler(hfcusb_data * hfc, __u8 state)
421{ 374{
422 __u8 old_state; 375 __u8 old_state;
423 376
@@ -425,38 +378,29 @@ state_handler(hfcusb_data * hfc, __u8 state)
425 if (state == old_state || state < 1 || state > 8) 378 if (state == old_state || state < 1 || state > 8)
426 return; 379 return;
427 380
428#ifdef CONFIG_HISAX_DEBUG 381 DBG(HFCUSB_DBG_STATES, "HFC-S USB: S0 statechange(%d -> %d)",
429 DBG(ISDN_DBG, "HFC-S USB: new S0 state:%d old_state:%d", state, 382 old_state, state);
430 old_state); 383
431#endif
432 if (state < 4 || state == 7 || state == 8) { 384 if (state < 4 || state == 7 || state == 8) {
433 if (timer_pending(&hfc->t3_timer)) 385 if (timer_pending(&hfc->t3_timer))
434 del_timer(&hfc->t3_timer); 386 del_timer(&hfc->t3_timer);
435#ifdef CONFIG_HISAX_DEBUG 387 DBG(HFCUSB_DBG_STATES, "HFC-S USB: T3 deactivated");
436 DBG(ISDN_DBG, "HFC-S USB: T3 deactivated");
437#endif
438 } 388 }
439 if (state >= 7) { 389 if (state >= 7) {
440 if (timer_pending(&hfc->t4_timer)) 390 if (timer_pending(&hfc->t4_timer))
441 del_timer(&hfc->t4_timer); 391 del_timer(&hfc->t4_timer);
442#ifdef CONFIG_HISAX_DEBUG 392 DBG(HFCUSB_DBG_STATES, "HFC-S USB: T4 deactivated");
443 DBG(ISDN_DBG, "HFC-S USB: T4 deactivated");
444#endif
445 } 393 }
446 394
447 if (state == 7 && !hfc->l1_activated) { 395 if (state == 7 && !hfc->l1_activated) {
448 hfc->d_if.ifc.l1l2(&hfc->d_if.ifc, 396 hfc->d_if.ifc.l1l2(&hfc->d_if.ifc,
449 PH_ACTIVATE | INDICATION, NULL); 397 PH_ACTIVATE | INDICATION, NULL);
450#ifdef CONFIG_HISAX_DEBUG 398 DBG(HFCUSB_DBG_STATES, "HFC-S USB: PH_ACTIVATE | INDICATION sent");
451 DBG(ISDN_DBG, "HFC-S USB: PH_ACTIVATE | INDICATION sent"); 399 hfc->l1_activated = 1;
452#endif
453 hfc->l1_activated = true;
454 handle_led(hfc, LED_S0_ON); 400 handle_led(hfc, LED_S0_ON);
455 } else if (state <= 3 /* && activated */ ) { 401 } else if (state <= 3 /* && activated */ ) {
456 if (old_state == 7 || old_state == 8) { 402 if (old_state == 7 || old_state == 8) {
457#ifdef CONFIG_HISAX_DEBUG 403 DBG(HFCUSB_DBG_STATES, "HFC-S USB: T4 activated");
458 DBG(ISDN_DBG, "HFC-S USB: T4 activated");
459#endif
460 if (!timer_pending(&hfc->t4_timer)) { 404 if (!timer_pending(&hfc->t4_timer)) {
461 hfc->t4_timer.expires = 405 hfc->t4_timer.expires =
462 jiffies + (HFC_TIMER_T4 * HZ) / 1000; 406 jiffies + (HFC_TIMER_T4 * HZ) / 1000;
@@ -466,18 +410,15 @@ state_handler(hfcusb_data * hfc, __u8 state)
466 hfc->d_if.ifc.l1l2(&hfc->d_if.ifc, 410 hfc->d_if.ifc.l1l2(&hfc->d_if.ifc,
467 PH_DEACTIVATE | INDICATION, 411 PH_DEACTIVATE | INDICATION,
468 NULL); 412 NULL);
469#ifdef CONFIG_HISAX_DEBUG 413 DBG(HFCUSB_DBG_STATES,
470 DBG(ISDN_DBG,
471 "HFC-S USB: PH_DEACTIVATE | INDICATION sent"); 414 "HFC-S USB: PH_DEACTIVATE | INDICATION sent");
472#endif 415 hfc->l1_activated = 0;
473 hfc->l1_activated = false;
474 handle_led(hfc, LED_S0_OFF); 416 handle_led(hfc, LED_S0_OFF);
475 } 417 }
476 } 418 }
477 hfc->l1_state = state; 419 hfc->l1_state = state;
478} 420}
479 421
480/* prepare iso urb */
481static void 422static void
482fill_isoc_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, 423fill_isoc_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe,
483 void *buf, int num_packets, int packet_size, int interval, 424 void *buf, int num_packets, int packet_size, int interval,
@@ -503,15 +444,16 @@ fill_isoc_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe,
503} 444}
504 445
505/* allocs urbs and start isoc transfer with two pending urbs to avoid 446/* allocs urbs and start isoc transfer with two pending urbs to avoid
506 gaps in the transfer chain */ 447 * gaps in the transfer chain
448 */
507static int 449static int
508start_isoc_chain(usb_fifo * fifo, int num_packets_per_urb, 450start_isoc_chain(usb_fifo * fifo, int num_packets_per_urb,
509 usb_complete_t complete, int packet_size) 451 usb_complete_t complete, int packet_size)
510{ 452{
511 int i, k, errcode; 453 int i, k, errcode;
512 454
513 printk(KERN_INFO "HFC-S USB: starting ISO-chain for Fifo %i\n", 455 DBG(HFCUSB_DBG_INIT, "HFC-S USB: starting ISO-URBs for fifo:%d\n",
514 fifo->fifonum); 456 fifo->fifonum);
515 457
516 /* allocate Memory for Iso out Urbs */ 458 /* allocate Memory for Iso out Urbs */
517 for (i = 0; i < 2; i++) { 459 for (i = 0; i < 2; i++) {
@@ -556,10 +498,9 @@ start_isoc_chain(usb_fifo * fifo, int num_packets_per_urb,
556 498
557 errcode = usb_submit_urb(fifo->iso[i].purb, GFP_KERNEL); 499 errcode = usb_submit_urb(fifo->iso[i].purb, GFP_KERNEL);
558 fifo->active = (errcode >= 0) ? 1 : 0; 500 fifo->active = (errcode >= 0) ? 1 : 0;
559 if (errcode < 0) { 501 if (errcode < 0)
560 printk(KERN_INFO "HFC-S USB: %s URB nr:%d\n", 502 printk(KERN_INFO "HFC-S USB: usb_submit_urb URB nr:%d, error(%i): '%s'\n",
561 symbolic(urb_errlist, errcode), i); 503 i, errcode, symbolic(urb_errlist, errcode));
562 };
563 } 504 }
564 return (fifo->active); 505 return (fifo->active);
565} 506}
@@ -572,16 +513,15 @@ stop_isoc_chain(usb_fifo * fifo)
572 513
573 for (i = 0; i < 2; i++) { 514 for (i = 0; i < 2; i++) {
574 if (fifo->iso[i].purb) { 515 if (fifo->iso[i].purb) {
575#ifdef CONFIG_HISAX_DEBUG 516 DBG(HFCUSB_DBG_INIT,
576 DBG(USB_DBG,
577 "HFC-S USB: Stopping iso chain for fifo %i.%i", 517 "HFC-S USB: Stopping iso chain for fifo %i.%i",
578 fifo->fifonum, i); 518 fifo->fifonum, i);
579#endif
580 usb_kill_urb(fifo->iso[i].purb); 519 usb_kill_urb(fifo->iso[i].purb);
581 usb_free_urb(fifo->iso[i].purb); 520 usb_free_urb(fifo->iso[i].purb);
582 fifo->iso[i].purb = NULL; 521 fifo->iso[i].purb = NULL;
583 } 522 }
584 } 523 }
524
585 usb_kill_urb(fifo->urb); 525 usb_kill_urb(fifo->urb);
586 usb_free_urb(fifo->urb); 526 usb_free_urb(fifo->urb);
587 fifo->urb = NULL; 527 fifo->urb = NULL;
@@ -594,9 +534,6 @@ static int iso_packets[8] =
594 ISOC_PACKETS_D, ISOC_PACKETS_D, ISOC_PACKETS_D, ISOC_PACKETS_D 534 ISOC_PACKETS_D, ISOC_PACKETS_D, ISOC_PACKETS_D, ISOC_PACKETS_D
595}; 535};
596 536
597/*****************************************************/
598/* transmit completion routine for all ISO tx fifos */
599/*****************************************************/
600static void 537static void
601tx_iso_complete(struct urb *urb) 538tx_iso_complete(struct urb *urb)
602{ 539{
@@ -607,20 +544,38 @@ tx_iso_complete(struct urb *urb)
607 errcode; 544 errcode;
608 int frame_complete, transp_mode, fifon, status; 545 int frame_complete, transp_mode, fifon, status;
609 __u8 threshbit; 546 __u8 threshbit;
610 __u8 threshtable[8] = { 1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80 };
611 547
612 fifon = fifo->fifonum; 548 fifon = fifo->fifonum;
613 status = urb->status; 549 status = urb->status;
614 550
615 tx_offset = 0; 551 tx_offset = 0;
616 552
553 /* ISO transfer only partially completed,
554 look at individual frame status for details */
555 if (status == -EXDEV) {
556 DBG(HFCUSB_DBG_VERBOSE_USB, "HFC-S USB: tx_iso_complete with -EXDEV"
557 ", urb->status %d, fifonum %d\n",
558 status, fifon);
559
560 for (k = 0; k < iso_packets[fifon]; ++k) {
561 errcode = urb->iso_frame_desc[k].status;
562 if (errcode)
563 DBG(HFCUSB_DBG_VERBOSE_USB, "HFC-S USB: tx_iso_complete "
564 "packet %i, status: %i\n",
565 k, errcode);
566 }
567
568 // clear status, so go on with ISO transfers
569 status = 0;
570 }
571
617 if (fifo->active && !status) { 572 if (fifo->active && !status) {
618 transp_mode = 0; 573 transp_mode = 0;
619 if (fifon < 4 && hfc->b_mode[fifon / 2] == L1_MODE_TRANS) 574 if (fifon < 4 && hfc->b_mode[fifon / 2] == L1_MODE_TRANS)
620 transp_mode = true; 575 transp_mode = 1;
621 576
622 /* is FifoFull-threshold set for our channel? */ 577 /* is FifoFull-threshold set for our channel? */
623 threshbit = threshtable[fifon] & hfc->threshold_mask; 578 threshbit = (hfc->threshold_mask & (1 << fifon));
624 num_isoc_packets = iso_packets[fifon]; 579 num_isoc_packets = iso_packets[fifon];
625 580
626 /* predict dataflow to avoid fifo overflow */ 581 /* predict dataflow to avoid fifo overflow */
@@ -635,8 +590,9 @@ tx_iso_complete(struct urb *urb)
635 tx_iso_complete, urb->context); 590 tx_iso_complete, urb->context);
636 memset(context_iso_urb->buffer, 0, 591 memset(context_iso_urb->buffer, 0,
637 sizeof(context_iso_urb->buffer)); 592 sizeof(context_iso_urb->buffer));
638 frame_complete = false; 593 frame_complete = 0;
639 /* Generate next Iso Packets */ 594
595 /* Generate next ISO Packets */
640 for (k = 0; k < num_isoc_packets; ++k) { 596 for (k = 0; k < num_isoc_packets; ++k) {
641 if (fifo->skbuff) { 597 if (fifo->skbuff) {
642 len = fifo->skbuff->len; 598 len = fifo->skbuff->len;
@@ -661,7 +617,7 @@ tx_iso_complete(struct urb *urb)
661 /* add 2 byte flags and 16bit CRC at end of ISDN frame */ 617 /* add 2 byte flags and 16bit CRC at end of ISDN frame */
662 fifo->bit_line += 32; 618 fifo->bit_line += 32;
663 } 619 }
664 frame_complete = true; 620 frame_complete = 1;
665 } 621 }
666 622
667 memcpy(context_iso_urb->buffer + 623 memcpy(context_iso_urb->buffer +
@@ -688,7 +644,7 @@ tx_iso_complete(struct urb *urb)
688 } 644 }
689 645
690 if (frame_complete) { 646 if (frame_complete) {
691 fifo->delete_flg = true; 647 fifo->delete_flg = 1;
692 fifo->hif->l1l2(fifo->hif, 648 fifo->hif->l1l2(fifo->hif,
693 PH_DATA | CONFIRM, 649 PH_DATA | CONFIRM,
694 (void *) (unsigned long) fifo->skbuff-> 650 (void *) (unsigned long) fifo->skbuff->
@@ -696,30 +652,26 @@ tx_iso_complete(struct urb *urb)
696 if (fifo->skbuff && fifo->delete_flg) { 652 if (fifo->skbuff && fifo->delete_flg) {
697 dev_kfree_skb_any(fifo->skbuff); 653 dev_kfree_skb_any(fifo->skbuff);
698 fifo->skbuff = NULL; 654 fifo->skbuff = NULL;
699 fifo->delete_flg = false; 655 fifo->delete_flg = 0;
700 } 656 }
701 frame_complete = false; 657 frame_complete = 0;
702 } 658 }
703 } 659 }
704 errcode = usb_submit_urb(urb, GFP_ATOMIC); 660 errcode = usb_submit_urb(urb, GFP_ATOMIC);
705 if (errcode < 0) { 661 if (errcode < 0) {
706 printk(KERN_INFO 662 printk(KERN_INFO
707 "HFC-S USB: error submitting ISO URB: %d \n", 663 "HFC-S USB: error submitting ISO URB: %d\n",
708 errcode); 664 errcode);
709 } 665 }
710 } else { 666 } else {
711 if (status && !hfc->disc_flag) { 667 if (status && !hfc->disc_flag) {
712 printk(KERN_INFO 668 printk(KERN_INFO
713 "HFC-S USB: tx_iso_complete : urb->status %s (%i), fifonum=%d\n", 669 "HFC-S USB: tx_iso_complete: error(%i): '%s', fifonum=%d\n",
714 symbolic(urb_errlist, status), status, 670 status, symbolic(urb_errlist, status), fifon);
715 fifon);
716 } 671 }
717 } 672 }
718} /* tx_iso_complete */ 673}
719 674
720/*****************************************************/
721/* receive completion routine for all ISO tx fifos */
722/*****************************************************/
723static void 675static void
724rx_iso_complete(struct urb *urb) 676rx_iso_complete(struct urb *urb)
725{ 677{
@@ -731,21 +683,25 @@ rx_iso_complete(struct urb *urb)
731 unsigned int iso_status; 683 unsigned int iso_status;
732 __u8 *buf; 684 __u8 *buf;
733 static __u8 eof[8]; 685 static __u8 eof[8];
734#ifdef CONFIG_HISAX_DEBUG
735 __u8 i;
736#endif
737 686
738 fifon = fifo->fifonum; 687 fifon = fifo->fifonum;
739 status = urb->status; 688 status = urb->status;
740 689
741 if (urb->status == -EOVERFLOW) { 690 if (urb->status == -EOVERFLOW) {
742#ifdef CONFIG_HISAX_DEBUG 691 DBG(HFCUSB_DBG_VERBOSE_USB,
743 DBG(USB_DBG, 692 "HFC-USB: ignoring USB DATAOVERRUN fifo(%i)", fifon);
744 "HFC-USB: ignoring USB DATAOVERRUN for fifo %i \n", 693 status = 0;
745 fifon); 694 }
746#endif 695
696 /* ISO transfer only partially completed,
697 look at individual frame status for details */
698 if (status == -EXDEV) {
699 DBG(HFCUSB_DBG_VERBOSE_USB, "HFC-S USB: rx_iso_complete with -EXDEV "
700 "urb->status %d, fifonum %d\n",
701 status, fifon);
747 status = 0; 702 status = 0;
748 } 703 }
704
749 if (fifo->active && !status) { 705 if (fifo->active && !status) {
750 num_isoc_packets = iso_packets[fifon]; 706 num_isoc_packets = iso_packets[fifon];
751 maxlen = fifo->usb_packet_maxlen; 707 maxlen = fifo->usb_packet_maxlen;
@@ -754,40 +710,38 @@ rx_iso_complete(struct urb *urb)
754 offset = urb->iso_frame_desc[k].offset; 710 offset = urb->iso_frame_desc[k].offset;
755 buf = context_iso_urb->buffer + offset; 711 buf = context_iso_urb->buffer + offset;
756 iso_status = urb->iso_frame_desc[k].status; 712 iso_status = urb->iso_frame_desc[k].status;
757#ifdef CONFIG_HISAX_DEBUG 713
758 if (iso_status && !hfc->disc_flag) 714 if (iso_status && !hfc->disc_flag)
759 DBG(USB_DBG, 715 DBG(HFCUSB_DBG_VERBOSE_USB,
760 "HFC-S USB: ISO packet failure - status:%x", 716 "HFC-S USB: rx_iso_complete "
761 iso_status); 717 "ISO packet %i, status: %i\n",
718 k, iso_status);
762 719
763 if ((fifon == 5) && (debug > 1)) { 720 if (fifon == HFCUSB_D_RX) {
764 printk(KERN_INFO 721 DBG(HFCUSB_DBG_VERBOSE_USB,
765 "HFC-S USB: ISO-D-RX lst_urblen:%2d " 722 "HFC-S USB: ISO-D-RX lst_urblen:%2d "
766 "act_urblen:%2d max-urblen:%2d " 723 "act_urblen:%2d max-urblen:%2d EOF:0x%0x",
767 "EOF:0x%0x DATA: ",
768 fifo->last_urblen, len, maxlen, 724 fifo->last_urblen, len, maxlen,
769 eof[5]); 725 eof[5]);
770 for (i = 0; i < len; i++) 726
771 printk("%.2x ", buf[i]); 727 DBG_PACKET(HFCUSB_DBG_VERBOSE_USB, buf, len);
772 printk("\n");
773 } 728 }
774#endif 729
775 if (fifo->last_urblen != maxlen) { 730 if (fifo->last_urblen != maxlen) {
776 /* the threshold mask is in the 2nd status byte */ 731 /* the threshold mask is in the 2nd status byte */
777 hfc->threshold_mask = buf[1]; 732 hfc->threshold_mask = buf[1];
778 /* care for L1 state only for D-Channel 733 /* care for L1 state only for D-Channel
779 to avoid overlapped iso completions */ 734 to avoid overlapped iso completions */
780 if (fifon == 5) { 735 if (fifon == HFCUSB_D_RX) {
781 /* the S0 state is in the upper half 736 /* the S0 state is in the upper half
782 of the 1st status byte */ 737 of the 1st status byte */
783 state_handler(hfc, buf[0] >> 4); 738 s0_state_handler(hfc, buf[0] >> 4);
784 } 739 }
785 eof[fifon] = buf[0] & 1; 740 eof[fifon] = buf[0] & 1;
786 if (len > 2) 741 if (len > 2)
787 collect_rx_frame(fifo, buf + 2, 742 collect_rx_frame(fifo, buf + 2,
788 len - 2, 743 len - 2,
789 (len < 744 (len < maxlen) ?
790 maxlen) ?
791 eof[fifon] : 0); 745 eof[fifon] : 0);
792 } else { 746 } else {
793 collect_rx_frame(fifo, buf, len, 747 collect_rx_frame(fifo, buf, len,
@@ -804,41 +758,37 @@ rx_iso_complete(struct urb *urb)
804 rx_iso_complete, urb->context); 758 rx_iso_complete, urb->context);
805 errcode = usb_submit_urb(urb, GFP_ATOMIC); 759 errcode = usb_submit_urb(urb, GFP_ATOMIC);
806 if (errcode < 0) { 760 if (errcode < 0) {
807 printk(KERN_INFO 761 printk(KERN_ERR
808 "HFC-S USB: error submitting ISO URB: %d \n", 762 "HFC-S USB: error submitting ISO URB: %d\n",
809 errcode); 763 errcode);
810 } 764 }
811 } else { 765 } else {
812 if (status && !hfc->disc_flag) { 766 if (status && !hfc->disc_flag) {
813 printk(KERN_INFO 767 printk(KERN_ERR
814 "HFC-S USB: rx_iso_complete : " 768 "HFC-S USB: rx_iso_complete : "
815 "urb->status %d, fifonum %d\n", 769 "urb->status %d, fifonum %d\n",
816 status, fifon); 770 status, fifon);
817 } 771 }
818 } 772 }
819} /* rx_iso_complete */ 773}
820 774
821/*****************************************************/ 775/* collect rx data from INT- and ISO-URBs */
822/* collect data from interrupt or isochron in */
823/*****************************************************/
824static void 776static void
825collect_rx_frame(usb_fifo * fifo, __u8 * data, int len, int finish) 777collect_rx_frame(usb_fifo * fifo, __u8 * data, int len, int finish)
826{ 778{
827 hfcusb_data *hfc = fifo->hfc; 779 hfcusb_data *hfc = fifo->hfc;
828 int transp_mode, fifon; 780 int transp_mode, fifon;
829#ifdef CONFIG_HISAX_DEBUG 781
830 int i;
831#endif
832 fifon = fifo->fifonum; 782 fifon = fifo->fifonum;
833 transp_mode = 0; 783 transp_mode = 0;
834 if (fifon < 4 && hfc->b_mode[fifon / 2] == L1_MODE_TRANS) 784 if (fifon < 4 && hfc->b_mode[fifon / 2] == L1_MODE_TRANS)
835 transp_mode = true; 785 transp_mode = 1;
836 786
837 if (!fifo->skbuff) { 787 if (!fifo->skbuff) {
838 fifo->skbuff = dev_alloc_skb(fifo->max_size + 3); 788 fifo->skbuff = dev_alloc_skb(fifo->max_size + 3);
839 if (!fifo->skbuff) { 789 if (!fifo->skbuff) {
840 printk(KERN_INFO 790 printk(KERN_ERR
841 "HFC-S USB: cannot allocate buffer (dev_alloc_skb) fifo:%d\n", 791 "HFC-S USB: cannot allocate buffer for fifo(%d)\n",
842 fifon); 792 fifon);
843 return; 793 return;
844 } 794 }
@@ -847,17 +797,11 @@ collect_rx_frame(usb_fifo * fifo, __u8 * data, int len, int finish)
847 if (fifo->skbuff->len + len < fifo->max_size) { 797 if (fifo->skbuff->len + len < fifo->max_size) {
848 memcpy(skb_put(fifo->skbuff, len), data, len); 798 memcpy(skb_put(fifo->skbuff, len), data, len);
849 } else { 799 } else {
850#ifdef CONFIG_HISAX_DEBUG 800 DBG(HFCUSB_DBG_FIFO_ERR,
851 printk(KERN_INFO "HFC-S USB: "); 801 "HCF-USB: got frame exceeded fifo->max_size(%d) fifo(%d)",
852 for (i = 0; i < 15; i++)
853 printk("%.2x ",
854 fifo->skbuff->data[fifo->skbuff->
855 len - 15 + i]);
856 printk("\n");
857#endif
858 printk(KERN_INFO
859 "HCF-USB: got frame exceeded fifo->max_size:%d on fifo:%d\n",
860 fifo->max_size, fifon); 802 fifo->max_size, fifon);
803 DBG_SKB(HFCUSB_DBG_VERBOSE_USB, fifo->skbuff);
804 skb_trim(fifo->skbuff, 0);
861 } 805 }
862 } 806 }
863 if (transp_mode && fifo->skbuff->len >= 128) { 807 if (transp_mode && fifo->skbuff->len >= 128) {
@@ -870,6 +814,13 @@ collect_rx_frame(usb_fifo * fifo, __u8 * data, int len, int finish)
870 if (finish) { 814 if (finish) {
871 if ((!fifo->skbuff->data[fifo->skbuff->len - 1]) 815 if ((!fifo->skbuff->data[fifo->skbuff->len - 1])
872 && (fifo->skbuff->len > 3)) { 816 && (fifo->skbuff->len > 3)) {
817
818 if (fifon == HFCUSB_D_RX) {
819 DBG(HFCUSB_DBG_DCHANNEL,
820 "HFC-S USB: D-RX len(%d)", fifo->skbuff->len);
821 DBG_SKB(HFCUSB_DBG_DCHANNEL, fifo->skbuff);
822 }
823
873 /* remove CRC & status */ 824 /* remove CRC & status */
874 skb_trim(fifo->skbuff, fifo->skbuff->len - 3); 825 skb_trim(fifo->skbuff, fifo->skbuff->len - 3);
875 if (fifon == HFCUSB_PCM_RX) { 826 if (fifon == HFCUSB_PCM_RX) {
@@ -882,39 +833,17 @@ collect_rx_frame(usb_fifo * fifo, __u8 * data, int len, int finish)
882 fifo->skbuff); 833 fifo->skbuff);
883 fifo->skbuff = NULL; /* buffer was freed from upper layer */ 834 fifo->skbuff = NULL; /* buffer was freed from upper layer */
884 } else { 835 } else {
885 if (fifo->skbuff->len > 3) { 836 DBG(HFCUSB_DBG_FIFO_ERR,
886 printk(KERN_INFO 837 "HFC-S USB: ERROR frame len(%d) fifo(%d)",
887 "HFC-S USB: got frame %d bytes but CRC ERROR on fifo:%d!!!\n", 838 fifo->skbuff->len, fifon);
888 fifo->skbuff->len, fifon); 839 DBG_SKB(HFCUSB_DBG_VERBOSE_USB, fifo->skbuff);
889#ifdef CONFIG_HISAX_DEBUG
890 if (debug > 1) {
891 printk(KERN_INFO "HFC-S USB: ");
892 for (i = 0; i < 15; i++)
893 printk("%.2x ",
894 fifo->skbuff->
895 data[fifo->skbuff->
896 len - 15 + i]);
897 printk("\n");
898 }
899#endif
900 }
901#ifdef CONFIG_HISAX_DEBUG
902 else {
903 printk(KERN_INFO
904 "HFC-S USB: frame to small (%d bytes)!!!\n",
905 fifo->skbuff->len);
906 }
907#endif
908 skb_trim(fifo->skbuff, 0); 840 skb_trim(fifo->skbuff, 0);
909 } 841 }
910 } 842 }
911} 843}
912 844
913/***********************************************/
914/* receive completion routine for all rx fifos */
915/***********************************************/
916static void 845static void
917rx_complete(struct urb *urb) 846rx_int_complete(struct urb *urb)
918{ 847{
919 int len; 848 int len;
920 int status; 849 int status;
@@ -922,18 +851,14 @@ rx_complete(struct urb *urb)
922 usb_fifo *fifo = (usb_fifo *) urb->context; 851 usb_fifo *fifo = (usb_fifo *) urb->context;
923 hfcusb_data *hfc = fifo->hfc; 852 hfcusb_data *hfc = fifo->hfc;
924 static __u8 eof[8]; 853 static __u8 eof[8];
925#ifdef CONFIG_HISAX_DEBUG
926 __u8 i;
927#endif
928 854
929 urb->dev = hfc->dev; /* security init */ 855 urb->dev = hfc->dev; /* security init */
930 856
931 fifon = fifo->fifonum; 857 fifon = fifo->fifonum;
932 if ((!fifo->active) || (urb->status)) { 858 if ((!fifo->active) || (urb->status)) {
933#ifdef CONFIG_HISAX_DEBUG 859 DBG(HFCUSB_DBG_INIT, "HFC-S USB: RX-Fifo %i is going down (%i)",
934 DBG(USB_DBG, "HFC-S USB: RX-Fifo %i is going down (%i)",
935 fifon, urb->status); 860 fifon, urb->status);
936#endif 861
937 fifo->urb->interval = 0; /* cancel automatic rescheduling */ 862 fifo->urb->interval = 0; /* cancel automatic rescheduling */
938 if (fifo->skbuff) { 863 if (fifo->skbuff) {
939 dev_kfree_skb_any(fifo->skbuff); 864 dev_kfree_skb_any(fifo->skbuff);
@@ -945,22 +870,20 @@ rx_complete(struct urb *urb)
945 buf = fifo->buffer; 870 buf = fifo->buffer;
946 maxlen = fifo->usb_packet_maxlen; 871 maxlen = fifo->usb_packet_maxlen;
947 872
948#ifdef CONFIG_HISAX_DEBUG 873 if (fifon == HFCUSB_D_RX) {
949 if ((fifon == 5) && (debug > 1)) { 874 DBG(HFCUSB_DBG_VERBOSE_USB,
950 printk(KERN_INFO 875 "HFC-S USB: INT-D-RX lst_urblen:%2d "
951 "HFC-S USB: INT-D-RX lst_urblen:%2d act_urblen:%2d max-urblen:%2d EOF:0x%0x DATA: ", 876 "act_urblen:%2d max-urblen:%2d EOF:0x%0x",
952 fifo->last_urblen, len, maxlen, eof[5]); 877 fifo->last_urblen, len, maxlen,
953 for (i = 0; i < len; i++) 878 eof[5]);
954 printk("%.2x ", buf[i]); 879 DBG_PACKET(HFCUSB_DBG_VERBOSE_USB, buf, len);
955 printk("\n");
956 } 880 }
957#endif
958 881
959 if (fifo->last_urblen != fifo->usb_packet_maxlen) { 882 if (fifo->last_urblen != fifo->usb_packet_maxlen) {
960 /* the threshold mask is in the 2nd status byte */ 883 /* the threshold mask is in the 2nd status byte */
961 hfc->threshold_mask = buf[1]; 884 hfc->threshold_mask = buf[1];
962 /* the S0 state is in the upper half of the 1st status byte */ 885 /* the S0 state is in the upper half of the 1st status byte */
963 state_handler(hfc, buf[0] >> 4); 886 s0_state_handler(hfc, buf[0] >> 4);
964 eof[fifon] = buf[0] & 1; 887 eof[fifon] = buf[0] & 1;
965 /* if we have more than the 2 status bytes -> collect data */ 888 /* if we have more than the 2 status bytes -> collect data */
966 if (len > 2) 889 if (len > 2)
@@ -975,20 +898,19 @@ rx_complete(struct urb *urb)
975 status = usb_submit_urb(urb, GFP_ATOMIC); 898 status = usb_submit_urb(urb, GFP_ATOMIC);
976 if (status) { 899 if (status) {
977 printk(KERN_INFO 900 printk(KERN_INFO
978 "HFC-S USB: error resubmitting URN at rx_complete...\n"); 901 "HFC-S USB: %s error resubmitting URB fifo(%d)\n",
902 __FUNCTION__, fifon);
979 } 903 }
980} /* rx_complete */ 904}
981 905
982/***************************************************/ 906/* start initial INT-URB for certain fifo */
983/* start the interrupt transfer for the given fifo */
984/***************************************************/
985static void 907static void
986start_int_fifo(usb_fifo * fifo) 908start_int_fifo(usb_fifo * fifo)
987{ 909{
988 int errcode; 910 int errcode;
989 911
990 printk(KERN_INFO "HFC-S USB: starting intr IN fifo:%d\n", 912 DBG(HFCUSB_DBG_INIT, "HFC-S USB: starting RX INT-URB for fifo:%d\n",
991 fifo->fifonum); 913 fifo->fifonum);
992 914
993 if (!fifo->urb) { 915 if (!fifo->urb) {
994 fifo->urb = usb_alloc_urb(0, GFP_KERNEL); 916 fifo->urb = usb_alloc_urb(0, GFP_KERNEL);
@@ -997,33 +919,28 @@ start_int_fifo(usb_fifo * fifo)
997 } 919 }
998 usb_fill_int_urb(fifo->urb, fifo->hfc->dev, fifo->pipe, 920 usb_fill_int_urb(fifo->urb, fifo->hfc->dev, fifo->pipe,
999 fifo->buffer, fifo->usb_packet_maxlen, 921 fifo->buffer, fifo->usb_packet_maxlen,
1000 rx_complete, fifo, fifo->intervall); 922 rx_int_complete, fifo, fifo->intervall);
1001 fifo->active = 1; /* must be marked active */ 923 fifo->active = 1; /* must be marked active */
1002 errcode = usb_submit_urb(fifo->urb, GFP_KERNEL); 924 errcode = usb_submit_urb(fifo->urb, GFP_KERNEL);
1003 if (errcode) { 925 if (errcode) {
1004 printk(KERN_INFO 926 printk(KERN_ERR
1005 "HFC-S USB: submit URB error(start_int_info): status:%i\n", 927 "HFC-S USB: submit URB error(start_int_info): status:%i\n",
1006 errcode); 928 errcode);
1007 fifo->active = 0; 929 fifo->active = 0;
1008 fifo->skbuff = NULL; 930 fifo->skbuff = NULL;
1009 } 931 }
1010} /* start_int_fifo */ 932}
1011 933
1012/*****************************/
1013/* set the B-channel mode */
1014/*****************************/
1015static void 934static void
1016set_hfcmode(hfcusb_data * hfc, int channel, int mode) 935setup_bchannel(hfcusb_data * hfc, int channel, int mode)
1017{ 936{
1018 __u8 val, idx_table[2] = { 0, 2 }; 937 __u8 val, idx_table[2] = { 0, 2 };
1019 938
1020 if (hfc->disc_flag) { 939 if (hfc->disc_flag) {
1021 return; 940 return;
1022 } 941 }
1023#ifdef CONFIG_HISAX_DEBUG 942 DBG(HFCUSB_DBG_STATES, "HFC-S USB: setting channel %d to mode %d",
1024 DBG(ISDN_DBG, "HFC-S USB: setting channel %d to mode %d", channel, 943 channel, mode);
1025 mode);
1026#endif
1027 hfc->b_mode[channel] = mode; 944 hfc->b_mode[channel] = mode;
1028 945
1029 /* setup CON_HDLC */ 946 /* setup CON_HDLC */
@@ -1080,20 +997,17 @@ hfc_usb_l2l1(struct hisax_if *my_hisax_if, int pr, void *arg)
1080 switch (pr) { 997 switch (pr) {
1081 case PH_ACTIVATE | REQUEST: 998 case PH_ACTIVATE | REQUEST:
1082 if (fifo->fifonum == HFCUSB_D_TX) { 999 if (fifo->fifonum == HFCUSB_D_TX) {
1083#ifdef CONFIG_HISAX_DEBUG 1000 DBG(HFCUSB_DBG_STATES,
1084 DBG(ISDN_DBG,
1085 "HFC_USB: hfc_usb_d_l2l1 D-chan: PH_ACTIVATE | REQUEST"); 1001 "HFC_USB: hfc_usb_d_l2l1 D-chan: PH_ACTIVATE | REQUEST");
1086#endif 1002
1087 if (hfc->l1_state != 3 1003 if (hfc->l1_state != 3
1088 && hfc->l1_state != 7) { 1004 && hfc->l1_state != 7) {
1089 hfc->d_if.ifc.l1l2(&hfc->d_if.ifc, 1005 hfc->d_if.ifc.l1l2(&hfc->d_if.ifc,
1090 PH_DEACTIVATE | 1006 PH_DEACTIVATE |
1091 INDICATION, 1007 INDICATION,
1092 NULL); 1008 NULL);
1093#ifdef CONFIG_HISAX_DEBUG 1009 DBG(HFCUSB_DBG_STATES,
1094 DBG(ISDN_DBG,
1095 "HFC-S USB: PH_DEACTIVATE | INDICATION sent (not state 3 or 7)"); 1010 "HFC-S USB: PH_DEACTIVATE | INDICATION sent (not state 3 or 7)");
1096#endif
1097 } else { 1011 } else {
1098 if (hfc->l1_state == 7) { /* l1 already active */ 1012 if (hfc->l1_state == 7) { /* l1 already active */
1099 hfc->d_if.ifc.l1l2(&hfc-> 1013 hfc->d_if.ifc.l1l2(&hfc->
@@ -1103,10 +1017,8 @@ hfc_usb_l2l1(struct hisax_if *my_hisax_if, int pr, void *arg)
1103 | 1017 |
1104 INDICATION, 1018 INDICATION,
1105 NULL); 1019 NULL);
1106#ifdef CONFIG_HISAX_DEBUG 1020 DBG(HFCUSB_DBG_STATES,
1107 DBG(ISDN_DBG,
1108 "HFC-S USB: PH_ACTIVATE | INDICATION sent again ;)"); 1021 "HFC-S USB: PH_ACTIVATE | INDICATION sent again ;)");
1109#endif
1110 } else { 1022 } else {
1111 /* force sending sending INFO1 */ 1023 /* force sending sending INFO1 */
1112 queue_control_request(hfc, 1024 queue_control_request(hfc,
@@ -1132,11 +1044,9 @@ hfc_usb_l2l1(struct hisax_if *my_hisax_if, int pr, void *arg)
1132 } 1044 }
1133 } 1045 }
1134 } else { 1046 } else {
1135#ifdef CONFIG_HISAX_DEBUG 1047 DBG(HFCUSB_DBG_STATES,
1136 DBG(ISDN_DBG, 1048 "HFC_USB: hfc_usb_d_l2l1 B-chan: PH_ACTIVATE | REQUEST");
1137 "HFC_USB: hfc_usb_d_l2l1 Bx-chan: PH_ACTIVATE | REQUEST"); 1049 setup_bchannel(hfc,
1138#endif
1139 set_hfcmode(hfc,
1140 (fifo->fifonum == 1050 (fifo->fifonum ==
1141 HFCUSB_B1_TX) ? 0 : 1, 1051 HFCUSB_B1_TX) ? 0 : 1,
1142 (long) arg); 1052 (long) arg);
@@ -1147,18 +1057,12 @@ hfc_usb_l2l1(struct hisax_if *my_hisax_if, int pr, void *arg)
1147 break; 1057 break;
1148 case PH_DEACTIVATE | REQUEST: 1058 case PH_DEACTIVATE | REQUEST:
1149 if (fifo->fifonum == HFCUSB_D_TX) { 1059 if (fifo->fifonum == HFCUSB_D_TX) {
1150#ifdef CONFIG_HISAX_DEBUG 1060 DBG(HFCUSB_DBG_STATES,
1151 DBG(ISDN_DBG,
1152 "HFC_USB: hfc_usb_d_l2l1 D-chan: PH_DEACTIVATE | REQUEST"); 1061 "HFC_USB: hfc_usb_d_l2l1 D-chan: PH_DEACTIVATE | REQUEST");
1153#endif
1154 printk(KERN_INFO
1155 "HFC-S USB: ISDN TE device should not deativate...\n");
1156 } else { 1062 } else {
1157#ifdef CONFIG_HISAX_DEBUG 1063 DBG(HFCUSB_DBG_STATES,
1158 DBG(ISDN_DBG,
1159 "HFC_USB: hfc_usb_d_l2l1 Bx-chan: PH_DEACTIVATE | REQUEST"); 1064 "HFC_USB: hfc_usb_d_l2l1 Bx-chan: PH_DEACTIVATE | REQUEST");
1160#endif 1065 setup_bchannel(hfc,
1161 set_hfcmode(hfc,
1162 (fifo->fifonum == 1066 (fifo->fifonum ==
1163 HFCUSB_B1_TX) ? 0 : 1, 1067 HFCUSB_B1_TX) ? 0 : 1,
1164 (int) L1_MODE_NULL); 1068 (int) L1_MODE_NULL);
@@ -1171,25 +1075,20 @@ hfc_usb_l2l1(struct hisax_if *my_hisax_if, int pr, void *arg)
1171 if (fifo->skbuff && fifo->delete_flg) { 1075 if (fifo->skbuff && fifo->delete_flg) {
1172 dev_kfree_skb_any(fifo->skbuff); 1076 dev_kfree_skb_any(fifo->skbuff);
1173 fifo->skbuff = NULL; 1077 fifo->skbuff = NULL;
1174 fifo->delete_flg = false; 1078 fifo->delete_flg = 0;
1175 } 1079 }
1176 fifo->skbuff = arg; /* we have a new buffer */ 1080 fifo->skbuff = arg; /* we have a new buffer */
1177 break; 1081 break;
1178 default: 1082 default:
1179 printk(KERN_INFO 1083 DBG(HFCUSB_DBG_STATES,
1180 "HFC_USB: hfc_usb_d_l2l1: unkown state : %#x\n", 1084 "HFC_USB: hfc_usb_d_l2l1: unkown state : %#x", pr);
1181 pr);
1182 break; 1085 break;
1183 } 1086 }
1184} 1087}
1185 1088
1186/***************************************************************************/ 1089/* initial init HFC-S USB chip registers, HiSax interface, USB URBs */
1187/* usb_init is called once when a new matching device is detected to setup */
1188/* main parameters. It registers the driver at the main hisax module. */
1189/* on success 0 is returned. */
1190/***************************************************************************/
1191static int 1090static int
1192usb_init(hfcusb_data * hfc) 1091hfc_usb_init(hfcusb_data * hfc)
1193{ 1092{
1194 usb_fifo *fifo; 1093 usb_fifo *fifo;
1195 int i, err; 1094 int i, err;
@@ -1214,11 +1113,11 @@ usb_init(hfcusb_data * hfc)
1214 /* aux = output, reset off */ 1113 /* aux = output, reset off */
1215 write_usb(hfc, HFCUSB_CIRM, 0x10); 1114 write_usb(hfc, HFCUSB_CIRM, 0x10);
1216 1115
1217 /* set USB_SIZE to match the wMaxPacketSize for INT or BULK transfers */ 1116 /* set USB_SIZE to match wMaxPacketSize for INT or BULK transfers */
1218 write_usb(hfc, HFCUSB_USB_SIZE, 1117 write_usb(hfc, HFCUSB_USB_SIZE,
1219 (hfc->packet_size / 8) | ((hfc->packet_size / 8) << 4)); 1118 (hfc->packet_size / 8) | ((hfc->packet_size / 8) << 4));
1220 1119
1221 /* set USB_SIZE_I to match the wMaxPacketSize for ISO transfers */ 1120 /* set USB_SIZE_I to match wMaxPacketSize for ISO transfers */
1222 write_usb(hfc, HFCUSB_USB_SIZE_I, hfc->iso_packet_size); 1121 write_usb(hfc, HFCUSB_USB_SIZE_I, hfc->iso_packet_size);
1223 1122
1224 /* enable PCM/GCI master mode */ 1123 /* enable PCM/GCI master mode */
@@ -1257,8 +1156,8 @@ usb_init(hfcusb_data * hfc)
1257 hfc->b_mode[0] = L1_MODE_NULL; 1156 hfc->b_mode[0] = L1_MODE_NULL;
1258 hfc->b_mode[1] = L1_MODE_NULL; 1157 hfc->b_mode[1] = L1_MODE_NULL;
1259 1158
1260 hfc->l1_activated = false; 1159 hfc->l1_activated = 0;
1261 hfc->disc_flag = false; 1160 hfc->disc_flag = 0;
1262 hfc->led_state = 0; 1161 hfc->led_state = 0;
1263 hfc->led_new_data = 0; 1162 hfc->led_new_data = 0;
1264 hfc->old_led_state = 0; 1163 hfc->old_led_state = 0;
@@ -1349,11 +1248,9 @@ usb_init(hfcusb_data * hfc)
1349 handle_led(hfc, LED_POWER_ON); 1248 handle_led(hfc, LED_POWER_ON);
1350 1249
1351 return (0); 1250 return (0);
1352} /* usb_init */ 1251}
1353 1252
1354/*************************************************/ 1253/* initial callback for each plugged USB device */
1355/* function called to probe a new plugged device */
1356/*************************************************/
1357static int 1254static int
1358hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) 1255hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
1359{ 1256{
@@ -1378,11 +1275,6 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
1378 } 1275 }
1379 } 1276 }
1380 1277
1381#ifdef CONFIG_HISAX_DEBUG
1382 DBG(USB_DBG,
1383 "HFC-USB: probing interface(%d) actalt(%d) minor(%d)\n", ifnum,
1384 iface->desc.bAlternateSetting, intf->minor);
1385#endif
1386 printk(KERN_INFO 1278 printk(KERN_INFO
1387 "HFC-S USB: probing interface(%d) actalt(%d) minor(%d)\n", 1279 "HFC-S USB: probing interface(%d) actalt(%d) minor(%d)\n",
1388 ifnum, iface->desc.bAlternateSetting, intf->minor); 1280 ifnum, iface->desc.bAlternateSetting, intf->minor);
@@ -1403,15 +1295,11 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
1403 1295
1404 /* check for config EOL element */ 1296 /* check for config EOL element */
1405 while (validconf[cfg_used][0]) { 1297 while (validconf[cfg_used][0]) {
1406 cfg_found = true; 1298 cfg_found = 1;
1407 vcf = validconf[cfg_used]; 1299 vcf = validconf[cfg_used];
1408 /* first endpoint descriptor */ 1300 /* first endpoint descriptor */
1409 ep = iface->endpoint; 1301 ep = iface->endpoint;
1410#ifdef CONFIG_HISAX_DEBUG 1302
1411 DBG(USB_DBG,
1412 "HFC-S USB: (if=%d alt=%d cfg_used=%d)\n",
1413 ifnum, probe_alt_setting, cfg_used);
1414#endif
1415 memcpy(cmptbl, vcf, 16 * sizeof(int)); 1303 memcpy(cmptbl, vcf, 16 * sizeof(int));
1416 1304
1417 /* check for all endpoints in this alternate setting */ 1305 /* check for all endpoints in this alternate setting */
@@ -1425,7 +1313,7 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
1425 idx++; 1313 idx++;
1426 attr = ep->desc.bmAttributes; 1314 attr = ep->desc.bmAttributes;
1427 if (cmptbl[idx] == EP_NUL) { 1315 if (cmptbl[idx] == EP_NUL) {
1428 cfg_found = false; 1316 cfg_found = 0;
1429 } 1317 }
1430 if (attr == USB_ENDPOINT_XFER_INT 1318 if (attr == USB_ENDPOINT_XFER_INT
1431 && cmptbl[idx] == EP_INT) 1319 && cmptbl[idx] == EP_INT)
@@ -1438,16 +1326,9 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
1438 cmptbl[idx] = EP_NUL; 1326 cmptbl[idx] = EP_NUL;
1439 1327
1440 /* check if all INT endpoints match minimum interval */ 1328 /* check if all INT endpoints match minimum interval */
1441 if (attr == USB_ENDPOINT_XFER_INT 1329 if ((attr == USB_ENDPOINT_XFER_INT)
1442 && ep->desc.bInterval < 1330 && (ep->desc.bInterval < vcf[17])) {
1443 vcf[17]) { 1331 cfg_found = 0;
1444#ifdef CONFIG_HISAX_DEBUG
1445 if (cfg_found)
1446 DBG(USB_DBG,
1447 "HFC-S USB: Interrupt Endpoint interval < %d found - skipping config",
1448 vcf[17]);
1449#endif
1450 cfg_found = false;
1451 } 1332 }
1452 ep++; 1333 ep++;
1453 } 1334 }
@@ -1455,7 +1336,7 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
1455 /* all entries must be EP_NOP or EP_NUL for a valid config */ 1336 /* all entries must be EP_NOP or EP_NUL for a valid config */
1456 if (cmptbl[i] != EP_NOP 1337 if (cmptbl[i] != EP_NOP
1457 && cmptbl[i] != EP_NUL) 1338 && cmptbl[i] != EP_NUL)
1458 cfg_found = false; 1339 cfg_found = 0;
1459 } 1340 }
1460 if (cfg_found) { 1341 if (cfg_found) {
1461 if (cfg_used < small_match) { 1342 if (cfg_used < small_match) {
@@ -1464,23 +1345,16 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
1464 probe_alt_setting; 1345 probe_alt_setting;
1465 iface_used = iface; 1346 iface_used = iface;
1466 } 1347 }
1467#ifdef CONFIG_HISAX_DEBUG
1468 DBG(USB_DBG,
1469 "HFC-USB: small_match=%x %x\n",
1470 small_match, alt_used);
1471#endif
1472 } 1348 }
1473 cfg_used++; 1349 cfg_used++;
1474 } 1350 }
1475 alt_idx++; 1351 alt_idx++;
1476 } /* (alt_idx < intf->num_altsetting) */ 1352 } /* (alt_idx < intf->num_altsetting) */
1477 1353
1478 /* found a valid USB Ta Endpint config */ 1354 /* found a valid USB Ta Endpint config */
1479 if (small_match != 0xffff) { 1355 if (small_match != 0xffff) {
1480 iface = iface_used; 1356 iface = iface_used;
1481 if (! 1357 if (!(context = kzalloc(sizeof(hfcusb_data), GFP_KERNEL)))
1482 (context =
1483 kzalloc(sizeof(hfcusb_data), GFP_KERNEL)))
1484 return (-ENOMEM); /* got no mem */ 1358 return (-ENOMEM); /* got no mem */
1485 1359
1486 ep = iface->endpoint; 1360 ep = iface->endpoint;
@@ -1613,20 +1487,15 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
1613 driver_info; 1487 driver_info;
1614 printk(KERN_INFO "HFC-S USB: detected \"%s\"\n", 1488 printk(KERN_INFO "HFC-S USB: detected \"%s\"\n",
1615 driver_info->vend_name); 1489 driver_info->vend_name);
1616#ifdef CONFIG_HISAX_DEBUG 1490
1617 DBG(USB_DBG, 1491 DBG(HFCUSB_DBG_INIT,
1618 "HFC-S USB: Endpoint-Config: %s (if=%d alt=%d)\n", 1492 "HFC-S USB: Endpoint-Config: %s (if=%d alt=%d), E-Channel(%d)",
1619 conf_str[small_match], context->if_used, 1493 conf_str[small_match], context->if_used,
1620 context->alt_used); 1494 context->alt_used,
1621 printk(KERN_INFO 1495 validconf[small_match][18]);
1622 "HFC-S USB: E-channel (\"ECHO:\") logging "); 1496
1623 if (validconf[small_match][18])
1624 printk(" possible\n");
1625 else
1626 printk("NOT possible\n");
1627#endif
1628 /* init the chip and register the driver */ 1497 /* init the chip and register the driver */
1629 if (usb_init(context)) { 1498 if (hfc_usb_init(context)) {
1630 usb_kill_urb(context->ctrl_urb); 1499 usb_kill_urb(context->ctrl_urb);
1631 usb_free_urb(context->ctrl_urb); 1500 usb_free_urb(context->ctrl_urb);
1632 context->ctrl_urb = NULL; 1501 context->ctrl_urb = NULL;
@@ -1643,17 +1512,19 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
1643 return (-EIO); 1512 return (-EIO);
1644} 1513}
1645 1514
1646/****************************************************/ 1515/* callback for unplugged USB device */
1647/* function called when an active device is removed */
1648/****************************************************/
1649static void 1516static void
1650hfc_usb_disconnect(struct usb_interface 1517hfc_usb_disconnect(struct usb_interface
1651 *intf) 1518 *intf)
1652{ 1519{
1653 hfcusb_data *context = usb_get_intfdata(intf); 1520 hfcusb_data *context = usb_get_intfdata(intf);
1654 int i; 1521 int i;
1522
1523 handle_led(context, LED_POWER_OFF);
1524 schedule_timeout((10 * HZ) / 1000);
1525
1655 printk(KERN_INFO "HFC-S USB: device disconnect\n"); 1526 printk(KERN_INFO "HFC-S USB: device disconnect\n");
1656 context->disc_flag = true; 1527 context->disc_flag = 1;
1657 usb_set_intfdata(intf, NULL); 1528 usb_set_intfdata(intf, NULL);
1658 if (!context) 1529 if (!context)
1659 return; 1530 return;
@@ -1661,25 +1532,22 @@ hfc_usb_disconnect(struct usb_interface
1661 del_timer(&context->t3_timer); 1532 del_timer(&context->t3_timer);
1662 if (timer_pending(&context->t4_timer)) 1533 if (timer_pending(&context->t4_timer))
1663 del_timer(&context->t4_timer); 1534 del_timer(&context->t4_timer);
1535
1664 /* tell all fifos to terminate */ 1536 /* tell all fifos to terminate */
1665 for (i = 0; i < HFCUSB_NUM_FIFOS; i++) { 1537 for (i = 0; i < HFCUSB_NUM_FIFOS; i++) {
1666 if (context->fifos[i].usb_transfer_mode == USB_ISOC) { 1538 if (context->fifos[i].usb_transfer_mode == USB_ISOC) {
1667 if (context->fifos[i].active > 0) { 1539 if (context->fifos[i].active > 0) {
1668 stop_isoc_chain(&context->fifos[i]); 1540 stop_isoc_chain(&context->fifos[i]);
1669#ifdef CONFIG_HISAX_DEBUG 1541 DBG(HFCUSB_DBG_INIT,
1670 DBG(USB_DBG, 1542 "HFC-S USB: %s stopping ISOC chain Fifo(%i)",
1671 "HFC-S USB: hfc_usb_disconnect: stopping ISOC chain Fifo no %i", 1543 __FUNCTION__, i);
1672 i);
1673#endif
1674 } 1544 }
1675 } else { 1545 } else {
1676 if (context->fifos[i].active > 0) { 1546 if (context->fifos[i].active > 0) {
1677 context->fifos[i].active = 0; 1547 context->fifos[i].active = 0;
1678#ifdef CONFIG_HISAX_DEBUG 1548 DBG(HFCUSB_DBG_INIT,
1679 DBG(USB_DBG, 1549 "HFC-S USB: %s unlinking URB for Fifo(%i)",
1680 "HFC-S USB: hfc_usb_disconnect: unlinking URB for Fifo no %i", 1550 __FUNCTION__, i);
1681 i);
1682#endif
1683 } 1551 }
1684 usb_kill_urb(context->fifos[i].urb); 1552 usb_kill_urb(context->fifos[i].urb);
1685 usb_free_urb(context->fifos[i].urb); 1553 usb_free_urb(context->fifos[i].urb);
@@ -1692,34 +1560,29 @@ hfc_usb_disconnect(struct usb_interface
1692 context->ctrl_urb = NULL; 1560 context->ctrl_urb = NULL;
1693 hisax_unregister(&context->d_if); 1561 hisax_unregister(&context->d_if);
1694 kfree(context); /* free our structure again */ 1562 kfree(context); /* free our structure again */
1695} /* hfc_usb_disconnect */ 1563}
1696 1564
1697/************************************/
1698/* our driver information structure */
1699/************************************/
1700static struct usb_driver hfc_drv = { 1565static struct usb_driver hfc_drv = {
1701 .name = "hfc_usb", 1566 .name = "hfc_usb",
1702 .id_table = hfcusb_idtab, 1567 .id_table = hfcusb_idtab,
1703 .probe = hfc_usb_probe, 1568 .probe = hfc_usb_probe,
1704 .disconnect = hfc_usb_disconnect, 1569 .disconnect = hfc_usb_disconnect,
1705}; 1570};
1571
1706static void __exit 1572static void __exit
1707hfc_usb_exit(void) 1573hfc_usb_mod_exit(void)
1708{ 1574{
1709#ifdef CONFIG_HISAX_DEBUG 1575 usb_deregister(&hfc_drv); /* release our driver */
1710 DBG(USB_DBG, "HFC-S USB: calling \"hfc_usb_exit\" ...");
1711#endif
1712 usb_deregister(&hfc_drv); /* release our driver */
1713 printk(KERN_INFO "HFC-S USB: module removed\n"); 1576 printk(KERN_INFO "HFC-S USB: module removed\n");
1714} 1577}
1715 1578
1716static int __init 1579static int __init
1717hfc_usb_init(void) 1580hfc_usb_mod_init(void)
1718{ 1581{
1582 char revstr[30], datestr[30], dummy[30];
1719#ifndef CONFIG_HISAX_DEBUG 1583#ifndef CONFIG_HISAX_DEBUG
1720 unsigned int debug = -1; 1584 hfc_debug = debug;
1721#endif 1585#endif
1722 char revstr[30], datestr[30], dummy[30];
1723 sscanf(hfcusb_revision, 1586 sscanf(hfcusb_revision,
1724 "%s %s $ %s %s %s $ ", dummy, revstr, 1587 "%s %s $ %s %s %s $ ", dummy, revstr,
1725 dummy, datestr, dummy); 1588 dummy, datestr, dummy);
@@ -1734,8 +1597,8 @@ hfc_usb_init(void)
1734 return (0); 1597 return (0);
1735} 1598}
1736 1599
1737module_init(hfc_usb_init); 1600module_init(hfc_usb_mod_init);
1738module_exit(hfc_usb_exit); 1601module_exit(hfc_usb_mod_exit);
1739MODULE_AUTHOR(DRIVER_AUTHOR); 1602MODULE_AUTHOR(DRIVER_AUTHOR);
1740MODULE_DESCRIPTION(DRIVER_DESC); 1603MODULE_DESCRIPTION(DRIVER_DESC);
1741MODULE_LICENSE("GPL"); 1604MODULE_LICENSE("GPL");
diff --git a/drivers/isdn/hisax/hfc_usb.h b/drivers/isdn/hisax/hfc_usb.h
index 471f2354dfde..e79f56568d30 100644
--- a/drivers/isdn/hisax/hfc_usb.h
+++ b/drivers/isdn/hisax/hfc_usb.h
@@ -1,8 +1,8 @@
1/* 1/*
2* hfc_usb.h 2 * hfc_usb.h
3* 3 *
4* $Id: hfc_usb.h,v 4.2 2005/04/07 15:27:17 martinb1 Exp $ 4 * $Id: hfc_usb.h,v 1.1.2.5 2007/08/20 14:36:03 mbachem Exp $
5*/ 5 */
6 6
7#ifndef __HFC_USB_H__ 7#ifndef __HFC_USB_H__
8#define __HFC_USB_H__ 8#define __HFC_USB_H__
@@ -10,25 +10,20 @@
10#define DRIVER_AUTHOR "Peter Sprenger (sprenger@moving-byters.de)" 10#define DRIVER_AUTHOR "Peter Sprenger (sprenger@moving-byters.de)"
11#define DRIVER_DESC "HFC-S USB based HiSAX ISDN driver" 11#define DRIVER_DESC "HFC-S USB based HiSAX ISDN driver"
12 12
13#define VERBOSE_USB_DEBUG
14 13
14#define HFC_CTRL_TIMEOUT 20 /* 5ms timeout writing/reading regs */
15#define HFC_TIMER_T3 8000 /* timeout for l1 activation timer */
16#define HFC_TIMER_T4 500 /* time for state change interval */
15 17
16/***********/ 18#define HFCUSB_L1_STATECHANGE 0 /* L1 state changed */
17/* defines */ 19#define HFCUSB_L1_DRX 1 /* D-frame received */
18/***********/ 20#define HFCUSB_L1_ERX 2 /* E-frame received */
19#define HFC_CTRL_TIMEOUT 20 /* 5ms timeout writing/reading regs */ 21#define HFCUSB_L1_DTX 4 /* D-frames completed */
20#define HFC_TIMER_T3 8000 /* timeout for l1 activation timer */
21#define HFC_TIMER_T4 500 /* time for state change interval */
22 22
23#define HFCUSB_L1_STATECHANGE 0 /* L1 state changed */ 23#define MAX_BCH_SIZE 2048 /* allowed B-channel packet size */
24#define HFCUSB_L1_DRX 1 /* D-frame received */
25#define HFCUSB_L1_ERX 2 /* E-frame received */
26#define HFCUSB_L1_DTX 4 /* D-frames completed */
27 24
28#define MAX_BCH_SIZE 2048 /* allowed B-channel packet size */ 25#define HFCUSB_RX_THRESHOLD 64 /* threshold for fifo report bit rx */
29 26#define HFCUSB_TX_THRESHOLD 64 /* threshold for fifo report bit tx */
30#define HFCUSB_RX_THRESHOLD 64 /* threshold for fifo report bit rx */
31#define HFCUSB_TX_THRESHOLD 64 /* threshold for fifo report bit tx */
32 27
33#define HFCUSB_CHIP_ID 0x16 /* Chip ID register index */ 28#define HFCUSB_CHIP_ID 0x16 /* Chip ID register index */
34#define HFCUSB_CIRM 0x00 /* cirm register index */ 29#define HFCUSB_CIRM 0x00 /* cirm register index */
@@ -52,9 +47,8 @@
52 47
53#define HFCUSB_CHIPID 0x40 /* ID value of HFC-S USB */ 48#define HFCUSB_CHIPID 0x40 /* ID value of HFC-S USB */
54 49
55/******************/ 50
56/* fifo registers */ 51/* fifo registers */
57/******************/
58#define HFCUSB_NUM_FIFOS 8 /* maximum number of fifos */ 52#define HFCUSB_NUM_FIFOS 8 /* maximum number of fifos */
59#define HFCUSB_B1_TX 0 /* index for B1 transmit bulk/int */ 53#define HFCUSB_B1_TX 0 /* index for B1 transmit bulk/int */
60#define HFCUSB_B1_RX 1 /* index for B1 receive bulk/int */ 54#define HFCUSB_B1_RX 1 /* index for B1 receive bulk/int */
@@ -66,9 +60,9 @@
66#define HFCUSB_PCM_RX 7 60#define HFCUSB_PCM_RX 7
67 61
68/* 62/*
69* used to switch snd_transfer_mode for different TA modes e.g. the Billion USB TA just 63 * used to switch snd_transfer_mode for different TA modes e.g. the Billion USB TA just
70* supports ISO out, while the Cologne Chip EVAL TA just supports BULK out 64 * supports ISO out, while the Cologne Chip EVAL TA just supports BULK out
71*/ 65 */
72#define USB_INT 0 66#define USB_INT 0
73#define USB_BULK 1 67#define USB_BULK 1
74#define USB_ISOC 2 68#define USB_ISOC 2
@@ -77,49 +71,36 @@
77#define ISOC_PACKETS_B 8 71#define ISOC_PACKETS_B 8
78#define ISO_BUFFER_SIZE 128 72#define ISO_BUFFER_SIZE 128
79 73
80// ISO send definitions 74/* Fifo flow Control for TX ISO */
81#define SINK_MAX 68 75#define SINK_MAX 68
82#define SINK_MIN 48 76#define SINK_MIN 48
83#define SINK_DMIN 12 77#define SINK_DMIN 12
84#define SINK_DMAX 18 78#define SINK_DMAX 18
85#define BITLINE_INF (-64*8) 79#define BITLINE_INF (-64*8)
86 80
87 81/* HFC-S USB register access by Control-URSs */
88/**********/
89/* macros */
90/**********/
91#define write_usb(a,b,c)usb_control_msg((a)->dev,(a)->ctrl_out_pipe,0,0x40,(c),(b),NULL,0,HFC_CTRL_TIMEOUT) 82#define write_usb(a,b,c)usb_control_msg((a)->dev,(a)->ctrl_out_pipe,0,0x40,(c),(b),NULL,0,HFC_CTRL_TIMEOUT)
92#define read_usb(a,b,c) usb_control_msg((a)->dev,(a)->ctrl_in_pipe,1,0xC0,0,(b),(c),1,HFC_CTRL_TIMEOUT) 83#define read_usb(a,b,c) usb_control_msg((a)->dev,(a)->ctrl_in_pipe,1,0xC0,0,(b),(c),1,HFC_CTRL_TIMEOUT)
93
94
95/*******************/
96/* Debugging Flags */
97/*******************/
98#define USB_DBG 1
99#define ISDN_DBG 2
100
101
102/* *********************/
103/* USB related defines */
104/***********************/
105#define HFC_CTRL_BUFSIZE 32 84#define HFC_CTRL_BUFSIZE 32
106 85
107
108
109/*************************************************/
110/* entry and size of output/input control buffer */ 86/* entry and size of output/input control buffer */
111/*************************************************/
112typedef struct { 87typedef struct {
113 __u8 hfc_reg; /* register number */ 88 __u8 hfc_reg; /* register number */
114 __u8 reg_val; /* value to be written (or read) */ 89 __u8 reg_val; /* value to be written (or read) */
115 int action; /* data for action handler */ 90 int action; /* data for action handler */
116} ctrl_buft; 91} ctrl_buft;
117 92
93/* Debugging Flags */
94#define HFCUSB_DBG_INIT 0x0001
95#define HFCUSB_DBG_STATES 0x0002
96#define HFCUSB_DBG_DCHANNEL 0x0080
97#define HFCUSB_DBG_FIFO_ERR 0x4000
98#define HFCUSB_DBG_VERBOSE_USB 0x8000
118 99
119/********************/ 100/*
120/* URB error codes: */ 101 * URB error codes:
121/********************/ 102 * Used to represent a list of values and their respective symbolic names
122/* Used to represent a list of values and their respective symbolic names */ 103 */
123struct hfcusb_symbolic_list { 104struct hfcusb_symbolic_list {
124 const int num; 105 const int num;
125 const char *name; 106 const char *name;
@@ -134,20 +115,20 @@ static struct hfcusb_symbolic_list urb_errlist[] = {
134 {-ENXIO, "URB already queued"}, 115 {-ENXIO, "URB already queued"},
135 {-EFBIG, "Too much ISO frames requested"}, 116 {-EFBIG, "Too much ISO frames requested"},
136 {-ENOSR, "Buffer error (overrun)"}, 117 {-ENOSR, "Buffer error (overrun)"},
137 {-EPIPE, "Specified endpoint is stalled"}, 118 {-EPIPE, "Specified endpoint is stalled (device not responding)"},
138 {-EOVERFLOW, "Babble (bad cable?)"}, 119 {-EOVERFLOW, "Babble (bad cable?)"},
139 {-EPROTO, "Bit-stuff error (bad cable?)"}, 120 {-EPROTO, "Bit-stuff error (bad cable?)"},
140 {-EILSEQ, "CRC or missing token"}, 121 {-EILSEQ, "CRC/Timeout"},
141 {-ETIME, "Device did not respond"}, 122 {-ETIMEDOUT, "NAK (device does not respond)"},
142 {-ESHUTDOWN, "Device unplugged"}, 123 {-ESHUTDOWN, "Device unplugged"},
143 {-1, NULL} 124 {-1, NULL}
144}; 125};
145 126
146 127
147/*****************************************************/ 128/*
148/* device dependant information to support different */ 129 * device dependant information to support different
149/* ISDN Ta's using the HFC-S USB chip */ 130 * ISDN Ta's using the HFC-S USB chip
150/*****************************************************/ 131 */
151 132
152/* USB descriptor need to contain one of the following EndPoint combination: */ 133/* USB descriptor need to contain one of the following EndPoint combination: */
153#define CNF_4INT3ISO 1 // 4 INT IN, 3 ISO OUT 134#define CNF_4INT3ISO 1 // 4 INT IN, 3 ISO OUT
@@ -155,16 +136,19 @@ static struct hfcusb_symbolic_list urb_errlist[] = {
155#define CNF_4ISO3ISO 3 // 4 ISO IN, 3 ISO OUT 136#define CNF_4ISO3ISO 3 // 4 ISO IN, 3 ISO OUT
156#define CNF_3ISO3ISO 4 // 3 ISO IN, 3 ISO OUT 137#define CNF_3ISO3ISO 4 // 3 ISO IN, 3 ISO OUT
157 138
158#define EP_NUL 1 // Endpoint at this position not allowed 139#define EP_NUL 1 // Endpoint at this position not allowed
159#define EP_NOP 2 // all type of endpoints allowed at this position 140#define EP_NOP 2 // all type of endpoints allowed at this position
160#define EP_ISO 3 // Isochron endpoint mandatory at this position 141#define EP_ISO 3 // Isochron endpoint mandatory at this position
161#define EP_BLK 4 // Bulk endpoint mandatory at this position 142#define EP_BLK 4 // Bulk endpoint mandatory at this position
162#define EP_INT 5 // Interrupt endpoint mandatory at this position 143#define EP_INT 5 // Interrupt endpoint mandatory at this position
163 144
164/* this array represents all endpoints possible in the HCF-USB the last 145/*
165* 3 entries are the configuration number, the minimum interval for 146 * List of all supported endpoint configuration sets, used to find the
166* Interrupt endpoints & boolean if E-channel logging possible 147 * best matching endpoint configuration within a devices' USB descriptor.
167*/ 148 * We need at least 3 RX endpoints, and 3 TX endpoints, either
149 * INT-in and ISO-out, or ISO-in and ISO-out)
150 * with 4 RX endpoints even E-Channel logging is possible
151 */
168static int validconf[][19] = { 152static int validconf[][19] = {
169 // INT in, ISO out config 153 // INT in, ISO out config
170 {EP_NUL, EP_INT, EP_NUL, EP_INT, EP_NUL, EP_INT, EP_NOP, EP_INT, 154 {EP_NUL, EP_INT, EP_NUL, EP_INT, EP_NUL, EP_INT, EP_NOP, EP_INT,
@@ -193,7 +177,6 @@ static char *conf_str[] = {
193}; 177};
194#endif 178#endif
195 179
196
197typedef struct { 180typedef struct {
198 int vendor; // vendor id 181 int vendor; // vendor id
199 int prod_id; // product id 182 int prod_id; // product id
@@ -202,9 +185,9 @@ typedef struct {
202 signed short led_bits[8]; // array of 8 possible LED bitmask settings 185 signed short led_bits[8]; // array of 8 possible LED bitmask settings
203} vendor_data; 186} vendor_data;
204 187
205#define LED_OFF 0 // no LED support 188#define LED_OFF 0 // no LED support
206#define LED_SCHEME1 1 // LED standard scheme 189#define LED_SCHEME1 1 // LED standard scheme
207#define LED_SCHEME2 2 // not used yet... 190#define LED_SCHEME2 2 // not used yet...
208 191
209#define LED_POWER_ON 1 192#define LED_POWER_ON 1
210#define LED_POWER_OFF 2 193#define LED_POWER_OFF 2
@@ -217,11 +200,8 @@ typedef struct {
217#define LED_B2_OFF 9 200#define LED_B2_OFF 9
218#define LED_B2_DATA 10 201#define LED_B2_DATA 10
219 202
220#define LED_NORMAL 0 // LEDs are normal 203#define LED_NORMAL 0 // LEDs are normal
221#define LED_INVERTED 1 // LEDs are inverted 204#define LED_INVERTED 1 // LEDs are inverted
222
223/* time in ms to perform a Flashing LED when B-Channel has traffic */
224#define LED_TIME 250
225 205
226 206
227#endif // __HFC_USB_H__ 207#endif // __HFC_USB_H__
diff --git a/drivers/isdn/i4l/isdn_bsdcomp.c b/drivers/isdn/i4l/isdn_bsdcomp.c
index 90a23795db7e..02d9918705dd 100644
--- a/drivers/isdn/i4l/isdn_bsdcomp.c
+++ b/drivers/isdn/i4l/isdn_bsdcomp.c
@@ -341,7 +341,7 @@ static void *bsd_alloc (struct isdn_ppp_comp_data *data)
341 * Allocate space for the dictionary. This may be more than one page in 341 * Allocate space for the dictionary. This may be more than one page in
342 * length. 342 * length.
343 */ 343 */
344 db->dict = (struct bsd_dict *) vmalloc (hsize * sizeof (struct bsd_dict)); 344 db->dict = vmalloc(hsize * sizeof(struct bsd_dict));
345 if (!db->dict) { 345 if (!db->dict) {
346 bsd_free (db); 346 bsd_free (db);
347 return NULL; 347 return NULL;
@@ -354,8 +354,7 @@ static void *bsd_alloc (struct isdn_ppp_comp_data *data)
354 if (!decomp) 354 if (!decomp)
355 db->lens = NULL; 355 db->lens = NULL;
356 else { 356 else {
357 db->lens = (unsigned short *) vmalloc ((maxmaxcode + 1) * 357 db->lens = vmalloc((maxmaxcode + 1) * sizeof(db->lens[0]));
358 sizeof (db->lens[0]));
359 if (!db->lens) { 358 if (!db->lens) {
360 bsd_free (db); 359 bsd_free (db);
361 return (NULL); 360 return (NULL);
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
index c97330b19877..ec5f4046412f 100644
--- a/drivers/isdn/i4l/isdn_common.c
+++ b/drivers/isdn/i4l/isdn_common.c
@@ -2291,7 +2291,7 @@ static int __init isdn_init(void)
2291 int i; 2291 int i;
2292 char tmprev[50]; 2292 char tmprev[50];
2293 2293
2294 if (!(dev = (isdn_dev *) vmalloc(sizeof(isdn_dev)))) { 2294 if (!(dev = vmalloc(sizeof(isdn_dev)))) {
2295 printk(KERN_WARNING "isdn: Could not allocate device-struct.\n"); 2295 printk(KERN_WARNING "isdn: Could not allocate device-struct.\n");
2296 return -EIO; 2296 return -EIO;
2297 } 2297 }
diff --git a/drivers/kvm/Kconfig b/drivers/kvm/Kconfig
index 6cecc396e040..7b64fd4aa2f3 100644
--- a/drivers/kvm/Kconfig
+++ b/drivers/kvm/Kconfig
@@ -5,6 +5,11 @@ menuconfig VIRTUALIZATION
5 bool "Virtualization" 5 bool "Virtualization"
6 depends on X86 6 depends on X86
7 default y 7 default y
8 ---help---
9 Say Y here to get to see options for virtualization guest drivers.
10 This option alone does not add any kernel code.
11
12 If you say N, all options in this submenu will be skipped and disabled.
8 13
9if VIRTUALIZATION 14if VIRTUALIZATION
10 15
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index 96856097d15b..cd0557954e50 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -2974,6 +2974,10 @@ static int kvm_cpu_hotplug(struct notifier_block *notifier, unsigned long val,
2974 switch (val) { 2974 switch (val) {
2975 case CPU_DYING: 2975 case CPU_DYING:
2976 case CPU_DYING_FROZEN: 2976 case CPU_DYING_FROZEN:
2977 printk(KERN_INFO "kvm: disabling virtualization on CPU%d\n",
2978 cpu);
2979 hardware_disable(NULL);
2980 break;
2977 case CPU_UP_CANCELED: 2981 case CPU_UP_CANCELED:
2978 case CPU_UP_CANCELED_FROZEN: 2982 case CPU_UP_CANCELED_FROZEN:
2979 printk(KERN_INFO "kvm: disabling virtualization on CPU%d\n", 2983 printk(KERN_INFO "kvm: disabling virtualization on CPU%d\n",
diff --git a/drivers/lguest/Kconfig b/drivers/lguest/Kconfig
index fd6925f41647..41e2250613a1 100644
--- a/drivers/lguest/Kconfig
+++ b/drivers/lguest/Kconfig
@@ -1,6 +1,6 @@
1config LGUEST 1config LGUEST
2 tristate "Linux hypervisor example code" 2 tristate "Linux hypervisor example code"
3 depends on X86 && PARAVIRT && EXPERIMENTAL && !X86_PAE 3 depends on X86 && PARAVIRT && EXPERIMENTAL && !X86_PAE && FUTEX
4 select LGUEST_GUEST 4 select LGUEST_GUEST
5 select HVC_DRIVER 5 select HVC_DRIVER
6 ---help--- 6 ---help---
diff --git a/drivers/macintosh/Kconfig b/drivers/macintosh/Kconfig
index dbe96268866e..56cd8998fe4b 100644
--- a/drivers/macintosh/Kconfig
+++ b/drivers/macintosh/Kconfig
@@ -3,6 +3,11 @@ menuconfig MACINTOSH_DRIVERS
3 bool "Macintosh device drivers" 3 bool "Macintosh device drivers"
4 depends on PPC || MAC || X86 4 depends on PPC || MAC || X86
5 default y if (PPC_PMAC || MAC) 5 default y if (PPC_PMAC || MAC)
6 ---help---
7 Say Y here to get to see options for devices used with Macintosh
8 computers. This option alone does not add any kernel code.
9
10 If you say N, all options in this submenu will be skipped and disabled.
6 11
7if MACINTOSH_DRIVERS 12if MACINTOSH_DRIVERS
8 13
diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c
index bc77c5e2ca9f..5c742a526082 100644
--- a/drivers/macintosh/adb.c
+++ b/drivers/macintosh/adb.c
@@ -89,7 +89,7 @@ static int sleepy_trackpad;
89static int autopoll_devs; 89static int autopoll_devs;
90int __adb_probe_sync; 90int __adb_probe_sync;
91 91
92#ifdef CONFIG_PM 92#ifdef CONFIG_PM_SLEEP
93static void adb_notify_sleep(struct pmu_sleep_notifier *self, int when); 93static void adb_notify_sleep(struct pmu_sleep_notifier *self, int when);
94static struct pmu_sleep_notifier adb_sleep_notifier = { 94static struct pmu_sleep_notifier adb_sleep_notifier = {
95 adb_notify_sleep, 95 adb_notify_sleep,
@@ -313,7 +313,7 @@ int __init adb_init(void)
313 printk(KERN_WARNING "Warning: no ADB interface detected\n"); 313 printk(KERN_WARNING "Warning: no ADB interface detected\n");
314 adb_controller = NULL; 314 adb_controller = NULL;
315 } else { 315 } else {
316#ifdef CONFIG_PM 316#ifdef CONFIG_PM_SLEEP
317 pmu_register_sleep_notifier(&adb_sleep_notifier); 317 pmu_register_sleep_notifier(&adb_sleep_notifier);
318#endif /* CONFIG_PM */ 318#endif /* CONFIG_PM */
319#ifdef CONFIG_PPC 319#ifdef CONFIG_PPC
diff --git a/drivers/macintosh/mac_hid.c b/drivers/macintosh/mac_hid.c
index 76c1e8e4a487..33dee3a773ed 100644
--- a/drivers/macintosh/mac_hid.c
+++ b/drivers/macintosh/mac_hid.c
@@ -13,6 +13,7 @@
13#include <linux/sysctl.h> 13#include <linux/sysctl.h>
14#include <linux/input.h> 14#include <linux/input.h>
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/kbd_kern.h>
16 17
17 18
18static struct input_dev *emumousebtn; 19static struct input_dev *emumousebtn;
diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
index 5eee480245f3..f7c509b7a8ea 100644
--- a/drivers/macintosh/via-pmu.c
+++ b/drivers/macintosh/via-pmu.c
@@ -152,10 +152,10 @@ static spinlock_t pmu_lock;
152static u8 pmu_intr_mask; 152static u8 pmu_intr_mask;
153static int pmu_version; 153static int pmu_version;
154static int drop_interrupts; 154static int drop_interrupts;
155#if defined(CONFIG_PM) && defined(CONFIG_PPC32) 155#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
156static int option_lid_wakeup = 1; 156static int option_lid_wakeup = 1;
157#endif /* CONFIG_PM && CONFIG_PPC32 */ 157#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
158#if (defined(CONFIG_PM)&&defined(CONFIG_PPC32))||defined(CONFIG_PMAC_BACKLIGHT_LEGACY) 158#if (defined(CONFIG_PM_SLEEP)&&defined(CONFIG_PPC32))||defined(CONFIG_PMAC_BACKLIGHT_LEGACY)
159static int sleep_in_progress; 159static int sleep_in_progress;
160#endif 160#endif
161static unsigned long async_req_locks; 161static unsigned long async_req_locks;
@@ -875,7 +875,7 @@ proc_read_options(char *page, char **start, off_t off,
875{ 875{
876 char *p = page; 876 char *p = page;
877 877
878#if defined(CONFIG_PM) && defined(CONFIG_PPC32) 878#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
879 if (pmu_kind == PMU_KEYLARGO_BASED && 879 if (pmu_kind == PMU_KEYLARGO_BASED &&
880 pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) >= 0) 880 pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) >= 0)
881 p += sprintf(p, "lid_wakeup=%d\n", option_lid_wakeup); 881 p += sprintf(p, "lid_wakeup=%d\n", option_lid_wakeup);
@@ -916,7 +916,7 @@ proc_write_options(struct file *file, const char __user *buffer,
916 *(val++) = 0; 916 *(val++) = 0;
917 while(*val == ' ') 917 while(*val == ' ')
918 val++; 918 val++;
919#if defined(CONFIG_PM) && defined(CONFIG_PPC32) 919#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
920 if (pmu_kind == PMU_KEYLARGO_BASED && 920 if (pmu_kind == PMU_KEYLARGO_BASED &&
921 pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) >= 0) 921 pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) >= 0)
922 if (!strcmp(label, "lid_wakeup")) 922 if (!strcmp(label, "lid_wakeup"))
@@ -1738,7 +1738,7 @@ pmu_present(void)
1738 return via != 0; 1738 return via != 0;
1739} 1739}
1740 1740
1741#ifdef CONFIG_PM 1741#ifdef CONFIG_PM_SLEEP
1742 1742
1743static LIST_HEAD(sleep_notifiers); 1743static LIST_HEAD(sleep_notifiers);
1744 1744
@@ -1769,9 +1769,9 @@ pmu_unregister_sleep_notifier(struct pmu_sleep_notifier* n)
1769 return 0; 1769 return 0;
1770} 1770}
1771EXPORT_SYMBOL(pmu_unregister_sleep_notifier); 1771EXPORT_SYMBOL(pmu_unregister_sleep_notifier);
1772#endif /* CONFIG_PM */ 1772#endif /* CONFIG_PM_SLEEP */
1773 1773
1774#if defined(CONFIG_PM) && defined(CONFIG_PPC32) 1774#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
1775 1775
1776/* Sleep is broadcast last-to-first */ 1776/* Sleep is broadcast last-to-first */
1777static void broadcast_sleep(int when) 1777static void broadcast_sleep(int when)
@@ -2390,7 +2390,7 @@ powerbook_sleep_3400(void)
2390 return 0; 2390 return 0;
2391} 2391}
2392 2392
2393#endif /* CONFIG_PM && CONFIG_PPC32 */ 2393#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
2394 2394
2395/* 2395/*
2396 * Support for /dev/pmu device 2396 * Support for /dev/pmu device
@@ -2573,7 +2573,7 @@ pmu_ioctl(struct inode * inode, struct file *filp,
2573 int error = -EINVAL; 2573 int error = -EINVAL;
2574 2574
2575 switch (cmd) { 2575 switch (cmd) {
2576#if defined(CONFIG_PM) && defined(CONFIG_PPC32) 2576#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
2577 case PMU_IOC_SLEEP: 2577 case PMU_IOC_SLEEP:
2578 if (!capable(CAP_SYS_ADMIN)) 2578 if (!capable(CAP_SYS_ADMIN))
2579 return -EACCES; 2579 return -EACCES;
@@ -2601,7 +2601,7 @@ pmu_ioctl(struct inode * inode, struct file *filp,
2601 return put_user(0, argp); 2601 return put_user(0, argp);
2602 else 2602 else
2603 return put_user(1, argp); 2603 return put_user(1, argp);
2604#endif /* CONFIG_PM && CONFIG_PPC32 */ 2604#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
2605 2605
2606#ifdef CONFIG_PMAC_BACKLIGHT_LEGACY 2606#ifdef CONFIG_PMAC_BACKLIGHT_LEGACY
2607 /* Compatibility ioctl's for backlight */ 2607 /* Compatibility ioctl's for backlight */
@@ -2757,7 +2757,7 @@ pmu_polled_request(struct adb_request *req)
2757 * to do suspend-to-disk. 2757 * to do suspend-to-disk.
2758 */ 2758 */
2759 2759
2760#if defined(CONFIG_PM) && defined(CONFIG_PPC32) 2760#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
2761 2761
2762int pmu_sys_suspended; 2762int pmu_sys_suspended;
2763 2763
@@ -2792,7 +2792,7 @@ static int pmu_sys_resume(struct sys_device *sysdev)
2792 return 0; 2792 return 0;
2793} 2793}
2794 2794
2795#endif /* CONFIG_PM && CONFIG_PPC32 */ 2795#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
2796 2796
2797static struct sysdev_class pmu_sysclass = { 2797static struct sysdev_class pmu_sysclass = {
2798 set_kset_name("pmu"), 2798 set_kset_name("pmu"),
@@ -2803,10 +2803,10 @@ static struct sys_device device_pmu = {
2803}; 2803};
2804 2804
2805static struct sysdev_driver driver_pmu = { 2805static struct sysdev_driver driver_pmu = {
2806#if defined(CONFIG_PM) && defined(CONFIG_PPC32) 2806#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
2807 .suspend = &pmu_sys_suspend, 2807 .suspend = &pmu_sys_suspend,
2808 .resume = &pmu_sys_resume, 2808 .resume = &pmu_sys_resume,
2809#endif /* CONFIG_PM && CONFIG_PPC32 */ 2809#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
2810}; 2810};
2811 2811
2812static int __init init_pmu_sysfs(void) 2812static int __init init_pmu_sysfs(void)
@@ -2841,10 +2841,10 @@ EXPORT_SYMBOL(pmu_wait_complete);
2841EXPORT_SYMBOL(pmu_suspend); 2841EXPORT_SYMBOL(pmu_suspend);
2842EXPORT_SYMBOL(pmu_resume); 2842EXPORT_SYMBOL(pmu_resume);
2843EXPORT_SYMBOL(pmu_unlock); 2843EXPORT_SYMBOL(pmu_unlock);
2844#if defined(CONFIG_PM) && defined(CONFIG_PPC32) 2844#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
2845EXPORT_SYMBOL(pmu_enable_irled); 2845EXPORT_SYMBOL(pmu_enable_irled);
2846EXPORT_SYMBOL(pmu_battery_count); 2846EXPORT_SYMBOL(pmu_battery_count);
2847EXPORT_SYMBOL(pmu_batteries); 2847EXPORT_SYMBOL(pmu_batteries);
2848EXPORT_SYMBOL(pmu_power_flags); 2848EXPORT_SYMBOL(pmu_power_flags);
2849#endif /* CONFIG_PM && CONFIG_PPC32 */ 2849#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
2850 2850
diff --git a/drivers/macintosh/via-pmu68k.c b/drivers/macintosh/via-pmu68k.c
index dfdf11c1eec4..e2f84da09e7c 100644
--- a/drivers/macintosh/via-pmu68k.c
+++ b/drivers/macintosh/via-pmu68k.c
@@ -818,243 +818,3 @@ pmu_present(void)
818{ 818{
819 return (pmu_kind != PMU_UNKNOWN); 819 return (pmu_kind != PMU_UNKNOWN);
820} 820}
821
822#if 0 /* needs some work for 68K */
823
824/*
825 * This struct is used to store config register values for
826 * PCI devices which may get powered off when we sleep.
827 */
828static struct pci_save {
829 u16 command;
830 u16 cache_lat;
831 u16 intr;
832} *pbook_pci_saves;
833static int n_pbook_pci_saves;
834
835static inline void
836pbook_pci_save(void)
837{
838 int npci;
839 struct pci_dev *pd = NULL;
840 struct pci_save *ps;
841
842 npci = 0;
843 while ((pd = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, pd)) != NULL)
844 ++npci;
845 n_pbook_pci_saves = npci;
846 if (npci == 0)
847 return;
848 ps = kmalloc(npci * sizeof(*ps), GFP_KERNEL);
849 pbook_pci_saves = ps;
850 if (ps == NULL)
851 return;
852
853 pd = NULL;
854 while ((pd = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, pd)) != NULL) {
855 pci_read_config_word(pd, PCI_COMMAND, &ps->command);
856 pci_read_config_word(pd, PCI_CACHE_LINE_SIZE, &ps->cache_lat);
857 pci_read_config_word(pd, PCI_INTERRUPT_LINE, &ps->intr);
858 ++ps;
859 --npci;
860 }
861}
862
863static inline void
864pbook_pci_restore(void)
865{
866 u16 cmd;
867 struct pci_save *ps = pbook_pci_saves;
868 struct pci_dev *pd = NULL;
869 int j;
870
871 while ((pd = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, pd)) != NULL) {
872 if (ps->command == 0)
873 continue;
874 pci_read_config_word(pd, PCI_COMMAND, &cmd);
875 if ((ps->command & ~cmd) == 0)
876 continue;
877 switch (pd->hdr_type) {
878 case PCI_HEADER_TYPE_NORMAL:
879 for (j = 0; j < 6; ++j)
880 pci_write_config_dword(pd,
881 PCI_BASE_ADDRESS_0 + j*4,
882 pd->resource[j].start);
883 pci_write_config_dword(pd, PCI_ROM_ADDRESS,
884 pd->resource[PCI_ROM_RESOURCE].start);
885 pci_write_config_word(pd, PCI_CACHE_LINE_SIZE,
886 ps->cache_lat);
887 pci_write_config_word(pd, PCI_INTERRUPT_LINE,
888 ps->intr);
889 pci_write_config_word(pd, PCI_COMMAND, ps->command);
890 break;
891 /* other header types not restored at present */
892 }
893 }
894}
895
896/*
897 * Put the powerbook to sleep.
898 */
899#define IRQ_ENABLE ((unsigned int *)0xf3000024)
900#define MEM_CTRL ((unsigned int *)0xf8000070)
901
902int powerbook_sleep(void)
903{
904 int ret, i, x;
905 static int save_backlight;
906 static unsigned int save_irqen;
907 unsigned long msr;
908 unsigned int hid0;
909 unsigned long p, wait;
910 struct adb_request sleep_req;
911
912 /* Notify device drivers */
913 ret = blocking_notifier_call_chain(&sleep_notifier_list,
914 PBOOK_SLEEP, NULL);
915 if (ret & NOTIFY_STOP_MASK)
916 return -EBUSY;
917
918 /* Sync the disks. */
919 /* XXX It would be nice to have some way to ensure that
920 * nobody is dirtying any new buffers while we wait. */
921 sys_sync();
922
923 /* Turn off the display backlight */
924 save_backlight = backlight_enabled;
925 if (save_backlight)
926 pmu_enable_backlight(0);
927
928 /* Give the disks a little time to actually finish writing */
929 for (wait = jiffies + (HZ/4); time_before(jiffies, wait); )
930 mb();
931
932 /* Disable all interrupts except pmu */
933 save_irqen = in_le32(IRQ_ENABLE);
934 for (i = 0; i < 32; ++i)
935 if (i != vias->intrs[0].line && (save_irqen & (1 << i)))
936 disable_irq(i);
937 asm volatile("mtdec %0" : : "r" (0x7fffffff));
938
939 /* Save the state of PCI config space for some slots */
940 pbook_pci_save();
941
942 /* Set the memory controller to keep the memory refreshed
943 while we're asleep */
944 for (i = 0x403f; i >= 0x4000; --i) {
945 out_be32(MEM_CTRL, i);
946 do {
947 x = (in_be32(MEM_CTRL) >> 16) & 0x3ff;
948 } while (x == 0);
949 if (x >= 0x100)
950 break;
951 }
952
953 /* Ask the PMU to put us to sleep */
954 pmu_request(&sleep_req, NULL, 5, PMU_SLEEP, 'M', 'A', 'T', 'T');
955 while (!sleep_req.complete)
956 mb();
957 /* displacement-flush the L2 cache - necessary? */
958 for (p = KERNELBASE; p < KERNELBASE + 0x100000; p += 0x1000)
959 i = *(volatile int *)p;
960 asleep = 1;
961
962 /* Put the CPU into sleep mode */
963 asm volatile("mfspr %0,1008" : "=r" (hid0) :);
964 hid0 = (hid0 & ~(HID0_NAP | HID0_DOZE)) | HID0_SLEEP;
965 asm volatile("mtspr 1008,%0" : : "r" (hid0));
966 local_save_flags(msr);
967 msr |= MSR_POW | MSR_EE;
968 local_irq_restore(msr);
969 udelay(10);
970
971 /* OK, we're awake again, start restoring things */
972 out_be32(MEM_CTRL, 0x3f);
973 pbook_pci_restore();
974
975 /* wait for the PMU interrupt sequence to complete */
976 while (asleep)
977 mb();
978
979 /* reenable interrupts */
980 for (i = 0; i < 32; ++i)
981 if (i != vias->intrs[0].line && (save_irqen & (1 << i)))
982 enable_irq(i);
983
984 /* Notify drivers */
985 blocking_notifier_call_chain(&sleep_notifier_list, PBOOK_WAKE, NULL);
986
987 /* reenable ADB autopoll */
988 pmu_adb_autopoll(adb_dev_map);
989
990 /* Turn on the screen backlight, if it was on before */
991 if (save_backlight)
992 pmu_enable_backlight(1);
993
994 /* Wait for the hard disk to spin up */
995
996 return 0;
997}
998
999/*
1000 * Support for /dev/pmu device
1001 */
1002static int pmu_open(struct inode *inode, struct file *file)
1003{
1004 return 0;
1005}
1006
1007static ssize_t pmu_read(struct file *file, char *buf,
1008 size_t count, loff_t *ppos)
1009{
1010 return 0;
1011}
1012
1013static ssize_t pmu_write(struct file *file, const char *buf,
1014 size_t count, loff_t *ppos)
1015{
1016 return 0;
1017}
1018
1019static int pmu_ioctl(struct inode * inode, struct file *filp,
1020 u_int cmd, u_long arg)
1021{
1022 int error;
1023 __u32 value;
1024
1025 switch (cmd) {
1026 case PMU_IOC_SLEEP:
1027 return -ENOSYS;
1028 case PMU_IOC_GET_BACKLIGHT:
1029 return put_user(backlight_level, (__u32 *)arg);
1030 case PMU_IOC_SET_BACKLIGHT:
1031 error = get_user(value, (__u32 *)arg);
1032 if (!error)
1033 pmu_set_brightness(value);
1034 return error;
1035 case PMU_IOC_GET_MODEL:
1036 return put_user(pmu_kind, (__u32 *)arg);
1037 }
1038 return -EINVAL;
1039}
1040
1041static const struct file_operations pmu_device_fops = {
1042 .read = pmu_read,
1043 .write = pmu_write,
1044 .ioctl = pmu_ioctl,
1045 .open = pmu_open,
1046};
1047
1048static struct miscdevice pmu_device = {
1049 PMU_MINOR, "pmu", &pmu_device_fops
1050};
1051
1052void pmu_device_init(void)
1053{
1054 if (!via)
1055 return;
1056 if (misc_register(&pmu_device) < 0)
1057 printk(KERN_ERR "via-pmu68k: cannot register misc device.\n");
1058}
1059#endif /* CONFIG_PMAC_PBOOK */
1060
diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
index 531d4d17d011..34a8c60a254a 100644
--- a/drivers/md/Kconfig
+++ b/drivers/md/Kconfig
@@ -263,7 +263,7 @@ config DM_MULTIPATH_EMC
263 263
264config DM_MULTIPATH_RDAC 264config DM_MULTIPATH_RDAC
265 tristate "LSI/Engenio RDAC multipath support (EXPERIMENTAL)" 265 tristate "LSI/Engenio RDAC multipath support (EXPERIMENTAL)"
266 depends on DM_MULTIPATH && BLK_DEV_DM && EXPERIMENTAL 266 depends on DM_MULTIPATH && BLK_DEV_DM && SCSI && EXPERIMENTAL
267 ---help--- 267 ---help---
268 Multipath support for LSI/Engenio RDAC. 268 Multipath support for LSI/Engenio RDAC.
269 269
diff --git a/drivers/md/dm-mpath-rdac.c b/drivers/md/dm-mpath-rdac.c
index 8b776b8cb7f7..16b161345775 100644
--- a/drivers/md/dm-mpath-rdac.c
+++ b/drivers/md/dm-mpath-rdac.c
@@ -292,7 +292,7 @@ static struct request *get_rdac_req(struct rdac_handler *h,
292 rq->end_io_data = h; 292 rq->end_io_data = h;
293 rq->timeout = h->timeout; 293 rq->timeout = h->timeout;
294 rq->cmd_type = REQ_TYPE_BLOCK_PC; 294 rq->cmd_type = REQ_TYPE_BLOCK_PC;
295 rq->cmd_flags = REQ_FAILFAST | REQ_NOMERGE; 295 rq->cmd_flags |= REQ_FAILFAST | REQ_NOMERGE;
296 return rq; 296 return rq;
297} 297}
298 298
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 650991bddd8e..f33a729960ca 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1972,7 +1972,8 @@ static int run(mddev_t *mddev)
1972 !test_bit(In_sync, &disk->rdev->flags)) { 1972 !test_bit(In_sync, &disk->rdev->flags)) {
1973 disk->head_position = 0; 1973 disk->head_position = 0;
1974 mddev->degraded++; 1974 mddev->degraded++;
1975 conf->fullsync = 1; 1975 if (disk->rdev)
1976 conf->fullsync = 1;
1976 } 1977 }
1977 } 1978 }
1978 if (mddev->degraded == conf->raid_disks) { 1979 if (mddev->degraded == conf->raid_disks) {
@@ -2153,11 +2154,25 @@ static int raid1_reshape(mddev_t *mddev)
2153 oldpool = conf->r1bio_pool; 2154 oldpool = conf->r1bio_pool;
2154 conf->r1bio_pool = newpool; 2155 conf->r1bio_pool = newpool;
2155 2156
2156 for (d=d2=0; d < conf->raid_disks; d++) 2157 for (d = d2 = 0; d < conf->raid_disks; d++) {
2157 if (conf->mirrors[d].rdev) { 2158 mdk_rdev_t *rdev = conf->mirrors[d].rdev;
2158 conf->mirrors[d].rdev->raid_disk = d2; 2159 if (rdev && rdev->raid_disk != d2) {
2159 newmirrors[d2++].rdev = conf->mirrors[d].rdev; 2160 char nm[20];
2161 sprintf(nm, "rd%d", rdev->raid_disk);
2162 sysfs_remove_link(&mddev->kobj, nm);
2163 rdev->raid_disk = d2;
2164 sprintf(nm, "rd%d", rdev->raid_disk);
2165 sysfs_remove_link(&mddev->kobj, nm);
2166 if (sysfs_create_link(&mddev->kobj,
2167 &rdev->kobj, nm))
2168 printk(KERN_WARNING
2169 "md/raid1: cannot register "
2170 "%s for %s\n",
2171 nm, mdname(mddev));
2160 } 2172 }
2173 if (rdev)
2174 newmirrors[d2++].rdev = rdev;
2175 }
2161 kfree(conf->mirrors); 2176 kfree(conf->mirrors);
2162 conf->mirrors = newmirrors; 2177 conf->mirrors = newmirrors;
2163 kfree(conf->poolinfo); 2178 kfree(conf->poolinfo);
diff --git a/drivers/media/dvb/b2c2/flexcop-i2c.c b/drivers/media/dvb/b2c2/flexcop-i2c.c
index 02a0ea6e1c17..6bf858a436c9 100644
--- a/drivers/media/dvb/b2c2/flexcop-i2c.c
+++ b/drivers/media/dvb/b2c2/flexcop-i2c.c
@@ -135,6 +135,13 @@ static int flexcop_master_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs
135 struct flexcop_device *fc = i2c_get_adapdata(i2c_adap); 135 struct flexcop_device *fc = i2c_get_adapdata(i2c_adap);
136 int i, ret = 0; 136 int i, ret = 0;
137 137
138 /* Some drivers use 1 byte or 0 byte reads as probes, which this
139 * driver doesn't support. These probes will always fail, so this
140 * hack makes them always succeed. If one knew how, it would of
141 * course be better to actually do the read. */
142 if (num == 1 && msgs[0].flags == I2C_M_RD && msgs[0].len <= 1)
143 return 1;
144
138 if (mutex_lock_interruptible(&fc->i2c_mutex)) 145 if (mutex_lock_interruptible(&fc->i2c_mutex))
139 return -ERESTARTSYS; 146 return -ERESTARTSYS;
140 147
diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c
index acf026342ec5..bdd797071cb0 100644
--- a/drivers/media/dvb/dvb-core/dvb_net.c
+++ b/drivers/media/dvb/dvb-core/dvb_net.c
@@ -800,7 +800,8 @@ static int dvb_net_ts_callback(const u8 *buffer1, size_t buffer1_len,
800} 800}
801 801
802 802
803static void dvb_net_sec(struct net_device *dev, u8 *pkt, int pkt_len) 803static void dvb_net_sec(struct net_device *dev, const u8 *pkt, int
804pkt_len)
804{ 805{
805 u8 *eth; 806 u8 *eth;
806 struct sk_buff *skb; 807 struct sk_buff *skb;
@@ -902,7 +903,7 @@ static int dvb_net_sec_callback(const u8 *buffer1, size_t buffer1_len,
902 * we rely on the DVB API definition where exactly one complete 903 * we rely on the DVB API definition where exactly one complete
903 * section is delivered in buffer1 904 * section is delivered in buffer1
904 */ 905 */
905 dvb_net_sec (dev, (u8*) buffer1, buffer1_len); 906 dvb_net_sec (dev, buffer1, buffer1_len);
906 return 0; 907 return 0;
907} 908}
908 909
diff --git a/drivers/media/dvb/frontends/dvb-pll.c b/drivers/media/dvb/frontends/dvb-pll.c
index ca99e439c97c..11f7d5939bd9 100644
--- a/drivers/media/dvb/frontends/dvb-pll.c
+++ b/drivers/media/dvb/frontends/dvb-pll.c
@@ -784,7 +784,7 @@ struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe, int pll_addr,
784 strncpy(fe->ops.tuner_ops.info.name, desc->name, 784 strncpy(fe->ops.tuner_ops.info.name, desc->name,
785 sizeof(fe->ops.tuner_ops.info.name)); 785 sizeof(fe->ops.tuner_ops.info.name));
786 fe->ops.tuner_ops.info.frequency_min = desc->min; 786 fe->ops.tuner_ops.info.frequency_min = desc->min;
787 fe->ops.tuner_ops.info.frequency_min = desc->max; 787 fe->ops.tuner_ops.info.frequency_max = desc->max;
788 if (!desc->initdata) 788 if (!desc->initdata)
789 fe->ops.tuner_ops.init = NULL; 789 fe->ops.tuner_ops.init = NULL;
790 if (!desc->sleepdata) 790 if (!desc->sleepdata)
diff --git a/drivers/media/video/cafe_ccic.c b/drivers/media/video/cafe_ccic.c
index c08f650df423..ef5361824f87 100644
--- a/drivers/media/video/cafe_ccic.c
+++ b/drivers/media/video/cafe_ccic.c
@@ -356,6 +356,7 @@ static int cafe_smbus_write_data(struct cafe_camera *cam,
356{ 356{
357 unsigned int rval; 357 unsigned int rval;
358 unsigned long flags; 358 unsigned long flags;
359 DEFINE_WAIT(the_wait);
359 360
360 spin_lock_irqsave(&cam->dev_lock, flags); 361 spin_lock_irqsave(&cam->dev_lock, flags);
361 rval = TWSIC0_EN | ((addr << TWSIC0_SID_SHIFT) & TWSIC0_SID); 362 rval = TWSIC0_EN | ((addr << TWSIC0_SID_SHIFT) & TWSIC0_SID);
@@ -369,10 +370,29 @@ static int cafe_smbus_write_data(struct cafe_camera *cam,
369 rval = value | ((command << TWSIC1_ADDR_SHIFT) & TWSIC1_ADDR); 370 rval = value | ((command << TWSIC1_ADDR_SHIFT) & TWSIC1_ADDR);
370 cafe_reg_write(cam, REG_TWSIC1, rval); 371 cafe_reg_write(cam, REG_TWSIC1, rval);
371 spin_unlock_irqrestore(&cam->dev_lock, flags); 372 spin_unlock_irqrestore(&cam->dev_lock, flags);
372 msleep(2); /* Required or things flake */
373 373
374 /*
375 * Time to wait for the write to complete. THIS IS A RACY
376 * WAY TO DO IT, but the sad fact is that reading the TWSIC1
377 * register too quickly after starting the operation sends
378 * the device into a place that may be kinder and better, but
379 * which is absolutely useless for controlling the sensor. In
380 * practice we have plenty of time to get into our sleep state
381 * before the interrupt hits, and the worst case is that we
382 * time out and then see that things completed, so this seems
383 * the best way for now.
384 */
385 do {
386 prepare_to_wait(&cam->smbus_wait, &the_wait,
387 TASK_UNINTERRUPTIBLE);
388 schedule_timeout(1); /* even 1 jiffy is too long */
389 finish_wait(&cam->smbus_wait, &the_wait);
390 } while (!cafe_smbus_write_done(cam));
391
392#ifdef IF_THE_CAFE_HARDWARE_WORKED_RIGHT
374 wait_event_timeout(cam->smbus_wait, cafe_smbus_write_done(cam), 393 wait_event_timeout(cam->smbus_wait, cafe_smbus_write_done(cam),
375 CAFE_SMBUS_TIMEOUT); 394 CAFE_SMBUS_TIMEOUT);
395#endif
376 spin_lock_irqsave(&cam->dev_lock, flags); 396 spin_lock_irqsave(&cam->dev_lock, flags);
377 rval = cafe_reg_read(cam, REG_TWSIC1); 397 rval = cafe_reg_read(cam, REG_TWSIC1);
378 spin_unlock_irqrestore(&cam->dev_lock, flags); 398 spin_unlock_irqrestore(&cam->dev_lock, flags);
@@ -710,7 +730,7 @@ static void cafe_ctlr_init(struct cafe_camera *cam)
710 * Here we must wait a bit for the controller to come around. 730 * Here we must wait a bit for the controller to come around.
711 */ 731 */
712 spin_unlock_irqrestore(&cam->dev_lock, flags); 732 spin_unlock_irqrestore(&cam->dev_lock, flags);
713 mdelay(5); /* FIXME revisit this */ 733 msleep(5);
714 spin_lock_irqsave(&cam->dev_lock, flags); 734 spin_lock_irqsave(&cam->dev_lock, flags);
715 735
716 cafe_reg_write(cam, REG_GL_CSR, GCSR_CCIC_EN|GCSR_SRC|GCSR_MRC); 736 cafe_reg_write(cam, REG_GL_CSR, GCSR_CCIC_EN|GCSR_SRC|GCSR_MRC);
@@ -2233,12 +2253,21 @@ static int cafe_pci_resume(struct pci_dev *pdev)
2233 if (ret) 2253 if (ret)
2234 return ret; 2254 return ret;
2235 ret = pci_enable_device(pdev); 2255 ret = pci_enable_device(pdev);
2256
2236 if (ret) { 2257 if (ret) {
2237 cam_warn(cam, "Unable to re-enable device on resume!\n"); 2258 cam_warn(cam, "Unable to re-enable device on resume!\n");
2238 return ret; 2259 return ret;
2239 } 2260 }
2240 cafe_ctlr_init(cam); 2261 cafe_ctlr_init(cam);
2241 cafe_ctlr_power_up(cam); 2262 cafe_ctlr_power_down(cam);
2263
2264 mutex_lock(&cam->s_mutex);
2265 if (cam->users > 0) {
2266 cafe_ctlr_power_up(cam);
2267 __cafe_cam_reset(cam);
2268 }
2269 mutex_unlock(&cam->s_mutex);
2270
2242 set_bit(CF_CONFIG_NEEDED, &cam->flags); 2271 set_bit(CF_CONFIG_NEEDED, &cam->flags);
2243 if (cam->state == S_SPECREAD) 2272 if (cam->state == S_SPECREAD)
2244 cam->state = S_IDLE; /* Don't bother restarting */ 2273 cam->state = S_IDLE; /* Don't bother restarting */
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
index 2c7b158ce7e1..40307f3f6fe3 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/drivers/media/video/em28xx/em28xx-video.c
@@ -1772,6 +1772,7 @@ static int em28xx_usb_probe(struct usb_interface *interface,
1772 if (dev->alt_max_pkt_size == NULL) { 1772 if (dev->alt_max_pkt_size == NULL) {
1773 em28xx_errdev("out of memory!\n"); 1773 em28xx_errdev("out of memory!\n");
1774 em28xx_devused&=~(1<<nr); 1774 em28xx_devused&=~(1<<nr);
1775 kfree(dev);
1775 return -ENOMEM; 1776 return -ENOMEM;
1776 } 1777 }
1777 1778
diff --git a/drivers/media/video/ivtv/ivtv-ioctl.c b/drivers/media/video/ivtv/ivtv-ioctl.c
index 047624b9e271..5977a79619c2 100644
--- a/drivers/media/video/ivtv/ivtv-ioctl.c
+++ b/drivers/media/video/ivtv/ivtv-ioctl.c
@@ -1190,6 +1190,7 @@ int ivtv_v4l2_ioctls(struct ivtv *itv, struct file *filp, unsigned int cmd, void
1190 itv->osd_global_alpha_state = (fb->flags & V4L2_FBUF_FLAG_GLOBAL_ALPHA) != 0; 1190 itv->osd_global_alpha_state = (fb->flags & V4L2_FBUF_FLAG_GLOBAL_ALPHA) != 0;
1191 itv->osd_local_alpha_state = (fb->flags & V4L2_FBUF_FLAG_LOCAL_ALPHA) != 0; 1191 itv->osd_local_alpha_state = (fb->flags & V4L2_FBUF_FLAG_LOCAL_ALPHA) != 0;
1192 itv->osd_color_key_state = (fb->flags & V4L2_FBUF_FLAG_CHROMAKEY) != 0; 1192 itv->osd_color_key_state = (fb->flags & V4L2_FBUF_FLAG_CHROMAKEY) != 0;
1193 ivtv_set_osd_alpha(itv);
1193 break; 1194 break;
1194 } 1195 }
1195 1196
@@ -1234,7 +1235,7 @@ int ivtv_v4l2_ioctls(struct ivtv *itv, struct file *filp, unsigned int cmd, void
1234 IVTV_INFO("Tuner: %s\n", 1235 IVTV_INFO("Tuner: %s\n",
1235 test_bit(IVTV_F_I_RADIO_USER, &itv->i_flags) ? "Radio" : "TV"); 1236 test_bit(IVTV_F_I_RADIO_USER, &itv->i_flags) ? "Radio" : "TV");
1236 cx2341x_log_status(&itv->params, itv->name); 1237 cx2341x_log_status(&itv->params, itv->name);
1237 IVTV_INFO("Status flags: 0x%08lx\n", itv->i_flags); 1238 IVTV_INFO("Version: %s Status flags: 0x%08lx\n", IVTV_VERSION, itv->i_flags);
1238 for (i = 0; i < IVTV_MAX_STREAMS; i++) { 1239 for (i = 0; i < IVTV_MAX_STREAMS; i++) {
1239 struct ivtv_stream *s = &itv->streams[i]; 1240 struct ivtv_stream *s = &itv->streams[i];
1240 1241
diff --git a/drivers/media/video/ov7670.c b/drivers/media/video/ov7670.c
index f8f21ddd9843..c4c5bd67f795 100644
--- a/drivers/media/video/ov7670.c
+++ b/drivers/media/video/ov7670.c
@@ -416,7 +416,10 @@ static int ov7670_read(struct i2c_client *c, unsigned char reg,
416static int ov7670_write(struct i2c_client *c, unsigned char reg, 416static int ov7670_write(struct i2c_client *c, unsigned char reg,
417 unsigned char value) 417 unsigned char value)
418{ 418{
419 return i2c_smbus_write_byte_data(c, reg, value); 419 int ret = i2c_smbus_write_byte_data(c, reg, value);
420 if (reg == REG_COM7 && (value & COM7_RESET))
421 msleep(2); /* Wait for reset to run */
422 return ret;
420} 423}
421 424
422 425
diff --git a/drivers/media/video/pwc/pwc-if.c b/drivers/media/video/pwc/pwc-if.c
index 9c0e8d18c2f6..3d81966d8c42 100644
--- a/drivers/media/video/pwc/pwc-if.c
+++ b/drivers/media/video/pwc/pwc-if.c
@@ -1196,12 +1196,19 @@ static int pwc_video_open(struct inode *inode, struct file *file)
1196 return 0; 1196 return 0;
1197} 1197}
1198 1198
1199
1200static void pwc_cleanup(struct pwc_device *pdev)
1201{
1202 pwc_remove_sysfs_files(pdev->vdev);
1203 video_unregister_device(pdev->vdev);
1204}
1205
1199/* Note that all cleanup is done in the reverse order as in _open */ 1206/* Note that all cleanup is done in the reverse order as in _open */
1200static int pwc_video_close(struct inode *inode, struct file *file) 1207static int pwc_video_close(struct inode *inode, struct file *file)
1201{ 1208{
1202 struct video_device *vdev = file->private_data; 1209 struct video_device *vdev = file->private_data;
1203 struct pwc_device *pdev; 1210 struct pwc_device *pdev;
1204 int i; 1211 int i, hint;
1205 1212
1206 PWC_DEBUG_OPEN(">> video_close called(vdev = 0x%p).\n", vdev); 1213 PWC_DEBUG_OPEN(">> video_close called(vdev = 0x%p).\n", vdev);
1207 1214
@@ -1224,8 +1231,9 @@ static int pwc_video_close(struct inode *inode, struct file *file)
1224 pwc_isoc_cleanup(pdev); 1231 pwc_isoc_cleanup(pdev);
1225 pwc_free_buffers(pdev); 1232 pwc_free_buffers(pdev);
1226 1233
1234 lock_kernel();
1227 /* Turn off LEDS and power down camera, but only when not unplugged */ 1235 /* Turn off LEDS and power down camera, but only when not unplugged */
1228 if (pdev->error_status != EPIPE) { 1236 if (!pdev->unplugged) {
1229 /* Turn LEDs off */ 1237 /* Turn LEDs off */
1230 if (pwc_set_leds(pdev, 0, 0) < 0) 1238 if (pwc_set_leds(pdev, 0, 0) < 0)
1231 PWC_DEBUG_MODULE("Failed to set LED on/off time.\n"); 1239 PWC_DEBUG_MODULE("Failed to set LED on/off time.\n");
@@ -1234,9 +1242,19 @@ static int pwc_video_close(struct inode *inode, struct file *file)
1234 if (i < 0) 1242 if (i < 0)
1235 PWC_ERROR("Failed to power down camera (%d)\n", i); 1243 PWC_ERROR("Failed to power down camera (%d)\n", i);
1236 } 1244 }
1245 pdev->vopen--;
1246 PWC_DEBUG_OPEN("<< video_close() vopen=%d\n", i);
1247 } else {
1248 pwc_cleanup(pdev);
1249 /* Free memory (don't set pdev to 0 just yet) */
1250 kfree(pdev);
1251 /* search device_hint[] table if we occupy a slot, by any chance */
1252 for (hint = 0; hint < MAX_DEV_HINTS; hint++)
1253 if (device_hint[hint].pdev == pdev)
1254 device_hint[hint].pdev = NULL;
1237 } 1255 }
1238 pdev->vopen--; 1256 unlock_kernel();
1239 PWC_DEBUG_OPEN("<< video_close() vopen=%d\n", pdev->vopen); 1257
1240 return 0; 1258 return 0;
1241} 1259}
1242 1260
@@ -1791,21 +1809,21 @@ static void usb_pwc_disconnect(struct usb_interface *intf)
1791 /* Alert waiting processes */ 1809 /* Alert waiting processes */
1792 wake_up_interruptible(&pdev->frameq); 1810 wake_up_interruptible(&pdev->frameq);
1793 /* Wait until device is closed */ 1811 /* Wait until device is closed */
1794 while (pdev->vopen) 1812 if(pdev->vopen) {
1795 schedule(); 1813 pdev->unplugged = 1;
1796 /* Device is now closed, so we can safely unregister it */ 1814 } else {
1797 PWC_DEBUG_PROBE("Unregistering video device in disconnect().\n"); 1815 /* Device is closed, so we can safely unregister it */
1798 pwc_remove_sysfs_files(pdev->vdev); 1816 PWC_DEBUG_PROBE("Unregistering video device in disconnect().\n");
1799 video_unregister_device(pdev->vdev); 1817 pwc_cleanup(pdev);
1800 1818 /* Free memory (don't set pdev to 0 just yet) */
1801 /* Free memory (don't set pdev to 0 just yet) */ 1819 kfree(pdev);
1802 kfree(pdev);
1803 1820
1804disconnect_out: 1821disconnect_out:
1805 /* search device_hint[] table if we occupy a slot, by any chance */ 1822 /* search device_hint[] table if we occupy a slot, by any chance */
1806 for (hint = 0; hint < MAX_DEV_HINTS; hint++) 1823 for (hint = 0; hint < MAX_DEV_HINTS; hint++)
1807 if (device_hint[hint].pdev == pdev) 1824 if (device_hint[hint].pdev == pdev)
1808 device_hint[hint].pdev = NULL; 1825 device_hint[hint].pdev = NULL;
1826 }
1809 1827
1810 unlock_kernel(); 1828 unlock_kernel();
1811} 1829}
diff --git a/drivers/media/video/pwc/pwc.h b/drivers/media/video/pwc/pwc.h
index 910a04f53920..8e8e5b27e77e 100644
--- a/drivers/media/video/pwc/pwc.h
+++ b/drivers/media/video/pwc/pwc.h
@@ -193,6 +193,7 @@ struct pwc_device
193 char vsnapshot; /* snapshot mode */ 193 char vsnapshot; /* snapshot mode */
194 char vsync; /* used by isoc handler */ 194 char vsync; /* used by isoc handler */
195 char vmirror; /* for ToUCaM series */ 195 char vmirror; /* for ToUCaM series */
196 char unplugged;
196 197
197 int cmd_len; 198 int cmd_len;
198 unsigned char cmd_buf[13]; 199 unsigned char cmd_buf[13];
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 518d5d335464..a26655881e6a 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -5,6 +5,11 @@
5menuconfig MISC_DEVICES 5menuconfig MISC_DEVICES
6 bool "Misc devices" 6 bool "Misc devices"
7 default y 7 default y
8 ---help---
9 Say Y here to get to see options for device drivers from various
10 different categories. This option alone does not add any kernel code.
11
12 If you say N, all options in this submenu will be skipped and disabled.
8 13
9if MISC_DEVICES 14if MISC_DEVICES
10 15
diff --git a/drivers/misc/asus-laptop.c b/drivers/misc/asus-laptop.c
index d0fc4fd212e6..7dce318df1bd 100644
--- a/drivers/misc/asus-laptop.c
+++ b/drivers/misc/asus-laptop.c
@@ -732,7 +732,7 @@ static void asus_hotk_notify(acpi_handle handle, u32 event, void *data)
732 lcd_blank(FB_BLANK_POWERDOWN); 732 lcd_blank(FB_BLANK_POWERDOWN);
733 } 733 }
734 734
735 acpi_bus_generate_event(hotk->device, event, 735 acpi_bus_generate_proc_event(hotk->device, event,
736 hotk->event_count[event % 128]++); 736 hotk->event_count[event % 128]++);
737 737
738 return; 738 return;
@@ -1072,7 +1072,8 @@ static void asus_backlight_exit(void)
1072} 1072}
1073 1073
1074#define ASUS_LED_UNREGISTER(object) \ 1074#define ASUS_LED_UNREGISTER(object) \
1075 led_classdev_unregister(&object##_led) 1075 if (object##_led.dev) \
1076 led_classdev_unregister(&object##_led)
1076 1077
1077static void asus_led_exit(void) 1078static void asus_led_exit(void)
1078{ 1079{
diff --git a/drivers/misc/sony-laptop.c b/drivers/misc/sony-laptop.c
index 91da6880ae93..d38ddce592c0 100644
--- a/drivers/misc/sony-laptop.c
+++ b/drivers/misc/sony-laptop.c
@@ -856,6 +856,15 @@ static struct dmi_system_id sony_nc_ids[] = {
856 }, 856 },
857 }, 857 },
858 { 858 {
859 .ident = "Sony Vaio FZ Series",
860 .callback = sony_nc_C_enable,
861 .driver_data = sony_C_events,
862 .matches = {
863 DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
864 DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FZ"),
865 },
866 },
867 {
859 .ident = "Sony Vaio C Series", 868 .ident = "Sony Vaio C Series",
860 .callback = sony_nc_C_enable, 869 .callback = sony_nc_C_enable,
861 .driver_data = sony_C_events, 870 .driver_data = sony_C_events,
@@ -904,7 +913,7 @@ static void sony_acpi_notify(acpi_handle handle, u32 event, void *data)
904 913
905 dprintk("sony_acpi_notify, event: 0x%.2x\n", ev); 914 dprintk("sony_acpi_notify, event: 0x%.2x\n", ev);
906 sony_laptop_report_input_event(ev); 915 sony_laptop_report_input_event(ev);
907 acpi_bus_generate_event(sony_nc_acpi_device, 1, ev); 916 acpi_bus_generate_proc_event(sony_nc_acpi_device, 1, ev);
908} 917}
909 918
910static acpi_status sony_walk_callback(acpi_handle handle, u32 level, 919static acpi_status sony_walk_callback(acpi_handle handle, u32 level,
@@ -2292,7 +2301,7 @@ static irqreturn_t sony_pic_irq(int irq, void *dev_id)
2292 2301
2293found: 2302found:
2294 sony_laptop_report_input_event(device_event); 2303 sony_laptop_report_input_event(device_event);
2295 acpi_bus_generate_event(spic_dev.acpi_dev, 1, device_event); 2304 acpi_bus_generate_proc_event(spic_dev.acpi_dev, 1, device_event);
2296 sonypi_compat_report_event(device_event); 2305 sonypi_compat_report_event(device_event);
2297 2306
2298 return IRQ_HANDLED; 2307 return IRQ_HANDLED;
@@ -2308,8 +2317,6 @@ static int sony_pic_remove(struct acpi_device *device, int type)
2308 struct sony_pic_ioport *io, *tmp_io; 2317 struct sony_pic_ioport *io, *tmp_io;
2309 struct sony_pic_irq *irq, *tmp_irq; 2318 struct sony_pic_irq *irq, *tmp_irq;
2310 2319
2311 sonypi_compat_exit();
2312
2313 if (sony_pic_disable(device)) { 2320 if (sony_pic_disable(device)) {
2314 printk(KERN_ERR DRV_PFX "Couldn't disable device.\n"); 2321 printk(KERN_ERR DRV_PFX "Couldn't disable device.\n");
2315 return -ENXIO; 2322 return -ENXIO;
@@ -2319,6 +2326,8 @@ static int sony_pic_remove(struct acpi_device *device, int type)
2319 release_region(spic_dev.cur_ioport->io.minimum, 2326 release_region(spic_dev.cur_ioport->io.minimum,
2320 spic_dev.cur_ioport->io.address_length); 2327 spic_dev.cur_ioport->io.address_length);
2321 2328
2329 sonypi_compat_exit();
2330
2322 sony_laptop_remove_input(); 2331 sony_laptop_remove_input();
2323 2332
2324 /* pf attrs */ 2333 /* pf attrs */
@@ -2384,6 +2393,9 @@ static int sony_pic_add(struct acpi_device *device)
2384 goto err_free_resources; 2393 goto err_free_resources;
2385 } 2394 }
2386 2395
2396 if (sonypi_compat_init())
2397 goto err_remove_input;
2398
2387 /* request io port */ 2399 /* request io port */
2388 list_for_each_entry(io, &spic_dev.ioports, list) { 2400 list_for_each_entry(io, &spic_dev.ioports, list) {
2389 if (request_region(io->io.minimum, io->io.address_length, 2401 if (request_region(io->io.minimum, io->io.address_length,
@@ -2398,7 +2410,7 @@ static int sony_pic_add(struct acpi_device *device)
2398 if (!spic_dev.cur_ioport) { 2410 if (!spic_dev.cur_ioport) {
2399 printk(KERN_ERR DRV_PFX "Failed to request_region.\n"); 2411 printk(KERN_ERR DRV_PFX "Failed to request_region.\n");
2400 result = -ENODEV; 2412 result = -ENODEV;
2401 goto err_remove_input; 2413 goto err_remove_compat;
2402 } 2414 }
2403 2415
2404 /* request IRQ */ 2416 /* request IRQ */
@@ -2438,9 +2450,6 @@ static int sony_pic_add(struct acpi_device *device)
2438 if (result) 2450 if (result)
2439 goto err_remove_pf; 2451 goto err_remove_pf;
2440 2452
2441 if (sonypi_compat_init())
2442 goto err_remove_pf;
2443
2444 return 0; 2453 return 0;
2445 2454
2446err_remove_pf: 2455err_remove_pf:
@@ -2456,6 +2465,9 @@ err_release_region:
2456 release_region(spic_dev.cur_ioport->io.minimum, 2465 release_region(spic_dev.cur_ioport->io.minimum,
2457 spic_dev.cur_ioport->io.address_length); 2466 spic_dev.cur_ioport->io.address_length);
2458 2467
2468err_remove_compat:
2469 sonypi_compat_exit();
2470
2459err_remove_input: 2471err_remove_input:
2460 sony_laptop_remove_input(); 2472 sony_laptop_remove_input();
2461 2473
diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
index f6cd34a3dbac..bb8956d0c104 100644
--- a/drivers/misc/thinkpad_acpi.c
+++ b/drivers/misc/thinkpad_acpi.c
@@ -1190,10 +1190,10 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
1190 } 1190 }
1191 1191
1192 if (sendacpi) 1192 if (sendacpi)
1193 acpi_bus_generate_event(ibm->acpi->device, event, hkey); 1193 acpi_bus_generate_proc_event(ibm->acpi->device, event, hkey);
1194 } else { 1194 } else {
1195 printk(IBM_ERR "unknown hotkey notification event %d\n", event); 1195 printk(IBM_ERR "unknown hotkey notification event %d\n", event);
1196 acpi_bus_generate_event(ibm->acpi->device, event, 0); 1196 acpi_bus_generate_proc_event(ibm->acpi->device, event, 0);
1197 } 1197 }
1198} 1198}
1199 1199
@@ -2162,22 +2162,27 @@ static void dock_notify(struct ibm_struct *ibm, u32 event)
2162 int docked = dock_docked(); 2162 int docked = dock_docked();
2163 int pci = ibm->acpi->hid && ibm->acpi->device && 2163 int pci = ibm->acpi->hid && ibm->acpi->device &&
2164 acpi_match_device_ids(ibm->acpi->device, ibm_pci_device_ids); 2164 acpi_match_device_ids(ibm->acpi->device, ibm_pci_device_ids);
2165 int data;
2165 2166
2166 if (event == 1 && !pci) /* 570 */ 2167 if (event == 1 && !pci) /* 570 */
2167 acpi_bus_generate_event(ibm->acpi->device, event, 1); /* button */ 2168 data = 1; /* button */
2168 else if (event == 1 && pci) /* 570 */ 2169 else if (event == 1 && pci) /* 570 */
2169 acpi_bus_generate_event(ibm->acpi->device, event, 3); /* dock */ 2170 data = 3; /* dock */
2170 else if (event == 3 && docked) 2171 else if (event == 3 && docked)
2171 acpi_bus_generate_event(ibm->acpi->device, event, 1); /* button */ 2172 data = 1; /* button */
2172 else if (event == 3 && !docked) 2173 else if (event == 3 && !docked)
2173 acpi_bus_generate_event(ibm->acpi->device, event, 2); /* undock */ 2174 data = 2; /* undock */
2174 else if (event == 0 && docked) 2175 else if (event == 0 && docked)
2175 acpi_bus_generate_event(ibm->acpi->device, event, 3); /* dock */ 2176 data = 3; /* dock */
2176 else { 2177 else {
2177 printk(IBM_ERR "unknown dock event %d, status %d\n", 2178 printk(IBM_ERR "unknown dock event %d, status %d\n",
2178 event, _sta(dock_handle)); 2179 event, _sta(dock_handle));
2179 acpi_bus_generate_event(ibm->acpi->device, event, 0); /* unknown */ 2180 data = 0; /* unknown */
2180 } 2181 }
2182 acpi_bus_generate_proc_event(ibm->acpi->device, event, data);
2183 acpi_bus_generate_netlink_event(ibm->acpi->device->pnp.device_class,
2184 ibm->acpi->device->dev.bus_id,
2185 event, data);
2181} 2186}
2182 2187
2183static int dock_read(char *p) 2188static int dock_read(char *p)
@@ -2275,7 +2280,10 @@ static int __init bay_init(struct ibm_init_struct *iibm)
2275 2280
2276static void bay_notify(struct ibm_struct *ibm, u32 event) 2281static void bay_notify(struct ibm_struct *ibm, u32 event)
2277{ 2282{
2278 acpi_bus_generate_event(ibm->acpi->device, event, 0); 2283 acpi_bus_generate_proc_event(ibm->acpi->device, event, 0);
2284 acpi_bus_generate_netlink_event(ibm->acpi->device->pnp.device_class,
2285 ibm->acpi->device->dev.bus_id,
2286 event, 0);
2279} 2287}
2280 2288
2281#define bay_occupied(b) (_sta(b##_handle) & 1) 2289#define bay_occupied(b) (_sta(b##_handle) & 1)
diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c
index fe0e785ed7d2..817a79462b3d 100644
--- a/drivers/mmc/core/bus.c
+++ b/drivers/mmc/core/bus.c
@@ -186,12 +186,10 @@ struct mmc_card *mmc_alloc_card(struct mmc_host *host)
186{ 186{
187 struct mmc_card *card; 187 struct mmc_card *card;
188 188
189 card = kmalloc(sizeof(struct mmc_card), GFP_KERNEL); 189 card = kzalloc(sizeof(struct mmc_card), GFP_KERNEL);
190 if (!card) 190 if (!card)
191 return ERR_PTR(-ENOMEM); 191 return ERR_PTR(-ENOMEM);
192 192
193 memset(card, 0, sizeof(struct mmc_card));
194
195 card->host = host; 193 card->host = host;
196 194
197 device_initialize(&card->dev); 195 device_initialize(&card->dev);
diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
index 6a7e29849603..2c7ce8f43a9a 100644
--- a/drivers/mmc/core/host.c
+++ b/drivers/mmc/core/host.c
@@ -58,12 +58,10 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev)
58{ 58{
59 struct mmc_host *host; 59 struct mmc_host *host;
60 60
61 host = kmalloc(sizeof(struct mmc_host) + extra, GFP_KERNEL); 61 host = kzalloc(sizeof(struct mmc_host) + extra, GFP_KERNEL);
62 if (!host) 62 if (!host)
63 return NULL; 63 return NULL;
64 64
65 memset(host, 0, sizeof(struct mmc_host) + extra);
66
67 host->parent = dev; 65 host->parent = dev;
68 host->class_dev.parent = dev; 66 host->class_dev.parent = dev;
69 host->class_dev.class = &mmc_host_class; 67 host->class_dev.class = &mmc_host_class;
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index f2bc87ac24f7..20a7d89e01ba 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -385,6 +385,9 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_data *data)
385 BUG_ON(data->blksz > host->mmc->max_blk_size); 385 BUG_ON(data->blksz > host->mmc->max_blk_size);
386 BUG_ON(data->blocks > 65535); 386 BUG_ON(data->blocks > 65535);
387 387
388 host->data = data;
389 host->data_early = 0;
390
388 /* timeout in us */ 391 /* timeout in us */
389 target_timeout = data->timeout_ns / 1000 + 392 target_timeout = data->timeout_ns / 1000 +
390 data->timeout_clks / host->clock; 393 data->timeout_clks / host->clock;
@@ -443,11 +446,11 @@ static void sdhci_set_transfer_mode(struct sdhci_host *host,
443{ 446{
444 u16 mode; 447 u16 mode;
445 448
446 WARN_ON(host->data);
447
448 if (data == NULL) 449 if (data == NULL)
449 return; 450 return;
450 451
452 WARN_ON(!host->data);
453
451 mode = SDHCI_TRNS_BLK_CNT_EN; 454 mode = SDHCI_TRNS_BLK_CNT_EN;
452 if (data->blocks > 1) 455 if (data->blocks > 1)
453 mode |= SDHCI_TRNS_MULTI; 456 mode |= SDHCI_TRNS_MULTI;
@@ -477,8 +480,8 @@ static void sdhci_finish_data(struct sdhci_host *host)
477 /* 480 /*
478 * Controller doesn't count down when in single block mode. 481 * Controller doesn't count down when in single block mode.
479 */ 482 */
480 if ((data->blocks == 1) && (data->error == MMC_ERR_NONE)) 483 if (data->blocks == 1)
481 blocks = 0; 484 blocks = (data->error == MMC_ERR_NONE) ? 0 : 1;
482 else 485 else
483 blocks = readw(host->ioaddr + SDHCI_BLOCK_COUNT); 486 blocks = readw(host->ioaddr + SDHCI_BLOCK_COUNT);
484 data->bytes_xfered = data->blksz * (data->blocks - blocks); 487 data->bytes_xfered = data->blksz * (data->blocks - blocks);
@@ -600,9 +603,10 @@ static void sdhci_finish_command(struct sdhci_host *host)
600 603
601 host->cmd->error = MMC_ERR_NONE; 604 host->cmd->error = MMC_ERR_NONE;
602 605
603 if (host->cmd->data) 606 if (host->data && host->data_early)
604 host->data = host->cmd->data; 607 sdhci_finish_data(host);
605 else 608
609 if (!host->cmd->data)
606 tasklet_schedule(&host->finish_tasklet); 610 tasklet_schedule(&host->finish_tasklet);
607 611
608 host->cmd = NULL; 612 host->cmd = NULL;
@@ -929,9 +933,9 @@ static void sdhci_cmd_irq(struct sdhci_host *host, u32 intmask)
929 BUG_ON(intmask == 0); 933 BUG_ON(intmask == 0);
930 934
931 if (!host->cmd) { 935 if (!host->cmd) {
932 printk(KERN_ERR "%s: Got command interrupt even though no " 936 printk(KERN_ERR "%s: Got command interrupt 0x%08x even "
933 "command operation was in progress.\n", 937 "though no command operation was in progress.\n",
934 mmc_hostname(host->mmc)); 938 mmc_hostname(host->mmc), (unsigned)intmask);
935 sdhci_dumpregs(host); 939 sdhci_dumpregs(host);
936 return; 940 return;
937 } 941 }
@@ -961,9 +965,9 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
961 if (intmask & SDHCI_INT_DATA_END) 965 if (intmask & SDHCI_INT_DATA_END)
962 return; 966 return;
963 967
964 printk(KERN_ERR "%s: Got data interrupt even though no " 968 printk(KERN_ERR "%s: Got data interrupt 0x%08x even "
965 "data operation was in progress.\n", 969 "though no data operation was in progress.\n",
966 mmc_hostname(host->mmc)); 970 mmc_hostname(host->mmc), (unsigned)intmask);
967 sdhci_dumpregs(host); 971 sdhci_dumpregs(host);
968 972
969 return; 973 return;
@@ -991,8 +995,18 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
991 writel(readl(host->ioaddr + SDHCI_DMA_ADDRESS), 995 writel(readl(host->ioaddr + SDHCI_DMA_ADDRESS),
992 host->ioaddr + SDHCI_DMA_ADDRESS); 996 host->ioaddr + SDHCI_DMA_ADDRESS);
993 997
994 if (intmask & SDHCI_INT_DATA_END) 998 if (intmask & SDHCI_INT_DATA_END) {
995 sdhci_finish_data(host); 999 if (host->cmd) {
1000 /*
1001 * Data managed to finish before the
1002 * command completed. Make sure we do
1003 * things in the proper order.
1004 */
1005 host->data_early = 1;
1006 } else {
1007 sdhci_finish_data(host);
1008 }
1009 }
996 } 1010 }
997} 1011}
998 1012
@@ -1347,12 +1361,11 @@ static int __devinit sdhci_probe_slot(struct pci_dev *pdev, int slot)
1347 */ 1361 */
1348 mmc->max_blk_size = (caps & SDHCI_MAX_BLOCK_MASK) >> SDHCI_MAX_BLOCK_SHIFT; 1362 mmc->max_blk_size = (caps & SDHCI_MAX_BLOCK_MASK) >> SDHCI_MAX_BLOCK_SHIFT;
1349 if (mmc->max_blk_size >= 3) { 1363 if (mmc->max_blk_size >= 3) {
1350 printk(KERN_ERR "%s: Invalid maximum block size.\n", 1364 printk(KERN_WARNING "%s: Invalid maximum block size, assuming 512\n",
1351 host->slot_descr); 1365 host->slot_descr);
1352 ret = -ENODEV; 1366 mmc->max_blk_size = 512;
1353 goto unmap; 1367 } else
1354 } 1368 mmc->max_blk_size = 512 << mmc->max_blk_size;
1355 mmc->max_blk_size = 512 << mmc->max_blk_size;
1356 1369
1357 /* 1370 /*
1358 * Maximum block count. 1371 * Maximum block count.
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index d157776c1149..e28987d6d2eb 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -182,6 +182,7 @@ struct sdhci_host {
182 struct mmc_request *mrq; /* Current request */ 182 struct mmc_request *mrq; /* Current request */
183 struct mmc_command *cmd; /* Current command */ 183 struct mmc_command *cmd; /* Current command */
184 struct mmc_data *data; /* Current data request */ 184 struct mmc_data *data; /* Current data request */
185 int data_early:1; /* Data finished before cmd */
185 186
186 struct scatterlist *cur_sg; /* We're working on this */ 187 struct scatterlist *cur_sg; /* We're working on this */
187 int num_sg; /* Entries left */ 188 int num_sg; /* Entries left */
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 81ef81c9a584..5b9e17bf1749 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -1968,6 +1968,16 @@ menuconfig NETDEV_1000
1968 bool "Ethernet (1000 Mbit)" 1968 bool "Ethernet (1000 Mbit)"
1969 depends on !UML 1969 depends on !UML
1970 default y 1970 default y
1971 ---help---
1972 Ethernet (also called IEEE 802.3 or ISO 8802-2) is the most common
1973 type of Local Area Network (LAN) in universities and companies.
1974
1975 Say Y here to get to see options for Gigabit Ethernet drivers.
1976 This option alone does not add any kernel code.
1977 Note that drivers supporting both 100 and 1000 MBit may be listed
1978 under "Ethernet (10 or 100MBit)" instead.
1979
1980 If you say N, all options in this submenu will be skipped and disabled.
1971 1981
1972if NETDEV_1000 1982if NETDEV_1000
1973 1983
@@ -2339,6 +2349,11 @@ menuconfig NETDEV_10000
2339 bool "Ethernet (10000 Mbit)" 2349 bool "Ethernet (10000 Mbit)"
2340 depends on !UML 2350 depends on !UML
2341 default y 2351 default y
2352 ---help---
2353 Say Y here to get to see options for 10 Gigabit Ethernet drivers.
2354 This option alone does not add any kernel code.
2355
2356 If you say N, all options in this submenu will be skipped and disabled.
2342 2357
2343if NETDEV_10000 2358if NETDEV_10000
2344 2359
diff --git a/drivers/net/bsd_comp.c b/drivers/net/bsd_comp.c
index 202d4a4ef751..88edb986691a 100644
--- a/drivers/net/bsd_comp.c
+++ b/drivers/net/bsd_comp.c
@@ -406,8 +406,7 @@ static void *bsd_alloc (unsigned char *options, int opt_len, int decomp)
406 * Allocate space for the dictionary. This may be more than one page in 406 * Allocate space for the dictionary. This may be more than one page in
407 * length. 407 * length.
408 */ 408 */
409 db->dict = (struct bsd_dict *) vmalloc (hsize * 409 db->dict = vmalloc(hsize * sizeof(struct bsd_dict));
410 sizeof (struct bsd_dict));
411 if (!db->dict) 410 if (!db->dict)
412 { 411 {
413 bsd_free (db); 412 bsd_free (db);
@@ -426,8 +425,7 @@ static void *bsd_alloc (unsigned char *options, int opt_len, int decomp)
426 */ 425 */
427 else 426 else
428 { 427 {
429 db->lens = (unsigned short *) vmalloc ((maxmaxcode + 1) * 428 db->lens = vmalloc((maxmaxcode + 1) * sizeof(db->lens[0]));
430 sizeof (db->lens[0]));
431 if (!db->lens) 429 if (!db->lens)
432 { 430 {
433 bsd_free (db); 431 bsd_free (db);
diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
index c3de81bf090a..738aa5906514 100644
--- a/drivers/net/dm9000.c
+++ b/drivers/net/dm9000.c
@@ -700,6 +700,7 @@ dm9000_init_dm9000(struct net_device *dev)
700static int 700static int
701dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev) 701dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev)
702{ 702{
703 unsigned long flags;
703 board_info_t *db = (board_info_t *) dev->priv; 704 board_info_t *db = (board_info_t *) dev->priv;
704 705
705 PRINTK3("dm9000_start_xmit\n"); 706 PRINTK3("dm9000_start_xmit\n");
@@ -707,10 +708,7 @@ dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev)
707 if (db->tx_pkt_cnt > 1) 708 if (db->tx_pkt_cnt > 1)
708 return 1; 709 return 1;
709 710
710 netif_stop_queue(dev); 711 spin_lock_irqsave(&db->lock, flags);
711
712 /* Disable all interrupts */
713 iow(db, DM9000_IMR, IMR_PAR);
714 712
715 /* Move data to DM9000 TX RAM */ 713 /* Move data to DM9000 TX RAM */
716 writeb(DM9000_MWCMD, db->io_addr); 714 writeb(DM9000_MWCMD, db->io_addr);
@@ -718,12 +716,9 @@ dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev)
718 (db->outblk)(db->io_data, skb->data, skb->len); 716 (db->outblk)(db->io_data, skb->data, skb->len);
719 db->stats.tx_bytes += skb->len; 717 db->stats.tx_bytes += skb->len;
720 718
719 db->tx_pkt_cnt++;
721 /* TX control: First packet immediately send, second packet queue */ 720 /* TX control: First packet immediately send, second packet queue */
722 if (db->tx_pkt_cnt == 0) { 721 if (db->tx_pkt_cnt == 1) {
723
724 /* First Packet */
725 db->tx_pkt_cnt++;
726
727 /* Set TX length to DM9000 */ 722 /* Set TX length to DM9000 */
728 iow(db, DM9000_TXPLL, skb->len & 0xff); 723 iow(db, DM9000_TXPLL, skb->len & 0xff);
729 iow(db, DM9000_TXPLH, (skb->len >> 8) & 0xff); 724 iow(db, DM9000_TXPLH, (skb->len >> 8) & 0xff);
@@ -732,23 +727,17 @@ dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev)
732 iow(db, DM9000_TCR, TCR_TXREQ); /* Cleared after TX complete */ 727 iow(db, DM9000_TCR, TCR_TXREQ); /* Cleared after TX complete */
733 728
734 dev->trans_start = jiffies; /* save the time stamp */ 729 dev->trans_start = jiffies; /* save the time stamp */
735
736 } else { 730 } else {
737 /* Second packet */ 731 /* Second packet */
738 db->tx_pkt_cnt++;
739 db->queue_pkt_len = skb->len; 732 db->queue_pkt_len = skb->len;
733 netif_stop_queue(dev);
740 } 734 }
741 735
736 spin_unlock_irqrestore(&db->lock, flags);
737
742 /* free this SKB */ 738 /* free this SKB */
743 dev_kfree_skb(skb); 739 dev_kfree_skb(skb);
744 740
745 /* Re-enable resource check */
746 if (db->tx_pkt_cnt == 1)
747 netif_wake_queue(dev);
748
749 /* Re-enable interrupt */
750 iow(db, DM9000_IMR, IMR_PAR | IMR_PTM | IMR_PRM);
751
752 return 0; 741 return 0;
753} 742}
754 743
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index 9756211e83ce..db5747490a07 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -76,7 +76,7 @@ MODULE_PARM_DESC(rq1_entries, "Number of entries for Receive Queue 1 "
76MODULE_PARM_DESC(sq_entries, " Number of entries for the Send Queue " 76MODULE_PARM_DESC(sq_entries, " Number of entries for the Send Queue "
77 "[2^x - 1], x = [6..14]. Default = " 77 "[2^x - 1], x = [6..14]. Default = "
78 __MODULE_STRING(EHEA_DEF_ENTRIES_SQ) ")"); 78 __MODULE_STRING(EHEA_DEF_ENTRIES_SQ) ")");
79MODULE_PARM_DESC(use_mcs, " 0:NAPI, 1:Multiple receive queues, Default = 1 "); 79MODULE_PARM_DESC(use_mcs, " 0:NAPI, 1:Multiple receive queues, Default = 0 ");
80 80
81static int port_name_cnt = 0; 81static int port_name_cnt = 0;
82static LIST_HEAD(adapter_list); 82static LIST_HEAD(adapter_list);
@@ -2490,7 +2490,7 @@ static ssize_t ehea_show_port_id(struct device *dev,
2490 struct device_attribute *attr, char *buf) 2490 struct device_attribute *attr, char *buf)
2491{ 2491{
2492 struct ehea_port *port = container_of(dev, struct ehea_port, ofdev.dev); 2492 struct ehea_port *port = container_of(dev, struct ehea_port, ofdev.dev);
2493 return sprintf(buf, "0x%X", port->logical_port_id); 2493 return sprintf(buf, "%d", port->logical_port_id);
2494} 2494}
2495 2495
2496static DEVICE_ATTR(log_port_id, S_IRUSR | S_IRGRP | S_IROTH, ehea_show_port_id, 2496static DEVICE_ATTR(log_port_id, S_IRUSR | S_IRGRP | S_IROTH, ehea_show_port_id,
@@ -2781,7 +2781,7 @@ static ssize_t ehea_probe_port(struct device *dev,
2781 2781
2782 u32 logical_port_id; 2782 u32 logical_port_id;
2783 2783
2784 sscanf(buf, "%X", &logical_port_id); 2784 sscanf(buf, "%d", &logical_port_id);
2785 2785
2786 port = ehea_get_port(adapter, logical_port_id); 2786 port = ehea_get_port(adapter, logical_port_id);
2787 2787
@@ -2834,7 +2834,7 @@ static ssize_t ehea_remove_port(struct device *dev,
2834 int i; 2834 int i;
2835 u32 logical_port_id; 2835 u32 logical_port_id;
2836 2836
2837 sscanf(buf, "%X", &logical_port_id); 2837 sscanf(buf, "%d", &logical_port_id);
2838 2838
2839 port = ehea_get_port(adapter, logical_port_id); 2839 port = ehea_get_port(adapter, logical_port_id);
2840 2840
diff --git a/drivers/net/ehea/ehea_qmr.c b/drivers/net/ehea/ehea_qmr.c
index a36fa6c23fdf..c82e24596074 100644
--- a/drivers/net/ehea/ehea_qmr.c
+++ b/drivers/net/ehea/ehea_qmr.c
@@ -235,6 +235,8 @@ int ehea_destroy_cq(struct ehea_cq *cq)
235 if (!cq) 235 if (!cq)
236 return 0; 236 return 0;
237 237
238 hcp_epas_dtor(&cq->epas);
239
238 if ((hret = ehea_destroy_cq_res(cq, NORMAL_FREE)) == H_R_STATE) { 240 if ((hret = ehea_destroy_cq_res(cq, NORMAL_FREE)) == H_R_STATE) {
239 ehea_error_data(cq->adapter, cq->fw_handle); 241 ehea_error_data(cq->adapter, cq->fw_handle);
240 hret = ehea_destroy_cq_res(cq, FORCE_FREE); 242 hret = ehea_destroy_cq_res(cq, FORCE_FREE);
@@ -361,6 +363,8 @@ int ehea_destroy_eq(struct ehea_eq *eq)
361 if (!eq) 363 if (!eq)
362 return 0; 364 return 0;
363 365
366 hcp_epas_dtor(&eq->epas);
367
364 if ((hret = ehea_destroy_eq_res(eq, NORMAL_FREE)) == H_R_STATE) { 368 if ((hret = ehea_destroy_eq_res(eq, NORMAL_FREE)) == H_R_STATE) {
365 ehea_error_data(eq->adapter, eq->fw_handle); 369 ehea_error_data(eq->adapter, eq->fw_handle);
366 hret = ehea_destroy_eq_res(eq, FORCE_FREE); 370 hret = ehea_destroy_eq_res(eq, FORCE_FREE);
@@ -541,6 +545,8 @@ int ehea_destroy_qp(struct ehea_qp *qp)
541 if (!qp) 545 if (!qp)
542 return 0; 546 return 0;
543 547
548 hcp_epas_dtor(&qp->epas);
549
544 if ((hret = ehea_destroy_qp_res(qp, NORMAL_FREE)) == H_R_STATE) { 550 if ((hret = ehea_destroy_qp_res(qp, NORMAL_FREE)) == H_R_STATE) {
545 ehea_error_data(qp->adapter, qp->fw_handle); 551 ehea_error_data(qp->adapter, qp->fw_handle);
546 hret = ehea_destroy_qp_res(qp, FORCE_FREE); 552 hret = ehea_destroy_qp_res(qp, FORCE_FREE);
diff --git a/drivers/net/eql.c b/drivers/net/eql.c
index a93700e5661a..102218c4a907 100644
--- a/drivers/net/eql.c
+++ b/drivers/net/eql.c
@@ -391,7 +391,7 @@ static int __eql_insert_slave(slave_queue_t *queue, slave_t *slave)
391 slave_t *duplicate_slave = NULL; 391 slave_t *duplicate_slave = NULL;
392 392
393 duplicate_slave = __eql_find_slave_dev(queue, slave->dev); 393 duplicate_slave = __eql_find_slave_dev(queue, slave->dev);
394 if (duplicate_slave != 0) 394 if (duplicate_slave)
395 eql_kill_one_slave(queue, duplicate_slave); 395 eql_kill_one_slave(queue, duplicate_slave);
396 396
397 list_add(&slave->list, &queue->all_slaves); 397 list_add(&slave->list, &queue->all_slaves);
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index 69f5f365239a..1938d6dfc863 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -552,7 +552,7 @@ union ring_type {
552#define PHY_OUI_MARVELL 0x5043 552#define PHY_OUI_MARVELL 0x5043
553#define PHY_OUI_CICADA 0x03f1 553#define PHY_OUI_CICADA 0x03f1
554#define PHY_OUI_VITESSE 0x01c1 554#define PHY_OUI_VITESSE 0x01c1
555#define PHY_OUI_REALTEK 0x01c1 555#define PHY_OUI_REALTEK 0x0732
556#define PHYID1_OUI_MASK 0x03ff 556#define PHYID1_OUI_MASK 0x03ff
557#define PHYID1_OUI_SHFT 6 557#define PHYID1_OUI_SHFT 6
558#define PHYID2_OUI_MASK 0xfc00 558#define PHYID2_OUI_MASK 0xfc00
@@ -3068,8 +3068,8 @@ static irqreturn_t nv_nic_irq(int foo, void *data)
3068 np->nic_poll_irq = np->irqmask; 3068 np->nic_poll_irq = np->irqmask;
3069 mod_timer(&np->nic_poll, jiffies + POLL_WAIT); 3069 mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
3070 } 3070 }
3071 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq.\n", dev->name, i);
3072 spin_unlock(&np->lock); 3071 spin_unlock(&np->lock);
3072 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq.\n", dev->name, i);
3073 break; 3073 break;
3074 } 3074 }
3075 3075
@@ -3186,8 +3186,8 @@ static irqreturn_t nv_nic_irq_optimized(int foo, void *data)
3186 np->nic_poll_irq = np->irqmask; 3186 np->nic_poll_irq = np->irqmask;
3187 mod_timer(&np->nic_poll, jiffies + POLL_WAIT); 3187 mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
3188 } 3188 }
3189 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq.\n", dev->name, i);
3190 spin_unlock(&np->lock); 3189 spin_unlock(&np->lock);
3190 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq.\n", dev->name, i);
3191 break; 3191 break;
3192 } 3192 }
3193 3193
@@ -3233,8 +3233,8 @@ static irqreturn_t nv_nic_irq_tx(int foo, void *data)
3233 np->nic_poll_irq |= NVREG_IRQ_TX_ALL; 3233 np->nic_poll_irq |= NVREG_IRQ_TX_ALL;
3234 mod_timer(&np->nic_poll, jiffies + POLL_WAIT); 3234 mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
3235 } 3235 }
3236 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_tx.\n", dev->name, i);
3237 spin_unlock_irqrestore(&np->lock, flags); 3236 spin_unlock_irqrestore(&np->lock, flags);
3237 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_tx.\n", dev->name, i);
3238 break; 3238 break;
3239 } 3239 }
3240 3240
@@ -3348,8 +3348,8 @@ static irqreturn_t nv_nic_irq_rx(int foo, void *data)
3348 np->nic_poll_irq |= NVREG_IRQ_RX_ALL; 3348 np->nic_poll_irq |= NVREG_IRQ_RX_ALL;
3349 mod_timer(&np->nic_poll, jiffies + POLL_WAIT); 3349 mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
3350 } 3350 }
3351 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_rx.\n", dev->name, i);
3352 spin_unlock_irqrestore(&np->lock, flags); 3351 spin_unlock_irqrestore(&np->lock, flags);
3352 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_rx.\n", dev->name, i);
3353 break; 3353 break;
3354 } 3354 }
3355 } 3355 }
@@ -3421,8 +3421,8 @@ static irqreturn_t nv_nic_irq_other(int foo, void *data)
3421 np->nic_poll_irq |= NVREG_IRQ_OTHER; 3421 np->nic_poll_irq |= NVREG_IRQ_OTHER;
3422 mod_timer(&np->nic_poll, jiffies + POLL_WAIT); 3422 mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
3423 } 3423 }
3424 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_other.\n", dev->name, i);
3425 spin_unlock_irqrestore(&np->lock, flags); 3424 spin_unlock_irqrestore(&np->lock, flags);
3425 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_other.\n", dev->name, i);
3426 break; 3426 break;
3427 } 3427 }
3428 3428
diff --git a/drivers/net/irda/kingsun-sir.c b/drivers/net/irda/kingsun-sir.c
index bdd5c979bead..4e5101a45c3c 100644
--- a/drivers/net/irda/kingsun-sir.c
+++ b/drivers/net/irda/kingsun-sir.c
@@ -509,12 +509,12 @@ static int kingsun_probe(struct usb_interface *intf,
509 spin_lock_init(&kingsun->lock); 509 spin_lock_init(&kingsun->lock);
510 510
511 /* Allocate input buffer */ 511 /* Allocate input buffer */
512 kingsun->in_buf = (__u8 *)kmalloc(kingsun->max_rx, GFP_KERNEL); 512 kingsun->in_buf = kmalloc(kingsun->max_rx, GFP_KERNEL);
513 if (!kingsun->in_buf) 513 if (!kingsun->in_buf)
514 goto free_mem; 514 goto free_mem;
515 515
516 /* Allocate output buffer */ 516 /* Allocate output buffer */
517 kingsun->out_buf = (__u8 *)kmalloc(KINGSUN_FIFO_SIZE, GFP_KERNEL); 517 kingsun->out_buf = kmalloc(KINGSUN_FIFO_SIZE, GFP_KERNEL);
518 if (!kingsun->out_buf) 518 if (!kingsun->out_buf)
519 goto free_mem; 519 goto free_mem;
520 520
diff --git a/drivers/net/meth.c b/drivers/net/meth.c
index 92b403bf38b0..32bed6bc6c06 100644
--- a/drivers/net/meth.c
+++ b/drivers/net/meth.c
@@ -405,7 +405,7 @@ static void meth_rx(struct net_device* dev, unsigned long int_status)
405 priv->stats.rx_length_errors++; 405 priv->stats.rx_length_errors++;
406 skb = priv->rx_skbs[priv->rx_write]; 406 skb = priv->rx_skbs[priv->rx_write];
407 } else { 407 } else {
408 skb = alloc_skb(METH_RX_BUFF_SIZE, GFP_ATOMIC | GFP_DMA); 408 skb = alloc_skb(METH_RX_BUFF_SIZE, GFP_ATOMIC);
409 if (!skb) { 409 if (!skb) {
410 /* Ouch! No memory! Drop packet on the floor */ 410 /* Ouch! No memory! Drop packet on the floor */
411 DPRINTK("No mem: dropping packet\n"); 411 DPRINTK("No mem: dropping packet\n");
diff --git a/drivers/net/mlx4/reset.c b/drivers/net/mlx4/reset.c
index e4dfd4b11a4a..e199715fabd0 100644
--- a/drivers/net/mlx4/reset.c
+++ b/drivers/net/mlx4/reset.c
@@ -119,6 +119,9 @@ int mlx4_reset(struct mlx4_dev *dev)
119 writel(MLX4_RESET_VALUE, reset + MLX4_RESET_OFFSET); 119 writel(MLX4_RESET_VALUE, reset + MLX4_RESET_OFFSET);
120 iounmap(reset); 120 iounmap(reset);
121 121
122 /* Docs say to wait one second before accessing device */
123 msleep(1000);
124
122 end = jiffies + MLX4_RESET_TIMEOUT_JIFFIES; 125 end = jiffies + MLX4_RESET_TIMEOUT_JIFFIES;
123 do { 126 do {
124 if (!pci_read_config_word(dev->pdev, PCI_VENDOR_ID, &vendor) && 127 if (!pci_read_config_word(dev->pdev, PCI_VENDOR_ID, &vendor) &&
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index ae9bb7b7fd67..1c42266bf889 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -72,7 +72,7 @@
72#include "myri10ge_mcp.h" 72#include "myri10ge_mcp.h"
73#include "myri10ge_mcp_gen_header.h" 73#include "myri10ge_mcp_gen_header.h"
74 74
75#define MYRI10GE_VERSION_STR "1.3.1-1.248" 75#define MYRI10GE_VERSION_STR "1.3.2-1.269"
76 76
77MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); 77MODULE_DESCRIPTION("Myricom 10G driver (10GbE)");
78MODULE_AUTHOR("Maintainer: help@myri.com"); 78MODULE_AUTHOR("Maintainer: help@myri.com");
@@ -2514,26 +2514,20 @@ static void myri10ge_firmware_probe(struct myri10ge_priv *mgp)
2514{ 2514{
2515 struct pci_dev *pdev = mgp->pdev; 2515 struct pci_dev *pdev = mgp->pdev;
2516 struct device *dev = &pdev->dev; 2516 struct device *dev = &pdev->dev;
2517 int cap, status; 2517 int status;
2518 u16 val;
2519 2518
2520 mgp->tx.boundary = 4096; 2519 mgp->tx.boundary = 4096;
2521 /* 2520 /*
2522 * Verify the max read request size was set to 4KB 2521 * Verify the max read request size was set to 4KB
2523 * before trying the test with 4KB. 2522 * before trying the test with 4KB.
2524 */ 2523 */
2525 cap = pci_find_capability(pdev, PCI_CAP_ID_EXP); 2524 status = pcie_get_readrq(pdev);
2526 if (cap < 64) { 2525 if (status < 0) {
2527 dev_err(dev, "Bad PCI_CAP_ID_EXP location %d\n", cap);
2528 goto abort;
2529 }
2530 status = pci_read_config_word(pdev, cap + PCI_EXP_DEVCTL, &val);
2531 if (status != 0) {
2532 dev_err(dev, "Couldn't read max read req size: %d\n", status); 2526 dev_err(dev, "Couldn't read max read req size: %d\n", status);
2533 goto abort; 2527 goto abort;
2534 } 2528 }
2535 if ((val & (5 << 12)) != (5 << 12)) { 2529 if (status != 4096) {
2536 dev_warn(dev, "Max Read Request size != 4096 (0x%x)\n", val); 2530 dev_warn(dev, "Max Read Request size != 4096 (%d)\n", status);
2537 mgp->tx.boundary = 2048; 2531 mgp->tx.boundary = 2048;
2538 } 2532 }
2539 /* 2533 /*
@@ -2850,9 +2844,7 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2850 size_t bytes; 2844 size_t bytes;
2851 int i; 2845 int i;
2852 int status = -ENXIO; 2846 int status = -ENXIO;
2853 int cap;
2854 int dac_enabled; 2847 int dac_enabled;
2855 u16 val;
2856 2848
2857 netdev = alloc_etherdev(sizeof(*mgp)); 2849 netdev = alloc_etherdev(sizeof(*mgp));
2858 if (netdev == NULL) { 2850 if (netdev == NULL) {
@@ -2884,19 +2876,7 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2884 = pci_find_capability(pdev, PCI_CAP_ID_VNDR); 2876 = pci_find_capability(pdev, PCI_CAP_ID_VNDR);
2885 2877
2886 /* Set our max read request to 4KB */ 2878 /* Set our max read request to 4KB */
2887 cap = pci_find_capability(pdev, PCI_CAP_ID_EXP); 2879 status = pcie_set_readrq(pdev, 4096);
2888 if (cap < 64) {
2889 dev_err(&pdev->dev, "Bad PCI_CAP_ID_EXP location %d\n", cap);
2890 goto abort_with_netdev;
2891 }
2892 status = pci_read_config_word(pdev, cap + PCI_EXP_DEVCTL, &val);
2893 if (status != 0) {
2894 dev_err(&pdev->dev, "Error %d reading PCI_EXP_DEVCTL\n",
2895 status);
2896 goto abort_with_netdev;
2897 }
2898 val = (val & ~PCI_EXP_DEVCTL_READRQ) | (5 << 12);
2899 status = pci_write_config_word(pdev, cap + PCI_EXP_DEVCTL, val);
2900 if (status != 0) { 2880 if (status != 0) {
2901 dev_err(&pdev->dev, "Error %d writing PCI_EXP_DEVCTL\n", 2881 dev_err(&pdev->dev, "Error %d writing PCI_EXP_DEVCTL\n",
2902 status); 2882 status);
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index a8b74cdab1ea..e275df8c55bc 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -364,7 +364,7 @@ EXPORT_SYMBOL(genphy_config_advert);
364 */ 364 */
365int genphy_setup_forced(struct phy_device *phydev) 365int genphy_setup_forced(struct phy_device *phydev)
366{ 366{
367 int ctl = BMCR_RESET; 367 int ctl = 0;
368 368
369 phydev->pause = phydev->asym_pause = 0; 369 phydev->pause = phydev->asym_pause = 0;
370 370
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
index ef3325b69233..9293c82ef2af 100644
--- a/drivers/net/ppp_generic.c
+++ b/drivers/net/ppp_generic.c
@@ -1726,7 +1726,7 @@ ppp_decompress_frame(struct ppp *ppp, struct sk_buff *skb)
1726 } 1726 }
1727 /* the decompressor still expects the A/C bytes in the hdr */ 1727 /* the decompressor still expects the A/C bytes in the hdr */
1728 len = ppp->rcomp->decompress(ppp->rc_state, skb->data - 2, 1728 len = ppp->rcomp->decompress(ppp->rc_state, skb->data - 2,
1729 skb->len + 2, ns->data, ppp->mru + PPP_HDRLEN); 1729 skb->len + 2, ns->data, obuff_size);
1730 if (len < 0) { 1730 if (len < 0) {
1731 /* Pass the compressed frame to pppd as an 1731 /* Pass the compressed frame to pppd as an
1732 error indication. */ 1732 error indication. */
diff --git a/drivers/net/sgiseeq.c b/drivers/net/sgiseeq.c
index 384b4685e977..0fb74cb51c4b 100644
--- a/drivers/net/sgiseeq.c
+++ b/drivers/net/sgiseeq.c
@@ -726,7 +726,7 @@ err_out:
726 return err; 726 return err;
727} 727}
728 728
729static void __exit sgiseeq_remove(struct platform_device *pdev) 729static int __exit sgiseeq_remove(struct platform_device *pdev)
730{ 730{
731 struct net_device *dev = platform_get_drvdata(pdev); 731 struct net_device *dev = platform_get_drvdata(pdev);
732 struct sgiseeq_private *sp = netdev_priv(dev); 732 struct sgiseeq_private *sp = netdev_priv(dev);
@@ -735,6 +735,8 @@ static void __exit sgiseeq_remove(struct platform_device *pdev)
735 free_page((unsigned long) sp->srings); 735 free_page((unsigned long) sp->srings);
736 free_netdev(dev); 736 free_netdev(dev);
737 platform_set_drvdata(pdev, NULL); 737 platform_set_drvdata(pdev, NULL);
738
739 return 0;
738} 740}
739 741
740static struct platform_driver sgiseeq_driver = { 742static struct platform_driver sgiseeq_driver = {
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index e7a2eadcc3b0..e6d937ec6886 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -51,7 +51,7 @@
51#include "sky2.h" 51#include "sky2.h"
52 52
53#define DRV_NAME "sky2" 53#define DRV_NAME "sky2"
54#define DRV_VERSION "1.16" 54#define DRV_VERSION "1.17"
55#define PFX DRV_NAME " " 55#define PFX DRV_NAME " "
56 56
57/* 57/*
@@ -99,10 +99,6 @@ static int disable_msi = 0;
99module_param(disable_msi, int, 0); 99module_param(disable_msi, int, 0);
100MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)"); 100MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)");
101 101
102static int idle_timeout = 100;
103module_param(idle_timeout, int, 0);
104MODULE_PARM_DESC(idle_timeout, "Watchdog timer for lost interrupts (ms)");
105
106static const struct pci_device_id sky2_id_table[] = { 102static const struct pci_device_id sky2_id_table[] = {
107 { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9000) }, /* SK-9Sxx */ 103 { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9000) }, /* SK-9Sxx */
108 { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9E00) }, /* SK-9Exx */ 104 { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9E00) }, /* SK-9Exx */
@@ -219,9 +215,12 @@ static void sky2_power_on(struct sky2_hw *hw)
219 else 215 else
220 sky2_write8(hw, B2_Y2_CLK_GATE, 0); 216 sky2_write8(hw, B2_Y2_CLK_GATE, 0);
221 217
222 if (hw->chip_id == CHIP_ID_YUKON_EC_U || hw->chip_id == CHIP_ID_YUKON_EX) { 218 if (hw->chip_id == CHIP_ID_YUKON_EC_U ||
219 hw->chip_id == CHIP_ID_YUKON_EX) {
223 u32 reg; 220 u32 reg;
224 221
222 sky2_pci_write32(hw, PCI_DEV_REG3, 0);
223
225 reg = sky2_pci_read32(hw, PCI_DEV_REG4); 224 reg = sky2_pci_read32(hw, PCI_DEV_REG4);
226 /* set all bits to 0 except bits 15..12 and 8 */ 225 /* set all bits to 0 except bits 15..12 and 8 */
227 reg &= P_ASPM_CONTROL_MSK; 226 reg &= P_ASPM_CONTROL_MSK;
@@ -238,6 +237,8 @@ static void sky2_power_on(struct sky2_hw *hw)
238 reg = sky2_read32(hw, B2_GP_IO); 237 reg = sky2_read32(hw, B2_GP_IO);
239 reg |= GLB_GPIO_STAT_RACE_DIS; 238 reg |= GLB_GPIO_STAT_RACE_DIS;
240 sky2_write32(hw, B2_GP_IO, reg); 239 sky2_write32(hw, B2_GP_IO, reg);
240
241 sky2_read32(hw, B2_GP_IO);
241 } 242 }
242} 243}
243 244
@@ -696,8 +697,8 @@ static void sky2_mac_init(struct sky2_hw *hw, unsigned port)
696 int i; 697 int i;
697 const u8 *addr = hw->dev[port]->dev_addr; 698 const u8 *addr = hw->dev[port]->dev_addr;
698 699
699 sky2_write32(hw, SK_REG(port, GPHY_CTRL), GPC_RST_SET); 700 sky2_write8(hw, SK_REG(port, GPHY_CTRL), GPC_RST_SET);
700 sky2_write32(hw, SK_REG(port, GPHY_CTRL), GPC_RST_CLR); 701 sky2_write8(hw, SK_REG(port, GPHY_CTRL), GPC_RST_CLR);
701 702
702 sky2_write8(hw, SK_REG(port, GMAC_CTRL), GMC_RST_CLR); 703 sky2_write8(hw, SK_REG(port, GMAC_CTRL), GMC_RST_CLR);
703 704
@@ -1619,6 +1620,9 @@ static int sky2_down(struct net_device *dev)
1619 if (netif_msg_ifdown(sky2)) 1620 if (netif_msg_ifdown(sky2))
1620 printk(KERN_INFO PFX "%s: disabling interface\n", dev->name); 1621 printk(KERN_INFO PFX "%s: disabling interface\n", dev->name);
1621 1622
1623 if (netif_carrier_ok(dev) && --hw->active == 0)
1624 del_timer(&hw->watchdog_timer);
1625
1622 /* Stop more packets from being queued */ 1626 /* Stop more packets from being queued */
1623 netif_stop_queue(dev); 1627 netif_stop_queue(dev);
1624 1628
@@ -1739,6 +1743,10 @@ static void sky2_link_up(struct sky2_port *sky2)
1739 1743
1740 netif_carrier_on(sky2->netdev); 1744 netif_carrier_on(sky2->netdev);
1741 1745
1746 if (hw->active++ == 0)
1747 mod_timer(&hw->watchdog_timer, jiffies + 1);
1748
1749
1742 /* Turn on link LED */ 1750 /* Turn on link LED */
1743 sky2_write8(hw, SK_REG(port, LNK_LED_REG), 1751 sky2_write8(hw, SK_REG(port, LNK_LED_REG),
1744 LINKLED_ON | LINKLED_BLINK_OFF | LINKLED_LINKSYNC_OFF); 1752 LINKLED_ON | LINKLED_BLINK_OFF | LINKLED_LINKSYNC_OFF);
@@ -1790,6 +1798,11 @@ static void sky2_link_down(struct sky2_port *sky2)
1790 1798
1791 netif_carrier_off(sky2->netdev); 1799 netif_carrier_off(sky2->netdev);
1792 1800
1801 /* Stop watchdog if both ports are not active */
1802 if (--hw->active == 0)
1803 del_timer(&hw->watchdog_timer);
1804
1805
1793 /* Turn on link LED */ 1806 /* Turn on link LED */
1794 sky2_write8(hw, SK_REG(port, LNK_LED_REG), LINKLED_OFF); 1807 sky2_write8(hw, SK_REG(port, LNK_LED_REG), LINKLED_OFF);
1795 1808
@@ -2421,25 +2434,20 @@ static void sky2_le_error(struct sky2_hw *hw, unsigned port,
2421 sky2_write32(hw, Q_ADDR(q, Q_CSR), BMU_CLR_IRQ_CHK); 2434 sky2_write32(hw, Q_ADDR(q, Q_CSR), BMU_CLR_IRQ_CHK);
2422} 2435}
2423 2436
2424/* If idle then force a fake soft NAPI poll once a second 2437/* Check for lost IRQ once a second */
2425 * to work around cases where sharing an edge triggered interrupt. 2438static void sky2_watchdog(unsigned long arg)
2426 */
2427static inline void sky2_idle_start(struct sky2_hw *hw)
2428{
2429 if (idle_timeout > 0)
2430 mod_timer(&hw->idle_timer,
2431 jiffies + msecs_to_jiffies(idle_timeout));
2432}
2433
2434static void sky2_idle(unsigned long arg)
2435{ 2439{
2436 struct sky2_hw *hw = (struct sky2_hw *) arg; 2440 struct sky2_hw *hw = (struct sky2_hw *) arg;
2437 struct net_device *dev = hw->dev[0];
2438 2441
2439 if (__netif_rx_schedule_prep(dev)) 2442 if (sky2_read32(hw, B0_ISRC)) {
2440 __netif_rx_schedule(dev); 2443 struct net_device *dev = hw->dev[0];
2441 2444
2442 mod_timer(&hw->idle_timer, jiffies + msecs_to_jiffies(idle_timeout)); 2445 if (__netif_rx_schedule_prep(dev))
2446 __netif_rx_schedule(dev);
2447 }
2448
2449 if (hw->active > 0)
2450 mod_timer(&hw->watchdog_timer, round_jiffies(jiffies + HZ));
2443} 2451}
2444 2452
2445/* Hardware/software error handling */ 2453/* Hardware/software error handling */
@@ -2727,8 +2735,6 @@ static void sky2_restart(struct work_struct *work)
2727 struct net_device *dev; 2735 struct net_device *dev;
2728 int i, err; 2736 int i, err;
2729 2737
2730 del_timer_sync(&hw->idle_timer);
2731
2732 rtnl_lock(); 2738 rtnl_lock();
2733 sky2_write32(hw, B0_IMSK, 0); 2739 sky2_write32(hw, B0_IMSK, 0);
2734 sky2_read32(hw, B0_IMSK); 2740 sky2_read32(hw, B0_IMSK);
@@ -2757,8 +2763,6 @@ static void sky2_restart(struct work_struct *work)
2757 } 2763 }
2758 } 2764 }
2759 2765
2760 sky2_idle_start(hw);
2761
2762 rtnl_unlock(); 2766 rtnl_unlock();
2763} 2767}
2764 2768
@@ -4025,11 +4029,9 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
4025 sky2_show_addr(dev1); 4029 sky2_show_addr(dev1);
4026 } 4030 }
4027 4031
4028 setup_timer(&hw->idle_timer, sky2_idle, (unsigned long) hw); 4032 setup_timer(&hw->watchdog_timer, sky2_watchdog, (unsigned long) hw);
4029 INIT_WORK(&hw->restart_work, sky2_restart); 4033 INIT_WORK(&hw->restart_work, sky2_restart);
4030 4034
4031 sky2_idle_start(hw);
4032
4033 pci_set_drvdata(pdev, hw); 4035 pci_set_drvdata(pdev, hw);
4034 4036
4035 return 0; 4037 return 0;
@@ -4064,7 +4066,7 @@ static void __devexit sky2_remove(struct pci_dev *pdev)
4064 if (!hw) 4066 if (!hw)
4065 return; 4067 return;
4066 4068
4067 del_timer_sync(&hw->idle_timer); 4069 del_timer_sync(&hw->watchdog_timer);
4068 4070
4069 flush_scheduled_work(); 4071 flush_scheduled_work();
4070 4072
@@ -4108,7 +4110,6 @@ static int sky2_suspend(struct pci_dev *pdev, pm_message_t state)
4108 if (!hw) 4110 if (!hw)
4109 return 0; 4111 return 0;
4110 4112
4111 del_timer_sync(&hw->idle_timer);
4112 netif_poll_disable(hw->dev[0]); 4113 netif_poll_disable(hw->dev[0]);
4113 4114
4114 for (i = 0; i < hw->ports; i++) { 4115 for (i = 0; i < hw->ports; i++) {
@@ -4174,7 +4175,7 @@ static int sky2_resume(struct pci_dev *pdev)
4174 } 4175 }
4175 4176
4176 netif_poll_enable(hw->dev[0]); 4177 netif_poll_enable(hw->dev[0]);
4177 sky2_idle_start(hw); 4178
4178 return 0; 4179 return 0;
4179out: 4180out:
4180 dev_err(&pdev->dev, "resume failed (%d)\n", err); 4181 dev_err(&pdev->dev, "resume failed (%d)\n", err);
@@ -4191,7 +4192,6 @@ static void sky2_shutdown(struct pci_dev *pdev)
4191 if (!hw) 4192 if (!hw)
4192 return; 4193 return;
4193 4194
4194 del_timer_sync(&hw->idle_timer);
4195 netif_poll_disable(hw->dev[0]); 4195 netif_poll_disable(hw->dev[0]);
4196 4196
4197 for (i = 0; i < hw->ports; i++) { 4197 for (i = 0; i < hw->ports; i++) {
diff --git a/drivers/net/sky2.h b/drivers/net/sky2.h
index dce4d276d443..72e12b7cfa40 100644
--- a/drivers/net/sky2.h
+++ b/drivers/net/sky2.h
@@ -2045,12 +2045,13 @@ struct sky2_hw {
2045 u8 chip_rev; 2045 u8 chip_rev;
2046 u8 pmd_type; 2046 u8 pmd_type;
2047 u8 ports; 2047 u8 ports;
2048 u8 active;
2048 2049
2049 struct sky2_status_le *st_le; 2050 struct sky2_status_le *st_le;
2050 u32 st_idx; 2051 u32 st_idx;
2051 dma_addr_t st_dma; 2052 dma_addr_t st_dma;
2052 2053
2053 struct timer_list idle_timer; 2054 struct timer_list watchdog_timer;
2054 struct work_struct restart_work; 2055 struct work_struct restart_work;
2055 int msi; 2056 int msi;
2056 wait_queue_head_t msi_wait; 2057 wait_queue_head_t msi_wait;
diff --git a/drivers/net/slip.c b/drivers/net/slip.c
index 65bd20fac820..3fd4735006f5 100644
--- a/drivers/net/slip.c
+++ b/drivers/net/slip.c
@@ -957,7 +957,7 @@ slip_close(struct tty_struct *tty)
957 * STANDARD SLIP ENCAPSULATION * 957 * STANDARD SLIP ENCAPSULATION *
958 ************************************************************************/ 958 ************************************************************************/
959 959
960int 960static int
961slip_esc(unsigned char *s, unsigned char *d, int len) 961slip_esc(unsigned char *s, unsigned char *d, int len)
962{ 962{
963 unsigned char *ptr = d; 963 unsigned char *ptr = d;
diff --git a/drivers/pci/hotplug/acpiphp_ibm.c b/drivers/pci/hotplug/acpiphp_ibm.c
index 70db38c0ced9..56829f82be4a 100644
--- a/drivers/pci/hotplug/acpiphp_ibm.c
+++ b/drivers/pci/hotplug/acpiphp_ibm.c
@@ -267,7 +267,10 @@ static void ibm_handle_events(acpi_handle handle, u32 event, void *context)
267 267
268 if (subevent == 0x80) { 268 if (subevent == 0x80) {
269 dbg("%s: generationg bus event\n", __FUNCTION__); 269 dbg("%s: generationg bus event\n", __FUNCTION__);
270 acpi_bus_generate_event(note->device, note->event, detail); 270 acpi_bus_generate_proc_event(note->device, note->event, detail);
271 acpi_bus_generate_netlink_event(note->device->pnp.device_class,
272 note->device->dev.bus_id,
273 note->event, detail);
271 } else 274 } else
272 note->event = event; 275 note->event = event;
273} 276}
@@ -399,7 +402,7 @@ static acpi_status __init ibm_find_acpi_device(acpi_handle handle,
399 402
400 status = acpi_get_object_info(handle, &info_buffer); 403 status = acpi_get_object_info(handle, &info_buffer);
401 if (ACPI_FAILURE(status)) { 404 if (ACPI_FAILURE(status)) {
402 err("%s: Failed to get device information", __FUNCTION__); 405 err("%s: Failed to get device information\n", __FUNCTION__);
403 return 0; 406 return 0;
404 } 407 }
405 info.hardware_id.value[sizeof(info.hardware_id.value) - 1] = '\0'; 408 info.hardware_id.value[sizeof(info.hardware_id.value) - 1] = '\0';
diff --git a/drivers/pci/hotplug/cpqphp_ctrl.c b/drivers/pci/hotplug/cpqphp_ctrl.c
index 79ff6b4de3a6..37d72f123a80 100644
--- a/drivers/pci/hotplug/cpqphp_ctrl.c
+++ b/drivers/pci/hotplug/cpqphp_ctrl.c
@@ -1746,10 +1746,8 @@ static void pushbutton_helper_thread(unsigned long data)
1746static int event_thread(void* data) 1746static int event_thread(void* data)
1747{ 1747{
1748 struct controller *ctrl; 1748 struct controller *ctrl;
1749 lock_kernel(); 1749
1750 daemonize("phpd_event"); 1750 daemonize("phpd_event");
1751
1752 unlock_kernel();
1753 1751
1754 while (1) { 1752 while (1) {
1755 dbg("!!!!event_thread sleeping\n"); 1753 dbg("!!!!event_thread sleeping\n");
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index c6e132d7c0f7..4c36e80f6d26 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -5,12 +5,7 @@ extern int pci_uevent(struct device *dev, char **envp, int num_envp,
5extern int pci_create_sysfs_dev_files(struct pci_dev *pdev); 5extern int pci_create_sysfs_dev_files(struct pci_dev *pdev);
6extern void pci_remove_sysfs_dev_files(struct pci_dev *pdev); 6extern void pci_remove_sysfs_dev_files(struct pci_dev *pdev);
7extern void pci_cleanup_rom(struct pci_dev *dev); 7extern void pci_cleanup_rom(struct pci_dev *dev);
8extern int pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res, 8
9 resource_size_t size, resource_size_t align,
10 resource_size_t min, unsigned int type_mask,
11 void (*alignf)(void *, struct resource *,
12 resource_size_t, resource_size_t),
13 void *alignf_data);
14/* Firmware callbacks */ 9/* Firmware callbacks */
15extern pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); 10extern pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state);
16extern int (*platform_pci_set_power_state)(struct pci_dev *dev, pci_power_t state); 11extern int (*platform_pci_set_power_state)(struct pci_dev *dev, pci_power_t state);
@@ -35,7 +30,6 @@ static inline int pci_proc_detach_bus(struct pci_bus *bus) { return 0; }
35 30
36/* Functions for PCI Hotplug drivers to use */ 31/* Functions for PCI Hotplug drivers to use */
37extern unsigned int pci_do_scan_bus(struct pci_bus *bus); 32extern unsigned int pci_do_scan_bus(struct pci_bus *bus);
38extern int pci_bus_find_capability (struct pci_bus *bus, unsigned int devfn, int cap);
39 33
40extern void pci_remove_legacy_files(struct pci_bus *bus); 34extern void pci_remove_legacy_files(struct pci_bus *bus);
41 35
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 34b8dae0d90f..27e00b2d7b5b 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -653,20 +653,20 @@ int pci_scan_bridge(struct pci_bus *bus, struct pci_dev * dev, int max, int pass
653 653
654 sprintf(child->name, (is_cardbus ? "PCI CardBus #%02x" : "PCI Bus #%02x"), child->number); 654 sprintf(child->name, (is_cardbus ? "PCI CardBus #%02x" : "PCI Bus #%02x"), child->number);
655 655
656 /* Has only triggered on CardBus, fixup is in yenta_socket */
656 while (bus->parent) { 657 while (bus->parent) {
657 if ((child->subordinate > bus->subordinate) || 658 if ((child->subordinate > bus->subordinate) ||
658 (child->number > bus->subordinate) || 659 (child->number > bus->subordinate) ||
659 (child->number < bus->number) || 660 (child->number < bus->number) ||
660 (child->subordinate < bus->number)) { 661 (child->subordinate < bus->number)) {
661 printk(KERN_WARNING "PCI: Bus #%02x (-#%02x) is " 662 pr_debug("PCI: Bus #%02x (-#%02x) is %s"
662 "hidden behind%s bridge #%02x (-#%02x)%s\n", 663 "hidden behind%s bridge #%02x (-#%02x)\n",
663 child->number, child->subordinate, 664 child->number, child->subordinate,
664 bus->self->transparent ? " transparent" : " ", 665 (bus->number > child->subordinate &&
665 bus->number, bus->subordinate, 666 bus->subordinate < child->number) ?
666 pcibios_assign_all_busses() ? " " : 667 "wholly " : " partially",
667 " (try 'pci=assign-busses')"); 668 bus->self->transparent ? " transparent" : " ",
668 printk(KERN_WARNING "Please report the result to " 669 bus->number, bus->subordinate);
669 "<bk@suse.de> to fix this permanently\n");
670 } 670 }
671 bus = bus->parent; 671 bus = bus->parent;
672 } 672 }
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index c559085c89a5..2d40f437b9fc 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -947,7 +947,7 @@ static void k8t_sound_hostbridge(struct pci_dev *dev)
947 unsigned char val; 947 unsigned char val;
948 948
949 pci_read_config_byte(dev, 0x50, &val); 949 pci_read_config_byte(dev, 0x50, &val);
950 if (val == 0x88 || val == 0xc8) { 950 if (val == 0xc8) {
951 /* Assume it's probably a MSI-K8T-Neo2Fir */ 951 /* Assume it's probably a MSI-K8T-Neo2Fir */
952 printk(KERN_INFO "PCI: MSI-K8T-Neo2Fir, attempting to turn soundcard ON\n"); 952 printk(KERN_INFO "PCI: MSI-K8T-Neo2Fir, attempting to turn soundcard ON\n");
953 pci_write_config_byte(dev, 0x50, val & (~0x40)); 953 pci_write_config_byte(dev, 0x50, val & (~0x40));
@@ -1485,7 +1485,7 @@ static void __devinit quirk_e100_interrupt(struct pci_dev *dev)
1485 1485
1486 iounmap(csr); 1486 iounmap(csr);
1487} 1487}
1488DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_e100_interrupt); 1488DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_e100_interrupt);
1489 1489
1490static void __devinit fixup_rev1_53c810(struct pci_dev* dev) 1490static void __devinit fixup_rev1_53c810(struct pci_dev* dev)
1491{ 1491{
@@ -1650,6 +1650,9 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCN
1650DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000_PCIX, quirk_disable_all_msi); 1650DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000_PCIX, quirk_disable_all_msi);
1651DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200, quirk_disable_all_msi); 1651DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200, quirk_disable_all_msi);
1652DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480, quirk_disable_all_msi); 1652DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480, quirk_disable_all_msi);
1653DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RD580, quirk_disable_all_msi);
1654DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RX790, quirk_disable_all_msi);
1655DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS690, quirk_disable_all_msi);
1653DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi); 1656DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi);
1654 1657
1655/* Disable MSI on chipsets that are known to not support it */ 1658/* Disable MSI on chipsets that are known to not support it */
diff --git a/drivers/pnp/card.c b/drivers/pnp/card.c
index b6a4f02b01d1..6c0440c20e31 100644
--- a/drivers/pnp/card.c
+++ b/drivers/pnp/card.c
@@ -25,13 +25,13 @@ static const struct pnp_card_device_id *match_card(struct pnp_card_driver *drv,
25 int found; 25 int found;
26 struct pnp_dev *dev; 26 struct pnp_dev *dev;
27 27
28 if (i == PNP_MAX_DEVICES 28 if (i == PNP_MAX_DEVICES ||
29 || !*drv_id->devs[i].id) 29 !*drv_id->devs[i].id)
30 return drv_id; 30 return drv_id;
31 found = 0; 31 found = 0;
32 card_for_each_dev(card, dev) { 32 card_for_each_dev(card, dev) {
33 if (compare_pnp_id 33 if (compare_pnp_id(dev->id,
34 (dev->id, drv_id->devs[i].id)) { 34 drv_id->devs[i].id)) {
35 found = 1; 35 found = 1;
36 break; 36 break;
37 } 37 }
@@ -183,7 +183,7 @@ static int pnp_interface_attach_card(struct pnp_card *card)
183 183
184 return 0; 184 return 0;
185 185
186 err_name: 186err_name:
187 device_remove_file(&card->dev, &dev_attr_name); 187 device_remove_file(&card->dev, &dev_attr_name);
188 return rc; 188 return rc;
189} 189}
@@ -321,10 +321,10 @@ struct pnp_dev *pnp_request_card_device(struct pnp_card_link *clink,
321 pos = pos->next; 321 pos = pos->next;
322 } 322 }
323 323
324 done: 324done:
325 return NULL; 325 return NULL;
326 326
327 found: 327found:
328 dev->card_link = clink; 328 dev->card_link = clink;
329 dev->dev.driver = &drv->link.driver; 329 dev->dev.driver = &drv->link.driver;
330 if (pnp_bus_type.probe(&dev->dev)) 330 if (pnp_bus_type.probe(&dev->dev))
@@ -334,7 +334,7 @@ struct pnp_dev *pnp_request_card_device(struct pnp_card_link *clink,
334 334
335 return dev; 335 return dev;
336 336
337 err_out: 337err_out:
338 dev->dev.driver = NULL; 338 dev->dev.driver = NULL;
339 dev->card_link = NULL; 339 dev->card_link = NULL;
340 return NULL; 340 return NULL;
diff --git a/drivers/pnp/core.c b/drivers/pnp/core.c
index 61066fdb9e6d..d5964feb14de 100644
--- a/drivers/pnp/core.c
+++ b/drivers/pnp/core.c
@@ -52,9 +52,6 @@ int pnp_register_protocol(struct pnp_protocol *protocol)
52 int nodenum; 52 int nodenum;
53 struct list_head *pos; 53 struct list_head *pos;
54 54
55 if (!protocol)
56 return -EINVAL;
57
58 INIT_LIST_HEAD(&protocol->devices); 55 INIT_LIST_HEAD(&protocol->devices);
59 INIT_LIST_HEAD(&protocol->cards); 56 INIT_LIST_HEAD(&protocol->cards);
60 nodenum = 0; 57 nodenum = 0;
@@ -94,8 +91,6 @@ static void pnp_free_ids(struct pnp_dev *dev)
94 struct pnp_id *id; 91 struct pnp_id *id;
95 struct pnp_id *next; 92 struct pnp_id *next;
96 93
97 if (!dev)
98 return;
99 id = dev->id; 94 id = dev->id;
100 while (id) { 95 while (id) {
101 next = id->next; 96 next = id->next;
@@ -143,7 +138,7 @@ int __pnp_add_device(struct pnp_dev *dev)
143 */ 138 */
144int pnp_add_device(struct pnp_dev *dev) 139int pnp_add_device(struct pnp_dev *dev)
145{ 140{
146 if (!dev || !dev->protocol || dev->card) 141 if (dev->card)
147 return -EINVAL; 142 return -EINVAL;
148 dev->dev.parent = &dev->protocol->dev; 143 dev->dev.parent = &dev->protocol->dev;
149 sprintf(dev->dev.bus_id, "%02x:%02x", dev->protocol->number, 144 sprintf(dev->dev.bus_id, "%02x:%02x", dev->protocol->number,
diff --git a/drivers/pnp/driver.c b/drivers/pnp/driver.c
index 30b8f6f3258a..2fa64a6b25c8 100644
--- a/drivers/pnp/driver.c
+++ b/drivers/pnp/driver.c
@@ -118,7 +118,7 @@ static int pnp_device_probe(struct device *dev)
118 goto fail; 118 goto fail;
119 return error; 119 return error;
120 120
121 fail: 121fail:
122 pnp_device_detach(pnp_dev); 122 pnp_device_detach(pnp_dev);
123 return error; 123 return error;
124} 124}
@@ -232,10 +232,6 @@ int pnp_add_id(struct pnp_id *id, struct pnp_dev *dev)
232{ 232{
233 struct pnp_id *ptr; 233 struct pnp_id *ptr;
234 234
235 if (!id)
236 return -EINVAL;
237 if (!dev)
238 return -EINVAL;
239 id->next = NULL; 235 id->next = NULL;
240 ptr = dev->id; 236 ptr = dev->id;
241 while (ptr && ptr->next) 237 while (ptr && ptr->next)
diff --git a/drivers/pnp/interface.c b/drivers/pnp/interface.c
index fe6684e13e82..a0cfb75bbb8d 100644
--- a/drivers/pnp/interface.c
+++ b/drivers/pnp/interface.c
@@ -459,7 +459,8 @@ pnp_set_current_resources(struct device *dmdev, struct device_attribute *attr,
459 up(&pnp_res_mutex); 459 up(&pnp_res_mutex);
460 goto done; 460 goto done;
461 } 461 }
462 done: 462
463done:
463 if (retval < 0) 464 if (retval < 0)
464 return retval; 465 return retval;
465 return count; 466 return count;
@@ -499,10 +500,10 @@ int pnp_interface_attach_device(struct pnp_dev *dev)
499 500
500 return 0; 501 return 0;
501 502
502 err_res: 503err_res:
503 device_remove_file(&dev->dev, &dev_attr_resources); 504 device_remove_file(&dev->dev, &dev_attr_resources);
504 err_opt: 505err_opt:
505 device_remove_file(&dev->dev, &dev_attr_options); 506 device_remove_file(&dev->dev, &dev_attr_options);
506 err: 507err:
507 return rc; 508 return rc;
508} 509}
diff --git a/drivers/pnp/isapnp/core.c b/drivers/pnp/isapnp/core.c
index b4e2aa995b53..b035d60a1dcc 100644
--- a/drivers/pnp/isapnp/core.c
+++ b/drivers/pnp/isapnp/core.c
@@ -47,9 +47,6 @@
47#if 0 47#if 0
48#define ISAPNP_REGION_OK 48#define ISAPNP_REGION_OK
49#endif 49#endif
50#if 0
51#define ISAPNP_DEBUG
52#endif
53 50
54int isapnp_disable; /* Disable ISA PnP */ 51int isapnp_disable; /* Disable ISA PnP */
55static int isapnp_rdp; /* Read Data Port */ 52static int isapnp_rdp; /* Read Data Port */
@@ -93,7 +90,6 @@ MODULE_LICENSE("GPL");
93 90
94static unsigned char isapnp_checksum_value; 91static unsigned char isapnp_checksum_value;
95static DEFINE_MUTEX(isapnp_cfg_mutex); 92static DEFINE_MUTEX(isapnp_cfg_mutex);
96static int isapnp_detected;
97static int isapnp_csn_count; 93static int isapnp_csn_count;
98 94
99/* some prototypes */ 95/* some prototypes */
@@ -335,7 +331,7 @@ static int __init isapnp_isolate(void)
335 } else if (iteration > 1) { 331 } else if (iteration > 1) {
336 break; 332 break;
337 } 333 }
338 __next: 334__next:
339 if (csn == 255) 335 if (csn == 255)
340 break; 336 break;
341 checksum = 0x6a; 337 checksum = 0x6a;
@@ -733,7 +729,7 @@ static int __init isapnp_create_device(struct pnp_card *card,
733 "isapnp: unexpected or unknown tag type 0x%x for logical device %i (device %i), ignored\n", 729 "isapnp: unexpected or unknown tag type 0x%x for logical device %i (device %i), ignored\n",
734 type, dev->number, card->number); 730 type, dev->number, card->number);
735 } 731 }
736 __skip: 732__skip:
737 if (size > 0) 733 if (size > 0)
738 isapnp_skip_bytes(size); 734 isapnp_skip_bytes(size);
739 } 735 }
@@ -788,7 +784,7 @@ static void __init isapnp_parse_resource_map(struct pnp_card *card)
788 "isapnp: unexpected or unknown tag type 0x%x for device %i, ignored\n", 784 "isapnp: unexpected or unknown tag type 0x%x for device %i, ignored\n",
789 type, card->number); 785 type, card->number);
790 } 786 }
791 __skip: 787__skip:
792 if (size > 0) 788 if (size > 0)
793 isapnp_skip_bytes(size); 789 isapnp_skip_bytes(size);
794 } 790 }
@@ -940,9 +936,6 @@ EXPORT_SYMBOL(isapnp_protocol);
940EXPORT_SYMBOL(isapnp_present); 936EXPORT_SYMBOL(isapnp_present);
941EXPORT_SYMBOL(isapnp_cfg_begin); 937EXPORT_SYMBOL(isapnp_cfg_begin);
942EXPORT_SYMBOL(isapnp_cfg_end); 938EXPORT_SYMBOL(isapnp_cfg_end);
943#if 0
944EXPORT_SYMBOL(isapnp_read_byte);
945#endif
946EXPORT_SYMBOL(isapnp_write_byte); 939EXPORT_SYMBOL(isapnp_write_byte);
947 940
948static int isapnp_read_resources(struct pnp_dev *dev, 941static int isapnp_read_resources(struct pnp_dev *dev,
@@ -993,6 +986,7 @@ static int isapnp_get_resources(struct pnp_dev *dev,
993 struct pnp_resource_table *res) 986 struct pnp_resource_table *res)
994{ 987{
995 int ret; 988 int ret;
989
996 pnp_init_resource_table(res); 990 pnp_init_resource_table(res);
997 isapnp_cfg_begin(dev->card->number, dev->number); 991 isapnp_cfg_begin(dev->card->number, dev->number);
998 ret = isapnp_read_resources(dev, res); 992 ret = isapnp_read_resources(dev, res);
@@ -1046,7 +1040,7 @@ static int isapnp_set_resources(struct pnp_dev *dev,
1046 1040
1047static int isapnp_disable_resources(struct pnp_dev *dev) 1041static int isapnp_disable_resources(struct pnp_dev *dev)
1048{ 1042{
1049 if (!dev || !dev->active) 1043 if (!dev->active)
1050 return -EINVAL; 1044 return -EINVAL;
1051 isapnp_cfg_begin(dev->card->number, dev->number); 1045 isapnp_cfg_begin(dev->card->number, dev->number);
1052 isapnp_deactivate(dev->number); 1046 isapnp_deactivate(dev->number);
@@ -1069,7 +1063,6 @@ static int __init isapnp_init(void)
1069 struct pnp_dev *dev; 1063 struct pnp_dev *dev;
1070 1064
1071 if (isapnp_disable) { 1065 if (isapnp_disable) {
1072 isapnp_detected = 0;
1073 printk(KERN_INFO "isapnp: ISA Plug & Play support disabled\n"); 1066 printk(KERN_INFO "isapnp: ISA Plug & Play support disabled\n");
1074 return 0; 1067 return 0;
1075 } 1068 }
@@ -1117,7 +1110,6 @@ static int __init isapnp_init(void)
1117 } 1110 }
1118 isapnp_set_rdp(); 1111 isapnp_set_rdp();
1119 } 1112 }
1120 isapnp_detected = 1;
1121 if (isapnp_rdp < 0x203 || isapnp_rdp > 0x3ff) { 1113 if (isapnp_rdp < 0x203 || isapnp_rdp > 0x3ff) {
1122 cards = isapnp_isolate(); 1114 cards = isapnp_isolate();
1123 if (cards < 0 || (isapnp_rdp < 0x203 || isapnp_rdp > 0x3ff)) { 1115 if (cards < 0 || (isapnp_rdp < 0x203 || isapnp_rdp > 0x3ff)) {
@@ -1125,7 +1117,6 @@ static int __init isapnp_init(void)
1125 release_region(_PIDXR, 1); 1117 release_region(_PIDXR, 1);
1126#endif 1118#endif
1127 release_region(_PNPWRP, 1); 1119 release_region(_PNPWRP, 1);
1128 isapnp_detected = 0;
1129 printk(KERN_INFO 1120 printk(KERN_INFO
1130 "isapnp: No Plug & Play device found\n"); 1121 "isapnp: No Plug & Play device found\n");
1131 return 0; 1122 return 0;
@@ -1148,13 +1139,12 @@ static int __init isapnp_init(void)
1148 } 1139 }
1149 } 1140 }
1150 } 1141 }
1151 if (cards) { 1142 if (cards)
1152 printk(KERN_INFO 1143 printk(KERN_INFO
1153 "isapnp: %i Plug & Play card%s detected total\n", cards, 1144 "isapnp: %i Plug & Play card%s detected total\n", cards,
1154 cards > 1 ? "s" : ""); 1145 cards > 1 ? "s" : "");
1155 } else { 1146 else
1156 printk(KERN_INFO "isapnp: No Plug & Play card found\n"); 1147 printk(KERN_INFO "isapnp: No Plug & Play card found\n");
1157 }
1158 1148
1159 isapnp_proc_init(); 1149 isapnp_proc_init();
1160 return 0; 1150 return 0;
diff --git a/drivers/pnp/isapnp/proc.c b/drivers/pnp/isapnp/proc.c
index 3fbc0f9ffc26..560ccb640816 100644
--- a/drivers/pnp/isapnp/proc.c
+++ b/drivers/pnp/isapnp/proc.c
@@ -112,33 +112,6 @@ static int isapnp_proc_attach_device(struct pnp_dev *dev)
112 return 0; 112 return 0;
113} 113}
114 114
115#ifdef MODULE
116static int __exit isapnp_proc_detach_device(struct pnp_dev *dev)
117{
118 struct pnp_card *bus = dev->card;
119 struct proc_dir_entry *de;
120 char name[16];
121
122 if (!(de = bus->procdir))
123 return -EINVAL;
124 sprintf(name, "%02x", dev->number);
125 remove_proc_entry(name, de);
126 return 0;
127}
128
129static int __exit isapnp_proc_detach_bus(struct pnp_card *bus)
130{
131 struct proc_dir_entry *de;
132 char name[16];
133
134 if (!(de = bus->procdir))
135 return -EINVAL;
136 sprintf(name, "%02x", bus->number);
137 remove_proc_entry(name, isapnp_proc_bus_dir);
138 return 0;
139}
140#endif /* MODULE */
141
142int __init isapnp_proc_init(void) 115int __init isapnp_proc_init(void)
143{ 116{
144 struct pnp_dev *dev; 117 struct pnp_dev *dev;
@@ -149,21 +122,3 @@ int __init isapnp_proc_init(void)
149 } 122 }
150 return 0; 123 return 0;
151} 124}
152
153#ifdef MODULE
154int __exit isapnp_proc_done(void)
155{
156 struct pnp_dev *dev;
157 struct pnp_bus *card;
158
159 isapnp_for_each_dev(dev) {
160 isapnp_proc_detach_device(dev);
161 }
162 isapnp_for_each_card(card) {
163 isapnp_proc_detach_bus(card);
164 }
165 if (isapnp_proc_bus_dir)
166 remove_proc_entry("isapnp", proc_bus);
167 return 0;
168}
169#endif /* MODULE */
diff --git a/drivers/pnp/manager.c b/drivers/pnp/manager.c
index 3bda513a6bd3..0826287eef53 100644
--- a/drivers/pnp/manager.c
+++ b/drivers/pnp/manager.c
@@ -21,9 +21,6 @@ static int pnp_assign_port(struct pnp_dev *dev, struct pnp_port *rule, int idx)
21 resource_size_t *start, *end; 21 resource_size_t *start, *end;
22 unsigned long *flags; 22 unsigned long *flags;
23 23
24 if (!dev || !rule)
25 return -EINVAL;
26
27 if (idx >= PNP_MAX_PORT) { 24 if (idx >= PNP_MAX_PORT) {
28 pnp_err 25 pnp_err
29 ("More than 4 ports is incompatible with pnp specifications."); 26 ("More than 4 ports is incompatible with pnp specifications.");
@@ -66,9 +63,6 @@ static int pnp_assign_mem(struct pnp_dev *dev, struct pnp_mem *rule, int idx)
66 resource_size_t *start, *end; 63 resource_size_t *start, *end;
67 unsigned long *flags; 64 unsigned long *flags;
68 65
69 if (!dev || !rule)
70 return -EINVAL;
71
72 if (idx >= PNP_MAX_MEM) { 66 if (idx >= PNP_MAX_MEM) {
73 pnp_err 67 pnp_err
74 ("More than 8 mems is incompatible with pnp specifications."); 68 ("More than 8 mems is incompatible with pnp specifications.");
@@ -127,9 +121,6 @@ static int pnp_assign_irq(struct pnp_dev *dev, struct pnp_irq *rule, int idx)
127 5, 10, 11, 12, 9, 14, 15, 7, 3, 4, 13, 0, 1, 6, 8, 2 121 5, 10, 11, 12, 9, 14, 15, 7, 3, 4, 13, 0, 1, 6, 8, 2
128 }; 122 };
129 123
130 if (!dev || !rule)
131 return -EINVAL;
132
133 if (idx >= PNP_MAX_IRQ) { 124 if (idx >= PNP_MAX_IRQ) {
134 pnp_err 125 pnp_err
135 ("More than 2 irqs is incompatible with pnp specifications."); 126 ("More than 2 irqs is incompatible with pnp specifications.");
@@ -181,9 +172,6 @@ static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
181 1, 3, 5, 6, 7, 0, 2, 4 172 1, 3, 5, 6, 7, 0, 2, 4
182 }; 173 };
183 174
184 if (!dev || !rule)
185 return -EINVAL;
186
187 if (idx >= PNP_MAX_DMA) { 175 if (idx >= PNP_MAX_DMA) {
188 pnp_err 176 pnp_err
189 ("More than 2 dmas is incompatible with pnp specifications."); 177 ("More than 2 dmas is incompatible with pnp specifications.");
@@ -390,7 +378,7 @@ static int pnp_assign_resources(struct pnp_dev *dev, int depnum)
390 up(&pnp_res_mutex); 378 up(&pnp_res_mutex);
391 return 1; 379 return 1;
392 380
393 fail: 381fail:
394 pnp_clean_resource_table(&dev->res); 382 pnp_clean_resource_table(&dev->res);
395 up(&pnp_res_mutex); 383 up(&pnp_res_mutex);
396 return 0; 384 return 0;
@@ -410,8 +398,6 @@ int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res,
410 int i; 398 int i;
411 struct pnp_resource_table *bak; 399 struct pnp_resource_table *bak;
412 400
413 if (!dev || !res)
414 return -EINVAL;
415 if (!pnp_can_configure(dev)) 401 if (!pnp_can_configure(dev))
416 return -ENODEV; 402 return -ENODEV;
417 bak = pnp_alloc(sizeof(struct pnp_resource_table)); 403 bak = pnp_alloc(sizeof(struct pnp_resource_table));
@@ -444,7 +430,7 @@ int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res,
444 kfree(bak); 430 kfree(bak);
445 return 0; 431 return 0;
446 432
447 fail: 433fail:
448 dev->res = *bak; 434 dev->res = *bak;
449 up(&pnp_res_mutex); 435 up(&pnp_res_mutex);
450 kfree(bak); 436 kfree(bak);
@@ -460,9 +446,6 @@ int pnp_auto_config_dev(struct pnp_dev *dev)
460 struct pnp_option *dep; 446 struct pnp_option *dep;
461 int i = 1; 447 int i = 1;
462 448
463 if (!dev)
464 return -EINVAL;
465
466 if (!pnp_can_configure(dev)) { 449 if (!pnp_can_configure(dev)) {
467 pnp_dbg("Device %s does not support resource configuration.", 450 pnp_dbg("Device %s does not support resource configuration.",
468 dev->dev.bus_id); 451 dev->dev.bus_id);
@@ -541,8 +524,6 @@ int pnp_activate_dev(struct pnp_dev *dev)
541{ 524{
542 int error; 525 int error;
543 526
544 if (!dev)
545 return -EINVAL;
546 if (dev->active) 527 if (dev->active)
547 return 0; /* the device is already active */ 528 return 0; /* the device is already active */
548 529
@@ -568,8 +549,6 @@ int pnp_disable_dev(struct pnp_dev *dev)
568{ 549{
569 int error; 550 int error;
570 551
571 if (!dev)
572 return -EINVAL;
573 if (!dev->active) 552 if (!dev->active)
574 return 0; /* the device is already disabled */ 553 return 0; /* the device is already disabled */
575 554
@@ -596,8 +575,6 @@ int pnp_disable_dev(struct pnp_dev *dev)
596void pnp_resource_change(struct resource *resource, resource_size_t start, 575void pnp_resource_change(struct resource *resource, resource_size_t start,
597 resource_size_t size) 576 resource_size_t size)
598{ 577{
599 if (resource == NULL)
600 return;
601 resource->flags &= ~(IORESOURCE_AUTO | IORESOURCE_UNSET); 578 resource->flags &= ~(IORESOURCE_AUTO | IORESOURCE_UNSET);
602 resource->start = start; 579 resource->start = start;
603 resource->end = start + size - 1; 580 resource->end = start + size - 1;
diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c
index 616fc72190bf..a5a372222d69 100644
--- a/drivers/pnp/pnpacpi/core.c
+++ b/drivers/pnp/pnpacpi/core.c
@@ -248,9 +248,9 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
248 num++; 248 num++;
249 249
250 return AE_OK; 250 return AE_OK;
251 err1: 251err1:
252 kfree(dev_id); 252 kfree(dev_id);
253 err: 253err:
254 kfree(dev); 254 kfree(dev);
255 return -EINVAL; 255 return -EINVAL;
256} 256}
diff --git a/drivers/pnp/pnpacpi/rsparser.c b/drivers/pnp/pnpacpi/rsparser.c
index ce5027feb3da..0e3b8d0ff06b 100644
--- a/drivers/pnp/pnpacpi/rsparser.c
+++ b/drivers/pnp/pnpacpi/rsparser.c
@@ -34,19 +34,17 @@
34 */ 34 */
35static int irq_flags(int triggering, int polarity) 35static int irq_flags(int triggering, int polarity)
36{ 36{
37 int flag;
38 if (triggering == ACPI_LEVEL_SENSITIVE) { 37 if (triggering == ACPI_LEVEL_SENSITIVE) {
39 if (polarity == ACPI_ACTIVE_LOW) 38 if (polarity == ACPI_ACTIVE_LOW)
40 flag = IORESOURCE_IRQ_LOWLEVEL; 39 return IORESOURCE_IRQ_LOWLEVEL;
41 else 40 else
42 flag = IORESOURCE_IRQ_HIGHLEVEL; 41 return IORESOURCE_IRQ_HIGHLEVEL;
43 } else { 42 } else {
44 if (polarity == ACPI_ACTIVE_LOW) 43 if (polarity == ACPI_ACTIVE_LOW)
45 flag = IORESOURCE_IRQ_LOWEDGE; 44 return IORESOURCE_IRQ_LOWEDGE;
46 else 45 else
47 flag = IORESOURCE_IRQ_HIGHEDGE; 46 return IORESOURCE_IRQ_HIGHEDGE;
48 } 47 }
49 return flag;
50} 48}
51 49
52static void decode_irq_flags(int flag, int *triggering, int *polarity) 50static void decode_irq_flags(int flag, int *triggering, int *polarity)
@@ -242,8 +240,7 @@ static void pnpacpi_parse_allocated_address_space(struct pnp_resource_table *res
242static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res, 240static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
243 void *data) 241 void *data)
244{ 242{
245 struct pnp_resource_table *res_table = 243 struct pnp_resource_table *res_table = data;
246 (struct pnp_resource_table *)data;
247 int i; 244 int i;
248 245
249 switch (res->type) { 246 switch (res->type) {
@@ -566,8 +563,7 @@ static acpi_status pnpacpi_option_resource(struct acpi_resource *res,
566 void *data) 563 void *data)
567{ 564{
568 int priority = 0; 565 int priority = 0;
569 struct acpipnp_parse_option_s *parse_data = 566 struct acpipnp_parse_option_s *parse_data = data;
570 (struct acpipnp_parse_option_s *)data;
571 struct pnp_dev *dev = parse_data->dev; 567 struct pnp_dev *dev = parse_data->dev;
572 struct pnp_option *option = parse_data->option; 568 struct pnp_option *option = parse_data->option;
573 569
@@ -705,7 +701,7 @@ static int pnpacpi_supported_resource(struct acpi_resource *res)
705static acpi_status pnpacpi_count_resources(struct acpi_resource *res, 701static acpi_status pnpacpi_count_resources(struct acpi_resource *res,
706 void *data) 702 void *data)
707{ 703{
708 int *res_cnt = (int *)data; 704 int *res_cnt = data;
709 705
710 if (pnpacpi_supported_resource(res)) 706 if (pnpacpi_supported_resource(res))
711 (*res_cnt)++; 707 (*res_cnt)++;
@@ -714,7 +710,7 @@ static acpi_status pnpacpi_count_resources(struct acpi_resource *res,
714 710
715static acpi_status pnpacpi_type_resources(struct acpi_resource *res, void *data) 711static acpi_status pnpacpi_type_resources(struct acpi_resource *res, void *data)
716{ 712{
717 struct acpi_resource **resource = (struct acpi_resource **)data; 713 struct acpi_resource **resource = data;
718 714
719 if (pnpacpi_supported_resource(res)) { 715 if (pnpacpi_supported_resource(res)) {
720 (*resource)->type = res->type; 716 (*resource)->type = res->type;
@@ -886,8 +882,7 @@ int pnpacpi_encode_resources(struct pnp_resource_table *res_table,
886 int i = 0; 882 int i = 0;
887 /* pnpacpi_build_resource_template allocates extra mem */ 883 /* pnpacpi_build_resource_template allocates extra mem */
888 int res_cnt = (buffer->length - 1) / sizeof(struct acpi_resource) - 1; 884 int res_cnt = (buffer->length - 1) / sizeof(struct acpi_resource) - 1;
889 struct acpi_resource *resource = 885 struct acpi_resource *resource = buffer->pointer;
890 (struct acpi_resource *)buffer->pointer;
891 int port = 0, irq = 0, dma = 0, mem = 0; 886 int port = 0, irq = 0, dma = 0, mem = 0;
892 887
893 pnp_dbg("res cnt %d", res_cnt); 888 pnp_dbg("res cnt %d", res_cnt);
diff --git a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c
index 3692a099b45f..0691f473e9d4 100644
--- a/drivers/pnp/pnpbios/core.c
+++ b/drivers/pnp/pnpbios/core.c
@@ -419,7 +419,6 @@ static void __init build_devlist(void)
419static int pnpbios_disabled; 419static int pnpbios_disabled;
420int pnpbios_dont_use_current_config; 420int pnpbios_dont_use_current_config;
421 421
422#ifndef MODULE
423static int __init pnpbios_setup(char *str) 422static int __init pnpbios_setup(char *str)
424{ 423{
425 int invert; 424 int invert;
@@ -443,7 +442,6 @@ static int __init pnpbios_setup(char *str)
443} 442}
444 443
445__setup("pnpbios=", pnpbios_setup); 444__setup("pnpbios=", pnpbios_setup);
446#endif
447 445
448/* PnP BIOS signature: "$PnP" */ 446/* PnP BIOS signature: "$PnP" */
449#define PNP_SIGNATURE (('$' << 0) + ('P' << 8) + ('n' << 16) + ('P' << 24)) 447#define PNP_SIGNATURE (('$' << 0) + ('P' << 8) + ('n' << 16) + ('P' << 24))
@@ -591,6 +589,7 @@ subsys_initcall(pnpbios_init);
591static int __init pnpbios_thread_init(void) 589static int __init pnpbios_thread_init(void)
592{ 590{
593 struct task_struct *task; 591 struct task_struct *task;
592
594#if defined(CONFIG_PPC_MERGE) 593#if defined(CONFIG_PPC_MERGE)
595 if (check_legacy_ioport(PNPBIOS_BASE)) 594 if (check_legacy_ioport(PNPBIOS_BASE))
596 return 0; 595 return 0;
@@ -606,48 +605,7 @@ static int __init pnpbios_thread_init(void)
606 return 0; 605 return 0;
607} 606}
608 607
609#ifndef MODULE
610
611/* init/main.c calls pnpbios_init early */
612
613/* Start the kernel thread later: */ 608/* Start the kernel thread later: */
614module_init(pnpbios_thread_init); 609module_init(pnpbios_thread_init);
615 610
616#else
617
618/*
619 * N.B.: Building pnpbios as a module hasn't been fully implemented
620 */
621
622MODULE_LICENSE("GPL");
623
624static int __init pnpbios_init_all(void)
625{
626 int r;
627
628 r = pnpbios_init();
629 if (r)
630 return r;
631 r = pnpbios_thread_init();
632 if (r)
633 return r;
634 return 0;
635}
636
637static void __exit pnpbios_exit(void)
638{
639#ifdef CONFIG_HOTPLUG
640 unloading = 1;
641 wait_for_completion(&unload_sem);
642#endif
643 pnpbios_proc_exit();
644 /* We ought to free resources here */
645 return;
646}
647
648module_init(pnpbios_init_all);
649module_exit(pnpbios_exit);
650
651#endif
652
653EXPORT_SYMBOL(pnpbios_protocol); 611EXPORT_SYMBOL(pnpbios_protocol);
diff --git a/drivers/pnp/pnpbios/proc.c b/drivers/pnp/pnpbios/proc.c
index 9c8c07701b65..9d9841f24a85 100644
--- a/drivers/pnp/pnpbios/proc.c
+++ b/drivers/pnp/pnpbios/proc.c
@@ -212,7 +212,7 @@ static int proc_write_node(struct file *file, const char __user * buf,
212 goto out; 212 goto out;
213 } 213 }
214 ret = count; 214 ret = count;
215 out: 215out:
216 kfree(node); 216 kfree(node);
217 return ret; 217 return ret;
218} 218}
diff --git a/drivers/pnp/pnpbios/rsparser.c b/drivers/pnp/pnpbios/rsparser.c
index 04ecd7b67230..3fabf11b0027 100644
--- a/drivers/pnp/pnpbios/rsparser.c
+++ b/drivers/pnp/pnpbios/rsparser.c
@@ -238,7 +238,7 @@ static unsigned char *pnpbios_parse_allocated_resource_data(unsigned char *p,
238 break; 238 break;
239 239
240 default: /* an unkown tag */ 240 default: /* an unkown tag */
241 len_err: 241len_err:
242 printk(KERN_ERR 242 printk(KERN_ERR
243 "PnPBIOS: Unknown tag '0x%x', length '%d'.\n", 243 "PnPBIOS: Unknown tag '0x%x', length '%d'.\n",
244 tag, len); 244 tag, len);
@@ -298,6 +298,7 @@ static void pnpbios_parse_fixed_mem32_option(unsigned char *p, int size,
298 struct pnp_option *option) 298 struct pnp_option *option)
299{ 299{
300 struct pnp_mem *mem; 300 struct pnp_mem *mem;
301
301 mem = kzalloc(sizeof(struct pnp_mem), GFP_KERNEL); 302 mem = kzalloc(sizeof(struct pnp_mem), GFP_KERNEL);
302 if (!mem) 303 if (!mem)
303 return; 304 return;
@@ -468,7 +469,7 @@ static unsigned char *pnpbios_parse_resource_option_data(unsigned char *p,
468 return p + 2; 469 return p + 2;
469 470
470 default: /* an unkown tag */ 471 default: /* an unkown tag */
471 len_err: 472len_err:
472 printk(KERN_ERR 473 printk(KERN_ERR
473 "PnPBIOS: Unknown tag '0x%x', length '%d'.\n", 474 "PnPBIOS: Unknown tag '0x%x', length '%d'.\n",
474 tag, len); 475 tag, len);
@@ -562,7 +563,7 @@ static unsigned char *pnpbios_parse_compatible_ids(unsigned char *p,
562 break; 563 break;
563 564
564 default: /* an unkown tag */ 565 default: /* an unkown tag */
565 len_err: 566len_err:
566 printk(KERN_ERR 567 printk(KERN_ERR
567 "PnPBIOS: Unknown tag '0x%x', length '%d'.\n", 568 "PnPBIOS: Unknown tag '0x%x', length '%d'.\n",
568 tag, len); 569 tag, len);
@@ -756,7 +757,7 @@ static unsigned char *pnpbios_encode_allocated_resource_data(unsigned char *p,
756 break; 757 break;
757 758
758 default: /* an unkown tag */ 759 default: /* an unkown tag */
759 len_err: 760len_err:
760 printk(KERN_ERR 761 printk(KERN_ERR
761 "PnPBIOS: Unknown tag '0x%x', length '%d'.\n", 762 "PnPBIOS: Unknown tag '0x%x', length '%d'.\n",
762 tag, len); 763 tag, len);
diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c
index ea6ec14a0559..ef1286900db3 100644
--- a/drivers/pnp/resource.c
+++ b/drivers/pnp/resource.c
@@ -47,9 +47,6 @@ struct pnp_option *pnp_register_independent_option(struct pnp_dev *dev)
47{ 47{
48 struct pnp_option *option; 48 struct pnp_option *option;
49 49
50 if (!dev)
51 return NULL;
52
53 option = pnp_build_option(PNP_RES_PRIORITY_PREFERRED); 50 option = pnp_build_option(PNP_RES_PRIORITY_PREFERRED);
54 51
55 /* this should never happen but if it does we'll try to continue */ 52 /* this should never happen but if it does we'll try to continue */
@@ -64,9 +61,6 @@ struct pnp_option *pnp_register_dependent_option(struct pnp_dev *dev,
64{ 61{
65 struct pnp_option *option; 62 struct pnp_option *option;
66 63
67 if (!dev)
68 return NULL;
69
70 option = pnp_build_option(priority); 64 option = pnp_build_option(priority);
71 65
72 if (dev->dependent) { 66 if (dev->dependent) {
@@ -83,11 +77,6 @@ int pnp_register_irq_resource(struct pnp_option *option, struct pnp_irq *data)
83{ 77{
84 struct pnp_irq *ptr; 78 struct pnp_irq *ptr;
85 79
86 if (!option)
87 return -EINVAL;
88 if (!data)
89 return -EINVAL;
90
91 ptr = option->irq; 80 ptr = option->irq;
92 while (ptr && ptr->next) 81 while (ptr && ptr->next)
93 ptr = ptr->next; 82 ptr = ptr->next;
@@ -112,11 +101,6 @@ int pnp_register_dma_resource(struct pnp_option *option, struct pnp_dma *data)
112{ 101{
113 struct pnp_dma *ptr; 102 struct pnp_dma *ptr;
114 103
115 if (!option)
116 return -EINVAL;
117 if (!data)
118 return -EINVAL;
119
120 ptr = option->dma; 104 ptr = option->dma;
121 while (ptr && ptr->next) 105 while (ptr && ptr->next)
122 ptr = ptr->next; 106 ptr = ptr->next;
@@ -132,11 +116,6 @@ int pnp_register_port_resource(struct pnp_option *option, struct pnp_port *data)
132{ 116{
133 struct pnp_port *ptr; 117 struct pnp_port *ptr;
134 118
135 if (!option)
136 return -EINVAL;
137 if (!data)
138 return -EINVAL;
139
140 ptr = option->port; 119 ptr = option->port;
141 while (ptr && ptr->next) 120 while (ptr && ptr->next)
142 ptr = ptr->next; 121 ptr = ptr->next;
@@ -152,11 +131,6 @@ int pnp_register_mem_resource(struct pnp_option *option, struct pnp_mem *data)
152{ 131{
153 struct pnp_mem *ptr; 132 struct pnp_mem *ptr;
154 133
155 if (!option)
156 return -EINVAL;
157 if (!data)
158 return -EINVAL;
159
160 ptr = option->mem; 134 ptr = option->mem;
161 while (ptr && ptr->next) 135 while (ptr && ptr->next)
162 ptr = ptr->next; 136 ptr = ptr->next;
diff --git a/drivers/rtc/rtc-m41t80.c b/drivers/rtc/rtc-m41t80.c
index 80c4a8463065..1cb33cac1237 100644
--- a/drivers/rtc/rtc-m41t80.c
+++ b/drivers/rtc/rtc-m41t80.c
@@ -892,7 +892,7 @@ static int m41t80_remove(struct i2c_client *client)
892 892
893static struct i2c_driver m41t80_driver = { 893static struct i2c_driver m41t80_driver = {
894 .driver = { 894 .driver = {
895 .name = "m41t80", 895 .name = "rtc-m41t80",
896 }, 896 },
897 .probe = m41t80_probe, 897 .probe = m41t80_probe,
898 .remove = m41t80_remove, 898 .remove = m41t80_remove,
diff --git a/drivers/rtc/rtc-max6902.c b/drivers/rtc/rtc-max6902.c
index d94170728075..3e183cfee10f 100644
--- a/drivers/rtc/rtc-max6902.c
+++ b/drivers/rtc/rtc-max6902.c
@@ -13,7 +13,7 @@
13 * 13 *
14 * 24-May-2006: Raphael Assenat <raph@8d.com> 14 * 24-May-2006: Raphael Assenat <raph@8d.com>
15 * - Major rework 15 * - Major rework
16 * Converted to rtc_device and uses the SPI layer. 16 * Converted to rtc_device and uses the SPI layer.
17 * 17 *
18 * ??-???-2005: Someone at Compulab 18 * ??-???-2005: Someone at Compulab
19 * - Initial driver creation. 19 * - Initial driver creation.
@@ -259,11 +259,11 @@ static int __devexit max6902_remove(struct spi_device *spi)
259 259
260static struct spi_driver max6902_driver = { 260static struct spi_driver max6902_driver = {
261 .driver = { 261 .driver = {
262 .name = "max6902", 262 .name = "rtc-max6902",
263 .bus = &spi_bus_type, 263 .bus = &spi_bus_type,
264 .owner = THIS_MODULE, 264 .owner = THIS_MODULE,
265 }, 265 },
266 .probe = max6902_probe, 266 .probe = max6902_probe,
267 .remove = __devexit_p(max6902_remove), 267 .remove = __devexit_p(max6902_remove),
268}; 268};
269 269
diff --git a/drivers/rtc/rtc-rs5c348.c b/drivers/rtc/rtc-rs5c348.c
index f50f3fc353cd..839462659afa 100644
--- a/drivers/rtc/rtc-rs5c348.c
+++ b/drivers/rtc/rtc-rs5c348.c
@@ -226,7 +226,7 @@ static int __devexit rs5c348_remove(struct spi_device *spi)
226 226
227static struct spi_driver rs5c348_driver = { 227static struct spi_driver rs5c348_driver = {
228 .driver = { 228 .driver = {
229 .name = "rs5c348", 229 .name = "rtc-rs5c348",
230 .bus = &spi_bus_type, 230 .bus = &spi_bus_type,
231 .owner = THIS_MODULE, 231 .owner = THIS_MODULE,
232 }, 232 },
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c
index eccac1c3b71b..d32c60dbdd82 100644
--- a/drivers/s390/block/dasd_diag.c
+++ b/drivers/s390/block/dasd_diag.c
@@ -24,6 +24,7 @@
24#include <asm/s390_ext.h> 24#include <asm/s390_ext.h>
25#include <asm/todclk.h> 25#include <asm/todclk.h>
26#include <asm/vtoc.h> 26#include <asm/vtoc.h>
27#include <asm/diag.h>
27 28
28#include "dasd_int.h" 29#include "dasd_int.h"
29#include "dasd_diag.h" 30#include "dasd_diag.h"
diff --git a/drivers/s390/char/raw3270.c b/drivers/s390/char/raw3270.c
index 4f2f81b16cfa..2edd5fb6d3dc 100644
--- a/drivers/s390/char/raw3270.c
+++ b/drivers/s390/char/raw3270.c
@@ -21,6 +21,7 @@
21#include <asm/ccwdev.h> 21#include <asm/ccwdev.h>
22#include <asm/cio.h> 22#include <asm/cio.h>
23#include <asm/ebcdic.h> 23#include <asm/ebcdic.h>
24#include <asm/diag.h>
24 25
25#include "raw3270.h" 26#include "raw3270.h"
26 27
diff --git a/drivers/s390/char/vmur.c b/drivers/s390/char/vmur.c
index 04b19bdc09da..d70a6e65bf14 100644
--- a/drivers/s390/char/vmur.c
+++ b/drivers/s390/char/vmur.c
@@ -14,6 +14,7 @@
14#include <asm/cio.h> 14#include <asm/cio.h>
15#include <asm/ccwdev.h> 15#include <asm/ccwdev.h>
16#include <asm/debug.h> 16#include <asm/debug.h>
17#include <asm/diag.h>
17 18
18#include "vmur.h" 19#include "vmur.h"
19 20
@@ -68,8 +69,26 @@ static struct ccw_driver ur_driver = {
68 .set_offline = ur_set_offline, 69 .set_offline = ur_set_offline,
69}; 70};
70 71
72static DEFINE_MUTEX(vmur_mutex);
73
71/* 74/*
72 * Allocation, freeing, getting and putting of urdev structures 75 * Allocation, freeing, getting and putting of urdev structures
76 *
77 * Each ur device (urd) contains a reference to its corresponding ccw device
78 * (cdev) using the urd->cdev pointer. Each ccw device has a reference to the
79 * ur device using the cdev->dev.driver_data pointer.
80 *
81 * urd references:
82 * - ur_probe gets a urd reference, ur_remove drops the reference
83 * (cdev->dev.driver_data)
84 * - ur_open gets a urd reference, ur_relase drops the reference
85 * (urf->urd)
86 *
87 * cdev references:
88 * - urdev_alloc get a cdev reference (urd->cdev)
89 * - urdev_free drops the cdev reference (urd->cdev)
90 *
91 * Setting and clearing of cdev->dev.driver_data is protected by the ccwdev lock
73 */ 92 */
74static struct urdev *urdev_alloc(struct ccw_device *cdev) 93static struct urdev *urdev_alloc(struct ccw_device *cdev)
75{ 94{
@@ -78,42 +97,61 @@ static struct urdev *urdev_alloc(struct ccw_device *cdev)
78 urd = kzalloc(sizeof(struct urdev), GFP_KERNEL); 97 urd = kzalloc(sizeof(struct urdev), GFP_KERNEL);
79 if (!urd) 98 if (!urd)
80 return NULL; 99 return NULL;
81 urd->cdev = cdev;
82 urd->reclen = cdev->id.driver_info; 100 urd->reclen = cdev->id.driver_info;
83 ccw_device_get_id(cdev, &urd->dev_id); 101 ccw_device_get_id(cdev, &urd->dev_id);
84 mutex_init(&urd->io_mutex); 102 mutex_init(&urd->io_mutex);
85 mutex_init(&urd->open_mutex); 103 mutex_init(&urd->open_mutex);
104 atomic_set(&urd->ref_count, 1);
105 urd->cdev = cdev;
106 get_device(&cdev->dev);
86 return urd; 107 return urd;
87} 108}
88 109
89static void urdev_free(struct urdev *urd) 110static void urdev_free(struct urdev *urd)
90{ 111{
112 TRACE("urdev_free: %p\n", urd);
113 if (urd->cdev)
114 put_device(&urd->cdev->dev);
91 kfree(urd); 115 kfree(urd);
92} 116}
93 117
94/* 118static void urdev_get(struct urdev *urd)
95 * This is how the character device driver gets a reference to a 119{
96 * ur device. When this call returns successfully, a reference has 120 atomic_inc(&urd->ref_count);
97 * been taken (by get_device) on the underlying kobject. The recipient 121}
98 * of this urdev pointer must eventually drop it with urdev_put(urd) 122
99 * which does the corresponding put_device(). 123static struct urdev *urdev_get_from_cdev(struct ccw_device *cdev)
100 */ 124{
125 struct urdev *urd;
126 unsigned long flags;
127
128 spin_lock_irqsave(get_ccwdev_lock(cdev), flags);
129 urd = cdev->dev.driver_data;
130 if (urd)
131 urdev_get(urd);
132 spin_unlock_irqrestore(get_ccwdev_lock(cdev), flags);
133 return urd;
134}
135
101static struct urdev *urdev_get_from_devno(u16 devno) 136static struct urdev *urdev_get_from_devno(u16 devno)
102{ 137{
103 char bus_id[16]; 138 char bus_id[16];
104 struct ccw_device *cdev; 139 struct ccw_device *cdev;
140 struct urdev *urd;
105 141
106 sprintf(bus_id, "0.0.%04x", devno); 142 sprintf(bus_id, "0.0.%04x", devno);
107 cdev = get_ccwdev_by_busid(&ur_driver, bus_id); 143 cdev = get_ccwdev_by_busid(&ur_driver, bus_id);
108 if (!cdev) 144 if (!cdev)
109 return NULL; 145 return NULL;
110 146 urd = urdev_get_from_cdev(cdev);
111 return cdev->dev.driver_data; 147 put_device(&cdev->dev);
148 return urd;
112} 149}
113 150
114static void urdev_put(struct urdev *urd) 151static void urdev_put(struct urdev *urd)
115{ 152{
116 put_device(&urd->cdev->dev); 153 if (atomic_dec_and_test(&urd->ref_count))
154 urdev_free(urd);
117} 155}
118 156
119/* 157/*
@@ -245,6 +283,7 @@ static void ur_int_handler(struct ccw_device *cdev, unsigned long intparm,
245 return; 283 return;
246 } 284 }
247 urd = cdev->dev.driver_data; 285 urd = cdev->dev.driver_data;
286 BUG_ON(!urd);
248 /* On special conditions irb is an error pointer */ 287 /* On special conditions irb is an error pointer */
249 if (IS_ERR(irb)) 288 if (IS_ERR(irb))
250 urd->io_request_rc = PTR_ERR(irb); 289 urd->io_request_rc = PTR_ERR(irb);
@@ -262,9 +301,15 @@ static void ur_int_handler(struct ccw_device *cdev, unsigned long intparm,
262static ssize_t ur_attr_reclen_show(struct device *dev, 301static ssize_t ur_attr_reclen_show(struct device *dev,
263 struct device_attribute *attr, char *buf) 302 struct device_attribute *attr, char *buf)
264{ 303{
265 struct urdev *urd = dev->driver_data; 304 struct urdev *urd;
305 int rc;
266 306
267 return sprintf(buf, "%zu\n", urd->reclen); 307 urd = urdev_get_from_cdev(to_ccwdev(dev));
308 if (!urd)
309 return -ENODEV;
310 rc = sprintf(buf, "%zu\n", urd->reclen);
311 urdev_put(urd);
312 return rc;
268} 313}
269 314
270static DEVICE_ATTR(reclen, 0444, ur_attr_reclen_show, NULL); 315static DEVICE_ATTR(reclen, 0444, ur_attr_reclen_show, NULL);
@@ -379,31 +424,6 @@ static ssize_t ur_write(struct file *file, const char __user *udata,
379 return do_write(urf->urd, udata, count, urf->dev_reclen, ppos); 424 return do_write(urf->urd, udata, count, urf->dev_reclen, ppos);
380} 425}
381 426
382static int do_diag_14(unsigned long rx, unsigned long ry1,
383 unsigned long subcode)
384{
385 register unsigned long _ry1 asm("2") = ry1;
386 register unsigned long _ry2 asm("3") = subcode;
387 int rc = 0;
388
389 asm volatile(
390#ifdef CONFIG_64BIT
391 " sam31\n"
392 " diag %2,2,0x14\n"
393 " sam64\n"
394#else
395 " diag %2,2,0x14\n"
396#endif
397 " ipm %0\n"
398 " srl %0,28\n"
399 : "=d" (rc), "+d" (_ry2)
400 : "d" (rx), "d" (_ry1)
401 : "cc");
402
403 TRACE("diag 14: subcode=0x%lx, cc=%i\n", subcode, rc);
404 return rc;
405}
406
407/* 427/*
408 * diagnose code 0x14 subcode 0x0028 - position spool file to designated 428 * diagnose code 0x14 subcode 0x0028 - position spool file to designated
409 * record 429 * record
@@ -415,7 +435,7 @@ static int diag_position_to_record(int devno, int record)
415{ 435{
416 int cc; 436 int cc;
417 437
418 cc = do_diag_14(record, devno, 0x28); 438 cc = diag14(record, devno, 0x28);
419 switch (cc) { 439 switch (cc) {
420 case 0: 440 case 0:
421 return 0; 441 return 0;
@@ -440,7 +460,7 @@ static int diag_read_file(int devno, char *buf)
440{ 460{
441 int cc; 461 int cc;
442 462
443 cc = do_diag_14((unsigned long) buf, devno, 0x00); 463 cc = diag14((unsigned long) buf, devno, 0x00);
444 switch (cc) { 464 switch (cc) {
445 case 0: 465 case 0:
446 return 0; 466 return 0;
@@ -533,7 +553,7 @@ static int diag_read_next_file_info(struct file_control_block *buf, int spid)
533{ 553{
534 int cc; 554 int cc;
535 555
536 cc = do_diag_14((unsigned long) buf, spid, 0xfff); 556 cc = diag14((unsigned long) buf, spid, 0xfff);
537 switch (cc) { 557 switch (cc) {
538 case 0: 558 case 0:
539 return 0; 559 return 0;
@@ -750,64 +770,63 @@ static struct file_operations ur_fops = {
750 770
751/* 771/*
752 * ccw_device infrastructure: 772 * ccw_device infrastructure:
753 * ur_probe gets its own ref to the device (i.e. get_device), 773 * ur_probe creates the struct urdev (with refcount = 1), the device
754 * creates the struct urdev, the device attributes, sets up 774 * attributes, sets up the interrupt handler and validates the virtual
755 * the interrupt handler and validates the virtual unit record device. 775 * unit record device.
756 * ur_remove removes the device attributes, frees the struct urdev 776 * ur_remove removes the device attributes and drops the reference to
757 * and drops (put_device) the ref to the device we got in ur_probe. 777 * struct urdev.
778 *
779 * ur_probe, ur_remove, ur_set_online and ur_set_offline are serialized
780 * by the vmur_mutex lock.
781 *
782 * urd->char_device is used as indication that the online function has
783 * been completed successfully.
758 */ 784 */
759static int ur_probe(struct ccw_device *cdev) 785static int ur_probe(struct ccw_device *cdev)
760{ 786{
761 struct urdev *urd; 787 struct urdev *urd;
762 int rc; 788 int rc;
763 789
764 TRACE("ur_probe: cdev=%p state=%d\n", cdev, *(int *) cdev->private); 790 TRACE("ur_probe: cdev=%p\n", cdev);
765
766 if (!get_device(&cdev->dev))
767 return -ENODEV;
768 791
792 mutex_lock(&vmur_mutex);
769 urd = urdev_alloc(cdev); 793 urd = urdev_alloc(cdev);
770 if (!urd) { 794 if (!urd) {
771 rc = -ENOMEM; 795 rc = -ENOMEM;
772 goto fail; 796 goto fail_unlock;
773 } 797 }
798
774 rc = ur_create_attributes(&cdev->dev); 799 rc = ur_create_attributes(&cdev->dev);
775 if (rc) { 800 if (rc) {
776 rc = -ENOMEM; 801 rc = -ENOMEM;
777 goto fail; 802 goto fail_urdev_put;
778 } 803 }
779 cdev->dev.driver_data = urd;
780 cdev->handler = ur_int_handler; 804 cdev->handler = ur_int_handler;
781 805
782 /* validate virtual unit record device */ 806 /* validate virtual unit record device */
783 urd->class = get_urd_class(urd); 807 urd->class = get_urd_class(urd);
784 if (urd->class < 0) { 808 if (urd->class < 0) {
785 rc = urd->class; 809 rc = urd->class;
786 goto fail; 810 goto fail_remove_attr;
787 } 811 }
788 if ((urd->class != DEV_CLASS_UR_I) && (urd->class != DEV_CLASS_UR_O)) { 812 if ((urd->class != DEV_CLASS_UR_I) && (urd->class != DEV_CLASS_UR_O)) {
789 rc = -ENOTSUPP; 813 rc = -ENOTSUPP;
790 goto fail; 814 goto fail_remove_attr;
791 } 815 }
816 spin_lock_irq(get_ccwdev_lock(cdev));
817 cdev->dev.driver_data = urd;
818 spin_unlock_irq(get_ccwdev_lock(cdev));
792 819
820 mutex_unlock(&vmur_mutex);
793 return 0; 821 return 0;
794 822
795fail: 823fail_remove_attr:
796 urdev_free(urd);
797 put_device(&cdev->dev);
798 return rc;
799}
800
801static void ur_remove(struct ccw_device *cdev)
802{
803 struct urdev *urd = cdev->dev.driver_data;
804
805 TRACE("ur_remove\n");
806 if (cdev->online)
807 ur_set_offline(cdev);
808 ur_remove_attributes(&cdev->dev); 824 ur_remove_attributes(&cdev->dev);
809 urdev_free(urd); 825fail_urdev_put:
810 put_device(&cdev->dev); 826 urdev_put(urd);
827fail_unlock:
828 mutex_unlock(&vmur_mutex);
829 return rc;
811} 830}
812 831
813static int ur_set_online(struct ccw_device *cdev) 832static int ur_set_online(struct ccw_device *cdev)
@@ -816,20 +835,29 @@ static int ur_set_online(struct ccw_device *cdev)
816 int minor, major, rc; 835 int minor, major, rc;
817 char node_id[16]; 836 char node_id[16];
818 837
819 TRACE("ur_set_online: cdev=%p state=%d\n", cdev, 838 TRACE("ur_set_online: cdev=%p\n", cdev);
820 *(int *) cdev->private);
821 839
822 if (!try_module_get(ur_driver.owner)) 840 mutex_lock(&vmur_mutex);
823 return -EINVAL; 841 urd = urdev_get_from_cdev(cdev);
842 if (!urd) {
843 /* ur_remove already deleted our urd */
844 rc = -ENODEV;
845 goto fail_unlock;
846 }
847
848 if (urd->char_device) {
849 /* Another ur_set_online was faster */
850 rc = -EBUSY;
851 goto fail_urdev_put;
852 }
824 853
825 urd = (struct urdev *) cdev->dev.driver_data;
826 minor = urd->dev_id.devno; 854 minor = urd->dev_id.devno;
827 major = MAJOR(ur_first_dev_maj_min); 855 major = MAJOR(ur_first_dev_maj_min);
828 856
829 urd->char_device = cdev_alloc(); 857 urd->char_device = cdev_alloc();
830 if (!urd->char_device) { 858 if (!urd->char_device) {
831 rc = -ENOMEM; 859 rc = -ENOMEM;
832 goto fail_module_put; 860 goto fail_urdev_put;
833 } 861 }
834 862
835 cdev_init(urd->char_device, &ur_fops); 863 cdev_init(urd->char_device, &ur_fops);
@@ -858,29 +886,79 @@ static int ur_set_online(struct ccw_device *cdev)
858 TRACE("ur_set_online: device_create rc=%d\n", rc); 886 TRACE("ur_set_online: device_create rc=%d\n", rc);
859 goto fail_free_cdev; 887 goto fail_free_cdev;
860 } 888 }
861 889 urdev_put(urd);
890 mutex_unlock(&vmur_mutex);
862 return 0; 891 return 0;
863 892
864fail_free_cdev: 893fail_free_cdev:
865 cdev_del(urd->char_device); 894 cdev_del(urd->char_device);
866fail_module_put: 895 urd->char_device = NULL;
867 module_put(ur_driver.owner); 896fail_urdev_put:
868 897 urdev_put(urd);
898fail_unlock:
899 mutex_unlock(&vmur_mutex);
869 return rc; 900 return rc;
870} 901}
871 902
872static int ur_set_offline(struct ccw_device *cdev) 903static int ur_set_offline_force(struct ccw_device *cdev, int force)
873{ 904{
874 struct urdev *urd; 905 struct urdev *urd;
906 int rc;
875 907
876 TRACE("ur_set_offline: cdev=%p cdev->private=%p state=%d\n", 908 TRACE("ur_set_offline: cdev=%p\n", cdev);
877 cdev, cdev->private, *(int *) cdev->private); 909 urd = urdev_get_from_cdev(cdev);
878 urd = (struct urdev *) cdev->dev.driver_data; 910 if (!urd)
911 /* ur_remove already deleted our urd */
912 return -ENODEV;
913 if (!urd->char_device) {
914 /* Another ur_set_offline was faster */
915 rc = -EBUSY;
916 goto fail_urdev_put;
917 }
918 if (!force && (atomic_read(&urd->ref_count) > 2)) {
919 /* There is still a user of urd (e.g. ur_open) */
920 TRACE("ur_set_offline: BUSY\n");
921 rc = -EBUSY;
922 goto fail_urdev_put;
923 }
879 device_destroy(vmur_class, urd->char_device->dev); 924 device_destroy(vmur_class, urd->char_device->dev);
880 cdev_del(urd->char_device); 925 cdev_del(urd->char_device);
881 module_put(ur_driver.owner); 926 urd->char_device = NULL;
927 rc = 0;
882 928
883 return 0; 929fail_urdev_put:
930 urdev_put(urd);
931 return rc;
932}
933
934static int ur_set_offline(struct ccw_device *cdev)
935{
936 int rc;
937
938 mutex_lock(&vmur_mutex);
939 rc = ur_set_offline_force(cdev, 0);
940 mutex_unlock(&vmur_mutex);
941 return rc;
942}
943
944static void ur_remove(struct ccw_device *cdev)
945{
946 unsigned long flags;
947
948 TRACE("ur_remove\n");
949
950 mutex_lock(&vmur_mutex);
951
952 if (cdev->online)
953 ur_set_offline_force(cdev, 1);
954 ur_remove_attributes(&cdev->dev);
955
956 spin_lock_irqsave(get_ccwdev_lock(cdev), flags);
957 urdev_put(cdev->dev.driver_data);
958 cdev->dev.driver_data = NULL;
959 spin_unlock_irqrestore(get_ccwdev_lock(cdev), flags);
960
961 mutex_unlock(&vmur_mutex);
884} 962}
885 963
886/* 964/*
diff --git a/drivers/s390/char/vmur.h b/drivers/s390/char/vmur.h
index 2b3c564e0472..fa959644735a 100644
--- a/drivers/s390/char/vmur.h
+++ b/drivers/s390/char/vmur.h
@@ -70,6 +70,7 @@ struct urdev {
70 size_t reclen; /* Record length for *write* CCWs */ 70 size_t reclen; /* Record length for *write* CCWs */
71 int class; /* VM device class */ 71 int class; /* VM device class */
72 int io_request_rc; /* return code from I/O request */ 72 int io_request_rc; /* return code from I/O request */
73 atomic_t ref_count; /* reference counter */
73}; 74};
74 75
75/* 76/*
diff --git a/drivers/s390/cio/cmf.c b/drivers/s390/cio/cmf.c
index 02fd00b55e1b..34a796913b06 100644
--- a/drivers/s390/cio/cmf.c
+++ b/drivers/s390/cio/cmf.c
@@ -594,6 +594,9 @@ alloc_cmb (struct ccw_device *cdev)
594 free_pages((unsigned long)mem, get_order(size)); 594 free_pages((unsigned long)mem, get_order(size));
595 } else if (!mem) { 595 } else if (!mem) {
596 /* no luck */ 596 /* no luck */
597 printk(KERN_WARNING "cio: failed to allocate area "
598 "for measuring %d subchannels\n",
599 cmb_area.num_channels);
597 ret = -ENOMEM; 600 ret = -ENOMEM;
598 goto out; 601 goto out;
599 } else { 602 } else {
@@ -1279,13 +1282,6 @@ init_cmf(void)
1279 case CMF_BASIC: 1282 case CMF_BASIC:
1280 format_string = "basic"; 1283 format_string = "basic";
1281 cmbops = &cmbops_basic; 1284 cmbops = &cmbops_basic;
1282 if (cmb_area.num_channels > 4096 || cmb_area.num_channels < 1) {
1283 printk(KERN_ERR "cio: Basic channel measurement "
1284 "facility can only use 1 to 4096 devices\n"
1285 KERN_ERR "when the cmf driver is built"
1286 " as a loadable module\n");
1287 return 1;
1288 }
1289 break; 1285 break;
1290 case CMF_EXTENDED: 1286 case CMF_EXTENDED:
1291 format_string = "extended"; 1287 format_string = "extended";
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index 297659fa0e26..e44d92eac8e9 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -117,7 +117,10 @@ static int ccw_uevent(struct device *dev, char **envp, int num_envp,
117 snprint_alias(modalias_buf, sizeof(modalias_buf), id, ""); 117 snprint_alias(modalias_buf, sizeof(modalias_buf), id, "");
118 ret = add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len, 118 ret = add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len,
119 "MODALIAS=%s", modalias_buf); 119 "MODALIAS=%s", modalias_buf);
120 return ret; 120 if (ret)
121 return ret;
122 envp[i] = NULL;
123 return 0;
121} 124}
122 125
123struct bus_type ccw_bus_type; 126struct bus_type ccw_bus_type;
diff --git a/drivers/s390/cio/device_id.c b/drivers/s390/cio/device_id.c
index 60b9347f7c92..f232832f2b22 100644
--- a/drivers/s390/cio/device_id.c
+++ b/drivers/s390/cio/device_id.c
@@ -17,6 +17,7 @@
17#include <asm/delay.h> 17#include <asm/delay.h>
18#include <asm/cio.h> 18#include <asm/cio.h>
19#include <asm/lowcore.h> 19#include <asm/lowcore.h>
20#include <asm/diag.h>
20 21
21#include "cio.h" 22#include "cio.h"
22#include "cio_debug.h" 23#include "cio_debug.h"
@@ -25,51 +26,6 @@
25#include "ioasm.h" 26#include "ioasm.h"
26 27
27/* 28/*
28 * diag210 is used under VM to get information about a virtual device
29 */
30int
31diag210(struct diag210 * addr)
32{
33 /*
34 * diag 210 needs its data below the 2GB border, so we
35 * use a static data area to be sure
36 */
37 static struct diag210 diag210_tmp;
38 static DEFINE_SPINLOCK(diag210_lock);
39 unsigned long flags;
40 int ccode;
41
42 spin_lock_irqsave(&diag210_lock, flags);
43 diag210_tmp = *addr;
44
45#ifdef CONFIG_64BIT
46 asm volatile(
47 " lhi %0,-1\n"
48 " sam31\n"
49 " diag %1,0,0x210\n"
50 "0: ipm %0\n"
51 " srl %0,28\n"
52 "1: sam64\n"
53 EX_TABLE(0b,1b)
54 : "=&d" (ccode) : "a" (&diag210_tmp) : "cc", "memory");
55#else
56 asm volatile(
57 " lhi %0,-1\n"
58 " diag %1,0,0x210\n"
59 "0: ipm %0\n"
60 " srl %0,28\n"
61 "1:\n"
62 EX_TABLE(0b,1b)
63 : "=&d" (ccode) : "a" (&diag210_tmp) : "cc", "memory");
64#endif
65
66 *addr = diag210_tmp;
67 spin_unlock_irqrestore(&diag210_lock, flags);
68
69 return ccode;
70}
71
72/*
73 * Input : 29 * Input :
74 * devno - device number 30 * devno - device number
75 * ps - pointer to sense ID data area 31 * ps - pointer to sense ID data area
@@ -349,5 +305,3 @@ ccw_device_sense_id_irq(struct ccw_device *cdev, enum dev_event dev_event)
349 break; 305 break;
350 } 306 }
351} 307}
352
353EXPORT_SYMBOL(diag210);
diff --git a/drivers/s390/cio/qdio.c b/drivers/s390/cio/qdio.c
index 03347aed2b3e..d8d479876ec7 100644
--- a/drivers/s390/cio/qdio.c
+++ b/drivers/s390/cio/qdio.c
@@ -195,6 +195,8 @@ qdio_do_eqbs(struct qdio_q *q, unsigned char *state,
195again: 195again:
196 ccq = do_eqbs(irq->sch_token, state, q_no, start, cnt); 196 ccq = do_eqbs(irq->sch_token, state, q_no, start, cnt);
197 rc = qdio_check_ccq(q, ccq); 197 rc = qdio_check_ccq(q, ccq);
198 if ((ccq == 96) && (tmp_cnt != *cnt))
199 rc = 0;
198 if (rc == 1) { 200 if (rc == 1) {
199 QDIO_DBF_TEXT5(1,trace,"eqAGAIN"); 201 QDIO_DBF_TEXT5(1,trace,"eqAGAIN");
200 goto again; 202 goto again;
@@ -740,7 +742,8 @@ qdio_get_outbound_buffer_frontier(struct qdio_q *q)
740 first_not_to_check=f+qdio_min(atomic_read(&q->number_of_buffers_used), 742 first_not_to_check=f+qdio_min(atomic_read(&q->number_of_buffers_used),
741 (QDIO_MAX_BUFFERS_PER_Q-1)); 743 (QDIO_MAX_BUFFERS_PER_Q-1));
742 744
743 if ((!q->is_iqdio_q)&&(!q->hydra_gives_outbound_pcis)) 745 if (((!q->is_iqdio_q) && (!q->hydra_gives_outbound_pcis)) ||
746 (q->queue_type == QDIO_IQDIO_QFMT_ASYNCH))
744 SYNC_MEMORY; 747 SYNC_MEMORY;
745 748
746check_next: 749check_next:
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index d2b3898b750a..6f2c71ef47ee 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -367,6 +367,7 @@ config SCSI_3W_9XXX
367config SCSI_7000FASST 367config SCSI_7000FASST
368 tristate "7000FASST SCSI support" 368 tristate "7000FASST SCSI support"
369 depends on ISA && SCSI && ISA_DMA_API 369 depends on ISA && SCSI && ISA_DMA_API
370 select CHECK_SIGNATURE
370 help 371 help
371 This driver supports the Western Digital 7000 SCSI host adapter 372 This driver supports the Western Digital 7000 SCSI host adapter
372 family. Some information is in the source: 373 family. Some information is in the source:
@@ -388,6 +389,7 @@ config SCSI_AHA152X
388 tristate "Adaptec AHA152X/2825 support" 389 tristate "Adaptec AHA152X/2825 support"
389 depends on ISA && SCSI && !64BIT 390 depends on ISA && SCSI && !64BIT
390 select SCSI_SPI_ATTRS 391 select SCSI_SPI_ATTRS
392 select CHECK_SIGNATURE
391 ---help--- 393 ---help---
392 This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825 394 This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825
393 SCSI host adapters. It also works for the AVA-1505, but the IRQ etc. 395 SCSI host adapters. It also works for the AVA-1505, but the IRQ etc.
@@ -583,6 +585,7 @@ config SCSI_DTC3280
583 tristate "DTC3180/3280 SCSI support" 585 tristate "DTC3180/3280 SCSI support"
584 depends on ISA && SCSI 586 depends on ISA && SCSI
585 select SCSI_SPI_ATTRS 587 select SCSI_SPI_ATTRS
588 select CHECK_SIGNATURE
586 help 589 help
587 This is support for DTC 3180/3280 SCSI Host Adapters. Please read 590 This is support for DTC 3180/3280 SCSI Host Adapters. Please read
588 the SCSI-HOWTO, available from 591 the SCSI-HOWTO, available from
@@ -657,6 +660,7 @@ config SCSI_EATA_PIO
657config SCSI_FUTURE_DOMAIN 660config SCSI_FUTURE_DOMAIN
658 tristate "Future Domain 16xx SCSI/AHA-2920A support" 661 tristate "Future Domain 16xx SCSI/AHA-2920A support"
659 depends on (ISA || PCI) && SCSI 662 depends on (ISA || PCI) && SCSI
663 select CHECK_SIGNATURE
660 ---help--- 664 ---help---
661 This is support for Future Domain's 16-bit SCSI host adapters 665 This is support for Future Domain's 16-bit SCSI host adapters
662 (TMC-1660/1680, TMC-1650/1670, TMC-3260, TMC-1610M/MER/MEX) and 666 (TMC-1660/1680, TMC-1650/1670, TMC-3260, TMC-1610M/MER/MEX) and
@@ -1324,6 +1328,7 @@ config SCSI_LPFC
1324config SCSI_SEAGATE 1328config SCSI_SEAGATE
1325 tristate "Seagate ST-02 and Future Domain TMC-8xx SCSI support" 1329 tristate "Seagate ST-02 and Future Domain TMC-8xx SCSI support"
1326 depends on X86 && ISA && SCSI 1330 depends on X86 && ISA && SCSI
1331 select CHECK_SIGNATURE
1327 ---help--- 1332 ---help---
1328 These are 8-bit SCSI controllers; the ST-01 is also supported by 1333 These are 8-bit SCSI controllers; the ST-01 is also supported by
1329 this driver. It is explained in section 3.9 of the SCSI-HOWTO, 1334 this driver. It is explained in section 3.9 of the SCSI-HOWTO,
@@ -1397,6 +1402,7 @@ config SCSI_T128
1397 tristate "Trantor T128/T128F/T228 SCSI support" 1402 tristate "Trantor T128/T128F/T228 SCSI support"
1398 depends on ISA && SCSI 1403 depends on ISA && SCSI
1399 select SCSI_SPI_ATTRS 1404 select SCSI_SPI_ATTRS
1405 select CHECK_SIGNATURE
1400 ---help--- 1406 ---help---
1401 This is support for a SCSI host adapter. It is explained in section 1407 This is support for a SCSI host adapter. It is explained in section
1402 3.11 of the SCSI-HOWTO, available from 1408 3.11 of the SCSI-HOWTO, available from
@@ -1561,7 +1567,7 @@ config A3000_SCSI
1561 built-in SCSI controller, say Y. Otherwise, say N. 1567 built-in SCSI controller, say Y. Otherwise, say N.
1562 1568
1563 To compile this driver as a module, choose M here: the 1569 To compile this driver as a module, choose M here: the
1564 module will be called wd33c93. 1570 module will be called a3000.
1565 1571
1566config A2091_SCSI 1572config A2091_SCSI
1567 tristate "A2091/A590 WD33C93A support" 1573 tristate "A2091/A590 WD33C93A support"
@@ -1571,7 +1577,7 @@ config A2091_SCSI
1571 say N. 1577 say N.
1572 1578
1573 To compile this driver as a module, choose M here: the 1579 To compile this driver as a module, choose M here: the
1574 module will be called wd33c93. 1580 module will be called a2091.
1575 1581
1576config GVP11_SCSI 1582config GVP11_SCSI
1577 tristate "GVP Series II WD33C93A support" 1583 tristate "GVP Series II WD33C93A support"
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 301313002f6b..f94109cbb46e 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -129,7 +129,16 @@ struct uart_8250_port {
129 unsigned char mcr; 129 unsigned char mcr;
130 unsigned char mcr_mask; /* mask of user bits */ 130 unsigned char mcr_mask; /* mask of user bits */
131 unsigned char mcr_force; /* mask of forced bits */ 131 unsigned char mcr_force; /* mask of forced bits */
132 unsigned char lsr_break_flag; 132
133 /*
134 * Some bits in registers are cleared on a read, so they must
135 * be saved whenever the register is read but the bits will not
136 * be immediately processed.
137 */
138#define LSR_SAVE_FLAGS UART_LSR_BRK_ERROR_BITS
139 unsigned char lsr_saved_flags;
140#define MSR_SAVE_FLAGS UART_MSR_ANY_DELTA
141 unsigned char msr_saved_flags;
133 142
134 /* 143 /*
135 * We provide a per-port pm hook. 144 * We provide a per-port pm hook.
@@ -1238,6 +1247,7 @@ static void serial8250_start_tx(struct uart_port *port)
1238 if (up->bugs & UART_BUG_TXEN) { 1247 if (up->bugs & UART_BUG_TXEN) {
1239 unsigned char lsr, iir; 1248 unsigned char lsr, iir;
1240 lsr = serial_in(up, UART_LSR); 1249 lsr = serial_in(up, UART_LSR);
1250 up->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS;
1241 iir = serial_in(up, UART_IIR) & 0x0f; 1251 iir = serial_in(up, UART_IIR) & 0x0f;
1242 if ((up->port.type == PORT_RM9000) ? 1252 if ((up->port.type == PORT_RM9000) ?
1243 (lsr & UART_LSR_THRE && 1253 (lsr & UART_LSR_THRE &&
@@ -1290,18 +1300,10 @@ receive_chars(struct uart_8250_port *up, unsigned int *status)
1290 flag = TTY_NORMAL; 1300 flag = TTY_NORMAL;
1291 up->port.icount.rx++; 1301 up->port.icount.rx++;
1292 1302
1293#ifdef CONFIG_SERIAL_8250_CONSOLE 1303 lsr |= up->lsr_saved_flags;
1294 /* 1304 up->lsr_saved_flags = 0;
1295 * Recover the break flag from console xmit
1296 */
1297 if (up->port.line == up->port.cons->index) {
1298 lsr |= up->lsr_break_flag;
1299 up->lsr_break_flag = 0;
1300 }
1301#endif
1302 1305
1303 if (unlikely(lsr & (UART_LSR_BI | UART_LSR_PE | 1306 if (unlikely(lsr & UART_LSR_BRK_ERROR_BITS)) {
1304 UART_LSR_FE | UART_LSR_OE))) {
1305 /* 1307 /*
1306 * For statistics only 1308 * For statistics only
1307 */ 1309 */
@@ -1392,6 +1394,8 @@ static unsigned int check_modem_status(struct uart_8250_port *up)
1392{ 1394{
1393 unsigned int status = serial_in(up, UART_MSR); 1395 unsigned int status = serial_in(up, UART_MSR);
1394 1396
1397 status |= up->msr_saved_flags;
1398 up->msr_saved_flags = 0;
1395 if (status & UART_MSR_ANY_DELTA && up->ier & UART_IER_MSI && 1399 if (status & UART_MSR_ANY_DELTA && up->ier & UART_IER_MSI &&
1396 up->port.info != NULL) { 1400 up->port.info != NULL) {
1397 if (status & UART_MSR_TERI) 1401 if (status & UART_MSR_TERI)
@@ -1591,7 +1595,8 @@ static void serial8250_timeout(unsigned long data)
1591static void serial8250_backup_timeout(unsigned long data) 1595static void serial8250_backup_timeout(unsigned long data)
1592{ 1596{
1593 struct uart_8250_port *up = (struct uart_8250_port *)data; 1597 struct uart_8250_port *up = (struct uart_8250_port *)data;
1594 unsigned int iir, ier = 0; 1598 unsigned int iir, ier = 0, lsr;
1599 unsigned long flags;
1595 1600
1596 /* 1601 /*
1597 * Must disable interrupts or else we risk racing with the interrupt 1602 * Must disable interrupts or else we risk racing with the interrupt
@@ -1610,9 +1615,13 @@ static void serial8250_backup_timeout(unsigned long data)
1610 * the "Diva" UART used on the management processor on many HP 1615 * the "Diva" UART used on the management processor on many HP
1611 * ia64 and parisc boxes. 1616 * ia64 and parisc boxes.
1612 */ 1617 */
1618 spin_lock_irqsave(&up->port.lock, flags);
1619 lsr = serial_in(up, UART_LSR);
1620 up->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS;
1621 spin_unlock_irqrestore(&up->port.lock, flags);
1613 if ((iir & UART_IIR_NO_INT) && (up->ier & UART_IER_THRI) && 1622 if ((iir & UART_IIR_NO_INT) && (up->ier & UART_IER_THRI) &&
1614 (!uart_circ_empty(&up->port.info->xmit) || up->port.x_char) && 1623 (!uart_circ_empty(&up->port.info->xmit) || up->port.x_char) &&
1615 (serial_in(up, UART_LSR) & UART_LSR_THRE)) { 1624 (lsr & UART_LSR_THRE)) {
1616 iir &= ~(UART_IIR_ID | UART_IIR_NO_INT); 1625 iir &= ~(UART_IIR_ID | UART_IIR_NO_INT);
1617 iir |= UART_IIR_THRI; 1626 iir |= UART_IIR_THRI;
1618 } 1627 }
@@ -1631,13 +1640,14 @@ static unsigned int serial8250_tx_empty(struct uart_port *port)
1631{ 1640{
1632 struct uart_8250_port *up = (struct uart_8250_port *)port; 1641 struct uart_8250_port *up = (struct uart_8250_port *)port;
1633 unsigned long flags; 1642 unsigned long flags;
1634 unsigned int ret; 1643 unsigned int lsr;
1635 1644
1636 spin_lock_irqsave(&up->port.lock, flags); 1645 spin_lock_irqsave(&up->port.lock, flags);
1637 ret = serial_in(up, UART_LSR) & UART_LSR_TEMT ? TIOCSER_TEMT : 0; 1646 lsr = serial_in(up, UART_LSR);
1647 up->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS;
1638 spin_unlock_irqrestore(&up->port.lock, flags); 1648 spin_unlock_irqrestore(&up->port.lock, flags);
1639 1649
1640 return ret; 1650 return lsr & UART_LSR_TEMT ? TIOCSER_TEMT : 0;
1641} 1651}
1642 1652
1643static unsigned int serial8250_get_mctrl(struct uart_port *port) 1653static unsigned int serial8250_get_mctrl(struct uart_port *port)
@@ -1708,8 +1718,7 @@ static inline void wait_for_xmitr(struct uart_8250_port *up, int bits)
1708 do { 1718 do {
1709 status = serial_in(up, UART_LSR); 1719 status = serial_in(up, UART_LSR);
1710 1720
1711 if (status & UART_LSR_BI) 1721 up->lsr_saved_flags |= status & LSR_SAVE_FLAGS;
1712 up->lsr_break_flag = UART_LSR_BI;
1713 1722
1714 if (--tmout == 0) 1723 if (--tmout == 0)
1715 break; 1724 break;
@@ -1718,8 +1727,12 @@ static inline void wait_for_xmitr(struct uart_8250_port *up, int bits)
1718 1727
1719 /* Wait up to 1s for flow control if necessary */ 1728 /* Wait up to 1s for flow control if necessary */
1720 if (up->port.flags & UPF_CONS_FLOW) { 1729 if (up->port.flags & UPF_CONS_FLOW) {
1721 tmout = 1000000; 1730 unsigned int tmout;
1722 while (!(serial_in(up, UART_MSR) & UART_MSR_CTS) && --tmout) { 1731 for (tmout = 1000000; tmout; tmout--) {
1732 unsigned int msr = serial_in(up, UART_MSR);
1733 up->msr_saved_flags |= msr & MSR_SAVE_FLAGS;
1734 if (msr & UART_MSR_CTS)
1735 break;
1723 udelay(1); 1736 udelay(1);
1724 touch_nmi_watchdog(); 1737 touch_nmi_watchdog();
1725 } 1738 }
@@ -1889,6 +1902,18 @@ static int serial8250_startup(struct uart_port *port)
1889 spin_unlock_irqrestore(&up->port.lock, flags); 1902 spin_unlock_irqrestore(&up->port.lock, flags);
1890 1903
1891 /* 1904 /*
1905 * Clear the interrupt registers again for luck, and clear the
1906 * saved flags to avoid getting false values from polling
1907 * routines or the previous session.
1908 */
1909 serial_inp(up, UART_LSR);
1910 serial_inp(up, UART_RX);
1911 serial_inp(up, UART_IIR);
1912 serial_inp(up, UART_MSR);
1913 up->lsr_saved_flags = 0;
1914 up->msr_saved_flags = 0;
1915
1916 /*
1892 * Finally, enable interrupts. Note: Modem status interrupts 1917 * Finally, enable interrupts. Note: Modem status interrupts
1893 * are set via set_termios(), which will be occurring imminently 1918 * are set via set_termios(), which will be occurring imminently
1894 * anyway, so we don't enable them here. 1919 * anyway, so we don't enable them here.
@@ -1906,14 +1931,6 @@ static int serial8250_startup(struct uart_port *port)
1906 (void) inb_p(icp); 1931 (void) inb_p(icp);
1907 } 1932 }
1908 1933
1909 /*
1910 * And clear the interrupt registers again for luck.
1911 */
1912 (void) serial_inp(up, UART_LSR);
1913 (void) serial_inp(up, UART_RX);
1914 (void) serial_inp(up, UART_IIR);
1915 (void) serial_inp(up, UART_MSR);
1916
1917 return 0; 1934 return 0;
1918} 1935}
1919 1936
@@ -2484,6 +2501,16 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
2484 wait_for_xmitr(up, BOTH_EMPTY); 2501 wait_for_xmitr(up, BOTH_EMPTY);
2485 serial_out(up, UART_IER, ier); 2502 serial_out(up, UART_IER, ier);
2486 2503
2504 /*
2505 * The receive handling will happen properly because the
2506 * receive ready bit will still be set; it is not cleared
2507 * on read. However, modem control will not, we must
2508 * call it if we have saved something in the saved flags
2509 * while processing with interrupts off.
2510 */
2511 if (up->msr_saved_flags)
2512 check_modem_status(up);
2513
2487 if (locked) 2514 if (locked)
2488 spin_unlock(&up->port.lock); 2515 spin_unlock(&up->port.lock);
2489 local_irq_restore(flags); 2516 local_irq_restore(flags);
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c
index 5e485876f54c..bd66339f7a3f 100644
--- a/drivers/serial/8250_pci.c
+++ b/drivers/serial/8250_pci.c
@@ -580,6 +580,138 @@ static int pci_netmos_init(struct pci_dev *dev)
580 return num_serial; 580 return num_serial;
581} 581}
582 582
583/*
584 * ITE support by Niels de Vos <niels.devos@wincor-nixdorf.com>
585 *
586 * These chips are available with optionally one parallel port and up to
587 * two serial ports. Unfortunately they all have the same product id.
588 *
589 * Basic configuration is done over a region of 32 I/O ports. The base
590 * ioport is called INTA or INTC, depending on docs/other drivers.
591 *
592 * The region of the 32 I/O ports is configured in POSIO0R...
593 */
594
595/* registers */
596#define ITE_887x_MISCR 0x9c
597#define ITE_887x_INTCBAR 0x78
598#define ITE_887x_UARTBAR 0x7c
599#define ITE_887x_PS0BAR 0x10
600#define ITE_887x_POSIO0 0x60
601
602/* I/O space size */
603#define ITE_887x_IOSIZE 32
604/* I/O space size (bits 26-24; 8 bytes = 011b) */
605#define ITE_887x_POSIO_IOSIZE_8 (3 << 24)
606/* I/O space size (bits 26-24; 32 bytes = 101b) */
607#define ITE_887x_POSIO_IOSIZE_32 (5 << 24)
608/* Decoding speed (1 = slow, 2 = medium, 3 = fast) */
609#define ITE_887x_POSIO_SPEED (3 << 29)
610/* enable IO_Space bit */
611#define ITE_887x_POSIO_ENABLE (1 << 31)
612
613static int __devinit pci_ite887x_init(struct pci_dev *dev)
614{
615 /* inta_addr are the configuration addresses of the ITE */
616 static const short inta_addr[] = { 0x2a0, 0x2c0, 0x220, 0x240, 0x1e0,
617 0x200, 0x280, 0 };
618 int ret, i, type;
619 struct resource *iobase = NULL;
620 u32 miscr, uartbar, ioport;
621
622 /* search for the base-ioport */
623 i = 0;
624 while (inta_addr[i] && iobase == NULL) {
625 iobase = request_region(inta_addr[i], ITE_887x_IOSIZE,
626 "ite887x");
627 if (iobase != NULL) {
628 /* write POSIO0R - speed | size | ioport */
629 pci_write_config_dword(dev, ITE_887x_POSIO0,
630 ITE_887x_POSIO_ENABLE | ITE_887x_POSIO_SPEED |
631 ITE_887x_POSIO_IOSIZE_32 | inta_addr[i]);
632 /* write INTCBAR - ioport */
633 pci_write_config_dword(dev, ITE_887x_INTCBAR, inta_addr[i]);
634 ret = inb(inta_addr[i]);
635 if (ret != 0xff) {
636 /* ioport connected */
637 break;
638 }
639 release_region(iobase->start, ITE_887x_IOSIZE);
640 iobase = NULL;
641 }
642 i++;
643 }
644
645 if (!inta_addr[i]) {
646 printk(KERN_ERR "ite887x: could not find iobase\n");
647 return -ENODEV;
648 }
649
650 /* start of undocumented type checking (see parport_pc.c) */
651 type = inb(iobase->start + 0x18) & 0x0f;
652
653 switch (type) {
654 case 0x2: /* ITE8871 (1P) */
655 case 0xa: /* ITE8875 (1P) */
656 ret = 0;
657 break;
658 case 0xe: /* ITE8872 (2S1P) */
659 ret = 2;
660 break;
661 case 0x6: /* ITE8873 (1S) */
662 ret = 1;
663 break;
664 case 0x8: /* ITE8874 (2S) */
665 ret = 2;
666 break;
667 default:
668 moan_device("Unknown ITE887x", dev);
669 ret = -ENODEV;
670 }
671
672 /* configure all serial ports */
673 for (i = 0; i < ret; i++) {
674 /* read the I/O port from the device */
675 pci_read_config_dword(dev, ITE_887x_PS0BAR + (0x4 * (i + 1)),
676 &ioport);
677 ioport &= 0x0000FF00; /* the actual base address */
678 pci_write_config_dword(dev, ITE_887x_POSIO0 + (0x4 * (i + 1)),
679 ITE_887x_POSIO_ENABLE | ITE_887x_POSIO_SPEED |
680 ITE_887x_POSIO_IOSIZE_8 | ioport);
681
682 /* write the ioport to the UARTBAR */
683 pci_read_config_dword(dev, ITE_887x_UARTBAR, &uartbar);
684 uartbar &= ~(0xffff << (16 * i)); /* clear half the reg */
685 uartbar |= (ioport << (16 * i)); /* set the ioport */
686 pci_write_config_dword(dev, ITE_887x_UARTBAR, uartbar);
687
688 /* get current config */
689 pci_read_config_dword(dev, ITE_887x_MISCR, &miscr);
690 /* disable interrupts (UARTx_Routing[3:0]) */
691 miscr &= ~(0xf << (12 - 4 * i));
692 /* activate the UART (UARTx_En) */
693 miscr |= 1 << (23 - i);
694 /* write new config with activated UART */
695 pci_write_config_dword(dev, ITE_887x_MISCR, miscr);
696 }
697
698 if (ret <= 0) {
699 /* the device has no UARTs if we get here */
700 release_region(iobase->start, ITE_887x_IOSIZE);
701 }
702
703 return ret;
704}
705
706static void __devexit pci_ite887x_exit(struct pci_dev *dev)
707{
708 u32 ioport;
709 /* the ioport is bit 0-15 in POSIO0R */
710 pci_read_config_dword(dev, ITE_887x_POSIO0, &ioport);
711 ioport &= 0xffff;
712 release_region(ioport, ITE_887x_IOSIZE);
713}
714
583static int 715static int
584pci_default_setup(struct serial_private *priv, struct pciserial_board *board, 716pci_default_setup(struct serial_private *priv, struct pciserial_board *board,
585 struct uart_port *port, int idx) 717 struct uart_port *port, int idx)
@@ -653,6 +785,18 @@ static struct pci_serial_quirk pci_serial_quirks[] = {
653 .setup = pci_default_setup, 785 .setup = pci_default_setup,
654 }, 786 },
655 /* 787 /*
788 * ITE
789 */
790 {
791 .vendor = PCI_VENDOR_ID_ITE,
792 .device = PCI_DEVICE_ID_ITE_8872,
793 .subvendor = PCI_ANY_ID,
794 .subdevice = PCI_ANY_ID,
795 .init = pci_ite887x_init,
796 .setup = pci_default_setup,
797 .exit = __devexit_p(pci_ite887x_exit),
798 },
799 /*
656 * Panacom 800 * Panacom
657 */ 801 */
658 { 802 {
@@ -933,6 +1077,7 @@ enum pci_board_num_t {
933 1077
934 pbn_b1_2_1250000, 1078 pbn_b1_2_1250000,
935 1079
1080 pbn_b1_bt_1_115200,
936 pbn_b1_bt_2_921600, 1081 pbn_b1_bt_2_921600,
937 1082
938 pbn_b1_1_1382400, 1083 pbn_b1_1_1382400,
@@ -983,6 +1128,7 @@ enum pci_board_num_t {
983 pbn_exar_XR17C152, 1128 pbn_exar_XR17C152,
984 pbn_exar_XR17C154, 1129 pbn_exar_XR17C154,
985 pbn_exar_XR17C158, 1130 pbn_exar_XR17C158,
1131 pbn_pasemi_1682M,
986}; 1132};
987 1133
988/* 1134/*
@@ -1211,6 +1357,13 @@ static struct pciserial_board pci_boards[] __devinitdata = {
1211 .uart_offset = 8, 1357 .uart_offset = 8,
1212 }, 1358 },
1213 1359
1360 [pbn_b1_bt_1_115200] = {
1361 .flags = FL_BASE1|FL_BASE_BARS,
1362 .num_ports = 1,
1363 .base_baud = 115200,
1364 .uart_offset = 8,
1365 },
1366
1214 [pbn_b1_bt_2_921600] = { 1367 [pbn_b1_bt_2_921600] = {
1215 .flags = FL_BASE1|FL_BASE_BARS, 1368 .flags = FL_BASE1|FL_BASE_BARS,
1216 .num_ports = 2, 1369 .num_ports = 2,
@@ -1498,6 +1651,18 @@ static struct pciserial_board pci_boards[] __devinitdata = {
1498 .base_baud = 921600, 1651 .base_baud = 921600,
1499 .uart_offset = 0x200, 1652 .uart_offset = 0x200,
1500 }, 1653 },
1654 /*
1655 * PA Semi PWRficient PA6T-1682M on-chip UART
1656 */
1657 [pbn_pasemi_1682M] = {
1658 .flags = FL_BASE0,
1659 .num_ports = 1,
1660 .base_baud = 8333333,
1661 },
1662};
1663
1664static const struct pci_device_id softmodem_blacklist[] = {
1665 { PCI_VDEVICE ( AL, 0x5457 ), }, /* ALi Corporation M5457 AC'97 Modem */
1501}; 1666};
1502 1667
1503/* 1668/*
@@ -1508,6 +1673,7 @@ static struct pciserial_board pci_boards[] __devinitdata = {
1508static int __devinit 1673static int __devinit
1509serial_pci_guess_board(struct pci_dev *dev, struct pciserial_board *board) 1674serial_pci_guess_board(struct pci_dev *dev, struct pciserial_board *board)
1510{ 1675{
1676 const struct pci_device_id *blacklist;
1511 int num_iomem, num_port, first_port = -1, i; 1677 int num_iomem, num_port, first_port = -1, i;
1512 1678
1513 /* 1679 /*
@@ -1522,6 +1688,18 @@ serial_pci_guess_board(struct pci_dev *dev, struct pciserial_board *board)
1522 (dev->class & 0xff) > 6) 1688 (dev->class & 0xff) > 6)
1523 return -ENODEV; 1689 return -ENODEV;
1524 1690
1691 /*
1692 * Do not access blacklisted devices that are known not to
1693 * feature serial ports.
1694 */
1695 for (blacklist = softmodem_blacklist;
1696 blacklist < softmodem_blacklist + ARRAY_SIZE(softmodem_blacklist);
1697 blacklist++) {
1698 if (dev->vendor == blacklist->vendor &&
1699 dev->device == blacklist->device)
1700 return -ENODEV;
1701 }
1702
1525 num_iomem = num_port = 0; 1703 num_iomem = num_port = 0;
1526 for (i = 0; i < PCI_NUM_BAR_RESOURCES; i++) { 1704 for (i = 0; i < PCI_NUM_BAR_RESOURCES; i++) {
1527 if (pci_resource_flags(dev, i) & IORESOURCE_IO) { 1705 if (pci_resource_flags(dev, i) & IORESOURCE_IO) {
@@ -2364,6 +2542,13 @@ static struct pci_device_id serial_pci_tbl[] = {
2364 { PCI_VENDOR_ID_TOPIC, PCI_DEVICE_ID_TOPIC_TP560, 2542 { PCI_VENDOR_ID_TOPIC, PCI_DEVICE_ID_TOPIC_TP560,
2365 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2543 PCI_ANY_ID, PCI_ANY_ID, 0, 0,
2366 pbn_b0_1_115200 }, 2544 pbn_b0_1_115200 },
2545 /*
2546 * ITE
2547 */
2548 { PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_8872,
2549 PCI_ANY_ID, PCI_ANY_ID,
2550 0, 0,
2551 pbn_b1_bt_1_115200 },
2367 2552
2368 /* 2553 /*
2369 * IntaShield IS-200 2554 * IntaShield IS-200
@@ -2382,6 +2567,13 @@ static struct pci_device_id serial_pci_tbl[] = {
2382 PCI_SUBVENDOR_ID_PERLE, PCI_SUBDEVICE_ID_PCI_RAS8, 2567 PCI_SUBVENDOR_ID_PERLE, PCI_SUBDEVICE_ID_PCI_RAS8,
2383 0, 0, pbn_b2_8_921600 }, 2568 0, 0, pbn_b2_8_921600 },
2384 /* 2569 /*
2570 * PA Semi PA6T-1682M on-chip UART
2571 */
2572 { PCI_VENDOR_ID_PASEMI, 0xa004,
2573 PCI_ANY_ID, PCI_ANY_ID, 0, 0,
2574 pbn_pasemi_1682M },
2575
2576 /*
2385 * These entries match devices with class COMMUNICATION_SERIAL, 2577 * These entries match devices with class COMMUNICATION_SERIAL,
2386 * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL 2578 * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL
2387 */ 2579 */
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index 030a6063541d..a055f58f342f 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -1146,11 +1146,14 @@ static void uart_set_termios(struct tty_struct *tty, struct ktermios *old_termio
1146 1146
1147 /* 1147 /*
1148 * These are the bits that are used to setup various 1148 * These are the bits that are used to setup various
1149 * flags in the low level driver. 1149 * flags in the low level driver. We can ignore the Bfoo
1150 * bits in c_cflag; c_[io]speed will always be set
1151 * appropriately by set_termios() in tty_ioctl.c
1150 */ 1152 */
1151#define RELEVANT_IFLAG(iflag) ((iflag) & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK)) 1153#define RELEVANT_IFLAG(iflag) ((iflag) & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK))
1152
1153 if ((cflag ^ old_termios->c_cflag) == 0 && 1154 if ((cflag ^ old_termios->c_cflag) == 0 &&
1155 tty->termios->c_ospeed == old_termios->c_ospeed &&
1156 tty->termios->c_ispeed == old_termios->c_ispeed &&
1154 RELEVANT_IFLAG(tty->termios->c_iflag ^ old_termios->c_iflag) == 0) 1157 RELEVANT_IFLAG(tty->termios->c_iflag ^ old_termios->c_iflag) == 0)
1155 return; 1158 return;
1156 1159
diff --git a/drivers/serial/serial_txx9.c b/drivers/serial/serial_txx9.c
index b8f91e018b21..0930e2a85514 100644
--- a/drivers/serial/serial_txx9.c
+++ b/drivers/serial/serial_txx9.c
@@ -37,7 +37,7 @@
37 37
38#include <asm/io.h> 38#include <asm/io.h>
39 39
40static char *serial_version = "1.09"; 40static char *serial_version = "1.10";
41static char *serial_name = "TX39/49 Serial driver"; 41static char *serial_name = "TX39/49 Serial driver";
42 42
43#define PASS_LIMIT 256 43#define PASS_LIMIT 256
@@ -436,8 +436,10 @@ static unsigned int serial_txx9_get_mctrl(struct uart_port *port)
436 struct uart_txx9_port *up = (struct uart_txx9_port *)port; 436 struct uart_txx9_port *up = (struct uart_txx9_port *)port;
437 unsigned int ret; 437 unsigned int ret;
438 438
439 ret = ((sio_in(up, TXX9_SIFLCR) & TXX9_SIFLCR_RTSSC) ? 0 : TIOCM_RTS) 439 /* no modem control lines */
440 | ((sio_in(up, TXX9_SICISR) & TXX9_SICISR_CTSS) ? 0 : TIOCM_CTS); 440 ret = TIOCM_CAR | TIOCM_DSR;
441 ret |= (sio_in(up, TXX9_SIFLCR) & TXX9_SIFLCR_RTSSC) ? 0 : TIOCM_RTS;
442 ret |= (sio_in(up, TXX9_SICISR) & TXX9_SICISR_CTSS) ? 0 : TIOCM_CTS;
441 443
442 return ret; 444 return ret;
443} 445}
@@ -557,6 +559,12 @@ serial_txx9_set_termios(struct uart_port *port, struct ktermios *termios,
557 unsigned long flags; 559 unsigned long flags;
558 unsigned int baud, quot; 560 unsigned int baud, quot;
559 561
562 /*
563 * We don't support modem control lines.
564 */
565 termios->c_cflag &= ~(HUPCL | CMSPAR);
566 termios->c_cflag |= CLOCAL;
567
560 cval = sio_in(up, TXX9_SILCR); 568 cval = sio_in(up, TXX9_SILCR);
561 /* byte size and parity */ 569 /* byte size and parity */
562 cval &= ~TXX9_SILCR_UMODE_MASK; 570 cval &= ~TXX9_SILCR_UMODE_MASK;
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c
index 79b13685bdfa..e074943feff5 100644
--- a/drivers/serial/sunsu.c
+++ b/drivers/serial/sunsu.c
@@ -1198,10 +1198,11 @@ static int __init sunsu_kbd_ms_init(struct uart_sunsu_port *up)
1198 if (up->port.type == PORT_UNKNOWN) 1198 if (up->port.type == PORT_UNKNOWN)
1199 return -ENODEV; 1199 return -ENODEV;
1200 1200
1201 printk("%s: %s port at %lx, irq %u\n", 1201 printk("%s: %s port at %llx, irq %u\n",
1202 to_of_device(up->port.dev)->node->full_name, 1202 to_of_device(up->port.dev)->node->full_name,
1203 (up->su_type == SU_PORT_KBD) ? "Keyboard" : "Mouse", 1203 (up->su_type == SU_PORT_KBD) ? "Keyboard" : "Mouse",
1204 up->port.mapbase, up->port.irq); 1204 (unsigned long long) up->port.mapbase,
1205 up->port.irq);
1205 1206
1206#ifdef CONFIG_SERIO 1207#ifdef CONFIG_SERIO
1207 serio = &up->serio; 1208 serio = &up->serio;
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c
index 1d262c0c613f..283bef0d24cb 100644
--- a/drivers/serial/sunzilog.c
+++ b/drivers/serial/sunzilog.c
@@ -1431,14 +1431,16 @@ static int __devinit zs_probe(struct of_device *op, const struct of_device_id *m
1431 return err; 1431 return err;
1432 } 1432 }
1433 } else { 1433 } else {
1434 printk(KERN_INFO "%s: Keyboard at MMIO 0x%lx (irq = %d) " 1434 printk(KERN_INFO "%s: Keyboard at MMIO 0x%llx (irq = %d) "
1435 "is a %s\n", 1435 "is a %s\n",
1436 op->dev.bus_id, up[0].port.mapbase, op->irqs[0], 1436 op->dev.bus_id,
1437 sunzilog_type (&up[0].port)); 1437 (unsigned long long) up[0].port.mapbase,
1438 printk(KERN_INFO "%s: Mouse at MMIO 0x%lx (irq = %d) " 1438 op->irqs[0], sunzilog_type(&up[0].port));
1439 printk(KERN_INFO "%s: Mouse at MMIO 0x%llx (irq = %d) "
1439 "is a %s\n", 1440 "is a %s\n",
1440 op->dev.bus_id, up[1].port.mapbase, op->irqs[0], 1441 op->dev.bus_id,
1441 sunzilog_type (&up[1].port)); 1442 (unsigned long long) up[1].port.mapbase,
1443 op->irqs[0], sunzilog_type(&up[1].port));
1442 } 1444 }
1443 1445
1444 dev_set_drvdata(&op->dev, &up[0]); 1446 dev_set_drvdata(&op->dev, &up[0]);
diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig
index 7dd73546bf43..7580aa5da0f8 100644
--- a/drivers/usb/Kconfig
+++ b/drivers/usb/Kconfig
@@ -6,6 +6,9 @@ menuconfig USB_SUPPORT
6 bool "USB support" 6 bool "USB support"
7 depends on HAS_IOMEM 7 depends on HAS_IOMEM
8 default y 8 default y
9 ---help---
10 This option adds core support for Universal Serial Bus (USB).
11 You will also need drivers from the following menu to make use of it.
9 12
10if USB_SUPPORT 13if USB_SUPPORT
11 14
@@ -18,6 +21,7 @@ config USB_ARCH_HAS_HCD
18 default y if USB_ARCH_HAS_EHCI 21 default y if USB_ARCH_HAS_EHCI
19 default y if PCMCIA && !M32R # sl811_cs 22 default y if PCMCIA && !M32R # sl811_cs
20 default y if ARM # SL-811 23 default y if ARM # SL-811
24 default y if SUPERH # r8a66597-hcd
21 default PCI 25 default PCI
22 26
23# many non-PCI SOC chips embed OHCI 27# many non-PCI SOC chips embed OHCI
diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c
index 02c52f8d5dbf..a73e714288e5 100644
--- a/drivers/usb/atm/cxacru.c
+++ b/drivers/usb/atm/cxacru.c
@@ -456,7 +456,6 @@ static int cxacru_start_wait_urb(struct urb *urb, struct completion *done,
456 int* actual_length) 456 int* actual_length)
457{ 457{
458 struct timer_list timer; 458 struct timer_list timer;
459 int status = urb->status;
460 459
461 init_timer(&timer); 460 init_timer(&timer);
462 timer.expires = jiffies + msecs_to_jiffies(CMD_TIMEOUT); 461 timer.expires = jiffies + msecs_to_jiffies(CMD_TIMEOUT);
@@ -468,7 +467,7 @@ static int cxacru_start_wait_urb(struct urb *urb, struct completion *done,
468 467
469 if (actual_length) 468 if (actual_length)
470 *actual_length = urb->actual_length; 469 *actual_length = urb->actual_length;
471 return status; 470 return urb->status; /* must read status after completion */
472} 471}
473 472
474static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm, 473static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm,
diff --git a/drivers/usb/atm/ueagle-atm.c b/drivers/usb/atm/ueagle-atm.c
index a1a1c9d467e0..29807d048b04 100644
--- a/drivers/usb/atm/ueagle-atm.c
+++ b/drivers/usb/atm/ueagle-atm.c
@@ -1721,9 +1721,12 @@ static int uea_bind(struct usbatm_data *usbatm, struct usb_interface *intf,
1721 1721
1722 ret = uea_boot(sc); 1722 ret = uea_boot(sc);
1723 if (ret < 0) 1723 if (ret < 0)
1724 goto error; 1724 goto error_rm_grp;
1725 1725
1726 return 0; 1726 return 0;
1727
1728error_rm_grp:
1729 sysfs_remove_group(&intf->dev.kobj, &attr_grp);
1727error: 1730error:
1728 kfree(sc); 1731 kfree(sc);
1729 return ret; 1732 return ret;
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index fe940e0536e0..f51e22490edf 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -921,6 +921,10 @@ skip_normal_probe:
921 return -EINVAL; 921 return -EINVAL;
922 } 922 }
923 } 923 }
924
925 /* Accept probe requests only for the control interface */
926 if (intf != control_interface)
927 return -ENODEV;
924 928
925 if (usb_interface_claimed(data_interface)) { /* valid in this context */ 929 if (usb_interface_claimed(data_interface)) { /* valid in this context */
926 dev_dbg(&intf->dev,"The data interface isn't available"); 930 dev_dbg(&intf->dev,"The data interface isn't available");
@@ -1109,10 +1113,12 @@ static void acm_disconnect(struct usb_interface *intf)
1109 return; 1113 return;
1110 } 1114 }
1111 if (acm->country_codes){ 1115 if (acm->country_codes){
1112 device_remove_file(&intf->dev, &dev_attr_wCountryCodes); 1116 device_remove_file(&acm->control->dev,
1113 device_remove_file(&intf->dev, &dev_attr_iCountryCodeRelDate); 1117 &dev_attr_wCountryCodes);
1118 device_remove_file(&acm->control->dev,
1119 &dev_attr_iCountryCodeRelDate);
1114 } 1120 }
1115 device_remove_file(&intf->dev, &dev_attr_bmCapabilities); 1121 device_remove_file(&acm->control->dev, &dev_attr_bmCapabilities);
1116 acm->dev = NULL; 1122 acm->dev = NULL;
1117 usb_set_intfdata(acm->control, NULL); 1123 usb_set_intfdata(acm->control, NULL);
1118 usb_set_intfdata(acm->data, NULL); 1124 usb_set_intfdata(acm->data, NULL);
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
index 654857493a82..a1ad11d0c47c 100644
--- a/drivers/usb/core/driver.c
+++ b/drivers/usb/core/driver.c
@@ -1224,6 +1224,8 @@ static int usb_autopm_do_device(struct usb_device *udev, int inc_usage_cnt)
1224 udev->auto_pm = 1; 1224 udev->auto_pm = 1;
1225 udev->pm_usage_cnt += inc_usage_cnt; 1225 udev->pm_usage_cnt += inc_usage_cnt;
1226 WARN_ON(udev->pm_usage_cnt < 0); 1226 WARN_ON(udev->pm_usage_cnt < 0);
1227 if (inc_usage_cnt)
1228 udev->last_busy = jiffies;
1227 if (inc_usage_cnt >= 0 && udev->pm_usage_cnt > 0) { 1229 if (inc_usage_cnt >= 0 && udev->pm_usage_cnt > 0) {
1228 if (udev->state == USB_STATE_SUSPENDED) 1230 if (udev->state == USB_STATE_SUSPENDED)
1229 status = usb_resume_both(udev); 1231 status = usb_resume_both(udev);
@@ -1232,8 +1234,6 @@ static int usb_autopm_do_device(struct usb_device *udev, int inc_usage_cnt)
1232 else if (inc_usage_cnt) 1234 else if (inc_usage_cnt)
1233 udev->last_busy = jiffies; 1235 udev->last_busy = jiffies;
1234 } else if (inc_usage_cnt <= 0 && udev->pm_usage_cnt <= 0) { 1236 } else if (inc_usage_cnt <= 0 && udev->pm_usage_cnt <= 0) {
1235 if (inc_usage_cnt)
1236 udev->last_busy = jiffies;
1237 status = usb_suspend_both(udev, PMSG_SUSPEND); 1237 status = usb_suspend_both(udev, PMSG_SUSPEND);
1238 } 1238 }
1239 usb_pm_unlock(udev); 1239 usb_pm_unlock(udev);
@@ -1342,16 +1342,15 @@ static int usb_autopm_do_interface(struct usb_interface *intf,
1342 else { 1342 else {
1343 udev->auto_pm = 1; 1343 udev->auto_pm = 1;
1344 intf->pm_usage_cnt += inc_usage_cnt; 1344 intf->pm_usage_cnt += inc_usage_cnt;
1345 udev->last_busy = jiffies;
1345 if (inc_usage_cnt >= 0 && intf->pm_usage_cnt > 0) { 1346 if (inc_usage_cnt >= 0 && intf->pm_usage_cnt > 0) {
1346 if (udev->state == USB_STATE_SUSPENDED) 1347 if (udev->state == USB_STATE_SUSPENDED)
1347 status = usb_resume_both(udev); 1348 status = usb_resume_both(udev);
1348 if (status != 0) 1349 if (status != 0)
1349 intf->pm_usage_cnt -= inc_usage_cnt; 1350 intf->pm_usage_cnt -= inc_usage_cnt;
1350 else if (inc_usage_cnt) 1351 else
1351 udev->last_busy = jiffies; 1352 udev->last_busy = jiffies;
1352 } else if (inc_usage_cnt <= 0 && intf->pm_usage_cnt <= 0) { 1353 } else if (inc_usage_cnt <= 0 && intf->pm_usage_cnt <= 0) {
1353 if (inc_usage_cnt)
1354 udev->last_busy = jiffies;
1355 status = usb_suspend_both(udev, PMSG_SUSPEND); 1354 status = usb_suspend_both(udev, PMSG_SUSPEND);
1356 } 1355 }
1357 } 1356 }
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index e341a1da517f..f7b337feb3ea 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -1644,9 +1644,10 @@ static int finish_port_resume(struct usb_device *udev)
1644 * and device drivers will know about any resume quirks. 1644 * and device drivers will know about any resume quirks.
1645 */ 1645 */
1646 if (status == 0) { 1646 if (status == 0) {
1647 devstatus = 0;
1647 status = usb_get_status(udev, USB_RECIP_DEVICE, 0, &devstatus); 1648 status = usb_get_status(udev, USB_RECIP_DEVICE, 0, &devstatus);
1648 if (status >= 0) 1649 if (status >= 0)
1649 status = (status == 2 ? 0 : -ENODEV); 1650 status = (status > 0 ? 0 : -ENODEV);
1650 } 1651 }
1651 1652
1652 if (status) { 1653 if (status) {
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index b6bd05e3d439..d8f7b089a8f0 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -637,12 +637,12 @@ int usb_get_descriptor(struct usb_device *dev, unsigned char type, unsigned char
637 memset(buf,0,size); // Make sure we parse really received data 637 memset(buf,0,size); // Make sure we parse really received data
638 638
639 for (i = 0; i < 3; ++i) { 639 for (i = 0; i < 3; ++i) {
640 /* retry on length 0 or stall; some devices are flakey */ 640 /* retry on length 0 or error; some devices are flakey */
641 result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), 641 result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
642 USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, 642 USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
643 (type << 8) + index, 0, buf, size, 643 (type << 8) + index, 0, buf, size,
644 USB_CTRL_GET_TIMEOUT); 644 USB_CTRL_GET_TIMEOUT);
645 if (result == 0 || result == -EPIPE) 645 if (result <= 0 && result != -ETIMEDOUT)
646 continue; 646 continue;
647 if (result > 1 && ((u8 *)buf)[1] != type) { 647 if (result > 1 && ((u8 *)buf)[1] != type) {
648 result = -EPROTO; 648 result = -EPROTO;
@@ -1358,6 +1358,30 @@ static int usb_if_uevent(struct device *dev, char **envp, int num_envp,
1358 usb_dev = interface_to_usbdev(intf); 1358 usb_dev = interface_to_usbdev(intf);
1359 alt = intf->cur_altsetting; 1359 alt = intf->cur_altsetting;
1360 1360
1361#ifdef CONFIG_USB_DEVICEFS
1362 if (add_uevent_var(envp, num_envp, &i,
1363 buffer, buffer_size, &length,
1364 "DEVICE=/proc/bus/usb/%03d/%03d",
1365 usb_dev->bus->busnum, usb_dev->devnum))
1366 return -ENOMEM;
1367#endif
1368
1369 if (add_uevent_var(envp, num_envp, &i,
1370 buffer, buffer_size, &length,
1371 "PRODUCT=%x/%x/%x",
1372 le16_to_cpu(usb_dev->descriptor.idVendor),
1373 le16_to_cpu(usb_dev->descriptor.idProduct),
1374 le16_to_cpu(usb_dev->descriptor.bcdDevice)))
1375 return -ENOMEM;
1376
1377 if (add_uevent_var(envp, num_envp, &i,
1378 buffer, buffer_size, &length,
1379 "TYPE=%d/%d/%d",
1380 usb_dev->descriptor.bDeviceClass,
1381 usb_dev->descriptor.bDeviceSubClass,
1382 usb_dev->descriptor.bDeviceProtocol))
1383 return -ENOMEM;
1384
1361 if (add_uevent_var(envp, num_envp, &i, 1385 if (add_uevent_var(envp, num_envp, &i,
1362 buffer, buffer_size, &length, 1386 buffer, buffer_size, &length,
1363 "INTERFACE=%d/%d/%d", 1387 "INTERFACE=%d/%d/%d",
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
index b7917c5a3c6f..9e467118dc94 100644
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -30,6 +30,8 @@
30static const struct usb_device_id usb_quirk_list[] = { 30static const struct usb_device_id usb_quirk_list[] = {
31 /* HP 5300/5370C scanner */ 31 /* HP 5300/5370C scanner */
32 { USB_DEVICE(0x03f0, 0x0701), .driver_info = USB_QUIRK_STRING_FETCH_255 }, 32 { USB_DEVICE(0x03f0, 0x0701), .driver_info = USB_QUIRK_STRING_FETCH_255 },
33 /* Hewlett-Packard PhotoSmart 720 / PhotoSmart 935 (storage) */
34 { USB_DEVICE(0x03f0, 0x4002), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
33 /* Acer Peripherals Inc. (now BenQ Corp.) Prisa 640BU */ 35 /* Acer Peripherals Inc. (now BenQ Corp.) Prisa 640BU */
34 { USB_DEVICE(0x04a5, 0x207e), .driver_info = USB_QUIRK_NO_AUTOSUSPEND }, 36 { USB_DEVICE(0x04a5, 0x207e), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
35 /* Benq S2W 3300U */ 37 /* Benq S2W 3300U */
@@ -56,6 +58,8 @@ static const struct usb_device_id usb_quirk_list[] = {
56 { USB_DEVICE(0x04b8, 0x0121), .driver_info = USB_QUIRK_NO_AUTOSUSPEND }, 58 { USB_DEVICE(0x04b8, 0x0121), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
57 /* Seiko Epson Corp.*/ 59 /* Seiko Epson Corp.*/
58 { USB_DEVICE(0x04b8, 0x0122), .driver_info = USB_QUIRK_NO_AUTOSUSPEND }, 60 { USB_DEVICE(0x04b8, 0x0122), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
61 /* Samsung ML-2010 printer */
62 { USB_DEVICE(0x04e8, 0x326c), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
59 /* Samsung ML-2510 Series printer */ 63 /* Samsung ML-2510 Series printer */
60 { USB_DEVICE(0x04e8, 0x327e), .driver_info = USB_QUIRK_NO_AUTOSUSPEND }, 64 { USB_DEVICE(0x04e8, 0x327e), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
61 /* Elsa MicroLink 56k (V.250) */ 65 /* Elsa MicroLink 56k (V.250) */
@@ -64,12 +68,20 @@ static const struct usb_device_id usb_quirk_list[] = {
64 { USB_DEVICE(0x05d8, 0x4005), .driver_info = USB_QUIRK_NO_AUTOSUSPEND }, 68 { USB_DEVICE(0x05d8, 0x4005), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
65 /* Agfa Snapscan1212u */ 69 /* Agfa Snapscan1212u */
66 { USB_DEVICE(0x06bd, 0x2061), .driver_info = USB_QUIRK_NO_AUTOSUSPEND }, 70 { USB_DEVICE(0x06bd, 0x2061), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
71 /* Seagate RSS LLC */
72 { USB_DEVICE(0x0bc2, 0x3000), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
67 /* Umax [hex] Astra 3400U */ 73 /* Umax [hex] Astra 3400U */
68 { USB_DEVICE(0x1606, 0x0060), .driver_info = USB_QUIRK_NO_AUTOSUSPEND }, 74 { USB_DEVICE(0x1606, 0x0060), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
69 75
70 /* Philips PSC805 audio device */ 76 /* Philips PSC805 audio device */
71 { USB_DEVICE(0x0471, 0x0155), .driver_info = USB_QUIRK_RESET_RESUME }, 77 { USB_DEVICE(0x0471, 0x0155), .driver_info = USB_QUIRK_RESET_RESUME },
72 78
79 /* Alcor multi-card reader */
80 { USB_DEVICE(0x058f, 0x6366), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
81
82 /* Canon EOS 5D in PC Connection mode */
83 { USB_DEVICE(0x04a9, 0x3101), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
84
73 /* RIM Blackberry */ 85 /* RIM Blackberry */
74 { USB_DEVICE(0x0fca, 0x0001), .driver_info = USB_QUIRK_NO_AUTOSUSPEND }, 86 { USB_DEVICE(0x0fca, 0x0001), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
75 { USB_DEVICE(0x0fca, 0x0004), .driver_info = USB_QUIRK_NO_AUTOSUSPEND }, 87 { USB_DEVICE(0x0fca, 0x0004), .driver_info = USB_QUIRK_NO_AUTOSUSPEND },
diff --git a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c
index f2fbdc7fe376..d008d1360a7a 100644
--- a/drivers/usb/gadget/dummy_hcd.c
+++ b/drivers/usb/gadget/dummy_hcd.c
@@ -34,8 +34,6 @@
34 * bypassing some hardware (and driver) issues. UML could help too. 34 * bypassing some hardware (and driver) issues. UML could help too.
35 */ 35 */
36 36
37#define DEBUG
38
39#include <linux/module.h> 37#include <linux/module.h>
40#include <linux/kernel.h> 38#include <linux/kernel.h>
41#include <linux/delay.h> 39#include <linux/delay.h>
diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c
index be7a1bd2823b..965ad7bec7b7 100644
--- a/drivers/usb/gadget/file_storage.c
+++ b/drivers/usb/gadget/file_storage.c
@@ -599,7 +599,6 @@ enum fsg_buffer_state {
599 599
600struct fsg_buffhd { 600struct fsg_buffhd {
601 void *buf; 601 void *buf;
602 dma_addr_t dma;
603 enum fsg_buffer_state state; 602 enum fsg_buffer_state state;
604 struct fsg_buffhd *next; 603 struct fsg_buffhd *next;
605 604
@@ -1295,6 +1294,7 @@ static int class_setup_req(struct fsg_dev *fsg,
1295 struct usb_request *req = fsg->ep0req; 1294 struct usb_request *req = fsg->ep0req;
1296 int value = -EOPNOTSUPP; 1295 int value = -EOPNOTSUPP;
1297 u16 w_index = le16_to_cpu(ctrl->wIndex); 1296 u16 w_index = le16_to_cpu(ctrl->wIndex);
1297 u16 w_value = le16_to_cpu(ctrl->wValue);
1298 u16 w_length = le16_to_cpu(ctrl->wLength); 1298 u16 w_length = le16_to_cpu(ctrl->wLength);
1299 1299
1300 if (!fsg->config) 1300 if (!fsg->config)
@@ -1308,7 +1308,7 @@ static int class_setup_req(struct fsg_dev *fsg,
1308 if (ctrl->bRequestType != (USB_DIR_OUT | 1308 if (ctrl->bRequestType != (USB_DIR_OUT |
1309 USB_TYPE_CLASS | USB_RECIP_INTERFACE)) 1309 USB_TYPE_CLASS | USB_RECIP_INTERFACE))
1310 break; 1310 break;
1311 if (w_index != 0) { 1311 if (w_index != 0 || w_value != 0) {
1312 value = -EDOM; 1312 value = -EDOM;
1313 break; 1313 break;
1314 } 1314 }
@@ -1324,7 +1324,7 @@ static int class_setup_req(struct fsg_dev *fsg,
1324 if (ctrl->bRequestType != (USB_DIR_IN | 1324 if (ctrl->bRequestType != (USB_DIR_IN |
1325 USB_TYPE_CLASS | USB_RECIP_INTERFACE)) 1325 USB_TYPE_CLASS | USB_RECIP_INTERFACE))
1326 break; 1326 break;
1327 if (w_index != 0) { 1327 if (w_index != 0 || w_value != 0) {
1328 value = -EDOM; 1328 value = -EDOM;
1329 break; 1329 break;
1330 } 1330 }
@@ -1343,7 +1343,7 @@ static int class_setup_req(struct fsg_dev *fsg,
1343 if (ctrl->bRequestType != (USB_DIR_OUT | 1343 if (ctrl->bRequestType != (USB_DIR_OUT |
1344 USB_TYPE_CLASS | USB_RECIP_INTERFACE)) 1344 USB_TYPE_CLASS | USB_RECIP_INTERFACE))
1345 break; 1345 break;
1346 if (w_index != 0) { 1346 if (w_index != 0 || w_value != 0) {
1347 value = -EDOM; 1347 value = -EDOM;
1348 break; 1348 break;
1349 } 1349 }
@@ -2611,7 +2611,6 @@ static int send_status(struct fsg_dev *fsg)
2611 2611
2612 fsg->intr_buffhd = bh; // Point to the right buffhd 2612 fsg->intr_buffhd = bh; // Point to the right buffhd
2613 fsg->intreq->buf = bh->inreq->buf; 2613 fsg->intreq->buf = bh->inreq->buf;
2614 fsg->intreq->dma = bh->inreq->dma;
2615 fsg->intreq->context = bh; 2614 fsg->intreq->context = bh;
2616 start_transfer(fsg, fsg->intr_in, fsg->intreq, 2615 start_transfer(fsg, fsg->intr_in, fsg->intreq,
2617 &fsg->intreq_busy, &bh->state); 2616 &fsg->intreq_busy, &bh->state);
@@ -3200,7 +3199,6 @@ reset:
3200 if ((rc = alloc_request(fsg, fsg->bulk_out, &bh->outreq)) != 0) 3199 if ((rc = alloc_request(fsg, fsg->bulk_out, &bh->outreq)) != 0)
3201 goto reset; 3200 goto reset;
3202 bh->inreq->buf = bh->outreq->buf = bh->buf; 3201 bh->inreq->buf = bh->outreq->buf = bh->buf;
3203 bh->inreq->dma = bh->outreq->dma = bh->dma;
3204 bh->inreq->context = bh->outreq->context = bh; 3202 bh->inreq->context = bh->outreq->context = bh;
3205 bh->inreq->complete = bulk_in_complete; 3203 bh->inreq->complete = bulk_in_complete;
3206 bh->outreq->complete = bulk_out_complete; 3204 bh->outreq->complete = bulk_out_complete;
diff --git a/drivers/usb/gadget/fsl_usb2_udc.c b/drivers/usb/gadget/fsl_usb2_udc.c
index 10b2b33b8698..d57bcfbc08a5 100644
--- a/drivers/usb/gadget/fsl_usb2_udc.c
+++ b/drivers/usb/gadget/fsl_usb2_udc.c
@@ -1277,31 +1277,32 @@ static void setup_received_irq(struct fsl_udc *udc,
1277 1277
1278 udc_reset_ep_queue(udc, 0); 1278 udc_reset_ep_queue(udc, 0);
1279 1279
1280 /* We process some stardard setup requests here */
1280 switch (setup->bRequest) { 1281 switch (setup->bRequest) {
1281 /* Request that need Data+Status phase from udc */
1282 case USB_REQ_GET_STATUS: 1282 case USB_REQ_GET_STATUS:
1283 if ((setup->bRequestType & (USB_DIR_IN | USB_TYPE_STANDARD)) 1283 /* Data+Status phase from udc */
1284 if ((setup->bRequestType & (USB_DIR_IN | USB_TYPE_MASK))
1284 != (USB_DIR_IN | USB_TYPE_STANDARD)) 1285 != (USB_DIR_IN | USB_TYPE_STANDARD))
1285 break; 1286 break;
1286 ch9getstatus(udc, setup->bRequestType, wValue, wIndex, wLength); 1287 ch9getstatus(udc, setup->bRequestType, wValue, wIndex, wLength);
1287 break; 1288 return;
1288 1289
1289 /* Requests that need Status phase from udc */
1290 case USB_REQ_SET_ADDRESS: 1290 case USB_REQ_SET_ADDRESS:
1291 /* Status phase from udc */
1291 if (setup->bRequestType != (USB_DIR_OUT | USB_TYPE_STANDARD 1292 if (setup->bRequestType != (USB_DIR_OUT | USB_TYPE_STANDARD
1292 | USB_RECIP_DEVICE)) 1293 | USB_RECIP_DEVICE))
1293 break; 1294 break;
1294 ch9setaddress(udc, wValue, wIndex, wLength); 1295 ch9setaddress(udc, wValue, wIndex, wLength);
1295 break; 1296 return;
1296 1297
1297 /* Handled by udc, no data, status by udc */
1298 case USB_REQ_CLEAR_FEATURE: 1298 case USB_REQ_CLEAR_FEATURE:
1299 case USB_REQ_SET_FEATURE: 1299 case USB_REQ_SET_FEATURE:
1300 { /* status transaction */ 1300 /* Status phase from udc */
1301 {
1301 int rc = -EOPNOTSUPP; 1302 int rc = -EOPNOTSUPP;
1302 1303
1303 if ((setup->bRequestType & USB_RECIP_MASK) 1304 if ((setup->bRequestType & (USB_RECIP_MASK | USB_TYPE_MASK))
1304 == USB_RECIP_ENDPOINT) { 1305 == (USB_RECIP_ENDPOINT | USB_TYPE_STANDARD)) {
1305 int pipe = get_pipe_by_windex(wIndex); 1306 int pipe = get_pipe_by_windex(wIndex);
1306 struct fsl_ep *ep; 1307 struct fsl_ep *ep;
1307 1308
@@ -1315,8 +1316,9 @@ static void setup_received_irq(struct fsl_udc *udc,
1315 ? 1 : 0); 1316 ? 1 : 0);
1316 spin_lock(&udc->lock); 1317 spin_lock(&udc->lock);
1317 1318
1318 } else if ((setup->bRequestType & USB_RECIP_MASK) 1319 } else if ((setup->bRequestType & (USB_RECIP_MASK
1319 == USB_RECIP_DEVICE) { 1320 | USB_TYPE_MASK)) == (USB_RECIP_DEVICE
1321 | USB_TYPE_STANDARD)) {
1320 /* Note: The driver has not include OTG support yet. 1322 /* Note: The driver has not include OTG support yet.
1321 * This will be set when OTG support is added */ 1323 * This will be set when OTG support is added */
1322 if (!udc->gadget.is_otg) 1324 if (!udc->gadget.is_otg)
@@ -1329,39 +1331,42 @@ static void setup_received_irq(struct fsl_udc *udc,
1329 USB_DEVICE_A_ALT_HNP_SUPPORT) 1331 USB_DEVICE_A_ALT_HNP_SUPPORT)
1330 udc->gadget.a_alt_hnp_support = 1; 1332 udc->gadget.a_alt_hnp_support = 1;
1331 rc = 0; 1333 rc = 0;
1332 } 1334 } else
1335 break;
1336
1333 if (rc == 0) { 1337 if (rc == 0) {
1334 if (ep0_prime_status(udc, EP_DIR_IN)) 1338 if (ep0_prime_status(udc, EP_DIR_IN))
1335 ep0stall(udc); 1339 ep0stall(udc);
1336 } 1340 }
1337 break; 1341 return;
1338 } 1342 }
1339 /* Requests handled by gadget */
1340 default:
1341 if (wLength) {
1342 /* Data phase from gadget, status phase from udc */
1343 udc->ep0_dir = (setup->bRequestType & USB_DIR_IN)
1344 ? USB_DIR_IN : USB_DIR_OUT;
1345 spin_unlock(&udc->lock);
1346 if (udc->driver->setup(&udc->gadget,
1347 &udc->local_setup_buff) < 0)
1348 ep0stall(udc);
1349 spin_lock(&udc->lock);
1350 udc->ep0_state = (setup->bRequestType & USB_DIR_IN)
1351 ? DATA_STATE_XMIT : DATA_STATE_RECV;
1352 1343
1353 } else { 1344 default:
1354 /* No data phase, IN status from gadget */
1355 udc->ep0_dir = USB_DIR_IN;
1356 spin_unlock(&udc->lock);
1357 if (udc->driver->setup(&udc->gadget,
1358 &udc->local_setup_buff) < 0)
1359 ep0stall(udc);
1360 spin_lock(&udc->lock);
1361 udc->ep0_state = WAIT_FOR_OUT_STATUS;
1362 }
1363 break; 1345 break;
1364 } 1346 }
1347
1348 /* Requests handled by gadget */
1349 if (wLength) {
1350 /* Data phase from gadget, status phase from udc */
1351 udc->ep0_dir = (setup->bRequestType & USB_DIR_IN)
1352 ? USB_DIR_IN : USB_DIR_OUT;
1353 spin_unlock(&udc->lock);
1354 if (udc->driver->setup(&udc->gadget,
1355 &udc->local_setup_buff) < 0)
1356 ep0stall(udc);
1357 spin_lock(&udc->lock);
1358 udc->ep0_state = (setup->bRequestType & USB_DIR_IN)
1359 ? DATA_STATE_XMIT : DATA_STATE_RECV;
1360 } else {
1361 /* No data phase, IN status from gadget */
1362 udc->ep0_dir = USB_DIR_IN;
1363 spin_unlock(&udc->lock);
1364 if (udc->driver->setup(&udc->gadget,
1365 &udc->local_setup_buff) < 0)
1366 ep0stall(udc);
1367 spin_lock(&udc->lock);
1368 udc->ep0_state = WAIT_FOR_OUT_STATUS;
1369 }
1365} 1370}
1366 1371
1367/* Process request for Data or Status phase of ep0 1372/* Process request for Data or Status phase of ep0
diff --git a/drivers/usb/gadget/pxa2xx_udc.c b/drivers/usb/gadget/pxa2xx_udc.c
index 72b4ebbf132d..1407ad1c8128 100644
--- a/drivers/usb/gadget/pxa2xx_udc.c
+++ b/drivers/usb/gadget/pxa2xx_udc.c
@@ -967,7 +967,7 @@ static int pxa2xx_udc_pullup(struct usb_gadget *_gadget, int is_active)
967 udc = container_of(_gadget, struct pxa2xx_udc, gadget); 967 udc = container_of(_gadget, struct pxa2xx_udc, gadget);
968 968
969 /* not all boards support pullup control */ 969 /* not all boards support pullup control */
970 if (!udc->mach->udc_command) 970 if (!udc->mach->gpio_pullup && !udc->mach->udc_command)
971 return -EOPNOTSUPP; 971 return -EOPNOTSUPP;
972 972
973 is_active = (is_active != 0); 973 is_active = (is_active != 0);
@@ -2309,7 +2309,7 @@ static int pxa2xx_udc_suspend(struct platform_device *dev, pm_message_t state)
2309{ 2309{
2310 struct pxa2xx_udc *udc = platform_get_drvdata(dev); 2310 struct pxa2xx_udc *udc = platform_get_drvdata(dev);
2311 2311
2312 if (!udc->mach->udc_command) 2312 if (!udc->mach->gpio_pullup && !udc->mach->udc_command)
2313 WARN("USB host won't detect disconnect!\n"); 2313 WARN("USB host won't detect disconnect!\n");
2314 pullup(udc, 0); 2314 pullup(udc, 0);
2315 2315
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index 2f529828c74d..565d6ef4c4cf 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -237,7 +237,7 @@ config USB_SL811_CS
237 module will be called "sl811_cs". 237 module will be called "sl811_cs".
238 238
239config USB_R8A66597_HCD 239config USB_R8A66597_HCD
240 tristate "R8A66597 HCD suppoort" 240 tristate "R8A66597 HCD support"
241 depends on USB 241 depends on USB
242 help 242 help
243 The R8A66597 is a USB 2.0 host and peripheral controller. 243 The R8A66597 is a USB 2.0 host and peripheral controller.
diff --git a/drivers/usb/host/ehci-au1xxx.c b/drivers/usb/host/ehci-au1xxx.c
index 5d1b12aad776..b1d19268cb23 100644
--- a/drivers/usb/host/ehci-au1xxx.c
+++ b/drivers/usb/host/ehci-au1xxx.c
@@ -1,8 +1,6 @@
1/* 1/*
2 * EHCI HCD (Host Controller Driver) for USB. 2 * EHCI HCD (Host Controller Driver) for USB.
3 * 3 *
4 * (C) Copyright 2000-2004 David Brownell <dbrownell@users.sourceforge.net>
5 *
6 * Bus Glue for AMD Alchemy Au1xxx 4 * Bus Glue for AMD Alchemy Au1xxx
7 * 5 *
8 * Based on "ohci-au1xxx.c" by Matt Porter <mporter@kernel.crashing.org> 6 * Based on "ohci-au1xxx.c" by Matt Porter <mporter@kernel.crashing.org>
@@ -196,6 +194,9 @@ static const struct hc_driver ehci_au1xxx_hc_driver = {
196 194
197 /* 195 /*
198 * basic lifecycle operations 196 * basic lifecycle operations
197 *
198 * FIXME -- ehci_init() doesn't do enough here.
199 * See ehci-ppc-soc for a complete implementation.
199 */ 200 */
200 .reset = ehci_init, 201 .reset = ehci_init,
201 .start = ehci_run, 202 .start = ehci_run,
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index c4e15ed1405a..35cdba10411b 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -275,58 +275,6 @@ static void ehci_work(struct ehci_hcd *ehci);
275 275
276/*-------------------------------------------------------------------------*/ 276/*-------------------------------------------------------------------------*/
277 277
278#ifdef CONFIG_CPU_FREQ
279
280#include <linux/cpufreq.h>
281
282static void ehci_cpufreq_pause (struct ehci_hcd *ehci)
283{
284 unsigned long flags;
285
286 spin_lock_irqsave(&ehci->lock, flags);
287 if (!ehci->cpufreq_changing++)
288 qh_inactivate_split_intr_qhs(ehci);
289 spin_unlock_irqrestore(&ehci->lock, flags);
290}
291
292static void ehci_cpufreq_unpause (struct ehci_hcd *ehci)
293{
294 unsigned long flags;
295
296 spin_lock_irqsave(&ehci->lock, flags);
297 if (!--ehci->cpufreq_changing)
298 qh_reactivate_split_intr_qhs(ehci);
299 spin_unlock_irqrestore(&ehci->lock, flags);
300}
301
302/*
303 * ehci_cpufreq_notifier is needed to avoid MMF errors that occur when
304 * EHCI controllers that don't cache many uframes get delayed trying to
305 * read main memory during CPU frequency transitions. This can cause
306 * split interrupt transactions to not be completed in the required uframe.
307 * This has been observed on the Broadcom/ServerWorks HT1000 controller.
308 */
309static int ehci_cpufreq_notifier(struct notifier_block *nb, unsigned long val,
310 void *data)
311{
312 struct ehci_hcd *ehci = container_of(nb, struct ehci_hcd,
313 cpufreq_transition);
314
315 switch (val) {
316 case CPUFREQ_PRECHANGE:
317 ehci_cpufreq_pause(ehci);
318 break;
319 case CPUFREQ_POSTCHANGE:
320 ehci_cpufreq_unpause(ehci);
321 break;
322 }
323 return 0;
324}
325
326#endif
327
328/*-------------------------------------------------------------------------*/
329
330static void ehci_watchdog (unsigned long param) 278static void ehci_watchdog (unsigned long param)
331{ 279{
332 struct ehci_hcd *ehci = (struct ehci_hcd *) param; 280 struct ehci_hcd *ehci = (struct ehci_hcd *) param;
@@ -460,10 +408,6 @@ static void ehci_stop (struct usb_hcd *hcd)
460 ehci_writel(ehci, 0, &ehci->regs->intr_enable); 408 ehci_writel(ehci, 0, &ehci->regs->intr_enable);
461 spin_unlock_irq(&ehci->lock); 409 spin_unlock_irq(&ehci->lock);
462 410
463#ifdef CONFIG_CPU_FREQ
464 cpufreq_unregister_notifier(&ehci->cpufreq_transition,
465 CPUFREQ_TRANSITION_NOTIFIER);
466#endif
467 /* let companion controllers work when we aren't */ 411 /* let companion controllers work when we aren't */
468 ehci_writel(ehci, 0, &ehci->regs->configured_flag); 412 ehci_writel(ehci, 0, &ehci->regs->configured_flag);
469 413
@@ -569,17 +513,6 @@ static int ehci_init(struct usb_hcd *hcd)
569 } 513 }
570 ehci->command = temp; 514 ehci->command = temp;
571 515
572#ifdef CONFIG_CPU_FREQ
573 INIT_LIST_HEAD(&ehci->split_intr_qhs);
574 /*
575 * If the EHCI controller caches enough uframes, this probably
576 * isn't needed unless there are so many low/full speed devices
577 * that the controller's can't cache it all.
578 */
579 ehci->cpufreq_transition.notifier_call = ehci_cpufreq_notifier;
580 cpufreq_register_notifier(&ehci->cpufreq_transition,
581 CPUFREQ_TRANSITION_NOTIFIER);
582#endif
583 return 0; 516 return 0;
584} 517}
585 518
diff --git a/drivers/usb/host/ehci-mem.c b/drivers/usb/host/ehci-mem.c
index 8816d09903d0..0431397836f6 100644
--- a/drivers/usb/host/ehci-mem.c
+++ b/drivers/usb/host/ehci-mem.c
@@ -94,9 +94,6 @@ static struct ehci_qh *ehci_qh_alloc (struct ehci_hcd *ehci, gfp_t flags)
94 qh->qh_dma = dma; 94 qh->qh_dma = dma;
95 // INIT_LIST_HEAD (&qh->qh_list); 95 // INIT_LIST_HEAD (&qh->qh_list);
96 INIT_LIST_HEAD (&qh->qtd_list); 96 INIT_LIST_HEAD (&qh->qtd_list);
97#ifdef CONFIG_CPU_FREQ
98 INIT_LIST_HEAD (&qh->split_intr_qhs);
99#endif
100 97
101 /* dummy td enables safe urb queuing */ 98 /* dummy td enables safe urb queuing */
102 qh->dummy = ehci_qtd_alloc (ehci, flags); 99 qh->dummy = ehci_qtd_alloc (ehci, flags);
diff --git a/drivers/usb/host/ehci-ppc-soc.c b/drivers/usb/host/ehci-ppc-soc.c
index c2cedb09ed8b..4f99b0eb27bc 100644
--- a/drivers/usb/host/ehci-ppc-soc.c
+++ b/drivers/usb/host/ehci-ppc-soc.c
@@ -6,7 +6,7 @@
6 * Bus Glue for PPC On-Chip EHCI driver 6 * Bus Glue for PPC On-Chip EHCI driver
7 * Tested on AMCC 440EPx 7 * Tested on AMCC 440EPx
8 * 8 *
9 * Based on "ehci-au12xx.c" by David Brownell <dbrownell@users.sourceforge.net> 9 * Based on "ehci-au1xxx.c" by K.Boge <karsten.boge@amd.com>
10 * 10 *
11 * This file is licenced under the GPL. 11 * This file is licenced under the GPL.
12 */ 12 */
@@ -15,6 +15,24 @@
15 15
16extern int usb_disabled(void); 16extern int usb_disabled(void);
17 17
18/* called during probe() after chip reset completes */
19static int ehci_ppc_soc_setup(struct usb_hcd *hcd)
20{
21 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
22 int retval;
23
24 retval = ehci_halt(ehci);
25 if (retval)
26 return retval;
27
28 retval = ehci_init(hcd);
29 if (retval)
30 return retval;
31
32 ehci->sbrn = 0x20;
33 return ehci_reset(ehci);
34}
35
18/** 36/**
19 * usb_ehci_ppc_soc_probe - initialize PPC-SoC-based HCDs 37 * usb_ehci_ppc_soc_probe - initialize PPC-SoC-based HCDs
20 * Context: !in_interrupt() 38 * Context: !in_interrupt()
@@ -120,7 +138,7 @@ static const struct hc_driver ehci_ppc_soc_hc_driver = {
120 /* 138 /*
121 * basic lifecycle operations 139 * basic lifecycle operations
122 */ 140 */
123 .reset = ehci_init, 141 .reset = ehci_ppc_soc_setup,
124 .start = ehci_run, 142 .start = ehci_run,
125 .stop = ehci_stop, 143 .stop = ehci_stop,
126 .shutdown = ehci_shutdown, 144 .shutdown = ehci_shutdown,
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
index 2284028f8aa5..140bfa423e07 100644
--- a/drivers/usb/host/ehci-q.c
+++ b/drivers/usb/host/ehci-q.c
@@ -312,10 +312,6 @@ qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh)
312 struct urb *urb; 312 struct urb *urb;
313 u32 token = 0; 313 u32 token = 0;
314 314
315 /* ignore QHs that are currently inactive */
316 if (qh->hw_info1 & __constant_cpu_to_le32(QH_INACTIVATE))
317 break;
318
319 qtd = list_entry (entry, struct ehci_qtd, qtd_list); 315 qtd = list_entry (entry, struct ehci_qtd, qtd_list);
320 urb = qtd->urb; 316 urb = qtd->urb;
321 317
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
index d4a8ace49676..e682f2342ef8 100644
--- a/drivers/usb/host/ehci-sched.c
+++ b/drivers/usb/host/ehci-sched.c
@@ -479,109 +479,6 @@ static int disable_periodic (struct ehci_hcd *ehci)
479} 479}
480 480
481/*-------------------------------------------------------------------------*/ 481/*-------------------------------------------------------------------------*/
482#ifdef CONFIG_CPU_FREQ
483
484static int safe_to_modify_i (struct ehci_hcd *ehci, struct ehci_qh *qh)
485{
486 int now; /* current (frame * 8) + uframe */
487 int prev_start, next_start; /* uframes from/to split start */
488 int start_uframe = ffs(le32_to_cpup (&qh->hw_info2) & QH_SMASK);
489 int end_uframe = fls((le32_to_cpup (&qh->hw_info2) & QH_CMASK) >> 8);
490 int split_duration = end_uframe - start_uframe;
491
492 now = readl(&ehci->regs->frame_index) % (ehci->periodic_size << 3);
493
494 next_start = ((1024 << 3) + (qh->start << 3) + start_uframe - now)
495 % (qh->period << 3);
496 prev_start = (qh->period << 3) - next_start;
497
498 /*
499 * Make sure there will be at least one uframe when qh is safe.
500 */
501 if ((qh->period << 3) <= (ehci->i_thresh + 2 + split_duration))
502 /* never safe */
503 return -EINVAL;
504
505 /*
506 * Wait 1 uframe after transaction should have started, to make
507 * sure controller has time to write back overlay, so we can
508 * check QTD_STS_STS to see if transaction is in progress.
509 */
510 if ((next_start > ehci->i_thresh) && (prev_start > 1))
511 /* safe to set "i" bit if split isn't in progress */
512 return (qh->hw_token & STATUS_BIT(ehci)) ? 0 : 1;
513 else
514 return 0;
515}
516
517/* Set inactivate bit for all the split interrupt QHs. */
518static void qh_inactivate_split_intr_qhs (struct ehci_hcd *ehci)
519{
520 struct ehci_qh *qh;
521 int not_done, safe;
522 u32 inactivate = INACTIVATE_BIT(ehci);
523 u32 active = ACTIVE_BIT(ehci);
524
525 do {
526 not_done = 0;
527 list_for_each_entry(qh, &ehci->split_intr_qhs,
528 split_intr_qhs) {
529 if (qh->hw_info1 & inactivate)
530 /* already off */
531 continue;
532 /*
533 * To avoid setting "I" after the start split happens,
534 * don't set it if the QH might be cached in the
535 * controller. Some HCs (Broadcom/ServerWorks HT1000)
536 * will stop in the middle of a split transaction when
537 * the "I" bit is set.
538 */
539 safe = safe_to_modify_i(ehci, qh);
540 if (safe == 0) {
541 not_done = 1;
542 } else if (safe > 0) {
543 qh->was_active = qh->hw_token & active;
544 qh->hw_info1 |= inactivate;
545 }
546 }
547 } while (not_done);
548 wmb();
549}
550
551static void qh_reactivate_split_intr_qhs (struct ehci_hcd *ehci)
552{
553 struct ehci_qh *qh;
554 u32 token;
555 int not_done, safe;
556 u32 inactivate = INACTIVATE_BIT(ehci);
557 u32 active = ACTIVE_BIT(ehci);
558 u32 halt = HALT_BIT(ehci);
559
560 do {
561 not_done = 0;
562 list_for_each_entry(qh, &ehci->split_intr_qhs, split_intr_qhs) {
563 if (!(qh->hw_info1 & inactivate)) /* already on */
564 continue;
565 /*
566 * Don't reactivate if cached, or controller might
567 * overwrite overlay after we modify it!
568 */
569 safe = safe_to_modify_i(ehci, qh);
570 if (safe == 0) {
571 not_done = 1;
572 } else if (safe > 0) {
573 /* See EHCI 1.0 section 4.15.2.4. */
574 token = qh->hw_token;
575 qh->hw_token = (token | halt) & ~active;
576 wmb();
577 qh->hw_info1 &= ~inactivate;
578 wmb();
579 qh->hw_token = (token & ~halt) | qh->was_active;
580 }
581 }
582 } while (not_done);
583}
584#endif
585 482
586/* periodic schedule slots have iso tds (normal or split) first, then a 483/* periodic schedule slots have iso tds (normal or split) first, then a
587 * sparse tree for active interrupt transfers. 484 * sparse tree for active interrupt transfers.
@@ -599,17 +496,6 @@ static int qh_link_periodic (struct ehci_hcd *ehci, struct ehci_qh *qh)
599 period, hc32_to_cpup(ehci, &qh->hw_info2) & (QH_CMASK | QH_SMASK), 496 period, hc32_to_cpup(ehci, &qh->hw_info2) & (QH_CMASK | QH_SMASK),
600 qh, qh->start, qh->usecs, qh->c_usecs); 497 qh, qh->start, qh->usecs, qh->c_usecs);
601 498
602#ifdef CONFIG_CPU_FREQ
603 /*
604 * If low/full speed interrupt QHs are inactive (because of
605 * cpufreq changing processor speeds), start QH with I flag set--
606 * it will automatically be cleared when cpufreq is done.
607 */
608 if (ehci->cpufreq_changing)
609 if (!(qh->hw_info1 & (cpu_to_le32(1 << 13))))
610 qh->hw_info1 |= INACTIVATE_BIT(ehci);
611#endif
612
613 /* high bandwidth, or otherwise every microframe */ 499 /* high bandwidth, or otherwise every microframe */
614 if (period == 0) 500 if (period == 0)
615 period = 1; 501 period = 1;
@@ -658,12 +544,6 @@ static int qh_link_periodic (struct ehci_hcd *ehci, struct ehci_qh *qh)
658 ? ((qh->usecs + qh->c_usecs) / qh->period) 544 ? ((qh->usecs + qh->c_usecs) / qh->period)
659 : (qh->usecs * 8); 545 : (qh->usecs * 8);
660 546
661#ifdef CONFIG_CPU_FREQ
662 /* add qh to list of low/full speed interrupt QHs, if applicable */
663 if (!(qh->hw_info1 & (cpu_to_le32(1 << 13)))) {
664 list_add(&qh->split_intr_qhs, &ehci->split_intr_qhs);
665 }
666#endif
667 /* maybe enable periodic schedule processing */ 547 /* maybe enable periodic schedule processing */
668 if (!ehci->periodic_sched++) 548 if (!ehci->periodic_sched++)
669 return enable_periodic (ehci); 549 return enable_periodic (ehci);
@@ -683,13 +563,6 @@ static void qh_unlink_periodic (struct ehci_hcd *ehci, struct ehci_qh *qh)
683 // THEN 563 // THEN
684 // qh->hw_info1 |= __constant_cpu_to_hc32(1 << 7 /* "ignore" */); 564 // qh->hw_info1 |= __constant_cpu_to_hc32(1 << 7 /* "ignore" */);
685 565
686#ifdef CONFIG_CPU_FREQ
687 /* remove qh from list of low/full speed interrupt QHs */
688 if (!(qh->hw_info1 & (cpu_to_le32(1 << 13)))) {
689 list_del_init(&qh->split_intr_qhs);
690 }
691#endif
692
693 /* high bandwidth, or otherwise part of every microframe */ 566 /* high bandwidth, or otherwise part of every microframe */
694 if ((period = qh->period) == 0) 567 if ((period = qh->period) == 0)
695 period = 1; 568 period = 1;
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index 2c68a04230c1..951d69fec513 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -71,12 +71,6 @@ struct ehci_hcd { /* one per controller */
71 __u32 hcs_params; /* cached register copy */ 71 __u32 hcs_params; /* cached register copy */
72 spinlock_t lock; 72 spinlock_t lock;
73 73
74#ifdef CONFIG_CPU_FREQ
75 struct notifier_block cpufreq_transition;
76 int cpufreq_changing;
77 struct list_head split_intr_qhs;
78#endif
79
80 /* async schedule support */ 74 /* async schedule support */
81 struct ehci_qh *async; 75 struct ehci_qh *async;
82 struct ehci_qh *reclaim; 76 struct ehci_qh *reclaim;
@@ -439,10 +433,6 @@ struct ehci_qh {
439 __hc32 hw_next; /* see EHCI 3.6.1 */ 433 __hc32 hw_next; /* see EHCI 3.6.1 */
440 __hc32 hw_info1; /* see EHCI 3.6.2 */ 434 __hc32 hw_info1; /* see EHCI 3.6.2 */
441#define QH_HEAD 0x00008000 435#define QH_HEAD 0x00008000
442#define QH_INACTIVATE 0x00000080
443
444#define INACTIVATE_BIT(ehci) cpu_to_hc32(ehci, QH_INACTIVATE)
445
446 __hc32 hw_info2; /* see EHCI 3.6.2 */ 436 __hc32 hw_info2; /* see EHCI 3.6.2 */
447#define QH_SMASK 0x000000ff 437#define QH_SMASK 0x000000ff
448#define QH_CMASK 0x0000ff00 438#define QH_CMASK 0x0000ff00
@@ -492,10 +482,6 @@ struct ehci_qh {
492 unsigned short start; /* where polling starts */ 482 unsigned short start; /* where polling starts */
493#define NO_FRAME ((unsigned short)~0) /* pick new start */ 483#define NO_FRAME ((unsigned short)~0) /* pick new start */
494 struct usb_device *dev; /* access to TT */ 484 struct usb_device *dev; /* access to TT */
495#ifdef CONFIG_CPU_FREQ
496 struct list_head split_intr_qhs; /* list of split qhs */
497 __le32 was_active; /* active bit before "i" set */
498#endif
499} __attribute__ ((aligned (32))); 485} __attribute__ ((aligned (32)));
500 486
501/*-------------------------------------------------------------------------*/ 487/*-------------------------------------------------------------------------*/
diff --git a/drivers/usb/host/ohci-dbg.c b/drivers/usb/host/ohci-dbg.c
index 6f9e43e9a6ca..f61c6cdd06f2 100644
--- a/drivers/usb/host/ohci-dbg.c
+++ b/drivers/usb/host/ohci-dbg.c
@@ -74,7 +74,7 @@ urb_print (struct urb * urb, char * str, int small)
74 74
75#define ohci_dbg_sw(ohci, next, size, format, arg...) \ 75#define ohci_dbg_sw(ohci, next, size, format, arg...) \
76 do { \ 76 do { \
77 if (next) { \ 77 if (next != NULL) { \
78 unsigned s_len; \ 78 unsigned s_len; \
79 s_len = scnprintf (*next, *size, format, ## arg ); \ 79 s_len = scnprintf (*next, *size, format, ## arg ); \
80 *size -= s_len; *next += s_len; \ 80 *size -= s_len; *next += s_len; \
diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c
index d60f1985320c..40a1de4c256e 100644
--- a/drivers/usb/host/r8a66597-hcd.c
+++ b/drivers/usb/host/r8a66597-hcd.c
@@ -2208,8 +2208,6 @@ static int __init r8a66597_probe(struct platform_device *pdev)
2208clean_up: 2208clean_up:
2209 if (reg) 2209 if (reg)
2210 iounmap(reg); 2210 iounmap(reg);
2211 if (res)
2212 release_mem_region(res->start, 1);
2213 2211
2214 return ret; 2212 return ret;
2215} 2213}
diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c
index 7f765ec038cd..b88eb3c62c02 100644
--- a/drivers/usb/host/u132-hcd.c
+++ b/drivers/usb/host/u132-hcd.c
@@ -1520,12 +1520,15 @@ static void u132_hcd_endp_work_scheduler(struct work_struct *work)
1520 } 1520 }
1521 } 1521 }
1522} 1522}
1523#ifdef CONFIG_PM
1523 1524
1524static void port_power(struct u132 *u132, int pn, int is_on) 1525static void port_power(struct u132 *u132, int pn, int is_on)
1525{ 1526{
1526 u132->port[pn].power = is_on; 1527 u132->port[pn].power = is_on;
1527} 1528}
1528 1529
1530#endif
1531
1529static void u132_power(struct u132 *u132, int is_on) 1532static void u132_power(struct u132 *u132, int is_on)
1530{ 1533{
1531 struct usb_hcd *hcd = u132_to_hcd(u132) 1534 struct usb_hcd *hcd = u132_to_hcd(u132)
diff --git a/drivers/usb/serial/airprime.c b/drivers/usb/serial/airprime.c
index cff6fd190a28..77bb893bf2e9 100644
--- a/drivers/usb/serial/airprime.c
+++ b/drivers/usb/serial/airprime.c
@@ -18,7 +18,6 @@
18 18
19static struct usb_device_id id_table [] = { 19static struct usb_device_id id_table [] = {
20 { USB_DEVICE(0x0c88, 0x17da) }, /* Kyocera Wireless KPC650/Passport */ 20 { USB_DEVICE(0x0c88, 0x17da) }, /* Kyocera Wireless KPC650/Passport */
21 { USB_DEVICE(0x413c, 0x8115) }, /* Dell Wireless HSDPA 5500 */
22 { }, 21 { },
23}; 22};
24MODULE_DEVICE_TABLE(usb, id_table); 23MODULE_DEVICE_TABLE(usb, id_table);
diff --git a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c
index e67ce25f7512..86724e885704 100644
--- a/drivers/usb/serial/belkin_sa.c
+++ b/drivers/usb/serial/belkin_sa.c
@@ -383,6 +383,10 @@ static void belkin_sa_set_termios (struct usb_serial_port *port, struct ktermios
383 } 383 }
384 384
385 baud = tty_get_baud_rate(port->tty); 385 baud = tty_get_baud_rate(port->tty);
386 if (baud == 0) {
387 dbg("%s - tty_get_baud_rate says 0 baud", __FUNCTION__);
388 return;
389 }
386 urb_value = BELKIN_SA_BAUD(baud); 390 urb_value = BELKIN_SA_BAUD(baud);
387 /* Clip to maximum speed */ 391 /* Clip to maximum speed */
388 if (urb_value == 0) 392 if (urb_value == 0)
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 7b1673a44077..1370c423d7c2 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -538,6 +538,8 @@ static struct usb_device_id id_table_combined [] = {
538 { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_VCP_PID) }, 538 { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_VCP_PID) },
539 { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_D2XX_PID) }, 539 { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_D2XX_PID) },
540 { USB_DEVICE(EVOLUTION_VID, EVOLUTION_ER1_PID) }, 540 { USB_DEVICE(EVOLUTION_VID, EVOLUTION_ER1_PID) },
541 { USB_DEVICE(EVOLUTION_VID, EVO_HYBRID_PID) },
542 { USB_DEVICE(EVOLUTION_VID, EVO_RCM4_PID) },
541 { USB_DEVICE(FTDI_VID, FTDI_ARTEMIS_PID) }, 543 { USB_DEVICE(FTDI_VID, FTDI_ARTEMIS_PID) },
542 { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16_PID) }, 544 { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16_PID) },
543 { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16C_PID) }, 545 { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16C_PID) },
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
index d9e49716db13..c70e1de6389e 100644
--- a/drivers/usb/serial/ftdi_sio.h
+++ b/drivers/usb/serial/ftdi_sio.h
@@ -430,6 +430,9 @@
430 */ 430 */
431#define EVOLUTION_VID 0xDEEE /* Vendor ID */ 431#define EVOLUTION_VID 0xDEEE /* Vendor ID */
432#define EVOLUTION_ER1_PID 0x0300 /* ER1 Control Module */ 432#define EVOLUTION_ER1_PID 0x0300 /* ER1 Control Module */
433#define EVO_8U232AM_PID 0x02FF /* Evolution robotics RCM2 (FT232AM)*/
434#define EVO_HYBRID_PID 0x0302 /* Evolution robotics RCM4 PID (FT232BM)*/
435#define EVO_RCM4_PID 0x0303 /* Evolution robotics RCM4 PID */
433 436
434/* Pyramid Computer GmbH */ 437/* Pyramid Computer GmbH */
435#define FTDI_PYRAMID_PID 0xE6C8 /* Pyramid Appliance Display */ 438#define FTDI_PYRAMID_PID 0xE6C8 /* Pyramid Appliance Display */
diff --git a/drivers/usb/serial/garmin_gps.c b/drivers/usb/serial/garmin_gps.c
index 04bd3b7a2985..f1c90cfe7251 100644
--- a/drivers/usb/serial/garmin_gps.c
+++ b/drivers/usb/serial/garmin_gps.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Garmin GPS driver 2 * Garmin GPS driver
3 * 3 *
4 * Copyright (C) 2006 Hermann Kneissel herkne@users.sourceforge.net 4 * Copyright (C) 2006,2007 Hermann Kneissel herkne@users.sourceforge.net
5 * 5 *
6 * The latest version of the driver can be found at 6 * The latest version of the driver can be found at
7 * http://sourceforge.net/projects/garmin-gps/ 7 * http://sourceforge.net/projects/garmin-gps/
@@ -34,6 +34,7 @@
34#include <linux/module.h> 34#include <linux/module.h>
35#include <linux/spinlock.h> 35#include <linux/spinlock.h>
36#include <asm/uaccess.h> 36#include <asm/uaccess.h>
37#include <asm/atomic.h>
37#include <linux/usb.h> 38#include <linux/usb.h>
38#include <linux/usb/serial.h> 39#include <linux/usb/serial.h>
39 40
@@ -52,7 +53,7 @@ static int debug = 0;
52 */ 53 */
53 54
54#define VERSION_MAJOR 0 55#define VERSION_MAJOR 0
55#define VERSION_MINOR 28 56#define VERSION_MINOR 31
56 57
57#define _STR(s) #s 58#define _STR(s) #s
58#define _DRIVER_VERSION(a,b) "v" _STR(a) "." _STR(b) 59#define _DRIVER_VERSION(a,b) "v" _STR(a) "." _STR(b)
@@ -141,6 +142,8 @@ struct garmin_data {
141 __u8 inbuffer [GPS_IN_BUFSIZ]; /* tty -> usb */ 142 __u8 inbuffer [GPS_IN_BUFSIZ]; /* tty -> usb */
142 __u8 outbuffer[GPS_OUT_BUFSIZ]; /* usb -> tty */ 143 __u8 outbuffer[GPS_OUT_BUFSIZ]; /* usb -> tty */
143 __u8 privpkt[4*6]; 144 __u8 privpkt[4*6];
145 atomic_t req_count;
146 atomic_t resp_count;
144 spinlock_t lock; 147 spinlock_t lock;
145 struct list_head pktlist; 148 struct list_head pktlist;
146}; 149};
@@ -171,8 +174,6 @@ struct garmin_data {
171#define CLEAR_HALT_REQUIRED 0x0001 174#define CLEAR_HALT_REQUIRED 0x0001
172 175
173#define FLAGS_QUEUING 0x0100 176#define FLAGS_QUEUING 0x0100
174#define FLAGS_APP_RESP_SEEN 0x0200
175#define FLAGS_APP_REQ_SEEN 0x0400
176#define FLAGS_DROP_DATA 0x0800 177#define FLAGS_DROP_DATA 0x0800
177 178
178#define FLAGS_GSP_SKIP 0x1000 179#define FLAGS_GSP_SKIP 0x1000
@@ -186,7 +187,8 @@ struct garmin_data {
186/* function prototypes */ 187/* function prototypes */
187static void gsp_next_packet(struct garmin_data * garmin_data_p); 188static void gsp_next_packet(struct garmin_data * garmin_data_p);
188static int garmin_write_bulk(struct usb_serial_port *port, 189static int garmin_write_bulk(struct usb_serial_port *port,
189 const unsigned char *buf, int count); 190 const unsigned char *buf, int count,
191 int dismiss_ack);
190 192
191/* some special packets to be send or received */ 193/* some special packets to be send or received */
192static unsigned char const GARMIN_START_SESSION_REQ[] 194static unsigned char const GARMIN_START_SESSION_REQ[]
@@ -233,9 +235,7 @@ static struct usb_driver garmin_driver = {
233 235
234static inline int noResponseFromAppLayer(struct garmin_data * garmin_data_p) 236static inline int noResponseFromAppLayer(struct garmin_data * garmin_data_p)
235{ 237{
236 return ((garmin_data_p->flags 238 return atomic_read(&garmin_data_p->req_count) == atomic_read(&garmin_data_p->resp_count);
237 & (FLAGS_APP_REQ_SEEN|FLAGS_APP_RESP_SEEN))
238 == FLAGS_APP_REQ_SEEN);
239} 239}
240 240
241 241
@@ -463,7 +463,7 @@ static int gsp_rec_packet(struct garmin_data * garmin_data_p, int count)
463 usbdata[2] = __cpu_to_le32(size); 463 usbdata[2] = __cpu_to_le32(size);
464 464
465 garmin_write_bulk (garmin_data_p->port, garmin_data_p->inbuffer, 465 garmin_write_bulk (garmin_data_p->port, garmin_data_p->inbuffer,
466 GARMIN_PKTHDR_LENGTH+size); 466 GARMIN_PKTHDR_LENGTH+size, 0);
467 467
468 /* if this was an abort-transfer command, flush all 468 /* if this was an abort-transfer command, flush all
469 queued data. */ 469 queued data. */
@@ -818,7 +818,7 @@ static int nat_receive(struct garmin_data * garmin_data_p,
818 if (garmin_data_p->insize >= len) { 818 if (garmin_data_p->insize >= len) {
819 garmin_write_bulk (garmin_data_p->port, 819 garmin_write_bulk (garmin_data_p->port,
820 garmin_data_p->inbuffer, 820 garmin_data_p->inbuffer,
821 len); 821 len, 0);
822 garmin_data_p->insize = 0; 822 garmin_data_p->insize = 0;
823 823
824 /* if this was an abort-transfer command, 824 /* if this was an abort-transfer command,
@@ -893,10 +893,11 @@ static int garmin_clear(struct garmin_data * garmin_data_p)
893 893
894 struct usb_serial_port *port = garmin_data_p->port; 894 struct usb_serial_port *port = garmin_data_p->port;
895 895
896 if (port != NULL && garmin_data_p->flags & FLAGS_APP_RESP_SEEN) { 896 if (port != NULL && atomic_read(&garmin_data_p->resp_count)) {
897 /* send a terminate command */ 897 /* send a terminate command */
898 status = garmin_write_bulk(port, GARMIN_STOP_TRANSFER_REQ, 898 status = garmin_write_bulk(port, GARMIN_STOP_TRANSFER_REQ,
899 sizeof(GARMIN_STOP_TRANSFER_REQ)); 899 sizeof(GARMIN_STOP_TRANSFER_REQ),
900 1);
900 } 901 }
901 902
902 /* flush all queued data */ 903 /* flush all queued data */
@@ -939,7 +940,8 @@ static int garmin_init_session(struct usb_serial_port *port)
939 dbg("%s - starting session ...", __FUNCTION__); 940 dbg("%s - starting session ...", __FUNCTION__);
940 garmin_data_p->state = STATE_ACTIVE; 941 garmin_data_p->state = STATE_ACTIVE;
941 status = garmin_write_bulk(port, GARMIN_START_SESSION_REQ, 942 status = garmin_write_bulk(port, GARMIN_START_SESSION_REQ,
942 sizeof(GARMIN_START_SESSION_REQ)); 943 sizeof(GARMIN_START_SESSION_REQ),
944 0);
943 945
944 if (status >= 0) { 946 if (status >= 0) {
945 947
@@ -950,7 +952,8 @@ static int garmin_init_session(struct usb_serial_port *port)
950 /* not needed, but the win32 driver does it too ... */ 952 /* not needed, but the win32 driver does it too ... */
951 status = garmin_write_bulk(port, 953 status = garmin_write_bulk(port,
952 GARMIN_START_SESSION_REQ2, 954 GARMIN_START_SESSION_REQ2,
953 sizeof(GARMIN_START_SESSION_REQ2)); 955 sizeof(GARMIN_START_SESSION_REQ2),
956 0);
954 if (status >= 0) { 957 if (status >= 0) {
955 status = 0; 958 status = 0;
956 spin_lock_irqsave(&garmin_data_p->lock, flags); 959 spin_lock_irqsave(&garmin_data_p->lock, flags);
@@ -987,6 +990,8 @@ static int garmin_open (struct usb_serial_port *port, struct file *filp)
987 garmin_data_p->mode = initial_mode; 990 garmin_data_p->mode = initial_mode;
988 garmin_data_p->count = 0; 991 garmin_data_p->count = 0;
989 garmin_data_p->flags = 0; 992 garmin_data_p->flags = 0;
993 atomic_set(&garmin_data_p->req_count, 0);
994 atomic_set(&garmin_data_p->resp_count, 0);
990 spin_unlock_irqrestore(&garmin_data_p->lock, flags); 995 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
991 996
992 /* shutdown any bulk reads that might be going on */ 997 /* shutdown any bulk reads that might be going on */
@@ -1035,28 +1040,39 @@ static void garmin_write_bulk_callback (struct urb *urb)
1035{ 1040{
1036 unsigned long flags; 1041 unsigned long flags;
1037 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1042 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
1038 struct garmin_data * garmin_data_p = usb_get_serial_port_data(port);
1039 int status = urb->status; 1043 int status = urb->status;
1040 1044
1041 /* free up the transfer buffer, as usb_free_urb() does not do this */ 1045 if (port) {
1042 kfree (urb->transfer_buffer); 1046 struct garmin_data * garmin_data_p = usb_get_serial_port_data(port);
1043 1047
1044 dbg("%s - port %d", __FUNCTION__, port->number); 1048 dbg("%s - port %d", __FUNCTION__, port->number);
1045 1049
1046 if (status) { 1050 if (GARMIN_LAYERID_APPL == getLayerId(urb->transfer_buffer)
1047 dbg("%s - nonzero write bulk status received: %d", 1051 && (garmin_data_p->mode == MODE_GARMIN_SERIAL)) {
1048 __FUNCTION__, status); 1052 gsp_send_ack(garmin_data_p, ((__u8 *)urb->transfer_buffer)[4]);
1049 spin_lock_irqsave(&garmin_data_p->lock, flags); 1053 }
1050 garmin_data_p->flags |= CLEAR_HALT_REQUIRED; 1054
1051 spin_unlock_irqrestore(&garmin_data_p->lock, flags); 1055 if (status) {
1056 dbg("%s - nonzero write bulk status received: %d",
1057 __FUNCTION__, urb->status);
1058 spin_lock_irqsave(&garmin_data_p->lock, flags);
1059 garmin_data_p->flags |= CLEAR_HALT_REQUIRED;
1060 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1061 }
1062
1063 usb_serial_port_softint(port);
1052 } 1064 }
1053 1065
1054 usb_serial_port_softint(port); 1066 /* Ignore errors that resulted from garmin_write_bulk with dismiss_ack=1 */
1067
1068 /* free up the transfer buffer, as usb_free_urb() does not do this */
1069 kfree (urb->transfer_buffer);
1055} 1070}
1056 1071
1057 1072
1058static int garmin_write_bulk (struct usb_serial_port *port, 1073static int garmin_write_bulk (struct usb_serial_port *port,
1059 const unsigned char *buf, int count) 1074 const unsigned char *buf, int count,
1075 int dismiss_ack)
1060{ 1076{
1061 unsigned long flags; 1077 unsigned long flags;
1062 struct usb_serial *serial = port->serial; 1078 struct usb_serial *serial = port->serial;
@@ -1093,13 +1109,12 @@ static int garmin_write_bulk (struct usb_serial_port *port,
1093 usb_sndbulkpipe (serial->dev, 1109 usb_sndbulkpipe (serial->dev,
1094 port->bulk_out_endpointAddress), 1110 port->bulk_out_endpointAddress),
1095 buffer, count, 1111 buffer, count,
1096 garmin_write_bulk_callback, port); 1112 garmin_write_bulk_callback,
1113 dismiss_ack ? NULL : port);
1097 urb->transfer_flags |= URB_ZERO_PACKET; 1114 urb->transfer_flags |= URB_ZERO_PACKET;
1098 1115
1099 if (GARMIN_LAYERID_APPL == getLayerId(buffer)) { 1116 if (GARMIN_LAYERID_APPL == getLayerId(buffer)) {
1100 spin_lock_irqsave(&garmin_data_p->lock, flags); 1117 atomic_inc(&garmin_data_p->req_count);
1101 garmin_data_p->flags |= FLAGS_APP_REQ_SEEN;
1102 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1103 if (garmin_data_p->mode == MODE_GARMIN_SERIAL) { 1118 if (garmin_data_p->mode == MODE_GARMIN_SERIAL) {
1104 pkt_clear(garmin_data_p); 1119 pkt_clear(garmin_data_p);
1105 garmin_data_p->state = STATE_GSP_WAIT_DATA; 1120 garmin_data_p->state = STATE_GSP_WAIT_DATA;
@@ -1114,13 +1129,6 @@ static int garmin_write_bulk (struct usb_serial_port *port,
1114 "failed with status = %d\n", 1129 "failed with status = %d\n",
1115 __FUNCTION__, status); 1130 __FUNCTION__, status);
1116 count = status; 1131 count = status;
1117 } else {
1118
1119 if (GARMIN_LAYERID_APPL == getLayerId(buffer)
1120 && (garmin_data_p->mode == MODE_GARMIN_SERIAL)) {
1121
1122 gsp_send_ack(garmin_data_p, buffer[4]);
1123 }
1124 } 1132 }
1125 1133
1126 /* we are done with this urb, so let the host driver 1134 /* we are done with this urb, so let the host driver
@@ -1135,7 +1143,6 @@ static int garmin_write_bulk (struct usb_serial_port *port,
1135static int garmin_write (struct usb_serial_port *port, 1143static int garmin_write (struct usb_serial_port *port,
1136 const unsigned char *buf, int count) 1144 const unsigned char *buf, int count)
1137{ 1145{
1138 unsigned long flags;
1139 int pktid, pktsiz, len; 1146 int pktid, pktsiz, len;
1140 struct garmin_data * garmin_data_p = usb_get_serial_port_data(port); 1147 struct garmin_data * garmin_data_p = usb_get_serial_port_data(port);
1141 __le32 *privpkt = (__le32 *)garmin_data_p->privpkt; 1148 __le32 *privpkt = (__le32 *)garmin_data_p->privpkt;
@@ -1186,9 +1193,7 @@ static int garmin_write (struct usb_serial_port *port,
1186 break; 1193 break;
1187 1194
1188 case PRIV_PKTID_RESET_REQ: 1195 case PRIV_PKTID_RESET_REQ:
1189 spin_lock_irqsave(&garmin_data_p->lock, flags); 1196 atomic_inc(&garmin_data_p->req_count);
1190 garmin_data_p->flags |= FLAGS_APP_REQ_SEEN;
1191 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1192 break; 1197 break;
1193 1198
1194 case PRIV_PKTID_SET_DEF_MODE: 1199 case PRIV_PKTID_SET_DEF_MODE:
@@ -1241,8 +1246,6 @@ static int garmin_chars_in_buffer (struct usb_serial_port *port)
1241static void garmin_read_process(struct garmin_data * garmin_data_p, 1246static void garmin_read_process(struct garmin_data * garmin_data_p,
1242 unsigned char *data, unsigned data_length) 1247 unsigned char *data, unsigned data_length)
1243{ 1248{
1244 unsigned long flags;
1245
1246 if (garmin_data_p->flags & FLAGS_DROP_DATA) { 1249 if (garmin_data_p->flags & FLAGS_DROP_DATA) {
1247 /* abort-transfer cmd is actice */ 1250 /* abort-transfer cmd is actice */
1248 dbg("%s - pkt dropped", __FUNCTION__); 1251 dbg("%s - pkt dropped", __FUNCTION__);
@@ -1254,9 +1257,7 @@ static void garmin_read_process(struct garmin_data * garmin_data_p,
1254 the device */ 1257 the device */
1255 if (0 == memcmp(data, GARMIN_APP_LAYER_REPLY, 1258 if (0 == memcmp(data, GARMIN_APP_LAYER_REPLY,
1256 sizeof(GARMIN_APP_LAYER_REPLY))) { 1259 sizeof(GARMIN_APP_LAYER_REPLY))) {
1257 spin_lock_irqsave(&garmin_data_p->lock, flags); 1260 atomic_inc(&garmin_data_p->resp_count);
1258 garmin_data_p->flags |= FLAGS_APP_RESP_SEEN;
1259 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1260 } 1261 }
1261 1262
1262 /* if throttling is active or postprecessing is required 1263 /* if throttling is active or postprecessing is required
diff --git a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c
index 0455c1552ae9..6a3a704b5849 100644
--- a/drivers/usb/serial/ipaq.c
+++ b/drivers/usb/serial/ipaq.c
@@ -545,6 +545,7 @@ static struct usb_device_id ipaq_id_table [] = {
545 { USB_DEVICE(0x413C, 0x4009) }, /* Dell Axim USB Sync */ 545 { USB_DEVICE(0x413C, 0x4009) }, /* Dell Axim USB Sync */
546 { USB_DEVICE(0x4505, 0x0010) }, /* Smartphone */ 546 { USB_DEVICE(0x4505, 0x0010) }, /* Smartphone */
547 { USB_DEVICE(0x5E04, 0xCE00) }, /* SAGEM Wireless Assistant */ 547 { USB_DEVICE(0x5E04, 0xCE00) }, /* SAGEM Wireless Assistant */
548 { USB_DEVICE(0x0BB4, 0x00CF) }, /* HTC smartphone modems */
548 { } /* Terminating entry */ 549 { } /* Terminating entry */
549}; 550};
550 551
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 84c12b5f1271..4cb3c165742b 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -110,6 +110,7 @@ static int option_send_setup(struct usb_serial_port *port);
110#define HUAWEI_PRODUCT_E220 0x1003 110#define HUAWEI_PRODUCT_E220 0x1003
111 111
112#define NOVATELWIRELESS_VENDOR_ID 0x1410 112#define NOVATELWIRELESS_VENDOR_ID 0x1410
113#define DELL_VENDOR_ID 0x413C
113 114
114#define ANYDATA_VENDOR_ID 0x16d5 115#define ANYDATA_VENDOR_ID 0x16d5
115#define ANYDATA_PRODUCT_ADU_E100A 0x6501 116#define ANYDATA_PRODUCT_ADU_E100A 0x6501
@@ -119,8 +120,6 @@ static int option_send_setup(struct usb_serial_port *port);
119#define BANDRICH_PRODUCT_C100_1 0x1002 120#define BANDRICH_PRODUCT_C100_1 0x1002
120#define BANDRICH_PRODUCT_C100_2 0x1003 121#define BANDRICH_PRODUCT_C100_2 0x1003
121 122
122#define DELL_VENDOR_ID 0x413C
123
124static struct usb_device_id option_ids[] = { 123static struct usb_device_id option_ids[] = {
125 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, 124 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
126 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, 125 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
@@ -171,11 +170,16 @@ static struct usb_device_id option_ids[] = {
171 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2110) }, /* Novatel Merlin ES620 / Merlin ES720 / Ovation U720 */ 170 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2110) }, /* Novatel Merlin ES620 / Merlin ES720 / Ovation U720 */
172 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2130) }, /* Novatel Merlin ES620 SM Bus */ 171 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2130) }, /* Novatel Merlin ES620 SM Bus */
173 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2410) }, /* Novatel EU740 */ 172 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2410) }, /* Novatel EU740 */
173 { USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */
174 { USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
175 { USB_DEVICE(DELL_VENDOR_ID, 0x8116) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
176 { USB_DEVICE(DELL_VENDOR_ID, 0x8117) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO ExpressCard == Novatel Merlin XV620 CDMA/EV-DO */
177 { USB_DEVICE(DELL_VENDOR_ID, 0x8118) }, /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard == Novatel Merlin XU870 HSDPA/3G */
178 { USB_DEVICE(DELL_VENDOR_ID, 0x8128) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite E720 CDMA/EV-DO */
174 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, 179 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) },
175 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) }, 180 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
176 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) }, 181 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) },
177 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) }, 182 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },
178 { USB_DEVICE(DELL_VENDOR_ID, 0x8118) }, /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard */
179 { } /* Terminating entry */ 183 { } /* Terminating entry */
180}; 184};
181MODULE_DEVICE_TABLE(usb, option_ids); 185MODULE_DEVICE_TABLE(usb, option_ids);
diff --git a/drivers/usb/serial/oti6858.c b/drivers/usb/serial/oti6858.c
index d7db71eca520..833ada47fc54 100644
--- a/drivers/usb/serial/oti6858.c
+++ b/drivers/usb/serial/oti6858.c
@@ -818,19 +818,17 @@ static int oti6858_ioctl(struct usb_serial_port *port, struct file *file,
818 818
819 switch (cmd) { 819 switch (cmd) {
820 case TCGETS: 820 case TCGETS:
821 if (copy_to_user(user_arg, port->tty->termios, 821 if (kernel_termios_to_user_termios((struct ktermios __user *)arg,
822 sizeof(struct ktermios))) { 822 port->tty->termios))
823 return -EFAULT; 823 return -EFAULT;
824 }
825 return 0; 824 return 0;
826 825
827 case TCSETS: 826 case TCSETS:
828 case TCSETSW: /* FIXME: this is not the same! */ 827 case TCSETSW: /* FIXME: this is not the same! */
829 case TCSETSF: /* FIXME: this is not the same! */ 828 case TCSETSF: /* FIXME: this is not the same! */
830 if (copy_from_user(port->tty->termios, user_arg, 829 if (user_termios_to_kernel_termios(port->tty->termios,
831 sizeof(struct ktermios))) { 830 (struct ktermios __user *)arg))
832 return -EFAULT; 831 return -EFAULT;
833 }
834 oti6858_set_termios(port, NULL); 832 oti6858_set_termios(port, NULL);
835 return 0; 833 return 0;
836 834
diff --git a/drivers/usb/serial/safe_serial.c b/drivers/usb/serial/safe_serial.c
index 86899d55d8d8..51669b7622bb 100644
--- a/drivers/usb/serial/safe_serial.c
+++ b/drivers/usb/serial/safe_serial.c
@@ -74,13 +74,13 @@
74#include <linux/usb/serial.h> 74#include <linux/usb/serial.h>
75 75
76 76
77#ifndef CONFIG_USB_SAFE_PADDED 77#ifndef CONFIG_USB_SERIAL_SAFE_PADDED
78#define CONFIG_USB_SAFE_PADDED 0 78#define CONFIG_USB_SERIAL_SAFE_PADDED 0
79#endif 79#endif
80 80
81static int debug; 81static int debug;
82static int safe = 1; 82static int safe = 1;
83static int padded = CONFIG_USB_SAFE_PADDED; 83static int padded = CONFIG_USB_SERIAL_SAFE_PADDED;
84 84
85#define DRIVER_VERSION "v0.0b" 85#define DRIVER_VERSION "v0.0b"
86#define DRIVER_AUTHOR "sl@lineo.com, tbr@lineo.com" 86#define DRIVER_AUTHOR "sl@lineo.com, tbr@lineo.com"
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
index 7d84a7647e81..30e08c0bcdc2 100644
--- a/drivers/usb/serial/visor.c
+++ b/drivers/usb/serial/visor.c
@@ -104,6 +104,8 @@ static struct usb_device_id id_table [] = {
104 .driver_info = (kernel_ulong_t)&palm_os_4_probe }, 104 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
105 { USB_DEVICE(SONY_VENDOR_ID, SONY_CLIE_TJ25_ID), 105 { USB_DEVICE(SONY_VENDOR_ID, SONY_CLIE_TJ25_ID),
106 .driver_info = (kernel_ulong_t)&palm_os_4_probe }, 106 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
107 { USB_DEVICE(ACER_VENDOR_ID, ACER_S10_ID),
108 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
107 { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SCH_I330_ID), 109 { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SCH_I330_ID),
108 .driver_info = (kernel_ulong_t)&palm_os_4_probe }, 110 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
109 { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SPH_I500_ID), 111 { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SPH_I500_ID),
diff --git a/drivers/usb/serial/visor.h b/drivers/usb/serial/visor.h
index 4ce6f62a6f39..57229cf66477 100644
--- a/drivers/usb/serial/visor.h
+++ b/drivers/usb/serial/visor.h
@@ -48,6 +48,9 @@
48#define SONY_CLIE_UX50_ID 0x0144 48#define SONY_CLIE_UX50_ID 0x0144
49#define SONY_CLIE_TJ25_ID 0x0169 49#define SONY_CLIE_TJ25_ID 0x0169
50 50
51#define ACER_VENDOR_ID 0x0502
52#define ACER_S10_ID 0x0001
53
51#define SAMSUNG_VENDOR_ID 0x04E8 54#define SAMSUNG_VENDOR_ID 0x04E8
52#define SAMSUNG_SCH_I330_ID 0x8001 55#define SAMSUNG_SCH_I330_ID 0x8001
53#define SAMSUNG_SPH_I500_ID 0x6601 56#define SAMSUNG_SPH_I500_ID 0x6601
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index d8d008d42946..2d92ce31018f 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -342,7 +342,7 @@ UNUSUAL_DEV( 0x04b0, 0x040d, 0x0100, 0x0100,
342 US_FL_FIX_CAPACITY), 342 US_FL_FIX_CAPACITY),
343 343
344/* Reported by Emil Larsson <emil@swip.net> */ 344/* Reported by Emil Larsson <emil@swip.net> */
345UNUSUAL_DEV( 0x04b0, 0x0411, 0x0100, 0x0100, 345UNUSUAL_DEV( 0x04b0, 0x0411, 0x0100, 0x0101,
346 "NIKON", 346 "NIKON",
347 "NIKON DSC D80", 347 "NIKON DSC D80",
348 US_SC_DEVICE, US_PR_DEVICE, NULL, 348 US_SC_DEVICE, US_PR_DEVICE, NULL,
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
index 28842d208bb0..25e557d4fe6b 100644
--- a/drivers/usb/storage/usb.c
+++ b/drivers/usb/storage/usb.c
@@ -112,13 +112,6 @@ module_param(delay_use, uint, S_IRUGO | S_IWUSR);
112MODULE_PARM_DESC(delay_use, "seconds to delay before using a new device"); 112MODULE_PARM_DESC(delay_use, "seconds to delay before using a new device");
113 113
114 114
115/* These are used to make sure the module doesn't unload before all the
116 * threads have exited.
117 */
118static atomic_t total_threads = ATOMIC_INIT(0);
119static DECLARE_COMPLETION(threads_gone);
120
121
122/* 115/*
123 * The entries in this table correspond, line for line, 116 * The entries in this table correspond, line for line,
124 * with the entries of us_unusual_dev_list[]. 117 * with the entries of us_unusual_dev_list[].
@@ -879,9 +872,6 @@ static void quiesce_and_remove_host(struct us_data *us)
879 usb_stor_stop_transport(us); 872 usb_stor_stop_transport(us);
880 wake_up(&us->delay_wait); 873 wake_up(&us->delay_wait);
881 874
882 /* It doesn't matter if the SCSI-scanning thread is still running.
883 * The thread will exit when it sees the DISCONNECTING flag. */
884
885 /* queuecommand won't accept any new commands and the control 875 /* queuecommand won't accept any new commands and the control
886 * thread won't execute a previously-queued command. If there 876 * thread won't execute a previously-queued command. If there
887 * is such a command pending, complete it with an error. */ 877 * is such a command pending, complete it with an error. */
@@ -891,12 +881,16 @@ static void quiesce_and_remove_host(struct us_data *us)
891 scsi_lock(host); 881 scsi_lock(host);
892 us->srb->scsi_done(us->srb); 882 us->srb->scsi_done(us->srb);
893 us->srb = NULL; 883 us->srb = NULL;
884 complete(&us->notify); /* in case of an abort */
894 scsi_unlock(host); 885 scsi_unlock(host);
895 } 886 }
896 mutex_unlock(&us->dev_mutex); 887 mutex_unlock(&us->dev_mutex);
897 888
898 /* Now we own no commands so it's safe to remove the SCSI host */ 889 /* Now we own no commands so it's safe to remove the SCSI host */
899 scsi_remove_host(host); 890 scsi_remove_host(host);
891
892 /* Wait for the SCSI-scanning thread to stop */
893 wait_for_completion(&us->scanning_done);
900} 894}
901 895
902/* Second stage of disconnect processing: deallocate all resources */ 896/* Second stage of disconnect processing: deallocate all resources */
@@ -947,9 +941,8 @@ retry:
947 /* Should we unbind if no devices were detected? */ 941 /* Should we unbind if no devices were detected? */
948 } 942 }
949 943
950 scsi_host_put(us_to_host(us));
951 usb_autopm_put_interface(us->pusb_intf); 944 usb_autopm_put_interface(us->pusb_intf);
952 complete_and_exit(&threads_gone, 0); 945 complete_and_exit(&us->scanning_done, 0);
953} 946}
954 947
955 948
@@ -984,6 +977,7 @@ static int storage_probe(struct usb_interface *intf,
984 init_MUTEX_LOCKED(&(us->sema)); 977 init_MUTEX_LOCKED(&(us->sema));
985 init_completion(&(us->notify)); 978 init_completion(&(us->notify));
986 init_waitqueue_head(&us->delay_wait); 979 init_waitqueue_head(&us->delay_wait);
980 init_completion(&us->scanning_done);
987 981
988 /* Associate the us_data structure with the USB device */ 982 /* Associate the us_data structure with the USB device */
989 result = associate_dev(us, intf); 983 result = associate_dev(us, intf);
@@ -1033,11 +1027,6 @@ static int storage_probe(struct usb_interface *intf,
1033 goto BadDevice; 1027 goto BadDevice;
1034 } 1028 }
1035 1029
1036 /* Take a reference to the host for the scanning thread and
1037 * count it among all the threads we have launched. Then
1038 * start it up. */
1039 scsi_host_get(us_to_host(us));
1040 atomic_inc(&total_threads);
1041 usb_autopm_get_interface(intf); /* dropped in the scanning thread */ 1030 usb_autopm_get_interface(intf); /* dropped in the scanning thread */
1042 wake_up_process(th); 1031 wake_up_process(th);
1043 1032
@@ -1104,16 +1093,6 @@ static void __exit usb_stor_exit(void)
1104 US_DEBUGP("-- calling usb_deregister()\n"); 1093 US_DEBUGP("-- calling usb_deregister()\n");
1105 usb_deregister(&usb_storage_driver) ; 1094 usb_deregister(&usb_storage_driver) ;
1106 1095
1107 /* Don't return until all of our control and scanning threads
1108 * have exited. Since each thread signals threads_gone as its
1109 * last act, we have to call wait_for_completion the right number
1110 * of times.
1111 */
1112 while (atomic_read(&total_threads) > 0) {
1113 wait_for_completion(&threads_gone);
1114 atomic_dec(&total_threads);
1115 }
1116
1117 usb_usual_clear_present(USB_US_TYPE_STOR); 1096 usb_usual_clear_present(USB_US_TYPE_STOR);
1118} 1097}
1119 1098
diff --git a/drivers/usb/storage/usb.h b/drivers/usb/storage/usb.h
index 6445665b1577..8d87503e2560 100644
--- a/drivers/usb/storage/usb.h
+++ b/drivers/usb/storage/usb.h
@@ -150,6 +150,7 @@ struct us_data {
150 struct semaphore sema; /* to sleep thread on */ 150 struct semaphore sema; /* to sleep thread on */
151 struct completion notify; /* thread begin/end */ 151 struct completion notify; /* thread begin/end */
152 wait_queue_head_t delay_wait; /* wait during scan, reset */ 152 wait_queue_head_t delay_wait; /* wait during scan, reset */
153 struct completion scanning_done; /* wait for scan thread */
153 154
154 /* subdriver information */ 155 /* subdriver information */
155 void *extra; /* Any extra data */ 156 void *extra; /* Any extra data */
diff --git a/drivers/video/au1100fb.c b/drivers/video/au1100fb.c
index 80a81eccad36..832e4613673a 100644
--- a/drivers/video/au1100fb.c
+++ b/drivers/video/au1100fb.c
@@ -115,6 +115,52 @@ static int nocursor = 0;
115module_param(nocursor, int, 0644); 115module_param(nocursor, int, 0644);
116MODULE_PARM_DESC(nocursor, "cursor enable/disable"); 116MODULE_PARM_DESC(nocursor, "cursor enable/disable");
117 117
118/* fb_blank
119 * Blank the screen. Depending on the mode, the screen will be
120 * activated with the backlight color, or desactivated
121 */
122static int au1100fb_fb_blank(int blank_mode, struct fb_info *fbi)
123{
124 struct au1100fb_device *fbdev = to_au1100fb_device(fbi);
125
126 print_dbg("fb_blank %d %p", blank_mode, fbi);
127
128 switch (blank_mode) {
129
130 case VESA_NO_BLANKING:
131 /* Turn on panel */
132 fbdev->regs->lcd_control |= LCD_CONTROL_GO;
133#ifdef CONFIG_MIPS_PB1100
134 if (drv_info.panel_idx == 1) {
135 au_writew(au_readw(PB1100_G_CONTROL)
136 | (PB1100_G_CONTROL_BL | PB1100_G_CONTROL_VDD),
137 PB1100_G_CONTROL);
138 }
139#endif
140 au_sync();
141 break;
142
143 case VESA_VSYNC_SUSPEND:
144 case VESA_HSYNC_SUSPEND:
145 case VESA_POWERDOWN:
146 /* Turn off panel */
147 fbdev->regs->lcd_control &= ~LCD_CONTROL_GO;
148#ifdef CONFIG_MIPS_PB1100
149 if (drv_info.panel_idx == 1) {
150 au_writew(au_readw(PB1100_G_CONTROL)
151 & ~(PB1100_G_CONTROL_BL | PB1100_G_CONTROL_VDD),
152 PB1100_G_CONTROL);
153 }
154#endif
155 au_sync();
156 break;
157 default:
158 break;
159
160 }
161 return 0;
162}
163
118/* 164/*
119 * Set hardware with var settings. This will enable the controller with a specific 165 * Set hardware with var settings. This will enable the controller with a specific
120 * mode, normally validated with the fb_check_var method 166 * mode, normally validated with the fb_check_var method
@@ -272,52 +318,6 @@ int au1100fb_fb_setcolreg(unsigned regno, unsigned red, unsigned green, unsigned
272 return 0; 318 return 0;
273} 319}
274 320
275/* fb_blank
276 * Blank the screen. Depending on the mode, the screen will be
277 * activated with the backlight color, or desactivated
278 */
279int au1100fb_fb_blank(int blank_mode, struct fb_info *fbi)
280{
281 struct au1100fb_device *fbdev = to_au1100fb_device(fbi);
282
283 print_dbg("fb_blank %d %p", blank_mode, fbi);
284
285 switch (blank_mode) {
286
287 case VESA_NO_BLANKING:
288 /* Turn on panel */
289 fbdev->regs->lcd_control |= LCD_CONTROL_GO;
290#ifdef CONFIG_MIPS_PB1100
291 if (drv_info.panel_idx == 1) {
292 au_writew(au_readw(PB1100_G_CONTROL)
293 | (PB1100_G_CONTROL_BL | PB1100_G_CONTROL_VDD),
294 PB1100_G_CONTROL);
295 }
296#endif
297 au_sync();
298 break;
299
300 case VESA_VSYNC_SUSPEND:
301 case VESA_HSYNC_SUSPEND:
302 case VESA_POWERDOWN:
303 /* Turn off panel */
304 fbdev->regs->lcd_control &= ~LCD_CONTROL_GO;
305#ifdef CONFIG_MIPS_PB1100
306 if (drv_info.panel_idx == 1) {
307 au_writew(au_readw(PB1100_G_CONTROL)
308 & ~(PB1100_G_CONTROL_BL | PB1100_G_CONTROL_VDD),
309 PB1100_G_CONTROL);
310 }
311#endif
312 au_sync();
313 break;
314 default:
315 break;
316
317 }
318 return 0;
319}
320
321/* fb_pan_display 321/* fb_pan_display
322 * Pan display in x and/or y as specified 322 * Pan display in x and/or y as specified
323 */ 323 */
diff --git a/drivers/video/bw2.c b/drivers/video/bw2.c
index 718b9f83736e..833b10c84064 100644
--- a/drivers/video/bw2.c
+++ b/drivers/video/bw2.c
@@ -233,9 +233,9 @@ static u8 bw2regs_66hz[] __devinitdata = {
233 0x10, 0x20, 0 233 0x10, 0x20, 0
234}; 234};
235 235
236static void __devinit bw2_do_default_mode(struct bw2_par *par, 236static int __devinit bw2_do_default_mode(struct bw2_par *par,
237 struct fb_info *info, 237 struct fb_info *info,
238 int *linebytes) 238 int *linebytes)
239{ 239{
240 u8 status, mon; 240 u8 status, mon;
241 u8 *p; 241 u8 *p;
@@ -266,17 +266,18 @@ static void __devinit bw2_do_default_mode(struct bw2_par *par,
266 break; 266 break;
267 267
268 case BWTWO_SR_ID_NOCONN: 268 case BWTWO_SR_ID_NOCONN:
269 return; 269 return 0;
270 270
271 default: 271 default:
272 prom_printf("bw2: can't handle SR %02x\n", 272 printk(KERN_ERR "bw2: can't handle SR %02x\n",
273 status); 273 status);
274 prom_halt(); 274 return -EINVAL;
275 } 275 }
276 for ( ; *p; p += 2) { 276 for ( ; *p; p += 2) {
277 u8 __iomem *regp = &((u8 __iomem *)par->regs)[p[0]]; 277 u8 __iomem *regp = &((u8 __iomem *)par->regs)[p[0]];
278 sbus_writeb(p[1], regp); 278 sbus_writeb(p[1], regp);
279 } 279 }
280 return 0;
280} 281}
281 282
282static int __devinit bw2_probe(struct of_device *op, const struct of_device_id *match) 283static int __devinit bw2_probe(struct of_device *op, const struct of_device_id *match)
@@ -312,8 +313,11 @@ static int __devinit bw2_probe(struct of_device *op, const struct of_device_id *
312 if (!par->regs) 313 if (!par->regs)
313 goto out_release_fb; 314 goto out_release_fb;
314 315
315 if (!of_find_property(dp, "width", NULL)) 316 if (!of_find_property(dp, "width", NULL)) {
316 bw2_do_default_mode(par, info, &linebytes); 317 err = bw2_do_default_mode(par, info, &linebytes);
318 if (err)
319 goto out_unmap_regs;
320 }
317 321
318 par->fbsize = PAGE_ALIGN(linebytes * info->var.yres); 322 par->fbsize = PAGE_ALIGN(linebytes * info->var.yres);
319 323
diff --git a/drivers/video/cg3.c b/drivers/video/cg3.c
index 5741b46ade1b..a5c7fb331527 100644
--- a/drivers/video/cg3.c
+++ b/drivers/video/cg3.c
@@ -315,7 +315,7 @@ static u_char cg3_dacvals[] __devinitdata = {
315 4, 0xff, 5, 0x00, 6, 0x70, 7, 0x00, 0 315 4, 0xff, 5, 0x00, 6, 0x70, 7, 0x00, 0
316}; 316};
317 317
318static void __devinit cg3_do_default_mode(struct cg3_par *par) 318static int __devinit cg3_do_default_mode(struct cg3_par *par)
319{ 319{
320 enum cg3_type type; 320 enum cg3_type type;
321 u8 *p; 321 u8 *p;
@@ -332,10 +332,9 @@ static void __devinit cg3_do_default_mode(struct cg3_par *par)
332 else 332 else
333 type = CG3_AT_66HZ; 333 type = CG3_AT_66HZ;
334 } else { 334 } else {
335 prom_printf("cgthree: can't handle SR %02x\n", 335 printk(KERN_ERR "cgthree: can't handle SR %02x\n",
336 status); 336 status);
337 prom_halt(); 337 return -EINVAL;
338 return;
339 } 338 }
340 } 339 }
341 340
@@ -351,6 +350,7 @@ static void __devinit cg3_do_default_mode(struct cg3_par *par)
351 regp = (u8 __iomem *)&par->regs->cmap.control; 350 regp = (u8 __iomem *)&par->regs->cmap.control;
352 sbus_writeb(p[1], regp); 351 sbus_writeb(p[1], regp);
353 } 352 }
353 return 0;
354} 354}
355 355
356static int __devinit cg3_probe(struct of_device *op, 356static int __devinit cg3_probe(struct of_device *op,
@@ -400,8 +400,11 @@ static int __devinit cg3_probe(struct of_device *op,
400 400
401 cg3_blank(0, info); 401 cg3_blank(0, info);
402 402
403 if (!of_find_property(dp, "width", NULL)) 403 if (!of_find_property(dp, "width", NULL)) {
404 cg3_do_default_mode(par); 404 err = cg3_do_default_mode(par);
405 if (err)
406 goto out_unmap_screen;
407 }
405 408
406 if (fb_alloc_cmap(&info->cmap, 256, 0)) 409 if (fb_alloc_cmap(&info->cmap, 256, 0))
407 goto out_unmap_screen; 410 goto out_unmap_screen;
diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig
index 49643969f9f8..5db6b1e489b0 100644
--- a/drivers/video/console/Kconfig
+++ b/drivers/video/console/Kconfig
@@ -145,7 +145,7 @@ config FRAMEBUFFER_CONSOLE_ROTATION
145 oriented. 145 oriented.
146 146
147config STI_CONSOLE 147config STI_CONSOLE
148 tristate "STI text console" 148 bool "STI text console"
149 depends on PARISC 149 depends on PARISC
150 default y 150 default y
151 help 151 help
diff --git a/drivers/video/console/newport_con.c b/drivers/video/console/newport_con.c
index 7fa1afeae8dc..dda0586ab3f3 100644
--- a/drivers/video/console/newport_con.c
+++ b/drivers/video/console/newport_con.c
@@ -738,9 +738,8 @@ const struct consw newport_con = {
738#ifdef MODULE 738#ifdef MODULE
739static int __init newport_console_init(void) 739static int __init newport_console_init(void)
740{ 740{
741
742 if (!sgi_gfxaddr) 741 if (!sgi_gfxaddr)
743 return NULL; 742 return 0;
744 743
745 if (!npregs) 744 if (!npregs)
746 npregs = (struct newport_regs *)/* ioremap cannot fail */ 745 npregs = (struct newport_regs *)/* ioremap cannot fail */
diff --git a/drivers/video/console/sticore.c b/drivers/video/console/sticore.c
index 870017d44970..e9ab657f0bb7 100644
--- a/drivers/video/console/sticore.c
+++ b/drivers/video/console/sticore.c
@@ -232,18 +232,14 @@ sti_bmove(struct sti_struct *sti, int src_y, int src_x,
232} 232}
233 233
234 234
235/* FIXME: Do we have another solution for this ? */ 235static void sti_flush(unsigned long start, unsigned long end)
236static void sti_flush(unsigned long from, unsigned long len)
237{ 236{
238 flush_data_cache(); 237 flush_icache_range(start, end);
239 flush_kernel_dcache_range(from, len);
240 flush_icache_range(from, from+len);
241} 238}
242 239
243void __devinit 240void __devinit
244sti_rom_copy(unsigned long base, unsigned long count, void *dest) 241sti_rom_copy(unsigned long base, unsigned long count, void *dest)
245{ 242{
246 unsigned long dest_len = count;
247 unsigned long dest_start = (unsigned long) dest; 243 unsigned long dest_start = (unsigned long) dest;
248 244
249 /* this still needs to be revisited (see arch/parisc/mm/init.c:246) ! */ 245 /* this still needs to be revisited (see arch/parisc/mm/init.c:246) ! */
@@ -260,7 +256,7 @@ sti_rom_copy(unsigned long base, unsigned long count, void *dest)
260 dest++; 256 dest++;
261 } 257 }
262 258
263 sti_flush(dest_start, dest_len); 259 sti_flush(dest_start, (unsigned long)dest);
264} 260}
265 261
266 262
@@ -663,7 +659,6 @@ sti_bmode_font_raw(struct sti_cooked_font *f)
663static void __devinit 659static void __devinit
664sti_bmode_rom_copy(unsigned long base, unsigned long count, void *dest) 660sti_bmode_rom_copy(unsigned long base, unsigned long count, void *dest)
665{ 661{
666 unsigned long dest_len = count;
667 unsigned long dest_start = (unsigned long) dest; 662 unsigned long dest_start = (unsigned long) dest;
668 663
669 while (count) { 664 while (count) {
@@ -672,7 +667,8 @@ sti_bmode_rom_copy(unsigned long base, unsigned long count, void *dest)
672 base += 4; 667 base += 4;
673 dest++; 668 dest++;
674 } 669 }
675 sti_flush(dest_start, dest_len); 670
671 sti_flush(dest_start, (unsigned long)dest);
676} 672}
677 673
678static struct sti_rom * __devinit 674static struct sti_rom * __devinit
diff --git a/drivers/video/imsttfb.c b/drivers/video/imsttfb.c
index 5715b8ad0ddc..94f4511023d8 100644
--- a/drivers/video/imsttfb.c
+++ b/drivers/video/imsttfb.c
@@ -1391,7 +1391,7 @@ init_imstt(struct fb_info *info)
1391 } 1391 }
1392 } 1392 }
1393 1393
1394#if USE_NV_MODES && defined(CONFIG_PPC) 1394#if USE_NV_MODES && defined(CONFIG_PPC32)
1395 { 1395 {
1396 int vmode = init_vmode, cmode = init_cmode; 1396 int vmode = init_vmode, cmode = init_cmode;
1397 1397
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c
index 81e571d59b50..a280a52f8efe 100644
--- a/drivers/video/pxafb.c
+++ b/drivers/video/pxafb.c
@@ -66,7 +66,7 @@ static void set_ctrlr_state(struct pxafb_info *fbi, u_int state);
66 66
67#ifdef CONFIG_FB_PXA_PARAMETERS 67#ifdef CONFIG_FB_PXA_PARAMETERS
68#define PXAFB_OPTIONS_SIZE 256 68#define PXAFB_OPTIONS_SIZE 256
69static char g_options[PXAFB_OPTIONS_SIZE] __initdata = ""; 69static char g_options[PXAFB_OPTIONS_SIZE] __devinitdata = "";
70#endif 70#endif
71 71
72static inline void pxafb_schedule_work(struct pxafb_info *fbi, u_int state) 72static inline void pxafb_schedule_work(struct pxafb_info *fbi, u_int state)
diff --git a/drivers/w1/w1_int.c b/drivers/w1/w1_int.c
index 2fbd8dd16df5..6840dfebe4d4 100644
--- a/drivers/w1/w1_int.c
+++ b/drivers/w1/w1_int.c
@@ -170,22 +170,24 @@ void __w1_remove_master_device(struct w1_master *dev)
170 170
171void w1_remove_master_device(struct w1_bus_master *bm) 171void w1_remove_master_device(struct w1_bus_master *bm)
172{ 172{
173 struct w1_master *dev = NULL; 173 struct w1_master *dev, *found = NULL;
174 174
175 list_for_each_entry(dev, &w1_masters, w1_master_entry) { 175 list_for_each_entry(dev, &w1_masters, w1_master_entry) {
176 if (!dev->initialized) 176 if (!dev->initialized)
177 continue; 177 continue;
178 178
179 if (dev->bus_master->data == bm->data) 179 if (dev->bus_master->data == bm->data) {
180 found = dev;
180 break; 181 break;
182 }
181 } 183 }
182 184
183 if (!dev) { 185 if (!found) {
184 printk(KERN_ERR "Device doesn't exist.\n"); 186 printk(KERN_ERR "Device doesn't exist.\n");
185 return; 187 return;
186 } 188 }
187 189
188 __w1_remove_master_device(dev); 190 __w1_remove_master_device(found);
189} 191}
190 192
191EXPORT_SYMBOL(w1_add_master_device); 193EXPORT_SYMBOL(w1_add_master_device);
diff --git a/drivers/zorro/zorro-sysfs.c b/drivers/zorro/zorro-sysfs.c
index 9130f1c12c26..808b4f8675c5 100644
--- a/drivers/zorro/zorro-sysfs.c
+++ b/drivers/zorro/zorro-sysfs.c
@@ -78,7 +78,7 @@ static ssize_t zorro_read_config(struct kobject *kobj,
78static struct bin_attribute zorro_config_attr = { 78static struct bin_attribute zorro_config_attr = {
79 .attr = { 79 .attr = {
80 .name = "config", 80 .name = "config",
81 .mode = S_IRUGO | S_IWUSR, 81 .mode = S_IRUGO,
82 }, 82 },
83 .size = sizeof(struct ConfigDev), 83 .size = sizeof(struct ConfigDev),
84 .read = zorro_read_config, 84 .read = zorro_read_config,
diff --git a/fs/9p/fid.c b/fs/9p/fid.c
index 08fa320b7e6d..15e05a15b575 100644
--- a/fs/9p/fid.c
+++ b/fs/9p/fid.c
@@ -92,23 +92,6 @@ struct p9_fid *v9fs_fid_lookup(struct dentry *dentry)
92 return fid; 92 return fid;
93} 93}
94 94
95struct p9_fid *v9fs_fid_lookup_remove(struct dentry *dentry)
96{
97 struct p9_fid *fid;
98 struct v9fs_dentry *dent;
99
100 dent = dentry->d_fsdata;
101 fid = v9fs_fid_lookup(dentry);
102 if (!IS_ERR(fid)) {
103 spin_lock(&dent->lock);
104 list_del(&fid->dlist);
105 spin_unlock(&dent->lock);
106 }
107
108 return fid;
109}
110
111
112/** 95/**
113 * v9fs_fid_clone - lookup the fid for a dentry, clone a private copy and 96 * v9fs_fid_clone - lookup the fid for a dentry, clone a private copy and
114 * release it 97 * release it
diff --git a/fs/9p/fid.h b/fs/9p/fid.h
index 47a0ba742872..26e07df783b9 100644
--- a/fs/9p/fid.h
+++ b/fs/9p/fid.h
@@ -28,6 +28,5 @@ struct v9fs_dentry {
28}; 28};
29 29
30struct p9_fid *v9fs_fid_lookup(struct dentry *dentry); 30struct p9_fid *v9fs_fid_lookup(struct dentry *dentry);
31struct p9_fid *v9fs_fid_lookup_remove(struct dentry *dentry);
32struct p9_fid *v9fs_fid_clone(struct dentry *dentry); 31struct p9_fid *v9fs_fid_clone(struct dentry *dentry);
33int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid); 32int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid);
diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c
index 2d4c8a3e604e..45ff3d63b758 100644
--- a/fs/autofs4/root.c
+++ b/fs/autofs4/root.c
@@ -587,19 +587,20 @@ static struct dentry *autofs4_lookup(struct inode *dir, struct dentry *dentry, s
587 unhashed = autofs4_lookup_unhashed(sbi, dentry->d_parent, &dentry->d_name); 587 unhashed = autofs4_lookup_unhashed(sbi, dentry->d_parent, &dentry->d_name);
588 if (!unhashed) { 588 if (!unhashed) {
589 /* 589 /*
590 * Mark the dentry incomplete, but add it. This is needed so 590 * Mark the dentry incomplete but don't hash it. We do this
591 * that the VFS layer knows about the dentry, and we can count 591 * to serialize our inode creation operations (symlink and
592 * on catching any lookups through the revalidate. 592 * mkdir) which prevents deadlock during the callback to
593 * 593 * the daemon. Subsequent user space lookups for the same
594 * Let all the hard work be done by the revalidate function that 594 * dentry are placed on the wait queue while the daemon
595 * needs to be able to do this anyway.. 595 * itself is allowed passage unresticted so the create
596 * 596 * operation itself can then hash the dentry. Finally,
597 * We need to do this before we release the directory semaphore. 597 * we check for the hashed dentry and return the newly
598 * hashed dentry.
598 */ 599 */
599 dentry->d_op = &autofs4_root_dentry_operations; 600 dentry->d_op = &autofs4_root_dentry_operations;
600 601
601 dentry->d_fsdata = NULL; 602 dentry->d_fsdata = NULL;
602 d_add(dentry, NULL); 603 d_instantiate(dentry, NULL);
603 } else { 604 } else {
604 struct autofs_info *ino = autofs4_dentry_ino(unhashed); 605 struct autofs_info *ino = autofs4_dentry_ino(unhashed);
605 DPRINTK("rehash %p with %p", dentry, unhashed); 606 DPRINTK("rehash %p with %p", dentry, unhashed);
@@ -607,15 +608,17 @@ static struct dentry *autofs4_lookup(struct inode *dir, struct dentry *dentry, s
607 * If we are racing with expire the request might not 608 * If we are racing with expire the request might not
608 * be quite complete but the directory has been removed 609 * be quite complete but the directory has been removed
609 * so it must have been successful, so just wait for it. 610 * so it must have been successful, so just wait for it.
611 * We need to ensure the AUTOFS_INF_EXPIRING flag is clear
612 * before continuing as revalidate may fail when calling
613 * try_to_fill_dentry (returning EAGAIN) if we don't.
610 */ 614 */
611 if (ino && (ino->flags & AUTOFS_INF_EXPIRING)) { 615 while (ino && (ino->flags & AUTOFS_INF_EXPIRING)) {
612 DPRINTK("wait for incomplete expire %p name=%.*s", 616 DPRINTK("wait for incomplete expire %p name=%.*s",
613 unhashed, unhashed->d_name.len, 617 unhashed, unhashed->d_name.len,
614 unhashed->d_name.name); 618 unhashed->d_name.name);
615 autofs4_wait(sbi, unhashed, NFY_NONE); 619 autofs4_wait(sbi, unhashed, NFY_NONE);
616 DPRINTK("request completed"); 620 DPRINTK("request completed");
617 } 621 }
618 d_rehash(unhashed);
619 dentry = unhashed; 622 dentry = unhashed;
620 } 623 }
621 624
@@ -658,7 +661,7 @@ static struct dentry *autofs4_lookup(struct inode *dir, struct dentry *dentry, s
658 * for all system calls, but it should be OK for the operations 661 * for all system calls, but it should be OK for the operations
659 * we permit from an autofs. 662 * we permit from an autofs.
660 */ 663 */
661 if (dentry->d_inode && d_unhashed(dentry)) { 664 if (!oz_mode && d_unhashed(dentry)) {
662 /* 665 /*
663 * A user space application can (and has done in the past) 666 * A user space application can (and has done in the past)
664 * remove and re-create this directory during the callback. 667 * remove and re-create this directory during the callback.
@@ -716,7 +719,7 @@ static int autofs4_dir_symlink(struct inode *dir,
716 strcpy(cp, symname); 719 strcpy(cp, symname);
717 720
718 inode = autofs4_get_inode(dir->i_sb, ino); 721 inode = autofs4_get_inode(dir->i_sb, ino);
719 d_instantiate(dentry, inode); 722 d_add(dentry, inode);
720 723
721 if (dir == dir->i_sb->s_root->d_inode) 724 if (dir == dir->i_sb->s_root->d_inode)
722 dentry->d_op = &autofs4_root_dentry_operations; 725 dentry->d_op = &autofs4_root_dentry_operations;
@@ -844,7 +847,7 @@ static int autofs4_dir_mkdir(struct inode *dir, struct dentry *dentry, int mode)
844 return -ENOSPC; 847 return -ENOSPC;
845 848
846 inode = autofs4_get_inode(dir->i_sb, ino); 849 inode = autofs4_get_inode(dir->i_sb, ino);
847 d_instantiate(dentry, inode); 850 d_add(dentry, inode);
848 851
849 if (dir == dir->i_sb->s_root->d_inode) 852 if (dir == dir->i_sb->s_root->d_inode)
850 dentry->d_op = &autofs4_root_dentry_operations; 853 dentry->d_op = &autofs4_root_dentry_operations;
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 6d84ca2beead..bed6215c0794 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -3,7 +3,10 @@ Version 1.50
3Fix NTLMv2 signing. NFS server mounted over cifs works (if cifs mount is 3Fix NTLMv2 signing. NFS server mounted over cifs works (if cifs mount is
4done with "serverino" mount option). Add support for POSIX Unlink 4done with "serverino" mount option). Add support for POSIX Unlink
5(helps with certain sharing violation cases when server such as 5(helps with certain sharing violation cases when server such as
6Samba supports newer POSIX CIFS Protocol Extensions). 6Samba supports newer POSIX CIFS Protocol Extensions). Add "nounix"
7mount option to allow disabling the CIFS Unix Extensions for just
8that mount. Fix hang on spinlock in find_writable_file (race when
9reopening file after session crash).
7 10
8Version 1.49 11Version 1.49
9------------ 12------------
diff --git a/fs/cifs/README b/fs/cifs/README
index 85f1eb14083e..b806b11b5560 100644
--- a/fs/cifs/README
+++ b/fs/cifs/README
@@ -444,6 +444,13 @@ A partial list of the supported mount options follows:
444 noposixpaths If CIFS Unix extensions are supported, do not request 444 noposixpaths If CIFS Unix extensions are supported, do not request
445 posix path name support (this may cause servers to 445 posix path name support (this may cause servers to
446 reject creatingfile with certain reserved characters). 446 reject creatingfile with certain reserved characters).
447 nounix Disable the CIFS Unix Extensions for this mount (tree
448 connection). This is rarely needed, but it may be useful
449 in order to turn off multiple settings all at once (ie
450 posix acls, posix locks, posix paths, symlink support
451 and retrieving uids/gids/mode from the server) or to
452 work around a bug in server which implement the Unix
453 Extensions.
447 nobrl Do not send byte range lock requests to the server. 454 nobrl Do not send byte range lock requests to the server.
448 This is necessary for certain applications that break 455 This is necessary for certain applications that break
449 with cifs style mandatory byte range locks (and most 456 with cifs style mandatory byte range locks (and most
@@ -451,6 +458,12 @@ A partial list of the supported mount options follows:
451 byte range locks). 458 byte range locks).
452 remount remount the share (often used to change from ro to rw mounts 459 remount remount the share (often used to change from ro to rw mounts
453 or vice versa) 460 or vice versa)
461 servern Specify the server 's netbios name (RFC1001 name) to use
462 when attempting to setup a session to the server. This is
463 This is needed for mounting to some older servers (such
464 as OS/2 or Windows 98 and Windows ME) since they do not
465 support a default server name. A server name can be up
466 to 15 characters long and is usually uppercased.
454 sfu When the CIFS Unix Extensions are not negotiated, attempt to 467 sfu When the CIFS Unix Extensions are not negotiated, attempt to
455 create device files and fifos in a format compatible with 468 create device files and fifos in a format compatible with
456 Services for Unix (SFU). In addition retrieve bits 10-12 469 Services for Unix (SFU). In addition retrieve bits 10-12
diff --git a/fs/cifs/TODO b/fs/cifs/TODO
index d7bd51575fd6..29d4b2715254 100644
--- a/fs/cifs/TODO
+++ b/fs/cifs/TODO
@@ -82,8 +82,7 @@ u) DOS attrs - returned as pseudo-xattr in Samba format (check VFAT and NTFS for
82 82
83v) mount check for unmatched uids 83v) mount check for unmatched uids
84 84
85w) Add mount option for Linux extension disable per mount, and partial 85w) Add support for new vfs entry points for setlease and fallocate
86disable per mount (uid off, symlink/fifo/mknod on but what about posix acls?)
87 86
88x) Fix Samba 3 server to handle Linux kernel aio so dbench with lots of 87x) Fix Samba 3 server to handle Linux kernel aio so dbench with lots of
89processes can proceed better in parallel (on the server) 88processes can proceed better in parallel (on the server)
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index e13592afca9c..894b1f7b299d 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -1904,6 +1904,25 @@ static int cifs_readpage(struct file *file, struct page *page)
1904 return rc; 1904 return rc;
1905} 1905}
1906 1906
1907static int is_inode_writable(struct cifsInodeInfo *cifs_inode)
1908{
1909 struct cifsFileInfo *open_file;
1910
1911 read_lock(&GlobalSMBSeslock);
1912 list_for_each_entry(open_file, &cifs_inode->openFileList, flist) {
1913 if (open_file->closePend)
1914 continue;
1915 if (open_file->pfile &&
1916 ((open_file->pfile->f_flags & O_RDWR) ||
1917 (open_file->pfile->f_flags & O_WRONLY))) {
1918 read_unlock(&GlobalSMBSeslock);
1919 return 1;
1920 }
1921 }
1922 read_unlock(&GlobalSMBSeslock);
1923 return 0;
1924}
1925
1907/* We do not want to update the file size from server for inodes 1926/* We do not want to update the file size from server for inodes
1908 open for write - to avoid races with writepage extending 1927 open for write - to avoid races with writepage extending
1909 the file - in the future we could consider allowing 1928 the file - in the future we could consider allowing
@@ -1912,19 +1931,13 @@ static int cifs_readpage(struct file *file, struct page *page)
1912 page caching in the current Linux kernel design */ 1931 page caching in the current Linux kernel design */
1913int is_size_safe_to_change(struct cifsInodeInfo *cifsInode, __u64 end_of_file) 1932int is_size_safe_to_change(struct cifsInodeInfo *cifsInode, __u64 end_of_file)
1914{ 1933{
1915 struct cifsFileInfo *open_file = NULL; 1934 if (!cifsInode)
1916 1935 return 1;
1917 if (cifsInode)
1918 open_file = find_writable_file(cifsInode);
1919 1936
1920 if (open_file) { 1937 if (is_inode_writable(cifsInode)) {
1938 /* This inode is open for write at least once */
1921 struct cifs_sb_info *cifs_sb; 1939 struct cifs_sb_info *cifs_sb;
1922 1940
1923 /* there is not actually a write pending so let
1924 this handle go free and allow it to
1925 be closable if needed */
1926 atomic_dec(&open_file->wrtPending);
1927
1928 cifs_sb = CIFS_SB(cifsInode->vfs_inode.i_sb); 1941 cifs_sb = CIFS_SB(cifsInode->vfs_inode.i_sb);
1929 if ( cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DIRECT_IO ) { 1942 if ( cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DIRECT_IO ) {
1930 /* since no page cache to corrupt on directio 1943 /* since no page cache to corrupt on directio
diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c
index 2ea027dda215..892be9b4d1f3 100644
--- a/fs/cifs/sess.c
+++ b/fs/cifs/sess.c
@@ -372,6 +372,10 @@ CIFS_SessSetup(unsigned int xid, struct cifsSesInfo *ses, int first_time,
372 372
373 /* 2000 big enough to fit max user, domain, NOS name etc. */ 373 /* 2000 big enough to fit max user, domain, NOS name etc. */
374 str_area = kmalloc(2000, GFP_KERNEL); 374 str_area = kmalloc(2000, GFP_KERNEL);
375 if (str_area == NULL) {
376 cifs_small_buf_release(smb_buf);
377 return -ENOMEM;
378 }
375 bcc_ptr = str_area; 379 bcc_ptr = str_area;
376 380
377 ses->flags &= ~CIFS_SES_LANMAN; 381 ses->flags &= ~CIFS_SES_LANMAN;
diff --git a/fs/direct-io.c b/fs/direct-io.c
index 6874785bb65a..901dc55e9f54 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -958,36 +958,22 @@ direct_io_worker(int rw, struct kiocb *iocb, struct inode *inode,
958 ssize_t ret2; 958 ssize_t ret2;
959 size_t bytes; 959 size_t bytes;
960 960
961 dio->bio = NULL;
962 dio->inode = inode; 961 dio->inode = inode;
963 dio->rw = rw; 962 dio->rw = rw;
964 dio->blkbits = blkbits; 963 dio->blkbits = blkbits;
965 dio->blkfactor = inode->i_blkbits - blkbits; 964 dio->blkfactor = inode->i_blkbits - blkbits;
966 dio->start_zero_done = 0;
967 dio->size = 0;
968 dio->block_in_file = offset >> blkbits; 965 dio->block_in_file = offset >> blkbits;
969 dio->blocks_available = 0;
970 dio->cur_page = NULL;
971 966
972 dio->boundary = 0;
973 dio->reap_counter = 0;
974 dio->get_block = get_block; 967 dio->get_block = get_block;
975 dio->end_io = end_io; 968 dio->end_io = end_io;
976 dio->map_bh.b_private = NULL;
977 dio->map_bh.b_state = 0;
978 dio->final_block_in_bio = -1; 969 dio->final_block_in_bio = -1;
979 dio->next_block_for_io = -1; 970 dio->next_block_for_io = -1;
980 971
981 dio->page_errors = 0;
982 dio->io_error = 0;
983 dio->result = 0;
984 dio->iocb = iocb; 972 dio->iocb = iocb;
985 dio->i_size = i_size_read(inode); 973 dio->i_size = i_size_read(inode);
986 974
987 spin_lock_init(&dio->bio_lock); 975 spin_lock_init(&dio->bio_lock);
988 dio->refcount = 1; 976 dio->refcount = 1;
989 dio->bio_list = NULL;
990 dio->waiter = NULL;
991 977
992 /* 978 /*
993 * In case of non-aligned buffers, we may need 2 more 979 * In case of non-aligned buffers, we may need 2 more
@@ -995,8 +981,6 @@ direct_io_worker(int rw, struct kiocb *iocb, struct inode *inode,
995 */ 981 */
996 if (unlikely(dio->blkfactor)) 982 if (unlikely(dio->blkfactor))
997 dio->pages_in_io = 2; 983 dio->pages_in_io = 2;
998 else
999 dio->pages_in_io = 0;
1000 984
1001 for (seg = 0; seg < nr_segs; seg++) { 985 for (seg = 0; seg < nr_segs; seg++) {
1002 user_addr = (unsigned long)iov[seg].iov_base; 986 user_addr = (unsigned long)iov[seg].iov_base;
@@ -1184,7 +1168,7 @@ __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode,
1184 } 1168 }
1185 } 1169 }
1186 1170
1187 dio = kmalloc(sizeof(*dio), GFP_KERNEL); 1171 dio = kzalloc(sizeof(*dio), GFP_KERNEL);
1188 retval = -ENOMEM; 1172 retval = -ENOMEM;
1189 if (!dio) 1173 if (!dio)
1190 goto out; 1174 goto out;
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index 131954b3fb98..5d40ad13ab5c 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -357,6 +357,10 @@ static struct dentry *ecryptfs_lookup(struct inode *dir, struct dentry *dentry,
357 ecryptfs_printk(KERN_DEBUG, "Is a special file; returning\n"); 357 ecryptfs_printk(KERN_DEBUG, "Is a special file; returning\n");
358 goto out; 358 goto out;
359 } 359 }
360 if (special_file(lower_inode->i_mode)) {
361 ecryptfs_printk(KERN_DEBUG, "Is a special file; returning\n");
362 goto out;
363 }
360 if (!nd) { 364 if (!nd) {
361 ecryptfs_printk(KERN_DEBUG, "We have a NULL nd, just leave" 365 ecryptfs_printk(KERN_DEBUG, "We have a NULL nd, just leave"
362 "as we *think* we are about to unlink\n"); 366 "as we *think* we are about to unlink\n");
diff --git a/fs/exec.c b/fs/exec.c
index 7bdea7937ee8..c21a8cc06277 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -780,18 +780,11 @@ static int de_thread(struct task_struct *tsk)
780 int count; 780 int count;
781 781
782 /* 782 /*
783 * Tell all the sighand listeners that this sighand has
784 * been detached. The signalfd_detach() function grabs the
785 * sighand lock, if signal listeners are present on the sighand.
786 */
787 signalfd_detach(tsk);
788
789 /*
790 * If we don't share sighandlers, then we aren't sharing anything 783 * If we don't share sighandlers, then we aren't sharing anything
791 * and we can just re-use it all. 784 * and we can just re-use it all.
792 */ 785 */
793 if (atomic_read(&oldsighand->count) <= 1) { 786 if (atomic_read(&oldsighand->count) <= 1) {
794 BUG_ON(atomic_read(&sig->count) != 1); 787 signalfd_detach(tsk);
795 exit_itimers(sig); 788 exit_itimers(sig);
796 return 0; 789 return 0;
797 } 790 }
@@ -930,12 +923,11 @@ static int de_thread(struct task_struct *tsk)
930 sig->flags = 0; 923 sig->flags = 0;
931 924
932no_thread_group: 925no_thread_group:
926 signalfd_detach(tsk);
933 exit_itimers(sig); 927 exit_itimers(sig);
934 if (leader) 928 if (leader)
935 release_task(leader); 929 release_task(leader);
936 930
937 BUG_ON(atomic_read(&sig->count) != 1);
938
939 if (atomic_read(&oldsighand->count) == 1) { 931 if (atomic_read(&oldsighand->count) == 1) {
940 /* 932 /*
941 * Now that we nuked the rest of the thread group, 933 * Now that we nuked the rest of the thread group,
@@ -1084,9 +1076,12 @@ int flush_old_exec(struct linux_binprm * bprm)
1084 */ 1076 */
1085 current->mm->task_size = TASK_SIZE; 1077 current->mm->task_size = TASK_SIZE;
1086 1078
1087 if (bprm->e_uid != current->euid || bprm->e_gid != current->egid || 1079 if (bprm->e_uid != current->euid || bprm->e_gid != current->egid) {
1088 file_permission(bprm->file, MAY_READ) || 1080 suid_keys(current);
1089 (bprm->interp_flags & BINPRM_FLAGS_ENFORCE_NONDUMP)) { 1081 set_dumpable(current->mm, suid_dumpable);
1082 current->pdeath_signal = 0;
1083 } else if (file_permission(bprm->file, MAY_READ) ||
1084 (bprm->interp_flags & BINPRM_FLAGS_ENFORCE_NONDUMP)) {
1090 suid_keys(current); 1085 suid_keys(current);
1091 set_dumpable(current->mm, suid_dumpable); 1086 set_dumpable(current->mm, suid_dumpable);
1092 } 1087 }
@@ -1177,8 +1172,10 @@ void compute_creds(struct linux_binprm *bprm)
1177{ 1172{
1178 int unsafe; 1173 int unsafe;
1179 1174
1180 if (bprm->e_uid != current->uid) 1175 if (bprm->e_uid != current->uid) {
1181 suid_keys(current); 1176 suid_keys(current);
1177 current->pdeath_signal = 0;
1178 }
1182 exec_keys(current); 1179 exec_keys(current);
1183 1180
1184 task_lock(current); 1181 task_lock(current);
diff --git a/fs/jffs2/write.c b/fs/jffs2/write.c
index bc6185933664..664c164aa67c 100644
--- a/fs/jffs2/write.c
+++ b/fs/jffs2/write.c
@@ -566,6 +566,9 @@ int jffs2_do_unlink(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f,
566 struct jffs2_full_dirent **prev = &dir_f->dents; 566 struct jffs2_full_dirent **prev = &dir_f->dents;
567 uint32_t nhash = full_name_hash(name, namelen); 567 uint32_t nhash = full_name_hash(name, namelen);
568 568
569 /* We don't actually want to reserve any space, but we do
570 want to be holding the alloc_sem when we write to flash */
571 down(&c->alloc_sem);
569 down(&dir_f->sem); 572 down(&dir_f->sem);
570 573
571 while ((*prev) && (*prev)->nhash <= nhash) { 574 while ((*prev) && (*prev)->nhash <= nhash) {
diff --git a/fs/proc/array.c b/fs/proc/array.c
index 965625a0977d..ee4814dd98f9 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -320,7 +320,21 @@ int proc_pid_status(struct task_struct *task, char *buffer)
320 return buffer - orig; 320 return buffer - orig;
321} 321}
322 322
323static clock_t task_utime(struct task_struct *p) 323/*
324 * Use precise platform statistics if available:
325 */
326#ifdef CONFIG_VIRT_CPU_ACCOUNTING
327static cputime_t task_utime(struct task_struct *p)
328{
329 return p->utime;
330}
331
332static cputime_t task_stime(struct task_struct *p)
333{
334 return p->stime;
335}
336#else
337static cputime_t task_utime(struct task_struct *p)
324{ 338{
325 clock_t utime = cputime_to_clock_t(p->utime), 339 clock_t utime = cputime_to_clock_t(p->utime),
326 total = utime + cputime_to_clock_t(p->stime); 340 total = utime + cputime_to_clock_t(p->stime);
@@ -337,10 +351,10 @@ static clock_t task_utime(struct task_struct *p)
337 } 351 }
338 utime = (clock_t)temp; 352 utime = (clock_t)temp;
339 353
340 return utime; 354 return clock_t_to_cputime(utime);
341} 355}
342 356
343static clock_t task_stime(struct task_struct *p) 357static cputime_t task_stime(struct task_struct *p)
344{ 358{
345 clock_t stime; 359 clock_t stime;
346 360
@@ -349,10 +363,12 @@ static clock_t task_stime(struct task_struct *p)
349 * the total, to make sure the total observed by userspace 363 * the total, to make sure the total observed by userspace
350 * grows monotonically - apps rely on that): 364 * grows monotonically - apps rely on that):
351 */ 365 */
352 stime = nsec_to_clock_t(p->se.sum_exec_runtime) - task_utime(p); 366 stime = nsec_to_clock_t(p->se.sum_exec_runtime) -
367 cputime_to_clock_t(task_utime(p));
353 368
354 return stime; 369 return clock_t_to_cputime(stime);
355} 370}
371#endif
356 372
357static int do_task_stat(struct task_struct *task, char *buffer, int whole) 373static int do_task_stat(struct task_struct *task, char *buffer, int whole)
358{ 374{
@@ -368,8 +384,7 @@ static int do_task_stat(struct task_struct *task, char *buffer, int whole)
368 unsigned long long start_time; 384 unsigned long long start_time;
369 unsigned long cmin_flt = 0, cmaj_flt = 0; 385 unsigned long cmin_flt = 0, cmaj_flt = 0;
370 unsigned long min_flt = 0, maj_flt = 0; 386 unsigned long min_flt = 0, maj_flt = 0;
371 cputime_t cutime, cstime; 387 cputime_t cutime, cstime, utime, stime;
372 clock_t utime, stime;
373 unsigned long rsslim = 0; 388 unsigned long rsslim = 0;
374 char tcomm[sizeof(task->comm)]; 389 char tcomm[sizeof(task->comm)];
375 unsigned long flags; 390 unsigned long flags;
@@ -387,8 +402,7 @@ static int do_task_stat(struct task_struct *task, char *buffer, int whole)
387 402
388 sigemptyset(&sigign); 403 sigemptyset(&sigign);
389 sigemptyset(&sigcatch); 404 sigemptyset(&sigcatch);
390 cutime = cstime = cputime_zero; 405 cutime = cstime = utime = stime = cputime_zero;
391 utime = stime = 0;
392 406
393 rcu_read_lock(); 407 rcu_read_lock();
394 if (lock_task_sighand(task, &flags)) { 408 if (lock_task_sighand(task, &flags)) {
@@ -414,15 +428,15 @@ static int do_task_stat(struct task_struct *task, char *buffer, int whole)
414 do { 428 do {
415 min_flt += t->min_flt; 429 min_flt += t->min_flt;
416 maj_flt += t->maj_flt; 430 maj_flt += t->maj_flt;
417 utime += task_utime(t); 431 utime = cputime_add(utime, task_utime(t));
418 stime += task_stime(t); 432 stime = cputime_add(stime, task_stime(t));
419 t = next_thread(t); 433 t = next_thread(t);
420 } while (t != task); 434 } while (t != task);
421 435
422 min_flt += sig->min_flt; 436 min_flt += sig->min_flt;
423 maj_flt += sig->maj_flt; 437 maj_flt += sig->maj_flt;
424 utime += cputime_to_clock_t(sig->utime); 438 utime = cputime_add(utime, sig->utime);
425 stime += cputime_to_clock_t(sig->stime); 439 stime = cputime_add(stime, sig->stime);
426 } 440 }
427 441
428 sid = signal_session(sig); 442 sid = signal_session(sig);
@@ -471,8 +485,8 @@ static int do_task_stat(struct task_struct *task, char *buffer, int whole)
471 cmin_flt, 485 cmin_flt,
472 maj_flt, 486 maj_flt,
473 cmaj_flt, 487 cmaj_flt,
474 utime, 488 cputime_to_clock_t(utime),
475 stime, 489 cputime_to_clock_t(stime),
476 cputime_to_clock_t(cutime), 490 cputime_to_clock_t(cutime),
477 cputime_to_clock_t(cstime), 491 cputime_to_clock_t(cstime),
478 priority, 492 priority,
diff --git a/fs/signalfd.c b/fs/signalfd.c
index 7b941abbcde0..a8e293d30034 100644
--- a/fs/signalfd.c
+++ b/fs/signalfd.c
@@ -56,12 +56,18 @@ static int signalfd_lock(struct signalfd_ctx *ctx, struct signalfd_lockctx *lk)
56 sighand = lock_task_sighand(lk->tsk, &lk->flags); 56 sighand = lock_task_sighand(lk->tsk, &lk->flags);
57 rcu_read_unlock(); 57 rcu_read_unlock();
58 58
59 if (sighand && !ctx->tsk) { 59 if (!sighand)
60 return 0;
61
62 if (!ctx->tsk) {
60 unlock_task_sighand(lk->tsk, &lk->flags); 63 unlock_task_sighand(lk->tsk, &lk->flags);
61 sighand = NULL; 64 return 0;
62 } 65 }
63 66
64 return sighand != NULL; 67 if (lk->tsk->tgid == current->tgid)
68 lk->tsk = current;
69
70 return 1;
65} 71}
66 72
67static void signalfd_unlock(struct signalfd_lockctx *lk) 73static void signalfd_unlock(struct signalfd_lockctx *lk)
@@ -331,7 +337,7 @@ asmlinkage long sys_signalfd(int ufd, sigset_t __user *user_mask, size_t sizemas
331 337
332 init_waitqueue_head(&ctx->wqh); 338 init_waitqueue_head(&ctx->wqh);
333 ctx->sigmask = sigmask; 339 ctx->sigmask = sigmask;
334 ctx->tsk = current; 340 ctx->tsk = current->group_leader;
335 341
336 sighand = current->sighand; 342 sighand = current->sighand;
337 /* 343 /*
diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c
index 135353f8a296..5afe2a26f5d8 100644
--- a/fs/sysfs/bin.c
+++ b/fs/sysfs/bin.c
@@ -248,12 +248,7 @@ int sysfs_create_bin_file(struct kobject * kobj, struct bin_attribute * attr)
248 248
249void sysfs_remove_bin_file(struct kobject * kobj, struct bin_attribute * attr) 249void sysfs_remove_bin_file(struct kobject * kobj, struct bin_attribute * attr)
250{ 250{
251 if (sysfs_hash_and_remove(kobj->sd, attr->attr.name) < 0) { 251 sysfs_hash_and_remove(kobj->sd, attr->attr.name);
252 printk(KERN_ERR "%s: "
253 "bad dentry or inode or no such file: \"%s\"\n",
254 __FUNCTION__, attr->attr.name);
255 dump_stack();
256 }
257} 252}
258 253
259EXPORT_SYMBOL_GPL(sysfs_create_bin_file); 254EXPORT_SYMBOL_GPL(sysfs_create_bin_file);
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index 048e6054c2fd..83e76b3813c9 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -762,12 +762,15 @@ static int sysfs_count_nlink(struct sysfs_dirent *sd)
762static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, 762static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry,
763 struct nameidata *nd) 763 struct nameidata *nd)
764{ 764{
765 struct dentry *ret = NULL;
765 struct sysfs_dirent * parent_sd = dentry->d_parent->d_fsdata; 766 struct sysfs_dirent * parent_sd = dentry->d_parent->d_fsdata;
766 struct sysfs_dirent * sd; 767 struct sysfs_dirent * sd;
767 struct bin_attribute *bin_attr; 768 struct bin_attribute *bin_attr;
768 struct inode *inode; 769 struct inode *inode;
769 int found = 0; 770 int found = 0;
770 771
772 mutex_lock(&sysfs_mutex);
773
771 for (sd = parent_sd->s_children; sd; sd = sd->s_sibling) { 774 for (sd = parent_sd->s_children; sd; sd = sd->s_sibling) {
772 if (sysfs_type(sd) && 775 if (sysfs_type(sd) &&
773 !strcmp(sd->s_name, dentry->d_name.name)) { 776 !strcmp(sd->s_name, dentry->d_name.name)) {
@@ -778,14 +781,14 @@ static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry,
778 781
779 /* no such entry */ 782 /* no such entry */
780 if (!found) 783 if (!found)
781 return NULL; 784 goto out_unlock;
782 785
783 /* attach dentry and inode */ 786 /* attach dentry and inode */
784 inode = sysfs_get_inode(sd); 787 inode = sysfs_get_inode(sd);
785 if (!inode) 788 if (!inode) {
786 return ERR_PTR(-ENOMEM); 789 ret = ERR_PTR(-ENOMEM);
787 790 goto out_unlock;
788 mutex_lock(&sysfs_mutex); 791 }
789 792
790 if (inode->i_state & I_NEW) { 793 if (inode->i_state & I_NEW) {
791 /* initialize inode according to type */ 794 /* initialize inode according to type */
@@ -815,9 +818,9 @@ static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry,
815 sysfs_instantiate(dentry, inode); 818 sysfs_instantiate(dentry, inode);
816 sysfs_attach_dentry(sd, dentry); 819 sysfs_attach_dentry(sd, dentry);
817 820
821 out_unlock:
818 mutex_unlock(&sysfs_mutex); 822 mutex_unlock(&sysfs_mutex);
819 823 return ret;
820 return NULL;
821} 824}
822 825
823const struct inode_operations sysfs_dir_inode_operations = { 826const struct inode_operations sysfs_dir_inode_operations = {
@@ -942,6 +945,8 @@ int sysfs_rename_dir(struct kobject *kobj, struct sysfs_dirent *new_parent_sd,
942 if (error) 945 if (error)
943 goto out_drop; 946 goto out_drop;
944 947
948 mutex_lock(&sysfs_mutex);
949
945 dup_name = sd->s_name; 950 dup_name = sd->s_name;
946 sd->s_name = new_name; 951 sd->s_name = new_name;
947 952
@@ -949,8 +954,6 @@ int sysfs_rename_dir(struct kobject *kobj, struct sysfs_dirent *new_parent_sd,
949 d_add(new_dentry, NULL); 954 d_add(new_dentry, NULL);
950 d_move(sd->s_dentry, new_dentry); 955 d_move(sd->s_dentry, new_dentry);
951 956
952 mutex_lock(&sysfs_mutex);
953
954 sysfs_unlink_sibling(sd); 957 sysfs_unlink_sibling(sd);
955 sysfs_get(new_parent_sd); 958 sysfs_get(new_parent_sd);
956 sysfs_put(sd->s_parent); 959 sysfs_put(sd->s_parent);
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 3d0fea235bf3..86aea44ce6d4 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -321,8 +321,7 @@ struct acpi_bus_event {
321}; 321};
322 322
323extern struct kset acpi_subsys; 323extern struct kset acpi_subsys;
324extern int acpi_bus_generate_genetlink_event(struct acpi_device *device, 324extern int acpi_bus_generate_netlink_event(const char*, const char*, u8, int);
325 u8 type, int data);
326/* 325/*
327 * External Functions 326 * External Functions
328 */ 327 */
@@ -332,8 +331,13 @@ void acpi_bus_data_handler(acpi_handle handle, u32 function, void *context);
332int acpi_bus_get_status(struct acpi_device *device); 331int acpi_bus_get_status(struct acpi_device *device);
333int acpi_bus_get_power(acpi_handle handle, int *state); 332int acpi_bus_get_power(acpi_handle handle, int *state);
334int acpi_bus_set_power(acpi_handle handle, int state); 333int acpi_bus_set_power(acpi_handle handle, int state);
335int acpi_bus_generate_event(struct acpi_device *device, u8 type, int data); 334#ifdef CONFIG_ACPI_PROC_EVENT
335int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data);
336int acpi_bus_receive_event(struct acpi_bus_event *event); 336int acpi_bus_receive_event(struct acpi_bus_event *event);
337#else
338static inline int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data)
339 { return 0; }
340#endif
337int acpi_bus_register_driver(struct acpi_driver *driver); 341int acpi_bus_register_driver(struct acpi_driver *driver);
338void acpi_bus_unregister_driver(struct acpi_driver *driver); 342void acpi_bus_unregister_driver(struct acpi_driver *driver);
339int acpi_bus_add(struct acpi_device **child, struct acpi_device *parent, 343int acpi_bus_add(struct acpi_device **child, struct acpi_device *parent,
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h
index b5cca5daa348..3d7ab9e0c9fe 100644
--- a/include/acpi/acpixf.h
+++ b/include/acpi/acpixf.h
@@ -130,7 +130,7 @@ acpi_walk_namespace(acpi_object_type type,
130 void *context, void **return_value); 130 void *context, void **return_value);
131 131
132acpi_status 132acpi_status
133acpi_get_devices(char *HID, 133acpi_get_devices(const char *HID,
134 acpi_walk_callback user_function, 134 acpi_walk_callback user_function,
135 void *context, void **return_value); 135 void *context, void **return_value);
136 136
diff --git a/include/acpi/acstruct.h b/include/acpi/acstruct.h
index aeb4498e5e06..88482655407f 100644
--- a/include/acpi/acstruct.h
+++ b/include/acpi/acstruct.h
@@ -146,7 +146,7 @@ struct acpi_init_walk_info {
146struct acpi_get_devices_info { 146struct acpi_get_devices_info {
147 acpi_walk_callback user_function; 147 acpi_walk_callback user_function;
148 void *context; 148 void *context;
149 char *hid; 149 const char *hid;
150}; 150};
151 151
152union acpi_aml_operands { 152union acpi_aml_operands {
diff --git a/include/asm-avr32/io.h b/include/asm-avr32/io.h
index e30d4b3bd836..64bb92bb6773 100644
--- a/include/asm-avr32/io.h
+++ b/include/asm-avr32/io.h
@@ -255,6 +255,8 @@ static inline void memset_io(volatile void __iomem *addr, unsigned char val,
255 memset((void __force *)addr, val, count); 255 memset((void __force *)addr, val, count);
256} 256}
257 257
258#define mmiowb()
259
258#define IO_SPACE_LIMIT 0xffffffff 260#define IO_SPACE_LIMIT 0xffffffff
259 261
260extern void __iomem *__ioremap(unsigned long offset, size_t size, 262extern void __iomem *__ioremap(unsigned long offset, size_t size,
diff --git a/include/asm-avr32/pgalloc.h b/include/asm-avr32/pgalloc.h
index bb82e70cde8d..0e680f47209f 100644
--- a/include/asm-avr32/pgalloc.h
+++ b/include/asm-avr32/pgalloc.h
@@ -27,13 +27,7 @@ static __inline__ void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
27 */ 27 */
28static __inline__ pgd_t *pgd_alloc(struct mm_struct *mm) 28static __inline__ pgd_t *pgd_alloc(struct mm_struct *mm)
29{ 29{
30 unsigned int pgd_size = (USER_PTRS_PER_PGD * sizeof(pgd_t)); 30 return kcalloc(USER_PTRS_PER_PGD, sizeof(pgd_t), GFP_KERNEL);
31 pgd_t *pgd = kmalloc(pgd_size, GFP_KERNEL);
32
33 if (pgd)
34 memset(pgd, 0, pgd_size);
35
36 return pgd;
37} 31}
38 32
39static inline void pgd_free(pgd_t *pgd) 33static inline void pgd_free(pgd_t *pgd)
@@ -44,18 +38,9 @@ static inline void pgd_free(pgd_t *pgd)
44static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, 38static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
45 unsigned long address) 39 unsigned long address)
46{ 40{
47 int count = 0;
48 pte_t *pte; 41 pte_t *pte;
49 42
50 do { 43 pte = (pte_t *)get_zeroed_page(GFP_KERNEL | __GFP_REPEAT);
51 pte = (pte_t *) __get_free_page(GFP_KERNEL | __GFP_REPEAT);
52 if (pte)
53 clear_page(pte);
54 else {
55 current->state = TASK_UNINTERRUPTIBLE;
56 schedule_timeout(HZ);
57 }
58 } while (!pte && (count++ < 10));
59 44
60 return pte; 45 return pte;
61} 46}
@@ -63,18 +48,9 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
63static inline struct page *pte_alloc_one(struct mm_struct *mm, 48static inline struct page *pte_alloc_one(struct mm_struct *mm,
64 unsigned long address) 49 unsigned long address)
65{ 50{
66 int count = 0;
67 struct page *pte; 51 struct page *pte;
68 52
69 do { 53 pte = alloc_page(GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO);
70 pte = alloc_pages(GFP_KERNEL, 0);
71 if (pte)
72 clear_page(page_address(pte));
73 else {
74 current->state = TASK_UNINTERRUPTIBLE;
75 schedule_timeout(HZ);
76 }
77 } while (!pte && (count++ < 10));
78 54
79 return pte; 55 return pte;
80} 56}
diff --git a/include/asm-avr32/pgtable.h b/include/asm-avr32/pgtable.h
index c07bdd10b891..018f6e2a0242 100644
--- a/include/asm-avr32/pgtable.h
+++ b/include/asm-avr32/pgtable.h
@@ -32,8 +32,6 @@
32#define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE) 32#define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE)
33#define FIRST_USER_ADDRESS 0 33#define FIRST_USER_ADDRESS 0
34 34
35#define PTE_PHYS_MASK 0x1ffff000
36
37#ifndef __ASSEMBLY__ 35#ifndef __ASSEMBLY__
38extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; 36extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
39extern void paging_init(void); 37extern void paging_init(void);
@@ -265,7 +263,7 @@ static inline pte_t pte_mkyoung(pte_t pte)
265 * trivial. 263 * trivial.
266 */ 264 */
267#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) 265#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
268#define pte_page(x) phys_to_page(pte_val(x) & PTE_PHYS_MASK) 266#define pte_page(x) (pfn_to_page(pte_pfn(x)))
269 267
270/* 268/*
271 * Mark the prot value as uncacheable and unbufferable 269 * Mark the prot value as uncacheable and unbufferable
diff --git a/include/asm-i386/io.h b/include/asm-i386/io.h
index 7b65b5b00034..e8e0bd641120 100644
--- a/include/asm-i386/io.h
+++ b/include/asm-i386/io.h
@@ -112,6 +112,9 @@ extern void __iomem * __ioremap(unsigned long offset, unsigned long size, unsign
112 * writew/writel functions and the other mmio helpers. The returned 112 * writew/writel functions and the other mmio helpers. The returned
113 * address is not guaranteed to be usable directly as a virtual 113 * address is not guaranteed to be usable directly as a virtual
114 * address. 114 * address.
115 *
116 * If the area you are trying to map is a PCI BAR you should have a
117 * look at pci_iomap().
115 */ 118 */
116 119
117static inline void __iomem * ioremap(unsigned long offset, unsigned long size) 120static inline void __iomem * ioremap(unsigned long offset, unsigned long size)
diff --git a/include/asm-i386/io_apic.h b/include/asm-i386/io_apic.h
index 340764076d5f..dbe734ddf2af 100644
--- a/include/asm-i386/io_apic.h
+++ b/include/asm-i386/io_apic.h
@@ -150,7 +150,6 @@ extern int (*ioapic_renumber_irq)(int ioapic, int irq);
150 150
151#else /* !CONFIG_X86_IO_APIC */ 151#else /* !CONFIG_X86_IO_APIC */
152#define io_apic_assign_pci_irqs 0 152#define io_apic_assign_pci_irqs 0
153static inline void disable_ioapic_setup(void) { }
154#endif 153#endif
155 154
156#endif 155#endif
diff --git a/include/asm-i386/mach-default/mach_wakecpu.h b/include/asm-i386/mach-default/mach_wakecpu.h
index 673b85c9b273..3ebb17893aa5 100644
--- a/include/asm-i386/mach-default/mach_wakecpu.h
+++ b/include/asm-i386/mach-default/mach_wakecpu.h
@@ -15,7 +15,8 @@
15 15
16static inline void wait_for_init_deassert(atomic_t *deassert) 16static inline void wait_for_init_deassert(atomic_t *deassert)
17{ 17{
18 while (!atomic_read(deassert)); 18 while (!atomic_read(deassert))
19 cpu_relax();
19 return; 20 return;
20} 21}
21 22
diff --git a/include/asm-i386/mach-es7000/mach_wakecpu.h b/include/asm-i386/mach-es7000/mach_wakecpu.h
index efc903b73486..84ff58314501 100644
--- a/include/asm-i386/mach-es7000/mach_wakecpu.h
+++ b/include/asm-i386/mach-es7000/mach_wakecpu.h
@@ -31,7 +31,8 @@ wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip)
31static inline void wait_for_init_deassert(atomic_t *deassert) 31static inline void wait_for_init_deassert(atomic_t *deassert)
32{ 32{
33#ifdef WAKE_SECONDARY_VIA_INIT 33#ifdef WAKE_SECONDARY_VIA_INIT
34 while (!atomic_read(deassert)); 34 while (!atomic_read(deassert))
35 cpu_relax();
35#endif 36#endif
36 return; 37 return;
37} 38}
diff --git a/include/asm-i386/nmi.h b/include/asm-i386/nmi.h
index ff30c98f87b0..70a958a8e381 100644
--- a/include/asm-i386/nmi.h
+++ b/include/asm-i386/nmi.h
@@ -33,11 +33,12 @@ extern int nmi_watchdog_tick (struct pt_regs * regs, unsigned reason);
33 33
34extern atomic_t nmi_active; 34extern atomic_t nmi_active;
35extern unsigned int nmi_watchdog; 35extern unsigned int nmi_watchdog;
36#define NMI_DEFAULT -1 36#define NMI_DISABLED -1
37#define NMI_NONE 0 37#define NMI_NONE 0
38#define NMI_IO_APIC 1 38#define NMI_IO_APIC 1
39#define NMI_LOCAL_APIC 2 39#define NMI_LOCAL_APIC 2
40#define NMI_INVALID 3 40#define NMI_INVALID 3
41#define NMI_DEFAULT NMI_DISABLED
41 42
42struct ctl_table; 43struct ctl_table;
43struct file; 44struct file;
diff --git a/include/asm-ia64/atomic.h b/include/asm-ia64/atomic.h
index 1fc3b83325da..50c2b83fd5a0 100644
--- a/include/asm-ia64/atomic.h
+++ b/include/asm-ia64/atomic.h
@@ -55,7 +55,7 @@ ia64_atomic64_add (__s64 i, atomic64_t *v)
55 55
56 do { 56 do {
57 CMPXCHG_BUGCHECK(v); 57 CMPXCHG_BUGCHECK(v);
58 old = atomic_read(v); 58 old = atomic64_read(v);
59 new = old + i; 59 new = old + i;
60 } while (ia64_cmpxchg(acq, v, old, new, sizeof(atomic64_t)) != old); 60 } while (ia64_cmpxchg(acq, v, old, new, sizeof(atomic64_t)) != old);
61 return new; 61 return new;
@@ -83,7 +83,7 @@ ia64_atomic64_sub (__s64 i, atomic64_t *v)
83 83
84 do { 84 do {
85 CMPXCHG_BUGCHECK(v); 85 CMPXCHG_BUGCHECK(v);
86 old = atomic_read(v); 86 old = atomic64_read(v);
87 new = old - i; 87 new = old - i;
88 } while (ia64_cmpxchg(acq, v, old, new, sizeof(atomic64_t)) != old); 88 } while (ia64_cmpxchg(acq, v, old, new, sizeof(atomic64_t)) != old);
89 return new; 89 return new;
diff --git a/include/asm-ia64/hw_irq.h b/include/asm-ia64/hw_irq.h
index efa1b8f7251d..bba5baa3c7fc 100644
--- a/include/asm-ia64/hw_irq.h
+++ b/include/asm-ia64/hw_irq.h
@@ -124,6 +124,11 @@ static inline void ia64_resend_irq(unsigned int vector)
124extern irq_desc_t irq_desc[NR_IRQS]; 124extern irq_desc_t irq_desc[NR_IRQS];
125 125
126#ifndef CONFIG_IA64_GENERIC 126#ifndef CONFIG_IA64_GENERIC
127static inline ia64_vector __ia64_irq_to_vector(int irq)
128{
129 return irq_cfg[irq].vector;
130}
131
127static inline unsigned int 132static inline unsigned int
128__ia64_local_vector_to_irq (ia64_vector vec) 133__ia64_local_vector_to_irq (ia64_vector vec)
129{ 134{
@@ -145,7 +150,7 @@ __ia64_local_vector_to_irq (ia64_vector vec)
145static inline ia64_vector 150static inline ia64_vector
146irq_to_vector (int irq) 151irq_to_vector (int irq)
147{ 152{
148 return irq_cfg[irq].vector; 153 return platform_irq_to_vector(irq);
149} 154}
150 155
151/* 156/*
diff --git a/include/asm-ia64/machvec.h b/include/asm-ia64/machvec.h
index 5cf8bf1e805e..c201a2020aa4 100644
--- a/include/asm-ia64/machvec.h
+++ b/include/asm-ia64/machvec.h
@@ -30,6 +30,7 @@ typedef void ia64_mv_send_ipi_t (int, int, int, int);
30typedef void ia64_mv_timer_interrupt_t (int, void *); 30typedef void ia64_mv_timer_interrupt_t (int, void *);
31typedef void ia64_mv_global_tlb_purge_t (struct mm_struct *, unsigned long, unsigned long, unsigned long); 31typedef void ia64_mv_global_tlb_purge_t (struct mm_struct *, unsigned long, unsigned long, unsigned long);
32typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *); 32typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *);
33typedef u8 ia64_mv_irq_to_vector (int);
33typedef unsigned int ia64_mv_local_vector_to_irq (u8); 34typedef unsigned int ia64_mv_local_vector_to_irq (u8);
34typedef char *ia64_mv_pci_get_legacy_mem_t (struct pci_bus *); 35typedef char *ia64_mv_pci_get_legacy_mem_t (struct pci_bus *);
35typedef int ia64_mv_pci_legacy_read_t (struct pci_bus *, u16 port, u32 *val, 36typedef int ia64_mv_pci_legacy_read_t (struct pci_bus *, u16 port, u32 *val,
@@ -145,6 +146,7 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *);
145# define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device 146# define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device
146# define platform_dma_mapping_error ia64_mv.dma_mapping_error 147# define platform_dma_mapping_error ia64_mv.dma_mapping_error
147# define platform_dma_supported ia64_mv.dma_supported 148# define platform_dma_supported ia64_mv.dma_supported
149# define platform_irq_to_vector ia64_mv.irq_to_vector
148# define platform_local_vector_to_irq ia64_mv.local_vector_to_irq 150# define platform_local_vector_to_irq ia64_mv.local_vector_to_irq
149# define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem 151# define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem
150# define platform_pci_legacy_read ia64_mv.pci_legacy_read 152# define platform_pci_legacy_read ia64_mv.pci_legacy_read
@@ -198,6 +200,7 @@ struct ia64_machine_vector {
198 ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device; 200 ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device;
199 ia64_mv_dma_mapping_error *dma_mapping_error; 201 ia64_mv_dma_mapping_error *dma_mapping_error;
200 ia64_mv_dma_supported *dma_supported; 202 ia64_mv_dma_supported *dma_supported;
203 ia64_mv_irq_to_vector *irq_to_vector;
201 ia64_mv_local_vector_to_irq *local_vector_to_irq; 204 ia64_mv_local_vector_to_irq *local_vector_to_irq;
202 ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem; 205 ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem;
203 ia64_mv_pci_legacy_read_t *pci_legacy_read; 206 ia64_mv_pci_legacy_read_t *pci_legacy_read;
@@ -247,6 +250,7 @@ struct ia64_machine_vector {
247 platform_dma_sync_sg_for_device, \ 250 platform_dma_sync_sg_for_device, \
248 platform_dma_mapping_error, \ 251 platform_dma_mapping_error, \
249 platform_dma_supported, \ 252 platform_dma_supported, \
253 platform_irq_to_vector, \
250 platform_local_vector_to_irq, \ 254 platform_local_vector_to_irq, \
251 platform_pci_get_legacy_mem, \ 255 platform_pci_get_legacy_mem, \
252 platform_pci_legacy_read, \ 256 platform_pci_legacy_read, \
@@ -366,6 +370,9 @@ extern ia64_mv_dma_supported swiotlb_dma_supported;
366#ifndef platform_dma_supported 370#ifndef platform_dma_supported
367# define platform_dma_supported swiotlb_dma_supported 371# define platform_dma_supported swiotlb_dma_supported
368#endif 372#endif
373#ifndef platform_irq_to_vector
374# define platform_irq_to_vector __ia64_irq_to_vector
375#endif
369#ifndef platform_local_vector_to_irq 376#ifndef platform_local_vector_to_irq
370# define platform_local_vector_to_irq __ia64_local_vector_to_irq 377# define platform_local_vector_to_irq __ia64_local_vector_to_irq
371#endif 378#endif
diff --git a/include/asm-ia64/machvec_init.h b/include/asm-ia64/machvec_init.h
index 2d36f6840f0b..7f21249fba3f 100644
--- a/include/asm-ia64/machvec_init.h
+++ b/include/asm-ia64/machvec_init.h
@@ -2,6 +2,7 @@
2 2
3extern ia64_mv_send_ipi_t ia64_send_ipi; 3extern ia64_mv_send_ipi_t ia64_send_ipi;
4extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge; 4extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge;
5extern ia64_mv_irq_to_vector __ia64_irq_to_vector;
5extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq; 6extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq;
6extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem; 7extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem;
7extern ia64_mv_pci_legacy_read_t ia64_pci_legacy_read; 8extern ia64_mv_pci_legacy_read_t ia64_pci_legacy_read;
diff --git a/include/asm-ia64/machvec_sn2.h b/include/asm-ia64/machvec_sn2.h
index eaa2fce0fecd..61439a7f5b08 100644
--- a/include/asm-ia64/machvec_sn2.h
+++ b/include/asm-ia64/machvec_sn2.h
@@ -35,6 +35,7 @@ extern ia64_mv_send_ipi_t sn2_send_IPI;
35extern ia64_mv_timer_interrupt_t sn_timer_interrupt; 35extern ia64_mv_timer_interrupt_t sn_timer_interrupt;
36extern ia64_mv_global_tlb_purge_t sn2_global_tlb_purge; 36extern ia64_mv_global_tlb_purge_t sn2_global_tlb_purge;
37extern ia64_mv_tlb_migrate_finish_t sn_tlb_migrate_finish; 37extern ia64_mv_tlb_migrate_finish_t sn_tlb_migrate_finish;
38extern ia64_mv_irq_to_vector sn_irq_to_vector;
38extern ia64_mv_local_vector_to_irq sn_local_vector_to_irq; 39extern ia64_mv_local_vector_to_irq sn_local_vector_to_irq;
39extern ia64_mv_pci_get_legacy_mem_t sn_pci_get_legacy_mem; 40extern ia64_mv_pci_get_legacy_mem_t sn_pci_get_legacy_mem;
40extern ia64_mv_pci_legacy_read_t sn_pci_legacy_read; 41extern ia64_mv_pci_legacy_read_t sn_pci_legacy_read;
@@ -104,6 +105,7 @@ extern ia64_mv_pci_fixup_bus_t sn_pci_fixup_bus;
104#define platform_readw_relaxed __sn_readw_relaxed 105#define platform_readw_relaxed __sn_readw_relaxed
105#define platform_readl_relaxed __sn_readl_relaxed 106#define platform_readl_relaxed __sn_readl_relaxed
106#define platform_readq_relaxed __sn_readq_relaxed 107#define platform_readq_relaxed __sn_readq_relaxed
108#define platform_irq_to_vector sn_irq_to_vector
107#define platform_local_vector_to_irq sn_local_vector_to_irq 109#define platform_local_vector_to_irq sn_local_vector_to_irq
108#define platform_pci_get_legacy_mem sn_pci_get_legacy_mem 110#define platform_pci_get_legacy_mem sn_pci_get_legacy_mem
109#define platform_pci_legacy_read sn_pci_legacy_read 111#define platform_pci_legacy_read sn_pci_legacy_read
diff --git a/include/asm-m68k/ioctls.h b/include/asm-m68k/ioctls.h
index 0c48929ab444..b8d2f4be7fd7 100644
--- a/include/asm-m68k/ioctls.h
+++ b/include/asm-m68k/ioctls.h
@@ -46,6 +46,10 @@
46#define TIOCSBRK 0x5427 /* BSD compatibility */ 46#define TIOCSBRK 0x5427 /* BSD compatibility */
47#define TIOCCBRK 0x5428 /* BSD compatibility */ 47#define TIOCCBRK 0x5428 /* BSD compatibility */
48#define TIOCGSID 0x5429 /* Return the session ID of FD */ 48#define TIOCGSID 0x5429 /* Return the session ID of FD */
49#define TCGETS2 _IOR('T',0x2A, struct termios2)
50#define TCSETS2 _IOW('T',0x2B, struct termios2)
51#define TCSETSW2 _IOW('T',0x2C, struct termios2)
52#define TCSETSF2 _IOW('T',0x2D, struct termios2)
49#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ 53#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
50#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ 54#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
51 55
diff --git a/include/asm-m68k/page.h b/include/asm-m68k/page.h
index 9e6d0d6debdb..1431ea0b59e0 100644
--- a/include/asm-m68k/page.h
+++ b/include/asm-m68k/page.h
@@ -4,17 +4,15 @@
4 4
5#ifdef __KERNEL__ 5#ifdef __KERNEL__
6 6
7#include <linux/const.h>
8
7/* PAGE_SHIFT determines the page size */ 9/* PAGE_SHIFT determines the page size */
8#ifndef CONFIG_SUN3 10#ifndef CONFIG_SUN3
9#define PAGE_SHIFT (12) 11#define PAGE_SHIFT (12)
10#else 12#else
11#define PAGE_SHIFT (13) 13#define PAGE_SHIFT (13)
12#endif 14#endif
13#ifdef __ASSEMBLY__ 15#define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT)
14#define PAGE_SIZE (1 << PAGE_SHIFT)
15#else
16#define PAGE_SIZE (1UL << PAGE_SHIFT)
17#endif
18#define PAGE_MASK (~(PAGE_SIZE-1)) 16#define PAGE_MASK (~(PAGE_SIZE-1))
19 17
20#include <asm/setup.h> 18#include <asm/setup.h>
@@ -27,6 +25,8 @@
27 25
28#ifndef __ASSEMBLY__ 26#ifndef __ASSEMBLY__
29 27
28#include <linux/compiler.h>
29
30#include <asm/module.h> 30#include <asm/module.h>
31 31
32#define get_user_page(vaddr) __get_free_page(GFP_KERNEL) 32#define get_user_page(vaddr) __get_free_page(GFP_KERNEL)
diff --git a/include/asm-m68k/processor.h b/include/asm-m68k/processor.h
index 8455f778b601..4453ec379c5d 100644
--- a/include/asm-m68k/processor.h
+++ b/include/asm-m68k/processor.h
@@ -38,12 +38,8 @@ static inline void wrusp(unsigned long usp)
38#ifndef CONFIG_SUN3 38#ifndef CONFIG_SUN3
39#define TASK_SIZE (0xF0000000UL) 39#define TASK_SIZE (0xF0000000UL)
40#else 40#else
41#ifdef __ASSEMBLY__
42#define TASK_SIZE (0x0E000000)
43#else
44#define TASK_SIZE (0x0E000000UL) 41#define TASK_SIZE (0x0E000000UL)
45#endif 42#endif
46#endif
47 43
48/* This decides where the kernel will search for a free chunk of vm 44/* This decides where the kernel will search for a free chunk of vm
49 * space during mmap's. 45 * space during mmap's.
diff --git a/include/asm-m68k/termbits.h b/include/asm-m68k/termbits.h
index 0e520f328f53..8c14170996bb 100644
--- a/include/asm-m68k/termbits.h
+++ b/include/asm-m68k/termbits.h
@@ -141,6 +141,7 @@ struct ktermios {
141#define HUPCL 0002000 141#define HUPCL 0002000
142#define CLOCAL 0004000 142#define CLOCAL 0004000
143#define CBAUDEX 0010000 143#define CBAUDEX 0010000
144#define BOTHER 0010000
144#define B57600 0010001 145#define B57600 0010001
145#define B115200 0010002 146#define B115200 0010002
146#define B230400 0010003 147#define B230400 0010003
@@ -156,10 +157,12 @@ struct ktermios {
156#define B3000000 0010015 157#define B3000000 0010015
157#define B3500000 0010016 158#define B3500000 0010016
158#define B4000000 0010017 159#define B4000000 0010017
159#define CIBAUD 002003600000 /* input baud rate (not used) */ 160#define CIBAUD 002003600000 /* input baud rate */
160#define CMSPAR 010000000000 /* mark or space (stick) parity */ 161#define CMSPAR 010000000000 /* mark or space (stick) parity */
161#define CRTSCTS 020000000000 /* flow control */ 162#define CRTSCTS 020000000000 /* flow control */
162 163
164#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
165
163/* c_lflag bits */ 166/* c_lflag bits */
164#define ISIG 0000001 167#define ISIG 0000001
165#define ICANON 0000002 168#define ICANON 0000002
diff --git a/include/asm-m68k/termios.h b/include/asm-m68k/termios.h
index 00edabd76168..0823032e4045 100644
--- a/include/asm-m68k/termios.h
+++ b/include/asm-m68k/termios.h
@@ -82,8 +82,10 @@ struct termio {
82 copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \ 82 copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
83}) 83})
84 84
85#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios)) 85#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
86#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios)) 86#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
87#define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
88#define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
87 89
88#endif /* __KERNEL__ */ 90#endif /* __KERNEL__ */
89 91
diff --git a/include/asm-m68knommu/pgtable.h b/include/asm-m68knommu/pgtable.h
index e1e6a1d2333a..46251016e821 100644
--- a/include/asm-m68knommu/pgtable.h
+++ b/include/asm-m68knommu/pgtable.h
@@ -65,4 +65,6 @@ extern unsigned int kobjsize(const void *objp);
65#define VMALLOC_START 0 65#define VMALLOC_START 0
66#define VMALLOC_END 0xffffffff 66#define VMALLOC_END 0xffffffff
67 67
68#include <asm-generic/pgtable.h>
69
68#endif /* _M68KNOMMU_PGTABLE_H */ 70#endif /* _M68KNOMMU_PGTABLE_H */
diff --git a/include/asm-mips/bcache.h b/include/asm-mips/bcache.h
index 3646a3f2ed38..0ba9d6ef76a7 100644
--- a/include/asm-mips/bcache.h
+++ b/include/asm-mips/bcache.h
@@ -21,7 +21,6 @@ struct bcache_ops {
21}; 21};
22 22
23extern void indy_sc_init(void); 23extern void indy_sc_init(void);
24extern void sni_pcimt_sc_init(void);
25 24
26#ifdef CONFIG_BOARD_SCACHE 25#ifdef CONFIG_BOARD_SCACHE
27 26
diff --git a/include/asm-mips/edac.h b/include/asm-mips/edac.h
index 83719eee2d13..4da0c1fe30d9 100644
--- a/include/asm-mips/edac.h
+++ b/include/asm-mips/edac.h
@@ -9,8 +9,7 @@ static inline void atomic_scrub(void *va, u32 size)
9 unsigned long temp; 9 unsigned long temp;
10 u32 i; 10 u32 i;
11 11
12 for (i = 0; i < size / sizeof(unsigned long); i++, virt_addr++) { 12 for (i = 0; i < size / sizeof(unsigned long); i++) {
13
14 /* 13 /*
15 * Very carefully read and write to memory atomically 14 * Very carefully read and write to memory atomically
16 * so we are interrupt, DMA and SMP safe. 15 * so we are interrupt, DMA and SMP safe.
@@ -19,16 +18,16 @@ static inline void atomic_scrub(void *va, u32 size)
19 */ 18 */
20 19
21 __asm__ __volatile__ ( 20 __asm__ __volatile__ (
22 " .set mips3 \n" 21 " .set mips2 \n"
23 "1: ll %0, %1 # atomic_add \n" 22 "1: ll %0, %1 # atomic_scrub \n"
24 " ll %0, %1 # atomic_add \n" 23 " addu %0, $0 \n"
25 " addu %0, $0 \n" 24 " sc %0, %1 \n"
26 " sc %0, %1 \n" 25 " beqz %0, 1b \n"
27 " beqz %0, 1b \n" 26 " .set mips0 \n"
28 " .set mips0 \n"
29 : "=&r" (temp), "=m" (*virt_addr) 27 : "=&r" (temp), "=m" (*virt_addr)
30 : "m" (*virt_addr)); 28 : "m" (*virt_addr));
31 29
30 virt_addr++;
32 } 31 }
33} 32}
34 33
diff --git a/include/asm-mips/gt64240.h b/include/asm-mips/gt64240.h
deleted file mode 100644
index 8f9bd341ed49..000000000000
--- a/include/asm-mips/gt64240.h
+++ /dev/null
@@ -1,1235 +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 - Galileo technology.
7 * Copyright (C) 2004 by Ralf Baechle
8 */
9#ifndef __ASM_MIPS_MV64240_H
10#define __ASM_MIPS_MV64240_H
11
12#include <asm/addrspace.h>
13#include <asm/marvell.h>
14
15/*
16 * CPU Control Registers
17 */
18
19#define CPU_CONFIGURATION 0x000
20#define CPU_MODE 0x120
21#define CPU_READ_RESPONSE_CROSSBAR_LOW 0x170
22#define CPU_READ_RESPONSE_CROSSBAR_HIGH 0x178
23
24/*
25 * Processor Address Space
26 */
27
28/* Sdram's BAR'S */
29#define SCS_0_LOW_DECODE_ADDRESS 0x008
30#define SCS_0_HIGH_DECODE_ADDRESS 0x010
31#define SCS_1_LOW_DECODE_ADDRESS 0x208
32#define SCS_1_HIGH_DECODE_ADDRESS 0x210
33#define SCS_2_LOW_DECODE_ADDRESS 0x018
34#define SCS_2_HIGH_DECODE_ADDRESS 0x020
35#define SCS_3_LOW_DECODE_ADDRESS 0x218
36#define SCS_3_HIGH_DECODE_ADDRESS 0x220
37/* Devices BAR'S */
38#define CS_0_LOW_DECODE_ADDRESS 0x028
39#define CS_0_HIGH_DECODE_ADDRESS 0x030
40#define CS_1_LOW_DECODE_ADDRESS 0x228
41#define CS_1_HIGH_DECODE_ADDRESS 0x230
42#define CS_2_LOW_DECODE_ADDRESS 0x248
43#define CS_2_HIGH_DECODE_ADDRESS 0x250
44#define CS_3_LOW_DECODE_ADDRESS 0x038
45#define CS_3_HIGH_DECODE_ADDRESS 0x040
46#define BOOTCS_LOW_DECODE_ADDRESS 0x238
47#define BOOTCS_HIGH_DECODE_ADDRESS 0x240
48
49#define PCI_0I_O_LOW_DECODE_ADDRESS 0x048
50#define PCI_0I_O_HIGH_DECODE_ADDRESS 0x050
51#define PCI_0MEMORY0_LOW_DECODE_ADDRESS 0x058
52#define PCI_0MEMORY0_HIGH_DECODE_ADDRESS 0x060
53#define PCI_0MEMORY1_LOW_DECODE_ADDRESS 0x080
54#define PCI_0MEMORY1_HIGH_DECODE_ADDRESS 0x088
55#define PCI_0MEMORY2_LOW_DECODE_ADDRESS 0x258
56#define PCI_0MEMORY2_HIGH_DECODE_ADDRESS 0x260
57#define PCI_0MEMORY3_LOW_DECODE_ADDRESS 0x280
58#define PCI_0MEMORY3_HIGH_DECODE_ADDRESS 0x288
59
60#define PCI_1I_O_LOW_DECODE_ADDRESS 0x090
61#define PCI_1I_O_HIGH_DECODE_ADDRESS 0x098
62#define PCI_1MEMORY0_LOW_DECODE_ADDRESS 0x0a0
63#define PCI_1MEMORY0_HIGH_DECODE_ADDRESS 0x0a8
64#define PCI_1MEMORY1_LOW_DECODE_ADDRESS 0x0b0
65#define PCI_1MEMORY1_HIGH_DECODE_ADDRESS 0x0b8
66#define PCI_1MEMORY2_LOW_DECODE_ADDRESS 0x2a0
67#define PCI_1MEMORY2_HIGH_DECODE_ADDRESS 0x2a8
68#define PCI_1MEMORY3_LOW_DECODE_ADDRESS 0x2b0
69#define PCI_1MEMORY3_HIGH_DECODE_ADDRESS 0x2b8
70
71#define INTERNAL_SPACE_DECODE 0x068
72
73#define CPU_0_LOW_DECODE_ADDRESS 0x290
74#define CPU_0_HIGH_DECODE_ADDRESS 0x298
75#define CPU_1_LOW_DECODE_ADDRESS 0x2c0
76#define CPU_1_HIGH_DECODE_ADDRESS 0x2c8
77
78#define PCI_0I_O_ADDRESS_REMAP 0x0f0
79#define PCI_0MEMORY0_ADDRESS_REMAP 0x0f8
80#define PCI_0MEMORY0_HIGH_ADDRESS_REMAP 0x320
81#define PCI_0MEMORY1_ADDRESS_REMAP 0x100
82#define PCI_0MEMORY1_HIGH_ADDRESS_REMAP 0x328
83#define PCI_0MEMORY2_ADDRESS_REMAP 0x2f8
84#define PCI_0MEMORY2_HIGH_ADDRESS_REMAP 0x330
85#define PCI_0MEMORY3_ADDRESS_REMAP 0x300
86#define PCI_0MEMORY3_HIGH_ADDRESS_REMAP 0x338
87
88#define PCI_1I_O_ADDRESS_REMAP 0x108
89#define PCI_1MEMORY0_ADDRESS_REMAP 0x110
90#define PCI_1MEMORY0_HIGH_ADDRESS_REMAP 0x340
91#define PCI_1MEMORY1_ADDRESS_REMAP 0x118
92#define PCI_1MEMORY1_HIGH_ADDRESS_REMAP 0x348
93#define PCI_1MEMORY2_ADDRESS_REMAP 0x310
94#define PCI_1MEMORY2_HIGH_ADDRESS_REMAP 0x350
95#define PCI_1MEMORY3_ADDRESS_REMAP 0x318
96#define PCI_1MEMORY3_HIGH_ADDRESS_REMAP 0x358
97
98/*
99 * CPU Sync Barrier
100 */
101
102#define PCI_0SYNC_BARIER_VIRTUAL_REGISTER 0x0c0
103#define PCI_1SYNC_BARIER_VIRTUAL_REGISTER 0x0c8
104
105
106/*
107 * CPU Access Protect
108 */
109
110#define CPU_LOW_PROTECT_ADDRESS_0 0X180
111#define CPU_HIGH_PROTECT_ADDRESS_0 0X188
112#define CPU_LOW_PROTECT_ADDRESS_1 0X190
113#define CPU_HIGH_PROTECT_ADDRESS_1 0X198
114#define CPU_LOW_PROTECT_ADDRESS_2 0X1a0
115#define CPU_HIGH_PROTECT_ADDRESS_2 0X1a8
116#define CPU_LOW_PROTECT_ADDRESS_3 0X1b0
117#define CPU_HIGH_PROTECT_ADDRESS_3 0X1b8
118#define CPU_LOW_PROTECT_ADDRESS_4 0X1c0
119#define CPU_HIGH_PROTECT_ADDRESS_4 0X1c8
120#define CPU_LOW_PROTECT_ADDRESS_5 0X1d0
121#define CPU_HIGH_PROTECT_ADDRESS_5 0X1d8
122#define CPU_LOW_PROTECT_ADDRESS_6 0X1e0
123#define CPU_HIGH_PROTECT_ADDRESS_6 0X1e8
124#define CPU_LOW_PROTECT_ADDRESS_7 0X1f0
125#define CPU_HIGH_PROTECT_ADDRESS_7 0X1f8
126
127
128/*
129 * Snoop Control
130 */
131
132#define SNOOP_BASE_ADDRESS_0 0x380
133#define SNOOP_TOP_ADDRESS_0 0x388
134#define SNOOP_BASE_ADDRESS_1 0x390
135#define SNOOP_TOP_ADDRESS_1 0x398
136#define SNOOP_BASE_ADDRESS_2 0x3a0
137#define SNOOP_TOP_ADDRESS_2 0x3a8
138#define SNOOP_BASE_ADDRESS_3 0x3b0
139#define SNOOP_TOP_ADDRESS_3 0x3b8
140
141/*
142 * CPU Error Report
143 */
144
145#define CPU_ERROR_ADDRESS_LOW 0x070
146#define CPU_ERROR_ADDRESS_HIGH 0x078
147#define CPU_ERROR_DATA_LOW 0x128
148#define CPU_ERROR_DATA_HIGH 0x130
149#define CPU_ERROR_PARITY 0x138
150#define CPU_ERROR_CAUSE 0x140
151#define CPU_ERROR_MASK 0x148
152
153/*
154 * Pslave Debug
155 */
156
157#define X_0_ADDRESS 0x360
158#define X_0_COMMAND_ID 0x368
159#define X_1_ADDRESS 0x370
160#define X_1_COMMAND_ID 0x378
161#define WRITE_DATA_LOW 0x3c0
162#define WRITE_DATA_HIGH 0x3c8
163#define WRITE_BYTE_ENABLE 0X3e0
164#define READ_DATA_LOW 0x3d0
165#define READ_DATA_HIGH 0x3d8
166#define READ_ID 0x3e8
167
168
169/*
170 * SDRAM and Device Address Space
171 */
172
173
174/*
175 * SDRAM Configuration
176 */
177
178#define SDRAM_CONFIGURATION 0x448
179#define SDRAM_OPERATION_MODE 0x474
180#define SDRAM_ADDRESS_DECODE 0x47C
181#define SDRAM_TIMING_PARAMETERS 0x4b4
182#define SDRAM_UMA_CONTROL 0x4a4
183#define SDRAM_CROSS_BAR_CONTROL_LOW 0x4a8
184#define SDRAM_CROSS_BAR_CONTROL_HIGH 0x4ac
185#define SDRAM_CROSS_BAR_TIMEOUT 0x4b0
186
187
188/*
189 * SDRAM Parameters
190 */
191
192#define SDRAM_BANK0PARAMETERS 0x44C
193#define SDRAM_BANK1PARAMETERS 0x450
194#define SDRAM_BANK2PARAMETERS 0x454
195#define SDRAM_BANK3PARAMETERS 0x458
196
197
198/*
199 * SDRAM Error Report
200 */
201
202#define SDRAM_ERROR_DATA_LOW 0x484
203#define SDRAM_ERROR_DATA_HIGH 0x480
204#define SDRAM_AND_DEVICE_ERROR_ADDRESS 0x490
205#define SDRAM_RECEIVED_ECC 0x488
206#define SDRAM_CALCULATED_ECC 0x48c
207#define SDRAM_ECC_CONTROL 0x494
208#define SDRAM_ECC_ERROR_COUNTER 0x498
209
210
211/*
212 * SDunit Debug (for internal use)
213 */
214
215#define X0_ADDRESS 0x500
216#define X0_COMMAND_AND_ID 0x504
217#define X0_WRITE_DATA_LOW 0x508
218#define X0_WRITE_DATA_HIGH 0x50c
219#define X0_WRITE_BYTE_ENABLE 0x518
220#define X0_READ_DATA_LOW 0x510
221#define X0_READ_DATA_HIGH 0x514
222#define X0_READ_ID 0x51c
223#define X1_ADDRESS 0x520
224#define X1_COMMAND_AND_ID 0x524
225#define X1_WRITE_DATA_LOW 0x528
226#define X1_WRITE_DATA_HIGH 0x52c
227#define X1_WRITE_BYTE_ENABLE 0x538
228#define X1_READ_DATA_LOW 0x530
229#define X1_READ_DATA_HIGH 0x534
230#define X1_READ_ID 0x53c
231#define X0_SNOOP_ADDRESS 0x540
232#define X0_SNOOP_COMMAND 0x544
233#define X1_SNOOP_ADDRESS 0x548
234#define X1_SNOOP_COMMAND 0x54c
235
236
237/*
238 * Device Parameters
239 */
240
241#define DEVICE_BANK0PARAMETERS 0x45c
242#define DEVICE_BANK1PARAMETERS 0x460
243#define DEVICE_BANK2PARAMETERS 0x464
244#define DEVICE_BANK3PARAMETERS 0x468
245#define DEVICE_BOOT_BANK_PARAMETERS 0x46c
246#define DEVICE_CONTROL 0x4c0
247#define DEVICE_CROSS_BAR_CONTROL_LOW 0x4c8
248#define DEVICE_CROSS_BAR_CONTROL_HIGH 0x4cc
249#define DEVICE_CROSS_BAR_TIMEOUT 0x4c4
250
251
252/*
253 * Device Interrupt
254 */
255
256#define DEVICE_INTERRUPT_CAUSE 0x4d0
257#define DEVICE_INTERRUPT_MASK 0x4d4
258#define DEVICE_ERROR_ADDRESS 0x4d8
259
260/*
261 * DMA Record
262 */
263
264#define CHANNEL0_DMA_BYTE_COUNT 0x800
265#define CHANNEL1_DMA_BYTE_COUNT 0x804
266#define CHANNEL2_DMA_BYTE_COUNT 0x808
267#define CHANNEL3_DMA_BYTE_COUNT 0x80C
268#define CHANNEL4_DMA_BYTE_COUNT 0x900
269#define CHANNEL5_DMA_BYTE_COUNT 0x904
270#define CHANNEL6_DMA_BYTE_COUNT 0x908
271#define CHANNEL7_DMA_BYTE_COUNT 0x90C
272#define CHANNEL0_DMA_SOURCE_ADDRESS 0x810
273#define CHANNEL1_DMA_SOURCE_ADDRESS 0x814
274#define CHANNEL2_DMA_SOURCE_ADDRESS 0x818
275#define CHANNEL3_DMA_SOURCE_ADDRESS 0x81C
276#define CHANNEL4_DMA_SOURCE_ADDRESS 0x910
277#define CHANNEL5_DMA_SOURCE_ADDRESS 0x914
278#define CHANNEL6_DMA_SOURCE_ADDRESS 0x918
279#define CHANNEL7_DMA_SOURCE_ADDRESS 0x91C
280#define CHANNEL0_DMA_DESTINATION_ADDRESS 0x820
281#define CHANNEL1_DMA_DESTINATION_ADDRESS 0x824
282#define CHANNEL2_DMA_DESTINATION_ADDRESS 0x828
283#define CHANNEL3_DMA_DESTINATION_ADDRESS 0x82C
284#define CHANNEL4_DMA_DESTINATION_ADDRESS 0x920
285#define CHANNEL5_DMA_DESTINATION_ADDRESS 0x924
286#define CHANNEL6_DMA_DESTINATION_ADDRESS 0x928
287#define CHANNEL7_DMA_DESTINATION_ADDRESS 0x92C
288#define CHANNEL0NEXT_RECORD_POINTER 0x830
289#define CHANNEL1NEXT_RECORD_POINTER 0x834
290#define CHANNEL2NEXT_RECORD_POINTER 0x838
291#define CHANNEL3NEXT_RECORD_POINTER 0x83C
292#define CHANNEL4NEXT_RECORD_POINTER 0x930
293#define CHANNEL5NEXT_RECORD_POINTER 0x934
294#define CHANNEL6NEXT_RECORD_POINTER 0x938
295#define CHANNEL7NEXT_RECORD_POINTER 0x93C
296#define CHANNEL0CURRENT_DESCRIPTOR_POINTER 0x870
297#define CHANNEL1CURRENT_DESCRIPTOR_POINTER 0x874
298#define CHANNEL2CURRENT_DESCRIPTOR_POINTER 0x878
299#define CHANNEL3CURRENT_DESCRIPTOR_POINTER 0x87C
300#define CHANNEL4CURRENT_DESCRIPTOR_POINTER 0x970
301#define CHANNEL5CURRENT_DESCRIPTOR_POINTER 0x974
302#define CHANNEL6CURRENT_DESCRIPTOR_POINTER 0x978
303#define CHANNEL7CURRENT_DESCRIPTOR_POINTER 0x97C
304#define CHANNEL0_DMA_SOURCE_HIGH_PCI_ADDRESS 0x890
305#define CHANNEL1_DMA_SOURCE_HIGH_PCI_ADDRESS 0x894
306#define CHANNEL2_DMA_SOURCE_HIGH_PCI_ADDRESS 0x898
307#define CHANNEL3_DMA_SOURCE_HIGH_PCI_ADDRESS 0x89c
308#define CHANNEL4_DMA_SOURCE_HIGH_PCI_ADDRESS 0x990
309#define CHANNEL5_DMA_SOURCE_HIGH_PCI_ADDRESS 0x994
310#define CHANNEL6_DMA_SOURCE_HIGH_PCI_ADDRESS 0x998
311#define CHANNEL7_DMA_SOURCE_HIGH_PCI_ADDRESS 0x99c
312#define CHANNEL0_DMA_DESTINATION_HIGH_PCI_ADDRESS 0x8a0
313#define CHANNEL1_DMA_DESTINATION_HIGH_PCI_ADDRESS 0x8a4
314#define CHANNEL2_DMA_DESTINATION_HIGH_PCI_ADDRESS 0x8a8
315#define CHANNEL3_DMA_DESTINATION_HIGH_PCI_ADDRESS 0x8ac
316#define CHANNEL4_DMA_DESTINATION_HIGH_PCI_ADDRESS 0x9a0
317#define CHANNEL5_DMA_DESTINATION_HIGH_PCI_ADDRESS 0x9a4
318#define CHANNEL6_DMA_DESTINATION_HIGH_PCI_ADDRESS 0x9a8
319#define CHANNEL7_DMA_DESTINATION_HIGH_PCI_ADDRESS 0x9ac
320#define CHANNEL0_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS 0x8b0
321#define CHANNEL1_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS 0x8b4
322#define CHANNEL2_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS 0x8b8
323#define CHANNEL3_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS 0x8bc
324#define CHANNEL4_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS 0x9b0
325#define CHANNEL5_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS 0x9b4
326#define CHANNEL6_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS 0x9b8
327#define CHANNEL7_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS 0x9bc
328
329/*
330 * DMA Channel Control
331 */
332
333#define CHANNEL0CONTROL 0x840
334#define CHANNEL0CONTROL_HIGH 0x880
335
336#define CHANNEL1CONTROL 0x844
337#define CHANNEL1CONTROL_HIGH 0x884
338
339#define CHANNEL2CONTROL 0x848
340#define CHANNEL2CONTROL_HIGH 0x888
341
342#define CHANNEL3CONTROL 0x84C
343#define CHANNEL3CONTROL_HIGH 0x88C
344
345#define CHANNEL4CONTROL 0x940
346#define CHANNEL4CONTROL_HIGH 0x980
347
348#define CHANNEL5CONTROL 0x944
349#define CHANNEL5CONTROL_HIGH 0x984
350
351#define CHANNEL6CONTROL 0x948
352#define CHANNEL6CONTROL_HIGH 0x988
353
354#define CHANNEL7CONTROL 0x94C
355#define CHANNEL7CONTROL_HIGH 0x98C
356
357
358/*
359 * DMA Arbiter
360 */
361
362#define ARBITER_CONTROL_0_3 0x860
363#define ARBITER_CONTROL_4_7 0x960
364
365
366/*
367 * DMA Interrupt
368 */
369
370#define CHANELS0_3_INTERRUPT_CAUSE 0x8c0
371#define CHANELS0_3_INTERRUPT_MASK 0x8c4
372#define CHANELS0_3_ERROR_ADDRESS 0x8c8
373#define CHANELS0_3_ERROR_SELECT 0x8cc
374#define CHANELS4_7_INTERRUPT_CAUSE 0x9c0
375#define CHANELS4_7_INTERRUPT_MASK 0x9c4
376#define CHANELS4_7_ERROR_ADDRESS 0x9c8
377#define CHANELS4_7_ERROR_SELECT 0x9cc
378
379
380/*
381 * DMA Debug (for internal use)
382 */
383
384#define DMA_X0_ADDRESS 0x8e0
385#define DMA_X0_COMMAND_AND_ID 0x8e4
386#define DMA_X0_WRITE_DATA_LOW 0x8e8
387#define DMA_X0_WRITE_DATA_HIGH 0x8ec
388#define DMA_X0_WRITE_BYTE_ENABLE 0x8f8
389#define DMA_X0_READ_DATA_LOW 0x8f0
390#define DMA_X0_READ_DATA_HIGH 0x8f4
391#define DMA_X0_READ_ID 0x8fc
392#define DMA_X1_ADDRESS 0x9e0
393#define DMA_X1_COMMAND_AND_ID 0x9e4
394#define DMA_X1_WRITE_DATA_LOW 0x9e8
395#define DMA_X1_WRITE_DATA_HIGH 0x9ec
396#define DMA_X1_WRITE_BYTE_ENABLE 0x9f8
397#define DMA_X1_READ_DATA_LOW 0x9f0
398#define DMA_X1_READ_DATA_HIGH 0x9f4
399#define DMA_X1_READ_ID 0x9fc
400
401/*
402 * Timer_Counter
403 */
404
405#define TIMER_COUNTER0 0x850
406#define TIMER_COUNTER1 0x854
407#define TIMER_COUNTER2 0x858
408#define TIMER_COUNTER3 0x85C
409#define TIMER_COUNTER_0_3_CONTROL 0x864
410#define TIMER_COUNTER_0_3_INTERRUPT_CAUSE 0x868
411#define TIMER_COUNTER_0_3_INTERRUPT_MASK 0x86c
412#define TIMER_COUNTER4 0x950
413#define TIMER_COUNTER5 0x954
414#define TIMER_COUNTER6 0x958
415#define TIMER_COUNTER7 0x95C
416#define TIMER_COUNTER_4_7_CONTROL 0x964
417#define TIMER_COUNTER_4_7_INTERRUPT_CAUSE 0x968
418#define TIMER_COUNTER_4_7_INTERRUPT_MASK 0x96c
419
420/*
421 * PCI Slave Address Decoding
422 */
423
424#define PCI_0SCS_0_BANK_SIZE 0xc08
425#define PCI_1SCS_0_BANK_SIZE 0xc88
426#define PCI_0SCS_1_BANK_SIZE 0xd08
427#define PCI_1SCS_1_BANK_SIZE 0xd88
428#define PCI_0SCS_2_BANK_SIZE 0xc0c
429#define PCI_1SCS_2_BANK_SIZE 0xc8c
430#define PCI_0SCS_3_BANK_SIZE 0xd0c
431#define PCI_1SCS_3_BANK_SIZE 0xd8c
432#define PCI_0CS_0_BANK_SIZE 0xc10
433#define PCI_1CS_0_BANK_SIZE 0xc90
434#define PCI_0CS_1_BANK_SIZE 0xd10
435#define PCI_1CS_1_BANK_SIZE 0xd90
436#define PCI_0CS_2_BANK_SIZE 0xd18
437#define PCI_1CS_2_BANK_SIZE 0xd98
438#define PCI_0CS_3_BANK_SIZE 0xc14
439#define PCI_1CS_3_BANK_SIZE 0xc94
440#define PCI_0CS_BOOT_BANK_SIZE 0xd14
441#define PCI_1CS_BOOT_BANK_SIZE 0xd94
442#define PCI_0P2P_MEM0_BAR_SIZE 0xd1c
443#define PCI_1P2P_MEM0_BAR_SIZE 0xd9c
444#define PCI_0P2P_MEM1_BAR_SIZE 0xd20
445#define PCI_1P2P_MEM1_BAR_SIZE 0xda0
446#define PCI_0P2P_I_O_BAR_SIZE 0xd24
447#define PCI_1P2P_I_O_BAR_SIZE 0xda4
448#define PCI_0CPU_BAR_SIZE 0xd28
449#define PCI_1CPU_BAR_SIZE 0xda8
450#define PCI_0DAC_SCS_0_BANK_SIZE 0xe00
451#define PCI_1DAC_SCS_0_BANK_SIZE 0xe80
452#define PCI_0DAC_SCS_1_BANK_SIZE 0xe04
453#define PCI_1DAC_SCS_1_BANK_SIZE 0xe84
454#define PCI_0DAC_SCS_2_BANK_SIZE 0xe08
455#define PCI_1DAC_SCS_2_BANK_SIZE 0xe88
456#define PCI_0DAC_SCS_3_BANK_SIZE 0xe0c
457#define PCI_1DAC_SCS_3_BANK_SIZE 0xe8c
458#define PCI_0DAC_CS_0_BANK_SIZE 0xe10
459#define PCI_1DAC_CS_0_BANK_SIZE 0xe90
460#define PCI_0DAC_CS_1_BANK_SIZE 0xe14
461#define PCI_1DAC_CS_1_BANK_SIZE 0xe94
462#define PCI_0DAC_CS_2_BANK_SIZE 0xe18
463#define PCI_1DAC_CS_2_BANK_SIZE 0xe98
464#define PCI_0DAC_CS_3_BANK_SIZE 0xe1c
465#define PCI_1DAC_CS_3_BANK_SIZE 0xe9c
466#define PCI_0DAC_BOOTCS_BANK_SIZE 0xe20
467#define PCI_1DAC_BOOTCS_BANK_SIZE 0xea0
468#define PCI_0DAC_P2P_MEM0_BAR_SIZE 0xe24
469#define PCI_1DAC_P2P_MEM0_BAR_SIZE 0xea4
470#define PCI_0DAC_P2P_MEM1_BAR_SIZE 0xe28
471#define PCI_1DAC_P2P_MEM1_BAR_SIZE 0xea8
472#define PCI_0DAC_CPU_BAR_SIZE 0xe2c
473#define PCI_1DAC_CPU_BAR_SIZE 0xeac
474#define PCI_0EXPANSION_ROM_BAR_SIZE 0xd2c
475#define PCI_1EXPANSION_ROM_BAR_SIZE 0xdac
476#define PCI_0BASE_ADDRESS_REGISTERS_ENABLE 0xc3c
477#define PCI_1BASE_ADDRESS_REGISTERS_ENABLE 0xcbc
478#define PCI_0SCS_0_BASE_ADDRESS_REMAP 0xc48
479#define PCI_1SCS_0_BASE_ADDRESS_REMAP 0xcc8
480#define PCI_0SCS_1_BASE_ADDRESS_REMAP 0xd48
481#define PCI_1SCS_1_BASE_ADDRESS_REMAP 0xdc8
482#define PCI_0SCS_2_BASE_ADDRESS_REMAP 0xc4c
483#define PCI_1SCS_2_BASE_ADDRESS_REMAP 0xccc
484#define PCI_0SCS_3_BASE_ADDRESS_REMAP 0xd4c
485#define PCI_1SCS_3_BASE_ADDRESS_REMAP 0xdcc
486#define PCI_0CS_0_BASE_ADDRESS_REMAP 0xc50
487#define PCI_1CS_0_BASE_ADDRESS_REMAP 0xcd0
488#define PCI_0CS_1_BASE_ADDRESS_REMAP 0xd50
489#define PCI_1CS_1_BASE_ADDRESS_REMAP 0xdd0
490#define PCI_0CS_2_BASE_ADDRESS_REMAP 0xd58
491#define PCI_1CS_2_BASE_ADDRESS_REMAP 0xdd8
492#define PCI_0CS_3_BASE_ADDRESS_REMAP 0xc54
493#define PCI_1CS_3_BASE_ADDRESS_REMAP 0xcd4
494#define PCI_0CS_BOOTCS_BASE_ADDRESS_REMAP 0xd54
495#define PCI_1CS_BOOTCS_BASE_ADDRESS_REMAP 0xdd4
496#define PCI_0P2P_MEM0_BASE_ADDRESS_REMAP_LOW 0xd5c
497#define PCI_1P2P_MEM0_BASE_ADDRESS_REMAP_LOW 0xddc
498#define PCI_0P2P_MEM0_BASE_ADDRESS_REMAP_HIGH 0xd60
499#define PCI_1P2P_MEM0_BASE_ADDRESS_REMAP_HIGH 0xde0
500#define PCI_0P2P_MEM1_BASE_ADDRESS_REMAP_LOW 0xd64
501#define PCI_1P2P_MEM1_BASE_ADDRESS_REMAP_LOW 0xde4
502#define PCI_0P2P_MEM1_BASE_ADDRESS_REMAP_HIGH 0xd68
503#define PCI_1P2P_MEM1_BASE_ADDRESS_REMAP_HIGH 0xde8
504#define PCI_0P2P_I_O_BASE_ADDRESS_REMAP 0xd6c
505#define PCI_1P2P_I_O_BASE_ADDRESS_REMAP 0xdec
506#define PCI_0CPU_BASE_ADDRESS_REMAP 0xd70
507#define PCI_1CPU_BASE_ADDRESS_REMAP 0xdf0
508#define PCI_0DAC_SCS_0_BASE_ADDRESS_REMAP 0xf00
509#define PCI_1DAC_SCS_0_BASE_ADDRESS_REMAP 0xff0
510#define PCI_0DAC_SCS_1_BASE_ADDRESS_REMAP 0xf04
511#define PCI_1DAC_SCS_1_BASE_ADDRESS_REMAP 0xf84
512#define PCI_0DAC_SCS_2_BASE_ADDRESS_REMAP 0xf08
513#define PCI_1DAC_SCS_2_BASE_ADDRESS_REMAP 0xf88
514#define PCI_0DAC_SCS_3_BASE_ADDRESS_REMAP 0xf0c
515#define PCI_1DAC_SCS_3_BASE_ADDRESS_REMAP 0xf8c
516#define PCI_0DAC_CS_0_BASE_ADDRESS_REMAP 0xf10
517#define PCI_1DAC_CS_0_BASE_ADDRESS_REMAP 0xf90
518#define PCI_0DAC_CS_1_BASE_ADDRESS_REMAP 0xf14
519#define PCI_1DAC_CS_1_BASE_ADDRESS_REMAP 0xf94
520#define PCI_0DAC_CS_2_BASE_ADDRESS_REMAP 0xf18
521#define PCI_1DAC_CS_2_BASE_ADDRESS_REMAP 0xf98
522#define PCI_0DAC_CS_3_BASE_ADDRESS_REMAP 0xf1c
523#define PCI_1DAC_CS_3_BASE_ADDRESS_REMAP 0xf9c
524#define PCI_0DAC_BOOTCS_BASE_ADDRESS_REMAP 0xf20
525#define PCI_1DAC_BOOTCS_BASE_ADDRESS_REMAP 0xfa0
526#define PCI_0DAC_P2P_MEM0_BASE_ADDRESS_REMAP_LOW 0xf24
527#define PCI_1DAC_P2P_MEM0_BASE_ADDRESS_REMAP_LOW 0xfa4
528#define PCI_0DAC_P2P_MEM0_BASE_ADDRESS_REMAP_HIGH 0xf28
529#define PCI_1DAC_P2P_MEM0_BASE_ADDRESS_REMAP_HIGH 0xfa8
530#define PCI_0DAC_P2P_MEM1_BASE_ADDRESS_REMAP_LOW 0xf2c
531#define PCI_1DAC_P2P_MEM1_BASE_ADDRESS_REMAP_LOW 0xfac
532#define PCI_0DAC_P2P_MEM1_BASE_ADDRESS_REMAP_HIGH 0xf30
533#define PCI_1DAC_P2P_MEM1_BASE_ADDRESS_REMAP_HIGH 0xfb0
534#define PCI_0DAC_CPU_BASE_ADDRESS_REMAP 0xf34
535#define PCI_1DAC_CPU_BASE_ADDRESS_REMAP 0xfb4
536#define PCI_0EXPANSION_ROM_BASE_ADDRESS_REMAP 0xf38
537#define PCI_1EXPANSION_ROM_BASE_ADDRESS_REMAP 0xfb8
538#define PCI_0ADDRESS_DECODE_CONTROL 0xd3c
539#define PCI_1ADDRESS_DECODE_CONTROL 0xdbc
540
541/*
542 * PCI Control
543 */
544
545#define PCI_0COMMAND 0xc00
546#define PCI_1COMMAND 0xc80
547#define PCI_0MODE 0xd00
548#define PCI_1MODE 0xd80
549#define PCI_0TIMEOUT_RETRY 0xc04
550#define PCI_1TIMEOUT_RETRY 0xc84
551#define PCI_0READ_BUFFER_DISCARD_TIMER 0xd04
552#define PCI_1READ_BUFFER_DISCARD_TIMER 0xd84
553#define MSI_0TRIGGER_TIMER 0xc38
554#define MSI_1TRIGGER_TIMER 0xcb8
555#define PCI_0ARBITER_CONTROL 0x1d00
556#define PCI_1ARBITER_CONTROL 0x1d80
557/* changing untill here */
558#define PCI_0CROSS_BAR_CONTROL_LOW 0x1d08
559#define PCI_0CROSS_BAR_CONTROL_HIGH 0x1d0c
560#define PCI_0CROSS_BAR_TIMEOUT 0x1d04
561#define PCI_0READ_RESPONSE_CROSS_BAR_CONTROL_LOW 0x1d18
562#define PCI_0READ_RESPONSE_CROSS_BAR_CONTROL_HIGH 0x1d1c
563#define PCI_0SYNC_BARRIER_VIRTUAL_REGISTER 0x1d10
564#define PCI_0P2P_CONFIGURATION 0x1d14
565#define PCI_0ACCESS_CONTROL_BASE_0_LOW 0x1e00
566#define PCI_0ACCESS_CONTROL_BASE_0_HIGH 0x1e04
567#define PCI_0ACCESS_CONTROL_TOP_0 0x1e08
568#define PCI_0ACCESS_CONTROL_BASE_1_LOW 0c1e10
569#define PCI_0ACCESS_CONTROL_BASE_1_HIGH 0x1e14
570#define PCI_0ACCESS_CONTROL_TOP_1 0x1e18
571#define PCI_0ACCESS_CONTROL_BASE_2_LOW 0c1e20
572#define PCI_0ACCESS_CONTROL_BASE_2_HIGH 0x1e24
573#define PCI_0ACCESS_CONTROL_TOP_2 0x1e28
574#define PCI_0ACCESS_CONTROL_BASE_3_LOW 0c1e30
575#define PCI_0ACCESS_CONTROL_BASE_3_HIGH 0x1e34
576#define PCI_0ACCESS_CONTROL_TOP_3 0x1e38
577#define PCI_0ACCESS_CONTROL_BASE_4_LOW 0c1e40
578#define PCI_0ACCESS_CONTROL_BASE_4_HIGH 0x1e44
579#define PCI_0ACCESS_CONTROL_TOP_4 0x1e48
580#define PCI_0ACCESS_CONTROL_BASE_5_LOW 0c1e50
581#define PCI_0ACCESS_CONTROL_BASE_5_HIGH 0x1e54
582#define PCI_0ACCESS_CONTROL_TOP_5 0x1e58
583#define PCI_0ACCESS_CONTROL_BASE_6_LOW 0c1e60
584#define PCI_0ACCESS_CONTROL_BASE_6_HIGH 0x1e64
585#define PCI_0ACCESS_CONTROL_TOP_6 0x1e68
586#define PCI_0ACCESS_CONTROL_BASE_7_LOW 0c1e70
587#define PCI_0ACCESS_CONTROL_BASE_7_HIGH 0x1e74
588#define PCI_0ACCESS_CONTROL_TOP_7 0x1e78
589#define PCI_1CROSS_BAR_CONTROL_LOW 0x1d88
590#define PCI_1CROSS_BAR_CONTROL_HIGH 0x1d8c
591#define PCI_1CROSS_BAR_TIMEOUT 0x1d84
592#define PCI_1READ_RESPONSE_CROSS_BAR_CONTROL_LOW 0x1d98
593#define PCI_1READ_RESPONSE_CROSS_BAR_CONTROL_HIGH 0x1d9c
594#define PCI_1SYNC_BARRIER_VIRTUAL_REGISTER 0x1d90
595#define PCI_1P2P_CONFIGURATION 0x1d94
596#define PCI_1ACCESS_CONTROL_BASE_0_LOW 0x1e80
597#define PCI_1ACCESS_CONTROL_BASE_0_HIGH 0x1e84
598#define PCI_1ACCESS_CONTROL_TOP_0 0x1e88
599#define PCI_1ACCESS_CONTROL_BASE_1_LOW 0c1e90
600#define PCI_1ACCESS_CONTROL_BASE_1_HIGH 0x1e94
601#define PCI_1ACCESS_CONTROL_TOP_1 0x1e98
602#define PCI_1ACCESS_CONTROL_BASE_2_LOW 0c1ea0
603#define PCI_1ACCESS_CONTROL_BASE_2_HIGH 0x1ea4
604#define PCI_1ACCESS_CONTROL_TOP_2 0x1ea8
605#define PCI_1ACCESS_CONTROL_BASE_3_LOW 0c1eb0
606#define PCI_1ACCESS_CONTROL_BASE_3_HIGH 0x1eb4
607#define PCI_1ACCESS_CONTROL_TOP_3 0x1eb8
608#define PCI_1ACCESS_CONTROL_BASE_4_LOW 0c1ec0
609#define PCI_1ACCESS_CONTROL_BASE_4_HIGH 0x1ec4
610#define PCI_1ACCESS_CONTROL_TOP_4 0x1ec8
611#define PCI_1ACCESS_CONTROL_BASE_5_LOW 0c1ed0
612#define PCI_1ACCESS_CONTROL_BASE_5_HIGH 0x1ed4
613#define PCI_1ACCESS_CONTROL_TOP_5 0x1ed8
614#define PCI_1ACCESS_CONTROL_BASE_6_LOW 0c1ee0
615#define PCI_1ACCESS_CONTROL_BASE_6_HIGH 0x1ee4
616#define PCI_1ACCESS_CONTROL_TOP_6 0x1ee8
617#define PCI_1ACCESS_CONTROL_BASE_7_LOW 0c1ef0
618#define PCI_1ACCESS_CONTROL_BASE_7_HIGH 0x1ef4
619#define PCI_1ACCESS_CONTROL_TOP_7 0x1ef8
620
621/*
622 * PCI Snoop Control
623 */
624
625#define PCI_0SNOOP_CONTROL_BASE_0_LOW 0x1f00
626#define PCI_0SNOOP_CONTROL_BASE_0_HIGH 0x1f04
627#define PCI_0SNOOP_CONTROL_TOP_0 0x1f08
628#define PCI_0SNOOP_CONTROL_BASE_1_0_LOW 0x1f10
629#define PCI_0SNOOP_CONTROL_BASE_1_0_HIGH 0x1f14
630#define PCI_0SNOOP_CONTROL_TOP_1 0x1f18
631#define PCI_0SNOOP_CONTROL_BASE_2_0_LOW 0x1f20
632#define PCI_0SNOOP_CONTROL_BASE_2_0_HIGH 0x1f24
633#define PCI_0SNOOP_CONTROL_TOP_2 0x1f28
634#define PCI_0SNOOP_CONTROL_BASE_3_0_LOW 0x1f30
635#define PCI_0SNOOP_CONTROL_BASE_3_0_HIGH 0x1f34
636#define PCI_0SNOOP_CONTROL_TOP_3 0x1f38
637#define PCI_1SNOOP_CONTROL_BASE_0_LOW 0x1f80
638#define PCI_1SNOOP_CONTROL_BASE_0_HIGH 0x1f84
639#define PCI_1SNOOP_CONTROL_TOP_0 0x1f88
640#define PCI_1SNOOP_CONTROL_BASE_1_0_LOW 0x1f90
641#define PCI_1SNOOP_CONTROL_BASE_1_0_HIGH 0x1f94
642#define PCI_1SNOOP_CONTROL_TOP_1 0x1f98
643#define PCI_1SNOOP_CONTROL_BASE_2_0_LOW 0x1fa0
644#define PCI_1SNOOP_CONTROL_BASE_2_0_HIGH 0x1fa4
645#define PCI_1SNOOP_CONTROL_TOP_2 0x1fa8
646#define PCI_1SNOOP_CONTROL_BASE_3_0_LOW 0x1fb0
647#define PCI_1SNOOP_CONTROL_BASE_3_0_HIGH 0x1fb4
648#define PCI_1SNOOP_CONTROL_TOP_3 0x1fb8
649
650/*
651 * PCI Configuration Address
652 */
653
654#define PCI_0CONFIGURATION_ADDRESS 0xcf8
655#define PCI_0CONFIGURATION_DATA_VIRTUAL_REGISTER 0xcfc
656#define PCI_1CONFIGURATION_ADDRESS 0xc78
657#define PCI_1CONFIGURATION_DATA_VIRTUAL_REGISTER 0xc7c
658#define PCI_0INTERRUPT_ACKNOWLEDGE_VIRTUAL_REGISTER 0xc34
659#define PCI_1INTERRUPT_ACKNOWLEDGE_VIRTUAL_REGISTER 0xcb4
660
661/*
662 * PCI Error Report
663 */
664
665#define PCI_0SERR_MASK 0xc28
666#define PCI_0ERROR_ADDRESS_LOW 0x1d40
667#define PCI_0ERROR_ADDRESS_HIGH 0x1d44
668#define PCI_0ERROR_DATA_LOW 0x1d48
669#define PCI_0ERROR_DATA_HIGH 0x1d4c
670#define PCI_0ERROR_COMMAND 0x1d50
671#define PCI_0ERROR_CAUSE 0x1d58
672#define PCI_0ERROR_MASK 0x1d5c
673
674#define PCI_1SERR_MASK 0xca8
675#define PCI_1ERROR_ADDRESS_LOW 0x1dc0
676#define PCI_1ERROR_ADDRESS_HIGH 0x1dc4
677#define PCI_1ERROR_DATA_LOW 0x1dc8
678#define PCI_1ERROR_DATA_HIGH 0x1dcc
679#define PCI_1ERROR_COMMAND 0x1dd0
680#define PCI_1ERROR_CAUSE 0x1dd8
681#define PCI_1ERROR_MASK 0x1ddc
682
683
684/*
685 * Lslave Debug (for internal use)
686 */
687
688#define L_SLAVE_X0_ADDRESS 0x1d20
689#define L_SLAVE_X0_COMMAND_AND_ID 0x1d24
690#define L_SLAVE_X1_ADDRESS 0x1d28
691#define L_SLAVE_X1_COMMAND_AND_ID 0x1d2c
692#define L_SLAVE_WRITE_DATA_LOW 0x1d30
693#define L_SLAVE_WRITE_DATA_HIGH 0x1d34
694#define L_SLAVE_WRITE_BYTE_ENABLE 0x1d60
695#define L_SLAVE_READ_DATA_LOW 0x1d38
696#define L_SLAVE_READ_DATA_HIGH 0x1d3c
697#define L_SLAVE_READ_ID 0x1d64
698
699#if 0 /* Disabled because PCI_* namespace belongs to PCI subsystem ... */
700
701/*
702 * PCI Configuration Function 0
703 */
704
705#define PCI_DEVICE_AND_VENDOR_ID 0x000
706#define PCI_STATUS_AND_COMMAND 0x004
707#define PCI_CLASS_CODE_AND_REVISION_ID 0x008
708#define PCI_BIST_HEADER_TYPE_LATENCY_TIMER_CACHE_LINE 0x00C
709#define PCI_SCS_0_BASE_ADDRESS 0x010
710#define PCI_SCS_1_BASE_ADDRESS 0x014
711#define PCI_SCS_2_BASE_ADDRESS 0x018
712#define PCI_SCS_3_BASE_ADDRESS 0x01C
713#define PCI_INTERNAL_REGISTERS_MEMORY_MAPPED_BASE_ADDRESS 0x020
714#define PCI_INTERNAL_REGISTERS_I_OMAPPED_BASE_ADDRESS 0x024
715#define PCI_SUBSYSTEM_ID_AND_SUBSYSTEM_VENDOR_ID 0x02C
716#define PCI_EXPANSION_ROM_BASE_ADDRESS_REGISTER 0x030
717#define PCI_CAPABILTY_LIST_POINTER 0x034
718#define PCI_INTERRUPT_PIN_AND_LINE 0x03C
719#define PCI_POWER_MANAGEMENT_CAPABILITY 0x040
720#define PCI_POWER_MANAGEMENT_STATUS_AND_CONTROL 0x044
721#define PCI_VPD_ADDRESS 0x048
722#define PCI_VPD_DATA 0X04c
723#define PCI_MSI_MESSAGE_CONTROL 0x050
724#define PCI_MSI_MESSAGE_ADDRESS 0x054
725#define PCI_MSI_MESSAGE_UPPER_ADDRESS 0x058
726#define PCI_MSI_MESSAGE_DATA 0x05c
727#define PCI_COMPACT_PCI_HOT_SWAP_CAPABILITY 0x058
728
729/*
730 * PCI Configuration Function 1
731 */
732
733#define PCI_CS_0_BASE_ADDRESS 0x110
734#define PCI_CS_1_BASE_ADDRESS 0x114
735#define PCI_CS_2_BASE_ADDRESS 0x118
736#define PCI_CS_3_BASE_ADDRESS 0x11c
737#define PCI_BOOTCS_BASE_ADDRESS 0x120
738
739/*
740 * PCI Configuration Function 2
741 */
742
743#define PCI_P2P_MEM0_BASE_ADDRESS 0x210
744#define PCI_P2P_MEM1_BASE_ADDRESS 0x214
745#define PCI_P2P_I_O_BASE_ADDRESS 0x218
746#define PCI_CPU_BASE_ADDRESS 0x21c
747
748/*
749 * PCI Configuration Function 4
750 */
751
752#define PCI_DAC_SCS_0_BASE_ADDRESS_LOW 0x410
753#define PCI_DAC_SCS_0_BASE_ADDRESS_HIGH 0x414
754#define PCI_DAC_SCS_1_BASE_ADDRESS_LOW 0x418
755#define PCI_DAC_SCS_1_BASE_ADDRESS_HIGH 0x41c
756#define PCI_DAC_P2P_MEM0_BASE_ADDRESS_LOW 0x420
757#define PCI_DAC_P2P_MEM0_BASE_ADDRESS_HIGH 0x424
758
759
760/*
761 * PCI Configuration Function 5
762 */
763
764#define PCI_DAC_SCS_2_BASE_ADDRESS_LOW 0x510
765#define PCI_DAC_SCS_2_BASE_ADDRESS_HIGH 0x514
766#define PCI_DAC_SCS_3_BASE_ADDRESS_LOW 0x518
767#define PCI_DAC_SCS_3_BASE_ADDRESS_HIGH 0x51c
768#define PCI_DAC_P2P_MEM1_BASE_ADDRESS_LOW 0x520
769#define PCI_DAC_P2P_MEM1_BASE_ADDRESS_HIGH 0x524
770
771
772/*
773 * PCI Configuration Function 6
774 */
775
776#define PCI_DAC_CS_0_BASE_ADDRESS_LOW 0x610
777#define PCI_DAC_CS_0_BASE_ADDRESS_HIGH 0x614
778#define PCI_DAC_CS_1_BASE_ADDRESS_LOW 0x618
779#define PCI_DAC_CS_1_BASE_ADDRESS_HIGH 0x61c
780#define PCI_DAC_CS_2_BASE_ADDRESS_LOW 0x620
781#define PCI_DAC_CS_2_BASE_ADDRESS_HIGH 0x624
782
783/*
784 * PCI Configuration Function 7
785 */
786
787#define PCI_DAC_CS_3_BASE_ADDRESS_LOW 0x710
788#define PCI_DAC_CS_3_BASE_ADDRESS_HIGH 0x714
789#define PCI_DAC_BOOTCS_BASE_ADDRESS_LOW 0x718
790#define PCI_DAC_BOOTCS_BASE_ADDRESS_HIGH 0x71c
791#define PCI_DAC_CPU_BASE_ADDRESS_LOW 0x720
792#define PCI_DAC_CPU_BASE_ADDRESS_HIGH 0x724
793#endif
794
795/*
796 * Interrupts
797 */
798
799#define LOW_INTERRUPT_CAUSE_REGISTER 0xc18
800#define HIGH_INTERRUPT_CAUSE_REGISTER 0xc68
801#define CPU_INTERRUPT_MASK_REGISTER_LOW 0xc1c
802#define CPU_INTERRUPT_MASK_REGISTER_HIGH 0xc6c
803#define CPU_SELECT_CAUSE_REGISTER 0xc70
804#define PCI_0INTERRUPT_CAUSE_MASK_REGISTER_LOW 0xc24
805#define PCI_0INTERRUPT_CAUSE_MASK_REGISTER_HIGH 0xc64
806#define PCI_0SELECT_CAUSE 0xc74
807#define PCI_1INTERRUPT_CAUSE_MASK_REGISTER_LOW 0xca4
808#define PCI_1INTERRUPT_CAUSE_MASK_REGISTER_HIGH 0xce4
809#define PCI_1SELECT_CAUSE 0xcf4
810#define CPU_INT_0_MASK 0xe60
811#define CPU_INT_1_MASK 0xe64
812#define CPU_INT_2_MASK 0xe68
813#define CPU_INT_3_MASK 0xe6c
814
815/*
816 * I20 Support registers
817 */
818
819#define INBOUND_MESSAGE_REGISTER0_PCI0_SIDE 0x010
820#define INBOUND_MESSAGE_REGISTER1_PCI0_SIDE 0x014
821#define OUTBOUND_MESSAGE_REGISTER0_PCI0_SIDE 0x018
822#define OUTBOUND_MESSAGE_REGISTER1_PCI0_SIDE 0x01C
823#define INBOUND_DOORBELL_REGISTER_PCI0_SIDE 0x020
824#define INBOUND_INTERRUPT_CAUSE_REGISTER_PCI0_SIDE 0x024
825#define INBOUND_INTERRUPT_MASK_REGISTER_PCI0_SIDE 0x028
826#define OUTBOUND_DOORBELL_REGISTER_PCI0_SIDE 0x02C
827#define OUTBOUND_INTERRUPT_CAUSE_REGISTER_PCI0_SIDE 0x030
828#define OUTBOUND_INTERRUPT_MASK_REGISTER_PCI0_SIDE 0x034
829#define INBOUND_QUEUE_PORT_VIRTUAL_REGISTER_PCI0_SIDE 0x040
830#define OUTBOUND_QUEUE_PORT_VIRTUAL_REGISTER_PCI0_SIDE 0x044
831#define QUEUE_CONTROL_REGISTER_PCI0_SIDE 0x050
832#define QUEUE_BASE_ADDRESS_REGISTER_PCI0_SIDE 0x054
833#define INBOUND_FREE_HEAD_POINTER_REGISTER_PCI0_SIDE 0x060
834#define INBOUND_FREE_TAIL_POINTER_REGISTER_PCI0_SIDE 0x064
835#define INBOUND_POST_HEAD_POINTER_REGISTER_PCI0_SIDE 0x068
836#define INBOUND_POST_TAIL_POINTER_REGISTER_PCI0_SIDE 0x06C
837#define OUTBOUND_FREE_HEAD_POINTER_REGISTER_PCI0_SIDE 0x070
838#define OUTBOUND_FREE_TAIL_POINTER_REGISTER_PCI0_SIDE 0x074
839#define OUTBOUND_POST_HEAD_POINTER_REGISTER_PCI0_SIDE 0x0F8
840#define OUTBOUND_POST_TAIL_POINTER_REGISTER_PCI0_SIDE 0x0FC
841
842#define INBOUND_MESSAGE_REGISTER0_PCI1_SIDE 0x090
843#define INBOUND_MESSAGE_REGISTER1_PCI1_SIDE 0x094
844#define OUTBOUND_MESSAGE_REGISTER0_PCI1_SIDE 0x098
845#define OUTBOUND_MESSAGE_REGISTER1_PCI1_SIDE 0x09C
846#define INBOUND_DOORBELL_REGISTER_PCI1_SIDE 0x0A0
847#define INBOUND_INTERRUPT_CAUSE_REGISTER_PCI1_SIDE 0x0A4
848#define INBOUND_INTERRUPT_MASK_REGISTER_PCI1_SIDE 0x0A8
849#define OUTBOUND_DOORBELL_REGISTER_PCI1_SIDE 0x0AC
850#define OUTBOUND_INTERRUPT_CAUSE_REGISTER_PCI1_SIDE 0x0B0
851#define OUTBOUND_INTERRUPT_MASK_REGISTER_PCI1_SIDE 0x0B4
852#define INBOUND_QUEUE_PORT_VIRTUAL_REGISTER_PCI1_SIDE 0x0C0
853#define OUTBOUND_QUEUE_PORT_VIRTUAL_REGISTER_PCI1_SIDE 0x0C4
854#define QUEUE_CONTROL_REGISTER_PCI1_SIDE 0x0D0
855#define QUEUE_BASE_ADDRESS_REGISTER_PCI1_SIDE 0x0D4
856#define INBOUND_FREE_HEAD_POINTER_REGISTER_PCI1_SIDE 0x0E0
857#define INBOUND_FREE_TAIL_POINTER_REGISTER_PCI1_SIDE 0x0E4
858#define INBOUND_POST_HEAD_POINTER_REGISTER_PCI1_SIDE 0x0E8
859#define INBOUND_POST_TAIL_POINTER_REGISTER_PCI1_SIDE 0x0EC
860#define OUTBOUND_FREE_HEAD_POINTER_REGISTER_PCI1_SIDE 0x0F0
861#define OUTBOUND_FREE_TAIL_POINTER_REGISTER_PCI1_SIDE 0x0F4
862#define OUTBOUND_POST_HEAD_POINTER_REGISTER_PCI1_SIDE 0x078
863#define OUTBOUND_POST_TAIL_POINTER_REGISTER_PCI1_SIDE 0x07C
864
865#define INBOUND_MESSAGE_REGISTER0_CPU0_SIDE 0X1C10
866#define INBOUND_MESSAGE_REGISTER1_CPU0_SIDE 0X1C14
867#define OUTBOUND_MESSAGE_REGISTER0_CPU0_SIDE 0X1C18
868#define OUTBOUND_MESSAGE_REGISTER1_CPU0_SIDE 0X1C1C
869#define INBOUND_DOORBELL_REGISTER_CPU0_SIDE 0X1C20
870#define INBOUND_INTERRUPT_CAUSE_REGISTER_CPU0_SIDE 0X1C24
871#define INBOUND_INTERRUPT_MASK_REGISTER_CPU0_SIDE 0X1C28
872#define OUTBOUND_DOORBELL_REGISTER_CPU0_SIDE 0X1C2C
873#define OUTBOUND_INTERRUPT_CAUSE_REGISTER_CPU0_SIDE 0X1C30
874#define OUTBOUND_INTERRUPT_MASK_REGISTER_CPU0_SIDE 0X1C34
875#define INBOUND_QUEUE_PORT_VIRTUAL_REGISTER_CPU0_SIDE 0X1C40
876#define OUTBOUND_QUEUE_PORT_VIRTUAL_REGISTER_CPU0_SIDE 0X1C44
877#define QUEUE_CONTROL_REGISTER_CPU0_SIDE 0X1C50
878#define QUEUE_BASE_ADDRESS_REGISTER_CPU0_SIDE 0X1C54
879#define INBOUND_FREE_HEAD_POINTER_REGISTER_CPU0_SIDE 0X1C60
880#define INBOUND_FREE_TAIL_POINTER_REGISTER_CPU0_SIDE 0X1C64
881#define INBOUND_POST_HEAD_POINTER_REGISTER_CPU0_SIDE 0X1C68
882#define INBOUND_POST_TAIL_POINTER_REGISTER_CPU0_SIDE 0X1C6C
883#define OUTBOUND_FREE_HEAD_POINTER_REGISTER_CPU0_SIDE 0X1C70
884#define OUTBOUND_FREE_TAIL_POINTER_REGISTER_CPU0_SIDE 0X1C74
885#define OUTBOUND_POST_HEAD_POINTER_REGISTER_CPU0_SIDE 0X1CF8
886#define OUTBOUND_POST_TAIL_POINTER_REGISTER_CPU0_SIDE 0X1CFC
887
888#define INBOUND_MESSAGE_REGISTER0_CPU1_SIDE 0X1C90
889#define INBOUND_MESSAGE_REGISTER1_CPU1_SIDE 0X1C94
890#define OUTBOUND_MESSAGE_REGISTER0_CPU1_SIDE 0X1C98
891#define OUTBOUND_MESSAGE_REGISTER1_CPU1_SIDE 0X1C9C
892#define INBOUND_DOORBELL_REGISTER_CPU1_SIDE 0X1CA0
893#define INBOUND_INTERRUPT_CAUSE_REGISTER_CPU1_SIDE 0X1CA4
894#define INBOUND_INTERRUPT_MASK_REGISTER_CPU1_SIDE 0X1CA8
895#define OUTBOUND_DOORBELL_REGISTER_CPU1_SIDE 0X1CAC
896#define OUTBOUND_INTERRUPT_CAUSE_REGISTER_CPU1_SIDE 0X1CB0
897#define OUTBOUND_INTERRUPT_MASK_REGISTER_CPU1_SIDE 0X1CB4
898#define INBOUND_QUEUE_PORT_VIRTUAL_REGISTER_CPU1_SIDE 0X1CC0
899#define OUTBOUND_QUEUE_PORT_VIRTUAL_REGISTER_CPU1_SIDE 0X1CC4
900#define QUEUE_CONTROL_REGISTER_CPU1_SIDE 0X1CD0
901#define QUEUE_BASE_ADDRESS_REGISTER_CPU1_SIDE 0X1CD4
902#define INBOUND_FREE_HEAD_POINTER_REGISTER_CPU1_SIDE 0X1CE0
903#define INBOUND_FREE_TAIL_POINTER_REGISTER_CPU1_SIDE 0X1CE4
904#define INBOUND_POST_HEAD_POINTER_REGISTER_CPU1_SIDE 0X1CE8
905#define INBOUND_POST_TAIL_POINTER_REGISTER_CPU1_SIDE 0X1CEC
906#define OUTBOUND_FREE_HEAD_POINTER_REGISTER_CPU1_SIDE 0X1CF0
907#define OUTBOUND_FREE_TAIL_POINTER_REGISTER_CPU1_SIDE 0X1CF4
908#define OUTBOUND_POST_HEAD_POINTER_REGISTER_CPU1_SIDE 0X1C78
909#define OUTBOUND_POST_TAIL_POINTER_REGISTER_CPU1_SIDE 0X1C7C
910
911/*
912 * Communication Unit Registers
913 */
914
915#define ETHERNET_0_ADDRESS_CONTROL_LOW
916#define ETHERNET_0_ADDRESS_CONTROL_HIGH 0xf204
917#define ETHERNET_0_RECEIVE_BUFFER_PCI_HIGH_ADDRESS 0xf208
918#define ETHERNET_0_TRANSMIT_BUFFER_PCI_HIGH_ADDRESS 0xf20c
919#define ETHERNET_0_RECEIVE_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf210
920#define ETHERNET_0_TRANSMIT_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf214
921#define ETHERNET_0_HASH_TABLE_PCI_HIGH_ADDRESS 0xf218
922#define ETHERNET_1_ADDRESS_CONTROL_LOW 0xf220
923#define ETHERNET_1_ADDRESS_CONTROL_HIGH 0xf224
924#define ETHERNET_1_RECEIVE_BUFFER_PCI_HIGH_ADDRESS 0xf228
925#define ETHERNET_1_TRANSMIT_BUFFER_PCI_HIGH_ADDRESS 0xf22c
926#define ETHERNET_1_RECEIVE_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf230
927#define ETHERNET_1_TRANSMIT_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf234
928#define ETHERNET_1_HASH_TABLE_PCI_HIGH_ADDRESS 0xf238
929#define ETHERNET_2_ADDRESS_CONTROL_LOW 0xf240
930#define ETHERNET_2_ADDRESS_CONTROL_HIGH 0xf244
931#define ETHERNET_2_RECEIVE_BUFFER_PCI_HIGH_ADDRESS 0xf248
932#define ETHERNET_2_TRANSMIT_BUFFER_PCI_HIGH_ADDRESS 0xf24c
933#define ETHERNET_2_RECEIVE_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf250
934#define ETHERNET_2_TRANSMIT_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf254
935#define ETHERNET_2_HASH_TABLE_PCI_HIGH_ADDRESS 0xf258
936#define MPSC_0_ADDRESS_CONTROL_LOW 0xf280
937#define MPSC_0_ADDRESS_CONTROL_HIGH 0xf284
938#define MPSC_0_RECEIVE_BUFFER_PCI_HIGH_ADDRESS 0xf288
939#define MPSC_0_TRANSMIT_BUFFER_PCI_HIGH_ADDRESS 0xf28c
940#define MPSC_0_RECEIVE_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf290
941#define MPSC_0_TRANSMIT_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf294
942#define MPSC_1_ADDRESS_CONTROL_LOW 0xf2a0
943#define MPSC_1_ADDRESS_CONTROL_HIGH 0xf2a4
944#define MPSC_1_RECEIVE_BUFFER_PCI_HIGH_ADDRESS 0xf2a8
945#define MPSC_1_TRANSMIT_BUFFER_PCI_HIGH_ADDRESS 0xf2ac
946#define MPSC_1_RECEIVE_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf2b0
947#define MPSC_1_TRANSMIT_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf2b4
948#define MPSC_2_ADDRESS_CONTROL_LOW 0xf2c0
949#define MPSC_2_ADDRESS_CONTROL_HIGH 0xf2c4
950#define MPSC_2_RECEIVE_BUFFER_PCI_HIGH_ADDRESS 0xf2c8
951#define MPSC_2_TRANSMIT_BUFFER_PCI_HIGH_ADDRESS 0xf2cc
952#define MPSC_2_RECEIVE_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf2d0
953#define MPSC_2_TRANSMIT_DESCRIPTOR_PCI_HIGH_ADDRESS 0xf2d4
954#define SERIAL_INIT_PCI_HIGH_ADDRESS 0xf320
955#define SERIAL_INIT_LAST_DATA 0xf324
956#define SERIAL_INIT_STATUS_AND_CONTROL 0xf328
957#define COMM_UNIT_ARBITER_CONTROL 0xf300
958#define COMM_UNIT_CROSS_BAR_TIMEOUT 0xf304
959#define COMM_UNIT_INTERRUPT_CAUSE 0xf310
960#define COMM_UNIT_INTERRUPT_MASK 0xf314
961#define COMM_UNIT_ERROR_ADDRESS 0xf314
962
963/*
964 * Cunit Debug (for internal use)
965 */
966
967#define CUNIT_ADDRESS 0xf340
968#define CUNIT_COMMAND_AND_ID 0xf344
969#define CUNIT_WRITE_DATA_LOW 0xf348
970#define CUNIT_WRITE_DATA_HIGH 0xf34c
971#define CUNIT_WRITE_BYTE_ENABLE 0xf358
972#define CUNIT_READ_DATA_LOW 0xf350
973#define CUNIT_READ_DATA_HIGH 0xf354
974#define CUNIT_READ_ID 0xf35c
975
976/*
977 * Fast Ethernet Unit Registers
978 */
979
980/* Ethernet */
981
982#define ETHERNET_PHY_ADDRESS_REGISTER 0x2000
983#define ETHERNET_SMI_REGISTER 0x2010
984
985/* Ethernet 0 */
986
987#define ETHERNET0_PORT_CONFIGURATION_REGISTER 0x2400
988#define ETHERNET0_PORT_CONFIGURATION_EXTEND_REGISTER 0x2408
989#define ETHERNET0_PORT_COMMAND_REGISTER 0x2410
990#define ETHERNET0_PORT_STATUS_REGISTER 0x2418
991#define ETHERNET0_SERIAL_PARAMETRS_REGISTER 0x2420
992#define ETHERNET0_HASH_TABLE_POINTER_REGISTER 0x2428
993#define ETHERNET0_FLOW_CONTROL_SOURCE_ADDRESS_LOW 0x2430
994#define ETHERNET0_FLOW_CONTROL_SOURCE_ADDRESS_HIGH 0x2438
995#define ETHERNET0_SDMA_CONFIGURATION_REGISTER 0x2440
996#define ETHERNET0_SDMA_COMMAND_REGISTER 0x2448
997#define ETHERNET0_INTERRUPT_CAUSE_REGISTER 0x2450
998#define ETHERNET0_INTERRUPT_MASK_REGISTER 0x2458
999#define ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER0 0x2480
1000#define ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER1 0x2484
1001#define ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER2 0x2488
1002#define ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER3 0x248c
1003#define ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER0 0x24a0
1004#define ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER1 0x24a4
1005#define ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER2 0x24a8
1006#define ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER3 0x24ac
1007#define ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER0 0x24e0
1008#define ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER1 0x24e4
1009#define ETHERNET0_MIB_COUNTER_BASE 0x2500
1010
1011/* Ethernet 1 */
1012
1013#define ETHERNET1_PORT_CONFIGURATION_REGISTER 0x2800
1014#define ETHERNET1_PORT_CONFIGURATION_EXTEND_REGISTER 0x2808
1015#define ETHERNET1_PORT_COMMAND_REGISTER 0x2810
1016#define ETHERNET1_PORT_STATUS_REGISTER 0x2818
1017#define ETHERNET1_SERIAL_PARAMETRS_REGISTER 0x2820
1018#define ETHERNET1_HASH_TABLE_POINTER_REGISTER 0x2828
1019#define ETHERNET1_FLOW_CONTROL_SOURCE_ADDRESS_LOW 0x2830
1020#define ETHERNET1_FLOW_CONTROL_SOURCE_ADDRESS_HIGH 0x2838
1021#define ETHERNET1_SDMA_CONFIGURATION_REGISTER 0x2840
1022#define ETHERNET1_SDMA_COMMAND_REGISTER 0x2848
1023#define ETHERNET1_INTERRUPT_CAUSE_REGISTER 0x2850
1024#define ETHERNET1_INTERRUPT_MASK_REGISTER 0x2858
1025#define ETHERNET1_FIRST_RX_DESCRIPTOR_POINTER0 0x2880
1026#define ETHERNET1_FIRST_RX_DESCRIPTOR_POINTER1 0x2884
1027#define ETHERNET1_FIRST_RX_DESCRIPTOR_POINTER2 0x2888
1028#define ETHERNET1_FIRST_RX_DESCRIPTOR_POINTER3 0x288c
1029#define ETHERNET1_CURRENT_RX_DESCRIPTOR_POINTER0 0x28a0
1030#define ETHERNET1_CURRENT_RX_DESCRIPTOR_POINTER1 0x28a4
1031#define ETHERNET1_CURRENT_RX_DESCRIPTOR_POINTER2 0x28a8
1032#define ETHERNET1_CURRENT_RX_DESCRIPTOR_POINTER3 0x28ac
1033#define ETHERNET1_CURRENT_TX_DESCRIPTOR_POINTER0 0x28e0
1034#define ETHERNET1_CURRENT_TX_DESCRIPTOR_POINTER1 0x28e4
1035#define ETHERNET1_MIB_COUNTER_BASE 0x2900
1036
1037/* Ethernet 2 */
1038
1039#define ETHERNET2_PORT_CONFIGURATION_REGISTER 0x2c00
1040#define ETHERNET2_PORT_CONFIGURATION_EXTEND_REGISTER 0x2c08
1041#define ETHERNET2_PORT_COMMAND_REGISTER 0x2c10
1042#define ETHERNET2_PORT_STATUS_REGISTER 0x2c18
1043#define ETHERNET2_SERIAL_PARAMETRS_REGISTER 0x2c20
1044#define ETHERNET2_HASH_TABLE_POINTER_REGISTER 0x2c28
1045#define ETHERNET2_FLOW_CONTROL_SOURCE_ADDRESS_LOW 0x2c30
1046#define ETHERNET2_FLOW_CONTROL_SOURCE_ADDRESS_HIGH 0x2c38
1047#define ETHERNET2_SDMA_CONFIGURATION_REGISTER 0x2c40
1048#define ETHERNET2_SDMA_COMMAND_REGISTER 0x2c48
1049#define ETHERNET2_INTERRUPT_CAUSE_REGISTER 0x2c50
1050#define ETHERNET2_INTERRUPT_MASK_REGISTER 0x2c58
1051#define ETHERNET2_FIRST_RX_DESCRIPTOR_POINTER0 0x2c80
1052#define ETHERNET2_FIRST_RX_DESCRIPTOR_POINTER1 0x2c84
1053#define ETHERNET2_FIRST_RX_DESCRIPTOR_POINTER2 0x2c88
1054#define ETHERNET2_FIRST_RX_DESCRIPTOR_POINTER3 0x2c8c
1055#define ETHERNET2_CURRENT_RX_DESCRIPTOR_POINTER0 0x2ca0
1056#define ETHERNET2_CURRENT_RX_DESCRIPTOR_POINTER1 0x2ca4
1057#define ETHERNET2_CURRENT_RX_DESCRIPTOR_POINTER2 0x2ca8
1058#define ETHERNET2_CURRENT_RX_DESCRIPTOR_POINTER3 0x2cac
1059#define ETHERNET2_CURRENT_TX_DESCRIPTOR_POINTER0 0x2ce0
1060#define ETHERNET2_CURRENT_TX_DESCRIPTOR_POINTER1 0x2ce4
1061#define ETHERNET2_MIB_COUNTER_BASE 0x2d00
1062
1063/*
1064 * SDMA Registers
1065 */
1066
1067#define SDMA_GROUP_CONFIGURATION_REGISTER 0xb1f0
1068#define CHANNEL0_CONFIGURATION_REGISTER 0x4000
1069#define CHANNEL0_COMMAND_REGISTER 0x4008
1070#define CHANNEL0_RX_CMD_STATUS 0x4800
1071#define CHANNEL0_RX_PACKET_AND_BUFFER_SIZES 0x4804
1072#define CHANNEL0_RX_BUFFER_POINTER 0x4808
1073#define CHANNEL0_RX_NEXT_POINTER 0x480c
1074#define CHANNEL0_CURRENT_RX_DESCRIPTOR_POINTER 0x4810
1075#define CHANNEL0_TX_CMD_STATUS 0x4C00
1076#define CHANNEL0_TX_PACKET_SIZE 0x4C04
1077#define CHANNEL0_TX_BUFFER_POINTER 0x4C08
1078#define CHANNEL0_TX_NEXT_POINTER 0x4C0c
1079#define CHANNEL0_CURRENT_TX_DESCRIPTOR_POINTER 0x4c10
1080#define CHANNEL0_FIRST_TX_DESCRIPTOR_POINTER 0x4c14
1081#define CHANNEL1_CONFIGURATION_REGISTER 0x6000
1082#define CHANNEL1_COMMAND_REGISTER 0x6008
1083#define CHANNEL1_RX_CMD_STATUS 0x6800
1084#define CHANNEL1_RX_PACKET_AND_BUFFER_SIZES 0x6804
1085#define CHANNEL1_RX_BUFFER_POINTER 0x6808
1086#define CHANNEL1_RX_NEXT_POINTER 0x680c
1087#define CHANNEL1_CURRENT_RX_DESCRIPTOR_POINTER 0x6810
1088#define CHANNEL1_TX_CMD_STATUS 0x6C00
1089#define CHANNEL1_TX_PACKET_SIZE 0x6C04
1090#define CHANNEL1_TX_BUFFER_POINTER 0x6C08
1091#define CHANNEL1_TX_NEXT_POINTER 0x6C0c
1092#define CHANNEL1_CURRENT_RX_DESCRIPTOR_POINTER 0x6810
1093#define CHANNEL1_CURRENT_TX_DESCRIPTOR_POINTER 0x6c10
1094#define CHANNEL1_FIRST_TX_DESCRIPTOR_POINTER 0x6c14
1095
1096/* SDMA Interrupt */
1097
1098#define SDMA_CAUSE 0xb820
1099#define SDMA_MASK 0xb8a0
1100
1101
1102/*
1103 * Baude Rate Generators Registers
1104 */
1105
1106/* BRG 0 */
1107
1108#define BRG0_CONFIGURATION_REGISTER 0xb200
1109#define BRG0_BAUDE_TUNING_REGISTER 0xb204
1110
1111/* BRG 1 */
1112
1113#define BRG1_CONFIGURATION_REGISTER 0xb208
1114#define BRG1_BAUDE_TUNING_REGISTER 0xb20c
1115
1116/* BRG 2 */
1117
1118#define BRG2_CONFIGURATION_REGISTER 0xb210
1119#define BRG2_BAUDE_TUNING_REGISTER 0xb214
1120
1121/* BRG Interrupts */
1122
1123#define BRG_CAUSE_REGISTER 0xb834
1124#define BRG_MASK_REGISTER 0xb8b4
1125
1126/* MISC */
1127
1128#define MAIN_ROUTING_REGISTER 0xb400
1129#define RECEIVE_CLOCK_ROUTING_REGISTER 0xb404
1130#define TRANSMIT_CLOCK_ROUTING_REGISTER 0xb408
1131#define COMM_UNIT_ARBITER_CONFIGURATION_REGISTER 0xb40c
1132#define WATCHDOG_CONFIGURATION_REGISTER 0xb410
1133#define WATCHDOG_VALUE_REGISTER 0xb414
1134
1135
1136/*
1137 * Flex TDM Registers
1138 */
1139
1140/* FTDM Port */
1141
1142#define FLEXTDM_TRANSMIT_READ_POINTER 0xa800
1143#define FLEXTDM_RECEIVE_READ_POINTER 0xa804
1144#define FLEXTDM_CONFIGURATION_REGISTER 0xa808
1145#define FLEXTDM_AUX_CHANNELA_TX_REGISTER 0xa80c
1146#define FLEXTDM_AUX_CHANNELA_RX_REGISTER 0xa810
1147#define FLEXTDM_AUX_CHANNELB_TX_REGISTER 0xa814
1148#define FLEXTDM_AUX_CHANNELB_RX_REGISTER 0xa818
1149
1150/* FTDM Interrupts */
1151
1152#define FTDM_CAUSE_REGISTER 0xb830
1153#define FTDM_MASK_REGISTER 0xb8b0
1154
1155
1156/*
1157 * GPP Interface Registers
1158 */
1159
1160#define GPP_IO_CONTROL 0xf100
1161#define GPP_LEVEL_CONTROL 0xf110
1162#define GPP_VALUE 0xf104
1163#define GPP_INTERRUPT_CAUSE 0xf108
1164#define GPP_INTERRUPT_MASK 0xf10c
1165
1166#define MPP_CONTROL0 0xf000
1167#define MPP_CONTROL1 0xf004
1168#define MPP_CONTROL2 0xf008
1169#define MPP_CONTROL3 0xf00c
1170#define DEBUG_PORT_MULTIPLEX 0xf014
1171#define SERIAL_PORT_MULTIPLEX 0xf010
1172
1173/*
1174 * I2C Registers
1175 */
1176
1177#define I2C_SLAVE_ADDRESS 0xc000
1178#define I2C_EXTENDED_SLAVE_ADDRESS 0xc040
1179#define I2C_DATA 0xc004
1180#define I2C_CONTROL 0xc008
1181#define I2C_STATUS_BAUDE_RATE 0xc00C
1182#define I2C_SOFT_RESET 0xc01c
1183
1184/*
1185 * MPSC Registers
1186 */
1187
1188/*
1189 * MPSC0
1190 */
1191
1192#define MPSC0_MAIN_CONFIGURATION_LOW 0x8000
1193#define MPSC0_MAIN_CONFIGURATION_HIGH 0x8004
1194#define MPSC0_PROTOCOL_CONFIGURATION 0x8008
1195#define CHANNEL0_REGISTER1 0x800c
1196#define CHANNEL0_REGISTER2 0x8010
1197#define CHANNEL0_REGISTER3 0x8014
1198#define CHANNEL0_REGISTER4 0x8018
1199#define CHANNEL0_REGISTER5 0x801c
1200#define CHANNEL0_REGISTER6 0x8020
1201#define CHANNEL0_REGISTER7 0x8024
1202#define CHANNEL0_REGISTER8 0x8028
1203#define CHANNEL0_REGISTER9 0x802c
1204#define CHANNEL0_REGISTER10 0x8030
1205#define CHANNEL0_REGISTER11 0x8034
1206
1207/*
1208 * MPSC1
1209 */
1210
1211#define MPSC1_MAIN_CONFIGURATION_LOW 0x9000
1212#define MPSC1_MAIN_CONFIGURATION_HIGH 0x9004
1213#define MPSC1_PROTOCOL_CONFIGURATION 0x9008
1214#define CHANNEL1_REGISTER1 0x900c
1215#define CHANNEL1_REGISTER2 0x9010
1216#define CHANNEL1_REGISTER3 0x9014
1217#define CHANNEL1_REGISTER4 0x9018
1218#define CHANNEL1_REGISTER5 0x901c
1219#define CHANNEL1_REGISTER6 0x9020
1220#define CHANNEL1_REGISTER7 0x9024
1221#define CHANNEL1_REGISTER8 0x9028
1222#define CHANNEL1_REGISTER9 0x902c
1223#define CHANNEL1_REGISTER10 0x9030
1224#define CHANNEL1_REGISTER11 0x9034
1225
1226/*
1227 * MPSCs Interupts
1228 */
1229
1230#define MPSC0_CAUSE 0xb804
1231#define MPSC0_MASK 0xb884
1232#define MPSC1_CAUSE 0xb80c
1233#define MPSC1_MASK 0xb88c
1234
1235#endif /* __ASM_MIPS_MV64240_H */
diff --git a/include/asm-mips/jmr3927/jmr3927.h b/include/asm-mips/jmr3927/jmr3927.h
index 958e29706e2d..b2dc35f56181 100644
--- a/include/asm-mips/jmr3927/jmr3927.h
+++ b/include/asm-mips/jmr3927/jmr3927.h
@@ -13,6 +13,7 @@
13#include <asm/jmr3927/tx3927.h> 13#include <asm/jmr3927/tx3927.h>
14#include <asm/addrspace.h> 14#include <asm/addrspace.h>
15#include <asm/system.h> 15#include <asm/system.h>
16#include <asm/txx9irq.h>
16 17
17/* CS */ 18/* CS */
18#define JMR3927_ROMCE0 0x1fc00000 /* 4M */ 19#define JMR3927_ROMCE0 0x1fc00000 /* 4M */
@@ -115,7 +116,7 @@
115#define JMR3927_NR_IRQ_IRC 16 /* On-Chip IRC */ 116#define JMR3927_NR_IRQ_IRC 16 /* On-Chip IRC */
116#define JMR3927_NR_IRQ_IOC 8 /* PCI/MODEM/INT[6:7] */ 117#define JMR3927_NR_IRQ_IOC 8 /* PCI/MODEM/INT[6:7] */
117 118
118#define JMR3927_IRQ_IRC 16 119#define JMR3927_IRQ_IRC TXX9_IRQ_BASE
119#define JMR3927_IRQ_IOC (JMR3927_IRQ_IRC + JMR3927_NR_IRQ_IRC) 120#define JMR3927_IRQ_IOC (JMR3927_IRQ_IRC + JMR3927_NR_IRQ_IRC)
120#define JMR3927_IRQ_END (JMR3927_IRQ_IOC + JMR3927_NR_IRQ_IOC) 121#define JMR3927_IRQ_END (JMR3927_IRQ_IOC + JMR3927_NR_IRQ_IOC)
121 122
diff --git a/include/asm-mips/jmr3927/tx3927.h b/include/asm-mips/jmr3927/tx3927.h
index 0b9073bfb759..4be2f25f70dd 100644
--- a/include/asm-mips/jmr3927/tx3927.h
+++ b/include/asm-mips/jmr3927/tx3927.h
@@ -50,21 +50,6 @@ struct tx3927_dma_reg {
50 volatile unsigned long unused0; 50 volatile unsigned long unused0;
51}; 51};
52 52
53struct tx3927_irc_reg {
54 volatile unsigned long cer;
55 volatile unsigned long cr[2];
56 volatile unsigned long unused0;
57 volatile unsigned long ilr[8];
58 volatile unsigned long unused1[4];
59 volatile unsigned long imr;
60 volatile unsigned long unused2[7];
61 volatile unsigned long scr;
62 volatile unsigned long unused3[7];
63 volatile unsigned long ssr;
64 volatile unsigned long unused4[7];
65 volatile unsigned long csr;
66};
67
68#include <asm/byteorder.h> 53#include <asm/byteorder.h>
69 54
70#ifdef __BIG_ENDIAN 55#ifdef __BIG_ENDIAN
@@ -225,26 +210,6 @@ struct tx3927_ccfg_reg {
225/* 210/*
226 * IRC 211 * IRC
227 */ 212 */
228#define TX3927_IR_MAX_LEVEL 7
229
230/* IRCER : Int. Control Enable */
231#define TX3927_IRCER_ICE 0x00000001
232
233/* IRCR : Int. Control */
234#define TX3927_IRCR_LOW 0x00000000
235#define TX3927_IRCR_HIGH 0x00000001
236#define TX3927_IRCR_DOWN 0x00000002
237#define TX3927_IRCR_UP 0x00000003
238
239/* IRSCR : Int. Status Control */
240#define TX3927_IRSCR_EIClrE 0x00000100
241#define TX3927_IRSCR_EIClr_MASK 0x0000000f
242
243/* IRCSR : Int. Current Status */
244#define TX3927_IRCSR_IF 0x00010000
245#define TX3927_IRCSR_ILV_MASK 0x00000700
246#define TX3927_IRCSR_IVL_MASK 0x0000001f
247
248#define TX3927_IR_INT0 0 213#define TX3927_IR_INT0 0
249#define TX3927_IR_INT1 1 214#define TX3927_IR_INT1 1
250#define TX3927_IR_INT2 2 215#define TX3927_IR_INT2 2
@@ -347,7 +312,6 @@ struct tx3927_ccfg_reg {
347#define tx3927_sdramcptr ((struct tx3927_sdramc_reg *)TX3927_SDRAMC_REG) 312#define tx3927_sdramcptr ((struct tx3927_sdramc_reg *)TX3927_SDRAMC_REG)
348#define tx3927_romcptr ((struct tx3927_romc_reg *)TX3927_ROMC_REG) 313#define tx3927_romcptr ((struct tx3927_romc_reg *)TX3927_ROMC_REG)
349#define tx3927_dmaptr ((struct tx3927_dma_reg *)TX3927_DMA_REG) 314#define tx3927_dmaptr ((struct tx3927_dma_reg *)TX3927_DMA_REG)
350#define tx3927_ircptr ((struct tx3927_irc_reg *)TX3927_IRC_REG)
351#define tx3927_pcicptr ((struct tx3927_pcic_reg *)TX3927_PCIC_REG) 315#define tx3927_pcicptr ((struct tx3927_pcic_reg *)TX3927_PCIC_REG)
352#define tx3927_ccfgptr ((struct tx3927_ccfg_reg *)TX3927_CCFG_REG) 316#define tx3927_ccfgptr ((struct tx3927_ccfg_reg *)TX3927_CCFG_REG)
353#define tx3927_tmrptr(ch) ((struct txx927_tmr_reg *)TX3927_TMR_REG(ch)) 317#define tx3927_tmrptr(ch) ((struct txx927_tmr_reg *)TX3927_TMR_REG(ch))
diff --git a/include/asm-mips/mach-generic/ide.h b/include/asm-mips/mach-generic/ide.h
index 6eba2e576aaa..2b928577be5d 100644
--- a/include/asm-mips/mach-generic/ide.h
+++ b/include/asm-mips/mach-generic/ide.h
@@ -29,68 +29,42 @@
29 29
30#define IDE_ARCH_OBSOLETE_DEFAULTS 30#define IDE_ARCH_OBSOLETE_DEFAULTS
31 31
32static __inline__ int ide_probe_legacy(void)
33{
34#ifdef CONFIG_PCI
35 struct pci_dev *dev;
36 if ((dev = pci_get_class(PCI_CLASS_BRIDGE_EISA << 8, NULL)) != NULL ||
37 (dev = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL)) != NULL) {
38 pci_dev_put(dev);
39
40 return 1;
41 }
42 return 0;
43#elif defined(CONFIG_EISA) || defined(CONFIG_ISA)
44 return 1;
45#else
46 return 0;
47#endif
48}
49
50static __inline__ int ide_default_irq(unsigned long base) 32static __inline__ int ide_default_irq(unsigned long base)
51{ 33{
52 if (ide_probe_legacy()) 34 switch (base) {
53 switch (base) { 35 case 0x1f0: return 14;
54 case 0x1f0: 36 case 0x170: return 15;
55 return 14; 37 case 0x1e8: return 11;
56 case 0x170: 38 case 0x168: return 10;
57 return 15; 39 case 0x1e0: return 8;
58 case 0x1e8: 40 case 0x160: return 12;
59 return 11;
60 case 0x168:
61 return 10;
62 case 0x1e0:
63 return 8;
64 case 0x160:
65 return 12;
66 default: 41 default:
67 return 0; 42 return 0;
68 } 43 }
69 else
70 return 0;
71} 44}
72 45
73static __inline__ unsigned long ide_default_io_base(int index) 46static __inline__ unsigned long ide_default_io_base(int index)
74{ 47{
75 if (ide_probe_legacy()) 48 /*
49 * If PCI is present then it is not safe to poke around
50 * the other legacy IDE ports. Only 0x1f0 and 0x170 are
51 * defined compatibility mode ports for PCI. A user can
52 * override this using ide= but we must default safe.
53 */
54 if (no_pci_devices()) {
76 switch (index) { 55 switch (index) {
77 case 0: 56 case 2: return 0x1e8;
78 return 0x1f0; 57 case 3: return 0x168;
79 case 1: 58 case 4: return 0x1e0;
80 return 0x170; 59 case 5: return 0x160;
81 case 2:
82 return 0x1e8;
83 case 3:
84 return 0x168;
85 case 4:
86 return 0x1e0;
87 case 5:
88 return 0x160;
89 default:
90 return 0;
91 } 60 }
92 else 61 }
62 switch (index) {
63 case 0: return 0x1f0;
64 case 1: return 0x170;
65 default:
93 return 0; 66 return 0;
67 }
94} 68}
95 69
96#define IDE_ARCH_OBSOLETE_INIT 70#define IDE_ARCH_OBSOLETE_INIT
diff --git a/include/asm-mips/marvell.h b/include/asm-mips/marvell.h
deleted file mode 100644
index b6144bafc565..000000000000
--- a/include/asm-mips/marvell.h
+++ /dev/null
@@ -1,59 +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) 2004 by Ralf Baechle
7 */
8#ifndef __ASM_MIPS_MARVELL_H
9#define __ASM_MIPS_MARVELL_H
10
11#include <linux/pci.h>
12
13#include <asm/byteorder.h>
14
15extern unsigned long marvell_base;
16
17/*
18 * Because of an error/peculiarity in the Galileo chip, we need to swap the
19 * bytes when running bigendian.
20 */
21#define __MV_READ(ofs) \
22 (*(volatile u32 *)(marvell_base+(ofs)))
23#define __MV_WRITE(ofs, data) \
24 do { *(volatile u32 *)(marvell_base+(ofs)) = (data); } while (0)
25
26#define MV_READ(ofs) le32_to_cpu(__MV_READ(ofs))
27#define MV_WRITE(ofs, data) __MV_WRITE(ofs, cpu_to_le32(data))
28
29#define MV_READ_16(ofs) \
30 le16_to_cpu(*(volatile u16 *)(marvell_base+(ofs)))
31#define MV_WRITE_16(ofs, data) \
32 *(volatile u16 *)(marvell_base+(ofs)) = cpu_to_le16(data)
33
34#define MV_READ_8(ofs) \
35 *(volatile u8 *)(marvell_base+(ofs))
36#define MV_WRITE_8(ofs, data) \
37 *(volatile u8 *)(marvell_base+(ofs)) = data
38
39#define MV_SET_REG_BITS(ofs, bits) \
40 (*((volatile u32 *)(marvell_base + (ofs)))) |= ((u32)cpu_to_le32(bits))
41#define MV_RESET_REG_BITS(ofs, bits) \
42 (*((volatile u32 *)(marvell_base + (ofs)))) &= ~((u32)cpu_to_le32(bits))
43
44extern struct pci_ops mv_pci_ops;
45
46struct mv_pci_controller {
47 struct pci_controller pcic;
48
49 /*
50 * GT-64240/MV-64340 specific, per host bus information
51 */
52 unsigned long config_addr;
53 unsigned long config_vreg;
54};
55
56extern void ll_mv64340_irq(void);
57extern void mv64340_irq_init(unsigned int base);
58
59#endif /* __ASM_MIPS_MARVELL_H */
diff --git a/include/asm-mips/pgtable-32.h b/include/asm-mips/pgtable-32.h
index 2fbd47eba32d..59c865deb0c7 100644
--- a/include/asm-mips/pgtable-32.h
+++ b/include/asm-mips/pgtable-32.h
@@ -43,11 +43,7 @@ extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
43 */ 43 */
44 44
45/* PGDIR_SHIFT determines what a third-level page table entry can map */ 45/* PGDIR_SHIFT determines what a third-level page table entry can map */
46#ifdef CONFIG_64BIT_PHYS_ADDR 46#define PGDIR_SHIFT (2 * PAGE_SHIFT + PTE_ORDER - PTE_T_LOG2)
47#define PGDIR_SHIFT 21
48#else
49#define PGDIR_SHIFT 22
50#endif
51#define PGDIR_SIZE (1UL << PGDIR_SHIFT) 47#define PGDIR_SIZE (1UL << PGDIR_SHIFT)
52#define PGDIR_MASK (~(PGDIR_SIZE-1)) 48#define PGDIR_MASK (~(PGDIR_SIZE-1))
53 49
@@ -55,17 +51,11 @@ extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
55 * Entries per page directory level: we use two-level, so 51 * Entries per page directory level: we use two-level, so
56 * we don't really have any PUD/PMD directory physically. 52 * we don't really have any PUD/PMD directory physically.
57 */ 53 */
58#ifdef CONFIG_64BIT_PHYS_ADDR 54#define __PGD_ORDER (32 - 3 * PAGE_SHIFT + PGD_T_LOG2 + PTE_T_LOG2)
59#define PGD_ORDER 1 55#define PGD_ORDER (__PGD_ORDER >= 0 ? __PGD_ORDER : 0)
60#define PUD_ORDER aieeee_attempt_to_allocate_pud 56#define PUD_ORDER aieeee_attempt_to_allocate_pud
61#define PMD_ORDER 1 57#define PMD_ORDER 1
62#define PTE_ORDER 0 58#define PTE_ORDER 0
63#else
64#define PGD_ORDER 0
65#define PUD_ORDER aieeee_attempt_to_allocate_pud
66#define PMD_ORDER 1
67#define PTE_ORDER 0
68#endif
69 59
70#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) / sizeof(pgd_t)) 60#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) / sizeof(pgd_t))
71#define PTRS_PER_PTE ((PAGE_SIZE << PTE_ORDER) / sizeof(pte_t)) 61#define PTRS_PER_PTE ((PAGE_SIZE << PTE_ORDER) / sizeof(pte_t))
diff --git a/include/asm-mips/pgtable.h b/include/asm-mips/pgtable.h
index 2e2d70d13ff6..d2ee28156743 100644
--- a/include/asm-mips/pgtable.h
+++ b/include/asm-mips/pgtable.h
@@ -168,11 +168,15 @@ static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *pt
168#define set_pud(pudptr, pudval) do { *(pudptr) = (pudval); } while(0) 168#define set_pud(pudptr, pudval) do { *(pudptr) = (pudval); } while(0)
169#endif 169#endif
170 170
171#define PGD_T_LOG2 ffz(~sizeof(pgd_t)) 171#define PGD_T_LOG2 (__builtin_ffs(sizeof(pgd_t)) - 1)
172#define PMD_T_LOG2 ffz(~sizeof(pmd_t)) 172#define PMD_T_LOG2 (__builtin_ffs(sizeof(pmd_t)) - 1)
173#define PTE_T_LOG2 ffz(~sizeof(pte_t)) 173#define PTE_T_LOG2 (__builtin_ffs(sizeof(pte_t)) - 1)
174 174
175extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; 175/*
176 * We used to declare this array with size but gcc 3.3 and older are not able
177 * to find that this expression is a constant, so the size is dropped.
178 */
179extern pgd_t swapper_pg_dir[];
176 180
177/* 181/*
178 * The following only work if pte_present() is true. 182 * The following only work if pte_present() is true.
diff --git a/include/asm-mips/smtc.h b/include/asm-mips/smtc.h
index 44dfa4adecf3..ff3e8936b493 100644
--- a/include/asm-mips/smtc.h
+++ b/include/asm-mips/smtc.h
@@ -55,4 +55,14 @@ extern void smtc_boot_secondary(int cpu, struct task_struct *t);
55 55
56#define PARKED_INDEX ((unsigned int)0x80000000) 56#define PARKED_INDEX ((unsigned int)0x80000000)
57 57
58/*
59 * Define low-level interrupt mask for IPIs, if necessary.
60 * By default, use SW interrupt 1, which requires no external
61 * hardware support, but which works only for single-core
62 * MIPS MT systems.
63 */
64#ifndef MIPS_CPU_IPI_IRQ
65#define MIPS_CPU_IPI_IRQ 1
66#endif
67
58#endif /* _ASM_SMTC_MT_H */ 68#endif /* _ASM_SMTC_MT_H */
diff --git a/include/asm-mips/stacktrace.h b/include/asm-mips/stacktrace.h
index 07f873351a86..0bf82818aa53 100644
--- a/include/asm-mips/stacktrace.h
+++ b/include/asm-mips/stacktrace.h
@@ -9,7 +9,11 @@ extern unsigned long unwind_stack(struct task_struct *task, unsigned long *sp,
9 unsigned long pc, unsigned long *ra); 9 unsigned long pc, unsigned long *ra);
10#else 10#else
11#define raw_show_trace 1 11#define raw_show_trace 1
12#define unwind_stack(task, sp, pc, ra) 0 12static inline unsigned long unwind_stack(struct task_struct *task,
13 unsigned long *sp, unsigned long pc, unsigned long *ra)
14{
15 return 0;
16}
13#endif 17#endif
14 18
15static __always_inline void prepare_frametrace(struct pt_regs *regs) 19static __always_inline void prepare_frametrace(struct pt_regs *regs)
diff --git a/include/asm-mips/tx4927/toshiba_rbtx4927.h b/include/asm-mips/tx4927/toshiba_rbtx4927.h
index 5dc40a867774..a60649569c2c 100644
--- a/include/asm-mips/tx4927/toshiba_rbtx4927.h
+++ b/include/asm-mips/tx4927/toshiba_rbtx4927.h
@@ -50,7 +50,7 @@
50 50
51 51
52#define RBTX4927_RTL_8019_BASE (0x1c020280-TBTX4927_ISA_IO_OFFSET) 52#define RBTX4927_RTL_8019_BASE (0x1c020280-TBTX4927_ISA_IO_OFFSET)
53#define RBTX4927_RTL_8019_IRQ (29) 53#define RBTX4927_RTL_8019_IRQ (TX4927_IRQ_PIC_BEG + 5)
54 54
55int toshiba_rbtx4927_irq_nested(int sw_irq); 55int toshiba_rbtx4927_irq_nested(int sw_irq);
56 56
diff --git a/include/asm-mips/tx4927/tx4927.h b/include/asm-mips/tx4927/tx4927.h
index de85bd2245f7..4bd4368e188c 100644
--- a/include/asm-mips/tx4927/tx4927.h
+++ b/include/asm-mips/tx4927/tx4927.h
@@ -28,6 +28,7 @@
28#define __ASM_TX4927_TX4927_H 28#define __ASM_TX4927_TX4927_H
29 29
30#include <asm/tx4927/tx4927_mips.h> 30#include <asm/tx4927/tx4927_mips.h>
31#include <asm/txx9irq.h>
31 32
32/* 33/*
33 This register naming came from the integrated CPU/controller name TX4927 34 This register naming came from the integrated CPU/controller name TX4927
@@ -421,32 +422,6 @@
421#define TX4927_PIO_LIMIT 0xf50f 422#define TX4927_PIO_LIMIT 0xf50f
422 423
423 424
424/* TX4927 Interrupt Controller (32-bit registers) */
425#define TX4927_IRC_BASE 0xf510
426#define TX4927_IRC_IRFLAG0 0xf510
427#define TX4927_IRC_IRFLAG1 0xf514
428#define TX4927_IRC_IRPOL 0xf518
429#define TX4927_IRC_IRRCNT 0xf51c
430#define TX4927_IRC_IRMASKINT 0xf520
431#define TX4927_IRC_IRMASKEXT 0xf524
432#define TX4927_IRC_IRDEN 0xf600
433#define TX4927_IRC_IRDM0 0xf604
434#define TX4927_IRC_IRDM1 0xf608
435#define TX4927_IRC_IRLVL0 0xf610
436#define TX4927_IRC_IRLVL1 0xf614
437#define TX4927_IRC_IRLVL2 0xf618
438#define TX4927_IRC_IRLVL3 0xf61c
439#define TX4927_IRC_IRLVL4 0xf620
440#define TX4927_IRC_IRLVL5 0xf624
441#define TX4927_IRC_IRLVL6 0xf628
442#define TX4927_IRC_IRLVL7 0xf62c
443#define TX4927_IRC_IRMSK 0xf640
444#define TX4927_IRC_IREDC 0xf660
445#define TX4927_IRC_IRPND 0xf680
446#define TX4927_IRC_IRCS 0xf6a0
447#define TX4927_IRC_LIMIT 0xf6ff
448
449
450/* TX4927 AC-link controller (32-bit registers) */ 425/* TX4927 AC-link controller (32-bit registers) */
451#define TX4927_ACLC_BASE 0xf700 426#define TX4927_ACLC_BASE 0xf700
452#define TX4927_ACLC_ACCTLEN 0xf700 427#define TX4927_ACLC_ACCTLEN 0xf700
@@ -493,25 +468,11 @@
493#define TX4927_WR( reg, val ) TX4927_WR32( reg, val ) 468#define TX4927_WR( reg, val ) TX4927_WR32( reg, val )
494 469
495 470
471#define TX4927_IRQ_CP0_BEG MIPS_CPU_IRQ_BASE
472#define TX4927_IRQ_CP0_END (MIPS_CPU_IRQ_BASE + 8 - 1)
496 473
497 474#define TX4927_IRQ_PIC_BEG TXX9_IRQ_BASE
498 475#define TX4927_IRQ_PIC_END (TXX9_IRQ_BASE + TXx9_MAX_IR - 1)
499#define MI8259_IRQ_ISA_RAW_BEG 0 /* optional backplane i8259 */
500#define MI8259_IRQ_ISA_RAW_END 15
501#define TX4927_IRQ_CP0_RAW_BEG 0 /* tx4927 cpu built-in cp0 */
502#define TX4927_IRQ_CP0_RAW_END 7
503#define TX4927_IRQ_PIC_RAW_BEG 0 /* tx4927 cpu build-in pic */
504#define TX4927_IRQ_PIC_RAW_END 31
505
506
507#define MI8259_IRQ_ISA_BEG MI8259_IRQ_ISA_RAW_BEG /* 0 */
508#define MI8259_IRQ_ISA_END MI8259_IRQ_ISA_RAW_END /* 15 */
509
510#define TX4927_IRQ_CP0_BEG ((MI8259_IRQ_ISA_END+1)+TX4927_IRQ_CP0_RAW_BEG) /* 16 */
511#define TX4927_IRQ_CP0_END ((MI8259_IRQ_ISA_END+1)+TX4927_IRQ_CP0_RAW_END) /* 23 */
512
513#define TX4927_IRQ_PIC_BEG ((TX4927_IRQ_CP0_END+1)+TX4927_IRQ_PIC_RAW_BEG) /* 24 */
514#define TX4927_IRQ_PIC_END ((TX4927_IRQ_CP0_END+1)+TX4927_IRQ_PIC_RAW_END) /* 55 */
515 476
516 477
517#define TX4927_IRQ_USER0 (TX4927_IRQ_CP0_BEG+0) 478#define TX4927_IRQ_USER0 (TX4927_IRQ_CP0_BEG+0)
diff --git a/include/asm-mips/tx4927/tx4927_pci.h b/include/asm-mips/tx4927/tx4927_pci.h
index 66c064690f41..f98b2bb719d5 100644
--- a/include/asm-mips/tx4927/tx4927_pci.h
+++ b/include/asm-mips/tx4927/tx4927_pci.h
@@ -48,7 +48,7 @@
48#define TX4927_PCI_CLK_ACK 0x04 48#define TX4927_PCI_CLK_ACK 0x04
49#define TX4927_PCI_CLK_ACE 0x02 49#define TX4927_PCI_CLK_ACE 0x02
50#define TX4927_PCI_CLK_ENDIAN 0x01 50#define TX4927_PCI_CLK_ENDIAN 0x01
51#define TX4927_NR_IRQ_LOCAL (8+16) 51#define TX4927_NR_IRQ_LOCAL TX4927_IRQ_PIC_BEG
52#define TX4927_NR_IRQ_IRC 32 /* On-Chip IRC */ 52#define TX4927_NR_IRQ_IRC 32 /* On-Chip IRC */
53 53
54#define TX4927_IR_PCIC 16 54#define TX4927_IR_PCIC 16
@@ -99,21 +99,6 @@ struct tx4927_ccfg_reg {
99 volatile unsigned long long ramp; 99 volatile unsigned long long ramp;
100}; 100};
101 101
102struct tx4927_irc_reg {
103 volatile unsigned long cer;
104 volatile unsigned long cr[2];
105 volatile unsigned long unused0;
106 volatile unsigned long ilr[8];
107 volatile unsigned long unused1[4];
108 volatile unsigned long imr;
109 volatile unsigned long unused2[7];
110 volatile unsigned long scr;
111 volatile unsigned long unused3[7];
112 volatile unsigned long ssr;
113 volatile unsigned long unused4[7];
114 volatile unsigned long csr;
115};
116
117struct tx4927_pcic_reg { 102struct tx4927_pcic_reg {
118 volatile unsigned long pciid; 103 volatile unsigned long pciid;
119 volatile unsigned long pcistatus; 104 volatile unsigned long pcistatus;
@@ -182,11 +167,6 @@ struct tx4927_pcic_reg {
182 167
183#endif /* _LANGUAGE_ASSEMBLY */ 168#endif /* _LANGUAGE_ASSEMBLY */
184 169
185/* IRCSR : Int. Current Status */
186#define TX4927_IRCSR_IF 0x00010000
187#define TX4927_IRCSR_ILV_MASK 0x00000700
188#define TX4927_IRCSR_IVL_MASK 0x0000001f
189
190/* 170/*
191 * PCIC 171 * PCIC
192 */ 172 */
@@ -278,7 +258,6 @@ struct tx4927_pcic_reg {
278#define tx4927_pcicptr ((struct tx4927_pcic_reg *)TX4927_PCIC_REG) 258#define tx4927_pcicptr ((struct tx4927_pcic_reg *)TX4927_PCIC_REG)
279#define tx4927_ccfgptr ((struct tx4927_ccfg_reg *)TX4927_CCFG_REG) 259#define tx4927_ccfgptr ((struct tx4927_ccfg_reg *)TX4927_CCFG_REG)
280#define tx4927_ebuscptr ((struct tx4927_ebusc_reg *)TX4927_EBUSC_REG) 260#define tx4927_ebuscptr ((struct tx4927_ebusc_reg *)TX4927_EBUSC_REG)
281#define tx4927_ircptr ((struct tx4927_irc_reg *)TX4927_IRC_REG)
282 261
283#endif /* _LANGUAGE_ASSEMBLY */ 262#endif /* _LANGUAGE_ASSEMBLY */
284 263
diff --git a/include/asm-mips/tx4938/rbtx4938.h b/include/asm-mips/tx4938/rbtx4938.h
index 74e7d8061e58..b14acb575be2 100644
--- a/include/asm-mips/tx4938/rbtx4938.h
+++ b/include/asm-mips/tx4938/rbtx4938.h
@@ -14,6 +14,7 @@
14 14
15#include <asm/addrspace.h> 15#include <asm/addrspace.h>
16#include <asm/tx4938/tx4938.h> 16#include <asm/tx4938/tx4938.h>
17#include <asm/txx9irq.h>
17 18
18/* CS */ 19/* CS */
19#define RBTX4938_CE0 0x1c000000 /* 64M */ 20#define RBTX4938_CE0 0x1c000000 /* 64M */
@@ -123,21 +124,11 @@
123#define RBTX4938_NR_IRQ_IRC 32 /* On-Chip IRC */ 124#define RBTX4938_NR_IRQ_IRC 32 /* On-Chip IRC */
124#define RBTX4938_NR_IRQ_IOC 8 125#define RBTX4938_NR_IRQ_IOC 8
125 126
126#define MI8259_IRQ_ISA_RAW_BEG 0 /* optional backplane i8259 */ 127#define TX4938_IRQ_CP0_BEG MIPS_CPU_IRQ_BASE
127#define MI8259_IRQ_ISA_RAW_END 15 128#define TX4938_IRQ_CP0_END (MIPS_CPU_IRQ_BASE + 8 - 1)
128#define TX4938_IRQ_CP0_RAW_BEG 0 /* tx4938 cpu built-in cp0 */
129#define TX4938_IRQ_CP0_RAW_END 7
130#define TX4938_IRQ_PIC_RAW_BEG 0 /* tx4938 cpu build-in pic */
131#define TX4938_IRQ_PIC_RAW_END 31
132 129
133#define MI8259_IRQ_ISA_BEG MI8259_IRQ_ISA_RAW_BEG /* 0 */ 130#define TX4938_IRQ_PIC_BEG TXX9_IRQ_BASE
134#define MI8259_IRQ_ISA_END MI8259_IRQ_ISA_RAW_END /* 15 */ 131#define TX4938_IRQ_PIC_END (TXX9_IRQ_BASE + TXx9_MAX_IR - 1)
135
136#define TX4938_IRQ_CP0_BEG ((MI8259_IRQ_ISA_END+1)+TX4938_IRQ_CP0_RAW_BEG) /* 16 */
137#define TX4938_IRQ_CP0_END ((MI8259_IRQ_ISA_END+1)+TX4938_IRQ_CP0_RAW_END) /* 23 */
138
139#define TX4938_IRQ_PIC_BEG ((TX4938_IRQ_CP0_END+1)+TX4938_IRQ_PIC_RAW_BEG) /* 24 */
140#define TX4938_IRQ_PIC_END ((TX4938_IRQ_CP0_END+1)+TX4938_IRQ_PIC_RAW_END) /* 55 */
141#define TX4938_IRQ_NEST_EXT_ON_PIC (TX4938_IRQ_PIC_BEG+2) 132#define TX4938_IRQ_NEST_EXT_ON_PIC (TX4938_IRQ_PIC_BEG+2)
142#define TX4938_IRQ_NEST_PIC_ON_CP0 (TX4938_IRQ_CP0_BEG+2) 133#define TX4938_IRQ_NEST_PIC_ON_CP0 (TX4938_IRQ_CP0_BEG+2)
143#define TX4938_IRQ_USER0 (TX4938_IRQ_CP0_BEG+0) 134#define TX4938_IRQ_USER0 (TX4938_IRQ_CP0_BEG+0)
@@ -192,10 +183,4 @@
192#define RBTX4938_RTL_8019_BASE (RBTX4938_ETHER_ADDR - mips_io_port_base) 183#define RBTX4938_RTL_8019_BASE (RBTX4938_ETHER_ADDR - mips_io_port_base)
193#define RBTX4938_RTL_8019_IRQ (RBTX4938_IRQ_ETHER) 184#define RBTX4938_RTL_8019_IRQ (RBTX4938_IRQ_ETHER)
194 185
195/* IRCR : Int. Control */
196#define TX4938_IRCR_LOW 0x00000000
197#define TX4938_IRCR_HIGH 0x00000001
198#define TX4938_IRCR_DOWN 0x00000002
199#define TX4938_IRCR_UP 0x00000003
200
201#endif /* __ASM_TX_BOARDS_RBTX4938_H */ 186#endif /* __ASM_TX_BOARDS_RBTX4938_H */
diff --git a/include/asm-mips/tx4938/tx4938.h b/include/asm-mips/tx4938/tx4938.h
index e25b1a0975cb..afdb19813ca1 100644
--- a/include/asm-mips/tx4938/tx4938.h
+++ b/include/asm-mips/tx4938/tx4938.h
@@ -272,20 +272,6 @@ struct tx4938_pio_reg {
272 volatile unsigned long maskcpu; 272 volatile unsigned long maskcpu;
273 volatile unsigned long maskext; 273 volatile unsigned long maskext;
274}; 274};
275struct tx4938_irc_reg {
276 volatile unsigned long cer;
277 volatile unsigned long cr[2];
278 volatile unsigned long unused0;
279 volatile unsigned long ilr[8];
280 volatile unsigned long unused1[4];
281 volatile unsigned long imr;
282 volatile unsigned long unused2[7];
283 volatile unsigned long scr;
284 volatile unsigned long unused3[7];
285 volatile unsigned long ssr;
286 volatile unsigned long unused4[7];
287 volatile unsigned long csr;
288};
289 275
290struct tx4938_ndfmc_reg { 276struct tx4938_ndfmc_reg {
291 endian_def_l2(unused0, dtr); 277 endian_def_l2(unused0, dtr);
@@ -646,39 +632,12 @@ struct tx4938_ccfg_reg {
646#define TX4938_DMA_CSR_DESERR 0x00000002 632#define TX4938_DMA_CSR_DESERR 0x00000002
647#define TX4938_DMA_CSR_SORERR 0x00000001 633#define TX4938_DMA_CSR_SORERR 0x00000001
648 634
649/* TX4938 Interrupt Controller (32-bit registers) */
650#define TX4938_IRC_BASE 0xf510
651#define TX4938_IRC_IRFLAG0 0xf510
652#define TX4938_IRC_IRFLAG1 0xf514
653#define TX4938_IRC_IRPOL 0xf518
654#define TX4938_IRC_IRRCNT 0xf51c
655#define TX4938_IRC_IRMASKINT 0xf520
656#define TX4938_IRC_IRMASKEXT 0xf524
657#define TX4938_IRC_IRDEN 0xf600
658#define TX4938_IRC_IRDM0 0xf604
659#define TX4938_IRC_IRDM1 0xf608
660#define TX4938_IRC_IRLVL0 0xf610
661#define TX4938_IRC_IRLVL1 0xf614
662#define TX4938_IRC_IRLVL2 0xf618
663#define TX4938_IRC_IRLVL3 0xf61c
664#define TX4938_IRC_IRLVL4 0xf620
665#define TX4938_IRC_IRLVL5 0xf624
666#define TX4938_IRC_IRLVL6 0xf628
667#define TX4938_IRC_IRLVL7 0xf62c
668#define TX4938_IRC_IRMSK 0xf640
669#define TX4938_IRC_IREDC 0xf660
670#define TX4938_IRC_IRPND 0xf680
671#define TX4938_IRC_IRCS 0xf6a0
672#define TX4938_IRC_LIMIT 0xf6ff
673
674
675#ifndef __ASSEMBLY__ 635#ifndef __ASSEMBLY__
676 636
677#define tx4938_sdramcptr ((struct tx4938_sdramc_reg *)TX4938_SDRAMC_REG) 637#define tx4938_sdramcptr ((struct tx4938_sdramc_reg *)TX4938_SDRAMC_REG)
678#define tx4938_ebuscptr ((struct tx4938_ebusc_reg *)TX4938_EBUSC_REG) 638#define tx4938_ebuscptr ((struct tx4938_ebusc_reg *)TX4938_EBUSC_REG)
679#define tx4938_dmaptr(ch) ((struct tx4938_dma_reg *)TX4938_DMA_REG(ch)) 639#define tx4938_dmaptr(ch) ((struct tx4938_dma_reg *)TX4938_DMA_REG(ch))
680#define tx4938_ndfmcptr ((struct tx4938_ndfmc_reg *)TX4938_NDFMC_REG) 640#define tx4938_ndfmcptr ((struct tx4938_ndfmc_reg *)TX4938_NDFMC_REG)
681#define tx4938_ircptr ((struct tx4938_irc_reg *)TX4938_IRC_REG)
682#define tx4938_pcicptr ((struct tx4938_pcic_reg *)TX4938_PCIC_REG) 641#define tx4938_pcicptr ((struct tx4938_pcic_reg *)TX4938_PCIC_REG)
683#define tx4938_pcic1ptr ((struct tx4938_pcic_reg *)TX4938_PCIC1_REG) 642#define tx4938_pcic1ptr ((struct tx4938_pcic_reg *)TX4938_PCIC1_REG)
684#define tx4938_ccfgptr ((struct tx4938_ccfg_reg *)TX4938_CCFG_REG) 643#define tx4938_ccfgptr ((struct tx4938_ccfg_reg *)TX4938_CCFG_REG)
diff --git a/include/asm-mips/txx9irq.h b/include/asm-mips/txx9irq.h
new file mode 100644
index 000000000000..1c439e51b875
--- /dev/null
+++ b/include/asm-mips/txx9irq.h
@@ -0,0 +1,30 @@
1/*
2 * include/asm-mips/txx9irq.h
3 * TX39/TX49 interrupt controller definitions.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9#ifndef __ASM_TXX9IRQ_H
10#define __ASM_TXX9IRQ_H
11
12#include <irq.h>
13
14#ifdef CONFIG_IRQ_CPU
15#define TXX9_IRQ_BASE (MIPS_CPU_IRQ_BASE + 8)
16#else
17#define TXX9_IRQ_BASE 0
18#endif
19
20#ifdef CONFIG_CPU_TX39XX
21#define TXx9_MAX_IR 16
22#else
23#define TXx9_MAX_IR 32
24#endif
25
26void txx9_irq_init(unsigned long baseaddr);
27int txx9_irq(void);
28int txx9_irq_set_pri(int irc_irq, int new_pri);
29
30#endif /* __ASM_TXX9IRQ_H */
diff --git a/include/asm-parisc/io.h b/include/asm-parisc/io.h
index c0fed91da3a2..4cc9bcec0564 100644
--- a/include/asm-parisc/io.h
+++ b/include/asm-parisc/io.h
@@ -15,6 +15,16 @@ extern unsigned long parisc_vmerge_max_size;
15#define virt_to_bus virt_to_phys 15#define virt_to_bus virt_to_phys
16#define bus_to_virt phys_to_virt 16#define bus_to_virt phys_to_virt
17 17
18static inline unsigned long isa_bus_to_virt(unsigned long addr) {
19 BUG();
20 return 0;
21}
22
23static inline unsigned long isa_virt_to_bus(void *addr) {
24 BUG();
25 return 0;
26}
27
18/* 28/*
19 * Memory mapped I/O 29 * Memory mapped I/O
20 * 30 *
diff --git a/include/asm-parisc/vga.h b/include/asm-parisc/vga.h
new file mode 100644
index 000000000000..154a84c843a7
--- /dev/null
+++ b/include/asm-parisc/vga.h
@@ -0,0 +1,6 @@
1#ifndef __ASM_PARISC_VGA_H__
2#define __ASM_PARISC_VGA_H__
3
4/* nothing */
5
6#endif __ASM_PARISC_VGA_H__
diff --git a/include/asm-powerpc/reg_booke.h b/include/asm-powerpc/reg_booke.h
index 064405c207bf..8fdc2b47afb9 100644
--- a/include/asm-powerpc/reg_booke.h
+++ b/include/asm-powerpc/reg_booke.h
@@ -223,7 +223,6 @@
223#define MCSR_ICPERR 0x40000000UL /* I-Cache Parity Error */ 223#define MCSR_ICPERR 0x40000000UL /* I-Cache Parity Error */
224#define MCSR_DCP_PERR 0x20000000UL /* D-Cache Push Parity Error */ 224#define MCSR_DCP_PERR 0x20000000UL /* D-Cache Push Parity Error */
225#define MCSR_DCPERR 0x10000000UL /* D-Cache Parity Error */ 225#define MCSR_DCPERR 0x10000000UL /* D-Cache Parity Error */
226#define MCSR_GL_CI 0x00010000UL /* Guarded Load or Cache-Inhibited stwcx. */
227#define MCSR_BUS_IAERR 0x00000080UL /* Instruction Address Error */ 226#define MCSR_BUS_IAERR 0x00000080UL /* Instruction Address Error */
228#define MCSR_BUS_RAERR 0x00000040UL /* Read Address Error */ 227#define MCSR_BUS_RAERR 0x00000040UL /* Read Address Error */
229#define MCSR_BUS_WAERR 0x00000020UL /* Write Address Error */ 228#define MCSR_BUS_WAERR 0x00000020UL /* Write Address Error */
@@ -232,6 +231,12 @@
232#define MCSR_BUS_WBERR 0x00000004UL /* Write Data Bus Error */ 231#define MCSR_BUS_WBERR 0x00000004UL /* Write Data Bus Error */
233#define MCSR_BUS_IPERR 0x00000002UL /* Instruction parity Error */ 232#define MCSR_BUS_IPERR 0x00000002UL /* Instruction parity Error */
234#define MCSR_BUS_RPERR 0x00000001UL /* Read parity Error */ 233#define MCSR_BUS_RPERR 0x00000001UL /* Read parity Error */
234
235/* e500 parts may set unused bits in MCSR; mask these off */
236#define MCSR_MASK (MCSR_MCP | MCSR_ICPERR | MCSR_DCP_PERR | \
237 MCSR_DCPERR | MCSR_BUS_IAERR | MCSR_BUS_RAERR | \
238 MCSR_BUS_WAERR | MCSR_BUS_IBERR | MCSR_BUS_RBERR | \
239 MCSR_BUS_WBERR | MCSR_BUS_IPERR | MCSR_BUS_RPERR)
235#endif 240#endif
236#ifdef CONFIG_E200 241#ifdef CONFIG_E200
237#define MCSR_MCP 0x80000000UL /* Machine Check Input Pin */ 242#define MCSR_MCP 0x80000000UL /* Machine Check Input Pin */
@@ -243,6 +248,11 @@
243#define MCSR_BUS_DRERR 0x00000008UL /* Read Bus Error on data load */ 248#define MCSR_BUS_DRERR 0x00000008UL /* Read Bus Error on data load */
244#define MCSR_BUS_WRERR 0x00000004UL /* Write Bus Error on buffered 249#define MCSR_BUS_WRERR 0x00000004UL /* Write Bus Error on buffered
245 store or cache line push */ 250 store or cache line push */
251
252/* e200 parts may set unused bits in MCSR; mask these off */
253#define MCSR_MASK (MCSR_MCP | MCSR_CP_PERR | MCSR_CPERR | \
254 MCSR_EXCP_ERR | MCSR_BUS_IRERR | MCSR_BUS_DRERR | \
255 MCSR_BUS_WRERR)
246#endif 256#endif
247 257
248/* Bit definitions for the DBSR. */ 258/* Bit definitions for the DBSR. */
diff --git a/include/asm-s390/atomic.h b/include/asm-s390/atomic.h
index ea486952f778..2d184655bc5d 100644
--- a/include/asm-s390/atomic.h
+++ b/include/asm-s390/atomic.h
@@ -67,8 +67,17 @@ typedef struct {
67 67
68#endif /* __GNUC__ */ 68#endif /* __GNUC__ */
69 69
70#define atomic_read(v) ((v)->counter) 70static inline int atomic_read(const atomic_t *v)
71#define atomic_set(v,i) (((v)->counter) = (i)) 71{
72 barrier();
73 return v->counter;
74}
75
76static inline void atomic_set(atomic_t *v, int i)
77{
78 v->counter = i;
79 barrier();
80}
72 81
73static __inline__ int atomic_add_return(int i, atomic_t * v) 82static __inline__ int atomic_add_return(int i, atomic_t * v)
74{ 83{
@@ -182,8 +191,17 @@ typedef struct {
182 191
183#endif /* __GNUC__ */ 192#endif /* __GNUC__ */
184 193
185#define atomic64_read(v) ((v)->counter) 194static inline long long atomic64_read(const atomic64_t *v)
186#define atomic64_set(v,i) (((v)->counter) = (i)) 195{
196 barrier();
197 return v->counter;
198}
199
200static inline void atomic64_set(atomic64_t *v, long long i)
201{
202 v->counter = i;
203 barrier();
204}
187 205
188static __inline__ long long atomic64_add_return(long long i, atomic64_t * v) 206static __inline__ long long atomic64_add_return(long long i, atomic64_t * v)
189{ 207{
diff --git a/include/asm-s390/cio.h b/include/asm-s390/cio.h
index f738d2827582..1982fb344164 100644
--- a/include/asm-s390/cio.h
+++ b/include/asm-s390/cio.h
@@ -258,19 +258,6 @@ struct ciw {
258/* Sick revalidation of device. */ 258/* Sick revalidation of device. */
259#define CIO_REVALIDATE 0x0008 259#define CIO_REVALIDATE 0x0008
260 260
261struct diag210 {
262 __u16 vrdcdvno : 16; /* device number (input) */
263 __u16 vrdclen : 16; /* data block length (input) */
264 __u32 vrdcvcla : 8; /* virtual device class (output) */
265 __u32 vrdcvtyp : 8; /* virtual device type (output) */
266 __u32 vrdcvsta : 8; /* virtual device status (output) */
267 __u32 vrdcvfla : 8; /* virtual device flags (output) */
268 __u32 vrdcrccl : 8; /* real device class (output) */
269 __u32 vrdccrty : 8; /* real device type (output) */
270 __u32 vrdccrmd : 8; /* real device model (output) */
271 __u32 vrdccrft : 8; /* real device feature (output) */
272} __attribute__ ((packed,aligned(4)));
273
274struct ccw_dev_id { 261struct ccw_dev_id {
275 u8 ssid; 262 u8 ssid;
276 u16 devno; 263 u16 devno;
@@ -285,8 +272,6 @@ static inline int ccw_dev_id_is_equal(struct ccw_dev_id *dev_id1,
285 return 0; 272 return 0;
286} 273}
287 274
288extern int diag210(struct diag210 *addr);
289
290extern void wait_cons_dev(void); 275extern void wait_cons_dev(void);
291 276
292extern void css_schedule_reprobe(void); 277extern void css_schedule_reprobe(void);
diff --git a/include/asm-s390/diag.h b/include/asm-s390/diag.h
new file mode 100644
index 000000000000..72b2e2f2d32d
--- /dev/null
+++ b/include/asm-s390/diag.h
@@ -0,0 +1,39 @@
1/*
2 * s390 diagnose functions
3 *
4 * Copyright IBM Corp. 2007
5 * Author(s): Michael Holzheu <holzheu@de.ibm.com>
6 */
7
8#ifndef _ASM_S390_DIAG_H
9#define _ASM_S390_DIAG_H
10
11/*
12 * Diagnose 10: Release pages
13 */
14extern void diag10(unsigned long addr);
15
16/*
17 * Diagnose 14: Input spool file manipulation
18 */
19extern int diag14(unsigned long rx, unsigned long ry1, unsigned long subcode);
20
21/*
22 * Diagnose 210: Get information about a virtual device
23 */
24struct diag210 {
25 u16 vrdcdvno; /* device number (input) */
26 u16 vrdclen; /* data block length (input) */
27 u8 vrdcvcla; /* virtual device class (output) */
28 u8 vrdcvtyp; /* virtual device type (output) */
29 u8 vrdcvsta; /* virtual device status (output) */
30 u8 vrdcvfla; /* virtual device flags (output) */
31 u8 vrdcrccl; /* real device class (output) */
32 u8 vrdccrty; /* real device type (output) */
33 u8 vrdccrmd; /* real device model (output) */
34 u8 vrdccrft; /* real device feature (output) */
35} __attribute__((packed, aligned(4)));
36
37extern int diag210(struct diag210 *addr);
38
39#endif /* _ASM_S390_DIAG_H */
diff --git a/include/asm-s390/pgalloc.h b/include/asm-s390/pgalloc.h
index 56c8a6c80e2e..e45d3c9a4b7e 100644
--- a/include/asm-s390/pgalloc.h
+++ b/include/asm-s390/pgalloc.h
@@ -19,8 +19,6 @@
19 19
20#define check_pgt_cache() do {} while (0) 20#define check_pgt_cache() do {} while (0)
21 21
22extern void diag10(unsigned long addr);
23
24/* 22/*
25 * Page allocation orders. 23 * Page allocation orders.
26 */ 24 */
diff --git a/include/asm-sh/dma-mapping.h b/include/asm-sh/dma-mapping.h
index 6f492ac3fa13..84fefdaa01a5 100644
--- a/include/asm-sh/dma-mapping.h
+++ b/include/asm-sh/dma-mapping.h
@@ -160,6 +160,25 @@ static inline void dma_sync_single_for_device(struct device *dev,
160 dma_sync_single(dev, dma_handle, size, dir); 160 dma_sync_single(dev, dma_handle, size, dir);
161} 161}
162 162
163static inline void dma_sync_single_range_for_cpu(struct device *dev,
164 dma_addr_t dma_handle,
165 unsigned long offset,
166 size_t size,
167 enum dma_data_direction direction)
168{
169 dma_sync_single_for_cpu(dev, dma_handle+offset, size, direction);
170}
171
172static inline void dma_sync_single_range_for_device(struct device *dev,
173 dma_addr_t dma_handle,
174 unsigned long offset,
175 size_t size,
176 enum dma_data_direction direction)
177{
178 dma_sync_single_for_device(dev, dma_handle+offset, size, direction);
179}
180
181
163static inline void dma_sync_sg_for_cpu(struct device *dev, 182static inline void dma_sync_sg_for_cpu(struct device *dev,
164 struct scatterlist *sg, int nelems, 183 struct scatterlist *sg, int nelems,
165 enum dma_data_direction dir) 184 enum dma_data_direction dir)
diff --git a/include/asm-sh64/dma-mapping.h b/include/asm-sh64/dma-mapping.h
index d505f357f819..de4309960207 100644
--- a/include/asm-sh64/dma-mapping.h
+++ b/include/asm-sh64/dma-mapping.h
@@ -141,6 +141,24 @@ static inline void dma_sync_single_for_device(struct device *dev,
141 dma_sync_single(dev, dma_handle, size, dir); 141 dma_sync_single(dev, dma_handle, size, dir);
142} 142}
143 143
144static inline void dma_sync_single_range_for_cpu(struct device *dev,
145 dma_addr_t dma_handle,
146 unsigned long offset,
147 size_t size,
148 enum dma_data_direction direction)
149{
150 dma_sync_single_for_cpu(dev, dma_handle+offset, size, direction);
151}
152
153static inline void dma_sync_single_range_for_device(struct device *dev,
154 dma_addr_t dma_handle,
155 unsigned long offset,
156 size_t size,
157 enum dma_data_direction direction)
158{
159 dma_sync_single_for_device(dev, dma_handle+offset, size, direction);
160}
161
144static inline void dma_sync_sg_for_cpu(struct device *dev, 162static inline void dma_sync_sg_for_cpu(struct device *dev,
145 struct scatterlist *sg, int nelems, 163 struct scatterlist *sg, int nelems,
146 enum dma_data_direction dir) 164 enum dma_data_direction dir)
diff --git a/include/asm-sparc/sbus.h b/include/asm-sparc/sbus.h
index d036e4419d79..27d076c46964 100644
--- a/include/asm-sparc/sbus.h
+++ b/include/asm-sparc/sbus.h
@@ -68,7 +68,6 @@ struct sbus_dev {
68/* This struct describes the SBus(s) found on this machine. */ 68/* This struct describes the SBus(s) found on this machine. */
69struct sbus_bus { 69struct sbus_bus {
70 struct of_device ofdev; 70 struct of_device ofdev;
71 void *iommu; /* Opaque IOMMU cookie */
72 struct sbus_dev *devices; /* Link to devices on this SBus */ 71 struct sbus_dev *devices; /* Link to devices on this SBus */
73 struct sbus_bus *next; /* next SBus, if more than one SBus */ 72 struct sbus_bus *next; /* next SBus, if more than one SBus */
74 int prom_node; /* PROM device tree node for this SBus */ 73 int prom_node; /* PROM device tree node for this SBus */
diff --git a/include/asm-sparc/sfp-machine.h b/include/asm-sparc/sfp-machine.h
index ecfc86a4a725..266a42b8f99f 100644
--- a/include/asm-sparc/sfp-machine.h
+++ b/include/asm-sparc/sfp-machine.h
@@ -203,4 +203,10 @@ extern struct task_struct *last_task_used_math;
203#define FP_INHIBIT_RESULTS ((last_task_used_math->thread.fsr >> 23) & _fex) 203#define FP_INHIBIT_RESULTS ((last_task_used_math->thread.fsr >> 23) & _fex)
204#endif 204#endif
205 205
206#ifdef CONFIG_SMP
207#define FP_TRAPPING_EXCEPTIONS ((current->thread.fsr >> 23) & 0x1f)
208#else
209#define FP_TRAPPING_EXCEPTIONS ((last_task_used_math->thread.fsr >> 23) & 0x1f)
210#endif
211
206#endif 212#endif
diff --git a/include/asm-sparc/tlbflush.h b/include/asm-sparc/tlbflush.h
index 4a3b66618e75..a619da5cfaa9 100644
--- a/include/asm-sparc/tlbflush.h
+++ b/include/asm-sparc/tlbflush.h
@@ -57,6 +57,10 @@ BTFIXUPDEF_CALL(void, flush_tlb_page, struct vm_area_struct *, unsigned long)
57/* 57/*
58 * This is a kludge, until I know better. --zaitcev XXX 58 * This is a kludge, until I know better. --zaitcev XXX
59 */ 59 */
60#define flush_tlb_kernel_range(start, end) flush_tlb_all() 60static inline void flush_tlb_kernel_range(unsigned long start,
61 unsigned long end)
62{
63 flush_tlb_all();
64}
61 65
62#endif /* _SPARC_TLBFLUSH_H */ 66#endif /* _SPARC_TLBFLUSH_H */
diff --git a/include/asm-sparc64/elf.h b/include/asm-sparc64/elf.h
index 303d85e2f82e..8653e8665009 100644
--- a/include/asm-sparc64/elf.h
+++ b/include/asm-sparc64/elf.h
@@ -70,6 +70,7 @@
70#define HWCAP_SPARC_V9 16 70#define HWCAP_SPARC_V9 16
71#define HWCAP_SPARC_ULTRA3 32 71#define HWCAP_SPARC_ULTRA3 32
72#define HWCAP_SPARC_BLKINIT 64 72#define HWCAP_SPARC_BLKINIT 64
73#define HWCAP_SPARC_N2 128
73 74
74/* 75/*
75 * These are used to set parameters in the core dumps. 76 * These are used to set parameters in the core dumps.
@@ -155,8 +156,13 @@ static inline unsigned int sparc64_elf_hwcap(void)
155 156
156 if (tlb_type == cheetah || tlb_type == cheetah_plus) 157 if (tlb_type == cheetah || tlb_type == cheetah_plus)
157 cap |= HWCAP_SPARC_ULTRA3; 158 cap |= HWCAP_SPARC_ULTRA3;
158 else if (tlb_type == hypervisor) 159 else if (tlb_type == hypervisor) {
159 cap |= HWCAP_SPARC_BLKINIT; 160 if (sun4v_chip_type == SUN4V_CHIP_NIAGARA1 ||
161 sun4v_chip_type == SUN4V_CHIP_NIAGARA2)
162 cap |= HWCAP_SPARC_BLKINIT;
163 if (sun4v_chip_type == SUN4V_CHIP_NIAGARA2)
164 cap |= HWCAP_SPARC_N2;
165 }
160 166
161 return cap; 167 return cap;
162} 168}
diff --git a/include/asm-sparc64/percpu.h b/include/asm-sparc64/percpu.h
index caf8750792ff..a1f53a4da405 100644
--- a/include/asm-sparc64/percpu.h
+++ b/include/asm-sparc64/percpu.h
@@ -3,6 +3,8 @@
3 3
4#include <linux/compiler.h> 4#include <linux/compiler.h>
5 5
6register unsigned long __local_per_cpu_offset asm("g5");
7
6#ifdef CONFIG_SMP 8#ifdef CONFIG_SMP
7 9
8#define setup_per_cpu_areas() do { } while (0) 10#define setup_per_cpu_areas() do { } while (0)
@@ -23,8 +25,6 @@ extern unsigned long __per_cpu_shift;
23 __typeof__(type) per_cpu__##name \ 25 __typeof__(type) per_cpu__##name \
24 ____cacheline_aligned_in_smp 26 ____cacheline_aligned_in_smp
25 27
26register unsigned long __local_per_cpu_offset asm("g5");
27
28/* var is in discarded region: offset to particular copy we want */ 28/* var is in discarded region: offset to particular copy we want */
29#define per_cpu(var, cpu) (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset(cpu))) 29#define per_cpu(var, cpu) (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset(cpu)))
30#define __get_cpu_var(var) (*RELOC_HIDE(&per_cpu__##var, __local_per_cpu_offset)) 30#define __get_cpu_var(var) (*RELOC_HIDE(&per_cpu__##var, __local_per_cpu_offset))
diff --git a/include/asm-sparc64/sfp-machine.h b/include/asm-sparc64/sfp-machine.h
index 89d42431efb5..c9331b02d9c8 100644
--- a/include/asm-sparc64/sfp-machine.h
+++ b/include/asm-sparc64/sfp-machine.h
@@ -88,4 +88,6 @@
88 88
89#define FP_INHIBIT_RESULTS ((current_thread_info()->xfsr[0] >> 23) & _fex) 89#define FP_INHIBIT_RESULTS ((current_thread_info()->xfsr[0] >> 23) & _fex)
90 90
91#define FP_TRAPPING_EXCEPTIONS ((current_thread_info()->xfsr[0] >> 23) & 0x1f)
92
91#endif 93#endif
diff --git a/include/asm-sparc64/system.h b/include/asm-sparc64/system.h
index 64891cb10f05..3f175fa7e6d2 100644
--- a/include/asm-sparc64/system.h
+++ b/include/asm-sparc64/system.h
@@ -141,7 +141,6 @@ do { \
141 * not preserve it's value. Hairy, but it lets us remove 2 loads 141 * not preserve it's value. Hairy, but it lets us remove 2 loads
142 * and 2 stores in this critical code path. -DaveM 142 * and 2 stores in this critical code path. -DaveM
143 */ 143 */
144#define EXTRA_CLOBBER ,"%l1"
145#define switch_to(prev, next, last) \ 144#define switch_to(prev, next, last) \
146do { if (test_thread_flag(TIF_PERFCTR)) { \ 145do { if (test_thread_flag(TIF_PERFCTR)) { \
147 unsigned long __tmp; \ 146 unsigned long __tmp; \
@@ -164,33 +163,34 @@ do { if (test_thread_flag(TIF_PERFCTR)) { \
164 "stx %%i6, [%%sp + 2047 + 0x70]\n\t" \ 163 "stx %%i6, [%%sp + 2047 + 0x70]\n\t" \
165 "stx %%i7, [%%sp + 2047 + 0x78]\n\t" \ 164 "stx %%i7, [%%sp + 2047 + 0x78]\n\t" \
166 "rdpr %%wstate, %%o5\n\t" \ 165 "rdpr %%wstate, %%o5\n\t" \
167 "stx %%o6, [%%g6 + %3]\n\t" \ 166 "stx %%o6, [%%g6 + %6]\n\t" \
168 "stb %%o5, [%%g6 + %2]\n\t" \
169 "rdpr %%cwp, %%o5\n\t" \
170 "stb %%o5, [%%g6 + %5]\n\t" \ 167 "stb %%o5, [%%g6 + %5]\n\t" \
171 "mov %1, %%g6\n\t" \ 168 "rdpr %%cwp, %%o5\n\t" \
172 "ldub [%1 + %5], %%g1\n\t" \ 169 "stb %%o5, [%%g6 + %8]\n\t" \
170 "mov %4, %%g6\n\t" \
171 "ldub [%4 + %8], %%g1\n\t" \
173 "wrpr %%g1, %%cwp\n\t" \ 172 "wrpr %%g1, %%cwp\n\t" \
174 "ldx [%%g6 + %3], %%o6\n\t" \ 173 "ldx [%%g6 + %6], %%o6\n\t" \
175 "ldub [%%g6 + %2], %%o5\n\t" \ 174 "ldub [%%g6 + %5], %%o5\n\t" \
176 "ldub [%%g6 + %4], %%o7\n\t" \ 175 "ldub [%%g6 + %7], %%o7\n\t" \
177 "wrpr %%o5, 0x0, %%wstate\n\t" \ 176 "wrpr %%o5, 0x0, %%wstate\n\t" \
178 "ldx [%%sp + 2047 + 0x70], %%i6\n\t" \ 177 "ldx [%%sp + 2047 + 0x70], %%i6\n\t" \
179 "ldx [%%sp + 2047 + 0x78], %%i7\n\t" \ 178 "ldx [%%sp + 2047 + 0x78], %%i7\n\t" \
180 "ldx [%%g6 + %6], %%g4\n\t" \ 179 "ldx [%%g6 + %9], %%g4\n\t" \
181 "brz,pt %%o7, 1f\n\t" \ 180 "brz,pt %%o7, 1f\n\t" \
182 " mov %%g7, %0\n\t" \ 181 " mov %%g7, %0\n\t" \
183 "b,a ret_from_syscall\n\t" \ 182 "b,a ret_from_syscall\n\t" \
184 "1:\n\t" \ 183 "1:\n\t" \
185 : "=&r" (last) \ 184 : "=&r" (last), "=r" (current), "=r" (current_thread_info_reg), \
185 "=r" (__local_per_cpu_offset) \
186 : "0" (task_thread_info(next)), \ 186 : "0" (task_thread_info(next)), \
187 "i" (TI_WSTATE), "i" (TI_KSP), "i" (TI_NEW_CHILD), \ 187 "i" (TI_WSTATE), "i" (TI_KSP), "i" (TI_NEW_CHILD), \
188 "i" (TI_CWP), "i" (TI_TASK) \ 188 "i" (TI_CWP), "i" (TI_TASK) \
189 : "cc", \ 189 : "cc", \
190 "g1", "g2", "g3", "g7", \ 190 "g1", "g2", "g3", "g7", \
191 "l2", "l3", "l4", "l5", "l6", "l7", \ 191 "l1", "l2", "l3", "l4", "l5", "l6", "l7", \
192 "i0", "i1", "i2", "i3", "i4", "i5", \ 192 "i0", "i1", "i2", "i3", "i4", "i5", \
193 "o0", "o1", "o2", "o3", "o4", "o5", "o7" EXTRA_CLOBBER);\ 193 "o0", "o1", "o2", "o3", "o4", "o5", "o7"); \
194 /* If you fuck with this, update ret_from_syscall code too. */ \ 194 /* If you fuck with this, update ret_from_syscall code too. */ \
195 if (test_thread_flag(TIF_PERFCTR)) { \ 195 if (test_thread_flag(TIF_PERFCTR)) { \
196 write_pcr(current_thread_info()->pcr_reg); \ 196 write_pcr(current_thread_info()->pcr_reg); \
diff --git a/include/asm-x86_64/io_apic.h b/include/asm-x86_64/io_apic.h
index 969d225a9350..d9f2e54324d5 100644
--- a/include/asm-x86_64/io_apic.h
+++ b/include/asm-x86_64/io_apic.h
@@ -109,6 +109,12 @@ extern int mpc_default_type;
109/* 1 if "noapic" boot option passed */ 109/* 1 if "noapic" boot option passed */
110extern int skip_ioapic_setup; 110extern int skip_ioapic_setup;
111 111
112static inline void disable_ioapic_setup(void)
113{
114 skip_ioapic_setup = 1;
115}
116
117
112/* 118/*
113 * If we use the IO-APIC for IRQ routing, disable automatic 119 * If we use the IO-APIC for IRQ routing, disable automatic
114 * assignment of PCI IRQ's. 120 * assignment of PCI IRQ's.
diff --git a/include/asm-x86_64/nmi.h b/include/asm-x86_64/nmi.h
index 5fb3c0de5ccc..65b6acf3bb59 100644
--- a/include/asm-x86_64/nmi.h
+++ b/include/asm-x86_64/nmi.h
@@ -64,11 +64,12 @@ extern int setup_nmi_watchdog(char *);
64 64
65extern atomic_t nmi_active; 65extern atomic_t nmi_active;
66extern unsigned int nmi_watchdog; 66extern unsigned int nmi_watchdog;
67#define NMI_DEFAULT -1 67#define NMI_DISABLED -1
68#define NMI_NONE 0 68#define NMI_NONE 0
69#define NMI_IO_APIC 1 69#define NMI_IO_APIC 1
70#define NMI_LOCAL_APIC 2 70#define NMI_LOCAL_APIC 2
71#define NMI_INVALID 3 71#define NMI_INVALID 3
72#define NMI_DEFAULT NMI_DISABLED
72 73
73struct ctl_table; 74struct ctl_table;
74struct file; 75struct file;
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index ad7f71a81b0a..818cc3a50e6b 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -7,6 +7,7 @@ header-y += raid/
7header-y += spi/ 7header-y += spi/
8header-y += sunrpc/ 8header-y += sunrpc/
9header-y += tc_act/ 9header-y += tc_act/
10header-y += tc_ematch/
10header-y += netfilter/ 11header-y += netfilter/
11header-y += netfilter_arp/ 12header-y += netfilter_arp/
12header-y += netfilter_bridge/ 13header-y += netfilter_bridge/
diff --git a/include/linux/audit.h b/include/linux/audit.h
index 4bbd8601b8f0..d6579df8dadf 100644
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -63,8 +63,8 @@
63#define AUDIT_ADD_RULE 1011 /* Add syscall filtering rule */ 63#define AUDIT_ADD_RULE 1011 /* Add syscall filtering rule */
64#define AUDIT_DEL_RULE 1012 /* Delete syscall filtering rule */ 64#define AUDIT_DEL_RULE 1012 /* Delete syscall filtering rule */
65#define AUDIT_LIST_RULES 1013 /* List syscall filtering rules */ 65#define AUDIT_LIST_RULES 1013 /* List syscall filtering rules */
66#define AUDIT_TTY_GET 1014 /* Get TTY auditing status */ 66#define AUDIT_TTY_GET 1016 /* Get TTY auditing status */
67#define AUDIT_TTY_SET 1015 /* Set TTY auditing status */ 67#define AUDIT_TTY_SET 1017 /* Set TTY auditing status */
68 68
69#define AUDIT_FIRST_USER_MSG 1100 /* Userspace messages mostly uninteresting to kernel */ 69#define AUDIT_FIRST_USER_MSG 1100 /* Userspace messages mostly uninteresting to kernel */
70#define AUDIT_USER_AVC 1107 /* We filter this differently */ 70#define AUDIT_USER_AVC 1107 /* We filter this differently */
diff --git a/include/linux/ide.h b/include/linux/ide.h
index d71d0121b7f9..c792b4fd1588 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -1285,13 +1285,14 @@ void ide_init_sg_cmd(ide_drive_t *, struct request *);
1285#define BAD_DMA_DRIVE 0 1285#define BAD_DMA_DRIVE 0
1286#define GOOD_DMA_DRIVE 1 1286#define GOOD_DMA_DRIVE 1
1287 1287
1288#ifdef CONFIG_BLK_DEV_IDEDMA
1289struct drive_list_entry { 1288struct drive_list_entry {
1290 const char *id_model; 1289 const char *id_model;
1291 const char *id_firmware; 1290 const char *id_firmware;
1292}; 1291};
1293 1292
1294int ide_in_drive_list(struct hd_driveid *, const struct drive_list_entry *); 1293int ide_in_drive_list(struct hd_driveid *, const struct drive_list_entry *);
1294
1295#ifdef CONFIG_BLK_DEV_IDEDMA
1295int __ide_dma_bad_drive(ide_drive_t *); 1296int __ide_dma_bad_drive(ide_drive_t *);
1296int __ide_dma_good_drive(ide_drive_t *); 1297int __ide_dma_good_drive(ide_drive_t *);
1297u8 ide_max_dma_mode(ide_drive_t *); 1298u8 ide_max_dma_mode(ide_drive_t *);
@@ -1312,7 +1313,6 @@ void ide_dma_host_off(ide_drive_t *);
1312void ide_dma_off_quietly(ide_drive_t *); 1313void ide_dma_off_quietly(ide_drive_t *);
1313void ide_dma_host_on(ide_drive_t *); 1314void ide_dma_host_on(ide_drive_t *);
1314extern int __ide_dma_on(ide_drive_t *); 1315extern int __ide_dma_on(ide_drive_t *);
1315extern int __ide_dma_check(ide_drive_t *);
1316extern int ide_dma_setup(ide_drive_t *); 1316extern int ide_dma_setup(ide_drive_t *);
1317extern void ide_dma_start(ide_drive_t *); 1317extern void ide_dma_start(ide_drive_t *);
1318extern int __ide_dma_end(ide_drive_t *); 1318extern int __ide_dma_end(ide_drive_t *);
diff --git a/include/linux/if_pppol2tp.h b/include/linux/if_pppol2tp.h
index 516203b6fdeb..a7d6a2234b31 100644
--- a/include/linux/if_pppol2tp.h
+++ b/include/linux/if_pppol2tp.h
@@ -32,8 +32,8 @@ struct pppol2tp_addr
32 32
33 struct sockaddr_in addr; /* IP address and port to send to */ 33 struct sockaddr_in addr; /* IP address and port to send to */
34 34
35 __be16 s_tunnel, s_session; /* For matching incoming packets */ 35 __u16 s_tunnel, s_session; /* For matching incoming packets */
36 __be16 d_tunnel, d_session; /* For sending outgoing packets */ 36 __u16 d_tunnel, d_session; /* For sending outgoing packets */
37}; 37};
38 38
39/* Socket options: 39/* Socket options:
diff --git a/include/linux/input.h b/include/linux/input.h
index e02c6a66b2ba..cf2b5619aa13 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -363,6 +363,12 @@ struct input_absinfo {
363 363
364#define KEY_UNKNOWN 240 364#define KEY_UNKNOWN 240
365 365
366#define KEY_VIDEO_NEXT 241 /* drive next video source */
367#define KEY_VIDEO_PREV 242 /* drive previous video source */
368#define KEY_BRIGHTNESS_CYCLE 243 /* brightness up, after max is min */
369#define KEY_BRIGHTNESS_ZERO 244 /* brightness off, use ambient */
370#define KEY_DISPLAY_OFF 245 /* display device to off state */
371
366#define BTN_MISC 0x100 372#define BTN_MISC 0x100
367#define BTN_0 0x100 373#define BTN_0 0x100
368#define BTN_1 0x101 374#define BTN_1 0x101
diff --git a/include/linux/kbd_kern.h b/include/linux/kbd_kern.h
index 506ad20c18f8..8bdb16bfe5fb 100644
--- a/include/linux/kbd_kern.h
+++ b/include/linux/kbd_kern.h
@@ -161,4 +161,7 @@ static inline void con_schedule_flip(struct tty_struct *t)
161 schedule_delayed_work(&t->buf.work, 0); 161 schedule_delayed_work(&t->buf.work, 0);
162} 162}
163 163
164/* mac_hid.c */
165extern int mac_hid_mouse_emulate_buttons(int, unsigned int, int);
166
164#endif 167#endif
diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h
index e147cf50529f..5bdd656e88cf 100644
--- a/include/linux/mempolicy.h
+++ b/include/linux/mempolicy.h
@@ -166,7 +166,7 @@ extern enum zone_type policy_zone;
166 166
167static inline void check_highest_zone(enum zone_type k) 167static inline void check_highest_zone(enum zone_type k)
168{ 168{
169 if (k > policy_zone) 169 if (k > policy_zone && k != ZONE_MOVABLE)
170 policy_zone = k; 170 policy_zone = k;
171} 171}
172 172
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 655094dc9440..1692dd6cb915 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1042,7 +1042,7 @@ static inline void vma_nonlinear_insert(struct vm_area_struct *vma,
1042} 1042}
1043 1043
1044/* mmap.c */ 1044/* mmap.c */
1045extern int __vm_enough_memory(long pages, int cap_sys_admin); 1045extern int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin);
1046extern void vma_adjust(struct vm_area_struct *vma, unsigned long start, 1046extern void vma_adjust(struct vm_area_struct *vma, unsigned long start,
1047 unsigned long end, pgoff_t pgoff, struct vm_area_struct *insert); 1047 unsigned long end, pgoff_t pgoff, struct vm_area_struct *insert);
1048extern struct vm_area_struct *vma_merge(struct mm_struct *, 1048extern struct vm_area_struct *vma_merge(struct mm_struct *,
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 3ea68cd3b61f..4e5627379b09 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -410,6 +410,24 @@ struct zonelist {
410#endif 410#endif
411}; 411};
412 412
413#ifdef CONFIG_NUMA
414/*
415 * Only custom zonelists like MPOL_BIND need to be filtered as part of
416 * policies. As described in the comment for struct zonelist_cache, these
417 * zonelists will not have a zlcache so zlcache_ptr will not be set. Use
418 * that to determine if the zonelists needs to be filtered or not.
419 */
420static inline int alloc_should_filter_zonelist(struct zonelist *zonelist)
421{
422 return !zonelist->zlcache_ptr;
423}
424#else
425static inline int alloc_should_filter_zonelist(struct zonelist *zonelist)
426{
427 return 0;
428}
429#endif /* CONFIG_NUMA */
430
413#ifdef CONFIG_ARCH_POPULATES_NODE_MAP 431#ifdef CONFIG_ARCH_POPULATES_NODE_MAP
414struct node_active_region { 432struct node_active_region {
415 unsigned long start_pfn; 433 unsigned long start_pfn;
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
index 2ada8ee316b3..4dc5fa8be781 100644
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -159,7 +159,8 @@ struct ap_device_id {
159 159
160#define AP_DEVICE_ID_MATCH_DEVICE_TYPE 0x01 160#define AP_DEVICE_ID_MATCH_DEVICE_TYPE 0x01
161 161
162#define ACPI_ID_LEN 9 162#define ACPI_ID_LEN 16 /* only 9 bytes needed here, 16 bytes are used */
163 /* to workaround crosscompile issues */
163 164
164struct acpi_device_id { 165struct acpi_device_id {
165 __u8 id[ACPI_ID_LEN]; 166 __u8 id[ACPI_ID_LEN];
diff --git a/include/linux/pci.h b/include/linux/pci.h
index e7d8d4e19a53..038a0dc7273a 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -557,6 +557,7 @@ int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask);
557int pcix_get_max_mmrbc(struct pci_dev *dev); 557int pcix_get_max_mmrbc(struct pci_dev *dev);
558int pcix_get_mmrbc(struct pci_dev *dev); 558int pcix_get_mmrbc(struct pci_dev *dev);
559int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc); 559int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc);
560int pcie_get_readrq(struct pci_dev *dev);
560int pcie_set_readrq(struct pci_dev *dev, int rq); 561int pcie_set_readrq(struct pci_dev *dev, int rq);
561void pci_update_resource(struct pci_dev *dev, struct resource *res, int resno); 562void pci_update_resource(struct pci_dev *dev, struct resource *res, int resno);
562int __must_check pci_assign_resource(struct pci_dev *dev, int i); 563int __must_check pci_assign_resource(struct pci_dev *dev, int i);
@@ -578,6 +579,9 @@ int pci_set_power_state(struct pci_dev *dev, pci_power_t state);
578pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state); 579pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state);
579int pci_enable_wake(struct pci_dev *dev, pci_power_t state, int enable); 580int pci_enable_wake(struct pci_dev *dev, pci_power_t state, int enable);
580 581
582/* Functions for PCI Hotplug drivers to use */
583int pci_bus_find_capability (struct pci_bus *bus, unsigned int devfn, int cap);
584
581/* Helper functions for low-level code (drivers/pci/setup-[bus,res].c) */ 585/* Helper functions for low-level code (drivers/pci/setup-[bus,res].c) */
582void pci_bus_assign_resources(struct pci_bus *bus); 586void pci_bus_assign_resources(struct pci_bus *bus);
583void pci_bus_size_bridges(struct pci_bus *bus); 587void pci_bus_size_bridges(struct pci_bus *bus);
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 07fc57429b58..06d23e10a16d 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -360,6 +360,9 @@
360#define PCI_DEVICE_ID_ATI_RS400_166 0x5a32 360#define PCI_DEVICE_ID_ATI_RS400_166 0x5a32
361#define PCI_DEVICE_ID_ATI_RS400_200 0x5a33 361#define PCI_DEVICE_ID_ATI_RS400_200 0x5a33
362#define PCI_DEVICE_ID_ATI_RS480 0x5950 362#define PCI_DEVICE_ID_ATI_RS480 0x5950
363#define PCI_DEVICE_ID_ATI_RD580 0x5952
364#define PCI_DEVICE_ID_ATI_RX790 0x5957
365#define PCI_DEVICE_ID_ATI_RS690 0x7910
363/* ATI IXP Chipset */ 366/* ATI IXP Chipset */
364#define PCI_DEVICE_ID_ATI_IXP200_IDE 0x4349 367#define PCI_DEVICE_ID_ATI_IXP200_IDE 0x4349
365#define PCI_DEVICE_ID_ATI_IXP200_SMBUS 0x4353 368#define PCI_DEVICE_ID_ATI_IXP200_SMBUS 0x4353
@@ -1287,6 +1290,7 @@
1287#define PCI_DEVICE_ID_VIA_VT3324 0x0324 1290#define PCI_DEVICE_ID_VIA_VT3324 0x0324
1288#define PCI_DEVICE_ID_VIA_VT3336 0x0336 1291#define PCI_DEVICE_ID_VIA_VT3336 0x0336
1289#define PCI_DEVICE_ID_VIA_VT3351 0x0351 1292#define PCI_DEVICE_ID_VIA_VT3351 0x0351
1293#define PCI_DEVICE_ID_VIA_VT3364 0x0364
1290#define PCI_DEVICE_ID_VIA_8371_0 0x0391 1294#define PCI_DEVICE_ID_VIA_8371_0 0x0391
1291#define PCI_DEVICE_ID_VIA_8501_0 0x0501 1295#define PCI_DEVICE_ID_VIA_8501_0 0x0501
1292#define PCI_DEVICE_ID_VIA_82C561 0x0561 1296#define PCI_DEVICE_ID_VIA_82C561 0x0561
@@ -2092,8 +2096,10 @@
2092#define PCI_DEVICE_ID_MPC8568 0x0021 2096#define PCI_DEVICE_ID_MPC8568 0x0021
2093#define PCI_DEVICE_ID_MPC8567E 0x0022 2097#define PCI_DEVICE_ID_MPC8567E 0x0022
2094#define PCI_DEVICE_ID_MPC8567 0x0023 2098#define PCI_DEVICE_ID_MPC8567 0x0023
2095#define PCI_DEVICE_ID_MPC8544E 0x0030 2099#define PCI_DEVICE_ID_MPC8533E 0x0030
2096#define PCI_DEVICE_ID_MPC8544 0x0031 2100#define PCI_DEVICE_ID_MPC8533 0x0031
2101#define PCI_DEVICE_ID_MPC8544E 0x0032
2102#define PCI_DEVICE_ID_MPC8544 0x0033
2097#define PCI_DEVICE_ID_MPC8641 0x7010 2103#define PCI_DEVICE_ID_MPC8641 0x7010
2098#define PCI_DEVICE_ID_MPC8641D 0x7011 2104#define PCI_DEVICE_ID_MPC8641D 0x7011
2099 2105
diff --git a/include/linux/pmu.h b/include/linux/pmu.h
index 5ad913ff02b2..b7824c215354 100644
--- a/include/linux/pmu.h
+++ b/include/linux/pmu.h
@@ -226,7 +226,7 @@ extern unsigned int pmu_power_flags;
226extern void pmu_backlight_init(void); 226extern void pmu_backlight_init(void);
227 227
228/* some code needs to know if the PMU was suspended for hibernation */ 228/* some code needs to know if the PMU was suspended for hibernation */
229#if defined(CONFIG_PM) && defined(CONFIG_PPC32) 229#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
230extern int pmu_sys_suspended; 230extern int pmu_sys_suspended;
231#else 231#else
232/* if power management is not configured it can't be suspended */ 232/* if power management is not configured it can't be suspended */
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 682ef87da6eb..bd6a0320a770 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -681,7 +681,7 @@ enum cpu_idle_type {
681#define SCHED_LOAD_SHIFT 10 681#define SCHED_LOAD_SHIFT 10
682#define SCHED_LOAD_SCALE (1L << SCHED_LOAD_SHIFT) 682#define SCHED_LOAD_SCALE (1L << SCHED_LOAD_SHIFT)
683 683
684#define SCHED_LOAD_SCALE_FUZZ (SCHED_LOAD_SCALE >> 1) 684#define SCHED_LOAD_SCALE_FUZZ SCHED_LOAD_SCALE
685 685
686#ifdef CONFIG_SMP 686#ifdef CONFIG_SMP
687#define SD_LOAD_BALANCE 1 /* Do load balancing on this domain. */ 687#define SD_LOAD_BALANCE 1 /* Do load balancing on this domain. */
@@ -1388,7 +1388,8 @@ extern void sched_exec(void);
1388#define sched_exec() {} 1388#define sched_exec() {}
1389#endif 1389#endif
1390 1390
1391extern void sched_clock_unstable_event(void); 1391extern void sched_clock_idle_sleep_event(void);
1392extern void sched_clock_idle_wakeup_event(u64 delta_ns);
1392 1393
1393#ifdef CONFIG_HOTPLUG_CPU 1394#ifdef CONFIG_HOTPLUG_CPU
1394extern void idle_task_exit(void); 1395extern void idle_task_exit(void);
@@ -1398,7 +1399,8 @@ static inline void idle_task_exit(void) {}
1398 1399
1399extern void sched_idle_next(void); 1400extern void sched_idle_next(void);
1400 1401
1401extern unsigned int sysctl_sched_granularity; 1402extern unsigned int sysctl_sched_latency;
1403extern unsigned int sysctl_sched_min_granularity;
1402extern unsigned int sysctl_sched_wakeup_granularity; 1404extern unsigned int sysctl_sched_wakeup_granularity;
1403extern unsigned int sysctl_sched_batch_wakeup_granularity; 1405extern unsigned int sysctl_sched_batch_wakeup_granularity;
1404extern unsigned int sysctl_sched_stat_granularity; 1406extern unsigned int sysctl_sched_stat_granularity;
diff --git a/include/linux/security.h b/include/linux/security.h
index c11dc8aa0351..1a15526e9f67 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -54,7 +54,7 @@ extern int cap_inode_removexattr(struct dentry *dentry, char *name);
54extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags); 54extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags);
55extern void cap_task_reparent_to_init (struct task_struct *p); 55extern void cap_task_reparent_to_init (struct task_struct *p);
56extern int cap_syslog (int type); 56extern int cap_syslog (int type);
57extern int cap_vm_enough_memory (long pages); 57extern int cap_vm_enough_memory (struct mm_struct *mm, long pages);
58 58
59struct msghdr; 59struct msghdr;
60struct sk_buff; 60struct sk_buff;
@@ -1125,6 +1125,7 @@ struct request_sock;
1125 * Return 0 if permission is granted. 1125 * Return 0 if permission is granted.
1126 * @vm_enough_memory: 1126 * @vm_enough_memory:
1127 * Check permissions for allocating a new virtual mapping. 1127 * Check permissions for allocating a new virtual mapping.
1128 * @mm contains the mm struct it is being added to.
1128 * @pages contains the number of pages. 1129 * @pages contains the number of pages.
1129 * Return 0 if permission is granted. 1130 * Return 0 if permission is granted.
1130 * 1131 *
@@ -1169,7 +1170,7 @@ struct security_operations {
1169 int (*quota_on) (struct dentry * dentry); 1170 int (*quota_on) (struct dentry * dentry);
1170 int (*syslog) (int type); 1171 int (*syslog) (int type);
1171 int (*settime) (struct timespec *ts, struct timezone *tz); 1172 int (*settime) (struct timespec *ts, struct timezone *tz);
1172 int (*vm_enough_memory) (long pages); 1173 int (*vm_enough_memory) (struct mm_struct *mm, long pages);
1173 1174
1174 int (*bprm_alloc_security) (struct linux_binprm * bprm); 1175 int (*bprm_alloc_security) (struct linux_binprm * bprm);
1175 void (*bprm_free_security) (struct linux_binprm * bprm); 1176 void (*bprm_free_security) (struct linux_binprm * bprm);
@@ -1469,10 +1470,14 @@ static inline int security_settime(struct timespec *ts, struct timezone *tz)
1469 return security_ops->settime(ts, tz); 1470 return security_ops->settime(ts, tz);
1470} 1471}
1471 1472
1472
1473static inline int security_vm_enough_memory(long pages) 1473static inline int security_vm_enough_memory(long pages)
1474{ 1474{
1475 return security_ops->vm_enough_memory(pages); 1475 return security_ops->vm_enough_memory(current->mm, pages);
1476}
1477
1478static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages)
1479{
1480 return security_ops->vm_enough_memory(mm, pages);
1476} 1481}
1477 1482
1478static inline int security_bprm_alloc (struct linux_binprm *bprm) 1483static inline int security_bprm_alloc (struct linux_binprm *bprm)
@@ -2219,7 +2224,12 @@ static inline int security_settime(struct timespec *ts, struct timezone *tz)
2219 2224
2220static inline int security_vm_enough_memory(long pages) 2225static inline int security_vm_enough_memory(long pages)
2221{ 2226{
2222 return cap_vm_enough_memory(pages); 2227 return cap_vm_enough_memory(current->mm, pages);
2228}
2229
2230static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages)
2231{
2232 return cap_vm_enough_memory(mm, pages);
2223} 2233}
2224 2234
2225static inline int security_bprm_alloc (struct linux_binprm *bprm) 2235static inline int security_bprm_alloc (struct linux_binprm *bprm)
diff --git a/include/linux/selection.h b/include/linux/selection.h
index ed3408b400f1..f9457861937c 100644
--- a/include/linux/selection.h
+++ b/include/linux/selection.h
@@ -10,6 +10,8 @@
10#include <linux/tiocl.h> 10#include <linux/tiocl.h>
11#include <linux/vt_buffer.h> 11#include <linux/vt_buffer.h>
12 12
13struct tty_struct;
14
13extern struct vc_data *sel_cons; 15extern struct vc_data *sel_cons;
14 16
15extern void clear_selection(void); 17extern void clear_selection(void);
diff --git a/include/linux/serial_reg.h b/include/linux/serial_reg.h
index 1c5ed7d92b0f..96c0d93fc2ca 100644
--- a/include/linux/serial_reg.h
+++ b/include/linux/serial_reg.h
@@ -118,6 +118,7 @@
118#define UART_LSR_PE 0x04 /* Parity error indicator */ 118#define UART_LSR_PE 0x04 /* Parity error indicator */
119#define UART_LSR_OE 0x02 /* Overrun error indicator */ 119#define UART_LSR_OE 0x02 /* Overrun error indicator */
120#define UART_LSR_DR 0x01 /* Receiver data ready */ 120#define UART_LSR_DR 0x01 /* Receiver data ready */
121#define UART_LSR_BRK_ERROR_BITS 0x1E /* BI, FE, PE, OE bits */
121 122
122#define UART_MSR 6 /* In: Modem Status Register */ 123#define UART_MSR 6 /* In: Modem Status Register */
123#define UART_MSR_DCD 0x80 /* Data Carrier Detect */ 124#define UART_MSR_DCD 0x80 /* Data Carrier Detect */
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index c66c8a3410b9..ae9b24c12f6a 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -617,7 +617,6 @@ struct v4l2_framebuffer
617#define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010 617#define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010
618#define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020 618#define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
619#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040 619#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040
620#define V4L2_FBUF_CAP_GLOBAL_INV_ALPHA 0x0080
621/* Flags for the 'flags' field. */ 620/* Flags for the 'flags' field. */
622#define V4L2_FBUF_FLAG_PRIMARY 0x0001 621#define V4L2_FBUF_FLAG_PRIMARY 0x0001
623#define V4L2_FBUF_FLAG_OVERLAY 0x0002 622#define V4L2_FBUF_FLAG_OVERLAY 0x0002
@@ -625,7 +624,6 @@ struct v4l2_framebuffer
625#define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008 624#define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008
626#define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010 625#define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010
627#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020 626#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020
628#define V4L2_FBUF_FLAG_GLOBAL_INV_ALPHA 0x0040
629 627
630struct v4l2_clip 628struct v4l2_clip
631{ 629{
diff --git a/include/math-emu/op-common.h b/include/math-emu/op-common.h
index 93780abd01bc..bb46e7645d53 100644
--- a/include/math-emu/op-common.h
+++ b/include/math-emu/op-common.h
@@ -145,13 +145,16 @@ do { \
145 { \ 145 { \
146 X##_e = 1; \ 146 X##_e = 1; \
147 _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \ 147 _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \
148 FP_SET_EXCEPTION(FP_EX_INEXACT); \
148 } \ 149 } \
149 else \ 150 else \
150 { \ 151 { \
151 X##_e = 0; \ 152 X##_e = 0; \
152 _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \ 153 _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \
153 FP_SET_EXCEPTION(FP_EX_UNDERFLOW); \
154 } \ 154 } \
155 if ((FP_CUR_EXCEPTIONS & FP_EX_INEXACT) || \
156 (FP_TRAPPING_EXCEPTIONS & FP_EX_UNDERFLOW)) \
157 FP_SET_EXCEPTION(FP_EX_UNDERFLOW); \
155 } \ 158 } \
156 else \ 159 else \
157 { \ 160 { \
diff --git a/include/math-emu/soft-fp.h b/include/math-emu/soft-fp.h
index d02eb64a865b..a6f873b45f98 100644
--- a/include/math-emu/soft-fp.h
+++ b/include/math-emu/soft-fp.h
@@ -97,12 +97,19 @@
97#define FP_INHIBIT_RESULTS 0 97#define FP_INHIBIT_RESULTS 0
98#endif 98#endif
99 99
100#ifndef FP_TRAPPING_EXCEPTIONS
101#define FP_TRAPPING_EXCEPTIONS 0
102#endif
103
100#define FP_SET_EXCEPTION(ex) \ 104#define FP_SET_EXCEPTION(ex) \
101 _fex |= (ex) 105 _fex |= (ex)
102 106
103#define FP_UNSET_EXCEPTION(ex) \ 107#define FP_UNSET_EXCEPTION(ex) \
104 _fex &= ~(ex) 108 _fex &= ~(ex)
105 109
110#define FP_CUR_EXCEPTIONS \
111 (_fex)
112
106#define FP_CLEAR_EXCEPTIONS \ 113#define FP_CLEAR_EXCEPTIONS \
107 _fex = 0 114 _fex = 0
108 115
diff --git a/include/rdma/ib_mad.h b/include/rdma/ib_mad.h
index 30712ddd8a5e..8ec3799e42e1 100644
--- a/include/rdma/ib_mad.h
+++ b/include/rdma/ib_mad.h
@@ -39,6 +39,8 @@
39#if !defined( IB_MAD_H ) 39#if !defined( IB_MAD_H )
40#define IB_MAD_H 40#define IB_MAD_H
41 41
42#include <linux/list.h>
43
42#include <rdma/ib_verbs.h> 44#include <rdma/ib_verbs.h>
43 45
44/* Management base version */ 46/* Management base version */
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 0627a6aa282a..4bea182d7116 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -46,6 +46,8 @@
46#include <linux/mm.h> 46#include <linux/mm.h>
47#include <linux/dma-mapping.h> 47#include <linux/dma-mapping.h>
48#include <linux/kref.h> 48#include <linux/kref.h>
49#include <linux/list.h>
50#include <linux/rwsem.h>
49 51
50#include <asm/atomic.h> 52#include <asm/atomic.h>
51#include <asm/scatterlist.h> 53#include <asm/scatterlist.h>
@@ -731,11 +733,6 @@ struct ib_udata {
731 size_t outlen; 733 size_t outlen;
732}; 734};
733 735
734#define IB_UMEM_MAX_PAGE_CHUNK \
735 ((PAGE_SIZE - offsetof(struct ib_umem_chunk, page_list)) / \
736 ((void *) &((struct ib_umem_chunk *) 0)->page_list[1] - \
737 (void *) &((struct ib_umem_chunk *) 0)->page_list[0]))
738
739struct ib_pd { 736struct ib_pd {
740 struct ib_device *device; 737 struct ib_device *device;
741 struct ib_uobject *uobject; 738 struct ib_uobject *uobject;
diff --git a/init/main.c b/init/main.c
index d3bcb3b11620..450e6ee52ab6 100644
--- a/init/main.c
+++ b/init/main.c
@@ -146,9 +146,14 @@ static unsigned int __initdata max_cpus = NR_CPUS;
146 * greater than 0, limits the maximum number of CPUs activated in 146 * greater than 0, limits the maximum number of CPUs activated in
147 * SMP mode to <NUM>. 147 * SMP mode to <NUM>.
148 */ 148 */
149#ifndef CONFIG_X86_IO_APIC
150static inline void disable_ioapic_setup(void) {};
151#endif
152
149static int __init nosmp(char *str) 153static int __init nosmp(char *str)
150{ 154{
151 max_cpus = 0; 155 max_cpus = 0;
156 disable_ioapic_setup();
152 return 0; 157 return 0;
153} 158}
154 159
@@ -157,10 +162,13 @@ early_param("nosmp", nosmp);
157static int __init maxcpus(char *str) 162static int __init maxcpus(char *str)
158{ 163{
159 get_option(&str, &max_cpus); 164 get_option(&str, &max_cpus);
160 return 1; 165 if (max_cpus == 0)
166 disable_ioapic_setup();
167
168 return 0;
161} 169}
162 170
163__setup("maxcpus=", maxcpus); 171early_param("maxcpus", maxcpus);
164#else 172#else
165#define max_cpus NR_CPUS 173#define max_cpus NR_CPUS
166#endif 174#endif
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index 3401293359e8..04f3ffb8d9d4 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -2023,7 +2023,7 @@ int __audit_signal_info(int sig, struct task_struct *t)
2023 axp->d.next = ctx->aux_pids; 2023 axp->d.next = ctx->aux_pids;
2024 ctx->aux_pids = (void *)axp; 2024 ctx->aux_pids = (void *)axp;
2025 } 2025 }
2026 BUG_ON(axp->pid_count > AUDIT_AUX_PIDS); 2026 BUG_ON(axp->pid_count >= AUDIT_AUX_PIDS);
2027 2027
2028 axp->target_pid[axp->pid_count] = t->tgid; 2028 axp->target_pid[axp->pid_count] = t->tgid;
2029 selinux_get_task_sid(t, &axp->target_sid[axp->pid_count]); 2029 selinux_get_task_sid(t, &axp->target_sid[axp->pid_count]);
diff --git a/kernel/futex.c b/kernel/futex.c
index 3415e9ad1391..e8935b195e88 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -1670,6 +1670,7 @@ pi_faulted:
1670 attempt); 1670 attempt);
1671 if (ret) 1671 if (ret)
1672 goto out; 1672 goto out;
1673 uval = 0;
1673 goto retry_unlocked; 1674 goto retry_unlocked;
1674 } 1675 }
1675 1676
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 203a518b6f14..853aefbd184b 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -462,7 +462,9 @@ void free_irq(unsigned int irq, void *dev_id)
462 * We do this after actually deregistering it, to make sure that 462 * We do this after actually deregistering it, to make sure that
463 * a 'real' IRQ doesn't run in parallel with our fake 463 * a 'real' IRQ doesn't run in parallel with our fake
464 */ 464 */
465 local_irq_save(flags);
465 handler(irq, dev_id); 466 handler(irq, dev_id);
467 local_irq_restore(flags);
466 } 468 }
467#endif 469#endif
468} 470}
diff --git a/kernel/module.c b/kernel/module.c
index 33c04ad51175..db0ead0363e2 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -784,8 +784,7 @@ EXPORT_SYMBOL_GPL(symbol_put_addr);
784static ssize_t show_refcnt(struct module_attribute *mattr, 784static ssize_t show_refcnt(struct module_attribute *mattr,
785 struct module *mod, char *buffer) 785 struct module *mod, char *buffer)
786{ 786{
787 /* sysfs holds a reference */ 787 return sprintf(buffer, "%u\n", module_refcount(mod));
788 return sprintf(buffer, "%u\n", module_refcount(mod)-1);
789} 788}
790 789
791static struct module_attribute refcnt = { 790static struct module_attribute refcnt = {
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
index 55b3761edaa9..7a15afb73ed0 100644
--- a/kernel/posix-timers.c
+++ b/kernel/posix-timers.c
@@ -547,9 +547,9 @@ sys_timer_create(const clockid_t which_clock,
547 new_timer->it_process = process; 547 new_timer->it_process = process;
548 list_add(&new_timer->list, 548 list_add(&new_timer->list,
549 &process->signal->posix_timers); 549 &process->signal->posix_timers);
550 spin_unlock_irqrestore(&process->sighand->siglock, flags);
551 if (new_timer->it_sigev_notify == (SIGEV_SIGNAL|SIGEV_THREAD_ID)) 550 if (new_timer->it_sigev_notify == (SIGEV_SIGNAL|SIGEV_THREAD_ID))
552 get_task_struct(process); 551 get_task_struct(process);
552 spin_unlock_irqrestore(&process->sighand->siglock, flags);
553 } else { 553 } else {
554 spin_unlock_irqrestore(&process->sighand->siglock, flags); 554 spin_unlock_irqrestore(&process->sighand->siglock, flags);
555 process = NULL; 555 process = NULL;
@@ -605,13 +605,14 @@ static struct k_itimer * lock_timer(timer_t timer_id, unsigned long *flags)
605 timr = (struct k_itimer *) idr_find(&posix_timers_id, (int) timer_id); 605 timr = (struct k_itimer *) idr_find(&posix_timers_id, (int) timer_id);
606 if (timr) { 606 if (timr) {
607 spin_lock(&timr->it_lock); 607 spin_lock(&timr->it_lock);
608 spin_unlock(&idr_lock);
609 608
610 if ((timr->it_id != timer_id) || !(timr->it_process) || 609 if ((timr->it_id != timer_id) || !(timr->it_process) ||
611 timr->it_process->tgid != current->tgid) { 610 timr->it_process->tgid != current->tgid) {
612 unlock_timer(timr, *flags); 611 spin_unlock(&timr->it_lock);
612 spin_unlock_irqrestore(&idr_lock, *flags);
613 timr = NULL; 613 timr = NULL;
614 } 614 } else
615 spin_unlock(&idr_lock);
615 } else 616 } else
616 spin_unlock_irqrestore(&idr_lock, *flags); 617 spin_unlock_irqrestore(&idr_lock, *flags);
617 618
diff --git a/kernel/printk.c b/kernel/printk.c
index bd2cd062878d..8451dfc31d25 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -1083,6 +1083,19 @@ int unregister_console(struct console *console)
1083} 1083}
1084EXPORT_SYMBOL(unregister_console); 1084EXPORT_SYMBOL(unregister_console);
1085 1085
1086static int __init disable_boot_consoles(void)
1087{
1088 if (console_drivers != NULL) {
1089 if (console_drivers->flags & CON_BOOT) {
1090 printk(KERN_INFO "turn off boot console %s%d\n",
1091 console_drivers->name, console_drivers->index);
1092 return unregister_console(console_drivers);
1093 }
1094 }
1095 return 0;
1096}
1097late_initcall(disable_boot_consoles);
1098
1086/** 1099/**
1087 * tty_write_message - write a message to a certain tty, not just the console. 1100 * tty_write_message - write a message to a certain tty, not just the console.
1088 * @tty: the destination tty_struct 1101 * @tty: the destination tty_struct
diff --git a/kernel/sched.c b/kernel/sched.c
index 45e17b83b7f1..9fe473a190de 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -262,7 +262,8 @@ struct rq {
262 s64 clock_max_delta; 262 s64 clock_max_delta;
263 263
264 unsigned int clock_warps, clock_overflows; 264 unsigned int clock_warps, clock_overflows;
265 unsigned int clock_unstable_events; 265 u64 idle_clock;
266 unsigned int clock_deep_idle_events;
266 u64 tick_timestamp; 267 u64 tick_timestamp;
267 268
268 atomic_t nr_iowait; 269 atomic_t nr_iowait;
@@ -556,18 +557,40 @@ static inline struct rq *this_rq_lock(void)
556} 557}
557 558
558/* 559/*
559 * CPU frequency is/was unstable - start new by setting prev_clock_raw: 560 * We are going deep-idle (irqs are disabled):
560 */ 561 */
561void sched_clock_unstable_event(void) 562void sched_clock_idle_sleep_event(void)
562{ 563{
563 unsigned long flags; 564 struct rq *rq = cpu_rq(smp_processor_id());
564 struct rq *rq;
565 565
566 rq = task_rq_lock(current, &flags); 566 spin_lock(&rq->lock);
567 rq->prev_clock_raw = sched_clock(); 567 __update_rq_clock(rq);
568 rq->clock_unstable_events++; 568 spin_unlock(&rq->lock);
569 task_rq_unlock(rq, &flags); 569 rq->clock_deep_idle_events++;
570}
571EXPORT_SYMBOL_GPL(sched_clock_idle_sleep_event);
572
573/*
574 * We just idled delta nanoseconds (called with irqs disabled):
575 */
576void sched_clock_idle_wakeup_event(u64 delta_ns)
577{
578 struct rq *rq = cpu_rq(smp_processor_id());
579 u64 now = sched_clock();
580
581 rq->idle_clock += delta_ns;
582 /*
583 * Override the previous timestamp and ignore all
584 * sched_clock() deltas that occured while we idled,
585 * and use the PM-provided delta_ns to advance the
586 * rq clock:
587 */
588 spin_lock(&rq->lock);
589 rq->prev_clock_raw = now;
590 rq->clock += delta_ns;
591 spin_unlock(&rq->lock);
570} 592}
593EXPORT_SYMBOL_GPL(sched_clock_idle_wakeup_event);
571 594
572/* 595/*
573 * resched_task - mark a task 'to be rescheduled now'. 596 * resched_task - mark a task 'to be rescheduled now'.
@@ -2157,12 +2180,6 @@ int can_migrate_task(struct task_struct *p, struct rq *rq, int this_cpu,
2157 if (task_running(rq, p)) 2180 if (task_running(rq, p))
2158 return 0; 2181 return 0;
2159 2182
2160 /*
2161 * Aggressive migration if too many balance attempts have failed:
2162 */
2163 if (sd->nr_balance_failed > sd->cache_nice_tries)
2164 return 1;
2165
2166 return 1; 2183 return 1;
2167} 2184}
2168 2185
@@ -2494,7 +2511,7 @@ group_next:
2494 * a think about bumping its value to force at least one task to be 2511 * a think about bumping its value to force at least one task to be
2495 * moved 2512 * moved
2496 */ 2513 */
2497 if (*imbalance + SCHED_LOAD_SCALE_FUZZ < busiest_load_per_task/2) { 2514 if (*imbalance + SCHED_LOAD_SCALE_FUZZ < busiest_load_per_task) {
2498 unsigned long tmp, pwr_now, pwr_move; 2515 unsigned long tmp, pwr_now, pwr_move;
2499 unsigned int imbn; 2516 unsigned int imbn;
2500 2517
@@ -3020,6 +3037,7 @@ static inline void rebalance_domains(int cpu, enum cpu_idle_type idle)
3020 struct sched_domain *sd; 3037 struct sched_domain *sd;
3021 /* Earliest time when we have to do rebalance again */ 3038 /* Earliest time when we have to do rebalance again */
3022 unsigned long next_balance = jiffies + 60*HZ; 3039 unsigned long next_balance = jiffies + 60*HZ;
3040 int update_next_balance = 0;
3023 3041
3024 for_each_domain(cpu, sd) { 3042 for_each_domain(cpu, sd) {
3025 if (!(sd->flags & SD_LOAD_BALANCE)) 3043 if (!(sd->flags & SD_LOAD_BALANCE))
@@ -3056,8 +3074,10 @@ static inline void rebalance_domains(int cpu, enum cpu_idle_type idle)
3056 if (sd->flags & SD_SERIALIZE) 3074 if (sd->flags & SD_SERIALIZE)
3057 spin_unlock(&balancing); 3075 spin_unlock(&balancing);
3058out: 3076out:
3059 if (time_after(next_balance, sd->last_balance + interval)) 3077 if (time_after(next_balance, sd->last_balance + interval)) {
3060 next_balance = sd->last_balance + interval; 3078 next_balance = sd->last_balance + interval;
3079 update_next_balance = 1;
3080 }
3061 3081
3062 /* 3082 /*
3063 * Stop the load balance at this level. There is another 3083 * Stop the load balance at this level. There is another
@@ -3067,7 +3087,14 @@ out:
3067 if (!balance) 3087 if (!balance)
3068 break; 3088 break;
3069 } 3089 }
3070 rq->next_balance = next_balance; 3090
3091 /*
3092 * next_balance will be updated only when there is a need.
3093 * When the cpu is attached to null domain for ex, it will not be
3094 * updated.
3095 */
3096 if (likely(update_next_balance))
3097 rq->next_balance = next_balance;
3071} 3098}
3072 3099
3073/* 3100/*
@@ -4884,14 +4911,18 @@ cpumask_t nohz_cpu_mask = CPU_MASK_NONE;
4884static inline void sched_init_granularity(void) 4911static inline void sched_init_granularity(void)
4885{ 4912{
4886 unsigned int factor = 1 + ilog2(num_online_cpus()); 4913 unsigned int factor = 1 + ilog2(num_online_cpus());
4887 const unsigned long gran_limit = 100000000; 4914 const unsigned long limit = 100000000;
4915
4916 sysctl_sched_min_granularity *= factor;
4917 if (sysctl_sched_min_granularity > limit)
4918 sysctl_sched_min_granularity = limit;
4888 4919
4889 sysctl_sched_granularity *= factor; 4920 sysctl_sched_latency *= factor;
4890 if (sysctl_sched_granularity > gran_limit) 4921 if (sysctl_sched_latency > limit)
4891 sysctl_sched_granularity = gran_limit; 4922 sysctl_sched_latency = limit;
4892 4923
4893 sysctl_sched_runtime_limit = sysctl_sched_granularity * 4; 4924 sysctl_sched_runtime_limit = sysctl_sched_latency;
4894 sysctl_sched_wakeup_granularity = sysctl_sched_granularity / 2; 4925 sysctl_sched_wakeup_granularity = sysctl_sched_min_granularity / 2;
4895} 4926}
4896 4927
4897#ifdef CONFIG_SMP 4928#ifdef CONFIG_SMP
@@ -5234,15 +5265,16 @@ static void migrate_dead_tasks(unsigned int dead_cpu)
5234static struct ctl_table sd_ctl_dir[] = { 5265static struct ctl_table sd_ctl_dir[] = {
5235 { 5266 {
5236 .procname = "sched_domain", 5267 .procname = "sched_domain",
5237 .mode = 0755, 5268 .mode = 0555,
5238 }, 5269 },
5239 {0,}, 5270 {0,},
5240}; 5271};
5241 5272
5242static struct ctl_table sd_ctl_root[] = { 5273static struct ctl_table sd_ctl_root[] = {
5243 { 5274 {
5275 .ctl_name = CTL_KERN,
5244 .procname = "kernel", 5276 .procname = "kernel",
5245 .mode = 0755, 5277 .mode = 0555,
5246 .child = sd_ctl_dir, 5278 .child = sd_ctl_dir,
5247 }, 5279 },
5248 {0,}, 5280 {0,},
@@ -5318,7 +5350,7 @@ static ctl_table *sd_alloc_ctl_cpu_table(int cpu)
5318 for_each_domain(cpu, sd) { 5350 for_each_domain(cpu, sd) {
5319 snprintf(buf, 32, "domain%d", i); 5351 snprintf(buf, 32, "domain%d", i);
5320 entry->procname = kstrdup(buf, GFP_KERNEL); 5352 entry->procname = kstrdup(buf, GFP_KERNEL);
5321 entry->mode = 0755; 5353 entry->mode = 0555;
5322 entry->child = sd_alloc_ctl_domain_table(sd); 5354 entry->child = sd_alloc_ctl_domain_table(sd);
5323 entry++; 5355 entry++;
5324 i++; 5356 i++;
@@ -5338,7 +5370,7 @@ static void init_sched_domain_sysctl(void)
5338 for (i = 0; i < cpu_num; i++, entry++) { 5370 for (i = 0; i < cpu_num; i++, entry++) {
5339 snprintf(buf, 32, "cpu%d", i); 5371 snprintf(buf, 32, "cpu%d", i);
5340 entry->procname = kstrdup(buf, GFP_KERNEL); 5372 entry->procname = kstrdup(buf, GFP_KERNEL);
5341 entry->mode = 0755; 5373 entry->mode = 0555;
5342 entry->child = sd_alloc_ctl_cpu_table(i); 5374 entry->child = sd_alloc_ctl_cpu_table(i);
5343 } 5375 }
5344 sd_sysctl_header = register_sysctl_table(sd_ctl_root); 5376 sd_sysctl_header = register_sysctl_table(sd_ctl_root);
diff --git a/kernel/sched_debug.c b/kernel/sched_debug.c
index 87e524762b85..ab18f45f2ab2 100644
--- a/kernel/sched_debug.c
+++ b/kernel/sched_debug.c
@@ -154,10 +154,11 @@ static void print_cpu(struct seq_file *m, int cpu)
154 P(next_balance); 154 P(next_balance);
155 P(curr->pid); 155 P(curr->pid);
156 P(clock); 156 P(clock);
157 P(idle_clock);
157 P(prev_clock_raw); 158 P(prev_clock_raw);
158 P(clock_warps); 159 P(clock_warps);
159 P(clock_overflows); 160 P(clock_overflows);
160 P(clock_unstable_events); 161 P(clock_deep_idle_events);
161 P(clock_max_delta); 162 P(clock_max_delta);
162 P(cpu_load[0]); 163 P(cpu_load[0]);
163 P(cpu_load[1]); 164 P(cpu_load[1]);
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index fedbb51bba96..ee3771850aaf 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -15,34 +15,42 @@
15 * 15 *
16 * Scaled math optimizations by Thomas Gleixner 16 * Scaled math optimizations by Thomas Gleixner
17 * Copyright (C) 2007, Thomas Gleixner <tglx@linutronix.de> 17 * Copyright (C) 2007, Thomas Gleixner <tglx@linutronix.de>
18 *
19 * Adaptive scheduling granularity, math enhancements by Peter Zijlstra
20 * Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra <pzijlstr@redhat.com>
18 */ 21 */
19 22
20/* 23/*
21 * Preemption granularity: 24 * Targeted preemption latency for CPU-bound tasks:
22 * (default: 2 msec, units: nanoseconds) 25 * (default: 20ms, units: nanoseconds)
23 * 26 *
24 * NOTE: this granularity value is not the same as the concept of 27 * NOTE: this latency value is not the same as the concept of
25 * 'timeslice length' - timeslices in CFS will typically be somewhat 28 * 'timeslice length' - timeslices in CFS are of variable length.
26 * larger than this value. (to see the precise effective timeslice 29 * (to see the precise effective timeslice length of your workload,
27 * length of your workload, run vmstat and monitor the context-switches 30 * run vmstat and monitor the context-switches field)
28 * field)
29 * 31 *
30 * On SMP systems the value of this is multiplied by the log2 of the 32 * On SMP systems the value of this is multiplied by the log2 of the
31 * number of CPUs. (i.e. factor 2x on 2-way systems, 3x on 4-way 33 * number of CPUs. (i.e. factor 2x on 2-way systems, 3x on 4-way
32 * systems, 4x on 8-way systems, 5x on 16-way systems, etc.) 34 * systems, 4x on 8-way systems, 5x on 16-way systems, etc.)
35 * Targeted preemption latency for CPU-bound tasks:
36 */
37unsigned int sysctl_sched_latency __read_mostly = 20000000ULL;
38
39/*
40 * Minimal preemption granularity for CPU-bound tasks:
41 * (default: 2 msec, units: nanoseconds)
33 */ 42 */
34unsigned int sysctl_sched_granularity __read_mostly = 2000000000ULL/HZ; 43unsigned int sysctl_sched_min_granularity __read_mostly = 2000000ULL;
35 44
36/* 45/*
37 * SCHED_BATCH wake-up granularity. 46 * SCHED_BATCH wake-up granularity.
38 * (default: 10 msec, units: nanoseconds) 47 * (default: 25 msec, units: nanoseconds)
39 * 48 *
40 * This option delays the preemption effects of decoupled workloads 49 * This option delays the preemption effects of decoupled workloads
41 * and reduces their over-scheduling. Synchronous workloads will still 50 * and reduces their over-scheduling. Synchronous workloads will still
42 * have immediate wakeup/sleep latencies. 51 * have immediate wakeup/sleep latencies.
43 */ 52 */
44unsigned int sysctl_sched_batch_wakeup_granularity __read_mostly = 53unsigned int sysctl_sched_batch_wakeup_granularity __read_mostly = 25000000UL;
45 10000000000ULL/HZ;
46 54
47/* 55/*
48 * SCHED_OTHER wake-up granularity. 56 * SCHED_OTHER wake-up granularity.
@@ -52,12 +60,12 @@ unsigned int sysctl_sched_batch_wakeup_granularity __read_mostly =
52 * and reduces their over-scheduling. Synchronous workloads will still 60 * and reduces their over-scheduling. Synchronous workloads will still
53 * have immediate wakeup/sleep latencies. 61 * have immediate wakeup/sleep latencies.
54 */ 62 */
55unsigned int sysctl_sched_wakeup_granularity __read_mostly = 1000000000ULL/HZ; 63unsigned int sysctl_sched_wakeup_granularity __read_mostly = 1000000UL;
56 64
57unsigned int sysctl_sched_stat_granularity __read_mostly; 65unsigned int sysctl_sched_stat_granularity __read_mostly;
58 66
59/* 67/*
60 * Initialized in sched_init_granularity(): 68 * Initialized in sched_init_granularity() [to 5 times the base granularity]:
61 */ 69 */
62unsigned int sysctl_sched_runtime_limit __read_mostly; 70unsigned int sysctl_sched_runtime_limit __read_mostly;
63 71
@@ -214,6 +222,49 @@ static struct sched_entity *__pick_next_entity(struct cfs_rq *cfs_rq)
214 */ 222 */
215 223
216/* 224/*
225 * Calculate the preemption granularity needed to schedule every
226 * runnable task once per sysctl_sched_latency amount of time.
227 * (down to a sensible low limit on granularity)
228 *
229 * For example, if there are 2 tasks running and latency is 10 msecs,
230 * we switch tasks every 5 msecs. If we have 3 tasks running, we have
231 * to switch tasks every 3.33 msecs to get a 10 msecs observed latency
232 * for each task. We do finer and finer scheduling up to until we
233 * reach the minimum granularity value.
234 *
235 * To achieve this we use the following dynamic-granularity rule:
236 *
237 * gran = lat/nr - lat/nr/nr
238 *
239 * This comes out of the following equations:
240 *
241 * kA1 + gran = kB1
242 * kB2 + gran = kA2
243 * kA2 = kA1
244 * kB2 = kB1 - d + d/nr
245 * lat = d * nr
246 *
247 * Where 'k' is key, 'A' is task A (waiting), 'B' is task B (running),
248 * '1' is start of time, '2' is end of time, 'd' is delay between
249 * 1 and 2 (during which task B was running), 'nr' is number of tasks
250 * running, 'lat' is the the period of each task. ('lat' is the
251 * sched_latency that we aim for.)
252 */
253static long
254sched_granularity(struct cfs_rq *cfs_rq)
255{
256 unsigned int gran = sysctl_sched_latency;
257 unsigned int nr = cfs_rq->nr_running;
258
259 if (nr > 1) {
260 gran = gran/nr - gran/nr/nr;
261 gran = max(gran, sysctl_sched_min_granularity);
262 }
263
264 return gran;
265}
266
267/*
217 * We rescale the rescheduling granularity of tasks according to their 268 * We rescale the rescheduling granularity of tasks according to their
218 * nice level, but only linearly, not exponentially: 269 * nice level, but only linearly, not exponentially:
219 */ 270 */
@@ -303,10 +354,10 @@ __update_curr(struct cfs_rq *cfs_rq, struct sched_entity *curr)
303 delta_fair = calc_delta_fair(delta_exec, lw); 354 delta_fair = calc_delta_fair(delta_exec, lw);
304 delta_mine = calc_delta_mine(delta_exec, curr->load.weight, lw); 355 delta_mine = calc_delta_mine(delta_exec, curr->load.weight, lw);
305 356
306 if (cfs_rq->sleeper_bonus > sysctl_sched_granularity) { 357 if (cfs_rq->sleeper_bonus > sysctl_sched_latency) {
307 delta = min(cfs_rq->sleeper_bonus, (u64)delta_exec); 358 delta = min((u64)delta_mine, cfs_rq->sleeper_bonus);
308 delta = calc_delta_mine(delta, curr->load.weight, lw); 359 delta = min(delta, (unsigned long)(
309 delta = min((u64)delta, cfs_rq->sleeper_bonus); 360 (long)sysctl_sched_runtime_limit - curr->wait_runtime));
310 cfs_rq->sleeper_bonus -= delta; 361 cfs_rq->sleeper_bonus -= delta;
311 delta_mine -= delta; 362 delta_mine -= delta;
312 } 363 }
@@ -494,6 +545,13 @@ static void __enqueue_sleeper(struct cfs_rq *cfs_rq, struct sched_entity *se)
494 unsigned long load = cfs_rq->load.weight, delta_fair; 545 unsigned long load = cfs_rq->load.weight, delta_fair;
495 long prev_runtime; 546 long prev_runtime;
496 547
548 /*
549 * Do not boost sleepers if there's too much bonus 'in flight'
550 * already:
551 */
552 if (unlikely(cfs_rq->sleeper_bonus > sysctl_sched_runtime_limit))
553 return;
554
497 if (sysctl_sched_features & SCHED_FEAT_SLEEPER_LOAD_AVG) 555 if (sysctl_sched_features & SCHED_FEAT_SLEEPER_LOAD_AVG)
498 load = rq_of(cfs_rq)->cpu_load[2]; 556 load = rq_of(cfs_rq)->cpu_load[2];
499 557
@@ -513,16 +571,13 @@ static void __enqueue_sleeper(struct cfs_rq *cfs_rq, struct sched_entity *se)
513 571
514 prev_runtime = se->wait_runtime; 572 prev_runtime = se->wait_runtime;
515 __add_wait_runtime(cfs_rq, se, delta_fair); 573 __add_wait_runtime(cfs_rq, se, delta_fair);
574 schedstat_add(cfs_rq, wait_runtime, se->wait_runtime);
516 delta_fair = se->wait_runtime - prev_runtime; 575 delta_fair = se->wait_runtime - prev_runtime;
517 576
518 /* 577 /*
519 * Track the amount of bonus we've given to sleepers: 578 * Track the amount of bonus we've given to sleepers:
520 */ 579 */
521 cfs_rq->sleeper_bonus += delta_fair; 580 cfs_rq->sleeper_bonus += delta_fair;
522 if (unlikely(cfs_rq->sleeper_bonus > sysctl_sched_runtime_limit))
523 cfs_rq->sleeper_bonus = sysctl_sched_runtime_limit;
524
525 schedstat_add(cfs_rq, wait_runtime, se->wait_runtime);
526} 581}
527 582
528static void enqueue_sleeper(struct cfs_rq *cfs_rq, struct sched_entity *se) 583static void enqueue_sleeper(struct cfs_rq *cfs_rq, struct sched_entity *se)
@@ -686,7 +741,8 @@ static void entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr)
686 if (next == curr) 741 if (next == curr)
687 return; 742 return;
688 743
689 __check_preempt_curr_fair(cfs_rq, next, curr, sysctl_sched_granularity); 744 __check_preempt_curr_fair(cfs_rq, next, curr,
745 sched_granularity(cfs_rq));
690} 746}
691 747
692/************************************************** 748/**************************************************
@@ -1031,7 +1087,7 @@ static void task_new_fair(struct rq *rq, struct task_struct *p)
1031 * it will preempt the parent: 1087 * it will preempt the parent:
1032 */ 1088 */
1033 p->se.fair_key = current->se.fair_key - 1089 p->se.fair_key = current->se.fair_key -
1034 niced_granularity(&rq->curr->se, sysctl_sched_granularity) - 1; 1090 niced_granularity(&rq->curr->se, sched_granularity(cfs_rq)) - 1;
1035 /* 1091 /*
1036 * The first wait is dominated by the child-runs-first logic, 1092 * The first wait is dominated by the child-runs-first logic,
1037 * so do not credit it with that waiting time yet: 1093 * so do not credit it with that waiting time yet:
@@ -1044,7 +1100,7 @@ static void task_new_fair(struct rq *rq, struct task_struct *p)
1044 * -granularity/2, so initialize the task with that: 1100 * -granularity/2, so initialize the task with that:
1045 */ 1101 */
1046 if (sysctl_sched_features & SCHED_FEAT_START_DEBIT) 1102 if (sysctl_sched_features & SCHED_FEAT_START_DEBIT)
1047 p->se.wait_runtime = -(sysctl_sched_granularity / 2); 1103 p->se.wait_runtime = -(sched_granularity(cfs_rq) / 2);
1048 1104
1049 __enqueue_entity(cfs_rq, se); 1105 __enqueue_entity(cfs_rq, se);
1050} 1106}
@@ -1057,7 +1113,7 @@ static void task_new_fair(struct rq *rq, struct task_struct *p)
1057 */ 1113 */
1058static void set_curr_task_fair(struct rq *rq) 1114static void set_curr_task_fair(struct rq *rq)
1059{ 1115{
1060 struct sched_entity *se = &rq->curr.se; 1116 struct sched_entity *se = &rq->curr->se;
1061 1117
1062 for_each_sched_entity(se) 1118 for_each_sched_entity(se)
1063 set_next_entity(cfs_rq_of(se), se); 1119 set_next_entity(cfs_rq_of(se), se);
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
index dcdcad632fd9..4b87476a02d0 100644
--- a/kernel/sched_rt.c
+++ b/kernel/sched_rt.c
@@ -207,10 +207,15 @@ static void task_tick_rt(struct rq *rq, struct task_struct *p)
207 return; 207 return;
208 208
209 p->time_slice = static_prio_timeslice(p->static_prio); 209 p->time_slice = static_prio_timeslice(p->static_prio);
210 set_tsk_need_resched(p);
211 210
212 /* put it at the end of the queue: */ 211 /*
213 requeue_task_rt(rq, p); 212 * Requeue to the end of queue if we are not the only element
213 * on the queue:
214 */
215 if (p->run_list.prev != p->run_list.next) {
216 requeue_task_rt(rq, p);
217 set_tsk_need_resched(p);
218 }
214} 219}
215 220
216static struct sched_class rt_sched_class __read_mostly = { 221static struct sched_class rt_sched_class __read_mostly = {
diff --git a/kernel/signal.c b/kernel/signal.c
index b27c01a66448..ad63109e413c 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -378,7 +378,7 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
378 /* We only dequeue private signals from ourselves, we don't let 378 /* We only dequeue private signals from ourselves, we don't let
379 * signalfd steal them 379 * signalfd steal them
380 */ 380 */
381 if (tsk == current) 381 if (likely(tsk == current))
382 signr = __dequeue_signal(&tsk->pending, mask, info); 382 signr = __dequeue_signal(&tsk->pending, mask, info);
383 if (!signr) { 383 if (!signr) {
384 signr = __dequeue_signal(&tsk->signal->shared_pending, 384 signr = __dequeue_signal(&tsk->signal->shared_pending,
@@ -425,7 +425,7 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
425 if (!(tsk->signal->flags & SIGNAL_GROUP_EXIT)) 425 if (!(tsk->signal->flags & SIGNAL_GROUP_EXIT))
426 tsk->signal->flags |= SIGNAL_STOP_DEQUEUED; 426 tsk->signal->flags |= SIGNAL_STOP_DEQUEUED;
427 } 427 }
428 if ( signr && 428 if (signr && likely(tsk == current) &&
429 ((info->si_code & __SI_MASK) == __SI_TIMER) && 429 ((info->si_code & __SI_MASK) == __SI_TIMER) &&
430 info->si_sys_private){ 430 info->si_sys_private){
431 /* 431 /*
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 8bdb8c07e04f..6ace893c17c9 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -27,7 +27,6 @@
27#include <linux/capability.h> 27#include <linux/capability.h>
28#include <linux/ctype.h> 28#include <linux/ctype.h>
29#include <linux/utsname.h> 29#include <linux/utsname.h>
30#include <linux/capability.h>
31#include <linux/smp_lock.h> 30#include <linux/smp_lock.h>
32#include <linux/fs.h> 31#include <linux/fs.h>
33#include <linux/init.h> 32#include <linux/init.h>
@@ -223,8 +222,19 @@ static ctl_table kern_table[] = {
223#ifdef CONFIG_SCHED_DEBUG 222#ifdef CONFIG_SCHED_DEBUG
224 { 223 {
225 .ctl_name = CTL_UNNUMBERED, 224 .ctl_name = CTL_UNNUMBERED,
226 .procname = "sched_granularity_ns", 225 .procname = "sched_min_granularity_ns",
227 .data = &sysctl_sched_granularity, 226 .data = &sysctl_sched_min_granularity,
227 .maxlen = sizeof(unsigned int),
228 .mode = 0644,
229 .proc_handler = &proc_dointvec_minmax,
230 .strategy = &sysctl_intvec,
231 .extra1 = &min_sched_granularity_ns,
232 .extra2 = &max_sched_granularity_ns,
233 },
234 {
235 .ctl_name = CTL_UNNUMBERED,
236 .procname = "sched_latency_ns",
237 .data = &sysctl_sched_latency,
228 .maxlen = sizeof(unsigned int), 238 .maxlen = sizeof(unsigned int),
229 .mode = 0644, 239 .mode = 0644,
230 .proc_handler = &proc_dointvec_minmax, 240 .proc_handler = &proc_dointvec_minmax,
@@ -284,6 +294,15 @@ static ctl_table kern_table[] = {
284 .mode = 0644, 294 .mode = 0644,
285 .proc_handler = &proc_dointvec, 295 .proc_handler = &proc_dointvec,
286 }, 296 },
297 {
298 .ctl_name = CTL_UNNUMBERED,
299 .procname = "sched_features",
300 .data = &sysctl_sched_features,
301 .maxlen = sizeof(unsigned int),
302 .mode = 0644,
303 .proc_handler = &proc_dointvec,
304 },
305#endif
287#ifdef CONFIG_PROVE_LOCKING 306#ifdef CONFIG_PROVE_LOCKING
288 { 307 {
289 .ctl_name = CTL_UNNUMBERED, 308 .ctl_name = CTL_UNNUMBERED,
@@ -305,15 +324,6 @@ static ctl_table kern_table[] = {
305 }, 324 },
306#endif 325#endif
307 { 326 {
308 .ctl_name = CTL_UNNUMBERED,
309 .procname = "sched_features",
310 .data = &sysctl_sched_features,
311 .maxlen = sizeof(unsigned int),
312 .mode = 0644,
313 .proc_handler = &proc_dointvec,
314 },
315#endif
316 {
317 .ctl_name = KERN_PANIC, 327 .ctl_name = KERN_PANIC,
318 .procname = "panic", 328 .procname = "panic",
319 .data = &panic_timeout, 329 .data = &panic_timeout,
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 58e5c152a6bb..e080d1d744cc 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -635,7 +635,7 @@ int keventd_up(void)
635int current_is_keventd(void) 635int current_is_keventd(void)
636{ 636{
637 struct cpu_workqueue_struct *cwq; 637 struct cpu_workqueue_struct *cwq;
638 int cpu = smp_processor_id(); /* preempt-safe: keventd is per-cpu */ 638 int cpu = raw_smp_processor_id(); /* preempt-safe: keventd is per-cpu */
639 int ret = 0; 639 int ret = 0;
640 640
641 BUG_ON(!keventd_wq); 641 BUG_ON(!keventd_wq);
diff --git a/lib/Kconfig b/lib/Kconfig
index e5c2c514174a..ba3d104994d9 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -138,4 +138,7 @@ config HAS_DMA
138 depends on !NO_DMA 138 depends on !NO_DMA
139 default y 139 default y
140 140
141config CHECK_SIGNATURE
142 bool
143
141endmenu 144endmenu
diff --git a/lib/Makefile b/lib/Makefile
index d9e5f1cd0bfb..6b0ba8cf4e5f 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -21,7 +21,8 @@ CFLAGS_kobject_uevent.o += -DDEBUG
21endif 21endif
22 22
23obj-$(CONFIG_GENERIC_IOMAP) += iomap.o 23obj-$(CONFIG_GENERIC_IOMAP) += iomap.o
24obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o devres.o check_signature.o 24obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o devres.o
25obj-$(CONFIG_CHECK_SIGNATURE) += check_signature.o
25obj-$(CONFIG_DEBUG_LOCKING_API_SELFTESTS) += locking-selftest.o 26obj-$(CONFIG_DEBUG_LOCKING_API_SELFTESTS) += locking-selftest.o
26obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o 27obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o
27lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o 28lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
diff --git a/lib/iomap.c b/lib/iomap.c
index a57d262a5ed9..864f2ec1966e 100644
--- a/lib/iomap.c
+++ b/lib/iomap.c
@@ -240,7 +240,20 @@ void ioport_unmap(void __iomem *addr)
240EXPORT_SYMBOL(ioport_map); 240EXPORT_SYMBOL(ioport_map);
241EXPORT_SYMBOL(ioport_unmap); 241EXPORT_SYMBOL(ioport_unmap);
242 242
243/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */ 243/**
244 * pci_iomap - create a virtual mapping cookie for a PCI BAR
245 * @dev: PCI device that owns the BAR
246 * @bar: BAR number
247 * @maxlen: length of the memory to map
248 *
249 * Using this function you will get a __iomem address to your device BAR.
250 * You can access it using ioread*() and iowrite*(). These functions hide
251 * the details if this is a MMIO or PIO address space and will just do what
252 * you expect from them in the correct way.
253 *
254 * @maxlen specifies the maximum length to map. If you want to get access to
255 * the complete BAR without checking for its length first, pass %0 here.
256 * */
244void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen) 257void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)
245{ 258{
246 unsigned long start = pci_resource_start(dev, bar); 259 unsigned long start = pci_resource_start(dev, bar);
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index d7ca59d66c59..de4cf458d6e1 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -643,7 +643,7 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,
643 spin_unlock(&mm->page_table_lock); 643 spin_unlock(&mm->page_table_lock);
644 ret = hugetlb_fault(mm, vma, vaddr, 0); 644 ret = hugetlb_fault(mm, vma, vaddr, 0);
645 spin_lock(&mm->page_table_lock); 645 spin_lock(&mm->page_table_lock);
646 if (!(ret & VM_FAULT_MAJOR)) 646 if (!(ret & VM_FAULT_ERROR))
647 continue; 647 continue;
648 648
649 remainder = 0; 649 remainder = 0;
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 71b84b45154a..172abffeb2e3 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -149,7 +149,7 @@ static struct zonelist *bind_zonelist(nodemask_t *nodes)
149 lower zones etc. Avoid empty zones because the memory allocator 149 lower zones etc. Avoid empty zones because the memory allocator
150 doesn't like them. If you implement node hot removal you 150 doesn't like them. If you implement node hot removal you
151 have to fix that. */ 151 have to fix that. */
152 k = policy_zone; 152 k = MAX_NR_ZONES - 1;
153 while (1) { 153 while (1) {
154 for_each_node_mask(nd, *nodes) { 154 for_each_node_mask(nd, *nodes) {
155 struct zone *z = &NODE_DATA(nd)->node_zones[k]; 155 struct zone *z = &NODE_DATA(nd)->node_zones[k];
diff --git a/mm/mmap.c b/mm/mmap.c
index b6537211b9cc..0d40e66c841b 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -93,7 +93,7 @@ atomic_t vm_committed_space = ATOMIC_INIT(0);
93 * Note this is a helper function intended to be used by LSMs which 93 * Note this is a helper function intended to be used by LSMs which
94 * wish to use this logic. 94 * wish to use this logic.
95 */ 95 */
96int __vm_enough_memory(long pages, int cap_sys_admin) 96int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin)
97{ 97{
98 unsigned long free, allowed; 98 unsigned long free, allowed;
99 99
@@ -166,7 +166,7 @@ int __vm_enough_memory(long pages, int cap_sys_admin)
166 166
167 /* Don't let a single process grow too big: 167 /* Don't let a single process grow too big:
168 leave 3% of the size of this process for other processes */ 168 leave 3% of the size of this process for other processes */
169 allowed -= current->mm->total_vm / 32; 169 allowed -= mm->total_vm / 32;
170 170
171 /* 171 /*
172 * cast `allowed' as a signed long because vm_committed_space 172 * cast `allowed' as a signed long because vm_committed_space
@@ -2077,7 +2077,7 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
2077 if (__vma && __vma->vm_start < vma->vm_end) 2077 if (__vma && __vma->vm_start < vma->vm_end)
2078 return -ENOMEM; 2078 return -ENOMEM;
2079 if ((vma->vm_flags & VM_ACCOUNT) && 2079 if ((vma->vm_flags & VM_ACCOUNT) &&
2080 security_vm_enough_memory(vma_pages(vma))) 2080 security_vm_enough_memory_mm(mm, vma_pages(vma)))
2081 return -ENOMEM; 2081 return -ENOMEM;
2082 vma_link(mm, vma, prev, rb_link, rb_parent); 2082 vma_link(mm, vma, prev, rb_link, rb_parent);
2083 return 0; 2083 return 0;
diff --git a/mm/nommu.c b/mm/nommu.c
index 9eef6a398555..8ed0cb43118a 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -1270,7 +1270,7 @@ EXPORT_SYMBOL(get_unmapped_area);
1270 * Note this is a helper function intended to be used by LSMs which 1270 * Note this is a helper function intended to be used by LSMs which
1271 * wish to use this logic. 1271 * wish to use this logic.
1272 */ 1272 */
1273int __vm_enough_memory(long pages, int cap_sys_admin) 1273int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin)
1274{ 1274{
1275 unsigned long free, allowed; 1275 unsigned long free, allowed;
1276 1276
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 3da85b81dabb..6427653023aa 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1157,6 +1157,7 @@ get_page_from_freelist(gfp_t gfp_mask, unsigned int order,
1157 nodemask_t *allowednodes = NULL;/* zonelist_cache approximation */ 1157 nodemask_t *allowednodes = NULL;/* zonelist_cache approximation */
1158 int zlc_active = 0; /* set if using zonelist_cache */ 1158 int zlc_active = 0; /* set if using zonelist_cache */
1159 int did_zlc_setup = 0; /* just call zlc_setup() one time */ 1159 int did_zlc_setup = 0; /* just call zlc_setup() one time */
1160 enum zone_type highest_zoneidx = -1; /* Gets set for policy zonelists */
1160 1161
1161zonelist_scan: 1162zonelist_scan:
1162 /* 1163 /*
@@ -1166,6 +1167,18 @@ zonelist_scan:
1166 z = zonelist->zones; 1167 z = zonelist->zones;
1167 1168
1168 do { 1169 do {
1170 /*
1171 * In NUMA, this could be a policy zonelist which contains
1172 * zones that may not be allowed by the current gfp_mask.
1173 * Check the zone is allowed by the current flags
1174 */
1175 if (unlikely(alloc_should_filter_zonelist(zonelist))) {
1176 if (highest_zoneidx == -1)
1177 highest_zoneidx = gfp_zone(gfp_mask);
1178 if (zone_idx(*z) > highest_zoneidx)
1179 continue;
1180 }
1181
1169 if (NUMA_BUILD && zlc_active && 1182 if (NUMA_BUILD && zlc_active &&
1170 !zlc_zone_worth_trying(zonelist, z, allowednodes)) 1183 !zlc_zone_worth_trying(zonelist, z, allowednodes))
1171 continue; 1184 continue;
diff --git a/mm/slab.c b/mm/slab.c
index a684778b2b41..6f6abef83a1a 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -883,6 +883,7 @@ static void __slab_error(const char *function, struct kmem_cache *cachep,
883 */ 883 */
884 884
885static int use_alien_caches __read_mostly = 1; 885static int use_alien_caches __read_mostly = 1;
886static int numa_platform __read_mostly = 1;
886static int __init noaliencache_setup(char *s) 887static int __init noaliencache_setup(char *s)
887{ 888{
888 use_alien_caches = 0; 889 use_alien_caches = 0;
@@ -1399,8 +1400,10 @@ void __init kmem_cache_init(void)
1399 int order; 1400 int order;
1400 int node; 1401 int node;
1401 1402
1402 if (num_possible_nodes() == 1) 1403 if (num_possible_nodes() == 1) {
1403 use_alien_caches = 0; 1404 use_alien_caches = 0;
1405 numa_platform = 0;
1406 }
1404 1407
1405 for (i = 0; i < NUM_INIT_LISTS; i++) { 1408 for (i = 0; i < NUM_INIT_LISTS; i++) {
1406 kmem_list3_init(&initkmem_list3[i]); 1409 kmem_list3_init(&initkmem_list3[i]);
@@ -3558,7 +3561,14 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp)
3558 check_irq_off(); 3561 check_irq_off();
3559 objp = cache_free_debugcheck(cachep, objp, __builtin_return_address(0)); 3562 objp = cache_free_debugcheck(cachep, objp, __builtin_return_address(0));
3560 3563
3561 if (cache_free_alien(cachep, objp)) 3564 /*
3565 * Skip calling cache_free_alien() when the platform is not numa.
3566 * This will avoid cache misses that happen while accessing slabp (which
3567 * is per page memory reference) to get nodeid. Instead use a global
3568 * variable to skip the call, which is mostly likely to be present in
3569 * the cache.
3570 */
3571 if (numa_platform && cache_free_alien(cachep, objp))
3562 return; 3572 return;
3563 3573
3564 if (likely(ac->avail < ac->limit)) { 3574 if (likely(ac->avail < ac->limit)) {
diff --git a/mm/slub.c b/mm/slub.c
index 69d02e3e439e..04151da399c6 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1877,9 +1877,16 @@ static struct kmem_cache_node * __init early_kmem_cache_node_alloc(gfp_t gfpflag
1877 1877
1878 BUG_ON(kmalloc_caches->size < sizeof(struct kmem_cache_node)); 1878 BUG_ON(kmalloc_caches->size < sizeof(struct kmem_cache_node));
1879 1879
1880 page = new_slab(kmalloc_caches, gfpflags | GFP_THISNODE, node); 1880 page = new_slab(kmalloc_caches, gfpflags, node);
1881 1881
1882 BUG_ON(!page); 1882 BUG_ON(!page);
1883 if (page_to_nid(page) != node) {
1884 printk(KERN_ERR "SLUB: Unable to allocate memory from "
1885 "node %d\n", node);
1886 printk(KERN_ERR "SLUB: Allocating a useless per node structure "
1887 "in order to be able to continue\n");
1888 }
1889
1883 n = page->freelist; 1890 n = page->freelist;
1884 BUG_ON(!n); 1891 BUG_ON(!n);
1885 page->freelist = get_freepointer(kmalloc_caches, n); 1892 page->freelist = get_freepointer(kmalloc_caches, n);
@@ -3112,7 +3119,7 @@ static int list_locations(struct kmem_cache *s, char *buf,
3112 unsigned long flags; 3119 unsigned long flags;
3113 struct page *page; 3120 struct page *page;
3114 3121
3115 if (!atomic_read(&n->nr_slabs)) 3122 if (!atomic_long_read(&n->nr_slabs))
3116 continue; 3123 continue;
3117 3124
3118 spin_lock_irqsave(&n->list_lock, flags); 3125 spin_lock_irqsave(&n->list_lock, flags);
@@ -3247,7 +3254,7 @@ static unsigned long slab_objects(struct kmem_cache *s,
3247 } 3254 }
3248 3255
3249 if (flags & SO_FULL) { 3256 if (flags & SO_FULL) {
3250 int full_slabs = atomic_read(&n->nr_slabs) 3257 int full_slabs = atomic_long_read(&n->nr_slabs)
3251 - per_cpu[node] 3258 - per_cpu[node]
3252 - n->nr_partial; 3259 - n->nr_partial;
3253 3260
@@ -3283,7 +3290,7 @@ static int any_slab_objects(struct kmem_cache *s)
3283 for_each_node(node) { 3290 for_each_node(node) {
3284 struct kmem_cache_node *n = get_node(s, node); 3291 struct kmem_cache_node *n = get_node(s, node);
3285 3292
3286 if (n->nr_partial || atomic_read(&n->nr_slabs)) 3293 if (n->nr_partial || atomic_long_read(&n->nr_slabs))
3287 return 1; 3294 return 1;
3288 } 3295 }
3289 return 0; 3296 return 0;
diff --git a/mm/sparse.c b/mm/sparse.c
index 3047bf06c1f3..239f5a720d38 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -41,6 +41,15 @@ int page_to_nid(struct page *page)
41 return section_to_node_table[page_to_section(page)]; 41 return section_to_node_table[page_to_section(page)];
42} 42}
43EXPORT_SYMBOL(page_to_nid); 43EXPORT_SYMBOL(page_to_nid);
44
45static void set_section_nid(unsigned long section_nr, int nid)
46{
47 section_to_node_table[section_nr] = nid;
48}
49#else /* !NODE_NOT_IN_PAGE_FLAGS */
50static inline void set_section_nid(unsigned long section_nr, int nid)
51{
52}
44#endif 53#endif
45 54
46#ifdef CONFIG_SPARSEMEM_EXTREME 55#ifdef CONFIG_SPARSEMEM_EXTREME
@@ -68,10 +77,6 @@ static int __meminit sparse_index_init(unsigned long section_nr, int nid)
68 struct mem_section *section; 77 struct mem_section *section;
69 int ret = 0; 78 int ret = 0;
70 79
71#ifdef NODE_NOT_IN_PAGE_FLAGS
72 section_to_node_table[section_nr] = nid;
73#endif
74
75 if (mem_section[root]) 80 if (mem_section[root])
76 return -EEXIST; 81 return -EEXIST;
77 82
@@ -148,6 +153,7 @@ void __init memory_present(int nid, unsigned long start, unsigned long end)
148 struct mem_section *ms; 153 struct mem_section *ms;
149 154
150 sparse_index_init(section, nid); 155 sparse_index_init(section, nid);
156 set_section_nid(section, nid);
151 157
152 ms = __nr_to_section(section); 158 ms = __nr_to_section(section);
153 if (!ms->section_mem_map) 159 if (!ms->section_mem_map)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index d419e10e3daa..a6e65d024995 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -271,6 +271,12 @@ static void handle_write_error(struct address_space *mapping,
271 unlock_page(page); 271 unlock_page(page);
272} 272}
273 273
274/* Request for sync pageout. */
275enum pageout_io {
276 PAGEOUT_IO_ASYNC,
277 PAGEOUT_IO_SYNC,
278};
279
274/* possible outcome of pageout() */ 280/* possible outcome of pageout() */
275typedef enum { 281typedef enum {
276 /* failed to write page out, page is locked */ 282 /* failed to write page out, page is locked */
@@ -287,7 +293,8 @@ typedef enum {
287 * pageout is called by shrink_page_list() for each dirty page. 293 * pageout is called by shrink_page_list() for each dirty page.
288 * Calls ->writepage(). 294 * Calls ->writepage().
289 */ 295 */
290static pageout_t pageout(struct page *page, struct address_space *mapping) 296static pageout_t pageout(struct page *page, struct address_space *mapping,
297 enum pageout_io sync_writeback)
291{ 298{
292 /* 299 /*
293 * If the page is dirty, only perform writeback if that write 300 * If the page is dirty, only perform writeback if that write
@@ -346,6 +353,15 @@ static pageout_t pageout(struct page *page, struct address_space *mapping)
346 ClearPageReclaim(page); 353 ClearPageReclaim(page);
347 return PAGE_ACTIVATE; 354 return PAGE_ACTIVATE;
348 } 355 }
356
357 /*
358 * Wait on writeback if requested to. This happens when
359 * direct reclaiming a large contiguous area and the
360 * first attempt to free a range of pages fails.
361 */
362 if (PageWriteback(page) && sync_writeback == PAGEOUT_IO_SYNC)
363 wait_on_page_writeback(page);
364
349 if (!PageWriteback(page)) { 365 if (!PageWriteback(page)) {
350 /* synchronous write or broken a_ops? */ 366 /* synchronous write or broken a_ops? */
351 ClearPageReclaim(page); 367 ClearPageReclaim(page);
@@ -423,7 +439,8 @@ cannot_free:
423 * shrink_page_list() returns the number of reclaimed pages 439 * shrink_page_list() returns the number of reclaimed pages
424 */ 440 */
425static unsigned long shrink_page_list(struct list_head *page_list, 441static unsigned long shrink_page_list(struct list_head *page_list,
426 struct scan_control *sc) 442 struct scan_control *sc,
443 enum pageout_io sync_writeback)
427{ 444{
428 LIST_HEAD(ret_pages); 445 LIST_HEAD(ret_pages);
429 struct pagevec freed_pvec; 446 struct pagevec freed_pvec;
@@ -458,8 +475,23 @@ static unsigned long shrink_page_list(struct list_head *page_list,
458 if (page_mapped(page) || PageSwapCache(page)) 475 if (page_mapped(page) || PageSwapCache(page))
459 sc->nr_scanned++; 476 sc->nr_scanned++;
460 477
461 if (PageWriteback(page)) 478 may_enter_fs = (sc->gfp_mask & __GFP_FS) ||
462 goto keep_locked; 479 (PageSwapCache(page) && (sc->gfp_mask & __GFP_IO));
480
481 if (PageWriteback(page)) {
482 /*
483 * Synchronous reclaim is performed in two passes,
484 * first an asynchronous pass over the list to
485 * start parallel writeback, and a second synchronous
486 * pass to wait for the IO to complete. Wait here
487 * for any page for which writeback has already
488 * started.
489 */
490 if (sync_writeback == PAGEOUT_IO_SYNC && may_enter_fs)
491 wait_on_page_writeback(page);
492 else
493 goto keep_locked;
494 }
463 495
464 referenced = page_referenced(page, 1); 496 referenced = page_referenced(page, 1);
465 /* In active use or really unfreeable? Activate it. */ 497 /* In active use or really unfreeable? Activate it. */
@@ -478,8 +510,6 @@ static unsigned long shrink_page_list(struct list_head *page_list,
478#endif /* CONFIG_SWAP */ 510#endif /* CONFIG_SWAP */
479 511
480 mapping = page_mapping(page); 512 mapping = page_mapping(page);
481 may_enter_fs = (sc->gfp_mask & __GFP_FS) ||
482 (PageSwapCache(page) && (sc->gfp_mask & __GFP_IO));
483 513
484 /* 514 /*
485 * The page is mapped into the page tables of one or more 515 * The page is mapped into the page tables of one or more
@@ -505,7 +535,7 @@ static unsigned long shrink_page_list(struct list_head *page_list,
505 goto keep_locked; 535 goto keep_locked;
506 536
507 /* Page is dirty, try to write it out here */ 537 /* Page is dirty, try to write it out here */
508 switch(pageout(page, mapping)) { 538 switch (pageout(page, mapping, sync_writeback)) {
509 case PAGE_KEEP: 539 case PAGE_KEEP:
510 goto keep_locked; 540 goto keep_locked;
511 case PAGE_ACTIVATE: 541 case PAGE_ACTIVATE:
@@ -777,6 +807,7 @@ static unsigned long shrink_inactive_list(unsigned long max_scan,
777 (sc->order > PAGE_ALLOC_COSTLY_ORDER)? 807 (sc->order > PAGE_ALLOC_COSTLY_ORDER)?
778 ISOLATE_BOTH : ISOLATE_INACTIVE); 808 ISOLATE_BOTH : ISOLATE_INACTIVE);
779 nr_active = clear_active_flags(&page_list); 809 nr_active = clear_active_flags(&page_list);
810 __count_vm_events(PGDEACTIVATE, nr_active);
780 811
781 __mod_zone_page_state(zone, NR_ACTIVE, -nr_active); 812 __mod_zone_page_state(zone, NR_ACTIVE, -nr_active);
782 __mod_zone_page_state(zone, NR_INACTIVE, 813 __mod_zone_page_state(zone, NR_INACTIVE,
@@ -785,7 +816,29 @@ static unsigned long shrink_inactive_list(unsigned long max_scan,
785 spin_unlock_irq(&zone->lru_lock); 816 spin_unlock_irq(&zone->lru_lock);
786 817
787 nr_scanned += nr_scan; 818 nr_scanned += nr_scan;
788 nr_freed = shrink_page_list(&page_list, sc); 819 nr_freed = shrink_page_list(&page_list, sc, PAGEOUT_IO_ASYNC);
820
821 /*
822 * If we are direct reclaiming for contiguous pages and we do
823 * not reclaim everything in the list, try again and wait
824 * for IO to complete. This will stall high-order allocations
825 * but that should be acceptable to the caller
826 */
827 if (nr_freed < nr_taken && !current_is_kswapd() &&
828 sc->order > PAGE_ALLOC_COSTLY_ORDER) {
829 congestion_wait(WRITE, HZ/10);
830
831 /*
832 * The attempt at page out may have made some
833 * of the pages active, mark them inactive again.
834 */
835 nr_active = clear_active_flags(&page_list);
836 count_vm_events(PGDEACTIVATE, nr_active);
837
838 nr_freed += shrink_page_list(&page_list, sc,
839 PAGEOUT_IO_SYNC);
840 }
841
789 nr_reclaimed += nr_freed; 842 nr_reclaimed += nr_freed;
790 local_irq_disable(); 843 local_irq_disable();
791 if (current_is_kswapd()) { 844 if (current_is_kswapd()) {
diff --git a/net/802/psnap.c b/net/802/psnap.c
index 04ee43e7538f..31128cb92a23 100644
--- a/net/802/psnap.c
+++ b/net/802/psnap.c
@@ -55,6 +55,9 @@ static int snap_rcv(struct sk_buff *skb, struct net_device *dev,
55 .type = __constant_htons(ETH_P_SNAP), 55 .type = __constant_htons(ETH_P_SNAP),
56 }; 56 };
57 57
58 if (unlikely(!pskb_may_pull(skb, 5)))
59 goto drop;
60
58 rcu_read_lock(); 61 rcu_read_lock();
59 proto = find_snap_client(skb_transport_header(skb)); 62 proto = find_snap_client(skb_transport_header(skb));
60 if (proto) { 63 if (proto) {
@@ -62,14 +65,18 @@ static int snap_rcv(struct sk_buff *skb, struct net_device *dev,
62 skb->transport_header += 5; 65 skb->transport_header += 5;
63 skb_pull_rcsum(skb, 5); 66 skb_pull_rcsum(skb, 5);
64 rc = proto->rcvfunc(skb, dev, &snap_packet_type, orig_dev); 67 rc = proto->rcvfunc(skb, dev, &snap_packet_type, orig_dev);
65 } else {
66 skb->sk = NULL;
67 kfree_skb(skb);
68 rc = 1;
69 } 68 }
70
71 rcu_read_unlock(); 69 rcu_read_unlock();
70
71 if (unlikely(!proto))
72 goto drop;
73
74out:
72 return rc; 75 return rc;
76
77drop:
78 kfree_skb(skb);
79 goto out;
73} 80}
74 81
75/* 82/*
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 4bab322c9f8f..328759c32d61 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -116,12 +116,22 @@ int vlan_skb_recv(struct sk_buff *skb, struct net_device *dev,
116 struct packet_type* ptype, struct net_device *orig_dev) 116 struct packet_type* ptype, struct net_device *orig_dev)
117{ 117{
118 unsigned char *rawp = NULL; 118 unsigned char *rawp = NULL;
119 struct vlan_hdr *vhdr = (struct vlan_hdr *)(skb->data); 119 struct vlan_hdr *vhdr;
120 unsigned short vid; 120 unsigned short vid;
121 struct net_device_stats *stats; 121 struct net_device_stats *stats;
122 unsigned short vlan_TCI; 122 unsigned short vlan_TCI;
123 __be16 proto; 123 __be16 proto;
124 124
125 if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL)
126 return -1;
127
128 if (unlikely(!pskb_may_pull(skb, VLAN_HLEN))) {
129 kfree_skb(skb);
130 return -1;
131 }
132
133 vhdr = (struct vlan_hdr *)(skb->data);
134
125 /* vlan_TCI = ntohs(get_unaligned(&vhdr->h_vlan_TCI)); */ 135 /* vlan_TCI = ntohs(get_unaligned(&vhdr->h_vlan_TCI)); */
126 vlan_TCI = ntohs(vhdr->h_vlan_TCI); 136 vlan_TCI = ntohs(vhdr->h_vlan_TCI);
127 137
diff --git a/net/8021q/vlanproc.c b/net/8021q/vlanproc.c
index c0040c9064a1..bd08aa090763 100644
--- a/net/8021q/vlanproc.c
+++ b/net/8021q/vlanproc.c
@@ -319,7 +319,7 @@ static int vlandev_seq_show(struct seq_file *seq, void *offset)
319 static const char fmt[] = "%30s %12lu\n"; 319 static const char fmt[] = "%30s %12lu\n";
320 int i; 320 int i;
321 321
322 if ((vlandev == NULL) || (!(vlandev->priv_flags & IFF_802_1Q_VLAN))) 322 if (!(vlandev->priv_flags & IFF_802_1Q_VLAN))
323 return 0; 323 return 0;
324 324
325 seq_printf(seq, "%s VID: %d REORDER_HDR: %i dev->priv_flags: %hx\n", 325 seq_printf(seq, "%s VID: %d REORDER_HDR: %i dev->priv_flags: %hx\n",
diff --git a/net/9p/conv.c b/net/9p/conv.c
index f2a041cb508a..d979d958ea19 100644
--- a/net/9p/conv.c
+++ b/net/9p/conv.c
@@ -796,6 +796,7 @@ struct p9_fcall *p9_create_twrite_u(u32 fid, u64 offset, u32 count,
796 if (err) { 796 if (err) {
797 kfree(fc); 797 kfree(fc);
798 fc = ERR_PTR(err); 798 fc = ERR_PTR(err);
799 goto error;
799 } 800 }
800 801
801 if (buf_check_overflow(bufp)) { 802 if (buf_check_overflow(bufp)) {
diff --git a/net/9p/mux.c b/net/9p/mux.c
index acb038810f39..5d70558c4c61 100644
--- a/net/9p/mux.c
+++ b/net/9p/mux.c
@@ -288,9 +288,10 @@ struct p9_conn *p9_conn_create(struct p9_transport *trans, int msize,
288 m->extended = extended; 288 m->extended = extended;
289 m->trans = trans; 289 m->trans = trans;
290 m->tagpool = p9_idpool_create(); 290 m->tagpool = p9_idpool_create();
291 if (!m->tagpool) { 291 if (IS_ERR(m->tagpool)) {
292 mtmp = ERR_PTR(-ENOMEM);
292 kfree(m); 293 kfree(m);
293 return ERR_PTR(PTR_ERR(m->tagpool)); 294 return mtmp;
294 } 295 }
295 296
296 m->err = 0; 297 m->err = 0;
@@ -308,8 +309,10 @@ struct p9_conn *p9_conn_create(struct p9_transport *trans, int msize,
308 memset(&m->poll_waddr, 0, sizeof(m->poll_waddr)); 309 memset(&m->poll_waddr, 0, sizeof(m->poll_waddr));
309 m->poll_task = NULL; 310 m->poll_task = NULL;
310 n = p9_mux_poll_start(m); 311 n = p9_mux_poll_start(m);
311 if (n) 312 if (n) {
313 kfree(m);
312 return ERR_PTR(n); 314 return ERR_PTR(n);
315 }
313 316
314 n = trans->poll(trans, &m->pt); 317 n = trans->poll(trans, &m->pt);
315 if (n & POLLIN) { 318 if (n & POLLIN) {
diff --git a/net/ax25/ax25_iface.c b/net/ax25/ax25_iface.c
index 16be0c14780a..8443af57a374 100644
--- a/net/ax25/ax25_iface.c
+++ b/net/ax25/ax25_iface.c
@@ -69,7 +69,6 @@ void ax25_protocol_release(unsigned int pid)
69 if (protocol->pid == pid) { 69 if (protocol->pid == pid) {
70 protocol_list = protocol->next; 70 protocol_list = protocol->next;
71 write_unlock_bh(&protocol_list_lock); 71 write_unlock_bh(&protocol_list_lock);
72 kfree(protocol);
73 return; 72 return;
74 } 73 }
75 74
@@ -78,7 +77,6 @@ void ax25_protocol_release(unsigned int pid)
78 s = protocol->next; 77 s = protocol->next;
79 protocol->next = protocol->next->next; 78 protocol->next = protocol->next->next;
80 write_unlock_bh(&protocol_list_lock); 79 write_unlock_bh(&protocol_list_lock);
81 kfree(s);
82 return; 80 return;
83 } 81 }
84 82
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
index fa779874b9dd..3ee2022928e3 100644
--- a/net/bridge/br_netfilter.c
+++ b/net/bridge/br_netfilter.c
@@ -509,8 +509,14 @@ static unsigned int br_nf_pre_routing(unsigned int hook, struct sk_buff **pskb,
509 int (*okfn)(struct sk_buff *)) 509 int (*okfn)(struct sk_buff *))
510{ 510{
511 struct iphdr *iph; 511 struct iphdr *iph;
512 __u32 len;
513 struct sk_buff *skb = *pskb; 512 struct sk_buff *skb = *pskb;
513 __u32 len = nf_bridge_encap_header_len(skb);
514
515 if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL)
516 return NF_STOLEN;
517
518 if (unlikely(!pskb_may_pull(skb, len)))
519 goto out;
514 520
515 if (skb->protocol == htons(ETH_P_IPV6) || IS_VLAN_IPV6(skb) || 521 if (skb->protocol == htons(ETH_P_IPV6) || IS_VLAN_IPV6(skb) ||
516 IS_PPPOE_IPV6(skb)) { 522 IS_PPPOE_IPV6(skb)) {
@@ -518,8 +524,6 @@ static unsigned int br_nf_pre_routing(unsigned int hook, struct sk_buff **pskb,
518 if (!brnf_call_ip6tables) 524 if (!brnf_call_ip6tables)
519 return NF_ACCEPT; 525 return NF_ACCEPT;
520#endif 526#endif
521 if ((skb = skb_share_check(*pskb, GFP_ATOMIC)) == NULL)
522 goto out;
523 nf_bridge_pull_encap_header_rcsum(skb); 527 nf_bridge_pull_encap_header_rcsum(skb);
524 return br_nf_pre_routing_ipv6(hook, skb, in, out, okfn); 528 return br_nf_pre_routing_ipv6(hook, skb, in, out, okfn);
525 } 529 }
@@ -532,8 +536,6 @@ static unsigned int br_nf_pre_routing(unsigned int hook, struct sk_buff **pskb,
532 !IS_PPPOE_IP(skb)) 536 !IS_PPPOE_IP(skb))
533 return NF_ACCEPT; 537 return NF_ACCEPT;
534 538
535 if ((skb = skb_share_check(*pskb, GFP_ATOMIC)) == NULL)
536 goto out;
537 nf_bridge_pull_encap_header_rcsum(skb); 539 nf_bridge_pull_encap_header_rcsum(skb);
538 540
539 if (!pskb_may_pull(skb, sizeof(struct iphdr))) 541 if (!pskb_may_pull(skb, sizeof(struct iphdr)))
diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c
index 1ea2f86f7683..1a430eccec9b 100644
--- a/net/bridge/br_stp_if.c
+++ b/net/bridge/br_stp_if.c
@@ -132,7 +132,7 @@ static void br_stp_start(struct net_bridge *br)
132 } else { 132 } else {
133 br->stp_enabled = BR_KERNEL_STP; 133 br->stp_enabled = BR_KERNEL_STP;
134 printk(KERN_INFO "%s: starting userspace STP failed, " 134 printk(KERN_INFO "%s: starting userspace STP failed, "
135 "staring kernel STP\n", br->dev->name); 135 "starting kernel STP\n", br->dev->name);
136 136
137 /* To start timers on any ports left in blocking */ 137 /* To start timers on any ports left in blocking */
138 spin_lock_bh(&br->lock); 138 spin_lock_bh(&br->lock);
diff --git a/net/bridge/br_sysfs_br.c b/net/bridge/br_sysfs_br.c
index 4f42263e0a8a..c65f54e0e27f 100644
--- a/net/bridge/br_sysfs_br.c
+++ b/net/bridge/br_sysfs_br.c
@@ -147,20 +147,27 @@ static ssize_t show_stp_state(struct device *d,
147 return sprintf(buf, "%d\n", br->stp_enabled); 147 return sprintf(buf, "%d\n", br->stp_enabled);
148} 148}
149 149
150static void set_stp_state(struct net_bridge *br, unsigned long val)
151{
152 rtnl_lock();
153 spin_unlock_bh(&br->lock);
154 br_stp_set_enabled(br, val);
155 spin_lock_bh(&br->lock);
156 rtnl_unlock();
157}
158 150
159static ssize_t store_stp_state(struct device *d, 151static ssize_t store_stp_state(struct device *d,
160 struct device_attribute *attr, const char *buf, 152 struct device_attribute *attr, const char *buf,
161 size_t len) 153 size_t len)
162{ 154{
163 return store_bridge_parm(d, buf, len, set_stp_state); 155 struct net_bridge *br = to_bridge(d);
156 char *endp;
157 unsigned long val;
158
159 if (!capable(CAP_NET_ADMIN))
160 return -EPERM;
161
162 val = simple_strtoul(buf, &endp, 0);
163 if (endp == buf)
164 return -EINVAL;
165
166 rtnl_lock();
167 br_stp_set_enabled(br, val);
168 rtnl_unlock();
169
170 return len;
164} 171}
165static DEVICE_ATTR(stp_state, S_IRUGO | S_IWUSR, show_stp_state, 172static DEVICE_ATTR(stp_state, S_IRUGO | S_IWUSR, show_stp_state,
166 store_stp_state); 173 store_stp_state);
diff --git a/net/core/dev_mcast.c b/net/core/dev_mcast.c
index 99aece1aeccf..20330c572610 100644
--- a/net/core/dev_mcast.c
+++ b/net/core/dev_mcast.c
@@ -116,11 +116,13 @@ int dev_mc_add(struct net_device *dev, void *addr, int alen, int glbl)
116 */ 116 */
117int dev_mc_sync(struct net_device *to, struct net_device *from) 117int dev_mc_sync(struct net_device *to, struct net_device *from)
118{ 118{
119 struct dev_addr_list *da; 119 struct dev_addr_list *da, *next;
120 int err = 0; 120 int err = 0;
121 121
122 netif_tx_lock_bh(to); 122 netif_tx_lock_bh(to);
123 for (da = from->mc_list; da != NULL; da = da->next) { 123 da = from->mc_list;
124 while (da != NULL) {
125 next = da->next;
124 if (!da->da_synced) { 126 if (!da->da_synced) {
125 err = __dev_addr_add(&to->mc_list, &to->mc_count, 127 err = __dev_addr_add(&to->mc_list, &to->mc_count,
126 da->da_addr, da->da_addrlen, 0); 128 da->da_addr, da->da_addrlen, 0);
@@ -134,6 +136,7 @@ int dev_mc_sync(struct net_device *to, struct net_device *from)
134 __dev_addr_delete(&from->mc_list, &from->mc_count, 136 __dev_addr_delete(&from->mc_list, &from->mc_count,
135 da->da_addr, da->da_addrlen, 0); 137 da->da_addr, da->da_addrlen, 0);
136 } 138 }
139 da = next;
137 } 140 }
138 if (!err) 141 if (!err)
139 __dev_set_rx_mode(to); 142 __dev_set_rx_mode(to);
@@ -156,12 +159,14 @@ EXPORT_SYMBOL(dev_mc_sync);
156 */ 159 */
157void dev_mc_unsync(struct net_device *to, struct net_device *from) 160void dev_mc_unsync(struct net_device *to, struct net_device *from)
158{ 161{
159 struct dev_addr_list *da; 162 struct dev_addr_list *da, *next;
160 163
161 netif_tx_lock_bh(from); 164 netif_tx_lock_bh(from);
162 netif_tx_lock_bh(to); 165 netif_tx_lock_bh(to);
163 166
164 for (da = from->mc_list; da != NULL; da = da->next) { 167 da = from->mc_list;
168 while (da != NULL) {
169 next = da->next;
165 if (!da->da_synced) 170 if (!da->da_synced)
166 continue; 171 continue;
167 __dev_addr_delete(&to->mc_list, &to->mc_count, 172 __dev_addr_delete(&to->mc_list, &to->mc_count,
@@ -169,6 +174,7 @@ void dev_mc_unsync(struct net_device *to, struct net_device *from)
169 da->da_synced = 0; 174 da->da_synced = 0;
170 __dev_addr_delete(&from->mc_list, &from->mc_count, 175 __dev_addr_delete(&from->mc_list, &from->mc_count,
171 da->da_addr, da->da_addrlen, 0); 176 da->da_addr, da->da_addrlen, 0);
177 da = next;
172 } 178 }
173 __dev_set_rx_mode(to); 179 __dev_set_rx_mode(to);
174 180
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index 2ab0a60046a5..c5e059352d43 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -948,7 +948,6 @@ int dev_ethtool(struct ifreq *ifr)
948 return rc; 948 return rc;
949} 949}
950 950
951EXPORT_SYMBOL(dev_ethtool);
952EXPORT_SYMBOL(ethtool_op_get_link); 951EXPORT_SYMBOL(ethtool_op_get_link);
953EXPORT_SYMBOL(ethtool_op_get_sg); 952EXPORT_SYMBOL(ethtool_op_get_sg);
954EXPORT_SYMBOL(ethtool_op_get_tso); 953EXPORT_SYMBOL(ethtool_op_get_tso);
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index ca2a1533138a..f7de8f24d8dd 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -33,6 +33,7 @@
33#include <linux/rtnetlink.h> 33#include <linux/rtnetlink.h>
34#include <linux/random.h> 34#include <linux/random.h>
35#include <linux/string.h> 35#include <linux/string.h>
36#include <linux/log2.h>
36 37
37#define NEIGH_DEBUG 1 38#define NEIGH_DEBUG 1
38 39
@@ -311,7 +312,7 @@ static void neigh_hash_grow(struct neigh_table *tbl, unsigned long new_entries)
311 312
312 NEIGH_CACHE_STAT_INC(tbl, hash_grows); 313 NEIGH_CACHE_STAT_INC(tbl, hash_grows);
313 314
314 BUG_ON(new_entries & (new_entries - 1)); 315 BUG_ON(!is_power_of_2(new_entries));
315 new_hash = neigh_hash_alloc(new_entries); 316 new_hash = neigh_hash_alloc(new_entries);
316 if (!new_hash) 317 if (!new_hash)
317 return; 318 return;
diff --git a/net/dccp/ccids/ccid2.c b/net/dccp/ccids/ccid2.c
index 248d20f4c7c4..d29b88fe723c 100644
--- a/net/dccp/ccids/ccid2.c
+++ b/net/dccp/ccids/ccid2.c
@@ -298,7 +298,7 @@ static void ccid2_hc_tx_packet_sent(struct sock *sk, int more, unsigned int len)
298 int rc; 298 int rc;
299 299
300 ccid2_pr_debug("allocating more space in history\n"); 300 ccid2_pr_debug("allocating more space in history\n");
301 rc = ccid2_hc_tx_alloc_seq(hctx, CCID2_SEQBUF_LEN, GFP_KERNEL); 301 rc = ccid2_hc_tx_alloc_seq(hctx, CCID2_SEQBUF_LEN, gfp_any());
302 BUG_ON(rc); /* XXX what do we do? */ 302 BUG_ON(rc); /* XXX what do we do? */
303 303
304 next = hctx->ccid2hctx_seqh->ccid2s_next; 304 next = hctx->ccid2hctx_seqh->ccid2s_next;
diff --git a/net/econet/af_econet.c b/net/econet/af_econet.c
index b5524f32ac2d..35c96bcc0f32 100644
--- a/net/econet/af_econet.c
+++ b/net/econet/af_econet.c
@@ -1146,6 +1146,9 @@ static void __exit econet_proto_exit(void)
1146 sock_release(udpsock); 1146 sock_release(udpsock);
1147#endif 1147#endif
1148 unregister_netdevice_notifier(&econet_netdev_notifier); 1148 unregister_netdevice_notifier(&econet_netdev_notifier);
1149#ifdef CONFIG_ECONET_NATIVE
1150 dev_remove_pack(&econet_packet_type);
1151#endif
1149 sock_unregister(econet_family_ops.family); 1152 sock_unregister(econet_family_ops.family);
1150 proto_unregister(&econet_proto); 1153 proto_unregister(&econet_proto);
1151} 1154}
diff --git a/net/ipv4/ah4.c b/net/ipv4/ah4.c
index 7a23e59c374a..39f6211f1496 100644
--- a/net/ipv4/ah4.c
+++ b/net/ipv4/ah4.c
@@ -46,7 +46,7 @@ static int ip_clear_mutable_options(struct iphdr *iph, __be32 *daddr)
46 memcpy(daddr, optptr+optlen-4, 4); 46 memcpy(daddr, optptr+optlen-4, 4);
47 /* Fall through */ 47 /* Fall through */
48 default: 48 default:
49 memset(optptr+2, 0, optlen-2); 49 memset(optptr, 0, optlen);
50 } 50 }
51 l -= optlen; 51 l -= optlen;
52 optptr += optlen; 52 optptr += optlen;
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index 4d544573f48a..6b420aedcdcf 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -625,6 +625,10 @@ static int do_ip_setsockopt(struct sock *sk, int level,
625 { 625 {
626 struct ip_mreqn mreq; 626 struct ip_mreqn mreq;
627 627
628 err = -EPROTO;
629 if (inet_sk(sk)->is_icsk)
630 break;
631
628 if (optlen < sizeof(struct ip_mreq)) 632 if (optlen < sizeof(struct ip_mreq))
629 goto e_inval; 633 goto e_inval;
630 err = -EFAULT; 634 err = -EFAULT;
diff --git a/net/ipv4/netfilter/nf_nat_sip.c b/net/ipv4/netfilter/nf_nat_sip.c
index a889ec3ec83a..e14d41976c27 100644
--- a/net/ipv4/netfilter/nf_nat_sip.c
+++ b/net/ipv4/netfilter/nf_nat_sip.c
@@ -104,7 +104,7 @@ static unsigned int ip_nat_sip(struct sk_buff **pskb,
104 dataoff = ip_hdrlen(*pskb) + sizeof(struct udphdr); 104 dataoff = ip_hdrlen(*pskb) + sizeof(struct udphdr);
105 datalen = (*pskb)->len - dataoff; 105 datalen = (*pskb)->len - dataoff;
106 if (datalen < sizeof("SIP/2.0") - 1) 106 if (datalen < sizeof("SIP/2.0") - 1)
107 return NF_DROP; 107 return NF_ACCEPT;
108 108
109 addr_map_init(ct, &map); 109 addr_map_init(ct, &map);
110 110
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index f030435e0eb4..9785df37a65f 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -755,7 +755,15 @@ void tcp_update_metrics(struct sock *sk)
755 } 755 }
756} 756}
757 757
758/* Numbers are taken from RFC2414. */ 758/* Numbers are taken from RFC3390.
759 *
760 * John Heffner states:
761 *
762 * The RFC specifies a window of no more than 4380 bytes
763 * unless 2*MSS > 4380. Reading the pseudocode in the RFC
764 * is a bit misleading because they use a clamp at 4380 bytes
765 * rather than use a multiplier in the relevant range.
766 */
759__u32 tcp_init_cwnd(struct tcp_sock *tp, struct dst_entry *dst) 767__u32 tcp_init_cwnd(struct tcp_sock *tp, struct dst_entry *dst)
760{ 768{
761 __u32 cwnd = (dst ? dst_metric(dst, RTAX_INITCWND) : 0); 769 __u32 cwnd = (dst ? dst_metric(dst, RTAX_INITCWND) : 0);
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 50d86e94d9ed..5dead399fe64 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -794,7 +794,7 @@ slow_path:
794 /* 794 /*
795 * Copy a block of the IP datagram. 795 * Copy a block of the IP datagram.
796 */ 796 */
797 if (skb_copy_bits(skb, ptr, skb_transport_header(skb), len)) 797 if (skb_copy_bits(skb, ptr, skb_transport_header(frag), len))
798 BUG(); 798 BUG();
799 left -= len; 799 left -= len;
800 800
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index d6846393182d..6b038aa72e88 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -554,6 +554,10 @@ done:
554 { 554 {
555 struct ipv6_mreq mreq; 555 struct ipv6_mreq mreq;
556 556
557 retv = -EPROTO;
558 if (inet_sk(sk)->is_icsk)
559 break;
560
557 retv = -EFAULT; 561 retv = -EFAULT;
558 if (copy_from_user(&mreq, optval, sizeof(struct ipv6_mreq))) 562 if (copy_from_user(&mreq, optval, sizeof(struct ipv6_mreq)))
559 break; 563 break;
@@ -820,7 +824,7 @@ static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_txoptions *opt,
820 return 0; 824 return 0;
821 825
822 len = min_t(unsigned int, len, ipv6_optlen(hdr)); 826 len = min_t(unsigned int, len, ipv6_optlen(hdr));
823 if (copy_to_user(optval, hdr, len)); 827 if (copy_to_user(optval, hdr, len))
824 return -EFAULT; 828 return -EFAULT;
825 return ipv6_optlen(hdr); 829 return ipv6_optlen(hdr);
826} 830}
diff --git a/net/irda/irmod.c b/net/irda/irmod.c
index 1900937b3328..8ba703da2797 100644
--- a/net/irda/irmod.c
+++ b/net/irda/irmod.c
@@ -128,8 +128,8 @@ static int __init irda_init(void)
128 out_err_3: 128 out_err_3:
129#ifdef CONFIG_SYSCTL 129#ifdef CONFIG_SYSCTL
130 irda_sysctl_unregister(); 130 irda_sysctl_unregister();
131#endif
132 out_err_2: 131 out_err_2:
132#endif
133#ifdef CONFIG_PROC_FS 133#ifdef CONFIG_PROC_FS
134 irda_proc_unregister(); 134 irda_proc_unregister();
135#endif 135#endif
diff --git a/net/irda/irnetlink.c b/net/irda/irnetlink.c
index 694ea4d92fa8..1e429c929739 100644
--- a/net/irda/irnetlink.c
+++ b/net/irda/irnetlink.c
@@ -106,7 +106,7 @@ static int irda_nl_get_mode(struct sk_buff *skb, struct genl_info *info)
106 } 106 }
107 107
108 if(nla_put_string(msg, IRDA_NL_ATTR_IFNAME, 108 if(nla_put_string(msg, IRDA_NL_ATTR_IFNAME,
109 dev->name)); 109 dev->name))
110 goto err_out; 110 goto err_out;
111 111
112 if(nla_put_u32(msg, IRDA_NL_ATTR_MODE, irlap->mode)) 112 if(nla_put_u32(msg, IRDA_NL_ATTR_MODE, irlap->mode))
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
index 8ec5ed192b5d..7286c389a4d0 100644
--- a/net/mac80211/ieee80211.c
+++ b/net/mac80211/ieee80211.c
@@ -4678,7 +4678,6 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb,
4678 memset(skb->cb, 0, sizeof(skb->cb)); 4678 memset(skb->cb, 0, sizeof(skb->cb));
4679 netif_rx(skb); 4679 netif_rx(skb);
4680 skb = skb2; 4680 skb = skb2;
4681 break;
4682 } 4681 }
4683 } 4682 }
4684 out: 4683 out:
diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c
index 7ba352e3ffe0..0d99b685df5f 100644
--- a/net/mac80211/ieee80211_sta.c
+++ b/net/mac80211/ieee80211_sta.c
@@ -2154,7 +2154,11 @@ static int ieee80211_sta_config_auth(struct net_device *dev,
2154 return 0; 2154 return 0;
2155 } else { 2155 } else {
2156 if (ifsta->state != IEEE80211_AUTHENTICATE) { 2156 if (ifsta->state != IEEE80211_AUTHENTICATE) {
2157 ieee80211_sta_start_scan(dev, NULL, 0); 2157 if (ifsta->auto_ssid_sel)
2158 ieee80211_sta_start_scan(dev, NULL, 0);
2159 else
2160 ieee80211_sta_start_scan(dev, ifsta->ssid,
2161 ifsta->ssid_len);
2158 ifsta->state = IEEE80211_AUTHENTICATE; 2162 ifsta->state = IEEE80211_AUTHENTICATE;
2159 set_bit(IEEE80211_STA_REQ_AUTH, &ifsta->request); 2163 set_bit(IEEE80211_STA_REQ_AUTH, &ifsta->request);
2160 } else 2164 } else
diff --git a/net/netfilter/nf_conntrack_sip.c b/net/netfilter/nf_conntrack_sip.c
index 1276a442f10c..d449fa47491c 100644
--- a/net/netfilter/nf_conntrack_sip.c
+++ b/net/netfilter/nf_conntrack_sip.c
@@ -295,6 +295,7 @@ static int epaddr_len(struct nf_conn *ct, const char *dptr,
295static int skp_epaddr_len(struct nf_conn *ct, const char *dptr, 295static int skp_epaddr_len(struct nf_conn *ct, const char *dptr,
296 const char *limit, int *shift) 296 const char *limit, int *shift)
297{ 297{
298 const char *start = dptr;
298 int s = *shift; 299 int s = *shift;
299 300
300 /* Search for @, but stop at the end of the line. 301 /* Search for @, but stop at the end of the line.
@@ -309,8 +310,10 @@ static int skp_epaddr_len(struct nf_conn *ct, const char *dptr,
309 if (dptr <= limit && *dptr == '@') { 310 if (dptr <= limit && *dptr == '@') {
310 dptr++; 311 dptr++;
311 (*shift)++; 312 (*shift)++;
312 } else 313 } else {
314 dptr = start;
313 *shift = s; 315 *shift = s;
316 }
314 317
315 return epaddr_len(ct, dptr, limit, shift); 318 return epaddr_len(ct, dptr, limit, shift);
316} 319}
@@ -330,7 +333,8 @@ int ct_sip_get_info(struct nf_conn *ct,
330 333
331 while (dptr <= limit) { 334 while (dptr <= limit) {
332 if ((strncmp(dptr, hnfo->lname, hnfo->lnlen) != 0) && 335 if ((strncmp(dptr, hnfo->lname, hnfo->lnlen) != 0) &&
333 (strncmp(dptr, hnfo->sname, hnfo->snlen) != 0)) { 336 (hnfo->sname == NULL ||
337 strncmp(dptr, hnfo->sname, hnfo->snlen) != 0)) {
334 dptr++; 338 dptr++;
335 continue; 339 continue;
336 } 340 }
diff --git a/net/netfilter/xt_u32.c b/net/netfilter/xt_u32.c
index 74f9b14c012f..bec427915b30 100644
--- a/net/netfilter/xt_u32.c
+++ b/net/netfilter/xt_u32.c
@@ -36,7 +36,7 @@ static bool u32_match_it(const struct xt_u32 *data,
36 at = 0; 36 at = 0;
37 pos = ct->location[0].number; 37 pos = ct->location[0].number;
38 38
39 if (skb->len < 4 || pos > skb->len - 4); 39 if (skb->len < 4 || pos > skb->len - 4)
40 return false; 40 return false;
41 41
42 ret = skb_copy_bits(skb, pos, &n, sizeof(n)); 42 ret = skb_copy_bits(skb, pos, &n, sizeof(n));
diff --git a/net/socket.c b/net/socket.c
index ec077037f534..7d44453dfae1 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -1168,7 +1168,7 @@ static int __sock_create(int family, int type, int protocol,
1168 module_put(pf->owner); 1168 module_put(pf->owner);
1169 err = security_socket_post_create(sock, family, type, protocol, kern); 1169 err = security_socket_post_create(sock, family, type, protocol, kern);
1170 if (err) 1170 if (err)
1171 goto out_release; 1171 goto out_sock_release;
1172 *res = sock; 1172 *res = sock;
1173 1173
1174 return 0; 1174 return 0;
diff --git a/security/commoncap.c b/security/commoncap.c
index 338606eb7238..7520361663e8 100644
--- a/security/commoncap.c
+++ b/security/commoncap.c
@@ -315,13 +315,13 @@ int cap_syslog (int type)
315 return 0; 315 return 0;
316} 316}
317 317
318int cap_vm_enough_memory(long pages) 318int cap_vm_enough_memory(struct mm_struct *mm, long pages)
319{ 319{
320 int cap_sys_admin = 0; 320 int cap_sys_admin = 0;
321 321
322 if (cap_capable(current, CAP_SYS_ADMIN) == 0) 322 if (cap_capable(current, CAP_SYS_ADMIN) == 0)
323 cap_sys_admin = 1; 323 cap_sys_admin = 1;
324 return __vm_enough_memory(pages, cap_sys_admin); 324 return __vm_enough_memory(mm, pages, cap_sys_admin);
325} 325}
326 326
327EXPORT_SYMBOL(cap_capable); 327EXPORT_SYMBOL(cap_capable);
diff --git a/security/dummy.c b/security/dummy.c
index 19d813d5e083..853ec2292798 100644
--- a/security/dummy.c
+++ b/security/dummy.c
@@ -108,13 +108,13 @@ static int dummy_settime(struct timespec *ts, struct timezone *tz)
108 return 0; 108 return 0;
109} 109}
110 110
111static int dummy_vm_enough_memory(long pages) 111static int dummy_vm_enough_memory(struct mm_struct *mm, long pages)
112{ 112{
113 int cap_sys_admin = 0; 113 int cap_sys_admin = 0;
114 114
115 if (dummy_capable(current, CAP_SYS_ADMIN) == 0) 115 if (dummy_capable(current, CAP_SYS_ADMIN) == 0)
116 cap_sys_admin = 1; 116 cap_sys_admin = 1;
117 return __vm_enough_memory(pages, cap_sys_admin); 117 return __vm_enough_memory(mm, pages, cap_sys_admin);
118} 118}
119 119
120static int dummy_bprm_alloc_security (struct linux_binprm *bprm) 120static int dummy_bprm_alloc_security (struct linux_binprm *bprm)
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index 6237933f7d82..d8bc4172819c 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -1584,7 +1584,7 @@ static int selinux_syslog(int type)
1584 * Do not audit the selinux permission check, as this is applied to all 1584 * Do not audit the selinux permission check, as this is applied to all
1585 * processes that allocate mappings. 1585 * processes that allocate mappings.
1586 */ 1586 */
1587static int selinux_vm_enough_memory(long pages) 1587static int selinux_vm_enough_memory(struct mm_struct *mm, long pages)
1588{ 1588{
1589 int rc, cap_sys_admin = 0; 1589 int rc, cap_sys_admin = 0;
1590 struct task_security_struct *tsec = current->security; 1590 struct task_security_struct *tsec = current->security;
@@ -1600,7 +1600,7 @@ static int selinux_vm_enough_memory(long pages)
1600 if (rc == 0) 1600 if (rc == 0)
1601 cap_sys_admin = 1; 1601 cap_sys_admin = 1;
1602 1602
1603 return __vm_enough_memory(pages, cap_sys_admin); 1603 return __vm_enough_memory(mm, pages, cap_sys_admin);
1604} 1604}
1605 1605
1606/* binprm security operations */ 1606/* binprm security operations */
diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
index f00161ef99ed..6100fc023055 100644
--- a/security/selinux/ss/services.c
+++ b/security/selinux/ss/services.c
@@ -2127,7 +2127,7 @@ int selinux_audit_rule_init(u32 field, u32 op, char *rulestr,
2127 *rule = NULL; 2127 *rule = NULL;
2128 2128
2129 if (!ss_initialized) 2129 if (!ss_initialized)
2130 return -ENOTSUPP; 2130 return -EOPNOTSUPP;
2131 2131
2132 switch (field) { 2132 switch (field) {
2133 case AUDIT_SUBJ_USER: 2133 case AUDIT_SUBJ_USER: