aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CREDITS2
-rw-r--r--Documentation/DocBook/libata.tmpl2
-rw-r--r--Documentation/SubmitChecklist4
-rw-r--r--Documentation/SubmittingPatches6
-rw-r--r--Documentation/feature-removal-schedule.txt7
-rw-r--r--Documentation/filesystems/9p.txt20
-rw-r--r--Documentation/filesystems/ntfs.txt2
-rw-r--r--Documentation/hwmon/w837938
-rw-r--r--Documentation/i386/boot.txt3
-rw-r--r--Documentation/kdump/kdump.txt49
-rw-r--r--Documentation/pci.txt702
-rw-r--r--Documentation/powerpc/mpc52xx-device-tree-bindings.txt6
-rw-r--r--Documentation/scsi/aacraid.txt66
-rw-r--r--Documentation/sysrq.txt66
-rw-r--r--Documentation/usb/CREDITS2
-rw-r--r--MAINTAINERS53
-rw-r--r--Makefile8
-rw-r--r--README4
-rw-r--r--arch/alpha/kernel/process.c1
-rw-r--r--arch/arm/configs/at91sam9260ek_defconfig1
-rw-r--r--arch/arm/configs/at91sam9261ek_defconfig1
-rw-r--r--arch/arm/kernel/head.S7
-rw-r--r--arch/arm/mach-at91rm9200/at91rm9200_devices.c2
-rw-r--r--arch/arm/mach-at91rm9200/at91sam9260.c3
-rw-r--r--arch/arm/mach-at91rm9200/at91sam9261.c3
-rw-r--r--arch/arm/mach-at91rm9200/gpio.c39
-rw-r--r--arch/arm/mach-imx/cpufreq.c14
-rw-r--r--arch/arm/mach-s3c2410/gpio.c12
-rw-r--r--arch/arm/mach-s3c2410/pm.c7
-rw-r--r--arch/arm/mach-s3c2410/s3c2412-dma.c4
-rw-r--r--arch/arm/mm/init.c11
-rw-r--r--arch/arm/mm/ioremap.c3
-rw-r--r--arch/arm/mm/proc-xscale.S2
-rw-r--r--arch/arm/tools/mach-types25
-rw-r--r--arch/arm/vfp/entry.S1
-rw-r--r--arch/arm/vfp/vfp.h4
-rw-r--r--arch/arm/vfp/vfphw.S26
-rw-r--r--arch/arm/vfp/vfpmodule.c30
-rw-r--r--arch/avr32/configs/atstk1002_defconfig39
-rw-r--r--arch/avr32/kernel/avr32_ksyms.c1
-rw-r--r--arch/i386/boot/compressed/relocs.c2
-rw-r--r--arch/i386/kernel/cpu/common.c13
-rw-r--r--arch/i386/kernel/cpu/cpufreq/p4-clockmod.c9
-rw-r--r--arch/i386/kernel/cpu/cyrix.c2
-rw-r--r--arch/i386/kernel/efi.c89
-rw-r--r--arch/i386/kernel/entry.S4
-rw-r--r--arch/i386/kernel/io_apic.c32
-rw-r--r--arch/i386/kernel/nmi.c8
-rw-r--r--arch/i386/kernel/paravirt.c9
-rw-r--r--arch/i386/kernel/smpboot.c9
-rw-r--r--arch/i386/kernel/sysenter.c14
-rw-r--r--arch/i386/mach-default/setup.c2
-rw-r--r--arch/i386/mach-voyager/voyager_smp.c6
-rw-r--r--arch/ia64/kernel/acpi.c3
-rw-r--r--arch/ia64/kernel/irq.c3
-rw-r--r--arch/mips/Kconfig14
-rw-r--r--arch/mips/Makefile2
-rw-r--r--arch/mips/dec/prom/memory.c2
-rw-r--r--arch/mips/kernel/smtc.c65
-rw-r--r--arch/mips/kernel/vpe.c9
-rw-r--r--arch/mips/mips-boards/malta/Makefile3
-rw-r--r--arch/mips/mips-boards/sim/sim_setup.c2
-rw-r--r--arch/mips/mm/init.c3
-rw-r--r--arch/mips/mm/tlb-r4k.c1
-rw-r--r--arch/mips/momentum/ocelot_g/prom.c4
-rw-r--r--arch/mips/momentum/ocelot_g/setup.c4
-rw-r--r--arch/mips/vr41xx/common/irq.c12
-rw-r--r--arch/powerpc/Kconfig6
-rw-r--r--arch/powerpc/boot/dts/lite5200.dts6
-rw-r--r--arch/powerpc/boot/dts/lite5200b.dts6
-rw-r--r--arch/powerpc/configs/cell_defconfig6
-rw-r--r--arch/powerpc/configs/chrp32_defconfig161
-rw-r--r--arch/powerpc/configs/g5_defconfig237
-rw-r--r--arch/powerpc/configs/iseries_defconfig132
-rw-r--r--arch/powerpc/configs/linkstation_defconfig111
-rw-r--r--arch/powerpc/configs/lite5200_defconfig39
-rw-r--r--arch/powerpc/configs/maple_defconfig91
-rw-r--r--arch/powerpc/configs/mpc7448_hpc2_defconfig175
-rw-r--r--arch/powerpc/configs/mpc834x_itx_defconfig187
-rw-r--r--arch/powerpc/configs/mpc834x_mds_defconfig97
-rw-r--r--arch/powerpc/configs/mpc8360emds_defconfig105
-rw-r--r--arch/powerpc/configs/mpc8540_ads_defconfig89
-rw-r--r--arch/powerpc/configs/mpc8560_ads_defconfig96
-rw-r--r--arch/powerpc/configs/mpc85xx_cds_defconfig96
-rw-r--r--arch/powerpc/configs/mpc8641_hpcn_defconfig98
-rw-r--r--arch/powerpc/configs/pmac32_defconfig202
-rw-r--r--arch/powerpc/configs/ppc64_defconfig5
-rw-r--r--arch/powerpc/configs/ps3_defconfig39
-rw-r--r--arch/powerpc/configs/pseries_defconfig224
-rw-r--r--arch/powerpc/kernel/pci_32.c5
-rw-r--r--arch/powerpc/kernel/pci_64.c2
-rw-r--r--arch/powerpc/kernel/vdso.c7
-rw-r--r--arch/powerpc/platforms/83xx/mpc832x_mds.c2
-rw-r--r--arch/powerpc/platforms/83xx/mpc8360e_pb.c2
-rw-r--r--arch/powerpc/platforms/ps3/Makefile3
-rw-r--r--arch/powerpc/platforms/ps3/interrupt.c2
-rw-r--r--arch/powerpc/platforms/pseries/iommu.c3
-rw-r--r--arch/powerpc/sysdev/mmio_nvram.c40
-rw-r--r--arch/sparc/kernel/process.c1
-rw-r--r--arch/sparc/kernel/smp.c8
-rw-r--r--arch/sparc/kernel/sun4d_smp.c2
-rw-r--r--arch/sparc64/kernel/sun4v_tlb_miss.S4
-rw-r--r--arch/um/Kconfig.i38658
-rw-r--r--arch/um/sys-i386/signal.c3
-rw-r--r--arch/um/sys-x86_64/signal.c5
-rw-r--r--arch/x86_64/ia32/ia32_binfmt.c49
-rw-r--r--arch/x86_64/ia32/syscall32.c15
-rw-r--r--arch/x86_64/kernel/nmi.c2
-rw-r--r--block/elevator.c11
-rw-r--r--block/scsi_ioctl.c5
-rw-r--r--drivers/acpi/processor_perflib.c4
-rw-r--r--drivers/acpi/video.c2
-rw-r--r--drivers/ata/Kconfig4
-rw-r--r--drivers/ata/ahci.c101
-rw-r--r--drivers/ata/ata_generic.c6
-rw-r--r--drivers/ata/libata-core.c17
-rw-r--r--drivers/ata/libata-eh.c6
-rw-r--r--drivers/ata/libata-scsi.c62
-rw-r--r--drivers/ata/libata-sff.c21
-rw-r--r--drivers/ata/pata_atiixp.c11
-rw-r--r--drivers/ata/pata_cmd64x.c23
-rw-r--r--drivers/ata/pata_hpt3x2n.c6
-rw-r--r--drivers/ata/pata_it821x.c4
-rw-r--r--drivers/ata/pata_ixp4xx_cf.c5
-rw-r--r--drivers/ata/pata_jmicron.c18
-rw-r--r--drivers/ata/pata_legacy.c4
-rw-r--r--drivers/ata/pata_platform.c3
-rw-r--r--drivers/ata/pata_rz1000.c6
-rw-r--r--drivers/ata/pata_sil680.c2
-rw-r--r--drivers/ata/pata_via.c4
-rw-r--r--drivers/ata/sata_mv.c5
-rw-r--r--drivers/ata/sata_nv.c14
-rw-r--r--drivers/ata/sata_uli.c3
-rw-r--r--drivers/ata/sata_via.c13
-rw-r--r--drivers/atm/horizon.c2
-rw-r--r--drivers/char/agp/amd-k7-agp.c5
-rw-r--r--drivers/char/agp/amd64-agp.c2
-rw-r--r--drivers/char/agp/ati-agp.c36
-rw-r--r--drivers/char/agp/intel-agp.c9
-rw-r--r--drivers/char/agp/via-agp.c21
-rw-r--r--drivers/char/ipmi/ipmi_msghandler.c3
-rw-r--r--drivers/char/mem.c4
-rw-r--r--drivers/char/sysrq.c20
-rw-r--r--drivers/char/tlclk.c43
-rw-r--r--drivers/char/vr41xx_giu.c114
-rw-r--r--drivers/cpufreq/cpufreq.c17
-rw-r--r--drivers/firmware/efivars.c29
-rw-r--r--drivers/hid/hid-core.c7
-rw-r--r--drivers/hid/hid-input.c33
-rw-r--r--drivers/hwmon/hwmon-vid.c2
-rw-r--r--drivers/hwmon/w83793.c127
-rw-r--r--drivers/ide/ide-pnp.c5
-rw-r--r--drivers/ide/ide.c11
-rw-r--r--drivers/ide/pci/aec62xx.c2
-rw-r--r--drivers/ide/pci/alim15x3.c2
-rw-r--r--drivers/ide/pci/amd74xx.c2
-rw-r--r--drivers/ide/pci/atiixp.c42
-rw-r--r--drivers/ide/pci/cmd64x.c2
-rw-r--r--drivers/ide/pci/cs5520.c2
-rw-r--r--drivers/ide/pci/cs5530.c2
-rw-r--r--drivers/ide/pci/cy82c693.c2
-rw-r--r--drivers/ide/pci/generic.c37
-rw-r--r--drivers/ide/pci/hpt34x.c2
-rw-r--r--drivers/ide/pci/hpt366.c2
-rw-r--r--drivers/ide/pci/jmicron.c17
-rw-r--r--drivers/ide/pci/ns87415.c2
-rw-r--r--drivers/ide/pci/opti621.c2
-rw-r--r--drivers/ide/pci/pdc202xx_new.c2
-rw-r--r--drivers/ide/pci/pdc202xx_old.c2
-rw-r--r--drivers/ide/pci/rz1000.c2
-rw-r--r--drivers/ide/pci/sc1200.c2
-rw-r--r--drivers/ide/pci/serverworks.c2
-rw-r--r--drivers/ide/pci/sgiioc4.c3
-rw-r--r--drivers/ide/pci/siimage.c2
-rw-r--r--drivers/ide/pci/sis5513.c2
-rw-r--r--drivers/ide/pci/sl82c105.c2
-rw-r--r--drivers/ide/pci/slc90e66.c2
-rw-r--r--drivers/ide/pci/triflex.c2
-rw-r--r--drivers/ide/pci/trm290.c2
-rw-r--r--drivers/ide/pci/via82cxxx.c5
-rw-r--r--drivers/infiniband/hw/ehca/ehca_cq.c5
-rw-r--r--drivers/infiniband/hw/ehca/ehca_irq.c3
-rw-r--r--drivers/infiniband/ulp/srp/ib_srp.c20
-rw-r--r--drivers/isdn/gigaset/common.c61
-rw-r--r--drivers/kvm/kvm.h1
-rw-r--r--drivers/kvm/kvm_main.c19
-rw-r--r--drivers/kvm/mmu.c16
-rw-r--r--drivers/kvm/paging_tmpl.h79
-rw-r--r--drivers/kvm/svm.c28
-rw-r--r--drivers/kvm/vmx.c7
-rw-r--r--drivers/kvm/x86_emulate.c98
-rw-r--r--drivers/md/bitmap.c12
-rw-r--r--drivers/md/dm.c27
-rw-r--r--drivers/md/md.c32
-rw-r--r--drivers/md/raid1.c7
-rw-r--r--drivers/md/raid5.c5
-rw-r--r--drivers/media/video/cx88/cx88-tvaudio.c2
-rw-r--r--drivers/media/video/ks0127.c8
-rw-r--r--drivers/media/video/saa7134/saa7134-cards.c14
-rw-r--r--drivers/media/video/tveeprom.c2
-rw-r--r--drivers/media/video/usbvideo/quickcam_messenger.h14
-rw-r--r--drivers/media/video/usbvision/usbvision-video.c3
-rw-r--r--drivers/media/video/v4l2-common.c9
-rw-r--r--drivers/media/video/video-buf.c3
-rw-r--r--drivers/media/video/vivi.c7
-rw-r--r--drivers/message/fusion/mptbase.c3
-rw-r--r--drivers/message/fusion/mptbase.h10
-rw-r--r--drivers/message/fusion/mptctl.c5
-rw-r--r--drivers/message/fusion/mptctl.h2
-rw-r--r--drivers/message/fusion/mptfc.c3
-rw-r--r--drivers/message/fusion/mptlan.c4
-rw-r--r--drivers/message/fusion/mptlan.h2
-rw-r--r--drivers/message/fusion/mptsas.c38
-rw-r--r--drivers/message/fusion/mptscsih.c19
-rw-r--r--drivers/message/fusion/mptscsih.h2
-rw-r--r--drivers/message/fusion/mptspi.c3
-rw-r--r--drivers/mmc/imxmmc.c3
-rw-r--r--drivers/mmc/omap.c15
-rw-r--r--drivers/mmc/pxamci.c2
-rw-r--r--drivers/mmc/tifm_sd.c3
-rw-r--r--drivers/mtd/maps/Kconfig2
-rw-r--r--drivers/mtd/maps/ck804xrom.c2
-rw-r--r--drivers/mtd/nand/Kconfig2
-rw-r--r--drivers/mtd/nand/cafe.c86
-rw-r--r--drivers/net/8139cp.c7
-rw-r--r--drivers/net/82596.c7
-rw-r--r--drivers/net/b44.c52
-rw-r--r--drivers/net/bnx2.c22
-rw-r--r--drivers/net/bnx2.h6
-rw-r--r--drivers/net/bonding/bonding.h7
-rw-r--r--drivers/net/e100.c7
-rw-r--r--drivers/net/ehea/ehea.h2
-rw-r--r--drivers/net/ehea/ehea_main.c87
-rw-r--r--drivers/net/ehea/ehea_phyp.c10
-rw-r--r--drivers/net/fs_enet/mac-fec.c13
-rw-r--r--drivers/net/fs_enet/mac-scc.c6
-rw-r--r--drivers/net/hamradio/Kconfig6
-rw-r--r--drivers/net/irda/irda-usb.c45
-rw-r--r--drivers/net/irda/irda-usb.h1
-rw-r--r--drivers/net/irda/stir4200.c2
-rw-r--r--drivers/net/irda/vlsi_ir.c16
-rw-r--r--drivers/net/irda/vlsi_ir.h33
-rw-r--r--drivers/net/mv643xx_eth.c11
-rw-r--r--drivers/net/myri10ge/myri10ge.c23
-rw-r--r--drivers/net/netxen/netxen_nic.h143
-rw-r--r--drivers/net/netxen/netxen_nic_ethtool.c22
-rw-r--r--drivers/net/netxen/netxen_nic_hw.c46
-rw-r--r--drivers/net/netxen/netxen_nic_hw.h74
-rw-r--r--drivers/net/netxen/netxen_nic_init.c15
-rw-r--r--drivers/net/netxen/netxen_nic_isr.c4
-rw-r--r--drivers/net/netxen/netxen_nic_main.c10
-rw-r--r--drivers/net/netxen/netxen_nic_niu.c106
-rw-r--r--drivers/net/pcmcia/3c589_cs.c7
-rw-r--r--drivers/net/phy/fixed.c2
-rw-r--r--drivers/net/phy/phy.c3
-rw-r--r--drivers/net/s2io.c3
-rw-r--r--drivers/net/sis190.c2
-rw-r--r--drivers/net/skge.c2
-rw-r--r--drivers/net/sky2.c27
-rw-r--r--drivers/net/smc911x.c5
-rw-r--r--drivers/net/spider_net.c2
-rw-r--r--drivers/net/ucc_geth.c12
-rw-r--r--drivers/net/ucc_geth_phy.c134
-rw-r--r--drivers/net/wireless/bcm43xx/bcm43xx_main.c11
-rw-r--r--drivers/pci/pci-driver.c3
-rw-r--r--drivers/pci/quirks.c89
-rw-r--r--drivers/pci/search.c10
-rw-r--r--drivers/rtc/rtc-sh.c12
-rw-r--r--drivers/rtc/rtc-sysfs.c2
-rw-r--r--drivers/scsi/3w-xxxx.c60
-rw-r--r--drivers/scsi/3w-xxxx.h2
-rw-r--r--drivers/scsi/Kconfig2
-rw-r--r--drivers/scsi/aacraid/linit.c20
-rw-r--r--drivers/scsi/advansys.c3
-rw-r--r--drivers/scsi/iscsi_tcp.c12
-rw-r--r--drivers/scsi/libiscsi.c6
-rw-r--r--drivers/scsi/lpfc/lpfc_mem.c6
-rw-r--r--drivers/scsi/megaraid/megaraid_sas.c6
-rw-r--r--drivers/scsi/pcmcia/sym53c500_cs.c2
-rw-r--r--drivers/scsi/qla1280.c6
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_gbl.h1
-rw-r--r--drivers/scsi/qla2xxx/qla_gs.c24
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c76
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c15
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c12
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c59
-rw-r--r--drivers/scsi/qla2xxx/qla_version.h2
-rw-r--r--drivers/scsi/qla4xxx/ql4_def.h1
-rw-r--r--drivers/scsi/qla4xxx/ql4_glbl.h1
-rw-r--r--drivers/scsi/qla4xxx/ql4_init.c18
-rw-r--r--drivers/scsi/qla4xxx/ql4_isr.c4
-rw-r--r--drivers/scsi/qla4xxx/ql4_mbx.c35
-rw-r--r--drivers/scsi/qla4xxx/ql4_os.c64
-rw-r--r--drivers/scsi/qla4xxx/ql4_version.h2
-rw-r--r--drivers/scsi/scsi_scan.c39
-rw-r--r--drivers/scsi/scsi_transport_iscsi.c2
-rw-r--r--drivers/scsi/scsi_transport_spi.c2
-rw-r--r--drivers/scsi/sd.c20
-rw-r--r--drivers/scsi/seagate.c5
-rw-r--r--drivers/scsi/sr.c2
-rw-r--r--drivers/scsi/st.c19
-rw-r--r--drivers/serial/amba-pl010.c2
-rw-r--r--drivers/serial/amba-pl011.c2
-rw-r--r--drivers/serial/atmel_serial.c7
-rw-r--r--drivers/serial/atmel_serial.h2
-rw-r--r--drivers/spi/pxa2xx_spi.c5
-rw-r--r--drivers/spi/spi.c23
-rw-r--r--drivers/spi/spi_s3c24xx.c28
-rw-r--r--drivers/usb/core/Kconfig16
-rw-r--r--drivers/usb/core/hub.c9
-rw-r--r--drivers/usb/host/ohci-ep93xx.c2
-rw-r--r--drivers/usb/input/Kconfig2
-rw-r--r--drivers/usb/input/hid-core.c50
-rw-r--r--drivers/usb/input/hid-ff.c5
-rw-r--r--drivers/usb/input/hiddev.c2
-rw-r--r--drivers/usb/input/usbhid.h3
-rw-r--r--drivers/usb/input/usbtouchscreen.c98
-rw-r--r--drivers/usb/net/asix.c18
-rw-r--r--drivers/usb/net/rndis_host.c23
-rw-r--r--drivers/usb/net/rtl8150.c3
-rw-r--r--drivers/usb/serial/funsoft.c2
-rw-r--r--drivers/usb/serial/option.c3
-rw-r--r--drivers/usb/storage/unusual_devs.h19
-rw-r--r--fs/9p/error.c1
-rw-r--r--fs/9p/fid.c69
-rw-r--r--fs/9p/fid.h5
-rw-r--r--fs/9p/mux.c4
-rw-r--r--fs/9p/v9fs.c11
-rw-r--r--fs/9p/vfs_file.c47
-rw-r--r--fs/9p/vfs_inode.c206
-rw-r--r--fs/aio.c20
-rw-r--r--fs/binfmt_elf.c51
-rw-r--r--fs/binfmt_elf_fdpic.c8
-rw-r--r--fs/block_dev.c51
-rw-r--r--fs/buffer.c19
-rw-r--r--fs/cifs/CHANGES4
-rw-r--r--fs/cifs/cifs_debug.c4
-rw-r--r--fs/cifs/cifsfs.h2
-rw-r--r--fs/cifs/misc.c8
-rw-r--r--fs/cifs/sess.c13
-rw-r--r--fs/fs-writeback.c13
-rw-r--r--fs/fuse/control.c4
-rw-r--r--fs/hostfs/hostfs.h2
-rw-r--r--fs/hostfs/hostfs_kern.c2
-rw-r--r--fs/hostfs/hostfs_user.c4
-rw-r--r--fs/lockd/clntlock.c4
-rw-r--r--fs/nfs/dir.c2
-rw-r--r--fs/nfs/file.c5
-rw-r--r--fs/nfs/inode.c97
-rw-r--r--fs/nfs/symlink.c4
-rw-r--r--fs/nfsd/export.c1
-rw-r--r--fs/nfsd/nfs3xdr.c9
-rw-r--r--fs/nfsd/nfs4xdr.c5
-rw-r--r--fs/nfsd/nfsfh.c14
-rw-r--r--fs/nfsd/nfssvc.c8
-rw-r--r--fs/nfsd/nfsxdr.c5
-rw-r--r--fs/nfsd/vfs.c29
-rw-r--r--fs/ntfs/ChangeLog7
-rw-r--r--fs/ntfs/Makefile2
-rw-r--r--fs/ntfs/aops.c4
-rw-r--r--fs/ntfs/dir.c45
-rw-r--r--fs/ntfs/inode.c69
-rw-r--r--fs/ntfs/inode.h6
-rw-r--r--fs/ntfs/super.c7
-rw-r--r--fs/ocfs2/export.c5
-rw-r--r--fs/ocfs2/inode.c11
-rw-r--r--fs/ocfs2/namei.c69
-rw-r--r--fs/ocfs2/ocfs2_fs.h43
-rw-r--r--fs/ocfs2/symlink.c3
-rw-r--r--fs/proc/base.c20
-rw-r--r--fs/reiserfs/file.c20
-rw-r--r--fs/reiserfs/inode.c2
-rw-r--r--fs/ufs/balloc.c46
-rw-r--r--fs/ufs/inode.c14
-rw-r--r--fs/ufs/truncate.c4
-rw-r--r--include/asm-alpha/dma-mapping.h20
-rw-r--r--include/asm-alpha/unistd.h11
-rw-r--r--include/asm-arm/arch-at91rm9200/at91_ecc.h8
-rw-r--r--include/asm-arm/arch-at91rm9200/at91_pmc.h2
-rw-r--r--include/asm-arm/arch-at91rm9200/at91_rstc.h2
-rw-r--r--include/asm-arm/arch-at91rm9200/at91_rtc.h16
-rw-r--r--include/asm-arm/arch-at91rm9200/at91rm9200.h2
-rw-r--r--include/asm-arm/arch-at91rm9200/at91sam9260_matrix.h2
-rw-r--r--include/asm-arm/arch-at91rm9200/at91sam9261_matrix.h6
-rw-r--r--include/asm-arm/arch-at91rm9200/at91sam926x_mc.h16
-rw-r--r--include/asm-arm/arch-s3c2410/regs-gpio.h4
-rw-r--r--include/asm-arm/arch-s3c2410/regs-mem.h14
-rw-r--r--include/asm-arm/fpstate.h3
-rw-r--r--include/asm-frv/Kbuild6
-rw-r--r--include/asm-frv/page.h4
-rw-r--r--include/asm-frv/ptrace.h4
-rw-r--r--include/asm-frv/termios.h2
-rw-r--r--include/asm-generic/libata-portmap.h4
-rw-r--r--include/asm-i386/elf.h51
-rw-r--r--include/asm-i386/fixmap.h2
-rw-r--r--include/asm-i386/page.h2
-rw-r--r--include/asm-i386/processor.h1
-rw-r--r--include/asm-ia64/checksum.h6
-rw-r--r--include/asm-ia64/pci.h6
-rw-r--r--include/asm-m68k/uaccess.h1
-rw-r--r--include/asm-mips/checksum.h3
-rw-r--r--include/asm-mips/hazards.h2
-rw-r--r--include/asm-mips/irqflags.h22
-rw-r--r--include/asm-mips/pgtable.h10
-rw-r--r--include/asm-mips/thread_info.h2
-rw-r--r--include/asm-powerpc/atomic.h8
-rw-r--r--include/asm-powerpc/dma-mapping.h12
-rw-r--r--include/asm-powerpc/libata-portmap.h12
-rw-r--r--include/asm-sparc/checksum.h2
-rw-r--r--include/asm-um/pgtable.h9
-rw-r--r--include/asm-x86_64/dma-mapping.h3
-rw-r--r--include/asm-x86_64/uaccess.h2
-rw-r--r--include/linux/Kbuild5
-rw-r--r--include/linux/bitops.h6
-rw-r--r--include/linux/cdev.h4
-rw-r--r--include/linux/efi.h2
-rw-r--r--include/linux/hdreg.h8
-rw-r--r--include/linux/hid-debug.h7
-rw-r--r--include/linux/hid.h1
-rw-r--r--include/linux/i2o-dev.h5
-rw-r--r--include/linux/if_tunnel.h2
-rw-r--r--include/linux/kvm.h1
-rw-r--r--include/linux/libata.h10
-rw-r--r--include/linux/list.h10
-rw-r--r--include/linux/mm.h1
-rw-r--r--include/linux/mmc/mmc.h2
-rw-r--r--include/linux/mtd/nand.h1
-rw-r--r--include/linux/mtio.h146
-rw-r--r--include/linux/mutex.h2
-rw-r--r--include/linux/netfilter_ipv4/ip_tables.h2
-rw-r--r--include/linux/nfs_fs.h1
-rw-r--r--include/linux/nfsd/nfsd.h4
-rw-r--r--include/linux/nfsd/nfsfh.h15
-rw-r--r--include/linux/nfsd/xdr.h4
-rw-r--r--include/linux/nfsd/xdr3.h8
-rw-r--r--include/linux/pci_ids.h6
-rw-r--r--include/linux/pid_namespace.h2
-rw-r--r--include/linux/qic117.h290
-rw-r--r--include/linux/raid/md.h2
-rw-r--r--include/linux/reiserfs_fs_i.h2
-rw-r--r--include/linux/rtmutex.h4
-rw-r--r--include/linux/sunrpc/sched.h1
-rw-r--r--include/linux/sunrpc/svc.h5
-rw-r--r--include/linux/timer.h4
-rw-r--r--include/linux/videodev2.h9
-rw-r--r--include/net/inet6_connection_sock.h2
-rw-r--r--include/net/inet_connection_sock.h3
-rw-r--r--include/net/ip.h2
-rw-r--r--include/net/netfilter/nf_conntrack_compat.h1
-rw-r--r--include/net/sctp/sm.h1
-rw-r--r--include/sound/core.h18
-rw-r--r--ipc/shm.c2
-rw-r--r--kernel/exit.c2
-rw-r--r--kernel/fork.c2
-rw-r--r--kernel/irq/manage.c3
-rw-r--r--kernel/kprobes.c20
-rw-r--r--kernel/pid.c2
-rw-r--r--kernel/profile.c3
-rw-r--r--kernel/sys.c15
-rw-r--r--mm/filemap_xip.c4
-rw-r--r--mm/memory.c11
-rw-r--r--mm/mempolicy.c4
-rw-r--r--mm/mmap.c7
-rw-r--r--mm/mremap.c1
-rw-r--r--mm/page-writeback.c41
-rw-r--r--mm/page_alloc.c3
-rw-r--r--mm/truncate.c22
-rw-r--r--net/bluetooth/l2cap.c10
-rw-r--r--net/core/flow.c26
-rw-r--r--net/dccp/output.c4
-rw-r--r--net/decnet/dn_dev.c11
-rw-r--r--net/ipv4/fib_trie.c34
-rw-r--r--net/ipv4/ip_output.c3
-rw-r--r--net/ipv4/netfilter/Makefile20
-rw-r--r--net/ipv4/netfilter/ip_conntrack_netlink.c4
-rw-r--r--net/ipv4/netfilter/ip_conntrack_sip.c10
-rw-r--r--net/ipv4/netfilter/nf_nat_pptp.c4
-rw-r--r--net/ipv4/tcp_input.c15
-rw-r--r--net/ipv4/tcp_output.c6
-rw-r--r--net/ipv4/tcp_probe.c2
-rw-r--r--net/ipv6/addrconf.c10
-rw-r--r--net/ipv6/inet6_connection_sock.c3
-rw-r--r--net/ipv6/mcast.c6
-rw-r--r--net/ipv6/ndisc.c7
-rw-r--r--net/ipv6/route.c1
-rw-r--r--net/netfilter/Kconfig4
-rw-r--r--net/netfilter/nf_conntrack_netlink.c4
-rw-r--r--net/netfilter/nf_conntrack_pptp.c2
-rw-r--r--net/netfilter/nf_conntrack_sip.c10
-rw-r--r--net/netfilter/xt_connbytes.c29
-rw-r--r--net/packet/af_packet.c46
-rw-r--r--net/sched/act_ipt.c8
-rw-r--r--net/sctp/protocol.c2
-rw-r--r--net/sctp/sm_make_chunk.c6
-rw-r--r--net/sctp/sm_sideeffect.c8
-rw-r--r--net/sctp/sm_statefuns.c44
-rw-r--r--net/sctp/sm_statetable.c2
-rw-r--r--net/sunrpc/clnt.c8
-rw-r--r--net/sunrpc/sched.c3
-rw-r--r--net/sunrpc/svc.c32
-rw-r--r--net/sunrpc/svcsock.c14
-rw-r--r--net/x25/x25_dev.c1
-rw-r--r--net/xfrm/xfrm_policy.c16
-rw-r--r--scripts/Makefile.headersinst2
-rw-r--r--security/selinux/include/xfrm.h9
-rw-r--r--security/selinux/ss/services.c3
-rw-r--r--sound/core/init.c18
-rw-r--r--sound/core/sound.c4
-rw-r--r--sound/core/sound_oss.c4
-rw-r--r--sound/usb/usx2y/usbusx2yaudio.c2
-rw-r--r--sound/usb/usx2y/usx2yhwdeppcm.c2
512 files changed, 6293 insertions, 3939 deletions
diff --git a/CREDITS b/CREDITS
index 75c5ce82720c..ae08e4c10ed4 100644
--- a/CREDITS
+++ b/CREDITS
@@ -3279,7 +3279,7 @@ S: Sevilla 41005
3279S: Spain 3279S: Spain
3280 3280
3281N: Linus Torvalds 3281N: Linus Torvalds
3282E: torvalds@osdl.org 3282E: torvalds@linux-foundation.org
3283D: Original kernel hacker 3283D: Original kernel hacker
3284S: 12725 SW Millikan Way, Suite 400 3284S: 12725 SW Millikan Way, Suite 400
3285S: Beaverton, Oregon 97005 3285S: Beaverton, Oregon 97005
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl
index 07a635590b36..e2e24b4778d4 100644
--- a/Documentation/DocBook/libata.tmpl
+++ b/Documentation/DocBook/libata.tmpl
@@ -883,7 +883,7 @@ and other resources, etc.
883 </chapter> 883 </chapter>
884 884
885 <chapter id="ataExceptions"> 885 <chapter id="ataExceptions">
886 <title>ATA errors &amp; exceptions</title> 886 <title>ATA errors and exceptions</title>
887 887
888 <para> 888 <para>
889 This chapter tries to identify what error/exception conditions exist 889 This chapter tries to identify what error/exception conditions exist
diff --git a/Documentation/SubmitChecklist b/Documentation/SubmitChecklist
index 2270efa10153..bfbb2718a279 100644
--- a/Documentation/SubmitChecklist
+++ b/Documentation/SubmitChecklist
@@ -72,3 +72,7 @@ kernel patches.
72 72
73 If the new code is substantial, addition of subsystem-specific fault 73 If the new code is substantial, addition of subsystem-specific fault
74 injection might be appropriate. 74 injection might be appropriate.
75
7622: Newly-added code has been compiled with `gcc -W'. This will generate
77 lots of noise, but is good for finding bugs like "warning: comparison
78 between signed and unsigned".
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 302d148c2e18..b0d0043f7c46 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -134,9 +134,9 @@ Do not send more than 15 patches at once to the vger mailing lists!!!
134 134
135 135
136Linus Torvalds is the final arbiter of all changes accepted into the 136Linus Torvalds is the final arbiter of all changes accepted into the
137Linux kernel. His e-mail address is <torvalds@osdl.org>. He gets 137Linux kernel. His e-mail address is <torvalds@linux-foundation.org>.
138a lot of e-mail, so typically you should do your best to -avoid- sending 138He gets a lot of e-mail, so typically you should do your best to -avoid-
139him e-mail. 139sending him e-mail.
140 140
141Patches which are bug fixes, are "obvious" changes, or similarly 141Patches which are bug fixes, are "obvious" changes, or similarly
142require little discussion should be sent or CC'd to Linus. Patches 142require little discussion should be sent or CC'd to Linus. Patches
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index fc532395d116..0ba6af02cdaf 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -318,3 +318,10 @@ Why: /proc/acpi/button has been replaced by events to the input layer
318Who: Len Brown <len.brown@intel.com> 318Who: Len Brown <len.brown@intel.com>
319 319
320--------------------------- 320---------------------------
321
322What: JFFS (version 1)
323When: 2.6.21
324Why: Unmaintained for years, superceded by JFFS2 for years.
325Who: Jeff Garzik <jeff@garzik.org>
326
327---------------------------
diff --git a/Documentation/filesystems/9p.txt b/Documentation/filesystems/9p.txt
index 43b89c214d20..4d075a4558f9 100644
--- a/Documentation/filesystems/9p.txt
+++ b/Documentation/filesystems/9p.txt
@@ -73,8 +73,22 @@ OPTIONS
73RESOURCES 73RESOURCES
74========= 74=========
75 75
76The Linux version of the 9p server is now maintained under the npfs project 76Our current recommendation is to use Inferno (http://www.vitanuova.com/inferno)
77on sourceforge (http://sourceforge.net/projects/npfs). 77as the 9p server. You can start a 9p server under Inferno by issuing the
78following command:
79 ; styxlisten -A tcp!*!564 export '#U*'
80
81The -A specifies an unauthenticated export. The 564 is the port # (you may
82have to choose a higher port number if running as a normal user). The '#U*'
83specifies exporting the root of the Linux name space. You may specify a
84subset of the namespace by extending the path: '#U*'/tmp would just export
85/tmp. For more information, see the Inferno manual pages covering styxlisten
86and export.
87
88A Linux version of the 9p server is now maintained under the npfs project
89on sourceforge (http://sourceforge.net/projects/npfs). There is also a
90more stable single-threaded version of the server (named spfs) available from
91the same CVS repository.
78 92
79There are user and developer mailing lists available through the v9fs project 93There are user and developer mailing lists available through the v9fs project
80on sourceforge (http://sourceforge.net/projects/v9fs). 94on sourceforge (http://sourceforge.net/projects/v9fs).
@@ -96,5 +110,5 @@ STATUS
96 110
97The 2.6 kernel support is working on PPC and x86. 111The 2.6 kernel support is working on PPC and x86.
98 112
99PLEASE USE THE SOURCEFORGE BUG-TRACKER TO REPORT PROBLEMS. 113PLEASE USE THE KERNEL BUGZILLA TO REPORT PROBLEMS. (http://bugzilla.kernel.org)
100 114
diff --git a/Documentation/filesystems/ntfs.txt b/Documentation/filesystems/ntfs.txt
index 13ba649bda75..81779068b09b 100644
--- a/Documentation/filesystems/ntfs.txt
+++ b/Documentation/filesystems/ntfs.txt
@@ -457,6 +457,8 @@ ChangeLog
457 457
458Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog. 458Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog.
459 459
4602.1.28:
461 - Fix a deadlock.
4602.1.27: 4622.1.27:
461 - Implement page migration support so the kernel can move memory used 463 - Implement page migration support so the kernel can move memory used
462 by NTFS files and directories around for management purposes. 464 by NTFS files and directories around for management purposes.
diff --git a/Documentation/hwmon/w83793 b/Documentation/hwmon/w83793
index 45e5408340e0..51171a83165b 100644
--- a/Documentation/hwmon/w83793
+++ b/Documentation/hwmon/w83793
@@ -45,18 +45,14 @@ This driver implements support for Winbond W83793G/W83793R chips.
45 temp5-6 have a 1 degree Celsiis resolution. 45 temp5-6 have a 1 degree Celsiis resolution.
46 46
47* Temperature sensor types 47* Temperature sensor types
48 Temp1-4 have 3 possible types. It can be read from (and written to) 48 Temp1-4 have 2 possible types. It can be read from (and written to)
49 temp[1-4]_type. 49 temp[1-4]_type.
50 - If the value of 0, the related temperature channel stops
51 monitoring.
52 - If the value is 3, it starts monitoring using a remote termal diode 50 - If the value is 3, it starts monitoring using a remote termal diode
53 (default). 51 (default).
54 - If the value is 5, it starts monitoring using the temperature sensor
55 in AMD CPU and get result by AMDSI.
56 - If the value is 6, it starts monitoring using the temperature sensor 52 - If the value is 6, it starts monitoring using the temperature sensor
57 in Intel CPU and get result by PECI. 53 in Intel CPU and get result by PECI.
58 Temp5-6 can be connected to external thermistors (value of 54 Temp5-6 can be connected to external thermistors (value of
59 temp[5-6]_type is 4). They can also be disabled (value is 0). 55 temp[5-6]_type is 4).
60 56
61* Alarm mechanism 57* Alarm mechanism
62 For voltage sensors, an alarm triggers if the measured value is below 58 For voltage sensors, an alarm triggers if the measured value is below
diff --git a/Documentation/i386/boot.txt b/Documentation/i386/boot.txt
index 9575de300a61..38fe1f03fb14 100644
--- a/Documentation/i386/boot.txt
+++ b/Documentation/i386/boot.txt
@@ -2,7 +2,7 @@
2 ---------------------------- 2 ----------------------------
3 3
4 H. Peter Anvin <hpa@zytor.com> 4 H. Peter Anvin <hpa@zytor.com>
5 Last update 2006-11-17 5 Last update 2007-01-26
6 6
7On the i386 platform, the Linux kernel uses a rather complicated boot 7On the i386 platform, the Linux kernel uses a rather complicated boot
8convention. This has evolved partially due to historical aspects, as 8convention. This has evolved partially due to historical aspects, as
@@ -186,6 +186,7 @@ filled out, however:
186 7 GRuB 186 7 GRuB
187 8 U-BOOT 187 8 U-BOOT
188 9 Xen 188 9 Xen
189 A Gujin
189 190
190 Please contact <hpa@zytor.com> if you need a bootloader ID 191 Please contact <hpa@zytor.com> if you need a bootloader ID
191 value assigned. 192 value assigned.
diff --git a/Documentation/kdump/kdump.txt b/Documentation/kdump/kdump.txt
index 5af6676a88f0..073306818347 100644
--- a/Documentation/kdump/kdump.txt
+++ b/Documentation/kdump/kdump.txt
@@ -17,7 +17,7 @@ You can use common Linux commands, such as cp and scp, to copy the
17memory image to a dump file on the local disk, or across the network to 17memory image to a dump file on the local disk, or across the network to
18a remote system. 18a remote system.
19 19
20Kdump and kexec are currently supported on the x86, x86_64, ppc64 and IA64 20Kdump and kexec are currently supported on the x86, x86_64, ppc64 and ia64
21architectures. 21architectures.
22 22
23When the system kernel boots, it reserves a small section of memory for 23When the system kernel boots, it reserves a small section of memory for
@@ -61,7 +61,12 @@ Install kexec-tools
61 61
622) Download the kexec-tools user-space package from the following URL: 622) Download the kexec-tools user-space package from the following URL:
63 63
64http://www.kernel.org/pub/linux/kernel/people/horms/kexec-tools/kexec-tools-testing-20061214.tar.gz 64http://www.kernel.org/pub/linux/kernel/people/horms/kexec-tools/kexec-tools-testing.tar.gz
65
66This is a symlink to the latest version, which at the time of writing is
6720061214, the only release of kexec-tools-testing so far. As other versions
68are made released, the older onese will remain available at
69http://www.kernel.org/pub/linux/kernel/people/horms/kexec-tools/
65 70
66Note: Latest kexec-tools-testing git tree is available at 71Note: Latest kexec-tools-testing git tree is available at
67 72
@@ -71,11 +76,11 @@ http://www.kernel.org/git/?p=linux/kernel/git/horms/kexec-tools-testing.git;a=su
71 76
723) Unpack the tarball with the tar command, as follows: 773) Unpack the tarball with the tar command, as follows:
73 78
74 tar xvpzf kexec-tools-testing-20061214.tar.gz 79 tar xvpzf kexec-tools-testing.tar.gz
75 80
764) Change to the kexec-tools-1.101 directory, as follows: 814) Change to the kexec-tools directory, as follows:
77 82
78 cd kexec-tools-testing-20061214 83 cd kexec-tools-testing-VERSION
79 84
805) Configure the package, as follows: 855) Configure the package, as follows:
81 86
@@ -224,7 +229,23 @@ Dump-capture kernel config options (Arch Dependent, ppc64)
224 229
225Dump-capture kernel config options (Arch Dependent, ia64) 230Dump-capture kernel config options (Arch Dependent, ia64)
226---------------------------------------------------------- 231----------------------------------------------------------
227(To be filled) 232
233- No specific options are required to create a dump-capture kernel
234 for ia64, other than those specified in the arch idependent section
235 above. This means that it is possible to use the system kernel
236 as a dump-capture kernel if desired.
237
238 The crashkernel region can be automatically placed by the system
239 kernel at run time. This is done by specifying the base address as 0,
240 or omitting it all together.
241
242 crashkernel=256M@0
243 or
244 crashkernel=256M
245
246 If the start address is specified, note that the start address of the
247 kernel will be aligned to 64Mb, so if the start address is not then
248 any space below the alignment point will be wasted.
228 249
229 250
230Boot into System Kernel 251Boot into System Kernel
@@ -243,6 +264,10 @@ Boot into System Kernel
243 264
244 On ppc64, use "crashkernel=128M@32M". 265 On ppc64, use "crashkernel=128M@32M".
245 266
267 On ia64, 256M@256M is a generous value that typically works.
268 The region may be automatically placed on ia64, see the
269 dump-capture kernel config option notes above.
270
246Load the Dump-capture Kernel 271Load the Dump-capture Kernel
247============================ 272============================
248 273
@@ -261,7 +286,8 @@ For x86_64:
261For ppc64: 286For ppc64:
262 - Use vmlinux 287 - Use vmlinux
263For ia64: 288For ia64:
264 (To be filled) 289 - Use vmlinux or vmlinuz.gz
290
265 291
266If you are using a uncompressed vmlinux image then use following command 292If you are using a uncompressed vmlinux image then use following command
267to load dump-capture kernel. 293to load dump-capture kernel.
@@ -277,18 +303,19 @@ to load dump-capture kernel.
277 --initrd=<initrd-for-dump-capture-kernel> \ 303 --initrd=<initrd-for-dump-capture-kernel> \
278 --append="root=<root-dev> <arch-specific-options>" 304 --append="root=<root-dev> <arch-specific-options>"
279 305
306Please note, that --args-linux does not need to be specified for ia64.
307It is planned to make this a no-op on that architecture, but for now
308it should be omitted
309
280Following are the arch specific command line options to be used while 310Following are the arch specific command line options to be used while
281loading dump-capture kernel. 311loading dump-capture kernel.
282 312
283For i386 and x86_64: 313For i386, x86_64 and ia64:
284 "init 1 irqpoll maxcpus=1" 314 "init 1 irqpoll maxcpus=1"
285 315
286For ppc64: 316For ppc64:
287 "init 1 maxcpus=1 noirqdistrib" 317 "init 1 maxcpus=1 noirqdistrib"
288 318
289For IA64
290 (To be filled)
291
292 319
293Notes on loading the dump-capture kernel: 320Notes on loading the dump-capture kernel:
294 321
diff --git a/Documentation/pci.txt b/Documentation/pci.txt
index 2b395e478961..fd5028eca13e 100644
--- a/Documentation/pci.txt
+++ b/Documentation/pci.txt
@@ -1,142 +1,231 @@
1 How To Write Linux PCI Drivers
2 1
3 by Martin Mares <mj@ucw.cz> on 07-Feb-2000 2 How To Write Linux PCI Drivers
3
4 by Martin Mares <mj@ucw.cz> on 07-Feb-2000
5 updated by Grant Grundler <grundler@parisc-linux.org> on 23-Dec-2006
4 6
5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6The world of PCI is vast and it's full of (mostly unpleasant) surprises. 8The world of PCI is vast and full of (mostly unpleasant) surprises.
7Different PCI devices have different requirements and different bugs -- 9Since each CPU architecture implements different chip-sets and PCI devices
8because of this, the PCI support layer in Linux kernel is not as trivial 10have different requirements (erm, "features"), the result is the PCI support
9as one would wish. This short pamphlet tries to help all potential driver 11in the Linux kernel is not as trivial as one would wish. This short paper
10authors find their way through the deep forests of PCI handling. 12tries to introduce all potential driver authors to Linux APIs for
13PCI device drivers.
14
15A more complete resource is the third edition of "Linux Device Drivers"
16by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman.
17LDD3 is available for free (under Creative Commons License) from:
18
19 http://lwn.net/Kernel/LDD3/
20
21However, keep in mind that all documents are subject to "bit rot".
22Refer to the source code if things are not working as described here.
23
24Please send questions/comments/patches about Linux PCI API to the
25"Linux PCI" <linux-pci@atrey.karlin.mff.cuni.cz> mailing list.
26
11 27
12 28
130. Structure of PCI drivers 290. Structure of PCI drivers
14~~~~~~~~~~~~~~~~~~~~~~~~~~~ 30~~~~~~~~~~~~~~~~~~~~~~~~~~~
15There exist two kinds of PCI drivers: new-style ones (which leave most of 31PCI drivers "discover" PCI devices in a system via pci_register_driver().
16probing for devices to the PCI layer and support online insertion and removal 32Actually, it's the other way around. When the PCI generic code discovers
17of devices [thus supporting PCI, hot-pluggable PCI and CardBus in a single 33a new device, the driver with a matching "description" will be notified.
18driver]) and old-style ones which just do all the probing themselves. Unless 34Details on this below.
19you have a very good reason to do so, please don't use the old way of probing 35
20in any new code. After the driver finds the devices it wishes to operate 36pci_register_driver() leaves most of the probing for devices to
21on (either the old or the new way), it needs to perform the following steps: 37the PCI layer and supports online insertion/removal of devices [thus
38supporting hot-pluggable PCI, CardBus, and Express-Card in a single driver].
39pci_register_driver() call requires passing in a table of function
40pointers and thus dictates the high level structure of a driver.
41
42Once the driver knows about a PCI device and takes ownership, the
43driver generally needs to perform the following initialization:
22 44
23 Enable the device 45 Enable the device
24 Access device configuration space 46 Request MMIO/IOP resources
25 Discover resources (addresses and IRQ numbers) provided by the device 47 Set the DMA mask size (for both coherent and streaming DMA)
26 Allocate these resources 48 Allocate and initialize shared control data (pci_allocate_coherent())
27 Communicate with the device 49 Access device configuration space (if needed)
50 Register IRQ handler (request_irq())
51 Initialize non-PCI (i.e. LAN/SCSI/etc parts of the chip)
52 Enable DMA/processing engines
53
54When done using the device, and perhaps the module needs to be unloaded,
55the driver needs to take the follow steps:
56 Disable the device from generating IRQs
57 Release the IRQ (free_irq())
58 Stop all DMA activity
59 Release DMA buffers (both streaming and coherent)
60 Unregister from other subsystems (e.g. scsi or netdev)
61 Release MMIO/IOP resources
28 Disable the device 62 Disable the device
29 63
30Most of these topics are covered by the following sections, for the rest 64Most of these topics are covered in the following sections.
31look at <linux/pci.h>, it's hopefully well commented. 65For the rest look at LDD3 or <linux/pci.h> .
32 66
33If the PCI subsystem is not configured (CONFIG_PCI is not set), most of 67If the PCI subsystem is not configured (CONFIG_PCI is not set), most of
34the functions described below are defined as inline functions either completely 68the PCI functions described below are defined as inline functions either
35empty or just returning an appropriate error codes to avoid lots of ifdefs 69completely empty or just returning an appropriate error codes to avoid
36in the drivers. 70lots of ifdefs in the drivers.
71
37 72
38 73
391. New-style drivers 741. pci_register_driver() call
40~~~~~~~~~~~~~~~~~~~~ 75~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41The new-style drivers just call pci_register_driver during their initialization
42with a pointer to a structure describing the driver (struct pci_driver) which
43contains:
44 76
45 name Name of the driver 77PCI device drivers call pci_register_driver() during their
78initialization with a pointer to a structure describing the driver
79(struct pci_driver):
80
81 field name Description
82 ---------- ------------------------------------------------------
46 id_table Pointer to table of device ID's the driver is 83 id_table Pointer to table of device ID's the driver is
47 interested in. Most drivers should export this 84 interested in. Most drivers should export this
48 table using MODULE_DEVICE_TABLE(pci,...). 85 table using MODULE_DEVICE_TABLE(pci,...).
49 probe Pointer to a probing function which gets called (during 86
50 execution of pci_register_driver for already existing 87 probe This probing function gets called (during execution
51 devices or later if a new device gets inserted) for all 88 of pci_register_driver() for already existing
52 PCI devices which match the ID table and are not handled 89 devices or later if a new device gets inserted) for
53 by the other drivers yet. This function gets passed a 90 all PCI devices which match the ID table and are not
54 pointer to the pci_dev structure representing the device 91 "owned" by the other drivers yet. This function gets
55 and also which entry in the ID table did the device 92 passed a "struct pci_dev *" for each device whose
56 match. It returns zero when the driver has accepted the 93 entry in the ID table matches the device. The probe
57 device or an error code (negative number) otherwise. 94 function returns zero when the driver chooses to
58 This function always gets called from process context, 95 take "ownership" of the device or an error code
59 so it can sleep. 96 (negative number) otherwise.
60 remove Pointer to a function which gets called whenever a 97 The probe function always gets called from process
61 device being handled by this driver is removed (either 98 context, so it can sleep.
62 during deregistration of the driver or when it's 99
63 manually pulled out of a hot-pluggable slot). This 100 remove The remove() function gets called whenever a device
64 function always gets called from process context, so it 101 being handled by this driver is removed (either during
65 can sleep. 102 deregistration of the driver or when it's manually
66 save_state Save a device's state before it's suspend. 103 pulled out of a hot-pluggable slot).
104 The remove function always gets called from process
105 context, so it can sleep.
106
67 suspend Put device into low power state. 107 suspend Put device into low power state.
108 suspend_late Put device into low power state.
109
110 resume_early Wake device from low power state.
68 resume Wake device from low power state. 111 resume Wake device from low power state.
112
113 (Please see Documentation/power/pci.txt for descriptions
114 of PCI Power Management and the related functions.)
115
69 enable_wake Enable device to generate wake events from a low power 116 enable_wake Enable device to generate wake events from a low power
70 state. 117 state.
71 118
72 (Please see Documentation/power/pci.txt for descriptions 119 shutdown Hook into reboot_notifier_list (kernel/sys.c).
73 of PCI Power Management and the related functions) 120 Intended to stop any idling DMA operations.
121 Useful for enabling wake-on-lan (NIC) or changing
122 the power state of a device before reboot.
123 e.g. drivers/net/e100.c.
124
125 err_handler See Documentation/pci-error-recovery.txt
126
127 multithread_probe Enable multi-threaded probe/scan. Driver must
128 provide its own locking/syncronization for init
129 operations if this is enabled.
130
74 131
75The ID table is an array of struct pci_device_id ending with a all-zero entry. 132The ID table is an array of struct pci_device_id entries ending with an
76Each entry consists of: 133all-zero entry. Each entry consists of:
134
135 vendor,device Vendor and device ID to match (or PCI_ANY_ID)
77 136
78 vendor, device Vendor and device ID to match (or PCI_ANY_ID)
79 subvendor, Subsystem vendor and device ID to match (or PCI_ANY_ID) 137 subvendor, Subsystem vendor and device ID to match (or PCI_ANY_ID)
80 subdevice 138 subdevice,
81 class, Device class to match. The class_mask tells which bits 139
82 class_mask of the class are honored during the comparison. 140 class Device class, subclass, and "interface" to match.
141 See Appendix D of the PCI Local Bus Spec or
142 include/linux/pci_ids.h for a full list of classes.
143 Most drivers do not need to specify class/class_mask
144 as vendor/device is normally sufficient.
145
146 class_mask limit which sub-fields of the class field are compared.
147 See drivers/scsi/sym53c8xx_2/ for example of usage.
148
83 driver_data Data private to the driver. 149 driver_data Data private to the driver.
150 Most drivers don't need to use driver_data field.
151 Best practice is to use driver_data as an index
152 into a static list of equivalent device types,
153 instead of using it as a pointer.
84 154
85Most drivers don't need to use the driver_data field. Best practice
86for use of driver_data is to use it as an index into a static list of
87equivalent device types, not to use it as a pointer.
88 155
89Have a table entry {PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID} 156Most drivers only need PCI_DEVICE() or PCI_DEVICE_CLASS() to set up
90to have probe() called for every PCI device known to the system. 157a pci_device_id table.
91 158
92New PCI IDs may be added to a device driver at runtime by writing 159New PCI IDs may be added to a device driver pci_ids table at runtime
93to the file /sys/bus/pci/drivers/{driver}/new_id. When added, the 160as shown below:
94driver will probe for all devices it can support.
95 161
96echo "vendor device subvendor subdevice class class_mask driver_data" > \ 162echo "vendor device subvendor subdevice class class_mask driver_data" > \
97 /sys/bus/pci/drivers/{driver}/new_id 163/sys/bus/pci/drivers/{driver}/new_id
98where all fields are passed in as hexadecimal values (no leading 0x). 164
99Users need pass only as many fields as necessary; vendor, device, 165All fields are passed in as hexadecimal values (no leading 0x).
100subvendor, and subdevice fields default to PCI_ANY_ID (FFFFFFFF), 166Users need pass only as many fields as necessary:
101class and classmask fields default to 0, and driver_data defaults to 167 o vendor, device, subvendor, and subdevice fields default
1020UL. Device drivers must initialize use_driver_data in the dynids struct 168 to PCI_ANY_ID (FFFFFFFF),
103in their pci_driver struct prior to calling pci_register_driver in order 169 o class and classmask fields default to 0
104for the driver_data field to get passed to the driver. Otherwise, only a 170 o driver_data defaults to 0UL.
1050 is passed in that field. 171
172Once added, the driver probe routine will be invoked for any unclaimed
173PCI devices listed in its (newly updated) pci_ids list.
106 174
107When the driver exits, it just calls pci_unregister_driver() and the PCI layer 175When the driver exits, it just calls pci_unregister_driver() and the PCI layer
108automatically calls the remove hook for all devices handled by the driver. 176automatically calls the remove hook for all devices handled by the driver.
109 177
178
1791.1 "Attributes" for driver functions/data
180
110Please mark the initialization and cleanup functions where appropriate 181Please mark the initialization and cleanup functions where appropriate
111(the corresponding macros are defined in <linux/init.h>): 182(the corresponding macros are defined in <linux/init.h>):
112 183
113 __init Initialization code. Thrown away after the driver 184 __init Initialization code. Thrown away after the driver
114 initializes. 185 initializes.
115 __exit Exit code. Ignored for non-modular drivers. 186 __exit Exit code. Ignored for non-modular drivers.
116 __devinit Device initialization code. Identical to __init if 187
117 the kernel is not compiled with CONFIG_HOTPLUG, normal 188
118 function otherwise. 189 __devinit Device initialization code.
190 Identical to __init if the kernel is not compiled
191 with CONFIG_HOTPLUG, normal function otherwise.
119 __devexit The same for __exit. 192 __devexit The same for __exit.
120 193
121Tips: 194Tips on when/where to use the above attributes:
122 The module_init()/module_exit() functions (and all initialization 195 o The module_init()/module_exit() functions (and all
123 functions called only from these) should be marked __init/exit. 196 initialization functions called _only_ from these)
124 The struct pci_driver shouldn't be marked with any of these tags. 197 should be marked __init/__exit.
125 The ID table array should be marked __devinitdata.
126 The probe() and remove() functions (and all initialization
127 functions called only from these) should be marked __devinit/exit.
128 If you are sure the driver is not a hotplug driver then use only
129 __init/exit __initdata/exitdata.
130 198
131 Pointers to functions marked as __devexit must be created using 199 o Do not mark the struct pci_driver.
132 __devexit_p(function_name). That will generate the function
133 name or NULL if the __devexit function will be discarded.
134 200
201 o The ID table array should be marked __devinitdata.
135 202
1362. How to find PCI devices manually (the old style) 203 o The probe() and remove() functions should be marked __devinit
137~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 204 and __devexit respectively. All initialization functions
138PCI drivers not using the pci_register_driver() interface search 205 exclusively called by the probe() routine, can be marked __devinit.
139for PCI devices manually using the following constructs: 206 Ditto for remove() and __devexit.
207
208 o If mydriver_probe() is marked with __devinit(), then all address
209 references to mydriver_probe must use __devexit_p(mydriver_probe)
210 (in the struct pci_driver declaration for example).
211 __devexit_p() will generate the function name _or_ NULL if the
212 function will be discarded. For an example, see drivers/net/tg3.c.
213
214 o Do NOT mark a function if you are not sure which mark to use.
215 Better to not mark the function than mark the function wrong.
216
217
218
2192. How to find PCI devices manually
220~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
221
222PCI drivers should have a really good reason for not using the
223pci_register_driver() interface to search for PCI devices.
224The main reason PCI devices are controlled by multiple drivers
225is because one PCI device implements several different HW services.
226E.g. combined serial/parallel port/floppy controller.
227
228A manual search may be performed using the following constructs:
140 229
141Searching by vendor and device ID: 230Searching by vendor and device ID:
142 231
@@ -150,87 +239,311 @@ Searching by class ID (iterate in a similar way):
150 239
151Searching by both vendor/device and subsystem vendor/device ID: 240Searching by both vendor/device and subsystem vendor/device ID:
152 241
153 pci_get_subsys(VENDOR_ID, DEVICE_ID, SUBSYS_VENDOR_ID, SUBSYS_DEVICE_ID, dev). 242 pci_get_subsys(VENDOR_ID,DEVICE_ID, SUBSYS_VENDOR_ID, SUBSYS_DEVICE_ID, dev).
154 243
155 You can use the constant PCI_ANY_ID as a wildcard replacement for 244You can use the constant PCI_ANY_ID as a wildcard replacement for
156VENDOR_ID or DEVICE_ID. This allows searching for any device from a 245VENDOR_ID or DEVICE_ID. This allows searching for any device from a
157specific vendor, for example. 246specific vendor, for example.
158 247
159 These functions are hotplug-safe. They increment the reference count on 248These functions are hotplug-safe. They increment the reference count on
160the pci_dev that they return. You must eventually (possibly at module unload) 249the pci_dev that they return. You must eventually (possibly at module unload)
161decrement the reference count on these devices by calling pci_dev_put(). 250decrement the reference count on these devices by calling pci_dev_put().
162 251
163 252
1643. Enabling and disabling devices
165~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166 Before you do anything with the device you've found, you need to enable
167it by calling pci_enable_device() which enables I/O and memory regions of
168the device, allocates an IRQ if necessary, assigns missing resources if
169needed and wakes up the device if it was in suspended state. Please note
170that this function can fail.
171 253
172 If you want to use the device in bus mastering mode, call pci_set_master() 2543. Device Initialization Steps
173which enables the bus master bit in PCI_COMMAND register and also fixes 255~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
174the latency timer value if it's set to something bogus by the BIOS. 256
257As noted in the introduction, most PCI drivers need the following steps
258for device initialization:
175 259
176 If you want to use the PCI Memory-Write-Invalidate transaction, 260 Enable the device
261 Request MMIO/IOP resources
262 Set the DMA mask size (for both coherent and streaming DMA)
263 Allocate and initialize shared control data (pci_allocate_coherent())
264 Access device configuration space (if needed)
265 Register IRQ handler (request_irq())
266 Initialize non-PCI (i.e. LAN/SCSI/etc parts of the chip)
267 Enable DMA/processing engines.
268
269The driver can access PCI config space registers at any time.
270(Well, almost. When running BIST, config space can go away...but
271that will just result in a PCI Bus Master Abort and config reads
272will return garbage).
273
274
2753.1 Enable the PCI device
276~~~~~~~~~~~~~~~~~~~~~~~~~
277Before touching any device registers, the driver needs to enable
278the PCI device by calling pci_enable_device(). This will:
279 o wake up the device if it was in suspended state,
280 o allocate I/O and memory regions of the device (if BIOS did not),
281 o allocate an IRQ (if BIOS did not).
282
283NOTE: pci_enable_device() can fail! Check the return value.
284NOTE2: Also see pci_enable_device_bars() below. Drivers can
285 attempt to enable only a subset of BARs they need.
286
287[ OS BUG: we don't check resource allocations before enabling those
288 resources. The sequence would make more sense if we called
289 pci_request_resources() before calling pci_enable_device().
290 Currently, the device drivers can't detect the bug when when two
291 devices have been allocated the same range. This is not a common
292 problem and unlikely to get fixed soon.
293
294 This has been discussed before but not changed as of 2.6.19:
295 http://lkml.org/lkml/2006/3/2/194
296]
297
298pci_set_master() will enable DMA by setting the bus master bit
299in the PCI_COMMAND register. It also fixes the latency timer value if
300it's set to something bogus by the BIOS.
301
302If the PCI device can use the PCI Memory-Write-Invalidate transaction,
177call pci_set_mwi(). This enables the PCI_COMMAND bit for Mem-Wr-Inval 303call pci_set_mwi(). This enables the PCI_COMMAND bit for Mem-Wr-Inval
178and also ensures that the cache line size register is set correctly. 304and also ensures that the cache line size register is set correctly.
179Make sure to check the return value of pci_set_mwi(), not all architectures 305Check the return value of pci_set_mwi() as not all architectures
180may support Memory-Write-Invalidate. 306or chip-sets may support Memory-Write-Invalidate.
307
308
3093.2 Request MMIO/IOP resources
310~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
311Memory (MMIO), and I/O port addresses should NOT be read directly
312from the PCI device config space. Use the values in the pci_dev structure
313as the PCI "bus address" might have been remapped to a "host physical"
314address by the arch/chip-set specific kernel support.
181 315
182 If your driver decides to stop using the device (e.g., there was an 316See Documentation/IO-mapping.txt for how to access device registers
183error while setting it up or the driver module is being unloaded), it 317or device memory.
184should call pci_disable_device() to deallocate any IRQ resources, disable 318
185PCI bus-mastering, etc. You should not do anything with the device after 319The device driver needs to call pci_request_region() to verify
320no other device is already using the same address resource.
321Conversely, drivers should call pci_release_region() AFTER
186calling pci_disable_device(). 322calling pci_disable_device().
323The idea is to prevent two devices colliding on the same address range.
324
325[ See OS BUG comment above. Currently (2.6.19), The driver can only
326 determine MMIO and IO Port resource availability _after_ calling
327 pci_enable_device(). ]
328
329Generic flavors of pci_request_region() are request_mem_region()
330(for MMIO ranges) and request_region() (for IO Port ranges).
331Use these for address resources that are not described by "normal" PCI
332BARs.
333
334Also see pci_request_selected_regions() below.
335
336
3373.3 Set the DMA mask size
338~~~~~~~~~~~~~~~~~~~~~~~~~
339[ If anything below doesn't make sense, please refer to
340 Documentation/DMA-API.txt. This section is just a reminder that
341 drivers need to indicate DMA capabilities of the device and is not
342 an authoritative source for DMA interfaces. ]
343
344While all drivers should explicitly indicate the DMA capability
345(e.g. 32 or 64 bit) of the PCI bus master, devices with more than
34632-bit bus master capability for streaming data need the driver
347to "register" this capability by calling pci_set_dma_mask() with
348appropriate parameters. In general this allows more efficient DMA
349on systems where System RAM exists above 4G _physical_ address.
350
351Drivers for all PCI-X and PCIe compliant devices must call
352pci_set_dma_mask() as they are 64-bit DMA devices.
353
354Similarly, drivers must also "register" this capability if the device
355can directly address "consistent memory" in System RAM above 4G physical
356address by calling pci_set_consistent_dma_mask().
357Again, this includes drivers for all PCI-X and PCIe compliant devices.
358Many 64-bit "PCI" devices (before PCI-X) and some PCI-X devices are
35964-bit DMA capable for payload ("streaming") data but not control
360("consistent") data.
361
362
3633.4 Setup shared control data
364~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
365Once the DMA masks are set, the driver can allocate "consistent" (a.k.a. shared)
366memory. See Documentation/DMA-API.txt for a full description of
367the DMA APIs. This section is just a reminder that it needs to be done
368before enabling DMA on the device.
369
370
3713.5 Initialize device registers
372~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
373Some drivers will need specific "capability" fields programmed
374or other "vendor specific" register initialized or reset.
375E.g. clearing pending interrupts.
376
377
3783.6 Register IRQ handler
379~~~~~~~~~~~~~~~~~~~~~~~~
380While calling request_irq() is the the last step described here,
381this is often just another intermediate step to initialize a device.
382This step can often be deferred until the device is opened for use.
383
384All interrupt handlers for IRQ lines should be registered with IRQF_SHARED
385and use the devid to map IRQs to devices (remember that all PCI IRQ lines
386can be shared).
387
388request_irq() will associate an interrupt handler and device handle
389with an interrupt number. Historically interrupt numbers represent
390IRQ lines which run from the PCI device to the Interrupt controller.
391With MSI and MSI-X (more below) the interrupt number is a CPU "vector".
392
393request_irq() also enables the interrupt. Make sure the device is
394quiesced and does not have any interrupts pending before registering
395the interrupt handler.
396
397MSI and MSI-X are PCI capabilities. Both are "Message Signaled Interrupts"
398which deliver interrupts to the CPU via a DMA write to a Local APIC.
399The fundamental difference between MSI and MSI-X is how multiple
400"vectors" get allocated. MSI requires contiguous blocks of vectors
401while MSI-X can allocate several individual ones.
402
403MSI capability can be enabled by calling pci_enable_msi() or
404pci_enable_msix() before calling request_irq(). This causes
405the PCI support to program CPU vector data into the PCI device
406capability registers.
407
408If your PCI device supports both, try to enable MSI-X first.
409Only one can be enabled at a time. Many architectures, chip-sets,
410or BIOSes do NOT support MSI or MSI-X and the call to pci_enable_msi/msix
411will fail. This is important to note since many drivers have
412two (or more) interrupt handlers: one for MSI/MSI-X and another for IRQs.
413They choose which handler to register with request_irq() based on the
414return value from pci_enable_msi/msix().
415
416There are (at least) two really good reasons for using MSI:
4171) MSI is an exclusive interrupt vector by definition.
418 This means the interrupt handler doesn't have to verify
419 its device caused the interrupt.
420
4212) MSI avoids DMA/IRQ race conditions. DMA to host memory is guaranteed
422 to be visible to the host CPU(s) when the MSI is delivered. This
423 is important for both data coherency and avoiding stale control data.
424 This guarantee allows the driver to omit MMIO reads to flush
425 the DMA stream.
426
427See drivers/infiniband/hw/mthca/ or drivers/net/tg3.c for examples
428of MSI/MSI-X usage.
429
430
431
4324. PCI device shutdown
433~~~~~~~~~~~~~~~~~~~~~~~
434
435When a PCI device driver is being unloaded, most of the following
436steps need to be performed:
437
438 Disable the device from generating IRQs
439 Release the IRQ (free_irq())
440 Stop all DMA activity
441 Release DMA buffers (both streaming and consistent)
442 Unregister from other subsystems (e.g. scsi or netdev)
443 Disable device from responding to MMIO/IO Port addresses
444 Release MMIO/IO Port resource(s)
445
446
4474.1 Stop IRQs on the device
448~~~~~~~~~~~~~~~~~~~~~~~~~~~
449How to do this is chip/device specific. If it's not done, it opens
450the possibility of a "screaming interrupt" if (and only if)
451the IRQ is shared with another device.
452
453When the shared IRQ handler is "unhooked", the remaining devices
454using the same IRQ line will still need the IRQ enabled. Thus if the
455"unhooked" device asserts IRQ line, the system will respond assuming
456it was one of the remaining devices asserted the IRQ line. Since none
457of the other devices will handle the IRQ, the system will "hang" until
458it decides the IRQ isn't going to get handled and masks the IRQ (100,000
459iterations later). Once the shared IRQ is masked, the remaining devices
460will stop functioning properly. Not a nice situation.
461
462This is another reason to use MSI or MSI-X if it's available.
463MSI and MSI-X are defined to be exclusive interrupts and thus
464are not susceptible to the "screaming interrupt" problem.
465
466
4674.2 Release the IRQ
468~~~~~~~~~~~~~~~~~~~
469Once the device is quiesced (no more IRQs), one can call free_irq().
470This function will return control once any pending IRQs are handled,
471"unhook" the drivers IRQ handler from that IRQ, and finally release
472the IRQ if no one else is using it.
473
474
4754.3 Stop all DMA activity
476~~~~~~~~~~~~~~~~~~~~~~~~~
477It's extremely important to stop all DMA operations BEFORE attempting
478to deallocate DMA control data. Failure to do so can result in memory
479corruption, hangs, and on some chip-sets a hard crash.
187 480
1884. How to access PCI config space 481Stopping DMA after stopping the IRQs can avoid races where the
482IRQ handler might restart DMA engines.
483
484While this step sounds obvious and trivial, several "mature" drivers
485didn't get this step right in the past.
486
487
4884.4 Release DMA buffers
489~~~~~~~~~~~~~~~~~~~~~~~
490Once DMA is stopped, clean up streaming DMA first.
491I.e. unmap data buffers and return buffers to "upstream"
492owners if there is one.
493
494Then clean up "consistent" buffers which contain the control data.
495
496See Documentation/DMA-API.txt for details on unmapping interfaces.
497
498
4994.5 Unregister from other subsystems
500~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
501Most low level PCI device drivers support some other subsystem
502like USB, ALSA, SCSI, NetDev, Infiniband, etc. Make sure your
503driver isn't losing resources from that other subsystem.
504If this happens, typically the symptom is an Oops (panic) when
505the subsystem attempts to call into a driver that has been unloaded.
506
507
5084.6 Disable Device from responding to MMIO/IO Port addresses
509~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
510io_unmap() MMIO or IO Port resources and then call pci_disable_device().
511This is the symmetric opposite of pci_enable_device().
512Do not access device registers after calling pci_disable_device().
513
514
5154.7 Release MMIO/IO Port Resource(s)
516~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
517Call pci_release_region() to mark the MMIO or IO Port range as available.
518Failure to do so usually results in the inability to reload the driver.
519
520
521
5225. How to access PCI config space
189~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 523~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
190 You can use pci_(read|write)_config_(byte|word|dword) to access the config 524
525You can use pci_(read|write)_config_(byte|word|dword) to access the config
191space of a device represented by struct pci_dev *. All these functions return 0 526space of a device represented by struct pci_dev *. All these functions return 0
192when successful or an error code (PCIBIOS_...) which can be translated to a text 527when successful or an error code (PCIBIOS_...) which can be translated to a text
193string by pcibios_strerror. Most drivers expect that accesses to valid PCI 528string by pcibios_strerror. Most drivers expect that accesses to valid PCI
194devices don't fail. 529devices don't fail.
195 530
196 If you don't have a struct pci_dev available, you can call 531If you don't have a struct pci_dev available, you can call
197pci_bus_(read|write)_config_(byte|word|dword) to access a given device 532pci_bus_(read|write)_config_(byte|word|dword) to access a given device
198and function on that bus. 533and function on that bus.
199 534
200 If you access fields in the standard portion of the config header, please 535If you access fields in the standard portion of the config header, please
201use symbolic names of locations and bits declared in <linux/pci.h>. 536use symbolic names of locations and bits declared in <linux/pci.h>.
202 537
203 If you need to access Extended PCI Capability registers, just call 538If you need to access Extended PCI Capability registers, just call
204pci_find_capability() for the particular capability and it will find the 539pci_find_capability() for the particular capability and it will find the
205corresponding register block for you. 540corresponding register block for you.
206 541
207 542
2085. Addresses and interrupts
209~~~~~~~~~~~~~~~~~~~~~~~~~~~
210 Memory and port addresses and interrupt numbers should NOT be read from the
211config space. You should use the values in the pci_dev structure as they might
212have been remapped by the kernel.
213
214 See Documentation/IO-mapping.txt for how to access device memory.
215
216 The device driver needs to call pci_request_region() to make sure
217no other device is already using the same resource. The driver is expected
218to determine MMIO and IO Port resource availability _before_ calling
219pci_enable_device(). Conversely, drivers should call pci_release_region()
220_after_ calling pci_disable_device(). The idea is to prevent two devices
221colliding on the same address range.
222
223Generic flavors of pci_request_region() are request_mem_region()
224(for MMIO ranges) and request_region() (for IO Port ranges).
225Use these for address resources that are not described by "normal" PCI
226interfaces (e.g. BAR).
227
228 All interrupt handlers should be registered with IRQF_SHARED and use the devid
229to map IRQs to devices (remember that all PCI interrupts are shared).
230
231 543
2326. Other interesting functions 5446. Other interesting functions
233~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 545~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
546
234pci_find_slot() Find pci_dev corresponding to given bus and 547pci_find_slot() Find pci_dev corresponding to given bus and
235 slot numbers. 548 slot numbers.
236pci_set_power_state() Set PCI Power Management state (0=D0 ... 3=D3) 549pci_set_power_state() Set PCI Power Management state (0=D0 ... 3=D3)
@@ -247,11 +560,12 @@ pci_set_mwi() Enable Memory-Write-Invalidate transactions.
247pci_clear_mwi() Disable Memory-Write-Invalidate transactions. 560pci_clear_mwi() Disable Memory-Write-Invalidate transactions.
248 561
249 562
563
2507. Miscellaneous hints 5647. Miscellaneous hints
251~~~~~~~~~~~~~~~~~~~~~~ 565~~~~~~~~~~~~~~~~~~~~~~
252When displaying PCI slot names to the user (for example when a driver wants 566
253to tell the user what card has it found), please use pci_name(pci_dev) 567When displaying PCI device names to the user (for example when a driver wants
254for this purpose. 568to tell the user what card has it found), please use pci_name(pci_dev).
255 569
256Always refer to the PCI devices by a pointer to the pci_dev structure. 570Always refer to the PCI devices by a pointer to the pci_dev structure.
257All PCI layer functions use this identification and it's the only 571All PCI layer functions use this identification and it's the only
@@ -259,31 +573,113 @@ reasonable one. Don't use bus/slot/function numbers except for very
259special purposes -- on systems with multiple primary buses their semantics 573special purposes -- on systems with multiple primary buses their semantics
260can be pretty complex. 574can be pretty complex.
261 575
262If you're going to use PCI bus mastering DMA, take a look at
263Documentation/DMA-mapping.txt.
264
265Don't try to turn on Fast Back to Back writes in your driver. All devices 576Don't try to turn on Fast Back to Back writes in your driver. All devices
266on the bus need to be capable of doing it, so this is something which needs 577on the bus need to be capable of doing it, so this is something which needs
267to be handled by platform and generic code, not individual drivers. 578to be handled by platform and generic code, not individual drivers.
268 579
269 580
581
2708. Vendor and device identifications 5828. Vendor and device identifications
271~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 583~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
272For the future, let's avoid adding device ids to include/linux/pci_ids.h.
273 584
274PCI_VENDOR_ID_xxx for vendors, and a hex constant for device ids. 585One is not not required to add new device ids to include/linux/pci_ids.h.
586Please add PCI_VENDOR_ID_xxx for vendors and a hex constant for device ids.
587
588PCI_VENDOR_ID_xxx constants are re-used. The device ids are arbitrary
589hex numbers (vendor controlled) and normally used only in a single
590location, the pci_device_id table.
591
592Please DO submit new vendor/device ids to pciids.sourceforge.net project.
593
275 594
276Rationale: PCI_VENDOR_ID_xxx constants are re-used, but device ids are not.
277 Further, device ids are arbitrary hex numbers, normally used only in a
278 single location, the pci_device_id table.
279 595
2809. Obsolete functions 5969. Obsolete functions
281~~~~~~~~~~~~~~~~~~~~~ 597~~~~~~~~~~~~~~~~~~~~~
598
282There are several functions which you might come across when trying to 599There are several functions which you might come across when trying to
283port an old driver to the new PCI interface. They are no longer present 600port an old driver to the new PCI interface. They are no longer present
284in the kernel as they aren't compatible with hotplug or PCI domains or 601in the kernel as they aren't compatible with hotplug or PCI domains or
285having sane locking. 602having sane locking.
286 603
287pci_find_device() Superseded by pci_get_device() 604pci_find_device() Superseded by pci_get_device()
288pci_find_subsys() Superseded by pci_get_subsys() 605pci_find_subsys() Superseded by pci_get_subsys()
289pci_find_slot() Superseded by pci_get_slot() 606pci_find_slot() Superseded by pci_get_slot()
607
608
609The alternative is the traditional PCI device driver that walks PCI
610device lists. This is still possible but discouraged.
611
612
613
61410. pci_enable_device_bars() and Legacy I/O Port space
615~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
616
617Large servers may not be able to provide I/O port resources to all PCI
618devices. I/O Port space is only 64KB on Intel Architecture[1] and is
619likely also fragmented since the I/O base register of PCI-to-PCI
620bridge will usually be aligned to a 4KB boundary[2]. On such systems,
621pci_enable_device() and pci_request_region() will fail when
622attempting to enable I/O Port regions that don't have I/O Port
623resources assigned.
624
625Fortunately, many PCI devices which request I/O Port resources also
626provide access to the same registers via MMIO BARs. These devices can
627be handled without using I/O port space and the drivers typically
628offer a CONFIG_ option to only use MMIO regions
629(e.g. CONFIG_TULIP_MMIO). PCI devices typically provide I/O port
630interface for legacy OSes and will work when I/O port resources are not
631assigned. The "PCI Local Bus Specification Revision 3.0" discusses
632this on p.44, "IMPLEMENTATION NOTE".
633
634If your PCI device driver doesn't need I/O port resources assigned to
635I/O Port BARs, you should use pci_enable_device_bars() instead of
636pci_enable_device() in order not to enable I/O port regions for the
637corresponding devices. In addition, you should use
638pci_request_selected_regions() and pci_release_selected_regions()
639instead of pci_request_regions()/pci_release_regions() in order not to
640request/release I/O port regions for the corresponding devices.
641
642[1] Some systems support 64KB I/O port space per PCI segment.
643[2] Some PCI-to-PCI bridges support optional 1KB aligned I/O base.
644
645
646
64711. MMIO Space and "Write Posting"
648~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
649
650Converting a driver from using I/O Port space to using MMIO space
651often requires some additional changes. Specifically, "write posting"
652needs to be handled. Many drivers (e.g. tg3, acenic, sym53c8xx_2)
653already do this. I/O Port space guarantees write transactions reach the PCI
654device before the CPU can continue. Writes to MMIO space allow the CPU
655to continue before the transaction reaches the PCI device. HW weenies
656call this "Write Posting" because the write completion is "posted" to
657the CPU before the transaction has reached its destination.
658
659Thus, timing sensitive code should add readl() where the CPU is
660expected to wait before doing other work. The classic "bit banging"
661sequence works fine for I/O Port space:
662
663 for (i = 8; --i; val >>= 1) {
664 outb(val & 1, ioport_reg); /* write bit */
665 udelay(10);
666 }
667
668The same sequence for MMIO space should be:
669
670 for (i = 8; --i; val >>= 1) {
671 writeb(val & 1, mmio_reg); /* write bit */
672 readb(safe_mmio_reg); /* flush posted write */
673 udelay(10);
674 }
675
676It is important that "safe_mmio_reg" not have any side effects that
677interferes with the correct operation of the device.
678
679Another case to watch out for is when resetting a PCI device. Use PCI
680Configuration space reads to flush the writel(). This will gracefully
681handle the PCI master abort on all platforms if the PCI device is
682expected to not respond to a readl(). Most x86 platforms will allow
683MMIO reads to master abort (a.k.a. "Soft Fail") and return garbage
684(e.g. ~0). But many RISC platforms will crash (a.k.a."Hard Fail").
685
diff --git a/Documentation/powerpc/mpc52xx-device-tree-bindings.txt b/Documentation/powerpc/mpc52xx-device-tree-bindings.txt
index 7fb3b8a44eb6..69f016f02bb0 100644
--- a/Documentation/powerpc/mpc52xx-device-tree-bindings.txt
+++ b/Documentation/powerpc/mpc52xx-device-tree-bindings.txt
@@ -4,6 +4,12 @@ MPC52xx Device Tree Bindings
4(c) 2006 Secret Lab Technologies Ltd 4(c) 2006 Secret Lab Technologies Ltd
5Grant Likely <grant.likely at secretlab.ca> 5Grant Likely <grant.likely at secretlab.ca>
6 6
7********** DRAFT ***********
8* WARNING: Do not depend on the stability of these bindings just yet.
9* The MPC5200 device tree conventions are still in flux
10* Keep an eye on the linuxppc-dev mailing list for more details
11********** DRAFT ***********
12
7I - Introduction 13I - Introduction
8================ 14================
9Boards supported by the arch/powerpc architecture require device tree be 15Boards supported by the arch/powerpc architecture require device tree be
diff --git a/Documentation/scsi/aacraid.txt b/Documentation/scsi/aacraid.txt
index 3367130e64f6..dc8e44fc650f 100644
--- a/Documentation/scsi/aacraid.txt
+++ b/Documentation/scsi/aacraid.txt
@@ -11,43 +11,42 @@ the original).
11Supported Cards/Chipsets 11Supported Cards/Chipsets
12------------------------- 12-------------------------
13 PCI ID (pci.ids) OEM Product 13 PCI ID (pci.ids) OEM Product
14 9005:0283:9005:0283 Adaptec Catapult (3210S with arc firmware)
15 9005:0284:9005:0284 Adaptec Tomcat (3410S with arc firmware)
16 9005:0285:9005:0285 Adaptec 2200S (Vulcan) 14 9005:0285:9005:0285 Adaptec 2200S (Vulcan)
17 9005:0285:9005:0286 Adaptec 2120S (Crusader) 15 9005:0285:9005:0286 Adaptec 2120S (Crusader)
18 9005:0285:9005:0287 Adaptec 2200S (Vulcan-2m) 16 9005:0285:9005:0287 Adaptec 2200S (Vulcan-2m)
19 9005:0285:9005:0288 Adaptec 3230S (Harrier) 17 9005:0285:9005:0288 Adaptec 3230S (Harrier)
20 9005:0285:9005:0289 Adaptec 3240S (Tornado) 18 9005:0285:9005:0289 Adaptec 3240S (Tornado)
21 9005:0285:9005:028a Adaptec 2020ZCR (Skyhawk) 19 9005:0285:9005:028a Adaptec 2020ZCR (Skyhawk)
22 9005:0285:9005:028b Adaptec 2025ZCR (Terminator) 20 9005:0285:9005:028b Adaptec 2025ZCR (Terminator)
23 9005:0286:9005:028c Adaptec 2230S (Lancer) 21 9005:0286:9005:028c Adaptec 2230S (Lancer)
24 9005:0286:9005:028c Adaptec 2230SLP (Lancer) 22 9005:0286:9005:028c Adaptec 2230SLP (Lancer)
25 9005:0286:9005:028d Adaptec 2130S (Lancer) 23 9005:0286:9005:028d Adaptec 2130S (Lancer)
26 9005:0285:9005:028e Adaptec 2020SA (Skyhawk) 24 9005:0285:9005:028e Adaptec 2020SA (Skyhawk)
27 9005:0285:9005:028f Adaptec 2025SA (Terminator) 25 9005:0285:9005:028f Adaptec 2025SA (Terminator)
28 9005:0285:9005:0290 Adaptec 2410SA (Jaguar) 26 9005:0285:9005:0290 Adaptec 2410SA (Jaguar)
29 9005:0285:103c:3227 Adaptec 2610SA (Bearcat HP release) 27 9005:0285:103c:3227 Adaptec 2610SA (Bearcat HP release)
30 9005:0285:9005:0293 Adaptec 21610SA (Corsair-16) 28 9005:0285:9005:0293 Adaptec 21610SA (Corsair-16)
31 9005:0285:9005:0296 Adaptec 2240S (SabreExpress) 29 9005:0285:9005:0296 Adaptec 2240S (SabreExpress)
32 9005:0285:9005:0292 Adaptec 2810SA (Corsair-8) 30 9005:0285:9005:0292 Adaptec 2810SA (Corsair-8)
33 9005:0285:9005:0294 Adaptec Prowler 31 9005:0285:9005:0297 Adaptec 4005 (AvonPark)
34 9005:0285:9005:0297 Adaptec 4005SAS (AvonPark) 32 9005:0285:9005:0298 Adaptec 4000 (BlackBird)
35 9005:0285:9005:0298 Adaptec 4000SAS (BlackBird)
36 9005:0285:9005:0299 Adaptec 4800SAS (Marauder-X) 33 9005:0285:9005:0299 Adaptec 4800SAS (Marauder-X)
37 9005:0285:9005:029a Adaptec 4805SAS (Marauder-E) 34 9005:0285:9005:029a Adaptec 4805SAS (Marauder-E)
38 9005:0286:9005:029b Adaptec 2820SA (Intruder) 35 9005:0286:9005:029b Adaptec 2820SA (Intruder)
39 9005:0286:9005:029c Adaptec 2620SA (Intruder) 36 9005:0286:9005:029c Adaptec 2620SA (Intruder)
40 9005:0286:9005:029d Adaptec 2420SA (Intruder HP release) 37 9005:0286:9005:029d Adaptec 2420SA (Intruder HP release)
41 9005:0286:9005:02a2 Adaptec 3800SAS (Hurricane44) 38 9005:0286:9005:02ac Adaptec 1800 (Typhoon44)
42 9005:0286:9005:02a7 Adaptec 3805SAS (Hurricane80) 39 9005:0285:9005:02b5 Adaptec 5445 (Voodoo44)
43 9005:0286:9005:02a8 Adaptec 3400SAS (Hurricane40) 40 9005:0285:9005:02b6 Adaptec 5805 (Voodoo80)
44 9005:0286:9005:02ac Adaptec 1800SAS (Typhoon44) 41 9005:0285:9005:02b7 Adaptec 5085 (Voodoo08)
45 9005:0286:9005:02b3 Adaptec 2400SAS (Hurricane40lm) 42 9005:0285:9005:02bb Adaptec 3405 (Marauder40LP)
46 9005:0285:9005:02b5 Adaptec ASR5800 (Voodoo44) 43 9005:0285:9005:02bc Adaptec 3805 (Marauder80LP)
47 9005:0285:9005:02b6 Adaptec ASR5805 (Voodoo80) 44 9005:0285:9005:02c7 Adaptec 3085 (Marauder08ELP)
48 9005:0285:9005:02b7 Adaptec ASR5808 (Voodoo08) 45 9005:0285:9005:02bd Adaptec 31205 (Marauder120)
46 9005:0285:9005:02be Adaptec 31605 (Marauder160)
47 9005:0285:9005:02c3 Adaptec 51205 (Voodoo120)
48 9005:0285:9005:02c4 Adaptec 51605 (Voodoo160)
49 1011:0046:9005:0364 Adaptec 5400S (Mustang) 49 1011:0046:9005:0364 Adaptec 5400S (Mustang)
50 1011:0046:9005:0365 Adaptec 5400S (Mustang)
51 9005:0287:9005:0800 Adaptec Themisto (Jupiter) 50 9005:0287:9005:0800 Adaptec Themisto (Jupiter)
52 9005:0200:9005:0200 Adaptec Themisto (Jupiter) 51 9005:0200:9005:0200 Adaptec Themisto (Jupiter)
53 9005:0286:9005:0800 Adaptec Callisto (Jupiter) 52 9005:0286:9005:0800 Adaptec Callisto (Jupiter)
@@ -68,21 +67,32 @@ Supported Cards/Chipsets
68 9005:0285:17aa:0287 Legend S230 (Vulcan) 67 9005:0285:17aa:0287 Legend S230 (Vulcan)
69 9005:0285:9005:0290 IBM ServeRAID 7t (Jaguar) 68 9005:0285:9005:0290 IBM ServeRAID 7t (Jaguar)
70 9005:0285:1014:02F2 IBM ServeRAID 8i (AvonPark) 69 9005:0285:1014:02F2 IBM ServeRAID 8i (AvonPark)
71 9005:0285:1014:0312 IBM ServeRAID 8i (AvonParkLite)
72 9005:0286:1014:9540 IBM ServeRAID 8k/8k-l4 (AuroraLite) 70 9005:0286:1014:9540 IBM ServeRAID 8k/8k-l4 (AuroraLite)
73 9005:0286:1014:9580 IBM ServeRAID 8k/8k-l8 (Aurora) 71 9005:0286:1014:9580 IBM ServeRAID 8k/8k-l8 (Aurora)
74 9005:0286:1014:034d IBM ServeRAID 8s (Hurricane) 72 9005:0285:1014:034d IBM ServeRAID 8s (Marauder-E)
75 9005:0286:9005:029e ICP ICP9024R0 (Lancer) 73 9005:0286:9005:029e ICP ICP9024RO (Lancer)
76 9005:0286:9005:029f ICP ICP9014R0 (Lancer) 74 9005:0286:9005:029f ICP ICP9014RO (Lancer)
77 9005:0286:9005:02a0 ICP ICP9047MA (Lancer) 75 9005:0286:9005:02a0 ICP ICP9047MA (Lancer)
78 9005:0286:9005:02a1 ICP ICP9087MA (Lancer) 76 9005:0286:9005:02a1 ICP ICP9087MA (Lancer)
79 9005:0286:9005:02a3 ICP ICP5445AU (Hurricane44) 77 9005:0285:9005:02a4 ICP ICP9085LI (Marauder-X)
80 9005:0286:9005:02a4 ICP ICP9085LI (Marauder-X) 78 9005:0285:9005:02a5 ICP ICP5085BR (Marauder-E)
81 9005:0286:9005:02a5 ICP ICP5085BR (Marauder-E)
82 9005:0286:9005:02a6 ICP ICP9067MA (Intruder-6) 79 9005:0286:9005:02a6 ICP ICP9067MA (Intruder-6)
83 9005:0286:9005:02a9 ICP ICP5085AU (Hurricane80) 80 9005:0285:9005:02b2 ICP (Voodoo 8 internal 8 external)
84 9005:0286:9005:02aa ICP ICP5045AU (Hurricane40) 81 9005:0285:9005:02b8 ICP ICP5445SL (Voodoo44)
85 9005:0286:9005:02b4 ICP ICP5045AL (Hurricane40lm) 82 9005:0285:9005:02b9 ICP ICP5085SL (Voodoo80)
83 9005:0285:9005:02ba ICP ICP5805SL (Voodoo08)
84 9005:0285:9005:02bf ICP ICP5045BL (Marauder40LP)
85 9005:0285:9005:02c0 ICP ICP5085BL (Marauder80LP)
86 9005:0285:9005:02c8 ICP ICP5805BL (Marauder08ELP)
87 9005:0285:9005:02c1 ICP ICP5125BR (Marauder120)
88 9005:0285:9005:02c2 ICP ICP5165BR (Marauder160)
89 9005:0285:9005:02c5 ICP ICP5125SL (Voodoo120)
90 9005:0285:9005:02c6 ICP ICP5165SL (Voodoo160)
91 9005:0286:9005:02ab (Typhoon40)
92 9005:0286:9005:02ad (Aurora ARK)
93 9005:0286:9005:02ae (Aurora Lite ARK)
94 9005:0285:9005:02b0 (Sunrise Lake ARK)
95 9005:0285:9005:02b1 Adaptec (Voodoo 8 internal 8 external)
86 96
87People 97People
88------------------------- 98-------------------------
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt
index e0188a23fd5e..61613166981b 100644
--- a/Documentation/sysrq.txt
+++ b/Documentation/sysrq.txt
@@ -1,6 +1,6 @@
1Linux Magic System Request Key Hacks 1Linux Magic System Request Key Hacks
2Documentation for sysrq.c version 1.15 2Documentation for sysrq.c
3Last update: $Date: 2001/01/28 10:15:59 $ 3Last update: 2007-JAN-06
4 4
5* What is the magic SysRq key? 5* What is the magic SysRq key?
6~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -35,7 +35,7 @@ You can set the value in the file by the following command:
35 35
36Note that the value of /proc/sys/kernel/sysrq influences only the invocation 36Note that the value of /proc/sys/kernel/sysrq influences only the invocation
37via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always 37via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always
38allowed. 38allowed (by a user with admin privileges).
39 39
40* How do I use the magic SysRq key? 40* How do I use the magic SysRq key?
41~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 41~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -58,7 +58,7 @@ On PowerPC - Press 'ALT - Print Screen (or F13) - <command key>,
58On other - If you know of the key combos for other architectures, please 58On other - If you know of the key combos for other architectures, please
59 let me know so I can add them to this section. 59 let me know so I can add them to this section.
60 60
61On all - write a character to /proc/sysrq-trigger. eg: 61On all - write a character to /proc/sysrq-trigger. e.g.:
62 62
63 echo t > /proc/sysrq-trigger 63 echo t > /proc/sysrq-trigger
64 64
@@ -74,6 +74,8 @@ On all - write a character to /proc/sysrq-trigger. eg:
74 74
75'c' - Will perform a kexec reboot in order to take a crashdump. 75'c' - Will perform a kexec reboot in order to take a crashdump.
76 76
77'd' - Shows all locks that are held.
78
77'o' - Will shut your system off (if configured and supported). 79'o' - Will shut your system off (if configured and supported).
78 80
79's' - Will attempt to sync all mounted filesystems. 81's' - Will attempt to sync all mounted filesystems.
@@ -87,38 +89,43 @@ On all - write a character to /proc/sysrq-trigger. eg:
87 89
88'm' - Will dump current memory info to your console. 90'm' - Will dump current memory info to your console.
89 91
92'n' - Used to make RT tasks nice-able
93
90'v' - Dumps Voyager SMP processor info to your console. 94'v' - Dumps Voyager SMP processor info to your console.
91 95
96'w' - Dumps tasks that are in uninterruptable (blocked) state.
97
98'x' - Used by xmon interface on ppc/powerpc platforms.
99
92'0'-'9' - Sets the console log level, controlling which kernel messages 100'0'-'9' - Sets the console log level, controlling which kernel messages
93 will be printed to your console. ('0', for example would make 101 will be printed to your console. ('0', for example would make
94 it so that only emergency messages like PANICs or OOPSes would 102 it so that only emergency messages like PANICs or OOPSes would
95 make it to your console.) 103 make it to your console.)
96 104
97'f' - Will call oom_kill to kill a memory hog process 105'f' - Will call oom_kill to kill a memory hog process.
98 106
99'e' - Send a SIGTERM to all processes, except for init. 107'e' - Send a SIGTERM to all processes, except for init.
100 108
101'i' - Send a SIGKILL to all processes, except for init. 109'g' - Used by kgdb on ppc platforms.
102 110
103'l' - Send a SIGKILL to all processes, INCLUDING init. (Your system 111'i' - Send a SIGKILL to all processes, except for init.
104 will be non-functional after this.)
105 112
106'h' - Will display help ( actually any other key than those listed 113'h' - Will display help (actually any other key than those listed
107 above will display help. but 'h' is easy to remember :-) 114 above will display help. but 'h' is easy to remember :-)
108 115
109* Okay, so what can I use them for? 116* Okay, so what can I use them for?
110~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 117~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
111Well, un'R'aw is very handy when your X server or a svgalib program crashes. 118Well, un'R'aw is very handy when your X server or a svgalib program crashes.
112 119
113sa'K' (Secure Access Key) is useful when you want to be sure there are no 120sa'K' (Secure Access Key) is useful when you want to be sure there is no
114trojan program is running at console and which could grab your password 121trojan program running at console which could grab your password
115when you would try to login. It will kill all programs on given console 122when you would try to login. It will kill all programs on given console,
116and thus letting you make sure that the login prompt you see is actually 123thus letting you make sure that the login prompt you see is actually
117the one from init, not some trojan program. 124the one from init, not some trojan program.
118IMPORTANT: In its true form it is not a true SAK like the one in a :IMPORTANT 125IMPORTANT: In its true form it is not a true SAK like the one in a :IMPORTANT
119IMPORTANT: c2 compliant system, and it should not be mistaken as :IMPORTANT 126IMPORTANT: c2 compliant system, and it should not be mistaken as :IMPORTANT
120IMPORTANT: such. :IMPORTANT 127IMPORTANT: such. :IMPORTANT
121 It seems other find it useful as (System Attention Key) which is 128 It seems others find it useful as (System Attention Key) which is
122useful when you want to exit a program that will not let you switch consoles. 129useful when you want to exit a program that will not let you switch consoles.
123(For example, X or a svgalib program.) 130(For example, X or a svgalib program.)
124 131
@@ -139,8 +146,8 @@ OK or Done message...)
139Again, the unmount (remount read-only) hasn't taken place until you see the 146Again, the unmount (remount read-only) hasn't taken place until you see the
140"OK" and "Done" message appear on the screen. 147"OK" and "Done" message appear on the screen.
141 148
142The loglevel'0'-'9' is useful when your console is being flooded with 149The loglevels '0'-'9' are useful when your console is being flooded with
143kernel messages you do not want to see. Setting '0' will prevent all but 150kernel messages you do not want to see. Selecting '0' will prevent all but
144the most urgent kernel messages from reaching your console. (They will 151the most urgent kernel messages from reaching your console. (They will
145still be logged if syslogd/klogd are alive, though.) 152still be logged if syslogd/klogd are alive, though.)
146 153
@@ -152,7 +159,7 @@ processes.
152~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 159~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
153That happens to me, also. I've found that tapping shift, alt, and control 160That happens to me, also. I've found that tapping shift, alt, and control
154on both sides of the keyboard, and hitting an invalid sysrq sequence again 161on both sides of the keyboard, and hitting an invalid sysrq sequence again
155will fix the problem. (ie, something like alt-sysrq-z). Switching to another 162will fix the problem. (i.e., something like alt-sysrq-z). Switching to another
156virtual console (ALT+Fn) and then back again should also help. 163virtual console (ALT+Fn) and then back again should also help.
157 164
158* I hit SysRq, but nothing seems to happen, what's wrong? 165* I hit SysRq, but nothing seems to happen, what's wrong?
@@ -174,11 +181,11 @@ handler function you will use, B) a help_msg string, that will print when SysRQ
174prints help, and C) an action_msg string, that will print right before your 181prints help, and C) an action_msg string, that will print right before your
175handler is called. Your handler must conform to the prototype in 'sysrq.h'. 182handler is called. Your handler must conform to the prototype in 'sysrq.h'.
176 183
177After the sysrq_key_op is created, you can call the macro 184After the sysrq_key_op is created, you can call the kernel function
178register_sysrq_key(int key, struct sysrq_key_op *op_p) that is defined in 185register_sysrq_key(int key, struct sysrq_key_op *op_p); this will
179sysrq.h, this will register the operation pointed to by 'op_p' at table 186register the operation pointed to by 'op_p' at table key 'key',
180key 'key', if that slot in the table is blank. At module unload time, you must 187if that slot in the table is blank. At module unload time, you must call
181call the macro unregister_sysrq_key(int key, struct sysrq_key_op *op_p), which 188the function unregister_sysrq_key(int key, struct sysrq_key_op *op_p), which
182will remove the key op pointed to by 'op_p' from the key 'key', if and only if 189will remove the key op pointed to by 'op_p' from the key 'key', if and only if
183it is currently registered in that slot. This is in case the slot has been 190it is currently registered in that slot. This is in case the slot has been
184overwritten since you registered it. 191overwritten since you registered it.
@@ -186,15 +193,12 @@ overwritten since you registered it.
186The Magic SysRQ system works by registering key operations against a key op 193The Magic SysRQ system works by registering key operations against a key op
187lookup table, which is defined in 'drivers/char/sysrq.c'. This key table has 194lookup table, which is defined in 'drivers/char/sysrq.c'. This key table has
188a number of operations registered into it at compile time, but is mutable, 195a number of operations registered into it at compile time, but is mutable,
189and 4 functions are exported for interface to it: __sysrq_lock_table, 196and 2 functions are exported for interface to it:
190__sysrq_unlock_table, __sysrq_get_key_op, and __sysrq_put_key_op. The 197 register_sysrq_key and unregister_sysrq_key.
191functions __sysrq_swap_key_ops and __sysrq_swap_key_ops_nolock are defined 198Of course, never ever leave an invalid pointer in the table. I.e., when
192in the header itself, and the REGISTER and UNREGISTER macros are built from 199your module that called register_sysrq_key() exits, it must call
193these. More complex (and dangerous!) manipulations of the table are possible 200unregister_sysrq_key() to clean up the sysrq key table entry that it used.
194using these functions, but you must be careful to always lock the table before 201Null pointers in the table are always safe. :)
195you read or write from it, and to unlock it again when you are done. (And of
196course, to never ever leave an invalid pointer in the table). Null pointers in
197the table are always safe :)
198 202
199If for some reason you feel the need to call the handle_sysrq function from 203If for some reason you feel the need to call the handle_sysrq function from
200within a function called by handle_sysrq, you must be aware that you are in 204within a function called by handle_sysrq, you must be aware that you are in
diff --git a/Documentation/usb/CREDITS b/Documentation/usb/CREDITS
index 01e7f857ef35..27a721635f92 100644
--- a/Documentation/usb/CREDITS
+++ b/Documentation/usb/CREDITS
@@ -21,7 +21,7 @@ difficult to maintain, add yourself with a patch if desired.
21 Bill Ryder <bryder@sgi.com> 21 Bill Ryder <bryder@sgi.com>
22 Thomas Sailer <sailer@ife.ee.ethz.ch> 22 Thomas Sailer <sailer@ife.ee.ethz.ch>
23 Gregory P. Smith <greg@electricrain.com> 23 Gregory P. Smith <greg@electricrain.com>
24 Linus Torvalds <torvalds@osdl.org> 24 Linus Torvalds <torvalds@linux-foundation.org>
25 Roman Weissgaerber <weissg@vienna.at> 25 Roman Weissgaerber <weissg@vienna.at>
26 <Kazuki.Yasumatsu@fujixerox.co.jp> 26 <Kazuki.Yasumatsu@fujixerox.co.jp>
27 27
diff --git a/MAINTAINERS b/MAINTAINERS
index 1b1491d64ca6..0ad8803a0c75 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -598,8 +598,6 @@ W: http://linux-atm.sourceforge.net
598S: Maintained 598S: Maintained
599 599
600ATMEL MACB ETHERNET DRIVER 600ATMEL MACB ETHERNET DRIVER
601P: Atmel AVR32 Support Team
602M: avr32@atmel.com
603P: Haavard Skinnemoen 601P: Haavard Skinnemoen
604M: hskinnemoen@atmel.com 602M: hskinnemoen@atmel.com
605S: Supported 603S: Supported
@@ -620,8 +618,6 @@ T: git kernel.org:/pub/scm/linux/kernel/git/dwmw2/audit-2.6.git
620S: Maintained 618S: Maintained
621 619
622AVR32 ARCHITECTURE 620AVR32 ARCHITECTURE
623P: Atmel AVR32 Support Team
624M: avr32@atmel.com
625P: Haavard Skinnemoen 621P: Haavard Skinnemoen
626M: hskinnemoen@atmel.com 622M: hskinnemoen@atmel.com
627W: http://www.atmel.com/products/AVR32/ 623W: http://www.atmel.com/products/AVR32/
@@ -630,8 +626,6 @@ W: http://avrfreaks.net/
630S: Supported 626S: Supported
631 627
632AVR32/AT32AP MACHINE SUPPORT 628AVR32/AT32AP MACHINE SUPPORT
633P: Atmel AVR32 Support Team
634M: avr32@atmel.com
635P: Haavard Skinnemoen 629P: Haavard Skinnemoen
636M: hskinnemoen@atmel.com 630M: hskinnemoen@atmel.com
637S: Supported 631S: Supported
@@ -1137,9 +1131,9 @@ T: git kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git
1137S: Maintained 1131S: Maintained
1138 1132
1139DSCC4 DRIVER 1133DSCC4 DRIVER
1140P: François Romieu 1134P: Francois Romieu
1141M: romieu@cogenit.fr 1135M: romieu@fr.zoreil.com
1142M: romieu@ensta.fr 1136L: netdev@vger.kernel.org
1143S: Maintained 1137S: Maintained
1144 1138
1145DVB SUBSYSTEM AND DRIVERS 1139DVB SUBSYSTEM AND DRIVERS
@@ -1254,7 +1248,7 @@ S: Maintained
1254 1248
1255ETHERNET BRIDGE 1249ETHERNET BRIDGE
1256P: Stephen Hemminger 1250P: Stephen Hemminger
1257M: shemminger@osdl.org 1251M: shemminger@linux-foundation.org
1258L: bridge@osdl.org 1252L: bridge@osdl.org
1259W: http://bridge.sourceforge.net/ 1253W: http://bridge.sourceforge.net/
1260S: Maintained 1254S: Maintained
@@ -1598,12 +1592,11 @@ M: ipslinux@adaptec.com
1598W: http://www.developer.ibm.com/welcome/netfinity/serveraid.html 1592W: http://www.developer.ibm.com/welcome/netfinity/serveraid.html
1599S: Supported 1593S: Supported
1600 1594
1601IDE DRIVER [GENERAL] 1595IDE SUBSYSTEM
1602P: Bartlomiej Zolnierkiewicz 1596P: Bartlomiej Zolnierkiewicz
1603M: B.Zolnierkiewicz@elka.pw.edu.pl 1597M: bzolnier@gmail.com
1604L: linux-kernel@vger.kernel.org
1605L: linux-ide@vger.kernel.org 1598L: linux-ide@vger.kernel.org
1606T: git kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6.git 1599T: quilt kernel.org/pub/linux/kernel/people/bart/pata-2.6/
1607S: Maintained 1600S: Maintained
1608 1601
1609IDE/ATAPI CDROM DRIVER 1602IDE/ATAPI CDROM DRIVER
@@ -1928,11 +1921,10 @@ S: Maintained
1928 1921
1929KERNEL NFSD 1922KERNEL NFSD
1930P: Neil Brown 1923P: Neil Brown
1931M: neilb@cse.unsw.edu.au 1924M: neilb@suse.de
1932L: nfs@lists.sourceforge.net 1925L: nfs@lists.sourceforge.net
1933W: http://nfs.sourceforge.net/ 1926W: http://nfs.sourceforge.net/
1934W: http://www.cse.unsw.edu.au/~neilb/patches/linux-devel/ 1927S: Supported
1935S: Maintained
1936 1928
1937KERNEL VIRTUAL MACHINE (KVM) 1929KERNEL VIRTUAL MACHINE (KVM)
1938P: Avi Kivity 1930P: Avi Kivity
@@ -2277,7 +2269,7 @@ S: Maintained
2277 2269
2278NETEM NETWORK EMULATOR 2270NETEM NETWORK EMULATOR
2279P: Stephen Hemminger 2271P: Stephen Hemminger
2280M: shemminger@osdl.org 2272M: shemminger@linux-foundation.org
2281L: netem@osdl.org 2273L: netem@osdl.org
2282S: Maintained 2274S: Maintained
2283 2275
@@ -2290,7 +2282,7 @@ P: Jozsef Kadlecsik
2290P: Patrick McHardy 2282P: Patrick McHardy
2291M: kaber@trash.net 2283M: kaber@trash.net
2292L: netfilter-devel@lists.netfilter.org 2284L: netfilter-devel@lists.netfilter.org
2293L: netfilter@lists.netfilter.org 2285L: netfilter@lists.netfilter.org (subscribers-only)
2294L: coreteam@netfilter.org 2286L: coreteam@netfilter.org
2295W: http://www.netfilter.org/ 2287W: http://www.netfilter.org/
2296W: http://www.iptables.org/ 2288W: http://www.iptables.org/
@@ -2993,9 +2985,9 @@ SOFTWARE RAID (Multiple Disks) SUPPORT
2993P: Ingo Molnar 2985P: Ingo Molnar
2994M: mingo@redhat.com 2986M: mingo@redhat.com
2995P: Neil Brown 2987P: Neil Brown
2996M: neilb@cse.unsw.edu.au 2988M: neilb@suse.de
2997L: linux-raid@vger.kernel.org 2989L: linux-raid@vger.kernel.org
2998S: Maintained 2990S: Supported
2999 2991
3000SOFTWARE SUSPEND: 2992SOFTWARE SUSPEND:
3001P: Pavel Machek 2993P: Pavel Machek
@@ -3081,7 +3073,7 @@ S: Maintained
3081 3073
3082SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS 3074SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS
3083P: Stephen Hemminger 3075P: Stephen Hemminger
3084M: shemminger@osdl.org 3076M: shemminger@linux-foundation.org
3085L: netdev@vger.kernel.org 3077L: netdev@vger.kernel.org
3086S: Maintained 3078S: Maintained
3087 3079
@@ -3334,9 +3326,8 @@ W: http://www.linux-usb.org/gadget
3334S: Maintained 3326S: Maintained
3335 3327
3336USB HID/HIDBP DRIVERS 3328USB HID/HIDBP DRIVERS
3337P: Vojtech Pavlik 3329P: Jiri Kosina
3338M: vojtech@suse.cz 3330M: jkosina@suse.cz
3339L: linux-usb-users@lists.sourceforge.net
3340L: linux-usb-devel@lists.sourceforge.net 3331L: linux-usb-devel@lists.sourceforge.net
3341S: Maintained 3332S: Maintained
3342 3333
@@ -3576,6 +3567,12 @@ M: khali@linux-fr.org
3576L: i2c@lm-sensors.org 3567L: i2c@lm-sensors.org
3577S: Maintained 3568S: Maintained
3578 3569
3570VIA VELOCITY NETWORK DRIVER
3571P: Francois Romieu
3572M: romieu@fr.zoreil.com
3573L: netdev@vger.kernel.org
3574S: Maintained
3575
3579UCLINUX (AND M68KNOMMU) 3576UCLINUX (AND M68KNOMMU)
3580P: Greg Ungerer 3577P: Greg Ungerer
3581M: gerg@uclinux.org 3578M: gerg@uclinux.org
@@ -3596,6 +3593,12 @@ M: ysato@users.sourceforge.jp
3596W: http://uclinux-h8.sourceforge.jp/ 3593W: http://uclinux-h8.sourceforge.jp/
3597S: Supported 3594S: Supported
3598 3595
3596UFS FILESYSTEM
3597P: Evgeniy Dushistov
3598M: dushistov@mail.ru
3599L: linux-kernel@vger.kernel.org
3600S: Maintained
3601
3599USB DIAMOND RIO500 DRIVER 3602USB DIAMOND RIO500 DRIVER
3600P: Cesar Miquel 3603P: Cesar Miquel
3601M: miquel@df.uba.ar 3604M: miquel@df.uba.ar
diff --git a/Makefile b/Makefile
index 477f52e3c7f6..7e2750f4ca70 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 20 3SUBLEVEL = 20
4EXTRAVERSION =-rc5 4EXTRAVERSION =
5NAME = Homicidal Dwarf Hamster 5NAME = Homicidal Dwarf Hamster
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
@@ -1116,15 +1116,15 @@ help:
1116 @echo ' cscope - Generate cscope index' 1116 @echo ' cscope - Generate cscope index'
1117 @echo ' kernelrelease - Output the release version string' 1117 @echo ' kernelrelease - Output the release version string'
1118 @echo ' kernelversion - Output the version stored in Makefile' 1118 @echo ' kernelversion - Output the version stored in Makefile'
1119 @if [ -r include/asm-$(ARCH)/Kbuild ]; then \ 1119 @if [ -r $(srctree)/include/asm-$(ARCH)/Kbuild ]; then \
1120 echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \ 1120 echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
1121 echo ' (default: $(INSTALL_HDR_PATH))'; \
1121 fi 1122 fi
1122 @echo ' (default: $(INSTALL_HDR_PATH))'
1123 @echo '' 1123 @echo ''
1124 @echo 'Static analysers' 1124 @echo 'Static analysers'
1125 @echo ' checkstack - Generate a list of stack hogs' 1125 @echo ' checkstack - Generate a list of stack hogs'
1126 @echo ' namespacecheck - Name space analysis on compiled kernel' 1126 @echo ' namespacecheck - Name space analysis on compiled kernel'
1127 @if [ -r include/asm-$(ARCH)/Kbuild ]; then \ 1127 @if [ -r $(srctree)/include/asm-$(ARCH)/Kbuild ]; then \
1128 echo ' headers_check - Sanity check on exported headers'; \ 1128 echo ' headers_check - Sanity check on exported headers'; \
1129 fi 1129 fi
1130 @echo '' 1130 @echo ''
diff --git a/README b/README
index c05561523029..46a66c6e76df 100644
--- a/README
+++ b/README
@@ -278,8 +278,8 @@ IF SOMETHING GOES WRONG:
278 the file MAINTAINERS to see if there is a particular person associated 278 the file MAINTAINERS to see if there is a particular person associated
279 with the part of the kernel that you are having trouble with. If there 279 with the part of the kernel that you are having trouble with. If there
280 isn't anyone listed there, then the second best thing is to mail 280 isn't anyone listed there, then the second best thing is to mail
281 them to me (torvalds@osdl.org), and possibly to any other relevant 281 them to me (torvalds@linux-foundation.org), and possibly to any other
282 mailing-list or to the newsgroup. 282 relevant mailing-list or to the newsgroup.
283 283
284 - In all bug-reports, *please* tell what kernel you are talking about, 284 - In all bug-reports, *please* tell what kernel you are talking about,
285 how to duplicate the problem, and what your setup is (use your common 285 how to duplicate the problem, and what your setup is (use your common
diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c
index 3370e6faeae0..c15186390693 100644
--- a/arch/alpha/kernel/process.c
+++ b/arch/alpha/kernel/process.c
@@ -47,6 +47,7 @@
47 * Power off function, if any 47 * Power off function, if any
48 */ 48 */
49void (*pm_power_off)(void) = machine_power_off; 49void (*pm_power_off)(void) = machine_power_off;
50EXPORT_SYMBOL(pm_power_off);
50 51
51void 52void
52cpu_idle(void) 53cpu_idle(void)
diff --git a/arch/arm/configs/at91sam9260ek_defconfig b/arch/arm/configs/at91sam9260ek_defconfig
index 79049206dfa5..46b0c734aeb9 100644
--- a/arch/arm/configs/at91sam9260ek_defconfig
+++ b/arch/arm/configs/at91sam9260ek_defconfig
@@ -923,7 +923,6 @@ CONFIG_FORCED_INLINING=y
923# CONFIG_HEADERS_CHECK is not set 923# CONFIG_HEADERS_CHECK is not set
924# CONFIG_RCU_TORTURE_TEST is not set 924# CONFIG_RCU_TORTURE_TEST is not set
925CONFIG_DEBUG_USER=y 925CONFIG_DEBUG_USER=y
926# CONFIG_DEBUG_WAITQ is not set
927# CONFIG_DEBUG_ERRORS is not set 926# CONFIG_DEBUG_ERRORS is not set
928CONFIG_DEBUG_LL=y 927CONFIG_DEBUG_LL=y
929# CONFIG_DEBUG_ICEDCC is not set 928# CONFIG_DEBUG_ICEDCC is not set
diff --git a/arch/arm/configs/at91sam9261ek_defconfig b/arch/arm/configs/at91sam9261ek_defconfig
index 784ad7c0186d..fcd8fa091e9d 100644
--- a/arch/arm/configs/at91sam9261ek_defconfig
+++ b/arch/arm/configs/at91sam9261ek_defconfig
@@ -1079,7 +1079,6 @@ CONFIG_FORCED_INLINING=y
1079# CONFIG_HEADERS_CHECK is not set 1079# CONFIG_HEADERS_CHECK is not set
1080# CONFIG_RCU_TORTURE_TEST is not set 1080# CONFIG_RCU_TORTURE_TEST is not set
1081CONFIG_DEBUG_USER=y 1081CONFIG_DEBUG_USER=y
1082# CONFIG_DEBUG_WAITQ is not set
1083# CONFIG_DEBUG_ERRORS is not set 1082# CONFIG_DEBUG_ERRORS is not set
1084CONFIG_DEBUG_LL=y 1083CONFIG_DEBUG_LL=y
1085# CONFIG_DEBUG_ICEDCC is not set 1084# CONFIG_DEBUG_ICEDCC is not set
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index d994561816a1..cf495a3084b3 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -22,6 +22,10 @@
22#include <asm/thread_info.h> 22#include <asm/thread_info.h>
23#include <asm/system.h> 23#include <asm/system.h>
24 24
25#if (PHYS_OFFSET & 0x001fffff)
26#error "PHYS_OFFSET must be at an even 2MiB boundary!"
27#endif
28
25#define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET) 29#define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET)
26#define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET) 30#define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET)
27 31
@@ -251,7 +255,8 @@ __create_page_tables:
251 * Then map first 1MB of ram in case it contains our boot params. 255 * Then map first 1MB of ram in case it contains our boot params.
252 */ 256 */
253 add r0, r4, #PAGE_OFFSET >> 18 257 add r0, r4, #PAGE_OFFSET >> 18
254 orr r6, r7, #PHYS_OFFSET 258 orr r6, r7, #(PHYS_OFFSET & 0xff000000)
259 orr r6, r6, #(PHYS_OFFSET & 0x00e00000)
255 str r6, [r0] 260 str r6, [r0]
256 261
257#ifdef CONFIG_XIP_KERNEL 262#ifdef CONFIG_XIP_KERNEL
diff --git a/arch/arm/mach-at91rm9200/at91rm9200_devices.c b/arch/arm/mach-at91rm9200/at91rm9200_devices.c
index 4641b99db0ee..57fac7203fe4 100644
--- a/arch/arm/mach-at91rm9200/at91rm9200_devices.c
+++ b/arch/arm/mach-at91rm9200/at91rm9200_devices.c
@@ -272,7 +272,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data)
272 at91_set_A_periph(AT91_PIN_PC12, 0); /* NCS6/CFCE2 */ 272 at91_set_A_periph(AT91_PIN_PC12, 0); /* NCS6/CFCE2 */
273 273
274 /* nWAIT is _not_ a default setting */ 274 /* nWAIT is _not_ a default setting */
275 at91_set_A_periph(AT91_PIN_PC6, 1); /* nWAIT */ 275 at91_set_A_periph(AT91_PIN_PC6, 1); /* nWAIT */
276 276
277 cf_data = *data; 277 cf_data = *data;
278 platform_device_register(&at91rm9200_cf_device); 278 platform_device_register(&at91rm9200_cf_device);
diff --git a/arch/arm/mach-at91rm9200/at91sam9260.c b/arch/arm/mach-at91rm9200/at91sam9260.c
index 203f073a53e6..b14871adc300 100644
--- a/arch/arm/mach-at91rm9200/at91sam9260.c
+++ b/arch/arm/mach-at91rm9200/at91sam9260.c
@@ -16,6 +16,7 @@
16#include <asm/mach/map.h> 16#include <asm/mach/map.h>
17#include <asm/arch/at91sam9260.h> 17#include <asm/arch/at91sam9260.h>
18#include <asm/arch/at91_pmc.h> 18#include <asm/arch/at91_pmc.h>
19#include <asm/arch/at91_rstc.h>
19 20
20#include "generic.h" 21#include "generic.h"
21#include "clock.h" 22#include "clock.h"
@@ -212,7 +213,7 @@ static struct at91_gpio_bank at91sam9260_gpio[] = {
212 213
213static void at91sam9260_reset(void) 214static void at91sam9260_reset(void)
214{ 215{
215#warning "Implement CPU reset" 216 at91_sys_write(AT91_RSTC_CR, (0xA5 << 24) | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
216} 217}
217 218
218 219
diff --git a/arch/arm/mach-at91rm9200/at91sam9261.c b/arch/arm/mach-at91rm9200/at91sam9261.c
index 5a82f35da2e9..d242bb885c6d 100644
--- a/arch/arm/mach-at91rm9200/at91sam9261.c
+++ b/arch/arm/mach-at91rm9200/at91sam9261.c
@@ -16,6 +16,7 @@
16#include <asm/mach/map.h> 16#include <asm/mach/map.h>
17#include <asm/arch/at91sam9261.h> 17#include <asm/arch/at91sam9261.h>
18#include <asm/arch/at91_pmc.h> 18#include <asm/arch/at91_pmc.h>
19#include <asm/arch/at91_rstc.h>
19 20
20#include "generic.h" 21#include "generic.h"
21#include "clock.h" 22#include "clock.h"
@@ -207,7 +208,7 @@ static struct at91_gpio_bank at91sam9261_gpio[] = {
207 208
208static void at91sam9261_reset(void) 209static void at91sam9261_reset(void)
209{ 210{
210#warning "Implement CPU reset" 211 at91_sys_write(AT91_RSTC_CR, (0xA5 << 24) | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
211} 212}
212 213
213 214
diff --git a/arch/arm/mach-at91rm9200/gpio.c b/arch/arm/mach-at91rm9200/gpio.c
index 3f188508c391..af22659c8a28 100644
--- a/arch/arm/mach-at91rm9200/gpio.c
+++ b/arch/arm/mach-at91rm9200/gpio.c
@@ -20,7 +20,6 @@
20#include <asm/io.h> 20#include <asm/io.h>
21#include <asm/hardware.h> 21#include <asm/hardware.h>
22#include <asm/arch/at91_pio.h> 22#include <asm/arch/at91_pio.h>
23#include <asm/arch/at91_pmc.h>
24#include <asm/arch/gpio.h> 23#include <asm/arch/gpio.h>
25 24
26#include "generic.h" 25#include "generic.h"
@@ -224,17 +223,17 @@ static u32 backups[MAX_GPIO_BANKS];
224static int gpio_irq_set_wake(unsigned pin, unsigned state) 223static int gpio_irq_set_wake(unsigned pin, unsigned state)
225{ 224{
226 unsigned mask = pin_to_mask(pin); 225 unsigned mask = pin_to_mask(pin);
226 unsigned bank = (pin - PIN_BASE) / 32;
227 227
228 pin -= PIN_BASE; 228 if (unlikely(bank >= MAX_GPIO_BANKS))
229 pin /= 32;
230
231 if (unlikely(pin >= MAX_GPIO_BANKS))
232 return -EINVAL; 229 return -EINVAL;
233 230
234 if (state) 231 if (state)
235 wakeups[pin] |= mask; 232 wakeups[bank] |= mask;
236 else 233 else
237 wakeups[pin] &= ~mask; 234 wakeups[bank] &= ~mask;
235
236 set_irq_wake(gpio[bank].id, state);
238 237
239 return 0; 238 return 0;
240} 239}
@@ -246,29 +245,15 @@ void at91_gpio_suspend(void)
246 for (i = 0; i < gpio_banks; i++) { 245 for (i = 0; i < gpio_banks; i++) {
247 u32 pio = gpio[i].offset; 246 u32 pio = gpio[i].offset;
248 247
249 /*
250 * Note: drivers should have disabled GPIO interrupts that
251 * aren't supposed to be wakeup sources.
252 * But that is not much good on ARM..... disable_irq() does
253 * not update the hardware immediately, so the hardware mask
254 * (IMR) has the wrong value (not current, too much is
255 * permitted).
256 *
257 * Our workaround is to disable all non-wakeup IRQs ...
258 * which is exactly what correct drivers asked for in the
259 * first place!
260 */
261 backups[i] = at91_sys_read(pio + PIO_IMR); 248 backups[i] = at91_sys_read(pio + PIO_IMR);
262 at91_sys_write(pio + PIO_IDR, backups[i]); 249 at91_sys_write(pio + PIO_IDR, backups[i]);
263 at91_sys_write(pio + PIO_IER, wakeups[i]); 250 at91_sys_write(pio + PIO_IER, wakeups[i]);
264 251
265 if (!wakeups[i]) { 252 if (!wakeups[i])
266 disable_irq_wake(gpio[i].id); 253 clk_disable(gpio[i].clock);
267 at91_sys_write(AT91_PMC_PCDR, 1 << gpio[i].id); 254 else {
268 } else {
269 enable_irq_wake(gpio[i].id);
270#ifdef CONFIG_PM_DEBUG 255#ifdef CONFIG_PM_DEBUG
271 printk(KERN_DEBUG "GPIO-%c may wake for %08x\n", "ABCD"[i], wakeups[i]); 256 printk(KERN_DEBUG "GPIO-%c may wake for %08x\n", 'A'+i, wakeups[i]);
272#endif 257#endif
273 } 258 }
274 } 259 }
@@ -281,9 +266,11 @@ void at91_gpio_resume(void)
281 for (i = 0; i < gpio_banks; i++) { 266 for (i = 0; i < gpio_banks; i++) {
282 u32 pio = gpio[i].offset; 267 u32 pio = gpio[i].offset;
283 268
269 if (!wakeups[i])
270 clk_enable(gpio[i].clock);
271
284 at91_sys_write(pio + PIO_IDR, wakeups[i]); 272 at91_sys_write(pio + PIO_IDR, wakeups[i]);
285 at91_sys_write(pio + PIO_IER, backups[i]); 273 at91_sys_write(pio + PIO_IER, backups[i]);
286 at91_sys_write(AT91_PMC_PCER, 1 << gpio[i].id);
287 } 274 }
288} 275}
289 276
diff --git a/arch/arm/mach-imx/cpufreq.c b/arch/arm/mach-imx/cpufreq.c
index ac5f99895660..4f66e90db74f 100644
--- a/arch/arm/mach-imx/cpufreq.c
+++ b/arch/arm/mach-imx/cpufreq.c
@@ -184,6 +184,17 @@ static int imx_set_target(struct cpufreq_policy *policy,
184 long sysclk; 184 long sysclk;
185 unsigned int bclk_div = 1; 185 unsigned int bclk_div = 1;
186 186
187 /*
188 * Some governors do not respects CPU and policy lower limits
189 * which leads to bad things (division by zero etc), ensure
190 * that such things do not happen.
191 */
192 if(target_freq < policy->cpuinfo.min_freq)
193 target_freq = policy->cpuinfo.min_freq;
194
195 if(target_freq < policy->min)
196 target_freq = policy->min;
197
187 freq = target_freq * 1000; 198 freq = target_freq * 1000;
188 199
189 pr_debug(KERN_DEBUG "imx: requested frequency %ld Hz, mpctl0 at boot 0x%08x\n", 200 pr_debug(KERN_DEBUG "imx: requested frequency %ld Hz, mpctl0 at boot 0x%08x\n",
@@ -258,7 +269,8 @@ static int __init imx_cpufreq_driver_init(struct cpufreq_policy *policy)
258 policy->governor = CPUFREQ_DEFAULT_GOVERNOR; 269 policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
259 policy->cpuinfo.min_freq = 8000; 270 policy->cpuinfo.min_freq = 8000;
260 policy->cpuinfo.max_freq = 200000; 271 policy->cpuinfo.max_freq = 200000;
261 policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; 272 /* Manual states, that PLL stabilizes in two CLK32 periods */
273 policy->cpuinfo.transition_latency = 4 * 1000000000LL / CLK32;
262 return 0; 274 return 0;
263} 275}
264 276
diff --git a/arch/arm/mach-s3c2410/gpio.c b/arch/arm/mach-s3c2410/gpio.c
index ba346546150b..f6fb215bb48c 100644
--- a/arch/arm/mach-s3c2410/gpio.c
+++ b/arch/arm/mach-s3c2410/gpio.c
@@ -57,6 +57,7 @@ void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function)
57 case S3C2410_GPIO_SFN2: 57 case S3C2410_GPIO_SFN2:
58 case S3C2410_GPIO_SFN3: 58 case S3C2410_GPIO_SFN3:
59 if (pin < S3C2410_GPIO_BANKB) { 59 if (pin < S3C2410_GPIO_BANKB) {
60 function -= 1;
60 function &= 1; 61 function &= 1;
61 function <<= S3C2410_GPIO_OFFSET(pin); 62 function <<= S3C2410_GPIO_OFFSET(pin);
62 } else { 63 } else {
@@ -83,15 +84,18 @@ EXPORT_SYMBOL(s3c2410_gpio_cfgpin);
83unsigned int s3c2410_gpio_getcfg(unsigned int pin) 84unsigned int s3c2410_gpio_getcfg(unsigned int pin)
84{ 85{
85 void __iomem *base = S3C24XX_GPIO_BASE(pin); 86 void __iomem *base = S3C24XX_GPIO_BASE(pin);
86 unsigned long mask; 87 unsigned long val = __raw_readl(base);
87 88
88 if (pin < S3C2410_GPIO_BANKB) { 89 if (pin < S3C2410_GPIO_BANKB) {
89 mask = 1 << S3C2410_GPIO_OFFSET(pin); 90 val >>= S3C2410_GPIO_OFFSET(pin);
91 val &= 1;
92 val += 1;
90 } else { 93 } else {
91 mask = 3 << S3C2410_GPIO_OFFSET(pin)*2; 94 val >>= S3C2410_GPIO_OFFSET(pin)*2;
95 val &= 3;
92 } 96 }
93 97
94 return __raw_readl(base) & mask; 98 return val | S3C2410_GPIO_INPUT;
95} 99}
96 100
97EXPORT_SYMBOL(s3c2410_gpio_getcfg); 101EXPORT_SYMBOL(s3c2410_gpio_getcfg);
diff --git a/arch/arm/mach-s3c2410/pm.c b/arch/arm/mach-s3c2410/pm.c
index 00834097eb82..ebf294dd31da 100644
--- a/arch/arm/mach-s3c2410/pm.c
+++ b/arch/arm/mach-s3c2410/pm.c
@@ -451,15 +451,14 @@ static void s3c2410_pm_check_resume_pin(unsigned int pin, unsigned int irqoffs)
451 irqstate = s3c_irqwake_eintmask & (1L<<irqoffs); 451 irqstate = s3c_irqwake_eintmask & (1L<<irqoffs);
452 452
453 pinstate = s3c2410_gpio_getcfg(pin); 453 pinstate = s3c2410_gpio_getcfg(pin);
454 pinstate >>= S3C2410_GPIO_OFFSET(pin)*2;
455 454
456 if (!irqstate) { 455 if (!irqstate) {
457 if (pinstate == 0x02) 456 if (pinstate == S3C2410_GPIO_IRQ)
458 DBG("Leaving IRQ %d (pin %d) enabled\n", irq, pin); 457 DBG("Leaving IRQ %d (pin %d) enabled\n", irq, pin);
459 } else { 458 } else {
460 if (pinstate == 0x02) { 459 if (pinstate == S3C2410_GPIO_IRQ) {
461 DBG("Disabling IRQ %d (pin %d)\n", irq, pin); 460 DBG("Disabling IRQ %d (pin %d)\n", irq, pin);
462 s3c2410_gpio_cfgpin(pin, 0x00); 461 s3c2410_gpio_cfgpin(pin, S3C2410_GPIO_INPUT);
463 } 462 }
464 } 463 }
465} 464}
diff --git a/arch/arm/mach-s3c2410/s3c2412-dma.c b/arch/arm/mach-s3c2410/s3c2412-dma.c
index fe71a8fdb87c..138f726ac6bf 100644
--- a/arch/arm/mach-s3c2410/s3c2412-dma.c
+++ b/arch/arm/mach-s3c2410/s3c2412-dma.c
@@ -133,8 +133,8 @@ static struct s3c24xx_dma_map __initdata s3c2412_dma_mappings[] = {
133static void s3c2412_dma_select(struct s3c2410_dma_chan *chan, 133static void s3c2412_dma_select(struct s3c2410_dma_chan *chan,
134 struct s3c24xx_dma_map *map) 134 struct s3c24xx_dma_map *map)
135{ 135{
136 writel(chan->regs + S3C2412_DMA_DMAREQSEL, 136 writel(map->channels[0] | S3C2412_DMAREQSEL_HW,
137 map->channels[0] | S3C2412_DMAREQSEL_HW); 137 chan->regs + S3C2412_DMA_DMAREQSEL);
138} 138}
139 139
140static struct s3c24xx_dma_selection __initdata s3c2412_dma_sel = { 140static struct s3c24xx_dma_selection __initdata s3c2412_dma_sel = {
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index b5814b4b6f35..7760193e74cc 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -52,15 +52,18 @@ void show_mem(void)
52 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); 52 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
53 53
54 for_each_online_node(node) { 54 for_each_online_node(node) {
55 pg_data_t *n = NODE_DATA(node);
56 struct page *map = n->node_mem_map - n->node_start_pfn;
57
55 for_each_nodebank (i,mi,node) { 58 for_each_nodebank (i,mi,node) {
56 unsigned int pfn1, pfn2; 59 unsigned int pfn1, pfn2;
57 struct page *page, *end; 60 struct page *page, *end;
58 61
59 pfn1 = mi->bank[i].start >> PAGE_SHIFT; 62 pfn1 = __phys_to_pfn(mi->bank[i].start);
60 pfn2 = (mi->bank[i].size + mi->bank[i].start) >> PAGE_SHIFT; 63 pfn2 = __phys_to_pfn(mi->bank[i].size + mi->bank[i].start);
61 64
62 page = NODE_MEM_MAP(node) + pfn1; 65 page = map + pfn1;
63 end = NODE_MEM_MAP(node) + pfn2; 66 end = map + pfn2;
64 67
65 do { 68 do {
66 total++; 69 total++;
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
index 251685fe73a8..0ac615c0f798 100644
--- a/arch/arm/mm/ioremap.c
+++ b/arch/arm/mm/ioremap.c
@@ -300,7 +300,8 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size,
300 addr = (unsigned long)area->addr; 300 addr = (unsigned long)area->addr;
301 301
302#ifndef CONFIG_SMP 302#ifndef CONFIG_SMP
303 if ((((cpu_architecture() >= CPU_ARCH_ARMv6) && (get_cr() & CR_XP)) || 303 if (DOMAIN_IO == 0 &&
304 (((cpu_architecture() >= CPU_ARCH_ARMv6) && (get_cr() & CR_XP)) ||
304 cpu_is_xsc3()) && 305 cpu_is_xsc3()) &&
305 !((__pfn_to_phys(pfn) | size | addr) & ~SUPERSECTION_MASK)) { 306 !((__pfn_to_phys(pfn) | size | addr) & ~SUPERSECTION_MASK)) {
306 area->flags |= VM_ARM_SECTION_MAPPING; 307 area->flags |= VM_ARM_SECTION_MAPPING;
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S
index 490e11b34231..d29fe927ee9e 100644
--- a/arch/arm/mm/proc-xscale.S
+++ b/arch/arm/mm/proc-xscale.S
@@ -708,7 +708,7 @@ __8032x_proc_info:
708 .type __8033x_proc_info,#object 708 .type __8033x_proc_info,#object
709__8033x_proc_info: 709__8033x_proc_info:
710 .long 0x69054010 710 .long 0x69054010
711 .long 0xffffff30 711 .long 0xfffffd30
712 .long PMD_TYPE_SECT | \ 712 .long PMD_TYPE_SECT | \
713 PMD_SECT_BUFFERABLE | \ 713 PMD_SECT_BUFFERABLE | \
714 PMD_SECT_CACHEABLE | \ 714 PMD_SECT_CACHEABLE | \
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
index 8bcb838e5444..bd78058b7178 100644
--- a/arch/arm/tools/mach-types
+++ b/arch/arm/tools/mach-types
@@ -12,7 +12,7 @@
12# 12#
13# http://www.arm.linux.org.uk/developer/machines/?action=new 13# http://www.arm.linux.org.uk/developer/machines/?action=new
14# 14#
15# Last update: Thu Dec 7 17:19:20 2006 15# Last update: Tue Jan 16 16:52:56 2007
16# 16#
17# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number 17# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
18# 18#
@@ -1219,3 +1219,26 @@ zevio_1020 MACH_ZEVIO_1020 ZEVIO_1020 1207
1219hitrack MACH_HITRACK HITRACK 1208 1219hitrack MACH_HITRACK HITRACK 1208
1220syme1 MACH_SYME1 SYME1 1209 1220syme1 MACH_SYME1 SYME1 1209
1221syhl1 MACH_SYHL1 SYHL1 1210 1221syhl1 MACH_SYHL1 SYHL1 1210
1222empca400 MACH_EMPCA400 EMPCA400 1211
1223em7210 MACH_EM7210 EM7210 1212
1224htchermes MACH_HTCHERMES HTCHERMES 1213
1225eti_c1 MACH_ETI_C1 ETI_C1 1214
1226mach_dep2410 MACH_MACH_DEP2410 MACH_DEP2410 1215
1227ac100 MACH_AC100 AC100 1216
1228sneetch MACH_SNEETCH SNEETCH 1217
1229studentmate MACH_STUDENTMATE STUDENTMATE 1218
1230zir2410 MACH_ZIR2410 ZIR2410 1219
1231zir2413 MACH_ZIR2413 ZIR2413 1220
1232dlonip3 MACH_DLONIP3 DLONIP3 1221
1233instream MACH_INSTREAM INSTREAM 1222
1234ambarella MACH_AMBARELLA AMBARELLA 1223
1235nevis MACH_NEVIS NEVIS 1224
1236htc_trinity MACH_HTC_TRINITY HTC_TRINITY 1225
1237ql202b MACH_QL202B QL202B 1226
1238vpac270 MACH_VPAC270 VPAC270 1227
1239rd129 MACH_RD129 RD129 1228
1240htcwizard MACH_HTCWIZARD HTCWIZARD 1229
1241xscale_treo680 MACH_XSCALE_TREO680 XSCALE_TREO680 1230
1242tecon_tmezon MACH_TECON_TMEZON TECON_TMEZON 1231
1243zylonite MACH_ZYLONITE ZYLONITE 1233
1244gene1270 MACH_GENE1270 GENE1270 1234
diff --git a/arch/arm/vfp/entry.S b/arch/arm/vfp/entry.S
index 7b595547c1c8..ca2a5ad19ea6 100644
--- a/arch/arm/vfp/entry.S
+++ b/arch/arm/vfp/entry.S
@@ -25,6 +25,7 @@
25do_vfp: 25do_vfp:
26 enable_irq 26 enable_irq
27 ldr r4, .LCvfp 27 ldr r4, .LCvfp
28 ldr r11, [r10, #TI_CPU] @ CPU number
28 add r10, r10, #TI_VFPSTATE @ r10 = workspace 29 add r10, r10, #TI_VFPSTATE @ r10 = workspace
29 ldr pc, [r4] @ call VFP entry point 30 ldr pc, [r4] @ call VFP entry point
30 31
diff --git a/arch/arm/vfp/vfp.h b/arch/arm/vfp/vfp.h
index f2797896e6d5..54a2ad6d9ca2 100644
--- a/arch/arm/vfp/vfp.h
+++ b/arch/arm/vfp/vfp.h
@@ -370,3 +370,7 @@ struct op {
370 u32 (* const fn)(int dd, int dn, int dm, u32 fpscr); 370 u32 (* const fn)(int dd, int dn, int dm, u32 fpscr);
371 u32 flags; 371 u32 flags;
372}; 372};
373
374#ifdef CONFIG_SMP
375extern void vfp_save_state(void *location, u32 fpexc);
376#endif
diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S
index e51e6679c402..d4b7b229631d 100644
--- a/arch/arm/vfp/vfphw.S
+++ b/arch/arm/vfp/vfphw.S
@@ -65,6 +65,7 @@
65@ r2 = faulted PC+4 65@ r2 = faulted PC+4
66@ r9 = successful return 66@ r9 = successful return
67@ r10 = vfp_state union 67@ r10 = vfp_state union
68@ r11 = CPU number
68@ lr = failure return 69@ lr = failure return
69 70
70 .globl vfp_support_entry 71 .globl vfp_support_entry
@@ -79,7 +80,7 @@ vfp_support_entry:
79 DBGSTR1 "enable %x", r10 80 DBGSTR1 "enable %x", r10
80 ldr r3, last_VFP_context_address 81 ldr r3, last_VFP_context_address
81 orr r1, r1, #FPEXC_ENABLE @ user FPEXC has the enable bit set 82 orr r1, r1, #FPEXC_ENABLE @ user FPEXC has the enable bit set
82 ldr r4, [r3] @ last_VFP_context pointer 83 ldr r4, [r3, r11, lsl #2] @ last_VFP_context pointer
83 bic r5, r1, #FPEXC_EXCEPTION @ make sure exceptions are disabled 84 bic r5, r1, #FPEXC_EXCEPTION @ make sure exceptions are disabled
84 cmp r4, r10 85 cmp r4, r10
85 beq check_for_exception @ we are returning to the same 86 beq check_for_exception @ we are returning to the same
@@ -91,7 +92,9 @@ vfp_support_entry:
91 @ exceptions, so we can get at the 92 @ exceptions, so we can get at the
92 @ rest of it 93 @ rest of it
93 94
95#ifndef CONFIG_SMP
94 @ Save out the current registers to the old thread state 96 @ Save out the current registers to the old thread state
97 @ No need for SMP since this is not done lazily
95 98
96 DBGSTR1 "save old state %p", r4 99 DBGSTR1 "save old state %p", r4
97 cmp r4, #0 100 cmp r4, #0
@@ -105,10 +108,11 @@ vfp_support_entry:
105 stmia r4, {r1, r5, r6, r8} @ save FPEXC, FPSCR, FPINST, FPINST2 108 stmia r4, {r1, r5, r6, r8} @ save FPEXC, FPSCR, FPINST, FPINST2
106 @ and point r4 at the word at the 109 @ and point r4 at the word at the
107 @ start of the register dump 110 @ start of the register dump
111#endif
108 112
109no_old_VFP_process: 113no_old_VFP_process:
110 DBGSTR1 "load state %p", r10 114 DBGSTR1 "load state %p", r10
111 str r10, [r3] @ update the last_VFP_context pointer 115 str r10, [r3, r11, lsl #2] @ update the last_VFP_context pointer
112 @ Load the saved state back into the VFP 116 @ Load the saved state back into the VFP
113 VFPFLDMIA r10 @ reload the working registers while 117 VFPFLDMIA r10 @ reload the working registers while
114 @ FPEXC is in a safe state 118 @ FPEXC is in a safe state
@@ -162,6 +166,24 @@ process_exception:
162 @ required. If not, the user code will 166 @ required. If not, the user code will
163 @ retry the faulted instruction 167 @ retry the faulted instruction
164 168
169#ifdef CONFIG_SMP
170 .globl vfp_save_state
171 .type vfp_save_state, %function
172vfp_save_state:
173 @ Save the current VFP state
174 @ r0 - save location
175 @ r1 - FPEXC
176 DBGSTR1 "save VFP state %p", r0
177 VFPFMRX r2, FPSCR @ current status
178 VFPFMRX r3, FPINST @ FPINST (always there, rev0 onwards)
179 tst r1, #FPEXC_FPV2 @ is there an FPINST2 to read?
180 VFPFMRX r12, FPINST2, NE @ FPINST2 if needed - avoids reading
181 @ nonexistant reg on rev0
182 VFPFSTMIA r0 @ save the working registers
183 stmia r0, {r1, r2, r3, r12} @ save FPEXC, FPSCR, FPINST, FPINST2
184 mov pc, lr
185#endif
186
165last_VFP_context_address: 187last_VFP_context_address:
166 .word last_VFP_context 188 .word last_VFP_context
167 189
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
index 490d9d18a7d1..f1e5951dc721 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -28,7 +28,7 @@ void vfp_testing_entry(void);
28void vfp_support_entry(void); 28void vfp_support_entry(void);
29 29
30void (*vfp_vector)(void) = vfp_testing_entry; 30void (*vfp_vector)(void) = vfp_testing_entry;
31union vfp_state *last_VFP_context; 31union vfp_state *last_VFP_context[NR_CPUS];
32 32
33/* 33/*
34 * Dual-use variable. 34 * Dual-use variable.
@@ -41,13 +41,35 @@ static int vfp_notifier(struct notifier_block *self, unsigned long cmd, void *v)
41{ 41{
42 struct thread_info *thread = v; 42 struct thread_info *thread = v;
43 union vfp_state *vfp; 43 union vfp_state *vfp;
44 __u32 cpu = thread->cpu;
44 45
45 if (likely(cmd == THREAD_NOTIFY_SWITCH)) { 46 if (likely(cmd == THREAD_NOTIFY_SWITCH)) {
47 u32 fpexc = fmrx(FPEXC);
48
49#ifdef CONFIG_SMP
50 /*
51 * On SMP, if VFP is enabled, save the old state in
52 * case the thread migrates to a different CPU. The
53 * restoring is done lazily.
54 */
55 if ((fpexc & FPEXC_ENABLE) && last_VFP_context[cpu]) {
56 vfp_save_state(last_VFP_context[cpu], fpexc);
57 last_VFP_context[cpu]->hard.cpu = cpu;
58 }
59 /*
60 * Thread migration, just force the reloading of the
61 * state on the new CPU in case the VFP registers
62 * contain stale data.
63 */
64 if (thread->vfpstate.hard.cpu != cpu)
65 last_VFP_context[cpu] = NULL;
66#endif
67
46 /* 68 /*
47 * Always disable VFP so we can lazily save/restore the 69 * Always disable VFP so we can lazily save/restore the
48 * old state. 70 * old state.
49 */ 71 */
50 fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_ENABLE); 72 fmxr(FPEXC, fpexc & ~FPEXC_ENABLE);
51 return NOTIFY_DONE; 73 return NOTIFY_DONE;
52 } 74 }
53 75
@@ -68,8 +90,8 @@ static int vfp_notifier(struct notifier_block *self, unsigned long cmd, void *v)
68 } 90 }
69 91
70 /* flush and release case: Per-thread VFP cleanup. */ 92 /* flush and release case: Per-thread VFP cleanup. */
71 if (last_VFP_context == vfp) 93 if (last_VFP_context[cpu] == vfp)
72 last_VFP_context = NULL; 94 last_VFP_context[cpu] = NULL;
73 95
74 return NOTIFY_DONE; 96 return NOTIFY_DONE;
75} 97}
diff --git a/arch/avr32/configs/atstk1002_defconfig b/arch/avr32/configs/atstk1002_defconfig
index ae92a14ef9a0..77dace9d54bc 100644
--- a/arch/avr32/configs/atstk1002_defconfig
+++ b/arch/avr32/configs/atstk1002_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.19-rc2 3# Linux kernel version: 2.6.20-rc6
4# Fri Oct 20 11:52:37 2006 4# Fri Jan 26 13:12:59 2007
5# 5#
6CONFIG_AVR32=y 6CONFIG_AVR32=y
7CONFIG_GENERIC_HARDIRQS=y 7CONFIG_GENERIC_HARDIRQS=y
@@ -9,6 +9,8 @@ CONFIG_HARDIRQS_SW_RESEND=y
9CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_RWSEM_GENERIC_SPINLOCK=y 10CONFIG_RWSEM_GENERIC_SPINLOCK=y
11CONFIG_GENERIC_TIME=y 11CONFIG_GENERIC_TIME=y
12# CONFIG_ARCH_HAS_ILOG2_U32 is not set
13# CONFIG_ARCH_HAS_ILOG2_U64 is not set
12CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
14CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 16CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -36,6 +38,7 @@ CONFIG_TASK_DELAY_ACCT=y
36# CONFIG_UTS_NS is not set 38# CONFIG_UTS_NS is not set
37CONFIG_AUDIT=y 39CONFIG_AUDIT=y
38# CONFIG_IKCONFIG is not set 40# CONFIG_IKCONFIG is not set
41CONFIG_SYSFS_DEPRECATED=y
39CONFIG_RELAY=y 42CONFIG_RELAY=y
40CONFIG_INITRAMFS_SOURCE="" 43CONFIG_INITRAMFS_SOURCE=""
41CONFIG_CC_OPTIMIZE_FOR_SIZE=y 44CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -75,7 +78,9 @@ CONFIG_MODULE_UNLOAD=y
75# Block layer 78# Block layer
76# 79#
77CONFIG_BLOCK=y 80CONFIG_BLOCK=y
81# CONFIG_LBD is not set
78# CONFIG_BLK_DEV_IO_TRACE is not set 82# CONFIG_BLK_DEV_IO_TRACE is not set
83# CONFIG_LSF is not set
79 84
80# 85#
81# IO Schedulers 86# IO Schedulers
@@ -125,6 +130,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
125# CONFIG_OWNERSHIP_TRACE is not set 130# CONFIG_OWNERSHIP_TRACE is not set
126# CONFIG_HZ_100 is not set 131# CONFIG_HZ_100 is not set
127CONFIG_HZ_250=y 132CONFIG_HZ_250=y
133# CONFIG_HZ_300 is not set
128# CONFIG_HZ_1000 is not set 134# CONFIG_HZ_1000 is not set
129CONFIG_HZ=250 135CONFIG_HZ=250
130CONFIG_CMDLINE="" 136CONFIG_CMDLINE=""
@@ -182,6 +188,7 @@ CONFIG_INET_TCP_DIAG=y
182# CONFIG_TCP_CONG_ADVANCED is not set 188# CONFIG_TCP_CONG_ADVANCED is not set
183CONFIG_TCP_CONG_CUBIC=y 189CONFIG_TCP_CONG_CUBIC=y
184CONFIG_DEFAULT_TCP_CONG="cubic" 190CONFIG_DEFAULT_TCP_CONG="cubic"
191# CONFIG_TCP_MD5SIG is not set
185# CONFIG_IPV6 is not set 192# CONFIG_IPV6 is not set
186# CONFIG_INET6_XFRM_TUNNEL is not set 193# CONFIG_INET6_XFRM_TUNNEL is not set
187# CONFIG_INET6_TUNNEL is not set 194# CONFIG_INET6_TUNNEL is not set
@@ -260,6 +267,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
260# User Modules And Translation Layers 267# User Modules And Translation Layers
261# 268#
262CONFIG_MTD_CHAR=y 269CONFIG_MTD_CHAR=y
270CONFIG_MTD_BLKDEVS=y
263CONFIG_MTD_BLOCK=y 271CONFIG_MTD_BLOCK=y
264# CONFIG_FTL is not set 272# CONFIG_FTL is not set
265# CONFIG_NFTL is not set 273# CONFIG_NFTL is not set
@@ -355,7 +363,6 @@ CONFIG_BLK_DEV_INITRD=y
355# 363#
356# Misc devices 364# Misc devices
357# 365#
358# CONFIG_SGI_IOC4 is not set
359# CONFIG_TIFM_CORE is not set 366# CONFIG_TIFM_CORE is not set
360 367
361# 368#
@@ -405,11 +412,14 @@ CONFIG_TUN=m
405# 412#
406# PHY device support 413# PHY device support
407# 414#
415# CONFIG_PHYLIB is not set
408 416
409# 417#
410# Ethernet (10 or 100Mbit) 418# Ethernet (10 or 100Mbit)
411# 419#
412# CONFIG_NET_ETHERNET is not set 420CONFIG_NET_ETHERNET=y
421CONFIG_MII=y
422CONFIG_MACB=y
413 423
414# 424#
415# Ethernet (1000 Mbit) 425# Ethernet (1000 Mbit)
@@ -505,10 +515,6 @@ CONFIG_UNIX98_PTYS=y
505# CONFIG_GEN_RTC is not set 515# CONFIG_GEN_RTC is not set
506# CONFIG_DTLK is not set 516# CONFIG_DTLK is not set
507# CONFIG_R3964 is not set 517# CONFIG_R3964 is not set
508
509#
510# Ftape, the floppy tape device driver
511#
512# CONFIG_RAW_DRIVER is not set 518# CONFIG_RAW_DRIVER is not set
513 519
514# 520#
@@ -621,6 +627,10 @@ CONFIG_UNIX98_PTYS=y
621# 627#
622 628
623# 629#
630# Virtualization
631#
632
633#
624# File systems 634# File systems
625# 635#
626CONFIG_EXT2_FS=m 636CONFIG_EXT2_FS=m
@@ -683,7 +693,6 @@ CONFIG_CONFIGFS_FS=m
683# CONFIG_BEFS_FS is not set 693# CONFIG_BEFS_FS is not set
684# CONFIG_BFS_FS is not set 694# CONFIG_BFS_FS is not set
685# CONFIG_EFS_FS is not set 695# CONFIG_EFS_FS is not set
686# CONFIG_JFFS_FS is not set
687CONFIG_JFFS2_FS=y 696CONFIG_JFFS2_FS=y
688CONFIG_JFFS2_FS_DEBUG=0 697CONFIG_JFFS2_FS_DEBUG=0
689CONFIG_JFFS2_FS_WRITEBUFFER=y 698CONFIG_JFFS2_FS_WRITEBUFFER=y
@@ -763,6 +772,11 @@ CONFIG_NLS_ISO8859_1=m
763CONFIG_NLS_UTF8=m 772CONFIG_NLS_UTF8=m
764 773
765# 774#
775# Distributed Lock Manager
776#
777# CONFIG_DLM is not set
778
779#
766# Kernel hacking 780# Kernel hacking
767# 781#
768CONFIG_TRACE_IRQFLAGS_SUPPORT=y 782CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -770,6 +784,8 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
770CONFIG_ENABLE_MUST_CHECK=y 784CONFIG_ENABLE_MUST_CHECK=y
771CONFIG_MAGIC_SYSRQ=y 785CONFIG_MAGIC_SYSRQ=y
772# CONFIG_UNUSED_SYMBOLS is not set 786# CONFIG_UNUSED_SYMBOLS is not set
787CONFIG_DEBUG_FS=y
788# CONFIG_HEADERS_CHECK is not set
773CONFIG_DEBUG_KERNEL=y 789CONFIG_DEBUG_KERNEL=y
774CONFIG_LOG_BUF_SHIFT=14 790CONFIG_LOG_BUF_SHIFT=14
775CONFIG_DETECT_SOFTLOCKUP=y 791CONFIG_DETECT_SOFTLOCKUP=y
@@ -785,13 +801,10 @@ CONFIG_DETECT_SOFTLOCKUP=y
785# CONFIG_DEBUG_KOBJECT is not set 801# CONFIG_DEBUG_KOBJECT is not set
786CONFIG_DEBUG_BUGVERBOSE=y 802CONFIG_DEBUG_BUGVERBOSE=y
787# CONFIG_DEBUG_INFO is not set 803# CONFIG_DEBUG_INFO is not set
788CONFIG_DEBUG_FS=y
789# CONFIG_DEBUG_VM is not set 804# CONFIG_DEBUG_VM is not set
790# CONFIG_DEBUG_LIST is not set 805# CONFIG_DEBUG_LIST is not set
791CONFIG_FRAME_POINTER=y 806CONFIG_FRAME_POINTER=y
792# CONFIG_UNWIND_INFO is not set
793CONFIG_FORCED_INLINING=y 807CONFIG_FORCED_INLINING=y
794# CONFIG_HEADERS_CHECK is not set
795# CONFIG_RCU_TORTURE_TEST is not set 808# CONFIG_RCU_TORTURE_TEST is not set
796# CONFIG_KPROBES is not set 809# CONFIG_KPROBES is not set
797 810
@@ -809,6 +822,7 @@ CONFIG_FORCED_INLINING=y
809# 822#
810# Library routines 823# Library routines
811# 824#
825CONFIG_BITREVERSE=y
812CONFIG_CRC_CCITT=m 826CONFIG_CRC_CCITT=m
813# CONFIG_CRC16 is not set 827# CONFIG_CRC16 is not set
814CONFIG_CRC32=y 828CONFIG_CRC32=y
@@ -817,3 +831,4 @@ CONFIG_AUDIT_GENERIC=y
817CONFIG_ZLIB_INFLATE=y 831CONFIG_ZLIB_INFLATE=y
818CONFIG_ZLIB_DEFLATE=y 832CONFIG_ZLIB_DEFLATE=y
819CONFIG_PLIST=y 833CONFIG_PLIST=y
834CONFIG_IOMAP_COPY=y
diff --git a/arch/avr32/kernel/avr32_ksyms.c b/arch/avr32/kernel/avr32_ksyms.c
index 7c4c76114bba..80f55f8dbf1c 100644
--- a/arch/avr32/kernel/avr32_ksyms.c
+++ b/arch/avr32/kernel/avr32_ksyms.c
@@ -29,6 +29,7 @@ EXPORT_SYMBOL(__avr32_asr64);
29 */ 29 */
30EXPORT_SYMBOL(memset); 30EXPORT_SYMBOL(memset);
31EXPORT_SYMBOL(memcpy); 31EXPORT_SYMBOL(memcpy);
32EXPORT_SYMBOL(clear_page);
32 33
33/* 34/*
34 * Userspace access stuff. 35 * Userspace access stuff.
diff --git a/arch/i386/boot/compressed/relocs.c b/arch/i386/boot/compressed/relocs.c
index 468da89153c4..881951ca03e1 100644
--- a/arch/i386/boot/compressed/relocs.c
+++ b/arch/i386/boot/compressed/relocs.c
@@ -43,6 +43,8 @@ static int is_safe_abs_reloc(const char* sym_name)
43 /* Match found */ 43 /* Match found */
44 return 1; 44 return 1;
45 } 45 }
46 if (strncmp(sym_name, "__crc_", 6) == 0)
47 return 1;
46 return 0; 48 return 0;
47} 49}
48 50
diff --git a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c
index 8689d62abd4a..8a8bbdaaf38a 100644
--- a/arch/i386/kernel/cpu/common.c
+++ b/arch/i386/kernel/cpu/common.c
@@ -710,11 +710,8 @@ __cpuinit int init_gdt(int cpu, struct task_struct *idle)
710 return 1; 710 return 1;
711} 711}
712 712
713/* Common CPU init for both boot and secondary CPUs */ 713void __cpuinit cpu_set_gdt(int cpu)
714static void __cpuinit _cpu_init(int cpu, struct task_struct *curr)
715{ 714{
716 struct tss_struct * t = &per_cpu(init_tss, cpu);
717 struct thread_struct *thread = &curr->thread;
718 struct Xgt_desc_struct *cpu_gdt_descr = &per_cpu(cpu_gdt_descr, cpu); 715 struct Xgt_desc_struct *cpu_gdt_descr = &per_cpu(cpu_gdt_descr, cpu);
719 716
720 /* Reinit these anyway, even if they've already been done (on 717 /* Reinit these anyway, even if they've already been done (on
@@ -722,6 +719,13 @@ static void __cpuinit _cpu_init(int cpu, struct task_struct *curr)
722 the real ones). */ 719 the real ones). */
723 load_gdt(cpu_gdt_descr); 720 load_gdt(cpu_gdt_descr);
724 set_kernel_gs(); 721 set_kernel_gs();
722}
723
724/* Common CPU init for both boot and secondary CPUs */
725static void __cpuinit _cpu_init(int cpu, struct task_struct *curr)
726{
727 struct tss_struct * t = &per_cpu(init_tss, cpu);
728 struct thread_struct *thread = &curr->thread;
725 729
726 if (cpu_test_and_set(cpu, cpu_initialized)) { 730 if (cpu_test_and_set(cpu, cpu_initialized)) {
727 printk(KERN_WARNING "CPU#%d already initialized!\n", cpu); 731 printk(KERN_WARNING "CPU#%d already initialized!\n", cpu);
@@ -807,6 +811,7 @@ void __cpuinit cpu_init(void)
807 local_irq_enable(); 811 local_irq_enable();
808 } 812 }
809 813
814 cpu_set_gdt(cpu);
810 _cpu_init(cpu, curr); 815 _cpu_init(cpu, curr);
811} 816}
812 817
diff --git a/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c b/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c
index bec50170b75a..4786fedca6eb 100644
--- a/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c
+++ b/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c
@@ -51,7 +51,6 @@ enum {
51 51
52 52
53static int has_N44_O17_errata[NR_CPUS]; 53static int has_N44_O17_errata[NR_CPUS];
54static int has_N60_errata[NR_CPUS];
55static unsigned int stock_freq; 54static unsigned int stock_freq;
56static struct cpufreq_driver p4clockmod_driver; 55static struct cpufreq_driver p4clockmod_driver;
57static unsigned int cpufreq_p4_get(unsigned int cpu); 56static unsigned int cpufreq_p4_get(unsigned int cpu);
@@ -224,12 +223,6 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)
224 case 0x0f12: 223 case 0x0f12:
225 has_N44_O17_errata[policy->cpu] = 1; 224 has_N44_O17_errata[policy->cpu] = 1;
226 dprintk("has errata -- disabling low frequencies\n"); 225 dprintk("has errata -- disabling low frequencies\n");
227 break;
228
229 case 0x0f29:
230 has_N60_errata[policy->cpu] = 1;
231 dprintk("has errata -- disabling frequencies lower than 2ghz\n");
232 break;
233 } 226 }
234 227
235 /* get max frequency */ 228 /* get max frequency */
@@ -241,8 +234,6 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)
241 for (i=1; (p4clockmod_table[i].frequency != CPUFREQ_TABLE_END); i++) { 234 for (i=1; (p4clockmod_table[i].frequency != CPUFREQ_TABLE_END); i++) {
242 if ((i<2) && (has_N44_O17_errata[policy->cpu])) 235 if ((i<2) && (has_N44_O17_errata[policy->cpu]))
243 p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID; 236 p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID;
244 else if (has_N60_errata[policy->cpu] && ((stock_freq * i)/8) < 2000000)
245 p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID;
246 else 237 else
247 p4clockmod_table[i].frequency = (stock_freq * i)/8; 238 p4clockmod_table[i].frequency = (stock_freq * i)/8;
248 } 239 }
diff --git a/arch/i386/kernel/cpu/cyrix.c b/arch/i386/kernel/cpu/cyrix.c
index abcff92f994c..c0c3b59de32c 100644
--- a/arch/i386/kernel/cpu/cyrix.c
+++ b/arch/i386/kernel/cpu/cyrix.c
@@ -173,7 +173,7 @@ static void __cpuinit geode_configure(void)
173 ccr4 = getCx86(CX86_CCR4); 173 ccr4 = getCx86(CX86_CCR4);
174 ccr4 |= 0x38; /* FPU fast, DTE cache, Mem bypass */ 174 ccr4 |= 0x38; /* FPU fast, DTE cache, Mem bypass */
175 175
176 setCx86(CX86_CCR4, ccr4); 176 setCx86(CX86_CCR3, ccr3);
177 177
178 set_cx86_memwb(); 178 set_cx86_memwb();
179 set_cx86_reorder(); 179 set_cx86_reorder();
diff --git a/arch/i386/kernel/efi.c b/arch/i386/kernel/efi.c
index b92c7f0a358a..8f9c624ace6f 100644
--- a/arch/i386/kernel/efi.c
+++ b/arch/i386/kernel/efi.c
@@ -473,6 +473,70 @@ static inline void __init check_range_for_systab(efi_memory_desc_t *md)
473} 473}
474 474
475/* 475/*
476 * Wrap all the virtual calls in a way that forces the parameters on the stack.
477 */
478
479#define efi_call_virt(f, args...) \
480 ((efi_##f##_t __attribute__((regparm(0)))*)efi.systab->runtime->f)(args)
481
482static efi_status_t virt_efi_get_time(efi_time_t *tm, efi_time_cap_t *tc)
483{
484 return efi_call_virt(get_time, tm, tc);
485}
486
487static efi_status_t virt_efi_set_time (efi_time_t *tm)
488{
489 return efi_call_virt(set_time, tm);
490}
491
492static efi_status_t virt_efi_get_wakeup_time (efi_bool_t *enabled,
493 efi_bool_t *pending,
494 efi_time_t *tm)
495{
496 return efi_call_virt(get_wakeup_time, enabled, pending, tm);
497}
498
499static efi_status_t virt_efi_set_wakeup_time (efi_bool_t enabled,
500 efi_time_t *tm)
501{
502 return efi_call_virt(set_wakeup_time, enabled, tm);
503}
504
505static efi_status_t virt_efi_get_variable (efi_char16_t *name,
506 efi_guid_t *vendor, u32 *attr,
507 unsigned long *data_size, void *data)
508{
509 return efi_call_virt(get_variable, name, vendor, attr, data_size, data);
510}
511
512static efi_status_t virt_efi_get_next_variable (unsigned long *name_size,
513 efi_char16_t *name,
514 efi_guid_t *vendor)
515{
516 return efi_call_virt(get_next_variable, name_size, name, vendor);
517}
518
519static efi_status_t virt_efi_set_variable (efi_char16_t *name,
520 efi_guid_t *vendor,
521 unsigned long attr,
522 unsigned long data_size, void *data)
523{
524 return efi_call_virt(set_variable, name, vendor, attr, data_size, data);
525}
526
527static efi_status_t virt_efi_get_next_high_mono_count (u32 *count)
528{
529 return efi_call_virt(get_next_high_mono_count, count);
530}
531
532static void virt_efi_reset_system (int reset_type, efi_status_t status,
533 unsigned long data_size,
534 efi_char16_t *data)
535{
536 efi_call_virt(reset_system, reset_type, status, data_size, data);
537}
538
539/*
476 * This function will switch the EFI runtime services to virtual mode. 540 * This function will switch the EFI runtime services to virtual mode.
477 * Essentially, look through the EFI memmap and map every region that 541 * Essentially, look through the EFI memmap and map every region that
478 * has the runtime attribute bit set in its memory descriptor and update 542 * has the runtime attribute bit set in its memory descriptor and update
@@ -525,22 +589,15 @@ void __init efi_enter_virtual_mode(void)
525 * pointers in the runtime service table to the new virtual addresses. 589 * pointers in the runtime service table to the new virtual addresses.
526 */ 590 */
527 591
528 efi.get_time = (efi_get_time_t *) efi.systab->runtime->get_time; 592 efi.get_time = virt_efi_get_time;
529 efi.set_time = (efi_set_time_t *) efi.systab->runtime->set_time; 593 efi.set_time = virt_efi_set_time;
530 efi.get_wakeup_time = (efi_get_wakeup_time_t *) 594 efi.get_wakeup_time = virt_efi_get_wakeup_time;
531 efi.systab->runtime->get_wakeup_time; 595 efi.set_wakeup_time = virt_efi_set_wakeup_time;
532 efi.set_wakeup_time = (efi_set_wakeup_time_t *) 596 efi.get_variable = virt_efi_get_variable;
533 efi.systab->runtime->set_wakeup_time; 597 efi.get_next_variable = virt_efi_get_next_variable;
534 efi.get_variable = (efi_get_variable_t *) 598 efi.set_variable = virt_efi_set_variable;
535 efi.systab->runtime->get_variable; 599 efi.get_next_high_mono_count = virt_efi_get_next_high_mono_count;
536 efi.get_next_variable = (efi_get_next_variable_t *) 600 efi.reset_system = virt_efi_reset_system;
537 efi.systab->runtime->get_next_variable;
538 efi.set_variable = (efi_set_variable_t *)
539 efi.systab->runtime->set_variable;
540 efi.get_next_high_mono_count = (efi_get_next_high_mono_count_t *)
541 efi.systab->runtime->get_next_high_mono_count;
542 efi.reset_system = (efi_reset_system_t *)
543 efi.systab->runtime->reset_system;
544} 601}
545 602
546void __init 603void __init
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S
index 06461b8b715d..5e47683fc63a 100644
--- a/arch/i386/kernel/entry.S
+++ b/arch/i386/kernel/entry.S
@@ -302,12 +302,16 @@ sysenter_past_esp:
302 pushl $(__USER_CS) 302 pushl $(__USER_CS)
303 CFI_ADJUST_CFA_OFFSET 4 303 CFI_ADJUST_CFA_OFFSET 4
304 /*CFI_REL_OFFSET cs, 0*/ 304 /*CFI_REL_OFFSET cs, 0*/
305#ifndef CONFIG_COMPAT_VDSO
305 /* 306 /*
306 * Push current_thread_info()->sysenter_return to the stack. 307 * Push current_thread_info()->sysenter_return to the stack.
307 * A tiny bit of offset fixup is necessary - 4*4 means the 4 words 308 * A tiny bit of offset fixup is necessary - 4*4 means the 4 words
308 * pushed above; +8 corresponds to copy_thread's esp0 setting. 309 * pushed above; +8 corresponds to copy_thread's esp0 setting.
309 */ 310 */
310 pushl (TI_sysenter_return-THREAD_SIZE+8+4*4)(%esp) 311 pushl (TI_sysenter_return-THREAD_SIZE+8+4*4)(%esp)
312#else
313 pushl $SYSENTER_RETURN
314#endif
311 CFI_ADJUST_CFA_OFFSET 4 315 CFI_ADJUST_CFA_OFFSET 4
312 CFI_REL_OFFSET eip, 0 316 CFI_REL_OFFSET eip, 0
313 317
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
index 2424cc9c7b3d..6a3875f81a0a 100644
--- a/arch/i386/kernel/io_apic.c
+++ b/arch/i386/kernel/io_apic.c
@@ -1227,26 +1227,32 @@ static u8 irq_vector[NR_IRQ_VECTORS] __read_mostly = { FIRST_DEVICE_VECTOR , 0 }
1227 1227
1228static int __assign_irq_vector(int irq) 1228static int __assign_irq_vector(int irq)
1229{ 1229{
1230 static int current_vector = FIRST_DEVICE_VECTOR, offset = 0; 1230 static int current_vector = FIRST_DEVICE_VECTOR, current_offset = 0;
1231 int vector; 1231 int vector, offset, i;
1232 1232
1233 BUG_ON((unsigned)irq >= NR_IRQ_VECTORS); 1233 BUG_ON((unsigned)irq >= NR_IRQ_VECTORS);
1234 1234
1235 if (irq_vector[irq] > 0) 1235 if (irq_vector[irq] > 0)
1236 return irq_vector[irq]; 1236 return irq_vector[irq];
1237 1237
1238 current_vector += 8;
1239 if (current_vector == SYSCALL_VECTOR)
1240 current_vector += 8;
1241
1242 if (current_vector >= FIRST_SYSTEM_VECTOR) {
1243 offset++;
1244 if (!(offset % 8))
1245 return -ENOSPC;
1246 current_vector = FIRST_DEVICE_VECTOR + offset;
1247 }
1248
1249 vector = current_vector; 1238 vector = current_vector;
1239 offset = current_offset;
1240next:
1241 vector += 8;
1242 if (vector >= FIRST_SYSTEM_VECTOR) {
1243 offset = (offset + 1) % 8;
1244 vector = FIRST_DEVICE_VECTOR + offset;
1245 }
1246 if (vector == current_vector)
1247 return -ENOSPC;
1248 if (vector == SYSCALL_VECTOR)
1249 goto next;
1250 for (i = 0; i < NR_IRQ_VECTORS; i++)
1251 if (irq_vector[i] == vector)
1252 goto next;
1253
1254 current_vector = vector;
1255 current_offset = offset;
1250 irq_vector[irq] = vector; 1256 irq_vector[irq] = vector;
1251 1257
1252 return vector; 1258 return vector;
diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c
index a5e34d655965..1a6f8bb8881c 100644
--- a/arch/i386/kernel/nmi.c
+++ b/arch/i386/kernel/nmi.c
@@ -310,13 +310,7 @@ static int __init setup_nmi_watchdog(char *str)
310 310
311 if ((nmi >= NMI_INVALID) || (nmi < NMI_NONE)) 311 if ((nmi >= NMI_INVALID) || (nmi < NMI_NONE))
312 return 0; 312 return 0;
313 /* 313
314 * If any other x86 CPU has a local APIC, then
315 * please test the NMI stuff there and send me the
316 * missing bits. Right now Intel P6/P4 and AMD K7 only.
317 */
318 if ((nmi == NMI_LOCAL_APIC) && (nmi_known_cpu() == 0))
319 return 0; /* no lapic support */
320 nmi_watchdog = nmi; 314 nmi_watchdog = nmi;
321 return 1; 315 return 1;
322} 316}
diff --git a/arch/i386/kernel/paravirt.c b/arch/i386/kernel/paravirt.c
index 3dceab5828f1..e55fd05da0f5 100644
--- a/arch/i386/kernel/paravirt.c
+++ b/arch/i386/kernel/paravirt.c
@@ -566,4 +566,11 @@ struct paravirt_ops paravirt_ops = {
566 .irq_enable_sysexit = native_irq_enable_sysexit, 566 .irq_enable_sysexit = native_irq_enable_sysexit,
567 .iret = native_iret, 567 .iret = native_iret,
568}; 568};
569EXPORT_SYMBOL(paravirt_ops); 569
570/*
571 * NOTE: CONFIG_PARAVIRT is experimental and the paravirt_ops
572 * semantics are subject to change. Hence we only do this
573 * internal-only export of this, until it gets sorted out and
574 * all lowlevel CPU ops used by modules are separately exported.
575 */
576EXPORT_SYMBOL_GPL(paravirt_ops);
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index dea7ef9d3e82..8c6c8c52b95c 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -596,6 +596,12 @@ static void __cpuinit start_secondary(void *unused)
596void __devinit initialize_secondary(void) 596void __devinit initialize_secondary(void)
597{ 597{
598 /* 598 /*
599 * switch to the per CPU GDT we already set up
600 * in do_boot_cpu()
601 */
602 cpu_set_gdt(current_thread_info()->cpu);
603
604 /*
599 * We don't actually need to load the full TSS, 605 * We don't actually need to load the full TSS,
600 * basically just the stack pointer and the eip. 606 * basically just the stack pointer and the eip.
601 */ 607 */
@@ -972,9 +978,6 @@ static int __cpuinit do_boot_cpu(int apicid, int cpu)
972 /* Stack for startup_32 can be just as for start_secondary onwards */ 978 /* Stack for startup_32 can be just as for start_secondary onwards */
973 stack_start.esp = (void *) idle->thread.esp; 979 stack_start.esp = (void *) idle->thread.esp;
974 980
975 start_pda = cpu_pda(cpu);
976 cpu_gdt_descr = per_cpu(cpu_gdt_descr, cpu);
977
978 irq_ctx_init(cpu); 981 irq_ctx_init(cpu);
979 982
980 x86_cpu_to_apicid[cpu] = apicid; 983 x86_cpu_to_apicid[cpu] = apicid;
diff --git a/arch/i386/kernel/sysenter.c b/arch/i386/kernel/sysenter.c
index 7de9117b5a3a..5da744204d10 100644
--- a/arch/i386/kernel/sysenter.c
+++ b/arch/i386/kernel/sysenter.c
@@ -79,11 +79,6 @@ int __init sysenter_setup(void)
79#ifdef CONFIG_COMPAT_VDSO 79#ifdef CONFIG_COMPAT_VDSO
80 __set_fixmap(FIX_VDSO, __pa(syscall_page), PAGE_READONLY); 80 __set_fixmap(FIX_VDSO, __pa(syscall_page), PAGE_READONLY);
81 printk("Compat vDSO mapped to %08lx.\n", __fix_to_virt(FIX_VDSO)); 81 printk("Compat vDSO mapped to %08lx.\n", __fix_to_virt(FIX_VDSO));
82#else
83 /*
84 * In the non-compat case the ELF coredumping code needs the fixmap:
85 */
86 __set_fixmap(FIX_VDSO, __pa(syscall_page), PAGE_KERNEL_RO);
87#endif 82#endif
88 83
89 if (!boot_cpu_has(X86_FEATURE_SEP)) { 84 if (!boot_cpu_has(X86_FEATURE_SEP)) {
@@ -100,6 +95,7 @@ int __init sysenter_setup(void)
100 return 0; 95 return 0;
101} 96}
102 97
98#ifndef CONFIG_COMPAT_VDSO
103static struct page *syscall_nopage(struct vm_area_struct *vma, 99static struct page *syscall_nopage(struct vm_area_struct *vma,
104 unsigned long adr, int *type) 100 unsigned long adr, int *type)
105{ 101{
@@ -146,6 +142,13 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int exstack)
146 vma->vm_end = addr + PAGE_SIZE; 142 vma->vm_end = addr + PAGE_SIZE;
147 /* MAYWRITE to allow gdb to COW and set breakpoints */ 143 /* MAYWRITE to allow gdb to COW and set breakpoints */
148 vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYEXEC|VM_MAYWRITE; 144 vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYEXEC|VM_MAYWRITE;
145 /*
146 * Make sure the vDSO gets into every core dump.
147 * Dumping its contents makes post-mortem fully interpretable later
148 * without matching up the same kernel and hardware config to see
149 * what PC values meant.
150 */
151 vma->vm_flags |= VM_ALWAYSDUMP;
149 vma->vm_flags |= mm->def_flags; 152 vma->vm_flags |= mm->def_flags;
150 vma->vm_page_prot = protection_map[vma->vm_flags & 7]; 153 vma->vm_page_prot = protection_map[vma->vm_flags & 7];
151 vma->vm_ops = &syscall_vm_ops; 154 vma->vm_ops = &syscall_vm_ops;
@@ -187,3 +190,4 @@ int in_gate_area_no_task(unsigned long addr)
187{ 190{
188 return 0; 191 return 0;
189} 192}
193#endif
diff --git a/arch/i386/mach-default/setup.c b/arch/i386/mach-default/setup.c
index c511705c386c..cc2f519b2f7f 100644
--- a/arch/i386/mach-default/setup.c
+++ b/arch/i386/mach-default/setup.c
@@ -102,7 +102,7 @@ void __init time_init_hook(void)
102 * along the MCA bus. Use this to hook into that chain if you will need 102 * along the MCA bus. Use this to hook into that chain if you will need
103 * it. 103 * it.
104 **/ 104 **/
105void __init mca_nmi_hook(void) 105void mca_nmi_hook(void)
106{ 106{
107 /* If I recall correctly, there's a whole bunch of other things that 107 /* If I recall correctly, there's a whole bunch of other things that
108 * we can do to check for NMI problems, but that's all I know about 108 * we can do to check for NMI problems, but that's all I know about
diff --git a/arch/i386/mach-voyager/voyager_smp.c b/arch/i386/mach-voyager/voyager_smp.c
index 55428e656a3f..74aeedf277f4 100644
--- a/arch/i386/mach-voyager/voyager_smp.c
+++ b/arch/i386/mach-voyager/voyager_smp.c
@@ -773,6 +773,12 @@ initialize_secondary(void)
773#endif 773#endif
774 774
775 /* 775 /*
776 * switch to the per CPU GDT we already set up
777 * in do_boot_cpu()
778 */
779 cpu_set_gdt(current_thread_info()->cpu);
780
781 /*
776 * We don't actually need to load the full TSS, 782 * We don't actually need to load the full TSS,
777 * basically just the stack pointer and the eip. 783 * basically just the stack pointer and the eip.
778 */ 784 */
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index ef2fe474f107..29f05d4b68cd 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -609,6 +609,9 @@ EXPORT_SYMBOL(acpi_register_gsi);
609 609
610void acpi_unregister_gsi(u32 gsi) 610void acpi_unregister_gsi(u32 gsi)
611{ 611{
612 if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM)
613 return;
614
612 iosapic_unregister_intr(gsi); 615 iosapic_unregister_intr(gsi);
613} 616}
614 617
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index 54d55e4d64f7..ce49c85c928f 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -122,6 +122,9 @@ static void migrate_irqs(void)
122 for (irq=0; irq < NR_IRQS; irq++) { 122 for (irq=0; irq < NR_IRQS; irq++) {
123 desc = irq_desc + irq; 123 desc = irq_desc + irq;
124 124
125 if (desc->status == IRQ_DISABLED)
126 continue;
127
125 /* 128 /*
126 * No handling for now. 129 * No handling for now.
127 * TBD: Implement a disable function so we can now 130 * TBD: Implement a disable function so we can now
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index fd2ff0698a85..bbd386f572d9 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1568,6 +1568,20 @@ config MIPS_MT_FPAFF
1568 depends on MIPS_MT 1568 depends on MIPS_MT
1569 default y 1569 default y
1570 1570
1571config MIPS_MT_SMTC_INSTANT_REPLAY
1572 bool "Low-latency Dispatch of Deferred SMTC IPIs"
1573 depends on MIPS_MT_SMTC
1574 default y
1575 help
1576 SMTC pseudo-interrupts between TCs are deferred and queued
1577 if the target TC is interrupt-inhibited (IXMT). In the first
1578 SMTC prototypes, these queued IPIs were serviced on return
1579 to user mode, or on entry into the kernel idle loop. The
1580 INSTANT_REPLAY option dispatches them as part of local_irq_restore()
1581 processing, which adds runtime overhead (hence the option to turn
1582 it off), but ensures that IPIs are handled promptly even under
1583 heavy I/O interrupt load.
1584
1571config MIPS_VPE_LOADER_TOM 1585config MIPS_VPE_LOADER_TOM
1572 bool "Load VPE program into memory hidden from linux" 1586 bool "Load VPE program into memory hidden from linux"
1573 depends on MIPS_VPE_LOADER 1587 depends on MIPS_VPE_LOADER
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index d1b026a0337d..c68b5d3e5d18 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -623,7 +623,7 @@ LDFLAGS += -m $(ld-emul)
623 623
624ifdef CONFIG_MIPS 624ifdef CONFIG_MIPS
625CHECKFLAGS += $(shell $(CC) $(CFLAGS) -dM -E -xc /dev/null | \ 625CHECKFLAGS += $(shell $(CC) $(CFLAGS) -dM -E -xc /dev/null | \
626 egrep -vw '__GNUC_(MAJOR|MINOR|PATCHLEVEL)__' | \ 626 egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \
627 sed -e 's/^\#define /-D/' -e "s/ /='/" -e "s/$$/'/") 627 sed -e 's/^\#define /-D/' -e "s/ /='/" -e "s/$$/'/")
628ifdef CONFIG_64BIT 628ifdef CONFIG_64BIT
629CHECKFLAGS += -m64 629CHECKFLAGS += -m64
diff --git a/arch/mips/dec/prom/memory.c b/arch/mips/dec/prom/memory.c
index 3027ce782797..3aa01d268f2d 100644
--- a/arch/mips/dec/prom/memory.c
+++ b/arch/mips/dec/prom/memory.c
@@ -122,7 +122,7 @@ unsigned long __init prom_free_prom_memory(void)
122 addr += PAGE_SIZE; 122 addr += PAGE_SIZE;
123 } 123 }
124 124
125 printk("Freeing unused PROM memory: %ldk freed\n", 125 printk("Freeing unused PROM memory: %ldkb freed\n",
126 (end - PAGE_SIZE) >> 10); 126 (end - PAGE_SIZE) >> 10);
127 127
128 return end - PAGE_SIZE; 128 return end - PAGE_SIZE;
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c
index 802febed7df5..6a857bf030b0 100644
--- a/arch/mips/kernel/smtc.c
+++ b/arch/mips/kernel/smtc.c
@@ -4,6 +4,7 @@
4#include <linux/sched.h> 4#include <linux/sched.h>
5#include <linux/cpumask.h> 5#include <linux/cpumask.h>
6#include <linux/interrupt.h> 6#include <linux/interrupt.h>
7#include <linux/module.h>
7 8
8#include <asm/cpu.h> 9#include <asm/cpu.h>
9#include <asm/processor.h> 10#include <asm/processor.h>
@@ -261,6 +262,7 @@ void smtc_configure_tlb(void)
261 } 262 }
262 } 263 }
263 write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_STLB); 264 write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_STLB);
265 ehb();
264 266
265 /* 267 /*
266 * Setup kernel data structures to use software total, 268 * Setup kernel data structures to use software total,
@@ -269,9 +271,12 @@ void smtc_configure_tlb(void)
269 * of their initialization in smtc_cpu_setup(). 271 * of their initialization in smtc_cpu_setup().
270 */ 272 */
271 273
272 tlbsiz = tlbsiz & 0x3f; /* MIPS32 limits TLB indices to 64 */ 274 /* MIPS32 limits TLB indices to 64 */
273 cpu_data[0].tlbsize = tlbsiz; 275 if (tlbsiz > 64)
276 tlbsiz = 64;
277 cpu_data[0].tlbsize = current_cpu_data.tlbsize = tlbsiz;
274 smtc_status |= SMTC_TLB_SHARED; 278 smtc_status |= SMTC_TLB_SHARED;
279 local_flush_tlb_all();
275 280
276 printk("TLB of %d entry pairs shared by %d VPEs\n", 281 printk("TLB of %d entry pairs shared by %d VPEs\n",
277 tlbsiz, vpes); 282 tlbsiz, vpes);
@@ -1016,6 +1021,35 @@ void setup_cross_vpe_interrupts(void)
1016 * SMTC-specific hacks invoked from elsewhere in the kernel. 1021 * SMTC-specific hacks invoked from elsewhere in the kernel.
1017 */ 1022 */
1018 1023
1024void smtc_ipi_replay(void)
1025{
1026 /*
1027 * To the extent that we've ever turned interrupts off,
1028 * we may have accumulated deferred IPIs. This is subtle.
1029 * If we use the smtc_ipi_qdepth() macro, we'll get an
1030 * exact number - but we'll also disable interrupts
1031 * and create a window of failure where a new IPI gets
1032 * queued after we test the depth but before we re-enable
1033 * interrupts. So long as IXMT never gets set, however,
1034 * we should be OK: If we pick up something and dispatch
1035 * it here, that's great. If we see nothing, but concurrent
1036 * with this operation, another TC sends us an IPI, IXMT
1037 * is clear, and we'll handle it as a real pseudo-interrupt
1038 * and not a pseudo-pseudo interrupt.
1039 */
1040 if (IPIQ[smp_processor_id()].depth > 0) {
1041 struct smtc_ipi *pipi;
1042 extern void self_ipi(struct smtc_ipi *);
1043
1044 while ((pipi = smtc_ipi_dq(&IPIQ[smp_processor_id()]))) {
1045 self_ipi(pipi);
1046 smtc_cpu_stats[smp_processor_id()].selfipis++;
1047 }
1048 }
1049}
1050
1051EXPORT_SYMBOL(smtc_ipi_replay);
1052
1019void smtc_idle_loop_hook(void) 1053void smtc_idle_loop_hook(void)
1020{ 1054{
1021#ifdef SMTC_IDLE_HOOK_DEBUG 1055#ifdef SMTC_IDLE_HOOK_DEBUG
@@ -1112,29 +1146,14 @@ void smtc_idle_loop_hook(void)
1112 if (pdb_msg != &id_ho_db_msg[0]) 1146 if (pdb_msg != &id_ho_db_msg[0])
1113 printk("CPU%d: %s", smp_processor_id(), id_ho_db_msg); 1147 printk("CPU%d: %s", smp_processor_id(), id_ho_db_msg);
1114#endif /* SMTC_IDLE_HOOK_DEBUG */ 1148#endif /* SMTC_IDLE_HOOK_DEBUG */
1149
1115 /* 1150 /*
1116 * To the extent that we've ever turned interrupts off, 1151 * Replay any accumulated deferred IPIs. If "Instant Replay"
1117 * we may have accumulated deferred IPIs. This is subtle. 1152 * is in use, there should never be any.
1118 * If we use the smtc_ipi_qdepth() macro, we'll get an
1119 * exact number - but we'll also disable interrupts
1120 * and create a window of failure where a new IPI gets
1121 * queued after we test the depth but before we re-enable
1122 * interrupts. So long as IXMT never gets set, however,
1123 * we should be OK: If we pick up something and dispatch
1124 * it here, that's great. If we see nothing, but concurrent
1125 * with this operation, another TC sends us an IPI, IXMT
1126 * is clear, and we'll handle it as a real pseudo-interrupt
1127 * and not a pseudo-pseudo interrupt.
1128 */ 1153 */
1129 if (IPIQ[smp_processor_id()].depth > 0) { 1154#ifndef CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY
1130 struct smtc_ipi *pipi; 1155 smtc_ipi_replay();
1131 extern void self_ipi(struct smtc_ipi *); 1156#endif /* CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY */
1132
1133 if ((pipi = smtc_ipi_dq(&IPIQ[smp_processor_id()])) != NULL) {
1134 self_ipi(pipi);
1135 smtc_cpu_stats[smp_processor_id()].selfipis++;
1136 }
1137 }
1138} 1157}
1139 1158
1140void smtc_soft_dump(void) 1159void smtc_soft_dump(void)
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c
index 666bef484dcb..458fccf87c54 100644
--- a/arch/mips/kernel/vpe.c
+++ b/arch/mips/kernel/vpe.c
@@ -139,13 +139,16 @@ struct tc {
139 struct list_head list; 139 struct list_head list;
140}; 140};
141 141
142struct vpecontrol_ { 142struct {
143 /* Virtual processing elements */ 143 /* Virtual processing elements */
144 struct list_head vpe_list; 144 struct list_head vpe_list;
145 145
146 /* Thread contexts */ 146 /* Thread contexts */
147 struct list_head tc_list; 147 struct list_head tc_list;
148} vpecontrol; 148} vpecontrol = {
149 .vpe_list = LIST_HEAD_INIT(vpecontrol.vpe_list),
150 .tc_list = LIST_HEAD_INIT(vpecontrol.tc_list)
151};
149 152
150static void release_progmem(void *ptr); 153static void release_progmem(void *ptr);
151/* static __attribute_used__ void dump_vpe(struct vpe * v); */ 154/* static __attribute_used__ void dump_vpe(struct vpe * v); */
@@ -1388,8 +1391,6 @@ static int __init vpe_module_init(void)
1388 1391
1389 /* dump_mtregs(); */ 1392 /* dump_mtregs(); */
1390 1393
1391 INIT_LIST_HEAD(&vpecontrol.vpe_list);
1392 INIT_LIST_HEAD(&vpecontrol.tc_list);
1393 1394
1394 val = read_c0_mvpconf0(); 1395 val = read_c0_mvpconf0();
1395 for (i = 0; i < ((val & MVPCONF0_PTC) + 1); i++) { 1396 for (i = 0; i < ((val & MVPCONF0_PTC) + 1); i++) {
diff --git a/arch/mips/mips-boards/malta/Makefile b/arch/mips/mips-boards/malta/Makefile
index b662c75fb28e..cb7f349b0514 100644
--- a/arch/mips/mips-boards/malta/Makefile
+++ b/arch/mips/mips-boards/malta/Makefile
@@ -19,5 +19,6 @@
19# under Linux. 19# under Linux.
20# 20#
21 21
22obj-y := malta_int.o malta_mtd.o malta_setup.o 22obj-y := malta_int.o malta_setup.o
23obj-$(CONFIG_MTD) += malta_mtd.o
23obj-$(CONFIG_SMP) += malta_smp.o 24obj-$(CONFIG_SMP) += malta_smp.o
diff --git a/arch/mips/mips-boards/sim/sim_setup.c b/arch/mips/mips-boards/sim/sim_setup.c
index 2659c1c3b78d..ea2066c3a1f7 100644
--- a/arch/mips/mips-boards/sim/sim_setup.c
+++ b/arch/mips/mips-boards/sim/sim_setup.c
@@ -57,7 +57,7 @@ void __init plat_mem_setup(void)
57 board_time_init = sim_time_init; 57 board_time_init = sim_time_init;
58 prom_printf("Linux started...\n"); 58 prom_printf("Linux started...\n");
59 59
60#ifdef CONFIG_MT_SMP 60#ifdef CONFIG_MIPS_MT_SMP
61 sanitize_tlb_entries(); 61 sanitize_tlb_entries();
62#endif 62#endif
63} 63}
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index 30245c09d025..49065c133ebf 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -501,7 +501,8 @@ void free_initmem(void)
501 501
502 freed = prom_free_prom_memory(); 502 freed = prom_free_prom_memory();
503 if (freed) 503 if (freed)
504 printk(KERN_INFO "Freeing firmware memory: %ldk freed\n",freed); 504 printk(KERN_INFO "Freeing firmware memory: %ldkb freed\n",
505 freed >> 10);
505 506
506 free_init_pages("unused kernel memory", 507 free_init_pages("unused kernel memory",
507 __pa_symbol(&__init_begin), 508 __pa_symbol(&__init_begin),
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c
index 2e0e21ef433e..65160d4984d9 100644
--- a/arch/mips/mm/tlb-r4k.c
+++ b/arch/mips/mm/tlb-r4k.c
@@ -106,7 +106,6 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
106 ENTER_CRITICAL(flags); 106 ENTER_CRITICAL(flags);
107 size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; 107 size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
108 size = (size + 1) >> 1; 108 size = (size + 1) >> 1;
109 local_irq_save(flags);
110 if (size <= current_cpu_data.tlbsize/2) { 109 if (size <= current_cpu_data.tlbsize/2) {
111 int oldpid = read_c0_entryhi(); 110 int oldpid = read_c0_entryhi();
112 int newpid = cpu_asid(cpu, mm); 111 int newpid = cpu_asid(cpu, mm);
diff --git a/arch/mips/momentum/ocelot_g/prom.c b/arch/mips/momentum/ocelot_g/prom.c
index 6509a9c9863c..2f75c6b91ec5 100644
--- a/arch/mips/momentum/ocelot_g/prom.c
+++ b/arch/mips/momentum/ocelot_g/prom.c
@@ -28,7 +28,7 @@ struct callvectors* debug_vectors;
28extern unsigned long marvell_base; 28extern unsigned long marvell_base;
29extern unsigned long bus_clock; 29extern unsigned long bus_clock;
30 30
31#ifdef CONFIG_GALILLEO_GT64240_ETH 31#ifdef CONFIG_GALILEO_GT64240_ETH
32extern unsigned char prom_mac_addr_base[6]; 32extern unsigned char prom_mac_addr_base[6];
33#endif 33#endif
34 34
@@ -61,7 +61,7 @@ void __init prom_init(void)
61 mips_machgroup = MACH_GROUP_MOMENCO; 61 mips_machgroup = MACH_GROUP_MOMENCO;
62 mips_machtype = MACH_MOMENCO_OCELOT_G; 62 mips_machtype = MACH_MOMENCO_OCELOT_G;
63 63
64#ifdef CONFIG_GALILLEO_GT64240_ETH 64#ifdef CONFIG_GALILEO_GT64240_ETH
65 /* get the base MAC address for on-board ethernet ports */ 65 /* get the base MAC address for on-board ethernet ports */
66 memcpy(prom_mac_addr_base, (void*)0xfc807cf2, 6); 66 memcpy(prom_mac_addr_base, (void*)0xfc807cf2, 6);
67#endif 67#endif
diff --git a/arch/mips/momentum/ocelot_g/setup.c b/arch/mips/momentum/ocelot_g/setup.c
index d288f7b01842..9db638a7982c 100644
--- a/arch/mips/momentum/ocelot_g/setup.c
+++ b/arch/mips/momentum/ocelot_g/setup.c
@@ -64,7 +64,7 @@
64 64
65#include "ocelot_pld.h" 65#include "ocelot_pld.h"
66 66
67#ifdef CONFIG_GALILLEO_GT64240_ETH 67#ifdef CONFIG_GALILEO_GT64240_ETH
68extern unsigned char prom_mac_addr_base[6]; 68extern unsigned char prom_mac_addr_base[6];
69#endif 69#endif
70 70
@@ -185,7 +185,7 @@ void __init plat_mem_setup(void)
185 /* do handoff reconfiguration */ 185 /* do handoff reconfiguration */
186 PMON_v2_setup(); 186 PMON_v2_setup();
187 187
188#ifdef CONFIG_GALILLEO_GT64240_ETH 188#ifdef CONFIG_GALILEO_GT64240_ETH
189 /* get the mac addr */ 189 /* get the mac addr */
190 memcpy(prom_mac_addr_base, (void*)0xfc807cf2, 6); 190 memcpy(prom_mac_addr_base, (void*)0xfc807cf2, 6);
191#endif 191#endif
diff --git a/arch/mips/vr41xx/common/irq.c b/arch/mips/vr41xx/common/irq.c
index 397ba94cd7ec..16decf4ac2f4 100644
--- a/arch/mips/vr41xx/common/irq.c
+++ b/arch/mips/vr41xx/common/irq.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Interrupt handing routines for NEC VR4100 series. 2 * Interrupt handing routines for NEC VR4100 series.
3 * 3 *
4 * Copyright (C) 2005 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> 4 * Copyright (C) 2005-2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by 7 * it under the terms of the GNU General Public License as published by
@@ -73,13 +73,19 @@ static void irq_dispatch(unsigned int irq)
73 if (cascade->get_irq != NULL) { 73 if (cascade->get_irq != NULL) {
74 unsigned int source_irq = irq; 74 unsigned int source_irq = irq;
75 desc = irq_desc + source_irq; 75 desc = irq_desc + source_irq;
76 desc->chip->ack(source_irq); 76 if (desc->chip->mask_ack)
77 desc->chip->mask_ack(source_irq);
78 else {
79 desc->chip->mask(source_irq);
80 desc->chip->ack(source_irq);
81 }
77 irq = cascade->get_irq(irq); 82 irq = cascade->get_irq(irq);
78 if (irq < 0) 83 if (irq < 0)
79 atomic_inc(&irq_err_count); 84 atomic_inc(&irq_err_count);
80 else 85 else
81 irq_dispatch(irq); 86 irq_dispatch(irq);
82 desc->chip->end(source_irq); 87 if (!(desc->status & IRQ_DISABLED) && desc->chip->unmask)
88 desc->chip->unmask(source_irq);
83 } else 89 } else
84 do_IRQ(irq); 90 do_IRQ(irq);
85} 91}
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 0855d55c194d..d6abe495c6b0 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -484,6 +484,7 @@ config PPC_MAPLE
484 select PPC_970_NAP 484 select PPC_970_NAP
485 select PPC_NATIVE 485 select PPC_NATIVE
486 select PPC_RTAS 486 select PPC_RTAS
487 select ATA_NONSTANDARD if ATA
487 default n 488 default n
488 help 489 help
489 This option enables support for the Maple 970FX Evaluation Board. 490 This option enables support for the Maple 970FX Evaluation Board.
@@ -525,12 +526,15 @@ config PPC_IBM_CELL_BLADE
525 select UDBG_RTAS_CONSOLE 526 select UDBG_RTAS_CONSOLE
526 527
527config PPC_PS3 528config PPC_PS3
528 bool "Sony PS3" 529 bool "Sony PS3 (incomplete)"
529 depends on PPC_MULTIPLATFORM && PPC64 530 depends on PPC_MULTIPLATFORM && PPC64
530 select PPC_CELL 531 select PPC_CELL
531 help 532 help
532 This option enables support for the Sony PS3 game console 533 This option enables support for the Sony PS3 game console
533 and other platforms using the PS3 hypervisor. 534 and other platforms using the PS3 hypervisor.
535 Support for this platform is not yet complete, so
536 enabling this will not result in a bootable kernel on a
537 PS3 system.
534 538
535config PPC_NATIVE 539config PPC_NATIVE
536 bool 540 bool
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts
index a8efb59f5dd7..186870704ad9 100644
--- a/arch/powerpc/boot/dts/lite5200.dts
+++ b/arch/powerpc/boot/dts/lite5200.dts
@@ -10,6 +10,12 @@
10 * option) any later version. 10 * option) any later version.
11 */ 11 */
12 12
13/*
14 * WARNING: Do not depend on this tree layout remaining static just yet.
15 * The MPC5200 device tree conventions are still in flux
16 * Keep an eye on the linuxppc-dev mailing list for more details
17 */
18
13/ { 19/ {
14 model = "Lite5200"; 20 model = "Lite5200";
15 compatible = "lite5200\0lite52xx\0mpc5200\0mpc52xx"; 21 compatible = "lite5200\0lite52xx\0mpc5200\0mpc52xx";
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts
index 1aabee432d86..5bb2760d7c30 100644
--- a/arch/powerpc/boot/dts/lite5200b.dts
+++ b/arch/powerpc/boot/dts/lite5200b.dts
@@ -10,6 +10,12 @@
10 * option) any later version. 10 * option) any later version.
11 */ 11 */
12 12
13/*
14 * WARNING: Do not depend on this tree layout remaining static just yet.
15 * The MPC5200 device tree conventions are still in flux
16 * Keep an eye on the linuxppc-dev mailing list for more details
17 */
18
13/ { 19/ {
14 model = "Lite5200b"; 20 model = "Lite5200b";
15 compatible = "lite5200b\0lite52xx\0mpc5200b\0mpc52xx"; 21 compatible = "lite5200b\0lite52xx\0mpc5200b\0mpc52xx";
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig
index d1d25152f74f..e956548da00c 100644
--- a/arch/powerpc/configs/cell_defconfig
+++ b/arch/powerpc/configs/cell_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-rc1 3# Linux kernel version: 2.6.20-rc5
4# Tue Dec 19 14:59:53 2006 4# Mon Jan 22 22:12:56 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -245,7 +245,6 @@ CONFIG_GENERIC_ISA_DMA=y
245CONFIG_PCI=y 245CONFIG_PCI=y
246CONFIG_PCI_DOMAINS=y 246CONFIG_PCI_DOMAINS=y
247CONFIG_PCIEPORTBUS=y 247CONFIG_PCIEPORTBUS=y
248# CONFIG_PCI_MULTITHREAD_PROBE is not set
249# CONFIG_PCI_DEBUG is not set 248# CONFIG_PCI_DEBUG is not set
250 249
251# 250#
@@ -854,7 +853,6 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
854CONFIG_SERIAL_CORE=y 853CONFIG_SERIAL_CORE=y
855CONFIG_SERIAL_CORE_CONSOLE=y 854CONFIG_SERIAL_CORE_CONSOLE=y
856# CONFIG_SERIAL_JSM is not set 855# CONFIG_SERIAL_JSM is not set
857CONFIG_SERIAL_OF_PLATFORM=y
858CONFIG_UNIX98_PTYS=y 856CONFIG_UNIX98_PTYS=y
859# CONFIG_LEGACY_PTYS is not set 857# CONFIG_LEGACY_PTYS is not set
860CONFIG_HVC_DRIVER=y 858CONFIG_HVC_DRIVER=y
diff --git a/arch/powerpc/configs/chrp32_defconfig b/arch/powerpc/configs/chrp32_defconfig
index fee72f8a2fb7..029c9a0e730c 100644
--- a/arch/powerpc/configs/chrp32_defconfig
+++ b/arch/powerpc/configs/chrp32_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:22:54 2006 4# Mon Jan 22 22:12:58 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23CONFIG_GENERIC_TBSYNC=y 24CONFIG_GENERIC_TBSYNC=y
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24# CONFIG_DEFAULT_UIMAGE is not set 27# CONFIG_DEFAULT_UIMAGE is not set
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29CONFIG_CLASSIC32=y 32CONFIG_CLASSIC32=y
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -38,6 +40,8 @@ CONFIG_CLASSIC32=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_6xx=y 41CONFIG_6xx=y
40CONFIG_PPC_FPU=y 42CONFIG_PPC_FPU=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41# CONFIG_ALTIVEC is not set 45# CONFIG_ALTIVEC is not set
42CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
43CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
@@ -59,18 +63,22 @@ CONFIG_LOCALVERSION=""
59# CONFIG_LOCALVERSION_AUTO is not set 63# CONFIG_LOCALVERSION_AUTO is not set
60CONFIG_SWAP=y 64CONFIG_SWAP=y
61CONFIG_SYSVIPC=y 65CONFIG_SYSVIPC=y
66# CONFIG_IPC_NS is not set
62CONFIG_POSIX_MQUEUE=y 67CONFIG_POSIX_MQUEUE=y
63# CONFIG_BSD_PROCESS_ACCT is not set 68# CONFIG_BSD_PROCESS_ACCT is not set
64# CONFIG_TASKSTATS is not set 69# CONFIG_TASKSTATS is not set
65CONFIG_SYSCTL=y 70# CONFIG_UTS_NS is not set
66# CONFIG_AUDIT is not set 71# CONFIG_AUDIT is not set
67CONFIG_IKCONFIG=y 72CONFIG_IKCONFIG=y
68CONFIG_IKCONFIG_PROC=y 73CONFIG_IKCONFIG_PROC=y
69# CONFIG_CPUSETS is not set 74# CONFIG_CPUSETS is not set
75CONFIG_SYSFS_DEPRECATED=y
70# CONFIG_RELAY is not set 76# CONFIG_RELAY is not set
71CONFIG_INITRAMFS_SOURCE="" 77CONFIG_INITRAMFS_SOURCE=""
72# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 78# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
79CONFIG_SYSCTL=y
73# CONFIG_EMBEDDED is not set 80# CONFIG_EMBEDDED is not set
81CONFIG_SYSCTL_SYSCALL=y
74CONFIG_KALLSYMS=y 82CONFIG_KALLSYMS=y
75# CONFIG_KALLSYMS_ALL is not set 83# CONFIG_KALLSYMS_ALL is not set
76# CONFIG_KALLSYMS_EXTRA_PASS is not set 84# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -79,12 +87,12 @@ CONFIG_PRINTK=y
79CONFIG_BUG=y 87CONFIG_BUG=y
80CONFIG_ELF_CORE=y 88CONFIG_ELF_CORE=y
81CONFIG_BASE_FULL=y 89CONFIG_BASE_FULL=y
82CONFIG_RT_MUTEXES=y
83CONFIG_FUTEX=y 90CONFIG_FUTEX=y
84CONFIG_EPOLL=y 91CONFIG_EPOLL=y
85CONFIG_SHMEM=y 92CONFIG_SHMEM=y
86CONFIG_SLAB=y 93CONFIG_SLAB=y
87CONFIG_VM_EVENT_COUNTERS=y 94CONFIG_VM_EVENT_COUNTERS=y
95CONFIG_RT_MUTEXES=y
88# CONFIG_TINY_SHMEM is not set 96# CONFIG_TINY_SHMEM is not set
89CONFIG_BASE_SMALL=0 97CONFIG_BASE_SMALL=0
90# CONFIG_SLOB is not set 98# CONFIG_SLOB is not set
@@ -103,6 +111,7 @@ CONFIG_STOP_MACHINE=y
103# 111#
104# Block layer 112# Block layer
105# 113#
114CONFIG_BLOCK=y
106CONFIG_LBD=y 115CONFIG_LBD=y
107# CONFIG_BLK_DEV_IO_TRACE is not set 116# CONFIG_BLK_DEV_IO_TRACE is not set
108# CONFIG_LSF is not set 117# CONFIG_LSF is not set
@@ -124,13 +133,16 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
124# Platform support 133# Platform support
125# 134#
126CONFIG_PPC_MULTIPLATFORM=y 135CONFIG_PPC_MULTIPLATFORM=y
127# CONFIG_PPC_ISERIES is not set
128# CONFIG_EMBEDDED6xx is not set 136# CONFIG_EMBEDDED6xx is not set
129# CONFIG_APUS is not set 137# CONFIG_APUS is not set
130CONFIG_PPC_CHRP=y 138CONFIG_PPC_CHRP=y
139# CONFIG_PPC_MPC52xx is not set
140# CONFIG_PPC_EFIKA is not set
141# CONFIG_PPC_LITE5200 is not set
131# CONFIG_PPC_PMAC is not set 142# CONFIG_PPC_PMAC is not set
132# CONFIG_PPC_CELL is not set 143# CONFIG_PPC_CELL is not set
133# CONFIG_PPC_CELL_NATIVE is not set 144# CONFIG_PPC_CELL_NATIVE is not set
145CONFIG_PPC_NATIVE=y
134# CONFIG_UDBG_RTAS_CONSOLE is not set 146# CONFIG_UDBG_RTAS_CONSOLE is not set
135CONFIG_PPC_RTAS=y 147CONFIG_PPC_RTAS=y
136# CONFIG_RTAS_ERROR_LOGGING is not set 148# CONFIG_RTAS_ERROR_LOGGING is not set
@@ -138,6 +150,8 @@ CONFIG_RTAS_PROC=y
138# CONFIG_MMIO_NVRAM is not set 150# CONFIG_MMIO_NVRAM is not set
139CONFIG_PPC_MPC106=y 151CONFIG_PPC_MPC106=y
140# CONFIG_PPC_970_NAP is not set 152# CONFIG_PPC_970_NAP is not set
153# CONFIG_PPC_INDIRECT_IO is not set
154# CONFIG_GENERIC_IOMAP is not set
141# CONFIG_CPU_FREQ is not set 155# CONFIG_CPU_FREQ is not set
142# CONFIG_TAU is not set 156# CONFIG_TAU is not set
143# CONFIG_WANT_EARLY_SERIAL is not set 157# CONFIG_WANT_EARLY_SERIAL is not set
@@ -149,6 +163,7 @@ CONFIG_MPIC=y
149CONFIG_HIGHMEM=y 163CONFIG_HIGHMEM=y
150# CONFIG_HZ_100 is not set 164# CONFIG_HZ_100 is not set
151CONFIG_HZ_250=y 165CONFIG_HZ_250=y
166# CONFIG_HZ_300 is not set
152# CONFIG_HZ_1000 is not set 167# CONFIG_HZ_1000 is not set
153CONFIG_HZ=250 168CONFIG_HZ=250
154CONFIG_PREEMPT_NONE=y 169CONFIG_PREEMPT_NONE=y
@@ -161,6 +176,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
161# CONFIG_KEXEC is not set 176# CONFIG_KEXEC is not set
162CONFIG_IRQ_ALL_CPUS=y 177CONFIG_IRQ_ALL_CPUS=y
163CONFIG_ARCH_FLATMEM_ENABLE=y 178CONFIG_ARCH_FLATMEM_ENABLE=y
179CONFIG_ARCH_POPULATES_NODE_MAP=y
164CONFIG_SELECT_MEMORY_MODEL=y 180CONFIG_SELECT_MEMORY_MODEL=y
165CONFIG_FLATMEM_MANUAL=y 181CONFIG_FLATMEM_MANUAL=y
166# CONFIG_DISCONTIGMEM_MANUAL is not set 182# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -243,10 +259,13 @@ CONFIG_SYN_COOKIES=y
243# CONFIG_INET_TUNNEL is not set 259# CONFIG_INET_TUNNEL is not set
244# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 260# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
245# CONFIG_INET_XFRM_MODE_TUNNEL is not set 261# CONFIG_INET_XFRM_MODE_TUNNEL is not set
262# CONFIG_INET_XFRM_MODE_BEET is not set
246CONFIG_INET_DIAG=y 263CONFIG_INET_DIAG=y
247CONFIG_INET_TCP_DIAG=y 264CONFIG_INET_TCP_DIAG=y
248# CONFIG_TCP_CONG_ADVANCED is not set 265# CONFIG_TCP_CONG_ADVANCED is not set
249CONFIG_TCP_CONG_BIC=y 266CONFIG_TCP_CONG_CUBIC=y
267CONFIG_DEFAULT_TCP_CONG="cubic"
268# CONFIG_TCP_MD5SIG is not set
250 269
251# 270#
252# IP: Virtual Server Configuration 271# IP: Virtual Server Configuration
@@ -263,24 +282,29 @@ CONFIG_NETFILTER=y
263# Core Netfilter Configuration 282# Core Netfilter Configuration
264# 283#
265# CONFIG_NETFILTER_NETLINK is not set 284# CONFIG_NETFILTER_NETLINK is not set
285CONFIG_NF_CONNTRACK_ENABLED=m
286CONFIG_NF_CONNTRACK_SUPPORT=y
287# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
288CONFIG_NF_CONNTRACK=m
289# CONFIG_NF_CT_ACCT is not set
290# CONFIG_NF_CONNTRACK_MARK is not set
291# CONFIG_NF_CONNTRACK_EVENTS is not set
292# CONFIG_NF_CT_PROTO_SCTP is not set
293# CONFIG_NF_CONNTRACK_AMANDA is not set
294CONFIG_NF_CONNTRACK_FTP=m
295# CONFIG_NF_CONNTRACK_H323 is not set
296CONFIG_NF_CONNTRACK_IRC=m
297# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
298# CONFIG_NF_CONNTRACK_PPTP is not set
299CONFIG_NF_CONNTRACK_SIP=m
300CONFIG_NF_CONNTRACK_TFTP=m
266# CONFIG_NETFILTER_XTABLES is not set 301# CONFIG_NETFILTER_XTABLES is not set
267 302
268# 303#
269# IP: Netfilter Configuration 304# IP: Netfilter Configuration
270# 305#
271CONFIG_IP_NF_CONNTRACK=m 306CONFIG_NF_CONNTRACK_IPV4=m
272# CONFIG_IP_NF_CT_ACCT is not set 307CONFIG_NF_CONNTRACK_PROC_COMPAT=y
273# CONFIG_IP_NF_CONNTRACK_MARK is not set
274# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
275# CONFIG_IP_NF_CT_PROTO_SCTP is not set
276CONFIG_IP_NF_FTP=m
277CONFIG_IP_NF_IRC=m
278# CONFIG_IP_NF_NETBIOS_NS is not set
279CONFIG_IP_NF_TFTP=m
280CONFIG_IP_NF_AMANDA=m
281# CONFIG_IP_NF_PPTP is not set
282# CONFIG_IP_NF_H323 is not set
283# CONFIG_IP_NF_SIP is not set
284# CONFIG_IP_NF_QUEUE is not set 308# CONFIG_IP_NF_QUEUE is not set
285 309
286# 310#
@@ -306,7 +330,6 @@ CONFIG_IP_NF_AMANDA=m
306# CONFIG_ATALK is not set 330# CONFIG_ATALK is not set
307# CONFIG_X25 is not set 331# CONFIG_X25 is not set
308# CONFIG_LAPB is not set 332# CONFIG_LAPB is not set
309# CONFIG_NET_DIVERT is not set
310# CONFIG_ECONET is not set 333# CONFIG_ECONET is not set
311# CONFIG_WAN_ROUTER is not set 334# CONFIG_WAN_ROUTER is not set
312 335
@@ -381,6 +404,12 @@ CONFIG_BLK_DEV_INITRD=y
381# CONFIG_ATA_OVER_ETH is not set 404# CONFIG_ATA_OVER_ETH is not set
382 405
383# 406#
407# Misc devices
408#
409# CONFIG_SGI_IOC4 is not set
410# CONFIG_TIFM_CORE is not set
411
412#
384# ATA/ATAPI/MFM/RLL support 413# ATA/ATAPI/MFM/RLL support
385# 414#
386CONFIG_IDE=y 415CONFIG_IDE=y
@@ -407,7 +436,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
407# CONFIG_BLK_DEV_OFFBOARD is not set 436# CONFIG_BLK_DEV_OFFBOARD is not set
408CONFIG_BLK_DEV_GENERIC=y 437CONFIG_BLK_DEV_GENERIC=y
409# CONFIG_BLK_DEV_OPTI621 is not set 438# CONFIG_BLK_DEV_OPTI621 is not set
410CONFIG_BLK_DEV_SL82C105=y
411CONFIG_BLK_DEV_IDEDMA_PCI=y 439CONFIG_BLK_DEV_IDEDMA_PCI=y
412# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 440# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
413CONFIG_IDEDMA_PCI_AUTO=y 441CONFIG_IDEDMA_PCI_AUTO=y
@@ -422,6 +450,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
422# CONFIG_BLK_DEV_CS5530 is not set 450# CONFIG_BLK_DEV_CS5530 is not set
423# CONFIG_BLK_DEV_HPT34X is not set 451# CONFIG_BLK_DEV_HPT34X is not set
424# CONFIG_BLK_DEV_HPT366 is not set 452# CONFIG_BLK_DEV_HPT366 is not set
453# CONFIG_BLK_DEV_JMICRON is not set
425# CONFIG_BLK_DEV_SC1200 is not set 454# CONFIG_BLK_DEV_SC1200 is not set
426# CONFIG_BLK_DEV_PIIX is not set 455# CONFIG_BLK_DEV_PIIX is not set
427# CONFIG_BLK_DEV_IT821X is not set 456# CONFIG_BLK_DEV_IT821X is not set
@@ -430,6 +459,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
430# CONFIG_BLK_DEV_PDC202XX_NEW is not set 459# CONFIG_BLK_DEV_PDC202XX_NEW is not set
431# CONFIG_BLK_DEV_SVWKS is not set 460# CONFIG_BLK_DEV_SVWKS is not set
432# CONFIG_BLK_DEV_SIIMAGE is not set 461# CONFIG_BLK_DEV_SIIMAGE is not set
462CONFIG_BLK_DEV_SL82C105=y
433# CONFIG_BLK_DEV_SLC90E66 is not set 463# CONFIG_BLK_DEV_SLC90E66 is not set
434# CONFIG_BLK_DEV_TRM290 is not set 464# CONFIG_BLK_DEV_TRM290 is not set
435CONFIG_BLK_DEV_VIA82CXXX=y 465CONFIG_BLK_DEV_VIA82CXXX=y
@@ -445,6 +475,8 @@ CONFIG_IDEDMA_AUTO=y
445# 475#
446# CONFIG_RAID_ATTRS is not set 476# CONFIG_RAID_ATTRS is not set
447CONFIG_SCSI=y 477CONFIG_SCSI=y
478# CONFIG_SCSI_TGT is not set
479# CONFIG_SCSI_NETLINK is not set
448CONFIG_SCSI_PROC_FS=y 480CONFIG_SCSI_PROC_FS=y
449 481
450# 482#
@@ -464,14 +496,16 @@ CONFIG_CHR_DEV_SG=y
464# CONFIG_SCSI_MULTI_LUN is not set 496# CONFIG_SCSI_MULTI_LUN is not set
465CONFIG_SCSI_CONSTANTS=y 497CONFIG_SCSI_CONSTANTS=y
466# CONFIG_SCSI_LOGGING is not set 498# CONFIG_SCSI_LOGGING is not set
499# CONFIG_SCSI_SCAN_ASYNC is not set
467 500
468# 501#
469# SCSI Transport Attributes 502# SCSI Transports
470# 503#
471CONFIG_SCSI_SPI_ATTRS=y 504CONFIG_SCSI_SPI_ATTRS=y
472# CONFIG_SCSI_FC_ATTRS is not set 505# CONFIG_SCSI_FC_ATTRS is not set
473# CONFIG_SCSI_ISCSI_ATTRS is not set 506# CONFIG_SCSI_ISCSI_ATTRS is not set
474# CONFIG_SCSI_SAS_ATTRS is not set 507# CONFIG_SCSI_SAS_ATTRS is not set
508# CONFIG_SCSI_SAS_LIBSAS is not set
475 509
476# 510#
477# SCSI low-level drivers 511# SCSI low-level drivers
@@ -487,12 +521,13 @@ CONFIG_SCSI_SPI_ATTRS=y
487# CONFIG_SCSI_AIC7XXX is not set 521# CONFIG_SCSI_AIC7XXX is not set
488# CONFIG_SCSI_AIC7XXX_OLD is not set 522# CONFIG_SCSI_AIC7XXX_OLD is not set
489# CONFIG_SCSI_AIC79XX is not set 523# CONFIG_SCSI_AIC79XX is not set
524# CONFIG_SCSI_AIC94XX is not set
490# CONFIG_SCSI_DPT_I2O is not set 525# CONFIG_SCSI_DPT_I2O is not set
491# CONFIG_SCSI_IN2000 is not set 526# CONFIG_SCSI_IN2000 is not set
527# CONFIG_SCSI_ARCMSR is not set
492# CONFIG_MEGARAID_NEWGEN is not set 528# CONFIG_MEGARAID_NEWGEN is not set
493# CONFIG_MEGARAID_LEGACY is not set 529# CONFIG_MEGARAID_LEGACY is not set
494# CONFIG_MEGARAID_SAS is not set 530# CONFIG_MEGARAID_SAS is not set
495# CONFIG_ATA is not set
496# CONFIG_SCSI_HPTIOP is not set 531# CONFIG_SCSI_HPTIOP is not set
497# CONFIG_SCSI_BUSLOGIC is not set 532# CONFIG_SCSI_BUSLOGIC is not set
498# CONFIG_SCSI_DMX3191D is not set 533# CONFIG_SCSI_DMX3191D is not set
@@ -506,17 +541,18 @@ CONFIG_SCSI_SPI_ATTRS=y
506# CONFIG_SCSI_INITIO is not set 541# CONFIG_SCSI_INITIO is not set
507# CONFIG_SCSI_INIA100 is not set 542# CONFIG_SCSI_INIA100 is not set
508# CONFIG_SCSI_NCR53C406A is not set 543# CONFIG_SCSI_NCR53C406A is not set
544# CONFIG_SCSI_STEX is not set
509CONFIG_SCSI_SYM53C8XX_2=y 545CONFIG_SCSI_SYM53C8XX_2=y
510CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 546CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
511CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 547CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
512CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 548CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
513CONFIG_SCSI_SYM53C8XX_MMIO=y 549CONFIG_SCSI_SYM53C8XX_MMIO=y
514# CONFIG_SCSI_IPR is not set
515# CONFIG_SCSI_PAS16 is not set 550# CONFIG_SCSI_PAS16 is not set
516# CONFIG_SCSI_PSI240I is not set 551# CONFIG_SCSI_PSI240I is not set
517# CONFIG_SCSI_QLOGIC_FAS is not set 552# CONFIG_SCSI_QLOGIC_FAS is not set
518# CONFIG_SCSI_QLOGIC_1280 is not set 553# CONFIG_SCSI_QLOGIC_1280 is not set
519# CONFIG_SCSI_QLA_FC is not set 554# CONFIG_SCSI_QLA_FC is not set
555# CONFIG_SCSI_QLA_ISCSI is not set
520# CONFIG_SCSI_LPFC is not set 556# CONFIG_SCSI_LPFC is not set
521# CONFIG_SCSI_SYM53C416 is not set 557# CONFIG_SCSI_SYM53C416 is not set
522# CONFIG_SCSI_DC395x is not set 558# CONFIG_SCSI_DC395x is not set
@@ -525,6 +561,12 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y
525# CONFIG_SCSI_U14_34F is not set 561# CONFIG_SCSI_U14_34F is not set
526# CONFIG_SCSI_NSP32 is not set 562# CONFIG_SCSI_NSP32 is not set
527# CONFIG_SCSI_DEBUG is not set 563# CONFIG_SCSI_DEBUG is not set
564# CONFIG_SCSI_SRP is not set
565
566#
567# Serial ATA (prod) and Parallel ATA (experimental) drivers
568#
569# CONFIG_ATA is not set
528 570
529# 571#
530# Old CD-ROM drivers (not SCSI, not IDE) 572# Old CD-ROM drivers (not SCSI, not IDE)
@@ -557,6 +599,7 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y
557# 599#
558# Macintosh device drivers 600# Macintosh device drivers
559# 601#
602# CONFIG_MAC_EMUMOUSEBTN is not set
560# CONFIG_WINDFARM is not set 603# CONFIG_WINDFARM is not set
561 604
562# 605#
@@ -607,6 +650,7 @@ CONFIG_DE4X5=y
607# CONFIG_NET_ISA is not set 650# CONFIG_NET_ISA is not set
608CONFIG_NET_PCI=y 651CONFIG_NET_PCI=y
609CONFIG_PCNET32=y 652CONFIG_PCNET32=y
653# CONFIG_PCNET32_NAPI is not set
610# CONFIG_AMD8111_ETH is not set 654# CONFIG_AMD8111_ETH is not set
611# CONFIG_ADAPTEC_STARFIRE is not set 655# CONFIG_ADAPTEC_STARFIRE is not set
612# CONFIG_AC3200 is not set 656# CONFIG_AC3200 is not set
@@ -655,6 +699,7 @@ CONFIG_MV643XX_ETH=y
655# CONFIG_MV643XX_ETH_0 is not set 699# CONFIG_MV643XX_ETH_0 is not set
656# CONFIG_MV643XX_ETH_1 is not set 700# CONFIG_MV643XX_ETH_1 is not set
657# CONFIG_MV643XX_ETH_2 is not set 701# CONFIG_MV643XX_ETH_2 is not set
702# CONFIG_QLA3XXX is not set
658 703
659# 704#
660# Ethernet (10000 Mbit) 705# Ethernet (10000 Mbit)
@@ -663,6 +708,7 @@ CONFIG_MV643XX_ETH=y
663# CONFIG_IXGB is not set 708# CONFIG_IXGB is not set
664# CONFIG_S2IO is not set 709# CONFIG_S2IO is not set
665# CONFIG_MYRI10GE is not set 710# CONFIG_MYRI10GE is not set
711# CONFIG_NETXEN_NIC is not set
666 712
667# 713#
668# Token Ring devices 714# Token Ring devices
@@ -690,6 +736,7 @@ CONFIG_PPP_BSDCOMP=m
690CONFIG_PPP_MPPE=m 736CONFIG_PPP_MPPE=m
691CONFIG_PPPOE=m 737CONFIG_PPPOE=m
692# CONFIG_SLIP is not set 738# CONFIG_SLIP is not set
739CONFIG_SLHC=m
693# CONFIG_NET_FC is not set 740# CONFIG_NET_FC is not set
694# CONFIG_SHAPER is not set 741# CONFIG_SHAPER is not set
695# CONFIG_NETCONSOLE is not set 742# CONFIG_NETCONSOLE is not set
@@ -710,6 +757,7 @@ CONFIG_PPPOE=m
710# Input device support 757# Input device support
711# 758#
712CONFIG_INPUT=y 759CONFIG_INPUT=y
760# CONFIG_INPUT_FF_MEMLESS is not set
713 761
714# 762#
715# Userland interfaces 763# Userland interfaces
@@ -732,6 +780,7 @@ CONFIG_KEYBOARD_ATKBD=y
732# CONFIG_KEYBOARD_LKKBD is not set 780# CONFIG_KEYBOARD_LKKBD is not set
733# CONFIG_KEYBOARD_XTKBD is not set 781# CONFIG_KEYBOARD_XTKBD is not set
734# CONFIG_KEYBOARD_NEWTON is not set 782# CONFIG_KEYBOARD_NEWTON is not set
783# CONFIG_KEYBOARD_STOWAWAY is not set
735CONFIG_INPUT_MOUSE=y 784CONFIG_INPUT_MOUSE=y
736CONFIG_MOUSE_PS2=y 785CONFIG_MOUSE_PS2=y
737# CONFIG_MOUSE_SERIAL is not set 786# CONFIG_MOUSE_SERIAL is not set
@@ -778,12 +827,14 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
778# 827#
779# Non-8250 serial port support 828# Non-8250 serial port support
780# 829#
830# CONFIG_SERIAL_UARTLITE is not set
781CONFIG_SERIAL_CORE=y 831CONFIG_SERIAL_CORE=y
782CONFIG_SERIAL_CORE_CONSOLE=y 832CONFIG_SERIAL_CORE_CONSOLE=y
783# CONFIG_SERIAL_JSM is not set 833# CONFIG_SERIAL_JSM is not set
784CONFIG_UNIX98_PTYS=y 834CONFIG_UNIX98_PTYS=y
785CONFIG_LEGACY_PTYS=y 835CONFIG_LEGACY_PTYS=y
786CONFIG_LEGACY_PTY_COUNT=256 836CONFIG_LEGACY_PTY_COUNT=256
837CONFIG_BRIQ_PANEL=m
787# CONFIG_HVC_RTAS is not set 838# CONFIG_HVC_RTAS is not set
788 839
789# 840#
@@ -802,10 +853,6 @@ CONFIG_GEN_RTC=y
802# CONFIG_DTLK is not set 853# CONFIG_DTLK is not set
803# CONFIG_R3964 is not set 854# CONFIG_R3964 is not set
804# CONFIG_APPLICOM is not set 855# CONFIG_APPLICOM is not set
805
806#
807# Ftape, the floppy tape device driver
808#
809# CONFIG_AGP is not set 856# CONFIG_AGP is not set
810# CONFIG_DRM is not set 857# CONFIG_DRM is not set
811# CONFIG_RAW_DRIVER is not set 858# CONFIG_RAW_DRIVER is not set
@@ -814,7 +861,6 @@ CONFIG_GEN_RTC=y
814# TPM devices 861# TPM devices
815# 862#
816# CONFIG_TCG_TPM is not set 863# CONFIG_TCG_TPM is not set
817# CONFIG_TELCLOCK is not set
818 864
819# 865#
820# I2C support 866# I2C support
@@ -881,6 +927,7 @@ CONFIG_I2C_ALGOBIT=y
881# 927#
882# Dallas's 1-wire bus 928# Dallas's 1-wire bus
883# 929#
930# CONFIG_W1 is not set
884 931
885# 932#
886# Hardware Monitoring support 933# Hardware Monitoring support
@@ -889,14 +936,9 @@ CONFIG_I2C_ALGOBIT=y
889# CONFIG_HWMON_VID is not set 936# CONFIG_HWMON_VID is not set
890 937
891# 938#
892# Misc devices
893#
894
895#
896# Multimedia devices 939# Multimedia devices
897# 940#
898# CONFIG_VIDEO_DEV is not set 941# CONFIG_VIDEO_DEV is not set
899CONFIG_VIDEO_V4L2=y
900 942
901# 943#
902# Digital Video Broadcasting Devices 944# Digital Video Broadcasting Devices
@@ -909,6 +951,7 @@ CONFIG_VIDEO_V4L2=y
909# 951#
910CONFIG_FIRMWARE_EDID=y 952CONFIG_FIRMWARE_EDID=y
911CONFIG_FB=y 953CONFIG_FB=y
954CONFIG_FB_DDC=y
912CONFIG_FB_CFB_FILLRECT=y 955CONFIG_FB_CFB_FILLRECT=y
913CONFIG_FB_CFB_COPYAREA=y 956CONFIG_FB_CFB_COPYAREA=y
914CONFIG_FB_CFB_IMAGEBLIT=y 957CONFIG_FB_CFB_IMAGEBLIT=y
@@ -949,6 +992,7 @@ CONFIG_FB_3DFX=y
949# CONFIG_FB_3DFX_ACCEL is not set 992# CONFIG_FB_3DFX_ACCEL is not set
950# CONFIG_FB_VOODOO1 is not set 993# CONFIG_FB_VOODOO1 is not set
951# CONFIG_FB_TRIDENT is not set 994# CONFIG_FB_TRIDENT is not set
995# CONFIG_FB_IBM_GXT4500 is not set
952# CONFIG_FB_VIRTUAL is not set 996# CONFIG_FB_VIRTUAL is not set
953 997
954# 998#
@@ -979,6 +1023,11 @@ CONFIG_LOGO_LINUX_CLUT224=y
979# CONFIG_SOUND is not set 1023# CONFIG_SOUND is not set
980 1024
981# 1025#
1026# HID Devices
1027#
1028CONFIG_HID=y
1029
1030#
982# USB support 1031# USB support
983# 1032#
984CONFIG_USB_ARCH_HAS_HCD=y 1033CONFIG_USB_ARCH_HAS_HCD=y
@@ -993,6 +1042,7 @@ CONFIG_USB=y
993CONFIG_USB_DEVICEFS=y 1042CONFIG_USB_DEVICEFS=y
994# CONFIG_USB_BANDWIDTH is not set 1043# CONFIG_USB_BANDWIDTH is not set
995# CONFIG_USB_DYNAMIC_MINORS is not set 1044# CONFIG_USB_DYNAMIC_MINORS is not set
1045# CONFIG_USB_MULTITHREAD_PROBE is not set
996# CONFIG_USB_OTG is not set 1046# CONFIG_USB_OTG is not set
997 1047
998# 1048#
@@ -1034,13 +1084,13 @@ CONFIG_USB_STORAGE=m
1034# CONFIG_USB_STORAGE_JUMPSHOT is not set 1084# CONFIG_USB_STORAGE_JUMPSHOT is not set
1035# CONFIG_USB_STORAGE_ALAUDA is not set 1085# CONFIG_USB_STORAGE_ALAUDA is not set
1036# CONFIG_USB_STORAGE_ONETOUCH is not set 1086# CONFIG_USB_STORAGE_ONETOUCH is not set
1087# CONFIG_USB_STORAGE_KARMA is not set
1037# CONFIG_USB_LIBUSUAL is not set 1088# CONFIG_USB_LIBUSUAL is not set
1038 1089
1039# 1090#
1040# USB Input Devices 1091# USB Input Devices
1041# 1092#
1042CONFIG_USB_HID=y 1093CONFIG_USB_HID=y
1043CONFIG_USB_HIDINPUT=y
1044# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1094# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1045# CONFIG_HID_FF is not set 1095# CONFIG_HID_FF is not set
1046# CONFIG_USB_HIDDEV is not set 1096# CONFIG_USB_HIDDEV is not set
@@ -1070,6 +1120,7 @@ CONFIG_USB_HIDINPUT=y
1070# CONFIG_USB_KAWETH is not set 1120# CONFIG_USB_KAWETH is not set
1071# CONFIG_USB_PEGASUS is not set 1121# CONFIG_USB_PEGASUS is not set
1072# CONFIG_USB_RTL8150 is not set 1122# CONFIG_USB_RTL8150 is not set
1123# CONFIG_USB_USBNET_MII is not set
1073# CONFIG_USB_USBNET is not set 1124# CONFIG_USB_USBNET is not set
1074CONFIG_USB_MON=y 1125CONFIG_USB_MON=y
1075 1126
@@ -1087,6 +1138,7 @@ CONFIG_USB_MON=y
1087# 1138#
1088# CONFIG_USB_EMI62 is not set 1139# CONFIG_USB_EMI62 is not set
1089# CONFIG_USB_EMI26 is not set 1140# CONFIG_USB_EMI26 is not set
1141# CONFIG_USB_ADUTUX is not set
1090# CONFIG_USB_AUERSWALD is not set 1142# CONFIG_USB_AUERSWALD is not set
1091# CONFIG_USB_RIO500 is not set 1143# CONFIG_USB_RIO500 is not set
1092# CONFIG_USB_LEGOTOWER is not set 1144# CONFIG_USB_LEGOTOWER is not set
@@ -1094,12 +1146,13 @@ CONFIG_USB_MON=y
1094# CONFIG_USB_LED is not set 1146# CONFIG_USB_LED is not set
1095# CONFIG_USB_CYPRESS_CY7C63 is not set 1147# CONFIG_USB_CYPRESS_CY7C63 is not set
1096# CONFIG_USB_CYTHERM is not set 1148# CONFIG_USB_CYTHERM is not set
1097# CONFIG_USB_PHIDGETKIT is not set 1149# CONFIG_USB_PHIDGET is not set
1098# CONFIG_USB_PHIDGETSERVO is not set
1099# CONFIG_USB_IDMOUSE is not set 1150# CONFIG_USB_IDMOUSE is not set
1151# CONFIG_USB_FTDI_ELAN is not set
1100# CONFIG_USB_APPLEDISPLAY is not set 1152# CONFIG_USB_APPLEDISPLAY is not set
1101# CONFIG_USB_SISUSBVGA is not set 1153# CONFIG_USB_SISUSBVGA is not set
1102# CONFIG_USB_LD is not set 1154# CONFIG_USB_LD is not set
1155# CONFIG_USB_TRANCEVIBRATOR is not set
1103# CONFIG_USB_TEST is not set 1156# CONFIG_USB_TEST is not set
1104 1157
1105# 1158#
@@ -1157,6 +1210,10 @@ CONFIG_USB_MON=y
1157# 1210#
1158 1211
1159# 1212#
1213# Virtualization
1214#
1215
1216#
1160# File systems 1217# File systems
1161# 1218#
1162CONFIG_EXT2_FS=y 1219CONFIG_EXT2_FS=y
@@ -1166,6 +1223,7 @@ CONFIG_EXT3_FS=y
1166CONFIG_EXT3_FS_XATTR=y 1223CONFIG_EXT3_FS_XATTR=y
1167# CONFIG_EXT3_FS_POSIX_ACL is not set 1224# CONFIG_EXT3_FS_POSIX_ACL is not set
1168# CONFIG_EXT3_FS_SECURITY is not set 1225# CONFIG_EXT3_FS_SECURITY is not set
1226# CONFIG_EXT4DEV_FS is not set
1169CONFIG_JBD=y 1227CONFIG_JBD=y
1170# CONFIG_JBD_DEBUG is not set 1228# CONFIG_JBD_DEBUG is not set
1171CONFIG_FS_MBCACHE=y 1229CONFIG_FS_MBCACHE=y
@@ -1173,6 +1231,7 @@ CONFIG_FS_MBCACHE=y
1173# CONFIG_JFS_FS is not set 1231# CONFIG_JFS_FS is not set
1174# CONFIG_FS_POSIX_ACL is not set 1232# CONFIG_FS_POSIX_ACL is not set
1175# CONFIG_XFS_FS is not set 1233# CONFIG_XFS_FS is not set
1234# CONFIG_GFS2_FS is not set
1176# CONFIG_OCFS2_FS is not set 1235# CONFIG_OCFS2_FS is not set
1177# CONFIG_MINIX_FS is not set 1236# CONFIG_MINIX_FS is not set
1178# CONFIG_ROMFS_FS is not set 1237# CONFIG_ROMFS_FS is not set
@@ -1207,8 +1266,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1207# 1266#
1208CONFIG_PROC_FS=y 1267CONFIG_PROC_FS=y
1209CONFIG_PROC_KCORE=y 1268CONFIG_PROC_KCORE=y
1269CONFIG_PROC_SYSCTL=y
1210CONFIG_SYSFS=y 1270CONFIG_SYSFS=y
1211CONFIG_TMPFS=y 1271CONFIG_TMPFS=y
1272# CONFIG_TMPFS_POSIX_ACL is not set
1212# CONFIG_HUGETLB_PAGE is not set 1273# CONFIG_HUGETLB_PAGE is not set
1213CONFIG_RAMFS=y 1274CONFIG_RAMFS=y
1214# CONFIG_CONFIGFS_FS is not set 1275# CONFIG_CONFIGFS_FS is not set
@@ -1308,17 +1369,22 @@ CONFIG_NLS_ISO8859_1=m
1308# CONFIG_NLS_UTF8 is not set 1369# CONFIG_NLS_UTF8 is not set
1309 1370
1310# 1371#
1372# Distributed Lock Manager
1373#
1374# CONFIG_DLM is not set
1375
1376#
1311# Library routines 1377# Library routines
1312# 1378#
1379CONFIG_BITREVERSE=y
1313CONFIG_CRC_CCITT=m 1380CONFIG_CRC_CCITT=m
1314# CONFIG_CRC16 is not set 1381# CONFIG_CRC16 is not set
1315CONFIG_CRC32=y 1382CONFIG_CRC32=y
1316# CONFIG_LIBCRC32C is not set 1383# CONFIG_LIBCRC32C is not set
1317CONFIG_ZLIB_INFLATE=m 1384CONFIG_ZLIB_INFLATE=m
1318CONFIG_ZLIB_DEFLATE=m 1385CONFIG_ZLIB_DEFLATE=m
1319CONFIG_TEXTSEARCH=y
1320CONFIG_TEXTSEARCH_KMP=m
1321CONFIG_PLIST=y 1386CONFIG_PLIST=y
1387CONFIG_IOMAP_COPY=y
1322 1388
1323# 1389#
1324# Instrumentation Support 1390# Instrumentation Support
@@ -1329,8 +1395,11 @@ CONFIG_PLIST=y
1329# Kernel hacking 1395# Kernel hacking
1330# 1396#
1331# CONFIG_PRINTK_TIME is not set 1397# CONFIG_PRINTK_TIME is not set
1398CONFIG_ENABLE_MUST_CHECK=y
1332CONFIG_MAGIC_SYSRQ=y 1399CONFIG_MAGIC_SYSRQ=y
1333# CONFIG_UNUSED_SYMBOLS is not set 1400# CONFIG_UNUSED_SYMBOLS is not set
1401# CONFIG_DEBUG_FS is not set
1402# CONFIG_HEADERS_CHECK is not set
1334CONFIG_DEBUG_KERNEL=y 1403CONFIG_DEBUG_KERNEL=y
1335CONFIG_LOG_BUF_SHIFT=15 1404CONFIG_LOG_BUF_SHIFT=15
1336CONFIG_DETECT_SOFTLOCKUP=y 1405CONFIG_DETECT_SOFTLOCKUP=y
@@ -1345,14 +1414,16 @@ CONFIG_DEBUG_SPINLOCK_SLEEP=y
1345# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1414# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1346# CONFIG_DEBUG_KOBJECT is not set 1415# CONFIG_DEBUG_KOBJECT is not set
1347# CONFIG_DEBUG_HIGHMEM is not set 1416# CONFIG_DEBUG_HIGHMEM is not set
1417CONFIG_DEBUG_BUGVERBOSE=y
1348# CONFIG_DEBUG_INFO is not set 1418# CONFIG_DEBUG_INFO is not set
1349# CONFIG_DEBUG_FS is not set
1350# CONFIG_DEBUG_VM is not set 1419# CONFIG_DEBUG_VM is not set
1420# CONFIG_DEBUG_LIST is not set
1351CONFIG_FORCED_INLINING=y 1421CONFIG_FORCED_INLINING=y
1352# CONFIG_RCU_TORTURE_TEST is not set 1422# CONFIG_RCU_TORTURE_TEST is not set
1353CONFIG_DEBUGGER=y 1423CONFIG_DEBUGGER=y
1354CONFIG_XMON=y 1424CONFIG_XMON=y
1355CONFIG_XMON_DEFAULT=y 1425CONFIG_XMON_DEFAULT=y
1426CONFIG_XMON_DISASSEMBLY=y
1356# CONFIG_BDI_SWITCH is not set 1427# CONFIG_BDI_SWITCH is not set
1357# CONFIG_BOOTX_TEXT is not set 1428# CONFIG_BOOTX_TEXT is not set
1358# CONFIG_PPC_EARLY_DEBUG is not set 1429# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1367,7 +1438,11 @@ CONFIG_XMON_DEFAULT=y
1367# Cryptographic options 1438# Cryptographic options
1368# 1439#
1369CONFIG_CRYPTO=y 1440CONFIG_CRYPTO=y
1441CONFIG_CRYPTO_ALGAPI=m
1442CONFIG_CRYPTO_BLKCIPHER=m
1443CONFIG_CRYPTO_MANAGER=m
1370# CONFIG_CRYPTO_HMAC is not set 1444# CONFIG_CRYPTO_HMAC is not set
1445# CONFIG_CRYPTO_XCBC is not set
1371# CONFIG_CRYPTO_NULL is not set 1446# CONFIG_CRYPTO_NULL is not set
1372# CONFIG_CRYPTO_MD4 is not set 1447# CONFIG_CRYPTO_MD4 is not set
1373# CONFIG_CRYPTO_MD5 is not set 1448# CONFIG_CRYPTO_MD5 is not set
@@ -1376,6 +1451,10 @@ CONFIG_CRYPTO_SHA1=m
1376# CONFIG_CRYPTO_SHA512 is not set 1451# CONFIG_CRYPTO_SHA512 is not set
1377# CONFIG_CRYPTO_WP512 is not set 1452# CONFIG_CRYPTO_WP512 is not set
1378# CONFIG_CRYPTO_TGR192 is not set 1453# CONFIG_CRYPTO_TGR192 is not set
1454# CONFIG_CRYPTO_GF128MUL is not set
1455CONFIG_CRYPTO_ECB=m
1456CONFIG_CRYPTO_CBC=m
1457# CONFIG_CRYPTO_LRW is not set
1379# CONFIG_CRYPTO_DES is not set 1458# CONFIG_CRYPTO_DES is not set
1380# CONFIG_CRYPTO_BLOWFISH is not set 1459# CONFIG_CRYPTO_BLOWFISH is not set
1381# CONFIG_CRYPTO_TWOFISH is not set 1460# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig
index 92d0a9dd0b8f..7724847f702a 100644
--- a/arch/powerpc/configs/g5_defconfig
+++ b/arch/powerpc/configs/g5_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:22:55 2006 4# Mon Jan 22 22:15:04 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -10,6 +10,8 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
14CONFIG_ARCH_HAS_ILOG2_U64=y
13CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 17CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,6 +24,8 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
22CONFIG_PPC_OF=y 24CONFIG_PPC_OF=y
23# CONFIG_PPC_UDBG_16550 is not set 25# CONFIG_PPC_UDBG_16550 is not set
24CONFIG_GENERIC_TBSYNC=y 26CONFIG_GENERIC_TBSYNC=y
27CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y
25# CONFIG_DEFAULT_UIMAGE is not set 29# CONFIG_DEFAULT_UIMAGE is not set
26 30
27# 31#
@@ -30,6 +34,9 @@ CONFIG_GENERIC_TBSYNC=y
30CONFIG_POWER4_ONLY=y 34CONFIG_POWER4_ONLY=y
31CONFIG_POWER4=y 35CONFIG_POWER4=y
32CONFIG_PPC_FPU=y 36CONFIG_PPC_FPU=y
37# CONFIG_PPC_DCR_NATIVE is not set
38# CONFIG_PPC_DCR_MMIO is not set
39# CONFIG_PPC_OF_PLATFORM_PCI is not set
33CONFIG_ALTIVEC=y 40CONFIG_ALTIVEC=y
34CONFIG_PPC_STD_MMU=y 41CONFIG_PPC_STD_MMU=y
35CONFIG_VIRT_CPU_ACCOUNTING=y 42CONFIG_VIRT_CPU_ACCOUNTING=y
@@ -51,18 +58,22 @@ CONFIG_LOCALVERSION=""
51CONFIG_LOCALVERSION_AUTO=y 58CONFIG_LOCALVERSION_AUTO=y
52CONFIG_SWAP=y 59CONFIG_SWAP=y
53CONFIG_SYSVIPC=y 60CONFIG_SYSVIPC=y
61# CONFIG_IPC_NS is not set
54CONFIG_POSIX_MQUEUE=y 62CONFIG_POSIX_MQUEUE=y
55# CONFIG_BSD_PROCESS_ACCT is not set 63# CONFIG_BSD_PROCESS_ACCT is not set
56# CONFIG_TASKSTATS is not set 64# CONFIG_TASKSTATS is not set
57CONFIG_SYSCTL=y 65# CONFIG_UTS_NS is not set
58# CONFIG_AUDIT is not set 66# CONFIG_AUDIT is not set
59CONFIG_IKCONFIG=y 67CONFIG_IKCONFIG=y
60CONFIG_IKCONFIG_PROC=y 68CONFIG_IKCONFIG_PROC=y
61# CONFIG_CPUSETS is not set 69# CONFIG_CPUSETS is not set
70CONFIG_SYSFS_DEPRECATED=y
62# CONFIG_RELAY is not set 71# CONFIG_RELAY is not set
63CONFIG_INITRAMFS_SOURCE="" 72CONFIG_INITRAMFS_SOURCE=""
64CONFIG_CC_OPTIMIZE_FOR_SIZE=y 73CONFIG_CC_OPTIMIZE_FOR_SIZE=y
74CONFIG_SYSCTL=y
65# CONFIG_EMBEDDED is not set 75# CONFIG_EMBEDDED is not set
76CONFIG_SYSCTL_SYSCALL=y
66CONFIG_KALLSYMS=y 77CONFIG_KALLSYMS=y
67# CONFIG_KALLSYMS_ALL is not set 78# CONFIG_KALLSYMS_ALL is not set
68# CONFIG_KALLSYMS_EXTRA_PASS is not set 79# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -71,12 +82,12 @@ CONFIG_PRINTK=y
71CONFIG_BUG=y 82CONFIG_BUG=y
72CONFIG_ELF_CORE=y 83CONFIG_ELF_CORE=y
73CONFIG_BASE_FULL=y 84CONFIG_BASE_FULL=y
74CONFIG_RT_MUTEXES=y
75CONFIG_FUTEX=y 85CONFIG_FUTEX=y
76CONFIG_EPOLL=y 86CONFIG_EPOLL=y
77CONFIG_SHMEM=y 87CONFIG_SHMEM=y
78CONFIG_SLAB=y 88CONFIG_SLAB=y
79CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_RT_MUTEXES=y
80# CONFIG_TINY_SHMEM is not set 91# CONFIG_TINY_SHMEM is not set
81CONFIG_BASE_SMALL=0 92CONFIG_BASE_SMALL=0
82# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
@@ -95,6 +106,7 @@ CONFIG_STOP_MACHINE=y
95# 106#
96# Block layer 107# Block layer
97# 108#
109CONFIG_BLOCK=y
98# CONFIG_BLK_DEV_IO_TRACE is not set 110# CONFIG_BLK_DEV_IO_TRACE is not set
99 111
100# 112#
@@ -114,23 +126,28 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
114# Platform support 126# Platform support
115# 127#
116CONFIG_PPC_MULTIPLATFORM=y 128CONFIG_PPC_MULTIPLATFORM=y
117# CONFIG_PPC_ISERIES is not set
118# CONFIG_EMBEDDED6xx is not set 129# CONFIG_EMBEDDED6xx is not set
119# CONFIG_APUS is not set 130# CONFIG_APUS is not set
120# CONFIG_PPC_PSERIES is not set 131# CONFIG_PPC_PSERIES is not set
132# CONFIG_PPC_ISERIES is not set
133# CONFIG_PPC_MPC52xx is not set
121CONFIG_PPC_PMAC=y 134CONFIG_PPC_PMAC=y
122CONFIG_PPC_PMAC64=y 135CONFIG_PPC_PMAC64=y
123# CONFIG_PPC_MAPLE is not set 136# CONFIG_PPC_MAPLE is not set
137# CONFIG_PPC_PASEMI is not set
124# CONFIG_PPC_CELL is not set 138# CONFIG_PPC_CELL is not set
125# CONFIG_PPC_CELL_NATIVE is not set 139# CONFIG_PPC_CELL_NATIVE is not set
126# CONFIG_PPC_IBM_CELL_BLADE is not set 140# CONFIG_PPC_IBM_CELL_BLADE is not set
127# CONFIG_UDBG_RTAS_CONSOLE is not set 141# CONFIG_PPC_PS3 is not set
142CONFIG_PPC_NATIVE=y
128CONFIG_U3_DART=y 143CONFIG_U3_DART=y
129# CONFIG_PPC_RTAS is not set 144# CONFIG_PPC_RTAS is not set
130# CONFIG_MMIO_NVRAM is not set 145# CONFIG_MMIO_NVRAM is not set
131CONFIG_MPIC_BROKEN_U3=y 146CONFIG_MPIC_BROKEN_U3=y
132# CONFIG_PPC_MPC106 is not set 147# CONFIG_PPC_MPC106 is not set
133CONFIG_PPC_970_NAP=y 148CONFIG_PPC_970_NAP=y
149# CONFIG_PPC_INDIRECT_IO is not set
150# CONFIG_GENERIC_IOMAP is not set
134CONFIG_CPU_FREQ=y 151CONFIG_CPU_FREQ=y
135CONFIG_CPU_FREQ_TABLE=y 152CONFIG_CPU_FREQ_TABLE=y
136# CONFIG_CPU_FREQ_DEBUG is not set 153# CONFIG_CPU_FREQ_DEBUG is not set
@@ -152,6 +169,7 @@ CONFIG_MPIC=y
152# 169#
153# CONFIG_HZ_100 is not set 170# CONFIG_HZ_100 is not set
154CONFIG_HZ_250=y 171CONFIG_HZ_250=y
172# CONFIG_HZ_300 is not set
155# CONFIG_HZ_1000 is not set 173# CONFIG_HZ_1000 is not set
156CONFIG_HZ=250 174CONFIG_HZ=250
157CONFIG_PREEMPT_NONE=y 175CONFIG_PREEMPT_NONE=y
@@ -171,6 +189,7 @@ CONFIG_IRQ_ALL_CPUS=y
171CONFIG_ARCH_SELECT_MEMORY_MODEL=y 189CONFIG_ARCH_SELECT_MEMORY_MODEL=y
172CONFIG_ARCH_FLATMEM_ENABLE=y 190CONFIG_ARCH_FLATMEM_ENABLE=y
173CONFIG_ARCH_SPARSEMEM_ENABLE=y 191CONFIG_ARCH_SPARSEMEM_ENABLE=y
192CONFIG_ARCH_POPULATES_NODE_MAP=y
174CONFIG_SELECT_MEMORY_MODEL=y 193CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y 194CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set 195# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -225,6 +244,7 @@ CONFIG_PACKET=y
225CONFIG_UNIX=y 244CONFIG_UNIX=y
226CONFIG_XFRM=y 245CONFIG_XFRM=y
227CONFIG_XFRM_USER=m 246CONFIG_XFRM_USER=m
247# CONFIG_XFRM_SUB_POLICY is not set
228CONFIG_NET_KEY=m 248CONFIG_NET_KEY=m
229CONFIG_INET=y 249CONFIG_INET=y
230CONFIG_IP_MULTICAST=y 250CONFIG_IP_MULTICAST=y
@@ -243,10 +263,13 @@ CONFIG_INET_XFRM_TUNNEL=m
243CONFIG_INET_TUNNEL=y 263CONFIG_INET_TUNNEL=y
244CONFIG_INET_XFRM_MODE_TRANSPORT=y 264CONFIG_INET_XFRM_MODE_TRANSPORT=y
245CONFIG_INET_XFRM_MODE_TUNNEL=y 265CONFIG_INET_XFRM_MODE_TUNNEL=y
266CONFIG_INET_XFRM_MODE_BEET=y
246CONFIG_INET_DIAG=y 267CONFIG_INET_DIAG=y
247CONFIG_INET_TCP_DIAG=y 268CONFIG_INET_TCP_DIAG=y
248# CONFIG_TCP_CONG_ADVANCED is not set 269# CONFIG_TCP_CONG_ADVANCED is not set
249CONFIG_TCP_CONG_BIC=y 270CONFIG_TCP_CONG_CUBIC=y
271CONFIG_DEFAULT_TCP_CONG="cubic"
272# CONFIG_TCP_MD5SIG is not set
250 273
251# 274#
252# IP: Virtual Server Configuration 275# IP: Virtual Server Configuration
@@ -263,24 +286,29 @@ CONFIG_NETFILTER=y
263# Core Netfilter Configuration 286# Core Netfilter Configuration
264# 287#
265# CONFIG_NETFILTER_NETLINK is not set 288# CONFIG_NETFILTER_NETLINK is not set
289CONFIG_NF_CONNTRACK_ENABLED=m
290CONFIG_NF_CONNTRACK_SUPPORT=y
291# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
292CONFIG_NF_CONNTRACK=m
293# CONFIG_NF_CT_ACCT is not set
294CONFIG_NF_CONNTRACK_MARK=y
295CONFIG_NF_CONNTRACK_EVENTS=y
296# CONFIG_NF_CT_PROTO_SCTP is not set
297# CONFIG_NF_CONNTRACK_AMANDA is not set
298CONFIG_NF_CONNTRACK_FTP=m
299# CONFIG_NF_CONNTRACK_H323 is not set
300CONFIG_NF_CONNTRACK_IRC=m
301# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
302# CONFIG_NF_CONNTRACK_PPTP is not set
303# CONFIG_NF_CONNTRACK_SIP is not set
304CONFIG_NF_CONNTRACK_TFTP=m
266# CONFIG_NETFILTER_XTABLES is not set 305# CONFIG_NETFILTER_XTABLES is not set
267 306
268# 307#
269# IP: Netfilter Configuration 308# IP: Netfilter Configuration
270# 309#
271CONFIG_IP_NF_CONNTRACK=m 310CONFIG_NF_CONNTRACK_IPV4=m
272CONFIG_IP_NF_CT_ACCT=y 311CONFIG_NF_CONNTRACK_PROC_COMPAT=y
273CONFIG_IP_NF_CONNTRACK_MARK=y
274CONFIG_IP_NF_CONNTRACK_EVENTS=y
275CONFIG_IP_NF_CT_PROTO_SCTP=m
276CONFIG_IP_NF_FTP=m
277CONFIG_IP_NF_IRC=m
278# CONFIG_IP_NF_NETBIOS_NS is not set
279CONFIG_IP_NF_TFTP=m
280CONFIG_IP_NF_AMANDA=m
281# CONFIG_IP_NF_PPTP is not set
282# CONFIG_IP_NF_H323 is not set
283# CONFIG_IP_NF_SIP is not set
284CONFIG_IP_NF_QUEUE=m 312CONFIG_IP_NF_QUEUE=m
285 313
286# 314#
@@ -307,7 +335,6 @@ CONFIG_LLC=y
307# CONFIG_ATALK is not set 335# CONFIG_ATALK is not set
308# CONFIG_X25 is not set 336# CONFIG_X25 is not set
309# CONFIG_LAPB is not set 337# CONFIG_LAPB is not set
310# CONFIG_NET_DIVERT is not set
311# CONFIG_ECONET is not set 338# CONFIG_ECONET is not set
312# CONFIG_WAN_ROUTER is not set 339# CONFIG_WAN_ROUTER is not set
313 340
@@ -382,6 +409,12 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
382# CONFIG_ATA_OVER_ETH is not set 409# CONFIG_ATA_OVER_ETH is not set
383 410
384# 411#
412# Misc devices
413#
414# CONFIG_SGI_IOC4 is not set
415# CONFIG_TIFM_CORE is not set
416
417#
385# ATA/ATAPI/MFM/RLL support 418# ATA/ATAPI/MFM/RLL support
386# 419#
387CONFIG_IDE=y 420CONFIG_IDE=y
@@ -408,7 +441,6 @@ CONFIG_BLK_DEV_IDEPCI=y
408# CONFIG_BLK_DEV_OFFBOARD is not set 441# CONFIG_BLK_DEV_OFFBOARD is not set
409# CONFIG_BLK_DEV_GENERIC is not set 442# CONFIG_BLK_DEV_GENERIC is not set
410# CONFIG_BLK_DEV_OPTI621 is not set 443# CONFIG_BLK_DEV_OPTI621 is not set
411# CONFIG_BLK_DEV_SL82C105 is not set
412CONFIG_BLK_DEV_IDEDMA_PCI=y 444CONFIG_BLK_DEV_IDEDMA_PCI=y
413# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 445# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
414CONFIG_IDEDMA_PCI_AUTO=y 446CONFIG_IDEDMA_PCI_AUTO=y
@@ -423,6 +455,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
423# CONFIG_BLK_DEV_CS5530 is not set 455# CONFIG_BLK_DEV_CS5530 is not set
424# CONFIG_BLK_DEV_HPT34X is not set 456# CONFIG_BLK_DEV_HPT34X is not set
425# CONFIG_BLK_DEV_HPT366 is not set 457# CONFIG_BLK_DEV_HPT366 is not set
458# CONFIG_BLK_DEV_JMICRON is not set
426# CONFIG_BLK_DEV_SC1200 is not set 459# CONFIG_BLK_DEV_SC1200 is not set
427# CONFIG_BLK_DEV_PIIX is not set 460# CONFIG_BLK_DEV_PIIX is not set
428# CONFIG_BLK_DEV_IT821X is not set 461# CONFIG_BLK_DEV_IT821X is not set
@@ -431,6 +464,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
431# CONFIG_BLK_DEV_PDC202XX_NEW is not set 464# CONFIG_BLK_DEV_PDC202XX_NEW is not set
432# CONFIG_BLK_DEV_SVWKS is not set 465# CONFIG_BLK_DEV_SVWKS is not set
433# CONFIG_BLK_DEV_SIIMAGE is not set 466# CONFIG_BLK_DEV_SIIMAGE is not set
467# CONFIG_BLK_DEV_SL82C105 is not set
434# CONFIG_BLK_DEV_SLC90E66 is not set 468# CONFIG_BLK_DEV_SLC90E66 is not set
435# CONFIG_BLK_DEV_TRM290 is not set 469# CONFIG_BLK_DEV_TRM290 is not set
436# CONFIG_BLK_DEV_VIA82CXXX is not set 470# CONFIG_BLK_DEV_VIA82CXXX is not set
@@ -448,6 +482,8 @@ CONFIG_IDEDMA_AUTO=y
448# 482#
449# CONFIG_RAID_ATTRS is not set 483# CONFIG_RAID_ATTRS is not set
450CONFIG_SCSI=y 484CONFIG_SCSI=y
485# CONFIG_SCSI_TGT is not set
486# CONFIG_SCSI_NETLINK is not set
451CONFIG_SCSI_PROC_FS=y 487CONFIG_SCSI_PROC_FS=y
452 488
453# 489#
@@ -467,14 +503,16 @@ CONFIG_CHR_DEV_SG=y
467CONFIG_SCSI_MULTI_LUN=y 503CONFIG_SCSI_MULTI_LUN=y
468CONFIG_SCSI_CONSTANTS=y 504CONFIG_SCSI_CONSTANTS=y
469# CONFIG_SCSI_LOGGING is not set 505# CONFIG_SCSI_LOGGING is not set
506# CONFIG_SCSI_SCAN_ASYNC is not set
470 507
471# 508#
472# SCSI Transport Attributes 509# SCSI Transports
473# 510#
474CONFIG_SCSI_SPI_ATTRS=y 511CONFIG_SCSI_SPI_ATTRS=y
475# CONFIG_SCSI_FC_ATTRS is not set 512# CONFIG_SCSI_FC_ATTRS is not set
476# CONFIG_SCSI_ISCSI_ATTRS is not set 513# CONFIG_SCSI_ISCSI_ATTRS is not set
477# CONFIG_SCSI_SAS_ATTRS is not set 514# CONFIG_SCSI_SAS_ATTRS is not set
515# CONFIG_SCSI_SAS_LIBSAS is not set
478 516
479# 517#
480# SCSI low-level drivers 518# SCSI low-level drivers
@@ -487,26 +525,12 @@ CONFIG_SCSI_SPI_ATTRS=y
487# CONFIG_SCSI_AIC7XXX is not set 525# CONFIG_SCSI_AIC7XXX is not set
488# CONFIG_SCSI_AIC7XXX_OLD is not set 526# CONFIG_SCSI_AIC7XXX_OLD is not set
489# CONFIG_SCSI_AIC79XX is not set 527# CONFIG_SCSI_AIC79XX is not set
528# CONFIG_SCSI_AIC94XX is not set
529# CONFIG_SCSI_ARCMSR is not set
490# CONFIG_MEGARAID_NEWGEN is not set 530# CONFIG_MEGARAID_NEWGEN is not set
491# CONFIG_MEGARAID_LEGACY is not set 531# CONFIG_MEGARAID_LEGACY is not set
492# CONFIG_MEGARAID_SAS is not set 532# CONFIG_MEGARAID_SAS is not set
493CONFIG_ATA=y
494# CONFIG_SATA_AHCI is not set
495CONFIG_SATA_SVW=y
496# CONFIG_SCSI_ATA_PIIX is not set
497# CONFIG_SATA_MV is not set
498# CONFIG_SATA_NV is not set
499# CONFIG_SCSI_PDC_ADMA is not set
500# CONFIG_SCSI_HPTIOP is not set 533# CONFIG_SCSI_HPTIOP is not set
501# CONFIG_SATA_QSTOR is not set
502# CONFIG_SATA_PROMISE is not set
503# CONFIG_SATA_SX4 is not set
504# CONFIG_SATA_SIL is not set
505# CONFIG_SATA_SIL24 is not set
506# CONFIG_SATA_SIS is not set
507# CONFIG_SATA_ULI is not set
508# CONFIG_SATA_VIA is not set
509# CONFIG_SATA_VITESSE is not set
510# CONFIG_SCSI_BUSLOGIC is not set 534# CONFIG_SCSI_BUSLOGIC is not set
511# CONFIG_SCSI_DMX3191D is not set 535# CONFIG_SCSI_DMX3191D is not set
512# CONFIG_SCSI_EATA is not set 536# CONFIG_SCSI_EATA is not set
@@ -515,14 +539,71 @@ CONFIG_SATA_SVW=y
515# CONFIG_SCSI_IPS is not set 539# CONFIG_SCSI_IPS is not set
516# CONFIG_SCSI_INITIO is not set 540# CONFIG_SCSI_INITIO is not set
517# CONFIG_SCSI_INIA100 is not set 541# CONFIG_SCSI_INIA100 is not set
542# CONFIG_SCSI_STEX is not set
518# CONFIG_SCSI_SYM53C8XX_2 is not set 543# CONFIG_SCSI_SYM53C8XX_2 is not set
519# CONFIG_SCSI_IPR is not set 544# CONFIG_SCSI_IPR is not set
520# CONFIG_SCSI_QLOGIC_1280 is not set 545# CONFIG_SCSI_QLOGIC_1280 is not set
521# CONFIG_SCSI_QLA_FC is not set 546# CONFIG_SCSI_QLA_FC is not set
547# CONFIG_SCSI_QLA_ISCSI is not set
522# CONFIG_SCSI_LPFC is not set 548# CONFIG_SCSI_LPFC is not set
523# CONFIG_SCSI_DC395x is not set 549# CONFIG_SCSI_DC395x is not set
524# CONFIG_SCSI_DC390T is not set 550# CONFIG_SCSI_DC390T is not set
525# CONFIG_SCSI_DEBUG is not set 551# CONFIG_SCSI_DEBUG is not set
552# CONFIG_SCSI_SRP is not set
553
554#
555# Serial ATA (prod) and Parallel ATA (experimental) drivers
556#
557CONFIG_ATA=y
558# CONFIG_SATA_AHCI is not set
559CONFIG_SATA_SVW=y
560# CONFIG_ATA_PIIX is not set
561# CONFIG_SATA_MV is not set
562# CONFIG_SATA_NV is not set
563# CONFIG_PDC_ADMA is not set
564# CONFIG_SATA_QSTOR is not set
565# CONFIG_SATA_PROMISE is not set
566# CONFIG_SATA_SX4 is not set
567# CONFIG_SATA_SIL is not set
568# CONFIG_SATA_SIL24 is not set
569# CONFIG_SATA_SIS is not set
570# CONFIG_SATA_ULI is not set
571# CONFIG_SATA_VIA is not set
572# CONFIG_SATA_VITESSE is not set
573# CONFIG_PATA_ALI is not set
574# CONFIG_PATA_AMD is not set
575# CONFIG_PATA_ARTOP is not set
576# CONFIG_PATA_ATIIXP is not set
577# CONFIG_PATA_CMD64X is not set
578# CONFIG_PATA_CS5520 is not set
579# CONFIG_PATA_CS5530 is not set
580# CONFIG_PATA_CYPRESS is not set
581# CONFIG_PATA_EFAR is not set
582# CONFIG_ATA_GENERIC is not set
583# CONFIG_PATA_HPT366 is not set
584# CONFIG_PATA_HPT37X is not set
585# CONFIG_PATA_HPT3X2N is not set
586# CONFIG_PATA_HPT3X3 is not set
587# CONFIG_PATA_IT821X is not set
588# CONFIG_PATA_JMICRON is not set
589# CONFIG_PATA_TRIFLEX is not set
590# CONFIG_PATA_MARVELL is not set
591# CONFIG_PATA_MPIIX is not set
592# CONFIG_PATA_OLDPIIX is not set
593# CONFIG_PATA_NETCELL is not set
594# CONFIG_PATA_NS87410 is not set
595# CONFIG_PATA_OPTI is not set
596# CONFIG_PATA_OPTIDMA is not set
597# CONFIG_PATA_PDC_OLD is not set
598# CONFIG_PATA_RADISYS is not set
599# CONFIG_PATA_RZ1000 is not set
600# CONFIG_PATA_SC1200 is not set
601# CONFIG_PATA_SERVERWORKS is not set
602# CONFIG_PATA_PDC2027X is not set
603# CONFIG_PATA_SIL680 is not set
604# CONFIG_PATA_SIS is not set
605# CONFIG_PATA_VIA is not set
606# CONFIG_PATA_WINBOND is not set
526 607
527# 608#
528# Multi-device support (RAID and LVM) 609# Multi-device support (RAID and LVM)
@@ -537,6 +618,7 @@ CONFIG_MD_RAID10=m
537CONFIG_MD_MULTIPATH=m 618CONFIG_MD_MULTIPATH=m
538CONFIG_MD_FAULTY=m 619CONFIG_MD_FAULTY=m
539CONFIG_BLK_DEV_DM=y 620CONFIG_BLK_DEV_DM=y
621# CONFIG_DM_DEBUG is not set
540CONFIG_DM_CRYPT=m 622CONFIG_DM_CRYPT=m
541CONFIG_DM_SNAPSHOT=m 623CONFIG_DM_SNAPSHOT=m
542CONFIG_DM_MIRROR=m 624CONFIG_DM_MIRROR=m
@@ -591,11 +673,13 @@ CONFIG_IEEE1394_RAWIO=y
591CONFIG_ADB_PMU=y 673CONFIG_ADB_PMU=y
592# CONFIG_ADB_PMU_LED is not set 674# CONFIG_ADB_PMU_LED is not set
593CONFIG_PMAC_SMU=y 675CONFIG_PMAC_SMU=y
676CONFIG_MAC_EMUMOUSEBTN=y
594CONFIG_THERM_PM72=y 677CONFIG_THERM_PM72=y
595CONFIG_WINDFARM=y 678CONFIG_WINDFARM=y
596CONFIG_WINDFARM_PM81=y 679CONFIG_WINDFARM_PM81=y
597CONFIG_WINDFARM_PM91=y 680CONFIG_WINDFARM_PM91=y
598CONFIG_WINDFARM_PM112=y 681CONFIG_WINDFARM_PM112=y
682# CONFIG_PMAC_RACKMETER is not set
599 683
600# 684#
601# Network device support 685# Network device support
@@ -652,7 +736,7 @@ CONFIG_E1000=y
652# CONFIG_SK98LIN is not set 736# CONFIG_SK98LIN is not set
653CONFIG_TIGON3=y 737CONFIG_TIGON3=y
654# CONFIG_BNX2 is not set 738# CONFIG_BNX2 is not set
655# CONFIG_MV643XX_ETH is not set 739# CONFIG_QLA3XXX is not set
656 740
657# 741#
658# Ethernet (10000 Mbit) 742# Ethernet (10000 Mbit)
@@ -661,6 +745,7 @@ CONFIG_TIGON3=y
661# CONFIG_IXGB is not set 745# CONFIG_IXGB is not set
662# CONFIG_S2IO is not set 746# CONFIG_S2IO is not set
663# CONFIG_MYRI10GE is not set 747# CONFIG_MYRI10GE is not set
748# CONFIG_NETXEN_NIC is not set
664 749
665# 750#
666# Token Ring devices 751# Token Ring devices
@@ -691,6 +776,7 @@ CONFIG_PPP_BSDCOMP=m
691# CONFIG_PPP_MPPE is not set 776# CONFIG_PPP_MPPE is not set
692CONFIG_PPPOE=m 777CONFIG_PPPOE=m
693# CONFIG_SLIP is not set 778# CONFIG_SLIP is not set
779CONFIG_SLHC=m
694# CONFIG_NET_FC is not set 780# CONFIG_NET_FC is not set
695# CONFIG_SHAPER is not set 781# CONFIG_SHAPER is not set
696# CONFIG_NETCONSOLE is not set 782# CONFIG_NETCONSOLE is not set
@@ -711,6 +797,7 @@ CONFIG_PPPOE=m
711# Input device support 797# Input device support
712# 798#
713CONFIG_INPUT=y 799CONFIG_INPUT=y
800CONFIG_INPUT_FF_MEMLESS=y
714 801
715# 802#
716# Userland interfaces 803# Userland interfaces
@@ -733,6 +820,7 @@ CONFIG_INPUT_KEYBOARD=y
733# CONFIG_KEYBOARD_LKKBD is not set 820# CONFIG_KEYBOARD_LKKBD is not set
734# CONFIG_KEYBOARD_XTKBD is not set 821# CONFIG_KEYBOARD_XTKBD is not set
735# CONFIG_KEYBOARD_NEWTON is not set 822# CONFIG_KEYBOARD_NEWTON is not set
823# CONFIG_KEYBOARD_STOWAWAY is not set
736CONFIG_INPUT_MOUSE=y 824CONFIG_INPUT_MOUSE=y
737# CONFIG_MOUSE_PS2 is not set 825# CONFIG_MOUSE_PS2 is not set
738# CONFIG_MOUSE_SERIAL is not set 826# CONFIG_MOUSE_SERIAL is not set
@@ -789,13 +877,7 @@ CONFIG_GEN_RTC=y
789# CONFIG_DTLK is not set 877# CONFIG_DTLK is not set
790# CONFIG_R3964 is not set 878# CONFIG_R3964 is not set
791# CONFIG_APPLICOM is not set 879# CONFIG_APPLICOM is not set
792
793#
794# Ftape, the floppy tape device driver
795#
796CONFIG_AGP=m 880CONFIG_AGP=m
797# CONFIG_AGP_SIS is not set
798# CONFIG_AGP_VIA is not set
799CONFIG_AGP_UNINORTH=m 881CONFIG_AGP_UNINORTH=m
800# CONFIG_DRM is not set 882# CONFIG_DRM is not set
801CONFIG_RAW_DRIVER=y 883CONFIG_RAW_DRIVER=y
@@ -806,7 +888,6 @@ CONFIG_MAX_RAW_DEVS=256
806# TPM devices 888# TPM devices
807# 889#
808# CONFIG_TCG_TPM is not set 890# CONFIG_TCG_TPM is not set
809# CONFIG_TELCLOCK is not set
810 891
811# 892#
812# I2C support 893# I2C support
@@ -871,6 +952,7 @@ CONFIG_I2C_POWERMAC=y
871# 952#
872# Dallas's 1-wire bus 953# Dallas's 1-wire bus
873# 954#
955# CONFIG_W1 is not set
874 956
875# 957#
876# Hardware Monitoring support 958# Hardware Monitoring support
@@ -879,14 +961,9 @@ CONFIG_I2C_POWERMAC=y
879# CONFIG_HWMON_VID is not set 961# CONFIG_HWMON_VID is not set
880 962
881# 963#
882# Misc devices
883#
884
885#
886# Multimedia devices 964# Multimedia devices
887# 965#
888# CONFIG_VIDEO_DEV is not set 966# CONFIG_VIDEO_DEV is not set
889CONFIG_VIDEO_V4L2=y
890 967
891# 968#
892# Digital Video Broadcasting Devices 969# Digital Video Broadcasting Devices
@@ -899,6 +976,7 @@ CONFIG_VIDEO_V4L2=y
899# 976#
900CONFIG_FIRMWARE_EDID=y 977CONFIG_FIRMWARE_EDID=y
901CONFIG_FB=y 978CONFIG_FB=y
979CONFIG_FB_DDC=y
902CONFIG_FB_CFB_FILLRECT=y 980CONFIG_FB_CFB_FILLRECT=y
903CONFIG_FB_CFB_COPYAREA=y 981CONFIG_FB_CFB_COPYAREA=y
904CONFIG_FB_CFB_IMAGEBLIT=y 982CONFIG_FB_CFB_IMAGEBLIT=y
@@ -930,6 +1008,7 @@ CONFIG_FB_RADEON_I2C=y
930# CONFIG_FB_3DFX is not set 1008# CONFIG_FB_3DFX is not set
931# CONFIG_FB_VOODOO1 is not set 1009# CONFIG_FB_VOODOO1 is not set
932# CONFIG_FB_TRIDENT is not set 1010# CONFIG_FB_TRIDENT is not set
1011# CONFIG_FB_IBM_GXT4500 is not set
933# CONFIG_FB_VIRTUAL is not set 1012# CONFIG_FB_VIRTUAL is not set
934 1013
935# 1014#
@@ -1080,6 +1159,11 @@ CONFIG_SND_USB_AUDIO=m
1080# CONFIG_SOUND_PRIME is not set 1159# CONFIG_SOUND_PRIME is not set
1081 1160
1082# 1161#
1162# HID Devices
1163#
1164CONFIG_HID=y
1165
1166#
1083# USB support 1167# USB support
1084# 1168#
1085CONFIG_USB_ARCH_HAS_HCD=y 1169CONFIG_USB_ARCH_HAS_HCD=y
@@ -1094,6 +1178,7 @@ CONFIG_USB=y
1094CONFIG_USB_DEVICEFS=y 1178CONFIG_USB_DEVICEFS=y
1095# CONFIG_USB_BANDWIDTH is not set 1179# CONFIG_USB_BANDWIDTH is not set
1096# CONFIG_USB_DYNAMIC_MINORS is not set 1180# CONFIG_USB_DYNAMIC_MINORS is not set
1181# CONFIG_USB_MULTITHREAD_PROBE is not set
1097# CONFIG_USB_OTG is not set 1182# CONFIG_USB_OTG is not set
1098 1183
1099# 1184#
@@ -1135,18 +1220,19 @@ CONFIG_USB_STORAGE_SDDR55=y
1135CONFIG_USB_STORAGE_JUMPSHOT=y 1220CONFIG_USB_STORAGE_JUMPSHOT=y
1136# CONFIG_USB_STORAGE_ALAUDA is not set 1221# CONFIG_USB_STORAGE_ALAUDA is not set
1137# CONFIG_USB_STORAGE_ONETOUCH is not set 1222# CONFIG_USB_STORAGE_ONETOUCH is not set
1223# CONFIG_USB_STORAGE_KARMA is not set
1138# CONFIG_USB_LIBUSUAL is not set 1224# CONFIG_USB_LIBUSUAL is not set
1139 1225
1140# 1226#
1141# USB Input Devices 1227# USB Input Devices
1142# 1228#
1143CONFIG_USB_HID=y 1229CONFIG_USB_HID=y
1144CONFIG_USB_HIDINPUT=y
1145# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1230# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1146CONFIG_HID_FF=y 1231CONFIG_HID_FF=y
1147CONFIG_HID_PID=y 1232CONFIG_HID_PID=y
1148CONFIG_LOGITECH_FF=y 1233CONFIG_LOGITECH_FF=y
1149CONFIG_THRUSTMASTER_FF=y 1234CONFIG_THRUSTMASTER_FF=y
1235# CONFIG_ZEROPLUS_FF is not set
1150CONFIG_USB_HIDDEV=y 1236CONFIG_USB_HIDDEV=y
1151# CONFIG_USB_AIPTEK is not set 1237# CONFIG_USB_AIPTEK is not set
1152# CONFIG_USB_WACOM is not set 1238# CONFIG_USB_WACOM is not set
@@ -1174,12 +1260,14 @@ CONFIG_USB_CATC=m
1174CONFIG_USB_KAWETH=m 1260CONFIG_USB_KAWETH=m
1175CONFIG_USB_PEGASUS=m 1261CONFIG_USB_PEGASUS=m
1176CONFIG_USB_RTL8150=m 1262CONFIG_USB_RTL8150=m
1263# CONFIG_USB_USBNET_MII is not set
1177CONFIG_USB_USBNET=m 1264CONFIG_USB_USBNET=m
1178# CONFIG_USB_NET_AX8817X is not set 1265# CONFIG_USB_NET_AX8817X is not set
1179CONFIG_USB_NET_CDCETHER=m 1266CONFIG_USB_NET_CDCETHER=m
1180# CONFIG_USB_NET_GL620A is not set 1267# CONFIG_USB_NET_GL620A is not set
1181# CONFIG_USB_NET_NET1080 is not set 1268# CONFIG_USB_NET_NET1080 is not set
1182# CONFIG_USB_NET_PLUSB is not set 1269# CONFIG_USB_NET_PLUSB is not set
1270# CONFIG_USB_NET_MCS7830 is not set
1183# CONFIG_USB_NET_RNDIS_HOST is not set 1271# CONFIG_USB_NET_RNDIS_HOST is not set
1184# CONFIG_USB_NET_CDC_SUBSET is not set 1272# CONFIG_USB_NET_CDC_SUBSET is not set
1185# CONFIG_USB_NET_ZAURUS is not set 1273# CONFIG_USB_NET_ZAURUS is not set
@@ -1194,6 +1282,7 @@ CONFIG_USB_MON=y
1194# 1282#
1195CONFIG_USB_SERIAL=m 1283CONFIG_USB_SERIAL=m
1196CONFIG_USB_SERIAL_GENERIC=y 1284CONFIG_USB_SERIAL_GENERIC=y
1285# CONFIG_USB_SERIAL_AIRCABLE is not set
1197# CONFIG_USB_SERIAL_AIRPRIME is not set 1286# CONFIG_USB_SERIAL_AIRPRIME is not set
1198# CONFIG_USB_SERIAL_ARK3116 is not set 1287# CONFIG_USB_SERIAL_ARK3116 is not set
1199CONFIG_USB_SERIAL_BELKIN=m 1288CONFIG_USB_SERIAL_BELKIN=m
@@ -1228,6 +1317,8 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
1228CONFIG_USB_SERIAL_KLSI=m 1317CONFIG_USB_SERIAL_KLSI=m
1229CONFIG_USB_SERIAL_KOBIL_SCT=m 1318CONFIG_USB_SERIAL_KOBIL_SCT=m
1230CONFIG_USB_SERIAL_MCT_U232=m 1319CONFIG_USB_SERIAL_MCT_U232=m
1320# CONFIG_USB_SERIAL_MOS7720 is not set
1321# CONFIG_USB_SERIAL_MOS7840 is not set
1231# CONFIG_USB_SERIAL_NAVMAN is not set 1322# CONFIG_USB_SERIAL_NAVMAN is not set
1232CONFIG_USB_SERIAL_PL2303=m 1323CONFIG_USB_SERIAL_PL2303=m
1233# CONFIG_USB_SERIAL_HP4X is not set 1324# CONFIG_USB_SERIAL_HP4X is not set
@@ -1239,6 +1330,7 @@ CONFIG_USB_SERIAL_CYBERJACK=m
1239CONFIG_USB_SERIAL_XIRCOM=m 1330CONFIG_USB_SERIAL_XIRCOM=m
1240# CONFIG_USB_SERIAL_OPTION is not set 1331# CONFIG_USB_SERIAL_OPTION is not set
1241CONFIG_USB_SERIAL_OMNINET=m 1332CONFIG_USB_SERIAL_OMNINET=m
1333# CONFIG_USB_SERIAL_DEBUG is not set
1242CONFIG_USB_EZUSB=y 1334CONFIG_USB_EZUSB=y
1243 1335
1244# 1336#
@@ -1246,6 +1338,7 @@ CONFIG_USB_EZUSB=y
1246# 1338#
1247# CONFIG_USB_EMI62 is not set 1339# CONFIG_USB_EMI62 is not set
1248# CONFIG_USB_EMI26 is not set 1340# CONFIG_USB_EMI26 is not set
1341# CONFIG_USB_ADUTUX is not set
1249# CONFIG_USB_AUERSWALD is not set 1342# CONFIG_USB_AUERSWALD is not set
1250# CONFIG_USB_RIO500 is not set 1343# CONFIG_USB_RIO500 is not set
1251# CONFIG_USB_LEGOTOWER is not set 1344# CONFIG_USB_LEGOTOWER is not set
@@ -1253,12 +1346,13 @@ CONFIG_USB_EZUSB=y
1253# CONFIG_USB_LED is not set 1346# CONFIG_USB_LED is not set
1254# CONFIG_USB_CYPRESS_CY7C63 is not set 1347# CONFIG_USB_CYPRESS_CY7C63 is not set
1255# CONFIG_USB_CYTHERM is not set 1348# CONFIG_USB_CYTHERM is not set
1256# CONFIG_USB_PHIDGETKIT is not set 1349# CONFIG_USB_PHIDGET is not set
1257# CONFIG_USB_PHIDGETSERVO is not set
1258# CONFIG_USB_IDMOUSE is not set 1350# CONFIG_USB_IDMOUSE is not set
1351# CONFIG_USB_FTDI_ELAN is not set
1259CONFIG_USB_APPLEDISPLAY=m 1352CONFIG_USB_APPLEDISPLAY=m
1260# CONFIG_USB_SISUSBVGA is not set 1353# CONFIG_USB_SISUSBVGA is not set
1261# CONFIG_USB_LD is not set 1354# CONFIG_USB_LD is not set
1355# CONFIG_USB_TRANCEVIBRATOR is not set
1262# CONFIG_USB_TEST is not set 1356# CONFIG_USB_TEST is not set
1263 1357
1264# 1358#
@@ -1316,6 +1410,10 @@ CONFIG_USB_APPLEDISPLAY=m
1316# 1410#
1317 1411
1318# 1412#
1413# Virtualization
1414#
1415
1416#
1319# File systems 1417# File systems
1320# 1418#
1321CONFIG_EXT2_FS=y 1419CONFIG_EXT2_FS=y
@@ -1328,6 +1426,7 @@ CONFIG_EXT3_FS=y
1328CONFIG_EXT3_FS_XATTR=y 1426CONFIG_EXT3_FS_XATTR=y
1329CONFIG_EXT3_FS_POSIX_ACL=y 1427CONFIG_EXT3_FS_POSIX_ACL=y
1330CONFIG_EXT3_FS_SECURITY=y 1428CONFIG_EXT3_FS_SECURITY=y
1429# CONFIG_EXT4DEV_FS is not set
1331CONFIG_JBD=y 1430CONFIG_JBD=y
1332# CONFIG_JBD_DEBUG is not set 1431# CONFIG_JBD_DEBUG is not set
1333CONFIG_FS_MBCACHE=y 1432CONFIG_FS_MBCACHE=y
@@ -1344,6 +1443,7 @@ CONFIG_XFS_FS=m
1344CONFIG_XFS_SECURITY=y 1443CONFIG_XFS_SECURITY=y
1345CONFIG_XFS_POSIX_ACL=y 1444CONFIG_XFS_POSIX_ACL=y
1346# CONFIG_XFS_RT is not set 1445# CONFIG_XFS_RT is not set
1446# CONFIG_GFS2_FS is not set
1347# CONFIG_OCFS2_FS is not set 1447# CONFIG_OCFS2_FS is not set
1348# CONFIG_MINIX_FS is not set 1448# CONFIG_MINIX_FS is not set
1349# CONFIG_ROMFS_FS is not set 1449# CONFIG_ROMFS_FS is not set
@@ -1380,8 +1480,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1380# 1480#
1381CONFIG_PROC_FS=y 1481CONFIG_PROC_FS=y
1382CONFIG_PROC_KCORE=y 1482CONFIG_PROC_KCORE=y
1483CONFIG_PROC_SYSCTL=y
1383CONFIG_SYSFS=y 1484CONFIG_SYSFS=y
1384CONFIG_TMPFS=y 1485CONFIG_TMPFS=y
1486# CONFIG_TMPFS_POSIX_ACL is not set
1385CONFIG_HUGETLBFS=y 1487CONFIG_HUGETLBFS=y
1386CONFIG_HUGETLB_PAGE=y 1488CONFIG_HUGETLB_PAGE=y
1387CONFIG_RAMFS=y 1489CONFIG_RAMFS=y
@@ -1505,17 +1607,22 @@ CONFIG_NLS_ISO8859_15=y
1505CONFIG_NLS_UTF8=y 1607CONFIG_NLS_UTF8=y
1506 1608
1507# 1609#
1610# Distributed Lock Manager
1611#
1612# CONFIG_DLM is not set
1613
1614#
1508# Library routines 1615# Library routines
1509# 1616#
1617CONFIG_BITREVERSE=y
1510CONFIG_CRC_CCITT=m 1618CONFIG_CRC_CCITT=m
1511# CONFIG_CRC16 is not set 1619# CONFIG_CRC16 is not set
1512CONFIG_CRC32=y 1620CONFIG_CRC32=y
1513CONFIG_LIBCRC32C=m 1621CONFIG_LIBCRC32C=m
1514CONFIG_ZLIB_INFLATE=y 1622CONFIG_ZLIB_INFLATE=y
1515CONFIG_ZLIB_DEFLATE=m 1623CONFIG_ZLIB_DEFLATE=m
1516CONFIG_TEXTSEARCH=y
1517CONFIG_TEXTSEARCH_KMP=m
1518CONFIG_PLIST=y 1624CONFIG_PLIST=y
1625CONFIG_IOMAP_COPY=y
1519 1626
1520# 1627#
1521# Instrumentation Support 1628# Instrumentation Support
@@ -1528,8 +1635,11 @@ CONFIG_OPROFILE=y
1528# Kernel hacking 1635# Kernel hacking
1529# 1636#
1530# CONFIG_PRINTK_TIME is not set 1637# CONFIG_PRINTK_TIME is not set
1638CONFIG_ENABLE_MUST_CHECK=y
1531CONFIG_MAGIC_SYSRQ=y 1639CONFIG_MAGIC_SYSRQ=y
1532# CONFIG_UNUSED_SYMBOLS is not set 1640# CONFIG_UNUSED_SYMBOLS is not set
1641CONFIG_DEBUG_FS=y
1642# CONFIG_HEADERS_CHECK is not set
1533CONFIG_DEBUG_KERNEL=y 1643CONFIG_DEBUG_KERNEL=y
1534CONFIG_LOG_BUF_SHIFT=17 1644CONFIG_LOG_BUF_SHIFT=17
1535CONFIG_DETECT_SOFTLOCKUP=y 1645CONFIG_DETECT_SOFTLOCKUP=y
@@ -1543,9 +1653,10 @@ CONFIG_DEBUG_MUTEXES=y
1543# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1653# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1544# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1654# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1545# CONFIG_DEBUG_KOBJECT is not set 1655# CONFIG_DEBUG_KOBJECT is not set
1656CONFIG_DEBUG_BUGVERBOSE=y
1546# CONFIG_DEBUG_INFO is not set 1657# CONFIG_DEBUG_INFO is not set
1547CONFIG_DEBUG_FS=y
1548# CONFIG_DEBUG_VM is not set 1658# CONFIG_DEBUG_VM is not set
1659# CONFIG_DEBUG_LIST is not set
1549CONFIG_FORCED_INLINING=y 1660CONFIG_FORCED_INLINING=y
1550# CONFIG_RCU_TORTURE_TEST is not set 1661# CONFIG_RCU_TORTURE_TEST is not set
1551# CONFIG_DEBUG_STACKOVERFLOW is not set 1662# CONFIG_DEBUG_STACKOVERFLOW is not set
@@ -1565,7 +1676,12 @@ CONFIG_BOOTX_TEXT=y
1565# Cryptographic options 1676# Cryptographic options
1566# 1677#
1567CONFIG_CRYPTO=y 1678CONFIG_CRYPTO=y
1679CONFIG_CRYPTO_ALGAPI=y
1680CONFIG_CRYPTO_BLKCIPHER=y
1681CONFIG_CRYPTO_HASH=y
1682CONFIG_CRYPTO_MANAGER=y
1568CONFIG_CRYPTO_HMAC=y 1683CONFIG_CRYPTO_HMAC=y
1684# CONFIG_CRYPTO_XCBC is not set
1569CONFIG_CRYPTO_NULL=m 1685CONFIG_CRYPTO_NULL=m
1570CONFIG_CRYPTO_MD4=m 1686CONFIG_CRYPTO_MD4=m
1571CONFIG_CRYPTO_MD5=y 1687CONFIG_CRYPTO_MD5=y
@@ -1574,9 +1690,14 @@ CONFIG_CRYPTO_SHA256=m
1574CONFIG_CRYPTO_SHA512=m 1690CONFIG_CRYPTO_SHA512=m
1575CONFIG_CRYPTO_WP512=m 1691CONFIG_CRYPTO_WP512=m
1576# CONFIG_CRYPTO_TGR192 is not set 1692# CONFIG_CRYPTO_TGR192 is not set
1693# CONFIG_CRYPTO_GF128MUL is not set
1694CONFIG_CRYPTO_ECB=m
1695CONFIG_CRYPTO_CBC=y
1696# CONFIG_CRYPTO_LRW is not set
1577CONFIG_CRYPTO_DES=y 1697CONFIG_CRYPTO_DES=y
1578CONFIG_CRYPTO_BLOWFISH=m 1698CONFIG_CRYPTO_BLOWFISH=m
1579CONFIG_CRYPTO_TWOFISH=m 1699CONFIG_CRYPTO_TWOFISH=m
1700CONFIG_CRYPTO_TWOFISH_COMMON=m
1580CONFIG_CRYPTO_SERPENT=m 1701CONFIG_CRYPTO_SERPENT=m
1581CONFIG_CRYPTO_AES=m 1702CONFIG_CRYPTO_AES=m
1582CONFIG_CRYPTO_CAST5=m 1703CONFIG_CRYPTO_CAST5=m
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig
index b5005506c2f8..5fc87448704c 100644
--- a/arch/powerpc/configs/iseries_defconfig
+++ b/arch/powerpc/configs/iseries_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19-rc1 3# Linux kernel version: 2.6.20-rc5
4# Fri Oct 6 13:25:04 2006 4# Mon Jan 22 22:16:44 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -10,6 +10,8 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
14CONFIG_ARCH_HAS_ILOG2_U64=y
13CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 17CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -23,6 +25,7 @@ CONFIG_PPC_OF=y
23# CONFIG_PPC_UDBG_16550 is not set 25# CONFIG_PPC_UDBG_16550 is not set
24# CONFIG_GENERIC_TBSYNC is not set 26# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y 27CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y
26# CONFIG_DEFAULT_UIMAGE is not set 29# CONFIG_DEFAULT_UIMAGE is not set
27 30
28# 31#
@@ -32,6 +35,9 @@ CONFIG_AUDIT_ARCH=y
32CONFIG_POWER3=y 35CONFIG_POWER3=y
33CONFIG_POWER4=y 36CONFIG_POWER4=y
34CONFIG_PPC_FPU=y 37CONFIG_PPC_FPU=y
38# CONFIG_PPC_DCR_NATIVE is not set
39# CONFIG_PPC_DCR_MMIO is not set
40# CONFIG_PPC_OF_PLATFORM_PCI is not set
35# CONFIG_ALTIVEC is not set 41# CONFIG_ALTIVEC is not set
36CONFIG_PPC_STD_MMU=y 42CONFIG_PPC_STD_MMU=y
37CONFIG_VIRT_CPU_ACCOUNTING=y 43CONFIG_VIRT_CPU_ACCOUNTING=y
@@ -63,12 +69,13 @@ CONFIG_AUDITSYSCALL=y
63CONFIG_IKCONFIG=y 69CONFIG_IKCONFIG=y
64CONFIG_IKCONFIG_PROC=y 70CONFIG_IKCONFIG_PROC=y
65# CONFIG_CPUSETS is not set 71# CONFIG_CPUSETS is not set
72CONFIG_SYSFS_DEPRECATED=y
66# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
67CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
68CONFIG_CC_OPTIMIZE_FOR_SIZE=y 75CONFIG_CC_OPTIMIZE_FOR_SIZE=y
69CONFIG_SYSCTL=y 76CONFIG_SYSCTL=y
70# CONFIG_EMBEDDED is not set 77# CONFIG_EMBEDDED is not set
71# CONFIG_SYSCTL_SYSCALL is not set 78CONFIG_SYSCTL_SYSCALL=y
72CONFIG_KALLSYMS=y 79CONFIG_KALLSYMS=y
73# CONFIG_KALLSYMS_ALL is not set 80# CONFIG_KALLSYMS_ALL is not set
74# CONFIG_KALLSYMS_EXTRA_PASS is not set 81# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -125,18 +132,22 @@ CONFIG_PPC_MULTIPLATFORM=y
125# CONFIG_APUS is not set 132# CONFIG_APUS is not set
126# CONFIG_PPC_PSERIES is not set 133# CONFIG_PPC_PSERIES is not set
127CONFIG_PPC_ISERIES=y 134CONFIG_PPC_ISERIES=y
135# CONFIG_PPC_MPC52xx is not set
128# CONFIG_PPC_PMAC is not set 136# CONFIG_PPC_PMAC is not set
129# CONFIG_PPC_MAPLE is not set 137# CONFIG_PPC_MAPLE is not set
130# CONFIG_PPC_PASEMI is not set 138# CONFIG_PPC_PASEMI is not set
131# CONFIG_PPC_CELL is not set 139# CONFIG_PPC_CELL is not set
132# CONFIG_PPC_CELL_NATIVE is not set 140# CONFIG_PPC_CELL_NATIVE is not set
133# CONFIG_PPC_IBM_CELL_BLADE is not set 141# CONFIG_PPC_IBM_CELL_BLADE is not set
142# CONFIG_PPC_PS3 is not set
134# CONFIG_U3_DART is not set 143# CONFIG_U3_DART is not set
135# CONFIG_PPC_RTAS is not set 144# CONFIG_PPC_RTAS is not set
136# CONFIG_MMIO_NVRAM is not set 145# CONFIG_MMIO_NVRAM is not set
137CONFIG_IBMVIO=y 146CONFIG_IBMVIO=y
138# CONFIG_PPC_MPC106 is not set 147# CONFIG_PPC_MPC106 is not set
139# CONFIG_PPC_970_NAP is not set 148# CONFIG_PPC_970_NAP is not set
149CONFIG_PPC_INDIRECT_IO=y
150CONFIG_GENERIC_IOMAP=y
140# CONFIG_CPU_FREQ is not set 151# CONFIG_CPU_FREQ is not set
141# CONFIG_WANT_EARLY_SERIAL is not set 152# CONFIG_WANT_EARLY_SERIAL is not set
142# CONFIG_MPIC is not set 153# CONFIG_MPIC is not set
@@ -146,6 +157,7 @@ CONFIG_IBMVIO=y
146# 157#
147# CONFIG_HZ_100 is not set 158# CONFIG_HZ_100 is not set
148CONFIG_HZ_250=y 159CONFIG_HZ_250=y
160# CONFIG_HZ_300 is not set
149# CONFIG_HZ_1000 is not set 161# CONFIG_HZ_1000 is not set
150CONFIG_HZ=250 162CONFIG_HZ=250
151CONFIG_PREEMPT_NONE=y 163CONFIG_PREEMPT_NONE=y
@@ -178,6 +190,7 @@ CONFIG_RESOURCES_64BIT=y
178# CONFIG_PPC_64K_PAGES is not set 190# CONFIG_PPC_64K_PAGES is not set
179# CONFIG_SCHED_SMT is not set 191# CONFIG_SCHED_SMT is not set
180CONFIG_PROC_DEVICETREE=y 192CONFIG_PROC_DEVICETREE=y
193# CONFIG_CMDLINE_BOOL is not set
181# CONFIG_PM is not set 194# CONFIG_PM is not set
182CONFIG_SECCOMP=y 195CONFIG_SECCOMP=y
183CONFIG_ISA_DMA_API=y 196CONFIG_ISA_DMA_API=y
@@ -192,7 +205,6 @@ CONFIG_GENERIC_ISA_DMA=y
192CONFIG_PCI=y 205CONFIG_PCI=y
193CONFIG_PCI_DOMAINS=y 206CONFIG_PCI_DOMAINS=y
194# CONFIG_PCIEPORTBUS is not set 207# CONFIG_PCIEPORTBUS is not set
195# CONFIG_PCI_MULTITHREAD_PROBE is not set
196# CONFIG_PCI_DEBUG is not set 208# CONFIG_PCI_DEBUG is not set
197 209
198# 210#
@@ -245,6 +257,7 @@ CONFIG_INET_TCP_DIAG=y
245# CONFIG_TCP_CONG_ADVANCED is not set 257# CONFIG_TCP_CONG_ADVANCED is not set
246CONFIG_TCP_CONG_CUBIC=y 258CONFIG_TCP_CONG_CUBIC=y
247CONFIG_DEFAULT_TCP_CONG="cubic" 259CONFIG_DEFAULT_TCP_CONG="cubic"
260# CONFIG_TCP_MD5SIG is not set
248 261
249# 262#
250# IP: Virtual Server Configuration 263# IP: Virtual Server Configuration
@@ -261,21 +274,37 @@ CONFIG_NETFILTER=y
261# Core Netfilter Configuration 274# Core Netfilter Configuration
262# 275#
263# CONFIG_NETFILTER_NETLINK is not set 276# CONFIG_NETFILTER_NETLINK is not set
277CONFIG_NF_CONNTRACK_ENABLED=m
278CONFIG_NF_CONNTRACK_SUPPORT=y
279# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
280CONFIG_NF_CONNTRACK=m
281# CONFIG_NF_CT_ACCT is not set
282CONFIG_NF_CONNTRACK_MARK=y
283CONFIG_NF_CONNTRACK_EVENTS=y
284# CONFIG_NF_CT_PROTO_SCTP is not set
285# CONFIG_NF_CONNTRACK_AMANDA is not set
286CONFIG_NF_CONNTRACK_FTP=m
287# CONFIG_NF_CONNTRACK_H323 is not set
288CONFIG_NF_CONNTRACK_IRC=m
289# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
290# CONFIG_NF_CONNTRACK_PPTP is not set
291# CONFIG_NF_CONNTRACK_SIP is not set
292CONFIG_NF_CONNTRACK_TFTP=m
264CONFIG_NETFILTER_XTABLES=m 293CONFIG_NETFILTER_XTABLES=m
265CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 294CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
266CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 295CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
267CONFIG_NETFILTER_XT_TARGET_DSCP=m 296CONFIG_NETFILTER_XT_TARGET_DSCP=m
268CONFIG_NETFILTER_XT_TARGET_MARK=m 297CONFIG_NETFILTER_XT_TARGET_MARK=m
269CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 298CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
270CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 299# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
300# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
271CONFIG_NETFILTER_XT_MATCH_COMMENT=m 301CONFIG_NETFILTER_XT_MATCH_COMMENT=m
272CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
273CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 302CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
274CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 303CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
275# CONFIG_NETFILTER_XT_MATCH_DCCP is not set 304# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
276CONFIG_NETFILTER_XT_MATCH_DSCP=m 305CONFIG_NETFILTER_XT_MATCH_DSCP=m
277# CONFIG_NETFILTER_XT_MATCH_ESP is not set 306# CONFIG_NETFILTER_XT_MATCH_ESP is not set
278CONFIG_NETFILTER_XT_MATCH_HELPER=m 307# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
279CONFIG_NETFILTER_XT_MATCH_LENGTH=m 308CONFIG_NETFILTER_XT_MATCH_LENGTH=m
280CONFIG_NETFILTER_XT_MATCH_LIMIT=m 309CONFIG_NETFILTER_XT_MATCH_LIMIT=m
281CONFIG_NETFILTER_XT_MATCH_MAC=m 310CONFIG_NETFILTER_XT_MATCH_MAC=m
@@ -286,27 +315,17 @@ CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
286# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 315# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
287CONFIG_NETFILTER_XT_MATCH_REALM=m 316CONFIG_NETFILTER_XT_MATCH_REALM=m
288CONFIG_NETFILTER_XT_MATCH_SCTP=m 317CONFIG_NETFILTER_XT_MATCH_SCTP=m
289CONFIG_NETFILTER_XT_MATCH_STATE=m 318# CONFIG_NETFILTER_XT_MATCH_STATE is not set
290# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set 319# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
291CONFIG_NETFILTER_XT_MATCH_STRING=m 320CONFIG_NETFILTER_XT_MATCH_STRING=m
292CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 321CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
322# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
293 323
294# 324#
295# IP: Netfilter Configuration 325# IP: Netfilter Configuration
296# 326#
297CONFIG_IP_NF_CONNTRACK=m 327CONFIG_NF_CONNTRACK_IPV4=m
298CONFIG_IP_NF_CT_ACCT=y 328CONFIG_NF_CONNTRACK_PROC_COMPAT=y
299CONFIG_IP_NF_CONNTRACK_MARK=y
300CONFIG_IP_NF_CONNTRACK_EVENTS=y
301CONFIG_IP_NF_CT_PROTO_SCTP=m
302CONFIG_IP_NF_FTP=m
303CONFIG_IP_NF_IRC=m
304# CONFIG_IP_NF_NETBIOS_NS is not set
305CONFIG_IP_NF_TFTP=m
306CONFIG_IP_NF_AMANDA=m
307# CONFIG_IP_NF_PPTP is not set
308# CONFIG_IP_NF_H323 is not set
309# CONFIG_IP_NF_SIP is not set
310CONFIG_IP_NF_QUEUE=m 329CONFIG_IP_NF_QUEUE=m
311CONFIG_IP_NF_IPTABLES=m 330CONFIG_IP_NF_IPTABLES=m
312CONFIG_IP_NF_MATCH_IPRANGE=m 331CONFIG_IP_NF_MATCH_IPRANGE=m
@@ -317,23 +336,25 @@ CONFIG_IP_NF_MATCH_ECN=m
317CONFIG_IP_NF_MATCH_TTL=m 336CONFIG_IP_NF_MATCH_TTL=m
318CONFIG_IP_NF_MATCH_OWNER=m 337CONFIG_IP_NF_MATCH_OWNER=m
319CONFIG_IP_NF_MATCH_ADDRTYPE=m 338CONFIG_IP_NF_MATCH_ADDRTYPE=m
320CONFIG_IP_NF_MATCH_HASHLIMIT=m
321CONFIG_IP_NF_FILTER=m 339CONFIG_IP_NF_FILTER=m
322CONFIG_IP_NF_TARGET_REJECT=m 340CONFIG_IP_NF_TARGET_REJECT=m
323CONFIG_IP_NF_TARGET_LOG=m 341CONFIG_IP_NF_TARGET_LOG=m
324CONFIG_IP_NF_TARGET_ULOG=m 342CONFIG_IP_NF_TARGET_ULOG=m
325CONFIG_IP_NF_TARGET_TCPMSS=m 343CONFIG_IP_NF_TARGET_TCPMSS=m
326CONFIG_IP_NF_NAT=m 344CONFIG_NF_NAT=m
327CONFIG_IP_NF_NAT_NEEDED=y 345CONFIG_NF_NAT_NEEDED=y
328CONFIG_IP_NF_TARGET_MASQUERADE=m 346CONFIG_IP_NF_TARGET_MASQUERADE=m
329CONFIG_IP_NF_TARGET_REDIRECT=m 347CONFIG_IP_NF_TARGET_REDIRECT=m
330CONFIG_IP_NF_TARGET_NETMAP=m 348CONFIG_IP_NF_TARGET_NETMAP=m
331CONFIG_IP_NF_TARGET_SAME=m 349CONFIG_IP_NF_TARGET_SAME=m
332CONFIG_IP_NF_NAT_SNMP_BASIC=m 350# CONFIG_NF_NAT_SNMP_BASIC is not set
333CONFIG_IP_NF_NAT_IRC=m 351CONFIG_NF_NAT_FTP=m
334CONFIG_IP_NF_NAT_FTP=m 352CONFIG_NF_NAT_IRC=m
335CONFIG_IP_NF_NAT_TFTP=m 353CONFIG_NF_NAT_TFTP=m
336CONFIG_IP_NF_NAT_AMANDA=m 354# CONFIG_NF_NAT_AMANDA is not set
355# CONFIG_NF_NAT_PPTP is not set
356# CONFIG_NF_NAT_H323 is not set
357# CONFIG_NF_NAT_SIP is not set
337CONFIG_IP_NF_MANGLE=m 358CONFIG_IP_NF_MANGLE=m
338CONFIG_IP_NF_TARGET_TOS=m 359CONFIG_IP_NF_TARGET_TOS=m
339CONFIG_IP_NF_TARGET_ECN=m 360CONFIG_IP_NF_TARGET_ECN=m
@@ -440,6 +461,12 @@ CONFIG_BLK_DEV_INITRD=y
440# CONFIG_ATA_OVER_ETH is not set 461# CONFIG_ATA_OVER_ETH is not set
441 462
442# 463#
464# Misc devices
465#
466# CONFIG_SGI_IOC4 is not set
467# CONFIG_TIFM_CORE is not set
468
469#
443# ATA/ATAPI/MFM/RLL support 470# ATA/ATAPI/MFM/RLL support
444# 471#
445# CONFIG_IDE is not set 472# CONFIG_IDE is not set
@@ -449,6 +476,7 @@ CONFIG_BLK_DEV_INITRD=y
449# 476#
450# CONFIG_RAID_ATTRS is not set 477# CONFIG_RAID_ATTRS is not set
451CONFIG_SCSI=y 478CONFIG_SCSI=y
479# CONFIG_SCSI_TGT is not set
452CONFIG_SCSI_NETLINK=y 480CONFIG_SCSI_NETLINK=y
453CONFIG_SCSI_PROC_FS=y 481CONFIG_SCSI_PROC_FS=y
454 482
@@ -469,6 +497,7 @@ CONFIG_CHR_DEV_SG=y
469CONFIG_SCSI_MULTI_LUN=y 497CONFIG_SCSI_MULTI_LUN=y
470CONFIG_SCSI_CONSTANTS=y 498CONFIG_SCSI_CONSTANTS=y
471# CONFIG_SCSI_LOGGING is not set 499# CONFIG_SCSI_LOGGING is not set
500# CONFIG_SCSI_SCAN_ASYNC is not set
472 501
473# 502#
474# SCSI Transports 503# SCSI Transports
@@ -515,6 +544,7 @@ CONFIG_SCSI_IBMVSCSI=m
515# CONFIG_SCSI_DC395x is not set 544# CONFIG_SCSI_DC395x is not set
516# CONFIG_SCSI_DC390T is not set 545# CONFIG_SCSI_DC390T is not set
517# CONFIG_SCSI_DEBUG is not set 546# CONFIG_SCSI_DEBUG is not set
547# CONFIG_SCSI_SRP is not set
518 548
519# 549#
520# Serial ATA (prod) and Parallel ATA (experimental) drivers 550# Serial ATA (prod) and Parallel ATA (experimental) drivers
@@ -562,6 +592,7 @@ CONFIG_DM_ZERO=m
562# 592#
563# Macintosh device drivers 593# Macintosh device drivers
564# 594#
595# CONFIG_MAC_EMUMOUSEBTN is not set
565# CONFIG_WINDFARM is not set 596# CONFIG_WINDFARM is not set
566 597
567# 598#
@@ -647,6 +678,7 @@ CONFIG_E1000=m
647# CONFIG_IXGB is not set 678# CONFIG_IXGB is not set
648# CONFIG_S2IO is not set 679# CONFIG_S2IO is not set
649# CONFIG_MYRI10GE is not set 680# CONFIG_MYRI10GE is not set
681# CONFIG_NETXEN_NIC is not set
650 682
651# 683#
652# Token Ring devices 684# Token Ring devices
@@ -765,10 +797,6 @@ CONFIG_GEN_RTC=y
765# CONFIG_DTLK is not set 797# CONFIG_DTLK is not set
766# CONFIG_R3964 is not set 798# CONFIG_R3964 is not set
767# CONFIG_APPLICOM is not set 799# CONFIG_APPLICOM is not set
768
769#
770# Ftape, the floppy tape device driver
771#
772# CONFIG_AGP is not set 800# CONFIG_AGP is not set
773# CONFIG_DRM is not set 801# CONFIG_DRM is not set
774CONFIG_RAW_DRIVER=y 802CONFIG_RAW_DRIVER=y
@@ -779,7 +807,6 @@ CONFIG_MAX_RAW_DEVS=256
779# TPM devices 807# TPM devices
780# 808#
781# CONFIG_TCG_TPM is not set 809# CONFIG_TCG_TPM is not set
782# CONFIG_TELCLOCK is not set
783 810
784# 811#
785# I2C support 812# I2C support
@@ -795,6 +822,7 @@ CONFIG_MAX_RAW_DEVS=256
795# 822#
796# Dallas's 1-wire bus 823# Dallas's 1-wire bus
797# 824#
825# CONFIG_W1 is not set
798 826
799# 827#
800# Hardware Monitoring support 828# Hardware Monitoring support
@@ -803,11 +831,6 @@ CONFIG_MAX_RAW_DEVS=256
803# CONFIG_HWMON_VID is not set 831# CONFIG_HWMON_VID is not set
804 832
805# 833#
806# Misc devices
807#
808# CONFIG_TIFM_CORE is not set
809
810#
811# Multimedia devices 834# Multimedia devices
812# 835#
813# CONFIG_VIDEO_DEV is not set 836# CONFIG_VIDEO_DEV is not set
@@ -822,6 +845,7 @@ CONFIG_MAX_RAW_DEVS=256
822# 845#
823CONFIG_FIRMWARE_EDID=y 846CONFIG_FIRMWARE_EDID=y
824# CONFIG_FB is not set 847# CONFIG_FB is not set
848# CONFIG_FB_IBM_GXT4500 is not set
825# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 849# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
826 850
827# 851#
@@ -830,6 +854,11 @@ CONFIG_FIRMWARE_EDID=y
830# CONFIG_SOUND is not set 854# CONFIG_SOUND is not set
831 855
832# 856#
857# HID Devices
858#
859# CONFIG_HID is not set
860
861#
833# USB support 862# USB support
834# 863#
835CONFIG_USB_ARCH_HAS_HCD=y 864CONFIG_USB_ARCH_HAS_HCD=y
@@ -892,6 +921,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
892# 921#
893 922
894# 923#
924# Virtualization
925#
926
927#
895# File systems 928# File systems
896# 929#
897CONFIG_EXT2_FS=y 930CONFIG_EXT2_FS=y
@@ -904,6 +937,7 @@ CONFIG_EXT3_FS=y
904CONFIG_EXT3_FS_XATTR=y 937CONFIG_EXT3_FS_XATTR=y
905CONFIG_EXT3_FS_POSIX_ACL=y 938CONFIG_EXT3_FS_POSIX_ACL=y
906CONFIG_EXT3_FS_SECURITY=y 939CONFIG_EXT3_FS_SECURITY=y
940# CONFIG_EXT4DEV_FS is not set
907CONFIG_JBD=y 941CONFIG_JBD=y
908# CONFIG_JBD_DEBUG is not set 942# CONFIG_JBD_DEBUG is not set
909CONFIG_FS_MBCACHE=y 943CONFIG_FS_MBCACHE=y
@@ -937,6 +971,7 @@ CONFIG_DNOTIFY=y
937CONFIG_AUTOFS_FS=m 971CONFIG_AUTOFS_FS=m
938# CONFIG_AUTOFS4_FS is not set 972# CONFIG_AUTOFS4_FS is not set
939# CONFIG_FUSE_FS is not set 973# CONFIG_FUSE_FS is not set
974CONFIG_GENERIC_ACL=y
940 975
941# 976#
942# CD-ROM/DVD Filesystems 977# CD-ROM/DVD Filesystems
@@ -1024,7 +1059,6 @@ CONFIG_CIFS_POSIX=y
1024# CONFIG_CODA_FS is not set 1059# CONFIG_CODA_FS is not set
1025# CONFIG_AFS_FS is not set 1060# CONFIG_AFS_FS is not set
1026# CONFIG_9P_FS is not set 1061# CONFIG_9P_FS is not set
1027CONFIG_GENERIC_ACL=y
1028 1062
1029# 1063#
1030# Partition Types 1064# Partition Types
@@ -1080,6 +1114,8 @@ CONFIG_NLS_ISO8859_1=y
1080# Distributed Lock Manager 1114# Distributed Lock Manager
1081# 1115#
1082CONFIG_DLM=m 1116CONFIG_DLM=m
1117CONFIG_DLM_TCP=y
1118# CONFIG_DLM_SCTP is not set
1083# CONFIG_DLM_DEBUG is not set 1119# CONFIG_DLM_DEBUG is not set
1084 1120
1085# 1121#
@@ -1094,6 +1130,7 @@ CONFIG_VIOPATH=y
1094# 1130#
1095# Library routines 1131# Library routines
1096# 1132#
1133CONFIG_BITREVERSE=y
1097CONFIG_CRC_CCITT=m 1134CONFIG_CRC_CCITT=m
1098# CONFIG_CRC16 is not set 1135# CONFIG_CRC16 is not set
1099CONFIG_CRC32=y 1136CONFIG_CRC32=y
@@ -1105,6 +1142,7 @@ CONFIG_TEXTSEARCH_KMP=m
1105CONFIG_TEXTSEARCH_BM=m 1142CONFIG_TEXTSEARCH_BM=m
1106CONFIG_TEXTSEARCH_FSM=m 1143CONFIG_TEXTSEARCH_FSM=m
1107CONFIG_PLIST=y 1144CONFIG_PLIST=y
1145CONFIG_IOMAP_COPY=y
1108 1146
1109# 1147#
1110# Instrumentation Support 1148# Instrumentation Support
@@ -1119,6 +1157,8 @@ CONFIG_PLIST=y
1119CONFIG_ENABLE_MUST_CHECK=y 1157CONFIG_ENABLE_MUST_CHECK=y
1120CONFIG_MAGIC_SYSRQ=y 1158CONFIG_MAGIC_SYSRQ=y
1121# CONFIG_UNUSED_SYMBOLS is not set 1159# CONFIG_UNUSED_SYMBOLS is not set
1160CONFIG_DEBUG_FS=y
1161# CONFIG_HEADERS_CHECK is not set
1122CONFIG_DEBUG_KERNEL=y 1162CONFIG_DEBUG_KERNEL=y
1123CONFIG_LOG_BUF_SHIFT=17 1163CONFIG_LOG_BUF_SHIFT=17
1124CONFIG_DETECT_SOFTLOCKUP=y 1164CONFIG_DETECT_SOFTLOCKUP=y
@@ -1132,8 +1172,8 @@ CONFIG_DETECT_SOFTLOCKUP=y
1132# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1172# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1133# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1173# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1134# CONFIG_DEBUG_KOBJECT is not set 1174# CONFIG_DEBUG_KOBJECT is not set
1175CONFIG_DEBUG_BUGVERBOSE=y
1135# CONFIG_DEBUG_INFO is not set 1176# CONFIG_DEBUG_INFO is not set
1136CONFIG_DEBUG_FS=y
1137# CONFIG_DEBUG_VM is not set 1177# CONFIG_DEBUG_VM is not set
1138# CONFIG_DEBUG_LIST is not set 1178# CONFIG_DEBUG_LIST is not set
1139# CONFIG_FORCED_INLINING is not set 1179# CONFIG_FORCED_INLINING is not set
@@ -1142,6 +1182,7 @@ CONFIG_DEBUG_STACKOVERFLOW=y
1142CONFIG_DEBUG_STACK_USAGE=y 1182CONFIG_DEBUG_STACK_USAGE=y
1143# CONFIG_DEBUGGER is not set 1183# CONFIG_DEBUGGER is not set
1144CONFIG_IRQSTACKS=y 1184CONFIG_IRQSTACKS=y
1185# CONFIG_BOOTX_TEXT is not set
1145# CONFIG_PPC_EARLY_DEBUG is not set 1186# CONFIG_PPC_EARLY_DEBUG is not set
1146 1187
1147# 1188#
@@ -1155,10 +1196,11 @@ CONFIG_IRQSTACKS=y
1155# 1196#
1156CONFIG_CRYPTO=y 1197CONFIG_CRYPTO=y
1157CONFIG_CRYPTO_ALGAPI=y 1198CONFIG_CRYPTO_ALGAPI=y
1158CONFIG_CRYPTO_BLKCIPHER=m 1199CONFIG_CRYPTO_BLKCIPHER=y
1159CONFIG_CRYPTO_HASH=y 1200CONFIG_CRYPTO_HASH=y
1160CONFIG_CRYPTO_MANAGER=m 1201CONFIG_CRYPTO_MANAGER=y
1161CONFIG_CRYPTO_HMAC=y 1202CONFIG_CRYPTO_HMAC=y
1203# CONFIG_CRYPTO_XCBC is not set
1162CONFIG_CRYPTO_NULL=m 1204CONFIG_CRYPTO_NULL=m
1163CONFIG_CRYPTO_MD4=m 1205CONFIG_CRYPTO_MD4=m
1164CONFIG_CRYPTO_MD5=y 1206CONFIG_CRYPTO_MD5=y
@@ -1167,8 +1209,10 @@ CONFIG_CRYPTO_SHA256=m
1167CONFIG_CRYPTO_SHA512=m 1209CONFIG_CRYPTO_SHA512=m
1168CONFIG_CRYPTO_WP512=m 1210CONFIG_CRYPTO_WP512=m
1169CONFIG_CRYPTO_TGR192=m 1211CONFIG_CRYPTO_TGR192=m
1212# CONFIG_CRYPTO_GF128MUL is not set
1170CONFIG_CRYPTO_ECB=m 1213CONFIG_CRYPTO_ECB=m
1171CONFIG_CRYPTO_CBC=m 1214CONFIG_CRYPTO_CBC=y
1215# CONFIG_CRYPTO_LRW is not set
1172CONFIG_CRYPTO_DES=y 1216CONFIG_CRYPTO_DES=y
1173CONFIG_CRYPTO_BLOWFISH=m 1217CONFIG_CRYPTO_BLOWFISH=m
1174CONFIG_CRYPTO_TWOFISH=m 1218CONFIG_CRYPTO_TWOFISH=m
diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/configs/linkstation_defconfig
index 23fd210eb56a..405c1c908213 100644
--- a/arch/powerpc/configs/linkstation_defconfig
+++ b/arch/powerpc/configs/linkstation_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.19-rc4 3# Linux kernel version: 2.6.20-rc5
4# Wed Nov 15 20:36:30 2006 4# Mon Jan 22 22:17:58 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,13 +23,13 @@ CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
24CONFIG_AUDIT_ARCH=y 25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
25# CONFIG_DEFAULT_UIMAGE is not set 27# CONFIG_DEFAULT_UIMAGE is not set
26 28
27# 29#
28# Processor support 30# Processor support
29# 31#
30CONFIG_CLASSIC32=y 32CONFIG_CLASSIC32=y
31# CONFIG_PPC_52xx is not set
32# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
33# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
34# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -69,12 +70,13 @@ CONFIG_POSIX_MQUEUE=y
69# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
70CONFIG_IKCONFIG=y 71CONFIG_IKCONFIG=y
71CONFIG_IKCONFIG_PROC=y 72CONFIG_IKCONFIG_PROC=y
73CONFIG_SYSFS_DEPRECATED=y
72# CONFIG_RELAY is not set 74# CONFIG_RELAY is not set
73CONFIG_INITRAMFS_SOURCE="" 75CONFIG_INITRAMFS_SOURCE=""
74# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 76# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
75CONFIG_SYSCTL=y 77CONFIG_SYSCTL=y
76# CONFIG_EMBEDDED is not set 78# CONFIG_EMBEDDED is not set
77# CONFIG_SYSCTL_SYSCALL is not set 79CONFIG_SYSCTL_SYSCALL=y
78CONFIG_KALLSYMS=y 80CONFIG_KALLSYMS=y
79# CONFIG_KALLSYMS_ALL is not set 81# CONFIG_KALLSYMS_ALL is not set
80# CONFIG_KALLSYMS_EXTRA_PASS is not set 82# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -130,6 +132,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
130# CONFIG_PPC_MULTIPLATFORM is not set 132# CONFIG_PPC_MULTIPLATFORM is not set
131CONFIG_EMBEDDED6xx=y 133CONFIG_EMBEDDED6xx=y
132# CONFIG_APUS is not set 134# CONFIG_APUS is not set
135# CONFIG_PPC_MPC52xx is not set
133# CONFIG_PPC_CELL is not set 136# CONFIG_PPC_CELL is not set
134# CONFIG_PPC_CELL_NATIVE is not set 137# CONFIG_PPC_CELL_NATIVE is not set
135# CONFIG_PPC_RTAS is not set 138# CONFIG_PPC_RTAS is not set
@@ -166,7 +169,6 @@ CONFIG_LINKSTATION=y
166# CONFIG_TQM8260 is not set 169# CONFIG_TQM8260 is not set
167# CONFIG_ADS8272 is not set 170# CONFIG_ADS8272 is not set
168# CONFIG_PQ2FADS is not set 171# CONFIG_PQ2FADS is not set
169# CONFIG_LITE5200 is not set
170# CONFIG_EV64360 is not set 172# CONFIG_EV64360 is not set
171CONFIG_PPC_GEN550=y 173CONFIG_PPC_GEN550=y
172CONFIG_MPC10X_BRIDGE=y 174CONFIG_MPC10X_BRIDGE=y
@@ -181,6 +183,7 @@ CONFIG_MPIC=y
181# CONFIG_HIGHMEM is not set 183# CONFIG_HIGHMEM is not set
182CONFIG_HZ_100=y 184CONFIG_HZ_100=y
183# CONFIG_HZ_250 is not set 185# CONFIG_HZ_250 is not set
186# CONFIG_HZ_300 is not set
184# CONFIG_HZ_1000 is not set 187# CONFIG_HZ_1000 is not set
185CONFIG_HZ=100 188CONFIG_HZ=100
186CONFIG_PREEMPT_NONE=y 189CONFIG_PREEMPT_NONE=y
@@ -217,7 +220,6 @@ CONFIG_FSL_SOC=y
217CONFIG_PCI=y 220CONFIG_PCI=y
218CONFIG_PCI_DOMAINS=y 221CONFIG_PCI_DOMAINS=y
219# CONFIG_PCIEPORTBUS is not set 222# CONFIG_PCIEPORTBUS is not set
220# CONFIG_PCI_MULTITHREAD_PROBE is not set
221# CONFIG_PCI_DEBUG is not set 223# CONFIG_PCI_DEBUG is not set
222 224
223# 225#
@@ -286,6 +288,7 @@ CONFIG_INET_TCP_DIAG=y
286# CONFIG_TCP_CONG_ADVANCED is not set 288# CONFIG_TCP_CONG_ADVANCED is not set
287CONFIG_TCP_CONG_CUBIC=y 289CONFIG_TCP_CONG_CUBIC=y
288CONFIG_DEFAULT_TCP_CONG="cubic" 290CONFIG_DEFAULT_TCP_CONG="cubic"
291# CONFIG_TCP_MD5SIG is not set
289 292
290# 293#
291# IP: Virtual Server Configuration 294# IP: Virtual Server Configuration
@@ -302,18 +305,35 @@ CONFIG_NETFILTER=y
302# Core Netfilter Configuration 305# Core Netfilter Configuration
303# 306#
304# CONFIG_NETFILTER_NETLINK is not set 307# CONFIG_NETFILTER_NETLINK is not set
308CONFIG_NF_CONNTRACK_ENABLED=m
309CONFIG_NF_CONNTRACK_SUPPORT=y
310# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
311CONFIG_NF_CONNTRACK=m
312# CONFIG_NF_CT_ACCT is not set
313# CONFIG_NF_CONNTRACK_MARK is not set
314# CONFIG_NF_CONNTRACK_EVENTS is not set
315# CONFIG_NF_CT_PROTO_SCTP is not set
316# CONFIG_NF_CONNTRACK_AMANDA is not set
317CONFIG_NF_CONNTRACK_FTP=m
318# CONFIG_NF_CONNTRACK_H323 is not set
319CONFIG_NF_CONNTRACK_IRC=m
320# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
321# CONFIG_NF_CONNTRACK_PPTP is not set
322# CONFIG_NF_CONNTRACK_SIP is not set
323CONFIG_NF_CONNTRACK_TFTP=m
305CONFIG_NETFILTER_XTABLES=m 324CONFIG_NETFILTER_XTABLES=m
306CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 325CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
307# CONFIG_NETFILTER_XT_TARGET_DSCP is not set 326# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
308CONFIG_NETFILTER_XT_TARGET_MARK=m 327CONFIG_NETFILTER_XT_TARGET_MARK=m
309# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set 328# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
329CONFIG_NETFILTER_XT_TARGET_NFLOG=m
310# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set 330# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
311# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set 331# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
312CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 332CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
313# CONFIG_NETFILTER_XT_MATCH_DCCP is not set 333# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
314# CONFIG_NETFILTER_XT_MATCH_DSCP is not set 334# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
315CONFIG_NETFILTER_XT_MATCH_ESP=m 335CONFIG_NETFILTER_XT_MATCH_ESP=m
316# CONFIG_NETFILTER_XT_MATCH_HELPER is not set 336CONFIG_NETFILTER_XT_MATCH_HELPER=m
317CONFIG_NETFILTER_XT_MATCH_LENGTH=m 337CONFIG_NETFILTER_XT_MATCH_LENGTH=m
318CONFIG_NETFILTER_XT_MATCH_LIMIT=m 338CONFIG_NETFILTER_XT_MATCH_LIMIT=m
319CONFIG_NETFILTER_XT_MATCH_MAC=m 339CONFIG_NETFILTER_XT_MATCH_MAC=m
@@ -324,27 +344,17 @@ CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
324# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 344# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
325# CONFIG_NETFILTER_XT_MATCH_REALM is not set 345# CONFIG_NETFILTER_XT_MATCH_REALM is not set
326# CONFIG_NETFILTER_XT_MATCH_SCTP is not set 346# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
327CONFIG_NETFILTER_XT_MATCH_STATE=m 347# CONFIG_NETFILTER_XT_MATCH_STATE is not set
328# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set 348# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
329# CONFIG_NETFILTER_XT_MATCH_STRING is not set 349# CONFIG_NETFILTER_XT_MATCH_STRING is not set
330# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set 350# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
351# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
331 352
332# 353#
333# IP: Netfilter Configuration 354# IP: Netfilter Configuration
334# 355#
335CONFIG_IP_NF_CONNTRACK=m 356CONFIG_NF_CONNTRACK_IPV4=m
336# CONFIG_IP_NF_CT_ACCT is not set 357CONFIG_NF_CONNTRACK_PROC_COMPAT=y
337# CONFIG_IP_NF_CONNTRACK_MARK is not set
338# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
339# CONFIG_IP_NF_CT_PROTO_SCTP is not set
340CONFIG_IP_NF_FTP=m
341CONFIG_IP_NF_IRC=m
342# CONFIG_IP_NF_NETBIOS_NS is not set
343CONFIG_IP_NF_TFTP=m
344# CONFIG_IP_NF_AMANDA is not set
345# CONFIG_IP_NF_PPTP is not set
346# CONFIG_IP_NF_H323 is not set
347# CONFIG_IP_NF_SIP is not set
348# CONFIG_IP_NF_QUEUE is not set 358# CONFIG_IP_NF_QUEUE is not set
349CONFIG_IP_NF_IPTABLES=m 359CONFIG_IP_NF_IPTABLES=m
350CONFIG_IP_NF_MATCH_IPRANGE=m 360CONFIG_IP_NF_MATCH_IPRANGE=m
@@ -355,22 +365,25 @@ CONFIG_IP_NF_MATCH_IPRANGE=m
355# CONFIG_IP_NF_MATCH_TTL is not set 365# CONFIG_IP_NF_MATCH_TTL is not set
356# CONFIG_IP_NF_MATCH_OWNER is not set 366# CONFIG_IP_NF_MATCH_OWNER is not set
357# CONFIG_IP_NF_MATCH_ADDRTYPE is not set 367# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
358# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
359CONFIG_IP_NF_FILTER=m 368CONFIG_IP_NF_FILTER=m
360CONFIG_IP_NF_TARGET_REJECT=m 369CONFIG_IP_NF_TARGET_REJECT=m
361# CONFIG_IP_NF_TARGET_LOG is not set 370# CONFIG_IP_NF_TARGET_LOG is not set
362# CONFIG_IP_NF_TARGET_ULOG is not set 371# CONFIG_IP_NF_TARGET_ULOG is not set
363# CONFIG_IP_NF_TARGET_TCPMSS is not set 372# CONFIG_IP_NF_TARGET_TCPMSS is not set
364CONFIG_IP_NF_NAT=m 373CONFIG_NF_NAT=m
365CONFIG_IP_NF_NAT_NEEDED=y 374CONFIG_NF_NAT_NEEDED=y
366CONFIG_IP_NF_TARGET_MASQUERADE=m 375CONFIG_IP_NF_TARGET_MASQUERADE=m
367CONFIG_IP_NF_TARGET_REDIRECT=m 376CONFIG_IP_NF_TARGET_REDIRECT=m
368CONFIG_IP_NF_TARGET_NETMAP=m 377CONFIG_IP_NF_TARGET_NETMAP=m
369CONFIG_IP_NF_TARGET_SAME=m 378CONFIG_IP_NF_TARGET_SAME=m
370# CONFIG_IP_NF_NAT_SNMP_BASIC is not set 379# CONFIG_NF_NAT_SNMP_BASIC is not set
371CONFIG_IP_NF_NAT_IRC=m 380CONFIG_NF_NAT_FTP=m
372CONFIG_IP_NF_NAT_FTP=m 381CONFIG_NF_NAT_IRC=m
373CONFIG_IP_NF_NAT_TFTP=m 382CONFIG_NF_NAT_TFTP=m
383# CONFIG_NF_NAT_AMANDA is not set
384# CONFIG_NF_NAT_PPTP is not set
385# CONFIG_NF_NAT_H323 is not set
386# CONFIG_NF_NAT_SIP is not set
374CONFIG_IP_NF_MANGLE=m 387CONFIG_IP_NF_MANGLE=m
375CONFIG_IP_NF_TARGET_TOS=m 388CONFIG_IP_NF_TARGET_TOS=m
376CONFIG_IP_NF_TARGET_ECN=m 389CONFIG_IP_NF_TARGET_ECN=m
@@ -580,6 +593,7 @@ CONFIG_BLK_DEV_INITRD=y
580# 593#
581# CONFIG_RAID_ATTRS is not set 594# CONFIG_RAID_ATTRS is not set
582CONFIG_SCSI=y 595CONFIG_SCSI=y
596# CONFIG_SCSI_TGT is not set
583# CONFIG_SCSI_NETLINK is not set 597# CONFIG_SCSI_NETLINK is not set
584CONFIG_SCSI_PROC_FS=y 598CONFIG_SCSI_PROC_FS=y
585 599
@@ -599,6 +613,7 @@ CONFIG_CHR_DEV_SG=y
599CONFIG_SCSI_MULTI_LUN=y 613CONFIG_SCSI_MULTI_LUN=y
600# CONFIG_SCSI_CONSTANTS is not set 614# CONFIG_SCSI_CONSTANTS is not set
601# CONFIG_SCSI_LOGGING is not set 615# CONFIG_SCSI_LOGGING is not set
616# CONFIG_SCSI_SCAN_ASYNC is not set
602 617
603# 618#
604# SCSI Transports 619# SCSI Transports
@@ -646,6 +661,7 @@ CONFIG_SCSI_MULTI_LUN=y
646# CONFIG_SCSI_DC390T is not set 661# CONFIG_SCSI_DC390T is not set
647# CONFIG_SCSI_NSP32 is not set 662# CONFIG_SCSI_NSP32 is not set
648# CONFIG_SCSI_DEBUG is not set 663# CONFIG_SCSI_DEBUG is not set
664# CONFIG_SCSI_SRP is not set
649 665
650# 666#
651# Serial ATA (prod) and Parallel ATA (experimental) drivers 667# Serial ATA (prod) and Parallel ATA (experimental) drivers
@@ -683,6 +699,7 @@ CONFIG_ATA=y
683# CONFIG_PATA_IT821X is not set 699# CONFIG_PATA_IT821X is not set
684# CONFIG_PATA_JMICRON is not set 700# CONFIG_PATA_JMICRON is not set
685# CONFIG_PATA_TRIFLEX is not set 701# CONFIG_PATA_TRIFLEX is not set
702# CONFIG_PATA_MARVELL is not set
686# CONFIG_PATA_MPIIX is not set 703# CONFIG_PATA_MPIIX is not set
687# CONFIG_PATA_OLDPIIX is not set 704# CONFIG_PATA_OLDPIIX is not set
688# CONFIG_PATA_NETCELL is not set 705# CONFIG_PATA_NETCELL is not set
@@ -726,6 +743,7 @@ CONFIG_PATA_SIL680=y
726# 743#
727# Macintosh device drivers 744# Macintosh device drivers
728# 745#
746# CONFIG_MAC_EMUMOUSEBTN is not set
729# CONFIG_WINDFARM is not set 747# CONFIG_WINDFARM is not set
730 748
731# 749#
@@ -777,6 +795,7 @@ CONFIG_R8169=y
777# CONFIG_IXGB is not set 795# CONFIG_IXGB is not set
778# CONFIG_S2IO is not set 796# CONFIG_S2IO is not set
779# CONFIG_MYRI10GE is not set 797# CONFIG_MYRI10GE is not set
798# CONFIG_NETXEN_NIC is not set
780 799
781# 800#
782# Token Ring devices 801# Token Ring devices
@@ -899,6 +918,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
899# 918#
900# Non-8250 serial port support 919# Non-8250 serial port support
901# 920#
921# CONFIG_SERIAL_UARTLITE is not set
902CONFIG_SERIAL_CORE=y 922CONFIG_SERIAL_CORE=y
903CONFIG_SERIAL_CORE_CONSOLE=y 923CONFIG_SERIAL_CORE_CONSOLE=y
904# CONFIG_SERIAL_JSM is not set 924# CONFIG_SERIAL_JSM is not set
@@ -921,10 +941,6 @@ CONFIG_HW_RANDOM=y
921# CONFIG_DTLK is not set 941# CONFIG_DTLK is not set
922# CONFIG_R3964 is not set 942# CONFIG_R3964 is not set
923# CONFIG_APPLICOM is not set 943# CONFIG_APPLICOM is not set
924
925#
926# Ftape, the floppy tape device driver
927#
928# CONFIG_AGP is not set 944# CONFIG_AGP is not set
929# CONFIG_DRM is not set 945# CONFIG_DRM is not set
930# CONFIG_RAW_DRIVER is not set 946# CONFIG_RAW_DRIVER is not set
@@ -1032,6 +1048,7 @@ CONFIG_HWMON=y
1032# CONFIG_SENSORS_LM92 is not set 1048# CONFIG_SENSORS_LM92 is not set
1033# CONFIG_SENSORS_MAX1619 is not set 1049# CONFIG_SENSORS_MAX1619 is not set
1034# CONFIG_SENSORS_PC87360 is not set 1050# CONFIG_SENSORS_PC87360 is not set
1051# CONFIG_SENSORS_PC87427 is not set
1035# CONFIG_SENSORS_SIS5595 is not set 1052# CONFIG_SENSORS_SIS5595 is not set
1036# CONFIG_SENSORS_SMSC47M1 is not set 1053# CONFIG_SENSORS_SMSC47M1 is not set
1037# CONFIG_SENSORS_SMSC47M192 is not set 1054# CONFIG_SENSORS_SMSC47M192 is not set
@@ -1042,6 +1059,7 @@ CONFIG_HWMON=y
1042# CONFIG_SENSORS_W83781D is not set 1059# CONFIG_SENSORS_W83781D is not set
1043# CONFIG_SENSORS_W83791D is not set 1060# CONFIG_SENSORS_W83791D is not set
1044# CONFIG_SENSORS_W83792D is not set 1061# CONFIG_SENSORS_W83792D is not set
1062# CONFIG_SENSORS_W83793 is not set
1045# CONFIG_SENSORS_W83L785TS is not set 1063# CONFIG_SENSORS_W83L785TS is not set
1046# CONFIG_SENSORS_W83627HF is not set 1064# CONFIG_SENSORS_W83627HF is not set
1047# CONFIG_SENSORS_W83627EHF is not set 1065# CONFIG_SENSORS_W83627EHF is not set
@@ -1063,6 +1081,7 @@ CONFIG_HWMON=y
1063# 1081#
1064CONFIG_FIRMWARE_EDID=y 1082CONFIG_FIRMWARE_EDID=y
1065# CONFIG_FB is not set 1083# CONFIG_FB is not set
1084# CONFIG_FB_IBM_GXT4500 is not set
1066 1085
1067# 1086#
1068# Console display driver support 1087# Console display driver support
@@ -1077,6 +1096,11 @@ CONFIG_DUMMY_CONSOLE=y
1077# CONFIG_SOUND is not set 1096# CONFIG_SOUND is not set
1078 1097
1079# 1098#
1099# HID Devices
1100#
1101CONFIG_HID=y
1102
1103#
1080# USB support 1104# USB support
1081# 1105#
1082CONFIG_USB_ARCH_HAS_HCD=y 1106CONFIG_USB_ARCH_HAS_HCD=y
@@ -1091,6 +1115,7 @@ CONFIG_USB=y
1091CONFIG_USB_DEVICEFS=y 1115CONFIG_USB_DEVICEFS=y
1092# CONFIG_USB_BANDWIDTH is not set 1116# CONFIG_USB_BANDWIDTH is not set
1093# CONFIG_USB_DYNAMIC_MINORS is not set 1117# CONFIG_USB_DYNAMIC_MINORS is not set
1118# CONFIG_USB_MULTITHREAD_PROBE is not set
1094# CONFIG_USB_OTG is not set 1119# CONFIG_USB_OTG is not set
1095 1120
1096# 1121#
@@ -1170,6 +1195,7 @@ CONFIG_USB_STORAGE=m
1170# CONFIG_USB_KAWETH is not set 1195# CONFIG_USB_KAWETH is not set
1171# CONFIG_USB_PEGASUS is not set 1196# CONFIG_USB_PEGASUS is not set
1172# CONFIG_USB_RTL8150 is not set 1197# CONFIG_USB_RTL8150 is not set
1198# CONFIG_USB_USBNET_MII is not set
1173# CONFIG_USB_USBNET is not set 1199# CONFIG_USB_USBNET is not set
1174CONFIG_USB_MON=y 1200CONFIG_USB_MON=y
1175 1201
@@ -1218,6 +1244,7 @@ CONFIG_USB_SERIAL_FTDI_SIO=y
1218# CONFIG_USB_SERIAL_XIRCOM is not set 1244# CONFIG_USB_SERIAL_XIRCOM is not set
1219# CONFIG_USB_SERIAL_OPTION is not set 1245# CONFIG_USB_SERIAL_OPTION is not set
1220# CONFIG_USB_SERIAL_OMNINET is not set 1246# CONFIG_USB_SERIAL_OMNINET is not set
1247# CONFIG_USB_SERIAL_DEBUG is not set
1221 1248
1222# 1249#
1223# USB Miscellaneous drivers 1250# USB Miscellaneous drivers
@@ -1324,6 +1351,10 @@ CONFIG_RTC_DRV_RS5C372=y
1324# 1351#
1325 1352
1326# 1353#
1354# Virtualization
1355#
1356
1357#
1327# File systems 1358# File systems
1328# 1359#
1329CONFIG_EXT2_FS=y 1360CONFIG_EXT2_FS=y
@@ -1398,7 +1429,6 @@ CONFIG_RAMFS=y
1398# CONFIG_BEFS_FS is not set 1429# CONFIG_BEFS_FS is not set
1399# CONFIG_BFS_FS is not set 1430# CONFIG_BFS_FS is not set
1400# CONFIG_EFS_FS is not set 1431# CONFIG_EFS_FS is not set
1401# CONFIG_JFFS_FS is not set
1402# CONFIG_JFFS2_FS is not set 1432# CONFIG_JFFS2_FS is not set
1403# CONFIG_CRAMFS is not set 1433# CONFIG_CRAMFS is not set
1404# CONFIG_VXFS_FS is not set 1434# CONFIG_VXFS_FS is not set
@@ -1488,8 +1518,14 @@ CONFIG_NLS_ISO8859_1=m
1488CONFIG_NLS_UTF8=m 1518CONFIG_NLS_UTF8=m
1489 1519
1490# 1520#
1521# Distributed Lock Manager
1522#
1523# CONFIG_DLM is not set
1524
1525#
1491# Library routines 1526# Library routines
1492# 1527#
1528CONFIG_BITREVERSE=y
1493# CONFIG_CRC_CCITT is not set 1529# CONFIG_CRC_CCITT is not set
1494# CONFIG_CRC16 is not set 1530# CONFIG_CRC16 is not set
1495CONFIG_CRC32=y 1531CONFIG_CRC32=y
@@ -1497,6 +1533,7 @@ CONFIG_LIBCRC32C=m
1497CONFIG_ZLIB_INFLATE=m 1533CONFIG_ZLIB_INFLATE=m
1498CONFIG_ZLIB_DEFLATE=m 1534CONFIG_ZLIB_DEFLATE=m
1499CONFIG_PLIST=y 1535CONFIG_PLIST=y
1536CONFIG_IOMAP_COPY=y
1500 1537
1501# 1538#
1502# Instrumentation Support 1539# Instrumentation Support
@@ -1511,6 +1548,8 @@ CONFIG_OPROFILE=m
1511CONFIG_ENABLE_MUST_CHECK=y 1548CONFIG_ENABLE_MUST_CHECK=y
1512CONFIG_MAGIC_SYSRQ=y 1549CONFIG_MAGIC_SYSRQ=y
1513# CONFIG_UNUSED_SYMBOLS is not set 1550# CONFIG_UNUSED_SYMBOLS is not set
1551# CONFIG_DEBUG_FS is not set
1552# CONFIG_HEADERS_CHECK is not set
1514CONFIG_DEBUG_KERNEL=y 1553CONFIG_DEBUG_KERNEL=y
1515CONFIG_LOG_BUF_SHIFT=14 1554CONFIG_LOG_BUF_SHIFT=14
1516CONFIG_DETECT_SOFTLOCKUP=y 1555CONFIG_DETECT_SOFTLOCKUP=y
@@ -1524,12 +1563,11 @@ CONFIG_DETECT_SOFTLOCKUP=y
1524# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1563# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1525# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1564# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1526# CONFIG_DEBUG_KOBJECT is not set 1565# CONFIG_DEBUG_KOBJECT is not set
1566CONFIG_DEBUG_BUGVERBOSE=y
1527# CONFIG_DEBUG_INFO is not set 1567# CONFIG_DEBUG_INFO is not set
1528# CONFIG_DEBUG_FS is not set
1529# CONFIG_DEBUG_VM is not set 1568# CONFIG_DEBUG_VM is not set
1530# CONFIG_DEBUG_LIST is not set 1569# CONFIG_DEBUG_LIST is not set
1531CONFIG_FORCED_INLINING=y 1570CONFIG_FORCED_INLINING=y
1532# CONFIG_HEADERS_CHECK is not set
1533# CONFIG_RCU_TORTURE_TEST is not set 1571# CONFIG_RCU_TORTURE_TEST is not set
1534# CONFIG_DEBUGGER is not set 1572# CONFIG_DEBUGGER is not set
1535# CONFIG_BDI_SWITCH is not set 1573# CONFIG_BDI_SWITCH is not set
@@ -1551,6 +1589,7 @@ CONFIG_CRYPTO_ALGAPI=y
1551CONFIG_CRYPTO_BLKCIPHER=y 1589CONFIG_CRYPTO_BLKCIPHER=y
1552CONFIG_CRYPTO_MANAGER=y 1590CONFIG_CRYPTO_MANAGER=y
1553# CONFIG_CRYPTO_HMAC is not set 1591# CONFIG_CRYPTO_HMAC is not set
1592# CONFIG_CRYPTO_XCBC is not set
1554# CONFIG_CRYPTO_NULL is not set 1593# CONFIG_CRYPTO_NULL is not set
1555CONFIG_CRYPTO_MD4=m 1594CONFIG_CRYPTO_MD4=m
1556CONFIG_CRYPTO_MD5=y 1595CONFIG_CRYPTO_MD5=y
@@ -1559,8 +1598,10 @@ CONFIG_CRYPTO_SHA1=m
1559# CONFIG_CRYPTO_SHA512 is not set 1598# CONFIG_CRYPTO_SHA512 is not set
1560# CONFIG_CRYPTO_WP512 is not set 1599# CONFIG_CRYPTO_WP512 is not set
1561# CONFIG_CRYPTO_TGR192 is not set 1600# CONFIG_CRYPTO_TGR192 is not set
1601# CONFIG_CRYPTO_GF128MUL is not set
1562CONFIG_CRYPTO_ECB=m 1602CONFIG_CRYPTO_ECB=m
1563CONFIG_CRYPTO_CBC=y 1603CONFIG_CRYPTO_CBC=y
1604# CONFIG_CRYPTO_LRW is not set
1564CONFIG_CRYPTO_DES=y 1605CONFIG_CRYPTO_DES=y
1565CONFIG_CRYPTO_BLOWFISH=m 1606CONFIG_CRYPTO_BLOWFISH=m
1566CONFIG_CRYPTO_TWOFISH=m 1607CONFIG_CRYPTO_TWOFISH=m
diff --git a/arch/powerpc/configs/lite5200_defconfig b/arch/powerpc/configs/lite5200_defconfig
index ee7655776d45..8cbd87ded6b4 100644
--- a/arch/powerpc/configs/lite5200_defconfig
+++ b/arch/powerpc/configs/lite5200_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.19-rc6 3# Linux kernel version: 2.6.20-rc5
4# Mon Nov 27 11:08:20 2006 4# Mon Jan 22 22:18:18 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,13 +23,13 @@ CONFIG_PPC_OF=y
22# CONFIG_PPC_UDBG_16550 is not set 23# CONFIG_PPC_UDBG_16550 is not set
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
24CONFIG_AUDIT_ARCH=y 25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
25# CONFIG_DEFAULT_UIMAGE is not set 27# CONFIG_DEFAULT_UIMAGE is not set
26 28
27# 29#
28# Processor support 30# Processor support
29# 31#
30CONFIG_CLASSIC32=y 32CONFIG_CLASSIC32=y
31# CONFIG_PPC_52xx is not set
32# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
33# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
34# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -68,6 +69,7 @@ CONFIG_SYSVIPC=y
68# CONFIG_UTS_NS is not set 69# CONFIG_UTS_NS is not set
69# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
70# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
71# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
72CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
73# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -151,6 +153,7 @@ CONFIG_PPC_LITE5200=y
151# CONFIG_HIGHMEM is not set 153# CONFIG_HIGHMEM is not set
152# CONFIG_HZ_100 is not set 154# CONFIG_HZ_100 is not set
153CONFIG_HZ_250=y 155CONFIG_HZ_250=y
156# CONFIG_HZ_300 is not set
154# CONFIG_HZ_1000 is not set 157# CONFIG_HZ_1000 is not set
155CONFIG_HZ=250 158CONFIG_HZ=250
156CONFIG_PREEMPT_NONE=y 159CONFIG_PREEMPT_NONE=y
@@ -259,6 +262,7 @@ CONFIG_INET_TCP_DIAG=y
259# CONFIG_TCP_CONG_ADVANCED is not set 262# CONFIG_TCP_CONG_ADVANCED is not set
260CONFIG_TCP_CONG_CUBIC=y 263CONFIG_TCP_CONG_CUBIC=y
261CONFIG_DEFAULT_TCP_CONG="cubic" 264CONFIG_DEFAULT_TCP_CONG="cubic"
265# CONFIG_TCP_MD5SIG is not set
262# CONFIG_IPV6 is not set 266# CONFIG_IPV6 is not set
263# CONFIG_INET6_XFRM_TUNNEL is not set 267# CONFIG_INET6_XFRM_TUNNEL is not set
264# CONFIG_INET6_TUNNEL is not set 268# CONFIG_INET6_TUNNEL is not set
@@ -374,6 +378,7 @@ CONFIG_BLK_DEV_INITRD=y
374# 378#
375# CONFIG_RAID_ATTRS is not set 379# CONFIG_RAID_ATTRS is not set
376CONFIG_SCSI=y 380CONFIG_SCSI=y
381# CONFIG_SCSI_TGT is not set
377# CONFIG_SCSI_NETLINK is not set 382# CONFIG_SCSI_NETLINK is not set
378# CONFIG_SCSI_PROC_FS is not set 383# CONFIG_SCSI_PROC_FS is not set
379 384
@@ -393,6 +398,7 @@ CONFIG_SCSI=y
393# CONFIG_SCSI_MULTI_LUN is not set 398# CONFIG_SCSI_MULTI_LUN is not set
394# CONFIG_SCSI_CONSTANTS is not set 399# CONFIG_SCSI_CONSTANTS is not set
395# CONFIG_SCSI_LOGGING is not set 400# CONFIG_SCSI_LOGGING is not set
401# CONFIG_SCSI_SCAN_ASYNC is not set
396 402
397# 403#
398# SCSI Transports 404# SCSI Transports
@@ -440,6 +446,7 @@ CONFIG_SCSI=y
440# CONFIG_SCSI_DC390T is not set 446# CONFIG_SCSI_DC390T is not set
441# CONFIG_SCSI_NSP32 is not set 447# CONFIG_SCSI_NSP32 is not set
442# CONFIG_SCSI_DEBUG is not set 448# CONFIG_SCSI_DEBUG is not set
449# CONFIG_SCSI_SRP is not set
443 450
444# 451#
445# Serial ATA (prod) and Parallel ATA (experimental) drivers 452# Serial ATA (prod) and Parallel ATA (experimental) drivers
@@ -477,7 +484,7 @@ CONFIG_ATA=y
477# CONFIG_PATA_IT821X is not set 484# CONFIG_PATA_IT821X is not set
478# CONFIG_PATA_JMICRON is not set 485# CONFIG_PATA_JMICRON is not set
479# CONFIG_PATA_TRIFLEX is not set 486# CONFIG_PATA_TRIFLEX is not set
480CONFIG_PATA_MPC52xx=y 487# CONFIG_PATA_MARVELL is not set
481# CONFIG_PATA_MPIIX is not set 488# CONFIG_PATA_MPIIX is not set
482# CONFIG_PATA_OLDPIIX is not set 489# CONFIG_PATA_OLDPIIX is not set
483# CONFIG_PATA_NETCELL is not set 490# CONFIG_PATA_NETCELL is not set
@@ -494,6 +501,7 @@ CONFIG_PATA_MPC52xx=y
494# CONFIG_PATA_SIS is not set 501# CONFIG_PATA_SIS is not set
495# CONFIG_PATA_VIA is not set 502# CONFIG_PATA_VIA is not set
496# CONFIG_PATA_WINBOND is not set 503# CONFIG_PATA_WINBOND is not set
504# CONFIG_PATA_PLATFORM is not set
497 505
498# 506#
499# Multi-device support (RAID and LVM) 507# Multi-device support (RAID and LVM)
@@ -521,6 +529,7 @@ CONFIG_PATA_MPC52xx=y
521# 529#
522# Macintosh device drivers 530# Macintosh device drivers
523# 531#
532# CONFIG_MAC_EMUMOUSEBTN is not set
524# CONFIG_WINDFARM is not set 533# CONFIG_WINDFARM is not set
525 534
526# 535#
@@ -572,6 +581,7 @@ CONFIG_NETDEVICES=y
572# CONFIG_IXGB is not set 581# CONFIG_IXGB is not set
573# CONFIG_S2IO is not set 582# CONFIG_S2IO is not set
574# CONFIG_MYRI10GE is not set 583# CONFIG_MYRI10GE is not set
584# CONFIG_NETXEN_NIC is not set
575 585
576# 586#
577# Token Ring devices 587# Token Ring devices
@@ -632,6 +642,7 @@ CONFIG_NETDEVICES=y
632# 642#
633# Non-8250 serial port support 643# Non-8250 serial port support
634# 644#
645# CONFIG_SERIAL_UARTLITE is not set
635CONFIG_SERIAL_CORE=y 646CONFIG_SERIAL_CORE=y
636CONFIG_SERIAL_CORE_CONSOLE=y 647CONFIG_SERIAL_CORE_CONSOLE=y
637CONFIG_SERIAL_MPC52xx=y 648CONFIG_SERIAL_MPC52xx=y
@@ -657,10 +668,6 @@ CONFIG_LEGACY_PTY_COUNT=256
657# CONFIG_DTLK is not set 668# CONFIG_DTLK is not set
658# CONFIG_R3964 is not set 669# CONFIG_R3964 is not set
659# CONFIG_APPLICOM is not set 670# CONFIG_APPLICOM is not set
660
661#
662# Ftape, the floppy tape device driver
663#
664# CONFIG_AGP is not set 671# CONFIG_AGP is not set
665# CONFIG_DRM is not set 672# CONFIG_DRM is not set
666# CONFIG_RAW_DRIVER is not set 673# CONFIG_RAW_DRIVER is not set
@@ -707,6 +714,7 @@ CONFIG_LEGACY_PTY_COUNT=256
707# 714#
708# CONFIG_FIRMWARE_EDID is not set 715# CONFIG_FIRMWARE_EDID is not set
709# CONFIG_FB is not set 716# CONFIG_FB is not set
717# CONFIG_FB_IBM_GXT4500 is not set
710# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 718# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
711 719
712# 720#
@@ -777,6 +785,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
777# 785#
778 786
779# 787#
788# Virtualization
789#
790
791#
780# File systems 792# File systems
781# 793#
782CONFIG_EXT2_FS=y 794CONFIG_EXT2_FS=y
@@ -873,6 +885,11 @@ CONFIG_MSDOS_PARTITION=y
873# CONFIG_NLS is not set 885# CONFIG_NLS is not set
874 886
875# 887#
888# Distributed Lock Manager
889#
890# CONFIG_DLM is not set
891
892#
876# Library routines 893# Library routines
877# 894#
878# CONFIG_CRC_CCITT is not set 895# CONFIG_CRC_CCITT is not set
@@ -880,6 +897,7 @@ CONFIG_MSDOS_PARTITION=y
880# CONFIG_CRC32 is not set 897# CONFIG_CRC32 is not set
881# CONFIG_LIBCRC32C is not set 898# CONFIG_LIBCRC32C is not set
882CONFIG_PLIST=y 899CONFIG_PLIST=y
900CONFIG_IOMAP_COPY=y
883 901
884# 902#
885# Instrumentation Support 903# Instrumentation Support
@@ -893,6 +911,8 @@ CONFIG_PRINTK_TIME=y
893CONFIG_ENABLE_MUST_CHECK=y 911CONFIG_ENABLE_MUST_CHECK=y
894# CONFIG_MAGIC_SYSRQ is not set 912# CONFIG_MAGIC_SYSRQ is not set
895# CONFIG_UNUSED_SYMBOLS is not set 913# CONFIG_UNUSED_SYMBOLS is not set
914# CONFIG_DEBUG_FS is not set
915# CONFIG_HEADERS_CHECK is not set
896CONFIG_DEBUG_KERNEL=y 916CONFIG_DEBUG_KERNEL=y
897CONFIG_LOG_BUF_SHIFT=14 917CONFIG_LOG_BUF_SHIFT=14
898CONFIG_DETECT_SOFTLOCKUP=y 918CONFIG_DETECT_SOFTLOCKUP=y
@@ -906,12 +926,11 @@ CONFIG_DETECT_SOFTLOCKUP=y
906# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 926# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
907# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 927# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
908# CONFIG_DEBUG_KOBJECT is not set 928# CONFIG_DEBUG_KOBJECT is not set
929# CONFIG_DEBUG_BUGVERBOSE is not set
909CONFIG_DEBUG_INFO=y 930CONFIG_DEBUG_INFO=y
910# CONFIG_DEBUG_FS is not set
911# CONFIG_DEBUG_VM is not set 931# CONFIG_DEBUG_VM is not set
912# CONFIG_DEBUG_LIST is not set 932# CONFIG_DEBUG_LIST is not set
913CONFIG_FORCED_INLINING=y 933CONFIG_FORCED_INLINING=y
914# CONFIG_HEADERS_CHECK is not set
915# CONFIG_RCU_TORTURE_TEST is not set 934# CONFIG_RCU_TORTURE_TEST is not set
916# CONFIG_DEBUGGER is not set 935# CONFIG_DEBUGGER is not set
917# CONFIG_BDI_SWITCH is not set 936# CONFIG_BDI_SWITCH is not set
diff --git a/arch/powerpc/configs/maple_defconfig b/arch/powerpc/configs/maple_defconfig
index ae96a5b2f00d..de97f2f0ae96 100644
--- a/arch/powerpc/configs/maple_defconfig
+++ b/arch/powerpc/configs/maple_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.20-rc5
4# Mon Oct 9 11:59:34 2006 4# Mon Jan 22 22:19:02 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -10,6 +10,8 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
14CONFIG_ARCH_HAS_ILOG2_U64=y
13CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 17CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -23,6 +25,7 @@ CONFIG_PPC_OF=y
23CONFIG_PPC_UDBG_16550=y 25CONFIG_PPC_UDBG_16550=y
24CONFIG_GENERIC_TBSYNC=y 26CONFIG_GENERIC_TBSYNC=y
25CONFIG_AUDIT_ARCH=y 27CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y
26# CONFIG_DEFAULT_UIMAGE is not set 29# CONFIG_DEFAULT_UIMAGE is not set
27 30
28# 31#
@@ -31,6 +34,9 @@ CONFIG_AUDIT_ARCH=y
31CONFIG_POWER4_ONLY=y 34CONFIG_POWER4_ONLY=y
32CONFIG_POWER4=y 35CONFIG_POWER4=y
33CONFIG_PPC_FPU=y 36CONFIG_PPC_FPU=y
37# CONFIG_PPC_DCR_NATIVE is not set
38# CONFIG_PPC_DCR_MMIO is not set
39# CONFIG_PPC_OF_PLATFORM_PCI is not set
34# CONFIG_ALTIVEC is not set 40# CONFIG_ALTIVEC is not set
35CONFIG_PPC_STD_MMU=y 41CONFIG_PPC_STD_MMU=y
36CONFIG_VIRT_CPU_ACCOUNTING=y 42CONFIG_VIRT_CPU_ACCOUNTING=y
@@ -61,12 +67,13 @@ CONFIG_POSIX_MQUEUE=y
61CONFIG_IKCONFIG=y 67CONFIG_IKCONFIG=y
62CONFIG_IKCONFIG_PROC=y 68CONFIG_IKCONFIG_PROC=y
63# CONFIG_CPUSETS is not set 69# CONFIG_CPUSETS is not set
70CONFIG_SYSFS_DEPRECATED=y
64# CONFIG_RELAY is not set 71# CONFIG_RELAY is not set
65CONFIG_INITRAMFS_SOURCE="" 72CONFIG_INITRAMFS_SOURCE=""
66CONFIG_CC_OPTIMIZE_FOR_SIZE=y 73CONFIG_CC_OPTIMIZE_FOR_SIZE=y
67CONFIG_SYSCTL=y 74CONFIG_SYSCTL=y
68# CONFIG_EMBEDDED is not set 75# CONFIG_EMBEDDED is not set
69# CONFIG_SYSCTL_SYSCALL is not set 76CONFIG_SYSCTL_SYSCALL=y
70CONFIG_KALLSYMS=y 77CONFIG_KALLSYMS=y
71CONFIG_KALLSYMS_ALL=y 78CONFIG_KALLSYMS_ALL=y
72# CONFIG_KALLSYMS_EXTRA_PASS is not set 79# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -123,18 +130,27 @@ CONFIG_PPC_MULTIPLATFORM=y
123# CONFIG_APUS is not set 130# CONFIG_APUS is not set
124# CONFIG_PPC_PSERIES is not set 131# CONFIG_PPC_PSERIES is not set
125# CONFIG_PPC_ISERIES is not set 132# CONFIG_PPC_ISERIES is not set
133# CONFIG_PPC_MPC52xx is not set
126# CONFIG_PPC_PMAC is not set 134# CONFIG_PPC_PMAC is not set
127CONFIG_PPC_MAPLE=y 135CONFIG_PPC_MAPLE=y
128# CONFIG_PPC_PASEMI is not set 136# CONFIG_PPC_PASEMI is not set
129# CONFIG_PPC_CELL is not set 137# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set 138# CONFIG_PPC_CELL_NATIVE is not set
131# CONFIG_PPC_IBM_CELL_BLADE is not set 139# CONFIG_PPC_IBM_CELL_BLADE is not set
140# CONFIG_PPC_PS3 is not set
141CONFIG_PPC_NATIVE=y
142CONFIG_UDBG_RTAS_CONSOLE=y
132CONFIG_U3_DART=y 143CONFIG_U3_DART=y
133# CONFIG_PPC_RTAS is not set 144CONFIG_PPC_RTAS=y
145# CONFIG_RTAS_ERROR_LOGGING is not set
146CONFIG_RTAS_PROC=y
147# CONFIG_RTAS_FLASH is not set
134# CONFIG_MMIO_NVRAM is not set 148# CONFIG_MMIO_NVRAM is not set
135CONFIG_MPIC_BROKEN_U3=y 149CONFIG_MPIC_BROKEN_U3=y
136# CONFIG_PPC_MPC106 is not set 150# CONFIG_PPC_MPC106 is not set
137CONFIG_PPC_970_NAP=y 151CONFIG_PPC_970_NAP=y
152# CONFIG_PPC_INDIRECT_IO is not set
153# CONFIG_GENERIC_IOMAP is not set
138# CONFIG_CPU_FREQ is not set 154# CONFIG_CPU_FREQ is not set
139# CONFIG_WANT_EARLY_SERIAL is not set 155# CONFIG_WANT_EARLY_SERIAL is not set
140CONFIG_MPIC=y 156CONFIG_MPIC=y
@@ -144,6 +160,7 @@ CONFIG_MPIC=y
144# 160#
145# CONFIG_HZ_100 is not set 161# CONFIG_HZ_100 is not set
146CONFIG_HZ_250=y 162CONFIG_HZ_250=y
163# CONFIG_HZ_300 is not set
147# CONFIG_HZ_1000 is not set 164# CONFIG_HZ_1000 is not set
148CONFIG_HZ=250 165CONFIG_HZ=250
149CONFIG_PREEMPT_NONE=y 166CONFIG_PREEMPT_NONE=y
@@ -190,7 +207,6 @@ CONFIG_GENERIC_ISA_DMA=y
190CONFIG_PCI=y 207CONFIG_PCI=y
191CONFIG_PCI_DOMAINS=y 208CONFIG_PCI_DOMAINS=y
192# CONFIG_PCIEPORTBUS is not set 209# CONFIG_PCIEPORTBUS is not set
193# CONFIG_PCI_MULTITHREAD_PROBE is not set
194# CONFIG_PCI_DEBUG is not set 210# CONFIG_PCI_DEBUG is not set
195 211
196# 212#
@@ -246,6 +262,7 @@ CONFIG_INET_TCP_DIAG=y
246# CONFIG_TCP_CONG_ADVANCED is not set 262# CONFIG_TCP_CONG_ADVANCED is not set
247CONFIG_TCP_CONG_CUBIC=y 263CONFIG_TCP_CONG_CUBIC=y
248CONFIG_DEFAULT_TCP_CONG="cubic" 264CONFIG_DEFAULT_TCP_CONG="cubic"
265# CONFIG_TCP_MD5SIG is not set
249# CONFIG_IPV6 is not set 266# CONFIG_IPV6 is not set
250# CONFIG_INET6_XFRM_TUNNEL is not set 267# CONFIG_INET6_XFRM_TUNNEL is not set
251# CONFIG_INET6_TUNNEL is not set 268# CONFIG_INET6_TUNNEL is not set
@@ -346,6 +363,12 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
346# CONFIG_ATA_OVER_ETH is not set 363# CONFIG_ATA_OVER_ETH is not set
347 364
348# 365#
366# Misc devices
367#
368# CONFIG_SGI_IOC4 is not set
369# CONFIG_TIFM_CORE is not set
370
371#
349# ATA/ATAPI/MFM/RLL support 372# ATA/ATAPI/MFM/RLL support
350# 373#
351CONFIG_IDE=y 374CONFIG_IDE=y
@@ -371,7 +394,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
371# CONFIG_BLK_DEV_OFFBOARD is not set 394# CONFIG_BLK_DEV_OFFBOARD is not set
372CONFIG_BLK_DEV_GENERIC=y 395CONFIG_BLK_DEV_GENERIC=y
373# CONFIG_BLK_DEV_OPTI621 is not set 396# CONFIG_BLK_DEV_OPTI621 is not set
374# CONFIG_BLK_DEV_SL82C105 is not set
375CONFIG_BLK_DEV_IDEDMA_PCI=y 397CONFIG_BLK_DEV_IDEDMA_PCI=y
376# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 398# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
377CONFIG_IDEDMA_PCI_AUTO=y 399CONFIG_IDEDMA_PCI_AUTO=y
@@ -395,6 +417,7 @@ CONFIG_BLK_DEV_AMD74XX=y
395# CONFIG_BLK_DEV_PDC202XX_NEW is not set 417# CONFIG_BLK_DEV_PDC202XX_NEW is not set
396# CONFIG_BLK_DEV_SVWKS is not set 418# CONFIG_BLK_DEV_SVWKS is not set
397# CONFIG_BLK_DEV_SIIMAGE is not set 419# CONFIG_BLK_DEV_SIIMAGE is not set
420# CONFIG_BLK_DEV_SL82C105 is not set
398# CONFIG_BLK_DEV_SLC90E66 is not set 421# CONFIG_BLK_DEV_SLC90E66 is not set
399# CONFIG_BLK_DEV_TRM290 is not set 422# CONFIG_BLK_DEV_TRM290 is not set
400# CONFIG_BLK_DEV_VIA82CXXX is not set 423# CONFIG_BLK_DEV_VIA82CXXX is not set
@@ -439,6 +462,7 @@ CONFIG_IDEDMA_AUTO=y
439# 462#
440# Macintosh device drivers 463# Macintosh device drivers
441# 464#
465# CONFIG_MAC_EMUMOUSEBTN is not set
442# CONFIG_WINDFARM is not set 466# CONFIG_WINDFARM is not set
443 467
444# 468#
@@ -523,6 +547,7 @@ CONFIG_TIGON3=y
523# CONFIG_IXGB is not set 547# CONFIG_IXGB is not set
524# CONFIG_S2IO is not set 548# CONFIG_S2IO is not set
525# CONFIG_MYRI10GE is not set 549# CONFIG_MYRI10GE is not set
550# CONFIG_NETXEN_NIC is not set
526 551
527# 552#
528# Token Ring devices 553# Token Ring devices
@@ -618,6 +643,8 @@ CONFIG_SERIAL_CORE_CONSOLE=y
618CONFIG_UNIX98_PTYS=y 643CONFIG_UNIX98_PTYS=y
619CONFIG_LEGACY_PTYS=y 644CONFIG_LEGACY_PTYS=y
620CONFIG_LEGACY_PTY_COUNT=256 645CONFIG_LEGACY_PTY_COUNT=256
646CONFIG_HVC_DRIVER=y
647CONFIG_HVC_RTAS=y
621 648
622# 649#
623# IPMI 650# IPMI
@@ -634,10 +661,6 @@ CONFIG_GEN_RTC=y
634# CONFIG_DTLK is not set 661# CONFIG_DTLK is not set
635# CONFIG_R3964 is not set 662# CONFIG_R3964 is not set
636# CONFIG_APPLICOM is not set 663# CONFIG_APPLICOM is not set
637
638#
639# Ftape, the floppy tape device driver
640#
641# CONFIG_AGP is not set 664# CONFIG_AGP is not set
642# CONFIG_DRM is not set 665# CONFIG_DRM is not set
643# CONFIG_RAW_DRIVER is not set 666# CONFIG_RAW_DRIVER is not set
@@ -647,7 +670,6 @@ CONFIG_GEN_RTC=y
647# TPM devices 670# TPM devices
648# 671#
649# CONFIG_TCG_TPM is not set 672# CONFIG_TCG_TPM is not set
650# CONFIG_TELCLOCK is not set
651 673
652# 674#
653# I2C support 675# I2C support
@@ -711,6 +733,7 @@ CONFIG_I2C_AMD8111=y
711# 733#
712# Dallas's 1-wire bus 734# Dallas's 1-wire bus
713# 735#
736# CONFIG_W1 is not set
714 737
715# 738#
716# Hardware Monitoring support 739# Hardware Monitoring support
@@ -719,15 +742,9 @@ CONFIG_I2C_AMD8111=y
719# CONFIG_HWMON_VID is not set 742# CONFIG_HWMON_VID is not set
720 743
721# 744#
722# Misc devices
723#
724# CONFIG_TIFM_CORE is not set
725
726#
727# Multimedia devices 745# Multimedia devices
728# 746#
729# CONFIG_VIDEO_DEV is not set 747# CONFIG_VIDEO_DEV is not set
730CONFIG_VIDEO_V4L2=y
731 748
732# 749#
733# Digital Video Broadcasting Devices 750# Digital Video Broadcasting Devices
@@ -740,6 +757,7 @@ CONFIG_VIDEO_V4L2=y
740# 757#
741CONFIG_FIRMWARE_EDID=y 758CONFIG_FIRMWARE_EDID=y
742# CONFIG_FB is not set 759# CONFIG_FB is not set
760# CONFIG_FB_IBM_GXT4500 is not set
743 761
744# 762#
745# Console display driver support 763# Console display driver support
@@ -754,6 +772,11 @@ CONFIG_DUMMY_CONSOLE=y
754# CONFIG_SOUND is not set 772# CONFIG_SOUND is not set
755 773
756# 774#
775# HID Devices
776#
777CONFIG_HID=y
778
779#
757# USB support 780# USB support
758# 781#
759CONFIG_USB_ARCH_HAS_HCD=y 782CONFIG_USB_ARCH_HAS_HCD=y
@@ -768,6 +791,7 @@ CONFIG_USB=y
768CONFIG_USB_DEVICEFS=y 791CONFIG_USB_DEVICEFS=y
769# CONFIG_USB_BANDWIDTH is not set 792# CONFIG_USB_BANDWIDTH is not set
770# CONFIG_USB_DYNAMIC_MINORS is not set 793# CONFIG_USB_DYNAMIC_MINORS is not set
794# CONFIG_USB_MULTITHREAD_PROBE is not set
771# CONFIG_USB_OTG is not set 795# CONFIG_USB_OTG is not set
772 796
773# 797#
@@ -803,7 +827,6 @@ CONFIG_USB_UHCI_HCD=y
803# USB Input Devices 827# USB Input Devices
804# 828#
805CONFIG_USB_HID=y 829CONFIG_USB_HID=y
806CONFIG_USB_HIDINPUT=y
807# CONFIG_USB_HIDINPUT_POWERBOOK is not set 830# CONFIG_USB_HIDINPUT_POWERBOOK is not set
808# CONFIG_HID_FF is not set 831# CONFIG_HID_FF is not set
809# CONFIG_USB_HIDDEV is not set 832# CONFIG_USB_HIDDEV is not set
@@ -819,7 +842,6 @@ CONFIG_USB_HIDINPUT=y
819# CONFIG_USB_ATI_REMOTE2 is not set 842# CONFIG_USB_ATI_REMOTE2 is not set
820# CONFIG_USB_KEYSPAN_REMOTE is not set 843# CONFIG_USB_KEYSPAN_REMOTE is not set
821# CONFIG_USB_APPLETOUCH is not set 844# CONFIG_USB_APPLETOUCH is not set
822# CONFIG_USB_TRANCEVIBRATOR is not set
823 845
824# 846#
825# USB Imaging devices 847# USB Imaging devices
@@ -833,6 +855,7 @@ CONFIG_USB_HIDINPUT=y
833# CONFIG_USB_KAWETH is not set 855# CONFIG_USB_KAWETH is not set
834CONFIG_USB_PEGASUS=y 856CONFIG_USB_PEGASUS=y
835# CONFIG_USB_RTL8150 is not set 857# CONFIG_USB_RTL8150 is not set
858# CONFIG_USB_USBNET_MII is not set
836# CONFIG_USB_USBNET is not set 859# CONFIG_USB_USBNET is not set
837CONFIG_USB_MON=y 860CONFIG_USB_MON=y
838 861
@@ -881,6 +904,7 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
881# CONFIG_USB_SERIAL_KLSI is not set 904# CONFIG_USB_SERIAL_KLSI is not set
882# CONFIG_USB_SERIAL_KOBIL_SCT is not set 905# CONFIG_USB_SERIAL_KOBIL_SCT is not set
883# CONFIG_USB_SERIAL_MCT_U232 is not set 906# CONFIG_USB_SERIAL_MCT_U232 is not set
907# CONFIG_USB_SERIAL_MOS7720 is not set
884# CONFIG_USB_SERIAL_MOS7840 is not set 908# CONFIG_USB_SERIAL_MOS7840 is not set
885# CONFIG_USB_SERIAL_NAVMAN is not set 909# CONFIG_USB_SERIAL_NAVMAN is not set
886# CONFIG_USB_SERIAL_PL2303 is not set 910# CONFIG_USB_SERIAL_PL2303 is not set
@@ -892,6 +916,7 @@ CONFIG_USB_SERIAL_TI=m
892# CONFIG_USB_SERIAL_XIRCOM is not set 916# CONFIG_USB_SERIAL_XIRCOM is not set
893# CONFIG_USB_SERIAL_OPTION is not set 917# CONFIG_USB_SERIAL_OPTION is not set
894# CONFIG_USB_SERIAL_OMNINET is not set 918# CONFIG_USB_SERIAL_OMNINET is not set
919# CONFIG_USB_SERIAL_DEBUG is not set
895CONFIG_USB_EZUSB=y 920CONFIG_USB_EZUSB=y
896 921
897# 922#
@@ -913,6 +938,7 @@ CONFIG_USB_EZUSB=y
913# CONFIG_USB_APPLEDISPLAY is not set 938# CONFIG_USB_APPLEDISPLAY is not set
914# CONFIG_USB_SISUSBVGA is not set 939# CONFIG_USB_SISUSBVGA is not set
915# CONFIG_USB_LD is not set 940# CONFIG_USB_LD is not set
941# CONFIG_USB_TRANCEVIBRATOR is not set
916# CONFIG_USB_TEST is not set 942# CONFIG_USB_TEST is not set
917 943
918# 944#
@@ -970,6 +996,10 @@ CONFIG_USB_EZUSB=y
970# 996#
971 997
972# 998#
999# Virtualization
1000#
1001
1002#
973# File systems 1003# File systems
974# 1004#
975CONFIG_EXT2_FS=y 1005CONFIG_EXT2_FS=y
@@ -978,12 +1008,14 @@ CONFIG_EXT2_FS_XIP=y
978CONFIG_FS_XIP=y 1008CONFIG_FS_XIP=y
979CONFIG_EXT3_FS=y 1009CONFIG_EXT3_FS=y
980# CONFIG_EXT3_FS_XATTR is not set 1010# CONFIG_EXT3_FS_XATTR is not set
1011# CONFIG_EXT4DEV_FS is not set
981CONFIG_JBD=y 1012CONFIG_JBD=y
982# CONFIG_JBD_DEBUG is not set 1013# CONFIG_JBD_DEBUG is not set
983# CONFIG_REISERFS_FS is not set 1014# CONFIG_REISERFS_FS is not set
984# CONFIG_JFS_FS is not set 1015# CONFIG_JFS_FS is not set
985CONFIG_FS_POSIX_ACL=y 1016CONFIG_FS_POSIX_ACL=y
986# CONFIG_XFS_FS is not set 1017# CONFIG_XFS_FS is not set
1018# CONFIG_GFS2_FS is not set
987# CONFIG_OCFS2_FS is not set 1019# CONFIG_OCFS2_FS is not set
988# CONFIG_MINIX_FS is not set 1020# CONFIG_MINIX_FS is not set
989# CONFIG_ROMFS_FS is not set 1021# CONFIG_ROMFS_FS is not set
@@ -1133,14 +1165,21 @@ CONFIG_NLS_DEFAULT="utf-8"
1133CONFIG_NLS_UTF8=y 1165CONFIG_NLS_UTF8=y
1134 1166
1135# 1167#
1168# Distributed Lock Manager
1169#
1170# CONFIG_DLM is not set
1171
1172#
1136# Library routines 1173# Library routines
1137# 1174#
1175CONFIG_BITREVERSE=y
1138CONFIG_CRC_CCITT=y 1176CONFIG_CRC_CCITT=y
1139# CONFIG_CRC16 is not set 1177# CONFIG_CRC16 is not set
1140CONFIG_CRC32=y 1178CONFIG_CRC32=y
1141# CONFIG_LIBCRC32C is not set 1179# CONFIG_LIBCRC32C is not set
1142CONFIG_ZLIB_INFLATE=y 1180CONFIG_ZLIB_INFLATE=y
1143CONFIG_PLIST=y 1181CONFIG_PLIST=y
1182CONFIG_IOMAP_COPY=y
1144 1183
1145# 1184#
1146# Instrumentation Support 1185# Instrumentation Support
@@ -1155,6 +1194,8 @@ CONFIG_PLIST=y
1155CONFIG_ENABLE_MUST_CHECK=y 1194CONFIG_ENABLE_MUST_CHECK=y
1156CONFIG_MAGIC_SYSRQ=y 1195CONFIG_MAGIC_SYSRQ=y
1157# CONFIG_UNUSED_SYMBOLS is not set 1196# CONFIG_UNUSED_SYMBOLS is not set
1197CONFIG_DEBUG_FS=y
1198# CONFIG_HEADERS_CHECK is not set
1158CONFIG_DEBUG_KERNEL=y 1199CONFIG_DEBUG_KERNEL=y
1159CONFIG_LOG_BUF_SHIFT=17 1200CONFIG_LOG_BUF_SHIFT=17
1160CONFIG_DETECT_SOFTLOCKUP=y 1201CONFIG_DETECT_SOFTLOCKUP=y
@@ -1169,8 +1210,8 @@ CONFIG_DEBUG_SLAB=y
1169CONFIG_DEBUG_SPINLOCK_SLEEP=y 1210CONFIG_DEBUG_SPINLOCK_SLEEP=y
1170# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1211# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1171# CONFIG_DEBUG_KOBJECT is not set 1212# CONFIG_DEBUG_KOBJECT is not set
1213CONFIG_DEBUG_BUGVERBOSE=y
1172# CONFIG_DEBUG_INFO is not set 1214# CONFIG_DEBUG_INFO is not set
1173CONFIG_DEBUG_FS=y
1174# CONFIG_DEBUG_VM is not set 1215# CONFIG_DEBUG_VM is not set
1175# CONFIG_DEBUG_LIST is not set 1216# CONFIG_DEBUG_LIST is not set
1176# CONFIG_FORCED_INLINING is not set 1217# CONFIG_FORCED_INLINING is not set
@@ -1180,6 +1221,7 @@ CONFIG_DEBUG_STACK_USAGE=y
1180CONFIG_DEBUGGER=y 1221CONFIG_DEBUGGER=y
1181CONFIG_XMON=y 1222CONFIG_XMON=y
1182CONFIG_XMON_DEFAULT=y 1223CONFIG_XMON_DEFAULT=y
1224CONFIG_XMON_DISASSEMBLY=y
1183# CONFIG_IRQSTACKS is not set 1225# CONFIG_IRQSTACKS is not set
1184CONFIG_BOOTX_TEXT=y 1226CONFIG_BOOTX_TEXT=y
1185# CONFIG_PPC_EARLY_DEBUG is not set 1227# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1195,9 +1237,10 @@ CONFIG_BOOTX_TEXT=y
1195# 1237#
1196CONFIG_CRYPTO=y 1238CONFIG_CRYPTO=y
1197CONFIG_CRYPTO_ALGAPI=y 1239CONFIG_CRYPTO_ALGAPI=y
1198CONFIG_CRYPTO_BLKCIPHER=m 1240CONFIG_CRYPTO_BLKCIPHER=y
1199CONFIG_CRYPTO_MANAGER=m 1241CONFIG_CRYPTO_MANAGER=y
1200# CONFIG_CRYPTO_HMAC is not set 1242# CONFIG_CRYPTO_HMAC is not set
1243# CONFIG_CRYPTO_XCBC is not set
1201# CONFIG_CRYPTO_NULL is not set 1244# CONFIG_CRYPTO_NULL is not set
1202# CONFIG_CRYPTO_MD4 is not set 1245# CONFIG_CRYPTO_MD4 is not set
1203CONFIG_CRYPTO_MD5=y 1246CONFIG_CRYPTO_MD5=y
@@ -1206,8 +1249,10 @@ CONFIG_CRYPTO_MD5=y
1206# CONFIG_CRYPTO_SHA512 is not set 1249# CONFIG_CRYPTO_SHA512 is not set
1207# CONFIG_CRYPTO_WP512 is not set 1250# CONFIG_CRYPTO_WP512 is not set
1208# CONFIG_CRYPTO_TGR192 is not set 1251# CONFIG_CRYPTO_TGR192 is not set
1252# CONFIG_CRYPTO_GF128MUL is not set
1209CONFIG_CRYPTO_ECB=m 1253CONFIG_CRYPTO_ECB=m
1210CONFIG_CRYPTO_CBC=m 1254CONFIG_CRYPTO_CBC=y
1255# CONFIG_CRYPTO_LRW is not set
1211CONFIG_CRYPTO_DES=y 1256CONFIG_CRYPTO_DES=y
1212# CONFIG_CRYPTO_BLOWFISH is not set 1257# CONFIG_CRYPTO_BLOWFISH is not set
1213# CONFIG_CRYPTO_TWOFISH is not set 1258# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/configs/mpc7448_hpc2_defconfig b/arch/powerpc/configs/mpc7448_hpc2_defconfig
index d1811e754518..fdf09eabe6e7 100644
--- a/arch/powerpc/configs/mpc7448_hpc2_defconfig
+++ b/arch/powerpc/configs/mpc7448_hpc2_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:26:55 2006 4# Mon Jan 22 22:20:53 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29CONFIG_CLASSIC32=y 32CONFIG_CLASSIC32=y
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -38,6 +40,8 @@ CONFIG_CLASSIC32=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_6xx=y 41CONFIG_6xx=y
40CONFIG_PPC_FPU=y 42CONFIG_PPC_FPU=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41# CONFIG_ALTIVEC is not set 45# CONFIG_ALTIVEC is not set
42CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
43CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
@@ -58,16 +62,20 @@ CONFIG_LOCALVERSION=""
58CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
70CONFIG_EMBEDDED=y 77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
71CONFIG_KALLSYMS=y 79CONFIG_KALLSYMS=y
72# CONFIG_KALLSYMS_EXTRA_PASS is not set 80# CONFIG_KALLSYMS_EXTRA_PASS is not set
73CONFIG_HOTPLUG=y 81CONFIG_HOTPLUG=y
@@ -75,12 +83,12 @@ CONFIG_PRINTK=y
75CONFIG_BUG=y 83CONFIG_BUG=y
76CONFIG_ELF_CORE=y 84CONFIG_ELF_CORE=y
77CONFIG_BASE_FULL=y 85CONFIG_BASE_FULL=y
78CONFIG_RT_MUTEXES=y
79CONFIG_FUTEX=y 86CONFIG_FUTEX=y
80CONFIG_EPOLL=y 87CONFIG_EPOLL=y
81CONFIG_SHMEM=y 88CONFIG_SHMEM=y
82CONFIG_SLAB=y 89CONFIG_SLAB=y
83CONFIG_VM_EVENT_COUNTERS=y 90CONFIG_VM_EVENT_COUNTERS=y
91CONFIG_RT_MUTEXES=y
84# CONFIG_TINY_SHMEM is not set 92# CONFIG_TINY_SHMEM is not set
85CONFIG_BASE_SMALL=0 93CONFIG_BASE_SMALL=0
86# CONFIG_SLOB is not set 94# CONFIG_SLOB is not set
@@ -93,6 +101,7 @@ CONFIG_BASE_SMALL=0
93# 101#
94# Block layer 102# Block layer
95# 103#
104CONFIG_BLOCK=y
96CONFIG_LBD=y 105CONFIG_LBD=y
97# CONFIG_BLK_DEV_IO_TRACE is not set 106# CONFIG_BLK_DEV_IO_TRACE is not set
98# CONFIG_LSF is not set 107# CONFIG_LSF is not set
@@ -114,19 +123,19 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
114# Platform support 123# Platform support
115# 124#
116# CONFIG_PPC_MULTIPLATFORM is not set 125# CONFIG_PPC_MULTIPLATFORM is not set
117# CONFIG_PPC_ISERIES is not set
118CONFIG_EMBEDDED6xx=y 126CONFIG_EMBEDDED6xx=y
119# CONFIG_APUS is not set 127# CONFIG_APUS is not set
128# CONFIG_PPC_MPC52xx is not set
120# CONFIG_PPC_CELL is not set 129# CONFIG_PPC_CELL is not set
121# CONFIG_PPC_CELL_NATIVE is not set 130# CONFIG_PPC_CELL_NATIVE is not set
122# CONFIG_UDBG_RTAS_CONSOLE is not set
123# CONFIG_PPC_RTAS is not set 131# CONFIG_PPC_RTAS is not set
124# CONFIG_MMIO_NVRAM is not set 132# CONFIG_MMIO_NVRAM is not set
125# CONFIG_PPC_MPC106 is not set 133# CONFIG_PPC_MPC106 is not set
126# CONFIG_PPC_970_NAP is not set 134# CONFIG_PPC_970_NAP is not set
135# CONFIG_PPC_INDIRECT_IO is not set
136# CONFIG_GENERIC_IOMAP is not set
127# CONFIG_CPU_FREQ is not set 137# CONFIG_CPU_FREQ is not set
128# CONFIG_TAU is not set 138# CONFIG_TAU is not set
129# CONFIG_PPC_TODC is not set
130# CONFIG_KATANA is not set 139# CONFIG_KATANA is not set
131# CONFIG_WILLOW is not set 140# CONFIG_WILLOW is not set
132# CONFIG_CPCI690 is not set 141# CONFIG_CPCI690 is not set
@@ -141,6 +150,7 @@ CONFIG_EMBEDDED6xx=y
141# CONFIG_PRPMC750 is not set 150# CONFIG_PRPMC750 is not set
142# CONFIG_PRPMC800 is not set 151# CONFIG_PRPMC800 is not set
143# CONFIG_SANDPOINT is not set 152# CONFIG_SANDPOINT is not set
153# CONFIG_LINKSTATION is not set
144CONFIG_MPC7448HPC2=y 154CONFIG_MPC7448HPC2=y
145# CONFIG_RADSTONE_PPC7D is not set 155# CONFIG_RADSTONE_PPC7D is not set
146# CONFIG_PAL4 is not set 156# CONFIG_PAL4 is not set
@@ -152,7 +162,6 @@ CONFIG_MPC7448HPC2=y
152# CONFIG_TQM8260 is not set 162# CONFIG_TQM8260 is not set
153# CONFIG_ADS8272 is not set 163# CONFIG_ADS8272 is not set
154# CONFIG_PQ2FADS is not set 164# CONFIG_PQ2FADS is not set
155# CONFIG_LITE5200 is not set
156# CONFIG_EV64360 is not set 165# CONFIG_EV64360 is not set
157CONFIG_TSI108_BRIDGE=y 166CONFIG_TSI108_BRIDGE=y
158# CONFIG_WANT_EARLY_SERIAL is not set 167# CONFIG_WANT_EARLY_SERIAL is not set
@@ -164,6 +173,7 @@ CONFIG_MPIC=y
164# CONFIG_HIGHMEM is not set 173# CONFIG_HIGHMEM is not set
165# CONFIG_HZ_100 is not set 174# CONFIG_HZ_100 is not set
166CONFIG_HZ_250=y 175CONFIG_HZ_250=y
176# CONFIG_HZ_300 is not set
167# CONFIG_HZ_1000 is not set 177# CONFIG_HZ_1000 is not set
168CONFIG_HZ=250 178CONFIG_HZ=250
169CONFIG_PREEMPT_NONE=y 179CONFIG_PREEMPT_NONE=y
@@ -173,6 +183,7 @@ CONFIG_BINFMT_ELF=y
173CONFIG_BINFMT_MISC=y 183CONFIG_BINFMT_MISC=y
174CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 184CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
175CONFIG_ARCH_FLATMEM_ENABLE=y 185CONFIG_ARCH_FLATMEM_ENABLE=y
186CONFIG_ARCH_POPULATES_NODE_MAP=y
176CONFIG_SELECT_MEMORY_MODEL=y 187CONFIG_SELECT_MEMORY_MODEL=y
177CONFIG_FLATMEM_MANUAL=y 188CONFIG_FLATMEM_MANUAL=y
178# CONFIG_DISCONTIGMEM_MANUAL is not set 189# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -237,6 +248,7 @@ CONFIG_PACKET=y
237CONFIG_UNIX=y 248CONFIG_UNIX=y
238CONFIG_XFRM=y 249CONFIG_XFRM=y
239CONFIG_XFRM_USER=y 250CONFIG_XFRM_USER=y
251# CONFIG_XFRM_SUB_POLICY is not set
240# CONFIG_NET_KEY is not set 252# CONFIG_NET_KEY is not set
241CONFIG_INET=y 253CONFIG_INET=y
242CONFIG_IP_MULTICAST=y 254CONFIG_IP_MULTICAST=y
@@ -258,10 +270,13 @@ CONFIG_SYN_COOKIES=y
258# CONFIG_INET_TUNNEL is not set 270# CONFIG_INET_TUNNEL is not set
259CONFIG_INET_XFRM_MODE_TRANSPORT=y 271CONFIG_INET_XFRM_MODE_TRANSPORT=y
260CONFIG_INET_XFRM_MODE_TUNNEL=y 272CONFIG_INET_XFRM_MODE_TUNNEL=y
273CONFIG_INET_XFRM_MODE_BEET=y
261CONFIG_INET_DIAG=y 274CONFIG_INET_DIAG=y
262CONFIG_INET_TCP_DIAG=y 275CONFIG_INET_TCP_DIAG=y
263# CONFIG_TCP_CONG_ADVANCED is not set 276# CONFIG_TCP_CONG_ADVANCED is not set
264CONFIG_TCP_CONG_BIC=y 277CONFIG_TCP_CONG_CUBIC=y
278CONFIG_DEFAULT_TCP_CONG="cubic"
279# CONFIG_TCP_MD5SIG is not set
265# CONFIG_IPV6 is not set 280# CONFIG_IPV6 is not set
266# CONFIG_INET6_XFRM_TUNNEL is not set 281# CONFIG_INET6_XFRM_TUNNEL is not set
267# CONFIG_INET6_TUNNEL is not set 282# CONFIG_INET6_TUNNEL is not set
@@ -291,7 +306,6 @@ CONFIG_TCP_CONG_BIC=y
291# CONFIG_ATALK is not set 306# CONFIG_ATALK is not set
292# CONFIG_X25 is not set 307# CONFIG_X25 is not set
293# CONFIG_LAPB is not set 308# CONFIG_LAPB is not set
294# CONFIG_NET_DIVERT is not set
295# CONFIG_ECONET is not set 309# CONFIG_ECONET is not set
296# CONFIG_WAN_ROUTER is not set 310# CONFIG_WAN_ROUTER is not set
297 311
@@ -362,6 +376,12 @@ CONFIG_BLK_DEV_INITRD=y
362# CONFIG_ATA_OVER_ETH is not set 376# CONFIG_ATA_OVER_ETH is not set
363 377
364# 378#
379# Misc devices
380#
381# CONFIG_SGI_IOC4 is not set
382# CONFIG_TIFM_CORE is not set
383
384#
365# ATA/ATAPI/MFM/RLL support 385# ATA/ATAPI/MFM/RLL support
366# 386#
367# CONFIG_IDE is not set 387# CONFIG_IDE is not set
@@ -371,6 +391,8 @@ CONFIG_BLK_DEV_INITRD=y
371# 391#
372# CONFIG_RAID_ATTRS is not set 392# CONFIG_RAID_ATTRS is not set
373CONFIG_SCSI=y 393CONFIG_SCSI=y
394# CONFIG_SCSI_TGT is not set
395# CONFIG_SCSI_NETLINK is not set
374CONFIG_SCSI_PROC_FS=y 396CONFIG_SCSI_PROC_FS=y
375 397
376# 398#
@@ -389,14 +411,16 @@ CONFIG_BLK_DEV_SD=y
389# CONFIG_SCSI_MULTI_LUN is not set 411# CONFIG_SCSI_MULTI_LUN is not set
390# CONFIG_SCSI_CONSTANTS is not set 412# CONFIG_SCSI_CONSTANTS is not set
391# CONFIG_SCSI_LOGGING is not set 413# CONFIG_SCSI_LOGGING is not set
414# CONFIG_SCSI_SCAN_ASYNC is not set
392 415
393# 416#
394# SCSI Transport Attributes 417# SCSI Transports
395# 418#
396# CONFIG_SCSI_SPI_ATTRS is not set 419# CONFIG_SCSI_SPI_ATTRS is not set
397# CONFIG_SCSI_FC_ATTRS is not set 420# CONFIG_SCSI_FC_ATTRS is not set
398# CONFIG_SCSI_ISCSI_ATTRS is not set 421# CONFIG_SCSI_ISCSI_ATTRS is not set
399# CONFIG_SCSI_SAS_ATTRS is not set 422# CONFIG_SCSI_SAS_ATTRS is not set
423# CONFIG_SCSI_SAS_LIBSAS is not set
400 424
401# 425#
402# SCSI low-level drivers 426# SCSI low-level drivers
@@ -409,27 +433,13 @@ CONFIG_BLK_DEV_SD=y
409# CONFIG_SCSI_AIC7XXX is not set 433# CONFIG_SCSI_AIC7XXX is not set
410# CONFIG_SCSI_AIC7XXX_OLD is not set 434# CONFIG_SCSI_AIC7XXX_OLD is not set
411# CONFIG_SCSI_AIC79XX is not set 435# CONFIG_SCSI_AIC79XX is not set
436# CONFIG_SCSI_AIC94XX is not set
412# CONFIG_SCSI_DPT_I2O is not set 437# CONFIG_SCSI_DPT_I2O is not set
438# CONFIG_SCSI_ARCMSR is not set
413# CONFIG_MEGARAID_NEWGEN is not set 439# CONFIG_MEGARAID_NEWGEN is not set
414# CONFIG_MEGARAID_LEGACY is not set 440# CONFIG_MEGARAID_LEGACY is not set
415# CONFIG_MEGARAID_SAS is not set 441# CONFIG_MEGARAID_SAS is not set
416CONFIG_ATA=y
417# CONFIG_SATA_AHCI is not set
418# CONFIG_SATA_SVW is not set
419# CONFIG_SCSI_ATA_PIIX is not set
420CONFIG_SATA_MV=y
421# CONFIG_SATA_NV is not set
422# CONFIG_SCSI_PDC_ADMA is not set
423# CONFIG_SCSI_HPTIOP is not set 442# CONFIG_SCSI_HPTIOP is not set
424# CONFIG_SATA_QSTOR is not set
425# CONFIG_SATA_PROMISE is not set
426# CONFIG_SATA_SX4 is not set
427# CONFIG_SATA_SIL is not set
428# CONFIG_SATA_SIL24 is not set
429# CONFIG_SATA_SIS is not set
430# CONFIG_SATA_ULI is not set
431# CONFIG_SATA_VIA is not set
432# CONFIG_SATA_VITESSE is not set
433# CONFIG_SCSI_BUSLOGIC is not set 443# CONFIG_SCSI_BUSLOGIC is not set
434# CONFIG_SCSI_DMX3191D is not set 444# CONFIG_SCSI_DMX3191D is not set
435# CONFIG_SCSI_EATA is not set 445# CONFIG_SCSI_EATA is not set
@@ -438,15 +448,73 @@ CONFIG_SATA_MV=y
438# CONFIG_SCSI_IPS is not set 448# CONFIG_SCSI_IPS is not set
439# CONFIG_SCSI_INITIO is not set 449# CONFIG_SCSI_INITIO is not set
440# CONFIG_SCSI_INIA100 is not set 450# CONFIG_SCSI_INIA100 is not set
451# CONFIG_SCSI_STEX is not set
441# CONFIG_SCSI_SYM53C8XX_2 is not set 452# CONFIG_SCSI_SYM53C8XX_2 is not set
442# CONFIG_SCSI_IPR is not set 453# CONFIG_SCSI_IPR is not set
443# CONFIG_SCSI_QLOGIC_1280 is not set 454# CONFIG_SCSI_QLOGIC_1280 is not set
444# CONFIG_SCSI_QLA_FC is not set 455# CONFIG_SCSI_QLA_FC is not set
456# CONFIG_SCSI_QLA_ISCSI is not set
445# CONFIG_SCSI_LPFC is not set 457# CONFIG_SCSI_LPFC is not set
446# CONFIG_SCSI_DC395x is not set 458# CONFIG_SCSI_DC395x is not set
447# CONFIG_SCSI_DC390T is not set 459# CONFIG_SCSI_DC390T is not set
448# CONFIG_SCSI_NSP32 is not set 460# CONFIG_SCSI_NSP32 is not set
449# CONFIG_SCSI_DEBUG is not set 461# CONFIG_SCSI_DEBUG is not set
462# CONFIG_SCSI_SRP is not set
463
464#
465# Serial ATA (prod) and Parallel ATA (experimental) drivers
466#
467CONFIG_ATA=y
468# CONFIG_SATA_AHCI is not set
469# CONFIG_SATA_SVW is not set
470# CONFIG_ATA_PIIX is not set
471CONFIG_SATA_MV=y
472# CONFIG_SATA_NV is not set
473# CONFIG_PDC_ADMA is not set
474# CONFIG_SATA_QSTOR is not set
475# CONFIG_SATA_PROMISE is not set
476# CONFIG_SATA_SX4 is not set
477# CONFIG_SATA_SIL is not set
478# CONFIG_SATA_SIL24 is not set
479# CONFIG_SATA_SIS is not set
480# CONFIG_SATA_ULI is not set
481# CONFIG_SATA_VIA is not set
482# CONFIG_SATA_VITESSE is not set
483# CONFIG_PATA_ALI is not set
484# CONFIG_PATA_AMD is not set
485# CONFIG_PATA_ARTOP is not set
486# CONFIG_PATA_ATIIXP is not set
487# CONFIG_PATA_CMD64X is not set
488# CONFIG_PATA_CS5520 is not set
489# CONFIG_PATA_CS5530 is not set
490# CONFIG_PATA_CYPRESS is not set
491# CONFIG_PATA_EFAR is not set
492# CONFIG_ATA_GENERIC is not set
493# CONFIG_PATA_HPT366 is not set
494# CONFIG_PATA_HPT37X is not set
495# CONFIG_PATA_HPT3X2N is not set
496# CONFIG_PATA_HPT3X3 is not set
497# CONFIG_PATA_IT821X is not set
498# CONFIG_PATA_JMICRON is not set
499# CONFIG_PATA_TRIFLEX is not set
500# CONFIG_PATA_MARVELL is not set
501# CONFIG_PATA_MPIIX is not set
502# CONFIG_PATA_OLDPIIX is not set
503# CONFIG_PATA_NETCELL is not set
504# CONFIG_PATA_NS87410 is not set
505# CONFIG_PATA_OPTI is not set
506# CONFIG_PATA_OPTIDMA is not set
507# CONFIG_PATA_PDC_OLD is not set
508# CONFIG_PATA_RADISYS is not set
509# CONFIG_PATA_RZ1000 is not set
510# CONFIG_PATA_SC1200 is not set
511# CONFIG_PATA_SERVERWORKS is not set
512# CONFIG_PATA_PDC2027X is not set
513# CONFIG_PATA_SIL680 is not set
514# CONFIG_PATA_SIS is not set
515# CONFIG_PATA_VIA is not set
516# CONFIG_PATA_WINBOND is not set
517# CONFIG_PATA_PLATFORM is not set
450 518
451# 519#
452# Multi-device support (RAID and LVM) 520# Multi-device support (RAID and LVM)
@@ -474,6 +542,7 @@ CONFIG_SATA_MV=y
474# 542#
475# Macintosh device drivers 543# Macintosh device drivers
476# 544#
545# CONFIG_MAC_EMUMOUSEBTN is not set
477# CONFIG_WINDFARM is not set 546# CONFIG_WINDFARM is not set
478 547
479# 548#
@@ -505,6 +574,7 @@ CONFIG_PHYLIB=y
505# CONFIG_CICADA_PHY is not set 574# CONFIG_CICADA_PHY is not set
506# CONFIG_VITESSE_PHY is not set 575# CONFIG_VITESSE_PHY is not set
507# CONFIG_SMSC_PHY is not set 576# CONFIG_SMSC_PHY is not set
577# CONFIG_BROADCOM_PHY is not set
508# CONFIG_FIXED_PHY is not set 578# CONFIG_FIXED_PHY is not set
509 579
510# 580#
@@ -563,6 +633,8 @@ CONFIG_8139TOO=y
563# CONFIG_VIA_VELOCITY is not set 633# CONFIG_VIA_VELOCITY is not set
564# CONFIG_TIGON3 is not set 634# CONFIG_TIGON3 is not set
565# CONFIG_BNX2 is not set 635# CONFIG_BNX2 is not set
636CONFIG_TSI108_ETH=y
637# CONFIG_QLA3XXX is not set
566 638
567# 639#
568# Ethernet (10000 Mbit) 640# Ethernet (10000 Mbit)
@@ -571,6 +643,7 @@ CONFIG_8139TOO=y
571# CONFIG_IXGB is not set 643# CONFIG_IXGB is not set
572# CONFIG_S2IO is not set 644# CONFIG_S2IO is not set
573# CONFIG_MYRI10GE is not set 645# CONFIG_MYRI10GE is not set
646# CONFIG_NETXEN_NIC is not set
574 647
575# 648#
576# Token Ring devices 649# Token Ring devices
@@ -610,6 +683,7 @@ CONFIG_8139TOO=y
610# Input device support 683# Input device support
611# 684#
612CONFIG_INPUT=y 685CONFIG_INPUT=y
686# CONFIG_INPUT_FF_MEMLESS is not set
613 687
614# 688#
615# Userland interfaces 689# Userland interfaces
@@ -654,6 +728,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
654# 728#
655# Non-8250 serial port support 729# Non-8250 serial port support
656# 730#
731# CONFIG_SERIAL_UARTLITE is not set
657CONFIG_SERIAL_CORE=y 732CONFIG_SERIAL_CORE=y
658CONFIG_SERIAL_CORE_CONSOLE=y 733CONFIG_SERIAL_CORE_CONSOLE=y
659# CONFIG_SERIAL_JSM is not set 734# CONFIG_SERIAL_JSM is not set
@@ -677,10 +752,6 @@ CONFIG_GEN_RTC=y
677# CONFIG_DTLK is not set 752# CONFIG_DTLK is not set
678# CONFIG_R3964 is not set 753# CONFIG_R3964 is not set
679# CONFIG_APPLICOM is not set 754# CONFIG_APPLICOM is not set
680
681#
682# Ftape, the floppy tape device driver
683#
684# CONFIG_AGP is not set 755# CONFIG_AGP is not set
685# CONFIG_DRM is not set 756# CONFIG_DRM is not set
686# CONFIG_RAW_DRIVER is not set 757# CONFIG_RAW_DRIVER is not set
@@ -689,7 +760,6 @@ CONFIG_GEN_RTC=y
689# TPM devices 760# TPM devices
690# 761#
691# CONFIG_TCG_TPM is not set 762# CONFIG_TCG_TPM is not set
692# CONFIG_TELCLOCK is not set
693 763
694# 764#
695# I2C support 765# I2C support
@@ -705,6 +775,7 @@ CONFIG_GEN_RTC=y
705# 775#
706# Dallas's 1-wire bus 776# Dallas's 1-wire bus
707# 777#
778# CONFIG_W1 is not set
708 779
709# 780#
710# Hardware Monitoring support 781# Hardware Monitoring support
@@ -713,17 +784,14 @@ CONFIG_HWMON=y
713# CONFIG_HWMON_VID is not set 784# CONFIG_HWMON_VID is not set
714# CONFIG_SENSORS_ABITUGURU is not set 785# CONFIG_SENSORS_ABITUGURU is not set
715# CONFIG_SENSORS_F71805F is not set 786# CONFIG_SENSORS_F71805F is not set
787# CONFIG_SENSORS_PC87427 is not set
788# CONFIG_SENSORS_VT1211 is not set
716# CONFIG_HWMON_DEBUG_CHIP is not set 789# CONFIG_HWMON_DEBUG_CHIP is not set
717 790
718# 791#
719# Misc devices
720#
721
722#
723# Multimedia devices 792# Multimedia devices
724# 793#
725# CONFIG_VIDEO_DEV is not set 794# CONFIG_VIDEO_DEV is not set
726CONFIG_VIDEO_V4L2=y
727 795
728# 796#
729# Digital Video Broadcasting Devices 797# Digital Video Broadcasting Devices
@@ -735,6 +803,7 @@ CONFIG_VIDEO_V4L2=y
735# 803#
736CONFIG_FIRMWARE_EDID=y 804CONFIG_FIRMWARE_EDID=y
737# CONFIG_FB is not set 805# CONFIG_FB is not set
806# CONFIG_FB_IBM_GXT4500 is not set
738# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 807# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
739 808
740# 809#
@@ -743,6 +812,11 @@ CONFIG_FIRMWARE_EDID=y
743# CONFIG_SOUND is not set 812# CONFIG_SOUND is not set
744 813
745# 814#
815# HID Devices
816#
817CONFIG_HID=y
818
819#
746# USB support 820# USB support
747# 821#
748CONFIG_USB_ARCH_HAS_HCD=y 822CONFIG_USB_ARCH_HAS_HCD=y
@@ -805,6 +879,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
805# 879#
806 880
807# 881#
882# Virtualization
883#
884
885#
808# File systems 886# File systems
809# 887#
810CONFIG_EXT2_FS=y 888CONFIG_EXT2_FS=y
@@ -814,6 +892,7 @@ CONFIG_EXT3_FS=y
814CONFIG_EXT3_FS_XATTR=y 892CONFIG_EXT3_FS_XATTR=y
815# CONFIG_EXT3_FS_POSIX_ACL is not set 893# CONFIG_EXT3_FS_POSIX_ACL is not set
816# CONFIG_EXT3_FS_SECURITY is not set 894# CONFIG_EXT3_FS_SECURITY is not set
895# CONFIG_EXT4DEV_FS is not set
817CONFIG_JBD=y 896CONFIG_JBD=y
818# CONFIG_JBD_DEBUG is not set 897# CONFIG_JBD_DEBUG is not set
819CONFIG_FS_MBCACHE=y 898CONFIG_FS_MBCACHE=y
@@ -821,6 +900,7 @@ CONFIG_FS_MBCACHE=y
821# CONFIG_JFS_FS is not set 900# CONFIG_JFS_FS is not set
822# CONFIG_FS_POSIX_ACL is not set 901# CONFIG_FS_POSIX_ACL is not set
823# CONFIG_XFS_FS is not set 902# CONFIG_XFS_FS is not set
903# CONFIG_GFS2_FS is not set
824# CONFIG_OCFS2_FS is not set 904# CONFIG_OCFS2_FS is not set
825# CONFIG_MINIX_FS is not set 905# CONFIG_MINIX_FS is not set
826# CONFIG_ROMFS_FS is not set 906# CONFIG_ROMFS_FS is not set
@@ -850,8 +930,10 @@ CONFIG_DNOTIFY=y
850# 930#
851CONFIG_PROC_FS=y 931CONFIG_PROC_FS=y
852CONFIG_PROC_KCORE=y 932CONFIG_PROC_KCORE=y
933CONFIG_PROC_SYSCTL=y
853CONFIG_SYSFS=y 934CONFIG_SYSFS=y
854CONFIG_TMPFS=y 935CONFIG_TMPFS=y
936# CONFIG_TMPFS_POSIX_ACL is not set
855# CONFIG_HUGETLB_PAGE is not set 937# CONFIG_HUGETLB_PAGE is not set
856CONFIG_RAMFS=y 938CONFIG_RAMFS=y
857# CONFIG_CONFIGFS_FS is not set 939# CONFIG_CONFIGFS_FS is not set
@@ -921,13 +1003,20 @@ CONFIG_MSDOS_PARTITION=y
921# CONFIG_NLS is not set 1003# CONFIG_NLS is not set
922 1004
923# 1005#
1006# Distributed Lock Manager
1007#
1008# CONFIG_DLM is not set
1009
1010#
924# Library routines 1011# Library routines
925# 1012#
1013CONFIG_BITREVERSE=y
926# CONFIG_CRC_CCITT is not set 1014# CONFIG_CRC_CCITT is not set
927# CONFIG_CRC16 is not set 1015# CONFIG_CRC16 is not set
928CONFIG_CRC32=y 1016CONFIG_CRC32=y
929# CONFIG_LIBCRC32C is not set 1017# CONFIG_LIBCRC32C is not set
930CONFIG_PLIST=y 1018CONFIG_PLIST=y
1019CONFIG_IOMAP_COPY=y
931 1020
932# 1021#
933# Instrumentation Support 1022# Instrumentation Support
@@ -938,12 +1027,14 @@ CONFIG_PLIST=y
938# Kernel hacking 1027# Kernel hacking
939# 1028#
940# CONFIG_PRINTK_TIME is not set 1029# CONFIG_PRINTK_TIME is not set
1030CONFIG_ENABLE_MUST_CHECK=y
941# CONFIG_MAGIC_SYSRQ is not set 1031# CONFIG_MAGIC_SYSRQ is not set
942# CONFIG_UNUSED_SYMBOLS is not set 1032# CONFIG_UNUSED_SYMBOLS is not set
1033# CONFIG_DEBUG_FS is not set
1034# CONFIG_HEADERS_CHECK is not set
943# CONFIG_DEBUG_KERNEL is not set 1035# CONFIG_DEBUG_KERNEL is not set
944CONFIG_LOG_BUF_SHIFT=14 1036CONFIG_LOG_BUF_SHIFT=14
945# CONFIG_DEBUG_FS is not set 1037# CONFIG_DEBUG_BUGVERBOSE is not set
946# CONFIG_UNWIND_INFO is not set
947# CONFIG_BOOTX_TEXT is not set 1038# CONFIG_BOOTX_TEXT is not set
948# CONFIG_PPC_EARLY_DEBUG is not set 1039# CONFIG_PPC_EARLY_DEBUG is not set
949 1040
@@ -957,7 +1048,3 @@ CONFIG_LOG_BUF_SHIFT=14
957# Cryptographic options 1048# Cryptographic options
958# 1049#
959# CONFIG_CRYPTO is not set 1050# CONFIG_CRYPTO is not set
960
961#
962# Hardware crypto devices
963#
diff --git a/arch/powerpc/configs/mpc834x_itx_defconfig b/arch/powerpc/configs/mpc834x_itx_defconfig
index 0561b73a918f..45757b613702 100644
--- a/arch/powerpc/configs/mpc834x_itx_defconfig
+++ b/arch/powerpc/configs/mpc834x_itx_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.20-rc5
4# Mon Sep 25 19:41:14 2006 4# Mon Jan 22 22:23:43 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,13 +23,13 @@ CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
24CONFIG_AUDIT_ARCH=y 25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
25CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
26 28
27# 29#
28# Processor support 30# Processor support
29# 31#
30# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
31# CONFIG_PPC_52xx is not set
32# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
33CONFIG_PPC_83xx=y 34CONFIG_PPC_83xx=y
34# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -40,6 +41,8 @@ CONFIG_PPC_83xx=y
40CONFIG_6xx=y 41CONFIG_6xx=y
41CONFIG_83xx=y 42CONFIG_83xx=y
42CONFIG_PPC_FPU=y 43CONFIG_PPC_FPU=y
44# CONFIG_PPC_DCR_NATIVE is not set
45# CONFIG_PPC_DCR_MMIO is not set
43CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
44CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
45# CONFIG_SMP is not set 48# CONFIG_SMP is not set
@@ -59,16 +62,20 @@ CONFIG_LOCALVERSION=""
59CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
60CONFIG_SWAP=y 63CONFIG_SWAP=y
61CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
62# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
63# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
64# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
70CONFIG_EMBEDDED=y
71CONFIG_SYSCTL=y 76CONFIG_SYSCTL=y
77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
72# CONFIG_KALLSYMS is not set 79# CONFIG_KALLSYMS is not set
73CONFIG_HOTPLUG=y 80CONFIG_HOTPLUG=y
74CONFIG_PRINTK=y 81CONFIG_PRINTK=y
@@ -98,6 +105,7 @@ CONFIG_MODULE_UNLOAD=y
98# 105#
99# Block layer 106# Block layer
100# 107#
108CONFIG_BLOCK=y
101# CONFIG_LBD is not set 109# CONFIG_LBD is not set
102# CONFIG_BLK_DEV_IO_TRACE is not set 110# CONFIG_BLK_DEV_IO_TRACE is not set
103# CONFIG_LSF is not set 111# CONFIG_LSF is not set
@@ -120,8 +128,10 @@ CONFIG_PPC_GEN550=y
120# 128#
121# Platform support 129# Platform support
122# 130#
131# CONFIG_MPC832x_MDS is not set
123# CONFIG_MPC834x_SYS is not set 132# CONFIG_MPC834x_SYS is not set
124CONFIG_MPC834x_ITX=y 133CONFIG_MPC834x_ITX=y
134# CONFIG_MPC8360E_PB is not set
125CONFIG_MPC834x=y 135CONFIG_MPC834x=y
126# CONFIG_MPIC is not set 136# CONFIG_MPIC is not set
127 137
@@ -131,6 +141,7 @@ CONFIG_MPC834x=y
131# CONFIG_HIGHMEM is not set 141# CONFIG_HIGHMEM is not set
132# CONFIG_HZ_100 is not set 142# CONFIG_HZ_100 is not set
133CONFIG_HZ_250=y 143CONFIG_HZ_250=y
144# CONFIG_HZ_300 is not set
134# CONFIG_HZ_1000 is not set 145# CONFIG_HZ_1000 is not set
135CONFIG_HZ=250 146CONFIG_HZ=250
136CONFIG_PREEMPT_NONE=y 147CONFIG_PREEMPT_NONE=y
@@ -138,8 +149,10 @@ CONFIG_PREEMPT_NONE=y
138# CONFIG_PREEMPT is not set 149# CONFIG_PREEMPT is not set
139CONFIG_BINFMT_ELF=y 150CONFIG_BINFMT_ELF=y
140# CONFIG_BINFMT_MISC is not set 151# CONFIG_BINFMT_MISC is not set
152CONFIG_MATH_EMULATION=y
141CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 153CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
142CONFIG_ARCH_FLATMEM_ENABLE=y 154CONFIG_ARCH_FLATMEM_ENABLE=y
155CONFIG_ARCH_POPULATES_NODE_MAP=y
143CONFIG_SELECT_MEMORY_MODEL=y 156CONFIG_SELECT_MEMORY_MODEL=y
144CONFIG_FLATMEM_MANUAL=y 157CONFIG_FLATMEM_MANUAL=y
145# CONFIG_DISCONTIGMEM_MANUAL is not set 158# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -206,6 +219,7 @@ CONFIG_PACKET=y
206CONFIG_UNIX=y 219CONFIG_UNIX=y
207CONFIG_XFRM=y 220CONFIG_XFRM=y
208# CONFIG_XFRM_USER is not set 221# CONFIG_XFRM_USER is not set
222# CONFIG_XFRM_SUB_POLICY is not set
209# CONFIG_NET_KEY is not set 223# CONFIG_NET_KEY is not set
210CONFIG_INET=y 224CONFIG_INET=y
211CONFIG_IP_MULTICAST=y 225CONFIG_IP_MULTICAST=y
@@ -227,10 +241,13 @@ CONFIG_SYN_COOKIES=y
227# CONFIG_INET_TUNNEL is not set 241# CONFIG_INET_TUNNEL is not set
228CONFIG_INET_XFRM_MODE_TRANSPORT=y 242CONFIG_INET_XFRM_MODE_TRANSPORT=y
229CONFIG_INET_XFRM_MODE_TUNNEL=y 243CONFIG_INET_XFRM_MODE_TUNNEL=y
244CONFIG_INET_XFRM_MODE_BEET=y
230CONFIG_INET_DIAG=y 245CONFIG_INET_DIAG=y
231CONFIG_INET_TCP_DIAG=y 246CONFIG_INET_TCP_DIAG=y
232# CONFIG_TCP_CONG_ADVANCED is not set 247# CONFIG_TCP_CONG_ADVANCED is not set
233CONFIG_TCP_CONG_BIC=y 248CONFIG_TCP_CONG_CUBIC=y
249CONFIG_DEFAULT_TCP_CONG="cubic"
250# CONFIG_TCP_MD5SIG is not set
234# CONFIG_IPV6 is not set 251# CONFIG_IPV6 is not set
235# CONFIG_INET6_XFRM_TUNNEL is not set 252# CONFIG_INET6_XFRM_TUNNEL is not set
236# CONFIG_INET6_TUNNEL is not set 253# CONFIG_INET6_TUNNEL is not set
@@ -411,9 +428,16 @@ CONFIG_BLK_DEV_INITRD=y
411# CONFIG_ATA_OVER_ETH is not set 428# CONFIG_ATA_OVER_ETH is not set
412 429
413# 430#
431# Misc devices
432#
433# CONFIG_SGI_IOC4 is not set
434# CONFIG_TIFM_CORE is not set
435
436#
414# ATA/ATAPI/MFM/RLL support 437# ATA/ATAPI/MFM/RLL support
415# 438#
416CONFIG_IDE=y 439CONFIG_IDE=y
440CONFIG_IDE_MAX_HWIFS=4
417# CONFIG_BLK_DEV_IDE is not set 441# CONFIG_BLK_DEV_IDE is not set
418# CONFIG_BLK_DEV_HD_ONLY is not set 442# CONFIG_BLK_DEV_HD_ONLY is not set
419# CONFIG_BLK_DEV_HD is not set 443# CONFIG_BLK_DEV_HD is not set
@@ -423,6 +447,8 @@ CONFIG_IDE=y
423# 447#
424# CONFIG_RAID_ATTRS is not set 448# CONFIG_RAID_ATTRS is not set
425CONFIG_SCSI=y 449CONFIG_SCSI=y
450# CONFIG_SCSI_TGT is not set
451# CONFIG_SCSI_NETLINK is not set
426CONFIG_SCSI_PROC_FS=y 452CONFIG_SCSI_PROC_FS=y
427 453
428# 454#
@@ -441,14 +467,16 @@ CONFIG_CHR_DEV_SG=y
441# CONFIG_SCSI_MULTI_LUN is not set 467# CONFIG_SCSI_MULTI_LUN is not set
442# CONFIG_SCSI_CONSTANTS is not set 468# CONFIG_SCSI_CONSTANTS is not set
443# CONFIG_SCSI_LOGGING is not set 469# CONFIG_SCSI_LOGGING is not set
470# CONFIG_SCSI_SCAN_ASYNC is not set
444 471
445# 472#
446# SCSI Transport Attributes 473# SCSI Transports
447# 474#
448CONFIG_SCSI_SPI_ATTRS=y 475CONFIG_SCSI_SPI_ATTRS=y
449# CONFIG_SCSI_FC_ATTRS is not set 476# CONFIG_SCSI_FC_ATTRS is not set
450# CONFIG_SCSI_ISCSI_ATTRS is not set 477# CONFIG_SCSI_ISCSI_ATTRS is not set
451# CONFIG_SCSI_SAS_ATTRS is not set 478# CONFIG_SCSI_SAS_ATTRS is not set
479# CONFIG_SCSI_SAS_LIBSAS is not set
452 480
453# 481#
454# SCSI low-level drivers 482# SCSI low-level drivers
@@ -461,27 +489,13 @@ CONFIG_SCSI_SPI_ATTRS=y
461# CONFIG_SCSI_AIC7XXX is not set 489# CONFIG_SCSI_AIC7XXX is not set
462# CONFIG_SCSI_AIC7XXX_OLD is not set 490# CONFIG_SCSI_AIC7XXX_OLD is not set
463# CONFIG_SCSI_AIC79XX is not set 491# CONFIG_SCSI_AIC79XX is not set
492# CONFIG_SCSI_AIC94XX is not set
464# CONFIG_SCSI_DPT_I2O is not set 493# CONFIG_SCSI_DPT_I2O is not set
494# CONFIG_SCSI_ARCMSR is not set
465# CONFIG_MEGARAID_NEWGEN is not set 495# CONFIG_MEGARAID_NEWGEN is not set
466# CONFIG_MEGARAID_LEGACY is not set 496# CONFIG_MEGARAID_LEGACY is not set
467# CONFIG_MEGARAID_SAS is not set 497# CONFIG_MEGARAID_SAS is not set
468CONFIG_ATA=y
469# CONFIG_SATA_AHCI is not set
470# CONFIG_SATA_SVW is not set
471# CONFIG_SCSI_ATA_PIIX is not set
472# CONFIG_SATA_MV is not set
473# CONFIG_SATA_NV is not set
474# CONFIG_SCSI_PDC_ADMA is not set
475# CONFIG_SCSI_HPTIOP is not set 498# CONFIG_SCSI_HPTIOP is not set
476# CONFIG_SATA_QSTOR is not set
477# CONFIG_SATA_PROMISE is not set
478# CONFIG_SATA_SX4 is not set
479CONFIG_SATA_SIL=y
480# CONFIG_SATA_SIL24 is not set
481# CONFIG_SATA_SIS is not set
482# CONFIG_SATA_ULI is not set
483# CONFIG_SATA_VIA is not set
484# CONFIG_SATA_VITESSE is not set
485# CONFIG_SCSI_BUSLOGIC is not set 499# CONFIG_SCSI_BUSLOGIC is not set
486# CONFIG_SCSI_DMX3191D is not set 500# CONFIG_SCSI_DMX3191D is not set
487# CONFIG_SCSI_EATA is not set 501# CONFIG_SCSI_EATA is not set
@@ -490,15 +504,73 @@ CONFIG_SATA_SIL=y
490# CONFIG_SCSI_IPS is not set 504# CONFIG_SCSI_IPS is not set
491# CONFIG_SCSI_INITIO is not set 505# CONFIG_SCSI_INITIO is not set
492# CONFIG_SCSI_INIA100 is not set 506# CONFIG_SCSI_INIA100 is not set
507# CONFIG_SCSI_STEX is not set
493# CONFIG_SCSI_SYM53C8XX_2 is not set 508# CONFIG_SCSI_SYM53C8XX_2 is not set
494# CONFIG_SCSI_IPR is not set 509# CONFIG_SCSI_IPR is not set
495# CONFIG_SCSI_QLOGIC_1280 is not set 510# CONFIG_SCSI_QLOGIC_1280 is not set
496# CONFIG_SCSI_QLA_FC is not set 511# CONFIG_SCSI_QLA_FC is not set
512# CONFIG_SCSI_QLA_ISCSI is not set
497# CONFIG_SCSI_LPFC is not set 513# CONFIG_SCSI_LPFC is not set
498# CONFIG_SCSI_DC395x is not set 514# CONFIG_SCSI_DC395x is not set
499# CONFIG_SCSI_DC390T is not set 515# CONFIG_SCSI_DC390T is not set
500# CONFIG_SCSI_NSP32 is not set 516# CONFIG_SCSI_NSP32 is not set
501# CONFIG_SCSI_DEBUG is not set 517# CONFIG_SCSI_DEBUG is not set
518# CONFIG_SCSI_SRP is not set
519
520#
521# Serial ATA (prod) and Parallel ATA (experimental) drivers
522#
523CONFIG_ATA=y
524# CONFIG_SATA_AHCI is not set
525# CONFIG_SATA_SVW is not set
526# CONFIG_ATA_PIIX is not set
527# CONFIG_SATA_MV is not set
528# CONFIG_SATA_NV is not set
529# CONFIG_PDC_ADMA is not set
530# CONFIG_SATA_QSTOR is not set
531# CONFIG_SATA_PROMISE is not set
532# CONFIG_SATA_SX4 is not set
533CONFIG_SATA_SIL=y
534# CONFIG_SATA_SIL24 is not set
535# CONFIG_SATA_SIS is not set
536# CONFIG_SATA_ULI is not set
537# CONFIG_SATA_VIA is not set
538# CONFIG_SATA_VITESSE is not set
539# CONFIG_PATA_ALI is not set
540# CONFIG_PATA_AMD is not set
541# CONFIG_PATA_ARTOP is not set
542# CONFIG_PATA_ATIIXP is not set
543# CONFIG_PATA_CMD64X is not set
544# CONFIG_PATA_CS5520 is not set
545# CONFIG_PATA_CS5530 is not set
546# CONFIG_PATA_CYPRESS is not set
547# CONFIG_PATA_EFAR is not set
548# CONFIG_ATA_GENERIC is not set
549# CONFIG_PATA_HPT366 is not set
550# CONFIG_PATA_HPT37X is not set
551# CONFIG_PATA_HPT3X2N is not set
552# CONFIG_PATA_HPT3X3 is not set
553# CONFIG_PATA_IT821X is not set
554# CONFIG_PATA_JMICRON is not set
555# CONFIG_PATA_TRIFLEX is not set
556# CONFIG_PATA_MARVELL is not set
557# CONFIG_PATA_MPIIX is not set
558# CONFIG_PATA_OLDPIIX is not set
559# CONFIG_PATA_NETCELL is not set
560# CONFIG_PATA_NS87410 is not set
561# CONFIG_PATA_OPTI is not set
562# CONFIG_PATA_OPTIDMA is not set
563# CONFIG_PATA_PDC_OLD is not set
564# CONFIG_PATA_RADISYS is not set
565# CONFIG_PATA_RZ1000 is not set
566# CONFIG_PATA_SC1200 is not set
567# CONFIG_PATA_SERVERWORKS is not set
568# CONFIG_PATA_PDC2027X is not set
569# CONFIG_PATA_SIL680 is not set
570# CONFIG_PATA_SIS is not set
571# CONFIG_PATA_VIA is not set
572# CONFIG_PATA_WINBOND is not set
573# CONFIG_PATA_PLATFORM is not set
502 574
503# 575#
504# Multi-device support (RAID and LVM) 576# Multi-device support (RAID and LVM)
@@ -535,6 +607,7 @@ CONFIG_MD_RAID1=y
535# 607#
536# Macintosh device drivers 608# Macintosh device drivers
537# 609#
610# CONFIG_MAC_EMUMOUSEBTN is not set
538# CONFIG_WINDFARM is not set 611# CONFIG_WINDFARM is not set
539 612
540# 613#
@@ -566,6 +639,7 @@ CONFIG_PHYLIB=y
566CONFIG_CICADA_PHY=y 639CONFIG_CICADA_PHY=y
567# CONFIG_VITESSE_PHY is not set 640# CONFIG_VITESSE_PHY is not set
568# CONFIG_SMSC_PHY is not set 641# CONFIG_SMSC_PHY is not set
642# CONFIG_BROADCOM_PHY is not set
569# CONFIG_FIXED_PHY is not set 643# CONFIG_FIXED_PHY is not set
570 644
571# 645#
@@ -622,6 +696,7 @@ CONFIG_E100=y
622# CONFIG_BNX2 is not set 696# CONFIG_BNX2 is not set
623CONFIG_GIANFAR=y 697CONFIG_GIANFAR=y
624CONFIG_GFAR_NAPI=y 698CONFIG_GFAR_NAPI=y
699# CONFIG_QLA3XXX is not set
625 700
626# 701#
627# Ethernet (10000 Mbit) 702# Ethernet (10000 Mbit)
@@ -630,6 +705,7 @@ CONFIG_GFAR_NAPI=y
630# CONFIG_IXGB is not set 705# CONFIG_IXGB is not set
631# CONFIG_S2IO is not set 706# CONFIG_S2IO is not set
632# CONFIG_MYRI10GE is not set 707# CONFIG_MYRI10GE is not set
708# CONFIG_NETXEN_NIC is not set
633 709
634# 710#
635# Token Ring devices 711# Token Ring devices
@@ -669,6 +745,7 @@ CONFIG_GFAR_NAPI=y
669# Input device support 745# Input device support
670# 746#
671CONFIG_INPUT=y 747CONFIG_INPUT=y
748# CONFIG_INPUT_FF_MEMLESS is not set
672 749
673# 750#
674# Userland interfaces 751# Userland interfaces
@@ -713,6 +790,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
713# 790#
714# Non-8250 serial port support 791# Non-8250 serial port support
715# 792#
793# CONFIG_SERIAL_UARTLITE is not set
716CONFIG_SERIAL_CORE=y 794CONFIG_SERIAL_CORE=y
717CONFIG_SERIAL_CORE_CONSOLE=y 795CONFIG_SERIAL_CORE_CONSOLE=y
718# CONFIG_SERIAL_JSM is not set 796# CONFIG_SERIAL_JSM is not set
@@ -753,10 +831,6 @@ CONFIG_HW_RANDOM=y
753# CONFIG_DTLK is not set 831# CONFIG_DTLK is not set
754# CONFIG_R3964 is not set 832# CONFIG_R3964 is not set
755# CONFIG_APPLICOM is not set 833# CONFIG_APPLICOM is not set
756
757#
758# Ftape, the floppy tape device driver
759#
760# CONFIG_AGP is not set 834# CONFIG_AGP is not set
761# CONFIG_DRM is not set 835# CONFIG_DRM is not set
762# CONFIG_RAW_DRIVER is not set 836# CONFIG_RAW_DRIVER is not set
@@ -765,7 +839,6 @@ CONFIG_HW_RANDOM=y
765# TPM devices 839# TPM devices
766# 840#
767# CONFIG_TCG_TPM is not set 841# CONFIG_TCG_TPM is not set
768# CONFIG_TELCLOCK is not set
769 842
770# 843#
771# I2C support 844# I2C support
@@ -842,6 +915,7 @@ CONFIG_SPI_MPC83xx=y
842# 915#
843# Dallas's 1-wire bus 916# Dallas's 1-wire bus
844# 917#
918# CONFIG_W1 is not set
845 919
846# 920#
847# Hardware Monitoring support 921# Hardware Monitoring support
@@ -876,29 +950,27 @@ CONFIG_HWMON=y
876# CONFIG_SENSORS_LM92 is not set 950# CONFIG_SENSORS_LM92 is not set
877# CONFIG_SENSORS_MAX1619 is not set 951# CONFIG_SENSORS_MAX1619 is not set
878# CONFIG_SENSORS_PC87360 is not set 952# CONFIG_SENSORS_PC87360 is not set
953# CONFIG_SENSORS_PC87427 is not set
879# CONFIG_SENSORS_SIS5595 is not set 954# CONFIG_SENSORS_SIS5595 is not set
880# CONFIG_SENSORS_SMSC47M1 is not set 955# CONFIG_SENSORS_SMSC47M1 is not set
881# CONFIG_SENSORS_SMSC47M192 is not set 956# CONFIG_SENSORS_SMSC47M192 is not set
882# CONFIG_SENSORS_SMSC47B397 is not set 957# CONFIG_SENSORS_SMSC47B397 is not set
883# CONFIG_SENSORS_VIA686A is not set 958# CONFIG_SENSORS_VIA686A is not set
959# CONFIG_SENSORS_VT1211 is not set
884# CONFIG_SENSORS_VT8231 is not set 960# CONFIG_SENSORS_VT8231 is not set
885# CONFIG_SENSORS_W83781D is not set 961# CONFIG_SENSORS_W83781D is not set
886# CONFIG_SENSORS_W83791D is not set 962# CONFIG_SENSORS_W83791D is not set
887# CONFIG_SENSORS_W83792D is not set 963# CONFIG_SENSORS_W83792D is not set
964# CONFIG_SENSORS_W83793 is not set
888# CONFIG_SENSORS_W83L785TS is not set 965# CONFIG_SENSORS_W83L785TS is not set
889# CONFIG_SENSORS_W83627HF is not set 966# CONFIG_SENSORS_W83627HF is not set
890# CONFIG_SENSORS_W83627EHF is not set 967# CONFIG_SENSORS_W83627EHF is not set
891# CONFIG_HWMON_DEBUG_CHIP is not set 968# CONFIG_HWMON_DEBUG_CHIP is not set
892 969
893# 970#
894# Misc devices
895#
896
897#
898# Multimedia devices 971# Multimedia devices
899# 972#
900# CONFIG_VIDEO_DEV is not set 973# CONFIG_VIDEO_DEV is not set
901CONFIG_VIDEO_V4L2=y
902 974
903# 975#
904# Digital Video Broadcasting Devices 976# Digital Video Broadcasting Devices
@@ -911,6 +983,7 @@ CONFIG_VIDEO_V4L2=y
911# 983#
912CONFIG_FIRMWARE_EDID=y 984CONFIG_FIRMWARE_EDID=y
913# CONFIG_FB is not set 985# CONFIG_FB is not set
986# CONFIG_FB_IBM_GXT4500 is not set
914# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 987# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
915 988
916# 989#
@@ -919,6 +992,11 @@ CONFIG_FIRMWARE_EDID=y
919# CONFIG_SOUND is not set 992# CONFIG_SOUND is not set
920 993
921# 994#
995# HID Devices
996#
997CONFIG_HID=y
998
999#
922# USB support 1000# USB support
923# 1001#
924CONFIG_USB_ARCH_HAS_HCD=y 1002CONFIG_USB_ARCH_HAS_HCD=y
@@ -933,6 +1011,7 @@ CONFIG_USB=y
933CONFIG_USB_DEVICEFS=y 1011CONFIG_USB_DEVICEFS=y
934# CONFIG_USB_BANDWIDTH is not set 1012# CONFIG_USB_BANDWIDTH is not set
935# CONFIG_USB_DYNAMIC_MINORS is not set 1013# CONFIG_USB_DYNAMIC_MINORS is not set
1014# CONFIG_USB_MULTITHREAD_PROBE is not set
936# CONFIG_USB_OTG is not set 1015# CONFIG_USB_OTG is not set
937 1016
938# 1017#
@@ -972,6 +1051,7 @@ CONFIG_USB_STORAGE=y
972# CONFIG_USB_STORAGE_SDDR55 is not set 1051# CONFIG_USB_STORAGE_SDDR55 is not set
973# CONFIG_USB_STORAGE_JUMPSHOT is not set 1052# CONFIG_USB_STORAGE_JUMPSHOT is not set
974# CONFIG_USB_STORAGE_ALAUDA is not set 1053# CONFIG_USB_STORAGE_ALAUDA is not set
1054# CONFIG_USB_STORAGE_KARMA is not set
975# CONFIG_USB_LIBUSUAL is not set 1055# CONFIG_USB_LIBUSUAL is not set
976 1056
977# 1057#
@@ -1010,6 +1090,7 @@ CONFIG_USB_STORAGE=y
1010# CONFIG_USB_KAWETH is not set 1090# CONFIG_USB_KAWETH is not set
1011# CONFIG_USB_PEGASUS is not set 1091# CONFIG_USB_PEGASUS is not set
1012# CONFIG_USB_RTL8150 is not set 1092# CONFIG_USB_RTL8150 is not set
1093# CONFIG_USB_USBNET_MII is not set
1013# CONFIG_USB_USBNET is not set 1094# CONFIG_USB_USBNET is not set
1014CONFIG_USB_MON=y 1095CONFIG_USB_MON=y
1015 1096
@@ -1027,6 +1108,7 @@ CONFIG_USB_MON=y
1027# 1108#
1028# CONFIG_USB_EMI62 is not set 1109# CONFIG_USB_EMI62 is not set
1029# CONFIG_USB_EMI26 is not set 1110# CONFIG_USB_EMI26 is not set
1111# CONFIG_USB_ADUTUX is not set
1030# CONFIG_USB_AUERSWALD is not set 1112# CONFIG_USB_AUERSWALD is not set
1031# CONFIG_USB_RIO500 is not set 1113# CONFIG_USB_RIO500 is not set
1032# CONFIG_USB_LEGOTOWER is not set 1114# CONFIG_USB_LEGOTOWER is not set
@@ -1034,12 +1116,13 @@ CONFIG_USB_MON=y
1034# CONFIG_USB_LED is not set 1116# CONFIG_USB_LED is not set
1035# CONFIG_USB_CYPRESS_CY7C63 is not set 1117# CONFIG_USB_CYPRESS_CY7C63 is not set
1036# CONFIG_USB_CYTHERM is not set 1118# CONFIG_USB_CYTHERM is not set
1037# CONFIG_USB_PHIDGETKIT is not set 1119# CONFIG_USB_PHIDGET is not set
1038# CONFIG_USB_PHIDGETSERVO is not set
1039# CONFIG_USB_IDMOUSE is not set 1120# CONFIG_USB_IDMOUSE is not set
1121# CONFIG_USB_FTDI_ELAN is not set
1040# CONFIG_USB_APPLEDISPLAY is not set 1122# CONFIG_USB_APPLEDISPLAY is not set
1041# CONFIG_USB_SISUSBVGA is not set 1123# CONFIG_USB_SISUSBVGA is not set
1042# CONFIG_USB_LD is not set 1124# CONFIG_USB_LD is not set
1125# CONFIG_USB_TRANCEVIBRATOR is not set
1043# CONFIG_USB_TEST is not set 1126# CONFIG_USB_TEST is not set
1044 1127
1045# 1128#
@@ -1067,6 +1150,7 @@ CONFIG_USB_ETH_RNDIS=y
1067# CONFIG_USB_GADGETFS is not set 1150# CONFIG_USB_GADGETFS is not set
1068# CONFIG_USB_FILE_STORAGE is not set 1151# CONFIG_USB_FILE_STORAGE is not set
1069# CONFIG_USB_G_SERIAL is not set 1152# CONFIG_USB_G_SERIAL is not set
1153# CONFIG_USB_MIDI_GADGET is not set
1070 1154
1071# 1155#
1072# MMC/SD Card support 1156# MMC/SD Card support
@@ -1102,6 +1186,7 @@ CONFIG_RTC_LIB=y
1102CONFIG_RTC_CLASS=y 1186CONFIG_RTC_CLASS=y
1103CONFIG_RTC_HCTOSYS=y 1187CONFIG_RTC_HCTOSYS=y
1104CONFIG_RTC_HCTOSYS_DEVICE="rtc0" 1188CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1189# CONFIG_RTC_DEBUG is not set
1105 1190
1106# 1191#
1107# RTC interfaces 1192# RTC interfaces
@@ -1145,6 +1230,10 @@ CONFIG_NET_DMA=y
1145CONFIG_INTEL_IOATDMA=y 1230CONFIG_INTEL_IOATDMA=y
1146 1231
1147# 1232#
1233# Virtualization
1234#
1235
1236#
1148# File systems 1237# File systems
1149# 1238#
1150CONFIG_EXT2_FS=y 1239CONFIG_EXT2_FS=y
@@ -1154,6 +1243,7 @@ CONFIG_EXT3_FS=y
1154CONFIG_EXT3_FS_XATTR=y 1243CONFIG_EXT3_FS_XATTR=y
1155# CONFIG_EXT3_FS_POSIX_ACL is not set 1244# CONFIG_EXT3_FS_POSIX_ACL is not set
1156# CONFIG_EXT3_FS_SECURITY is not set 1245# CONFIG_EXT3_FS_SECURITY is not set
1246# CONFIG_EXT4DEV_FS is not set
1157CONFIG_JBD=y 1247CONFIG_JBD=y
1158# CONFIG_JBD_DEBUG is not set 1248# CONFIG_JBD_DEBUG is not set
1159CONFIG_FS_MBCACHE=y 1249CONFIG_FS_MBCACHE=y
@@ -1161,6 +1251,7 @@ CONFIG_FS_MBCACHE=y
1161# CONFIG_JFS_FS is not set 1251# CONFIG_JFS_FS is not set
1162# CONFIG_FS_POSIX_ACL is not set 1252# CONFIG_FS_POSIX_ACL is not set
1163# CONFIG_XFS_FS is not set 1253# CONFIG_XFS_FS is not set
1254# CONFIG_GFS2_FS is not set
1164# CONFIG_OCFS2_FS is not set 1255# CONFIG_OCFS2_FS is not set
1165# CONFIG_MINIX_FS is not set 1256# CONFIG_MINIX_FS is not set
1166# CONFIG_ROMFS_FS is not set 1257# CONFIG_ROMFS_FS is not set
@@ -1190,8 +1281,10 @@ CONFIG_DNOTIFY=y
1190# 1281#
1191CONFIG_PROC_FS=y 1282CONFIG_PROC_FS=y
1192CONFIG_PROC_KCORE=y 1283CONFIG_PROC_KCORE=y
1284CONFIG_PROC_SYSCTL=y
1193CONFIG_SYSFS=y 1285CONFIG_SYSFS=y
1194CONFIG_TMPFS=y 1286CONFIG_TMPFS=y
1287# CONFIG_TMPFS_POSIX_ACL is not set
1195# CONFIG_HUGETLB_PAGE is not set 1288# CONFIG_HUGETLB_PAGE is not set
1196CONFIG_RAMFS=y 1289CONFIG_RAMFS=y
1197# CONFIG_CONFIGFS_FS is not set 1290# CONFIG_CONFIGFS_FS is not set
@@ -1206,7 +1299,6 @@ CONFIG_RAMFS=y
1206# CONFIG_BEFS_FS is not set 1299# CONFIG_BEFS_FS is not set
1207# CONFIG_BFS_FS is not set 1300# CONFIG_BFS_FS is not set
1208# CONFIG_EFS_FS is not set 1301# CONFIG_EFS_FS is not set
1209# CONFIG_JFFS_FS is not set
1210# CONFIG_JFFS2_FS is not set 1302# CONFIG_JFFS2_FS is not set
1211# CONFIG_CRAMFS is not set 1303# CONFIG_CRAMFS is not set
1212# CONFIG_VXFS_FS is not set 1304# CONFIG_VXFS_FS is not set
@@ -1249,6 +1341,10 @@ CONFIG_PARTITION_ADVANCED=y
1249# CONFIG_ATARI_PARTITION is not set 1341# CONFIG_ATARI_PARTITION is not set
1250# CONFIG_MAC_PARTITION is not set 1342# CONFIG_MAC_PARTITION is not set
1251CONFIG_MSDOS_PARTITION=y 1343CONFIG_MSDOS_PARTITION=y
1344# CONFIG_BSD_DISKLABEL is not set
1345# CONFIG_MINIX_SUBPARTITION is not set
1346# CONFIG_SOLARIS_X86_PARTITION is not set
1347# CONFIG_UNIXWARE_DISKLABEL is not set
1252# CONFIG_LDM_PARTITION is not set 1348# CONFIG_LDM_PARTITION is not set
1253# CONFIG_SGI_PARTITION is not set 1349# CONFIG_SGI_PARTITION is not set
1254# CONFIG_ULTRIX_PARTITION is not set 1350# CONFIG_ULTRIX_PARTITION is not set
@@ -1262,13 +1358,20 @@ CONFIG_MSDOS_PARTITION=y
1262# CONFIG_NLS is not set 1358# CONFIG_NLS is not set
1263 1359
1264# 1360#
1361# Distributed Lock Manager
1362#
1363# CONFIG_DLM is not set
1364
1365#
1265# Library routines 1366# Library routines
1266# 1367#
1368CONFIG_BITREVERSE=y
1267# CONFIG_CRC_CCITT is not set 1369# CONFIG_CRC_CCITT is not set
1268# CONFIG_CRC16 is not set 1370# CONFIG_CRC16 is not set
1269CONFIG_CRC32=y 1371CONFIG_CRC32=y
1270# CONFIG_LIBCRC32C is not set 1372# CONFIG_LIBCRC32C is not set
1271CONFIG_PLIST=y 1373CONFIG_PLIST=y
1374CONFIG_IOMAP_COPY=y
1272 1375
1273# 1376#
1274# Instrumentation Support 1377# Instrumentation Support
@@ -1279,8 +1382,11 @@ CONFIG_PLIST=y
1279# Kernel hacking 1382# Kernel hacking
1280# 1383#
1281# CONFIG_PRINTK_TIME is not set 1384# CONFIG_PRINTK_TIME is not set
1385CONFIG_ENABLE_MUST_CHECK=y
1282# CONFIG_MAGIC_SYSRQ is not set 1386# CONFIG_MAGIC_SYSRQ is not set
1283# CONFIG_UNUSED_SYMBOLS is not set 1387# CONFIG_UNUSED_SYMBOLS is not set
1388# CONFIG_DEBUG_FS is not set
1389# CONFIG_HEADERS_CHECK is not set
1284CONFIG_DEBUG_KERNEL=y 1390CONFIG_DEBUG_KERNEL=y
1285CONFIG_LOG_BUF_SHIFT=14 1391CONFIG_LOG_BUF_SHIFT=14
1286CONFIG_DETECT_SOFTLOCKUP=y 1392CONFIG_DETECT_SOFTLOCKUP=y
@@ -1294,9 +1400,10 @@ CONFIG_DETECT_SOFTLOCKUP=y
1294# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1400# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1295# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1401# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1296# CONFIG_DEBUG_KOBJECT is not set 1402# CONFIG_DEBUG_KOBJECT is not set
1403# CONFIG_DEBUG_BUGVERBOSE is not set
1297# CONFIG_DEBUG_INFO is not set 1404# CONFIG_DEBUG_INFO is not set
1298# CONFIG_DEBUG_FS is not set
1299# CONFIG_DEBUG_VM is not set 1405# CONFIG_DEBUG_VM is not set
1406# CONFIG_DEBUG_LIST is not set
1300CONFIG_FORCED_INLINING=y 1407CONFIG_FORCED_INLINING=y
1301# CONFIG_RCU_TORTURE_TEST is not set 1408# CONFIG_RCU_TORTURE_TEST is not set
1302# CONFIG_DEBUGGER is not set 1409# CONFIG_DEBUGGER is not set
@@ -1316,8 +1423,10 @@ CONFIG_FORCED_INLINING=y
1316# 1423#
1317CONFIG_CRYPTO=y 1424CONFIG_CRYPTO=y
1318CONFIG_CRYPTO_ALGAPI=y 1425CONFIG_CRYPTO_ALGAPI=y
1319# CONFIG_CRYPTO_MANAGER is not set 1426CONFIG_CRYPTO_BLKCIPHER=y
1427CONFIG_CRYPTO_MANAGER=y
1320# CONFIG_CRYPTO_HMAC is not set 1428# CONFIG_CRYPTO_HMAC is not set
1429# CONFIG_CRYPTO_XCBC is not set
1321# CONFIG_CRYPTO_NULL is not set 1430# CONFIG_CRYPTO_NULL is not set
1322# CONFIG_CRYPTO_MD4 is not set 1431# CONFIG_CRYPTO_MD4 is not set
1323CONFIG_CRYPTO_MD5=y 1432CONFIG_CRYPTO_MD5=y
@@ -1326,8 +1435,10 @@ CONFIG_CRYPTO_MD5=y
1326# CONFIG_CRYPTO_SHA512 is not set 1435# CONFIG_CRYPTO_SHA512 is not set
1327# CONFIG_CRYPTO_WP512 is not set 1436# CONFIG_CRYPTO_WP512 is not set
1328# CONFIG_CRYPTO_TGR192 is not set 1437# CONFIG_CRYPTO_TGR192 is not set
1438# CONFIG_CRYPTO_GF128MUL is not set
1329# CONFIG_CRYPTO_ECB is not set 1439# CONFIG_CRYPTO_ECB is not set
1330# CONFIG_CRYPTO_CBC is not set 1440CONFIG_CRYPTO_CBC=y
1441# CONFIG_CRYPTO_LRW is not set
1331CONFIG_CRYPTO_DES=y 1442CONFIG_CRYPTO_DES=y
1332# CONFIG_CRYPTO_BLOWFISH is not set 1443# CONFIG_CRYPTO_BLOWFISH is not set
1333# CONFIG_CRYPTO_TWOFISH is not set 1444# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/configs/mpc834x_mds_defconfig b/arch/powerpc/configs/mpc834x_mds_defconfig
index 9eefab967898..c24db58be457 100644
--- a/arch/powerpc/configs/mpc834x_mds_defconfig
+++ b/arch/powerpc/configs/mpc834x_mds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:28:54 2006 4# Mon Jan 22 22:24:10 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32CONFIG_PPC_83xx=y 34CONFIG_PPC_83xx=y
33# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -39,6 +41,8 @@ CONFIG_PPC_83xx=y
39CONFIG_6xx=y 41CONFIG_6xx=y
40CONFIG_83xx=y 42CONFIG_83xx=y
41CONFIG_PPC_FPU=y 43CONFIG_PPC_FPU=y
44# CONFIG_PPC_DCR_NATIVE is not set
45# CONFIG_PPC_DCR_MMIO is not set
42CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
43CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
44# CONFIG_SMP is not set 48# CONFIG_SMP is not set
@@ -58,28 +62,32 @@ CONFIG_LOCALVERSION=""
58CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
70CONFIG_EMBEDDED=y 77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
71# CONFIG_KALLSYMS is not set 79# CONFIG_KALLSYMS is not set
72CONFIG_HOTPLUG=y 80CONFIG_HOTPLUG=y
73CONFIG_PRINTK=y 81CONFIG_PRINTK=y
74CONFIG_BUG=y 82CONFIG_BUG=y
75CONFIG_ELF_CORE=y 83CONFIG_ELF_CORE=y
76CONFIG_BASE_FULL=y 84CONFIG_BASE_FULL=y
77CONFIG_RT_MUTEXES=y
78CONFIG_FUTEX=y 85CONFIG_FUTEX=y
79# CONFIG_EPOLL is not set 86# CONFIG_EPOLL is not set
80CONFIG_SHMEM=y 87CONFIG_SHMEM=y
81CONFIG_SLAB=y 88CONFIG_SLAB=y
82CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_RT_MUTEXES=y
83# CONFIG_TINY_SHMEM is not set 91# CONFIG_TINY_SHMEM is not set
84CONFIG_BASE_SMALL=0 92CONFIG_BASE_SMALL=0
85# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
@@ -97,6 +105,7 @@ CONFIG_MODULE_UNLOAD=y
97# 105#
98# Block layer 106# Block layer
99# 107#
108CONFIG_BLOCK=y
100# CONFIG_LBD is not set 109# CONFIG_LBD is not set
101# CONFIG_BLK_DEV_IO_TRACE is not set 110# CONFIG_BLK_DEV_IO_TRACE is not set
102# CONFIG_LSF is not set 111# CONFIG_LSF is not set
@@ -119,8 +128,10 @@ CONFIG_PPC_GEN550=y
119# 128#
120# Platform support 129# Platform support
121# 130#
131# CONFIG_MPC832x_MDS is not set
122CONFIG_MPC834x_SYS=y 132CONFIG_MPC834x_SYS=y
123# CONFIG_MPC834x_ITX is not set 133# CONFIG_MPC834x_ITX is not set
134# CONFIG_MPC8360E_PB is not set
124CONFIG_MPC834x=y 135CONFIG_MPC834x=y
125# CONFIG_MPIC is not set 136# CONFIG_MPIC is not set
126 137
@@ -130,6 +141,7 @@ CONFIG_MPC834x=y
130# CONFIG_HIGHMEM is not set 141# CONFIG_HIGHMEM is not set
131# CONFIG_HZ_100 is not set 142# CONFIG_HZ_100 is not set
132CONFIG_HZ_250=y 143CONFIG_HZ_250=y
144# CONFIG_HZ_300 is not set
133# CONFIG_HZ_1000 is not set 145# CONFIG_HZ_1000 is not set
134CONFIG_HZ=250 146CONFIG_HZ=250
135CONFIG_PREEMPT_NONE=y 147CONFIG_PREEMPT_NONE=y
@@ -137,8 +149,10 @@ CONFIG_PREEMPT_NONE=y
137# CONFIG_PREEMPT is not set 149# CONFIG_PREEMPT is not set
138CONFIG_BINFMT_ELF=y 150CONFIG_BINFMT_ELF=y
139# CONFIG_BINFMT_MISC is not set 151# CONFIG_BINFMT_MISC is not set
152CONFIG_MATH_EMULATION=y
140CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 153CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
141CONFIG_ARCH_FLATMEM_ENABLE=y 154CONFIG_ARCH_FLATMEM_ENABLE=y
155CONFIG_ARCH_POPULATES_NODE_MAP=y
142CONFIG_SELECT_MEMORY_MODEL=y 156CONFIG_SELECT_MEMORY_MODEL=y
143CONFIG_FLATMEM_MANUAL=y 157CONFIG_FLATMEM_MANUAL=y
144# CONFIG_DISCONTIGMEM_MANUAL is not set 158# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -204,6 +218,7 @@ CONFIG_PACKET=y
204CONFIG_UNIX=y 218CONFIG_UNIX=y
205CONFIG_XFRM=y 219CONFIG_XFRM=y
206CONFIG_XFRM_USER=m 220CONFIG_XFRM_USER=m
221# CONFIG_XFRM_SUB_POLICY is not set
207# CONFIG_NET_KEY is not set 222# CONFIG_NET_KEY is not set
208CONFIG_INET=y 223CONFIG_INET=y
209CONFIG_IP_MULTICAST=y 224CONFIG_IP_MULTICAST=y
@@ -225,10 +240,13 @@ CONFIG_SYN_COOKIES=y
225# CONFIG_INET_TUNNEL is not set 240# CONFIG_INET_TUNNEL is not set
226CONFIG_INET_XFRM_MODE_TRANSPORT=y 241CONFIG_INET_XFRM_MODE_TRANSPORT=y
227CONFIG_INET_XFRM_MODE_TUNNEL=y 242CONFIG_INET_XFRM_MODE_TUNNEL=y
243CONFIG_INET_XFRM_MODE_BEET=y
228CONFIG_INET_DIAG=y 244CONFIG_INET_DIAG=y
229CONFIG_INET_TCP_DIAG=y 245CONFIG_INET_TCP_DIAG=y
230# CONFIG_TCP_CONG_ADVANCED is not set 246# CONFIG_TCP_CONG_ADVANCED is not set
231CONFIG_TCP_CONG_BIC=y 247CONFIG_TCP_CONG_CUBIC=y
248CONFIG_DEFAULT_TCP_CONG="cubic"
249# CONFIG_TCP_MD5SIG is not set
232# CONFIG_IPV6 is not set 250# CONFIG_IPV6 is not set
233# CONFIG_INET6_XFRM_TUNNEL is not set 251# CONFIG_INET6_XFRM_TUNNEL is not set
234# CONFIG_INET6_TUNNEL is not set 252# CONFIG_INET6_TUNNEL is not set
@@ -258,7 +276,6 @@ CONFIG_TCP_CONG_BIC=y
258# CONFIG_ATALK is not set 276# CONFIG_ATALK is not set
259# CONFIG_X25 is not set 277# CONFIG_X25 is not set
260# CONFIG_LAPB is not set 278# CONFIG_LAPB is not set
261# CONFIG_NET_DIVERT is not set
262# CONFIG_ECONET is not set 279# CONFIG_ECONET is not set
263# CONFIG_WAN_ROUTER is not set 280# CONFIG_WAN_ROUTER is not set
264 281
@@ -329,6 +346,12 @@ CONFIG_BLK_DEV_INITRD=y
329# CONFIG_ATA_OVER_ETH is not set 346# CONFIG_ATA_OVER_ETH is not set
330 347
331# 348#
349# Misc devices
350#
351# CONFIG_SGI_IOC4 is not set
352# CONFIG_TIFM_CORE is not set
353
354#
332# ATA/ATAPI/MFM/RLL support 355# ATA/ATAPI/MFM/RLL support
333# 356#
334# CONFIG_IDE is not set 357# CONFIG_IDE is not set
@@ -338,6 +361,12 @@ CONFIG_BLK_DEV_INITRD=y
338# 361#
339# CONFIG_RAID_ATTRS is not set 362# CONFIG_RAID_ATTRS is not set
340# CONFIG_SCSI is not set 363# CONFIG_SCSI is not set
364# CONFIG_SCSI_NETLINK is not set
365
366#
367# Serial ATA (prod) and Parallel ATA (experimental) drivers
368#
369# CONFIG_ATA is not set
341 370
342# 371#
343# Multi-device support (RAID and LVM) 372# Multi-device support (RAID and LVM)
@@ -362,6 +391,7 @@ CONFIG_BLK_DEV_INITRD=y
362# 391#
363# Macintosh device drivers 392# Macintosh device drivers
364# 393#
394# CONFIG_MAC_EMUMOUSEBTN is not set
365# CONFIG_WINDFARM is not set 395# CONFIG_WINDFARM is not set
366 396
367# 397#
@@ -393,6 +423,7 @@ CONFIG_MARVELL_PHY=y
393# CONFIG_CICADA_PHY is not set 423# CONFIG_CICADA_PHY is not set
394# CONFIG_VITESSE_PHY is not set 424# CONFIG_VITESSE_PHY is not set
395# CONFIG_SMSC_PHY is not set 425# CONFIG_SMSC_PHY is not set
426# CONFIG_BROADCOM_PHY is not set
396# CONFIG_FIXED_PHY is not set 427# CONFIG_FIXED_PHY is not set
397 428
398# 429#
@@ -449,6 +480,7 @@ CONFIG_E100=y
449# CONFIG_BNX2 is not set 480# CONFIG_BNX2 is not set
450CONFIG_GIANFAR=y 481CONFIG_GIANFAR=y
451# CONFIG_GFAR_NAPI is not set 482# CONFIG_GFAR_NAPI is not set
483# CONFIG_QLA3XXX is not set
452 484
453# 485#
454# Ethernet (10000 Mbit) 486# Ethernet (10000 Mbit)
@@ -457,6 +489,7 @@ CONFIG_GIANFAR=y
457# CONFIG_IXGB is not set 489# CONFIG_IXGB is not set
458# CONFIG_S2IO is not set 490# CONFIG_S2IO is not set
459# CONFIG_MYRI10GE is not set 491# CONFIG_MYRI10GE is not set
492# CONFIG_NETXEN_NIC is not set
460 493
461# 494#
462# Token Ring devices 495# Token Ring devices
@@ -495,6 +528,7 @@ CONFIG_GIANFAR=y
495# Input device support 528# Input device support
496# 529#
497CONFIG_INPUT=y 530CONFIG_INPUT=y
531# CONFIG_INPUT_FF_MEMLESS is not set
498 532
499# 533#
500# Userland interfaces 534# Userland interfaces
@@ -539,6 +573,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
539# 573#
540# Non-8250 serial port support 574# Non-8250 serial port support
541# 575#
576# CONFIG_SERIAL_UARTLITE is not set
542CONFIG_SERIAL_CORE=y 577CONFIG_SERIAL_CORE=y
543CONFIG_SERIAL_CORE_CONSOLE=y 578CONFIG_SERIAL_CORE_CONSOLE=y
544# CONFIG_SERIAL_JSM is not set 579# CONFIG_SERIAL_JSM is not set
@@ -575,10 +610,6 @@ CONFIG_GEN_RTC=y
575# CONFIG_DTLK is not set 610# CONFIG_DTLK is not set
576# CONFIG_R3964 is not set 611# CONFIG_R3964 is not set
577# CONFIG_APPLICOM is not set 612# CONFIG_APPLICOM is not set
578
579#
580# Ftape, the floppy tape device driver
581#
582# CONFIG_AGP is not set 613# CONFIG_AGP is not set
583# CONFIG_DRM is not set 614# CONFIG_DRM is not set
584# CONFIG_RAW_DRIVER is not set 615# CONFIG_RAW_DRIVER is not set
@@ -587,7 +618,6 @@ CONFIG_GEN_RTC=y
587# TPM devices 618# TPM devices
588# 619#
589# CONFIG_TCG_TPM is not set 620# CONFIG_TCG_TPM is not set
590# CONFIG_TELCLOCK is not set
591 621
592# 622#
593# I2C support 623# I2C support
@@ -653,6 +683,7 @@ CONFIG_I2C_MPC=y
653# 683#
654# Dallas's 1-wire bus 684# Dallas's 1-wire bus
655# 685#
686# CONFIG_W1 is not set
656 687
657# 688#
658# Hardware Monitoring support 689# Hardware Monitoring support
@@ -686,29 +717,27 @@ CONFIG_HWMON=y
686# CONFIG_SENSORS_LM92 is not set 717# CONFIG_SENSORS_LM92 is not set
687# CONFIG_SENSORS_MAX1619 is not set 718# CONFIG_SENSORS_MAX1619 is not set
688# CONFIG_SENSORS_PC87360 is not set 719# CONFIG_SENSORS_PC87360 is not set
720# CONFIG_SENSORS_PC87427 is not set
689# CONFIG_SENSORS_SIS5595 is not set 721# CONFIG_SENSORS_SIS5595 is not set
690# CONFIG_SENSORS_SMSC47M1 is not set 722# CONFIG_SENSORS_SMSC47M1 is not set
691# CONFIG_SENSORS_SMSC47M192 is not set 723# CONFIG_SENSORS_SMSC47M192 is not set
692# CONFIG_SENSORS_SMSC47B397 is not set 724# CONFIG_SENSORS_SMSC47B397 is not set
693# CONFIG_SENSORS_VIA686A is not set 725# CONFIG_SENSORS_VIA686A is not set
726# CONFIG_SENSORS_VT1211 is not set
694# CONFIG_SENSORS_VT8231 is not set 727# CONFIG_SENSORS_VT8231 is not set
695# CONFIG_SENSORS_W83781D is not set 728# CONFIG_SENSORS_W83781D is not set
696# CONFIG_SENSORS_W83791D is not set 729# CONFIG_SENSORS_W83791D is not set
697# CONFIG_SENSORS_W83792D is not set 730# CONFIG_SENSORS_W83792D is not set
731# CONFIG_SENSORS_W83793 is not set
698# CONFIG_SENSORS_W83L785TS is not set 732# CONFIG_SENSORS_W83L785TS is not set
699# CONFIG_SENSORS_W83627HF is not set 733# CONFIG_SENSORS_W83627HF is not set
700# CONFIG_SENSORS_W83627EHF is not set 734# CONFIG_SENSORS_W83627EHF is not set
701# CONFIG_HWMON_DEBUG_CHIP is not set 735# CONFIG_HWMON_DEBUG_CHIP is not set
702 736
703# 737#
704# Misc devices
705#
706
707#
708# Multimedia devices 738# Multimedia devices
709# 739#
710# CONFIG_VIDEO_DEV is not set 740# CONFIG_VIDEO_DEV is not set
711CONFIG_VIDEO_V4L2=y
712 741
713# 742#
714# Digital Video Broadcasting Devices 743# Digital Video Broadcasting Devices
@@ -720,6 +749,7 @@ CONFIG_VIDEO_V4L2=y
720# 749#
721CONFIG_FIRMWARE_EDID=y 750CONFIG_FIRMWARE_EDID=y
722# CONFIG_FB is not set 751# CONFIG_FB is not set
752# CONFIG_FB_IBM_GXT4500 is not set
723# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 753# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
724 754
725# 755#
@@ -728,6 +758,11 @@ CONFIG_FIRMWARE_EDID=y
728# CONFIG_SOUND is not set 758# CONFIG_SOUND is not set
729 759
730# 760#
761# HID Devices
762#
763CONFIG_HID=y
764
765#
731# USB support 766# USB support
732# 767#
733CONFIG_USB_ARCH_HAS_HCD=y 768CONFIG_USB_ARCH_HAS_HCD=y
@@ -790,6 +825,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
790# 825#
791 826
792# 827#
828# Virtualization
829#
830
831#
793# File systems 832# File systems
794# 833#
795CONFIG_EXT2_FS=y 834CONFIG_EXT2_FS=y
@@ -799,6 +838,7 @@ CONFIG_EXT3_FS=y
799CONFIG_EXT3_FS_XATTR=y 838CONFIG_EXT3_FS_XATTR=y
800# CONFIG_EXT3_FS_POSIX_ACL is not set 839# CONFIG_EXT3_FS_POSIX_ACL is not set
801# CONFIG_EXT3_FS_SECURITY is not set 840# CONFIG_EXT3_FS_SECURITY is not set
841# CONFIG_EXT4DEV_FS is not set
802CONFIG_JBD=y 842CONFIG_JBD=y
803# CONFIG_JBD_DEBUG is not set 843# CONFIG_JBD_DEBUG is not set
804CONFIG_FS_MBCACHE=y 844CONFIG_FS_MBCACHE=y
@@ -806,6 +846,7 @@ CONFIG_FS_MBCACHE=y
806# CONFIG_JFS_FS is not set 846# CONFIG_JFS_FS is not set
807# CONFIG_FS_POSIX_ACL is not set 847# CONFIG_FS_POSIX_ACL is not set
808# CONFIG_XFS_FS is not set 848# CONFIG_XFS_FS is not set
849# CONFIG_GFS2_FS is not set
809# CONFIG_OCFS2_FS is not set 850# CONFIG_OCFS2_FS is not set
810# CONFIG_MINIX_FS is not set 851# CONFIG_MINIX_FS is not set
811# CONFIG_ROMFS_FS is not set 852# CONFIG_ROMFS_FS is not set
@@ -835,8 +876,10 @@ CONFIG_DNOTIFY=y
835# 876#
836CONFIG_PROC_FS=y 877CONFIG_PROC_FS=y
837CONFIG_PROC_KCORE=y 878CONFIG_PROC_KCORE=y
879CONFIG_PROC_SYSCTL=y
838CONFIG_SYSFS=y 880CONFIG_SYSFS=y
839CONFIG_TMPFS=y 881CONFIG_TMPFS=y
882# CONFIG_TMPFS_POSIX_ACL is not set
840# CONFIG_HUGETLB_PAGE is not set 883# CONFIG_HUGETLB_PAGE is not set
841CONFIG_RAMFS=y 884CONFIG_RAMFS=y
842# CONFIG_CONFIGFS_FS is not set 885# CONFIG_CONFIGFS_FS is not set
@@ -905,13 +948,20 @@ CONFIG_PARTITION_ADVANCED=y
905# CONFIG_NLS is not set 948# CONFIG_NLS is not set
906 949
907# 950#
951# Distributed Lock Manager
952#
953# CONFIG_DLM is not set
954
955#
908# Library routines 956# Library routines
909# 957#
958CONFIG_BITREVERSE=y
910# CONFIG_CRC_CCITT is not set 959# CONFIG_CRC_CCITT is not set
911# CONFIG_CRC16 is not set 960# CONFIG_CRC16 is not set
912CONFIG_CRC32=y 961CONFIG_CRC32=y
913# CONFIG_LIBCRC32C is not set 962# CONFIG_LIBCRC32C is not set
914CONFIG_PLIST=y 963CONFIG_PLIST=y
964CONFIG_IOMAP_COPY=y
915 965
916# 966#
917# Instrumentation Support 967# Instrumentation Support
@@ -922,11 +972,14 @@ CONFIG_PLIST=y
922# Kernel hacking 972# Kernel hacking
923# 973#
924# CONFIG_PRINTK_TIME is not set 974# CONFIG_PRINTK_TIME is not set
975CONFIG_ENABLE_MUST_CHECK=y
925# CONFIG_MAGIC_SYSRQ is not set 976# CONFIG_MAGIC_SYSRQ is not set
926# CONFIG_UNUSED_SYMBOLS is not set 977# CONFIG_UNUSED_SYMBOLS is not set
978# CONFIG_DEBUG_FS is not set
979# CONFIG_HEADERS_CHECK is not set
927# CONFIG_DEBUG_KERNEL is not set 980# CONFIG_DEBUG_KERNEL is not set
928CONFIG_LOG_BUF_SHIFT=14 981CONFIG_LOG_BUF_SHIFT=14
929# CONFIG_DEBUG_FS is not set 982# CONFIG_DEBUG_BUGVERBOSE is not set
930# CONFIG_BOOTX_TEXT is not set 983# CONFIG_BOOTX_TEXT is not set
931# CONFIG_SERIAL_TEXT_DEBUG is not set 984# CONFIG_SERIAL_TEXT_DEBUG is not set
932# CONFIG_PPC_EARLY_DEBUG is not set 985# CONFIG_PPC_EARLY_DEBUG is not set
@@ -941,7 +994,11 @@ CONFIG_LOG_BUF_SHIFT=14
941# Cryptographic options 994# Cryptographic options
942# 995#
943CONFIG_CRYPTO=y 996CONFIG_CRYPTO=y
997CONFIG_CRYPTO_ALGAPI=y
998CONFIG_CRYPTO_BLKCIPHER=y
999CONFIG_CRYPTO_MANAGER=y
944# CONFIG_CRYPTO_HMAC is not set 1000# CONFIG_CRYPTO_HMAC is not set
1001# CONFIG_CRYPTO_XCBC is not set
945# CONFIG_CRYPTO_NULL is not set 1002# CONFIG_CRYPTO_NULL is not set
946# CONFIG_CRYPTO_MD4 is not set 1003# CONFIG_CRYPTO_MD4 is not set
947CONFIG_CRYPTO_MD5=y 1004CONFIG_CRYPTO_MD5=y
@@ -950,6 +1007,10 @@ CONFIG_CRYPTO_MD5=y
950# CONFIG_CRYPTO_SHA512 is not set 1007# CONFIG_CRYPTO_SHA512 is not set
951# CONFIG_CRYPTO_WP512 is not set 1008# CONFIG_CRYPTO_WP512 is not set
952# CONFIG_CRYPTO_TGR192 is not set 1009# CONFIG_CRYPTO_TGR192 is not set
1010# CONFIG_CRYPTO_GF128MUL is not set
1011CONFIG_CRYPTO_ECB=m
1012CONFIG_CRYPTO_CBC=y
1013# CONFIG_CRYPTO_LRW is not set
953CONFIG_CRYPTO_DES=y 1014CONFIG_CRYPTO_DES=y
954# CONFIG_CRYPTO_BLOWFISH is not set 1015# CONFIG_CRYPTO_BLOWFISH is not set
955# CONFIG_CRYPTO_TWOFISH is not set 1016# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/configs/mpc8360emds_defconfig b/arch/powerpc/configs/mpc8360emds_defconfig
index c0703415d608..58e6795dbfe5 100644
--- a/arch/powerpc/configs/mpc8360emds_defconfig
+++ b/arch/powerpc/configs/mpc8360emds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.20-rc5
4# Thu Sep 21 18:14:27 2006 4# Mon Jan 22 22:24:40 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,13 +23,13 @@ CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
24CONFIG_AUDIT_ARCH=y 25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
25CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
26 28
27# 29#
28# Processor support 30# Processor support
29# 31#
30# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
31# CONFIG_PPC_52xx is not set
32# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
33CONFIG_PPC_83xx=y 34CONFIG_PPC_83xx=y
34# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -40,6 +41,8 @@ CONFIG_PPC_83xx=y
40CONFIG_6xx=y 41CONFIG_6xx=y
41CONFIG_83xx=y 42CONFIG_83xx=y
42CONFIG_PPC_FPU=y 43CONFIG_PPC_FPU=y
44# CONFIG_PPC_DCR_NATIVE is not set
45# CONFIG_PPC_DCR_MMIO is not set
43CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
44CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
45# CONFIG_SMP is not set 48# CONFIG_SMP is not set
@@ -59,16 +62,20 @@ CONFIG_LOCALVERSION=""
59CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
60CONFIG_SWAP=y 63CONFIG_SWAP=y
61CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
62# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
63# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
64# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
70CONFIG_EMBEDDED=y
71CONFIG_SYSCTL=y 76CONFIG_SYSCTL=y
77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
72# CONFIG_KALLSYMS is not set 79# CONFIG_KALLSYMS is not set
73CONFIG_HOTPLUG=y 80CONFIG_HOTPLUG=y
74CONFIG_PRINTK=y 81CONFIG_PRINTK=y
@@ -98,6 +105,7 @@ CONFIG_MODULE_UNLOAD=y
98# 105#
99# Block layer 106# Block layer
100# 107#
108CONFIG_BLOCK=y
101# CONFIG_LBD is not set 109# CONFIG_LBD is not set
102# CONFIG_BLK_DEV_IO_TRACE is not set 110# CONFIG_BLK_DEV_IO_TRACE is not set
103# CONFIG_LSF is not set 111# CONFIG_LSF is not set
@@ -121,6 +129,7 @@ CONFIG_PPC_GEN550=y
121# 129#
122# Platform support 130# Platform support
123# 131#
132# CONFIG_MPC832x_MDS is not set
124# CONFIG_MPC834x_SYS is not set 133# CONFIG_MPC834x_SYS is not set
125# CONFIG_MPC834x_ITX is not set 134# CONFIG_MPC834x_ITX is not set
126CONFIG_MPC8360E_PB=y 135CONFIG_MPC8360E_PB=y
@@ -133,6 +142,7 @@ CONFIG_PPC_MPC836x=y
133# CONFIG_HIGHMEM is not set 142# CONFIG_HIGHMEM is not set
134# CONFIG_HZ_100 is not set 143# CONFIG_HZ_100 is not set
135CONFIG_HZ_250=y 144CONFIG_HZ_250=y
145# CONFIG_HZ_300 is not set
136# CONFIG_HZ_1000 is not set 146# CONFIG_HZ_1000 is not set
137CONFIG_HZ=250 147CONFIG_HZ=250
138CONFIG_PREEMPT_NONE=y 148CONFIG_PREEMPT_NONE=y
@@ -140,8 +150,10 @@ CONFIG_PREEMPT_NONE=y
140# CONFIG_PREEMPT is not set 150# CONFIG_PREEMPT is not set
141CONFIG_BINFMT_ELF=y 151CONFIG_BINFMT_ELF=y
142# CONFIG_BINFMT_MISC is not set 152# CONFIG_BINFMT_MISC is not set
153CONFIG_MATH_EMULATION=y
143CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 154CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
144CONFIG_ARCH_FLATMEM_ENABLE=y 155CONFIG_ARCH_FLATMEM_ENABLE=y
156CONFIG_ARCH_POPULATES_NODE_MAP=y
145CONFIG_SELECT_MEMORY_MODEL=y 157CONFIG_SELECT_MEMORY_MODEL=y
146CONFIG_FLATMEM_MANUAL=y 158CONFIG_FLATMEM_MANUAL=y
147# CONFIG_DISCONTIGMEM_MANUAL is not set 159# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -207,6 +219,7 @@ CONFIG_PACKET=y
207CONFIG_UNIX=y 219CONFIG_UNIX=y
208CONFIG_XFRM=y 220CONFIG_XFRM=y
209# CONFIG_XFRM_USER is not set 221# CONFIG_XFRM_USER is not set
222# CONFIG_XFRM_SUB_POLICY is not set
210# CONFIG_NET_KEY is not set 223# CONFIG_NET_KEY is not set
211CONFIG_INET=y 224CONFIG_INET=y
212CONFIG_IP_MULTICAST=y 225CONFIG_IP_MULTICAST=y
@@ -228,10 +241,13 @@ CONFIG_SYN_COOKIES=y
228# CONFIG_INET_TUNNEL is not set 241# CONFIG_INET_TUNNEL is not set
229CONFIG_INET_XFRM_MODE_TRANSPORT=y 242CONFIG_INET_XFRM_MODE_TRANSPORT=y
230CONFIG_INET_XFRM_MODE_TUNNEL=y 243CONFIG_INET_XFRM_MODE_TUNNEL=y
244CONFIG_INET_XFRM_MODE_BEET=y
231CONFIG_INET_DIAG=y 245CONFIG_INET_DIAG=y
232CONFIG_INET_TCP_DIAG=y 246CONFIG_INET_TCP_DIAG=y
233# CONFIG_TCP_CONG_ADVANCED is not set 247# CONFIG_TCP_CONG_ADVANCED is not set
234CONFIG_TCP_CONG_BIC=y 248CONFIG_TCP_CONG_CUBIC=y
249CONFIG_DEFAULT_TCP_CONG="cubic"
250# CONFIG_TCP_MD5SIG is not set
235# CONFIG_IPV6 is not set 251# CONFIG_IPV6 is not set
236# CONFIG_INET6_XFRM_TUNNEL is not set 252# CONFIG_INET6_XFRM_TUNNEL is not set
237# CONFIG_INET6_TUNNEL is not set 253# CONFIG_INET6_TUNNEL is not set
@@ -331,6 +347,12 @@ CONFIG_BLK_DEV_INITRD=y
331# CONFIG_ATA_OVER_ETH is not set 347# CONFIG_ATA_OVER_ETH is not set
332 348
333# 349#
350# Misc devices
351#
352# CONFIG_SGI_IOC4 is not set
353# CONFIG_TIFM_CORE is not set
354
355#
334# ATA/ATAPI/MFM/RLL support 356# ATA/ATAPI/MFM/RLL support
335# 357#
336# CONFIG_IDE is not set 358# CONFIG_IDE is not set
@@ -340,6 +362,8 @@ CONFIG_BLK_DEV_INITRD=y
340# 362#
341# CONFIG_RAID_ATTRS is not set 363# CONFIG_RAID_ATTRS is not set
342CONFIG_SCSI=y 364CONFIG_SCSI=y
365# CONFIG_SCSI_TGT is not set
366# CONFIG_SCSI_NETLINK is not set
343CONFIG_SCSI_PROC_FS=y 367CONFIG_SCSI_PROC_FS=y
344 368
345# 369#
@@ -358,14 +382,16 @@ CONFIG_SCSI_PROC_FS=y
358# CONFIG_SCSI_MULTI_LUN is not set 382# CONFIG_SCSI_MULTI_LUN is not set
359# CONFIG_SCSI_CONSTANTS is not set 383# CONFIG_SCSI_CONSTANTS is not set
360# CONFIG_SCSI_LOGGING is not set 384# CONFIG_SCSI_LOGGING is not set
385# CONFIG_SCSI_SCAN_ASYNC is not set
361 386
362# 387#
363# SCSI Transport Attributes 388# SCSI Transports
364# 389#
365# CONFIG_SCSI_SPI_ATTRS is not set 390# CONFIG_SCSI_SPI_ATTRS is not set
366# CONFIG_SCSI_FC_ATTRS is not set 391# CONFIG_SCSI_FC_ATTRS is not set
367# CONFIG_SCSI_ISCSI_ATTRS is not set 392# CONFIG_SCSI_ISCSI_ATTRS is not set
368# CONFIG_SCSI_SAS_ATTRS is not set 393# CONFIG_SCSI_SAS_ATTRS is not set
394# CONFIG_SCSI_SAS_LIBSAS is not set
369 395
370# 396#
371# SCSI low-level drivers 397# SCSI low-level drivers
@@ -378,11 +404,12 @@ CONFIG_SCSI_PROC_FS=y
378# CONFIG_SCSI_AIC7XXX is not set 404# CONFIG_SCSI_AIC7XXX is not set
379# CONFIG_SCSI_AIC7XXX_OLD is not set 405# CONFIG_SCSI_AIC7XXX_OLD is not set
380# CONFIG_SCSI_AIC79XX is not set 406# CONFIG_SCSI_AIC79XX is not set
407# CONFIG_SCSI_AIC94XX is not set
381# CONFIG_SCSI_DPT_I2O is not set 408# CONFIG_SCSI_DPT_I2O is not set
409# CONFIG_SCSI_ARCMSR is not set
382# CONFIG_MEGARAID_NEWGEN is not set 410# CONFIG_MEGARAID_NEWGEN is not set
383# CONFIG_MEGARAID_LEGACY is not set 411# CONFIG_MEGARAID_LEGACY is not set
384# CONFIG_MEGARAID_SAS is not set 412# CONFIG_MEGARAID_SAS is not set
385# CONFIG_SCSI_SATA is not set
386# CONFIG_SCSI_HPTIOP is not set 413# CONFIG_SCSI_HPTIOP is not set
387# CONFIG_SCSI_BUSLOGIC is not set 414# CONFIG_SCSI_BUSLOGIC is not set
388# CONFIG_SCSI_DMX3191D is not set 415# CONFIG_SCSI_DMX3191D is not set
@@ -392,15 +419,22 @@ CONFIG_SCSI_PROC_FS=y
392# CONFIG_SCSI_IPS is not set 419# CONFIG_SCSI_IPS is not set
393# CONFIG_SCSI_INITIO is not set 420# CONFIG_SCSI_INITIO is not set
394# CONFIG_SCSI_INIA100 is not set 421# CONFIG_SCSI_INIA100 is not set
422# CONFIG_SCSI_STEX is not set
395# CONFIG_SCSI_SYM53C8XX_2 is not set 423# CONFIG_SCSI_SYM53C8XX_2 is not set
396# CONFIG_SCSI_IPR is not set
397# CONFIG_SCSI_QLOGIC_1280 is not set 424# CONFIG_SCSI_QLOGIC_1280 is not set
398# CONFIG_SCSI_QLA_FC is not set 425# CONFIG_SCSI_QLA_FC is not set
426# CONFIG_SCSI_QLA_ISCSI is not set
399# CONFIG_SCSI_LPFC is not set 427# CONFIG_SCSI_LPFC is not set
400# CONFIG_SCSI_DC395x is not set 428# CONFIG_SCSI_DC395x is not set
401# CONFIG_SCSI_DC390T is not set 429# CONFIG_SCSI_DC390T is not set
402# CONFIG_SCSI_NSP32 is not set 430# CONFIG_SCSI_NSP32 is not set
403# CONFIG_SCSI_DEBUG is not set 431# CONFIG_SCSI_DEBUG is not set
432# CONFIG_SCSI_SRP is not set
433
434#
435# Serial ATA (prod) and Parallel ATA (experimental) drivers
436#
437# CONFIG_ATA is not set
404 438
405# 439#
406# Multi-device support (RAID and LVM) 440# Multi-device support (RAID and LVM)
@@ -428,6 +462,7 @@ CONFIG_SCSI_PROC_FS=y
428# 462#
429# Macintosh device drivers 463# Macintosh device drivers
430# 464#
465# CONFIG_MAC_EMUMOUSEBTN is not set
431# CONFIG_WINDFARM is not set 466# CONFIG_WINDFARM is not set
432 467
433# 468#
@@ -488,6 +523,7 @@ CONFIG_UCC_GETH=y
488# CONFIG_UGETH_MAGIC_PACKET is not set 523# CONFIG_UGETH_MAGIC_PACKET is not set
489# CONFIG_UGETH_FILTERING is not set 524# CONFIG_UGETH_FILTERING is not set
490# CONFIG_UGETH_TX_ON_DEMOND is not set 525# CONFIG_UGETH_TX_ON_DEMOND is not set
526# CONFIG_QLA3XXX is not set
491 527
492# 528#
493# Ethernet (10000 Mbit) 529# Ethernet (10000 Mbit)
@@ -496,6 +532,7 @@ CONFIG_UCC_GETH=y
496# CONFIG_IXGB is not set 532# CONFIG_IXGB is not set
497# CONFIG_S2IO is not set 533# CONFIG_S2IO is not set
498# CONFIG_MYRI10GE is not set 534# CONFIG_MYRI10GE is not set
535# CONFIG_NETXEN_NIC is not set
499 536
500# 537#
501# Token Ring devices 538# Token Ring devices
@@ -535,6 +572,7 @@ CONFIG_UCC_GETH=y
535# Input device support 572# Input device support
536# 573#
537CONFIG_INPUT=y 574CONFIG_INPUT=y
575# CONFIG_INPUT_FF_MEMLESS is not set
538 576
539# 577#
540# Userland interfaces 578# Userland interfaces
@@ -579,6 +617,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
579# 617#
580# Non-8250 serial port support 618# Non-8250 serial port support
581# 619#
620# CONFIG_SERIAL_UARTLITE is not set
582CONFIG_SERIAL_CORE=y 621CONFIG_SERIAL_CORE=y
583CONFIG_SERIAL_CORE_CONSOLE=y 622CONFIG_SERIAL_CORE_CONSOLE=y
584# CONFIG_SERIAL_JSM is not set 623# CONFIG_SERIAL_JSM is not set
@@ -615,10 +654,6 @@ CONFIG_GEN_RTC=y
615# CONFIG_DTLK is not set 654# CONFIG_DTLK is not set
616# CONFIG_R3964 is not set 655# CONFIG_R3964 is not set
617# CONFIG_APPLICOM is not set 656# CONFIG_APPLICOM is not set
618
619#
620# Ftape, the floppy tape device driver
621#
622# CONFIG_AGP is not set 657# CONFIG_AGP is not set
623# CONFIG_DRM is not set 658# CONFIG_DRM is not set
624# CONFIG_RAW_DRIVER is not set 659# CONFIG_RAW_DRIVER is not set
@@ -627,7 +662,6 @@ CONFIG_GEN_RTC=y
627# TPM devices 662# TPM devices
628# 663#
629# CONFIG_TCG_TPM is not set 664# CONFIG_TCG_TPM is not set
630# CONFIG_TELCLOCK is not set
631 665
632# 666#
633# I2C support 667# I2C support
@@ -693,6 +727,7 @@ CONFIG_I2C_MPC=y
693# 727#
694# Dallas's 1-wire bus 728# Dallas's 1-wire bus
695# 729#
730# CONFIG_W1 is not set
696 731
697# 732#
698# Hardware Monitoring support 733# Hardware Monitoring support
@@ -726,29 +761,27 @@ CONFIG_HWMON=y
726# CONFIG_SENSORS_LM92 is not set 761# CONFIG_SENSORS_LM92 is not set
727# CONFIG_SENSORS_MAX1619 is not set 762# CONFIG_SENSORS_MAX1619 is not set
728# CONFIG_SENSORS_PC87360 is not set 763# CONFIG_SENSORS_PC87360 is not set
764# CONFIG_SENSORS_PC87427 is not set
729# CONFIG_SENSORS_SIS5595 is not set 765# CONFIG_SENSORS_SIS5595 is not set
730# CONFIG_SENSORS_SMSC47M1 is not set 766# CONFIG_SENSORS_SMSC47M1 is not set
731# CONFIG_SENSORS_SMSC47M192 is not set 767# CONFIG_SENSORS_SMSC47M192 is not set
732# CONFIG_SENSORS_SMSC47B397 is not set 768# CONFIG_SENSORS_SMSC47B397 is not set
733# CONFIG_SENSORS_VIA686A is not set 769# CONFIG_SENSORS_VIA686A is not set
770# CONFIG_SENSORS_VT1211 is not set
734# CONFIG_SENSORS_VT8231 is not set 771# CONFIG_SENSORS_VT8231 is not set
735# CONFIG_SENSORS_W83781D is not set 772# CONFIG_SENSORS_W83781D is not set
736# CONFIG_SENSORS_W83791D is not set 773# CONFIG_SENSORS_W83791D is not set
737# CONFIG_SENSORS_W83792D is not set 774# CONFIG_SENSORS_W83792D is not set
775# CONFIG_SENSORS_W83793 is not set
738# CONFIG_SENSORS_W83L785TS is not set 776# CONFIG_SENSORS_W83L785TS is not set
739# CONFIG_SENSORS_W83627HF is not set 777# CONFIG_SENSORS_W83627HF is not set
740# CONFIG_SENSORS_W83627EHF is not set 778# CONFIG_SENSORS_W83627EHF is not set
741# CONFIG_HWMON_DEBUG_CHIP is not set 779# CONFIG_HWMON_DEBUG_CHIP is not set
742 780
743# 781#
744# Misc devices
745#
746
747#
748# Multimedia devices 782# Multimedia devices
749# 783#
750# CONFIG_VIDEO_DEV is not set 784# CONFIG_VIDEO_DEV is not set
751CONFIG_VIDEO_V4L2=y
752 785
753# 786#
754# Digital Video Broadcasting Devices 787# Digital Video Broadcasting Devices
@@ -760,6 +793,7 @@ CONFIG_VIDEO_V4L2=y
760# 793#
761CONFIG_FIRMWARE_EDID=y 794CONFIG_FIRMWARE_EDID=y
762# CONFIG_FB is not set 795# CONFIG_FB is not set
796# CONFIG_FB_IBM_GXT4500 is not set
763# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 797# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
764 798
765# 799#
@@ -768,6 +802,11 @@ CONFIG_FIRMWARE_EDID=y
768# CONFIG_SOUND is not set 802# CONFIG_SOUND is not set
769 803
770# 804#
805# HID Devices
806#
807CONFIG_HID=y
808
809#
771# USB support 810# USB support
772# 811#
773CONFIG_USB_ARCH_HAS_HCD=y 812CONFIG_USB_ARCH_HAS_HCD=y
@@ -830,6 +869,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
830# 869#
831 870
832# 871#
872# Virtualization
873#
874
875#
833# File systems 876# File systems
834# 877#
835CONFIG_EXT2_FS=y 878CONFIG_EXT2_FS=y
@@ -839,6 +882,7 @@ CONFIG_EXT3_FS=y
839CONFIG_EXT3_FS_XATTR=y 882CONFIG_EXT3_FS_XATTR=y
840# CONFIG_EXT3_FS_POSIX_ACL is not set 883# CONFIG_EXT3_FS_POSIX_ACL is not set
841# CONFIG_EXT3_FS_SECURITY is not set 884# CONFIG_EXT3_FS_SECURITY is not set
885# CONFIG_EXT4DEV_FS is not set
842CONFIG_JBD=y 886CONFIG_JBD=y
843# CONFIG_JBD_DEBUG is not set 887# CONFIG_JBD_DEBUG is not set
844CONFIG_FS_MBCACHE=y 888CONFIG_FS_MBCACHE=y
@@ -846,6 +890,7 @@ CONFIG_FS_MBCACHE=y
846# CONFIG_JFS_FS is not set 890# CONFIG_JFS_FS is not set
847# CONFIG_FS_POSIX_ACL is not set 891# CONFIG_FS_POSIX_ACL is not set
848# CONFIG_XFS_FS is not set 892# CONFIG_XFS_FS is not set
893# CONFIG_GFS2_FS is not set
849# CONFIG_OCFS2_FS is not set 894# CONFIG_OCFS2_FS is not set
850# CONFIG_MINIX_FS is not set 895# CONFIG_MINIX_FS is not set
851# CONFIG_ROMFS_FS is not set 896# CONFIG_ROMFS_FS is not set
@@ -875,8 +920,10 @@ CONFIG_DNOTIFY=y
875# 920#
876CONFIG_PROC_FS=y 921CONFIG_PROC_FS=y
877CONFIG_PROC_KCORE=y 922CONFIG_PROC_KCORE=y
923CONFIG_PROC_SYSCTL=y
878CONFIG_SYSFS=y 924CONFIG_SYSFS=y
879CONFIG_TMPFS=y 925CONFIG_TMPFS=y
926# CONFIG_TMPFS_POSIX_ACL is not set
880# CONFIG_HUGETLB_PAGE is not set 927# CONFIG_HUGETLB_PAGE is not set
881CONFIG_RAMFS=y 928CONFIG_RAMFS=y
882# CONFIG_CONFIGFS_FS is not set 929# CONFIG_CONFIGFS_FS is not set
@@ -945,20 +992,27 @@ CONFIG_PARTITION_ADVANCED=y
945# CONFIG_NLS is not set 992# CONFIG_NLS is not set
946 993
947# 994#
995# Distributed Lock Manager
996#
997# CONFIG_DLM is not set
998
999#
948# QE Options 1000# QE Options
949# 1001#
950# CONFIG_UCC_SLOW is not set 1002CONFIG_UCC_SLOW=y
951CONFIG_UCC_FAST=y 1003CONFIG_UCC_FAST=y
952CONFIG_UCC=y 1004CONFIG_UCC=y
953 1005
954# 1006#
955# Library routines 1007# Library routines
956# 1008#
1009CONFIG_BITREVERSE=y
957# CONFIG_CRC_CCITT is not set 1010# CONFIG_CRC_CCITT is not set
958# CONFIG_CRC16 is not set 1011# CONFIG_CRC16 is not set
959CONFIG_CRC32=y 1012CONFIG_CRC32=y
960# CONFIG_LIBCRC32C is not set 1013# CONFIG_LIBCRC32C is not set
961CONFIG_PLIST=y 1014CONFIG_PLIST=y
1015CONFIG_IOMAP_COPY=y
962 1016
963# 1017#
964# Instrumentation Support 1018# Instrumentation Support
@@ -969,11 +1023,14 @@ CONFIG_PLIST=y
969# Kernel hacking 1023# Kernel hacking
970# 1024#
971# CONFIG_PRINTK_TIME is not set 1025# CONFIG_PRINTK_TIME is not set
1026CONFIG_ENABLE_MUST_CHECK=y
972# CONFIG_MAGIC_SYSRQ is not set 1027# CONFIG_MAGIC_SYSRQ is not set
973# CONFIG_UNUSED_SYMBOLS is not set 1028# CONFIG_UNUSED_SYMBOLS is not set
1029# CONFIG_DEBUG_FS is not set
1030# CONFIG_HEADERS_CHECK is not set
974# CONFIG_DEBUG_KERNEL is not set 1031# CONFIG_DEBUG_KERNEL is not set
975CONFIG_LOG_BUF_SHIFT=14 1032CONFIG_LOG_BUF_SHIFT=14
976# CONFIG_DEBUG_FS is not set 1033# CONFIG_DEBUG_BUGVERBOSE is not set
977# CONFIG_BOOTX_TEXT is not set 1034# CONFIG_BOOTX_TEXT is not set
978# CONFIG_SERIAL_TEXT_DEBUG is not set 1035# CONFIG_SERIAL_TEXT_DEBUG is not set
979# CONFIG_PPC_EARLY_DEBUG is not set 1036# CONFIG_PPC_EARLY_DEBUG is not set
@@ -988,7 +1045,11 @@ CONFIG_LOG_BUF_SHIFT=14
988# Cryptographic options 1045# Cryptographic options
989# 1046#
990CONFIG_CRYPTO=y 1047CONFIG_CRYPTO=y
1048CONFIG_CRYPTO_ALGAPI=y
1049CONFIG_CRYPTO_BLKCIPHER=y
1050CONFIG_CRYPTO_MANAGER=y
991# CONFIG_CRYPTO_HMAC is not set 1051# CONFIG_CRYPTO_HMAC is not set
1052# CONFIG_CRYPTO_XCBC is not set
992# CONFIG_CRYPTO_NULL is not set 1053# CONFIG_CRYPTO_NULL is not set
993# CONFIG_CRYPTO_MD4 is not set 1054# CONFIG_CRYPTO_MD4 is not set
994CONFIG_CRYPTO_MD5=y 1055CONFIG_CRYPTO_MD5=y
@@ -997,6 +1058,10 @@ CONFIG_CRYPTO_MD5=y
997# CONFIG_CRYPTO_SHA512 is not set 1058# CONFIG_CRYPTO_SHA512 is not set
998# CONFIG_CRYPTO_WP512 is not set 1059# CONFIG_CRYPTO_WP512 is not set
999# CONFIG_CRYPTO_TGR192 is not set 1060# CONFIG_CRYPTO_TGR192 is not set
1061# CONFIG_CRYPTO_GF128MUL is not set
1062CONFIG_CRYPTO_ECB=m
1063CONFIG_CRYPTO_CBC=y
1064# CONFIG_CRYPTO_LRW is not set
1000CONFIG_CRYPTO_DES=y 1065CONFIG_CRYPTO_DES=y
1001# CONFIG_CRYPTO_BLOWFISH is not set 1066# CONFIG_CRYPTO_BLOWFISH is not set
1002# CONFIG_CRYPTO_TWOFISH is not set 1067# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/configs/mpc8540_ads_defconfig b/arch/powerpc/configs/mpc8540_ads_defconfig
index 67e7d0b5793d..17120c472304 100644
--- a/arch/powerpc/configs/mpc8540_ads_defconfig
+++ b/arch/powerpc/configs/mpc8540_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:29:23 2006 4# Mon Jan 22 22:25:24 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33CONFIG_PPC_85xx=y 35CONFIG_PPC_85xx=y
@@ -38,6 +40,8 @@ CONFIG_PPC_85xx=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_85xx=y 41CONFIG_85xx=y
40CONFIG_E500=y 42CONFIG_E500=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41CONFIG_BOOKE=y 45CONFIG_BOOKE=y
42CONFIG_FSL_BOOKE=y 46CONFIG_FSL_BOOKE=y
43# CONFIG_PHYS_64BIT is not set 47# CONFIG_PHYS_64BIT is not set
@@ -58,16 +62,20 @@ CONFIG_LOCALVERSION=""
58CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
70CONFIG_EMBEDDED=y 77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
71CONFIG_KALLSYMS=y 79CONFIG_KALLSYMS=y
72# CONFIG_KALLSYMS_ALL is not set 80# CONFIG_KALLSYMS_ALL is not set
73# CONFIG_KALLSYMS_EXTRA_PASS is not set 81# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -76,12 +84,12 @@ CONFIG_PRINTK=y
76CONFIG_BUG=y 84CONFIG_BUG=y
77CONFIG_ELF_CORE=y 85CONFIG_ELF_CORE=y
78CONFIG_BASE_FULL=y 86CONFIG_BASE_FULL=y
79CONFIG_RT_MUTEXES=y
80CONFIG_FUTEX=y 87CONFIG_FUTEX=y
81CONFIG_EPOLL=y 88CONFIG_EPOLL=y
82CONFIG_SHMEM=y 89CONFIG_SHMEM=y
83CONFIG_SLAB=y 90CONFIG_SLAB=y
84CONFIG_VM_EVENT_COUNTERS=y 91CONFIG_VM_EVENT_COUNTERS=y
92CONFIG_RT_MUTEXES=y
85# CONFIG_TINY_SHMEM is not set 93# CONFIG_TINY_SHMEM is not set
86CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
87# CONFIG_SLOB is not set 95# CONFIG_SLOB is not set
@@ -94,6 +102,7 @@ CONFIG_BASE_SMALL=0
94# 102#
95# Block layer 103# Block layer
96# 104#
105CONFIG_BLOCK=y
97# CONFIG_LBD is not set 106# CONFIG_LBD is not set
98# CONFIG_BLK_DEV_IO_TRACE is not set 107# CONFIG_BLK_DEV_IO_TRACE is not set
99# CONFIG_LSF is not set 108# CONFIG_LSF is not set
@@ -116,6 +125,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
116# Platform support 125# Platform support
117# 126#
118CONFIG_MPC8540_ADS=y 127CONFIG_MPC8540_ADS=y
128# CONFIG_MPC8560_ADS is not set
119# CONFIG_MPC85xx_CDS is not set 129# CONFIG_MPC85xx_CDS is not set
120CONFIG_MPC8540=y 130CONFIG_MPC8540=y
121CONFIG_PPC_INDIRECT_PCI_BE=y 131CONFIG_PPC_INDIRECT_PCI_BE=y
@@ -127,6 +137,7 @@ CONFIG_MPIC=y
127# CONFIG_HIGHMEM is not set 137# CONFIG_HIGHMEM is not set
128# CONFIG_HZ_100 is not set 138# CONFIG_HZ_100 is not set
129CONFIG_HZ_250=y 139CONFIG_HZ_250=y
140# CONFIG_HZ_300 is not set
130# CONFIG_HZ_1000 is not set 141# CONFIG_HZ_1000 is not set
131CONFIG_HZ=250 142CONFIG_HZ=250
132CONFIG_PREEMPT_NONE=y 143CONFIG_PREEMPT_NONE=y
@@ -137,6 +148,7 @@ CONFIG_BINFMT_MISC=y
137CONFIG_MATH_EMULATION=y 148CONFIG_MATH_EMULATION=y
138CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 149CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
139CONFIG_ARCH_FLATMEM_ENABLE=y 150CONFIG_ARCH_FLATMEM_ENABLE=y
151CONFIG_ARCH_POPULATES_NODE_MAP=y
140CONFIG_SELECT_MEMORY_MODEL=y 152CONFIG_SELECT_MEMORY_MODEL=y
141CONFIG_FLATMEM_MANUAL=y 153CONFIG_FLATMEM_MANUAL=y
142# CONFIG_DISCONTIGMEM_MANUAL is not set 154# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -199,6 +211,7 @@ CONFIG_PACKET=y
199CONFIG_UNIX=y 211CONFIG_UNIX=y
200CONFIG_XFRM=y 212CONFIG_XFRM=y
201CONFIG_XFRM_USER=y 213CONFIG_XFRM_USER=y
214# CONFIG_XFRM_SUB_POLICY is not set
202# CONFIG_NET_KEY is not set 215# CONFIG_NET_KEY is not set
203CONFIG_INET=y 216CONFIG_INET=y
204CONFIG_IP_MULTICAST=y 217CONFIG_IP_MULTICAST=y
@@ -220,10 +233,13 @@ CONFIG_SYN_COOKIES=y
220# CONFIG_INET_TUNNEL is not set 233# CONFIG_INET_TUNNEL is not set
221CONFIG_INET_XFRM_MODE_TRANSPORT=y 234CONFIG_INET_XFRM_MODE_TRANSPORT=y
222CONFIG_INET_XFRM_MODE_TUNNEL=y 235CONFIG_INET_XFRM_MODE_TUNNEL=y
236CONFIG_INET_XFRM_MODE_BEET=y
223CONFIG_INET_DIAG=y 237CONFIG_INET_DIAG=y
224CONFIG_INET_TCP_DIAG=y 238CONFIG_INET_TCP_DIAG=y
225# CONFIG_TCP_CONG_ADVANCED is not set 239# CONFIG_TCP_CONG_ADVANCED is not set
226CONFIG_TCP_CONG_BIC=y 240CONFIG_TCP_CONG_CUBIC=y
241CONFIG_DEFAULT_TCP_CONG="cubic"
242# CONFIG_TCP_MD5SIG is not set
227# CONFIG_IPV6 is not set 243# CONFIG_IPV6 is not set
228# CONFIG_INET6_XFRM_TUNNEL is not set 244# CONFIG_INET6_XFRM_TUNNEL is not set
229# CONFIG_INET6_TUNNEL is not set 245# CONFIG_INET6_TUNNEL is not set
@@ -253,7 +269,6 @@ CONFIG_TCP_CONG_BIC=y
253# CONFIG_ATALK is not set 269# CONFIG_ATALK is not set
254# CONFIG_X25 is not set 270# CONFIG_X25 is not set
255# CONFIG_LAPB is not set 271# CONFIG_LAPB is not set
256# CONFIG_NET_DIVERT is not set
257# CONFIG_ECONET is not set 272# CONFIG_ECONET is not set
258# CONFIG_WAN_ROUTER is not set 273# CONFIG_WAN_ROUTER is not set
259 274
@@ -320,6 +335,11 @@ CONFIG_BLK_DEV_INITRD=y
320# CONFIG_ATA_OVER_ETH is not set 335# CONFIG_ATA_OVER_ETH is not set
321 336
322# 337#
338# Misc devices
339#
340# CONFIG_TIFM_CORE is not set
341
342#
323# ATA/ATAPI/MFM/RLL support 343# ATA/ATAPI/MFM/RLL support
324# 344#
325# CONFIG_IDE is not set 345# CONFIG_IDE is not set
@@ -329,6 +349,12 @@ CONFIG_BLK_DEV_INITRD=y
329# 349#
330# CONFIG_RAID_ATTRS is not set 350# CONFIG_RAID_ATTRS is not set
331# CONFIG_SCSI is not set 351# CONFIG_SCSI is not set
352# CONFIG_SCSI_NETLINK is not set
353
354#
355# Serial ATA (prod) and Parallel ATA (experimental) drivers
356#
357# CONFIG_ATA is not set
332 358
333# 359#
334# Multi-device support (RAID and LVM) 360# Multi-device support (RAID and LVM)
@@ -351,6 +377,7 @@ CONFIG_BLK_DEV_INITRD=y
351# 377#
352# Macintosh device drivers 378# Macintosh device drivers
353# 379#
380# CONFIG_MAC_EMUMOUSEBTN is not set
354# CONFIG_WINDFARM is not set 381# CONFIG_WINDFARM is not set
355 382
356# 383#
@@ -377,6 +404,7 @@ CONFIG_PHYLIB=y
377# CONFIG_CICADA_PHY is not set 404# CONFIG_CICADA_PHY is not set
378# CONFIG_VITESSE_PHY is not set 405# CONFIG_VITESSE_PHY is not set
379# CONFIG_SMSC_PHY is not set 406# CONFIG_SMSC_PHY is not set
407# CONFIG_BROADCOM_PHY is not set
380# CONFIG_FIXED_PHY is not set 408# CONFIG_FIXED_PHY is not set
381 409
382# 410#
@@ -429,6 +457,7 @@ CONFIG_GFAR_NAPI=y
429# Input device support 457# Input device support
430# 458#
431CONFIG_INPUT=y 459CONFIG_INPUT=y
460# CONFIG_INPUT_FF_MEMLESS is not set
432 461
433# 462#
434# Userland interfaces 463# Userland interfaces
@@ -472,6 +501,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
472# 501#
473# Non-8250 serial port support 502# Non-8250 serial port support
474# 503#
504# CONFIG_SERIAL_UARTLITE is not set
475CONFIG_SERIAL_CORE=y 505CONFIG_SERIAL_CORE=y
476CONFIG_SERIAL_CORE_CONSOLE=y 506CONFIG_SERIAL_CORE_CONSOLE=y
477CONFIG_UNIX98_PTYS=y 507CONFIG_UNIX98_PTYS=y
@@ -493,17 +523,12 @@ CONFIG_GEN_RTC=y
493# CONFIG_GEN_RTC_X is not set 523# CONFIG_GEN_RTC_X is not set
494# CONFIG_DTLK is not set 524# CONFIG_DTLK is not set
495# CONFIG_R3964 is not set 525# CONFIG_R3964 is not set
496
497#
498# Ftape, the floppy tape device driver
499#
500# CONFIG_RAW_DRIVER is not set 526# CONFIG_RAW_DRIVER is not set
501 527
502# 528#
503# TPM devices 529# TPM devices
504# 530#
505# CONFIG_TCG_TPM is not set 531# CONFIG_TCG_TPM is not set
506# CONFIG_TELCLOCK is not set
507 532
508# 533#
509# I2C support 534# I2C support
@@ -519,6 +544,7 @@ CONFIG_GEN_RTC=y
519# 544#
520# Dallas's 1-wire bus 545# Dallas's 1-wire bus
521# 546#
547# CONFIG_W1 is not set
522 548
523# 549#
524# Hardware Monitoring support 550# Hardware Monitoring support
@@ -527,17 +553,14 @@ CONFIG_HWMON=y
527# CONFIG_HWMON_VID is not set 553# CONFIG_HWMON_VID is not set
528# CONFIG_SENSORS_ABITUGURU is not set 554# CONFIG_SENSORS_ABITUGURU is not set
529# CONFIG_SENSORS_F71805F is not set 555# CONFIG_SENSORS_F71805F is not set
556# CONFIG_SENSORS_PC87427 is not set
557# CONFIG_SENSORS_VT1211 is not set
530# CONFIG_HWMON_DEBUG_CHIP is not set 558# CONFIG_HWMON_DEBUG_CHIP is not set
531 559
532# 560#
533# Misc devices
534#
535
536#
537# Multimedia devices 561# Multimedia devices
538# 562#
539# CONFIG_VIDEO_DEV is not set 563# CONFIG_VIDEO_DEV is not set
540CONFIG_VIDEO_V4L2=y
541 564
542# 565#
543# Digital Video Broadcasting Devices 566# Digital Video Broadcasting Devices
@@ -549,6 +572,7 @@ CONFIG_VIDEO_V4L2=y
549# 572#
550CONFIG_FIRMWARE_EDID=y 573CONFIG_FIRMWARE_EDID=y
551# CONFIG_FB is not set 574# CONFIG_FB is not set
575# CONFIG_FB_IBM_GXT4500 is not set
552# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 576# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
553 577
554# 578#
@@ -557,6 +581,11 @@ CONFIG_FIRMWARE_EDID=y
557# CONFIG_SOUND is not set 581# CONFIG_SOUND is not set
558 582
559# 583#
584# HID Devices
585#
586CONFIG_HID=y
587
588#
560# USB support 589# USB support
561# 590#
562# CONFIG_USB_ARCH_HAS_HCD is not set 591# CONFIG_USB_ARCH_HAS_HCD is not set
@@ -617,6 +646,10 @@ CONFIG_FIRMWARE_EDID=y
617# 646#
618 647
619# 648#
649# Virtualization
650#
651
652#
620# File systems 653# File systems
621# 654#
622CONFIG_EXT2_FS=y 655CONFIG_EXT2_FS=y
@@ -626,6 +659,7 @@ CONFIG_EXT3_FS=y
626CONFIG_EXT3_FS_XATTR=y 659CONFIG_EXT3_FS_XATTR=y
627# CONFIG_EXT3_FS_POSIX_ACL is not set 660# CONFIG_EXT3_FS_POSIX_ACL is not set
628# CONFIG_EXT3_FS_SECURITY is not set 661# CONFIG_EXT3_FS_SECURITY is not set
662# CONFIG_EXT4DEV_FS is not set
629CONFIG_JBD=y 663CONFIG_JBD=y
630# CONFIG_JBD_DEBUG is not set 664# CONFIG_JBD_DEBUG is not set
631CONFIG_FS_MBCACHE=y 665CONFIG_FS_MBCACHE=y
@@ -633,6 +667,7 @@ CONFIG_FS_MBCACHE=y
633# CONFIG_JFS_FS is not set 667# CONFIG_JFS_FS is not set
634# CONFIG_FS_POSIX_ACL is not set 668# CONFIG_FS_POSIX_ACL is not set
635# CONFIG_XFS_FS is not set 669# CONFIG_XFS_FS is not set
670# CONFIG_GFS2_FS is not set
636# CONFIG_OCFS2_FS is not set 671# CONFIG_OCFS2_FS is not set
637# CONFIG_MINIX_FS is not set 672# CONFIG_MINIX_FS is not set
638# CONFIG_ROMFS_FS is not set 673# CONFIG_ROMFS_FS is not set
@@ -662,8 +697,10 @@ CONFIG_DNOTIFY=y
662# 697#
663CONFIG_PROC_FS=y 698CONFIG_PROC_FS=y
664CONFIG_PROC_KCORE=y 699CONFIG_PROC_KCORE=y
700CONFIG_PROC_SYSCTL=y
665CONFIG_SYSFS=y 701CONFIG_SYSFS=y
666CONFIG_TMPFS=y 702CONFIG_TMPFS=y
703# CONFIG_TMPFS_POSIX_ACL is not set
667# CONFIG_HUGETLB_PAGE is not set 704# CONFIG_HUGETLB_PAGE is not set
668CONFIG_RAMFS=y 705CONFIG_RAMFS=y
669# CONFIG_CONFIGFS_FS is not set 706# CONFIG_CONFIGFS_FS is not set
@@ -729,13 +766,20 @@ CONFIG_PARTITION_ADVANCED=y
729# CONFIG_NLS is not set 766# CONFIG_NLS is not set
730 767
731# 768#
769# Distributed Lock Manager
770#
771# CONFIG_DLM is not set
772
773#
732# Library routines 774# Library routines
733# 775#
776CONFIG_BITREVERSE=y
734# CONFIG_CRC_CCITT is not set 777# CONFIG_CRC_CCITT is not set
735# CONFIG_CRC16 is not set 778# CONFIG_CRC16 is not set
736CONFIG_CRC32=y 779CONFIG_CRC32=y
737# CONFIG_LIBCRC32C is not set 780# CONFIG_LIBCRC32C is not set
738CONFIG_PLIST=y 781CONFIG_PLIST=y
782CONFIG_IOMAP_COPY=y
739 783
740# 784#
741# Instrumentation Support 785# Instrumentation Support
@@ -746,8 +790,11 @@ CONFIG_PLIST=y
746# Kernel hacking 790# Kernel hacking
747# 791#
748# CONFIG_PRINTK_TIME is not set 792# CONFIG_PRINTK_TIME is not set
793CONFIG_ENABLE_MUST_CHECK=y
749# CONFIG_MAGIC_SYSRQ is not set 794# CONFIG_MAGIC_SYSRQ is not set
750# CONFIG_UNUSED_SYMBOLS is not set 795# CONFIG_UNUSED_SYMBOLS is not set
796# CONFIG_DEBUG_FS is not set
797# CONFIG_HEADERS_CHECK is not set
751CONFIG_DEBUG_KERNEL=y 798CONFIG_DEBUG_KERNEL=y
752CONFIG_LOG_BUF_SHIFT=14 799CONFIG_LOG_BUF_SHIFT=14
753CONFIG_DETECT_SOFTLOCKUP=y 800CONFIG_DETECT_SOFTLOCKUP=y
@@ -761,10 +808,10 @@ CONFIG_DEBUG_MUTEXES=y
761# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 808# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
762# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 809# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
763# CONFIG_DEBUG_KOBJECT is not set 810# CONFIG_DEBUG_KOBJECT is not set
811# CONFIG_DEBUG_BUGVERBOSE is not set
764# CONFIG_DEBUG_INFO is not set 812# CONFIG_DEBUG_INFO is not set
765# CONFIG_DEBUG_FS is not set
766# CONFIG_DEBUG_VM is not set 813# CONFIG_DEBUG_VM is not set
767# CONFIG_UNWIND_INFO is not set 814# CONFIG_DEBUG_LIST is not set
768CONFIG_FORCED_INLINING=y 815CONFIG_FORCED_INLINING=y
769# CONFIG_RCU_TORTURE_TEST is not set 816# CONFIG_RCU_TORTURE_TEST is not set
770# CONFIG_DEBUGGER is not set 817# CONFIG_DEBUGGER is not set
@@ -782,7 +829,3 @@ CONFIG_FORCED_INLINING=y
782# Cryptographic options 829# Cryptographic options
783# 830#
784# CONFIG_CRYPTO is not set 831# CONFIG_CRYPTO is not set
785
786#
787# Hardware crypto devices
788#
diff --git a/arch/powerpc/configs/mpc8560_ads_defconfig b/arch/powerpc/configs/mpc8560_ads_defconfig
index ddc2a7b07ba0..ecaa267a853c 100644
--- a/arch/powerpc/configs/mpc8560_ads_defconfig
+++ b/arch/powerpc/configs/mpc8560_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc4 3# Linux kernel version: 2.6.20-rc5
4# Fri Aug 11 16:45:05 2006 4# Mon Jan 22 22:25:53 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22# CONFIG_PPC_UDBG_16550 is not set 23# CONFIG_PPC_UDBG_16550 is not set
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33CONFIG_PPC_85xx=y 35CONFIG_PPC_85xx=y
@@ -38,6 +40,8 @@ CONFIG_PPC_85xx=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_85xx=y 41CONFIG_85xx=y
40CONFIG_E500=y 42CONFIG_E500=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41CONFIG_BOOKE=y 45CONFIG_BOOKE=y
42CONFIG_FSL_BOOKE=y 46CONFIG_FSL_BOOKE=y
43# CONFIG_PHYS_64BIT is not set 47# CONFIG_PHYS_64BIT is not set
@@ -58,16 +62,20 @@ CONFIG_LOCALVERSION=""
58CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
70CONFIG_EMBEDDED=y 77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
71CONFIG_KALLSYMS=y 79CONFIG_KALLSYMS=y
72# CONFIG_KALLSYMS_ALL is not set 80# CONFIG_KALLSYMS_ALL is not set
73# CONFIG_KALLSYMS_EXTRA_PASS is not set 81# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -76,12 +84,12 @@ CONFIG_PRINTK=y
76CONFIG_BUG=y 84CONFIG_BUG=y
77CONFIG_ELF_CORE=y 85CONFIG_ELF_CORE=y
78CONFIG_BASE_FULL=y 86CONFIG_BASE_FULL=y
79CONFIG_RT_MUTEXES=y
80CONFIG_FUTEX=y 87CONFIG_FUTEX=y
81CONFIG_EPOLL=y 88CONFIG_EPOLL=y
82CONFIG_SHMEM=y 89CONFIG_SHMEM=y
83CONFIG_SLAB=y 90CONFIG_SLAB=y
84CONFIG_VM_EVENT_COUNTERS=y 91CONFIG_VM_EVENT_COUNTERS=y
92CONFIG_RT_MUTEXES=y
85# CONFIG_TINY_SHMEM is not set 93# CONFIG_TINY_SHMEM is not set
86CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
87# CONFIG_SLOB is not set 95# CONFIG_SLOB is not set
@@ -94,6 +102,7 @@ CONFIG_BASE_SMALL=0
94# 102#
95# Block layer 103# Block layer
96# 104#
105CONFIG_BLOCK=y
97# CONFIG_LBD is not set 106# CONFIG_LBD is not set
98# CONFIG_BLK_DEV_IO_TRACE is not set 107# CONFIG_BLK_DEV_IO_TRACE is not set
99# CONFIG_LSF is not set 108# CONFIG_LSF is not set
@@ -110,7 +119,6 @@ CONFIG_DEFAULT_AS=y
110# CONFIG_DEFAULT_CFQ is not set 119# CONFIG_DEFAULT_CFQ is not set
111# CONFIG_DEFAULT_NOOP is not set 120# CONFIG_DEFAULT_NOOP is not set
112CONFIG_DEFAULT_IOSCHED="anticipatory" 121CONFIG_DEFAULT_IOSCHED="anticipatory"
113CONFIG_MPIC=y
114CONFIG_CPM2=y 122CONFIG_CPM2=y
115# CONFIG_WANT_EARLY_SERIAL is not set 123# CONFIG_WANT_EARLY_SERIAL is not set
116 124
@@ -122,6 +130,7 @@ CONFIG_MPC8560_ADS=y
122# CONFIG_MPC85xx_CDS is not set 130# CONFIG_MPC85xx_CDS is not set
123CONFIG_MPC8560=y 131CONFIG_MPC8560=y
124CONFIG_PPC_INDIRECT_PCI_BE=y 132CONFIG_PPC_INDIRECT_PCI_BE=y
133CONFIG_MPIC=y
125 134
126# 135#
127# Kernel options 136# Kernel options
@@ -129,6 +138,7 @@ CONFIG_PPC_INDIRECT_PCI_BE=y
129# CONFIG_HIGHMEM is not set 138# CONFIG_HIGHMEM is not set
130# CONFIG_HZ_100 is not set 139# CONFIG_HZ_100 is not set
131CONFIG_HZ_250=y 140CONFIG_HZ_250=y
141# CONFIG_HZ_300 is not set
132# CONFIG_HZ_1000 is not set 142# CONFIG_HZ_1000 is not set
133CONFIG_HZ=250 143CONFIG_HZ=250
134CONFIG_PREEMPT_NONE=y 144CONFIG_PREEMPT_NONE=y
@@ -140,6 +150,7 @@ CONFIG_BINFMT_MISC=y
140CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 150CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
141# CONFIG_PC_KEYBOARD is not set 151# CONFIG_PC_KEYBOARD is not set
142CONFIG_ARCH_FLATMEM_ENABLE=y 152CONFIG_ARCH_FLATMEM_ENABLE=y
153CONFIG_ARCH_POPULATES_NODE_MAP=y
143CONFIG_SELECT_MEMORY_MODEL=y 154CONFIG_SELECT_MEMORY_MODEL=y
144CONFIG_FLATMEM_MANUAL=y 155CONFIG_FLATMEM_MANUAL=y
145# CONFIG_DISCONTIGMEM_MANUAL is not set 156# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -152,13 +163,13 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
152# CONFIG_PROC_DEVICETREE is not set 163# CONFIG_PROC_DEVICETREE is not set
153# CONFIG_CMDLINE_BOOL is not set 164# CONFIG_CMDLINE_BOOL is not set
154# CONFIG_PM is not set 165# CONFIG_PM is not set
155# CONFIG_SOFTWARE_SUSPEND is not set
156# CONFIG_SECCOMP is not set 166# CONFIG_SECCOMP is not set
157CONFIG_ISA_DMA_API=y 167CONFIG_ISA_DMA_API=y
158 168
159# 169#
160# Bus options 170# Bus options
161# 171#
172# CONFIG_MPIC_WEIRD is not set
162# CONFIG_PPC_I8259 is not set 173# CONFIG_PPC_I8259 is not set
163CONFIG_PPC_INDIRECT_PCI=y 174CONFIG_PPC_INDIRECT_PCI=y
164CONFIG_FSL_SOC=y 175CONFIG_FSL_SOC=y
@@ -205,6 +216,7 @@ CONFIG_PACKET=y
205CONFIG_UNIX=y 216CONFIG_UNIX=y
206CONFIG_XFRM=y 217CONFIG_XFRM=y
207# CONFIG_XFRM_USER is not set 218# CONFIG_XFRM_USER is not set
219# CONFIG_XFRM_SUB_POLICY is not set
208# CONFIG_NET_KEY is not set 220# CONFIG_NET_KEY is not set
209CONFIG_INET=y 221CONFIG_INET=y
210CONFIG_IP_MULTICAST=y 222CONFIG_IP_MULTICAST=y
@@ -226,10 +238,13 @@ CONFIG_SYN_COOKIES=y
226# CONFIG_INET_TUNNEL is not set 238# CONFIG_INET_TUNNEL is not set
227CONFIG_INET_XFRM_MODE_TRANSPORT=y 239CONFIG_INET_XFRM_MODE_TRANSPORT=y
228CONFIG_INET_XFRM_MODE_TUNNEL=y 240CONFIG_INET_XFRM_MODE_TUNNEL=y
241CONFIG_INET_XFRM_MODE_BEET=y
229CONFIG_INET_DIAG=y 242CONFIG_INET_DIAG=y
230CONFIG_INET_TCP_DIAG=y 243CONFIG_INET_TCP_DIAG=y
231# CONFIG_TCP_CONG_ADVANCED is not set 244# CONFIG_TCP_CONG_ADVANCED is not set
232CONFIG_TCP_CONG_BIC=y 245CONFIG_TCP_CONG_CUBIC=y
246CONFIG_DEFAULT_TCP_CONG="cubic"
247# CONFIG_TCP_MD5SIG is not set
233# CONFIG_IPV6 is not set 248# CONFIG_IPV6 is not set
234# CONFIG_INET6_XFRM_TUNNEL is not set 249# CONFIG_INET6_XFRM_TUNNEL is not set
235# CONFIG_INET6_TUNNEL is not set 250# CONFIG_INET6_TUNNEL is not set
@@ -259,7 +274,6 @@ CONFIG_TCP_CONG_BIC=y
259# CONFIG_ATALK is not set 274# CONFIG_ATALK is not set
260# CONFIG_X25 is not set 275# CONFIG_X25 is not set
261# CONFIG_LAPB is not set 276# CONFIG_LAPB is not set
262# CONFIG_NET_DIVERT is not set
263# CONFIG_ECONET is not set 277# CONFIG_ECONET is not set
264# CONFIG_WAN_ROUTER is not set 278# CONFIG_WAN_ROUTER is not set
265 279
@@ -331,6 +345,12 @@ CONFIG_BLK_DEV_INITRD=y
331# CONFIG_ATA_OVER_ETH is not set 345# CONFIG_ATA_OVER_ETH is not set
332 346
333# 347#
348# Misc devices
349#
350# CONFIG_SGI_IOC4 is not set
351# CONFIG_TIFM_CORE is not set
352
353#
334# ATA/ATAPI/MFM/RLL support 354# ATA/ATAPI/MFM/RLL support
335# 355#
336# CONFIG_IDE is not set 356# CONFIG_IDE is not set
@@ -340,6 +360,12 @@ CONFIG_BLK_DEV_INITRD=y
340# 360#
341# CONFIG_RAID_ATTRS is not set 361# CONFIG_RAID_ATTRS is not set
342# CONFIG_SCSI is not set 362# CONFIG_SCSI is not set
363# CONFIG_SCSI_NETLINK is not set
364
365#
366# Serial ATA (prod) and Parallel ATA (experimental) drivers
367#
368# CONFIG_ATA is not set
343 369
344# 370#
345# Multi-device support (RAID and LVM) 371# Multi-device support (RAID and LVM)
@@ -364,6 +390,7 @@ CONFIG_BLK_DEV_INITRD=y
364# 390#
365# Macintosh device drivers 391# Macintosh device drivers
366# 392#
393# CONFIG_MAC_EMUMOUSEBTN is not set
367# CONFIG_WINDFARM is not set 394# CONFIG_WINDFARM is not set
368 395
369# 396#
@@ -395,6 +422,7 @@ CONFIG_DAVICOM_PHY=y
395# CONFIG_CICADA_PHY is not set 422# CONFIG_CICADA_PHY is not set
396# CONFIG_VITESSE_PHY is not set 423# CONFIG_VITESSE_PHY is not set
397# CONFIG_SMSC_PHY is not set 424# CONFIG_SMSC_PHY is not set
425# CONFIG_BROADCOM_PHY is not set
398# CONFIG_FIXED_PHY is not set 426# CONFIG_FIXED_PHY is not set
399 427
400# 428#
@@ -437,6 +465,7 @@ CONFIG_E1000_NAPI=y
437# CONFIG_BNX2 is not set 465# CONFIG_BNX2 is not set
438CONFIG_GIANFAR=y 466CONFIG_GIANFAR=y
439CONFIG_GFAR_NAPI=y 467CONFIG_GFAR_NAPI=y
468# CONFIG_QLA3XXX is not set
440 469
441# 470#
442# Ethernet (10000 Mbit) 471# Ethernet (10000 Mbit)
@@ -445,6 +474,7 @@ CONFIG_GFAR_NAPI=y
445# CONFIG_IXGB is not set 474# CONFIG_IXGB is not set
446# CONFIG_S2IO is not set 475# CONFIG_S2IO is not set
447# CONFIG_MYRI10GE is not set 476# CONFIG_MYRI10GE is not set
477# CONFIG_NETXEN_NIC is not set
448 478
449# 479#
450# Token Ring devices 480# Token Ring devices
@@ -483,6 +513,7 @@ CONFIG_GFAR_NAPI=y
483# Input device support 513# Input device support
484# 514#
485CONFIG_INPUT=y 515CONFIG_INPUT=y
516# CONFIG_INPUT_FF_MEMLESS is not set
486 517
487# 518#
488# Userland interfaces 519# Userland interfaces
@@ -522,6 +553,7 @@ CONFIG_INPUT=y
522# 553#
523# Non-8250 serial port support 554# Non-8250 serial port support
524# 555#
556# CONFIG_SERIAL_UARTLITE is not set
525CONFIG_SERIAL_CORE=y 557CONFIG_SERIAL_CORE=y
526CONFIG_SERIAL_CORE_CONSOLE=y 558CONFIG_SERIAL_CORE_CONSOLE=y
527CONFIG_SERIAL_CPM=y 559CONFIG_SERIAL_CPM=y
@@ -536,7 +568,6 @@ CONFIG_SERIAL_CPM_SCC2=y
536CONFIG_UNIX98_PTYS=y 568CONFIG_UNIX98_PTYS=y
537CONFIG_LEGACY_PTYS=y 569CONFIG_LEGACY_PTYS=y
538CONFIG_LEGACY_PTY_COUNT=256 570CONFIG_LEGACY_PTY_COUNT=256
539# CONFIG_BRIQ_PANEL is not set
540 571
541# 572#
542# IPMI 573# IPMI
@@ -554,10 +585,6 @@ CONFIG_GEN_RTC=y
554# CONFIG_DTLK is not set 585# CONFIG_DTLK is not set
555# CONFIG_R3964 is not set 586# CONFIG_R3964 is not set
556# CONFIG_APPLICOM is not set 587# CONFIG_APPLICOM is not set
557
558#
559# Ftape, the floppy tape device driver
560#
561# CONFIG_AGP is not set 588# CONFIG_AGP is not set
562# CONFIG_DRM is not set 589# CONFIG_DRM is not set
563# CONFIG_RAW_DRIVER is not set 590# CONFIG_RAW_DRIVER is not set
@@ -566,7 +593,6 @@ CONFIG_GEN_RTC=y
566# TPM devices 593# TPM devices
567# 594#
568# CONFIG_TCG_TPM is not set 595# CONFIG_TCG_TPM is not set
569# CONFIG_TELCLOCK is not set
570 596
571# 597#
572# I2C support 598# I2C support
@@ -582,6 +608,7 @@ CONFIG_GEN_RTC=y
582# 608#
583# Dallas's 1-wire bus 609# Dallas's 1-wire bus
584# 610#
611# CONFIG_W1 is not set
585 612
586# 613#
587# Hardware Monitoring support 614# Hardware Monitoring support
@@ -590,17 +617,14 @@ CONFIG_HWMON=y
590# CONFIG_HWMON_VID is not set 617# CONFIG_HWMON_VID is not set
591# CONFIG_SENSORS_ABITUGURU is not set 618# CONFIG_SENSORS_ABITUGURU is not set
592# CONFIG_SENSORS_F71805F is not set 619# CONFIG_SENSORS_F71805F is not set
620# CONFIG_SENSORS_PC87427 is not set
621# CONFIG_SENSORS_VT1211 is not set
593# CONFIG_HWMON_DEBUG_CHIP is not set 622# CONFIG_HWMON_DEBUG_CHIP is not set
594 623
595# 624#
596# Misc devices
597#
598
599#
600# Multimedia devices 625# Multimedia devices
601# 626#
602# CONFIG_VIDEO_DEV is not set 627# CONFIG_VIDEO_DEV is not set
603CONFIG_VIDEO_V4L2=y
604 628
605# 629#
606# Digital Video Broadcasting Devices 630# Digital Video Broadcasting Devices
@@ -612,6 +636,7 @@ CONFIG_VIDEO_V4L2=y
612# 636#
613CONFIG_FIRMWARE_EDID=y 637CONFIG_FIRMWARE_EDID=y
614# CONFIG_FB is not set 638# CONFIG_FB is not set
639# CONFIG_FB_IBM_GXT4500 is not set
615# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 640# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
616 641
617# 642#
@@ -620,6 +645,11 @@ CONFIG_FIRMWARE_EDID=y
620# CONFIG_SOUND is not set 645# CONFIG_SOUND is not set
621 646
622# 647#
648# HID Devices
649#
650CONFIG_HID=y
651
652#
623# USB support 653# USB support
624# 654#
625CONFIG_USB_ARCH_HAS_HCD=y 655CONFIG_USB_ARCH_HAS_HCD=y
@@ -682,6 +712,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
682# 712#
683 713
684# 714#
715# Virtualization
716#
717
718#
685# File systems 719# File systems
686# 720#
687CONFIG_EXT2_FS=y 721CONFIG_EXT2_FS=y
@@ -691,6 +725,7 @@ CONFIG_EXT3_FS=y
691CONFIG_EXT3_FS_XATTR=y 725CONFIG_EXT3_FS_XATTR=y
692# CONFIG_EXT3_FS_POSIX_ACL is not set 726# CONFIG_EXT3_FS_POSIX_ACL is not set
693# CONFIG_EXT3_FS_SECURITY is not set 727# CONFIG_EXT3_FS_SECURITY is not set
728# CONFIG_EXT4DEV_FS is not set
694CONFIG_JBD=y 729CONFIG_JBD=y
695# CONFIG_JBD_DEBUG is not set 730# CONFIG_JBD_DEBUG is not set
696CONFIG_FS_MBCACHE=y 731CONFIG_FS_MBCACHE=y
@@ -698,6 +733,7 @@ CONFIG_FS_MBCACHE=y
698# CONFIG_JFS_FS is not set 733# CONFIG_JFS_FS is not set
699# CONFIG_FS_POSIX_ACL is not set 734# CONFIG_FS_POSIX_ACL is not set
700# CONFIG_XFS_FS is not set 735# CONFIG_XFS_FS is not set
736# CONFIG_GFS2_FS is not set
701# CONFIG_OCFS2_FS is not set 737# CONFIG_OCFS2_FS is not set
702# CONFIG_MINIX_FS is not set 738# CONFIG_MINIX_FS is not set
703# CONFIG_ROMFS_FS is not set 739# CONFIG_ROMFS_FS is not set
@@ -727,8 +763,10 @@ CONFIG_DNOTIFY=y
727# 763#
728CONFIG_PROC_FS=y 764CONFIG_PROC_FS=y
729CONFIG_PROC_KCORE=y 765CONFIG_PROC_KCORE=y
766CONFIG_PROC_SYSCTL=y
730CONFIG_SYSFS=y 767CONFIG_SYSFS=y
731CONFIG_TMPFS=y 768CONFIG_TMPFS=y
769# CONFIG_TMPFS_POSIX_ACL is not set
732# CONFIG_HUGETLB_PAGE is not set 770# CONFIG_HUGETLB_PAGE is not set
733CONFIG_RAMFS=y 771CONFIG_RAMFS=y
734# CONFIG_CONFIGFS_FS is not set 772# CONFIG_CONFIGFS_FS is not set
@@ -794,13 +832,20 @@ CONFIG_PARTITION_ADVANCED=y
794# CONFIG_NLS is not set 832# CONFIG_NLS is not set
795 833
796# 834#
835# Distributed Lock Manager
836#
837# CONFIG_DLM is not set
838
839#
797# Library routines 840# Library routines
798# 841#
842CONFIG_BITREVERSE=y
799# CONFIG_CRC_CCITT is not set 843# CONFIG_CRC_CCITT is not set
800# CONFIG_CRC16 is not set 844# CONFIG_CRC16 is not set
801CONFIG_CRC32=y 845CONFIG_CRC32=y
802# CONFIG_LIBCRC32C is not set 846# CONFIG_LIBCRC32C is not set
803CONFIG_PLIST=y 847CONFIG_PLIST=y
848CONFIG_IOMAP_COPY=y
804 849
805# 850#
806# Instrumentation Support 851# Instrumentation Support
@@ -811,8 +856,11 @@ CONFIG_PLIST=y
811# Kernel hacking 856# Kernel hacking
812# 857#
813# CONFIG_PRINTK_TIME is not set 858# CONFIG_PRINTK_TIME is not set
859CONFIG_ENABLE_MUST_CHECK=y
814# CONFIG_MAGIC_SYSRQ is not set 860# CONFIG_MAGIC_SYSRQ is not set
815# CONFIG_UNUSED_SYMBOLS is not set 861# CONFIG_UNUSED_SYMBOLS is not set
862# CONFIG_DEBUG_FS is not set
863# CONFIG_HEADERS_CHECK is not set
816CONFIG_DEBUG_KERNEL=y 864CONFIG_DEBUG_KERNEL=y
817CONFIG_LOG_BUF_SHIFT=14 865CONFIG_LOG_BUF_SHIFT=14
818CONFIG_DETECT_SOFTLOCKUP=y 866CONFIG_DETECT_SOFTLOCKUP=y
@@ -826,10 +874,10 @@ CONFIG_DEBUG_MUTEXES=y
826# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 874# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
827# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 875# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
828# CONFIG_DEBUG_KOBJECT is not set 876# CONFIG_DEBUG_KOBJECT is not set
877# CONFIG_DEBUG_BUGVERBOSE is not set
829# CONFIG_DEBUG_INFO is not set 878# CONFIG_DEBUG_INFO is not set
830# CONFIG_DEBUG_FS is not set
831# CONFIG_DEBUG_VM is not set 879# CONFIG_DEBUG_VM is not set
832# CONFIG_UNWIND_INFO is not set 880# CONFIG_DEBUG_LIST is not set
833CONFIG_FORCED_INLINING=y 881CONFIG_FORCED_INLINING=y
834# CONFIG_RCU_TORTURE_TEST is not set 882# CONFIG_RCU_TORTURE_TEST is not set
835# CONFIG_DEBUGGER is not set 883# CONFIG_DEBUGGER is not set
@@ -848,7 +896,3 @@ CONFIG_FORCED_INLINING=y
848# Cryptographic options 896# Cryptographic options
849# 897#
850# CONFIG_CRYPTO is not set 898# CONFIG_CRYPTO is not set
851
852#
853# Hardware crypto devices
854#
diff --git a/arch/powerpc/configs/mpc85xx_cds_defconfig b/arch/powerpc/configs/mpc85xx_cds_defconfig
index 72edf9f66829..1f61bce33e32 100644
--- a/arch/powerpc/configs/mpc85xx_cds_defconfig
+++ b/arch/powerpc/configs/mpc85xx_cds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:29:49 2006 4# Mon Jan 22 22:26:46 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24CONFIG_DEFAULT_UIMAGE=y 27CONFIG_DEFAULT_UIMAGE=y
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33CONFIG_PPC_85xx=y 35CONFIG_PPC_85xx=y
@@ -38,6 +40,8 @@ CONFIG_PPC_85xx=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_85xx=y 41CONFIG_85xx=y
40CONFIG_E500=y 42CONFIG_E500=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41CONFIG_BOOKE=y 45CONFIG_BOOKE=y
42CONFIG_FSL_BOOKE=y 46CONFIG_FSL_BOOKE=y
43# CONFIG_PHYS_64BIT is not set 47# CONFIG_PHYS_64BIT is not set
@@ -58,16 +62,20 @@ CONFIG_LOCALVERSION=""
58CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 74CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
70CONFIG_EMBEDDED=y 77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
71CONFIG_KALLSYMS=y 79CONFIG_KALLSYMS=y
72# CONFIG_KALLSYMS_ALL is not set 80# CONFIG_KALLSYMS_ALL is not set
73# CONFIG_KALLSYMS_EXTRA_PASS is not set 81# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -76,12 +84,12 @@ CONFIG_PRINTK=y
76CONFIG_BUG=y 84CONFIG_BUG=y
77CONFIG_ELF_CORE=y 85CONFIG_ELF_CORE=y
78CONFIG_BASE_FULL=y 86CONFIG_BASE_FULL=y
79CONFIG_RT_MUTEXES=y
80CONFIG_FUTEX=y 87CONFIG_FUTEX=y
81CONFIG_EPOLL=y 88CONFIG_EPOLL=y
82CONFIG_SHMEM=y 89CONFIG_SHMEM=y
83CONFIG_SLAB=y 90CONFIG_SLAB=y
84CONFIG_VM_EVENT_COUNTERS=y 91CONFIG_VM_EVENT_COUNTERS=y
92CONFIG_RT_MUTEXES=y
85# CONFIG_TINY_SHMEM is not set 93# CONFIG_TINY_SHMEM is not set
86CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
87# CONFIG_SLOB is not set 95# CONFIG_SLOB is not set
@@ -94,6 +102,7 @@ CONFIG_BASE_SMALL=0
94# 102#
95# Block layer 103# Block layer
96# 104#
105CONFIG_BLOCK=y
97# CONFIG_LBD is not set 106# CONFIG_LBD is not set
98# CONFIG_BLK_DEV_IO_TRACE is not set 107# CONFIG_BLK_DEV_IO_TRACE is not set
99# CONFIG_LSF is not set 108# CONFIG_LSF is not set
@@ -116,6 +125,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
116# Platform support 125# Platform support
117# 126#
118# CONFIG_MPC8540_ADS is not set 127# CONFIG_MPC8540_ADS is not set
128# CONFIG_MPC8560_ADS is not set
119CONFIG_MPC85xx_CDS=y 129CONFIG_MPC85xx_CDS=y
120CONFIG_MPC8540=y 130CONFIG_MPC8540=y
121CONFIG_PPC_INDIRECT_PCI_BE=y 131CONFIG_PPC_INDIRECT_PCI_BE=y
@@ -127,6 +137,7 @@ CONFIG_MPIC=y
127# CONFIG_HIGHMEM is not set 137# CONFIG_HIGHMEM is not set
128# CONFIG_HZ_100 is not set 138# CONFIG_HZ_100 is not set
129CONFIG_HZ_250=y 139CONFIG_HZ_250=y
140# CONFIG_HZ_300 is not set
130# CONFIG_HZ_1000 is not set 141# CONFIG_HZ_1000 is not set
131CONFIG_HZ=250 142CONFIG_HZ=250
132CONFIG_PREEMPT_NONE=y 143CONFIG_PREEMPT_NONE=y
@@ -137,6 +148,7 @@ CONFIG_BINFMT_MISC=y
137CONFIG_MATH_EMULATION=y 148CONFIG_MATH_EMULATION=y
138CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 149CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
139CONFIG_ARCH_FLATMEM_ENABLE=y 150CONFIG_ARCH_FLATMEM_ENABLE=y
151CONFIG_ARCH_POPULATES_NODE_MAP=y
140CONFIG_SELECT_MEMORY_MODEL=y 152CONFIG_SELECT_MEMORY_MODEL=y
141CONFIG_FLATMEM_MANUAL=y 153CONFIG_FLATMEM_MANUAL=y
142# CONFIG_DISCONTIGMEM_MANUAL is not set 154# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -202,6 +214,7 @@ CONFIG_PACKET=y
202CONFIG_UNIX=y 214CONFIG_UNIX=y
203CONFIG_XFRM=y 215CONFIG_XFRM=y
204CONFIG_XFRM_USER=y 216CONFIG_XFRM_USER=y
217# CONFIG_XFRM_SUB_POLICY is not set
205# CONFIG_NET_KEY is not set 218# CONFIG_NET_KEY is not set
206CONFIG_INET=y 219CONFIG_INET=y
207CONFIG_IP_MULTICAST=y 220CONFIG_IP_MULTICAST=y
@@ -223,10 +236,13 @@ CONFIG_SYN_COOKIES=y
223# CONFIG_INET_TUNNEL is not set 236# CONFIG_INET_TUNNEL is not set
224CONFIG_INET_XFRM_MODE_TRANSPORT=y 237CONFIG_INET_XFRM_MODE_TRANSPORT=y
225CONFIG_INET_XFRM_MODE_TUNNEL=y 238CONFIG_INET_XFRM_MODE_TUNNEL=y
239CONFIG_INET_XFRM_MODE_BEET=y
226CONFIG_INET_DIAG=y 240CONFIG_INET_DIAG=y
227CONFIG_INET_TCP_DIAG=y 241CONFIG_INET_TCP_DIAG=y
228# CONFIG_TCP_CONG_ADVANCED is not set 242# CONFIG_TCP_CONG_ADVANCED is not set
229CONFIG_TCP_CONG_BIC=y 243CONFIG_TCP_CONG_CUBIC=y
244CONFIG_DEFAULT_TCP_CONG="cubic"
245# CONFIG_TCP_MD5SIG is not set
230# CONFIG_IPV6 is not set 246# CONFIG_IPV6 is not set
231# CONFIG_INET6_XFRM_TUNNEL is not set 247# CONFIG_INET6_XFRM_TUNNEL is not set
232# CONFIG_INET6_TUNNEL is not set 248# CONFIG_INET6_TUNNEL is not set
@@ -256,7 +272,6 @@ CONFIG_TCP_CONG_BIC=y
256# CONFIG_ATALK is not set 272# CONFIG_ATALK is not set
257# CONFIG_X25 is not set 273# CONFIG_X25 is not set
258# CONFIG_LAPB is not set 274# CONFIG_LAPB is not set
259# CONFIG_NET_DIVERT is not set
260# CONFIG_ECONET is not set 275# CONFIG_ECONET is not set
261# CONFIG_WAN_ROUTER is not set 276# CONFIG_WAN_ROUTER is not set
262 277
@@ -328,9 +343,16 @@ CONFIG_BLK_DEV_INITRD=y
328# CONFIG_ATA_OVER_ETH is not set 343# CONFIG_ATA_OVER_ETH is not set
329 344
330# 345#
346# Misc devices
347#
348# CONFIG_SGI_IOC4 is not set
349# CONFIG_TIFM_CORE is not set
350
351#
331# ATA/ATAPI/MFM/RLL support 352# ATA/ATAPI/MFM/RLL support
332# 353#
333CONFIG_IDE=y 354CONFIG_IDE=y
355CONFIG_IDE_MAX_HWIFS=4
334CONFIG_BLK_DEV_IDE=y 356CONFIG_BLK_DEV_IDE=y
335 357
336# 358#
@@ -353,7 +375,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
353# CONFIG_BLK_DEV_OFFBOARD is not set 375# CONFIG_BLK_DEV_OFFBOARD is not set
354CONFIG_BLK_DEV_GENERIC=y 376CONFIG_BLK_DEV_GENERIC=y
355# CONFIG_BLK_DEV_OPTI621 is not set 377# CONFIG_BLK_DEV_OPTI621 is not set
356# CONFIG_BLK_DEV_SL82C105 is not set
357CONFIG_BLK_DEV_IDEDMA_PCI=y 378CONFIG_BLK_DEV_IDEDMA_PCI=y
358# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 379# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
359# CONFIG_IDEDMA_PCI_AUTO is not set 380# CONFIG_IDEDMA_PCI_AUTO is not set
@@ -367,6 +388,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
367# CONFIG_BLK_DEV_CS5530 is not set 388# CONFIG_BLK_DEV_CS5530 is not set
368# CONFIG_BLK_DEV_HPT34X is not set 389# CONFIG_BLK_DEV_HPT34X is not set
369# CONFIG_BLK_DEV_HPT366 is not set 390# CONFIG_BLK_DEV_HPT366 is not set
391# CONFIG_BLK_DEV_JMICRON is not set
370# CONFIG_BLK_DEV_SC1200 is not set 392# CONFIG_BLK_DEV_SC1200 is not set
371# CONFIG_BLK_DEV_PIIX is not set 393# CONFIG_BLK_DEV_PIIX is not set
372# CONFIG_BLK_DEV_IT821X is not set 394# CONFIG_BLK_DEV_IT821X is not set
@@ -375,6 +397,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
375# CONFIG_BLK_DEV_PDC202XX_NEW is not set 397# CONFIG_BLK_DEV_PDC202XX_NEW is not set
376# CONFIG_BLK_DEV_SVWKS is not set 398# CONFIG_BLK_DEV_SVWKS is not set
377# CONFIG_BLK_DEV_SIIMAGE is not set 399# CONFIG_BLK_DEV_SIIMAGE is not set
400# CONFIG_BLK_DEV_SL82C105 is not set
378# CONFIG_BLK_DEV_SLC90E66 is not set 401# CONFIG_BLK_DEV_SLC90E66 is not set
379# CONFIG_BLK_DEV_TRM290 is not set 402# CONFIG_BLK_DEV_TRM290 is not set
380CONFIG_BLK_DEV_VIA82CXXX=y 403CONFIG_BLK_DEV_VIA82CXXX=y
@@ -389,6 +412,12 @@ CONFIG_BLK_DEV_IDEDMA=y
389# 412#
390# CONFIG_RAID_ATTRS is not set 413# CONFIG_RAID_ATTRS is not set
391# CONFIG_SCSI is not set 414# CONFIG_SCSI is not set
415# CONFIG_SCSI_NETLINK is not set
416
417#
418# Serial ATA (prod) and Parallel ATA (experimental) drivers
419#
420# CONFIG_ATA is not set
392 421
393# 422#
394# Multi-device support (RAID and LVM) 423# Multi-device support (RAID and LVM)
@@ -413,6 +442,7 @@ CONFIG_BLK_DEV_IDEDMA=y
413# 442#
414# Macintosh device drivers 443# Macintosh device drivers
415# 444#
445# CONFIG_MAC_EMUMOUSEBTN is not set
416# CONFIG_WINDFARM is not set 446# CONFIG_WINDFARM is not set
417 447
418# 448#
@@ -444,6 +474,7 @@ CONFIG_PHYLIB=y
444# CONFIG_CICADA_PHY is not set 474# CONFIG_CICADA_PHY is not set
445# CONFIG_VITESSE_PHY is not set 475# CONFIG_VITESSE_PHY is not set
446# CONFIG_SMSC_PHY is not set 476# CONFIG_SMSC_PHY is not set
477# CONFIG_BROADCOM_PHY is not set
447# CONFIG_FIXED_PHY is not set 478# CONFIG_FIXED_PHY is not set
448 479
449# 480#
@@ -483,6 +514,7 @@ CONFIG_E1000_NAPI=y
483# CONFIG_BNX2 is not set 514# CONFIG_BNX2 is not set
484CONFIG_GIANFAR=y 515CONFIG_GIANFAR=y
485CONFIG_GFAR_NAPI=y 516CONFIG_GFAR_NAPI=y
517# CONFIG_QLA3XXX is not set
486 518
487# 519#
488# Ethernet (10000 Mbit) 520# Ethernet (10000 Mbit)
@@ -491,6 +523,7 @@ CONFIG_GFAR_NAPI=y
491# CONFIG_IXGB is not set 523# CONFIG_IXGB is not set
492# CONFIG_S2IO is not set 524# CONFIG_S2IO is not set
493# CONFIG_MYRI10GE is not set 525# CONFIG_MYRI10GE is not set
526# CONFIG_NETXEN_NIC is not set
494 527
495# 528#
496# Token Ring devices 529# Token Ring devices
@@ -529,6 +562,7 @@ CONFIG_GFAR_NAPI=y
529# Input device support 562# Input device support
530# 563#
531CONFIG_INPUT=y 564CONFIG_INPUT=y
565# CONFIG_INPUT_FF_MEMLESS is not set
532 566
533# 567#
534# Userland interfaces 568# Userland interfaces
@@ -573,6 +607,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
573# 607#
574# Non-8250 serial port support 608# Non-8250 serial port support
575# 609#
610# CONFIG_SERIAL_UARTLITE is not set
576CONFIG_SERIAL_CORE=y 611CONFIG_SERIAL_CORE=y
577CONFIG_SERIAL_CORE_CONSOLE=y 612CONFIG_SERIAL_CORE_CONSOLE=y
578# CONFIG_SERIAL_JSM is not set 613# CONFIG_SERIAL_JSM is not set
@@ -596,10 +631,6 @@ CONFIG_GEN_RTC=y
596# CONFIG_DTLK is not set 631# CONFIG_DTLK is not set
597# CONFIG_R3964 is not set 632# CONFIG_R3964 is not set
598# CONFIG_APPLICOM is not set 633# CONFIG_APPLICOM is not set
599
600#
601# Ftape, the floppy tape device driver
602#
603# CONFIG_AGP is not set 634# CONFIG_AGP is not set
604# CONFIG_DRM is not set 635# CONFIG_DRM is not set
605# CONFIG_RAW_DRIVER is not set 636# CONFIG_RAW_DRIVER is not set
@@ -608,7 +639,6 @@ CONFIG_GEN_RTC=y
608# TPM devices 639# TPM devices
609# 640#
610# CONFIG_TCG_TPM is not set 641# CONFIG_TCG_TPM is not set
611# CONFIG_TELCLOCK is not set
612 642
613# 643#
614# I2C support 644# I2C support
@@ -624,6 +654,7 @@ CONFIG_GEN_RTC=y
624# 654#
625# Dallas's 1-wire bus 655# Dallas's 1-wire bus
626# 656#
657# CONFIG_W1 is not set
627 658
628# 659#
629# Hardware Monitoring support 660# Hardware Monitoring support
@@ -632,17 +663,14 @@ CONFIG_HWMON=y
632# CONFIG_HWMON_VID is not set 663# CONFIG_HWMON_VID is not set
633# CONFIG_SENSORS_ABITUGURU is not set 664# CONFIG_SENSORS_ABITUGURU is not set
634# CONFIG_SENSORS_F71805F is not set 665# CONFIG_SENSORS_F71805F is not set
666# CONFIG_SENSORS_PC87427 is not set
667# CONFIG_SENSORS_VT1211 is not set
635# CONFIG_HWMON_DEBUG_CHIP is not set 668# CONFIG_HWMON_DEBUG_CHIP is not set
636 669
637# 670#
638# Misc devices
639#
640
641#
642# Multimedia devices 671# Multimedia devices
643# 672#
644# CONFIG_VIDEO_DEV is not set 673# CONFIG_VIDEO_DEV is not set
645CONFIG_VIDEO_V4L2=y
646 674
647# 675#
648# Digital Video Broadcasting Devices 676# Digital Video Broadcasting Devices
@@ -654,6 +682,7 @@ CONFIG_VIDEO_V4L2=y
654# 682#
655CONFIG_FIRMWARE_EDID=y 683CONFIG_FIRMWARE_EDID=y
656# CONFIG_FB is not set 684# CONFIG_FB is not set
685# CONFIG_FB_IBM_GXT4500 is not set
657# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 686# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
658 687
659# 688#
@@ -662,6 +691,11 @@ CONFIG_FIRMWARE_EDID=y
662# CONFIG_SOUND is not set 691# CONFIG_SOUND is not set
663 692
664# 693#
694# HID Devices
695#
696CONFIG_HID=y
697
698#
665# USB support 699# USB support
666# 700#
667CONFIG_USB_ARCH_HAS_HCD=y 701CONFIG_USB_ARCH_HAS_HCD=y
@@ -724,6 +758,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
724# 758#
725 759
726# 760#
761# Virtualization
762#
763
764#
727# File systems 765# File systems
728# 766#
729CONFIG_EXT2_FS=y 767CONFIG_EXT2_FS=y
@@ -733,6 +771,7 @@ CONFIG_EXT3_FS=y
733CONFIG_EXT3_FS_XATTR=y 771CONFIG_EXT3_FS_XATTR=y
734# CONFIG_EXT3_FS_POSIX_ACL is not set 772# CONFIG_EXT3_FS_POSIX_ACL is not set
735# CONFIG_EXT3_FS_SECURITY is not set 773# CONFIG_EXT3_FS_SECURITY is not set
774# CONFIG_EXT4DEV_FS is not set
736CONFIG_JBD=y 775CONFIG_JBD=y
737# CONFIG_JBD_DEBUG is not set 776# CONFIG_JBD_DEBUG is not set
738CONFIG_FS_MBCACHE=y 777CONFIG_FS_MBCACHE=y
@@ -740,6 +779,7 @@ CONFIG_FS_MBCACHE=y
740# CONFIG_JFS_FS is not set 779# CONFIG_JFS_FS is not set
741# CONFIG_FS_POSIX_ACL is not set 780# CONFIG_FS_POSIX_ACL is not set
742# CONFIG_XFS_FS is not set 781# CONFIG_XFS_FS is not set
782# CONFIG_GFS2_FS is not set
743# CONFIG_OCFS2_FS is not set 783# CONFIG_OCFS2_FS is not set
744# CONFIG_MINIX_FS is not set 784# CONFIG_MINIX_FS is not set
745# CONFIG_ROMFS_FS is not set 785# CONFIG_ROMFS_FS is not set
@@ -769,8 +809,10 @@ CONFIG_DNOTIFY=y
769# 809#
770CONFIG_PROC_FS=y 810CONFIG_PROC_FS=y
771CONFIG_PROC_KCORE=y 811CONFIG_PROC_KCORE=y
812CONFIG_PROC_SYSCTL=y
772CONFIG_SYSFS=y 813CONFIG_SYSFS=y
773CONFIG_TMPFS=y 814CONFIG_TMPFS=y
815# CONFIG_TMPFS_POSIX_ACL is not set
774# CONFIG_HUGETLB_PAGE is not set 816# CONFIG_HUGETLB_PAGE is not set
775CONFIG_RAMFS=y 817CONFIG_RAMFS=y
776# CONFIG_CONFIGFS_FS is not set 818# CONFIG_CONFIGFS_FS is not set
@@ -836,13 +878,20 @@ CONFIG_PARTITION_ADVANCED=y
836# CONFIG_NLS is not set 878# CONFIG_NLS is not set
837 879
838# 880#
881# Distributed Lock Manager
882#
883# CONFIG_DLM is not set
884
885#
839# Library routines 886# Library routines
840# 887#
888CONFIG_BITREVERSE=y
841# CONFIG_CRC_CCITT is not set 889# CONFIG_CRC_CCITT is not set
842# CONFIG_CRC16 is not set 890# CONFIG_CRC16 is not set
843CONFIG_CRC32=y 891CONFIG_CRC32=y
844# CONFIG_LIBCRC32C is not set 892# CONFIG_LIBCRC32C is not set
845CONFIG_PLIST=y 893CONFIG_PLIST=y
894CONFIG_IOMAP_COPY=y
846 895
847# 896#
848# Instrumentation Support 897# Instrumentation Support
@@ -853,8 +902,11 @@ CONFIG_PLIST=y
853# Kernel hacking 902# Kernel hacking
854# 903#
855# CONFIG_PRINTK_TIME is not set 904# CONFIG_PRINTK_TIME is not set
905CONFIG_ENABLE_MUST_CHECK=y
856# CONFIG_MAGIC_SYSRQ is not set 906# CONFIG_MAGIC_SYSRQ is not set
857# CONFIG_UNUSED_SYMBOLS is not set 907# CONFIG_UNUSED_SYMBOLS is not set
908# CONFIG_DEBUG_FS is not set
909# CONFIG_HEADERS_CHECK is not set
858CONFIG_DEBUG_KERNEL=y 910CONFIG_DEBUG_KERNEL=y
859CONFIG_LOG_BUF_SHIFT=14 911CONFIG_LOG_BUF_SHIFT=14
860CONFIG_DETECT_SOFTLOCKUP=y 912CONFIG_DETECT_SOFTLOCKUP=y
@@ -868,10 +920,10 @@ CONFIG_DEBUG_MUTEXES=y
868# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 920# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
869# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 921# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
870# CONFIG_DEBUG_KOBJECT is not set 922# CONFIG_DEBUG_KOBJECT is not set
923# CONFIG_DEBUG_BUGVERBOSE is not set
871# CONFIG_DEBUG_INFO is not set 924# CONFIG_DEBUG_INFO is not set
872# CONFIG_DEBUG_FS is not set
873# CONFIG_DEBUG_VM is not set 925# CONFIG_DEBUG_VM is not set
874# CONFIG_UNWIND_INFO is not set 926# CONFIG_DEBUG_LIST is not set
875CONFIG_FORCED_INLINING=y 927CONFIG_FORCED_INLINING=y
876# CONFIG_RCU_TORTURE_TEST is not set 928# CONFIG_RCU_TORTURE_TEST is not set
877# CONFIG_DEBUGGER is not set 929# CONFIG_DEBUGGER is not set
@@ -889,7 +941,3 @@ CONFIG_FORCED_INLINING=y
889# Cryptographic options 941# Cryptographic options
890# 942#
891# CONFIG_CRYPTO is not set 943# CONFIG_CRYPTO is not set
892
893#
894# Hardware crypto devices
895#
diff --git a/arch/powerpc/configs/mpc8641_hpcn_defconfig b/arch/powerpc/configs/mpc8641_hpcn_defconfig
index 92a527fccf83..53fcd6932f5b 100644
--- a/arch/powerpc/configs/mpc8641_hpcn_defconfig
+++ b/arch/powerpc/configs/mpc8641_hpcn_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:30:15 2006 4# Mon Jan 22 22:27:14 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
23CONFIG_GENERIC_TBSYNC=y 24CONFIG_GENERIC_TBSYNC=y
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24# CONFIG_DEFAULT_UIMAGE is not set 27# CONFIG_DEFAULT_UIMAGE is not set
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29# CONFIG_CLASSIC32 is not set 32# CONFIG_CLASSIC32 is not set
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -38,6 +40,8 @@ CONFIG_PPC_86xx=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_6xx=y 41CONFIG_6xx=y
40CONFIG_PPC_FPU=y 42CONFIG_PPC_FPU=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41CONFIG_ALTIVEC=y 45CONFIG_ALTIVEC=y
42CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
43CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
@@ -62,15 +66,18 @@ CONFIG_LOCALVERSION=""
62# CONFIG_POSIX_MQUEUE is not set 66# CONFIG_POSIX_MQUEUE is not set
63# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
64# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
65CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
66# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
67CONFIG_IKCONFIG=y 71CONFIG_IKCONFIG=y
68CONFIG_IKCONFIG_PROC=y 72CONFIG_IKCONFIG_PROC=y
69# CONFIG_CPUSETS is not set 73# CONFIG_CPUSETS is not set
74CONFIG_SYSFS_DEPRECATED=y
70# CONFIG_RELAY is not set 75# CONFIG_RELAY is not set
71CONFIG_INITRAMFS_SOURCE="" 76CONFIG_INITRAMFS_SOURCE=""
72# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 77# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
78CONFIG_SYSCTL=y
73CONFIG_EMBEDDED=y 79CONFIG_EMBEDDED=y
80CONFIG_SYSCTL_SYSCALL=y
74CONFIG_KALLSYMS=y 81CONFIG_KALLSYMS=y
75# CONFIG_KALLSYMS_ALL is not set 82# CONFIG_KALLSYMS_ALL is not set
76CONFIG_KALLSYMS_EXTRA_PASS=y 83CONFIG_KALLSYMS_EXTRA_PASS=y
@@ -79,15 +86,15 @@ CONFIG_PRINTK=y
79CONFIG_BUG=y 86CONFIG_BUG=y
80# CONFIG_ELF_CORE is not set 87# CONFIG_ELF_CORE is not set
81CONFIG_BASE_FULL=y 88CONFIG_BASE_FULL=y
82CONFIG_RT_MUTEXES=y
83CONFIG_FUTEX=y 89CONFIG_FUTEX=y
84CONFIG_EPOLL=y 90CONFIG_EPOLL=y
85CONFIG_SHMEM=y 91CONFIG_SHMEM=y
86# CONFIG_SLAB is not set 92CONFIG_SLAB=y
87CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
94CONFIG_RT_MUTEXES=y
88# CONFIG_TINY_SHMEM is not set 95# CONFIG_TINY_SHMEM is not set
89CONFIG_BASE_SMALL=0 96CONFIG_BASE_SMALL=0
90CONFIG_SLOB=y 97# CONFIG_SLOB is not set
91 98
92# 99#
93# Loadable module support 100# Loadable module support
@@ -97,6 +104,7 @@ CONFIG_SLOB=y
97# 104#
98# Block layer 105# Block layer
99# 106#
107CONFIG_BLOCK=y
100# CONFIG_LBD is not set 108# CONFIG_LBD is not set
101# CONFIG_BLK_DEV_IO_TRACE is not set 109# CONFIG_BLK_DEV_IO_TRACE is not set
102# CONFIG_LSF is not set 110# CONFIG_LSF is not set
@@ -129,6 +137,7 @@ CONFIG_MPC8641=y
129CONFIG_HIGHMEM=y 137CONFIG_HIGHMEM=y
130# CONFIG_HZ_100 is not set 138# CONFIG_HZ_100 is not set
131# CONFIG_HZ_250 is not set 139# CONFIG_HZ_250 is not set
140# CONFIG_HZ_300 is not set
132CONFIG_HZ_1000=y 141CONFIG_HZ_1000=y
133CONFIG_HZ=1000 142CONFIG_HZ=1000
134CONFIG_PREEMPT_NONE=y 143CONFIG_PREEMPT_NONE=y
@@ -140,6 +149,7 @@ CONFIG_BINFMT_ELF=y
140CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 149CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
141# CONFIG_IRQ_ALL_CPUS is not set 150# CONFIG_IRQ_ALL_CPUS is not set
142CONFIG_ARCH_FLATMEM_ENABLE=y 151CONFIG_ARCH_FLATMEM_ENABLE=y
152CONFIG_ARCH_POPULATES_NODE_MAP=y
143CONFIG_SELECT_MEMORY_MODEL=y 153CONFIG_SELECT_MEMORY_MODEL=y
144CONFIG_FLATMEM_MANUAL=y 154CONFIG_FLATMEM_MANUAL=y
145# CONFIG_DISCONTIGMEM_MANUAL is not set 155# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -206,6 +216,7 @@ CONFIG_PACKET=y
206CONFIG_UNIX=y 216CONFIG_UNIX=y
207CONFIG_XFRM=y 217CONFIG_XFRM=y
208CONFIG_XFRM_USER=y 218CONFIG_XFRM_USER=y
219# CONFIG_XFRM_SUB_POLICY is not set
209# CONFIG_NET_KEY is not set 220# CONFIG_NET_KEY is not set
210CONFIG_INET=y 221CONFIG_INET=y
211# CONFIG_IP_MULTICAST is not set 222# CONFIG_IP_MULTICAST is not set
@@ -226,21 +237,29 @@ CONFIG_IP_PNP_RARP=y
226# CONFIG_INET_TUNNEL is not set 237# CONFIG_INET_TUNNEL is not set
227CONFIG_INET_XFRM_MODE_TRANSPORT=y 238CONFIG_INET_XFRM_MODE_TRANSPORT=y
228CONFIG_INET_XFRM_MODE_TUNNEL=y 239CONFIG_INET_XFRM_MODE_TUNNEL=y
240CONFIG_INET_XFRM_MODE_BEET=y
229CONFIG_INET_DIAG=y 241CONFIG_INET_DIAG=y
230CONFIG_INET_TCP_DIAG=y 242CONFIG_INET_TCP_DIAG=y
231# CONFIG_TCP_CONG_ADVANCED is not set 243# CONFIG_TCP_CONG_ADVANCED is not set
232CONFIG_TCP_CONG_BIC=y 244CONFIG_TCP_CONG_CUBIC=y
245CONFIG_DEFAULT_TCP_CONG="cubic"
246# CONFIG_TCP_MD5SIG is not set
233CONFIG_IPV6=y 247CONFIG_IPV6=y
234# CONFIG_IPV6_PRIVACY is not set 248# CONFIG_IPV6_PRIVACY is not set
235# CONFIG_IPV6_ROUTER_PREF is not set 249# CONFIG_IPV6_ROUTER_PREF is not set
236# CONFIG_INET6_AH is not set 250# CONFIG_INET6_AH is not set
237# CONFIG_INET6_ESP is not set 251# CONFIG_INET6_ESP is not set
238# CONFIG_INET6_IPCOMP is not set 252# CONFIG_INET6_IPCOMP is not set
253# CONFIG_IPV6_MIP6 is not set
239# CONFIG_INET6_XFRM_TUNNEL is not set 254# CONFIG_INET6_XFRM_TUNNEL is not set
240# CONFIG_INET6_TUNNEL is not set 255# CONFIG_INET6_TUNNEL is not set
241CONFIG_INET6_XFRM_MODE_TRANSPORT=y 256CONFIG_INET6_XFRM_MODE_TRANSPORT=y
242CONFIG_INET6_XFRM_MODE_TUNNEL=y 257CONFIG_INET6_XFRM_MODE_TUNNEL=y
258CONFIG_INET6_XFRM_MODE_BEET=y
259# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
260CONFIG_IPV6_SIT=y
243# CONFIG_IPV6_TUNNEL is not set 261# CONFIG_IPV6_TUNNEL is not set
262# CONFIG_IPV6_MULTIPLE_TABLES is not set
244# CONFIG_NETWORK_SECMARK is not set 263# CONFIG_NETWORK_SECMARK is not set
245# CONFIG_NETFILTER is not set 264# CONFIG_NETFILTER is not set
246 265
@@ -267,7 +286,6 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
267# CONFIG_ATALK is not set 286# CONFIG_ATALK is not set
268# CONFIG_X25 is not set 287# CONFIG_X25 is not set
269# CONFIG_LAPB is not set 288# CONFIG_LAPB is not set
270# CONFIG_NET_DIVERT is not set
271# CONFIG_ECONET is not set 289# CONFIG_ECONET is not set
272# CONFIG_WAN_ROUTER is not set 290# CONFIG_WAN_ROUTER is not set
273 291
@@ -339,6 +357,12 @@ CONFIG_BLK_DEV_INITRD=y
339# CONFIG_ATA_OVER_ETH is not set 357# CONFIG_ATA_OVER_ETH is not set
340 358
341# 359#
360# Misc devices
361#
362# CONFIG_SGI_IOC4 is not set
363# CONFIG_TIFM_CORE is not set
364
365#
342# ATA/ATAPI/MFM/RLL support 366# ATA/ATAPI/MFM/RLL support
343# 367#
344# CONFIG_IDE is not set 368# CONFIG_IDE is not set
@@ -348,6 +372,12 @@ CONFIG_BLK_DEV_INITRD=y
348# 372#
349# CONFIG_RAID_ATTRS is not set 373# CONFIG_RAID_ATTRS is not set
350# CONFIG_SCSI is not set 374# CONFIG_SCSI is not set
375# CONFIG_SCSI_NETLINK is not set
376
377#
378# Serial ATA (prod) and Parallel ATA (experimental) drivers
379#
380# CONFIG_ATA is not set
351 381
352# 382#
353# Multi-device support (RAID and LVM) 383# Multi-device support (RAID and LVM)
@@ -372,6 +402,7 @@ CONFIG_BLK_DEV_INITRD=y
372# 402#
373# Macintosh device drivers 403# Macintosh device drivers
374# 404#
405# CONFIG_MAC_EMUMOUSEBTN is not set
375# CONFIG_WINDFARM is not set 406# CONFIG_WINDFARM is not set
376 407
377# 408#
@@ -403,6 +434,7 @@ CONFIG_PHYLIB=y
403# CONFIG_CICADA_PHY is not set 434# CONFIG_CICADA_PHY is not set
404CONFIG_VITESSE_PHY=y 435CONFIG_VITESSE_PHY=y
405# CONFIG_SMSC_PHY is not set 436# CONFIG_SMSC_PHY is not set
437# CONFIG_BROADCOM_PHY is not set
406# CONFIG_FIXED_PHY is not set 438# CONFIG_FIXED_PHY is not set
407 439
408# 440#
@@ -440,6 +472,7 @@ CONFIG_MII=y
440# CONFIG_BNX2 is not set 472# CONFIG_BNX2 is not set
441CONFIG_GIANFAR=y 473CONFIG_GIANFAR=y
442# CONFIG_GFAR_NAPI is not set 474# CONFIG_GFAR_NAPI is not set
475# CONFIG_QLA3XXX is not set
443 476
444# 477#
445# Ethernet (10000 Mbit) 478# Ethernet (10000 Mbit)
@@ -448,6 +481,7 @@ CONFIG_GIANFAR=y
448# CONFIG_IXGB is not set 481# CONFIG_IXGB is not set
449# CONFIG_S2IO is not set 482# CONFIG_S2IO is not set
450# CONFIG_MYRI10GE is not set 483# CONFIG_MYRI10GE is not set
484# CONFIG_NETXEN_NIC is not set
451 485
452# 486#
453# Token Ring devices 487# Token Ring devices
@@ -486,6 +520,7 @@ CONFIG_GIANFAR=y
486# Input device support 520# Input device support
487# 521#
488CONFIG_INPUT=y 522CONFIG_INPUT=y
523# CONFIG_INPUT_FF_MEMLESS is not set
489 524
490# 525#
491# Userland interfaces 526# Userland interfaces
@@ -542,6 +577,7 @@ CONFIG_SERIAL_8250_RSA=y
542# 577#
543# Non-8250 serial port support 578# Non-8250 serial port support
544# 579#
580# CONFIG_SERIAL_UARTLITE is not set
545CONFIG_SERIAL_CORE=y 581CONFIG_SERIAL_CORE=y
546CONFIG_SERIAL_CORE_CONSOLE=y 582CONFIG_SERIAL_CORE_CONSOLE=y
547# CONFIG_SERIAL_JSM is not set 583# CONFIG_SERIAL_JSM is not set
@@ -563,10 +599,6 @@ CONFIG_UNIX98_PTYS=y
563# CONFIG_DTLK is not set 599# CONFIG_DTLK is not set
564# CONFIG_R3964 is not set 600# CONFIG_R3964 is not set
565# CONFIG_APPLICOM is not set 601# CONFIG_APPLICOM is not set
566
567#
568# Ftape, the floppy tape device driver
569#
570# CONFIG_AGP is not set 602# CONFIG_AGP is not set
571# CONFIG_DRM is not set 603# CONFIG_DRM is not set
572# CONFIG_RAW_DRIVER is not set 604# CONFIG_RAW_DRIVER is not set
@@ -575,7 +607,6 @@ CONFIG_UNIX98_PTYS=y
575# TPM devices 607# TPM devices
576# 608#
577# CONFIG_TCG_TPM is not set 609# CONFIG_TCG_TPM is not set
578# CONFIG_TELCLOCK is not set
579 610
580# 611#
581# I2C support 612# I2C support
@@ -640,6 +671,7 @@ CONFIG_SENSORS_EEPROM=y
640# 671#
641# Dallas's 1-wire bus 672# Dallas's 1-wire bus
642# 673#
674# CONFIG_W1 is not set
643 675
644# 676#
645# Hardware Monitoring support 677# Hardware Monitoring support
@@ -648,14 +680,9 @@ CONFIG_SENSORS_EEPROM=y
648# CONFIG_HWMON_VID is not set 680# CONFIG_HWMON_VID is not set
649 681
650# 682#
651# Misc devices
652#
653
654#
655# Multimedia devices 683# Multimedia devices
656# 684#
657# CONFIG_VIDEO_DEV is not set 685# CONFIG_VIDEO_DEV is not set
658CONFIG_VIDEO_V4L2=y
659 686
660# 687#
661# Digital Video Broadcasting Devices 688# Digital Video Broadcasting Devices
@@ -667,6 +694,7 @@ CONFIG_VIDEO_V4L2=y
667# 694#
668CONFIG_FIRMWARE_EDID=y 695CONFIG_FIRMWARE_EDID=y
669# CONFIG_FB is not set 696# CONFIG_FB is not set
697# CONFIG_FB_IBM_GXT4500 is not set
670 698
671# 699#
672# Console display driver support 700# Console display driver support
@@ -682,6 +710,11 @@ CONFIG_DUMMY_CONSOLE=y
682# CONFIG_SOUND is not set 710# CONFIG_SOUND is not set
683 711
684# 712#
713# HID Devices
714#
715CONFIG_HID=y
716
717#
685# USB support 718# USB support
686# 719#
687CONFIG_USB_ARCH_HAS_HCD=y 720CONFIG_USB_ARCH_HAS_HCD=y
@@ -744,6 +777,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
744# 777#
745 778
746# 779#
780# Virtualization
781#
782
783#
747# File systems 784# File systems
748# 785#
749CONFIG_EXT2_FS=y 786CONFIG_EXT2_FS=y
@@ -753,6 +790,7 @@ CONFIG_EXT3_FS=y
753CONFIG_EXT3_FS_XATTR=y 790CONFIG_EXT3_FS_XATTR=y
754# CONFIG_EXT3_FS_POSIX_ACL is not set 791# CONFIG_EXT3_FS_POSIX_ACL is not set
755# CONFIG_EXT3_FS_SECURITY is not set 792# CONFIG_EXT3_FS_SECURITY is not set
793# CONFIG_EXT4DEV_FS is not set
756CONFIG_JBD=y 794CONFIG_JBD=y
757# CONFIG_JBD_DEBUG is not set 795# CONFIG_JBD_DEBUG is not set
758CONFIG_FS_MBCACHE=y 796CONFIG_FS_MBCACHE=y
@@ -760,6 +798,7 @@ CONFIG_FS_MBCACHE=y
760# CONFIG_JFS_FS is not set 798# CONFIG_JFS_FS is not set
761# CONFIG_FS_POSIX_ACL is not set 799# CONFIG_FS_POSIX_ACL is not set
762# CONFIG_XFS_FS is not set 800# CONFIG_XFS_FS is not set
801# CONFIG_GFS2_FS is not set
763# CONFIG_OCFS2_FS is not set 802# CONFIG_OCFS2_FS is not set
764# CONFIG_MINIX_FS is not set 803# CONFIG_MINIX_FS is not set
765# CONFIG_ROMFS_FS is not set 804# CONFIG_ROMFS_FS is not set
@@ -788,8 +827,10 @@ CONFIG_FS_MBCACHE=y
788# 827#
789CONFIG_PROC_FS=y 828CONFIG_PROC_FS=y
790CONFIG_PROC_KCORE=y 829CONFIG_PROC_KCORE=y
830CONFIG_PROC_SYSCTL=y
791CONFIG_SYSFS=y 831CONFIG_SYSFS=y
792CONFIG_TMPFS=y 832CONFIG_TMPFS=y
833# CONFIG_TMPFS_POSIX_ACL is not set
793# CONFIG_HUGETLB_PAGE is not set 834# CONFIG_HUGETLB_PAGE is not set
794CONFIG_RAMFS=y 835CONFIG_RAMFS=y
795# CONFIG_CONFIGFS_FS is not set 836# CONFIG_CONFIGFS_FS is not set
@@ -904,13 +945,20 @@ CONFIG_NLS_DEFAULT="iso8859-1"
904# CONFIG_NLS_UTF8 is not set 945# CONFIG_NLS_UTF8 is not set
905 946
906# 947#
948# Distributed Lock Manager
949#
950# CONFIG_DLM is not set
951
952#
907# Library routines 953# Library routines
908# 954#
955CONFIG_BITREVERSE=y
909# CONFIG_CRC_CCITT is not set 956# CONFIG_CRC_CCITT is not set
910# CONFIG_CRC16 is not set 957# CONFIG_CRC16 is not set
911CONFIG_CRC32=y 958CONFIG_CRC32=y
912# CONFIG_LIBCRC32C is not set 959# CONFIG_LIBCRC32C is not set
913CONFIG_PLIST=y 960CONFIG_PLIST=y
961CONFIG_IOMAP_COPY=y
914 962
915# 963#
916# Instrumentation Support 964# Instrumentation Support
@@ -921,12 +969,16 @@ CONFIG_PLIST=y
921# Kernel hacking 969# Kernel hacking
922# 970#
923# CONFIG_PRINTK_TIME is not set 971# CONFIG_PRINTK_TIME is not set
972CONFIG_ENABLE_MUST_CHECK=y
924# CONFIG_MAGIC_SYSRQ is not set 973# CONFIG_MAGIC_SYSRQ is not set
925# CONFIG_UNUSED_SYMBOLS is not set 974# CONFIG_UNUSED_SYMBOLS is not set
975# CONFIG_DEBUG_FS is not set
976# CONFIG_HEADERS_CHECK is not set
926CONFIG_DEBUG_KERNEL=y 977CONFIG_DEBUG_KERNEL=y
927CONFIG_LOG_BUF_SHIFT=14 978CONFIG_LOG_BUF_SHIFT=14
928CONFIG_DETECT_SOFTLOCKUP=y 979CONFIG_DETECT_SOFTLOCKUP=y
929# CONFIG_SCHEDSTATS is not set 980# CONFIG_SCHEDSTATS is not set
981# CONFIG_DEBUG_SLAB is not set
930# CONFIG_DEBUG_RT_MUTEXES is not set 982# CONFIG_DEBUG_RT_MUTEXES is not set
931# CONFIG_RT_MUTEX_TESTER is not set 983# CONFIG_RT_MUTEX_TESTER is not set
932# CONFIG_DEBUG_SPINLOCK is not set 984# CONFIG_DEBUG_SPINLOCK is not set
@@ -936,10 +988,10 @@ CONFIG_DETECT_SOFTLOCKUP=y
936# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 988# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
937# CONFIG_DEBUG_KOBJECT is not set 989# CONFIG_DEBUG_KOBJECT is not set
938# CONFIG_DEBUG_HIGHMEM is not set 990# CONFIG_DEBUG_HIGHMEM is not set
991# CONFIG_DEBUG_BUGVERBOSE is not set
939# CONFIG_DEBUG_INFO is not set 992# CONFIG_DEBUG_INFO is not set
940# CONFIG_DEBUG_FS is not set
941# CONFIG_DEBUG_VM is not set 993# CONFIG_DEBUG_VM is not set
942# CONFIG_UNWIND_INFO is not set 994# CONFIG_DEBUG_LIST is not set
943CONFIG_FORCED_INLINING=y 995CONFIG_FORCED_INLINING=y
944# CONFIG_RCU_TORTURE_TEST is not set 996# CONFIG_RCU_TORTURE_TEST is not set
945# CONFIG_DEBUGGER is not set 997# CONFIG_DEBUGGER is not set
@@ -957,7 +1009,3 @@ CONFIG_FORCED_INLINING=y
957# Cryptographic options 1009# Cryptographic options
958# 1010#
959# CONFIG_CRYPTO is not set 1011# CONFIG_CRYPTO is not set
960
961#
962# Hardware crypto devices
963#
diff --git a/arch/powerpc/configs/pmac32_defconfig b/arch/powerpc/configs/pmac32_defconfig
index 765c8bb90ddd..f611df480fd9 100644
--- a/arch/powerpc/configs/pmac32_defconfig
+++ b/arch/powerpc/configs/pmac32_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:30:23 2006 4# Mon Jan 22 22:28:56 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -10,6 +10,7 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
13CONFIG_GENERIC_HWEIGHT=y 14CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 16CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -21,13 +22,14 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
21CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
22# CONFIG_PPC_UDBG_16550 is not set 23# CONFIG_PPC_UDBG_16550 is not set
23# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
24# CONFIG_DEFAULT_UIMAGE is not set 27# CONFIG_DEFAULT_UIMAGE is not set
25 28
26# 29#
27# Processor support 30# Processor support
28# 31#
29CONFIG_CLASSIC32=y 32CONFIG_CLASSIC32=y
30# CONFIG_PPC_52xx is not set
31# CONFIG_PPC_82xx is not set 33# CONFIG_PPC_82xx is not set
32# CONFIG_PPC_83xx is not set 34# CONFIG_PPC_83xx is not set
33# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
@@ -38,6 +40,8 @@ CONFIG_CLASSIC32=y
38# CONFIG_E200 is not set 40# CONFIG_E200 is not set
39CONFIG_6xx=y 41CONFIG_6xx=y
40CONFIG_PPC_FPU=y 42CONFIG_PPC_FPU=y
43# CONFIG_PPC_DCR_NATIVE is not set
44# CONFIG_PPC_DCR_MMIO is not set
41CONFIG_ALTIVEC=y 45CONFIG_ALTIVEC=y
42CONFIG_PPC_STD_MMU=y 46CONFIG_PPC_STD_MMU=y
43CONFIG_PPC_STD_MMU_32=y 47CONFIG_PPC_STD_MMU_32=y
@@ -58,17 +62,21 @@ CONFIG_LOCALVERSION=""
58# CONFIG_LOCALVERSION_AUTO is not set 62# CONFIG_LOCALVERSION_AUTO is not set
59CONFIG_SWAP=y 63CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
61CONFIG_POSIX_MQUEUE=y 66CONFIG_POSIX_MQUEUE=y
62# CONFIG_BSD_PROCESS_ACCT is not set 67# CONFIG_BSD_PROCESS_ACCT is not set
63# CONFIG_TASKSTATS is not set 68# CONFIG_TASKSTATS is not set
64CONFIG_SYSCTL=y 69# CONFIG_UTS_NS is not set
65# CONFIG_AUDIT is not set 70# CONFIG_AUDIT is not set
66CONFIG_IKCONFIG=y 71CONFIG_IKCONFIG=y
67CONFIG_IKCONFIG_PROC=y 72CONFIG_IKCONFIG_PROC=y
73CONFIG_SYSFS_DEPRECATED=y
68# CONFIG_RELAY is not set 74# CONFIG_RELAY is not set
69CONFIG_INITRAMFS_SOURCE="" 75CONFIG_INITRAMFS_SOURCE=""
70# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 76# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
77CONFIG_SYSCTL=y
71# CONFIG_EMBEDDED is not set 78# CONFIG_EMBEDDED is not set
79CONFIG_SYSCTL_SYSCALL=y
72CONFIG_KALLSYMS=y 80CONFIG_KALLSYMS=y
73# CONFIG_KALLSYMS_ALL is not set 81# CONFIG_KALLSYMS_ALL is not set
74# CONFIG_KALLSYMS_EXTRA_PASS is not set 82# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -77,12 +85,12 @@ CONFIG_PRINTK=y
77CONFIG_BUG=y 85CONFIG_BUG=y
78CONFIG_ELF_CORE=y 86CONFIG_ELF_CORE=y
79CONFIG_BASE_FULL=y 87CONFIG_BASE_FULL=y
80CONFIG_RT_MUTEXES=y
81CONFIG_FUTEX=y 88CONFIG_FUTEX=y
82CONFIG_EPOLL=y 89CONFIG_EPOLL=y
83CONFIG_SHMEM=y 90CONFIG_SHMEM=y
84CONFIG_SLAB=y 91CONFIG_SLAB=y
85CONFIG_VM_EVENT_COUNTERS=y 92CONFIG_VM_EVENT_COUNTERS=y
93CONFIG_RT_MUTEXES=y
86# CONFIG_TINY_SHMEM is not set 94# CONFIG_TINY_SHMEM is not set
87CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
88# CONFIG_SLOB is not set 96# CONFIG_SLOB is not set
@@ -100,6 +108,7 @@ CONFIG_KMOD=y
100# 108#
101# Block layer 109# Block layer
102# 110#
111CONFIG_BLOCK=y
103CONFIG_LBD=y 112CONFIG_LBD=y
104# CONFIG_BLK_DEV_IO_TRACE is not set 113# CONFIG_BLK_DEV_IO_TRACE is not set
105CONFIG_LSF=y 114CONFIG_LSF=y
@@ -121,18 +130,22 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
121# Platform support 130# Platform support
122# 131#
123CONFIG_PPC_MULTIPLATFORM=y 132CONFIG_PPC_MULTIPLATFORM=y
124# CONFIG_PPC_ISERIES is not set
125# CONFIG_EMBEDDED6xx is not set 133# CONFIG_EMBEDDED6xx is not set
126# CONFIG_APUS is not set 134# CONFIG_APUS is not set
127# CONFIG_PPC_CHRP is not set 135# CONFIG_PPC_CHRP is not set
136# CONFIG_PPC_MPC52xx is not set
137# CONFIG_PPC_EFIKA is not set
138# CONFIG_PPC_LITE5200 is not set
128CONFIG_PPC_PMAC=y 139CONFIG_PPC_PMAC=y
129# CONFIG_PPC_CELL is not set 140# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set 141# CONFIG_PPC_CELL_NATIVE is not set
131# CONFIG_UDBG_RTAS_CONSOLE is not set 142CONFIG_PPC_NATIVE=y
132# CONFIG_PPC_RTAS is not set 143# CONFIG_PPC_RTAS is not set
133# CONFIG_MMIO_NVRAM is not set 144# CONFIG_MMIO_NVRAM is not set
134CONFIG_PPC_MPC106=y 145CONFIG_PPC_MPC106=y
135# CONFIG_PPC_970_NAP is not set 146# CONFIG_PPC_970_NAP is not set
147# CONFIG_PPC_INDIRECT_IO is not set
148# CONFIG_GENERIC_IOMAP is not set
136CONFIG_CPU_FREQ=y 149CONFIG_CPU_FREQ=y
137CONFIG_CPU_FREQ_TABLE=y 150CONFIG_CPU_FREQ_TABLE=y
138# CONFIG_CPU_FREQ_DEBUG is not set 151# CONFIG_CPU_FREQ_DEBUG is not set
@@ -157,6 +170,7 @@ CONFIG_MPIC=y
157# CONFIG_HIGHMEM is not set 170# CONFIG_HIGHMEM is not set
158# CONFIG_HZ_100 is not set 171# CONFIG_HZ_100 is not set
159CONFIG_HZ_250=y 172CONFIG_HZ_250=y
173# CONFIG_HZ_300 is not set
160# CONFIG_HZ_1000 is not set 174# CONFIG_HZ_1000 is not set
161CONFIG_HZ=250 175CONFIG_HZ=250
162CONFIG_PREEMPT_NONE=y 176CONFIG_PREEMPT_NONE=y
@@ -167,6 +181,7 @@ CONFIG_BINFMT_MISC=m
167CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 181CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
168# CONFIG_KEXEC is not set 182# CONFIG_KEXEC is not set
169CONFIG_ARCH_FLATMEM_ENABLE=y 183CONFIG_ARCH_FLATMEM_ENABLE=y
184CONFIG_ARCH_POPULATES_NODE_MAP=y
170CONFIG_SELECT_MEMORY_MODEL=y 185CONFIG_SELECT_MEMORY_MODEL=y
171CONFIG_FLATMEM_MANUAL=y 186CONFIG_FLATMEM_MANUAL=y
172# CONFIG_DISCONTIGMEM_MANUAL is not set 187# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -181,6 +196,8 @@ CONFIG_PROC_DEVICETREE=y
181CONFIG_PM=y 196CONFIG_PM=y
182# CONFIG_PM_LEGACY is not set 197# CONFIG_PM_LEGACY is not set
183CONFIG_PM_DEBUG=y 198CONFIG_PM_DEBUG=y
199# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
200CONFIG_PM_SYSFS_DEPRECATED=y
184CONFIG_SOFTWARE_SUSPEND=y 201CONFIG_SOFTWARE_SUSPEND=y
185CONFIG_PM_STD_PARTITION="" 202CONFIG_PM_STD_PARTITION=""
186CONFIG_SECCOMP=y 203CONFIG_SECCOMP=y
@@ -254,6 +271,7 @@ CONFIG_PACKET=y
254CONFIG_UNIX=y 271CONFIG_UNIX=y
255CONFIG_XFRM=y 272CONFIG_XFRM=y
256CONFIG_XFRM_USER=y 273CONFIG_XFRM_USER=y
274# CONFIG_XFRM_SUB_POLICY is not set
257CONFIG_NET_KEY=y 275CONFIG_NET_KEY=y
258CONFIG_INET=y 276CONFIG_INET=y
259CONFIG_IP_MULTICAST=y 277CONFIG_IP_MULTICAST=y
@@ -272,10 +290,13 @@ CONFIG_INET_ESP=y
272# CONFIG_INET_TUNNEL is not set 290# CONFIG_INET_TUNNEL is not set
273# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 291# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
274# CONFIG_INET_XFRM_MODE_TUNNEL is not set 292# CONFIG_INET_XFRM_MODE_TUNNEL is not set
293CONFIG_INET_XFRM_MODE_BEET=y
275CONFIG_INET_DIAG=y 294CONFIG_INET_DIAG=y
276CONFIG_INET_TCP_DIAG=y 295CONFIG_INET_TCP_DIAG=y
277# CONFIG_TCP_CONG_ADVANCED is not set 296# CONFIG_TCP_CONG_ADVANCED is not set
278CONFIG_TCP_CONG_BIC=y 297CONFIG_TCP_CONG_CUBIC=y
298CONFIG_DEFAULT_TCP_CONG="cubic"
299# CONFIG_TCP_MD5SIG is not set
279 300
280# 301#
281# IP: Virtual Server Configuration 302# IP: Virtual Server Configuration
@@ -292,14 +313,33 @@ CONFIG_NETFILTER=y
292# Core Netfilter Configuration 313# Core Netfilter Configuration
293# 314#
294# CONFIG_NETFILTER_NETLINK is not set 315# CONFIG_NETFILTER_NETLINK is not set
316CONFIG_NF_CONNTRACK_ENABLED=m
317CONFIG_NF_CONNTRACK_SUPPORT=y
318# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
319CONFIG_NF_CONNTRACK=m
320# CONFIG_NF_CT_ACCT is not set
321# CONFIG_NF_CONNTRACK_MARK is not set
322# CONFIG_NF_CONNTRACK_EVENTS is not set
323# CONFIG_NF_CT_PROTO_SCTP is not set
324# CONFIG_NF_CONNTRACK_AMANDA is not set
325CONFIG_NF_CONNTRACK_FTP=m
326# CONFIG_NF_CONNTRACK_H323 is not set
327CONFIG_NF_CONNTRACK_IRC=m
328# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
329# CONFIG_NF_CONNTRACK_PPTP is not set
330# CONFIG_NF_CONNTRACK_SIP is not set
331CONFIG_NF_CONNTRACK_TFTP=m
295CONFIG_NETFILTER_XTABLES=m 332CONFIG_NETFILTER_XTABLES=m
296CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 333CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
334# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
297CONFIG_NETFILTER_XT_TARGET_MARK=m 335CONFIG_NETFILTER_XT_TARGET_MARK=m
298CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 336CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
337CONFIG_NETFILTER_XT_TARGET_NFLOG=m
299CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 338CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
300CONFIG_NETFILTER_XT_MATCH_COMMENT=m 339CONFIG_NETFILTER_XT_MATCH_COMMENT=m
301CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 340CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
302CONFIG_NETFILTER_XT_MATCH_DCCP=m 341CONFIG_NETFILTER_XT_MATCH_DCCP=m
342CONFIG_NETFILTER_XT_MATCH_DSCP=m
303CONFIG_NETFILTER_XT_MATCH_ESP=m 343CONFIG_NETFILTER_XT_MATCH_ESP=m
304CONFIG_NETFILTER_XT_MATCH_HELPER=m 344CONFIG_NETFILTER_XT_MATCH_HELPER=m
305CONFIG_NETFILTER_XT_MATCH_LENGTH=m 345CONFIG_NETFILTER_XT_MATCH_LENGTH=m
@@ -312,61 +352,49 @@ CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
312# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 352# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
313CONFIG_NETFILTER_XT_MATCH_REALM=m 353CONFIG_NETFILTER_XT_MATCH_REALM=m
314CONFIG_NETFILTER_XT_MATCH_SCTP=m 354CONFIG_NETFILTER_XT_MATCH_SCTP=m
315CONFIG_NETFILTER_XT_MATCH_STATE=m 355# CONFIG_NETFILTER_XT_MATCH_STATE is not set
316# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set 356# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
317CONFIG_NETFILTER_XT_MATCH_STRING=m 357CONFIG_NETFILTER_XT_MATCH_STRING=m
318CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 358CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
359# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
319 360
320# 361#
321# IP: Netfilter Configuration 362# IP: Netfilter Configuration
322# 363#
323CONFIG_IP_NF_CONNTRACK=m 364CONFIG_NF_CONNTRACK_IPV4=m
324# CONFIG_IP_NF_CT_ACCT is not set 365CONFIG_NF_CONNTRACK_PROC_COMPAT=y
325# CONFIG_IP_NF_CONNTRACK_MARK is not set
326# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
327# CONFIG_IP_NF_CT_PROTO_SCTP is not set
328CONFIG_IP_NF_FTP=m
329CONFIG_IP_NF_IRC=m
330CONFIG_IP_NF_NETBIOS_NS=m
331CONFIG_IP_NF_TFTP=m
332CONFIG_IP_NF_AMANDA=m
333CONFIG_IP_NF_PPTP=m
334CONFIG_IP_NF_H323=m
335# CONFIG_IP_NF_SIP is not set
336# CONFIG_IP_NF_QUEUE is not set 366# CONFIG_IP_NF_QUEUE is not set
337CONFIG_IP_NF_IPTABLES=m 367CONFIG_IP_NF_IPTABLES=m
338CONFIG_IP_NF_MATCH_IPRANGE=m 368CONFIG_IP_NF_MATCH_IPRANGE=m
339CONFIG_IP_NF_MATCH_TOS=m 369CONFIG_IP_NF_MATCH_TOS=m
340CONFIG_IP_NF_MATCH_RECENT=m 370CONFIG_IP_NF_MATCH_RECENT=m
341CONFIG_IP_NF_MATCH_ECN=m 371CONFIG_IP_NF_MATCH_ECN=m
342CONFIG_IP_NF_MATCH_DSCP=m
343CONFIG_IP_NF_MATCH_AH=m 372CONFIG_IP_NF_MATCH_AH=m
344CONFIG_IP_NF_MATCH_TTL=m 373CONFIG_IP_NF_MATCH_TTL=m
345CONFIG_IP_NF_MATCH_OWNER=m 374CONFIG_IP_NF_MATCH_OWNER=m
346CONFIG_IP_NF_MATCH_ADDRTYPE=m 375CONFIG_IP_NF_MATCH_ADDRTYPE=m
347CONFIG_IP_NF_MATCH_HASHLIMIT=m
348CONFIG_IP_NF_FILTER=m 376CONFIG_IP_NF_FILTER=m
349CONFIG_IP_NF_TARGET_REJECT=m 377CONFIG_IP_NF_TARGET_REJECT=m
350CONFIG_IP_NF_TARGET_LOG=m 378CONFIG_IP_NF_TARGET_LOG=m
351CONFIG_IP_NF_TARGET_ULOG=m 379CONFIG_IP_NF_TARGET_ULOG=m
352CONFIG_IP_NF_TARGET_TCPMSS=m 380CONFIG_IP_NF_TARGET_TCPMSS=m
353CONFIG_IP_NF_NAT=m 381CONFIG_NF_NAT=m
354CONFIG_IP_NF_NAT_NEEDED=y 382CONFIG_NF_NAT_NEEDED=y
355CONFIG_IP_NF_TARGET_MASQUERADE=m 383CONFIG_IP_NF_TARGET_MASQUERADE=m
356CONFIG_IP_NF_TARGET_REDIRECT=m 384CONFIG_IP_NF_TARGET_REDIRECT=m
357CONFIG_IP_NF_TARGET_NETMAP=m 385CONFIG_IP_NF_TARGET_NETMAP=m
358CONFIG_IP_NF_TARGET_SAME=m 386CONFIG_IP_NF_TARGET_SAME=m
359CONFIG_IP_NF_NAT_SNMP_BASIC=m 387# CONFIG_NF_NAT_SNMP_BASIC is not set
360CONFIG_IP_NF_NAT_IRC=m 388CONFIG_NF_NAT_FTP=m
361CONFIG_IP_NF_NAT_FTP=m 389CONFIG_NF_NAT_IRC=m
362CONFIG_IP_NF_NAT_TFTP=m 390CONFIG_NF_NAT_TFTP=m
363CONFIG_IP_NF_NAT_AMANDA=m 391# CONFIG_NF_NAT_AMANDA is not set
364CONFIG_IP_NF_NAT_PPTP=m 392# CONFIG_NF_NAT_PPTP is not set
365CONFIG_IP_NF_NAT_H323=m 393# CONFIG_NF_NAT_H323 is not set
394# CONFIG_NF_NAT_SIP is not set
366CONFIG_IP_NF_MANGLE=m 395CONFIG_IP_NF_MANGLE=m
367CONFIG_IP_NF_TARGET_TOS=m 396CONFIG_IP_NF_TARGET_TOS=m
368CONFIG_IP_NF_TARGET_ECN=m 397CONFIG_IP_NF_TARGET_ECN=m
369CONFIG_IP_NF_TARGET_DSCP=m
370CONFIG_IP_NF_TARGET_TTL=m 398CONFIG_IP_NF_TARGET_TTL=m
371CONFIG_IP_NF_RAW=m 399CONFIG_IP_NF_RAW=m
372CONFIG_IP_NF_ARPTABLES=m 400CONFIG_IP_NF_ARPTABLES=m
@@ -384,8 +412,11 @@ CONFIG_IP_DCCP_ACKVEC=y
384# DCCP CCIDs Configuration (EXPERIMENTAL) 412# DCCP CCIDs Configuration (EXPERIMENTAL)
385# 413#
386CONFIG_IP_DCCP_CCID2=m 414CONFIG_IP_DCCP_CCID2=m
415# CONFIG_IP_DCCP_CCID2_DEBUG is not set
387CONFIG_IP_DCCP_CCID3=m 416CONFIG_IP_DCCP_CCID3=m
388CONFIG_IP_DCCP_TFRC_LIB=m 417CONFIG_IP_DCCP_TFRC_LIB=m
418# CONFIG_IP_DCCP_CCID3_DEBUG is not set
419CONFIG_IP_DCCP_CCID3_RTO=100
389 420
390# 421#
391# DCCP Kernel Hacking 422# DCCP Kernel Hacking
@@ -410,7 +441,6 @@ CONFIG_IP_DCCP_TFRC_LIB=m
410# CONFIG_ATALK is not set 441# CONFIG_ATALK is not set
411# CONFIG_X25 is not set 442# CONFIG_X25 is not set
412# CONFIG_LAPB is not set 443# CONFIG_LAPB is not set
413# CONFIG_NET_DIVERT is not set
414# CONFIG_ECONET is not set 444# CONFIG_ECONET is not set
415# CONFIG_WAN_ROUTER is not set 445# CONFIG_WAN_ROUTER is not set
416 446
@@ -567,6 +597,12 @@ CONFIG_BLK_DEV_INITRD=y
567# CONFIG_ATA_OVER_ETH is not set 597# CONFIG_ATA_OVER_ETH is not set
568 598
569# 599#
600# Misc devices
601#
602# CONFIG_SGI_IOC4 is not set
603# CONFIG_TIFM_CORE is not set
604
605#
570# ATA/ATAPI/MFM/RLL support 606# ATA/ATAPI/MFM/RLL support
571# 607#
572CONFIG_IDE=y 608CONFIG_IDE=y
@@ -594,7 +630,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
594# CONFIG_BLK_DEV_OFFBOARD is not set 630# CONFIG_BLK_DEV_OFFBOARD is not set
595CONFIG_BLK_DEV_GENERIC=y 631CONFIG_BLK_DEV_GENERIC=y
596# CONFIG_BLK_DEV_OPTI621 is not set 632# CONFIG_BLK_DEV_OPTI621 is not set
597CONFIG_BLK_DEV_SL82C105=y
598CONFIG_BLK_DEV_IDEDMA_PCI=y 633CONFIG_BLK_DEV_IDEDMA_PCI=y
599# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 634# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
600CONFIG_IDEDMA_PCI_AUTO=y 635CONFIG_IDEDMA_PCI_AUTO=y
@@ -609,6 +644,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
609# CONFIG_BLK_DEV_CS5530 is not set 644# CONFIG_BLK_DEV_CS5530 is not set
610# CONFIG_BLK_DEV_HPT34X is not set 645# CONFIG_BLK_DEV_HPT34X is not set
611# CONFIG_BLK_DEV_HPT366 is not set 646# CONFIG_BLK_DEV_HPT366 is not set
647# CONFIG_BLK_DEV_JMICRON is not set
612# CONFIG_BLK_DEV_SC1200 is not set 648# CONFIG_BLK_DEV_SC1200 is not set
613# CONFIG_BLK_DEV_PIIX is not set 649# CONFIG_BLK_DEV_PIIX is not set
614# CONFIG_BLK_DEV_IT821X is not set 650# CONFIG_BLK_DEV_IT821X is not set
@@ -617,6 +653,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
617CONFIG_BLK_DEV_PDC202XX_NEW=y 653CONFIG_BLK_DEV_PDC202XX_NEW=y
618# CONFIG_BLK_DEV_SVWKS is not set 654# CONFIG_BLK_DEV_SVWKS is not set
619# CONFIG_BLK_DEV_SIIMAGE is not set 655# CONFIG_BLK_DEV_SIIMAGE is not set
656CONFIG_BLK_DEV_SL82C105=y
620# CONFIG_BLK_DEV_SLC90E66 is not set 657# CONFIG_BLK_DEV_SLC90E66 is not set
621# CONFIG_BLK_DEV_TRM290 is not set 658# CONFIG_BLK_DEV_TRM290 is not set
622# CONFIG_BLK_DEV_VIA82CXXX is not set 659# CONFIG_BLK_DEV_VIA82CXXX is not set
@@ -634,6 +671,8 @@ CONFIG_IDEDMA_AUTO=y
634# 671#
635# CONFIG_RAID_ATTRS is not set 672# CONFIG_RAID_ATTRS is not set
636CONFIG_SCSI=y 673CONFIG_SCSI=y
674# CONFIG_SCSI_TGT is not set
675CONFIG_SCSI_NETLINK=y
637CONFIG_SCSI_PROC_FS=y 676CONFIG_SCSI_PROC_FS=y
638 677
639# 678#
@@ -653,14 +692,16 @@ CONFIG_CHR_DEV_SG=y
653# CONFIG_SCSI_MULTI_LUN is not set 692# CONFIG_SCSI_MULTI_LUN is not set
654CONFIG_SCSI_CONSTANTS=y 693CONFIG_SCSI_CONSTANTS=y
655# CONFIG_SCSI_LOGGING is not set 694# CONFIG_SCSI_LOGGING is not set
695# CONFIG_SCSI_SCAN_ASYNC is not set
656 696
657# 697#
658# SCSI Transport Attributes 698# SCSI Transports
659# 699#
660CONFIG_SCSI_SPI_ATTRS=y 700CONFIG_SCSI_SPI_ATTRS=y
661CONFIG_SCSI_FC_ATTRS=y 701CONFIG_SCSI_FC_ATTRS=y
662# CONFIG_SCSI_ISCSI_ATTRS is not set 702# CONFIG_SCSI_ISCSI_ATTRS is not set
663# CONFIG_SCSI_SAS_ATTRS is not set 703# CONFIG_SCSI_SAS_ATTRS is not set
704# CONFIG_SCSI_SAS_LIBSAS is not set
664 705
665# 706#
666# SCSI low-level drivers 707# SCSI low-level drivers
@@ -678,11 +719,12 @@ CONFIG_AIC7XXX_DEBUG_MASK=0
678CONFIG_AIC7XXX_REG_PRETTY_PRINT=y 719CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
679CONFIG_SCSI_AIC7XXX_OLD=m 720CONFIG_SCSI_AIC7XXX_OLD=m
680# CONFIG_SCSI_AIC79XX is not set 721# CONFIG_SCSI_AIC79XX is not set
722# CONFIG_SCSI_AIC94XX is not set
681# CONFIG_SCSI_DPT_I2O is not set 723# CONFIG_SCSI_DPT_I2O is not set
724# CONFIG_SCSI_ARCMSR is not set
682# CONFIG_MEGARAID_NEWGEN is not set 725# CONFIG_MEGARAID_NEWGEN is not set
683# CONFIG_MEGARAID_LEGACY is not set 726# CONFIG_MEGARAID_LEGACY is not set
684# CONFIG_MEGARAID_SAS is not set 727# CONFIG_MEGARAID_SAS is not set
685# CONFIG_ATA is not set
686# CONFIG_SCSI_HPTIOP is not set 728# CONFIG_SCSI_HPTIOP is not set
687# CONFIG_SCSI_BUSLOGIC is not set 729# CONFIG_SCSI_BUSLOGIC is not set
688# CONFIG_SCSI_DMX3191D is not set 730# CONFIG_SCSI_DMX3191D is not set
@@ -692,14 +734,15 @@ CONFIG_SCSI_AIC7XXX_OLD=m
692# CONFIG_SCSI_IPS is not set 734# CONFIG_SCSI_IPS is not set
693# CONFIG_SCSI_INITIO is not set 735# CONFIG_SCSI_INITIO is not set
694# CONFIG_SCSI_INIA100 is not set 736# CONFIG_SCSI_INIA100 is not set
737# CONFIG_SCSI_STEX is not set
695CONFIG_SCSI_SYM53C8XX_2=y 738CONFIG_SCSI_SYM53C8XX_2=y
696CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 739CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
697CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 740CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
698CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 741CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
699CONFIG_SCSI_SYM53C8XX_MMIO=y 742CONFIG_SCSI_SYM53C8XX_MMIO=y
700# CONFIG_SCSI_IPR is not set
701# CONFIG_SCSI_QLOGIC_1280 is not set 743# CONFIG_SCSI_QLOGIC_1280 is not set
702# CONFIG_SCSI_QLA_FC is not set 744# CONFIG_SCSI_QLA_FC is not set
745# CONFIG_SCSI_QLA_ISCSI is not set
703# CONFIG_SCSI_LPFC is not set 746# CONFIG_SCSI_LPFC is not set
704# CONFIG_SCSI_DC395x is not set 747# CONFIG_SCSI_DC395x is not set
705# CONFIG_SCSI_DC390T is not set 748# CONFIG_SCSI_DC390T is not set
@@ -709,6 +752,7 @@ CONFIG_SCSI_MESH=y
709CONFIG_SCSI_MESH_SYNC_RATE=5 752CONFIG_SCSI_MESH_SYNC_RATE=5
710CONFIG_SCSI_MESH_RESET_DELAY_MS=4000 753CONFIG_SCSI_MESH_RESET_DELAY_MS=4000
711CONFIG_SCSI_MAC53C94=y 754CONFIG_SCSI_MAC53C94=y
755# CONFIG_SCSI_SRP is not set
712 756
713# 757#
714# PCMCIA SCSI adapter support 758# PCMCIA SCSI adapter support
@@ -720,6 +764,11 @@ CONFIG_SCSI_MAC53C94=y
720# CONFIG_PCMCIA_SYM53C500 is not set 764# CONFIG_PCMCIA_SYM53C500 is not set
721 765
722# 766#
767# Serial ATA (prod) and Parallel ATA (experimental) drivers
768#
769# CONFIG_ATA is not set
770
771#
723# Multi-device support (RAID and LVM) 772# Multi-device support (RAID and LVM)
724# 773#
725CONFIG_MD=y 774CONFIG_MD=y
@@ -732,6 +781,7 @@ CONFIG_MD_RAID10=m
732CONFIG_MD_MULTIPATH=m 781CONFIG_MD_MULTIPATH=m
733CONFIG_MD_FAULTY=m 782CONFIG_MD_FAULTY=m
734CONFIG_BLK_DEV_DM=m 783CONFIG_BLK_DEV_DM=m
784# CONFIG_DM_DEBUG is not set
735CONFIG_DM_CRYPT=m 785CONFIG_DM_CRYPT=m
736CONFIG_DM_SNAPSHOT=m 786CONFIG_DM_SNAPSHOT=m
737CONFIG_DM_MIRROR=m 787CONFIG_DM_MIRROR=m
@@ -798,6 +848,7 @@ CONFIG_THERM_WINDTUNNEL=m
798CONFIG_THERM_ADT746X=m 848CONFIG_THERM_ADT746X=m
799# CONFIG_WINDFARM is not set 849# CONFIG_WINDFARM is not set
800# CONFIG_ANSLCD is not set 850# CONFIG_ANSLCD is not set
851CONFIG_PMAC_RACKMETER=m
801 852
802# 853#
803# Network device support 854# Network device support
@@ -838,6 +889,7 @@ CONFIG_SUNGEM=y
838# CONFIG_HP100 is not set 889# CONFIG_HP100 is not set
839CONFIG_NET_PCI=y 890CONFIG_NET_PCI=y
840CONFIG_PCNET32=y 891CONFIG_PCNET32=y
892# CONFIG_PCNET32_NAPI is not set
841# CONFIG_AMD8111_ETH is not set 893# CONFIG_AMD8111_ETH is not set
842# CONFIG_ADAPTEC_STARFIRE is not set 894# CONFIG_ADAPTEC_STARFIRE is not set
843# CONFIG_B44 is not set 895# CONFIG_B44 is not set
@@ -874,6 +926,7 @@ CONFIG_PCNET32=y
874# CONFIG_TIGON3 is not set 926# CONFIG_TIGON3 is not set
875# CONFIG_BNX2 is not set 927# CONFIG_BNX2 is not set
876# CONFIG_MV643XX_ETH is not set 928# CONFIG_MV643XX_ETH is not set
929# CONFIG_QLA3XXX is not set
877 930
878# 931#
879# Ethernet (10000 Mbit) 932# Ethernet (10000 Mbit)
@@ -882,6 +935,7 @@ CONFIG_PCNET32=y
882# CONFIG_IXGB is not set 935# CONFIG_IXGB is not set
883# CONFIG_S2IO is not set 936# CONFIG_S2IO is not set
884# CONFIG_MYRI10GE is not set 937# CONFIG_MYRI10GE is not set
938# CONFIG_NETXEN_NIC is not set
885 939
886# 940#
887# Token Ring devices 941# Token Ring devices
@@ -957,6 +1011,7 @@ CONFIG_PPP_BSDCOMP=m
957# CONFIG_PPP_MPPE is not set 1011# CONFIG_PPP_MPPE is not set
958# CONFIG_PPPOE is not set 1012# CONFIG_PPPOE is not set
959# CONFIG_SLIP is not set 1013# CONFIG_SLIP is not set
1014CONFIG_SLHC=y
960# CONFIG_NET_FC is not set 1015# CONFIG_NET_FC is not set
961# CONFIG_SHAPER is not set 1016# CONFIG_SHAPER is not set
962# CONFIG_NETCONSOLE is not set 1017# CONFIG_NETCONSOLE is not set
@@ -977,6 +1032,7 @@ CONFIG_PPP_BSDCOMP=m
977# Input device support 1032# Input device support
978# 1033#
979CONFIG_INPUT=y 1034CONFIG_INPUT=y
1035# CONFIG_INPUT_FF_MEMLESS is not set
980 1036
981# 1037#
982# Userland interfaces 1038# Userland interfaces
@@ -999,6 +1055,7 @@ CONFIG_INPUT_KEYBOARD=y
999# CONFIG_KEYBOARD_LKKBD is not set 1055# CONFIG_KEYBOARD_LKKBD is not set
1000# CONFIG_KEYBOARD_XTKBD is not set 1056# CONFIG_KEYBOARD_XTKBD is not set
1001# CONFIG_KEYBOARD_NEWTON is not set 1057# CONFIG_KEYBOARD_NEWTON is not set
1058# CONFIG_KEYBOARD_STOWAWAY is not set
1002CONFIG_INPUT_MOUSE=y 1059CONFIG_INPUT_MOUSE=y
1003# CONFIG_MOUSE_PS2 is not set 1060# CONFIG_MOUSE_PS2 is not set
1004# CONFIG_MOUSE_SERIAL is not set 1061# CONFIG_MOUSE_SERIAL is not set
@@ -1039,6 +1096,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
1039# 1096#
1040# Non-8250 serial port support 1097# Non-8250 serial port support
1041# 1098#
1099# CONFIG_SERIAL_UARTLITE is not set
1042CONFIG_SERIAL_CORE=m 1100CONFIG_SERIAL_CORE=m
1043CONFIG_SERIAL_PMACZILOG=m 1101CONFIG_SERIAL_PMACZILOG=m
1044# CONFIG_SERIAL_JSM is not set 1102# CONFIG_SERIAL_JSM is not set
@@ -1062,13 +1120,7 @@ CONFIG_GEN_RTC=y
1062# CONFIG_DTLK is not set 1120# CONFIG_DTLK is not set
1063# CONFIG_R3964 is not set 1121# CONFIG_R3964 is not set
1064# CONFIG_APPLICOM is not set 1122# CONFIG_APPLICOM is not set
1065
1066#
1067# Ftape, the floppy tape device driver
1068#
1069CONFIG_AGP=m 1123CONFIG_AGP=m
1070# CONFIG_AGP_SIS is not set
1071# CONFIG_AGP_VIA is not set
1072CONFIG_AGP_UNINORTH=m 1124CONFIG_AGP_UNINORTH=m
1073CONFIG_DRM=m 1125CONFIG_DRM=m
1074# CONFIG_DRM_TDFX is not set 1126# CONFIG_DRM_TDFX is not set
@@ -1091,7 +1143,6 @@ CONFIG_DRM_RADEON=m
1091# TPM devices 1143# TPM devices
1092# 1144#
1093# CONFIG_TCG_TPM is not set 1145# CONFIG_TCG_TPM is not set
1094# CONFIG_TELCLOCK is not set
1095 1146
1096# 1147#
1097# I2C support 1148# I2C support
@@ -1167,14 +1218,9 @@ CONFIG_I2C_POWERMAC=y
1167# CONFIG_HWMON_VID is not set 1218# CONFIG_HWMON_VID is not set
1168 1219
1169# 1220#
1170# Misc devices
1171#
1172
1173#
1174# Multimedia devices 1221# Multimedia devices
1175# 1222#
1176# CONFIG_VIDEO_DEV is not set 1223# CONFIG_VIDEO_DEV is not set
1177CONFIG_VIDEO_V4L2=y
1178 1224
1179# 1225#
1180# Digital Video Broadcasting Devices 1226# Digital Video Broadcasting Devices
@@ -1187,6 +1233,7 @@ CONFIG_VIDEO_V4L2=y
1187# 1233#
1188# CONFIG_FIRMWARE_EDID is not set 1234# CONFIG_FIRMWARE_EDID is not set
1189CONFIG_FB=y 1235CONFIG_FB=y
1236CONFIG_FB_DDC=y
1190CONFIG_FB_CFB_FILLRECT=y 1237CONFIG_FB_CFB_FILLRECT=y
1191CONFIG_FB_CFB_COPYAREA=y 1238CONFIG_FB_CFB_COPYAREA=y
1192CONFIG_FB_CFB_IMAGEBLIT=y 1239CONFIG_FB_CFB_IMAGEBLIT=y
@@ -1235,6 +1282,7 @@ CONFIG_FB_3DFX=y
1235# CONFIG_FB_3DFX_ACCEL is not set 1282# CONFIG_FB_3DFX_ACCEL is not set
1236# CONFIG_FB_VOODOO1 is not set 1283# CONFIG_FB_VOODOO1 is not set
1237# CONFIG_FB_TRIDENT is not set 1284# CONFIG_FB_TRIDENT is not set
1285# CONFIG_FB_IBM_GXT4500 is not set
1238# CONFIG_FB_VIRTUAL is not set 1286# CONFIG_FB_VIRTUAL is not set
1239 1287
1240# 1288#
@@ -1393,6 +1441,11 @@ CONFIG_SND_USB_AUDIO=m
1393# CONFIG_SOUND_PRIME is not set 1441# CONFIG_SOUND_PRIME is not set
1394 1442
1395# 1443#
1444# HID Devices
1445#
1446CONFIG_HID=y
1447
1448#
1396# USB support 1449# USB support
1397# 1450#
1398CONFIG_USB_ARCH_HAS_HCD=y 1451CONFIG_USB_ARCH_HAS_HCD=y
@@ -1408,6 +1461,7 @@ CONFIG_USB_DEVICEFS=y
1408# CONFIG_USB_BANDWIDTH is not set 1461# CONFIG_USB_BANDWIDTH is not set
1409CONFIG_USB_DYNAMIC_MINORS=y 1462CONFIG_USB_DYNAMIC_MINORS=y
1410# CONFIG_USB_SUSPEND is not set 1463# CONFIG_USB_SUSPEND is not set
1464# CONFIG_USB_MULTITHREAD_PROBE is not set
1411# CONFIG_USB_OTG is not set 1465# CONFIG_USB_OTG is not set
1412 1466
1413# 1467#
@@ -1448,13 +1502,13 @@ CONFIG_USB_STORAGE=m
1448# CONFIG_USB_STORAGE_SDDR55 is not set 1502# CONFIG_USB_STORAGE_SDDR55 is not set
1449# CONFIG_USB_STORAGE_JUMPSHOT is not set 1503# CONFIG_USB_STORAGE_JUMPSHOT is not set
1450# CONFIG_USB_STORAGE_ALAUDA is not set 1504# CONFIG_USB_STORAGE_ALAUDA is not set
1505# CONFIG_USB_STORAGE_KARMA is not set
1451# CONFIG_USB_LIBUSUAL is not set 1506# CONFIG_USB_LIBUSUAL is not set
1452 1507
1453# 1508#
1454# USB Input Devices 1509# USB Input Devices
1455# 1510#
1456CONFIG_USB_HID=y 1511CONFIG_USB_HID=y
1457CONFIG_USB_HIDINPUT=y
1458CONFIG_USB_HIDINPUT_POWERBOOK=y 1512CONFIG_USB_HIDINPUT_POWERBOOK=y
1459# CONFIG_HID_FF is not set 1513# CONFIG_HID_FF is not set
1460# CONFIG_USB_HIDDEV is not set 1514# CONFIG_USB_HIDDEV is not set
@@ -1484,12 +1538,14 @@ CONFIG_USB_APPLETOUCH=y
1484# CONFIG_USB_KAWETH is not set 1538# CONFIG_USB_KAWETH is not set
1485# CONFIG_USB_PEGASUS is not set 1539# CONFIG_USB_PEGASUS is not set
1486# CONFIG_USB_RTL8150 is not set 1540# CONFIG_USB_RTL8150 is not set
1541CONFIG_USB_USBNET_MII=m
1487CONFIG_USB_USBNET=m 1542CONFIG_USB_USBNET=m
1488CONFIG_USB_NET_AX8817X=m 1543CONFIG_USB_NET_AX8817X=m
1489CONFIG_USB_NET_CDCETHER=m 1544CONFIG_USB_NET_CDCETHER=m
1490# CONFIG_USB_NET_GL620A is not set 1545# CONFIG_USB_NET_GL620A is not set
1491CONFIG_USB_NET_NET1080=m 1546CONFIG_USB_NET_NET1080=m
1492# CONFIG_USB_NET_PLUSB is not set 1547# CONFIG_USB_NET_PLUSB is not set
1548# CONFIG_USB_NET_MCS7830 is not set
1493# CONFIG_USB_NET_RNDIS_HOST is not set 1549# CONFIG_USB_NET_RNDIS_HOST is not set
1494# CONFIG_USB_NET_CDC_SUBSET is not set 1550# CONFIG_USB_NET_CDC_SUBSET is not set
1495CONFIG_USB_NET_ZAURUS=m 1551CONFIG_USB_NET_ZAURUS=m
@@ -1504,6 +1560,7 @@ CONFIG_USB_MON=y
1504# 1560#
1505CONFIG_USB_SERIAL=m 1561CONFIG_USB_SERIAL=m
1506# CONFIG_USB_SERIAL_GENERIC is not set 1562# CONFIG_USB_SERIAL_GENERIC is not set
1563# CONFIG_USB_SERIAL_AIRCABLE is not set
1507# CONFIG_USB_SERIAL_AIRPRIME is not set 1564# CONFIG_USB_SERIAL_AIRPRIME is not set
1508# CONFIG_USB_SERIAL_ARK3116 is not set 1565# CONFIG_USB_SERIAL_ARK3116 is not set
1509# CONFIG_USB_SERIAL_BELKIN is not set 1566# CONFIG_USB_SERIAL_BELKIN is not set
@@ -1538,6 +1595,8 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
1538# CONFIG_USB_SERIAL_KLSI is not set 1595# CONFIG_USB_SERIAL_KLSI is not set
1539# CONFIG_USB_SERIAL_KOBIL_SCT is not set 1596# CONFIG_USB_SERIAL_KOBIL_SCT is not set
1540# CONFIG_USB_SERIAL_MCT_U232 is not set 1597# CONFIG_USB_SERIAL_MCT_U232 is not set
1598# CONFIG_USB_SERIAL_MOS7720 is not set
1599# CONFIG_USB_SERIAL_MOS7840 is not set
1541# CONFIG_USB_SERIAL_NAVMAN is not set 1600# CONFIG_USB_SERIAL_NAVMAN is not set
1542# CONFIG_USB_SERIAL_PL2303 is not set 1601# CONFIG_USB_SERIAL_PL2303 is not set
1543# CONFIG_USB_SERIAL_HP4X is not set 1602# CONFIG_USB_SERIAL_HP4X is not set
@@ -1548,6 +1607,7 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
1548# CONFIG_USB_SERIAL_XIRCOM is not set 1607# CONFIG_USB_SERIAL_XIRCOM is not set
1549# CONFIG_USB_SERIAL_OPTION is not set 1608# CONFIG_USB_SERIAL_OPTION is not set
1550# CONFIG_USB_SERIAL_OMNINET is not set 1609# CONFIG_USB_SERIAL_OMNINET is not set
1610# CONFIG_USB_SERIAL_DEBUG is not set
1551CONFIG_USB_EZUSB=y 1611CONFIG_USB_EZUSB=y
1552 1612
1553# 1613#
@@ -1555,6 +1615,7 @@ CONFIG_USB_EZUSB=y
1555# 1615#
1556# CONFIG_USB_EMI62 is not set 1616# CONFIG_USB_EMI62 is not set
1557# CONFIG_USB_EMI26 is not set 1617# CONFIG_USB_EMI26 is not set
1618# CONFIG_USB_ADUTUX is not set
1558# CONFIG_USB_AUERSWALD is not set 1619# CONFIG_USB_AUERSWALD is not set
1559# CONFIG_USB_RIO500 is not set 1620# CONFIG_USB_RIO500 is not set
1560# CONFIG_USB_LEGOTOWER is not set 1621# CONFIG_USB_LEGOTOWER is not set
@@ -1562,12 +1623,13 @@ CONFIG_USB_EZUSB=y
1562# CONFIG_USB_LED is not set 1623# CONFIG_USB_LED is not set
1563# CONFIG_USB_CYPRESS_CY7C63 is not set 1624# CONFIG_USB_CYPRESS_CY7C63 is not set
1564# CONFIG_USB_CYTHERM is not set 1625# CONFIG_USB_CYTHERM is not set
1565# CONFIG_USB_PHIDGETKIT is not set 1626# CONFIG_USB_PHIDGET is not set
1566# CONFIG_USB_PHIDGETSERVO is not set
1567# CONFIG_USB_IDMOUSE is not set 1627# CONFIG_USB_IDMOUSE is not set
1628# CONFIG_USB_FTDI_ELAN is not set
1568CONFIG_USB_APPLEDISPLAY=m 1629CONFIG_USB_APPLEDISPLAY=m
1569# CONFIG_USB_SISUSBVGA is not set 1630# CONFIG_USB_SISUSBVGA is not set
1570# CONFIG_USB_LD is not set 1631# CONFIG_USB_LD is not set
1632# CONFIG_USB_TRANCEVIBRATOR is not set
1571# CONFIG_USB_TEST is not set 1633# CONFIG_USB_TEST is not set
1572 1634
1573# 1635#
@@ -1630,6 +1692,10 @@ CONFIG_LEDS_TRIGGER_IDE_DISK=y
1630# 1692#
1631 1693
1632# 1694#
1695# Virtualization
1696#
1697
1698#
1633# File systems 1699# File systems
1634# 1700#
1635CONFIG_EXT2_FS=y 1701CONFIG_EXT2_FS=y
@@ -1639,6 +1705,7 @@ CONFIG_EXT3_FS=y
1639CONFIG_EXT3_FS_XATTR=y 1705CONFIG_EXT3_FS_XATTR=y
1640CONFIG_EXT3_FS_POSIX_ACL=y 1706CONFIG_EXT3_FS_POSIX_ACL=y
1641# CONFIG_EXT3_FS_SECURITY is not set 1707# CONFIG_EXT3_FS_SECURITY is not set
1708# CONFIG_EXT4DEV_FS is not set
1642CONFIG_JBD=y 1709CONFIG_JBD=y
1643# CONFIG_JBD_DEBUG is not set 1710# CONFIG_JBD_DEBUG is not set
1644CONFIG_FS_MBCACHE=y 1711CONFIG_FS_MBCACHE=y
@@ -1646,6 +1713,7 @@ CONFIG_FS_MBCACHE=y
1646# CONFIG_JFS_FS is not set 1713# CONFIG_JFS_FS is not set
1647CONFIG_FS_POSIX_ACL=y 1714CONFIG_FS_POSIX_ACL=y
1648# CONFIG_XFS_FS is not set 1715# CONFIG_XFS_FS is not set
1716# CONFIG_GFS2_FS is not set
1649# CONFIG_OCFS2_FS is not set 1717# CONFIG_OCFS2_FS is not set
1650# CONFIG_MINIX_FS is not set 1718# CONFIG_MINIX_FS is not set
1651# CONFIG_ROMFS_FS is not set 1719# CONFIG_ROMFS_FS is not set
@@ -1682,8 +1750,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1682# 1750#
1683CONFIG_PROC_FS=y 1751CONFIG_PROC_FS=y
1684CONFIG_PROC_KCORE=y 1752CONFIG_PROC_KCORE=y
1753CONFIG_PROC_SYSCTL=y
1685CONFIG_SYSFS=y 1754CONFIG_SYSFS=y
1686CONFIG_TMPFS=y 1755CONFIG_TMPFS=y
1756# CONFIG_TMPFS_POSIX_ACL is not set
1687# CONFIG_HUGETLB_PAGE is not set 1757# CONFIG_HUGETLB_PAGE is not set
1688CONFIG_RAMFS=y 1758CONFIG_RAMFS=y
1689# CONFIG_CONFIGFS_FS is not set 1759# CONFIG_CONFIGFS_FS is not set
@@ -1802,8 +1872,14 @@ CONFIG_NLS_ISO8859_1=m
1802CONFIG_NLS_UTF8=m 1872CONFIG_NLS_UTF8=m
1803 1873
1804# 1874#
1875# Distributed Lock Manager
1876#
1877# CONFIG_DLM is not set
1878
1879#
1805# Library routines 1880# Library routines
1806# 1881#
1882CONFIG_BITREVERSE=y
1807CONFIG_CRC_CCITT=y 1883CONFIG_CRC_CCITT=y
1808CONFIG_CRC16=y 1884CONFIG_CRC16=y
1809CONFIG_CRC32=y 1885CONFIG_CRC32=y
@@ -1815,6 +1891,7 @@ CONFIG_TEXTSEARCH_KMP=m
1815CONFIG_TEXTSEARCH_BM=m 1891CONFIG_TEXTSEARCH_BM=m
1816CONFIG_TEXTSEARCH_FSM=m 1892CONFIG_TEXTSEARCH_FSM=m
1817CONFIG_PLIST=y 1893CONFIG_PLIST=y
1894CONFIG_IOMAP_COPY=y
1818 1895
1819# 1896#
1820# Instrumentation Support 1897# Instrumentation Support
@@ -1826,8 +1903,11 @@ CONFIG_OPROFILE=y
1826# Kernel hacking 1903# Kernel hacking
1827# 1904#
1828# CONFIG_PRINTK_TIME is not set 1905# CONFIG_PRINTK_TIME is not set
1906CONFIG_ENABLE_MUST_CHECK=y
1829CONFIG_MAGIC_SYSRQ=y 1907CONFIG_MAGIC_SYSRQ=y
1830# CONFIG_UNUSED_SYMBOLS is not set 1908# CONFIG_UNUSED_SYMBOLS is not set
1909# CONFIG_DEBUG_FS is not set
1910# CONFIG_HEADERS_CHECK is not set
1831CONFIG_DEBUG_KERNEL=y 1911CONFIG_DEBUG_KERNEL=y
1832CONFIG_LOG_BUF_SHIFT=14 1912CONFIG_LOG_BUF_SHIFT=14
1833CONFIG_DETECT_SOFTLOCKUP=y 1913CONFIG_DETECT_SOFTLOCKUP=y
@@ -1841,14 +1921,16 @@ CONFIG_DETECT_SOFTLOCKUP=y
1841# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1921# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1842# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1922# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1843# CONFIG_DEBUG_KOBJECT is not set 1923# CONFIG_DEBUG_KOBJECT is not set
1924CONFIG_DEBUG_BUGVERBOSE=y
1844# CONFIG_DEBUG_INFO is not set 1925# CONFIG_DEBUG_INFO is not set
1845# CONFIG_DEBUG_FS is not set
1846# CONFIG_DEBUG_VM is not set 1926# CONFIG_DEBUG_VM is not set
1927# CONFIG_DEBUG_LIST is not set
1847# CONFIG_FORCED_INLINING is not set 1928# CONFIG_FORCED_INLINING is not set
1848# CONFIG_RCU_TORTURE_TEST is not set 1929# CONFIG_RCU_TORTURE_TEST is not set
1849CONFIG_DEBUGGER=y 1930CONFIG_DEBUGGER=y
1850CONFIG_XMON=y 1931CONFIG_XMON=y
1851CONFIG_XMON_DEFAULT=y 1932CONFIG_XMON_DEFAULT=y
1933CONFIG_XMON_DISASSEMBLY=y
1852# CONFIG_BDI_SWITCH is not set 1934# CONFIG_BDI_SWITCH is not set
1853CONFIG_BOOTX_TEXT=y 1935CONFIG_BOOTX_TEXT=y
1854# CONFIG_PPC_EARLY_DEBUG is not set 1936# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1863,7 +1945,12 @@ CONFIG_BOOTX_TEXT=y
1863# Cryptographic options 1945# Cryptographic options
1864# 1946#
1865CONFIG_CRYPTO=y 1947CONFIG_CRYPTO=y
1948CONFIG_CRYPTO_ALGAPI=y
1949CONFIG_CRYPTO_BLKCIPHER=y
1950CONFIG_CRYPTO_HASH=y
1951CONFIG_CRYPTO_MANAGER=y
1866CONFIG_CRYPTO_HMAC=y 1952CONFIG_CRYPTO_HMAC=y
1953# CONFIG_CRYPTO_XCBC is not set
1867CONFIG_CRYPTO_NULL=m 1954CONFIG_CRYPTO_NULL=m
1868CONFIG_CRYPTO_MD4=m 1955CONFIG_CRYPTO_MD4=m
1869CONFIG_CRYPTO_MD5=y 1956CONFIG_CRYPTO_MD5=y
@@ -1872,9 +1959,14 @@ CONFIG_CRYPTO_SHA256=m
1872CONFIG_CRYPTO_SHA512=m 1959CONFIG_CRYPTO_SHA512=m
1873CONFIG_CRYPTO_WP512=m 1960CONFIG_CRYPTO_WP512=m
1874CONFIG_CRYPTO_TGR192=m 1961CONFIG_CRYPTO_TGR192=m
1962# CONFIG_CRYPTO_GF128MUL is not set
1963CONFIG_CRYPTO_ECB=m
1964CONFIG_CRYPTO_CBC=y
1965# CONFIG_CRYPTO_LRW is not set
1875CONFIG_CRYPTO_DES=y 1966CONFIG_CRYPTO_DES=y
1876CONFIG_CRYPTO_BLOWFISH=m 1967CONFIG_CRYPTO_BLOWFISH=m
1877CONFIG_CRYPTO_TWOFISH=m 1968CONFIG_CRYPTO_TWOFISH=m
1969CONFIG_CRYPTO_TWOFISH_COMMON=m
1878CONFIG_CRYPTO_SERPENT=m 1970CONFIG_CRYPTO_SERPENT=m
1879CONFIG_CRYPTO_AES=m 1971CONFIG_CRYPTO_AES=m
1880CONFIG_CRYPTO_CAST5=m 1972CONFIG_CRYPTO_CAST5=m
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig
index 340376a47001..debac66e8258 100644
--- a/arch/powerpc/configs/ppc64_defconfig
+++ b/arch/powerpc/configs/ppc64_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-rc3 3# Linux kernel version: 2.6.20-rc5
4# Tue Jan 2 15:32:44 2007 4# Mon Jan 22 22:28:58 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -246,7 +246,6 @@ CONFIG_PPC_I8259=y
246CONFIG_PCI=y 246CONFIG_PCI=y
247CONFIG_PCI_DOMAINS=y 247CONFIG_PCI_DOMAINS=y
248# CONFIG_PCIEPORTBUS is not set 248# CONFIG_PCIEPORTBUS is not set
249# CONFIG_PCI_MULTITHREAD_PROBE is not set
250# CONFIG_PCI_DEBUG is not set 249# CONFIG_PCI_DEBUG is not set
251 250
252# 251#
diff --git a/arch/powerpc/configs/ps3_defconfig b/arch/powerpc/configs/ps3_defconfig
index 70ed61337f5c..32560876c3dc 100644
--- a/arch/powerpc/configs/ps3_defconfig
+++ b/arch/powerpc/configs/ps3_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.19-rc6 3# Linux kernel version: 2.6.20-rc5
4# Tue Nov 21 19:38:53 2006 4# Mon Jan 22 22:29:11 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -10,6 +10,8 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
14CONFIG_ARCH_HAS_ILOG2_U64=y
13CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 17CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -23,6 +25,7 @@ CONFIG_PPC_OF=y
23# CONFIG_PPC_UDBG_16550 is not set 25# CONFIG_PPC_UDBG_16550 is not set
24# CONFIG_GENERIC_TBSYNC is not set 26# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y 27CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y
26# CONFIG_DEFAULT_UIMAGE is not set 29# CONFIG_DEFAULT_UIMAGE is not set
27 30
28# 31#
@@ -64,6 +67,7 @@ CONFIG_SYSVIPC=y
64# CONFIG_AUDIT is not set 67# CONFIG_AUDIT is not set
65# CONFIG_IKCONFIG is not set 68# CONFIG_IKCONFIG is not set
66# CONFIG_CPUSETS is not set 69# CONFIG_CPUSETS is not set
70CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 71# CONFIG_RELAY is not set
68CONFIG_INITRAMFS_SOURCE="" 72CONFIG_INITRAMFS_SOURCE=""
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 73# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -126,6 +130,7 @@ CONFIG_PPC_MULTIPLATFORM=y
126# CONFIG_APUS is not set 130# CONFIG_APUS is not set
127# CONFIG_PPC_PSERIES is not set 131# CONFIG_PPC_PSERIES is not set
128# CONFIG_PPC_ISERIES is not set 132# CONFIG_PPC_ISERIES is not set
133# CONFIG_PPC_MPC52xx is not set
129# CONFIG_PPC_PMAC is not set 134# CONFIG_PPC_PMAC is not set
130# CONFIG_PPC_MAPLE is not set 135# CONFIG_PPC_MAPLE is not set
131# CONFIG_PPC_PASEMI is not set 136# CONFIG_PPC_PASEMI is not set
@@ -164,6 +169,7 @@ CONFIG_PS3_VUART=y
164# 169#
165# CONFIG_HZ_100 is not set 170# CONFIG_HZ_100 is not set
166CONFIG_HZ_250=y 171CONFIG_HZ_250=y
172# CONFIG_HZ_300 is not set
167# CONFIG_HZ_1000 is not set 173# CONFIG_HZ_1000 is not set
168CONFIG_HZ=250 174CONFIG_HZ=250
169CONFIG_PREEMPT_NONE=y 175CONFIG_PREEMPT_NONE=y
@@ -261,6 +267,7 @@ CONFIG_IP_PNP_DHCP=y
261# CONFIG_TCP_CONG_ADVANCED is not set 267# CONFIG_TCP_CONG_ADVANCED is not set
262CONFIG_TCP_CONG_CUBIC=y 268CONFIG_TCP_CONG_CUBIC=y
263CONFIG_DEFAULT_TCP_CONG="cubic" 269CONFIG_DEFAULT_TCP_CONG="cubic"
270# CONFIG_TCP_MD5SIG is not set
264# CONFIG_IPV6 is not set 271# CONFIG_IPV6 is not set
265# CONFIG_INET6_XFRM_TUNNEL is not set 272# CONFIG_INET6_XFRM_TUNNEL is not set
266# CONFIG_INET6_TUNNEL is not set 273# CONFIG_INET6_TUNNEL is not set
@@ -366,6 +373,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
366# 373#
367# CONFIG_RAID_ATTRS is not set 374# CONFIG_RAID_ATTRS is not set
368CONFIG_SCSI=y 375CONFIG_SCSI=y
376# CONFIG_SCSI_TGT is not set
369# CONFIG_SCSI_NETLINK is not set 377# CONFIG_SCSI_NETLINK is not set
370CONFIG_SCSI_PROC_FS=y 378CONFIG_SCSI_PROC_FS=y
371 379
@@ -385,6 +393,7 @@ CONFIG_SCSI_PROC_FS=y
385# CONFIG_SCSI_MULTI_LUN is not set 393# CONFIG_SCSI_MULTI_LUN is not set
386# CONFIG_SCSI_CONSTANTS is not set 394# CONFIG_SCSI_CONSTANTS is not set
387# CONFIG_SCSI_LOGGING is not set 395# CONFIG_SCSI_LOGGING is not set
396# CONFIG_SCSI_SCAN_ASYNC is not set
388 397
389# 398#
390# SCSI Transports 399# SCSI Transports
@@ -427,6 +436,7 @@ CONFIG_SCSI_PROC_FS=y
427# 436#
428# Macintosh device drivers 437# Macintosh device drivers
429# 438#
439# CONFIG_MAC_EMUMOUSEBTN is not set
430# CONFIG_WINDFARM is not set 440# CONFIG_WINDFARM is not set
431 441
432# 442#
@@ -549,10 +559,6 @@ CONFIG_GEN_RTC=y
549# CONFIG_GEN_RTC_X is not set 559# CONFIG_GEN_RTC_X is not set
550# CONFIG_DTLK is not set 560# CONFIG_DTLK is not set
551# CONFIG_R3964 is not set 561# CONFIG_R3964 is not set
552
553#
554# Ftape, the floppy tape device driver
555#
556# CONFIG_RAW_DRIVER is not set 562# CONFIG_RAW_DRIVER is not set
557# CONFIG_HANGCHECK_TIMER is not set 563# CONFIG_HANGCHECK_TIMER is not set
558 564
@@ -598,6 +604,7 @@ CONFIG_GEN_RTC=y
598# 604#
599# CONFIG_FIRMWARE_EDID is not set 605# CONFIG_FIRMWARE_EDID is not set
600# CONFIG_FB is not set 606# CONFIG_FB is not set
607# CONFIG_FB_IBM_GXT4500 is not set
601 608
602# 609#
603# Console display driver support 610# Console display driver support
@@ -612,6 +619,11 @@ CONFIG_DUMMY_CONSOLE=y
612# CONFIG_SOUND is not set 619# CONFIG_SOUND is not set
613 620
614# 621#
622# HID Devices
623#
624CONFIG_HID=y
625
626#
615# USB support 627# USB support
616# 628#
617# CONFIG_USB_ARCH_HAS_HCD is not set 629# CONFIG_USB_ARCH_HAS_HCD is not set
@@ -672,6 +684,10 @@ CONFIG_DUMMY_CONSOLE=y
672# 684#
673 685
674# 686#
687# Virtualization
688#
689
690#
675# File systems 691# File systems
676# 692#
677# CONFIG_EXT2_FS is not set 693# CONFIG_EXT2_FS is not set
@@ -772,6 +788,11 @@ CONFIG_MSDOS_PARTITION=y
772# CONFIG_NLS is not set 788# CONFIG_NLS is not set
773 789
774# 790#
791# Distributed Lock Manager
792#
793# CONFIG_DLM is not set
794
795#
775# Library routines 796# Library routines
776# 797#
777# CONFIG_CRC_CCITT is not set 798# CONFIG_CRC_CCITT is not set
@@ -779,6 +800,7 @@ CONFIG_MSDOS_PARTITION=y
779# CONFIG_CRC32 is not set 800# CONFIG_CRC32 is not set
780# CONFIG_LIBCRC32C is not set 801# CONFIG_LIBCRC32C is not set
781CONFIG_PLIST=y 802CONFIG_PLIST=y
803CONFIG_IOMAP_COPY=y
782 804
783# 805#
784# Instrumentation Support 806# Instrumentation Support
@@ -793,6 +815,8 @@ CONFIG_PLIST=y
793CONFIG_ENABLE_MUST_CHECK=y 815CONFIG_ENABLE_MUST_CHECK=y
794# CONFIG_MAGIC_SYSRQ is not set 816# CONFIG_MAGIC_SYSRQ is not set
795# CONFIG_UNUSED_SYMBOLS is not set 817# CONFIG_UNUSED_SYMBOLS is not set
818# CONFIG_DEBUG_FS is not set
819# CONFIG_HEADERS_CHECK is not set
796CONFIG_DEBUG_KERNEL=y 820CONFIG_DEBUG_KERNEL=y
797CONFIG_LOG_BUF_SHIFT=17 821CONFIG_LOG_BUF_SHIFT=17
798CONFIG_DETECT_SOFTLOCKUP=y 822CONFIG_DETECT_SOFTLOCKUP=y
@@ -806,12 +830,11 @@ CONFIG_DEBUG_SPINLOCK=y
806CONFIG_DEBUG_SPINLOCK_SLEEP=y 830CONFIG_DEBUG_SPINLOCK_SLEEP=y
807# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 831# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
808# CONFIG_DEBUG_KOBJECT is not set 832# CONFIG_DEBUG_KOBJECT is not set
833# CONFIG_DEBUG_BUGVERBOSE is not set
809CONFIG_DEBUG_INFO=y 834CONFIG_DEBUG_INFO=y
810# CONFIG_DEBUG_FS is not set
811# CONFIG_DEBUG_VM is not set 835# CONFIG_DEBUG_VM is not set
812CONFIG_DEBUG_LIST=y 836CONFIG_DEBUG_LIST=y
813CONFIG_FORCED_INLINING=y 837CONFIG_FORCED_INLINING=y
814# CONFIG_HEADERS_CHECK is not set
815# CONFIG_RCU_TORTURE_TEST is not set 838# CONFIG_RCU_TORTURE_TEST is not set
816# CONFIG_DEBUG_STACKOVERFLOW is not set 839# CONFIG_DEBUG_STACKOVERFLOW is not set
817# CONFIG_DEBUG_STACK_USAGE is not set 840# CONFIG_DEBUG_STACK_USAGE is not set
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig
index d2833c1a1f3d..1c794fe718fd 100644
--- a/arch/powerpc/configs/pseries_defconfig
+++ b/arch/powerpc/configs/pseries_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:45:12 2006 4# Mon Jan 22 22:31:27 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -10,6 +10,8 @@ CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y 11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y 12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
14CONFIG_ARCH_HAS_ILOG2_U64=y
13CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_FIND_NEXT_BIT=y 17CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -22,6 +24,8 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
22CONFIG_PPC_OF=y 24CONFIG_PPC_OF=y
23CONFIG_PPC_UDBG_16550=y 25CONFIG_PPC_UDBG_16550=y
24# CONFIG_GENERIC_TBSYNC is not set 26# CONFIG_GENERIC_TBSYNC is not set
27CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y
25# CONFIG_DEFAULT_UIMAGE is not set 29# CONFIG_DEFAULT_UIMAGE is not set
26 30
27# 31#
@@ -31,6 +35,9 @@ CONFIG_PPC_UDBG_16550=y
31CONFIG_POWER3=y 35CONFIG_POWER3=y
32CONFIG_POWER4=y 36CONFIG_POWER4=y
33CONFIG_PPC_FPU=y 37CONFIG_PPC_FPU=y
38# CONFIG_PPC_DCR_NATIVE is not set
39# CONFIG_PPC_DCR_MMIO is not set
40# CONFIG_PPC_OF_PLATFORM_PCI is not set
34CONFIG_ALTIVEC=y 41CONFIG_ALTIVEC=y
35CONFIG_PPC_STD_MMU=y 42CONFIG_PPC_STD_MMU=y
36CONFIG_VIRT_CPU_ACCOUNTING=y 43CONFIG_VIRT_CPU_ACCOUNTING=y
@@ -52,19 +59,22 @@ CONFIG_LOCALVERSION=""
52CONFIG_LOCALVERSION_AUTO=y 59CONFIG_LOCALVERSION_AUTO=y
53CONFIG_SWAP=y 60CONFIG_SWAP=y
54CONFIG_SYSVIPC=y 61CONFIG_SYSVIPC=y
62# CONFIG_IPC_NS is not set
55CONFIG_POSIX_MQUEUE=y 63CONFIG_POSIX_MQUEUE=y
56# CONFIG_BSD_PROCESS_ACCT is not set 64# CONFIG_BSD_PROCESS_ACCT is not set
57# CONFIG_TASKSTATS is not set 65# CONFIG_UTS_NS is not set
58CONFIG_SYSCTL=y
59CONFIG_AUDIT=y 66CONFIG_AUDIT=y
60CONFIG_AUDITSYSCALL=y 67CONFIG_AUDITSYSCALL=y
61CONFIG_IKCONFIG=y 68CONFIG_IKCONFIG=y
62CONFIG_IKCONFIG_PROC=y 69CONFIG_IKCONFIG_PROC=y
63CONFIG_CPUSETS=y 70CONFIG_CPUSETS=y
71CONFIG_SYSFS_DEPRECATED=y
64# CONFIG_RELAY is not set 72# CONFIG_RELAY is not set
65CONFIG_INITRAMFS_SOURCE="" 73CONFIG_INITRAMFS_SOURCE=""
66CONFIG_CC_OPTIMIZE_FOR_SIZE=y 74CONFIG_CC_OPTIMIZE_FOR_SIZE=y
75CONFIG_SYSCTL=y
67# CONFIG_EMBEDDED is not set 76# CONFIG_EMBEDDED is not set
77CONFIG_SYSCTL_SYSCALL=y
68CONFIG_KALLSYMS=y 78CONFIG_KALLSYMS=y
69CONFIG_KALLSYMS_ALL=y 79CONFIG_KALLSYMS_ALL=y
70# CONFIG_KALLSYMS_EXTRA_PASS is not set 80# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -73,12 +83,12 @@ CONFIG_PRINTK=y
73CONFIG_BUG=y 83CONFIG_BUG=y
74CONFIG_ELF_CORE=y 84CONFIG_ELF_CORE=y
75CONFIG_BASE_FULL=y 85CONFIG_BASE_FULL=y
76CONFIG_RT_MUTEXES=y
77CONFIG_FUTEX=y 86CONFIG_FUTEX=y
78CONFIG_EPOLL=y 87CONFIG_EPOLL=y
79CONFIG_SHMEM=y 88CONFIG_SHMEM=y
80CONFIG_SLAB=y 89CONFIG_SLAB=y
81CONFIG_VM_EVENT_COUNTERS=y 90CONFIG_VM_EVENT_COUNTERS=y
91CONFIG_RT_MUTEXES=y
82# CONFIG_TINY_SHMEM is not set 92# CONFIG_TINY_SHMEM is not set
83CONFIG_BASE_SMALL=0 93CONFIG_BASE_SMALL=0
84# CONFIG_SLOB is not set 94# CONFIG_SLOB is not set
@@ -97,6 +107,7 @@ CONFIG_STOP_MACHINE=y
97# 107#
98# Block layer 108# Block layer
99# 109#
110CONFIG_BLOCK=y
100# CONFIG_BLK_DEV_IO_TRACE is not set 111# CONFIG_BLK_DEV_IO_TRACE is not set
101 112
102# 113#
@@ -116,15 +127,19 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
116# Platform support 127# Platform support
117# 128#
118CONFIG_PPC_MULTIPLATFORM=y 129CONFIG_PPC_MULTIPLATFORM=y
119# CONFIG_PPC_ISERIES is not set
120# CONFIG_EMBEDDED6xx is not set 130# CONFIG_EMBEDDED6xx is not set
121# CONFIG_APUS is not set 131# CONFIG_APUS is not set
122CONFIG_PPC_PSERIES=y 132CONFIG_PPC_PSERIES=y
133# CONFIG_PPC_ISERIES is not set
134# CONFIG_PPC_MPC52xx is not set
123# CONFIG_PPC_PMAC is not set 135# CONFIG_PPC_PMAC is not set
124# CONFIG_PPC_MAPLE is not set 136# CONFIG_PPC_MAPLE is not set
137# CONFIG_PPC_PASEMI is not set
125# CONFIG_PPC_CELL is not set 138# CONFIG_PPC_CELL is not set
126# CONFIG_PPC_CELL_NATIVE is not set 139# CONFIG_PPC_CELL_NATIVE is not set
127# CONFIG_PPC_IBM_CELL_BLADE is not set 140# CONFIG_PPC_IBM_CELL_BLADE is not set
141# CONFIG_PPC_PS3 is not set
142CONFIG_PPC_NATIVE=y
128# CONFIG_UDBG_RTAS_CONSOLE is not set 143# CONFIG_UDBG_RTAS_CONSOLE is not set
129CONFIG_XICS=y 144CONFIG_XICS=y
130# CONFIG_U3_DART is not set 145# CONFIG_U3_DART is not set
@@ -137,6 +152,8 @@ CONFIG_IBMVIO=y
137CONFIG_IBMEBUS=y 152CONFIG_IBMEBUS=y
138# CONFIG_PPC_MPC106 is not set 153# CONFIG_PPC_MPC106 is not set
139# CONFIG_PPC_970_NAP is not set 154# CONFIG_PPC_970_NAP is not set
155# CONFIG_PPC_INDIRECT_IO is not set
156# CONFIG_GENERIC_IOMAP is not set
140# CONFIG_CPU_FREQ is not set 157# CONFIG_CPU_FREQ is not set
141# CONFIG_WANT_EARLY_SERIAL is not set 158# CONFIG_WANT_EARLY_SERIAL is not set
142CONFIG_MPIC=y 159CONFIG_MPIC=y
@@ -146,6 +163,7 @@ CONFIG_MPIC=y
146# 163#
147# CONFIG_HZ_100 is not set 164# CONFIG_HZ_100 is not set
148CONFIG_HZ_250=y 165CONFIG_HZ_250=y
166# CONFIG_HZ_300 is not set
149# CONFIG_HZ_1000 is not set 167# CONFIG_HZ_1000 is not set
150CONFIG_HZ=250 168CONFIG_HZ=250
151CONFIG_PREEMPT_NONE=y 169CONFIG_PREEMPT_NONE=y
@@ -170,6 +188,7 @@ CONFIG_NODES_SHIFT=4
170CONFIG_ARCH_SELECT_MEMORY_MODEL=y 188CONFIG_ARCH_SELECT_MEMORY_MODEL=y
171CONFIG_ARCH_SPARSEMEM_ENABLE=y 189CONFIG_ARCH_SPARSEMEM_ENABLE=y
172CONFIG_ARCH_SPARSEMEM_DEFAULT=y 190CONFIG_ARCH_SPARSEMEM_DEFAULT=y
191CONFIG_ARCH_POPULATES_NODE_MAP=y
173CONFIG_SELECT_MEMORY_MODEL=y 192CONFIG_SELECT_MEMORY_MODEL=y
174# CONFIG_FLATMEM_MANUAL is not set 193# CONFIG_FLATMEM_MANUAL is not set
175# CONFIG_DISCONTIGMEM_MANUAL is not set 194# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -183,7 +202,6 @@ CONFIG_SPARSEMEM_EXTREME=y
183CONFIG_SPLIT_PTLOCK_CPUS=4 202CONFIG_SPLIT_PTLOCK_CPUS=4
184CONFIG_MIGRATION=y 203CONFIG_MIGRATION=y
185CONFIG_RESOURCES_64BIT=y 204CONFIG_RESOURCES_64BIT=y
186CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
187CONFIG_NODES_SPAN_OTHER_NODES=y 205CONFIG_NODES_SPAN_OTHER_NODES=y
188# CONFIG_PPC_64K_PAGES is not set 206# CONFIG_PPC_64K_PAGES is not set
189CONFIG_SCHED_SMT=y 207CONFIG_SCHED_SMT=y
@@ -235,6 +253,7 @@ CONFIG_PACKET=y
235CONFIG_UNIX=y 253CONFIG_UNIX=y
236CONFIG_XFRM=y 254CONFIG_XFRM=y
237CONFIG_XFRM_USER=m 255CONFIG_XFRM_USER=m
256# CONFIG_XFRM_SUB_POLICY is not set
238CONFIG_NET_KEY=m 257CONFIG_NET_KEY=m
239CONFIG_INET=y 258CONFIG_INET=y
240CONFIG_IP_MULTICAST=y 259CONFIG_IP_MULTICAST=y
@@ -253,10 +272,13 @@ CONFIG_INET_XFRM_TUNNEL=m
253CONFIG_INET_TUNNEL=y 272CONFIG_INET_TUNNEL=y
254CONFIG_INET_XFRM_MODE_TRANSPORT=y 273CONFIG_INET_XFRM_MODE_TRANSPORT=y
255CONFIG_INET_XFRM_MODE_TUNNEL=y 274CONFIG_INET_XFRM_MODE_TUNNEL=y
275CONFIG_INET_XFRM_MODE_BEET=y
256CONFIG_INET_DIAG=y 276CONFIG_INET_DIAG=y
257CONFIG_INET_TCP_DIAG=y 277CONFIG_INET_TCP_DIAG=y
258# CONFIG_TCP_CONG_ADVANCED is not set 278# CONFIG_TCP_CONG_ADVANCED is not set
259CONFIG_TCP_CONG_BIC=y 279CONFIG_TCP_CONG_CUBIC=y
280CONFIG_DEFAULT_TCP_CONG="cubic"
281# CONFIG_TCP_MD5SIG is not set
260 282
261# 283#
262# IP: Virtual Server Configuration 284# IP: Virtual Server Configuration
@@ -275,25 +297,30 @@ CONFIG_NETFILTER=y
275CONFIG_NETFILTER_NETLINK=y 297CONFIG_NETFILTER_NETLINK=y
276CONFIG_NETFILTER_NETLINK_QUEUE=m 298CONFIG_NETFILTER_NETLINK_QUEUE=m
277CONFIG_NETFILTER_NETLINK_LOG=m 299CONFIG_NETFILTER_NETLINK_LOG=m
300CONFIG_NF_CONNTRACK_ENABLED=m
301CONFIG_NF_CONNTRACK_SUPPORT=y
302# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
303CONFIG_NF_CONNTRACK=m
304# CONFIG_NF_CT_ACCT is not set
305CONFIG_NF_CONNTRACK_MARK=y
306CONFIG_NF_CONNTRACK_EVENTS=y
307# CONFIG_NF_CT_PROTO_SCTP is not set
308# CONFIG_NF_CONNTRACK_AMANDA is not set
309CONFIG_NF_CONNTRACK_FTP=m
310# CONFIG_NF_CONNTRACK_H323 is not set
311CONFIG_NF_CONNTRACK_IRC=m
312# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
313# CONFIG_NF_CONNTRACK_PPTP is not set
314# CONFIG_NF_CONNTRACK_SIP is not set
315CONFIG_NF_CONNTRACK_TFTP=m
316CONFIG_NF_CT_NETLINK=m
278# CONFIG_NETFILTER_XTABLES is not set 317# CONFIG_NETFILTER_XTABLES is not set
279 318
280# 319#
281# IP: Netfilter Configuration 320# IP: Netfilter Configuration
282# 321#
283CONFIG_IP_NF_CONNTRACK=m 322CONFIG_NF_CONNTRACK_IPV4=m
284CONFIG_IP_NF_CT_ACCT=y 323CONFIG_NF_CONNTRACK_PROC_COMPAT=y
285CONFIG_IP_NF_CONNTRACK_MARK=y
286CONFIG_IP_NF_CONNTRACK_EVENTS=y
287CONFIG_IP_NF_CONNTRACK_NETLINK=m
288CONFIG_IP_NF_CT_PROTO_SCTP=m
289CONFIG_IP_NF_FTP=m
290CONFIG_IP_NF_IRC=m
291# CONFIG_IP_NF_NETBIOS_NS is not set
292CONFIG_IP_NF_TFTP=m
293CONFIG_IP_NF_AMANDA=m
294# CONFIG_IP_NF_PPTP is not set
295# CONFIG_IP_NF_H323 is not set
296# CONFIG_IP_NF_SIP is not set
297CONFIG_IP_NF_QUEUE=m 324CONFIG_IP_NF_QUEUE=m
298 325
299# 326#
@@ -320,7 +347,6 @@ CONFIG_LLC=y
320# CONFIG_ATALK is not set 347# CONFIG_ATALK is not set
321# CONFIG_X25 is not set 348# CONFIG_X25 is not set
322# CONFIG_LAPB is not set 349# CONFIG_LAPB is not set
323# CONFIG_NET_DIVERT is not set
324# CONFIG_ECONET is not set 350# CONFIG_ECONET is not set
325# CONFIG_WAN_ROUTER is not set 351# CONFIG_WAN_ROUTER is not set
326 352
@@ -402,6 +428,12 @@ CONFIG_BLK_DEV_INITRD=y
402# CONFIG_ATA_OVER_ETH is not set 428# CONFIG_ATA_OVER_ETH is not set
403 429
404# 430#
431# Misc devices
432#
433# CONFIG_SGI_IOC4 is not set
434# CONFIG_TIFM_CORE is not set
435
436#
405# ATA/ATAPI/MFM/RLL support 437# ATA/ATAPI/MFM/RLL support
406# 438#
407CONFIG_IDE=y 439CONFIG_IDE=y
@@ -428,7 +460,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
428# CONFIG_BLK_DEV_OFFBOARD is not set 460# CONFIG_BLK_DEV_OFFBOARD is not set
429CONFIG_BLK_DEV_GENERIC=y 461CONFIG_BLK_DEV_GENERIC=y
430# CONFIG_BLK_DEV_OPTI621 is not set 462# CONFIG_BLK_DEV_OPTI621 is not set
431CONFIG_BLK_DEV_SL82C105=y
432CONFIG_BLK_DEV_IDEDMA_PCI=y 463CONFIG_BLK_DEV_IDEDMA_PCI=y
433# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 464# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
434CONFIG_IDEDMA_PCI_AUTO=y 465CONFIG_IDEDMA_PCI_AUTO=y
@@ -443,6 +474,7 @@ CONFIG_BLK_DEV_AMD74XX=y
443# CONFIG_BLK_DEV_CS5530 is not set 474# CONFIG_BLK_DEV_CS5530 is not set
444# CONFIG_BLK_DEV_HPT34X is not set 475# CONFIG_BLK_DEV_HPT34X is not set
445# CONFIG_BLK_DEV_HPT366 is not set 476# CONFIG_BLK_DEV_HPT366 is not set
477# CONFIG_BLK_DEV_JMICRON is not set
446# CONFIG_BLK_DEV_SC1200 is not set 478# CONFIG_BLK_DEV_SC1200 is not set
447# CONFIG_BLK_DEV_PIIX is not set 479# CONFIG_BLK_DEV_PIIX is not set
448# CONFIG_BLK_DEV_IT821X is not set 480# CONFIG_BLK_DEV_IT821X is not set
@@ -451,6 +483,7 @@ CONFIG_BLK_DEV_AMD74XX=y
451# CONFIG_BLK_DEV_PDC202XX_NEW is not set 483# CONFIG_BLK_DEV_PDC202XX_NEW is not set
452# CONFIG_BLK_DEV_SVWKS is not set 484# CONFIG_BLK_DEV_SVWKS is not set
453# CONFIG_BLK_DEV_SIIMAGE is not set 485# CONFIG_BLK_DEV_SIIMAGE is not set
486CONFIG_BLK_DEV_SL82C105=y
454# CONFIG_BLK_DEV_SLC90E66 is not set 487# CONFIG_BLK_DEV_SLC90E66 is not set
455# CONFIG_BLK_DEV_TRM290 is not set 488# CONFIG_BLK_DEV_TRM290 is not set
456# CONFIG_BLK_DEV_VIA82CXXX is not set 489# CONFIG_BLK_DEV_VIA82CXXX is not set
@@ -465,6 +498,8 @@ CONFIG_IDEDMA_AUTO=y
465# 498#
466# CONFIG_RAID_ATTRS is not set 499# CONFIG_RAID_ATTRS is not set
467CONFIG_SCSI=y 500CONFIG_SCSI=y
501# CONFIG_SCSI_TGT is not set
502CONFIG_SCSI_NETLINK=y
468CONFIG_SCSI_PROC_FS=y 503CONFIG_SCSI_PROC_FS=y
469 504
470# 505#
@@ -484,14 +519,16 @@ CONFIG_CHR_DEV_SG=y
484CONFIG_SCSI_MULTI_LUN=y 519CONFIG_SCSI_MULTI_LUN=y
485CONFIG_SCSI_CONSTANTS=y 520CONFIG_SCSI_CONSTANTS=y
486# CONFIG_SCSI_LOGGING is not set 521# CONFIG_SCSI_LOGGING is not set
522# CONFIG_SCSI_SCAN_ASYNC is not set
487 523
488# 524#
489# SCSI Transport Attributes 525# SCSI Transports
490# 526#
491CONFIG_SCSI_SPI_ATTRS=y 527CONFIG_SCSI_SPI_ATTRS=y
492CONFIG_SCSI_FC_ATTRS=y 528CONFIG_SCSI_FC_ATTRS=y
493CONFIG_SCSI_ISCSI_ATTRS=m 529CONFIG_SCSI_ISCSI_ATTRS=m
494CONFIG_SCSI_SAS_ATTRS=m 530CONFIG_SCSI_SAS_ATTRS=m
531# CONFIG_SCSI_SAS_LIBSAS is not set
495 532
496# 533#
497# SCSI low-level drivers 534# SCSI low-level drivers
@@ -504,10 +541,11 @@ CONFIG_SCSI_SAS_ATTRS=m
504# CONFIG_SCSI_AIC7XXX is not set 541# CONFIG_SCSI_AIC7XXX is not set
505# CONFIG_SCSI_AIC7XXX_OLD is not set 542# CONFIG_SCSI_AIC7XXX_OLD is not set
506# CONFIG_SCSI_AIC79XX is not set 543# CONFIG_SCSI_AIC79XX is not set
544# CONFIG_SCSI_AIC94XX is not set
545# CONFIG_SCSI_ARCMSR is not set
507# CONFIG_MEGARAID_NEWGEN is not set 546# CONFIG_MEGARAID_NEWGEN is not set
508# CONFIG_MEGARAID_LEGACY is not set 547# CONFIG_MEGARAID_LEGACY is not set
509# CONFIG_MEGARAID_SAS is not set 548# CONFIG_MEGARAID_SAS is not set
510CONFIG_ATA=y
511# CONFIG_SCSI_HPTIOP is not set 549# CONFIG_SCSI_HPTIOP is not set
512# CONFIG_SCSI_BUSLOGIC is not set 550# CONFIG_SCSI_BUSLOGIC is not set
513# CONFIG_SCSI_DMX3191D is not set 551# CONFIG_SCSI_DMX3191D is not set
@@ -520,6 +558,7 @@ CONFIG_SCSI_IBMVSCSI=y
520# CONFIG_SCSI_INIA100 is not set 558# CONFIG_SCSI_INIA100 is not set
521# CONFIG_SCSI_PPA is not set 559# CONFIG_SCSI_PPA is not set
522# CONFIG_SCSI_IMM is not set 560# CONFIG_SCSI_IMM is not set
561# CONFIG_SCSI_STEX is not set
523CONFIG_SCSI_SYM53C8XX_2=y 562CONFIG_SCSI_SYM53C8XX_2=y
524CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 563CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
525CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 564CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
@@ -530,10 +569,66 @@ CONFIG_SCSI_IPR_TRACE=y
530CONFIG_SCSI_IPR_DUMP=y 569CONFIG_SCSI_IPR_DUMP=y
531# CONFIG_SCSI_QLOGIC_1280 is not set 570# CONFIG_SCSI_QLOGIC_1280 is not set
532CONFIG_SCSI_QLA_FC=m 571CONFIG_SCSI_QLA_FC=m
572# CONFIG_SCSI_QLA_ISCSI is not set
533CONFIG_SCSI_LPFC=m 573CONFIG_SCSI_LPFC=m
534# CONFIG_SCSI_DC395x is not set 574# CONFIG_SCSI_DC395x is not set
535# CONFIG_SCSI_DC390T is not set 575# CONFIG_SCSI_DC390T is not set
536# CONFIG_SCSI_DEBUG is not set 576# CONFIG_SCSI_DEBUG is not set
577# CONFIG_SCSI_SRP is not set
578
579#
580# Serial ATA (prod) and Parallel ATA (experimental) drivers
581#
582CONFIG_ATA=y
583# CONFIG_SATA_AHCI is not set
584# CONFIG_SATA_SVW is not set
585# CONFIG_ATA_PIIX is not set
586# CONFIG_SATA_MV is not set
587# CONFIG_SATA_NV is not set
588# CONFIG_PDC_ADMA is not set
589# CONFIG_SATA_QSTOR is not set
590# CONFIG_SATA_PROMISE is not set
591# CONFIG_SATA_SX4 is not set
592# CONFIG_SATA_SIL is not set
593# CONFIG_SATA_SIL24 is not set
594# CONFIG_SATA_SIS is not set
595# CONFIG_SATA_ULI is not set
596# CONFIG_SATA_VIA is not set
597# CONFIG_SATA_VITESSE is not set
598# CONFIG_PATA_ALI is not set
599# CONFIG_PATA_AMD is not set
600# CONFIG_PATA_ARTOP is not set
601# CONFIG_PATA_ATIIXP is not set
602# CONFIG_PATA_CMD64X is not set
603# CONFIG_PATA_CS5520 is not set
604# CONFIG_PATA_CS5530 is not set
605# CONFIG_PATA_CYPRESS is not set
606# CONFIG_PATA_EFAR is not set
607# CONFIG_ATA_GENERIC is not set
608# CONFIG_PATA_HPT366 is not set
609# CONFIG_PATA_HPT37X is not set
610# CONFIG_PATA_HPT3X2N is not set
611# CONFIG_PATA_HPT3X3 is not set
612# CONFIG_PATA_IT821X is not set
613# CONFIG_PATA_JMICRON is not set
614# CONFIG_PATA_TRIFLEX is not set
615# CONFIG_PATA_MARVELL is not set
616# CONFIG_PATA_MPIIX is not set
617# CONFIG_PATA_OLDPIIX is not set
618# CONFIG_PATA_NETCELL is not set
619# CONFIG_PATA_NS87410 is not set
620# CONFIG_PATA_OPTI is not set
621# CONFIG_PATA_OPTIDMA is not set
622# CONFIG_PATA_PDC_OLD is not set
623# CONFIG_PATA_RADISYS is not set
624# CONFIG_PATA_RZ1000 is not set
625# CONFIG_PATA_SC1200 is not set
626# CONFIG_PATA_SERVERWORKS is not set
627# CONFIG_PATA_PDC2027X is not set
628# CONFIG_PATA_SIL680 is not set
629# CONFIG_PATA_SIS is not set
630# CONFIG_PATA_VIA is not set
631# CONFIG_PATA_WINBOND is not set
537 632
538# 633#
539# Multi-device support (RAID and LVM) 634# Multi-device support (RAID and LVM)
@@ -548,6 +643,7 @@ CONFIG_MD_RAID10=m
548CONFIG_MD_MULTIPATH=m 643CONFIG_MD_MULTIPATH=m
549CONFIG_MD_FAULTY=m 644CONFIG_MD_FAULTY=m
550CONFIG_BLK_DEV_DM=y 645CONFIG_BLK_DEV_DM=y
646# CONFIG_DM_DEBUG is not set
551CONFIG_DM_CRYPT=m 647CONFIG_DM_CRYPT=m
552CONFIG_DM_SNAPSHOT=m 648CONFIG_DM_SNAPSHOT=m
553CONFIG_DM_MIRROR=m 649CONFIG_DM_MIRROR=m
@@ -576,6 +672,7 @@ CONFIG_DM_MULTIPATH_EMC=m
576# 672#
577# Macintosh device drivers 673# Macintosh device drivers
578# 674#
675# CONFIG_MAC_EMUMOUSEBTN is not set
579# CONFIG_WINDFARM is not set 676# CONFIG_WINDFARM is not set
580 677
581# 678#
@@ -617,6 +714,7 @@ CONFIG_VORTEX=y
617CONFIG_IBMVETH=y 714CONFIG_IBMVETH=y
618CONFIG_NET_PCI=y 715CONFIG_NET_PCI=y
619CONFIG_PCNET32=y 716CONFIG_PCNET32=y
717# CONFIG_PCNET32_NAPI is not set
620# CONFIG_AMD8111_ETH is not set 718# CONFIG_AMD8111_ETH is not set
621# CONFIG_ADAPTEC_STARFIRE is not set 719# CONFIG_ADAPTEC_STARFIRE is not set
622# CONFIG_B44 is not set 720# CONFIG_B44 is not set
@@ -655,17 +753,19 @@ CONFIG_E1000=y
655# CONFIG_VIA_VELOCITY is not set 753# CONFIG_VIA_VELOCITY is not set
656CONFIG_TIGON3=y 754CONFIG_TIGON3=y
657# CONFIG_BNX2 is not set 755# CONFIG_BNX2 is not set
658# CONFIG_MV643XX_ETH is not set 756# CONFIG_QLA3XXX is not set
659 757
660# 758#
661# Ethernet (10000 Mbit) 759# Ethernet (10000 Mbit)
662# 760#
663# CONFIG_CHELSIO_T1 is not set 761# CONFIG_CHELSIO_T1 is not set
762CONFIG_EHEA=m
664CONFIG_IXGB=m 763CONFIG_IXGB=m
665# CONFIG_IXGB_NAPI is not set 764# CONFIG_IXGB_NAPI is not set
666CONFIG_S2IO=m 765CONFIG_S2IO=m
667# CONFIG_S2IO_NAPI is not set 766# CONFIG_S2IO_NAPI is not set
668# CONFIG_MYRI10GE is not set 767# CONFIG_MYRI10GE is not set
768# CONFIG_NETXEN_NIC is not set
669 769
670# 770#
671# Token Ring devices 771# Token Ring devices
@@ -697,6 +797,7 @@ CONFIG_PPP_BSDCOMP=m
697# CONFIG_PPP_MPPE is not set 797# CONFIG_PPP_MPPE is not set
698CONFIG_PPPOE=m 798CONFIG_PPPOE=m
699# CONFIG_SLIP is not set 799# CONFIG_SLIP is not set
800CONFIG_SLHC=m
700# CONFIG_NET_FC is not set 801# CONFIG_NET_FC is not set
701# CONFIG_SHAPER is not set 802# CONFIG_SHAPER is not set
702CONFIG_NETCONSOLE=y 803CONFIG_NETCONSOLE=y
@@ -719,6 +820,7 @@ CONFIG_NET_POLL_CONTROLLER=y
719# Input device support 820# Input device support
720# 821#
721CONFIG_INPUT=y 822CONFIG_INPUT=y
823# CONFIG_INPUT_FF_MEMLESS is not set
722 824
723# 825#
724# Userland interfaces 826# Userland interfaces
@@ -741,6 +843,7 @@ CONFIG_KEYBOARD_ATKBD=y
741# CONFIG_KEYBOARD_LKKBD is not set 843# CONFIG_KEYBOARD_LKKBD is not set
742# CONFIG_KEYBOARD_XTKBD is not set 844# CONFIG_KEYBOARD_XTKBD is not set
743# CONFIG_KEYBOARD_NEWTON is not set 845# CONFIG_KEYBOARD_NEWTON is not set
846# CONFIG_KEYBOARD_STOWAWAY is not set
744CONFIG_INPUT_MOUSE=y 847CONFIG_INPUT_MOUSE=y
745CONFIG_MOUSE_PS2=y 848CONFIG_MOUSE_PS2=y
746# CONFIG_MOUSE_SERIAL is not set 849# CONFIG_MOUSE_SERIAL is not set
@@ -815,10 +918,6 @@ CONFIG_GEN_RTC=y
815# CONFIG_DTLK is not set 918# CONFIG_DTLK is not set
816# CONFIG_R3964 is not set 919# CONFIG_R3964 is not set
817# CONFIG_APPLICOM is not set 920# CONFIG_APPLICOM is not set
818
819#
820# Ftape, the floppy tape device driver
821#
822# CONFIG_AGP is not set 921# CONFIG_AGP is not set
823# CONFIG_DRM is not set 922# CONFIG_DRM is not set
824CONFIG_RAW_DRIVER=y 923CONFIG_RAW_DRIVER=y
@@ -829,7 +928,6 @@ CONFIG_MAX_RAW_DEVS=1024
829# TPM devices 928# TPM devices
830# 929#
831# CONFIG_TCG_TPM is not set 930# CONFIG_TCG_TPM is not set
832# CONFIG_TELCLOCK is not set
833 931
834# 932#
835# I2C support 933# I2C support
@@ -894,6 +992,7 @@ CONFIG_I2C_ALGOBIT=y
894# 992#
895# Dallas's 1-wire bus 993# Dallas's 1-wire bus
896# 994#
995# CONFIG_W1 is not set
897 996
898# 997#
899# Hardware Monitoring support 998# Hardware Monitoring support
@@ -902,14 +1001,9 @@ CONFIG_I2C_ALGOBIT=y
902# CONFIG_HWMON_VID is not set 1001# CONFIG_HWMON_VID is not set
903 1002
904# 1003#
905# Misc devices
906#
907
908#
909# Multimedia devices 1004# Multimedia devices
910# 1005#
911# CONFIG_VIDEO_DEV is not set 1006# CONFIG_VIDEO_DEV is not set
912CONFIG_VIDEO_V4L2=y
913 1007
914# 1008#
915# Digital Video Broadcasting Devices 1009# Digital Video Broadcasting Devices
@@ -922,6 +1016,7 @@ CONFIG_VIDEO_V4L2=y
922# 1016#
923CONFIG_FIRMWARE_EDID=y 1017CONFIG_FIRMWARE_EDID=y
924CONFIG_FB=y 1018CONFIG_FB=y
1019CONFIG_FB_DDC=y
925CONFIG_FB_CFB_FILLRECT=y 1020CONFIG_FB_CFB_FILLRECT=y
926CONFIG_FB_CFB_COPYAREA=y 1021CONFIG_FB_CFB_COPYAREA=y
927CONFIG_FB_CFB_IMAGEBLIT=y 1022CONFIG_FB_CFB_IMAGEBLIT=y
@@ -957,6 +1052,7 @@ CONFIG_FB_RADEON_I2C=y
957# CONFIG_FB_3DFX is not set 1052# CONFIG_FB_3DFX is not set
958# CONFIG_FB_VOODOO1 is not set 1053# CONFIG_FB_VOODOO1 is not set
959# CONFIG_FB_TRIDENT is not set 1054# CONFIG_FB_TRIDENT is not set
1055CONFIG_FB_IBM_GXT4500=y
960# CONFIG_FB_VIRTUAL is not set 1056# CONFIG_FB_VIRTUAL is not set
961 1057
962# 1058#
@@ -989,6 +1085,11 @@ CONFIG_LCD_DEVICE=y
989# CONFIG_SOUND is not set 1085# CONFIG_SOUND is not set
990 1086
991# 1087#
1088# HID Devices
1089#
1090CONFIG_HID=y
1091
1092#
992# USB support 1093# USB support
993# 1094#
994CONFIG_USB_ARCH_HAS_HCD=y 1095CONFIG_USB_ARCH_HAS_HCD=y
@@ -1003,6 +1104,7 @@ CONFIG_USB=y
1003CONFIG_USB_DEVICEFS=y 1104CONFIG_USB_DEVICEFS=y
1004# CONFIG_USB_BANDWIDTH is not set 1105# CONFIG_USB_BANDWIDTH is not set
1005# CONFIG_USB_DYNAMIC_MINORS is not set 1106# CONFIG_USB_DYNAMIC_MINORS is not set
1107# CONFIG_USB_MULTITHREAD_PROBE is not set
1006# CONFIG_USB_OTG is not set 1108# CONFIG_USB_OTG is not set
1007 1109
1008# 1110#
@@ -1043,13 +1145,13 @@ CONFIG_USB_STORAGE=y
1043# CONFIG_USB_STORAGE_SDDR55 is not set 1145# CONFIG_USB_STORAGE_SDDR55 is not set
1044# CONFIG_USB_STORAGE_JUMPSHOT is not set 1146# CONFIG_USB_STORAGE_JUMPSHOT is not set
1045# CONFIG_USB_STORAGE_ALAUDA is not set 1147# CONFIG_USB_STORAGE_ALAUDA is not set
1148# CONFIG_USB_STORAGE_KARMA is not set
1046# CONFIG_USB_LIBUSUAL is not set 1149# CONFIG_USB_LIBUSUAL is not set
1047 1150
1048# 1151#
1049# USB Input Devices 1152# USB Input Devices
1050# 1153#
1051CONFIG_USB_HID=y 1154CONFIG_USB_HID=y
1052CONFIG_USB_HIDINPUT=y
1053# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1155# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1054# CONFIG_HID_FF is not set 1156# CONFIG_HID_FF is not set
1055CONFIG_USB_HIDDEV=y 1157CONFIG_USB_HIDDEV=y
@@ -1079,6 +1181,7 @@ CONFIG_USB_HIDDEV=y
1079# CONFIG_USB_KAWETH is not set 1181# CONFIG_USB_KAWETH is not set
1080# CONFIG_USB_PEGASUS is not set 1182# CONFIG_USB_PEGASUS is not set
1081# CONFIG_USB_RTL8150 is not set 1183# CONFIG_USB_RTL8150 is not set
1184# CONFIG_USB_USBNET_MII is not set
1082# CONFIG_USB_USBNET is not set 1185# CONFIG_USB_USBNET is not set
1083CONFIG_USB_MON=y 1186CONFIG_USB_MON=y
1084 1187
@@ -1097,6 +1200,7 @@ CONFIG_USB_MON=y
1097# 1200#
1098# CONFIG_USB_EMI62 is not set 1201# CONFIG_USB_EMI62 is not set
1099# CONFIG_USB_EMI26 is not set 1202# CONFIG_USB_EMI26 is not set
1203# CONFIG_USB_ADUTUX is not set
1100# CONFIG_USB_AUERSWALD is not set 1204# CONFIG_USB_AUERSWALD is not set
1101# CONFIG_USB_RIO500 is not set 1205# CONFIG_USB_RIO500 is not set
1102# CONFIG_USB_LEGOTOWER is not set 1206# CONFIG_USB_LEGOTOWER is not set
@@ -1104,12 +1208,13 @@ CONFIG_USB_MON=y
1104# CONFIG_USB_LED is not set 1208# CONFIG_USB_LED is not set
1105# CONFIG_USB_CYPRESS_CY7C63 is not set 1209# CONFIG_USB_CYPRESS_CY7C63 is not set
1106# CONFIG_USB_CYTHERM is not set 1210# CONFIG_USB_CYTHERM is not set
1107# CONFIG_USB_PHIDGETKIT is not set 1211# CONFIG_USB_PHIDGET is not set
1108# CONFIG_USB_PHIDGETSERVO is not set
1109# CONFIG_USB_IDMOUSE is not set 1212# CONFIG_USB_IDMOUSE is not set
1213# CONFIG_USB_FTDI_ELAN is not set
1110# CONFIG_USB_APPLEDISPLAY is not set 1214# CONFIG_USB_APPLEDISPLAY is not set
1111# CONFIG_USB_SISUSBVGA is not set 1215# CONFIG_USB_SISUSBVGA is not set
1112# CONFIG_USB_LD is not set 1216# CONFIG_USB_LD is not set
1217# CONFIG_USB_TRANCEVIBRATOR is not set
1113# CONFIG_USB_TEST is not set 1218# CONFIG_USB_TEST is not set
1114 1219
1115# 1220#
@@ -1148,6 +1253,9 @@ CONFIG_INFINIBAND_USER_ACCESS=m
1148CONFIG_INFINIBAND_ADDR_TRANS=y 1253CONFIG_INFINIBAND_ADDR_TRANS=y
1149CONFIG_INFINIBAND_MTHCA=m 1254CONFIG_INFINIBAND_MTHCA=m
1150CONFIG_INFINIBAND_MTHCA_DEBUG=y 1255CONFIG_INFINIBAND_MTHCA_DEBUG=y
1256CONFIG_INFINIBAND_EHCA=m
1257CONFIG_INFINIBAND_EHCA_SCALING=y
1258# CONFIG_INFINIBAND_AMSO1100 is not set
1151CONFIG_INFINIBAND_IPOIB=m 1259CONFIG_INFINIBAND_IPOIB=m
1152CONFIG_INFINIBAND_IPOIB_DEBUG=y 1260CONFIG_INFINIBAND_IPOIB_DEBUG=y
1153# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set 1261# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
@@ -1177,6 +1285,10 @@ CONFIG_INFINIBAND_SRP=m
1177# 1285#
1178 1286
1179# 1287#
1288# Virtualization
1289#
1290
1291#
1180# File systems 1292# File systems
1181# 1293#
1182CONFIG_EXT2_FS=y 1294CONFIG_EXT2_FS=y
@@ -1189,6 +1301,7 @@ CONFIG_EXT3_FS=y
1189CONFIG_EXT3_FS_XATTR=y 1301CONFIG_EXT3_FS_XATTR=y
1190CONFIG_EXT3_FS_POSIX_ACL=y 1302CONFIG_EXT3_FS_POSIX_ACL=y
1191CONFIG_EXT3_FS_SECURITY=y 1303CONFIG_EXT3_FS_SECURITY=y
1304# CONFIG_EXT4DEV_FS is not set
1192CONFIG_JBD=y 1305CONFIG_JBD=y
1193# CONFIG_JBD_DEBUG is not set 1306# CONFIG_JBD_DEBUG is not set
1194CONFIG_FS_MBCACHE=y 1307CONFIG_FS_MBCACHE=y
@@ -1209,6 +1322,7 @@ CONFIG_XFS_FS=m
1209CONFIG_XFS_SECURITY=y 1322CONFIG_XFS_SECURITY=y
1210CONFIG_XFS_POSIX_ACL=y 1323CONFIG_XFS_POSIX_ACL=y
1211# CONFIG_XFS_RT is not set 1324# CONFIG_XFS_RT is not set
1325# CONFIG_GFS2_FS is not set
1212CONFIG_OCFS2_FS=m 1326CONFIG_OCFS2_FS=m
1213CONFIG_OCFS2_DEBUG_MASKLOG=y 1327CONFIG_OCFS2_DEBUG_MASKLOG=y
1214# CONFIG_MINIX_FS is not set 1328# CONFIG_MINIX_FS is not set
@@ -1246,8 +1360,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1246# 1360#
1247CONFIG_PROC_FS=y 1361CONFIG_PROC_FS=y
1248CONFIG_PROC_KCORE=y 1362CONFIG_PROC_KCORE=y
1363CONFIG_PROC_SYSCTL=y
1249CONFIG_SYSFS=y 1364CONFIG_SYSFS=y
1250CONFIG_TMPFS=y 1365CONFIG_TMPFS=y
1366# CONFIG_TMPFS_POSIX_ACL is not set
1251CONFIG_HUGETLBFS=y 1367CONFIG_HUGETLBFS=y
1252CONFIG_HUGETLB_PAGE=y 1368CONFIG_HUGETLB_PAGE=y
1253CONFIG_RAMFS=y 1369CONFIG_RAMFS=y
@@ -1357,17 +1473,22 @@ CONFIG_NLS_ISO8859_1=y
1357# CONFIG_NLS_UTF8 is not set 1473# CONFIG_NLS_UTF8 is not set
1358 1474
1359# 1475#
1476# Distributed Lock Manager
1477#
1478# CONFIG_DLM is not set
1479
1480#
1360# Library routines 1481# Library routines
1361# 1482#
1483CONFIG_BITREVERSE=y
1362CONFIG_CRC_CCITT=m 1484CONFIG_CRC_CCITT=m
1363# CONFIG_CRC16 is not set 1485# CONFIG_CRC16 is not set
1364CONFIG_CRC32=y 1486CONFIG_CRC32=y
1365CONFIG_LIBCRC32C=m 1487CONFIG_LIBCRC32C=m
1366CONFIG_ZLIB_INFLATE=y 1488CONFIG_ZLIB_INFLATE=y
1367CONFIG_ZLIB_DEFLATE=m 1489CONFIG_ZLIB_DEFLATE=m
1368CONFIG_TEXTSEARCH=y
1369CONFIG_TEXTSEARCH_KMP=m
1370CONFIG_PLIST=y 1490CONFIG_PLIST=y
1491CONFIG_IOMAP_COPY=y
1371 1492
1372# 1493#
1373# Instrumentation Support 1494# Instrumentation Support
@@ -1380,8 +1501,11 @@ CONFIG_KPROBES=y
1380# Kernel hacking 1501# Kernel hacking
1381# 1502#
1382# CONFIG_PRINTK_TIME is not set 1503# CONFIG_PRINTK_TIME is not set
1504CONFIG_ENABLE_MUST_CHECK=y
1383CONFIG_MAGIC_SYSRQ=y 1505CONFIG_MAGIC_SYSRQ=y
1384# CONFIG_UNUSED_SYMBOLS is not set 1506# CONFIG_UNUSED_SYMBOLS is not set
1507CONFIG_DEBUG_FS=y
1508# CONFIG_HEADERS_CHECK is not set
1385CONFIG_DEBUG_KERNEL=y 1509CONFIG_DEBUG_KERNEL=y
1386CONFIG_LOG_BUF_SHIFT=17 1510CONFIG_LOG_BUF_SHIFT=17
1387CONFIG_DETECT_SOFTLOCKUP=y 1511CONFIG_DETECT_SOFTLOCKUP=y
@@ -1395,16 +1519,20 @@ CONFIG_DETECT_SOFTLOCKUP=y
1395# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1519# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1396# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1520# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1397# CONFIG_DEBUG_KOBJECT is not set 1521# CONFIG_DEBUG_KOBJECT is not set
1522CONFIG_DEBUG_BUGVERBOSE=y
1398# CONFIG_DEBUG_INFO is not set 1523# CONFIG_DEBUG_INFO is not set
1399CONFIG_DEBUG_FS=y
1400# CONFIG_DEBUG_VM is not set 1524# CONFIG_DEBUG_VM is not set
1525# CONFIG_DEBUG_LIST is not set
1401CONFIG_FORCED_INLINING=y 1526CONFIG_FORCED_INLINING=y
1402# CONFIG_RCU_TORTURE_TEST is not set 1527# CONFIG_RCU_TORTURE_TEST is not set
1528# CONFIG_LKDTM is not set
1403CONFIG_DEBUG_STACKOVERFLOW=y 1529CONFIG_DEBUG_STACKOVERFLOW=y
1404# CONFIG_DEBUG_STACK_USAGE is not set 1530# CONFIG_DEBUG_STACK_USAGE is not set
1531CONFIG_HCALL_STATS=y
1405CONFIG_DEBUGGER=y 1532CONFIG_DEBUGGER=y
1406CONFIG_XMON=y 1533CONFIG_XMON=y
1407CONFIG_XMON_DEFAULT=y 1534CONFIG_XMON_DEFAULT=y
1535CONFIG_XMON_DISASSEMBLY=y
1408CONFIG_IRQSTACKS=y 1536CONFIG_IRQSTACKS=y
1409# CONFIG_BOOTX_TEXT is not set 1537# CONFIG_BOOTX_TEXT is not set
1410# CONFIG_PPC_EARLY_DEBUG is not set 1538# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1419,7 +1547,12 @@ CONFIG_IRQSTACKS=y
1419# Cryptographic options 1547# Cryptographic options
1420# 1548#
1421CONFIG_CRYPTO=y 1549CONFIG_CRYPTO=y
1550CONFIG_CRYPTO_ALGAPI=y
1551CONFIG_CRYPTO_BLKCIPHER=y
1552CONFIG_CRYPTO_HASH=y
1553CONFIG_CRYPTO_MANAGER=y
1422CONFIG_CRYPTO_HMAC=y 1554CONFIG_CRYPTO_HMAC=y
1555# CONFIG_CRYPTO_XCBC is not set
1423CONFIG_CRYPTO_NULL=m 1556CONFIG_CRYPTO_NULL=m
1424CONFIG_CRYPTO_MD4=m 1557CONFIG_CRYPTO_MD4=m
1425CONFIG_CRYPTO_MD5=y 1558CONFIG_CRYPTO_MD5=y
@@ -1428,9 +1561,14 @@ CONFIG_CRYPTO_SHA256=m
1428CONFIG_CRYPTO_SHA512=m 1561CONFIG_CRYPTO_SHA512=m
1429CONFIG_CRYPTO_WP512=m 1562CONFIG_CRYPTO_WP512=m
1430CONFIG_CRYPTO_TGR192=m 1563CONFIG_CRYPTO_TGR192=m
1564# CONFIG_CRYPTO_GF128MUL is not set
1565CONFIG_CRYPTO_ECB=m
1566CONFIG_CRYPTO_CBC=y
1567# CONFIG_CRYPTO_LRW is not set
1431CONFIG_CRYPTO_DES=y 1568CONFIG_CRYPTO_DES=y
1432CONFIG_CRYPTO_BLOWFISH=m 1569CONFIG_CRYPTO_BLOWFISH=m
1433CONFIG_CRYPTO_TWOFISH=m 1570CONFIG_CRYPTO_TWOFISH=m
1571CONFIG_CRYPTO_TWOFISH_COMMON=m
1434CONFIG_CRYPTO_SERPENT=m 1572CONFIG_CRYPTO_SERPENT=m
1435CONFIG_CRYPTO_AES=m 1573CONFIG_CRYPTO_AES=m
1436CONFIG_CRYPTO_CAST5=m 1574CONFIG_CRYPTO_CAST5=m
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
index 2847cd51a2d7..c54f3639c5ad 100644
--- a/arch/powerpc/kernel/pci_32.c
+++ b/arch/powerpc/kernel/pci_32.c
@@ -775,11 +775,6 @@ static struct device_node *scan_OF_for_pci_bus(struct pci_bus *bus)
775 np = scan_OF_for_pci_dev(parent, bus->self->devfn); 775 np = scan_OF_for_pci_dev(parent, bus->self->devfn);
776 of_node_put(parent); 776 of_node_put(parent);
777 777
778 /* sanity check */
779 if (strcmp(np->type, "pci") != 0)
780 printk(KERN_WARNING "pci: wrong type \"%s\" for bridge %s\n",
781 np->type, np->full_name);
782
783 return np; 778 return np;
784} 779}
785 780
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index 73c59ec49120..01f18c683407 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -1430,7 +1430,7 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus,
1430 1430
1431 for (ln = pci_root_buses.next; ln != &pci_root_buses; ln = ln->next) { 1431 for (ln = pci_root_buses.next; ln != &pci_root_buses; ln = ln->next) {
1432 bus = pci_bus_b(ln); 1432 bus = pci_bus_b(ln);
1433 if (in_bus >= bus->number && in_bus < (bus->number + bus->subordinate)) 1433 if (in_bus >= bus->number && in_bus <= bus->subordinate)
1434 break; 1434 break;
1435 bus = NULL; 1435 bus = NULL;
1436 } 1436 }
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
index a4b28c73bba0..ae0ede19879d 100644
--- a/arch/powerpc/kernel/vdso.c
+++ b/arch/powerpc/kernel/vdso.c
@@ -284,6 +284,13 @@ int arch_setup_additional_pages(struct linux_binprm *bprm,
284 * pages though 284 * pages though
285 */ 285 */
286 vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC; 286 vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC;
287 /*
288 * Make sure the vDSO gets into every core dump.
289 * Dumping its contents makes post-mortem fully interpretable later
290 * without matching up the same kernel and hardware config to see
291 * what PC values meant.
292 */
293 vma->vm_flags |= VM_ALWAYSDUMP;
287 vma->vm_flags |= mm->def_flags; 294 vma->vm_flags |= mm->def_flags;
288 vma->vm_page_prot = protection_map[vma->vm_flags & 0x7]; 295 vma->vm_page_prot = protection_map[vma->vm_flags & 0x7];
289 vma->vm_ops = &vdso_vmops; 296 vma->vm_ops = &vdso_vmops;
diff --git a/arch/powerpc/platforms/83xx/mpc832x_mds.c b/arch/powerpc/platforms/83xx/mpc832x_mds.c
index f58c9780b66f..4d471190be8d 100644
--- a/arch/powerpc/platforms/83xx/mpc832x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc832x_mds.c
@@ -103,7 +103,7 @@ static void __init mpc832x_sys_setup_arch(void)
103#ifdef CONFIG_QUICC_ENGINE 103#ifdef CONFIG_QUICC_ENGINE
104 qe_reset(); 104 qe_reset();
105 105
106 if ((np = of_find_node_by_name(np, "par_io")) != NULL) { 106 if ((np = of_find_node_by_name(NULL, "par_io")) != NULL) {
107 par_io_init(np); 107 par_io_init(np);
108 of_node_put(np); 108 of_node_put(np);
109 109
diff --git a/arch/powerpc/platforms/83xx/mpc8360e_pb.c b/arch/powerpc/platforms/83xx/mpc8360e_pb.c
index 7bfd47ad7233..53b92a904e8e 100644
--- a/arch/powerpc/platforms/83xx/mpc8360e_pb.c
+++ b/arch/powerpc/platforms/83xx/mpc8360e_pb.c
@@ -108,7 +108,7 @@ static void __init mpc8360_sys_setup_arch(void)
108#ifdef CONFIG_QUICC_ENGINE 108#ifdef CONFIG_QUICC_ENGINE
109 qe_reset(); 109 qe_reset();
110 110
111 if ((np = of_find_node_by_name(np, "par_io")) != NULL) { 111 if ((np = of_find_node_by_name(NULL, "par_io")) != NULL) {
112 par_io_init(np); 112 par_io_init(np);
113 of_node_put(np); 113 of_node_put(np);
114 114
diff --git a/arch/powerpc/platforms/ps3/Makefile b/arch/powerpc/platforms/ps3/Makefile
index 3757cfabc8ce..1994904f580f 100644
--- a/arch/powerpc/platforms/ps3/Makefile
+++ b/arch/powerpc/platforms/ps3/Makefile
@@ -1,4 +1,5 @@
1obj-y += setup.o mm.o smp.o time.o hvcall.o htab.o repository.o 1obj-y += setup.o mm.o time.o hvcall.o htab.o repository.o
2obj-y += interrupt.o exports.o os-area.o 2obj-y += interrupt.o exports.o os-area.o
3 3
4obj-$(CONFIG_SMP) += smp.o
4obj-$(CONFIG_SPU_BASE) += spu.o 5obj-$(CONFIG_SPU_BASE) += spu.o
diff --git a/arch/powerpc/platforms/ps3/interrupt.c b/arch/powerpc/platforms/ps3/interrupt.c
index 056c1e4141ba..6f5de438b980 100644
--- a/arch/powerpc/platforms/ps3/interrupt.c
+++ b/arch/powerpc/platforms/ps3/interrupt.c
@@ -71,7 +71,7 @@ int ps3_free_io_irq(unsigned int virq)
71 71
72 result = lv1_destruct_io_irq_outlet(virq_to_hw(virq)); 72 result = lv1_destruct_io_irq_outlet(virq_to_hw(virq));
73 73
74 if (!result) 74 if (result)
75 pr_debug("%s:%d: lv1_destruct_io_irq_outlet failed: %s\n", 75 pr_debug("%s:%d: lv1_destruct_io_irq_outlet failed: %s\n",
76 __func__, __LINE__, ps3_result(result)); 76 __func__, __LINE__, ps3_result(result));
77 77
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c
index 3c95392f4f41..e6653a868b91 100644
--- a/arch/powerpc/platforms/pseries/iommu.c
+++ b/arch/powerpc/platforms/pseries/iommu.c
@@ -459,7 +459,8 @@ static void pci_dma_dev_setup_pSeries(struct pci_dev *dev)
459 tbl = kmalloc_node(sizeof(struct iommu_table), GFP_KERNEL, 459 tbl = kmalloc_node(sizeof(struct iommu_table), GFP_KERNEL,
460 phb->node); 460 phb->node);
461 iommu_table_setparms(phb, dn, tbl); 461 iommu_table_setparms(phb, dn, tbl);
462 dev->dev.archdata.dma_data = iommu_init_table(tbl, phb->node); 462 PCI_DN(dn)->iommu_table = iommu_init_table(tbl, phb->node);
463 dev->dev.archdata.dma_data = PCI_DN(dn)->iommu_table;
463 return; 464 return;
464 } 465 }
465 466
diff --git a/arch/powerpc/sysdev/mmio_nvram.c b/arch/powerpc/sysdev/mmio_nvram.c
index ff23f5a4d4b9..e073e246293d 100644
--- a/arch/powerpc/sysdev/mmio_nvram.c
+++ b/arch/powerpc/sysdev/mmio_nvram.c
@@ -80,33 +80,39 @@ static ssize_t mmio_nvram_get_size(void)
80int __init mmio_nvram_init(void) 80int __init mmio_nvram_init(void)
81{ 81{
82 struct device_node *nvram_node; 82 struct device_node *nvram_node;
83 const unsigned long *buffer;
84 int proplen;
85 unsigned long nvram_addr; 83 unsigned long nvram_addr;
84 struct resource r;
86 int ret; 85 int ret;
87 86
88 ret = -ENODEV;
89 nvram_node = of_find_node_by_type(NULL, "nvram"); 87 nvram_node = of_find_node_by_type(NULL, "nvram");
90 if (!nvram_node) 88 if (!nvram_node) {
89 printk(KERN_WARNING "nvram: no node found in device-tree\n");
90 return -ENODEV;
91 }
92
93 ret = of_address_to_resource(nvram_node, 0, &r);
94 if (ret) {
95 printk(KERN_WARNING "nvram: failed to get address (err %d)\n",
96 ret);
91 goto out; 97 goto out;
92 98 }
93 ret = -EIO; 99 nvram_addr = r.start;
94 buffer = get_property(nvram_node, "reg", &proplen); 100 mmio_nvram_len = r.end - r.start + 1;
95 if (proplen != 2*sizeof(unsigned long)) 101 if ( (!mmio_nvram_len) || (!nvram_addr) ) {
96 goto out; 102 printk(KERN_WARNING "nvram: address or lenght is 0\n");
97 103 ret = -EIO;
98 ret = -ENODEV;
99 nvram_addr = buffer[0];
100 mmio_nvram_len = buffer[1];
101 if ( (!mmio_nvram_len) || (!nvram_addr) )
102 goto out; 104 goto out;
105 }
103 106
104 mmio_nvram_start = ioremap(nvram_addr, mmio_nvram_len); 107 mmio_nvram_start = ioremap(nvram_addr, mmio_nvram_len);
105 if (!mmio_nvram_start) 108 if (!mmio_nvram_start) {
109 printk(KERN_WARNING "nvram: failed to ioremap\n");
110 ret = -ENOMEM;
106 goto out; 111 goto out;
112 }
107 113
108 printk(KERN_INFO "mmio NVRAM, %luk mapped to %p\n", 114 printk(KERN_INFO "mmio NVRAM, %luk at 0x%lx mapped to %p\n",
109 mmio_nvram_len >> 10, mmio_nvram_start); 115 mmio_nvram_len >> 10, nvram_addr, mmio_nvram_start);
110 116
111 ppc_md.nvram_read = mmio_nvram_read; 117 ppc_md.nvram_read = mmio_nvram_read;
112 ppc_md.nvram_write = mmio_nvram_write; 118 ppc_md.nvram_write = mmio_nvram_write;
diff --git a/arch/sparc/kernel/process.c b/arch/sparc/kernel/process.c
index 89a28cc018c9..113bd48a89bd 100644
--- a/arch/sparc/kernel/process.c
+++ b/arch/sparc/kernel/process.c
@@ -54,6 +54,7 @@ void (*pm_idle)(void);
54 * handler when auxio is not present-- unused for now... 54 * handler when auxio is not present-- unused for now...
55 */ 55 */
56void (*pm_power_off)(void) = machine_power_off; 56void (*pm_power_off)(void) = machine_power_off;
57EXPORT_SYMBOL(pm_power_off);
57 58
58/* 59/*
59 * sysctl - toggle power-off restriction for serial console 60 * sysctl - toggle power-off restriction for serial console
diff --git a/arch/sparc/kernel/smp.c b/arch/sparc/kernel/smp.c
index 276f22881d0f..6b5f26b0fb75 100644
--- a/arch/sparc/kernel/smp.c
+++ b/arch/sparc/kernel/smp.c
@@ -292,8 +292,8 @@ int setup_profiling_timer(unsigned int multiplier)
292 292
293void __init smp_prepare_cpus(unsigned int max_cpus) 293void __init smp_prepare_cpus(unsigned int max_cpus)
294{ 294{
295 extern void smp4m_boot_cpus(void); 295 extern void __init smp4m_boot_cpus(void);
296 extern void smp4d_boot_cpus(void); 296 extern void __init smp4d_boot_cpus(void);
297 int i, cpuid, extra; 297 int i, cpuid, extra;
298 298
299 printk("Entering SMP Mode...\n"); 299 printk("Entering SMP Mode...\n");
@@ -375,8 +375,8 @@ void __init smp_prepare_boot_cpu(void)
375 375
376int __cpuinit __cpu_up(unsigned int cpu) 376int __cpuinit __cpu_up(unsigned int cpu)
377{ 377{
378 extern int smp4m_boot_one_cpu(int); 378 extern int __cpuinit smp4m_boot_one_cpu(int);
379 extern int smp4d_boot_one_cpu(int); 379 extern int __cpuinit smp4d_boot_one_cpu(int);
380 int ret=0; 380 int ret=0;
381 381
382 switch(sparc_cpu_model) { 382 switch(sparc_cpu_model) {
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c
index c80ea61e8ba0..c69de5d4863d 100644
--- a/arch/sparc/kernel/sun4d_smp.c
+++ b/arch/sparc/kernel/sun4d_smp.c
@@ -164,7 +164,7 @@ void __init smp4d_boot_cpus(void)
164 local_flush_cache_all(); 164 local_flush_cache_all();
165} 165}
166 166
167int smp4d_boot_one_cpu(int i) 167int __cpuinit smp4d_boot_one_cpu(int i)
168{ 168{
169 extern unsigned long sun4d_cpu_startup; 169 extern unsigned long sun4d_cpu_startup;
170 unsigned long *entry = &sun4d_cpu_startup; 170 unsigned long *entry = &sun4d_cpu_startup;
diff --git a/arch/sparc64/kernel/sun4v_tlb_miss.S b/arch/sparc64/kernel/sun4v_tlb_miss.S
index b731881224e8..9871dbb1ab42 100644
--- a/arch/sparc64/kernel/sun4v_tlb_miss.S
+++ b/arch/sparc64/kernel/sun4v_tlb_miss.S
@@ -142,9 +142,9 @@ sun4v_dtlb_prot:
142 rdpr %tl, %g1 142 rdpr %tl, %g1
143 cmp %g1, 1 143 cmp %g1, 1
144 bgu,pn %xcc, winfix_trampoline 144 bgu,pn %xcc, winfix_trampoline
145 nop
146 ba,pt %xcc, sparc64_realfault_common
147 mov FAULT_CODE_DTLB | FAULT_CODE_WRITE, %g4 145 mov FAULT_CODE_DTLB | FAULT_CODE_WRITE, %g4
146 ba,pt %xcc, sparc64_realfault_common
147 nop
148 148
149 /* Called from trap table: 149 /* Called from trap table:
150 * %g4: vaddr 150 * %g4: vaddr
diff --git a/arch/um/Kconfig.i386 b/arch/um/Kconfig.i386
index f191a550a079..d6cffb27fff8 100644
--- a/arch/um/Kconfig.i386
+++ b/arch/um/Kconfig.i386
@@ -19,31 +19,31 @@ config SEMAPHORE_SLEEPERS
19choice 19choice
20 prompt "Host memory split" 20 prompt "Host memory split"
21 default HOST_VMSPLIT_3G 21 default HOST_VMSPLIT_3G
22 ---help--- 22 help
23 This is needed when the host kernel on which you run has a non-default 23 This is needed when the host kernel on which you run has a non-default
24 (like 2G/2G) memory split, instead of the customary 3G/1G. If you did 24 (like 2G/2G) memory split, instead of the customary 3G/1G. If you did
25 not recompile your own kernel but use the default distro's one, you can 25 not recompile your own kernel but use the default distro's one, you can
26 safely accept the "Default split" option. 26 safely accept the "Default split" option.
27 27
28 It can be enabled on recent (>=2.6.16-rc2) vanilla kernels via 28 It can be enabled on recent (>=2.6.16-rc2) vanilla kernels via
29 CONFIG_VM_SPLIT_*, or on previous kernels with special patches (-ck 29 CONFIG_VM_SPLIT_*, or on previous kernels with special patches (-ck
30 patchset by Con Kolivas, or other ones) - option names match closely the 30 patchset by Con Kolivas, or other ones) - option names match closely the
31 host CONFIG_VM_SPLIT_* ones. 31 host CONFIG_VM_SPLIT_* ones.
32 32
33 A lower setting (where 1G/3G is lowest and 3G/1G is higher) will 33 A lower setting (where 1G/3G is lowest and 3G/1G is higher) will
34 tolerate even more "normal" host kernels, but an higher setting will be 34 tolerate even more "normal" host kernels, but an higher setting will be
35 stricter. 35 stricter.
36 36
37 So, if you do not know what to do here, say 'Default split'. 37 So, if you do not know what to do here, say 'Default split'.
38 38
39 config HOST_VMSPLIT_3G 39config HOST_VMSPLIT_3G
40 bool "Default split (3G/1G user/kernel host split)" 40 bool "Default split (3G/1G user/kernel host split)"
41 config HOST_VMSPLIT_3G_OPT 41config HOST_VMSPLIT_3G_OPT
42 bool "3G/1G user/kernel host split (for full 1G low memory)" 42 bool "3G/1G user/kernel host split (for full 1G low memory)"
43 config HOST_VMSPLIT_2G 43config HOST_VMSPLIT_2G
44 bool "2G/2G user/kernel host split" 44 bool "2G/2G user/kernel host split"
45 config HOST_VMSPLIT_1G 45config HOST_VMSPLIT_1G
46 bool "1G/3G user/kernel host split" 46 bool "1G/3G user/kernel host split"
47endchoice 47endchoice
48 48
49config TOP_ADDR 49config TOP_ADDR
@@ -67,13 +67,13 @@ config 3_LEVEL_PGTABLES
67 67
68config STUB_CODE 68config STUB_CODE
69 hex 69 hex
70 default 0xbfffe000 if !HOST_2G_2G 70 default 0xbfffe000 if !HOST_VMSPLIT_2G
71 default 0x7fffe000 if HOST_2G_2G 71 default 0x7fffe000 if HOST_VMSPLIT_2G
72 72
73config STUB_DATA 73config STUB_DATA
74 hex 74 hex
75 default 0xbffff000 if !HOST_2G_2G 75 default 0xbffff000 if !HOST_VMSPLIT_2G
76 default 0x7ffff000 if HOST_2G_2G 76 default 0x7ffff000 if HOST_VMSPLIT_2G
77 77
78config STUB_START 78config STUB_START
79 hex 79 hex
diff --git a/arch/um/sys-i386/signal.c b/arch/um/sys-i386/signal.c
index 0709fc6670c2..3f6acd667717 100644
--- a/arch/um/sys-i386/signal.c
+++ b/arch/um/sys-i386/signal.c
@@ -219,7 +219,8 @@ int setup_signal_stack_sc(unsigned long stack_top, int sig,
219 unsigned long save_sp = PT_REGS_SP(regs); 219 unsigned long save_sp = PT_REGS_SP(regs);
220 int err = 0; 220 int err = 0;
221 221
222 stack_top &= -8UL; 222 /* This is the same calculation as i386 - ((sp + 4) & 15) == 0 */
223 stack_top = ((stack_top + 4) & -16UL) - 4;
223 frame = (struct sigframe __user *) stack_top - 1; 224 frame = (struct sigframe __user *) stack_top - 1;
224 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) 225 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
225 return 1; 226 return 1;
diff --git a/arch/um/sys-x86_64/signal.c b/arch/um/sys-x86_64/signal.c
index 9edf114faf79..af2f017617b4 100644
--- a/arch/um/sys-x86_64/signal.c
+++ b/arch/um/sys-x86_64/signal.c
@@ -191,8 +191,9 @@ int setup_signal_stack_si(unsigned long stack_top, int sig,
191 struct task_struct *me = current; 191 struct task_struct *me = current;
192 192
193 frame = (struct rt_sigframe __user *) 193 frame = (struct rt_sigframe __user *)
194 round_down(stack_top - sizeof(struct rt_sigframe), 16) - 8; 194 round_down(stack_top - sizeof(struct rt_sigframe), 16);
195 frame = (struct rt_sigframe __user *) ((unsigned long) frame - 128); 195 /* Subtract 128 for a red zone and 8 for proper alignment */
196 frame = (struct rt_sigframe __user *) ((unsigned long) frame - 128 - 8);
196 197
197 if (!access_ok(VERIFY_WRITE, fp, sizeof(struct _fpstate))) 198 if (!access_ok(VERIFY_WRITE, fp, sizeof(struct _fpstate)))
198 goto out; 199 goto out;
diff --git a/arch/x86_64/ia32/ia32_binfmt.c b/arch/x86_64/ia32/ia32_binfmt.c
index 543ef4f405e9..5ce0bd486bbf 100644
--- a/arch/x86_64/ia32/ia32_binfmt.c
+++ b/arch/x86_64/ia32/ia32_binfmt.c
@@ -64,55 +64,6 @@ typedef unsigned int elf_greg_t;
64#define ELF_NGREG (sizeof (struct user_regs_struct32) / sizeof(elf_greg_t)) 64#define ELF_NGREG (sizeof (struct user_regs_struct32) / sizeof(elf_greg_t))
65typedef elf_greg_t elf_gregset_t[ELF_NGREG]; 65typedef elf_greg_t elf_gregset_t[ELF_NGREG];
66 66
67/*
68 * These macros parameterize elf_core_dump in fs/binfmt_elf.c to write out
69 * extra segments containing the vsyscall DSO contents. Dumping its
70 * contents makes post-mortem fully interpretable later without matching up
71 * the same kernel and hardware config to see what PC values meant.
72 * Dumping its extra ELF program headers includes all the other information
73 * a debugger needs to easily find how the vsyscall DSO was being used.
74 */
75#define ELF_CORE_EXTRA_PHDRS (find_vma(current->mm, VSYSCALL32_BASE) ? \
76 (VSYSCALL32_EHDR->e_phnum) : 0)
77#define ELF_CORE_WRITE_EXTRA_PHDRS \
78do { \
79 if (find_vma(current->mm, VSYSCALL32_BASE)) { \
80 const struct elf32_phdr *const vsyscall_phdrs = \
81 (const struct elf32_phdr *) (VSYSCALL32_BASE \
82 + VSYSCALL32_EHDR->e_phoff);\
83 int i; \
84 Elf32_Off ofs = 0; \
85 for (i = 0; i < VSYSCALL32_EHDR->e_phnum; ++i) { \
86 struct elf32_phdr phdr = vsyscall_phdrs[i]; \
87 if (phdr.p_type == PT_LOAD) { \
88 BUG_ON(ofs != 0); \
89 ofs = phdr.p_offset = offset; \
90 phdr.p_memsz = PAGE_ALIGN(phdr.p_memsz); \
91 phdr.p_filesz = phdr.p_memsz; \
92 offset += phdr.p_filesz; \
93 } \
94 else \
95 phdr.p_offset += ofs; \
96 phdr.p_paddr = 0; /* match other core phdrs */ \
97 DUMP_WRITE(&phdr, sizeof(phdr)); \
98 } \
99 } \
100} while (0)
101#define ELF_CORE_WRITE_EXTRA_DATA \
102do { \
103 if (find_vma(current->mm, VSYSCALL32_BASE)) { \
104 const struct elf32_phdr *const vsyscall_phdrs = \
105 (const struct elf32_phdr *) (VSYSCALL32_BASE \
106 + VSYSCALL32_EHDR->e_phoff); \
107 int i; \
108 for (i = 0; i < VSYSCALL32_EHDR->e_phnum; ++i) { \
109 if (vsyscall_phdrs[i].p_type == PT_LOAD) \
110 DUMP_WRITE((void *) (u64) vsyscall_phdrs[i].p_vaddr,\
111 PAGE_ALIGN(vsyscall_phdrs[i].p_memsz)); \
112 } \
113 } \
114} while (0)
115
116struct elf_siginfo 67struct elf_siginfo
117{ 68{
118 int si_signo; /* signal number */ 69 int si_signo; /* signal number */
diff --git a/arch/x86_64/ia32/syscall32.c b/arch/x86_64/ia32/syscall32.c
index 3e5ed20cba45..59f1fa155915 100644
--- a/arch/x86_64/ia32/syscall32.c
+++ b/arch/x86_64/ia32/syscall32.c
@@ -59,6 +59,13 @@ int syscall32_setup_pages(struct linux_binprm *bprm, int exstack)
59 vma->vm_end = VSYSCALL32_END; 59 vma->vm_end = VSYSCALL32_END;
60 /* MAYWRITE to allow gdb to COW and set breakpoints */ 60 /* MAYWRITE to allow gdb to COW and set breakpoints */
61 vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYEXEC|VM_MAYWRITE; 61 vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYEXEC|VM_MAYWRITE;
62 /*
63 * Make sure the vDSO gets into every core dump.
64 * Dumping its contents makes post-mortem fully interpretable later
65 * without matching up the same kernel and hardware config to see
66 * what PC values meant.
67 */
68 vma->vm_flags |= VM_ALWAYSDUMP;
62 vma->vm_flags |= mm->def_flags; 69 vma->vm_flags |= mm->def_flags;
63 vma->vm_page_prot = protection_map[vma->vm_flags & 7]; 70 vma->vm_page_prot = protection_map[vma->vm_flags & 7];
64 vma->vm_ops = &syscall32_vm_ops; 71 vma->vm_ops = &syscall32_vm_ops;
@@ -75,6 +82,14 @@ int syscall32_setup_pages(struct linux_binprm *bprm, int exstack)
75 return 0; 82 return 0;
76} 83}
77 84
85const char *arch_vma_name(struct vm_area_struct *vma)
86{
87 if (vma->vm_start == VSYSCALL32_BASE &&
88 vma->vm_mm && vma->vm_mm->task_size == IA32_PAGE_OFFSET)
89 return "[vdso]";
90 return NULL;
91}
92
78static int __init init_syscall32(void) 93static int __init init_syscall32(void)
79{ 94{
80 syscall32_page = (void *)get_zeroed_page(GFP_KERNEL); 95 syscall32_page = (void *)get_zeroed_page(GFP_KERNEL);
diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c
index 186aebbae32d..9cb42ecb7f89 100644
--- a/arch/x86_64/kernel/nmi.c
+++ b/arch/x86_64/kernel/nmi.c
@@ -302,8 +302,6 @@ int __init setup_nmi_watchdog(char *str)
302 if ((nmi >= NMI_INVALID) || (nmi < NMI_NONE)) 302 if ((nmi >= NMI_INVALID) || (nmi < NMI_NONE))
303 return 0; 303 return 0;
304 304
305 if ((nmi == NMI_LOCAL_APIC) && (nmi_known_cpu() == 0))
306 return 0; /* no lapic support */
307 nmi_watchdog = nmi; 305 nmi_watchdog = nmi;
308 return 1; 306 return 1;
309} 307}
diff --git a/block/elevator.c b/block/elevator.c
index 536be740ba4e..f6dafa8c7c4d 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -590,6 +590,12 @@ void elv_insert(request_queue_t *q, struct request *rq, int where)
590 */ 590 */
591 rq->cmd_flags |= REQ_SOFTBARRIER; 591 rq->cmd_flags |= REQ_SOFTBARRIER;
592 592
593 /*
594 * Most requeues happen because of a busy condition,
595 * don't force unplug of the queue for that case.
596 */
597 unplug_it = 0;
598
593 if (q->ordseq == 0) { 599 if (q->ordseq == 0) {
594 list_add(&rq->queuelist, &q->queue_head); 600 list_add(&rq->queuelist, &q->queue_head);
595 break; 601 break;
@@ -604,11 +610,6 @@ void elv_insert(request_queue_t *q, struct request *rq, int where)
604 } 610 }
605 611
606 list_add_tail(&rq->queuelist, pos); 612 list_add_tail(&rq->queuelist, pos);
607 /*
608 * most requeues happen because of a busy condition, don't
609 * force unplug of the queue for that case.
610 */
611 unplug_it = 0;
612 break; 613 break;
613 614
614 default: 615 default:
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
index 2528a0c0dec8..65c6a3cba6d6 100644
--- a/block/scsi_ioctl.c
+++ b/block/scsi_ioctl.c
@@ -223,7 +223,7 @@ static int verify_command(struct file *file, unsigned char *cmd)
223static int sg_io(struct file *file, request_queue_t *q, 223static int sg_io(struct file *file, request_queue_t *q,
224 struct gendisk *bd_disk, struct sg_io_hdr *hdr) 224 struct gendisk *bd_disk, struct sg_io_hdr *hdr)
225{ 225{
226 unsigned long start_time; 226 unsigned long start_time, timeout;
227 int writing = 0, ret = 0; 227 int writing = 0, ret = 0;
228 struct request *rq; 228 struct request *rq;
229 char sense[SCSI_SENSE_BUFFERSIZE]; 229 char sense[SCSI_SENSE_BUFFERSIZE];
@@ -271,7 +271,8 @@ static int sg_io(struct file *file, request_queue_t *q,
271 271
272 rq->cmd_type = REQ_TYPE_BLOCK_PC; 272 rq->cmd_type = REQ_TYPE_BLOCK_PC;
273 273
274 rq->timeout = jiffies_to_msecs(hdr->timeout); 274 timeout = msecs_to_jiffies(hdr->timeout);
275 rq->timeout = (timeout < INT_MAX) ? timeout : INT_MAX;
275 if (!rq->timeout) 276 if (!rq->timeout)
276 rq->timeout = q->sg_timeout; 277 rq->timeout = q->sg_timeout;
277 if (!rq->timeout) 278 if (!rq->timeout)
diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c
index 5207f9e4b443..cbb6f0814ce2 100644
--- a/drivers/acpi/processor_perflib.c
+++ b/drivers/acpi/processor_perflib.c
@@ -322,10 +322,6 @@ static int acpi_processor_get_performance_info(struct acpi_processor *pr)
322 if (result) 322 if (result)
323 return result; 323 return result;
324 324
325 result = acpi_processor_get_platform_limit(pr);
326 if (result)
327 return result;
328
329 return 0; 325 return 0;
330} 326}
331 327
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 36b37d755dbc..3d54680d0333 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -1677,8 +1677,6 @@ static void acpi_video_device_notify(acpi_handle handle, u32 event, void *data)
1677 struct acpi_video_device *video_device = data; 1677 struct acpi_video_device *video_device = data;
1678 struct acpi_device *device = NULL; 1678 struct acpi_device *device = NULL;
1679 1679
1680
1681 printk("video device notify\n");
1682 if (!video_device) 1680 if (!video_device)
1683 return; 1681 return;
1684 1682
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index da21552d2b1c..1c94b43d2c9b 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -19,6 +19,10 @@ config ATA
19 19
20if ATA 20if ATA
21 21
22config ATA_NONSTANDARD
23 bool
24 default n
25
22config SATA_AHCI 26config SATA_AHCI
23 tristate "AHCI SATA support" 27 tristate "AHCI SATA support"
24 depends on PCI 28 depends on PCI
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index b517d2493551..48616c6fee9d 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -75,6 +75,7 @@ enum {
75 AHCI_CMD_CLR_BUSY = (1 << 10), 75 AHCI_CMD_CLR_BUSY = (1 << 10),
76 76
77 RX_FIS_D2H_REG = 0x40, /* offset of D2H Register FIS data */ 77 RX_FIS_D2H_REG = 0x40, /* offset of D2H Register FIS data */
78 RX_FIS_SDB = 0x58, /* offset of SDB FIS data */
78 RX_FIS_UNK = 0x60, /* offset of Unknown FIS data */ 79 RX_FIS_UNK = 0x60, /* offset of Unknown FIS data */
79 80
80 board_ahci = 0, 81 board_ahci = 0,
@@ -202,6 +203,10 @@ struct ahci_port_priv {
202 dma_addr_t cmd_tbl_dma; 203 dma_addr_t cmd_tbl_dma;
203 void *rx_fis; 204 void *rx_fis;
204 dma_addr_t rx_fis_dma; 205 dma_addr_t rx_fis_dma;
206 /* for NCQ spurious interrupt analysis */
207 int ncq_saw_spurious_sdb_cnt;
208 unsigned int ncq_saw_d2h:1;
209 unsigned int ncq_saw_dmas:1;
205}; 210};
206 211
207static u32 ahci_scr_read (struct ata_port *ap, unsigned int sc_reg); 212static u32 ahci_scr_read (struct ata_port *ap, unsigned int sc_reg);
@@ -361,7 +366,7 @@ static const struct pci_device_id ahci_pci_tbl[] = {
361 { PCI_VDEVICE(INTEL, 0x27c1), board_ahci }, /* ICH7 */ 366 { PCI_VDEVICE(INTEL, 0x27c1), board_ahci }, /* ICH7 */
362 { PCI_VDEVICE(INTEL, 0x27c5), board_ahci }, /* ICH7M */ 367 { PCI_VDEVICE(INTEL, 0x27c5), board_ahci }, /* ICH7M */
363 { PCI_VDEVICE(INTEL, 0x27c3), board_ahci }, /* ICH7R */ 368 { PCI_VDEVICE(INTEL, 0x27c3), board_ahci }, /* ICH7R */
364 { PCI_VDEVICE(AL, 0x5288), board_ahci }, /* ULi M5288 */ 369 { PCI_VDEVICE(AL, 0x5288), board_ahci_ign_iferr }, /* ULi M5288 */
365 { PCI_VDEVICE(INTEL, 0x2681), board_ahci }, /* ESB2 */ 370 { PCI_VDEVICE(INTEL, 0x2681), board_ahci }, /* ESB2 */
366 { PCI_VDEVICE(INTEL, 0x2682), board_ahci }, /* ESB2 */ 371 { PCI_VDEVICE(INTEL, 0x2682), board_ahci }, /* ESB2 */
367 { PCI_VDEVICE(INTEL, 0x2683), board_ahci }, /* ESB2 */ 372 { PCI_VDEVICE(INTEL, 0x2683), board_ahci }, /* ESB2 */
@@ -586,35 +591,18 @@ static void ahci_power_down(void __iomem *port_mmio, u32 cap)
586{ 591{
587 u32 cmd, scontrol; 592 u32 cmd, scontrol;
588 593
589 cmd = readl(port_mmio + PORT_CMD) & ~PORT_CMD_ICC_MASK; 594 if (!(cap & HOST_CAP_SSS))
590 595 return;
591 if (cap & HOST_CAP_SSC) {
592 /* enable transitions to slumber mode */
593 scontrol = readl(port_mmio + PORT_SCR_CTL);
594 if ((scontrol & 0x0f00) > 0x100) {
595 scontrol &= ~0xf00;
596 writel(scontrol, port_mmio + PORT_SCR_CTL);
597 }
598
599 /* put device into slumber mode */
600 writel(cmd | PORT_CMD_ICC_SLUMBER, port_mmio + PORT_CMD);
601
602 /* wait for the transition to complete */
603 ata_wait_register(port_mmio + PORT_CMD, PORT_CMD_ICC_SLUMBER,
604 PORT_CMD_ICC_SLUMBER, 1, 50);
605 }
606 596
607 /* put device into listen mode */ 597 /* put device into listen mode, first set PxSCTL.DET to 0 */
608 if (cap & HOST_CAP_SSS) { 598 scontrol = readl(port_mmio + PORT_SCR_CTL);
609 /* first set PxSCTL.DET to 0 */ 599 scontrol &= ~0xf;
610 scontrol = readl(port_mmio + PORT_SCR_CTL); 600 writel(scontrol, port_mmio + PORT_SCR_CTL);
611 scontrol &= ~0xf;
612 writel(scontrol, port_mmio + PORT_SCR_CTL);
613 601
614 /* then set PxCMD.SUD to 0 */ 602 /* then set PxCMD.SUD to 0 */
615 cmd &= ~PORT_CMD_SPIN_UP; 603 cmd = readl(port_mmio + PORT_CMD) & ~PORT_CMD_ICC_MASK;
616 writel(cmd, port_mmio + PORT_CMD); 604 cmd &= ~PORT_CMD_SPIN_UP;
617 } 605 writel(cmd, port_mmio + PORT_CMD);
618} 606}
619 607
620static void ahci_init_port(void __iomem *port_mmio, u32 cap, 608static void ahci_init_port(void __iomem *port_mmio, u32 cap,
@@ -915,7 +903,7 @@ static int ahci_hardreset(struct ata_port *ap, unsigned int *class)
915 903
916 /* clear D2H reception area to properly wait for D2H FIS */ 904 /* clear D2H reception area to properly wait for D2H FIS */
917 ata_tf_init(ap->device, &tf); 905 ata_tf_init(ap->device, &tf);
918 tf.command = 0xff; 906 tf.command = 0x80;
919 ata_tf_to_fis(&tf, d2h_fis, 0); 907 ata_tf_to_fis(&tf, d2h_fis, 0);
920 908
921 rc = sata_std_hardreset(ap, class); 909 rc = sata_std_hardreset(ap, class);
@@ -1126,8 +1114,9 @@ static void ahci_host_intr(struct ata_port *ap)
1126 void __iomem *mmio = ap->host->mmio_base; 1114 void __iomem *mmio = ap->host->mmio_base;
1127 void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); 1115 void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no);
1128 struct ata_eh_info *ehi = &ap->eh_info; 1116 struct ata_eh_info *ehi = &ap->eh_info;
1117 struct ahci_port_priv *pp = ap->private_data;
1129 u32 status, qc_active; 1118 u32 status, qc_active;
1130 int rc; 1119 int rc, known_irq = 0;
1131 1120
1132 status = readl(port_mmio + PORT_IRQ_STAT); 1121 status = readl(port_mmio + PORT_IRQ_STAT);
1133 writel(status, port_mmio + PORT_IRQ_STAT); 1122 writel(status, port_mmio + PORT_IRQ_STAT);
@@ -1154,17 +1143,53 @@ static void ahci_host_intr(struct ata_port *ap)
1154 1143
1155 /* hmmm... a spurious interupt */ 1144 /* hmmm... a spurious interupt */
1156 1145
1157 /* some devices send D2H reg with I bit set during NCQ command phase */ 1146 /* if !NCQ, ignore. No modern ATA device has broken HSM
1158 if (ap->sactive && (status & PORT_IRQ_D2H_REG_FIS)) 1147 * implementation for non-NCQ commands.
1148 */
1149 if (!ap->sactive)
1159 return; 1150 return;
1160 1151
1161 /* ignore interim PIO setup fis interrupts */ 1152 if (status & PORT_IRQ_D2H_REG_FIS) {
1162 if (ata_tag_valid(ap->active_tag) && (status & PORT_IRQ_PIOS_FIS)) 1153 if (!pp->ncq_saw_d2h)
1163 return; 1154 ata_port_printk(ap, KERN_INFO,
1155 "D2H reg with I during NCQ, "
1156 "this message won't be printed again\n");
1157 pp->ncq_saw_d2h = 1;
1158 known_irq = 1;
1159 }
1160
1161 if (status & PORT_IRQ_DMAS_FIS) {
1162 if (!pp->ncq_saw_dmas)
1163 ata_port_printk(ap, KERN_INFO,
1164 "DMAS FIS during NCQ, "
1165 "this message won't be printed again\n");
1166 pp->ncq_saw_dmas = 1;
1167 known_irq = 1;
1168 }
1169
1170 if (status & PORT_IRQ_SDB_FIS &&
1171 pp->ncq_saw_spurious_sdb_cnt < 10) {
1172 /* SDB FIS containing spurious completions might be
1173 * dangerous, we need to know more about them. Print
1174 * more of it.
1175 */
1176 const u32 *f = pp->rx_fis + RX_FIS_SDB;
1177
1178 ata_port_printk(ap, KERN_INFO, "Spurious SDB FIS during NCQ "
1179 "issue=0x%x SAct=0x%x FIS=%08x:%08x%s\n",
1180 readl(port_mmio + PORT_CMD_ISSUE),
1181 readl(port_mmio + PORT_SCR_ACT),
1182 le32_to_cpu(f[0]), le32_to_cpu(f[1]),
1183 pp->ncq_saw_spurious_sdb_cnt < 10 ?
1184 "" : ", shutting up");
1185
1186 pp->ncq_saw_spurious_sdb_cnt++;
1187 known_irq = 1;
1188 }
1164 1189
1165 if (ata_ratelimit()) 1190 if (!known_irq)
1166 ata_port_printk(ap, KERN_INFO, "spurious interrupt " 1191 ata_port_printk(ap, KERN_INFO, "spurious interrupt "
1167 "(irq_stat 0x%x active_tag %d sactive 0x%x)\n", 1192 "(irq_stat 0x%x active_tag 0x%x sactive 0x%x)\n",
1168 status, ap->active_tag, ap->sactive); 1193 status, ap->active_tag, ap->sactive);
1169} 1194}
1170 1195
@@ -1257,7 +1282,7 @@ static void ahci_thaw(struct ata_port *ap)
1257 /* clear IRQ */ 1282 /* clear IRQ */
1258 tmp = readl(port_mmio + PORT_IRQ_STAT); 1283 tmp = readl(port_mmio + PORT_IRQ_STAT);
1259 writel(tmp, port_mmio + PORT_IRQ_STAT); 1284 writel(tmp, port_mmio + PORT_IRQ_STAT);
1260 writel(1 << ap->id, mmio + HOST_IRQ_STAT); 1285 writel(1 << ap->port_no, mmio + HOST_IRQ_STAT);
1261 1286
1262 /* turn IRQ back on */ 1287 /* turn IRQ back on */
1263 writel(DEF_PORT_IRQ, port_mmio + PORT_IRQ_MASK); 1288 writel(DEF_PORT_IRQ, port_mmio + PORT_IRQ_MASK);
diff --git a/drivers/ata/ata_generic.c b/drivers/ata/ata_generic.c
index 908751d27e76..24af56081b5d 100644
--- a/drivers/ata/ata_generic.c
+++ b/drivers/ata/ata_generic.c
@@ -64,6 +64,7 @@ static void generic_error_handler(struct ata_port *ap)
64/** 64/**
65 * generic_set_mode - mode setting 65 * generic_set_mode - mode setting
66 * @ap: interface to set up 66 * @ap: interface to set up
67 * @unused: returned device on error
67 * 68 *
68 * Use a non standard set_mode function. We don't want to be tuned. 69 * Use a non standard set_mode function. We don't want to be tuned.
69 * The BIOS configured everything. Our job is not to fiddle. We 70 * The BIOS configured everything. Our job is not to fiddle. We
@@ -71,7 +72,7 @@ static void generic_error_handler(struct ata_port *ap)
71 * and respect them. 72 * and respect them.
72 */ 73 */
73 74
74static void generic_set_mode(struct ata_port *ap) 75static int generic_set_mode(struct ata_port *ap, struct ata_device **unused)
75{ 76{
76 int dma_enabled = 0; 77 int dma_enabled = 0;
77 int i; 78 int i;
@@ -82,7 +83,7 @@ static void generic_set_mode(struct ata_port *ap)
82 83
83 for (i = 0; i < ATA_MAX_DEVICES; i++) { 84 for (i = 0; i < ATA_MAX_DEVICES; i++) {
84 struct ata_device *dev = &ap->device[i]; 85 struct ata_device *dev = &ap->device[i];
85 if (ata_dev_enabled(dev)) { 86 if (ata_dev_ready(dev)) {
86 /* We don't really care */ 87 /* We don't really care */
87 dev->pio_mode = XFER_PIO_0; 88 dev->pio_mode = XFER_PIO_0;
88 dev->dma_mode = XFER_MW_DMA_0; 89 dev->dma_mode = XFER_MW_DMA_0;
@@ -99,6 +100,7 @@ static void generic_set_mode(struct ata_port *ap)
99 } 100 }
100 } 101 }
101 } 102 }
103 return 0;
102} 104}
103 105
104static struct scsi_host_template generic_sht = { 106static struct scsi_host_template generic_sht = {
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 0d51d13b16bf..667acd283364 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1037,7 +1037,7 @@ static unsigned int ata_id_xfermask(const u16 *id)
1037 * the PIO timing number for the maximum. Turn it into 1037 * the PIO timing number for the maximum. Turn it into
1038 * a mask. 1038 * a mask.
1039 */ 1039 */
1040 u8 mode = id[ATA_ID_OLD_PIO_MODES] & 0xFF; 1040 u8 mode = (id[ATA_ID_OLD_PIO_MODES] >> 8) & 0xFF;
1041 if (mode < 5) /* Valid PIO range */ 1041 if (mode < 5) /* Valid PIO range */
1042 pio_mask = (2 << mode) - 1; 1042 pio_mask = (2 << mode) - 1;
1043 else 1043 else
@@ -1250,6 +1250,7 @@ unsigned ata_exec_internal_sg(struct ata_device *dev,
1250 1250
1251 ata_sg_init(qc, sg, n_elem); 1251 ata_sg_init(qc, sg, n_elem);
1252 qc->nsect = buflen / ATA_SECT_SIZE; 1252 qc->nsect = buflen / ATA_SECT_SIZE;
1253 qc->nbytes = buflen;
1253 } 1254 }
1254 1255
1255 qc->private_data = &wait; 1256 qc->private_data = &wait;
@@ -2431,18 +2432,8 @@ int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev)
2431 int i, rc = 0, used_dma = 0, found = 0; 2432 int i, rc = 0, used_dma = 0, found = 0;
2432 2433
2433 /* has private set_mode? */ 2434 /* has private set_mode? */
2434 if (ap->ops->set_mode) { 2435 if (ap->ops->set_mode)
2435 /* FIXME: make ->set_mode handle no device case and 2436 return ap->ops->set_mode(ap, r_failed_dev);
2436 * return error code and failing device on failure.
2437 */
2438 for (i = 0; i < ATA_MAX_DEVICES; i++) {
2439 if (ata_dev_ready(&ap->device[i])) {
2440 ap->ops->set_mode(ap);
2441 break;
2442 }
2443 }
2444 return 0;
2445 }
2446 2437
2447 /* step 1: calculate xfer_mask */ 2438 /* step 1: calculate xfer_mask */
2448 for (i = 0; i < ATA_MAX_DEVICES; i++) { 2439 for (i = 0; i < ATA_MAX_DEVICES; i++) {
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 08ad44b3e48f..748435807d68 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1796,7 +1796,7 @@ static int ata_eh_suspend(struct ata_port *ap, struct ata_device **r_failed_dev)
1796 *r_failed_dev = dev; 1796 *r_failed_dev = dev;
1797 1797
1798 DPRINTK("EXIT\n"); 1798 DPRINTK("EXIT\n");
1799 return 0; 1799 return rc;
1800} 1800}
1801 1801
1802/** 1802/**
@@ -1979,6 +1979,10 @@ static int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset,
1979 1979
1980 ehc->tries[dev->devno] = ATA_EH_DEV_TRIES; 1980 ehc->tries[dev->devno] = ATA_EH_DEV_TRIES;
1981 1981
1982 /* collect port action mask recorded in dev actions */
1983 ehc->i.action |= ehc->i.dev_action[i] & ~ATA_EH_PERDEV_MASK;
1984 ehc->i.dev_action[i] &= ATA_EH_PERDEV_MASK;
1985
1982 /* process hotplug request */ 1986 /* process hotplug request */
1983 if (dev->flags & ATA_DFLAG_DETACH) 1987 if (dev->flags & ATA_DFLAG_DETACH)
1984 ata_eh_detach_dev(dev); 1988 ata_eh_detach_dev(dev);
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index 836947da5b14..73902d335767 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -273,8 +273,8 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg)
273{ 273{
274 int rc = 0; 274 int rc = 0;
275 u8 scsi_cmd[MAX_COMMAND_SIZE]; 275 u8 scsi_cmd[MAX_COMMAND_SIZE];
276 u8 args[7]; 276 u8 args[7], *sensebuf = NULL;
277 struct scsi_sense_hdr sshdr; 277 int cmd_result;
278 278
279 if (arg == NULL) 279 if (arg == NULL)
280 return -EINVAL; 280 return -EINVAL;
@@ -282,10 +282,14 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg)
282 if (copy_from_user(args, arg, sizeof(args))) 282 if (copy_from_user(args, arg, sizeof(args)))
283 return -EFAULT; 283 return -EFAULT;
284 284
285 sensebuf = kzalloc(SCSI_SENSE_BUFFERSIZE, GFP_NOIO);
286 if (!sensebuf)
287 return -ENOMEM;
288
285 memset(scsi_cmd, 0, sizeof(scsi_cmd)); 289 memset(scsi_cmd, 0, sizeof(scsi_cmd));
286 scsi_cmd[0] = ATA_16; 290 scsi_cmd[0] = ATA_16;
287 scsi_cmd[1] = (3 << 1); /* Non-data */ 291 scsi_cmd[1] = (3 << 1); /* Non-data */
288 /* scsi_cmd[2] is already 0 -- no off.line, cc, or data xfer */ 292 scsi_cmd[2] = 0x20; /* cc but no off.line or data xfer */
289 scsi_cmd[4] = args[1]; 293 scsi_cmd[4] = args[1];
290 scsi_cmd[6] = args[2]; 294 scsi_cmd[6] = args[2];
291 scsi_cmd[8] = args[3]; 295 scsi_cmd[8] = args[3];
@@ -295,11 +299,46 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg)
295 299
296 /* Good values for timeout and retries? Values below 300 /* Good values for timeout and retries? Values below
297 from scsi_ioctl_send_command() for default case... */ 301 from scsi_ioctl_send_command() for default case... */
298 if (scsi_execute_req(scsidev, scsi_cmd, DMA_NONE, NULL, 0, &sshdr, 302 cmd_result = scsi_execute(scsidev, scsi_cmd, DMA_NONE, NULL, 0,
299 (10*HZ), 5)) 303 sensebuf, (10*HZ), 5, 0);
304
305 if (driver_byte(cmd_result) == DRIVER_SENSE) {/* sense data available */
306 u8 *desc = sensebuf + 8;
307 cmd_result &= ~(0xFF<<24); /* DRIVER_SENSE is not an error */
308
309 /* If we set cc then ATA pass-through will cause a
310 * check condition even if no error. Filter that. */
311 if (cmd_result & SAM_STAT_CHECK_CONDITION) {
312 struct scsi_sense_hdr sshdr;
313 scsi_normalize_sense(sensebuf, SCSI_SENSE_BUFFERSIZE,
314 &sshdr);
315 if (sshdr.sense_key==0 &&
316 sshdr.asc==0 && sshdr.ascq==0)
317 cmd_result &= ~SAM_STAT_CHECK_CONDITION;
318 }
319
320 /* Send userspace ATA registers */
321 if (sensebuf[0] == 0x72 && /* format is "descriptor" */
322 desc[0] == 0x09) {/* code is "ATA Descriptor" */
323 args[0] = desc[13]; /* status */
324 args[1] = desc[3]; /* error */
325 args[2] = desc[5]; /* sector count (0:7) */
326 args[3] = desc[7]; /* lbal */
327 args[4] = desc[9]; /* lbam */
328 args[5] = desc[11]; /* lbah */
329 args[6] = desc[12]; /* select */
330 if (copy_to_user(arg, args, sizeof(args)))
331 rc = -EFAULT;
332 }
333 }
334
335 if (cmd_result) {
300 rc = -EIO; 336 rc = -EIO;
337 goto error;
338 }
301 339
302 /* Need code to retrieve data from check condition? */ 340 error:
341 kfree(sensebuf);
303 return rc; 342 return rc;
304} 343}
305 344
@@ -372,7 +411,7 @@ struct ata_queued_cmd *ata_scsi_qc_new(struct ata_device *dev,
372 if (cmd->use_sg) { 411 if (cmd->use_sg) {
373 qc->__sg = (struct scatterlist *) cmd->request_buffer; 412 qc->__sg = (struct scatterlist *) cmd->request_buffer;
374 qc->n_elem = cmd->use_sg; 413 qc->n_elem = cmd->use_sg;
375 } else { 414 } else if (cmd->request_bufflen) {
376 qc->__sg = &qc->sgent; 415 qc->__sg = &qc->sgent;
377 qc->n_elem = 1; 416 qc->n_elem = 1;
378 } 417 }
@@ -983,11 +1022,10 @@ static unsigned int ata_scsi_start_stop_xlat(struct ata_queued_cmd *qc)
983 } 1022 }
984 1023
985 tf->command = ATA_CMD_VERIFY; /* READ VERIFY */ 1024 tf->command = ATA_CMD_VERIFY; /* READ VERIFY */
986 } else { 1025 } else
987 tf->nsect = 0; /* time period value (0 implies now) */ 1026 /* Issue ATA STANDBY IMMEDIATE command */
988 tf->command = ATA_CMD_STANDBY; 1027 tf->command = ATA_CMD_STANDBYNOW1;
989 /* Consider: ATA STANDBY IMMEDIATE command */ 1028
990 }
991 /* 1029 /*
992 * Standby and Idle condition timers could be implemented but that 1030 * Standby and Idle condition timers could be implemented but that
993 * would require libata to implement the Power condition mode page 1031 * would require libata to implement the Power condition mode page
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 623cec914c9b..12c88c588039 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -827,7 +827,8 @@ void ata_bmdma_error_handler(struct ata_port *ap)
827 */ 827 */
828void ata_bmdma_post_internal_cmd(struct ata_queued_cmd *qc) 828void ata_bmdma_post_internal_cmd(struct ata_queued_cmd *qc)
829{ 829{
830 ata_bmdma_stop(qc); 830 if (qc->ap->ioaddr.bmdma_addr)
831 ata_bmdma_stop(qc);
831} 832}
832 833
833#ifdef CONFIG_PCI 834#ifdef CONFIG_PCI
@@ -870,7 +871,8 @@ ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port, int
870 pci_resource_start(pdev, 1) | ATA_PCI_CTL_OFS; 871 pci_resource_start(pdev, 1) | ATA_PCI_CTL_OFS;
871 bmdma = pci_resource_start(pdev, 4); 872 bmdma = pci_resource_start(pdev, 4);
872 if (bmdma) { 873 if (bmdma) {
873 if (inb(bmdma + 2) & 0x80) 874 if ((!(port[p]->flags & ATA_FLAG_IGN_SIMPLEX)) &&
875 (inb(bmdma + 2) & 0x80))
874 probe_ent->_host_flags |= ATA_HOST_SIMPLEX; 876 probe_ent->_host_flags |= ATA_HOST_SIMPLEX;
875 probe_ent->port[p].bmdma_addr = bmdma; 877 probe_ent->port[p].bmdma_addr = bmdma;
876 } 878 }
@@ -886,7 +888,8 @@ ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port, int
886 bmdma = pci_resource_start(pdev, 4); 888 bmdma = pci_resource_start(pdev, 4);
887 if (bmdma) { 889 if (bmdma) {
888 bmdma += 8; 890 bmdma += 8;
889 if(inb(bmdma + 2) & 0x80) 891 if ((!(port[p]->flags & ATA_FLAG_IGN_SIMPLEX)) &&
892 (inb(bmdma + 2) & 0x80))
890 probe_ent->_host_flags |= ATA_HOST_SIMPLEX; 893 probe_ent->_host_flags |= ATA_HOST_SIMPLEX;
891 probe_ent->port[p].bmdma_addr = bmdma; 894 probe_ent->port[p].bmdma_addr = bmdma;
892 } 895 }
@@ -914,13 +917,14 @@ static struct ata_probe_ent *ata_pci_init_legacy_port(struct pci_dev *pdev,
914 probe_ent->irq_flags = IRQF_SHARED; 917 probe_ent->irq_flags = IRQF_SHARED;
915 918
916 if (port_mask & ATA_PORT_PRIMARY) { 919 if (port_mask & ATA_PORT_PRIMARY) {
917 probe_ent->irq = ATA_PRIMARY_IRQ; 920 probe_ent->irq = ATA_PRIMARY_IRQ(pdev);
918 probe_ent->port[0].cmd_addr = ATA_PRIMARY_CMD; 921 probe_ent->port[0].cmd_addr = ATA_PRIMARY_CMD;
919 probe_ent->port[0].altstatus_addr = 922 probe_ent->port[0].altstatus_addr =
920 probe_ent->port[0].ctl_addr = ATA_PRIMARY_CTL; 923 probe_ent->port[0].ctl_addr = ATA_PRIMARY_CTL;
921 if (bmdma) { 924 if (bmdma) {
922 probe_ent->port[0].bmdma_addr = bmdma; 925 probe_ent->port[0].bmdma_addr = bmdma;
923 if (inb(bmdma + 2) & 0x80) 926 if ((!(port[0]->flags & ATA_FLAG_IGN_SIMPLEX)) &&
927 (inb(bmdma + 2) & 0x80))
924 probe_ent->_host_flags |= ATA_HOST_SIMPLEX; 928 probe_ent->_host_flags |= ATA_HOST_SIMPLEX;
925 } 929 }
926 ata_std_ports(&probe_ent->port[0]); 930 ata_std_ports(&probe_ent->port[0]);
@@ -929,15 +933,16 @@ static struct ata_probe_ent *ata_pci_init_legacy_port(struct pci_dev *pdev,
929 933
930 if (port_mask & ATA_PORT_SECONDARY) { 934 if (port_mask & ATA_PORT_SECONDARY) {
931 if (probe_ent->irq) 935 if (probe_ent->irq)
932 probe_ent->irq2 = ATA_SECONDARY_IRQ; 936 probe_ent->irq2 = ATA_SECONDARY_IRQ(pdev);
933 else 937 else
934 probe_ent->irq = ATA_SECONDARY_IRQ; 938 probe_ent->irq = ATA_SECONDARY_IRQ(pdev);
935 probe_ent->port[1].cmd_addr = ATA_SECONDARY_CMD; 939 probe_ent->port[1].cmd_addr = ATA_SECONDARY_CMD;
936 probe_ent->port[1].altstatus_addr = 940 probe_ent->port[1].altstatus_addr =
937 probe_ent->port[1].ctl_addr = ATA_SECONDARY_CTL; 941 probe_ent->port[1].ctl_addr = ATA_SECONDARY_CTL;
938 if (bmdma) { 942 if (bmdma) {
939 probe_ent->port[1].bmdma_addr = bmdma + 8; 943 probe_ent->port[1].bmdma_addr = bmdma + 8;
940 if (inb(bmdma + 10) & 0x80) 944 if ((!(port[1]->flags & ATA_FLAG_IGN_SIMPLEX)) &&
945 (inb(bmdma + 10) & 0x80))
941 probe_ent->_host_flags |= ATA_HOST_SIMPLEX; 946 probe_ent->_host_flags |= ATA_HOST_SIMPLEX;
942 } 947 }
943 ata_std_ports(&probe_ent->port[1]); 948 ata_std_ports(&probe_ent->port[1]);
diff --git a/drivers/ata/pata_atiixp.c b/drivers/ata/pata_atiixp.c
index 6f6672c55131..504e1dbfffd7 100644
--- a/drivers/ata/pata_atiixp.c
+++ b/drivers/ata/pata_atiixp.c
@@ -36,15 +36,22 @@ enum {
36static int atiixp_pre_reset(struct ata_port *ap) 36static int atiixp_pre_reset(struct ata_port *ap)
37{ 37{
38 struct pci_dev *pdev = to_pci_dev(ap->host->dev); 38 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
39 static struct pci_bits atiixp_enable_bits[] = { 39 static const struct pci_bits atiixp_enable_bits[] = {
40 { 0x48, 1, 0x01, 0x00 }, 40 { 0x48, 1, 0x01, 0x00 },
41 { 0x48, 1, 0x08, 0x00 } 41 { 0x48, 1, 0x08, 0x00 }
42 }; 42 };
43 u8 udma;
43 44
44 if (!pci_test_config_bits(pdev, &atiixp_enable_bits[ap->port_no])) 45 if (!pci_test_config_bits(pdev, &atiixp_enable_bits[ap->port_no]))
45 return -ENOENT; 46 return -ENOENT;
46 47
47 ap->cbl = ATA_CBL_PATA80; 48 /* Hack from drivers/ide/pci. Really we want to know how to do the
49 raw detection not play follow the bios mode guess */
50 pci_read_config_byte(pdev, ATIIXP_IDE_UDMA_MODE + ap->port_no, &udma);
51 if ((udma & 0x07) >= 0x04 || (udma & 0x70) >= 0x40)
52 ap->cbl = ATA_CBL_PATA80;
53 else
54 ap->cbl = ATA_CBL_PATA40;
48 return ata_std_prereset(ap); 55 return ata_std_prereset(ap);
49} 56}
50 57
diff --git a/drivers/ata/pata_cmd64x.c b/drivers/ata/pata_cmd64x.c
index 15841a563694..449162cbf93e 100644
--- a/drivers/ata/pata_cmd64x.c
+++ b/drivers/ata/pata_cmd64x.c
@@ -197,7 +197,7 @@ static void cmd64x_set_piomode(struct ata_port *ap, struct ata_device *adev)
197static void cmd64x_set_dmamode(struct ata_port *ap, struct ata_device *adev) 197static void cmd64x_set_dmamode(struct ata_port *ap, struct ata_device *adev)
198{ 198{
199 static const u8 udma_data[] = { 199 static const u8 udma_data[] = {
200 0x31, 0x21, 0x11, 0x25, 0x15, 0x05 200 0x30, 0x20, 0x10, 0x20, 0x10, 0x00
201 }; 201 };
202 static const u8 mwdma_data[] = { 202 static const u8 mwdma_data[] = {
203 0x30, 0x20, 0x10 203 0x30, 0x20, 0x10
@@ -213,12 +213,21 @@ static void cmd64x_set_dmamode(struct ata_port *ap, struct ata_device *adev)
213 pci_read_config_byte(pdev, pciD, &regD); 213 pci_read_config_byte(pdev, pciD, &regD);
214 pci_read_config_byte(pdev, pciU, &regU); 214 pci_read_config_byte(pdev, pciU, &regU);
215 215
216 regD &= ~(0x20 << shift); 216 /* DMA bits off */
217 regU &= ~(0x35 << shift); 217 regD &= ~(0x20 << adev->devno);
218 /* DMA control bits */
219 regU &= ~(0x30 << shift);
220 /* DMA timing bits */
221 regU &= ~(0x05 << adev->devno);
218 222
219 if (adev->dma_mode >= XFER_UDMA_0) 223 if (adev->dma_mode >= XFER_UDMA_0) {
224 /* Merge thge timing value */
220 regU |= udma_data[adev->dma_mode - XFER_UDMA_0] << shift; 225 regU |= udma_data[adev->dma_mode - XFER_UDMA_0] << shift;
221 else 226 /* Merge the control bits */
227 regU |= 1 << adev->devno; /* UDMA on */
228 if (adev->dma_mode > 2) /* 15nS timing */
229 regU |= 4 << adev->devno;
230 } else
222 regD |= mwdma_data[adev->dma_mode - XFER_MW_DMA_0] << shift; 231 regD |= mwdma_data[adev->dma_mode - XFER_MW_DMA_0] << shift;
223 232
224 regD |= 0x20 << adev->devno; 233 regD |= 0x20 << adev->devno;
@@ -239,8 +248,8 @@ static void cmd648_bmdma_stop(struct ata_queued_cmd *qc)
239 struct ata_port *ap = qc->ap; 248 struct ata_port *ap = qc->ap;
240 struct pci_dev *pdev = to_pci_dev(ap->host->dev); 249 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
241 u8 dma_intr; 250 u8 dma_intr;
242 int dma_reg = ap->port_no ? ARTTIM23_INTR_CH1 : CFR_INTR_CH0; 251 int dma_mask = ap->port_no ? ARTTIM23_INTR_CH1 : CFR_INTR_CH0;
243 int dma_mask = ap->port_no ? ARTTIM2 : CFR; 252 int dma_reg = ap->port_no ? ARTTIM2 : CFR;
244 253
245 ata_bmdma_stop(qc); 254 ata_bmdma_stop(qc);
246 255
diff --git a/drivers/ata/pata_hpt3x2n.c b/drivers/ata/pata_hpt3x2n.c
index f6817b4093a4..886fab9aa62c 100644
--- a/drivers/ata/pata_hpt3x2n.c
+++ b/drivers/ata/pata_hpt3x2n.c
@@ -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" 28#define DRV_VERSION "0.3.2"
29 29
30enum { 30enum {
31 HPT_PCI_FAST = (1 << 31), 31 HPT_PCI_FAST = (1 << 31),
@@ -297,11 +297,11 @@ static int hpt3x2n_pair_idle(struct ata_port *ap)
297 return 0; 297 return 0;
298} 298}
299 299
300static int hpt3x2n_use_dpll(struct ata_port *ap, int reading) 300static int hpt3x2n_use_dpll(struct ata_port *ap, int writing)
301{ 301{
302 long flags = (long)ap->host->private_data; 302 long flags = (long)ap->host->private_data;
303 /* See if we should use the DPLL */ 303 /* See if we should use the DPLL */
304 if (reading == 0) 304 if (writing)
305 return USE_DPLL; /* Needed for write */ 305 return USE_DPLL; /* Needed for write */
306 if (flags & PCI66) 306 if (flags & PCI66)
307 return USE_DPLL; /* Needed at 66Mhz */ 307 return USE_DPLL; /* Needed at 66Mhz */
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c
index 0b56ff3d1cfe..e8afd486434a 100644
--- a/drivers/ata/pata_it821x.c
+++ b/drivers/ata/pata_it821x.c
@@ -476,6 +476,7 @@ static unsigned int it821x_passthru_qc_issue_prot(struct ata_queued_cmd *qc)
476/** 476/**
477 * it821x_smart_set_mode - mode setting 477 * it821x_smart_set_mode - mode setting
478 * @ap: interface to set up 478 * @ap: interface to set up
479 * @unused: device that failed (error only)
479 * 480 *
480 * Use a non standard set_mode function. We don't want to be tuned. 481 * Use a non standard set_mode function. We don't want to be tuned.
481 * The BIOS configured everything. Our job is not to fiddle. We 482 * The BIOS configured everything. Our job is not to fiddle. We
@@ -483,7 +484,7 @@ static unsigned int it821x_passthru_qc_issue_prot(struct ata_queued_cmd *qc)
483 * and respect them. 484 * and respect them.
484 */ 485 */
485 486
486static void it821x_smart_set_mode(struct ata_port *ap) 487static int it821x_smart_set_mode(struct ata_port *ap, struct ata_device **unused)
487{ 488{
488 int dma_enabled = 0; 489 int dma_enabled = 0;
489 int i; 490 int i;
@@ -512,6 +513,7 @@ static void it821x_smart_set_mode(struct ata_port *ap)
512 } 513 }
513 } 514 }
514 } 515 }
516 return 0;
515} 517}
516 518
517/** 519/**
diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c
index cb8924109f59..23b8aab3ebd8 100644
--- a/drivers/ata/pata_ixp4xx_cf.c
+++ b/drivers/ata/pata_ixp4xx_cf.c
@@ -23,9 +23,9 @@
23#include <scsi/scsi_host.h> 23#include <scsi/scsi_host.h>
24 24
25#define DRV_NAME "pata_ixp4xx_cf" 25#define DRV_NAME "pata_ixp4xx_cf"
26#define DRV_VERSION "0.1.1" 26#define DRV_VERSION "0.1.1ac1"
27 27
28static void ixp4xx_set_mode(struct ata_port *ap) 28static int ixp4xx_set_mode(struct ata_port *ap, struct ata_device *adev)
29{ 29{
30 int i; 30 int i;
31 31
@@ -38,6 +38,7 @@ static void ixp4xx_set_mode(struct ata_port *ap)
38 dev->flags |= ATA_DFLAG_PIO; 38 dev->flags |= ATA_DFLAG_PIO;
39 } 39 }
40 } 40 }
41 return 0;
41} 42}
42 43
43static void ixp4xx_phy_reset(struct ata_port *ap) 44static void ixp4xx_phy_reset(struct ata_port *ap)
diff --git a/drivers/ata/pata_jmicron.c b/drivers/ata/pata_jmicron.c
index 2d661cb4df3c..d50264af2848 100644
--- a/drivers/ata/pata_jmicron.c
+++ b/drivers/ata/pata_jmicron.c
@@ -204,20 +204,12 @@ static int jmicron_init_one (struct pci_dev *pdev, const struct pci_device_id *i
204 204
205 u32 reg; 205 u32 reg;
206 206
207 if (id->driver_data != 368) { 207 /* PATA controller is fn 1, AHCI is fn 0 */
208 /* Put the controller into AHCI mode in case the AHCI driver 208 if (id->driver_data != 368 && PCI_FUNC(pdev->devfn) != 1)
209 has not yet been loaded. This can be done with either 209 return -ENODEV;
210 function present */
211 210
212 /* FIXME: We may want a way to override this in future */ 211 /* The 365/66 have two PATA channels, redirect the second */
213 pci_write_config_byte(pdev, 0x41, 0xa1); 212 if (id->driver_data == 365 || id->driver_data == 366) {
214
215 /* PATA controller is fn 1, AHCI is fn 0 */
216 if (PCI_FUNC(pdev->devfn) != 1)
217 return -ENODEV;
218 }
219 if ( id->driver_data == 365 || id->driver_data == 366) {
220 /* The 365/66 have two PATA channels, redirect the second */
221 pci_read_config_dword(pdev, 0x80, &reg); 213 pci_read_config_dword(pdev, 0x80, &reg);
222 reg |= (1 << 24); /* IDE1 to PATA IDE secondary */ 214 reg |= (1 << 24); /* IDE1 to PATA IDE secondary */
223 pci_write_config_dword(pdev, 0x80, reg); 215 pci_write_config_dword(pdev, 0x80, reg);
diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c
index e7bf9d89c8ee..581cb33c6f45 100644
--- a/drivers/ata/pata_legacy.c
+++ b/drivers/ata/pata_legacy.c
@@ -96,6 +96,7 @@ static int pio_mask = 0x1F; /* PIO range for autospeed devices */
96/** 96/**
97 * legacy_set_mode - mode setting 97 * legacy_set_mode - mode setting
98 * @ap: IDE interface 98 * @ap: IDE interface
99 * @unused: Device that failed when error is returned
99 * 100 *
100 * Use a non standard set_mode function. We don't want to be tuned. 101 * Use a non standard set_mode function. We don't want to be tuned.
101 * 102 *
@@ -105,7 +106,7 @@ static int pio_mask = 0x1F; /* PIO range for autospeed devices */
105 * expand on this as per hdparm in the base kernel. 106 * expand on this as per hdparm in the base kernel.
106 */ 107 */
107 108
108static void legacy_set_mode(struct ata_port *ap) 109static int legacy_set_mode(struct ata_port *ap, struct ata_device **unused)
109{ 110{
110 int i; 111 int i;
111 112
@@ -118,6 +119,7 @@ static void legacy_set_mode(struct ata_port *ap)
118 dev->flags |= ATA_DFLAG_PIO; 119 dev->flags |= ATA_DFLAG_PIO;
119 } 120 }
120 } 121 }
122 return 0;
121} 123}
122 124
123static struct scsi_host_template legacy_sht = { 125static struct scsi_host_template legacy_sht = {
diff --git a/drivers/ata/pata_platform.c b/drivers/ata/pata_platform.c
index 443b1d85c6c4..40ae11cbfda4 100644
--- a/drivers/ata/pata_platform.c
+++ b/drivers/ata/pata_platform.c
@@ -30,7 +30,7 @@ static int pio_mask = 1;
30 * Provide our own set_mode() as we don't want to change anything that has 30 * Provide our own set_mode() as we don't want to change anything that has
31 * already been configured.. 31 * already been configured..
32 */ 32 */
33static void pata_platform_set_mode(struct ata_port *ap) 33static int pata_platform_set_mode(struct ata_port *ap, struct ata_device **unused)
34{ 34{
35 int i; 35 int i;
36 36
@@ -44,6 +44,7 @@ static void pata_platform_set_mode(struct ata_port *ap)
44 dev->flags |= ATA_DFLAG_PIO; 44 dev->flags |= ATA_DFLAG_PIO;
45 } 45 }
46 } 46 }
47 return 0;
47} 48}
48 49
49static void pata_platform_host_stop(struct ata_host *host) 50static void pata_platform_host_stop(struct ata_host *host)
diff --git a/drivers/ata/pata_rz1000.c b/drivers/ata/pata_rz1000.c
index adf4cc134f25..cec0729225e1 100644
--- a/drivers/ata/pata_rz1000.c
+++ b/drivers/ata/pata_rz1000.c
@@ -52,19 +52,20 @@ static void rz1000_error_handler(struct ata_port *ap)
52/** 52/**
53 * rz1000_set_mode - mode setting function 53 * rz1000_set_mode - mode setting function
54 * @ap: ATA interface 54 * @ap: ATA interface
55 * @unused: returned device on set_mode failure
55 * 56 *
56 * Use a non standard set_mode function. We don't want to be tuned. We 57 * Use a non standard set_mode function. We don't want to be tuned. We
57 * would prefer to be BIOS generic but for the fact our hardware is 58 * would prefer to be BIOS generic but for the fact our hardware is
58 * whacked out. 59 * whacked out.
59 */ 60 */
60 61
61static void rz1000_set_mode(struct ata_port *ap) 62static int rz1000_set_mode(struct ata_port *ap, struct ata_device **unused)
62{ 63{
63 int i; 64 int i;
64 65
65 for (i = 0; i < ATA_MAX_DEVICES; i++) { 66 for (i = 0; i < ATA_MAX_DEVICES; i++) {
66 struct ata_device *dev = &ap->device[i]; 67 struct ata_device *dev = &ap->device[i];
67 if (ata_dev_enabled(dev)) { 68 if (ata_dev_ready(dev)) {
68 /* We don't really care */ 69 /* We don't really care */
69 dev->pio_mode = XFER_PIO_0; 70 dev->pio_mode = XFER_PIO_0;
70 dev->xfer_mode = XFER_PIO_0; 71 dev->xfer_mode = XFER_PIO_0;
@@ -72,6 +73,7 @@ static void rz1000_set_mode(struct ata_port *ap)
72 dev->flags |= ATA_DFLAG_PIO; 73 dev->flags |= ATA_DFLAG_PIO;
73 } 74 }
74 } 75 }
76 return 0;
75} 77}
76 78
77 79
diff --git a/drivers/ata/pata_sil680.c b/drivers/ata/pata_sil680.c
index 32cf0bfa8921..e8dfd8fc3ff7 100644
--- a/drivers/ata/pata_sil680.c
+++ b/drivers/ata/pata_sil680.c
@@ -135,7 +135,7 @@ static void sil680_error_handler(struct ata_port *ap)
135static void sil680_set_piomode(struct ata_port *ap, struct ata_device *adev) 135static void sil680_set_piomode(struct ata_port *ap, struct ata_device *adev)
136{ 136{
137 static u16 speed_p[5] = { 0x328A, 0x2283, 0x1104, 0x10C3, 0x10C1 }; 137 static u16 speed_p[5] = { 0x328A, 0x2283, 0x1104, 0x10C3, 0x10C1 };
138 static u16 speed_t[5] = { 0x328A, 0x1281, 0x1281, 0x10C3, 0x10C1 }; 138 static u16 speed_t[5] = { 0x328A, 0x2283, 0x1281, 0x10C3, 0x10C1 };
139 139
140 unsigned long tfaddr = sil680_selreg(ap, 0x02); 140 unsigned long tfaddr = sil680_selreg(ap, 0x02);
141 unsigned long addr = sil680_seldev(ap, adev, 0x04); 141 unsigned long addr = sil680_seldev(ap, adev, 0x04);
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c
index f0d4f7e9ed31..f0b6c3b71429 100644
--- a/drivers/ata/pata_via.c
+++ b/drivers/ata/pata_via.c
@@ -23,6 +23,7 @@
23 * VIA VT8233c - UDMA100 23 * VIA VT8233c - UDMA100
24 * VIA VT8235 - UDMA133 24 * VIA VT8235 - UDMA133
25 * VIA VT8237 - UDMA133 25 * VIA VT8237 - UDMA133
26 * VIA VT8237S - UDMA133
26 * VIA VT8251 - UDMA133 27 * VIA VT8251 - UDMA133
27 * 28 *
28 * Most registers remain compatible across chips. Others start reserved 29 * Most registers remain compatible across chips. Others start reserved
@@ -61,7 +62,7 @@
61#include <linux/libata.h> 62#include <linux/libata.h>
62 63
63#define DRV_NAME "pata_via" 64#define DRV_NAME "pata_via"
64#define DRV_VERSION "0.2.0" 65#define DRV_VERSION "0.2.1"
65 66
66/* 67/*
67 * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx 68 * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx
@@ -95,6 +96,7 @@ static const struct via_isa_bridge {
95 u8 rev_max; 96 u8 rev_max;
96 u16 flags; 97 u16 flags;
97} via_isa_bridges[] = { 98} via_isa_bridges[] = {
99 { "vt8237s", PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
98 { "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, 100 { "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
99 { "cx700", PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, 101 { "cx700", PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
100 { "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST | VIA_NO_ENABLES}, 102 { "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST | VIA_NO_ENABLES},
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 1b8e0eb9e032..aae0b5201c1e 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -523,8 +523,7 @@ static const struct ata_port_info mv_port_info[] = {
523 }, 523 },
524 { /* chip_7042 */ 524 { /* chip_7042 */
525 .sht = &mv_sht, 525 .sht = &mv_sht,
526 .flags = (MV_COMMON_FLAGS | MV_6XXX_FLAGS | 526 .flags = (MV_COMMON_FLAGS | MV_6XXX_FLAGS),
527 MV_FLAG_DUAL_HC),
528 .pio_mask = 0x1f, /* pio0-4 */ 527 .pio_mask = 0x1f, /* pio0-4 */
529 .udma_mask = 0x7f, /* udma0-6 */ 528 .udma_mask = 0x7f, /* udma0-6 */
530 .port_ops = &mv_iie_ops, 529 .port_ops = &mv_iie_ops,
@@ -545,6 +544,8 @@ static const struct pci_device_id mv_pci_tbl[] = {
545 544
546 { PCI_VDEVICE(ADAPTEC2, 0x0241), chip_604x }, 545 { PCI_VDEVICE(ADAPTEC2, 0x0241), chip_604x },
547 546
547 { PCI_VDEVICE(TTI, 0x2310), chip_7042 },
548
548 { } /* terminate list */ 549 { } /* terminate list */
549}; 550};
550 551
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index f6d498e1cf80..f7a963eb1f02 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -700,7 +700,6 @@ static void nv_adma_check_cpb(struct ata_port *ap, int cpb_num, int force_err)
700static int nv_host_intr(struct ata_port *ap, u8 irq_stat) 700static int nv_host_intr(struct ata_port *ap, u8 irq_stat)
701{ 701{
702 struct ata_queued_cmd *qc = ata_qc_from_tag(ap, ap->active_tag); 702 struct ata_queued_cmd *qc = ata_qc_from_tag(ap, ap->active_tag);
703 int handled;
704 703
705 /* freeze if hotplugged */ 704 /* freeze if hotplugged */
706 if (unlikely(irq_stat & (NV_INT_ADDED | NV_INT_REMOVED))) { 705 if (unlikely(irq_stat & (NV_INT_ADDED | NV_INT_REMOVED))) {
@@ -719,13 +718,7 @@ static int nv_host_intr(struct ata_port *ap, u8 irq_stat)
719 } 718 }
720 719
721 /* handle interrupt */ 720 /* handle interrupt */
722 handled = ata_host_intr(ap, qc); 721 return ata_host_intr(ap, qc);
723 if (unlikely(!handled)) {
724 /* spurious, clear it */
725 ata_check_status(ap);
726 }
727
728 return 1;
729} 722}
730 723
731static irqreturn_t nv_adma_interrupt(int irq, void *dev_instance) 724static irqreturn_t nv_adma_interrupt(int irq, void *dev_instance)
@@ -752,6 +745,11 @@ static irqreturn_t nv_adma_interrupt(int irq, void *dev_instance)
752 if (pp->flags & NV_ADMA_PORT_REGISTER_MODE) { 745 if (pp->flags & NV_ADMA_PORT_REGISTER_MODE) {
753 u8 irq_stat = readb(host->mmio_base + NV_INT_STATUS_CK804) 746 u8 irq_stat = readb(host->mmio_base + NV_INT_STATUS_CK804)
754 >> (NV_INT_PORT_SHIFT * i); 747 >> (NV_INT_PORT_SHIFT * i);
748 if(ata_tag_valid(ap->active_tag))
749 /** NV_INT_DEV indication seems unreliable at times
750 at least in ADMA mode. Force it on always when a
751 command is active, to prevent losing interrupts. */
752 irq_stat |= NV_INT_DEV;
755 handled += nv_host_intr(ap, irq_stat); 753 handled += nv_host_intr(ap, irq_stat);
756 continue; 754 continue;
757 } 755 }
diff --git a/drivers/ata/sata_uli.c b/drivers/ata/sata_uli.c
index 5c603ca3a50a..a43aec62d505 100644
--- a/drivers/ata/sata_uli.c
+++ b/drivers/ata/sata_uli.c
@@ -128,7 +128,8 @@ static const struct ata_port_operations uli_ops = {
128 128
129static struct ata_port_info uli_port_info = { 129static struct ata_port_info uli_port_info = {
130 .sht = &uli_sht, 130 .sht = &uli_sht,
131 .flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY, 131 .flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
132 ATA_FLAG_IGN_SIMPLEX,
132 .pio_mask = 0x1f, /* pio0-4 */ 133 .pio_mask = 0x1f, /* pio0-4 */
133 .udma_mask = 0x7f, /* udma0-6 */ 134 .udma_mask = 0x7f, /* udma0-6 */
134 .port_ops = &uli_ops, 135 .port_ops = &uli_ops,
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
index 1c7f19aecc25..d3d5c0d57032 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -74,9 +74,11 @@ enum {
74static int svia_init_one (struct pci_dev *pdev, const struct pci_device_id *ent); 74static int svia_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
75static u32 svia_scr_read (struct ata_port *ap, unsigned int sc_reg); 75static u32 svia_scr_read (struct ata_port *ap, unsigned int sc_reg);
76static void svia_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); 76static void svia_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
77static void svia_noop_freeze(struct ata_port *ap);
77static void vt6420_error_handler(struct ata_port *ap); 78static void vt6420_error_handler(struct ata_port *ap);
78 79
79static const struct pci_device_id svia_pci_tbl[] = { 80static const struct pci_device_id svia_pci_tbl[] = {
81 { PCI_VDEVICE(VIA, 0x5337), vt6420 },
80 { PCI_VDEVICE(VIA, 0x0591), vt6420 }, 82 { PCI_VDEVICE(VIA, 0x0591), vt6420 },
81 { PCI_VDEVICE(VIA, 0x3149), vt6420 }, 83 { PCI_VDEVICE(VIA, 0x3149), vt6420 },
82 { PCI_VDEVICE(VIA, 0x3249), vt6421 }, 84 { PCI_VDEVICE(VIA, 0x3249), vt6421 },
@@ -127,7 +129,7 @@ static const struct ata_port_operations vt6420_sata_ops = {
127 .qc_issue = ata_qc_issue_prot, 129 .qc_issue = ata_qc_issue_prot,
128 .data_xfer = ata_pio_data_xfer, 130 .data_xfer = ata_pio_data_xfer,
129 131
130 .freeze = ata_bmdma_freeze, 132 .freeze = svia_noop_freeze,
131 .thaw = ata_bmdma_thaw, 133 .thaw = ata_bmdma_thaw,
132 .error_handler = vt6420_error_handler, 134 .error_handler = vt6420_error_handler,
133 .post_internal_cmd = ata_bmdma_post_internal_cmd, 135 .post_internal_cmd = ata_bmdma_post_internal_cmd,
@@ -203,6 +205,15 @@ static void svia_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val)
203 outl(val, ap->ioaddr.scr_addr + (4 * sc_reg)); 205 outl(val, ap->ioaddr.scr_addr + (4 * sc_reg));
204} 206}
205 207
208static void svia_noop_freeze(struct ata_port *ap)
209{
210 /* Some VIA controllers choke if ATA_NIEN is manipulated in
211 * certain way. Leave it alone and just clear pending IRQ.
212 */
213 ata_chk_status(ap);
214 ata_bmdma_irq_clear(ap);
215}
216
206/** 217/**
207 * vt6420_prereset - prereset for vt6420 218 * vt6420_prereset - prereset for vt6420
208 * @ap: target ATA port 219 * @ap: target ATA port
diff --git a/drivers/atm/horizon.c b/drivers/atm/horizon.c
index 4dc10105d610..f96446c358ba 100644
--- a/drivers/atm/horizon.c
+++ b/drivers/atm/horizon.c
@@ -1845,7 +1845,7 @@ static u16 __devinit read_bia (const hrz_dev * dev, u16 addr)
1845 1845
1846/********** initialise a card **********/ 1846/********** initialise a card **********/
1847 1847
1848static int __init hrz_init (hrz_dev * dev) { 1848static int __devinit hrz_init (hrz_dev * dev) {
1849 int onefivefive; 1849 int onefivefive;
1850 1850
1851 u16 chan; 1851 u16 chan;
diff --git a/drivers/char/agp/amd-k7-agp.c b/drivers/char/agp/amd-k7-agp.c
index 51d0d562d01e..c85c8cadb6df 100644
--- a/drivers/char/agp/amd-k7-agp.c
+++ b/drivers/char/agp/amd-k7-agp.c
@@ -101,6 +101,11 @@ static int amd_create_gatt_pages(int nr_tables)
101 for (i = 0; i < nr_tables; i++) { 101 for (i = 0; i < nr_tables; i++) {
102 entry = kzalloc(sizeof(struct amd_page_map), GFP_KERNEL); 102 entry = kzalloc(sizeof(struct amd_page_map), GFP_KERNEL);
103 if (entry == NULL) { 103 if (entry == NULL) {
104 while (i > 0) {
105 kfree(tables[i-1]);
106 i--;
107 }
108 kfree(tables);
104 retval = -ENOMEM; 109 retval = -ENOMEM;
105 break; 110 break;
106 } 111 }
diff --git a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c
index 979300405c0e..93d2209fee4c 100644
--- a/drivers/char/agp/amd64-agp.c
+++ b/drivers/char/agp/amd64-agp.c
@@ -655,7 +655,7 @@ static struct pci_device_id agp_amd64_pci_table[] = {
655 .class = (PCI_CLASS_BRIDGE_HOST << 8), 655 .class = (PCI_CLASS_BRIDGE_HOST << 8),
656 .class_mask = ~0, 656 .class_mask = ~0,
657 .vendor = PCI_VENDOR_ID_VIA, 657 .vendor = PCI_VENDOR_ID_VIA,
658 .device = PCI_DEVICE_ID_VIA_K8M890CE, 658 .device = PCI_DEVICE_ID_VIA_VT3336,
659 .subvendor = PCI_ANY_ID, 659 .subvendor = PCI_ANY_ID,
660 .subdevice = PCI_ANY_ID, 660 .subdevice = PCI_ANY_ID,
661 }, 661 },
diff --git a/drivers/char/agp/ati-agp.c b/drivers/char/agp/ati-agp.c
index f244c6682738..9987dc2e0c3f 100644
--- a/drivers/char/agp/ati-agp.c
+++ b/drivers/char/agp/ati-agp.c
@@ -41,18 +41,18 @@ static struct gatt_mask ati_generic_masks[] =
41}; 41};
42 42
43 43
44typedef struct _ati_page_map { 44struct ati_page_map {
45 unsigned long *real; 45 unsigned long *real;
46 unsigned long __iomem *remapped; 46 unsigned long __iomem *remapped;
47} ati_page_map; 47};
48 48
49static struct _ati_generic_private { 49static struct _ati_generic_private {
50 volatile u8 __iomem *registers; 50 volatile u8 __iomem *registers;
51 ati_page_map **gatt_pages; 51 struct ati_page_map **gatt_pages;
52 int num_tables; 52 int num_tables;
53} ati_generic_private; 53} ati_generic_private;
54 54
55static int ati_create_page_map(ati_page_map *page_map) 55static int ati_create_page_map(struct ati_page_map *page_map)
56{ 56{
57 int i, err = 0; 57 int i, err = 0;
58 58
@@ -82,7 +82,7 @@ static int ati_create_page_map(ati_page_map *page_map)
82} 82}
83 83
84 84
85static void ati_free_page_map(ati_page_map *page_map) 85static void ati_free_page_map(struct ati_page_map *page_map)
86{ 86{
87 unmap_page_from_agp(virt_to_page(page_map->real)); 87 unmap_page_from_agp(virt_to_page(page_map->real));
88 iounmap(page_map->remapped); 88 iounmap(page_map->remapped);
@@ -94,8 +94,8 @@ static void ati_free_page_map(ati_page_map *page_map)
94static void ati_free_gatt_pages(void) 94static void ati_free_gatt_pages(void)
95{ 95{
96 int i; 96 int i;
97 ati_page_map **tables; 97 struct ati_page_map **tables;
98 ati_page_map *entry; 98 struct ati_page_map *entry;
99 99
100 tables = ati_generic_private.gatt_pages; 100 tables = ati_generic_private.gatt_pages;
101 for (i = 0; i < ati_generic_private.num_tables; i++) { 101 for (i = 0; i < ati_generic_private.num_tables; i++) {
@@ -112,30 +112,30 @@ static void ati_free_gatt_pages(void)
112 112
113static int ati_create_gatt_pages(int nr_tables) 113static int ati_create_gatt_pages(int nr_tables)
114{ 114{
115 ati_page_map **tables; 115 struct ati_page_map **tables;
116 ati_page_map *entry; 116 struct ati_page_map *entry;
117 int retval = 0; 117 int retval = 0;
118 int i; 118 int i;
119 119
120 tables = kzalloc((nr_tables + 1) * sizeof(ati_page_map *),GFP_KERNEL); 120 tables = kzalloc((nr_tables + 1) * sizeof(struct ati_page_map *),GFP_KERNEL);
121 if (tables == NULL) 121 if (tables == NULL)
122 return -ENOMEM; 122 return -ENOMEM;
123 123
124 for (i = 0; i < nr_tables; i++) { 124 for (i = 0; i < nr_tables; i++) {
125 entry = kzalloc(sizeof(ati_page_map), GFP_KERNEL); 125 entry = kzalloc(sizeof(struct ati_page_map), GFP_KERNEL);
126 if (entry == NULL) { 126 if (entry == NULL) {
127 while (i>0) { 127 while (i > 0) {
128 kfree (tables[i-1]); 128 kfree(tables[i-1]);
129 i--; 129 i--;
130 } 130 }
131 kfree (tables); 131 kfree(tables);
132 tables = NULL;
133 retval = -ENOMEM; 132 retval = -ENOMEM;
134 break; 133 break;
135 } 134 }
136 tables[i] = entry; 135 tables[i] = entry;
137 retval = ati_create_page_map(entry); 136 retval = ati_create_page_map(entry);
138 if (retval != 0) break; 137 if (retval != 0)
138 break;
139 } 139 }
140 ati_generic_private.num_tables = nr_tables; 140 ati_generic_private.num_tables = nr_tables;
141 ati_generic_private.gatt_pages = tables; 141 ati_generic_private.gatt_pages = tables;
@@ -340,7 +340,7 @@ static int ati_remove_memory(struct agp_memory * mem, off_t pg_start,
340static int ati_create_gatt_table(struct agp_bridge_data *bridge) 340static int ati_create_gatt_table(struct agp_bridge_data *bridge)
341{ 341{
342 struct aper_size_info_lvl2 *value; 342 struct aper_size_info_lvl2 *value;
343 ati_page_map page_dir; 343 struct ati_page_map page_dir;
344 unsigned long addr; 344 unsigned long addr;
345 int retval; 345 int retval;
346 u32 temp; 346 u32 temp;
@@ -400,7 +400,7 @@ static int ati_create_gatt_table(struct agp_bridge_data *bridge)
400 400
401static int ati_free_gatt_table(struct agp_bridge_data *bridge) 401static int ati_free_gatt_table(struct agp_bridge_data *bridge)
402{ 402{
403 ati_page_map page_dir; 403 struct ati_page_map page_dir;
404 404
405 page_dir.real = (unsigned long *)agp_bridge->gatt_table_real; 405 page_dir.real = (unsigned long *)agp_bridge->gatt_table_real;
406 page_dir.remapped = (unsigned long __iomem *)agp_bridge->gatt_table; 406 page_dir.remapped = (unsigned long __iomem *)agp_bridge->gatt_table;
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index ab0a9c0ad7c0..a3011de51f7c 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -1955,6 +1955,15 @@ static int agp_intel_resume(struct pci_dev *pdev)
1955 1955
1956 pci_restore_state(pdev); 1956 pci_restore_state(pdev);
1957 1957
1958 /* We should restore our graphics device's config space,
1959 * as host bridge (00:00) resumes before graphics device (02:00),
1960 * then our access to its pci space can work right.
1961 */
1962 if (intel_i810_private.i810_dev)
1963 pci_restore_state(intel_i810_private.i810_dev);
1964 if (intel_i830_private.i830_dev)
1965 pci_restore_state(intel_i830_private.i830_dev);
1966
1958 if (bridge->driver == &intel_generic_driver) 1967 if (bridge->driver == &intel_generic_driver)
1959 intel_configure(); 1968 intel_configure();
1960 else if (bridge->driver == &intel_850_driver) 1969 else if (bridge->driver == &intel_850_driver)
diff --git a/drivers/char/agp/via-agp.c b/drivers/char/agp/via-agp.c
index c149ac9ce9a7..2ded7a280d7f 100644
--- a/drivers/char/agp/via-agp.c
+++ b/drivers/char/agp/via-agp.c
@@ -380,9 +380,23 @@ static struct agp_device_ids via_agp_device_ids[] __devinitdata =
380 /* P4M800CE */ 380 /* P4M800CE */
381 { 381 {
382 .device_id = PCI_DEVICE_ID_VIA_P4M800CE, 382 .device_id = PCI_DEVICE_ID_VIA_P4M800CE,
383 .chipset_name = "P4M800CE", 383 .chipset_name = "VT3314",
384 },
385 /* CX700 */
386 {
387 .device_id = PCI_DEVICE_ID_VIA_CX700,
388 .chipset_name = "CX700",
389 },
390 /* VT3336 */
391 {
392 .device_id = PCI_DEVICE_ID_VIA_VT3336,
393 .chipset_name = "VT3336",
394 },
395 /* P4M890 */
396 {
397 .device_id = PCI_DEVICE_ID_VIA_P4M890,
398 .chipset_name = "P4M890",
384 }, 399 },
385
386 { }, /* dummy final entry, always present */ 400 { }, /* dummy final entry, always present */
387}; 401};
388 402
@@ -524,6 +538,9 @@ static const struct pci_device_id agp_via_pci_table[] = {
524 ID(PCI_DEVICE_ID_VIA_83_87XX_1), 538 ID(PCI_DEVICE_ID_VIA_83_87XX_1),
525 ID(PCI_DEVICE_ID_VIA_3296_0), 539 ID(PCI_DEVICE_ID_VIA_3296_0),
526 ID(PCI_DEVICE_ID_VIA_P4M800CE), 540 ID(PCI_DEVICE_ID_VIA_P4M800CE),
541 ID(PCI_DEVICE_ID_VIA_CX700),
542 ID(PCI_DEVICE_ID_VIA_VT3336),
543 ID(PCI_DEVICE_ID_VIA_P4M890),
527 { } 544 { }
528}; 545};
529 546
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index 4e4691a53890..53582b53da95 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -3649,8 +3649,6 @@ static void ipmi_timeout_handler(long timeout_period)
3649 unsigned long flags; 3649 unsigned long flags;
3650 int i; 3650 int i;
3651 3651
3652 INIT_LIST_HEAD(&timeouts);
3653
3654 rcu_read_lock(); 3652 rcu_read_lock();
3655 list_for_each_entry_rcu(intf, &ipmi_interfaces, link) { 3653 list_for_each_entry_rcu(intf, &ipmi_interfaces, link) {
3656 /* See if any waiting messages need to be processed. */ 3654 /* See if any waiting messages need to be processed. */
@@ -3671,6 +3669,7 @@ static void ipmi_timeout_handler(long timeout_period)
3671 /* Go through the seq table and find any messages that 3669 /* Go through the seq table and find any messages that
3672 have timed out, putting them in the timeouts 3670 have timed out, putting them in the timeouts
3673 list. */ 3671 list. */
3672 INIT_LIST_HEAD(&timeouts);
3674 spin_lock_irqsave(&intf->seq_lock, flags); 3673 spin_lock_irqsave(&intf->seq_lock, flags);
3675 for (i = 0; i < IPMI_IPMB_NUM_SEQ; i++) 3674 for (i = 0; i < IPMI_IPMB_NUM_SEQ; i++)
3676 check_msg_timeout(intf, &(intf->seq_table[i]), 3675 check_msg_timeout(intf, &(intf->seq_table[i]),
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 4f1813e04754..f5c160caf9f4 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -293,8 +293,8 @@ static int mmap_kmem(struct file * file, struct vm_area_struct * vma)
293{ 293{
294 unsigned long pfn; 294 unsigned long pfn;
295 295
296 /* Turn a pfn offset into an absolute pfn */ 296 /* Turn a kernel-virtual address into a physical page frame */
297 pfn = PFN_DOWN(virt_to_phys((void *)PAGE_OFFSET)) + vma->vm_pgoff; 297 pfn = __pa((u64)vma->vm_pgoff << PAGE_SHIFT) >> PAGE_SHIFT;
298 298
299 /* 299 /*
300 * RED-PEN: on some architectures there is more mapped memory 300 * RED-PEN: on some architectures there is more mapped memory
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
index 13935235e066..7fd3cd5ddf21 100644
--- a/drivers/char/sysrq.c
+++ b/drivers/char/sysrq.c
@@ -215,7 +215,7 @@ static void sysrq_handle_showstate_blocked(int key, struct tty_struct *tty)
215} 215}
216static struct sysrq_key_op sysrq_showstate_blocked_op = { 216static struct sysrq_key_op sysrq_showstate_blocked_op = {
217 .handler = sysrq_handle_showstate_blocked, 217 .handler = sysrq_handle_showstate_blocked,
218 .help_msg = "showBlockedTasks", 218 .help_msg = "shoW-blocked-tasks",
219 .action_msg = "Show Blocked State", 219 .action_msg = "Show Blocked State",
220 .enable_mask = SYSRQ_ENABLE_DUMP, 220 .enable_mask = SYSRQ_ENABLE_DUMP,
221}; 221};
@@ -315,15 +315,16 @@ static struct sysrq_key_op *sysrq_key_table[36] = {
315 &sysrq_loglevel_op, /* 9 */ 315 &sysrq_loglevel_op, /* 9 */
316 316
317 /* 317 /*
318 * Don't use for system provided sysrqs, it is handled specially on 318 * a: Don't use for system provided sysrqs, it is handled specially on
319 * sparc and will never arrive 319 * sparc and will never arrive.
320 */ 320 */
321 NULL, /* a */ 321 NULL, /* a */
322 &sysrq_reboot_op, /* b */ 322 &sysrq_reboot_op, /* b */
323 &sysrq_crashdump_op, /* c */ 323 &sysrq_crashdump_op, /* c & ibm_emac driver debug */
324 &sysrq_showlocks_op, /* d */ 324 &sysrq_showlocks_op, /* d */
325 &sysrq_term_op, /* e */ 325 &sysrq_term_op, /* e */
326 &sysrq_moom_op, /* f */ 326 &sysrq_moom_op, /* f */
327 /* g: May be registered by ppc for kgdb */
327 NULL, /* g */ 328 NULL, /* g */
328 NULL, /* h */ 329 NULL, /* h */
329 &sysrq_kill_op, /* i */ 330 &sysrq_kill_op, /* i */
@@ -332,18 +333,19 @@ static struct sysrq_key_op *sysrq_key_table[36] = {
332 NULL, /* l */ 333 NULL, /* l */
333 &sysrq_showmem_op, /* m */ 334 &sysrq_showmem_op, /* m */
334 &sysrq_unrt_op, /* n */ 335 &sysrq_unrt_op, /* n */
335 /* This will often be registered as 'Off' at init time */ 336 /* o: This will often be registered as 'Off' at init time */
336 NULL, /* o */ 337 NULL, /* o */
337 &sysrq_showregs_op, /* p */ 338 &sysrq_showregs_op, /* p */
338 NULL, /* q */ 339 NULL, /* q */
339 &sysrq_unraw_op, /* r */ 340 &sysrq_unraw_op, /* r */
340 &sysrq_sync_op, /* s */ 341 &sysrq_sync_op, /* s */
341 &sysrq_showstate_op, /* t */ 342 &sysrq_showstate_op, /* t */
342 &sysrq_mountro_op, /* u */ 343 &sysrq_mountro_op, /* u */
343 /* May be assigned at init time by SMP VOYAGER */ 344 /* v: May be registered at init time by SMP VOYAGER */
344 NULL, /* v */ 345 NULL, /* v */
345 NULL, /* w */ 346 &sysrq_showstate_blocked_op, /* w */
346 &sysrq_showstate_blocked_op, /* x */ 347 /* x: May be registered on ppc/powerpc for xmon */
348 NULL, /* x */
347 NULL, /* y */ 349 NULL, /* y */
348 NULL /* z */ 350 NULL /* z */
349}; 351};
diff --git a/drivers/char/tlclk.c b/drivers/char/tlclk.c
index 448d5083c381..4fac2bdf6215 100644
--- a/drivers/char/tlclk.c
+++ b/drivers/char/tlclk.c
@@ -186,6 +186,7 @@ static int got_event; /* if events processing have been done */
186static void switchover_timeout(unsigned long data); 186static void switchover_timeout(unsigned long data);
187static struct timer_list switchover_timer = 187static struct timer_list switchover_timer =
188 TIMER_INITIALIZER(switchover_timeout , 0, 0); 188 TIMER_INITIALIZER(switchover_timeout , 0, 0);
189static unsigned long tlclk_timer_data;
189 190
190static struct tlclk_alarms *alarm_events; 191static struct tlclk_alarms *alarm_events;
191 192
@@ -197,10 +198,19 @@ static irqreturn_t tlclk_interrupt(int irq, void *dev_id);
197 198
198static DECLARE_WAIT_QUEUE_HEAD(wq); 199static DECLARE_WAIT_QUEUE_HEAD(wq);
199 200
201static unsigned long useflags;
202static DEFINE_MUTEX(tlclk_mutex);
203
200static int tlclk_open(struct inode *inode, struct file *filp) 204static int tlclk_open(struct inode *inode, struct file *filp)
201{ 205{
202 int result; 206 int result;
203 207
208 if (test_and_set_bit(0, &useflags))
209 return -EBUSY;
210 /* this legacy device is always one per system and it doesn't
211 * know how to handle multiple concurrent clients.
212 */
213
204 /* Make sure there is no interrupt pending while 214 /* Make sure there is no interrupt pending while
205 * initialising interrupt handler */ 215 * initialising interrupt handler */
206 inb(TLCLK_REG6); 216 inb(TLCLK_REG6);
@@ -221,6 +231,7 @@ static int tlclk_open(struct inode *inode, struct file *filp)
221static int tlclk_release(struct inode *inode, struct file *filp) 231static int tlclk_release(struct inode *inode, struct file *filp)
222{ 232{
223 free_irq(telclk_interrupt, tlclk_interrupt); 233 free_irq(telclk_interrupt, tlclk_interrupt);
234 clear_bit(0, &useflags);
224 235
225 return 0; 236 return 0;
226} 237}
@@ -230,26 +241,25 @@ static ssize_t tlclk_read(struct file *filp, char __user *buf, size_t count,
230{ 241{
231 if (count < sizeof(struct tlclk_alarms)) 242 if (count < sizeof(struct tlclk_alarms))
232 return -EIO; 243 return -EIO;
244 if (mutex_lock_interruptible(&tlclk_mutex))
245 return -EINTR;
246
233 247
234 wait_event_interruptible(wq, got_event); 248 wait_event_interruptible(wq, got_event);
235 if (copy_to_user(buf, alarm_events, sizeof(struct tlclk_alarms))) 249 if (copy_to_user(buf, alarm_events, sizeof(struct tlclk_alarms))) {
250 mutex_unlock(&tlclk_mutex);
236 return -EFAULT; 251 return -EFAULT;
252 }
237 253
238 memset(alarm_events, 0, sizeof(struct tlclk_alarms)); 254 memset(alarm_events, 0, sizeof(struct tlclk_alarms));
239 got_event = 0; 255 got_event = 0;
240 256
257 mutex_unlock(&tlclk_mutex);
241 return sizeof(struct tlclk_alarms); 258 return sizeof(struct tlclk_alarms);
242} 259}
243 260
244static ssize_t tlclk_write(struct file *filp, const char __user *buf, size_t count,
245 loff_t *f_pos)
246{
247 return 0;
248}
249
250static const struct file_operations tlclk_fops = { 261static const struct file_operations tlclk_fops = {
251 .read = tlclk_read, 262 .read = tlclk_read,
252 .write = tlclk_write,
253 .open = tlclk_open, 263 .open = tlclk_open,
254 .release = tlclk_release, 264 .release = tlclk_release,
255 265
@@ -540,7 +550,7 @@ static ssize_t store_select_amcb1_transmit_clock(struct device *d,
540 SET_PORT_BITS(TLCLK_REG3, 0xf8, 0x7); 550 SET_PORT_BITS(TLCLK_REG3, 0xf8, 0x7);
541 switch (val) { 551 switch (val) {
542 case CLK_8_592MHz: 552 case CLK_8_592MHz:
543 SET_PORT_BITS(TLCLK_REG0, 0xfc, 1); 553 SET_PORT_BITS(TLCLK_REG0, 0xfc, 2);
544 break; 554 break;
545 case CLK_11_184MHz: 555 case CLK_11_184MHz:
546 SET_PORT_BITS(TLCLK_REG0, 0xfc, 0); 556 SET_PORT_BITS(TLCLK_REG0, 0xfc, 0);
@@ -549,7 +559,7 @@ static ssize_t store_select_amcb1_transmit_clock(struct device *d,
549 SET_PORT_BITS(TLCLK_REG0, 0xfc, 3); 559 SET_PORT_BITS(TLCLK_REG0, 0xfc, 3);
550 break; 560 break;
551 case CLK_44_736MHz: 561 case CLK_44_736MHz:
552 SET_PORT_BITS(TLCLK_REG0, 0xfc, 2); 562 SET_PORT_BITS(TLCLK_REG0, 0xfc, 1);
553 break; 563 break;
554 } 564 }
555 } else 565 } else
@@ -839,11 +849,13 @@ static void __exit tlclk_cleanup(void)
839 849
840static void switchover_timeout(unsigned long data) 850static void switchover_timeout(unsigned long data)
841{ 851{
842 if ((data & 1)) { 852 unsigned long flags = *(unsigned long *) data;
843 if ((inb(TLCLK_REG1) & 0x08) != (data & 0x08)) 853
854 if ((flags & 1)) {
855 if ((inb(TLCLK_REG1) & 0x08) != (flags & 0x08))
844 alarm_events->switchover_primary++; 856 alarm_events->switchover_primary++;
845 } else { 857 } else {
846 if ((inb(TLCLK_REG1) & 0x08) != (data & 0x08)) 858 if ((inb(TLCLK_REG1) & 0x08) != (flags & 0x08))
847 alarm_events->switchover_secondary++; 859 alarm_events->switchover_secondary++;
848 } 860 }
849 861
@@ -901,8 +913,9 @@ static irqreturn_t tlclk_interrupt(int irq, void *dev_id)
901 913
902 /* TIMEOUT in ~10ms */ 914 /* TIMEOUT in ~10ms */
903 switchover_timer.expires = jiffies + msecs_to_jiffies(10); 915 switchover_timer.expires = jiffies + msecs_to_jiffies(10);
904 switchover_timer.data = inb(TLCLK_REG1); 916 tlclk_timer_data = inb(TLCLK_REG1);
905 add_timer(&switchover_timer); 917 switchover_timer.data = (unsigned long) &tlclk_timer_data;
918 mod_timer(&switchover_timer, switchover_timer.expires);
906 } else { 919 } else {
907 got_event = 1; 920 got_event = 1;
908 wake_up(&wq); 921 wake_up(&wq);
diff --git a/drivers/char/vr41xx_giu.c b/drivers/char/vr41xx_giu.c
index a744dad9cf45..0cea8d4907df 100644
--- a/drivers/char/vr41xx_giu.c
+++ b/drivers/char/vr41xx_giu.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Copyright (C) 2002 MontaVista Software Inc. 4 * Copyright (C) 2002 MontaVista Software Inc.
5 * Author: Yoichi Yuasa <yyuasa@mvista.com or source@mvista.com> 5 * Author: Yoichi Yuasa <yyuasa@mvista.com or source@mvista.com>
6 * Copyright (C) 2003-2005 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> 6 * Copyright (C) 2003-2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
@@ -125,30 +125,17 @@ static inline uint16_t giu_clear(uint16_t offset, uint16_t clear)
125 return data; 125 return data;
126} 126}
127 127
128static unsigned int startup_giuint_low_irq(unsigned int irq) 128static void ack_giuint_low(unsigned int irq)
129{ 129{
130 unsigned int pin; 130 giu_write(GIUINTSTATL, 1 << GPIO_PIN_OF_IRQ(irq));
131
132 pin = GPIO_PIN_OF_IRQ(irq);
133 giu_write(GIUINTSTATL, 1 << pin);
134 giu_set(GIUINTENL, 1 << pin);
135
136 return 0;
137} 131}
138 132
139static void shutdown_giuint_low_irq(unsigned int irq) 133static void mask_giuint_low(unsigned int irq)
140{ 134{
141 giu_clear(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq)); 135 giu_clear(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq));
142} 136}
143 137
144static void enable_giuint_low_irq(unsigned int irq) 138static void mask_ack_giuint_low(unsigned int irq)
145{
146 giu_set(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq));
147}
148
149#define disable_giuint_low_irq shutdown_giuint_low_irq
150
151static void ack_giuint_low_irq(unsigned int irq)
152{ 139{
153 unsigned int pin; 140 unsigned int pin;
154 141
@@ -157,46 +144,30 @@ static void ack_giuint_low_irq(unsigned int irq)
157 giu_write(GIUINTSTATL, 1 << pin); 144 giu_write(GIUINTSTATL, 1 << pin);
158} 145}
159 146
160static void end_giuint_low_irq(unsigned int irq) 147static void unmask_giuint_low(unsigned int irq)
161{ 148{
162 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) 149 giu_set(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq));
163 giu_set(GIUINTENL, 1 << GPIO_PIN_OF_IRQ(irq));
164} 150}
165 151
166static struct hw_interrupt_type giuint_low_irq_type = { 152static struct irq_chip giuint_low_irq_chip = {
167 .typename = "GIUINTL", 153 .name = "GIUINTL",
168 .startup = startup_giuint_low_irq, 154 .ack = ack_giuint_low,
169 .shutdown = shutdown_giuint_low_irq, 155 .mask = mask_giuint_low,
170 .enable = enable_giuint_low_irq, 156 .mask_ack = mask_ack_giuint_low,
171 .disable = disable_giuint_low_irq, 157 .unmask = unmask_giuint_low,
172 .ack = ack_giuint_low_irq,
173 .end = end_giuint_low_irq,
174}; 158};
175 159
176static unsigned int startup_giuint_high_irq(unsigned int irq) 160static void ack_giuint_high(unsigned int irq)
177{ 161{
178 unsigned int pin; 162 giu_write(GIUINTSTATH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET));
179
180 pin = GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET;
181 giu_write(GIUINTSTATH, 1 << pin);
182 giu_set(GIUINTENH, 1 << pin);
183
184 return 0;
185} 163}
186 164
187static void shutdown_giuint_high_irq(unsigned int irq) 165static void mask_giuint_high(unsigned int irq)
188{ 166{
189 giu_clear(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET)); 167 giu_clear(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET));
190} 168}
191 169
192static void enable_giuint_high_irq(unsigned int irq) 170static void mask_ack_giuint_high(unsigned int irq)
193{
194 giu_set(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET));
195}
196
197#define disable_giuint_high_irq shutdown_giuint_high_irq
198
199static void ack_giuint_high_irq(unsigned int irq)
200{ 171{
201 unsigned int pin; 172 unsigned int pin;
202 173
@@ -205,20 +176,17 @@ static void ack_giuint_high_irq(unsigned int irq)
205 giu_write(GIUINTSTATH, 1 << pin); 176 giu_write(GIUINTSTATH, 1 << pin);
206} 177}
207 178
208static void end_giuint_high_irq(unsigned int irq) 179static void unmask_giuint_high(unsigned int irq)
209{ 180{
210 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) 181 giu_set(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET));
211 giu_set(GIUINTENH, 1 << (GPIO_PIN_OF_IRQ(irq) - GIUINT_HIGH_OFFSET));
212} 182}
213 183
214static struct hw_interrupt_type giuint_high_irq_type = { 184static struct irq_chip giuint_high_irq_chip = {
215 .typename = "GIUINTH", 185 .name = "GIUINTH",
216 .startup = startup_giuint_high_irq, 186 .ack = ack_giuint_high,
217 .shutdown = shutdown_giuint_high_irq, 187 .mask = mask_giuint_high,
218 .enable = enable_giuint_high_irq, 188 .mask_ack = mask_ack_giuint_high,
219 .disable = disable_giuint_high_irq, 189 .unmask = unmask_giuint_high,
220 .ack = ack_giuint_high_irq,
221 .end = end_giuint_high_irq,
222}; 190};
223 191
224static int giu_get_irq(unsigned int irq) 192static int giu_get_irq(unsigned int irq)
@@ -282,9 +250,15 @@ void vr41xx_set_irq_trigger(unsigned int pin, irq_trigger_t trigger, irq_signal_
282 break; 250 break;
283 } 251 }
284 } 252 }
253 set_irq_chip_and_handler(GIU_IRQ(pin),
254 &giuint_low_irq_chip,
255 handle_edge_irq);
285 } else { 256 } else {
286 giu_clear(GIUINTTYPL, mask); 257 giu_clear(GIUINTTYPL, mask);
287 giu_clear(GIUINTHTSELL, mask); 258 giu_clear(GIUINTHTSELL, mask);
259 set_irq_chip_and_handler(GIU_IRQ(pin),
260 &giuint_low_irq_chip,
261 handle_level_irq);
288 } 262 }
289 giu_write(GIUINTSTATL, mask); 263 giu_write(GIUINTSTATL, mask);
290 } else if (pin < GIUINT_HIGH_MAX) { 264 } else if (pin < GIUINT_HIGH_MAX) {
@@ -311,9 +285,15 @@ void vr41xx_set_irq_trigger(unsigned int pin, irq_trigger_t trigger, irq_signal_
311 break; 285 break;
312 } 286 }
313 } 287 }
288 set_irq_chip_and_handler(GIU_IRQ(pin),
289 &giuint_high_irq_chip,
290 handle_edge_irq);
314 } else { 291 } else {
315 giu_clear(GIUINTTYPH, mask); 292 giu_clear(GIUINTTYPH, mask);
316 giu_clear(GIUINTHTSELH, mask); 293 giu_clear(GIUINTHTSELH, mask);
294 set_irq_chip_and_handler(GIU_IRQ(pin),
295 &giuint_high_irq_chip,
296 handle_level_irq);
317 } 297 }
318 giu_write(GIUINTSTATH, mask); 298 giu_write(GIUINTSTATH, mask);
319 } 299 }
@@ -617,10 +597,11 @@ static const struct file_operations gpio_fops = {
617static int __devinit giu_probe(struct platform_device *dev) 597static int __devinit giu_probe(struct platform_device *dev)
618{ 598{
619 unsigned long start, size, flags = 0; 599 unsigned long start, size, flags = 0;
620 unsigned int nr_pins = 0; 600 unsigned int nr_pins = 0, trigger, i, pin;
621 struct resource *res1, *res2 = NULL; 601 struct resource *res1, *res2 = NULL;
622 void *base; 602 void *base;
623 int retval, i; 603 struct irq_chip *chip;
604 int retval;
624 605
625 switch (current_cpu_data.cputype) { 606 switch (current_cpu_data.cputype) {
626 case CPU_VR4111: 607 case CPU_VR4111:
@@ -688,11 +669,20 @@ static int __devinit giu_probe(struct platform_device *dev)
688 giu_write(GIUINTENL, 0); 669 giu_write(GIUINTENL, 0);
689 giu_write(GIUINTENH, 0); 670 giu_write(GIUINTENH, 0);
690 671
672 trigger = giu_read(GIUINTTYPH) << 16;
673 trigger |= giu_read(GIUINTTYPL);
691 for (i = GIU_IRQ_BASE; i <= GIU_IRQ_LAST; i++) { 674 for (i = GIU_IRQ_BASE; i <= GIU_IRQ_LAST; i++) {
692 if (i < GIU_IRQ(GIUINT_HIGH_OFFSET)) 675 pin = GPIO_PIN_OF_IRQ(i);
693 irq_desc[i].chip = &giuint_low_irq_type; 676 if (pin < GIUINT_HIGH_OFFSET)
677 chip = &giuint_low_irq_chip;
694 else 678 else
695 irq_desc[i].chip = &giuint_high_irq_type; 679 chip = &giuint_high_irq_chip;
680
681 if (trigger & (1 << pin))
682 set_irq_chip_and_handler(i, chip, handle_edge_irq);
683 else
684 set_irq_chip_and_handler(i, chip, handle_level_irq);
685
696 } 686 }
697 687
698 return cascade_irq(GIUINT_IRQ, giu_get_irq); 688 return cascade_irq(GIUINT_IRQ, giu_get_irq);
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index d91330432ba2..a45cc89e387a 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -722,8 +722,13 @@ static int cpufreq_add_dev (struct sys_device * sys_dev)
722 spin_unlock_irqrestore(&cpufreq_driver_lock, flags); 722 spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
723 723
724 dprintk("CPU already managed, adding link\n"); 724 dprintk("CPU already managed, adding link\n");
725 sysfs_create_link(&sys_dev->kobj, 725 ret = sysfs_create_link(&sys_dev->kobj,
726 &managed_policy->kobj, "cpufreq"); 726 &managed_policy->kobj,
727 "cpufreq");
728 if (ret) {
729 mutex_unlock(&policy->lock);
730 goto err_out_driver_exit;
731 }
727 732
728 cpufreq_debug_enable_ratelimit(); 733 cpufreq_debug_enable_ratelimit();
729 mutex_unlock(&policy->lock); 734 mutex_unlock(&policy->lock);
@@ -770,8 +775,12 @@ static int cpufreq_add_dev (struct sys_device * sys_dev)
770 dprintk("CPU %u already managed, adding link\n", j); 775 dprintk("CPU %u already managed, adding link\n", j);
771 cpufreq_cpu_get(cpu); 776 cpufreq_cpu_get(cpu);
772 cpu_sys_dev = get_cpu_sysdev(j); 777 cpu_sys_dev = get_cpu_sysdev(j);
773 sysfs_create_link(&cpu_sys_dev->kobj, &policy->kobj, 778 ret = sysfs_create_link(&cpu_sys_dev->kobj, &policy->kobj,
774 "cpufreq"); 779 "cpufreq");
780 if (ret) {
781 mutex_unlock(&policy->lock);
782 goto err_out_unregister;
783 }
775 } 784 }
776 785
777 policy->governor = NULL; /* to assure that the starting sequence is 786 policy->governor = NULL; /* to assure that the starting sequence is
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
index 5ab5e393b882..c6281ccd4fe7 100644
--- a/drivers/firmware/efivars.c
+++ b/drivers/firmware/efivars.c
@@ -122,8 +122,6 @@ struct efivar_entry {
122 struct kobject kobj; 122 struct kobject kobj;
123}; 123};
124 124
125#define get_efivar_entry(n) list_entry(n, struct efivar_entry, list)
126
127struct efivar_attribute { 125struct efivar_attribute {
128 struct attribute attr; 126 struct attribute attr;
129 ssize_t (*show) (struct efivar_entry *entry, char *buf); 127 ssize_t (*show) (struct efivar_entry *entry, char *buf);
@@ -386,9 +384,6 @@ static struct sysfs_ops efivar_attr_ops = {
386static void efivar_release(struct kobject *kobj) 384static void efivar_release(struct kobject *kobj)
387{ 385{
388 struct efivar_entry *var = container_of(kobj, struct efivar_entry, kobj); 386 struct efivar_entry *var = container_of(kobj, struct efivar_entry, kobj);
389 spin_lock(&efivars_lock);
390 list_del(&var->list);
391 spin_unlock(&efivars_lock);
392 kfree(var); 387 kfree(var);
393} 388}
394 389
@@ -430,9 +425,8 @@ static ssize_t
430efivar_create(struct subsystem *sub, const char *buf, size_t count) 425efivar_create(struct subsystem *sub, const char *buf, size_t count)
431{ 426{
432 struct efi_variable *new_var = (struct efi_variable *)buf; 427 struct efi_variable *new_var = (struct efi_variable *)buf;
433 struct efivar_entry *search_efivar = NULL; 428 struct efivar_entry *search_efivar, *n;
434 unsigned long strsize1, strsize2; 429 unsigned long strsize1, strsize2;
435 struct list_head *pos, *n;
436 efi_status_t status = EFI_NOT_FOUND; 430 efi_status_t status = EFI_NOT_FOUND;
437 int found = 0; 431 int found = 0;
438 432
@@ -444,8 +438,7 @@ efivar_create(struct subsystem *sub, const char *buf, size_t count)
444 /* 438 /*
445 * Does this variable already exist? 439 * Does this variable already exist?
446 */ 440 */
447 list_for_each_safe(pos, n, &efivar_list) { 441 list_for_each_entry_safe(search_efivar, n, &efivar_list, list) {
448 search_efivar = get_efivar_entry(pos);
449 strsize1 = utf8_strsize(search_efivar->var.VariableName, 1024); 442 strsize1 = utf8_strsize(search_efivar->var.VariableName, 1024);
450 strsize2 = utf8_strsize(new_var->VariableName, 1024); 443 strsize2 = utf8_strsize(new_var->VariableName, 1024);
451 if (strsize1 == strsize2 && 444 if (strsize1 == strsize2 &&
@@ -490,9 +483,8 @@ static ssize_t
490efivar_delete(struct subsystem *sub, const char *buf, size_t count) 483efivar_delete(struct subsystem *sub, const char *buf, size_t count)
491{ 484{
492 struct efi_variable *del_var = (struct efi_variable *)buf; 485 struct efi_variable *del_var = (struct efi_variable *)buf;
493 struct efivar_entry *search_efivar = NULL; 486 struct efivar_entry *search_efivar, *n;
494 unsigned long strsize1, strsize2; 487 unsigned long strsize1, strsize2;
495 struct list_head *pos, *n;
496 efi_status_t status = EFI_NOT_FOUND; 488 efi_status_t status = EFI_NOT_FOUND;
497 int found = 0; 489 int found = 0;
498 490
@@ -504,8 +496,7 @@ efivar_delete(struct subsystem *sub, const char *buf, size_t count)
504 /* 496 /*
505 * Does this variable already exist? 497 * Does this variable already exist?
506 */ 498 */
507 list_for_each_safe(pos, n, &efivar_list) { 499 list_for_each_entry_safe(search_efivar, n, &efivar_list, list) {
508 search_efivar = get_efivar_entry(pos);
509 strsize1 = utf8_strsize(search_efivar->var.VariableName, 1024); 500 strsize1 = utf8_strsize(search_efivar->var.VariableName, 1024);
510 strsize2 = utf8_strsize(del_var->VariableName, 1024); 501 strsize2 = utf8_strsize(del_var->VariableName, 1024);
511 if (strsize1 == strsize2 && 502 if (strsize1 == strsize2 &&
@@ -537,9 +528,9 @@ efivar_delete(struct subsystem *sub, const char *buf, size_t count)
537 spin_unlock(&efivars_lock); 528 spin_unlock(&efivars_lock);
538 return -EIO; 529 return -EIO;
539 } 530 }
531 list_del(&search_efivar->list);
540 /* We need to release this lock before unregistering. */ 532 /* We need to release this lock before unregistering. */
541 spin_unlock(&efivars_lock); 533 spin_unlock(&efivars_lock);
542
543 efivar_unregister(search_efivar); 534 efivar_unregister(search_efivar);
544 535
545 /* It's dead Jim.... */ 536 /* It's dead Jim.... */
@@ -768,10 +759,14 @@ out_free:
768static void __exit 759static void __exit
769efivars_exit(void) 760efivars_exit(void)
770{ 761{
771 struct list_head *pos, *n; 762 struct efivar_entry *entry, *n;
772 763
773 list_for_each_safe(pos, n, &efivar_list) 764 list_for_each_entry_safe(entry, n, &efivar_list, list) {
774 efivar_unregister(get_efivar_entry(pos)); 765 spin_lock(&efivars_lock);
766 list_del(&entry->list);
767 spin_unlock(&efivars_lock);
768 efivar_unregister(entry);
769 }
775 770
776 subsystem_unregister(&vars_subsys); 771 subsystem_unregister(&vars_subsys);
777 firmware_unregister(&efi_subsys); 772 firmware_unregister(&efi_subsys);
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 1e1a7770a6b9..49f18f5b2514 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -543,6 +543,7 @@ void hid_free_device(struct hid_device *device)
543 } 543 }
544 544
545 kfree(device->rdesc); 545 kfree(device->rdesc);
546 kfree(device->collection);
546 kfree(device); 547 kfree(device);
547} 548}
548EXPORT_SYMBOL_GPL(hid_free_device); 549EXPORT_SYMBOL_GPL(hid_free_device);
@@ -880,6 +881,10 @@ static void hid_output_field(struct hid_field *field, __u8 *data)
880 unsigned size = field->report_size; 881 unsigned size = field->report_size;
881 unsigned n; 882 unsigned n;
882 883
884 /* make sure the unused bits in the last byte are zeros */
885 if (count > 0 && size > 0)
886 data[(count*size-1)/8] = 0;
887
883 for (n = 0; n < count; n++) { 888 for (n = 0; n < count; n++) {
884 if (field->logical_minimum < 0) /* signed values */ 889 if (field->logical_minimum < 0) /* signed values */
885 implement(data, offset + n * size, size, s32ton(field->value[n], size)); 890 implement(data, offset + n * size, size, s32ton(field->value[n], size));
@@ -947,7 +952,7 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i
947 } 952 }
948 953
949#ifdef DEBUG_DATA 954#ifdef DEBUG_DATA
950 printk(KERN_DEBUG __FILE__ ": report (size %u) (%snumbered)\n", len, report_enum->numbered ? "" : "un"); 955 printk(KERN_DEBUG __FILE__ ": report (size %u) (%snumbered)\n", size, report_enum->numbered ? "" : "un");
951#endif 956#endif
952 957
953 n = 0; /* Normally report number is 0 */ 958 n = 0; /* Normally report number is 0 */
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 28689e3eb552..c7a6833f6821 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -30,12 +30,16 @@
30#include <linux/module.h> 30#include <linux/module.h>
31#include <linux/slab.h> 31#include <linux/slab.h>
32#include <linux/kernel.h> 32#include <linux/kernel.h>
33#include <linux/usb/input.h>
34 33
35#undef DEBUG 34#undef DEBUG
36 35
37#include <linux/hid.h> 36#include <linux/hid.h>
38 37
38static int hid_pb_fnmode = 1;
39module_param_named(pb_fnmode, hid_pb_fnmode, int, 0644);
40MODULE_PARM_DESC(pb_fnmode,
41 "Mode of fn key on PowerBooks (0 = disabled, 1 = fkeyslast, 2 = fkeysfirst)");
42
39#define unk KEY_UNKNOWN 43#define unk KEY_UNKNOWN
40 44
41static const unsigned char hid_keyboard[256] = { 45static const unsigned char hid_keyboard[256] = {
@@ -155,7 +159,7 @@ static int hidinput_pb_event(struct hid_device *hid, struct input_dev *input,
155 return 1; 159 return 1;
156 } 160 }
157 161
158 if (hid->pb_fnmode) { 162 if (hid_pb_fnmode) {
159 int do_translate; 163 int do_translate;
160 164
161 trans = find_translation(powerbook_fn_keys, usage->code); 165 trans = find_translation(powerbook_fn_keys, usage->code);
@@ -164,8 +168,8 @@ static int hidinput_pb_event(struct hid_device *hid, struct input_dev *input,
164 do_translate = 1; 168 do_translate = 1;
165 else if (trans->flags & POWERBOOK_FLAG_FKEY) 169 else if (trans->flags & POWERBOOK_FLAG_FKEY)
166 do_translate = 170 do_translate =
167 (hid->pb_fnmode == 2 && (hid->quirks & HID_QUIRK_POWERBOOK_FN_ON)) || 171 (hid_pb_fnmode == 2 && (hid->quirks & HID_QUIRK_POWERBOOK_FN_ON)) ||
168 (hid->pb_fnmode == 1 && !(hid->quirks & HID_QUIRK_POWERBOOK_FN_ON)); 172 (hid_pb_fnmode == 1 && !(hid->quirks & HID_QUIRK_POWERBOOK_FN_ON));
169 else 173 else
170 do_translate = (hid->quirks & HID_QUIRK_POWERBOOK_FN_ON); 174 do_translate = (hid->quirks & HID_QUIRK_POWERBOOK_FN_ON);
171 175
@@ -364,9 +368,22 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
364 break; 368 break;
365 369
366 case HID_UP_LED: 370 case HID_UP_LED:
367 if (((usage->hid - 1) & 0xffff) >= LED_MAX) 371
368 goto ignore; 372 switch (usage->hid & 0xffff) { /* HID-Value: */
369 map_led((usage->hid - 1) & 0xffff); 373 case 0x01: map_led (LED_NUML); break; /* "Num Lock" */
374 case 0x02: map_led (LED_CAPSL); break; /* "Caps Lock" */
375 case 0x03: map_led (LED_SCROLLL); break; /* "Scroll Lock" */
376 case 0x04: map_led (LED_COMPOSE); break; /* "Compose" */
377 case 0x05: map_led (LED_KANA); break; /* "Kana" */
378 case 0x27: map_led (LED_SLEEP); break; /* "Stand-By" */
379 case 0x4c: map_led (LED_SUSPEND); break; /* "System Suspend" */
380 case 0x09: map_led (LED_MUTE); break; /* "Mute" */
381 case 0x4b: map_led (LED_MISC); break; /* "Generic Indicator" */
382 case 0x19: map_led (LED_MAIL); break; /* "Message Waiting" */
383 case 0x4d: map_led (LED_CHARGING); break; /* "External Power Connected" */
384
385 default: goto ignore;
386 }
370 break; 387 break;
371 388
372 case HID_UP_DIGITIZER: 389 case HID_UP_DIGITIZER:
@@ -419,6 +436,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
419 case 0x040: map_key_clear(KEY_MENU); break; 436 case 0x040: map_key_clear(KEY_MENU); break;
420 case 0x045: map_key_clear(KEY_RADIO); break; 437 case 0x045: map_key_clear(KEY_RADIO); break;
421 438
439 case 0x083: map_key_clear(KEY_LAST); break;
422 case 0x088: map_key_clear(KEY_PC); break; 440 case 0x088: map_key_clear(KEY_PC); break;
423 case 0x089: map_key_clear(KEY_TV); break; 441 case 0x089: map_key_clear(KEY_TV); break;
424 case 0x08a: map_key_clear(KEY_WWW); break; 442 case 0x08a: map_key_clear(KEY_WWW); break;
@@ -436,6 +454,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
436 case 0x096: map_key_clear(KEY_TAPE); break; 454 case 0x096: map_key_clear(KEY_TAPE); break;
437 case 0x097: map_key_clear(KEY_TV2); break; 455 case 0x097: map_key_clear(KEY_TV2); break;
438 case 0x098: map_key_clear(KEY_SAT); break; 456 case 0x098: map_key_clear(KEY_SAT); break;
457 case 0x09a: map_key_clear(KEY_PVR); break;
439 458
440 case 0x09c: map_key_clear(KEY_CHANNELUP); break; 459 case 0x09c: map_key_clear(KEY_CHANNELUP); break;
441 case 0x09d: map_key_clear(KEY_CHANNELDOWN); break; 460 case 0x09d: map_key_clear(KEY_CHANNELDOWN); break;
diff --git a/drivers/hwmon/hwmon-vid.c b/drivers/hwmon/hwmon-vid.c
index 31c42002708f..b80f6ed5acfc 100644
--- a/drivers/hwmon/hwmon-vid.c
+++ b/drivers/hwmon/hwmon-vid.c
@@ -93,7 +93,7 @@ int vid_from_reg(int val, u8 vrm)
93 case 110: /* Intel Conroe */ 93 case 110: /* Intel Conroe */
94 /* compute in uV, round to mV */ 94 /* compute in uV, round to mV */
95 val &= 0xff; 95 val &= 0xff;
96 if(((val & 0x7e) == 0xfe) || (!(val & 0x7e))) 96 if (val < 0x02 || val > 0xb2)
97 return 0; 97 return 0;
98 return((1600000 - (val - 2) * 6250 + 500) / 1000); 98 return((1600000 - (val - 2) * 6250 + 500) / 1000);
99 case 24: /* Opteron processor */ 99 case 24: /* Opteron processor */
diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c
index c12ac5abc2bb..253ffaf1568a 100644
--- a/drivers/hwmon/w83793.c
+++ b/drivers/hwmon/w83793.c
@@ -117,6 +117,7 @@ static const u16 W83793_REG_IN[][3] = {
117/* Low Bits of Vcore A/B Vtt Read/High/Low */ 117/* Low Bits of Vcore A/B Vtt Read/High/Low */
118static const u16 W83793_REG_IN_LOW_BITS[] = { 0x1b, 0x68, 0x69 }; 118static const u16 W83793_REG_IN_LOW_BITS[] = { 0x1b, 0x68, 0x69 };
119static u8 scale_in[] = { 2, 2, 2, 16, 16, 16, 8, 24, 24, 16 }; 119static u8 scale_in[] = { 2, 2, 2, 16, 16, 16, 8, 24, 24, 16 };
120static u8 scale_in_add[] = { 0, 0, 0, 0, 0, 0, 0, 150, 150, 0 };
120 121
121#define W83793_REG_FAN(index) (0x23 + 2 * (index)) /* High byte */ 122#define W83793_REG_FAN(index) (0x23 + 2 * (index)) /* High byte */
122#define W83793_REG_FAN_MIN(index) (0x90 + 2 * (index)) /* High byte */ 123#define W83793_REG_FAN_MIN(index) (0x90 + 2 * (index)) /* High byte */
@@ -203,6 +204,8 @@ struct w83793_data {
203 u8 temp_fan_map[6]; /* Temp controls which pwm fan, bit field */ 204 u8 temp_fan_map[6]; /* Temp controls which pwm fan, bit field */
204 205
205 u8 has_pwm; 206 u8 has_pwm;
207 u8 has_temp;
208 u8 has_vid;
206 u8 pwm_enable; /* Register value, each Temp has 1 bit */ 209 u8 pwm_enable; /* Register value, each Temp has 1 bit */
207 u8 pwm_uptime; /* Register value */ 210 u8 pwm_uptime; /* Register value */
208 u8 pwm_downtime; /* Register value */ 211 u8 pwm_downtime; /* Register value */
@@ -500,7 +503,7 @@ store_temp(struct device *dev, struct device_attribute *attr,
500 each has 4 mode:(2 bits) 503 each has 4 mode:(2 bits)
501 0: Stop monitor 504 0: Stop monitor
502 1: Use internal temp sensor(default) 505 1: Use internal temp sensor(default)
503 2: Use sensor in AMD CPU and get result by AMDSI 506 2: Reserved
504 3: Use sensor in Intel CPU and get result by PECI 507 3: Use sensor in Intel CPU and get result by PECI
505 508
506 TR1-TR2 509 TR1-TR2
@@ -509,8 +512,8 @@ store_temp(struct device *dev, struct device_attribute *attr,
509 1: To enable temp sensors monitor 512 1: To enable temp sensors monitor
510*/ 513*/
511 514
512/* 0 disable, 5 AMDSI, 6 PECI */ 515/* 0 disable, 6 PECI */
513static u8 TO_TEMP_MODE[] = { 0, 0, 5, 6 }; 516static u8 TO_TEMP_MODE[] = { 0, 0, 0, 6 };
514 517
515static ssize_t 518static ssize_t
516show_temp_mode(struct device *dev, struct device_attribute *attr, char *buf) 519show_temp_mode(struct device *dev, struct device_attribute *attr, char *buf)
@@ -550,11 +553,10 @@ store_temp_mode(struct device *dev, struct device_attribute *attr,
550 u8 val = simple_strtoul(buf, NULL, 10); 553 u8 val = simple_strtoul(buf, NULL, 10);
551 554
552 /* transform the sysfs interface values into table above */ 555 /* transform the sysfs interface values into table above */
553 if ((val == 5 || val == 6) && (index < 4)) { 556 if ((val == 6) && (index < 4)) {
554 val -= 3; 557 val -= 3;
555 } else if ((val == 3 && index < 4) 558 } else if ((val == 3 && index < 4)
556 || (val == 4 && index >= 4) 559 || (val == 4 && index >= 4)) {
557 || val == 0) {
558 /* transform diode or thermistor into internal enable */ 560 /* transform diode or thermistor into internal enable */
559 val = !!val; 561 val = !!val;
560 } else { 562 } else {
@@ -839,7 +841,9 @@ show_in(struct device *dev, struct device_attribute *attr, char *buf)
839 val <<= 2; 841 val <<= 2;
840 val += (data->in_low_bits[nr] >> (index * 2)) & 0x3; 842 val += (data->in_low_bits[nr] >> (index * 2)) & 0x3;
841 } 843 }
842 return sprintf(buf, "%d\n", val * scale_in[index]); 844 /* voltage inputs 5VDD and 5VSB needs 150mV offset */
845 val = val * scale_in[index] + scale_in_add[index];
846 return sprintf(buf, "%d\n", val);
843} 847}
844 848
845static ssize_t 849static ssize_t
@@ -859,6 +863,10 @@ store_in(struct device *dev, struct device_attribute *attr,
859 scale_in[index] / 2) / scale_in[index]; 863 scale_in[index] / 2) / scale_in[index];
860 mutex_lock(&data->update_lock); 864 mutex_lock(&data->update_lock);
861 if (index > 2) { 865 if (index > 2) {
866 /* fix the limit values of 5VDD and 5VSB to ALARM mechanism */
867 if (1 == nr || 2 == nr) {
868 val -= scale_in_add[index] / scale_in[index];
869 }
862 val = SENSORS_LIMIT(val, 0, 255); 870 val = SENSORS_LIMIT(val, 0, 255);
863 } else { 871 } else {
864 val = SENSORS_LIMIT(val, 0, 0x3FF); 872 val = SENSORS_LIMIT(val, 0, 0x3FF);
@@ -979,12 +987,6 @@ static struct sensor_device_attribute_2 w83793_sensor_attr_2[] = {
979 SENSOR_ATTR_IN(7), 987 SENSOR_ATTR_IN(7),
980 SENSOR_ATTR_IN(8), 988 SENSOR_ATTR_IN(8),
981 SENSOR_ATTR_IN(9), 989 SENSOR_ATTR_IN(9),
982 SENSOR_ATTR_TEMP(1),
983 SENSOR_ATTR_TEMP(2),
984 SENSOR_ATTR_TEMP(3),
985 SENSOR_ATTR_TEMP(4),
986 SENSOR_ATTR_TEMP(5),
987 SENSOR_ATTR_TEMP(6),
988 SENSOR_ATTR_FAN(1), 990 SENSOR_ATTR_FAN(1),
989 SENSOR_ATTR_FAN(2), 991 SENSOR_ATTR_FAN(2),
990 SENSOR_ATTR_FAN(3), 992 SENSOR_ATTR_FAN(3),
@@ -995,6 +997,15 @@ static struct sensor_device_attribute_2 w83793_sensor_attr_2[] = {
995 SENSOR_ATTR_PWM(3), 997 SENSOR_ATTR_PWM(3),
996}; 998};
997 999
1000static struct sensor_device_attribute_2 w83793_temp[] = {
1001 SENSOR_ATTR_TEMP(1),
1002 SENSOR_ATTR_TEMP(2),
1003 SENSOR_ATTR_TEMP(3),
1004 SENSOR_ATTR_TEMP(4),
1005 SENSOR_ATTR_TEMP(5),
1006 SENSOR_ATTR_TEMP(6),
1007};
1008
998/* Fan6-Fan12 */ 1009/* Fan6-Fan12 */
999static struct sensor_device_attribute_2 w83793_left_fan[] = { 1010static struct sensor_device_attribute_2 w83793_left_fan[] = {
1000 SENSOR_ATTR_FAN(6), 1011 SENSOR_ATTR_FAN(6),
@@ -1015,9 +1026,12 @@ static struct sensor_device_attribute_2 w83793_left_pwm[] = {
1015 SENSOR_ATTR_PWM(8), 1026 SENSOR_ATTR_PWM(8),
1016}; 1027};
1017 1028
1018static struct sensor_device_attribute_2 sda_single_files[] = { 1029static struct sensor_device_attribute_2 w83793_vid[] = {
1019 SENSOR_ATTR_2(cpu0_vid, S_IRUGO, show_vid, NULL, NOT_USED, 0), 1030 SENSOR_ATTR_2(cpu0_vid, S_IRUGO, show_vid, NULL, NOT_USED, 0),
1020 SENSOR_ATTR_2(cpu1_vid, S_IRUGO, show_vid, NULL, NOT_USED, 1), 1031 SENSOR_ATTR_2(cpu1_vid, S_IRUGO, show_vid, NULL, NOT_USED, 1),
1032};
1033
1034static struct sensor_device_attribute_2 sda_single_files[] = {
1021 SENSOR_ATTR_2(vrm, S_IWUSR | S_IRUGO, show_vrm, store_vrm, 1035 SENSOR_ATTR_2(vrm, S_IWUSR | S_IRUGO, show_vrm, store_vrm,
1022 NOT_USED, NOT_USED), 1036 NOT_USED, NOT_USED),
1023 SENSOR_ATTR_2(chassis, S_IWUSR | S_IRUGO, show_alarm_beep, 1037 SENSOR_ATTR_2(chassis, S_IWUSR | S_IRUGO, show_alarm_beep,
@@ -1070,11 +1084,17 @@ static int w83793_detach_client(struct i2c_client *client)
1070 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++) 1084 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++)
1071 device_remove_file(dev, &sda_single_files[i].dev_attr); 1085 device_remove_file(dev, &sda_single_files[i].dev_attr);
1072 1086
1087 for (i = 0; i < ARRAY_SIZE(w83793_vid); i++)
1088 device_remove_file(dev, &w83793_vid[i].dev_attr);
1089
1073 for (i = 0; i < ARRAY_SIZE(w83793_left_fan); i++) 1090 for (i = 0; i < ARRAY_SIZE(w83793_left_fan); i++)
1074 device_remove_file(dev, &w83793_left_fan[i].dev_attr); 1091 device_remove_file(dev, &w83793_left_fan[i].dev_attr);
1075 1092
1076 for (i = 0; i < ARRAY_SIZE(w83793_left_pwm); i++) 1093 for (i = 0; i < ARRAY_SIZE(w83793_left_pwm); i++)
1077 device_remove_file(dev, &w83793_left_pwm[i].dev_attr); 1094 device_remove_file(dev, &w83793_left_pwm[i].dev_attr);
1095
1096 for (i = 0; i < ARRAY_SIZE(w83793_temp); i++)
1097 device_remove_file(dev, &w83793_temp[i].dev_attr);
1078 } 1098 }
1079 1099
1080 if ((err = i2c_detach_client(client))) 1100 if ((err = i2c_detach_client(client)))
@@ -1187,6 +1207,7 @@ static int w83793_detect(struct i2c_adapter *adapter, int address, int kind)
1187 struct w83793_data *data; 1207 struct w83793_data *data;
1188 int files_fan = ARRAY_SIZE(w83793_left_fan) / 7; 1208 int files_fan = ARRAY_SIZE(w83793_left_fan) / 7;
1189 int files_pwm = ARRAY_SIZE(w83793_left_pwm) / 5; 1209 int files_pwm = ARRAY_SIZE(w83793_left_pwm) / 5;
1210 int files_temp = ARRAY_SIZE(w83793_temp) / 6;
1190 int err = 0; 1211 int err = 0;
1191 1212
1192 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) { 1213 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) {
@@ -1313,6 +1334,44 @@ static int w83793_detect(struct i2c_adapter *adapter, int address, int kind)
1313 data->has_pwm |= 0x80; 1334 data->has_pwm |= 0x80;
1314 } 1335 }
1315 1336
1337 tmp = w83793_read_value(client, W83793_REG_FANIN_SEL);
1338 if ((tmp & 0x01) && (val & 0x08)) { /* fan 9, second location */
1339 data->has_fan |= 0x100;
1340 }
1341 if ((tmp & 0x02) && (val & 0x10)) { /* fan 10, second location */
1342 data->has_fan |= 0x200;
1343 }
1344 if ((tmp & 0x04) && (val & 0x20)) { /* fan 11, second location */
1345 data->has_fan |= 0x400;
1346 }
1347 if ((tmp & 0x08) && (val & 0x40)) { /* fan 12, second location */
1348 data->has_fan |= 0x800;
1349 }
1350
1351 /* check the temp1-6 mode, ignore former AMDSI selected inputs */
1352 tmp = w83793_read_value(client,W83793_REG_TEMP_MODE[0]);
1353 if (tmp & 0x01)
1354 data->has_temp |= 0x01;
1355 if (tmp & 0x04)
1356 data->has_temp |= 0x02;
1357 if (tmp & 0x10)
1358 data->has_temp |= 0x04;
1359 if (tmp & 0x40)
1360 data->has_temp |= 0x08;
1361
1362 tmp = w83793_read_value(client,W83793_REG_TEMP_MODE[1]);
1363 if (tmp & 0x01)
1364 data->has_temp |= 0x10;
1365 if (tmp & 0x02)
1366 data->has_temp |= 0x20;
1367
1368 /* Detect the VID usage and ignore unused input */
1369 tmp = w83793_read_value(client, W83793_REG_MFC);
1370 if (!(tmp & 0x29))
1371 data->has_vid |= 0x1; /* has VIDA */
1372 if (tmp & 0x80)
1373 data->has_vid |= 0x2; /* has VIDB */
1374
1316 /* Register sysfs hooks */ 1375 /* Register sysfs hooks */
1317 for (i = 0; i < ARRAY_SIZE(w83793_sensor_attr_2); i++) { 1376 for (i = 0; i < ARRAY_SIZE(w83793_sensor_attr_2); i++) {
1318 err = device_create_file(dev, 1377 err = device_create_file(dev,
@@ -1321,6 +1380,14 @@ static int w83793_detect(struct i2c_adapter *adapter, int address, int kind)
1321 goto exit_remove; 1380 goto exit_remove;
1322 } 1381 }
1323 1382
1383 for (i = 0; i < ARRAY_SIZE(w83793_vid); i++) {
1384 if (!(data->has_vid & (1 << i)))
1385 continue;
1386 err = device_create_file(dev, &w83793_vid[i].dev_attr);
1387 if (err)
1388 goto exit_remove;
1389 }
1390
1324 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++) { 1391 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++) {
1325 err = device_create_file(dev, &sda_single_files[i].dev_attr); 1392 err = device_create_file(dev, &sda_single_files[i].dev_attr);
1326 if (err) 1393 if (err)
@@ -1328,6 +1395,19 @@ static int w83793_detect(struct i2c_adapter *adapter, int address, int kind)
1328 1395
1329 } 1396 }
1330 1397
1398 for (i = 0; i < 6; i++) {
1399 int j;
1400 if (!(data->has_temp & (1 << i)))
1401 continue;
1402 for (j = 0; j < files_temp; j++) {
1403 err = device_create_file(dev,
1404 &w83793_temp[(i) * files_temp
1405 + j].dev_attr);
1406 if (err)
1407 goto exit_remove;
1408 }
1409 }
1410
1331 for (i = 5; i < 12; i++) { 1411 for (i = 5; i < 12; i++) {
1332 int j; 1412 int j;
1333 if (!(data->has_fan & (1 << i))) 1413 if (!(data->has_fan & (1 << i)))
@@ -1371,12 +1451,18 @@ exit_remove:
1371 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++) 1451 for (i = 0; i < ARRAY_SIZE(sda_single_files); i++)
1372 device_remove_file(dev, &sda_single_files[i].dev_attr); 1452 device_remove_file(dev, &sda_single_files[i].dev_attr);
1373 1453
1454 for (i = 0; i < ARRAY_SIZE(w83793_vid); i++)
1455 device_remove_file(dev, &w83793_vid[i].dev_attr);
1456
1374 for (i = 0; i < ARRAY_SIZE(w83793_left_fan); i++) 1457 for (i = 0; i < ARRAY_SIZE(w83793_left_fan); i++)
1375 device_remove_file(dev, &w83793_left_fan[i].dev_attr); 1458 device_remove_file(dev, &w83793_left_fan[i].dev_attr);
1376 1459
1377 for (i = 0; i < ARRAY_SIZE(w83793_left_pwm); i++) 1460 for (i = 0; i < ARRAY_SIZE(w83793_left_pwm); i++)
1378 device_remove_file(dev, &w83793_left_pwm[i].dev_attr); 1461 device_remove_file(dev, &w83793_left_pwm[i].dev_attr);
1379 1462
1463 for (i = 0; i < ARRAY_SIZE(w83793_temp); i++)
1464 device_remove_file(dev, &w83793_temp[i].dev_attr);
1465
1380 if (data->lm75[0] != NULL) { 1466 if (data->lm75[0] != NULL) {
1381 i2c_detach_client(data->lm75[0]); 1467 i2c_detach_client(data->lm75[0]);
1382 kfree(data->lm75[0]); 1468 kfree(data->lm75[0]);
@@ -1428,6 +1514,8 @@ static void w83793_update_nonvolatile(struct device *dev)
1428 } 1514 }
1429 1515
1430 for (i = 0; i < ARRAY_SIZE(data->temp_fan_map); i++) { 1516 for (i = 0; i < ARRAY_SIZE(data->temp_fan_map); i++) {
1517 if (!(data->has_temp & (1 << i)))
1518 continue;
1431 data->temp_fan_map[i] = 1519 data->temp_fan_map[i] =
1432 w83793_read_value(client, W83793_REG_TEMP_FAN_MAP(i)); 1520 w83793_read_value(client, W83793_REG_TEMP_FAN_MAP(i));
1433 for (j = 1; j < 5; j++) { 1521 for (j = 1; j < 5; j++) {
@@ -1510,9 +1598,12 @@ static struct w83793_data *w83793_update_device(struct device *dev)
1510 w83793_read_value(client, W83793_REG_FAN(i) + 1); 1598 w83793_read_value(client, W83793_REG_FAN(i) + 1);
1511 } 1599 }
1512 1600
1513 for (i = 0; i < ARRAY_SIZE(data->temp); i++) 1601 for (i = 0; i < ARRAY_SIZE(data->temp); i++) {
1602 if (!(data->has_temp & (1 << i)))
1603 continue;
1514 data->temp[i][TEMP_READ] = 1604 data->temp[i][TEMP_READ] =
1515 w83793_read_value(client, W83793_REG_TEMP[i][TEMP_READ]); 1605 w83793_read_value(client, W83793_REG_TEMP[i][TEMP_READ]);
1606 }
1516 1607
1517 data->temp_low_bits = 1608 data->temp_low_bits =
1518 w83793_read_value(client, W83793_REG_TEMP_LOW_BITS); 1609 w83793_read_value(client, W83793_REG_TEMP_LOW_BITS);
@@ -1527,8 +1618,10 @@ static struct w83793_data *w83793_update_device(struct device *dev)
1527 for (i = 0; i < ARRAY_SIZE(data->alarms); i++) 1618 for (i = 0; i < ARRAY_SIZE(data->alarms); i++)
1528 data->alarms[i] = 1619 data->alarms[i] =
1529 w83793_read_value(client, W83793_REG_ALARM(i)); 1620 w83793_read_value(client, W83793_REG_ALARM(i));
1530 data->vid[0] = w83793_read_value(client, W83793_REG_VID_INA); 1621 if (data->has_vid & 0x01)
1531 data->vid[1] = w83793_read_value(client, W83793_REG_VID_INB); 1622 data->vid[0] = w83793_read_value(client, W83793_REG_VID_INA);
1623 if (data->has_vid & 0x02)
1624 data->vid[1] = w83793_read_value(client, W83793_REG_VID_INB);
1532 w83793_update_nonvolatile(dev); 1625 w83793_update_nonvolatile(dev);
1533 data->last_updated = jiffies; 1626 data->last_updated = jiffies;
1534 data->valid = 1; 1627 data->valid = 1;
diff --git a/drivers/ide/ide-pnp.c b/drivers/ide/ide-pnp.c
index df7d1504f84e..98410ca044cf 100644
--- a/drivers/ide/ide-pnp.c
+++ b/drivers/ide/ide-pnp.c
@@ -73,3 +73,8 @@ void __init pnpide_init(void)
73{ 73{
74 pnp_register_driver(&idepnp_driver); 74 pnp_register_driver(&idepnp_driver);
75} 75}
76
77void __exit pnpide_exit(void)
78{
79 pnp_unregister_driver(&idepnp_driver);
80}
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index 16890769dca6..6c9bd5165bdb 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -1781,8 +1781,9 @@ done:
1781 return 1; 1781 return 1;
1782} 1782}
1783 1783
1784extern void pnpide_init(void); 1784extern void __init pnpide_init(void);
1785extern void h8300_ide_init(void); 1785extern void __exit pnpide_exit(void);
1786extern void __init h8300_ide_init(void);
1786 1787
1787/* 1788/*
1788 * probe_for_hwifs() finds/initializes "known" IDE interfaces 1789 * probe_for_hwifs() finds/initializes "known" IDE interfaces
@@ -2087,13 +2088,17 @@ int __init init_module (void)
2087 return ide_init(); 2088 return ide_init();
2088} 2089}
2089 2090
2090void cleanup_module (void) 2091void __exit cleanup_module (void)
2091{ 2092{
2092 int index; 2093 int index;
2093 2094
2094 for (index = 0; index < MAX_HWIFS; ++index) 2095 for (index = 0; index < MAX_HWIFS; ++index)
2095 ide_unregister(index); 2096 ide_unregister(index);
2096 2097
2098#ifdef CONFIG_BLK_DEV_IDEPNP
2099 pnpide_exit();
2100#endif
2101
2097#ifdef CONFIG_PROC_FS 2102#ifdef CONFIG_PROC_FS
2098 proc_ide_destroy(); 2103 proc_ide_destroy();
2099#endif 2104#endif
diff --git a/drivers/ide/pci/aec62xx.c b/drivers/ide/pci/aec62xx.c
index f286079d233f..d261bfbad222 100644
--- a/drivers/ide/pci/aec62xx.c
+++ b/drivers/ide/pci/aec62xx.c
@@ -441,7 +441,7 @@ static struct pci_driver driver = {
441 .probe = aec62xx_init_one, 441 .probe = aec62xx_init_one,
442}; 442};
443 443
444static int aec62xx_ide_init(void) 444static int __init aec62xx_ide_init(void)
445{ 445{
446 return ide_pci_register_driver(&driver); 446 return ide_pci_register_driver(&driver);
447} 447}
diff --git a/drivers/ide/pci/alim15x3.c b/drivers/ide/pci/alim15x3.c
index 89109be5162c..68df77ec502b 100644
--- a/drivers/ide/pci/alim15x3.c
+++ b/drivers/ide/pci/alim15x3.c
@@ -907,7 +907,7 @@ static struct pci_driver driver = {
907 .probe = alim15x3_init_one, 907 .probe = alim15x3_init_one,
908}; 908};
909 909
910static int ali15x3_ide_init(void) 910static int __init ali15x3_ide_init(void)
911{ 911{
912 return ide_pci_register_driver(&driver); 912 return ide_pci_register_driver(&driver);
913} 913}
diff --git a/drivers/ide/pci/amd74xx.c b/drivers/ide/pci/amd74xx.c
index 753fe0e21456..a4336995a410 100644
--- a/drivers/ide/pci/amd74xx.c
+++ b/drivers/ide/pci/amd74xx.c
@@ -544,7 +544,7 @@ static struct pci_driver driver = {
544 .probe = amd74xx_probe, 544 .probe = amd74xx_probe,
545}; 545};
546 546
547static int amd74xx_ide_init(void) 547static int __init amd74xx_ide_init(void)
548{ 548{
549 return ide_pci_register_driver(&driver); 549 return ide_pci_register_driver(&driver);
550} 550}
diff --git a/drivers/ide/pci/atiixp.c b/drivers/ide/pci/atiixp.c
index 524e65de4398..982ac31fa995 100644
--- a/drivers/ide/pci/atiixp.c
+++ b/drivers/ide/pci/atiixp.c
@@ -291,8 +291,12 @@ fast_ata_pio:
291 291
292static void __devinit init_hwif_atiixp(ide_hwif_t *hwif) 292static void __devinit init_hwif_atiixp(ide_hwif_t *hwif)
293{ 293{
294 u8 udma_mode = 0;
295 u8 ch = hwif->channel;
296 struct pci_dev *pdev = hwif->pci_dev;
297
294 if (!hwif->irq) 298 if (!hwif->irq)
295 hwif->irq = hwif->channel ? 15 : 14; 299 hwif->irq = ch ? 15 : 14;
296 300
297 hwif->autodma = 0; 301 hwif->autodma = 0;
298 hwif->tuneproc = &atiixp_tuneproc; 302 hwif->tuneproc = &atiixp_tuneproc;
@@ -308,8 +312,12 @@ static void __devinit init_hwif_atiixp(ide_hwif_t *hwif)
308 hwif->mwdma_mask = 0x06; 312 hwif->mwdma_mask = 0x06;
309 hwif->swdma_mask = 0x04; 313 hwif->swdma_mask = 0x04;
310 314
311 /* FIXME: proper cable detection needed */ 315 pci_read_config_byte(pdev, ATIIXP_IDE_UDMA_MODE + ch, &udma_mode);
312 hwif->udma_four = 1; 316 if ((udma_mode & 0x07) >= 0x04 || (udma_mode & 0x70) >= 0x40)
317 hwif->udma_four = 1;
318 else
319 hwif->udma_four = 0;
320
313 hwif->ide_dma_host_on = &atiixp_ide_dma_host_on; 321 hwif->ide_dma_host_on = &atiixp_ide_dma_host_on;
314 hwif->ide_dma_host_off = &atiixp_ide_dma_host_off; 322 hwif->ide_dma_host_off = &atiixp_ide_dma_host_off;
315 hwif->ide_dma_check = &atiixp_dma_check; 323 hwif->ide_dma_check = &atiixp_dma_check;
@@ -320,19 +328,6 @@ static void __devinit init_hwif_atiixp(ide_hwif_t *hwif)
320 hwif->drives[0].autodma = hwif->autodma; 328 hwif->drives[0].autodma = hwif->autodma;
321} 329}
322 330
323static void __devinit init_hwif_sb600_legacy(ide_hwif_t *hwif)
324{
325
326 hwif->atapi_dma = 1;
327 hwif->ultra_mask = 0x7f;
328 hwif->mwdma_mask = 0x07;
329 hwif->swdma_mask = 0x07;
330
331 if (!noautodma)
332 hwif->autodma = 1;
333 hwif->drives[0].autodma = hwif->autodma;
334 hwif->drives[1].autodma = hwif->autodma;
335}
336 331
337static ide_pci_device_t atiixp_pci_info[] __devinitdata = { 332static ide_pci_device_t atiixp_pci_info[] __devinitdata = {
338 { /* 0 */ 333 { /* 0 */
@@ -343,12 +338,13 @@ static ide_pci_device_t atiixp_pci_info[] __devinitdata = {
343 .enablebits = {{0x48,0x01,0x00}, {0x48,0x08,0x00}}, 338 .enablebits = {{0x48,0x01,0x00}, {0x48,0x08,0x00}},
344 .bootable = ON_BOARD, 339 .bootable = ON_BOARD,
345 },{ /* 1 */ 340 },{ /* 1 */
346 .name = "ATI SB600 SATA Legacy IDE", 341 .name = "SB600_PATA",
347 .init_hwif = init_hwif_sb600_legacy, 342 .init_hwif = init_hwif_atiixp,
348 .channels = 2, 343 .channels = 1,
349 .autodma = AUTODMA, 344 .autodma = AUTODMA,
350 .bootable = ON_BOARD, 345 .enablebits = {{0x48,0x01,0x00}, {0x00,0x00,0x00}},
351 } 346 .bootable = ON_BOARD,
347 },
352}; 348};
353 349
354/** 350/**
@@ -369,7 +365,7 @@ static struct pci_device_id atiixp_pci_tbl[] = {
369 { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP200_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 365 { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP200_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
370 { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP300_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 366 { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP300_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
371 { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 367 { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
372 { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 368 { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
373 { 0, }, 369 { 0, },
374}; 370};
375MODULE_DEVICE_TABLE(pci, atiixp_pci_tbl); 371MODULE_DEVICE_TABLE(pci, atiixp_pci_tbl);
@@ -380,7 +376,7 @@ static struct pci_driver driver = {
380 .probe = atiixp_init_one, 376 .probe = atiixp_init_one,
381}; 377};
382 378
383static int atiixp_ide_init(void) 379static int __init atiixp_ide_init(void)
384{ 380{
385 return ide_pci_register_driver(&driver); 381 return ide_pci_register_driver(&driver);
386} 382}
diff --git a/drivers/ide/pci/cmd64x.c b/drivers/ide/pci/cmd64x.c
index 20c32716bbc4..aee947e8fc38 100644
--- a/drivers/ide/pci/cmd64x.c
+++ b/drivers/ide/pci/cmd64x.c
@@ -793,7 +793,7 @@ static struct pci_driver driver = {
793 .probe = cmd64x_init_one, 793 .probe = cmd64x_init_one,
794}; 794};
795 795
796static int cmd64x_ide_init(void) 796static int __init cmd64x_ide_init(void)
797{ 797{
798 return ide_pci_register_driver(&driver); 798 return ide_pci_register_driver(&driver);
799} 799}
diff --git a/drivers/ide/pci/cs5520.c b/drivers/ide/pci/cs5520.c
index 079f7c86726b..ba6786aabf3b 100644
--- a/drivers/ide/pci/cs5520.c
+++ b/drivers/ide/pci/cs5520.c
@@ -260,7 +260,7 @@ static struct pci_driver driver = {
260 .probe = cs5520_init_one, 260 .probe = cs5520_init_one,
261}; 261};
262 262
263static int cs5520_ide_init(void) 263static int __init cs5520_ide_init(void)
264{ 264{
265 return ide_pci_register_driver(&driver); 265 return ide_pci_register_driver(&driver);
266} 266}
diff --git a/drivers/ide/pci/cs5530.c b/drivers/ide/pci/cs5530.c
index ae405fa32236..9bf5fdfc5b1f 100644
--- a/drivers/ide/pci/cs5530.c
+++ b/drivers/ide/pci/cs5530.c
@@ -374,7 +374,7 @@ static struct pci_driver driver = {
374 .probe = cs5530_init_one, 374 .probe = cs5530_init_one,
375}; 375};
376 376
377static int cs5530_ide_init(void) 377static int __init cs5530_ide_init(void)
378{ 378{
379 return ide_pci_register_driver(&driver); 379 return ide_pci_register_driver(&driver);
380} 380}
diff --git a/drivers/ide/pci/cy82c693.c b/drivers/ide/pci/cy82c693.c
index 64330c459bd4..9eafcbf444f4 100644
--- a/drivers/ide/pci/cy82c693.c
+++ b/drivers/ide/pci/cy82c693.c
@@ -519,7 +519,7 @@ static struct pci_driver driver = {
519 .probe = cy82c693_init_one, 519 .probe = cy82c693_init_one,
520}; 520};
521 521
522static int cy82c693_ide_init(void) 522static int __init cy82c693_ide_init(void)
523{ 523{
524 return ide_pci_register_driver(&driver); 524 return ide_pci_register_driver(&driver);
525} 525}
diff --git a/drivers/ide/pci/generic.c b/drivers/ide/pci/generic.c
index 9f306880491a..b408c6c517ea 100644
--- a/drivers/ide/pci/generic.c
+++ b/drivers/ide/pci/generic.c
@@ -185,36 +185,6 @@ static ide_pci_device_t generic_chipsets[] __devinitdata = {
185 .channels = 2, 185 .channels = 2,
186 .autodma = AUTODMA, 186 .autodma = AUTODMA,
187 .bootable = OFF_BOARD, 187 .bootable = OFF_BOARD,
188 },{ /* 15 */
189 .name = "JMB361",
190 .init_hwif = init_hwif_generic,
191 .channels = 2,
192 .autodma = AUTODMA,
193 .bootable = OFF_BOARD,
194 },{ /* 16 */
195 .name = "JMB363",
196 .init_hwif = init_hwif_generic,
197 .channels = 2,
198 .autodma = AUTODMA,
199 .bootable = OFF_BOARD,
200 },{ /* 17 */
201 .name = "JMB365",
202 .init_hwif = init_hwif_generic,
203 .channels = 2,
204 .autodma = AUTODMA,
205 .bootable = OFF_BOARD,
206 },{ /* 18 */
207 .name = "JMB366",
208 .init_hwif = init_hwif_generic,
209 .channels = 2,
210 .autodma = AUTODMA,
211 .bootable = OFF_BOARD,
212 },{ /* 19 */
213 .name = "JMB368",
214 .init_hwif = init_hwif_generic,
215 .channels = 2,
216 .autodma = AUTODMA,
217 .bootable = OFF_BOARD,
218 } 188 }
219}; 189};
220 190
@@ -281,11 +251,6 @@ static struct pci_device_id generic_pci_tbl[] = {
281 { PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 12}, 251 { PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 12},
282 { PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 13}, 252 { PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 13},
283 { PCI_VENDOR_ID_NETCELL,PCI_DEVICE_ID_REVOLUTION, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 14}, 253 { PCI_VENDOR_ID_NETCELL,PCI_DEVICE_ID_REVOLUTION, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 14},
284 { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB361, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 15},
285 { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB363, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 16},
286 { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB365, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 17},
287 { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB366, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 18},
288 { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB368, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 19},
289 /* Must come last. If you add entries adjust this table appropriately and the init_one code */ 254 /* Must come last. If you add entries adjust this table appropriately and the init_one code */
290 { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE << 8, 0xFFFFFF00UL, 0}, 255 { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE << 8, 0xFFFFFF00UL, 0},
291 { 0, }, 256 { 0, },
@@ -298,7 +263,7 @@ static struct pci_driver driver = {
298 .probe = generic_init_one, 263 .probe = generic_init_one,
299}; 264};
300 265
301static int generic_ide_init(void) 266static int __init generic_ide_init(void)
302{ 267{
303 return ide_pci_register_driver(&driver); 268 return ide_pci_register_driver(&driver);
304} 269}
diff --git a/drivers/ide/pci/hpt34x.c b/drivers/ide/pci/hpt34x.c
index b46cb042290a..ce7b08f08a09 100644
--- a/drivers/ide/pci/hpt34x.c
+++ b/drivers/ide/pci/hpt34x.c
@@ -265,7 +265,7 @@ static struct pci_driver driver = {
265 .probe = hpt34x_init_one, 265 .probe = hpt34x_init_one,
266}; 266};
267 267
268static int hpt34x_ide_init(void) 268static int __init hpt34x_ide_init(void)
269{ 269{
270 return ide_pci_register_driver(&driver); 270 return ide_pci_register_driver(&driver);
271} 271}
diff --git a/drivers/ide/pci/hpt366.c b/drivers/ide/pci/hpt366.c
index 08119da06d54..b486442dd5d7 100644
--- a/drivers/ide/pci/hpt366.c
+++ b/drivers/ide/pci/hpt366.c
@@ -1613,7 +1613,7 @@ static struct pci_driver driver = {
1613 .probe = hpt366_init_one, 1613 .probe = hpt366_init_one,
1614}; 1614};
1615 1615
1616static int hpt366_ide_init(void) 1616static int __init hpt366_ide_init(void)
1617{ 1617{
1618 return ide_pci_register_driver(&driver); 1618 return ide_pci_register_driver(&driver);
1619} 1619}
diff --git a/drivers/ide/pci/jmicron.c b/drivers/ide/pci/jmicron.c
index c1cec236ecf0..f07bbbed1778 100644
--- a/drivers/ide/pci/jmicron.c
+++ b/drivers/ide/pci/jmicron.c
@@ -86,15 +86,16 @@ static int __devinit ata66_jmicron(ide_hwif_t *hwif)
86 { 86 {
87 case PORT_PATA0: 87 case PORT_PATA0:
88 if (control & (1 << 3)) /* 40/80 pin primary */ 88 if (control & (1 << 3)) /* 40/80 pin primary */
89 return 1; 89 return 0;
90 return 0; 90 return 1;
91 case PORT_PATA1: 91 case PORT_PATA1:
92 if (control5 & (1 << 19)) /* 40/80 pin secondary */ 92 if (control5 & (1 << 19)) /* 40/80 pin secondary */
93 return 0; 93 return 0;
94 return 1; 94 return 1;
95 case PORT_SATA: 95 case PORT_SATA:
96 return 1; 96 break;
97 } 97 }
98 return 1; /* Avoid bogus "control reaches end of non-void function" */
98} 99}
99 100
100static void jmicron_tuneproc (ide_drive_t *drive, byte mode_wanted) 101static void jmicron_tuneproc (ide_drive_t *drive, byte mode_wanted)
@@ -240,11 +241,11 @@ static int __devinit jmicron_init_one(struct pci_dev *dev, const struct pci_devi
240} 241}
241 242
242static struct pci_device_id jmicron_pci_tbl[] = { 243static struct pci_device_id jmicron_pci_tbl[] = {
243 { PCI_DEVICE(PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB361), 0}, 244 { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB361, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
244 { PCI_DEVICE(PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB363), 1}, 245 { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB363, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
245 { PCI_DEVICE(PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB365), 2}, 246 { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB365, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
246 { PCI_DEVICE(PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB366), 3}, 247 { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB366, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3},
247 { PCI_DEVICE(PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB368), 4}, 248 { PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB368, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4},
248 { 0, }, 249 { 0, },
249}; 250};
250 251
diff --git a/drivers/ide/pci/ns87415.c b/drivers/ide/pci/ns87415.c
index d95714bcee4e..8aaea4ea5549 100644
--- a/drivers/ide/pci/ns87415.c
+++ b/drivers/ide/pci/ns87415.c
@@ -302,7 +302,7 @@ static struct pci_driver driver = {
302 .probe = ns87415_init_one, 302 .probe = ns87415_init_one,
303}; 303};
304 304
305static int ns87415_ide_init(void) 305static int __init ns87415_ide_init(void)
306{ 306{
307 return ide_pci_register_driver(&driver); 307 return ide_pci_register_driver(&driver);
308} 308}
diff --git a/drivers/ide/pci/opti621.c b/drivers/ide/pci/opti621.c
index 7a7c2ef78ac2..22bbf613f948 100644
--- a/drivers/ide/pci/opti621.c
+++ b/drivers/ide/pci/opti621.c
@@ -382,7 +382,7 @@ static struct pci_driver driver = {
382 .probe = opti621_init_one, 382 .probe = opti621_init_one,
383}; 383};
384 384
385static int opti621_ide_init(void) 385static int __init opti621_ide_init(void)
386{ 386{
387 return ide_pci_register_driver(&driver); 387 return ide_pci_register_driver(&driver);
388} 388}
diff --git a/drivers/ide/pci/pdc202xx_new.c b/drivers/ide/pci/pdc202xx_new.c
index 7cb48576e479..77a9aaa7dab9 100644
--- a/drivers/ide/pci/pdc202xx_new.c
+++ b/drivers/ide/pci/pdc202xx_new.c
@@ -756,7 +756,7 @@ static struct pci_driver driver = {
756 .probe = pdc202new_init_one, 756 .probe = pdc202new_init_one,
757}; 757};
758 758
759static int pdc202new_ide_init(void) 759static int __init pdc202new_ide_init(void)
760{ 760{
761 return ide_pci_register_driver(&driver); 761 return ide_pci_register_driver(&driver);
762} 762}
diff --git a/drivers/ide/pci/pdc202xx_old.c b/drivers/ide/pci/pdc202xx_old.c
index 184cdacddeb6..143239c093d5 100644
--- a/drivers/ide/pci/pdc202xx_old.c
+++ b/drivers/ide/pci/pdc202xx_old.c
@@ -719,7 +719,7 @@ static struct pci_driver driver = {
719 .probe = pdc202xx_init_one, 719 .probe = pdc202xx_init_one,
720}; 720};
721 721
722static int pdc202xx_ide_init(void) 722static int __init pdc202xx_ide_init(void)
723{ 723{
724 return ide_pci_register_driver(&driver); 724 return ide_pci_register_driver(&driver);
725} 725}
diff --git a/drivers/ide/pci/rz1000.c b/drivers/ide/pci/rz1000.c
index 5f6950c2d1d1..c1855311052b 100644
--- a/drivers/ide/pci/rz1000.c
+++ b/drivers/ide/pci/rz1000.c
@@ -77,7 +77,7 @@ static struct pci_driver driver = {
77 .probe = rz1000_init_one, 77 .probe = rz1000_init_one,
78}; 78};
79 79
80static int rz1000_ide_init(void) 80static int __init rz1000_ide_init(void)
81{ 81{
82 return ide_pci_register_driver(&driver); 82 return ide_pci_register_driver(&driver);
83} 83}
diff --git a/drivers/ide/pci/sc1200.c b/drivers/ide/pci/sc1200.c
index ff80937d94dd..8d762d323f8b 100644
--- a/drivers/ide/pci/sc1200.c
+++ b/drivers/ide/pci/sc1200.c
@@ -507,7 +507,7 @@ static struct pci_driver driver = {
507#endif 507#endif
508}; 508};
509 509
510static int sc1200_ide_init(void) 510static int __init sc1200_ide_init(void)
511{ 511{
512 return ide_pci_register_driver(&driver); 512 return ide_pci_register_driver(&driver);
513} 513}
diff --git a/drivers/ide/pci/serverworks.c b/drivers/ide/pci/serverworks.c
index 057548d07205..ea9a28a45853 100644
--- a/drivers/ide/pci/serverworks.c
+++ b/drivers/ide/pci/serverworks.c
@@ -666,7 +666,7 @@ static struct pci_driver driver = {
666 .probe = svwks_init_one, 666 .probe = svwks_init_one,
667}; 667};
668 668
669static int svwks_ide_init(void) 669static int __init svwks_ide_init(void)
670{ 670{
671 return ide_pci_register_driver(&driver); 671 return ide_pci_register_driver(&driver);
672} 672}
diff --git a/drivers/ide/pci/sgiioc4.c b/drivers/ide/pci/sgiioc4.c
index cfad09accf52..b0bf01809279 100644
--- a/drivers/ide/pci/sgiioc4.c
+++ b/drivers/ide/pci/sgiioc4.c
@@ -762,8 +762,7 @@ static struct ioc4_submodule ioc4_ide_submodule = {
762/* .is_remove = ioc4_ide_remove_one, */ 762/* .is_remove = ioc4_ide_remove_one, */
763}; 763};
764 764
765static int __devinit 765static int __init ioc4_ide_init(void)
766ioc4_ide_init(void)
767{ 766{
768 return ioc4_register_submodule(&ioc4_ide_submodule); 767 return ioc4_register_submodule(&ioc4_ide_submodule);
769} 768}
diff --git a/drivers/ide/pci/siimage.c b/drivers/ide/pci/siimage.c
index 697f566fb90a..4ff89c7d990a 100644
--- a/drivers/ide/pci/siimage.c
+++ b/drivers/ide/pci/siimage.c
@@ -1096,7 +1096,7 @@ static struct pci_driver driver = {
1096 .probe = siimage_init_one, 1096 .probe = siimage_init_one,
1097}; 1097};
1098 1098
1099static int siimage_ide_init(void) 1099static int __init siimage_ide_init(void)
1100{ 1100{
1101 return ide_pci_register_driver(&driver); 1101 return ide_pci_register_driver(&driver);
1102} 1102}
diff --git a/drivers/ide/pci/sis5513.c b/drivers/ide/pci/sis5513.c
index 6b313139b5e4..1afff659ab55 100644
--- a/drivers/ide/pci/sis5513.c
+++ b/drivers/ide/pci/sis5513.c
@@ -968,7 +968,7 @@ static struct pci_driver driver = {
968 .probe = sis5513_init_one, 968 .probe = sis5513_init_one,
969}; 969};
970 970
971static int sis5513_ide_init(void) 971static int __init sis5513_ide_init(void)
972{ 972{
973 return ide_pci_register_driver(&driver); 973 return ide_pci_register_driver(&driver);
974} 974}
diff --git a/drivers/ide/pci/sl82c105.c b/drivers/ide/pci/sl82c105.c
index 5afefe8692fe..170a26199050 100644
--- a/drivers/ide/pci/sl82c105.c
+++ b/drivers/ide/pci/sl82c105.c
@@ -492,7 +492,7 @@ static struct pci_driver driver = {
492 .probe = sl82c105_init_one, 492 .probe = sl82c105_init_one,
493}; 493};
494 494
495static int sl82c105_ide_init(void) 495static int __init sl82c105_ide_init(void)
496{ 496{
497 return ide_pci_register_driver(&driver); 497 return ide_pci_register_driver(&driver);
498} 498}
diff --git a/drivers/ide/pci/slc90e66.c b/drivers/ide/pci/slc90e66.c
index 9be7e49cba0e..90e79c0844d2 100644
--- a/drivers/ide/pci/slc90e66.c
+++ b/drivers/ide/pci/slc90e66.c
@@ -253,7 +253,7 @@ static struct pci_driver driver = {
253 .probe = slc90e66_init_one, 253 .probe = slc90e66_init_one,
254}; 254};
255 255
256static int slc90e66_ide_init(void) 256static int __init slc90e66_ide_init(void)
257{ 257{
258 return ide_pci_register_driver(&driver); 258 return ide_pci_register_driver(&driver);
259} 259}
diff --git a/drivers/ide/pci/triflex.c b/drivers/ide/pci/triflex.c
index 56d84931d6de..b13cce1fd1a6 100644
--- a/drivers/ide/pci/triflex.c
+++ b/drivers/ide/pci/triflex.c
@@ -173,7 +173,7 @@ static struct pci_driver driver = {
173 .probe = triflex_init_one, 173 .probe = triflex_init_one,
174}; 174};
175 175
176static int triflex_ide_init(void) 176static int __init triflex_ide_init(void)
177{ 177{
178 return ide_pci_register_driver(&driver); 178 return ide_pci_register_driver(&driver);
179} 179}
diff --git a/drivers/ide/pci/trm290.c b/drivers/ide/pci/trm290.c
index 2a282529bfc1..174b88c4780e 100644
--- a/drivers/ide/pci/trm290.c
+++ b/drivers/ide/pci/trm290.c
@@ -355,7 +355,7 @@ static struct pci_driver driver = {
355 .probe = trm290_init_one, 355 .probe = trm290_init_one,
356}; 356};
357 357
358static int trm290_ide_init(void) 358static int __init trm290_ide_init(void)
359{ 359{
360 return ide_pci_register_driver(&driver); 360 return ide_pci_register_driver(&driver);
361} 361}
diff --git a/drivers/ide/pci/via82cxxx.c b/drivers/ide/pci/via82cxxx.c
index 381cc6f101ce..6fb6e50b8231 100644
--- a/drivers/ide/pci/via82cxxx.c
+++ b/drivers/ide/pci/via82cxxx.c
@@ -78,6 +78,8 @@ static struct via_isa_bridge {
78 u8 rev_max; 78 u8 rev_max;
79 u16 flags; 79 u16 flags;
80} via_isa_bridges[] = { 80} via_isa_bridges[] = {
81 { "cx700", PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
82 { "vt8237s", PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
81 { "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, 83 { "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
82 { "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, 84 { "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
83 { "vt8237", PCI_DEVICE_ID_VIA_8237, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, 85 { "vt8237", PCI_DEVICE_ID_VIA_8237, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
@@ -504,6 +506,7 @@ static struct pci_device_id via_pci_tbl[] = {
504 { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 506 { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
505 { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 507 { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
506 { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_6410, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1}, 508 { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_6410, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
509 { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_SATA_EIDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
507 { 0, }, 510 { 0, },
508}; 511};
509MODULE_DEVICE_TABLE(pci, via_pci_tbl); 512MODULE_DEVICE_TABLE(pci, via_pci_tbl);
@@ -514,7 +517,7 @@ static struct pci_driver driver = {
514 .probe = via_init_one, 517 .probe = via_init_one,
515}; 518};
516 519
517static int via_ide_init(void) 520static int __init via_ide_init(void)
518{ 521{
519 return ide_pci_register_driver(&driver); 522 return ide_pci_register_driver(&driver);
520} 523}
diff --git a/drivers/infiniband/hw/ehca/ehca_cq.c b/drivers/infiniband/hw/ehca/ehca_cq.c
index 93995b658d94..6074c897f51c 100644
--- a/drivers/infiniband/hw/ehca/ehca_cq.c
+++ b/drivers/infiniband/hw/ehca/ehca_cq.c
@@ -344,8 +344,11 @@ int ehca_destroy_cq(struct ib_cq *cq)
344 unsigned long flags; 344 unsigned long flags;
345 345
346 spin_lock_irqsave(&ehca_cq_idr_lock, flags); 346 spin_lock_irqsave(&ehca_cq_idr_lock, flags);
347 while (my_cq->nr_callbacks) 347 while (my_cq->nr_callbacks) {
348 spin_unlock_irqrestore(&ehca_cq_idr_lock, flags);
348 yield(); 349 yield();
350 spin_lock_irqsave(&ehca_cq_idr_lock, flags);
351 }
349 352
350 idr_remove(&ehca_cq_idr, my_cq->token); 353 idr_remove(&ehca_cq_idr, my_cq->token);
351 spin_unlock_irqrestore(&ehca_cq_idr_lock, flags); 354 spin_unlock_irqrestore(&ehca_cq_idr_lock, flags);
diff --git a/drivers/infiniband/hw/ehca/ehca_irq.c b/drivers/infiniband/hw/ehca/ehca_irq.c
index e7209afb4250..c069be8cbcb2 100644
--- a/drivers/infiniband/hw/ehca/ehca_irq.c
+++ b/drivers/infiniband/hw/ehca/ehca_irq.c
@@ -440,7 +440,8 @@ void ehca_tasklet_eq(unsigned long data)
440 cq = idr_find(&ehca_cq_idr, token); 440 cq = idr_find(&ehca_cq_idr, token);
441 441
442 if (cq == NULL) { 442 if (cq == NULL) {
443 spin_unlock(&ehca_cq_idr_lock); 443 spin_unlock_irqrestore(&ehca_cq_idr_lock,
444 flags);
444 break; 445 break;
445 } 446 }
446 447
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index cdecbf5911c8..72611fd15103 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -1621,18 +1621,30 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
1621 switch (token) { 1621 switch (token) {
1622 case SRP_OPT_ID_EXT: 1622 case SRP_OPT_ID_EXT:
1623 p = match_strdup(args); 1623 p = match_strdup(args);
1624 if (!p) {
1625 ret = -ENOMEM;
1626 goto out;
1627 }
1624 target->id_ext = cpu_to_be64(simple_strtoull(p, NULL, 16)); 1628 target->id_ext = cpu_to_be64(simple_strtoull(p, NULL, 16));
1625 kfree(p); 1629 kfree(p);
1626 break; 1630 break;
1627 1631
1628 case SRP_OPT_IOC_GUID: 1632 case SRP_OPT_IOC_GUID:
1629 p = match_strdup(args); 1633 p = match_strdup(args);
1634 if (!p) {
1635 ret = -ENOMEM;
1636 goto out;
1637 }
1630 target->ioc_guid = cpu_to_be64(simple_strtoull(p, NULL, 16)); 1638 target->ioc_guid = cpu_to_be64(simple_strtoull(p, NULL, 16));
1631 kfree(p); 1639 kfree(p);
1632 break; 1640 break;
1633 1641
1634 case SRP_OPT_DGID: 1642 case SRP_OPT_DGID:
1635 p = match_strdup(args); 1643 p = match_strdup(args);
1644 if (!p) {
1645 ret = -ENOMEM;
1646 goto out;
1647 }
1636 if (strlen(p) != 32) { 1648 if (strlen(p) != 32) {
1637 printk(KERN_WARNING PFX "bad dest GID parameter '%s'\n", p); 1649 printk(KERN_WARNING PFX "bad dest GID parameter '%s'\n", p);
1638 kfree(p); 1650 kfree(p);
@@ -1656,6 +1668,10 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
1656 1668
1657 case SRP_OPT_SERVICE_ID: 1669 case SRP_OPT_SERVICE_ID:
1658 p = match_strdup(args); 1670 p = match_strdup(args);
1671 if (!p) {
1672 ret = -ENOMEM;
1673 goto out;
1674 }
1659 target->service_id = cpu_to_be64(simple_strtoull(p, NULL, 16)); 1675 target->service_id = cpu_to_be64(simple_strtoull(p, NULL, 16));
1660 kfree(p); 1676 kfree(p);
1661 break; 1677 break;
@@ -1693,6 +1709,10 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
1693 1709
1694 case SRP_OPT_INITIATOR_EXT: 1710 case SRP_OPT_INITIATOR_EXT:
1695 p = match_strdup(args); 1711 p = match_strdup(args);
1712 if (!p) {
1713 ret = -ENOMEM;
1714 goto out;
1715 }
1696 target->initiator_ext = cpu_to_be64(simple_strtoull(p, NULL, 16)); 1716 target->initiator_ext = cpu_to_be64(simple_strtoull(p, NULL, 16));
1697 kfree(p); 1717 kfree(p);
1698 break; 1718 break;
diff --git a/drivers/isdn/gigaset/common.c b/drivers/isdn/gigaset/common.c
index 95eff3b2917a..4f75cce6fdff 100644
--- a/drivers/isdn/gigaset/common.c
+++ b/drivers/isdn/gigaset/common.c
@@ -356,16 +356,17 @@ static struct cardstate *alloc_cs(struct gigaset_driver *drv)
356{ 356{
357 unsigned long flags; 357 unsigned long flags;
358 unsigned i; 358 unsigned i;
359 static struct cardstate *ret = NULL; 359 struct cardstate *ret = NULL;
360 360
361 spin_lock_irqsave(&drv->lock, flags); 361 spin_lock_irqsave(&drv->lock, flags);
362 for (i = 0; i < drv->minors; ++i) { 362 for (i = 0; i < drv->minors; ++i) {
363 if (!(drv->flags[i] & VALID_MINOR)) { 363 if (!(drv->flags[i] & VALID_MINOR)) {
364 drv->flags[i] = VALID_MINOR; 364 if (try_module_get(drv->owner)) {
365 ret = drv->cs + i; 365 drv->flags[i] = VALID_MINOR;
366 } 366 ret = drv->cs + i;
367 if (ret) 367 }
368 break; 368 break;
369 }
369 } 370 }
370 spin_unlock_irqrestore(&drv->lock, flags); 371 spin_unlock_irqrestore(&drv->lock, flags);
371 return ret; 372 return ret;
@@ -376,6 +377,8 @@ static void free_cs(struct cardstate *cs)
376 unsigned long flags; 377 unsigned long flags;
377 struct gigaset_driver *drv = cs->driver; 378 struct gigaset_driver *drv = cs->driver;
378 spin_lock_irqsave(&drv->lock, flags); 379 spin_lock_irqsave(&drv->lock, flags);
380 if (drv->flags[cs->minor_index] & VALID_MINOR)
381 module_put(drv->owner);
379 drv->flags[cs->minor_index] = 0; 382 drv->flags[cs->minor_index] = 0;
380 spin_unlock_irqrestore(&drv->lock, flags); 383 spin_unlock_irqrestore(&drv->lock, flags);
381} 384}
@@ -579,7 +582,7 @@ static struct bc_state *gigaset_initbcs(struct bc_state *bcs,
579 } else if ((bcs->skb = dev_alloc_skb(SBUFSIZE + HW_HDR_LEN)) != NULL) 582 } else if ((bcs->skb = dev_alloc_skb(SBUFSIZE + HW_HDR_LEN)) != NULL)
580 skb_reserve(bcs->skb, HW_HDR_LEN); 583 skb_reserve(bcs->skb, HW_HDR_LEN);
581 else { 584 else {
582 warn("could not allocate skb\n"); 585 warn("could not allocate skb");
583 bcs->inputstate |= INS_skip_frame; 586 bcs->inputstate |= INS_skip_frame;
584 } 587 }
585 588
@@ -632,17 +635,25 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
632 int i; 635 int i;
633 636
634 gig_dbg(DEBUG_INIT, "allocating cs"); 637 gig_dbg(DEBUG_INIT, "allocating cs");
635 cs = alloc_cs(drv); 638 if (!(cs = alloc_cs(drv))) {
636 if (!cs) 639 err("maximum number of devices exceeded");
637 goto error; 640 return NULL;
641 }
642 mutex_init(&cs->mutex);
643 mutex_lock(&cs->mutex);
644
638 gig_dbg(DEBUG_INIT, "allocating bcs[0..%d]", channels - 1); 645 gig_dbg(DEBUG_INIT, "allocating bcs[0..%d]", channels - 1);
639 cs->bcs = kmalloc(channels * sizeof(struct bc_state), GFP_KERNEL); 646 cs->bcs = kmalloc(channels * sizeof(struct bc_state), GFP_KERNEL);
640 if (!cs->bcs) 647 if (!cs->bcs) {
648 err("out of memory");
641 goto error; 649 goto error;
650 }
642 gig_dbg(DEBUG_INIT, "allocating inbuf"); 651 gig_dbg(DEBUG_INIT, "allocating inbuf");
643 cs->inbuf = kmalloc(sizeof(struct inbuf_t), GFP_KERNEL); 652 cs->inbuf = kmalloc(sizeof(struct inbuf_t), GFP_KERNEL);
644 if (!cs->inbuf) 653 if (!cs->inbuf) {
654 err("out of memory");
645 goto error; 655 goto error;
656 }
646 657
647 cs->cs_init = 0; 658 cs->cs_init = 0;
648 cs->channels = channels; 659 cs->channels = channels;
@@ -654,8 +665,6 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
654 spin_lock_init(&cs->ev_lock); 665 spin_lock_init(&cs->ev_lock);
655 cs->ev_tail = 0; 666 cs->ev_tail = 0;
656 cs->ev_head = 0; 667 cs->ev_head = 0;
657 mutex_init(&cs->mutex);
658 mutex_lock(&cs->mutex);
659 668
660 tasklet_init(&cs->event_tasklet, &gigaset_handle_event, 669 tasklet_init(&cs->event_tasklet, &gigaset_handle_event,
661 (unsigned long) cs); 670 (unsigned long) cs);
@@ -684,8 +693,10 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
684 693
685 for (i = 0; i < channels; ++i) { 694 for (i = 0; i < channels; ++i) {
686 gig_dbg(DEBUG_INIT, "setting up bcs[%d].read", i); 695 gig_dbg(DEBUG_INIT, "setting up bcs[%d].read", i);
687 if (!gigaset_initbcs(cs->bcs + i, cs, i)) 696 if (!gigaset_initbcs(cs->bcs + i, cs, i)) {
697 err("could not allocate channel %d data", i);
688 goto error; 698 goto error;
699 }
689 } 700 }
690 701
691 ++cs->cs_init; 702 ++cs->cs_init;
@@ -720,8 +731,10 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
720 make_valid(cs, VALID_ID); 731 make_valid(cs, VALID_ID);
721 ++cs->cs_init; 732 ++cs->cs_init;
722 gig_dbg(DEBUG_INIT, "setting up hw"); 733 gig_dbg(DEBUG_INIT, "setting up hw");
723 if (!cs->ops->initcshw(cs)) 734 if (!cs->ops->initcshw(cs)) {
735 err("could not allocate device specific data");
724 goto error; 736 goto error;
737 }
725 738
726 ++cs->cs_init; 739 ++cs->cs_init;
727 740
@@ -743,8 +756,8 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
743 mutex_unlock(&cs->mutex); 756 mutex_unlock(&cs->mutex);
744 return cs; 757 return cs;
745 758
746error: if (cs) 759error:
747 mutex_unlock(&cs->mutex); 760 mutex_unlock(&cs->mutex);
748 gig_dbg(DEBUG_INIT, "failed"); 761 gig_dbg(DEBUG_INIT, "failed");
749 gigaset_freecs(cs); 762 gigaset_freecs(cs);
750 return NULL; 763 return NULL;
@@ -1040,7 +1053,6 @@ void gigaset_freedriver(struct gigaset_driver *drv)
1040 spin_unlock_irqrestore(&driver_lock, flags); 1053 spin_unlock_irqrestore(&driver_lock, flags);
1041 1054
1042 gigaset_if_freedriver(drv); 1055 gigaset_if_freedriver(drv);
1043 module_put(drv->owner);
1044 1056
1045 kfree(drv->cs); 1057 kfree(drv->cs);
1046 kfree(drv->flags); 1058 kfree(drv->flags);
@@ -1072,10 +1084,6 @@ struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors,
1072 if (!drv) 1084 if (!drv)
1073 return NULL; 1085 return NULL;
1074 1086
1075 if (!try_module_get(owner))
1076 goto out1;
1077
1078 drv->cs = NULL;
1079 drv->have_tty = 0; 1087 drv->have_tty = 0;
1080 drv->minor = minor; 1088 drv->minor = minor;
1081 drv->minors = minors; 1089 drv->minors = minors;
@@ -1087,11 +1095,11 @@ struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors,
1087 1095
1088 drv->cs = kmalloc(minors * sizeof *drv->cs, GFP_KERNEL); 1096 drv->cs = kmalloc(minors * sizeof *drv->cs, GFP_KERNEL);
1089 if (!drv->cs) 1097 if (!drv->cs)
1090 goto out2; 1098 goto error;
1091 1099
1092 drv->flags = kmalloc(minors * sizeof *drv->flags, GFP_KERNEL); 1100 drv->flags = kmalloc(minors * sizeof *drv->flags, GFP_KERNEL);
1093 if (!drv->flags) 1101 if (!drv->flags)
1094 goto out3; 1102 goto error;
1095 1103
1096 for (i = 0; i < minors; ++i) { 1104 for (i = 0; i < minors; ++i) {
1097 drv->flags[i] = 0; 1105 drv->flags[i] = 0;
@@ -1108,11 +1116,8 @@ struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors,
1108 1116
1109 return drv; 1117 return drv;
1110 1118
1111out3: 1119error:
1112 kfree(drv->cs); 1120 kfree(drv->cs);
1113out2:
1114 module_put(owner);
1115out1:
1116 kfree(drv); 1121 kfree(drv);
1117 return NULL; 1122 return NULL;
1118} 1123}
diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
index 91e0c75aca8f..2db1ca4c6800 100644
--- a/drivers/kvm/kvm.h
+++ b/drivers/kvm/kvm.h
@@ -242,6 +242,7 @@ struct kvm_vcpu {
242 u64 pdptrs[4]; /* pae */ 242 u64 pdptrs[4]; /* pae */
243 u64 shadow_efer; 243 u64 shadow_efer;
244 u64 apic_base; 244 u64 apic_base;
245 u64 ia32_misc_enable_msr;
245 int nmsrs; 246 int nmsrs;
246 struct vmx_msr_entry *guest_msrs; 247 struct vmx_msr_entry *guest_msrs;
247 struct vmx_msr_entry *host_msrs; 248 struct vmx_msr_entry *host_msrs;
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index 67c1154960f0..b10972ed0c9f 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -272,7 +272,9 @@ static void kvm_free_physmem(struct kvm *kvm)
272 272
273static void kvm_free_vcpu(struct kvm_vcpu *vcpu) 273static void kvm_free_vcpu(struct kvm_vcpu *vcpu)
274{ 274{
275 vcpu_load(vcpu->kvm, vcpu_slot(vcpu));
275 kvm_mmu_destroy(vcpu); 276 kvm_mmu_destroy(vcpu);
277 vcpu_put(vcpu);
276 kvm_arch_ops->vcpu_free(vcpu); 278 kvm_arch_ops->vcpu_free(vcpu);
277} 279}
278 280
@@ -1224,6 +1226,9 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata)
1224 case MSR_IA32_APICBASE: 1226 case MSR_IA32_APICBASE:
1225 data = vcpu->apic_base; 1227 data = vcpu->apic_base;
1226 break; 1228 break;
1229 case MSR_IA32_MISC_ENABLE:
1230 data = vcpu->ia32_misc_enable_msr;
1231 break;
1227#ifdef CONFIG_X86_64 1232#ifdef CONFIG_X86_64
1228 case MSR_EFER: 1233 case MSR_EFER:
1229 data = vcpu->shadow_efer; 1234 data = vcpu->shadow_efer;
@@ -1295,6 +1300,9 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
1295 case MSR_IA32_APICBASE: 1300 case MSR_IA32_APICBASE:
1296 vcpu->apic_base = data; 1301 vcpu->apic_base = data;
1297 break; 1302 break;
1303 case MSR_IA32_MISC_ENABLE:
1304 vcpu->ia32_misc_enable_msr = data;
1305 break;
1298 default: 1306 default:
1299 printk(KERN_ERR "kvm: unhandled wrmsr: 0x%x\n", msr); 1307 printk(KERN_ERR "kvm: unhandled wrmsr: 0x%x\n", msr);
1300 return 1; 1308 return 1;
@@ -1598,6 +1606,10 @@ static u32 msrs_to_save[] = {
1598 1606
1599static unsigned num_msrs_to_save; 1607static unsigned num_msrs_to_save;
1600 1608
1609static u32 emulated_msrs[] = {
1610 MSR_IA32_MISC_ENABLE,
1611};
1612
1601static __init void kvm_init_msr_list(void) 1613static __init void kvm_init_msr_list(void)
1602{ 1614{
1603 u32 dummy[2]; 1615 u32 dummy[2];
@@ -1923,7 +1935,7 @@ static long kvm_dev_ioctl(struct file *filp,
1923 if (copy_from_user(&msr_list, user_msr_list, sizeof msr_list)) 1935 if (copy_from_user(&msr_list, user_msr_list, sizeof msr_list))
1924 goto out; 1936 goto out;
1925 n = msr_list.nmsrs; 1937 n = msr_list.nmsrs;
1926 msr_list.nmsrs = num_msrs_to_save; 1938 msr_list.nmsrs = num_msrs_to_save + ARRAY_SIZE(emulated_msrs);
1927 if (copy_to_user(user_msr_list, &msr_list, sizeof msr_list)) 1939 if (copy_to_user(user_msr_list, &msr_list, sizeof msr_list))
1928 goto out; 1940 goto out;
1929 r = -E2BIG; 1941 r = -E2BIG;
@@ -1933,6 +1945,11 @@ static long kvm_dev_ioctl(struct file *filp,
1933 if (copy_to_user(user_msr_list->indices, &msrs_to_save, 1945 if (copy_to_user(user_msr_list->indices, &msrs_to_save,
1934 num_msrs_to_save * sizeof(u32))) 1946 num_msrs_to_save * sizeof(u32)))
1935 goto out; 1947 goto out;
1948 if (copy_to_user(user_msr_list->indices
1949 + num_msrs_to_save * sizeof(u32),
1950 &emulated_msrs,
1951 ARRAY_SIZE(emulated_msrs) * sizeof(u32)))
1952 goto out;
1936 r = 0; 1953 r = 0;
1937 break; 1954 break;
1938 } 1955 }
diff --git a/drivers/kvm/mmu.c b/drivers/kvm/mmu.c
index c6f972914f08..22c426cd8cb2 100644
--- a/drivers/kvm/mmu.c
+++ b/drivers/kvm/mmu.c
@@ -143,6 +143,7 @@ static int dbg = 1;
143#define PFERR_PRESENT_MASK (1U << 0) 143#define PFERR_PRESENT_MASK (1U << 0)
144#define PFERR_WRITE_MASK (1U << 1) 144#define PFERR_WRITE_MASK (1U << 1)
145#define PFERR_USER_MASK (1U << 2) 145#define PFERR_USER_MASK (1U << 2)
146#define PFERR_FETCH_MASK (1U << 4)
146 147
147#define PT64_ROOT_LEVEL 4 148#define PT64_ROOT_LEVEL 4
148#define PT32_ROOT_LEVEL 2 149#define PT32_ROOT_LEVEL 2
@@ -168,6 +169,11 @@ static int is_cpuid_PSE36(void)
168 return 1; 169 return 1;
169} 170}
170 171
172static int is_nx(struct kvm_vcpu *vcpu)
173{
174 return vcpu->shadow_efer & EFER_NX;
175}
176
171static int is_present_pte(unsigned long pte) 177static int is_present_pte(unsigned long pte)
172{ 178{
173 return pte & PT_PRESENT_MASK; 179 return pte & PT_PRESENT_MASK;
@@ -992,16 +998,6 @@ static inline int fix_read_pf(u64 *shadow_ent)
992 return 0; 998 return 0;
993} 999}
994 1000
995static int may_access(u64 pte, int write, int user)
996{
997
998 if (user && !(pte & PT_USER_MASK))
999 return 0;
1000 if (write && !(pte & PT_WRITABLE_MASK))
1001 return 0;
1002 return 1;
1003}
1004
1005static void paging_free(struct kvm_vcpu *vcpu) 1001static void paging_free(struct kvm_vcpu *vcpu)
1006{ 1002{
1007 nonpaging_free(vcpu); 1003 nonpaging_free(vcpu);
diff --git a/drivers/kvm/paging_tmpl.h b/drivers/kvm/paging_tmpl.h
index 2dbf4307ed9e..149fa45fd9a5 100644
--- a/drivers/kvm/paging_tmpl.h
+++ b/drivers/kvm/paging_tmpl.h
@@ -63,13 +63,15 @@ struct guest_walker {
63 pt_element_t *ptep; 63 pt_element_t *ptep;
64 pt_element_t inherited_ar; 64 pt_element_t inherited_ar;
65 gfn_t gfn; 65 gfn_t gfn;
66 u32 error_code;
66}; 67};
67 68
68/* 69/*
69 * Fetch a guest pte for a guest virtual address 70 * Fetch a guest pte for a guest virtual address
70 */ 71 */
71static void FNAME(walk_addr)(struct guest_walker *walker, 72static int FNAME(walk_addr)(struct guest_walker *walker,
72 struct kvm_vcpu *vcpu, gva_t addr) 73 struct kvm_vcpu *vcpu, gva_t addr,
74 int write_fault, int user_fault, int fetch_fault)
73{ 75{
74 hpa_t hpa; 76 hpa_t hpa;
75 struct kvm_memory_slot *slot; 77 struct kvm_memory_slot *slot;
@@ -86,7 +88,7 @@ static void FNAME(walk_addr)(struct guest_walker *walker,
86 walker->ptep = &vcpu->pdptrs[(addr >> 30) & 3]; 88 walker->ptep = &vcpu->pdptrs[(addr >> 30) & 3];
87 root = *walker->ptep; 89 root = *walker->ptep;
88 if (!(root & PT_PRESENT_MASK)) 90 if (!(root & PT_PRESENT_MASK))
89 return; 91 goto not_present;
90 --walker->level; 92 --walker->level;
91 } 93 }
92#endif 94#endif
@@ -111,11 +113,23 @@ static void FNAME(walk_addr)(struct guest_walker *walker,
111 ASSERT(((unsigned long)walker->table & PAGE_MASK) == 113 ASSERT(((unsigned long)walker->table & PAGE_MASK) ==
112 ((unsigned long)ptep & PAGE_MASK)); 114 ((unsigned long)ptep & PAGE_MASK));
113 115
114 if (is_present_pte(*ptep) && !(*ptep & PT_ACCESSED_MASK))
115 *ptep |= PT_ACCESSED_MASK;
116
117 if (!is_present_pte(*ptep)) 116 if (!is_present_pte(*ptep))
118 break; 117 goto not_present;
118
119 if (write_fault && !is_writeble_pte(*ptep))
120 if (user_fault || is_write_protection(vcpu))
121 goto access_error;
122
123 if (user_fault && !(*ptep & PT_USER_MASK))
124 goto access_error;
125
126#if PTTYPE == 64
127 if (fetch_fault && is_nx(vcpu) && (*ptep & PT64_NX_MASK))
128 goto access_error;
129#endif
130
131 if (!(*ptep & PT_ACCESSED_MASK))
132 *ptep |= PT_ACCESSED_MASK; /* avoid rmw */
119 133
120 if (walker->level == PT_PAGE_TABLE_LEVEL) { 134 if (walker->level == PT_PAGE_TABLE_LEVEL) {
121 walker->gfn = (*ptep & PT_BASE_ADDR_MASK) 135 walker->gfn = (*ptep & PT_BASE_ADDR_MASK)
@@ -146,6 +160,23 @@ static void FNAME(walk_addr)(struct guest_walker *walker,
146 } 160 }
147 walker->ptep = ptep; 161 walker->ptep = ptep;
148 pgprintk("%s: pte %llx\n", __FUNCTION__, (u64)*ptep); 162 pgprintk("%s: pte %llx\n", __FUNCTION__, (u64)*ptep);
163 return 1;
164
165not_present:
166 walker->error_code = 0;
167 goto err;
168
169access_error:
170 walker->error_code = PFERR_PRESENT_MASK;
171
172err:
173 if (write_fault)
174 walker->error_code |= PFERR_WRITE_MASK;
175 if (user_fault)
176 walker->error_code |= PFERR_USER_MASK;
177 if (fetch_fault)
178 walker->error_code |= PFERR_FETCH_MASK;
179 return 0;
149} 180}
150 181
151static void FNAME(release_walker)(struct guest_walker *walker) 182static void FNAME(release_walker)(struct guest_walker *walker)
@@ -274,7 +305,7 @@ static int FNAME(fix_write_pf)(struct kvm_vcpu *vcpu,
274 struct kvm_mmu_page *page; 305 struct kvm_mmu_page *page;
275 306
276 if (is_writeble_pte(*shadow_ent)) 307 if (is_writeble_pte(*shadow_ent))
277 return 0; 308 return !user || (*shadow_ent & PT_USER_MASK);
278 309
279 writable_shadow = *shadow_ent & PT_SHADOW_WRITABLE_MASK; 310 writable_shadow = *shadow_ent & PT_SHADOW_WRITABLE_MASK;
280 if (user) { 311 if (user) {
@@ -347,8 +378,8 @@ static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr,
347 u32 error_code) 378 u32 error_code)
348{ 379{
349 int write_fault = error_code & PFERR_WRITE_MASK; 380 int write_fault = error_code & PFERR_WRITE_MASK;
350 int pte_present = error_code & PFERR_PRESENT_MASK;
351 int user_fault = error_code & PFERR_USER_MASK; 381 int user_fault = error_code & PFERR_USER_MASK;
382 int fetch_fault = error_code & PFERR_FETCH_MASK;
352 struct guest_walker walker; 383 struct guest_walker walker;
353 u64 *shadow_pte; 384 u64 *shadow_pte;
354 int fixed; 385 int fixed;
@@ -365,19 +396,20 @@ static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr,
365 /* 396 /*
366 * Look up the shadow pte for the faulting address. 397 * Look up the shadow pte for the faulting address.
367 */ 398 */
368 FNAME(walk_addr)(&walker, vcpu, addr); 399 r = FNAME(walk_addr)(&walker, vcpu, addr, write_fault, user_fault,
369 shadow_pte = FNAME(fetch)(vcpu, addr, &walker); 400 fetch_fault);
370 401
371 /* 402 /*
372 * The page is not mapped by the guest. Let the guest handle it. 403 * The page is not mapped by the guest. Let the guest handle it.
373 */ 404 */
374 if (!shadow_pte) { 405 if (!r) {
375 pgprintk("%s: not mapped\n", __FUNCTION__); 406 pgprintk("%s: guest page fault\n", __FUNCTION__);
376 inject_page_fault(vcpu, addr, error_code); 407 inject_page_fault(vcpu, addr, walker.error_code);
377 FNAME(release_walker)(&walker); 408 FNAME(release_walker)(&walker);
378 return 0; 409 return 0;
379 } 410 }
380 411
412 shadow_pte = FNAME(fetch)(vcpu, addr, &walker);
381 pgprintk("%s: shadow pte %p %llx\n", __FUNCTION__, 413 pgprintk("%s: shadow pte %p %llx\n", __FUNCTION__,
382 shadow_pte, *shadow_pte); 414 shadow_pte, *shadow_pte);
383 415
@@ -399,22 +431,7 @@ static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr,
399 * mmio: emulate if accessible, otherwise its a guest fault. 431 * mmio: emulate if accessible, otherwise its a guest fault.
400 */ 432 */
401 if (is_io_pte(*shadow_pte)) { 433 if (is_io_pte(*shadow_pte)) {
402 if (may_access(*shadow_pte, write_fault, user_fault)) 434 return 1;
403 return 1;
404 pgprintk("%s: io work, no access\n", __FUNCTION__);
405 inject_page_fault(vcpu, addr,
406 error_code | PFERR_PRESENT_MASK);
407 kvm_mmu_audit(vcpu, "post page fault (io)");
408 return 0;
409 }
410
411 /*
412 * pte not present, guest page fault.
413 */
414 if (pte_present && !fixed && !write_pt) {
415 inject_page_fault(vcpu, addr, error_code);
416 kvm_mmu_audit(vcpu, "post page fault (guest)");
417 return 0;
418 } 435 }
419 436
420 ++kvm_stat.pf_fixed; 437 ++kvm_stat.pf_fixed;
@@ -429,7 +446,7 @@ static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr)
429 pt_element_t guest_pte; 446 pt_element_t guest_pte;
430 gpa_t gpa; 447 gpa_t gpa;
431 448
432 FNAME(walk_addr)(&walker, vcpu, vaddr); 449 FNAME(walk_addr)(&walker, vcpu, vaddr, 0, 0, 0);
433 guest_pte = *walker.ptep; 450 guest_pte = *walker.ptep;
434 FNAME(release_walker)(&walker); 451 FNAME(release_walker)(&walker);
435 452
diff --git a/drivers/kvm/svm.c b/drivers/kvm/svm.c
index 714f6a7841cd..c79df79307ed 100644
--- a/drivers/kvm/svm.c
+++ b/drivers/kvm/svm.c
@@ -502,6 +502,7 @@ static void init_vmcb(struct vmcb *vmcb)
502 (1ULL << INTERCEPT_IOIO_PROT) | 502 (1ULL << INTERCEPT_IOIO_PROT) |
503 (1ULL << INTERCEPT_MSR_PROT) | 503 (1ULL << INTERCEPT_MSR_PROT) |
504 (1ULL << INTERCEPT_TASK_SWITCH) | 504 (1ULL << INTERCEPT_TASK_SWITCH) |
505 (1ULL << INTERCEPT_SHUTDOWN) |
505 (1ULL << INTERCEPT_VMRUN) | 506 (1ULL << INTERCEPT_VMRUN) |
506 (1ULL << INTERCEPT_VMMCALL) | 507 (1ULL << INTERCEPT_VMMCALL) |
507 (1ULL << INTERCEPT_VMLOAD) | 508 (1ULL << INTERCEPT_VMLOAD) |
@@ -680,14 +681,14 @@ static void svm_get_cs_db_l_bits(struct kvm_vcpu *vcpu, int *db, int *l)
680 681
681static void svm_get_idt(struct kvm_vcpu *vcpu, struct descriptor_table *dt) 682static void svm_get_idt(struct kvm_vcpu *vcpu, struct descriptor_table *dt)
682{ 683{
683 dt->limit = vcpu->svm->vmcb->save.ldtr.limit; 684 dt->limit = vcpu->svm->vmcb->save.idtr.limit;
684 dt->base = vcpu->svm->vmcb->save.ldtr.base; 685 dt->base = vcpu->svm->vmcb->save.idtr.base;
685} 686}
686 687
687static void svm_set_idt(struct kvm_vcpu *vcpu, struct descriptor_table *dt) 688static void svm_set_idt(struct kvm_vcpu *vcpu, struct descriptor_table *dt)
688{ 689{
689 vcpu->svm->vmcb->save.ldtr.limit = dt->limit; 690 vcpu->svm->vmcb->save.idtr.limit = dt->limit;
690 vcpu->svm->vmcb->save.ldtr.base = dt->base ; 691 vcpu->svm->vmcb->save.idtr.base = dt->base ;
691} 692}
692 693
693static void svm_get_gdt(struct kvm_vcpu *vcpu, struct descriptor_table *dt) 694static void svm_get_gdt(struct kvm_vcpu *vcpu, struct descriptor_table *dt)
@@ -892,6 +893,19 @@ static int pf_interception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
892 return 0; 893 return 0;
893} 894}
894 895
896static int shutdown_interception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
897{
898 /*
899 * VMCB is undefined after a SHUTDOWN intercept
900 * so reinitialize it.
901 */
902 memset(vcpu->svm->vmcb, 0, PAGE_SIZE);
903 init_vmcb(vcpu->svm->vmcb);
904
905 kvm_run->exit_reason = KVM_EXIT_SHUTDOWN;
906 return 0;
907}
908
895static int io_get_override(struct kvm_vcpu *vcpu, 909static int io_get_override(struct kvm_vcpu *vcpu,
896 struct vmcb_seg **seg, 910 struct vmcb_seg **seg,
897 int *addr_override) 911 int *addr_override)
@@ -1149,7 +1163,7 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 data)
1149 case MSR_K6_STAR: 1163 case MSR_K6_STAR:
1150 vcpu->svm->vmcb->save.star = data; 1164 vcpu->svm->vmcb->save.star = data;
1151 break; 1165 break;
1152#ifdef CONFIG_X86_64_ 1166#ifdef CONFIG_X86_64
1153 case MSR_LSTAR: 1167 case MSR_LSTAR:
1154 vcpu->svm->vmcb->save.lstar = data; 1168 vcpu->svm->vmcb->save.lstar = data;
1155 break; 1169 break;
@@ -1249,6 +1263,7 @@ static int (*svm_exit_handlers[])(struct kvm_vcpu *vcpu,
1249 [SVM_EXIT_IOIO] = io_interception, 1263 [SVM_EXIT_IOIO] = io_interception,
1250 [SVM_EXIT_MSR] = msr_interception, 1264 [SVM_EXIT_MSR] = msr_interception,
1251 [SVM_EXIT_TASK_SWITCH] = task_switch_interception, 1265 [SVM_EXIT_TASK_SWITCH] = task_switch_interception,
1266 [SVM_EXIT_SHUTDOWN] = shutdown_interception,
1252 [SVM_EXIT_VMRUN] = invalid_op_interception, 1267 [SVM_EXIT_VMRUN] = invalid_op_interception,
1253 [SVM_EXIT_VMMCALL] = invalid_op_interception, 1268 [SVM_EXIT_VMMCALL] = invalid_op_interception,
1254 [SVM_EXIT_VMLOAD] = invalid_op_interception, 1269 [SVM_EXIT_VMLOAD] = invalid_op_interception,
@@ -1407,7 +1422,8 @@ static int svm_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1407 int r; 1422 int r;
1408 1423
1409again: 1424again:
1410 do_interrupt_requests(vcpu, kvm_run); 1425 if (!vcpu->mmio_read_completed)
1426 do_interrupt_requests(vcpu, kvm_run);
1411 1427
1412 clgi(); 1428 clgi();
1413 1429
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index ce219e3f557f..54c35c0b3181 100644
--- a/drivers/kvm/vmx.c
+++ b/drivers/kvm/vmx.c
@@ -1116,6 +1116,8 @@ static int vmx_vcpu_setup(struct kvm_vcpu *vcpu)
1116 1116
1117 if (rdmsr_safe(index, &data_low, &data_high) < 0) 1117 if (rdmsr_safe(index, &data_low, &data_high) < 0)
1118 continue; 1118 continue;
1119 if (wrmsr_safe(index, data_low, data_high) < 0)
1120 continue;
1119 data = data_low | ((u64)data_high << 32); 1121 data = data_low | ((u64)data_high << 32);
1120 vcpu->host_msrs[j].index = index; 1122 vcpu->host_msrs[j].index = index;
1121 vcpu->host_msrs[j].reserved = 0; 1123 vcpu->host_msrs[j].reserved = 0;
@@ -1717,7 +1719,8 @@ again:
1717 vmcs_writel(HOST_GS_BASE, segment_base(gs_sel)); 1719 vmcs_writel(HOST_GS_BASE, segment_base(gs_sel));
1718#endif 1720#endif
1719 1721
1720 do_interrupt_requests(vcpu, kvm_run); 1722 if (!vcpu->mmio_read_completed)
1723 do_interrupt_requests(vcpu, kvm_run);
1721 1724
1722 if (vcpu->guest_debug.enabled) 1725 if (vcpu->guest_debug.enabled)
1723 kvm_guest_debug_pre(vcpu); 1726 kvm_guest_debug_pre(vcpu);
@@ -1824,7 +1827,7 @@ again:
1824#endif 1827#endif
1825 "setbe %0 \n\t" 1828 "setbe %0 \n\t"
1826 "popf \n\t" 1829 "popf \n\t"
1827 : "=g" (fail) 1830 : "=q" (fail)
1828 : "r"(vcpu->launched), "d"((unsigned long)HOST_RSP), 1831 : "r"(vcpu->launched), "d"((unsigned long)HOST_RSP),
1829 "c"(vcpu), 1832 "c"(vcpu),
1830 [rax]"i"(offsetof(struct kvm_vcpu, regs[VCPU_REGS_RAX])), 1833 [rax]"i"(offsetof(struct kvm_vcpu, regs[VCPU_REGS_RAX])),
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index be70795b4822..7513cddb929f 100644
--- a/drivers/kvm/x86_emulate.c
+++ b/drivers/kvm/x86_emulate.c
@@ -61,6 +61,7 @@
61#define ModRM (1<<6) 61#define ModRM (1<<6)
62/* Destination is only written; never read. */ 62/* Destination is only written; never read. */
63#define Mov (1<<7) 63#define Mov (1<<7)
64#define BitOp (1<<8)
64 65
65static u8 opcode_table[256] = { 66static u8 opcode_table[256] = {
66 /* 0x00 - 0x07 */ 67 /* 0x00 - 0x07 */
@@ -148,7 +149,7 @@ static u8 opcode_table[256] = {
148 0, 0, ByteOp | DstMem | SrcNone | ModRM, DstMem | SrcNone | ModRM 149 0, 0, ByteOp | DstMem | SrcNone | ModRM, DstMem | SrcNone | ModRM
149}; 150};
150 151
151static u8 twobyte_table[256] = { 152static u16 twobyte_table[256] = {
152 /* 0x00 - 0x0F */ 153 /* 0x00 - 0x0F */
153 0, SrcMem | ModRM | DstReg, 0, 0, 0, 0, ImplicitOps, 0, 154 0, SrcMem | ModRM | DstReg, 0, 0, 0, 0, ImplicitOps, 0,
154 0, 0, 0, 0, 0, ImplicitOps | ModRM, 0, 0, 155 0, 0, 0, 0, 0, ImplicitOps | ModRM, 0, 0,
@@ -180,16 +181,16 @@ static u8 twobyte_table[256] = {
180 /* 0x90 - 0x9F */ 181 /* 0x90 - 0x9F */
181 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
182 /* 0xA0 - 0xA7 */ 183 /* 0xA0 - 0xA7 */
183 0, 0, 0, DstMem | SrcReg | ModRM, 0, 0, 0, 0, 184 0, 0, 0, DstMem | SrcReg | ModRM | BitOp, 0, 0, 0, 0,
184 /* 0xA8 - 0xAF */ 185 /* 0xA8 - 0xAF */
185 0, 0, 0, DstMem | SrcReg | ModRM, 0, 0, 0, 0, 186 0, 0, 0, DstMem | SrcReg | ModRM | BitOp, 0, 0, 0, 0,
186 /* 0xB0 - 0xB7 */ 187 /* 0xB0 - 0xB7 */
187 ByteOp | DstMem | SrcReg | ModRM, DstMem | SrcReg | ModRM, 0, 188 ByteOp | DstMem | SrcReg | ModRM, DstMem | SrcReg | ModRM, 0,
188 DstMem | SrcReg | ModRM, 189 DstMem | SrcReg | ModRM | BitOp,
189 0, 0, ByteOp | DstReg | SrcMem | ModRM | Mov, 190 0, 0, ByteOp | DstReg | SrcMem | ModRM | Mov,
190 DstReg | SrcMem16 | ModRM | Mov, 191 DstReg | SrcMem16 | ModRM | Mov,
191 /* 0xB8 - 0xBF */ 192 /* 0xB8 - 0xBF */
192 0, 0, DstMem | SrcImmByte | ModRM, DstMem | SrcReg | ModRM, 193 0, 0, DstMem | SrcImmByte | ModRM, DstMem | SrcReg | ModRM | BitOp,
193 0, 0, ByteOp | DstReg | SrcMem | ModRM | Mov, 194 0, 0, ByteOp | DstReg | SrcMem | ModRM | Mov,
194 DstReg | SrcMem16 | ModRM | Mov, 195 DstReg | SrcMem16 | ModRM | Mov,
195 /* 0xC0 - 0xCF */ 196 /* 0xC0 - 0xCF */
@@ -469,7 +470,8 @@ static int read_descriptor(struct x86_emulate_ctxt *ctxt,
469int 470int
470x86_emulate_memop(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops) 471x86_emulate_memop(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops)
471{ 472{
472 u8 b, d, sib, twobyte = 0, rex_prefix = 0; 473 unsigned d;
474 u8 b, sib, twobyte = 0, rex_prefix = 0;
473 u8 modrm, modrm_mod = 0, modrm_reg = 0, modrm_rm = 0; 475 u8 modrm, modrm_mod = 0, modrm_reg = 0, modrm_rm = 0;
474 unsigned long *override_base = NULL; 476 unsigned long *override_base = NULL;
475 unsigned int op_bytes, ad_bytes, lock_prefix = 0, rep_prefix = 0, i; 477 unsigned int op_bytes, ad_bytes, lock_prefix = 0, rep_prefix = 0, i;
@@ -726,46 +728,6 @@ done_prefixes:
726 ; 728 ;
727 } 729 }
728 730
729 /* Decode and fetch the destination operand: register or memory. */
730 switch (d & DstMask) {
731 case ImplicitOps:
732 /* Special instructions do their own operand decoding. */
733 goto special_insn;
734 case DstReg:
735 dst.type = OP_REG;
736 if ((d & ByteOp)
737 && !(twobyte_table && (b == 0xb6 || b == 0xb7))) {
738 dst.ptr = decode_register(modrm_reg, _regs,
739 (rex_prefix == 0));
740 dst.val = *(u8 *) dst.ptr;
741 dst.bytes = 1;
742 } else {
743 dst.ptr = decode_register(modrm_reg, _regs, 0);
744 switch ((dst.bytes = op_bytes)) {
745 case 2:
746 dst.val = *(u16 *)dst.ptr;
747 break;
748 case 4:
749 dst.val = *(u32 *)dst.ptr;
750 break;
751 case 8:
752 dst.val = *(u64 *)dst.ptr;
753 break;
754 }
755 }
756 break;
757 case DstMem:
758 dst.type = OP_MEM;
759 dst.ptr = (unsigned long *)cr2;
760 dst.bytes = (d & ByteOp) ? 1 : op_bytes;
761 if (!(d & Mov) && /* optimisation - avoid slow emulated read */
762 ((rc = ops->read_emulated((unsigned long)dst.ptr,
763 &dst.val, dst.bytes, ctxt)) != 0))
764 goto done;
765 break;
766 }
767 dst.orig_val = dst.val;
768
769 /* 731 /*
770 * Decode and fetch the source operand: register, memory 732 * Decode and fetch the source operand: register, memory
771 * or immediate. 733 * or immediate.
@@ -838,6 +800,50 @@ done_prefixes:
838 break; 800 break;
839 } 801 }
840 802
803 /* Decode and fetch the destination operand: register or memory. */
804 switch (d & DstMask) {
805 case ImplicitOps:
806 /* Special instructions do their own operand decoding. */
807 goto special_insn;
808 case DstReg:
809 dst.type = OP_REG;
810 if ((d & ByteOp)
811 && !(twobyte_table && (b == 0xb6 || b == 0xb7))) {
812 dst.ptr = decode_register(modrm_reg, _regs,
813 (rex_prefix == 0));
814 dst.val = *(u8 *) dst.ptr;
815 dst.bytes = 1;
816 } else {
817 dst.ptr = decode_register(modrm_reg, _regs, 0);
818 switch ((dst.bytes = op_bytes)) {
819 case 2:
820 dst.val = *(u16 *)dst.ptr;
821 break;
822 case 4:
823 dst.val = *(u32 *)dst.ptr;
824 break;
825 case 8:
826 dst.val = *(u64 *)dst.ptr;
827 break;
828 }
829 }
830 break;
831 case DstMem:
832 dst.type = OP_MEM;
833 dst.ptr = (unsigned long *)cr2;
834 dst.bytes = (d & ByteOp) ? 1 : op_bytes;
835 if (d & BitOp) {
836 dst.ptr += src.val / BITS_PER_LONG;
837 dst.bytes = sizeof(long);
838 }
839 if (!(d & Mov) && /* optimisation - avoid slow emulated read */
840 ((rc = ops->read_emulated((unsigned long)dst.ptr,
841 &dst.val, dst.bytes, ctxt)) != 0))
842 goto done;
843 break;
844 }
845 dst.orig_val = dst.val;
846
841 if (twobyte) 847 if (twobyte)
842 goto twobyte_insn; 848 goto twobyte_insn;
843 849
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 5432d07c074d..11108165e264 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -479,9 +479,12 @@ static int bitmap_read_sb(struct bitmap *bitmap)
479 int err = -EINVAL; 479 int err = -EINVAL;
480 480
481 /* page 0 is the superblock, read it... */ 481 /* page 0 is the superblock, read it... */
482 if (bitmap->file) 482 if (bitmap->file) {
483 bitmap->sb_page = read_page(bitmap->file, 0, bitmap, PAGE_SIZE); 483 loff_t isize = i_size_read(bitmap->file->f_mapping->host);
484 else { 484 int bytes = isize > PAGE_SIZE ? PAGE_SIZE : isize;
485
486 bitmap->sb_page = read_page(bitmap->file, 0, bitmap, bytes);
487 } else {
485 bitmap->sb_page = read_sb_page(bitmap->mddev, bitmap->offset, 0); 488 bitmap->sb_page = read_sb_page(bitmap->mddev, bitmap->offset, 0);
486 } 489 }
487 if (IS_ERR(bitmap->sb_page)) { 490 if (IS_ERR(bitmap->sb_page)) {
@@ -877,7 +880,8 @@ static int bitmap_init_from_disk(struct bitmap *bitmap, sector_t start)
877 int count; 880 int count;
878 /* unmap the old page, we're done with it */ 881 /* unmap the old page, we're done with it */
879 if (index == num_pages-1) 882 if (index == num_pages-1)
880 count = bytes - index * PAGE_SIZE; 883 count = bytes + sizeof(bitmap_super_t)
884 - index * PAGE_SIZE;
881 else 885 else
882 count = PAGE_SIZE; 886 count = PAGE_SIZE;
883 if (index == 0) { 887 if (index == 0) {
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index fe7c56e10435..3668b170ea68 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -1116,7 +1116,8 @@ static int __bind(struct mapped_device *md, struct dm_table *t)
1116 if (size != get_capacity(md->disk)) 1116 if (size != get_capacity(md->disk))
1117 memset(&md->geometry, 0, sizeof(md->geometry)); 1117 memset(&md->geometry, 0, sizeof(md->geometry));
1118 1118
1119 __set_size(md, size); 1119 if (md->suspended_bdev)
1120 __set_size(md, size);
1120 if (size == 0) 1121 if (size == 0)
1121 return 0; 1122 return 0;
1122 1123
@@ -1264,6 +1265,11 @@ int dm_swap_table(struct mapped_device *md, struct dm_table *table)
1264 if (!dm_suspended(md)) 1265 if (!dm_suspended(md))
1265 goto out; 1266 goto out;
1266 1267
1268 /* without bdev, the device size cannot be changed */
1269 if (!md->suspended_bdev)
1270 if (get_capacity(md->disk) != dm_table_get_size(table))
1271 goto out;
1272
1267 __unbind(md); 1273 __unbind(md);
1268 r = __bind(md, table); 1274 r = __bind(md, table);
1269 1275
@@ -1341,11 +1347,14 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags)
1341 /* This does not get reverted if there's an error later. */ 1347 /* This does not get reverted if there's an error later. */
1342 dm_table_presuspend_targets(map); 1348 dm_table_presuspend_targets(map);
1343 1349
1344 md->suspended_bdev = bdget_disk(md->disk, 0); 1350 /* bdget() can stall if the pending I/Os are not flushed */
1345 if (!md->suspended_bdev) { 1351 if (!noflush) {
1346 DMWARN("bdget failed in dm_suspend"); 1352 md->suspended_bdev = bdget_disk(md->disk, 0);
1347 r = -ENOMEM; 1353 if (!md->suspended_bdev) {
1348 goto flush_and_out; 1354 DMWARN("bdget failed in dm_suspend");
1355 r = -ENOMEM;
1356 goto flush_and_out;
1357 }
1349 } 1358 }
1350 1359
1351 /* 1360 /*
@@ -1473,8 +1482,10 @@ int dm_resume(struct mapped_device *md)
1473 1482
1474 unlock_fs(md); 1483 unlock_fs(md);
1475 1484
1476 bdput(md->suspended_bdev); 1485 if (md->suspended_bdev) {
1477 md->suspended_bdev = NULL; 1486 bdput(md->suspended_bdev);
1487 md->suspended_bdev = NULL;
1488 }
1478 1489
1479 clear_bit(DMF_SUSPENDED, &md->flags); 1490 clear_bit(DMF_SUSPENDED, &md->flags);
1480 1491
diff --git a/drivers/md/md.c b/drivers/md/md.c
index d1cb45f6d6a9..e8807ea5377d 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -1633,7 +1633,8 @@ repeat:
1633 * and 'events' is odd, we can roll back to the previous clean state */ 1633 * and 'events' is odd, we can roll back to the previous clean state */
1634 if (nospares 1634 if (nospares
1635 && (mddev->in_sync && mddev->recovery_cp == MaxSector) 1635 && (mddev->in_sync && mddev->recovery_cp == MaxSector)
1636 && (mddev->events & 1)) 1636 && (mddev->events & 1)
1637 && mddev->events != 1)
1637 mddev->events--; 1638 mddev->events--;
1638 else { 1639 else {
1639 /* otherwise we have to go forward and ... */ 1640 /* otherwise we have to go forward and ... */
@@ -3563,6 +3564,8 @@ static int get_bitmap_file(mddev_t * mddev, void __user * arg)
3563 char *ptr, *buf = NULL; 3564 char *ptr, *buf = NULL;
3564 int err = -ENOMEM; 3565 int err = -ENOMEM;
3565 3566
3567 md_allow_write(mddev);
3568
3566 file = kmalloc(sizeof(*file), GFP_KERNEL); 3569 file = kmalloc(sizeof(*file), GFP_KERNEL);
3567 if (!file) 3570 if (!file)
3568 goto out; 3571 goto out;
@@ -5031,6 +5034,33 @@ void md_write_end(mddev_t *mddev)
5031 } 5034 }
5032} 5035}
5033 5036
5037/* md_allow_write(mddev)
5038 * Calling this ensures that the array is marked 'active' so that writes
5039 * may proceed without blocking. It is important to call this before
5040 * attempting a GFP_KERNEL allocation while holding the mddev lock.
5041 * Must be called with mddev_lock held.
5042 */
5043void md_allow_write(mddev_t *mddev)
5044{
5045 if (!mddev->pers)
5046 return;
5047 if (mddev->ro)
5048 return;
5049
5050 spin_lock_irq(&mddev->write_lock);
5051 if (mddev->in_sync) {
5052 mddev->in_sync = 0;
5053 set_bit(MD_CHANGE_CLEAN, &mddev->flags);
5054 if (mddev->safemode_delay &&
5055 mddev->safemode == 0)
5056 mddev->safemode = 1;
5057 spin_unlock_irq(&mddev->write_lock);
5058 md_update_sb(mddev, 0);
5059 } else
5060 spin_unlock_irq(&mddev->write_lock);
5061}
5062EXPORT_SYMBOL_GPL(md_allow_write);
5063
5034static DECLARE_WAIT_QUEUE_HEAD(resync_wait); 5064static DECLARE_WAIT_QUEUE_HEAD(resync_wait);
5035 5065
5036#define SYNC_MARKS 10 5066#define SYNC_MARKS 10
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 164b25dca101..97ee870b265d 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1266,6 +1266,11 @@ static void sync_request_write(mddev_t *mddev, r1bio_t *r1_bio)
1266 sbio->bi_sector = r1_bio->sector + 1266 sbio->bi_sector = r1_bio->sector +
1267 conf->mirrors[i].rdev->data_offset; 1267 conf->mirrors[i].rdev->data_offset;
1268 sbio->bi_bdev = conf->mirrors[i].rdev->bdev; 1268 sbio->bi_bdev = conf->mirrors[i].rdev->bdev;
1269 for (j = 0; j < vcnt ; j++)
1270 memcpy(page_address(sbio->bi_io_vec[j].bv_page),
1271 page_address(pbio->bi_io_vec[j].bv_page),
1272 PAGE_SIZE);
1273
1269 } 1274 }
1270 } 1275 }
1271 } 1276 }
@@ -2099,6 +2104,8 @@ static int raid1_reshape(mddev_t *mddev)
2099 return -EINVAL; 2104 return -EINVAL;
2100 } 2105 }
2101 2106
2107 md_allow_write(mddev);
2108
2102 raid_disks = mddev->raid_disks + mddev->delta_disks; 2109 raid_disks = mddev->raid_disks + mddev->delta_disks;
2103 2110
2104 if (raid_disks < conf->raid_disks) { 2111 if (raid_disks < conf->raid_disks) {
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index be008f034ada..467c16982d02 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -405,6 +405,8 @@ static int resize_stripes(raid5_conf_t *conf, int newsize)
405 if (newsize <= conf->pool_size) 405 if (newsize <= conf->pool_size)
406 return 0; /* never bother to shrink */ 406 return 0; /* never bother to shrink */
407 407
408 md_allow_write(conf->mddev);
409
408 /* Step 1 */ 410 /* Step 1 */
409 sc = kmem_cache_create(conf->cache_name[1-conf->active_name], 411 sc = kmem_cache_create(conf->cache_name[1-conf->active_name],
410 sizeof(struct stripe_head)+(newsize-1)*sizeof(struct r5dev), 412 sizeof(struct stripe_head)+(newsize-1)*sizeof(struct r5dev),
@@ -2678,7 +2680,7 @@ static int chunk_aligned_read(request_queue_t *q, struct bio * raid_bio)
2678 mdk_rdev_t *rdev; 2680 mdk_rdev_t *rdev;
2679 2681
2680 if (!in_chunk_boundary(mddev, raid_bio)) { 2682 if (!in_chunk_boundary(mddev, raid_bio)) {
2681 printk("chunk_aligned_read : non aligned\n"); 2683 PRINTK("chunk_aligned_read : non aligned\n");
2682 return 0; 2684 return 0;
2683 } 2685 }
2684 /* 2686 /*
@@ -3250,6 +3252,7 @@ raid5_store_stripe_cache_size(mddev_t *mddev, const char *page, size_t len)
3250 else 3252 else
3251 break; 3253 break;
3252 } 3254 }
3255 md_allow_write(mddev);
3253 while (new > conf->max_nr_stripes) { 3256 while (new > conf->max_nr_stripes) {
3254 if (grow_one_stripe(conf)) 3257 if (grow_one_stripe(conf))
3255 conf->max_nr_stripes++; 3258 conf->max_nr_stripes++;
diff --git a/drivers/media/video/cx88/cx88-tvaudio.c b/drivers/media/video/cx88/cx88-tvaudio.c
index 3482e0114d43..2bd84d351a18 100644
--- a/drivers/media/video/cx88/cx88-tvaudio.c
+++ b/drivers/media/video/cx88/cx88-tvaudio.c
@@ -38,6 +38,7 @@
38#include <linux/module.h> 38#include <linux/module.h>
39#include <linux/moduleparam.h> 39#include <linux/moduleparam.h>
40#include <linux/errno.h> 40#include <linux/errno.h>
41#include <linux/freezer.h>
41#include <linux/kernel.h> 42#include <linux/kernel.h>
42#include <linux/slab.h> 43#include <linux/slab.h>
43#include <linux/mm.h> 44#include <linux/mm.h>
@@ -961,6 +962,7 @@ int cx88_audio_thread(void *data)
961 msleep_interruptible(1000); 962 msleep_interruptible(1000);
962 if (kthread_should_stop()) 963 if (kthread_should_stop())
963 break; 964 break;
965 try_to_freeze();
964 966
965 /* just monitor the audio status for now ... */ 967 /* just monitor the audio status for now ... */
966 memset(&t, 0, sizeof(t)); 968 memset(&t, 0, sizeof(t));
diff --git a/drivers/media/video/ks0127.c b/drivers/media/video/ks0127.c
index c1a377f797d9..b6cd21e6dab9 100644
--- a/drivers/media/video/ks0127.c
+++ b/drivers/media/video/ks0127.c
@@ -712,13 +712,13 @@ static int ks0127_command(struct i2c_client *client,
712 *iarg = 0; 712 *iarg = 0;
713 status = ks0127_read(ks, KS_STAT); 713 status = ks0127_read(ks, KS_STAT);
714 if (!(status & 0x20)) /* NOVID not set */ 714 if (!(status & 0x20)) /* NOVID not set */
715 *iarg = (*iarg & DECODER_STATUS_GOOD); 715 *iarg = (*iarg | DECODER_STATUS_GOOD);
716 if ((status & 0x01)) /* CLOCK set */ 716 if ((status & 0x01)) /* CLOCK set */
717 *iarg = (*iarg & DECODER_STATUS_COLOR); 717 *iarg = (*iarg | DECODER_STATUS_COLOR);
718 if ((status & 0x08)) /* PALDET set */ 718 if ((status & 0x08)) /* PALDET set */
719 *iarg = (*iarg & DECODER_STATUS_PAL); 719 *iarg = (*iarg | DECODER_STATUS_PAL);
720 else 720 else
721 *iarg = (*iarg & DECODER_STATUS_NTSC); 721 *iarg = (*iarg | DECODER_STATUS_NTSC);
722 break; 722 break;
723 723
724 //Catch any unknown command 724 //Catch any unknown command
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c
index 4dead84aff46..ae984bbe36b6 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -2570,6 +2570,7 @@ struct saa7134_board saa7134_boards[] = {
2570 .radio_type = UNSET, 2570 .radio_type = UNSET,
2571 .tuner_addr = ADDR_UNSET, 2571 .tuner_addr = ADDR_UNSET,
2572 .radio_addr = ADDR_UNSET, 2572 .radio_addr = ADDR_UNSET,
2573 .gpiomask = 1 << 21,
2573 .inputs = {{ 2574 .inputs = {{
2574 .name = name_tv, 2575 .name = name_tv,
2575 .vmux = 1, 2576 .vmux = 1,
@@ -2578,15 +2579,20 @@ struct saa7134_board saa7134_boards[] = {
2578 },{ 2579 },{
2579 .name = name_comp1, 2580 .name = name_comp1,
2580 .vmux = 3, 2581 .vmux = 3,
2581 .amux = LINE1, 2582 .amux = LINE2, /* unconfirmed, taken from Philips driver */
2583 },{
2584 .name = name_comp2,
2585 .vmux = 0, /* untested, Composite over S-Video */
2586 .amux = LINE2,
2582 },{ 2587 },{
2583 .name = name_svideo, 2588 .name = name_svideo,
2584 .vmux = 0, 2589 .vmux = 8,
2585 .amux = LINE1, 2590 .amux = LINE2,
2586 }}, 2591 }},
2587 .radio = { 2592 .radio = {
2588 .name = name_radio, 2593 .name = name_radio,
2589 .amux = LINE1, 2594 .amux = TV,
2595 .gpio = 0x0200000,
2590 }, 2596 },
2591 }, 2597 },
2592 [SAA7134_BOARD_CINERGY250PCI] = { 2598 [SAA7134_BOARD_CINERGY250PCI] = {
diff --git a/drivers/media/video/tveeprom.c b/drivers/media/video/tveeprom.c
index 2624e3f7dd29..4e7c1fa668d3 100644
--- a/drivers/media/video/tveeprom.c
+++ b/drivers/media/video/tveeprom.c
@@ -184,7 +184,7 @@ hauppauge_tuner[] =
184 { TUNER_ABSENT, "Thompson DTT757"}, 184 { TUNER_ABSENT, "Thompson DTT757"},
185 /* 80-89 */ 185 /* 80-89 */
186 { TUNER_ABSENT, "Philips FQ1216LME MK3"}, 186 { TUNER_ABSENT, "Philips FQ1216LME MK3"},
187 { TUNER_ABSENT, "LG TAPC G701D"}, 187 { TUNER_LG_PAL_NEW_TAPC, "LG TAPC G701D"},
188 { TUNER_LG_NTSC_NEW_TAPC, "LG TAPC H791F"}, 188 { TUNER_LG_NTSC_NEW_TAPC, "LG TAPC H791F"},
189 { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MB 3"}, 189 { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MB 3"},
190 { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MI 3"}, 190 { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MI 3"},
diff --git a/drivers/media/video/usbvideo/quickcam_messenger.h b/drivers/media/video/usbvideo/quickcam_messenger.h
index baab9c081b52..17ace394d981 100644
--- a/drivers/media/video/usbvideo/quickcam_messenger.h
+++ b/drivers/media/video/usbvideo/quickcam_messenger.h
@@ -35,27 +35,13 @@ struct rgb {
35}; 35};
36 36
37struct bayL0 { 37struct bayL0 {
38#ifdef __BIG_ENDIAN
39 u8 r;
40 u8 g;
41#elif __LITTLE_ENDIAN
42 u8 g; 38 u8 g;
43 u8 r; 39 u8 r;
44#else
45#error not byte order defined
46#endif
47}; 40};
48 41
49struct bayL1 { 42struct bayL1 {
50#ifdef __BIG_ENDIAN
51 u8 g;
52 u8 b;
53#elif __LITTLE_ENDIAN
54 u8 b; 43 u8 b;
55 u8 g; 44 u8 g;
56#else
57#error not byte order defined
58#endif
59}; 45};
60 46
61struct cam_size { 47struct cam_size {
diff --git a/drivers/media/video/usbvision/usbvision-video.c b/drivers/media/video/usbvision/usbvision-video.c
index 8c7eba2a728e..7243337b771a 100644
--- a/drivers/media/video/usbvision/usbvision-video.c
+++ b/drivers/media/video/usbvision/usbvision-video.c
@@ -1080,7 +1080,6 @@ static ssize_t usbvision_v4l2_read(struct file *file, char *buf,
1080 int noblock = file->f_flags & O_NONBLOCK; 1080 int noblock = file->f_flags & O_NONBLOCK;
1081 unsigned long lock_flags; 1081 unsigned long lock_flags;
1082 1082
1083 int frmx = -1;
1084 int ret,i; 1083 int ret,i;
1085 struct usbvision_frame *frame; 1084 struct usbvision_frame *frame;
1086 1085
@@ -1155,7 +1154,7 @@ static ssize_t usbvision_v4l2_read(struct file *file, char *buf,
1155 frame->bytes_read = 0; 1154 frame->bytes_read = 0;
1156 1155
1157 /* Mark it as available to be used again. */ 1156 /* Mark it as available to be used again. */
1158 usbvision->frame[frmx].grabstate = FrameState_Unused; 1157 frame->grabstate = FrameState_Unused;
1159/* } */ 1158/* } */
1160 1159
1161 return count; 1160 return count;
diff --git a/drivers/media/video/v4l2-common.c b/drivers/media/video/v4l2-common.c
index 752c82c37f55..b87d571e0463 100644
--- a/drivers/media/video/v4l2-common.c
+++ b/drivers/media/video/v4l2-common.c
@@ -90,8 +90,15 @@ MODULE_LICENSE("GPL");
90char *v4l2_norm_to_name(v4l2_std_id id) 90char *v4l2_norm_to_name(v4l2_std_id id)
91{ 91{
92 char *name; 92 char *name;
93 u32 myid = id;
93 94
94 switch (id) { 95 /* HACK: ppc32 architecture doesn't have __ucmpdi2 function to handle
96 64 bit comparations. So, on that architecture, with some gcc variants,
97 compilation fails. Currently, the max value is 30bit wide.
98 */
99 BUG_ON(myid != id);
100
101 switch (myid) {
95 case V4L2_STD_PAL: 102 case V4L2_STD_PAL:
96 name="PAL"; break; 103 name="PAL"; break;
97 case V4L2_STD_PAL_BG: 104 case V4L2_STD_PAL_BG:
diff --git a/drivers/media/video/video-buf.c b/drivers/media/video/video-buf.c
index f429f49901b9..6504a5866849 100644
--- a/drivers/media/video/video-buf.c
+++ b/drivers/media/video/video-buf.c
@@ -700,6 +700,7 @@ videobuf_qbuf(struct videobuf_queue *q,
700 goto done; 700 goto done;
701 } 701 }
702 if (buf->state == STATE_QUEUED || 702 if (buf->state == STATE_QUEUED ||
703 buf->state == STATE_PREPARED ||
703 buf->state == STATE_ACTIVE) { 704 buf->state == STATE_ACTIVE) {
704 dprintk(1,"qbuf: buffer is already queued or active.\n"); 705 dprintk(1,"qbuf: buffer is already queued or active.\n");
705 goto done; 706 goto done;
@@ -1229,7 +1230,7 @@ videobuf_vm_nopage(struct vm_area_struct *vma, unsigned long vaddr,
1229 vaddr,vma->vm_start,vma->vm_end); 1230 vaddr,vma->vm_start,vma->vm_end);
1230 if (vaddr > vma->vm_end) 1231 if (vaddr > vma->vm_end)
1231 return NOPAGE_SIGBUS; 1232 return NOPAGE_SIGBUS;
1232 page = alloc_page(GFP_USER); 1233 page = alloc_page(GFP_USER | __GFP_DMA32);
1233 if (!page) 1234 if (!page)
1234 return NOPAGE_OOM; 1235 return NOPAGE_OOM;
1235 clear_user_page(page_address(page), vaddr, page); 1236 clear_user_page(page_address(page), vaddr, page);
diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c
index bacb311b4f24..d4cf55666731 100644
--- a/drivers/media/video/vivi.c
+++ b/drivers/media/video/vivi.c
@@ -270,10 +270,15 @@ static void gen_line(struct sg_to_addr to_addr[],int inipos,int pages,int wmax,
270 char *p,*s,*basep; 270 char *p,*s,*basep;
271 struct page *pg; 271 struct page *pg;
272 u8 chr,r,g,b,color; 272 u8 chr,r,g,b,color;
273 unsigned long flags;
274 spinlock_t spinlock;
275
276 spin_lock_init(&spinlock);
273 277
274 /* Get first addr pointed to pixel position */ 278 /* Get first addr pointed to pixel position */
275 oldpg=get_addr_pos(pos,pages,to_addr); 279 oldpg=get_addr_pos(pos,pages,to_addr);
276 pg=pfn_to_page(sg_dma_address(to_addr[oldpg].sg) >> PAGE_SHIFT); 280 pg=pfn_to_page(sg_dma_address(to_addr[oldpg].sg) >> PAGE_SHIFT);
281 spin_lock_irqsave(&spinlock,flags);
277 basep = kmap_atomic(pg, KM_BOUNCE_READ)+to_addr[oldpg].sg->offset; 282 basep = kmap_atomic(pg, KM_BOUNCE_READ)+to_addr[oldpg].sg->offset;
278 283
279 /* We will just duplicate the second pixel at the packet */ 284 /* We will just duplicate the second pixel at the packet */
@@ -376,6 +381,8 @@ static void gen_line(struct sg_to_addr to_addr[],int inipos,int pages,int wmax,
376 381
377end: 382end:
378 kunmap_atomic(basep, KM_BOUNCE_READ); 383 kunmap_atomic(basep, KM_BOUNCE_READ);
384 spin_unlock_irqrestore(&spinlock,flags);
385
379} 386}
380static void vivi_fillbuff(struct vivi_dev *dev,struct vivi_buffer *buf) 387static void vivi_fillbuff(struct vivi_dev *dev,struct vivi_buffer *buf)
381{ 388{
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index 6e068cf1049b..b3f28a03b6a9 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -5,7 +5,7 @@
5 * For use with LSI Logic PCI chip/adapter(s) 5 * For use with LSI Logic PCI chip/adapter(s)
6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
7 * 7 *
8 * Copyright (c) 1999-2005 LSI Logic Corporation 8 * Copyright (c) 1999-2007 LSI Logic Corporation
9 * (mailto:mpt_linux_developer@lsil.com) 9 * (mailto:mpt_linux_developer@lsil.com)
10 * 10 *
11 */ 11 */
@@ -73,6 +73,7 @@
73MODULE_AUTHOR(MODULEAUTHOR); 73MODULE_AUTHOR(MODULEAUTHOR);
74MODULE_DESCRIPTION(my_NAME); 74MODULE_DESCRIPTION(my_NAME);
75MODULE_LICENSE("GPL"); 75MODULE_LICENSE("GPL");
76MODULE_VERSION(my_VERSION);
76 77
77/* 78/*
78 * cmd line parameters 79 * cmd line parameters
diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h
index a4afad4ecab2..e316708f76bd 100644
--- a/drivers/message/fusion/mptbase.h
+++ b/drivers/message/fusion/mptbase.h
@@ -5,7 +5,7 @@
5 * LSIFC9xx/LSI409xx Fibre Channel 5 * LSIFC9xx/LSI409xx Fibre Channel
6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
7 * 7 *
8 * Copyright (c) 1999-2005 LSI Logic Corporation 8 * Copyright (c) 1999-2007 LSI Logic Corporation
9 * (mailto:mpt_linux_developer@lsil.com) 9 * (mailto:mpt_linux_developer@lsil.com)
10 * 10 *
11 */ 11 */
@@ -72,11 +72,11 @@
72#endif 72#endif
73 73
74#ifndef COPYRIGHT 74#ifndef COPYRIGHT
75#define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR 75#define COPYRIGHT "Copyright (c) 1999-2007 " MODULEAUTHOR
76#endif 76#endif
77 77
78#define MPT_LINUX_VERSION_COMMON "3.04.02" 78#define MPT_LINUX_VERSION_COMMON "3.04.03"
79#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.04.02" 79#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.04.03"
80#define WHAT_MAGIC_STRING "@" "(" "#" ")" 80#define WHAT_MAGIC_STRING "@" "(" "#" ")"
81 81
82#define show_mptmod_ver(s,ver) \ 82#define show_mptmod_ver(s,ver) \
@@ -1059,7 +1059,7 @@ extern int mpt_stm_index; /* needed by mptstm.c */
1059/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 1059/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
1060#endif /* } __KERNEL__ */ 1060#endif /* } __KERNEL__ */
1061 1061
1062#if defined(__alpha__) || defined(__sparc_v9__) || defined(__ia64__) || defined(__x86_64__) 1062#if defined(__alpha__) || defined(__sparc_v9__) || defined(__ia64__) || defined(__x86_64__) || defined(__powerpc__)
1063#define CAST_U32_TO_PTR(x) ((void *)(u64)x) 1063#define CAST_U32_TO_PTR(x) ((void *)(u64)x)
1064#define CAST_PTR_TO_U32(x) ((u32)(u64)x) 1064#define CAST_PTR_TO_U32(x) ((u32)(u64)x)
1065#else 1065#else
diff --git a/drivers/message/fusion/mptctl.c b/drivers/message/fusion/mptctl.c
index 30975ccd9947..504632da4347 100644
--- a/drivers/message/fusion/mptctl.c
+++ b/drivers/message/fusion/mptctl.c
@@ -4,7 +4,7 @@
4 * For use with LSI Logic PCI chip/adapters 4 * For use with LSI Logic PCI chip/adapters
5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
6 * 6 *
7 * Copyright (c) 1999-2005 LSI Logic Corporation 7 * Copyright (c) 1999-2007 LSI Logic Corporation
8 * (mailto:mpt_linux_developer@lsil.com) 8 * (mailto:mpt_linux_developer@lsil.com)
9 * 9 *
10 */ 10 */
@@ -66,7 +66,7 @@
66#include <scsi/scsi_host.h> 66#include <scsi/scsi_host.h>
67#include <scsi/scsi_tcq.h> 67#include <scsi/scsi_tcq.h>
68 68
69#define COPYRIGHT "Copyright (c) 1999-2005 LSI Logic Corporation" 69#define COPYRIGHT "Copyright (c) 1999-2007 LSI Logic Corporation"
70#define MODULEAUTHOR "LSI Logic Corporation" 70#define MODULEAUTHOR "LSI Logic Corporation"
71#include "mptbase.h" 71#include "mptbase.h"
72#include "mptctl.h" 72#include "mptctl.h"
@@ -79,6 +79,7 @@
79MODULE_AUTHOR(MODULEAUTHOR); 79MODULE_AUTHOR(MODULEAUTHOR);
80MODULE_DESCRIPTION(my_NAME); 80MODULE_DESCRIPTION(my_NAME);
81MODULE_LICENSE("GPL"); 81MODULE_LICENSE("GPL");
82MODULE_VERSION(my_VERSION);
82 83
83/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 84/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
84 85
diff --git a/drivers/message/fusion/mptctl.h b/drivers/message/fusion/mptctl.h
index 043941882c6e..e65a1cf5eb0b 100644
--- a/drivers/message/fusion/mptctl.h
+++ b/drivers/message/fusion/mptctl.h
@@ -5,7 +5,7 @@
5 * LSIFC9xx/LSI409xx Fibre Channel 5 * LSIFC9xx/LSI409xx Fibre Channel
6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
7 * 7 *
8 * Copyright (c) 1999-2005 LSI Logic Corporation 8 * Copyright (c) 1999-2007 LSI Logic Corporation
9 * (mailto:mpt_linux_developer@lsil.com) 9 * (mailto:mpt_linux_developer@lsil.com)
10 * 10 *
11 */ 11 */
diff --git a/drivers/message/fusion/mptfc.c b/drivers/message/fusion/mptfc.c
index ca2f9107f145..c819c23b55b1 100644
--- a/drivers/message/fusion/mptfc.c
+++ b/drivers/message/fusion/mptfc.c
@@ -3,7 +3,7 @@
3 * For use with LSI Logic PCI chip/adapter(s) 3 * For use with LSI Logic PCI chip/adapter(s)
4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
5 * 5 *
6 * Copyright (c) 1999-2005 LSI Logic Corporation 6 * Copyright (c) 1999-2007 LSI Logic Corporation
7 * (mailto:mpt_linux_developer@lsil.com) 7 * (mailto:mpt_linux_developer@lsil.com)
8 * 8 *
9 */ 9 */
@@ -75,6 +75,7 @@
75MODULE_AUTHOR(MODULEAUTHOR); 75MODULE_AUTHOR(MODULEAUTHOR);
76MODULE_DESCRIPTION(my_NAME); 76MODULE_DESCRIPTION(my_NAME);
77MODULE_LICENSE("GPL"); 77MODULE_LICENSE("GPL");
78MODULE_VERSION(my_VERSION);
78 79
79/* Command line args */ 80/* Command line args */
80#define MPTFC_DEV_LOSS_TMO (60) 81#define MPTFC_DEV_LOSS_TMO (60)
diff --git a/drivers/message/fusion/mptlan.c b/drivers/message/fusion/mptlan.c
index b7c4407c5e3f..2936204d8ad6 100644
--- a/drivers/message/fusion/mptlan.c
+++ b/drivers/message/fusion/mptlan.c
@@ -4,7 +4,7 @@
4 * For use with LSI Logic Fibre Channel PCI chip/adapters 4 * For use with LSI Logic Fibre Channel PCI chip/adapters
5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
6 * 6 *
7 * Copyright (c) 2000-2005 LSI Logic Corporation 7 * Copyright (c) 2000-2007 LSI Logic Corporation
8 * 8 *
9 */ 9 */
10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
@@ -56,9 +56,11 @@
56#include <linux/module.h> 56#include <linux/module.h>
57#include <linux/fs.h> 57#include <linux/fs.h>
58 58
59#define my_VERSION MPT_LINUX_VERSION_COMMON
59#define MYNAM "mptlan" 60#define MYNAM "mptlan"
60 61
61MODULE_LICENSE("GPL"); 62MODULE_LICENSE("GPL");
63MODULE_VERSION(my_VERSION);
62 64
63/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 65/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
64/* 66/*
diff --git a/drivers/message/fusion/mptlan.h b/drivers/message/fusion/mptlan.h
index 3726ecba5707..70ab75e7c263 100644
--- a/drivers/message/fusion/mptlan.h
+++ b/drivers/message/fusion/mptlan.h
@@ -4,7 +4,7 @@
4 * For use with LSI Logic Fibre Channel PCI chip/adapters 4 * For use with LSI Logic Fibre Channel PCI chip/adapters
5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
6 * 6 *
7 * Copyright (c) 2000-2005 LSI Logic Corporation 7 * Copyright (c) 2000-2007 LSI Logic Corporation
8 * 8 *
9 */ 9 */
10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index 4f0c530e47b0..09e9a9d96410 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -3,9 +3,9 @@
3 * For use with LSI Logic PCI chip/adapter(s) 3 * For use with LSI Logic PCI chip/adapter(s)
4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
5 * 5 *
6 * Copyright (c) 1999-2005 LSI Logic Corporation 6 * Copyright (c) 1999-2007 LSI Logic Corporation
7 * (mailto:mpt_linux_developer@lsil.com) 7 * (mailto:mpt_linux_developer@lsil.com)
8 * Copyright (c) 2005-2006 Dell 8 * Copyright (c) 2005-2007 Dell
9 */ 9 */
10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 10/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
11/* 11/*
@@ -75,6 +75,7 @@
75MODULE_AUTHOR(MODULEAUTHOR); 75MODULE_AUTHOR(MODULEAUTHOR);
76MODULE_DESCRIPTION(my_NAME); 76MODULE_DESCRIPTION(my_NAME);
77MODULE_LICENSE("GPL"); 77MODULE_LICENSE("GPL");
78MODULE_VERSION(my_VERSION);
78 79
79static int mpt_pt_clear; 80static int mpt_pt_clear;
80module_param(mpt_pt_clear, int, 0); 81module_param(mpt_pt_clear, int, 0);
@@ -245,7 +246,8 @@ static void mptsas_print_device_pg0(SasDevicePage0_t *pg0)
245 printk("Parent Handle=0x%X\n" ,le16_to_cpu(pg0->ParentDevHandle)); 246 printk("Parent Handle=0x%X\n" ,le16_to_cpu(pg0->ParentDevHandle));
246 printk("Enclosure Handle=0x%X\n", le16_to_cpu(pg0->EnclosureHandle)); 247 printk("Enclosure Handle=0x%X\n", le16_to_cpu(pg0->EnclosureHandle));
247 printk("Slot=0x%X\n", le16_to_cpu(pg0->Slot)); 248 printk("Slot=0x%X\n", le16_to_cpu(pg0->Slot));
248 printk("SAS Address=0x%llX\n", le64_to_cpu(sas_address)); 249 printk("SAS Address=0x%llX\n", (unsigned long long)
250 le64_to_cpu(sas_address));
249 printk("Target ID=0x%X\n", pg0->TargetID); 251 printk("Target ID=0x%X\n", pg0->TargetID);
250 printk("Bus=0x%X\n", pg0->Bus); 252 printk("Bus=0x%X\n", pg0->Bus);
251 /* The PhyNum field specifies the PHY number of the parent 253 /* The PhyNum field specifies the PHY number of the parent
@@ -349,9 +351,9 @@ mptsas_port_delete(struct mptsas_portinfo_details * port_details)
349 phy_info = port_info->phy_info; 351 phy_info = port_info->phy_info;
350 352
351 dsaswideprintk((KERN_DEBUG "%s: [%p]: num_phys=%02d " 353 dsaswideprintk((KERN_DEBUG "%s: [%p]: num_phys=%02d "
352 "bitmask=0x%016llX\n", 354 "bitmask=0x%016llX\n", __FUNCTION__, port_details,
353 __FUNCTION__, port_details, port_details->num_phys, 355 port_details->num_phys, (unsigned long long)
354 port_details->phy_bitmask)); 356 port_details->phy_bitmask));
355 357
356 for (i = 0; i < port_info->num_phys; i++, phy_info++) { 358 for (i = 0; i < port_info->num_phys; i++, phy_info++) {
357 if(phy_info->port_details != port_details) 359 if(phy_info->port_details != port_details)
@@ -476,7 +478,7 @@ mptsas_setup_wide_ports(MPT_ADAPTER *ioc, struct mptsas_portinfo *port_info)
476 for (i = 0 ; i < port_info->num_phys ; i++, phy_info++) { 478 for (i = 0 ; i < port_info->num_phys ; i++, phy_info++) {
477 sas_address = phy_info->attached.sas_address; 479 sas_address = phy_info->attached.sas_address;
478 dsaswideprintk((KERN_DEBUG "phy_id=%d sas_address=0x%018llX\n", 480 dsaswideprintk((KERN_DEBUG "phy_id=%d sas_address=0x%018llX\n",
479 i, sas_address)); 481 i, (unsigned long long)sas_address));
480 if (!sas_address) 482 if (!sas_address)
481 continue; 483 continue;
482 port_details = phy_info->port_details; 484 port_details = phy_info->port_details;
@@ -495,8 +497,8 @@ mptsas_setup_wide_ports(MPT_ADAPTER *ioc, struct mptsas_portinfo *port_info)
495 (1 << phy_info->phy_id); 497 (1 << phy_info->phy_id);
496 phy_info->sas_port_add_phy=1; 498 phy_info->sas_port_add_phy=1;
497 dsaswideprintk((KERN_DEBUG "\t\tForming port\n\t\t" 499 dsaswideprintk((KERN_DEBUG "\t\tForming port\n\t\t"
498 "phy_id=%d sas_address=0x%018llX\n", 500 "phy_id=%d sas_address=0x%018llX\n",
499 i, sas_address)); 501 i, (unsigned long long)sas_address));
500 phy_info->port_details = port_details; 502 phy_info->port_details = port_details;
501 } 503 }
502 504
@@ -512,8 +514,9 @@ mptsas_setup_wide_ports(MPT_ADAPTER *ioc, struct mptsas_portinfo *port_info)
512 if (phy_info_cmp->port_details == port_details ) 514 if (phy_info_cmp->port_details == port_details )
513 continue; 515 continue;
514 dsaswideprintk((KERN_DEBUG 516 dsaswideprintk((KERN_DEBUG
515 "\t\tphy_id=%d sas_address=0x%018llX\n", 517 "\t\tphy_id=%d sas_address=0x%018llX\n",
516 j, phy_info_cmp->attached.sas_address)); 518 j, (unsigned long long)
519 phy_info_cmp->attached.sas_address));
517 if (phy_info_cmp->port_details) { 520 if (phy_info_cmp->port_details) {
518 port_details->rphy = 521 port_details->rphy =
519 mptsas_get_rphy(phy_info_cmp); 522 mptsas_get_rphy(phy_info_cmp);
@@ -546,11 +549,10 @@ mptsas_setup_wide_ports(MPT_ADAPTER *ioc, struct mptsas_portinfo *port_info)
546 if (!port_details) 549 if (!port_details)
547 continue; 550 continue;
548 dsaswideprintk((KERN_DEBUG 551 dsaswideprintk((KERN_DEBUG
549 "%s: [%p]: phy_id=%02d num_phys=%02d " 552 "%s: [%p]: phy_id=%02d num_phys=%02d "
550 "bitmask=0x%016llX\n", 553 "bitmask=0x%016llX\n", __FUNCTION__,
551 __FUNCTION__, 554 port_details, i, port_details->num_phys,
552 port_details, i, port_details->num_phys, 555 (unsigned long long)port_details->phy_bitmask));
553 port_details->phy_bitmask));
554 dsaswideprintk((KERN_DEBUG"\t\tport = %p rphy=%p\n", 556 dsaswideprintk((KERN_DEBUG"\t\tport = %p rphy=%p\n",
555 port_details->port, port_details->rphy)); 557 port_details->port, port_details->rphy));
556 } 558 }
@@ -2079,8 +2081,10 @@ mptsas_persist_clear_table(struct work_struct *work)
2079static void 2081static void
2080mptsas_reprobe_lun(struct scsi_device *sdev, void *data) 2082mptsas_reprobe_lun(struct scsi_device *sdev, void *data)
2081{ 2083{
2084 int rc;
2085
2082 sdev->no_uld_attach = data ? 1 : 0; 2086 sdev->no_uld_attach = data ? 1 : 0;
2083 scsi_device_reprobe(sdev); 2087 rc = scsi_device_reprobe(sdev);
2084} 2088}
2085 2089
2086static void 2090static void
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index 2c72c36b8171..f0cca3ea93b2 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -3,7 +3,7 @@
3 * For use with LSI Logic PCI chip/adapter(s) 3 * For use with LSI Logic PCI chip/adapter(s)
4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
5 * 5 *
6 * Copyright (c) 1999-2005 LSI Logic Corporation 6 * Copyright (c) 1999-2007 LSI Logic Corporation
7 * (mailto:mpt_linux_developer@lsil.com) 7 * (mailto:mpt_linux_developer@lsil.com)
8 * 8 *
9 */ 9 */
@@ -76,6 +76,7 @@
76MODULE_AUTHOR(MODULEAUTHOR); 76MODULE_AUTHOR(MODULEAUTHOR);
77MODULE_DESCRIPTION(my_NAME); 77MODULE_DESCRIPTION(my_NAME);
78MODULE_LICENSE("GPL"); 78MODULE_LICENSE("GPL");
79MODULE_VERSION(my_VERSION);
79 80
80/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 81/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
81 82
@@ -701,6 +702,17 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
701 break; 702 break;
702 } 703 }
703 } 704 }
705 } else if (ioc->bus_type == FC) {
706 /*
707 * The FC IOC may kill a request for variety of
708 * reasons, some of which may be recovered by a
709 * retry, some which are unlikely to be
710 * recovered. Return DID_ERROR instead of
711 * DID_RESET to permit retry of the command,
712 * just not an infinite number of them
713 */
714 sc->result = DID_ERROR << 16;
715 break;
704 } 716 }
705 717
706 /* 718 /*
@@ -2688,7 +2700,8 @@ mptscsih_initTarget(MPT_SCSI_HOST *hd, VirtTarget *vtarget,
2688 struct scsi_device *sdev) 2700 struct scsi_device *sdev)
2689{ 2701{
2690 dinitprintk((MYIOC_s_INFO_FMT "initTarget bus=%d id=%d lun=%d hd=%p\n", 2702 dinitprintk((MYIOC_s_INFO_FMT "initTarget bus=%d id=%d lun=%d hd=%p\n",
2691 hd->ioc->name, vtarget->bus_id, vtarget->target_id, lun, hd)); 2703 hd->ioc->name, vtarget->bus_id, vtarget->target_id,
2704 sdev->lun, hd));
2692 2705
2693 /* Is LUN supported? If so, upper 2 bits will be 0 2706 /* Is LUN supported? If so, upper 2 bits will be 0
2694 * in first byte of inquiry data. 2707 * in first byte of inquiry data.
@@ -2770,7 +2783,7 @@ mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtTarget *target,
2770 else { 2783 else {
2771 factor = MPT_ULTRA320; 2784 factor = MPT_ULTRA320;
2772 if (scsi_device_qas(sdev)) { 2785 if (scsi_device_qas(sdev)) {
2773 ddvtprintk((KERN_INFO "Enabling QAS due to byte56=%02x on id=%d!\n", byte56, id)); 2786 ddvtprintk((KERN_INFO "Enabling QAS due to byte56=%02x on id=%d!\n", scsi_device_qas(sdev), id));
2774 noQas = 0; 2787 noQas = 0;
2775 } 2788 }
2776 if (sdev->type == TYPE_TAPE && 2789 if (sdev->type == TYPE_TAPE &&
diff --git a/drivers/message/fusion/mptscsih.h b/drivers/message/fusion/mptscsih.h
index 14a5b6c2e2bd..187c8af0890b 100644
--- a/drivers/message/fusion/mptscsih.h
+++ b/drivers/message/fusion/mptscsih.h
@@ -5,7 +5,7 @@
5 * LSIFC9xx/LSI409xx Fibre Channel 5 * LSIFC9xx/LSI409xx Fibre Channel
6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 6 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
7 * 7 *
8 * Copyright (c) 1999-2005 LSI Logic Corporation 8 * Copyright (c) 1999-2007 LSI Logic Corporation
9 * (mailto:mpt_linux_developer@lsil.com) 9 * (mailto:mpt_linux_developer@lsil.com)
10 * 10 *
11 */ 11 */
diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
index 36641da59289..203c661d2c79 100644
--- a/drivers/message/fusion/mptspi.c
+++ b/drivers/message/fusion/mptspi.c
@@ -3,7 +3,7 @@
3 * For use with LSI Logic PCI chip/adapter(s) 3 * For use with LSI Logic PCI chip/adapter(s)
4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 4 * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
5 * 5 *
6 * Copyright (c) 1999-2005 LSI Logic Corporation 6 * Copyright (c) 1999-2007 LSI Logic Corporation
7 * (mailto:mpt_linux_developer@lsil.com) 7 * (mailto:mpt_linux_developer@lsil.com)
8 * 8 *
9 */ 9 */
@@ -77,6 +77,7 @@
77MODULE_AUTHOR(MODULEAUTHOR); 77MODULE_AUTHOR(MODULEAUTHOR);
78MODULE_DESCRIPTION(my_NAME); 78MODULE_DESCRIPTION(my_NAME);
79MODULE_LICENSE("GPL"); 79MODULE_LICENSE("GPL");
80MODULE_VERSION(my_VERSION);
80 81
81/* Command line args */ 82/* Command line args */
82static int mpt_saf_te = MPTSCSIH_SAF_TE; 83static int mpt_saf_te = MPTSCSIH_SAF_TE;
diff --git a/drivers/mmc/imxmmc.c b/drivers/mmc/imxmmc.c
index 06e7fcd19221..bfb9ff693208 100644
--- a/drivers/mmc/imxmmc.c
+++ b/drivers/mmc/imxmmc.c
@@ -351,9 +351,6 @@ static void imxmci_start_cmd(struct imxmci_host *host, struct mmc_command *cmd,
351 case MMC_RSP_R3: /* short */ 351 case MMC_RSP_R3: /* short */
352 cmdat |= CMD_DAT_CONT_RESPONSE_FORMAT_R3; 352 cmdat |= CMD_DAT_CONT_RESPONSE_FORMAT_R3;
353 break; 353 break;
354 case MMC_RSP_R6: /* short CRC */
355 cmdat |= CMD_DAT_CONT_RESPONSE_FORMAT_R6;
356 break;
357 default: 354 default:
358 break; 355 break;
359 } 356 }
diff --git a/drivers/mmc/omap.c b/drivers/mmc/omap.c
index 9488408308fb..d30540b27614 100644
--- a/drivers/mmc/omap.c
+++ b/drivers/mmc/omap.c
@@ -91,7 +91,6 @@
91 91
92 92
93#define DRIVER_NAME "mmci-omap" 93#define DRIVER_NAME "mmci-omap"
94#define RSP_TYPE(x) ((x) & ~(MMC_RSP_BUSY|MMC_RSP_OPCODE))
95 94
96/* Specifies how often in millisecs to poll for card status changes 95/* Specifies how often in millisecs to poll for card status changes
97 * when the cover switch is open */ 96 * when the cover switch is open */
@@ -204,18 +203,22 @@ mmc_omap_start_command(struct mmc_omap_host *host, struct mmc_command *cmd)
204 cmdtype = 0; 203 cmdtype = 0;
205 204
206 /* Our hardware needs to know exact type */ 205 /* Our hardware needs to know exact type */
207 switch (RSP_TYPE(mmc_resp_type(cmd))) { 206 switch (mmc_resp_type(cmd)) {
208 case RSP_TYPE(MMC_RSP_R1): 207 case MMC_RSP_NONE:
209 /* resp 1, resp 1b */ 208 break;
209 case MMC_RSP_R1:
210 case MMC_RSP_R1B:
211 /* resp 1, 1b, 6, 7 */
210 resptype = 1; 212 resptype = 1;
211 break; 213 break;
212 case RSP_TYPE(MMC_RSP_R2): 214 case MMC_RSP_R2:
213 resptype = 2; 215 resptype = 2;
214 break; 216 break;
215 case RSP_TYPE(MMC_RSP_R3): 217 case MMC_RSP_R3:
216 resptype = 3; 218 resptype = 3;
217 break; 219 break;
218 default: 220 default:
221 dev_err(mmc_dev(host->mmc), "Invalid response type: %04x\n", mmc_resp_type(cmd));
219 break; 222 break;
220 } 223 }
221 224
diff --git a/drivers/mmc/pxamci.c b/drivers/mmc/pxamci.c
index 45a9283ce498..6073d998b11f 100644
--- a/drivers/mmc/pxamci.c
+++ b/drivers/mmc/pxamci.c
@@ -171,7 +171,7 @@ static void pxamci_start_cmd(struct pxamci_host *host, struct mmc_command *cmd,
171 171
172#define RSP_TYPE(x) ((x) & ~(MMC_RSP_BUSY|MMC_RSP_OPCODE)) 172#define RSP_TYPE(x) ((x) & ~(MMC_RSP_BUSY|MMC_RSP_OPCODE))
173 switch (RSP_TYPE(mmc_resp_type(cmd))) { 173 switch (RSP_TYPE(mmc_resp_type(cmd))) {
174 case RSP_TYPE(MMC_RSP_R1): /* r1, r1b, r6 */ 174 case RSP_TYPE(MMC_RSP_R1): /* r1, r1b, r6, r7 */
175 cmdat |= CMDAT_RESP_SHORT; 175 cmdat |= CMDAT_RESP_SHORT;
176 break; 176 break;
177 case RSP_TYPE(MMC_RSP_R3): 177 case RSP_TYPE(MMC_RSP_R3):
diff --git a/drivers/mmc/tifm_sd.c b/drivers/mmc/tifm_sd.c
index f18ad998b3cb..fa4a52886b97 100644
--- a/drivers/mmc/tifm_sd.c
+++ b/drivers/mmc/tifm_sd.c
@@ -173,9 +173,6 @@ static unsigned int tifm_sd_op_flags(struct mmc_command *cmd)
173 case MMC_RSP_R3: 173 case MMC_RSP_R3:
174 rc |= TIFM_MMCSD_RSP_R3; 174 rc |= TIFM_MMCSD_RSP_R3;
175 break; 175 break;
176 case MMC_RSP_R6:
177 rc |= TIFM_MMCSD_RSP_R6;
178 break;
179 default: 176 default:
180 BUG(); 177 BUG();
181 } 178 }
diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig
index f457315579db..bbf0553bdb2e 100644
--- a/drivers/mtd/maps/Kconfig
+++ b/drivers/mtd/maps/Kconfig
@@ -204,7 +204,7 @@ config MTD_ESB2ROM
204 204
205config MTD_CK804XROM 205config MTD_CK804XROM
206 tristate "BIOS flash chip on Nvidia CK804" 206 tristate "BIOS flash chip on Nvidia CK804"
207 depends on X86 && MTD_JEDECPROBE 207 depends on X86 && MTD_JEDECPROBE && PCI
208 help 208 help
209 Support for treating the BIOS flash chip on nvidia motherboards 209 Support for treating the BIOS flash chip on nvidia motherboards
210 as an MTD device - with this you can reprogram your BIOS. 210 as an MTD device - with this you can reprogram your BIOS.
diff --git a/drivers/mtd/maps/ck804xrom.c b/drivers/mtd/maps/ck804xrom.c
index 238d42e88ec5..68ed02ecb2ec 100644
--- a/drivers/mtd/maps/ck804xrom.c
+++ b/drivers/mtd/maps/ck804xrom.c
@@ -327,7 +327,7 @@ static int __init init_ck804xrom(void)
327 pdev = NULL; 327 pdev = NULL;
328 328
329 for(id = ck804xrom_pci_tbl; id->vendor; id++) { 329 for(id = ck804xrom_pci_tbl; id->vendor; id++) {
330 pdev = pci_find_device(id->vendor, id->device, NULL); 330 pdev = pci_get_device(id->vendor, id->device, NULL);
331 if (pdev) 331 if (pdev)
332 break; 332 break;
333 } 333 }
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index 358f55a82dbe..9326a56f0fbc 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -223,7 +223,7 @@ config MTD_NAND_SHARPSL
223 223
224config MTD_NAND_CAFE 224config MTD_NAND_CAFE
225 tristate "NAND support for OLPC CAFÉ chip" 225 tristate "NAND support for OLPC CAFÉ chip"
226 depends on PCI 226 depends on MTD_NAND && PCI
227 help 227 help
228 Use NAND flash attached to the CAFÉ chip designed for the $100 228 Use NAND flash attached to the CAFÉ chip designed for the $100
229 laptop. 229 laptop.
diff --git a/drivers/mtd/nand/cafe.c b/drivers/mtd/nand/cafe.c
index b8d9b64cccc0..1e877cbe7757 100644
--- a/drivers/mtd/nand/cafe.c
+++ b/drivers/mtd/nand/cafe.c
@@ -14,6 +14,7 @@
14#include <linux/pci.h> 14#include <linux/pci.h>
15#include <linux/delay.h> 15#include <linux/delay.h>
16#include <linux/interrupt.h> 16#include <linux/interrupt.h>
17#include <linux/dma-mapping.h>
17#include <asm/io.h> 18#include <asm/io.h>
18 19
19#define CAFE_NAND_CTRL1 0x00 20#define CAFE_NAND_CTRL1 0x00
@@ -77,8 +78,9 @@ module_param(regdebug, int, 0644);
77static int checkecc = 1; 78static int checkecc = 1;
78module_param(checkecc, int, 0644); 79module_param(checkecc, int, 0644);
79 80
80static int slowtiming = 0; 81static int numtimings;
81module_param(slowtiming, int, 0644); 82static int timing[3];
83module_param_array(timing, int, &numtimings, 0644);
82 84
83/* Hrm. Why isn't this already conditional on something in the struct device? */ 85/* Hrm. Why isn't this already conditional on something in the struct device? */
84#define cafe_dev_dbg(dev, args...) do { if (debug) dev_dbg(dev, ##args); } while(0) 86#define cafe_dev_dbg(dev, args...) do { if (debug) dev_dbg(dev, ##args); } while(0)
@@ -528,6 +530,7 @@ static int __devinit cafe_nand_probe(struct pci_dev *pdev,
528{ 530{
529 struct mtd_info *mtd; 531 struct mtd_info *mtd;
530 struct cafe_priv *cafe; 532 struct cafe_priv *cafe;
533 uint32_t timing1, timing2, timing3;
531 uint32_t ctrl; 534 uint32_t ctrl;
532 int err = 0; 535 int err = 0;
533 536
@@ -579,30 +582,44 @@ static int __devinit cafe_nand_probe(struct pci_dev *pdev,
579 cafe->nand.block_bad = cafe_nand_block_bad; 582 cafe->nand.block_bad = cafe_nand_block_bad;
580 } 583 }
581 584
585 if (numtimings && numtimings != 3) {
586 dev_warn(&cafe->pdev->dev, "%d timing register values ignored; precisely three are required\n", numtimings);
587 }
588
589 if (numtimings == 3) {
590 timing1 = timing[0];
591 timing2 = timing[1];
592 timing3 = timing[2];
593 cafe_dev_dbg(&cafe->pdev->dev, "Using provided timings (%08x %08x %08x)\n",
594 timing1, timing2, timing3);
595 } else {
596 timing1 = cafe_readl(cafe, NAND_TIMING1);
597 timing2 = cafe_readl(cafe, NAND_TIMING2);
598 timing3 = cafe_readl(cafe, NAND_TIMING3);
599
600 if (timing1 | timing2 | timing3) {
601 cafe_dev_dbg(&cafe->pdev->dev, "Timing registers already set (%08x %08x %08x)\n", timing1, timing2, timing3);
602 } else {
603 dev_warn(&cafe->pdev->dev, "Timing registers unset; using most conservative defaults\n");
604 timing1 = timing2 = timing3 = 0xffffffff;
605 }
606 }
607
582 /* Start off by resetting the NAND controller completely */ 608 /* Start off by resetting the NAND controller completely */
583 cafe_writel(cafe, 1, NAND_RESET); 609 cafe_writel(cafe, 1, NAND_RESET);
584 cafe_writel(cafe, 0, NAND_RESET); 610 cafe_writel(cafe, 0, NAND_RESET);
585 611
586 cafe_writel(cafe, 0xffffffff, NAND_IRQ_MASK); 612 cafe_writel(cafe, timing1, NAND_TIMING1);
613 cafe_writel(cafe, timing2, NAND_TIMING2);
614 cafe_writel(cafe, timing3, NAND_TIMING3);
587 615
588 /* Timings from Marvell's test code (not verified or calculated by us) */
589 if (!slowtiming) {
590 cafe_writel(cafe, 0x01010a0a, NAND_TIMING1);
591 cafe_writel(cafe, 0x24121212, NAND_TIMING2);
592 cafe_writel(cafe, 0x11000000, NAND_TIMING3);
593 } else {
594 cafe_writel(cafe, 0xffffffff, NAND_TIMING1);
595 cafe_writel(cafe, 0xffffffff, NAND_TIMING2);
596 cafe_writel(cafe, 0xffffffff, NAND_TIMING3);
597 }
598 cafe_writel(cafe, 0xffffffff, NAND_IRQ_MASK); 616 cafe_writel(cafe, 0xffffffff, NAND_IRQ_MASK);
599 err = request_irq(pdev->irq, &cafe_nand_interrupt, SA_SHIRQ, "CAFE NAND", mtd); 617 err = request_irq(pdev->irq, &cafe_nand_interrupt, SA_SHIRQ, "CAFE NAND", mtd);
600 if (err) { 618 if (err) {
601 dev_warn(&pdev->dev, "Could not register IRQ %d\n", pdev->irq); 619 dev_warn(&pdev->dev, "Could not register IRQ %d\n", pdev->irq);
602
603 goto out_free_dma; 620 goto out_free_dma;
604 } 621 }
605#if 1 622
606 /* Disable master reset, enable NAND clock */ 623 /* Disable master reset, enable NAND clock */
607 ctrl = cafe_readl(cafe, GLOBAL_CTRL); 624 ctrl = cafe_readl(cafe, GLOBAL_CTRL);
608 ctrl &= 0xffffeff0; 625 ctrl &= 0xffffeff0;
@@ -629,32 +646,8 @@ static int __devinit cafe_nand_probe(struct pci_dev *pdev,
629 cafe_writel(cafe, 0x80000007, GLOBAL_IRQ_MASK); 646 cafe_writel(cafe, 0x80000007, GLOBAL_IRQ_MASK);
630 cafe_dev_dbg(&cafe->pdev->dev, "Control %x, IRQ mask %x\n", 647 cafe_dev_dbg(&cafe->pdev->dev, "Control %x, IRQ mask %x\n",
631 cafe_readl(cafe, GLOBAL_CTRL), cafe_readl(cafe, GLOBAL_IRQ_MASK)); 648 cafe_readl(cafe, GLOBAL_CTRL), cafe_readl(cafe, GLOBAL_IRQ_MASK));
632#endif 649
633#if 1 650 /* Scan to find existence of the device */
634 mtd->writesize=2048;
635 mtd->oobsize = 0x40;
636 memset(cafe->dmabuf, 0x5a, 2112);
637 cafe->nand.cmdfunc(mtd, NAND_CMD_READID, 0, -1);
638 cafe->nand.read_byte(mtd);
639 cafe->nand.read_byte(mtd);
640 cafe->nand.read_byte(mtd);
641 cafe->nand.read_byte(mtd);
642 cafe->nand.read_byte(mtd);
643#endif
644#if 0
645 cafe->nand.cmdfunc(mtd, NAND_CMD_READ0, 0, 0);
646 // nand_wait_ready(mtd);
647 cafe->nand.read_byte(mtd);
648 cafe->nand.read_byte(mtd);
649 cafe->nand.read_byte(mtd);
650 cafe->nand.read_byte(mtd);
651#endif
652#if 0
653 writel(0x84600070, cafe->mmio);
654 udelay(10);
655 cafe_dev_dbg(&cafe->pdev->dev, "Status %x\n", cafe_readl(cafe, NAND_NONMEM));
656#endif
657 /* Scan to find existance of the device */
658 if (nand_scan_ident(mtd, 1)) { 651 if (nand_scan_ident(mtd, 1)) {
659 err = -ENXIO; 652 err = -ENXIO;
660 goto out_irq; 653 goto out_irq;
@@ -758,13 +751,4 @@ module_exit(cafe_nand_exit);
758 751
759MODULE_LICENSE("GPL"); 752MODULE_LICENSE("GPL");
760MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>"); 753MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>");
761MODULE_DESCRIPTION("NAND flash driver for OLPC CAFE chip"); 754MODULE_DESCRIPTION("NAND flash driver for OLPC CAFÉ chip");
762
763/* Correct ECC for 2048 bytes of 0xff:
764 41 a0 71 65 54 27 f3 93 ec a9 be ed 0b a1 */
765
766/* dwmw2's B-test board, in case of completely screwing it:
767Bad eraseblock 2394 at 0x12b40000
768Bad eraseblock 2627 at 0x14860000
769Bad eraseblock 3349 at 0x1a2a0000
770*/
diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
index e2cb19b582a1..6f93a765e564 100644
--- a/drivers/net/8139cp.c
+++ b/drivers/net/8139cp.c
@@ -765,17 +765,18 @@ static int cp_start_xmit (struct sk_buff *skb, struct net_device *dev)
765 struct cp_private *cp = netdev_priv(dev); 765 struct cp_private *cp = netdev_priv(dev);
766 unsigned entry; 766 unsigned entry;
767 u32 eor, flags; 767 u32 eor, flags;
768 unsigned long intr_flags;
768#if CP_VLAN_TAG_USED 769#if CP_VLAN_TAG_USED
769 u32 vlan_tag = 0; 770 u32 vlan_tag = 0;
770#endif 771#endif
771 int mss = 0; 772 int mss = 0;
772 773
773 spin_lock_irq(&cp->lock); 774 spin_lock_irqsave(&cp->lock, intr_flags);
774 775
775 /* This is a hard error, log it. */ 776 /* This is a hard error, log it. */
776 if (TX_BUFFS_AVAIL(cp) <= (skb_shinfo(skb)->nr_frags + 1)) { 777 if (TX_BUFFS_AVAIL(cp) <= (skb_shinfo(skb)->nr_frags + 1)) {
777 netif_stop_queue(dev); 778 netif_stop_queue(dev);
778 spin_unlock_irq(&cp->lock); 779 spin_unlock_irqrestore(&cp->lock, intr_flags);
779 printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n", 780 printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n",
780 dev->name); 781 dev->name);
781 return 1; 782 return 1;
@@ -908,7 +909,7 @@ static int cp_start_xmit (struct sk_buff *skb, struct net_device *dev)
908 if (TX_BUFFS_AVAIL(cp) <= (MAX_SKB_FRAGS + 1)) 909 if (TX_BUFFS_AVAIL(cp) <= (MAX_SKB_FRAGS + 1))
909 netif_stop_queue(dev); 910 netif_stop_queue(dev);
910 911
911 spin_unlock_irq(&cp->lock); 912 spin_unlock_irqrestore(&cp->lock, intr_flags);
912 913
913 cpw8(TxPoll, NormalTxPoll); 914 cpw8(TxPoll, NormalTxPoll);
914 dev->trans_start = jiffies; 915 dev->trans_start = jiffies;
diff --git a/drivers/net/82596.c b/drivers/net/82596.c
index 8236f26ffd46..640d7ca2ebcf 100644
--- a/drivers/net/82596.c
+++ b/drivers/net/82596.c
@@ -1066,8 +1066,8 @@ static int i596_start_xmit(struct sk_buff *skb, struct net_device *dev)
1066 short length = skb->len; 1066 short length = skb->len;
1067 dev->trans_start = jiffies; 1067 dev->trans_start = jiffies;
1068 1068
1069 DEB(DEB_STARTTX,printk(KERN_DEBUG "%s: i596_start_xmit(%x,%x) called\n", dev->name, 1069 DEB(DEB_STARTTX,printk(KERN_DEBUG "%s: i596_start_xmit(%x,%p) called\n",
1070 skb->len, (unsigned int)skb->data)); 1070 dev->name, skb->len, skb->data));
1071 1071
1072 if (skb->len < ETH_ZLEN) { 1072 if (skb->len < ETH_ZLEN) {
1073 if (skb_padto(skb, ETH_ZLEN)) 1073 if (skb_padto(skb, ETH_ZLEN))
@@ -1246,7 +1246,8 @@ struct net_device * __init i82596_probe(int unit)
1246 dev->priv = (void *)(dev->mem_start); 1246 dev->priv = (void *)(dev->mem_start);
1247 1247
1248 lp = dev->priv; 1248 lp = dev->priv;
1249 DEB(DEB_INIT,printk(KERN_DEBUG "%s: lp at 0x%08lx (%d bytes), lp->scb at 0x%08lx\n", 1249 DEB(DEB_INIT,printk(KERN_DEBUG "%s: lp at 0x%08lx (%zd bytes), "
1250 "lp->scb at 0x%08lx\n",
1250 dev->name, (unsigned long)lp, 1251 dev->name, (unsigned long)lp,
1251 sizeof(struct i596_private), (unsigned long)&lp->scb)); 1252 sizeof(struct i596_private), (unsigned long)&lp->scb));
1252 memset((void *) lp, 0, sizeof(struct i596_private)); 1253 memset((void *) lp, 0, sizeof(struct i596_private));
diff --git a/drivers/net/b44.c b/drivers/net/b44.c
index 5eb2ec68393f..303a8d94ad4b 100644
--- a/drivers/net/b44.c
+++ b/drivers/net/b44.c
@@ -110,6 +110,11 @@ MODULE_DEVICE_TABLE(pci, b44_pci_tbl);
110 110
111static void b44_halt(struct b44 *); 111static void b44_halt(struct b44 *);
112static void b44_init_rings(struct b44 *); 112static void b44_init_rings(struct b44 *);
113
114#define B44_FULL_RESET 1
115#define B44_FULL_RESET_SKIP_PHY 2
116#define B44_PARTIAL_RESET 3
117
113static void b44_init_hw(struct b44 *, int); 118static void b44_init_hw(struct b44 *, int);
114 119
115static int dma_desc_align_mask; 120static int dma_desc_align_mask;
@@ -752,7 +757,7 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
752 dest_idx * sizeof(dest_desc), 757 dest_idx * sizeof(dest_desc),
753 DMA_BIDIRECTIONAL); 758 DMA_BIDIRECTIONAL);
754 759
755 pci_dma_sync_single_for_device(bp->pdev, src_desc->addr, 760 pci_dma_sync_single_for_device(bp->pdev, le32_to_cpu(src_desc->addr),
756 RX_PKT_BUF_SZ, 761 RX_PKT_BUF_SZ,
757 PCI_DMA_FROMDEVICE); 762 PCI_DMA_FROMDEVICE);
758} 763}
@@ -884,7 +889,7 @@ static int b44_poll(struct net_device *netdev, int *budget)
884 spin_lock_irqsave(&bp->lock, flags); 889 spin_lock_irqsave(&bp->lock, flags);
885 b44_halt(bp); 890 b44_halt(bp);
886 b44_init_rings(bp); 891 b44_init_rings(bp);
887 b44_init_hw(bp, 1); 892 b44_init_hw(bp, B44_FULL_RESET_SKIP_PHY);
888 netif_wake_queue(bp->dev); 893 netif_wake_queue(bp->dev);
889 spin_unlock_irqrestore(&bp->lock, flags); 894 spin_unlock_irqrestore(&bp->lock, flags);
890 done = 1; 895 done = 1;
@@ -954,7 +959,7 @@ static void b44_tx_timeout(struct net_device *dev)
954 959
955 b44_halt(bp); 960 b44_halt(bp);
956 b44_init_rings(bp); 961 b44_init_rings(bp);
957 b44_init_hw(bp, 1); 962 b44_init_hw(bp, B44_FULL_RESET);
958 963
959 spin_unlock_irq(&bp->lock); 964 spin_unlock_irq(&bp->lock);
960 965
@@ -1071,7 +1076,7 @@ static int b44_change_mtu(struct net_device *dev, int new_mtu)
1071 b44_halt(bp); 1076 b44_halt(bp);
1072 dev->mtu = new_mtu; 1077 dev->mtu = new_mtu;
1073 b44_init_rings(bp); 1078 b44_init_rings(bp);
1074 b44_init_hw(bp, 1); 1079 b44_init_hw(bp, B44_FULL_RESET);
1075 spin_unlock_irq(&bp->lock); 1080 spin_unlock_irq(&bp->lock);
1076 1081
1077 b44_enable_ints(bp); 1082 b44_enable_ints(bp);
@@ -1368,12 +1373,12 @@ static int b44_set_mac_addr(struct net_device *dev, void *p)
1368 * packet processing. Invoked with bp->lock held. 1373 * packet processing. Invoked with bp->lock held.
1369 */ 1374 */
1370static void __b44_set_rx_mode(struct net_device *); 1375static void __b44_set_rx_mode(struct net_device *);
1371static void b44_init_hw(struct b44 *bp, int full_reset) 1376static void b44_init_hw(struct b44 *bp, int reset_kind)
1372{ 1377{
1373 u32 val; 1378 u32 val;
1374 1379
1375 b44_chip_reset(bp); 1380 b44_chip_reset(bp);
1376 if (full_reset) { 1381 if (reset_kind == B44_FULL_RESET) {
1377 b44_phy_reset(bp); 1382 b44_phy_reset(bp);
1378 b44_setup_phy(bp); 1383 b44_setup_phy(bp);
1379 } 1384 }
@@ -1390,7 +1395,10 @@ static void b44_init_hw(struct b44 *bp, int full_reset)
1390 bw32(bp, B44_TXMAXLEN, bp->dev->mtu + ETH_HLEN + 8 + RX_HEADER_LEN); 1395 bw32(bp, B44_TXMAXLEN, bp->dev->mtu + ETH_HLEN + 8 + RX_HEADER_LEN);
1391 1396
1392 bw32(bp, B44_TX_WMARK, 56); /* XXX magic */ 1397 bw32(bp, B44_TX_WMARK, 56); /* XXX magic */
1393 if (full_reset) { 1398 if (reset_kind == B44_PARTIAL_RESET) {
1399 bw32(bp, B44_DMARX_CTRL, (DMARX_CTRL_ENABLE |
1400 (bp->rx_offset << DMARX_CTRL_ROSHIFT)));
1401 } else {
1394 bw32(bp, B44_DMATX_CTRL, DMATX_CTRL_ENABLE); 1402 bw32(bp, B44_DMATX_CTRL, DMATX_CTRL_ENABLE);
1395 bw32(bp, B44_DMATX_ADDR, bp->tx_ring_dma + bp->dma_offset); 1403 bw32(bp, B44_DMATX_ADDR, bp->tx_ring_dma + bp->dma_offset);
1396 bw32(bp, B44_DMARX_CTRL, (DMARX_CTRL_ENABLE | 1404 bw32(bp, B44_DMARX_CTRL, (DMARX_CTRL_ENABLE |
@@ -1401,9 +1409,6 @@ static void b44_init_hw(struct b44 *bp, int full_reset)
1401 bp->rx_prod = bp->rx_pending; 1409 bp->rx_prod = bp->rx_pending;
1402 1410
1403 bw32(bp, B44_MIB_CTRL, MIB_CTRL_CLR_ON_READ); 1411 bw32(bp, B44_MIB_CTRL, MIB_CTRL_CLR_ON_READ);
1404 } else {
1405 bw32(bp, B44_DMARX_CTRL, (DMARX_CTRL_ENABLE |
1406 (bp->rx_offset << DMARX_CTRL_ROSHIFT)));
1407 } 1412 }
1408 1413
1409 val = br32(bp, B44_ENET_CTRL); 1414 val = br32(bp, B44_ENET_CTRL);
@@ -1420,7 +1425,7 @@ static int b44_open(struct net_device *dev)
1420 goto out; 1425 goto out;
1421 1426
1422 b44_init_rings(bp); 1427 b44_init_rings(bp);
1423 b44_init_hw(bp, 1); 1428 b44_init_hw(bp, B44_FULL_RESET);
1424 1429
1425 b44_check_phy(bp); 1430 b44_check_phy(bp);
1426 1431
@@ -1629,7 +1634,7 @@ static int b44_close(struct net_device *dev)
1629 netif_poll_enable(dev); 1634 netif_poll_enable(dev);
1630 1635
1631 if (bp->flags & B44_FLAG_WOL_ENABLE) { 1636 if (bp->flags & B44_FLAG_WOL_ENABLE) {
1632 b44_init_hw(bp, 0); 1637 b44_init_hw(bp, B44_PARTIAL_RESET);
1633 b44_setup_wol(bp); 1638 b44_setup_wol(bp);
1634 } 1639 }
1635 1640
@@ -1905,7 +1910,7 @@ static int b44_set_ringparam(struct net_device *dev,
1905 1910
1906 b44_halt(bp); 1911 b44_halt(bp);
1907 b44_init_rings(bp); 1912 b44_init_rings(bp);
1908 b44_init_hw(bp, 1); 1913 b44_init_hw(bp, B44_FULL_RESET);
1909 netif_wake_queue(bp->dev); 1914 netif_wake_queue(bp->dev);
1910 spin_unlock_irq(&bp->lock); 1915 spin_unlock_irq(&bp->lock);
1911 1916
@@ -1948,7 +1953,7 @@ static int b44_set_pauseparam(struct net_device *dev,
1948 if (bp->flags & B44_FLAG_PAUSE_AUTO) { 1953 if (bp->flags & B44_FLAG_PAUSE_AUTO) {
1949 b44_halt(bp); 1954 b44_halt(bp);
1950 b44_init_rings(bp); 1955 b44_init_rings(bp);
1951 b44_init_hw(bp, 1); 1956 b44_init_hw(bp, B44_FULL_RESET);
1952 } else { 1957 } else {
1953 __b44_set_flow_ctrl(bp, bp->flags); 1958 __b44_set_flow_ctrl(bp, bp->flags);
1954 } 1959 }
@@ -2304,7 +2309,7 @@ static int b44_suspend(struct pci_dev *pdev, pm_message_t state)
2304 2309
2305 free_irq(dev->irq, dev); 2310 free_irq(dev->irq, dev);
2306 if (bp->flags & B44_FLAG_WOL_ENABLE) { 2311 if (bp->flags & B44_FLAG_WOL_ENABLE) {
2307 b44_init_hw(bp, 0); 2312 b44_init_hw(bp, B44_PARTIAL_RESET);
2308 b44_setup_wol(bp); 2313 b44_setup_wol(bp);
2309 } 2314 }
2310 pci_disable_device(pdev); 2315 pci_disable_device(pdev);
@@ -2315,21 +2320,32 @@ static int b44_resume(struct pci_dev *pdev)
2315{ 2320{
2316 struct net_device *dev = pci_get_drvdata(pdev); 2321 struct net_device *dev = pci_get_drvdata(pdev);
2317 struct b44 *bp = netdev_priv(dev); 2322 struct b44 *bp = netdev_priv(dev);
2323 int rc = 0;
2318 2324
2319 pci_restore_state(pdev); 2325 pci_restore_state(pdev);
2320 pci_enable_device(pdev); 2326 rc = pci_enable_device(pdev);
2327 if (rc) {
2328 printk(KERN_ERR PFX "%s: pci_enable_device failed\n",
2329 dev->name);
2330 return rc;
2331 }
2332
2321 pci_set_master(pdev); 2333 pci_set_master(pdev);
2322 2334
2323 if (!netif_running(dev)) 2335 if (!netif_running(dev))
2324 return 0; 2336 return 0;
2325 2337
2326 if (request_irq(dev->irq, b44_interrupt, IRQF_SHARED, dev->name, dev)) 2338 rc = request_irq(dev->irq, b44_interrupt, IRQF_SHARED, dev->name, dev);
2339 if (rc) {
2327 printk(KERN_ERR PFX "%s: request_irq failed\n", dev->name); 2340 printk(KERN_ERR PFX "%s: request_irq failed\n", dev->name);
2341 pci_disable_device(pdev);
2342 return rc;
2343 }
2328 2344
2329 spin_lock_irq(&bp->lock); 2345 spin_lock_irq(&bp->lock);
2330 2346
2331 b44_init_rings(bp); 2347 b44_init_rings(bp);
2332 b44_init_hw(bp, 1); 2348 b44_init_hw(bp, B44_FULL_RESET);
2333 netif_device_attach(bp->dev); 2349 netif_device_attach(bp->dev);
2334 spin_unlock_irq(&bp->lock); 2350 spin_unlock_irq(&bp->lock);
2335 2351
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index ca5acc4736df..ee7b75b976b5 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -57,8 +57,8 @@
57 57
58#define DRV_MODULE_NAME "bnx2" 58#define DRV_MODULE_NAME "bnx2"
59#define PFX DRV_MODULE_NAME ": " 59#define PFX DRV_MODULE_NAME ": "
60#define DRV_MODULE_VERSION "1.5.3" 60#define DRV_MODULE_VERSION "1.5.5"
61#define DRV_MODULE_RELDATE "January 8, 2007" 61#define DRV_MODULE_RELDATE "February 1, 2007"
62 62
63#define RUN_AT(x) (jiffies + (x)) 63#define RUN_AT(x) (jiffies + (x))
64 64
@@ -1356,6 +1356,14 @@ bnx2_init_copper_phy(struct bnx2 *bp)
1356 bnx2_write_phy(bp, 0x18, 0x0400); 1356 bnx2_write_phy(bp, 0x18, 0x0400);
1357 } 1357 }
1358 1358
1359 if (bp->phy_flags & PHY_DIS_EARLY_DAC_FLAG) {
1360 bnx2_write_phy(bp, MII_BNX2_DSP_ADDRESS,
1361 MII_BNX2_DSP_EXPAND_REG | 0x8);
1362 bnx2_read_phy(bp, MII_BNX2_DSP_RW_PORT, &val);
1363 val &= ~(1 << 8);
1364 bnx2_write_phy(bp, MII_BNX2_DSP_RW_PORT, val);
1365 }
1366
1359 if (bp->dev->mtu > 1500) { 1367 if (bp->dev->mtu > 1500) {
1360 /* Set extended packet length bit */ 1368 /* Set extended packet length bit */
1361 bnx2_write_phy(bp, 0x18, 0x7); 1369 bnx2_write_phy(bp, 0x18, 0x7);
@@ -5845,9 +5853,11 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
5845 reg = REG_RD_IND(bp, BNX2_SHM_HDR_SIGNATURE); 5853 reg = REG_RD_IND(bp, BNX2_SHM_HDR_SIGNATURE);
5846 5854
5847 if ((reg & BNX2_SHM_HDR_SIGNATURE_SIG_MASK) == 5855 if ((reg & BNX2_SHM_HDR_SIGNATURE_SIG_MASK) ==
5848 BNX2_SHM_HDR_SIGNATURE_SIG) 5856 BNX2_SHM_HDR_SIGNATURE_SIG) {
5849 bp->shmem_base = REG_RD_IND(bp, BNX2_SHM_HDR_ADDR_0); 5857 u32 off = PCI_FUNC(pdev->devfn) << 2;
5850 else 5858
5859 bp->shmem_base = REG_RD_IND(bp, BNX2_SHM_HDR_ADDR_0 + off);
5860 } else
5851 bp->shmem_base = HOST_VIEW_SHMEM_BASE; 5861 bp->shmem_base = HOST_VIEW_SHMEM_BASE;
5852 5862
5853 /* Get the permanent MAC address. First we need to make sure the 5863 /* Get the permanent MAC address. First we need to make sure the
@@ -5916,6 +5926,8 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
5916 } else if (CHIP_NUM(bp) == CHIP_NUM_5706 || 5926 } else if (CHIP_NUM(bp) == CHIP_NUM_5706 ||
5917 CHIP_NUM(bp) == CHIP_NUM_5708) 5927 CHIP_NUM(bp) == CHIP_NUM_5708)
5918 bp->phy_flags |= PHY_CRC_FIX_FLAG; 5928 bp->phy_flags |= PHY_CRC_FIX_FLAG;
5929 else if (CHIP_ID(bp) == CHIP_ID_5709_A0)
5930 bp->phy_flags |= PHY_DIS_EARLY_DAC_FLAG;
5919 5931
5920 if ((CHIP_ID(bp) == CHIP_ID_5708_A0) || 5932 if ((CHIP_ID(bp) == CHIP_ID_5708_A0) ||
5921 (CHIP_ID(bp) == CHIP_ID_5708_B0) || 5933 (CHIP_ID(bp) == CHIP_ID_5708_B0) ||
diff --git a/drivers/net/bnx2.h b/drivers/net/bnx2.h
index 13b6f9b11e01..ccbdf81c6599 100644
--- a/drivers/net/bnx2.h
+++ b/drivers/net/bnx2.h
@@ -6288,6 +6288,10 @@ struct l2_fhdr {
6288 6288
6289#define BCM5708S_TX_ACTL3 0x17 6289#define BCM5708S_TX_ACTL3 0x17
6290 6290
6291#define MII_BNX2_DSP_RW_PORT 0x15
6292#define MII_BNX2_DSP_ADDRESS 0x17
6293#define MII_BNX2_DSP_EXPAND_REG 0x0f00
6294
6291#define MIN_ETHERNET_PACKET_SIZE 60 6295#define MIN_ETHERNET_PACKET_SIZE 60
6292#define MAX_ETHERNET_PACKET_SIZE 1514 6296#define MAX_ETHERNET_PACKET_SIZE 1514
6293#define MAX_ETHERNET_JUMBO_PACKET_SIZE 9014 6297#define MAX_ETHERNET_JUMBO_PACKET_SIZE 9014
@@ -6489,6 +6493,7 @@ struct bnx2 {
6489#define PHY_INT_MODE_MASK_FLAG 0x300 6493#define PHY_INT_MODE_MASK_FLAG 0x300
6490#define PHY_INT_MODE_AUTO_POLLING_FLAG 0x100 6494#define PHY_INT_MODE_AUTO_POLLING_FLAG 0x100
6491#define PHY_INT_MODE_LINK_READY_FLAG 0x200 6495#define PHY_INT_MODE_LINK_READY_FLAG 0x200
6496#define PHY_DIS_EARLY_DAC_FLAG 0x400
6492 6497
6493 u32 chip_id; 6498 u32 chip_id;
6494 /* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */ 6499 /* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */
@@ -6512,6 +6517,7 @@ struct bnx2 {
6512#define CHIP_ID_5708_A0 0x57080000 6517#define CHIP_ID_5708_A0 0x57080000
6513#define CHIP_ID_5708_B0 0x57081000 6518#define CHIP_ID_5708_B0 0x57081000
6514#define CHIP_ID_5708_B1 0x57081010 6519#define CHIP_ID_5708_B1 0x57081010
6520#define CHIP_ID_5709_A0 0x57090000
6515 6521
6516#define CHIP_BOND_ID(bp) (((bp)->chip_id) & 0xf) 6522#define CHIP_BOND_ID(bp) (((bp)->chip_id) & 0xf)
6517 6523
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
index dc434fb6da85..0978c9ac6d2b 100644
--- a/drivers/net/bonding/bonding.h
+++ b/drivers/net/bonding/bonding.h
@@ -151,8 +151,8 @@ struct slave {
151 struct slave *next; 151 struct slave *next;
152 struct slave *prev; 152 struct slave *prev;
153 int delay; 153 int delay;
154 u32 jiffies; 154 unsigned long jiffies;
155 u32 last_arp_rx; 155 unsigned long last_arp_rx;
156 s8 link; /* one of BOND_LINK_XXXX */ 156 s8 link; /* one of BOND_LINK_XXXX */
157 s8 state; /* one of BOND_STATE_XXXX */ 157 s8 state; /* one of BOND_STATE_XXXX */
158 u32 original_flags; 158 u32 original_flags;
@@ -242,7 +242,8 @@ extern inline int slave_do_arp_validate(struct bonding *bond, struct slave *slav
242 return bond->params.arp_validate & (1 << slave->state); 242 return bond->params.arp_validate & (1 << slave->state);
243} 243}
244 244
245extern inline u32 slave_last_rx(struct bonding *bond, struct slave *slave) 245extern inline unsigned long slave_last_rx(struct bonding *bond,
246 struct slave *slave)
246{ 247{
247 if (slave_do_arp_validate(bond, slave)) 248 if (slave_do_arp_validate(bond, slave))
248 return slave->last_arp_rx; 249 return slave->last_arp_rx;
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index c2ae2a24629b..0cefef5e3f06 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -2718,12 +2718,11 @@ static int e100_suspend(struct pci_dev *pdev, pm_message_t state)
2718 struct net_device *netdev = pci_get_drvdata(pdev); 2718 struct net_device *netdev = pci_get_drvdata(pdev);
2719 struct nic *nic = netdev_priv(netdev); 2719 struct nic *nic = netdev_priv(netdev);
2720 2720
2721#ifdef CONFIG_E100_NAPI
2722 if (netif_running(netdev)) 2721 if (netif_running(netdev))
2723 netif_poll_disable(nic->netdev); 2722 netif_poll_disable(nic->netdev);
2724#endif
2725 del_timer_sync(&nic->watchdog); 2723 del_timer_sync(&nic->watchdog);
2726 netif_carrier_off(nic->netdev); 2724 netif_carrier_off(nic->netdev);
2725 netif_device_detach(netdev);
2727 2726
2728 pci_save_state(pdev); 2727 pci_save_state(pdev);
2729 2728
@@ -2736,6 +2735,7 @@ static int e100_suspend(struct pci_dev *pdev, pm_message_t state)
2736 } 2735 }
2737 2736
2738 pci_disable_device(pdev); 2737 pci_disable_device(pdev);
2738 free_irq(pdev->irq, netdev);
2739 pci_set_power_state(pdev, PCI_D3hot); 2739 pci_set_power_state(pdev, PCI_D3hot);
2740 2740
2741 return 0; 2741 return 0;
@@ -2759,16 +2759,13 @@ static int e100_resume(struct pci_dev *pdev)
2759} 2759}
2760#endif /* CONFIG_PM */ 2760#endif /* CONFIG_PM */
2761 2761
2762
2763static void e100_shutdown(struct pci_dev *pdev) 2762static void e100_shutdown(struct pci_dev *pdev)
2764{ 2763{
2765 struct net_device *netdev = pci_get_drvdata(pdev); 2764 struct net_device *netdev = pci_get_drvdata(pdev);
2766 struct nic *nic = netdev_priv(netdev); 2765 struct nic *nic = netdev_priv(netdev);
2767 2766
2768#ifdef CONFIG_E100_NAPI
2769 if (netif_running(netdev)) 2767 if (netif_running(netdev))
2770 netif_poll_disable(nic->netdev); 2768 netif_poll_disable(nic->netdev);
2771#endif
2772 del_timer_sync(&nic->watchdog); 2769 del_timer_sync(&nic->watchdog);
2773 netif_carrier_off(nic->netdev); 2770 netif_carrier_off(nic->netdev);
2774 2771
diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h
index 39ad9f73d1ec..272e1ec51aa2 100644
--- a/drivers/net/ehea/ehea.h
+++ b/drivers/net/ehea/ehea.h
@@ -39,7 +39,7 @@
39#include <asm/io.h> 39#include <asm/io.h>
40 40
41#define DRV_NAME "ehea" 41#define DRV_NAME "ehea"
42#define DRV_VERSION "EHEA_0043" 42#define DRV_VERSION "EHEA_0045"
43 43
44#define EHEA_MSG_DEFAULT (NETIF_MSG_LINK | NETIF_MSG_TIMER \ 44#define EHEA_MSG_DEFAULT (NETIF_MSG_LINK | NETIF_MSG_TIMER \
45 | NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR) 45 | NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR)
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index 83fa32f72398..9de2d38a5321 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -558,12 +558,12 @@ static irqreturn_t ehea_qp_aff_irq_handler(int irq, void *param)
558 u32 qp_token; 558 u32 qp_token;
559 559
560 eqe = ehea_poll_eq(port->qp_eq); 560 eqe = ehea_poll_eq(port->qp_eq);
561 ehea_debug("eqe=%p", eqe); 561
562 while (eqe) { 562 while (eqe) {
563 ehea_debug("*eqe=%lx", *(u64*)eqe);
564 eqe = ehea_poll_eq(port->qp_eq);
565 qp_token = EHEA_BMASK_GET(EHEA_EQE_QP_TOKEN, eqe->entry); 563 qp_token = EHEA_BMASK_GET(EHEA_EQE_QP_TOKEN, eqe->entry);
566 ehea_debug("next eqe=%p", eqe); 564 ehea_error("QP aff_err: entry=0x%lx, token=0x%x",
565 eqe->entry, qp_token);
566 eqe = ehea_poll_eq(port->qp_eq);
567 } 567 }
568 568
569 return IRQ_HANDLED; 569 return IRQ_HANDLED;
@@ -575,8 +575,9 @@ static struct ehea_port *ehea_get_port(struct ehea_adapter *adapter,
575 int i; 575 int i;
576 576
577 for (i = 0; i < adapter->num_ports; i++) 577 for (i = 0; i < adapter->num_ports; i++)
578 if (adapter->port[i]->logical_port_id == logical_port) 578 if (adapter->port[i])
579 return adapter->port[i]; 579 if (adapter->port[i]->logical_port_id == logical_port)
580 return adapter->port[i];
580 return NULL; 581 return NULL;
581} 582}
582 583
@@ -642,6 +643,8 @@ int ehea_sense_port_attr(struct ehea_port *port)
642 break; 643 break;
643 } 644 }
644 645
646 port->autoneg = 1;
647
645 /* Number of default QPs */ 648 /* Number of default QPs */
646 port->num_def_qps = cb0->num_default_qps; 649 port->num_def_qps = cb0->num_default_qps;
647 650
@@ -728,10 +731,7 @@ int ehea_set_portspeed(struct ehea_port *port, u32 port_speed)
728 } 731 }
729 } else { 732 } else {
730 if (hret == H_AUTHORITY) { 733 if (hret == H_AUTHORITY) {
731 ehea_info("Hypervisor denied setting port speed. Either" 734 ehea_info("Hypervisor denied setting port speed");
732 " this partition is not authorized to set "
733 "port speed or another partition has modified"
734 " port speed first.");
735 ret = -EPERM; 735 ret = -EPERM;
736 } else { 736 } else {
737 ret = -EIO; 737 ret = -EIO;
@@ -998,7 +998,7 @@ static int ehea_configure_port(struct ehea_port *port)
998 | EHEA_BMASK_SET(PXLY_RC_JUMBO_FRAME, 1); 998 | EHEA_BMASK_SET(PXLY_RC_JUMBO_FRAME, 1);
999 999
1000 for (i = 0; i < port->num_def_qps; i++) 1000 for (i = 0; i < port->num_def_qps; i++)
1001 cb0->default_qpn_arr[i] = port->port_res[i].qp->init_attr.qp_nr; 1001 cb0->default_qpn_arr[i] = port->port_res[0].qp->init_attr.qp_nr;
1002 1002
1003 if (netif_msg_ifup(port)) 1003 if (netif_msg_ifup(port))
1004 ehea_dump(cb0, sizeof(*cb0), "ehea_configure_port"); 1004 ehea_dump(cb0, sizeof(*cb0), "ehea_configure_port");
@@ -1485,11 +1485,12 @@ out:
1485 1485
1486static void ehea_promiscuous_error(u64 hret, int enable) 1486static void ehea_promiscuous_error(u64 hret, int enable)
1487{ 1487{
1488 ehea_info("Hypervisor denied %sabling promiscuous mode.%s", 1488 if (hret == H_AUTHORITY)
1489 enable == 1 ? "en" : "dis", 1489 ehea_info("Hypervisor denied %sabling promiscuous mode",
1490 hret != H_AUTHORITY ? "" : " Another partition owning a " 1490 enable == 1 ? "en" : "dis");
1491 "logical port on the same physical port might have altered " 1491 else
1492 "promiscuous mode first."); 1492 ehea_error("failed %sabling promiscuous mode",
1493 enable == 1 ? "en" : "dis");
1493} 1494}
1494 1495
1495static void ehea_promiscuous(struct net_device *dev, int enable) 1496static void ehea_promiscuous(struct net_device *dev, int enable)
@@ -2267,6 +2268,8 @@ static void ehea_tx_watchdog(struct net_device *dev)
2267int ehea_sense_adapter_attr(struct ehea_adapter *adapter) 2268int ehea_sense_adapter_attr(struct ehea_adapter *adapter)
2268{ 2269{
2269 struct hcp_query_ehea *cb; 2270 struct hcp_query_ehea *cb;
2271 struct device_node *lhea_dn = NULL;
2272 struct device_node *eth_dn = NULL;
2270 u64 hret; 2273 u64 hret;
2271 int ret; 2274 int ret;
2272 2275
@@ -2283,7 +2286,18 @@ int ehea_sense_adapter_attr(struct ehea_adapter *adapter)
2283 goto out_herr; 2286 goto out_herr;
2284 } 2287 }
2285 2288
2286 adapter->num_ports = cb->num_ports; 2289 /* Determine the number of available logical ports
2290 * by counting the child nodes of the lhea OFDT entry
2291 */
2292 adapter->num_ports = 0;
2293 lhea_dn = of_find_node_by_name(lhea_dn, "lhea");
2294 do {
2295 eth_dn = of_get_next_child(lhea_dn, eth_dn);
2296 if (eth_dn)
2297 adapter->num_ports++;
2298 } while ( eth_dn );
2299 of_node_put(lhea_dn);
2300
2287 adapter->max_mc_mac = cb->max_mc_mac - 1; 2301 adapter->max_mc_mac = cb->max_mc_mac - 1;
2288 ret = 0; 2302 ret = 0;
2289 2303
@@ -2302,6 +2316,7 @@ static int ehea_setup_single_port(struct ehea_port *port,
2302 struct ehea_adapter *adapter = port->adapter; 2316 struct ehea_adapter *adapter = port->adapter;
2303 struct hcp_ehea_port_cb4 *cb4; 2317 struct hcp_ehea_port_cb4 *cb4;
2304 u32 *dn_log_port_id; 2318 u32 *dn_log_port_id;
2319 int jumbo = 0;
2305 2320
2306 sema_init(&port->port_lock, 1); 2321 sema_init(&port->port_lock, 1);
2307 port->state = EHEA_PORT_DOWN; 2322 port->state = EHEA_PORT_DOWN;
@@ -2334,8 +2349,6 @@ static int ehea_setup_single_port(struct ehea_port *port,
2334 2349
2335 INIT_LIST_HEAD(&port->mc_list->list); 2350 INIT_LIST_HEAD(&port->mc_list->list);
2336 2351
2337 ehea_set_portspeed(port, EHEA_SPEED_AUTONEG);
2338
2339 ret = ehea_sense_port_attr(port); 2352 ret = ehea_sense_port_attr(port);
2340 if (ret) 2353 if (ret)
2341 goto out; 2354 goto out;
@@ -2345,13 +2358,25 @@ static int ehea_setup_single_port(struct ehea_port *port,
2345 if (!cb4) { 2358 if (!cb4) {
2346 ehea_error("no mem for cb4"); 2359 ehea_error("no mem for cb4");
2347 } else { 2360 } else {
2348 cb4->jumbo_frame = 1; 2361 hret = ehea_h_query_ehea_port(adapter->handle,
2349 hret = ehea_h_modify_ehea_port(adapter->handle, 2362 port->logical_port_id,
2350 port->logical_port_id, 2363 H_PORT_CB4,
2351 H_PORT_CB4, H_PORT_CB4_JUMBO, 2364 H_PORT_CB4_JUMBO, cb4);
2352 cb4); 2365
2353 if (hret != H_SUCCESS) { 2366 if (hret == H_SUCCESS) {
2354 ehea_info("Jumbo frames not activated"); 2367 if (cb4->jumbo_frame)
2368 jumbo = 1;
2369 else {
2370 cb4->jumbo_frame = 1;
2371 hret = ehea_h_modify_ehea_port(adapter->handle,
2372 port->
2373 logical_port_id,
2374 H_PORT_CB4,
2375 H_PORT_CB4_JUMBO,
2376 cb4);
2377 if (hret == H_SUCCESS)
2378 jumbo = 1;
2379 }
2355 } 2380 }
2356 kfree(cb4); 2381 kfree(cb4);
2357 } 2382 }
@@ -2390,6 +2415,9 @@ static int ehea_setup_single_port(struct ehea_port *port,
2390 goto out_free; 2415 goto out_free;
2391 } 2416 }
2392 2417
2418 ehea_info("%s: Jumbo frames are %sabled", dev->name,
2419 jumbo == 1 ? "en" : "dis");
2420
2393 port->netdev = dev; 2421 port->netdev = dev;
2394 ret = 0; 2422 ret = 0;
2395 goto out; 2423 goto out;
@@ -2471,14 +2499,16 @@ static int __devinit ehea_probe(struct ibmebus_dev *dev,
2471 2499
2472 adapter_handle = (u64*)get_property(dev->ofdev.node, "ibm,hea-handle", 2500 adapter_handle = (u64*)get_property(dev->ofdev.node, "ibm,hea-handle",
2473 NULL); 2501 NULL);
2474 if (!adapter_handle) { 2502 if (adapter_handle)
2503 adapter->handle = *adapter_handle;
2504
2505 if (!adapter->handle) {
2475 dev_err(&dev->ofdev.dev, "failed getting handle for adapter" 2506 dev_err(&dev->ofdev.dev, "failed getting handle for adapter"
2476 " '%s'\n", dev->ofdev.node->full_name); 2507 " '%s'\n", dev->ofdev.node->full_name);
2477 ret = -ENODEV; 2508 ret = -ENODEV;
2478 goto out_free_ad; 2509 goto out_free_ad;
2479 } 2510 }
2480 2511
2481 adapter->handle = *adapter_handle;
2482 adapter->pd = EHEA_PD_ID; 2512 adapter->pd = EHEA_PD_ID;
2483 2513
2484 dev->ofdev.dev.driver_data = adapter; 2514 dev->ofdev.dev.driver_data = adapter;
@@ -2568,6 +2598,7 @@ static int __devexit ehea_remove(struct ibmebus_dev *dev)
2568 destroy_workqueue(adapter->ehea_wq); 2598 destroy_workqueue(adapter->ehea_wq);
2569 2599
2570 ibmebus_free_irq(NULL, adapter->neq->attr.ist1, adapter); 2600 ibmebus_free_irq(NULL, adapter->neq->attr.ist1, adapter);
2601 tasklet_kill(&adapter->neq_tasklet);
2571 2602
2572 ehea_destroy_eq(adapter->neq); 2603 ehea_destroy_eq(adapter->neq);
2573 2604
diff --git a/drivers/net/ehea/ehea_phyp.c b/drivers/net/ehea/ehea_phyp.c
index 0cfc2bc1a27b..37716e05e808 100644
--- a/drivers/net/ehea/ehea_phyp.c
+++ b/drivers/net/ehea/ehea_phyp.c
@@ -94,6 +94,7 @@ static long ehea_plpar_hcall9(unsigned long opcode,
94{ 94{
95 long ret; 95 long ret;
96 int i, sleep_msecs; 96 int i, sleep_msecs;
97 u8 cb_cat;
97 98
98 for (i = 0; i < 5; i++) { 99 for (i = 0; i < 5; i++) {
99 ret = plpar_hcall9(opcode, outs, 100 ret = plpar_hcall9(opcode, outs,
@@ -106,7 +107,13 @@ static long ehea_plpar_hcall9(unsigned long opcode,
106 continue; 107 continue;
107 } 108 }
108 109
109 if (ret < H_SUCCESS) 110 cb_cat = EHEA_BMASK_GET(H_MEHEAPORT_CAT, arg2);
111
112 if ((ret < H_SUCCESS) && !(((ret == H_AUTHORITY)
113 && (opcode == H_MODIFY_HEA_PORT))
114 && (((cb_cat == H_PORT_CB4) && ((arg3 == H_PORT_CB4_JUMBO)
115 || (arg3 == H_PORT_CB4_SPEED))) || ((cb_cat == H_PORT_CB7)
116 && (arg3 == H_PORT_CB7_DUCQPN)))))
110 ehea_error("opcode=%lx ret=%lx" 117 ehea_error("opcode=%lx ret=%lx"
111 " arg1=%lx arg2=%lx arg3=%lx arg4=%lx" 118 " arg1=%lx arg2=%lx arg3=%lx arg4=%lx"
112 " arg5=%lx arg6=%lx arg7=%lx arg8=%lx" 119 " arg5=%lx arg6=%lx arg7=%lx arg8=%lx"
@@ -120,7 +127,6 @@ static long ehea_plpar_hcall9(unsigned long opcode,
120 outs[0], outs[1], outs[2], outs[3], 127 outs[0], outs[1], outs[2], outs[3],
121 outs[4], outs[5], outs[6], outs[7], 128 outs[4], outs[5], outs[6], outs[7],
122 outs[8]); 129 outs[8]);
123
124 return ret; 130 return ret;
125 } 131 }
126 132
diff --git a/drivers/net/fs_enet/mac-fec.c b/drivers/net/fs_enet/mac-fec.c
index c2c5fd419bd0..ff6839477306 100644
--- a/drivers/net/fs_enet/mac-fec.c
+++ b/drivers/net/fs_enet/mac-fec.c
@@ -104,9 +104,9 @@ static int do_pd_setup(struct fs_enet_private *fep)
104 fep->interrupt = platform_get_irq_byname(pdev,"interrupt"); 104 fep->interrupt = platform_get_irq_byname(pdev,"interrupt");
105 if (fep->interrupt < 0) 105 if (fep->interrupt < 0)
106 return -EINVAL; 106 return -EINVAL;
107 107
108 r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); 108 r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs");
109 fep->fec.fecp =(void*)r->start; 109 fep->fec.fecp = ioremap(r->start, r->end - r->start + 1);
110 110
111 if(fep->fec.fecp == NULL) 111 if(fep->fec.fecp == NULL)
112 return -EINVAL; 112 return -EINVAL;
@@ -319,11 +319,14 @@ static void restart(struct net_device *dev)
319 * Clear any outstanding interrupt. 319 * Clear any outstanding interrupt.
320 */ 320 */
321 FW(fecp, ievent, 0xffc0); 321 FW(fecp, ievent, 0xffc0);
322#ifndef CONFIG_PPC_MERGE
322 FW(fecp, ivec, (fep->interrupt / 2) << 29); 323 FW(fecp, ivec, (fep->interrupt / 2) << 29);
323 324#else
325 FW(fecp, ivec, (virq_to_hw(fep->interrupt) / 2) << 29);
326#endif
324 327
325 /* 328 /*
326 * adjust to speed (only for DUET & RMII) 329 * adjust to speed (only for DUET & RMII)
327 */ 330 */
328#ifdef CONFIG_DUET 331#ifdef CONFIG_DUET
329 if (fpi->use_rmii) { 332 if (fpi->use_rmii) {
@@ -418,6 +421,7 @@ static void stop(struct net_device *dev)
418 421
419static void pre_request_irq(struct net_device *dev, int irq) 422static void pre_request_irq(struct net_device *dev, int irq)
420{ 423{
424#ifndef CONFIG_PPC_MERGE
421 immap_t *immap = fs_enet_immap; 425 immap_t *immap = fs_enet_immap;
422 u32 siel; 426 u32 siel;
423 427
@@ -431,6 +435,7 @@ static void pre_request_irq(struct net_device *dev, int irq)
431 siel &= ~(0x80000000 >> (irq & ~1)); 435 siel &= ~(0x80000000 >> (irq & ~1));
432 out_be32(&immap->im_siu_conf.sc_siel, siel); 436 out_be32(&immap->im_siu_conf.sc_siel, siel);
433 } 437 }
438#endif
434} 439}
435 440
436static void post_free_irq(struct net_device *dev, int irq) 441static void post_free_irq(struct net_device *dev, int irq)
diff --git a/drivers/net/fs_enet/mac-scc.c b/drivers/net/fs_enet/mac-scc.c
index 95ec5872c507..afd7fca7c6c4 100644
--- a/drivers/net/fs_enet/mac-scc.c
+++ b/drivers/net/fs_enet/mac-scc.c
@@ -121,13 +121,13 @@ static int do_pd_setup(struct fs_enet_private *fep)
121 return -EINVAL; 121 return -EINVAL;
122 122
123 r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); 123 r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs");
124 fep->scc.sccp = (void *)r->start; 124 fep->scc.sccp = ioremap(r->start, r->end - r->start + 1);
125 125
126 if (fep->scc.sccp == NULL) 126 if (fep->scc.sccp == NULL)
127 return -EINVAL; 127 return -EINVAL;
128 128
129 r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pram"); 129 r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pram");
130 fep->scc.ep = (void *)r->start; 130 fep->scc.ep = ioremap(r->start, r->end - r->start + 1);
131 131
132 if (fep->scc.ep == NULL) 132 if (fep->scc.ep == NULL)
133 return -EINVAL; 133 return -EINVAL;
@@ -397,6 +397,7 @@ static void stop(struct net_device *dev)
397 397
398static void pre_request_irq(struct net_device *dev, int irq) 398static void pre_request_irq(struct net_device *dev, int irq)
399{ 399{
400#ifndef CONFIG_PPC_MERGE
400 immap_t *immap = fs_enet_immap; 401 immap_t *immap = fs_enet_immap;
401 u32 siel; 402 u32 siel;
402 403
@@ -410,6 +411,7 @@ static void pre_request_irq(struct net_device *dev, int irq)
410 siel &= ~(0x80000000 >> (irq & ~1)); 411 siel &= ~(0x80000000 >> (irq & ~1));
411 out_be32(&immap->im_siu_conf.sc_siel, siel); 412 out_be32(&immap->im_siu_conf.sc_siel, siel);
412 } 413 }
414#endif
413} 415}
414 416
415static void post_free_irq(struct net_device *dev, int irq) 417static void post_free_irq(struct net_device *dev, int irq)
diff --git a/drivers/net/hamradio/Kconfig b/drivers/net/hamradio/Kconfig
index 896aa02000d7..feb0ada7a025 100644
--- a/drivers/net/hamradio/Kconfig
+++ b/drivers/net/hamradio/Kconfig
@@ -113,7 +113,7 @@ config SCC_TRXECHO
113 113
114config BAYCOM_SER_FDX 114config BAYCOM_SER_FDX
115 tristate "BAYCOM ser12 fullduplex driver for AX.25" 115 tristate "BAYCOM ser12 fullduplex driver for AX.25"
116 depends on AX25 116 depends on AX25 && !S390
117 select CRC_CCITT 117 select CRC_CCITT
118 ---help--- 118 ---help---
119 This is one of two drivers for Baycom style simple amateur radio 119 This is one of two drivers for Baycom style simple amateur radio
@@ -133,7 +133,7 @@ config BAYCOM_SER_FDX
133 133
134config BAYCOM_SER_HDX 134config BAYCOM_SER_HDX
135 tristate "BAYCOM ser12 halfduplex driver for AX.25" 135 tristate "BAYCOM ser12 halfduplex driver for AX.25"
136 depends on AX25 136 depends on AX25 && !S390
137 select CRC_CCITT 137 select CRC_CCITT
138 ---help--- 138 ---help---
139 This is one of two drivers for Baycom style simple amateur radio 139 This is one of two drivers for Baycom style simple amateur radio
@@ -181,7 +181,7 @@ config BAYCOM_EPP
181 181
182config YAM 182config YAM
183 tristate "YAM driver for AX.25" 183 tristate "YAM driver for AX.25"
184 depends on AX25 184 depends on AX25 && !S390
185 help 185 help
186 The YAM is a modem for packet radio which connects to the serial 186 The YAM is a modem for packet radio which connects to the serial
187 port and includes some of the functions of a Terminal Node 187 port and includes some of the functions of a Terminal Node
diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c
index 3ca1082ec776..340ee99652eb 100644
--- a/drivers/net/irda/irda-usb.c
+++ b/drivers/net/irda/irda-usb.c
@@ -441,25 +441,13 @@ static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
441 goto drop; 441 goto drop;
442 } 442 }
443 443
444 /* Make sure there is room for IrDA-USB header. The actual 444 memcpy(self->tx_buff + self->header_length, skb->data, skb->len);
445 * allocation will be done lower in skb_push().
446 * Also, we don't use directly skb_cow(), because it require
447 * headroom >= 16, which force unnecessary copies - Jean II */
448 if (skb_headroom(skb) < self->header_length) {
449 IRDA_DEBUG(0, "%s(), Insuficient skb headroom.\n", __FUNCTION__);
450 if (skb_cow(skb, self->header_length)) {
451 IRDA_WARNING("%s(), failed skb_cow() !!!\n", __FUNCTION__);
452 goto drop;
453 }
454 }
455 445
456 /* Change setting for next frame */ 446 /* Change setting for next frame */
457
458 if (self->capability & IUC_STIR421X) { 447 if (self->capability & IUC_STIR421X) {
459 __u8 turnaround_time; 448 __u8 turnaround_time;
460 __u8* frame; 449 __u8* frame = self->tx_buff;
461 turnaround_time = get_turnaround_time( skb ); 450 turnaround_time = get_turnaround_time( skb );
462 frame= skb_push(skb, self->header_length);
463 irda_usb_build_header(self, frame, 0); 451 irda_usb_build_header(self, frame, 0);
464 frame[2] = turnaround_time; 452 frame[2] = turnaround_time;
465 if ((skb->len != 0) && 453 if ((skb->len != 0) &&
@@ -472,17 +460,17 @@ static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
472 frame[1] = 0; 460 frame[1] = 0;
473 } 461 }
474 } else { 462 } else {
475 irda_usb_build_header(self, skb_push(skb, self->header_length), 0); 463 irda_usb_build_header(self, self->tx_buff, 0);
476 } 464 }
477 465
478 /* FIXME: Make macro out of this one */ 466 /* FIXME: Make macro out of this one */
479 ((struct irda_skb_cb *)skb->cb)->context = self; 467 ((struct irda_skb_cb *)skb->cb)->context = self;
480 468
481 usb_fill_bulk_urb(urb, self->usbdev, 469 usb_fill_bulk_urb(urb, self->usbdev,
482 usb_sndbulkpipe(self->usbdev, self->bulk_out_ep), 470 usb_sndbulkpipe(self->usbdev, self->bulk_out_ep),
483 skb->data, IRDA_SKB_MAX_MTU, 471 self->tx_buff, skb->len + self->header_length,
484 write_bulk_callback, skb); 472 write_bulk_callback, skb);
485 urb->transfer_buffer_length = skb->len; 473
486 /* This flag (URB_ZERO_PACKET) indicates that what we send is not 474 /* This flag (URB_ZERO_PACKET) indicates that what we send is not
487 * a continuous stream of data but separate packets. 475 * a continuous stream of data but separate packets.
488 * In this case, the USB layer will insert an empty USB frame (TD) 476 * In this case, the USB layer will insert an empty USB frame (TD)
@@ -1455,6 +1443,9 @@ static inline void irda_usb_close(struct irda_usb_cb *self)
1455 /* Remove the speed buffer */ 1443 /* Remove the speed buffer */
1456 kfree(self->speed_buff); 1444 kfree(self->speed_buff);
1457 self->speed_buff = NULL; 1445 self->speed_buff = NULL;
1446
1447 kfree(self->tx_buff);
1448 self->tx_buff = NULL;
1458} 1449}
1459 1450
1460/********************** USB CONFIG SUBROUTINES **********************/ 1451/********************** USB CONFIG SUBROUTINES **********************/
@@ -1524,8 +1515,6 @@ static inline int irda_usb_parse_endpoints(struct irda_usb_cb *self, struct usb_
1524 1515
1525 IRDA_DEBUG(0, "%s(), And our endpoints are : in=%02X, out=%02X (%d), int=%02X\n", 1516 IRDA_DEBUG(0, "%s(), And our endpoints are : in=%02X, out=%02X (%d), int=%02X\n",
1526 __FUNCTION__, self->bulk_in_ep, self->bulk_out_ep, self->bulk_out_mtu, self->bulk_int_ep); 1517 __FUNCTION__, self->bulk_in_ep, self->bulk_out_ep, self->bulk_out_mtu, self->bulk_int_ep);
1527 /* Should be 8, 16, 32 or 64 bytes */
1528 IRDA_ASSERT(self->bulk_out_mtu == 64, ;);
1529 1518
1530 return((self->bulk_in_ep != 0) && (self->bulk_out_ep != 0)); 1519 return((self->bulk_in_ep != 0) && (self->bulk_out_ep != 0));
1531} 1520}
@@ -1753,9 +1742,14 @@ static int irda_usb_probe(struct usb_interface *intf,
1753 1742
1754 memset(self->speed_buff, 0, IRDA_USB_SPEED_MTU); 1743 memset(self->speed_buff, 0, IRDA_USB_SPEED_MTU);
1755 1744
1745 self->tx_buff = kzalloc(IRDA_SKB_MAX_MTU + self->header_length,
1746 GFP_KERNEL);
1747 if (self->tx_buff == NULL)
1748 goto err_out_4;
1749
1756 ret = irda_usb_open(self); 1750 ret = irda_usb_open(self);
1757 if (ret) 1751 if (ret)
1758 goto err_out_4; 1752 goto err_out_5;
1759 1753
1760 IRDA_MESSAGE("IrDA: Registered device %s\n", net->name); 1754 IRDA_MESSAGE("IrDA: Registered device %s\n", net->name);
1761 usb_set_intfdata(intf, self); 1755 usb_set_intfdata(intf, self);
@@ -1766,14 +1760,14 @@ static int irda_usb_probe(struct usb_interface *intf,
1766 self->needspatch = (ret < 0); 1760 self->needspatch = (ret < 0);
1767 if (self->needspatch) { 1761 if (self->needspatch) {
1768 IRDA_ERROR("STIR421X: Couldn't upload patch\n"); 1762 IRDA_ERROR("STIR421X: Couldn't upload patch\n");
1769 goto err_out_5; 1763 goto err_out_6;
1770 } 1764 }
1771 1765
1772 /* replace IrDA class descriptor with what patched device is now reporting */ 1766 /* replace IrDA class descriptor with what patched device is now reporting */
1773 irda_desc = irda_usb_find_class_desc (self->usbintf); 1767 irda_desc = irda_usb_find_class_desc (self->usbintf);
1774 if (irda_desc == NULL) { 1768 if (irda_desc == NULL) {
1775 ret = -ENODEV; 1769 ret = -ENODEV;
1776 goto err_out_5; 1770 goto err_out_6;
1777 } 1771 }
1778 if (self->irda_desc) 1772 if (self->irda_desc)
1779 kfree (self->irda_desc); 1773 kfree (self->irda_desc);
@@ -1782,9 +1776,10 @@ static int irda_usb_probe(struct usb_interface *intf,
1782 } 1776 }
1783 1777
1784 return 0; 1778 return 0;
1785 1779err_out_6:
1786err_out_5:
1787 unregister_netdev(self->netdev); 1780 unregister_netdev(self->netdev);
1781err_out_5:
1782 kfree(self->tx_buff);
1788err_out_4: 1783err_out_4:
1789 kfree(self->speed_buff); 1784 kfree(self->speed_buff);
1790err_out_3: 1785err_out_3:
diff --git a/drivers/net/irda/irda-usb.h b/drivers/net/irda/irda-usb.h
index 6b2271f18e77..e846c38224a3 100644
--- a/drivers/net/irda/irda-usb.h
+++ b/drivers/net/irda/irda-usb.h
@@ -156,6 +156,7 @@ struct irda_usb_cb {
156 struct irlap_cb *irlap; /* The link layer we are binded to */ 156 struct irlap_cb *irlap; /* The link layer we are binded to */
157 struct qos_info qos; 157 struct qos_info qos;
158 char *speed_buff; /* Buffer for speed changes */ 158 char *speed_buff; /* Buffer for speed changes */
159 char *tx_buff;
159 160
160 struct timeval stamp; 161 struct timeval stamp;
161 struct timeval now; 162 struct timeval now;
diff --git a/drivers/net/irda/stir4200.c b/drivers/net/irda/stir4200.c
index c14a74634fd5..20d306fea4cb 100644
--- a/drivers/net/irda/stir4200.c
+++ b/drivers/net/irda/stir4200.c
@@ -59,7 +59,7 @@
59#include <asm/byteorder.h> 59#include <asm/byteorder.h>
60#include <asm/unaligned.h> 60#include <asm/unaligned.h>
61 61
62MODULE_AUTHOR("Stephen Hemminger <shemminger@osdl.org>"); 62MODULE_AUTHOR("Stephen Hemminger <shemminger@linux-foundation.org>");
63MODULE_DESCRIPTION("IrDA-USB Dongle Driver for SigmaTel STIr4200"); 63MODULE_DESCRIPTION("IrDA-USB Dongle Driver for SigmaTel STIr4200");
64MODULE_LICENSE("GPL"); 64MODULE_LICENSE("GPL");
65 65
diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c
index 18c68193bf14..e2b1af618450 100644
--- a/drivers/net/irda/vlsi_ir.c
+++ b/drivers/net/irda/vlsi_ir.c
@@ -166,7 +166,7 @@ static void vlsi_proc_pdev(struct seq_file *seq, struct pci_dev *pdev)
166 unsigned i; 166 unsigned i;
167 167
168 seq_printf(seq, "\n%s (vid/did: %04x/%04x)\n", 168 seq_printf(seq, "\n%s (vid/did: %04x/%04x)\n",
169 PCIDEV_NAME(pdev), (int)pdev->vendor, (int)pdev->device); 169 pci_name(pdev), (int)pdev->vendor, (int)pdev->device);
170 seq_printf(seq, "pci-power-state: %u\n", (unsigned) pdev->current_state); 170 seq_printf(seq, "pci-power-state: %u\n", (unsigned) pdev->current_state);
171 seq_printf(seq, "resources: irq=%u / io=0x%04x / dma_mask=0x%016Lx\n", 171 seq_printf(seq, "resources: irq=%u / io=0x%04x / dma_mask=0x%016Lx\n",
172 pdev->irq, (unsigned)pci_resource_start(pdev, 0), (unsigned long long)pdev->dma_mask); 172 pdev->irq, (unsigned)pci_resource_start(pdev, 0), (unsigned long long)pdev->dma_mask);
@@ -1401,7 +1401,7 @@ static void vlsi_tx_timeout(struct net_device *ndev)
1401 1401
1402 if (vlsi_start_hw(idev)) 1402 if (vlsi_start_hw(idev))
1403 IRDA_ERROR("%s: failed to restart hw - %s(%s) unusable!\n", 1403 IRDA_ERROR("%s: failed to restart hw - %s(%s) unusable!\n",
1404 __FUNCTION__, PCIDEV_NAME(idev->pdev), ndev->name); 1404 __FUNCTION__, pci_name(idev->pdev), ndev->name);
1405 else 1405 else
1406 netif_start_queue(ndev); 1406 netif_start_queue(ndev);
1407} 1407}
@@ -1643,7 +1643,7 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1643 pdev->current_state = 0; /* hw must be running now */ 1643 pdev->current_state = 0; /* hw must be running now */
1644 1644
1645 IRDA_MESSAGE("%s: IrDA PCI controller %s detected\n", 1645 IRDA_MESSAGE("%s: IrDA PCI controller %s detected\n",
1646 drivername, PCIDEV_NAME(pdev)); 1646 drivername, pci_name(pdev));
1647 1647
1648 if ( !pci_resource_start(pdev,0) 1648 if ( !pci_resource_start(pdev,0)
1649 || !(pci_resource_flags(pdev,0) & IORESOURCE_IO) ) { 1649 || !(pci_resource_flags(pdev,0) & IORESOURCE_IO) ) {
@@ -1728,7 +1728,7 @@ static void __devexit vlsi_irda_remove(struct pci_dev *pdev)
1728 1728
1729 pci_set_drvdata(pdev, NULL); 1729 pci_set_drvdata(pdev, NULL);
1730 1730
1731 IRDA_MESSAGE("%s: %s removed\n", drivername, PCIDEV_NAME(pdev)); 1731 IRDA_MESSAGE("%s: %s removed\n", drivername, pci_name(pdev));
1732} 1732}
1733 1733
1734#ifdef CONFIG_PM 1734#ifdef CONFIG_PM
@@ -1748,7 +1748,7 @@ static int vlsi_irda_suspend(struct pci_dev *pdev, pm_message_t state)
1748 1748
1749 if (!ndev) { 1749 if (!ndev) {
1750 IRDA_ERROR("%s - %s: no netdevice \n", 1750 IRDA_ERROR("%s - %s: no netdevice \n",
1751 __FUNCTION__, PCIDEV_NAME(pdev)); 1751 __FUNCTION__, pci_name(pdev));
1752 return 0; 1752 return 0;
1753 } 1753 }
1754 idev = ndev->priv; 1754 idev = ndev->priv;
@@ -1759,7 +1759,7 @@ static int vlsi_irda_suspend(struct pci_dev *pdev, pm_message_t state)
1759 pdev->current_state = state.event; 1759 pdev->current_state = state.event;
1760 } 1760 }
1761 else 1761 else
1762 IRDA_ERROR("%s - %s: invalid suspend request %u -> %u\n", __FUNCTION__, PCIDEV_NAME(pdev), pdev->current_state, state.event); 1762 IRDA_ERROR("%s - %s: invalid suspend request %u -> %u\n", __FUNCTION__, pci_name(pdev), pdev->current_state, state.event);
1763 up(&idev->sem); 1763 up(&idev->sem);
1764 return 0; 1764 return 0;
1765 } 1765 }
@@ -1787,7 +1787,7 @@ static int vlsi_irda_resume(struct pci_dev *pdev)
1787 1787
1788 if (!ndev) { 1788 if (!ndev) {
1789 IRDA_ERROR("%s - %s: no netdevice \n", 1789 IRDA_ERROR("%s - %s: no netdevice \n",
1790 __FUNCTION__, PCIDEV_NAME(pdev)); 1790 __FUNCTION__, pci_name(pdev));
1791 return 0; 1791 return 0;
1792 } 1792 }
1793 idev = ndev->priv; 1793 idev = ndev->priv;
@@ -1795,7 +1795,7 @@ static int vlsi_irda_resume(struct pci_dev *pdev)
1795 if (pdev->current_state == 0) { 1795 if (pdev->current_state == 0) {
1796 up(&idev->sem); 1796 up(&idev->sem);
1797 IRDA_WARNING("%s - %s: already resumed\n", 1797 IRDA_WARNING("%s - %s: already resumed\n",
1798 __FUNCTION__, PCIDEV_NAME(pdev)); 1798 __FUNCTION__, pci_name(pdev));
1799 return 0; 1799 return 0;
1800 } 1800 }
1801 1801
diff --git a/drivers/net/irda/vlsi_ir.h b/drivers/net/irda/vlsi_ir.h
index c37f0bc4c7f9..2d3b773d8e35 100644
--- a/drivers/net/irda/vlsi_ir.h
+++ b/drivers/net/irda/vlsi_ir.h
@@ -41,39 +41,6 @@
41#define PCI_CLASS_SUBCLASS_MASK 0xffff 41#define PCI_CLASS_SUBCLASS_MASK 0xffff
42#endif 42#endif
43 43
44/* in recent 2.5 interrupt handlers have non-void return value */
45#ifndef IRQ_RETVAL
46typedef void irqreturn_t;
47#define IRQ_NONE
48#define IRQ_HANDLED
49#define IRQ_RETVAL(x)
50#endif
51
52/* some stuff need to check kernelversion. Not all 2.5 stuff was present
53 * in early 2.5.x - the test is merely to separate 2.4 from 2.5
54 */
55#include <linux/version.h>
56
57#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
58
59/* PDE() introduced in 2.5.4 */
60#ifdef CONFIG_PROC_FS
61#define PDE(inode) ((inode)->i_private)
62#endif
63
64/* irda crc16 calculation exported in 2.5.42 */
65#define irda_calc_crc16(fcs,buf,len) (GOOD_FCS)
66
67/* we use this for unified pci device name access */
68#define PCIDEV_NAME(pdev) ((pdev)->name)
69
70#else /* 2.5 or later */
71
72/* whatever we get from the associated struct device - bus:slot:dev.fn id */
73#define PCIDEV_NAME(pdev) (pci_name(pdev))
74
75#endif
76
77/* ================================================================ */ 44/* ================================================================ */
78 45
79/* non-standard PCI registers */ 46/* non-standard PCI registers */
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index c41ae4286eea..b3bf86422734 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -314,6 +314,13 @@ int mv643xx_eth_free_tx_descs(struct net_device *dev, int force)
314 314
315 while (mp->tx_desc_count > 0) { 315 while (mp->tx_desc_count > 0) {
316 spin_lock_irqsave(&mp->lock, flags); 316 spin_lock_irqsave(&mp->lock, flags);
317
318 /* tx_desc_count might have changed before acquiring the lock */
319 if (mp->tx_desc_count <= 0) {
320 spin_unlock_irqrestore(&mp->lock, flags);
321 return released;
322 }
323
317 tx_index = mp->tx_used_desc_q; 324 tx_index = mp->tx_used_desc_q;
318 desc = &mp->p_tx_desc_area[tx_index]; 325 desc = &mp->p_tx_desc_area[tx_index];
319 cmd_sts = desc->cmd_sts; 326 cmd_sts = desc->cmd_sts;
@@ -332,13 +339,13 @@ int mv643xx_eth_free_tx_descs(struct net_device *dev, int force)
332 if (skb) 339 if (skb)
333 mp->tx_skb[tx_index] = NULL; 340 mp->tx_skb[tx_index] = NULL;
334 341
335 spin_unlock_irqrestore(&mp->lock, flags);
336
337 if (cmd_sts & ETH_ERROR_SUMMARY) { 342 if (cmd_sts & ETH_ERROR_SUMMARY) {
338 printk("%s: Error in TX\n", dev->name); 343 printk("%s: Error in TX\n", dev->name);
339 mp->stats.tx_errors++; 344 mp->stats.tx_errors++;
340 } 345 }
341 346
347 spin_unlock_irqrestore(&mp->lock, flags);
348
342 if (cmd_sts & ETH_TX_FIRST_DESC) 349 if (cmd_sts & ETH_TX_FIRST_DESC)
343 dma_unmap_single(NULL, addr, count, DMA_TO_DEVICE); 350 dma_unmap_single(NULL, addr, count, DMA_TO_DEVICE);
344 else 351 else
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 07cf574197e5..61cbd4a60446 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -71,7 +71,7 @@
71#include "myri10ge_mcp.h" 71#include "myri10ge_mcp.h"
72#include "myri10ge_mcp_gen_header.h" 72#include "myri10ge_mcp_gen_header.h"
73 73
74#define MYRI10GE_VERSION_STR "1.1.0" 74#define MYRI10GE_VERSION_STR "1.2.0"
75 75
76MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); 76MODULE_DESCRIPTION("Myricom 10G driver (10GbE)");
77MODULE_AUTHOR("Maintainer: help@myri.com"); 77MODULE_AUTHOR("Maintainer: help@myri.com");
@@ -274,6 +274,10 @@ static int myri10ge_fill_thresh = 256;
274module_param(myri10ge_fill_thresh, int, S_IRUGO | S_IWUSR); 274module_param(myri10ge_fill_thresh, int, S_IRUGO | S_IWUSR);
275MODULE_PARM_DESC(myri10ge_fill_thresh, "Number of empty rx slots allowed\n"); 275MODULE_PARM_DESC(myri10ge_fill_thresh, "Number of empty rx slots allowed\n");
276 276
277static int myri10ge_wcfifo = 1;
278module_param(myri10ge_wcfifo, int, S_IRUGO);
279MODULE_PARM_DESC(myri10ge_wcfifo, "Enable WC Fifo when WC is enabled\n");
280
277#define MYRI10GE_FW_OFFSET 1024*1024 281#define MYRI10GE_FW_OFFSET 1024*1024
278#define MYRI10GE_HIGHPART_TO_U32(X) \ 282#define MYRI10GE_HIGHPART_TO_U32(X) \
279(sizeof (X) == 8) ? ((u32)((u64)(X) >> 32)) : (0) 283(sizeof (X) == 8) ? ((u32)((u64)(X) >> 32)) : (0)
@@ -1714,7 +1718,7 @@ static int myri10ge_open(struct net_device *dev)
1714 goto abort_with_irq; 1718 goto abort_with_irq;
1715 } 1719 }
1716 1720
1717 if (mgp->mtrr >= 0) { 1721 if (myri10ge_wcfifo && mgp->mtrr >= 0) {
1718 mgp->tx.wc_fifo = (u8 __iomem *) mgp->sram + MXGEFW_ETH_SEND_4; 1722 mgp->tx.wc_fifo = (u8 __iomem *) mgp->sram + MXGEFW_ETH_SEND_4;
1719 mgp->rx_small.wc_fifo = 1723 mgp->rx_small.wc_fifo =
1720 (u8 __iomem *) mgp->sram + MXGEFW_ETH_RECV_SMALL; 1724 (u8 __iomem *) mgp->sram + MXGEFW_ETH_RECV_SMALL;
@@ -2878,7 +2882,6 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2878 netdev->hard_start_xmit = myri10ge_xmit; 2882 netdev->hard_start_xmit = myri10ge_xmit;
2879 netdev->get_stats = myri10ge_get_stats; 2883 netdev->get_stats = myri10ge_get_stats;
2880 netdev->base_addr = mgp->iomem_base; 2884 netdev->base_addr = mgp->iomem_base;
2881 netdev->irq = pdev->irq;
2882 netdev->change_mtu = myri10ge_change_mtu; 2885 netdev->change_mtu = myri10ge_change_mtu;
2883 netdev->set_multicast_list = myri10ge_set_multicast_list; 2886 netdev->set_multicast_list = myri10ge_set_multicast_list;
2884 netdev->set_mac_address = myri10ge_set_mac_address; 2887 netdev->set_mac_address = myri10ge_set_mac_address;
@@ -2888,6 +2891,15 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2888 netdev->poll = myri10ge_poll; 2891 netdev->poll = myri10ge_poll;
2889 netdev->weight = myri10ge_napi_weight; 2892 netdev->weight = myri10ge_napi_weight;
2890 2893
2894 /* make sure we can get an irq, and that MSI can be
2895 * setup (if available). Also ensure netdev->irq
2896 * is set to correct value if MSI is enabled */
2897 status = myri10ge_request_irq(mgp);
2898 if (status != 0)
2899 goto abort_with_firmware;
2900 netdev->irq = pdev->irq;
2901 myri10ge_free_irq(mgp);
2902
2891 /* Save configuration space to be restored if the 2903 /* Save configuration space to be restored if the
2892 * nic resets due to a parity error */ 2904 * nic resets due to a parity error */
2893 pci_save_state(pdev); 2905 pci_save_state(pdev);
@@ -2903,8 +2915,9 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2903 dev_err(&pdev->dev, "register_netdev failed: %d\n", status); 2915 dev_err(&pdev->dev, "register_netdev failed: %d\n", status);
2904 goto abort_with_state; 2916 goto abort_with_state;
2905 } 2917 }
2906 dev_info(dev, "%d, tx bndry %d, fw %s, WC %s\n", 2918 dev_info(dev, "%s IRQ %d, tx bndry %d, fw %s, WC %s\n",
2907 pdev->irq, mgp->tx.boundary, mgp->fw_name, 2919 (mgp->msi_enabled ? "MSI" : "xPIC"),
2920 netdev->irq, mgp->tx.boundary, mgp->fw_name,
2908 (mgp->mtrr >= 0 ? "Enabled" : "Disabled")); 2921 (mgp->mtrr >= 0 ? "Enabled" : "Disabled"));
2909 2922
2910 return 0; 2923 return 0;
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index 6490acf05305..e8598b809228 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -63,12 +63,11 @@
63 63
64#include "netxen_nic_hw.h" 64#include "netxen_nic_hw.h"
65 65
66#define NETXEN_NIC_BUILD_NO "4" 66#define NETXEN_NIC_BUILD_NO "2"
67#define _NETXEN_NIC_LINUX_MAJOR 3 67#define _NETXEN_NIC_LINUX_MAJOR 3
68#define _NETXEN_NIC_LINUX_MINOR 3 68#define _NETXEN_NIC_LINUX_MINOR 3
69#define _NETXEN_NIC_LINUX_SUBVERSION 2 69#define _NETXEN_NIC_LINUX_SUBVERSION 3
70#define NETXEN_NIC_LINUX_VERSIONID "3.3.2" "-" NETXEN_NIC_BUILD_NO 70#define NETXEN_NIC_LINUX_VERSIONID "3.3.3" "-" NETXEN_NIC_BUILD_NO
71#define NETXEN_NIC_FW_VERSIONID "3.3.2"
72 71
73#define RCV_DESC_RINGSIZE \ 72#define RCV_DESC_RINGSIZE \
74 (sizeof(struct rcv_desc) * adapter->max_rx_desc_count) 73 (sizeof(struct rcv_desc) * adapter->max_rx_desc_count)
@@ -240,49 +239,39 @@ extern unsigned long long netxen_dma_mask;
240 239
241typedef u32 netxen_ctx_msg; 240typedef u32 netxen_ctx_msg;
242 241
243#define _netxen_set_bits(config_word, start, bits, val) {\
244 unsigned long long mask = (((1ULL << (bits)) - 1) << (start)); \
245 unsigned long long value = (val); \
246 (config_word) &= ~mask; \
247 (config_word) |= (((value) << (start)) & mask); \
248}
249
250#define netxen_set_msg_peg_id(config_word, val) \ 242#define netxen_set_msg_peg_id(config_word, val) \
251 _netxen_set_bits(config_word, 0, 2, val) 243 ((config_word) &= ~3, (config_word) |= val & 3)
252#define netxen_set_msg_privid(config_word) \ 244#define netxen_set_msg_privid(config_word) \
253 set_bit(2, (unsigned long*)&config_word) 245 ((config_word) |= 1 << 2)
254#define netxen_set_msg_count(config_word, val) \ 246#define netxen_set_msg_count(config_word, val) \
255 _netxen_set_bits(config_word, 3, 15, val) 247 ((config_word) &= ~(0x7fff<<3), (config_word) |= (val & 0x7fff) << 3)
256#define netxen_set_msg_ctxid(config_word, val) \ 248#define netxen_set_msg_ctxid(config_word, val) \
257 _netxen_set_bits(config_word, 18, 10, val) 249 ((config_word) &= ~(0x3ff<<18), (config_word) |= (val & 0x3ff) << 18)
258#define netxen_set_msg_opcode(config_word, val) \ 250#define netxen_set_msg_opcode(config_word, val) \
259 _netxen_set_bits(config_word, 28, 4, val) 251 ((config_word) &= ~(0xf<<24), (config_word) |= (val & 0xf) << 24)
260 252
261struct netxen_rcv_context { 253struct netxen_rcv_context {
262 u32 rcv_ring_addr_lo; 254 __le64 rcv_ring_addr;
263 u32 rcv_ring_addr_hi; 255 __le32 rcv_ring_size;
264 u32 rcv_ring_size; 256 __le32 rsrvd;
265 u32 rsrvd;
266}; 257};
267 258
268struct netxen_ring_ctx { 259struct netxen_ring_ctx {
269 260
270 /* one command ring */ 261 /* one command ring */
271 u64 cmd_consumer_offset; 262 __le64 cmd_consumer_offset;
272 u32 cmd_ring_addr_lo; 263 __le64 cmd_ring_addr;
273 u32 cmd_ring_addr_hi; 264 __le32 cmd_ring_size;
274 u32 cmd_ring_size; 265 __le32 rsrvd;
275 u32 rsrvd;
276 266
277 /* three receive rings */ 267 /* three receive rings */
278 struct netxen_rcv_context rcv_ctx[3]; 268 struct netxen_rcv_context rcv_ctx[3];
279 269
280 /* one status ring */ 270 /* one status ring */
281 u32 sts_ring_addr_lo; 271 __le64 sts_ring_addr;
282 u32 sts_ring_addr_hi; 272 __le32 sts_ring_size;
283 u32 sts_ring_size;
284 273
285 u32 ctx_id; 274 __le32 ctx_id;
286} __attribute__ ((aligned(64))); 275} __attribute__ ((aligned(64)));
287 276
288/* 277/*
@@ -306,81 +295,85 @@ struct netxen_ring_ctx {
306 ((cmd_desc)->port_ctxid |= ((var) & 0x0F)) 295 ((cmd_desc)->port_ctxid |= ((var) & 0x0F))
307 296
308#define netxen_set_cmd_desc_flags(cmd_desc, val) \ 297#define netxen_set_cmd_desc_flags(cmd_desc, val) \
309 _netxen_set_bits((cmd_desc)->flags_opcode, 0, 7, val) 298 ((cmd_desc)->flags_opcode &= ~cpu_to_le16(0x7f), \
299 (cmd_desc)->flags_opcode |= cpu_to_le16((val) & 0x7f))
310#define netxen_set_cmd_desc_opcode(cmd_desc, val) \ 300#define netxen_set_cmd_desc_opcode(cmd_desc, val) \
311 _netxen_set_bits((cmd_desc)->flags_opcode, 7, 6, val) 301 ((cmd_desc)->flags_opcode &= ~cpu_to_le16(0x3f<<7), \
302 (cmd_desc)->flags_opcode |= cpu_to_le16((val) & (0x3f<<7)))
312 303
313#define netxen_set_cmd_desc_num_of_buff(cmd_desc, val) \ 304#define netxen_set_cmd_desc_num_of_buff(cmd_desc, val) \
314 _netxen_set_bits((cmd_desc)->num_of_buffers_total_length, 0, 8, val); 305 ((cmd_desc)->num_of_buffers_total_length &= ~cpu_to_le32(0xff), \
306 (cmd_desc)->num_of_buffers_total_length |= cpu_to_le32((val) & 0xff))
315#define netxen_set_cmd_desc_totallength(cmd_desc, val) \ 307#define netxen_set_cmd_desc_totallength(cmd_desc, val) \
316 _netxen_set_bits((cmd_desc)->num_of_buffers_total_length, 8, 24, val); 308 ((cmd_desc)->num_of_buffers_total_length &= cpu_to_le32(0xff), \
309 (cmd_desc)->num_of_buffers_total_length |= cpu_to_le32(val << 24))
317 310
318#define netxen_get_cmd_desc_opcode(cmd_desc) \ 311#define netxen_get_cmd_desc_opcode(cmd_desc) \
319 (((cmd_desc)->flags_opcode >> 7) & 0x003F) 312 ((le16_to_cpu((cmd_desc)->flags_opcode) >> 7) & 0x003F)
320#define netxen_get_cmd_desc_totallength(cmd_desc) \ 313#define netxen_get_cmd_desc_totallength(cmd_desc) \
321 (((cmd_desc)->num_of_buffers_total_length >> 8) & 0x0FFFFFF) 314 (le32_to_cpu((cmd_desc)->num_of_buffers_total_length) >> 8)
322 315
323struct cmd_desc_type0 { 316struct cmd_desc_type0 {
324 u8 tcp_hdr_offset; /* For LSO only */ 317 u8 tcp_hdr_offset; /* For LSO only */
325 u8 ip_hdr_offset; /* For LSO only */ 318 u8 ip_hdr_offset; /* For LSO only */
326 /* Bit pattern: 0-6 flags, 7-12 opcode, 13-15 unused */ 319 /* Bit pattern: 0-6 flags, 7-12 opcode, 13-15 unused */
327 u16 flags_opcode; 320 __le16 flags_opcode;
328 /* Bit pattern: 0-7 total number of segments, 321 /* Bit pattern: 0-7 total number of segments,
329 8-31 Total size of the packet */ 322 8-31 Total size of the packet */
330 u32 num_of_buffers_total_length; 323 __le32 num_of_buffers_total_length;
331 union { 324 union {
332 struct { 325 struct {
333 u32 addr_low_part2; 326 __le32 addr_low_part2;
334 u32 addr_high_part2; 327 __le32 addr_high_part2;
335 }; 328 };
336 u64 addr_buffer2; 329 __le64 addr_buffer2;
337 }; 330 };
338 331
339 u16 reference_handle; /* changed to u16 to add mss */ 332 __le16 reference_handle; /* changed to u16 to add mss */
340 u16 mss; /* passed by NDIS_PACKET for LSO */ 333 __le16 mss; /* passed by NDIS_PACKET for LSO */
341 /* Bit pattern 0-3 port, 0-3 ctx id */ 334 /* Bit pattern 0-3 port, 0-3 ctx id */
342 u8 port_ctxid; 335 u8 port_ctxid;
343 u8 total_hdr_length; /* LSO only : MAC+IP+TCP Hdr size */ 336 u8 total_hdr_length; /* LSO only : MAC+IP+TCP Hdr size */
344 u16 conn_id; /* IPSec offoad only */ 337 __le16 conn_id; /* IPSec offoad only */
345 338
346 union { 339 union {
347 struct { 340 struct {
348 u32 addr_low_part3; 341 __le32 addr_low_part3;
349 u32 addr_high_part3; 342 __le32 addr_high_part3;
350 }; 343 };
351 u64 addr_buffer3; 344 __le64 addr_buffer3;
352 }; 345 };
353 union { 346 union {
354 struct { 347 struct {
355 u32 addr_low_part1; 348 __le32 addr_low_part1;
356 u32 addr_high_part1; 349 __le32 addr_high_part1;
357 }; 350 };
358 u64 addr_buffer1; 351 __le64 addr_buffer1;
359 }; 352 };
360 353
361 u16 buffer1_length; 354 __le16 buffer1_length;
362 u16 buffer2_length; 355 __le16 buffer2_length;
363 u16 buffer3_length; 356 __le16 buffer3_length;
364 u16 buffer4_length; 357 __le16 buffer4_length;
365 358
366 union { 359 union {
367 struct { 360 struct {
368 u32 addr_low_part4; 361 __le32 addr_low_part4;
369 u32 addr_high_part4; 362 __le32 addr_high_part4;
370 }; 363 };
371 u64 addr_buffer4; 364 __le64 addr_buffer4;
372 }; 365 };
373 366
374 u64 unused; 367 __le64 unused;
375 368
376} __attribute__ ((aligned(64))); 369} __attribute__ ((aligned(64)));
377 370
378/* Note: sizeof(rcv_desc) should always be a mutliple of 2 */ 371/* Note: sizeof(rcv_desc) should always be a mutliple of 2 */
379struct rcv_desc { 372struct rcv_desc {
380 u16 reference_handle; 373 __le16 reference_handle;
381 u16 reserved; 374 __le16 reserved;
382 u32 buffer_length; /* allocated buffer length (usually 2K) */ 375 __le32 buffer_length; /* allocated buffer length (usually 2K) */
383 u64 addr_buffer; 376 __le64 addr_buffer;
384}; 377};
385 378
386/* opcode field in status_desc */ 379/* opcode field in status_desc */
@@ -406,36 +399,36 @@ struct rcv_desc {
406 (((status_desc)->lro & 0x80) >> 7) 399 (((status_desc)->lro & 0x80) >> 7)
407 400
408#define netxen_get_sts_port(status_desc) \ 401#define netxen_get_sts_port(status_desc) \
409 ((status_desc)->status_desc_data & 0x0F) 402 (le64_to_cpu((status_desc)->status_desc_data) & 0x0F)
410#define netxen_get_sts_status(status_desc) \ 403#define netxen_get_sts_status(status_desc) \
411 (((status_desc)->status_desc_data >> 4) & 0x0F) 404 ((le64_to_cpu((status_desc)->status_desc_data) >> 4) & 0x0F)
412#define netxen_get_sts_type(status_desc) \ 405#define netxen_get_sts_type(status_desc) \
413 (((status_desc)->status_desc_data >> 8) & 0x0F) 406 ((le64_to_cpu((status_desc)->status_desc_data) >> 8) & 0x0F)
414#define netxen_get_sts_totallength(status_desc) \ 407#define netxen_get_sts_totallength(status_desc) \
415 (((status_desc)->status_desc_data >> 12) & 0xFFFF) 408 ((le64_to_cpu((status_desc)->status_desc_data) >> 12) & 0xFFFF)
416#define netxen_get_sts_refhandle(status_desc) \ 409#define netxen_get_sts_refhandle(status_desc) \
417 (((status_desc)->status_desc_data >> 28) & 0xFFFF) 410 ((le64_to_cpu((status_desc)->status_desc_data) >> 28) & 0xFFFF)
418#define netxen_get_sts_prot(status_desc) \ 411#define netxen_get_sts_prot(status_desc) \
419 (((status_desc)->status_desc_data >> 44) & 0x0F) 412 ((le64_to_cpu((status_desc)->status_desc_data) >> 44) & 0x0F)
420#define netxen_get_sts_owner(status_desc) \ 413#define netxen_get_sts_owner(status_desc) \
421 (((status_desc)->status_desc_data >> 56) & 0x03) 414 ((le64_to_cpu((status_desc)->status_desc_data) >> 56) & 0x03)
422#define netxen_get_sts_opcode(status_desc) \ 415#define netxen_get_sts_opcode(status_desc) \
423 (((status_desc)->status_desc_data >> 58) & 0x03F) 416 ((le64_to_cpu((status_desc)->status_desc_data) >> 58) & 0x03F)
424 417
425#define netxen_clear_sts_owner(status_desc) \ 418#define netxen_clear_sts_owner(status_desc) \
426 ((status_desc)->status_desc_data &= \ 419 ((status_desc)->status_desc_data &= \
427 ~(((unsigned long long)3) << 56 )) 420 ~cpu_to_le64(((unsigned long long)3) << 56 ))
428#define netxen_set_sts_owner(status_desc, val) \ 421#define netxen_set_sts_owner(status_desc, val) \
429 ((status_desc)->status_desc_data |= \ 422 ((status_desc)->status_desc_data |= \
430 (((unsigned long long)((val) & 0x3)) << 56 )) 423 cpu_to_le64(((unsigned long long)((val) & 0x3)) << 56 ))
431 424
432struct status_desc { 425struct status_desc {
433 /* Bit pattern: 0-3 port, 4-7 status, 8-11 type, 12-27 total_length 426 /* Bit pattern: 0-3 port, 4-7 status, 8-11 type, 12-27 total_length
434 28-43 reference_handle, 44-47 protocol, 48-52 unused 427 28-43 reference_handle, 44-47 protocol, 48-52 unused
435 53-55 desc_cnt, 56-57 owner, 58-63 opcode 428 53-55 desc_cnt, 56-57 owner, 58-63 opcode
436 */ 429 */
437 u64 status_desc_data; 430 __le64 status_desc_data;
438 u32 hash_value; 431 __le32 hash_value;
439 u8 hash_type; 432 u8 hash_type;
440 u8 msg_type; 433 u8 msg_type;
441 u8 unused; 434 u8 unused;
@@ -1006,9 +999,9 @@ void netxen_niu_gbe_set_mii_mode(struct netxen_adapter *adapter, int port,
1006void netxen_niu_gbe_set_gmii_mode(struct netxen_adapter *adapter, int port, 999void netxen_niu_gbe_set_gmii_mode(struct netxen_adapter *adapter, int port,
1007 long enable); 1000 long enable);
1008int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, long reg, 1001int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, long reg,
1009 __le32 * readval); 1002 __u32 * readval);
1010int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, long phy, 1003int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, long phy,
1011 long reg, __le32 val); 1004 long reg, __u32 val);
1012 1005
1013/* Functions available from netxen_nic_hw.c */ 1006/* Functions available from netxen_nic_hw.c */
1014int netxen_nic_set_mtu_xgb(struct netxen_port *port, int new_mtu); 1007int netxen_nic_set_mtu_xgb(struct netxen_port *port, int new_mtu);
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c
index 34044616b3c8..c381d77a7336 100644
--- a/drivers/net/netxen/netxen_nic_ethtool.c
+++ b/drivers/net/netxen/netxen_nic_ethtool.c
@@ -218,7 +218,7 @@ netxen_nic_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
218{ 218{
219 struct netxen_port *port = netdev_priv(dev); 219 struct netxen_port *port = netdev_priv(dev);
220 struct netxen_adapter *adapter = port->adapter; 220 struct netxen_adapter *adapter = port->adapter;
221 __le32 status; 221 __u32 status;
222 222
223 /* read which mode */ 223 /* read which mode */
224 if (adapter->ahw.board_type == NETXEN_NIC_GBE) { 224 if (adapter->ahw.board_type == NETXEN_NIC_GBE) {
@@ -226,7 +226,7 @@ netxen_nic_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
226 if (adapter->phy_write 226 if (adapter->phy_write
227 && adapter->phy_write(adapter, port->portnum, 227 && adapter->phy_write(adapter, port->portnum,
228 NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG, 228 NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG,
229 (__le32) ecmd->autoneg) != 0) 229 ecmd->autoneg) != 0)
230 return -EIO; 230 return -EIO;
231 else 231 else
232 port->link_autoneg = ecmd->autoneg; 232 port->link_autoneg = ecmd->autoneg;
@@ -279,7 +279,7 @@ static int netxen_nic_get_regs_len(struct net_device *dev)
279} 279}
280 280
281struct netxen_niu_regs { 281struct netxen_niu_regs {
282 __le32 reg[NETXEN_NIC_REGS_COUNT]; 282 __u32 reg[NETXEN_NIC_REGS_COUNT];
283}; 283};
284 284
285static struct netxen_niu_regs niu_registers[] = { 285static struct netxen_niu_regs niu_registers[] = {
@@ -372,7 +372,7 @@ netxen_nic_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *p)
372{ 372{
373 struct netxen_port *port = netdev_priv(dev); 373 struct netxen_port *port = netdev_priv(dev);
374 struct netxen_adapter *adapter = port->adapter; 374 struct netxen_adapter *adapter = port->adapter;
375 __le32 mode, *regs_buff = p; 375 __u32 mode, *regs_buff = p;
376 void __iomem *addr; 376 void __iomem *addr;
377 int i, window; 377 int i, window;
378 378
@@ -415,7 +415,7 @@ static u32 netxen_nic_get_link(struct net_device *dev)
415{ 415{
416 struct netxen_port *port = netdev_priv(dev); 416 struct netxen_port *port = netdev_priv(dev);
417 struct netxen_adapter *adapter = port->adapter; 417 struct netxen_adapter *adapter = port->adapter;
418 __le32 status; 418 __u32 status;
419 419
420 /* read which mode */ 420 /* read which mode */
421 if (adapter->ahw.board_type == NETXEN_NIC_GBE) { 421 if (adapter->ahw.board_type == NETXEN_NIC_GBE) {
@@ -482,13 +482,13 @@ netxen_nic_get_pauseparam(struct net_device *dev,
482{ 482{
483 struct netxen_port *port = netdev_priv(dev); 483 struct netxen_port *port = netdev_priv(dev);
484 struct netxen_adapter *adapter = port->adapter; 484 struct netxen_adapter *adapter = port->adapter;
485 __le32 val; 485 __u32 val;
486 486
487 if (adapter->ahw.board_type == NETXEN_NIC_GBE) { 487 if (adapter->ahw.board_type == NETXEN_NIC_GBE) {
488 /* get flow control settings */ 488 /* get flow control settings */
489 netxen_nic_read_w0(adapter, 489 netxen_nic_read_w0(adapter,
490 NETXEN_NIU_GB_MAC_CONFIG_0(port->portnum), 490 NETXEN_NIU_GB_MAC_CONFIG_0(port->portnum),
491 (u32 *) & val); 491 &val);
492 pause->rx_pause = netxen_gb_get_rx_flowctl(val); 492 pause->rx_pause = netxen_gb_get_rx_flowctl(val);
493 pause->tx_pause = netxen_gb_get_tx_flowctl(val); 493 pause->tx_pause = netxen_gb_get_tx_flowctl(val);
494 /* get autoneg settings */ 494 /* get autoneg settings */
@@ -502,7 +502,7 @@ netxen_nic_set_pauseparam(struct net_device *dev,
502{ 502{
503 struct netxen_port *port = netdev_priv(dev); 503 struct netxen_port *port = netdev_priv(dev);
504 struct netxen_adapter *adapter = port->adapter; 504 struct netxen_adapter *adapter = port->adapter;
505 __le32 val; 505 __u32 val;
506 unsigned int autoneg; 506 unsigned int autoneg;
507 507
508 /* read mode */ 508 /* read mode */
@@ -522,13 +522,13 @@ netxen_nic_set_pauseparam(struct net_device *dev,
522 522
523 netxen_nic_write_w0(adapter, 523 netxen_nic_write_w0(adapter,
524 NETXEN_NIU_GB_MAC_CONFIG_0(port->portnum), 524 NETXEN_NIU_GB_MAC_CONFIG_0(port->portnum),
525 *(u32 *) (&val)); 525 *&val);
526 /* set autoneg */ 526 /* set autoneg */
527 autoneg = pause->autoneg; 527 autoneg = pause->autoneg;
528 if (adapter->phy_write 528 if (adapter->phy_write
529 && adapter->phy_write(adapter, port->portnum, 529 && adapter->phy_write(adapter, port->portnum,
530 NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG, 530 NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG,
531 (__le32) autoneg) != 0) 531 autoneg) != 0)
532 return -EIO; 532 return -EIO;
533 else { 533 else {
534 port->link_autoneg = pause->autoneg; 534 port->link_autoneg = pause->autoneg;
@@ -543,7 +543,7 @@ static int netxen_nic_reg_test(struct net_device *dev)
543 struct netxen_port *port = netdev_priv(dev); 543 struct netxen_port *port = netdev_priv(dev);
544 struct netxen_adapter *adapter = port->adapter; 544 struct netxen_adapter *adapter = port->adapter;
545 u32 data_read, data_written, save; 545 u32 data_read, data_written, save;
546 __le32 mode; 546 __u32 mode;
547 547
548 /* 548 /*
549 * first test the "Read Only" registers by writing which mode 549 * first test the "Read Only" registers by writing which mode
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c
index c0c31d1914a7..f263232f499f 100644
--- a/drivers/net/netxen/netxen_nic_hw.c
+++ b/drivers/net/netxen/netxen_nic_hw.c
@@ -95,7 +95,7 @@ void netxen_nic_set_multi(struct net_device *netdev)
95 struct netxen_port *port = netdev_priv(netdev); 95 struct netxen_port *port = netdev_priv(netdev);
96 struct netxen_adapter *adapter = port->adapter; 96 struct netxen_adapter *adapter = port->adapter;
97 struct dev_mc_list *mc_ptr; 97 struct dev_mc_list *mc_ptr;
98 __le32 netxen_mac_addr_cntl_data = 0; 98 __u32 netxen_mac_addr_cntl_data = 0;
99 99
100 mc_ptr = netdev->mc_list; 100 mc_ptr = netdev->mc_list;
101 if (netdev->flags & IFF_PROMISC) { 101 if (netdev->flags & IFF_PROMISC) {
@@ -236,8 +236,9 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
236 } 236 }
237 memset(addr, 0, sizeof(struct netxen_ring_ctx)); 237 memset(addr, 0, sizeof(struct netxen_ring_ctx));
238 adapter->ctx_desc = (struct netxen_ring_ctx *)addr; 238 adapter->ctx_desc = (struct netxen_ring_ctx *)addr;
239 adapter->ctx_desc->cmd_consumer_offset = adapter->ctx_desc_phys_addr 239 adapter->ctx_desc->cmd_consumer_offset =
240 + sizeof(struct netxen_ring_ctx); 240 cpu_to_le64(adapter->ctx_desc_phys_addr +
241 sizeof(struct netxen_ring_ctx));
241 adapter->cmd_consumer = (uint32_t *) (((char *)addr) + 242 adapter->cmd_consumer = (uint32_t *) (((char *)addr) +
242 sizeof(struct netxen_ring_ctx)); 243 sizeof(struct netxen_ring_ctx));
243 244
@@ -253,11 +254,10 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
253 return -ENOMEM; 254 return -ENOMEM;
254 } 255 }
255 256
256 adapter->ctx_desc->cmd_ring_addr_lo = 257 adapter->ctx_desc->cmd_ring_addr =
257 hw->cmd_desc_phys_addr & 0xffffffffUL; 258 cpu_to_le64(hw->cmd_desc_phys_addr);
258 adapter->ctx_desc->cmd_ring_addr_hi = 259 adapter->ctx_desc->cmd_ring_size =
259 ((u64) hw->cmd_desc_phys_addr >> 32); 260 cpu_to_le32(adapter->max_tx_desc_count);
260 adapter->ctx_desc->cmd_ring_size = adapter->max_tx_desc_count;
261 261
262 hw->cmd_desc_head = (struct cmd_desc_type0 *)addr; 262 hw->cmd_desc_head = (struct cmd_desc_type0 *)addr;
263 263
@@ -278,12 +278,10 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
278 return err; 278 return err;
279 } 279 }
280 rcv_desc->desc_head = (struct rcv_desc *)addr; 280 rcv_desc->desc_head = (struct rcv_desc *)addr;
281 adapter->ctx_desc->rcv_ctx[ring].rcv_ring_addr_lo = 281 adapter->ctx_desc->rcv_ctx[ring].rcv_ring_addr =
282 rcv_desc->phys_addr & 0xffffffffUL; 282 cpu_to_le64(rcv_desc->phys_addr);
283 adapter->ctx_desc->rcv_ctx[ring].rcv_ring_addr_hi =
284 ((u64) rcv_desc->phys_addr >> 32);
285 adapter->ctx_desc->rcv_ctx[ring].rcv_ring_size = 283 adapter->ctx_desc->rcv_ctx[ring].rcv_ring_size =
286 rcv_desc->max_rx_desc_count; 284 cpu_to_le32(rcv_desc->max_rx_desc_count);
287 } 285 }
288 286
289 addr = netxen_alloc(adapter->ahw.pdev, STATUS_DESC_RINGSIZE, 287 addr = netxen_alloc(adapter->ahw.pdev, STATUS_DESC_RINGSIZE,
@@ -297,11 +295,10 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
297 return err; 295 return err;
298 } 296 }
299 recv_ctx->rcv_status_desc_head = (struct status_desc *)addr; 297 recv_ctx->rcv_status_desc_head = (struct status_desc *)addr;
300 adapter->ctx_desc->sts_ring_addr_lo = 298 adapter->ctx_desc->sts_ring_addr =
301 recv_ctx->rcv_status_desc_phys_addr & 0xffffffffUL; 299 cpu_to_le64(recv_ctx->rcv_status_desc_phys_addr);
302 adapter->ctx_desc->sts_ring_addr_hi = 300 adapter->ctx_desc->sts_ring_size =
303 ((u64) recv_ctx->rcv_status_desc_phys_addr >> 32); 301 cpu_to_le32(adapter->max_rx_desc_count);
304 adapter->ctx_desc->sts_ring_size = adapter->max_rx_desc_count;
305 302
306 } 303 }
307 /* Window = 1 */ 304 /* Window = 1 */
@@ -387,10 +384,6 @@ void netxen_tso_check(struct netxen_adapter *adapter,
387 } 384 }
388 adapter->stats.xmitcsummed++; 385 adapter->stats.xmitcsummed++;
389 desc->tcp_hdr_offset = skb->h.raw - skb->data; 386 desc->tcp_hdr_offset = skb->h.raw - skb->data;
390 netxen_set_cmd_desc_totallength(desc,
391 cpu_to_le32
392 (netxen_get_cmd_desc_totallength
393 (desc)));
394 desc->ip_hdr_offset = skb->nh.raw - skb->data; 387 desc->ip_hdr_offset = skb->nh.raw - skb->data;
395} 388}
396 389
@@ -867,9 +860,9 @@ netxen_crb_writelit_adapter(struct netxen_adapter *adapter, unsigned long off,
867void netxen_nic_set_link_parameters(struct netxen_port *port) 860void netxen_nic_set_link_parameters(struct netxen_port *port)
868{ 861{
869 struct netxen_adapter *adapter = port->adapter; 862 struct netxen_adapter *adapter = port->adapter;
870 __le32 status; 863 __u32 status;
871 __le32 autoneg; 864 __u32 autoneg;
872 __le32 mode; 865 __u32 mode;
873 866
874 netxen_nic_read_w0(adapter, NETXEN_NIU_MODE, &mode); 867 netxen_nic_read_w0(adapter, NETXEN_NIU_MODE, &mode);
875 if (netxen_get_niu_enable_ge(mode)) { /* Gb 10/100/1000 Mbps mode */ 868 if (netxen_get_niu_enable_ge(mode)) { /* Gb 10/100/1000 Mbps mode */
@@ -984,7 +977,8 @@ void netxen_nic_flash_print(struct netxen_adapter *adapter)
984 _NETXEN_NIC_LINUX_MAJOR, fw_major); 977 _NETXEN_NIC_LINUX_MAJOR, fw_major);
985 adapter->driver_mismatch = 1; 978 adapter->driver_mismatch = 1;
986 } 979 }
987 if (fw_minor != _NETXEN_NIC_LINUX_MINOR) { 980 if (fw_minor != _NETXEN_NIC_LINUX_MINOR &&
981 fw_minor != (_NETXEN_NIC_LINUX_MINOR + 1)) {
988 printk(KERN_ERR "The mismatch in driver version and firmware " 982 printk(KERN_ERR "The mismatch in driver version and firmware "
989 "version minor number\n" 983 "version minor number\n"
990 "Driver version minor number = %d \t" 984 "Driver version minor number = %d \t"
diff --git a/drivers/net/netxen/netxen_nic_hw.h b/drivers/net/netxen/netxen_nic_hw.h
index 0685633a9c1e..ab1112eb1b0d 100644
--- a/drivers/net/netxen/netxen_nic_hw.h
+++ b/drivers/net/netxen/netxen_nic_hw.h
@@ -124,28 +124,28 @@ typedef enum {
124 */ 124 */
125 125
126#define netxen_gb_enable_tx(config_word) \ 126#define netxen_gb_enable_tx(config_word) \
127 set_bit(0, (unsigned long*)(&config_word)) 127 ((config_word) |= 1 << 0)
128#define netxen_gb_enable_rx(config_word) \ 128#define netxen_gb_enable_rx(config_word) \
129 set_bit(2, (unsigned long*)(&config_word)) 129 ((config_word) |= 1 << 2)
130#define netxen_gb_tx_flowctl(config_word) \ 130#define netxen_gb_tx_flowctl(config_word) \
131 set_bit(4, (unsigned long*)(&config_word)) 131 ((config_word) |= 1 << 4)
132#define netxen_gb_rx_flowctl(config_word) \ 132#define netxen_gb_rx_flowctl(config_word) \
133 set_bit(5, (unsigned long*)(&config_word)) 133 ((config_word) |= 1 << 5)
134#define netxen_gb_tx_reset_pb(config_word) \ 134#define netxen_gb_tx_reset_pb(config_word) \
135 set_bit(16, (unsigned long*)(&config_word)) 135 ((config_word) |= 1 << 16)
136#define netxen_gb_rx_reset_pb(config_word) \ 136#define netxen_gb_rx_reset_pb(config_word) \
137 set_bit(17, (unsigned long*)(&config_word)) 137 ((config_word) |= 1 << 17)
138#define netxen_gb_tx_reset_mac(config_word) \ 138#define netxen_gb_tx_reset_mac(config_word) \
139 set_bit(18, (unsigned long*)(&config_word)) 139 ((config_word) |= 1 << 18)
140#define netxen_gb_rx_reset_mac(config_word) \ 140#define netxen_gb_rx_reset_mac(config_word) \
141 set_bit(19, (unsigned long*)(&config_word)) 141 ((config_word) |= 1 << 19)
142#define netxen_gb_soft_reset(config_word) \ 142#define netxen_gb_soft_reset(config_word) \
143 set_bit(31, (unsigned long*)(&config_word)) 143 ((config_word) |= 1 << 31)
144 144
145#define netxen_gb_unset_tx_flowctl(config_word) \ 145#define netxen_gb_unset_tx_flowctl(config_word) \
146 clear_bit(4, (unsigned long *)(&config_word)) 146 ((config_word) &= ~(1 << 4))
147#define netxen_gb_unset_rx_flowctl(config_word) \ 147#define netxen_gb_unset_rx_flowctl(config_word) \
148 clear_bit(5, (unsigned long*)(&config_word)) 148 ((config_word) &= ~(1 << 5))
149 149
150#define netxen_gb_get_tx_synced(config_word) \ 150#define netxen_gb_get_tx_synced(config_word) \
151 _netxen_crb_get_bit((config_word), 1) 151 _netxen_crb_get_bit((config_word), 1)
@@ -171,15 +171,15 @@ typedef enum {
171 */ 171 */
172 172
173#define netxen_gb_set_duplex(config_word) \ 173#define netxen_gb_set_duplex(config_word) \
174 set_bit(0, (unsigned long*)&config_word) 174 ((config_word) |= 1 << 0)
175#define netxen_gb_set_crc_enable(config_word) \ 175#define netxen_gb_set_crc_enable(config_word) \
176 set_bit(1, (unsigned long*)&config_word) 176 ((config_word) |= 1 << 1)
177#define netxen_gb_set_padshort(config_word) \ 177#define netxen_gb_set_padshort(config_word) \
178 set_bit(2, (unsigned long*)&config_word) 178 ((config_word) |= 1 << 2)
179#define netxen_gb_set_checklength(config_word) \ 179#define netxen_gb_set_checklength(config_word) \
180 set_bit(4, (unsigned long*)&config_word) 180 ((config_word) |= 1 << 4)
181#define netxen_gb_set_hugeframes(config_word) \ 181#define netxen_gb_set_hugeframes(config_word) \
182 set_bit(5, (unsigned long*)&config_word) 182 ((config_word) |= 1 << 5)
183#define netxen_gb_set_preamblelen(config_word, val) \ 183#define netxen_gb_set_preamblelen(config_word, val) \
184 ((config_word) |= ((val) << 12) & 0xF000) 184 ((config_word) |= ((val) << 12) & 0xF000)
185#define netxen_gb_set_intfmode(config_word, val) \ 185#define netxen_gb_set_intfmode(config_word, val) \
@@ -190,9 +190,9 @@ typedef enum {
190#define netxen_gb_set_mii_mgmt_clockselect(config_word, val) \ 190#define netxen_gb_set_mii_mgmt_clockselect(config_word, val) \
191 ((config_word) |= ((val) & 0x07)) 191 ((config_word) |= ((val) & 0x07))
192#define netxen_gb_mii_mgmt_reset(config_word) \ 192#define netxen_gb_mii_mgmt_reset(config_word) \
193 set_bit(31, (unsigned long*)&config_word) 193 ((config_word) |= 1 << 31)
194#define netxen_gb_mii_mgmt_unset(config_word) \ 194#define netxen_gb_mii_mgmt_unset(config_word) \
195 clear_bit(31, (unsigned long*)&config_word) 195 ((config_word) &= ~(1 << 31))
196 196
197/* 197/*
198 * NIU GB MII Mgmt Command Register (applies to GB0, GB1, GB2, GB3) 198 * NIU GB MII Mgmt Command Register (applies to GB0, GB1, GB2, GB3)
@@ -201,7 +201,7 @@ typedef enum {
201 */ 201 */
202 202
203#define netxen_gb_mii_mgmt_set_read_cycle(config_word) \ 203#define netxen_gb_mii_mgmt_set_read_cycle(config_word) \
204 set_bit(0, (unsigned long*)&config_word) 204 ((config_word) |= 1 << 0)
205#define netxen_gb_mii_mgmt_reg_addr(config_word, val) \ 205#define netxen_gb_mii_mgmt_reg_addr(config_word, val) \
206 ((config_word) |= ((val) & 0x1F)) 206 ((config_word) |= ((val) & 0x1F))
207#define netxen_gb_mii_mgmt_phy_addr(config_word, val) \ 207#define netxen_gb_mii_mgmt_phy_addr(config_word, val) \
@@ -274,9 +274,9 @@ typedef enum {
274#define netxen_set_phy_speed(config_word, val) \ 274#define netxen_set_phy_speed(config_word, val) \
275 ((config_word) |= ((val & 0x03) << 14)) 275 ((config_word) |= ((val & 0x03) << 14))
276#define netxen_set_phy_duplex(config_word) \ 276#define netxen_set_phy_duplex(config_word) \
277 set_bit(13, (unsigned long*)&config_word) 277 ((config_word) |= 1 << 13)
278#define netxen_clear_phy_duplex(config_word) \ 278#define netxen_clear_phy_duplex(config_word) \
279 clear_bit(13, (unsigned long*)&config_word) 279 ((config_word) &= ~(1 << 13))
280 280
281#define netxen_get_phy_jabber(config_word) \ 281#define netxen_get_phy_jabber(config_word) \
282 _netxen_crb_get_bit(config_word, 0) 282 _netxen_crb_get_bit(config_word, 0)
@@ -350,11 +350,11 @@ typedef enum {
350 _netxen_crb_get_bit(config_word, 15) 350 _netxen_crb_get_bit(config_word, 15)
351 351
352#define netxen_set_phy_int_link_status_changed(config_word) \ 352#define netxen_set_phy_int_link_status_changed(config_word) \
353 set_bit(10, (unsigned long*)&config_word) 353 ((config_word) |= 1 << 10)
354#define netxen_set_phy_int_autoneg_completed(config_word) \ 354#define netxen_set_phy_int_autoneg_completed(config_word) \
355 set_bit(11, (unsigned long*)&config_word) 355 ((config_word) |= 1 << 11)
356#define netxen_set_phy_int_speed_changed(config_word) \ 356#define netxen_set_phy_int_speed_changed(config_word) \
357 set_bit(14, (unsigned long*)&config_word) 357 ((config_word) |= 1 << 14)
358 358
359/* 359/*
360 * NIU Mode Register. 360 * NIU Mode Register.
@@ -382,22 +382,22 @@ typedef enum {
382 */ 382 */
383 383
384#define netxen_set_gb_drop_gb0(config_word) \ 384#define netxen_set_gb_drop_gb0(config_word) \
385 set_bit(0, (unsigned long*)&config_word) 385 ((config_word) |= 1 << 0)
386#define netxen_set_gb_drop_gb1(config_word) \ 386#define netxen_set_gb_drop_gb1(config_word) \
387 set_bit(1, (unsigned long*)&config_word) 387 ((config_word) |= 1 << 1)
388#define netxen_set_gb_drop_gb2(config_word) \ 388#define netxen_set_gb_drop_gb2(config_word) \
389 set_bit(2, (unsigned long*)&config_word) 389 ((config_word) |= 1 << 2)
390#define netxen_set_gb_drop_gb3(config_word) \ 390#define netxen_set_gb_drop_gb3(config_word) \
391 set_bit(3, (unsigned long*)&config_word) 391 ((config_word) |= 1 << 3)
392 392
393#define netxen_clear_gb_drop_gb0(config_word) \ 393#define netxen_clear_gb_drop_gb0(config_word) \
394 clear_bit(0, (unsigned long*)&config_word) 394 ((config_word) &= ~(1 << 0))
395#define netxen_clear_gb_drop_gb1(config_word) \ 395#define netxen_clear_gb_drop_gb1(config_word) \
396 clear_bit(1, (unsigned long*)&config_word) 396 ((config_word) &= ~(1 << 1))
397#define netxen_clear_gb_drop_gb2(config_word) \ 397#define netxen_clear_gb_drop_gb2(config_word) \
398 clear_bit(2, (unsigned long*)&config_word) 398 ((config_word) &= ~(1 << 2))
399#define netxen_clear_gb_drop_gb3(config_word) \ 399#define netxen_clear_gb_drop_gb3(config_word) \
400 clear_bit(3, (unsigned long*)&config_word) 400 ((config_word) &= ~(1 << 3))
401 401
402/* 402/*
403 * NIU XG MAC Config Register 403 * NIU XG MAC Config Register
@@ -413,7 +413,7 @@ typedef enum {
413 */ 413 */
414 414
415#define netxen_xg_soft_reset(config_word) \ 415#define netxen_xg_soft_reset(config_word) \
416 set_bit(4, (unsigned long*)&config_word) 416 ((config_word) |= 1 << 4)
417 417
418/* 418/*
419 * MAC Control Register 419 * MAC Control Register
@@ -433,19 +433,19 @@ typedef enum {
433#define netxen_nic_mcr_set_id_pool0(config, val) \ 433#define netxen_nic_mcr_set_id_pool0(config, val) \
434 ((config) |= ((val) &0x03)) 434 ((config) |= ((val) &0x03))
435#define netxen_nic_mcr_set_enable_xtnd0(config) \ 435#define netxen_nic_mcr_set_enable_xtnd0(config) \
436 (set_bit(3, (unsigned long *)&(config))) 436 ((config) |= 1 << 3)
437#define netxen_nic_mcr_set_id_pool1(config, val) \ 437#define netxen_nic_mcr_set_id_pool1(config, val) \
438 ((config) |= (((val) & 0x03) << 4)) 438 ((config) |= (((val) & 0x03) << 4))
439#define netxen_nic_mcr_set_enable_xtnd1(config) \ 439#define netxen_nic_mcr_set_enable_xtnd1(config) \
440 (set_bit(6, (unsigned long *)&(config))) 440 ((config) |= 1 << 6)
441#define netxen_nic_mcr_set_id_pool2(config, val) \ 441#define netxen_nic_mcr_set_id_pool2(config, val) \
442 ((config) |= (((val) & 0x03) << 8)) 442 ((config) |= (((val) & 0x03) << 8))
443#define netxen_nic_mcr_set_enable_xtnd2(config) \ 443#define netxen_nic_mcr_set_enable_xtnd2(config) \
444 (set_bit(10, (unsigned long *)&(config))) 444 ((config) |= 1 << 10)
445#define netxen_nic_mcr_set_id_pool3(config, val) \ 445#define netxen_nic_mcr_set_id_pool3(config, val) \
446 ((config) |= (((val) & 0x03) << 12)) 446 ((config) |= (((val) & 0x03) << 12))
447#define netxen_nic_mcr_set_enable_xtnd3(config) \ 447#define netxen_nic_mcr_set_enable_xtnd3(config) \
448 (set_bit(14, (unsigned long *)&(config))) 448 ((config) |= 1 << 14)
449#define netxen_nic_mcr_set_mode_select(config, val) \ 449#define netxen_nic_mcr_set_mode_select(config, val) \
450 ((config) |= (((val) & 0x03) << 24)) 450 ((config) |= (((val) & 0x03) << 24))
451#define netxen_nic_mcr_set_enable_pool(config, val) \ 451#define netxen_nic_mcr_set_enable_pool(config, val) \
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
index c3e41f368554..973af96337a9 100644
--- a/drivers/net/netxen/netxen_nic_init.c
+++ b/drivers/net/netxen/netxen_nic_init.c
@@ -690,8 +690,7 @@ int netxen_nic_rx_has_work(struct netxen_adapter *adapter)
690 desc_head = recv_ctx->rcv_status_desc_head; 690 desc_head = recv_ctx->rcv_status_desc_head;
691 desc = &desc_head[consumer]; 691 desc = &desc_head[consumer];
692 692
693 if (((le16_to_cpu(netxen_get_sts_owner(desc))) 693 if (netxen_get_sts_owner(desc) & STATUS_OWNER_HOST)
694 & STATUS_OWNER_HOST))
695 return 1; 694 return 1;
696 } 695 }
697 696
@@ -787,11 +786,11 @@ netxen_process_rcv(struct netxen_adapter *adapter, int ctxid,
787 struct netxen_port *port = adapter->port[netxen_get_sts_port(desc)]; 786 struct netxen_port *port = adapter->port[netxen_get_sts_port(desc)];
788 struct pci_dev *pdev = port->pdev; 787 struct pci_dev *pdev = port->pdev;
789 struct net_device *netdev = port->netdev; 788 struct net_device *netdev = port->netdev;
790 int index = le16_to_cpu(netxen_get_sts_refhandle(desc)); 789 int index = netxen_get_sts_refhandle(desc);
791 struct netxen_recv_context *recv_ctx = &(adapter->recv_ctx[ctxid]); 790 struct netxen_recv_context *recv_ctx = &(adapter->recv_ctx[ctxid]);
792 struct netxen_rx_buffer *buffer; 791 struct netxen_rx_buffer *buffer;
793 struct sk_buff *skb; 792 struct sk_buff *skb;
794 u32 length = le16_to_cpu(netxen_get_sts_totallength(desc)); 793 u32 length = netxen_get_sts_totallength(desc);
795 u32 desc_ctx; 794 u32 desc_ctx;
796 struct netxen_rcv_desc_ctx *rcv_desc; 795 struct netxen_rcv_desc_ctx *rcv_desc;
797 int ret; 796 int ret;
@@ -918,16 +917,14 @@ u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctxid, int max)
918 */ 917 */
919 while (count < max) { 918 while (count < max) {
920 desc = &desc_head[consumer]; 919 desc = &desc_head[consumer];
921 if (! 920 if (!(netxen_get_sts_owner(desc) & STATUS_OWNER_HOST)) {
922 (le16_to_cpu(netxen_get_sts_owner(desc)) &
923 STATUS_OWNER_HOST)) {
924 DPRINTK(ERR, "desc %p ownedby %x\n", desc, 921 DPRINTK(ERR, "desc %p ownedby %x\n", desc,
925 netxen_get_sts_owner(desc)); 922 netxen_get_sts_owner(desc));
926 break; 923 break;
927 } 924 }
928 netxen_process_rcv(adapter, ctxid, desc); 925 netxen_process_rcv(adapter, ctxid, desc);
929 netxen_clear_sts_owner(desc); 926 netxen_clear_sts_owner(desc);
930 netxen_set_sts_owner(desc, cpu_to_le16(STATUS_OWNER_PHANTOM)); 927 netxen_set_sts_owner(desc, STATUS_OWNER_PHANTOM);
931 consumer = (consumer + 1) & (adapter->max_rx_desc_count - 1); 928 consumer = (consumer + 1) & (adapter->max_rx_desc_count - 1);
932 count++; 929 count++;
933 } 930 }
@@ -1232,7 +1229,7 @@ void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter, uint32_t ctx,
1232 1229
1233 /* make a rcv descriptor */ 1230 /* make a rcv descriptor */
1234 pdesc->reference_handle = cpu_to_le16(buffer->ref_handle); 1231 pdesc->reference_handle = cpu_to_le16(buffer->ref_handle);
1235 pdesc->buffer_length = cpu_to_le16(rcv_desc->dma_size); 1232 pdesc->buffer_length = cpu_to_le32(rcv_desc->dma_size);
1236 pdesc->addr_buffer = cpu_to_le64(buffer->dma); 1233 pdesc->addr_buffer = cpu_to_le64(buffer->dma);
1237 DPRINTK(INFO, "done writing descripter\n"); 1234 DPRINTK(INFO, "done writing descripter\n");
1238 producer = 1235 producer =
diff --git a/drivers/net/netxen/netxen_nic_isr.c b/drivers/net/netxen/netxen_nic_isr.c
index 06847d4252c3..be366e48007c 100644
--- a/drivers/net/netxen/netxen_nic_isr.c
+++ b/drivers/net/netxen/netxen_nic_isr.c
@@ -79,7 +79,7 @@ void netxen_indicate_link_status(struct netxen_adapter *adapter, u32 portno,
79void netxen_handle_port_int(struct netxen_adapter *adapter, u32 portno, 79void netxen_handle_port_int(struct netxen_adapter *adapter, u32 portno,
80 u32 enable) 80 u32 enable)
81{ 81{
82 __le32 int_src; 82 __u32 int_src;
83 struct netxen_port *port; 83 struct netxen_port *port;
84 84
85 /* This should clear the interrupt source */ 85 /* This should clear the interrupt source */
@@ -110,7 +110,7 @@ void netxen_handle_port_int(struct netxen_adapter *adapter, u32 portno,
110 /* write it down later.. */ 110 /* write it down later.. */
111 if ((netxen_get_phy_int_speed_changed(int_src)) 111 if ((netxen_get_phy_int_speed_changed(int_src))
112 || (netxen_get_phy_int_link_status_changed(int_src))) { 112 || (netxen_get_phy_int_link_status_changed(int_src))) {
113 __le32 status; 113 __u32 status;
114 114
115 DPRINTK(INFO, "SPEED CHANGED OR LINK STATUS CHANGED \n"); 115 DPRINTK(INFO, "SPEED CHANGED OR LINK STATUS CHANGED \n");
116 116
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index 8a5792fea774..69c1b9d23a1a 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -117,7 +117,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
117 void __iomem *mem_ptr1 = NULL; 117 void __iomem *mem_ptr1 = NULL;
118 void __iomem *mem_ptr2 = NULL; 118 void __iomem *mem_ptr2 = NULL;
119 119
120 u8 *db_ptr = NULL; 120 u8 __iomem *db_ptr = NULL;
121 unsigned long mem_base, mem_len, db_base, db_len; 121 unsigned long mem_base, mem_len, db_base, db_len;
122 int pci_using_dac, i, err; 122 int pci_using_dac, i, err;
123 int ring; 123 int ring;
@@ -191,7 +191,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
191 db_len); 191 db_len);
192 192
193 db_ptr = ioremap(db_base, NETXEN_DB_MAPSIZE_BYTES); 193 db_ptr = ioremap(db_base, NETXEN_DB_MAPSIZE_BYTES);
194 if (db_ptr == 0UL) { 194 if (!db_ptr) {
195 printk(KERN_ERR "%s: Failed to allocate doorbell map.", 195 printk(KERN_ERR "%s: Failed to allocate doorbell map.",
196 netxen_nic_driver_name); 196 netxen_nic_driver_name);
197 err = -EIO; 197 err = -EIO;
@@ -818,7 +818,7 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
818 /* Take skb->data itself */ 818 /* Take skb->data itself */
819 pbuf = &adapter->cmd_buf_arr[producer]; 819 pbuf = &adapter->cmd_buf_arr[producer];
820 if ((netdev->features & NETIF_F_TSO) && skb_shinfo(skb)->gso_size > 0) { 820 if ((netdev->features & NETIF_F_TSO) && skb_shinfo(skb)->gso_size > 0) {
821 pbuf->mss = cpu_to_le16(skb_shinfo(skb)->gso_size); 821 pbuf->mss = skb_shinfo(skb)->gso_size;
822 hwdesc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size); 822 hwdesc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size);
823 } else { 823 } else {
824 pbuf->mss = 0; 824 pbuf->mss = 0;
@@ -882,7 +882,7 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
882 hwdesc->addr_buffer3 = cpu_to_le64(temp_dma); 882 hwdesc->addr_buffer3 = cpu_to_le64(temp_dma);
883 break; 883 break;
884 case 3: 884 case 3:
885 hwdesc->buffer4_length = temp_len; 885 hwdesc->buffer4_length = cpu_to_le16(temp_len);
886 hwdesc->addr_buffer4 = cpu_to_le64(temp_dma); 886 hwdesc->addr_buffer4 = cpu_to_le64(temp_dma);
887 break; 887 break;
888 } 888 }
@@ -1144,7 +1144,7 @@ static int __init netxen_init_module(void)
1144 if ((netxen_workq = create_singlethread_workqueue("netxen")) == 0) 1144 if ((netxen_workq = create_singlethread_workqueue("netxen")) == 0)
1145 return -ENOMEM; 1145 return -ENOMEM;
1146 1146
1147 return pci_module_init(&netxen_driver); 1147 return pci_register_driver(&netxen_driver);
1148} 1148}
1149 1149
1150module_init(netxen_init_module); 1150module_init(netxen_init_module);
diff --git a/drivers/net/netxen/netxen_nic_niu.c b/drivers/net/netxen/netxen_nic_niu.c
index 4987dc765d99..40d7003a371c 100644
--- a/drivers/net/netxen/netxen_nic_niu.c
+++ b/drivers/net/netxen/netxen_nic_niu.c
@@ -89,15 +89,15 @@ static inline int phy_unlock(struct netxen_adapter *adapter)
89 * 89 *
90 */ 90 */
91int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, 91int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy,
92 long reg, __le32 * readval) 92 long reg, __u32 * readval)
93{ 93{
94 long timeout = 0; 94 long timeout = 0;
95 long result = 0; 95 long result = 0;
96 long restore = 0; 96 long restore = 0;
97 __le32 address; 97 __u32 address;
98 __le32 command; 98 __u32 command;
99 __le32 status; 99 __u32 status;
100 __le32 mac_cfg0; 100 __u32 mac_cfg0;
101 101
102 if (phy_lock(adapter) != 0) { 102 if (phy_lock(adapter) != 0) {
103 return -1; 103 return -1;
@@ -112,7 +112,7 @@ int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy,
112 &mac_cfg0, 4)) 112 &mac_cfg0, 4))
113 return -EIO; 113 return -EIO;
114 if (netxen_gb_get_soft_reset(mac_cfg0)) { 114 if (netxen_gb_get_soft_reset(mac_cfg0)) {
115 __le32 temp; 115 __u32 temp;
116 temp = 0; 116 temp = 0;
117 netxen_gb_tx_reset_pb(temp); 117 netxen_gb_tx_reset_pb(temp);
118 netxen_gb_rx_reset_pb(temp); 118 netxen_gb_rx_reset_pb(temp);
@@ -184,15 +184,15 @@ int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy,
184 * 184 *
185 */ 185 */
186int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, 186int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter,
187 long phy, long reg, __le32 val) 187 long phy, long reg, __u32 val)
188{ 188{
189 long timeout = 0; 189 long timeout = 0;
190 long result = 0; 190 long result = 0;
191 long restore = 0; 191 long restore = 0;
192 __le32 address; 192 __u32 address;
193 __le32 command; 193 __u32 command;
194 __le32 status; 194 __u32 status;
195 __le32 mac_cfg0; 195 __u32 mac_cfg0;
196 196
197 /* 197 /*
198 * MII mgmt all goes through port 0 MAC interface, so it 198 * MII mgmt all goes through port 0 MAC interface, so it
@@ -203,7 +203,7 @@ int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter,
203 &mac_cfg0, 4)) 203 &mac_cfg0, 4))
204 return -EIO; 204 return -EIO;
205 if (netxen_gb_get_soft_reset(mac_cfg0)) { 205 if (netxen_gb_get_soft_reset(mac_cfg0)) {
206 __le32 temp; 206 __u32 temp;
207 temp = 0; 207 temp = 0;
208 netxen_gb_tx_reset_pb(temp); 208 netxen_gb_tx_reset_pb(temp);
209 netxen_gb_rx_reset_pb(temp); 209 netxen_gb_rx_reset_pb(temp);
@@ -269,7 +269,7 @@ int netxen_niu_gbe_enable_phy_interrupts(struct netxen_adapter *adapter,
269 int port) 269 int port)
270{ 270{
271 int result = 0; 271 int result = 0;
272 __le32 enable = 0; 272 __u32 enable = 0;
273 netxen_set_phy_int_link_status_changed(enable); 273 netxen_set_phy_int_link_status_changed(enable);
274 netxen_set_phy_int_autoneg_completed(enable); 274 netxen_set_phy_int_autoneg_completed(enable);
275 netxen_set_phy_int_speed_changed(enable); 275 netxen_set_phy_int_speed_changed(enable);
@@ -402,7 +402,7 @@ void netxen_niu_gbe_set_gmii_mode(struct netxen_adapter *adapter,
402int netxen_niu_gbe_init_port(struct netxen_adapter *adapter, int port) 402int netxen_niu_gbe_init_port(struct netxen_adapter *adapter, int port)
403{ 403{
404 int result = 0; 404 int result = 0;
405 __le32 status; 405 __u32 status;
406 if (adapter->disable_phy_interrupts) 406 if (adapter->disable_phy_interrupts)
407 adapter->disable_phy_interrupts(adapter, port); 407 adapter->disable_phy_interrupts(adapter, port);
408 mdelay(2); 408 mdelay(2);
@@ -410,7 +410,7 @@ int netxen_niu_gbe_init_port(struct netxen_adapter *adapter, int port)
410 if (0 == 410 if (0 ==
411 netxen_niu_gbe_phy_read(adapter, port, 411 netxen_niu_gbe_phy_read(adapter, port,
412 NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS, 412 NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
413 (__le32 *) & status)) { 413 &status)) {
414 if (netxen_get_phy_link(status)) { 414 if (netxen_get_phy_link(status)) {
415 if (netxen_get_phy_speed(status) == 2) { 415 if (netxen_get_phy_speed(status) == 2) {
416 netxen_niu_gbe_set_gmii_mode(adapter, port, 1); 416 netxen_niu_gbe_set_gmii_mode(adapter, port, 1);
@@ -489,7 +489,7 @@ int netxen_niu_gbe_handle_phy_interrupt(struct netxen_adapter *adapter,
489 int port, long enable) 489 int port, long enable)
490{ 490{
491 int result = 0; 491 int result = 0;
492 __le32 int_src; 492 __u32 int_src;
493 493
494 printk(KERN_INFO PFX "NETXEN: Handling PHY interrupt on port %d" 494 printk(KERN_INFO PFX "NETXEN: Handling PHY interrupt on port %d"
495 " (device enable = %d)\n", (int)port, (int)enable); 495 " (device enable = %d)\n", (int)port, (int)enable);
@@ -530,7 +530,7 @@ int netxen_niu_gbe_handle_phy_interrupt(struct netxen_adapter *adapter,
530 printk(KERN_INFO PFX "autoneg_error "); 530 printk(KERN_INFO PFX "autoneg_error ");
531 if ((netxen_get_phy_int_speed_changed(int_src)) 531 if ((netxen_get_phy_int_speed_changed(int_src))
532 || (netxen_get_phy_int_link_status_changed(int_src))) { 532 || (netxen_get_phy_int_link_status_changed(int_src))) {
533 __le32 status; 533 __u32 status;
534 534
535 printk(KERN_INFO PFX 535 printk(KERN_INFO PFX
536 "speed_changed or link status changed"); 536 "speed_changed or link status changed");
@@ -583,9 +583,9 @@ int netxen_niu_gbe_handle_phy_interrupt(struct netxen_adapter *adapter,
583int netxen_niu_macaddr_get(struct netxen_adapter *adapter, 583int netxen_niu_macaddr_get(struct netxen_adapter *adapter,
584 int phy, netxen_ethernet_macaddr_t * addr) 584 int phy, netxen_ethernet_macaddr_t * addr)
585{ 585{
586 u64 result = 0; 586 u32 stationhigh;
587 __le32 stationhigh; 587 u32 stationlow;
588 __le32 stationlow; 588 u8 val[8];
589 589
590 if (addr == NULL) 590 if (addr == NULL)
591 return -EINVAL; 591 return -EINVAL;
@@ -598,10 +598,10 @@ int netxen_niu_macaddr_get(struct netxen_adapter *adapter,
598 if (netxen_nic_hw_read_wx(adapter, NETXEN_NIU_GB_STATION_ADDR_1(phy), 598 if (netxen_nic_hw_read_wx(adapter, NETXEN_NIU_GB_STATION_ADDR_1(phy),
599 &stationlow, 4)) 599 &stationlow, 4))
600 return -EIO; 600 return -EIO;
601 ((__le32 *)val)[1] = cpu_to_le32(stationhigh);
602 ((__le32 *)val)[0] = cpu_to_le32(stationlow);
601 603
602 result = (u64) netxen_gb_get_stationaddress_low(stationlow); 604 memcpy(addr, val + 2, 6);
603 result |= (u64) stationhigh << 16;
604 memcpy(*addr, &result, sizeof(netxen_ethernet_macaddr_t));
605 605
606 return 0; 606 return 0;
607} 607}
@@ -613,24 +613,25 @@ int netxen_niu_macaddr_get(struct netxen_adapter *adapter,
613int netxen_niu_macaddr_set(struct netxen_port *port, 613int netxen_niu_macaddr_set(struct netxen_port *port,
614 netxen_ethernet_macaddr_t addr) 614 netxen_ethernet_macaddr_t addr)
615{ 615{
616 __le32 temp = 0; 616 u8 temp[4];
617 u32 val;
617 struct netxen_adapter *adapter = port->adapter; 618 struct netxen_adapter *adapter = port->adapter;
618 int phy = port->portnum; 619 int phy = port->portnum;
619 unsigned char mac_addr[6]; 620 unsigned char mac_addr[6];
620 int i; 621 int i;
621 622
622 for (i = 0; i < 10; i++) { 623 for (i = 0; i < 10; i++) {
623 memcpy(&temp, addr, 2); 624 temp[0] = temp[1] = 0;
624 temp <<= 16; 625 memcpy(temp + 2, addr, 2);
626 val = le32_to_cpu(*(__le32 *)temp);
625 if (netxen_nic_hw_write_wx 627 if (netxen_nic_hw_write_wx
626 (adapter, NETXEN_NIU_GB_STATION_ADDR_1(phy), &temp, 4)) 628 (adapter, NETXEN_NIU_GB_STATION_ADDR_1(phy), &val, 4))
627 return -EIO; 629 return -EIO;
628 630
629 temp = 0; 631 memcpy(temp, ((u8 *) addr) + 2, sizeof(__le32));
630 632 val = le32_to_cpu(*(__le32 *)temp);
631 memcpy(&temp, ((u8 *) addr) + 2, sizeof(__le32));
632 if (netxen_nic_hw_write_wx 633 if (netxen_nic_hw_write_wx
633 (adapter, NETXEN_NIU_GB_STATION_ADDR_0(phy), &temp, 4)) 634 (adapter, NETXEN_NIU_GB_STATION_ADDR_0(phy), &val, 4))
634 return -2; 635 return -2;
635 636
636 netxen_niu_macaddr_get(adapter, phy, 637 netxen_niu_macaddr_get(adapter, phy,
@@ -659,9 +660,9 @@ int netxen_niu_macaddr_set(struct netxen_port *port,
659int netxen_niu_enable_gbe_port(struct netxen_adapter *adapter, 660int netxen_niu_enable_gbe_port(struct netxen_adapter *adapter,
660 int port, netxen_niu_gbe_ifmode_t mode) 661 int port, netxen_niu_gbe_ifmode_t mode)
661{ 662{
662 __le32 mac_cfg0; 663 __u32 mac_cfg0;
663 __le32 mac_cfg1; 664 __u32 mac_cfg1;
664 __le32 mii_cfg; 665 __u32 mii_cfg;
665 666
666 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) 667 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS))
667 return -EINVAL; 668 return -EINVAL;
@@ -736,7 +737,7 @@ int netxen_niu_enable_gbe_port(struct netxen_adapter *adapter,
736/* Disable a GbE interface */ 737/* Disable a GbE interface */
737int netxen_niu_disable_gbe_port(struct netxen_adapter *adapter, int port) 738int netxen_niu_disable_gbe_port(struct netxen_adapter *adapter, int port)
738{ 739{
739 __le32 mac_cfg0; 740 __u32 mac_cfg0;
740 741
741 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) 742 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS))
742 return -EINVAL; 743 return -EINVAL;
@@ -752,7 +753,7 @@ int netxen_niu_disable_gbe_port(struct netxen_adapter *adapter, int port)
752/* Disable an XG interface */ 753/* Disable an XG interface */
753int netxen_niu_disable_xg_port(struct netxen_adapter *adapter, int port) 754int netxen_niu_disable_xg_port(struct netxen_adapter *adapter, int port)
754{ 755{
755 __le32 mac_cfg; 756 __u32 mac_cfg;
756 757
757 if (port != 0) 758 if (port != 0)
758 return -EINVAL; 759 return -EINVAL;
@@ -769,7 +770,7 @@ int netxen_niu_disable_xg_port(struct netxen_adapter *adapter, int port)
769int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, int port, 770int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, int port,
770 netxen_niu_prom_mode_t mode) 771 netxen_niu_prom_mode_t mode)
771{ 772{
772 __le32 reg; 773 __u32 reg;
773 774
774 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) 775 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS))
775 return -EINVAL; 776 return -EINVAL;
@@ -826,22 +827,21 @@ int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, int port,
826int netxen_niu_xg_macaddr_set(struct netxen_port *port, 827int netxen_niu_xg_macaddr_set(struct netxen_port *port,
827 netxen_ethernet_macaddr_t addr) 828 netxen_ethernet_macaddr_t addr)
828{ 829{
829 __le32 temp = 0; 830 u8 temp[4];
831 u32 val;
830 struct netxen_adapter *adapter = port->adapter; 832 struct netxen_adapter *adapter = port->adapter;
831 833
832 memcpy(&temp, addr, 2); 834 temp[0] = temp[1] = 0;
833 temp = cpu_to_le32(temp); 835 memcpy(temp + 2, addr, 2);
834 temp <<= 16; 836 val = le32_to_cpu(*(__le32 *)temp);
835 if (netxen_nic_hw_write_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_1, 837 if (netxen_nic_hw_write_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_1,
836 &temp, 4)) 838 &val, 4))
837 return -EIO; 839 return -EIO;
838 840
839 temp = 0;
840
841 memcpy(&temp, ((u8 *) addr) + 2, sizeof(__le32)); 841 memcpy(&temp, ((u8 *) addr) + 2, sizeof(__le32));
842 temp = cpu_to_le32(temp); 842 val = le32_to_cpu(*(__le32 *)temp);
843 if (netxen_nic_hw_write_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_HI, 843 if (netxen_nic_hw_write_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_HI,
844 &temp, 4)) 844 &val, 4))
845 return -EIO; 845 return -EIO;
846 846
847 return 0; 847 return 0;
@@ -854,9 +854,9 @@ int netxen_niu_xg_macaddr_set(struct netxen_port *port,
854int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, int phy, 854int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, int phy,
855 netxen_ethernet_macaddr_t * addr) 855 netxen_ethernet_macaddr_t * addr)
856{ 856{
857 __le32 stationhigh; 857 u32 stationhigh;
858 __le32 stationlow; 858 u32 stationlow;
859 u64 result; 859 u8 val[8];
860 860
861 if (addr == NULL) 861 if (addr == NULL)
862 return -EINVAL; 862 return -EINVAL;
@@ -869,10 +869,10 @@ int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, int phy,
869 if (netxen_nic_hw_read_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_1, 869 if (netxen_nic_hw_read_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_1,
870 &stationlow, 4)) 870 &stationlow, 4))
871 return -EIO; 871 return -EIO;
872 ((__le32 *)val)[1] = cpu_to_le32(stationhigh);
873 ((__le32 *)val)[0] = cpu_to_le32(stationlow);
872 874
873 result = ((u64) stationlow) >> 16; 875 memcpy(addr, val + 2, 6);
874 result |= (u64) stationhigh << 16;
875 memcpy(*addr, &result, sizeof(netxen_ethernet_macaddr_t));
876 876
877 return 0; 877 return 0;
878} 878}
@@ -880,7 +880,7 @@ int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, int phy,
880int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter, 880int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter,
881 int port, netxen_niu_prom_mode_t mode) 881 int port, netxen_niu_prom_mode_t mode)
882{ 882{
883 __le32 reg; 883 __u32 reg;
884 884
885 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) 885 if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS))
886 return -EINVAL; 886 return -EINVAL;
diff --git a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c
index 342f4062de0b..461e8274ef69 100644
--- a/drivers/net/pcmcia/3c589_cs.c
+++ b/drivers/net/pcmcia/3c589_cs.c
@@ -606,11 +606,14 @@ static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev)
606{ 606{
607 kio_addr_t ioaddr = dev->base_addr; 607 kio_addr_t ioaddr = dev->base_addr;
608 struct el3_private *priv = netdev_priv(dev); 608 struct el3_private *priv = netdev_priv(dev);
609 unsigned long flags;
609 610
610 DEBUG(3, "%s: el3_start_xmit(length = %ld) called, " 611 DEBUG(3, "%s: el3_start_xmit(length = %ld) called, "
611 "status %4.4x.\n", dev->name, (long)skb->len, 612 "status %4.4x.\n", dev->name, (long)skb->len,
612 inw(ioaddr + EL3_STATUS)); 613 inw(ioaddr + EL3_STATUS));
613 614
615 spin_lock_irqsave(&priv->lock, flags);
616
614 priv->stats.tx_bytes += skb->len; 617 priv->stats.tx_bytes += skb->len;
615 618
616 /* Put out the doubleword header... */ 619 /* Put out the doubleword header... */
@@ -628,6 +631,7 @@ static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev)
628 631
629 dev_kfree_skb(skb); 632 dev_kfree_skb(skb);
630 pop_tx_status(dev); 633 pop_tx_status(dev);
634 spin_unlock_irqrestore(&priv->lock, flags);
631 635
632 return 0; 636 return 0;
633} 637}
@@ -729,14 +733,13 @@ static void media_check(unsigned long arg)
729 733
730 if (!netif_device_present(dev)) goto reschedule; 734 if (!netif_device_present(dev)) goto reschedule;
731 735
732 EL3WINDOW(1);
733 /* Check for pending interrupt with expired latency timer: with 736 /* Check for pending interrupt with expired latency timer: with
734 this, we can limp along even if the interrupt is blocked */ 737 this, we can limp along even if the interrupt is blocked */
735 if ((inw(ioaddr + EL3_STATUS) & IntLatch) && 738 if ((inw(ioaddr + EL3_STATUS) & IntLatch) &&
736 (inb(ioaddr + EL3_TIMER) == 0xff)) { 739 (inb(ioaddr + EL3_TIMER) == 0xff)) {
737 if (!lp->fast_poll) 740 if (!lp->fast_poll)
738 printk(KERN_WARNING "%s: interrupt(s) dropped!\n", dev->name); 741 printk(KERN_WARNING "%s: interrupt(s) dropped!\n", dev->name);
739 el3_interrupt(dev->irq, lp); 742 el3_interrupt(dev->irq, dev);
740 lp->fast_poll = HZ; 743 lp->fast_poll = HZ;
741 } 744 }
742 if (lp->fast_poll) { 745 if (lp->fast_poll) {
diff --git a/drivers/net/phy/fixed.c b/drivers/net/phy/fixed.c
index 096d4a100bf2..86135397f430 100644
--- a/drivers/net/phy/fixed.c
+++ b/drivers/net/phy/fixed.c
@@ -349,7 +349,7 @@ static int __init fixed_init(void)
349 fixed_mdio_register_device(0, 100, 1); 349 fixed_mdio_register_device(0, 100, 1);
350#endif 350#endif
351 351
352#ifdef CONFIX_FIXED_MII_10_FDX 352#ifdef CONFIG_FIXED_MII_10_FDX
353 fixed_mdio_register_device(0, 10, 1); 353 fixed_mdio_register_device(0, 10, 1);
354#endif 354#endif
355 return 0; 355 return 0;
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index e175f3910b18..9765fa661467 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -286,6 +286,7 @@ int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd)
286 286
287 return 0; 287 return 0;
288} 288}
289EXPORT_SYMBOL(phy_ethtool_sset);
289 290
290int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd) 291int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd)
291{ 292{
@@ -302,7 +303,7 @@ int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd)
302 303
303 return 0; 304 return 0;
304} 305}
305 306EXPORT_SYMBOL(phy_ethtool_gset);
306 307
307/* Note that this function is currently incompatible with the 308/* Note that this function is currently incompatible with the
308 * PHYCONTROL layer. It changes registers without regard to 309 * PHYCONTROL layer. It changes registers without regard to
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index 250cdbeefdfd..1dd66b8ea0fa 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -556,10 +556,9 @@ static int init_shared_mem(struct s2io_nic *nic)
556 } 556 }
557 } 557 }
558 558
559 nic->ufo_in_band_v = kmalloc((sizeof(u64) * size), GFP_KERNEL); 559 nic->ufo_in_band_v = kcalloc(size, sizeof(u64), GFP_KERNEL);
560 if (!nic->ufo_in_band_v) 560 if (!nic->ufo_in_band_v)
561 return -ENOMEM; 561 return -ENOMEM;
562 memset(nic->ufo_in_band_v, 0, size);
563 562
564 /* Allocation and initialization of RXDs in Rings */ 563 /* Allocation and initialization of RXDs in Rings */
565 size = 0; 564 size = 0;
diff --git a/drivers/net/sis190.c b/drivers/net/sis190.c
index b70ed79d4121..45d91b159100 100644
--- a/drivers/net/sis190.c
+++ b/drivers/net/sis190.c
@@ -1562,7 +1562,7 @@ static int __devinit sis190_get_mac_addr_from_eeprom(struct pci_dev *pdev,
1562 for (i = 0; i < MAC_ADDR_LEN / 2; i++) { 1562 for (i = 0; i < MAC_ADDR_LEN / 2; i++) {
1563 __le16 w = sis190_read_eeprom(ioaddr, EEPROMMACAddr + i); 1563 __le16 w = sis190_read_eeprom(ioaddr, EEPROMMACAddr + i);
1564 1564
1565 ((u16 *)dev->dev_addr)[0] = le16_to_cpu(w); 1565 ((u16 *)dev->dev_addr)[i] = le16_to_cpu(w);
1566 } 1566 }
1567 1567
1568 sis190_set_rgmii(tp, sis190_read_eeprom(ioaddr, EEPROMInfo)); 1568 sis190_set_rgmii(tp, sis190_read_eeprom(ioaddr, EEPROMInfo));
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index deedfd5f8226..45283f3f95e4 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -60,7 +60,7 @@
60#define LINK_HZ (HZ/2) 60#define LINK_HZ (HZ/2)
61 61
62MODULE_DESCRIPTION("SysKonnect Gigabit Ethernet driver"); 62MODULE_DESCRIPTION("SysKonnect Gigabit Ethernet driver");
63MODULE_AUTHOR("Stephen Hemminger <shemminger@osdl.org>"); 63MODULE_AUTHOR("Stephen Hemminger <shemminger@linux-foundation.org>");
64MODULE_LICENSE("GPL"); 64MODULE_LICENSE("GPL");
65MODULE_VERSION(DRV_VERSION); 65MODULE_VERSION(DRV_VERSION);
66 66
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index a6601e8d423c..822dd0b13133 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -3639,29 +3639,6 @@ static int sky2_resume(struct pci_dev *pdev)
3639out: 3639out:
3640 return err; 3640 return err;
3641} 3641}
3642
3643/* BIOS resume runs after device (it's a bug in PM)
3644 * as a temporary workaround on suspend/resume leave MSI disabled
3645 */
3646static int sky2_suspend_late(struct pci_dev *pdev, pm_message_t state)
3647{
3648 struct sky2_hw *hw = pci_get_drvdata(pdev);
3649
3650 free_irq(pdev->irq, hw);
3651 if (hw->msi) {
3652 pci_disable_msi(pdev);
3653 hw->msi = 0;
3654 }
3655 return 0;
3656}
3657
3658static int sky2_resume_early(struct pci_dev *pdev)
3659{
3660 struct sky2_hw *hw = pci_get_drvdata(pdev);
3661 struct net_device *dev = hw->dev[0];
3662
3663 return request_irq(pdev->irq, sky2_intr, IRQF_SHARED, dev->name, hw);
3664}
3665#endif 3642#endif
3666 3643
3667static struct pci_driver sky2_driver = { 3644static struct pci_driver sky2_driver = {
@@ -3672,8 +3649,6 @@ static struct pci_driver sky2_driver = {
3672#ifdef CONFIG_PM 3649#ifdef CONFIG_PM
3673 .suspend = sky2_suspend, 3650 .suspend = sky2_suspend,
3674 .resume = sky2_resume, 3651 .resume = sky2_resume,
3675 .suspend_late = sky2_suspend_late,
3676 .resume_early = sky2_resume_early,
3677#endif 3652#endif
3678}; 3653};
3679 3654
@@ -3691,6 +3666,6 @@ module_init(sky2_init_module);
3691module_exit(sky2_cleanup_module); 3666module_exit(sky2_cleanup_module);
3692 3667
3693MODULE_DESCRIPTION("Marvell Yukon 2 Gigabit Ethernet driver"); 3668MODULE_DESCRIPTION("Marvell Yukon 2 Gigabit Ethernet driver");
3694MODULE_AUTHOR("Stephen Hemminger <shemminger@osdl.org>"); 3669MODULE_AUTHOR("Stephen Hemminger <shemminger@linux-foundation.org>");
3695MODULE_LICENSE("GPL"); 3670MODULE_LICENSE("GPL");
3696MODULE_VERSION(DRV_VERSION); 3671MODULE_VERSION(DRV_VERSION);
diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
index 880d9fdd7c67..43af61438449 100644
--- a/drivers/net/smc911x.c
+++ b/drivers/net/smc911x.c
@@ -968,11 +968,11 @@ static void smc911x_phy_configure(struct work_struct *work)
968 * We should not be called if phy_type is zero. 968 * We should not be called if phy_type is zero.
969 */ 969 */
970 if (lp->phy_type == 0) 970 if (lp->phy_type == 0)
971 goto smc911x_phy_configure_exit; 971 goto smc911x_phy_configure_exit_nolock;
972 972
973 if (smc911x_phy_reset(dev, phyaddr)) { 973 if (smc911x_phy_reset(dev, phyaddr)) {
974 printk("%s: PHY reset timed out\n", dev->name); 974 printk("%s: PHY reset timed out\n", dev->name);
975 goto smc911x_phy_configure_exit; 975 goto smc911x_phy_configure_exit_nolock;
976 } 976 }
977 spin_lock_irqsave(&lp->lock, flags); 977 spin_lock_irqsave(&lp->lock, flags);
978 978
@@ -1041,6 +1041,7 @@ static void smc911x_phy_configure(struct work_struct *work)
1041 1041
1042smc911x_phy_configure_exit: 1042smc911x_phy_configure_exit:
1043 spin_unlock_irqrestore(&lp->lock, flags); 1043 spin_unlock_irqrestore(&lp->lock, flags);
1044smc911x_phy_configure_exit_nolock:
1044 lp->work_pending = 0; 1045 lp->work_pending = 0;
1045} 1046}
1046 1047
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c
index ebb6aa39f9c7..8ea2fc1b96cb 100644
--- a/drivers/net/spider_net.c
+++ b/drivers/net/spider_net.c
@@ -1925,6 +1925,8 @@ spider_net_stop(struct net_device *netdev)
1925 /* release chains */ 1925 /* release chains */
1926 spider_net_release_tx_chain(card, 1); 1926 spider_net_release_tx_chain(card, 1);
1927 1927
1928 spider_net_free_rx_chain_contents(card);
1929
1928 spider_net_free_chain(card, &card->tx_chain); 1930 spider_net_free_chain(card, &card->tx_chain);
1929 spider_net_free_chain(card, &card->rx_chain); 1931 spider_net_free_chain(card, &card->rx_chain);
1930 1932
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c
index 8243150f5b05..7e4b23c7c1ba 100644
--- a/drivers/net/ucc_geth.c
+++ b/drivers/net/ucc_geth.c
@@ -29,6 +29,7 @@
29#include <linux/fsl_devices.h> 29#include <linux/fsl_devices.h>
30#include <linux/ethtool.h> 30#include <linux/ethtool.h>
31#include <linux/mii.h> 31#include <linux/mii.h>
32#include <linux/workqueue.h>
32 33
33#include <asm/of_platform.h> 34#include <asm/of_platform.h>
34#include <asm/uaccess.h> 35#include <asm/uaccess.h>
@@ -472,7 +473,7 @@ static void put_enet_addr_container(struct enet_addr_container *enet_addr_cont)
472 kfree(enet_addr_cont); 473 kfree(enet_addr_cont);
473} 474}
474 475
475static int set_mac_addr(__be16 __iomem *reg, u8 *mac) 476static void set_mac_addr(__be16 __iomem *reg, u8 *mac)
476{ 477{
477 out_be16(&reg[0], ((u16)mac[5] << 8) | mac[4]); 478 out_be16(&reg[0], ((u16)mac[5] << 8) | mac[4]);
478 out_be16(&reg[1], ((u16)mac[3] << 8) | mac[2]); 479 out_be16(&reg[1], ((u16)mac[3] << 8) | mac[2]);
@@ -3920,10 +3921,11 @@ static irqreturn_t phy_interrupt(int irq, void *dev_id)
3920} 3921}
3921 3922
3922/* Scheduled by the phy_interrupt/timer to handle PHY changes */ 3923/* Scheduled by the phy_interrupt/timer to handle PHY changes */
3923static void ugeth_phy_change(void *data) 3924static void ugeth_phy_change(struct work_struct *work)
3924{ 3925{
3925 struct net_device *dev = (struct net_device *)data; 3926 struct ucc_geth_private *ugeth =
3926 struct ucc_geth_private *ugeth = netdev_priv(dev); 3927 container_of(work, struct ucc_geth_private, tq);
3928 struct net_device *dev = ugeth->dev;
3927 struct ucc_geth *ug_regs; 3929 struct ucc_geth *ug_regs;
3928 int result = 0; 3930 int result = 0;
3929 3931
@@ -4080,7 +4082,7 @@ static int ucc_geth_open(struct net_device *dev)
4080#endif /* CONFIG_UGETH_NAPI */ 4082#endif /* CONFIG_UGETH_NAPI */
4081 4083
4082 /* Set up the PHY change work queue */ 4084 /* Set up the PHY change work queue */
4083 INIT_WORK(&ugeth->tq, ugeth_phy_change, dev); 4085 INIT_WORK(&ugeth->tq, ugeth_phy_change);
4084 4086
4085 init_timer(&ugeth->phy_info_timer); 4087 init_timer(&ugeth->phy_info_timer);
4086 ugeth->phy_info_timer.function = &ugeth_phy_startup_timer; 4088 ugeth->phy_info_timer.function = &ugeth_phy_startup_timer;
diff --git a/drivers/net/ucc_geth_phy.c b/drivers/net/ucc_geth_phy.c
index 5360ec05eaa3..3c86592ce03c 100644
--- a/drivers/net/ucc_geth_phy.c
+++ b/drivers/net/ucc_geth_phy.c
@@ -68,8 +68,31 @@ static int gbit_config_aneg(struct ugeth_mii_info *mii_info);
68static int genmii_config_aneg(struct ugeth_mii_info *mii_info); 68static int genmii_config_aneg(struct ugeth_mii_info *mii_info);
69static int genmii_update_link(struct ugeth_mii_info *mii_info); 69static int genmii_update_link(struct ugeth_mii_info *mii_info);
70static int genmii_read_status(struct ugeth_mii_info *mii_info); 70static int genmii_read_status(struct ugeth_mii_info *mii_info);
71u16 phy_read(struct ugeth_mii_info *mii_info, u16 regnum); 71
72void phy_write(struct ugeth_mii_info *mii_info, u16 regnum, u16 val); 72static u16 ucc_geth_phy_read(struct ugeth_mii_info *mii_info, u16 regnum)
73{
74 u16 retval;
75 unsigned long flags;
76
77 ugphy_vdbg("%s: IN", __FUNCTION__);
78
79 spin_lock_irqsave(&mii_info->mdio_lock, flags);
80 retval = mii_info->mdio_read(mii_info->dev, mii_info->mii_id, regnum);
81 spin_unlock_irqrestore(&mii_info->mdio_lock, flags);
82
83 return retval;
84}
85
86static void ucc_geth_phy_write(struct ugeth_mii_info *mii_info, u16 regnum, u16 val)
87{
88 unsigned long flags;
89
90 ugphy_vdbg("%s: IN", __FUNCTION__);
91
92 spin_lock_irqsave(&mii_info->mdio_lock, flags);
93 mii_info->mdio_write(mii_info->dev, mii_info->mii_id, regnum, val);
94 spin_unlock_irqrestore(&mii_info->mdio_lock, flags);
95}
73 96
74/* Write value to the PHY for this device to the register at regnum, */ 97/* Write value to the PHY for this device to the register at regnum, */
75/* waiting until the write is done before it returns. All PHY */ 98/* waiting until the write is done before it returns. All PHY */
@@ -184,7 +207,7 @@ static void config_genmii_advert(struct ugeth_mii_info *mii_info)
184 advertise = mii_info->advertising; 207 advertise = mii_info->advertising;
185 208
186 /* Setup standard advertisement */ 209 /* Setup standard advertisement */
187 adv = phy_read(mii_info, MII_ADVERTISE); 210 adv = ucc_geth_phy_read(mii_info, MII_ADVERTISE);
188 adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4); 211 adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4);
189 if (advertise & ADVERTISED_10baseT_Half) 212 if (advertise & ADVERTISED_10baseT_Half)
190 adv |= ADVERTISE_10HALF; 213 adv |= ADVERTISE_10HALF;
@@ -194,7 +217,7 @@ static void config_genmii_advert(struct ugeth_mii_info *mii_info)
194 adv |= ADVERTISE_100HALF; 217 adv |= ADVERTISE_100HALF;
195 if (advertise & ADVERTISED_100baseT_Full) 218 if (advertise & ADVERTISED_100baseT_Full)
196 adv |= ADVERTISE_100FULL; 219 adv |= ADVERTISE_100FULL;
197 phy_write(mii_info, MII_ADVERTISE, adv); 220 ucc_geth_phy_write(mii_info, MII_ADVERTISE, adv);
198} 221}
199 222
200static void genmii_setup_forced(struct ugeth_mii_info *mii_info) 223static void genmii_setup_forced(struct ugeth_mii_info *mii_info)
@@ -204,7 +227,7 @@ static void genmii_setup_forced(struct ugeth_mii_info *mii_info)
204 227
205 ugphy_vdbg("%s: IN", __FUNCTION__); 228 ugphy_vdbg("%s: IN", __FUNCTION__);
206 229
207 ctrl = phy_read(mii_info, MII_BMCR); 230 ctrl = ucc_geth_phy_read(mii_info, MII_BMCR);
208 231
209 ctrl &= 232 ctrl &=
210 ~(BMCR_FULLDPLX | BMCR_SPEED100 | BMCR_SPEED1000 | BMCR_ANENABLE); 233 ~(BMCR_FULLDPLX | BMCR_SPEED100 | BMCR_SPEED1000 | BMCR_ANENABLE);
@@ -234,7 +257,7 @@ static void genmii_setup_forced(struct ugeth_mii_info *mii_info)
234 break; 257 break;
235 } 258 }
236 259
237 phy_write(mii_info, MII_BMCR, ctrl); 260 ucc_geth_phy_write(mii_info, MII_BMCR, ctrl);
238} 261}
239 262
240/* Enable and Restart Autonegotiation */ 263/* Enable and Restart Autonegotiation */
@@ -244,9 +267,9 @@ static void genmii_restart_aneg(struct ugeth_mii_info *mii_info)
244 267
245 ugphy_vdbg("%s: IN", __FUNCTION__); 268 ugphy_vdbg("%s: IN", __FUNCTION__);
246 269
247 ctl = phy_read(mii_info, MII_BMCR); 270 ctl = ucc_geth_phy_read(mii_info, MII_BMCR);
248 ctl |= (BMCR_ANENABLE | BMCR_ANRESTART); 271 ctl |= (BMCR_ANENABLE | BMCR_ANRESTART);
249 phy_write(mii_info, MII_BMCR, ctl); 272 ucc_geth_phy_write(mii_info, MII_BMCR, ctl);
250} 273}
251 274
252static int gbit_config_aneg(struct ugeth_mii_info *mii_info) 275static int gbit_config_aneg(struct ugeth_mii_info *mii_info)
@@ -261,14 +284,14 @@ static int gbit_config_aneg(struct ugeth_mii_info *mii_info)
261 config_genmii_advert(mii_info); 284 config_genmii_advert(mii_info);
262 advertise = mii_info->advertising; 285 advertise = mii_info->advertising;
263 286
264 adv = phy_read(mii_info, MII_1000BASETCONTROL); 287 adv = ucc_geth_phy_read(mii_info, MII_1000BASETCONTROL);
265 adv &= ~(MII_1000BASETCONTROL_FULLDUPLEXCAP | 288 adv &= ~(MII_1000BASETCONTROL_FULLDUPLEXCAP |
266 MII_1000BASETCONTROL_HALFDUPLEXCAP); 289 MII_1000BASETCONTROL_HALFDUPLEXCAP);
267 if (advertise & SUPPORTED_1000baseT_Half) 290 if (advertise & SUPPORTED_1000baseT_Half)
268 adv |= MII_1000BASETCONTROL_HALFDUPLEXCAP; 291 adv |= MII_1000BASETCONTROL_HALFDUPLEXCAP;
269 if (advertise & SUPPORTED_1000baseT_Full) 292 if (advertise & SUPPORTED_1000baseT_Full)
270 adv |= MII_1000BASETCONTROL_FULLDUPLEXCAP; 293 adv |= MII_1000BASETCONTROL_FULLDUPLEXCAP;
271 phy_write(mii_info, MII_1000BASETCONTROL, adv); 294 ucc_geth_phy_write(mii_info, MII_1000BASETCONTROL, adv);
272 295
273 /* Start/Restart aneg */ 296 /* Start/Restart aneg */
274 genmii_restart_aneg(mii_info); 297 genmii_restart_aneg(mii_info);
@@ -298,10 +321,10 @@ static int genmii_update_link(struct ugeth_mii_info *mii_info)
298 ugphy_vdbg("%s: IN", __FUNCTION__); 321 ugphy_vdbg("%s: IN", __FUNCTION__);
299 322
300 /* Do a fake read */ 323 /* Do a fake read */
301 phy_read(mii_info, MII_BMSR); 324 ucc_geth_phy_read(mii_info, MII_BMSR);
302 325
303 /* Read link and autonegotiation status */ 326 /* Read link and autonegotiation status */
304 status = phy_read(mii_info, MII_BMSR); 327 status = ucc_geth_phy_read(mii_info, MII_BMSR);
305 if ((status & BMSR_LSTATUS) == 0) 328 if ((status & BMSR_LSTATUS) == 0)
306 mii_info->link = 0; 329 mii_info->link = 0;
307 else 330 else
@@ -329,7 +352,7 @@ static int genmii_read_status(struct ugeth_mii_info *mii_info)
329 return err; 352 return err;
330 353
331 if (mii_info->autoneg) { 354 if (mii_info->autoneg) {
332 status = phy_read(mii_info, MII_LPA); 355 status = ucc_geth_phy_read(mii_info, MII_LPA);
333 356
334 if (status & (LPA_10FULL | LPA_100FULL)) 357 if (status & (LPA_10FULL | LPA_100FULL))
335 mii_info->duplex = DUPLEX_FULL; 358 mii_info->duplex = DUPLEX_FULL;
@@ -352,9 +375,9 @@ static int marvell_init(struct ugeth_mii_info *mii_info)
352{ 375{
353 ugphy_vdbg("%s: IN", __FUNCTION__); 376 ugphy_vdbg("%s: IN", __FUNCTION__);
354 377
355 phy_write(mii_info, 0x14, 0x0cd2); 378 ucc_geth_phy_write(mii_info, 0x14, 0x0cd2);
356 phy_write(mii_info, MII_BMCR, 379 ucc_geth_phy_write(mii_info, MII_BMCR,
357 phy_read(mii_info, MII_BMCR) | BMCR_RESET); 380 ucc_geth_phy_read(mii_info, MII_BMCR) | BMCR_RESET);
358 msleep(4000); 381 msleep(4000);
359 382
360 return 0; 383 return 0;
@@ -367,13 +390,13 @@ static int marvell_config_aneg(struct ugeth_mii_info *mii_info)
367 /* The Marvell PHY has an errata which requires 390 /* The Marvell PHY has an errata which requires
368 * that certain registers get written in order 391 * that certain registers get written in order
369 * to restart autonegotiation */ 392 * to restart autonegotiation */
370 phy_write(mii_info, MII_BMCR, BMCR_RESET); 393 ucc_geth_phy_write(mii_info, MII_BMCR, BMCR_RESET);
371 394
372 phy_write(mii_info, 0x1d, 0x1f); 395 ucc_geth_phy_write(mii_info, 0x1d, 0x1f);
373 phy_write(mii_info, 0x1e, 0x200c); 396 ucc_geth_phy_write(mii_info, 0x1e, 0x200c);
374 phy_write(mii_info, 0x1d, 0x5); 397 ucc_geth_phy_write(mii_info, 0x1d, 0x5);
375 phy_write(mii_info, 0x1e, 0); 398 ucc_geth_phy_write(mii_info, 0x1e, 0);
376 phy_write(mii_info, 0x1e, 0x100); 399 ucc_geth_phy_write(mii_info, 0x1e, 0x100);
377 400
378 gbit_config_aneg(mii_info); 401 gbit_config_aneg(mii_info);
379 402
@@ -398,7 +421,7 @@ static int marvell_read_status(struct ugeth_mii_info *mii_info)
398 * are as set */ 421 * are as set */
399 if (mii_info->autoneg && mii_info->link) { 422 if (mii_info->autoneg && mii_info->link) {
400 int speed; 423 int speed;
401 status = phy_read(mii_info, MII_M1011_PHY_SPEC_STATUS); 424 status = ucc_geth_phy_read(mii_info, MII_M1011_PHY_SPEC_STATUS);
402 425
403 /* Get the duplexity */ 426 /* Get the duplexity */
404 if (status & MII_M1011_PHY_SPEC_STATUS_FULLDUPLEX) 427 if (status & MII_M1011_PHY_SPEC_STATUS_FULLDUPLEX)
@@ -430,7 +453,7 @@ static int marvell_ack_interrupt(struct ugeth_mii_info *mii_info)
430 ugphy_vdbg("%s: IN", __FUNCTION__); 453 ugphy_vdbg("%s: IN", __FUNCTION__);
431 454
432 /* Clear the interrupts by reading the reg */ 455 /* Clear the interrupts by reading the reg */
433 phy_read(mii_info, MII_M1011_IEVENT); 456 ucc_geth_phy_read(mii_info, MII_M1011_IEVENT);
434 457
435 return 0; 458 return 0;
436} 459}
@@ -440,9 +463,9 @@ static int marvell_config_intr(struct ugeth_mii_info *mii_info)
440 ugphy_vdbg("%s: IN", __FUNCTION__); 463 ugphy_vdbg("%s: IN", __FUNCTION__);
441 464
442 if (mii_info->interrupts == MII_INTERRUPT_ENABLED) 465 if (mii_info->interrupts == MII_INTERRUPT_ENABLED)
443 phy_write(mii_info, MII_M1011_IMASK, MII_M1011_IMASK_INIT); 466 ucc_geth_phy_write(mii_info, MII_M1011_IMASK, MII_M1011_IMASK_INIT);
444 else 467 else
445 phy_write(mii_info, MII_M1011_IMASK, MII_M1011_IMASK_CLEAR); 468 ucc_geth_phy_write(mii_info, MII_M1011_IMASK, MII_M1011_IMASK_CLEAR);
446 469
447 return 0; 470 return 0;
448} 471}
@@ -451,9 +474,9 @@ static int cis820x_init(struct ugeth_mii_info *mii_info)
451{ 474{
452 ugphy_vdbg("%s: IN", __FUNCTION__); 475 ugphy_vdbg("%s: IN", __FUNCTION__);
453 476
454 phy_write(mii_info, MII_CIS8201_AUX_CONSTAT, 477 ucc_geth_phy_write(mii_info, MII_CIS8201_AUX_CONSTAT,
455 MII_CIS8201_AUXCONSTAT_INIT); 478 MII_CIS8201_AUXCONSTAT_INIT);
456 phy_write(mii_info, MII_CIS8201_EXT_CON1, MII_CIS8201_EXTCON1_INIT); 479 ucc_geth_phy_write(mii_info, MII_CIS8201_EXT_CON1, MII_CIS8201_EXTCON1_INIT);
457 480
458 return 0; 481 return 0;
459} 482}
@@ -477,7 +500,7 @@ static int cis820x_read_status(struct ugeth_mii_info *mii_info)
477 if (mii_info->autoneg && mii_info->link) { 500 if (mii_info->autoneg && mii_info->link) {
478 int speed; 501 int speed;
479 502
480 status = phy_read(mii_info, MII_CIS8201_AUX_CONSTAT); 503 status = ucc_geth_phy_read(mii_info, MII_CIS8201_AUX_CONSTAT);
481 if (status & MII_CIS8201_AUXCONSTAT_DUPLEX) 504 if (status & MII_CIS8201_AUXCONSTAT_DUPLEX)
482 mii_info->duplex = DUPLEX_FULL; 505 mii_info->duplex = DUPLEX_FULL;
483 else 506 else
@@ -505,7 +528,7 @@ static int cis820x_ack_interrupt(struct ugeth_mii_info *mii_info)
505{ 528{
506 ugphy_vdbg("%s: IN", __FUNCTION__); 529 ugphy_vdbg("%s: IN", __FUNCTION__);
507 530
508 phy_read(mii_info, MII_CIS8201_ISTAT); 531 ucc_geth_phy_read(mii_info, MII_CIS8201_ISTAT);
509 532
510 return 0; 533 return 0;
511} 534}
@@ -515,9 +538,9 @@ static int cis820x_config_intr(struct ugeth_mii_info *mii_info)
515 ugphy_vdbg("%s: IN", __FUNCTION__); 538 ugphy_vdbg("%s: IN", __FUNCTION__);
516 539
517 if (mii_info->interrupts == MII_INTERRUPT_ENABLED) 540 if (mii_info->interrupts == MII_INTERRUPT_ENABLED)
518 phy_write(mii_info, MII_CIS8201_IMASK, MII_CIS8201_IMASK_MASK); 541 ucc_geth_phy_write(mii_info, MII_CIS8201_IMASK, MII_CIS8201_IMASK_MASK);
519 else 542 else
520 phy_write(mii_info, MII_CIS8201_IMASK, 0); 543 ucc_geth_phy_write(mii_info, MII_CIS8201_IMASK, 0);
521 544
522 return 0; 545 return 0;
523} 546}
@@ -541,7 +564,7 @@ static int dm9161_read_status(struct ugeth_mii_info *mii_info)
541 /* If we aren't autonegotiating, assume speeds 564 /* If we aren't autonegotiating, assume speeds
542 * are as set */ 565 * are as set */
543 if (mii_info->autoneg && mii_info->link) { 566 if (mii_info->autoneg && mii_info->link) {
544 status = phy_read(mii_info, MII_DM9161_SCSR); 567 status = ucc_geth_phy_read(mii_info, MII_DM9161_SCSR);
545 if (status & (MII_DM9161_SCSR_100F | MII_DM9161_SCSR_100H)) 568 if (status & (MII_DM9161_SCSR_100F | MII_DM9161_SCSR_100H))
546 mii_info->speed = SPEED_100; 569 mii_info->speed = SPEED_100;
547 else 570 else
@@ -572,7 +595,7 @@ static void dm9161_timer(unsigned long data)
572{ 595{
573 struct ugeth_mii_info *mii_info = (struct ugeth_mii_info *)data; 596 struct ugeth_mii_info *mii_info = (struct ugeth_mii_info *)data;
574 struct dm9161_private *priv = mii_info->priv; 597 struct dm9161_private *priv = mii_info->priv;
575 u16 status = phy_read(mii_info, MII_BMSR); 598 u16 status = ucc_geth_phy_read(mii_info, MII_BMSR);
576 599
577 ugphy_vdbg("%s: IN", __FUNCTION__); 600 ugphy_vdbg("%s: IN", __FUNCTION__);
578 601
@@ -599,11 +622,11 @@ static int dm9161_init(struct ugeth_mii_info *mii_info)
599 /* Reset is not done yet */ 622 /* Reset is not done yet */
600 priv->resetdone = 0; 623 priv->resetdone = 0;
601 624
602 phy_write(mii_info, MII_BMCR, 625 ucc_geth_phy_write(mii_info, MII_BMCR,
603 phy_read(mii_info, MII_BMCR) | BMCR_RESET); 626 ucc_geth_phy_read(mii_info, MII_BMCR) | BMCR_RESET);
604 627
605 phy_write(mii_info, MII_BMCR, 628 ucc_geth_phy_write(mii_info, MII_BMCR,
606 phy_read(mii_info, MII_BMCR) & ~BMCR_ISOLATE); 629 ucc_geth_phy_read(mii_info, MII_BMCR) & ~BMCR_ISOLATE);
607 630
608 config_genmii_advert(mii_info); 631 config_genmii_advert(mii_info);
609 /* Start/Restart aneg */ 632 /* Start/Restart aneg */
@@ -634,7 +657,7 @@ static int dm9161_ack_interrupt(struct ugeth_mii_info *mii_info)
634 ugphy_vdbg("%s: IN", __FUNCTION__); 657 ugphy_vdbg("%s: IN", __FUNCTION__);
635 658
636 /* Clear the interrupts by reading the reg */ 659 /* Clear the interrupts by reading the reg */
637 phy_read(mii_info, MII_DM9161_INTR); 660 ucc_geth_phy_read(mii_info, MII_DM9161_INTR);
638 661
639 662
640 return 0; 663 return 0;
@@ -645,9 +668,9 @@ static int dm9161_config_intr(struct ugeth_mii_info *mii_info)
645 ugphy_vdbg("%s: IN", __FUNCTION__); 668 ugphy_vdbg("%s: IN", __FUNCTION__);
646 669
647 if (mii_info->interrupts == MII_INTERRUPT_ENABLED) 670 if (mii_info->interrupts == MII_INTERRUPT_ENABLED)
648 phy_write(mii_info, MII_DM9161_INTR, MII_DM9161_INTR_INIT); 671 ucc_geth_phy_write(mii_info, MII_DM9161_INTR, MII_DM9161_INTR_INIT);
649 else 672 else
650 phy_write(mii_info, MII_DM9161_INTR, MII_DM9161_INTR_STOP); 673 ucc_geth_phy_write(mii_info, MII_DM9161_INTR, MII_DM9161_INTR_STOP);
651 674
652 return 0; 675 return 0;
653} 676}
@@ -718,31 +741,6 @@ static struct phy_info *phy_info[] = {
718 NULL 741 NULL
719}; 742};
720 743
721u16 phy_read(struct ugeth_mii_info *mii_info, u16 regnum)
722{
723 u16 retval;
724 unsigned long flags;
725
726 ugphy_vdbg("%s: IN", __FUNCTION__);
727
728 spin_lock_irqsave(&mii_info->mdio_lock, flags);
729 retval = mii_info->mdio_read(mii_info->dev, mii_info->mii_id, regnum);
730 spin_unlock_irqrestore(&mii_info->mdio_lock, flags);
731
732 return retval;
733}
734
735void phy_write(struct ugeth_mii_info *mii_info, u16 regnum, u16 val)
736{
737 unsigned long flags;
738
739 ugphy_vdbg("%s: IN", __FUNCTION__);
740
741 spin_lock_irqsave(&mii_info->mdio_lock, flags);
742 mii_info->mdio_write(mii_info->dev, mii_info->mii_id, regnum, val);
743 spin_unlock_irqrestore(&mii_info->mdio_lock, flags);
744}
745
746/* Use the PHY ID registers to determine what type of PHY is attached 744/* Use the PHY ID registers to determine what type of PHY is attached
747 * to device dev. return a struct phy_info structure describing that PHY 745 * to device dev. return a struct phy_info structure describing that PHY
748 */ 746 */
@@ -757,11 +755,11 @@ struct phy_info *get_phy_info(struct ugeth_mii_info *mii_info)
757 ugphy_vdbg("%s: IN", __FUNCTION__); 755 ugphy_vdbg("%s: IN", __FUNCTION__);
758 756
759 /* Grab the bits from PHYIR1, and put them in the upper half */ 757 /* Grab the bits from PHYIR1, and put them in the upper half */
760 phy_reg = phy_read(mii_info, MII_PHYSID1); 758 phy_reg = ucc_geth_phy_read(mii_info, MII_PHYSID1);
761 phy_ID = (phy_reg & 0xffff) << 16; 759 phy_ID = (phy_reg & 0xffff) << 16;
762 760
763 /* Grab the bits from PHYIR2, and put them in the lower half */ 761 /* Grab the bits from PHYIR2, and put them in the lower half */
764 phy_reg = phy_read(mii_info, MII_PHYSID2); 762 phy_reg = ucc_geth_phy_read(mii_info, MII_PHYSID2);
765 phy_ID |= (phy_reg & 0xffff); 763 phy_ID |= (phy_reg & 0xffff);
766 764
767 /* loop through all the known PHY types, and find one that */ 765 /* loop through all the known PHY types, and find one that */
diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
index 2ec2e5afce67..91b752e3d07e 100644
--- a/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -2701,8 +2701,8 @@ static int bcm43xx_probe_cores(struct bcm43xx_private *bcm)
2701 sb_id_hi = bcm43xx_read32(bcm, BCM43xx_CIR_SB_ID_HI); 2701 sb_id_hi = bcm43xx_read32(bcm, BCM43xx_CIR_SB_ID_HI);
2702 2702
2703 /* extract core_id, core_rev, core_vendor */ 2703 /* extract core_id, core_rev, core_vendor */
2704 core_id = (sb_id_hi & 0xFFF0) >> 4; 2704 core_id = (sb_id_hi & 0x8FF0) >> 4;
2705 core_rev = (sb_id_hi & 0xF); 2705 core_rev = ((sb_id_hi & 0xF) | ((sb_id_hi & 0x7000) >> 8));
2706 core_vendor = (sb_id_hi & 0xFFFF0000) >> 16; 2706 core_vendor = (sb_id_hi & 0xFFFF0000) >> 16;
2707 2707
2708 dprintk(KERN_INFO PFX "Core %d: ID 0x%x, rev 0x%x, vendor 0x%x\n", 2708 dprintk(KERN_INFO PFX "Core %d: ID 0x%x, rev 0x%x, vendor 0x%x\n",
@@ -2873,7 +2873,10 @@ static int bcm43xx_wireless_core_init(struct bcm43xx_private *bcm,
2873 sbimconfiglow = bcm43xx_read32(bcm, BCM43xx_CIR_SBIMCONFIGLOW); 2873 sbimconfiglow = bcm43xx_read32(bcm, BCM43xx_CIR_SBIMCONFIGLOW);
2874 sbimconfiglow &= ~ BCM43xx_SBIMCONFIGLOW_REQUEST_TOUT_MASK; 2874 sbimconfiglow &= ~ BCM43xx_SBIMCONFIGLOW_REQUEST_TOUT_MASK;
2875 sbimconfiglow &= ~ BCM43xx_SBIMCONFIGLOW_SERVICE_TOUT_MASK; 2875 sbimconfiglow &= ~ BCM43xx_SBIMCONFIGLOW_SERVICE_TOUT_MASK;
2876 sbimconfiglow |= 0x32; 2876 if (bcm->bustype == BCM43xx_BUSTYPE_PCI)
2877 sbimconfiglow |= 0x32;
2878 else
2879 sbimconfiglow |= 0x53;
2877 bcm43xx_write32(bcm, BCM43xx_CIR_SBIMCONFIGLOW, sbimconfiglow); 2880 bcm43xx_write32(bcm, BCM43xx_CIR_SBIMCONFIGLOW, sbimconfiglow);
2878 } 2881 }
2879 2882
@@ -3077,7 +3080,7 @@ static int bcm43xx_setup_backplane_pci_connection(struct bcm43xx_private *bcm,
3077 if (err) 3080 if (err)
3078 goto out; 3081 goto out;
3079 3082
3080 if (bcm->current_core->rev < 6 || 3083 if (bcm->current_core->rev < 6 &&
3081 bcm->current_core->id == BCM43xx_COREID_PCI) { 3084 bcm->current_core->id == BCM43xx_COREID_PCI) {
3082 value = bcm43xx_read32(bcm, BCM43xx_CIR_SBINTVEC); 3085 value = bcm43xx_read32(bcm, BCM43xx_CIR_SBINTVEC);
3083 value |= (1 << backplane_flag_nr); 3086 value |= (1 << backplane_flag_nr);
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index b8d2385e29bc..92d5e8db0de7 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -150,8 +150,7 @@ const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,
150} 150}
151 151
152/** 152/**
153 * pci_match_device - Tell if a PCI device structure has a matching 153 * pci_match_device - Tell if a PCI device structure has a matching PCI device id structure
154 * PCI device id structure
155 * @drv: the PCI driver to match against 154 * @drv: the PCI driver to match against
156 * @dev: the PCI device structure to match against 155 * @dev: the PCI device structure to match against
157 * 156 *
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 0a70943f8bb6..c913ea4e545c 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -654,19 +654,42 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_vi
654 * VIA bridges which have VLink 654 * VIA bridges which have VLink
655 */ 655 */
656 656
657static const struct pci_device_id via_vlink_fixup_tbl[] = { 657static int via_vlink_dev_lo = -1, via_vlink_dev_hi = 18;
658 /* Internal devices need IRQ line routing, pre VLink */ 658
659 { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_82C686), 0 }, 659static void quirk_via_bridge(struct pci_dev *dev)
660 { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8231), 17 }, 660{
661 /* Devices with VLink */ 661 /* See what bridge we have and find the device ranges */
662 { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8233_0), 17}, 662 switch (dev->device) {
663 { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8233A), 17 }, 663 case PCI_DEVICE_ID_VIA_82C686:
664 { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8233C_0), 17 }, 664 /* The VT82C686 is special, it attaches to PCI and can have
665 { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8235), 16 }, 665 any device number. All its subdevices are functions of
666 { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8237), 15 }, 666 that single device. */
667 { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8237A), 15 }, 667 via_vlink_dev_lo = PCI_SLOT(dev->devfn);
668 { 0, }, 668 via_vlink_dev_hi = PCI_SLOT(dev->devfn);
669}; 669 break;
670 case PCI_DEVICE_ID_VIA_8237:
671 case PCI_DEVICE_ID_VIA_8237A:
672 via_vlink_dev_lo = 15;
673 break;
674 case PCI_DEVICE_ID_VIA_8235:
675 via_vlink_dev_lo = 16;
676 break;
677 case PCI_DEVICE_ID_VIA_8231:
678 case PCI_DEVICE_ID_VIA_8233_0:
679 case PCI_DEVICE_ID_VIA_8233A:
680 case PCI_DEVICE_ID_VIA_8233C_0:
681 via_vlink_dev_lo = 17;
682 break;
683 }
684}
685DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_bridge);
686DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8231, quirk_via_bridge);
687DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8233_0, quirk_via_bridge);
688DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8233A, quirk_via_bridge);
689DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8233C_0, quirk_via_bridge);
690DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_via_bridge);
691DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, quirk_via_bridge);
692DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237A, quirk_via_bridge);
670 693
671/** 694/**
672 * quirk_via_vlink - VIA VLink IRQ number update 695 * quirk_via_vlink - VIA VLink IRQ number update
@@ -675,35 +698,20 @@ static const struct pci_device_id via_vlink_fixup_tbl[] = {
675 * If the device we are dealing with is on a PIC IRQ we need to 698 * If the device we are dealing with is on a PIC IRQ we need to
676 * ensure that the IRQ line register which usually is not relevant 699 * ensure that the IRQ line register which usually is not relevant
677 * for PCI cards, is actually written so that interrupts get sent 700 * for PCI cards, is actually written so that interrupts get sent
678 * to the right place 701 * to the right place.
702 * We only do this on systems where a VIA south bridge was detected,
703 * and only for VIA devices on the motherboard (see quirk_via_bridge
704 * above).
679 */ 705 */
680 706
681static void quirk_via_vlink(struct pci_dev *dev) 707static void quirk_via_vlink(struct pci_dev *dev)
682{ 708{
683 const struct pci_device_id *via_vlink_fixup;
684 static int dev_lo = -1, dev_hi = 18;
685 u8 irq, new_irq; 709 u8 irq, new_irq;
686 710
687 /* Check if we have VLink and cache the result */ 711 /* Check if we have VLink at all */
688 712 if (via_vlink_dev_lo == -1)
689 /* Checked already - no */
690 if (dev_lo == -2)
691 return; 713 return;
692 714
693 /* Not checked - see what bridge we have and find the device
694 ranges */
695
696 if (dev_lo == -1) {
697 via_vlink_fixup = pci_find_present(via_vlink_fixup_tbl);
698 if (via_vlink_fixup == NULL) {
699 dev_lo = -2;
700 return;
701 }
702 dev_lo = via_vlink_fixup->driver_data;
703 /* 82C686 is special - 0/0 */
704 if (dev_lo == 0)
705 dev_hi = 0;
706 }
707 new_irq = dev->irq; 715 new_irq = dev->irq;
708 716
709 /* Don't quirk interrupts outside the legacy IRQ range */ 717 /* Don't quirk interrupts outside the legacy IRQ range */
@@ -711,8 +719,8 @@ static void quirk_via_vlink(struct pci_dev *dev)
711 return; 719 return;
712 720
713 /* Internal device ? */ 721 /* Internal device ? */
714 if (dev->bus->number != 0 || PCI_SLOT(dev->devfn) > dev_hi || 722 if (dev->bus->number != 0 || PCI_SLOT(dev->devfn) > via_vlink_dev_hi ||
715 PCI_SLOT(dev->devfn) < dev_lo) 723 PCI_SLOT(dev->devfn) < via_vlink_dev_lo)
716 return; 724 return;
717 725
718 /* This is an internal VLink device on a PIC interrupt. The BIOS 726 /* This is an internal VLink device on a PIC interrupt. The BIOS
@@ -1002,6 +1010,11 @@ static void __init asus_hides_smbus_hostbridge(struct pci_dev *dev)
1002 case 0x186a: /* M6Ne notebook */ 1010 case 0x186a: /* M6Ne notebook */
1003 asus_hides_smbus = 1; 1011 asus_hides_smbus = 1;
1004 } 1012 }
1013 if (dev->device == PCI_DEVICE_ID_INTEL_82865_HB)
1014 switch (dev->subsystem_device) {
1015 case 0x80f2: /* P4P800-X */
1016 asus_hides_smbus = 1;
1017 }
1005 if (dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB) { 1018 if (dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB) {
1006 switch (dev->subsystem_device) { 1019 switch (dev->subsystem_device) {
1007 case 0x1882: /* M6V notebook */ 1020 case 0x1882: /* M6V notebook */
@@ -1249,8 +1262,8 @@ static void quirk_jmicron_dualfn(struct pci_dev *pdev)
1249 pci_read_config_dword(pdev, 0x40, &conf); 1262 pci_read_config_dword(pdev, 0x40, &conf);
1250 /* Enable dual function mode, AHCI on fn 0, IDE fn1 */ 1263 /* Enable dual function mode, AHCI on fn 0, IDE fn1 */
1251 /* Set the class codes correctly and then direct IDE 0 */ 1264 /* Set the class codes correctly and then direct IDE 0 */
1252 conf &= ~0x000F0200; /* Clear bit 9 and 16-19 */ 1265 conf &= ~0x000FF200; /* Clear bit 9 and 12-19 */
1253 conf |= 0x00C20002; /* Set bit 1, 17, 22, 23 */ 1266 conf |= 0x00C2A102; /* Set 1, 8, 13, 15, 17, 22, 23 */
1254 pci_write_config_dword(pdev, 0x40, conf); 1267 pci_write_config_dword(pdev, 0x40, conf);
1255 1268
1256 /* Reconfigure so that the PCI scanner discovers the 1269 /* Reconfigure so that the PCI scanner discovers the
diff --git a/drivers/pci/search.c b/drivers/pci/search.c
index fab381ed853c..b2653c4afe9e 100644
--- a/drivers/pci/search.c
+++ b/drivers/pci/search.c
@@ -200,11 +200,8 @@ static struct pci_dev * pci_find_subsys(unsigned int vendor,
200 * can cause some machines to crash. So here we detect and flag that 200 * can cause some machines to crash. So here we detect and flag that
201 * situation and bail out early. 201 * situation and bail out early.
202 */ 202 */
203 if (unlikely(list_empty(&pci_devices))) { 203 if (unlikely(list_empty(&pci_devices)))
204 printk(KERN_INFO "pci_find_subsys() called while pci_devices "
205 "is still empty\n");
206 return NULL; 204 return NULL;
207 }
208 down_read(&pci_bus_sem); 205 down_read(&pci_bus_sem);
209 n = from ? from->global_list.next : pci_devices.next; 206 n = from ? from->global_list.next : pci_devices.next;
210 207
@@ -278,11 +275,8 @@ pci_get_subsys(unsigned int vendor, unsigned int device,
278 * can cause some machines to crash. So here we detect and flag that 275 * can cause some machines to crash. So here we detect and flag that
279 * situation and bail out early. 276 * situation and bail out early.
280 */ 277 */
281 if (unlikely(list_empty(&pci_devices))) { 278 if (unlikely(list_empty(&pci_devices)))
282 printk(KERN_NOTICE "pci_get_subsys() called while pci_devices "
283 "is still empty\n");
284 return NULL; 279 return NULL;
285 }
286 down_read(&pci_bus_sem); 280 down_read(&pci_bus_sem);
287 n = from ? from->global_list.next : pci_devices.next; 281 n = from ? from->global_list.next : pci_devices.next;
288 282
diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c
index e9e0934380b8..198b9f22fbff 100644
--- a/drivers/rtc/rtc-sh.c
+++ b/drivers/rtc/rtc-sh.c
@@ -492,10 +492,10 @@ static int sh_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
492 492
493 spin_lock_irq(&rtc->lock); 493 spin_lock_irq(&rtc->lock);
494 494
495 /* disable alarm interrupt and clear flag */ 495 /* disable alarm interrupt and clear the alarm flag */
496 rcr1 = readb(rtc->regbase + RCR1); 496 rcr1 = readb(rtc->regbase + RCR1);
497 rcr1 &= ~RCR1_AF; 497 rcr1 &= ~(RCR1_AF|RCR1_AIE);
498 writeb(rcr1 & ~RCR1_AIE, rtc->regbase + RCR1); 498 writeb(rcr1, rtc->regbase + RCR1);
499 499
500 rtc->rearm_aie = 0; 500 rtc->rearm_aie = 0;
501 501
@@ -510,8 +510,10 @@ static int sh_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
510 mon += 1; 510 mon += 1;
511 sh_rtc_write_alarm_value(rtc, mon, RMONAR); 511 sh_rtc_write_alarm_value(rtc, mon, RMONAR);
512 512
513 /* Restore interrupt activation status */ 513 if (wkalrm->enabled) {
514 writeb(rcr1, rtc->regbase + RCR1); 514 rcr1 |= RCR1_AIE;
515 writeb(rcr1, rtc->regbase + RCR1);
516 }
515 517
516 spin_unlock_irq(&rtc->lock); 518 spin_unlock_irq(&rtc->lock);
517 519
diff --git a/drivers/rtc/rtc-sysfs.c b/drivers/rtc/rtc-sysfs.c
index 9418a59fb368..2ddd0cf07140 100644
--- a/drivers/rtc/rtc-sysfs.c
+++ b/drivers/rtc/rtc-sysfs.c
@@ -78,7 +78,7 @@ static struct attribute_group rtc_attr_group = {
78 .attrs = rtc_attrs, 78 .attrs = rtc_attrs,
79}; 79};
80 80
81static int __devinit rtc_sysfs_add_device(struct class_device *class_dev, 81static int rtc_sysfs_add_device(struct class_device *class_dev,
82 struct class_interface *class_intf) 82 struct class_interface *class_intf)
83{ 83{
84 int err; 84 int err;
diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c
index 99a259c5a0c0..e1b44d6c0c32 100644
--- a/drivers/scsi/3w-xxxx.c
+++ b/drivers/scsi/3w-xxxx.c
@@ -6,7 +6,7 @@
6 Arnaldo Carvalho de Melo <acme@conectiva.com.br> 6 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
7 Brad Strand <linux@3ware.com> 7 Brad Strand <linux@3ware.com>
8 8
9 Copyright (C) 1999-2005 3ware Inc. 9 Copyright (C) 1999-2007 3ware Inc.
10 10
11 Kernel compatiblity By: Andre Hedrick <andre@suse.com> 11 Kernel compatiblity By: Andre Hedrick <andre@suse.com>
12 Non-Copyright (C) 2000 Andre Hedrick <andre@suse.com> 12 Non-Copyright (C) 2000 Andre Hedrick <andre@suse.com>
@@ -191,6 +191,9 @@
191 before shutting down card. 191 before shutting down card.
192 Change to new 'change_queue_depth' api. 192 Change to new 'change_queue_depth' api.
193 Fix 'handled=1' ISR usage, remove bogus IRQ check. 193 Fix 'handled=1' ISR usage, remove bogus IRQ check.
194 1.26.02.002 - Free irq handler in __tw_shutdown().
195 Turn on RCD bit for caching mode page.
196 Serialize reset code.
194*/ 197*/
195 198
196#include <linux/module.h> 199#include <linux/module.h>
@@ -214,7 +217,7 @@
214#include "3w-xxxx.h" 217#include "3w-xxxx.h"
215 218
216/* Globals */ 219/* Globals */
217#define TW_DRIVER_VERSION "1.26.02.001" 220#define TW_DRIVER_VERSION "1.26.02.002"
218static TW_Device_Extension *tw_device_extension_list[TW_MAX_SLOT]; 221static TW_Device_Extension *tw_device_extension_list[TW_MAX_SLOT];
219static int tw_device_extension_count = 0; 222static int tw_device_extension_count = 0;
220static int twe_major = -1; 223static int twe_major = -1;
@@ -226,7 +229,7 @@ MODULE_LICENSE("GPL");
226MODULE_VERSION(TW_DRIVER_VERSION); 229MODULE_VERSION(TW_DRIVER_VERSION);
227 230
228/* Function prototypes */ 231/* Function prototypes */
229static int tw_reset_device_extension(TW_Device_Extension *tw_dev, int ioctl_reset); 232static int tw_reset_device_extension(TW_Device_Extension *tw_dev);
230 233
231/* Functions */ 234/* Functions */
232 235
@@ -984,24 +987,12 @@ static int tw_chrdev_ioctl(struct inode *inode, struct file *file, unsigned int
984 /* Now wait for the command to complete */ 987 /* Now wait for the command to complete */
985 timeout = wait_event_timeout(tw_dev->ioctl_wqueue, tw_dev->chrdev_request_id == TW_IOCTL_CHRDEV_FREE, timeout); 988 timeout = wait_event_timeout(tw_dev->ioctl_wqueue, tw_dev->chrdev_request_id == TW_IOCTL_CHRDEV_FREE, timeout);
986 989
987 /* See if we reset while waiting for the ioctl to complete */
988 if (test_bit(TW_IN_RESET, &tw_dev->flags)) {
989 clear_bit(TW_IN_RESET, &tw_dev->flags);
990 retval = -ERESTARTSYS;
991 goto out2;
992 }
993
994 /* We timed out, and didn't get an interrupt */ 990 /* We timed out, and didn't get an interrupt */
995 if (tw_dev->chrdev_request_id != TW_IOCTL_CHRDEV_FREE) { 991 if (tw_dev->chrdev_request_id != TW_IOCTL_CHRDEV_FREE) {
996 /* Now we need to reset the board */ 992 /* Now we need to reset the board */
997 printk(KERN_WARNING "3w-xxxx: scsi%d: Character ioctl (0x%x) timed out, resetting card.\n", tw_dev->host->host_no, cmd); 993 printk(KERN_WARNING "3w-xxxx: scsi%d: Character ioctl (0x%x) timed out, resetting card.\n", tw_dev->host->host_no, cmd);
998 retval = -EIO; 994 retval = -EIO;
999 spin_lock_irqsave(tw_dev->host->host_lock, flags); 995 if (tw_reset_device_extension(tw_dev)) {
1000 tw_dev->state[request_id] = TW_S_COMPLETED;
1001 tw_state_request_finish(tw_dev, request_id);
1002 tw_dev->posted_request_count--;
1003 spin_unlock_irqrestore(tw_dev->host->host_lock, flags);
1004 if (tw_reset_device_extension(tw_dev, 1)) {
1005 printk(KERN_WARNING "3w-xxxx: tw_chrdev_ioctl(): Reset failed for card %d.\n", tw_dev->host->host_no); 996 printk(KERN_WARNING "3w-xxxx: tw_chrdev_ioctl(): Reset failed for card %d.\n", tw_dev->host->host_no);
1006 } 997 }
1007 goto out2; 998 goto out2;
@@ -1336,7 +1327,7 @@ static void tw_unmap_scsi_data(struct pci_dev *pdev, struct scsi_cmnd *cmd)
1336} /* End tw_unmap_scsi_data() */ 1327} /* End tw_unmap_scsi_data() */
1337 1328
1338/* This function will reset a device extension */ 1329/* This function will reset a device extension */
1339static int tw_reset_device_extension(TW_Device_Extension *tw_dev, int ioctl_reset) 1330static int tw_reset_device_extension(TW_Device_Extension *tw_dev)
1340{ 1331{
1341 int i = 0; 1332 int i = 0;
1342 struct scsi_cmnd *srb; 1333 struct scsi_cmnd *srb;
@@ -1382,15 +1373,10 @@ static int tw_reset_device_extension(TW_Device_Extension *tw_dev, int ioctl_rese
1382 printk(KERN_WARNING "3w-xxxx: scsi%d: Reset sequence failed.\n", tw_dev->host->host_no); 1373 printk(KERN_WARNING "3w-xxxx: scsi%d: Reset sequence failed.\n", tw_dev->host->host_no);
1383 return 1; 1374 return 1;
1384 } 1375 }
1385 TW_ENABLE_AND_CLEAR_INTERRUPTS(tw_dev);
1386 1376
1387 /* Wake up any ioctl that was pending before the reset */ 1377 TW_ENABLE_AND_CLEAR_INTERRUPTS(tw_dev);
1388 if ((tw_dev->chrdev_request_id == TW_IOCTL_CHRDEV_FREE) || (ioctl_reset)) { 1378 clear_bit(TW_IN_RESET, &tw_dev->flags);
1389 clear_bit(TW_IN_RESET, &tw_dev->flags); 1379 tw_dev->chrdev_request_id = TW_IOCTL_CHRDEV_FREE;
1390 } else {
1391 tw_dev->chrdev_request_id = TW_IOCTL_CHRDEV_FREE;
1392 wake_up(&tw_dev->ioctl_wqueue);
1393 }
1394 1380
1395 return 0; 1381 return 0;
1396} /* End tw_reset_device_extension() */ 1382} /* End tw_reset_device_extension() */
@@ -1437,14 +1423,18 @@ static int tw_scsi_eh_reset(struct scsi_cmnd *SCpnt)
1437 "WARNING: Command (0x%x) timed out, resetting card.\n", 1423 "WARNING: Command (0x%x) timed out, resetting card.\n",
1438 SCpnt->cmnd[0]); 1424 SCpnt->cmnd[0]);
1439 1425
1426 /* Make sure we are not issuing an ioctl or resetting from ioctl */
1427 mutex_lock(&tw_dev->ioctl_lock);
1428
1440 /* Now reset the card and some of the device extension data */ 1429 /* Now reset the card and some of the device extension data */
1441 if (tw_reset_device_extension(tw_dev, 0)) { 1430 if (tw_reset_device_extension(tw_dev)) {
1442 printk(KERN_WARNING "3w-xxxx: scsi%d: Reset failed.\n", tw_dev->host->host_no); 1431 printk(KERN_WARNING "3w-xxxx: scsi%d: Reset failed.\n", tw_dev->host->host_no);
1443 goto out; 1432 goto out;
1444 } 1433 }
1445 1434
1446 retval = SUCCESS; 1435 retval = SUCCESS;
1447out: 1436out:
1437 mutex_unlock(&tw_dev->ioctl_lock);
1448 return retval; 1438 return retval;
1449} /* End tw_scsi_eh_reset() */ 1439} /* End tw_scsi_eh_reset() */
1450 1440
@@ -1660,9 +1650,9 @@ static int tw_scsiop_mode_sense_complete(TW_Device_Extension *tw_dev, int reques
1660 request_buffer[4] = 0x8; /* caching page */ 1650 request_buffer[4] = 0x8; /* caching page */
1661 request_buffer[5] = 0xa; /* page length */ 1651 request_buffer[5] = 0xa; /* page length */
1662 if (*flags & 0x1) 1652 if (*flags & 0x1)
1663 request_buffer[6] = 0x4; /* WCE on */ 1653 request_buffer[6] = 0x5; /* WCE on, RCD on */
1664 else 1654 else
1665 request_buffer[6] = 0x0; /* WCE off */ 1655 request_buffer[6] = 0x1; /* WCE off, RCD on */
1666 tw_transfer_internal(tw_dev, request_id, request_buffer, 1656 tw_transfer_internal(tw_dev, request_id, request_buffer,
1667 sizeof(request_buffer)); 1657 sizeof(request_buffer));
1668 1658
@@ -2012,6 +2002,10 @@ static int tw_scsi_queue(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd
2012 int retval = 1; 2002 int retval = 1;
2013 TW_Device_Extension *tw_dev = (TW_Device_Extension *)SCpnt->device->host->hostdata; 2003 TW_Device_Extension *tw_dev = (TW_Device_Extension *)SCpnt->device->host->hostdata;
2014 2004
2005 /* If we are resetting due to timed out ioctl, report as busy */
2006 if (test_bit(TW_IN_RESET, &tw_dev->flags))
2007 return SCSI_MLQUEUE_HOST_BUSY;
2008
2015 /* Save done function into Scsi_Cmnd struct */ 2009 /* Save done function into Scsi_Cmnd struct */
2016 SCpnt->scsi_done = done; 2010 SCpnt->scsi_done = done;
2017 2011
@@ -2100,6 +2094,10 @@ static irqreturn_t tw_interrupt(int irq, void *dev_instance)
2100 2094
2101 handled = 1; 2095 handled = 1;
2102 2096
2097 /* If we are resetting, bail */
2098 if (test_bit(TW_IN_RESET, &tw_dev->flags))
2099 goto tw_interrupt_bail;
2100
2103 /* Check controller for errors */ 2101 /* Check controller for errors */
2104 if (tw_check_bits(status_reg_value)) { 2102 if (tw_check_bits(status_reg_value)) {
2105 dprintk(KERN_WARNING "3w-xxxx: tw_interrupt(): Unexpected bits.\n"); 2103 dprintk(KERN_WARNING "3w-xxxx: tw_interrupt(): Unexpected bits.\n");
@@ -2276,6 +2274,9 @@ static void __tw_shutdown(TW_Device_Extension *tw_dev)
2276 /* Disable interrupts */ 2274 /* Disable interrupts */
2277 TW_DISABLE_INTERRUPTS(tw_dev); 2275 TW_DISABLE_INTERRUPTS(tw_dev);
2278 2276
2277 /* Free up the IRQ */
2278 free_irq(tw_dev->tw_pci_dev->irq, tw_dev);
2279
2279 printk(KERN_WARNING "3w-xxxx: Shutting down host %d.\n", tw_dev->host->host_no); 2280 printk(KERN_WARNING "3w-xxxx: Shutting down host %d.\n", tw_dev->host->host_no);
2280 2281
2281 /* Tell the card we are shutting down */ 2282 /* Tell the card we are shutting down */
@@ -2444,9 +2445,6 @@ static void tw_remove(struct pci_dev *pdev)
2444 twe_major = -1; 2445 twe_major = -1;
2445 } 2446 }
2446 2447
2447 /* Free up the IRQ */
2448 free_irq(tw_dev->tw_pci_dev->irq, tw_dev);
2449
2450 /* Shutdown the card */ 2448 /* Shutdown the card */
2451 __tw_shutdown(tw_dev); 2449 __tw_shutdown(tw_dev);
2452 2450
diff --git a/drivers/scsi/3w-xxxx.h b/drivers/scsi/3w-xxxx.h
index bbd654a2b9b1..0742e6846656 100644
--- a/drivers/scsi/3w-xxxx.h
+++ b/drivers/scsi/3w-xxxx.h
@@ -6,7 +6,7 @@
6 Arnaldo Carvalho de Melo <acme@conectiva.com.br> 6 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
7 Brad Strand <linux@3ware.com> 7 Brad Strand <linux@3ware.com>
8 8
9 Copyright (C) 1999-2005 3ware Inc. 9 Copyright (C) 1999-2007 3ware Inc.
10 10
11 Kernel compatiblity By: Andre Hedrick <andre@suse.com> 11 Kernel compatiblity By: Andre Hedrick <andre@suse.com>
12 Non-Copyright (C) 2000 Andre Hedrick <andre@suse.com> 12 Non-Copyright (C) 2000 Andre Hedrick <andre@suse.com>
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 60f582727185..7869c34a4a3e 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -1303,7 +1303,7 @@ config SCSI_LPFC
1303 1303
1304config SCSI_SEAGATE 1304config SCSI_SEAGATE
1305 tristate "Seagate ST-02 and Future Domain TMC-8xx SCSI support" 1305 tristate "Seagate ST-02 and Future Domain TMC-8xx SCSI support"
1306 depends on X86 && ISA && SCSI && BROKEN 1306 depends on X86 && ISA && SCSI
1307 ---help--- 1307 ---help---
1308 These are 8-bit SCSI controllers; the ST-01 is also supported by 1308 These are 8-bit SCSI controllers; the ST-01 is also supported by
1309 this driver. It is explained in section 3.9 of the SCSI-HOWTO, 1309 this driver. It is explained in section 3.9 of the SCSI-HOWTO,
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index 359e7ddfdb47..d2cf875af59b 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -117,8 +117,8 @@ static struct pci_device_id aac_pci_tbl[] = {
117 { 0x9005, 0x0286, 0x9005, 0x029b, 0, 0, 22 }, /* AAR-2820SA (Intruder) */ 117 { 0x9005, 0x0286, 0x9005, 0x029b, 0, 0, 22 }, /* AAR-2820SA (Intruder) */
118 { 0x9005, 0x0286, 0x9005, 0x029c, 0, 0, 23 }, /* AAR-2620SA (Intruder) */ 118 { 0x9005, 0x0286, 0x9005, 0x029c, 0, 0, 23 }, /* AAR-2620SA (Intruder) */
119 { 0x9005, 0x0286, 0x9005, 0x029d, 0, 0, 24 }, /* AAR-2420SA (Intruder) */ 119 { 0x9005, 0x0286, 0x9005, 0x029d, 0, 0, 24 }, /* AAR-2420SA (Intruder) */
120 { 0x9005, 0x0286, 0x9005, 0x029e, 0, 0, 25 }, /* ICP9024R0 (Lancer) */ 120 { 0x9005, 0x0286, 0x9005, 0x029e, 0, 0, 25 }, /* ICP9024RO (Lancer) */
121 { 0x9005, 0x0286, 0x9005, 0x029f, 0, 0, 26 }, /* ICP9014R0 (Lancer) */ 121 { 0x9005, 0x0286, 0x9005, 0x029f, 0, 0, 26 }, /* ICP9014RO (Lancer) */
122 { 0x9005, 0x0286, 0x9005, 0x02a0, 0, 0, 27 }, /* ICP9047MA (Lancer) */ 122 { 0x9005, 0x0286, 0x9005, 0x02a0, 0, 0, 27 }, /* ICP9047MA (Lancer) */
123 { 0x9005, 0x0286, 0x9005, 0x02a1, 0, 0, 28 }, /* ICP9087MA (Lancer) */ 123 { 0x9005, 0x0286, 0x9005, 0x02a1, 0, 0, 28 }, /* ICP9087MA (Lancer) */
124 { 0x9005, 0x0286, 0x9005, 0x02a3, 0, 0, 29 }, /* ICP5445AU (Hurricane44) */ 124 { 0x9005, 0x0286, 0x9005, 0x02a3, 0, 0, 29 }, /* ICP5445AU (Hurricane44) */
@@ -137,15 +137,15 @@ static struct pci_device_id aac_pci_tbl[] = {
137 { 0x9005, 0x0285, 0x9005, 0x0294, 0, 0, 41 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */ 137 { 0x9005, 0x0285, 0x9005, 0x0294, 0, 0, 41 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */
138 { 0x9005, 0x0285, 0x103C, 0x3227, 0, 0, 42 }, /* AAR-2610SA PCI SATA 6ch */ 138 { 0x9005, 0x0285, 0x103C, 0x3227, 0, 0, 42 }, /* AAR-2610SA PCI SATA 6ch */
139 { 0x9005, 0x0285, 0x9005, 0x0296, 0, 0, 43 }, /* ASR-2240S (SabreExpress) */ 139 { 0x9005, 0x0285, 0x9005, 0x0296, 0, 0, 43 }, /* ASR-2240S (SabreExpress) */
140 { 0x9005, 0x0285, 0x9005, 0x0297, 0, 0, 44 }, /* ASR-4005SAS */ 140 { 0x9005, 0x0285, 0x9005, 0x0297, 0, 0, 44 }, /* ASR-4005 */
141 { 0x9005, 0x0285, 0x1014, 0x02F2, 0, 0, 45 }, /* IBM 8i (AvonPark) */ 141 { 0x9005, 0x0285, 0x1014, 0x02F2, 0, 0, 45 }, /* IBM 8i (AvonPark) */
142 { 0x9005, 0x0285, 0x1014, 0x0312, 0, 0, 45 }, /* IBM 8i (AvonPark Lite) */ 142 { 0x9005, 0x0285, 0x1014, 0x0312, 0, 0, 45 }, /* IBM 8i (AvonPark Lite) */
143 { 0x9005, 0x0286, 0x1014, 0x9580, 0, 0, 46 }, /* IBM 8k/8k-l8 (Aurora) */ 143 { 0x9005, 0x0286, 0x1014, 0x9580, 0, 0, 46 }, /* IBM 8k/8k-l8 (Aurora) */
144 { 0x9005, 0x0286, 0x1014, 0x9540, 0, 0, 47 }, /* IBM 8k/8k-l4 (Aurora Lite) */ 144 { 0x9005, 0x0286, 0x1014, 0x9540, 0, 0, 47 }, /* IBM 8k/8k-l4 (Aurora Lite) */
145 { 0x9005, 0x0285, 0x9005, 0x0298, 0, 0, 48 }, /* ASR-4000SAS (BlackBird) */ 145 { 0x9005, 0x0285, 0x9005, 0x0298, 0, 0, 48 }, /* ASR-4000 (BlackBird) */
146 { 0x9005, 0x0285, 0x9005, 0x0299, 0, 0, 49 }, /* ASR-4800SAS (Marauder-X) */ 146 { 0x9005, 0x0285, 0x9005, 0x0299, 0, 0, 49 }, /* ASR-4800SAS (Marauder-X) */
147 { 0x9005, 0x0285, 0x9005, 0x029a, 0, 0, 50 }, /* ASR-4805SAS (Marauder-E) */ 147 { 0x9005, 0x0285, 0x9005, 0x029a, 0, 0, 50 }, /* ASR-4805SAS (Marauder-E) */
148 { 0x9005, 0x0286, 0x9005, 0x02a2, 0, 0, 51 }, /* ASR-3800SAS (Hurricane44) */ 148 { 0x9005, 0x0286, 0x9005, 0x02a2, 0, 0, 51 }, /* ASR-3800 (Hurricane44) */
149 149
150 { 0x9005, 0x0285, 0x1028, 0x0287, 0, 0, 52 }, /* Perc 320/DC*/ 150 { 0x9005, 0x0285, 0x1028, 0x0287, 0, 0, 52 }, /* Perc 320/DC*/
151 { 0x1011, 0x0046, 0x9005, 0x0365, 0, 0, 53 }, /* Adaptec 5400S (Mustang)*/ 151 { 0x1011, 0x0046, 0x9005, 0x0365, 0, 0, 53 }, /* Adaptec 5400S (Mustang)*/
@@ -193,8 +193,8 @@ static struct aac_driver_ident aac_drivers[] = {
193 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2820SA ", 1 }, /* AAR-2820SA (Intruder) */ 193 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2820SA ", 1 }, /* AAR-2820SA (Intruder) */
194 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2620SA ", 1 }, /* AAR-2620SA (Intruder) */ 194 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2620SA ", 1 }, /* AAR-2620SA (Intruder) */
195 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2420SA ", 1 }, /* AAR-2420SA (Intruder) */ 195 { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2420SA ", 1 }, /* AAR-2420SA (Intruder) */
196 { aac_rkt_init, "aacraid", "ICP ", "ICP9024R0 ", 2 }, /* ICP9024R0 (Lancer) */ 196 { aac_rkt_init, "aacraid", "ICP ", "ICP9024RO ", 2 }, /* ICP9024RO (Lancer) */
197 { aac_rkt_init, "aacraid", "ICP ", "ICP9014R0 ", 1 }, /* ICP9014R0 (Lancer) */ 197 { aac_rkt_init, "aacraid", "ICP ", "ICP9014RO ", 1 }, /* ICP9014RO (Lancer) */
198 { aac_rkt_init, "aacraid", "ICP ", "ICP9047MA ", 1 }, /* ICP9047MA (Lancer) */ 198 { aac_rkt_init, "aacraid", "ICP ", "ICP9047MA ", 1 }, /* ICP9047MA (Lancer) */
199 { aac_rkt_init, "aacraid", "ICP ", "ICP9087MA ", 1 }, /* ICP9087MA (Lancer) */ 199 { aac_rkt_init, "aacraid", "ICP ", "ICP9087MA ", 1 }, /* ICP9087MA (Lancer) */
200 { aac_rkt_init, "aacraid", "ICP ", "ICP5445AU ", 1 }, /* ICP5445AU (Hurricane44) */ 200 { aac_rkt_init, "aacraid", "ICP ", "ICP5445AU ", 1 }, /* ICP5445AU (Hurricane44) */
@@ -212,14 +212,14 @@ static struct aac_driver_ident aac_drivers[] = {
212 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2026ZCR ", 1 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */ 212 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2026ZCR ", 1 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */
213 { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2610SA ", 1 }, /* SATA 6Ch (Bearcat) */ 213 { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2610SA ", 1 }, /* SATA 6Ch (Bearcat) */
214 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2240S ", 1 }, /* ASR-2240S (SabreExpress) */ 214 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2240S ", 1 }, /* ASR-2240S (SabreExpress) */
215 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4005SAS ", 1 }, /* ASR-4005SAS */ 215 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4005 ", 1 }, /* ASR-4005 */
216 { aac_rx_init, "ServeRAID","IBM ", "ServeRAID 8i ", 1 }, /* IBM 8i (AvonPark) */ 216 { aac_rx_init, "ServeRAID","IBM ", "ServeRAID 8i ", 1 }, /* IBM 8i (AvonPark) */
217 { aac_rkt_init, "ServeRAID","IBM ", "ServeRAID 8k-l8 ", 1 }, /* IBM 8k/8k-l8 (Aurora) */ 217 { aac_rkt_init, "ServeRAID","IBM ", "ServeRAID 8k-l8 ", 1 }, /* IBM 8k/8k-l8 (Aurora) */
218 { aac_rkt_init, "ServeRAID","IBM ", "ServeRAID 8k-l4 ", 1 }, /* IBM 8k/8k-l4 (Aurora Lite) */ 218 { aac_rkt_init, "ServeRAID","IBM ", "ServeRAID 8k-l4 ", 1 }, /* IBM 8k/8k-l4 (Aurora Lite) */
219 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4000SAS ", 1 }, /* ASR-4000SAS (BlackBird & AvonPark) */ 219 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4000 ", 1 }, /* ASR-4000 (BlackBird & AvonPark) */
220 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4800SAS ", 1 }, /* ASR-4800SAS (Marauder-X) */ 220 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4800SAS ", 1 }, /* ASR-4800SAS (Marauder-X) */
221 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4805SAS ", 1 }, /* ASR-4805SAS (Marauder-E) */ 221 { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4805SAS ", 1 }, /* ASR-4805SAS (Marauder-E) */
222 { aac_rkt_init, "aacraid", "ADAPTEC ", "ASR-3800SAS ", 1 }, /* ASR-3800SAS (Hurricane44) */ 222 { aac_rkt_init, "aacraid", "ADAPTEC ", "ASR-3800 ", 1 }, /* ASR-3800 (Hurricane44) */
223 223
224 { aac_rx_init, "percraid", "DELL ", "PERC 320/DC ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Perc 320/DC*/ 224 { aac_rx_init, "percraid", "DELL ", "PERC 320/DC ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Perc 320/DC*/
225 { aac_sa_init, "aacraid", "ADAPTEC ", "Adaptec 5400S ", 4, AAC_QUIRK_34SG }, /* Adaptec 5400S (Mustang)*/ 225 { aac_sa_init, "aacraid", "ADAPTEC ", "Adaptec 5400S ", 4, AAC_QUIRK_34SG }, /* Adaptec 5400S (Mustang)*/
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
index 2b344356a29e..306bec355e45 100644
--- a/drivers/scsi/advansys.c
+++ b/drivers/scsi/advansys.c
@@ -18215,6 +18215,7 @@ AdvInquiryHandling(
18215} 18215}
18216MODULE_LICENSE("Dual BSD/GPL"); 18216MODULE_LICENSE("Dual BSD/GPL");
18217 18217
18218#ifdef CONFIG_PCI
18218/* PCI Devices supported by this driver */ 18219/* PCI Devices supported by this driver */
18219static struct pci_device_id advansys_pci_tbl[] __devinitdata = { 18220static struct pci_device_id advansys_pci_tbl[] __devinitdata = {
18220 { PCI_VENDOR_ID_ASP, PCI_DEVICE_ID_ASP_1200A, 18221 { PCI_VENDOR_ID_ASP, PCI_DEVICE_ID_ASP_1200A,
@@ -18232,4 +18233,4 @@ static struct pci_device_id advansys_pci_tbl[] __devinitdata = {
18232 { } 18233 { }
18233}; 18234};
18234MODULE_DEVICE_TABLE(pci, advansys_pci_tbl); 18235MODULE_DEVICE_TABLE(pci, advansys_pci_tbl);
18235 18236#endif /* CONFIG_PCI */
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index d0b139cccbbc..437684084377 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -749,7 +749,7 @@ static int iscsi_scsi_data_in(struct iscsi_conn *conn)
749 if (!offset) 749 if (!offset)
750 crypto_hash_update( 750 crypto_hash_update(
751 &tcp_conn->rx_hash, 751 &tcp_conn->rx_hash,
752 &sg[i], 1); 752 &sg[i], sg[i].length);
753 else 753 else
754 partial_sg_digest_update( 754 partial_sg_digest_update(
755 &tcp_conn->rx_hash, 755 &tcp_conn->rx_hash,
@@ -1777,13 +1777,13 @@ iscsi_tcp_conn_create(struct iscsi_cls_session *cls_session, uint32_t conn_idx)
1777 tcp_conn->tx_hash.tfm = crypto_alloc_hash("crc32c", 0, 1777 tcp_conn->tx_hash.tfm = crypto_alloc_hash("crc32c", 0,
1778 CRYPTO_ALG_ASYNC); 1778 CRYPTO_ALG_ASYNC);
1779 tcp_conn->tx_hash.flags = 0; 1779 tcp_conn->tx_hash.flags = 0;
1780 if (!tcp_conn->tx_hash.tfm) 1780 if (IS_ERR(tcp_conn->tx_hash.tfm))
1781 goto free_tcp_conn; 1781 goto free_tcp_conn;
1782 1782
1783 tcp_conn->rx_hash.tfm = crypto_alloc_hash("crc32c", 0, 1783 tcp_conn->rx_hash.tfm = crypto_alloc_hash("crc32c", 0,
1784 CRYPTO_ALG_ASYNC); 1784 CRYPTO_ALG_ASYNC);
1785 tcp_conn->rx_hash.flags = 0; 1785 tcp_conn->rx_hash.flags = 0;
1786 if (!tcp_conn->rx_hash.tfm) 1786 if (IS_ERR(tcp_conn->rx_hash.tfm))
1787 goto free_tx_tfm; 1787 goto free_tx_tfm;
1788 1788
1789 return cls_conn; 1789 return cls_conn;
@@ -2044,13 +2044,11 @@ iscsi_tcp_conn_get_param(struct iscsi_cls_conn *cls_conn,
2044 sk = tcp_conn->sock->sk; 2044 sk = tcp_conn->sock->sk;
2045 if (sk->sk_family == PF_INET) { 2045 if (sk->sk_family == PF_INET) {
2046 inet = inet_sk(sk); 2046 inet = inet_sk(sk);
2047 len = sprintf(buf, "%u.%u.%u.%u\n", 2047 len = sprintf(buf, NIPQUAD_FMT "\n",
2048 NIPQUAD(inet->daddr)); 2048 NIPQUAD(inet->daddr));
2049 } else { 2049 } else {
2050 np = inet6_sk(sk); 2050 np = inet6_sk(sk);
2051 len = sprintf(buf, 2051 len = sprintf(buf, NIP6_FMT "\n", NIP6(np->daddr));
2052 "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
2053 NIP6(np->daddr));
2054 } 2052 }
2055 mutex_unlock(&conn->xmitmutex); 2053 mutex_unlock(&conn->xmitmutex);
2056 break; 2054 break;
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index e11b23c641e2..d37048c96eab 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -260,7 +260,7 @@ static int iscsi_scsi_cmd_rsp(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
260 } 260 }
261 261
262 if (rhdr->cmd_status == SAM_STAT_CHECK_CONDITION) { 262 if (rhdr->cmd_status == SAM_STAT_CHECK_CONDITION) {
263 int senselen; 263 uint16_t senselen;
264 264
265 if (datalen < 2) { 265 if (datalen < 2) {
266invalid_datalen: 266invalid_datalen:
@@ -270,12 +270,12 @@ invalid_datalen:
270 goto out; 270 goto out;
271 } 271 }
272 272
273 senselen = (data[0] << 8) | data[1]; 273 senselen = be16_to_cpu(*(uint16_t *)data);
274 if (datalen < senselen) 274 if (datalen < senselen)
275 goto invalid_datalen; 275 goto invalid_datalen;
276 276
277 memcpy(sc->sense_buffer, data + 2, 277 memcpy(sc->sense_buffer, data + 2,
278 min(senselen, SCSI_SENSE_BUFFERSIZE)); 278 min_t(uint16_t, senselen, SCSI_SENSE_BUFFERSIZE));
279 debug_scsi("copied %d bytes of sense\n", 279 debug_scsi("copied %d bytes of sense\n",
280 min(senselen, SCSI_SENSE_BUFFERSIZE)); 280 min(senselen, SCSI_SENSE_BUFFERSIZE));
281 } 281 }
diff --git a/drivers/scsi/lpfc/lpfc_mem.c b/drivers/scsi/lpfc/lpfc_mem.c
index 066292d3995a..ec3bbbde6f7a 100644
--- a/drivers/scsi/lpfc/lpfc_mem.c
+++ b/drivers/scsi/lpfc/lpfc_mem.c
@@ -56,6 +56,9 @@ lpfc_mem_alloc(struct lpfc_hba * phba)
56 56
57 pool->elements = kmalloc(sizeof(struct lpfc_dmabuf) * 57 pool->elements = kmalloc(sizeof(struct lpfc_dmabuf) *
58 LPFC_MBUF_POOL_SIZE, GFP_KERNEL); 58 LPFC_MBUF_POOL_SIZE, GFP_KERNEL);
59 if (!pool->elements)
60 goto fail_free_lpfc_mbuf_pool;
61
59 pool->max_count = 0; 62 pool->max_count = 0;
60 pool->current_count = 0; 63 pool->current_count = 0;
61 for ( i = 0; i < LPFC_MBUF_POOL_SIZE; i++) { 64 for ( i = 0; i < LPFC_MBUF_POOL_SIZE; i++) {
@@ -82,10 +85,11 @@ lpfc_mem_alloc(struct lpfc_hba * phba)
82 fail_free_mbox_pool: 85 fail_free_mbox_pool:
83 mempool_destroy(phba->mbox_mem_pool); 86 mempool_destroy(phba->mbox_mem_pool);
84 fail_free_mbuf_pool: 87 fail_free_mbuf_pool:
85 while (--i) 88 while (i--)
86 pci_pool_free(phba->lpfc_mbuf_pool, pool->elements[i].virt, 89 pci_pool_free(phba->lpfc_mbuf_pool, pool->elements[i].virt,
87 pool->elements[i].phys); 90 pool->elements[i].phys);
88 kfree(pool->elements); 91 kfree(pool->elements);
92 fail_free_lpfc_mbuf_pool:
89 pci_pool_destroy(phba->lpfc_mbuf_pool); 93 pci_pool_destroy(phba->lpfc_mbuf_pool);
90 fail_free_dma_buf_pool: 94 fail_free_dma_buf_pool:
91 pci_pool_destroy(phba->lpfc_scsi_dma_buf_pool); 95 pci_pool_destroy(phba->lpfc_scsi_dma_buf_pool);
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c
index 046223b4ae57..b5bdd0d7a8bf 100644
--- a/drivers/scsi/megaraid/megaraid_sas.c
+++ b/drivers/scsi/megaraid/megaraid_sas.c
@@ -13,8 +13,8 @@
13 * Version : v00.00.03.05 13 * Version : v00.00.03.05
14 * 14 *
15 * Authors: 15 * Authors:
16 * Sreenivas Bagalkote <Sreenivas.Bagalkote@lsil.com> 16 * Sreenivas Bagalkote <Sreenivas.Bagalkote@lsi.com>
17 * Sumant Patro <Sumant.Patro@lsil.com> 17 * Sumant Patro <Sumant.Patro@lsi.com>
18 * 18 *
19 * List of supported controllers 19 * List of supported controllers
20 * 20 *
@@ -45,7 +45,7 @@
45 45
46MODULE_LICENSE("GPL"); 46MODULE_LICENSE("GPL");
47MODULE_VERSION(MEGASAS_VERSION); 47MODULE_VERSION(MEGASAS_VERSION);
48MODULE_AUTHOR("sreenivas.bagalkote@lsil.com"); 48MODULE_AUTHOR("megaraidlinux@lsi.com");
49MODULE_DESCRIPTION("LSI Logic MegaRAID SAS Driver"); 49MODULE_DESCRIPTION("LSI Logic MegaRAID SAS Driver");
50 50
51/* 51/*
diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c
index 9fb0ea5c1fb9..5b458d2478f7 100644
--- a/drivers/scsi/pcmcia/sym53c500_cs.c
+++ b/drivers/scsi/pcmcia/sym53c500_cs.c
@@ -545,8 +545,6 @@ SYM53C500_release(struct pcmcia_device *link)
545 */ 545 */
546 if (shost->irq) 546 if (shost->irq)
547 free_irq(shost->irq, shost); 547 free_irq(shost->irq, shost);
548 if (shost->dma_channel != 0xff)
549 free_dma(shost->dma_channel);
550 if (shost->io_port && shost->n_io_port) 548 if (shost->io_port && shost->n_io_port)
551 release_region(shost->io_port, shost->n_io_port); 549 release_region(shost->io_port, shost->n_io_port);
552 550
diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c
index 16af5b79e587..1548d42a3b43 100644
--- a/drivers/scsi/qla1280.c
+++ b/drivers/scsi/qla1280.c
@@ -1341,7 +1341,7 @@ qla1280_return_status(struct response * sts, struct scsi_cmnd *cp)
1341 int host_status = DID_ERROR; 1341 int host_status = DID_ERROR;
1342 uint16_t comp_status = le16_to_cpu(sts->comp_status); 1342 uint16_t comp_status = le16_to_cpu(sts->comp_status);
1343 uint16_t state_flags = le16_to_cpu(sts->state_flags); 1343 uint16_t state_flags = le16_to_cpu(sts->state_flags);
1344 uint16_t residual_length = le32_to_cpu(sts->residual_length); 1344 uint32_t residual_length = le32_to_cpu(sts->residual_length);
1345 uint16_t scsi_status = le16_to_cpu(sts->scsi_status); 1345 uint16_t scsi_status = le16_to_cpu(sts->scsi_status);
1346#if DEBUG_QLA1280_INTR 1346#if DEBUG_QLA1280_INTR
1347 static char *reason[] = { 1347 static char *reason[] = {
@@ -1413,8 +1413,10 @@ qla1280_return_status(struct response * sts, struct scsi_cmnd *cp)
1413 "scsi: Underflow detected - retrying " 1413 "scsi: Underflow detected - retrying "
1414 "command.\n"); 1414 "command.\n");
1415 host_status = DID_ERROR; 1415 host_status = DID_ERROR;
1416 } else 1416 } else {
1417 cp->resid = residual_length;
1417 host_status = DID_OK; 1418 host_status = DID_OK;
1419 }
1418 break; 1420 break;
1419 1421
1420 default: 1422 default:
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index c4fc40f8e8ca..2c10130d9e03 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -1602,6 +1602,7 @@ typedef struct fc_port {
1602 1602
1603#define CT_REJECT_RESPONSE 0x8001 1603#define CT_REJECT_RESPONSE 0x8001
1604#define CT_ACCEPT_RESPONSE 0x8002 1604#define CT_ACCEPT_RESPONSE 0x8002
1605#define CT_REASON_INVALID_COMMAND_CODE 0x01
1605#define CT_REASON_CANNOT_PERFORM 0x09 1606#define CT_REASON_CANNOT_PERFORM 0x09
1606#define CT_EXPL_ALREADY_REGISTERED 0x10 1607#define CT_EXPL_ALREADY_REGISTERED 0x10
1607 1608
@@ -2079,6 +2080,7 @@ typedef struct scsi_qla_host {
2079 uint32_t msi_enabled :1; 2080 uint32_t msi_enabled :1;
2080 uint32_t msix_enabled :1; 2081 uint32_t msix_enabled :1;
2081 uint32_t disable_serdes :1; 2082 uint32_t disable_serdes :1;
2083 uint32_t gpsc_supported :1;
2082 } flags; 2084 } flags;
2083 2085
2084 atomic_t loop_state; 2086 atomic_t loop_state;
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index 32ebeec45ff0..e4dd12f4b80e 100644
--- a/drivers/scsi/qla2xxx/qla_gbl.h
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
@@ -45,7 +45,6 @@ extern void qla2x00_update_fcports(scsi_qla_host_t *);
45extern int qla2x00_abort_isp(scsi_qla_host_t *); 45extern int qla2x00_abort_isp(scsi_qla_host_t *);
46 46
47extern void qla2x00_update_fcport(scsi_qla_host_t *, fc_port_t *); 47extern void qla2x00_update_fcport(scsi_qla_host_t *, fc_port_t *);
48extern void qla2x00_reg_remote_port(scsi_qla_host_t *, fc_port_t *);
49 48
50extern void qla2x00_alloc_fw_dump(scsi_qla_host_t *); 49extern void qla2x00_alloc_fw_dump(scsi_qla_host_t *);
51extern void qla2x00_try_to_stop_firmware(scsi_qla_host_t *); 50extern void qla2x00_try_to_stop_firmware(scsi_qla_host_t *);
diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
index 97fbc62ec669..ec5b2dd90d6a 100644
--- a/drivers/scsi/qla2xxx/qla_gs.c
+++ b/drivers/scsi/qla2xxx/qla_gs.c
@@ -127,8 +127,8 @@ qla2x00_chk_ms_status(scsi_qla_host_t *ha, ms_iocb_entry_t *ms_pkt,
127 ha->host_no, routine, ms_pkt->entry_status)); 127 ha->host_no, routine, ms_pkt->entry_status));
128 } else { 128 } else {
129 if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) 129 if (IS_QLA24XX(ha) || IS_QLA54XX(ha))
130 comp_status = 130 comp_status = le16_to_cpu(
131 ((struct ct_entry_24xx *)ms_pkt)->comp_status; 131 ((struct ct_entry_24xx *)ms_pkt)->comp_status);
132 else 132 else
133 comp_status = le16_to_cpu(ms_pkt->status); 133 comp_status = le16_to_cpu(ms_pkt->status);
134 switch (comp_status) { 134 switch (comp_status) {
@@ -143,6 +143,7 @@ qla2x00_chk_ms_status(scsi_qla_host_t *ha, ms_iocb_entry_t *ms_pkt,
143 DEBUG2_3(qla2x00_dump_buffer( 143 DEBUG2_3(qla2x00_dump_buffer(
144 (uint8_t *)&ct_rsp->header, 144 (uint8_t *)&ct_rsp->header,
145 sizeof(struct ct_rsp_hdr))); 145 sizeof(struct ct_rsp_hdr)));
146 rval = QLA_INVALID_COMMAND;
146 } else 147 } else
147 rval = QLA_SUCCESS; 148 rval = QLA_SUCCESS;
148 break; 149 break;
@@ -1683,7 +1684,7 @@ qla2x00_gfpn_id(scsi_qla_host_t *ha, sw_info_t *list)
1683 memset(list[i].fabric_port_name, 0, WWN_SIZE); 1684 memset(list[i].fabric_port_name, 0, WWN_SIZE);
1684 1685
1685 /* Prepare common MS IOCB */ 1686 /* Prepare common MS IOCB */
1686 ms_pkt = qla2x00_prep_ms_iocb(ha, GFPN_ID_REQ_SIZE, 1687 ms_pkt = ha->isp_ops.prep_ms_iocb(ha, GFPN_ID_REQ_SIZE,
1687 GFPN_ID_RSP_SIZE); 1688 GFPN_ID_RSP_SIZE);
1688 1689
1689 /* Prepare CT request */ 1690 /* Prepare CT request */
@@ -1784,6 +1785,8 @@ qla2x00_gpsc(scsi_qla_host_t *ha, sw_info_t *list)
1784 1785
1785 if (!IS_QLA24XX(ha) && !IS_QLA54XX(ha)) 1786 if (!IS_QLA24XX(ha) && !IS_QLA54XX(ha))
1786 return QLA_FUNCTION_FAILED; 1787 return QLA_FUNCTION_FAILED;
1788 if (!ha->flags.gpsc_supported)
1789 return QLA_FUNCTION_FAILED;
1787 1790
1788 rval = qla2x00_mgmt_svr_login(ha); 1791 rval = qla2x00_mgmt_svr_login(ha);
1789 if (rval) 1792 if (rval)
@@ -1813,8 +1816,19 @@ qla2x00_gpsc(scsi_qla_host_t *ha, sw_info_t *list)
1813 /*EMPTY*/ 1816 /*EMPTY*/
1814 DEBUG2_3(printk("scsi(%ld): GPSC issue IOCB " 1817 DEBUG2_3(printk("scsi(%ld): GPSC issue IOCB "
1815 "failed (%d).\n", ha->host_no, rval)); 1818 "failed (%d).\n", ha->host_no, rval));
1816 } else if (qla2x00_chk_ms_status(ha, ms_pkt, ct_rsp, 1819 } else if ((rval = qla2x00_chk_ms_status(ha, ms_pkt, ct_rsp,
1817 "GPSC") != QLA_SUCCESS) { 1820 "GPSC")) != QLA_SUCCESS) {
1821 /* FM command unsupported? */
1822 if (rval == QLA_INVALID_COMMAND &&
1823 ct_rsp->header.reason_code ==
1824 CT_REASON_INVALID_COMMAND_CODE) {
1825 DEBUG2(printk("scsi(%ld): GPSC command "
1826 "unsupported, disabling query...\n",
1827 ha->host_no));
1828 ha->flags.gpsc_supported = 0;
1829 rval = QLA_FUNCTION_FAILED;
1830 break;
1831 }
1818 rval = QLA_FUNCTION_FAILED; 1832 rval = QLA_FUNCTION_FAILED;
1819 } else { 1833 } else {
1820 /* Save portname */ 1834 /* Save portname */
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index a823f0bc519d..b3dac26ddba3 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -2103,40 +2103,7 @@ qla2x00_iidma_fcport(scsi_qla_host_t *ha, fc_port_t *fcport)
2103 } 2103 }
2104} 2104}
2105 2105
2106/* 2106static void
2107 * qla2x00_update_fcport
2108 * Updates device on list.
2109 *
2110 * Input:
2111 * ha = adapter block pointer.
2112 * fcport = port structure pointer.
2113 *
2114 * Return:
2115 * 0 - Success
2116 * BIT_0 - error
2117 *
2118 * Context:
2119 * Kernel context.
2120 */
2121void
2122qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport)
2123{
2124 fcport->ha = ha;
2125 fcport->login_retry = 0;
2126 fcport->port_login_retry_count = ha->port_down_retry_count *
2127 PORT_RETRY_TIME;
2128 atomic_set(&fcport->port_down_timer, ha->port_down_retry_count *
2129 PORT_RETRY_TIME);
2130 fcport->flags &= ~FCF_LOGIN_NEEDED;
2131
2132 qla2x00_iidma_fcport(ha, fcport);
2133
2134 atomic_set(&fcport->state, FCS_ONLINE);
2135
2136 qla2x00_reg_remote_port(ha, fcport);
2137}
2138
2139void
2140qla2x00_reg_remote_port(scsi_qla_host_t *ha, fc_port_t *fcport) 2107qla2x00_reg_remote_port(scsi_qla_host_t *ha, fc_port_t *fcport)
2141{ 2108{
2142 struct fc_rport_identifiers rport_ids; 2109 struct fc_rport_identifiers rport_ids;
@@ -2179,6 +2146,39 @@ qla2x00_reg_remote_port(scsi_qla_host_t *ha, fc_port_t *fcport)
2179} 2146}
2180 2147
2181/* 2148/*
2149 * qla2x00_update_fcport
2150 * Updates device on list.
2151 *
2152 * Input:
2153 * ha = adapter block pointer.
2154 * fcport = port structure pointer.
2155 *
2156 * Return:
2157 * 0 - Success
2158 * BIT_0 - error
2159 *
2160 * Context:
2161 * Kernel context.
2162 */
2163void
2164qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport)
2165{
2166 fcport->ha = ha;
2167 fcport->login_retry = 0;
2168 fcport->port_login_retry_count = ha->port_down_retry_count *
2169 PORT_RETRY_TIME;
2170 atomic_set(&fcport->port_down_timer, ha->port_down_retry_count *
2171 PORT_RETRY_TIME);
2172 fcport->flags &= ~FCF_LOGIN_NEEDED;
2173
2174 qla2x00_iidma_fcport(ha, fcport);
2175
2176 atomic_set(&fcport->state, FCS_ONLINE);
2177
2178 qla2x00_reg_remote_port(ha, fcport);
2179}
2180
2181/*
2182 * qla2x00_configure_fabric 2182 * qla2x00_configure_fabric
2183 * Setup SNS devices with loop ID's. 2183 * Setup SNS devices with loop ID's.
2184 * 2184 *
@@ -3476,9 +3476,11 @@ qla24xx_nvram_config(scsi_qla_host_t *ha)
3476 3476
3477 /* Set host adapter parameters. */ 3477 /* Set host adapter parameters. */
3478 ha->flags.disable_risc_code_load = 0; 3478 ha->flags.disable_risc_code_load = 0;
3479 ha->flags.enable_lip_reset = 1; 3479 ha->flags.enable_lip_reset = 0;
3480 ha->flags.enable_lip_full_login = 1; 3480 ha->flags.enable_lip_full_login =
3481 ha->flags.enable_target_reset = 1; 3481 le32_to_cpu(nv->host_p) & BIT_10 ? 1: 0;
3482 ha->flags.enable_target_reset =
3483 le32_to_cpu(nv->host_p) & BIT_11 ? 1: 0;
3482 ha->flags.enable_led_scheme = 0; 3484 ha->flags.enable_led_scheme = 0;
3483 ha->flags.disable_serdes = le32_to_cpu(nv->host_p) & BIT_5 ? 1: 0; 3485 ha->flags.disable_serdes = le32_to_cpu(nv->host_p) & BIT_5 ? 1: 0;
3484 3486
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index d3b6df4d55c8..39fd17b05be5 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -134,11 +134,11 @@ qla2300_intr_handler(int irq, void *dev_id)
134 if (stat & HSR_RISC_PAUSED) { 134 if (stat & HSR_RISC_PAUSED) {
135 hccr = RD_REG_WORD(&reg->hccr); 135 hccr = RD_REG_WORD(&reg->hccr);
136 if (hccr & (BIT_15 | BIT_13 | BIT_11 | BIT_8)) 136 if (hccr & (BIT_15 | BIT_13 | BIT_11 | BIT_8))
137 qla_printk(KERN_INFO, ha, 137 qla_printk(KERN_INFO, ha, "Parity error -- "
138 "Parity error -- HCCR=%x.\n", hccr); 138 "HCCR=%x, Dumping firmware!\n", hccr);
139 else 139 else
140 qla_printk(KERN_INFO, ha, 140 qla_printk(KERN_INFO, ha, "RISC paused -- "
141 "RISC paused -- HCCR=%x.\n", hccr); 141 "HCCR=%x, Dumping firmware!\n", hccr);
142 142
143 /* 143 /*
144 * Issue a "HARD" reset in order for the RISC 144 * Issue a "HARD" reset in order for the RISC
@@ -147,6 +147,8 @@ qla2300_intr_handler(int irq, void *dev_id)
147 */ 147 */
148 WRT_REG_WORD(&reg->hccr, HCCR_RESET_RISC); 148 WRT_REG_WORD(&reg->hccr, HCCR_RESET_RISC);
149 RD_REG_WORD(&reg->hccr); 149 RD_REG_WORD(&reg->hccr);
150
151 ha->isp_ops.fw_dump(ha, 1);
150 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); 152 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
151 break; 153 break;
152 } else if ((stat & HSR_RISC_INT) == 0) 154 } else if ((stat & HSR_RISC_INT) == 0)
@@ -475,6 +477,8 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
475 set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags); 477 set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
476 } 478 }
477 set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags); 479 set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
480
481 ha->flags.gpsc_supported = 1;
478 break; 482 break;
479 483
480 case MBA_CHG_IN_CONNECTION: /* Change in connection mode */ 484 case MBA_CHG_IN_CONNECTION: /* Change in connection mode */
@@ -1440,8 +1444,7 @@ qla24xx_intr_handler(int irq, void *dev_id)
1440 1444
1441 qla_printk(KERN_INFO, ha, "RISC paused -- HCCR=%x, " 1445 qla_printk(KERN_INFO, ha, "RISC paused -- HCCR=%x, "
1442 "Dumping firmware!\n", hccr); 1446 "Dumping firmware!\n", hccr);
1443 qla24xx_fw_dump(ha, 1); 1447 ha->isp_ops.fw_dump(ha, 1);
1444
1445 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); 1448 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
1446 break; 1449 break;
1447 } else if ((stat & HSRX_RISC_INT) == 0) 1450 } else if ((stat & HSRX_RISC_INT) == 0)
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 4cde76c85cb3..077e5789beeb 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -1339,9 +1339,9 @@ qla2x00_lip_reset(scsi_qla_host_t *ha)
1339 1339
1340 if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) { 1340 if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) {
1341 mcp->mb[0] = MBC_LIP_FULL_LOGIN; 1341 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
1342 mcp->mb[1] = BIT_0; 1342 mcp->mb[1] = BIT_6;
1343 mcp->mb[2] = 0xff; 1343 mcp->mb[2] = 0;
1344 mcp->mb[3] = 0; 1344 mcp->mb[3] = ha->loop_reset_delay;
1345 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; 1345 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1346 } else { 1346 } else {
1347 mcp->mb[0] = MBC_LIP_RESET; 1347 mcp->mb[0] = MBC_LIP_RESET;
@@ -1823,8 +1823,8 @@ qla2x00_full_login_lip(scsi_qla_host_t *ha)
1823 ha->host_no)); 1823 ha->host_no));
1824 1824
1825 mcp->mb[0] = MBC_LIP_FULL_LOGIN; 1825 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
1826 mcp->mb[1] = 0; 1826 mcp->mb[1] = IS_QLA24XX(ha) || IS_QLA54XX(ha) ? BIT_3: 0;
1827 mcp->mb[2] = 0xff; 1827 mcp->mb[2] = 0;
1828 mcp->mb[3] = 0; 1828 mcp->mb[3] = 0;
1829 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; 1829 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1830 mcp->in_mb = MBX_0; 1830 mcp->in_mb = MBX_0;
@@ -2486,7 +2486,7 @@ qla2x00_trace_control(scsi_qla_host_t *ha, uint16_t ctrl, dma_addr_t eft_dma,
2486 mcp->mb[4] = LSW(MSD(eft_dma)); 2486 mcp->mb[4] = LSW(MSD(eft_dma));
2487 mcp->mb[5] = MSW(MSD(eft_dma)); 2487 mcp->mb[5] = MSW(MSD(eft_dma));
2488 mcp->mb[6] = buffers; 2488 mcp->mb[6] = buffers;
2489 mcp->mb[7] = buffers; 2489 mcp->mb[7] = 0;
2490 mcp->out_mb |= MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2; 2490 mcp->out_mb |= MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2;
2491 } 2491 }
2492 mcp->tov = 30; 2492 mcp->tov = 30;
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index d03523d3bf38..d6445ae841ba 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -1037,48 +1037,49 @@ eh_host_reset_lock:
1037static int 1037static int
1038qla2x00_loop_reset(scsi_qla_host_t *ha) 1038qla2x00_loop_reset(scsi_qla_host_t *ha)
1039{ 1039{
1040 int status = QLA_SUCCESS; 1040 int ret;
1041 struct fc_port *fcport; 1041 struct fc_port *fcport;
1042 1042
1043 if (ha->flags.enable_lip_full_login) {
1044 ret = qla2x00_full_login_lip(ha);
1045 if (ret != QLA_SUCCESS) {
1046 DEBUG2_3(printk("%s(%ld): bus_reset failed: "
1047 "full_login_lip=%d.\n", __func__, ha->host_no,
1048 ret));
1049 }
1050 atomic_set(&ha->loop_state, LOOP_DOWN);
1051 atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
1052 qla2x00_mark_all_devices_lost(ha, 0);
1053 qla2x00_wait_for_loop_ready(ha);
1054 }
1055
1043 if (ha->flags.enable_lip_reset) { 1056 if (ha->flags.enable_lip_reset) {
1044 status = qla2x00_lip_reset(ha); 1057 ret = qla2x00_lip_reset(ha);
1058 if (ret != QLA_SUCCESS) {
1059 DEBUG2_3(printk("%s(%ld): bus_reset failed: "
1060 "lip_reset=%d.\n", __func__, ha->host_no, ret));
1061 }
1062 qla2x00_wait_for_loop_ready(ha);
1045 } 1063 }
1046 1064
1047 if (status == QLA_SUCCESS && ha->flags.enable_target_reset) { 1065 if (ha->flags.enable_target_reset) {
1048 list_for_each_entry(fcport, &ha->fcports, list) { 1066 list_for_each_entry(fcport, &ha->fcports, list) {
1049 if (fcport->port_type != FCT_TARGET) 1067 if (fcport->port_type != FCT_TARGET)
1050 continue; 1068 continue;
1051 1069
1052 status = qla2x00_device_reset(ha, fcport); 1070 ret = qla2x00_device_reset(ha, fcport);
1053 if (status != QLA_SUCCESS) 1071 if (ret != QLA_SUCCESS) {
1054 break; 1072 DEBUG2_3(printk("%s(%ld): bus_reset failed: "
1073 "target_reset=%d d_id=%x.\n", __func__,
1074 ha->host_no, ret, fcport->d_id.b24));
1075 }
1055 } 1076 }
1056 } 1077 }
1057 1078
1058 if (status == QLA_SUCCESS &&
1059 ((!ha->flags.enable_target_reset &&
1060 !ha->flags.enable_lip_reset) ||
1061 ha->flags.enable_lip_full_login)) {
1062
1063 status = qla2x00_full_login_lip(ha);
1064 }
1065
1066 /* Issue marker command only when we are going to start the I/O */ 1079 /* Issue marker command only when we are going to start the I/O */
1067 ha->marker_needed = 1; 1080 ha->marker_needed = 1;
1068 1081
1069 if (status) { 1082 return QLA_SUCCESS;
1070 /* Empty */
1071 DEBUG2_3(printk("%s(%ld): **** FAILED ****\n",
1072 __func__,
1073 ha->host_no));
1074 } else {
1075 /* Empty */
1076 DEBUG3(printk("%s(%ld): exiting normally.\n",
1077 __func__,
1078 ha->host_no));
1079 }
1080
1081 return(status);
1082} 1083}
1083 1084
1084/* 1085/*
@@ -1413,7 +1414,9 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
1413 1414
1414 sht = &qla2x00_driver_template; 1415 sht = &qla2x00_driver_template;
1415 if (pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422 || 1416 if (pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422 ||
1416 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432) 1417 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432 ||
1418 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP5422 ||
1419 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP5432)
1417 sht = &qla24xx_driver_template; 1420 sht = &qla24xx_driver_template;
1418 host = scsi_host_alloc(sht, sizeof(scsi_qla_host_t)); 1421 host = scsi_host_alloc(sht, sizeof(scsi_qla_host_t));
1419 if (host == NULL) { 1422 if (host == NULL) {
diff --git a/drivers/scsi/qla2xxx/qla_version.h b/drivers/scsi/qla2xxx/qla_version.h
index 1fa0bce6b24e..459e0d6bd2b4 100644
--- a/drivers/scsi/qla2xxx/qla_version.h
+++ b/drivers/scsi/qla2xxx/qla_version.h
@@ -7,7 +7,7 @@
7/* 7/*
8 * Driver version 8 * Driver version
9 */ 9 */
10#define QLA2XXX_VERSION "8.01.07-k3" 10#define QLA2XXX_VERSION "8.01.07-k4"
11 11
12#define QLA_DRIVER_MAJOR_VER 8 12#define QLA_DRIVER_MAJOR_VER 8
13#define QLA_DRIVER_MINOR_VER 1 13#define QLA_DRIVER_MINOR_VER 1
diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h
index 4249e52a5592..6f4cf2dd2f4a 100644
--- a/drivers/scsi/qla4xxx/ql4_def.h
+++ b/drivers/scsi/qla4xxx/ql4_def.h
@@ -418,7 +418,6 @@ struct scsi_qla_host {
418 * concurrently. 418 * concurrently.
419 */ 419 */
420 struct mutex mbox_sem; 420 struct mutex mbox_sem;
421 wait_queue_head_t mailbox_wait_queue;
422 421
423 /* temporary mailbox status registers */ 422 /* temporary mailbox status registers */
424 volatile uint8_t mbox_status_count; 423 volatile uint8_t mbox_status_count;
diff --git a/drivers/scsi/qla4xxx/ql4_glbl.h b/drivers/scsi/qla4xxx/ql4_glbl.h
index 2122967bbf0b..e021eb5db2b2 100644
--- a/drivers/scsi/qla4xxx/ql4_glbl.h
+++ b/drivers/scsi/qla4xxx/ql4_glbl.h
@@ -76,4 +76,5 @@ int qla4xxx_process_ddb_changed(struct scsi_qla_host * ha,
76extern int ql4xextended_error_logging; 76extern int ql4xextended_error_logging;
77extern int ql4xdiscoverywait; 77extern int ql4xdiscoverywait;
78extern int ql4xdontresethba; 78extern int ql4xdontresethba;
79extern int ql4_mod_unload;
79#endif /* _QLA4x_GBL_H */ 80#endif /* _QLA4x_GBL_H */
diff --git a/drivers/scsi/qla4xxx/ql4_init.c b/drivers/scsi/qla4xxx/ql4_init.c
index cc210f297a78..b907b06d72ab 100644
--- a/drivers/scsi/qla4xxx/ql4_init.c
+++ b/drivers/scsi/qla4xxx/ql4_init.c
@@ -958,25 +958,25 @@ static int qla4xxx_start_firmware_from_flash(struct scsi_qla_host *ha)
958 return status; 958 return status;
959} 959}
960 960
961int ql4xxx_lock_drvr_wait(struct scsi_qla_host *a) 961int ql4xxx_lock_drvr_wait(struct scsi_qla_host *ha)
962{ 962{
963#define QL4_LOCK_DRVR_WAIT 300 963#define QL4_LOCK_DRVR_WAIT 30
964#define QL4_LOCK_DRVR_SLEEP 100 964#define QL4_LOCK_DRVR_SLEEP 1
965 965
966 int drvr_wait = QL4_LOCK_DRVR_WAIT; 966 int drvr_wait = QL4_LOCK_DRVR_WAIT;
967 while (drvr_wait) { 967 while (drvr_wait) {
968 if (ql4xxx_lock_drvr(a) == 0) { 968 if (ql4xxx_lock_drvr(ha) == 0) {
969 msleep(QL4_LOCK_DRVR_SLEEP); 969 ssleep(QL4_LOCK_DRVR_SLEEP);
970 if (drvr_wait) { 970 if (drvr_wait) {
971 DEBUG2(printk("scsi%ld: %s: Waiting for " 971 DEBUG2(printk("scsi%ld: %s: Waiting for "
972 "Global Init Semaphore...n", 972 "Global Init Semaphore(%d)...n",
973 a->host_no, 973 ha->host_no,
974 __func__)); 974 __func__, drvr_wait));
975 } 975 }
976 drvr_wait -= QL4_LOCK_DRVR_SLEEP; 976 drvr_wait -= QL4_LOCK_DRVR_SLEEP;
977 } else { 977 } else {
978 DEBUG2(printk("scsi%ld: %s: Global Init Semaphore " 978 DEBUG2(printk("scsi%ld: %s: Global Init Semaphore "
979 "acquired.n", a->host_no, __func__)); 979 "acquired.n", ha->host_no, __func__));
980 return QLA_SUCCESS; 980 return QLA_SUCCESS;
981 } 981 }
982 } 982 }
diff --git a/drivers/scsi/qla4xxx/ql4_isr.c b/drivers/scsi/qla4xxx/ql4_isr.c
index ef975e0dc87f..35b9e36a0e8d 100644
--- a/drivers/scsi/qla4xxx/ql4_isr.c
+++ b/drivers/scsi/qla4xxx/ql4_isr.c
@@ -433,7 +433,6 @@ static void qla4xxx_isr_decode_mailbox(struct scsi_qla_host * ha,
433 readl(&ha->reg->mailbox[i]); 433 readl(&ha->reg->mailbox[i]);
434 434
435 set_bit(AF_MBOX_COMMAND_DONE, &ha->flags); 435 set_bit(AF_MBOX_COMMAND_DONE, &ha->flags);
436 wake_up(&ha->mailbox_wait_queue);
437 } 436 }
438 } else if (mbox_status >> 12 == MBOX_ASYNC_EVENT_STATUS) { 437 } else if (mbox_status >> 12 == MBOX_ASYNC_EVENT_STATUS) {
439 /* Immediately process the AENs that don't require much work. 438 /* Immediately process the AENs that don't require much work.
@@ -686,7 +685,8 @@ irqreturn_t qla4xxx_intr_handler(int irq, void *dev_id)
686 &ha->reg->ctrl_status); 685 &ha->reg->ctrl_status);
687 readl(&ha->reg->ctrl_status); 686 readl(&ha->reg->ctrl_status);
688 687
689 set_bit(DPC_RESET_HA_INTR, &ha->dpc_flags); 688 if (!ql4_mod_unload)
689 set_bit(DPC_RESET_HA_INTR, &ha->dpc_flags);
690 690
691 break; 691 break;
692 } else if (intr_status & INTR_PENDING) { 692 } else if (intr_status & INTR_PENDING) {
diff --git a/drivers/scsi/qla4xxx/ql4_mbx.c b/drivers/scsi/qla4xxx/ql4_mbx.c
index b721dc5dd711..7f28657eef3f 100644
--- a/drivers/scsi/qla4xxx/ql4_mbx.c
+++ b/drivers/scsi/qla4xxx/ql4_mbx.c
@@ -29,18 +29,30 @@ int qla4xxx_mailbox_command(struct scsi_qla_host *ha, uint8_t inCount,
29 u_long wait_count; 29 u_long wait_count;
30 uint32_t intr_status; 30 uint32_t intr_status;
31 unsigned long flags = 0; 31 unsigned long flags = 0;
32 DECLARE_WAITQUEUE(wait, current);
33
34 mutex_lock(&ha->mbox_sem);
35
36 /* Mailbox code active */
37 set_bit(AF_MBOX_COMMAND, &ha->flags);
38 32
39 /* Make sure that pointers are valid */ 33 /* Make sure that pointers are valid */
40 if (!mbx_cmd || !mbx_sts) { 34 if (!mbx_cmd || !mbx_sts) {
41 DEBUG2(printk("scsi%ld: %s: Invalid mbx_cmd or mbx_sts " 35 DEBUG2(printk("scsi%ld: %s: Invalid mbx_cmd or mbx_sts "
42 "pointer\n", ha->host_no, __func__)); 36 "pointer\n", ha->host_no, __func__));
43 goto mbox_exit; 37 return status;
38 }
39 /* Mailbox code active */
40 wait_count = MBOX_TOV * 100;
41
42 while (wait_count--) {
43 mutex_lock(&ha->mbox_sem);
44 if (!test_bit(AF_MBOX_COMMAND, &ha->flags)) {
45 set_bit(AF_MBOX_COMMAND, &ha->flags);
46 mutex_unlock(&ha->mbox_sem);
47 break;
48 }
49 mutex_unlock(&ha->mbox_sem);
50 if (!wait_count) {
51 DEBUG2(printk("scsi%ld: %s: mbox_sem failed\n",
52 ha->host_no, __func__));
53 return status;
54 }
55 msleep(10);
44 } 56 }
45 57
46 /* To prevent overwriting mailbox registers for a command that has 58 /* To prevent overwriting mailbox registers for a command that has
@@ -73,8 +85,6 @@ int qla4xxx_mailbox_command(struct scsi_qla_host *ha, uint8_t inCount,
73 spin_unlock_irqrestore(&ha->hardware_lock, flags); 85 spin_unlock_irqrestore(&ha->hardware_lock, flags);
74 86
75 /* Wait for completion */ 87 /* Wait for completion */
76 set_current_state(TASK_UNINTERRUPTIBLE);
77 add_wait_queue(&ha->mailbox_wait_queue, &wait);
78 88
79 /* 89 /*
80 * If we don't want status, don't wait for the mailbox command to 90 * If we don't want status, don't wait for the mailbox command to
@@ -83,8 +93,6 @@ int qla4xxx_mailbox_command(struct scsi_qla_host *ha, uint8_t inCount,
83 */ 93 */
84 if (outCount == 0) { 94 if (outCount == 0) {
85 status = QLA_SUCCESS; 95 status = QLA_SUCCESS;
86 set_current_state(TASK_RUNNING);
87 remove_wait_queue(&ha->mailbox_wait_queue, &wait);
88 goto mbox_exit; 96 goto mbox_exit;
89 } 97 }
90 /* Wait for command to complete */ 98 /* Wait for command to complete */
@@ -108,8 +116,6 @@ int qla4xxx_mailbox_command(struct scsi_qla_host *ha, uint8_t inCount,
108 spin_unlock_irqrestore(&ha->hardware_lock, flags); 116 spin_unlock_irqrestore(&ha->hardware_lock, flags);
109 msleep(10); 117 msleep(10);
110 } 118 }
111 set_current_state(TASK_RUNNING);
112 remove_wait_queue(&ha->mailbox_wait_queue, &wait);
113 119
114 /* Check for mailbox timeout. */ 120 /* Check for mailbox timeout. */
115 if (!test_bit(AF_MBOX_COMMAND_DONE, &ha->flags)) { 121 if (!test_bit(AF_MBOX_COMMAND_DONE, &ha->flags)) {
@@ -155,9 +161,10 @@ int qla4xxx_mailbox_command(struct scsi_qla_host *ha, uint8_t inCount,
155 spin_unlock_irqrestore(&ha->hardware_lock, flags); 161 spin_unlock_irqrestore(&ha->hardware_lock, flags);
156 162
157mbox_exit: 163mbox_exit:
164 mutex_lock(&ha->mbox_sem);
158 clear_bit(AF_MBOX_COMMAND, &ha->flags); 165 clear_bit(AF_MBOX_COMMAND, &ha->flags);
159 clear_bit(AF_MBOX_COMMAND_DONE, &ha->flags);
160 mutex_unlock(&ha->mbox_sem); 166 mutex_unlock(&ha->mbox_sem);
167 clear_bit(AF_MBOX_COMMAND_DONE, &ha->flags);
161 168
162 return status; 169 return status;
163} 170}
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index 9ef693c8809a..81fb7bd44f01 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -40,6 +40,8 @@ MODULE_PARM_DESC(ql4xextended_error_logging,
40 "Option to enable extended error logging, " 40 "Option to enable extended error logging, "
41 "Default is 0 - no logging, 1 - debug logging"); 41 "Default is 0 - no logging, 1 - debug logging");
42 42
43int ql4_mod_unload = 0;
44
43/* 45/*
44 * SCSI host template entry points 46 * SCSI host template entry points
45 */ 47 */
@@ -422,6 +424,9 @@ static int qla4xxx_queuecommand(struct scsi_cmnd *cmd,
422 goto qc_host_busy; 424 goto qc_host_busy;
423 } 425 }
424 426
427 if (test_bit(DPC_RESET_HA_INTR, &ha->dpc_flags))
428 goto qc_host_busy;
429
425 spin_unlock_irq(ha->host->host_lock); 430 spin_unlock_irq(ha->host->host_lock);
426 431
427 srb = qla4xxx_get_new_srb(ha, ddb_entry, cmd, done); 432 srb = qla4xxx_get_new_srb(ha, ddb_entry, cmd, done);
@@ -707,16 +712,12 @@ static int qla4xxx_cmd_wait(struct scsi_qla_host *ha)
707 return stat; 712 return stat;
708} 713}
709 714
710/** 715static void qla4xxx_hw_reset(struct scsi_qla_host *ha)
711 * qla4xxx_soft_reset - performs soft reset.
712 * @ha: Pointer to host adapter structure.
713 **/
714int qla4xxx_soft_reset(struct scsi_qla_host *ha)
715{ 716{
716 uint32_t max_wait_time;
717 unsigned long flags = 0;
718 int status = QLA_ERROR;
719 uint32_t ctrl_status; 717 uint32_t ctrl_status;
718 unsigned long flags = 0;
719
720 DEBUG2(printk(KERN_ERR "scsi%ld: %s\n", ha->host_no, __func__));
720 721
721 spin_lock_irqsave(&ha->hardware_lock, flags); 722 spin_lock_irqsave(&ha->hardware_lock, flags);
722 723
@@ -733,6 +734,20 @@ int qla4xxx_soft_reset(struct scsi_qla_host *ha)
733 readl(&ha->reg->ctrl_status); 734 readl(&ha->reg->ctrl_status);
734 735
735 spin_unlock_irqrestore(&ha->hardware_lock, flags); 736 spin_unlock_irqrestore(&ha->hardware_lock, flags);
737}
738
739/**
740 * qla4xxx_soft_reset - performs soft reset.
741 * @ha: Pointer to host adapter structure.
742 **/
743int qla4xxx_soft_reset(struct scsi_qla_host *ha)
744{
745 uint32_t max_wait_time;
746 unsigned long flags = 0;
747 int status = QLA_ERROR;
748 uint32_t ctrl_status;
749
750 qla4xxx_hw_reset(ha);
736 751
737 /* Wait until the Network Reset Intr bit is cleared */ 752 /* Wait until the Network Reset Intr bit is cleared */
738 max_wait_time = RESET_INTR_TOV; 753 max_wait_time = RESET_INTR_TOV;
@@ -966,10 +981,12 @@ static void qla4xxx_do_dpc(struct work_struct *work)
966 struct scsi_qla_host *ha = 981 struct scsi_qla_host *ha =
967 container_of(work, struct scsi_qla_host, dpc_work); 982 container_of(work, struct scsi_qla_host, dpc_work);
968 struct ddb_entry *ddb_entry, *dtemp; 983 struct ddb_entry *ddb_entry, *dtemp;
984 int status = QLA_ERROR;
969 985
970 DEBUG2(printk("scsi%ld: %s: DPC handler waking up." 986 DEBUG2(printk("scsi%ld: %s: DPC handler waking up."
971 "flags = 0x%08lx, dpc_flags = 0x%08lx\n", 987 "flags = 0x%08lx, dpc_flags = 0x%08lx ctrl_stat = 0x%08x\n",
972 ha->host_no, __func__, ha->flags, ha->dpc_flags)); 988 ha->host_no, __func__, ha->flags, ha->dpc_flags,
989 readw(&ha->reg->ctrl_status)));
973 990
974 /* Initialization not yet finished. Don't do anything yet. */ 991 /* Initialization not yet finished. Don't do anything yet. */
975 if (!test_bit(AF_INIT_DONE, &ha->flags)) 992 if (!test_bit(AF_INIT_DONE, &ha->flags))
@@ -983,31 +1000,28 @@ static void qla4xxx_do_dpc(struct work_struct *work)
983 test_bit(DPC_RESET_HA, &ha->dpc_flags)) 1000 test_bit(DPC_RESET_HA, &ha->dpc_flags))
984 qla4xxx_recover_adapter(ha, PRESERVE_DDB_LIST); 1001 qla4xxx_recover_adapter(ha, PRESERVE_DDB_LIST);
985 1002
986 if (test_and_clear_bit(DPC_RESET_HA_INTR, &ha->dpc_flags)) { 1003 if (test_bit(DPC_RESET_HA_INTR, &ha->dpc_flags)) {
987 uint8_t wait_time = RESET_INTR_TOV; 1004 uint8_t wait_time = RESET_INTR_TOV;
988 unsigned long flags = 0;
989
990 qla4xxx_flush_active_srbs(ha);
991 1005
992 spin_lock_irqsave(&ha->hardware_lock, flags);
993 while ((readw(&ha->reg->ctrl_status) & 1006 while ((readw(&ha->reg->ctrl_status) &
994 (CSR_SOFT_RESET | CSR_FORCE_SOFT_RESET)) != 0) { 1007 (CSR_SOFT_RESET | CSR_FORCE_SOFT_RESET)) != 0) {
995 if (--wait_time == 0) 1008 if (--wait_time == 0)
996 break; 1009 break;
997
998 spin_unlock_irqrestore(&ha->hardware_lock,
999 flags);
1000
1001 msleep(1000); 1010 msleep(1000);
1002
1003 spin_lock_irqsave(&ha->hardware_lock, flags);
1004 } 1011 }
1005 spin_unlock_irqrestore(&ha->hardware_lock, flags);
1006
1007 if (wait_time == 0) 1012 if (wait_time == 0)
1008 DEBUG2(printk("scsi%ld: %s: SR|FSR " 1013 DEBUG2(printk("scsi%ld: %s: SR|FSR "
1009 "bit not cleared-- resetting\n", 1014 "bit not cleared-- resetting\n",
1010 ha->host_no, __func__)); 1015 ha->host_no, __func__));
1016 qla4xxx_flush_active_srbs(ha);
1017 if (ql4xxx_lock_drvr_wait(ha) == QLA_SUCCESS) {
1018 qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS);
1019 status = qla4xxx_initialize_adapter(ha,
1020 PRESERVE_DDB_LIST);
1021 }
1022 clear_bit(DPC_RESET_HA_INTR, &ha->dpc_flags);
1023 if (status == QLA_SUCCESS)
1024 qla4xxx_enable_intrs(ha);
1011 } 1025 }
1012 } 1026 }
1013 1027
@@ -1062,7 +1076,7 @@ static void qla4xxx_free_adapter(struct scsi_qla_host *ha)
1062 1076
1063 /* Issue Soft Reset to put firmware in unknown state */ 1077 /* Issue Soft Reset to put firmware in unknown state */
1064 if (ql4xxx_lock_drvr_wait(ha) == QLA_SUCCESS) 1078 if (ql4xxx_lock_drvr_wait(ha) == QLA_SUCCESS)
1065 qla4xxx_soft_reset(ha); 1079 qla4xxx_hw_reset(ha);
1066 1080
1067 /* Remove timer thread, if present */ 1081 /* Remove timer thread, if present */
1068 if (ha->timer_active) 1082 if (ha->timer_active)
@@ -1198,7 +1212,6 @@ static int __devinit qla4xxx_probe_adapter(struct pci_dev *pdev,
1198 INIT_LIST_HEAD(&ha->free_srb_q); 1212 INIT_LIST_HEAD(&ha->free_srb_q);
1199 1213
1200 mutex_init(&ha->mbox_sem); 1214 mutex_init(&ha->mbox_sem);
1201 init_waitqueue_head(&ha->mailbox_wait_queue);
1202 1215
1203 spin_lock_init(&ha->hardware_lock); 1216 spin_lock_init(&ha->hardware_lock);
1204 1217
@@ -1665,6 +1678,7 @@ no_srp_cache:
1665 1678
1666static void __exit qla4xxx_module_exit(void) 1679static void __exit qla4xxx_module_exit(void)
1667{ 1680{
1681 ql4_mod_unload = 1;
1668 pci_unregister_driver(&qla4xxx_pci_driver); 1682 pci_unregister_driver(&qla4xxx_pci_driver);
1669 iscsi_unregister_transport(&qla4xxx_iscsi_transport); 1683 iscsi_unregister_transport(&qla4xxx_iscsi_transport);
1670 kmem_cache_destroy(srb_cachep); 1684 kmem_cache_destroy(srb_cachep);
diff --git a/drivers/scsi/qla4xxx/ql4_version.h b/drivers/scsi/qla4xxx/ql4_version.h
index 454e19c8ad68..e5183a697d1f 100644
--- a/drivers/scsi/qla4xxx/ql4_version.h
+++ b/drivers/scsi/qla4xxx/ql4_version.h
@@ -5,4 +5,4 @@
5 * See LICENSE.qla4xxx for copyright and licensing details. 5 * See LICENSE.qla4xxx for copyright and licensing details.
6 */ 6 */
7 7
8#define QLA4XXX_DRIVER_VERSION "5.00.07-k" 8#define QLA4XXX_DRIVER_VERSION "5.00.07-k1"
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 14e635aa44ce..96b7cbd746a8 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -133,12 +133,10 @@ struct async_scan_data {
133/** 133/**
134 * scsi_complete_async_scans - Wait for asynchronous scans to complete 134 * scsi_complete_async_scans - Wait for asynchronous scans to complete
135 * 135 *
136 * Asynchronous scans add themselves to the scanning_hosts list. Once 136 * When this function returns, any host which started scanning before
137 * that list is empty, we know that the scans are complete. Rather than 137 * this function was called will have finished its scan. Hosts which
138 * waking up periodically to check the state of the list, we pretend to be 138 * started scanning after this function was called may or may not have
139 * a scanning task by adding ourselves at the end of the list and going to 139 * finished.
140 * sleep. When the task before us wakes us up, we take ourselves off the
141 * list and return.
142 */ 140 */
143int scsi_complete_async_scans(void) 141int scsi_complete_async_scans(void)
144{ 142{
@@ -171,6 +169,11 @@ int scsi_complete_async_scans(void)
171 169
172 spin_lock(&async_scan_lock); 170 spin_lock(&async_scan_lock);
173 list_del(&data->list); 171 list_del(&data->list);
172 if (!list_empty(&scanning_hosts)) {
173 struct async_scan_data *next = list_entry(scanning_hosts.next,
174 struct async_scan_data, list);
175 complete(&next->prev_finished);
176 }
174 done: 177 done:
175 spin_unlock(&async_scan_lock); 178 spin_unlock(&async_scan_lock);
176 179
@@ -739,6 +742,14 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
739 sdev->no_uld_attach = 1; 742 sdev->no_uld_attach = 1;
740 743
741 switch (sdev->type = (inq_result[0] & 0x1f)) { 744 switch (sdev->type = (inq_result[0] & 0x1f)) {
745 case TYPE_RBC:
746 /* RBC devices can return SCSI-3 compliance and yet
747 * still not support REPORT LUNS, so make them act as
748 * BLIST_NOREPORTLUN unless BLIST_REPORTLUN2 is
749 * specifically set */
750 if ((*bflags & BLIST_REPORTLUN2) == 0)
751 *bflags |= BLIST_NOREPORTLUN;
752 /* fall through */
742 case TYPE_TAPE: 753 case TYPE_TAPE:
743 case TYPE_DISK: 754 case TYPE_DISK:
744 case TYPE_PRINTER: 755 case TYPE_PRINTER:
@@ -749,11 +760,17 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
749 case TYPE_ENCLOSURE: 760 case TYPE_ENCLOSURE:
750 case TYPE_COMM: 761 case TYPE_COMM:
751 case TYPE_RAID: 762 case TYPE_RAID:
752 case TYPE_RBC:
753 sdev->writeable = 1; 763 sdev->writeable = 1;
754 break; 764 break;
755 case TYPE_WORM:
756 case TYPE_ROM: 765 case TYPE_ROM:
766 /* MMC devices can return SCSI-3 compliance and yet
767 * still not support REPORT LUNS, so make them act as
768 * BLIST_NOREPORTLUN unless BLIST_REPORTLUN2 is
769 * specifically set */
770 if ((*bflags & BLIST_REPORTLUN2) == 0)
771 *bflags |= BLIST_NOREPORTLUN;
772 /* fall through */
773 case TYPE_WORM:
757 sdev->writeable = 0; 774 sdev->writeable = 0;
758 break; 775 break;
759 default: 776 default:
@@ -1436,6 +1453,12 @@ struct scsi_device *__scsi_add_device(struct Scsi_Host *shost, uint channel,
1436 struct device *parent = &shost->shost_gendev; 1453 struct device *parent = &shost->shost_gendev;
1437 struct scsi_target *starget; 1454 struct scsi_target *starget;
1438 1455
1456 if (strncmp(scsi_scan_type, "none", 4) == 0)
1457 return ERR_PTR(-ENODEV);
1458
1459 if (!shost->async_scan)
1460 scsi_complete_async_scans();
1461
1439 starget = scsi_alloc_target(parent, channel, id); 1462 starget = scsi_alloc_target(parent, channel, id);
1440 if (!starget) 1463 if (!starget)
1441 return ERR_PTR(-ENOMEM); 1464 return ERR_PTR(-ENOMEM);
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index 9c22f1342715..ce0d14af33c8 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -1416,7 +1416,7 @@ static __init int iscsi_transport_init(void)
1416{ 1416{
1417 int err; 1417 int err;
1418 1418
1419 printk(KERN_INFO "Loading iSCSI transport class v%s.", 1419 printk(KERN_INFO "Loading iSCSI transport class v%s.\n",
1420 ISCSI_TRANSPORT_VERSION); 1420 ISCSI_TRANSPORT_VERSION);
1421 1421
1422 err = class_register(&iscsi_transport_class); 1422 err = class_register(&iscsi_transport_class);
diff --git a/drivers/scsi/scsi_transport_spi.c b/drivers/scsi/scsi_transport_spi.c
index 3fded4831460..014d7fea1ff3 100644
--- a/drivers/scsi/scsi_transport_spi.c
+++ b/drivers/scsi/scsi_transport_spi.c
@@ -122,7 +122,7 @@ static int spi_execute(struct scsi_device *sdev, const void *cmd,
122 if (!sshdr) 122 if (!sshdr)
123 sshdr = &sshdr_tmp; 123 sshdr = &sshdr_tmp;
124 124
125 if (scsi_normalize_sense(sense, sizeof(*sense), 125 if (scsi_normalize_sense(sense, SCSI_SENSE_BUFFERSIZE,
126 sshdr) 126 sshdr)
127 && sshdr->sense_key == UNIT_ATTENTION) 127 && sshdr->sense_key == UNIT_ATTENTION)
128 continue; 128 continue;
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 978bfc1e0c6a..b781a90d6699 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1647,16 +1647,6 @@ static int sd_probe(struct device *dev)
1647 if (error) 1647 if (error)
1648 goto out_put; 1648 goto out_put;
1649 1649
1650 class_device_initialize(&sdkp->cdev);
1651 sdkp->cdev.dev = &sdp->sdev_gendev;
1652 sdkp->cdev.class = &sd_disk_class;
1653 strncpy(sdkp->cdev.class_id, sdp->sdev_gendev.bus_id, BUS_ID_SIZE);
1654
1655 if (class_device_add(&sdkp->cdev))
1656 goto out_put;
1657
1658 get_device(&sdp->sdev_gendev);
1659
1660 sdkp->device = sdp; 1650 sdkp->device = sdp;
1661 sdkp->driver = &sd_template; 1651 sdkp->driver = &sd_template;
1662 sdkp->disk = gd; 1652 sdkp->disk = gd;
@@ -1670,6 +1660,16 @@ static int sd_probe(struct device *dev)
1670 sdp->timeout = SD_MOD_TIMEOUT; 1660 sdp->timeout = SD_MOD_TIMEOUT;
1671 } 1661 }
1672 1662
1663 class_device_initialize(&sdkp->cdev);
1664 sdkp->cdev.dev = &sdp->sdev_gendev;
1665 sdkp->cdev.class = &sd_disk_class;
1666 strncpy(sdkp->cdev.class_id, sdp->sdev_gendev.bus_id, BUS_ID_SIZE);
1667
1668 if (class_device_add(&sdkp->cdev))
1669 goto out_put;
1670
1671 get_device(&sdp->sdev_gendev);
1672
1673 gd->major = sd_major((index & 0xf0) >> 4); 1673 gd->major = sd_major((index & 0xf0) >> 4);
1674 gd->first_minor = ((index & 0xf) << 4) | (index & 0xfff00); 1674 gd->first_minor = ((index & 0xf) << 4) | (index & 0xfff00);
1675 gd->minors = 16; 1675 gd->minors = 16;
diff --git a/drivers/scsi/seagate.c b/drivers/scsi/seagate.c
index 5ffec2721b28..ff62e9708e1c 100644
--- a/drivers/scsi/seagate.c
+++ b/drivers/scsi/seagate.c
@@ -114,6 +114,7 @@
114#define DPRINTK( when, msg... ) do { if ( (DEBUG & (when)) == (when) ) printk( msg ); } while (0) 114#define DPRINTK( when, msg... ) do { if ( (DEBUG & (when)) == (when) ) printk( msg ); } while (0)
115#else 115#else
116#define DPRINTK( when, msg... ) do { } while (0) 116#define DPRINTK( when, msg... ) do { } while (0)
117#define DEBUG 0
117#endif 118#endif
118#define DANY( msg... ) DPRINTK( 0xffff, msg ); 119#define DANY( msg... ) DPRINTK( 0xffff, msg );
119 120
@@ -523,7 +524,7 @@ int __init seagate_st0x_detect (struct scsi_host_template * tpnt)
523#ifdef ARBITRATE 524#ifdef ARBITRATE
524 " ARBITRATE" 525 " ARBITRATE"
525#endif 526#endif
526#ifdef DEBUG 527#if DEBUG
527 " DEBUG" 528 " DEBUG"
528#endif 529#endif
529#ifdef FAST 530#ifdef FAST
@@ -733,7 +734,7 @@ static int internal_command (unsigned char target, unsigned char lun,
733 unsigned char *data = NULL; 734 unsigned char *data = NULL;
734 struct scatterlist *buffer = NULL; 735 struct scatterlist *buffer = NULL;
735 int clock, temp, nobuffs = 0, done = 0, len = 0; 736 int clock, temp, nobuffs = 0, done = 0, len = 0;
736#ifdef DEBUG 737#if DEBUG
737 int transfered = 0, phase = 0, newphase; 738 int transfered = 0, phase = 0, newphase;
738#endif 739#endif
739 register unsigned char status_read; 740 register unsigned char status_read;
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index fae6e95a6298..89e9b36b1788 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -468,7 +468,7 @@ static int sr_block_ioctl(struct inode *inode, struct file *file, unsigned cmd,
468 } 468 }
469 469
470 ret = cdrom_ioctl(file, &cd->cdi, inode, cmd, arg); 470 ret = cdrom_ioctl(file, &cd->cdi, inode, cmd, arg);
471 if (ret != ENOSYS) 471 if (ret != -ENOSYS)
472 return ret; 472 return ret;
473 473
474 /* 474 /*
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index e016e0906e1a..488ec7948a57 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -2816,15 +2816,18 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon
2816 2816
2817 if (cmd_in == MTWEOF && 2817 if (cmd_in == MTWEOF &&
2818 cmdstatp->have_sense && 2818 cmdstatp->have_sense &&
2819 (cmdstatp->flags & SENSE_EOM) && 2819 (cmdstatp->flags & SENSE_EOM)) {
2820 (cmdstatp->sense_hdr.sense_key == NO_SENSE || 2820 if (cmdstatp->sense_hdr.sense_key == NO_SENSE ||
2821 cmdstatp->sense_hdr.sense_key == RECOVERED_ERROR) && 2821 cmdstatp->sense_hdr.sense_key == RECOVERED_ERROR) {
2822 undone == 0) { 2822 ioctl_result = 0; /* EOF(s) written successfully at EOM */
2823 ioctl_result = 0; /* EOF written successfully at EOM */ 2823 STps->eof = ST_NOEOF;
2824 if (fileno >= 0) 2824 } else { /* Writing EOF(s) failed */
2825 fileno++; 2825 if (fileno >= 0)
2826 fileno -= undone;
2827 if (undone < arg)
2828 STps->eof = ST_NOEOF;
2829 }
2826 STps->drv_file = fileno; 2830 STps->drv_file = fileno;
2827 STps->eof = ST_NOEOF;
2828 } else if ((cmd_in == MTFSF) || (cmd_in == MTFSFM)) { 2831 } else if ((cmd_in == MTFSF) || (cmd_in == MTFSFM)) {
2829 if (fileno >= 0) 2832 if (fileno >= 0)
2830 STps->drv_file = fileno - undone; 2833 STps->drv_file = fileno - undone;
diff --git a/drivers/serial/amba-pl010.c b/drivers/serial/amba-pl010.c
index 61db6973755a..f69bd097166e 100644
--- a/drivers/serial/amba-pl010.c
+++ b/drivers/serial/amba-pl010.c
@@ -589,6 +589,8 @@ static int __init pl010_console_setup(struct console *co, char *options)
589 */ 589 */
590 if (co->index >= UART_NR) 590 if (co->index >= UART_NR)
591 co->index = 0; 591 co->index = 0;
592 if (!amba_ports[co->index])
593 return -ENODEV;
592 port = &amba_ports[co->index]->port; 594 port = &amba_ports[co->index]->port;
593 595
594 if (options) 596 if (options)
diff --git a/drivers/serial/amba-pl011.c b/drivers/serial/amba-pl011.c
index 9a3b374b2a08..44639e71372a 100644
--- a/drivers/serial/amba-pl011.c
+++ b/drivers/serial/amba-pl011.c
@@ -661,6 +661,8 @@ static int __init pl011_console_setup(struct console *co, char *options)
661 if (co->index >= UART_NR) 661 if (co->index >= UART_NR)
662 co->index = 0; 662 co->index = 0;
663 uap = amba_ports[co->index]; 663 uap = amba_ports[co->index];
664 if (!uap)
665 return -ENODEV;
664 666
665 uap->port.uartclk = clk_get_rate(uap->clk); 667 uap->port.uartclk = clk_get_rate(uap->clk);
666 668
diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c
index ed7f7209ea59..881f886b91c6 100644
--- a/drivers/serial/atmel_serial.c
+++ b/drivers/serial/atmel_serial.c
@@ -689,9 +689,9 @@ static void __devinit atmel_init_port(struct atmel_uart_port *atmel_port, struct
689 struct atmel_uart_data *data = pdev->dev.platform_data; 689 struct atmel_uart_data *data = pdev->dev.platform_data;
690 690
691 port->iotype = UPIO_MEM; 691 port->iotype = UPIO_MEM;
692 port->flags = UPF_BOOT_AUTOCONF; 692 port->flags = UPF_BOOT_AUTOCONF;
693 port->ops = &atmel_pops; 693 port->ops = &atmel_pops;
694 port->fifosize = 1; 694 port->fifosize = 1;
695 port->line = pdev->id; 695 port->line = pdev->id;
696 port->dev = &pdev->dev; 696 port->dev = &pdev->dev;
697 697
@@ -890,7 +890,6 @@ static int atmel_serial_suspend(struct platform_device *pdev, pm_message_t state
890 if (device_may_wakeup(&pdev->dev) && !at91_suspend_entering_slow_clock()) 890 if (device_may_wakeup(&pdev->dev) && !at91_suspend_entering_slow_clock())
891 enable_irq_wake(port->irq); 891 enable_irq_wake(port->irq);
892 else { 892 else {
893 disable_irq_wake(port->irq);
894 uart_suspend_port(&atmel_uart, port); 893 uart_suspend_port(&atmel_uart, port);
895 atmel_port->suspended = 1; 894 atmel_port->suspended = 1;
896 } 895 }
@@ -907,6 +906,8 @@ static int atmel_serial_resume(struct platform_device *pdev)
907 uart_resume_port(&atmel_uart, port); 906 uart_resume_port(&atmel_uart, port);
908 atmel_port->suspended = 0; 907 atmel_port->suspended = 0;
909 } 908 }
909 else
910 disable_irq_wake(port->irq);
910 911
911 return 0; 912 return 0;
912} 913}
diff --git a/drivers/serial/atmel_serial.h b/drivers/serial/atmel_serial.h
index fe1763b2a6d5..11b44360e108 100644
--- a/drivers/serial/atmel_serial.h
+++ b/drivers/serial/atmel_serial.h
@@ -106,7 +106,7 @@
106#define ATMEL_US_CSR 0x14 /* Channel Status Register */ 106#define ATMEL_US_CSR 0x14 /* Channel Status Register */
107#define ATMEL_US_RHR 0x18 /* Receiver Holding Register */ 107#define ATMEL_US_RHR 0x18 /* Receiver Holding Register */
108#define ATMEL_US_THR 0x1c /* Transmitter Holding Register */ 108#define ATMEL_US_THR 0x1c /* Transmitter Holding Register */
109#define ATMEL_US_SYNH (1 << 15) /* Transmit/Receive Sync [SAM9 only] */ 109#define ATMEL_US_SYNH (1 << 15) /* Transmit/Receive Sync [AT91SAM9261 only] */
110 110
111#define ATMEL_US_BRGR 0x20 /* Baud Rate Generator Register */ 111#define ATMEL_US_BRGR 0x20 /* Baud Rate Generator Register */
112#define ATMEL_US_CD (0xffff << 0) /* Clock Divider */ 112#define ATMEL_US_CD (0xffff << 0) /* Clock Divider */
diff --git a/drivers/spi/pxa2xx_spi.c b/drivers/spi/pxa2xx_spi.c
index 6ed3f1da9296..8b41f9cc2560 100644
--- a/drivers/spi/pxa2xx_spi.c
+++ b/drivers/spi/pxa2xx_spi.c
@@ -1169,8 +1169,9 @@ static int setup(struct spi_device *spi)
1169 spi->bits_per_word - 16 : spi->bits_per_word) 1169 spi->bits_per_word - 16 : spi->bits_per_word)
1170 | SSCR0_SSE 1170 | SSCR0_SSE
1171 | (spi->bits_per_word > 16 ? SSCR0_EDSS : 0); 1171 | (spi->bits_per_word > 16 ? SSCR0_EDSS : 0);
1172 chip->cr1 |= (((spi->mode & SPI_CPHA) != 0) << 4) 1172 chip->cr1 &= ~(SSCR1_SPO | SSCR1_SPH);
1173 | (((spi->mode & SPI_CPOL) != 0) << 3); 1173 chip->cr1 |= (((spi->mode & SPI_CPHA) != 0) ? SSCR1_SPH : 0)
1174 | (((spi->mode & SPI_CPOL) != 0) ? SSCR1_SPO : 0);
1174 1175
1175 /* NOTE: PXA25x_SSP _could_ use external clocking ... */ 1176 /* NOTE: PXA25x_SSP _could_ use external clocking ... */
1176 if (drv_data->ssp_type != PXA25x_SSP) 1177 if (drv_data->ssp_type != PXA25x_SSP)
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 270e6211c2e3..6307428d2c94 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -366,7 +366,6 @@ spi_alloc_master(struct device *dev, unsigned size)
366 366
367 class_device_initialize(&master->cdev); 367 class_device_initialize(&master->cdev);
368 master->cdev.class = &spi_master_class; 368 master->cdev.class = &spi_master_class;
369 kobj_set_kset_s(&master->cdev, spi_master_class.subsys);
370 master->cdev.dev = get_device(dev); 369 master->cdev.dev = get_device(dev);
371 spi_master_set_devdata(master, &master[1]); 370 spi_master_set_devdata(master, &master[1]);
372 371
@@ -466,14 +465,20 @@ EXPORT_SYMBOL_GPL(spi_unregister_master);
466 */ 465 */
467struct spi_master *spi_busnum_to_master(u16 bus_num) 466struct spi_master *spi_busnum_to_master(u16 bus_num)
468{ 467{
469 char name[9]; 468 struct class_device *cdev;
470 struct kobject *bus; 469 struct spi_master *master = NULL;
471 470 struct spi_master *m;
472 snprintf(name, sizeof name, "spi%u", bus_num); 471
473 bus = kset_find_obj(&spi_master_class.subsys.kset, name); 472 down(&spi_master_class.sem);
474 if (bus) 473 list_for_each_entry(cdev, &spi_master_class.children, node) {
475 return container_of(bus, struct spi_master, cdev.kobj); 474 m = container_of(cdev, struct spi_master, cdev);
476 return NULL; 475 if (m->bus_num == bus_num) {
476 master = spi_master_get(m);
477 break;
478 }
479 }
480 up(&spi_master_class.sem);
481 return master;
477} 482}
478EXPORT_SYMBOL_GPL(spi_busnum_to_master); 483EXPORT_SYMBOL_GPL(spi_busnum_to_master);
479 484
diff --git a/drivers/spi/spi_s3c24xx.c b/drivers/spi/spi_s3c24xx.c
index 8ca08713528e..651379c51ae6 100644
--- a/drivers/spi/spi_s3c24xx.c
+++ b/drivers/spi/spi_s3c24xx.c
@@ -10,9 +10,6 @@
10 * 10 *
11*/ 11*/
12 12
13
14//#define DEBUG
15
16#include <linux/init.h> 13#include <linux/init.h>
17#include <linux/spinlock.h> 14#include <linux/spinlock.h>
18#include <linux/workqueue.h> 15#include <linux/workqueue.h>
@@ -44,6 +41,9 @@ struct s3c24xx_spi {
44 int len; 41 int len;
45 int count; 42 int count;
46 43
44 int (*set_cs)(struct s3c2410_spi_info *spi,
45 int cs, int pol);
46
47 /* data buffers */ 47 /* data buffers */
48 const unsigned char *tx; 48 const unsigned char *tx;
49 unsigned char *rx; 49 unsigned char *rx;
@@ -64,6 +64,11 @@ static inline struct s3c24xx_spi *to_hw(struct spi_device *sdev)
64 return spi_master_get_devdata(sdev->master); 64 return spi_master_get_devdata(sdev->master);
65} 65}
66 66
67static void s3c24xx_spi_gpiocs(struct s3c2410_spi_info *spi, int cs, int pol)
68{
69 s3c2410_gpio_setpin(spi->pin_cs, pol);
70}
71
67static void s3c24xx_spi_chipsel(struct spi_device *spi, int value) 72static void s3c24xx_spi_chipsel(struct spi_device *spi, int value)
68{ 73{
69 struct s3c24xx_spi *hw = to_hw(spi); 74 struct s3c24xx_spi *hw = to_hw(spi);
@@ -72,10 +77,7 @@ static void s3c24xx_spi_chipsel(struct spi_device *spi, int value)
72 77
73 switch (value) { 78 switch (value) {
74 case BITBANG_CS_INACTIVE: 79 case BITBANG_CS_INACTIVE:
75 if (hw->pdata->set_cs) 80 hw->pdata->set_cs(hw->pdata, spi->chip_select, cspol^1);
76 hw->pdata->set_cs(hw->pdata, value, cspol);
77 else
78 s3c2410_gpio_setpin(hw->pdata->pin_cs, cspol ^ 1);
79 break; 81 break;
80 82
81 case BITBANG_CS_ACTIVE: 83 case BITBANG_CS_ACTIVE:
@@ -96,14 +98,9 @@ static void s3c24xx_spi_chipsel(struct spi_device *spi, int value)
96 /* write new configration */ 98 /* write new configration */
97 99
98 writeb(spcon, hw->regs + S3C2410_SPCON); 100 writeb(spcon, hw->regs + S3C2410_SPCON);
99 101 hw->pdata->set_cs(hw->pdata, spi->chip_select, cspol);
100 if (hw->pdata->set_cs)
101 hw->pdata->set_cs(hw->pdata, value, cspol);
102 else
103 s3c2410_gpio_setpin(hw->pdata->pin_cs, cspol);
104 102
105 break; 103 break;
106
107 } 104 }
108} 105}
109 106
@@ -330,9 +327,12 @@ static int s3c24xx_spi_probe(struct platform_device *pdev)
330 /* setup any gpio we can */ 327 /* setup any gpio we can */
331 328
332 if (!hw->pdata->set_cs) { 329 if (!hw->pdata->set_cs) {
330 hw->set_cs = s3c24xx_spi_gpiocs;
331
333 s3c2410_gpio_setpin(hw->pdata->pin_cs, 1); 332 s3c2410_gpio_setpin(hw->pdata->pin_cs, 1);
334 s3c2410_gpio_cfgpin(hw->pdata->pin_cs, S3C2410_GPIO_OUTPUT); 333 s3c2410_gpio_cfgpin(hw->pdata->pin_cs, S3C2410_GPIO_OUTPUT);
335 } 334 } else
335 hw->set_cs = hw->pdata->set_cs;
336 336
337 /* register our spi controller */ 337 /* register our spi controller */
338 338
diff --git a/drivers/usb/core/Kconfig b/drivers/usb/core/Kconfig
index f8324d8d06ac..3e66b2a9974a 100644
--- a/drivers/usb/core/Kconfig
+++ b/drivers/usb/core/Kconfig
@@ -72,22 +72,6 @@ config USB_SUSPEND
72 72
73 If you are unsure about this, say N here. 73 If you are unsure about this, say N here.
74 74
75config USB_MULTITHREAD_PROBE
76 bool "USB Multi-threaded probe (EXPERIMENTAL)"
77 depends on USB && EXPERIMENTAL
78 default n
79 help
80 Say Y here if you want the USB core to spawn a new thread for
81 every USB device that is probed. This can cause a small speedup
82 in boot times on systems with a lot of different USB devices.
83
84 This option should be safe to enable, but if any odd probing
85 problems are found, please disable it, or dynamically turn it
86 off in the /sys/module/usbcore/parameters/multithread_probe
87 file
88
89 When in doubt, say N.
90
91config USB_OTG 75config USB_OTG
92 bool 76 bool
93 depends on USB && EXPERIMENTAL 77 depends on USB && EXPERIMENTAL
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 2651c2e2a89f..1988224b362b 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -88,14 +88,7 @@ static DECLARE_WAIT_QUEUE_HEAD(khubd_wait);
88static struct task_struct *khubd_task; 88static struct task_struct *khubd_task;
89 89
90/* multithreaded probe logic */ 90/* multithreaded probe logic */
91static int multithread_probe = 91static int multithread_probe = 0;
92#ifdef CONFIG_USB_MULTITHREAD_PROBE
93 1;
94#else
95 0;
96#endif
97module_param(multithread_probe, bool, S_IRUGO);
98MODULE_PARM_DESC(multithread_probe, "Run each USB device probe in a new thread");
99 92
100/* cycle leds on hubs that aren't blinking for attention */ 93/* cycle leds on hubs that aren't blinking for attention */
101static int blinkenlights = 0; 94static int blinkenlights = 0;
diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c
index 43ae696b2ec2..3348b07f0fe5 100644
--- a/drivers/usb/host/ohci-ep93xx.c
+++ b/drivers/usb/host/ohci-ep93xx.c
@@ -169,7 +169,7 @@ static int ohci_hcd_ep93xx_drv_remove(struct platform_device *pdev)
169static int ohci_hcd_ep93xx_drv_suspend(struct platform_device *pdev, pm_message_t state) 169static int ohci_hcd_ep93xx_drv_suspend(struct platform_device *pdev, pm_message_t state)
170{ 170{
171 struct usb_hcd *hcd = platform_get_drvdata(pdev); 171 struct usb_hcd *hcd = platform_get_drvdata(pdev);
172 struct ochi_hcd *ohci = hcd_to_ohci(hcd); 172 struct ohci_hcd *ohci = hcd_to_ohci(hcd);
173 173
174 if (time_before(jiffies, ohci->next_statechange)) 174 if (time_before(jiffies, ohci->next_statechange))
175 msleep(5); 175 msleep(5);
diff --git a/drivers/usb/input/Kconfig b/drivers/usb/input/Kconfig
index 258a5d09d3dc..c7d887540d8d 100644
--- a/drivers/usb/input/Kconfig
+++ b/drivers/usb/input/Kconfig
@@ -7,7 +7,7 @@ comment "USB Input Devices"
7config USB_HID 7config USB_HID
8 tristate "USB Human Interface Device (full HID) support" 8 tristate "USB Human Interface Device (full HID) support"
9 default y 9 default y
10 depends on USB 10 depends on USB && INPUT
11 select HID 11 select HID
12 ---help--- 12 ---help---
13 Say Y here if you want full HID support to connect USB keyboards, 13 Say Y here if you want full HID support to connect USB keyboards,
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c
index 89fa6885709b..c6c9e72e5fd9 100644
--- a/drivers/usb/input/hid-core.c
+++ b/drivers/usb/input/hid-core.c
@@ -56,11 +56,6 @@ static unsigned int hid_mousepoll_interval;
56module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644); 56module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644);
57MODULE_PARM_DESC(mousepoll, "Polling interval of mice"); 57MODULE_PARM_DESC(mousepoll, "Polling interval of mice");
58 58
59static int usbhid_pb_fnmode = 1;
60module_param_named(pb_fnmode, usbhid_pb_fnmode, int, 0644);
61MODULE_PARM_DESC(pb_fnmode,
62 "Mode of fn key on PowerBooks (0 = disabled, 1 = fkeyslast, 2 = fkeysfirst)");
63
64/* 59/*
65 * Input submission and I/O error handler. 60 * Input submission and I/O error handler.
66 */ 61 */
@@ -106,18 +101,18 @@ static void hid_reset(struct work_struct *work)
106 101
107 if (test_bit(HID_CLEAR_HALT, &usbhid->iofl)) { 102 if (test_bit(HID_CLEAR_HALT, &usbhid->iofl)) {
108 dev_dbg(&usbhid->intf->dev, "clear halt\n"); 103 dev_dbg(&usbhid->intf->dev, "clear halt\n");
109 rc = usb_clear_halt(to_usb_device(hid->dev), usbhid->urbin->pipe); 104 rc = usb_clear_halt(hid_to_usb_dev(hid), usbhid->urbin->pipe);
110 clear_bit(HID_CLEAR_HALT, &usbhid->iofl); 105 clear_bit(HID_CLEAR_HALT, &usbhid->iofl);
111 hid_start_in(hid); 106 hid_start_in(hid);
112 } 107 }
113 108
114 else if (test_bit(HID_RESET_PENDING, &usbhid->iofl)) { 109 else if (test_bit(HID_RESET_PENDING, &usbhid->iofl)) {
115 dev_dbg(&usbhid->intf->dev, "resetting device\n"); 110 dev_dbg(&usbhid->intf->dev, "resetting device\n");
116 rc = rc_lock = usb_lock_device_for_reset(to_usb_device(hid->dev), usbhid->intf); 111 rc = rc_lock = usb_lock_device_for_reset(hid_to_usb_dev(hid), usbhid->intf);
117 if (rc_lock >= 0) { 112 if (rc_lock >= 0) {
118 rc = usb_reset_composite_device(to_usb_device(hid->dev), usbhid->intf); 113 rc = usb_reset_composite_device(hid_to_usb_dev(hid), usbhid->intf);
119 if (rc_lock) 114 if (rc_lock)
120 usb_unlock_device(to_usb_device(hid->dev)); 115 usb_unlock_device(hid_to_usb_dev(hid));
121 } 116 }
122 clear_bit(HID_RESET_PENDING, &usbhid->iofl); 117 clear_bit(HID_RESET_PENDING, &usbhid->iofl);
123 } 118 }
@@ -129,8 +124,8 @@ static void hid_reset(struct work_struct *work)
129 break; 124 break;
130 default: 125 default:
131 err("can't reset device, %s-%s/input%d, status %d", 126 err("can't reset device, %s-%s/input%d, status %d",
132 to_usb_device(hid->dev)->bus->bus_name, 127 hid_to_usb_dev(hid)->bus->bus_name,
133 to_usb_device(hid->dev)->devpath, 128 hid_to_usb_dev(hid)->devpath,
134 usbhid->ifnum, rc); 129 usbhid->ifnum, rc);
135 /* FALLTHROUGH */ 130 /* FALLTHROUGH */
136 case -EHOSTUNREACH: 131 case -EHOSTUNREACH:
@@ -217,8 +212,8 @@ static void hid_irq_in(struct urb *urb)
217 clear_bit(HID_IN_RUNNING, &usbhid->iofl); 212 clear_bit(HID_IN_RUNNING, &usbhid->iofl);
218 if (status != -EPERM) { 213 if (status != -EPERM) {
219 err("can't resubmit intr, %s-%s/input%d, status %d", 214 err("can't resubmit intr, %s-%s/input%d, status %d",
220 to_usb_device(hid->dev)->bus->bus_name, 215 hid_to_usb_dev(hid)->bus->bus_name,
221 to_usb_device(hid->dev)->devpath, 216 hid_to_usb_dev(hid)->devpath,
222 usbhid->ifnum, status); 217 usbhid->ifnum, status);
223 hid_io_error(hid); 218 hid_io_error(hid);
224 } 219 }
@@ -251,7 +246,7 @@ static int hid_submit_out(struct hid_device *hid)
251 246
252 hid_output_report(report, usbhid->outbuf); 247 hid_output_report(report, usbhid->outbuf);
253 usbhid->urbout->transfer_buffer_length = ((report->size - 1) >> 3) + 1 + (report->id > 0); 248 usbhid->urbout->transfer_buffer_length = ((report->size - 1) >> 3) + 1 + (report->id > 0);
254 usbhid->urbout->dev = to_usb_device(hid->dev); 249 usbhid->urbout->dev = hid_to_usb_dev(hid);
255 250
256 dbg("submitting out urb"); 251 dbg("submitting out urb");
257 252
@@ -276,13 +271,13 @@ static int hid_submit_ctrl(struct hid_device *hid)
276 len = ((report->size - 1) >> 3) + 1 + (report->id > 0); 271 len = ((report->size - 1) >> 3) + 1 + (report->id > 0);
277 if (dir == USB_DIR_OUT) { 272 if (dir == USB_DIR_OUT) {
278 hid_output_report(report, usbhid->ctrlbuf); 273 hid_output_report(report, usbhid->ctrlbuf);
279 usbhid->urbctrl->pipe = usb_sndctrlpipe(to_usb_device(hid->dev), 0); 274 usbhid->urbctrl->pipe = usb_sndctrlpipe(hid_to_usb_dev(hid), 0);
280 usbhid->urbctrl->transfer_buffer_length = len; 275 usbhid->urbctrl->transfer_buffer_length = len;
281 } else { 276 } else {
282 int maxpacket, padlen; 277 int maxpacket, padlen;
283 278
284 usbhid->urbctrl->pipe = usb_rcvctrlpipe(to_usb_device(hid->dev), 0); 279 usbhid->urbctrl->pipe = usb_rcvctrlpipe(hid_to_usb_dev(hid), 0);
285 maxpacket = usb_maxpacket(to_usb_device(hid->dev), usbhid->urbctrl->pipe, 0); 280 maxpacket = usb_maxpacket(hid_to_usb_dev(hid), usbhid->urbctrl->pipe, 0);
286 if (maxpacket > 0) { 281 if (maxpacket > 0) {
287 padlen = (len + maxpacket - 1) / maxpacket; 282 padlen = (len + maxpacket - 1) / maxpacket;
288 padlen *= maxpacket; 283 padlen *= maxpacket;
@@ -292,7 +287,7 @@ static int hid_submit_ctrl(struct hid_device *hid)
292 padlen = 0; 287 padlen = 0;
293 usbhid->urbctrl->transfer_buffer_length = padlen; 288 usbhid->urbctrl->transfer_buffer_length = padlen;
294 } 289 }
295 usbhid->urbctrl->dev = to_usb_device(hid->dev); 290 usbhid->urbctrl->dev = hid_to_usb_dev(hid);
296 291
297 usbhid->cr->bRequestType = USB_TYPE_CLASS | USB_RECIP_INTERFACE | dir; 292 usbhid->cr->bRequestType = USB_TYPE_CLASS | USB_RECIP_INTERFACE | dir;
298 usbhid->cr->bRequest = (dir == USB_DIR_OUT) ? HID_REQ_SET_REPORT : HID_REQ_GET_REPORT; 293 usbhid->cr->bRequest = (dir == USB_DIR_OUT) ? HID_REQ_SET_REPORT : HID_REQ_GET_REPORT;
@@ -582,6 +577,7 @@ void usbhid_init_reports(struct hid_device *hid)
582} 577}
583 578
584#define USB_VENDOR_ID_GTCO 0x078c 579#define USB_VENDOR_ID_GTCO 0x078c
580#define USB_VENDOR_ID_GTCO_IPANEL_2 0x5543
585#define USB_DEVICE_ID_GTCO_90 0x0090 581#define USB_DEVICE_ID_GTCO_90 0x0090
586#define USB_DEVICE_ID_GTCO_100 0x0100 582#define USB_DEVICE_ID_GTCO_100 0x0100
587#define USB_DEVICE_ID_GTCO_101 0x0101 583#define USB_DEVICE_ID_GTCO_101 0x0101
@@ -627,6 +623,8 @@ void usbhid_init_reports(struct hid_device *hid)
627#define USB_DEVICE_ID_GTCO_1004 0x1004 623#define USB_DEVICE_ID_GTCO_1004 0x1004
628#define USB_DEVICE_ID_GTCO_1005 0x1005 624#define USB_DEVICE_ID_GTCO_1005 0x1005
629#define USB_DEVICE_ID_GTCO_1006 0x1006 625#define USB_DEVICE_ID_GTCO_1006 0x1006
626#define USB_DEVICE_ID_GTCO_8 0x0008
627#define USB_DEVICE_ID_GTCO_d 0x000d
630 628
631#define USB_VENDOR_ID_WACOM 0x056a 629#define USB_VENDOR_ID_WACOM 0x056a
632 630
@@ -791,6 +789,9 @@ void usbhid_init_reports(struct hid_device *hid)
791#define USB_VENDOR_ID_LOGITECH 0x046d 789#define USB_VENDOR_ID_LOGITECH 0x046d
792#define USB_DEVICE_ID_LOGITECH_USB_RECEIVER 0xc101 790#define USB_DEVICE_ID_LOGITECH_USB_RECEIVER 0xc101
793 791
792#define USB_VENDOR_ID_IMATION 0x0718
793#define USB_DEVICE_ID_DISC_STAKKA 0xd000
794
794/* 795/*
795 * Alphabetically sorted blacklist by quirk type. 796 * Alphabetically sorted blacklist by quirk type.
796 */ 797 */
@@ -875,6 +876,9 @@ static const struct hid_blacklist {
875 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1004, HID_QUIRK_IGNORE }, 876 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1004, HID_QUIRK_IGNORE },
876 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1005, HID_QUIRK_IGNORE }, 877 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1005, HID_QUIRK_IGNORE },
877 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006, HID_QUIRK_IGNORE }, 878 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006, HID_QUIRK_IGNORE },
879 { USB_VENDOR_ID_GTCO_IPANEL_2, USB_DEVICE_ID_GTCO_8, HID_QUIRK_IGNORE },
880 { USB_VENDOR_ID_GTCO_IPANEL_2, USB_DEVICE_ID_GTCO_d, HID_QUIRK_IGNORE },
881 { USB_VENDOR_ID_IMATION, USB_DEVICE_ID_DISC_STAKKA, HID_QUIRK_IGNORE },
878 { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE }, 882 { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE },
879 { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY, HID_QUIRK_IGNORE }, 883 { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY, HID_QUIRK_IGNORE },
880 { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY, HID_QUIRK_IGNORE }, 884 { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY, HID_QUIRK_IGNORE },
@@ -951,7 +955,7 @@ static const struct hid_blacklist {
951 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, 955 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
952 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN }, 956 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
953 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN }, 957 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
954 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN }, 958 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
955 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN }, 959 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
956 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN }, 960 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN },
957 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN }, 961 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN },
@@ -1187,7 +1191,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf)
1187 1191
1188 hid->version = le16_to_cpu(hdesc->bcdHID); 1192 hid->version = le16_to_cpu(hdesc->bcdHID);
1189 hid->country = hdesc->bCountryCode; 1193 hid->country = hdesc->bCountryCode;
1190 hid->dev = &dev->dev; 1194 hid->dev = &intf->dev;
1191 usbhid->intf = intf; 1195 usbhid->intf = intf;
1192 usbhid->ifnum = interface->desc.bInterfaceNumber; 1196 usbhid->ifnum = interface->desc.bInterfaceNumber;
1193 1197
@@ -1237,10 +1241,6 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf)
1237 hid->hiddev_hid_event = hiddev_hid_event; 1241 hid->hiddev_hid_event = hiddev_hid_event;
1238 hid->hiddev_report_event = hiddev_report_event; 1242 hid->hiddev_report_event = hiddev_report_event;
1239#endif 1243#endif
1240#ifdef CONFIG_USB_HIDINPUT_POWERBOOK
1241 hid->pb_fnmode = usbhid_pb_fnmode;
1242#endif
1243
1244 return hid; 1244 return hid;
1245 1245
1246fail: 1246fail:
@@ -1282,7 +1282,7 @@ static void hid_disconnect(struct usb_interface *intf)
1282 usb_free_urb(usbhid->urbctrl); 1282 usb_free_urb(usbhid->urbctrl);
1283 usb_free_urb(usbhid->urbout); 1283 usb_free_urb(usbhid->urbout);
1284 1284
1285 hid_free_buffers(to_usb_device(hid->dev), hid); 1285 hid_free_buffers(hid_to_usb_dev(hid), hid);
1286 hid_free_device(hid); 1286 hid_free_device(hid);
1287} 1287}
1288 1288
diff --git a/drivers/usb/input/hid-ff.c b/drivers/usb/input/hid-ff.c
index f8f660ee3fac..59ed65e7a621 100644
--- a/drivers/usb/input/hid-ff.c
+++ b/drivers/usb/input/hid-ff.c
@@ -33,6 +33,7 @@
33#include <linux/usb.h> 33#include <linux/usb.h>
34 34
35#include <linux/hid.h> 35#include <linux/hid.h>
36#include "usbhid.h"
36 37
37/* 38/*
38 * This table contains pointers to initializers. To add support for new 39 * This table contains pointers to initializers. To add support for new
@@ -70,8 +71,8 @@ static struct hid_ff_initializer inits[] = {
70int hid_ff_init(struct hid_device* hid) 71int hid_ff_init(struct hid_device* hid)
71{ 72{
72 struct hid_ff_initializer *init; 73 struct hid_ff_initializer *init;
73 int vendor = le16_to_cpu(to_usb_device(hid->dev)->descriptor.idVendor); 74 int vendor = le16_to_cpu(hid_to_usb_dev(hid)->descriptor.idVendor);
74 int product = le16_to_cpu(to_usb_device(hid->dev)->descriptor.idProduct); 75 int product = le16_to_cpu(hid_to_usb_dev(hid)->descriptor.idProduct);
75 76
76 for (init = inits; init->idVendor; init++) 77 for (init = inits; init->idVendor; init++)
77 if (init->idVendor == vendor && init->idProduct == product) 78 if (init->idVendor == vendor && init->idProduct == product)
diff --git a/drivers/usb/input/hiddev.c b/drivers/usb/input/hiddev.c
index 114d6c9f64b1..a8b3d66cd498 100644
--- a/drivers/usb/input/hiddev.c
+++ b/drivers/usb/input/hiddev.c
@@ -384,7 +384,7 @@ static int hiddev_ioctl(struct inode *inode, struct file *file, unsigned int cmd
384 struct hiddev_list *list = file->private_data; 384 struct hiddev_list *list = file->private_data;
385 struct hiddev *hiddev = list->hiddev; 385 struct hiddev *hiddev = list->hiddev;
386 struct hid_device *hid = hiddev->hid; 386 struct hid_device *hid = hiddev->hid;
387 struct usb_device *dev = to_usb_device(hid->dev); 387 struct usb_device *dev = hid_to_usb_dev(hid);
388 struct hiddev_collection_info cinfo; 388 struct hiddev_collection_info cinfo;
389 struct hiddev_report_info rinfo; 389 struct hiddev_report_info rinfo;
390 struct hiddev_field_info finfo; 390 struct hiddev_field_info finfo;
diff --git a/drivers/usb/input/usbhid.h b/drivers/usb/input/usbhid.h
index 830107e5251f..0023f96d4294 100644
--- a/drivers/usb/input/usbhid.h
+++ b/drivers/usb/input/usbhid.h
@@ -80,5 +80,8 @@ struct usbhid_device {
80 80
81}; 81};
82 82
83#define hid_to_usb_dev(hid_dev) \
84 container_of(hid_dev->dev->parent, struct usb_device, dev)
85
83#endif 86#endif
84 87
diff --git a/drivers/usb/input/usbtouchscreen.c b/drivers/usb/input/usbtouchscreen.c
index 7f3c57da9bc0..86e37a20f8e5 100644
--- a/drivers/usb/input/usbtouchscreen.c
+++ b/drivers/usb/input/usbtouchscreen.c
@@ -66,7 +66,7 @@ struct usbtouch_device_info {
66 66
67 void (*process_pkt) (struct usbtouch_usb *usbtouch, unsigned char *pkt, int len); 67 void (*process_pkt) (struct usbtouch_usb *usbtouch, unsigned char *pkt, int len);
68 int (*get_pkt_len) (unsigned char *pkt, int len); 68 int (*get_pkt_len) (unsigned char *pkt, int len);
69 int (*read_data) (unsigned char *pkt, int *x, int *y, int *touch, int *press); 69 int (*read_data) (struct usbtouch_usb *usbtouch, unsigned char *pkt);
70 int (*init) (struct usbtouch_usb *usbtouch); 70 int (*init) (struct usbtouch_usb *usbtouch);
71}; 71};
72 72
@@ -85,6 +85,9 @@ struct usbtouch_usb {
85 struct usbtouch_device_info *type; 85 struct usbtouch_device_info *type;
86 char name[128]; 86 char name[128];
87 char phys[64]; 87 char phys[64];
88
89 int x, y;
90 int touch, press;
88}; 91};
89 92
90 93
@@ -161,14 +164,14 @@ static struct usb_device_id usbtouch_devices[] = {
161#define EGALAX_PKT_TYPE_REPT 0x80 164#define EGALAX_PKT_TYPE_REPT 0x80
162#define EGALAX_PKT_TYPE_DIAG 0x0A 165#define EGALAX_PKT_TYPE_DIAG 0x0A
163 166
164static int egalax_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 167static int egalax_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
165{ 168{
166 if ((pkt[0] & EGALAX_PKT_TYPE_MASK) != EGALAX_PKT_TYPE_REPT) 169 if ((pkt[0] & EGALAX_PKT_TYPE_MASK) != EGALAX_PKT_TYPE_REPT)
167 return 0; 170 return 0;
168 171
169 *x = ((pkt[3] & 0x0F) << 7) | (pkt[4] & 0x7F); 172 dev->x = ((pkt[3] & 0x0F) << 7) | (pkt[4] & 0x7F);
170 *y = ((pkt[1] & 0x0F) << 7) | (pkt[2] & 0x7F); 173 dev->y = ((pkt[1] & 0x0F) << 7) | (pkt[2] & 0x7F);
171 *touch = pkt[0] & 0x01; 174 dev->touch = pkt[0] & 0x01;
172 175
173 return 1; 176 return 1;
174} 177}
@@ -195,11 +198,11 @@ static int egalax_get_pkt_len(unsigned char *buf, int len)
195 * PanJit Part 198 * PanJit Part
196 */ 199 */
197#ifdef CONFIG_USB_TOUCHSCREEN_PANJIT 200#ifdef CONFIG_USB_TOUCHSCREEN_PANJIT
198static int panjit_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 201static int panjit_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
199{ 202{
200 *x = ((pkt[2] & 0x0F) << 8) | pkt[1]; 203 dev->x = ((pkt[2] & 0x0F) << 8) | pkt[1];
201 *y = ((pkt[4] & 0x0F) << 8) | pkt[3]; 204 dev->y = ((pkt[4] & 0x0F) << 8) | pkt[3];
202 *touch = pkt[0] & 0x01; 205 dev->touch = pkt[0] & 0x01;
203 206
204 return 1; 207 return 1;
205} 208}
@@ -215,11 +218,11 @@ static int panjit_read_data(unsigned char *pkt, int *x, int *y, int *touch, int
215#define MTOUCHUSB_RESET 7 218#define MTOUCHUSB_RESET 7
216#define MTOUCHUSB_REQ_CTRLLR_ID 10 219#define MTOUCHUSB_REQ_CTRLLR_ID 10
217 220
218static int mtouch_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 221static int mtouch_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
219{ 222{
220 *x = (pkt[8] << 8) | pkt[7]; 223 dev->x = (pkt[8] << 8) | pkt[7];
221 *y = (pkt[10] << 8) | pkt[9]; 224 dev->y = (pkt[10] << 8) | pkt[9];
222 *touch = (pkt[2] & 0x40) ? 1 : 0; 225 dev->touch = (pkt[2] & 0x40) ? 1 : 0;
223 226
224 return 1; 227 return 1;
225} 228}
@@ -260,14 +263,32 @@ static int mtouch_init(struct usbtouch_usb *usbtouch)
260 * ITM Part 263 * ITM Part
261 */ 264 */
262#ifdef CONFIG_USB_TOUCHSCREEN_ITM 265#ifdef CONFIG_USB_TOUCHSCREEN_ITM
263static int itm_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 266static int itm_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
264{ 267{
265 *x = ((pkt[0] & 0x1F) << 7) | (pkt[3] & 0x7F); 268 int touch;
266 *y = ((pkt[1] & 0x1F) << 7) | (pkt[4] & 0x7F); 269 /*
267 *press = ((pkt[2] & 0x01) << 7) | (pkt[5] & 0x7F); 270 * ITM devices report invalid x/y data if not touched.
268 *touch = ~pkt[7] & 0x20; 271 * if the screen was touched before but is not touched any more
272 * report touch as 0 with the last valid x/y data once. then stop
273 * reporting data until touched again.
274 */
275 dev->press = ((pkt[2] & 0x01) << 7) | (pkt[5] & 0x7F);
276
277 touch = ~pkt[7] & 0x20;
278 if (!touch) {
279 if (dev->touch) {
280 dev->touch = 0;
281 return 1;
282 }
269 283
270 return *touch; 284 return 0;
285 }
286
287 dev->x = ((pkt[0] & 0x1F) << 7) | (pkt[3] & 0x7F);
288 dev->y = ((pkt[1] & 0x1F) << 7) | (pkt[4] & 0x7F);
289 dev->touch = touch;
290
291 return 1;
271} 292}
272#endif 293#endif
273 294
@@ -276,7 +297,7 @@ static int itm_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *pr
276 * eTurboTouch part 297 * eTurboTouch part
277 */ 298 */
278#ifdef CONFIG_USB_TOUCHSCREEN_ETURBO 299#ifdef CONFIG_USB_TOUCHSCREEN_ETURBO
279static int eturbo_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 300static int eturbo_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
280{ 301{
281 unsigned int shift; 302 unsigned int shift;
282 303
@@ -285,9 +306,9 @@ static int eturbo_read_data(unsigned char *pkt, int *x, int *y, int *touch, int
285 return 0; 306 return 0;
286 307
287 shift = (6 - (pkt[0] & 0x03)); 308 shift = (6 - (pkt[0] & 0x03));
288 *x = ((pkt[3] << 7) | pkt[4]) >> shift; 309 dev->x = ((pkt[3] << 7) | pkt[4]) >> shift;
289 *y = ((pkt[1] << 7) | pkt[2]) >> shift; 310 dev->y = ((pkt[1] << 7) | pkt[2]) >> shift;
290 *touch = (pkt[0] & 0x10) ? 1 : 0; 311 dev->touch = (pkt[0] & 0x10) ? 1 : 0;
291 312
292 return 1; 313 return 1;
293} 314}
@@ -307,14 +328,14 @@ static int eturbo_get_pkt_len(unsigned char *buf, int len)
307 * Gunze part 328 * Gunze part
308 */ 329 */
309#ifdef CONFIG_USB_TOUCHSCREEN_GUNZE 330#ifdef CONFIG_USB_TOUCHSCREEN_GUNZE
310static int gunze_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 331static int gunze_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
311{ 332{
312 if (!(pkt[0] & 0x80) || ((pkt[1] | pkt[2] | pkt[3]) & 0x80)) 333 if (!(pkt[0] & 0x80) || ((pkt[1] | pkt[2] | pkt[3]) & 0x80))
313 return 0; 334 return 0;
314 335
315 *x = ((pkt[0] & 0x1F) << 7) | (pkt[2] & 0x7F); 336 dev->x = ((pkt[0] & 0x1F) << 7) | (pkt[2] & 0x7F);
316 *y = ((pkt[1] & 0x1F) << 7) | (pkt[3] & 0x7F); 337 dev->y = ((pkt[1] & 0x1F) << 7) | (pkt[3] & 0x7F);
317 *touch = pkt[0] & 0x20; 338 dev->touch = pkt[0] & 0x20;
318 339
319 return 1; 340 return 1;
320} 341}
@@ -383,11 +404,11 @@ static int dmc_tsc10_init(struct usbtouch_usb *usbtouch)
383} 404}
384 405
385 406
386static int dmc_tsc10_read_data(unsigned char *pkt, int *x, int *y, int *touch, int *press) 407static int dmc_tsc10_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
387{ 408{
388 *x = ((pkt[2] & 0x03) << 8) | pkt[1]; 409 dev->x = ((pkt[2] & 0x03) << 8) | pkt[1];
389 *y = ((pkt[4] & 0x03) << 8) | pkt[3]; 410 dev->y = ((pkt[4] & 0x03) << 8) | pkt[3];
390 *touch = pkt[0] & 0x01; 411 dev->touch = pkt[0] & 0x01;
391 412
392 return 1; 413 return 1;
393} 414}
@@ -492,23 +513,22 @@ static struct usbtouch_device_info usbtouch_dev_info[] = {
492static void usbtouch_process_pkt(struct usbtouch_usb *usbtouch, 513static void usbtouch_process_pkt(struct usbtouch_usb *usbtouch,
493 unsigned char *pkt, int len) 514 unsigned char *pkt, int len)
494{ 515{
495 int x, y, touch, press;
496 struct usbtouch_device_info *type = usbtouch->type; 516 struct usbtouch_device_info *type = usbtouch->type;
497 517
498 if (!type->read_data(pkt, &x, &y, &touch, &press)) 518 if (!type->read_data(usbtouch, pkt))
499 return; 519 return;
500 520
501 input_report_key(usbtouch->input, BTN_TOUCH, touch); 521 input_report_key(usbtouch->input, BTN_TOUCH, usbtouch->touch);
502 522
503 if (swap_xy) { 523 if (swap_xy) {
504 input_report_abs(usbtouch->input, ABS_X, y); 524 input_report_abs(usbtouch->input, ABS_X, usbtouch->y);
505 input_report_abs(usbtouch->input, ABS_Y, x); 525 input_report_abs(usbtouch->input, ABS_Y, usbtouch->x);
506 } else { 526 } else {
507 input_report_abs(usbtouch->input, ABS_X, x); 527 input_report_abs(usbtouch->input, ABS_X, usbtouch->x);
508 input_report_abs(usbtouch->input, ABS_Y, y); 528 input_report_abs(usbtouch->input, ABS_Y, usbtouch->y);
509 } 529 }
510 if (type->max_press) 530 if (type->max_press)
511 input_report_abs(usbtouch->input, ABS_PRESSURE, press); 531 input_report_abs(usbtouch->input, ABS_PRESSURE, usbtouch->press);
512 input_sync(usbtouch->input); 532 input_sync(usbtouch->input);
513} 533}
514 534
diff --git a/drivers/usb/net/asix.c b/drivers/usb/net/asix.c
index f538013965b0..896449f0cf85 100644
--- a/drivers/usb/net/asix.c
+++ b/drivers/usb/net/asix.c
@@ -898,7 +898,7 @@ static int ax88772_link_reset(struct usbnet *dev)
898 898
899static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf) 899static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
900{ 900{
901 int ret; 901 int ret, embd_phy;
902 void *buf; 902 void *buf;
903 u16 rx_ctl; 903 u16 rx_ctl;
904 struct asix_data *data = (struct asix_data *)&dev->data; 904 struct asix_data *data = (struct asix_data *)&dev->data;
@@ -919,13 +919,15 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
919 AX_GPIO_RSE | AX_GPIO_GPO_2 | AX_GPIO_GPO2EN, 5)) < 0) 919 AX_GPIO_RSE | AX_GPIO_GPO_2 | AX_GPIO_GPO2EN, 5)) < 0)
920 goto out2; 920 goto out2;
921 921
922 /* 0x10 is the phy id of the embedded 10/100 ethernet phy */
923 embd_phy = ((asix_get_phy_addr(dev) & 0x1f) == 0x10 ? 1 : 0);
922 if ((ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT, 924 if ((ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT,
923 1, 0, 0, buf)) < 0) { 925 embd_phy, 0, 0, buf)) < 0) {
924 dbg("Select PHY #1 failed: %d", ret); 926 dbg("Select PHY #1 failed: %d", ret);
925 goto out2; 927 goto out2;
926 } 928 }
927 929
928 if ((ret = asix_sw_reset(dev, AX_SWRESET_IPPD)) < 0) 930 if ((ret = asix_sw_reset(dev, AX_SWRESET_IPPD | AX_SWRESET_PRL)) < 0)
929 goto out2; 931 goto out2;
930 932
931 msleep(150); 933 msleep(150);
@@ -933,8 +935,14 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
933 goto out2; 935 goto out2;
934 936
935 msleep(150); 937 msleep(150);
936 if ((ret = asix_sw_reset(dev, AX_SWRESET_IPRL | AX_SWRESET_PRL)) < 0) 938 if (embd_phy) {
937 goto out2; 939 if ((ret = asix_sw_reset(dev, AX_SWRESET_IPRL)) < 0)
940 goto out2;
941 }
942 else {
943 if ((ret = asix_sw_reset(dev, AX_SWRESET_PRTE)) < 0)
944 goto out2;
945 }
938 946
939 msleep(150); 947 msleep(150);
940 rx_ctl = asix_read_rx_ctl(dev); 948 rx_ctl = asix_read_rx_ctl(dev);
diff --git a/drivers/usb/net/rndis_host.c b/drivers/usb/net/rndis_host.c
index ea5f44de3de2..a322a16d9cf8 100644
--- a/drivers/usb/net/rndis_host.c
+++ b/drivers/usb/net/rndis_host.c
@@ -379,6 +379,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
379{ 379{
380 int retval; 380 int retval;
381 struct net_device *net = dev->net; 381 struct net_device *net = dev->net;
382 struct cdc_state *info = (void *) &dev->data;
382 union { 383 union {
383 void *buf; 384 void *buf;
384 struct rndis_msg_hdr *header; 385 struct rndis_msg_hdr *header;
@@ -397,7 +398,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
397 return -ENOMEM; 398 return -ENOMEM;
398 retval = usbnet_generic_cdc_bind(dev, intf); 399 retval = usbnet_generic_cdc_bind(dev, intf);
399 if (retval < 0) 400 if (retval < 0)
400 goto done; 401 goto fail;
401 402
402 net->hard_header_len += sizeof (struct rndis_data_hdr); 403 net->hard_header_len += sizeof (struct rndis_data_hdr);
403 404
@@ -412,10 +413,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
412 if (unlikely(retval < 0)) { 413 if (unlikely(retval < 0)) {
413 /* it might not even be an RNDIS device!! */ 414 /* it might not even be an RNDIS device!! */
414 dev_err(&intf->dev, "RNDIS init failed, %d\n", retval); 415 dev_err(&intf->dev, "RNDIS init failed, %d\n", retval);
415fail: 416 goto fail_and_release;
416 usb_driver_release_interface(driver_of(intf),
417 ((struct cdc_state *)&(dev->data))->data);
418 goto done;
419 } 417 }
420 dev->hard_mtu = le32_to_cpu(u.init_c->max_transfer_size); 418 dev->hard_mtu = le32_to_cpu(u.init_c->max_transfer_size);
421 /* REVISIT: peripheral "alignment" request is ignored ... */ 419 /* REVISIT: peripheral "alignment" request is ignored ... */
@@ -431,7 +429,7 @@ fail:
431 retval = rndis_command(dev, u.header); 429 retval = rndis_command(dev, u.header);
432 if (unlikely(retval < 0)) { 430 if (unlikely(retval < 0)) {
433 dev_err(&intf->dev, "rndis get ethaddr, %d\n", retval); 431 dev_err(&intf->dev, "rndis get ethaddr, %d\n", retval);
434 goto fail; 432 goto fail_and_release;
435 } 433 }
436 tmp = le32_to_cpu(u.get_c->offset); 434 tmp = le32_to_cpu(u.get_c->offset);
437 if (unlikely((tmp + 8) > (1024 - ETH_ALEN) 435 if (unlikely((tmp + 8) > (1024 - ETH_ALEN)
@@ -439,7 +437,7 @@ fail:
439 dev_err(&intf->dev, "rndis ethaddr off %d len %d ?\n", 437 dev_err(&intf->dev, "rndis ethaddr off %d len %d ?\n",
440 tmp, le32_to_cpu(u.get_c->len)); 438 tmp, le32_to_cpu(u.get_c->len));
441 retval = -EDOM; 439 retval = -EDOM;
442 goto fail; 440 goto fail_and_release;
443 } 441 }
444 memcpy(net->dev_addr, tmp + (char *)&u.get_c->request_id, ETH_ALEN); 442 memcpy(net->dev_addr, tmp + (char *)&u.get_c->request_id, ETH_ALEN);
445 443
@@ -455,11 +453,18 @@ fail:
455 retval = rndis_command(dev, u.header); 453 retval = rndis_command(dev, u.header);
456 if (unlikely(retval < 0)) { 454 if (unlikely(retval < 0)) {
457 dev_err(&intf->dev, "rndis set packet filter, %d\n", retval); 455 dev_err(&intf->dev, "rndis set packet filter, %d\n", retval);
458 goto fail; 456 goto fail_and_release;
459 } 457 }
460 458
461 retval = 0; 459 retval = 0;
462done: 460
461 kfree(u.buf);
462 return retval;
463
464fail_and_release:
465 usb_set_intfdata(info->data, NULL);
466 usb_driver_release_interface(driver_of(intf), info->data);
467fail:
463 kfree(u.buf); 468 kfree(u.buf);
464 return retval; 469 return retval;
465} 470}
diff --git a/drivers/usb/net/rtl8150.c b/drivers/usb/net/rtl8150.c
index e0eecda78ec1..670262a38a0f 100644
--- a/drivers/usb/net/rtl8150.c
+++ b/drivers/usb/net/rtl8150.c
@@ -284,7 +284,8 @@ static int write_mii_word(rtl8150_t * dev, u8 phy, __u8 indx, u16 reg)
284 u8 data[3], tmp; 284 u8 data[3], tmp;
285 285
286 data[0] = phy; 286 data[0] = phy;
287 *(data + 1) = cpu_to_le16p(&reg); 287 data[1] = reg & 0xff;
288 data[2] = (reg >> 8) & 0xff;
288 tmp = indx | PHY_WRITE | PHY_GO; 289 tmp = indx | PHY_WRITE | PHY_GO;
289 i = 0; 290 i = 0;
290 291
diff --git a/drivers/usb/serial/funsoft.c b/drivers/usb/serial/funsoft.c
index 31501c9361b9..2bebd63d5ed1 100644
--- a/drivers/usb/serial/funsoft.c
+++ b/drivers/usb/serial/funsoft.c
@@ -27,7 +27,7 @@ MODULE_DEVICE_TABLE(usb, id_table);
27static int funsoft_ioctl(struct usb_serial_port *port, struct file *file, 27static int funsoft_ioctl(struct usb_serial_port *port, struct file *file,
28 unsigned int cmd, unsigned long arg) 28 unsigned int cmd, unsigned long arg)
29{ 29{
30 struct termios t; 30 struct ktermios t;
31 31
32 dbg("%s - port %d, cmd 0x%04x", __FUNCTION__, port->number, cmd); 32 dbg("%s - port %d, cmd 0x%04x", __FUNCTION__, port->number, cmd);
33 33
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 5ca04e82ea19..0fed43a96871 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -78,6 +78,7 @@ static int option_send_setup(struct usb_serial_port *port);
78#define OPTION_PRODUCT_FUSION2 0x6300 78#define OPTION_PRODUCT_FUSION2 0x6300
79#define OPTION_PRODUCT_COBRA 0x6500 79#define OPTION_PRODUCT_COBRA 0x6500
80#define OPTION_PRODUCT_COBRA2 0x6600 80#define OPTION_PRODUCT_COBRA2 0x6600
81#define OPTION_PRODUCT_GTMAX36 0x6701
81#define HUAWEI_PRODUCT_E600 0x1001 82#define HUAWEI_PRODUCT_E600 0x1001
82#define HUAWEI_PRODUCT_E220 0x1003 83#define HUAWEI_PRODUCT_E220 0x1003
83#define AUDIOVOX_PRODUCT_AIRCARD 0x0112 84#define AUDIOVOX_PRODUCT_AIRCARD 0x0112
@@ -90,6 +91,7 @@ static struct usb_device_id option_ids[] = {
90 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUSION2) }, 91 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUSION2) },
91 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) }, 92 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) },
92 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) }, 93 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) },
94 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_GTMAX36) },
93 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, 95 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) },
94 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) }, 96 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) },
95 { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) }, 97 { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) },
@@ -104,6 +106,7 @@ static struct usb_device_id option_ids1[] = {
104 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUSION2) }, 106 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUSION2) },
105 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) }, 107 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) },
106 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) }, 108 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) },
109 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_GTMAX36) },
107 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, 110 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) },
108 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) }, 111 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) },
109 { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) }, 112 { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) },
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index cddef3efba0a..b49f2a78189e 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -197,6 +197,13 @@ UNUSUAL_DEV( 0x0421, 0x047c, 0x0370, 0x0370,
197 US_SC_DEVICE, US_PR_DEVICE, NULL, 197 US_SC_DEVICE, US_PR_DEVICE, NULL,
198 US_FL_MAX_SECTORS_64 ), 198 US_FL_MAX_SECTORS_64 ),
199 199
200/* Reported by Manuel Osdoba <manuel.osdoba@tu-ilmenau.de> */
201UNUSUAL_DEV( 0x0421, 0x0492, 0x0452, 0x0452,
202 "Nokia",
203 "Nokia 6233",
204 US_SC_DEVICE, US_PR_DEVICE, NULL,
205 US_FL_MAX_SECTORS_64 ),
206
200/* Reported by Alex Corcoles <alex@corcoles.net> */ 207/* Reported by Alex Corcoles <alex@corcoles.net> */
201UNUSUAL_DEV( 0x0421, 0x0495, 0x0370, 0x0370, 208UNUSUAL_DEV( 0x0421, 0x0495, 0x0370, 0x0370,
202 "Nokia", 209 "Nokia",
@@ -254,6 +261,18 @@ UNUSUAL_DEV( 0x045a, 0x5210, 0x0101, 0x0101,
254 US_SC_SCSI, US_PR_KARMA, rio_karma_init, 0), 261 US_SC_SCSI, US_PR_KARMA, rio_karma_init, 0),
255#endif 262#endif
256 263
264/*
265 * This virtual floppy is found in Sun equipment (x4600, x4200m2, etc.)
266 * Reported by Pete Zaitcev <zaitcev@redhat.com>
267 * This device chokes on both version of MODE SENSE which we have, so
268 * use_10_for_ms is not effective, and we use US_FL_NO_WP_DETECT.
269 */
270UNUSUAL_DEV( 0x046b, 0xff40, 0x0100, 0x0100,
271 "AMI",
272 "Virtual Floppy",
273 US_SC_DEVICE, US_PR_DEVICE, NULL,
274 US_FL_NO_WP_DETECT),
275
257/* Patch submitted by Philipp Friedrich <philipp@void.at> */ 276/* Patch submitted by Philipp Friedrich <philipp@void.at> */
258UNUSUAL_DEV( 0x0482, 0x0100, 0x0100, 0x0100, 277UNUSUAL_DEV( 0x0482, 0x0100, 0x0100, 0x0100,
259 "Kyocera", 278 "Kyocera",
diff --git a/fs/9p/error.c b/fs/9p/error.c
index ae91555c1558..0d7fa4e08812 100644
--- a/fs/9p/error.c
+++ b/fs/9p/error.c
@@ -83,6 +83,7 @@ int v9fs_errstr2errno(char *errstr, int len)
83 83
84 if (errno == 0) { 84 if (errno == 0) {
85 /* TODO: if error isn't found, add it dynamically */ 85 /* TODO: if error isn't found, add it dynamically */
86 errstr[len] = 0;
86 printk(KERN_ERR "%s: errstr :%s: not found\n", __FUNCTION__, 87 printk(KERN_ERR "%s: errstr :%s: not found\n", __FUNCTION__,
87 errstr); 88 errstr);
88 errno = 1; 89 errno = 1;
diff --git a/fs/9p/fid.c b/fs/9p/fid.c
index 27507201f9e7..a9b6301a04fc 100644
--- a/fs/9p/fid.c
+++ b/fs/9p/fid.c
@@ -25,6 +25,7 @@
25#include <linux/fs.h> 25#include <linux/fs.h>
26#include <linux/sched.h> 26#include <linux/sched.h>
27#include <linux/idr.h> 27#include <linux/idr.h>
28#include <asm/semaphore.h>
28 29
29#include "debug.h" 30#include "debug.h"
30#include "v9fs.h" 31#include "v9fs.h"
@@ -84,6 +85,7 @@ struct v9fs_fid *v9fs_fid_create(struct v9fs_session_info *v9ses, int fid)
84 new->iounit = 0; 85 new->iounit = 0;
85 new->rdir_pos = 0; 86 new->rdir_pos = 0;
86 new->rdir_fcall = NULL; 87 new->rdir_fcall = NULL;
88 init_MUTEX(&new->lock);
87 INIT_LIST_HEAD(&new->list); 89 INIT_LIST_HEAD(&new->list);
88 90
89 return new; 91 return new;
@@ -102,11 +104,11 @@ void v9fs_fid_destroy(struct v9fs_fid *fid)
102} 104}
103 105
104/** 106/**
105 * v9fs_fid_lookup - retrieve the right fid from a particular dentry 107 * v9fs_fid_lookup - return a locked fid from a dentry
106 * @dentry: dentry to look for fid in 108 * @dentry: dentry to look for fid in
107 * @type: intent of lookup (operation or traversal)
108 * 109 *
109 * find a fid in the dentry 110 * find a fid in the dentry, obtain its semaphore and return a reference to it.
111 * code calling lookup is responsible for releasing lock
110 * 112 *
111 * TODO: only match fids that have the same uid as current user 113 * TODO: only match fids that have the same uid as current user
112 * 114 *
@@ -124,7 +126,68 @@ struct v9fs_fid *v9fs_fid_lookup(struct dentry *dentry)
124 126
125 if (!return_fid) { 127 if (!return_fid) {
126 dprintk(DEBUG_ERROR, "Couldn't find a fid in dentry\n"); 128 dprintk(DEBUG_ERROR, "Couldn't find a fid in dentry\n");
129 return_fid = ERR_PTR(-EBADF);
127 } 130 }
128 131
132 if(down_interruptible(&return_fid->lock))
133 return ERR_PTR(-EINTR);
134
129 return return_fid; 135 return return_fid;
130} 136}
137
138/**
139 * v9fs_fid_clone - lookup the fid for a dentry, clone a private copy and release it
140 * @dentry: dentry to look for fid in
141 *
142 * find a fid in the dentry and then clone to a new private fid
143 *
144 * TODO: only match fids that have the same uid as current user
145 *
146 */
147
148struct v9fs_fid *v9fs_fid_clone(struct dentry *dentry)
149{
150 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dentry->d_inode);
151 struct v9fs_fid *base_fid, *new_fid = ERR_PTR(-EBADF);
152 struct v9fs_fcall *fcall = NULL;
153 int fid, err;
154
155 base_fid = v9fs_fid_lookup(dentry);
156
157 if(IS_ERR(base_fid))
158 return base_fid;
159
160 if(base_fid) { /* clone fid */
161 fid = v9fs_get_idpool(&v9ses->fidpool);
162 if (fid < 0) {
163 eprintk(KERN_WARNING, "newfid fails!\n");
164 new_fid = ERR_PTR(-ENOSPC);
165 goto Release_Fid;
166 }
167
168 err = v9fs_t_walk(v9ses, base_fid->fid, fid, NULL, &fcall);
169 if (err < 0) {
170 dprintk(DEBUG_ERROR, "clone walk didn't work\n");
171 v9fs_put_idpool(fid, &v9ses->fidpool);
172 new_fid = ERR_PTR(err);
173 goto Free_Fcall;
174 }
175 new_fid = v9fs_fid_create(v9ses, fid);
176 if (new_fid == NULL) {
177 dprintk(DEBUG_ERROR, "out of memory\n");
178 new_fid = ERR_PTR(-ENOMEM);
179 }
180Free_Fcall:
181 kfree(fcall);
182 }
183
184Release_Fid:
185 up(&base_fid->lock);
186 return new_fid;
187}
188
189void v9fs_fid_clunk(struct v9fs_session_info *v9ses, struct v9fs_fid *fid)
190{
191 v9fs_t_clunk(v9ses, fid->fid);
192 v9fs_fid_destroy(fid);
193}
diff --git a/fs/9p/fid.h b/fs/9p/fid.h
index aa974d6875c3..48fc170c26c8 100644
--- a/fs/9p/fid.h
+++ b/fs/9p/fid.h
@@ -30,6 +30,8 @@ struct v9fs_fid {
30 struct list_head list; /* list of fids associated with a dentry */ 30 struct list_head list; /* list of fids associated with a dentry */
31 struct list_head active; /* XXX - debug */ 31 struct list_head active; /* XXX - debug */
32 32
33 struct semaphore lock;
34
33 u32 fid; 35 u32 fid;
34 unsigned char fidopen; /* set when fid is opened */ 36 unsigned char fidopen; /* set when fid is opened */
35 unsigned char fidclunked; /* set when fid has already been clunked */ 37 unsigned char fidclunked; /* set when fid has already been clunked */
@@ -55,3 +57,6 @@ struct v9fs_fid *v9fs_fid_get_created(struct dentry *);
55void v9fs_fid_destroy(struct v9fs_fid *fid); 57void v9fs_fid_destroy(struct v9fs_fid *fid);
56struct v9fs_fid *v9fs_fid_create(struct v9fs_session_info *, int fid); 58struct v9fs_fid *v9fs_fid_create(struct v9fs_session_info *, int fid);
57int v9fs_fid_insert(struct v9fs_fid *fid, struct dentry *dentry); 59int v9fs_fid_insert(struct v9fs_fid *fid, struct dentry *dentry);
60struct v9fs_fid *v9fs_fid_clone(struct dentry *dentry);
61void v9fs_fid_clunk(struct v9fs_session_info *v9ses, struct v9fs_fid *fid);
62
diff --git a/fs/9p/mux.c b/fs/9p/mux.c
index 944273c3dbff..147ceef8e537 100644
--- a/fs/9p/mux.c
+++ b/fs/9p/mux.c
@@ -132,8 +132,10 @@ int v9fs_mux_global_init(void)
132 v9fs_mux_poll_tasks[i].task = NULL; 132 v9fs_mux_poll_tasks[i].task = NULL;
133 133
134 v9fs_mux_wq = create_workqueue("v9fs"); 134 v9fs_mux_wq = create_workqueue("v9fs");
135 if (!v9fs_mux_wq) 135 if (!v9fs_mux_wq) {
136 printk(KERN_WARNING "v9fs: mux: creating workqueue failed\n");
136 return -ENOMEM; 137 return -ENOMEM;
138 }
137 139
138 return 0; 140 return 0;
139} 141}
diff --git a/fs/9p/v9fs.c b/fs/9p/v9fs.c
index 0b96fae8b479..d9b561ba5e58 100644
--- a/fs/9p/v9fs.c
+++ b/fs/9p/v9fs.c
@@ -457,14 +457,19 @@ static int __init init_v9fs(void)
457 457
458 v9fs_error_init(); 458 v9fs_error_init();
459 459
460 printk(KERN_INFO "Installing v9fs 9P2000 file system support\n"); 460 printk(KERN_INFO "Installing v9fs 9p2000 file system support\n");
461 461
462 ret = v9fs_mux_global_init(); 462 ret = v9fs_mux_global_init();
463 if (!ret) 463 if (ret) {
464 printk(KERN_WARNING "v9fs: starting mux failed\n");
464 return ret; 465 return ret;
466 }
465 ret = register_filesystem(&v9fs_fs_type); 467 ret = register_filesystem(&v9fs_fs_type);
466 if (!ret) 468 if (ret) {
469 printk(KERN_WARNING "v9fs: registering file system failed\n");
467 v9fs_mux_global_exit(); 470 v9fs_mux_global_exit();
471 }
472
468 return ret; 473 return ret;
469} 474}
470 475
diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
index e86a07151280..9f17b0cacdd0 100644
--- a/fs/9p/vfs_file.c
+++ b/fs/9p/vfs_file.c
@@ -55,53 +55,22 @@ int v9fs_file_open(struct inode *inode, struct file *file)
55 struct v9fs_fid *vfid; 55 struct v9fs_fid *vfid;
56 struct v9fs_fcall *fcall = NULL; 56 struct v9fs_fcall *fcall = NULL;
57 int omode; 57 int omode;
58 int fid = V9FS_NOFID;
59 int err; 58 int err;
60 59
61 dprintk(DEBUG_VFS, "inode: %p file: %p \n", inode, file); 60 dprintk(DEBUG_VFS, "inode: %p file: %p \n", inode, file);
62 61
63 vfid = v9fs_fid_lookup(file->f_path.dentry); 62 vfid = v9fs_fid_clone(file->f_path.dentry);
64 if (!vfid) { 63 if (IS_ERR(vfid))
65 dprintk(DEBUG_ERROR, "Couldn't resolve fid from dentry\n"); 64 return PTR_ERR(vfid);
66 return -EBADF;
67 }
68
69 fid = v9fs_get_idpool(&v9ses->fidpool);
70 if (fid < 0) {
71 eprintk(KERN_WARNING, "newfid fails!\n");
72 return -ENOSPC;
73 }
74 65
75 err = v9fs_t_walk(v9ses, vfid->fid, fid, NULL, &fcall);
76 if (err < 0) {
77 dprintk(DEBUG_ERROR, "rewalk didn't work\n");
78 if (fcall && fcall->id == RWALK)
79 goto clunk_fid;
80 else {
81 v9fs_put_idpool(fid, &v9ses->fidpool);
82 goto free_fcall;
83 }
84 }
85 kfree(fcall);
86
87 /* TODO: do special things for O_EXCL, O_NOFOLLOW, O_SYNC */
88 /* translate open mode appropriately */
89 omode = v9fs_uflags2omode(file->f_flags); 66 omode = v9fs_uflags2omode(file->f_flags);
90 err = v9fs_t_open(v9ses, fid, omode, &fcall); 67 err = v9fs_t_open(v9ses, vfid->fid, omode, &fcall);
91 if (err < 0) { 68 if (err < 0) {
92 PRINT_FCALL_ERROR("open failed", fcall); 69 PRINT_FCALL_ERROR("open failed", fcall);
93 goto clunk_fid; 70 goto Clunk_Fid;
94 }
95
96 vfid = kmalloc(sizeof(struct v9fs_fid), GFP_KERNEL);
97 if (vfid == NULL) {
98 dprintk(DEBUG_ERROR, "out of memory\n");
99 err = -ENOMEM;
100 goto clunk_fid;
101 } 71 }
102 72
103 file->private_data = vfid; 73 file->private_data = vfid;
104 vfid->fid = fid;
105 vfid->fidopen = 1; 74 vfid->fidopen = 1;
106 vfid->fidclunked = 0; 75 vfid->fidclunked = 0;
107 vfid->iounit = fcall->params.ropen.iounit; 76 vfid->iounit = fcall->params.ropen.iounit;
@@ -112,10 +81,8 @@ int v9fs_file_open(struct inode *inode, struct file *file)
112 81
113 return 0; 82 return 0;
114 83
115clunk_fid: 84Clunk_Fid:
116 v9fs_t_clunk(v9ses, fid); 85 v9fs_fid_clunk(v9ses, vfid);
117
118free_fcall:
119 kfree(fcall); 86 kfree(fcall);
120 87
121 return err; 88 return err;
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 18f26cdfd882..9109ba1d6969 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -416,12 +416,8 @@ static int v9fs_remove(struct inode *dir, struct dentry *file, int rmdir)
416 sb = file_inode->i_sb; 416 sb = file_inode->i_sb;
417 v9ses = v9fs_inode2v9ses(file_inode); 417 v9ses = v9fs_inode2v9ses(file_inode);
418 v9fid = v9fs_fid_lookup(file); 418 v9fid = v9fs_fid_lookup(file);
419 419 if(IS_ERR(v9fid))
420 if (!v9fid) { 420 return PTR_ERR(v9fid);
421 dprintk(DEBUG_ERROR,
422 "no v9fs_fid\n");
423 return -EBADF;
424 }
425 421
426 fid = v9fid->fid; 422 fid = v9fid->fid;
427 if (fid < 0) { 423 if (fid < 0) {
@@ -433,11 +429,13 @@ static int v9fs_remove(struct inode *dir, struct dentry *file, int rmdir)
433 result = v9fs_t_remove(v9ses, fid, &fcall); 429 result = v9fs_t_remove(v9ses, fid, &fcall);
434 if (result < 0) { 430 if (result < 0) {
435 PRINT_FCALL_ERROR("remove fails", fcall); 431 PRINT_FCALL_ERROR("remove fails", fcall);
432 goto Error;
436 } 433 }
437 434
438 v9fs_put_idpool(fid, &v9ses->fidpool); 435 v9fs_put_idpool(fid, &v9ses->fidpool);
439 v9fs_fid_destroy(v9fid); 436 v9fs_fid_destroy(v9fid);
440 437
438Error:
441 kfree(fcall); 439 kfree(fcall);
442 return result; 440 return result;
443} 441}
@@ -473,9 +471,13 @@ v9fs_vfs_create(struct inode *dir, struct dentry *dentry, int mode,
473 inode = NULL; 471 inode = NULL;
474 vfid = NULL; 472 vfid = NULL;
475 v9ses = v9fs_inode2v9ses(dir); 473 v9ses = v9fs_inode2v9ses(dir);
476 dfid = v9fs_fid_lookup(dentry->d_parent); 474 dfid = v9fs_fid_clone(dentry->d_parent);
477 perm = unixmode2p9mode(v9ses, mode); 475 if(IS_ERR(dfid)) {
476 err = PTR_ERR(dfid);
477 goto error;
478 }
478 479
480 perm = unixmode2p9mode(v9ses, mode);
479 if (nd && nd->flags & LOOKUP_OPEN) 481 if (nd && nd->flags & LOOKUP_OPEN)
480 flags = nd->intent.open.flags - 1; 482 flags = nd->intent.open.flags - 1;
481 else 483 else
@@ -485,9 +487,10 @@ v9fs_vfs_create(struct inode *dir, struct dentry *dentry, int mode,
485 perm, v9fs_uflags2omode(flags), NULL, &fid, &qid, &iounit); 487 perm, v9fs_uflags2omode(flags), NULL, &fid, &qid, &iounit);
486 488
487 if (err) 489 if (err)
488 goto error; 490 goto clunk_dfid;
489 491
490 vfid = v9fs_clone_walk(v9ses, dfid->fid, dentry); 492 vfid = v9fs_clone_walk(v9ses, dfid->fid, dentry);
493 v9fs_fid_clunk(v9ses, dfid);
491 if (IS_ERR(vfid)) { 494 if (IS_ERR(vfid)) {
492 err = PTR_ERR(vfid); 495 err = PTR_ERR(vfid);
493 vfid = NULL; 496 vfid = NULL;
@@ -525,6 +528,9 @@ v9fs_vfs_create(struct inode *dir, struct dentry *dentry, int mode,
525 528
526 return 0; 529 return 0;
527 530
531clunk_dfid:
532 v9fs_fid_clunk(v9ses, dfid);
533
528error: 534error:
529 if (vfid) 535 if (vfid)
530 v9fs_fid_destroy(vfid); 536 v9fs_fid_destroy(vfid);
@@ -551,7 +557,12 @@ static int v9fs_vfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
551 inode = NULL; 557 inode = NULL;
552 vfid = NULL; 558 vfid = NULL;
553 v9ses = v9fs_inode2v9ses(dir); 559 v9ses = v9fs_inode2v9ses(dir);
554 dfid = v9fs_fid_lookup(dentry->d_parent); 560 dfid = v9fs_fid_clone(dentry->d_parent);
561 if(IS_ERR(dfid)) {
562 err = PTR_ERR(dfid);
563 goto error;
564 }
565
555 perm = unixmode2p9mode(v9ses, mode | S_IFDIR); 566 perm = unixmode2p9mode(v9ses, mode | S_IFDIR);
556 567
557 err = v9fs_create(v9ses, dfid->fid, (char *) dentry->d_name.name, 568 err = v9fs_create(v9ses, dfid->fid, (char *) dentry->d_name.name,
@@ -559,37 +570,36 @@ static int v9fs_vfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
559 570
560 if (err) { 571 if (err) {
561 dprintk(DEBUG_ERROR, "create error %d\n", err); 572 dprintk(DEBUG_ERROR, "create error %d\n", err);
562 goto error; 573 goto clean_up_dfid;
563 }
564
565 err = v9fs_t_clunk(v9ses, fid);
566 if (err) {
567 dprintk(DEBUG_ERROR, "clunk error %d\n", err);
568 goto error;
569 } 574 }
570 575
571 vfid = v9fs_clone_walk(v9ses, dfid->fid, dentry); 576 vfid = v9fs_clone_walk(v9ses, dfid->fid, dentry);
572 if (IS_ERR(vfid)) { 577 if (IS_ERR(vfid)) {
573 err = PTR_ERR(vfid); 578 err = PTR_ERR(vfid);
574 vfid = NULL; 579 vfid = NULL;
575 goto error; 580 goto clean_up_dfid;
576 } 581 }
577 582
583 v9fs_fid_clunk(v9ses, dfid);
578 inode = v9fs_inode_from_fid(v9ses, vfid->fid, dir->i_sb); 584 inode = v9fs_inode_from_fid(v9ses, vfid->fid, dir->i_sb);
579 if (IS_ERR(inode)) { 585 if (IS_ERR(inode)) {
580 err = PTR_ERR(inode); 586 err = PTR_ERR(inode);
581 inode = NULL; 587 inode = NULL;
582 goto error; 588 goto clean_up_fids;
583 } 589 }
584 590
585 dentry->d_op = &v9fs_dentry_operations; 591 dentry->d_op = &v9fs_dentry_operations;
586 d_instantiate(dentry, inode); 592 d_instantiate(dentry, inode);
587 return 0; 593 return 0;
588 594
589error: 595clean_up_fids:
590 if (vfid) 596 if (vfid)
591 v9fs_fid_destroy(vfid); 597 v9fs_fid_destroy(vfid);
592 598
599clean_up_dfid:
600 v9fs_fid_clunk(v9ses, dfid);
601
602error:
593 return err; 603 return err;
594} 604}
595 605
@@ -622,28 +632,23 @@ static struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
622 dentry->d_op = &v9fs_dentry_operations; 632 dentry->d_op = &v9fs_dentry_operations;
623 dirfid = v9fs_fid_lookup(dentry->d_parent); 633 dirfid = v9fs_fid_lookup(dentry->d_parent);
624 634
625 if (!dirfid) { 635 if(IS_ERR(dirfid))
626 dprintk(DEBUG_ERROR, "no dirfid\n"); 636 return ERR_PTR(PTR_ERR(dirfid));
627 return ERR_PTR(-EINVAL);
628 }
629 637
630 dirfidnum = dirfid->fid; 638 dirfidnum = dirfid->fid;
631 639
632 if (dirfidnum < 0) {
633 dprintk(DEBUG_ERROR, "no dirfid for inode %p, #%lu\n",
634 dir, dir->i_ino);
635 return ERR_PTR(-EBADF);
636 }
637
638 newfid = v9fs_get_idpool(&v9ses->fidpool); 640 newfid = v9fs_get_idpool(&v9ses->fidpool);
639 if (newfid < 0) { 641 if (newfid < 0) {
640 eprintk(KERN_WARNING, "newfid fails!\n"); 642 eprintk(KERN_WARNING, "newfid fails!\n");
641 return ERR_PTR(-ENOSPC); 643 result = -ENOSPC;
644 goto Release_Dirfid;
642 } 645 }
643 646
644 result = v9fs_t_walk(v9ses, dirfidnum, newfid, 647 result = v9fs_t_walk(v9ses, dirfidnum, newfid,
645 (char *)dentry->d_name.name, &fcall); 648 (char *)dentry->d_name.name, &fcall);
646 649
650 up(&dirfid->lock);
651
647 if (result < 0) { 652 if (result < 0) {
648 if (fcall && fcall->id == RWALK) 653 if (fcall && fcall->id == RWALK)
649 v9fs_t_clunk(v9ses, newfid); 654 v9fs_t_clunk(v9ses, newfid);
@@ -701,8 +706,12 @@ static struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
701 706
702 return NULL; 707 return NULL;
703 708
704 FreeFcall: 709Release_Dirfid:
710 up(&dirfid->lock);
711
712FreeFcall:
705 kfree(fcall); 713 kfree(fcall);
714
706 return ERR_PTR(result); 715 return ERR_PTR(result);
707} 716}
708 717
@@ -746,10 +755,8 @@ v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
746 struct inode *old_inode = old_dentry->d_inode; 755 struct inode *old_inode = old_dentry->d_inode;
747 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(old_inode); 756 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(old_inode);
748 struct v9fs_fid *oldfid = v9fs_fid_lookup(old_dentry); 757 struct v9fs_fid *oldfid = v9fs_fid_lookup(old_dentry);
749 struct v9fs_fid *olddirfid = 758 struct v9fs_fid *olddirfid;
750 v9fs_fid_lookup(old_dentry->d_parent); 759 struct v9fs_fid *newdirfid;
751 struct v9fs_fid *newdirfid =
752 v9fs_fid_lookup(new_dentry->d_parent);
753 struct v9fs_wstat wstat; 760 struct v9fs_wstat wstat;
754 struct v9fs_fcall *fcall = NULL; 761 struct v9fs_fcall *fcall = NULL;
755 int fid = -1; 762 int fid = -1;
@@ -759,16 +766,26 @@ v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
759 766
760 dprintk(DEBUG_VFS, "\n"); 767 dprintk(DEBUG_VFS, "\n");
761 768
762 if ((!oldfid) || (!olddirfid) || (!newdirfid)) { 769 if(IS_ERR(oldfid))
763 dprintk(DEBUG_ERROR, "problem with arguments\n"); 770 return PTR_ERR(oldfid);
764 return -EBADF; 771
772 olddirfid = v9fs_fid_clone(old_dentry->d_parent);
773 if(IS_ERR(olddirfid)) {
774 retval = PTR_ERR(olddirfid);
775 goto Release_lock;
776 }
777
778 newdirfid = v9fs_fid_clone(new_dentry->d_parent);
779 if(IS_ERR(newdirfid)) {
780 retval = PTR_ERR(newdirfid);
781 goto Clunk_olddir;
765 } 782 }
766 783
767 /* 9P can only handle file rename in the same directory */ 784 /* 9P can only handle file rename in the same directory */
768 if (memcmp(&olddirfid->qid, &newdirfid->qid, sizeof(newdirfid->qid))) { 785 if (memcmp(&olddirfid->qid, &newdirfid->qid, sizeof(newdirfid->qid))) {
769 dprintk(DEBUG_ERROR, "old dir and new dir are different\n"); 786 dprintk(DEBUG_ERROR, "old dir and new dir are different\n");
770 retval = -EPERM; 787 retval = -EXDEV;
771 goto FreeFcallnBail; 788 goto Clunk_newdir;
772 } 789 }
773 790
774 fid = oldfid->fid; 791 fid = oldfid->fid;
@@ -779,7 +796,7 @@ v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
779 dprintk(DEBUG_ERROR, "no fid for old file #%lu\n", 796 dprintk(DEBUG_ERROR, "no fid for old file #%lu\n",
780 old_inode->i_ino); 797 old_inode->i_ino);
781 retval = -EBADF; 798 retval = -EBADF;
782 goto FreeFcallnBail; 799 goto Clunk_newdir;
783 } 800 }
784 801
785 v9fs_blank_wstat(&wstat); 802 v9fs_blank_wstat(&wstat);
@@ -788,11 +805,20 @@ v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
788 805
789 retval = v9fs_t_wstat(v9ses, fid, &wstat, &fcall); 806 retval = v9fs_t_wstat(v9ses, fid, &wstat, &fcall);
790 807
791 FreeFcallnBail:
792 if (retval < 0) 808 if (retval < 0)
793 PRINT_FCALL_ERROR("wstat error", fcall); 809 PRINT_FCALL_ERROR("wstat error", fcall);
794 810
795 kfree(fcall); 811 kfree(fcall);
812
813Clunk_newdir:
814 v9fs_fid_clunk(v9ses, newdirfid);
815
816Clunk_olddir:
817 v9fs_fid_clunk(v9ses, olddirfid);
818
819Release_lock:
820 up(&oldfid->lock);
821
796 return retval; 822 return retval;
797} 823}
798 824
@@ -810,15 +836,12 @@ v9fs_vfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
810{ 836{
811 struct v9fs_fcall *fcall = NULL; 837 struct v9fs_fcall *fcall = NULL;
812 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dentry->d_inode); 838 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dentry->d_inode);
813 struct v9fs_fid *fid = v9fs_fid_lookup(dentry); 839 struct v9fs_fid *fid = v9fs_fid_clone(dentry);
814 int err = -EPERM; 840 int err = -EPERM;
815 841
816 dprintk(DEBUG_VFS, "dentry: %p\n", dentry); 842 dprintk(DEBUG_VFS, "dentry: %p\n", dentry);
817 if (!fid) { 843 if(IS_ERR(fid))
818 dprintk(DEBUG_ERROR, 844 return PTR_ERR(fid);
819 "couldn't find fid associated with dentry\n");
820 return -EBADF;
821 }
822 845
823 err = v9fs_t_stat(v9ses, fid->fid, &fcall); 846 err = v9fs_t_stat(v9ses, fid->fid, &fcall);
824 847
@@ -831,6 +854,7 @@ v9fs_vfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
831 } 854 }
832 855
833 kfree(fcall); 856 kfree(fcall);
857 v9fs_fid_clunk(v9ses, fid);
834 return err; 858 return err;
835} 859}
836 860
@@ -844,18 +868,14 @@ v9fs_vfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
844static int v9fs_vfs_setattr(struct dentry *dentry, struct iattr *iattr) 868static int v9fs_vfs_setattr(struct dentry *dentry, struct iattr *iattr)
845{ 869{
846 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dentry->d_inode); 870 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dentry->d_inode);
847 struct v9fs_fid *fid = v9fs_fid_lookup(dentry); 871 struct v9fs_fid *fid = v9fs_fid_clone(dentry);
848 struct v9fs_fcall *fcall = NULL; 872 struct v9fs_fcall *fcall = NULL;
849 struct v9fs_wstat wstat; 873 struct v9fs_wstat wstat;
850 int res = -EPERM; 874 int res = -EPERM;
851 875
852 dprintk(DEBUG_VFS, "\n"); 876 dprintk(DEBUG_VFS, "\n");
853 877 if(IS_ERR(fid))
854 if (!fid) { 878 return PTR_ERR(fid);
855 dprintk(DEBUG_ERROR,
856 "Couldn't find fid associated with dentry\n");
857 return -EBADF;
858 }
859 879
860 v9fs_blank_wstat(&wstat); 880 v9fs_blank_wstat(&wstat);
861 if (iattr->ia_valid & ATTR_MODE) 881 if (iattr->ia_valid & ATTR_MODE)
@@ -887,6 +907,7 @@ static int v9fs_vfs_setattr(struct dentry *dentry, struct iattr *iattr)
887 if (res >= 0) 907 if (res >= 0)
888 res = inode_setattr(dentry->d_inode, iattr); 908 res = inode_setattr(dentry->d_inode, iattr);
889 909
910 v9fs_fid_clunk(v9ses, fid);
890 return res; 911 return res;
891} 912}
892 913
@@ -987,18 +1008,15 @@ static int v9fs_readlink(struct dentry *dentry, char *buffer, int buflen)
987 1008
988 struct v9fs_fcall *fcall = NULL; 1009 struct v9fs_fcall *fcall = NULL;
989 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dentry->d_inode); 1010 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dentry->d_inode);
990 struct v9fs_fid *fid = v9fs_fid_lookup(dentry); 1011 struct v9fs_fid *fid = v9fs_fid_clone(dentry);
991 1012
992 if (!fid) { 1013 if(IS_ERR(fid))
993 dprintk(DEBUG_ERROR, "could not resolve fid from dentry\n"); 1014 return PTR_ERR(fid);
994 retval = -EBADF;
995 goto FreeFcall;
996 }
997 1015
998 if (!v9ses->extended) { 1016 if (!v9ses->extended) {
999 retval = -EBADF; 1017 retval = -EBADF;
1000 dprintk(DEBUG_ERROR, "not extended\n"); 1018 dprintk(DEBUG_ERROR, "not extended\n");
1001 goto FreeFcall; 1019 goto ClunkFid;
1002 } 1020 }
1003 1021
1004 dprintk(DEBUG_VFS, " %s\n", dentry->d_name.name); 1022 dprintk(DEBUG_VFS, " %s\n", dentry->d_name.name);
@@ -1009,8 +1027,10 @@ static int v9fs_readlink(struct dentry *dentry, char *buffer, int buflen)
1009 goto FreeFcall; 1027 goto FreeFcall;
1010 } 1028 }
1011 1029
1012 if (!fcall) 1030 if (!fcall) {
1013 return -EIO; 1031 retval = -EIO;
1032 goto ClunkFid;
1033 }
1014 1034
1015 if (!(fcall->params.rstat.stat.mode & V9FS_DMSYMLINK)) { 1035 if (!(fcall->params.rstat.stat.mode & V9FS_DMSYMLINK)) {
1016 retval = -EINVAL; 1036 retval = -EINVAL;
@@ -1028,9 +1048,12 @@ static int v9fs_readlink(struct dentry *dentry, char *buffer, int buflen)
1028 fcall->params.rstat.stat.extension.str, buffer); 1048 fcall->params.rstat.stat.extension.str, buffer);
1029 retval = buflen; 1049 retval = buflen;
1030 1050
1031 FreeFcall: 1051FreeFcall:
1032 kfree(fcall); 1052 kfree(fcall);
1033 1053
1054ClunkFid:
1055 v9fs_fid_clunk(v9ses, fid);
1056
1034 return retval; 1057 return retval;
1035} 1058}
1036 1059
@@ -1123,52 +1146,58 @@ static int v9fs_vfs_mkspecial(struct inode *dir, struct dentry *dentry,
1123 int err; 1146 int err;
1124 u32 fid, perm; 1147 u32 fid, perm;
1125 struct v9fs_session_info *v9ses; 1148 struct v9fs_session_info *v9ses;
1126 struct v9fs_fid *dfid, *vfid; 1149 struct v9fs_fid *dfid, *vfid = NULL;
1127 struct inode *inode; 1150 struct inode *inode = NULL;
1128 1151
1129 inode = NULL;
1130 vfid = NULL;
1131 v9ses = v9fs_inode2v9ses(dir); 1152 v9ses = v9fs_inode2v9ses(dir);
1132 dfid = v9fs_fid_lookup(dentry->d_parent);
1133 perm = unixmode2p9mode(v9ses, mode);
1134
1135 if (!v9ses->extended) { 1153 if (!v9ses->extended) {
1136 dprintk(DEBUG_ERROR, "not extended\n"); 1154 dprintk(DEBUG_ERROR, "not extended\n");
1137 return -EPERM; 1155 return -EPERM;
1138 } 1156 }
1139 1157
1158 dfid = v9fs_fid_clone(dentry->d_parent);
1159 if(IS_ERR(dfid)) {
1160 err = PTR_ERR(dfid);
1161 goto error;
1162 }
1163
1164 perm = unixmode2p9mode(v9ses, mode);
1165
1140 err = v9fs_create(v9ses, dfid->fid, (char *) dentry->d_name.name, 1166 err = v9fs_create(v9ses, dfid->fid, (char *) dentry->d_name.name,
1141 perm, V9FS_OREAD, (char *) extension, &fid, NULL, NULL); 1167 perm, V9FS_OREAD, (char *) extension, &fid, NULL, NULL);
1142 1168
1143 if (err) 1169 if (err)
1144 goto error; 1170 goto clunk_dfid;
1145 1171
1146 err = v9fs_t_clunk(v9ses, fid); 1172 err = v9fs_t_clunk(v9ses, fid);
1147 if (err) 1173 if (err)
1148 goto error; 1174 goto clunk_dfid;
1149 1175
1150 vfid = v9fs_clone_walk(v9ses, dfid->fid, dentry); 1176 vfid = v9fs_clone_walk(v9ses, dfid->fid, dentry);
1151 if (IS_ERR(vfid)) { 1177 if (IS_ERR(vfid)) {
1152 err = PTR_ERR(vfid); 1178 err = PTR_ERR(vfid);
1153 vfid = NULL; 1179 vfid = NULL;
1154 goto error; 1180 goto clunk_dfid;
1155 } 1181 }
1156 1182
1157 inode = v9fs_inode_from_fid(v9ses, vfid->fid, dir->i_sb); 1183 inode = v9fs_inode_from_fid(v9ses, vfid->fid, dir->i_sb);
1158 if (IS_ERR(inode)) { 1184 if (IS_ERR(inode)) {
1159 err = PTR_ERR(inode); 1185 err = PTR_ERR(inode);
1160 inode = NULL; 1186 inode = NULL;
1161 goto error; 1187 goto free_vfid;
1162 } 1188 }
1163 1189
1164 dentry->d_op = &v9fs_dentry_operations; 1190 dentry->d_op = &v9fs_dentry_operations;
1165 d_instantiate(dentry, inode); 1191 d_instantiate(dentry, inode);
1166 return 0; 1192 return 0;
1167 1193
1168error: 1194free_vfid:
1169 if (vfid) 1195 v9fs_fid_destroy(vfid);
1170 v9fs_fid_destroy(vfid); 1196
1197clunk_dfid:
1198 v9fs_fid_clunk(v9ses, dfid);
1171 1199
1200error:
1172 return err; 1201 return err;
1173 1202
1174} 1203}
@@ -1209,26 +1238,29 @@ v9fs_vfs_link(struct dentry *old_dentry, struct inode *dir,
1209 struct dentry *dentry) 1238 struct dentry *dentry)
1210{ 1239{
1211 int retval; 1240 int retval;
1241 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dir);
1212 struct v9fs_fid *oldfid; 1242 struct v9fs_fid *oldfid;
1213 char *name; 1243 char *name;
1214 1244
1215 dprintk(DEBUG_VFS, " %lu,%s,%s\n", dir->i_ino, dentry->d_name.name, 1245 dprintk(DEBUG_VFS, " %lu,%s,%s\n", dir->i_ino, dentry->d_name.name,
1216 old_dentry->d_name.name); 1246 old_dentry->d_name.name);
1217 1247
1218 oldfid = v9fs_fid_lookup(old_dentry); 1248 oldfid = v9fs_fid_clone(old_dentry);
1219 if (!oldfid) { 1249 if(IS_ERR(oldfid))
1220 dprintk(DEBUG_ERROR, "can't find oldfid\n"); 1250 return PTR_ERR(oldfid);
1221 return -EPERM;
1222 }
1223 1251
1224 name = __getname(); 1252 name = __getname();
1225 if (unlikely(!name)) 1253 if (unlikely(!name)) {
1226 return -ENOMEM; 1254 retval = -ENOMEM;
1255 goto clunk_fid;
1256 }
1227 1257
1228 sprintf(name, "%d\n", oldfid->fid); 1258 sprintf(name, "%d\n", oldfid->fid);
1229 retval = v9fs_vfs_mkspecial(dir, dentry, V9FS_DMLINK, name); 1259 retval = v9fs_vfs_mkspecial(dir, dentry, V9FS_DMLINK, name);
1230 __putname(name); 1260 __putname(name);
1231 1261
1262clunk_fid:
1263 v9fs_fid_clunk(v9ses, oldfid);
1232 return retval; 1264 return retval;
1233} 1265}
1234 1266
diff --git a/fs/aio.c b/fs/aio.c
index ee20fc4240e0..55991e4132a7 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -298,17 +298,23 @@ static void wait_for_all_aios(struct kioctx *ctx)
298 struct task_struct *tsk = current; 298 struct task_struct *tsk = current;
299 DECLARE_WAITQUEUE(wait, tsk); 299 DECLARE_WAITQUEUE(wait, tsk);
300 300
301 spin_lock_irq(&ctx->ctx_lock);
301 if (!ctx->reqs_active) 302 if (!ctx->reqs_active)
302 return; 303 goto out;
303 304
304 add_wait_queue(&ctx->wait, &wait); 305 add_wait_queue(&ctx->wait, &wait);
305 set_task_state(tsk, TASK_UNINTERRUPTIBLE); 306 set_task_state(tsk, TASK_UNINTERRUPTIBLE);
306 while (ctx->reqs_active) { 307 while (ctx->reqs_active) {
308 spin_unlock_irq(&ctx->ctx_lock);
307 schedule(); 309 schedule();
308 set_task_state(tsk, TASK_UNINTERRUPTIBLE); 310 set_task_state(tsk, TASK_UNINTERRUPTIBLE);
311 spin_lock_irq(&ctx->ctx_lock);
309 } 312 }
310 __set_task_state(tsk, TASK_RUNNING); 313 __set_task_state(tsk, TASK_RUNNING);
311 remove_wait_queue(&ctx->wait, &wait); 314 remove_wait_queue(&ctx->wait, &wait);
315
316out:
317 spin_unlock_irq(&ctx->ctx_lock);
312} 318}
313 319
314/* wait_on_sync_kiocb: 320/* wait_on_sync_kiocb:
@@ -424,7 +430,6 @@ static struct kiocb fastcall *__aio_get_req(struct kioctx *ctx)
424 ring = kmap_atomic(ctx->ring_info.ring_pages[0], KM_USER0); 430 ring = kmap_atomic(ctx->ring_info.ring_pages[0], KM_USER0);
425 if (ctx->reqs_active < aio_ring_avail(&ctx->ring_info, ring)) { 431 if (ctx->reqs_active < aio_ring_avail(&ctx->ring_info, ring)) {
426 list_add(&req->ki_list, &ctx->active_reqs); 432 list_add(&req->ki_list, &ctx->active_reqs);
427 get_ioctx(ctx);
428 ctx->reqs_active++; 433 ctx->reqs_active++;
429 okay = 1; 434 okay = 1;
430 } 435 }
@@ -536,8 +541,6 @@ int fastcall aio_put_req(struct kiocb *req)
536 spin_lock_irq(&ctx->ctx_lock); 541 spin_lock_irq(&ctx->ctx_lock);
537 ret = __aio_put_req(ctx, req); 542 ret = __aio_put_req(ctx, req);
538 spin_unlock_irq(&ctx->ctx_lock); 543 spin_unlock_irq(&ctx->ctx_lock);
539 if (ret)
540 put_ioctx(ctx);
541 return ret; 544 return ret;
542} 545}
543 546
@@ -779,8 +782,7 @@ static int __aio_run_iocbs(struct kioctx *ctx)
779 */ 782 */
780 iocb->ki_users++; /* grab extra reference */ 783 iocb->ki_users++; /* grab extra reference */
781 aio_run_iocb(iocb); 784 aio_run_iocb(iocb);
782 if (__aio_put_req(ctx, iocb)) /* drop extra ref */ 785 __aio_put_req(ctx, iocb);
783 put_ioctx(ctx);
784 } 786 }
785 if (!list_empty(&ctx->run_list)) 787 if (!list_empty(&ctx->run_list))
786 return 1; 788 return 1;
@@ -997,14 +999,10 @@ put_rq:
997 /* everything turned out well, dispose of the aiocb. */ 999 /* everything turned out well, dispose of the aiocb. */
998 ret = __aio_put_req(ctx, iocb); 1000 ret = __aio_put_req(ctx, iocb);
999 1001
1000 spin_unlock_irqrestore(&ctx->ctx_lock, flags);
1001
1002 if (waitqueue_active(&ctx->wait)) 1002 if (waitqueue_active(&ctx->wait))
1003 wake_up(&ctx->wait); 1003 wake_up(&ctx->wait);
1004 1004
1005 if (ret) 1005 spin_unlock_irqrestore(&ctx->ctx_lock, flags);
1006 put_ioctx(ctx);
1007
1008 return ret; 1006 return ret;
1009} 1007}
1010 1008
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 7cb28720f90e..669dbe5b0317 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -682,6 +682,15 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
682 retval = PTR_ERR(interpreter); 682 retval = PTR_ERR(interpreter);
683 if (IS_ERR(interpreter)) 683 if (IS_ERR(interpreter))
684 goto out_free_interp; 684 goto out_free_interp;
685
686 /*
687 * If the binary is not readable then enforce
688 * mm->dumpable = 0 regardless of the interpreter's
689 * permissions.
690 */
691 if (file_permission(interpreter, MAY_READ) < 0)
692 bprm->interp_flags |= BINPRM_FLAGS_ENFORCE_NONDUMP;
693
685 retval = kernel_read(interpreter, 0, bprm->buf, 694 retval = kernel_read(interpreter, 0, bprm->buf,
686 BINPRM_BUF_SIZE); 695 BINPRM_BUF_SIZE);
687 if (retval != BINPRM_BUF_SIZE) { 696 if (retval != BINPRM_BUF_SIZE) {
@@ -1178,6 +1187,10 @@ static int dump_seek(struct file *file, loff_t off)
1178 */ 1187 */
1179static int maydump(struct vm_area_struct *vma) 1188static int maydump(struct vm_area_struct *vma)
1180{ 1189{
1190 /* The vma can be set up to tell us the answer directly. */
1191 if (vma->vm_flags & VM_ALWAYSDUMP)
1192 return 1;
1193
1181 /* Do not dump I/O mapped devices or special mappings */ 1194 /* Do not dump I/O mapped devices or special mappings */
1182 if (vma->vm_flags & (VM_IO | VM_RESERVED)) 1195 if (vma->vm_flags & (VM_IO | VM_RESERVED))
1183 return 0; 1196 return 0;
@@ -1424,6 +1437,32 @@ static int elf_dump_thread_status(long signr, struct elf_thread_status *t)
1424 return sz; 1437 return sz;
1425} 1438}
1426 1439
1440static struct vm_area_struct *first_vma(struct task_struct *tsk,
1441 struct vm_area_struct *gate_vma)
1442{
1443 struct vm_area_struct *ret = tsk->mm->mmap;
1444
1445 if (ret)
1446 return ret;
1447 return gate_vma;
1448}
1449/*
1450 * Helper function for iterating across a vma list. It ensures that the caller
1451 * will visit `gate_vma' prior to terminating the search.
1452 */
1453static struct vm_area_struct *next_vma(struct vm_area_struct *this_vma,
1454 struct vm_area_struct *gate_vma)
1455{
1456 struct vm_area_struct *ret;
1457
1458 ret = this_vma->vm_next;
1459 if (ret)
1460 return ret;
1461 if (this_vma == gate_vma)
1462 return NULL;
1463 return gate_vma;
1464}
1465
1427/* 1466/*
1428 * Actual dumper 1467 * Actual dumper
1429 * 1468 *
@@ -1439,7 +1478,7 @@ static int elf_core_dump(long signr, struct pt_regs *regs, struct file *file)
1439 int segs; 1478 int segs;
1440 size_t size = 0; 1479 size_t size = 0;
1441 int i; 1480 int i;
1442 struct vm_area_struct *vma; 1481 struct vm_area_struct *vma, *gate_vma;
1443 struct elfhdr *elf = NULL; 1482 struct elfhdr *elf = NULL;
1444 loff_t offset = 0, dataoff, foffset; 1483 loff_t offset = 0, dataoff, foffset;
1445 unsigned long limit = current->signal->rlim[RLIMIT_CORE].rlim_cur; 1484 unsigned long limit = current->signal->rlim[RLIMIT_CORE].rlim_cur;
@@ -1525,6 +1564,10 @@ static int elf_core_dump(long signr, struct pt_regs *regs, struct file *file)
1525 segs += ELF_CORE_EXTRA_PHDRS; 1564 segs += ELF_CORE_EXTRA_PHDRS;
1526#endif 1565#endif
1527 1566
1567 gate_vma = get_gate_vma(current);
1568 if (gate_vma != NULL)
1569 segs++;
1570
1528 /* Set up header */ 1571 /* Set up header */
1529 fill_elf_header(elf, segs + 1); /* including notes section */ 1572 fill_elf_header(elf, segs + 1); /* including notes section */
1530 1573
@@ -1592,7 +1635,8 @@ static int elf_core_dump(long signr, struct pt_regs *regs, struct file *file)
1592 dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE); 1635 dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE);
1593 1636
1594 /* Write program headers for segments dump */ 1637 /* Write program headers for segments dump */
1595 for (vma = current->mm->mmap; vma != NULL; vma = vma->vm_next) { 1638 for (vma = first_vma(current, gate_vma); vma != NULL;
1639 vma = next_vma(vma, gate_vma)) {
1596 struct elf_phdr phdr; 1640 struct elf_phdr phdr;
1597 size_t sz; 1641 size_t sz;
1598 1642
@@ -1641,7 +1685,8 @@ static int elf_core_dump(long signr, struct pt_regs *regs, struct file *file)
1641 /* Align to page */ 1685 /* Align to page */
1642 DUMP_SEEK(dataoff - foffset); 1686 DUMP_SEEK(dataoff - foffset);
1643 1687
1644 for (vma = current->mm->mmap; vma != NULL; vma = vma->vm_next) { 1688 for (vma = first_vma(current, gate_vma); vma != NULL;
1689 vma = next_vma(vma, gate_vma)) {
1645 unsigned long addr; 1690 unsigned long addr;
1646 1691
1647 if (!maydump(vma)) 1692 if (!maydump(vma))
diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c
index 6e6d4568d548..a4d933a51208 100644
--- a/fs/binfmt_elf_fdpic.c
+++ b/fs/binfmt_elf_fdpic.c
@@ -234,6 +234,14 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm,
234 goto error; 234 goto error;
235 } 235 }
236 236
237 /*
238 * If the binary is not readable then enforce
239 * mm->dumpable = 0 regardless of the interpreter's
240 * permissions.
241 */
242 if (file_permission(interpreter, MAY_READ) < 0)
243 bprm->interp_flags |= BINPRM_FLAGS_ENFORCE_NONDUMP;
244
237 retval = kernel_read(interpreter, 0, bprm->buf, 245 retval = kernel_read(interpreter, 0, bprm->buf,
238 BINPRM_BUF_SIZE); 246 BINPRM_BUF_SIZE);
239 if (retval < 0) 247 if (retval < 0)
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 8b18e43b82fe..fc7028b685f2 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -129,6 +129,46 @@ blkdev_get_block(struct inode *inode, sector_t iblock,
129 return 0; 129 return 0;
130} 130}
131 131
132static int
133blkdev_get_blocks(struct inode *inode, sector_t iblock,
134 struct buffer_head *bh, int create)
135{
136 sector_t end_block = max_block(I_BDEV(inode));
137 unsigned long max_blocks = bh->b_size >> inode->i_blkbits;
138
139 if ((iblock + max_blocks) > end_block) {
140 max_blocks = end_block - iblock;
141 if ((long)max_blocks <= 0) {
142 if (create)
143 return -EIO; /* write fully beyond EOF */
144 /*
145 * It is a read which is fully beyond EOF. We return
146 * a !buffer_mapped buffer
147 */
148 max_blocks = 0;
149 }
150 }
151
152 bh->b_bdev = I_BDEV(inode);
153 bh->b_blocknr = iblock;
154 bh->b_size = max_blocks << inode->i_blkbits;
155 if (max_blocks)
156 set_buffer_mapped(bh);
157 return 0;
158}
159
160static ssize_t
161blkdev_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
162 loff_t offset, unsigned long nr_segs)
163{
164 struct file *file = iocb->ki_filp;
165 struct inode *inode = file->f_mapping->host;
166
167 return blockdev_direct_IO_no_locking(rw, iocb, inode, I_BDEV(inode),
168 iov, offset, nr_segs, blkdev_get_blocks, NULL);
169}
170
171#if 0
132static int blk_end_aio(struct bio *bio, unsigned int bytes_done, int error) 172static int blk_end_aio(struct bio *bio, unsigned int bytes_done, int error)
133{ 173{
134 struct kiocb *iocb = bio->bi_private; 174 struct kiocb *iocb = bio->bi_private;
@@ -146,7 +186,7 @@ static int blk_end_aio(struct bio *bio, unsigned int bytes_done, int error)
146 iocb->ki_nbytes = -EIO; 186 iocb->ki_nbytes = -EIO;
147 187
148 if (atomic_dec_and_test(bio_count)) { 188 if (atomic_dec_and_test(bio_count)) {
149 if (iocb->ki_nbytes < 0) 189 if ((long)iocb->ki_nbytes < 0)
150 aio_complete(iocb, iocb->ki_nbytes, 0); 190 aio_complete(iocb, iocb->ki_nbytes, 0);
151 else 191 else
152 aio_complete(iocb, iocb->ki_left, 0); 192 aio_complete(iocb, iocb->ki_left, 0);
@@ -190,6 +230,12 @@ static struct page *blk_get_page(unsigned long addr, size_t count, int rw,
190 return pvec->page[pvec->idx++]; 230 return pvec->page[pvec->idx++];
191} 231}
192 232
233/* return a page back to pvec array */
234static void blk_unget_page(struct page *page, struct pvec *pvec)
235{
236 pvec->page[--pvec->idx] = page;
237}
238
193static ssize_t 239static ssize_t
194blkdev_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov, 240blkdev_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
195 loff_t pos, unsigned long nr_segs) 241 loff_t pos, unsigned long nr_segs)
@@ -278,6 +324,8 @@ same_bio:
278 count = min(count, nbytes); 324 count = min(count, nbytes);
279 goto same_bio; 325 goto same_bio;
280 } 326 }
327 } else {
328 blk_unget_page(page, &pvec);
281 } 329 }
282 330
283 /* bio is ready, submit it */ 331 /* bio is ready, submit it */
@@ -315,6 +363,7 @@ backout:
315 return PTR_ERR(page); 363 return PTR_ERR(page);
316 goto completion; 364 goto completion;
317} 365}
366#endif
318 367
319static int blkdev_writepage(struct page *page, struct writeback_control *wbc) 368static int blkdev_writepage(struct page *page, struct writeback_control *wbc)
320{ 369{
diff --git a/fs/buffer.c b/fs/buffer.c
index 3b116078b4c3..1ad674fd348c 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -2834,7 +2834,7 @@ int try_to_free_buffers(struct page *page)
2834 int ret = 0; 2834 int ret = 0;
2835 2835
2836 BUG_ON(!PageLocked(page)); 2836 BUG_ON(!PageLocked(page));
2837 if (PageDirty(page) || PageWriteback(page)) 2837 if (PageWriteback(page))
2838 return 0; 2838 return 0;
2839 2839
2840 if (mapping == NULL) { /* can this still happen? */ 2840 if (mapping == NULL) { /* can this still happen? */
@@ -2844,6 +2844,23 @@ int try_to_free_buffers(struct page *page)
2844 2844
2845 spin_lock(&mapping->private_lock); 2845 spin_lock(&mapping->private_lock);
2846 ret = drop_buffers(page, &buffers_to_free); 2846 ret = drop_buffers(page, &buffers_to_free);
2847
2848 /*
2849 * If the filesystem writes its buffers by hand (eg ext3)
2850 * then we can have clean buffers against a dirty page. We
2851 * clean the page here; otherwise the VM will never notice
2852 * that the filesystem did any IO at all.
2853 *
2854 * Also, during truncate, discard_buffer will have marked all
2855 * the page's buffers clean. We discover that here and clean
2856 * the page also.
2857 *
2858 * private_lock must be held over this entire operation in order
2859 * to synchronise against __set_page_dirty_buffers and prevent the
2860 * dirty bit from being lost.
2861 */
2862 if (ret)
2863 cancel_dirty_page(page, PAGE_CACHE_SIZE);
2847 spin_unlock(&mapping->private_lock); 2864 spin_unlock(&mapping->private_lock);
2848out: 2865out:
2849 if (buffers_to_free) { 2866 if (buffers_to_free) {
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 3539d6ef9611..d04d2f7448d9 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -1,3 +1,7 @@
1Version 1.47
2------------
3Fix oops in list_del during mount caused by unaligned string.
4
1Version 1.46 5Version 1.46
2------------ 6------------
3Support deep tree mounts. Better support OS/2, Win9x (DOS) time stamps. 7Support deep tree mounts. Better support OS/2, Win9x (DOS) time stamps.
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
index 96abeb738978..6017c465440e 100644
--- a/fs/cifs/cifs_debug.c
+++ b/fs/cifs/cifs_debug.c
@@ -143,8 +143,8 @@ cifs_debug_data_read(char *buf, char **beginBuffer, off_t offset,
143 ses = list_entry(tmp, struct cifsSesInfo, cifsSessionList); 143 ses = list_entry(tmp, struct cifsSesInfo, cifsSessionList);
144 if((ses->serverDomain == NULL) || (ses->serverOS == NULL) || 144 if((ses->serverDomain == NULL) || (ses->serverOS == NULL) ||
145 (ses->serverNOS == NULL)) { 145 (ses->serverNOS == NULL)) {
146 buf += sprintf("\nentry for %s not fully displayed\n\t", 146 buf += sprintf(buf, "\nentry for %s not fully "
147 ses->serverName); 147 "displayed\n\t", ses->serverName);
148 148
149 } else { 149 } else {
150 length = 150 length =
diff --git a/fs/cifs/cifsfs.h b/fs/cifs/cifsfs.h
index a243f779b363..8aa66dcf13bd 100644
--- a/fs/cifs/cifsfs.h
+++ b/fs/cifs/cifsfs.h
@@ -100,5 +100,5 @@ extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t);
100extern ssize_t cifs_listxattr(struct dentry *, char *, size_t); 100extern ssize_t cifs_listxattr(struct dentry *, char *, size_t);
101extern int cifs_ioctl (struct inode * inode, struct file * filep, 101extern int cifs_ioctl (struct inode * inode, struct file * filep,
102 unsigned int command, unsigned long arg); 102 unsigned int command, unsigned long arg);
103#define CIFS_VERSION "1.46" 103#define CIFS_VERSION "1.47"
104#endif /* _CIFSFS_H */ 104#endif /* _CIFSFS_H */
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
index aedf683f011f..19cc294c7c70 100644
--- a/fs/cifs/misc.c
+++ b/fs/cifs/misc.c
@@ -71,9 +71,7 @@ sesInfoAlloc(void)
71{ 71{
72 struct cifsSesInfo *ret_buf; 72 struct cifsSesInfo *ret_buf;
73 73
74 ret_buf = 74 ret_buf = kzalloc(sizeof (struct cifsSesInfo), GFP_KERNEL);
75 (struct cifsSesInfo *) kzalloc(sizeof (struct cifsSesInfo),
76 GFP_KERNEL);
77 if (ret_buf) { 75 if (ret_buf) {
78 write_lock(&GlobalSMBSeslock); 76 write_lock(&GlobalSMBSeslock);
79 atomic_inc(&sesInfoAllocCount); 77 atomic_inc(&sesInfoAllocCount);
@@ -109,9 +107,7 @@ struct cifsTconInfo *
109tconInfoAlloc(void) 107tconInfoAlloc(void)
110{ 108{
111 struct cifsTconInfo *ret_buf; 109 struct cifsTconInfo *ret_buf;
112 ret_buf = 110 ret_buf = kzalloc(sizeof (struct cifsTconInfo), GFP_KERNEL);
113 (struct cifsTconInfo *) kzalloc(sizeof (struct cifsTconInfo),
114 GFP_KERNEL);
115 if (ret_buf) { 111 if (ret_buf) {
116 write_lock(&GlobalSMBSeslock); 112 write_lock(&GlobalSMBSeslock);
117 atomic_inc(&tconInfoAllocCount); 113 atomic_inc(&tconInfoAllocCount);
diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c
index bbdda99dce61..758464630893 100644
--- a/fs/cifs/sess.c
+++ b/fs/cifs/sess.c
@@ -182,11 +182,14 @@ static int decode_unicode_ssetup(char ** pbcc_area, int bleft, struct cifsSesInf
182 cFYI(1,("bleft %d",bleft)); 182 cFYI(1,("bleft %d",bleft));
183 183
184 184
185 /* word align, if bytes remaining is not even */ 185 /* SMB header is unaligned, so cifs servers word align start of
186 if(bleft % 2) { 186 Unicode strings */
187 bleft--; 187 data++;
188 data++; 188 bleft--; /* Windows servers do not always double null terminate
189 } 189 their final Unicode string - in which case we
190 now will not attempt to decode the byte of junk
191 which follows it */
192
190 words_left = bleft / 2; 193 words_left = bleft / 2;
191 194
192 /* save off server operating system */ 195 /* save off server operating system */
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index c403b66ec83c..a4b142a6a2c7 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -251,8 +251,19 @@ __writeback_single_inode(struct inode *inode, struct writeback_control *wbc)
251 WARN_ON(inode->i_state & I_WILL_FREE); 251 WARN_ON(inode->i_state & I_WILL_FREE);
252 252
253 if ((wbc->sync_mode != WB_SYNC_ALL) && (inode->i_state & I_LOCK)) { 253 if ((wbc->sync_mode != WB_SYNC_ALL) && (inode->i_state & I_LOCK)) {
254 struct address_space *mapping = inode->i_mapping;
255 int ret;
256
254 list_move(&inode->i_list, &inode->i_sb->s_dirty); 257 list_move(&inode->i_list, &inode->i_sb->s_dirty);
255 return 0; 258
259 /*
260 * Even if we don't actually write the inode itself here,
261 * we can at least start some of the data writeout..
262 */
263 spin_unlock(&inode_lock);
264 ret = do_writepages(mapping, wbc);
265 spin_lock(&inode_lock);
266 return ret;
256 } 267 }
257 268
258 /* 269 /*
diff --git a/fs/fuse/control.c b/fs/fuse/control.c
index 8c58bd453993..1794305f9ed8 100644
--- a/fs/fuse/control.c
+++ b/fs/fuse/control.c
@@ -193,8 +193,12 @@ static int fuse_ctl_get_sb(struct file_system_type *fs_type, int flags,
193 193
194static void fuse_ctl_kill_sb(struct super_block *sb) 194static void fuse_ctl_kill_sb(struct super_block *sb)
195{ 195{
196 struct fuse_conn *fc;
197
196 mutex_lock(&fuse_mutex); 198 mutex_lock(&fuse_mutex);
197 fuse_control_sb = NULL; 199 fuse_control_sb = NULL;
200 list_for_each_entry(fc, &fuse_conn_list, entry)
201 fc->ctl_ndents = 0;
198 mutex_unlock(&fuse_mutex); 202 mutex_unlock(&fuse_mutex);
199 203
200 kill_litter_super(sb); 204 kill_litter_super(sb);
diff --git a/fs/hostfs/hostfs.h b/fs/hostfs/hostfs.h
index cca3fb693f99..70543b17e4c7 100644
--- a/fs/hostfs/hostfs.h
+++ b/fs/hostfs/hostfs.h
@@ -76,7 +76,7 @@ extern int make_symlink(const char *from, const char *to);
76extern int unlink_file(const char *file); 76extern int unlink_file(const char *file);
77extern int do_mkdir(const char *file, int mode); 77extern int do_mkdir(const char *file, int mode);
78extern int do_rmdir(const char *file); 78extern int do_rmdir(const char *file);
79extern int do_mknod(const char *file, int mode, int dev); 79extern int do_mknod(const char *file, int mode, unsigned int major, unsigned int minor);
80extern int link_file(const char *from, const char *to); 80extern int link_file(const char *from, const char *to);
81extern int do_readlink(char *file, char *buf, int size); 81extern int do_readlink(char *file, char *buf, int size);
82extern int rename_file(char *from, char *to); 82extern int rename_file(char *from, char *to);
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
index 1e6fc3799876..69a376f35a68 100644
--- a/fs/hostfs/hostfs_kern.c
+++ b/fs/hostfs/hostfs_kern.c
@@ -755,7 +755,7 @@ int hostfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev)
755 goto out_put; 755 goto out_put;
756 756
757 init_special_inode(inode, mode, dev); 757 init_special_inode(inode, mode, dev);
758 err = do_mknod(name, mode, dev); 758 err = do_mknod(name, mode, MAJOR(dev), MINOR(dev));
759 if(err) 759 if(err)
760 goto out_free; 760 goto out_free;
761 761
diff --git a/fs/hostfs/hostfs_user.c b/fs/hostfs/hostfs_user.c
index 23b7cee72123..1ed5ea389f15 100644
--- a/fs/hostfs/hostfs_user.c
+++ b/fs/hostfs/hostfs_user.c
@@ -295,11 +295,11 @@ int do_rmdir(const char *file)
295 return(0); 295 return(0);
296} 296}
297 297
298int do_mknod(const char *file, int mode, int dev) 298int do_mknod(const char *file, int mode, unsigned int major, unsigned int minor)
299{ 299{
300 int err; 300 int err;
301 301
302 err = mknod(file, mode, dev); 302 err = mknod(file, mode, makedev(major, minor));
303 if(err) return(-errno); 303 if(err) return(-errno);
304 return(0); 304 return(0);
305} 305}
diff --git a/fs/lockd/clntlock.c b/fs/lockd/clntlock.c
index 062707745162..f4d45d4d835b 100644
--- a/fs/lockd/clntlock.c
+++ b/fs/lockd/clntlock.c
@@ -176,7 +176,7 @@ reclaimer(void *ptr)
176 lock_kernel(); 176 lock_kernel();
177 lockd_up(0); /* note: this cannot fail as lockd is already running */ 177 lockd_up(0); /* note: this cannot fail as lockd is already running */
178 178
179 dprintk("lockd: reclaiming locks for host %s", host->h_name); 179 dprintk("lockd: reclaiming locks for host %s\n", host->h_name);
180 180
181restart: 181restart:
182 nsmstate = host->h_nsmstate; 182 nsmstate = host->h_nsmstate;
@@ -206,7 +206,7 @@ restart:
206 206
207 host->h_reclaiming = 0; 207 host->h_reclaiming = 0;
208 up_write(&host->h_rwsem); 208 up_write(&host->h_rwsem);
209 dprintk("NLM: done reclaiming locks for host %s", host->h_name); 209 dprintk("NLM: done reclaiming locks for host %s\n", host->h_name);
210 210
211 /* Now, wake up all processes that sleep on a blocked lock */ 211 /* Now, wake up all processes that sleep on a blocked lock */
212 list_for_each_entry(block, &nlm_blocked, b_list) { 212 list_for_each_entry(block, &nlm_blocked, b_list) {
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index dee3d6c0f194..d9ba8cb0ee75 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -532,7 +532,7 @@ static int nfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
532 532
533 lock_kernel(); 533 lock_kernel();
534 534
535 res = nfs_revalidate_mapping(inode, filp->f_mapping); 535 res = nfs_revalidate_mapping_nolock(inode, filp->f_mapping);
536 if (res < 0) { 536 if (res < 0) {
537 unlock_kernel(); 537 unlock_kernel();
538 return res; 538 return res;
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index fab20d06d936..9e4a2b70995a 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -434,8 +434,9 @@ static int do_vfs_lock(struct file *file, struct file_lock *fl)
434 BUG(); 434 BUG();
435 } 435 }
436 if (res < 0) 436 if (res < 0)
437 printk(KERN_WARNING "%s: VFS is out of sync with lock manager!\n", 437 dprintk(KERN_WARNING "%s: VFS is out of sync with lock manager"
438 __FUNCTION__); 438 " - error %d!\n",
439 __FUNCTION__, res);
439 return res; 440 return res;
440} 441}
441 442
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index 63e470279309..d83498282837 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -665,49 +665,86 @@ int nfs_revalidate_inode(struct nfs_server *server, struct inode *inode)
665 return __nfs_revalidate_inode(server, inode); 665 return __nfs_revalidate_inode(server, inode);
666} 666}
667 667
668static int nfs_invalidate_mapping_nolock(struct inode *inode, struct address_space *mapping)
669{
670 struct nfs_inode *nfsi = NFS_I(inode);
671
672 if (mapping->nrpages != 0) {
673 int ret = invalidate_inode_pages2(mapping);
674 if (ret < 0)
675 return ret;
676 }
677 spin_lock(&inode->i_lock);
678 nfsi->cache_validity &= ~NFS_INO_INVALID_DATA;
679 if (S_ISDIR(inode->i_mode)) {
680 memset(nfsi->cookieverf, 0, sizeof(nfsi->cookieverf));
681 /* This ensures we revalidate child dentries */
682 nfsi->cache_change_attribute = jiffies;
683 }
684 spin_unlock(&inode->i_lock);
685 nfs_inc_stats(inode, NFSIOS_DATAINVALIDATE);
686 dfprintk(PAGECACHE, "NFS: (%s/%Ld) data cache invalidated\n",
687 inode->i_sb->s_id, (long long)NFS_FILEID(inode));
688 return 0;
689}
690
691static int nfs_invalidate_mapping(struct inode *inode, struct address_space *mapping)
692{
693 int ret = 0;
694
695 mutex_lock(&inode->i_mutex);
696 if (NFS_I(inode)->cache_validity & NFS_INO_INVALID_DATA) {
697 ret = nfs_sync_mapping(mapping);
698 if (ret == 0)
699 ret = nfs_invalidate_mapping_nolock(inode, mapping);
700 }
701 mutex_unlock(&inode->i_mutex);
702 return ret;
703}
704
668/** 705/**
669 * nfs_revalidate_mapping - Revalidate the pagecache 706 * nfs_revalidate_mapping_nolock - Revalidate the pagecache
670 * @inode - pointer to host inode 707 * @inode - pointer to host inode
671 * @mapping - pointer to mapping 708 * @mapping - pointer to mapping
672 */ 709 */
673int nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping) 710int nfs_revalidate_mapping_nolock(struct inode *inode, struct address_space *mapping)
674{ 711{
675 struct nfs_inode *nfsi = NFS_I(inode); 712 struct nfs_inode *nfsi = NFS_I(inode);
676 int ret = 0; 713 int ret = 0;
677 714
678 if (NFS_STALE(inode))
679 ret = -ESTALE;
680 if ((nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE) 715 if ((nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE)
681 || nfs_attribute_timeout(inode)) 716 || nfs_attribute_timeout(inode) || NFS_STALE(inode)) {
682 ret = __nfs_revalidate_inode(NFS_SERVER(inode), inode); 717 ret = __nfs_revalidate_inode(NFS_SERVER(inode), inode);
683 if (ret < 0) 718 if (ret < 0)
684 goto out; 719 goto out;
720 }
721 if (nfsi->cache_validity & NFS_INO_INVALID_DATA)
722 ret = nfs_invalidate_mapping_nolock(inode, mapping);
723out:
724 return ret;
725}
685 726
686 if (nfsi->cache_validity & NFS_INO_INVALID_DATA) { 727/**
687 if (mapping->nrpages != 0) { 728 * nfs_revalidate_mapping - Revalidate the pagecache
688 if (S_ISREG(inode->i_mode)) { 729 * @inode - pointer to host inode
689 ret = nfs_sync_mapping(mapping); 730 * @mapping - pointer to mapping
690 if (ret < 0) 731 *
691 goto out; 732 * This version of the function will take the inode->i_mutex and attempt to
692 } 733 * flush out all dirty data if it needs to invalidate the page cache.
693 ret = invalidate_inode_pages2(mapping); 734 */
694 if (ret < 0) 735int nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping)
695 goto out; 736{
696 } 737 struct nfs_inode *nfsi = NFS_I(inode);
697 spin_lock(&inode->i_lock); 738 int ret = 0;
698 nfsi->cache_validity &= ~NFS_INO_INVALID_DATA;
699 if (S_ISDIR(inode->i_mode)) {
700 memset(nfsi->cookieverf, 0, sizeof(nfsi->cookieverf));
701 /* This ensures we revalidate child dentries */
702 nfsi->cache_change_attribute = jiffies;
703 }
704 spin_unlock(&inode->i_lock);
705 739
706 nfs_inc_stats(inode, NFSIOS_DATAINVALIDATE); 740 if ((nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE)
707 dfprintk(PAGECACHE, "NFS: (%s/%Ld) data cache invalidated\n", 741 || nfs_attribute_timeout(inode) || NFS_STALE(inode)) {
708 inode->i_sb->s_id, 742 ret = __nfs_revalidate_inode(NFS_SERVER(inode), inode);
709 (long long)NFS_FILEID(inode)); 743 if (ret < 0)
744 goto out;
710 } 745 }
746 if (nfsi->cache_validity & NFS_INO_INVALID_DATA)
747 ret = nfs_invalidate_mapping(inode, mapping);
711out: 748out:
712 return ret; 749 return ret;
713} 750}
diff --git a/fs/nfs/symlink.c b/fs/nfs/symlink.c
index 6c686112cc03..525c136c7d8c 100644
--- a/fs/nfs/symlink.c
+++ b/fs/nfs/symlink.c
@@ -50,7 +50,9 @@ static void *nfs_follow_link(struct dentry *dentry, struct nameidata *nd)
50{ 50{
51 struct inode *inode = dentry->d_inode; 51 struct inode *inode = dentry->d_inode;
52 struct page *page; 52 struct page *page;
53 void *err = ERR_PTR(nfs_revalidate_mapping(inode, inode->i_mapping)); 53 void *err;
54
55 err = ERR_PTR(nfs_revalidate_mapping_nolock(inode, inode->i_mapping));
54 if (err) 56 if (err)
55 goto read_failed; 57 goto read_failed;
56 page = read_cache_page(&inode->i_data, 0, 58 page = read_cache_page(&inode->i_data, 0,
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
index 248dd92e6a56..49c310b84923 100644
--- a/fs/nfsd/export.c
+++ b/fs/nfsd/export.c
@@ -35,7 +35,6 @@
35#include <linux/lockd/bind.h> 35#include <linux/lockd/bind.h>
36 36
37#define NFSDDBG_FACILITY NFSDDBG_EXPORT 37#define NFSDDBG_FACILITY NFSDDBG_EXPORT
38#define NFSD_PARANOIA 1
39 38
40typedef struct auth_domain svc_client; 39typedef struct auth_domain svc_client;
41typedef struct svc_export svc_export; 40typedef struct svc_export svc_export;
diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c
index 277df40f098d..e695660921ec 100644
--- a/fs/nfsd/nfs3xdr.c
+++ b/fs/nfsd/nfs3xdr.c
@@ -990,15 +990,16 @@ encode_entry(struct readdir_cd *ccd, const char *name,
990} 990}
991 991
992int 992int
993nfs3svc_encode_entry(struct readdir_cd *cd, const char *name, 993nfs3svc_encode_entry(void *cd, const char *name,
994 int namlen, loff_t offset, ino_t ino, unsigned int d_type) 994 int namlen, loff_t offset, u64 ino, unsigned int d_type)
995{ 995{
996 return encode_entry(cd, name, namlen, offset, ino, d_type, 0); 996 return encode_entry(cd, name, namlen, offset, ino, d_type, 0);
997} 997}
998 998
999int 999int
1000nfs3svc_encode_entry_plus(struct readdir_cd *cd, const char *name, 1000nfs3svc_encode_entry_plus(void *cd, const char *name,
1001 int namlen, loff_t offset, ino_t ino, unsigned int d_type) 1001 int namlen, loff_t offset, u64 ino,
1002 unsigned int d_type)
1002{ 1003{
1003 return encode_entry(cd, name, namlen, offset, ino, d_type, 1); 1004 return encode_entry(cd, name, namlen, offset, ino, d_type, 1);
1004} 1005}
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index fea46368afb2..18aa9440df14 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -1880,9 +1880,10 @@ nfsd4_encode_rdattr_error(__be32 *p, int buflen, __be32 nfserr)
1880} 1880}
1881 1881
1882static int 1882static int
1883nfsd4_encode_dirent(struct readdir_cd *ccd, const char *name, int namlen, 1883nfsd4_encode_dirent(void *ccdv, const char *name, int namlen,
1884 loff_t offset, ino_t ino, unsigned int d_type) 1884 loff_t offset, u64 ino, unsigned int d_type)
1885{ 1885{
1886 struct readdir_cd *ccd = ccdv;
1886 struct nfsd4_readdir *cd = container_of(ccd, struct nfsd4_readdir, common); 1887 struct nfsd4_readdir *cd = container_of(ccd, struct nfsd4_readdir, common);
1887 int buflen; 1888 int buflen;
1888 __be32 *p = cd->buffer; 1889 __be32 *p = cd->buffer;
diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c
index b06bf9f70efc..c59d6fbb7a6b 100644
--- a/fs/nfsd/nfsfh.c
+++ b/fs/nfsd/nfsfh.c
@@ -24,8 +24,6 @@
24#include <linux/nfsd/nfsd.h> 24#include <linux/nfsd/nfsd.h>
25 25
26#define NFSDDBG_FACILITY NFSDDBG_FH 26#define NFSDDBG_FACILITY NFSDDBG_FH
27#define NFSD_PARANOIA 1
28/* #define NFSD_DEBUG_VERBOSE 1 */
29 27
30 28
31static int nfsd_nr_verified; 29static int nfsd_nr_verified;
@@ -230,13 +228,12 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, int access)
230 error = nfserrno(PTR_ERR(dentry)); 228 error = nfserrno(PTR_ERR(dentry));
231 goto out; 229 goto out;
232 } 230 }
233#ifdef NFSD_PARANOIA 231
234 if (S_ISDIR(dentry->d_inode->i_mode) && 232 if (S_ISDIR(dentry->d_inode->i_mode) &&
235 (dentry->d_flags & DCACHE_DISCONNECTED)) { 233 (dentry->d_flags & DCACHE_DISCONNECTED)) {
236 printk("nfsd: find_fh_dentry returned a DISCONNECTED directory: %s/%s\n", 234 printk("nfsd: find_fh_dentry returned a DISCONNECTED directory: %s/%s\n",
237 dentry->d_parent->d_name.name, dentry->d_name.name); 235 dentry->d_parent->d_name.name, dentry->d_name.name);
238 } 236 }
239#endif
240 237
241 fhp->fh_dentry = dentry; 238 fhp->fh_dentry = dentry;
242 fhp->fh_export = exp; 239 fhp->fh_export = exp;
@@ -267,12 +264,13 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, int access)
267 /* Finally, check access permissions. */ 264 /* Finally, check access permissions. */
268 error = nfsd_permission(exp, dentry, access); 265 error = nfsd_permission(exp, dentry, access);
269 266
270#ifdef NFSD_PARANOIA_EXTREME
271 if (error) { 267 if (error) {
272 printk("fh_verify: %s/%s permission failure, acc=%x, error=%d\n", 268 dprintk("fh_verify: %s/%s permission failure, "
273 dentry->d_parent->d_name.name, dentry->d_name.name, access, (error >> 24)); 269 "acc=%x, error=%d\n",
270 dentry->d_parent->d_name.name,
271 dentry->d_name.name,
272 access, ntohl(error));
274 } 273 }
275#endif
276out: 274out:
277 if (exp && !IS_ERR(exp)) 275 if (exp && !IS_ERR(exp))
278 exp_put(exp); 276 exp_put(exp);
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index 0aaccb03bf76..fbf5d51947ea 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -72,7 +72,7 @@ static struct svc_program nfsd_acl_program = {
72 .pg_prog = NFS_ACL_PROGRAM, 72 .pg_prog = NFS_ACL_PROGRAM,
73 .pg_nvers = NFSD_ACL_NRVERS, 73 .pg_nvers = NFSD_ACL_NRVERS,
74 .pg_vers = nfsd_acl_versions, 74 .pg_vers = nfsd_acl_versions,
75 .pg_name = "nfsd", 75 .pg_name = "nfsacl",
76 .pg_class = "nfsd", 76 .pg_class = "nfsd",
77 .pg_stats = &nfsd_acl_svcstats, 77 .pg_stats = &nfsd_acl_svcstats,
78 .pg_authenticate = &svc_set_client, 78 .pg_authenticate = &svc_set_client,
@@ -118,16 +118,16 @@ int nfsd_vers(int vers, enum vers_op change)
118 switch(change) { 118 switch(change) {
119 case NFSD_SET: 119 case NFSD_SET:
120 nfsd_versions[vers] = nfsd_version[vers]; 120 nfsd_versions[vers] = nfsd_version[vers];
121 break;
122#if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL) 121#if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL)
123 if (vers < NFSD_ACL_NRVERS) 122 if (vers < NFSD_ACL_NRVERS)
124 nfsd_acl_version[vers] = nfsd_acl_version[vers]; 123 nfsd_acl_versions[vers] = nfsd_acl_version[vers];
125#endif 124#endif
125 break;
126 case NFSD_CLEAR: 126 case NFSD_CLEAR:
127 nfsd_versions[vers] = NULL; 127 nfsd_versions[vers] = NULL;
128#if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL) 128#if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL)
129 if (vers < NFSD_ACL_NRVERS) 129 if (vers < NFSD_ACL_NRVERS)
130 nfsd_acl_version[vers] = NULL; 130 nfsd_acl_versions[vers] = NULL;
131#endif 131#endif
132 break; 132 break;
133 case NFSD_TEST: 133 case NFSD_TEST:
diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c
index f5243f943996..6555c50d9006 100644
--- a/fs/nfsd/nfsxdr.c
+++ b/fs/nfsd/nfsxdr.c
@@ -462,9 +462,10 @@ nfssvc_encode_statfsres(struct svc_rqst *rqstp, __be32 *p,
462} 462}
463 463
464int 464int
465nfssvc_encode_entry(struct readdir_cd *ccd, const char *name, 465nfssvc_encode_entry(void *ccdv, const char *name,
466 int namlen, loff_t offset, ino_t ino, unsigned int d_type) 466 int namlen, loff_t offset, u64 ino, unsigned int d_type)
467{ 467{
468 struct readdir_cd *ccd = ccdv;
468 struct nfsd_readdirres *cd = container_of(ccd, struct nfsd_readdirres, common); 469 struct nfsd_readdirres *cd = container_of(ccd, struct nfsd_readdirres, common);
469 __be32 *p = cd->buffer; 470 __be32 *p = cd->buffer;
470 int buflen, slen; 471 int buflen, slen;
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index 7a79c23aa6d4..8283236c6a0f 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -59,7 +59,6 @@
59#include <asm/uaccess.h> 59#include <asm/uaccess.h>
60 60
61#define NFSDDBG_FACILITY NFSDDBG_FILEOP 61#define NFSDDBG_FACILITY NFSDDBG_FILEOP
62#define NFSD_PARANOIA
63 62
64 63
65/* We must ignore files (but only files) which might have mandatory 64/* We must ignore files (but only files) which might have mandatory
@@ -822,7 +821,8 @@ nfsd_read_actor(read_descriptor_t *desc, struct page *page, unsigned long offset
822 rqstp->rq_res.page_len = size; 821 rqstp->rq_res.page_len = size;
823 } else if (page != pp[-1]) { 822 } else if (page != pp[-1]) {
824 get_page(page); 823 get_page(page);
825 put_page(*pp); 824 if (*pp)
825 put_page(*pp);
826 *pp = page; 826 *pp = page;
827 rqstp->rq_resused++; 827 rqstp->rq_resused++;
828 rqstp->rq_res.page_len += size; 828 rqstp->rq_res.page_len += size;
@@ -1244,7 +1244,6 @@ nfsd_create_v3(struct svc_rqst *rqstp, struct svc_fh *fhp,
1244 __be32 err; 1244 __be32 err;
1245 int host_err; 1245 int host_err;
1246 __u32 v_mtime=0, v_atime=0; 1246 __u32 v_mtime=0, v_atime=0;
1247 int v_mode=0;
1248 1247
1249 err = nfserr_perm; 1248 err = nfserr_perm;
1250 if (!flen) 1249 if (!flen)
@@ -1281,16 +1280,11 @@ nfsd_create_v3(struct svc_rqst *rqstp, struct svc_fh *fhp,
1281 goto out; 1280 goto out;
1282 1281
1283 if (createmode == NFS3_CREATE_EXCLUSIVE) { 1282 if (createmode == NFS3_CREATE_EXCLUSIVE) {
1284 /* while the verifier would fit in mtime+atime, 1283 /* solaris7 gets confused (bugid 4218508) if these have
1285 * solaris7 gets confused (bugid 4218508) if these have 1284 * the high bit set, so just clear the high bits.
1286 * the high bit set, so we use the mode as well
1287 */ 1285 */
1288 v_mtime = verifier[0]&0x7fffffff; 1286 v_mtime = verifier[0]&0x7fffffff;
1289 v_atime = verifier[1]&0x7fffffff; 1287 v_atime = verifier[1]&0x7fffffff;
1290 v_mode = S_IFREG
1291 | ((verifier[0]&0x80000000) >> (32-7)) /* u+x */
1292 | ((verifier[1]&0x80000000) >> (32-9)) /* u+r */
1293 ;
1294 } 1288 }
1295 1289
1296 if (dchild->d_inode) { 1290 if (dchild->d_inode) {
@@ -1318,7 +1312,6 @@ nfsd_create_v3(struct svc_rqst *rqstp, struct svc_fh *fhp,
1318 case NFS3_CREATE_EXCLUSIVE: 1312 case NFS3_CREATE_EXCLUSIVE:
1319 if ( dchild->d_inode->i_mtime.tv_sec == v_mtime 1313 if ( dchild->d_inode->i_mtime.tv_sec == v_mtime
1320 && dchild->d_inode->i_atime.tv_sec == v_atime 1314 && dchild->d_inode->i_atime.tv_sec == v_atime
1321 && dchild->d_inode->i_mode == v_mode
1322 && dchild->d_inode->i_size == 0 ) 1315 && dchild->d_inode->i_size == 0 )
1323 break; 1316 break;
1324 /* fallthru */ 1317 /* fallthru */
@@ -1340,26 +1333,22 @@ nfsd_create_v3(struct svc_rqst *rqstp, struct svc_fh *fhp,
1340 } 1333 }
1341 1334
1342 if (createmode == NFS3_CREATE_EXCLUSIVE) { 1335 if (createmode == NFS3_CREATE_EXCLUSIVE) {
1343 /* Cram the verifier into atime/mtime/mode */ 1336 /* Cram the verifier into atime/mtime */
1344 iap->ia_valid = ATTR_MTIME|ATTR_ATIME 1337 iap->ia_valid = ATTR_MTIME|ATTR_ATIME
1345 | ATTR_MTIME_SET|ATTR_ATIME_SET 1338 | ATTR_MTIME_SET|ATTR_ATIME_SET;
1346 | ATTR_MODE;
1347 /* XXX someone who knows this better please fix it for nsec */ 1339 /* XXX someone who knows this better please fix it for nsec */
1348 iap->ia_mtime.tv_sec = v_mtime; 1340 iap->ia_mtime.tv_sec = v_mtime;
1349 iap->ia_atime.tv_sec = v_atime; 1341 iap->ia_atime.tv_sec = v_atime;
1350 iap->ia_mtime.tv_nsec = 0; 1342 iap->ia_mtime.tv_nsec = 0;
1351 iap->ia_atime.tv_nsec = 0; 1343 iap->ia_atime.tv_nsec = 0;
1352 iap->ia_mode = v_mode;
1353 } 1344 }
1354 1345
1355 /* Set file attributes. 1346 /* Set file attributes.
1356 * Mode has already been set but we might need to reset it
1357 * for CREATE_EXCLUSIVE
1358 * Irix appears to send along the gid when it tries to 1347 * Irix appears to send along the gid when it tries to
1359 * implement setgid directories via NFS. Clear out all that cruft. 1348 * implement setgid directories via NFS. Clear out all that cruft.
1360 */ 1349 */
1361 set_attr: 1350 set_attr:
1362 if ((iap->ia_valid &= ~(ATTR_UID|ATTR_GID)) != 0) { 1351 if ((iap->ia_valid &= ~(ATTR_UID|ATTR_GID|ATTR_MODE)) != 0) {
1363 __be32 err2 = nfsd_setattr(rqstp, resfhp, iap, 0, (time_t)0); 1352 __be32 err2 = nfsd_setattr(rqstp, resfhp, iap, 0, (time_t)0);
1364 if (err2) 1353 if (err2)
1365 err = err2; 1354 err = err2;
@@ -1726,7 +1715,7 @@ out:
1726 */ 1715 */
1727__be32 1716__be32
1728nfsd_readdir(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t *offsetp, 1717nfsd_readdir(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t *offsetp,
1729 struct readdir_cd *cdp, encode_dent_fn func) 1718 struct readdir_cd *cdp, filldir_t func)
1730{ 1719{
1731 __be32 err; 1720 __be32 err;
1732 int host_err; 1721 int host_err;
@@ -1751,7 +1740,7 @@ nfsd_readdir(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t *offsetp,
1751 1740
1752 do { 1741 do {
1753 cdp->err = nfserr_eof; /* will be cleared on successful read */ 1742 cdp->err = nfserr_eof; /* will be cleared on successful read */
1754 host_err = vfs_readdir(file, (filldir_t) func, cdp); 1743 host_err = vfs_readdir(file, func, cdp);
1755 } while (host_err >=0 && cdp->err == nfs_ok); 1744 } while (host_err >=0 && cdp->err == nfs_ok);
1756 if (host_err) 1745 if (host_err)
1757 err = nfserrno(host_err); 1746 err = nfserrno(host_err);
diff --git a/fs/ntfs/ChangeLog b/fs/ntfs/ChangeLog
index 35cc4b1d60f7..af4ef808fa94 100644
--- a/fs/ntfs/ChangeLog
+++ b/fs/ntfs/ChangeLog
@@ -17,6 +17,13 @@ ToDo/Notes:
17 happen is unclear however so it is worth waiting until someone hits 17 happen is unclear however so it is worth waiting until someone hits
18 the problem. 18 the problem.
19 19
202.1.28 - Fix a deadlock.
21
22 - Fix deadlock in fs/ntfs/inode.c::ntfs_put_inode(). Thanks to Sergey
23 Vlasov for the report and detailed analysis of the deadlock. The fix
24 involved getting rid of ntfs_put_inode() altogether and hence NTFS no
25 longer has a ->put_inode super operation.
26
202.1.27 - Various bug fixes and cleanups. 272.1.27 - Various bug fixes and cleanups.
21 28
22 - Fix two compiler warnings on Alpha. Thanks to Andrew Morton for 29 - Fix two compiler warnings on Alpha. Thanks to Andrew Morton for
diff --git a/fs/ntfs/Makefile b/fs/ntfs/Makefile
index e27b4eacffbf..825508385565 100644
--- a/fs/ntfs/Makefile
+++ b/fs/ntfs/Makefile
@@ -6,7 +6,7 @@ ntfs-objs := aops.o attrib.o collate.o compress.o debug.o dir.o file.o \
6 index.o inode.o mft.o mst.o namei.o runlist.o super.o sysctl.o \ 6 index.o inode.o mft.o mst.o namei.o runlist.o super.o sysctl.o \
7 unistr.o upcase.o 7 unistr.o upcase.o
8 8
9EXTRA_CFLAGS = -DNTFS_VERSION=\"2.1.27\" 9EXTRA_CFLAGS = -DNTFS_VERSION=\"2.1.28\"
10 10
11ifeq ($(CONFIG_NTFS_DEBUG),y) 11ifeq ($(CONFIG_NTFS_DEBUG),y)
12EXTRA_CFLAGS += -DDEBUG 12EXTRA_CFLAGS += -DDEBUG
diff --git a/fs/ntfs/aops.c b/fs/ntfs/aops.c
index 7b2c8f4f6a6f..629e7abdd840 100644
--- a/fs/ntfs/aops.c
+++ b/fs/ntfs/aops.c
@@ -92,10 +92,12 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
92 ofs = 0; 92 ofs = 0;
93 if (file_ofs < init_size) 93 if (file_ofs < init_size)
94 ofs = init_size - file_ofs; 94 ofs = init_size - file_ofs;
95 local_irq_save(flags);
95 kaddr = kmap_atomic(page, KM_BIO_SRC_IRQ); 96 kaddr = kmap_atomic(page, KM_BIO_SRC_IRQ);
96 memset(kaddr + bh_offset(bh) + ofs, 0, 97 memset(kaddr + bh_offset(bh) + ofs, 0,
97 bh->b_size - ofs); 98 bh->b_size - ofs);
98 kunmap_atomic(kaddr, KM_BIO_SRC_IRQ); 99 kunmap_atomic(kaddr, KM_BIO_SRC_IRQ);
100 local_irq_restore(flags);
99 flush_dcache_page(page); 101 flush_dcache_page(page);
100 } 102 }
101 } else { 103 } else {
@@ -143,11 +145,13 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
143 recs = PAGE_CACHE_SIZE / rec_size; 145 recs = PAGE_CACHE_SIZE / rec_size;
144 /* Should have been verified before we got here... */ 146 /* Should have been verified before we got here... */
145 BUG_ON(!recs); 147 BUG_ON(!recs);
148 local_irq_save(flags);
146 kaddr = kmap_atomic(page, KM_BIO_SRC_IRQ); 149 kaddr = kmap_atomic(page, KM_BIO_SRC_IRQ);
147 for (i = 0; i < recs; i++) 150 for (i = 0; i < recs; i++)
148 post_read_mst_fixup((NTFS_RECORD*)(kaddr + 151 post_read_mst_fixup((NTFS_RECORD*)(kaddr +
149 i * rec_size), rec_size); 152 i * rec_size), rec_size);
150 kunmap_atomic(kaddr, KM_BIO_SRC_IRQ); 153 kunmap_atomic(kaddr, KM_BIO_SRC_IRQ);
154 local_irq_restore(flags);
151 flush_dcache_page(page); 155 flush_dcache_page(page);
152 if (likely(page_uptodate && !PageError(page))) 156 if (likely(page_uptodate && !PageError(page)))
153 SetPageUptodate(page); 157 SetPageUptodate(page);
diff --git a/fs/ntfs/dir.c b/fs/ntfs/dir.c
index 8296c29ae3b8..74f99a6a369b 100644
--- a/fs/ntfs/dir.c
+++ b/fs/ntfs/dir.c
@@ -1,7 +1,7 @@
1/** 1/**
2 * dir.c - NTFS kernel directory operations. Part of the Linux-NTFS project. 2 * dir.c - NTFS kernel directory operations. Part of the Linux-NTFS project.
3 * 3 *
4 * Copyright (c) 2001-2005 Anton Altaparmakov 4 * Copyright (c) 2001-2007 Anton Altaparmakov
5 * Copyright (c) 2002 Richard Russon 5 * Copyright (c) 2002 Richard Russon
6 * 6 *
7 * This program/include file is free software; you can redistribute it and/or 7 * This program/include file is free software; you can redistribute it and/or
@@ -1249,16 +1249,12 @@ skip_index_root:
1249 /* Get the offset into the index allocation attribute. */ 1249 /* Get the offset into the index allocation attribute. */
1250 ia_pos = (s64)fpos - vol->mft_record_size; 1250 ia_pos = (s64)fpos - vol->mft_record_size;
1251 ia_mapping = vdir->i_mapping; 1251 ia_mapping = vdir->i_mapping;
1252 bmp_vi = ndir->itype.index.bmp_ino; 1252 ntfs_debug("Inode 0x%lx, getting index bitmap.", vdir->i_ino);
1253 if (unlikely(!bmp_vi)) { 1253 bmp_vi = ntfs_attr_iget(vdir, AT_BITMAP, I30, 4);
1254 ntfs_debug("Inode 0x%lx, regetting index bitmap.", vdir->i_ino); 1254 if (IS_ERR(bmp_vi)) {
1255 bmp_vi = ntfs_attr_iget(vdir, AT_BITMAP, I30, 4); 1255 ntfs_error(sb, "Failed to get bitmap attribute.");
1256 if (IS_ERR(bmp_vi)) { 1256 err = PTR_ERR(bmp_vi);
1257 ntfs_error(sb, "Failed to get bitmap attribute."); 1257 goto err_out;
1258 err = PTR_ERR(bmp_vi);
1259 goto err_out;
1260 }
1261 ndir->itype.index.bmp_ino = bmp_vi;
1262 } 1258 }
1263 bmp_mapping = bmp_vi->i_mapping; 1259 bmp_mapping = bmp_vi->i_mapping;
1264 /* Get the starting bitmap bit position and sanity check it. */ 1260 /* Get the starting bitmap bit position and sanity check it. */
@@ -1266,7 +1262,7 @@ skip_index_root:
1266 if (unlikely(bmp_pos >> 3 >= i_size_read(bmp_vi))) { 1262 if (unlikely(bmp_pos >> 3 >= i_size_read(bmp_vi))) {
1267 ntfs_error(sb, "Current index allocation position exceeds " 1263 ntfs_error(sb, "Current index allocation position exceeds "
1268 "index bitmap size."); 1264 "index bitmap size.");
1269 goto err_out; 1265 goto iput_err_out;
1270 } 1266 }
1271 /* Get the starting bit position in the current bitmap page. */ 1267 /* Get the starting bit position in the current bitmap page. */
1272 cur_bmp_pos = bmp_pos & ((PAGE_CACHE_SIZE * 8) - 1); 1268 cur_bmp_pos = bmp_pos & ((PAGE_CACHE_SIZE * 8) - 1);
@@ -1282,7 +1278,7 @@ get_next_bmp_page:
1282 ntfs_error(sb, "Reading index bitmap failed."); 1278 ntfs_error(sb, "Reading index bitmap failed.");
1283 err = PTR_ERR(bmp_page); 1279 err = PTR_ERR(bmp_page);
1284 bmp_page = NULL; 1280 bmp_page = NULL;
1285 goto err_out; 1281 goto iput_err_out;
1286 } 1282 }
1287 bmp = (u8*)page_address(bmp_page); 1283 bmp = (u8*)page_address(bmp_page);
1288 /* Find next index block in use. */ 1284 /* Find next index block in use. */
@@ -1429,6 +1425,7 @@ find_next_index_buffer:
1429 /* @ia_page is already unlocked in this case. */ 1425 /* @ia_page is already unlocked in this case. */
1430 ntfs_unmap_page(ia_page); 1426 ntfs_unmap_page(ia_page);
1431 ntfs_unmap_page(bmp_page); 1427 ntfs_unmap_page(bmp_page);
1428 iput(bmp_vi);
1432 goto abort; 1429 goto abort;
1433 } 1430 }
1434 } 1431 }
@@ -1439,6 +1436,7 @@ unm_EOD:
1439 ntfs_unmap_page(ia_page); 1436 ntfs_unmap_page(ia_page);
1440 } 1437 }
1441 ntfs_unmap_page(bmp_page); 1438 ntfs_unmap_page(bmp_page);
1439 iput(bmp_vi);
1442EOD: 1440EOD:
1443 /* We are finished, set fpos to EOD. */ 1441 /* We are finished, set fpos to EOD. */
1444 fpos = i_size + vol->mft_record_size; 1442 fpos = i_size + vol->mft_record_size;
@@ -1455,8 +1453,11 @@ done:
1455 filp->f_pos = fpos; 1453 filp->f_pos = fpos;
1456 return 0; 1454 return 0;
1457err_out: 1455err_out:
1458 if (bmp_page) 1456 if (bmp_page) {
1459 ntfs_unmap_page(bmp_page); 1457 ntfs_unmap_page(bmp_page);
1458iput_err_out:
1459 iput(bmp_vi);
1460 }
1460 if (ia_page) { 1461 if (ia_page) {
1461 unlock_page(ia_page); 1462 unlock_page(ia_page);
1462 ntfs_unmap_page(ia_page); 1463 ntfs_unmap_page(ia_page);
@@ -1529,14 +1530,22 @@ static int ntfs_dir_open(struct inode *vi, struct file *filp)
1529static int ntfs_dir_fsync(struct file *filp, struct dentry *dentry, 1530static int ntfs_dir_fsync(struct file *filp, struct dentry *dentry,
1530 int datasync) 1531 int datasync)
1531{ 1532{
1532 struct inode *vi = dentry->d_inode; 1533 struct inode *bmp_vi, *vi = dentry->d_inode;
1533 ntfs_inode *ni = NTFS_I(vi);
1534 int err, ret; 1534 int err, ret;
1535 ntfs_attr na;
1535 1536
1536 ntfs_debug("Entering for inode 0x%lx.", vi->i_ino); 1537 ntfs_debug("Entering for inode 0x%lx.", vi->i_ino);
1537 BUG_ON(!S_ISDIR(vi->i_mode)); 1538 BUG_ON(!S_ISDIR(vi->i_mode));
1538 if (NInoIndexAllocPresent(ni) && ni->itype.index.bmp_ino) 1539 /* If the bitmap attribute inode is in memory sync it, too. */
1539 write_inode_now(ni->itype.index.bmp_ino, !datasync); 1540 na.mft_no = vi->i_ino;
1541 na.type = AT_BITMAP;
1542 na.name = I30;
1543 na.name_len = 4;
1544 bmp_vi = ilookup5(vi->i_sb, vi->i_ino, (test_t)ntfs_test_inode, &na);
1545 if (bmp_vi) {
1546 write_inode_now(bmp_vi, !datasync);
1547 iput(bmp_vi);
1548 }
1540 ret = ntfs_write_inode(vi, 1); 1549 ret = ntfs_write_inode(vi, 1);
1541 write_inode_now(vi, !datasync); 1550 write_inode_now(vi, !datasync);
1542 err = sync_blockdev(vi->i_sb->s_bdev); 1551 err = sync_blockdev(vi->i_sb->s_bdev);
diff --git a/fs/ntfs/inode.c b/fs/ntfs/inode.c
index 247989891b4b..f8bf8da67ee8 100644
--- a/fs/ntfs/inode.c
+++ b/fs/ntfs/inode.c
@@ -1,7 +1,7 @@
1/** 1/**
2 * inode.c - NTFS kernel inode handling. Part of the Linux-NTFS project. 2 * inode.c - NTFS kernel inode handling. Part of the Linux-NTFS project.
3 * 3 *
4 * Copyright (c) 2001-2006 Anton Altaparmakov 4 * Copyright (c) 2001-2007 Anton Altaparmakov
5 * 5 *
6 * This program/include file is free software; you can redistribute it and/or 6 * This program/include file is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as published 7 * modify it under the terms of the GNU General Public License as published
@@ -95,7 +95,7 @@ int ntfs_test_inode(struct inode *vi, ntfs_attr *na)
95 * If initializing the normal file/directory inode, set @na->type to AT_UNUSED. 95 * If initializing the normal file/directory inode, set @na->type to AT_UNUSED.
96 * In that case, @na->name and @na->name_len should be set to NULL and 0, 96 * In that case, @na->name and @na->name_len should be set to NULL and 0,
97 * respectively. Although that is not strictly necessary as 97 * respectively. Although that is not strictly necessary as
98 * ntfs_read_inode_locked() will fill them in later. 98 * ntfs_read_locked_inode() will fill them in later.
99 * 99 *
100 * Return 0 on success and -errno on error. 100 * Return 0 on success and -errno on error.
101 * 101 *
@@ -171,8 +171,8 @@ static int ntfs_read_locked_index_inode(struct inode *base_vi,
171struct inode *ntfs_iget(struct super_block *sb, unsigned long mft_no) 171struct inode *ntfs_iget(struct super_block *sb, unsigned long mft_no)
172{ 172{
173 struct inode *vi; 173 struct inode *vi;
174 ntfs_attr na;
175 int err; 174 int err;
175 ntfs_attr na;
176 176
177 na.mft_no = mft_no; 177 na.mft_no = mft_no;
178 na.type = AT_UNUSED; 178 na.type = AT_UNUSED;
@@ -229,8 +229,8 @@ struct inode *ntfs_attr_iget(struct inode *base_vi, ATTR_TYPE type,
229 ntfschar *name, u32 name_len) 229 ntfschar *name, u32 name_len)
230{ 230{
231 struct inode *vi; 231 struct inode *vi;
232 ntfs_attr na;
233 int err; 232 int err;
233 ntfs_attr na;
234 234
235 /* Make sure no one calls ntfs_attr_iget() for indices. */ 235 /* Make sure no one calls ntfs_attr_iget() for indices. */
236 BUG_ON(type == AT_INDEX_ALLOCATION); 236 BUG_ON(type == AT_INDEX_ALLOCATION);
@@ -287,8 +287,8 @@ struct inode *ntfs_index_iget(struct inode *base_vi, ntfschar *name,
287 u32 name_len) 287 u32 name_len)
288{ 288{
289 struct inode *vi; 289 struct inode *vi;
290 ntfs_attr na;
291 int err; 290 int err;
291 ntfs_attr na;
292 292
293 na.mft_no = base_vi->i_ino; 293 na.mft_no = base_vi->i_ino;
294 na.type = AT_INDEX_ALLOCATION; 294 na.type = AT_INDEX_ALLOCATION;
@@ -402,7 +402,6 @@ void __ntfs_init_inode(struct super_block *sb, ntfs_inode *ni)
402 ntfs_init_runlist(&ni->attr_list_rl); 402 ntfs_init_runlist(&ni->attr_list_rl);
403 lockdep_set_class(&ni->attr_list_rl.lock, 403 lockdep_set_class(&ni->attr_list_rl.lock,
404 &attr_list_rl_lock_class); 404 &attr_list_rl_lock_class);
405 ni->itype.index.bmp_ino = NULL;
406 ni->itype.index.block_size = 0; 405 ni->itype.index.block_size = 0;
407 ni->itype.index.vcn_size = 0; 406 ni->itype.index.vcn_size = 0;
408 ni->itype.index.collation_rule = 0; 407 ni->itype.index.collation_rule = 0;
@@ -546,6 +545,7 @@ static int ntfs_read_locked_inode(struct inode *vi)
546{ 545{
547 ntfs_volume *vol = NTFS_SB(vi->i_sb); 546 ntfs_volume *vol = NTFS_SB(vi->i_sb);
548 ntfs_inode *ni; 547 ntfs_inode *ni;
548 struct inode *bvi;
549 MFT_RECORD *m; 549 MFT_RECORD *m;
550 ATTR_RECORD *a; 550 ATTR_RECORD *a;
551 STANDARD_INFORMATION *si; 551 STANDARD_INFORMATION *si;
@@ -780,7 +780,6 @@ skip_attr_list_load:
780 */ 780 */
781 if (S_ISDIR(vi->i_mode)) { 781 if (S_ISDIR(vi->i_mode)) {
782 loff_t bvi_size; 782 loff_t bvi_size;
783 struct inode *bvi;
784 ntfs_inode *bni; 783 ntfs_inode *bni;
785 INDEX_ROOT *ir; 784 INDEX_ROOT *ir;
786 u8 *ir_end, *index_end; 785 u8 *ir_end, *index_end;
@@ -985,13 +984,12 @@ skip_attr_list_load:
985 err = PTR_ERR(bvi); 984 err = PTR_ERR(bvi);
986 goto unm_err_out; 985 goto unm_err_out;
987 } 986 }
988 ni->itype.index.bmp_ino = bvi;
989 bni = NTFS_I(bvi); 987 bni = NTFS_I(bvi);
990 if (NInoCompressed(bni) || NInoEncrypted(bni) || 988 if (NInoCompressed(bni) || NInoEncrypted(bni) ||
991 NInoSparse(bni)) { 989 NInoSparse(bni)) {
992 ntfs_error(vi->i_sb, "$BITMAP attribute is compressed " 990 ntfs_error(vi->i_sb, "$BITMAP attribute is compressed "
993 "and/or encrypted and/or sparse."); 991 "and/or encrypted and/or sparse.");
994 goto unm_err_out; 992 goto iput_unm_err_out;
995 } 993 }
996 /* Consistency check bitmap size vs. index allocation size. */ 994 /* Consistency check bitmap size vs. index allocation size. */
997 bvi_size = i_size_read(bvi); 995 bvi_size = i_size_read(bvi);
@@ -1000,8 +998,10 @@ skip_attr_list_load:
1000 ntfs_error(vi->i_sb, "Index bitmap too small (0x%llx) " 998 ntfs_error(vi->i_sb, "Index bitmap too small (0x%llx) "
1001 "for index allocation (0x%llx).", 999 "for index allocation (0x%llx).",
1002 bvi_size << 3, vi->i_size); 1000 bvi_size << 3, vi->i_size);
1003 goto unm_err_out; 1001 goto iput_unm_err_out;
1004 } 1002 }
1003 /* No longer need the bitmap attribute inode. */
1004 iput(bvi);
1005skip_large_dir_stuff: 1005skip_large_dir_stuff:
1006 /* Setup the operations for this inode. */ 1006 /* Setup the operations for this inode. */
1007 vi->i_op = &ntfs_dir_inode_ops; 1007 vi->i_op = &ntfs_dir_inode_ops;
@@ -1176,7 +1176,8 @@ no_data_attr_special_case:
1176 vi->i_blocks = ni->allocated_size >> 9; 1176 vi->i_blocks = ni->allocated_size >> 9;
1177 ntfs_debug("Done."); 1177 ntfs_debug("Done.");
1178 return 0; 1178 return 0;
1179 1179iput_unm_err_out:
1180 iput(bvi);
1180unm_err_out: 1181unm_err_out:
1181 if (!err) 1182 if (!err)
1182 err = -EIO; 1183 err = -EIO;
@@ -1697,7 +1698,7 @@ static int ntfs_read_locked_index_inode(struct inode *base_vi, struct inode *vi)
1697 vi->i_size); 1698 vi->i_size);
1698 goto iput_unm_err_out; 1699 goto iput_unm_err_out;
1699 } 1700 }
1700 ni->itype.index.bmp_ino = bvi; 1701 iput(bvi);
1701skip_large_index_stuff: 1702skip_large_index_stuff:
1702 /* Setup the operations for this index inode. */ 1703 /* Setup the operations for this index inode. */
1703 vi->i_op = NULL; 1704 vi->i_op = NULL;
@@ -1714,7 +1715,6 @@ skip_large_index_stuff:
1714 1715
1715 ntfs_debug("Done."); 1716 ntfs_debug("Done.");
1716 return 0; 1717 return 0;
1717
1718iput_unm_err_out: 1718iput_unm_err_out:
1719 iput(bvi); 1719 iput(bvi);
1720unm_err_out: 1720unm_err_out:
@@ -2191,37 +2191,6 @@ err_out:
2191 return -1; 2191 return -1;
2192} 2192}
2193 2193
2194/**
2195 * ntfs_put_inode - handler for when the inode reference count is decremented
2196 * @vi: vfs inode
2197 *
2198 * The VFS calls ntfs_put_inode() every time the inode reference count (i_count)
2199 * is about to be decremented (but before the decrement itself.
2200 *
2201 * If the inode @vi is a directory with two references, one of which is being
2202 * dropped, we need to put the attribute inode for the directory index bitmap,
2203 * if it is present, otherwise the directory inode would remain pinned for
2204 * ever.
2205 */
2206void ntfs_put_inode(struct inode *vi)
2207{
2208 if (S_ISDIR(vi->i_mode) && atomic_read(&vi->i_count) == 2) {
2209 ntfs_inode *ni = NTFS_I(vi);
2210 if (NInoIndexAllocPresent(ni)) {
2211 struct inode *bvi = NULL;
2212 mutex_lock(&vi->i_mutex);
2213 if (atomic_read(&vi->i_count) == 2) {
2214 bvi = ni->itype.index.bmp_ino;
2215 if (bvi)
2216 ni->itype.index.bmp_ino = NULL;
2217 }
2218 mutex_unlock(&vi->i_mutex);
2219 if (bvi)
2220 iput(bvi);
2221 }
2222 }
2223}
2224
2225static void __ntfs_clear_inode(ntfs_inode *ni) 2194static void __ntfs_clear_inode(ntfs_inode *ni)
2226{ 2195{
2227 /* Free all alocated memory. */ 2196 /* Free all alocated memory. */
@@ -2287,18 +2256,6 @@ void ntfs_clear_big_inode(struct inode *vi)
2287{ 2256{
2288 ntfs_inode *ni = NTFS_I(vi); 2257 ntfs_inode *ni = NTFS_I(vi);
2289 2258
2290 /*
2291 * If the inode @vi is an index inode we need to put the attribute
2292 * inode for the index bitmap, if it is present, otherwise the index
2293 * inode would disappear and the attribute inode for the index bitmap
2294 * would no longer be referenced from anywhere and thus it would remain
2295 * pinned for ever.
2296 */
2297 if (NInoAttr(ni) && (ni->type == AT_INDEX_ALLOCATION) &&
2298 NInoIndexAllocPresent(ni) && ni->itype.index.bmp_ino) {
2299 iput(ni->itype.index.bmp_ino);
2300 ni->itype.index.bmp_ino = NULL;
2301 }
2302#ifdef NTFS_RW 2259#ifdef NTFS_RW
2303 if (NInoDirty(ni)) { 2260 if (NInoDirty(ni)) {
2304 bool was_bad = (is_bad_inode(vi)); 2261 bool was_bad = (is_bad_inode(vi));
diff --git a/fs/ntfs/inode.h b/fs/ntfs/inode.h
index f088291e017c..117eaf8032a3 100644
--- a/fs/ntfs/inode.h
+++ b/fs/ntfs/inode.h
@@ -2,7 +2,7 @@
2 * inode.h - Defines for inode structures NTFS Linux kernel driver. Part of 2 * inode.h - Defines for inode structures NTFS Linux kernel driver. Part of
3 * the Linux-NTFS project. 3 * the Linux-NTFS project.
4 * 4 *
5 * Copyright (c) 2001-2005 Anton Altaparmakov 5 * Copyright (c) 2001-2007 Anton Altaparmakov
6 * Copyright (c) 2002 Richard Russon 6 * Copyright (c) 2002 Richard Russon
7 * 7 *
8 * This program/include file is free software; you can redistribute it and/or 8 * This program/include file is free software; you can redistribute it and/or
@@ -101,8 +101,6 @@ struct _ntfs_inode {
101 runlist attr_list_rl; /* Run list for the attribute list value. */ 101 runlist attr_list_rl; /* Run list for the attribute list value. */
102 union { 102 union {
103 struct { /* It is a directory, $MFT, or an index inode. */ 103 struct { /* It is a directory, $MFT, or an index inode. */
104 struct inode *bmp_ino; /* Attribute inode for the
105 index $BITMAP. */
106 u32 block_size; /* Size of an index block. */ 104 u32 block_size; /* Size of an index block. */
107 u32 vcn_size; /* Size of a vcn in this 105 u32 vcn_size; /* Size of a vcn in this
108 index. */ 106 index. */
@@ -300,8 +298,6 @@ extern void ntfs_clear_extent_inode(ntfs_inode *ni);
300 298
301extern int ntfs_read_inode_mount(struct inode *vi); 299extern int ntfs_read_inode_mount(struct inode *vi);
302 300
303extern void ntfs_put_inode(struct inode *vi);
304
305extern int ntfs_show_options(struct seq_file *sf, struct vfsmount *mnt); 301extern int ntfs_show_options(struct seq_file *sf, struct vfsmount *mnt);
306 302
307#ifdef NTFS_RW 303#ifdef NTFS_RW
diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
index 03a391ac7145..babf94d90def 100644
--- a/fs/ntfs/super.c
+++ b/fs/ntfs/super.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * super.c - NTFS kernel super block handling. Part of the Linux-NTFS project. 2 * super.c - NTFS kernel super block handling. Part of the Linux-NTFS project.
3 * 3 *
4 * Copyright (c) 2001-2006 Anton Altaparmakov 4 * Copyright (c) 2001-2007 Anton Altaparmakov
5 * Copyright (c) 2001,2002 Richard Russon 5 * Copyright (c) 2001,2002 Richard Russon
6 * 6 *
7 * This program/include file is free software; you can redistribute it and/or 7 * This program/include file is free software; you can redistribute it and/or
@@ -2702,9 +2702,6 @@ static int ntfs_statfs(struct dentry *dentry, struct kstatfs *sfs)
2702static struct super_operations ntfs_sops = { 2702static struct super_operations ntfs_sops = {
2703 .alloc_inode = ntfs_alloc_big_inode, /* VFS: Allocate new inode. */ 2703 .alloc_inode = ntfs_alloc_big_inode, /* VFS: Allocate new inode. */
2704 .destroy_inode = ntfs_destroy_big_inode, /* VFS: Deallocate inode. */ 2704 .destroy_inode = ntfs_destroy_big_inode, /* VFS: Deallocate inode. */
2705 .put_inode = ntfs_put_inode, /* VFS: Called just before
2706 the inode reference count
2707 is decreased. */
2708#ifdef NTFS_RW 2705#ifdef NTFS_RW
2709 //.dirty_inode = NULL, /* VFS: Called from 2706 //.dirty_inode = NULL, /* VFS: Called from
2710 // __mark_inode_dirty(). */ 2707 // __mark_inode_dirty(). */
@@ -3261,7 +3258,7 @@ static void __exit exit_ntfs_fs(void)
3261} 3258}
3262 3259
3263MODULE_AUTHOR("Anton Altaparmakov <aia21@cantab.net>"); 3260MODULE_AUTHOR("Anton Altaparmakov <aia21@cantab.net>");
3264MODULE_DESCRIPTION("NTFS 1.2/3.x driver - Copyright (c) 2001-2006 Anton Altaparmakov"); 3261MODULE_DESCRIPTION("NTFS 1.2/3.x driver - Copyright (c) 2001-2007 Anton Altaparmakov");
3265MODULE_VERSION(NTFS_VERSION); 3262MODULE_VERSION(NTFS_VERSION);
3266MODULE_LICENSE("GPL"); 3263MODULE_LICENSE("GPL");
3267#ifdef DEBUG 3264#ifdef DEBUG
diff --git a/fs/ocfs2/export.c b/fs/ocfs2/export.c
index 06be6e774cf9..56e1fefc1205 100644
--- a/fs/ocfs2/export.c
+++ b/fs/ocfs2/export.c
@@ -60,14 +60,11 @@ static struct dentry *ocfs2_get_dentry(struct super_block *sb, void *vobjp)
60 60
61 inode = ocfs2_iget(OCFS2_SB(sb), handle->ih_blkno, 0); 61 inode = ocfs2_iget(OCFS2_SB(sb), handle->ih_blkno, 0);
62 62
63 if (IS_ERR(inode)) { 63 if (IS_ERR(inode))
64 mlog_errno(PTR_ERR(inode));
65 return (void *)inode; 64 return (void *)inode;
66 }
67 65
68 if (handle->ih_generation != inode->i_generation) { 66 if (handle->ih_generation != inode->i_generation) {
69 iput(inode); 67 iput(inode);
70 mlog_errno(-ESTALE);
71 return ERR_PTR(-ESTALE); 68 return ERR_PTR(-ESTALE);
72 } 69 }
73 70
diff --git a/fs/ocfs2/inode.c b/fs/ocfs2/inode.c
index e4d91493d7d7..28ab56f2b98c 100644
--- a/fs/ocfs2/inode.c
+++ b/fs/ocfs2/inode.c
@@ -146,7 +146,6 @@ struct inode *ocfs2_iget(struct ocfs2_super *osb, u64 blkno, int flags)
146 if (is_bad_inode(inode)) { 146 if (is_bad_inode(inode)) {
147 iput(inode); 147 iput(inode);
148 inode = ERR_PTR(-ESTALE); 148 inode = ERR_PTR(-ESTALE);
149 mlog_errno(PTR_ERR(inode));
150 goto bail; 149 goto bail;
151 } 150 }
152 151
@@ -155,8 +154,7 @@ bail:
155 mlog(0, "returning inode with number %llu\n", 154 mlog(0, "returning inode with number %llu\n",
156 (unsigned long long)OCFS2_I(inode)->ip_blkno); 155 (unsigned long long)OCFS2_I(inode)->ip_blkno);
157 mlog_exit_ptr(inode); 156 mlog_exit_ptr(inode);
158 } else 157 }
159 mlog_errno(PTR_ERR(inode));
160 158
161 return inode; 159 return inode;
162} 160}
@@ -247,7 +245,7 @@ int ocfs2_populate_inode(struct inode *inode, struct ocfs2_dinode *fe,
247 * today. change if needed. */ 245 * today. change if needed. */
248 if (!OCFS2_IS_VALID_DINODE(fe) || 246 if (!OCFS2_IS_VALID_DINODE(fe) ||
249 !(fe->i_flags & cpu_to_le32(OCFS2_VALID_FL))) { 247 !(fe->i_flags & cpu_to_le32(OCFS2_VALID_FL))) {
250 mlog(ML_ERROR, "Invalid dinode: i_ino=%lu, i_blkno=%llu, " 248 mlog(0, "Invalid dinode: i_ino=%lu, i_blkno=%llu, "
251 "signature = %.*s, flags = 0x%x\n", 249 "signature = %.*s, flags = 0x%x\n",
252 inode->i_ino, 250 inode->i_ino,
253 (unsigned long long)le64_to_cpu(fe->i_blkno), 7, 251 (unsigned long long)le64_to_cpu(fe->i_blkno), 7,
@@ -478,11 +476,8 @@ static int ocfs2_read_locked_inode(struct inode *inode,
478 S_ISBLK(le16_to_cpu(fe->i_mode))) 476 S_ISBLK(le16_to_cpu(fe->i_mode)))
479 inode->i_rdev = huge_decode_dev(le64_to_cpu(fe->id1.dev1.i_rdev)); 477 inode->i_rdev = huge_decode_dev(le64_to_cpu(fe->id1.dev1.i_rdev));
480 478
481 if (ocfs2_populate_inode(inode, fe, 0) < 0) { 479 if (ocfs2_populate_inode(inode, fe, 0) < 0)
482 mlog(ML_ERROR, "populate failed! i_blkno=%llu, i_ino=%lu\n",
483 (unsigned long long)fe->i_blkno, inode->i_ino);
484 goto bail; 480 goto bail;
485 }
486 481
487 BUG_ON(args->fi_blkno != le64_to_cpu(fe->i_blkno)); 482 BUG_ON(args->fi_blkno != le64_to_cpu(fe->i_blkno));
488 483
diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c
index 9637039c2633..f3d7803b4b46 100644
--- a/fs/ocfs2/namei.c
+++ b/fs/ocfs2/namei.c
@@ -932,14 +932,15 @@ static int ocfs2_unlink(struct inode *dir,
932 goto leave; 932 goto leave;
933 } 933 }
934 934
935 if (S_ISDIR(inode->i_mode)) { 935 dir->i_ctime = dir->i_mtime = CURRENT_TIME;
936 if (S_ISDIR(inode->i_mode))
936 drop_nlink(dir); 937 drop_nlink(dir);
937 status = ocfs2_mark_inode_dirty(handle, dir, 938
938 parent_node_bh); 939 status = ocfs2_mark_inode_dirty(handle, dir, parent_node_bh);
939 if (status < 0) { 940 if (status < 0) {
940 mlog_errno(status); 941 mlog_errno(status);
942 if (S_ISDIR(inode->i_mode))
941 inc_nlink(dir); 943 inc_nlink(dir);
942 }
943 } 944 }
944 945
945leave: 946leave:
@@ -1068,6 +1069,7 @@ static int ocfs2_rename(struct inode *old_dir,
1068 char orphan_name[OCFS2_ORPHAN_NAMELEN + 1]; 1069 char orphan_name[OCFS2_ORPHAN_NAMELEN + 1];
1069 struct buffer_head *orphan_entry_bh = NULL; 1070 struct buffer_head *orphan_entry_bh = NULL;
1070 struct buffer_head *newfe_bh = NULL; 1071 struct buffer_head *newfe_bh = NULL;
1072 struct buffer_head *old_inode_bh = NULL;
1071 struct buffer_head *insert_entry_bh = NULL; 1073 struct buffer_head *insert_entry_bh = NULL;
1072 struct ocfs2_super *osb = NULL; 1074 struct ocfs2_super *osb = NULL;
1073 u64 newfe_blkno; 1075 u64 newfe_blkno;
@@ -1079,7 +1081,7 @@ static int ocfs2_rename(struct inode *old_dir,
1079 struct buffer_head *new_de_bh = NULL, *old_de_bh = NULL; // bhs for above 1081 struct buffer_head *new_de_bh = NULL, *old_de_bh = NULL; // bhs for above
1080 struct buffer_head *old_inode_de_bh = NULL; // if old_dentry is a dir, 1082 struct buffer_head *old_inode_de_bh = NULL; // if old_dentry is a dir,
1081 // this is the 1st dirent bh 1083 // this is the 1st dirent bh
1082 nlink_t old_dir_nlink = old_dir->i_nlink, new_dir_nlink = new_dir->i_nlink; 1084 nlink_t old_dir_nlink = old_dir->i_nlink;
1083 1085
1084 /* At some point it might be nice to break this function up a 1086 /* At some point it might be nice to break this function up a
1085 * bit. */ 1087 * bit. */
@@ -1139,12 +1141,11 @@ static int ocfs2_rename(struct inode *old_dir,
1139 } 1141 }
1140 1142
1141 /* 1143 /*
1142 * Though we don't require an inode meta data update if 1144 * Aside from allowing a meta data update, the locking here
1143 * old_inode is not a directory, we lock anyway here to ensure 1145 * also ensures that the vote thread on other nodes won't have
1144 * the vote thread on other nodes won't have to concurrently 1146 * to concurrently downconvert the inode and the dentry locks.
1145 * downconvert the inode and the dentry locks.
1146 */ 1147 */
1147 status = ocfs2_meta_lock(old_inode, NULL, 1); 1148 status = ocfs2_meta_lock(old_inode, &old_inode_bh, 1);
1148 if (status < 0) { 1149 if (status < 0) {
1149 if (status != -ENOENT) 1150 if (status != -ENOENT)
1150 mlog_errno(status); 1151 mlog_errno(status);
@@ -1355,6 +1356,7 @@ static int ocfs2_rename(struct inode *old_dir,
1355 1356
1356 old_inode->i_ctime = CURRENT_TIME; 1357 old_inode->i_ctime = CURRENT_TIME;
1357 mark_inode_dirty(old_inode); 1358 mark_inode_dirty(old_inode);
1359 ocfs2_mark_inode_dirty(handle, old_inode, old_inode_bh);
1358 1360
1359 /* now that the name has been added to new_dir, remove the old name */ 1361 /* now that the name has been added to new_dir, remove the old name */
1360 status = ocfs2_delete_entry(handle, old_dir, old_de, old_de_bh); 1362 status = ocfs2_delete_entry(handle, old_dir, old_de, old_de_bh);
@@ -1384,27 +1386,22 @@ static int ocfs2_rename(struct inode *old_dir,
1384 } 1386 }
1385 } 1387 }
1386 mark_inode_dirty(old_dir); 1388 mark_inode_dirty(old_dir);
1387 if (new_inode) 1389 ocfs2_mark_inode_dirty(handle, old_dir, old_dir_bh);
1390 if (new_inode) {
1388 mark_inode_dirty(new_inode); 1391 mark_inode_dirty(new_inode);
1392 ocfs2_mark_inode_dirty(handle, new_inode, newfe_bh);
1393 }
1389 1394
1390 if (old_dir != new_dir) 1395 if (old_dir != new_dir) {
1391 if (new_dir_nlink != new_dir->i_nlink) { 1396 /* Keep the same times on both directories.*/
1392 if (!new_dir_bh) { 1397 new_dir->i_ctime = new_dir->i_mtime = old_dir->i_ctime;
1393 mlog(ML_ERROR, "need to change nlink for new " 1398
1394 "dir %llu from %d to %d but bh is NULL\n", 1399 /*
1395 (unsigned long long)OCFS2_I(new_dir)->ip_blkno, 1400 * This will also pick up the i_nlink change from the
1396 (int)new_dir_nlink, new_dir->i_nlink); 1401 * block above.
1397 } else { 1402 */
1398 struct ocfs2_dinode *fe; 1403 ocfs2_mark_inode_dirty(handle, new_dir, new_dir_bh);
1399 status = ocfs2_journal_access(handle, 1404 }
1400 new_dir,
1401 new_dir_bh,
1402 OCFS2_JOURNAL_ACCESS_WRITE);
1403 fe = (struct ocfs2_dinode *) new_dir_bh->b_data;
1404 fe->i_links_count = cpu_to_le16(new_dir->i_nlink);
1405 status = ocfs2_journal_dirty(handle, new_dir_bh);
1406 }
1407 }
1408 1405
1409 if (old_dir_nlink != old_dir->i_nlink) { 1406 if (old_dir_nlink != old_dir->i_nlink) {
1410 if (!old_dir_bh) { 1407 if (!old_dir_bh) {
@@ -1455,6 +1452,8 @@ bail:
1455 iput(new_inode); 1452 iput(new_inode);
1456 if (newfe_bh) 1453 if (newfe_bh)
1457 brelse(newfe_bh); 1454 brelse(newfe_bh);
1455 if (old_inode_bh)
1456 brelse(old_inode_bh);
1458 if (old_dir_bh) 1457 if (old_dir_bh)
1459 brelse(old_dir_bh); 1458 brelse(old_dir_bh);
1460 if (new_dir_bh) 1459 if (new_dir_bh)
@@ -1826,6 +1825,13 @@ static int __ocfs2_add_entry(handle_t *handle,
1826 (le16_to_cpu(de->rec_len) >= rec_len)) || 1825 (le16_to_cpu(de->rec_len) >= rec_len)) ||
1827 (le16_to_cpu(de->rec_len) >= 1826 (le16_to_cpu(de->rec_len) >=
1828 (OCFS2_DIR_REC_LEN(de->name_len) + rec_len))) { 1827 (OCFS2_DIR_REC_LEN(de->name_len) + rec_len))) {
1828 dir->i_mtime = dir->i_ctime = CURRENT_TIME;
1829 retval = ocfs2_mark_inode_dirty(handle, dir, parent_fe_bh);
1830 if (retval < 0) {
1831 mlog_errno(retval);
1832 goto bail;
1833 }
1834
1829 status = ocfs2_journal_access(handle, dir, insert_bh, 1835 status = ocfs2_journal_access(handle, dir, insert_bh,
1830 OCFS2_JOURNAL_ACCESS_WRITE); 1836 OCFS2_JOURNAL_ACCESS_WRITE);
1831 /* By now the buffer is marked for journaling */ 1837 /* By now the buffer is marked for journaling */
@@ -1848,7 +1854,6 @@ static int __ocfs2_add_entry(handle_t *handle,
1848 de->name_len = namelen; 1854 de->name_len = namelen;
1849 memcpy(de->name, name, namelen); 1855 memcpy(de->name, name, namelen);
1850 1856
1851 dir->i_mtime = dir->i_ctime = CURRENT_TIME;
1852 dir->i_version++; 1857 dir->i_version++;
1853 status = ocfs2_journal_dirty(handle, insert_bh); 1858 status = ocfs2_journal_dirty(handle, insert_bh);
1854 retval = 0; 1859 retval = 0;
diff --git a/fs/ocfs2/ocfs2_fs.h b/fs/ocfs2/ocfs2_fs.h
index b5c68567077e..e61e218f5e0b 100644
--- a/fs/ocfs2/ocfs2_fs.h
+++ b/fs/ocfs2/ocfs2_fs.h
@@ -85,7 +85,7 @@
85#define OCFS2_CLEAR_INCOMPAT_FEATURE(sb,mask) \ 85#define OCFS2_CLEAR_INCOMPAT_FEATURE(sb,mask) \
86 OCFS2_SB(sb)->s_feature_incompat &= ~(mask) 86 OCFS2_SB(sb)->s_feature_incompat &= ~(mask)
87 87
88#define OCFS2_FEATURE_COMPAT_SUPP 0 88#define OCFS2_FEATURE_COMPAT_SUPP OCFS2_FEATURE_COMPAT_BACKUP_SB
89#define OCFS2_FEATURE_INCOMPAT_SUPP OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT 89#define OCFS2_FEATURE_INCOMPAT_SUPP OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT
90#define OCFS2_FEATURE_RO_COMPAT_SUPP 0 90#define OCFS2_FEATURE_RO_COMPAT_SUPP 0
91 91
@@ -110,6 +110,20 @@
110#define OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC 0x0010 110#define OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC 0x0010
111 111
112/* 112/*
113 * backup superblock flag is used to indicate that this volume
114 * has backup superblocks.
115 */
116#define OCFS2_FEATURE_COMPAT_BACKUP_SB 0x0001
117
118/* The byte offset of the first backup block will be 1G.
119 * The following will be 4G, 16G, 64G, 256G and 1T.
120 */
121#define OCFS2_BACKUP_SB_START 1 << 30
122
123/* the max backup superblock nums */
124#define OCFS2_MAX_BACKUP_SUPERBLOCKS 6
125
126/*
113 * Flags on ocfs2_dinode.i_flags 127 * Flags on ocfs2_dinode.i_flags
114 */ 128 */
115#define OCFS2_VALID_FL (0x00000001) /* Inode is valid */ 129#define OCFS2_VALID_FL (0x00000001) /* Inode is valid */
@@ -566,6 +580,20 @@ static inline int ocfs2_truncate_recs_per_inode(struct super_block *sb)
566 580
567 return size / sizeof(struct ocfs2_truncate_rec); 581 return size / sizeof(struct ocfs2_truncate_rec);
568} 582}
583
584static inline u64 ocfs2_backup_super_blkno(struct super_block *sb, int index)
585{
586 u64 offset = OCFS2_BACKUP_SB_START;
587
588 if (index >= 0 && index < OCFS2_MAX_BACKUP_SUPERBLOCKS) {
589 offset <<= (2 * index);
590 offset >>= sb->s_blocksize_bits;
591 return offset;
592 }
593
594 return 0;
595
596}
569#else 597#else
570static inline int ocfs2_fast_symlink_chars(int blocksize) 598static inline int ocfs2_fast_symlink_chars(int blocksize)
571{ 599{
@@ -631,6 +659,19 @@ static inline int ocfs2_truncate_recs_per_inode(int blocksize)
631 659
632 return size / sizeof(struct ocfs2_truncate_rec); 660 return size / sizeof(struct ocfs2_truncate_rec);
633} 661}
662
663static inline uint64_t ocfs2_backup_super_blkno(int blocksize, int index)
664{
665 uint64_t offset = OCFS2_BACKUP_SB_START;
666
667 if (index >= 0 && index < OCFS2_MAX_BACKUP_SUPERBLOCKS) {
668 offset <<= (2 * index);
669 offset /= blocksize;
670 return offset;
671 }
672
673 return 0;
674}
634#endif /* __KERNEL__ */ 675#endif /* __KERNEL__ */
635 676
636 677
diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c
index 957d6878b03e..03b0191534d5 100644
--- a/fs/ocfs2/symlink.c
+++ b/fs/ocfs2/symlink.c
@@ -158,8 +158,7 @@ static void *ocfs2_follow_link(struct dentry *dentry,
158 } 158 }
159 159
160 status = vfs_follow_link(nd, link); 160 status = vfs_follow_link(nd, link);
161 if (status && status != -ENOENT) 161
162 mlog_errno(status);
163bail: 162bail:
164 if (page) { 163 if (page) {
165 kunmap(page); 164 kunmap(page);
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 77a57b5799c4..1a979ea3b379 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -371,9 +371,11 @@ static int mounts_open(struct inode *inode, struct file *file)
371 371
372 if (task) { 372 if (task) {
373 task_lock(task); 373 task_lock(task);
374 ns = task->nsproxy->mnt_ns; 374 if (task->nsproxy) {
375 if (ns) 375 ns = task->nsproxy->mnt_ns;
376 get_mnt_ns(ns); 376 if (ns)
377 get_mnt_ns(ns);
378 }
377 task_unlock(task); 379 task_unlock(task);
378 put_task_struct(task); 380 put_task_struct(task);
379 } 381 }
@@ -2326,13 +2328,23 @@ static int proc_task_readdir(struct file * filp, void * dirent, filldir_t filldi
2326{ 2328{
2327 struct dentry *dentry = filp->f_path.dentry; 2329 struct dentry *dentry = filp->f_path.dentry;
2328 struct inode *inode = dentry->d_inode; 2330 struct inode *inode = dentry->d_inode;
2329 struct task_struct *leader = get_proc_task(inode); 2331 struct task_struct *leader = NULL;
2330 struct task_struct *task; 2332 struct task_struct *task;
2331 int retval = -ENOENT; 2333 int retval = -ENOENT;
2332 ino_t ino; 2334 ino_t ino;
2333 int tid; 2335 int tid;
2334 unsigned long pos = filp->f_pos; /* avoiding "long long" filp->f_pos */ 2336 unsigned long pos = filp->f_pos; /* avoiding "long long" filp->f_pos */
2335 2337
2338 task = get_proc_task(inode);
2339 if (!task)
2340 goto out_no_task;
2341 rcu_read_lock();
2342 if (pid_alive(task)) {
2343 leader = task->group_leader;
2344 get_task_struct(leader);
2345 }
2346 rcu_read_unlock();
2347 put_task_struct(task);
2336 if (!leader) 2348 if (!leader)
2337 goto out_no_task; 2349 goto out_no_task;
2338 retval = 0; 2350 retval = 0;
diff --git a/fs/reiserfs/file.c b/fs/reiserfs/file.c
index 99b6f329ba23..5109f1d5e7ff 100644
--- a/fs/reiserfs/file.c
+++ b/fs/reiserfs/file.c
@@ -48,6 +48,11 @@ static int reiserfs_file_release(struct inode *inode, struct file *filp)
48 } 48 }
49 49
50 mutex_lock(&inode->i_mutex); 50 mutex_lock(&inode->i_mutex);
51
52 mutex_lock(&(REISERFS_I(inode)->i_mmap));
53 if (REISERFS_I(inode)->i_flags & i_ever_mapped)
54 REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask;
55
51 reiserfs_write_lock(inode->i_sb); 56 reiserfs_write_lock(inode->i_sb);
52 /* freeing preallocation only involves relogging blocks that 57 /* freeing preallocation only involves relogging blocks that
53 * are already in the current transaction. preallocation gets 58 * are already in the current transaction. preallocation gets
@@ -100,11 +105,24 @@ static int reiserfs_file_release(struct inode *inode, struct file *filp)
100 err = reiserfs_truncate_file(inode, 0); 105 err = reiserfs_truncate_file(inode, 0);
101 } 106 }
102 out: 107 out:
108 mutex_unlock(&(REISERFS_I(inode)->i_mmap));
103 mutex_unlock(&inode->i_mutex); 109 mutex_unlock(&inode->i_mutex);
104 reiserfs_write_unlock(inode->i_sb); 110 reiserfs_write_unlock(inode->i_sb);
105 return err; 111 return err;
106} 112}
107 113
114static int reiserfs_file_mmap(struct file *file, struct vm_area_struct *vma)
115{
116 struct inode *inode;
117
118 inode = file->f_path.dentry->d_inode;
119 mutex_lock(&(REISERFS_I(inode)->i_mmap));
120 REISERFS_I(inode)->i_flags |= i_ever_mapped;
121 mutex_unlock(&(REISERFS_I(inode)->i_mmap));
122
123 return generic_file_mmap(file, vma);
124}
125
108static void reiserfs_vfs_truncate_file(struct inode *inode) 126static void reiserfs_vfs_truncate_file(struct inode *inode)
109{ 127{
110 reiserfs_truncate_file(inode, 1); 128 reiserfs_truncate_file(inode, 1);
@@ -1527,7 +1545,7 @@ const struct file_operations reiserfs_file_operations = {
1527#ifdef CONFIG_COMPAT 1545#ifdef CONFIG_COMPAT
1528 .compat_ioctl = reiserfs_compat_ioctl, 1546 .compat_ioctl = reiserfs_compat_ioctl,
1529#endif 1547#endif
1530 .mmap = generic_file_mmap, 1548 .mmap = reiserfs_file_mmap,
1531 .open = generic_file_open, 1549 .open = generic_file_open,
1532 .release = reiserfs_file_release, 1550 .release = reiserfs_file_release,
1533 .fsync = reiserfs_sync_file, 1551 .fsync = reiserfs_sync_file,
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
index f3d1c4a77979..9fcbfe316977 100644
--- a/fs/reiserfs/inode.c
+++ b/fs/reiserfs/inode.c
@@ -1125,6 +1125,7 @@ static void init_inode(struct inode *inode, struct treepath *path)
1125 REISERFS_I(inode)->i_prealloc_count = 0; 1125 REISERFS_I(inode)->i_prealloc_count = 0;
1126 REISERFS_I(inode)->i_trans_id = 0; 1126 REISERFS_I(inode)->i_trans_id = 0;
1127 REISERFS_I(inode)->i_jl = NULL; 1127 REISERFS_I(inode)->i_jl = NULL;
1128 mutex_init(&(REISERFS_I(inode)->i_mmap));
1128 reiserfs_init_acl_access(inode); 1129 reiserfs_init_acl_access(inode);
1129 reiserfs_init_acl_default(inode); 1130 reiserfs_init_acl_default(inode);
1130 reiserfs_init_xattr_rwsem(inode); 1131 reiserfs_init_xattr_rwsem(inode);
@@ -1832,6 +1833,7 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th,
1832 REISERFS_I(inode)->i_attrs = 1833 REISERFS_I(inode)->i_attrs =
1833 REISERFS_I(dir)->i_attrs & REISERFS_INHERIT_MASK; 1834 REISERFS_I(dir)->i_attrs & REISERFS_INHERIT_MASK;
1834 sd_attrs_to_i_attrs(REISERFS_I(inode)->i_attrs, inode); 1835 sd_attrs_to_i_attrs(REISERFS_I(inode)->i_attrs, inode);
1836 mutex_init(&(REISERFS_I(inode)->i_mmap));
1835 reiserfs_init_acl_access(inode); 1837 reiserfs_init_acl_access(inode);
1836 reiserfs_init_acl_default(inode); 1838 reiserfs_init_acl_default(inode);
1837 reiserfs_init_xattr_rwsem(inode); 1839 reiserfs_init_xattr_rwsem(inode);
diff --git a/fs/ufs/balloc.c b/fs/ufs/balloc.c
index 2e0021e8f366..638f4c585e89 100644
--- a/fs/ufs/balloc.c
+++ b/fs/ufs/balloc.c
@@ -227,24 +227,27 @@ failed:
227 * We can come here from ufs_writepage or ufs_prepare_write, 227 * We can come here from ufs_writepage or ufs_prepare_write,
228 * locked_page is argument of these functions, so we already lock it. 228 * locked_page is argument of these functions, so we already lock it.
229 */ 229 */
230static void ufs_change_blocknr(struct inode *inode, unsigned int baseblk, 230static void ufs_change_blocknr(struct inode *inode, unsigned int beg,
231 unsigned int count, unsigned int oldb, 231 unsigned int count, unsigned int oldb,
232 unsigned int newb, struct page *locked_page) 232 unsigned int newb, struct page *locked_page)
233{ 233{
234 unsigned int blk_per_page = 1 << (PAGE_CACHE_SHIFT - inode->i_blkbits); 234 const unsigned mask = (1 << (PAGE_CACHE_SHIFT - inode->i_blkbits)) - 1;
235 struct address_space *mapping = inode->i_mapping; 235 struct address_space * const mapping = inode->i_mapping;
236 pgoff_t index, cur_index = locked_page->index; 236 pgoff_t index, cur_index;
237 unsigned int i, j; 237 unsigned end, pos, j;
238 struct page *page; 238 struct page *page;
239 struct buffer_head *head, *bh; 239 struct buffer_head *head, *bh;
240 240
241 UFSD("ENTER, ino %lu, count %u, oldb %u, newb %u\n", 241 UFSD("ENTER, ino %lu, count %u, oldb %u, newb %u\n",
242 inode->i_ino, count, oldb, newb); 242 inode->i_ino, count, oldb, newb);
243 243
244 BUG_ON(!locked_page);
244 BUG_ON(!PageLocked(locked_page)); 245 BUG_ON(!PageLocked(locked_page));
245 246
246 for (i = 0; i < count; i += blk_per_page) { 247 cur_index = locked_page->index;
247 index = (baseblk+i) >> (PAGE_CACHE_SHIFT - inode->i_blkbits); 248
249 for (end = count + beg; beg < end; beg = (beg | mask) + 1) {
250 index = beg >> (PAGE_CACHE_SHIFT - inode->i_blkbits);
248 251
249 if (likely(cur_index != index)) { 252 if (likely(cur_index != index)) {
250 page = ufs_get_locked_page(mapping, index); 253 page = ufs_get_locked_page(mapping, index);
@@ -253,21 +256,32 @@ static void ufs_change_blocknr(struct inode *inode, unsigned int baseblk,
253 } else 256 } else
254 page = locked_page; 257 page = locked_page;
255 258
256 j = i;
257 head = page_buffers(page); 259 head = page_buffers(page);
258 bh = head; 260 bh = head;
261 pos = beg & mask;
262 for (j = 0; j < pos; ++j)
263 bh = bh->b_this_page;
264 j = 0;
259 do { 265 do {
260 if (likely(bh->b_blocknr == j + oldb && j < count)) { 266 if (buffer_mapped(bh)) {
261 unmap_underlying_metadata(bh->b_bdev, 267 pos = bh->b_blocknr - oldb;
262 bh->b_blocknr); 268 if (pos < count) {
263 bh->b_blocknr = newb + j++; 269 UFSD(" change from %llu to %llu\n",
264 mark_buffer_dirty(bh); 270 (unsigned long long)pos + oldb,
271 (unsigned long long)pos + newb);
272 bh->b_blocknr = newb + pos;
273 unmap_underlying_metadata(bh->b_bdev,
274 bh->b_blocknr);
275 mark_buffer_dirty(bh);
276 ++j;
277 }
265 } 278 }
266 279
267 bh = bh->b_this_page; 280 bh = bh->b_this_page;
268 } while (bh != head); 281 } while (bh != head);
269 282
270 set_page_dirty(page); 283 if (j)
284 set_page_dirty(page);
271 285
272 if (likely(cur_index != index)) 286 if (likely(cur_index != index))
273 ufs_put_locked_page(page); 287 ufs_put_locked_page(page);
@@ -415,14 +429,14 @@ unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
415 } 429 }
416 result = ufs_alloc_fragments (inode, cgno, goal, request, err); 430 result = ufs_alloc_fragments (inode, cgno, goal, request, err);
417 if (result) { 431 if (result) {
432 ufs_clear_frags(inode, result + oldcount, newcount - oldcount,
433 locked_page != NULL);
418 ufs_change_blocknr(inode, fragment - oldcount, oldcount, tmp, 434 ufs_change_blocknr(inode, fragment - oldcount, oldcount, tmp,
419 result, locked_page); 435 result, locked_page);
420 436
421 *p = cpu_to_fs32(sb, result); 437 *p = cpu_to_fs32(sb, result);
422 *err = 0; 438 *err = 0;
423 UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count); 439 UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count);
424 ufs_clear_frags(inode, result + oldcount, newcount - oldcount,
425 locked_page != NULL);
426 unlock_super(sb); 440 unlock_super(sb);
427 if (newcount < request) 441 if (newcount < request)
428 ufs_free_fragments (inode, result + newcount, request - newcount); 442 ufs_free_fragments (inode, result + newcount, request - newcount);
diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
index 2fbab0aab688..4295ca91cf85 100644
--- a/fs/ufs/inode.c
+++ b/fs/ufs/inode.c
@@ -242,7 +242,8 @@ repeat:
242 goal = tmp + uspi->s_fpb; 242 goal = tmp + uspi->s_fpb;
243 tmp = ufs_new_fragments (inode, p, fragment - blockoff, 243 tmp = ufs_new_fragments (inode, p, fragment - blockoff,
244 goal, required + blockoff, 244 goal, required + blockoff,
245 err, locked_page); 245 err,
246 phys != NULL ? locked_page : NULL);
246 } 247 }
247 /* 248 /*
248 * We will extend last allocated block 249 * We will extend last allocated block
@@ -250,7 +251,7 @@ repeat:
250 else if (lastblock == block) { 251 else if (lastblock == block) {
251 tmp = ufs_new_fragments(inode, p, fragment - (blockoff - lastblockoff), 252 tmp = ufs_new_fragments(inode, p, fragment - (blockoff - lastblockoff),
252 fs32_to_cpu(sb, *p), required + (blockoff - lastblockoff), 253 fs32_to_cpu(sb, *p), required + (blockoff - lastblockoff),
253 err, locked_page); 254 err, phys != NULL ? locked_page : NULL);
254 } else /* (lastblock > block) */ { 255 } else /* (lastblock > block) */ {
255 /* 256 /*
256 * We will allocate new block before last allocated block 257 * We will allocate new block before last allocated block
@@ -261,7 +262,8 @@ repeat:
261 goal = tmp + uspi->s_fpb; 262 goal = tmp + uspi->s_fpb;
262 } 263 }
263 tmp = ufs_new_fragments(inode, p, fragment - blockoff, 264 tmp = ufs_new_fragments(inode, p, fragment - blockoff,
264 goal, uspi->s_fpb, err, locked_page); 265 goal, uspi->s_fpb, err,
266 phys != NULL ? locked_page : NULL);
265 } 267 }
266 if (!tmp) { 268 if (!tmp) {
267 if ((!blockoff && *p) || 269 if ((!blockoff && *p) ||
@@ -438,9 +440,11 @@ int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buffer_head
438 * it much more readable: 440 * it much more readable:
439 */ 441 */
440#define GET_INODE_DATABLOCK(x) \ 442#define GET_INODE_DATABLOCK(x) \
441 ufs_inode_getfrag(inode, x, fragment, 1, &err, &phys, &new, bh_result->b_page) 443 ufs_inode_getfrag(inode, x, fragment, 1, &err, &phys, &new,\
444 bh_result->b_page)
442#define GET_INODE_PTR(x) \ 445#define GET_INODE_PTR(x) \
443 ufs_inode_getfrag(inode, x, fragment, uspi->s_fpb, &err, NULL, NULL, NULL) 446 ufs_inode_getfrag(inode, x, fragment, uspi->s_fpb, &err, NULL, NULL,\
447 bh_result->b_page)
444#define GET_INDIRECT_DATABLOCK(x) \ 448#define GET_INDIRECT_DATABLOCK(x) \
445 ufs_inode_getblock(inode, bh, x, fragment, \ 449 ufs_inode_getblock(inode, bh, x, fragment, \
446 &err, &phys, &new, bh_result->b_page) 450 &err, &phys, &new, bh_result->b_page)
diff --git a/fs/ufs/truncate.c b/fs/ufs/truncate.c
index ea11d04c41a0..0437b0a6fe97 100644
--- a/fs/ufs/truncate.c
+++ b/fs/ufs/truncate.c
@@ -109,10 +109,10 @@ static int ufs_trunc_direct (struct inode * inode)
109 tmp = fs32_to_cpu(sb, *p); 109 tmp = fs32_to_cpu(sb, *p);
110 if (!tmp ) 110 if (!tmp )
111 ufs_panic (sb, "ufs_trunc_direct", "internal error"); 111 ufs_panic (sb, "ufs_trunc_direct", "internal error");
112 frag2 -= frag1;
112 frag1 = ufs_fragnum (frag1); 113 frag1 = ufs_fragnum (frag1);
113 frag2 = ufs_fragnum (frag2);
114 114
115 ufs_free_fragments (inode, tmp + frag1, frag2 - frag1); 115 ufs_free_fragments(inode, tmp + frag1, frag2);
116 mark_inode_dirty(inode); 116 mark_inode_dirty(inode);
117 frag_to_free = tmp + frag1; 117 frag_to_free = tmp + frag1;
118 118
diff --git a/include/asm-alpha/dma-mapping.h b/include/asm-alpha/dma-mapping.h
index 57e09f5e3424..75a1aff5b57b 100644
--- a/include/asm-alpha/dma-mapping.h
+++ b/include/asm-alpha/dma-mapping.h
@@ -41,9 +41,9 @@ int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
41#define dma_map_single(dev, va, size, dir) virt_to_phys(va) 41#define dma_map_single(dev, va, size, dir) virt_to_phys(va)
42#define dma_map_page(dev, page, off, size, dir) (page_to_pa(page) + off) 42#define dma_map_page(dev, page, off, size, dir) (page_to_pa(page) + off)
43 43
44#define dma_unmap_single(dev, addr, size, dir) do { } while (0) 44#define dma_unmap_single(dev, addr, size, dir) ((void)0)
45#define dma_unmap_page(dev, addr, size, dir) do { } while (0) 45#define dma_unmap_page(dev, addr, size, dir) ((void)0)
46#define dma_unmap_sg(dev, sg, nents, dir) do { } while (0) 46#define dma_unmap_sg(dev, sg, nents, dir) ((void)0)
47 47
48#define dma_mapping_error(addr) (0) 48#define dma_mapping_error(addr) (0)
49 49
@@ -55,12 +55,14 @@ int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
55 55
56int dma_set_mask(struct device *dev, u64 mask); 56int dma_set_mask(struct device *dev, u64 mask);
57 57
58#define dma_sync_single_for_cpu(dev, addr, size, dir) do { } while (0) 58#define dma_sync_single_for_cpu(dev, addr, size, dir) ((void)0)
59#define dma_sync_single_for_device(dev, addr, size, dir) do { } while (0) 59#define dma_sync_single_for_device(dev, addr, size, dir) ((void)0)
60#define dma_sync_single_range(dev, addr, off, size, dir) do { } while (0) 60#define dma_sync_single_range(dev, addr, off, size, dir) ((void)0)
61#define dma_sync_sg_for_cpu(dev, sg, nents, dir) do { } while (0) 61#define dma_sync_sg_for_cpu(dev, sg, nents, dir) ((void)0)
62#define dma_sync_sg_for_device(dev, sg, nents, dir) do { } while (0) 62#define dma_sync_sg_for_device(dev, sg, nents, dir) ((void)0)
63#define dma_cache_sync(dev, va, size, dir) do { } while (0) 63#define dma_cache_sync(dev, va, size, dir) ((void)0)
64#define dma_sync_single_range_for_cpu(dev, addr, offset, size, dir) ((void)0)
65#define dma_sync_single_range_for_device(dev, addr, offset, size, dir) ((void)0)
64 66
65#define dma_get_cache_alignment() L1_CACHE_BYTES 67#define dma_get_cache_alignment() L1_CACHE_BYTES
66 68
diff --git a/include/asm-alpha/unistd.h b/include/asm-alpha/unistd.h
index 84313d14e780..e58a427012dd 100644
--- a/include/asm-alpha/unistd.h
+++ b/include/asm-alpha/unistd.h
@@ -342,9 +342,14 @@
342#define __NR_io_cancel 402 342#define __NR_io_cancel 402
343#define __NR_exit_group 405 343#define __NR_exit_group 405
344#define __NR_lookup_dcookie 406 344#define __NR_lookup_dcookie 406
345#define __NR_sys_epoll_create 407 345#define __NR_epoll_create 407
346#define __NR_sys_epoll_ctl 408 346#define __NR_epoll_ctl 408
347#define __NR_sys_epoll_wait 409 347#define __NR_epoll_wait 409
348/* Feb 2007: These three sys_epoll defines shouldn't be here but culling
349 * them would break userspace apps ... we'll kill them off in 2010 :) */
350#define __NR_sys_epoll_create __NR_epoll_create
351#define __NR_sys_epoll_ctl __NR_epoll_ctl
352#define __NR_sys_epoll_wait __NR_epoll_wait
348#define __NR_remap_file_pages 410 353#define __NR_remap_file_pages 410
349#define __NR_set_tid_address 411 354#define __NR_set_tid_address 411
350#define __NR_restart_syscall 412 355#define __NR_restart_syscall 412
diff --git a/include/asm-arm/arch-at91rm9200/at91_ecc.h b/include/asm-arm/arch-at91rm9200/at91_ecc.h
index fddf256a98d3..5c564ede5c5d 100644
--- a/include/asm-arm/arch-at91rm9200/at91_ecc.h
+++ b/include/asm-arm/arch-at91rm9200/at91_ecc.h
@@ -14,7 +14,7 @@
14#define AT91_ECC_H 14#define AT91_ECC_H
15 15
16#define AT91_ECC_CR (AT91_ECC + 0x00) /* Control register */ 16#define AT91_ECC_CR (AT91_ECC + 0x00) /* Control register */
17#define AT91_ECC_RST (1 << 0) /* Reset parity */ 17#define AT91_ECC_RST (1 << 0) /* Reset parity */
18 18
19#define AT91_ECC_MR (AT91_ECC + 0x04) /* Mode register */ 19#define AT91_ECC_MR (AT91_ECC + 0x04) /* Mode register */
20#define AT91_ECC_PAGESIZE (3 << 0) /* Page Size */ 20#define AT91_ECC_PAGESIZE (3 << 0) /* Page Size */
@@ -23,16 +23,16 @@
23#define AT91_ECC_PAGESIZE_2112 (2) 23#define AT91_ECC_PAGESIZE_2112 (2)
24#define AT91_ECC_PAGESIZE_4224 (3) 24#define AT91_ECC_PAGESIZE_4224 (3)
25 25
26#define AT91_ECC_SR (AT91_ECC + 0x08) /* Status register */ 26#define AT91_ECC_SR (AT91_ECC + 0x08) /* Status register */
27#define AT91_ECC_RECERR (1 << 0) /* Recoverable Error */ 27#define AT91_ECC_RECERR (1 << 0) /* Recoverable Error */
28#define AT91_ECC_ECCERR (1 << 1) /* ECC Single Bit Error */ 28#define AT91_ECC_ECCERR (1 << 1) /* ECC Single Bit Error */
29#define AT91_ECC_MULERR (1 << 2) /* Multiple Errors */ 29#define AT91_ECC_MULERR (1 << 2) /* Multiple Errors */
30 30
31#define AT91_ECC_PR (AT91_ECC + 0x0c) /* Parity register */ 31#define AT91_ECC_PR (AT91_ECC + 0x0c) /* Parity register */
32#define AT91_ECC_BITADDR (0xf << 0) /* Bit Error Address */ 32#define AT91_ECC_BITADDR (0xf << 0) /* Bit Error Address */
33#define AT91_ECC_WORDADDR (0xfff << 4) /* Word Error Address */ 33#define AT91_ECC_WORDADDR (0xfff << 4) /* Word Error Address */
34 34
35#define AT91_ECC_NPR (AT91_ECC + 0x10) /* NParity register */ 35#define AT91_ECC_NPR (AT91_ECC + 0x10) /* NParity register */
36#define AT91_ECC_NPARITY (0xffff << 0) /* NParity */ 36#define AT91_ECC_NPARITY (0xffff << 0) /* NParity */
37 37
38#endif 38#endif
diff --git a/include/asm-arm/arch-at91rm9200/at91_pmc.h b/include/asm-arm/arch-at91rm9200/at91_pmc.h
index de8c3da74a01..c3b489d09b6c 100644
--- a/include/asm-arm/arch-at91rm9200/at91_pmc.h
+++ b/include/asm-arm/arch-at91rm9200/at91_pmc.h
@@ -61,7 +61,7 @@
61#define AT91_PMC_CSS_PLLA (2 << 0) 61#define AT91_PMC_CSS_PLLA (2 << 0)
62#define AT91_PMC_CSS_PLLB (3 << 0) 62#define AT91_PMC_CSS_PLLB (3 << 0)
63#define AT91_PMC_PRES (7 << 2) /* Master Clock Prescaler */ 63#define AT91_PMC_PRES (7 << 2) /* Master Clock Prescaler */
64#define AT91_PMC_PRES_1 (0 << 2) 64#define AT91_PMC_PRES_1 (0 << 2)
65#define AT91_PMC_PRES_2 (1 << 2) 65#define AT91_PMC_PRES_2 (1 << 2)
66#define AT91_PMC_PRES_4 (2 << 2) 66#define AT91_PMC_PRES_4 (2 << 2)
67#define AT91_PMC_PRES_8 (3 << 2) 67#define AT91_PMC_PRES_8 (3 << 2)
diff --git a/include/asm-arm/arch-at91rm9200/at91_rstc.h b/include/asm-arm/arch-at91rm9200/at91_rstc.h
index ccdc52da973d..237d3c40b318 100644
--- a/include/asm-arm/arch-at91rm9200/at91_rstc.h
+++ b/include/asm-arm/arch-at91rm9200/at91_rstc.h
@@ -17,7 +17,7 @@
17#define AT91_RSTC_PROCRST (1 << 0) /* Processor Reset */ 17#define AT91_RSTC_PROCRST (1 << 0) /* Processor Reset */
18#define AT91_RSTC_PERRST (1 << 2) /* Peripheral Reset */ 18#define AT91_RSTC_PERRST (1 << 2) /* Peripheral Reset */
19#define AT91_RSTC_EXTRST (1 << 3) /* External Reset */ 19#define AT91_RSTC_EXTRST (1 << 3) /* External Reset */
20#define AT01_RSTC_KEY (0xff << 24) /* KEY Password */ 20#define AT91_RSTC_KEY (0xff << 24) /* KEY Password */
21 21
22#define AT91_RSTC_SR (AT91_RSTC + 0x04) /* Reset Controller Status Register */ 22#define AT91_RSTC_SR (AT91_RSTC + 0x04) /* Reset Controller Status Register */
23#define AT91_RSTC_URSTS (1 << 0) /* User Reset Status */ 23#define AT91_RSTC_URSTS (1 << 0) /* User Reset Status */
diff --git a/include/asm-arm/arch-at91rm9200/at91_rtc.h b/include/asm-arm/arch-at91rm9200/at91_rtc.h
index 6e5065d56260..095fe0883102 100644
--- a/include/asm-arm/arch-at91rm9200/at91_rtc.h
+++ b/include/asm-arm/arch-at91rm9200/at91_rtc.h
@@ -21,21 +21,21 @@
21#define AT91_RTC_UPDCAL (1 << 1) /* Update Request Calendar Register */ 21#define AT91_RTC_UPDCAL (1 << 1) /* Update Request Calendar Register */
22#define AT91_RTC_TIMEVSEL (3 << 8) /* Time Event Selection */ 22#define AT91_RTC_TIMEVSEL (3 << 8) /* Time Event Selection */
23#define AT91_RTC_TIMEVSEL_MINUTE (0 << 8) 23#define AT91_RTC_TIMEVSEL_MINUTE (0 << 8)
24#define AT91_RTC_TIMEVSEL_HOUR (1 << 8) 24#define AT91_RTC_TIMEVSEL_HOUR (1 << 8)
25#define AT91_RTC_TIMEVSEL_DAY24 (2 << 8) 25#define AT91_RTC_TIMEVSEL_DAY24 (2 << 8)
26#define AT91_RTC_TIMEVSEL_DAY12 (3 << 8) 26#define AT91_RTC_TIMEVSEL_DAY12 (3 << 8)
27#define AT91_RTC_CALEVSEL (3 << 16) /* Calendar Event Selection */ 27#define AT91_RTC_CALEVSEL (3 << 16) /* Calendar Event Selection */
28#define AT91_RTC_CALEVSEL_WEEK (0 << 16) 28#define AT91_RTC_CALEVSEL_WEEK (0 << 16)
29#define AT91_RTC_CALEVSEL_MONTH (1 << 16) 29#define AT91_RTC_CALEVSEL_MONTH (1 << 16)
30#define AT91_RTC_CALEVSEL_YEAR (2 << 16) 30#define AT91_RTC_CALEVSEL_YEAR (2 << 16)
31 31
32#define AT91_RTC_MR (AT91_RTC + 0x04) /* Mode Register */ 32#define AT91_RTC_MR (AT91_RTC + 0x04) /* Mode Register */
33#define AT91_RTC_HRMOD (1 << 0) /* 12/24 Hour Mode */ 33#define AT91_RTC_HRMOD (1 << 0) /* 12/24 Hour Mode */
34 34
35#define AT91_RTC_TIMR (AT91_RTC + 0x08) /* Time Register */ 35#define AT91_RTC_TIMR (AT91_RTC + 0x08) /* Time Register */
36#define AT91_RTC_SEC (0x7f << 0) /* Current Second */ 36#define AT91_RTC_SEC (0x7f << 0) /* Current Second */
37#define AT91_RTC_MIN (0x7f << 8) /* Current Minute */ 37#define AT91_RTC_MIN (0x7f << 8) /* Current Minute */
38#define AT91_RTC_HOUR (0x3f << 16) /* Current Hour */ 38#define AT91_RTC_HOUR (0x3f << 16) /* Current Hour */
39#define AT91_RTC_AMPM (1 << 22) /* Ante Meridiem Post Meridiem Indicator */ 39#define AT91_RTC_AMPM (1 << 22) /* Ante Meridiem Post Meridiem Indicator */
40 40
41#define AT91_RTC_CALR (AT91_RTC + 0x0c) /* Calendar Register */ 41#define AT91_RTC_CALR (AT91_RTC + 0x0c) /* Calendar Register */
diff --git a/include/asm-arm/arch-at91rm9200/at91rm9200.h b/include/asm-arm/arch-at91rm9200/at91rm9200.h
index 4d51177efddd..c569b6a21a42 100644
--- a/include/asm-arm/arch-at91rm9200/at91rm9200.h
+++ b/include/asm-arm/arch-at91rm9200/at91rm9200.h
@@ -274,7 +274,7 @@
274#define AT91_PD19_TPK7 (1 << 19) /* B: ETM Trace Packet Port 7 */ 274#define AT91_PD19_TPK7 (1 << 19) /* B: ETM Trace Packet Port 7 */
275#define AT91_PD20_NPCS3 (1 << 20) /* A: SPI Peripheral Chip Select 3 */ 275#define AT91_PD20_NPCS3 (1 << 20) /* A: SPI Peripheral Chip Select 3 */
276#define AT91_PD20_TPK8 (1 << 20) /* B: ETM Trace Packet Port 8 */ 276#define AT91_PD20_TPK8 (1 << 20) /* B: ETM Trace Packet Port 8 */
277#define AT91_PD21_RTS0 (1 << 21) /* A: USART Ready To Send 0 */ 277#define AT91_PD21_RTS0 (1 << 21) /* A: USART Ready To Send 0 */
278#define AT91_PD21_TPK9 (1 << 21) /* B: ETM Trace Packet Port 9 */ 278#define AT91_PD21_TPK9 (1 << 21) /* B: ETM Trace Packet Port 9 */
279#define AT91_PD22_RTS1 (1 << 22) /* A: USART Ready To Send 1 */ 279#define AT91_PD22_RTS1 (1 << 22) /* A: USART Ready To Send 1 */
280#define AT91_PD22_TPK10 (1 << 22) /* B: ETM Trace Packet Port 10 */ 280#define AT91_PD22_TPK10 (1 << 22) /* B: ETM Trace Packet Port 10 */
diff --git a/include/asm-arm/arch-at91rm9200/at91sam9260_matrix.h b/include/asm-arm/arch-at91rm9200/at91sam9260_matrix.h
index 746d973705bf..78f6b4917b8b 100644
--- a/include/asm-arm/arch-at91rm9200/at91sam9260_matrix.h
+++ b/include/asm-arm/arch-at91rm9200/at91sam9260_matrix.h
@@ -58,7 +58,7 @@
58#define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ 58#define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */
59 59
60#define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x11C) /* EBI Chip Select Assignment Register */ 60#define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x11C) /* EBI Chip Select Assignment Register */
61#define AT91_MATRIX_CS1A (1 << 1) /* Chip Select 1 Assignment */ 61#define AT91_MATRIX_CS1A (1 << 1) /* Chip Select 1 Assignment */
62#define AT91_MATRIX_CS1A_SMC (0 << 1) 62#define AT91_MATRIX_CS1A_SMC (0 << 1)
63#define AT91_MATRIX_CS1A_SDRAMC (1 << 1) 63#define AT91_MATRIX_CS1A_SDRAMC (1 << 1)
64#define AT91_MATRIX_CS3A (1 << 3) /* Chip Select 3 Assignment */ 64#define AT91_MATRIX_CS3A (1 << 3) /* Chip Select 3 Assignment */
diff --git a/include/asm-arm/arch-at91rm9200/at91sam9261_matrix.h b/include/asm-arm/arch-at91rm9200/at91sam9261_matrix.h
index 270a5dcdf1cd..ec88efabbe6c 100644
--- a/include/asm-arm/arch-at91rm9200/at91sam9261_matrix.h
+++ b/include/asm-arm/arch-at91rm9200/at91sam9261_matrix.h
@@ -15,7 +15,7 @@
15 15
16#define AT91_MATRIX_MCFG (AT91_MATRIX + 0x00) /* Master Configuration Register */ 16#define AT91_MATRIX_MCFG (AT91_MATRIX + 0x00) /* Master Configuration Register */
17#define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ 17#define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */
18#define AT01_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ 18#define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */
19 19
20#define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x04) /* Slave Configuration Register 0 */ 20#define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x04) /* Slave Configuration Register 0 */
21#define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x08) /* Slave Configuration Register 1 */ 21#define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x08) /* Slave Configuration Register 1 */
@@ -43,8 +43,8 @@
43 43
44#define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x30) /* EBI Chip Select Assignment Register */ 44#define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x30) /* EBI Chip Select Assignment Register */
45#define AT91_MATRIX_CS1A (1 << 1) /* Chip Select 1 Assignment */ 45#define AT91_MATRIX_CS1A (1 << 1) /* Chip Select 1 Assignment */
46#define AT91_MATRIX_CS1A_SMC (0 << 1) 46#define AT91_MATRIX_CS1A_SMC (0 << 1)
47#define AT91_MATRIX_CS1A_SDRAMC (1 << 1) 47#define AT91_MATRIX_CS1A_SDRAMC (1 << 1)
48#define AT91_MATRIX_CS3A (1 << 3) /* Chip Select 3 Assignment */ 48#define AT91_MATRIX_CS3A (1 << 3) /* Chip Select 3 Assignment */
49#define AT91_MATRIX_CS3A_SMC (0 << 3) 49#define AT91_MATRIX_CS3A_SMC (0 << 3)
50#define AT91_MATRIX_CS3A_SMC_SMARTMEDIA (1 << 3) 50#define AT91_MATRIX_CS3A_SMC_SMARTMEDIA (1 << 3)
diff --git a/include/asm-arm/arch-at91rm9200/at91sam926x_mc.h b/include/asm-arm/arch-at91rm9200/at91sam926x_mc.h
index 7d94968b5d57..972e7531c7f4 100644
--- a/include/asm-arm/arch-at91rm9200/at91sam926x_mc.h
+++ b/include/asm-arm/arch-at91rm9200/at91sam926x_mc.h
@@ -33,14 +33,14 @@
33#define AT91_SDRAMC_NC_9 (1 << 0) 33#define AT91_SDRAMC_NC_9 (1 << 0)
34#define AT91_SDRAMC_NC_10 (2 << 0) 34#define AT91_SDRAMC_NC_10 (2 << 0)
35#define AT91_SDRAMC_NC_11 (3 << 0) 35#define AT91_SDRAMC_NC_11 (3 << 0)
36#define AT91_SDRAMC_NR (3 << 2) /* Number of Row Bits */ 36#define AT91_SDRAMC_NR (3 << 2) /* Number of Row Bits */
37#define AT91_SDRAMC_NR_11 (0 << 2) 37#define AT91_SDRAMC_NR_11 (0 << 2)
38#define AT91_SDRAMC_NR_12 (1 << 2) 38#define AT91_SDRAMC_NR_12 (1 << 2)
39#define AT91_SDRAMC_NR_13 (2 << 2) 39#define AT91_SDRAMC_NR_13 (2 << 2)
40#define AT91_SDRAMC_NB (1 << 4) /* Number of Banks */ 40#define AT91_SDRAMC_NB (1 << 4) /* Number of Banks */
41#define AT91_SDRAMC_NB_2 (0 << 4) 41#define AT91_SDRAMC_NB_2 (0 << 4)
42#define AT91_SDRAMC_NB_4 (1 << 4) 42#define AT91_SDRAMC_NB_4 (1 << 4)
43#define AT91_SDRAMC_CAS (3 << 5) /* CAS Latency */ 43#define AT91_SDRAMC_CAS (3 << 5) /* CAS Latency */
44#define AT91_SDRAMC_CAS_1 (1 << 5) 44#define AT91_SDRAMC_CAS_1 (1 << 5)
45#define AT91_SDRAMC_CAS_2 (2 << 5) 45#define AT91_SDRAMC_CAS_2 (2 << 5)
46#define AT91_SDRAMC_CAS_3 (3 << 5) 46#define AT91_SDRAMC_CAS_3 (3 << 5)
@@ -110,10 +110,10 @@
110#define AT91_SMC_MODE(n) (AT91_SMC + 0x0c + ((n)*0x10)) /* Mode Register for CS n */ 110#define AT91_SMC_MODE(n) (AT91_SMC + 0x0c + ((n)*0x10)) /* Mode Register for CS n */
111#define AT91_SMC_READMODE (1 << 0) /* Read Mode */ 111#define AT91_SMC_READMODE (1 << 0) /* Read Mode */
112#define AT91_SMC_WRITEMODE (1 << 1) /* Write Mode */ 112#define AT91_SMC_WRITEMODE (1 << 1) /* Write Mode */
113#define AT91_SMC_EXNWMODE (3 << 5) /* NWAIT Mode */ 113#define AT91_SMC_EXNWMODE (3 << 4) /* NWAIT Mode */
114#define AT91_SMC_EXNWMODE_DISABLE (0 << 5) 114#define AT91_SMC_EXNWMODE_DISABLE (0 << 4)
115#define AT91_SMC_EXNWMODE_FROZEN (2 << 5) 115#define AT91_SMC_EXNWMODE_FROZEN (2 << 4)
116#define AT91_SMC_EXNWMODE_READY (3 << 5) 116#define AT91_SMC_EXNWMODE_READY (3 << 4)
117#define AT91_SMC_BAT (1 << 8) /* Byte Access Type */ 117#define AT91_SMC_BAT (1 << 8) /* Byte Access Type */
118#define AT91_SMC_BAT_SELECT (0 << 8) 118#define AT91_SMC_BAT_SELECT (0 << 8)
119#define AT91_SMC_BAT_WRITE (1 << 8) 119#define AT91_SMC_BAT_WRITE (1 << 8)
diff --git a/include/asm-arm/arch-s3c2410/regs-gpio.h b/include/asm-arm/arch-s3c2410/regs-gpio.h
index b2893e32a236..eae91694edcd 100644
--- a/include/asm-arm/arch-s3c2410/regs-gpio.h
+++ b/include/asm-arm/arch-s3c2410/regs-gpio.h
@@ -52,10 +52,10 @@
52/* general configuration options */ 52/* general configuration options */
53 53
54#define S3C2410_GPIO_LEAVE (0xFFFFFFFF) 54#define S3C2410_GPIO_LEAVE (0xFFFFFFFF)
55#define S3C2410_GPIO_INPUT (0xFFFFFFF0) 55#define S3C2410_GPIO_INPUT (0xFFFFFFF0) /* not available on A */
56#define S3C2410_GPIO_OUTPUT (0xFFFFFFF1) 56#define S3C2410_GPIO_OUTPUT (0xFFFFFFF1)
57#define S3C2410_GPIO_IRQ (0xFFFFFFF2) /* not available for all */ 57#define S3C2410_GPIO_IRQ (0xFFFFFFF2) /* not available for all */
58#define S3C2410_GPIO_SFN2 (0xFFFFFFF2) /* not available on A */ 58#define S3C2410_GPIO_SFN2 (0xFFFFFFF2) /* bank A => addr/cs/nand */
59#define S3C2410_GPIO_SFN3 (0xFFFFFFF3) /* not available on A */ 59#define S3C2410_GPIO_SFN3 (0xFFFFFFF3) /* not available on A */
60 60
61/* register address for the GPIO registers. 61/* register address for the GPIO registers.
diff --git a/include/asm-arm/arch-s3c2410/regs-mem.h b/include/asm-arm/arch-s3c2410/regs-mem.h
index 375dca50364e..e4d82341f7ba 100644
--- a/include/asm-arm/arch-s3c2410/regs-mem.h
+++ b/include/asm-arm/arch-s3c2410/regs-mem.h
@@ -133,10 +133,10 @@
133#define S3C2410_BANKCON_SDRAM (0x3 << 15) 133#define S3C2410_BANKCON_SDRAM (0x3 << 15)
134 134
135/* next bits only for EDO DRAM in 6,7 */ 135/* next bits only for EDO DRAM in 6,7 */
136#define S3C2400_BANKCON_EDO_Trdc1 (0x00 << 4) 136#define S3C2400_BANKCON_EDO_Trcd1 (0x00 << 4)
137#define S3C2400_BANKCON_EDO_Trdc2 (0x01 << 4) 137#define S3C2400_BANKCON_EDO_Trcd2 (0x01 << 4)
138#define S3C2400_BANKCON_EDO_Trdc3 (0x02 << 4) 138#define S3C2400_BANKCON_EDO_Trcd3 (0x02 << 4)
139#define S3C2400_BANKCON_EDO_Trdc4 (0x03 << 4) 139#define S3C2400_BANKCON_EDO_Trcd4 (0x03 << 4)
140 140
141/* CAS pulse width */ 141/* CAS pulse width */
142#define S3C2400_BANKCON_EDO_PULSE1 (0x00 << 3) 142#define S3C2400_BANKCON_EDO_PULSE1 (0x00 << 3)
@@ -153,9 +153,9 @@
153#define S3C2400_BANKCON_EDO_SCANb11 (0x03 << 0) 153#define S3C2400_BANKCON_EDO_SCANb11 (0x03 << 0)
154 154
155/* next bits only for SDRAM in 6,7 */ 155/* next bits only for SDRAM in 6,7 */
156#define S3C2410_BANKCON_Trdc2 (0x00 << 2) 156#define S3C2410_BANKCON_Trcd2 (0x00 << 2)
157#define S3C2410_BANKCON_Trdc3 (0x01 << 2) 157#define S3C2410_BANKCON_Trcd3 (0x01 << 2)
158#define S3C2410_BANKCON_Trdc4 (0x02 << 2) 158#define S3C2410_BANKCON_Trcd4 (0x02 << 2)
159 159
160/* control column address select */ 160/* control column address select */
161#define S3C2410_BANKCON_SCANb8 (0x00 << 0) 161#define S3C2410_BANKCON_SCANb8 (0x00 << 0)
diff --git a/include/asm-arm/fpstate.h b/include/asm-arm/fpstate.h
index 6af4e6bd1290..f31cda5a55ee 100644
--- a/include/asm-arm/fpstate.h
+++ b/include/asm-arm/fpstate.h
@@ -35,6 +35,9 @@ struct vfp_hard_struct {
35 */ 35 */
36 __u32 fpinst; 36 __u32 fpinst;
37 __u32 fpinst2; 37 __u32 fpinst2;
38#ifdef CONFIG_SMP
39 __u32 cpu;
40#endif
38}; 41};
39 42
40union vfp_state { 43union vfp_state {
diff --git a/include/asm-frv/Kbuild b/include/asm-frv/Kbuild
index c68e1680da01..966a9836d556 100644
--- a/include/asm-frv/Kbuild
+++ b/include/asm-frv/Kbuild
@@ -1 +1,7 @@
1include include/asm-generic/Kbuild.asm 1include include/asm-generic/Kbuild.asm
2
3header-y += registers.h
4
5unifdef-y += termios.h
6unifdef-y += ptrace.h
7unifdef-y += page.h
diff --git a/include/asm-frv/page.h b/include/asm-frv/page.h
index 134cc0cdf6c2..213d92fd652a 100644
--- a/include/asm-frv/page.h
+++ b/include/asm-frv/page.h
@@ -76,8 +76,6 @@ extern unsigned long max_pfn;
76 76
77#endif /* __ASSEMBLY__ */ 77#endif /* __ASSEMBLY__ */
78 78
79#endif /* __KERNEL__ */
80
81#ifdef CONFIG_CONTIGUOUS_PAGE_ALLOC 79#ifdef CONFIG_CONTIGUOUS_PAGE_ALLOC
82#define WANT_PAGE_VIRTUAL 1 80#define WANT_PAGE_VIRTUAL 1
83#endif 81#endif
@@ -85,4 +83,6 @@ extern unsigned long max_pfn;
85#include <asm-generic/memory_model.h> 83#include <asm-generic/memory_model.h>
86#include <asm-generic/page.h> 84#include <asm-generic/page.h>
87 85
86#endif /* __KERNEL__ */
87
88#endif /* _ASM_PAGE_H */ 88#endif /* _ASM_PAGE_H */
diff --git a/include/asm-frv/ptrace.h b/include/asm-frv/ptrace.h
index 9a2241b8eb1e..cf6934012b64 100644
--- a/include/asm-frv/ptrace.h
+++ b/include/asm-frv/ptrace.h
@@ -12,9 +12,11 @@
12#define _ASM_PTRACE_H 12#define _ASM_PTRACE_H
13 13
14#include <asm/registers.h> 14#include <asm/registers.h>
15#ifdef __KERNEL__
15#include <asm/irq_regs.h> 16#include <asm/irq_regs.h>
16 17
17#define in_syscall(regs) (((regs)->tbr & TBR_TT) == TBR_TT_TRAP0) 18#define in_syscall(regs) (((regs)->tbr & TBR_TT) == TBR_TT_TRAP0)
19#endif
18 20
19 21
20#define PT_PSR 0 22#define PT_PSR 0
@@ -60,6 +62,7 @@
60#define PTRACE_GETFDPIC_EXEC 0 /* [addr] request the executable loadmap */ 62#define PTRACE_GETFDPIC_EXEC 0 /* [addr] request the executable loadmap */
61#define PTRACE_GETFDPIC_INTERP 1 /* [addr] request the interpreter loadmap */ 63#define PTRACE_GETFDPIC_INTERP 1 /* [addr] request the interpreter loadmap */
62 64
65#ifdef __KERNEL__
63#ifndef __ASSEMBLY__ 66#ifndef __ASSEMBLY__
64 67
65/* 68/*
@@ -74,6 +77,7 @@ register struct pt_regs *__frame asm("gr28");
74extern unsigned long user_stack(const struct pt_regs *); 77extern unsigned long user_stack(const struct pt_regs *);
75extern void show_regs(struct pt_regs *); 78extern void show_regs(struct pt_regs *);
76#define profile_pc(regs) ((regs)->pc) 79#define profile_pc(regs) ((regs)->pc)
80#endif
77 81
78#endif /* !__ASSEMBLY__ */ 82#endif /* !__ASSEMBLY__ */
79#endif /* _ASM_PTRACE_H */ 83#endif /* _ASM_PTRACE_H */
diff --git a/include/asm-frv/termios.h b/include/asm-frv/termios.h
index b4a664e7f55c..8840cf95e8dd 100644
--- a/include/asm-frv/termios.h
+++ b/include/asm-frv/termios.h
@@ -69,6 +69,8 @@ struct termio {
69#define N_SYNC_PPP 14 69#define N_SYNC_PPP 14
70#define N_HCI 15 /* Bluetooth HCI UART */ 70#define N_HCI 15 /* Bluetooth HCI UART */
71 71
72#ifdef __KERNEL__
72#include <asm-generic/termios.h> 73#include <asm-generic/termios.h>
74#endif
73 75
74#endif /* _ASM_TERMIOS_H */ 76#endif /* _ASM_TERMIOS_H */
diff --git a/include/asm-generic/libata-portmap.h b/include/asm-generic/libata-portmap.h
index 9202fd02d5be..62fb3618293d 100644
--- a/include/asm-generic/libata-portmap.h
+++ b/include/asm-generic/libata-portmap.h
@@ -3,10 +3,10 @@
3 3
4#define ATA_PRIMARY_CMD 0x1F0 4#define ATA_PRIMARY_CMD 0x1F0
5#define ATA_PRIMARY_CTL 0x3F6 5#define ATA_PRIMARY_CTL 0x3F6
6#define ATA_PRIMARY_IRQ 14 6#define ATA_PRIMARY_IRQ(dev) 14
7 7
8#define ATA_SECONDARY_CMD 0x170 8#define ATA_SECONDARY_CMD 0x170
9#define ATA_SECONDARY_CTL 0x376 9#define ATA_SECONDARY_CTL 0x376
10#define ATA_SECONDARY_IRQ 15 10#define ATA_SECONDARY_IRQ(dev) 15
11 11
12#endif 12#endif
diff --git a/include/asm-i386/elf.h b/include/asm-i386/elf.h
index 45d21a0c95bf..369035dfe4b6 100644
--- a/include/asm-i386/elf.h
+++ b/include/asm-i386/elf.h
@@ -143,11 +143,8 @@ extern int dump_task_extended_fpu (struct task_struct *, struct user_fxsr_struct
143# define VDSO_PRELINK 0 143# define VDSO_PRELINK 0
144#endif 144#endif
145 145
146#define VDSO_COMPAT_SYM(x) \
147 (VDSO_COMPAT_BASE + (unsigned long)(x) - VDSO_PRELINK)
148
149#define VDSO_SYM(x) \ 146#define VDSO_SYM(x) \
150 (VDSO_BASE + (unsigned long)(x) - VDSO_PRELINK) 147 (VDSO_COMPAT_BASE + (unsigned long)(x) - VDSO_PRELINK)
151 148
152#define VDSO_HIGH_EHDR ((const struct elfhdr *) VDSO_HIGH_BASE) 149#define VDSO_HIGH_EHDR ((const struct elfhdr *) VDSO_HIGH_BASE)
153#define VDSO_EHDR ((const struct elfhdr *) VDSO_COMPAT_BASE) 150#define VDSO_EHDR ((const struct elfhdr *) VDSO_COMPAT_BASE)
@@ -156,10 +153,12 @@ extern void __kernel_vsyscall;
156 153
157#define VDSO_ENTRY VDSO_SYM(&__kernel_vsyscall) 154#define VDSO_ENTRY VDSO_SYM(&__kernel_vsyscall)
158 155
156#ifndef CONFIG_COMPAT_VDSO
159#define ARCH_HAS_SETUP_ADDITIONAL_PAGES 157#define ARCH_HAS_SETUP_ADDITIONAL_PAGES
160struct linux_binprm; 158struct linux_binprm;
161extern int arch_setup_additional_pages(struct linux_binprm *bprm, 159extern int arch_setup_additional_pages(struct linux_binprm *bprm,
162 int executable_stack); 160 int executable_stack);
161#endif
163 162
164extern unsigned int vdso_enabled; 163extern unsigned int vdso_enabled;
165 164
@@ -169,50 +168,6 @@ do if (vdso_enabled) { \
169 NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_COMPAT_BASE); \ 168 NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_COMPAT_BASE); \
170} while (0) 169} while (0)
171 170
172/*
173 * These macros parameterize elf_core_dump in fs/binfmt_elf.c to write out
174 * extra segments containing the vsyscall DSO contents. Dumping its
175 * contents makes post-mortem fully interpretable later without matching up
176 * the same kernel and hardware config to see what PC values meant.
177 * Dumping its extra ELF program headers includes all the other information
178 * a debugger needs to easily find how the vsyscall DSO was being used.
179 */
180#define ELF_CORE_EXTRA_PHDRS (VDSO_HIGH_EHDR->e_phnum)
181#define ELF_CORE_WRITE_EXTRA_PHDRS \
182do { \
183 const struct elf_phdr *const vsyscall_phdrs = \
184 (const struct elf_phdr *) (VDSO_HIGH_BASE \
185 + VDSO_HIGH_EHDR->e_phoff); \
186 int i; \
187 Elf32_Off ofs = 0; \
188 for (i = 0; i < VDSO_HIGH_EHDR->e_phnum; ++i) { \
189 struct elf_phdr phdr = vsyscall_phdrs[i]; \
190 if (phdr.p_type == PT_LOAD) { \
191 BUG_ON(ofs != 0); \
192 ofs = phdr.p_offset = offset; \
193 phdr.p_memsz = PAGE_ALIGN(phdr.p_memsz); \
194 phdr.p_filesz = phdr.p_memsz; \
195 offset += phdr.p_filesz; \
196 } \
197 else \
198 phdr.p_offset += ofs; \
199 phdr.p_paddr = 0; /* match other core phdrs */ \
200 DUMP_WRITE(&phdr, sizeof(phdr)); \
201 } \
202} while (0)
203#define ELF_CORE_WRITE_EXTRA_DATA \
204do { \
205 const struct elf_phdr *const vsyscall_phdrs = \
206 (const struct elf_phdr *) (VDSO_HIGH_BASE \
207 + VDSO_HIGH_EHDR->e_phoff); \
208 int i; \
209 for (i = 0; i < VDSO_HIGH_EHDR->e_phnum; ++i) { \
210 if (vsyscall_phdrs[i].p_type == PT_LOAD) \
211 DUMP_WRITE((void *) vsyscall_phdrs[i].p_vaddr, \
212 PAGE_ALIGN(vsyscall_phdrs[i].p_memsz)); \
213 } \
214} while (0)
215
216#endif 171#endif
217 172
218#endif 173#endif
diff --git a/include/asm-i386/fixmap.h b/include/asm-i386/fixmap.h
index 02428cb36621..3e9f610c35df 100644
--- a/include/asm-i386/fixmap.h
+++ b/include/asm-i386/fixmap.h
@@ -23,6 +23,8 @@
23extern unsigned long __FIXADDR_TOP; 23extern unsigned long __FIXADDR_TOP;
24#else 24#else
25#define __FIXADDR_TOP 0xfffff000 25#define __FIXADDR_TOP 0xfffff000
26#define FIXADDR_USER_START __fix_to_virt(FIX_VDSO)
27#define FIXADDR_USER_END __fix_to_virt(FIX_VDSO - 1)
26#endif 28#endif
27 29
28#ifndef __ASSEMBLY__ 30#ifndef __ASSEMBLY__
diff --git a/include/asm-i386/page.h b/include/asm-i386/page.h
index fd3f64ace248..7b19f454761d 100644
--- a/include/asm-i386/page.h
+++ b/include/asm-i386/page.h
@@ -143,7 +143,9 @@ extern int page_is_ram(unsigned long pagenr);
143#include <asm-generic/memory_model.h> 143#include <asm-generic/memory_model.h>
144#include <asm-generic/page.h> 144#include <asm-generic/page.h>
145 145
146#ifndef CONFIG_COMPAT_VDSO
146#define __HAVE_ARCH_GATE_AREA 1 147#define __HAVE_ARCH_GATE_AREA 1
148#endif
147#endif /* __KERNEL__ */ 149#endif /* __KERNEL__ */
148 150
149#endif /* _I386_PAGE_H */ 151#endif /* _I386_PAGE_H */
diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h
index a52d65440429..359f10b54f59 100644
--- a/include/asm-i386/processor.h
+++ b/include/asm-i386/processor.h
@@ -743,6 +743,7 @@ extern void enable_sep_cpu(void);
743extern int sysenter_setup(void); 743extern int sysenter_setup(void);
744 744
745extern int init_gdt(int cpu, struct task_struct *idle); 745extern int init_gdt(int cpu, struct task_struct *idle);
746extern void cpu_set_gdt(int);
746extern void secondary_cpu_init(void); 747extern void secondary_cpu_init(void);
747 748
748#endif /* __ASM_I386_PROCESSOR_H */ 749#endif /* __ASM_I386_PROCESSOR_H */
diff --git a/include/asm-ia64/checksum.h b/include/asm-ia64/checksum.h
index 2b78582cbd61..97af155057e4 100644
--- a/include/asm-ia64/checksum.h
+++ b/include/asm-ia64/checksum.h
@@ -72,8 +72,8 @@ static inline __sum16 csum_fold(__wsum csum)
72 72
73#define _HAVE_ARCH_IPV6_CSUM 1 73#define _HAVE_ARCH_IPV6_CSUM 1
74struct in6_addr; 74struct in6_addr;
75extern unsigned short int csum_ipv6_magic(struct in6_addr *saddr, 75extern __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
76 struct in6_addr *daddr, __u32 len, unsigned short proto, 76 const struct in6_addr *daddr, __u32 len, unsigned short proto,
77 unsigned int csum); 77 __wsum csum);
78 78
79#endif /* _ASM_IA64_CHECKSUM_H */ 79#endif /* _ASM_IA64_CHECKSUM_H */
diff --git a/include/asm-ia64/pci.h b/include/asm-ia64/pci.h
index 556f53fa44cb..5160233bbfac 100644
--- a/include/asm-ia64/pci.h
+++ b/include/asm-ia64/pci.h
@@ -167,4 +167,10 @@ pcibios_select_root(struct pci_dev *pdev, struct resource *res)
167 167
168#define pcibios_scan_all_fns(a, b) 0 168#define pcibios_scan_all_fns(a, b) 0
169 169
170#define HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ
171static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
172{
173 return channel ? 15 : 14;
174}
175
170#endif /* _ASM_IA64_PCI_H */ 176#endif /* _ASM_IA64_PCI_H */
diff --git a/include/asm-m68k/uaccess.h b/include/asm-m68k/uaccess.h
index e4c9f080ff20..6a4cf2081512 100644
--- a/include/asm-m68k/uaccess.h
+++ b/include/asm-m68k/uaccess.h
@@ -7,6 +7,7 @@
7#include <linux/compiler.h> 7#include <linux/compiler.h>
8#include <linux/errno.h> 8#include <linux/errno.h>
9#include <linux/types.h> 9#include <linux/types.h>
10#include <linux/sched.h>
10#include <asm/segment.h> 11#include <asm/segment.h>
11 12
12#define VERIFY_READ 0 13#define VERIFY_READ 0
diff --git a/include/asm-mips/checksum.h b/include/asm-mips/checksum.h
index 24cdcc6eaab8..20a81e1548f5 100644
--- a/include/asm-mips/checksum.h
+++ b/include/asm-mips/checksum.h
@@ -159,7 +159,8 @@ static inline __wsum csum_tcpudp_nofold(__be32 saddr,
159#endif 159#endif
160 " .set pop" 160 " .set pop"
161 : "=r" (sum) 161 : "=r" (sum)
162 : "0" (daddr), "r"(saddr), 162 : "0" ((__force unsigned long)daddr),
163 "r" ((__force unsigned long)saddr),
163#ifdef __MIPSEL__ 164#ifdef __MIPSEL__
164 "r" ((proto + len) << 8), 165 "r" ((proto + len) << 8),
165#else 166#else
diff --git a/include/asm-mips/hazards.h b/include/asm-mips/hazards.h
index 0fe02945feba..50073157a617 100644
--- a/include/asm-mips/hazards.h
+++ b/include/asm-mips/hazards.h
@@ -157,7 +157,7 @@ ASMMACRO(back_to_back_c0_hazard,
157 * processors. 157 * processors.
158 */ 158 */
159ASMMACRO(mtc0_tlbw_hazard, 159ASMMACRO(mtc0_tlbw_hazard,
160 nop 160 nop; nop
161 ) 161 )
162ASMMACRO(tlbw_use_hazard, 162ASMMACRO(tlbw_use_hazard,
163 nop; nop; nop 163 nop; nop; nop
diff --git a/include/asm-mips/irqflags.h b/include/asm-mips/irqflags.h
index 46bf5de5ac72..af3b07dfad4b 100644
--- a/include/asm-mips/irqflags.h
+++ b/include/asm-mips/irqflags.h
@@ -15,6 +15,27 @@
15 15
16#include <asm/hazards.h> 16#include <asm/hazards.h>
17 17
18/*
19 * CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY does prompt replay of deferred IPIs,
20 * at the cost of branch and call overhead on each local_irq_restore()
21 */
22
23#ifdef CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY
24
25extern void smtc_ipi_replay(void);
26
27#define irq_restore_epilog(flags) \
28do { \
29 if (!(flags & 0x0400)) \
30 smtc_ipi_replay(); \
31} while (0)
32
33#else
34
35#define irq_restore_epilog(ignore) do { } while (0)
36
37#endif /* CONFIG_MIPS_MT_SMTC_INSTANT_REPLAY */
38
18__asm__ ( 39__asm__ (
19 " .macro raw_local_irq_enable \n" 40 " .macro raw_local_irq_enable \n"
20 " .set push \n" 41 " .set push \n"
@@ -193,6 +214,7 @@ do { \
193 : "=r" (__tmp1) \ 214 : "=r" (__tmp1) \
194 : "0" (flags) \ 215 : "0" (flags) \
195 : "memory"); \ 216 : "memory"); \
217 irq_restore_epilog(flags); \
196} while(0) 218} while(0)
197 219
198static inline int raw_irqs_disabled_flags(unsigned long flags) 220static inline int raw_irqs_disabled_flags(unsigned long flags)
diff --git a/include/asm-mips/pgtable.h b/include/asm-mips/pgtable.h
index f2e1325fec6c..3fcfd7979de5 100644
--- a/include/asm-mips/pgtable.h
+++ b/include/asm-mips/pgtable.h
@@ -69,16 +69,6 @@ extern unsigned long zero_page_mask;
69#define ZERO_PAGE(vaddr) \ 69#define ZERO_PAGE(vaddr) \
70 (virt_to_page((void *)(empty_zero_page + (((unsigned long)(vaddr)) & zero_page_mask)))) 70 (virt_to_page((void *)(empty_zero_page + (((unsigned long)(vaddr)) & zero_page_mask))))
71 71
72#define __HAVE_ARCH_MOVE_PTE
73#define move_pte(pte, prot, old_addr, new_addr) \
74({ \
75 pte_t newpte = (pte); \
76 if (pte_present(pte) && pfn_valid(pte_pfn(pte)) && \
77 pte_page(pte) == ZERO_PAGE(old_addr)) \
78 newpte = mk_pte(ZERO_PAGE(new_addr), (prot)); \
79 newpte; \
80})
81
82extern void paging_init(void); 72extern void paging_init(void);
83 73
84/* 74/*
diff --git a/include/asm-mips/thread_info.h b/include/asm-mips/thread_info.h
index e475c45ea263..fbcda8204473 100644
--- a/include/asm-mips/thread_info.h
+++ b/include/asm-mips/thread_info.h
@@ -118,6 +118,7 @@ register struct thread_info *__current_thread_info __asm__("$28");
118#define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */ 118#define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */
119#define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */ 119#define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */
120#define TIF_MEMDIE 18 120#define TIF_MEMDIE 18
121#define TIF_FREEZE 19
121#define TIF_SYSCALL_TRACE 31 /* syscall trace active */ 122#define TIF_SYSCALL_TRACE 31 /* syscall trace active */
122 123
123#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) 124#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
@@ -129,6 +130,7 @@ register struct thread_info *__current_thread_info __asm__("$28");
129#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) 130#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
130#define _TIF_USEDFPU (1<<TIF_USEDFPU) 131#define _TIF_USEDFPU (1<<TIF_USEDFPU)
131#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) 132#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
133#define _TIF_FREEZE (1<<TIF_FREEZE)
132 134
133/* work to do on interrupt/exception return */ 135/* work to do on interrupt/exception return */
134#define _TIF_WORK_MASK (0x0000ffef & ~_TIF_SECCOMP) 136#define _TIF_WORK_MASK (0x0000ffef & ~_TIF_SECCOMP)
diff --git a/include/asm-powerpc/atomic.h b/include/asm-powerpc/atomic.h
index 53283e2540b3..f038e33e6d48 100644
--- a/include/asm-powerpc/atomic.h
+++ b/include/asm-powerpc/atomic.h
@@ -207,7 +207,8 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)
207 207
208/* 208/*
209 * Atomically test *v and decrement if it is greater than 0. 209 * Atomically test *v and decrement if it is greater than 0.
210 * The function returns the old value of *v minus 1. 210 * The function returns the old value of *v minus 1, even if
211 * the atomic variable, v, was not decremented.
211 */ 212 */
212static __inline__ int atomic_dec_if_positive(atomic_t *v) 213static __inline__ int atomic_dec_if_positive(atomic_t *v)
213{ 214{
@@ -216,14 +217,15 @@ static __inline__ int atomic_dec_if_positive(atomic_t *v)
216 __asm__ __volatile__( 217 __asm__ __volatile__(
217 LWSYNC_ON_SMP 218 LWSYNC_ON_SMP
218"1: lwarx %0,0,%1 # atomic_dec_if_positive\n\ 219"1: lwarx %0,0,%1 # atomic_dec_if_positive\n\
219 addic. %0,%0,-1\n\ 220 cmpwi %0,1\n\
221 addi %0,%0,-1\n\
220 blt- 2f\n" 222 blt- 2f\n"
221 PPC405_ERR77(0,%1) 223 PPC405_ERR77(0,%1)
222" stwcx. %0,0,%1\n\ 224" stwcx. %0,0,%1\n\
223 bne- 1b" 225 bne- 1b"
224 ISYNC_ON_SMP 226 ISYNC_ON_SMP
225 "\n\ 227 "\n\
2262:" : "=&r" (t) 2282:" : "=&b" (t)
227 : "r" (&v->counter) 229 : "r" (&v->counter)
228 : "cc", "memory"); 230 : "cc", "memory");
229 231
diff --git a/include/asm-powerpc/dma-mapping.h b/include/asm-powerpc/dma-mapping.h
index 7c7de87bd8ae..a19a6f1a1cf1 100644
--- a/include/asm-powerpc/dma-mapping.h
+++ b/include/asm-powerpc/dma-mapping.h
@@ -37,9 +37,9 @@ extern void __dma_sync_page(struct page *page, unsigned long offset,
37 */ 37 */
38 38
39#define __dma_alloc_coherent(gfp, size, handle) NULL 39#define __dma_alloc_coherent(gfp, size, handle) NULL
40#define __dma_free_coherent(size, addr) do { } while (0) 40#define __dma_free_coherent(size, addr) ((void)0)
41#define __dma_sync(addr, size, rw) do { } while (0) 41#define __dma_sync(addr, size, rw) ((void)0)
42#define __dma_sync_page(pg, off, sz, rw) do { } while (0) 42#define __dma_sync_page(pg, off, sz, rw) ((void)0)
43 43
44#endif /* ! CONFIG_NOT_COHERENT_CACHE */ 44#endif /* ! CONFIG_NOT_COHERENT_CACHE */
45 45
@@ -251,7 +251,7 @@ dma_map_single(struct device *dev, void *ptr, size_t size,
251} 251}
252 252
253/* We do nothing. */ 253/* We do nothing. */
254#define dma_unmap_single(dev, addr, size, dir) do { } while (0) 254#define dma_unmap_single(dev, addr, size, dir) ((void)0)
255 255
256static inline dma_addr_t 256static inline dma_addr_t
257dma_map_page(struct device *dev, struct page *page, 257dma_map_page(struct device *dev, struct page *page,
@@ -266,7 +266,7 @@ dma_map_page(struct device *dev, struct page *page,
266} 266}
267 267
268/* We do nothing. */ 268/* We do nothing. */
269#define dma_unmap_page(dev, handle, size, dir) do { } while (0) 269#define dma_unmap_page(dev, handle, size, dir) ((void)0)
270 270
271static inline int 271static inline int
272dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, 272dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
@@ -286,7 +286,7 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
286} 286}
287 287
288/* We don't do anything here. */ 288/* We don't do anything here. */
289#define dma_unmap_sg(dev, sg, nents, dir) do { } while (0) 289#define dma_unmap_sg(dev, sg, nents, dir) ((void)0)
290 290
291#endif /* CONFIG_PPC64 */ 291#endif /* CONFIG_PPC64 */
292 292
diff --git a/include/asm-powerpc/libata-portmap.h b/include/asm-powerpc/libata-portmap.h
new file mode 100644
index 000000000000..4d8518049f4d
--- /dev/null
+++ b/include/asm-powerpc/libata-portmap.h
@@ -0,0 +1,12 @@
1#ifndef __ASM_POWERPC_LIBATA_PORTMAP_H
2#define __ASM_POWERPC_LIBATA_PORTMAP_H
3
4#define ATA_PRIMARY_CMD 0x1F0
5#define ATA_PRIMARY_CTL 0x3F6
6#define ATA_PRIMARY_IRQ(dev) pci_get_legacy_ide_irq(dev, 0)
7
8#define ATA_SECONDARY_CMD 0x170
9#define ATA_SECONDARY_CTL 0x376
10#define ATA_SECONDARY_IRQ(dev) pci_get_legacy_ide_irq(dev, 1)
11
12#endif
diff --git a/include/asm-sparc/checksum.h b/include/asm-sparc/checksum.h
index 267e631e9bbc..34518ea7bf1b 100644
--- a/include/asm-sparc/checksum.h
+++ b/include/asm-sparc/checksum.h
@@ -151,7 +151,7 @@ static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
151 "xnor\t%%g0, %0, %0" 151 "xnor\t%%g0, %0, %0"
152 : "=r" (sum), "=&r" (iph) 152 : "=r" (sum), "=&r" (iph)
153 : "r" (ihl), "1" (iph) 153 : "r" (ihl), "1" (iph)
154 : "g2", "g3", "g4", "cc"); 154 : "g2", "g3", "g4", "cc", "memory");
155 return sum; 155 return sum;
156} 156}
157 157
diff --git a/include/asm-um/pgtable.h b/include/asm-um/pgtable.h
index 188f72621776..e57ff136ee51 100644
--- a/include/asm-um/pgtable.h
+++ b/include/asm-um/pgtable.h
@@ -408,6 +408,15 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
408 408
409#include <asm-generic/pgtable-nopud.h> 409#include <asm-generic/pgtable-nopud.h>
410 410
411#ifdef CONFIG_HIGHMEM
412/* Clear a kernel PTE and flush it from the TLB */
413#define kpte_clear_flush(ptep, vaddr) \
414do { \
415 pte_clear(&init_mm, vaddr, ptep); \
416 __flush_tlb_one(vaddr); \
417} while (0)
418#endif
419
411#endif 420#endif
412#endif 421#endif
413 422
diff --git a/include/asm-x86_64/dma-mapping.h b/include/asm-x86_64/dma-mapping.h
index be9ec6890723..49dbab09ef2b 100644
--- a/include/asm-x86_64/dma-mapping.h
+++ b/include/asm-x86_64/dma-mapping.h
@@ -63,6 +63,9 @@ static inline int dma_mapping_error(dma_addr_t dma_addr)
63 return (dma_addr == bad_dma_address); 63 return (dma_addr == bad_dma_address);
64} 64}
65 65
66#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
67#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
68
66extern void *dma_alloc_coherent(struct device *dev, size_t size, 69extern void *dma_alloc_coherent(struct device *dev, size_t size,
67 dma_addr_t *dma_handle, gfp_t gfp); 70 dma_addr_t *dma_handle, gfp_t gfp);
68extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr, 71extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr,
diff --git a/include/asm-x86_64/uaccess.h b/include/asm-x86_64/uaccess.h
index d5dbc87274f8..c0eac519840b 100644
--- a/include/asm-x86_64/uaccess.h
+++ b/include/asm-x86_64/uaccess.h
@@ -157,7 +157,7 @@ do { \
157 case 1: __put_user_asm(x,ptr,retval,"b","b","iq",-EFAULT); break;\ 157 case 1: __put_user_asm(x,ptr,retval,"b","b","iq",-EFAULT); break;\
158 case 2: __put_user_asm(x,ptr,retval,"w","w","ir",-EFAULT); break;\ 158 case 2: __put_user_asm(x,ptr,retval,"w","w","ir",-EFAULT); break;\
159 case 4: __put_user_asm(x,ptr,retval,"l","k","ir",-EFAULT); break;\ 159 case 4: __put_user_asm(x,ptr,retval,"l","k","ir",-EFAULT); break;\
160 case 8: __put_user_asm(x,ptr,retval,"q","","ir",-EFAULT); break;\ 160 case 8: __put_user_asm(x,ptr,retval,"q","","Zr",-EFAULT); break;\
161 default: __put_user_bad(); \ 161 default: __put_user_bad(); \
162 } \ 162 } \
163} while (0) 163} while (0)
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index 862e483cce8a..157db77a7170 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -69,7 +69,6 @@ header-y += hysdn_if.h
69header-y += i2c-dev.h 69header-y += i2c-dev.h
70header-y += i8k.h 70header-y += i8k.h
71header-y += icmp.h 71header-y += icmp.h
72header-y += if_addr.h
73header-y += if_arcnet.h 72header-y += if_arcnet.h
74header-y += if_arp.h 73header-y += if_arp.h
75header-y += if_bonding.h 74header-y += if_bonding.h
@@ -79,7 +78,6 @@ header-y += if_fddi.h
79header-y += if.h 78header-y += if.h
80header-y += if_hippi.h 79header-y += if_hippi.h
81header-y += if_infiniband.h 80header-y += if_infiniband.h
82header-y += if_link.h
83header-y += if_packet.h 81header-y += if_packet.h
84header-y += if_plip.h 82header-y += if_plip.h
85header-y += if_ppp.h 83header-y += if_ppp.h
@@ -129,7 +127,6 @@ header-y += posix_types.h
129header-y += ppdev.h 127header-y += ppdev.h
130header-y += prctl.h 128header-y += prctl.h
131header-y += ps2esdi.h 129header-y += ps2esdi.h
132header-y += qic117.h
133header-y += qnxtypes.h 130header-y += qnxtypes.h
134header-y += quotaio_v1.h 131header-y += quotaio_v1.h
135header-y += quotaio_v2.h 132header-y += quotaio_v2.h
@@ -214,6 +211,7 @@ unifdef-y += hpet.h
214unifdef-y += i2c.h 211unifdef-y += i2c.h
215unifdef-y += i2o-dev.h 212unifdef-y += i2o-dev.h
216unifdef-y += icmpv6.h 213unifdef-y += icmpv6.h
214unifdef-y += if_addr.h
217unifdef-y += if_bridge.h 215unifdef-y += if_bridge.h
218unifdef-y += if_ec.h 216unifdef-y += if_ec.h
219unifdef-y += if_eql.h 217unifdef-y += if_eql.h
@@ -221,6 +219,7 @@ unifdef-y += if_ether.h
221unifdef-y += if_fddi.h 219unifdef-y += if_fddi.h
222unifdef-y += if_frad.h 220unifdef-y += if_frad.h
223unifdef-y += if_ltalk.h 221unifdef-y += if_ltalk.h
222unifdef-y += if_link.h
224unifdef-y += if_pppox.h 223unifdef-y += if_pppox.h
225unifdef-y += if_shaper.h 224unifdef-y += if_shaper.h
226unifdef-y += if_tr.h 225unifdef-y += if_tr.h
diff --git a/include/linux/bitops.h b/include/linux/bitops.h
index 5d1eabcde5d5..638165f571da 100644
--- a/include/linux/bitops.h
+++ b/include/linux/bitops.h
@@ -31,9 +31,8 @@ static inline unsigned long hweight_long(unsigned long w)
31 return sizeof(w) == 4 ? hweight32(w) : hweight64(w); 31 return sizeof(w) == 4 ? hweight32(w) : hweight64(w);
32} 32}
33 33
34/* 34/**
35 * rol32 - rotate a 32-bit value left 35 * rol32 - rotate a 32-bit value left
36 *
37 * @word: value to rotate 36 * @word: value to rotate
38 * @shift: bits to roll 37 * @shift: bits to roll
39 */ 38 */
@@ -42,9 +41,8 @@ static inline __u32 rol32(__u32 word, unsigned int shift)
42 return (word << shift) | (word >> (32 - shift)); 41 return (word << shift) | (word >> (32 - shift));
43} 42}
44 43
45/* 44/**
46 * ror32 - rotate a 32-bit value right 45 * ror32 - rotate a 32-bit value right
47 *
48 * @word: value to rotate 46 * @word: value to rotate
49 * @shift: bits to roll 47 * @shift: bits to roll
50 */ 48 */
diff --git a/include/linux/cdev.h b/include/linux/cdev.h
index f309b00e986e..1e29b13d0062 100644
--- a/include/linux/cdev.h
+++ b/include/linux/cdev.h
@@ -6,6 +6,10 @@
6#include <linux/kdev_t.h> 6#include <linux/kdev_t.h>
7#include <linux/list.h> 7#include <linux/list.h>
8 8
9struct file_operations;
10struct inode;
11struct module;
12
9struct cdev { 13struct cdev {
10 struct kobject kobj; 14 struct kobject kobj;
11 struct module *owner; 15 struct module *owner;
diff --git a/include/linux/efi.h b/include/linux/efi.h
index df1c91855f0e..f8ebd7c1ddb3 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -301,7 +301,7 @@ extern int __init efi_uart_console_only (void);
301extern void efi_initialize_iomem_resources(struct resource *code_resource, 301extern void efi_initialize_iomem_resources(struct resource *code_resource,
302 struct resource *data_resource); 302 struct resource *data_resource);
303extern unsigned long efi_get_time(void); 303extern unsigned long efi_get_time(void);
304extern int __init efi_set_rtc_mmss(unsigned long nowtime); 304extern int efi_set_rtc_mmss(unsigned long nowtime);
305extern int is_available_memory(efi_memory_desc_t * md); 305extern int is_available_memory(efi_memory_desc_t * md);
306extern struct efi_memory_map memmap; 306extern struct efi_memory_map memmap;
307 307
diff --git a/include/linux/hdreg.h b/include/linux/hdreg.h
index 2b54eac738ea..818c6afc1091 100644
--- a/include/linux/hdreg.h
+++ b/include/linux/hdreg.h
@@ -60,13 +60,15 @@
60#define TAG_MASK 0xf8 60#define TAG_MASK 0xf8
61#endif /* __KERNEL__ */ 61#endif /* __KERNEL__ */
62 62
63#include <linux/types.h>
64
63/* 65/*
64 * Command Header sizes for IOCTL commands 66 * Command Header sizes for IOCTL commands
65 */ 67 */
66 68
67#define HDIO_DRIVE_CMD_HDR_SIZE (4 * sizeof(u8)) 69#define HDIO_DRIVE_CMD_HDR_SIZE (4 * sizeof(__u8))
68#define HDIO_DRIVE_HOB_HDR_SIZE (8 * sizeof(u8)) 70#define HDIO_DRIVE_HOB_HDR_SIZE (8 * sizeof(__u8))
69#define HDIO_DRIVE_TASK_HDR_SIZE (8 * sizeof(u8)) 71#define HDIO_DRIVE_TASK_HDR_SIZE (8 * sizeof(__u8))
70 72
71#define IDE_DRIVE_TASK_INVALID -1 73#define IDE_DRIVE_TASK_INVALID -1
72#define IDE_DRIVE_TASK_NO_DATA 0 74#define IDE_DRIVE_TASK_NO_DATA 0
diff --git a/include/linux/hid-debug.h b/include/linux/hid-debug.h
index f04d6d75c098..8e4dbb51fc70 100644
--- a/include/linux/hid-debug.h
+++ b/include/linux/hid-debug.h
@@ -700,9 +700,10 @@ static char *keys[KEY_MAX + 1] = {
700 700
701static char *relatives[REL_MAX + 1] = { 701static char *relatives[REL_MAX + 1] = {
702 [REL_X] = "X", [REL_Y] = "Y", 702 [REL_X] = "X", [REL_Y] = "Y",
703 [REL_Z] = "Z", [REL_HWHEEL] = "HWheel", 703 [REL_Z] = "Z", [REL_RX] = "Rx",
704 [REL_DIAL] = "Dial", [REL_WHEEL] = "Wheel", 704 [REL_RY] = "Ry", [REL_RZ] = "Rz",
705 [REL_MISC] = "Misc", 705 [REL_HWHEEL] = "HWheel", [REL_DIAL] = "Dial",
706 [REL_WHEEL] = "Wheel", [REL_MISC] = "Misc",
706}; 707};
707 708
708static char *absolutes[ABS_MAX + 1] = { 709static char *absolutes[ABS_MAX + 1] = {
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 770120add15a..342b4e639acb 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -438,7 +438,6 @@ struct hid_device { /* device report descriptor */
438 struct hid_usage *, __s32); 438 struct hid_usage *, __s32);
439 void (*hiddev_report_event) (struct hid_device *, struct hid_report *); 439 void (*hiddev_report_event) (struct hid_device *, struct hid_report *);
440#ifdef CONFIG_USB_HIDINPUT_POWERBOOK 440#ifdef CONFIG_USB_HIDINPUT_POWERBOOK
441 unsigned int pb_fnmode;
442 unsigned long pb_pressed_fn[NBITS(KEY_MAX)]; 441 unsigned long pb_pressed_fn[NBITS(KEY_MAX)];
443 unsigned long pb_pressed_numlock[NBITS(KEY_MAX)]; 442 unsigned long pb_pressed_numlock[NBITS(KEY_MAX)];
444#endif 443#endif
diff --git a/include/linux/i2o-dev.h b/include/linux/i2o-dev.h
index c2519df1b6dc..a0b23dd45239 100644
--- a/include/linux/i2o-dev.h
+++ b/include/linux/i2o-dev.h
@@ -24,12 +24,13 @@
24#define MAX_I2O_CONTROLLERS 32 24#define MAX_I2O_CONTROLLERS 32
25 25
26#include <linux/ioctl.h> 26#include <linux/ioctl.h>
27#include <linux/types.h>
27 28
28/* 29/*
29 * I2O Control IOCTLs and structures 30 * I2O Control IOCTLs and structures
30 */ 31 */
31#define I2O_MAGIC_NUMBER 'i' 32#define I2O_MAGIC_NUMBER 'i'
32#define I2OGETIOPS _IOR(I2O_MAGIC_NUMBER,0,u8[MAX_I2O_CONTROLLERS]) 33#define I2OGETIOPS _IOR(I2O_MAGIC_NUMBER,0,__u8[MAX_I2O_CONTROLLERS])
33#define I2OHRTGET _IOWR(I2O_MAGIC_NUMBER,1,struct i2o_cmd_hrtlct) 34#define I2OHRTGET _IOWR(I2O_MAGIC_NUMBER,1,struct i2o_cmd_hrtlct)
34#define I2OLCTGET _IOWR(I2O_MAGIC_NUMBER,2,struct i2o_cmd_hrtlct) 35#define I2OLCTGET _IOWR(I2O_MAGIC_NUMBER,2,struct i2o_cmd_hrtlct)
35#define I2OPARMSET _IOWR(I2O_MAGIC_NUMBER,3,struct i2o_cmd_psetget) 36#define I2OPARMSET _IOWR(I2O_MAGIC_NUMBER,3,struct i2o_cmd_psetget)
@@ -37,7 +38,7 @@
37#define I2OSWDL _IOWR(I2O_MAGIC_NUMBER,5,struct i2o_sw_xfer) 38#define I2OSWDL _IOWR(I2O_MAGIC_NUMBER,5,struct i2o_sw_xfer)
38#define I2OSWUL _IOWR(I2O_MAGIC_NUMBER,6,struct i2o_sw_xfer) 39#define I2OSWUL _IOWR(I2O_MAGIC_NUMBER,6,struct i2o_sw_xfer)
39#define I2OSWDEL _IOWR(I2O_MAGIC_NUMBER,7,struct i2o_sw_xfer) 40#define I2OSWDEL _IOWR(I2O_MAGIC_NUMBER,7,struct i2o_sw_xfer)
40#define I2OVALIDATE _IOR(I2O_MAGIC_NUMBER,8,u32) 41#define I2OVALIDATE _IOR(I2O_MAGIC_NUMBER,8,__u32)
41#define I2OHTML _IOWR(I2O_MAGIC_NUMBER,9,struct i2o_html) 42#define I2OHTML _IOWR(I2O_MAGIC_NUMBER,9,struct i2o_html)
42#define I2OEVTREG _IOW(I2O_MAGIC_NUMBER,10,struct i2o_evt_id) 43#define I2OEVTREG _IOW(I2O_MAGIC_NUMBER,10,struct i2o_evt_id)
43#define I2OEVTGET _IOR(I2O_MAGIC_NUMBER,11,struct i2o_evt_info) 44#define I2OEVTGET _IOR(I2O_MAGIC_NUMBER,11,struct i2o_evt_info)
diff --git a/include/linux/if_tunnel.h b/include/linux/if_tunnel.h
index 8de079ba1107..660b5010c2d9 100644
--- a/include/linux/if_tunnel.h
+++ b/include/linux/if_tunnel.h
@@ -1,6 +1,8 @@
1#ifndef _IF_TUNNEL_H_ 1#ifndef _IF_TUNNEL_H_
2#define _IF_TUNNEL_H_ 2#define _IF_TUNNEL_H_
3 3
4#include <linux/types.h>
5
4#define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0) 6#define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0)
5#define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1) 7#define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1)
6#define SIOCDELTUNNEL (SIOCDEVPRIVATE + 2) 8#define SIOCDELTUNNEL (SIOCDEVPRIVATE + 2)
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
index bc8b4616bad7..1be148f0fce4 100644
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -46,6 +46,7 @@ enum kvm_exit_reason {
46 KVM_EXIT_HLT = 5, 46 KVM_EXIT_HLT = 5,
47 KVM_EXIT_MMIO = 6, 47 KVM_EXIT_MMIO = 6,
48 KVM_EXIT_IRQ_WINDOW_OPEN = 7, 48 KVM_EXIT_IRQ_WINDOW_OPEN = 7,
49 KVM_EXIT_SHUTDOWN = 8,
49}; 50};
50 51
51/* for KVM_RUN */ 52/* for KVM_RUN */
diff --git a/include/linux/libata.h b/include/linux/libata.h
index ab2754830322..91bb8ceef0b5 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -177,6 +177,7 @@ enum {
177 * Register FIS clearing BSY */ 177 * Register FIS clearing BSY */
178 ATA_FLAG_DEBUGMSG = (1 << 13), 178 ATA_FLAG_DEBUGMSG = (1 << 13),
179 ATA_FLAG_SETXFER_POLLING= (1 << 14), /* use polling for SETXFER */ 179 ATA_FLAG_SETXFER_POLLING= (1 << 14), /* use polling for SETXFER */
180 ATA_FLAG_IGN_SIMPLEX = (1 << 15), /* ignore SIMPLEX */
180 181
181 /* The following flag belongs to ap->pflags but is kept in 182 /* The following flag belongs to ap->pflags but is kept in
182 * ap->flags because it's referenced in many LLDs and will be 183 * ap->flags because it's referenced in many LLDs and will be
@@ -612,11 +613,11 @@ struct ata_port_operations {
612 void (*dev_select)(struct ata_port *ap, unsigned int device); 613 void (*dev_select)(struct ata_port *ap, unsigned int device);
613 614
614 void (*phy_reset) (struct ata_port *ap); /* obsolete */ 615 void (*phy_reset) (struct ata_port *ap); /* obsolete */
615 void (*set_mode) (struct ata_port *ap); 616 int (*set_mode) (struct ata_port *ap, struct ata_device **r_failed_dev);
616 617
617 void (*post_set_mode) (struct ata_port *ap); 618 void (*post_set_mode) (struct ata_port *ap);
618 619
619 int (*check_atapi_dma) (struct ata_queued_cmd *qc); 620 int (*check_atapi_dma) (struct ata_queued_cmd *qc);
620 621
621 void (*bmdma_setup) (struct ata_queued_cmd *qc); 622 void (*bmdma_setup) (struct ata_queued_cmd *qc);
622 void (*bmdma_start) (struct ata_queued_cmd *qc); 623 void (*bmdma_start) (struct ata_queued_cmd *qc);
@@ -1053,6 +1054,8 @@ static inline void ata_pause(struct ata_port *ap)
1053/** 1054/**
1054 * ata_busy_wait - Wait for a port status register 1055 * ata_busy_wait - Wait for a port status register
1055 * @ap: Port to wait for. 1056 * @ap: Port to wait for.
1057 * @bits: bits that must be clear
1058 * @max: number of 10uS waits to perform
1056 * 1059 *
1057 * Waits up to max*10 microseconds for the selected bits in the port's 1060 * Waits up to max*10 microseconds for the selected bits in the port's
1058 * status register to be cleared. 1061 * status register to be cleared.
@@ -1143,12 +1146,15 @@ static inline void ata_tf_init(struct ata_device *dev, struct ata_taskfile *tf)
1143 1146
1144static inline void ata_qc_reinit(struct ata_queued_cmd *qc) 1147static inline void ata_qc_reinit(struct ata_queued_cmd *qc)
1145{ 1148{
1149 qc->dma_dir = DMA_NONE;
1146 qc->__sg = NULL; 1150 qc->__sg = NULL;
1147 qc->flags = 0; 1151 qc->flags = 0;
1148 qc->cursect = qc->cursg = qc->cursg_ofs = 0; 1152 qc->cursect = qc->cursg = qc->cursg_ofs = 0;
1149 qc->nsect = 0; 1153 qc->nsect = 0;
1150 qc->nbytes = qc->curbytes = 0; 1154 qc->nbytes = qc->curbytes = 0;
1155 qc->n_elem = 0;
1151 qc->err_mask = 0; 1156 qc->err_mask = 0;
1157 qc->pad_len = 0;
1152 1158
1153 ata_tf_init(qc->dev, &qc->tf); 1159 ata_tf_init(qc->dev, &qc->tf);
1154 1160
diff --git a/include/linux/list.h b/include/linux/list.h
index a9c90287c0ff..611059d633f4 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -227,13 +227,13 @@ static inline void list_replace_init(struct list_head *old,
227 INIT_LIST_HEAD(old); 227 INIT_LIST_HEAD(old);
228} 228}
229 229
230/* 230/**
231 * list_replace_rcu - replace old entry by new one 231 * list_replace_rcu - replace old entry by new one
232 * @old : the element to be replaced 232 * @old : the element to be replaced
233 * @new : the new element to insert 233 * @new : the new element to insert
234 * 234 *
235 * The old entry will be replaced with the new entry atomically. 235 * The @old entry will be replaced with the @new entry atomically.
236 * Note: 'old' should not be empty. 236 * Note: @old should not be empty.
237 */ 237 */
238static inline void list_replace_rcu(struct list_head *old, 238static inline void list_replace_rcu(struct list_head *old,
239 struct list_head *new) 239 struct list_head *new)
@@ -680,12 +680,12 @@ static inline void hlist_del_init(struct hlist_node *n)
680 } 680 }
681} 681}
682 682
683/* 683/**
684 * hlist_replace_rcu - replace old entry by new one 684 * hlist_replace_rcu - replace old entry by new one
685 * @old : the element to be replaced 685 * @old : the element to be replaced
686 * @new : the new element to insert 686 * @new : the new element to insert
687 * 687 *
688 * The old entry will be replaced with the new entry atomically. 688 * The @old entry will be replaced with the @new entry atomically.
689 */ 689 */
690static inline void hlist_replace_rcu(struct hlist_node *old, 690static inline void hlist_replace_rcu(struct hlist_node *old,
691 struct hlist_node *new) 691 struct hlist_node *new)
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 76912231af41..2d2c08d5f473 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -168,6 +168,7 @@ extern unsigned int kobjsize(const void *objp);
168#define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ 168#define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */
169#define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */ 169#define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */
170#define VM_INSERTPAGE 0x02000000 /* The vma has had "vm_insert_page()" done on it */ 170#define VM_INSERTPAGE 0x02000000 /* The vma has had "vm_insert_page()" done on it */
171#define VM_ALWAYSDUMP 0x04000000 /* Always include in core dumps */
171 172
172#ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ 173#ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */
173#define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS 174#define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS
diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h
index a3594dfd6963..bcf24909d677 100644
--- a/include/linux/mmc/mmc.h
+++ b/include/linux/mmc/mmc.h
@@ -42,7 +42,7 @@ struct mmc_command {
42#define MMC_RSP_R1B (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE|MMC_RSP_BUSY) 42#define MMC_RSP_R1B (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE|MMC_RSP_BUSY)
43#define MMC_RSP_R2 (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC) 43#define MMC_RSP_R2 (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC)
44#define MMC_RSP_R3 (MMC_RSP_PRESENT) 44#define MMC_RSP_R3 (MMC_RSP_PRESENT)
45#define MMC_RSP_R6 (MMC_RSP_PRESENT|MMC_RSP_CRC) 45#define MMC_RSP_R6 (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE)
46 46
47#define mmc_resp_type(cmd) ((cmd)->flags & (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC|MMC_RSP_BUSY|MMC_RSP_OPCODE)) 47#define mmc_resp_type(cmd) ((cmd)->flags & (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC|MMC_RSP_BUSY|MMC_RSP_OPCODE))
48 48
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index 2071b02f0526..97523887fe5d 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -343,6 +343,7 @@ struct nand_buffers {
343 * @options: [BOARDSPECIFIC] various chip options. They can partly be set to inform nand_scan about 343 * @options: [BOARDSPECIFIC] various chip options. They can partly be set to inform nand_scan about
344 * special functionality. See the defines for further explanation 344 * special functionality. See the defines for further explanation
345 * @badblockpos: [INTERN] position of the bad block marker in the oob area 345 * @badblockpos: [INTERN] position of the bad block marker in the oob area
346 * @cellinfo: [INTERN] MLC/multichip data from chip ident
346 * @numchips: [INTERN] number of physical chips 347 * @numchips: [INTERN] number of physical chips
347 * @chipsize: [INTERN] the size of one chip for multichip arrays 348 * @chipsize: [INTERN] the size of one chip for multichip arrays
348 * @pagemask: [INTERN] page number mask = number of (pages / chip) - 1 349 * @pagemask: [INTERN] page number mask = number of (pages / chip) - 1
diff --git a/include/linux/mtio.h b/include/linux/mtio.h
index 8c66151821e3..6f8d2d45a8fb 100644
--- a/include/linux/mtio.h
+++ b/include/linux/mtio.h
@@ -10,7 +10,6 @@
10 10
11#include <linux/types.h> 11#include <linux/types.h>
12#include <linux/ioctl.h> 12#include <linux/ioctl.h>
13#include <linux/qic117.h>
14 13
15/* 14/*
16 * Structures and definitions for mag tape io control commands 15 * Structures and definitions for mag tape io control commands
@@ -116,32 +115,6 @@ struct mtget {
116#define MT_ISFTAPE_UNKNOWN 0x800000 /* obsolete */ 115#define MT_ISFTAPE_UNKNOWN 0x800000 /* obsolete */
117#define MT_ISFTAPE_FLAG 0x800000 116#define MT_ISFTAPE_FLAG 0x800000
118 117
119struct mt_tape_info {
120 long t_type; /* device type id (mt_type) */
121 char *t_name; /* descriptive name */
122};
123
124#define MT_TAPE_INFO { \
125 {MT_ISUNKNOWN, "Unknown type of tape device"}, \
126 {MT_ISQIC02, "Generic QIC-02 tape streamer"}, \
127 {MT_ISWT5150, "Wangtek 5150, QIC-150"}, \
128 {MT_ISARCHIVE_5945L2, "Archive 5945L-2"}, \
129 {MT_ISCMSJ500, "CMS Jumbo 500"}, \
130 {MT_ISTDC3610, "Tandberg TDC 3610, QIC-24"}, \
131 {MT_ISARCHIVE_VP60I, "Archive VP60i, QIC-02"}, \
132 {MT_ISARCHIVE_2150L, "Archive Viper 2150L"}, \
133 {MT_ISARCHIVE_2060L, "Archive Viper 2060L"}, \
134 {MT_ISARCHIVESC499, "Archive SC-499 QIC-36 controller"}, \
135 {MT_ISQIC02_ALL_FEATURES, "Generic QIC-02 tape, all features"}, \
136 {MT_ISWT5099EEN24, "Wangtek 5099-een24, 60MB"}, \
137 {MT_ISTEAC_MT2ST, "Teac MT-2ST 155mb data cassette drive"}, \
138 {MT_ISEVEREX_FT40A, "Everex FT40A, QIC-40"}, \
139 {MT_ISONSTREAM_SC, "OnStream SC-, DI-, DP-, or USB tape drive"}, \
140 {MT_ISSCSI1, "Generic SCSI-1 tape"}, \
141 {MT_ISSCSI2, "Generic SCSI-2 tape"}, \
142 {0, NULL} \
143}
144
145 118
146/* structure for MTIOCPOS - mag tape get position command */ 119/* structure for MTIOCPOS - mag tape get position command */
147 120
@@ -150,130 +123,11 @@ struct mtpos {
150}; 123};
151 124
152 125
153/* structure for MTIOCVOLINFO, query information about the volume
154 * currently positioned at (zftape)
155 */
156struct mtvolinfo {
157 unsigned int mt_volno; /* vol-number */
158 unsigned int mt_blksz; /* blocksize used when recording */
159 unsigned int mt_rawsize; /* raw tape space consumed, in kb */
160 unsigned int mt_size; /* volume size after decompression, in kb */
161 unsigned int mt_cmpr:1; /* this volume has been compressed */
162};
163
164/* raw access to a floppy drive, read and write an arbitrary segment.
165 * For ftape/zftape to support formatting etc.
166 */
167#define MT_FT_RD_SINGLE 0
168#define MT_FT_RD_AHEAD 1
169#define MT_FT_WR_ASYNC 0 /* start tape only when all buffers are full */
170#define MT_FT_WR_MULTI 1 /* start tape, continue until buffers are empty */
171#define MT_FT_WR_SINGLE 2 /* write a single segment and stop afterwards */
172#define MT_FT_WR_DELETE 3 /* write deleted data marks, one segment at time */
173
174struct mtftseg
175{
176 unsigned mt_segno; /* the segment to read or write */
177 unsigned mt_mode; /* modes for read/write (sync/async etc.) */
178 int mt_result; /* result of r/w request, not of the ioctl */
179 void __user *mt_data; /* User space buffer: must be 29kb */
180};
181
182/* get tape capacity (ftape/zftape)
183 */
184struct mttapesize {
185 unsigned long mt_capacity; /* entire, uncompressed capacity
186 * of a cartridge
187 */
188 unsigned long mt_used; /* what has been used so far, raw
189 * uncompressed amount
190 */
191};
192
193/* possible values of the ftfmt_op field
194 */
195#define FTFMT_SET_PARMS 1 /* set software parms */
196#define FTFMT_GET_PARMS 2 /* get software parms */
197#define FTFMT_FORMAT_TRACK 3 /* start formatting a tape track */
198#define FTFMT_STATUS 4 /* monitor formatting a tape track */
199#define FTFMT_VERIFY 5 /* verify the given segment */
200
201struct ftfmtparms {
202 unsigned char ft_qicstd; /* QIC-40/QIC-80/QIC-3010/QIC-3020 */
203 unsigned char ft_fmtcode; /* Refer to the QIC specs */
204 unsigned char ft_fhm; /* floppy head max */
205 unsigned char ft_ftm; /* floppy track max */
206 unsigned short ft_spt; /* segments per track */
207 unsigned short ft_tpc; /* tracks per cartridge */
208};
209
210struct ftfmttrack {
211 unsigned int ft_track; /* track to format */
212 unsigned char ft_gap3; /* size of gap3, for FORMAT_TRK */
213};
214
215struct ftfmtstatus {
216 unsigned int ft_segment; /* segment currently being formatted */
217};
218
219struct ftfmtverify {
220 unsigned int ft_segment; /* segment to verify */
221 unsigned long ft_bsm; /* bsm as result of VERIFY cmd */
222};
223
224struct mtftformat {
225 unsigned int fmt_op; /* operation to perform */
226 union fmt_arg {
227 struct ftfmtparms fmt_parms; /* format parameters */
228 struct ftfmttrack fmt_track; /* ctrl while formatting */
229 struct ftfmtstatus fmt_status;
230 struct ftfmtverify fmt_verify; /* for verifying */
231 } fmt_arg;
232};
233
234struct mtftcmd {
235 unsigned int ft_wait_before; /* timeout to wait for drive to get ready
236 * before command is sent. Milliseconds
237 */
238 qic117_cmd_t ft_cmd; /* command to send */
239 unsigned char ft_parm_cnt; /* zero: no parm is sent. */
240 unsigned char ft_parms[3]; /* parameter(s) to send to
241 * the drive. The parms are nibbles
242 * driver sends cmd + 2 step pulses */
243 unsigned int ft_result_bits; /* if non zero, number of bits
244 * returned by the tape drive
245 */
246 unsigned int ft_result; /* the result returned by the tape drive*/
247 unsigned int ft_wait_after; /* timeout to wait for drive to get ready
248 * after command is sent. 0: don't wait */
249 int ft_status; /* status returned by ready wait
250 * undefined if timeout was 0.
251 */
252 int ft_error; /* error code if error status was set by
253 * command
254 */
255};
256
257/* mag tape io control commands */ 126/* mag tape io control commands */
258#define MTIOCTOP _IOW('m', 1, struct mtop) /* do a mag tape op */ 127#define MTIOCTOP _IOW('m', 1, struct mtop) /* do a mag tape op */
259#define MTIOCGET _IOR('m', 2, struct mtget) /* get tape status */ 128#define MTIOCGET _IOR('m', 2, struct mtget) /* get tape status */
260#define MTIOCPOS _IOR('m', 3, struct mtpos) /* get tape position */ 129#define MTIOCPOS _IOR('m', 3, struct mtpos) /* get tape position */
261 130
262/* The next two are used by the QIC-02 driver for runtime reconfiguration.
263 * See tpqic02.h for struct mtconfiginfo.
264 */
265#define MTIOCGETCONFIG _IOR('m', 4, struct mtconfiginfo) /* get tape config */
266#define MTIOCSETCONFIG _IOW('m', 5, struct mtconfiginfo) /* set tape config */
267
268/* the next six are used by the floppy ftape drivers and its frontends
269 * sorry, but MTIOCTOP commands are write only.
270 */
271#define MTIOCRDFTSEG _IOWR('m', 6, struct mtftseg) /* read a segment */
272#define MTIOCWRFTSEG _IOWR('m', 7, struct mtftseg) /* write a segment */
273#define MTIOCVOLINFO _IOR('m', 8, struct mtvolinfo) /* info about volume */
274#define MTIOCGETSIZE _IOR('m', 9, struct mttapesize)/* get cartridge size*/
275#define MTIOCFTFORMAT _IOWR('m', 10, struct mtftformat) /* format ftape */
276#define MTIOCFTCMD _IOWR('m', 11, struct mtftcmd) /* send QIC-117 cmd */
277 131
278/* Generic Mag Tape (device independent) status macros for examining 132/* Generic Mag Tape (device independent) status macros for examining
279 * mt_gstat -- HP-UX compatible. 133 * mt_gstat -- HP-UX compatible.
diff --git a/include/linux/mutex.h b/include/linux/mutex.h
index a7544afd7582..b81bc2adaeff 100644
--- a/include/linux/mutex.h
+++ b/include/linux/mutex.h
@@ -105,7 +105,7 @@ do { \
105extern void __mutex_init(struct mutex *lock, const char *name, 105extern void __mutex_init(struct mutex *lock, const char *name,
106 struct lock_class_key *key); 106 struct lock_class_key *key);
107 107
108/*** 108/**
109 * mutex_is_locked - is the mutex locked 109 * mutex_is_locked - is the mutex locked
110 * @lock: the mutex to be queried 110 * @lock: the mutex to be queried
111 * 111 *
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h
index 4f06dad0bde9..98d566c5e32a 100644
--- a/include/linux/netfilter_ipv4/ip_tables.h
+++ b/include/linux/netfilter_ipv4/ip_tables.h
@@ -28,7 +28,7 @@
28#include <linux/netfilter/x_tables.h> 28#include <linux/netfilter/x_tables.h>
29 29
30#define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN 30#define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
31#define IPT_TABLE_MAXNAMELEN XT_FUNCTION_MAXNAMELEN 31#define IPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
32#define ipt_match xt_match 32#define ipt_match xt_match
33#define ipt_target xt_target 33#define ipt_target xt_target
34#define ipt_table xt_table 34#define ipt_table xt_table
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index 04963063e620..c5d4084773e8 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -308,6 +308,7 @@ extern int nfs_attribute_timeout(struct inode *inode);
308extern int nfs_revalidate_inode(struct nfs_server *server, struct inode *inode); 308extern int nfs_revalidate_inode(struct nfs_server *server, struct inode *inode);
309extern int __nfs_revalidate_inode(struct nfs_server *, struct inode *); 309extern int __nfs_revalidate_inode(struct nfs_server *, struct inode *);
310extern int nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping); 310extern int nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping);
311extern int nfs_revalidate_mapping_nolock(struct inode *inode, struct address_space *mapping);
311extern int nfs_setattr(struct dentry *, struct iattr *); 312extern int nfs_setattr(struct dentry *, struct iattr *);
312extern void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr); 313extern void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr);
313extern void nfs_begin_attr_update(struct inode *); 314extern void nfs_begin_attr_update(struct inode *);
diff --git a/include/linux/nfsd/nfsd.h b/include/linux/nfsd/nfsd.h
index 0727774772ba..4b7c4b568f6d 100644
--- a/include/linux/nfsd/nfsd.h
+++ b/include/linux/nfsd/nfsd.h
@@ -52,8 +52,6 @@
52struct readdir_cd { 52struct readdir_cd {
53 __be32 err; /* 0, nfserr, or nfserr_eof */ 53 __be32 err; /* 0, nfserr, or nfserr_eof */
54}; 54};
55typedef int (*encode_dent_fn)(struct readdir_cd *, const char *,
56 int, loff_t, ino_t, unsigned int);
57typedef int (*nfsd_dirop_t)(struct inode *, struct dentry *, int, int); 55typedef int (*nfsd_dirop_t)(struct inode *, struct dentry *, int, int);
58 56
59extern struct svc_program nfsd_program; 57extern struct svc_program nfsd_program;
@@ -117,7 +115,7 @@ __be32 nfsd_unlink(struct svc_rqst *, struct svc_fh *, int type,
117int nfsd_truncate(struct svc_rqst *, struct svc_fh *, 115int nfsd_truncate(struct svc_rqst *, struct svc_fh *,
118 unsigned long size); 116 unsigned long size);
119__be32 nfsd_readdir(struct svc_rqst *, struct svc_fh *, 117__be32 nfsd_readdir(struct svc_rqst *, struct svc_fh *,
120 loff_t *, struct readdir_cd *, encode_dent_fn); 118 loff_t *, struct readdir_cd *, filldir_t);
121__be32 nfsd_statfs(struct svc_rqst *, struct svc_fh *, 119__be32 nfsd_statfs(struct svc_rqst *, struct svc_fh *,
122 struct kstatfs *); 120 struct kstatfs *);
123 121
diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h
index f3b51d62ec7d..d9c6c382165d 100644
--- a/include/linux/nfsd/nfsfh.h
+++ b/include/linux/nfsd/nfsfh.h
@@ -217,11 +217,7 @@ void fh_put(struct svc_fh *);
217static __inline__ struct svc_fh * 217static __inline__ struct svc_fh *
218fh_copy(struct svc_fh *dst, struct svc_fh *src) 218fh_copy(struct svc_fh *dst, struct svc_fh *src)
219{ 219{
220 if (src->fh_dentry || src->fh_locked) { 220 WARN_ON(src->fh_dentry || src->fh_locked);
221 struct dentry *dentry = src->fh_dentry;
222 printk(KERN_ERR "fh_copy: copying %s/%s, already verified!\n",
223 dentry->d_parent->d_name.name, dentry->d_name.name);
224 }
225 221
226 *dst = *src; 222 *dst = *src;
227 return dst; 223 return dst;
@@ -300,10 +296,8 @@ fh_lock_nested(struct svc_fh *fhp, unsigned int subclass)
300 dfprintk(FILEOP, "nfsd: fh_lock(%s) locked = %d\n", 296 dfprintk(FILEOP, "nfsd: fh_lock(%s) locked = %d\n",
301 SVCFH_fmt(fhp), fhp->fh_locked); 297 SVCFH_fmt(fhp), fhp->fh_locked);
302 298
303 if (!fhp->fh_dentry) { 299 BUG_ON(!dentry);
304 printk(KERN_ERR "fh_lock: fh not verified!\n"); 300
305 return;
306 }
307 if (fhp->fh_locked) { 301 if (fhp->fh_locked) {
308 printk(KERN_WARNING "fh_lock: %s/%s already locked!\n", 302 printk(KERN_WARNING "fh_lock: %s/%s already locked!\n",
309 dentry->d_parent->d_name.name, dentry->d_name.name); 303 dentry->d_parent->d_name.name, dentry->d_name.name);
@@ -328,8 +322,7 @@ fh_lock(struct svc_fh *fhp)
328static inline void 322static inline void
329fh_unlock(struct svc_fh *fhp) 323fh_unlock(struct svc_fh *fhp)
330{ 324{
331 if (!fhp->fh_dentry) 325 BUG_ON(!fhp->fh_dentry);
332 printk(KERN_ERR "fh_unlock: fh not verified!\n");
333 326
334 if (fhp->fh_locked) { 327 if (fhp->fh_locked) {
335 fill_post_wcc(fhp); 328 fill_post_wcc(fhp);
diff --git a/include/linux/nfsd/xdr.h b/include/linux/nfsd/xdr.h
index 877192d3ae79..67885d5e6e50 100644
--- a/include/linux/nfsd/xdr.h
+++ b/include/linux/nfsd/xdr.h
@@ -165,8 +165,8 @@ int nfssvc_encode_readres(struct svc_rqst *, __be32 *, struct nfsd_readres *);
165int nfssvc_encode_statfsres(struct svc_rqst *, __be32 *, struct nfsd_statfsres *); 165int nfssvc_encode_statfsres(struct svc_rqst *, __be32 *, struct nfsd_statfsres *);
166int nfssvc_encode_readdirres(struct svc_rqst *, __be32 *, struct nfsd_readdirres *); 166int nfssvc_encode_readdirres(struct svc_rqst *, __be32 *, struct nfsd_readdirres *);
167 167
168int nfssvc_encode_entry(struct readdir_cd *, const char *name, 168int nfssvc_encode_entry(void *, const char *name,
169 int namlen, loff_t offset, ino_t ino, unsigned int); 169 int namlen, loff_t offset, u64 ino, unsigned int);
170 170
171int nfssvc_release_fhandle(struct svc_rqst *, __be32 *, struct nfsd_fhandle *); 171int nfssvc_release_fhandle(struct svc_rqst *, __be32 *, struct nfsd_fhandle *);
172 172
diff --git a/include/linux/nfsd/xdr3.h b/include/linux/nfsd/xdr3.h
index 79963867b0d7..89d9d6061a62 100644
--- a/include/linux/nfsd/xdr3.h
+++ b/include/linux/nfsd/xdr3.h
@@ -331,11 +331,11 @@ int nfs3svc_release_fhandle(struct svc_rqst *, __be32 *,
331 struct nfsd3_attrstat *); 331 struct nfsd3_attrstat *);
332int nfs3svc_release_fhandle2(struct svc_rqst *, __be32 *, 332int nfs3svc_release_fhandle2(struct svc_rqst *, __be32 *,
333 struct nfsd3_fhandle_pair *); 333 struct nfsd3_fhandle_pair *);
334int nfs3svc_encode_entry(struct readdir_cd *, const char *name, 334int nfs3svc_encode_entry(void *, const char *name,
335 int namlen, loff_t offset, ino_t ino, 335 int namlen, loff_t offset, u64 ino,
336 unsigned int); 336 unsigned int);
337int nfs3svc_encode_entry_plus(struct readdir_cd *, const char *name, 337int nfs3svc_encode_entry_plus(void *, const char *name,
338 int namlen, loff_t offset, ino_t ino, 338 int namlen, loff_t offset, u64 ino,
339 unsigned int); 339 unsigned int);
340/* Helper functions for NFSv3 ACL code */ 340/* Helper functions for NFSv3 ACL code */
341__be32 *nfs3svc_encode_post_op_attr(struct svc_rqst *rqstp, __be32 *p, 341__be32 *nfs3svc_encode_post_op_attr(struct svc_rqst *rqstp, __be32 *p,
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index f7a416c52edc..3d1d21035dec 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -1277,13 +1277,13 @@
1277#define PCI_DEVICE_ID_VIA_3296_0 0x0296 1277#define PCI_DEVICE_ID_VIA_3296_0 0x0296
1278#define PCI_DEVICE_ID_VIA_8363_0 0x0305 1278#define PCI_DEVICE_ID_VIA_8363_0 0x0305
1279#define PCI_DEVICE_ID_VIA_P4M800CE 0x0314 1279#define PCI_DEVICE_ID_VIA_P4M800CE 0x0314
1280#define PCI_DEVICE_ID_VIA_K8M890CE 0x0336 1280#define PCI_DEVICE_ID_VIA_P4M890 0x0327
1281#define PCI_DEVICE_ID_VIA_VT3336 0x0336
1281#define PCI_DEVICE_ID_VIA_8371_0 0x0391 1282#define PCI_DEVICE_ID_VIA_8371_0 0x0391
1282#define PCI_DEVICE_ID_VIA_8501_0 0x0501 1283#define PCI_DEVICE_ID_VIA_8501_0 0x0501
1283#define PCI_DEVICE_ID_VIA_82C561 0x0561 1284#define PCI_DEVICE_ID_VIA_82C561 0x0561
1284#define PCI_DEVICE_ID_VIA_82C586_1 0x0571 1285#define PCI_DEVICE_ID_VIA_82C586_1 0x0571
1285#define PCI_DEVICE_ID_VIA_82C576 0x0576 1286#define PCI_DEVICE_ID_VIA_82C576 0x0576
1286#define PCI_DEVICE_ID_VIA_SATA_EIDE 0x0581
1287#define PCI_DEVICE_ID_VIA_82C586_0 0x0586 1287#define PCI_DEVICE_ID_VIA_82C586_0 0x0586
1288#define PCI_DEVICE_ID_VIA_82C596 0x0596 1288#define PCI_DEVICE_ID_VIA_82C596 0x0596
1289#define PCI_DEVICE_ID_VIA_82C597_0 0x0597 1289#define PCI_DEVICE_ID_VIA_82C597_0 0x0597
@@ -1326,6 +1326,8 @@
1326#define PCI_DEVICE_ID_VIA_8237 0x3227 1326#define PCI_DEVICE_ID_VIA_8237 0x3227
1327#define PCI_DEVICE_ID_VIA_8251 0x3287 1327#define PCI_DEVICE_ID_VIA_8251 0x3287
1328#define PCI_DEVICE_ID_VIA_8237A 0x3337 1328#define PCI_DEVICE_ID_VIA_8237A 0x3337
1329#define PCI_DEVICE_ID_VIA_8237S 0x3372
1330#define PCI_DEVICE_ID_VIA_SATA_EIDE 0x5324
1329#define PCI_DEVICE_ID_VIA_8231 0x8231 1331#define PCI_DEVICE_ID_VIA_8231 0x8231
1330#define PCI_DEVICE_ID_VIA_8231_4 0x8235 1332#define PCI_DEVICE_ID_VIA_8231_4 0x8235
1331#define PCI_DEVICE_ID_VIA_8365_1 0x8305 1333#define PCI_DEVICE_ID_VIA_8365_1 0x8305
diff --git a/include/linux/pid_namespace.h b/include/linux/pid_namespace.h
index d2a9d419f01f..2833806d42c6 100644
--- a/include/linux/pid_namespace.h
+++ b/include/linux/pid_namespace.h
@@ -39,7 +39,7 @@ static inline void put_pid_ns(struct pid_namespace *ns)
39 39
40static inline struct task_struct *child_reaper(struct task_struct *tsk) 40static inline struct task_struct *child_reaper(struct task_struct *tsk)
41{ 41{
42 return tsk->nsproxy->pid_ns->child_reaper; 42 return init_pid_ns.child_reaper;
43} 43}
44 44
45#endif /* _LINUX_PID_NS_H */ 45#endif /* _LINUX_PID_NS_H */
diff --git a/include/linux/qic117.h b/include/linux/qic117.h
deleted file mode 100644
index 07b537e5d359..000000000000
--- a/include/linux/qic117.h
+++ /dev/null
@@ -1,290 +0,0 @@
1#ifndef _QIC117_H
2#define _QIC117_H
3
4/*
5 * Copyright (C) 1993-1996 Bas Laarhoven,
6 * (C) 1997 Claus-Justus Heine.
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2, or (at your option)
11 any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; see the file COPYING. If not, write to
20 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
21
22 *
23 * $Source: /homes/cvs/ftape-stacked/include/linux/qic117.h,v $
24 * $Revision: 1.2 $
25 * $Date: 1997/10/05 19:19:32 $
26 *
27 * This file contains QIC-117 spec. related definitions for the
28 * QIC-40/80/3010/3020 floppy-tape driver "ftape" for Linux.
29 *
30 * These data were taken from the Quarter-Inch Cartridge
31 * Drive Standards, Inc. document titled:
32 * `Common Command Set Interface Specification for Flexible
33 * Disk Controller Based Minicartridge Tape Drives'
34 * document QIC-117 Revision J, 28 Aug 96.
35 * For more information, contact:
36 * Quarter-Inch Cartridge Drive Standards, Inc.
37 * 311 East Carrillo Street
38 * Santa Barbara, California 93101
39 * Telephone (805) 963-3853
40 * Fax (805) 962-1541
41 * WWW http://www.qic.org
42 *
43 * Current QIC standard revisions (of interest) are:
44 * QIC-40-MC, Rev. M, 2 Sep 92.
45 * QIC-80-MC, Rev. N, 20 Mar 96.
46 * QIC-80-MC, Rev. K, 15 Dec 94.
47 * QIC-113, Rev. G, 15 Jun 95.
48 * QIC-117, Rev. J, 28 Aug 96.
49 * QIC-122, Rev. B, 6 Mar 91.
50 * QIC-130, Rev. C, 2 Sep 92.
51 * QIC-3010-MC, Rev. F, 14 Jun 95.
52 * QIC-3020-MC, Rev. G, 31 Aug 95.
53 * QIC-CRF3, Rev. B, 15 Jun 95.
54 * */
55
56/*
57 * QIC-117 common command set rev. J.
58 * These commands are sent to the tape unit
59 * as number of pulses over the step line.
60 */
61
62typedef enum {
63 QIC_NO_COMMAND = 0,
64 QIC_RESET = 1,
65 QIC_REPORT_NEXT_BIT = 2,
66 QIC_PAUSE = 3,
67 QIC_MICRO_STEP_PAUSE = 4,
68 QIC_ALTERNATE_TIMEOUT = 5,
69 QIC_REPORT_DRIVE_STATUS = 6,
70 QIC_REPORT_ERROR_CODE = 7,
71 QIC_REPORT_DRIVE_CONFIGURATION = 8,
72 QIC_REPORT_ROM_VERSION = 9,
73 QIC_LOGICAL_FORWARD = 10,
74 QIC_PHYSICAL_REVERSE = 11,
75 QIC_PHYSICAL_FORWARD = 12,
76 QIC_SEEK_HEAD_TO_TRACK = 13,
77 QIC_SEEK_LOAD_POINT = 14,
78 QIC_ENTER_FORMAT_MODE = 15,
79 QIC_WRITE_REFERENCE_BURST = 16,
80 QIC_ENTER_VERIFY_MODE = 17,
81 QIC_STOP_TAPE = 18,
82/* commands 19-20: reserved */
83 QIC_MICRO_STEP_HEAD_UP = 21,
84 QIC_MICRO_STEP_HEAD_DOWN = 22,
85 QIC_SOFT_SELECT = 23,
86 QIC_SOFT_DESELECT = 24,
87 QIC_SKIP_REVERSE = 25,
88 QIC_SKIP_FORWARD = 26,
89 QIC_SELECT_RATE = 27,
90/* command 27, in ccs2: Select Rate or Format */
91 QIC_ENTER_DIAGNOSTIC_1 = 28,
92 QIC_ENTER_DIAGNOSTIC_2 = 29,
93 QIC_ENTER_PRIMARY_MODE = 30,
94/* command 31: vendor unique */
95 QIC_REPORT_VENDOR_ID = 32,
96 QIC_REPORT_TAPE_STATUS = 33,
97 QIC_SKIP_EXTENDED_REVERSE = 34,
98 QIC_SKIP_EXTENDED_FORWARD = 35,
99 QIC_CALIBRATE_TAPE_LENGTH = 36,
100 QIC_REPORT_FORMAT_SEGMENTS = 37,
101 QIC_SET_FORMAT_SEGMENTS = 38,
102/* commands 39-45: reserved */
103 QIC_PHANTOM_SELECT = 46,
104 QIC_PHANTOM_DESELECT = 47
105} qic117_cmd_t;
106
107typedef enum {
108 discretional = 0, required, ccs1, ccs2
109} qic_compatibility;
110
111typedef enum {
112 unused, mode, motion, report
113} command_types;
114
115struct qic117_command_table {
116 char *name;
117 __u8 mask;
118 __u8 state;
119 __u8 cmd_type;
120 __u8 non_intr;
121 __u8 level;
122};
123
124#define QIC117_COMMANDS {\
125/* command mask state cmd_type */\
126/* | name | | | non_intr */\
127/* | | | | | | level */\
128/* 0*/ {NULL, 0x00, 0x00, mode, 0, discretional},\
129/* 1*/ {"soft reset", 0x00, 0x00, motion, 1, required},\
130/* 2*/ {"report next bit", 0x00, 0x00, report, 0, required},\
131/* 3*/ {"pause", 0x36, 0x24, motion, 1, required},\
132/* 4*/ {"micro step pause", 0x36, 0x24, motion, 1, required},\
133/* 5*/ {"alternate command timeout", 0x00, 0x00, mode, 0, required},\
134/* 6*/ {"report drive status", 0x00, 0x00, report, 0, required},\
135/* 7*/ {"report error code", 0x01, 0x01, report, 0, required},\
136/* 8*/ {"report drive configuration",0x00, 0x00, report, 0, required},\
137/* 9*/ {"report rom version", 0x00, 0x00, report, 0, required},\
138/*10*/ {"logical forward", 0x37, 0x25, motion, 0, required},\
139/*11*/ {"physical reverse", 0x17, 0x05, motion, 0, required},\
140/*12*/ {"physical forward", 0x17, 0x05, motion, 0, required},\
141/*13*/ {"seek head to track", 0x37, 0x25, motion, 0, required},\
142/*14*/ {"seek load point", 0x17, 0x05, motion, 1, required},\
143/*15*/ {"enter format mode", 0x1f, 0x05, mode, 0, required},\
144/*16*/ {"write reference burst", 0x1f, 0x05, motion, 1, required},\
145/*17*/ {"enter verify mode", 0x37, 0x25, mode, 0, required},\
146/*18*/ {"stop tape", 0x00, 0x00, motion, 1, required},\
147/*19*/ {"reserved (19)", 0x00, 0x00, unused, 0, discretional},\
148/*20*/ {"reserved (20)", 0x00, 0x00, unused, 0, discretional},\
149/*21*/ {"micro step head up", 0x02, 0x00, motion, 0, required},\
150/*22*/ {"micro step head down", 0x02, 0x00, motion, 0, required},\
151/*23*/ {"soft select", 0x00, 0x00, mode, 0, discretional},\
152/*24*/ {"soft deselect", 0x00, 0x00, mode, 0, discretional},\
153/*25*/ {"skip segments reverse", 0x36, 0x24, motion, 1, required},\
154/*26*/ {"skip segments forward", 0x36, 0x24, motion, 1, required},\
155/*27*/ {"select rate or format", 0x03, 0x01, mode, 0, required /* [ccs2] */},\
156/*28*/ {"enter diag mode 1", 0x00, 0x00, mode, 0, discretional},\
157/*29*/ {"enter diag mode 2", 0x00, 0x00, mode, 0, discretional},\
158/*30*/ {"enter primary mode", 0x00, 0x00, mode, 0, required},\
159/*31*/ {"vendor unique (31)", 0x00, 0x00, unused, 0, discretional},\
160/*32*/ {"report vendor id", 0x00, 0x00, report, 0, required},\
161/*33*/ {"report tape status", 0x04, 0x04, report, 0, ccs1},\
162/*34*/ {"skip extended reverse", 0x36, 0x24, motion, 1, ccs1},\
163/*35*/ {"skip extended forward", 0x36, 0x24, motion, 1, ccs1},\
164/*36*/ {"calibrate tape length", 0x17, 0x05, motion, 1, ccs2},\
165/*37*/ {"report format segments", 0x17, 0x05, report, 0, ccs2},\
166/*38*/ {"set format segments", 0x17, 0x05, mode, 0, ccs2},\
167/*39*/ {"reserved (39)", 0x00, 0x00, unused, 0, discretional},\
168/*40*/ {"vendor unique (40)", 0x00, 0x00, unused, 0, discretional},\
169/*41*/ {"vendor unique (41)", 0x00, 0x00, unused, 0, discretional},\
170/*42*/ {"vendor unique (42)", 0x00, 0x00, unused, 0, discretional},\
171/*43*/ {"vendor unique (43)", 0x00, 0x00, unused, 0, discretional},\
172/*44*/ {"vendor unique (44)", 0x00, 0x00, unused, 0, discretional},\
173/*45*/ {"vendor unique (45)", 0x00, 0x00, unused, 0, discretional},\
174/*46*/ {"phantom select", 0x00, 0x00, mode, 0, discretional},\
175/*47*/ {"phantom deselect", 0x00, 0x00, mode, 0, discretional},\
176}
177
178/*
179 * Status bits returned by QIC_REPORT_DRIVE_STATUS
180 */
181
182#define QIC_STATUS_READY 0x01 /* Drive is ready or idle. */
183#define QIC_STATUS_ERROR 0x02 /* Error detected, must read
184 error code to clear this */
185#define QIC_STATUS_CARTRIDGE_PRESENT 0x04 /* Tape is present */
186#define QIC_STATUS_WRITE_PROTECT 0x08 /* Tape is write protected */
187#define QIC_STATUS_NEW_CARTRIDGE 0x10 /* New cartridge inserted, must
188 read error status to clear. */
189#define QIC_STATUS_REFERENCED 0x20 /* Cartridge appears to have been
190 formatted. */
191#define QIC_STATUS_AT_BOT 0x40 /* Cartridge is at physical
192 beginning of tape. */
193#define QIC_STATUS_AT_EOT 0x80 /* Cartridge is at physical end
194 of tape. */
195/*
196 * Status bits returned by QIC_REPORT_DRIVE_CONFIGURATION
197 */
198
199#define QIC_CONFIG_RATE_MASK 0x18
200#define QIC_CONFIG_RATE_SHIFT 3
201#define QIC_CONFIG_RATE_250 0
202#define QIC_CONFIG_RATE_500 2
203#define QIC_CONFIG_RATE_1000 3
204#define QIC_CONFIG_RATE_2000 1
205#define QIC_CONFIG_RATE_4000 0 /* since QIC-117 Rev. J */
206
207#define QIC_CONFIG_LONG 0x40 /* Extra Length Tape Detected */
208#define QIC_CONFIG_80 0x80 /* QIC-80 detected. */
209
210/*
211 * Status bits returned by QIC_REPORT_TAPE_STATUS
212 */
213
214#define QIC_TAPE_STD_MASK 0x0f
215#define QIC_TAPE_QIC40 0x01
216#define QIC_TAPE_QIC80 0x02
217#define QIC_TAPE_QIC3020 0x03
218#define QIC_TAPE_QIC3010 0x04
219
220#define QIC_TAPE_LEN_MASK 0x70
221#define QIC_TAPE_205FT 0x10
222#define QIC_TAPE_307FT 0x20
223#define QIC_TAPE_VARIABLE 0x30
224#define QIC_TAPE_1100FT 0x40
225#define QIC_TAPE_FLEX 0x60
226
227#define QIC_TAPE_WIDE 0x80
228
229/* Define a value (in feet) slightly higher than
230 * the possible maximum tape length.
231 */
232#define QIC_TOP_TAPE_LEN 1500
233
234/*
235 * Errors: List of error codes, and their severity.
236 */
237
238typedef struct {
239 char *message; /* Text describing the error. */
240 unsigned int fatal:1; /* Non-zero if the error is fatal. */
241} ftape_error;
242
243#define QIC117_ERRORS {\
244 /* 0*/ { "No error", 0, },\
245 /* 1*/ { "Command Received while Drive Not Ready", 0, },\
246 /* 2*/ { "Cartridge Not Present or Removed", 1, },\
247 /* 3*/ { "Motor Speed Error (not within 1%)", 1, },\
248 /* 4*/ { "Motor Speed Fault (jammed, or gross speed error", 1, },\
249 /* 5*/ { "Cartridge Write Protected", 1, },\
250 /* 6*/ { "Undefined or Reserved Command Code", 1, },\
251 /* 7*/ { "Illegal Track Address Specified for Seek", 1, },\
252 /* 8*/ { "Illegal Command in Report Subcontext", 0, },\
253 /* 9*/ { "Illegal Entry into a Diagnostic Mode", 1, },\
254 /*10*/ { "Broken Tape Detected (based on hole sensor)", 1, },\
255 /*11*/ { "Warning--Read Gain Setting Error", 1, },\
256 /*12*/ { "Command Received While Error Status Pending (obs)", 1, },\
257 /*13*/ { "Command Received While New Cartridge Pending", 1, },\
258 /*14*/ { "Command Illegal or Undefined in Primary Mode", 1, },\
259 /*15*/ { "Command Illegal or Undefined in Format Mode", 1, },\
260 /*16*/ { "Command Illegal or Undefined in Verify Mode", 1, },\
261 /*17*/ { "Logical Forward Not at Logical BOT or no Format Segments in Format Mode", 1, },\
262 /*18*/ { "Logical EOT Before All Segments generated", 1, },\
263 /*19*/ { "Command Illegal When Cartridge Not Referenced", 1, },\
264 /*20*/ { "Self-Diagnostic Failed (cannot be cleared)", 1, },\
265 /*21*/ { "Warning EEPROM Not Initialized, Defaults Set", 1, },\
266 /*22*/ { "EEPROM Corrupted or Hardware Failure", 1, },\
267 /*23*/ { "Motion Time-out Error", 1, },\
268 /*24*/ { "Data Segment Too Long -- Logical Forward or Pause", 1, },\
269 /*25*/ { "Transmit Overrun (obs)", 1, },\
270 /*26*/ { "Power On Reset Occurred", 0, },\
271 /*27*/ { "Software Reset Occurred", 0, },\
272 /*28*/ { "Diagnostic Mode 1 Error", 1, },\
273 /*29*/ { "Diagnostic Mode 2 Error", 1, },\
274 /*30*/ { "Command Received During Non-Interruptible Process", 1, },\
275 /*31*/ { "Rate or Format Selection Error", 1, },\
276 /*32*/ { "Illegal Command While in High Speed Mode", 1, },\
277 /*33*/ { "Illegal Seek Segment Value", 1, },\
278 /*34*/ { "Invalid Media", 1, },\
279 /*35*/ { "Head Positioning Failure", 1, },\
280 /*36*/ { "Write Reference Burst Failure", 1, },\
281 /*37*/ { "Prom Code Missing", 1, },\
282 /*38*/ { "Invalid Format", 1, },\
283 /*39*/ { "EOT/BOT System Failure", 1, },\
284 /*40*/ { "Prom A Checksum Error", 1, },\
285 /*41*/ { "Drive Wakeup Reset Occurred", 1, },\
286 /*42*/ { "Prom B Checksum Error", 1, },\
287 /*43*/ { "Illegal Entry into Format Mode", 1, },\
288}
289
290#endif /* _QIC117_H */
diff --git a/include/linux/raid/md.h b/include/linux/raid/md.h
index 866a1e2b0ce0..fbaeda79b2e9 100644
--- a/include/linux/raid/md.h
+++ b/include/linux/raid/md.h
@@ -94,7 +94,7 @@ extern int sync_page_io(struct block_device *bdev, sector_t sector, int size,
94 struct page *page, int rw); 94 struct page *page, int rw);
95extern void md_do_sync(mddev_t *mddev); 95extern void md_do_sync(mddev_t *mddev);
96extern void md_new_event(mddev_t *mddev); 96extern void md_new_event(mddev_t *mddev);
97 97extern void md_allow_write(mddev_t *mddev);
98 98
99#endif /* CONFIG_MD */ 99#endif /* CONFIG_MD */
100#endif 100#endif
diff --git a/include/linux/reiserfs_fs_i.h b/include/linux/reiserfs_fs_i.h
index 5b3b297aa2c5..ce3663fb0101 100644
--- a/include/linux/reiserfs_fs_i.h
+++ b/include/linux/reiserfs_fs_i.h
@@ -25,6 +25,7 @@ typedef enum {
25 i_link_saved_truncate_mask = 0x0020, 25 i_link_saved_truncate_mask = 0x0020,
26 i_has_xattr_dir = 0x0040, 26 i_has_xattr_dir = 0x0040,
27 i_data_log = 0x0080, 27 i_data_log = 0x0080,
28 i_ever_mapped = 0x0100
28} reiserfs_inode_flags; 29} reiserfs_inode_flags;
29 30
30struct reiserfs_inode_info { 31struct reiserfs_inode_info {
@@ -52,6 +53,7 @@ struct reiserfs_inode_info {
52 ** flushed */ 53 ** flushed */
53 unsigned long i_trans_id; 54 unsigned long i_trans_id;
54 struct reiserfs_journal_list *i_jl; 55 struct reiserfs_journal_list *i_jl;
56 struct mutex i_mmap;
55#ifdef CONFIG_REISERFS_FS_POSIX_ACL 57#ifdef CONFIG_REISERFS_FS_POSIX_ACL
56 struct posix_acl *i_acl_access; 58 struct posix_acl *i_acl_access;
57 struct posix_acl *i_acl_default; 59 struct posix_acl *i_acl_default;
diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h
index b0090e9f7884..382bb7951166 100644
--- a/include/linux/rtmutex.h
+++ b/include/linux/rtmutex.h
@@ -16,7 +16,7 @@
16#include <linux/plist.h> 16#include <linux/plist.h>
17#include <linux/spinlock_types.h> 17#include <linux/spinlock_types.h>
18 18
19/* 19/**
20 * The rt_mutex structure 20 * The rt_mutex structure
21 * 21 *
22 * @wait_lock: spinlock to protect the structure 22 * @wait_lock: spinlock to protect the structure
@@ -71,7 +71,7 @@ struct hrtimer_sleeper;
71#define DEFINE_RT_MUTEX(mutexname) \ 71#define DEFINE_RT_MUTEX(mutexname) \
72 struct rt_mutex mutexname = __RT_MUTEX_INITIALIZER(mutexname) 72 struct rt_mutex mutexname = __RT_MUTEX_INITIALIZER(mutexname)
73 73
74/*** 74/**
75 * rt_mutex_is_locked - is the mutex locked 75 * rt_mutex_is_locked - is the mutex locked
76 * @lock: the mutex to be queried 76 * @lock: the mutex to be queried
77 * 77 *
diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h
index 97c761652581..8b6ce60ea057 100644
--- a/include/linux/sunrpc/sched.h
+++ b/include/linux/sunrpc/sched.h
@@ -250,7 +250,6 @@ void rpc_init_task(struct rpc_task *task, struct rpc_clnt *clnt,
250 int flags, const struct rpc_call_ops *ops, 250 int flags, const struct rpc_call_ops *ops,
251 void *data); 251 void *data);
252void rpc_put_task(struct rpc_task *); 252void rpc_put_task(struct rpc_task *);
253void rpc_release_task(struct rpc_task *);
254void rpc_exit_task(struct rpc_task *); 253void rpc_exit_task(struct rpc_task *);
255void rpc_release_calldata(const struct rpc_call_ops *, void *); 254void rpc_release_calldata(const struct rpc_call_ops *, void *);
256void rpc_killall_tasks(struct rpc_clnt *); 255void rpc_killall_tasks(struct rpc_clnt *);
diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
index 965d6c20086e..64f3d60c72af 100644
--- a/include/linux/sunrpc/svc.h
+++ b/include/linux/sunrpc/svc.h
@@ -144,8 +144,11 @@ extern u32 svc_max_payload(const struct svc_rqst *rqstp);
144 * 144 *
145 * Each request/reply pair can have at most one "payload", plus two pages, 145 * Each request/reply pair can have at most one "payload", plus two pages,
146 * one for the request, and one for the reply. 146 * one for the request, and one for the reply.
147 * We using ->sendfile to return read data, we might need one extra page
148 * if the request is not page-aligned. So add another '1'.
147 */ 149 */
148#define RPCSVC_MAXPAGES ((RPCSVC_MAXPAYLOAD+PAGE_SIZE-1)/PAGE_SIZE + 2) 150#define RPCSVC_MAXPAGES ((RPCSVC_MAXPAYLOAD+PAGE_SIZE-1)/PAGE_SIZE \
151 + 2 + 1)
149 152
150static inline u32 svc_getnl(struct kvec *iov) 153static inline u32 svc_getnl(struct kvec *iov)
151{ 154{
diff --git a/include/linux/timer.h b/include/linux/timer.h
index eeef6643d4c6..fb5edaaf0ebd 100644
--- a/include/linux/timer.h
+++ b/include/linux/timer.h
@@ -41,7 +41,7 @@ static inline void setup_timer(struct timer_list * timer,
41 init_timer(timer); 41 init_timer(timer);
42} 42}
43 43
44/*** 44/**
45 * timer_pending - is a timer pending? 45 * timer_pending - is a timer pending?
46 * @timer: the timer in question 46 * @timer: the timer in question
47 * 47 *
@@ -63,7 +63,7 @@ extern int mod_timer(struct timer_list *timer, unsigned long expires);
63 63
64extern unsigned long next_timer_interrupt(void); 64extern unsigned long next_timer_interrupt(void);
65 65
66/*** 66/**
67 * add_timer - start a timer 67 * add_timer - start a timer
68 * @timer: the timer to be added 68 * @timer: the timer to be added
69 * 69 *
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 5cb380a559fd..d94e2683be52 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -662,6 +662,15 @@ typedef __u64 v4l2_std_id;
662#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000) 662#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
663#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000) 663#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
664 664
665/* FIXME:
666 Although std_id is 64 bits, there is an issue on PPC32 architecture that
667 makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding
668 this value to 32 bits.
669 As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide),
670 it should work fine. However, if needed to add more than two standards,
671 v4l2-common.c should be fixed.
672 */
673
665/* some merged standards */ 674/* some merged standards */
666#define V4L2_STD_MN (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC) 675#define V4L2_STD_MN (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC)
667#define V4L2_STD_B (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B) 676#define V4L2_STD_B (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B)
diff --git a/include/net/inet6_connection_sock.h b/include/net/inet6_connection_sock.h
index 16aa96a6a53b..f13ddc2543b1 100644
--- a/include/net/inet6_connection_sock.h
+++ b/include/net/inet6_connection_sock.h
@@ -38,5 +38,5 @@ extern void inet6_csk_reqsk_queue_hash_add(struct sock *sk,
38 38
39extern void inet6_csk_addr2sockaddr(struct sock *sk, struct sockaddr *uaddr); 39extern void inet6_csk_addr2sockaddr(struct sock *sk, struct sockaddr *uaddr);
40 40
41extern int inet6_csk_xmit(struct sk_buff *skb, struct sock *sk, int ipfragok); 41extern int inet6_csk_xmit(struct sk_buff *skb, int ipfragok);
42#endif /* _INET6_CONNECTION_SOCK_H */ 42#endif /* _INET6_CONNECTION_SOCK_H */
diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
index bf16d98d372c..133cf30d2d79 100644
--- a/include/net/inet_connection_sock.h
+++ b/include/net/inet_connection_sock.h
@@ -37,8 +37,7 @@ struct tcp_congestion_ops;
37 * (i.e. things that depend on the address family) 37 * (i.e. things that depend on the address family)
38 */ 38 */
39struct inet_connection_sock_af_ops { 39struct inet_connection_sock_af_ops {
40 int (*queue_xmit)(struct sk_buff *skb, struct sock *sk, 40 int (*queue_xmit)(struct sk_buff *skb, int ipfragok);
41 int ipfragok);
42 void (*send_check)(struct sock *sk, int len, 41 void (*send_check)(struct sock *sk, int len,
43 struct sk_buff *skb); 42 struct sk_buff *skb);
44 int (*rebuild_header)(struct sock *sk); 43 int (*rebuild_header)(struct sock *sk);
diff --git a/include/net/ip.h b/include/net/ip.h
index 053f02b5cb89..e79c3e3aa4f6 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -97,7 +97,7 @@ extern int ip_mc_output(struct sk_buff *skb);
97extern int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)); 97extern int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *));
98extern int ip_do_nat(struct sk_buff *skb); 98extern int ip_do_nat(struct sk_buff *skb);
99extern void ip_send_check(struct iphdr *ip); 99extern void ip_send_check(struct iphdr *ip);
100extern int ip_queue_xmit(struct sk_buff *skb, struct sock *sk, int ipfragok); 100extern int ip_queue_xmit(struct sk_buff *skb, int ipfragok);
101extern void ip_init(void); 101extern void ip_init(void);
102extern int ip_append_data(struct sock *sk, 102extern int ip_append_data(struct sock *sk,
103 int getfrag(void *from, char *to, int offset, int len, 103 int getfrag(void *from, char *to, int offset, int len,
diff --git a/include/net/netfilter/nf_conntrack_compat.h b/include/net/netfilter/nf_conntrack_compat.h
index b9ce5c80d9d5..6f84c1f7fcd4 100644
--- a/include/net/netfilter/nf_conntrack_compat.h
+++ b/include/net/netfilter/nf_conntrack_compat.h
@@ -6,6 +6,7 @@
6#if defined(CONFIG_IP_NF_CONNTRACK) || defined(CONFIG_IP_NF_CONNTRACK_MODULE) 6#if defined(CONFIG_IP_NF_CONNTRACK) || defined(CONFIG_IP_NF_CONNTRACK_MODULE)
7 7
8#include <linux/netfilter_ipv4/ip_conntrack.h> 8#include <linux/netfilter_ipv4/ip_conntrack.h>
9#include <linux/socket.h>
9 10
10#ifdef CONFIG_IP_NF_CONNTRACK_MARK 11#ifdef CONFIG_IP_NF_CONNTRACK_MARK
11static inline u_int32_t *nf_ct_get_mark(const struct sk_buff *skb, 12static inline u_int32_t *nf_ct_get_mark(const struct sk_buff *skb,
diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h
index 3269ed1cc222..73cb9943c8a8 100644
--- a/include/net/sctp/sm.h
+++ b/include/net/sctp/sm.h
@@ -134,6 +134,7 @@ sctp_state_fn_t sctp_sf_violation;
134sctp_state_fn_t sctp_sf_discard_chunk; 134sctp_state_fn_t sctp_sf_discard_chunk;
135sctp_state_fn_t sctp_sf_do_5_2_1_siminit; 135sctp_state_fn_t sctp_sf_do_5_2_1_siminit;
136sctp_state_fn_t sctp_sf_do_5_2_2_dupinit; 136sctp_state_fn_t sctp_sf_do_5_2_2_dupinit;
137sctp_state_fn_t sctp_sf_do_5_2_3_initack;
137sctp_state_fn_t sctp_sf_do_5_2_4_dupcook; 138sctp_state_fn_t sctp_sf_do_5_2_4_dupcook;
138sctp_state_fn_t sctp_sf_unk_chunk; 139sctp_state_fn_t sctp_sf_unk_chunk;
139sctp_state_fn_t sctp_sf_do_8_5_1_E_sa; 140sctp_state_fn_t sctp_sf_do_8_5_1_E_sa;
diff --git a/include/sound/core.h b/include/sound/core.h
index a994bea09cd6..521f036cce99 100644
--- a/include/sound/core.h
+++ b/include/sound/core.h
@@ -132,8 +132,10 @@ struct snd_card {
132 int shutdown; /* this card is going down */ 132 int shutdown; /* this card is going down */
133 int free_on_last_close; /* free in context of file_release */ 133 int free_on_last_close; /* free in context of file_release */
134 wait_queue_head_t shutdown_sleep; 134 wait_queue_head_t shutdown_sleep;
135 struct device *parent; 135 struct device *dev; /* device assigned to this card */
136 struct device *dev; 136#ifndef CONFIG_SYSFS_DEPRECATED
137 struct device *card_dev; /* cardX object for sysfs */
138#endif
137 139
138#ifdef CONFIG_PM 140#ifdef CONFIG_PM
139 unsigned int power_state; /* power state */ 141 unsigned int power_state; /* power state */
@@ -191,6 +193,16 @@ struct snd_minor {
191 struct device *dev; /* device for sysfs */ 193 struct device *dev; /* device for sysfs */
192}; 194};
193 195
196/* return a device pointer linked to each sound device as a parent */
197static inline struct device *snd_card_get_device_link(struct snd_card *card)
198{
199#ifdef CONFIG_SYSFS_DEPRECATED
200 return card ? card->dev : NULL;
201#else
202 return card ? card->card_dev : NULL;
203#endif
204}
205
194/* sound.c */ 206/* sound.c */
195 207
196extern int snd_major; 208extern int snd_major;
@@ -257,7 +269,7 @@ int snd_card_file_add(struct snd_card *card, struct file *file);
257int snd_card_file_remove(struct snd_card *card, struct file *file); 269int snd_card_file_remove(struct snd_card *card, struct file *file);
258 270
259#ifndef snd_card_set_dev 271#ifndef snd_card_set_dev
260#define snd_card_set_dev(card,devptr) ((card)->parent = (devptr)) 272#define snd_card_set_dev(card,devptr) ((card)->dev = (devptr))
261#endif 273#endif
262 274
263/* device.c */ 275/* device.c */
diff --git a/ipc/shm.c b/ipc/shm.c
index 6d16bb6de7d2..f8e10a25ad7d 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -279,7 +279,7 @@ static int newseg (struct ipc_namespace *ns, key_t key, int shmflg, size_t size)
279 if (size < SHMMIN || size > ns->shm_ctlmax) 279 if (size < SHMMIN || size > ns->shm_ctlmax)
280 return -EINVAL; 280 return -EINVAL;
281 281
282 if (ns->shm_tot + numpages >= ns->shm_ctlall) 282 if (ns->shm_tot + numpages > ns->shm_ctlall)
283 return -ENOSPC; 283 return -ENOSPC;
284 284
285 shp = ipc_rcu_alloc(sizeof(*shp)); 285 shp = ipc_rcu_alloc(sizeof(*shp));
diff --git a/kernel/exit.c b/kernel/exit.c
index 35401720635b..fec12eb12471 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -938,8 +938,8 @@ fastcall NORET_TYPE void do_exit(long code)
938 938
939 tsk->exit_code = code; 939 tsk->exit_code = code;
940 proc_exit_connector(tsk); 940 proc_exit_connector(tsk);
941 exit_notify(tsk);
942 exit_task_namespaces(tsk); 941 exit_task_namespaces(tsk);
942 exit_notify(tsk);
943#ifdef CONFIG_NUMA 943#ifdef CONFIG_NUMA
944 mpol_free(tsk->mempolicy); 944 mpol_free(tsk->mempolicy);
945 tsk->mempolicy = NULL; 945 tsk->mempolicy = NULL;
diff --git a/kernel/fork.c b/kernel/fork.c
index fc723e595cd5..d57118da73ff 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1313,7 +1313,7 @@ noinline struct pt_regs * __devinit __attribute__((weak)) idle_regs(struct pt_re
1313 return regs; 1313 return regs;
1314} 1314}
1315 1315
1316struct task_struct * __devinit fork_idle(int cpu) 1316struct task_struct * __cpuinit fork_idle(int cpu)
1317{ 1317{
1318 struct task_struct *task; 1318 struct task_struct *task;
1319 struct pt_regs regs; 1319 struct pt_regs regs;
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index b385878c6e80..8b961adc3bd2 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -315,6 +315,9 @@ int setup_irq(unsigned int irq, struct irqaction *new)
315 /* Undo nested disables: */ 315 /* Undo nested disables: */
316 desc->depth = 1; 316 desc->depth = 1;
317 } 317 }
318 /* Reset broken irq detection when installing new handler */
319 desc->irq_count = 0;
320 desc->irqs_unhandled = 0;
318 spin_unlock_irqrestore(&desc->lock, flags); 321 spin_unlock_irqrestore(&desc->lock, flags);
319 322
320 new->irq = irq; 323 new->irq = irq;
diff --git a/kernel/kprobes.c b/kernel/kprobes.c
index 17ec4afb0994..6fcf8dd148d0 100644
--- a/kernel/kprobes.c
+++ b/kernel/kprobes.c
@@ -87,6 +87,12 @@ struct kprobe_insn_page {
87 int ngarbage; 87 int ngarbage;
88}; 88};
89 89
90enum kprobe_slot_state {
91 SLOT_CLEAN = 0,
92 SLOT_DIRTY = 1,
93 SLOT_USED = 2,
94};
95
90static struct hlist_head kprobe_insn_pages; 96static struct hlist_head kprobe_insn_pages;
91static int kprobe_garbage_slots; 97static int kprobe_garbage_slots;
92static int collect_garbage_slots(void); 98static int collect_garbage_slots(void);
@@ -130,8 +136,8 @@ kprobe_opcode_t __kprobes *get_insn_slot(void)
130 if (kip->nused < INSNS_PER_PAGE) { 136 if (kip->nused < INSNS_PER_PAGE) {
131 int i; 137 int i;
132 for (i = 0; i < INSNS_PER_PAGE; i++) { 138 for (i = 0; i < INSNS_PER_PAGE; i++) {
133 if (!kip->slot_used[i]) { 139 if (kip->slot_used[i] == SLOT_CLEAN) {
134 kip->slot_used[i] = 1; 140 kip->slot_used[i] = SLOT_USED;
135 kip->nused++; 141 kip->nused++;
136 return kip->insns + (i * MAX_INSN_SIZE); 142 return kip->insns + (i * MAX_INSN_SIZE);
137 } 143 }
@@ -163,8 +169,8 @@ kprobe_opcode_t __kprobes *get_insn_slot(void)
163 } 169 }
164 INIT_HLIST_NODE(&kip->hlist); 170 INIT_HLIST_NODE(&kip->hlist);
165 hlist_add_head(&kip->hlist, &kprobe_insn_pages); 171 hlist_add_head(&kip->hlist, &kprobe_insn_pages);
166 memset(kip->slot_used, 0, INSNS_PER_PAGE); 172 memset(kip->slot_used, SLOT_CLEAN, INSNS_PER_PAGE);
167 kip->slot_used[0] = 1; 173 kip->slot_used[0] = SLOT_USED;
168 kip->nused = 1; 174 kip->nused = 1;
169 kip->ngarbage = 0; 175 kip->ngarbage = 0;
170 return kip->insns; 176 return kip->insns;
@@ -173,7 +179,7 @@ kprobe_opcode_t __kprobes *get_insn_slot(void)
173/* Return 1 if all garbages are collected, otherwise 0. */ 179/* Return 1 if all garbages are collected, otherwise 0. */
174static int __kprobes collect_one_slot(struct kprobe_insn_page *kip, int idx) 180static int __kprobes collect_one_slot(struct kprobe_insn_page *kip, int idx)
175{ 181{
176 kip->slot_used[idx] = 0; 182 kip->slot_used[idx] = SLOT_CLEAN;
177 kip->nused--; 183 kip->nused--;
178 if (kip->nused == 0) { 184 if (kip->nused == 0) {
179 /* 185 /*
@@ -212,7 +218,7 @@ static int __kprobes collect_garbage_slots(void)
212 continue; 218 continue;
213 kip->ngarbage = 0; /* we will collect all garbages */ 219 kip->ngarbage = 0; /* we will collect all garbages */
214 for (i = 0; i < INSNS_PER_PAGE; i++) { 220 for (i = 0; i < INSNS_PER_PAGE; i++) {
215 if (kip->slot_used[i] == -1 && 221 if (kip->slot_used[i] == SLOT_DIRTY &&
216 collect_one_slot(kip, i)) 222 collect_one_slot(kip, i))
217 break; 223 break;
218 } 224 }
@@ -232,7 +238,7 @@ void __kprobes free_insn_slot(kprobe_opcode_t * slot, int dirty)
232 slot < kip->insns + (INSNS_PER_PAGE * MAX_INSN_SIZE)) { 238 slot < kip->insns + (INSNS_PER_PAGE * MAX_INSN_SIZE)) {
233 int i = (slot - kip->insns) / MAX_INSN_SIZE; 239 int i = (slot - kip->insns) / MAX_INSN_SIZE;
234 if (dirty) { 240 if (dirty) {
235 kip->slot_used[i] = -1; 241 kip->slot_used[i] = SLOT_DIRTY;
236 kip->ngarbage++; 242 kip->ngarbage++;
237 } else { 243 } else {
238 collect_one_slot(kip, i); 244 collect_one_slot(kip, i);
diff --git a/kernel/pid.c b/kernel/pid.c
index 2efe9d8d367b..78f2aee90f54 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -197,7 +197,7 @@ fastcall void free_pid(struct pid *pid)
197 hlist_del_rcu(&pid->pid_chain); 197 hlist_del_rcu(&pid->pid_chain);
198 spin_unlock_irqrestore(&pidmap_lock, flags); 198 spin_unlock_irqrestore(&pidmap_lock, flags);
199 199
200 free_pidmap(current->nsproxy->pid_ns, pid->nr); 200 free_pidmap(&init_pid_ns, pid->nr);
201 call_rcu(&pid->rcu, delayed_put_pid); 201 call_rcu(&pid->rcu, delayed_put_pid);
202} 202}
203 203
diff --git a/kernel/profile.c b/kernel/profile.c
index a6574a18514e..d6579d511069 100644
--- a/kernel/profile.c
+++ b/kernel/profile.c
@@ -331,7 +331,6 @@ out:
331 local_irq_restore(flags); 331 local_irq_restore(flags);
332 put_cpu(); 332 put_cpu();
333} 333}
334EXPORT_SYMBOL_GPL(profile_hits);
335 334
336static int __devinit profile_cpu_callback(struct notifier_block *info, 335static int __devinit profile_cpu_callback(struct notifier_block *info,
337 unsigned long action, void *__cpu) 336 unsigned long action, void *__cpu)
@@ -401,6 +400,8 @@ void profile_hits(int type, void *__pc, unsigned int nr_hits)
401} 400}
402#endif /* !CONFIG_SMP */ 401#endif /* !CONFIG_SMP */
403 402
403EXPORT_SYMBOL_GPL(profile_hits);
404
404void profile_tick(int type) 405void profile_tick(int type)
405{ 406{
406 struct pt_regs *regs = get_irq_regs(); 407 struct pt_regs *regs = get_irq_regs();
diff --git a/kernel/sys.c b/kernel/sys.c
index c7675c1bfdf2..6e2101dec0fc 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -323,11 +323,18 @@ EXPORT_SYMBOL_GPL(blocking_notifier_chain_unregister);
323int blocking_notifier_call_chain(struct blocking_notifier_head *nh, 323int blocking_notifier_call_chain(struct blocking_notifier_head *nh,
324 unsigned long val, void *v) 324 unsigned long val, void *v)
325{ 325{
326 int ret; 326 int ret = NOTIFY_DONE;
327 327
328 down_read(&nh->rwsem); 328 /*
329 ret = notifier_call_chain(&nh->head, val, v); 329 * We check the head outside the lock, but if this access is
330 up_read(&nh->rwsem); 330 * racy then it does not matter what the result of the test
331 * is, we re-check the list after having taken the lock anyway:
332 */
333 if (rcu_dereference(nh->head)) {
334 down_read(&nh->rwsem);
335 ret = notifier_call_chain(&nh->head, val, v);
336 up_read(&nh->rwsem);
337 }
331 return ret; 338 return ret;
332} 339}
333 340
diff --git a/mm/filemap_xip.c b/mm/filemap_xip.c
index 45b3553865cf..9dd9fbb75139 100644
--- a/mm/filemap_xip.c
+++ b/mm/filemap_xip.c
@@ -183,7 +183,7 @@ __xip_unmap (struct address_space * mapping,
183 address = vma->vm_start + 183 address = vma->vm_start +
184 ((pgoff - vma->vm_pgoff) << PAGE_SHIFT); 184 ((pgoff - vma->vm_pgoff) << PAGE_SHIFT);
185 BUG_ON(address < vma->vm_start || address >= vma->vm_end); 185 BUG_ON(address < vma->vm_start || address >= vma->vm_end);
186 page = ZERO_PAGE(address); 186 page = ZERO_PAGE(0);
187 pte = page_check_address(page, mm, address, &ptl); 187 pte = page_check_address(page, mm, address, &ptl);
188 if (pte) { 188 if (pte) {
189 /* Nuke the page table entry. */ 189 /* Nuke the page table entry. */
@@ -246,7 +246,7 @@ xip_file_nopage(struct vm_area_struct * area,
246 __xip_unmap(mapping, pgoff); 246 __xip_unmap(mapping, pgoff);
247 } else { 247 } else {
248 /* not shared and writable, use ZERO_PAGE() */ 248 /* not shared and writable, use ZERO_PAGE() */
249 page = ZERO_PAGE(address); 249 page = ZERO_PAGE(0);
250 } 250 }
251 251
252out: 252out:
diff --git a/mm/memory.c b/mm/memory.c
index af227d26e104..ef09f0acb1d8 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2606,8 +2606,15 @@ static int __init gate_vma_init(void)
2606 gate_vma.vm_mm = NULL; 2606 gate_vma.vm_mm = NULL;
2607 gate_vma.vm_start = FIXADDR_USER_START; 2607 gate_vma.vm_start = FIXADDR_USER_START;
2608 gate_vma.vm_end = FIXADDR_USER_END; 2608 gate_vma.vm_end = FIXADDR_USER_END;
2609 gate_vma.vm_page_prot = PAGE_READONLY; 2609 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
2610 gate_vma.vm_flags = 0; 2610 gate_vma.vm_page_prot = __P101;
2611 /*
2612 * Make sure the vDSO gets into every core dump.
2613 * Dumping its contents makes post-mortem fully interpretable later
2614 * without matching up the same kernel and hardware config to see
2615 * what PC values meant.
2616 */
2617 gate_vma.vm_flags |= VM_ALWAYSDUMP;
2611 return 0; 2618 return 0;
2612} 2619}
2613__initcall(gate_vma_init); 2620__initcall(gate_vma_init);
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index da9463946556..c2aec0e1090d 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -884,6 +884,10 @@ asmlinkage long sys_mbind(unsigned long start, unsigned long len,
884 err = get_nodes(&nodes, nmask, maxnode); 884 err = get_nodes(&nodes, nmask, maxnode);
885 if (err) 885 if (err)
886 return err; 886 return err;
887#ifdef CONFIG_CPUSETS
888 /* Restrict the nodes to the allowed nodes in the cpuset */
889 nodes_and(nodes, nodes, current->mems_allowed);
890#endif
887 return do_mbind(start, len, mode, &nodes, flags); 891 return do_mbind(start, len, mode, &nodes, flags);
888} 892}
889 893
diff --git a/mm/mmap.c b/mm/mmap.c
index 9717337293c3..cc3a20819457 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1477,6 +1477,7 @@ static int acct_stack_growth(struct vm_area_struct * vma, unsigned long size, un
1477{ 1477{
1478 struct mm_struct *mm = vma->vm_mm; 1478 struct mm_struct *mm = vma->vm_mm;
1479 struct rlimit *rlim = current->signal->rlim; 1479 struct rlimit *rlim = current->signal->rlim;
1480 unsigned long new_start;
1480 1481
1481 /* address space limit tests */ 1482 /* address space limit tests */
1482 if (!may_expand_vm(mm, grow)) 1483 if (!may_expand_vm(mm, grow))
@@ -1496,6 +1497,12 @@ static int acct_stack_growth(struct vm_area_struct * vma, unsigned long size, un
1496 return -ENOMEM; 1497 return -ENOMEM;
1497 } 1498 }
1498 1499
1500 /* Check to ensure the stack will not grow into a hugetlb-only region */
1501 new_start = (vma->vm_flags & VM_GROWSUP) ? vma->vm_start :
1502 vma->vm_end - size;
1503 if (is_hugepage_only_range(vma->vm_mm, new_start, size))
1504 return -EFAULT;
1505
1499 /* 1506 /*
1500 * Overcommit.. This must be the final test, as it will 1507 * Overcommit.. This must be the final test, as it will
1501 * update security statistics. 1508 * update security statistics.
diff --git a/mm/mremap.c b/mm/mremap.c
index 9c769fa29f32..5d4bd4f95b8e 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -105,7 +105,6 @@ static void move_ptes(struct vm_area_struct *vma, pmd_t *old_pmd,
105 if (pte_none(*old_pte)) 105 if (pte_none(*old_pte))
106 continue; 106 continue;
107 pte = ptep_clear_flush(vma, old_addr, old_pte); 107 pte = ptep_clear_flush(vma, old_addr, old_pte);
108 /* ZERO_PAGE can be dependant on virtual addr */
109 pte = move_pte(pte, new_vma->vm_page_prot, old_addr, new_addr); 108 pte = move_pte(pte, new_vma->vm_page_prot, old_addr, new_addr);
110 set_pte_at(mm, new_addr, new_pte, pte); 109 set_pte_at(mm, new_addr, new_pte, pte);
111 } 110 }
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 1d2fc89ca56d..be0efbde4994 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -133,11 +133,9 @@ get_dirty_limits(long *pbackground, long *pdirty,
133 133
134#ifdef CONFIG_HIGHMEM 134#ifdef CONFIG_HIGHMEM
135 /* 135 /*
136 * If this mapping can only allocate from low memory, 136 * We always exclude high memory from our count.
137 * we exclude high memory from our count.
138 */ 137 */
139 if (mapping && !(mapping_gfp_mask(mapping) & __GFP_HIGHMEM)) 138 available_memory -= totalhigh_pages;
140 available_memory -= totalhigh_pages;
141#endif 139#endif
142 140
143 141
@@ -526,28 +524,25 @@ static struct notifier_block __cpuinitdata ratelimit_nb = {
526}; 524};
527 525
528/* 526/*
529 * If the machine has a large highmem:lowmem ratio then scale back the default 527 * Called early on to tune the page writeback dirty limits.
530 * dirty memory thresholds: allowing too much dirty highmem pins an excessive 528 *
531 * number of buffer_heads. 529 * We used to scale dirty pages according to how total memory
530 * related to pages that could be allocated for buffers (by
531 * comparing nr_free_buffer_pages() to vm_total_pages.
532 *
533 * However, that was when we used "dirty_ratio" to scale with
534 * all memory, and we don't do that any more. "dirty_ratio"
535 * is now applied to total non-HIGHPAGE memory (by subtracting
536 * totalhigh_pages from vm_total_pages), and as such we can't
537 * get into the old insane situation any more where we had
538 * large amounts of dirty pages compared to a small amount of
539 * non-HIGHMEM memory.
540 *
541 * But we might still want to scale the dirty_ratio by how
542 * much memory the box has..
532 */ 543 */
533void __init page_writeback_init(void) 544void __init page_writeback_init(void)
534{ 545{
535 long buffer_pages = nr_free_buffer_pages();
536 long correction;
537
538 correction = (100 * 4 * buffer_pages) / vm_total_pages;
539
540 if (correction < 100) {
541 dirty_background_ratio *= correction;
542 dirty_background_ratio /= 100;
543 vm_dirty_ratio *= correction;
544 vm_dirty_ratio /= 100;
545
546 if (dirty_background_ratio <= 0)
547 dirty_background_ratio = 1;
548 if (vm_dirty_ratio <= 0)
549 vm_dirty_ratio = 1;
550 }
551 mod_timer(&wb_timer, jiffies + dirty_writeback_interval); 546 mod_timer(&wb_timer, jiffies + dirty_writeback_interval);
552 writeback_set_ratelimit(); 547 writeback_set_ratelimit();
553 register_cpu_notifier(&ratelimit_nb); 548 register_cpu_notifier(&ratelimit_nb);
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index fc5b5442e942..2c606cc922a5 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -989,8 +989,7 @@ int zone_watermark_ok(struct zone *z, int order, unsigned long mark,
989 int classzone_idx, int alloc_flags) 989 int classzone_idx, int alloc_flags)
990{ 990{
991 /* free_pages my go negative - that's OK */ 991 /* free_pages my go negative - that's OK */
992 unsigned long min = mark; 992 long min = mark, free_pages = z->free_pages - (1 << order) + 1;
993 long free_pages = z->free_pages - (1 << order) + 1;
994 int o; 993 int o;
995 994
996 if (alloc_flags & ALLOC_HIGH) 995 if (alloc_flags & ALLOC_HIGH)
diff --git a/mm/truncate.c b/mm/truncate.c
index 6c79ca4a1ca7..5df947de7654 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -51,15 +51,22 @@ static inline void truncate_partial_page(struct page *page, unsigned partial)
51 do_invalidatepage(page, partial); 51 do_invalidatepage(page, partial);
52} 52}
53 53
54/*
55 * This cancels just the dirty bit on the kernel page itself, it
56 * does NOT actually remove dirty bits on any mmap's that may be
57 * around. It also leaves the page tagged dirty, so any sync
58 * activity will still find it on the dirty lists, and in particular,
59 * clear_page_dirty_for_io() will still look at the dirty bits in
60 * the VM.
61 *
62 * Doing this should *normally* only ever be done when a page
63 * is truncated, and is not actually mapped anywhere at all. However,
64 * fs/buffer.c does this when it notices that somebody has cleaned
65 * out all the buffers on a page without actually doing it through
66 * the VM. Can you say "ext3 is horribly ugly"? Tought you could.
67 */
54void cancel_dirty_page(struct page *page, unsigned int account_size) 68void cancel_dirty_page(struct page *page, unsigned int account_size)
55{ 69{
56 /* If we're cancelling the page, it had better not be mapped any more */
57 if (page_mapped(page)) {
58 static unsigned int warncount;
59
60 WARN_ON(++warncount < 5);
61 }
62
63 if (TestClearPageDirty(page)) { 70 if (TestClearPageDirty(page)) {
64 struct address_space *mapping = page->mapping; 71 struct address_space *mapping = page->mapping;
65 if (mapping && mapping_cap_account_dirty(mapping)) { 72 if (mapping && mapping_cap_account_dirty(mapping)) {
@@ -422,7 +429,6 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
422 pagevec_release(&pvec); 429 pagevec_release(&pvec);
423 cond_resched(); 430 cond_resched();
424 } 431 }
425 WARN_ON_ONCE(ret);
426 return ret; 432 return ret;
427} 433}
428EXPORT_SYMBOL_GPL(invalidate_inode_pages2_range); 434EXPORT_SYMBOL_GPL(invalidate_inode_pages2_range);
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
index 29a8fa4d3728..f8c25d500155 100644
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
@@ -585,6 +585,12 @@ static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_
585 goto done; 585 goto done;
586 } 586 }
587 587
588 if (la->l2_psm > 0 && btohs(la->l2_psm) < 0x1001 &&
589 !capable(CAP_NET_BIND_SERVICE)) {
590 err = -EACCES;
591 goto done;
592 }
593
588 write_lock_bh(&l2cap_sk_list.lock); 594 write_lock_bh(&l2cap_sk_list.lock);
589 595
590 if (la->l2_psm && __l2cap_get_sock_by_addr(la->l2_psm, &la->l2_bdaddr)) { 596 if (la->l2_psm && __l2cap_get_sock_by_addr(la->l2_psm, &la->l2_bdaddr)) {
@@ -2150,8 +2156,8 @@ static ssize_t l2cap_sysfs_show(struct class *dev, char *buf)
2150 2156
2151 str += sprintf(str, "%s %s %d %d 0x%4.4x 0x%4.4x %d %d 0x%x\n", 2157 str += sprintf(str, "%s %s %d %d 0x%4.4x 0x%4.4x %d %d 0x%x\n",
2152 batostr(&bt_sk(sk)->src), batostr(&bt_sk(sk)->dst), 2158 batostr(&bt_sk(sk)->src), batostr(&bt_sk(sk)->dst),
2153 sk->sk_state, pi->psm, pi->scid, pi->dcid, pi->imtu, 2159 sk->sk_state, btohs(pi->psm), pi->scid, pi->dcid,
2154 pi->omtu, pi->link_mode); 2160 pi->imtu, pi->omtu, pi->link_mode);
2155 } 2161 }
2156 2162
2157 read_unlock_bh(&l2cap_sk_list.lock); 2163 read_unlock_bh(&l2cap_sk_list.lock);
diff --git a/net/core/flow.c b/net/core/flow.c
index d137f971f97d..5d25697920b1 100644
--- a/net/core/flow.c
+++ b/net/core/flow.c
@@ -231,22 +231,16 @@ nocache:
231 231
232 err = resolver(key, family, dir, &obj, &obj_ref); 232 err = resolver(key, family, dir, &obj, &obj_ref);
233 233
234 if (fle) { 234 if (fle && !err) {
235 if (err) { 235 fle->genid = atomic_read(&flow_cache_genid);
236 /* Force security policy check on next lookup */ 236
237 *head = fle->next; 237 if (fle->object)
238 flow_entry_kill(cpu, fle); 238 atomic_dec(fle->object_ref);
239 } else { 239
240 fle->genid = atomic_read(&flow_cache_genid); 240 fle->object = obj;
241 241 fle->object_ref = obj_ref;
242 if (fle->object) 242 if (obj)
243 atomic_dec(fle->object_ref); 243 atomic_inc(fle->object_ref);
244
245 fle->object = obj;
246 fle->object_ref = obj_ref;
247 if (obj)
248 atomic_inc(fle->object_ref);
249 }
250 } 244 }
251 local_bh_enable(); 245 local_bh_enable();
252 246
diff --git a/net/dccp/output.c b/net/dccp/output.c
index 824569659083..3435542e9652 100644
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -124,7 +124,7 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
124 DCCP_INC_STATS(DCCP_MIB_OUTSEGS); 124 DCCP_INC_STATS(DCCP_MIB_OUTSEGS);
125 125
126 memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); 126 memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
127 err = icsk->icsk_af_ops->queue_xmit(skb, sk, 0); 127 err = icsk->icsk_af_ops->queue_xmit(skb, 0);
128 return net_xmit_eval(err); 128 return net_xmit_eval(err);
129 } 129 }
130 return -ENOBUFS; 130 return -ENOBUFS;
@@ -396,7 +396,7 @@ int dccp_send_reset(struct sock *sk, enum dccp_reset_codes code)
396 code); 396 code);
397 if (skb != NULL) { 397 if (skb != NULL) {
398 memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); 398 memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
399 err = inet_csk(sk)->icsk_af_ops->queue_xmit(skb, sk, 0); 399 err = inet_csk(sk)->icsk_af_ops->queue_xmit(skb, 0);
400 return net_xmit_eval(err); 400 return net_xmit_eval(err);
401 } 401 }
402 } 402 }
diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c
index fc6f3c023a54..ed083ab455b7 100644
--- a/net/decnet/dn_dev.c
+++ b/net/decnet/dn_dev.c
@@ -1145,16 +1145,23 @@ struct dn_dev *dn_dev_create(struct net_device *dev, int *err)
1145 init_timer(&dn_db->timer); 1145 init_timer(&dn_db->timer);
1146 1146
1147 dn_db->uptime = jiffies; 1147 dn_db->uptime = jiffies;
1148
1149 dn_db->neigh_parms = neigh_parms_alloc(dev, &dn_neigh_table);
1150 if (!dn_db->neigh_parms) {
1151 dev->dn_ptr = NULL;
1152 kfree(dn_db);
1153 return NULL;
1154 }
1155
1148 if (dn_db->parms.up) { 1156 if (dn_db->parms.up) {
1149 if (dn_db->parms.up(dev) < 0) { 1157 if (dn_db->parms.up(dev) < 0) {
1158 neigh_parms_release(&dn_neigh_table, dn_db->neigh_parms);
1150 dev->dn_ptr = NULL; 1159 dev->dn_ptr = NULL;
1151 kfree(dn_db); 1160 kfree(dn_db);
1152 return NULL; 1161 return NULL;
1153 } 1162 }
1154 } 1163 }
1155 1164
1156 dn_db->neigh_parms = neigh_parms_alloc(dev, &dn_neigh_table);
1157
1158 dn_dev_sysctl_register(dev, &dn_db->parms); 1165 dn_dev_sysctl_register(dev, &dn_db->parms);
1159 1166
1160 dn_dev_set_timer(dev); 1167 dn_dev_set_timer(dev);
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
index cfb249cc0a58..1e589b91605e 100644
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
@@ -1989,6 +1989,10 @@ static struct node *fib_trie_get_next(struct fib_trie_iter *iter)
1989 unsigned cindex = iter->index; 1989 unsigned cindex = iter->index;
1990 struct tnode *p; 1990 struct tnode *p;
1991 1991
1992 /* A single entry routing table */
1993 if (!tn)
1994 return NULL;
1995
1992 pr_debug("get_next iter={node=%p index=%d depth=%d}\n", 1996 pr_debug("get_next iter={node=%p index=%d depth=%d}\n",
1993 iter->tnode, iter->index, iter->depth); 1997 iter->tnode, iter->index, iter->depth);
1994rescan: 1998rescan:
@@ -2037,11 +2041,18 @@ static struct node *fib_trie_get_first(struct fib_trie_iter *iter,
2037 if(!iter) 2041 if(!iter)
2038 return NULL; 2042 return NULL;
2039 2043
2040 if (n && IS_TNODE(n)) { 2044 if (n) {
2041 iter->tnode = (struct tnode *) n; 2045 if (IS_TNODE(n)) {
2042 iter->trie = t; 2046 iter->tnode = (struct tnode *) n;
2043 iter->index = 0; 2047 iter->trie = t;
2044 iter->depth = 1; 2048 iter->index = 0;
2049 iter->depth = 1;
2050 } else {
2051 iter->tnode = NULL;
2052 iter->trie = t;
2053 iter->index = 0;
2054 iter->depth = 0;
2055 }
2045 return n; 2056 return n;
2046 } 2057 }
2047 return NULL; 2058 return NULL;
@@ -2279,16 +2290,17 @@ static int fib_trie_seq_show(struct seq_file *seq, void *v)
2279 if (v == SEQ_START_TOKEN) 2290 if (v == SEQ_START_TOKEN)
2280 return 0; 2291 return 0;
2281 2292
2293 if (!NODE_PARENT(n)) {
2294 if (iter->trie == trie_local)
2295 seq_puts(seq, "<local>:\n");
2296 else
2297 seq_puts(seq, "<main>:\n");
2298 }
2299
2282 if (IS_TNODE(n)) { 2300 if (IS_TNODE(n)) {
2283 struct tnode *tn = (struct tnode *) n; 2301 struct tnode *tn = (struct tnode *) n;
2284 __be32 prf = htonl(MASK_PFX(tn->key, tn->pos)); 2302 __be32 prf = htonl(MASK_PFX(tn->key, tn->pos));
2285 2303
2286 if (!NODE_PARENT(n)) {
2287 if (iter->trie == trie_local)
2288 seq_puts(seq, "<local>:\n");
2289 else
2290 seq_puts(seq, "<main>:\n");
2291 }
2292 seq_indent(seq, iter->depth-1); 2304 seq_indent(seq, iter->depth-1);
2293 seq_printf(seq, " +-- %d.%d.%d.%d/%d %d %d %d\n", 2305 seq_printf(seq, " +-- %d.%d.%d.%d/%d %d %d %d\n",
2294 NIPQUAD(prf), tn->pos, tn->bits, tn->full_children, 2306 NIPQUAD(prf), tn->pos, tn->bits, tn->full_children,
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index f071f84808fa..a0f2008584bc 100644
--- a/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -281,8 +281,9 @@ int ip_output(struct sk_buff *skb)
281 !(IPCB(skb)->flags & IPSKB_REROUTED)); 281 !(IPCB(skb)->flags & IPSKB_REROUTED));
282} 282}
283 283
284int ip_queue_xmit(struct sk_buff *skb, struct sock *sk, int ipfragok) 284int ip_queue_xmit(struct sk_buff *skb, int ipfragok)
285{ 285{
286 struct sock *sk = skb->sk;
286 struct inet_sock *inet = inet_sk(sk); 287 struct inet_sock *inet = inet_sk(sk);
287 struct ip_options *opt = inet->opt; 288 struct ip_options *opt = inet->opt;
288 struct rtable *rt; 289 struct rtable *rt;
diff --git a/net/ipv4/netfilter/Makefile b/net/ipv4/netfilter/Makefile
index 15e741aeb291..16d177b71bf8 100644
--- a/net/ipv4/netfilter/Makefile
+++ b/net/ipv4/netfilter/Makefile
@@ -4,6 +4,14 @@
4 4
5# objects for the standalone - connection tracking / NAT 5# objects for the standalone - connection tracking / NAT
6ip_conntrack-objs := ip_conntrack_standalone.o ip_conntrack_core.o ip_conntrack_proto_generic.o ip_conntrack_proto_tcp.o ip_conntrack_proto_udp.o ip_conntrack_proto_icmp.o 6ip_conntrack-objs := ip_conntrack_standalone.o ip_conntrack_core.o ip_conntrack_proto_generic.o ip_conntrack_proto_tcp.o ip_conntrack_proto_udp.o ip_conntrack_proto_icmp.o
7# objects for l3 independent conntrack
8nf_conntrack_ipv4-objs := nf_conntrack_l3proto_ipv4.o nf_conntrack_proto_icmp.o
9ifeq ($(CONFIG_NF_CONNTRACK_PROC_COMPAT),y)
10ifeq ($(CONFIG_PROC_FS),y)
11nf_conntrack_ipv4-objs += nf_conntrack_l3proto_ipv4_compat.o
12endif
13endif
14
7ip_nat-objs := ip_nat_core.o ip_nat_helper.o ip_nat_proto_unknown.o ip_nat_proto_tcp.o ip_nat_proto_udp.o ip_nat_proto_icmp.o 15ip_nat-objs := ip_nat_core.o ip_nat_helper.o ip_nat_proto_unknown.o ip_nat_proto_tcp.o ip_nat_proto_udp.o ip_nat_proto_icmp.o
8nf_nat-objs := nf_nat_core.o nf_nat_helper.o nf_nat_proto_unknown.o nf_nat_proto_tcp.o nf_nat_proto_udp.o nf_nat_proto_icmp.o 16nf_nat-objs := nf_nat_core.o nf_nat_helper.o nf_nat_proto_unknown.o nf_nat_proto_tcp.o nf_nat_proto_udp.o nf_nat_proto_icmp.o
9ifneq ($(CONFIG_NF_NAT),) 17ifneq ($(CONFIG_NF_NAT),)
@@ -20,6 +28,8 @@ ip_nat_h323-objs := ip_nat_helper_h323.o
20 28
21# connection tracking 29# connection tracking
22obj-$(CONFIG_IP_NF_CONNTRACK) += ip_conntrack.o 30obj-$(CONFIG_IP_NF_CONNTRACK) += ip_conntrack.o
31obj-$(CONFIG_NF_CONNTRACK_IPV4) += nf_conntrack_ipv4.o
32
23obj-$(CONFIG_IP_NF_NAT) += ip_nat.o 33obj-$(CONFIG_IP_NF_NAT) += ip_nat.o
24obj-$(CONFIG_NF_NAT) += nf_nat.o 34obj-$(CONFIG_NF_NAT) += nf_nat.o
25 35
@@ -106,13 +116,3 @@ obj-$(CONFIG_IP_NF_ARPFILTER) += arptable_filter.o
106 116
107obj-$(CONFIG_IP_NF_QUEUE) += ip_queue.o 117obj-$(CONFIG_IP_NF_QUEUE) += ip_queue.o
108 118
109# objects for l3 independent conntrack
110nf_conntrack_ipv4-objs := nf_conntrack_l3proto_ipv4.o nf_conntrack_proto_icmp.o
111ifeq ($(CONFIG_NF_CONNTRACK_PROC_COMPAT),y)
112ifeq ($(CONFIG_PROC_FS),y)
113nf_conntrack_ipv4-objs += nf_conntrack_l3proto_ipv4_compat.o
114endif
115endif
116
117# l3 independent conntrack
118obj-$(CONFIG_NF_CONNTRACK_IPV4) += nf_conntrack_ipv4.o
diff --git a/net/ipv4/netfilter/ip_conntrack_netlink.c b/net/ipv4/netfilter/ip_conntrack_netlink.c
index 5fcf91d617cd..7f70b0886b83 100644
--- a/net/ipv4/netfilter/ip_conntrack_netlink.c
+++ b/net/ipv4/netfilter/ip_conntrack_netlink.c
@@ -374,9 +374,11 @@ static int ctnetlink_conntrack_event(struct notifier_block *this,
374 && ctnetlink_dump_helpinfo(skb, ct) < 0) 374 && ctnetlink_dump_helpinfo(skb, ct) < 0)
375 goto nfattr_failure; 375 goto nfattr_failure;
376 376
377#ifdef CONFIG_IP_NF_CONNTRACK_MARK
377 if ((events & IPCT_MARK || ct->mark) 378 if ((events & IPCT_MARK || ct->mark)
378 && ctnetlink_dump_mark(skb, ct) < 0) 379 && ctnetlink_dump_mark(skb, ct) < 0)
379 goto nfattr_failure; 380 goto nfattr_failure;
381#endif
380 382
381 if (events & IPCT_COUNTER_FILLING && 383 if (events & IPCT_COUNTER_FILLING &&
382 (ctnetlink_dump_counters(skb, ct, IP_CT_DIR_ORIGINAL) < 0 || 384 (ctnetlink_dump_counters(skb, ct, IP_CT_DIR_ORIGINAL) < 0 ||
@@ -959,7 +961,7 @@ ctnetlink_create_conntrack(struct nfattr *cda[],
959 if (cda[CTA_PROTOINFO-1]) { 961 if (cda[CTA_PROTOINFO-1]) {
960 err = ctnetlink_change_protoinfo(ct, cda); 962 err = ctnetlink_change_protoinfo(ct, cda);
961 if (err < 0) 963 if (err < 0)
962 return err; 964 goto err;
963 } 965 }
964 966
965#if defined(CONFIG_IP_NF_CONNTRACK_MARK) 967#if defined(CONFIG_IP_NF_CONNTRACK_MARK)
diff --git a/net/ipv4/netfilter/ip_conntrack_sip.c b/net/ipv4/netfilter/ip_conntrack_sip.c
index 3a26d63eed88..11c588a10e6b 100644
--- a/net/ipv4/netfilter/ip_conntrack_sip.c
+++ b/net/ipv4/netfilter/ip_conntrack_sip.c
@@ -283,10 +283,16 @@ static int skp_epaddr_len(const char *dptr, const char *limit, int *shift)
283{ 283{
284 int s = *shift; 284 int s = *shift;
285 285
286 for (; dptr <= limit && *dptr != '@'; dptr++) 286 /* Search for @, but stop at the end of the line.
287 * We are inside a sip: URI, so we don't need to worry about
288 * continuation lines. */
289 while (dptr <= limit &&
290 *dptr != '@' && *dptr != '\r' && *dptr != '\n') {
287 (*shift)++; 291 (*shift)++;
292 dptr++;
293 }
288 294
289 if (*dptr == '@') { 295 if (dptr <= limit && *dptr == '@') {
290 dptr++; 296 dptr++;
291 (*shift)++; 297 (*shift)++;
292 } else 298 } else
diff --git a/net/ipv4/netfilter/nf_nat_pptp.c b/net/ipv4/netfilter/nf_nat_pptp.c
index 0ae45b79a4eb..5df4fcae3ab6 100644
--- a/net/ipv4/netfilter/nf_nat_pptp.c
+++ b/net/ipv4/netfilter/nf_nat_pptp.c
@@ -72,9 +72,9 @@ static void pptp_nat_expected(struct nf_conn *ct,
72 DEBUGP("we are PAC->PNS\n"); 72 DEBUGP("we are PAC->PNS\n");
73 /* build tuple for PNS->PAC */ 73 /* build tuple for PNS->PAC */
74 t.src.l3num = AF_INET; 74 t.src.l3num = AF_INET;
75 t.src.u3.ip = master->tuplehash[exp->dir].tuple.src.u3.ip; 75 t.src.u3.ip = master->tuplehash[!exp->dir].tuple.src.u3.ip;
76 t.src.u.gre.key = nat_pptp_info->pns_call_id; 76 t.src.u.gre.key = nat_pptp_info->pns_call_id;
77 t.dst.u3.ip = master->tuplehash[exp->dir].tuple.dst.u3.ip; 77 t.dst.u3.ip = master->tuplehash[!exp->dir].tuple.dst.u3.ip;
78 t.dst.u.gre.key = nat_pptp_info->pac_call_id; 78 t.dst.u.gre.key = nat_pptp_info->pac_call_id;
79 t.dst.protonum = IPPROTO_GRE; 79 t.dst.protonum = IPPROTO_GRE;
80 } 80 }
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index c701f6abbfc1..c26076fb890e 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -1011,10 +1011,11 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_
1011 for (j = 0; j < i; j++){ 1011 for (j = 0; j < i; j++){
1012 if (after(ntohl(sp[j].start_seq), 1012 if (after(ntohl(sp[j].start_seq),
1013 ntohl(sp[j+1].start_seq))){ 1013 ntohl(sp[j+1].start_seq))){
1014 sp[j].start_seq = htonl(tp->recv_sack_cache[j+1].start_seq); 1014 struct tcp_sack_block_wire tmp;
1015 sp[j].end_seq = htonl(tp->recv_sack_cache[j+1].end_seq); 1015
1016 sp[j+1].start_seq = htonl(tp->recv_sack_cache[j].start_seq); 1016 tmp = sp[j];
1017 sp[j+1].end_seq = htonl(tp->recv_sack_cache[j].end_seq); 1017 sp[j] = sp[j+1];
1018 sp[j+1] = tmp;
1018 } 1019 }
1019 1020
1020 } 1021 }
@@ -4420,9 +4421,11 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
4420 * But, this leaves one open to an easy denial of 4421 * But, this leaves one open to an easy denial of
4421 * service attack, and SYN cookies can't defend 4422 * service attack, and SYN cookies can't defend
4422 * against this problem. So, we drop the data 4423 * against this problem. So, we drop the data
4423 * in the interest of security over speed. 4424 * in the interest of security over speed unless
4425 * it's still in use.
4424 */ 4426 */
4425 goto discard; 4427 kfree_skb(skb);
4428 return 0;
4426 } 4429 }
4427 goto discard; 4430 goto discard;
4428 4431
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 32c1a972fa31..975f4472af29 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -467,6 +467,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
467 467
468 th = (struct tcphdr *) skb_push(skb, tcp_header_size); 468 th = (struct tcphdr *) skb_push(skb, tcp_header_size);
469 skb->h.th = th; 469 skb->h.th = th;
470 skb_set_owner_w(skb, sk);
470 471
471 /* Build TCP header and checksum it. */ 472 /* Build TCP header and checksum it. */
472 th->source = inet->sport; 473 th->source = inet->sport;
@@ -540,7 +541,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
540 if (after(tcb->end_seq, tp->snd_nxt) || tcb->seq == tcb->end_seq) 541 if (after(tcb->end_seq, tp->snd_nxt) || tcb->seq == tcb->end_seq)
541 TCP_INC_STATS(TCP_MIB_OUTSEGS); 542 TCP_INC_STATS(TCP_MIB_OUTSEGS);
542 543
543 err = icsk->icsk_af_ops->queue_xmit(skb, sk, 0); 544 err = icsk->icsk_af_ops->queue_xmit(skb, 0);
544 if (likely(err <= 0)) 545 if (likely(err <= 0))
545 return err; 546 return err;
546 547
@@ -1650,7 +1651,8 @@ static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *skb, int m
1650 1651
1651 memcpy(skb_put(skb, next_skb_size), next_skb->data, next_skb_size); 1652 memcpy(skb_put(skb, next_skb_size), next_skb->data, next_skb_size);
1652 1653
1653 skb->ip_summed = next_skb->ip_summed; 1654 if (next_skb->ip_summed == CHECKSUM_PARTIAL)
1655 skb->ip_summed = CHECKSUM_PARTIAL;
1654 1656
1655 if (skb->ip_summed != CHECKSUM_PARTIAL) 1657 if (skb->ip_summed != CHECKSUM_PARTIAL)
1656 skb->csum = csum_block_add(skb->csum, next_skb->csum, skb_size); 1658 skb->csum = csum_block_add(skb->csum, next_skb->csum, skb_size);
diff --git a/net/ipv4/tcp_probe.c b/net/ipv4/tcp_probe.c
index f230eeecf092..41c157848181 100644
--- a/net/ipv4/tcp_probe.c
+++ b/net/ipv4/tcp_probe.c
@@ -30,7 +30,7 @@
30 30
31#include <net/tcp.h> 31#include <net/tcp.h>
32 32
33MODULE_AUTHOR("Stephen Hemminger <shemminger@osdl.org>"); 33MODULE_AUTHOR("Stephen Hemminger <shemminger@linux-foundation.org>");
34MODULE_DESCRIPTION("TCP cwnd snooper"); 34MODULE_DESCRIPTION("TCP cwnd snooper");
35MODULE_LICENSE("GPL"); 35MODULE_LICENSE("GPL");
36 36
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 171e5b55d7d6..e3854696988d 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -341,6 +341,7 @@ void in6_dev_finish_destroy(struct inet6_dev *idev)
341static struct inet6_dev * ipv6_add_dev(struct net_device *dev) 341static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
342{ 342{
343 struct inet6_dev *ndev; 343 struct inet6_dev *ndev;
344 struct in6_addr maddr;
344 345
345 ASSERT_RTNL(); 346 ASSERT_RTNL();
346 347
@@ -425,6 +426,11 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
425#endif 426#endif
426 /* protected by rtnl_lock */ 427 /* protected by rtnl_lock */
427 rcu_assign_pointer(dev->ip6_ptr, ndev); 428 rcu_assign_pointer(dev->ip6_ptr, ndev);
429
430 /* Join all-node multicast group */
431 ipv6_addr_all_nodes(&maddr);
432 ipv6_dev_mc_inc(dev, &maddr);
433
428 return ndev; 434 return ndev;
429} 435}
430 436
@@ -3387,7 +3393,7 @@ static void inline ipv6_store_devconf(struct ipv6_devconf *cnf,
3387#ifdef CONFIG_IPV6_ROUTER_PREF 3393#ifdef CONFIG_IPV6_ROUTER_PREF
3388 array[DEVCONF_ACCEPT_RA_RTR_PREF] = cnf->accept_ra_rtr_pref; 3394 array[DEVCONF_ACCEPT_RA_RTR_PREF] = cnf->accept_ra_rtr_pref;
3389 array[DEVCONF_RTR_PROBE_INTERVAL] = cnf->rtr_probe_interval; 3395 array[DEVCONF_RTR_PROBE_INTERVAL] = cnf->rtr_probe_interval;
3390#ifdef CONFIV_IPV6_ROUTE_INFO 3396#ifdef CONFIG_IPV6_ROUTE_INFO
3391 array[DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = cnf->accept_ra_rt_info_max_plen; 3397 array[DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = cnf->accept_ra_rt_info_max_plen;
3392#endif 3398#endif
3393#endif 3399#endif
@@ -3892,7 +3898,7 @@ static struct addrconf_sysctl_table
3892 .proc_handler = &proc_dointvec_jiffies, 3898 .proc_handler = &proc_dointvec_jiffies,
3893 .strategy = &sysctl_jiffies, 3899 .strategy = &sysctl_jiffies,
3894 }, 3900 },
3895#ifdef CONFIV_IPV6_ROUTE_INFO 3901#ifdef CONFIG_IPV6_ROUTE_INFO
3896 { 3902 {
3897 .ctl_name = NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN, 3903 .ctl_name = NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN,
3898 .procname = "accept_ra_rt_info_max_plen", 3904 .procname = "accept_ra_rt_info_max_plen",
diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c
index c700302ad51a..116f94a49071 100644
--- a/net/ipv6/inet6_connection_sock.c
+++ b/net/ipv6/inet6_connection_sock.c
@@ -139,8 +139,9 @@ void inet6_csk_addr2sockaddr(struct sock *sk, struct sockaddr * uaddr)
139 139
140EXPORT_SYMBOL_GPL(inet6_csk_addr2sockaddr); 140EXPORT_SYMBOL_GPL(inet6_csk_addr2sockaddr);
141 141
142int inet6_csk_xmit(struct sk_buff *skb, struct sock *sk, int ipfragok) 142int inet6_csk_xmit(struct sk_buff *skb, int ipfragok)
143{ 143{
144 struct sock *sk = skb->sk;
144 struct inet_sock *inet = inet_sk(sk); 145 struct inet_sock *inet = inet_sk(sk);
145 struct ipv6_pinfo *np = inet6_sk(sk); 146 struct ipv6_pinfo *np = inet6_sk(sk);
146 struct flowi fl; 147 struct flowi fl;
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index a1c231a04ac2..882cde4b4047 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -2258,8 +2258,6 @@ void ipv6_mc_up(struct inet6_dev *idev)
2258 2258
2259void ipv6_mc_init_dev(struct inet6_dev *idev) 2259void ipv6_mc_init_dev(struct inet6_dev *idev)
2260{ 2260{
2261 struct in6_addr maddr;
2262
2263 write_lock_bh(&idev->lock); 2261 write_lock_bh(&idev->lock);
2264 rwlock_init(&idev->mc_lock); 2262 rwlock_init(&idev->mc_lock);
2265 idev->mc_gq_running = 0; 2263 idev->mc_gq_running = 0;
@@ -2275,10 +2273,6 @@ void ipv6_mc_init_dev(struct inet6_dev *idev)
2275 idev->mc_maxdelay = IGMP6_UNSOLICITED_IVAL; 2273 idev->mc_maxdelay = IGMP6_UNSOLICITED_IVAL;
2276 idev->mc_v1_seen = 0; 2274 idev->mc_v1_seen = 0;
2277 write_unlock_bh(&idev->lock); 2275 write_unlock_bh(&idev->lock);
2278
2279 /* Add all-nodes address. */
2280 ipv6_addr_all_nodes(&maddr);
2281 ipv6_dev_mc_inc(idev->dev, &maddr);
2282} 2276}
2283 2277
2284/* 2278/*
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
index 6a9f616de37d..39bb658f3c44 100644
--- a/net/ipv6/ndisc.c
+++ b/net/ipv6/ndisc.c
@@ -1413,6 +1413,13 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh,
1413 return; 1413 return;
1414 } 1414 }
1415 1415
1416 if (!ipv6_addr_equal(&skb->nh.ipv6h->daddr, target) &&
1417 !(ipv6_addr_type(target) & IPV6_ADDR_LINKLOCAL)) {
1418 ND_PRINTK2(KERN_WARNING
1419 "ICMPv6 Redirect: target address is not link-local.\n");
1420 return;
1421 }
1422
1416 ndisc_flow_init(&fl, NDISC_REDIRECT, &saddr_buf, &skb->nh.ipv6h->saddr, 1423 ndisc_flow_init(&fl, NDISC_REDIRECT, &saddr_buf, &skb->nh.ipv6h->saddr,
1417 dev->ifindex); 1424 dev->ifindex);
1418 1425
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 8c3d56871b50..5f0043c30b70 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -2017,6 +2017,7 @@ static inline size_t rt6_nlmsg_size(void)
2017 + nla_total_size(4) /* RTA_IIF */ 2017 + nla_total_size(4) /* RTA_IIF */
2018 + nla_total_size(4) /* RTA_OIF */ 2018 + nla_total_size(4) /* RTA_OIF */
2019 + nla_total_size(4) /* RTA_PRIORITY */ 2019 + nla_total_size(4) /* RTA_PRIORITY */
2020 + RTAX_MAX * nla_total_size(4) /* RTA_METRICS */
2020 + nla_total_size(sizeof(struct rta_cacheinfo)); 2021 + nla_total_size(sizeof(struct rta_cacheinfo));
2021} 2022}
2022 2023
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
index cd10e44db015..80107d4909c5 100644
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -165,7 +165,7 @@ config NF_CONNTRACK_FTP
165 165
166config NF_CONNTRACK_H323 166config NF_CONNTRACK_H323
167 tristate "H.323 protocol support (EXPERIMENTAL)" 167 tristate "H.323 protocol support (EXPERIMENTAL)"
168 depends on EXPERIMENTAL && NF_CONNTRACK 168 depends on EXPERIMENTAL && NF_CONNTRACK && (IPV6 || IPV6=n)
169 help 169 help
170 H.323 is a VoIP signalling protocol from ITU-T. As one of the most 170 H.323 is a VoIP signalling protocol from ITU-T. As one of the most
171 important VoIP protocols, it is widely used by voice hardware and 171 important VoIP protocols, it is widely used by voice hardware and
@@ -628,7 +628,7 @@ config NETFILTER_XT_MATCH_TCPMSS
628 628
629config NETFILTER_XT_MATCH_HASHLIMIT 629config NETFILTER_XT_MATCH_HASHLIMIT
630 tristate '"hashlimit" match support' 630 tristate '"hashlimit" match support'
631 depends on NETFILTER_XTABLES 631 depends on NETFILTER_XTABLES && (IP6_NF_IPTABLES || IP6_NF_IPTABLES=n)
632 help 632 help
633 This option adds a `hashlimit' match. 633 This option adds a `hashlimit' match.
634 634
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
index bd1d2de75e45..c64f029f7052 100644
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -389,9 +389,11 @@ static int ctnetlink_conntrack_event(struct notifier_block *this,
389 && ctnetlink_dump_helpinfo(skb, ct) < 0) 389 && ctnetlink_dump_helpinfo(skb, ct) < 0)
390 goto nfattr_failure; 390 goto nfattr_failure;
391 391
392#ifdef CONFIG_NF_CONNTRACK_MARK
392 if ((events & IPCT_MARK || ct->mark) 393 if ((events & IPCT_MARK || ct->mark)
393 && ctnetlink_dump_mark(skb, ct) < 0) 394 && ctnetlink_dump_mark(skb, ct) < 0)
394 goto nfattr_failure; 395 goto nfattr_failure;
396#endif
395 397
396 if (events & IPCT_COUNTER_FILLING && 398 if (events & IPCT_COUNTER_FILLING &&
397 (ctnetlink_dump_counters(skb, ct, IP_CT_DIR_ORIGINAL) < 0 || 399 (ctnetlink_dump_counters(skb, ct, IP_CT_DIR_ORIGINAL) < 0 ||
@@ -981,7 +983,7 @@ ctnetlink_create_conntrack(struct nfattr *cda[],
981 if (cda[CTA_PROTOINFO-1]) { 983 if (cda[CTA_PROTOINFO-1]) {
982 err = ctnetlink_change_protoinfo(ct, cda); 984 err = ctnetlink_change_protoinfo(ct, cda);
983 if (err < 0) 985 if (err < 0)
984 return err; 986 goto err;
985 } 987 }
986 988
987#if defined(CONFIG_NF_CONNTRACK_MARK) 989#if defined(CONFIG_NF_CONNTRACK_MARK)
diff --git a/net/netfilter/nf_conntrack_pptp.c b/net/netfilter/nf_conntrack_pptp.c
index f0ff00e0d052..c59df3bc2bbd 100644
--- a/net/netfilter/nf_conntrack_pptp.c
+++ b/net/netfilter/nf_conntrack_pptp.c
@@ -113,7 +113,7 @@ static void pptp_expectfn(struct nf_conn *ct,
113 113
114 rcu_read_lock(); 114 rcu_read_lock();
115 nf_nat_pptp_expectfn = rcu_dereference(nf_nat_pptp_hook_expectfn); 115 nf_nat_pptp_expectfn = rcu_dereference(nf_nat_pptp_hook_expectfn);
116 if (nf_nat_pptp_expectfn && ct->status & IPS_NAT_MASK) 116 if (nf_nat_pptp_expectfn && ct->master->status & IPS_NAT_MASK)
117 nf_nat_pptp_expectfn(ct, exp); 117 nf_nat_pptp_expectfn(ct, exp);
118 else { 118 else {
119 struct nf_conntrack_tuple inv_t; 119 struct nf_conntrack_tuple inv_t;
diff --git a/net/netfilter/nf_conntrack_sip.c b/net/netfilter/nf_conntrack_sip.c
index eb2a2411f97b..9dec11534678 100644
--- a/net/netfilter/nf_conntrack_sip.c
+++ b/net/netfilter/nf_conntrack_sip.c
@@ -303,10 +303,16 @@ static int skp_epaddr_len(struct nf_conn *ct, const char *dptr,
303{ 303{
304 int s = *shift; 304 int s = *shift;
305 305
306 for (; dptr <= limit && *dptr != '@'; dptr++) 306 /* Search for @, but stop at the end of the line.
307 * We are inside a sip: URI, so we don't need to worry about
308 * continuation lines. */
309 while (dptr <= limit &&
310 *dptr != '@' && *dptr != '\r' && *dptr != '\n') {
307 (*shift)++; 311 (*shift)++;
312 dptr++;
313 }
308 314
309 if (*dptr == '@') { 315 if (dptr <= limit && *dptr == '@') {
310 dptr++; 316 dptr++;
311 (*shift)++; 317 (*shift)++;
312 } else 318 } else
diff --git a/net/netfilter/xt_connbytes.c b/net/netfilter/xt_connbytes.c
index d93cb096a675..5e32dfa2668b 100644
--- a/net/netfilter/xt_connbytes.c
+++ b/net/netfilter/xt_connbytes.c
@@ -52,6 +52,8 @@ match(const struct sk_buff *skb,
52{ 52{
53 const struct xt_connbytes_info *sinfo = matchinfo; 53 const struct xt_connbytes_info *sinfo = matchinfo;
54 u_int64_t what = 0; /* initialize to make gcc happy */ 54 u_int64_t what = 0; /* initialize to make gcc happy */
55 u_int64_t bytes = 0;
56 u_int64_t pkts = 0;
55 const struct ip_conntrack_counter *counters; 57 const struct ip_conntrack_counter *counters;
56 58
57 if (!(counters = nf_ct_get_counters(skb))) 59 if (!(counters = nf_ct_get_counters(skb)))
@@ -89,29 +91,22 @@ match(const struct sk_buff *skb,
89 case XT_CONNBYTES_AVGPKT: 91 case XT_CONNBYTES_AVGPKT:
90 switch (sinfo->direction) { 92 switch (sinfo->direction) {
91 case XT_CONNBYTES_DIR_ORIGINAL: 93 case XT_CONNBYTES_DIR_ORIGINAL:
92 what = div64_64(counters[IP_CT_DIR_ORIGINAL].bytes, 94 bytes = counters[IP_CT_DIR_ORIGINAL].bytes;
93 counters[IP_CT_DIR_ORIGINAL].packets); 95 pkts = counters[IP_CT_DIR_ORIGINAL].packets;
94 break; 96 break;
95 case XT_CONNBYTES_DIR_REPLY: 97 case XT_CONNBYTES_DIR_REPLY:
96 what = div64_64(counters[IP_CT_DIR_REPLY].bytes, 98 bytes = counters[IP_CT_DIR_REPLY].bytes;
97 counters[IP_CT_DIR_REPLY].packets); 99 pkts = counters[IP_CT_DIR_REPLY].packets;
98 break; 100 break;
99 case XT_CONNBYTES_DIR_BOTH: 101 case XT_CONNBYTES_DIR_BOTH:
100 { 102 bytes = counters[IP_CT_DIR_ORIGINAL].bytes +
101 u_int64_t bytes; 103 counters[IP_CT_DIR_REPLY].bytes;
102 u_int64_t pkts; 104 pkts = counters[IP_CT_DIR_ORIGINAL].packets +
103 bytes = counters[IP_CT_DIR_ORIGINAL].bytes + 105 counters[IP_CT_DIR_REPLY].packets;
104 counters[IP_CT_DIR_REPLY].bytes;
105 pkts = counters[IP_CT_DIR_ORIGINAL].packets+
106 counters[IP_CT_DIR_REPLY].packets;
107
108 /* FIXME_THEORETICAL: what to do if sum
109 * overflows ? */
110
111 what = div64_64(bytes, pkts);
112 }
113 break; 106 break;
114 } 107 }
108 if (pkts != 0)
109 what = div64_64(bytes, pkts);
115 break; 110 break;
116 } 111 }
117 112
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index da73e8a8c18d..6dc01bdeb76b 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -359,6 +359,10 @@ static int packet_sendmsg_spkt(struct kiocb *iocb, struct socket *sock,
359 if (dev == NULL) 359 if (dev == NULL)
360 goto out_unlock; 360 goto out_unlock;
361 361
362 err = -ENETDOWN;
363 if (!(dev->flags & IFF_UP))
364 goto out_unlock;
365
362 /* 366 /*
363 * You may not queue a frame bigger than the mtu. This is the lowest level 367 * You may not queue a frame bigger than the mtu. This is the lowest level
364 * raw protocol and you must do your own fragmentation at this level. 368 * raw protocol and you must do your own fragmentation at this level.
@@ -407,10 +411,6 @@ static int packet_sendmsg_spkt(struct kiocb *iocb, struct socket *sock,
407 if (err) 411 if (err)
408 goto out_free; 412 goto out_free;
409 413
410 err = -ENETDOWN;
411 if (!(dev->flags & IFF_UP))
412 goto out_free;
413
414 /* 414 /*
415 * Now send it 415 * Now send it
416 */ 416 */
@@ -428,24 +428,18 @@ out_unlock:
428} 428}
429#endif 429#endif
430 430
431static inline int run_filter(struct sk_buff *skb, struct sock *sk, 431static inline unsigned int run_filter(struct sk_buff *skb, struct sock *sk,
432 unsigned *snaplen) 432 unsigned int res)
433{ 433{
434 struct sk_filter *filter; 434 struct sk_filter *filter;
435 int err = 0;
436 435
437 rcu_read_lock_bh(); 436 rcu_read_lock_bh();
438 filter = rcu_dereference(sk->sk_filter); 437 filter = rcu_dereference(sk->sk_filter);
439 if (filter != NULL) { 438 if (filter != NULL)
440 err = sk_run_filter(skb, filter->insns, filter->len); 439 res = sk_run_filter(skb, filter->insns, filter->len);
441 if (!err)
442 err = -EPERM;
443 else if (*snaplen > err)
444 *snaplen = err;
445 }
446 rcu_read_unlock_bh(); 440 rcu_read_unlock_bh();
447 441
448 return err; 442 return res;
449} 443}
450 444
451/* 445/*
@@ -467,7 +461,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, struct packet
467 struct packet_sock *po; 461 struct packet_sock *po;
468 u8 * skb_head = skb->data; 462 u8 * skb_head = skb->data;
469 int skb_len = skb->len; 463 int skb_len = skb->len;
470 unsigned snaplen; 464 unsigned int snaplen, res;
471 465
472 if (skb->pkt_type == PACKET_LOOPBACK) 466 if (skb->pkt_type == PACKET_LOOPBACK)
473 goto drop; 467 goto drop;
@@ -495,8 +489,11 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, struct packet
495 489
496 snaplen = skb->len; 490 snaplen = skb->len;
497 491
498 if (run_filter(skb, sk, &snaplen) < 0) 492 res = run_filter(skb, sk, snaplen);
493 if (!res)
499 goto drop_n_restore; 494 goto drop_n_restore;
495 if (snaplen > res)
496 snaplen = res;
500 497
501 if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >= 498 if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >=
502 (unsigned)sk->sk_rcvbuf) 499 (unsigned)sk->sk_rcvbuf)
@@ -568,7 +565,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, struct packe
568 struct tpacket_hdr *h; 565 struct tpacket_hdr *h;
569 u8 * skb_head = skb->data; 566 u8 * skb_head = skb->data;
570 int skb_len = skb->len; 567 int skb_len = skb->len;
571 unsigned snaplen; 568 unsigned int snaplen, res;
572 unsigned long status = TP_STATUS_LOSING|TP_STATUS_USER; 569 unsigned long status = TP_STATUS_LOSING|TP_STATUS_USER;
573 unsigned short macoff, netoff; 570 unsigned short macoff, netoff;
574 struct sk_buff *copy_skb = NULL; 571 struct sk_buff *copy_skb = NULL;
@@ -592,8 +589,11 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, struct packe
592 589
593 snaplen = skb->len; 590 snaplen = skb->len;
594 591
595 if (run_filter(skb, sk, &snaplen) < 0) 592 res = run_filter(skb, sk, snaplen);
593 if (!res)
596 goto drop_n_restore; 594 goto drop_n_restore;
595 if (snaplen > res)
596 snaplen = res;
597 597
598 if (sk->sk_type == SOCK_DGRAM) { 598 if (sk->sk_type == SOCK_DGRAM) {
599 macoff = netoff = TPACKET_ALIGN(TPACKET_HDRLEN) + 16; 599 macoff = netoff = TPACKET_ALIGN(TPACKET_HDRLEN) + 16;
@@ -738,6 +738,10 @@ static int packet_sendmsg(struct kiocb *iocb, struct socket *sock,
738 if (sock->type == SOCK_RAW) 738 if (sock->type == SOCK_RAW)
739 reserve = dev->hard_header_len; 739 reserve = dev->hard_header_len;
740 740
741 err = -ENETDOWN;
742 if (!(dev->flags & IFF_UP))
743 goto out_unlock;
744
741 err = -EMSGSIZE; 745 err = -EMSGSIZE;
742 if (len > dev->mtu+reserve) 746 if (len > dev->mtu+reserve)
743 goto out_unlock; 747 goto out_unlock;
@@ -770,10 +774,6 @@ static int packet_sendmsg(struct kiocb *iocb, struct socket *sock,
770 skb->dev = dev; 774 skb->dev = dev;
771 skb->priority = sk->sk_priority; 775 skb->priority = sk->sk_priority;
772 776
773 err = -ENETDOWN;
774 if (!(dev->flags & IFF_UP))
775 goto out_free;
776
777 /* 777 /*
778 * Now send it 778 * Now send it
779 */ 779 */
diff --git a/net/sched/act_ipt.c b/net/sched/act_ipt.c
index a9608064a4c3..01e69138578d 100644
--- a/net/sched/act_ipt.c
+++ b/net/sched/act_ipt.c
@@ -55,7 +55,8 @@ static int ipt_init_target(struct ipt_entry_target *t, char *table, unsigned int
55 struct ipt_target *target; 55 struct ipt_target *target;
56 int ret = 0; 56 int ret = 0;
57 57
58 target = xt_find_target(AF_INET, t->u.user.name, t->u.user.revision); 58 target = xt_request_find_target(AF_INET, t->u.user.name,
59 t->u.user.revision);
59 if (!target) 60 if (!target)
60 return -ENOENT; 61 return -ENOENT;
61 62
@@ -63,9 +64,10 @@ static int ipt_init_target(struct ipt_entry_target *t, char *table, unsigned int
63 64
64 ret = xt_check_target(target, AF_INET, t->u.target_size - sizeof(*t), 65 ret = xt_check_target(target, AF_INET, t->u.target_size - sizeof(*t),
65 table, hook, 0, 0); 66 table, hook, 0, 0);
66 if (ret) 67 if (ret) {
68 module_put(t->u.kernel.target->me);
67 return ret; 69 return ret;
68 70 }
69 if (t->u.kernel.target->checkentry 71 if (t->u.kernel.target->checkentry
70 && !t->u.kernel.target->checkentry(table, NULL, 72 && !t->u.kernel.target->checkentry(table, NULL,
71 t->u.kernel.target, t->data, 73 t->u.kernel.target, t->data,
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index 225f39b5d595..0ef48126b117 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -804,7 +804,7 @@ static inline int sctp_v4_xmit(struct sk_buff *skb,
804 NIPQUAD(((struct rtable *)skb->dst)->rt_dst)); 804 NIPQUAD(((struct rtable *)skb->dst)->rt_dst));
805 805
806 SCTP_INC_STATS(SCTP_MIB_OUTSCTPPACKS); 806 SCTP_INC_STATS(SCTP_MIB_OUTSCTPPACKS);
807 return ip_queue_xmit(skb, skb->sk, ipfragok); 807 return ip_queue_xmit(skb, ipfragok);
808} 808}
809 809
810static struct sctp_af sctp_ipv4_specific; 810static struct sctp_af sctp_ipv4_specific;
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index 167d888d1df2..0b1ddb1005ac 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -1562,7 +1562,7 @@ static int sctp_process_missing_param(const struct sctp_association *asoc,
1562 if (*errp) { 1562 if (*errp) {
1563 report.num_missing = htonl(1); 1563 report.num_missing = htonl(1);
1564 report.type = paramtype; 1564 report.type = paramtype;
1565 sctp_init_cause(*errp, SCTP_ERROR_INV_PARAM, 1565 sctp_init_cause(*errp, SCTP_ERROR_MISS_PARAM,
1566 &report, sizeof(report)); 1566 &report, sizeof(report));
1567 } 1567 }
1568 1568
@@ -1775,7 +1775,9 @@ int sctp_verify_init(const struct sctp_association *asoc,
1775 1775
1776 /* Verify stream values are non-zero. */ 1776 /* Verify stream values are non-zero. */
1777 if ((0 == peer_init->init_hdr.num_outbound_streams) || 1777 if ((0 == peer_init->init_hdr.num_outbound_streams) ||
1778 (0 == peer_init->init_hdr.num_inbound_streams)) { 1778 (0 == peer_init->init_hdr.num_inbound_streams) ||
1779 (0 == peer_init->init_hdr.init_tag) ||
1780 (SCTP_DEFAULT_MINWINDOW > ntohl(peer_init->init_hdr.a_rwnd))) {
1779 1781
1780 sctp_process_inv_mandatory(asoc, chunk, errp); 1782 sctp_process_inv_mandatory(asoc, chunk, errp);
1781 return 0; 1783 return 0;
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
index 7bbc6156e455..6db77d1329f7 100644
--- a/net/sctp/sm_sideeffect.c
+++ b/net/sctp/sm_sideeffect.c
@@ -217,7 +217,7 @@ static int sctp_gen_sack(struct sctp_association *asoc, int force,
217 217
218 asoc->peer.sack_needed = 0; 218 asoc->peer.sack_needed = 0;
219 219
220 error = sctp_outq_tail(&asoc->outqueue, sack); 220 sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(sack));
221 221
222 /* Stop the SACK timer. */ 222 /* Stop the SACK timer. */
223 sctp_add_cmd_sf(commands, SCTP_CMD_TIMER_STOP, 223 sctp_add_cmd_sf(commands, SCTP_CMD_TIMER_STOP,
@@ -621,7 +621,13 @@ static void sctp_cmd_transport_on(sctp_cmd_seq_t *cmds,
621 /* The receiver of the HEARTBEAT ACK should also perform an 621 /* The receiver of the HEARTBEAT ACK should also perform an
622 * RTT measurement for that destination transport address 622 * RTT measurement for that destination transport address
623 * using the time value carried in the HEARTBEAT ACK chunk. 623 * using the time value carried in the HEARTBEAT ACK chunk.
624 * If the transport's rto_pending variable has been cleared,
625 * it was most likely due to a retransmit. However, we want
626 * to re-enable it to properly update the rto.
624 */ 627 */
628 if (t->rto_pending == 0)
629 t->rto_pending = 1;
630
625 hbinfo = (sctp_sender_hb_info_t *) chunk->skb->data; 631 hbinfo = (sctp_sender_hb_info_t *) chunk->skb->data;
626 sctp_transport_update_rto(t, (jiffies - hbinfo->sent_at)); 632 sctp_transport_update_rto(t, (jiffies - hbinfo->sent_at));
627 633
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index aa51d190bfb2..fbbc9e6a3b78 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -440,7 +440,6 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
440{ 440{
441 struct sctp_chunk *chunk = arg; 441 struct sctp_chunk *chunk = arg;
442 sctp_init_chunk_t *initchunk; 442 sctp_init_chunk_t *initchunk;
443 __u32 init_tag;
444 struct sctp_chunk *err_chunk; 443 struct sctp_chunk *err_chunk;
445 struct sctp_packet *packet; 444 struct sctp_packet *packet;
446 sctp_error_t error; 445 sctp_error_t error;
@@ -462,24 +461,6 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
462 /* Grab the INIT header. */ 461 /* Grab the INIT header. */
463 chunk->subh.init_hdr = (sctp_inithdr_t *) chunk->skb->data; 462 chunk->subh.init_hdr = (sctp_inithdr_t *) chunk->skb->data;
464 463
465 init_tag = ntohl(chunk->subh.init_hdr->init_tag);
466
467 /* Verification Tag: 3.3.3
468 * If the value of the Initiate Tag in a received INIT ACK
469 * chunk is found to be 0, the receiver MUST treat it as an
470 * error and close the association by transmitting an ABORT.
471 */
472 if (!init_tag) {
473 struct sctp_chunk *reply = sctp_make_abort(asoc, chunk, 0);
474 if (!reply)
475 goto nomem;
476
477 sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(reply));
478 return sctp_stop_t1_and_abort(commands, SCTP_ERROR_INV_PARAM,
479 ECONNREFUSED, asoc,
480 chunk->transport);
481 }
482
483 /* Verify the INIT chunk before processing it. */ 464 /* Verify the INIT chunk before processing it. */
484 err_chunk = NULL; 465 err_chunk = NULL;
485 if (!sctp_verify_init(asoc, chunk->chunk_hdr->type, 466 if (!sctp_verify_init(asoc, chunk->chunk_hdr->type,
@@ -550,9 +531,6 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
550 SCTP_CHUNK(err_chunk)); 531 SCTP_CHUNK(err_chunk));
551 532
552 return SCTP_DISPOSITION_CONSUME; 533 return SCTP_DISPOSITION_CONSUME;
553
554nomem:
555 return SCTP_DISPOSITION_NOMEM;
556} 534}
557 535
558/* 536/*
@@ -1553,6 +1531,28 @@ sctp_disposition_t sctp_sf_do_5_2_2_dupinit(const struct sctp_endpoint *ep,
1553} 1531}
1554 1532
1555 1533
1534/*
1535 * Unexpected INIT-ACK handler.
1536 *
1537 * Section 5.2.3
1538 * If an INIT ACK received by an endpoint in any state other than the
1539 * COOKIE-WAIT state, the endpoint should discard the INIT ACK chunk.
1540 * An unexpected INIT ACK usually indicates the processing of an old or
1541 * duplicated INIT chunk.
1542*/
1543sctp_disposition_t sctp_sf_do_5_2_3_initack(const struct sctp_endpoint *ep,
1544 const struct sctp_association *asoc,
1545 const sctp_subtype_t type,
1546 void *arg, sctp_cmd_seq_t *commands)
1547{
1548 /* Per the above section, we'll discard the chunk if we have an
1549 * endpoint. If this is an OOTB INIT-ACK, treat it as such.
1550 */
1551 if (ep == sctp_sk((sctp_get_ctl_sock()))->ep)
1552 return sctp_sf_ootb(ep, asoc, type, arg, commands);
1553 else
1554 return sctp_sf_discard_chunk(ep, asoc, type, arg, commands);
1555}
1556 1556
1557/* Unexpected COOKIE-ECHO handler for peer restart (Table 2, action 'A') 1557/* Unexpected COOKIE-ECHO handler for peer restart (Table 2, action 'A')
1558 * 1558 *
diff --git a/net/sctp/sm_statetable.c b/net/sctp/sm_statetable.c
index 733dd87b3a7d..5f6cc7aa661b 100644
--- a/net/sctp/sm_statetable.c
+++ b/net/sctp/sm_statetable.c
@@ -152,7 +152,7 @@ const sctp_sm_table_entry_t *sctp_sm_lookup_event(sctp_event_t event_type,
152 /* SCTP_STATE_EMPTY */ \ 152 /* SCTP_STATE_EMPTY */ \
153 TYPE_SCTP_FUNC(sctp_sf_ootb), \ 153 TYPE_SCTP_FUNC(sctp_sf_ootb), \
154 /* SCTP_STATE_CLOSED */ \ 154 /* SCTP_STATE_CLOSED */ \
155 TYPE_SCTP_FUNC(sctp_sf_discard_chunk), \ 155 TYPE_SCTP_FUNC(sctp_sf_do_5_2_3_initack), \
156 /* SCTP_STATE_COOKIE_WAIT */ \ 156 /* SCTP_STATE_COOKIE_WAIT */ \
157 TYPE_SCTP_FUNC(sctp_sf_do_5_1C_ack), \ 157 TYPE_SCTP_FUNC(sctp_sf_do_5_1C_ack), \
158 /* SCTP_STATE_COOKIE_ECHOED */ \ 158 /* SCTP_STATE_COOKIE_ECHOED */ \
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index aba528b9ae76..16c9fbc1db69 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -490,16 +490,14 @@ int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg, int flags)
490 490
491 /* Set up the call info struct and execute the task */ 491 /* Set up the call info struct and execute the task */
492 status = task->tk_status; 492 status = task->tk_status;
493 if (status != 0) { 493 if (status != 0)
494 rpc_release_task(task);
495 goto out; 494 goto out;
496 }
497 atomic_inc(&task->tk_count); 495 atomic_inc(&task->tk_count);
498 status = rpc_execute(task); 496 status = rpc_execute(task);
499 if (status == 0) 497 if (status == 0)
500 status = task->tk_status; 498 status = task->tk_status;
501 rpc_put_task(task);
502out: 499out:
500 rpc_put_task(task);
503 rpc_restore_sigmask(&oldset); 501 rpc_restore_sigmask(&oldset);
504 return status; 502 return status;
505} 503}
@@ -537,7 +535,7 @@ rpc_call_async(struct rpc_clnt *clnt, struct rpc_message *msg, int flags,
537 if (status == 0) 535 if (status == 0)
538 rpc_execute(task); 536 rpc_execute(task);
539 else 537 else
540 rpc_release_task(task); 538 rpc_put_task(task);
541 539
542 rpc_restore_sigmask(&oldset); 540 rpc_restore_sigmask(&oldset);
543 return status; 541 return status;
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
index 79bc4cdf5d48..fc083f0b3544 100644
--- a/net/sunrpc/sched.c
+++ b/net/sunrpc/sched.c
@@ -42,6 +42,7 @@ static mempool_t *rpc_buffer_mempool __read_mostly;
42static void __rpc_default_timer(struct rpc_task *task); 42static void __rpc_default_timer(struct rpc_task *task);
43static void rpciod_killall(void); 43static void rpciod_killall(void);
44static void rpc_async_schedule(struct work_struct *); 44static void rpc_async_schedule(struct work_struct *);
45static void rpc_release_task(struct rpc_task *task);
45 46
46/* 47/*
47 * RPC tasks sit here while waiting for conditions to improve. 48 * RPC tasks sit here while waiting for conditions to improve.
@@ -896,7 +897,7 @@ void rpc_put_task(struct rpc_task *task)
896} 897}
897EXPORT_SYMBOL(rpc_put_task); 898EXPORT_SYMBOL(rpc_put_task);
898 899
899void rpc_release_task(struct rpc_task *task) 900static void rpc_release_task(struct rpc_task *task)
900{ 901{
901#ifdef RPC_DEBUG 902#ifdef RPC_DEBUG
902 BUG_ON(task->tk_magic != RPC_TASK_MAGIC_ID); 903 BUG_ON(task->tk_magic != RPC_TASK_MAGIC_ID);
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
index f3001f3626f6..4c1611211119 100644
--- a/net/sunrpc/svc.c
+++ b/net/sunrpc/svc.c
@@ -26,7 +26,6 @@
26#include <linux/sunrpc/clnt.h> 26#include <linux/sunrpc/clnt.h>
27 27
28#define RPCDBG_FACILITY RPCDBG_SVCDSP 28#define RPCDBG_FACILITY RPCDBG_SVCDSP
29#define RPC_PARANOIA 1
30 29
31/* 30/*
32 * Mode for mapping cpus to pools. 31 * Mode for mapping cpus to pools.
@@ -872,15 +871,15 @@ svc_process(struct svc_rqst *rqstp)
872 return 0; 871 return 0;
873 872
874err_short_len: 873err_short_len:
875#ifdef RPC_PARANOIA 874 if (net_ratelimit())
876 printk("svc: short len %Zd, dropping request\n", argv->iov_len); 875 printk("svc: short len %Zd, dropping request\n", argv->iov_len);
877#endif 876
878 goto dropit; /* drop request */ 877 goto dropit; /* drop request */
879 878
880err_bad_dir: 879err_bad_dir:
881#ifdef RPC_PARANOIA 880 if (net_ratelimit())
882 printk("svc: bad direction %d, dropping request\n", dir); 881 printk("svc: bad direction %d, dropping request\n", dir);
883#endif 882
884 serv->sv_stats->rpcbadfmt++; 883 serv->sv_stats->rpcbadfmt++;
885 goto dropit; /* drop request */ 884 goto dropit; /* drop request */
886 885
@@ -909,9 +908,10 @@ err_bad_prog:
909 goto sendit; 908 goto sendit;
910 909
911err_bad_vers: 910err_bad_vers:
912#ifdef RPC_PARANOIA 911 if (net_ratelimit())
913 printk("svc: unknown version (%d)\n", vers); 912 printk("svc: unknown version (%d for prog %d, %s)\n",
914#endif 913 vers, prog, progp->pg_name);
914
915 serv->sv_stats->rpcbadfmt++; 915 serv->sv_stats->rpcbadfmt++;
916 svc_putnl(resv, RPC_PROG_MISMATCH); 916 svc_putnl(resv, RPC_PROG_MISMATCH);
917 svc_putnl(resv, progp->pg_lovers); 917 svc_putnl(resv, progp->pg_lovers);
@@ -919,17 +919,17 @@ err_bad_vers:
919 goto sendit; 919 goto sendit;
920 920
921err_bad_proc: 921err_bad_proc:
922#ifdef RPC_PARANOIA 922 if (net_ratelimit())
923 printk("svc: unknown procedure (%d)\n", proc); 923 printk("svc: unknown procedure (%d)\n", proc);
924#endif 924
925 serv->sv_stats->rpcbadfmt++; 925 serv->sv_stats->rpcbadfmt++;
926 svc_putnl(resv, RPC_PROC_UNAVAIL); 926 svc_putnl(resv, RPC_PROC_UNAVAIL);
927 goto sendit; 927 goto sendit;
928 928
929err_garbage: 929err_garbage:
930#ifdef RPC_PARANOIA 930 if (net_ratelimit())
931 printk("svc: failed to decode args\n"); 931 printk("svc: failed to decode args\n");
932#endif 932
933 rpc_stat = rpc_garbage_args; 933 rpc_stat = rpc_garbage_args;
934err_bad: 934err_bad:
935 serv->sv_stats->rpcbadfmt++; 935 serv->sv_stats->rpcbadfmt++;
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 99f54fb6d669..ff1f8bf680aa 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -1062,15 +1062,19 @@ svc_tcp_recvfrom(struct svc_rqst *rqstp)
1062 * bit set in the fragment length header. 1062 * bit set in the fragment length header.
1063 * But apparently no known nfs clients send fragmented 1063 * But apparently no known nfs clients send fragmented
1064 * records. */ 1064 * records. */
1065 printk(KERN_NOTICE "RPC: bad TCP reclen 0x%08lx (non-terminal)\n", 1065 if (net_ratelimit())
1066 (unsigned long) svsk->sk_reclen); 1066 printk(KERN_NOTICE "RPC: bad TCP reclen 0x%08lx"
1067 " (non-terminal)\n",
1068 (unsigned long) svsk->sk_reclen);
1067 goto err_delete; 1069 goto err_delete;
1068 } 1070 }
1069 svsk->sk_reclen &= 0x7fffffff; 1071 svsk->sk_reclen &= 0x7fffffff;
1070 dprintk("svc: TCP record, %d bytes\n", svsk->sk_reclen); 1072 dprintk("svc: TCP record, %d bytes\n", svsk->sk_reclen);
1071 if (svsk->sk_reclen > serv->sv_max_mesg) { 1073 if (svsk->sk_reclen > serv->sv_max_mesg) {
1072 printk(KERN_NOTICE "RPC: bad TCP reclen 0x%08lx (large)\n", 1074 if (net_ratelimit())
1073 (unsigned long) svsk->sk_reclen); 1075 printk(KERN_NOTICE "RPC: bad TCP reclen 0x%08lx"
1076 " (large)\n",
1077 (unsigned long) svsk->sk_reclen);
1074 goto err_delete; 1078 goto err_delete;
1075 } 1079 }
1076 } 1080 }
@@ -1278,6 +1282,8 @@ svc_recv(struct svc_rqst *rqstp, long timeout)
1278 schedule_timeout_uninterruptible(msecs_to_jiffies(500)); 1282 schedule_timeout_uninterruptible(msecs_to_jiffies(500));
1279 rqstp->rq_pages[i] = p; 1283 rqstp->rq_pages[i] = p;
1280 } 1284 }
1285 rqstp->rq_pages[i++] = NULL; /* this might be seen in nfs_read_actor */
1286 BUG_ON(pages >= RPCSVC_MAXPAGES);
1281 1287
1282 /* Make arg->head point to first page and arg->pages point to rest */ 1288 /* Make arg->head point to first page and arg->pages point to rest */
1283 arg = &rqstp->rq_arg; 1289 arg = &rqstp->rq_arg;
diff --git a/net/x25/x25_dev.c b/net/x25/x25_dev.c
index 47b68a301677..328d80f000ad 100644
--- a/net/x25/x25_dev.c
+++ b/net/x25/x25_dev.c
@@ -56,6 +56,7 @@ static int x25_receive_data(struct sk_buff *skb, struct x25_neigh *nb)
56 sk_add_backlog(sk, skb); 56 sk_add_backlog(sk, skb);
57 } 57 }
58 bh_unlock_sock(sk); 58 bh_unlock_sock(sk);
59 sock_put(sk);
59 return queued; 60 return queued;
60 } 61 }
61 62
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index bebd40e5a62e..b7e537fe2d75 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -650,19 +650,18 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
650 struct xfrm_policy *pol; 650 struct xfrm_policy *pol;
651 struct xfrm_policy *delpol; 651 struct xfrm_policy *delpol;
652 struct hlist_head *chain; 652 struct hlist_head *chain;
653 struct hlist_node *entry, *newpos, *last; 653 struct hlist_node *entry, *newpos;
654 struct dst_entry *gc_list; 654 struct dst_entry *gc_list;
655 655
656 write_lock_bh(&xfrm_policy_lock); 656 write_lock_bh(&xfrm_policy_lock);
657 chain = policy_hash_bysel(&policy->selector, policy->family, dir); 657 chain = policy_hash_bysel(&policy->selector, policy->family, dir);
658 delpol = NULL; 658 delpol = NULL;
659 newpos = NULL; 659 newpos = NULL;
660 last = NULL;
661 hlist_for_each_entry(pol, entry, chain, bydst) { 660 hlist_for_each_entry(pol, entry, chain, bydst) {
662 if (!delpol && 661 if (pol->type == policy->type &&
663 pol->type == policy->type &&
664 !selector_cmp(&pol->selector, &policy->selector) && 662 !selector_cmp(&pol->selector, &policy->selector) &&
665 xfrm_sec_ctx_match(pol->security, policy->security)) { 663 xfrm_sec_ctx_match(pol->security, policy->security) &&
664 !WARN_ON(delpol)) {
666 if (excl) { 665 if (excl) {
667 write_unlock_bh(&xfrm_policy_lock); 666 write_unlock_bh(&xfrm_policy_lock);
668 return -EEXIST; 667 return -EEXIST;
@@ -671,17 +670,12 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
671 if (policy->priority > pol->priority) 670 if (policy->priority > pol->priority)
672 continue; 671 continue;
673 } else if (policy->priority >= pol->priority) { 672 } else if (policy->priority >= pol->priority) {
674 last = &pol->bydst; 673 newpos = &pol->bydst;
675 continue; 674 continue;
676 } 675 }
677 if (!newpos)
678 newpos = &pol->bydst;
679 if (delpol) 676 if (delpol)
680 break; 677 break;
681 last = &pol->bydst;
682 } 678 }
683 if (!newpos)
684 newpos = last;
685 if (newpos) 679 if (newpos)
686 hlist_add_after(newpos, &policy->bydst); 680 hlist_add_after(newpos, &policy->bydst);
687 else 681 else
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst
index 4241e0dfeeaf..f7b6705fd6a3 100644
--- a/scripts/Makefile.headersinst
+++ b/scripts/Makefile.headersinst
@@ -109,7 +109,7 @@ quiet_cmd_mkdir = MKDIR $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
109quiet_cmd_gen = GEN $(patsubst $(INSTALL_HDR_PATH)/%,%,$@) 109quiet_cmd_gen = GEN $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
110 cmd_gen = \ 110 cmd_gen = \
111FNAME=$(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$@) \ 111FNAME=$(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$@) \
112STUBDEF=__ASM_STUB_`echo $$FNAME | tr a-z. A-Z_`; \ 112STUBDEF=__ASM_STUB_`echo $$FNAME | tr a-z.- A-Z__`; \
113(echo "/* File autogenerated by 'make headers_install' */" ; \ 113(echo "/* File autogenerated by 'make headers_install' */" ; \
114echo "\#ifndef $$STUBDEF" ; \ 114echo "\#ifndef $$STUBDEF" ; \
115echo "\#define $$STUBDEF" ; \ 115echo "\#define $$STUBDEF" ; \
diff --git a/security/selinux/include/xfrm.h b/security/selinux/include/xfrm.h
index 161eb571c82d..31929e39f5ca 100644
--- a/security/selinux/include/xfrm.h
+++ b/security/selinux/include/xfrm.h
@@ -37,6 +37,11 @@ int selinux_xfrm_sock_rcv_skb(u32 sid, struct sk_buff *skb,
37int selinux_xfrm_postroute_last(u32 isec_sid, struct sk_buff *skb, 37int selinux_xfrm_postroute_last(u32 isec_sid, struct sk_buff *skb,
38 struct avc_audit_data *ad, u8 proto); 38 struct avc_audit_data *ad, u8 proto);
39int selinux_xfrm_decode_session(struct sk_buff *skb, u32 *sid, int ckall); 39int selinux_xfrm_decode_session(struct sk_buff *skb, u32 *sid, int ckall);
40
41static inline void selinux_xfrm_notify_policyload(void)
42{
43 atomic_inc(&flow_cache_genid);
44}
40#else 45#else
41static inline int selinux_xfrm_sock_rcv_skb(u32 isec_sid, struct sk_buff *skb, 46static inline int selinux_xfrm_sock_rcv_skb(u32 isec_sid, struct sk_buff *skb,
42 struct avc_audit_data *ad) 47 struct avc_audit_data *ad)
@@ -55,6 +60,10 @@ static inline int selinux_xfrm_decode_session(struct sk_buff *skb, u32 *sid, int
55 *sid = SECSID_NULL; 60 *sid = SECSID_NULL;
56 return 0; 61 return 0;
57} 62}
63
64static inline void selinux_xfrm_notify_policyload(void)
65{
66}
58#endif 67#endif
59 68
60static inline void selinux_skb_xfrm_sid(struct sk_buff *skb, u32 *sid) 69static inline void selinux_skb_xfrm_sid(struct sk_buff *skb, u32 *sid)
diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
index 3eb1fa9f0de1..ca9154dc5d82 100644
--- a/security/selinux/ss/services.c
+++ b/security/selinux/ss/services.c
@@ -1299,6 +1299,7 @@ int security_load_policy(void *data, size_t len)
1299 avc_ss_reset(seqno); 1299 avc_ss_reset(seqno);
1300 selnl_notify_policyload(seqno); 1300 selnl_notify_policyload(seqno);
1301 selinux_netlbl_cache_invalidate(); 1301 selinux_netlbl_cache_invalidate();
1302 selinux_xfrm_notify_policyload();
1302 return 0; 1303 return 0;
1303 } 1304 }
1304 1305
@@ -1354,6 +1355,7 @@ int security_load_policy(void *data, size_t len)
1354 avc_ss_reset(seqno); 1355 avc_ss_reset(seqno);
1355 selnl_notify_policyload(seqno); 1356 selnl_notify_policyload(seqno);
1356 selinux_netlbl_cache_invalidate(); 1357 selinux_netlbl_cache_invalidate();
1358 selinux_xfrm_notify_policyload();
1357 1359
1358 return 0; 1360 return 0;
1359 1361
@@ -1853,6 +1855,7 @@ out:
1853 if (!rc) { 1855 if (!rc) {
1854 avc_ss_reset(seqno); 1856 avc_ss_reset(seqno);
1855 selnl_notify_policyload(seqno); 1857 selnl_notify_policyload(seqno);
1858 selinux_xfrm_notify_policyload();
1856 } 1859 }
1857 return rc; 1860 return rc;
1858} 1861}
diff --git a/sound/core/init.c b/sound/core/init.c
index 6152a7554dfd..a4cc6b155ae9 100644
--- a/sound/core/init.c
+++ b/sound/core/init.c
@@ -361,8 +361,10 @@ static int snd_card_do_free(struct snd_card *card)
361 snd_printk(KERN_WARNING "unable to free card info\n"); 361 snd_printk(KERN_WARNING "unable to free card info\n");
362 /* Not fatal error */ 362 /* Not fatal error */
363 } 363 }
364 if (card->dev) 364#ifndef CONFIG_SYSFS_DEPRECATED
365 device_unregister(card->dev); 365 if (card->card_dev)
366 device_unregister(card->card_dev);
367#endif
366 kfree(card); 368 kfree(card);
367 return 0; 369 return 0;
368} 370}
@@ -497,12 +499,14 @@ int snd_card_register(struct snd_card *card)
497 int err; 499 int err;
498 500
499 snd_assert(card != NULL, return -EINVAL); 501 snd_assert(card != NULL, return -EINVAL);
500 if (!card->dev) { 502#ifndef CONFIG_SYSFS_DEPRECATED
501 card->dev = device_create(sound_class, card->parent, 0, 503 if (!card->card_dev) {
502 "card%i", card->number); 504 card->card_dev = device_create(sound_class, card->dev, 0,
503 if (IS_ERR(card->dev)) 505 "card%i", card->number);
504 card->dev = NULL; 506 if (IS_ERR(card->card_dev))
507 card->card_dev = NULL;
505 } 508 }
509#endif
506 if ((err = snd_device_register_all(card)) < 0) 510 if ((err = snd_device_register_all(card)) < 0)
507 return err; 511 return err;
508 mutex_lock(&snd_card_mutex); 512 mutex_lock(&snd_card_mutex);
diff --git a/sound/core/sound.c b/sound/core/sound.c
index 282742022de6..82a61c67cf3a 100644
--- a/sound/core/sound.c
+++ b/sound/core/sound.c
@@ -238,7 +238,7 @@ int snd_register_device(int type, struct snd_card *card, int dev,
238{ 238{
239 int minor; 239 int minor;
240 struct snd_minor *preg; 240 struct snd_minor *preg;
241 struct device *device = NULL; 241 struct device *device = snd_card_get_device_link(card);
242 242
243 snd_assert(name, return -EINVAL); 243 snd_assert(name, return -EINVAL);
244 preg = kmalloc(sizeof *preg, GFP_KERNEL); 244 preg = kmalloc(sizeof *preg, GFP_KERNEL);
@@ -263,8 +263,6 @@ int snd_register_device(int type, struct snd_card *card, int dev,
263 return minor; 263 return minor;
264 } 264 }
265 snd_minors[minor] = preg; 265 snd_minors[minor] = preg;
266 if (card)
267 device = card->dev;
268 preg->dev = device_create(sound_class, device, MKDEV(major, minor), 266 preg->dev = device_create(sound_class, device, MKDEV(major, minor),
269 "%s", name); 267 "%s", name);
270 if (preg->dev) 268 if (preg->dev)
diff --git a/sound/core/sound_oss.c b/sound/core/sound_oss.c
index b2fc40aa520b..4566df41912a 100644
--- a/sound/core/sound_oss.c
+++ b/sound/core/sound_oss.c
@@ -106,7 +106,7 @@ int snd_register_oss_device(int type, struct snd_card *card, int dev,
106 int cidx = SNDRV_MINOR_OSS_CARD(minor); 106 int cidx = SNDRV_MINOR_OSS_CARD(minor);
107 int track2 = -1; 107 int track2 = -1;
108 int register1 = -1, register2 = -1; 108 int register1 = -1, register2 = -1;
109 struct device *carddev = NULL; 109 struct device *carddev = snd_card_get_device_link(card);
110 110
111 if (card && card->number >= 8) 111 if (card && card->number >= 8)
112 return 0; /* ignore silently */ 112 return 0; /* ignore silently */
@@ -134,8 +134,6 @@ int snd_register_oss_device(int type, struct snd_card *card, int dev,
134 track2 = SNDRV_MINOR_OSS(cidx, SNDRV_MINOR_OSS_DMMIDI1); 134 track2 = SNDRV_MINOR_OSS(cidx, SNDRV_MINOR_OSS_DMMIDI1);
135 break; 135 break;
136 } 136 }
137 if (card)
138 carddev = card->dev;
139 register1 = register_sound_special_device(f_ops, minor, carddev); 137 register1 = register_sound_special_device(f_ops, minor, carddev);
140 if (register1 != minor) 138 if (register1 != minor)
141 goto __end; 139 goto __end;
diff --git a/sound/usb/usx2y/usbusx2yaudio.c b/sound/usb/usx2y/usbusx2yaudio.c
index 367f8a32a665..0a352e46862f 100644
--- a/sound/usb/usx2y/usbusx2yaudio.c
+++ b/sound/usb/usx2y/usbusx2yaudio.c
@@ -322,7 +322,7 @@ static void i_usX2Y_urb_complete(struct urb *urb)
322 usX2Y_error_urb_status(usX2Y, subs, urb); 322 usX2Y_error_urb_status(usX2Y, subs, urb);
323 return; 323 return;
324 } 324 }
325 if (likely(urb->start_frame == usX2Y->wait_iso_frame)) 325 if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF)))
326 subs->completed_urb = urb; 326 subs->completed_urb = urb;
327 else { 327 else {
328 usX2Y_error_sequence(usX2Y, subs, urb); 328 usX2Y_error_sequence(usX2Y, subs, urb);
diff --git a/sound/usb/usx2y/usx2yhwdeppcm.c b/sound/usb/usx2y/usx2yhwdeppcm.c
index 8f3e35e24e72..a5e7bcd7ca2e 100644
--- a/sound/usb/usx2y/usx2yhwdeppcm.c
+++ b/sound/usb/usx2y/usx2yhwdeppcm.c
@@ -243,7 +243,7 @@ static void i_usX2Y_usbpcm_urb_complete(struct urb *urb)
243 usX2Y_error_urb_status(usX2Y, subs, urb); 243 usX2Y_error_urb_status(usX2Y, subs, urb);
244 return; 244 return;
245 } 245 }
246 if (likely(urb->start_frame == usX2Y->wait_iso_frame)) 246 if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF)))
247 subs->completed_urb = urb; 247 subs->completed_urb = urb;
248 else { 248 else {
249 usX2Y_error_sequence(usX2Y, subs, urb); 249 usX2Y_error_sequence(usX2Y, subs, urb);