aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/cachetlb.txt5
-rw-r--r--Documentation/feature-removal-schedule.txt62
-rw-r--r--Documentation/filesystems/Locking8
-rw-r--r--Documentation/filesystems/ntfs.txt2
-rw-r--r--Documentation/hwmon/w837938
-rw-r--r--Documentation/kdump/kdump.txt224
-rw-r--r--Documentation/powerpc/mpc52xx-device-tree-bindings.txt10
-rw-r--r--Documentation/usb/acm.txt4
-rw-r--r--Documentation/x86_64/boot-options.txt4
-rw-r--r--MAINTAINERS91
-rw-r--r--Makefile33
-rw-r--r--arch/arm/kernel/entry-armv.S12
-rw-r--r--arch/arm/kernel/time.c13
-rw-r--r--arch/arm/kernel/traps.c1
-rw-r--r--arch/arm/mm/flush.c39
-rw-r--r--arch/cris/arch-v32/kernel/smp.c2
-rw-r--r--arch/i386/Kconfig41
-rw-r--r--arch/i386/defconfig14
-rw-r--r--arch/i386/kernel/acpi/boot.c2
-rw-r--r--arch/i386/kernel/acpi/cstate.c10
-rw-r--r--arch/i386/kernel/cpu/common.c2
-rw-r--r--arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c10
-rw-r--r--arch/i386/kernel/cpu/cpufreq/longhaul.c120
-rw-r--r--arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c6
-rw-r--r--arch/i386/kernel/cpu/cyrix.c2
-rw-r--r--arch/i386/kernel/mpparse.c8
-rw-r--r--arch/i386/kernel/setup.c4
-rw-r--r--arch/i386/kernel/smpboot.c14
-rw-r--r--arch/i386/kernel/trampoline.S5
-rw-r--r--arch/i386/kernel/tsc.c2
-rw-r--r--arch/i386/mach-generic/bigsmp.c2
-rw-r--r--arch/i386/mach-generic/default.c2
-rw-r--r--arch/i386/mach-generic/es7000.c2
-rw-r--r--arch/i386/mach-generic/summit.c2
-rw-r--r--arch/i386/mm/init.c4
-rw-r--r--arch/ia64/kernel/acpi.c3
-rw-r--r--arch/ia64/mm/init.c5
-rw-r--r--arch/ia64/sn/kernel/io_acpi_init.c3
-rw-r--r--arch/m32r/kernel/smpboot.c2
-rw-r--r--arch/mips/au1000/common/pci.c8
-rw-r--r--arch/mips/kernel/linux32.c16
-rw-r--r--arch/mips/kernel/mips_ksyms.c2
-rw-r--r--arch/mips/kernel/scall64-n32.S4
-rw-r--r--arch/mips/kernel/smp.c2
-rw-r--r--arch/mips/kernel/smtc.c1
-rw-r--r--arch/mips/kernel/time.c2
-rw-r--r--arch/mips/lib/Makefile2
-rw-r--r--arch/mips/lib/csum_partial.S442
-rw-r--r--arch/mips/lib/csum_partial_copy.c52
-rw-r--r--arch/mips/mips-boards/generic/time.c9
-rw-r--r--arch/mips/mips-boards/malta/malta_mtd.c63
-rw-r--r--arch/mips/mips-boards/sead/sead_int.c4
-rw-r--r--arch/mips/mm/pg-r4k.c9
-rw-r--r--arch/mips/mm/tlb-r4k.c1
-rw-r--r--arch/mips/pci/ops-pnx8550.c2
-rw-r--r--arch/mips/philips/pnx8550/common/time.c45
-rw-r--r--arch/parisc/kernel/smp.c2
-rw-r--r--arch/powerpc/Kconfig4
-rw-r--r--arch/powerpc/boot/dts/lite5200.dts10
-rw-r--r--arch/powerpc/boot/dts/lite5200b.dts10
-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_defconfig250
-rw-r--r--arch/powerpc/configs/ps3_defconfig39
-rw-r--r--arch/powerpc/configs/pseries_defconfig224
-rw-r--r--arch/powerpc/kernel/asm-offsets.c3
-rw-r--r--arch/powerpc/kernel/entry_64.S13
-rw-r--r--arch/powerpc/kernel/pci_32.c5
-rw-r--r--arch/powerpc/kernel/smp.c2
-rw-r--r--arch/powerpc/mm/hugetlbpage.c8
-rw-r--r--arch/powerpc/platforms/52xx/lite5200.c1
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_common.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/iseries/lpevents.c4
-rw-r--r--arch/powerpc/platforms/iseries/mf.c4
-rw-r--r--arch/powerpc/platforms/iseries/proc.c11
-rw-r--r--arch/powerpc/platforms/iseries/setup.c3
-rw-r--r--arch/powerpc/platforms/iseries/viopath.c4
-rw-r--r--arch/powerpc/platforms/maple/setup.c1
-rw-r--r--arch/powerpc/platforms/pasemi/setup.c1
-rw-r--r--arch/powerpc/platforms/pseries/hvCall.S9
-rw-r--r--arch/powerpc/platforms/pseries/hvCall_inst.c4
-rw-r--r--arch/powerpc/platforms/pseries/iommu.c3
-rw-r--r--arch/powerpc/platforms/pseries/xics.c5
-rw-r--r--arch/powerpc/sysdev/Makefile2
-rw-r--r--arch/powerpc/sysdev/mmio_nvram.c40
-rw-r--r--arch/s390/kernel/head31.S12
-rw-r--r--arch/s390/kernel/head64.S12
-rw-r--r--arch/s390/kernel/setup.c2
-rw-r--r--arch/s390/kernel/smp.c5
-rw-r--r--arch/s390/lib/uaccess_pt.c3
-rw-r--r--arch/s390/lib/uaccess_std.c3
-rw-r--r--arch/s390/mm/vmem.c3
-rw-r--r--arch/sparc64/kernel/smp.c2
-rw-r--r--arch/x86_64/defconfig16
-rw-r--r--arch/x86_64/ia32/ia32_aout.c4
-rw-r--r--arch/x86_64/kernel/cpufreq/Kconfig1
-rw-r--r--arch/x86_64/kernel/early-quirks.c5
-rw-r--r--arch/x86_64/kernel/io_apic.c124
-rw-r--r--arch/x86_64/kernel/pci-calgary.c11
-rw-r--r--arch/x86_64/kernel/time.c25
-rw-r--r--drivers/acpi/Kconfig11
-rw-r--r--drivers/acpi/bus.c3
-rw-r--r--drivers/acpi/ec.c6
-rw-r--r--drivers/acpi/ibm_acpi.c13
-rw-r--r--drivers/acpi/processor_core.c3
-rw-r--r--drivers/acpi/processor_perflib.c4
-rw-r--r--drivers/acpi/toshiba_acpi.c9
-rw-r--r--drivers/ata/Kconfig2
-rw-r--r--drivers/ata/pata_hpt37x.c6
-rw-r--r--drivers/block/pktcdvd.c49
-rw-r--r--drivers/bluetooth/hci_usb.c7
-rw-r--r--drivers/cdrom/cdrom.c8
-rw-r--r--drivers/char/agp/agp.h4
-rw-r--r--drivers/char/agp/amd64-agp.c9
-rw-r--r--drivers/char/agp/generic.c11
-rw-r--r--drivers/char/agp/intel-agp.c172
-rw-r--r--drivers/char/agp/sgi-agp.c9
-rw-r--r--drivers/char/drm/i915_irq.c2
-rw-r--r--drivers/char/hw_random/amd-rng.c2
-rw-r--r--drivers/char/hw_random/geode-rng.c2
-rw-r--r--drivers/char/hw_random/intel-rng.c34
-rw-r--r--drivers/char/hw_random/ixp4xx-rng.c2
-rw-r--r--drivers/char/hw_random/via-rng.c2
-rw-r--r--drivers/char/ip2/i2ellis.h4
-rw-r--r--drivers/char/mem.c4
-rw-r--r--drivers/connector/cn_proc.c11
-rw-r--r--drivers/cpufreq/cpufreq_stats.c4
-rw-r--r--drivers/hid/Kconfig18
-rw-r--r--drivers/hid/hid-core.c18
-rw-r--r--drivers/hid/hid-input.c29
-rw-r--r--drivers/hwmon/hwmon-vid.c2
-rw-r--r--drivers/hwmon/w83793.c127
-rw-r--r--drivers/i2c/busses/Kconfig9
-rw-r--r--drivers/i2c/busses/i2c-mv64xxx.c4
-rw-r--r--drivers/i2c/busses/i2c-pnx.c7
-rw-r--r--drivers/i2c/chips/m41t00.c1
-rw-r--r--drivers/i2c/i2c-core.c28
-rw-r--r--drivers/ide/pci/atiixp.c18
-rw-r--r--drivers/ide/pci/via82cxxx.c138
-rw-r--r--drivers/ieee1394/sbp2.c2
-rw-r--r--drivers/infiniband/core/cma.c17
-rw-r--r--drivers/infiniband/core/ucma.c11
-rw-r--r--drivers/infiniband/hw/ehca/ehca_hca.c8
-rw-r--r--drivers/infiniband/hw/ehca/ehca_irq.c2
-rw-r--r--drivers/infiniband/hw/ehca/ehca_iverbs.h4
-rw-r--r--drivers/infiniband/hw/ehca/ehca_main.c10
-rw-r--r--drivers/infiniband/hw/ehca/ehca_mrmw.c4
-rw-r--r--drivers/infiniband/hw/ehca/ehca_qp.c4
-rw-r--r--drivers/infiniband/hw/mthca/mthca_cq.c8
-rw-r--r--drivers/infiniband/hw/mthca/mthca_memfree.c2
-rw-r--r--drivers/infiniband/hw/mthca/mthca_qp.c26
-rw-r--r--drivers/infiniband/ulp/iser/iscsi_iser.c4
-rw-r--r--drivers/infiniband/ulp/iser/iser_initiator.c26
-rw-r--r--drivers/kvm/kvm.h106
-rw-r--r--drivers/kvm/kvm_main.c155
-rw-r--r--drivers/kvm/mmu.c1114
-rw-r--r--drivers/kvm/paging_tmpl.h260
-rw-r--r--drivers/kvm/svm.c121
-rw-r--r--drivers/kvm/vmx.c182
-rw-r--r--drivers/kvm/x86_emulate.c2
-rw-r--r--drivers/leds/leds-s3c24xx.c2
-rw-r--r--drivers/macintosh/via-pmu.c1
-rw-r--r--drivers/md/raid1.c13
-rw-r--r--drivers/md/raid10.c11
-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.c2
-rw-r--r--drivers/media/video/vivi.c7
-rw-r--r--drivers/mmc/at91_mci.c11
-rw-r--r--drivers/mmc/imxmmc.c3
-rw-r--r--drivers/mmc/mmci.c4
-rw-r--r--drivers/mmc/omap.c21
-rw-r--r--drivers/mmc/pxamci.c2
-rw-r--r--drivers/mmc/tifm_sd.c3
-rw-r--r--drivers/net/Space.c11
-rw-r--r--drivers/net/bnx2.c75
-rw-r--r--drivers/net/chelsio/my3126.c5
-rw-r--r--drivers/net/e1000/e1000_main.c6
-rw-r--r--drivers/net/forcedeth.c111
-rw-r--r--drivers/net/ifb.c4
-rw-r--r--drivers/net/ixgb/ixgb.h1
-rw-r--r--drivers/net/ixgb/ixgb_ethtool.c1
-rw-r--r--drivers/net/ixgb/ixgb_hw.c3
-rw-r--r--drivers/net/ixgb/ixgb_main.c57
-rw-r--r--drivers/net/loopback.c4
-rw-r--r--drivers/net/pcmcia/3c574_cs.c1
-rw-r--r--drivers/net/pcmcia/3c589_cs.c1
-rw-r--r--drivers/net/pcmcia/com20020_cs.c1
-rw-r--r--drivers/net/pcmcia/pcnet_cs.c2
-rw-r--r--drivers/net/pcmcia/xirc2ps_cs.c1
-rw-r--r--drivers/net/qla3xxx.c38
-rw-r--r--drivers/net/sungem.c3
-rw-r--r--drivers/net/sungem_phy.c179
-rw-r--r--drivers/net/sungem_phy.h7
-rw-r--r--drivers/net/tg3.c17
-rw-r--r--drivers/net/tg3.h4
-rw-r--r--drivers/net/wireless/ipw2100.c2
-rw-r--r--drivers/net/wireless/netwave_cs.c1
-rw-r--r--drivers/net/wireless/ray_cs.c1
-rw-r--r--drivers/net/wireless/wl3501_cs.c1
-rw-r--r--drivers/pci/Kconfig2
-rw-r--r--drivers/pci/pci.c3
-rw-r--r--drivers/pci/quirks.c16
-rw-r--r--drivers/pci/search.c24
-rw-r--r--drivers/rtc/rtc-at91rm9200.c2
-rw-r--r--drivers/rtc/rtc-rs5c372.c535
-rw-r--r--drivers/rtc/rtc-sh.c4
-rw-r--r--drivers/s390/char/vmcp.c2
-rw-r--r--drivers/s390/cio/cio.c12
-rw-r--r--drivers/s390/net/Kconfig5
-rw-r--r--drivers/s390/net/qeth.h2
-rw-r--r--drivers/s390/net/qeth_main.c217
-rw-r--r--drivers/scsi/pcmcia/nsp_cs.c1
-rw-r--r--drivers/scsi/pcmcia/sym53c500_cs.c1
-rw-r--r--drivers/serial/8250.c2
-rw-r--r--drivers/serial/mpc52xx_uart.c2
-rw-r--r--drivers/usb/class/usblp.c1
-rw-r--r--drivers/usb/core/endpoint.c2
-rw-r--r--drivers/usb/gadget/omap_udc.c245
-rw-r--r--drivers/usb/gadget/omap_udc.h3
-rw-r--r--drivers/usb/host/uhci-hcd.c20
-rw-r--r--drivers/usb/input/Kconfig8
-rw-r--r--drivers/usb/input/hid-core.c40
-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/misc/sisusbvga/sisusb_con.c12
-rw-r--r--drivers/usb/net/asix.c2
-rw-r--r--drivers/usb/serial/funsoft.c2
-rw-r--r--drivers/usb/serial/option.c3
-rw-r--r--drivers/usb/storage/unusual_devs.h17
-rw-r--r--drivers/video/backlight/corgi_bl.c2
-rw-r--r--drivers/video/backlight/hp680_bl.c2
-rw-r--r--drivers/video/backlight/locomolcd.c2
-rw-r--r--fs/adfs/dir_f.c2
-rw-r--r--fs/bad_inode.c330
-rw-r--r--fs/binfmt_elf.c8
-rw-r--r--fs/block_dev.c2
-rw-r--r--fs/buffer.c6
-rw-r--r--fs/gfs2/ops_fstype.c4
-rw-r--r--fs/nfs/file.c16
-rw-r--r--fs/ntfs/ChangeLog7
-rw-r--r--fs/ntfs/Makefile2
-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/proc/proc_misc.c8
-rw-r--r--fs/super.c4
-rw-r--r--fs/ufs/balloc.c25
-rw-r--r--fs/ufs/inode.c41
-rw-r--r--include/acpi/acconfig.h2
-rw-r--r--include/asm-alpha/posix_types.h2
-rw-r--r--include/asm-arm/arch-iop32x/iop32x.h2
-rw-r--r--include/asm-arm/cacheflush.h10
-rw-r--r--include/asm-arm/hardware/iop3xx.h6
-rw-r--r--include/asm-i386/boot.h3
-rw-r--r--include/asm-ia64/posix_types.h2
-rw-r--r--include/asm-mips/checksum.h31
-rw-r--r--include/asm-mips/irq.h6
-rw-r--r--include/asm-parisc/cacheflush.h2
-rw-r--r--include/asm-powerpc/atomic.h8
-rw-r--r--include/asm-powerpc/bug.h27
-rw-r--r--include/asm-powerpc/hvcall.h2
-rw-r--r--include/asm-powerpc/mpc52xx.h1
-rw-r--r--include/asm-powerpc/posix_types.h2
-rw-r--r--include/asm-s390/futex.h4
-rw-r--r--include/asm-s390/posix_types.h2
-rw-r--r--include/asm-x86_64/bitops.h34
-rw-r--r--include/asm-xtensa/posix_types.h2
-rw-r--r--include/linux/acpi.h1
-rw-r--r--include/linux/fs.h3
-rw-r--r--include/linux/hid-debug.h7
-rw-r--r--include/linux/highmem.h2
-rw-r--r--include/linux/kernel.h3
-rw-r--r--include/linux/kvm.h11
-rw-r--r--include/linux/magic.h1
-rw-r--r--include/linux/mm.h3
-rw-r--r--include/linux/mmc/mmc.h2
-rw-r--r--include/linux/mmzone.h8
-rw-r--r--include/linux/netfilter/nf_conntrack_tcp.h2
-rw-r--r--include/linux/netfilter_arp/arp_tables.h1
-rw-r--r--include/linux/pci_ids.h1
-rw-r--r--include/linux/profile.h1
-rw-r--r--include/linux/swap.h2
-rw-r--r--include/linux/videodev2.h9
-rw-r--r--include/net/ieee80211.h2
-rw-r--r--include/net/tcp.h2
-rw-r--r--include/net/x25.h1
-rw-r--r--include/sound/version.h2
-rw-r--r--init/Makefile10
-rw-r--r--init/main.c15
-rw-r--r--init/version.c10
-rw-r--r--kernel/cpu.c4
-rw-r--r--kernel/irq/spurious.c2
-rw-r--r--kernel/module.c38
-rw-r--r--kernel/params.c6
-rw-r--r--kernel/power/swap.c9
-rw-r--r--kernel/power/user.c7
-rw-r--r--kernel/profile.c16
-rw-r--r--kernel/sched.c2
-rw-r--r--mm/bounce.c4
-rw-r--r--mm/memory.c2
-rw-r--r--mm/memory_hotplug.c6
-rw-r--r--mm/oom_kill.c12
-rw-r--r--mm/page_alloc.c32
-rw-r--r--mm/slab.c4
-rw-r--r--mm/swapfile.c8
-rw-r--r--mm/truncate.c12
-rw-r--r--mm/vmscan.c33
-rw-r--r--net/bluetooth/cmtp/capi.c39
-rw-r--r--net/bluetooth/hci_sysfs.c7
-rw-r--r--net/bluetooth/rfcomm/sock.c9
-rw-r--r--net/bluetooth/rfcomm/tty.c22
-rw-r--r--net/bridge/netfilter/ebtables.c3
-rw-r--r--net/core/pktgen.c156
-rw-r--r--net/ipv4/af_inet.c2
-rw-r--r--net/ipv4/devinet.c6
-rw-r--r--net/ipv4/netfilter.c7
-rw-r--r--net/ipv4/netfilter/Kconfig4
-rw-r--r--net/ipv4/netfilter/ip_tables.c10
-rw-r--r--net/ipv4/netfilter/ipt_MASQUERADE.c5
-rw-r--r--net/ipv4/netfilter/nf_nat_standalone.c2
-rw-r--r--net/ipv4/tcp_ipv4.c2
-rw-r--r--net/ipv6/addrconf.c4
-rw-r--r--net/ipv6/af_inet6.c2
-rw-r--r--net/ipv6/netfilter/nf_conntrack_reasm.c2
-rw-r--r--net/netfilter/Kconfig25
-rw-r--r--net/netfilter/nf_conntrack_netbios_ns.c1
-rw-r--r--net/netfilter/xt_hashlimit.c2
-rw-r--r--net/netlabel/netlabel_cipso_v4.c6
-rw-r--r--net/netlink/af_netlink.c3
-rw-r--r--net/sctp/sm_make_chunk.c4
-rw-r--r--net/x25/af_x25.c2
-rw-r--r--net/x25/x25_facilities.c12
-rw-r--r--net/xfrm/xfrm_user.c73
-rw-r--r--scripts/kconfig/qconf.cc3
-rw-r--r--scripts/mod/modpost.c27
-rw-r--r--security/selinux/ss/context.h23
-rw-r--r--security/selinux/ss/mls.c30
-rw-r--r--security/selinux/ss/mls.h20
-rw-r--r--security/selinux/ss/services.c7
-rw-r--r--sound/pci/cmipci.c3
-rw-r--r--sound/pci/echoaudio/midi.c6
-rw-r--r--sound/pci/hda/hda_generic.c5
-rw-r--r--sound/pci/hda/hda_intel.c14
-rw-r--r--sound/sparc/cs4231.c26
-rw-r--r--sound/usb/usbaudio.c10
-rw-r--r--sound/usb/usbmixer.c2
370 files changed, 7686 insertions, 2926 deletions
diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt
index 73e794f0ff09..debf6813934a 100644
--- a/Documentation/cachetlb.txt
+++ b/Documentation/cachetlb.txt
@@ -373,14 +373,15 @@ maps this page at its virtual address.
373 likely that you will need to flush the instruction cache 373 likely that you will need to flush the instruction cache
374 for copy_to_user_page(). 374 for copy_to_user_page().
375 375
376 void flush_anon_page(struct page *page, unsigned long vmaddr) 376 void flush_anon_page(struct vm_area_struct *vma, struct page *page,
377 unsigned long vmaddr)
377 When the kernel needs to access the contents of an anonymous 378 When the kernel needs to access the contents of an anonymous
378 page, it calls this function (currently only 379 page, it calls this function (currently only
379 get_user_pages()). Note: flush_dcache_page() deliberately 380 get_user_pages()). Note: flush_dcache_page() deliberately
380 doesn't work for an anonymous page. The default 381 doesn't work for an anonymous page. The default
381 implementation is a nop (and should remain so for all coherent 382 implementation is a nop (and should remain so for all coherent
382 architectures). For incoherent architectures, it should flush 383 architectures). For incoherent architectures, it should flush
383 the cache of the page at vmaddr in the current user process. 384 the cache of the page at vmaddr.
384 385
385 void flush_kernel_dcache_page(struct page *page) 386 void flush_kernel_dcache_page(struct page *page)
386 When the kernel needs to modify a user page is has obtained 387 When the kernel needs to modify a user page is has obtained
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 30f3c8c9c12a..fc532395d116 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -226,6 +226,23 @@ Who: Jean Delvare <khali@linux-fr.org>
226 226
227--------------------------- 227---------------------------
228 228
229What: i2c_adapter.dev
230 i2c_adapter.list
231When: July 2007
232Why: Superfluous, given i2c_adapter.class_dev:
233 * The "dev" was a stand-in for the physical device node that legacy
234 drivers would not have; but now it's almost always present. Any
235 remaining legacy drivers must upgrade (they now trigger warnings).
236 * The "list" duplicates class device children.
237 The delay in removing this is so upgraded lm_sensors and libsensors
238 can get deployed. (Removal causes minor changes in the sysfs layout,
239 notably the location of the adapter type name and parenting the i2c
240 client hardware directly from their controller.)
241Who: Jean Delvare <khali@linux-fr.org>,
242 David Brownell <dbrownell@users.sourceforge.net>
243
244---------------------------
245
229What: IPv4 only connection tracking/NAT/helpers 246What: IPv4 only connection tracking/NAT/helpers
230When: 2.6.22 247When: 2.6.22
231Why: The new layer 3 independant connection tracking replaces the old 248Why: The new layer 3 independant connection tracking replaces the old
@@ -256,3 +273,48 @@ Why: Speedstep-centrino driver with ACPI hooks and acpi-cpufreq driver are
256Who: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> 273Who: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
257 274
258--------------------------- 275---------------------------
276
277What: ACPI hotkey driver (CONFIG_ACPI_HOTKEY)
278When: 2.6.21
279Why: hotkey.c was an attempt to consolidate multiple drivers that use
280 ACPI to implement hotkeys. However, hotkeys are not documented
281 in the ACPI specification, so the drivers used undocumented
282 vendor-specific hooks and turned out to be more different than
283 the same.
284
285 Further, the keys and the features supplied by each platform
286 are different, so there will always be a need for
287 platform-specific drivers.
288
289 So the new plan is to delete hotkey.c and instead, work on the
290 platform specific drivers to try to make them look the same
291 to the user when they supply the same features.
292
293 hotkey.c has always depended on CONFIG_EXPERIMENTAL
294
295Who: Len Brown <len.brown@intel.com>
296
297---------------------------
298
299What: /sys/firmware/acpi/namespace
300When: 2.6.21
301Why: The ACPI namespace is effectively the symbol list for
302 the BIOS. The device names are completely arbitrary
303 and have no place being exposed to user-space.
304
305 For those interested in the BIOS ACPI namespace,
306 the BIOS can be extracted and disassembled with acpidump
307 and iasl as documented in the pmtools package here:
308 http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/utils
309
310Who: Len Brown <len.brown@intel.com>
311
312---------------------------
313
314What: /proc/acpi/button
315When: August 2007
316Why: /proc/acpi/button has been replaced by events to the input layer
317 since 2.6.20.
318Who: Len Brown <len.brown@intel.com>
319
320---------------------------
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index 790ef6fbe495..28bfea75bcf2 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -171,6 +171,7 @@ prototypes:
171 int (*releasepage) (struct page *, int); 171 int (*releasepage) (struct page *, int);
172 int (*direct_IO)(int, struct kiocb *, const struct iovec *iov, 172 int (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
173 loff_t offset, unsigned long nr_segs); 173 loff_t offset, unsigned long nr_segs);
174 int (*launder_page) (struct page *);
174 175
175locking rules: 176locking rules:
176 All except set_page_dirty may block 177 All except set_page_dirty may block
@@ -188,6 +189,7 @@ bmap: yes
188invalidatepage: no yes 189invalidatepage: no yes
189releasepage: no yes 190releasepage: no yes
190direct_IO: no 191direct_IO: no
192launder_page: no yes
191 193
192 ->prepare_write(), ->commit_write(), ->sync_page() and ->readpage() 194 ->prepare_write(), ->commit_write(), ->sync_page() and ->readpage()
193may be called from the request handler (/dev/loop). 195may be called from the request handler (/dev/loop).
@@ -281,6 +283,12 @@ buffers from the page in preparation for freeing it. It returns zero to
281indicate that the buffers are (or may be) freeable. If ->releasepage is zero, 283indicate that the buffers are (or may be) freeable. If ->releasepage is zero,
282the kernel assumes that the fs has no private interest in the buffers. 284the kernel assumes that the fs has no private interest in the buffers.
283 285
286 ->launder_page() may be called prior to releasing a page if
287it is still found to be dirty. It returns zero if the page was successfully
288cleaned, or an error value if not. Note that in order to prevent the page
289getting mapped back in and redirtied, it needs to be kept locked
290across the entire operation.
291
284 Note: currently almost all instances of address_space methods are 292 Note: currently almost all instances of address_space methods are
285using BKL for internal serialization and that's one of the worst sources 293using BKL for internal serialization and that's one of the worst sources
286of contention. Normally they are calling library functions (in fs/buffer.c) 294of contention. Normally they are calling library functions (in fs/buffer.c)
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/kdump/kdump.txt b/Documentation/kdump/kdump.txt
index 99f2d4d4bf7d..5af6676a88f0 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, and ppc64 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
@@ -54,59 +54,64 @@ memory," in two ways:
54Setup and Installation 54Setup and Installation
55====================== 55======================
56 56
57Install kexec-tools and the Kdump patch 57Install kexec-tools
58--------------------------------------- 58-------------------
59 59
601) Login as the root user. 601) Login as the root user.
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
64 http://www.xmission.com/~ebiederm/files/kexec/kexec-tools-1.101.tar.gz 64http://www.kernel.org/pub/linux/kernel/people/horms/kexec-tools/kexec-tools-testing-20061214.tar.gz
65 65
663) Unpack the tarball with the tar command, as follows: 66Note: Latest kexec-tools-testing git tree is available at
67
68 tar xvpzf kexec-tools-1.101.tar.gz
69
704) Download the latest consolidated Kdump patch from the following URL:
71
72 http://lse.sourceforge.net/kdump/
73 67
74 (This location is being used until all the user-space Kdump patches 68git://git.kernel.org/pub/scm/linux/kernel/git/horms/kexec-tools-testing.git
75 are integrated with the kexec-tools package.) 69or
70http://www.kernel.org/git/?p=linux/kernel/git/horms/kexec-tools-testing.git;a=summary
76 71
775) Change to the kexec-tools-1.101 directory, as follows: 723) Unpack the tarball with the tar command, as follows:
78 73
79 cd kexec-tools-1.101 74 tar xvpzf kexec-tools-testing-20061214.tar.gz
80 75
816) Apply the consolidated patch to the kexec-tools-1.101 source tree 764) Change to the kexec-tools-1.101 directory, as follows:
82 with the patch command, as follows. (Modify the path to the downloaded
83 patch as necessary.)
84 77
85 patch -p1 < /path-to-kdump-patch/kexec-tools-1.101-kdump.patch 78 cd kexec-tools-testing-20061214
86 79
877) Configure the package, as follows: 805) Configure the package, as follows:
88 81
89 ./configure 82 ./configure
90 83
918) Compile the package, as follows: 846) Compile the package, as follows:
92 85
93 make 86 make
94 87
959) Install the package, as follows: 887) Install the package, as follows:
96 89
97 make install 90 make install
98 91
99 92
100Download and build the system and dump-capture kernels 93Build the system and dump-capture kernels
101------------------------------------------------------ 94-----------------------------------------
95There are two possible methods of using Kdump.
96
971) Build a separate custom dump-capture kernel for capturing the
98 kernel core dump.
99
1002) Or use the system kernel binary itself as dump-capture kernel and there is
101 no need to build a separate dump-capture kernel. This is possible
102 only with the architecutres which support a relocatable kernel. As
103 of today i386 and ia64 architectures support relocatable kernel.
104
105Building a relocatable kernel is advantageous from the point of view that
106one does not have to build a second kernel for capturing the dump. But
107at the same time one might want to build a custom dump capture kernel
108suitable to his needs.
102 109
103Download the mainline (vanilla) kernel source code (2.6.13-rc1 or newer) 110Following are the configuration setting required for system and
104from http://www.kernel.org. Two kernels must be built: a system kernel 111dump-capture kernels for enabling kdump support.
105and a dump-capture kernel. Use the following steps to configure these
106kernels with the necessary kexec and Kdump features:
107 112
108System kernel 113System kernel config options
109------------- 114----------------------------
110 115
1111) Enable "kexec system call" in "Processor type and features." 1161) Enable "kexec system call" in "Processor type and features."
112 117
@@ -132,88 +137,160 @@ System kernel
132 analysis tools require a vmlinux with debug symbols in order to read 137 analysis tools require a vmlinux with debug symbols in order to read
133 and analyze a dump file. 138 and analyze a dump file.
134 139
1354) Make and install the kernel and its modules. Update the boot loader 140Dump-capture kernel config options (Arch Independent)
136 (such as grub, yaboot, or lilo) configuration files as necessary. 141-----------------------------------------------------
137
1385) Boot the system kernel with the boot parameter "crashkernel=Y@X",
139 where Y specifies how much memory to reserve for the dump-capture kernel
140 and X specifies the beginning of this reserved memory. For example,
141 "crashkernel=64M@16M" tells the system kernel to reserve 64 MB of memory
142 starting at physical address 0x01000000 for the dump-capture kernel.
143
144 On x86 and x86_64, use "crashkernel=64M@16M".
145 142
146 On ppc64, use "crashkernel=128M@32M". 1431) Enable "kernel crash dumps" support under "Processor type and
144 features":
147 145
146 CONFIG_CRASH_DUMP=y
148 147
149The dump-capture kernel 1482) Enable "/proc/vmcore support" under "Filesystems" -> "Pseudo filesystems".
150-----------------------
151 149
1521) Under "General setup," append "-kdump" to the current string in 150 CONFIG_PROC_VMCORE=y
153 "Local version." 151 (CONFIG_PROC_VMCORE is set by default when CONFIG_CRASH_DUMP is selected.)
154 152
1552) On x86, enable high memory support under "Processor type and 153Dump-capture kernel config options (Arch Dependent, i386)
154--------------------------------------------------------
1551) On x86, enable high memory support under "Processor type and
156 features": 156 features":
157 157
158 CONFIG_HIGHMEM64G=y 158 CONFIG_HIGHMEM64G=y
159 or 159 or
160 CONFIG_HIGHMEM4G 160 CONFIG_HIGHMEM4G
161 161
1623) On x86 and x86_64, disable symmetric multi-processing support 1622) On x86 and x86_64, disable symmetric multi-processing support
163 under "Processor type and features": 163 under "Processor type and features":
164 164
165 CONFIG_SMP=n 165 CONFIG_SMP=n
166
166 (If CONFIG_SMP=y, then specify maxcpus=1 on the kernel command line 167 (If CONFIG_SMP=y, then specify maxcpus=1 on the kernel command line
167 when loading the dump-capture kernel, see section "Load the Dump-capture 168 when loading the dump-capture kernel, see section "Load the Dump-capture
168 Kernel".) 169 Kernel".)
169 170
1704) On ppc64, disable NUMA support and enable EMBEDDED support: 1713) If one wants to build and use a relocatable kernel,
172 Enable "Build a relocatable kernel" support under "Processor type and
173 features"
171 174
172 CONFIG_NUMA=n 175 CONFIG_RELOCATABLE=y
173 CONFIG_EMBEDDED=y
174 CONFIG_EEH=N for the dump-capture kernel
175 176
1765) Enable "kernel crash dumps" support under "Processor type and 1774) Use a suitable value for "Physical address where the kernel is
177 features": 178 loaded" (under "Processor type and features"). This only appears when
179 "kernel crash dumps" is enabled. A suitable value depends upon
180 whether kernel is relocatable or not.
181
182 If you are using a relocatable kernel use CONFIG_PHYSICAL_START=0x100000
183 This will compile the kernel for physical address 1MB, but given the fact
184 kernel is relocatable, it can be run from any physical address hence
185 kexec boot loader will load it in memory region reserved for dump-capture
186 kernel.
187
188 Otherwise it should be the start of memory region reserved for
189 second kernel using boot parameter "crashkernel=Y@X". Here X is
190 start of memory region reserved for dump-capture kernel.
191 Generally X is 16MB (0x1000000). So you can set
192 CONFIG_PHYSICAL_START=0x1000000
193
1945) Make and install the kernel and its modules. DO NOT add this kernel
195 to the boot loader configuration files.
178 196
179 CONFIG_CRASH_DUMP=y 197Dump-capture kernel config options (Arch Dependent, x86_64)
198----------------------------------------------------------
1991) On x86 and x86_64, disable symmetric multi-processing support
200 under "Processor type and features":
201
202 CONFIG_SMP=n
203
204 (If CONFIG_SMP=y, then specify maxcpus=1 on the kernel command line
205 when loading the dump-capture kernel, see section "Load the Dump-capture
206 Kernel".)
180 207
1816) Use a suitable value for "Physical address where the kernel is 2082) Use a suitable value for "Physical address where the kernel is
182 loaded" (under "Processor type and features"). This only appears when 209 loaded" (under "Processor type and features"). This only appears when
183 "kernel crash dumps" is enabled. By default this value is 0x1000000 210 "kernel crash dumps" is enabled. By default this value is 0x1000000
184 (16MB). It should be the same as X in the "crashkernel=Y@X" boot 211 (16MB). It should be the same as X in the "crashkernel=Y@X" boot
185 parameter discussed above. 212 parameter.
186 213
187 On x86 and x86_64, use "CONFIG_PHYSICAL_START=0x1000000". 214 For x86_64, normally "CONFIG_PHYSICAL_START=0x1000000".
188 215
189 On ppc64 the value is automatically set at 32MB when 2163) Make and install the kernel and its modules. DO NOT add this kernel
190 CONFIG_CRASH_DUMP is set. 217 to the boot loader configuration files.
191
1926) Optionally enable "/proc/vmcore support" under "Filesystems" ->
193 "Pseudo filesystems".
194 218
195 CONFIG_PROC_VMCORE=y 219Dump-capture kernel config options (Arch Dependent, ppc64)
196 (CONFIG_PROC_VMCORE is set by default when CONFIG_CRASH_DUMP is selected.) 220----------------------------------------------------------
197 221
1987) Make and install the kernel and its modules. DO NOT add this kernel 222- Make and install the kernel and its modules. DO NOT add this kernel
199 to the boot loader configuration files. 223 to the boot loader configuration files.
200 224
225Dump-capture kernel config options (Arch Dependent, ia64)
226----------------------------------------------------------
227(To be filled)
228
229
230Boot into System Kernel
231=======================
232
2331) Make and install the kernel and its modules. Update the boot loader
234 (such as grub, yaboot, or lilo) configuration files as necessary.
235
2362) Boot the system kernel with the boot parameter "crashkernel=Y@X",
237 where Y specifies how much memory to reserve for the dump-capture kernel
238 and X specifies the beginning of this reserved memory. For example,
239 "crashkernel=64M@16M" tells the system kernel to reserve 64 MB of memory
240 starting at physical address 0x01000000 (16MB) for the dump-capture kernel.
241
242 On x86 and x86_64, use "crashkernel=64M@16M".
243
244 On ppc64, use "crashkernel=128M@32M".
201 245
202Load the Dump-capture Kernel 246Load the Dump-capture Kernel
203============================ 247============================
204 248
205After booting to the system kernel, load the dump-capture kernel using 249After booting to the system kernel, dump-capture kernel needs to be
206the following command: 250loaded.
251
252Based on the architecture and type of image (relocatable or not), one
253can choose to load the uncompressed vmlinux or compressed bzImage/vmlinuz
254of dump-capture kernel. Following is the summary.
255
256For i386:
257 - Use vmlinux if kernel is not relocatable.
258 - Use bzImage/vmlinuz if kernel is relocatable.
259For x86_64:
260 - Use vmlinux
261For ppc64:
262 - Use vmlinux
263For ia64:
264 (To be filled)
265
266If you are using a uncompressed vmlinux image then use following command
267to load dump-capture kernel.
207 268
208 kexec -p <dump-capture-kernel> \ 269 kexec -p <dump-capture-kernel-vmlinux-image> \
209 --initrd=<initrd-for-dump-capture-kernel> --args-linux \ 270 --initrd=<initrd-for-dump-capture-kernel> --args-linux \
210 --append="root=<root-dev> init 1 irqpoll" 271 --append="root=<root-dev> <arch-specific-options>"
211 272
273If you are using a compressed bzImage/vmlinuz, then use following command
274to load dump-capture kernel.
212 275
213Notes on loading the dump-capture kernel: 276 kexec -p <dump-capture-kernel-bzImage> \
277 --initrd=<initrd-for-dump-capture-kernel> \
278 --append="root=<root-dev> <arch-specific-options>"
279
280Following are the arch specific command line options to be used while
281loading dump-capture kernel.
282
283For i386 and x86_64:
284 "init 1 irqpoll maxcpus=1"
285
286For ppc64:
287 "init 1 maxcpus=1 noirqdistrib"
214 288
215* <dump-capture-kernel> must be a vmlinux image (that is, an 289For IA64
216 uncompressed ELF image). bzImage does not work at this time. 290 (To be filled)
291
292
293Notes on loading the dump-capture kernel:
217 294
218* By default, the ELF headers are stored in ELF64 format to support 295* By default, the ELF headers are stored in ELF64 format to support
219 systems with more than 4GB memory. The --elf32-core-headers option can 296 systems with more than 4GB memory. The --elf32-core-headers option can
@@ -231,6 +308,9 @@ Notes on loading the dump-capture kernel:
231* "init 1" boots the dump-capture kernel into single-user mode without 308* "init 1" boots the dump-capture kernel into single-user mode without
232 networking. If you want networking, use "init 3." 309 networking. If you want networking, use "init 3."
233 310
311* We generally don' have to bring up a SMP kernel just to capture the
312 dump. Hence generally it is useful either to build a UP dump-capture
313 kernel or specify maxcpus=1 option while loading dump-capture kernel.
234 314
235Kernel Panic 315Kernel Panic
236============ 316============
diff --git a/Documentation/powerpc/mpc52xx-device-tree-bindings.txt b/Documentation/powerpc/mpc52xx-device-tree-bindings.txt
index d077d764f82b..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
@@ -157,8 +163,8 @@ rtc@<addr> rtc *-rtc Real time clock
157mscan@<addr> mscan *-mscan CAN bus controller 163mscan@<addr> mscan *-mscan CAN bus controller
158pci@<addr> pci *-pci PCI bridge 164pci@<addr> pci *-pci PCI bridge
159serial@<addr> serial *-psc-uart PSC in serial mode 165serial@<addr> serial *-psc-uart PSC in serial mode
160i2s@<addr> i2s *-psc-i2s PSC in i2s mode 166i2s@<addr> sound *-psc-i2s PSC in i2s mode
161ac97@<addr> ac97 *-psc-ac97 PSC in ac97 mode 167ac97@<addr> sound *-psc-ac97 PSC in ac97 mode
162spi@<addr> spi *-psc-spi PSC in spi mode 168spi@<addr> spi *-psc-spi PSC in spi mode
163irda@<addr> irda *-psc-irda PSC in IrDA mode 169irda@<addr> irda *-psc-irda PSC in IrDA mode
164spi@<addr> spi *-spi MPC52xx spi device 170spi@<addr> spi *-spi MPC52xx spi device
diff --git a/Documentation/usb/acm.txt b/Documentation/usb/acm.txt
index 737d6104c3f3..17f5c2e1a570 100644
--- a/Documentation/usb/acm.txt
+++ b/Documentation/usb/acm.txt
@@ -46,6 +46,10 @@ Abstract Control Model (USB CDC ACM) specification.
46 46
47 3Com USR ISDN Pro TA 47 3Com USR ISDN Pro TA
48 48
49 Some cell phones also connect via USB. I know the following phones work:
50
51 SonyEricsson K800i
52
49 Unfortunately many modems and most ISDN TAs use proprietary interfaces and 53 Unfortunately many modems and most ISDN TAs use proprietary interfaces and
50thus won't work with this drivers. Check for ACM compliance before buying. 54thus won't work with this drivers. Check for ACM compliance before buying.
51 55
diff --git a/Documentation/x86_64/boot-options.txt b/Documentation/x86_64/boot-options.txt
index dbdcaf68e3ea..5c86ed6f0448 100644
--- a/Documentation/x86_64/boot-options.txt
+++ b/Documentation/x86_64/boot-options.txt
@@ -52,6 +52,10 @@ APICs
52 apicmaintimer. Useful when your PIT timer is totally 52 apicmaintimer. Useful when your PIT timer is totally
53 broken. 53 broken.
54 54
55 disable_8254_timer / enable_8254_timer
56 Enable interrupt 0 timer routing over the 8254 in addition to over
57 the IO-APIC. The kernel tries to set a sensible default.
58
55Early Console 59Early Console
56 60
57 syntax: earlyprintk=vga 61 syntax: earlyprintk=vga
diff --git a/MAINTAINERS b/MAINTAINERS
index d5a97d3e23c3..b0e33617273d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -207,16 +207,45 @@ S: Supported
207ACPI 207ACPI
208P: Len Brown 208P: Len Brown
209M: len.brown@intel.com 209M: len.brown@intel.com
210M: lenb@kernel.org
210L: linux-acpi@vger.kernel.org 211L: linux-acpi@vger.kernel.org
211W: http://acpi.sourceforge.net/ 212W: http://acpi.sourceforge.net/
212T: git kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git 213T: git kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
213S: Maintained 214S: Supported
215
216ACPI BATTERY DRIVERS
217P: Vladimir P. Lebedev
218M: vladimir.p.lebedev@intel.com
219L: linux-acpi@vger.kernel.org
220W: http://acpi.sourceforge.net/
221S: Supported
222
223ACPI EC DRIVER
224P: Alexey Starikovskiy
225M: alexey.y.starikovskiy@linux.intel.com
226L: linux-acpi@vger.kernel.org
227W: http://acpi.sourceforge.net/
228S: Supported
229
230ACPI FAN DRIVER
231P: Konstantin A. Karasyov
232M: konstantin.a.karasyov@intel.com
233L: linux-acpi@vger.kernel.org
234W: http://acpi.sourceforge.net/
235S: Supported
214 236
215ACPI PCI HOTPLUG DRIVER 237ACPI PCI HOTPLUG DRIVER
216P: Kristen Carlson Accardi 238P: Kristen Carlson Accardi
217M: kristen.c.accardi@intel.com 239M: kristen.c.accardi@intel.com
218L: pcihpd-discuss@lists.sourceforge.net 240L: pcihpd-discuss@lists.sourceforge.net
219S: Maintained 241S: Supported
242
243ACPI THERMAL DRIVER
244P: Konstantin A. Karasyov
245M: konstantin.a.karasyov@intel.com
246L: linux-acpi@vger.kernel.org
247W: http://acpi.sourceforge.net/
248S: Supported
220 249
221AD1816 SOUND DRIVER 250AD1816 SOUND DRIVER
222P: Thorsten Knabe 251P: Thorsten Knabe
@@ -412,20 +441,32 @@ S: Maintained
412ARM/INTEL IOP32X ARM ARCHITECTURE 441ARM/INTEL IOP32X ARM ARCHITECTURE
413P: Lennert Buytenhek 442P: Lennert Buytenhek
414M: kernel@wantstofly.org 443M: kernel@wantstofly.org
444P: Dan Williams
445M: dan.j.williams@intel.com
415L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 446L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
416S: Maintained 447S: Supported
448
449ARM/INTEL IOP33X ARM ARCHITECTURE
450P: Dan Williams
451M: dan.j.williams@intel.com
452L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
453S: Supported
417 454
418ARM/INTEL IOP13XX ARM ARCHITECTURE 455ARM/INTEL IOP13XX ARM ARCHITECTURE
419P: Lennert Buytenhek 456P: Lennert Buytenhek
420M: kernel@wantstofly.org 457M: kernel@wantstofly.org
458P: Dan Williams
459M: dan.j.williams@intel.com
421L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 460L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
422S: Maintained 461S: Supported
423 462
424ARM/INTEL IQ81342EX MACHINE SUPPORT 463ARM/INTEL IQ81342EX MACHINE SUPPORT
425P: Lennert Buytenhek 464P: Lennert Buytenhek
426M: kernel@wantstofly.org 465M: kernel@wantstofly.org
466P: Dan Williams
467M: dan.j.williams@intel.com
427L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 468L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
428S: Maintained 469S: Supported
429 470
430ARM/INTEL IXP2000 ARM ARCHITECTURE 471ARM/INTEL IXP2000 ARM ARCHITECTURE
431P: Lennert Buytenhek 472P: Lennert Buytenhek
@@ -448,8 +489,10 @@ S: Maintained
448ARM/INTEL XSC3 (MANZANO) ARM CORE 489ARM/INTEL XSC3 (MANZANO) ARM CORE
449P: Lennert Buytenhek 490P: Lennert Buytenhek
450M: kernel@wantstofly.org 491M: kernel@wantstofly.org
492P: Dan Williams
493M: dan.j.williams@intel.com
451L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 494L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
452S: Maintained 495S: Supported
453 496
454ARM/IP FABRICS DOUBLE ESPRESSO MACHINE SUPPORT 497ARM/IP FABRICS DOUBLE ESPRESSO MACHINE SUPPORT
455P: Lennert Buytenhek 498P: Lennert Buytenhek
@@ -532,13 +575,13 @@ L: netdev@vger.kernel.org
532S: Maintained 575S: Maintained
533 576
534ASUS ACPI EXTRAS DRIVER 577ASUS ACPI EXTRAS DRIVER
578P: Corentin Chary
579M: corentincj@iksaif.net
535P: Karol Kozimor 580P: Karol Kozimor
536M: sziwan@users.sourceforge.net 581M: sziwan@users.sourceforge.net
537P: Julien Lerouge
538M: julien.lerouge@free.fr
539L: acpi4asus-user@lists.sourceforge.net 582L: acpi4asus-user@lists.sourceforge.net
540W: http://sourceforge.net/projects/acpi4asus 583W: http://sourceforge.net/projects/acpi4asus
541W: http://julien.lerouge.free.fr 584W: http://xf.iksaif.net/acpi4asus
542S: Maintained 585S: Maintained
543 586
544ATA OVER ETHERNET DRIVER 587ATA OVER ETHERNET DRIVER
@@ -1071,7 +1114,7 @@ DOCKING STATION DRIVER
1071P: Kristen Carlson Accardi 1114P: Kristen Carlson Accardi
1072M: kristen.c.accardi@intel.com 1115M: kristen.c.accardi@intel.com
1073L: linux-acpi@vger.kernel.org 1116L: linux-acpi@vger.kernel.org
1074S: Maintained 1117S: Supported
1075 1118
1076DOUBLETALK DRIVER 1119DOUBLETALK DRIVER
1077P: James R. Van Zandt 1120P: James R. Van Zandt
@@ -1564,10 +1607,9 @@ T: git kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6.git
1564S: Maintained 1607S: Maintained
1565 1608
1566IDE/ATAPI CDROM DRIVER 1609IDE/ATAPI CDROM DRIVER
1567P: Jens Axboe 1610P: Alan Cox
1568M: axboe@kernel.dk 1611M: alan@lxorguk.ukuu.org.uk
1569L: linux-kernel@vger.kernel.org 1612L: linux-ide@vger.kernel.org
1570W: http://www.kernel.dk
1571S: Maintained 1613S: Maintained
1572 1614
1573IDE/ATAPI FLOPPY DRIVERS 1615IDE/ATAPI FLOPPY DRIVERS
@@ -2522,7 +2564,7 @@ PCIE HOTPLUG DRIVER
2522P: Kristen Carlson Accardi 2564P: Kristen Carlson Accardi
2523M: kristen.c.accardi@intel.com 2565M: kristen.c.accardi@intel.com
2524L: pcihpd-discuss@lists.sourceforge.net 2566L: pcihpd-discuss@lists.sourceforge.net
2525S: Maintained 2567S: Supported
2526 2568
2527PCMCIA SUBSYSTEM 2569PCMCIA SUBSYSTEM
2528P: Linux PCMCIA Team 2570P: Linux PCMCIA Team
@@ -2580,6 +2622,12 @@ P: Adam Belay
2580M: ambx1@neo.rr.com 2622M: ambx1@neo.rr.com
2581S: Maintained 2623S: Maintained
2582 2624
2625PNXxxxx I2C DRIVER
2626P: Vitaly Wool
2627M: vitalywool@gmail.com
2628L: i2c@lm-sensors.org
2629S: Maintained
2630
2583PPP PROTOCOL DRIVERS AND COMPRESSORS 2631PPP PROTOCOL DRIVERS AND COMPRESSORS
2584P: Paul Mackerras 2632P: Paul Mackerras
2585M: paulus@samba.org 2633M: paulus@samba.org
@@ -2617,6 +2665,12 @@ M: promise@pnd-pc.demon.co.uk
2617W: http://www.pnd-pc.demon.co.uk/promise/ 2665W: http://www.pnd-pc.demon.co.uk/promise/
2618S: Maintained 2666S: Maintained
2619 2667
2668PROMISE SATA TX2/TX4 CONTROLLER LIBATA DRIVER
2669P: Mikael Pettersson
2670M: mikpe@it.uu.se
2671L: linux-ide@vger.kernel.org
2672S: Maintained
2673
2620PS3 PLATFORM SUPPORT 2674PS3 PLATFORM SUPPORT
2621P: Geoff Levand 2675P: Geoff Levand
2622M: geoffrey.levand@am.sony.com 2676M: geoffrey.levand@am.sony.com
@@ -3016,7 +3070,7 @@ SHPC HOTPLUG DRIVER
3016P: Kristen Carlson Accardi 3070P: Kristen Carlson Accardi
3017M: kristen.c.accardi@intel.com 3071M: kristen.c.accardi@intel.com
3018L: pcihpd-discuss@lists.sourceforge.net 3072L: pcihpd-discuss@lists.sourceforge.net
3019S: Maintained 3073S: Supported
3020 3074
3021SECURE DIGITAL HOST CONTROLLER INTERFACE DRIVER 3075SECURE DIGITAL HOST CONTROLLER INTERFACE DRIVER
3022P: Pierre Ossman 3076P: Pierre Ossman
@@ -3280,9 +3334,8 @@ W: http://www.linux-usb.org/gadget
3280S: Maintained 3334S: Maintained
3281 3335
3282USB HID/HIDBP DRIVERS 3336USB HID/HIDBP DRIVERS
3283P: Vojtech Pavlik 3337P: Jiri Kosina
3284M: vojtech@suse.cz 3338M: jkosina@suse.cz
3285L: linux-usb-users@lists.sourceforge.net
3286L: linux-usb-devel@lists.sourceforge.net 3339L: linux-usb-devel@lists.sourceforge.net
3287S: Maintained 3340S: Maintained
3288 3341
diff --git a/Makefile b/Makefile
index 0e9eee768288..477f52e3c7f6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 20 3SUBLEVEL = 20
4EXTRAVERSION =-rc3 4EXTRAVERSION =-rc5
5NAME = Homicidal Dwarf Hamster 5NAME = Homicidal Dwarf Hamster
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
@@ -368,14 +368,10 @@ endif
368# Detect when mixed targets is specified, and make a second invocation 368# Detect when mixed targets is specified, and make a second invocation
369# of make so .config is not included in this case either (for *config). 369# of make so .config is not included in this case either (for *config).
370 370
371PHONY += generated_headers 371no-dot-config-targets := clean mrproper distclean \
372
373generated_headers: include/linux/version.h include/linux/compile.h \
374 include/linux/utsrelease.h
375
376no-dot-config-targets := generated_headers clean mrproper distclean \
377 cscope TAGS tags help %docs check% \ 372 cscope TAGS tags help %docs check% \
378 headers_% kernelrelease kernelversion 373 include/linux/version.h headers_% \
374 kernelrelease kernelversion
379 375
380config-targets := 0 376config-targets := 0
381mixed-targets := 0 377mixed-targets := 0
@@ -738,16 +734,6 @@ debug_kallsyms: .tmp_map$(last_kallsyms)
738 734
739endif # ifdef CONFIG_KALLSYMS 735endif # ifdef CONFIG_KALLSYMS
740 736
741# compile.h changes depending on hostname, generation number, etc,
742# so we regenerate it always.
743# mkcompile_h will make sure to only update the
744# actual file if its content has changed.
745
746include/linux/compile.h: FORCE
747 @echo ' CHK $@'
748 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \
749 "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CC) $(CFLAGS)"
750
751# vmlinux image - including updated kernel symbols 737# vmlinux image - including updated kernel symbols
752vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE 738vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE
753ifdef CONFIG_HEADERS_CHECK 739ifdef CONFIG_HEADERS_CHECK
@@ -866,8 +852,8 @@ endif
866# prepare2 creates a makefile if using a separate output directory 852# prepare2 creates a makefile if using a separate output directory
867prepare2: prepare3 outputmakefile 853prepare2: prepare3 outputmakefile
868 854
869prepare1: prepare2 generated_headers include/asm include/config/auto.conf 855prepare1: prepare2 include/linux/version.h include/linux/utsrelease.h \
870 856 include/asm include/config/auto.conf
871ifneq ($(KBUILD_MODULES),) 857ifneq ($(KBUILD_MODULES),)
872 $(Q)mkdir -p $(MODVERDIR) 858 $(Q)mkdir -p $(MODVERDIR)
873 $(Q)rm -f $(MODVERDIR)/* 859 $(Q)rm -f $(MODVERDIR)/*
@@ -936,14 +922,14 @@ export INSTALL_HDR_PATH
936HDRARCHES=$(filter-out generic,$(patsubst $(srctree)/include/asm-%/Kbuild,%,$(wildcard $(srctree)/include/asm-*/Kbuild))) 922HDRARCHES=$(filter-out generic,$(patsubst $(srctree)/include/asm-%/Kbuild,%,$(wildcard $(srctree)/include/asm-*/Kbuild)))
937 923
938PHONY += headers_install_all 924PHONY += headers_install_all
939headers_install_all: generated_headers scripts_basic FORCE 925headers_install_all: include/linux/version.h scripts_basic FORCE
940 $(Q)$(MAKE) $(build)=scripts scripts/unifdef 926 $(Q)$(MAKE) $(build)=scripts scripts/unifdef
941 $(Q)for arch in $(HDRARCHES); do \ 927 $(Q)for arch in $(HDRARCHES); do \
942 $(MAKE) ARCH=$$arch -f $(srctree)/scripts/Makefile.headersinst obj=include BIASMDIR=-bi-$$arch ;\ 928 $(MAKE) ARCH=$$arch -f $(srctree)/scripts/Makefile.headersinst obj=include BIASMDIR=-bi-$$arch ;\
943 done 929 done
944 930
945PHONY += headers_install 931PHONY += headers_install
946headers_install: generated_headers scripts_basic FORCE 932headers_install: include/linux/version.h scripts_basic FORCE
947 @if [ ! -r $(srctree)/include/asm-$(ARCH)/Kbuild ]; then \ 933 @if [ ! -r $(srctree)/include/asm-$(ARCH)/Kbuild ]; then \
948 echo '*** Error: Headers not exportable for this architecture ($(ARCH))'; \ 934 echo '*** Error: Headers not exportable for this architecture ($(ARCH))'; \
949 exit 1 ; fi 935 exit 1 ; fi
@@ -1040,7 +1026,8 @@ CLEAN_FILES += vmlinux System.map \
1040# Directories & files removed with 'make mrproper' 1026# Directories & files removed with 'make mrproper'
1041MRPROPER_DIRS += include/config include2 usr/include 1027MRPROPER_DIRS += include/config include2 usr/include
1042MRPROPER_FILES += .config .config.old include/asm .version .old_version \ 1028MRPROPER_FILES += .config .config.old include/asm .version .old_version \
1043 include/linux/autoconf.h include/linux/utsrelease.h include/linux/version.h \ 1029 include/linux/autoconf.h include/linux/version.h \
1030 include/linux/utsrelease.h \
1044 Module.symvers tags TAGS cscope* 1031 Module.symvers tags TAGS cscope*
1045 1032
1046# clean - Delete most, but leave enough to build external modules 1033# clean - Delete most, but leave enough to build external modules
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 2db42b18f53f..8517c3c3eb33 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -436,7 +436,7 @@ __und_usr:
436 usr_entry 436 usr_entry
437 437
438 tst r3, #PSR_T_BIT @ Thumb mode? 438 tst r3, #PSR_T_BIT @ Thumb mode?
439 bne fpundefinstr @ ignore FP 439 bne __und_usr_unknown @ ignore FP
440 sub r4, r2, #4 440 sub r4, r2, #4
441 441
442 @ 442 @
@@ -448,7 +448,7 @@ __und_usr:
448 @ 448 @
4491: ldrt r0, [r4] 4491: ldrt r0, [r4]
450 adr r9, ret_from_exception 450 adr r9, ret_from_exception
451 adr lr, fpundefinstr 451 adr lr, __und_usr_unknown
452 @ 452 @
453 @ fallthrough to call_fpe 453 @ fallthrough to call_fpe
454 @ 454 @
@@ -476,7 +476,9 @@ __und_usr:
476 * Emulators may wish to make use of the following registers: 476 * Emulators may wish to make use of the following registers:
477 * r0 = instruction opcode. 477 * r0 = instruction opcode.
478 * r2 = PC+4 478 * r2 = PC+4
479 * r9 = normal "successful" return address
479 * r10 = this threads thread_info structure. 480 * r10 = this threads thread_info structure.
481 * lr = unrecognised instruction return address
480 */ 482 */
481call_fpe: 483call_fpe:
482 tst r0, #0x08000000 @ only CDP/CPRT/LDC/STC have bit 27 484 tst r0, #0x08000000 @ only CDP/CPRT/LDC/STC have bit 27
@@ -545,10 +547,12 @@ do_fpe:
545 547
546 .data 548 .data
547ENTRY(fp_enter) 549ENTRY(fp_enter)
548 .word fpundefinstr 550 .word no_fp
549 .text 551 .text
550 552
551fpundefinstr: 553no_fp: mov pc, lr
554
555__und_usr_unknown:
552 mov r0, sp 556 mov r0, sp
553 adr lr, ret_from_exception 557 adr lr, ret_from_exception
554 b do_undefinstr 558 b do_undefinstr
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index 6ff5e3ff6cb5..3c8cdcfe8d4a 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -29,6 +29,8 @@
29#include <linux/timer.h> 29#include <linux/timer.h>
30#include <linux/irq.h> 30#include <linux/irq.h>
31 31
32#include <linux/mc146818rtc.h>
33
32#include <asm/leds.h> 34#include <asm/leds.h>
33#include <asm/thread_info.h> 35#include <asm/thread_info.h>
34#include <asm/mach/time.h> 36#include <asm/mach/time.h>
@@ -85,6 +87,17 @@ unsigned long long __attribute__((weak)) sched_clock(void)
85 return (unsigned long long)jiffies * (1000000000 / HZ); 87 return (unsigned long long)jiffies * (1000000000 / HZ);
86} 88}
87 89
90/*
91 * An implementation of printk_clock() independent from
92 * sched_clock(). This avoids non-bootable kernels when
93 * printk_clock is enabled.
94 */
95unsigned long long printk_clock(void)
96{
97 return (unsigned long long)(jiffies - INITIAL_JIFFIES) *
98 (1000000000 / HZ);
99}
100
88static unsigned long next_rtc_update; 101static unsigned long next_rtc_update;
89 102
90/* 103/*
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index 042a12982e98..908915675edc 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -27,6 +27,7 @@
27#include <asm/uaccess.h> 27#include <asm/uaccess.h>
28#include <asm/unistd.h> 28#include <asm/unistd.h>
29#include <asm/traps.h> 29#include <asm/traps.h>
30#include <asm/io.h>
30 31
31#include "ptrace.h" 32#include "ptrace.h"
32#include "signal.h" 33#include "signal.h"
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c
index 628348c9f6c5..9df507d36e0b 100644
--- a/arch/arm/mm/flush.c
+++ b/arch/arm/mm/flush.c
@@ -202,3 +202,42 @@ void flush_dcache_page(struct page *page)
202 } 202 }
203} 203}
204EXPORT_SYMBOL(flush_dcache_page); 204EXPORT_SYMBOL(flush_dcache_page);
205
206/*
207 * Flush an anonymous page so that users of get_user_pages()
208 * can safely access the data. The expected sequence is:
209 *
210 * get_user_pages()
211 * -> flush_anon_page
212 * memcpy() to/from page
213 * if written to page, flush_dcache_page()
214 */
215void __flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr)
216{
217 unsigned long pfn;
218
219 /* VIPT non-aliasing caches need do nothing */
220 if (cache_is_vipt_nonaliasing())
221 return;
222
223 /*
224 * Write back and invalidate userspace mapping.
225 */
226 pfn = page_to_pfn(page);
227 if (cache_is_vivt()) {
228 flush_cache_page(vma, vmaddr, pfn);
229 } else {
230 /*
231 * For aliasing VIPT, we can flush an alias of the
232 * userspace address only.
233 */
234 flush_pfn_alias(pfn, vmaddr);
235 }
236
237 /*
238 * Invalidate kernel mapping. No data should be contained
239 * in this mapping of the page. FIXME: this is overkill
240 * since we actually ask for a write-back and invalidate.
241 */
242 __cpuc_flush_dcache_page(page_address(page));
243}
diff --git a/arch/cris/arch-v32/kernel/smp.c b/arch/cris/arch-v32/kernel/smp.c
index 2d0023f2d49b..77e655f26560 100644
--- a/arch/cris/arch-v32/kernel/smp.c
+++ b/arch/cris/arch-v32/kernel/smp.c
@@ -195,7 +195,7 @@ int setup_profiling_timer(unsigned int multiplier)
195 */ 195 */
196unsigned long cache_decay_ticks = 1; 196unsigned long cache_decay_ticks = 1;
197 197
198int __devinit __cpu_up(unsigned int cpu) 198int __cpuinit __cpu_up(unsigned int cpu)
199{ 199{
200 smp_boot_one_cpu(cpu); 200 smp_boot_one_cpu(cpu);
201 return cpu_online(cpu) ? 0 : -ENOSYS; 201 return cpu_online(cpu) ? 0 : -ENOSYS;
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index 0d67a0a1151e..0dfee812811a 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -777,6 +777,47 @@ config CRASH_DUMP
777 PHYSICAL_START. 777 PHYSICAL_START.
778 For more details see Documentation/kdump/kdump.txt 778 For more details see Documentation/kdump/kdump.txt
779 779
780config PHYSICAL_START
781 hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
782 default "0x100000"
783 help
784 This gives the physical address where the kernel is loaded.
785
786 If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then
787 bzImage will decompress itself to above physical address and
788 run from there. Otherwise, bzImage will run from the address where
789 it has been loaded by the boot loader and will ignore above physical
790 address.
791
792 In normal kdump cases one does not have to set/change this option
793 as now bzImage can be compiled as a completely relocatable image
794 (CONFIG_RELOCATABLE=y) and be used to load and run from a different
795 address. This option is mainly useful for the folks who don't want
796 to use a bzImage for capturing the crash dump and want to use a
797 vmlinux instead. vmlinux is not relocatable hence a kernel needs
798 to be specifically compiled to run from a specific memory area
799 (normally a reserved region) and this option comes handy.
800
801 So if you are using bzImage for capturing the crash dump, leave
802 the value here unchanged to 0x100000 and set CONFIG_RELOCATABLE=y.
803 Otherwise if you plan to use vmlinux for capturing the crash dump
804 change this value to start of the reserved region (Typically 16MB
805 0x1000000). In other words, it can be set based on the "X" value as
806 specified in the "crashkernel=YM@XM" command line boot parameter
807 passed to the panic-ed kernel. Typically this parameter is set as
808 crashkernel=64M@16M. Please take a look at
809 Documentation/kdump/kdump.txt for more details about crash dumps.
810
811 Usage of bzImage for capturing the crash dump is recommended as
812 one does not have to build two kernels. Same kernel can be used
813 as production kernel and capture kernel. Above option should have
814 gone away after relocatable bzImage support is introduced. But it
815 is present because there are users out there who continue to use
816 vmlinux for dump capture. This option should go away down the
817 line.
818
819 Don't change this unless you know what you are doing.
820
780config RELOCATABLE 821config RELOCATABLE
781 bool "Build a relocatable kernel(EXPERIMENTAL)" 822 bool "Build a relocatable kernel(EXPERIMENTAL)"
782 depends on EXPERIMENTAL 823 depends on EXPERIMENTAL
diff --git a/arch/i386/defconfig b/arch/i386/defconfig
index 88b7c1cf65a2..5d80edfc61b7 100644
--- a/arch/i386/defconfig
+++ b/arch/i386/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19-git14 3# Linux kernel version: 2.6.20-rc3
4# Sat Dec 9 21:23:14 2006 4# Fri Jan 5 11:54:46 2007
5# 5#
6CONFIG_X86_32=y 6CONFIG_X86_32=y
7CONFIG_GENERIC_TIME=y 7CONFIG_GENERIC_TIME=y
@@ -1287,6 +1287,11 @@ CONFIG_USB_MON=y
1287# 1287#
1288 1288
1289# 1289#
1290# Virtualization
1291#
1292# CONFIG_KVM is not set
1293
1294#
1290# File systems 1295# File systems
1291# 1296#
1292CONFIG_EXT2_FS=y 1297CONFIG_EXT2_FS=y
@@ -1471,6 +1476,8 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1471# CONFIG_ENABLE_MUST_CHECK is not set 1476# CONFIG_ENABLE_MUST_CHECK is not set
1472CONFIG_MAGIC_SYSRQ=y 1477CONFIG_MAGIC_SYSRQ=y
1473CONFIG_UNUSED_SYMBOLS=y 1478CONFIG_UNUSED_SYMBOLS=y
1479# CONFIG_DEBUG_FS is not set
1480# CONFIG_HEADERS_CHECK is not set
1474CONFIG_DEBUG_KERNEL=y 1481CONFIG_DEBUG_KERNEL=y
1475CONFIG_LOG_BUF_SHIFT=18 1482CONFIG_LOG_BUF_SHIFT=18
1476CONFIG_DETECT_SOFTLOCKUP=y 1483CONFIG_DETECT_SOFTLOCKUP=y
@@ -1489,12 +1496,10 @@ CONFIG_DETECT_SOFTLOCKUP=y
1489# CONFIG_DEBUG_HIGHMEM is not set 1496# CONFIG_DEBUG_HIGHMEM is not set
1490CONFIG_DEBUG_BUGVERBOSE=y 1497CONFIG_DEBUG_BUGVERBOSE=y
1491# CONFIG_DEBUG_INFO is not set 1498# CONFIG_DEBUG_INFO is not set
1492# CONFIG_DEBUG_FS is not set
1493# CONFIG_DEBUG_VM is not set 1499# CONFIG_DEBUG_VM is not set
1494# CONFIG_DEBUG_LIST is not set 1500# CONFIG_DEBUG_LIST is not set
1495# CONFIG_FRAME_POINTER is not set 1501# CONFIG_FRAME_POINTER is not set
1496# CONFIG_FORCED_INLINING is not set 1502# CONFIG_FORCED_INLINING is not set
1497# CONFIG_HEADERS_CHECK is not set
1498# CONFIG_RCU_TORTURE_TEST is not set 1503# CONFIG_RCU_TORTURE_TEST is not set
1499# CONFIG_LKDTM is not set 1504# CONFIG_LKDTM is not set
1500CONFIG_EARLY_PRINTK=y 1505CONFIG_EARLY_PRINTK=y
@@ -1527,6 +1532,7 @@ CONFIG_CRC32=y
1527# CONFIG_LIBCRC32C is not set 1532# CONFIG_LIBCRC32C is not set
1528CONFIG_ZLIB_INFLATE=y 1533CONFIG_ZLIB_INFLATE=y
1529CONFIG_PLIST=y 1534CONFIG_PLIST=y
1535CONFIG_IOMAP_COPY=y
1530CONFIG_GENERIC_HARDIRQS=y 1536CONFIG_GENERIC_HARDIRQS=y
1531CONFIG_GENERIC_IRQ_PROBE=y 1537CONFIG_GENERIC_IRQ_PROBE=y
1532CONFIG_GENERIC_PENDING_IRQ=y 1538CONFIG_GENERIC_PENDING_IRQ=y
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
index 094300b3a81f..cbcb2c27f48b 100644
--- a/arch/i386/kernel/acpi/boot.c
+++ b/arch/i386/kernel/acpi/boot.c
@@ -333,7 +333,7 @@ acpi_parse_ioapic(acpi_table_entry_header * header, const unsigned long end)
333/* 333/*
334 * Parse Interrupt Source Override for the ACPI SCI 334 * Parse Interrupt Source Override for the ACPI SCI
335 */ 335 */
336static void acpi_sci_ioapic_setup(u32 gsi, u16 polarity, u16 trigger) 336static void __init acpi_sci_ioapic_setup(u32 gsi, u16 polarity, u16 trigger)
337{ 337{
338 if (trigger == 0) /* compatible SCI trigger is level */ 338 if (trigger == 0) /* compatible SCI trigger is level */
339 trigger = 3; 339 trigger = 3;
diff --git a/arch/i386/kernel/acpi/cstate.c b/arch/i386/kernel/acpi/cstate.c
index 12e937c1ce4b..2d39f55d29a8 100644
--- a/arch/i386/kernel/acpi/cstate.c
+++ b/arch/i386/kernel/acpi/cstate.c
@@ -47,13 +47,13 @@ EXPORT_SYMBOL(acpi_processor_power_init_bm_check);
47 47
48/* The code below handles cstate entry with monitor-mwait pair on Intel*/ 48/* The code below handles cstate entry with monitor-mwait pair on Intel*/
49 49
50struct cstate_entry_s { 50struct cstate_entry {
51 struct { 51 struct {
52 unsigned int eax; 52 unsigned int eax;
53 unsigned int ecx; 53 unsigned int ecx;
54 } states[ACPI_PROCESSOR_MAX_POWER]; 54 } states[ACPI_PROCESSOR_MAX_POWER];
55}; 55};
56static struct cstate_entry_s *cpu_cstate_entry; /* per CPU ptr */ 56static struct cstate_entry *cpu_cstate_entry; /* per CPU ptr */
57 57
58static short mwait_supported[ACPI_PROCESSOR_MAX_POWER]; 58static short mwait_supported[ACPI_PROCESSOR_MAX_POWER];
59 59
@@ -71,7 +71,7 @@ static short mwait_supported[ACPI_PROCESSOR_MAX_POWER];
71int acpi_processor_ffh_cstate_probe(unsigned int cpu, 71int acpi_processor_ffh_cstate_probe(unsigned int cpu,
72 struct acpi_processor_cx *cx, struct acpi_power_register *reg) 72 struct acpi_processor_cx *cx, struct acpi_power_register *reg)
73{ 73{
74 struct cstate_entry_s *percpu_entry; 74 struct cstate_entry *percpu_entry;
75 struct cpuinfo_x86 *c = cpu_data + cpu; 75 struct cpuinfo_x86 *c = cpu_data + cpu;
76 76
77 cpumask_t saved_mask; 77 cpumask_t saved_mask;
@@ -136,7 +136,7 @@ EXPORT_SYMBOL_GPL(acpi_processor_ffh_cstate_probe);
136void acpi_processor_ffh_cstate_enter(struct acpi_processor_cx *cx) 136void acpi_processor_ffh_cstate_enter(struct acpi_processor_cx *cx)
137{ 137{
138 unsigned int cpu = smp_processor_id(); 138 unsigned int cpu = smp_processor_id();
139 struct cstate_entry_s *percpu_entry; 139 struct cstate_entry *percpu_entry;
140 140
141 percpu_entry = per_cpu_ptr(cpu_cstate_entry, cpu); 141 percpu_entry = per_cpu_ptr(cpu_cstate_entry, cpu);
142 mwait_idle_with_hints(percpu_entry->states[cx->index].eax, 142 mwait_idle_with_hints(percpu_entry->states[cx->index].eax,
@@ -150,7 +150,7 @@ static int __init ffh_cstate_init(void)
150 if (c->x86_vendor != X86_VENDOR_INTEL) 150 if (c->x86_vendor != X86_VENDOR_INTEL)
151 return -1; 151 return -1;
152 152
153 cpu_cstate_entry = alloc_percpu(struct cstate_entry_s); 153 cpu_cstate_entry = alloc_percpu(struct cstate_entry);
154 return 0; 154 return 0;
155} 155}
156 156
diff --git a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c
index 1b34c56f8123..8689d62abd4a 100644
--- a/arch/i386/kernel/cpu/common.c
+++ b/arch/i386/kernel/cpu/common.c
@@ -54,7 +54,7 @@ static struct cpu_dev __cpuinitdata default_cpu = {
54 .c_init = default_init, 54 .c_init = default_init,
55 .c_vendor = "Unknown", 55 .c_vendor = "Unknown",
56}; 56};
57static struct cpu_dev * this_cpu = &default_cpu; 57static struct cpu_dev * this_cpu __cpuinitdata = &default_cpu;
58 58
59static int __init cachesize_setup(char *str) 59static int __init cachesize_setup(char *str)
60{ 60{
diff --git a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
index b735458c6e3a..10baa3501ed3 100644
--- a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -373,8 +373,8 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
373 cpumask_t online_policy_cpus; 373 cpumask_t online_policy_cpus;
374 struct drv_cmd cmd; 374 struct drv_cmd cmd;
375 unsigned int msr; 375 unsigned int msr;
376 unsigned int next_state = 0; 376 unsigned int next_state = 0; /* Index into freq_table */
377 unsigned int next_perf_state = 0; 377 unsigned int next_perf_state = 0; /* Index into perf table */
378 unsigned int i; 378 unsigned int i;
379 int result = 0; 379 int result = 0;
380 380
@@ -420,6 +420,7 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
420 msr = 420 msr =
421 (u32) perf->states[next_perf_state]. 421 (u32) perf->states[next_perf_state].
422 control & INTEL_MSR_RANGE; 422 control & INTEL_MSR_RANGE;
423 cmd.val = get_cur_val(online_policy_cpus);
423 cmd.val = (cmd.val & ~INTEL_MSR_RANGE) | msr; 424 cmd.val = (cmd.val & ~INTEL_MSR_RANGE) | msr;
424 break; 425 break;
425 case SYSTEM_IO_CAPABLE: 426 case SYSTEM_IO_CAPABLE:
@@ -439,8 +440,8 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
439 else 440 else
440 cpu_set(policy->cpu, cmd.mask); 441 cpu_set(policy->cpu, cmd.mask);
441 442
442 freqs.old = data->freq_table[perf->state].frequency; 443 freqs.old = perf->states[perf->state].core_frequency * 1000;
443 freqs.new = data->freq_table[next_perf_state].frequency; 444 freqs.new = data->freq_table[next_state].frequency;
444 for_each_cpu_mask(i, cmd.mask) { 445 for_each_cpu_mask(i, cmd.mask) {
445 freqs.cpu = i; 446 freqs.cpu = i;
446 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); 447 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
@@ -677,6 +678,7 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
677 valid_states++; 678 valid_states++;
678 } 679 }
679 data->freq_table[valid_states].frequency = CPUFREQ_TABLE_END; 680 data->freq_table[valid_states].frequency = CPUFREQ_TABLE_END;
681 perf->state = 0;
680 682
681 result = cpufreq_frequency_table_cpuinfo(policy, data->freq_table); 683 result = cpufreq_frequency_table_cpuinfo(policy, data->freq_table);
682 if (result) 684 if (result)
diff --git a/arch/i386/kernel/cpu/cpufreq/longhaul.c b/arch/i386/kernel/cpu/cpufreq/longhaul.c
index 6d9c97a690fd..e940e00b96c9 100644
--- a/arch/i386/kernel/cpu/cpufreq/longhaul.c
+++ b/arch/i386/kernel/cpu/cpufreq/longhaul.c
@@ -52,6 +52,10 @@
52#define CPU_EZRA_T 4 52#define CPU_EZRA_T 4
53#define CPU_NEHEMIAH 5 53#define CPU_NEHEMIAH 5
54 54
55/* Flags */
56#define USE_ACPI_C3 (1 << 1)
57#define USE_NORTHBRIDGE (1 << 2)
58
55static int cpu_model; 59static int cpu_model;
56static unsigned int numscales=16; 60static unsigned int numscales=16;
57static unsigned int fsb; 61static unsigned int fsb;
@@ -68,7 +72,7 @@ static unsigned int minmult, maxmult;
68static int can_scale_voltage; 72static int can_scale_voltage;
69static struct acpi_processor *pr = NULL; 73static struct acpi_processor *pr = NULL;
70static struct acpi_processor_cx *cx = NULL; 74static struct acpi_processor_cx *cx = NULL;
71static int port22_en; 75static u8 longhaul_flags;
72 76
73/* Module parameters */ 77/* Module parameters */
74static int scale_voltage; 78static int scale_voltage;
@@ -80,7 +84,6 @@ static int ignore_latency;
80/* Clock ratios multiplied by 10 */ 84/* Clock ratios multiplied by 10 */
81static int clock_ratio[32]; 85static int clock_ratio[32];
82static int eblcr_table[32]; 86static int eblcr_table[32];
83static unsigned int highest_speed, lowest_speed; /* kHz */
84static int longhaul_version; 87static int longhaul_version;
85static struct cpufreq_frequency_table *longhaul_table; 88static struct cpufreq_frequency_table *longhaul_table;
86 89
@@ -178,7 +181,7 @@ static void do_powersaver(int cx_address, unsigned int clock_ratio_index)
178 safe_halt(); 181 safe_halt();
179 /* Change frequency on next halt or sleep */ 182 /* Change frequency on next halt or sleep */
180 wrmsrl(MSR_VIA_LONGHAUL, longhaul.val); 183 wrmsrl(MSR_VIA_LONGHAUL, longhaul.val);
181 if (port22_en) { 184 if (!cx_address) {
182 ACPI_FLUSH_CPU_CACHE(); 185 ACPI_FLUSH_CPU_CACHE();
183 /* Invoke C1 */ 186 /* Invoke C1 */
184 halt(); 187 halt();
@@ -189,7 +192,6 @@ static void do_powersaver(int cx_address, unsigned int clock_ratio_index)
189 /* Dummy op - must do something useless after P_LVL3 read */ 192 /* Dummy op - must do something useless after P_LVL3 read */
190 t = inl(acpi_fadt.xpm_tmr_blk.address); 193 t = inl(acpi_fadt.xpm_tmr_blk.address);
191 } 194 }
192
193 /* Disable bus ratio bit */ 195 /* Disable bus ratio bit */
194 local_irq_disable(); 196 local_irq_disable();
195 longhaul.bits.RevisionKey = longhaul.bits.RevisionID; 197 longhaul.bits.RevisionKey = longhaul.bits.RevisionID;
@@ -243,15 +245,14 @@ static void longhaul_setstate(unsigned int clock_ratio_index)
243 outb(0xFF,0xA1); /* Overkill */ 245 outb(0xFF,0xA1); /* Overkill */
244 outb(0xFE,0x21); /* TMR0 only */ 246 outb(0xFE,0x21); /* TMR0 only */
245 247
246 if (pr->flags.bm_control) { 248 if (longhaul_flags & USE_NORTHBRIDGE) {
249 /* Disable AGP and PCI arbiters */
250 outb(3, 0x22);
251 } else if ((pr != NULL) && pr->flags.bm_control) {
247 /* Disable bus master arbitration */ 252 /* Disable bus master arbitration */
248 acpi_set_register(ACPI_BITREG_ARB_DISABLE, 1, 253 acpi_set_register(ACPI_BITREG_ARB_DISABLE, 1,
249 ACPI_MTX_DO_NOT_LOCK); 254 ACPI_MTX_DO_NOT_LOCK);
250 } else if (port22_en) {
251 /* Disable AGP and PCI arbiters */
252 outb(3, 0x22);
253 } 255 }
254
255 switch (longhaul_version) { 256 switch (longhaul_version) {
256 257
257 /* 258 /*
@@ -278,22 +279,25 @@ static void longhaul_setstate(unsigned int clock_ratio_index)
278 * to work in practice. 279 * to work in practice.
279 */ 280 */
280 case TYPE_POWERSAVER: 281 case TYPE_POWERSAVER:
281 /* Don't allow wakeup */ 282 if (longhaul_flags & USE_ACPI_C3) {
282 acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 0, 283 /* Don't allow wakeup */
283 ACPI_MTX_DO_NOT_LOCK); 284 acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 0,
284 do_powersaver(cx->address, clock_ratio_index); 285 ACPI_MTX_DO_NOT_LOCK);
286 do_powersaver(cx->address, clock_ratio_index);
287 } else {
288 do_powersaver(0, clock_ratio_index);
289 }
285 break; 290 break;
286 } 291 }
287 292
288 if (pr->flags.bm_control) { 293 if (longhaul_flags & USE_NORTHBRIDGE) {
294 /* Enable arbiters */
295 outb(0, 0x22);
296 } else if ((pr != NULL) && pr->flags.bm_control) {
289 /* Enable bus master arbitration */ 297 /* Enable bus master arbitration */
290 acpi_set_register(ACPI_BITREG_ARB_DISABLE, 0, 298 acpi_set_register(ACPI_BITREG_ARB_DISABLE, 0,
291 ACPI_MTX_DO_NOT_LOCK); 299 ACPI_MTX_DO_NOT_LOCK);
292 } else if (port22_en) {
293 /* Enable arbiters */
294 outb(0, 0x22);
295 } 300 }
296
297 outb(pic2_mask,0xA1); /* restore mask */ 301 outb(pic2_mask,0xA1); /* restore mask */
298 outb(pic1_mask,0x21); 302 outb(pic1_mask,0x21);
299 303
@@ -314,12 +318,12 @@ static void longhaul_setstate(unsigned int clock_ratio_index)
314 318
315#define ROUNDING 0xf 319#define ROUNDING 0xf
316 320
317static int _guess(int guess) 321static int _guess(int guess, int mult)
318{ 322{
319 int target; 323 int target;
320 324
321 target = ((maxmult/10)*guess); 325 target = ((mult/10)*guess);
322 if (maxmult%10 != 0) 326 if (mult%10 != 0)
323 target += (guess/2); 327 target += (guess/2);
324 target += ROUNDING/2; 328 target += ROUNDING/2;
325 target &= ~ROUNDING; 329 target &= ~ROUNDING;
@@ -327,17 +331,17 @@ static int _guess(int guess)
327} 331}
328 332
329 333
330static int guess_fsb(void) 334static int guess_fsb(int mult)
331{ 335{
332 int speed = (cpu_khz/1000); 336 int speed = (cpu_khz/1000);
333 int i; 337 int i;
334 int speeds[3] = { 66, 100, 133 }; 338 int speeds[] = { 66, 100, 133, 200 };
335 339
336 speed += ROUNDING/2; 340 speed += ROUNDING/2;
337 speed &= ~ROUNDING; 341 speed &= ~ROUNDING;
338 342
339 for (i=0; i<3; i++) { 343 for (i=0; i<4; i++) {
340 if (_guess(speeds[i]) == speed) 344 if (_guess(speeds[i], mult) == speed)
341 return speeds[i]; 345 return speeds[i];
342 } 346 }
343 return 0; 347 return 0;
@@ -354,9 +358,7 @@ static int __init longhaul_get_ranges(void)
354 130, 150, 160, 140, -1, 155, -1, 145 }; 358 130, 150, 160, 140, -1, 155, -1, 145 };
355 unsigned int j, k = 0; 359 unsigned int j, k = 0;
356 union msr_longhaul longhaul; 360 union msr_longhaul longhaul;
357 unsigned long lo, hi; 361 int mult = 0;
358 unsigned int eblcr_fsb_table_v1[] = { 66, 133, 100, -1 };
359 unsigned int eblcr_fsb_table_v2[] = { 133, 100, -1, 66 };
360 362
361 switch (longhaul_version) { 363 switch (longhaul_version) {
362 case TYPE_LONGHAUL_V1: 364 case TYPE_LONGHAUL_V1:
@@ -364,30 +366,18 @@ static int __init longhaul_get_ranges(void)
364 /* Ugh, Longhaul v1 didn't have the min/max MSRs. 366 /* Ugh, Longhaul v1 didn't have the min/max MSRs.
365 Assume min=3.0x & max = whatever we booted at. */ 367 Assume min=3.0x & max = whatever we booted at. */
366 minmult = 30; 368 minmult = 30;
367 maxmult = longhaul_get_cpu_mult(); 369 maxmult = mult = longhaul_get_cpu_mult();
368 rdmsr (MSR_IA32_EBL_CR_POWERON, lo, hi);
369 invalue = (lo & (1<<18|1<<19)) >>18;
370 if (cpu_model==CPU_SAMUEL || cpu_model==CPU_SAMUEL2)
371 fsb = eblcr_fsb_table_v1[invalue];
372 else
373 fsb = guess_fsb();
374 break; 370 break;
375 371
376 case TYPE_POWERSAVER: 372 case TYPE_POWERSAVER:
377 /* Ezra-T */ 373 /* Ezra-T */
378 if (cpu_model==CPU_EZRA_T) { 374 if (cpu_model==CPU_EZRA_T) {
375 minmult = 30;
379 rdmsrl (MSR_VIA_LONGHAUL, longhaul.val); 376 rdmsrl (MSR_VIA_LONGHAUL, longhaul.val);
380 invalue = longhaul.bits.MaxMHzBR; 377 invalue = longhaul.bits.MaxMHzBR;
381 if (longhaul.bits.MaxMHzBR4) 378 if (longhaul.bits.MaxMHzBR4)
382 invalue += 16; 379 invalue += 16;
383 maxmult=ezra_t_multipliers[invalue]; 380 maxmult = mult = ezra_t_multipliers[invalue];
384
385 invalue = longhaul.bits.MinMHzBR;
386 if (longhaul.bits.MinMHzBR4 == 1)
387 minmult = 30;
388 else
389 minmult = ezra_t_multipliers[invalue];
390 fsb = eblcr_fsb_table_v2[longhaul.bits.MaxMHzFSB];
391 break; 381 break;
392 } 382 }
393 383
@@ -407,21 +397,16 @@ static int __init longhaul_get_ranges(void)
407 * But it works, so we don't grumble. 397 * But it works, so we don't grumble.
408 */ 398 */
409 minmult=40; 399 minmult=40;
410 maxmult=longhaul_get_cpu_mult(); 400 maxmult = mult = longhaul_get_cpu_mult();
411
412 /* Starting with the 1.2GHz parts, theres a 200MHz bus. */
413 if ((cpu_khz/maxmult) > 13400)
414 fsb = 200;
415 else
416 fsb = eblcr_fsb_table_v2[longhaul.bits.MaxMHzFSB];
417 break; 401 break;
418 } 402 }
419 } 403 }
404 fsb = guess_fsb(mult);
420 405
421 dprintk ("MinMult:%d.%dx MaxMult:%d.%dx\n", 406 dprintk ("MinMult:%d.%dx MaxMult:%d.%dx\n",
422 minmult/10, minmult%10, maxmult/10, maxmult%10); 407 minmult/10, minmult%10, maxmult/10, maxmult%10);
423 408
424 if (fsb == -1) { 409 if (fsb == 0) {
425 printk (KERN_INFO PFX "Invalid (reserved) FSB!\n"); 410 printk (KERN_INFO PFX "Invalid (reserved) FSB!\n");
426 return -EINVAL; 411 return -EINVAL;
427 } 412 }
@@ -691,27 +676,32 @@ static int __init longhaul_cpu_init(struct cpufreq_policy *policy)
691 /* Find ACPI data for processor */ 676 /* Find ACPI data for processor */
692 acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, 677 acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX,
693 &longhaul_walk_callback, NULL, (void *)&pr); 678 &longhaul_walk_callback, NULL, (void *)&pr);
694 if (pr == NULL)
695 goto err_acpi;
696 679
697 if (longhaul_version == TYPE_POWERSAVER) { 680 /* Check ACPI support for C3 state */
698 /* Check ACPI support for C3 state */ 681 if ((pr != NULL) && (longhaul_version == TYPE_POWERSAVER)) {
699 cx = &pr->power.states[ACPI_STATE_C3]; 682 cx = &pr->power.states[ACPI_STATE_C3];
700 if (cx->address > 0 && 683 if (cx->address > 0 &&
701 (cx->latency <= 1000 || ignore_latency != 0) ) { 684 (cx->latency <= 1000 || ignore_latency != 0) ) {
685 longhaul_flags |= USE_ACPI_C3;
702 goto print_support_type; 686 goto print_support_type;
703 } 687 }
704 } 688 }
689 /* Check if northbridge is friendly */
690 if (enable_arbiter_disable()) {
691 longhaul_flags |= USE_NORTHBRIDGE;
692 goto print_support_type;
693 }
694
695 /* No ACPI C3 or we can't use it */
705 /* Check ACPI support for bus master arbiter disable */ 696 /* Check ACPI support for bus master arbiter disable */
706 if (!pr->flags.bm_control) { 697 if ((pr == NULL) || !(pr->flags.bm_control)) {
707 if (enable_arbiter_disable()) { 698 printk(KERN_ERR PFX
708 port22_en = 1; 699 "No ACPI support. Unsupported northbridge.\n");
709 } else { 700 return -ENODEV;
710 goto err_acpi;
711 }
712 } 701 }
702
713print_support_type: 703print_support_type:
714 if (!port22_en) { 704 if (!(longhaul_flags & USE_NORTHBRIDGE)) {
715 printk (KERN_INFO PFX "Using ACPI support.\n"); 705 printk (KERN_INFO PFX "Using ACPI support.\n");
716 } else { 706 } else {
717 printk (KERN_INFO PFX "Using northbridge support.\n"); 707 printk (KERN_INFO PFX "Using northbridge support.\n");
@@ -736,10 +726,6 @@ print_support_type:
736 cpufreq_frequency_table_get_attr(longhaul_table, policy->cpu); 726 cpufreq_frequency_table_get_attr(longhaul_table, policy->cpu);
737 727
738 return 0; 728 return 0;
739
740err_acpi:
741 printk(KERN_ERR PFX "No ACPI support. Unsupported northbridge. Aborting.\n");
742 return -ENODEV;
743} 729}
744 730
745static int __devexit longhaul_cpu_exit(struct cpufreq_policy *policy) 731static int __devexit longhaul_cpu_exit(struct cpufreq_policy *policy)
@@ -774,8 +760,8 @@ static int __init longhaul_init(void)
774 760
775#ifdef CONFIG_SMP 761#ifdef CONFIG_SMP
776 if (num_online_cpus() > 1) { 762 if (num_online_cpus() > 1) {
777 return -ENODEV;
778 printk(KERN_ERR PFX "More than 1 CPU detected, longhaul disabled.\n"); 763 printk(KERN_ERR PFX "More than 1 CPU detected, longhaul disabled.\n");
764 return -ENODEV;
779 } 765 }
780#endif 766#endif
781#ifdef CONFIG_X86_IO_APIC 767#ifdef CONFIG_X86_IO_APIC
diff --git a/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c b/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
index 5113e9231634..f43b987f952b 100644
--- a/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
+++ b/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
@@ -533,9 +533,9 @@ static int centrino_cpu_init_acpi(struct cpufreq_policy *policy)
533 533
534 /* notify BIOS that we exist */ 534 /* notify BIOS that we exist */
535 acpi_processor_notify_smm(THIS_MODULE); 535 acpi_processor_notify_smm(THIS_MODULE);
536 printk("speedstep-centrino with X86_SPEEDSTEP_CENTRINO_ACPI" 536 printk("speedstep-centrino with X86_SPEEDSTEP_CENTRINO_ACPI "
537 "config is deprecated.\n " 537 "config is deprecated.\n "
538 "Use X86_ACPI_CPUFREQ (acpi-cpufreq instead.\n" ); 538 "Use X86_ACPI_CPUFREQ (acpi-cpufreq) instead.\n" );
539 539
540 return 0; 540 return 0;
541 541
diff --git a/arch/i386/kernel/cpu/cyrix.c b/arch/i386/kernel/cpu/cyrix.c
index c0c3b59de32c..abcff92f994c 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_CCR3, ccr3); 176 setCx86(CX86_CCR4, ccr4);
177 177
178 set_cx86_memwb(); 178 set_cx86_memwb();
179 set_cx86_reorder(); 179 set_cx86_reorder();
diff --git a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c
index 2ce67228dff8..49bff3596bff 100644
--- a/arch/i386/kernel/mpparse.c
+++ b/arch/i386/kernel/mpparse.c
@@ -36,7 +36,7 @@
36 36
37/* Have we found an MP table */ 37/* Have we found an MP table */
38int smp_found_config; 38int smp_found_config;
39unsigned int __initdata maxcpus = NR_CPUS; 39unsigned int __cpuinitdata maxcpus = NR_CPUS;
40 40
41/* 41/*
42 * Various Linux-internal data structures created from the 42 * Various Linux-internal data structures created from the
@@ -102,9 +102,9 @@ static int __init mpf_checksum(unsigned char *mp, int len)
102 */ 102 */
103 103
104static int mpc_record; 104static int mpc_record;
105static struct mpc_config_translation *translation_table[MAX_MPC_ENTRY] __initdata; 105static struct mpc_config_translation *translation_table[MAX_MPC_ENTRY] __cpuinitdata;
106 106
107static void __devinit MP_processor_info (struct mpc_config_processor *m) 107static void __cpuinit MP_processor_info (struct mpc_config_processor *m)
108{ 108{
109 int ver, apicid; 109 int ver, apicid;
110 physid_mask_t phys_cpu; 110 physid_mask_t phys_cpu;
@@ -822,7 +822,7 @@ void __init mp_register_lapic_address(u64 address)
822 Dprintk("Boot CPU = %d\n", boot_cpu_physical_apicid); 822 Dprintk("Boot CPU = %d\n", boot_cpu_physical_apicid);
823} 823}
824 824
825void __devinit mp_register_lapic (u8 id, u8 enabled) 825void __cpuinit mp_register_lapic (u8 id, u8 enabled)
826{ 826{
827 struct mpc_config_processor processor; 827 struct mpc_config_processor processor;
828 int boot_cpu = 0; 828 int boot_cpu = 0;
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
index 6f6cb7b31d18..4b31ad70c1ac 100644
--- a/arch/i386/kernel/setup.c
+++ b/arch/i386/kernel/setup.c
@@ -77,7 +77,7 @@ extern struct resource code_resource;
77extern struct resource data_resource; 77extern struct resource data_resource;
78 78
79/* cpu data as detected by the assembly code in head.S */ 79/* cpu data as detected by the assembly code in head.S */
80struct cpuinfo_x86 new_cpu_data __initdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }; 80struct cpuinfo_x86 new_cpu_data __cpuinitdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 };
81/* common cpu data for all cpus */ 81/* common cpu data for all cpus */
82struct cpuinfo_x86 boot_cpu_data __read_mostly = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }; 82struct cpuinfo_x86 boot_cpu_data __read_mostly = { 0, 0, 0, 0, -1, 1, 0, 0, -1 };
83EXPORT_SYMBOL(boot_cpu_data); 83EXPORT_SYMBOL(boot_cpu_data);
@@ -495,7 +495,7 @@ static void set_mca_bus(int x) { }
495#endif 495#endif
496 496
497/* Overridden in paravirt.c if CONFIG_PARAVIRT */ 497/* Overridden in paravirt.c if CONFIG_PARAVIRT */
498char * __attribute__((weak)) memory_setup(void) 498char * __init __attribute__((weak)) memory_setup(void)
499{ 499{
500 return machine_specific_memory_setup(); 500 return machine_specific_memory_setup();
501} 501}
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index aef39be81361..dea7ef9d3e82 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -159,7 +159,7 @@ void __init smp_alloc_memory(void)
159 * a given CPU 159 * a given CPU
160 */ 160 */
161 161
162static void __devinit smp_store_cpu_info(int id) 162static void __cpuinit smp_store_cpu_info(int id)
163{ 163{
164 struct cpuinfo_x86 *c = cpu_data + id; 164 struct cpuinfo_x86 *c = cpu_data + id;
165 165
@@ -227,7 +227,7 @@ static struct {
227 atomic_t count_start; 227 atomic_t count_start;
228 atomic_t count_stop; 228 atomic_t count_stop;
229 unsigned long long values[NR_CPUS]; 229 unsigned long long values[NR_CPUS];
230} tsc __initdata = { 230} tsc __cpuinitdata = {
231 .start_flag = ATOMIC_INIT(0), 231 .start_flag = ATOMIC_INIT(0),
232 .count_start = ATOMIC_INIT(0), 232 .count_start = ATOMIC_INIT(0),
233 .count_stop = ATOMIC_INIT(0), 233 .count_stop = ATOMIC_INIT(0),
@@ -332,7 +332,7 @@ static void __init synchronize_tsc_bp(void)
332 printk("passed.\n"); 332 printk("passed.\n");
333} 333}
334 334
335static void __init synchronize_tsc_ap(void) 335static void __cpuinit synchronize_tsc_ap(void)
336{ 336{
337 int i; 337 int i;
338 338
@@ -364,7 +364,7 @@ extern void calibrate_delay(void);
364 364
365static atomic_t init_deasserted; 365static atomic_t init_deasserted;
366 366
367static void __devinit smp_callin(void) 367static void __cpuinit smp_callin(void)
368{ 368{
369 int cpuid, phys_id; 369 int cpuid, phys_id;
370 unsigned long timeout; 370 unsigned long timeout;
@@ -538,7 +538,7 @@ set_cpu_sibling_map(int cpu)
538/* 538/*
539 * Activate a secondary processor. 539 * Activate a secondary processor.
540 */ 540 */
541static void __devinit start_secondary(void *unused) 541static void __cpuinit start_secondary(void *unused)
542{ 542{
543 /* 543 /*
544 * Don't put *anything* before secondary_cpu_init(), SMP 544 * Don't put *anything* before secondary_cpu_init(), SMP
@@ -931,7 +931,7 @@ static inline struct task_struct * alloc_idle_task(int cpu)
931#define alloc_idle_task(cpu) fork_idle(cpu) 931#define alloc_idle_task(cpu) fork_idle(cpu)
932#endif 932#endif
933 933
934static int __devinit do_boot_cpu(int apicid, int cpu) 934static int __cpuinit do_boot_cpu(int apicid, int cpu)
935/* 935/*
936 * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad 936 * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad
937 * (ie clustered apic addressing mode), this is a LOGICAL apic ID. 937 * (ie clustered apic addressing mode), this is a LOGICAL apic ID.
@@ -1432,7 +1432,7 @@ void __cpu_die(unsigned int cpu)
1432} 1432}
1433#endif /* CONFIG_HOTPLUG_CPU */ 1433#endif /* CONFIG_HOTPLUG_CPU */
1434 1434
1435int __devinit __cpu_up(unsigned int cpu) 1435int __cpuinit __cpu_up(unsigned int cpu)
1436{ 1436{
1437#ifdef CONFIG_HOTPLUG_CPU 1437#ifdef CONFIG_HOTPLUG_CPU
1438 int ret=0; 1438 int ret=0;
diff --git a/arch/i386/kernel/trampoline.S b/arch/i386/kernel/trampoline.S
index fcce0e61b0e7..2f1814c5cfd7 100644
--- a/arch/i386/kernel/trampoline.S
+++ b/arch/i386/kernel/trampoline.S
@@ -38,6 +38,11 @@
38 38
39.data 39.data
40 40
41/* We can free up trampoline after bootup if cpu hotplug is not supported. */
42#ifndef CONFIG_HOTPLUG_CPU
43.section ".init.data","aw",@progbits
44#endif
45
41.code16 46.code16
42 47
43ENTRY(trampoline_data) 48ENTRY(trampoline_data)
diff --git a/arch/i386/kernel/tsc.c b/arch/i386/kernel/tsc.c
index 1bbe45dca7a0..2cfc7b09b925 100644
--- a/arch/i386/kernel/tsc.c
+++ b/arch/i386/kernel/tsc.c
@@ -24,7 +24,7 @@
24 */ 24 */
25unsigned int tsc_khz; 25unsigned int tsc_khz;
26 26
27int tsc_disable __cpuinitdata = 0; 27int tsc_disable;
28 28
29#ifdef CONFIG_X86_TSC 29#ifdef CONFIG_X86_TSC
30static int __init tsc_setup(char *str) 30static int __init tsc_setup(char *str)
diff --git a/arch/i386/mach-generic/bigsmp.c b/arch/i386/mach-generic/bigsmp.c
index 33d9f93557ba..8a210fa915b5 100644
--- a/arch/i386/mach-generic/bigsmp.c
+++ b/arch/i386/mach-generic/bigsmp.c
@@ -45,7 +45,7 @@ static struct dmi_system_id __initdata bigsmp_dmi_table[] = {
45}; 45};
46 46
47 47
48static __init int probe_bigsmp(void) 48static int probe_bigsmp(void)
49{ 49{
50 if (def_to_bigsmp) 50 if (def_to_bigsmp)
51 dmi_bigsmp = 1; 51 dmi_bigsmp = 1;
diff --git a/arch/i386/mach-generic/default.c b/arch/i386/mach-generic/default.c
index 96c19821e47d..8685208d8512 100644
--- a/arch/i386/mach-generic/default.c
+++ b/arch/i386/mach-generic/default.c
@@ -18,7 +18,7 @@
18#include <asm/mach-default/mach_mpparse.h> 18#include <asm/mach-default/mach_mpparse.h>
19 19
20/* should be called last. */ 20/* should be called last. */
21static __init int probe_default(void) 21static int probe_default(void)
22{ 22{
23 return 1; 23 return 1;
24} 24}
diff --git a/arch/i386/mach-generic/es7000.c b/arch/i386/mach-generic/es7000.c
index aa144d82334d..b8963a5a3b25 100644
--- a/arch/i386/mach-generic/es7000.c
+++ b/arch/i386/mach-generic/es7000.c
@@ -19,7 +19,7 @@
19#include <asm/mach-es7000/mach_mpparse.h> 19#include <asm/mach-es7000/mach_mpparse.h>
20#include <asm/mach-es7000/mach_wakecpu.h> 20#include <asm/mach-es7000/mach_wakecpu.h>
21 21
22static __init int probe_es7000(void) 22static int probe_es7000(void)
23{ 23{
24 /* probed later in mptable/ACPI hooks */ 24 /* probed later in mptable/ACPI hooks */
25 return 0; 25 return 0;
diff --git a/arch/i386/mach-generic/summit.c b/arch/i386/mach-generic/summit.c
index f7e5d66648dc..74883ccb8f73 100644
--- a/arch/i386/mach-generic/summit.c
+++ b/arch/i386/mach-generic/summit.c
@@ -18,7 +18,7 @@
18#include <asm/mach-summit/mach_ipi.h> 18#include <asm/mach-summit/mach_ipi.h>
19#include <asm/mach-summit/mach_mpparse.h> 19#include <asm/mach-summit/mach_mpparse.h>
20 20
21static __init int probe_summit(void) 21static int probe_summit(void)
22{ 22{
23 /* probed later in mptable/ACPI hooks */ 23 /* probed later in mptable/ACPI hooks */
24 return 0; 24 return 0;
diff --git a/arch/i386/mm/init.c b/arch/i386/mm/init.c
index 60a7e57af197..c5c5ea700cc7 100644
--- a/arch/i386/mm/init.c
+++ b/arch/i386/mm/init.c
@@ -283,7 +283,7 @@ void __init add_one_highpage_init(struct page *page, int pfn, int bad_ppro)
283 SetPageReserved(page); 283 SetPageReserved(page);
284} 284}
285 285
286static int add_one_highpage_hotplug(struct page *page, unsigned long pfn) 286static int __meminit add_one_highpage_hotplug(struct page *page, unsigned long pfn)
287{ 287{
288 free_new_highpage(page); 288 free_new_highpage(page);
289 totalram_pages++; 289 totalram_pages++;
@@ -300,7 +300,7 @@ static int add_one_highpage_hotplug(struct page *page, unsigned long pfn)
300 * has been added dynamically that would be 300 * has been added dynamically that would be
301 * onlined here is in HIGHMEM 301 * onlined here is in HIGHMEM
302 */ 302 */
303void online_page(struct page *page) 303void __meminit online_page(struct page *page)
304{ 304{
305 ClearPageReserved(page); 305 ClearPageReserved(page);
306 add_one_highpage_hotplug(page, page_to_pfn(page)); 306 add_one_highpage_hotplug(page, page_to_pfn(page));
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 73ef4a85b861..ef2fe474f107 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -590,6 +590,9 @@ void __init acpi_numa_arch_fixup(void)
590 */ 590 */
591int acpi_register_gsi(u32 gsi, int triggering, int polarity) 591int acpi_register_gsi(u32 gsi, int triggering, int polarity)
592{ 592{
593 if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM)
594 return gsi;
595
593 if (has_8259 && gsi < 16) 596 if (has_8259 && gsi < 16)
594 return isa_irq_to_vector(gsi); 597 return isa_irq_to_vector(gsi);
595 598
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index 1a3d8a2feb94..1373fae7657f 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -543,7 +543,8 @@ virtual_memmap_init (u64 start, u64 end, void *arg)
543 543
544 if (map_start < map_end) 544 if (map_start < map_end)
545 memmap_init_zone((unsigned long)(map_end - map_start), 545 memmap_init_zone((unsigned long)(map_end - map_start),
546 args->nid, args->zone, page_to_pfn(map_start)); 546 args->nid, args->zone, page_to_pfn(map_start),
547 MEMMAP_EARLY);
547 return 0; 548 return 0;
548} 549}
549 550
@@ -552,7 +553,7 @@ memmap_init (unsigned long size, int nid, unsigned long zone,
552 unsigned long start_pfn) 553 unsigned long start_pfn)
553{ 554{
554 if (!vmem_map) 555 if (!vmem_map)
555 memmap_init_zone(size, nid, zone, start_pfn); 556 memmap_init_zone(size, nid, zone, start_pfn, MEMMAP_EARLY);
556 else { 557 else {
557 struct page *start; 558 struct page *start;
558 struct memmap_init_callback_data args; 559 struct memmap_init_callback_data args;
diff --git a/arch/ia64/sn/kernel/io_acpi_init.c b/arch/ia64/sn/kernel/io_acpi_init.c
index 99d7f278612a..cb96b4ea7df6 100644
--- a/arch/ia64/sn/kernel/io_acpi_init.c
+++ b/arch/ia64/sn/kernel/io_acpi_init.c
@@ -223,6 +223,9 @@ sn_io_acpi_init(void)
223 u64 result; 223 u64 result;
224 s64 status; 224 s64 status;
225 225
226 /* SN Altix does not follow the IOSAPIC IRQ routing model */
227 acpi_irq_model = ACPI_IRQ_MODEL_PLATFORM;
228
226 acpi_bus_register_driver(&acpi_sn_hubdev_driver); 229 acpi_bus_register_driver(&acpi_sn_hubdev_driver);
227 status = sal_ioif_init(&result); 230 status = sal_ioif_init(&result);
228 if (status || result) 231 if (status || result)
diff --git a/arch/m32r/kernel/smpboot.c b/arch/m32r/kernel/smpboot.c
index fa7865609495..48d376f47e1a 100644
--- a/arch/m32r/kernel/smpboot.c
+++ b/arch/m32r/kernel/smpboot.c
@@ -351,7 +351,7 @@ static void __init do_boot_cpu(int phys_id)
351 } 351 }
352} 352}
353 353
354int __devinit __cpu_up(unsigned int cpu_id) 354int __cpuinit __cpu_up(unsigned int cpu_id)
355{ 355{
356 int timeout; 356 int timeout;
357 357
diff --git a/arch/mips/au1000/common/pci.c b/arch/mips/au1000/common/pci.c
index da591f674893..9f8ce08e173b 100644
--- a/arch/mips/au1000/common/pci.c
+++ b/arch/mips/au1000/common/pci.c
@@ -39,15 +39,15 @@
39 39
40/* TBD */ 40/* TBD */
41static struct resource pci_io_resource = { 41static struct resource pci_io_resource = {
42 .start = PCI_IO_START, 42 .start = (resource_size_t)PCI_IO_START,
43 .end = PCI_IO_END, 43 .end = (resource_size_t)PCI_IO_END,
44 .name = "PCI IO space", 44 .name = "PCI IO space",
45 .flags = IORESOURCE_IO 45 .flags = IORESOURCE_IO
46}; 46};
47 47
48static struct resource pci_mem_resource = { 48static struct resource pci_mem_resource = {
49 .start = PCI_MEM_START, 49 .start = (resource_size_t)PCI_MEM_START,
50 .end = PCI_MEM_END, 50 .end = (resource_size_t)PCI_MEM_END,
51 .name = "PCI memory space", 51 .name = "PCI memory space",
52 .flags = IORESOURCE_MEM 52 .flags = IORESOURCE_MEM
53}; 53};
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
index b061c9aa6302..de3fae260ff8 100644
--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -440,14 +440,26 @@ sys32_ipc (u32 call, int first, int second, int third, u32 ptr, u32 fifth)
440} 440}
441 441
442#ifdef CONFIG_MIPS32_N32 442#ifdef CONFIG_MIPS32_N32
443asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, union semun arg) 443asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, u32 arg)
444{ 444{
445 /* compat_sys_semctl expects a pointer to union semun */ 445 /* compat_sys_semctl expects a pointer to union semun */
446 u32 __user *uptr = compat_alloc_user_space(sizeof(u32)); 446 u32 __user *uptr = compat_alloc_user_space(sizeof(u32));
447 if (put_user(ptr_to_compat(arg.__pad), uptr)) 447 if (put_user(arg, uptr))
448 return -EFAULT; 448 return -EFAULT;
449 return compat_sys_semctl(semid, semnum, cmd, uptr); 449 return compat_sys_semctl(semid, semnum, cmd, uptr);
450} 450}
451
452asmlinkage long sysn32_msgsnd(int msqid, u32 msgp, unsigned msgsz, int msgflg)
453{
454 return compat_sys_msgsnd(msqid, msgsz, msgflg, compat_ptr(msgp));
455}
456
457asmlinkage long sysn32_msgrcv(int msqid, u32 msgp, size_t msgsz, int msgtyp,
458 int msgflg)
459{
460 return compat_sys_msgrcv(msqid, msgsz, msgtyp, msgflg, IPC_64,
461 compat_ptr(msgp));
462}
451#endif 463#endif
452 464
453struct sysctl_args32 465struct sysctl_args32
diff --git a/arch/mips/kernel/mips_ksyms.c b/arch/mips/kernel/mips_ksyms.c
index f44a01357ada..2ef857c3ee53 100644
--- a/arch/mips/kernel/mips_ksyms.c
+++ b/arch/mips/kernel/mips_ksyms.c
@@ -46,5 +46,7 @@ EXPORT_SYMBOL(__strnlen_user_nocheck_asm);
46EXPORT_SYMBOL(__strnlen_user_asm); 46EXPORT_SYMBOL(__strnlen_user_asm);
47 47
48EXPORT_SYMBOL(csum_partial); 48EXPORT_SYMBOL(csum_partial);
49EXPORT_SYMBOL(csum_partial_copy_nocheck);
50EXPORT_SYMBOL(__csum_partial_copy_user);
49 51
50EXPORT_SYMBOL(invalid_pte_table); 52EXPORT_SYMBOL(invalid_pte_table);
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
index 34567d81f940..a7bff2a54723 100644
--- a/arch/mips/kernel/scall64-n32.S
+++ b/arch/mips/kernel/scall64-n32.S
@@ -187,8 +187,8 @@ EXPORT(sysn32_call_table)
187 PTR sysn32_semctl 187 PTR sysn32_semctl
188 PTR sys_shmdt /* 6065 */ 188 PTR sys_shmdt /* 6065 */
189 PTR sys_msgget 189 PTR sys_msgget
190 PTR compat_sys_msgsnd 190 PTR sysn32_msgsnd
191 PTR compat_sys_msgrcv 191 PTR sysn32_msgrcv
192 PTR compat_sys_msgctl 192 PTR compat_sys_msgctl
193 PTR compat_sys_fcntl /* 6070 */ 193 PTR compat_sys_fcntl /* 6070 */
194 PTR sys_flock 194 PTR sys_flock
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index f2a8701e414d..0555fc554f65 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -271,7 +271,7 @@ void __devinit smp_prepare_boot_cpu(void)
271 * and keep control until "cpu_online(cpu)" is set. Note: cpu is 271 * and keep control until "cpu_online(cpu)" is set. Note: cpu is
272 * physical, not logical. 272 * physical, not logical.
273 */ 273 */
274int __devinit __cpu_up(unsigned int cpu) 274int __cpuinit __cpu_up(unsigned int cpu)
275{ 275{
276 struct task_struct *idle; 276 struct task_struct *idle;
277 277
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c
index 802febed7df5..a8b387197d5b 100644
--- a/arch/mips/kernel/smtc.c
+++ b/arch/mips/kernel/smtc.c
@@ -261,6 +261,7 @@ void smtc_configure_tlb(void)
261 } 261 }
262 } 262 }
263 write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_STLB); 263 write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_STLB);
264 ehb();
264 265
265 /* 266 /*
266 * Setup kernel data structures to use software total, 267 * Setup kernel data structures to use software total,
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c
index 11aab6d6bfe5..8aa544f73a5e 100644
--- a/arch/mips/kernel/time.c
+++ b/arch/mips/kernel/time.c
@@ -94,10 +94,8 @@ static void c0_timer_ack(void)
94{ 94{
95 unsigned int count; 95 unsigned int count;
96 96
97#ifndef CONFIG_SOC_PNX8550 /* pnx8550 resets to zero */
98 /* Ack this timer interrupt and set the next one. */ 97 /* Ack this timer interrupt and set the next one. */
99 expirelo += cycles_per_jiffy; 98 expirelo += cycles_per_jiffy;
100#endif
101 write_c0_compare(expirelo); 99 write_c0_compare(expirelo);
102 100
103 /* Check to see if we have missed any timer interrupts. */ 101 /* Check to see if we have missed any timer interrupts. */
diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile
index 888b61ea12fe..989c900b8b14 100644
--- a/arch/mips/lib/Makefile
+++ b/arch/mips/lib/Makefile
@@ -2,7 +2,7 @@
2# Makefile for MIPS-specific library files.. 2# Makefile for MIPS-specific library files..
3# 3#
4 4
5lib-y += csum_partial.o csum_partial_copy.o memcpy.o promlib.o \ 5lib-y += csum_partial.o memcpy.o promlib.o \
6 strlen_user.o strncpy_user.o strnlen_user.o uncached.o 6 strlen_user.o strncpy_user.o strnlen_user.o uncached.o
7 7
8obj-y += iomap.o 8obj-y += iomap.o
diff --git a/arch/mips/lib/csum_partial.S b/arch/mips/lib/csum_partial.S
index 9db357294be1..c0a77fe038be 100644
--- a/arch/mips/lib/csum_partial.S
+++ b/arch/mips/lib/csum_partial.S
@@ -8,7 +8,9 @@
8 * Copyright (C) 1998, 1999 Ralf Baechle 8 * Copyright (C) 1998, 1999 Ralf Baechle
9 * Copyright (C) 1999 Silicon Graphics, Inc. 9 * Copyright (C) 1999 Silicon Graphics, Inc.
10 */ 10 */
11#include <linux/errno.h>
11#include <asm/asm.h> 12#include <asm/asm.h>
13#include <asm/asm-offsets.h>
12#include <asm/regdef.h> 14#include <asm/regdef.h>
13 15
14#ifdef CONFIG_64BIT 16#ifdef CONFIG_64BIT
@@ -271,3 +273,443 @@ small_csumcpy:
271 jr ra 273 jr ra
272 .set noreorder 274 .set noreorder
273 END(csum_partial) 275 END(csum_partial)
276
277
278/*
279 * checksum and copy routines based on memcpy.S
280 *
281 * csum_partial_copy_nocheck(src, dst, len, sum)
282 * __csum_partial_copy_user(src, dst, len, sum, errp)
283 *
284 * See "Spec" in memcpy.S for details. Unlike __copy_user, all
285 * function in this file use the standard calling convention.
286 */
287
288#define src a0
289#define dst a1
290#define len a2
291#define psum a3
292#define sum v0
293#define odd t8
294#define errptr t9
295
296/*
297 * The exception handler for loads requires that:
298 * 1- AT contain the address of the byte just past the end of the source
299 * of the copy,
300 * 2- src_entry <= src < AT, and
301 * 3- (dst - src) == (dst_entry - src_entry),
302 * The _entry suffix denotes values when __copy_user was called.
303 *
304 * (1) is set up up by __csum_partial_copy_from_user and maintained by
305 * not writing AT in __csum_partial_copy
306 * (2) is met by incrementing src by the number of bytes copied
307 * (3) is met by not doing loads between a pair of increments of dst and src
308 *
309 * The exception handlers for stores stores -EFAULT to errptr and return.
310 * These handlers do not need to overwrite any data.
311 */
312
313#define EXC(inst_reg,addr,handler) \
3149: inst_reg, addr; \
315 .section __ex_table,"a"; \
316 PTR 9b, handler; \
317 .previous
318
319#ifdef USE_DOUBLE
320
321#define LOAD ld
322#define LOADL ldl
323#define LOADR ldr
324#define STOREL sdl
325#define STORER sdr
326#define STORE sd
327#define ADD daddu
328#define SUB dsubu
329#define SRL dsrl
330#define SLL dsll
331#define SLLV dsllv
332#define SRLV dsrlv
333#define NBYTES 8
334#define LOG_NBYTES 3
335
336#else
337
338#define LOAD lw
339#define LOADL lwl
340#define LOADR lwr
341#define STOREL swl
342#define STORER swr
343#define STORE sw
344#define ADD addu
345#define SUB subu
346#define SRL srl
347#define SLL sll
348#define SLLV sllv
349#define SRLV srlv
350#define NBYTES 4
351#define LOG_NBYTES 2
352
353#endif /* USE_DOUBLE */
354
355#ifdef CONFIG_CPU_LITTLE_ENDIAN
356#define LDFIRST LOADR
357#define LDREST LOADL
358#define STFIRST STORER
359#define STREST STOREL
360#define SHIFT_DISCARD SLLV
361#define SHIFT_DISCARD_REVERT SRLV
362#else
363#define LDFIRST LOADL
364#define LDREST LOADR
365#define STFIRST STOREL
366#define STREST STORER
367#define SHIFT_DISCARD SRLV
368#define SHIFT_DISCARD_REVERT SLLV
369#endif
370
371#define FIRST(unit) ((unit)*NBYTES)
372#define REST(unit) (FIRST(unit)+NBYTES-1)
373
374#define ADDRMASK (NBYTES-1)
375
376 .set noat
377
378LEAF(__csum_partial_copy_user)
379 PTR_ADDU AT, src, len /* See (1) above. */
380#ifdef CONFIG_64BIT
381 move errptr, a4
382#else
383 lw errptr, 16(sp)
384#endif
385FEXPORT(csum_partial_copy_nocheck)
386 move sum, zero
387 move odd, zero
388 /*
389 * Note: dst & src may be unaligned, len may be 0
390 * Temps
391 */
392 /*
393 * The "issue break"s below are very approximate.
394 * Issue delays for dcache fills will perturb the schedule, as will
395 * load queue full replay traps, etc.
396 *
397 * If len < NBYTES use byte operations.
398 */
399 sltu t2, len, NBYTES
400 and t1, dst, ADDRMASK
401 bnez t2, copy_bytes_checklen
402 and t0, src, ADDRMASK
403 andi odd, dst, 0x1 /* odd buffer? */
404 bnez t1, dst_unaligned
405 nop
406 bnez t0, src_unaligned_dst_aligned
407 /*
408 * use delay slot for fall-through
409 * src and dst are aligned; need to compute rem
410 */
411both_aligned:
412 SRL t0, len, LOG_NBYTES+3 # +3 for 8 units/iter
413 beqz t0, cleanup_both_aligned # len < 8*NBYTES
414 nop
415 SUB len, 8*NBYTES # subtract here for bgez loop
416 .align 4
4171:
418EXC( LOAD t0, UNIT(0)(src), l_exc)
419EXC( LOAD t1, UNIT(1)(src), l_exc_copy)
420EXC( LOAD t2, UNIT(2)(src), l_exc_copy)
421EXC( LOAD t3, UNIT(3)(src), l_exc_copy)
422EXC( LOAD t4, UNIT(4)(src), l_exc_copy)
423EXC( LOAD t5, UNIT(5)(src), l_exc_copy)
424EXC( LOAD t6, UNIT(6)(src), l_exc_copy)
425EXC( LOAD t7, UNIT(7)(src), l_exc_copy)
426 SUB len, len, 8*NBYTES
427 ADD src, src, 8*NBYTES
428EXC( STORE t0, UNIT(0)(dst), s_exc)
429 ADDC(sum, t0)
430EXC( STORE t1, UNIT(1)(dst), s_exc)
431 ADDC(sum, t1)
432EXC( STORE t2, UNIT(2)(dst), s_exc)
433 ADDC(sum, t2)
434EXC( STORE t3, UNIT(3)(dst), s_exc)
435 ADDC(sum, t3)
436EXC( STORE t4, UNIT(4)(dst), s_exc)
437 ADDC(sum, t4)
438EXC( STORE t5, UNIT(5)(dst), s_exc)
439 ADDC(sum, t5)
440EXC( STORE t6, UNIT(6)(dst), s_exc)
441 ADDC(sum, t6)
442EXC( STORE t7, UNIT(7)(dst), s_exc)
443 ADDC(sum, t7)
444 bgez len, 1b
445 ADD dst, dst, 8*NBYTES
446 ADD len, 8*NBYTES # revert len (see above)
447
448 /*
449 * len == the number of bytes left to copy < 8*NBYTES
450 */
451cleanup_both_aligned:
452#define rem t7
453 beqz len, done
454 sltu t0, len, 4*NBYTES
455 bnez t0, less_than_4units
456 and rem, len, (NBYTES-1) # rem = len % NBYTES
457 /*
458 * len >= 4*NBYTES
459 */
460EXC( LOAD t0, UNIT(0)(src), l_exc)
461EXC( LOAD t1, UNIT(1)(src), l_exc_copy)
462EXC( LOAD t2, UNIT(2)(src), l_exc_copy)
463EXC( LOAD t3, UNIT(3)(src), l_exc_copy)
464 SUB len, len, 4*NBYTES
465 ADD src, src, 4*NBYTES
466EXC( STORE t0, UNIT(0)(dst), s_exc)
467 ADDC(sum, t0)
468EXC( STORE t1, UNIT(1)(dst), s_exc)
469 ADDC(sum, t1)
470EXC( STORE t2, UNIT(2)(dst), s_exc)
471 ADDC(sum, t2)
472EXC( STORE t3, UNIT(3)(dst), s_exc)
473 ADDC(sum, t3)
474 beqz len, done
475 ADD dst, dst, 4*NBYTES
476less_than_4units:
477 /*
478 * rem = len % NBYTES
479 */
480 beq rem, len, copy_bytes
481 nop
4821:
483EXC( LOAD t0, 0(src), l_exc)
484 ADD src, src, NBYTES
485 SUB len, len, NBYTES
486EXC( STORE t0, 0(dst), s_exc)
487 ADDC(sum, t0)
488 bne rem, len, 1b
489 ADD dst, dst, NBYTES
490
491 /*
492 * src and dst are aligned, need to copy rem bytes (rem < NBYTES)
493 * A loop would do only a byte at a time with possible branch
494 * mispredicts. Can't do an explicit LOAD dst,mask,or,STORE
495 * because can't assume read-access to dst. Instead, use
496 * STREST dst, which doesn't require read access to dst.
497 *
498 * This code should perform better than a simple loop on modern,
499 * wide-issue mips processors because the code has fewer branches and
500 * more instruction-level parallelism.
501 */
502#define bits t2
503 beqz len, done
504 ADD t1, dst, len # t1 is just past last byte of dst
505 li bits, 8*NBYTES
506 SLL rem, len, 3 # rem = number of bits to keep
507EXC( LOAD t0, 0(src), l_exc)
508 SUB bits, bits, rem # bits = number of bits to discard
509 SHIFT_DISCARD t0, t0, bits
510EXC( STREST t0, -1(t1), s_exc)
511 SHIFT_DISCARD_REVERT t0, t0, bits
512 .set reorder
513 ADDC(sum, t0)
514 b done
515 .set noreorder
516dst_unaligned:
517 /*
518 * dst is unaligned
519 * t0 = src & ADDRMASK
520 * t1 = dst & ADDRMASK; T1 > 0
521 * len >= NBYTES
522 *
523 * Copy enough bytes to align dst
524 * Set match = (src and dst have same alignment)
525 */
526#define match rem
527EXC( LDFIRST t3, FIRST(0)(src), l_exc)
528 ADD t2, zero, NBYTES
529EXC( LDREST t3, REST(0)(src), l_exc_copy)
530 SUB t2, t2, t1 # t2 = number of bytes copied
531 xor match, t0, t1
532EXC( STFIRST t3, FIRST(0)(dst), s_exc)
533 SLL t4, t1, 3 # t4 = number of bits to discard
534 SHIFT_DISCARD t3, t3, t4
535 /* no SHIFT_DISCARD_REVERT to handle odd buffer properly */
536 ADDC(sum, t3)
537 beq len, t2, done
538 SUB len, len, t2
539 ADD dst, dst, t2
540 beqz match, both_aligned
541 ADD src, src, t2
542
543src_unaligned_dst_aligned:
544 SRL t0, len, LOG_NBYTES+2 # +2 for 4 units/iter
545 beqz t0, cleanup_src_unaligned
546 and rem, len, (4*NBYTES-1) # rem = len % 4*NBYTES
5471:
548/*
549 * Avoid consecutive LD*'s to the same register since some mips
550 * implementations can't issue them in the same cycle.
551 * It's OK to load FIRST(N+1) before REST(N) because the two addresses
552 * are to the same unit (unless src is aligned, but it's not).
553 */
554EXC( LDFIRST t0, FIRST(0)(src), l_exc)
555EXC( LDFIRST t1, FIRST(1)(src), l_exc_copy)
556 SUB len, len, 4*NBYTES
557EXC( LDREST t0, REST(0)(src), l_exc_copy)
558EXC( LDREST t1, REST(1)(src), l_exc_copy)
559EXC( LDFIRST t2, FIRST(2)(src), l_exc_copy)
560EXC( LDFIRST t3, FIRST(3)(src), l_exc_copy)
561EXC( LDREST t2, REST(2)(src), l_exc_copy)
562EXC( LDREST t3, REST(3)(src), l_exc_copy)
563 ADD src, src, 4*NBYTES
564#ifdef CONFIG_CPU_SB1
565 nop # improves slotting
566#endif
567EXC( STORE t0, UNIT(0)(dst), s_exc)
568 ADDC(sum, t0)
569EXC( STORE t1, UNIT(1)(dst), s_exc)
570 ADDC(sum, t1)
571EXC( STORE t2, UNIT(2)(dst), s_exc)
572 ADDC(sum, t2)
573EXC( STORE t3, UNIT(3)(dst), s_exc)
574 ADDC(sum, t3)
575 bne len, rem, 1b
576 ADD dst, dst, 4*NBYTES
577
578cleanup_src_unaligned:
579 beqz len, done
580 and rem, len, NBYTES-1 # rem = len % NBYTES
581 beq rem, len, copy_bytes
582 nop
5831:
584EXC( LDFIRST t0, FIRST(0)(src), l_exc)
585EXC( LDREST t0, REST(0)(src), l_exc_copy)
586 ADD src, src, NBYTES
587 SUB len, len, NBYTES
588EXC( STORE t0, 0(dst), s_exc)
589 ADDC(sum, t0)
590 bne len, rem, 1b
591 ADD dst, dst, NBYTES
592
593copy_bytes_checklen:
594 beqz len, done
595 nop
596copy_bytes:
597 /* 0 < len < NBYTES */
598#ifdef CONFIG_CPU_LITTLE_ENDIAN
599#define SHIFT_START 0
600#define SHIFT_INC 8
601#else
602#define SHIFT_START 8*(NBYTES-1)
603#define SHIFT_INC -8
604#endif
605 move t2, zero # partial word
606 li t3, SHIFT_START # shift
607/* use l_exc_copy here to return correct sum on fault */
608#define COPY_BYTE(N) \
609EXC( lbu t0, N(src), l_exc_copy); \
610 SUB len, len, 1; \
611EXC( sb t0, N(dst), s_exc); \
612 SLLV t0, t0, t3; \
613 addu t3, SHIFT_INC; \
614 beqz len, copy_bytes_done; \
615 or t2, t0
616
617 COPY_BYTE(0)
618 COPY_BYTE(1)
619#ifdef USE_DOUBLE
620 COPY_BYTE(2)
621 COPY_BYTE(3)
622 COPY_BYTE(4)
623 COPY_BYTE(5)
624#endif
625EXC( lbu t0, NBYTES-2(src), l_exc_copy)
626 SUB len, len, 1
627EXC( sb t0, NBYTES-2(dst), s_exc)
628 SLLV t0, t0, t3
629 or t2, t0
630copy_bytes_done:
631 ADDC(sum, t2)
632done:
633 /* fold checksum */
634#ifdef USE_DOUBLE
635 dsll32 v1, sum, 0
636 daddu sum, v1
637 sltu v1, sum, v1
638 dsra32 sum, sum, 0
639 addu sum, v1
640#endif
641 sll v1, sum, 16
642 addu sum, v1
643 sltu v1, sum, v1
644 srl sum, sum, 16
645 addu sum, v1
646
647 /* odd buffer alignment? */
648 beqz odd, 1f
649 nop
650 sll v1, sum, 8
651 srl sum, sum, 8
652 or sum, v1
653 andi sum, 0xffff
6541:
655 .set reorder
656 ADDC(sum, psum)
657 jr ra
658 .set noreorder
659
660l_exc_copy:
661 /*
662 * Copy bytes from src until faulting load address (or until a
663 * lb faults)
664 *
665 * When reached by a faulting LDFIRST/LDREST, THREAD_BUADDR($28)
666 * may be more than a byte beyond the last address.
667 * Hence, the lb below may get an exception.
668 *
669 * Assumes src < THREAD_BUADDR($28)
670 */
671 LOAD t0, TI_TASK($28)
672 li t2, SHIFT_START
673 LOAD t0, THREAD_BUADDR(t0)
6741:
675EXC( lbu t1, 0(src), l_exc)
676 ADD src, src, 1
677 sb t1, 0(dst) # can't fault -- we're copy_from_user
678 SLLV t1, t1, t2
679 addu t2, SHIFT_INC
680 ADDC(sum, t1)
681 bne src, t0, 1b
682 ADD dst, dst, 1
683l_exc:
684 LOAD t0, TI_TASK($28)
685 nop
686 LOAD t0, THREAD_BUADDR(t0) # t0 is just past last good address
687 nop
688 SUB len, AT, t0 # len number of uncopied bytes
689 /*
690 * Here's where we rely on src and dst being incremented in tandem,
691 * See (3) above.
692 * dst += (fault addr - src) to put dst at first byte to clear
693 */
694 ADD dst, t0 # compute start address in a1
695 SUB dst, src
696 /*
697 * Clear len bytes starting at dst. Can't call __bzero because it
698 * might modify len. An inefficient loop for these rare times...
699 */
700 beqz len, done
701 SUB src, len, 1
7021: sb zero, 0(dst)
703 ADD dst, dst, 1
704 bnez src, 1b
705 SUB src, src, 1
706 li v1, -EFAULT
707 b done
708 sw v1, (errptr)
709
710s_exc:
711 li v0, -1 /* invalid checksum */
712 li v1, -EFAULT
713 jr ra
714 sw v1, (errptr)
715 END(__csum_partial_copy_user)
diff --git a/arch/mips/lib/csum_partial_copy.c b/arch/mips/lib/csum_partial_copy.c
deleted file mode 100644
index 06771040a267..000000000000
--- a/arch/mips/lib/csum_partial_copy.c
+++ /dev/null
@@ -1,52 +0,0 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 1994, 1995 Waldorf Electronics GmbH
7 * Copyright (C) 1998, 1999 Ralf Baechle
8 */
9#include <linux/kernel.h>
10#include <linux/module.h>
11#include <linux/types.h>
12#include <asm/byteorder.h>
13#include <asm/string.h>
14#include <asm/uaccess.h>
15#include <net/checksum.h>
16
17/*
18 * copy while checksumming, otherwise like csum_partial
19 */
20__wsum csum_partial_copy_nocheck(const void *src,
21 void *dst, int len, __wsum sum)
22{
23 /*
24 * It's 2:30 am and I don't feel like doing it real ...
25 * This is lots slower than the real thing (tm)
26 */
27 sum = csum_partial(src, len, sum);
28 memcpy(dst, src, len);
29
30 return sum;
31}
32
33EXPORT_SYMBOL(csum_partial_copy_nocheck);
34
35/*
36 * Copy from userspace and compute checksum. If we catch an exception
37 * then zero the rest of the buffer.
38 */
39__wsum csum_partial_copy_from_user (const void __user *src,
40 void *dst, int len, __wsum sum, int *err_ptr)
41{
42 int missing;
43
44 might_sleep();
45 missing = copy_from_user(dst, src, len);
46 if (missing) {
47 memset(dst + len - missing, 0, missing);
48 *err_ptr = -EFAULT;
49 }
50
51 return csum_partial(dst, len, sum);
52}
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c
index e4604c73f02e..a3c3a1d462b2 100644
--- a/arch/mips/mips-boards/generic/time.c
+++ b/arch/mips/mips-boards/generic/time.c
@@ -47,6 +47,9 @@
47#ifdef CONFIG_MIPS_MALTA 47#ifdef CONFIG_MIPS_MALTA
48#include <asm/mips-boards/maltaint.h> 48#include <asm/mips-boards/maltaint.h>
49#endif 49#endif
50#ifdef CONFIG_MIPS_SEAD
51#include <asm/mips-boards/seadint.h>
52#endif
50 53
51unsigned long cpu_khz; 54unsigned long cpu_khz;
52 55
@@ -263,11 +266,13 @@ void __init mips_time_init(void)
263 266
264void __init plat_timer_setup(struct irqaction *irq) 267void __init plat_timer_setup(struct irqaction *irq)
265{ 268{
269#ifdef MSC01E_INT_BASE
266 if (cpu_has_veic) { 270 if (cpu_has_veic) {
267 set_vi_handler (MSC01E_INT_CPUCTR, mips_timer_dispatch); 271 set_vi_handler (MSC01E_INT_CPUCTR, mips_timer_dispatch);
268 mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR; 272 mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR;
269 } 273 } else
270 else { 274#endif
275 {
271 if (cpu_has_vint) 276 if (cpu_has_vint)
272 set_vi_handler (MIPSCPU_INT_CPUCTR, mips_timer_dispatch); 277 set_vi_handler (MIPSCPU_INT_CPUCTR, mips_timer_dispatch);
273 mips_cpu_timer_irq = MIPSCPU_INT_BASE + MIPSCPU_INT_CPUCTR; 278 mips_cpu_timer_irq = MIPSCPU_INT_BASE + MIPSCPU_INT_CPUCTR;
diff --git a/arch/mips/mips-boards/malta/malta_mtd.c b/arch/mips/mips-boards/malta/malta_mtd.c
new file mode 100644
index 000000000000..8ad9bdf25dce
--- /dev/null
+++ b/arch/mips/mips-boards/malta/malta_mtd.c
@@ -0,0 +1,63 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2006 MIPS Technologies, Inc.
7 * written by Ralf Baechle <ralf@linux-mips.org>
8 */
9
10#include <linux/init.h>
11#include <linux/platform_device.h>
12#include <linux/mtd/partitions.h>
13#include <linux/mtd/physmap.h>
14#include <mtd/mtd-abi.h>
15
16static struct mtd_partition malta_mtd_partitions[] = {
17 {
18 .name = "YAMON",
19 .offset = 0x0,
20 .size = 0x100000,
21 .mask_flags = MTD_WRITEABLE
22 }, {
23 .name = "User FS",
24 .offset = 0x100000,
25 .size = 0x2e0000
26 }, {
27 .name = "Board Config",
28 .offset = 0x3e0000,
29 .size = 0x020000,
30 .mask_flags = MTD_WRITEABLE
31 }
32};
33
34static struct physmap_flash_data malta_flash_data = {
35 .width = 4,
36 .nr_parts = ARRAY_SIZE(malta_mtd_partitions),
37 .parts = malta_mtd_partitions
38};
39
40static struct resource malta_flash_resource = {
41 .start = 0x1e000000,
42 .end = 0x1e3fffff,
43 .flags = IORESOURCE_MEM
44};
45
46static struct platform_device malta_flash = {
47 .name = "physmap-flash",
48 .id = 0,
49 .dev = {
50 .platform_data = &malta_flash_data,
51 },
52 .num_resources = 1,
53 .resource = &malta_flash_resource,
54};
55
56static int __init malta_mtd_init(void)
57{
58 platform_device_register(&malta_flash);
59
60 return 0;
61}
62
63module_init(malta_mtd_init)
diff --git a/arch/mips/mips-boards/sead/sead_int.c b/arch/mips/mips-boards/sead/sead_int.c
index f445fcddfdfd..874ccb0066b8 100644
--- a/arch/mips/mips-boards/sead/sead_int.c
+++ b/arch/mips/mips-boards/sead/sead_int.c
@@ -21,7 +21,7 @@
21 * Sead board. 21 * Sead board.
22 */ 22 */
23#include <linux/init.h> 23#include <linux/init.h>
24#include <linux/irq.h> 24#include <linux/interrupt.h>
25 25
26#include <asm/irq_cpu.h> 26#include <asm/irq_cpu.h>
27#include <asm/mipsregs.h> 27#include <asm/mipsregs.h>
@@ -108,7 +108,7 @@ asmlinkage void plat_irq_dispatch(void)
108 if (irq >= 0) 108 if (irq >= 0)
109 do_IRQ(MIPSCPU_INT_BASE + irq); 109 do_IRQ(MIPSCPU_INT_BASE + irq);
110 else 110 else
111 spurious_interrupt(regs); 111 spurious_interrupt();
112} 112}
113 113
114void __init arch_init_irq(void) 114void __init arch_init_irq(void)
diff --git a/arch/mips/mm/pg-r4k.c b/arch/mips/mm/pg-r4k.c
index d41fc5885e87..dc795be62807 100644
--- a/arch/mips/mm/pg-r4k.c
+++ b/arch/mips/mm/pg-r4k.c
@@ -243,11 +243,10 @@ static void __init __build_store_reg(int reg)
243 243
244static inline void build_store_reg(int reg) 244static inline void build_store_reg(int reg)
245{ 245{
246 if (cpu_has_prefetch) 246 int pref_off = cpu_has_prefetch ?
247 if (reg) 247 (reg ? pref_offset_copy : pref_offset_clear) : 0;
248 build_dst_pref(pref_offset_copy); 248 if (pref_off)
249 else 249 build_dst_pref(pref_off);
250 build_dst_pref(pref_offset_clear);
251 else if (cpu_has_cache_cdex_s) 250 else if (cpu_has_cache_cdex_s)
252 build_cdex_s(); 251 build_cdex_s();
253 else if (cpu_has_cache_cdex_p) 252 else if (cpu_has_cache_cdex_p)
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/pci/ops-pnx8550.c b/arch/mips/pci/ops-pnx8550.c
index 454b65cc3354..f556b7a8dccd 100644
--- a/arch/mips/pci/ops-pnx8550.c
+++ b/arch/mips/pci/ops-pnx8550.c
@@ -202,7 +202,7 @@ write_config_byte(struct pci_bus *bus, unsigned int devfn, int where, u8 val)
202 break; 202 break;
203 } 203 }
204 204
205 err = config_access(PCI_CMD_CONFIG_READ, bus, devfn, where, ~(1 << (where & 3)), &data); 205 err = config_access(PCI_CMD_CONFIG_WRITE, bus, devfn, where, ~(1 << (where & 3)), &data);
206 206
207 return err; 207 return err;
208} 208}
diff --git a/arch/mips/philips/pnx8550/common/time.c b/arch/mips/philips/pnx8550/common/time.c
index 65c440e8480b..68def3880a1c 100644
--- a/arch/mips/philips/pnx8550/common/time.c
+++ b/arch/mips/philips/pnx8550/common/time.c
@@ -33,7 +33,17 @@
33#include <int.h> 33#include <int.h>
34#include <cm.h> 34#include <cm.h>
35 35
36extern unsigned int mips_hpt_frequency; 36static unsigned long cpj;
37
38static cycle_t hpt_read(void)
39{
40 return read_c0_count2();
41}
42
43static void timer_ack(void)
44{
45 write_c0_compare(cpj);
46}
37 47
38/* 48/*
39 * pnx8550_time_init() - it does the following things: 49 * pnx8550_time_init() - it does the following things:
@@ -68,27 +78,48 @@ void pnx8550_time_init(void)
68 * HZ timer interrupts per second. 78 * HZ timer interrupts per second.
69 */ 79 */
70 mips_hpt_frequency = 27UL * ((1000000UL * n)/(m * pow2p)); 80 mips_hpt_frequency = 27UL * ((1000000UL * n)/(m * pow2p));
81 cpj = (mips_hpt_frequency + HZ / 2) / HZ;
82 write_c0_count(0);
83 timer_ack();
84
85 /* Setup Timer 2 */
86 write_c0_count2(0);
87 write_c0_compare2(0xffffffff);
88
89 clocksource_mips.read = hpt_read;
90 mips_timer_ack = timer_ack;
91}
92
93static irqreturn_t monotonic_interrupt(int irq, void *dev_id)
94{
95 /* Timer 2 clear interrupt */
96 write_c0_compare2(-1);
97 return IRQ_HANDLED;
71} 98}
72 99
100static struct irqaction monotonic_irqaction = {
101 .handler = monotonic_interrupt,
102 .flags = IRQF_DISABLED,
103 .name = "Monotonic timer",
104};
105
73void __init plat_timer_setup(struct irqaction *irq) 106void __init plat_timer_setup(struct irqaction *irq)
74{ 107{
75 int configPR; 108 int configPR;
76 109
77 setup_irq(PNX8550_INT_TIMER1, irq); 110 setup_irq(PNX8550_INT_TIMER1, irq);
111 setup_irq(PNX8550_INT_TIMER2, &monotonic_irqaction);
78 112
79 /* Start timer1 */ 113 /* Timer 1 start */
80 configPR = read_c0_config7(); 114 configPR = read_c0_config7();
81 configPR &= ~0x00000008; 115 configPR &= ~0x00000008;
82 write_c0_config7(configPR); 116 write_c0_config7(configPR);
83 117
84 /* Timer 2 stop */ 118 /* Timer 2 start */
85 configPR = read_c0_config7(); 119 configPR = read_c0_config7();
86 configPR |= 0x00000010; 120 configPR &= ~0x00000010;
87 write_c0_config7(configPR); 121 write_c0_config7(configPR);
88 122
89 write_c0_count2(0);
90 write_c0_compare2(0xffffffff);
91
92 /* Timer 3 stop */ 123 /* Timer 3 stop */
93 configPR = read_c0_config7(); 124 configPR = read_c0_config7();
94 configPR |= 0x00000020; 125 configPR |= 0x00000020;
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
index 4a23a97b06cd..12cc019307ad 100644
--- a/arch/parisc/kernel/smp.c
+++ b/arch/parisc/kernel/smp.c
@@ -608,7 +608,7 @@ void smp_cpus_done(unsigned int cpu_max)
608} 608}
609 609
610 610
611int __devinit __cpu_up(unsigned int cpu) 611int __cpuinit __cpu_up(unsigned int cpu)
612{ 612{
613 if (cpu != 0 && cpu < parisc_max_cpus) 613 if (cpu != 0 && cpu < parisc_max_cpus)
614 smp_boot_one_cpu(cpu); 614 smp_boot_one_cpu(cpu);
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 8699dadcd096..0855d55c194d 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -436,7 +436,7 @@ config PPC_EFIKA
436 select RTAS_PROC 436 select RTAS_PROC
437 select PPC_MPC52xx 437 select PPC_MPC52xx
438 select PPC_NATIVE 438 select PPC_NATIVE
439 default y 439 default n
440 440
441config PPC_LITE5200 441config PPC_LITE5200
442 bool "Freescale Lite5200 Eval Board" 442 bool "Freescale Lite5200 Eval Board"
@@ -471,7 +471,7 @@ config PPC_PREP
471 select PPC_INDIRECT_PCI 471 select PPC_INDIRECT_PCI
472 select PPC_UDBG_16550 472 select PPC_UDBG_16550
473 select PPC_NATIVE 473 select PPC_NATIVE
474 default y 474 default n
475 475
476config PPC_MAPLE 476config PPC_MAPLE
477 depends on PPC_MULTIPLATFORM && PPC64 477 depends on PPC_MULTIPLATFORM && PPC64
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts
index 8bc0d259796d..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";
@@ -238,7 +244,7 @@
238 244
239 // PSC3 in CODEC mode example 245 // PSC3 in CODEC mode example
240 i2s@2400 { // PSC3 246 i2s@2400 { // PSC3
241 device_type = "i2s"; 247 device_type = "sound";
242 compatible = "mpc5200-psc-i2s\0mpc52xx-psc-i2s"; 248 compatible = "mpc5200-psc-i2s\0mpc52xx-psc-i2s";
243 reg = <2400 100>; 249 reg = <2400 100>;
244 interrupts = <2 3 0>; 250 interrupts = <2 3 0>;
@@ -265,7 +271,7 @@
265 271
266 // PSC6 in AC97 mode example 272 // PSC6 in AC97 mode example
267 ac97@2c00 { // PSC6 273 ac97@2c00 { // PSC6
268 device_type = "ac97"; 274 device_type = "sound";
269 compatible = "mpc5200-psc-ac97\0mpc52xx-psc-ac97"; 275 compatible = "mpc5200-psc-ac97\0mpc52xx-psc-ac97";
270 reg = <2c00 100>; 276 reg = <2c00 100>;
271 interrupts = <2 4 0>; 277 interrupts = <2 4 0>;
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts
index 81cb76418a78..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";
@@ -243,7 +249,7 @@
243 249
244 // PSC3 in CODEC mode example 250 // PSC3 in CODEC mode example
245 i2s@2400 { // PSC3 251 i2s@2400 { // PSC3
246 device_type = "i2s"; 252 device_type = "sound";
247 compatible = "mpc5200b-psc-i2s\0mpc52xx-psc-i2s"; 253 compatible = "mpc5200b-psc-i2s\0mpc52xx-psc-i2s";
248 reg = <2400 100>; 254 reg = <2400 100>;
249 interrupts = <2 3 0>; 255 interrupts = <2 3 0>;
@@ -270,7 +276,7 @@
270 276
271 // PSC6 in AC97 mode example 277 // PSC6 in AC97 mode example
272 ac97@2c00 { // PSC6 278 ac97@2c00 { // PSC6
273 device_type = "ac97"; 279 device_type = "sound";
274 compatible = "mpc5200b-psc-ac97\0mpc52xx-psc-ac97"; 280 compatible = "mpc5200b-psc-ac97\0mpc52xx-psc-ac97";
275 reg = <2c00 100>; 281 reg = <2c00 100>;
276 interrupts = <2 4 0>; 282 interrupts = <2 4 0>;
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 1c009651f925..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.18-rc6 3# Linux kernel version: 2.6.20-rc5
4# Sun Sep 10 10:45:11 2006 4# Mon Jan 22 22:28:58 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
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#
@@ -31,6 +35,10 @@ CONFIG_GENERIC_TBSYNC=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
39CONFIG_PPC_DCR_MMIO=y
40CONFIG_PPC_DCR=y
41CONFIG_PPC_OF_PLATFORM_PCI=y
34CONFIG_ALTIVEC=y 42CONFIG_ALTIVEC=y
35CONFIG_PPC_STD_MMU=y 43CONFIG_PPC_STD_MMU=y
36CONFIG_VIRT_CPU_ACCOUNTING=y 44CONFIG_VIRT_CPU_ACCOUNTING=y
@@ -52,19 +60,24 @@ CONFIG_LOCALVERSION=""
52CONFIG_LOCALVERSION_AUTO=y 60CONFIG_LOCALVERSION_AUTO=y
53CONFIG_SWAP=y 61CONFIG_SWAP=y
54CONFIG_SYSVIPC=y 62CONFIG_SYSVIPC=y
63# CONFIG_IPC_NS is not set
55CONFIG_POSIX_MQUEUE=y 64CONFIG_POSIX_MQUEUE=y
56# CONFIG_BSD_PROCESS_ACCT is not set 65# CONFIG_BSD_PROCESS_ACCT is not set
57CONFIG_TASKSTATS=y 66CONFIG_TASKSTATS=y
58CONFIG_TASK_DELAY_ACCT=y 67CONFIG_TASK_DELAY_ACCT=y
59CONFIG_SYSCTL=y 68# CONFIG_UTS_NS is not set
60# CONFIG_AUDIT is not set 69# CONFIG_AUDIT is not set
61CONFIG_IKCONFIG=y 70CONFIG_IKCONFIG=y
62CONFIG_IKCONFIG_PROC=y 71CONFIG_IKCONFIG_PROC=y
63CONFIG_CPUSETS=y 72CONFIG_CPUSETS=y
73CONFIG_SYSFS_DEPRECATED=y
64CONFIG_RELAY=y 74CONFIG_RELAY=y
65CONFIG_INITRAMFS_SOURCE="" 75CONFIG_INITRAMFS_SOURCE=""
66CONFIG_CC_OPTIMIZE_FOR_SIZE=y 76CONFIG_CC_OPTIMIZE_FOR_SIZE=y
77# CONFIG_TASK_XACCT is not set
78CONFIG_SYSCTL=y
67# CONFIG_EMBEDDED is not set 79# CONFIG_EMBEDDED is not set
80CONFIG_SYSCTL_SYSCALL=y
68CONFIG_KALLSYMS=y 81CONFIG_KALLSYMS=y
69CONFIG_KALLSYMS_ALL=y 82CONFIG_KALLSYMS_ALL=y
70# CONFIG_KALLSYMS_EXTRA_PASS is not set 83# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -73,12 +86,12 @@ CONFIG_PRINTK=y
73CONFIG_BUG=y 86CONFIG_BUG=y
74CONFIG_ELF_CORE=y 87CONFIG_ELF_CORE=y
75CONFIG_BASE_FULL=y 88CONFIG_BASE_FULL=y
76CONFIG_RT_MUTEXES=y
77CONFIG_FUTEX=y 89CONFIG_FUTEX=y
78CONFIG_EPOLL=y 90CONFIG_EPOLL=y
79CONFIG_SHMEM=y 91CONFIG_SHMEM=y
80CONFIG_SLAB=y 92CONFIG_SLAB=y
81CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
94CONFIG_RT_MUTEXES=y
82# CONFIG_TINY_SHMEM is not set 95# CONFIG_TINY_SHMEM is not set
83CONFIG_BASE_SMALL=0 96CONFIG_BASE_SMALL=0
84# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
@@ -97,6 +110,7 @@ CONFIG_STOP_MACHINE=y
97# 110#
98# Block layer 111# Block layer
99# 112#
113CONFIG_BLOCK=y
100CONFIG_BLK_DEV_IO_TRACE=y 114CONFIG_BLK_DEV_IO_TRACE=y
101 115
102# 116#
@@ -116,16 +130,20 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
116# Platform support 130# Platform support
117# 131#
118CONFIG_PPC_MULTIPLATFORM=y 132CONFIG_PPC_MULTIPLATFORM=y
119# CONFIG_PPC_ISERIES is not set
120# CONFIG_EMBEDDED6xx is not set 133# CONFIG_EMBEDDED6xx is not set
121# CONFIG_APUS is not set 134# CONFIG_APUS is not set
122CONFIG_PPC_PSERIES=y 135CONFIG_PPC_PSERIES=y
136CONFIG_PPC_ISERIES=y
137# CONFIG_PPC_MPC52xx is not set
123CONFIG_PPC_PMAC=y 138CONFIG_PPC_PMAC=y
124CONFIG_PPC_PMAC64=y 139CONFIG_PPC_PMAC64=y
125CONFIG_PPC_MAPLE=y 140CONFIG_PPC_MAPLE=y
141# CONFIG_PPC_PASEMI is not set
126CONFIG_PPC_CELL=y 142CONFIG_PPC_CELL=y
127CONFIG_PPC_CELL_NATIVE=y 143CONFIG_PPC_CELL_NATIVE=y
128CONFIG_PPC_IBM_CELL_BLADE=y 144CONFIG_PPC_IBM_CELL_BLADE=y
145# CONFIG_PPC_PS3 is not set
146CONFIG_PPC_NATIVE=y
129CONFIG_UDBG_RTAS_CONSOLE=y 147CONFIG_UDBG_RTAS_CONSOLE=y
130CONFIG_XICS=y 148CONFIG_XICS=y
131CONFIG_U3_DART=y 149CONFIG_U3_DART=y
@@ -139,6 +157,8 @@ CONFIG_IBMVIO=y
139# CONFIG_IBMEBUS is not set 157# CONFIG_IBMEBUS is not set
140# CONFIG_PPC_MPC106 is not set 158# CONFIG_PPC_MPC106 is not set
141CONFIG_PPC_970_NAP=y 159CONFIG_PPC_970_NAP=y
160CONFIG_PPC_INDIRECT_IO=y
161CONFIG_GENERIC_IOMAP=y
142CONFIG_CPU_FREQ=y 162CONFIG_CPU_FREQ=y
143CONFIG_CPU_FREQ_TABLE=y 163CONFIG_CPU_FREQ_TABLE=y
144# CONFIG_CPU_FREQ_DEBUG is not set 164# CONFIG_CPU_FREQ_DEBUG is not set
@@ -160,14 +180,16 @@ CONFIG_MPIC=y
160# 180#
161CONFIG_SPU_FS=m 181CONFIG_SPU_FS=m
162CONFIG_SPU_BASE=y 182CONFIG_SPU_BASE=y
163CONFIG_SPUFS_MMAP=y
164CONFIG_CBE_RAS=y 183CONFIG_CBE_RAS=y
184CONFIG_CBE_THERM=m
185CONFIG_CBE_CPUFREQ=m
165 186
166# 187#
167# Kernel options 188# Kernel options
168# 189#
169# CONFIG_HZ_100 is not set 190# CONFIG_HZ_100 is not set
170CONFIG_HZ_250=y 191CONFIG_HZ_250=y
192# CONFIG_HZ_300 is not set
171# CONFIG_HZ_1000 is not set 193# CONFIG_HZ_1000 is not set
172CONFIG_HZ=250 194CONFIG_HZ=250
173CONFIG_PREEMPT_NONE=y 195CONFIG_PREEMPT_NONE=y
@@ -192,6 +214,7 @@ CONFIG_ARCH_SELECT_MEMORY_MODEL=y
192CONFIG_ARCH_FLATMEM_ENABLE=y 214CONFIG_ARCH_FLATMEM_ENABLE=y
193CONFIG_ARCH_SPARSEMEM_ENABLE=y 215CONFIG_ARCH_SPARSEMEM_ENABLE=y
194CONFIG_ARCH_SPARSEMEM_DEFAULT=y 216CONFIG_ARCH_SPARSEMEM_DEFAULT=y
217CONFIG_ARCH_POPULATES_NODE_MAP=y
195CONFIG_SELECT_MEMORY_MODEL=y 218CONFIG_SELECT_MEMORY_MODEL=y
196# CONFIG_FLATMEM_MANUAL is not set 219# CONFIG_FLATMEM_MANUAL is not set
197# CONFIG_DISCONTIGMEM_MANUAL is not set 220# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -201,6 +224,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y
201# CONFIG_SPARSEMEM_STATIC is not set 224# CONFIG_SPARSEMEM_STATIC is not set
202CONFIG_SPARSEMEM_EXTREME=y 225CONFIG_SPARSEMEM_EXTREME=y
203CONFIG_MEMORY_HOTPLUG=y 226CONFIG_MEMORY_HOTPLUG=y
227CONFIG_MEMORY_HOTPLUG_SPARSE=y
204CONFIG_SPLIT_PTLOCK_CPUS=4 228CONFIG_SPLIT_PTLOCK_CPUS=4
205CONFIG_RESOURCES_64BIT=y 229CONFIG_RESOURCES_64BIT=y
206CONFIG_ARCH_MEMORY_PROBE=y 230CONFIG_ARCH_MEMORY_PROBE=y
@@ -254,6 +278,7 @@ CONFIG_PACKET=y
254CONFIG_UNIX=y 278CONFIG_UNIX=y
255CONFIG_XFRM=y 279CONFIG_XFRM=y
256CONFIG_XFRM_USER=m 280CONFIG_XFRM_USER=m
281# CONFIG_XFRM_SUB_POLICY is not set
257CONFIG_NET_KEY=m 282CONFIG_NET_KEY=m
258CONFIG_INET=y 283CONFIG_INET=y
259CONFIG_IP_MULTICAST=y 284CONFIG_IP_MULTICAST=y
@@ -272,10 +297,13 @@ CONFIG_INET_XFRM_TUNNEL=m
272CONFIG_INET_TUNNEL=y 297CONFIG_INET_TUNNEL=y
273CONFIG_INET_XFRM_MODE_TRANSPORT=y 298CONFIG_INET_XFRM_MODE_TRANSPORT=y
274CONFIG_INET_XFRM_MODE_TUNNEL=y 299CONFIG_INET_XFRM_MODE_TUNNEL=y
300CONFIG_INET_XFRM_MODE_BEET=y
275CONFIG_INET_DIAG=y 301CONFIG_INET_DIAG=y
276CONFIG_INET_TCP_DIAG=y 302CONFIG_INET_TCP_DIAG=y
277# CONFIG_TCP_CONG_ADVANCED is not set 303# CONFIG_TCP_CONG_ADVANCED is not set
278CONFIG_TCP_CONG_BIC=y 304CONFIG_TCP_CONG_CUBIC=y
305CONFIG_DEFAULT_TCP_CONG="cubic"
306# CONFIG_TCP_MD5SIG is not set
279 307
280# 308#
281# IP: Virtual Server Configuration 309# IP: Virtual Server Configuration
@@ -294,25 +322,31 @@ CONFIG_NETFILTER=y
294CONFIG_NETFILTER_NETLINK=y 322CONFIG_NETFILTER_NETLINK=y
295CONFIG_NETFILTER_NETLINK_QUEUE=m 323CONFIG_NETFILTER_NETLINK_QUEUE=m
296CONFIG_NETFILTER_NETLINK_LOG=m 324CONFIG_NETFILTER_NETLINK_LOG=m
325CONFIG_NF_CONNTRACK_ENABLED=m
326CONFIG_NF_CONNTRACK_SUPPORT=y
327# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
328CONFIG_NF_CONNTRACK=m
329CONFIG_NF_CT_ACCT=y
330CONFIG_NF_CONNTRACK_MARK=y
331CONFIG_NF_CONNTRACK_EVENTS=y
332CONFIG_NF_CT_PROTO_GRE=m
333CONFIG_NF_CT_PROTO_SCTP=m
334CONFIG_NF_CONNTRACK_AMANDA=m
335CONFIG_NF_CONNTRACK_FTP=m
336CONFIG_NF_CONNTRACK_H323=m
337CONFIG_NF_CONNTRACK_IRC=m
338CONFIG_NF_CONNTRACK_NETBIOS_NS=m
339CONFIG_NF_CONNTRACK_PPTP=m
340CONFIG_NF_CONNTRACK_SIP=m
341CONFIG_NF_CONNTRACK_TFTP=m
342CONFIG_NF_CT_NETLINK=m
297# CONFIG_NETFILTER_XTABLES is not set 343# CONFIG_NETFILTER_XTABLES is not set
298 344
299# 345#
300# IP: Netfilter Configuration 346# IP: Netfilter Configuration
301# 347#
302CONFIG_IP_NF_CONNTRACK=m 348CONFIG_NF_CONNTRACK_IPV4=m
303CONFIG_IP_NF_CT_ACCT=y 349CONFIG_NF_CONNTRACK_PROC_COMPAT=y
304CONFIG_IP_NF_CONNTRACK_MARK=y
305CONFIG_IP_NF_CONNTRACK_EVENTS=y
306CONFIG_IP_NF_CONNTRACK_NETLINK=m
307CONFIG_IP_NF_CT_PROTO_SCTP=m
308CONFIG_IP_NF_FTP=m
309CONFIG_IP_NF_IRC=m
310# CONFIG_IP_NF_NETBIOS_NS is not set
311CONFIG_IP_NF_TFTP=m
312CONFIG_IP_NF_AMANDA=m
313# CONFIG_IP_NF_PPTP is not set
314# CONFIG_IP_NF_H323 is not set
315CONFIG_IP_NF_SIP=m
316CONFIG_IP_NF_QUEUE=m 350CONFIG_IP_NF_QUEUE=m
317 351
318# 352#
@@ -339,7 +373,6 @@ CONFIG_LLC=y
339# CONFIG_ATALK is not set 373# CONFIG_ATALK is not set
340# CONFIG_X25 is not set 374# CONFIG_X25 is not set
341# CONFIG_LAPB is not set 375# CONFIG_LAPB is not set
342# CONFIG_NET_DIVERT is not set
343# CONFIG_ECONET is not set 376# CONFIG_ECONET is not set
344# CONFIG_WAN_ROUTER is not set 377# CONFIG_WAN_ROUTER is not set
345 378
@@ -412,6 +445,12 @@ CONFIG_BLK_DEV_INITRD=y
412# CONFIG_ATA_OVER_ETH is not set 445# CONFIG_ATA_OVER_ETH is not set
413 446
414# 447#
448# Misc devices
449#
450# CONFIG_SGI_IOC4 is not set
451# CONFIG_TIFM_CORE is not set
452
453#
415# ATA/ATAPI/MFM/RLL support 454# ATA/ATAPI/MFM/RLL support
416# 455#
417CONFIG_IDE=y 456CONFIG_IDE=y
@@ -438,7 +477,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
438# CONFIG_BLK_DEV_OFFBOARD is not set 477# CONFIG_BLK_DEV_OFFBOARD is not set
439CONFIG_BLK_DEV_GENERIC=y 478CONFIG_BLK_DEV_GENERIC=y
440# CONFIG_BLK_DEV_OPTI621 is not set 479# CONFIG_BLK_DEV_OPTI621 is not set
441CONFIG_BLK_DEV_SL82C105=y
442CONFIG_BLK_DEV_IDEDMA_PCI=y 480CONFIG_BLK_DEV_IDEDMA_PCI=y
443# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 481# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
444CONFIG_IDEDMA_PCI_AUTO=y 482CONFIG_IDEDMA_PCI_AUTO=y
@@ -453,6 +491,7 @@ CONFIG_BLK_DEV_AMD74XX=y
453# CONFIG_BLK_DEV_CS5530 is not set 491# CONFIG_BLK_DEV_CS5530 is not set
454# CONFIG_BLK_DEV_HPT34X is not set 492# CONFIG_BLK_DEV_HPT34X is not set
455# CONFIG_BLK_DEV_HPT366 is not set 493# CONFIG_BLK_DEV_HPT366 is not set
494# CONFIG_BLK_DEV_JMICRON is not set
456# CONFIG_BLK_DEV_SC1200 is not set 495# CONFIG_BLK_DEV_SC1200 is not set
457# CONFIG_BLK_DEV_PIIX is not set 496# CONFIG_BLK_DEV_PIIX is not set
458# CONFIG_BLK_DEV_IT821X is not set 497# CONFIG_BLK_DEV_IT821X is not set
@@ -461,6 +500,7 @@ CONFIG_BLK_DEV_AMD74XX=y
461# CONFIG_BLK_DEV_PDC202XX_NEW is not set 500# CONFIG_BLK_DEV_PDC202XX_NEW is not set
462# CONFIG_BLK_DEV_SVWKS is not set 501# CONFIG_BLK_DEV_SVWKS is not set
463# CONFIG_BLK_DEV_SIIMAGE is not set 502# CONFIG_BLK_DEV_SIIMAGE is not set
503CONFIG_BLK_DEV_SL82C105=y
464# CONFIG_BLK_DEV_SLC90E66 is not set 504# CONFIG_BLK_DEV_SLC90E66 is not set
465# CONFIG_BLK_DEV_TRM290 is not set 505# CONFIG_BLK_DEV_TRM290 is not set
466# CONFIG_BLK_DEV_VIA82CXXX is not set 506# CONFIG_BLK_DEV_VIA82CXXX is not set
@@ -478,6 +518,8 @@ CONFIG_IDEDMA_AUTO=y
478# 518#
479# CONFIG_RAID_ATTRS is not set 519# CONFIG_RAID_ATTRS is not set
480CONFIG_SCSI=y 520CONFIG_SCSI=y
521# CONFIG_SCSI_TGT is not set
522CONFIG_SCSI_NETLINK=y
481CONFIG_SCSI_PROC_FS=y 523CONFIG_SCSI_PROC_FS=y
482 524
483# 525#
@@ -497,14 +539,16 @@ CONFIG_CHR_DEV_SG=y
497CONFIG_SCSI_MULTI_LUN=y 539CONFIG_SCSI_MULTI_LUN=y
498CONFIG_SCSI_CONSTANTS=y 540CONFIG_SCSI_CONSTANTS=y
499# CONFIG_SCSI_LOGGING is not set 541# CONFIG_SCSI_LOGGING is not set
542# CONFIG_SCSI_SCAN_ASYNC is not set
500 543
501# 544#
502# SCSI Transport Attributes 545# SCSI Transports
503# 546#
504CONFIG_SCSI_SPI_ATTRS=y 547CONFIG_SCSI_SPI_ATTRS=y
505CONFIG_SCSI_FC_ATTRS=y 548CONFIG_SCSI_FC_ATTRS=y
506CONFIG_SCSI_ISCSI_ATTRS=m 549CONFIG_SCSI_ISCSI_ATTRS=m
507# CONFIG_SCSI_SAS_ATTRS is not set 550# CONFIG_SCSI_SAS_ATTRS is not set
551# CONFIG_SCSI_SAS_LIBSAS is not set
508 552
509# 553#
510# SCSI low-level drivers 554# SCSI low-level drivers
@@ -517,26 +561,12 @@ CONFIG_SCSI_ISCSI_ATTRS=m
517# CONFIG_SCSI_AIC7XXX is not set 561# CONFIG_SCSI_AIC7XXX is not set
518# CONFIG_SCSI_AIC7XXX_OLD is not set 562# CONFIG_SCSI_AIC7XXX_OLD is not set
519# CONFIG_SCSI_AIC79XX is not set 563# CONFIG_SCSI_AIC79XX is not set
564# CONFIG_SCSI_AIC94XX is not set
565# CONFIG_SCSI_ARCMSR is not set
520# CONFIG_MEGARAID_NEWGEN is not set 566# CONFIG_MEGARAID_NEWGEN is not set
521# CONFIG_MEGARAID_LEGACY is not set 567# CONFIG_MEGARAID_LEGACY is not set
522# CONFIG_MEGARAID_SAS is not set 568# CONFIG_MEGARAID_SAS is not set
523CONFIG_ATA=y
524# CONFIG_SATA_AHCI is not set
525CONFIG_SATA_SVW=y
526# CONFIG_SCSI_ATA_PIIX is not set
527# CONFIG_SATA_MV is not set
528# CONFIG_SATA_NV is not set
529# CONFIG_SCSI_PDC_ADMA is not set
530# CONFIG_SCSI_HPTIOP is not set 569# CONFIG_SCSI_HPTIOP is not set
531# CONFIG_SATA_QSTOR is not set
532# CONFIG_SATA_PROMISE is not set
533# CONFIG_SATA_SX4 is not set
534# CONFIG_SATA_SIL is not set
535# CONFIG_SATA_SIL24 is not set
536# CONFIG_SATA_SIS is not set
537# CONFIG_SATA_ULI is not set
538# CONFIG_SATA_VIA is not set
539# CONFIG_SATA_VITESSE is not set
540# CONFIG_SCSI_BUSLOGIC is not set 570# CONFIG_SCSI_BUSLOGIC is not set
541# CONFIG_SCSI_DMX3191D is not set 571# CONFIG_SCSI_DMX3191D is not set
542# CONFIG_SCSI_EATA is not set 572# CONFIG_SCSI_EATA is not set
@@ -546,6 +576,7 @@ CONFIG_SATA_SVW=y
546CONFIG_SCSI_IBMVSCSI=y 576CONFIG_SCSI_IBMVSCSI=y
547# CONFIG_SCSI_INITIO is not set 577# CONFIG_SCSI_INITIO is not set
548# CONFIG_SCSI_INIA100 is not set 578# CONFIG_SCSI_INIA100 is not set
579# CONFIG_SCSI_STEX is not set
549CONFIG_SCSI_SYM53C8XX_2=y 580CONFIG_SCSI_SYM53C8XX_2=y
550CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 581CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
551CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 582CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
@@ -556,10 +587,66 @@ CONFIG_SCSI_IPR_TRACE=y
556CONFIG_SCSI_IPR_DUMP=y 587CONFIG_SCSI_IPR_DUMP=y
557# CONFIG_SCSI_QLOGIC_1280 is not set 588# CONFIG_SCSI_QLOGIC_1280 is not set
558# CONFIG_SCSI_QLA_FC is not set 589# CONFIG_SCSI_QLA_FC is not set
590# CONFIG_SCSI_QLA_ISCSI is not set
559CONFIG_SCSI_LPFC=m 591CONFIG_SCSI_LPFC=m
560# CONFIG_SCSI_DC395x is not set 592# CONFIG_SCSI_DC395x is not set
561# CONFIG_SCSI_DC390T is not set 593# CONFIG_SCSI_DC390T is not set
562CONFIG_SCSI_DEBUG=m 594CONFIG_SCSI_DEBUG=m
595# CONFIG_SCSI_SRP is not set
596
597#
598# Serial ATA (prod) and Parallel ATA (experimental) drivers
599#
600CONFIG_ATA=y
601# CONFIG_SATA_AHCI is not set
602CONFIG_SATA_SVW=y
603# CONFIG_ATA_PIIX is not set
604# CONFIG_SATA_MV is not set
605# CONFIG_SATA_NV is not set
606# CONFIG_PDC_ADMA is not set
607# CONFIG_SATA_QSTOR is not set
608# CONFIG_SATA_PROMISE is not set
609# CONFIG_SATA_SX4 is not set
610# CONFIG_SATA_SIL is not set
611# CONFIG_SATA_SIL24 is not set
612# CONFIG_SATA_SIS is not set
613# CONFIG_SATA_ULI is not set
614# CONFIG_SATA_VIA is not set
615# CONFIG_SATA_VITESSE is not set
616# CONFIG_PATA_ALI is not set
617# CONFIG_PATA_AMD is not set
618# CONFIG_PATA_ARTOP is not set
619# CONFIG_PATA_ATIIXP is not set
620# CONFIG_PATA_CMD64X is not set
621# CONFIG_PATA_CS5520 is not set
622# CONFIG_PATA_CS5530 is not set
623# CONFIG_PATA_CYPRESS is not set
624# CONFIG_PATA_EFAR is not set
625# CONFIG_ATA_GENERIC is not set
626# CONFIG_PATA_HPT366 is not set
627# CONFIG_PATA_HPT37X is not set
628# CONFIG_PATA_HPT3X2N is not set
629# CONFIG_PATA_HPT3X3 is not set
630# CONFIG_PATA_IT821X is not set
631# CONFIG_PATA_JMICRON is not set
632# CONFIG_PATA_TRIFLEX is not set
633# CONFIG_PATA_MARVELL is not set
634# CONFIG_PATA_MPIIX is not set
635# CONFIG_PATA_OLDPIIX is not set
636# CONFIG_PATA_NETCELL is not set
637# CONFIG_PATA_NS87410 is not set
638# CONFIG_PATA_OPTI is not set
639# CONFIG_PATA_OPTIDMA is not set
640# CONFIG_PATA_PDC_OLD is not set
641# CONFIG_PATA_RADISYS is not set
642# CONFIG_PATA_RZ1000 is not set
643# CONFIG_PATA_SC1200 is not set
644# CONFIG_PATA_SERVERWORKS is not set
645# CONFIG_PATA_PDC2027X is not set
646# CONFIG_PATA_SIL680 is not set
647# CONFIG_PATA_SIS is not set
648# CONFIG_PATA_VIA is not set
649# CONFIG_PATA_WINBOND is not set
563 650
564# 651#
565# Multi-device support (RAID and LVM) 652# Multi-device support (RAID and LVM)
@@ -575,6 +662,7 @@ CONFIG_MD_RAID5_RESHAPE=y
575CONFIG_MD_MULTIPATH=m 662CONFIG_MD_MULTIPATH=m
576CONFIG_MD_FAULTY=m 663CONFIG_MD_FAULTY=m
577CONFIG_BLK_DEV_DM=y 664CONFIG_BLK_DEV_DM=y
665# CONFIG_DM_DEBUG is not set
578CONFIG_DM_CRYPT=m 666CONFIG_DM_CRYPT=m
579CONFIG_DM_SNAPSHOT=m 667CONFIG_DM_SNAPSHOT=m
580CONFIG_DM_MIRROR=m 668CONFIG_DM_MIRROR=m
@@ -630,11 +718,13 @@ CONFIG_IEEE1394_RAWIO=y
630CONFIG_ADB_PMU=y 718CONFIG_ADB_PMU=y
631# CONFIG_ADB_PMU_LED is not set 719# CONFIG_ADB_PMU_LED is not set
632CONFIG_PMAC_SMU=y 720CONFIG_PMAC_SMU=y
721# CONFIG_MAC_EMUMOUSEBTN is not set
633CONFIG_THERM_PM72=y 722CONFIG_THERM_PM72=y
634CONFIG_WINDFARM=y 723CONFIG_WINDFARM=y
635CONFIG_WINDFARM_PM81=y 724CONFIG_WINDFARM_PM81=y
636CONFIG_WINDFARM_PM91=y 725CONFIG_WINDFARM_PM91=y
637CONFIG_WINDFARM_PM112=y 726CONFIG_WINDFARM_PM112=y
727# CONFIG_PMAC_RACKMETER is not set
638 728
639# 729#
640# Network device support 730# Network device support
@@ -675,6 +765,7 @@ CONFIG_VORTEX=y
675CONFIG_IBMVETH=m 765CONFIG_IBMVETH=m
676CONFIG_NET_PCI=y 766CONFIG_NET_PCI=y
677CONFIG_PCNET32=y 767CONFIG_PCNET32=y
768# CONFIG_PCNET32_NAPI is not set
678# CONFIG_AMD8111_ETH is not set 769# CONFIG_AMD8111_ETH is not set
679# CONFIG_ADAPTEC_STARFIRE is not set 770# CONFIG_ADAPTEC_STARFIRE is not set
680# CONFIG_B44 is not set 771# CONFIG_B44 is not set
@@ -713,7 +804,7 @@ CONFIG_E1000=y
713CONFIG_TIGON3=y 804CONFIG_TIGON3=y
714# CONFIG_BNX2 is not set 805# CONFIG_BNX2 is not set
715CONFIG_SPIDER_NET=m 806CONFIG_SPIDER_NET=m
716# CONFIG_MV643XX_ETH is not set 807# CONFIG_QLA3XXX is not set
717 808
718# 809#
719# Ethernet (10000 Mbit) 810# Ethernet (10000 Mbit)
@@ -723,6 +814,7 @@ CONFIG_IXGB=m
723# CONFIG_IXGB_NAPI is not set 814# CONFIG_IXGB_NAPI is not set
724# CONFIG_S2IO is not set 815# CONFIG_S2IO is not set
725# CONFIG_MYRI10GE is not set 816# CONFIG_MYRI10GE is not set
817# CONFIG_NETXEN_NIC is not set
726 818
727# 819#
728# Token Ring devices 820# Token Ring devices
@@ -741,6 +833,7 @@ CONFIG_IBMOL=y
741# Wan interfaces 833# Wan interfaces
742# 834#
743# CONFIG_WAN is not set 835# CONFIG_WAN is not set
836CONFIG_ISERIES_VETH=m
744# CONFIG_FDDI is not set 837# CONFIG_FDDI is not set
745# CONFIG_HIPPI is not set 838# CONFIG_HIPPI is not set
746CONFIG_PPP=m 839CONFIG_PPP=m
@@ -753,6 +846,7 @@ CONFIG_PPP_BSDCOMP=m
753# CONFIG_PPP_MPPE is not set 846# CONFIG_PPP_MPPE is not set
754CONFIG_PPPOE=m 847CONFIG_PPPOE=m
755# CONFIG_SLIP is not set 848# CONFIG_SLIP is not set
849CONFIG_SLHC=m
756# CONFIG_NET_FC is not set 850# CONFIG_NET_FC is not set
757# CONFIG_SHAPER is not set 851# CONFIG_SHAPER is not set
758CONFIG_NETCONSOLE=y 852CONFIG_NETCONSOLE=y
@@ -775,6 +869,7 @@ CONFIG_NET_POLL_CONTROLLER=y
775# Input device support 869# Input device support
776# 870#
777CONFIG_INPUT=y 871CONFIG_INPUT=y
872# CONFIG_INPUT_FF_MEMLESS is not set
778 873
779# 874#
780# Userland interfaces 875# Userland interfaces
@@ -797,6 +892,7 @@ CONFIG_KEYBOARD_ATKBD=y
797# CONFIG_KEYBOARD_LKKBD is not set 892# CONFIG_KEYBOARD_LKKBD is not set
798# CONFIG_KEYBOARD_XTKBD is not set 893# CONFIG_KEYBOARD_XTKBD is not set
799# CONFIG_KEYBOARD_NEWTON is not set 894# CONFIG_KEYBOARD_NEWTON is not set
895# CONFIG_KEYBOARD_STOWAWAY is not set
800CONFIG_INPUT_MOUSE=y 896CONFIG_INPUT_MOUSE=y
801CONFIG_MOUSE_PS2=y 897CONFIG_MOUSE_PS2=y
802# CONFIG_MOUSE_SERIAL is not set 898# CONFIG_MOUSE_SERIAL is not set
@@ -850,6 +946,7 @@ CONFIG_LEGACY_PTYS=y
850CONFIG_LEGACY_PTY_COUNT=256 946CONFIG_LEGACY_PTY_COUNT=256
851CONFIG_HVC_DRIVER=y 947CONFIG_HVC_DRIVER=y
852CONFIG_HVC_CONSOLE=y 948CONFIG_HVC_CONSOLE=y
949CONFIG_HVC_ISERIES=y
853CONFIG_HVC_RTAS=y 950CONFIG_HVC_RTAS=y
854CONFIG_HVCS=m 951CONFIG_HVCS=m
855 952
@@ -868,10 +965,6 @@ CONFIG_GEN_RTC=y
868# CONFIG_DTLK is not set 965# CONFIG_DTLK is not set
869# CONFIG_R3964 is not set 966# CONFIG_R3964 is not set
870# CONFIG_APPLICOM is not set 967# CONFIG_APPLICOM is not set
871
872#
873# Ftape, the floppy tape device driver
874#
875# CONFIG_AGP is not set 968# CONFIG_AGP is not set
876# CONFIG_DRM is not set 969# CONFIG_DRM is not set
877CONFIG_RAW_DRIVER=y 970CONFIG_RAW_DRIVER=y
@@ -882,7 +975,6 @@ CONFIG_MAX_RAW_DEVS=256
882# TPM devices 975# TPM devices
883# 976#
884# CONFIG_TCG_TPM is not set 977# CONFIG_TCG_TPM is not set
885# CONFIG_TELCLOCK is not set
886 978
887# 979#
888# I2C support 980# I2C support
@@ -947,6 +1039,7 @@ CONFIG_I2C_POWERMAC=y
947# 1039#
948# Dallas's 1-wire bus 1040# Dallas's 1-wire bus
949# 1041#
1042# CONFIG_W1 is not set
950 1043
951# 1044#
952# Hardware Monitoring support 1045# Hardware Monitoring support
@@ -955,14 +1048,9 @@ CONFIG_I2C_POWERMAC=y
955# CONFIG_HWMON_VID is not set 1048# CONFIG_HWMON_VID is not set
956 1049
957# 1050#
958# Misc devices
959#
960
961#
962# Multimedia devices 1051# Multimedia devices
963# 1052#
964# CONFIG_VIDEO_DEV is not set 1053# CONFIG_VIDEO_DEV is not set
965CONFIG_VIDEO_V4L2=y
966 1054
967# 1055#
968# Digital Video Broadcasting Devices 1056# Digital Video Broadcasting Devices
@@ -975,6 +1063,7 @@ CONFIG_VIDEO_V4L2=y
975# 1063#
976CONFIG_FIRMWARE_EDID=y 1064CONFIG_FIRMWARE_EDID=y
977CONFIG_FB=y 1065CONFIG_FB=y
1066CONFIG_FB_DDC=y
978CONFIG_FB_CFB_FILLRECT=y 1067CONFIG_FB_CFB_FILLRECT=y
979CONFIG_FB_CFB_COPYAREA=y 1068CONFIG_FB_CFB_COPYAREA=y
980CONFIG_FB_CFB_IMAGEBLIT=y 1069CONFIG_FB_CFB_IMAGEBLIT=y
@@ -1011,6 +1100,7 @@ CONFIG_FB_RADEON_I2C=y
1011# CONFIG_FB_3DFX is not set 1100# CONFIG_FB_3DFX is not set
1012# CONFIG_FB_VOODOO1 is not set 1101# CONFIG_FB_VOODOO1 is not set
1013# CONFIG_FB_TRIDENT is not set 1102# CONFIG_FB_TRIDENT is not set
1103CONFIG_FB_IBM_GXT4500=y
1014# CONFIG_FB_VIRTUAL is not set 1104# CONFIG_FB_VIRTUAL is not set
1015 1105
1016# 1106#
@@ -1159,6 +1249,11 @@ CONFIG_SND_AOA_SOUNDBUS_I2S=m
1159# CONFIG_SOUND_PRIME is not set 1249# CONFIG_SOUND_PRIME is not set
1160 1250
1161# 1251#
1252# HID Devices
1253#
1254CONFIG_HID=y
1255
1256#
1162# USB support 1257# USB support
1163# 1258#
1164CONFIG_USB_ARCH_HAS_HCD=y 1259CONFIG_USB_ARCH_HAS_HCD=y
@@ -1173,6 +1268,7 @@ CONFIG_USB=y
1173CONFIG_USB_DEVICEFS=y 1268CONFIG_USB_DEVICEFS=y
1174# CONFIG_USB_BANDWIDTH is not set 1269# CONFIG_USB_BANDWIDTH is not set
1175# CONFIG_USB_DYNAMIC_MINORS is not set 1270# CONFIG_USB_DYNAMIC_MINORS is not set
1271# CONFIG_USB_MULTITHREAD_PROBE is not set
1176# CONFIG_USB_OTG is not set 1272# CONFIG_USB_OTG is not set
1177 1273
1178# 1274#
@@ -1214,13 +1310,13 @@ CONFIG_USB_STORAGE=m
1214# CONFIG_USB_STORAGE_JUMPSHOT is not set 1310# CONFIG_USB_STORAGE_JUMPSHOT is not set
1215# CONFIG_USB_STORAGE_ALAUDA is not set 1311# CONFIG_USB_STORAGE_ALAUDA is not set
1216# CONFIG_USB_STORAGE_ONETOUCH is not set 1312# CONFIG_USB_STORAGE_ONETOUCH is not set
1313# CONFIG_USB_STORAGE_KARMA is not set
1217# CONFIG_USB_LIBUSUAL is not set 1314# CONFIG_USB_LIBUSUAL is not set
1218 1315
1219# 1316#
1220# USB Input Devices 1317# USB Input Devices
1221# 1318#
1222CONFIG_USB_HID=y 1319CONFIG_USB_HID=y
1223CONFIG_USB_HIDINPUT=y
1224# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1320# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1225# CONFIG_HID_FF is not set 1321# CONFIG_HID_FF is not set
1226CONFIG_USB_HIDDEV=y 1322CONFIG_USB_HIDDEV=y
@@ -1250,6 +1346,7 @@ CONFIG_USB_HIDDEV=y
1250# CONFIG_USB_KAWETH is not set 1346# CONFIG_USB_KAWETH is not set
1251# CONFIG_USB_PEGASUS is not set 1347# CONFIG_USB_PEGASUS is not set
1252# CONFIG_USB_RTL8150 is not set 1348# CONFIG_USB_RTL8150 is not set
1349# CONFIG_USB_USBNET_MII is not set
1253# CONFIG_USB_USBNET is not set 1350# CONFIG_USB_USBNET is not set
1254# CONFIG_USB_MON is not set 1351# CONFIG_USB_MON is not set
1255 1352
@@ -1267,6 +1364,7 @@ CONFIG_USB_HIDDEV=y
1267# 1364#
1268# CONFIG_USB_EMI62 is not set 1365# CONFIG_USB_EMI62 is not set
1269# CONFIG_USB_EMI26 is not set 1366# CONFIG_USB_EMI26 is not set
1367# CONFIG_USB_ADUTUX is not set
1270# CONFIG_USB_AUERSWALD is not set 1368# CONFIG_USB_AUERSWALD is not set
1271# CONFIG_USB_RIO500 is not set 1369# CONFIG_USB_RIO500 is not set
1272# CONFIG_USB_LEGOTOWER is not set 1370# CONFIG_USB_LEGOTOWER is not set
@@ -1274,12 +1372,13 @@ CONFIG_USB_HIDDEV=y
1274# CONFIG_USB_LED is not set 1372# CONFIG_USB_LED is not set
1275# CONFIG_USB_CYPRESS_CY7C63 is not set 1373# CONFIG_USB_CYPRESS_CY7C63 is not set
1276# CONFIG_USB_CYTHERM is not set 1374# CONFIG_USB_CYTHERM is not set
1277# CONFIG_USB_PHIDGETKIT is not set 1375# CONFIG_USB_PHIDGET is not set
1278# CONFIG_USB_PHIDGETSERVO is not set
1279# CONFIG_USB_IDMOUSE is not set 1376# CONFIG_USB_IDMOUSE is not set
1377# CONFIG_USB_FTDI_ELAN is not set
1280CONFIG_USB_APPLEDISPLAY=m 1378CONFIG_USB_APPLEDISPLAY=m
1281# CONFIG_USB_SISUSBVGA is not set 1379# CONFIG_USB_SISUSBVGA is not set
1282# CONFIG_USB_LD is not set 1380# CONFIG_USB_LD is not set
1381# CONFIG_USB_TRANCEVIBRATOR is not set
1283# CONFIG_USB_TEST is not set 1382# CONFIG_USB_TEST is not set
1284 1383
1285# 1384#
@@ -1318,6 +1417,7 @@ CONFIG_INFINIBAND=m
1318CONFIG_INFINIBAND_ADDR_TRANS=y 1417CONFIG_INFINIBAND_ADDR_TRANS=y
1319CONFIG_INFINIBAND_MTHCA=m 1418CONFIG_INFINIBAND_MTHCA=m
1320CONFIG_INFINIBAND_MTHCA_DEBUG=y 1419CONFIG_INFINIBAND_MTHCA_DEBUG=y
1420# CONFIG_INFINIBAND_AMSO1100 is not set
1321CONFIG_INFINIBAND_IPOIB=m 1421CONFIG_INFINIBAND_IPOIB=m
1322CONFIG_INFINIBAND_IPOIB_DEBUG=y 1422CONFIG_INFINIBAND_IPOIB_DEBUG=y
1323# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set 1423# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
@@ -1347,6 +1447,10 @@ CONFIG_INFINIBAND_ISER=m
1347# 1447#
1348 1448
1349# 1449#
1450# Virtualization
1451#
1452
1453#
1350# File systems 1454# File systems
1351# 1455#
1352CONFIG_EXT2_FS=y 1456CONFIG_EXT2_FS=y
@@ -1359,6 +1463,7 @@ CONFIG_EXT3_FS=y
1359CONFIG_EXT3_FS_XATTR=y 1463CONFIG_EXT3_FS_XATTR=y
1360CONFIG_EXT3_FS_POSIX_ACL=y 1464CONFIG_EXT3_FS_POSIX_ACL=y
1361CONFIG_EXT3_FS_SECURITY=y 1465CONFIG_EXT3_FS_SECURITY=y
1466# CONFIG_EXT4DEV_FS is not set
1362CONFIG_JBD=y 1467CONFIG_JBD=y
1363# CONFIG_JBD_DEBUG is not set 1468# CONFIG_JBD_DEBUG is not set
1364CONFIG_FS_MBCACHE=y 1469CONFIG_FS_MBCACHE=y
@@ -1379,6 +1484,7 @@ CONFIG_XFS_FS=m
1379CONFIG_XFS_SECURITY=y 1484CONFIG_XFS_SECURITY=y
1380CONFIG_XFS_POSIX_ACL=y 1485CONFIG_XFS_POSIX_ACL=y
1381# CONFIG_XFS_RT is not set 1486# CONFIG_XFS_RT is not set
1487# CONFIG_GFS2_FS is not set
1382# CONFIG_OCFS2_FS is not set 1488# CONFIG_OCFS2_FS is not set
1383# CONFIG_MINIX_FS is not set 1489# CONFIG_MINIX_FS is not set
1384# CONFIG_ROMFS_FS is not set 1490# CONFIG_ROMFS_FS is not set
@@ -1414,8 +1520,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1414# 1520#
1415CONFIG_PROC_FS=y 1521CONFIG_PROC_FS=y
1416CONFIG_PROC_KCORE=y 1522CONFIG_PROC_KCORE=y
1523CONFIG_PROC_SYSCTL=y
1417CONFIG_SYSFS=y 1524CONFIG_SYSFS=y
1418CONFIG_TMPFS=y 1525CONFIG_TMPFS=y
1526# CONFIG_TMPFS_POSIX_ACL is not set
1419CONFIG_HUGETLBFS=y 1527CONFIG_HUGETLBFS=y
1420CONFIG_HUGETLB_PAGE=y 1528CONFIG_HUGETLB_PAGE=y
1421CONFIG_RAMFS=y 1529CONFIG_RAMFS=y
@@ -1540,8 +1648,23 @@ CONFIG_NLS_KOI8_U=m
1540CONFIG_NLS_UTF8=m 1648CONFIG_NLS_UTF8=m
1541 1649
1542# 1650#
1651# Distributed Lock Manager
1652#
1653# CONFIG_DLM is not set
1654
1655#
1656# iSeries device drivers
1657#
1658# CONFIG_VIOCONS is not set
1659CONFIG_VIODASD=y
1660CONFIG_VIOCD=m
1661CONFIG_VIOTAPE=m
1662CONFIG_VIOPATH=y
1663
1664#
1543# Library routines 1665# Library routines
1544# 1666#
1667CONFIG_BITREVERSE=y
1545CONFIG_CRC_CCITT=m 1668CONFIG_CRC_CCITT=m
1546# CONFIG_CRC16 is not set 1669# CONFIG_CRC16 is not set
1547CONFIG_CRC32=y 1670CONFIG_CRC32=y
@@ -1551,6 +1674,7 @@ CONFIG_ZLIB_DEFLATE=m
1551CONFIG_TEXTSEARCH=y 1674CONFIG_TEXTSEARCH=y
1552CONFIG_TEXTSEARCH_KMP=m 1675CONFIG_TEXTSEARCH_KMP=m
1553CONFIG_PLIST=y 1676CONFIG_PLIST=y
1677CONFIG_IOMAP_COPY=y
1554 1678
1555# 1679#
1556# Instrumentation Support 1680# Instrumentation Support
@@ -1563,8 +1687,11 @@ CONFIG_OPROFILE=y
1563# Kernel hacking 1687# Kernel hacking
1564# 1688#
1565# CONFIG_PRINTK_TIME is not set 1689# CONFIG_PRINTK_TIME is not set
1690CONFIG_ENABLE_MUST_CHECK=y
1566CONFIG_MAGIC_SYSRQ=y 1691CONFIG_MAGIC_SYSRQ=y
1567# CONFIG_UNUSED_SYMBOLS is not set 1692# CONFIG_UNUSED_SYMBOLS is not set
1693CONFIG_DEBUG_FS=y
1694# CONFIG_HEADERS_CHECK is not set
1568CONFIG_DEBUG_KERNEL=y 1695CONFIG_DEBUG_KERNEL=y
1569CONFIG_LOG_BUF_SHIFT=17 1696CONFIG_LOG_BUF_SHIFT=17
1570CONFIG_DETECT_SOFTLOCKUP=y 1697CONFIG_DETECT_SOFTLOCKUP=y
@@ -1578,16 +1705,19 @@ CONFIG_DEBUG_MUTEXES=y
1578# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1705# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1579# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1706# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1580# CONFIG_DEBUG_KOBJECT is not set 1707# CONFIG_DEBUG_KOBJECT is not set
1708CONFIG_DEBUG_BUGVERBOSE=y
1581# CONFIG_DEBUG_INFO is not set 1709# CONFIG_DEBUG_INFO is not set
1582CONFIG_DEBUG_FS=y
1583# CONFIG_DEBUG_VM is not set 1710# CONFIG_DEBUG_VM is not set
1711# CONFIG_DEBUG_LIST is not set
1584CONFIG_FORCED_INLINING=y 1712CONFIG_FORCED_INLINING=y
1585# CONFIG_RCU_TORTURE_TEST is not set 1713# CONFIG_RCU_TORTURE_TEST is not set
1586CONFIG_DEBUG_STACKOVERFLOW=y 1714CONFIG_DEBUG_STACKOVERFLOW=y
1587CONFIG_DEBUG_STACK_USAGE=y 1715CONFIG_DEBUG_STACK_USAGE=y
1716# CONFIG_HCALL_STATS is not set
1588CONFIG_DEBUGGER=y 1717CONFIG_DEBUGGER=y
1589CONFIG_XMON=y 1718CONFIG_XMON=y
1590# CONFIG_XMON_DEFAULT is not set 1719# CONFIG_XMON_DEFAULT is not set
1720CONFIG_XMON_DISASSEMBLY=y
1591CONFIG_IRQSTACKS=y 1721CONFIG_IRQSTACKS=y
1592CONFIG_BOOTX_TEXT=y 1722CONFIG_BOOTX_TEXT=y
1593# CONFIG_PPC_EARLY_DEBUG is not set 1723# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1602,7 +1732,12 @@ CONFIG_BOOTX_TEXT=y
1602# Cryptographic options 1732# Cryptographic options
1603# 1733#
1604CONFIG_CRYPTO=y 1734CONFIG_CRYPTO=y
1735CONFIG_CRYPTO_ALGAPI=y
1736CONFIG_CRYPTO_BLKCIPHER=y
1737CONFIG_CRYPTO_HASH=y
1738CONFIG_CRYPTO_MANAGER=y
1605CONFIG_CRYPTO_HMAC=y 1739CONFIG_CRYPTO_HMAC=y
1740# CONFIG_CRYPTO_XCBC is not set
1606CONFIG_CRYPTO_NULL=m 1741CONFIG_CRYPTO_NULL=m
1607CONFIG_CRYPTO_MD4=m 1742CONFIG_CRYPTO_MD4=m
1608CONFIG_CRYPTO_MD5=y 1743CONFIG_CRYPTO_MD5=y
@@ -1611,9 +1746,14 @@ CONFIG_CRYPTO_SHA256=m
1611CONFIG_CRYPTO_SHA512=m 1746CONFIG_CRYPTO_SHA512=m
1612CONFIG_CRYPTO_WP512=m 1747CONFIG_CRYPTO_WP512=m
1613CONFIG_CRYPTO_TGR192=m 1748CONFIG_CRYPTO_TGR192=m
1749# CONFIG_CRYPTO_GF128MUL is not set
1750CONFIG_CRYPTO_ECB=m
1751CONFIG_CRYPTO_CBC=y
1752# CONFIG_CRYPTO_LRW is not set
1614CONFIG_CRYPTO_DES=y 1753CONFIG_CRYPTO_DES=y
1615CONFIG_CRYPTO_BLOWFISH=m 1754CONFIG_CRYPTO_BLOWFISH=m
1616CONFIG_CRYPTO_TWOFISH=m 1755CONFIG_CRYPTO_TWOFISH=m
1756CONFIG_CRYPTO_TWOFISH_COMMON=m
1617CONFIG_CRYPTO_SERPENT=m 1757CONFIG_CRYPTO_SERPENT=m
1618CONFIG_CRYPTO_AES=m 1758CONFIG_CRYPTO_AES=m
1619CONFIG_CRYPTO_CAST5=m 1759CONFIG_CRYPTO_CAST5=m
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/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c
index e96521530d21..030d300cd71c 100644
--- a/arch/powerpc/kernel/asm-offsets.c
+++ b/arch/powerpc/kernel/asm-offsets.c
@@ -303,5 +303,8 @@ int main(void)
303 DEFINE(NSEC_PER_SEC, NSEC_PER_SEC); 303 DEFINE(NSEC_PER_SEC, NSEC_PER_SEC);
304 DEFINE(CLOCK_REALTIME_RES, TICK_NSEC); 304 DEFINE(CLOCK_REALTIME_RES, TICK_NSEC);
305 305
306#ifdef CONFIG_BUG
307 DEFINE(BUG_ENTRY_SIZE, sizeof(struct bug_entry));
308#endif
306 return 0; 309 return 0;
307} 310}
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index 1a3d4de197d2..2551c0884afc 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -28,6 +28,7 @@
28#include <asm/asm-offsets.h> 28#include <asm/asm-offsets.h>
29#include <asm/cputable.h> 29#include <asm/cputable.h>
30#include <asm/firmware.h> 30#include <asm/firmware.h>
31#include <asm/bug.h>
31 32
32/* 33/*
33 * System calls. 34 * System calls.
@@ -634,19 +635,15 @@ _GLOBAL(enter_rtas)
634 li r0,0 635 li r0,0
635 mtcr r0 636 mtcr r0
636 637
638#ifdef CONFIG_BUG
637 /* There is no way it is acceptable to get here with interrupts enabled, 639 /* There is no way it is acceptable to get here with interrupts enabled,
638 * check it with the asm equivalent of WARN_ON 640 * check it with the asm equivalent of WARN_ON
639 */ 641 */
640 lbz r0,PACASOFTIRQEN(r13) 642 lbz r0,PACASOFTIRQEN(r13)
6411: tdnei r0,0 6431: tdnei r0,0
642.section __bug_table,"a" 644 EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,BUGFLAG_WARNING
643 .llong 1b,__LINE__ + 0x1000000, 1f, 2f 645#endif
644.previous 646
645.section .rodata,"a"
6461: .asciz __FILE__
6472: .asciz "enter_rtas"
648.previous
649
650 /* Hard-disable interrupts */ 647 /* Hard-disable interrupts */
651 mfmsr r6 648 mfmsr r6
652 rldicl r7,r6,48,1 649 rldicl r7,r6,48,1
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/smp.c b/arch/powerpc/kernel/smp.c
index 9b28c238b6c0..0e8beca460af 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -468,7 +468,7 @@ static int __devinit cpu_enable(unsigned int cpu)
468 return -ENOSYS; 468 return -ENOSYS;
469} 469}
470 470
471int __devinit __cpu_up(unsigned int cpu) 471int __cpuinit __cpu_up(unsigned int cpu)
472{ 472{
473 int c; 473 int c;
474 474
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
index 89c836d54809..1bb20d841080 100644
--- a/arch/powerpc/mm/hugetlbpage.c
+++ b/arch/powerpc/mm/hugetlbpage.c
@@ -744,7 +744,8 @@ static int htlb_check_hinted_area(unsigned long addr, unsigned long len)
744 struct vm_area_struct *vma; 744 struct vm_area_struct *vma;
745 745
746 vma = find_vma(current->mm, addr); 746 vma = find_vma(current->mm, addr);
747 if (!vma || ((addr + len) <= vma->vm_start)) 747 if (TASK_SIZE - len >= addr &&
748 (!vma || ((addr + len) <= vma->vm_start)))
748 return 0; 749 return 0;
749 750
750 return -ENOMEM; 751 return -ENOMEM;
@@ -815,6 +816,8 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
815 return -EINVAL; 816 return -EINVAL;
816 if (len & ~HPAGE_MASK) 817 if (len & ~HPAGE_MASK)
817 return -EINVAL; 818 return -EINVAL;
819 if (len > TASK_SIZE)
820 return -ENOMEM;
818 821
819 if (!cpu_has_feature(CPU_FTR_16M_PAGE)) 822 if (!cpu_has_feature(CPU_FTR_16M_PAGE))
820 return -EINVAL; 823 return -EINVAL;
@@ -823,9 +826,6 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
823 BUG_ON((addr + len) < addr); 826 BUG_ON((addr + len) < addr);
824 827
825 if (test_thread_flag(TIF_32BIT)) { 828 if (test_thread_flag(TIF_32BIT)) {
826 /* Paranoia, caller should have dealt with this */
827 BUG_ON((addr + len) > 0x100000000UL);
828
829 curareas = current->mm->context.low_htlb_areas; 829 curareas = current->mm->context.low_htlb_areas;
830 830
831 /* First see if we can use the hint address */ 831 /* First see if we can use the hint address */
diff --git a/arch/powerpc/platforms/52xx/lite5200.c b/arch/powerpc/platforms/52xx/lite5200.c
index eaff71e74fb0..0f21bab33f6c 100644
--- a/arch/powerpc/platforms/52xx/lite5200.c
+++ b/arch/powerpc/platforms/52xx/lite5200.c
@@ -153,6 +153,7 @@ define_machine(lite52xx) {
153 .name = "lite52xx", 153 .name = "lite52xx",
154 .probe = lite52xx_probe, 154 .probe = lite52xx_probe,
155 .setup_arch = lite52xx_setup_arch, 155 .setup_arch = lite52xx_setup_arch,
156 .init = mpc52xx_declare_of_platform_devices,
156 .init_IRQ = mpc52xx_init_irq, 157 .init_IRQ = mpc52xx_init_irq,
157 .get_irq = mpc52xx_get_irq, 158 .get_irq = mpc52xx_get_irq,
158 .show_cpuinfo = lite52xx_show_cpuinfo, 159 .show_cpuinfo = lite52xx_show_cpuinfo,
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c
index 8331ff457770..cc40889074bd 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_common.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c
@@ -116,11 +116,12 @@ unmap_regs:
116 if (xlb) iounmap(xlb); 116 if (xlb) iounmap(xlb);
117} 117}
118 118
119static int __init 119void __init
120mpc52xx_declare_of_platform_devices(void) 120mpc52xx_declare_of_platform_devices(void)
121{ 121{
122 /* Find every child of the SOC node and add it to of_platform */ 122 /* Find every child of the SOC node and add it to of_platform */
123 return of_platform_bus_probe(NULL, NULL, NULL); 123 if (of_platform_bus_probe(NULL, NULL, NULL))
124 printk(KERN_ERR __FILE__ ": "
125 "Error while probing of_platform bus\n");
124} 126}
125 127
126device_initcall(mpc52xx_declare_of_platform_devices);
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/iseries/lpevents.c b/arch/powerpc/platforms/iseries/lpevents.c
index e3e929e1b460..c1f4502a3c6a 100644
--- a/arch/powerpc/platforms/iseries/lpevents.c
+++ b/arch/powerpc/platforms/iseries/lpevents.c
@@ -17,6 +17,7 @@
17 17
18#include <asm/system.h> 18#include <asm/system.h>
19#include <asm/paca.h> 19#include <asm/paca.h>
20#include <asm/firmware.h>
20#include <asm/iseries/it_lp_queue.h> 21#include <asm/iseries/it_lp_queue.h>
21#include <asm/iseries/hv_lp_event.h> 22#include <asm/iseries/hv_lp_event.h>
22#include <asm/iseries/hv_call_event.h> 23#include <asm/iseries/hv_call_event.h>
@@ -318,6 +319,9 @@ static int __init proc_lpevents_init(void)
318{ 319{
319 struct proc_dir_entry *e; 320 struct proc_dir_entry *e;
320 321
322 if (!firmware_has_feature(FW_FEATURE_ISERIES))
323 return 0;
324
321 e = create_proc_entry("iSeries/lpevents", S_IFREG|S_IRUGO, NULL); 325 e = create_proc_entry("iSeries/lpevents", S_IFREG|S_IRUGO, NULL);
322 if (e) 326 if (e)
323 e->proc_fops = &proc_lpevents_operations; 327 e->proc_fops = &proc_lpevents_operations;
diff --git a/arch/powerpc/platforms/iseries/mf.c b/arch/powerpc/platforms/iseries/mf.c
index cff15ae24f6b..1ad0e4aaad1a 100644
--- a/arch/powerpc/platforms/iseries/mf.c
+++ b/arch/powerpc/platforms/iseries/mf.c
@@ -38,6 +38,7 @@
38#include <asm/uaccess.h> 38#include <asm/uaccess.h>
39#include <asm/paca.h> 39#include <asm/paca.h>
40#include <asm/abs_addr.h> 40#include <asm/abs_addr.h>
41#include <asm/firmware.h>
41#include <asm/iseries/vio.h> 42#include <asm/iseries/vio.h>
42#include <asm/iseries/mf.h> 43#include <asm/iseries/mf.h>
43#include <asm/iseries/hv_lp_config.h> 44#include <asm/iseries/hv_lp_config.h>
@@ -1235,6 +1236,9 @@ static int __init mf_proc_init(void)
1235 char name[2]; 1236 char name[2];
1236 int i; 1237 int i;
1237 1238
1239 if (!firmware_has_feature(FW_FEATURE_ISERIES))
1240 return 0;
1241
1238 mf_proc_root = proc_mkdir("iSeries/mf", NULL); 1242 mf_proc_root = proc_mkdir("iSeries/mf", NULL);
1239 if (!mf_proc_root) 1243 if (!mf_proc_root)
1240 return 1; 1244 return 1;
diff --git a/arch/powerpc/platforms/iseries/proc.c b/arch/powerpc/platforms/iseries/proc.c
index c241413629ac..b54e37101e69 100644
--- a/arch/powerpc/platforms/iseries/proc.c
+++ b/arch/powerpc/platforms/iseries/proc.c
@@ -24,6 +24,7 @@
24#include <asm/processor.h> 24#include <asm/processor.h>
25#include <asm/time.h> 25#include <asm/time.h>
26#include <asm/lppaca.h> 26#include <asm/lppaca.h>
27#include <asm/firmware.h>
27#include <asm/iseries/hv_call_xm.h> 28#include <asm/iseries/hv_call_xm.h>
28 29
29#include "processor_vpd.h" 30#include "processor_vpd.h"
@@ -31,7 +32,12 @@
31 32
32static int __init iseries_proc_create(void) 33static int __init iseries_proc_create(void)
33{ 34{
34 struct proc_dir_entry *e = proc_mkdir("iSeries", 0); 35 struct proc_dir_entry *e;
36
37 if (!firmware_has_feature(FW_FEATURE_ISERIES))
38 return 0;
39
40 e = proc_mkdir("iSeries", 0);
35 if (!e) 41 if (!e)
36 return 1; 42 return 1;
37 43
@@ -106,6 +112,9 @@ static int __init iseries_proc_init(void)
106{ 112{
107 struct proc_dir_entry *e; 113 struct proc_dir_entry *e;
108 114
115 if (!firmware_has_feature(FW_FEATURE_ISERIES))
116 return 0;
117
109 e = create_proc_entry("iSeries/titanTod", S_IFREG|S_IRUGO, NULL); 118 e = create_proc_entry("iSeries/titanTod", S_IFREG|S_IRUGO, NULL);
110 if (e) 119 if (e)
111 e->proc_fops = &proc_titantod_operations; 120 e->proc_fops = &proc_titantod_operations;
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c
index bdf2afbb60c1..cce7e309340c 100644
--- a/arch/powerpc/platforms/iseries/setup.c
+++ b/arch/powerpc/platforms/iseries/setup.c
@@ -527,7 +527,8 @@ static void __init iSeries_fixup_klimit(void)
527static int __init iSeries_src_init(void) 527static int __init iSeries_src_init(void)
528{ 528{
529 /* clear the progress line */ 529 /* clear the progress line */
530 ppc_md.progress(" ", 0xffff); 530 if (firmware_has_feature(FW_FEATURE_ISERIES))
531 ppc_md.progress(" ", 0xffff);
531 return 0; 532 return 0;
532} 533}
533 534
diff --git a/arch/powerpc/platforms/iseries/viopath.c b/arch/powerpc/platforms/iseries/viopath.c
index 84e7ee2c086f..a6799ed34a66 100644
--- a/arch/powerpc/platforms/iseries/viopath.c
+++ b/arch/powerpc/platforms/iseries/viopath.c
@@ -42,6 +42,7 @@
42#include <asm/system.h> 42#include <asm/system.h>
43#include <asm/uaccess.h> 43#include <asm/uaccess.h>
44#include <asm/prom.h> 44#include <asm/prom.h>
45#include <asm/firmware.h>
45#include <asm/iseries/hv_types.h> 46#include <asm/iseries/hv_types.h>
46#include <asm/iseries/hv_lp_event.h> 47#include <asm/iseries/hv_lp_event.h>
47#include <asm/iseries/hv_lp_config.h> 48#include <asm/iseries/hv_lp_config.h>
@@ -183,6 +184,9 @@ static int __init vio_proc_init(void)
183{ 184{
184 struct proc_dir_entry *e; 185 struct proc_dir_entry *e;
185 186
187 if (!firmware_has_feature(FW_FEATURE_ISERIES))
188 return 0;
189
186 e = create_proc_entry("iSeries/config", 0, NULL); 190 e = create_proc_entry("iSeries/config", 0, NULL);
187 if (e) 191 if (e)
188 e->proc_fops = &proc_viopath_operations; 192 e->proc_fops = &proc_viopath_operations;
diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c
index f12d5c69e74d..50855d4fd5a0 100644
--- a/arch/powerpc/platforms/maple/setup.c
+++ b/arch/powerpc/platforms/maple/setup.c
@@ -254,7 +254,6 @@ static void __init maple_init_IRQ(void)
254 printk(KERN_DEBUG "OpenPIC addr: %lx, has ISUs: %d\n", 254 printk(KERN_DEBUG "OpenPIC addr: %lx, has ISUs: %d\n",
255 openpic_addr, has_isus); 255 openpic_addr, has_isus);
256 } 256 }
257 of_node_put(root);
258 257
259 BUG_ON(openpic_addr == 0); 258 BUG_ON(openpic_addr == 0);
260 259
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c
index 89d6e295dbf7..bea7d1bb1a3b 100644
--- a/arch/powerpc/platforms/pasemi/setup.c
+++ b/arch/powerpc/platforms/pasemi/setup.c
@@ -129,7 +129,6 @@ static __init void pas_init_IRQ(void)
129 } 129 }
130 openpic_addr = of_read_number(opprop, naddr); 130 openpic_addr = of_read_number(opprop, naddr);
131 printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr); 131 printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr);
132 of_node_put(root);
133 132
134 mpic = mpic_alloc(mpic_node, openpic_addr, MPIC_PRIMARY, 0, 0, 133 mpic = mpic_alloc(mpic_node, openpic_addr, MPIC_PRIMARY, 0, 0,
135 " PAS-OPIC "); 134 " PAS-OPIC ");
diff --git a/arch/powerpc/platforms/pseries/hvCall.S b/arch/powerpc/platforms/pseries/hvCall.S
index c00cfed7af2c..5c7e38789897 100644
--- a/arch/powerpc/platforms/pseries/hvCall.S
+++ b/arch/powerpc/platforms/pseries/hvCall.S
@@ -26,7 +26,7 @@
26BEGIN_FTR_SECTION; \ 26BEGIN_FTR_SECTION; \
27 mfspr r0,SPRN_PURR; /* get PURR and */ \ 27 mfspr r0,SPRN_PURR; /* get PURR and */ \
28 std r0,STK_PARM(r6)(r1); /* save for later */ \ 28 std r0,STK_PARM(r6)(r1); /* save for later */ \
29END_FTR_SECTION_IFCLR(CPU_FTR_PURR); 29END_FTR_SECTION_IFSET(CPU_FTR_PURR);
30 30
31/* 31/*
32 * postcall is performed immediately before function return which 32 * postcall is performed immediately before function return which
@@ -43,7 +43,7 @@ BEGIN_FTR_SECTION; \
43 mfspr r8,SPRN_PURR; /* PURR after */ \ 43 mfspr r8,SPRN_PURR; /* PURR after */ \
44 ld r6,STK_PARM(r6)(r1); /* PURR before */ \ 44 ld r6,STK_PARM(r6)(r1); /* PURR before */ \
45 subf r6,r6,r8; /* delta */ \ 45 subf r6,r6,r8; /* delta */ \
46END_FTR_SECTION_IFCLR(CPU_FTR_PURR); \ 46END_FTR_SECTION_IFSET(CPU_FTR_PURR); \
47 ld r5,STK_PARM(r5)(r1); /* timebase before */ \ 47 ld r5,STK_PARM(r5)(r1); /* timebase before */ \
48 subf r5,r5,r7; /* time delta */ \ 48 subf r5,r5,r7; /* time delta */ \
49 \ 49 \
@@ -66,7 +66,7 @@ BEGIN_FTR_SECTION; \
66 ld r7,HCALL_STAT_PURR(r4); /* PURR */ \ 66 ld r7,HCALL_STAT_PURR(r4); /* PURR */ \
67 add r7,r7,r6; \ 67 add r7,r7,r6; \
68 std r7,HCALL_STAT_PURR(r4); \ 68 std r7,HCALL_STAT_PURR(r4); \
69END_FTR_SECTION_IFCLR(CPU_FTR_PURR); \ 69END_FTR_SECTION_IFSET(CPU_FTR_PURR); \
701: 701:
71#else 71#else
72#define HCALL_INST_PRECALL 72#define HCALL_INST_PRECALL
@@ -145,6 +145,7 @@ _GLOBAL(plpar_hcall9)
145 145
146 HVSC /* invoke the hypervisor */ 146 HVSC /* invoke the hypervisor */
147 147
148 mr r0,r12
148 ld r12,STK_PARM(r4)(r1) 149 ld r12,STK_PARM(r4)(r1)
149 std r4, 0(r12) 150 std r4, 0(r12)
150 std r5, 8(r12) 151 std r5, 8(r12)
@@ -154,7 +155,7 @@ _GLOBAL(plpar_hcall9)
154 std r9, 40(r12) 155 std r9, 40(r12)
155 std r10,48(r12) 156 std r10,48(r12)
156 std r11,56(r12) 157 std r11,56(r12)
157 std r12,64(r12) 158 std r0, 64(r12)
158 159
159 HCALL_INST_POSTCALL 160 HCALL_INST_POSTCALL
160 161
diff --git a/arch/powerpc/platforms/pseries/hvCall_inst.c b/arch/powerpc/platforms/pseries/hvCall_inst.c
index 80181c4c49eb..3ddc04925d50 100644
--- a/arch/powerpc/platforms/pseries/hvCall_inst.c
+++ b/arch/powerpc/platforms/pseries/hvCall_inst.c
@@ -34,7 +34,7 @@ DEFINE_PER_CPU(struct hcall_stats[HCALL_STAT_ARRAY_SIZE], hcall_stats);
34 */ 34 */
35static void *hc_start(struct seq_file *m, loff_t *pos) 35static void *hc_start(struct seq_file *m, loff_t *pos)
36{ 36{
37 if ((int)*pos < HCALL_STAT_ARRAY_SIZE) 37 if ((int)*pos < (HCALL_STAT_ARRAY_SIZE-1))
38 return (void *)(unsigned long)(*pos + 1); 38 return (void *)(unsigned long)(*pos + 1);
39 39
40 return NULL; 40 return NULL;
@@ -57,7 +57,7 @@ static int hc_show(struct seq_file *m, void *p)
57 struct hcall_stats *hs = (struct hcall_stats *)m->private; 57 struct hcall_stats *hs = (struct hcall_stats *)m->private;
58 58
59 if (hs[h_num].num_calls) { 59 if (hs[h_num].num_calls) {
60 if (!cpu_has_feature(CPU_FTR_PURR)) 60 if (cpu_has_feature(CPU_FTR_PURR))
61 seq_printf(m, "%lu %lu %lu %lu\n", h_num<<2, 61 seq_printf(m, "%lu %lu %lu %lu\n", h_num<<2,
62 hs[h_num].num_calls, 62 hs[h_num].num_calls,
63 hs[h_num].tb_total, 63 hs[h_num].tb_total,
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/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c
index b5b2b1103de8..81d172d65038 100644
--- a/arch/powerpc/platforms/pseries/xics.c
+++ b/arch/powerpc/platforms/pseries/xics.c
@@ -224,7 +224,6 @@ static void xics_unmask_irq(unsigned int virq)
224static void xics_mask_real_irq(unsigned int irq) 224static void xics_mask_real_irq(unsigned int irq)
225{ 225{
226 int call_status; 226 int call_status;
227 unsigned int server;
228 227
229 if (irq == XICS_IPI) 228 if (irq == XICS_IPI)
230 return; 229 return;
@@ -236,9 +235,9 @@ static void xics_mask_real_irq(unsigned int irq)
236 return; 235 return;
237 } 236 }
238 237
239 server = get_irq_server(irq);
240 /* Have to set XIVE to 0xff to be able to remove a slot */ 238 /* Have to set XIVE to 0xff to be able to remove a slot */
241 call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, server, 0xff); 239 call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq,
240 default_server, 0xff);
242 if (call_status != 0) { 241 if (call_status != 0) {
243 printk(KERN_ERR "xics_disable_irq: irq=%u: ibm_set_xive(0xff)" 242 printk(KERN_ERR "xics_disable_irq: irq=%u: ibm_set_xive(0xff)"
244 " returned %d\n", irq, call_status); 243 " returned %d\n", irq, call_status);
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile
index 04d4917eb303..2621a7e72d2d 100644
--- a/arch/powerpc/sysdev/Makefile
+++ b/arch/powerpc/sysdev/Makefile
@@ -12,7 +12,6 @@ obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o
12obj-$(CONFIG_FSL_SOC) += fsl_soc.o 12obj-$(CONFIG_FSL_SOC) += fsl_soc.o
13obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o 13obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o
14obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ 14obj-$(CONFIG_QUICC_ENGINE) += qe_lib/
15obj-$(CONFIG_MTD) += rom.o
16 15
17ifeq ($(CONFIG_PPC_MERGE),y) 16ifeq ($(CONFIG_PPC_MERGE),y)
18obj-$(CONFIG_PPC_I8259) += i8259.o 17obj-$(CONFIG_PPC_I8259) += i8259.o
@@ -21,5 +20,6 @@ endif
21 20
22# Temporary hack until we have migrated to asm-powerpc 21# Temporary hack until we have migrated to asm-powerpc
23ifeq ($(ARCH),powerpc) 22ifeq ($(ARCH),powerpc)
23obj-$(CONFIG_MTD) += rom.o
24obj-$(CONFIG_CPM2) += cpm2_common.o cpm2_pic.o 24obj-$(CONFIG_CPM2) += cpm2_common.o cpm2_pic.o
25endif 25endif
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/s390/kernel/head31.S b/arch/s390/kernel/head31.S
index 4388b3309e0c..eca507050e47 100644
--- a/arch/s390/kernel/head31.S
+++ b/arch/s390/kernel/head31.S
@@ -164,11 +164,14 @@ startup_continue:
164 srl %r7,28 164 srl %r7,28
165 clr %r6,%r7 # compare cc with last access code 165 clr %r6,%r7 # compare cc with last access code
166 be .Lsame-.LPG1(%r13) 166 be .Lsame-.LPG1(%r13)
167 b .Lchkmem-.LPG1(%r13) 167 lhi %r8,0 # no program checks
168 b .Lsavchk-.LPG1(%r13)
168.Lsame: 169.Lsame:
169 ar %r5,%r1 # add 128KB to end of chunk 170 ar %r5,%r1 # add 128KB to end of chunk
170 bno .Lloop-.LPG1(%r13) # r1 < 0x80000000 -> loop 171 bno .Lloop-.LPG1(%r13) # r1 < 0x80000000 -> loop
171.Lchkmem: # > 2GB or tprot got a program check 172.Lchkmem: # > 2GB or tprot got a program check
173 lhi %r8,1 # set program check flag
174.Lsavchk:
172 clr %r4,%r5 # chunk size > 0? 175 clr %r4,%r5 # chunk size > 0?
173 be .Lchkloop-.LPG1(%r13) 176 be .Lchkloop-.LPG1(%r13)
174 st %r4,0(%r3) # store start address of chunk 177 st %r4,0(%r3) # store start address of chunk
@@ -190,8 +193,15 @@ startup_continue:
190 je .Ldonemem # if not, leave 193 je .Ldonemem # if not, leave
191 chi %r10,0 # do we have chunks left? 194 chi %r10,0 # do we have chunks left?
192 je .Ldonemem 195 je .Ldonemem
196 chi %r8,1 # program check ?
197 je .Lpgmchk
198 lr %r4,%r5 # potential new chunk
199 alr %r5,%r1 # add 128KB to end of chunk
200 j .Llpcnt
201.Lpgmchk:
193 alr %r5,%r1 # add 128KB to end of chunk 202 alr %r5,%r1 # add 128KB to end of chunk
194 lr %r4,%r5 # potential new chunk 203 lr %r4,%r5 # potential new chunk
204.Llpcnt:
195 clr %r5,%r9 # should we go on? 205 clr %r5,%r9 # should we go on?
196 jl .Lloop 206 jl .Lloop
197.Ldonemem: 207.Ldonemem:
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S
index c526279e1123..6ba3f4512dd1 100644
--- a/arch/s390/kernel/head64.S
+++ b/arch/s390/kernel/head64.S
@@ -172,12 +172,15 @@ startup_continue:
172 srl %r7,28 172 srl %r7,28
173 clr %r6,%r7 # compare cc with last access code 173 clr %r6,%r7 # compare cc with last access code
174 je .Lsame 174 je .Lsame
175 j .Lchkmem 175 lghi %r8,0 # no program checks
176 j .Lsavchk
176.Lsame: 177.Lsame:
177 algr %r5,%r1 # add 128KB to end of chunk 178 algr %r5,%r1 # add 128KB to end of chunk
178 # no need to check here, 179 # no need to check here,
179 brc 12,.Lloop # this is the same chunk 180 brc 12,.Lloop # this is the same chunk
180.Lchkmem: # > 16EB or tprot got a program check 181.Lchkmem: # > 16EB or tprot got a program check
182 lghi %r8,1 # set program check flag
183.Lsavchk:
181 clgr %r4,%r5 # chunk size > 0? 184 clgr %r4,%r5 # chunk size > 0?
182 je .Lchkloop 185 je .Lchkloop
183 stg %r4,0(%r3) # store start address of chunk 186 stg %r4,0(%r3) # store start address of chunk
@@ -204,8 +207,15 @@ startup_continue:
204 chi %r10, 0 # do we have chunks left? 207 chi %r10, 0 # do we have chunks left?
205 je .Ldonemem 208 je .Ldonemem
206.Lhsaskip: 209.Lhsaskip:
210 chi %r8,1 # program check ?
211 je .Lpgmchk
212 lgr %r4,%r5 # potential new chunk
213 algr %r5,%r1 # add 128KB to end of chunk
214 j .Llpcnt
215.Lpgmchk:
207 algr %r5,%r1 # add 128KB to end of chunk 216 algr %r5,%r1 # add 128KB to end of chunk
208 lgr %r4,%r5 # potential new chunk 217 lgr %r4,%r5 # potential new chunk
218.Llpcnt:
209 clgr %r5,%r9 # should we go on? 219 clgr %r5,%r9 # should we go on?
210 jl .Lloop 220 jl .Lloop
211.Ldonemem: 221.Ldonemem:
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 49ef206ec880..5d8ee3baac14 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -476,7 +476,7 @@ static void __init setup_memory_end(void)
476 int i; 476 int i;
477 477
478 memory_size = real_size = 0; 478 memory_size = real_size = 0;
479 max_phys = VMALLOC_END - VMALLOC_MIN_SIZE; 479 max_phys = VMALLOC_END_INIT - VMALLOC_MIN_SIZE;
480 memory_end &= PAGE_MASK; 480 memory_end &= PAGE_MASK;
481 481
482 max_mem = memory_end ? min(max_phys, memory_end) : max_phys; 482 max_mem = memory_end ? min(max_phys, memory_end) : max_phys;
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 19090f7d4f51..c0cd255fddbd 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -794,7 +794,10 @@ static int __init topology_init(void)
794 int ret; 794 int ret;
795 795
796 for_each_possible_cpu(cpu) { 796 for_each_possible_cpu(cpu) {
797 ret = register_cpu(&per_cpu(cpu_devices, cpu), cpu); 797 struct cpu *c = &per_cpu(cpu_devices, cpu);
798
799 c->hotpluggable = 1;
800 ret = register_cpu(c, cpu);
798 if (ret) 801 if (ret)
799 printk(KERN_WARNING "topology_init: register_cpu %d " 802 printk(KERN_WARNING "topology_init: register_cpu %d "
800 "failed (%d)\n", cpu, ret); 803 "failed (%d)\n", cpu, ret);
diff --git a/arch/s390/lib/uaccess_pt.c b/arch/s390/lib/uaccess_pt.c
index 633249c3ba91..49c3e46b4065 100644
--- a/arch/s390/lib/uaccess_pt.c
+++ b/arch/s390/lib/uaccess_pt.c
@@ -8,6 +8,7 @@
8 */ 8 */
9 9
10#include <linux/errno.h> 10#include <linux/errno.h>
11#include <linux/hardirq.h>
11#include <linux/mm.h> 12#include <linux/mm.h>
12#include <asm/uaccess.h> 13#include <asm/uaccess.h>
13#include <asm/futex.h> 14#include <asm/futex.h>
@@ -18,6 +19,8 @@ static inline int __handle_fault(struct mm_struct *mm, unsigned long address,
18 struct vm_area_struct *vma; 19 struct vm_area_struct *vma;
19 int ret = -EFAULT; 20 int ret = -EFAULT;
20 21
22 if (in_atomic())
23 return ret;
21 down_read(&mm->mmap_sem); 24 down_read(&mm->mmap_sem);
22 vma = find_vma(mm, address); 25 vma = find_vma(mm, address);
23 if (unlikely(!vma)) 26 if (unlikely(!vma))
diff --git a/arch/s390/lib/uaccess_std.c b/arch/s390/lib/uaccess_std.c
index bbaca66fa293..56a0214e9928 100644
--- a/arch/s390/lib/uaccess_std.c
+++ b/arch/s390/lib/uaccess_std.c
@@ -258,8 +258,6 @@ int futex_atomic_op(int op, int __user *uaddr, int oparg, int *old)
258{ 258{
259 int oldval = 0, newval, ret; 259 int oldval = 0, newval, ret;
260 260
261 pagefault_disable();
262
263 switch (op) { 261 switch (op) {
264 case FUTEX_OP_SET: 262 case FUTEX_OP_SET:
265 __futex_atomic_op("lr %2,%5\n", 263 __futex_atomic_op("lr %2,%5\n",
@@ -284,7 +282,6 @@ int futex_atomic_op(int op, int __user *uaddr, int oparg, int *old)
284 default: 282 default:
285 ret = -ENOSYS; 283 ret = -ENOSYS;
286 } 284 }
287 pagefault_enable();
288 *old = oldval; 285 *old = oldval;
289 return ret; 286 return ret;
290} 287}
diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c
index 7f2944d3ec2a..cd3d93e8c211 100644
--- a/arch/s390/mm/vmem.c
+++ b/arch/s390/mm/vmem.c
@@ -61,7 +61,8 @@ void memmap_init(unsigned long size, int nid, unsigned long zone,
61 61
62 if (map_start < map_end) 62 if (map_start < map_end)
63 memmap_init_zone((unsigned long)(map_end - map_start), 63 memmap_init_zone((unsigned long)(map_end - map_start),
64 nid, zone, page_to_pfn(map_start)); 64 nid, zone, page_to_pfn(map_start),
65 MEMMAP_EARLY);
65 } 66 }
66} 67}
67 68
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
index 0a4958536bcd..fc99f7b8012f 100644
--- a/arch/sparc64/kernel/smp.c
+++ b/arch/sparc64/kernel/smp.c
@@ -1388,7 +1388,7 @@ void __devinit smp_prepare_boot_cpu(void)
1388{ 1388{
1389} 1389}
1390 1390
1391int __devinit __cpu_up(unsigned int cpu) 1391int __cpuinit __cpu_up(unsigned int cpu)
1392{ 1392{
1393 int ret = smp_boot_one_cpu(cpu); 1393 int ret = smp_boot_one_cpu(cpu);
1394 1394
diff --git a/arch/x86_64/defconfig b/arch/x86_64/defconfig
index 9cc7c21547a2..69584c295305 100644
--- a/arch/x86_64/defconfig
+++ b/arch/x86_64/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19-git14 3# Linux kernel version: 2.6.20-rc3
4# Sat Dec 9 21:23:09 2006 4# Fri Jan 5 11:54:41 2007
5# 5#
6CONFIG_X86_64=y 6CONFIG_X86_64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -1056,6 +1056,7 @@ CONFIG_HWMON=y
1056# CONFIG_SENSORS_LM92 is not set 1056# CONFIG_SENSORS_LM92 is not set
1057# CONFIG_SENSORS_MAX1619 is not set 1057# CONFIG_SENSORS_MAX1619 is not set
1058# CONFIG_SENSORS_PC87360 is not set 1058# CONFIG_SENSORS_PC87360 is not set
1059# CONFIG_SENSORS_PC87427 is not set
1059# CONFIG_SENSORS_SIS5595 is not set 1060# CONFIG_SENSORS_SIS5595 is not set
1060# CONFIG_SENSORS_SMSC47M1 is not set 1061# CONFIG_SENSORS_SMSC47M1 is not set
1061# CONFIG_SENSORS_SMSC47M192 is not set 1062# CONFIG_SENSORS_SMSC47M192 is not set
@@ -1066,6 +1067,7 @@ CONFIG_SENSORS_SMSC47B397=m
1066# CONFIG_SENSORS_W83781D is not set 1067# CONFIG_SENSORS_W83781D is not set
1067# CONFIG_SENSORS_W83791D is not set 1068# CONFIG_SENSORS_W83791D is not set
1068# CONFIG_SENSORS_W83792D is not set 1069# CONFIG_SENSORS_W83792D is not set
1070# CONFIG_SENSORS_W83793 is not set
1069# CONFIG_SENSORS_W83L785TS is not set 1071# CONFIG_SENSORS_W83L785TS is not set
1070# CONFIG_SENSORS_W83627HF is not set 1072# CONFIG_SENSORS_W83627HF is not set
1071# CONFIG_SENSORS_W83627EHF is not set 1073# CONFIG_SENSORS_W83627EHF is not set
@@ -1311,6 +1313,11 @@ CONFIG_USB_MON=y
1311# 1313#
1312 1314
1313# 1315#
1316# Virtualization
1317#
1318# CONFIG_KVM is not set
1319
1320#
1314# Firmware Drivers 1321# Firmware Drivers
1315# 1322#
1316# CONFIG_EDD is not set 1323# CONFIG_EDD is not set
@@ -1502,6 +1509,8 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1502# CONFIG_ENABLE_MUST_CHECK is not set 1509# CONFIG_ENABLE_MUST_CHECK is not set
1503CONFIG_MAGIC_SYSRQ=y 1510CONFIG_MAGIC_SYSRQ=y
1504CONFIG_UNUSED_SYMBOLS=y 1511CONFIG_UNUSED_SYMBOLS=y
1512CONFIG_DEBUG_FS=y
1513# CONFIG_HEADERS_CHECK is not set
1505CONFIG_DEBUG_KERNEL=y 1514CONFIG_DEBUG_KERNEL=y
1506CONFIG_LOG_BUF_SHIFT=18 1515CONFIG_LOG_BUF_SHIFT=18
1507CONFIG_DETECT_SOFTLOCKUP=y 1516CONFIG_DETECT_SOFTLOCKUP=y
@@ -1519,12 +1528,10 @@ CONFIG_DETECT_SOFTLOCKUP=y
1519# CONFIG_DEBUG_KOBJECT is not set 1528# CONFIG_DEBUG_KOBJECT is not set
1520CONFIG_DEBUG_BUGVERBOSE=y 1529CONFIG_DEBUG_BUGVERBOSE=y
1521# CONFIG_DEBUG_INFO is not set 1530# CONFIG_DEBUG_INFO is not set
1522CONFIG_DEBUG_FS=y
1523# CONFIG_DEBUG_VM is not set 1531# CONFIG_DEBUG_VM is not set
1524# CONFIG_DEBUG_LIST is not set 1532# CONFIG_DEBUG_LIST is not set
1525# CONFIG_FRAME_POINTER is not set 1533# CONFIG_FRAME_POINTER is not set
1526# CONFIG_FORCED_INLINING is not set 1534# CONFIG_FORCED_INLINING is not set
1527# CONFIG_HEADERS_CHECK is not set
1528# CONFIG_RCU_TORTURE_TEST is not set 1535# CONFIG_RCU_TORTURE_TEST is not set
1529# CONFIG_LKDTM is not set 1536# CONFIG_LKDTM is not set
1530# CONFIG_DEBUG_RODATA is not set 1537# CONFIG_DEBUG_RODATA is not set
@@ -1553,3 +1560,4 @@ CONFIG_CRC32=y
1553# CONFIG_LIBCRC32C is not set 1560# CONFIG_LIBCRC32C is not set
1554CONFIG_ZLIB_INFLATE=y 1561CONFIG_ZLIB_INFLATE=y
1555CONFIG_PLIST=y 1562CONFIG_PLIST=y
1563CONFIG_IOMAP_COPY=y
diff --git a/arch/x86_64/ia32/ia32_aout.c b/arch/x86_64/ia32/ia32_aout.c
index be87df506f39..fe83edb93c10 100644
--- a/arch/x86_64/ia32/ia32_aout.c
+++ b/arch/x86_64/ia32/ia32_aout.c
@@ -241,7 +241,7 @@ static u32 __user *create_aout_tables(char __user *p, struct linux_binprm *bprm)
241 get_user(c,p++); 241 get_user(c,p++);
242 } while (c); 242 } while (c);
243 } 243 }
244 put_user(NULL,argv); 244 put_user(0, argv);
245 current->mm->arg_end = current->mm->env_start = (unsigned long) p; 245 current->mm->arg_end = current->mm->env_start = (unsigned long) p;
246 while (envc-->0) { 246 while (envc-->0) {
247 char c; 247 char c;
@@ -250,7 +250,7 @@ static u32 __user *create_aout_tables(char __user *p, struct linux_binprm *bprm)
250 get_user(c,p++); 250 get_user(c,p++);
251 } while (c); 251 } while (c);
252 } 252 }
253 put_user(NULL,envp); 253 put_user(0, envp);
254 current->mm->env_end = (unsigned long) p; 254 current->mm->env_end = (unsigned long) p;
255 return sp; 255 return sp;
256} 256}
diff --git a/arch/x86_64/kernel/cpufreq/Kconfig b/arch/x86_64/kernel/cpufreq/Kconfig
index 3abcfa3e1ed7..45a6a1fd14ac 100644
--- a/arch/x86_64/kernel/cpufreq/Kconfig
+++ b/arch/x86_64/kernel/cpufreq/Kconfig
@@ -49,6 +49,7 @@ config X86_SPEEDSTEP_CENTRINO_ACPI
49 49
50config X86_ACPI_CPUFREQ 50config X86_ACPI_CPUFREQ
51 tristate "ACPI Processor P-States driver" 51 tristate "ACPI Processor P-States driver"
52 select CPU_FREQ_TABLE
52 depends on ACPI_PROCESSOR 53 depends on ACPI_PROCESSOR
53 help 54 help
54 This driver adds a CPUFreq driver which utilizes the ACPI 55 This driver adds a CPUFreq driver which utilizes the ACPI
diff --git a/arch/x86_64/kernel/early-quirks.c b/arch/x86_64/kernel/early-quirks.c
index 829698f6d049..49802f1bee94 100644
--- a/arch/x86_64/kernel/early-quirks.c
+++ b/arch/x86_64/kernel/early-quirks.c
@@ -69,6 +69,11 @@ static void nvidia_bugs(void)
69 69
70static void ati_bugs(void) 70static void ati_bugs(void)
71{ 71{
72 if (timer_over_8254 == 1) {
73 timer_over_8254 = 0;
74 printk(KERN_INFO
75 "ATI board detected. Disabling timer routing over 8254.\n");
76 }
72} 77}
73 78
74static void intel_bugs(void) 79static void intel_bugs(void)
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c
index 2a1dcd5f69c2..d7bad90a5ad8 100644
--- a/arch/x86_64/kernel/io_apic.c
+++ b/arch/x86_64/kernel/io_apic.c
@@ -55,6 +55,10 @@ int sis_apic_bug; /* not actually supported, dummy for compile */
55 55
56static int no_timer_check; 56static int no_timer_check;
57 57
58static int disable_timer_pin_1 __initdata;
59
60int timer_over_8254 __initdata = 1;
61
58/* Where if anywhere is the i8259 connect in external int mode */ 62/* Where if anywhere is the i8259 connect in external int mode */
59static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; 63static struct { int pin, apic; } ioapic_i8259 = { -1, -1 };
60 64
@@ -350,6 +354,29 @@ static int __init disable_ioapic_setup(char *str)
350} 354}
351early_param("noapic", disable_ioapic_setup); 355early_param("noapic", disable_ioapic_setup);
352 356
357/* Actually the next is obsolete, but keep it for paranoid reasons -AK */
358static int __init disable_timer_pin_setup(char *arg)
359{
360 disable_timer_pin_1 = 1;
361 return 1;
362}
363__setup("disable_timer_pin_1", disable_timer_pin_setup);
364
365static int __init setup_disable_8254_timer(char *s)
366{
367 timer_over_8254 = -1;
368 return 1;
369}
370static int __init setup_enable_8254_timer(char *s)
371{
372 timer_over_8254 = 2;
373 return 1;
374}
375
376__setup("disable_8254_timer", setup_disable_8254_timer);
377__setup("enable_8254_timer", setup_enable_8254_timer);
378
379
353/* 380/*
354 * Find the IRQ entry number of a certain pin. 381 * Find the IRQ entry number of a certain pin.
355 */ 382 */
@@ -1568,33 +1595,10 @@ static inline void unlock_ExtINT_logic(void)
1568 * a wide range of boards and BIOS bugs. Fortunately only the timer IRQ 1595 * a wide range of boards and BIOS bugs. Fortunately only the timer IRQ
1569 * is so screwy. Thanks to Brian Perkins for testing/hacking this beast 1596 * is so screwy. Thanks to Brian Perkins for testing/hacking this beast
1570 * fanatically on his truly buggy board. 1597 * fanatically on his truly buggy board.
1598 *
1599 * FIXME: really need to revamp this for modern platforms only.
1571 */ 1600 */
1572 1601static inline void check_timer(void)
1573static int try_apic_pin(int apic, int pin, char *msg)
1574{
1575 apic_printk(APIC_VERBOSE, KERN_INFO
1576 "..TIMER: trying IO-APIC=%d PIN=%d %s",
1577 apic, pin, msg);
1578
1579 /*
1580 * Ok, does IRQ0 through the IOAPIC work?
1581 */
1582 if (!no_timer_check && timer_irq_works()) {
1583 nmi_watchdog_default();
1584 if (nmi_watchdog == NMI_IO_APIC) {
1585 disable_8259A_irq(0);
1586 setup_nmi();
1587 enable_8259A_irq(0);
1588 }
1589 return 1;
1590 }
1591 clear_IO_APIC_pin(apic, pin);
1592 apic_printk(APIC_QUIET, KERN_ERR " .. failed\n");
1593 return 0;
1594}
1595
1596/* The function from hell */
1597static void check_timer(void)
1598{ 1602{
1599 int apic1, pin1, apic2, pin2; 1603 int apic1, pin1, apic2, pin2;
1600 int vector; 1604 int vector;
@@ -1615,43 +1619,61 @@ static void check_timer(void)
1615 */ 1619 */
1616 apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); 1620 apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
1617 init_8259A(1); 1621 init_8259A(1);
1622 if (timer_over_8254 > 0)
1623 enable_8259A_irq(0);
1618 1624
1619 pin1 = find_isa_irq_pin(0, mp_INT); 1625 pin1 = find_isa_irq_pin(0, mp_INT);
1620 apic1 = find_isa_irq_apic(0, mp_INT); 1626 apic1 = find_isa_irq_apic(0, mp_INT);
1621 pin2 = ioapic_i8259.pin; 1627 pin2 = ioapic_i8259.pin;
1622 apic2 = ioapic_i8259.apic; 1628 apic2 = ioapic_i8259.apic;
1623 1629
1624 /* Do this first, otherwise we get double interrupts on ATI boards */ 1630 apic_printk(APIC_VERBOSE,KERN_INFO "..TIMER: vector=0x%02X apic1=%d pin1=%d apic2=%d pin2=%d\n",
1625 if ((pin1 != -1) && try_apic_pin(apic1, pin1,"with 8259 IRQ0 disabled")) 1631 vector, apic1, pin1, apic2, pin2);
1626 return;
1627 1632
1628 /* Now try again with IRQ0 8259A enabled. 1633 if (pin1 != -1) {
1629 Assumes timer is on IO-APIC 0 ?!? */ 1634 /*
1630 enable_8259A_irq(0); 1635 * Ok, does IRQ0 through the IOAPIC work?
1631 unmask_IO_APIC_irq(0); 1636 */
1632 if (try_apic_pin(apic1, pin1, "with 8259 IRQ0 enabled")) 1637 unmask_IO_APIC_irq(0);
1633 return; 1638 if (!no_timer_check && timer_irq_works()) {
1634 disable_8259A_irq(0); 1639 nmi_watchdog_default();
1635 1640 if (nmi_watchdog == NMI_IO_APIC) {
1636 /* Always try pin0 and pin2 on APIC 0 to handle buggy timer overrides 1641 disable_8259A_irq(0);
1637 on Nvidia boards */ 1642 setup_nmi();
1638 if (!(apic1 == 0 && pin1 == 0) && 1643 enable_8259A_irq(0);
1639 try_apic_pin(0, 0, "fallback with 8259 IRQ0 disabled")) 1644 }
1640 return; 1645 if (disable_timer_pin_1 > 0)
1641 if (!(apic1 == 0 && pin1 == 2) && 1646 clear_IO_APIC_pin(0, pin1);
1642 try_apic_pin(0, 2, "fallback with 8259 IRQ0 disabled")) 1647 return;
1643 return; 1648 }
1649 clear_IO_APIC_pin(apic1, pin1);
1650 apic_printk(APIC_QUIET,KERN_ERR "..MP-BIOS bug: 8254 timer not "
1651 "connected to IO-APIC\n");
1652 }
1644 1653
1645 /* Then try pure 8259A routing on the 8259 as reported by BIOS*/ 1654 apic_printk(APIC_VERBOSE,KERN_INFO "...trying to set up timer (IRQ0) "
1646 enable_8259A_irq(0); 1655 "through the 8259A ... ");
1647 if (pin2 != -1) { 1656 if (pin2 != -1) {
1657 apic_printk(APIC_VERBOSE,"\n..... (found apic %d pin %d) ...",
1658 apic2, pin2);
1659 /*
1660 * legacy devices should be connected to IO APIC #0
1661 */
1648 setup_ExtINT_IRQ0_pin(apic2, pin2, vector); 1662 setup_ExtINT_IRQ0_pin(apic2, pin2, vector);
1649 if (try_apic_pin(apic2,pin2,"8259A broadcast ExtINT from BIOS")) 1663 if (timer_irq_works()) {
1664 apic_printk(APIC_VERBOSE," works.\n");
1665 nmi_watchdog_default();
1666 if (nmi_watchdog == NMI_IO_APIC) {
1667 setup_nmi();
1668 }
1650 return; 1669 return;
1670 }
1671 /*
1672 * Cleanup, just in case ...
1673 */
1674 clear_IO_APIC_pin(apic2, pin2);
1651 } 1675 }
1652 1676 apic_printk(APIC_VERBOSE," failed.\n");
1653 /* Tried all possibilities to go through the IO-APIC. Now come the
1654 really cheesy fallbacks. */
1655 1677
1656 if (nmi_watchdog == NMI_IO_APIC) { 1678 if (nmi_watchdog == NMI_IO_APIC) {
1657 printk(KERN_WARNING "timer doesn't work through the IO-APIC - disabling NMI Watchdog!\n"); 1679 printk(KERN_WARNING "timer doesn't work through the IO-APIC - disabling NMI Watchdog!\n");
diff --git a/arch/x86_64/kernel/pci-calgary.c b/arch/x86_64/kernel/pci-calgary.c
index 87d90cb68a74..3d65b1d4c2b3 100644
--- a/arch/x86_64/kernel/pci-calgary.c
+++ b/arch/x86_64/kernel/pci-calgary.c
@@ -1068,6 +1068,8 @@ void __init detect_calgary(void)
1068 if (!early_pci_allowed()) 1068 if (!early_pci_allowed())
1069 return; 1069 return;
1070 1070
1071 printk(KERN_DEBUG "Calgary: detecting Calgary via BIOS EBDA area\n");
1072
1071 ptr = (unsigned long)phys_to_virt(get_bios_ebda()); 1073 ptr = (unsigned long)phys_to_virt(get_bios_ebda());
1072 1074
1073 rio_table_hdr = NULL; 1075 rio_table_hdr = NULL;
@@ -1088,14 +1090,14 @@ void __init detect_calgary(void)
1088 offset = *((unsigned short *)(ptr + offset)); 1090 offset = *((unsigned short *)(ptr + offset));
1089 } 1091 }
1090 if (!rio_table_hdr) { 1092 if (!rio_table_hdr) {
1091 printk(KERN_ERR "Calgary: Unable to locate " 1093 printk(KERN_DEBUG "Calgary: Unable to locate Rio Grande table "
1092 "Rio Grande Table in EBDA - bailing!\n"); 1094 "in EBDA - bailing!\n");
1093 return; 1095 return;
1094 } 1096 }
1095 1097
1096 ret = build_detail_arrays(); 1098 ret = build_detail_arrays();
1097 if (ret) { 1099 if (ret) {
1098 printk(KERN_ERR "Calgary: build_detail_arrays ret %d\n", ret); 1100 printk(KERN_DEBUG "Calgary: build_detail_arrays ret %d\n", ret);
1099 return; 1101 return;
1100 } 1102 }
1101 1103
@@ -1128,6 +1130,9 @@ void __init detect_calgary(void)
1128 } 1130 }
1129 } 1131 }
1130 1132
1133 printk(KERN_DEBUG "Calgary: finished detection, Calgary %s\n",
1134 calgary_found ? "found" : "not found");
1135
1131 if (calgary_found) { 1136 if (calgary_found) {
1132 iommu_detected = 1; 1137 iommu_detected = 1;
1133 calgary_detected = 1; 1138 calgary_detected = 1;
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c
index 9f05bc9b2dad..5cc76d0d331f 100644
--- a/arch/x86_64/kernel/time.c
+++ b/arch/x86_64/kernel/time.c
@@ -656,6 +656,25 @@ core_initcall(cpufreq_tsc);
656 */ 656 */
657 657
658#define TICK_COUNT 100000000 658#define TICK_COUNT 100000000
659#define TICK_MIN 5000
660
661/*
662 * Some platforms take periodic SMI interrupts with 5ms duration. Make sure none
663 * occurs between the reads of the hpet & TSC.
664 */
665static void __init read_hpet_tsc(int *hpet, int *tsc)
666{
667 int tsc1, tsc2, hpet1;
668
669 do {
670 tsc1 = get_cycles_sync();
671 hpet1 = hpet_readl(HPET_COUNTER);
672 tsc2 = get_cycles_sync();
673 } while (tsc2 - tsc1 > TICK_MIN);
674 *hpet = hpet1;
675 *tsc = tsc2;
676}
677
659 678
660static unsigned int __init hpet_calibrate_tsc(void) 679static unsigned int __init hpet_calibrate_tsc(void)
661{ 680{
@@ -666,13 +685,11 @@ static unsigned int __init hpet_calibrate_tsc(void)
666 local_irq_save(flags); 685 local_irq_save(flags);
667 local_irq_disable(); 686 local_irq_disable();
668 687
669 hpet_start = hpet_readl(HPET_COUNTER); 688 read_hpet_tsc(&hpet_start, &tsc_start);
670 rdtscl(tsc_start);
671 689
672 do { 690 do {
673 local_irq_disable(); 691 local_irq_disable();
674 hpet_now = hpet_readl(HPET_COUNTER); 692 read_hpet_tsc(&hpet_now, &tsc_now);
675 tsc_now = get_cycles_sync();
676 local_irq_restore(flags); 693 local_irq_restore(flags);
677 } while ((tsc_now - tsc_start) < TICK_COUNT && 694 } while ((tsc_now - tsc_start) < TICK_COUNT &&
678 (hpet_now - hpet_start) < TICK_COUNT); 695 (hpet_now - hpet_start) < TICK_COUNT);
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index 1639998e4d27..f4f000abc4e9 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -225,17 +225,6 @@ config ACPI_IBM_DOCK
225 225
226 If you are not sure, say N here. 226 If you are not sure, say N here.
227 227
228config ACPI_IBM_BAY
229 bool "Legacy Removable Bay Support"
230 depends on ACPI_IBM
231 depends on ACPI_BAY=n
232 default n
233 ---help---
234 Allows the ibm_acpi driver to handle removable bays.
235 This support is obsoleted by CONFIG_ACPI_BAY.
236
237 If you are not sure, say N here.
238
239config ACPI_TOSHIBA 228config ACPI_TOSHIBA
240 tristate "Toshiba Laptop Extras" 229 tristate "Toshiba Laptop Extras"
241 depends on X86 230 depends on X86
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 279c4bac92e5..766332e45592 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -561,6 +561,9 @@ static int __init acpi_bus_init_irq(void)
561 case ACPI_IRQ_MODEL_IOSAPIC: 561 case ACPI_IRQ_MODEL_IOSAPIC:
562 message = "IOSAPIC"; 562 message = "IOSAPIC";
563 break; 563 break;
564 case ACPI_IRQ_MODEL_PLATFORM:
565 message = "platform specific model";
566 break;
564 default: 567 default:
565 printk(KERN_WARNING PREFIX "Unknown interrupt routing model\n"); 568 printk(KERN_WARNING PREFIX "Unknown interrupt routing model\n");
566 return -ENODEV; 569 return -ENODEV;
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 9c52d87d6f04..cbdf031f3c09 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -424,7 +424,7 @@ static void acpi_ec_gpe_query(void *ec_cxt)
424 424
425 snprintf(object_name, 8, "_Q%2.2X", value); 425 snprintf(object_name, 8, "_Q%2.2X", value);
426 426
427 printk(KERN_INFO PREFIX "evaluating %s\n", object_name); 427 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Evaluating %s", object_name));
428 428
429 acpi_evaluate_object(ec->handle, object_name, NULL, NULL); 429 acpi_evaluate_object(ec->handle, object_name, NULL, NULL);
430} 430}
@@ -1016,8 +1016,8 @@ static int __init acpi_ec_set_intr_mode(char *str)
1016 acpi_ec_mode = EC_POLL; 1016 acpi_ec_mode = EC_POLL;
1017 } 1017 }
1018 acpi_ec_driver.ops.add = acpi_ec_add; 1018 acpi_ec_driver.ops.add = acpi_ec_add;
1019 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "EC %s mode.\n", 1019 printk(KERN_NOTICE PREFIX "%s mode.\n",
1020 intr ? "interrupt" : "polling")); 1020 intr ? "interrupt" : "polling");
1021 1021
1022 return 1; 1022 return 1;
1023} 1023}
diff --git a/drivers/acpi/ibm_acpi.c b/drivers/acpi/ibm_acpi.c
index b72d13d11a27..c6144ca66638 100644
--- a/drivers/acpi/ibm_acpi.c
+++ b/drivers/acpi/ibm_acpi.c
@@ -157,7 +157,6 @@ IBM_HANDLE(dock, root, "\\_SB.GDCK", /* X30, X31, X40 */
157 "\\_SB.PCI.ISA.SLCE", /* 570 */ 157 "\\_SB.PCI.ISA.SLCE", /* 570 */
158 ); /* A21e,G4x,R30,R31,R32,R40,R40e,R50e */ 158 ); /* A21e,G4x,R30,R31,R32,R40,R40e,R50e */
159#endif 159#endif
160#ifdef CONFIG_ACPI_IBM_BAY
161IBM_HANDLE(bay, root, "\\_SB.PCI.IDE.SECN.MAST", /* 570 */ 160IBM_HANDLE(bay, root, "\\_SB.PCI.IDE.SECN.MAST", /* 570 */
162 "\\_SB.PCI0.IDE0.IDES.IDSM", /* 600e/x, 770e, 770x */ 161 "\\_SB.PCI0.IDE0.IDES.IDSM", /* 600e/x, 770e, 770x */
163 "\\_SB.PCI0.SATA.SCND.MSTR", /* T60, X60, Z60 */ 162 "\\_SB.PCI0.SATA.SCND.MSTR", /* T60, X60, Z60 */
@@ -175,7 +174,6 @@ IBM_HANDLE(bay2, root, "\\_SB.PCI0.IDE0.PRIM.SLAV", /* A3x, R32 */
175IBM_HANDLE(bay2_ej, bay2, "_EJ3", /* 600e/x, 770e, A3x */ 174IBM_HANDLE(bay2_ej, bay2, "_EJ3", /* 600e/x, 770e, A3x */
176 "_EJ0", /* 770x */ 175 "_EJ0", /* 770x */
177 ); /* all others */ 176 ); /* all others */
178#endif
179 177
180/* don't list other alternatives as we install a notify handler on the 570 */ 178/* don't list other alternatives as we install a notify handler on the 570 */
181IBM_HANDLE(pci, root, "\\_SB.PCI"); /* 570 */ 179IBM_HANDLE(pci, root, "\\_SB.PCI"); /* 570 */
@@ -1042,7 +1040,6 @@ static int light_write(char *buf)
1042 return 0; 1040 return 0;
1043} 1041}
1044 1042
1045#if defined(CONFIG_ACPI_IBM_DOCK) || defined(CONFIG_ACPI_IBM_BAY)
1046static int _sta(acpi_handle handle) 1043static int _sta(acpi_handle handle)
1047{ 1044{
1048 int status; 1045 int status;
@@ -1052,7 +1049,7 @@ static int _sta(acpi_handle handle)
1052 1049
1053 return status; 1050 return status;
1054} 1051}
1055#endif 1052
1056#ifdef CONFIG_ACPI_IBM_DOCK 1053#ifdef CONFIG_ACPI_IBM_DOCK
1057#define dock_docked() (_sta(dock_handle) & 1) 1054#define dock_docked() (_sta(dock_handle) & 1)
1058 1055
@@ -1118,7 +1115,6 @@ static void dock_notify(struct ibm_struct *ibm, u32 event)
1118} 1115}
1119#endif 1116#endif
1120 1117
1121#ifdef CONFIG_ACPI_IBM_BAY
1122static int bay_status_supported; 1118static int bay_status_supported;
1123static int bay_status2_supported; 1119static int bay_status2_supported;
1124static int bay_eject_supported; 1120static int bay_eject_supported;
@@ -1194,7 +1190,6 @@ static void bay_notify(struct ibm_struct *ibm, u32 event)
1194{ 1190{
1195 acpi_bus_generate_event(ibm->device, event, 0); 1191 acpi_bus_generate_event(ibm->device, event, 0);
1196} 1192}
1197#endif
1198 1193
1199static int cmos_read(char *p) 1194static int cmos_read(char *p)
1200{ 1195{
@@ -2354,7 +2349,6 @@ static struct ibm_struct ibms[] = {
2354 .type = ACPI_SYSTEM_NOTIFY, 2349 .type = ACPI_SYSTEM_NOTIFY,
2355 }, 2350 },
2356#endif 2351#endif
2357#ifdef CONFIG_ACPI_IBM_BAY
2358 { 2352 {
2359 .name = "bay", 2353 .name = "bay",
2360 .init = bay_init, 2354 .init = bay_init,
@@ -2364,7 +2358,6 @@ static struct ibm_struct ibms[] = {
2364 .handle = &bay_handle, 2358 .handle = &bay_handle,
2365 .type = ACPI_SYSTEM_NOTIFY, 2359 .type = ACPI_SYSTEM_NOTIFY,
2366 }, 2360 },
2367#endif
2368 { 2361 {
2369 .name = "cmos", 2362 .name = "cmos",
2370 .read = cmos_read, 2363 .read = cmos_read,
@@ -2650,9 +2643,7 @@ IBM_PARAM(light);
2650#ifdef CONFIG_ACPI_IBM_DOCK 2643#ifdef CONFIG_ACPI_IBM_DOCK
2651IBM_PARAM(dock); 2644IBM_PARAM(dock);
2652#endif 2645#endif
2653#ifdef CONFIG_ACPI_IBM_BAY
2654IBM_PARAM(bay); 2646IBM_PARAM(bay);
2655#endif
2656IBM_PARAM(cmos); 2647IBM_PARAM(cmos);
2657IBM_PARAM(led); 2648IBM_PARAM(led);
2658IBM_PARAM(beep); 2649IBM_PARAM(beep);
@@ -2735,14 +2726,12 @@ static int __init acpi_ibm_init(void)
2735 IBM_HANDLE_INIT(dock); 2726 IBM_HANDLE_INIT(dock);
2736#endif 2727#endif
2737 IBM_HANDLE_INIT(pci); 2728 IBM_HANDLE_INIT(pci);
2738#ifdef CONFIG_ACPI_IBM_BAY
2739 IBM_HANDLE_INIT(bay); 2729 IBM_HANDLE_INIT(bay);
2740 if (bay_handle) 2730 if (bay_handle)
2741 IBM_HANDLE_INIT(bay_ej); 2731 IBM_HANDLE_INIT(bay_ej);
2742 IBM_HANDLE_INIT(bay2); 2732 IBM_HANDLE_INIT(bay2);
2743 if (bay2_handle) 2733 if (bay2_handle)
2744 IBM_HANDLE_INIT(bay2_ej); 2734 IBM_HANDLE_INIT(bay2_ej);
2745#endif
2746 IBM_HANDLE_INIT(beep); 2735 IBM_HANDLE_INIT(beep);
2747 IBM_HANDLE_INIT(ecrd); 2736 IBM_HANDLE_INIT(ecrd);
2748 IBM_HANDLE_INIT(ecwr); 2737 IBM_HANDLE_INIT(ecwr);
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index 25718fed39f1..5f9496d59ed6 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -476,9 +476,6 @@ static int acpi_processor_get_info(struct acpi_processor *pr)
476 if (cpu_index == -1) { 476 if (cpu_index == -1) {
477 if (ACPI_FAILURE 477 if (ACPI_FAILURE
478 (acpi_processor_hotadd_init(pr->handle, &pr->id))) { 478 (acpi_processor_hotadd_init(pr->handle, &pr->id))) {
479 printk(KERN_ERR PREFIX
480 "Getting cpuindex for acpiid 0x%x\n",
481 pr->acpi_id);
482 return -ENODEV; 479 return -ENODEV;
483 } 480 }
484 } 481 }
diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c
index 0e60382714bb..5207f9e4b443 100644
--- a/drivers/acpi/processor_perflib.c
+++ b/drivers/acpi/processor_perflib.c
@@ -736,10 +736,6 @@ int acpi_processor_preregister_performance(
736 } 736 }
737 737
738err_ret: 738err_ret:
739 if (retval) {
740 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error while parsing _PSD domain information. Assuming no coordination\n"));
741 }
742
743 for_each_possible_cpu(i) { 739 for_each_possible_cpu(i) {
744 pr = processors[i]; 740 pr = processors[i];
745 if (!pr || !pr->performance) 741 if (!pr || !pr->performance)
diff --git a/drivers/acpi/toshiba_acpi.c b/drivers/acpi/toshiba_acpi.c
index 88aeccbafaaf..d9b651ffcdc0 100644
--- a/drivers/acpi/toshiba_acpi.c
+++ b/drivers/acpi/toshiba_acpi.c
@@ -321,13 +321,16 @@ static int set_lcd_status(struct backlight_device *bd)
321static unsigned long write_lcd(const char *buffer, unsigned long count) 321static unsigned long write_lcd(const char *buffer, unsigned long count)
322{ 322{
323 int value; 323 int value;
324 int ret = count; 324 int ret;
325 325
326 if (sscanf(buffer, " brightness : %i", &value) == 1 && 326 if (sscanf(buffer, " brightness : %i", &value) == 1 &&
327 value >= 0 && value < HCI_LCD_BRIGHTNESS_LEVELS) 327 value >= 0 && value < HCI_LCD_BRIGHTNESS_LEVELS) {
328 ret = set_lcd(value); 328 ret = set_lcd(value);
329 else 329 if (ret == 0)
330 ret = count;
331 } else {
330 ret = -EINVAL; 332 ret = -EINVAL;
333 }
331 return ret; 334 return ret;
332} 335}
333 336
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index b34e0a958d0f..da21552d2b1c 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -381,7 +381,7 @@ config PATA_OPTI
381 If unsure, say N. 381 If unsure, say N.
382 382
383config PATA_OPTIDMA 383config PATA_OPTIDMA
384 tristate "OPTI FireStar PATA support (Veyr Experimental)" 384 tristate "OPTI FireStar PATA support (Very Experimental)"
385 depends on PCI && EXPERIMENTAL 385 depends on PCI && EXPERIMENTAL
386 help 386 help
387 This option enables DMA/PIO support for the later OPTi 387 This option enables DMA/PIO support for the later OPTi
diff --git a/drivers/ata/pata_hpt37x.c b/drivers/ata/pata_hpt37x.c
index 47082df7199e..dfb306057cf4 100644
--- a/drivers/ata/pata_hpt37x.c
+++ b/drivers/ata/pata_hpt37x.c
@@ -25,7 +25,7 @@
25#include <linux/libata.h> 25#include <linux/libata.h>
26 26
27#define DRV_NAME "pata_hpt37x" 27#define DRV_NAME "pata_hpt37x"
28#define DRV_VERSION "0.5.1" 28#define DRV_VERSION "0.5.2"
29 29
30struct hpt_clock { 30struct hpt_clock {
31 u8 xfer_speed; 31 u8 xfer_speed;
@@ -416,7 +416,7 @@ static const char *bad_ata100_5[] = {
416 416
417static unsigned long hpt370_filter(const struct ata_port *ap, struct ata_device *adev, unsigned long mask) 417static unsigned long hpt370_filter(const struct ata_port *ap, struct ata_device *adev, unsigned long mask)
418{ 418{
419 if (adev->class != ATA_DEV_ATA) { 419 if (adev->class == ATA_DEV_ATA) {
420 if (hpt_dma_blacklisted(adev, "UDMA", bad_ata33)) 420 if (hpt_dma_blacklisted(adev, "UDMA", bad_ata33))
421 mask &= ~ATA_MASK_UDMA; 421 mask &= ~ATA_MASK_UDMA;
422 if (hpt_dma_blacklisted(adev, "UDMA100", bad_ata100_5)) 422 if (hpt_dma_blacklisted(adev, "UDMA100", bad_ata100_5))
@@ -749,7 +749,7 @@ static void hpt37x_bmdma_stop(struct ata_queued_cmd *qc)
749{ 749{
750 struct ata_port *ap = qc->ap; 750 struct ata_port *ap = qc->ap;
751 struct pci_dev *pdev = to_pci_dev(ap->host->dev); 751 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
752 int mscreg = 0x50 + 2 * ap->port_no; 752 int mscreg = 0x50 + 4 * ap->port_no;
753 u8 bwsr_stat, msc_stat; 753 u8 bwsr_stat, msc_stat;
754 754
755 pci_read_config_byte(pdev, 0x6A, &bwsr_stat); 755 pci_read_config_byte(pdev, 0x6A, &bwsr_stat);
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index 7c95c762950f..62462190e07e 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -765,47 +765,34 @@ static inline struct bio *pkt_get_list_first(struct bio **list_head, struct bio
765 */ 765 */
766static int pkt_generic_packet(struct pktcdvd_device *pd, struct packet_command *cgc) 766static int pkt_generic_packet(struct pktcdvd_device *pd, struct packet_command *cgc)
767{ 767{
768 char sense[SCSI_SENSE_BUFFERSIZE]; 768 request_queue_t *q = bdev_get_queue(pd->bdev);
769 request_queue_t *q;
770 struct request *rq; 769 struct request *rq;
771 DECLARE_COMPLETION_ONSTACK(wait); 770 int ret = 0;
772 int err = 0;
773 771
774 q = bdev_get_queue(pd->bdev); 772 rq = blk_get_request(q, (cgc->data_direction == CGC_DATA_WRITE) ?
773 WRITE : READ, __GFP_WAIT);
774
775 if (cgc->buflen) {
776 if (blk_rq_map_kern(q, rq, cgc->buffer, cgc->buflen, __GFP_WAIT))
777 goto out;
778 }
779
780 rq->cmd_len = COMMAND_SIZE(rq->cmd[0]);
781 memcpy(rq->cmd, cgc->cmd, CDROM_PACKET_SIZE);
782 if (sizeof(rq->cmd) > CDROM_PACKET_SIZE)
783 memset(rq->cmd + CDROM_PACKET_SIZE, 0, sizeof(rq->cmd) - CDROM_PACKET_SIZE);
775 784
776 rq = blk_get_request(q, (cgc->data_direction == CGC_DATA_WRITE) ? WRITE : READ,
777 __GFP_WAIT);
778 rq->errors = 0;
779 rq->rq_disk = pd->bdev->bd_disk;
780 rq->bio = NULL;
781 rq->buffer = NULL;
782 rq->timeout = 60*HZ; 785 rq->timeout = 60*HZ;
783 rq->data = cgc->buffer;
784 rq->data_len = cgc->buflen;
785 rq->sense = sense;
786 memset(sense, 0, sizeof(sense));
787 rq->sense_len = 0;
788 rq->cmd_type = REQ_TYPE_BLOCK_PC; 786 rq->cmd_type = REQ_TYPE_BLOCK_PC;
789 rq->cmd_flags |= REQ_HARDBARRIER; 787 rq->cmd_flags |= REQ_HARDBARRIER;
790 if (cgc->quiet) 788 if (cgc->quiet)
791 rq->cmd_flags |= REQ_QUIET; 789 rq->cmd_flags |= REQ_QUIET;
792 memcpy(rq->cmd, cgc->cmd, CDROM_PACKET_SIZE);
793 if (sizeof(rq->cmd) > CDROM_PACKET_SIZE)
794 memset(rq->cmd + CDROM_PACKET_SIZE, 0, sizeof(rq->cmd) - CDROM_PACKET_SIZE);
795 rq->cmd_len = COMMAND_SIZE(rq->cmd[0]);
796
797 rq->ref_count++;
798 rq->end_io_data = &wait;
799 rq->end_io = blk_end_sync_rq;
800 elv_add_request(q, rq, ELEVATOR_INSERT_BACK, 1);
801 generic_unplug_device(q);
802 wait_for_completion(&wait);
803
804 if (rq->errors)
805 err = -EIO;
806 790
791 blk_execute_rq(rq->q, pd->bdev->bd_disk, rq, 0);
792 ret = rq->errors;
793out:
807 blk_put_request(rq); 794 blk_put_request(rq);
808 return err; 795 return ret;
809} 796}
810 797
811/* 798/*
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c
index aeefec97fdee..6bdf593081d8 100644
--- a/drivers/bluetooth/hci_usb.c
+++ b/drivers/bluetooth/hci_usb.c
@@ -117,10 +117,17 @@ static struct usb_device_id blacklist_ids[] = {
117 117
118 /* IBM/Lenovo ThinkPad with Broadcom chip */ 118 /* IBM/Lenovo ThinkPad with Broadcom chip */
119 { USB_DEVICE(0x0a5c, 0x201e), .driver_info = HCI_WRONG_SCO_MTU }, 119 { USB_DEVICE(0x0a5c, 0x201e), .driver_info = HCI_WRONG_SCO_MTU },
120 { USB_DEVICE(0x0a5c, 0x2110), .driver_info = HCI_WRONG_SCO_MTU },
120 121
121 /* ANYCOM Bluetooth USB-200 and USB-250 */ 122 /* ANYCOM Bluetooth USB-200 and USB-250 */
122 { USB_DEVICE(0x0a5c, 0x2111), .driver_info = HCI_RESET }, 123 { USB_DEVICE(0x0a5c, 0x2111), .driver_info = HCI_RESET },
123 124
125 /* HP laptop with Broadcom chip */
126 { USB_DEVICE(0x03f0, 0x171d), .driver_info = HCI_WRONG_SCO_MTU },
127
128 /* Dell laptop with Broadcom chip */
129 { USB_DEVICE(0x413c, 0x8126), .driver_info = HCI_WRONG_SCO_MTU },
130
124 /* Microsoft Wireless Transceiver for Bluetooth 2.0 */ 131 /* Microsoft Wireless Transceiver for Bluetooth 2.0 */
125 { USB_DEVICE(0x045e, 0x009c), .driver_info = HCI_RESET }, 132 { USB_DEVICE(0x045e, 0x009c), .driver_info = HCI_RESET },
126 133
diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
index 66d028d30439..3105dddf59f1 100644
--- a/drivers/cdrom/cdrom.c
+++ b/drivers/cdrom/cdrom.c
@@ -337,6 +337,12 @@ static const char *mrw_address_space[] = { "DMA", "GAA" };
337/* used in the audio ioctls */ 337/* used in the audio ioctls */
338#define CHECKAUDIO if ((ret=check_for_audio_disc(cdi, cdo))) return ret 338#define CHECKAUDIO if ((ret=check_for_audio_disc(cdi, cdo))) return ret
339 339
340/*
341 * Another popular OS uses 7 seconds as the hard timeout for default
342 * commands, so it is a good choice for us as well.
343 */
344#define CDROM_DEF_TIMEOUT (7 * HZ)
345
340/* Not-exported routines. */ 346/* Not-exported routines. */
341static int open_for_data(struct cdrom_device_info * cdi); 347static int open_for_data(struct cdrom_device_info * cdi);
342static int check_for_audio_disc(struct cdrom_device_info * cdi, 348static int check_for_audio_disc(struct cdrom_device_info * cdi,
@@ -1528,7 +1534,7 @@ void init_cdrom_command(struct packet_command *cgc, void *buf, int len,
1528 cgc->buffer = (char *) buf; 1534 cgc->buffer = (char *) buf;
1529 cgc->buflen = len; 1535 cgc->buflen = len;
1530 cgc->data_direction = type; 1536 cgc->data_direction = type;
1531 cgc->timeout = 5*HZ; 1537 cgc->timeout = CDROM_DEF_TIMEOUT;
1532} 1538}
1533 1539
1534/* DVD handling */ 1540/* DVD handling */
diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h
index 8b3317fd46c9..1d59e2a5b9aa 100644
--- a/drivers/char/agp/agp.h
+++ b/drivers/char/agp/agp.h
@@ -225,6 +225,10 @@ struct agp_bridge_data {
225#define I810_GMS_DISABLE 0x00000000 225#define I810_GMS_DISABLE 0x00000000
226#define I810_PGETBL_CTL 0x2020 226#define I810_PGETBL_CTL 0x2020
227#define I810_PGETBL_ENABLED 0x00000001 227#define I810_PGETBL_ENABLED 0x00000001
228#define I965_PGETBL_SIZE_MASK 0x0000000e
229#define I965_PGETBL_SIZE_512KB (0 << 1)
230#define I965_PGETBL_SIZE_256KB (1 << 1)
231#define I965_PGETBL_SIZE_128KB (2 << 1)
228#define I810_DRAM_CTL 0x3000 232#define I810_DRAM_CTL 0x3000
229#define I810_DRAM_ROW_0 0x00000001 233#define I810_DRAM_ROW_0 0x00000001
230#define I810_DRAM_ROW_0_SDRAM 0x00000001 234#define I810_DRAM_ROW_0_SDRAM 0x00000001
diff --git a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c
index 2f2c4efff8a3..979300405c0e 100644
--- a/drivers/char/agp/amd64-agp.c
+++ b/drivers/char/agp/amd64-agp.c
@@ -650,6 +650,15 @@ static struct pci_device_id agp_amd64_pci_table[] = {
650 .subvendor = PCI_ANY_ID, 650 .subvendor = PCI_ANY_ID,
651 .subdevice = PCI_ANY_ID, 651 .subdevice = PCI_ANY_ID,
652 }, 652 },
653 /* VIA K8M890 / K8N890 */
654 {
655 .class = (PCI_CLASS_BRIDGE_HOST << 8),
656 .class_mask = ~0,
657 .vendor = PCI_VENDOR_ID_VIA,
658 .device = PCI_DEVICE_ID_VIA_K8M890CE,
659 .subvendor = PCI_ANY_ID,
660 .subdevice = PCI_ANY_ID,
661 },
653 /* VIA K8T890 */ 662 /* VIA K8T890 */
654 { 663 {
655 .class = (PCI_CLASS_BRIDGE_HOST << 8), 664 .class = (PCI_CLASS_BRIDGE_HOST << 8),
diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c
index 883a36a27833..3491d6f84bc6 100644
--- a/drivers/char/agp/generic.c
+++ b/drivers/char/agp/generic.c
@@ -965,6 +965,9 @@ int agp_generic_insert_memory(struct agp_memory * mem, off_t pg_start, int type)
965 if (!bridge) 965 if (!bridge)
966 return -EINVAL; 966 return -EINVAL;
967 967
968 if (mem->page_count == 0)
969 return 0;
970
968 temp = bridge->current_size; 971 temp = bridge->current_size;
969 972
970 switch (bridge->driver->size_type) { 973 switch (bridge->driver->size_type) {
@@ -1016,8 +1019,8 @@ int agp_generic_insert_memory(struct agp_memory * mem, off_t pg_start, int type)
1016 1019
1017 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { 1020 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
1018 writel(bridge->driver->mask_memory(bridge, mem->memory[i], mem->type), bridge->gatt_table+j); 1021 writel(bridge->driver->mask_memory(bridge, mem->memory[i], mem->type), bridge->gatt_table+j);
1019 readl(bridge->gatt_table+j); /* PCI Posting. */
1020 } 1022 }
1023 readl(bridge->gatt_table+j-1); /* PCI Posting. */
1021 1024
1022 bridge->driver->tlb_flush(mem); 1025 bridge->driver->tlb_flush(mem);
1023 return 0; 1026 return 0;
@@ -1034,6 +1037,9 @@ int agp_generic_remove_memory(struct agp_memory *mem, off_t pg_start, int type)
1034 if (!bridge) 1037 if (!bridge)
1035 return -EINVAL; 1038 return -EINVAL;
1036 1039
1040 if (mem->page_count == 0)
1041 return 0;
1042
1037 if (type != 0 || mem->type != 0) { 1043 if (type != 0 || mem->type != 0) {
1038 /* The generic routines know nothing of memory types */ 1044 /* The generic routines know nothing of memory types */
1039 return -EINVAL; 1045 return -EINVAL;
@@ -1042,10 +1048,9 @@ int agp_generic_remove_memory(struct agp_memory *mem, off_t pg_start, int type)
1042 /* AK: bogus, should encode addresses > 4GB */ 1048 /* AK: bogus, should encode addresses > 4GB */
1043 for (i = pg_start; i < (mem->page_count + pg_start); i++) { 1049 for (i = pg_start; i < (mem->page_count + pg_start); i++) {
1044 writel(bridge->scratch_page, bridge->gatt_table+i); 1050 writel(bridge->scratch_page, bridge->gatt_table+i);
1045 readl(bridge->gatt_table+i); /* PCI Posting. */
1046 } 1051 }
1052 readl(bridge->gatt_table+i-1); /* PCI Posting. */
1047 1053
1048 global_cache_flush();
1049 bridge->driver->tlb_flush(mem); 1054 bridge->driver->tlb_flush(mem);
1050 return 0; 1055 return 0;
1051} 1056}
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 555b3a8ab49c..ab0a9c0ad7c0 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -207,6 +207,9 @@ static int intel_i810_insert_entries(struct agp_memory *mem, off_t pg_start,
207 int i, j, num_entries; 207 int i, j, num_entries;
208 void *temp; 208 void *temp;
209 209
210 if (mem->page_count == 0)
211 return 0;
212
210 temp = agp_bridge->current_size; 213 temp = agp_bridge->current_size;
211 num_entries = A_SIZE_FIX(temp)->num_entries; 214 num_entries = A_SIZE_FIX(temp)->num_entries;
212 215
@@ -221,12 +224,16 @@ static int intel_i810_insert_entries(struct agp_memory *mem, off_t pg_start,
221 if (type != 0 || mem->type != 0) { 224 if (type != 0 || mem->type != 0) {
222 if ((type == AGP_DCACHE_MEMORY) && (mem->type == AGP_DCACHE_MEMORY)) { 225 if ((type == AGP_DCACHE_MEMORY) && (mem->type == AGP_DCACHE_MEMORY)) {
223 /* special insert */ 226 /* special insert */
224 global_cache_flush(); 227 if (!mem->is_flushed) {
228 global_cache_flush();
229 mem->is_flushed = TRUE;
230 }
231
225 for (i = pg_start; i < (pg_start + mem->page_count); i++) { 232 for (i = pg_start; i < (pg_start + mem->page_count); i++) {
226 writel((i*4096)|I810_PTE_LOCAL|I810_PTE_VALID, intel_i810_private.registers+I810_PTE_BASE+(i*4)); 233 writel((i*4096)|I810_PTE_LOCAL|I810_PTE_VALID, intel_i810_private.registers+I810_PTE_BASE+(i*4));
227 readl(intel_i810_private.registers+I810_PTE_BASE+(i*4)); /* PCI Posting. */
228 } 234 }
229 global_cache_flush(); 235 readl(intel_i810_private.registers+I810_PTE_BASE+((i-1)*4)); /* PCI Posting. */
236
230 agp_bridge->driver->tlb_flush(mem); 237 agp_bridge->driver->tlb_flush(mem);
231 return 0; 238 return 0;
232 } 239 }
@@ -236,14 +243,17 @@ static int intel_i810_insert_entries(struct agp_memory *mem, off_t pg_start,
236 } 243 }
237 244
238insert: 245insert:
239 global_cache_flush(); 246 if (!mem->is_flushed) {
247 global_cache_flush();
248 mem->is_flushed = TRUE;
249 }
250
240 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { 251 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
241 writel(agp_bridge->driver->mask_memory(agp_bridge, 252 writel(agp_bridge->driver->mask_memory(agp_bridge,
242 mem->memory[i], mem->type), 253 mem->memory[i], mem->type),
243 intel_i810_private.registers+I810_PTE_BASE+(j*4)); 254 intel_i810_private.registers+I810_PTE_BASE+(j*4));
244 readl(intel_i810_private.registers+I810_PTE_BASE+(j*4)); /* PCI Posting. */
245 } 255 }
246 global_cache_flush(); 256 readl(intel_i810_private.registers+I810_PTE_BASE+((j-1)*4)); /* PCI Posting. */
247 257
248 agp_bridge->driver->tlb_flush(mem); 258 agp_bridge->driver->tlb_flush(mem);
249 return 0; 259 return 0;
@@ -254,12 +264,14 @@ static int intel_i810_remove_entries(struct agp_memory *mem, off_t pg_start,
254{ 264{
255 int i; 265 int i;
256 266
267 if (mem->page_count == 0)
268 return 0;
269
257 for (i = pg_start; i < (mem->page_count + pg_start); i++) { 270 for (i = pg_start; i < (mem->page_count + pg_start); i++) {
258 writel(agp_bridge->scratch_page, intel_i810_private.registers+I810_PTE_BASE+(i*4)); 271 writel(agp_bridge->scratch_page, intel_i810_private.registers+I810_PTE_BASE+(i*4));
259 readl(intel_i810_private.registers+I810_PTE_BASE+(i*4)); /* PCI Posting. */
260 } 272 }
273 readl(intel_i810_private.registers+I810_PTE_BASE+((i-1)*4));
261 274
262 global_cache_flush();
263 agp_bridge->driver->tlb_flush(mem); 275 agp_bridge->driver->tlb_flush(mem);
264 return 0; 276 return 0;
265} 277}
@@ -370,6 +382,11 @@ static struct _intel_i830_private {
370 struct pci_dev *i830_dev; /* device one */ 382 struct pci_dev *i830_dev; /* device one */
371 volatile u8 __iomem *registers; 383 volatile u8 __iomem *registers;
372 volatile u32 __iomem *gtt; /* I915G */ 384 volatile u32 __iomem *gtt; /* I915G */
385 /* gtt_entries is the number of gtt entries that are already mapped
386 * to stolen memory. Stolen memory is larger than the memory mapped
387 * through gtt_entries, as it includes some reserved space for the BIOS
388 * popup and for the GTT.
389 */
373 int gtt_entries; 390 int gtt_entries;
374} intel_i830_private; 391} intel_i830_private;
375 392
@@ -380,14 +397,41 @@ static void intel_i830_init_gtt_entries(void)
380 u8 rdct; 397 u8 rdct;
381 int local = 0; 398 int local = 0;
382 static const int ddt[4] = { 0, 16, 32, 64 }; 399 static const int ddt[4] = { 0, 16, 32, 64 };
383 int size; 400 int size; /* reserved space (in kb) at the top of stolen memory */
384 401
385 pci_read_config_word(agp_bridge->dev,I830_GMCH_CTRL,&gmch_ctrl); 402 pci_read_config_word(agp_bridge->dev,I830_GMCH_CTRL,&gmch_ctrl);
386 403
387 /* We obtain the size of the GTT, which is also stored (for some 404 if (IS_I965) {
388 * reason) at the top of stolen memory. Then we add 4KB to that 405 u32 pgetbl_ctl;
389 * for the video BIOS popup, which is also stored in there. */ 406
390 size = agp_bridge->driver->fetch_size() + 4; 407 pci_read_config_dword(agp_bridge->dev, I810_PGETBL_CTL,
408 &pgetbl_ctl);
409 /* The 965 has a field telling us the size of the GTT,
410 * which may be larger than what is necessary to map the
411 * aperture.
412 */
413 switch (pgetbl_ctl & I965_PGETBL_SIZE_MASK) {
414 case I965_PGETBL_SIZE_128KB:
415 size = 128;
416 break;
417 case I965_PGETBL_SIZE_256KB:
418 size = 256;
419 break;
420 case I965_PGETBL_SIZE_512KB:
421 size = 512;
422 break;
423 default:
424 printk(KERN_INFO PFX "Unknown page table size, "
425 "assuming 512KB\n");
426 size = 512;
427 }
428 size += 4; /* add in BIOS popup space */
429 } else {
430 /* On previous hardware, the GTT size was just what was
431 * required to map the aperture.
432 */
433 size = agp_bridge->driver->fetch_size() + 4;
434 }
391 435
392 if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82830_HB || 436 if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82830_HB ||
393 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82845G_HB) { 437 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82845G_HB) {
@@ -576,6 +620,9 @@ static int intel_i830_insert_entries(struct agp_memory *mem,off_t pg_start, int
576 int i,j,num_entries; 620 int i,j,num_entries;
577 void *temp; 621 void *temp;
578 622
623 if (mem->page_count == 0)
624 return 0;
625
579 temp = agp_bridge->current_size; 626 temp = agp_bridge->current_size;
580 num_entries = A_SIZE_FIX(temp)->num_entries; 627 num_entries = A_SIZE_FIX(temp)->num_entries;
581 628
@@ -598,16 +645,18 @@ static int intel_i830_insert_entries(struct agp_memory *mem,off_t pg_start, int
598 (mem->type != 0 && mem->type != AGP_PHYS_MEMORY)) 645 (mem->type != 0 && mem->type != AGP_PHYS_MEMORY))
599 return -EINVAL; 646 return -EINVAL;
600 647
601 global_cache_flush(); /* FIXME: Necessary ?*/ 648 if (!mem->is_flushed) {
649 global_cache_flush();
650 mem->is_flushed = TRUE;
651 }
602 652
603 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { 653 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
604 writel(agp_bridge->driver->mask_memory(agp_bridge, 654 writel(agp_bridge->driver->mask_memory(agp_bridge,
605 mem->memory[i], mem->type), 655 mem->memory[i], mem->type),
606 intel_i830_private.registers+I810_PTE_BASE+(j*4)); 656 intel_i830_private.registers+I810_PTE_BASE+(j*4));
607 readl(intel_i830_private.registers+I810_PTE_BASE+(j*4)); /* PCI Posting. */
608 } 657 }
658 readl(intel_i830_private.registers+I810_PTE_BASE+((j-1)*4));
609 659
610 global_cache_flush();
611 agp_bridge->driver->tlb_flush(mem); 660 agp_bridge->driver->tlb_flush(mem);
612 return 0; 661 return 0;
613} 662}
@@ -617,7 +666,8 @@ static int intel_i830_remove_entries(struct agp_memory *mem,off_t pg_start,
617{ 666{
618 int i; 667 int i;
619 668
620 global_cache_flush(); 669 if (mem->page_count == 0)
670 return 0;
621 671
622 if (pg_start < intel_i830_private.gtt_entries) { 672 if (pg_start < intel_i830_private.gtt_entries) {
623 printk (KERN_INFO PFX "Trying to disable local/stolen memory\n"); 673 printk (KERN_INFO PFX "Trying to disable local/stolen memory\n");
@@ -626,10 +676,9 @@ static int intel_i830_remove_entries(struct agp_memory *mem,off_t pg_start,
626 676
627 for (i = pg_start; i < (mem->page_count + pg_start); i++) { 677 for (i = pg_start; i < (mem->page_count + pg_start); i++) {
628 writel(agp_bridge->scratch_page, intel_i830_private.registers+I810_PTE_BASE+(i*4)); 678 writel(agp_bridge->scratch_page, intel_i830_private.registers+I810_PTE_BASE+(i*4));
629 readl(intel_i830_private.registers+I810_PTE_BASE+(i*4)); /* PCI Posting. */
630 } 679 }
680 readl(intel_i830_private.registers+I810_PTE_BASE+((i-1)*4));
631 681
632 global_cache_flush();
633 agp_bridge->driver->tlb_flush(mem); 682 agp_bridge->driver->tlb_flush(mem);
634 return 0; 683 return 0;
635} 684}
@@ -686,6 +735,9 @@ static int intel_i915_insert_entries(struct agp_memory *mem,off_t pg_start,
686 int i,j,num_entries; 735 int i,j,num_entries;
687 void *temp; 736 void *temp;
688 737
738 if (mem->page_count == 0)
739 return 0;
740
689 temp = agp_bridge->current_size; 741 temp = agp_bridge->current_size;
690 num_entries = A_SIZE_FIX(temp)->num_entries; 742 num_entries = A_SIZE_FIX(temp)->num_entries;
691 743
@@ -708,15 +760,17 @@ static int intel_i915_insert_entries(struct agp_memory *mem,off_t pg_start,
708 (mem->type != 0 && mem->type != AGP_PHYS_MEMORY)) 760 (mem->type != 0 && mem->type != AGP_PHYS_MEMORY))
709 return -EINVAL; 761 return -EINVAL;
710 762
711 global_cache_flush(); 763 if (!mem->is_flushed) {
764 global_cache_flush();
765 mem->is_flushed = TRUE;
766 }
712 767
713 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { 768 for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
714 writel(agp_bridge->driver->mask_memory(agp_bridge, 769 writel(agp_bridge->driver->mask_memory(agp_bridge,
715 mem->memory[i], mem->type), intel_i830_private.gtt+j); 770 mem->memory[i], mem->type), intel_i830_private.gtt+j);
716 readl(intel_i830_private.gtt+j); /* PCI Posting. */
717 } 771 }
772 readl(intel_i830_private.gtt+j-1);
718 773
719 global_cache_flush();
720 agp_bridge->driver->tlb_flush(mem); 774 agp_bridge->driver->tlb_flush(mem);
721 return 0; 775 return 0;
722} 776}
@@ -726,7 +780,8 @@ static int intel_i915_remove_entries(struct agp_memory *mem,off_t pg_start,
726{ 780{
727 int i; 781 int i;
728 782
729 global_cache_flush(); 783 if (mem->page_count == 0)
784 return 0;
730 785
731 if (pg_start < intel_i830_private.gtt_entries) { 786 if (pg_start < intel_i830_private.gtt_entries) {
732 printk (KERN_INFO PFX "Trying to disable local/stolen memory\n"); 787 printk (KERN_INFO PFX "Trying to disable local/stolen memory\n");
@@ -735,30 +790,34 @@ static int intel_i915_remove_entries(struct agp_memory *mem,off_t pg_start,
735 790
736 for (i = pg_start; i < (mem->page_count + pg_start); i++) { 791 for (i = pg_start; i < (mem->page_count + pg_start); i++) {
737 writel(agp_bridge->scratch_page, intel_i830_private.gtt+i); 792 writel(agp_bridge->scratch_page, intel_i830_private.gtt+i);
738 readl(intel_i830_private.gtt+i);
739 } 793 }
794 readl(intel_i830_private.gtt+i-1);
740 795
741 global_cache_flush();
742 agp_bridge->driver->tlb_flush(mem); 796 agp_bridge->driver->tlb_flush(mem);
743 return 0; 797 return 0;
744} 798}
745 799
746static int intel_i915_fetch_size(void) 800/* Return the aperture size by just checking the resource length. The effect
801 * described in the spec of the MSAC registers is just changing of the
802 * resource size.
803 */
804static int intel_i9xx_fetch_size(void)
747{ 805{
748 struct aper_size_info_fixed *values; 806 int num_sizes = sizeof(intel_i830_sizes) / sizeof(*intel_i830_sizes);
749 u32 temp, offset; 807 int aper_size; /* size in megabytes */
808 int i;
750 809
751#define I915_256MB_ADDRESS_MASK (1<<27) 810 aper_size = pci_resource_len(intel_i830_private.i830_dev, 2) / MB(1);
752 811
753 values = A_SIZE_FIX(agp_bridge->driver->aperture_sizes); 812 for (i = 0; i < num_sizes; i++) {
813 if (aper_size == intel_i830_sizes[i].size) {
814 agp_bridge->current_size = intel_i830_sizes + i;
815 agp_bridge->previous_size = agp_bridge->current_size;
816 return aper_size;
817 }
818 }
754 819
755 pci_read_config_dword(intel_i830_private.i830_dev, I915_GMADDR, &temp); 820 return 0;
756 if (temp & I915_256MB_ADDRESS_MASK)
757 offset = 0; /* 128MB aperture */
758 else
759 offset = 2; /* 256MB aperture */
760 agp_bridge->previous_size = agp_bridge->current_size = (void *)(values + offset);
761 return values[offset].size;
762} 821}
763 822
764/* The intel i915 automatically initializes the agp aperture during POST. 823/* The intel i915 automatically initializes the agp aperture during POST.
@@ -821,40 +880,9 @@ static unsigned long intel_i965_mask_memory(struct agp_bridge_data *bridge,
821 return addr | bridge->driver->masks[type].mask; 880 return addr | bridge->driver->masks[type].mask;
822} 881}
823 882
824static int intel_i965_fetch_size(void)
825{
826 struct aper_size_info_fixed *values;
827 u32 offset = 0;
828 u8 temp;
829
830#define I965_512MB_ADDRESS_MASK (3<<1)
831
832 values = A_SIZE_FIX(agp_bridge->driver->aperture_sizes);
833
834 pci_read_config_byte(intel_i830_private.i830_dev, I965_MSAC, &temp);
835 temp &= I965_512MB_ADDRESS_MASK;
836 switch (temp) {
837 case 0x00:
838 offset = 0; /* 128MB */
839 break;
840 case 0x06:
841 offset = 3; /* 512MB */
842 break;
843 default:
844 case 0x02:
845 offset = 2; /* 256MB */
846 break;
847 }
848
849 agp_bridge->previous_size = agp_bridge->current_size = (void *)(values + offset);
850
851 /* The i965 GTT is always sized as if it had a 512kB aperture size */
852 return 512;
853}
854
855/* The intel i965 automatically initializes the agp aperture during POST. 883/* The intel i965 automatically initializes the agp aperture during POST.
856+ * Use the memory already set aside for in the GTT. 884 * Use the memory already set aside for in the GTT.
857+ */ 885 */
858static int intel_i965_create_gatt_table(struct agp_bridge_data *bridge) 886static int intel_i965_create_gatt_table(struct agp_bridge_data *bridge)
859{ 887{
860 int page_order; 888 int page_order;
@@ -1574,7 +1602,7 @@ static struct agp_bridge_driver intel_915_driver = {
1574 .num_aperture_sizes = 4, 1602 .num_aperture_sizes = 4,
1575 .needs_scratch_page = TRUE, 1603 .needs_scratch_page = TRUE,
1576 .configure = intel_i915_configure, 1604 .configure = intel_i915_configure,
1577 .fetch_size = intel_i915_fetch_size, 1605 .fetch_size = intel_i9xx_fetch_size,
1578 .cleanup = intel_i915_cleanup, 1606 .cleanup = intel_i915_cleanup,
1579 .tlb_flush = intel_i810_tlbflush, 1607 .tlb_flush = intel_i810_tlbflush,
1580 .mask_memory = intel_i810_mask_memory, 1608 .mask_memory = intel_i810_mask_memory,
@@ -1598,7 +1626,7 @@ static struct agp_bridge_driver intel_i965_driver = {
1598 .num_aperture_sizes = 4, 1626 .num_aperture_sizes = 4,
1599 .needs_scratch_page = TRUE, 1627 .needs_scratch_page = TRUE,
1600 .configure = intel_i915_configure, 1628 .configure = intel_i915_configure,
1601 .fetch_size = intel_i965_fetch_size, 1629 .fetch_size = intel_i9xx_fetch_size,
1602 .cleanup = intel_i915_cleanup, 1630 .cleanup = intel_i915_cleanup,
1603 .tlb_flush = intel_i810_tlbflush, 1631 .tlb_flush = intel_i810_tlbflush,
1604 .mask_memory = intel_i965_mask_memory, 1632 .mask_memory = intel_i965_mask_memory,
diff --git a/drivers/char/agp/sgi-agp.c b/drivers/char/agp/sgi-agp.c
index d73be4c2db8a..902648db7efa 100644
--- a/drivers/char/agp/sgi-agp.c
+++ b/drivers/char/agp/sgi-agp.c
@@ -281,10 +281,11 @@ static int __devinit agp_sgi_init(void)
281 else 281 else
282 return 0; 282 return 0;
283 283
284 sgi_tioca_agp_bridges = 284 sgi_tioca_agp_bridges = kmalloc(tioca_gart_found *
285 (struct agp_bridge_data **)kmalloc(tioca_gart_found * 285 sizeof(struct agp_bridge_data *),
286 sizeof(struct agp_bridge_data *), 286 GFP_KERNEL);
287 GFP_KERNEL); 287 if (!sgi_tioca_agp_bridges)
288 return -ENOMEM;
288 289
289 j = 0; 290 j = 0;
290 list_for_each_entry(info, &tioca_list, ca_list) { 291 list_for_each_entry(info, &tioca_list, ca_list) {
diff --git a/drivers/char/drm/i915_irq.c b/drivers/char/drm/i915_irq.c
index e2c4b3a41b1e..78c1ae28f17c 100644
--- a/drivers/char/drm/i915_irq.c
+++ b/drivers/char/drm/i915_irq.c
@@ -500,7 +500,7 @@ int i915_vblank_swap(DRM_IOCTL_ARGS)
500 500
501 if (!drm_get_drawable_info(dev, swap.drawable)) { 501 if (!drm_get_drawable_info(dev, swap.drawable)) {
502 spin_unlock_irqrestore(&dev->drw_lock, irqflags); 502 spin_unlock_irqrestore(&dev->drw_lock, irqflags);
503 DRM_ERROR("Invalid drawable ID %d\n", swap.drawable); 503 DRM_DEBUG("Invalid drawable ID %d\n", swap.drawable);
504 return DRM_ERR(EINVAL); 504 return DRM_ERR(EINVAL);
505 } 505 }
506 506
diff --git a/drivers/char/hw_random/amd-rng.c b/drivers/char/hw_random/amd-rng.c
index 71e4e0f3fd54..556fd81fa815 100644
--- a/drivers/char/hw_random/amd-rng.c
+++ b/drivers/char/hw_random/amd-rng.c
@@ -144,7 +144,7 @@ static void __exit mod_exit(void)
144 hwrng_unregister(&amd_rng); 144 hwrng_unregister(&amd_rng);
145} 145}
146 146
147subsys_initcall(mod_init); 147module_init(mod_init);
148module_exit(mod_exit); 148module_exit(mod_exit);
149 149
150MODULE_AUTHOR("The Linux Kernel team"); 150MODULE_AUTHOR("The Linux Kernel team");
diff --git a/drivers/char/hw_random/geode-rng.c b/drivers/char/hw_random/geode-rng.c
index d37ced0d132b..8e8658dcd2e3 100644
--- a/drivers/char/hw_random/geode-rng.c
+++ b/drivers/char/hw_random/geode-rng.c
@@ -125,7 +125,7 @@ static void __exit mod_exit(void)
125 iounmap(mem); 125 iounmap(mem);
126} 126}
127 127
128subsys_initcall(mod_init); 128module_init(mod_init);
129module_exit(mod_exit); 129module_exit(mod_exit);
130 130
131MODULE_DESCRIPTION("H/W RNG driver for AMD Geode LX CPUs"); 131MODULE_DESCRIPTION("H/W RNG driver for AMD Geode LX CPUs");
diff --git a/drivers/char/hw_random/intel-rng.c b/drivers/char/hw_random/intel-rng.c
index 8efbc9c0e545..f22e78e3c70f 100644
--- a/drivers/char/hw_random/intel-rng.c
+++ b/drivers/char/hw_random/intel-rng.c
@@ -143,6 +143,11 @@ static const struct pci_device_id pci_tbl[] = {
143}; 143};
144MODULE_DEVICE_TABLE(pci, pci_tbl); 144MODULE_DEVICE_TABLE(pci, pci_tbl);
145 145
146static __initdata int no_fwh_detect;
147module_param(no_fwh_detect, int, 0);
148MODULE_PARM_DESC(no_fwh_detect, "Skip FWH detection:\n"
149 " positive value - skip if FWH space locked read-only\n"
150 " negative value - skip always");
146 151
147static inline u8 hwstatus_get(void __iomem *mem) 152static inline u8 hwstatus_get(void __iomem *mem)
148{ 153{
@@ -240,6 +245,11 @@ static int __init mod_init(void)
240 if (!dev) 245 if (!dev)
241 goto out; /* Device not found. */ 246 goto out; /* Device not found. */
242 247
248 if (no_fwh_detect < 0) {
249 pci_dev_put(dev);
250 goto fwh_done;
251 }
252
243 /* Check for Intel 82802 */ 253 /* Check for Intel 82802 */
244 if (dev->device < 0x2640) { 254 if (dev->device < 0x2640) {
245 fwh_dec_en1_off = FWH_DEC_EN1_REG_OLD; 255 fwh_dec_en1_off = FWH_DEC_EN1_REG_OLD;
@@ -252,6 +262,23 @@ static int __init mod_init(void)
252 pci_read_config_byte(dev, fwh_dec_en1_off, &fwh_dec_en1_val); 262 pci_read_config_byte(dev, fwh_dec_en1_off, &fwh_dec_en1_val);
253 pci_read_config_byte(dev, bios_cntl_off, &bios_cntl_val); 263 pci_read_config_byte(dev, bios_cntl_off, &bios_cntl_val);
254 264
265 if ((bios_cntl_val &
266 (BIOS_CNTL_LOCK_ENABLE_MASK|BIOS_CNTL_WRITE_ENABLE_MASK))
267 == BIOS_CNTL_LOCK_ENABLE_MASK) {
268 static __initdata /*const*/ char warning[] =
269 KERN_WARNING PFX "Firmware space is locked read-only. If you can't or\n"
270 KERN_WARNING PFX "don't want to disable this in firmware setup, and if\n"
271 KERN_WARNING PFX "you are certain that your system has a functional\n"
272 KERN_WARNING PFX "RNG, try using the 'no_fwh_detect' option.\n";
273
274 pci_dev_put(dev);
275 if (no_fwh_detect)
276 goto fwh_done;
277 printk(warning);
278 err = -EBUSY;
279 goto out;
280 }
281
255 mem = ioremap_nocache(INTEL_FWH_ADDR, INTEL_FWH_ADDR_LEN); 282 mem = ioremap_nocache(INTEL_FWH_ADDR, INTEL_FWH_ADDR_LEN);
256 if (mem == NULL) { 283 if (mem == NULL) {
257 pci_dev_put(dev); 284 pci_dev_put(dev);
@@ -280,8 +307,7 @@ static int __init mod_init(void)
280 pci_write_config_byte(dev, 307 pci_write_config_byte(dev,
281 fwh_dec_en1_off, 308 fwh_dec_en1_off,
282 fwh_dec_en1_val | FWH_F8_EN_MASK); 309 fwh_dec_en1_val | FWH_F8_EN_MASK);
283 if (!(bios_cntl_val & 310 if (!(bios_cntl_val & BIOS_CNTL_WRITE_ENABLE_MASK))
284 (BIOS_CNTL_LOCK_ENABLE_MASK|BIOS_CNTL_WRITE_ENABLE_MASK)))
285 pci_write_config_byte(dev, 311 pci_write_config_byte(dev,
286 bios_cntl_off, 312 bios_cntl_off,
287 bios_cntl_val | BIOS_CNTL_WRITE_ENABLE_MASK); 313 bios_cntl_val | BIOS_CNTL_WRITE_ENABLE_MASK);
@@ -315,6 +341,8 @@ static int __init mod_init(void)
315 goto out; 341 goto out;
316 } 342 }
317 343
344fwh_done:
345
318 err = -ENOMEM; 346 err = -ENOMEM;
319 mem = ioremap(INTEL_RNG_ADDR, INTEL_RNG_ADDR_LEN); 347 mem = ioremap(INTEL_RNG_ADDR, INTEL_RNG_ADDR_LEN);
320 if (!mem) 348 if (!mem)
@@ -350,7 +378,7 @@ static void __exit mod_exit(void)
350 iounmap(mem); 378 iounmap(mem);
351} 379}
352 380
353subsys_initcall(mod_init); 381module_init(mod_init);
354module_exit(mod_exit); 382module_exit(mod_exit);
355 383
356MODULE_DESCRIPTION("H/W RNG driver for Intel chipsets"); 384MODULE_DESCRIPTION("H/W RNG driver for Intel chipsets");
diff --git a/drivers/char/hw_random/ixp4xx-rng.c b/drivers/char/hw_random/ixp4xx-rng.c
index c9caff57db85..bab43ca32ac1 100644
--- a/drivers/char/hw_random/ixp4xx-rng.c
+++ b/drivers/char/hw_random/ixp4xx-rng.c
@@ -64,7 +64,7 @@ static void __exit ixp4xx_rng_exit(void)
64 iounmap(rng_base); 64 iounmap(rng_base);
65} 65}
66 66
67subsys_initcall(ixp4xx_rng_init); 67module_init(ixp4xx_rng_init);
68module_exit(ixp4xx_rng_exit); 68module_exit(ixp4xx_rng_exit);
69 69
70MODULE_AUTHOR("Deepak Saxena <dsaxena@plexity.net>"); 70MODULE_AUTHOR("Deepak Saxena <dsaxena@plexity.net>");
diff --git a/drivers/char/hw_random/via-rng.c b/drivers/char/hw_random/via-rng.c
index 0e786b617bb8..9ebf84d18655 100644
--- a/drivers/char/hw_random/via-rng.c
+++ b/drivers/char/hw_random/via-rng.c
@@ -176,7 +176,7 @@ static void __exit mod_exit(void)
176 hwrng_unregister(&via_rng); 176 hwrng_unregister(&via_rng);
177} 177}
178 178
179subsys_initcall(mod_init); 179module_init(mod_init);
180module_exit(mod_exit); 180module_exit(mod_exit);
181 181
182MODULE_DESCRIPTION("H/W RNG driver for VIA chipsets"); 182MODULE_DESCRIPTION("H/W RNG driver for VIA chipsets");
diff --git a/drivers/char/ip2/i2ellis.h b/drivers/char/ip2/i2ellis.h
index 5eabe47b0bc8..433305062fb8 100644
--- a/drivers/char/ip2/i2ellis.h
+++ b/drivers/char/ip2/i2ellis.h
@@ -606,9 +606,9 @@ static int iiDownloadAll(i2eBordStrPtr, loadHdrStrPtr, int, int);
606// code and returning. 606// code and returning.
607// 607//
608#define COMPLETE(pB,code) \ 608#define COMPLETE(pB,code) \
609 if(1){ \ 609 do { \
610 pB->i2eError = code; \ 610 pB->i2eError = code; \
611 return (code == I2EE_GOOD);\ 611 return (code == I2EE_GOOD);\
612 } 612 } while (0)
613 613
614#endif // I2ELLIS_H 614#endif // I2ELLIS_H
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/connector/cn_proc.c b/drivers/connector/cn_proc.c
index 3ece69231343..5c9f67f98d10 100644
--- a/drivers/connector/cn_proc.c
+++ b/drivers/connector/cn_proc.c
@@ -28,6 +28,7 @@
28#include <linux/init.h> 28#include <linux/init.h>
29#include <linux/connector.h> 29#include <linux/connector.h>
30#include <asm/atomic.h> 30#include <asm/atomic.h>
31#include <asm/unaligned.h>
31 32
32#include <linux/cn_proc.h> 33#include <linux/cn_proc.h>
33 34
@@ -60,7 +61,7 @@ void proc_fork_connector(struct task_struct *task)
60 ev = (struct proc_event*)msg->data; 61 ev = (struct proc_event*)msg->data;
61 get_seq(&msg->seq, &ev->cpu); 62 get_seq(&msg->seq, &ev->cpu);
62 ktime_get_ts(&ts); /* get high res monotonic timestamp */ 63 ktime_get_ts(&ts); /* get high res monotonic timestamp */
63 ev->timestamp_ns = timespec_to_ns(&ts); 64 put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
64 ev->what = PROC_EVENT_FORK; 65 ev->what = PROC_EVENT_FORK;
65 ev->event_data.fork.parent_pid = task->real_parent->pid; 66 ev->event_data.fork.parent_pid = task->real_parent->pid;
66 ev->event_data.fork.parent_tgid = task->real_parent->tgid; 67 ev->event_data.fork.parent_tgid = task->real_parent->tgid;
@@ -88,7 +89,7 @@ void proc_exec_connector(struct task_struct *task)
88 ev = (struct proc_event*)msg->data; 89 ev = (struct proc_event*)msg->data;
89 get_seq(&msg->seq, &ev->cpu); 90 get_seq(&msg->seq, &ev->cpu);
90 ktime_get_ts(&ts); /* get high res monotonic timestamp */ 91 ktime_get_ts(&ts); /* get high res monotonic timestamp */
91 ev->timestamp_ns = timespec_to_ns(&ts); 92 put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
92 ev->what = PROC_EVENT_EXEC; 93 ev->what = PROC_EVENT_EXEC;
93 ev->event_data.exec.process_pid = task->pid; 94 ev->event_data.exec.process_pid = task->pid;
94 ev->event_data.exec.process_tgid = task->tgid; 95 ev->event_data.exec.process_tgid = task->tgid;
@@ -124,7 +125,7 @@ void proc_id_connector(struct task_struct *task, int which_id)
124 return; 125 return;
125 get_seq(&msg->seq, &ev->cpu); 126 get_seq(&msg->seq, &ev->cpu);
126 ktime_get_ts(&ts); /* get high res monotonic timestamp */ 127 ktime_get_ts(&ts); /* get high res monotonic timestamp */
127 ev->timestamp_ns = timespec_to_ns(&ts); 128 put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
128 129
129 memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id)); 130 memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
130 msg->ack = 0; /* not used */ 131 msg->ack = 0; /* not used */
@@ -146,7 +147,7 @@ void proc_exit_connector(struct task_struct *task)
146 ev = (struct proc_event*)msg->data; 147 ev = (struct proc_event*)msg->data;
147 get_seq(&msg->seq, &ev->cpu); 148 get_seq(&msg->seq, &ev->cpu);
148 ktime_get_ts(&ts); /* get high res monotonic timestamp */ 149 ktime_get_ts(&ts); /* get high res monotonic timestamp */
149 ev->timestamp_ns = timespec_to_ns(&ts); 150 put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
150 ev->what = PROC_EVENT_EXIT; 151 ev->what = PROC_EVENT_EXIT;
151 ev->event_data.exit.process_pid = task->pid; 152 ev->event_data.exit.process_pid = task->pid;
152 ev->event_data.exit.process_tgid = task->tgid; 153 ev->event_data.exit.process_tgid = task->tgid;
@@ -181,7 +182,7 @@ static void cn_proc_ack(int err, int rcvd_seq, int rcvd_ack)
181 ev = (struct proc_event*)msg->data; 182 ev = (struct proc_event*)msg->data;
182 msg->seq = rcvd_seq; 183 msg->seq = rcvd_seq;
183 ktime_get_ts(&ts); /* get high res monotonic timestamp */ 184 ktime_get_ts(&ts); /* get high res monotonic timestamp */
184 ev->timestamp_ns = timespec_to_ns(&ts); 185 put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
185 ev->cpu = -1; 186 ev->cpu = -1;
186 ev->what = PROC_EVENT_NONE; 187 ev->what = PROC_EVENT_NONE;
187 ev->event_data.ack.err = err; 188 ev->event_data.ack.err = err;
diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c
index 6742b1adf2c8..91ad342a6051 100644
--- a/drivers/cpufreq/cpufreq_stats.c
+++ b/drivers/cpufreq/cpufreq_stats.c
@@ -285,6 +285,7 @@ cpufreq_stat_notifier_trans (struct notifier_block *nb, unsigned long val,
285 stat = cpufreq_stats_table[freq->cpu]; 285 stat = cpufreq_stats_table[freq->cpu];
286 if (!stat) 286 if (!stat)
287 return 0; 287 return 0;
288
288 old_index = freq_table_get_index(stat, freq->old); 289 old_index = freq_table_get_index(stat, freq->old);
289 new_index = freq_table_get_index(stat, freq->new); 290 new_index = freq_table_get_index(stat, freq->new);
290 291
@@ -292,6 +293,9 @@ cpufreq_stat_notifier_trans (struct notifier_block *nb, unsigned long val,
292 if (old_index == new_index) 293 if (old_index == new_index)
293 return 0; 294 return 0;
294 295
296 if (old_index == -1 || new_index == -1)
297 return 0;
298
295 spin_lock(&cpufreq_stats_lock); 299 spin_lock(&cpufreq_stats_lock);
296 stat->last_index = new_index; 300 stat->last_index = new_index;
297#ifdef CONFIG_CPU_FREQ_STAT_DETAILS 301#ifdef CONFIG_CPU_FREQ_STAT_DETAILS
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index 96d4a0bb2203..ec796ad087df 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -6,13 +6,21 @@ menu "HID Devices"
6 6
7config HID 7config HID
8 tristate "Generic HID support" 8 tristate "Generic HID support"
9 depends on INPUT
9 default y 10 default y
10 ---help--- 11 ---help---
11 Say Y here if you want generic HID support to connect keyboards, 12 A human interface device (HID) is a type of computer device that
12 mice, joysticks, graphic tablets, or any other HID based devices 13 interacts directly with and takes input from humans. The term "HID"
13 to your computer. You also need to select particular types of 14 most commonly used to refer to the USB-HID specification, but other
14 HID devices you want to compile support for, in the particular 15 devices (such as, but not strictly limited to, Bluetooth) are
15 driver menu (USB, Bluetooth) 16 designed using HID specification (this involves certain keyboards,
17 mice, tablets, etc). This option compiles into kernel the generic
18 HID layer code (parser, usages, etc.), which can then be used by
19 transport-specific HID implementation (like USB or Bluetooth).
20
21 For docs and specs, see http://www.usb.org/developers/hidpage/
22
23 If unsure, say Y
16 24
17endmenu 25endmenu
18 26
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 18c2b3cf6bcc..b8cf50fcd64d 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -40,18 +40,10 @@
40 40
41#define DRIVER_VERSION "v2.6" 41#define DRIVER_VERSION "v2.6"
42#define DRIVER_AUTHOR "Andreas Gal, Vojtech Pavlik" 42#define DRIVER_AUTHOR "Andreas Gal, Vojtech Pavlik"
43#define DRIVER_DESC "USB HID core driver" 43#define DRIVER_DESC "HID core driver"
44#define DRIVER_LICENSE "GPL" 44#define DRIVER_LICENSE "GPL"
45 45
46/* 46/*
47 * Module parameters.
48 */
49
50static unsigned int hid_mousepoll_interval;
51module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644);
52MODULE_PARM_DESC(mousepoll, "Polling interval of mice");
53
54/*
55 * Register a new report for a device. 47 * Register a new report for a device.
56 */ 48 */
57 49
@@ -656,7 +648,7 @@ struct hid_device *hid_parse_report(__u8 *start, unsigned size)
656 for (i = 0; i < HID_REPORT_TYPES; i++) 648 for (i = 0; i < HID_REPORT_TYPES; i++)
657 INIT_LIST_HEAD(&device->report_enum[i].report_list); 649 INIT_LIST_HEAD(&device->report_enum[i].report_list);
658 650
659 if (!(device->rdesc = (__u8 *)kmalloc(size, GFP_KERNEL))) { 651 if (!(device->rdesc = kmalloc(size, GFP_KERNEL))) {
660 kfree(device->collection); 652 kfree(device->collection);
661 kfree(device); 653 kfree(device);
662 return NULL; 654 return NULL;
@@ -888,6 +880,10 @@ static void hid_output_field(struct hid_field *field, __u8 *data)
888 unsigned size = field->report_size; 880 unsigned size = field->report_size;
889 unsigned n; 881 unsigned n;
890 882
883 /* make sure the unused bits in the last byte are zeros */
884 if (count > 0 && size > 0)
885 data[(count*size-1)/8] = 0;
886
891 for (n = 0; n < count; n++) { 887 for (n = 0; n < count; n++) {
892 if (field->logical_minimum < 0) /* signed values */ 888 if (field->logical_minimum < 0) /* signed values */
893 implement(data, offset + n * size, size, s32ton(field->value[n], size)); 889 implement(data, offset + n * size, size, s32ton(field->value[n], size));
@@ -955,7 +951,7 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i
955 } 951 }
956 952
957#ifdef DEBUG_DATA 953#ifdef DEBUG_DATA
958 printk(KERN_DEBUG __FILE__ ": report (size %u) (%snumbered)\n", len, report_enum->numbered ? "" : "un"); 954 printk(KERN_DEBUG __FILE__ ": report (size %u) (%snumbered)\n", size, report_enum->numbered ? "" : "un");
959#endif 955#endif
960 956
961 n = 0; /* Normally report number is 0 */ 957 n = 0; /* Normally report number is 0 */
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 998638020ea0..9cf591a1bda3 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -30,7 +30,6 @@
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
@@ -68,6 +67,7 @@ static const struct {
68#define map_led(c) do { usage->code = c; usage->type = EV_LED; bit = input->ledbit; max = LED_MAX; } while (0) 67#define map_led(c) do { usage->code = c; usage->type = EV_LED; bit = input->ledbit; max = LED_MAX; } while (0)
69 68
70#define map_abs_clear(c) do { map_abs(c); clear_bit(c, bit); } while (0) 69#define map_abs_clear(c) do { map_abs(c); clear_bit(c, bit); } while (0)
70#define map_rel_clear(c) do { map_rel(c); clear_bit(c, bit); } while (0)
71#define map_key_clear(c) do { map_key(c); clear_bit(c, bit); } while (0) 71#define map_key_clear(c) do { map_key(c); clear_bit(c, bit); } while (0)
72 72
73#ifdef CONFIG_USB_HIDINPUT_POWERBOOK 73#ifdef CONFIG_USB_HIDINPUT_POWERBOOK
@@ -292,7 +292,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
292 } 292 }
293 } 293 }
294 294
295 map_key(code); 295 map_key_clear(code);
296 break; 296 break;
297 297
298 298
@@ -343,9 +343,9 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
343 case HID_GD_RX: case HID_GD_RY: case HID_GD_RZ: 343 case HID_GD_RX: case HID_GD_RY: case HID_GD_RZ:
344 case HID_GD_SLIDER: case HID_GD_DIAL: case HID_GD_WHEEL: 344 case HID_GD_SLIDER: case HID_GD_DIAL: case HID_GD_WHEEL:
345 if (field->flags & HID_MAIN_ITEM_RELATIVE) 345 if (field->flags & HID_MAIN_ITEM_RELATIVE)
346 map_rel(usage->hid & 0xf); 346 map_rel_clear(usage->hid & 0xf);
347 else 347 else
348 map_abs(usage->hid & 0xf); 348 map_abs_clear(usage->hid & 0xf);
349 break; 349 break;
350 350
351 case HID_GD_HATSWITCH: 351 case HID_GD_HATSWITCH:
@@ -363,9 +363,22 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
363 break; 363 break;
364 364
365 case HID_UP_LED: 365 case HID_UP_LED:
366 if (((usage->hid - 1) & 0xffff) >= LED_MAX) 366
367 goto ignore; 367 switch (usage->hid & 0xffff) { /* HID-Value: */
368 map_led((usage->hid - 1) & 0xffff); 368 case 0x01: map_led (LED_NUML); break; /* "Num Lock" */
369 case 0x02: map_led (LED_CAPSL); break; /* "Caps Lock" */
370 case 0x03: map_led (LED_SCROLLL); break; /* "Scroll Lock" */
371 case 0x04: map_led (LED_COMPOSE); break; /* "Compose" */
372 case 0x05: map_led (LED_KANA); break; /* "Kana" */
373 case 0x27: map_led (LED_SLEEP); break; /* "Stand-By" */
374 case 0x4c: map_led (LED_SUSPEND); break; /* "System Suspend" */
375 case 0x09: map_led (LED_MUTE); break; /* "Mute" */
376 case 0x4b: map_led (LED_MISC); break; /* "Generic Indicator" */
377 case 0x19: map_led (LED_MAIL); break; /* "Message Waiting" */
378 case 0x4d: map_led (LED_CHARGING); break; /* "External Power Connected" */
379
380 default: goto ignore;
381 }
369 break; 382 break;
370 383
371 case HID_UP_DIGITIZER: 384 case HID_UP_DIGITIZER:
@@ -500,7 +513,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
500 case 0x22f: map_key_clear(KEY_ZOOMRESET); break; 513 case 0x22f: map_key_clear(KEY_ZOOMRESET); break;
501 case 0x233: map_key_clear(KEY_SCROLLUP); break; 514 case 0x233: map_key_clear(KEY_SCROLLUP); break;
502 case 0x234: map_key_clear(KEY_SCROLLDOWN); break; 515 case 0x234: map_key_clear(KEY_SCROLLDOWN); break;
503 case 0x238: map_rel(REL_HWHEEL); break; 516 case 0x238: map_rel_clear(REL_HWHEEL); break;
504 case 0x25f: map_key_clear(KEY_CANCEL); break; 517 case 0x25f: map_key_clear(KEY_CANCEL); break;
505 case 0x279: map_key_clear(KEY_REDO); break; 518 case 0x279: map_key_clear(KEY_REDO); break;
506 519
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/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index e1989f3a2684..9367c4cfe936 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -564,13 +564,4 @@ config I2C_PNX
564 This driver can also be built as a module. If so, the module 564 This driver can also be built as a module. If so, the module
565 will be called i2c-pnx. 565 will be called i2c-pnx.
566 566
567config I2C_PNX_EARLY
568 bool "Early initialization for I2C on PNXxxxx"
569 depends on I2C_PNX=y
570 help
571 Under certain circumstances one may need to make sure I2C on PNXxxxx
572 is initialized earlier than some other driver that depends on it
573 (for instance, that might be USB in case of PNX4008). With this
574 option turned on you can guarantee that.
575
576endmenu 567endmenu
diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c
index bbc8e3a7ff55..490173611d6b 100644
--- a/drivers/i2c/busses/i2c-mv64xxx.c
+++ b/drivers/i2c/busses/i2c-mv64xxx.c
@@ -529,6 +529,8 @@ mv64xxx_i2c_probe(struct platform_device *pd)
529 platform_set_drvdata(pd, drv_data); 529 platform_set_drvdata(pd, drv_data);
530 i2c_set_adapdata(&drv_data->adapter, drv_data); 530 i2c_set_adapdata(&drv_data->adapter, drv_data);
531 531
532 mv64xxx_i2c_hw_init(drv_data);
533
532 if (request_irq(drv_data->irq, mv64xxx_i2c_intr, 0, 534 if (request_irq(drv_data->irq, mv64xxx_i2c_intr, 0,
533 MV64XXX_I2C_CTLR_NAME, drv_data)) { 535 MV64XXX_I2C_CTLR_NAME, drv_data)) {
534 dev_err(&drv_data->adapter.dev, 536 dev_err(&drv_data->adapter.dev,
@@ -542,8 +544,6 @@ mv64xxx_i2c_probe(struct platform_device *pd)
542 goto exit_free_irq; 544 goto exit_free_irq;
543 } 545 }
544 546
545 mv64xxx_i2c_hw_init(drv_data);
546
547 return 0; 547 return 0;
548 548
549 exit_free_irq: 549 exit_free_irq:
diff --git a/drivers/i2c/busses/i2c-pnx.c b/drivers/i2c/busses/i2c-pnx.c
index de0bca77e926..17376feb1acc 100644
--- a/drivers/i2c/busses/i2c-pnx.c
+++ b/drivers/i2c/busses/i2c-pnx.c
@@ -305,8 +305,7 @@ static int i2c_pnx_master_rcv(struct i2c_adapter *adap)
305 return 0; 305 return 0;
306} 306}
307 307
308static irqreturn_t 308static irqreturn_t i2c_pnx_interrupt(int irq, void *dev_id)
309i2c_pnx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
310{ 309{
311 u32 stat, ctl; 310 u32 stat, ctl;
312 struct i2c_adapter *adap = dev_id; 311 struct i2c_adapter *adap = dev_id;
@@ -699,10 +698,6 @@ MODULE_AUTHOR("Vitaly Wool, Dennis Kovalev <source@mvista.com>");
699MODULE_DESCRIPTION("I2C driver for Philips IP3204-based I2C busses"); 698MODULE_DESCRIPTION("I2C driver for Philips IP3204-based I2C busses");
700MODULE_LICENSE("GPL"); 699MODULE_LICENSE("GPL");
701 700
702#ifdef CONFIG_I2C_PNX_EARLY
703/* We need to make sure I2C is initialized before USB */ 701/* We need to make sure I2C is initialized before USB */
704subsys_initcall(i2c_adap_pnx_init); 702subsys_initcall(i2c_adap_pnx_init);
705#else
706mudule_init(i2c_adap_pnx_init);
707#endif
708module_exit(i2c_adap_pnx_exit); 703module_exit(i2c_adap_pnx_exit);
diff --git a/drivers/i2c/chips/m41t00.c b/drivers/i2c/chips/m41t00.c
index 420377c86422..3fcb646e2073 100644
--- a/drivers/i2c/chips/m41t00.c
+++ b/drivers/i2c/chips/m41t00.c
@@ -209,6 +209,7 @@ m41t00_set(void *arg)
209 buf[m41t00_chip->hour] = (buf[m41t00_chip->hour] & ~0x3f) | (hour& 0x3f); 209 buf[m41t00_chip->hour] = (buf[m41t00_chip->hour] & ~0x3f) | (hour& 0x3f);
210 buf[m41t00_chip->day] = (buf[m41t00_chip->day] & ~0x3f) | (day & 0x3f); 210 buf[m41t00_chip->day] = (buf[m41t00_chip->day] & ~0x3f) | (day & 0x3f);
211 buf[m41t00_chip->mon] = (buf[m41t00_chip->mon] & ~0x1f) | (mon & 0x1f); 211 buf[m41t00_chip->mon] = (buf[m41t00_chip->mon] & ~0x1f) | (mon & 0x1f);
212 buf[m41t00_chip->year] = year;
212 213
213 if (i2c_master_send(save_client, wbuf, 9) < 0) 214 if (i2c_master_send(save_client, wbuf, 9) < 0)
214 dev_err(&save_client->dev, "m41t00_set: Write error\n"); 215 dev_err(&save_client->dev, "m41t00_set: Write error\n");
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 3e31f1d265c9..b05378a3d673 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -95,16 +95,32 @@ struct device_driver i2c_adapter_driver = {
95 .bus = &i2c_bus_type, 95 .bus = &i2c_bus_type,
96}; 96};
97 97
98/* ------------------------------------------------------------------------- */
99
100/* I2C bus adapters -- one roots each I2C or SMBUS segment */
101
98static void i2c_adapter_class_dev_release(struct class_device *dev) 102static void i2c_adapter_class_dev_release(struct class_device *dev)
99{ 103{
100 struct i2c_adapter *adap = class_dev_to_i2c_adapter(dev); 104 struct i2c_adapter *adap = class_dev_to_i2c_adapter(dev);
101 complete(&adap->class_dev_released); 105 complete(&adap->class_dev_released);
102} 106}
103 107
108static ssize_t i2c_adapter_show_name(struct class_device *cdev, char *buf)
109{
110 struct i2c_adapter *adap = class_dev_to_i2c_adapter(cdev);
111 return sprintf(buf, "%s\n", adap->name);
112}
113
114static struct class_device_attribute i2c_adapter_attrs[] = {
115 __ATTR(name, S_IRUGO, i2c_adapter_show_name, NULL),
116 { },
117};
118
104struct class i2c_adapter_class = { 119struct class i2c_adapter_class = {
105 .owner = THIS_MODULE, 120 .owner = THIS_MODULE,
106 .name = "i2c-adapter", 121 .name = "i2c-adapter",
107 .release = &i2c_adapter_class_dev_release, 122 .class_dev_attrs = i2c_adapter_attrs,
123 .release = &i2c_adapter_class_dev_release,
108}; 124};
109 125
110static ssize_t show_adapter_name(struct device *dev, struct device_attribute *attr, char *buf) 126static ssize_t show_adapter_name(struct device *dev, struct device_attribute *attr, char *buf)
@@ -175,8 +191,12 @@ int i2c_add_adapter(struct i2c_adapter *adap)
175 * If the parent pointer is not set up, 191 * If the parent pointer is not set up,
176 * we add this adapter to the host bus. 192 * we add this adapter to the host bus.
177 */ 193 */
178 if (adap->dev.parent == NULL) 194 if (adap->dev.parent == NULL) {
179 adap->dev.parent = &platform_bus; 195 adap->dev.parent = &platform_bus;
196 printk(KERN_WARNING "**WARNING** I2C adapter driver [%s] "
197 "forgot to specify physical device; fix it!\n",
198 adap->name);
199 }
180 sprintf(adap->dev.bus_id, "i2c-%d", adap->nr); 200 sprintf(adap->dev.bus_id, "i2c-%d", adap->nr);
181 adap->dev.driver = &i2c_adapter_driver; 201 adap->dev.driver = &i2c_adapter_driver;
182 adap->dev.release = &i2c_adapter_dev_release; 202 adap->dev.release = &i2c_adapter_dev_release;
diff --git a/drivers/ide/pci/atiixp.c b/drivers/ide/pci/atiixp.c
index ffdffb6379ef..524e65de4398 100644
--- a/drivers/ide/pci/atiixp.c
+++ b/drivers/ide/pci/atiixp.c
@@ -46,6 +46,8 @@ static atiixp_ide_timing mdma_timing[] = {
46 46
47static int save_mdma_mode[4]; 47static int save_mdma_mode[4];
48 48
49static DEFINE_SPINLOCK(atiixp_lock);
50
49/** 51/**
50 * atiixp_ratemask - compute rate mask for ATIIXP IDE 52 * atiixp_ratemask - compute rate mask for ATIIXP IDE
51 * @drive: IDE drive to compute for 53 * @drive: IDE drive to compute for
@@ -105,7 +107,7 @@ static int atiixp_ide_dma_host_on(ide_drive_t *drive)
105 unsigned long flags; 107 unsigned long flags;
106 u16 tmp16; 108 u16 tmp16;
107 109
108 spin_lock_irqsave(&ide_lock, flags); 110 spin_lock_irqsave(&atiixp_lock, flags);
109 111
110 pci_read_config_word(dev, ATIIXP_IDE_UDMA_CONTROL, &tmp16); 112 pci_read_config_word(dev, ATIIXP_IDE_UDMA_CONTROL, &tmp16);
111 if (save_mdma_mode[drive->dn]) 113 if (save_mdma_mode[drive->dn])
@@ -114,7 +116,7 @@ static int atiixp_ide_dma_host_on(ide_drive_t *drive)
114 tmp16 |= (1 << drive->dn); 116 tmp16 |= (1 << drive->dn);
115 pci_write_config_word(dev, ATIIXP_IDE_UDMA_CONTROL, tmp16); 117 pci_write_config_word(dev, ATIIXP_IDE_UDMA_CONTROL, tmp16);
116 118
117 spin_unlock_irqrestore(&ide_lock, flags); 119 spin_unlock_irqrestore(&atiixp_lock, flags);
118 120
119 return __ide_dma_host_on(drive); 121 return __ide_dma_host_on(drive);
120} 122}
@@ -125,13 +127,13 @@ static int atiixp_ide_dma_host_off(ide_drive_t *drive)
125 unsigned long flags; 127 unsigned long flags;
126 u16 tmp16; 128 u16 tmp16;
127 129
128 spin_lock_irqsave(&ide_lock, flags); 130 spin_lock_irqsave(&atiixp_lock, flags);
129 131
130 pci_read_config_word(dev, ATIIXP_IDE_UDMA_CONTROL, &tmp16); 132 pci_read_config_word(dev, ATIIXP_IDE_UDMA_CONTROL, &tmp16);
131 tmp16 &= ~(1 << drive->dn); 133 tmp16 &= ~(1 << drive->dn);
132 pci_write_config_word(dev, ATIIXP_IDE_UDMA_CONTROL, tmp16); 134 pci_write_config_word(dev, ATIIXP_IDE_UDMA_CONTROL, tmp16);
133 135
134 spin_unlock_irqrestore(&ide_lock, flags); 136 spin_unlock_irqrestore(&atiixp_lock, flags);
135 137
136 return __ide_dma_host_off(drive); 138 return __ide_dma_host_off(drive);
137} 139}
@@ -152,7 +154,7 @@ static void atiixp_tuneproc(ide_drive_t *drive, u8 pio)
152 u32 pio_timing_data; 154 u32 pio_timing_data;
153 u16 pio_mode_data; 155 u16 pio_mode_data;
154 156
155 spin_lock_irqsave(&ide_lock, flags); 157 spin_lock_irqsave(&atiixp_lock, flags);
156 158
157 pci_read_config_word(dev, ATIIXP_IDE_PIO_MODE, &pio_mode_data); 159 pci_read_config_word(dev, ATIIXP_IDE_PIO_MODE, &pio_mode_data);
158 pio_mode_data &= ~(0x07 << (drive->dn * 4)); 160 pio_mode_data &= ~(0x07 << (drive->dn * 4));
@@ -165,7 +167,7 @@ static void atiixp_tuneproc(ide_drive_t *drive, u8 pio)
165 (pio_timing[pio].command_width << (timing_shift + 4)); 167 (pio_timing[pio].command_width << (timing_shift + 4));
166 pci_write_config_dword(dev, ATIIXP_IDE_PIO_TIMING, pio_timing_data); 168 pci_write_config_dword(dev, ATIIXP_IDE_PIO_TIMING, pio_timing_data);
167 169
168 spin_unlock_irqrestore(&ide_lock, flags); 170 spin_unlock_irqrestore(&atiixp_lock, flags);
169} 171}
170 172
171/** 173/**
@@ -189,7 +191,7 @@ static int atiixp_speedproc(ide_drive_t *drive, u8 xferspeed)
189 191
190 speed = ide_rate_filter(atiixp_ratemask(drive), xferspeed); 192 speed = ide_rate_filter(atiixp_ratemask(drive), xferspeed);
191 193
192 spin_lock_irqsave(&ide_lock, flags); 194 spin_lock_irqsave(&atiixp_lock, flags);
193 195
194 save_mdma_mode[drive->dn] = 0; 196 save_mdma_mode[drive->dn] = 0;
195 if (speed >= XFER_UDMA_0) { 197 if (speed >= XFER_UDMA_0) {
@@ -208,7 +210,7 @@ static int atiixp_speedproc(ide_drive_t *drive, u8 xferspeed)
208 } 210 }
209 } 211 }
210 212
211 spin_unlock_irqrestore(&ide_lock, flags); 213 spin_unlock_irqrestore(&atiixp_lock, flags);
212 214
213 if (speed >= XFER_SW_DMA_0) 215 if (speed >= XFER_SW_DMA_0)
214 pio = atiixp_dma_2_pio(speed); 216 pio = atiixp_dma_2_pio(speed);
diff --git a/drivers/ide/pci/via82cxxx.c b/drivers/ide/pci/via82cxxx.c
index 61f1a9665a7f..381cc6f101ce 100644
--- a/drivers/ide/pci/via82cxxx.c
+++ b/drivers/ide/pci/via82cxxx.c
@@ -123,7 +123,7 @@ struct via82cxxx_dev
123static void via_set_speed(ide_hwif_t *hwif, u8 dn, struct ide_timing *timing) 123static void via_set_speed(ide_hwif_t *hwif, u8 dn, struct ide_timing *timing)
124{ 124{
125 struct pci_dev *dev = hwif->pci_dev; 125 struct pci_dev *dev = hwif->pci_dev;
126 struct via82cxxx_dev *vdev = ide_get_hwifdata(hwif); 126 struct via82cxxx_dev *vdev = pci_get_drvdata(hwif->pci_dev);
127 u8 t; 127 u8 t;
128 128
129 if (~vdev->via_config->flags & VIA_BAD_AST) { 129 if (~vdev->via_config->flags & VIA_BAD_AST) {
@@ -162,7 +162,7 @@ static void via_set_speed(ide_hwif_t *hwif, u8 dn, struct ide_timing *timing)
162static int via_set_drive(ide_drive_t *drive, u8 speed) 162static int via_set_drive(ide_drive_t *drive, u8 speed)
163{ 163{
164 ide_drive_t *peer = HWIF(drive)->drives + (~drive->dn & 1); 164 ide_drive_t *peer = HWIF(drive)->drives + (~drive->dn & 1);
165 struct via82cxxx_dev *vdev = ide_get_hwifdata(drive->hwif); 165 struct via82cxxx_dev *vdev = pci_get_drvdata(drive->hwif->pci_dev);
166 struct ide_timing t, p; 166 struct ide_timing t, p;
167 unsigned int T, UT; 167 unsigned int T, UT;
168 168
@@ -225,7 +225,7 @@ static void via82cxxx_tune_drive(ide_drive_t *drive, u8 pio)
225static int via82cxxx_ide_dma_check (ide_drive_t *drive) 225static int via82cxxx_ide_dma_check (ide_drive_t *drive)
226{ 226{
227 ide_hwif_t *hwif = HWIF(drive); 227 ide_hwif_t *hwif = HWIF(drive);
228 struct via82cxxx_dev *vdev = ide_get_hwifdata(hwif); 228 struct via82cxxx_dev *vdev = pci_get_drvdata(hwif->pci_dev);
229 u16 w80 = hwif->udma_four; 229 u16 w80 = hwif->udma_four;
230 230
231 u16 speed = ide_find_best_mode(drive, 231 u16 speed = ide_find_best_mode(drive,
@@ -262,6 +262,53 @@ static struct via_isa_bridge *via_config_find(struct pci_dev **isa)
262 return via_config; 262 return via_config;
263} 263}
264 264
265/*
266 * Check and handle 80-wire cable presence
267 */
268static void __devinit via_cable_detect(struct via82cxxx_dev *vdev, u32 u)
269{
270 int i;
271
272 switch (vdev->via_config->flags & VIA_UDMA) {
273 case VIA_UDMA_66:
274 for (i = 24; i >= 0; i -= 8)
275 if (((u >> (i & 16)) & 8) &&
276 ((u >> i) & 0x20) &&
277 (((u >> i) & 7) < 2)) {
278 /*
279 * 2x PCI clock and
280 * UDMA w/ < 3T/cycle
281 */
282 vdev->via_80w |= (1 << (1 - (i >> 4)));
283 }
284 break;
285
286 case VIA_UDMA_100:
287 for (i = 24; i >= 0; i -= 8)
288 if (((u >> i) & 0x10) ||
289 (((u >> i) & 0x20) &&
290 (((u >> i) & 7) < 4))) {
291 /* BIOS 80-wire bit or
292 * UDMA w/ < 60ns/cycle
293 */
294 vdev->via_80w |= (1 << (1 - (i >> 4)));
295 }
296 break;
297
298 case VIA_UDMA_133:
299 for (i = 24; i >= 0; i -= 8)
300 if (((u >> i) & 0x10) ||
301 (((u >> i) & 0x20) &&
302 (((u >> i) & 7) < 6))) {
303 /* BIOS 80-wire bit or
304 * UDMA w/ < 60ns/cycle
305 */
306 vdev->via_80w |= (1 << (1 - (i >> 4)));
307 }
308 break;
309 }
310}
311
265/** 312/**
266 * init_chipset_via82cxxx - initialization handler 313 * init_chipset_via82cxxx - initialization handler
267 * @dev: PCI device 314 * @dev: PCI device
@@ -274,14 +321,22 @@ static struct via_isa_bridge *via_config_find(struct pci_dev **isa)
274static unsigned int __devinit init_chipset_via82cxxx(struct pci_dev *dev, const char *name) 321static unsigned int __devinit init_chipset_via82cxxx(struct pci_dev *dev, const char *name)
275{ 322{
276 struct pci_dev *isa = NULL; 323 struct pci_dev *isa = NULL;
324 struct via82cxxx_dev *vdev;
277 struct via_isa_bridge *via_config; 325 struct via_isa_bridge *via_config;
278 u8 t, v; 326 u8 t, v;
279 unsigned int u; 327 u32 u;
328
329 vdev = kzalloc(sizeof(*vdev), GFP_KERNEL);
330 if (!vdev) {
331 printk(KERN_ERR "VP_IDE: out of memory :(\n");
332 return -ENOMEM;
333 }
334 pci_set_drvdata(dev, vdev);
280 335
281 /* 336 /*
282 * Find the ISA bridge to see how good the IDE is. 337 * Find the ISA bridge to see how good the IDE is.
283 */ 338 */
284 via_config = via_config_find(&isa); 339 vdev->via_config = via_config = via_config_find(&isa);
285 340
286 /* We checked this earlier so if it fails here deeep badness 341 /* We checked this earlier so if it fails here deeep badness
287 is involved */ 342 is involved */
@@ -289,16 +344,17 @@ static unsigned int __devinit init_chipset_via82cxxx(struct pci_dev *dev, const
289 BUG_ON(!via_config->id); 344 BUG_ON(!via_config->id);
290 345
291 /* 346 /*
292 * Setup or disable Clk66 if appropriate 347 * Detect cable and configure Clk66
293 */ 348 */
349 pci_read_config_dword(dev, VIA_UDMA_TIMING, &u);
350
351 via_cable_detect(vdev, u);
294 352
295 if ((via_config->flags & VIA_UDMA) == VIA_UDMA_66) { 353 if ((via_config->flags & VIA_UDMA) == VIA_UDMA_66) {
296 /* Enable Clk66 */ 354 /* Enable Clk66 */
297 pci_read_config_dword(dev, VIA_UDMA_TIMING, &u);
298 pci_write_config_dword(dev, VIA_UDMA_TIMING, u|0x80008); 355 pci_write_config_dword(dev, VIA_UDMA_TIMING, u|0x80008);
299 } else if (via_config->flags & VIA_BAD_CLK66) { 356 } else if (via_config->flags & VIA_BAD_CLK66) {
300 /* Would cause trouble on 596a and 686 */ 357 /* Would cause trouble on 596a and 686 */
301 pci_read_config_dword(dev, VIA_UDMA_TIMING, &u);
302 pci_write_config_dword(dev, VIA_UDMA_TIMING, u & ~0x80008); 358 pci_write_config_dword(dev, VIA_UDMA_TIMING, u & ~0x80008);
303 } 359 }
304 360
@@ -367,75 +423,11 @@ static unsigned int __devinit init_chipset_via82cxxx(struct pci_dev *dev, const
367 return 0; 423 return 0;
368} 424}
369 425
370/*
371 * Check and handle 80-wire cable presence
372 */
373static void __devinit via_cable_detect(struct pci_dev *dev, struct via82cxxx_dev *vdev)
374{
375 unsigned int u;
376 int i;
377 pci_read_config_dword(dev, VIA_UDMA_TIMING, &u);
378
379 switch (vdev->via_config->flags & VIA_UDMA) {
380
381 case VIA_UDMA_66:
382 for (i = 24; i >= 0; i -= 8)
383 if (((u >> (i & 16)) & 8) &&
384 ((u >> i) & 0x20) &&
385 (((u >> i) & 7) < 2)) {
386 /*
387 * 2x PCI clock and
388 * UDMA w/ < 3T/cycle
389 */
390 vdev->via_80w |= (1 << (1 - (i >> 4)));
391 }
392 break;
393
394 case VIA_UDMA_100:
395 for (i = 24; i >= 0; i -= 8)
396 if (((u >> i) & 0x10) ||
397 (((u >> i) & 0x20) &&
398 (((u >> i) & 7) < 4))) {
399 /* BIOS 80-wire bit or
400 * UDMA w/ < 60ns/cycle
401 */
402 vdev->via_80w |= (1 << (1 - (i >> 4)));
403 }
404 break;
405
406 case VIA_UDMA_133:
407 for (i = 24; i >= 0; i -= 8)
408 if (((u >> i) & 0x10) ||
409 (((u >> i) & 0x20) &&
410 (((u >> i) & 7) < 6))) {
411 /* BIOS 80-wire bit or
412 * UDMA w/ < 60ns/cycle
413 */
414 vdev->via_80w |= (1 << (1 - (i >> 4)));
415 }
416 break;
417
418 }
419}
420
421static void __devinit init_hwif_via82cxxx(ide_hwif_t *hwif) 426static void __devinit init_hwif_via82cxxx(ide_hwif_t *hwif)
422{ 427{
423 struct via82cxxx_dev *vdev = kmalloc(sizeof(struct via82cxxx_dev), 428 struct via82cxxx_dev *vdev = pci_get_drvdata(hwif->pci_dev);
424 GFP_KERNEL);
425 struct pci_dev *isa = NULL;
426 int i; 429 int i;
427 430
428 if (vdev == NULL) {
429 printk(KERN_ERR "VP_IDE: out of memory :(\n");
430 return;
431 }
432
433 memset(vdev, 0, sizeof(struct via82cxxx_dev));
434 ide_set_hwifdata(hwif, vdev);
435
436 vdev->via_config = via_config_find(&isa);
437 via_cable_detect(hwif->pci_dev, vdev);
438
439 hwif->autodma = 0; 431 hwif->autodma = 0;
440 432
441 hwif->tuneproc = &via82cxxx_tune_drive; 433 hwif->tuneproc = &via82cxxx_tune_drive;
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c
index 2b5d7ab3adf7..4325aac7733d 100644
--- a/drivers/ieee1394/sbp2.c
+++ b/drivers/ieee1394/sbp2.c
@@ -2020,6 +2020,8 @@ static int sbp2scsi_slave_configure(struct scsi_device *sdev)
2020 blk_queue_dma_alignment(sdev->request_queue, (512 - 1)); 2020 blk_queue_dma_alignment(sdev->request_queue, (512 - 1));
2021 sdev->use_10_for_rw = 1; 2021 sdev->use_10_for_rw = 1;
2022 2022
2023 if (sdev->type == TYPE_ROM)
2024 sdev->use_10_for_ms = 1;
2023 if (sdev->type == TYPE_DISK && 2025 if (sdev->type == TYPE_DISK &&
2024 lu->workarounds & SBP2_WORKAROUND_MODE_SENSE_8) 2026 lu->workarounds & SBP2_WORKAROUND_MODE_SENSE_8)
2025 sdev->skip_ms_page_8 = 1; 2027 sdev->skip_ms_page_8 = 1;
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 533193d4e5df..9e0ab048c878 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -1088,10 +1088,21 @@ static int cma_iw_handler(struct iw_cm_id *iw_id, struct iw_cm_event *iw_event)
1088 *sin = iw_event->local_addr; 1088 *sin = iw_event->local_addr;
1089 sin = (struct sockaddr_in *) &id_priv->id.route.addr.dst_addr; 1089 sin = (struct sockaddr_in *) &id_priv->id.route.addr.dst_addr;
1090 *sin = iw_event->remote_addr; 1090 *sin = iw_event->remote_addr;
1091 if (iw_event->status) 1091 switch (iw_event->status) {
1092 event.event = RDMA_CM_EVENT_REJECTED; 1092 case 0:
1093 else
1094 event.event = RDMA_CM_EVENT_ESTABLISHED; 1093 event.event = RDMA_CM_EVENT_ESTABLISHED;
1094 break;
1095 case -ECONNRESET:
1096 case -ECONNREFUSED:
1097 event.event = RDMA_CM_EVENT_REJECTED;
1098 break;
1099 case -ETIMEDOUT:
1100 event.event = RDMA_CM_EVENT_UNREACHABLE;
1101 break;
1102 default:
1103 event.event = RDMA_CM_EVENT_CONNECT_ERROR;
1104 break;
1105 }
1095 break; 1106 break;
1096 case IW_CM_EVENT_ESTABLISHED: 1107 case IW_CM_EVENT_ESTABLISHED:
1097 event.event = RDMA_CM_EVENT_ESTABLISHED; 1108 event.event = RDMA_CM_EVENT_ESTABLISHED;
diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c
index 81a5cdc5733a..e2e8d329b443 100644
--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -209,10 +209,21 @@ static int ucma_event_handler(struct rdma_cm_id *cm_id,
209 if (event->event == RDMA_CM_EVENT_CONNECT_REQUEST) { 209 if (event->event == RDMA_CM_EVENT_CONNECT_REQUEST) {
210 if (!ctx->backlog) { 210 if (!ctx->backlog) {
211 ret = -EDQUOT; 211 ret = -EDQUOT;
212 kfree(uevent);
212 goto out; 213 goto out;
213 } 214 }
214 ctx->backlog--; 215 ctx->backlog--;
216 } else if (!ctx->uid) {
217 /*
218 * We ignore events for new connections until userspace has set
219 * their context. This can only happen if an error occurs on a
220 * new connection before the user accepts it. This is okay,
221 * since the accept will just fail later.
222 */
223 kfree(uevent);
224 goto out;
215 } 225 }
226
216 list_add_tail(&uevent->list, &ctx->file->event_list); 227 list_add_tail(&uevent->list, &ctx->file->event_list);
217 wake_up_interruptible(&ctx->file->poll_wait); 228 wake_up_interruptible(&ctx->file->poll_wait);
218out: 229out:
diff --git a/drivers/infiniband/hw/ehca/ehca_hca.c b/drivers/infiniband/hw/ehca/ehca_hca.c
index e1b618c5f685..b7be950ab47c 100644
--- a/drivers/infiniband/hw/ehca/ehca_hca.c
+++ b/drivers/infiniband/hw/ehca/ehca_hca.c
@@ -50,7 +50,7 @@ int ehca_query_device(struct ib_device *ibdev, struct ib_device_attr *props)
50 ib_device); 50 ib_device);
51 struct hipz_query_hca *rblock; 51 struct hipz_query_hca *rblock;
52 52
53 rblock = ehca_alloc_fw_ctrlblock(); 53 rblock = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
54 if (!rblock) { 54 if (!rblock) {
55 ehca_err(&shca->ib_device, "Can't allocate rblock memory."); 55 ehca_err(&shca->ib_device, "Can't allocate rblock memory.");
56 return -ENOMEM; 56 return -ENOMEM;
@@ -110,7 +110,7 @@ int ehca_query_port(struct ib_device *ibdev,
110 ib_device); 110 ib_device);
111 struct hipz_query_port *rblock; 111 struct hipz_query_port *rblock;
112 112
113 rblock = ehca_alloc_fw_ctrlblock(); 113 rblock = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
114 if (!rblock) { 114 if (!rblock) {
115 ehca_err(&shca->ib_device, "Can't allocate rblock memory."); 115 ehca_err(&shca->ib_device, "Can't allocate rblock memory.");
116 return -ENOMEM; 116 return -ENOMEM;
@@ -179,7 +179,7 @@ int ehca_query_pkey(struct ib_device *ibdev, u8 port, u16 index, u16 *pkey)
179 return -EINVAL; 179 return -EINVAL;
180 } 180 }
181 181
182 rblock = ehca_alloc_fw_ctrlblock(); 182 rblock = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
183 if (!rblock) { 183 if (!rblock) {
184 ehca_err(&shca->ib_device, "Can't allocate rblock memory."); 184 ehca_err(&shca->ib_device, "Can't allocate rblock memory.");
185 return -ENOMEM; 185 return -ENOMEM;
@@ -212,7 +212,7 @@ int ehca_query_gid(struct ib_device *ibdev, u8 port,
212 return -EINVAL; 212 return -EINVAL;
213 } 213 }
214 214
215 rblock = ehca_alloc_fw_ctrlblock(); 215 rblock = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
216 if (!rblock) { 216 if (!rblock) {
217 ehca_err(&shca->ib_device, "Can't allocate rblock memory."); 217 ehca_err(&shca->ib_device, "Can't allocate rblock memory.");
218 return -ENOMEM; 218 return -ENOMEM;
diff --git a/drivers/infiniband/hw/ehca/ehca_irq.c b/drivers/infiniband/hw/ehca/ehca_irq.c
index c3ea746e9045..e7209afb4250 100644
--- a/drivers/infiniband/hw/ehca/ehca_irq.c
+++ b/drivers/infiniband/hw/ehca/ehca_irq.c
@@ -138,7 +138,7 @@ int ehca_error_data(struct ehca_shca *shca, void *data,
138 u64 *rblock; 138 u64 *rblock;
139 unsigned long block_count; 139 unsigned long block_count;
140 140
141 rblock = ehca_alloc_fw_ctrlblock(); 141 rblock = ehca_alloc_fw_ctrlblock(GFP_ATOMIC);
142 if (!rblock) { 142 if (!rblock) {
143 ehca_err(&shca->ib_device, "Cannot allocate rblock memory."); 143 ehca_err(&shca->ib_device, "Cannot allocate rblock memory.");
144 ret = -ENOMEM; 144 ret = -ENOMEM;
diff --git a/drivers/infiniband/hw/ehca/ehca_iverbs.h b/drivers/infiniband/hw/ehca/ehca_iverbs.h
index 3720e3032cce..cd7789f0d08e 100644
--- a/drivers/infiniband/hw/ehca/ehca_iverbs.h
+++ b/drivers/infiniband/hw/ehca/ehca_iverbs.h
@@ -180,10 +180,10 @@ int ehca_mmap_register(u64 physical,void **mapped,
180int ehca_munmap(unsigned long addr, size_t len); 180int ehca_munmap(unsigned long addr, size_t len);
181 181
182#ifdef CONFIG_PPC_64K_PAGES 182#ifdef CONFIG_PPC_64K_PAGES
183void *ehca_alloc_fw_ctrlblock(void); 183void *ehca_alloc_fw_ctrlblock(gfp_t flags);
184void ehca_free_fw_ctrlblock(void *ptr); 184void ehca_free_fw_ctrlblock(void *ptr);
185#else 185#else
186#define ehca_alloc_fw_ctrlblock() ((void *) get_zeroed_page(GFP_KERNEL)) 186#define ehca_alloc_fw_ctrlblock(flags) ((void *) get_zeroed_page(flags))
187#define ehca_free_fw_ctrlblock(ptr) free_page((unsigned long)(ptr)) 187#define ehca_free_fw_ctrlblock(ptr) free_page((unsigned long)(ptr))
188#endif 188#endif
189 189
diff --git a/drivers/infiniband/hw/ehca/ehca_main.c b/drivers/infiniband/hw/ehca/ehca_main.c
index cc47e4c13a18..6574fbbaead5 100644
--- a/drivers/infiniband/hw/ehca/ehca_main.c
+++ b/drivers/infiniband/hw/ehca/ehca_main.c
@@ -106,9 +106,9 @@ static struct timer_list poll_eqs_timer;
106#ifdef CONFIG_PPC_64K_PAGES 106#ifdef CONFIG_PPC_64K_PAGES
107static struct kmem_cache *ctblk_cache = NULL; 107static struct kmem_cache *ctblk_cache = NULL;
108 108
109void *ehca_alloc_fw_ctrlblock(void) 109void *ehca_alloc_fw_ctrlblock(gfp_t flags)
110{ 110{
111 void *ret = kmem_cache_zalloc(ctblk_cache, GFP_KERNEL); 111 void *ret = kmem_cache_zalloc(ctblk_cache, flags);
112 if (!ret) 112 if (!ret)
113 ehca_gen_err("Out of memory for ctblk"); 113 ehca_gen_err("Out of memory for ctblk");
114 return ret; 114 return ret;
@@ -206,7 +206,7 @@ int ehca_sense_attributes(struct ehca_shca *shca)
206 u64 h_ret; 206 u64 h_ret;
207 struct hipz_query_hca *rblock; 207 struct hipz_query_hca *rblock;
208 208
209 rblock = ehca_alloc_fw_ctrlblock(); 209 rblock = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
210 if (!rblock) { 210 if (!rblock) {
211 ehca_gen_err("Cannot allocate rblock memory."); 211 ehca_gen_err("Cannot allocate rblock memory.");
212 return -ENOMEM; 212 return -ENOMEM;
@@ -258,7 +258,7 @@ static int init_node_guid(struct ehca_shca *shca)
258 int ret = 0; 258 int ret = 0;
259 struct hipz_query_hca *rblock; 259 struct hipz_query_hca *rblock;
260 260
261 rblock = ehca_alloc_fw_ctrlblock(); 261 rblock = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
262 if (!rblock) { 262 if (!rblock) {
263 ehca_err(&shca->ib_device, "Can't allocate rblock memory."); 263 ehca_err(&shca->ib_device, "Can't allocate rblock memory.");
264 return -ENOMEM; 264 return -ENOMEM;
@@ -469,7 +469,7 @@ static ssize_t ehca_show_##name(struct device *dev, \
469 \ 469 \
470 shca = dev->driver_data; \ 470 shca = dev->driver_data; \
471 \ 471 \
472 rblock = ehca_alloc_fw_ctrlblock(); \ 472 rblock = ehca_alloc_fw_ctrlblock(GFP_KERNEL); \
473 if (!rblock) { \ 473 if (!rblock) { \
474 dev_err(dev, "Can't allocate rblock memory."); \ 474 dev_err(dev, "Can't allocate rblock memory."); \
475 return 0; \ 475 return 0; \
diff --git a/drivers/infiniband/hw/ehca/ehca_mrmw.c b/drivers/infiniband/hw/ehca/ehca_mrmw.c
index 0a5e2214cc5f..cfb362a1029c 100644
--- a/drivers/infiniband/hw/ehca/ehca_mrmw.c
+++ b/drivers/infiniband/hw/ehca/ehca_mrmw.c
@@ -1013,7 +1013,7 @@ int ehca_reg_mr_rpages(struct ehca_shca *shca,
1013 u32 i; 1013 u32 i;
1014 u64 *kpage; 1014 u64 *kpage;
1015 1015
1016 kpage = ehca_alloc_fw_ctrlblock(); 1016 kpage = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
1017 if (!kpage) { 1017 if (!kpage) {
1018 ehca_err(&shca->ib_device, "kpage alloc failed"); 1018 ehca_err(&shca->ib_device, "kpage alloc failed");
1019 ret = -ENOMEM; 1019 ret = -ENOMEM;
@@ -1124,7 +1124,7 @@ inline int ehca_rereg_mr_rereg1(struct ehca_shca *shca,
1124 ehca_mrmw_map_acl(acl, &hipz_acl); 1124 ehca_mrmw_map_acl(acl, &hipz_acl);
1125 ehca_mrmw_set_pgsize_hipz_acl(&hipz_acl); 1125 ehca_mrmw_set_pgsize_hipz_acl(&hipz_acl);
1126 1126
1127 kpage = ehca_alloc_fw_ctrlblock(); 1127 kpage = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
1128 if (!kpage) { 1128 if (!kpage) {
1129 ehca_err(&shca->ib_device, "kpage alloc failed"); 1129 ehca_err(&shca->ib_device, "kpage alloc failed");
1130 ret = -ENOMEM; 1130 ret = -ENOMEM;
diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index c6c9cef203e3..34b85556d01e 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -807,7 +807,7 @@ static int internal_modify_qp(struct ib_qp *ibqp,
807 unsigned long spl_flags = 0; 807 unsigned long spl_flags = 0;
808 808
809 /* do query_qp to obtain current attr values */ 809 /* do query_qp to obtain current attr values */
810 mqpcb = ehca_alloc_fw_ctrlblock(); 810 mqpcb = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
811 if (!mqpcb) { 811 if (!mqpcb) {
812 ehca_err(ibqp->device, "Could not get zeroed page for mqpcb " 812 ehca_err(ibqp->device, "Could not get zeroed page for mqpcb "
813 "ehca_qp=%p qp_num=%x ", my_qp, ibqp->qp_num); 813 "ehca_qp=%p qp_num=%x ", my_qp, ibqp->qp_num);
@@ -1273,7 +1273,7 @@ int ehca_query_qp(struct ib_qp *qp,
1273 return -EINVAL; 1273 return -EINVAL;
1274 } 1274 }
1275 1275
1276 qpcb = ehca_alloc_fw_ctrlblock(); 1276 qpcb = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
1277 if (!qpcb) { 1277 if (!qpcb) {
1278 ehca_err(qp->device,"Out of memory for qpcb " 1278 ehca_err(qp->device,"Out of memory for qpcb "
1279 "ehca_qp=%p qp_num=%x", my_qp, qp->qp_num); 1279 "ehca_qp=%p qp_num=%x", my_qp, qp->qp_num);
diff --git a/drivers/infiniband/hw/mthca/mthca_cq.c b/drivers/infiniband/hw/mthca/mthca_cq.c
index 283d50b76c3d..1159c8a0f2c5 100644
--- a/drivers/infiniband/hw/mthca/mthca_cq.c
+++ b/drivers/infiniband/hw/mthca/mthca_cq.c
@@ -54,6 +54,10 @@ enum {
54 MTHCA_CQ_ENTRY_SIZE = 0x20 54 MTHCA_CQ_ENTRY_SIZE = 0x20
55}; 55};
56 56
57enum {
58 MTHCA_ATOMIC_BYTE_LEN = 8
59};
60
57/* 61/*
58 * Must be packed because start is 64 bits but only aligned to 32 bits. 62 * Must be packed because start is 64 bits but only aligned to 32 bits.
59 */ 63 */
@@ -599,11 +603,11 @@ static inline int mthca_poll_one(struct mthca_dev *dev,
599 break; 603 break;
600 case MTHCA_OPCODE_ATOMIC_CS: 604 case MTHCA_OPCODE_ATOMIC_CS:
601 entry->opcode = IB_WC_COMP_SWAP; 605 entry->opcode = IB_WC_COMP_SWAP;
602 entry->byte_len = be32_to_cpu(cqe->byte_cnt); 606 entry->byte_len = MTHCA_ATOMIC_BYTE_LEN;
603 break; 607 break;
604 case MTHCA_OPCODE_ATOMIC_FA: 608 case MTHCA_OPCODE_ATOMIC_FA:
605 entry->opcode = IB_WC_FETCH_ADD; 609 entry->opcode = IB_WC_FETCH_ADD;
606 entry->byte_len = be32_to_cpu(cqe->byte_cnt); 610 entry->byte_len = MTHCA_ATOMIC_BYTE_LEN;
607 break; 611 break;
608 case MTHCA_OPCODE_BIND_MW: 612 case MTHCA_OPCODE_BIND_MW:
609 entry->opcode = IB_WC_BIND_MW; 613 entry->opcode = IB_WC_BIND_MW;
diff --git a/drivers/infiniband/hw/mthca/mthca_memfree.c b/drivers/infiniband/hw/mthca/mthca_memfree.c
index 15cc2f6eb475..6b19645d946c 100644
--- a/drivers/infiniband/hw/mthca/mthca_memfree.c
+++ b/drivers/infiniband/hw/mthca/mthca_memfree.c
@@ -232,7 +232,7 @@ void *mthca_table_find(struct mthca_icm_table *table, int obj)
232 232
233 list_for_each_entry(chunk, &icm->chunk_list, list) { 233 list_for_each_entry(chunk, &icm->chunk_list, list) {
234 for (i = 0; i < chunk->npages; ++i) { 234 for (i = 0; i < chunk->npages; ++i) {
235 if (chunk->mem[i].length >= offset) { 235 if (chunk->mem[i].length > offset) {
236 page = chunk->mem[i].page; 236 page = chunk->mem[i].page;
237 goto out; 237 goto out;
238 } 238 }
diff --git a/drivers/infiniband/hw/mthca/mthca_qp.c b/drivers/infiniband/hw/mthca/mthca_qp.c
index d844a2569b47..5f5214c0337d 100644
--- a/drivers/infiniband/hw/mthca/mthca_qp.c
+++ b/drivers/infiniband/hw/mthca/mthca_qp.c
@@ -429,13 +429,18 @@ int mthca_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, int qp_attr_m
429{ 429{
430 struct mthca_dev *dev = to_mdev(ibqp->device); 430 struct mthca_dev *dev = to_mdev(ibqp->device);
431 struct mthca_qp *qp = to_mqp(ibqp); 431 struct mthca_qp *qp = to_mqp(ibqp);
432 int err; 432 int err = 0;
433 struct mthca_mailbox *mailbox; 433 struct mthca_mailbox *mailbox = NULL;
434 struct mthca_qp_param *qp_param; 434 struct mthca_qp_param *qp_param;
435 struct mthca_qp_context *context; 435 struct mthca_qp_context *context;
436 int mthca_state; 436 int mthca_state;
437 u8 status; 437 u8 status;
438 438
439 if (qp->state == IB_QPS_RESET) {
440 qp_attr->qp_state = IB_QPS_RESET;
441 goto done;
442 }
443
439 mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL); 444 mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL);
440 if (IS_ERR(mailbox)) 445 if (IS_ERR(mailbox))
441 return PTR_ERR(mailbox); 446 return PTR_ERR(mailbox);
@@ -454,7 +459,6 @@ int mthca_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, int qp_attr_m
454 mthca_state = be32_to_cpu(context->flags) >> 28; 459 mthca_state = be32_to_cpu(context->flags) >> 28;
455 460
456 qp_attr->qp_state = to_ib_qp_state(mthca_state); 461 qp_attr->qp_state = to_ib_qp_state(mthca_state);
457 qp_attr->cur_qp_state = qp_attr->qp_state;
458 qp_attr->path_mtu = context->mtu_msgmax >> 5; 462 qp_attr->path_mtu = context->mtu_msgmax >> 5;
459 qp_attr->path_mig_state = 463 qp_attr->path_mig_state =
460 to_ib_mig_state((be32_to_cpu(context->flags) >> 11) & 0x3); 464 to_ib_mig_state((be32_to_cpu(context->flags) >> 11) & 0x3);
@@ -464,11 +468,6 @@ int mthca_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, int qp_attr_m
464 qp_attr->dest_qp_num = be32_to_cpu(context->remote_qpn) & 0xffffff; 468 qp_attr->dest_qp_num = be32_to_cpu(context->remote_qpn) & 0xffffff;
465 qp_attr->qp_access_flags = 469 qp_attr->qp_access_flags =
466 to_ib_qp_access_flags(be32_to_cpu(context->params2)); 470 to_ib_qp_access_flags(be32_to_cpu(context->params2));
467 qp_attr->cap.max_send_wr = qp->sq.max;
468 qp_attr->cap.max_recv_wr = qp->rq.max;
469 qp_attr->cap.max_send_sge = qp->sq.max_gs;
470 qp_attr->cap.max_recv_sge = qp->rq.max_gs;
471 qp_attr->cap.max_inline_data = qp->max_inline_data;
472 471
473 if (qp->transport == RC || qp->transport == UC) { 472 if (qp->transport == RC || qp->transport == UC) {
474 to_ib_ah_attr(dev, &qp_attr->ah_attr, &context->pri_path); 473 to_ib_ah_attr(dev, &qp_attr->ah_attr, &context->pri_path);
@@ -495,7 +494,16 @@ int mthca_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, int qp_attr_m
495 qp_attr->retry_cnt = (be32_to_cpu(context->params1) >> 16) & 0x7; 494 qp_attr->retry_cnt = (be32_to_cpu(context->params1) >> 16) & 0x7;
496 qp_attr->rnr_retry = context->pri_path.rnr_retry >> 5; 495 qp_attr->rnr_retry = context->pri_path.rnr_retry >> 5;
497 qp_attr->alt_timeout = context->alt_path.ackto >> 3; 496 qp_attr->alt_timeout = context->alt_path.ackto >> 3;
498 qp_init_attr->cap = qp_attr->cap; 497
498done:
499 qp_attr->cur_qp_state = qp_attr->qp_state;
500 qp_attr->cap.max_send_wr = qp->sq.max;
501 qp_attr->cap.max_recv_wr = qp->rq.max;
502 qp_attr->cap.max_send_sge = qp->sq.max_gs;
503 qp_attr->cap.max_recv_sge = qp->rq.max_gs;
504 qp_attr->cap.max_inline_data = qp->max_inline_data;
505
506 qp_init_attr->cap = qp_attr->cap;
499 507
500out: 508out:
501 mthca_free_mailbox(dev, mailbox); 509 mthca_free_mailbox(dev, mailbox);
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c
index 9b2041e25d59..dd221eda3ea6 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
@@ -177,7 +177,7 @@ iscsi_iser_mtask_xmit(struct iscsi_conn *conn,
177 * - if yes, the mtask is recycled at iscsi_complete_pdu 177 * - if yes, the mtask is recycled at iscsi_complete_pdu
178 * - if no, the mtask is recycled at iser_snd_completion 178 * - if no, the mtask is recycled at iser_snd_completion
179 */ 179 */
180 if (error && error != -EAGAIN) 180 if (error && error != -ENOBUFS)
181 iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED); 181 iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED);
182 182
183 return error; 183 return error;
@@ -241,7 +241,7 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
241 error = iscsi_iser_ctask_xmit_unsol_data(conn, ctask); 241 error = iscsi_iser_ctask_xmit_unsol_data(conn, ctask);
242 242
243 iscsi_iser_ctask_xmit_exit: 243 iscsi_iser_ctask_xmit_exit:
244 if (error && error != -EAGAIN) 244 if (error && error != -ENOBUFS)
245 iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED); 245 iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED);
246 return error; 246 return error;
247} 247}
diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c b/drivers/infiniband/ulp/iser/iser_initiator.c
index e73c87b9be43..0a7d1ab60e6d 100644
--- a/drivers/infiniband/ulp/iser/iser_initiator.c
+++ b/drivers/infiniband/ulp/iser/iser_initiator.c
@@ -304,18 +304,14 @@ int iser_conn_set_full_featured_mode(struct iscsi_conn *conn)
304static int 304static int
305iser_check_xmit(struct iscsi_conn *conn, void *task) 305iser_check_xmit(struct iscsi_conn *conn, void *task)
306{ 306{
307 int rc = 0;
308 struct iscsi_iser_conn *iser_conn = conn->dd_data; 307 struct iscsi_iser_conn *iser_conn = conn->dd_data;
309 308
310 write_lock_bh(conn->recv_lock);
311 if (atomic_read(&iser_conn->ib_conn->post_send_buf_count) == 309 if (atomic_read(&iser_conn->ib_conn->post_send_buf_count) ==
312 ISER_QP_MAX_REQ_DTOS) { 310 ISER_QP_MAX_REQ_DTOS) {
313 iser_dbg("%ld can't xmit task %p, suspending tx\n",jiffies,task); 311 iser_dbg("%ld can't xmit task %p\n",jiffies,task);
314 set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx); 312 return -ENOBUFS;
315 rc = -EAGAIN;
316 } 313 }
317 write_unlock_bh(conn->recv_lock); 314 return 0;
318 return rc;
319} 315}
320 316
321 317
@@ -340,7 +336,7 @@ int iser_send_command(struct iscsi_conn *conn,
340 return -EPERM; 336 return -EPERM;
341 } 337 }
342 if (iser_check_xmit(conn, ctask)) 338 if (iser_check_xmit(conn, ctask))
343 return -EAGAIN; 339 return -ENOBUFS;
344 340
345 edtl = ntohl(hdr->data_length); 341 edtl = ntohl(hdr->data_length);
346 342
@@ -426,7 +422,7 @@ int iser_send_data_out(struct iscsi_conn *conn,
426 } 422 }
427 423
428 if (iser_check_xmit(conn, ctask)) 424 if (iser_check_xmit(conn, ctask))
429 return -EAGAIN; 425 return -ENOBUFS;
430 426
431 itt = ntohl(hdr->itt); 427 itt = ntohl(hdr->itt);
432 data_seg_len = ntoh24(hdr->dlength); 428 data_seg_len = ntoh24(hdr->dlength);
@@ -498,7 +494,7 @@ int iser_send_control(struct iscsi_conn *conn,
498 } 494 }
499 495
500 if (iser_check_xmit(conn,mtask)) 496 if (iser_check_xmit(conn,mtask))
501 return -EAGAIN; 497 return -ENOBUFS;
502 498
503 /* build the tx desc regd header and add it to the tx desc dto */ 499 /* build the tx desc regd header and add it to the tx desc dto */
504 mdesc->type = ISCSI_TX_CONTROL; 500 mdesc->type = ISCSI_TX_CONTROL;
@@ -605,6 +601,7 @@ void iser_snd_completion(struct iser_desc *tx_desc)
605 struct iscsi_iser_conn *iser_conn = ib_conn->iser_conn; 601 struct iscsi_iser_conn *iser_conn = ib_conn->iser_conn;
606 struct iscsi_conn *conn = iser_conn->iscsi_conn; 602 struct iscsi_conn *conn = iser_conn->iscsi_conn;
607 struct iscsi_mgmt_task *mtask; 603 struct iscsi_mgmt_task *mtask;
604 int resume_tx = 0;
608 605
609 iser_dbg("Initiator, Data sent dto=0x%p\n", dto); 606 iser_dbg("Initiator, Data sent dto=0x%p\n", dto);
610 607
@@ -613,15 +610,16 @@ void iser_snd_completion(struct iser_desc *tx_desc)
613 if (tx_desc->type == ISCSI_TX_DATAOUT) 610 if (tx_desc->type == ISCSI_TX_DATAOUT)
614 kmem_cache_free(ig.desc_cache, tx_desc); 611 kmem_cache_free(ig.desc_cache, tx_desc);
615 612
613 if (atomic_read(&iser_conn->ib_conn->post_send_buf_count) ==
614 ISER_QP_MAX_REQ_DTOS)
615 resume_tx = 1;
616
616 atomic_dec(&ib_conn->post_send_buf_count); 617 atomic_dec(&ib_conn->post_send_buf_count);
617 618
618 write_lock(conn->recv_lock); 619 if (resume_tx) {
619 if (conn->suspend_tx) {
620 iser_dbg("%ld resuming tx\n",jiffies); 620 iser_dbg("%ld resuming tx\n",jiffies);
621 clear_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx);
622 scsi_queue_work(conn->session->host, &conn->xmitwork); 621 scsi_queue_work(conn->session->host, &conn->xmitwork);
623 } 622 }
624 write_unlock(conn->recv_lock);
625 623
626 if (tx_desc->type == ISCSI_TX_CONTROL) { 624 if (tx_desc->type == ISCSI_TX_CONTROL) {
627 /* this arithmetic is legal by libiscsi dd_data allocation */ 625 /* this arithmetic is legal by libiscsi dd_data allocation */
diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
index 100df6f38d92..91e0c75aca8f 100644
--- a/drivers/kvm/kvm.h
+++ b/drivers/kvm/kvm.h
@@ -52,6 +52,8 @@
52#define KVM_MAX_VCPUS 1 52#define KVM_MAX_VCPUS 1
53#define KVM_MEMORY_SLOTS 4 53#define KVM_MEMORY_SLOTS 4
54#define KVM_NUM_MMU_PAGES 256 54#define KVM_NUM_MMU_PAGES 256
55#define KVM_MIN_FREE_MMU_PAGES 5
56#define KVM_REFILL_PAGES 25
55 57
56#define FX_IMAGE_SIZE 512 58#define FX_IMAGE_SIZE 512
57#define FX_IMAGE_ALIGN 16 59#define FX_IMAGE_ALIGN 16
@@ -89,14 +91,54 @@ typedef unsigned long hva_t;
89typedef u64 hpa_t; 91typedef u64 hpa_t;
90typedef unsigned long hfn_t; 92typedef unsigned long hfn_t;
91 93
94#define NR_PTE_CHAIN_ENTRIES 5
95
96struct kvm_pte_chain {
97 u64 *parent_ptes[NR_PTE_CHAIN_ENTRIES];
98 struct hlist_node link;
99};
100
101/*
102 * kvm_mmu_page_role, below, is defined as:
103 *
104 * bits 0:3 - total guest paging levels (2-4, or zero for real mode)
105 * bits 4:7 - page table level for this shadow (1-4)
106 * bits 8:9 - page table quadrant for 2-level guests
107 * bit 16 - "metaphysical" - gfn is not a real page (huge page/real mode)
108 */
109union kvm_mmu_page_role {
110 unsigned word;
111 struct {
112 unsigned glevels : 4;
113 unsigned level : 4;
114 unsigned quadrant : 2;
115 unsigned pad_for_nice_hex_output : 6;
116 unsigned metaphysical : 1;
117 };
118};
119
92struct kvm_mmu_page { 120struct kvm_mmu_page {
93 struct list_head link; 121 struct list_head link;
122 struct hlist_node hash_link;
123
124 /*
125 * The following two entries are used to key the shadow page in the
126 * hash table.
127 */
128 gfn_t gfn;
129 union kvm_mmu_page_role role;
130
94 hpa_t page_hpa; 131 hpa_t page_hpa;
95 unsigned long slot_bitmap; /* One bit set per slot which has memory 132 unsigned long slot_bitmap; /* One bit set per slot which has memory
96 * in this shadow page. 133 * in this shadow page.
97 */ 134 */
98 int global; /* Set if all ptes in this page are global */ 135 int global; /* Set if all ptes in this page are global */
99 u64 *parent_pte; 136 int multimapped; /* More than one parent_pte? */
137 int root_count; /* Currently serving as active root */
138 union {
139 u64 *parent_pte; /* !multimapped */
140 struct hlist_head parent_ptes; /* multimapped, kvm_pte_chain */
141 };
100}; 142};
101 143
102struct vmcs { 144struct vmcs {
@@ -117,14 +159,26 @@ struct kvm_vcpu;
117struct kvm_mmu { 159struct kvm_mmu {
118 void (*new_cr3)(struct kvm_vcpu *vcpu); 160 void (*new_cr3)(struct kvm_vcpu *vcpu);
119 int (*page_fault)(struct kvm_vcpu *vcpu, gva_t gva, u32 err); 161 int (*page_fault)(struct kvm_vcpu *vcpu, gva_t gva, u32 err);
120 void (*inval_page)(struct kvm_vcpu *vcpu, gva_t gva);
121 void (*free)(struct kvm_vcpu *vcpu); 162 void (*free)(struct kvm_vcpu *vcpu);
122 gpa_t (*gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t gva); 163 gpa_t (*gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t gva);
123 hpa_t root_hpa; 164 hpa_t root_hpa;
124 int root_level; 165 int root_level;
125 int shadow_root_level; 166 int shadow_root_level;
167
168 u64 *pae_root;
169};
170
171#define KVM_NR_MEM_OBJS 20
172
173struct kvm_mmu_memory_cache {
174 int nobjs;
175 void *objects[KVM_NR_MEM_OBJS];
126}; 176};
127 177
178/*
179 * We don't want allocation failures within the mmu code, so we preallocate
180 * enough memory for a single page fault in a cache.
181 */
128struct kvm_guest_debug { 182struct kvm_guest_debug {
129 int enabled; 183 int enabled;
130 unsigned long bp[4]; 184 unsigned long bp[4];
@@ -173,6 +227,7 @@ struct kvm_vcpu {
173 struct mutex mutex; 227 struct mutex mutex;
174 int cpu; 228 int cpu;
175 int launched; 229 int launched;
230 int interrupt_window_open;
176 unsigned long irq_summary; /* bit vector: 1 per word in irq_pending */ 231 unsigned long irq_summary; /* bit vector: 1 per word in irq_pending */
177#define NR_IRQ_WORDS KVM_IRQ_BITMAP_SIZE(unsigned long) 232#define NR_IRQ_WORDS KVM_IRQ_BITMAP_SIZE(unsigned long)
178 unsigned long irq_pending[NR_IRQ_WORDS]; 233 unsigned long irq_pending[NR_IRQ_WORDS];
@@ -184,6 +239,7 @@ struct kvm_vcpu {
184 unsigned long cr3; 239 unsigned long cr3;
185 unsigned long cr4; 240 unsigned long cr4;
186 unsigned long cr8; 241 unsigned long cr8;
242 u64 pdptrs[4]; /* pae */
187 u64 shadow_efer; 243 u64 shadow_efer;
188 u64 apic_base; 244 u64 apic_base;
189 int nmsrs; 245 int nmsrs;
@@ -194,6 +250,12 @@ struct kvm_vcpu {
194 struct kvm_mmu_page page_header_buf[KVM_NUM_MMU_PAGES]; 250 struct kvm_mmu_page page_header_buf[KVM_NUM_MMU_PAGES];
195 struct kvm_mmu mmu; 251 struct kvm_mmu mmu;
196 252
253 struct kvm_mmu_memory_cache mmu_pte_chain_cache;
254 struct kvm_mmu_memory_cache mmu_rmap_desc_cache;
255
256 gfn_t last_pt_write_gfn;
257 int last_pt_write_count;
258
197 struct kvm_guest_debug guest_debug; 259 struct kvm_guest_debug guest_debug;
198 260
199 char fx_buf[FX_BUF_SIZE]; 261 char fx_buf[FX_BUF_SIZE];
@@ -231,10 +293,16 @@ struct kvm {
231 spinlock_t lock; /* protects everything except vcpus */ 293 spinlock_t lock; /* protects everything except vcpus */
232 int nmemslots; 294 int nmemslots;
233 struct kvm_memory_slot memslots[KVM_MEMORY_SLOTS]; 295 struct kvm_memory_slot memslots[KVM_MEMORY_SLOTS];
296 /*
297 * Hash table of struct kvm_mmu_page.
298 */
234 struct list_head active_mmu_pages; 299 struct list_head active_mmu_pages;
300 int n_free_mmu_pages;
301 struct hlist_head mmu_page_hash[KVM_NUM_MMU_PAGES];
235 struct kvm_vcpu vcpus[KVM_MAX_VCPUS]; 302 struct kvm_vcpu vcpus[KVM_MAX_VCPUS];
236 int memory_config_version; 303 int memory_config_version;
237 int busy; 304 int busy;
305 unsigned long rmap_overflow;
238}; 306};
239 307
240struct kvm_stat { 308struct kvm_stat {
@@ -247,6 +315,9 @@ struct kvm_stat {
247 u32 io_exits; 315 u32 io_exits;
248 u32 mmio_exits; 316 u32 mmio_exits;
249 u32 signal_exits; 317 u32 signal_exits;
318 u32 irq_window_exits;
319 u32 halt_exits;
320 u32 request_irq_exits;
250 u32 irq_exits; 321 u32 irq_exits;
251}; 322};
252 323
@@ -279,6 +350,7 @@ struct kvm_arch_ops {
279 void (*set_segment)(struct kvm_vcpu *vcpu, 350 void (*set_segment)(struct kvm_vcpu *vcpu,
280 struct kvm_segment *var, int seg); 351 struct kvm_segment *var, int seg);
281 void (*get_cs_db_l_bits)(struct kvm_vcpu *vcpu, int *db, int *l); 352 void (*get_cs_db_l_bits)(struct kvm_vcpu *vcpu, int *db, int *l);
353 void (*decache_cr0_cr4_guest_bits)(struct kvm_vcpu *vcpu);
282 void (*set_cr0)(struct kvm_vcpu *vcpu, unsigned long cr0); 354 void (*set_cr0)(struct kvm_vcpu *vcpu, unsigned long cr0);
283 void (*set_cr0_no_modeswitch)(struct kvm_vcpu *vcpu, 355 void (*set_cr0_no_modeswitch)(struct kvm_vcpu *vcpu,
284 unsigned long cr0); 356 unsigned long cr0);
@@ -323,7 +395,7 @@ int kvm_mmu_create(struct kvm_vcpu *vcpu);
323int kvm_mmu_setup(struct kvm_vcpu *vcpu); 395int kvm_mmu_setup(struct kvm_vcpu *vcpu);
324 396
325int kvm_mmu_reset_context(struct kvm_vcpu *vcpu); 397int kvm_mmu_reset_context(struct kvm_vcpu *vcpu);
326void kvm_mmu_slot_remove_write_access(struct kvm *kvm, int slot); 398void kvm_mmu_slot_remove_write_access(struct kvm_vcpu *vcpu, int slot);
327 399
328hpa_t gpa_to_hpa(struct kvm_vcpu *vcpu, gpa_t gpa); 400hpa_t gpa_to_hpa(struct kvm_vcpu *vcpu, gpa_t gpa);
329#define HPA_MSB ((sizeof(hpa_t) * 8) - 1) 401#define HPA_MSB ((sizeof(hpa_t) * 8) - 1)
@@ -396,6 +468,19 @@ int kvm_write_guest(struct kvm_vcpu *vcpu,
396 468
397unsigned long segment_base(u16 selector); 469unsigned long segment_base(u16 selector);
398 470
471void kvm_mmu_pre_write(struct kvm_vcpu *vcpu, gpa_t gpa, int bytes);
472void kvm_mmu_post_write(struct kvm_vcpu *vcpu, gpa_t gpa, int bytes);
473int kvm_mmu_unprotect_page_virt(struct kvm_vcpu *vcpu, gva_t gva);
474void kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu);
475
476static inline int kvm_mmu_page_fault(struct kvm_vcpu *vcpu, gva_t gva,
477 u32 error_code)
478{
479 if (unlikely(vcpu->kvm->n_free_mmu_pages < KVM_MIN_FREE_MMU_PAGES))
480 kvm_mmu_free_some_pages(vcpu);
481 return vcpu->mmu.page_fault(vcpu, gva, error_code);
482}
483
399static inline struct page *_gfn_to_page(struct kvm *kvm, gfn_t gfn) 484static inline struct page *_gfn_to_page(struct kvm *kvm, gfn_t gfn)
400{ 485{
401 struct kvm_memory_slot *slot = gfn_to_memslot(kvm, gfn); 486 struct kvm_memory_slot *slot = gfn_to_memslot(kvm, gfn);
@@ -541,19 +626,4 @@ static inline u32 get_rdx_init_val(void)
541#define TSS_REDIRECTION_SIZE (256 / 8) 626#define TSS_REDIRECTION_SIZE (256 / 8)
542#define RMODE_TSS_SIZE (TSS_BASE_SIZE + TSS_REDIRECTION_SIZE + TSS_IOPB_SIZE + 1) 627#define RMODE_TSS_SIZE (TSS_BASE_SIZE + TSS_REDIRECTION_SIZE + TSS_IOPB_SIZE + 1)
543 628
544#ifdef CONFIG_X86_64
545
546/*
547 * When emulating 32-bit mode, cr3 is only 32 bits even on x86_64. Therefore
548 * we need to allocate shadow page tables in the first 4GB of memory, which
549 * happens to fit the DMA32 zone.
550 */
551#define GFP_KVM_MMU (GFP_KERNEL | __GFP_DMA32)
552
553#else
554
555#define GFP_KVM_MMU GFP_KERNEL
556
557#endif
558
559#endif 629#endif
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index ce7fe640f18d..67c1154960f0 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -58,6 +58,9 @@ static struct kvm_stats_debugfs_item {
58 { "io_exits", &kvm_stat.io_exits }, 58 { "io_exits", &kvm_stat.io_exits },
59 { "mmio_exits", &kvm_stat.mmio_exits }, 59 { "mmio_exits", &kvm_stat.mmio_exits },
60 { "signal_exits", &kvm_stat.signal_exits }, 60 { "signal_exits", &kvm_stat.signal_exits },
61 { "irq_window", &kvm_stat.irq_window_exits },
62 { "halt_exits", &kvm_stat.halt_exits },
63 { "request_irq", &kvm_stat.request_irq_exits },
61 { "irq_exits", &kvm_stat.irq_exits }, 64 { "irq_exits", &kvm_stat.irq_exits },
62 { 0, 0 } 65 { 0, 0 }
63}; 66};
@@ -227,6 +230,7 @@ static int kvm_dev_open(struct inode *inode, struct file *filp)
227 struct kvm_vcpu *vcpu = &kvm->vcpus[i]; 230 struct kvm_vcpu *vcpu = &kvm->vcpus[i];
228 231
229 mutex_init(&vcpu->mutex); 232 mutex_init(&vcpu->mutex);
233 vcpu->kvm = kvm;
230 vcpu->mmu.root_hpa = INVALID_PAGE; 234 vcpu->mmu.root_hpa = INVALID_PAGE;
231 INIT_LIST_HEAD(&vcpu->free_pages); 235 INIT_LIST_HEAD(&vcpu->free_pages);
232 } 236 }
@@ -268,8 +272,8 @@ static void kvm_free_physmem(struct kvm *kvm)
268 272
269static void kvm_free_vcpu(struct kvm_vcpu *vcpu) 273static void kvm_free_vcpu(struct kvm_vcpu *vcpu)
270{ 274{
271 kvm_arch_ops->vcpu_free(vcpu);
272 kvm_mmu_destroy(vcpu); 275 kvm_mmu_destroy(vcpu);
276 kvm_arch_ops->vcpu_free(vcpu);
273} 277}
274 278
275static void kvm_free_vcpus(struct kvm *kvm) 279static void kvm_free_vcpus(struct kvm *kvm)
@@ -295,14 +299,17 @@ static void inject_gp(struct kvm_vcpu *vcpu)
295 kvm_arch_ops->inject_gp(vcpu, 0); 299 kvm_arch_ops->inject_gp(vcpu, 0);
296} 300}
297 301
298static int pdptrs_have_reserved_bits_set(struct kvm_vcpu *vcpu, 302/*
299 unsigned long cr3) 303 * Load the pae pdptrs. Return true is they are all valid.
304 */
305static int load_pdptrs(struct kvm_vcpu *vcpu, unsigned long cr3)
300{ 306{
301 gfn_t pdpt_gfn = cr3 >> PAGE_SHIFT; 307 gfn_t pdpt_gfn = cr3 >> PAGE_SHIFT;
302 unsigned offset = (cr3 & (PAGE_SIZE-1)) >> 5; 308 unsigned offset = ((cr3 & (PAGE_SIZE-1)) >> 5) << 2;
303 int i; 309 int i;
304 u64 pdpte; 310 u64 pdpte;
305 u64 *pdpt; 311 u64 *pdpt;
312 int ret;
306 struct kvm_memory_slot *memslot; 313 struct kvm_memory_slot *memslot;
307 314
308 spin_lock(&vcpu->kvm->lock); 315 spin_lock(&vcpu->kvm->lock);
@@ -310,16 +317,23 @@ static int pdptrs_have_reserved_bits_set(struct kvm_vcpu *vcpu,
310 /* FIXME: !memslot - emulate? 0xff? */ 317 /* FIXME: !memslot - emulate? 0xff? */
311 pdpt = kmap_atomic(gfn_to_page(memslot, pdpt_gfn), KM_USER0); 318 pdpt = kmap_atomic(gfn_to_page(memslot, pdpt_gfn), KM_USER0);
312 319
320 ret = 1;
313 for (i = 0; i < 4; ++i) { 321 for (i = 0; i < 4; ++i) {
314 pdpte = pdpt[offset + i]; 322 pdpte = pdpt[offset + i];
315 if ((pdpte & 1) && (pdpte & 0xfffffff0000001e6ull)) 323 if ((pdpte & 1) && (pdpte & 0xfffffff0000001e6ull)) {
316 break; 324 ret = 0;
325 goto out;
326 }
317 } 327 }
318 328
329 for (i = 0; i < 4; ++i)
330 vcpu->pdptrs[i] = pdpt[offset + i];
331
332out:
319 kunmap_atomic(pdpt, KM_USER0); 333 kunmap_atomic(pdpt, KM_USER0);
320 spin_unlock(&vcpu->kvm->lock); 334 spin_unlock(&vcpu->kvm->lock);
321 335
322 return i != 4; 336 return ret;
323} 337}
324 338
325void set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0) 339void set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
@@ -365,8 +379,7 @@ void set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
365 } 379 }
366 } else 380 } else
367#endif 381#endif
368 if (is_pae(vcpu) && 382 if (is_pae(vcpu) && !load_pdptrs(vcpu, vcpu->cr3)) {
369 pdptrs_have_reserved_bits_set(vcpu, vcpu->cr3)) {
370 printk(KERN_DEBUG "set_cr0: #GP, pdptrs " 383 printk(KERN_DEBUG "set_cr0: #GP, pdptrs "
371 "reserved bits\n"); 384 "reserved bits\n");
372 inject_gp(vcpu); 385 inject_gp(vcpu);
@@ -387,6 +400,7 @@ EXPORT_SYMBOL_GPL(set_cr0);
387 400
388void lmsw(struct kvm_vcpu *vcpu, unsigned long msw) 401void lmsw(struct kvm_vcpu *vcpu, unsigned long msw)
389{ 402{
403 kvm_arch_ops->decache_cr0_cr4_guest_bits(vcpu);
390 set_cr0(vcpu, (vcpu->cr0 & ~0x0ful) | (msw & 0x0f)); 404 set_cr0(vcpu, (vcpu->cr0 & ~0x0ful) | (msw & 0x0f));
391} 405}
392EXPORT_SYMBOL_GPL(lmsw); 406EXPORT_SYMBOL_GPL(lmsw);
@@ -407,7 +421,7 @@ void set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)
407 return; 421 return;
408 } 422 }
409 } else if (is_paging(vcpu) && !is_pae(vcpu) && (cr4 & CR4_PAE_MASK) 423 } else if (is_paging(vcpu) && !is_pae(vcpu) && (cr4 & CR4_PAE_MASK)
410 && pdptrs_have_reserved_bits_set(vcpu, vcpu->cr3)) { 424 && !load_pdptrs(vcpu, vcpu->cr3)) {
411 printk(KERN_DEBUG "set_cr4: #GP, pdptrs reserved bits\n"); 425 printk(KERN_DEBUG "set_cr4: #GP, pdptrs reserved bits\n");
412 inject_gp(vcpu); 426 inject_gp(vcpu);
413 } 427 }
@@ -439,7 +453,7 @@ void set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3)
439 return; 453 return;
440 } 454 }
441 if (is_paging(vcpu) && is_pae(vcpu) && 455 if (is_paging(vcpu) && is_pae(vcpu) &&
442 pdptrs_have_reserved_bits_set(vcpu, cr3)) { 456 !load_pdptrs(vcpu, cr3)) {
443 printk(KERN_DEBUG "set_cr3: #GP, pdptrs " 457 printk(KERN_DEBUG "set_cr3: #GP, pdptrs "
444 "reserved bits\n"); 458 "reserved bits\n");
445 inject_gp(vcpu); 459 inject_gp(vcpu);
@@ -449,7 +463,19 @@ void set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3)
449 463
450 vcpu->cr3 = cr3; 464 vcpu->cr3 = cr3;
451 spin_lock(&vcpu->kvm->lock); 465 spin_lock(&vcpu->kvm->lock);
452 vcpu->mmu.new_cr3(vcpu); 466 /*
467 * Does the new cr3 value map to physical memory? (Note, we
468 * catch an invalid cr3 even in real-mode, because it would
469 * cause trouble later on when we turn on paging anyway.)
470 *
471 * A real CPU would silently accept an invalid cr3 and would
472 * attempt to use it - with largely undefined (and often hard
473 * to debug) behavior on the guest side.
474 */
475 if (unlikely(!gfn_to_memslot(vcpu->kvm, cr3 >> PAGE_SHIFT)))
476 inject_gp(vcpu);
477 else
478 vcpu->mmu.new_cr3(vcpu);
453 spin_unlock(&vcpu->kvm->lock); 479 spin_unlock(&vcpu->kvm->lock);
454} 480}
455EXPORT_SYMBOL_GPL(set_cr3); 481EXPORT_SYMBOL_GPL(set_cr3);
@@ -517,7 +543,6 @@ static int kvm_dev_ioctl_create_vcpu(struct kvm *kvm, int n)
517 vcpu->guest_fx_image = vcpu->host_fx_image + FX_IMAGE_SIZE; 543 vcpu->guest_fx_image = vcpu->host_fx_image + FX_IMAGE_SIZE;
518 544
519 vcpu->cpu = -1; /* First load will set up TR */ 545 vcpu->cpu = -1; /* First load will set up TR */
520 vcpu->kvm = kvm;
521 r = kvm_arch_ops->vcpu_create(vcpu); 546 r = kvm_arch_ops->vcpu_create(vcpu);
522 if (r < 0) 547 if (r < 0)
523 goto out_free_vcpus; 548 goto out_free_vcpus;
@@ -634,6 +659,7 @@ raced:
634 | __GFP_ZERO); 659 | __GFP_ZERO);
635 if (!new.phys_mem[i]) 660 if (!new.phys_mem[i])
636 goto out_free; 661 goto out_free;
662 new.phys_mem[i]->private = 0;
637 } 663 }
638 } 664 }
639 665
@@ -688,6 +714,13 @@ out:
688 return r; 714 return r;
689} 715}
690 716
717static void do_remove_write_access(struct kvm_vcpu *vcpu, int slot)
718{
719 spin_lock(&vcpu->kvm->lock);
720 kvm_mmu_slot_remove_write_access(vcpu, slot);
721 spin_unlock(&vcpu->kvm->lock);
722}
723
691/* 724/*
692 * Get (and clear) the dirty memory log for a memory slot. 725 * Get (and clear) the dirty memory log for a memory slot.
693 */ 726 */
@@ -697,6 +730,7 @@ static int kvm_dev_ioctl_get_dirty_log(struct kvm *kvm,
697 struct kvm_memory_slot *memslot; 730 struct kvm_memory_slot *memslot;
698 int r, i; 731 int r, i;
699 int n; 732 int n;
733 int cleared;
700 unsigned long any = 0; 734 unsigned long any = 0;
701 735
702 spin_lock(&kvm->lock); 736 spin_lock(&kvm->lock);
@@ -727,15 +761,17 @@ static int kvm_dev_ioctl_get_dirty_log(struct kvm *kvm,
727 761
728 762
729 if (any) { 763 if (any) {
730 spin_lock(&kvm->lock); 764 cleared = 0;
731 kvm_mmu_slot_remove_write_access(kvm, log->slot);
732 spin_unlock(&kvm->lock);
733 memset(memslot->dirty_bitmap, 0, n);
734 for (i = 0; i < KVM_MAX_VCPUS; ++i) { 765 for (i = 0; i < KVM_MAX_VCPUS; ++i) {
735 struct kvm_vcpu *vcpu = vcpu_load(kvm, i); 766 struct kvm_vcpu *vcpu = vcpu_load(kvm, i);
736 767
737 if (!vcpu) 768 if (!vcpu)
738 continue; 769 continue;
770 if (!cleared) {
771 do_remove_write_access(vcpu, log->slot);
772 memset(memslot->dirty_bitmap, 0, n);
773 cleared = 1;
774 }
739 kvm_arch_ops->tlb_flush(vcpu); 775 kvm_arch_ops->tlb_flush(vcpu);
740 vcpu_put(vcpu); 776 vcpu_put(vcpu);
741 } 777 }
@@ -863,6 +899,27 @@ static int emulator_read_emulated(unsigned long addr,
863 } 899 }
864} 900}
865 901
902static int emulator_write_phys(struct kvm_vcpu *vcpu, gpa_t gpa,
903 unsigned long val, int bytes)
904{
905 struct kvm_memory_slot *m;
906 struct page *page;
907 void *virt;
908
909 if (((gpa + bytes - 1) >> PAGE_SHIFT) != (gpa >> PAGE_SHIFT))
910 return 0;
911 m = gfn_to_memslot(vcpu->kvm, gpa >> PAGE_SHIFT);
912 if (!m)
913 return 0;
914 page = gfn_to_page(m, gpa >> PAGE_SHIFT);
915 kvm_mmu_pre_write(vcpu, gpa, bytes);
916 virt = kmap_atomic(page, KM_USER0);
917 memcpy(virt + offset_in_page(gpa), &val, bytes);
918 kunmap_atomic(virt, KM_USER0);
919 kvm_mmu_post_write(vcpu, gpa, bytes);
920 return 1;
921}
922
866static int emulator_write_emulated(unsigned long addr, 923static int emulator_write_emulated(unsigned long addr,
867 unsigned long val, 924 unsigned long val,
868 unsigned int bytes, 925 unsigned int bytes,
@@ -874,6 +931,9 @@ static int emulator_write_emulated(unsigned long addr,
874 if (gpa == UNMAPPED_GVA) 931 if (gpa == UNMAPPED_GVA)
875 return X86EMUL_PROPAGATE_FAULT; 932 return X86EMUL_PROPAGATE_FAULT;
876 933
934 if (emulator_write_phys(vcpu, gpa, val, bytes))
935 return X86EMUL_CONTINUE;
936
877 vcpu->mmio_needed = 1; 937 vcpu->mmio_needed = 1;
878 vcpu->mmio_phys_addr = gpa; 938 vcpu->mmio_phys_addr = gpa;
879 vcpu->mmio_size = bytes; 939 vcpu->mmio_size = bytes;
@@ -898,6 +958,30 @@ static int emulator_cmpxchg_emulated(unsigned long addr,
898 return emulator_write_emulated(addr, new, bytes, ctxt); 958 return emulator_write_emulated(addr, new, bytes, ctxt);
899} 959}
900 960
961#ifdef CONFIG_X86_32
962
963static int emulator_cmpxchg8b_emulated(unsigned long addr,
964 unsigned long old_lo,
965 unsigned long old_hi,
966 unsigned long new_lo,
967 unsigned long new_hi,
968 struct x86_emulate_ctxt *ctxt)
969{
970 static int reported;
971 int r;
972
973 if (!reported) {
974 reported = 1;
975 printk(KERN_WARNING "kvm: emulating exchange8b as write\n");
976 }
977 r = emulator_write_emulated(addr, new_lo, 4, ctxt);
978 if (r != X86EMUL_CONTINUE)
979 return r;
980 return emulator_write_emulated(addr+4, new_hi, 4, ctxt);
981}
982
983#endif
984
901static unsigned long get_segment_base(struct kvm_vcpu *vcpu, int seg) 985static unsigned long get_segment_base(struct kvm_vcpu *vcpu, int seg)
902{ 986{
903 return kvm_arch_ops->get_segment_base(vcpu, seg); 987 return kvm_arch_ops->get_segment_base(vcpu, seg);
@@ -905,18 +989,15 @@ static unsigned long get_segment_base(struct kvm_vcpu *vcpu, int seg)
905 989
906int emulate_invlpg(struct kvm_vcpu *vcpu, gva_t address) 990int emulate_invlpg(struct kvm_vcpu *vcpu, gva_t address)
907{ 991{
908 spin_lock(&vcpu->kvm->lock);
909 vcpu->mmu.inval_page(vcpu, address);
910 spin_unlock(&vcpu->kvm->lock);
911 kvm_arch_ops->invlpg(vcpu, address);
912 return X86EMUL_CONTINUE; 992 return X86EMUL_CONTINUE;
913} 993}
914 994
915int emulate_clts(struct kvm_vcpu *vcpu) 995int emulate_clts(struct kvm_vcpu *vcpu)
916{ 996{
917 unsigned long cr0 = vcpu->cr0; 997 unsigned long cr0;
918 998
919 cr0 &= ~CR0_TS_MASK; 999 kvm_arch_ops->decache_cr0_cr4_guest_bits(vcpu);
1000 cr0 = vcpu->cr0 & ~CR0_TS_MASK;
920 kvm_arch_ops->set_cr0(vcpu, cr0); 1001 kvm_arch_ops->set_cr0(vcpu, cr0);
921 return X86EMUL_CONTINUE; 1002 return X86EMUL_CONTINUE;
922} 1003}
@@ -975,6 +1056,9 @@ struct x86_emulate_ops emulate_ops = {
975 .read_emulated = emulator_read_emulated, 1056 .read_emulated = emulator_read_emulated,
976 .write_emulated = emulator_write_emulated, 1057 .write_emulated = emulator_write_emulated,
977 .cmpxchg_emulated = emulator_cmpxchg_emulated, 1058 .cmpxchg_emulated = emulator_cmpxchg_emulated,
1059#ifdef CONFIG_X86_32
1060 .cmpxchg8b_emulated = emulator_cmpxchg8b_emulated,
1061#endif
978}; 1062};
979 1063
980int emulate_instruction(struct kvm_vcpu *vcpu, 1064int emulate_instruction(struct kvm_vcpu *vcpu,
@@ -1024,6 +1108,8 @@ int emulate_instruction(struct kvm_vcpu *vcpu,
1024 } 1108 }
1025 1109
1026 if (r) { 1110 if (r) {
1111 if (kvm_mmu_unprotect_page_virt(vcpu, cr2))
1112 return EMULATE_DONE;
1027 if (!vcpu->mmio_needed) { 1113 if (!vcpu->mmio_needed) {
1028 report_emulation_failure(&emulate_ctxt); 1114 report_emulation_failure(&emulate_ctxt);
1029 return EMULATE_FAIL; 1115 return EMULATE_FAIL;
@@ -1069,6 +1155,7 @@ void realmode_lmsw(struct kvm_vcpu *vcpu, unsigned long msw,
1069 1155
1070unsigned long realmode_get_cr(struct kvm_vcpu *vcpu, int cr) 1156unsigned long realmode_get_cr(struct kvm_vcpu *vcpu, int cr)
1071{ 1157{
1158 kvm_arch_ops->decache_cr0_cr4_guest_bits(vcpu);
1072 switch (cr) { 1159 switch (cr) {
1073 case 0: 1160 case 0:
1074 return vcpu->cr0; 1161 return vcpu->cr0;
@@ -1403,6 +1490,7 @@ static int kvm_dev_ioctl_get_sregs(struct kvm *kvm, struct kvm_sregs *sregs)
1403 sregs->gdt.limit = dt.limit; 1490 sregs->gdt.limit = dt.limit;
1404 sregs->gdt.base = dt.base; 1491 sregs->gdt.base = dt.base;
1405 1492
1493 kvm_arch_ops->decache_cr0_cr4_guest_bits(vcpu);
1406 sregs->cr0 = vcpu->cr0; 1494 sregs->cr0 = vcpu->cr0;
1407 sregs->cr2 = vcpu->cr2; 1495 sregs->cr2 = vcpu->cr2;
1408 sregs->cr3 = vcpu->cr3; 1496 sregs->cr3 = vcpu->cr3;
@@ -1467,11 +1555,15 @@ static int kvm_dev_ioctl_set_sregs(struct kvm *kvm, struct kvm_sregs *sregs)
1467#endif 1555#endif
1468 vcpu->apic_base = sregs->apic_base; 1556 vcpu->apic_base = sregs->apic_base;
1469 1557
1558 kvm_arch_ops->decache_cr0_cr4_guest_bits(vcpu);
1559
1470 mmu_reset_needed |= vcpu->cr0 != sregs->cr0; 1560 mmu_reset_needed |= vcpu->cr0 != sregs->cr0;
1471 kvm_arch_ops->set_cr0_no_modeswitch(vcpu, sregs->cr0); 1561 kvm_arch_ops->set_cr0_no_modeswitch(vcpu, sregs->cr0);
1472 1562
1473 mmu_reset_needed |= vcpu->cr4 != sregs->cr4; 1563 mmu_reset_needed |= vcpu->cr4 != sregs->cr4;
1474 kvm_arch_ops->set_cr4(vcpu, sregs->cr4); 1564 kvm_arch_ops->set_cr4(vcpu, sregs->cr4);
1565 if (!is_long_mode(vcpu) && is_pae(vcpu))
1566 load_pdptrs(vcpu, vcpu->cr3);
1475 1567
1476 if (mmu_reset_needed) 1568 if (mmu_reset_needed)
1477 kvm_mmu_reset_context(vcpu); 1569 kvm_mmu_reset_context(vcpu);
@@ -1693,12 +1785,12 @@ static long kvm_dev_ioctl(struct file *filp,
1693 if (copy_from_user(&kvm_run, (void *)arg, sizeof kvm_run)) 1785 if (copy_from_user(&kvm_run, (void *)arg, sizeof kvm_run))
1694 goto out; 1786 goto out;
1695 r = kvm_dev_ioctl_run(kvm, &kvm_run); 1787 r = kvm_dev_ioctl_run(kvm, &kvm_run);
1696 if (r < 0) 1788 if (r < 0 && r != -EINTR)
1697 goto out; 1789 goto out;
1698 r = -EFAULT; 1790 if (copy_to_user((void *)arg, &kvm_run, sizeof kvm_run)) {
1699 if (copy_to_user((void *)arg, &kvm_run, sizeof kvm_run)) 1791 r = -EFAULT;
1700 goto out; 1792 goto out;
1701 r = 0; 1793 }
1702 break; 1794 break;
1703 } 1795 }
1704 case KVM_GET_REGS: { 1796 case KVM_GET_REGS: {
@@ -1842,6 +1934,7 @@ static long kvm_dev_ioctl(struct file *filp,
1842 num_msrs_to_save * sizeof(u32))) 1934 num_msrs_to_save * sizeof(u32)))
1843 goto out; 1935 goto out;
1844 r = 0; 1936 r = 0;
1937 break;
1845 } 1938 }
1846 default: 1939 default:
1847 ; 1940 ;
@@ -1944,17 +2037,17 @@ int kvm_init_arch(struct kvm_arch_ops *ops, struct module *module)
1944 return -EEXIST; 2037 return -EEXIST;
1945 } 2038 }
1946 2039
1947 kvm_arch_ops = ops; 2040 if (!ops->cpu_has_kvm_support()) {
1948
1949 if (!kvm_arch_ops->cpu_has_kvm_support()) {
1950 printk(KERN_ERR "kvm: no hardware support\n"); 2041 printk(KERN_ERR "kvm: no hardware support\n");
1951 return -EOPNOTSUPP; 2042 return -EOPNOTSUPP;
1952 } 2043 }
1953 if (kvm_arch_ops->disabled_by_bios()) { 2044 if (ops->disabled_by_bios()) {
1954 printk(KERN_ERR "kvm: disabled by bios\n"); 2045 printk(KERN_ERR "kvm: disabled by bios\n");
1955 return -EOPNOTSUPP; 2046 return -EOPNOTSUPP;
1956 } 2047 }
1957 2048
2049 kvm_arch_ops = ops;
2050
1958 r = kvm_arch_ops->hardware_setup(); 2051 r = kvm_arch_ops->hardware_setup();
1959 if (r < 0) 2052 if (r < 0)
1960 return r; 2053 return r;
diff --git a/drivers/kvm/mmu.c b/drivers/kvm/mmu.c
index 790423c5f23d..c6f972914f08 100644
--- a/drivers/kvm/mmu.c
+++ b/drivers/kvm/mmu.c
@@ -26,7 +26,31 @@
26#include "vmx.h" 26#include "vmx.h"
27#include "kvm.h" 27#include "kvm.h"
28 28
29#undef MMU_DEBUG
30
31#undef AUDIT
32
33#ifdef AUDIT
34static void kvm_mmu_audit(struct kvm_vcpu *vcpu, const char *msg);
35#else
36static void kvm_mmu_audit(struct kvm_vcpu *vcpu, const char *msg) {}
37#endif
38
39#ifdef MMU_DEBUG
40
41#define pgprintk(x...) do { if (dbg) printk(x); } while (0)
42#define rmap_printk(x...) do { if (dbg) printk(x); } while (0)
43
44#else
45
29#define pgprintk(x...) do { } while (0) 46#define pgprintk(x...) do { } while (0)
47#define rmap_printk(x...) do { } while (0)
48
49#endif
50
51#if defined(MMU_DEBUG) || defined(AUDIT)
52static int dbg = 1;
53#endif
30 54
31#define ASSERT(x) \ 55#define ASSERT(x) \
32 if (!(x)) { \ 56 if (!(x)) { \
@@ -34,8 +58,10 @@
34 __FILE__, __LINE__, #x); \ 58 __FILE__, __LINE__, #x); \
35 } 59 }
36 60
37#define PT64_ENT_PER_PAGE 512 61#define PT64_PT_BITS 9
38#define PT32_ENT_PER_PAGE 1024 62#define PT64_ENT_PER_PAGE (1 << PT64_PT_BITS)
63#define PT32_PT_BITS 10
64#define PT32_ENT_PER_PAGE (1 << PT32_PT_BITS)
39 65
40#define PT_WRITABLE_SHIFT 1 66#define PT_WRITABLE_SHIFT 1
41 67
@@ -125,6 +151,13 @@
125#define PT_DIRECTORY_LEVEL 2 151#define PT_DIRECTORY_LEVEL 2
126#define PT_PAGE_TABLE_LEVEL 1 152#define PT_PAGE_TABLE_LEVEL 1
127 153
154#define RMAP_EXT 4
155
156struct kvm_rmap_desc {
157 u64 *shadow_ptes[RMAP_EXT];
158 struct kvm_rmap_desc *more;
159};
160
128static int is_write_protection(struct kvm_vcpu *vcpu) 161static int is_write_protection(struct kvm_vcpu *vcpu)
129{ 162{
130 return vcpu->cr0 & CR0_WP_MASK; 163 return vcpu->cr0 & CR0_WP_MASK;
@@ -150,32 +183,272 @@ static int is_io_pte(unsigned long pte)
150 return pte & PT_SHADOW_IO_MARK; 183 return pte & PT_SHADOW_IO_MARK;
151} 184}
152 185
186static int is_rmap_pte(u64 pte)
187{
188 return (pte & (PT_WRITABLE_MASK | PT_PRESENT_MASK))
189 == (PT_WRITABLE_MASK | PT_PRESENT_MASK);
190}
191
192static int mmu_topup_memory_cache(struct kvm_mmu_memory_cache *cache,
193 size_t objsize, int min)
194{
195 void *obj;
196
197 if (cache->nobjs >= min)
198 return 0;
199 while (cache->nobjs < ARRAY_SIZE(cache->objects)) {
200 obj = kzalloc(objsize, GFP_NOWAIT);
201 if (!obj)
202 return -ENOMEM;
203 cache->objects[cache->nobjs++] = obj;
204 }
205 return 0;
206}
207
208static void mmu_free_memory_cache(struct kvm_mmu_memory_cache *mc)
209{
210 while (mc->nobjs)
211 kfree(mc->objects[--mc->nobjs]);
212}
213
214static int mmu_topup_memory_caches(struct kvm_vcpu *vcpu)
215{
216 int r;
217
218 r = mmu_topup_memory_cache(&vcpu->mmu_pte_chain_cache,
219 sizeof(struct kvm_pte_chain), 4);
220 if (r)
221 goto out;
222 r = mmu_topup_memory_cache(&vcpu->mmu_rmap_desc_cache,
223 sizeof(struct kvm_rmap_desc), 1);
224out:
225 return r;
226}
227
228static void mmu_free_memory_caches(struct kvm_vcpu *vcpu)
229{
230 mmu_free_memory_cache(&vcpu->mmu_pte_chain_cache);
231 mmu_free_memory_cache(&vcpu->mmu_rmap_desc_cache);
232}
233
234static void *mmu_memory_cache_alloc(struct kvm_mmu_memory_cache *mc,
235 size_t size)
236{
237 void *p;
238
239 BUG_ON(!mc->nobjs);
240 p = mc->objects[--mc->nobjs];
241 memset(p, 0, size);
242 return p;
243}
244
245static void mmu_memory_cache_free(struct kvm_mmu_memory_cache *mc, void *obj)
246{
247 if (mc->nobjs < KVM_NR_MEM_OBJS)
248 mc->objects[mc->nobjs++] = obj;
249 else
250 kfree(obj);
251}
252
253static struct kvm_pte_chain *mmu_alloc_pte_chain(struct kvm_vcpu *vcpu)
254{
255 return mmu_memory_cache_alloc(&vcpu->mmu_pte_chain_cache,
256 sizeof(struct kvm_pte_chain));
257}
258
259static void mmu_free_pte_chain(struct kvm_vcpu *vcpu,
260 struct kvm_pte_chain *pc)
261{
262 mmu_memory_cache_free(&vcpu->mmu_pte_chain_cache, pc);
263}
264
265static struct kvm_rmap_desc *mmu_alloc_rmap_desc(struct kvm_vcpu *vcpu)
266{
267 return mmu_memory_cache_alloc(&vcpu->mmu_rmap_desc_cache,
268 sizeof(struct kvm_rmap_desc));
269}
270
271static void mmu_free_rmap_desc(struct kvm_vcpu *vcpu,
272 struct kvm_rmap_desc *rd)
273{
274 mmu_memory_cache_free(&vcpu->mmu_rmap_desc_cache, rd);
275}
276
277/*
278 * Reverse mapping data structures:
279 *
280 * If page->private bit zero is zero, then page->private points to the
281 * shadow page table entry that points to page_address(page).
282 *
283 * If page->private bit zero is one, (then page->private & ~1) points
284 * to a struct kvm_rmap_desc containing more mappings.
285 */
286static void rmap_add(struct kvm_vcpu *vcpu, u64 *spte)
287{
288 struct page *page;
289 struct kvm_rmap_desc *desc;
290 int i;
291
292 if (!is_rmap_pte(*spte))
293 return;
294 page = pfn_to_page((*spte & PT64_BASE_ADDR_MASK) >> PAGE_SHIFT);
295 if (!page->private) {
296 rmap_printk("rmap_add: %p %llx 0->1\n", spte, *spte);
297 page->private = (unsigned long)spte;
298 } else if (!(page->private & 1)) {
299 rmap_printk("rmap_add: %p %llx 1->many\n", spte, *spte);
300 desc = mmu_alloc_rmap_desc(vcpu);
301 desc->shadow_ptes[0] = (u64 *)page->private;
302 desc->shadow_ptes[1] = spte;
303 page->private = (unsigned long)desc | 1;
304 } else {
305 rmap_printk("rmap_add: %p %llx many->many\n", spte, *spte);
306 desc = (struct kvm_rmap_desc *)(page->private & ~1ul);
307 while (desc->shadow_ptes[RMAP_EXT-1] && desc->more)
308 desc = desc->more;
309 if (desc->shadow_ptes[RMAP_EXT-1]) {
310 desc->more = mmu_alloc_rmap_desc(vcpu);
311 desc = desc->more;
312 }
313 for (i = 0; desc->shadow_ptes[i]; ++i)
314 ;
315 desc->shadow_ptes[i] = spte;
316 }
317}
318
319static void rmap_desc_remove_entry(struct kvm_vcpu *vcpu,
320 struct page *page,
321 struct kvm_rmap_desc *desc,
322 int i,
323 struct kvm_rmap_desc *prev_desc)
324{
325 int j;
326
327 for (j = RMAP_EXT - 1; !desc->shadow_ptes[j] && j > i; --j)
328 ;
329 desc->shadow_ptes[i] = desc->shadow_ptes[j];
330 desc->shadow_ptes[j] = 0;
331 if (j != 0)
332 return;
333 if (!prev_desc && !desc->more)
334 page->private = (unsigned long)desc->shadow_ptes[0];
335 else
336 if (prev_desc)
337 prev_desc->more = desc->more;
338 else
339 page->private = (unsigned long)desc->more | 1;
340 mmu_free_rmap_desc(vcpu, desc);
341}
342
343static void rmap_remove(struct kvm_vcpu *vcpu, u64 *spte)
344{
345 struct page *page;
346 struct kvm_rmap_desc *desc;
347 struct kvm_rmap_desc *prev_desc;
348 int i;
349
350 if (!is_rmap_pte(*spte))
351 return;
352 page = pfn_to_page((*spte & PT64_BASE_ADDR_MASK) >> PAGE_SHIFT);
353 if (!page->private) {
354 printk(KERN_ERR "rmap_remove: %p %llx 0->BUG\n", spte, *spte);
355 BUG();
356 } else if (!(page->private & 1)) {
357 rmap_printk("rmap_remove: %p %llx 1->0\n", spte, *spte);
358 if ((u64 *)page->private != spte) {
359 printk(KERN_ERR "rmap_remove: %p %llx 1->BUG\n",
360 spte, *spte);
361 BUG();
362 }
363 page->private = 0;
364 } else {
365 rmap_printk("rmap_remove: %p %llx many->many\n", spte, *spte);
366 desc = (struct kvm_rmap_desc *)(page->private & ~1ul);
367 prev_desc = NULL;
368 while (desc) {
369 for (i = 0; i < RMAP_EXT && desc->shadow_ptes[i]; ++i)
370 if (desc->shadow_ptes[i] == spte) {
371 rmap_desc_remove_entry(vcpu, page,
372 desc, i,
373 prev_desc);
374 return;
375 }
376 prev_desc = desc;
377 desc = desc->more;
378 }
379 BUG();
380 }
381}
382
383static void rmap_write_protect(struct kvm_vcpu *vcpu, u64 gfn)
384{
385 struct kvm *kvm = vcpu->kvm;
386 struct page *page;
387 struct kvm_memory_slot *slot;
388 struct kvm_rmap_desc *desc;
389 u64 *spte;
390
391 slot = gfn_to_memslot(kvm, gfn);
392 BUG_ON(!slot);
393 page = gfn_to_page(slot, gfn);
394
395 while (page->private) {
396 if (!(page->private & 1))
397 spte = (u64 *)page->private;
398 else {
399 desc = (struct kvm_rmap_desc *)(page->private & ~1ul);
400 spte = desc->shadow_ptes[0];
401 }
402 BUG_ON(!spte);
403 BUG_ON((*spte & PT64_BASE_ADDR_MASK) !=
404 page_to_pfn(page) << PAGE_SHIFT);
405 BUG_ON(!(*spte & PT_PRESENT_MASK));
406 BUG_ON(!(*spte & PT_WRITABLE_MASK));
407 rmap_printk("rmap_write_protect: spte %p %llx\n", spte, *spte);
408 rmap_remove(vcpu, spte);
409 kvm_arch_ops->tlb_flush(vcpu);
410 *spte &= ~(u64)PT_WRITABLE_MASK;
411 }
412}
413
414static int is_empty_shadow_page(hpa_t page_hpa)
415{
416 u64 *pos;
417 u64 *end;
418
419 for (pos = __va(page_hpa), end = pos + PAGE_SIZE / sizeof(u64);
420 pos != end; pos++)
421 if (*pos != 0) {
422 printk(KERN_ERR "%s: %p %llx\n", __FUNCTION__,
423 pos, *pos);
424 return 0;
425 }
426 return 1;
427}
428
153static void kvm_mmu_free_page(struct kvm_vcpu *vcpu, hpa_t page_hpa) 429static void kvm_mmu_free_page(struct kvm_vcpu *vcpu, hpa_t page_hpa)
154{ 430{
155 struct kvm_mmu_page *page_head = page_header(page_hpa); 431 struct kvm_mmu_page *page_head = page_header(page_hpa);
156 432
433 ASSERT(is_empty_shadow_page(page_hpa));
157 list_del(&page_head->link); 434 list_del(&page_head->link);
158 page_head->page_hpa = page_hpa; 435 page_head->page_hpa = page_hpa;
159 list_add(&page_head->link, &vcpu->free_pages); 436 list_add(&page_head->link, &vcpu->free_pages);
437 ++vcpu->kvm->n_free_mmu_pages;
160} 438}
161 439
162static int is_empty_shadow_page(hpa_t page_hpa) 440static unsigned kvm_page_table_hashfn(gfn_t gfn)
163{ 441{
164 u32 *pos; 442 return gfn;
165 u32 *end;
166 for (pos = __va(page_hpa), end = pos + PAGE_SIZE / sizeof(u32);
167 pos != end; pos++)
168 if (*pos != 0)
169 return 0;
170 return 1;
171} 443}
172 444
173static hpa_t kvm_mmu_alloc_page(struct kvm_vcpu *vcpu, u64 *parent_pte) 445static struct kvm_mmu_page *kvm_mmu_alloc_page(struct kvm_vcpu *vcpu,
446 u64 *parent_pte)
174{ 447{
175 struct kvm_mmu_page *page; 448 struct kvm_mmu_page *page;
176 449
177 if (list_empty(&vcpu->free_pages)) 450 if (list_empty(&vcpu->free_pages))
178 return INVALID_PAGE; 451 return NULL;
179 452
180 page = list_entry(vcpu->free_pages.next, struct kvm_mmu_page, link); 453 page = list_entry(vcpu->free_pages.next, struct kvm_mmu_page, link);
181 list_del(&page->link); 454 list_del(&page->link);
@@ -183,8 +456,239 @@ static hpa_t kvm_mmu_alloc_page(struct kvm_vcpu *vcpu, u64 *parent_pte)
183 ASSERT(is_empty_shadow_page(page->page_hpa)); 456 ASSERT(is_empty_shadow_page(page->page_hpa));
184 page->slot_bitmap = 0; 457 page->slot_bitmap = 0;
185 page->global = 1; 458 page->global = 1;
459 page->multimapped = 0;
186 page->parent_pte = parent_pte; 460 page->parent_pte = parent_pte;
187 return page->page_hpa; 461 --vcpu->kvm->n_free_mmu_pages;
462 return page;
463}
464
465static void mmu_page_add_parent_pte(struct kvm_vcpu *vcpu,
466 struct kvm_mmu_page *page, u64 *parent_pte)
467{
468 struct kvm_pte_chain *pte_chain;
469 struct hlist_node *node;
470 int i;
471
472 if (!parent_pte)
473 return;
474 if (!page->multimapped) {
475 u64 *old = page->parent_pte;
476
477 if (!old) {
478 page->parent_pte = parent_pte;
479 return;
480 }
481 page->multimapped = 1;
482 pte_chain = mmu_alloc_pte_chain(vcpu);
483 INIT_HLIST_HEAD(&page->parent_ptes);
484 hlist_add_head(&pte_chain->link, &page->parent_ptes);
485 pte_chain->parent_ptes[0] = old;
486 }
487 hlist_for_each_entry(pte_chain, node, &page->parent_ptes, link) {
488 if (pte_chain->parent_ptes[NR_PTE_CHAIN_ENTRIES-1])
489 continue;
490 for (i = 0; i < NR_PTE_CHAIN_ENTRIES; ++i)
491 if (!pte_chain->parent_ptes[i]) {
492 pte_chain->parent_ptes[i] = parent_pte;
493 return;
494 }
495 }
496 pte_chain = mmu_alloc_pte_chain(vcpu);
497 BUG_ON(!pte_chain);
498 hlist_add_head(&pte_chain->link, &page->parent_ptes);
499 pte_chain->parent_ptes[0] = parent_pte;
500}
501
502static void mmu_page_remove_parent_pte(struct kvm_vcpu *vcpu,
503 struct kvm_mmu_page *page,
504 u64 *parent_pte)
505{
506 struct kvm_pte_chain *pte_chain;
507 struct hlist_node *node;
508 int i;
509
510 if (!page->multimapped) {
511 BUG_ON(page->parent_pte != parent_pte);
512 page->parent_pte = NULL;
513 return;
514 }
515 hlist_for_each_entry(pte_chain, node, &page->parent_ptes, link)
516 for (i = 0; i < NR_PTE_CHAIN_ENTRIES; ++i) {
517 if (!pte_chain->parent_ptes[i])
518 break;
519 if (pte_chain->parent_ptes[i] != parent_pte)
520 continue;
521 while (i + 1 < NR_PTE_CHAIN_ENTRIES
522 && pte_chain->parent_ptes[i + 1]) {
523 pte_chain->parent_ptes[i]
524 = pte_chain->parent_ptes[i + 1];
525 ++i;
526 }
527 pte_chain->parent_ptes[i] = NULL;
528 if (i == 0) {
529 hlist_del(&pte_chain->link);
530 mmu_free_pte_chain(vcpu, pte_chain);
531 if (hlist_empty(&page->parent_ptes)) {
532 page->multimapped = 0;
533 page->parent_pte = NULL;
534 }
535 }
536 return;
537 }
538 BUG();
539}
540
541static struct kvm_mmu_page *kvm_mmu_lookup_page(struct kvm_vcpu *vcpu,
542 gfn_t gfn)
543{
544 unsigned index;
545 struct hlist_head *bucket;
546 struct kvm_mmu_page *page;
547 struct hlist_node *node;
548
549 pgprintk("%s: looking for gfn %lx\n", __FUNCTION__, gfn);
550 index = kvm_page_table_hashfn(gfn) % KVM_NUM_MMU_PAGES;
551 bucket = &vcpu->kvm->mmu_page_hash[index];
552 hlist_for_each_entry(page, node, bucket, hash_link)
553 if (page->gfn == gfn && !page->role.metaphysical) {
554 pgprintk("%s: found role %x\n",
555 __FUNCTION__, page->role.word);
556 return page;
557 }
558 return NULL;
559}
560
561static struct kvm_mmu_page *kvm_mmu_get_page(struct kvm_vcpu *vcpu,
562 gfn_t gfn,
563 gva_t gaddr,
564 unsigned level,
565 int metaphysical,
566 u64 *parent_pte)
567{
568 union kvm_mmu_page_role role;
569 unsigned index;
570 unsigned quadrant;
571 struct hlist_head *bucket;
572 struct kvm_mmu_page *page;
573 struct hlist_node *node;
574
575 role.word = 0;
576 role.glevels = vcpu->mmu.root_level;
577 role.level = level;
578 role.metaphysical = metaphysical;
579 if (vcpu->mmu.root_level <= PT32_ROOT_LEVEL) {
580 quadrant = gaddr >> (PAGE_SHIFT + (PT64_PT_BITS * level));
581 quadrant &= (1 << ((PT32_PT_BITS - PT64_PT_BITS) * level)) - 1;
582 role.quadrant = quadrant;
583 }
584 pgprintk("%s: looking gfn %lx role %x\n", __FUNCTION__,
585 gfn, role.word);
586 index = kvm_page_table_hashfn(gfn) % KVM_NUM_MMU_PAGES;
587 bucket = &vcpu->kvm->mmu_page_hash[index];
588 hlist_for_each_entry(page, node, bucket, hash_link)
589 if (page->gfn == gfn && page->role.word == role.word) {
590 mmu_page_add_parent_pte(vcpu, page, parent_pte);
591 pgprintk("%s: found\n", __FUNCTION__);
592 return page;
593 }
594 page = kvm_mmu_alloc_page(vcpu, parent_pte);
595 if (!page)
596 return page;
597 pgprintk("%s: adding gfn %lx role %x\n", __FUNCTION__, gfn, role.word);
598 page->gfn = gfn;
599 page->role = role;
600 hlist_add_head(&page->hash_link, bucket);
601 if (!metaphysical)
602 rmap_write_protect(vcpu, gfn);
603 return page;
604}
605
606static void kvm_mmu_page_unlink_children(struct kvm_vcpu *vcpu,
607 struct kvm_mmu_page *page)
608{
609 unsigned i;
610 u64 *pt;
611 u64 ent;
612
613 pt = __va(page->page_hpa);
614
615 if (page->role.level == PT_PAGE_TABLE_LEVEL) {
616 for (i = 0; i < PT64_ENT_PER_PAGE; ++i) {
617 if (pt[i] & PT_PRESENT_MASK)
618 rmap_remove(vcpu, &pt[i]);
619 pt[i] = 0;
620 }
621 kvm_arch_ops->tlb_flush(vcpu);
622 return;
623 }
624
625 for (i = 0; i < PT64_ENT_PER_PAGE; ++i) {
626 ent = pt[i];
627
628 pt[i] = 0;
629 if (!(ent & PT_PRESENT_MASK))
630 continue;
631 ent &= PT64_BASE_ADDR_MASK;
632 mmu_page_remove_parent_pte(vcpu, page_header(ent), &pt[i]);
633 }
634}
635
636static void kvm_mmu_put_page(struct kvm_vcpu *vcpu,
637 struct kvm_mmu_page *page,
638 u64 *parent_pte)
639{
640 mmu_page_remove_parent_pte(vcpu, page, parent_pte);
641}
642
643static void kvm_mmu_zap_page(struct kvm_vcpu *vcpu,
644 struct kvm_mmu_page *page)
645{
646 u64 *parent_pte;
647
648 while (page->multimapped || page->parent_pte) {
649 if (!page->multimapped)
650 parent_pte = page->parent_pte;
651 else {
652 struct kvm_pte_chain *chain;
653
654 chain = container_of(page->parent_ptes.first,
655 struct kvm_pte_chain, link);
656 parent_pte = chain->parent_ptes[0];
657 }
658 BUG_ON(!parent_pte);
659 kvm_mmu_put_page(vcpu, page, parent_pte);
660 *parent_pte = 0;
661 }
662 kvm_mmu_page_unlink_children(vcpu, page);
663 if (!page->root_count) {
664 hlist_del(&page->hash_link);
665 kvm_mmu_free_page(vcpu, page->page_hpa);
666 } else {
667 list_del(&page->link);
668 list_add(&page->link, &vcpu->kvm->active_mmu_pages);
669 }
670}
671
672static int kvm_mmu_unprotect_page(struct kvm_vcpu *vcpu, gfn_t gfn)
673{
674 unsigned index;
675 struct hlist_head *bucket;
676 struct kvm_mmu_page *page;
677 struct hlist_node *node, *n;
678 int r;
679
680 pgprintk("%s: looking for gfn %lx\n", __FUNCTION__, gfn);
681 r = 0;
682 index = kvm_page_table_hashfn(gfn) % KVM_NUM_MMU_PAGES;
683 bucket = &vcpu->kvm->mmu_page_hash[index];
684 hlist_for_each_entry_safe(page, node, n, bucket, hash_link)
685 if (page->gfn == gfn && !page->role.metaphysical) {
686 pgprintk("%s: gfn %lx role %x\n", __FUNCTION__, gfn,
687 page->role.word);
688 kvm_mmu_zap_page(vcpu, page);
689 r = 1;
690 }
691 return r;
188} 692}
189 693
190static void page_header_update_slot(struct kvm *kvm, void *pte, gpa_t gpa) 694static void page_header_update_slot(struct kvm *kvm, void *pte, gpa_t gpa)
@@ -225,35 +729,6 @@ hpa_t gva_to_hpa(struct kvm_vcpu *vcpu, gva_t gva)
225 return gpa_to_hpa(vcpu, gpa); 729 return gpa_to_hpa(vcpu, gpa);
226} 730}
227 731
228
229static void release_pt_page_64(struct kvm_vcpu *vcpu, hpa_t page_hpa,
230 int level)
231{
232 ASSERT(vcpu);
233 ASSERT(VALID_PAGE(page_hpa));
234 ASSERT(level <= PT64_ROOT_LEVEL && level > 0);
235
236 if (level == 1)
237 memset(__va(page_hpa), 0, PAGE_SIZE);
238 else {
239 u64 *pos;
240 u64 *end;
241
242 for (pos = __va(page_hpa), end = pos + PT64_ENT_PER_PAGE;
243 pos != end; pos++) {
244 u64 current_ent = *pos;
245
246 *pos = 0;
247 if (is_present_pte(current_ent))
248 release_pt_page_64(vcpu,
249 current_ent &
250 PT64_BASE_ADDR_MASK,
251 level - 1);
252 }
253 }
254 kvm_mmu_free_page(vcpu, page_hpa);
255}
256
257static void nonpaging_new_cr3(struct kvm_vcpu *vcpu) 732static void nonpaging_new_cr3(struct kvm_vcpu *vcpu)
258{ 733{
259} 734}
@@ -266,52 +741,109 @@ static int nonpaging_map(struct kvm_vcpu *vcpu, gva_t v, hpa_t p)
266 for (; ; level--) { 741 for (; ; level--) {
267 u32 index = PT64_INDEX(v, level); 742 u32 index = PT64_INDEX(v, level);
268 u64 *table; 743 u64 *table;
744 u64 pte;
269 745
270 ASSERT(VALID_PAGE(table_addr)); 746 ASSERT(VALID_PAGE(table_addr));
271 table = __va(table_addr); 747 table = __va(table_addr);
272 748
273 if (level == 1) { 749 if (level == 1) {
750 pte = table[index];
751 if (is_present_pte(pte) && is_writeble_pte(pte))
752 return 0;
274 mark_page_dirty(vcpu->kvm, v >> PAGE_SHIFT); 753 mark_page_dirty(vcpu->kvm, v >> PAGE_SHIFT);
275 page_header_update_slot(vcpu->kvm, table, v); 754 page_header_update_slot(vcpu->kvm, table, v);
276 table[index] = p | PT_PRESENT_MASK | PT_WRITABLE_MASK | 755 table[index] = p | PT_PRESENT_MASK | PT_WRITABLE_MASK |
277 PT_USER_MASK; 756 PT_USER_MASK;
757 rmap_add(vcpu, &table[index]);
278 return 0; 758 return 0;
279 } 759 }
280 760
281 if (table[index] == 0) { 761 if (table[index] == 0) {
282 hpa_t new_table = kvm_mmu_alloc_page(vcpu, 762 struct kvm_mmu_page *new_table;
283 &table[index]); 763 gfn_t pseudo_gfn;
284 764
285 if (!VALID_PAGE(new_table)) { 765 pseudo_gfn = (v & PT64_DIR_BASE_ADDR_MASK)
766 >> PAGE_SHIFT;
767 new_table = kvm_mmu_get_page(vcpu, pseudo_gfn,
768 v, level - 1,
769 1, &table[index]);
770 if (!new_table) {
286 pgprintk("nonpaging_map: ENOMEM\n"); 771 pgprintk("nonpaging_map: ENOMEM\n");
287 return -ENOMEM; 772 return -ENOMEM;
288 } 773 }
289 774
290 if (level == PT32E_ROOT_LEVEL) 775 table[index] = new_table->page_hpa | PT_PRESENT_MASK
291 table[index] = new_table | PT_PRESENT_MASK; 776 | PT_WRITABLE_MASK | PT_USER_MASK;
292 else
293 table[index] = new_table | PT_PRESENT_MASK |
294 PT_WRITABLE_MASK | PT_USER_MASK;
295 } 777 }
296 table_addr = table[index] & PT64_BASE_ADDR_MASK; 778 table_addr = table[index] & PT64_BASE_ADDR_MASK;
297 } 779 }
298} 780}
299 781
300static void nonpaging_flush(struct kvm_vcpu *vcpu) 782static void mmu_free_roots(struct kvm_vcpu *vcpu)
301{ 783{
302 hpa_t root = vcpu->mmu.root_hpa; 784 int i;
785 struct kvm_mmu_page *page;
303 786
304 ++kvm_stat.tlb_flush; 787#ifdef CONFIG_X86_64
305 pgprintk("nonpaging_flush\n"); 788 if (vcpu->mmu.shadow_root_level == PT64_ROOT_LEVEL) {
306 ASSERT(VALID_PAGE(root)); 789 hpa_t root = vcpu->mmu.root_hpa;
307 release_pt_page_64(vcpu, root, vcpu->mmu.shadow_root_level); 790
308 root = kvm_mmu_alloc_page(vcpu, NULL); 791 ASSERT(VALID_PAGE(root));
309 ASSERT(VALID_PAGE(root)); 792 page = page_header(root);
310 vcpu->mmu.root_hpa = root; 793 --page->root_count;
311 if (is_paging(vcpu)) 794 vcpu->mmu.root_hpa = INVALID_PAGE;
312 root |= (vcpu->cr3 & (CR3_PCD_MASK | CR3_WPT_MASK)); 795 return;
313 kvm_arch_ops->set_cr3(vcpu, root); 796 }
314 kvm_arch_ops->tlb_flush(vcpu); 797#endif
798 for (i = 0; i < 4; ++i) {
799 hpa_t root = vcpu->mmu.pae_root[i];
800
801 ASSERT(VALID_PAGE(root));
802 root &= PT64_BASE_ADDR_MASK;
803 page = page_header(root);
804 --page->root_count;
805 vcpu->mmu.pae_root[i] = INVALID_PAGE;
806 }
807 vcpu->mmu.root_hpa = INVALID_PAGE;
808}
809
810static void mmu_alloc_roots(struct kvm_vcpu *vcpu)
811{
812 int i;
813 gfn_t root_gfn;
814 struct kvm_mmu_page *page;
815
816 root_gfn = vcpu->cr3 >> PAGE_SHIFT;
817
818#ifdef CONFIG_X86_64
819 if (vcpu->mmu.shadow_root_level == PT64_ROOT_LEVEL) {
820 hpa_t root = vcpu->mmu.root_hpa;
821
822 ASSERT(!VALID_PAGE(root));
823 page = kvm_mmu_get_page(vcpu, root_gfn, 0,
824 PT64_ROOT_LEVEL, 0, NULL);
825 root = page->page_hpa;
826 ++page->root_count;
827 vcpu->mmu.root_hpa = root;
828 return;
829 }
830#endif
831 for (i = 0; i < 4; ++i) {
832 hpa_t root = vcpu->mmu.pae_root[i];
833
834 ASSERT(!VALID_PAGE(root));
835 if (vcpu->mmu.root_level == PT32E_ROOT_LEVEL)
836 root_gfn = vcpu->pdptrs[i] >> PAGE_SHIFT;
837 else if (vcpu->mmu.root_level == 0)
838 root_gfn = 0;
839 page = kvm_mmu_get_page(vcpu, root_gfn, i << 30,
840 PT32_ROOT_LEVEL, !is_paging(vcpu),
841 NULL);
842 root = page->page_hpa;
843 ++page->root_count;
844 vcpu->mmu.pae_root[i] = root | PT_PRESENT_MASK;
845 }
846 vcpu->mmu.root_hpa = __pa(vcpu->mmu.pae_root);
315} 847}
316 848
317static gpa_t nonpaging_gva_to_gpa(struct kvm_vcpu *vcpu, gva_t vaddr) 849static gpa_t nonpaging_gva_to_gpa(struct kvm_vcpu *vcpu, gva_t vaddr)
@@ -322,43 +854,29 @@ static gpa_t nonpaging_gva_to_gpa(struct kvm_vcpu *vcpu, gva_t vaddr)
322static int nonpaging_page_fault(struct kvm_vcpu *vcpu, gva_t gva, 854static int nonpaging_page_fault(struct kvm_vcpu *vcpu, gva_t gva,
323 u32 error_code) 855 u32 error_code)
324{ 856{
325 int ret;
326 gpa_t addr = gva; 857 gpa_t addr = gva;
858 hpa_t paddr;
859 int r;
860
861 r = mmu_topup_memory_caches(vcpu);
862 if (r)
863 return r;
327 864
328 ASSERT(vcpu); 865 ASSERT(vcpu);
329 ASSERT(VALID_PAGE(vcpu->mmu.root_hpa)); 866 ASSERT(VALID_PAGE(vcpu->mmu.root_hpa));
330 867
331 for (;;) {
332 hpa_t paddr;
333
334 paddr = gpa_to_hpa(vcpu , addr & PT64_BASE_ADDR_MASK);
335 868
336 if (is_error_hpa(paddr)) 869 paddr = gpa_to_hpa(vcpu , addr & PT64_BASE_ADDR_MASK);
337 return 1;
338 870
339 ret = nonpaging_map(vcpu, addr & PAGE_MASK, paddr); 871 if (is_error_hpa(paddr))
340 if (ret) { 872 return 1;
341 nonpaging_flush(vcpu);
342 continue;
343 }
344 break;
345 }
346 return ret;
347}
348 873
349static void nonpaging_inval_page(struct kvm_vcpu *vcpu, gva_t addr) 874 return nonpaging_map(vcpu, addr & PAGE_MASK, paddr);
350{
351} 875}
352 876
353static void nonpaging_free(struct kvm_vcpu *vcpu) 877static void nonpaging_free(struct kvm_vcpu *vcpu)
354{ 878{
355 hpa_t root; 879 mmu_free_roots(vcpu);
356
357 ASSERT(vcpu);
358 root = vcpu->mmu.root_hpa;
359 if (VALID_PAGE(root))
360 release_pt_page_64(vcpu, root, vcpu->mmu.shadow_root_level);
361 vcpu->mmu.root_hpa = INVALID_PAGE;
362} 880}
363 881
364static int nonpaging_init_context(struct kvm_vcpu *vcpu) 882static int nonpaging_init_context(struct kvm_vcpu *vcpu)
@@ -367,40 +885,31 @@ static int nonpaging_init_context(struct kvm_vcpu *vcpu)
367 885
368 context->new_cr3 = nonpaging_new_cr3; 886 context->new_cr3 = nonpaging_new_cr3;
369 context->page_fault = nonpaging_page_fault; 887 context->page_fault = nonpaging_page_fault;
370 context->inval_page = nonpaging_inval_page;
371 context->gva_to_gpa = nonpaging_gva_to_gpa; 888 context->gva_to_gpa = nonpaging_gva_to_gpa;
372 context->free = nonpaging_free; 889 context->free = nonpaging_free;
373 context->root_level = PT32E_ROOT_LEVEL; 890 context->root_level = 0;
374 context->shadow_root_level = PT32E_ROOT_LEVEL; 891 context->shadow_root_level = PT32E_ROOT_LEVEL;
375 context->root_hpa = kvm_mmu_alloc_page(vcpu, NULL); 892 mmu_alloc_roots(vcpu);
376 ASSERT(VALID_PAGE(context->root_hpa)); 893 ASSERT(VALID_PAGE(context->root_hpa));
377 kvm_arch_ops->set_cr3(vcpu, context->root_hpa); 894 kvm_arch_ops->set_cr3(vcpu, context->root_hpa);
378 return 0; 895 return 0;
379} 896}
380 897
381
382static void kvm_mmu_flush_tlb(struct kvm_vcpu *vcpu) 898static void kvm_mmu_flush_tlb(struct kvm_vcpu *vcpu)
383{ 899{
384 struct kvm_mmu_page *page, *npage;
385
386 list_for_each_entry_safe(page, npage, &vcpu->kvm->active_mmu_pages,
387 link) {
388 if (page->global)
389 continue;
390
391 if (!page->parent_pte)
392 continue;
393
394 *page->parent_pte = 0;
395 release_pt_page_64(vcpu, page->page_hpa, 1);
396 }
397 ++kvm_stat.tlb_flush; 900 ++kvm_stat.tlb_flush;
398 kvm_arch_ops->tlb_flush(vcpu); 901 kvm_arch_ops->tlb_flush(vcpu);
399} 902}
400 903
401static void paging_new_cr3(struct kvm_vcpu *vcpu) 904static void paging_new_cr3(struct kvm_vcpu *vcpu)
402{ 905{
906 pgprintk("%s: cr3 %lx\n", __FUNCTION__, vcpu->cr3);
907 mmu_free_roots(vcpu);
908 if (unlikely(vcpu->kvm->n_free_mmu_pages < KVM_MIN_FREE_MMU_PAGES))
909 kvm_mmu_free_some_pages(vcpu);
910 mmu_alloc_roots(vcpu);
403 kvm_mmu_flush_tlb(vcpu); 911 kvm_mmu_flush_tlb(vcpu);
912 kvm_arch_ops->set_cr3(vcpu, vcpu->mmu.root_hpa);
404} 913}
405 914
406static void mark_pagetable_nonglobal(void *shadow_pte) 915static void mark_pagetable_nonglobal(void *shadow_pte)
@@ -412,7 +921,8 @@ static inline void set_pte_common(struct kvm_vcpu *vcpu,
412 u64 *shadow_pte, 921 u64 *shadow_pte,
413 gpa_t gaddr, 922 gpa_t gaddr,
414 int dirty, 923 int dirty,
415 u64 access_bits) 924 u64 access_bits,
925 gfn_t gfn)
416{ 926{
417 hpa_t paddr; 927 hpa_t paddr;
418 928
@@ -420,13 +930,10 @@ static inline void set_pte_common(struct kvm_vcpu *vcpu,
420 if (!dirty) 930 if (!dirty)
421 access_bits &= ~PT_WRITABLE_MASK; 931 access_bits &= ~PT_WRITABLE_MASK;
422 932
423 if (access_bits & PT_WRITABLE_MASK) 933 paddr = gpa_to_hpa(vcpu, gaddr & PT64_BASE_ADDR_MASK);
424 mark_page_dirty(vcpu->kvm, gaddr >> PAGE_SHIFT);
425 934
426 *shadow_pte |= access_bits; 935 *shadow_pte |= access_bits;
427 936
428 paddr = gpa_to_hpa(vcpu, gaddr & PT64_BASE_ADDR_MASK);
429
430 if (!(*shadow_pte & PT_GLOBAL_MASK)) 937 if (!(*shadow_pte & PT_GLOBAL_MASK))
431 mark_pagetable_nonglobal(shadow_pte); 938 mark_pagetable_nonglobal(shadow_pte);
432 939
@@ -434,10 +941,31 @@ static inline void set_pte_common(struct kvm_vcpu *vcpu,
434 *shadow_pte |= gaddr; 941 *shadow_pte |= gaddr;
435 *shadow_pte |= PT_SHADOW_IO_MARK; 942 *shadow_pte |= PT_SHADOW_IO_MARK;
436 *shadow_pte &= ~PT_PRESENT_MASK; 943 *shadow_pte &= ~PT_PRESENT_MASK;
437 } else { 944 return;
438 *shadow_pte |= paddr; 945 }
439 page_header_update_slot(vcpu->kvm, shadow_pte, gaddr); 946
947 *shadow_pte |= paddr;
948
949 if (access_bits & PT_WRITABLE_MASK) {
950 struct kvm_mmu_page *shadow;
951
952 shadow = kvm_mmu_lookup_page(vcpu, gfn);
953 if (shadow) {
954 pgprintk("%s: found shadow page for %lx, marking ro\n",
955 __FUNCTION__, gfn);
956 access_bits &= ~PT_WRITABLE_MASK;
957 if (is_writeble_pte(*shadow_pte)) {
958 *shadow_pte &= ~PT_WRITABLE_MASK;
959 kvm_arch_ops->tlb_flush(vcpu);
960 }
961 }
440 } 962 }
963
964 if (access_bits & PT_WRITABLE_MASK)
965 mark_page_dirty(vcpu->kvm, gaddr >> PAGE_SHIFT);
966
967 page_header_update_slot(vcpu->kvm, shadow_pte, gaddr);
968 rmap_add(vcpu, shadow_pte);
441} 969}
442 970
443static void inject_page_fault(struct kvm_vcpu *vcpu, 971static void inject_page_fault(struct kvm_vcpu *vcpu,
@@ -474,41 +1002,6 @@ static int may_access(u64 pte, int write, int user)
474 return 1; 1002 return 1;
475} 1003}
476 1004
477/*
478 * Remove a shadow pte.
479 */
480static void paging_inval_page(struct kvm_vcpu *vcpu, gva_t addr)
481{
482 hpa_t page_addr = vcpu->mmu.root_hpa;
483 int level = vcpu->mmu.shadow_root_level;
484
485 ++kvm_stat.invlpg;
486
487 for (; ; level--) {
488 u32 index = PT64_INDEX(addr, level);
489 u64 *table = __va(page_addr);
490
491 if (level == PT_PAGE_TABLE_LEVEL ) {
492 table[index] = 0;
493 return;
494 }
495
496 if (!is_present_pte(table[index]))
497 return;
498
499 page_addr = table[index] & PT64_BASE_ADDR_MASK;
500
501 if (level == PT_DIRECTORY_LEVEL &&
502 (table[index] & PT_SHADOW_PS_MARK)) {
503 table[index] = 0;
504 release_pt_page_64(vcpu, page_addr, PT_PAGE_TABLE_LEVEL);
505
506 kvm_arch_ops->tlb_flush(vcpu);
507 return;
508 }
509 }
510}
511
512static void paging_free(struct kvm_vcpu *vcpu) 1005static void paging_free(struct kvm_vcpu *vcpu)
513{ 1006{
514 nonpaging_free(vcpu); 1007 nonpaging_free(vcpu);
@@ -522,37 +1015,40 @@ static void paging_free(struct kvm_vcpu *vcpu)
522#include "paging_tmpl.h" 1015#include "paging_tmpl.h"
523#undef PTTYPE 1016#undef PTTYPE
524 1017
525static int paging64_init_context(struct kvm_vcpu *vcpu) 1018static int paging64_init_context_common(struct kvm_vcpu *vcpu, int level)
526{ 1019{
527 struct kvm_mmu *context = &vcpu->mmu; 1020 struct kvm_mmu *context = &vcpu->mmu;
528 1021
529 ASSERT(is_pae(vcpu)); 1022 ASSERT(is_pae(vcpu));
530 context->new_cr3 = paging_new_cr3; 1023 context->new_cr3 = paging_new_cr3;
531 context->page_fault = paging64_page_fault; 1024 context->page_fault = paging64_page_fault;
532 context->inval_page = paging_inval_page;
533 context->gva_to_gpa = paging64_gva_to_gpa; 1025 context->gva_to_gpa = paging64_gva_to_gpa;
534 context->free = paging_free; 1026 context->free = paging_free;
535 context->root_level = PT64_ROOT_LEVEL; 1027 context->root_level = level;
536 context->shadow_root_level = PT64_ROOT_LEVEL; 1028 context->shadow_root_level = level;
537 context->root_hpa = kvm_mmu_alloc_page(vcpu, NULL); 1029 mmu_alloc_roots(vcpu);
538 ASSERT(VALID_PAGE(context->root_hpa)); 1030 ASSERT(VALID_PAGE(context->root_hpa));
539 kvm_arch_ops->set_cr3(vcpu, context->root_hpa | 1031 kvm_arch_ops->set_cr3(vcpu, context->root_hpa |
540 (vcpu->cr3 & (CR3_PCD_MASK | CR3_WPT_MASK))); 1032 (vcpu->cr3 & (CR3_PCD_MASK | CR3_WPT_MASK)));
541 return 0; 1033 return 0;
542} 1034}
543 1035
1036static int paging64_init_context(struct kvm_vcpu *vcpu)
1037{
1038 return paging64_init_context_common(vcpu, PT64_ROOT_LEVEL);
1039}
1040
544static int paging32_init_context(struct kvm_vcpu *vcpu) 1041static int paging32_init_context(struct kvm_vcpu *vcpu)
545{ 1042{
546 struct kvm_mmu *context = &vcpu->mmu; 1043 struct kvm_mmu *context = &vcpu->mmu;
547 1044
548 context->new_cr3 = paging_new_cr3; 1045 context->new_cr3 = paging_new_cr3;
549 context->page_fault = paging32_page_fault; 1046 context->page_fault = paging32_page_fault;
550 context->inval_page = paging_inval_page;
551 context->gva_to_gpa = paging32_gva_to_gpa; 1047 context->gva_to_gpa = paging32_gva_to_gpa;
552 context->free = paging_free; 1048 context->free = paging_free;
553 context->root_level = PT32_ROOT_LEVEL; 1049 context->root_level = PT32_ROOT_LEVEL;
554 context->shadow_root_level = PT32E_ROOT_LEVEL; 1050 context->shadow_root_level = PT32E_ROOT_LEVEL;
555 context->root_hpa = kvm_mmu_alloc_page(vcpu, NULL); 1051 mmu_alloc_roots(vcpu);
556 ASSERT(VALID_PAGE(context->root_hpa)); 1052 ASSERT(VALID_PAGE(context->root_hpa));
557 kvm_arch_ops->set_cr3(vcpu, context->root_hpa | 1053 kvm_arch_ops->set_cr3(vcpu, context->root_hpa |
558 (vcpu->cr3 & (CR3_PCD_MASK | CR3_WPT_MASK))); 1054 (vcpu->cr3 & (CR3_PCD_MASK | CR3_WPT_MASK)));
@@ -561,14 +1057,7 @@ static int paging32_init_context(struct kvm_vcpu *vcpu)
561 1057
562static int paging32E_init_context(struct kvm_vcpu *vcpu) 1058static int paging32E_init_context(struct kvm_vcpu *vcpu)
563{ 1059{
564 int ret; 1060 return paging64_init_context_common(vcpu, PT32E_ROOT_LEVEL);
565
566 if ((ret = paging64_init_context(vcpu)))
567 return ret;
568
569 vcpu->mmu.root_level = PT32E_ROOT_LEVEL;
570 vcpu->mmu.shadow_root_level = PT32E_ROOT_LEVEL;
571 return 0;
572} 1061}
573 1062
574static int init_kvm_mmu(struct kvm_vcpu *vcpu) 1063static int init_kvm_mmu(struct kvm_vcpu *vcpu)
@@ -597,41 +1086,161 @@ static void destroy_kvm_mmu(struct kvm_vcpu *vcpu)
597 1086
598int kvm_mmu_reset_context(struct kvm_vcpu *vcpu) 1087int kvm_mmu_reset_context(struct kvm_vcpu *vcpu)
599{ 1088{
1089 int r;
1090
600 destroy_kvm_mmu(vcpu); 1091 destroy_kvm_mmu(vcpu);
601 return init_kvm_mmu(vcpu); 1092 r = init_kvm_mmu(vcpu);
1093 if (r < 0)
1094 goto out;
1095 r = mmu_topup_memory_caches(vcpu);
1096out:
1097 return r;
602} 1098}
603 1099
604static void free_mmu_pages(struct kvm_vcpu *vcpu) 1100void kvm_mmu_pre_write(struct kvm_vcpu *vcpu, gpa_t gpa, int bytes)
605{ 1101{
606 while (!list_empty(&vcpu->free_pages)) { 1102 gfn_t gfn = gpa >> PAGE_SHIFT;
1103 struct kvm_mmu_page *page;
1104 struct kvm_mmu_page *child;
1105 struct hlist_node *node, *n;
1106 struct hlist_head *bucket;
1107 unsigned index;
1108 u64 *spte;
1109 u64 pte;
1110 unsigned offset = offset_in_page(gpa);
1111 unsigned pte_size;
1112 unsigned page_offset;
1113 unsigned misaligned;
1114 int level;
1115 int flooded = 0;
1116
1117 pgprintk("%s: gpa %llx bytes %d\n", __FUNCTION__, gpa, bytes);
1118 if (gfn == vcpu->last_pt_write_gfn) {
1119 ++vcpu->last_pt_write_count;
1120 if (vcpu->last_pt_write_count >= 3)
1121 flooded = 1;
1122 } else {
1123 vcpu->last_pt_write_gfn = gfn;
1124 vcpu->last_pt_write_count = 1;
1125 }
1126 index = kvm_page_table_hashfn(gfn) % KVM_NUM_MMU_PAGES;
1127 bucket = &vcpu->kvm->mmu_page_hash[index];
1128 hlist_for_each_entry_safe(page, node, n, bucket, hash_link) {
1129 if (page->gfn != gfn || page->role.metaphysical)
1130 continue;
1131 pte_size = page->role.glevels == PT32_ROOT_LEVEL ? 4 : 8;
1132 misaligned = (offset ^ (offset + bytes - 1)) & ~(pte_size - 1);
1133 if (misaligned || flooded) {
1134 /*
1135 * Misaligned accesses are too much trouble to fix
1136 * up; also, they usually indicate a page is not used
1137 * as a page table.
1138 *
1139 * If we're seeing too many writes to a page,
1140 * it may no longer be a page table, or we may be
1141 * forking, in which case it is better to unmap the
1142 * page.
1143 */
1144 pgprintk("misaligned: gpa %llx bytes %d role %x\n",
1145 gpa, bytes, page->role.word);
1146 kvm_mmu_zap_page(vcpu, page);
1147 continue;
1148 }
1149 page_offset = offset;
1150 level = page->role.level;
1151 if (page->role.glevels == PT32_ROOT_LEVEL) {
1152 page_offset <<= 1; /* 32->64 */
1153 page_offset &= ~PAGE_MASK;
1154 }
1155 spte = __va(page->page_hpa);
1156 spte += page_offset / sizeof(*spte);
1157 pte = *spte;
1158 if (is_present_pte(pte)) {
1159 if (level == PT_PAGE_TABLE_LEVEL)
1160 rmap_remove(vcpu, spte);
1161 else {
1162 child = page_header(pte & PT64_BASE_ADDR_MASK);
1163 mmu_page_remove_parent_pte(vcpu, child, spte);
1164 }
1165 }
1166 *spte = 0;
1167 }
1168}
1169
1170void kvm_mmu_post_write(struct kvm_vcpu *vcpu, gpa_t gpa, int bytes)
1171{
1172}
1173
1174int kvm_mmu_unprotect_page_virt(struct kvm_vcpu *vcpu, gva_t gva)
1175{
1176 gpa_t gpa = vcpu->mmu.gva_to_gpa(vcpu, gva);
1177
1178 return kvm_mmu_unprotect_page(vcpu, gpa >> PAGE_SHIFT);
1179}
1180
1181void kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu)
1182{
1183 while (vcpu->kvm->n_free_mmu_pages < KVM_REFILL_PAGES) {
607 struct kvm_mmu_page *page; 1184 struct kvm_mmu_page *page;
608 1185
1186 page = container_of(vcpu->kvm->active_mmu_pages.prev,
1187 struct kvm_mmu_page, link);
1188 kvm_mmu_zap_page(vcpu, page);
1189 }
1190}
1191EXPORT_SYMBOL_GPL(kvm_mmu_free_some_pages);
1192
1193static void free_mmu_pages(struct kvm_vcpu *vcpu)
1194{
1195 struct kvm_mmu_page *page;
1196
1197 while (!list_empty(&vcpu->kvm->active_mmu_pages)) {
1198 page = container_of(vcpu->kvm->active_mmu_pages.next,
1199 struct kvm_mmu_page, link);
1200 kvm_mmu_zap_page(vcpu, page);
1201 }
1202 while (!list_empty(&vcpu->free_pages)) {
609 page = list_entry(vcpu->free_pages.next, 1203 page = list_entry(vcpu->free_pages.next,
610 struct kvm_mmu_page, link); 1204 struct kvm_mmu_page, link);
611 list_del(&page->link); 1205 list_del(&page->link);
612 __free_page(pfn_to_page(page->page_hpa >> PAGE_SHIFT)); 1206 __free_page(pfn_to_page(page->page_hpa >> PAGE_SHIFT));
613 page->page_hpa = INVALID_PAGE; 1207 page->page_hpa = INVALID_PAGE;
614 } 1208 }
1209 free_page((unsigned long)vcpu->mmu.pae_root);
615} 1210}
616 1211
617static int alloc_mmu_pages(struct kvm_vcpu *vcpu) 1212static int alloc_mmu_pages(struct kvm_vcpu *vcpu)
618{ 1213{
1214 struct page *page;
619 int i; 1215 int i;
620 1216
621 ASSERT(vcpu); 1217 ASSERT(vcpu);
622 1218
623 for (i = 0; i < KVM_NUM_MMU_PAGES; i++) { 1219 for (i = 0; i < KVM_NUM_MMU_PAGES; i++) {
624 struct page *page;
625 struct kvm_mmu_page *page_header = &vcpu->page_header_buf[i]; 1220 struct kvm_mmu_page *page_header = &vcpu->page_header_buf[i];
626 1221
627 INIT_LIST_HEAD(&page_header->link); 1222 INIT_LIST_HEAD(&page_header->link);
628 if ((page = alloc_page(GFP_KVM_MMU)) == NULL) 1223 if ((page = alloc_page(GFP_KERNEL)) == NULL)
629 goto error_1; 1224 goto error_1;
630 page->private = (unsigned long)page_header; 1225 page->private = (unsigned long)page_header;
631 page_header->page_hpa = (hpa_t)page_to_pfn(page) << PAGE_SHIFT; 1226 page_header->page_hpa = (hpa_t)page_to_pfn(page) << PAGE_SHIFT;
632 memset(__va(page_header->page_hpa), 0, PAGE_SIZE); 1227 memset(__va(page_header->page_hpa), 0, PAGE_SIZE);
633 list_add(&page_header->link, &vcpu->free_pages); 1228 list_add(&page_header->link, &vcpu->free_pages);
1229 ++vcpu->kvm->n_free_mmu_pages;
634 } 1230 }
1231
1232 /*
1233 * When emulating 32-bit mode, cr3 is only 32 bits even on x86_64.
1234 * Therefore we need to allocate shadow page tables in the first
1235 * 4GB of memory, which happens to fit the DMA32 zone.
1236 */
1237 page = alloc_page(GFP_KERNEL | __GFP_DMA32);
1238 if (!page)
1239 goto error_1;
1240 vcpu->mmu.pae_root = page_address(page);
1241 for (i = 0; i < 4; ++i)
1242 vcpu->mmu.pae_root[i] = INVALID_PAGE;
1243
635 return 0; 1244 return 0;
636 1245
637error_1: 1246error_1:
@@ -663,10 +1272,12 @@ void kvm_mmu_destroy(struct kvm_vcpu *vcpu)
663 1272
664 destroy_kvm_mmu(vcpu); 1273 destroy_kvm_mmu(vcpu);
665 free_mmu_pages(vcpu); 1274 free_mmu_pages(vcpu);
1275 mmu_free_memory_caches(vcpu);
666} 1276}
667 1277
668void kvm_mmu_slot_remove_write_access(struct kvm *kvm, int slot) 1278void kvm_mmu_slot_remove_write_access(struct kvm_vcpu *vcpu, int slot)
669{ 1279{
1280 struct kvm *kvm = vcpu->kvm;
670 struct kvm_mmu_page *page; 1281 struct kvm_mmu_page *page;
671 1282
672 list_for_each_entry(page, &kvm->active_mmu_pages, link) { 1283 list_for_each_entry(page, &kvm->active_mmu_pages, link) {
@@ -679,8 +1290,169 @@ void kvm_mmu_slot_remove_write_access(struct kvm *kvm, int slot)
679 pt = __va(page->page_hpa); 1290 pt = __va(page->page_hpa);
680 for (i = 0; i < PT64_ENT_PER_PAGE; ++i) 1291 for (i = 0; i < PT64_ENT_PER_PAGE; ++i)
681 /* avoid RMW */ 1292 /* avoid RMW */
682 if (pt[i] & PT_WRITABLE_MASK) 1293 if (pt[i] & PT_WRITABLE_MASK) {
1294 rmap_remove(vcpu, &pt[i]);
683 pt[i] &= ~PT_WRITABLE_MASK; 1295 pt[i] &= ~PT_WRITABLE_MASK;
1296 }
1297 }
1298}
1299
1300#ifdef AUDIT
1301
1302static const char *audit_msg;
1303
1304static gva_t canonicalize(gva_t gva)
1305{
1306#ifdef CONFIG_X86_64
1307 gva = (long long)(gva << 16) >> 16;
1308#endif
1309 return gva;
1310}
684 1311
1312static void audit_mappings_page(struct kvm_vcpu *vcpu, u64 page_pte,
1313 gva_t va, int level)
1314{
1315 u64 *pt = __va(page_pte & PT64_BASE_ADDR_MASK);
1316 int i;
1317 gva_t va_delta = 1ul << (PAGE_SHIFT + 9 * (level - 1));
1318
1319 for (i = 0; i < PT64_ENT_PER_PAGE; ++i, va += va_delta) {
1320 u64 ent = pt[i];
1321
1322 if (!ent & PT_PRESENT_MASK)
1323 continue;
1324
1325 va = canonicalize(va);
1326 if (level > 1)
1327 audit_mappings_page(vcpu, ent, va, level - 1);
1328 else {
1329 gpa_t gpa = vcpu->mmu.gva_to_gpa(vcpu, va);
1330 hpa_t hpa = gpa_to_hpa(vcpu, gpa);
1331
1332 if ((ent & PT_PRESENT_MASK)
1333 && (ent & PT64_BASE_ADDR_MASK) != hpa)
1334 printk(KERN_ERR "audit error: (%s) levels %d"
1335 " gva %lx gpa %llx hpa %llx ent %llx\n",
1336 audit_msg, vcpu->mmu.root_level,
1337 va, gpa, hpa, ent);
1338 }
685 } 1339 }
686} 1340}
1341
1342static void audit_mappings(struct kvm_vcpu *vcpu)
1343{
1344 int i;
1345
1346 if (vcpu->mmu.root_level == 4)
1347 audit_mappings_page(vcpu, vcpu->mmu.root_hpa, 0, 4);
1348 else
1349 for (i = 0; i < 4; ++i)
1350 if (vcpu->mmu.pae_root[i] & PT_PRESENT_MASK)
1351 audit_mappings_page(vcpu,
1352 vcpu->mmu.pae_root[i],
1353 i << 30,
1354 2);
1355}
1356
1357static int count_rmaps(struct kvm_vcpu *vcpu)
1358{
1359 int nmaps = 0;
1360 int i, j, k;
1361
1362 for (i = 0; i < KVM_MEMORY_SLOTS; ++i) {
1363 struct kvm_memory_slot *m = &vcpu->kvm->memslots[i];
1364 struct kvm_rmap_desc *d;
1365
1366 for (j = 0; j < m->npages; ++j) {
1367 struct page *page = m->phys_mem[j];
1368
1369 if (!page->private)
1370 continue;
1371 if (!(page->private & 1)) {
1372 ++nmaps;
1373 continue;
1374 }
1375 d = (struct kvm_rmap_desc *)(page->private & ~1ul);
1376 while (d) {
1377 for (k = 0; k < RMAP_EXT; ++k)
1378 if (d->shadow_ptes[k])
1379 ++nmaps;
1380 else
1381 break;
1382 d = d->more;
1383 }
1384 }
1385 }
1386 return nmaps;
1387}
1388
1389static int count_writable_mappings(struct kvm_vcpu *vcpu)
1390{
1391 int nmaps = 0;
1392 struct kvm_mmu_page *page;
1393 int i;
1394
1395 list_for_each_entry(page, &vcpu->kvm->active_mmu_pages, link) {
1396 u64 *pt = __va(page->page_hpa);
1397
1398 if (page->role.level != PT_PAGE_TABLE_LEVEL)
1399 continue;
1400
1401 for (i = 0; i < PT64_ENT_PER_PAGE; ++i) {
1402 u64 ent = pt[i];
1403
1404 if (!(ent & PT_PRESENT_MASK))
1405 continue;
1406 if (!(ent & PT_WRITABLE_MASK))
1407 continue;
1408 ++nmaps;
1409 }
1410 }
1411 return nmaps;
1412}
1413
1414static void audit_rmap(struct kvm_vcpu *vcpu)
1415{
1416 int n_rmap = count_rmaps(vcpu);
1417 int n_actual = count_writable_mappings(vcpu);
1418
1419 if (n_rmap != n_actual)
1420 printk(KERN_ERR "%s: (%s) rmap %d actual %d\n",
1421 __FUNCTION__, audit_msg, n_rmap, n_actual);
1422}
1423
1424static void audit_write_protection(struct kvm_vcpu *vcpu)
1425{
1426 struct kvm_mmu_page *page;
1427
1428 list_for_each_entry(page, &vcpu->kvm->active_mmu_pages, link) {
1429 hfn_t hfn;
1430 struct page *pg;
1431
1432 if (page->role.metaphysical)
1433 continue;
1434
1435 hfn = gpa_to_hpa(vcpu, (gpa_t)page->gfn << PAGE_SHIFT)
1436 >> PAGE_SHIFT;
1437 pg = pfn_to_page(hfn);
1438 if (pg->private)
1439 printk(KERN_ERR "%s: (%s) shadow page has writable"
1440 " mappings: gfn %lx role %x\n",
1441 __FUNCTION__, audit_msg, page->gfn,
1442 page->role.word);
1443 }
1444}
1445
1446static void kvm_mmu_audit(struct kvm_vcpu *vcpu, const char *msg)
1447{
1448 int olddbg = dbg;
1449
1450 dbg = 0;
1451 audit_msg = msg;
1452 audit_rmap(vcpu);
1453 audit_write_protection(vcpu);
1454 audit_mappings(vcpu);
1455 dbg = olddbg;
1456}
1457
1458#endif
diff --git a/drivers/kvm/paging_tmpl.h b/drivers/kvm/paging_tmpl.h
index 09bb9b4ed12d..2dbf4307ed9e 100644
--- a/drivers/kvm/paging_tmpl.h
+++ b/drivers/kvm/paging_tmpl.h
@@ -32,6 +32,11 @@
32 #define SHADOW_PT_INDEX(addr, level) PT64_INDEX(addr, level) 32 #define SHADOW_PT_INDEX(addr, level) PT64_INDEX(addr, level)
33 #define PT_LEVEL_MASK(level) PT64_LEVEL_MASK(level) 33 #define PT_LEVEL_MASK(level) PT64_LEVEL_MASK(level)
34 #define PT_PTE_COPY_MASK PT64_PTE_COPY_MASK 34 #define PT_PTE_COPY_MASK PT64_PTE_COPY_MASK
35 #ifdef CONFIG_X86_64
36 #define PT_MAX_FULL_LEVELS 4
37 #else
38 #define PT_MAX_FULL_LEVELS 2
39 #endif
35#elif PTTYPE == 32 40#elif PTTYPE == 32
36 #define pt_element_t u32 41 #define pt_element_t u32
37 #define guest_walker guest_walker32 42 #define guest_walker guest_walker32
@@ -42,6 +47,7 @@
42 #define SHADOW_PT_INDEX(addr, level) PT64_INDEX(addr, level) 47 #define SHADOW_PT_INDEX(addr, level) PT64_INDEX(addr, level)
43 #define PT_LEVEL_MASK(level) PT32_LEVEL_MASK(level) 48 #define PT_LEVEL_MASK(level) PT32_LEVEL_MASK(level)
44 #define PT_PTE_COPY_MASK PT32_PTE_COPY_MASK 49 #define PT_PTE_COPY_MASK PT32_PTE_COPY_MASK
50 #define PT_MAX_FULL_LEVELS 2
45#else 51#else
46 #error Invalid PTTYPE value 52 #error Invalid PTTYPE value
47#endif 53#endif
@@ -52,93 +58,126 @@
52 */ 58 */
53struct guest_walker { 59struct guest_walker {
54 int level; 60 int level;
61 gfn_t table_gfn[PT_MAX_FULL_LEVELS];
55 pt_element_t *table; 62 pt_element_t *table;
63 pt_element_t *ptep;
56 pt_element_t inherited_ar; 64 pt_element_t inherited_ar;
65 gfn_t gfn;
57}; 66};
58 67
59static void FNAME(init_walker)(struct guest_walker *walker, 68/*
60 struct kvm_vcpu *vcpu) 69 * Fetch a guest pte for a guest virtual address
70 */
71static void FNAME(walk_addr)(struct guest_walker *walker,
72 struct kvm_vcpu *vcpu, gva_t addr)
61{ 73{
62 hpa_t hpa; 74 hpa_t hpa;
63 struct kvm_memory_slot *slot; 75 struct kvm_memory_slot *slot;
76 pt_element_t *ptep;
77 pt_element_t root;
78 gfn_t table_gfn;
64 79
80 pgprintk("%s: addr %lx\n", __FUNCTION__, addr);
65 walker->level = vcpu->mmu.root_level; 81 walker->level = vcpu->mmu.root_level;
66 slot = gfn_to_memslot(vcpu->kvm, 82 walker->table = NULL;
67 (vcpu->cr3 & PT64_BASE_ADDR_MASK) >> PAGE_SHIFT); 83 root = vcpu->cr3;
68 hpa = safe_gpa_to_hpa(vcpu, vcpu->cr3 & PT64_BASE_ADDR_MASK); 84#if PTTYPE == 64
85 if (!is_long_mode(vcpu)) {
86 walker->ptep = &vcpu->pdptrs[(addr >> 30) & 3];
87 root = *walker->ptep;
88 if (!(root & PT_PRESENT_MASK))
89 return;
90 --walker->level;
91 }
92#endif
93 table_gfn = (root & PT64_BASE_ADDR_MASK) >> PAGE_SHIFT;
94 walker->table_gfn[walker->level - 1] = table_gfn;
95 pgprintk("%s: table_gfn[%d] %lx\n", __FUNCTION__,
96 walker->level - 1, table_gfn);
97 slot = gfn_to_memslot(vcpu->kvm, table_gfn);
98 hpa = safe_gpa_to_hpa(vcpu, root & PT64_BASE_ADDR_MASK);
69 walker->table = kmap_atomic(pfn_to_page(hpa >> PAGE_SHIFT), KM_USER0); 99 walker->table = kmap_atomic(pfn_to_page(hpa >> PAGE_SHIFT), KM_USER0);
70 100
71 ASSERT((!is_long_mode(vcpu) && is_pae(vcpu)) || 101 ASSERT((!is_long_mode(vcpu) && is_pae(vcpu)) ||
72 (vcpu->cr3 & ~(PAGE_MASK | CR3_FLAGS_MASK)) == 0); 102 (vcpu->cr3 & ~(PAGE_MASK | CR3_FLAGS_MASK)) == 0);
73 103
74 walker->table = (pt_element_t *)( (unsigned long)walker->table |
75 (unsigned long)(vcpu->cr3 & ~(PAGE_MASK | CR3_FLAGS_MASK)) );
76 walker->inherited_ar = PT_USER_MASK | PT_WRITABLE_MASK; 104 walker->inherited_ar = PT_USER_MASK | PT_WRITABLE_MASK;
105
106 for (;;) {
107 int index = PT_INDEX(addr, walker->level);
108 hpa_t paddr;
109
110 ptep = &walker->table[index];
111 ASSERT(((unsigned long)walker->table & PAGE_MASK) ==
112 ((unsigned long)ptep & PAGE_MASK));
113
114 if (is_present_pte(*ptep) && !(*ptep & PT_ACCESSED_MASK))
115 *ptep |= PT_ACCESSED_MASK;
116
117 if (!is_present_pte(*ptep))
118 break;
119
120 if (walker->level == PT_PAGE_TABLE_LEVEL) {
121 walker->gfn = (*ptep & PT_BASE_ADDR_MASK)
122 >> PAGE_SHIFT;
123 break;
124 }
125
126 if (walker->level == PT_DIRECTORY_LEVEL
127 && (*ptep & PT_PAGE_SIZE_MASK)
128 && (PTTYPE == 64 || is_pse(vcpu))) {
129 walker->gfn = (*ptep & PT_DIR_BASE_ADDR_MASK)
130 >> PAGE_SHIFT;
131 walker->gfn += PT_INDEX(addr, PT_PAGE_TABLE_LEVEL);
132 break;
133 }
134
135 if (walker->level != 3 || is_long_mode(vcpu))
136 walker->inherited_ar &= walker->table[index];
137 table_gfn = (*ptep & PT_BASE_ADDR_MASK) >> PAGE_SHIFT;
138 paddr = safe_gpa_to_hpa(vcpu, *ptep & PT_BASE_ADDR_MASK);
139 kunmap_atomic(walker->table, KM_USER0);
140 walker->table = kmap_atomic(pfn_to_page(paddr >> PAGE_SHIFT),
141 KM_USER0);
142 --walker->level;
143 walker->table_gfn[walker->level - 1 ] = table_gfn;
144 pgprintk("%s: table_gfn[%d] %lx\n", __FUNCTION__,
145 walker->level - 1, table_gfn);
146 }
147 walker->ptep = ptep;
148 pgprintk("%s: pte %llx\n", __FUNCTION__, (u64)*ptep);
77} 149}
78 150
79static void FNAME(release_walker)(struct guest_walker *walker) 151static void FNAME(release_walker)(struct guest_walker *walker)
80{ 152{
81 kunmap_atomic(walker->table, KM_USER0); 153 if (walker->table)
154 kunmap_atomic(walker->table, KM_USER0);
82} 155}
83 156
84static void FNAME(set_pte)(struct kvm_vcpu *vcpu, u64 guest_pte, 157static void FNAME(set_pte)(struct kvm_vcpu *vcpu, u64 guest_pte,
85 u64 *shadow_pte, u64 access_bits) 158 u64 *shadow_pte, u64 access_bits, gfn_t gfn)
86{ 159{
87 ASSERT(*shadow_pte == 0); 160 ASSERT(*shadow_pte == 0);
88 access_bits &= guest_pte; 161 access_bits &= guest_pte;
89 *shadow_pte = (guest_pte & PT_PTE_COPY_MASK); 162 *shadow_pte = (guest_pte & PT_PTE_COPY_MASK);
90 set_pte_common(vcpu, shadow_pte, guest_pte & PT_BASE_ADDR_MASK, 163 set_pte_common(vcpu, shadow_pte, guest_pte & PT_BASE_ADDR_MASK,
91 guest_pte & PT_DIRTY_MASK, access_bits); 164 guest_pte & PT_DIRTY_MASK, access_bits, gfn);
92} 165}
93 166
94static void FNAME(set_pde)(struct kvm_vcpu *vcpu, u64 guest_pde, 167static void FNAME(set_pde)(struct kvm_vcpu *vcpu, u64 guest_pde,
95 u64 *shadow_pte, u64 access_bits, 168 u64 *shadow_pte, u64 access_bits, gfn_t gfn)
96 int index)
97{ 169{
98 gpa_t gaddr; 170 gpa_t gaddr;
99 171
100 ASSERT(*shadow_pte == 0); 172 ASSERT(*shadow_pte == 0);
101 access_bits &= guest_pde; 173 access_bits &= guest_pde;
102 gaddr = (guest_pde & PT_DIR_BASE_ADDR_MASK) + PAGE_SIZE * index; 174 gaddr = (gpa_t)gfn << PAGE_SHIFT;
103 if (PTTYPE == 32 && is_cpuid_PSE36()) 175 if (PTTYPE == 32 && is_cpuid_PSE36())
104 gaddr |= (guest_pde & PT32_DIR_PSE36_MASK) << 176 gaddr |= (guest_pde & PT32_DIR_PSE36_MASK) <<
105 (32 - PT32_DIR_PSE36_SHIFT); 177 (32 - PT32_DIR_PSE36_SHIFT);
106 *shadow_pte = guest_pde & PT_PTE_COPY_MASK; 178 *shadow_pte = guest_pde & PT_PTE_COPY_MASK;
107 set_pte_common(vcpu, shadow_pte, gaddr, 179 set_pte_common(vcpu, shadow_pte, gaddr,
108 guest_pde & PT_DIRTY_MASK, access_bits); 180 guest_pde & PT_DIRTY_MASK, access_bits, gfn);
109}
110
111/*
112 * Fetch a guest pte from a specific level in the paging hierarchy.
113 */
114static pt_element_t *FNAME(fetch_guest)(struct kvm_vcpu *vcpu,
115 struct guest_walker *walker,
116 int level,
117 gva_t addr)
118{
119
120 ASSERT(level > 0 && level <= walker->level);
121
122 for (;;) {
123 int index = PT_INDEX(addr, walker->level);
124 hpa_t paddr;
125
126 ASSERT(((unsigned long)walker->table & PAGE_MASK) ==
127 ((unsigned long)&walker->table[index] & PAGE_MASK));
128 if (level == walker->level ||
129 !is_present_pte(walker->table[index]) ||
130 (walker->level == PT_DIRECTORY_LEVEL &&
131 (walker->table[index] & PT_PAGE_SIZE_MASK) &&
132 (PTTYPE == 64 || is_pse(vcpu))))
133 return &walker->table[index];
134 if (walker->level != 3 || is_long_mode(vcpu))
135 walker->inherited_ar &= walker->table[index];
136 paddr = safe_gpa_to_hpa(vcpu, walker->table[index] & PT_BASE_ADDR_MASK);
137 kunmap_atomic(walker->table, KM_USER0);
138 walker->table = kmap_atomic(pfn_to_page(paddr >> PAGE_SHIFT),
139 KM_USER0);
140 --walker->level;
141 }
142} 181}
143 182
144/* 183/*
@@ -150,15 +189,26 @@ static u64 *FNAME(fetch)(struct kvm_vcpu *vcpu, gva_t addr,
150 hpa_t shadow_addr; 189 hpa_t shadow_addr;
151 int level; 190 int level;
152 u64 *prev_shadow_ent = NULL; 191 u64 *prev_shadow_ent = NULL;
192 pt_element_t *guest_ent = walker->ptep;
193
194 if (!is_present_pte(*guest_ent))
195 return NULL;
153 196
154 shadow_addr = vcpu->mmu.root_hpa; 197 shadow_addr = vcpu->mmu.root_hpa;
155 level = vcpu->mmu.shadow_root_level; 198 level = vcpu->mmu.shadow_root_level;
199 if (level == PT32E_ROOT_LEVEL) {
200 shadow_addr = vcpu->mmu.pae_root[(addr >> 30) & 3];
201 shadow_addr &= PT64_BASE_ADDR_MASK;
202 --level;
203 }
156 204
157 for (; ; level--) { 205 for (; ; level--) {
158 u32 index = SHADOW_PT_INDEX(addr, level); 206 u32 index = SHADOW_PT_INDEX(addr, level);
159 u64 *shadow_ent = ((u64 *)__va(shadow_addr)) + index; 207 u64 *shadow_ent = ((u64 *)__va(shadow_addr)) + index;
160 pt_element_t *guest_ent; 208 struct kvm_mmu_page *shadow_page;
161 u64 shadow_pte; 209 u64 shadow_pte;
210 int metaphysical;
211 gfn_t table_gfn;
162 212
163 if (is_present_pte(*shadow_ent) || is_io_pte(*shadow_ent)) { 213 if (is_present_pte(*shadow_ent) || is_io_pte(*shadow_ent)) {
164 if (level == PT_PAGE_TABLE_LEVEL) 214 if (level == PT_PAGE_TABLE_LEVEL)
@@ -168,21 +218,6 @@ static u64 *FNAME(fetch)(struct kvm_vcpu *vcpu, gva_t addr,
168 continue; 218 continue;
169 } 219 }
170 220
171 if (PTTYPE == 32 && level > PT32_ROOT_LEVEL) {
172 ASSERT(level == PT32E_ROOT_LEVEL);
173 guest_ent = FNAME(fetch_guest)(vcpu, walker,
174 PT32_ROOT_LEVEL, addr);
175 } else
176 guest_ent = FNAME(fetch_guest)(vcpu, walker,
177 level, addr);
178
179 if (!is_present_pte(*guest_ent))
180 return NULL;
181
182 /* Don't set accessed bit on PAE PDPTRs */
183 if (vcpu->mmu.root_level != 3 || walker->level != 3)
184 *guest_ent |= PT_ACCESSED_MASK;
185
186 if (level == PT_PAGE_TABLE_LEVEL) { 221 if (level == PT_PAGE_TABLE_LEVEL) {
187 222
188 if (walker->level == PT_DIRECTORY_LEVEL) { 223 if (walker->level == PT_DIRECTORY_LEVEL) {
@@ -190,21 +225,30 @@ static u64 *FNAME(fetch)(struct kvm_vcpu *vcpu, gva_t addr,
190 *prev_shadow_ent |= PT_SHADOW_PS_MARK; 225 *prev_shadow_ent |= PT_SHADOW_PS_MARK;
191 FNAME(set_pde)(vcpu, *guest_ent, shadow_ent, 226 FNAME(set_pde)(vcpu, *guest_ent, shadow_ent,
192 walker->inherited_ar, 227 walker->inherited_ar,
193 PT_INDEX(addr, PT_PAGE_TABLE_LEVEL)); 228 walker->gfn);
194 } else { 229 } else {
195 ASSERT(walker->level == PT_PAGE_TABLE_LEVEL); 230 ASSERT(walker->level == PT_PAGE_TABLE_LEVEL);
196 FNAME(set_pte)(vcpu, *guest_ent, shadow_ent, walker->inherited_ar); 231 FNAME(set_pte)(vcpu, *guest_ent, shadow_ent,
232 walker->inherited_ar,
233 walker->gfn);
197 } 234 }
198 return shadow_ent; 235 return shadow_ent;
199 } 236 }
200 237
201 shadow_addr = kvm_mmu_alloc_page(vcpu, shadow_ent); 238 if (level - 1 == PT_PAGE_TABLE_LEVEL
202 if (!VALID_PAGE(shadow_addr)) 239 && walker->level == PT_DIRECTORY_LEVEL) {
203 return ERR_PTR(-ENOMEM); 240 metaphysical = 1;
204 shadow_pte = shadow_addr | PT_PRESENT_MASK; 241 table_gfn = (*guest_ent & PT_BASE_ADDR_MASK)
205 if (vcpu->mmu.root_level > 3 || level != 3) 242 >> PAGE_SHIFT;
206 shadow_pte |= PT_ACCESSED_MASK 243 } else {
207 | PT_WRITABLE_MASK | PT_USER_MASK; 244 metaphysical = 0;
245 table_gfn = walker->table_gfn[level - 2];
246 }
247 shadow_page = kvm_mmu_get_page(vcpu, table_gfn, addr, level-1,
248 metaphysical, shadow_ent);
249 shadow_addr = shadow_page->page_hpa;
250 shadow_pte = shadow_addr | PT_PRESENT_MASK | PT_ACCESSED_MASK
251 | PT_WRITABLE_MASK | PT_USER_MASK;
208 *shadow_ent = shadow_pte; 252 *shadow_ent = shadow_pte;
209 prev_shadow_ent = shadow_ent; 253 prev_shadow_ent = shadow_ent;
210 } 254 }
@@ -221,11 +265,13 @@ static int FNAME(fix_write_pf)(struct kvm_vcpu *vcpu,
221 u64 *shadow_ent, 265 u64 *shadow_ent,
222 struct guest_walker *walker, 266 struct guest_walker *walker,
223 gva_t addr, 267 gva_t addr,
224 int user) 268 int user,
269 int *write_pt)
225{ 270{
226 pt_element_t *guest_ent; 271 pt_element_t *guest_ent;
227 int writable_shadow; 272 int writable_shadow;
228 gfn_t gfn; 273 gfn_t gfn;
274 struct kvm_mmu_page *page;
229 275
230 if (is_writeble_pte(*shadow_ent)) 276 if (is_writeble_pte(*shadow_ent))
231 return 0; 277 return 0;
@@ -250,17 +296,35 @@ static int FNAME(fix_write_pf)(struct kvm_vcpu *vcpu,
250 *shadow_ent &= ~PT_USER_MASK; 296 *shadow_ent &= ~PT_USER_MASK;
251 } 297 }
252 298
253 guest_ent = FNAME(fetch_guest)(vcpu, walker, PT_PAGE_TABLE_LEVEL, addr); 299 guest_ent = walker->ptep;
254 300
255 if (!is_present_pte(*guest_ent)) { 301 if (!is_present_pte(*guest_ent)) {
256 *shadow_ent = 0; 302 *shadow_ent = 0;
257 return 0; 303 return 0;
258 } 304 }
259 305
260 gfn = (*guest_ent & PT64_BASE_ADDR_MASK) >> PAGE_SHIFT; 306 gfn = walker->gfn;
307
308 if (user) {
309 /*
310 * Usermode page faults won't be for page table updates.
311 */
312 while ((page = kvm_mmu_lookup_page(vcpu, gfn)) != NULL) {
313 pgprintk("%s: zap %lx %x\n",
314 __FUNCTION__, gfn, page->role.word);
315 kvm_mmu_zap_page(vcpu, page);
316 }
317 } else if (kvm_mmu_lookup_page(vcpu, gfn)) {
318 pgprintk("%s: found shadow page for %lx, marking ro\n",
319 __FUNCTION__, gfn);
320 *guest_ent |= PT_DIRTY_MASK;
321 *write_pt = 1;
322 return 0;
323 }
261 mark_page_dirty(vcpu->kvm, gfn); 324 mark_page_dirty(vcpu->kvm, gfn);
262 *shadow_ent |= PT_WRITABLE_MASK; 325 *shadow_ent |= PT_WRITABLE_MASK;
263 *guest_ent |= PT_DIRTY_MASK; 326 *guest_ent |= PT_DIRTY_MASK;
327 rmap_add(vcpu, shadow_ent);
264 328
265 return 1; 329 return 1;
266} 330}
@@ -276,7 +340,8 @@ static int FNAME(fix_write_pf)(struct kvm_vcpu *vcpu,
276 * - normal guest page fault due to the guest pte marked not present, not 340 * - normal guest page fault due to the guest pte marked not present, not
277 * writable, or not executable 341 * writable, or not executable
278 * 342 *
279 * Returns: 1 if we need to emulate the instruction, 0 otherwise 343 * Returns: 1 if we need to emulate the instruction, 0 otherwise, or
344 * a negative value on error.
280 */ 345 */
281static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr, 346static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr,
282 u32 error_code) 347 u32 error_code)
@@ -287,39 +352,47 @@ static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr,
287 struct guest_walker walker; 352 struct guest_walker walker;
288 u64 *shadow_pte; 353 u64 *shadow_pte;
289 int fixed; 354 int fixed;
355 int write_pt = 0;
356 int r;
357
358 pgprintk("%s: addr %lx err %x\n", __FUNCTION__, addr, error_code);
359 kvm_mmu_audit(vcpu, "pre page fault");
360
361 r = mmu_topup_memory_caches(vcpu);
362 if (r)
363 return r;
290 364
291 /* 365 /*
292 * Look up the shadow pte for the faulting address. 366 * Look up the shadow pte for the faulting address.
293 */ 367 */
294 for (;;) { 368 FNAME(walk_addr)(&walker, vcpu, addr);
295 FNAME(init_walker)(&walker, vcpu); 369 shadow_pte = FNAME(fetch)(vcpu, addr, &walker);
296 shadow_pte = FNAME(fetch)(vcpu, addr, &walker);
297 if (IS_ERR(shadow_pte)) { /* must be -ENOMEM */
298 nonpaging_flush(vcpu);
299 FNAME(release_walker)(&walker);
300 continue;
301 }
302 break;
303 }
304 370
305 /* 371 /*
306 * The page is not mapped by the guest. Let the guest handle it. 372 * The page is not mapped by the guest. Let the guest handle it.
307 */ 373 */
308 if (!shadow_pte) { 374 if (!shadow_pte) {
375 pgprintk("%s: not mapped\n", __FUNCTION__);
309 inject_page_fault(vcpu, addr, error_code); 376 inject_page_fault(vcpu, addr, error_code);
310 FNAME(release_walker)(&walker); 377 FNAME(release_walker)(&walker);
311 return 0; 378 return 0;
312 } 379 }
313 380
381 pgprintk("%s: shadow pte %p %llx\n", __FUNCTION__,
382 shadow_pte, *shadow_pte);
383
314 /* 384 /*
315 * Update the shadow pte. 385 * Update the shadow pte.
316 */ 386 */
317 if (write_fault) 387 if (write_fault)
318 fixed = FNAME(fix_write_pf)(vcpu, shadow_pte, &walker, addr, 388 fixed = FNAME(fix_write_pf)(vcpu, shadow_pte, &walker, addr,
319 user_fault); 389 user_fault, &write_pt);
320 else 390 else
321 fixed = fix_read_pf(shadow_pte); 391 fixed = fix_read_pf(shadow_pte);
322 392
393 pgprintk("%s: updated shadow pte %p %llx\n", __FUNCTION__,
394 shadow_pte, *shadow_pte);
395
323 FNAME(release_walker)(&walker); 396 FNAME(release_walker)(&walker);
324 397
325 /* 398 /*
@@ -331,20 +404,23 @@ static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr,
331 pgprintk("%s: io work, no access\n", __FUNCTION__); 404 pgprintk("%s: io work, no access\n", __FUNCTION__);
332 inject_page_fault(vcpu, addr, 405 inject_page_fault(vcpu, addr,
333 error_code | PFERR_PRESENT_MASK); 406 error_code | PFERR_PRESENT_MASK);
407 kvm_mmu_audit(vcpu, "post page fault (io)");
334 return 0; 408 return 0;
335 } 409 }
336 410
337 /* 411 /*
338 * pte not present, guest page fault. 412 * pte not present, guest page fault.
339 */ 413 */
340 if (pte_present && !fixed) { 414 if (pte_present && !fixed && !write_pt) {
341 inject_page_fault(vcpu, addr, error_code); 415 inject_page_fault(vcpu, addr, error_code);
416 kvm_mmu_audit(vcpu, "post page fault (guest)");
342 return 0; 417 return 0;
343 } 418 }
344 419
345 ++kvm_stat.pf_fixed; 420 ++kvm_stat.pf_fixed;
421 kvm_mmu_audit(vcpu, "post page fault (fixed)");
346 422
347 return 0; 423 return write_pt;
348} 424}
349 425
350static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr) 426static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr)
@@ -353,9 +429,8 @@ static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr)
353 pt_element_t guest_pte; 429 pt_element_t guest_pte;
354 gpa_t gpa; 430 gpa_t gpa;
355 431
356 FNAME(init_walker)(&walker, vcpu); 432 FNAME(walk_addr)(&walker, vcpu, vaddr);
357 guest_pte = *FNAME(fetch_guest)(vcpu, &walker, PT_PAGE_TABLE_LEVEL, 433 guest_pte = *walker.ptep;
358 vaddr);
359 FNAME(release_walker)(&walker); 434 FNAME(release_walker)(&walker);
360 435
361 if (!is_present_pte(guest_pte)) 436 if (!is_present_pte(guest_pte))
@@ -389,3 +464,4 @@ static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr)
389#undef PT_PTE_COPY_MASK 464#undef PT_PTE_COPY_MASK
390#undef PT_NON_PTE_COPY_MASK 465#undef PT_NON_PTE_COPY_MASK
391#undef PT_DIR_BASE_ADDR_MASK 466#undef PT_DIR_BASE_ADDR_MASK
467#undef PT_MAX_FULL_LEVELS
diff --git a/drivers/kvm/svm.c b/drivers/kvm/svm.c
index fa0428735717..714f6a7841cd 100644
--- a/drivers/kvm/svm.c
+++ b/drivers/kvm/svm.c
@@ -17,6 +17,7 @@
17#include <linux/module.h> 17#include <linux/module.h>
18#include <linux/vmalloc.h> 18#include <linux/vmalloc.h>
19#include <linux/highmem.h> 19#include <linux/highmem.h>
20#include <linux/profile.h>
20#include <asm/desc.h> 21#include <asm/desc.h>
21 22
22#include "kvm_svm.h" 23#include "kvm_svm.h"
@@ -235,6 +236,8 @@ static void skip_emulated_instruction(struct kvm_vcpu *vcpu)
235 236
236 vcpu->rip = vcpu->svm->vmcb->save.rip = vcpu->svm->next_rip; 237 vcpu->rip = vcpu->svm->vmcb->save.rip = vcpu->svm->next_rip;
237 vcpu->svm->vmcb->control.int_state &= ~SVM_INTERRUPT_SHADOW_MASK; 238 vcpu->svm->vmcb->control.int_state &= ~SVM_INTERRUPT_SHADOW_MASK;
239
240 vcpu->interrupt_window_open = 1;
238} 241}
239 242
240static int has_svm(void) 243static int has_svm(void)
@@ -495,7 +498,6 @@ static void init_vmcb(struct vmcb *vmcb)
495 /* (1ULL << INTERCEPT_SELECTIVE_CR0) | */ 498 /* (1ULL << INTERCEPT_SELECTIVE_CR0) | */
496 (1ULL << INTERCEPT_CPUID) | 499 (1ULL << INTERCEPT_CPUID) |
497 (1ULL << INTERCEPT_HLT) | 500 (1ULL << INTERCEPT_HLT) |
498 (1ULL << INTERCEPT_INVLPG) |
499 (1ULL << INTERCEPT_INVLPGA) | 501 (1ULL << INTERCEPT_INVLPGA) |
500 (1ULL << INTERCEPT_IOIO_PROT) | 502 (1ULL << INTERCEPT_IOIO_PROT) |
501 (1ULL << INTERCEPT_MSR_PROT) | 503 (1ULL << INTERCEPT_MSR_PROT) |
@@ -700,6 +702,10 @@ static void svm_set_gdt(struct kvm_vcpu *vcpu, struct descriptor_table *dt)
700 vcpu->svm->vmcb->save.gdtr.base = dt->base ; 702 vcpu->svm->vmcb->save.gdtr.base = dt->base ;
701} 703}
702 704
705static void svm_decache_cr0_cr4_guest_bits(struct kvm_vcpu *vcpu)
706{
707}
708
703static void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0) 709static void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
704{ 710{
705#ifdef CONFIG_X86_64 711#ifdef CONFIG_X86_64
@@ -847,6 +853,7 @@ static int pf_interception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
847 u64 fault_address; 853 u64 fault_address;
848 u32 error_code; 854 u32 error_code;
849 enum emulation_result er; 855 enum emulation_result er;
856 int r;
850 857
851 if (is_external_interrupt(exit_int_info)) 858 if (is_external_interrupt(exit_int_info))
852 push_irq(vcpu, exit_int_info & SVM_EVTINJ_VEC_MASK); 859 push_irq(vcpu, exit_int_info & SVM_EVTINJ_VEC_MASK);
@@ -855,7 +862,12 @@ static int pf_interception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
855 862
856 fault_address = vcpu->svm->vmcb->control.exit_info_2; 863 fault_address = vcpu->svm->vmcb->control.exit_info_2;
857 error_code = vcpu->svm->vmcb->control.exit_info_1; 864 error_code = vcpu->svm->vmcb->control.exit_info_1;
858 if (!vcpu->mmu.page_fault(vcpu, fault_address, error_code)) { 865 r = kvm_mmu_page_fault(vcpu, fault_address, error_code);
866 if (r < 0) {
867 spin_unlock(&vcpu->kvm->lock);
868 return r;
869 }
870 if (!r) {
859 spin_unlock(&vcpu->kvm->lock); 871 spin_unlock(&vcpu->kvm->lock);
860 return 1; 872 return 1;
861 } 873 }
@@ -1031,10 +1043,11 @@ static int halt_interception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1031{ 1043{
1032 vcpu->svm->next_rip = vcpu->svm->vmcb->save.rip + 1; 1044 vcpu->svm->next_rip = vcpu->svm->vmcb->save.rip + 1;
1033 skip_emulated_instruction(vcpu); 1045 skip_emulated_instruction(vcpu);
1034 if (vcpu->irq_summary && (vcpu->svm->vmcb->save.rflags & X86_EFLAGS_IF)) 1046 if (vcpu->irq_summary)
1035 return 1; 1047 return 1;
1036 1048
1037 kvm_run->exit_reason = KVM_EXIT_HLT; 1049 kvm_run->exit_reason = KVM_EXIT_HLT;
1050 ++kvm_stat.halt_exits;
1038 return 0; 1051 return 0;
1039} 1052}
1040 1053
@@ -1186,6 +1199,23 @@ static int msr_interception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1186 return rdmsr_interception(vcpu, kvm_run); 1199 return rdmsr_interception(vcpu, kvm_run);
1187} 1200}
1188 1201
1202static int interrupt_window_interception(struct kvm_vcpu *vcpu,
1203 struct kvm_run *kvm_run)
1204{
1205 /*
1206 * If the user space waits to inject interrupts, exit as soon as
1207 * possible
1208 */
1209 if (kvm_run->request_interrupt_window &&
1210 !vcpu->irq_summary) {
1211 ++kvm_stat.irq_window_exits;
1212 kvm_run->exit_reason = KVM_EXIT_IRQ_WINDOW_OPEN;
1213 return 0;
1214 }
1215
1216 return 1;
1217}
1218
1189static int (*svm_exit_handlers[])(struct kvm_vcpu *vcpu, 1219static int (*svm_exit_handlers[])(struct kvm_vcpu *vcpu,
1190 struct kvm_run *kvm_run) = { 1220 struct kvm_run *kvm_run) = {
1191 [SVM_EXIT_READ_CR0] = emulate_on_interception, 1221 [SVM_EXIT_READ_CR0] = emulate_on_interception,
@@ -1210,6 +1240,7 @@ static int (*svm_exit_handlers[])(struct kvm_vcpu *vcpu,
1210 [SVM_EXIT_NMI] = nop_on_interception, 1240 [SVM_EXIT_NMI] = nop_on_interception,
1211 [SVM_EXIT_SMI] = nop_on_interception, 1241 [SVM_EXIT_SMI] = nop_on_interception,
1212 [SVM_EXIT_INIT] = nop_on_interception, 1242 [SVM_EXIT_INIT] = nop_on_interception,
1243 [SVM_EXIT_VINTR] = interrupt_window_interception,
1213 /* [SVM_EXIT_CR0_SEL_WRITE] = emulate_on_interception, */ 1244 /* [SVM_EXIT_CR0_SEL_WRITE] = emulate_on_interception, */
1214 [SVM_EXIT_CPUID] = cpuid_interception, 1245 [SVM_EXIT_CPUID] = cpuid_interception,
1215 [SVM_EXIT_HLT] = halt_interception, 1246 [SVM_EXIT_HLT] = halt_interception,
@@ -1278,15 +1309,11 @@ static void pre_svm_run(struct kvm_vcpu *vcpu)
1278} 1309}
1279 1310
1280 1311
1281static inline void kvm_try_inject_irq(struct kvm_vcpu *vcpu) 1312static inline void kvm_do_inject_irq(struct kvm_vcpu *vcpu)
1282{ 1313{
1283 struct vmcb_control_area *control; 1314 struct vmcb_control_area *control;
1284 1315
1285 if (!vcpu->irq_summary)
1286 return;
1287
1288 control = &vcpu->svm->vmcb->control; 1316 control = &vcpu->svm->vmcb->control;
1289
1290 control->int_vector = pop_irq(vcpu); 1317 control->int_vector = pop_irq(vcpu);
1291 control->int_ctl &= ~V_INTR_PRIO_MASK; 1318 control->int_ctl &= ~V_INTR_PRIO_MASK;
1292 control->int_ctl |= V_IRQ_MASK | 1319 control->int_ctl |= V_IRQ_MASK |
@@ -1301,6 +1328,59 @@ static void kvm_reput_irq(struct kvm_vcpu *vcpu)
1301 control->int_ctl &= ~V_IRQ_MASK; 1328 control->int_ctl &= ~V_IRQ_MASK;
1302 push_irq(vcpu, control->int_vector); 1329 push_irq(vcpu, control->int_vector);
1303 } 1330 }
1331
1332 vcpu->interrupt_window_open =
1333 !(control->int_state & SVM_INTERRUPT_SHADOW_MASK);
1334}
1335
1336static void do_interrupt_requests(struct kvm_vcpu *vcpu,
1337 struct kvm_run *kvm_run)
1338{
1339 struct vmcb_control_area *control = &vcpu->svm->vmcb->control;
1340
1341 vcpu->interrupt_window_open =
1342 (!(control->int_state & SVM_INTERRUPT_SHADOW_MASK) &&
1343 (vcpu->svm->vmcb->save.rflags & X86_EFLAGS_IF));
1344
1345 if (vcpu->interrupt_window_open && vcpu->irq_summary)
1346 /*
1347 * If interrupts enabled, and not blocked by sti or mov ss. Good.
1348 */
1349 kvm_do_inject_irq(vcpu);
1350
1351 /*
1352 * Interrupts blocked. Wait for unblock.
1353 */
1354 if (!vcpu->interrupt_window_open &&
1355 (vcpu->irq_summary || kvm_run->request_interrupt_window)) {
1356 control->intercept |= 1ULL << INTERCEPT_VINTR;
1357 } else
1358 control->intercept &= ~(1ULL << INTERCEPT_VINTR);
1359}
1360
1361static void post_kvm_run_save(struct kvm_vcpu *vcpu,
1362 struct kvm_run *kvm_run)
1363{
1364 kvm_run->ready_for_interrupt_injection = (vcpu->interrupt_window_open &&
1365 vcpu->irq_summary == 0);
1366 kvm_run->if_flag = (vcpu->svm->vmcb->save.rflags & X86_EFLAGS_IF) != 0;
1367 kvm_run->cr8 = vcpu->cr8;
1368 kvm_run->apic_base = vcpu->apic_base;
1369}
1370
1371/*
1372 * Check if userspace requested an interrupt window, and that the
1373 * interrupt window is open.
1374 *
1375 * No need to exit to userspace if we already have an interrupt queued.
1376 */
1377static int dm_request_for_irq_injection(struct kvm_vcpu *vcpu,
1378 struct kvm_run *kvm_run)
1379{
1380 return (!vcpu->irq_summary &&
1381 kvm_run->request_interrupt_window &&
1382 vcpu->interrupt_window_open &&
1383 (vcpu->svm->vmcb->save.rflags & X86_EFLAGS_IF));
1304} 1384}
1305 1385
1306static void save_db_regs(unsigned long *db_regs) 1386static void save_db_regs(unsigned long *db_regs)
@@ -1324,9 +1404,10 @@ static int svm_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1324 u16 fs_selector; 1404 u16 fs_selector;
1325 u16 gs_selector; 1405 u16 gs_selector;
1326 u16 ldt_selector; 1406 u16 ldt_selector;
1407 int r;
1327 1408
1328again: 1409again:
1329 kvm_try_inject_irq(vcpu); 1410 do_interrupt_requests(vcpu, kvm_run);
1330 1411
1331 clgi(); 1412 clgi();
1332 1413
@@ -1478,6 +1559,13 @@ again:
1478 1559
1479 reload_tss(vcpu); 1560 reload_tss(vcpu);
1480 1561
1562 /*
1563 * Profile KVM exit RIPs:
1564 */
1565 if (unlikely(prof_on == KVM_PROFILING))
1566 profile_hit(KVM_PROFILING,
1567 (void *)(unsigned long)vcpu->svm->vmcb->save.rip);
1568
1481 stgi(); 1569 stgi();
1482 1570
1483 kvm_reput_irq(vcpu); 1571 kvm_reput_irq(vcpu);
@@ -1487,18 +1575,28 @@ again:
1487 if (vcpu->svm->vmcb->control.exit_code == SVM_EXIT_ERR) { 1575 if (vcpu->svm->vmcb->control.exit_code == SVM_EXIT_ERR) {
1488 kvm_run->exit_type = KVM_EXIT_TYPE_FAIL_ENTRY; 1576 kvm_run->exit_type = KVM_EXIT_TYPE_FAIL_ENTRY;
1489 kvm_run->exit_reason = vcpu->svm->vmcb->control.exit_code; 1577 kvm_run->exit_reason = vcpu->svm->vmcb->control.exit_code;
1578 post_kvm_run_save(vcpu, kvm_run);
1490 return 0; 1579 return 0;
1491 } 1580 }
1492 1581
1493 if (handle_exit(vcpu, kvm_run)) { 1582 r = handle_exit(vcpu, kvm_run);
1583 if (r > 0) {
1494 if (signal_pending(current)) { 1584 if (signal_pending(current)) {
1495 ++kvm_stat.signal_exits; 1585 ++kvm_stat.signal_exits;
1586 post_kvm_run_save(vcpu, kvm_run);
1587 return -EINTR;
1588 }
1589
1590 if (dm_request_for_irq_injection(vcpu, kvm_run)) {
1591 ++kvm_stat.request_irq_exits;
1592 post_kvm_run_save(vcpu, kvm_run);
1496 return -EINTR; 1593 return -EINTR;
1497 } 1594 }
1498 kvm_resched(vcpu); 1595 kvm_resched(vcpu);
1499 goto again; 1596 goto again;
1500 } 1597 }
1501 return 0; 1598 post_kvm_run_save(vcpu, kvm_run);
1599 return r;
1502} 1600}
1503 1601
1504static void svm_flush_tlb(struct kvm_vcpu *vcpu) 1602static void svm_flush_tlb(struct kvm_vcpu *vcpu)
@@ -1565,6 +1663,7 @@ static struct kvm_arch_ops svm_arch_ops = {
1565 .get_segment = svm_get_segment, 1663 .get_segment = svm_get_segment,
1566 .set_segment = svm_set_segment, 1664 .set_segment = svm_set_segment,
1567 .get_cs_db_l_bits = svm_get_cs_db_l_bits, 1665 .get_cs_db_l_bits = svm_get_cs_db_l_bits,
1666 .decache_cr0_cr4_guest_bits = svm_decache_cr0_cr4_guest_bits,
1568 .set_cr0 = svm_set_cr0, 1667 .set_cr0 = svm_set_cr0,
1569 .set_cr0_no_modeswitch = svm_set_cr0, 1668 .set_cr0_no_modeswitch = svm_set_cr0,
1570 .set_cr3 = svm_set_cr3, 1669 .set_cr3 = svm_set_cr3,
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index d0a2c2d5342a..ce219e3f557f 100644
--- a/drivers/kvm/vmx.c
+++ b/drivers/kvm/vmx.c
@@ -21,6 +21,7 @@
21#include <linux/module.h> 21#include <linux/module.h>
22#include <linux/mm.h> 22#include <linux/mm.h>
23#include <linux/highmem.h> 23#include <linux/highmem.h>
24#include <linux/profile.h>
24#include <asm/io.h> 25#include <asm/io.h>
25#include <asm/desc.h> 26#include <asm/desc.h>
26 27
@@ -116,7 +117,7 @@ static void vmcs_clear(struct vmcs *vmcs)
116static void __vcpu_clear(void *arg) 117static void __vcpu_clear(void *arg)
117{ 118{
118 struct kvm_vcpu *vcpu = arg; 119 struct kvm_vcpu *vcpu = arg;
119 int cpu = smp_processor_id(); 120 int cpu = raw_smp_processor_id();
120 121
121 if (vcpu->cpu == cpu) 122 if (vcpu->cpu == cpu)
122 vmcs_clear(vcpu->vmcs); 123 vmcs_clear(vcpu->vmcs);
@@ -152,15 +153,21 @@ static u64 vmcs_read64(unsigned long field)
152#endif 153#endif
153} 154}
154 155
156static noinline void vmwrite_error(unsigned long field, unsigned long value)
157{
158 printk(KERN_ERR "vmwrite error: reg %lx value %lx (err %d)\n",
159 field, value, vmcs_read32(VM_INSTRUCTION_ERROR));
160 dump_stack();
161}
162
155static void vmcs_writel(unsigned long field, unsigned long value) 163static void vmcs_writel(unsigned long field, unsigned long value)
156{ 164{
157 u8 error; 165 u8 error;
158 166
159 asm volatile (ASM_VMX_VMWRITE_RAX_RDX "; setna %0" 167 asm volatile (ASM_VMX_VMWRITE_RAX_RDX "; setna %0"
160 : "=q"(error) : "a"(value), "d"(field) : "cc" ); 168 : "=q"(error) : "a"(value), "d"(field) : "cc" );
161 if (error) 169 if (unlikely(error))
162 printk(KERN_ERR "vmwrite error: reg %lx value %lx (err %d)\n", 170 vmwrite_error(field, value);
163 field, value, vmcs_read32(VM_INSTRUCTION_ERROR));
164} 171}
165 172
166static void vmcs_write16(unsigned long field, u16 value) 173static void vmcs_write16(unsigned long field, u16 value)
@@ -263,6 +270,7 @@ static void skip_emulated_instruction(struct kvm_vcpu *vcpu)
263 if (interruptibility & 3) 270 if (interruptibility & 3)
264 vmcs_write32(GUEST_INTERRUPTIBILITY_INFO, 271 vmcs_write32(GUEST_INTERRUPTIBILITY_INFO,
265 interruptibility & ~3); 272 interruptibility & ~3);
273 vcpu->interrupt_window_open = 1;
266} 274}
267 275
268static void vmx_inject_gp(struct kvm_vcpu *vcpu, unsigned error_code) 276static void vmx_inject_gp(struct kvm_vcpu *vcpu, unsigned error_code)
@@ -541,7 +549,7 @@ static struct vmcs *alloc_vmcs_cpu(int cpu)
541 549
542static struct vmcs *alloc_vmcs(void) 550static struct vmcs *alloc_vmcs(void)
543{ 551{
544 return alloc_vmcs_cpu(smp_processor_id()); 552 return alloc_vmcs_cpu(raw_smp_processor_id());
545} 553}
546 554
547static void free_vmcs(struct vmcs *vmcs) 555static void free_vmcs(struct vmcs *vmcs)
@@ -736,6 +744,15 @@ static void exit_lmode(struct kvm_vcpu *vcpu)
736 744
737#endif 745#endif
738 746
747static void vmx_decache_cr0_cr4_guest_bits(struct kvm_vcpu *vcpu)
748{
749 vcpu->cr0 &= KVM_GUEST_CR0_MASK;
750 vcpu->cr0 |= vmcs_readl(GUEST_CR0) & ~KVM_GUEST_CR0_MASK;
751
752 vcpu->cr4 &= KVM_GUEST_CR4_MASK;
753 vcpu->cr4 |= vmcs_readl(GUEST_CR4) & ~KVM_GUEST_CR4_MASK;
754}
755
739static void vmx_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0) 756static void vmx_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
740{ 757{
741 if (vcpu->rmode.active && (cr0 & CR0_PE_MASK)) 758 if (vcpu->rmode.active && (cr0 & CR0_PE_MASK))
@@ -1011,8 +1028,6 @@ static int vmx_vcpu_setup(struct kvm_vcpu *vcpu)
1011 vmcs_writel(GUEST_RIP, 0xfff0); 1028 vmcs_writel(GUEST_RIP, 0xfff0);
1012 vmcs_writel(GUEST_RSP, 0); 1029 vmcs_writel(GUEST_RSP, 0);
1013 1030
1014 vmcs_writel(GUEST_CR3, 0);
1015
1016 //todo: dr0 = dr1 = dr2 = dr3 = 0; dr6 = 0xffff0ff0 1031 //todo: dr0 = dr1 = dr2 = dr3 = 0; dr6 = 0xffff0ff0
1017 vmcs_writel(GUEST_DR7, 0x400); 1032 vmcs_writel(GUEST_DR7, 0x400);
1018 1033
@@ -1049,7 +1064,6 @@ static int vmx_vcpu_setup(struct kvm_vcpu *vcpu)
1049 | CPU_BASED_CR8_LOAD_EXITING /* 20.6.2 */ 1064 | CPU_BASED_CR8_LOAD_EXITING /* 20.6.2 */
1050 | CPU_BASED_CR8_STORE_EXITING /* 20.6.2 */ 1065 | CPU_BASED_CR8_STORE_EXITING /* 20.6.2 */
1051 | CPU_BASED_UNCOND_IO_EXITING /* 20.6.2 */ 1066 | CPU_BASED_UNCOND_IO_EXITING /* 20.6.2 */
1052 | CPU_BASED_INVDPG_EXITING
1053 | CPU_BASED_MOV_DR_EXITING 1067 | CPU_BASED_MOV_DR_EXITING
1054 | CPU_BASED_USE_TSC_OFFSETING /* 21.3 */ 1068 | CPU_BASED_USE_TSC_OFFSETING /* 21.3 */
1055 ); 1069 );
@@ -1094,14 +1108,6 @@ static int vmx_vcpu_setup(struct kvm_vcpu *vcpu)
1094 rdmsrl(MSR_IA32_SYSENTER_EIP, a); 1108 rdmsrl(MSR_IA32_SYSENTER_EIP, a);
1095 vmcs_writel(HOST_IA32_SYSENTER_EIP, a); /* 22.2.3 */ 1109 vmcs_writel(HOST_IA32_SYSENTER_EIP, a); /* 22.2.3 */
1096 1110
1097 ret = -ENOMEM;
1098 vcpu->guest_msrs = kmalloc(PAGE_SIZE, GFP_KERNEL);
1099 if (!vcpu->guest_msrs)
1100 goto out;
1101 vcpu->host_msrs = kmalloc(PAGE_SIZE, GFP_KERNEL);
1102 if (!vcpu->host_msrs)
1103 goto out_free_guest_msrs;
1104
1105 for (i = 0; i < NR_VMX_MSR; ++i) { 1111 for (i = 0; i < NR_VMX_MSR; ++i) {
1106 u32 index = vmx_msr_index[i]; 1112 u32 index = vmx_msr_index[i];
1107 u32 data_low, data_high; 1113 u32 data_low, data_high;
@@ -1155,8 +1161,6 @@ static int vmx_vcpu_setup(struct kvm_vcpu *vcpu)
1155 1161
1156 return 0; 1162 return 0;
1157 1163
1158out_free_guest_msrs:
1159 kfree(vcpu->guest_msrs);
1160out: 1164out:
1161 return ret; 1165 return ret;
1162} 1166}
@@ -1224,21 +1228,34 @@ static void kvm_do_inject_irq(struct kvm_vcpu *vcpu)
1224 irq | INTR_TYPE_EXT_INTR | INTR_INFO_VALID_MASK); 1228 irq | INTR_TYPE_EXT_INTR | INTR_INFO_VALID_MASK);
1225} 1229}
1226 1230
1227static void kvm_try_inject_irq(struct kvm_vcpu *vcpu) 1231
1232static void do_interrupt_requests(struct kvm_vcpu *vcpu,
1233 struct kvm_run *kvm_run)
1228{ 1234{
1229 if ((vmcs_readl(GUEST_RFLAGS) & X86_EFLAGS_IF) 1235 u32 cpu_based_vm_exec_control;
1230 && (vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & 3) == 0) 1236
1237 vcpu->interrupt_window_open =
1238 ((vmcs_readl(GUEST_RFLAGS) & X86_EFLAGS_IF) &&
1239 (vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & 3) == 0);
1240
1241 if (vcpu->interrupt_window_open &&
1242 vcpu->irq_summary &&
1243 !(vmcs_read32(VM_ENTRY_INTR_INFO_FIELD) & INTR_INFO_VALID_MASK))
1231 /* 1244 /*
1232 * Interrupts enabled, and not blocked by sti or mov ss. Good. 1245 * If interrupts enabled, and not blocked by sti or mov ss. Good.
1233 */ 1246 */
1234 kvm_do_inject_irq(vcpu); 1247 kvm_do_inject_irq(vcpu);
1235 else 1248
1249 cpu_based_vm_exec_control = vmcs_read32(CPU_BASED_VM_EXEC_CONTROL);
1250 if (!vcpu->interrupt_window_open &&
1251 (vcpu->irq_summary || kvm_run->request_interrupt_window))
1236 /* 1252 /*
1237 * Interrupts blocked. Wait for unblock. 1253 * Interrupts blocked. Wait for unblock.
1238 */ 1254 */
1239 vmcs_write32(CPU_BASED_VM_EXEC_CONTROL, 1255 cpu_based_vm_exec_control |= CPU_BASED_VIRTUAL_INTR_PENDING;
1240 vmcs_read32(CPU_BASED_VM_EXEC_CONTROL) 1256 else
1241 | CPU_BASED_VIRTUAL_INTR_PENDING); 1257 cpu_based_vm_exec_control &= ~CPU_BASED_VIRTUAL_INTR_PENDING;
1258 vmcs_write32(CPU_BASED_VM_EXEC_CONTROL, cpu_based_vm_exec_control);
1242} 1259}
1243 1260
1244static void kvm_guest_debug_pre(struct kvm_vcpu *vcpu) 1261static void kvm_guest_debug_pre(struct kvm_vcpu *vcpu)
@@ -1277,6 +1294,7 @@ static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1277 unsigned long cr2, rip; 1294 unsigned long cr2, rip;
1278 u32 vect_info; 1295 u32 vect_info;
1279 enum emulation_result er; 1296 enum emulation_result er;
1297 int r;
1280 1298
1281 vect_info = vmcs_read32(IDT_VECTORING_INFO_FIELD); 1299 vect_info = vmcs_read32(IDT_VECTORING_INFO_FIELD);
1282 intr_info = vmcs_read32(VM_EXIT_INTR_INFO); 1300 intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
@@ -1305,7 +1323,12 @@ static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1305 cr2 = vmcs_readl(EXIT_QUALIFICATION); 1323 cr2 = vmcs_readl(EXIT_QUALIFICATION);
1306 1324
1307 spin_lock(&vcpu->kvm->lock); 1325 spin_lock(&vcpu->kvm->lock);
1308 if (!vcpu->mmu.page_fault(vcpu, cr2, error_code)) { 1326 r = kvm_mmu_page_fault(vcpu, cr2, error_code);
1327 if (r < 0) {
1328 spin_unlock(&vcpu->kvm->lock);
1329 return r;
1330 }
1331 if (!r) {
1309 spin_unlock(&vcpu->kvm->lock); 1332 spin_unlock(&vcpu->kvm->lock);
1310 return 1; 1333 return 1;
1311 } 1334 }
@@ -1425,17 +1448,6 @@ static int handle_io(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1425 return 0; 1448 return 0;
1426} 1449}
1427 1450
1428static int handle_invlpg(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1429{
1430 u64 address = vmcs_read64(EXIT_QUALIFICATION);
1431 int instruction_length = vmcs_read32(VM_EXIT_INSTRUCTION_LEN);
1432 spin_lock(&vcpu->kvm->lock);
1433 vcpu->mmu.inval_page(vcpu, address);
1434 spin_unlock(&vcpu->kvm->lock);
1435 vmcs_writel(GUEST_RIP, vmcs_readl(GUEST_RIP) + instruction_length);
1436 return 1;
1437}
1438
1439static int handle_cr(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) 1451static int handle_cr(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1440{ 1452{
1441 u64 exit_qualification; 1453 u64 exit_qualification;
@@ -1575,23 +1587,40 @@ static int handle_wrmsr(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1575 return 1; 1587 return 1;
1576} 1588}
1577 1589
1590static void post_kvm_run_save(struct kvm_vcpu *vcpu,
1591 struct kvm_run *kvm_run)
1592{
1593 kvm_run->if_flag = (vmcs_readl(GUEST_RFLAGS) & X86_EFLAGS_IF) != 0;
1594 kvm_run->cr8 = vcpu->cr8;
1595 kvm_run->apic_base = vcpu->apic_base;
1596 kvm_run->ready_for_interrupt_injection = (vcpu->interrupt_window_open &&
1597 vcpu->irq_summary == 0);
1598}
1599
1578static int handle_interrupt_window(struct kvm_vcpu *vcpu, 1600static int handle_interrupt_window(struct kvm_vcpu *vcpu,
1579 struct kvm_run *kvm_run) 1601 struct kvm_run *kvm_run)
1580{ 1602{
1581 /* Turn off interrupt window reporting. */ 1603 /*
1582 vmcs_write32(CPU_BASED_VM_EXEC_CONTROL, 1604 * If the user space waits to inject interrupts, exit as soon as
1583 vmcs_read32(CPU_BASED_VM_EXEC_CONTROL) 1605 * possible
1584 & ~CPU_BASED_VIRTUAL_INTR_PENDING); 1606 */
1607 if (kvm_run->request_interrupt_window &&
1608 !vcpu->irq_summary) {
1609 kvm_run->exit_reason = KVM_EXIT_IRQ_WINDOW_OPEN;
1610 ++kvm_stat.irq_window_exits;
1611 return 0;
1612 }
1585 return 1; 1613 return 1;
1586} 1614}
1587 1615
1588static int handle_halt(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) 1616static int handle_halt(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1589{ 1617{
1590 skip_emulated_instruction(vcpu); 1618 skip_emulated_instruction(vcpu);
1591 if (vcpu->irq_summary && (vmcs_readl(GUEST_RFLAGS) & X86_EFLAGS_IF)) 1619 if (vcpu->irq_summary)
1592 return 1; 1620 return 1;
1593 1621
1594 kvm_run->exit_reason = KVM_EXIT_HLT; 1622 kvm_run->exit_reason = KVM_EXIT_HLT;
1623 ++kvm_stat.halt_exits;
1595 return 0; 1624 return 0;
1596} 1625}
1597 1626
@@ -1605,7 +1634,6 @@ static int (*kvm_vmx_exit_handlers[])(struct kvm_vcpu *vcpu,
1605 [EXIT_REASON_EXCEPTION_NMI] = handle_exception, 1634 [EXIT_REASON_EXCEPTION_NMI] = handle_exception,
1606 [EXIT_REASON_EXTERNAL_INTERRUPT] = handle_external_interrupt, 1635 [EXIT_REASON_EXTERNAL_INTERRUPT] = handle_external_interrupt,
1607 [EXIT_REASON_IO_INSTRUCTION] = handle_io, 1636 [EXIT_REASON_IO_INSTRUCTION] = handle_io,
1608 [EXIT_REASON_INVLPG] = handle_invlpg,
1609 [EXIT_REASON_CR_ACCESS] = handle_cr, 1637 [EXIT_REASON_CR_ACCESS] = handle_cr,
1610 [EXIT_REASON_DR_ACCESS] = handle_dr, 1638 [EXIT_REASON_DR_ACCESS] = handle_dr,
1611 [EXIT_REASON_CPUID] = handle_cpuid, 1639 [EXIT_REASON_CPUID] = handle_cpuid,
@@ -1642,11 +1670,27 @@ static int kvm_handle_exit(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
1642 return 0; 1670 return 0;
1643} 1671}
1644 1672
1673/*
1674 * Check if userspace requested an interrupt window, and that the
1675 * interrupt window is open.
1676 *
1677 * No need to exit to userspace if we already have an interrupt queued.
1678 */
1679static int dm_request_for_irq_injection(struct kvm_vcpu *vcpu,
1680 struct kvm_run *kvm_run)
1681{
1682 return (!vcpu->irq_summary &&
1683 kvm_run->request_interrupt_window &&
1684 vcpu->interrupt_window_open &&
1685 (vmcs_readl(GUEST_RFLAGS) & X86_EFLAGS_IF));
1686}
1687
1645static int vmx_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) 1688static int vmx_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
1646{ 1689{
1647 u8 fail; 1690 u8 fail;
1648 u16 fs_sel, gs_sel, ldt_sel; 1691 u16 fs_sel, gs_sel, ldt_sel;
1649 int fs_gs_ldt_reload_needed; 1692 int fs_gs_ldt_reload_needed;
1693 int r;
1650 1694
1651again: 1695again:
1652 /* 1696 /*
@@ -1673,9 +1717,7 @@ again:
1673 vmcs_writel(HOST_GS_BASE, segment_base(gs_sel)); 1717 vmcs_writel(HOST_GS_BASE, segment_base(gs_sel));
1674#endif 1718#endif
1675 1719
1676 if (vcpu->irq_summary && 1720 do_interrupt_requests(vcpu, kvm_run);
1677 !(vmcs_read32(VM_ENTRY_INTR_INFO_FIELD) & INTR_INFO_VALID_MASK))
1678 kvm_try_inject_irq(vcpu);
1679 1721
1680 if (vcpu->guest_debug.enabled) 1722 if (vcpu->guest_debug.enabled)
1681 kvm_guest_debug_pre(vcpu); 1723 kvm_guest_debug_pre(vcpu);
@@ -1812,15 +1854,23 @@ again:
1812 1854
1813 fx_save(vcpu->guest_fx_image); 1855 fx_save(vcpu->guest_fx_image);
1814 fx_restore(vcpu->host_fx_image); 1856 fx_restore(vcpu->host_fx_image);
1857 vcpu->interrupt_window_open = (vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & 3) == 0;
1815 1858
1816#ifndef CONFIG_X86_64 1859#ifndef CONFIG_X86_64
1817 asm ("mov %0, %%ds; mov %0, %%es" : : "r"(__USER_DS)); 1860 asm ("mov %0, %%ds; mov %0, %%es" : : "r"(__USER_DS));
1818#endif 1861#endif
1819 1862
1863 /*
1864 * Profile KVM exit RIPs:
1865 */
1866 if (unlikely(prof_on == KVM_PROFILING))
1867 profile_hit(KVM_PROFILING, (void *)vmcs_readl(GUEST_RIP));
1868
1820 kvm_run->exit_type = 0; 1869 kvm_run->exit_type = 0;
1821 if (fail) { 1870 if (fail) {
1822 kvm_run->exit_type = KVM_EXIT_TYPE_FAIL_ENTRY; 1871 kvm_run->exit_type = KVM_EXIT_TYPE_FAIL_ENTRY;
1823 kvm_run->exit_reason = vmcs_read32(VM_INSTRUCTION_ERROR); 1872 kvm_run->exit_reason = vmcs_read32(VM_INSTRUCTION_ERROR);
1873 r = 0;
1824 } else { 1874 } else {
1825 if (fs_gs_ldt_reload_needed) { 1875 if (fs_gs_ldt_reload_needed) {
1826 load_ldt(ldt_sel); 1876 load_ldt(ldt_sel);
@@ -1840,17 +1890,28 @@ again:
1840 } 1890 }
1841 vcpu->launched = 1; 1891 vcpu->launched = 1;
1842 kvm_run->exit_type = KVM_EXIT_TYPE_VM_EXIT; 1892 kvm_run->exit_type = KVM_EXIT_TYPE_VM_EXIT;
1843 if (kvm_handle_exit(kvm_run, vcpu)) { 1893 r = kvm_handle_exit(kvm_run, vcpu);
1894 if (r > 0) {
1844 /* Give scheduler a change to reschedule. */ 1895 /* Give scheduler a change to reschedule. */
1845 if (signal_pending(current)) { 1896 if (signal_pending(current)) {
1846 ++kvm_stat.signal_exits; 1897 ++kvm_stat.signal_exits;
1898 post_kvm_run_save(vcpu, kvm_run);
1847 return -EINTR; 1899 return -EINTR;
1848 } 1900 }
1901
1902 if (dm_request_for_irq_injection(vcpu, kvm_run)) {
1903 ++kvm_stat.request_irq_exits;
1904 post_kvm_run_save(vcpu, kvm_run);
1905 return -EINTR;
1906 }
1907
1849 kvm_resched(vcpu); 1908 kvm_resched(vcpu);
1850 goto again; 1909 goto again;
1851 } 1910 }
1852 } 1911 }
1853 return 0; 1912
1913 post_kvm_run_save(vcpu, kvm_run);
1914 return r;
1854} 1915}
1855 1916
1856static void vmx_flush_tlb(struct kvm_vcpu *vcpu) 1917static void vmx_flush_tlb(struct kvm_vcpu *vcpu)
@@ -1906,13 +1967,33 @@ static int vmx_create_vcpu(struct kvm_vcpu *vcpu)
1906{ 1967{
1907 struct vmcs *vmcs; 1968 struct vmcs *vmcs;
1908 1969
1970 vcpu->guest_msrs = kmalloc(PAGE_SIZE, GFP_KERNEL);
1971 if (!vcpu->guest_msrs)
1972 return -ENOMEM;
1973
1974 vcpu->host_msrs = kmalloc(PAGE_SIZE, GFP_KERNEL);
1975 if (!vcpu->host_msrs)
1976 goto out_free_guest_msrs;
1977
1909 vmcs = alloc_vmcs(); 1978 vmcs = alloc_vmcs();
1910 if (!vmcs) 1979 if (!vmcs)
1911 return -ENOMEM; 1980 goto out_free_msrs;
1981
1912 vmcs_clear(vmcs); 1982 vmcs_clear(vmcs);
1913 vcpu->vmcs = vmcs; 1983 vcpu->vmcs = vmcs;
1914 vcpu->launched = 0; 1984 vcpu->launched = 0;
1985
1915 return 0; 1986 return 0;
1987
1988out_free_msrs:
1989 kfree(vcpu->host_msrs);
1990 vcpu->host_msrs = NULL;
1991
1992out_free_guest_msrs:
1993 kfree(vcpu->guest_msrs);
1994 vcpu->guest_msrs = NULL;
1995
1996 return -ENOMEM;
1916} 1997}
1917 1998
1918static struct kvm_arch_ops vmx_arch_ops = { 1999static struct kvm_arch_ops vmx_arch_ops = {
@@ -1936,6 +2017,7 @@ static struct kvm_arch_ops vmx_arch_ops = {
1936 .get_segment = vmx_get_segment, 2017 .get_segment = vmx_get_segment,
1937 .set_segment = vmx_set_segment, 2018 .set_segment = vmx_set_segment,
1938 .get_cs_db_l_bits = vmx_get_cs_db_l_bits, 2019 .get_cs_db_l_bits = vmx_get_cs_db_l_bits,
2020 .decache_cr0_cr4_guest_bits = vmx_decache_cr0_cr4_guest_bits,
1939 .set_cr0 = vmx_set_cr0, 2021 .set_cr0 = vmx_set_cr0,
1940 .set_cr0_no_modeswitch = vmx_set_cr0_no_modeswitch, 2022 .set_cr0_no_modeswitch = vmx_set_cr0_no_modeswitch,
1941 .set_cr3 = vmx_set_cr3, 2023 .set_cr3 = vmx_set_cr3,
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index 1bff3e925fda..be70795b4822 100644
--- a/drivers/kvm/x86_emulate.c
+++ b/drivers/kvm/x86_emulate.c
@@ -1323,7 +1323,7 @@ twobyte_special_insn:
1323 ctxt)) != 0)) 1323 ctxt)) != 0))
1324 goto done; 1324 goto done;
1325 if ((old_lo != _regs[VCPU_REGS_RAX]) 1325 if ((old_lo != _regs[VCPU_REGS_RAX])
1326 || (old_hi != _regs[VCPU_REGS_RDI])) { 1326 || (old_hi != _regs[VCPU_REGS_RDX])) {
1327 _regs[VCPU_REGS_RAX] = old_lo; 1327 _regs[VCPU_REGS_RAX] = old_lo;
1328 _regs[VCPU_REGS_RDX] = old_hi; 1328 _regs[VCPU_REGS_RDX] = old_hi;
1329 _eflags &= ~EFLG_ZF; 1329 _eflags &= ~EFLG_ZF;
diff --git a/drivers/leds/leds-s3c24xx.c b/drivers/leds/leds-s3c24xx.c
index fb1edc1c9edb..50914439d861 100644
--- a/drivers/leds/leds-s3c24xx.c
+++ b/drivers/leds/leds-s3c24xx.c
@@ -16,7 +16,7 @@
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/leds.h> 17#include <linux/leds.h>
18 18
19#include <asm/arch/hardware.h> 19#include <asm/hardware.h>
20#include <asm/arch/regs-gpio.h> 20#include <asm/arch/regs-gpio.h>
21#include <asm/arch/leds-gpio.h> 21#include <asm/arch/leds-gpio.h>
22 22
diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
index c8558d4ed506..8ca75e52f637 100644
--- a/drivers/macintosh/via-pmu.c
+++ b/drivers/macintosh/via-pmu.c
@@ -44,6 +44,7 @@
44#include <linux/sysdev.h> 44#include <linux/sysdev.h>
45#include <linux/freezer.h> 45#include <linux/freezer.h>
46#include <linux/syscalls.h> 46#include <linux/syscalls.h>
47#include <linux/suspend.h>
47#include <linux/cpu.h> 48#include <linux/cpu.h>
48#include <asm/prom.h> 49#include <asm/prom.h>
49#include <asm/machdep.h> 50#include <asm/machdep.h>
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index b30f74be3982..164b25dca101 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -775,6 +775,7 @@ static int make_request(request_queue_t *q, struct bio * bio)
775 struct bio_list bl; 775 struct bio_list bl;
776 struct page **behind_pages = NULL; 776 struct page **behind_pages = NULL;
777 const int rw = bio_data_dir(bio); 777 const int rw = bio_data_dir(bio);
778 const int do_sync = bio_sync(bio);
778 int do_barriers; 779 int do_barriers;
779 780
780 /* 781 /*
@@ -835,7 +836,7 @@ static int make_request(request_queue_t *q, struct bio * bio)
835 read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset; 836 read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset;
836 read_bio->bi_bdev = mirror->rdev->bdev; 837 read_bio->bi_bdev = mirror->rdev->bdev;
837 read_bio->bi_end_io = raid1_end_read_request; 838 read_bio->bi_end_io = raid1_end_read_request;
838 read_bio->bi_rw = READ; 839 read_bio->bi_rw = READ | do_sync;
839 read_bio->bi_private = r1_bio; 840 read_bio->bi_private = r1_bio;
840 841
841 generic_make_request(read_bio); 842 generic_make_request(read_bio);
@@ -906,7 +907,7 @@ static int make_request(request_queue_t *q, struct bio * bio)
906 mbio->bi_sector = r1_bio->sector + conf->mirrors[i].rdev->data_offset; 907 mbio->bi_sector = r1_bio->sector + conf->mirrors[i].rdev->data_offset;
907 mbio->bi_bdev = conf->mirrors[i].rdev->bdev; 908 mbio->bi_bdev = conf->mirrors[i].rdev->bdev;
908 mbio->bi_end_io = raid1_end_write_request; 909 mbio->bi_end_io = raid1_end_write_request;
909 mbio->bi_rw = WRITE | do_barriers; 910 mbio->bi_rw = WRITE | do_barriers | do_sync;
910 mbio->bi_private = r1_bio; 911 mbio->bi_private = r1_bio;
911 912
912 if (behind_pages) { 913 if (behind_pages) {
@@ -941,6 +942,8 @@ static int make_request(request_queue_t *q, struct bio * bio)
941 blk_plug_device(mddev->queue); 942 blk_plug_device(mddev->queue);
942 spin_unlock_irqrestore(&conf->device_lock, flags); 943 spin_unlock_irqrestore(&conf->device_lock, flags);
943 944
945 if (do_sync)
946 md_wakeup_thread(mddev->thread);
944#if 0 947#if 0
945 while ((bio = bio_list_pop(&bl)) != NULL) 948 while ((bio = bio_list_pop(&bl)) != NULL)
946 generic_make_request(bio); 949 generic_make_request(bio);
@@ -1541,6 +1544,7 @@ static void raid1d(mddev_t *mddev)
1541 * We already have a nr_pending reference on these rdevs. 1544 * We already have a nr_pending reference on these rdevs.
1542 */ 1545 */
1543 int i; 1546 int i;
1547 const int do_sync = bio_sync(r1_bio->master_bio);
1544 clear_bit(R1BIO_BarrierRetry, &r1_bio->state); 1548 clear_bit(R1BIO_BarrierRetry, &r1_bio->state);
1545 clear_bit(R1BIO_Barrier, &r1_bio->state); 1549 clear_bit(R1BIO_Barrier, &r1_bio->state);
1546 for (i=0; i < conf->raid_disks; i++) 1550 for (i=0; i < conf->raid_disks; i++)
@@ -1561,7 +1565,7 @@ static void raid1d(mddev_t *mddev)
1561 conf->mirrors[i].rdev->data_offset; 1565 conf->mirrors[i].rdev->data_offset;
1562 bio->bi_bdev = conf->mirrors[i].rdev->bdev; 1566 bio->bi_bdev = conf->mirrors[i].rdev->bdev;
1563 bio->bi_end_io = raid1_end_write_request; 1567 bio->bi_end_io = raid1_end_write_request;
1564 bio->bi_rw = WRITE; 1568 bio->bi_rw = WRITE | do_sync;
1565 bio->bi_private = r1_bio; 1569 bio->bi_private = r1_bio;
1566 r1_bio->bios[i] = bio; 1570 r1_bio->bios[i] = bio;
1567 generic_make_request(bio); 1571 generic_make_request(bio);
@@ -1593,6 +1597,7 @@ static void raid1d(mddev_t *mddev)
1593 (unsigned long long)r1_bio->sector); 1597 (unsigned long long)r1_bio->sector);
1594 raid_end_bio_io(r1_bio); 1598 raid_end_bio_io(r1_bio);
1595 } else { 1599 } else {
1600 const int do_sync = bio_sync(r1_bio->master_bio);
1596 r1_bio->bios[r1_bio->read_disk] = 1601 r1_bio->bios[r1_bio->read_disk] =
1597 mddev->ro ? IO_BLOCKED : NULL; 1602 mddev->ro ? IO_BLOCKED : NULL;
1598 r1_bio->read_disk = disk; 1603 r1_bio->read_disk = disk;
@@ -1608,7 +1613,7 @@ static void raid1d(mddev_t *mddev)
1608 bio->bi_sector = r1_bio->sector + rdev->data_offset; 1613 bio->bi_sector = r1_bio->sector + rdev->data_offset;
1609 bio->bi_bdev = rdev->bdev; 1614 bio->bi_bdev = rdev->bdev;
1610 bio->bi_end_io = raid1_end_read_request; 1615 bio->bi_end_io = raid1_end_read_request;
1611 bio->bi_rw = READ; 1616 bio->bi_rw = READ | do_sync;
1612 bio->bi_private = r1_bio; 1617 bio->bi_private = r1_bio;
1613 unplug = 1; 1618 unplug = 1;
1614 generic_make_request(bio); 1619 generic_make_request(bio);
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index f0141910bb8d..a9401c017e35 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -782,6 +782,7 @@ static int make_request(request_queue_t *q, struct bio * bio)
782 int i; 782 int i;
783 int chunk_sects = conf->chunk_mask + 1; 783 int chunk_sects = conf->chunk_mask + 1;
784 const int rw = bio_data_dir(bio); 784 const int rw = bio_data_dir(bio);
785 const int do_sync = bio_sync(bio);
785 struct bio_list bl; 786 struct bio_list bl;
786 unsigned long flags; 787 unsigned long flags;
787 788
@@ -863,7 +864,7 @@ static int make_request(request_queue_t *q, struct bio * bio)
863 mirror->rdev->data_offset; 864 mirror->rdev->data_offset;
864 read_bio->bi_bdev = mirror->rdev->bdev; 865 read_bio->bi_bdev = mirror->rdev->bdev;
865 read_bio->bi_end_io = raid10_end_read_request; 866 read_bio->bi_end_io = raid10_end_read_request;
866 read_bio->bi_rw = READ; 867 read_bio->bi_rw = READ | do_sync;
867 read_bio->bi_private = r10_bio; 868 read_bio->bi_private = r10_bio;
868 869
869 generic_make_request(read_bio); 870 generic_make_request(read_bio);
@@ -909,7 +910,7 @@ static int make_request(request_queue_t *q, struct bio * bio)
909 conf->mirrors[d].rdev->data_offset; 910 conf->mirrors[d].rdev->data_offset;
910 mbio->bi_bdev = conf->mirrors[d].rdev->bdev; 911 mbio->bi_bdev = conf->mirrors[d].rdev->bdev;
911 mbio->bi_end_io = raid10_end_write_request; 912 mbio->bi_end_io = raid10_end_write_request;
912 mbio->bi_rw = WRITE; 913 mbio->bi_rw = WRITE | do_sync;
913 mbio->bi_private = r10_bio; 914 mbio->bi_private = r10_bio;
914 915
915 atomic_inc(&r10_bio->remaining); 916 atomic_inc(&r10_bio->remaining);
@@ -922,6 +923,9 @@ static int make_request(request_queue_t *q, struct bio * bio)
922 blk_plug_device(mddev->queue); 923 blk_plug_device(mddev->queue);
923 spin_unlock_irqrestore(&conf->device_lock, flags); 924 spin_unlock_irqrestore(&conf->device_lock, flags);
924 925
926 if (do_sync)
927 md_wakeup_thread(mddev->thread);
928
925 return 0; 929 return 0;
926} 930}
927 931
@@ -1563,6 +1567,7 @@ static void raid10d(mddev_t *mddev)
1563 (unsigned long long)r10_bio->sector); 1567 (unsigned long long)r10_bio->sector);
1564 raid_end_bio_io(r10_bio); 1568 raid_end_bio_io(r10_bio);
1565 } else { 1569 } else {
1570 const int do_sync = bio_sync(r10_bio->master_bio);
1566 rdev = conf->mirrors[mirror].rdev; 1571 rdev = conf->mirrors[mirror].rdev;
1567 if (printk_ratelimit()) 1572 if (printk_ratelimit())
1568 printk(KERN_ERR "raid10: %s: redirecting sector %llu to" 1573 printk(KERN_ERR "raid10: %s: redirecting sector %llu to"
@@ -1574,7 +1579,7 @@ static void raid10d(mddev_t *mddev)
1574 bio->bi_sector = r10_bio->devs[r10_bio->read_slot].addr 1579 bio->bi_sector = r10_bio->devs[r10_bio->read_slot].addr
1575 + rdev->data_offset; 1580 + rdev->data_offset;
1576 bio->bi_bdev = rdev->bdev; 1581 bio->bi_bdev = rdev->bdev;
1577 bio->bi_rw = READ; 1582 bio->bi_rw = READ | do_sync;
1578 bio->bi_private = r10_bio; 1583 bio->bi_private = r10_bio;
1579 bio->bi_end_io = raid10_end_read_request; 1584 bio->bi_end_io = raid10_end_read_request;
1580 unplug = 1; 1585 unplug = 1;
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..635d102c86f0 100644
--- a/drivers/media/video/video-buf.c
+++ b/drivers/media/video/video-buf.c
@@ -1229,7 +1229,7 @@ videobuf_vm_nopage(struct vm_area_struct *vma, unsigned long vaddr,
1229 vaddr,vma->vm_start,vma->vm_end); 1229 vaddr,vma->vm_start,vma->vm_end);
1230 if (vaddr > vma->vm_end) 1230 if (vaddr > vma->vm_end)
1231 return NOPAGE_SIGBUS; 1231 return NOPAGE_SIGBUS;
1232 page = alloc_page(GFP_USER); 1232 page = alloc_page(GFP_USER | __GFP_DMA32);
1233 if (!page) 1233 if (!page)
1234 return NOPAGE_OOM; 1234 return NOPAGE_OOM;
1235 clear_user_page(page_address(page), vaddr, page); 1235 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/mmc/at91_mci.c b/drivers/mmc/at91_mci.c
index 08a33c33f6ed..aa152f31851e 100644
--- a/drivers/mmc/at91_mci.c
+++ b/drivers/mmc/at91_mci.c
@@ -768,7 +768,7 @@ static irqreturn_t at91_mmc_det_irq(int irq, void *_host)
768 return IRQ_HANDLED; 768 return IRQ_HANDLED;
769} 769}
770 770
771int at91_mci_get_ro(struct mmc_host *mmc) 771static int at91_mci_get_ro(struct mmc_host *mmc)
772{ 772{
773 int read_only = 0; 773 int read_only = 0;
774 struct at91mci_host *host = mmc_priv(mmc); 774 struct at91mci_host *host = mmc_priv(mmc);
@@ -794,7 +794,7 @@ static const struct mmc_host_ops at91_mci_ops = {
794/* 794/*
795 * Probe for the device 795 * Probe for the device
796 */ 796 */
797static int at91_mci_probe(struct platform_device *pdev) 797static int __init at91_mci_probe(struct platform_device *pdev)
798{ 798{
799 struct mmc_host *mmc; 799 struct mmc_host *mmc;
800 struct at91mci_host *host; 800 struct at91mci_host *host;
@@ -910,7 +910,7 @@ static int at91_mci_probe(struct platform_device *pdev)
910/* 910/*
911 * Remove a device 911 * Remove a device
912 */ 912 */
913static int at91_mci_remove(struct platform_device *pdev) 913static int __exit at91_mci_remove(struct platform_device *pdev)
914{ 914{
915 struct mmc_host *mmc = platform_get_drvdata(pdev); 915 struct mmc_host *mmc = platform_get_drvdata(pdev);
916 struct at91mci_host *host; 916 struct at91mci_host *host;
@@ -972,8 +972,7 @@ static int at91_mci_resume(struct platform_device *pdev)
972#endif 972#endif
973 973
974static struct platform_driver at91_mci_driver = { 974static struct platform_driver at91_mci_driver = {
975 .probe = at91_mci_probe, 975 .remove = __exit_p(at91_mci_remove),
976 .remove = at91_mci_remove,
977 .suspend = at91_mci_suspend, 976 .suspend = at91_mci_suspend,
978 .resume = at91_mci_resume, 977 .resume = at91_mci_resume,
979 .driver = { 978 .driver = {
@@ -984,7 +983,7 @@ static struct platform_driver at91_mci_driver = {
984 983
985static int __init at91_mci_init(void) 984static int __init at91_mci_init(void)
986{ 985{
987 return platform_driver_register(&at91_mci_driver); 986 return platform_driver_probe(&at91_mci_driver, at91_mci_probe);
988} 987}
989 988
990static void __exit at91_mci_exit(void) 989static void __exit at91_mci_exit(void)
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/mmci.c b/drivers/mmc/mmci.c
index e9b80e920266..ccfe6561be24 100644
--- a/drivers/mmc/mmci.c
+++ b/drivers/mmc/mmci.c
@@ -42,6 +42,8 @@ mmci_request_end(struct mmci_host *host, struct mmc_request *mrq)
42{ 42{
43 writel(0, host->base + MMCICOMMAND); 43 writel(0, host->base + MMCICOMMAND);
44 44
45 BUG_ON(host->data);
46
45 host->mrq = NULL; 47 host->mrq = NULL;
46 host->cmd = NULL; 48 host->cmd = NULL;
47 49
@@ -198,6 +200,8 @@ mmci_cmd_irq(struct mmci_host *host, struct mmc_command *cmd,
198 } 200 }
199 201
200 if (!cmd->data || cmd->error != MMC_ERR_NONE) { 202 if (!cmd->data || cmd->error != MMC_ERR_NONE) {
203 if (host->data)
204 mmci_stop_data(host);
201 mmci_request_end(host, cmd->mrq); 205 mmci_request_end(host, cmd->mrq);
202 } else if (!(cmd->data->flags & MMC_DATA_READ)) { 206 } else if (!(cmd->data->flags & MMC_DATA_READ)) {
203 mmci_start_data(host, cmd->data); 207 mmci_start_data(host, cmd->data);
diff --git a/drivers/mmc/omap.c b/drivers/mmc/omap.c
index 435d331e772a..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
@@ -581,9 +584,9 @@ static void mmc_omap_switch_timer(unsigned long arg)
581 schedule_work(&host->switch_work); 584 schedule_work(&host->switch_work);
582} 585}
583 586
584static void mmc_omap_switch_handler(void *data) 587static void mmc_omap_switch_handler(struct work_struct *work)
585{ 588{
586 struct mmc_omap_host *host = (struct mmc_omap_host *) data; 589 struct mmc_omap_host *host = container_of(work, struct mmc_omap_host, switch_work);
587 struct mmc_card *card; 590 struct mmc_card *card;
588 static int complained = 0; 591 static int complained = 0;
589 int cards = 0, cover_open; 592 int cards = 0, cover_open;
@@ -1116,7 +1119,7 @@ static int __init mmc_omap_probe(struct platform_device *pdev)
1116 platform_set_drvdata(pdev, host); 1119 platform_set_drvdata(pdev, host);
1117 1120
1118 if (host->switch_pin >= 0) { 1121 if (host->switch_pin >= 0) {
1119 INIT_WORK(&host->switch_work, mmc_omap_switch_handler, host); 1122 INIT_WORK(&host->switch_work, mmc_omap_switch_handler);
1120 init_timer(&host->switch_timer); 1123 init_timer(&host->switch_timer);
1121 host->switch_timer.function = mmc_omap_switch_timer; 1124 host->switch_timer.function = mmc_omap_switch_timer;
1122 host->switch_timer.data = (unsigned long) host; 1125 host->switch_timer.data = (unsigned long) host;
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/net/Space.c b/drivers/net/Space.c
index 602ed31a5dd9..9305eb9b1b98 100644
--- a/drivers/net/Space.c
+++ b/drivers/net/Space.c
@@ -349,22 +349,11 @@ static void __init trif_probe2(int unit)
349#endif 349#endif
350 350
351 351
352/*
353 * The loopback device is global so it can be directly referenced
354 * by the network code. Also, it must be first on device list.
355 */
356extern int loopback_init(void);
357
358/* Statically configured drivers -- order matters here. */ 352/* Statically configured drivers -- order matters here. */
359static int __init net_olddevs_init(void) 353static int __init net_olddevs_init(void)
360{ 354{
361 int num; 355 int num;
362 356
363 if (loopback_init()) {
364 printk(KERN_ERR "Network loopback device setup failed\n");
365 }
366
367
368#ifdef CONFIG_SBNI 357#ifdef CONFIG_SBNI
369 for (num = 0; num < 8; ++num) 358 for (num = 0; num < 8; ++num)
370 sbni_probe(num); 359 sbni_probe(num);
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index ada5e9b9988c..ca5acc4736df 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.2" 60#define DRV_MODULE_VERSION "1.5.3"
61#define DRV_MODULE_RELDATE "December 13, 2006" 61#define DRV_MODULE_RELDATE "January 8, 2007"
62 62
63#define RUN_AT(x) (jiffies + (x)) 63#define RUN_AT(x) (jiffies + (x))
64 64
@@ -1345,8 +1345,6 @@ bnx2_init_copper_phy(struct bnx2 *bp)
1345{ 1345{
1346 u32 val; 1346 u32 val;
1347 1347
1348 bp->phy_flags |= PHY_CRC_FIX_FLAG;
1349
1350 if (bp->phy_flags & PHY_CRC_FIX_FLAG) { 1348 if (bp->phy_flags & PHY_CRC_FIX_FLAG) {
1351 bnx2_write_phy(bp, 0x18, 0x0c00); 1349 bnx2_write_phy(bp, 0x18, 0x0c00);
1352 bnx2_write_phy(bp, 0x17, 0x000a); 1350 bnx2_write_phy(bp, 0x17, 0x000a);
@@ -3085,7 +3083,7 @@ bnx2_nvram_write(struct bnx2 *bp, u32 offset, u8 *data_buf,
3085 int buf_size) 3083 int buf_size)
3086{ 3084{
3087 u32 written, offset32, len32; 3085 u32 written, offset32, len32;
3088 u8 *buf, start[4], end[4], *flash_buffer = NULL; 3086 u8 *buf, start[4], end[4], *align_buf = NULL, *flash_buffer = NULL;
3089 int rc = 0; 3087 int rc = 0;
3090 int align_start, align_end; 3088 int align_start, align_end;
3091 3089
@@ -3113,16 +3111,17 @@ bnx2_nvram_write(struct bnx2 *bp, u32 offset, u8 *data_buf,
3113 } 3111 }
3114 3112
3115 if (align_start || align_end) { 3113 if (align_start || align_end) {
3116 buf = kmalloc(len32, GFP_KERNEL); 3114 align_buf = kmalloc(len32, GFP_KERNEL);
3117 if (buf == NULL) 3115 if (align_buf == NULL)
3118 return -ENOMEM; 3116 return -ENOMEM;
3119 if (align_start) { 3117 if (align_start) {
3120 memcpy(buf, start, 4); 3118 memcpy(align_buf, start, 4);
3121 } 3119 }
3122 if (align_end) { 3120 if (align_end) {
3123 memcpy(buf + len32 - 4, end, 4); 3121 memcpy(align_buf + len32 - 4, end, 4);
3124 } 3122 }
3125 memcpy(buf + align_start, data_buf, buf_size); 3123 memcpy(align_buf + align_start, data_buf, buf_size);
3124 buf = align_buf;
3126 } 3125 }
3127 3126
3128 if (bp->flash_info->buffered == 0) { 3127 if (bp->flash_info->buffered == 0) {
@@ -3256,11 +3255,8 @@ bnx2_nvram_write(struct bnx2 *bp, u32 offset, u8 *data_buf,
3256 } 3255 }
3257 3256
3258nvram_write_end: 3257nvram_write_end:
3259 if (bp->flash_info->buffered == 0) 3258 kfree(flash_buffer);
3260 kfree(flash_buffer); 3259 kfree(align_buf);
3261
3262 if (align_start || align_end)
3263 kfree(buf);
3264 return rc; 3260 return rc;
3265} 3261}
3266 3262
@@ -5645,6 +5641,44 @@ poll_bnx2(struct net_device *dev)
5645} 5641}
5646#endif 5642#endif
5647 5643
5644static void __devinit
5645bnx2_get_5709_media(struct bnx2 *bp)
5646{
5647 u32 val = REG_RD(bp, BNX2_MISC_DUAL_MEDIA_CTRL);
5648 u32 bond_id = val & BNX2_MISC_DUAL_MEDIA_CTRL_BOND_ID;
5649 u32 strap;
5650
5651 if (bond_id == BNX2_MISC_DUAL_MEDIA_CTRL_BOND_ID_C)
5652 return;
5653 else if (bond_id == BNX2_MISC_DUAL_MEDIA_CTRL_BOND_ID_S) {
5654 bp->phy_flags |= PHY_SERDES_FLAG;
5655 return;
5656 }
5657
5658 if (val & BNX2_MISC_DUAL_MEDIA_CTRL_STRAP_OVERRIDE)
5659 strap = (val & BNX2_MISC_DUAL_MEDIA_CTRL_PHY_CTRL) >> 21;
5660 else
5661 strap = (val & BNX2_MISC_DUAL_MEDIA_CTRL_PHY_CTRL_STRAP) >> 8;
5662
5663 if (PCI_FUNC(bp->pdev->devfn) == 0) {
5664 switch (strap) {
5665 case 0x4:
5666 case 0x5:
5667 case 0x6:
5668 bp->phy_flags |= PHY_SERDES_FLAG;
5669 return;
5670 }
5671 } else {
5672 switch (strap) {
5673 case 0x1:
5674 case 0x2:
5675 case 0x4:
5676 bp->phy_flags |= PHY_SERDES_FLAG;
5677 return;
5678 }
5679 }
5680}
5681
5648static int __devinit 5682static int __devinit
5649bnx2_init_board(struct pci_dev *pdev, struct net_device *dev) 5683bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
5650{ 5684{
@@ -5865,10 +5899,9 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
5865 bp->phy_addr = 1; 5899 bp->phy_addr = 1;
5866 5900
5867 /* Disable WOL support if we are running on a SERDES chip. */ 5901 /* Disable WOL support if we are running on a SERDES chip. */
5868 if (CHIP_NUM(bp) == CHIP_NUM_5709) { 5902 if (CHIP_NUM(bp) == CHIP_NUM_5709)
5869 if (CHIP_BOND_ID(bp) != BNX2_MISC_DUAL_MEDIA_CTRL_BOND_ID_C) 5903 bnx2_get_5709_media(bp);
5870 bp->phy_flags |= PHY_SERDES_FLAG; 5904 else if (CHIP_BOND_ID(bp) & CHIP_BOND_ID_SERDES_BIT)
5871 } else if (CHIP_BOND_ID(bp) & CHIP_BOND_ID_SERDES_BIT)
5872 bp->phy_flags |= PHY_SERDES_FLAG; 5905 bp->phy_flags |= PHY_SERDES_FLAG;
5873 5906
5874 if (bp->phy_flags & PHY_SERDES_FLAG) { 5907 if (bp->phy_flags & PHY_SERDES_FLAG) {
@@ -5880,7 +5913,9 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
5880 if (reg & BNX2_SHARED_HW_CFG_PHY_2_5G) 5913 if (reg & BNX2_SHARED_HW_CFG_PHY_2_5G)
5881 bp->phy_flags |= PHY_2_5G_CAPABLE_FLAG; 5914 bp->phy_flags |= PHY_2_5G_CAPABLE_FLAG;
5882 } 5915 }
5883 } 5916 } else if (CHIP_NUM(bp) == CHIP_NUM_5706 ||
5917 CHIP_NUM(bp) == CHIP_NUM_5708)
5918 bp->phy_flags |= PHY_CRC_FIX_FLAG;
5884 5919
5885 if ((CHIP_ID(bp) == CHIP_ID_5708_A0) || 5920 if ((CHIP_ID(bp) == CHIP_ID_5708_A0) ||
5886 (CHIP_ID(bp) == CHIP_ID_5708_B0) || 5921 (CHIP_ID(bp) == CHIP_ID_5708_B0) ||
diff --git a/drivers/net/chelsio/my3126.c b/drivers/net/chelsio/my3126.c
index c7731b6f9de3..82fed1dd5005 100644
--- a/drivers/net/chelsio/my3126.c
+++ b/drivers/net/chelsio/my3126.c
@@ -170,9 +170,10 @@ static struct cphy *my3126_phy_create(adapter_t *adapter,
170{ 170{
171 struct cphy *cphy = kzalloc(sizeof (*cphy), GFP_KERNEL); 171 struct cphy *cphy = kzalloc(sizeof (*cphy), GFP_KERNEL);
172 172
173 if (cphy) 173 if (!cphy)
174 cphy_init(cphy, adapter, phy_addr, &my3126_ops, mdio_ops); 174 return NULL;
175 175
176 cphy_init(cphy, adapter, phy_addr, &my3126_ops, mdio_ops);
176 INIT_DELAYED_WORK(&cphy->phy_update, my3216_poll); 177 INIT_DELAYED_WORK(&cphy->phy_update, my3216_poll);
177 cphy->bmsr = 0; 178 cphy->bmsr = 0;
178 179
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 4c1ff752048c..c6259c7127f6 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -995,12 +995,6 @@ e1000_probe(struct pci_dev *pdev,
995 (adapter->hw.mac_type != e1000_82547)) 995 (adapter->hw.mac_type != e1000_82547))
996 netdev->features |= NETIF_F_TSO; 996 netdev->features |= NETIF_F_TSO;
997 997
998#ifdef CONFIG_DEBUG_SLAB
999 /* 82544's work arounds do not play nicely with DEBUG SLAB */
1000 if (adapter->hw.mac_type == e1000_82544)
1001 netdev->features &= ~NETIF_F_TSO;
1002#endif
1003
1004#ifdef NETIF_F_TSO6 998#ifdef NETIF_F_TSO6
1005 if (adapter->hw.mac_type > e1000_82547_rev_2) 999 if (adapter->hw.mac_type > e1000_82547_rev_2)
1006 netdev->features |= NETIF_F_TSO6; 1000 netdev->features |= NETIF_F_TSO6;
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index 2f48fe9a29a7..93f2b7a22160 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -234,6 +234,7 @@ enum {
234#define NVREG_XMITCTL_HOST_SEMA_MASK 0x0000f000 234#define NVREG_XMITCTL_HOST_SEMA_MASK 0x0000f000
235#define NVREG_XMITCTL_HOST_SEMA_ACQ 0x0000f000 235#define NVREG_XMITCTL_HOST_SEMA_ACQ 0x0000f000
236#define NVREG_XMITCTL_HOST_LOADED 0x00004000 236#define NVREG_XMITCTL_HOST_LOADED 0x00004000
237#define NVREG_XMITCTL_TX_PATH_EN 0x01000000
237 NvRegTransmitterStatus = 0x088, 238 NvRegTransmitterStatus = 0x088,
238#define NVREG_XMITSTAT_BUSY 0x01 239#define NVREG_XMITSTAT_BUSY 0x01
239 240
@@ -249,6 +250,7 @@ enum {
249#define NVREG_OFFLOAD_NORMAL RX_NIC_BUFSIZE 250#define NVREG_OFFLOAD_NORMAL RX_NIC_BUFSIZE
250 NvRegReceiverControl = 0x094, 251 NvRegReceiverControl = 0x094,
251#define NVREG_RCVCTL_START 0x01 252#define NVREG_RCVCTL_START 0x01
253#define NVREG_RCVCTL_RX_PATH_EN 0x01000000
252 NvRegReceiverStatus = 0x98, 254 NvRegReceiverStatus = 0x98,
253#define NVREG_RCVSTAT_BUSY 0x01 255#define NVREG_RCVSTAT_BUSY 0x01
254 256
@@ -1169,16 +1171,21 @@ static void nv_start_rx(struct net_device *dev)
1169{ 1171{
1170 struct fe_priv *np = netdev_priv(dev); 1172 struct fe_priv *np = netdev_priv(dev);
1171 u8 __iomem *base = get_hwbase(dev); 1173 u8 __iomem *base = get_hwbase(dev);
1174 u32 rx_ctrl = readl(base + NvRegReceiverControl);
1172 1175
1173 dprintk(KERN_DEBUG "%s: nv_start_rx\n", dev->name); 1176 dprintk(KERN_DEBUG "%s: nv_start_rx\n", dev->name);
1174 /* Already running? Stop it. */ 1177 /* Already running? Stop it. */
1175 if (readl(base + NvRegReceiverControl) & NVREG_RCVCTL_START) { 1178 if ((readl(base + NvRegReceiverControl) & NVREG_RCVCTL_START) && !np->mac_in_use) {
1176 writel(0, base + NvRegReceiverControl); 1179 rx_ctrl &= ~NVREG_RCVCTL_START;
1180 writel(rx_ctrl, base + NvRegReceiverControl);
1177 pci_push(base); 1181 pci_push(base);
1178 } 1182 }
1179 writel(np->linkspeed, base + NvRegLinkSpeed); 1183 writel(np->linkspeed, base + NvRegLinkSpeed);
1180 pci_push(base); 1184 pci_push(base);
1181 writel(NVREG_RCVCTL_START, base + NvRegReceiverControl); 1185 rx_ctrl |= NVREG_RCVCTL_START;
1186 if (np->mac_in_use)
1187 rx_ctrl &= ~NVREG_RCVCTL_RX_PATH_EN;
1188 writel(rx_ctrl, base + NvRegReceiverControl);
1182 dprintk(KERN_DEBUG "%s: nv_start_rx to duplex %d, speed 0x%08x.\n", 1189 dprintk(KERN_DEBUG "%s: nv_start_rx to duplex %d, speed 0x%08x.\n",
1183 dev->name, np->duplex, np->linkspeed); 1190 dev->name, np->duplex, np->linkspeed);
1184 pci_push(base); 1191 pci_push(base);
@@ -1186,39 +1193,59 @@ static void nv_start_rx(struct net_device *dev)
1186 1193
1187static void nv_stop_rx(struct net_device *dev) 1194static void nv_stop_rx(struct net_device *dev)
1188{ 1195{
1196 struct fe_priv *np = netdev_priv(dev);
1189 u8 __iomem *base = get_hwbase(dev); 1197 u8 __iomem *base = get_hwbase(dev);
1198 u32 rx_ctrl = readl(base + NvRegReceiverControl);
1190 1199
1191 dprintk(KERN_DEBUG "%s: nv_stop_rx\n", dev->name); 1200 dprintk(KERN_DEBUG "%s: nv_stop_rx\n", dev->name);
1192 writel(0, base + NvRegReceiverControl); 1201 if (!np->mac_in_use)
1202 rx_ctrl &= ~NVREG_RCVCTL_START;
1203 else
1204 rx_ctrl |= NVREG_RCVCTL_RX_PATH_EN;
1205 writel(rx_ctrl, base + NvRegReceiverControl);
1193 reg_delay(dev, NvRegReceiverStatus, NVREG_RCVSTAT_BUSY, 0, 1206 reg_delay(dev, NvRegReceiverStatus, NVREG_RCVSTAT_BUSY, 0,
1194 NV_RXSTOP_DELAY1, NV_RXSTOP_DELAY1MAX, 1207 NV_RXSTOP_DELAY1, NV_RXSTOP_DELAY1MAX,
1195 KERN_INFO "nv_stop_rx: ReceiverStatus remained busy"); 1208 KERN_INFO "nv_stop_rx: ReceiverStatus remained busy");
1196 1209
1197 udelay(NV_RXSTOP_DELAY2); 1210 udelay(NV_RXSTOP_DELAY2);
1198 writel(0, base + NvRegLinkSpeed); 1211 if (!np->mac_in_use)
1212 writel(0, base + NvRegLinkSpeed);
1199} 1213}
1200 1214
1201static void nv_start_tx(struct net_device *dev) 1215static void nv_start_tx(struct net_device *dev)
1202{ 1216{
1217 struct fe_priv *np = netdev_priv(dev);
1203 u8 __iomem *base = get_hwbase(dev); 1218 u8 __iomem *base = get_hwbase(dev);
1219 u32 tx_ctrl = readl(base + NvRegTransmitterControl);
1204 1220
1205 dprintk(KERN_DEBUG "%s: nv_start_tx\n", dev->name); 1221 dprintk(KERN_DEBUG "%s: nv_start_tx\n", dev->name);
1206 writel(NVREG_XMITCTL_START, base + NvRegTransmitterControl); 1222 tx_ctrl |= NVREG_XMITCTL_START;
1223 if (np->mac_in_use)
1224 tx_ctrl &= ~NVREG_XMITCTL_TX_PATH_EN;
1225 writel(tx_ctrl, base + NvRegTransmitterControl);
1207 pci_push(base); 1226 pci_push(base);
1208} 1227}
1209 1228
1210static void nv_stop_tx(struct net_device *dev) 1229static void nv_stop_tx(struct net_device *dev)
1211{ 1230{
1231 struct fe_priv *np = netdev_priv(dev);
1212 u8 __iomem *base = get_hwbase(dev); 1232 u8 __iomem *base = get_hwbase(dev);
1233 u32 tx_ctrl = readl(base + NvRegTransmitterControl);
1213 1234
1214 dprintk(KERN_DEBUG "%s: nv_stop_tx\n", dev->name); 1235 dprintk(KERN_DEBUG "%s: nv_stop_tx\n", dev->name);
1215 writel(0, base + NvRegTransmitterControl); 1236 if (!np->mac_in_use)
1237 tx_ctrl &= ~NVREG_XMITCTL_START;
1238 else
1239 tx_ctrl |= NVREG_XMITCTL_TX_PATH_EN;
1240 writel(tx_ctrl, base + NvRegTransmitterControl);
1216 reg_delay(dev, NvRegTransmitterStatus, NVREG_XMITSTAT_BUSY, 0, 1241 reg_delay(dev, NvRegTransmitterStatus, NVREG_XMITSTAT_BUSY, 0,
1217 NV_TXSTOP_DELAY1, NV_TXSTOP_DELAY1MAX, 1242 NV_TXSTOP_DELAY1, NV_TXSTOP_DELAY1MAX,
1218 KERN_INFO "nv_stop_tx: TransmitterStatus remained busy"); 1243 KERN_INFO "nv_stop_tx: TransmitterStatus remained busy");
1219 1244
1220 udelay(NV_TXSTOP_DELAY2); 1245 udelay(NV_TXSTOP_DELAY2);
1221 writel(readl(base + NvRegTransmitPoll) & NVREG_TRANSMITPOLL_MAC_ADDR_REV, base + NvRegTransmitPoll); 1246 if (!np->mac_in_use)
1247 writel(readl(base + NvRegTransmitPoll) & NVREG_TRANSMITPOLL_MAC_ADDR_REV,
1248 base + NvRegTransmitPoll);
1222} 1249}
1223 1250
1224static void nv_txrx_reset(struct net_device *dev) 1251static void nv_txrx_reset(struct net_device *dev)
@@ -4148,20 +4175,6 @@ static int nv_mgmt_acquire_sema(struct net_device *dev)
4148 return 0; 4175 return 0;
4149} 4176}
4150 4177
4151/* Indicate to mgmt unit whether driver is loaded or not */
4152static void nv_mgmt_driver_loaded(struct net_device *dev, int loaded)
4153{
4154 u8 __iomem *base = get_hwbase(dev);
4155 u32 tx_ctrl;
4156
4157 tx_ctrl = readl(base + NvRegTransmitterControl);
4158 if (loaded)
4159 tx_ctrl |= NVREG_XMITCTL_HOST_LOADED;
4160 else
4161 tx_ctrl &= ~NVREG_XMITCTL_HOST_LOADED;
4162 writel(tx_ctrl, base + NvRegTransmitterControl);
4163}
4164
4165static int nv_open(struct net_device *dev) 4178static int nv_open(struct net_device *dev)
4166{ 4179{
4167 struct fe_priv *np = netdev_priv(dev); 4180 struct fe_priv *np = netdev_priv(dev);
@@ -4659,33 +4672,24 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
4659 writel(NVREG_MIISTAT_MASK, base + NvRegMIIStatus); 4672 writel(NVREG_MIISTAT_MASK, base + NvRegMIIStatus);
4660 4673
4661 if (id->driver_data & DEV_HAS_MGMT_UNIT) { 4674 if (id->driver_data & DEV_HAS_MGMT_UNIT) {
4662 writel(0x1, base + 0x204); pci_push(base);
4663 msleep(500);
4664 /* management unit running on the mac? */ 4675 /* management unit running on the mac? */
4665 np->mac_in_use = readl(base + NvRegTransmitterControl) & NVREG_XMITCTL_MGMT_ST; 4676 if (readl(base + NvRegTransmitterControl) & NVREG_XMITCTL_SYNC_PHY_INIT) {
4666 if (np->mac_in_use) { 4677 np->mac_in_use = readl(base + NvRegTransmitterControl) & NVREG_XMITCTL_MGMT_ST;
4667 u32 mgmt_sync; 4678 dprintk(KERN_INFO "%s: mgmt unit is running. mac in use %x.\n", pci_name(pci_dev), np->mac_in_use);
4668 /* management unit setup the phy already? */ 4679 for (i = 0; i < 5000; i++) {
4669 mgmt_sync = readl(base + NvRegTransmitterControl) & NVREG_XMITCTL_SYNC_MASK; 4680 msleep(1);
4670 if (mgmt_sync == NVREG_XMITCTL_SYNC_NOT_READY) { 4681 if (nv_mgmt_acquire_sema(dev)) {
4671 if (!nv_mgmt_acquire_sema(dev)) { 4682 /* management unit setup the phy already? */
4672 for (i = 0; i < 5000; i++) { 4683 if ((readl(base + NvRegTransmitterControl) & NVREG_XMITCTL_SYNC_MASK) ==
4673 msleep(1); 4684 NVREG_XMITCTL_SYNC_PHY_INIT) {
4674 mgmt_sync = readl(base + NvRegTransmitterControl) & NVREG_XMITCTL_SYNC_MASK; 4685 /* phy is inited by mgmt unit */
4675 if (mgmt_sync == NVREG_XMITCTL_SYNC_NOT_READY) 4686 phyinitialized = 1;
4676 continue; 4687 dprintk(KERN_INFO "%s: Phy already initialized by mgmt unit.\n", pci_name(pci_dev));
4677 if (mgmt_sync == NVREG_XMITCTL_SYNC_PHY_INIT) 4688 } else {
4678 phyinitialized = 1; 4689 /* we need to init the phy */
4679 break;
4680 } 4690 }
4681 } else { 4691 break;
4682 /* we need to init the phy */
4683 } 4692 }
4684 } else if (mgmt_sync == NVREG_XMITCTL_SYNC_PHY_INIT) {
4685 /* phy is inited by SMU */
4686 phyinitialized = 1;
4687 } else {
4688 /* we need to init the phy */
4689 } 4693 }
4690 } 4694 }
4691 } 4695 }
@@ -4724,10 +4728,12 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
4724 if (!phyinitialized) { 4728 if (!phyinitialized) {
4725 /* reset it */ 4729 /* reset it */
4726 phy_init(dev); 4730 phy_init(dev);
4727 } 4731 } else {
4728 4732 /* see if it is a gigabit phy */
4729 if (id->driver_data & DEV_HAS_MGMT_UNIT) { 4733 u32 mii_status = mii_rw(dev, np->phyaddr, MII_BMSR, MII_READ);
4730 nv_mgmt_driver_loaded(dev, 1); 4734 if (mii_status & PHY_GIGABIT) {
4735 np->gigabit = PHY_GIGABIT;
4736 }
4731 } 4737 }
4732 4738
4733 /* set default link speed settings */ 4739 /* set default link speed settings */
@@ -4749,8 +4755,6 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
4749out_error: 4755out_error:
4750 if (phystate_orig) 4756 if (phystate_orig)
4751 writel(phystate|NVREG_ADAPTCTL_RUNNING, base + NvRegAdapterControl); 4757 writel(phystate|NVREG_ADAPTCTL_RUNNING, base + NvRegAdapterControl);
4752 if (np->mac_in_use)
4753 nv_mgmt_driver_loaded(dev, 0);
4754 pci_set_drvdata(pci_dev, NULL); 4758 pci_set_drvdata(pci_dev, NULL);
4755out_freering: 4759out_freering:
4756 free_rings(dev); 4760 free_rings(dev);
@@ -4780,9 +4784,6 @@ static void __devexit nv_remove(struct pci_dev *pci_dev)
4780 writel(np->orig_mac[0], base + NvRegMacAddrA); 4784 writel(np->orig_mac[0], base + NvRegMacAddrA);
4781 writel(np->orig_mac[1], base + NvRegMacAddrB); 4785 writel(np->orig_mac[1], base + NvRegMacAddrB);
4782 4786
4783 if (np->mac_in_use)
4784 nv_mgmt_driver_loaded(dev, 0);
4785
4786 /* free all structures */ 4787 /* free all structures */
4787 free_rings(dev); 4788 free_rings(dev);
4788 iounmap(get_hwbase(dev)); 4789 iounmap(get_hwbase(dev));
diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
index c26a4b8e552a..ca2b21f9d444 100644
--- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c
@@ -154,8 +154,8 @@ static int ifb_xmit(struct sk_buff *skb, struct net_device *dev)
154 int ret = 0; 154 int ret = 0;
155 u32 from = G_TC_FROM(skb->tc_verd); 155 u32 from = G_TC_FROM(skb->tc_verd);
156 156
157 stats->tx_packets++; 157 stats->rx_packets++;
158 stats->tx_bytes+=skb->len; 158 stats->rx_bytes+=skb->len;
159 159
160 if (!from || !skb->input_dev) { 160 if (!from || !skb->input_dev) {
161dropped: 161dropped:
diff --git a/drivers/net/ixgb/ixgb.h b/drivers/net/ixgb/ixgb.h
index 50ffe90488ff..f4aba4355b19 100644
--- a/drivers/net/ixgb/ixgb.h
+++ b/drivers/net/ixgb/ixgb.h
@@ -171,6 +171,7 @@ struct ixgb_adapter {
171 171
172 /* TX */ 172 /* TX */
173 struct ixgb_desc_ring tx_ring ____cacheline_aligned_in_smp; 173 struct ixgb_desc_ring tx_ring ____cacheline_aligned_in_smp;
174 unsigned int restart_queue;
174 unsigned long timeo_start; 175 unsigned long timeo_start;
175 uint32_t tx_cmd_type; 176 uint32_t tx_cmd_type;
176 uint64_t hw_csum_tx_good; 177 uint64_t hw_csum_tx_good;
diff --git a/drivers/net/ixgb/ixgb_ethtool.c b/drivers/net/ixgb/ixgb_ethtool.c
index cd22523fb035..82c044d6e08a 100644
--- a/drivers/net/ixgb/ixgb_ethtool.c
+++ b/drivers/net/ixgb/ixgb_ethtool.c
@@ -79,6 +79,7 @@ static struct ixgb_stats ixgb_gstrings_stats[] = {
79 {"tx_window_errors", IXGB_STAT(net_stats.tx_window_errors)}, 79 {"tx_window_errors", IXGB_STAT(net_stats.tx_window_errors)},
80 {"tx_deferred_ok", IXGB_STAT(stats.dc)}, 80 {"tx_deferred_ok", IXGB_STAT(stats.dc)},
81 {"tx_timeout_count", IXGB_STAT(tx_timeout_count) }, 81 {"tx_timeout_count", IXGB_STAT(tx_timeout_count) },
82 {"tx_restart_queue", IXGB_STAT(restart_queue) },
82 {"rx_long_length_errors", IXGB_STAT(stats.roc)}, 83 {"rx_long_length_errors", IXGB_STAT(stats.roc)},
83 {"rx_short_length_errors", IXGB_STAT(stats.ruc)}, 84 {"rx_short_length_errors", IXGB_STAT(stats.ruc)},
84#ifdef NETIF_F_TSO 85#ifdef NETIF_F_TSO
diff --git a/drivers/net/ixgb/ixgb_hw.c b/drivers/net/ixgb/ixgb_hw.c
index 02089b64e42c..ecbf45861c68 100644
--- a/drivers/net/ixgb/ixgb_hw.c
+++ b/drivers/net/ixgb/ixgb_hw.c
@@ -399,8 +399,9 @@ ixgb_init_rx_addrs(struct ixgb_hw *hw)
399 /* Zero out the other 15 receive addresses. */ 399 /* Zero out the other 15 receive addresses. */
400 DEBUGOUT("Clearing RAR[1-15]\n"); 400 DEBUGOUT("Clearing RAR[1-15]\n");
401 for(i = 1; i < IXGB_RAR_ENTRIES; i++) { 401 for(i = 1; i < IXGB_RAR_ENTRIES; i++) {
402 IXGB_WRITE_REG_ARRAY(hw, RA, (i << 1), 0); 402 /* Write high reg first to disable the AV bit first */
403 IXGB_WRITE_REG_ARRAY(hw, RA, ((i << 1) + 1), 0); 403 IXGB_WRITE_REG_ARRAY(hw, RA, ((i << 1) + 1), 0);
404 IXGB_WRITE_REG_ARRAY(hw, RA, (i << 1), 0);
404 } 405 }
405 406
406 return; 407 return;
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index e628126c9c49..a083a9189230 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -36,7 +36,7 @@ static char ixgb_driver_string[] = "Intel(R) PRO/10GbE Network Driver";
36#else 36#else
37#define DRIVERNAPI "-NAPI" 37#define DRIVERNAPI "-NAPI"
38#endif 38#endif
39#define DRV_VERSION "1.0.117-k2"DRIVERNAPI 39#define DRV_VERSION "1.0.126-k2"DRIVERNAPI
40char ixgb_driver_version[] = DRV_VERSION; 40char ixgb_driver_version[] = DRV_VERSION;
41static char ixgb_copyright[] = "Copyright (c) 1999-2006 Intel Corporation."; 41static char ixgb_copyright[] = "Copyright (c) 1999-2006 Intel Corporation.";
42 42
@@ -1287,6 +1287,7 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb,
1287 struct ixgb_buffer *buffer_info; 1287 struct ixgb_buffer *buffer_info;
1288 int len = skb->len; 1288 int len = skb->len;
1289 unsigned int offset = 0, size, count = 0, i; 1289 unsigned int offset = 0, size, count = 0, i;
1290 unsigned int mss = skb_shinfo(skb)->gso_size;
1290 1291
1291 unsigned int nr_frags = skb_shinfo(skb)->nr_frags; 1292 unsigned int nr_frags = skb_shinfo(skb)->nr_frags;
1292 unsigned int f; 1293 unsigned int f;
@@ -1298,6 +1299,11 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb,
1298 while(len) { 1299 while(len) {
1299 buffer_info = &tx_ring->buffer_info[i]; 1300 buffer_info = &tx_ring->buffer_info[i];
1300 size = min(len, IXGB_MAX_DATA_PER_TXD); 1301 size = min(len, IXGB_MAX_DATA_PER_TXD);
1302 /* Workaround for premature desc write-backs
1303 * in TSO mode. Append 4-byte sentinel desc */
1304 if (unlikely(mss && !nr_frags && size == len && size > 8))
1305 size -= 4;
1306
1301 buffer_info->length = size; 1307 buffer_info->length = size;
1302 WARN_ON(buffer_info->dma != 0); 1308 WARN_ON(buffer_info->dma != 0);
1303 buffer_info->dma = 1309 buffer_info->dma =
@@ -1324,6 +1330,13 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb,
1324 while(len) { 1330 while(len) {
1325 buffer_info = &tx_ring->buffer_info[i]; 1331 buffer_info = &tx_ring->buffer_info[i];
1326 size = min(len, IXGB_MAX_DATA_PER_TXD); 1332 size = min(len, IXGB_MAX_DATA_PER_TXD);
1333
1334 /* Workaround for premature desc write-backs
1335 * in TSO mode. Append 4-byte sentinel desc */
1336 if (unlikely(mss && !nr_frags && size == len
1337 && size > 8))
1338 size -= 4;
1339
1327 buffer_info->length = size; 1340 buffer_info->length = size;
1328 buffer_info->dma = 1341 buffer_info->dma =
1329 pci_map_page(adapter->pdev, 1342 pci_map_page(adapter->pdev,
@@ -1398,11 +1411,43 @@ ixgb_tx_queue(struct ixgb_adapter *adapter, int count, int vlan_id,int tx_flags)
1398 IXGB_WRITE_REG(&adapter->hw, TDT, i); 1411 IXGB_WRITE_REG(&adapter->hw, TDT, i);
1399} 1412}
1400 1413
1414static int __ixgb_maybe_stop_tx(struct net_device *netdev, int size)
1415{
1416 struct ixgb_adapter *adapter = netdev_priv(netdev);
1417 struct ixgb_desc_ring *tx_ring = &adapter->tx_ring;
1418
1419 netif_stop_queue(netdev);
1420 /* Herbert's original patch had:
1421 * smp_mb__after_netif_stop_queue();
1422 * but since that doesn't exist yet, just open code it. */
1423 smp_mb();
1424
1425 /* We need to check again in a case another CPU has just
1426 * made room available. */
1427 if (likely(IXGB_DESC_UNUSED(tx_ring) < size))
1428 return -EBUSY;
1429
1430 /* A reprieve! */
1431 netif_start_queue(netdev);
1432 ++adapter->restart_queue;
1433 return 0;
1434}
1435
1436static int ixgb_maybe_stop_tx(struct net_device *netdev,
1437 struct ixgb_desc_ring *tx_ring, int size)
1438{
1439 if (likely(IXGB_DESC_UNUSED(tx_ring) >= size))
1440 return 0;
1441 return __ixgb_maybe_stop_tx(netdev, size);
1442}
1443
1444
1401/* Tx Descriptors needed, worst case */ 1445/* Tx Descriptors needed, worst case */
1402#define TXD_USE_COUNT(S) (((S) >> IXGB_MAX_TXD_PWR) + \ 1446#define TXD_USE_COUNT(S) (((S) >> IXGB_MAX_TXD_PWR) + \
1403 (((S) & (IXGB_MAX_DATA_PER_TXD - 1)) ? 1 : 0)) 1447 (((S) & (IXGB_MAX_DATA_PER_TXD - 1)) ? 1 : 0))
1404#define DESC_NEEDED TXD_USE_COUNT(IXGB_MAX_DATA_PER_TXD) + \ 1448#define DESC_NEEDED TXD_USE_COUNT(IXGB_MAX_DATA_PER_TXD) /* skb->date */ + \
1405 MAX_SKB_FRAGS * TXD_USE_COUNT(PAGE_SIZE) + 1 1449 MAX_SKB_FRAGS * TXD_USE_COUNT(PAGE_SIZE) + 1 /* for context */ \
1450 + 1 /* one more needed for sentinel TSO workaround */
1406 1451
1407static int 1452static int
1408ixgb_xmit_frame(struct sk_buff *skb, struct net_device *netdev) 1453ixgb_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
@@ -1430,7 +1475,8 @@ ixgb_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
1430 spin_lock_irqsave(&adapter->tx_lock, flags); 1475 spin_lock_irqsave(&adapter->tx_lock, flags);
1431#endif 1476#endif
1432 1477
1433 if(unlikely(IXGB_DESC_UNUSED(&adapter->tx_ring) < DESC_NEEDED)) { 1478 if (unlikely(ixgb_maybe_stop_tx(netdev, &adapter->tx_ring,
1479 DESC_NEEDED))) {
1434 netif_stop_queue(netdev); 1480 netif_stop_queue(netdev);
1435 spin_unlock_irqrestore(&adapter->tx_lock, flags); 1481 spin_unlock_irqrestore(&adapter->tx_lock, flags);
1436 return NETDEV_TX_BUSY; 1482 return NETDEV_TX_BUSY;
@@ -1468,8 +1514,7 @@ ixgb_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
1468 1514
1469#ifdef NETIF_F_LLTX 1515#ifdef NETIF_F_LLTX
1470 /* Make sure there is space in the ring for the next send. */ 1516 /* Make sure there is space in the ring for the next send. */
1471 if(unlikely(IXGB_DESC_UNUSED(&adapter->tx_ring) < DESC_NEEDED)) 1517 ixgb_maybe_stop_tx(netdev, &adapter->tx_ring, DESC_NEEDED);
1472 netif_stop_queue(netdev);
1473 1518
1474 spin_unlock_irqrestore(&adapter->tx_lock, flags); 1519 spin_unlock_irqrestore(&adapter->tx_lock, flags);
1475 1520
diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c
index 82c10dec1b5a..2b739fd584f1 100644
--- a/drivers/net/loopback.c
+++ b/drivers/net/loopback.c
@@ -229,9 +229,11 @@ struct net_device loopback_dev = {
229}; 229};
230 230
231/* Setup and register the loopback device. */ 231/* Setup and register the loopback device. */
232int __init loopback_init(void) 232static int __init loopback_init(void)
233{ 233{
234 return register_netdev(&loopback_dev); 234 return register_netdev(&loopback_dev);
235}; 235};
236 236
237module_init(loopback_init);
238
237EXPORT_SYMBOL(loopback_dev); 239EXPORT_SYMBOL(loopback_dev);
diff --git a/drivers/net/pcmcia/3c574_cs.c b/drivers/net/pcmcia/3c574_cs.c
index 794cc61819dd..448bf4a78016 100644
--- a/drivers/net/pcmcia/3c574_cs.c
+++ b/drivers/net/pcmcia/3c574_cs.c
@@ -281,7 +281,6 @@ static int tc574_probe(struct pcmcia_device *link)
281 link->conf.Attributes = CONF_ENABLE_IRQ; 281 link->conf.Attributes = CONF_ENABLE_IRQ;
282 link->conf.IntType = INT_MEMORY_AND_IO; 282 link->conf.IntType = INT_MEMORY_AND_IO;
283 link->conf.ConfigIndex = 1; 283 link->conf.ConfigIndex = 1;
284 link->conf.Present = PRESENT_OPTION;
285 284
286 /* The EL3-specific entries in the device structure. */ 285 /* The EL3-specific entries in the device structure. */
287 dev->hard_start_xmit = &el3_start_xmit; 286 dev->hard_start_xmit = &el3_start_xmit;
diff --git a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c
index 1e73ff7d5d8e..342f4062de0b 100644
--- a/drivers/net/pcmcia/3c589_cs.c
+++ b/drivers/net/pcmcia/3c589_cs.c
@@ -195,7 +195,6 @@ static int tc589_probe(struct pcmcia_device *link)
195 link->conf.Attributes = CONF_ENABLE_IRQ; 195 link->conf.Attributes = CONF_ENABLE_IRQ;
196 link->conf.IntType = INT_MEMORY_AND_IO; 196 link->conf.IntType = INT_MEMORY_AND_IO;
197 link->conf.ConfigIndex = 1; 197 link->conf.ConfigIndex = 1;
198 link->conf.Present = PRESENT_OPTION;
199 198
200 /* The EL3-specific entries in the device structure. */ 199 /* The EL3-specific entries in the device structure. */
201 SET_MODULE_OWNER(dev); 200 SET_MODULE_OWNER(dev);
diff --git a/drivers/net/pcmcia/com20020_cs.c b/drivers/net/pcmcia/com20020_cs.c
index 91f65e91cd5f..0d1c7a41c9c6 100644
--- a/drivers/net/pcmcia/com20020_cs.c
+++ b/drivers/net/pcmcia/com20020_cs.c
@@ -173,7 +173,6 @@ static int com20020_probe(struct pcmcia_device *p_dev)
173 p_dev->irq.IRQInfo1 = IRQ_LEVEL_ID; 173 p_dev->irq.IRQInfo1 = IRQ_LEVEL_ID;
174 p_dev->conf.Attributes = CONF_ENABLE_IRQ; 174 p_dev->conf.Attributes = CONF_ENABLE_IRQ;
175 p_dev->conf.IntType = INT_MEMORY_AND_IO; 175 p_dev->conf.IntType = INT_MEMORY_AND_IO;
176 p_dev->conf.Present = PRESENT_OPTION;
177 176
178 p_dev->irq.Instance = info->dev = dev; 177 p_dev->irq.Instance = info->dev = dev;
179 p_dev->priv = info; 178 p_dev->priv = info;
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c
index 2b1238e2dbdb..d88e9b2e93cf 100644
--- a/drivers/net/pcmcia/pcnet_cs.c
+++ b/drivers/net/pcmcia/pcnet_cs.c
@@ -1617,6 +1617,7 @@ static struct pcmcia_device_id pcnet_ids[] = {
1617 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega FastEther PCC-TX", 0x5261440f, 0x485e85d9), 1617 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega FastEther PCC-TX", 0x5261440f, 0x485e85d9),
1618 PCMCIA_DEVICE_PROD_ID12("Corega,K.K.", "Ethernet LAN Card", 0x110d26d9, 0x9fd2f0a2), 1618 PCMCIA_DEVICE_PROD_ID12("Corega,K.K.", "Ethernet LAN Card", 0x110d26d9, 0x9fd2f0a2),
1619 PCMCIA_DEVICE_PROD_ID12("corega,K.K.", "Ethernet LAN Card", 0x9791a90e, 0x9fd2f0a2), 1619 PCMCIA_DEVICE_PROD_ID12("corega,K.K.", "Ethernet LAN Card", 0x9791a90e, 0x9fd2f0a2),
1620 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "(CG-LAPCCTXD)", 0x5261440f, 0x73ec0d88),
1620 PCMCIA_DEVICE_PROD_ID12("CouplerlessPCMCIA", "100BASE", 0xee5af0ad, 0x7c2add04), 1621 PCMCIA_DEVICE_PROD_ID12("CouplerlessPCMCIA", "100BASE", 0xee5af0ad, 0x7c2add04),
1621 PCMCIA_DEVICE_PROD_ID12("CyQ've", "ELA-010", 0x77008979, 0x9d8d445d), 1622 PCMCIA_DEVICE_PROD_ID12("CyQ've", "ELA-010", 0x77008979, 0x9d8d445d),
1622 PCMCIA_DEVICE_PROD_ID12("CyQ've", "ELA-110E 10/100M LAN Card", 0x77008979, 0xfd184814), 1623 PCMCIA_DEVICE_PROD_ID12("CyQ've", "ELA-110E 10/100M LAN Card", 0x77008979, 0xfd184814),
@@ -1667,6 +1668,7 @@ static struct pcmcia_device_id pcnet_ids[] = {
1667 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN100TX", 0x88fcdeda, 0x6d772737), 1668 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN100TX", 0x88fcdeda, 0x6d772737),
1668 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN100TE", 0x88fcdeda, 0x0e714bee), 1669 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN100TE", 0x88fcdeda, 0x0e714bee),
1669 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN20T", 0x88fcdeda, 0x81090922), 1670 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN20T", 0x88fcdeda, 0x81090922),
1671 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN10TE", 0x88fcdeda, 0xc1e2521c),
1670 PCMCIA_DEVICE_PROD_ID12("LONGSHINE", "PCMCIA Ethernet Card", 0xf866b0b0, 0x6f6652e0), 1672 PCMCIA_DEVICE_PROD_ID12("LONGSHINE", "PCMCIA Ethernet Card", 0xf866b0b0, 0x6f6652e0),
1671 PCMCIA_DEVICE_PROD_ID12("MACNICA", "ME1-JEIDA", 0x20841b68, 0xaf8a3578), 1673 PCMCIA_DEVICE_PROD_ID12("MACNICA", "ME1-JEIDA", 0x20841b68, 0xaf8a3578),
1672 PCMCIA_DEVICE_PROD_ID12("Macsense", "MPC-10", 0xd830297f, 0xd265c307), 1674 PCMCIA_DEVICE_PROD_ID12("Macsense", "MPC-10", 0xd830297f, 0xd265c307),
diff --git a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c
index 8478dca3d8d1..5879e7c36988 100644
--- a/drivers/net/pcmcia/xirc2ps_cs.c
+++ b/drivers/net/pcmcia/xirc2ps_cs.c
@@ -576,7 +576,6 @@ xirc2ps_probe(struct pcmcia_device *link)
576 link->conf.Attributes = CONF_ENABLE_IRQ; 576 link->conf.Attributes = CONF_ENABLE_IRQ;
577 link->conf.IntType = INT_MEMORY_AND_IO; 577 link->conf.IntType = INT_MEMORY_AND_IO;
578 link->conf.ConfigIndex = 1; 578 link->conf.ConfigIndex = 1;
579 link->conf.Present = PRESENT_OPTION;
580 link->irq.Handler = xirc2ps_interrupt; 579 link->irq.Handler = xirc2ps_interrupt;
581 link->irq.Instance = dev; 580 link->irq.Instance = dev;
582 581
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c
index d79d141a601d..8844c20eac2d 100644
--- a/drivers/net/qla3xxx.c
+++ b/drivers/net/qla3xxx.c
@@ -208,6 +208,15 @@ static void ql_write_common_reg(struct ql3_adapter *qdev,
208 return; 208 return;
209} 209}
210 210
211static void ql_write_nvram_reg(struct ql3_adapter *qdev,
212 u32 __iomem *reg, u32 value)
213{
214 writel(value, reg);
215 readl(reg);
216 udelay(1);
217 return;
218}
219
211static void ql_write_page0_reg(struct ql3_adapter *qdev, 220static void ql_write_page0_reg(struct ql3_adapter *qdev,
212 u32 __iomem *reg, u32 value) 221 u32 __iomem *reg, u32 value)
213{ 222{
@@ -336,9 +345,9 @@ static void fm93c56a_select(struct ql3_adapter *qdev)
336 qdev->mem_map_registers; 345 qdev->mem_map_registers;
337 346
338 qdev->eeprom_cmd_data = AUBURN_EEPROM_CS_1; 347 qdev->eeprom_cmd_data = AUBURN_EEPROM_CS_1;
339 ql_write_common_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg, 348 ql_write_nvram_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg,
340 ISP_NVRAM_MASK | qdev->eeprom_cmd_data); 349 ISP_NVRAM_MASK | qdev->eeprom_cmd_data);
341 ql_write_common_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg, 350 ql_write_nvram_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg,
342 ((ISP_NVRAM_MASK << 16) | qdev->eeprom_cmd_data)); 351 ((ISP_NVRAM_MASK << 16) | qdev->eeprom_cmd_data));
343} 352}
344 353
@@ -355,14 +364,14 @@ static void fm93c56a_cmd(struct ql3_adapter *qdev, u32 cmd, u32 eepromAddr)
355 qdev->mem_map_registers; 364 qdev->mem_map_registers;
356 365
357 /* Clock in a zero, then do the start bit */ 366 /* Clock in a zero, then do the start bit */
358 ql_write_common_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg, 367 ql_write_nvram_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg,
359 ISP_NVRAM_MASK | qdev->eeprom_cmd_data | 368 ISP_NVRAM_MASK | qdev->eeprom_cmd_data |
360 AUBURN_EEPROM_DO_1); 369 AUBURN_EEPROM_DO_1);
361 ql_write_common_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg, 370 ql_write_nvram_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg,
362 ISP_NVRAM_MASK | qdev-> 371 ISP_NVRAM_MASK | qdev->
363 eeprom_cmd_data | AUBURN_EEPROM_DO_1 | 372 eeprom_cmd_data | AUBURN_EEPROM_DO_1 |
364 AUBURN_EEPROM_CLK_RISE); 373 AUBURN_EEPROM_CLK_RISE);
365 ql_write_common_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg, 374 ql_write_nvram_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg,
366 ISP_NVRAM_MASK | qdev-> 375 ISP_NVRAM_MASK | qdev->
367 eeprom_cmd_data | AUBURN_EEPROM_DO_1 | 376 eeprom_cmd_data | AUBURN_EEPROM_DO_1 |
368 AUBURN_EEPROM_CLK_FALL); 377 AUBURN_EEPROM_CLK_FALL);
@@ -378,20 +387,20 @@ static void fm93c56a_cmd(struct ql3_adapter *qdev, u32 cmd, u32 eepromAddr)
378 * If the bit changed, then change the DO state to 387 * If the bit changed, then change the DO state to
379 * match 388 * match
380 */ 389 */
381 ql_write_common_reg(qdev, 390 ql_write_nvram_reg(qdev,
382 &port_regs->CommonRegs. 391 &port_regs->CommonRegs.
383 serialPortInterfaceReg, 392 serialPortInterfaceReg,
384 ISP_NVRAM_MASK | qdev-> 393 ISP_NVRAM_MASK | qdev->
385 eeprom_cmd_data | dataBit); 394 eeprom_cmd_data | dataBit);
386 previousBit = dataBit; 395 previousBit = dataBit;
387 } 396 }
388 ql_write_common_reg(qdev, 397 ql_write_nvram_reg(qdev,
389 &port_regs->CommonRegs. 398 &port_regs->CommonRegs.
390 serialPortInterfaceReg, 399 serialPortInterfaceReg,
391 ISP_NVRAM_MASK | qdev-> 400 ISP_NVRAM_MASK | qdev->
392 eeprom_cmd_data | dataBit | 401 eeprom_cmd_data | dataBit |
393 AUBURN_EEPROM_CLK_RISE); 402 AUBURN_EEPROM_CLK_RISE);
394 ql_write_common_reg(qdev, 403 ql_write_nvram_reg(qdev,
395 &port_regs->CommonRegs. 404 &port_regs->CommonRegs.
396 serialPortInterfaceReg, 405 serialPortInterfaceReg,
397 ISP_NVRAM_MASK | qdev-> 406 ISP_NVRAM_MASK | qdev->
@@ -412,20 +421,20 @@ static void fm93c56a_cmd(struct ql3_adapter *qdev, u32 cmd, u32 eepromAddr)
412 * If the bit changed, then change the DO state to 421 * If the bit changed, then change the DO state to
413 * match 422 * match
414 */ 423 */
415 ql_write_common_reg(qdev, 424 ql_write_nvram_reg(qdev,
416 &port_regs->CommonRegs. 425 &port_regs->CommonRegs.
417 serialPortInterfaceReg, 426 serialPortInterfaceReg,
418 ISP_NVRAM_MASK | qdev-> 427 ISP_NVRAM_MASK | qdev->
419 eeprom_cmd_data | dataBit); 428 eeprom_cmd_data | dataBit);
420 previousBit = dataBit; 429 previousBit = dataBit;
421 } 430 }
422 ql_write_common_reg(qdev, 431 ql_write_nvram_reg(qdev,
423 &port_regs->CommonRegs. 432 &port_regs->CommonRegs.
424 serialPortInterfaceReg, 433 serialPortInterfaceReg,
425 ISP_NVRAM_MASK | qdev-> 434 ISP_NVRAM_MASK | qdev->
426 eeprom_cmd_data | dataBit | 435 eeprom_cmd_data | dataBit |
427 AUBURN_EEPROM_CLK_RISE); 436 AUBURN_EEPROM_CLK_RISE);
428 ql_write_common_reg(qdev, 437 ql_write_nvram_reg(qdev,
429 &port_regs->CommonRegs. 438 &port_regs->CommonRegs.
430 serialPortInterfaceReg, 439 serialPortInterfaceReg,
431 ISP_NVRAM_MASK | qdev-> 440 ISP_NVRAM_MASK | qdev->
@@ -443,7 +452,7 @@ static void fm93c56a_deselect(struct ql3_adapter *qdev)
443 struct ql3xxx_port_registers __iomem *port_regs = 452 struct ql3xxx_port_registers __iomem *port_regs =
444 qdev->mem_map_registers; 453 qdev->mem_map_registers;
445 qdev->eeprom_cmd_data = AUBURN_EEPROM_CS_0; 454 qdev->eeprom_cmd_data = AUBURN_EEPROM_CS_0;
446 ql_write_common_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg, 455 ql_write_nvram_reg(qdev, &port_regs->CommonRegs.serialPortInterfaceReg,
447 ISP_NVRAM_MASK | qdev->eeprom_cmd_data); 456 ISP_NVRAM_MASK | qdev->eeprom_cmd_data);
448} 457}
449 458
@@ -461,12 +470,12 @@ static void fm93c56a_datain(struct ql3_adapter *qdev, unsigned short *value)
461 /* Read the data bits */ 470 /* Read the data bits */
462 /* The first bit is a dummy. Clock right over it. */ 471 /* The first bit is a dummy. Clock right over it. */
463 for (i = 0; i < dataBits; i++) { 472 for (i = 0; i < dataBits; i++) {
464 ql_write_common_reg(qdev, 473 ql_write_nvram_reg(qdev,
465 &port_regs->CommonRegs. 474 &port_regs->CommonRegs.
466 serialPortInterfaceReg, 475 serialPortInterfaceReg,
467 ISP_NVRAM_MASK | qdev->eeprom_cmd_data | 476 ISP_NVRAM_MASK | qdev->eeprom_cmd_data |
468 AUBURN_EEPROM_CLK_RISE); 477 AUBURN_EEPROM_CLK_RISE);
469 ql_write_common_reg(qdev, 478 ql_write_nvram_reg(qdev,
470 &port_regs->CommonRegs. 479 &port_regs->CommonRegs.
471 serialPortInterfaceReg, 480 serialPortInterfaceReg,
472 ISP_NVRAM_MASK | qdev->eeprom_cmd_data | 481 ISP_NVRAM_MASK | qdev->eeprom_cmd_data |
@@ -3370,7 +3379,6 @@ static int __devinit ql3xxx_probe(struct pci_dev *pdev,
3370 SET_MODULE_OWNER(ndev); 3379 SET_MODULE_OWNER(ndev);
3371 SET_NETDEV_DEV(ndev, &pdev->dev); 3380 SET_NETDEV_DEV(ndev, &pdev->dev);
3372 3381
3373 ndev->features = NETIF_F_LLTX;
3374 if (pci_using_dac) 3382 if (pci_using_dac)
3375 ndev->features |= NETIF_F_HIGHDMA; 3383 ndev->features |= NETIF_F_HIGHDMA;
3376 3384
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c
index 785e4a535f9e..616be8d0fa85 100644
--- a/drivers/net/sungem.c
+++ b/drivers/net/sungem.c
@@ -90,7 +90,8 @@
90 90
91#define ADVERTISE_MASK (SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | \ 91#define ADVERTISE_MASK (SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | \
92 SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | \ 92 SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | \
93 SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full) 93 SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full | \
94 SUPPORTED_Pause | SUPPORTED_Autoneg)
94 95
95#define DRV_NAME "sungem" 96#define DRV_NAME "sungem"
96#define DRV_VERSION "0.98" 97#define DRV_VERSION "0.98"
diff --git a/drivers/net/sungem_phy.c b/drivers/net/sungem_phy.c
index 49800b25907d..d21991ee88c4 100644
--- a/drivers/net/sungem_phy.c
+++ b/drivers/net/sungem_phy.c
@@ -3,10 +3,9 @@
3 * 3 *
4 * This file could be shared with other drivers. 4 * This file could be shared with other drivers.
5 * 5 *
6 * (c) 2002, Benjamin Herrenscmidt (benh@kernel.crashing.org) 6 * (c) 2002-2007, Benjamin Herrenscmidt (benh@kernel.crashing.org)
7 * 7 *
8 * TODO: 8 * TODO:
9 * - Implement WOL
10 * - Add support for PHYs that provide an IRQ line 9 * - Add support for PHYs that provide an IRQ line
11 * - Eventually moved the entire polling state machine in 10 * - Eventually moved the entire polling state machine in
12 * there (out of the eth driver), so that it can easily be 11 * there (out of the eth driver), so that it can easily be
@@ -152,6 +151,44 @@ static int bcm5221_suspend(struct mii_phy* phy)
152 return 0; 151 return 0;
153} 152}
154 153
154static int bcm5241_init(struct mii_phy* phy)
155{
156 u16 data;
157
158 data = phy_read(phy, MII_BCM5221_TEST);
159 phy_write(phy, MII_BCM5221_TEST,
160 data | MII_BCM5221_TEST_ENABLE_SHADOWS);
161
162 data = phy_read(phy, MII_BCM5221_SHDOW_AUX_STAT2);
163 phy_write(phy, MII_BCM5221_SHDOW_AUX_STAT2,
164 data | MII_BCM5221_SHDOW_AUX_STAT2_APD);
165
166 data = phy_read(phy, MII_BCM5221_SHDOW_AUX_MODE4);
167 phy_write(phy, MII_BCM5221_SHDOW_AUX_MODE4,
168 data & ~MII_BCM5241_SHDOW_AUX_MODE4_STANDBYPWR);
169
170 data = phy_read(phy, MII_BCM5221_TEST);
171 phy_write(phy, MII_BCM5221_TEST,
172 data & ~MII_BCM5221_TEST_ENABLE_SHADOWS);
173
174 return 0;
175}
176
177static int bcm5241_suspend(struct mii_phy* phy)
178{
179 u16 data;
180
181 data = phy_read(phy, MII_BCM5221_TEST);
182 phy_write(phy, MII_BCM5221_TEST,
183 data | MII_BCM5221_TEST_ENABLE_SHADOWS);
184
185 data = phy_read(phy, MII_BCM5221_SHDOW_AUX_MODE4);
186 phy_write(phy, MII_BCM5221_SHDOW_AUX_MODE4,
187 data | MII_BCM5241_SHDOW_AUX_MODE4_STANDBYPWR);
188
189 return 0;
190}
191
155static int bcm5400_init(struct mii_phy* phy) 192static int bcm5400_init(struct mii_phy* phy)
156{ 193{
157 u16 data; 194 u16 data;
@@ -373,6 +410,10 @@ static int bcm54xx_setup_aneg(struct mii_phy *phy, u32 advertise)
373 adv |= ADVERTISE_100HALF; 410 adv |= ADVERTISE_100HALF;
374 if (advertise & ADVERTISED_100baseT_Full) 411 if (advertise & ADVERTISED_100baseT_Full)
375 adv |= ADVERTISE_100FULL; 412 adv |= ADVERTISE_100FULL;
413 if (advertise & ADVERTISED_Pause)
414 adv |= ADVERTISE_PAUSE_CAP;
415 if (advertise & ADVERTISED_Asym_Pause)
416 adv |= ADVERTISE_PAUSE_ASYM;
376 phy_write(phy, MII_ADVERTISE, adv); 417 phy_write(phy, MII_ADVERTISE, adv);
377 418
378 /* Setup 1000BT advertise */ 419 /* Setup 1000BT advertise */
@@ -436,12 +477,15 @@ static int bcm54xx_read_link(struct mii_phy *phy)
436 val = phy_read(phy, MII_BCM5400_AUXSTATUS); 477 val = phy_read(phy, MII_BCM5400_AUXSTATUS);
437 link_mode = ((val & MII_BCM5400_AUXSTATUS_LINKMODE_MASK) >> 478 link_mode = ((val & MII_BCM5400_AUXSTATUS_LINKMODE_MASK) >>
438 MII_BCM5400_AUXSTATUS_LINKMODE_SHIFT); 479 MII_BCM5400_AUXSTATUS_LINKMODE_SHIFT);
439 phy->duplex = phy_BCM5400_link_table[link_mode][0] ? DUPLEX_FULL : DUPLEX_HALF; 480 phy->duplex = phy_BCM5400_link_table[link_mode][0] ?
481 DUPLEX_FULL : DUPLEX_HALF;
440 phy->speed = phy_BCM5400_link_table[link_mode][2] ? 482 phy->speed = phy_BCM5400_link_table[link_mode][2] ?
441 SPEED_1000 : 483 SPEED_1000 :
442 (phy_BCM5400_link_table[link_mode][1] ? SPEED_100 : SPEED_10); 484 (phy_BCM5400_link_table[link_mode][1] ?
485 SPEED_100 : SPEED_10);
443 val = phy_read(phy, MII_LPA); 486 val = phy_read(phy, MII_LPA);
444 phy->pause = ((val & LPA_PAUSE) != 0); 487 phy->pause = (phy->duplex == DUPLEX_FULL) &&
488 ((val & LPA_PAUSE) != 0);
445 } 489 }
446 /* On non-aneg, we assume what we put in BMCR is the speed, 490 /* On non-aneg, we assume what we put in BMCR is the speed,
447 * though magic-aneg shouldn't prevent this case from occurring 491 * though magic-aneg shouldn't prevent this case from occurring
@@ -450,6 +494,28 @@ static int bcm54xx_read_link(struct mii_phy *phy)
450 return 0; 494 return 0;
451} 495}
452 496
497static int marvell88e1111_init(struct mii_phy* phy)
498{
499 u16 rev;
500
501 /* magic init sequence for rev 0 */
502 rev = phy_read(phy, MII_PHYSID2) & 0x000f;
503 if (rev == 0) {
504 phy_write(phy, 0x1d, 0x000a);
505 phy_write(phy, 0x1e, 0x0821);
506
507 phy_write(phy, 0x1d, 0x0006);
508 phy_write(phy, 0x1e, 0x8600);
509
510 phy_write(phy, 0x1d, 0x000b);
511 phy_write(phy, 0x1e, 0x0100);
512
513 phy_write(phy, 0x1d, 0x0004);
514 phy_write(phy, 0x1e, 0x4850);
515 }
516 return 0;
517}
518
453static int marvell_setup_aneg(struct mii_phy *phy, u32 advertise) 519static int marvell_setup_aneg(struct mii_phy *phy, u32 advertise)
454{ 520{
455 u16 ctl, adv; 521 u16 ctl, adv;
@@ -471,6 +537,10 @@ static int marvell_setup_aneg(struct mii_phy *phy, u32 advertise)
471 adv |= ADVERTISE_100HALF; 537 adv |= ADVERTISE_100HALF;
472 if (advertise & ADVERTISED_100baseT_Full) 538 if (advertise & ADVERTISED_100baseT_Full)
473 adv |= ADVERTISE_100FULL; 539 adv |= ADVERTISE_100FULL;
540 if (advertise & ADVERTISED_Pause)
541 adv |= ADVERTISE_PAUSE_CAP;
542 if (advertise & ADVERTISED_Asym_Pause)
543 adv |= ADVERTISE_PAUSE_ASYM;
474 phy_write(phy, MII_ADVERTISE, adv); 544 phy_write(phy, MII_ADVERTISE, adv);
475 545
476 /* Setup 1000BT advertise & enable crossover detect 546 /* Setup 1000BT advertise & enable crossover detect
@@ -549,7 +619,7 @@ static int marvell_setup_forced(struct mii_phy *phy, int speed, int fd)
549 619
550static int marvell_read_link(struct mii_phy *phy) 620static int marvell_read_link(struct mii_phy *phy)
551{ 621{
552 u16 status; 622 u16 status, pmask;
553 623
554 if (phy->autoneg) { 624 if (phy->autoneg) {
555 status = phy_read(phy, MII_M1011_PHY_SPEC_STATUS); 625 status = phy_read(phy, MII_M1011_PHY_SPEC_STATUS);
@@ -565,7 +635,9 @@ static int marvell_read_link(struct mii_phy *phy)
565 phy->duplex = DUPLEX_FULL; 635 phy->duplex = DUPLEX_FULL;
566 else 636 else
567 phy->duplex = DUPLEX_HALF; 637 phy->duplex = DUPLEX_HALF;
568 phy->pause = 0; /* XXX Check against spec ! */ 638 pmask = MII_M1011_PHY_SPEC_STATUS_TX_PAUSE |
639 MII_M1011_PHY_SPEC_STATUS_RX_PAUSE;
640 phy->pause = (status & pmask) == pmask;
569 } 641 }
570 /* On non-aneg, we assume what we put in BMCR is the speed, 642 /* On non-aneg, we assume what we put in BMCR is the speed,
571 * though magic-aneg shouldn't prevent this case from occurring 643 * though magic-aneg shouldn't prevent this case from occurring
@@ -595,6 +667,10 @@ static int genmii_setup_aneg(struct mii_phy *phy, u32 advertise)
595 adv |= ADVERTISE_100HALF; 667 adv |= ADVERTISE_100HALF;
596 if (advertise & ADVERTISED_100baseT_Full) 668 if (advertise & ADVERTISED_100baseT_Full)
597 adv |= ADVERTISE_100FULL; 669 adv |= ADVERTISE_100FULL;
670 if (advertise & ADVERTISED_Pause)
671 adv |= ADVERTISE_PAUSE_CAP;
672 if (advertise & ADVERTISED_Asym_Pause)
673 adv |= ADVERTISE_PAUSE_ASYM;
598 phy_write(phy, MII_ADVERTISE, adv); 674 phy_write(phy, MII_ADVERTISE, adv);
599 675
600 /* Start/Restart aneg */ 676 /* Start/Restart aneg */
@@ -666,7 +742,8 @@ static int genmii_read_link(struct mii_phy *phy)
666 phy->speed = SPEED_100; 742 phy->speed = SPEED_100;
667 else 743 else
668 phy->speed = SPEED_10; 744 phy->speed = SPEED_10;
669 phy->pause = 0; 745 phy->pause = (phy->duplex == DUPLEX_FULL) &&
746 ((lpa & LPA_PAUSE) != 0);
670 } 747 }
671 /* On non-aneg, we assume what we put in BMCR is the speed, 748 /* On non-aneg, we assume what we put in BMCR is the speed,
672 * though magic-aneg shouldn't prevent this case from occurring 749 * though magic-aneg shouldn't prevent this case from occurring
@@ -676,11 +753,19 @@ static int genmii_read_link(struct mii_phy *phy)
676} 753}
677 754
678 755
679#define MII_BASIC_FEATURES (SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | \ 756#define MII_BASIC_FEATURES \
680 SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | \ 757 (SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | \
681 SUPPORTED_Autoneg | SUPPORTED_TP | SUPPORTED_MII) 758 SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | \
682#define MII_GBIT_FEATURES (MII_BASIC_FEATURES | \ 759 SUPPORTED_Autoneg | SUPPORTED_TP | SUPPORTED_MII | \
683 SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full) 760 SUPPORTED_Pause)
761
762/* On gigabit capable PHYs, we advertise Pause support but not asym pause
763 * support for now as I'm not sure it's supported and Darwin doesn't do
764 * it neither. --BenH.
765 */
766#define MII_GBIT_FEATURES \
767 (MII_BASIC_FEATURES | \
768 SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full)
684 769
685/* Broadcom BCM 5201 */ 770/* Broadcom BCM 5201 */
686static struct mii_phy_ops bcm5201_phy_ops = { 771static struct mii_phy_ops bcm5201_phy_ops = {
@@ -720,6 +805,24 @@ static struct mii_phy_def bcm5221_phy_def = {
720 .ops = &bcm5221_phy_ops 805 .ops = &bcm5221_phy_ops
721}; 806};
722 807
808/* Broadcom BCM 5241 */
809static struct mii_phy_ops bcm5241_phy_ops = {
810 .suspend = bcm5241_suspend,
811 .init = bcm5241_init,
812 .setup_aneg = genmii_setup_aneg,
813 .setup_forced = genmii_setup_forced,
814 .poll_link = genmii_poll_link,
815 .read_link = genmii_read_link,
816};
817static struct mii_phy_def bcm5241_phy_def = {
818 .phy_id = 0x0143bc30,
819 .phy_id_mask = 0xfffffff0,
820 .name = "BCM5241",
821 .features = MII_BASIC_FEATURES,
822 .magic_aneg = 1,
823 .ops = &bcm5241_phy_ops
824};
825
723/* Broadcom BCM 5400 */ 826/* Broadcom BCM 5400 */
724static struct mii_phy_ops bcm5400_phy_ops = { 827static struct mii_phy_ops bcm5400_phy_ops = {
725 .init = bcm5400_init, 828 .init = bcm5400_init,
@@ -854,11 +957,8 @@ static struct mii_phy_def bcm5462V_phy_def = {
854 .ops = &bcm5462V_phy_ops 957 .ops = &bcm5462V_phy_ops
855}; 958};
856 959
857/* Marvell 88E1101 (Apple seem to deal with 2 different revs, 960/* Marvell 88E1101 amd 88E1111 */
858 * I masked out the 8 last bits to get both, but some specs 961static struct mii_phy_ops marvell88e1101_phy_ops = {
859 * would be useful here) --BenH.
860 */
861static struct mii_phy_ops marvell_phy_ops = {
862 .suspend = generic_suspend, 962 .suspend = generic_suspend,
863 .setup_aneg = marvell_setup_aneg, 963 .setup_aneg = marvell_setup_aneg,
864 .setup_forced = marvell_setup_forced, 964 .setup_forced = marvell_setup_forced,
@@ -866,13 +966,41 @@ static struct mii_phy_ops marvell_phy_ops = {
866 .read_link = marvell_read_link 966 .read_link = marvell_read_link
867}; 967};
868 968
869static struct mii_phy_def marvell_phy_def = { 969static struct mii_phy_ops marvell88e1111_phy_ops = {
870 .phy_id = 0x01410c00, 970 .init = marvell88e1111_init,
871 .phy_id_mask = 0xffffff00, 971 .suspend = generic_suspend,
872 .name = "Marvell 88E1101", 972 .setup_aneg = marvell_setup_aneg,
973 .setup_forced = marvell_setup_forced,
974 .poll_link = genmii_poll_link,
975 .read_link = marvell_read_link
976};
977
978/* two revs in darwin for the 88e1101 ... I could use a datasheet
979 * to get the proper names...
980 */
981static struct mii_phy_def marvell88e1101v1_phy_def = {
982 .phy_id = 0x01410c20,
983 .phy_id_mask = 0xfffffff0,
984 .name = "Marvell 88E1101v1",
985 .features = MII_GBIT_FEATURES,
986 .magic_aneg = 1,
987 .ops = &marvell88e1101_phy_ops
988};
989static struct mii_phy_def marvell88e1101v2_phy_def = {
990 .phy_id = 0x01410c60,
991 .phy_id_mask = 0xfffffff0,
992 .name = "Marvell 88E1101v2",
993 .features = MII_GBIT_FEATURES,
994 .magic_aneg = 1,
995 .ops = &marvell88e1101_phy_ops
996};
997static struct mii_phy_def marvell88e1111_phy_def = {
998 .phy_id = 0x01410cc0,
999 .phy_id_mask = 0xfffffff0,
1000 .name = "Marvell 88E1111",
873 .features = MII_GBIT_FEATURES, 1001 .features = MII_GBIT_FEATURES,
874 .magic_aneg = 1, 1002 .magic_aneg = 1,
875 .ops = &marvell_phy_ops 1003 .ops = &marvell88e1111_phy_ops
876}; 1004};
877 1005
878/* Generic implementation for most 10/100 PHYs */ 1006/* Generic implementation for most 10/100 PHYs */
@@ -895,6 +1023,7 @@ static struct mii_phy_def genmii_phy_def = {
895static struct mii_phy_def* mii_phy_table[] = { 1023static struct mii_phy_def* mii_phy_table[] = {
896 &bcm5201_phy_def, 1024 &bcm5201_phy_def,
897 &bcm5221_phy_def, 1025 &bcm5221_phy_def,
1026 &bcm5241_phy_def,
898 &bcm5400_phy_def, 1027 &bcm5400_phy_def,
899 &bcm5401_phy_def, 1028 &bcm5401_phy_def,
900 &bcm5411_phy_def, 1029 &bcm5411_phy_def,
@@ -902,7 +1031,9 @@ static struct mii_phy_def* mii_phy_table[] = {
902 &bcm5421k2_phy_def, 1031 &bcm5421k2_phy_def,
903 &bcm5461_phy_def, 1032 &bcm5461_phy_def,
904 &bcm5462V_phy_def, 1033 &bcm5462V_phy_def,
905 &marvell_phy_def, 1034 &marvell88e1101v1_phy_def,
1035 &marvell88e1101v2_phy_def,
1036 &marvell88e1111_phy_def,
906 &genmii_phy_def, 1037 &genmii_phy_def,
907 NULL 1038 NULL
908}; 1039};
diff --git a/drivers/net/sungem_phy.h b/drivers/net/sungem_phy.h
index 8ee1ca0471cf..1d70ba6f9f10 100644
--- a/drivers/net/sungem_phy.h
+++ b/drivers/net/sungem_phy.h
@@ -30,7 +30,7 @@ struct mii_phy_def
30struct mii_phy 30struct mii_phy
31{ 31{
32 struct mii_phy_def* def; 32 struct mii_phy_def* def;
33 int advertising; 33 u32 advertising;
34 int mii_id; 34 int mii_id;
35 35
36 /* 1: autoneg enabled, 0: disabled */ 36 /* 1: autoneg enabled, 0: disabled */
@@ -85,6 +85,9 @@ extern int mii_phy_probe(struct mii_phy *phy, int mii_id);
85#define MII_BCM5221_SHDOW_AUX_MODE4_IDDQMODE 0x0001 85#define MII_BCM5221_SHDOW_AUX_MODE4_IDDQMODE 0x0001
86#define MII_BCM5221_SHDOW_AUX_MODE4_CLKLOPWR 0x0004 86#define MII_BCM5221_SHDOW_AUX_MODE4_CLKLOPWR 0x0004
87 87
88/* MII BCM5241 Additional registers */
89#define MII_BCM5241_SHDOW_AUX_MODE4_STANDBYPWR 0x0008
90
88/* MII BCM5400 1000-BASET Control register */ 91/* MII BCM5400 1000-BASET Control register */
89#define MII_BCM5400_GB_CONTROL 0x09 92#define MII_BCM5400_GB_CONTROL 0x09
90#define MII_BCM5400_GB_CONTROL_FULLDUPLEXCAP 0x0200 93#define MII_BCM5400_GB_CONTROL_FULLDUPLEXCAP 0x0200
@@ -115,5 +118,7 @@ extern int mii_phy_probe(struct mii_phy *phy, int mii_id);
115#define MII_M1011_PHY_SPEC_STATUS_SPD_MASK 0xc000 118#define MII_M1011_PHY_SPEC_STATUS_SPD_MASK 0xc000
116#define MII_M1011_PHY_SPEC_STATUS_FULLDUPLEX 0x2000 119#define MII_M1011_PHY_SPEC_STATUS_FULLDUPLEX 0x2000
117#define MII_M1011_PHY_SPEC_STATUS_RESOLVED 0x0800 120#define MII_M1011_PHY_SPEC_STATUS_RESOLVED 0x0800
121#define MII_M1011_PHY_SPEC_STATUS_TX_PAUSE 0x0008
122#define MII_M1011_PHY_SPEC_STATUS_RX_PAUSE 0x0004
118 123
119#endif /* __SUNGEM_PHY_H__ */ 124#endif /* __SUNGEM_PHY_H__ */
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 4056ba1ff3c7..f4bf62c2a7a5 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -68,8 +68,8 @@
68 68
69#define DRV_MODULE_NAME "tg3" 69#define DRV_MODULE_NAME "tg3"
70#define PFX DRV_MODULE_NAME ": " 70#define PFX DRV_MODULE_NAME ": "
71#define DRV_MODULE_VERSION "3.71" 71#define DRV_MODULE_VERSION "3.72"
72#define DRV_MODULE_RELDATE "December 15, 2006" 72#define DRV_MODULE_RELDATE "January 8, 2007"
73 73
74#define TG3_DEF_MAC_MODE 0 74#define TG3_DEF_MAC_MODE 0
75#define TG3_DEF_RX_MODE 0 75#define TG3_DEF_RX_MODE 0
@@ -1015,7 +1015,12 @@ out:
1015 else if (tp->tg3_flags2 & TG3_FLG2_PHY_JITTER_BUG) { 1015 else if (tp->tg3_flags2 & TG3_FLG2_PHY_JITTER_BUG) {
1016 tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x0c00); 1016 tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x0c00);
1017 tg3_writephy(tp, MII_TG3_DSP_ADDRESS, 0x000a); 1017 tg3_writephy(tp, MII_TG3_DSP_ADDRESS, 0x000a);
1018 tg3_writephy(tp, MII_TG3_DSP_RW_PORT, 0x010b); 1018 if (tp->tg3_flags2 & TG3_FLG2_PHY_ADJUST_TRIM) {
1019 tg3_writephy(tp, MII_TG3_DSP_RW_PORT, 0x110b);
1020 tg3_writephy(tp, MII_TG3_TEST1,
1021 MII_TG3_TEST1_TRIM_EN | 0x4);
1022 } else
1023 tg3_writephy(tp, MII_TG3_DSP_RW_PORT, 0x010b);
1019 tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x0400); 1024 tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x0400);
1020 } 1025 }
1021 /* Set Extended packet length bit (bit 14) on all chips that */ 1026 /* Set Extended packet length bit (bit 14) on all chips that */
@@ -10803,9 +10808,11 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
10803 10808
10804 if (tp->tg3_flags2 & TG3_FLG2_5705_PLUS) { 10809 if (tp->tg3_flags2 & TG3_FLG2_5705_PLUS) {
10805 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5755 || 10810 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5755 ||
10806 GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5787) 10811 GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5787) {
10807 tp->tg3_flags2 |= TG3_FLG2_PHY_JITTER_BUG; 10812 tp->tg3_flags2 |= TG3_FLG2_PHY_JITTER_BUG;
10808 else if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5906) 10813 if (tp->pdev->device == PCI_DEVICE_ID_TIGON3_5755M)
10814 tp->tg3_flags2 |= TG3_FLG2_PHY_ADJUST_TRIM;
10815 } else if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5906)
10809 tp->tg3_flags2 |= TG3_FLG2_PHY_BER_BUG; 10816 tp->tg3_flags2 |= TG3_FLG2_PHY_BER_BUG;
10810 } 10817 }
10811 10818
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
index cf78a7e5997b..80f59ac7ec58 100644
--- a/drivers/net/tg3.h
+++ b/drivers/net/tg3.h
@@ -1658,6 +1658,9 @@
1658#define MII_TG3_EPHY_TEST 0x1f /* 5906 PHY register */ 1658#define MII_TG3_EPHY_TEST 0x1f /* 5906 PHY register */
1659#define MII_TG3_EPHY_SHADOW_EN 0x80 1659#define MII_TG3_EPHY_SHADOW_EN 0x80
1660 1660
1661#define MII_TG3_TEST1 0x1e
1662#define MII_TG3_TEST1_TRIM_EN 0x0010
1663
1661/* There are two ways to manage the TX descriptors on the tigon3. 1664/* There are two ways to manage the TX descriptors on the tigon3.
1662 * Either the descriptors are in host DMA'able memory, or they 1665 * Either the descriptors are in host DMA'able memory, or they
1663 * exist only in the cards on-chip SRAM. All 16 send bds are under 1666 * exist only in the cards on-chip SRAM. All 16 send bds are under
@@ -2256,6 +2259,7 @@ struct tg3 {
2256#define TG3_FLG2_1SHOT_MSI 0x10000000 2259#define TG3_FLG2_1SHOT_MSI 0x10000000
2257#define TG3_FLG2_PHY_JITTER_BUG 0x20000000 2260#define TG3_FLG2_PHY_JITTER_BUG 0x20000000
2258#define TG3_FLG2_NO_FWARE_REPORTED 0x40000000 2261#define TG3_FLG2_NO_FWARE_REPORTED 0x40000000
2262#define TG3_FLG2_PHY_ADJUST_TRIM 0x80000000
2259 2263
2260 u32 split_mode_max_reqs; 2264 u32 split_mode_max_reqs;
2261#define SPLIT_MODE_5704_MAX_REQ 3 2265#define SPLIT_MODE_5704_MAX_REQ 3
diff --git a/drivers/net/wireless/ipw2100.c b/drivers/net/wireless/ipw2100.c
index 0e94fbbf7a94..b85857a84870 100644
--- a/drivers/net/wireless/ipw2100.c
+++ b/drivers/net/wireless/ipw2100.c
@@ -2664,7 +2664,7 @@ static void __ipw2100_rx_process(struct ipw2100_priv *priv)
2664 break; 2664 break;
2665 } 2665 }
2666#endif 2666#endif
2667 if (stats.len < sizeof(u->rx_data.header)) 2667 if (stats.len < sizeof(struct ieee80211_hdr_3addr))
2668 break; 2668 break;
2669 switch (WLAN_FC_GET_TYPE(u->rx_data.header.frame_ctl)) { 2669 switch (WLAN_FC_GET_TYPE(u->rx_data.header.frame_ctl)) {
2670 case IEEE80211_FTYPE_MGMT: 2670 case IEEE80211_FTYPE_MGMT:
diff --git a/drivers/net/wireless/netwave_cs.c b/drivers/net/wireless/netwave_cs.c
index 644b4741ef74..a009ab517710 100644
--- a/drivers/net/wireless/netwave_cs.c
+++ b/drivers/net/wireless/netwave_cs.c
@@ -406,7 +406,6 @@ static int netwave_probe(struct pcmcia_device *link)
406 link->conf.Attributes = CONF_ENABLE_IRQ; 406 link->conf.Attributes = CONF_ENABLE_IRQ;
407 link->conf.IntType = INT_MEMORY_AND_IO; 407 link->conf.IntType = INT_MEMORY_AND_IO;
408 link->conf.ConfigIndex = 1; 408 link->conf.ConfigIndex = 1;
409 link->conf.Present = PRESENT_OPTION;
410 409
411 /* Netwave private struct init. link/dev/node already taken care of, 410 /* Netwave private struct init. link/dev/node already taken care of,
412 * other stuff zero'd - Jean II */ 411 * other stuff zero'd - Jean II */
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
index 88e10c9bc4ac..47b2ccb6a633 100644
--- a/drivers/net/wireless/ray_cs.c
+++ b/drivers/net/wireless/ray_cs.c
@@ -331,7 +331,6 @@ static int ray_probe(struct pcmcia_device *p_dev)
331 p_dev->conf.Attributes = CONF_ENABLE_IRQ; 331 p_dev->conf.Attributes = CONF_ENABLE_IRQ;
332 p_dev->conf.IntType = INT_MEMORY_AND_IO; 332 p_dev->conf.IntType = INT_MEMORY_AND_IO;
333 p_dev->conf.ConfigIndex = 1; 333 p_dev->conf.ConfigIndex = 1;
334 p_dev->conf.Present = PRESENT_OPTION;
335 334
336 p_dev->priv = dev; 335 p_dev->priv = dev;
337 p_dev->irq.Instance = dev; 336 p_dev->irq.Instance = dev;
diff --git a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c
index 583e0d655a98..c250f08c8dd5 100644
--- a/drivers/net/wireless/wl3501_cs.c
+++ b/drivers/net/wireless/wl3501_cs.c
@@ -1928,7 +1928,6 @@ static int wl3501_probe(struct pcmcia_device *p_dev)
1928 p_dev->conf.Attributes = CONF_ENABLE_IRQ; 1928 p_dev->conf.Attributes = CONF_ENABLE_IRQ;
1929 p_dev->conf.IntType = INT_MEMORY_AND_IO; 1929 p_dev->conf.IntType = INT_MEMORY_AND_IO;
1930 p_dev->conf.ConfigIndex = 1; 1930 p_dev->conf.ConfigIndex = 1;
1931 p_dev->conf.Present = PRESENT_OPTION;
1932 1931
1933 dev = alloc_etherdev(sizeof(struct wl3501_card)); 1932 dev = alloc_etherdev(sizeof(struct wl3501_card));
1934 if (!dev) 1933 if (!dev)
diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
index f1dd81a1d592..3cfb0a3575e6 100644
--- a/drivers/pci/Kconfig
+++ b/drivers/pci/Kconfig
@@ -19,7 +19,7 @@ config PCI_MSI
19 19
20config PCI_MULTITHREAD_PROBE 20config PCI_MULTITHREAD_PROBE
21 bool "PCI Multi-threaded probe (EXPERIMENTAL)" 21 bool "PCI Multi-threaded probe (EXPERIMENTAL)"
22 depends on PCI && EXPERIMENTAL 22 depends on PCI && EXPERIMENTAL && BROKEN
23 help 23 help
24 Say Y here if you want the PCI core to spawn a new thread for 24 Say Y here if you want the PCI core to spawn a new thread for
25 every PCI device that is probed. This can cause a huge 25 every PCI device that is probed. This can cause a huge
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 6bfb942428e4..206c834d263a 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -254,7 +254,8 @@ static int __pci_find_next_ht_cap(struct pci_dev *dev, int pos, int ht_cap)
254 if ((cap & mask) == ht_cap) 254 if ((cap & mask) == ht_cap)
255 return pos; 255 return pos;
256 256
257 pos = __pci_find_next_cap_ttl(dev->bus, dev->devfn, pos, 257 pos = __pci_find_next_cap_ttl(dev->bus, dev->devfn,
258 pos + PCI_CAP_LIST_NEXT,
258 PCI_CAP_ID_HT, &ttl); 259 PCI_CAP_ID_HT, &ttl);
259 } 260 }
260 261
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 8f0322d6f3bf..0a70943f8bb6 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -955,7 +955,7 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, k8t_sound_ho
955 * becomes necessary to do this tweak in two steps -- I've chosen the Host 955 * becomes necessary to do this tweak in two steps -- I've chosen the Host
956 * bridge as trigger. 956 * bridge as trigger.
957 */ 957 */
958static int __initdata asus_hides_smbus; 958static int asus_hides_smbus;
959 959
960static void __init asus_hides_smbus_hostbridge(struct pci_dev *dev) 960static void __init asus_hides_smbus_hostbridge(struct pci_dev *dev)
961{ 961{
@@ -1117,10 +1117,11 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1, asus_h
1117static void quirk_sis_96x_smbus(struct pci_dev *dev) 1117static void quirk_sis_96x_smbus(struct pci_dev *dev)
1118{ 1118{
1119 u8 val = 0; 1119 u8 val = 0;
1120 printk(KERN_INFO "Enabling SiS 96x SMBus.\n");
1121 pci_read_config_byte(dev, 0x77, &val);
1122 pci_write_config_byte(dev, 0x77, val & ~0x10);
1123 pci_read_config_byte(dev, 0x77, &val); 1120 pci_read_config_byte(dev, 0x77, &val);
1121 if (val & 0x10) {
1122 printk(KERN_INFO "Enabling SiS 96x SMBus.\n");
1123 pci_write_config_byte(dev, 0x77, val & ~0x10);
1124 }
1124} 1125}
1125 1126
1126/* 1127/*
@@ -1152,11 +1153,12 @@ static void quirk_sis_503(struct pci_dev *dev)
1152 printk(KERN_WARNING "Uncovering SIS%x that hid as a SIS503 (compatible=%d)\n", devid, sis_96x_compatible); 1153 printk(KERN_WARNING "Uncovering SIS%x that hid as a SIS503 (compatible=%d)\n", devid, sis_96x_compatible);
1153 1154
1154 /* 1155 /*
1155 * Ok, it now shows up as a 96x.. The 96x quirks are after 1156 * Ok, it now shows up as a 96x.. run the 96x quirk by
1156 * the 503 quirk in the quirk table, so they'll automatically 1157 * hand in case it has already been processed.
1157 * run and enable things like the SMBus device 1158 * (depends on link order, which is apparently not guaranteed)
1158 */ 1159 */
1159 dev->device = devid; 1160 dev->device = devid;
1161 quirk_sis_96x_smbus(dev);
1160} 1162}
1161 1163
1162static void __init quirk_sis_96x_compatible(struct pci_dev *dev) 1164static void __init quirk_sis_96x_compatible(struct pci_dev *dev)
diff --git a/drivers/pci/search.c b/drivers/pci/search.c
index 45f2b20ef513..fab381ed853c 100644
--- a/drivers/pci/search.c
+++ b/drivers/pci/search.c
@@ -193,6 +193,18 @@ static struct pci_dev * pci_find_subsys(unsigned int vendor,
193 struct pci_dev *dev; 193 struct pci_dev *dev;
194 194
195 WARN_ON(in_interrupt()); 195 WARN_ON(in_interrupt());
196
197 /*
198 * pci_find_subsys() can be called on the ide_setup() path, super-early
199 * in boot. But the down_read() will enable local interrupts, which
200 * can cause some machines to crash. So here we detect and flag that
201 * situation and bail out early.
202 */
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;
207 }
196 down_read(&pci_bus_sem); 208 down_read(&pci_bus_sem);
197 n = from ? from->global_list.next : pci_devices.next; 209 n = from ? from->global_list.next : pci_devices.next;
198 210
@@ -259,6 +271,18 @@ pci_get_subsys(unsigned int vendor, unsigned int device,
259 struct pci_dev *dev; 271 struct pci_dev *dev;
260 272
261 WARN_ON(in_interrupt()); 273 WARN_ON(in_interrupt());
274
275 /*
276 * pci_get_subsys() can potentially be called by drivers super-early
277 * in boot. But the down_read() will enable local interrupts, which
278 * can cause some machines to crash. So here we detect and flag that
279 * situation and bail out early.
280 */
281 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;
285 }
262 down_read(&pci_bus_sem); 286 down_read(&pci_bus_sem);
263 n = from ? from->global_list.next : pci_devices.next; 287 n = from ? from->global_list.next : pci_devices.next;
264 288
diff --git a/drivers/rtc/rtc-at91rm9200.c b/drivers/rtc/rtc-at91rm9200.c
index 4f654c901c64..a724ab49a797 100644
--- a/drivers/rtc/rtc-at91rm9200.c
+++ b/drivers/rtc/rtc-at91rm9200.c
@@ -33,6 +33,8 @@
33 33
34#include <asm/mach/time.h> 34#include <asm/mach/time.h>
35 35
36#include <asm/arch/at91_rtc.h>
37
36 38
37#define AT91_RTC_FREQ 1 39#define AT91_RTC_FREQ 1
38#define AT91_RTC_EPOCH 1900UL /* just like arch/arm/common/rtctime.c */ 40#define AT91_RTC_EPOCH 1900UL /* just like arch/arm/common/rtctime.c */
diff --git a/drivers/rtc/rtc-rs5c372.c b/drivers/rtc/rtc-rs5c372.c
index 1460f6b769f2..e7851e3739ab 100644
--- a/drivers/rtc/rtc-rs5c372.c
+++ b/drivers/rtc/rtc-rs5c372.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * An I2C driver for the Ricoh RS5C372 RTC 2 * An I2C driver for Ricoh RS5C372 and RV5C38[67] RTCs
3 * 3 *
4 * Copyright (C) 2005 Pavel Mironchik <pmironchik@optifacio.net> 4 * Copyright (C) 2005 Pavel Mironchik <pmironchik@optifacio.net>
5 * Copyright (C) 2006 Tower Technologies 5 * Copyright (C) 2006 Tower Technologies
@@ -13,7 +13,7 @@
13#include <linux/rtc.h> 13#include <linux/rtc.h>
14#include <linux/bcd.h> 14#include <linux/bcd.h>
15 15
16#define DRV_VERSION "0.3" 16#define DRV_VERSION "0.4"
17 17
18/* Addresses to scan */ 18/* Addresses to scan */
19static unsigned short normal_i2c[] = { /* 0x32,*/ I2C_CLIENT_END }; 19static unsigned short normal_i2c[] = { /* 0x32,*/ I2C_CLIENT_END };
@@ -21,6 +21,13 @@ static unsigned short normal_i2c[] = { /* 0x32,*/ I2C_CLIENT_END };
21/* Insmod parameters */ 21/* Insmod parameters */
22I2C_CLIENT_INSMOD; 22I2C_CLIENT_INSMOD;
23 23
24
25/*
26 * Ricoh has a family of I2C based RTCs, which differ only slightly from
27 * each other. Differences center on pinout (e.g. how many interrupts,
28 * output clock, etc) and how the control registers are used. The '372
29 * is significant only because that's the one this driver first supported.
30 */
24#define RS5C372_REG_SECS 0 31#define RS5C372_REG_SECS 0
25#define RS5C372_REG_MINS 1 32#define RS5C372_REG_MINS 1
26#define RS5C372_REG_HOURS 2 33#define RS5C372_REG_HOURS 2
@@ -29,59 +36,142 @@ I2C_CLIENT_INSMOD;
29#define RS5C372_REG_MONTH 5 36#define RS5C372_REG_MONTH 5
30#define RS5C372_REG_YEAR 6 37#define RS5C372_REG_YEAR 6
31#define RS5C372_REG_TRIM 7 38#define RS5C372_REG_TRIM 7
39# define RS5C372_TRIM_XSL 0x80
40# define RS5C372_TRIM_MASK 0x7F
41
42#define RS5C_REG_ALARM_A_MIN 8 /* or ALARM_W */
43#define RS5C_REG_ALARM_A_HOURS 9
44#define RS5C_REG_ALARM_A_WDAY 10
45
46#define RS5C_REG_ALARM_B_MIN 11 /* or ALARM_D */
47#define RS5C_REG_ALARM_B_HOURS 12
48#define RS5C_REG_ALARM_B_WDAY 13 /* (ALARM_B only) */
49
50#define RS5C_REG_CTRL1 14
51# define RS5C_CTRL1_AALE (1 << 7) /* or WALE */
52# define RS5C_CTRL1_BALE (1 << 6) /* or DALE */
53# define RV5C387_CTRL1_24 (1 << 5)
54# define RS5C372A_CTRL1_SL1 (1 << 5)
55# define RS5C_CTRL1_CT_MASK (7 << 0)
56# define RS5C_CTRL1_CT0 (0 << 0) /* no periodic irq */
57# define RS5C_CTRL1_CT4 (4 << 0) /* 1 Hz level irq */
58#define RS5C_REG_CTRL2 15
59# define RS5C372_CTRL2_24 (1 << 5)
60# define RS5C_CTRL2_XSTP (1 << 4)
61# define RS5C_CTRL2_CTFG (1 << 2)
62# define RS5C_CTRL2_AAFG (1 << 1) /* or WAFG */
63# define RS5C_CTRL2_BAFG (1 << 0) /* or DAFG */
64
65
66/* to read (style 1) or write registers starting at R */
67#define RS5C_ADDR(R) (((R) << 4) | 0)
68
69
70enum rtc_type {
71 rtc_undef = 0,
72 rtc_rs5c372a,
73 rtc_rs5c372b,
74 rtc_rv5c386,
75 rtc_rv5c387a,
76};
32 77
33#define RS5C372_TRIM_XSL 0x80 78/* REVISIT: this assumes that:
34#define RS5C372_TRIM_MASK 0x7F 79 * - we're in the 21st century, so it's safe to ignore the century
80 * bit for rv5c38[67] (REG_MONTH bit 7);
81 * - we should use ALARM_A not ALARM_B (may be wrong on some boards)
82 */
83struct rs5c372 {
84 struct i2c_client *client;
85 struct rtc_device *rtc;
86 enum rtc_type type;
87 unsigned time24:1;
88 unsigned has_irq:1;
89 char buf[17];
90 char *regs;
91
92 /* on conversion to a "new style" i2c driver, this vanishes */
93 struct i2c_client dev;
94};
35 95
36#define RS5C372_REG_BASE 0 96static int rs5c_get_regs(struct rs5c372 *rs5c)
97{
98 struct i2c_client *client = rs5c->client;
99 struct i2c_msg msgs[] = {
100 { client->addr, I2C_M_RD, sizeof rs5c->buf, rs5c->buf },
101 };
102
103 /* This implements the third reading method from the datasheet, using
104 * an internal address that's reset after each transaction (by STOP)
105 * to 0x0f ... so we read extra registers, and skip the first one.
106 *
107 * The first method doesn't work with the iop3xx adapter driver, on at
108 * least 80219 chips; this works around that bug.
109 */
110 if ((i2c_transfer(client->adapter, msgs, 1)) != 1) {
111 pr_debug("%s: can't read registers\n", rs5c->rtc->name);
112 return -EIO;
113 }
37 114
38static int rs5c372_attach(struct i2c_adapter *adapter); 115 dev_dbg(&client->dev,
39static int rs5c372_detach(struct i2c_client *client); 116 "%02x %02x %02x (%02x) %02x %02x %02x (%02x), "
40static int rs5c372_probe(struct i2c_adapter *adapter, int address, int kind); 117 "%02x %02x %02x, %02x %02x %02x; %02x %02x\n",
118 rs5c->regs[0], rs5c->regs[1], rs5c->regs[2], rs5c->regs[3],
119 rs5c->regs[4], rs5c->regs[5], rs5c->regs[6], rs5c->regs[7],
120 rs5c->regs[8], rs5c->regs[9], rs5c->regs[10], rs5c->regs[11],
121 rs5c->regs[12], rs5c->regs[13], rs5c->regs[14], rs5c->regs[15]);
41 122
42struct rs5c372 { 123 return 0;
43 u8 reg_addr; 124}
44 u8 regs[17];
45 struct i2c_msg msg[1];
46 struct i2c_client client;
47 struct rtc_device *rtc;
48};
49 125
50static struct i2c_driver rs5c372_driver = { 126static unsigned rs5c_reg2hr(struct rs5c372 *rs5c, unsigned reg)
51 .driver = { 127{
52 .name = "rs5c372", 128 unsigned hour;
53 },
54 .attach_adapter = &rs5c372_attach,
55 .detach_client = &rs5c372_detach,
56};
57 129
58static int rs5c372_get_datetime(struct i2c_client *client, struct rtc_time *tm) 130 if (rs5c->time24)
131 return BCD2BIN(reg & 0x3f);
132
133 hour = BCD2BIN(reg & 0x1f);
134 if (hour == 12)
135 hour = 0;
136 if (reg & 0x20)
137 hour += 12;
138 return hour;
139}
140
141static unsigned rs5c_hr2reg(struct rs5c372 *rs5c, unsigned hour)
59{ 142{
143 if (rs5c->time24)
144 return BIN2BCD(hour);
145
146 if (hour > 12)
147 return 0x20 | BIN2BCD(hour - 12);
148 if (hour == 12)
149 return 0x20 | BIN2BCD(12);
150 if (hour == 0)
151 return BIN2BCD(12);
152 return BIN2BCD(hour);
153}
60 154
61 struct rs5c372 *rs5c372 = i2c_get_clientdata(client); 155static int rs5c372_get_datetime(struct i2c_client *client, struct rtc_time *tm)
62 u8 *buf = &(rs5c372->regs[1]); 156{
157 struct rs5c372 *rs5c = i2c_get_clientdata(client);
158 int status = rs5c_get_regs(rs5c);
63 159
64 /* this implements the 3rd reading method, according 160 if (status < 0)
65 * to the datasheet. rs5c372 defaults to internal 161 return status;
66 * address 0xF, so 0x0 is in regs[1]
67 */
68 162
69 if ((i2c_transfer(client->adapter, rs5c372->msg, 1)) != 1) { 163 tm->tm_sec = BCD2BIN(rs5c->regs[RS5C372_REG_SECS] & 0x7f);
70 dev_err(&client->dev, "%s: read error\n", __FUNCTION__); 164 tm->tm_min = BCD2BIN(rs5c->regs[RS5C372_REG_MINS] & 0x7f);
71 return -EIO; 165 tm->tm_hour = rs5c_reg2hr(rs5c, rs5c->regs[RS5C372_REG_HOURS]);
72 }
73 166
74 tm->tm_sec = BCD2BIN(buf[RS5C372_REG_SECS] & 0x7f); 167 tm->tm_wday = BCD2BIN(rs5c->regs[RS5C372_REG_WDAY] & 0x07);
75 tm->tm_min = BCD2BIN(buf[RS5C372_REG_MINS] & 0x7f); 168 tm->tm_mday = BCD2BIN(rs5c->regs[RS5C372_REG_DAY] & 0x3f);
76 tm->tm_hour = BCD2BIN(buf[RS5C372_REG_HOURS] & 0x3f);
77 tm->tm_wday = BCD2BIN(buf[RS5C372_REG_WDAY] & 0x07);
78 tm->tm_mday = BCD2BIN(buf[RS5C372_REG_DAY] & 0x3f);
79 169
80 /* tm->tm_mon is zero-based */ 170 /* tm->tm_mon is zero-based */
81 tm->tm_mon = BCD2BIN(buf[RS5C372_REG_MONTH] & 0x1f) - 1; 171 tm->tm_mon = BCD2BIN(rs5c->regs[RS5C372_REG_MONTH] & 0x1f) - 1;
82 172
83 /* year is 1900 + tm->tm_year */ 173 /* year is 1900 + tm->tm_year */
84 tm->tm_year = BCD2BIN(buf[RS5C372_REG_YEAR]) + 100; 174 tm->tm_year = BCD2BIN(rs5c->regs[RS5C372_REG_YEAR]) + 100;
85 175
86 dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, " 176 dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
87 "mday=%d, mon=%d, year=%d, wday=%d\n", 177 "mday=%d, mon=%d, year=%d, wday=%d\n",
@@ -89,22 +179,25 @@ static int rs5c372_get_datetime(struct i2c_client *client, struct rtc_time *tm)
89 tm->tm_sec, tm->tm_min, tm->tm_hour, 179 tm->tm_sec, tm->tm_min, tm->tm_hour,
90 tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); 180 tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
91 181
92 return 0; 182 /* rtc might need initialization */
183 return rtc_valid_tm(tm);
93} 184}
94 185
95static int rs5c372_set_datetime(struct i2c_client *client, struct rtc_time *tm) 186static int rs5c372_set_datetime(struct i2c_client *client, struct rtc_time *tm)
96{ 187{
97 unsigned char buf[8] = { RS5C372_REG_BASE }; 188 struct rs5c372 *rs5c = i2c_get_clientdata(client);
189 unsigned char buf[8];
98 190
99 dev_dbg(&client->dev, 191 dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d "
100 "%s: secs=%d, mins=%d, hours=%d "
101 "mday=%d, mon=%d, year=%d, wday=%d\n", 192 "mday=%d, mon=%d, year=%d, wday=%d\n",
102 __FUNCTION__, tm->tm_sec, tm->tm_min, tm->tm_hour, 193 __FUNCTION__,
194 tm->tm_sec, tm->tm_min, tm->tm_hour,
103 tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); 195 tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
104 196
197 buf[0] = RS5C_ADDR(RS5C372_REG_SECS);
105 buf[1] = BIN2BCD(tm->tm_sec); 198 buf[1] = BIN2BCD(tm->tm_sec);
106 buf[2] = BIN2BCD(tm->tm_min); 199 buf[2] = BIN2BCD(tm->tm_min);
107 buf[3] = BIN2BCD(tm->tm_hour); 200 buf[3] = rs5c_hr2reg(rs5c, tm->tm_hour);
108 buf[4] = BIN2BCD(tm->tm_wday); 201 buf[4] = BIN2BCD(tm->tm_wday);
109 buf[5] = BIN2BCD(tm->tm_mday); 202 buf[5] = BIN2BCD(tm->tm_mday);
110 buf[6] = BIN2BCD(tm->tm_mon + 1); 203 buf[6] = BIN2BCD(tm->tm_mon + 1);
@@ -118,21 +211,43 @@ static int rs5c372_set_datetime(struct i2c_client *client, struct rtc_time *tm)
118 return 0; 211 return 0;
119} 212}
120 213
214#if defined(CONFIG_RTC_INTF_PROC) || defined(CONFIG_RTC_INTF_PROC_MODULE)
215#define NEED_TRIM
216#endif
217
218#if defined(CONFIG_RTC_INTF_SYSFS) || defined(CONFIG_RTC_INTF_SYSFS_MODULE)
219#define NEED_TRIM
220#endif
221
222#ifdef NEED_TRIM
121static int rs5c372_get_trim(struct i2c_client *client, int *osc, int *trim) 223static int rs5c372_get_trim(struct i2c_client *client, int *osc, int *trim)
122{ 224{
123 struct rs5c372 *rs5c372 = i2c_get_clientdata(client); 225 struct rs5c372 *rs5c372 = i2c_get_clientdata(client);
124 u8 tmp = rs5c372->regs[RS5C372_REG_TRIM + 1]; 226 u8 tmp = rs5c372->regs[RS5C372_REG_TRIM];
125 227
126 if (osc) 228 if (osc)
127 *osc = (tmp & RS5C372_TRIM_XSL) ? 32000 : 32768; 229 *osc = (tmp & RS5C372_TRIM_XSL) ? 32000 : 32768;
128 230
129 if (trim) { 231 if (trim) {
130 *trim = tmp & RS5C372_TRIM_MASK; 232 dev_dbg(&client->dev, "%s: raw trim=%x\n", __FUNCTION__, tmp);
131 dev_dbg(&client->dev, "%s: raw trim=%x\n", __FUNCTION__, *trim); 233 tmp &= RS5C372_TRIM_MASK;
234 if (tmp & 0x3e) {
235 int t = tmp & 0x3f;
236
237 if (tmp & 0x40)
238 t = (~t | (s8)0xc0) + 1;
239 else
240 t = t - 1;
241
242 tmp = t * 2;
243 } else
244 tmp = 0;
245 *trim = tmp;
132 } 246 }
133 247
134 return 0; 248 return 0;
135} 249}
250#endif
136 251
137static int rs5c372_rtc_read_time(struct device *dev, struct rtc_time *tm) 252static int rs5c372_rtc_read_time(struct device *dev, struct rtc_time *tm)
138{ 253{
@@ -144,25 +259,190 @@ static int rs5c372_rtc_set_time(struct device *dev, struct rtc_time *tm)
144 return rs5c372_set_datetime(to_i2c_client(dev), tm); 259 return rs5c372_set_datetime(to_i2c_client(dev), tm);
145} 260}
146 261
262#if defined(CONFIG_RTC_INTF_DEV) || defined(CONFIG_RTC_INTF_DEV_MODULE)
263
264static int
265rs5c_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
266{
267 struct i2c_client *client = to_i2c_client(dev);
268 struct rs5c372 *rs5c = i2c_get_clientdata(client);
269 unsigned char buf[2];
270 int status;
271
272 buf[1] = rs5c->regs[RS5C_REG_CTRL1];
273 switch (cmd) {
274 case RTC_UIE_OFF:
275 case RTC_UIE_ON:
276 /* some 327a modes use a different IRQ pin for 1Hz irqs */
277 if (rs5c->type == rtc_rs5c372a
278 && (buf[1] & RS5C372A_CTRL1_SL1))
279 return -ENOIOCTLCMD;
280 case RTC_AIE_OFF:
281 case RTC_AIE_ON:
282 /* these irq management calls only make sense for chips
283 * which are wired up to an IRQ.
284 */
285 if (!rs5c->has_irq)
286 return -ENOIOCTLCMD;
287 break;
288 default:
289 return -ENOIOCTLCMD;
290 }
291
292 status = rs5c_get_regs(rs5c);
293 if (status < 0)
294 return status;
295
296 buf[0] = RS5C_ADDR(RS5C_REG_CTRL1);
297 switch (cmd) {
298 case RTC_AIE_OFF: /* alarm off */
299 buf[1] &= ~RS5C_CTRL1_AALE;
300 break;
301 case RTC_AIE_ON: /* alarm on */
302 buf[1] |= RS5C_CTRL1_AALE;
303 break;
304 case RTC_UIE_OFF: /* update off */
305 buf[1] &= ~RS5C_CTRL1_CT_MASK;
306 break;
307 case RTC_UIE_ON: /* update on */
308 buf[1] &= ~RS5C_CTRL1_CT_MASK;
309 buf[1] |= RS5C_CTRL1_CT4;
310 break;
311 }
312 if ((i2c_master_send(client, buf, 2)) != 2) {
313 printk(KERN_WARNING "%s: can't update alarm\n",
314 rs5c->rtc->name);
315 status = -EIO;
316 } else
317 rs5c->regs[RS5C_REG_CTRL1] = buf[1];
318 return status;
319}
320
321#else
322#define rs5c_rtc_ioctl NULL
323#endif
324
325
326/* NOTE: Since RTC_WKALM_{RD,SET} were originally defined for EFI,
327 * which only exposes a polled programming interface; and since
328 * these calls map directly to those EFI requests; we don't demand
329 * we have an IRQ for this chip when we go through this API.
330 *
331 * The older x86_pc derived RTC_ALM_{READ,SET} calls require irqs
332 * though, managed through RTC_AIE_{ON,OFF} requests.
333 */
334
335static int rs5c_read_alarm(struct device *dev, struct rtc_wkalrm *t)
336{
337 struct i2c_client *client = to_i2c_client(dev);
338 struct rs5c372 *rs5c = i2c_get_clientdata(client);
339 int status;
340
341 status = rs5c_get_regs(rs5c);
342 if (status < 0)
343 return status;
344
345 /* report alarm time */
346 t->time.tm_sec = 0;
347 t->time.tm_min = BCD2BIN(rs5c->regs[RS5C_REG_ALARM_A_MIN] & 0x7f);
348 t->time.tm_hour = rs5c_reg2hr(rs5c, rs5c->regs[RS5C_REG_ALARM_A_HOURS]);
349 t->time.tm_mday = -1;
350 t->time.tm_mon = -1;
351 t->time.tm_year = -1;
352 t->time.tm_wday = -1;
353 t->time.tm_yday = -1;
354 t->time.tm_isdst = -1;
355
356 /* ... and status */
357 t->enabled = !!(rs5c->regs[RS5C_REG_CTRL1] & RS5C_CTRL1_AALE);
358 t->pending = !!(rs5c->regs[RS5C_REG_CTRL2] & RS5C_CTRL2_AAFG);
359
360 return 0;
361}
362
363static int rs5c_set_alarm(struct device *dev, struct rtc_wkalrm *t)
364{
365 struct i2c_client *client = to_i2c_client(dev);
366 struct rs5c372 *rs5c = i2c_get_clientdata(client);
367 int status;
368 unsigned char buf[4];
369
370 /* only handle up to 24 hours in the future, like RTC_ALM_SET */
371 if (t->time.tm_mday != -1
372 || t->time.tm_mon != -1
373 || t->time.tm_year != -1)
374 return -EINVAL;
375
376 /* REVISIT: round up tm_sec */
377
378 /* if needed, disable irq (clears pending status) */
379 status = rs5c_get_regs(rs5c);
380 if (status < 0)
381 return status;
382 if (rs5c->regs[RS5C_REG_CTRL1] & RS5C_CTRL1_AALE) {
383 buf[0] = RS5C_ADDR(RS5C_REG_CTRL1);
384 buf[1] = rs5c->regs[RS5C_REG_CTRL1] & ~RS5C_CTRL1_AALE;
385 if (i2c_master_send(client, buf, 2) != 2) {
386 pr_debug("%s: can't disable alarm\n", rs5c->rtc->name);
387 return -EIO;
388 }
389 rs5c->regs[RS5C_REG_CTRL1] = buf[1];
390 }
391
392 /* set alarm */
393 buf[0] = RS5C_ADDR(RS5C_REG_ALARM_A_MIN);
394 buf[1] = BIN2BCD(t->time.tm_min);
395 buf[2] = rs5c_hr2reg(rs5c, t->time.tm_hour);
396 buf[3] = 0x7f; /* any/all days */
397 if ((i2c_master_send(client, buf, 4)) != 4) {
398 pr_debug("%s: can't set alarm time\n", rs5c->rtc->name);
399 return -EIO;
400 }
401
402 /* ... and maybe enable its irq */
403 if (t->enabled) {
404 buf[0] = RS5C_ADDR(RS5C_REG_CTRL1);
405 buf[1] = rs5c->regs[RS5C_REG_CTRL1] | RS5C_CTRL1_AALE;
406 if ((i2c_master_send(client, buf, 2)) != 2)
407 printk(KERN_WARNING "%s: can't enable alarm\n",
408 rs5c->rtc->name);
409 rs5c->regs[RS5C_REG_CTRL1] = buf[1];
410 }
411
412 return 0;
413}
414
415#if defined(CONFIG_RTC_INTF_PROC) || defined(CONFIG_RTC_INTF_PROC_MODULE)
416
147static int rs5c372_rtc_proc(struct device *dev, struct seq_file *seq) 417static int rs5c372_rtc_proc(struct device *dev, struct seq_file *seq)
148{ 418{
149 int err, osc, trim; 419 int err, osc, trim;
150 420
151 err = rs5c372_get_trim(to_i2c_client(dev), &osc, &trim); 421 err = rs5c372_get_trim(to_i2c_client(dev), &osc, &trim);
152 if (err == 0) { 422 if (err == 0) {
153 seq_printf(seq, "%d.%03d KHz\n", osc / 1000, osc % 1000); 423 seq_printf(seq, "crystal\t\t: %d.%03d KHz\n",
154 seq_printf(seq, "trim\t: %d\n", trim); 424 osc / 1000, osc % 1000);
425 seq_printf(seq, "trim\t\t: %d\n", trim);
155 } 426 }
156 427
157 return 0; 428 return 0;
158} 429}
159 430
431#else
432#define rs5c372_rtc_proc NULL
433#endif
434
160static const struct rtc_class_ops rs5c372_rtc_ops = { 435static const struct rtc_class_ops rs5c372_rtc_ops = {
161 .proc = rs5c372_rtc_proc, 436 .proc = rs5c372_rtc_proc,
437 .ioctl = rs5c_rtc_ioctl,
162 .read_time = rs5c372_rtc_read_time, 438 .read_time = rs5c372_rtc_read_time,
163 .set_time = rs5c372_rtc_set_time, 439 .set_time = rs5c372_rtc_set_time,
440 .read_alarm = rs5c_read_alarm,
441 .set_alarm = rs5c_set_alarm,
164}; 442};
165 443
444#if defined(CONFIG_RTC_INTF_SYSFS) || defined(CONFIG_RTC_INTF_SYSFS_MODULE)
445
166static ssize_t rs5c372_sysfs_show_trim(struct device *dev, 446static ssize_t rs5c372_sysfs_show_trim(struct device *dev,
167 struct device_attribute *attr, char *buf) 447 struct device_attribute *attr, char *buf)
168{ 448{
@@ -172,7 +452,7 @@ static ssize_t rs5c372_sysfs_show_trim(struct device *dev,
172 if (err) 452 if (err)
173 return err; 453 return err;
174 454
175 return sprintf(buf, "0x%2x\n", trim); 455 return sprintf(buf, "%d\n", trim);
176} 456}
177static DEVICE_ATTR(trim, S_IRUGO, rs5c372_sysfs_show_trim, NULL); 457static DEVICE_ATTR(trim, S_IRUGO, rs5c372_sysfs_show_trim, NULL);
178 458
@@ -189,16 +469,35 @@ static ssize_t rs5c372_sysfs_show_osc(struct device *dev,
189} 469}
190static DEVICE_ATTR(osc, S_IRUGO, rs5c372_sysfs_show_osc, NULL); 470static DEVICE_ATTR(osc, S_IRUGO, rs5c372_sysfs_show_osc, NULL);
191 471
192static int rs5c372_attach(struct i2c_adapter *adapter) 472static int rs5c_sysfs_register(struct device *dev)
193{ 473{
194 return i2c_probe(adapter, &addr_data, rs5c372_probe); 474 int err;
475
476 err = device_create_file(dev, &dev_attr_trim);
477 if (err)
478 return err;
479 err = device_create_file(dev, &dev_attr_osc);
480 if (err)
481 device_remove_file(dev, &dev_attr_trim);
482
483 return err;
484}
485
486#else
487static int rs5c_sysfs_register(struct device *dev)
488{
489 return 0;
195} 490}
491#endif /* SYSFS */
492
493static struct i2c_driver rs5c372_driver;
196 494
197static int rs5c372_probe(struct i2c_adapter *adapter, int address, int kind) 495static int rs5c372_probe(struct i2c_adapter *adapter, int address, int kind)
198{ 496{
199 int err = 0; 497 int err = 0;
200 struct i2c_client *client; 498 struct i2c_client *client;
201 struct rs5c372 *rs5c372; 499 struct rs5c372 *rs5c372;
500 struct rtc_time tm;
202 501
203 dev_dbg(adapter->class_dev.dev, "%s\n", __FUNCTION__); 502 dev_dbg(adapter->class_dev.dev, "%s\n", __FUNCTION__);
204 503
@@ -211,7 +510,15 @@ static int rs5c372_probe(struct i2c_adapter *adapter, int address, int kind)
211 err = -ENOMEM; 510 err = -ENOMEM;
212 goto exit; 511 goto exit;
213 } 512 }
214 client = &rs5c372->client; 513
514 /* we read registers 0x0f then 0x00-0x0f; skip the first one */
515 rs5c372->regs=&rs5c372->buf[1];
516
517 /* On conversion to a "new style" i2c driver, we'll be handed
518 * the i2c_client (we won't create it)
519 */
520 client = &rs5c372->dev;
521 rs5c372->client = client;
215 522
216 /* I2C client */ 523 /* I2C client */
217 client->addr = address; 524 client->addr = address;
@@ -222,16 +529,99 @@ static int rs5c372_probe(struct i2c_adapter *adapter, int address, int kind)
222 529
223 i2c_set_clientdata(client, rs5c372); 530 i2c_set_clientdata(client, rs5c372);
224 531
225 rs5c372->msg[0].addr = address;
226 rs5c372->msg[0].flags = I2C_M_RD;
227 rs5c372->msg[0].len = sizeof(rs5c372->regs);
228 rs5c372->msg[0].buf = rs5c372->regs;
229
230 /* Inform the i2c layer */ 532 /* Inform the i2c layer */
231 if ((err = i2c_attach_client(client))) 533 if ((err = i2c_attach_client(client)))
232 goto exit_kfree; 534 goto exit_kfree;
233 535
234 dev_info(&client->dev, "chip found, driver version " DRV_VERSION "\n"); 536 err = rs5c_get_regs(rs5c372);
537 if (err < 0)
538 goto exit_detach;
539
540 /* For "new style" drivers, irq is in i2c_client and chip type
541 * info comes from i2c_client.dev.platform_data. Meanwhile:
542 *
543 * STICK BOARD-SPECIFIC SETUP CODE RIGHT HERE
544 */
545 if (rs5c372->type == rtc_undef) {
546 rs5c372->type = rtc_rs5c372b;
547 dev_warn(&client->dev, "assuming rs5c372b\n");
548 }
549
550 /* clock may be set for am/pm or 24 hr time */
551 switch (rs5c372->type) {
552 case rtc_rs5c372a:
553 case rtc_rs5c372b:
554 /* alarm uses ALARM_A; and nINTRA on 372a, nINTR on 372b.
555 * so does periodic irq, except some 327a modes.
556 */
557 if (rs5c372->regs[RS5C_REG_CTRL2] & RS5C372_CTRL2_24)
558 rs5c372->time24 = 1;
559 break;
560 case rtc_rv5c386:
561 case rtc_rv5c387a:
562 if (rs5c372->regs[RS5C_REG_CTRL1] & RV5C387_CTRL1_24)
563 rs5c372->time24 = 1;
564 /* alarm uses ALARM_W; and nINTRB for alarm and periodic
565 * irq, on both 386 and 387
566 */
567 break;
568 default:
569 dev_err(&client->dev, "unknown RTC type\n");
570 goto exit_detach;
571 }
572
573 /* if the oscillator lost power and no other software (like
574 * the bootloader) set it up, do it here.
575 */
576 if (rs5c372->regs[RS5C_REG_CTRL2] & RS5C_CTRL2_XSTP) {
577 unsigned char buf[3];
578
579 rs5c372->regs[RS5C_REG_CTRL2] &= ~RS5C_CTRL2_XSTP;
580
581 buf[0] = RS5C_ADDR(RS5C_REG_CTRL1);
582 buf[1] = rs5c372->regs[RS5C_REG_CTRL1];
583 buf[2] = rs5c372->regs[RS5C_REG_CTRL2];
584
585 /* use 24hr mode */
586 switch (rs5c372->type) {
587 case rtc_rs5c372a:
588 case rtc_rs5c372b:
589 buf[2] |= RS5C372_CTRL2_24;
590 rs5c372->time24 = 1;
591 break;
592 case rtc_rv5c386:
593 case rtc_rv5c387a:
594 buf[1] |= RV5C387_CTRL1_24;
595 rs5c372->time24 = 1;
596 break;
597 default:
598 /* impossible */
599 break;
600 }
601
602 if ((i2c_master_send(client, buf, 3)) != 3) {
603 dev_err(&client->dev, "setup error\n");
604 goto exit_detach;
605 }
606 rs5c372->regs[RS5C_REG_CTRL1] = buf[1];
607 rs5c372->regs[RS5C_REG_CTRL2] = buf[2];
608 }
609
610 if (rs5c372_get_datetime(client, &tm) < 0)
611 dev_warn(&client->dev, "clock needs to be set\n");
612
613 dev_info(&client->dev, "%s found, %s, driver version " DRV_VERSION "\n",
614 ({ char *s; switch (rs5c372->type) {
615 case rtc_rs5c372a: s = "rs5c372a"; break;
616 case rtc_rs5c372b: s = "rs5c372b"; break;
617 case rtc_rv5c386: s = "rv5c386"; break;
618 case rtc_rv5c387a: s = "rv5c387a"; break;
619 default: s = "chip"; break;
620 }; s;}),
621 rs5c372->time24 ? "24hr" : "am/pm"
622 );
623
624 /* FIXME when client->irq exists, use it to register alarm irq */
235 625
236 rs5c372->rtc = rtc_device_register(rs5c372_driver.driver.name, 626 rs5c372->rtc = rtc_device_register(rs5c372_driver.driver.name,
237 &client->dev, &rs5c372_rtc_ops, THIS_MODULE); 627 &client->dev, &rs5c372_rtc_ops, THIS_MODULE);
@@ -241,18 +631,12 @@ static int rs5c372_probe(struct i2c_adapter *adapter, int address, int kind)
241 goto exit_detach; 631 goto exit_detach;
242 } 632 }
243 633
244 err = device_create_file(&client->dev, &dev_attr_trim); 634 err = rs5c_sysfs_register(&client->dev);
245 if (err) 635 if (err)
246 goto exit_devreg; 636 goto exit_devreg;
247 err = device_create_file(&client->dev, &dev_attr_osc);
248 if (err)
249 goto exit_trim;
250 637
251 return 0; 638 return 0;
252 639
253exit_trim:
254 device_remove_file(&client->dev, &dev_attr_trim);
255
256exit_devreg: 640exit_devreg:
257 rtc_device_unregister(rs5c372->rtc); 641 rtc_device_unregister(rs5c372->rtc);
258 642
@@ -266,6 +650,11 @@ exit:
266 return err; 650 return err;
267} 651}
268 652
653static int rs5c372_attach(struct i2c_adapter *adapter)
654{
655 return i2c_probe(adapter, &addr_data, rs5c372_probe);
656}
657
269static int rs5c372_detach(struct i2c_client *client) 658static int rs5c372_detach(struct i2c_client *client)
270{ 659{
271 int err; 660 int err;
@@ -274,6 +663,8 @@ static int rs5c372_detach(struct i2c_client *client)
274 if (rs5c372->rtc) 663 if (rs5c372->rtc)
275 rtc_device_unregister(rs5c372->rtc); 664 rtc_device_unregister(rs5c372->rtc);
276 665
666 /* REVISIT properly destroy the sysfs files ... */
667
277 if ((err = i2c_detach_client(client))) 668 if ((err = i2c_detach_client(client)))
278 return err; 669 return err;
279 670
@@ -281,6 +672,14 @@ static int rs5c372_detach(struct i2c_client *client)
281 return 0; 672 return 0;
282} 673}
283 674
675static struct i2c_driver rs5c372_driver = {
676 .driver = {
677 .name = "rtc-rs5c372",
678 },
679 .attach_adapter = &rs5c372_attach,
680 .detach_client = &rs5c372_detach,
681};
682
284static __init int rs5c372_init(void) 683static __init int rs5c372_init(void)
285{ 684{
286 return i2c_add_driver(&rs5c372_driver); 685 return i2c_add_driver(&rs5c372_driver);
diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c
index 72ba1a70f35f..e9e0934380b8 100644
--- a/drivers/rtc/rtc-sh.c
+++ b/drivers/rtc/rtc-sh.c
@@ -264,8 +264,6 @@ static int sh_rtc_proc(struct device *dev, struct seq_file *seq)
264 unsigned int tmp; 264 unsigned int tmp;
265 265
266 tmp = readb(rtc->regbase + RCR1); 266 tmp = readb(rtc->regbase + RCR1);
267 seq_printf(seq, "alarm_IRQ\t: %s\n",
268 (tmp & RCR1_AIE) ? "yes" : "no");
269 seq_printf(seq, "carry_IRQ\t: %s\n", 267 seq_printf(seq, "carry_IRQ\t: %s\n",
270 (tmp & RCR1_CIE) ? "yes" : "no"); 268 (tmp & RCR1_CIE) ? "yes" : "no");
271 269
@@ -428,6 +426,8 @@ static int sh_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
428 tm->tm_mon -= 1; /* RTC is 1-12, tm_mon is 0-11 */ 426 tm->tm_mon -= 1; /* RTC is 1-12, tm_mon is 0-11 */
429 tm->tm_year = 0xffff; 427 tm->tm_year = 0xffff;
430 428
429 wkalrm->enabled = (readb(rtc->regbase + RCR1) & RCR1_AIE) ? 1 : 0;
430
431 spin_unlock_irq(&rtc->lock); 431 spin_unlock_irq(&rtc->lock);
432 432
433 return 0; 433 return 0;
diff --git a/drivers/s390/char/vmcp.c b/drivers/s390/char/vmcp.c
index 1678b6c757ec..a420cd099041 100644
--- a/drivers/s390/char/vmcp.c
+++ b/drivers/s390/char/vmcp.c
@@ -117,7 +117,7 @@ vmcp_write(struct file *file, const char __user * buff, size_t count,
117 return -ENOMEM; 117 return -ENOMEM;
118 } 118 }
119 debug_text_event(vmcp_debug, 1, cmd); 119 debug_text_event(vmcp_debug, 1, cmd);
120 session->resp_size = __cpcmd(cmd, session->response, 120 session->resp_size = cpcmd(cmd, session->response,
121 session->bufsize, 121 session->bufsize,
122 &session->resp_code); 122 &session->resp_code);
123 up(&session->mutex); 123 up(&session->mutex);
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index b471ac4a1bf6..ae1bf231d089 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -880,19 +880,15 @@ static void cio_reset_pgm_check_handler(void)
880static int stsch_reset(struct subchannel_id schid, volatile struct schib *addr) 880static int stsch_reset(struct subchannel_id schid, volatile struct schib *addr)
881{ 881{
882 int rc; 882 int rc;
883 register struct subchannel_id reg1 asm ("1") = schid;
884 883
885 pgm_check_occured = 0; 884 pgm_check_occured = 0;
886 s390_reset_pgm_handler = cio_reset_pgm_check_handler; 885 s390_reset_pgm_handler = cio_reset_pgm_check_handler;
886 rc = stsch(schid, addr);
887 s390_reset_pgm_handler = NULL;
887 888
888 asm volatile( 889 /* The program check handler could have changed pgm_check_occured */
889 " stsch 0(%2)\n" 890 barrier();
890 " ipm %0\n"
891 " srl %0,28"
892 : "=d" (rc)
893 : "d" (reg1), "a" (addr), "m" (*addr) : "memory", "cc");
894 891
895 s390_reset_pgm_handler = NULL;
896 if (pgm_check_occured) 892 if (pgm_check_occured)
897 return -EIO; 893 return -EIO;
898 else 894 else
diff --git a/drivers/s390/net/Kconfig b/drivers/s390/net/Kconfig
index 1a93fa684e9f..52625153a4f0 100644
--- a/drivers/s390/net/Kconfig
+++ b/drivers/s390/net/Kconfig
@@ -27,10 +27,7 @@ config IUCV
27 help 27 help
28 Select this option if you want to use inter-user communication 28 Select this option if you want to use inter-user communication
29 under VM or VIF. If unsure, say "Y" to enable a fast communication 29 under VM or VIF. If unsure, say "Y" to enable a fast communication
30 link between VM guests. At boot time the user ID of the guest needs 30 link between VM guests.
31 to be passed to the kernel. Note that both kernels need to be
32 compiled with this option and both need to be booted with the user ID
33 of the other VM guest.
34 31
35config NETIUCV 32config NETIUCV
36 tristate "IUCV network device support (VM only)" 33 tristate "IUCV network device support (VM only)"
diff --git a/drivers/s390/net/qeth.h b/drivers/s390/net/qeth.h
index 53c358c7d368..e95c281f1e36 100644
--- a/drivers/s390/net/qeth.h
+++ b/drivers/s390/net/qeth.h
@@ -710,7 +710,7 @@ struct qeth_reply {
710 int (*callback)(struct qeth_card *,struct qeth_reply *,unsigned long); 710 int (*callback)(struct qeth_card *,struct qeth_reply *,unsigned long);
711 u32 seqno; 711 u32 seqno;
712 unsigned long offset; 712 unsigned long offset;
713 int received; 713 atomic_t received;
714 int rc; 714 int rc;
715 void *param; 715 void *param;
716 struct qeth_card *card; 716 struct qeth_card *card;
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
index 2bde4f1fb9c2..d2efa5ff125d 100644
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -471,7 +471,7 @@ qeth_irq(struct ccw_device *cdev, unsigned long intparm, struct irb *irb)
471 channel->state == CH_STATE_UP) 471 channel->state == CH_STATE_UP)
472 qeth_issue_next_read(card); 472 qeth_issue_next_read(card);
473 473
474 tasklet_schedule(&channel->irq_tasklet); 474 qeth_irq_tasklet((unsigned long)channel);
475 return; 475 return;
476out: 476out:
477 wake_up(&card->wait_q); 477 wake_up(&card->wait_q);
@@ -951,40 +951,6 @@ qeth_do_run_thread(struct qeth_card *card, unsigned long thread)
951} 951}
952 952
953static int 953static int
954qeth_register_ip_addresses(void *ptr)
955{
956 struct qeth_card *card;
957
958 card = (struct qeth_card *) ptr;
959 daemonize("qeth_reg_ip");
960 QETH_DBF_TEXT(trace,4,"regipth1");
961 if (!qeth_do_run_thread(card, QETH_SET_IP_THREAD))
962 return 0;
963 QETH_DBF_TEXT(trace,4,"regipth2");
964 qeth_set_ip_addr_list(card);
965 qeth_clear_thread_running_bit(card, QETH_SET_IP_THREAD);
966 return 0;
967}
968
969/*
970 * Drive the SET_PROMISC_MODE thread
971 */
972static int
973qeth_set_promisc_mode(void *ptr)
974{
975 struct qeth_card *card = (struct qeth_card *) ptr;
976
977 daemonize("qeth_setprm");
978 QETH_DBF_TEXT(trace,4,"setprm1");
979 if (!qeth_do_run_thread(card, QETH_SET_PROMISC_MODE_THREAD))
980 return 0;
981 QETH_DBF_TEXT(trace,4,"setprm2");
982 qeth_setadp_promisc_mode(card);
983 qeth_clear_thread_running_bit(card, QETH_SET_PROMISC_MODE_THREAD);
984 return 0;
985}
986
987static int
988qeth_recover(void *ptr) 954qeth_recover(void *ptr)
989{ 955{
990 struct qeth_card *card; 956 struct qeth_card *card;
@@ -1047,11 +1013,6 @@ qeth_start_kernel_thread(struct work_struct *work)
1047 if (card->read.state != CH_STATE_UP && 1013 if (card->read.state != CH_STATE_UP &&
1048 card->write.state != CH_STATE_UP) 1014 card->write.state != CH_STATE_UP)
1049 return; 1015 return;
1050
1051 if (qeth_do_start_thread(card, QETH_SET_IP_THREAD))
1052 kernel_thread(qeth_register_ip_addresses, (void *)card,SIGCHLD);
1053 if (qeth_do_start_thread(card, QETH_SET_PROMISC_MODE_THREAD))
1054 kernel_thread(qeth_set_promisc_mode, (void *)card, SIGCHLD);
1055 if (qeth_do_start_thread(card, QETH_RECOVER_THREAD)) 1016 if (qeth_do_start_thread(card, QETH_RECOVER_THREAD))
1056 kernel_thread(qeth_recover, (void *) card, SIGCHLD); 1017 kernel_thread(qeth_recover, (void *) card, SIGCHLD);
1057} 1018}
@@ -1074,7 +1035,7 @@ qeth_set_intial_options(struct qeth_card *card)
1074 card->options.layer2 = 1; 1035 card->options.layer2 = 1;
1075 else 1036 else
1076 card->options.layer2 = 0; 1037 card->options.layer2 = 0;
1077 card->options.performance_stats = 1; 1038 card->options.performance_stats = 0;
1078} 1039}
1079 1040
1080/** 1041/**
@@ -1613,8 +1574,6 @@ qeth_issue_next_read(struct qeth_card *card)
1613 return -ENOMEM; 1574 return -ENOMEM;
1614 } 1575 }
1615 qeth_setup_ccw(&card->read, iob->data, QETH_BUFSIZE); 1576 qeth_setup_ccw(&card->read, iob->data, QETH_BUFSIZE);
1616 wait_event(card->wait_q,
1617 atomic_cmpxchg(&card->read.irq_pending, 0, 1) == 0);
1618 QETH_DBF_TEXT(trace, 6, "noirqpnd"); 1577 QETH_DBF_TEXT(trace, 6, "noirqpnd");
1619 rc = ccw_device_start(card->read.ccwdev, &card->read.ccw, 1578 rc = ccw_device_start(card->read.ccwdev, &card->read.ccw,
1620 (addr_t) iob, 0, 0); 1579 (addr_t) iob, 0, 0);
@@ -1635,6 +1594,7 @@ qeth_alloc_reply(struct qeth_card *card)
1635 reply = kzalloc(sizeof(struct qeth_reply), GFP_ATOMIC); 1594 reply = kzalloc(sizeof(struct qeth_reply), GFP_ATOMIC);
1636 if (reply){ 1595 if (reply){
1637 atomic_set(&reply->refcnt, 1); 1596 atomic_set(&reply->refcnt, 1);
1597 atomic_set(&reply->received, 0);
1638 reply->card = card; 1598 reply->card = card;
1639 }; 1599 };
1640 return reply; 1600 return reply;
@@ -1655,31 +1615,6 @@ qeth_put_reply(struct qeth_reply *reply)
1655 kfree(reply); 1615 kfree(reply);
1656} 1616}
1657 1617
1658static void
1659qeth_cmd_timeout(unsigned long data)
1660{
1661 struct qeth_reply *reply, *list_reply, *r;
1662 unsigned long flags;
1663
1664 reply = (struct qeth_reply *) data;
1665 spin_lock_irqsave(&reply->card->lock, flags);
1666 list_for_each_entry_safe(list_reply, r,
1667 &reply->card->cmd_waiter_list, list) {
1668 if (reply == list_reply){
1669 qeth_get_reply(reply);
1670 list_del_init(&reply->list);
1671 spin_unlock_irqrestore(&reply->card->lock, flags);
1672 reply->rc = -ETIME;
1673 reply->received = 1;
1674 wake_up(&reply->wait_q);
1675 qeth_put_reply(reply);
1676 return;
1677 }
1678 }
1679 spin_unlock_irqrestore(&reply->card->lock, flags);
1680}
1681
1682
1683static struct qeth_ipa_cmd * 1618static struct qeth_ipa_cmd *
1684qeth_check_ipa_data(struct qeth_card *card, struct qeth_cmd_buffer *iob) 1619qeth_check_ipa_data(struct qeth_card *card, struct qeth_cmd_buffer *iob)
1685{ 1620{
@@ -1745,7 +1680,7 @@ qeth_clear_ipacmd_list(struct qeth_card *card)
1745 list_for_each_entry_safe(reply, r, &card->cmd_waiter_list, list) { 1680 list_for_each_entry_safe(reply, r, &card->cmd_waiter_list, list) {
1746 qeth_get_reply(reply); 1681 qeth_get_reply(reply);
1747 reply->rc = -EIO; 1682 reply->rc = -EIO;
1748 reply->received = 1; 1683 atomic_inc(&reply->received);
1749 list_del_init(&reply->list); 1684 list_del_init(&reply->list);
1750 wake_up(&reply->wait_q); 1685 wake_up(&reply->wait_q);
1751 qeth_put_reply(reply); 1686 qeth_put_reply(reply);
@@ -1814,7 +1749,7 @@ qeth_send_control_data_cb(struct qeth_channel *channel,
1814 &card->cmd_waiter_list); 1749 &card->cmd_waiter_list);
1815 spin_unlock_irqrestore(&card->lock, flags); 1750 spin_unlock_irqrestore(&card->lock, flags);
1816 } else { 1751 } else {
1817 reply->received = 1; 1752 atomic_inc(&reply->received);
1818 wake_up(&reply->wait_q); 1753 wake_up(&reply->wait_q);
1819 } 1754 }
1820 qeth_put_reply(reply); 1755 qeth_put_reply(reply);
@@ -1858,7 +1793,7 @@ qeth_send_control_data(struct qeth_card *card, int len,
1858 int rc; 1793 int rc;
1859 unsigned long flags; 1794 unsigned long flags;
1860 struct qeth_reply *reply = NULL; 1795 struct qeth_reply *reply = NULL;
1861 struct timer_list timer; 1796 unsigned long timeout;
1862 1797
1863 QETH_DBF_TEXT(trace, 2, "sendctl"); 1798 QETH_DBF_TEXT(trace, 2, "sendctl");
1864 1799
@@ -1873,21 +1808,20 @@ qeth_send_control_data(struct qeth_card *card, int len,
1873 reply->seqno = QETH_IDX_COMMAND_SEQNO; 1808 reply->seqno = QETH_IDX_COMMAND_SEQNO;
1874 else 1809 else
1875 reply->seqno = card->seqno.ipa++; 1810 reply->seqno = card->seqno.ipa++;
1876 init_timer(&timer);
1877 timer.function = qeth_cmd_timeout;
1878 timer.data = (unsigned long) reply;
1879 init_waitqueue_head(&reply->wait_q); 1811 init_waitqueue_head(&reply->wait_q);
1880 spin_lock_irqsave(&card->lock, flags); 1812 spin_lock_irqsave(&card->lock, flags);
1881 list_add_tail(&reply->list, &card->cmd_waiter_list); 1813 list_add_tail(&reply->list, &card->cmd_waiter_list);
1882 spin_unlock_irqrestore(&card->lock, flags); 1814 spin_unlock_irqrestore(&card->lock, flags);
1883 QETH_DBF_HEX(control, 2, iob->data, QETH_DBF_CONTROL_LEN); 1815 QETH_DBF_HEX(control, 2, iob->data, QETH_DBF_CONTROL_LEN);
1884 wait_event(card->wait_q, 1816
1885 atomic_cmpxchg(&card->write.irq_pending, 0, 1) == 0); 1817 while (atomic_cmpxchg(&card->write.irq_pending, 0, 1)) ;
1886 qeth_prepare_control_data(card, len, iob); 1818 qeth_prepare_control_data(card, len, iob);
1819
1887 if (IS_IPA(iob->data)) 1820 if (IS_IPA(iob->data))
1888 timer.expires = jiffies + QETH_IPA_TIMEOUT; 1821 timeout = jiffies + QETH_IPA_TIMEOUT;
1889 else 1822 else
1890 timer.expires = jiffies + QETH_TIMEOUT; 1823 timeout = jiffies + QETH_TIMEOUT;
1824
1891 QETH_DBF_TEXT(trace, 6, "noirqpnd"); 1825 QETH_DBF_TEXT(trace, 6, "noirqpnd");
1892 spin_lock_irqsave(get_ccwdev_lock(card->write.ccwdev), flags); 1826 spin_lock_irqsave(get_ccwdev_lock(card->write.ccwdev), flags);
1893 rc = ccw_device_start(card->write.ccwdev, &card->write.ccw, 1827 rc = ccw_device_start(card->write.ccwdev, &card->write.ccw,
@@ -1906,9 +1840,16 @@ qeth_send_control_data(struct qeth_card *card, int len,
1906 wake_up(&card->wait_q); 1840 wake_up(&card->wait_q);
1907 return rc; 1841 return rc;
1908 } 1842 }
1909 add_timer(&timer); 1843 while (!atomic_read(&reply->received)) {
1910 wait_event(reply->wait_q, reply->received); 1844 if (time_after(jiffies, timeout)) {
1911 del_timer_sync(&timer); 1845 spin_lock_irqsave(&reply->card->lock, flags);
1846 list_del_init(&reply->list);
1847 spin_unlock_irqrestore(&reply->card->lock, flags);
1848 reply->rc = -ETIME;
1849 atomic_inc(&reply->received);
1850 wake_up(&reply->wait_q);
1851 }
1852 };
1912 rc = reply->rc; 1853 rc = reply->rc;
1913 qeth_put_reply(reply); 1854 qeth_put_reply(reply);
1914 return rc; 1855 return rc;
@@ -2466,32 +2407,17 @@ qeth_rebuild_skb_fake_ll(struct qeth_card *card, struct sk_buff *skb,
2466 qeth_rebuild_skb_fake_ll_eth(card, skb, hdr); 2407 qeth_rebuild_skb_fake_ll_eth(card, skb, hdr);
2467} 2408}
2468 2409
2469static inline __u16 2410static inline void
2470qeth_layer2_rebuild_skb(struct qeth_card *card, struct sk_buff *skb, 2411qeth_layer2_rebuild_skb(struct qeth_card *card, struct sk_buff *skb,
2471 struct qeth_hdr *hdr) 2412 struct qeth_hdr *hdr)
2472{ 2413{
2473 unsigned short vlan_id = 0;
2474#ifdef CONFIG_QETH_VLAN
2475 struct vlan_hdr *vhdr;
2476#endif
2477
2478 skb->pkt_type = PACKET_HOST; 2414 skb->pkt_type = PACKET_HOST;
2479 skb->protocol = qeth_type_trans(skb, skb->dev); 2415 skb->protocol = qeth_type_trans(skb, skb->dev);
2480 if (card->options.checksum_type == NO_CHECKSUMMING) 2416 if (card->options.checksum_type == NO_CHECKSUMMING)
2481 skb->ip_summed = CHECKSUM_UNNECESSARY; 2417 skb->ip_summed = CHECKSUM_UNNECESSARY;
2482 else 2418 else
2483 skb->ip_summed = CHECKSUM_NONE; 2419 skb->ip_summed = CHECKSUM_NONE;
2484#ifdef CONFIG_QETH_VLAN
2485 if (hdr->hdr.l2.flags[2] & (QETH_LAYER2_FLAG_VLAN)) {
2486 vhdr = (struct vlan_hdr *) skb->data;
2487 skb->protocol =
2488 __constant_htons(vhdr->h_vlan_encapsulated_proto);
2489 vlan_id = hdr->hdr.l2.vlan_id;
2490 skb_pull(skb, VLAN_HLEN);
2491 }
2492#endif
2493 *((__u32 *)skb->cb) = ++card->seqno.pkt_seqno; 2420 *((__u32 *)skb->cb) = ++card->seqno.pkt_seqno;
2494 return vlan_id;
2495} 2421}
2496 2422
2497static inline __u16 2423static inline __u16
@@ -2560,7 +2486,6 @@ qeth_process_inbound_buffer(struct qeth_card *card,
2560 int offset; 2486 int offset;
2561 int rxrc; 2487 int rxrc;
2562 __u16 vlan_tag = 0; 2488 __u16 vlan_tag = 0;
2563 __u16 *vlan_addr;
2564 2489
2565 /* get first element of current buffer */ 2490 /* get first element of current buffer */
2566 element = (struct qdio_buffer_element *)&buf->buffer->element[0]; 2491 element = (struct qdio_buffer_element *)&buf->buffer->element[0];
@@ -2571,7 +2496,7 @@ qeth_process_inbound_buffer(struct qeth_card *card,
2571 &offset, &hdr))) { 2496 &offset, &hdr))) {
2572 skb->dev = card->dev; 2497 skb->dev = card->dev;
2573 if (hdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2) 2498 if (hdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2)
2574 vlan_tag = qeth_layer2_rebuild_skb(card, skb, hdr); 2499 qeth_layer2_rebuild_skb(card, skb, hdr);
2575 else if (hdr->hdr.l3.id == QETH_HEADER_TYPE_LAYER3) 2500 else if (hdr->hdr.l3.id == QETH_HEADER_TYPE_LAYER3)
2576 vlan_tag = qeth_rebuild_skb(card, skb, hdr); 2501 vlan_tag = qeth_rebuild_skb(card, skb, hdr);
2577 else { /*in case of OSN*/ 2502 else { /*in case of OSN*/
@@ -3968,13 +3893,22 @@ static inline struct sk_buff *
3968qeth_prepare_skb(struct qeth_card *card, struct sk_buff *skb, 3893qeth_prepare_skb(struct qeth_card *card, struct sk_buff *skb,
3969 struct qeth_hdr **hdr, int ipv) 3894 struct qeth_hdr **hdr, int ipv)
3970{ 3895{
3971 struct sk_buff *new_skb; 3896 struct sk_buff *new_skb, *new_skb2;
3972 3897
3973 QETH_DBF_TEXT(trace, 6, "prepskb"); 3898 QETH_DBF_TEXT(trace, 6, "prepskb");
3974 3899 new_skb = skb;
3975 new_skb = qeth_realloc_headroom(card, skb, sizeof(struct qeth_hdr)); 3900 new_skb = qeth_pskb_unshare(skb, GFP_ATOMIC);
3976 if (new_skb == NULL) 3901 if (!new_skb)
3902 return NULL;
3903 new_skb2 = qeth_realloc_headroom(card, new_skb,
3904 sizeof(struct qeth_hdr));
3905 if (!new_skb2) {
3906 __qeth_free_new_skb(skb, new_skb);
3977 return NULL; 3907 return NULL;
3908 }
3909 if (new_skb != skb)
3910 __qeth_free_new_skb(new_skb2, new_skb);
3911 new_skb = new_skb2;
3978 *hdr = __qeth_prepare_skb(card, new_skb, ipv); 3912 *hdr = __qeth_prepare_skb(card, new_skb, ipv);
3979 if (*hdr == NULL) { 3913 if (*hdr == NULL) {
3980 __qeth_free_new_skb(skb, new_skb); 3914 __qeth_free_new_skb(skb, new_skb);
@@ -4844,9 +4778,11 @@ qeth_arp_query(struct qeth_card *card, char __user *udata)
4844 "(0x%x/%d)\n", 4778 "(0x%x/%d)\n",
4845 QETH_CARD_IFNAME(card), qeth_arp_get_error_cause(&rc), 4779 QETH_CARD_IFNAME(card), qeth_arp_get_error_cause(&rc),
4846 tmp, tmp); 4780 tmp, tmp);
4847 copy_to_user(udata, qinfo.udata, 4); 4781 if (copy_to_user(udata, qinfo.udata, 4))
4782 rc = -EFAULT;
4848 } else { 4783 } else {
4849 copy_to_user(udata, qinfo.udata, qinfo.udata_len); 4784 if (copy_to_user(udata, qinfo.udata, qinfo.udata_len))
4785 rc = -EFAULT;
4850 } 4786 }
4851 kfree(qinfo.udata); 4787 kfree(qinfo.udata);
4852 return rc; 4788 return rc;
@@ -4992,8 +4928,10 @@ qeth_snmp_command(struct qeth_card *card, char __user *udata)
4992 if (rc) 4928 if (rc)
4993 PRINT_WARN("SNMP command failed on %s: (0x%x)\n", 4929 PRINT_WARN("SNMP command failed on %s: (0x%x)\n",
4994 QETH_CARD_IFNAME(card), rc); 4930 QETH_CARD_IFNAME(card), rc);
4995 else 4931 else {
4996 copy_to_user(udata, qinfo.udata, qinfo.udata_len); 4932 if (copy_to_user(udata, qinfo.udata, qinfo.udata_len))
4933 rc = -EFAULT;
4934 }
4997 4935
4998 kfree(ureq); 4936 kfree(ureq);
4999 kfree(qinfo.udata); 4937 kfree(qinfo.udata);
@@ -5544,12 +5482,10 @@ qeth_set_multicast_list(struct net_device *dev)
5544 qeth_add_multicast_ipv6(card); 5482 qeth_add_multicast_ipv6(card);
5545#endif 5483#endif
5546out: 5484out:
5547 if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0) 5485 qeth_set_ip_addr_list(card);
5548 schedule_work(&card->kernel_thread_starter);
5549 if (!qeth_adp_supported(card, IPA_SETADP_SET_PROMISC_MODE)) 5486 if (!qeth_adp_supported(card, IPA_SETADP_SET_PROMISC_MODE))
5550 return; 5487 return;
5551 if (qeth_set_thread_start_bit(card, QETH_SET_PROMISC_MODE_THREAD)==0) 5488 qeth_setadp_promisc_mode(card);
5552 schedule_work(&card->kernel_thread_starter);
5553} 5489}
5554 5490
5555static int 5491static int
@@ -6351,6 +6287,42 @@ static struct ethtool_ops qeth_ethtool_ops = {
6351}; 6287};
6352 6288
6353static int 6289static int
6290qeth_hard_header_parse(struct sk_buff *skb, unsigned char *haddr)
6291{
6292 struct qeth_card *card;
6293 struct ethhdr *eth;
6294
6295 card = qeth_get_card_from_dev(skb->dev);
6296 if (card->options.layer2)
6297 goto haveheader;
6298#ifdef CONFIG_QETH_IPV6
6299 /* cause of the manipulated arp constructor and the ARP
6300 flag for OSAE devices we have some nasty exceptions */
6301 if (card->info.type == QETH_CARD_TYPE_OSAE) {
6302 if (!card->options.fake_ll) {
6303 if ((skb->pkt_type==PACKET_OUTGOING) &&
6304 (skb->protocol==ETH_P_IPV6))
6305 goto haveheader;
6306 else
6307 return 0;
6308 } else {
6309 if ((skb->pkt_type==PACKET_OUTGOING) &&
6310 (skb->protocol==ETH_P_IP))
6311 return 0;
6312 else
6313 goto haveheader;
6314 }
6315 }
6316#endif
6317 if (!card->options.fake_ll)
6318 return 0;
6319haveheader:
6320 eth = eth_hdr(skb);
6321 memcpy(haddr, eth->h_source, ETH_ALEN);
6322 return ETH_ALEN;
6323}
6324
6325static int
6354qeth_netdev_init(struct net_device *dev) 6326qeth_netdev_init(struct net_device *dev)
6355{ 6327{
6356 struct qeth_card *card; 6328 struct qeth_card *card;
@@ -6388,7 +6360,10 @@ qeth_netdev_init(struct net_device *dev)
6388 if (card->options.fake_ll && 6360 if (card->options.fake_ll &&
6389 (qeth_get_netdev_flags(card) & IFF_NOARP)) 6361 (qeth_get_netdev_flags(card) & IFF_NOARP))
6390 dev->hard_header = qeth_fake_header; 6362 dev->hard_header = qeth_fake_header;
6391 dev->hard_header_parse = NULL; 6363 if (dev->type == ARPHRD_IEEE802_TR)
6364 dev->hard_header_parse = NULL;
6365 else
6366 dev->hard_header_parse = qeth_hard_header_parse;
6392 dev->set_mac_address = qeth_layer2_set_mac_address; 6367 dev->set_mac_address = qeth_layer2_set_mac_address;
6393 dev->flags |= qeth_get_netdev_flags(card); 6368 dev->flags |= qeth_get_netdev_flags(card);
6394 if ((card->options.fake_broadcast) || 6369 if ((card->options.fake_broadcast) ||
@@ -8235,8 +8210,7 @@ qeth_add_vipa(struct qeth_card *card, enum qeth_prot_versions proto,
8235 } 8210 }
8236 if (!qeth_add_ip(card, ipaddr)) 8211 if (!qeth_add_ip(card, ipaddr))
8237 kfree(ipaddr); 8212 kfree(ipaddr);
8238 if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0) 8213 qeth_set_ip_addr_list(card);
8239 schedule_work(&card->kernel_thread_starter);
8240 return rc; 8214 return rc;
8241} 8215}
8242 8216
@@ -8264,8 +8238,7 @@ qeth_del_vipa(struct qeth_card *card, enum qeth_prot_versions proto,
8264 return; 8238 return;
8265 if (!qeth_delete_ip(card, ipaddr)) 8239 if (!qeth_delete_ip(card, ipaddr))
8266 kfree(ipaddr); 8240 kfree(ipaddr);
8267 if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0) 8241 qeth_set_ip_addr_list(card);
8268 schedule_work(&card->kernel_thread_starter);
8269} 8242}
8270 8243
8271/* 8244/*
@@ -8308,8 +8281,7 @@ qeth_add_rxip(struct qeth_card *card, enum qeth_prot_versions proto,
8308 } 8281 }
8309 if (!qeth_add_ip(card, ipaddr)) 8282 if (!qeth_add_ip(card, ipaddr))
8310 kfree(ipaddr); 8283 kfree(ipaddr);
8311 if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0) 8284 qeth_set_ip_addr_list(card);
8312 schedule_work(&card->kernel_thread_starter);
8313 return 0; 8285 return 0;
8314} 8286}
8315 8287
@@ -8337,8 +8309,7 @@ qeth_del_rxip(struct qeth_card *card, enum qeth_prot_versions proto,
8337 return; 8309 return;
8338 if (!qeth_delete_ip(card, ipaddr)) 8310 if (!qeth_delete_ip(card, ipaddr))
8339 kfree(ipaddr); 8311 kfree(ipaddr);
8340 if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0) 8312 qeth_set_ip_addr_list(card);
8341 schedule_work(&card->kernel_thread_starter);
8342} 8313}
8343 8314
8344/** 8315/**
@@ -8380,8 +8351,7 @@ qeth_ip_event(struct notifier_block *this,
8380 default: 8351 default:
8381 break; 8352 break;
8382 } 8353 }
8383 if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0) 8354 qeth_set_ip_addr_list(card);
8384 schedule_work(&card->kernel_thread_starter);
8385out: 8355out:
8386 return NOTIFY_DONE; 8356 return NOTIFY_DONE;
8387} 8357}
@@ -8433,8 +8403,7 @@ qeth_ip6_event(struct notifier_block *this,
8433 default: 8403 default:
8434 break; 8404 break;
8435 } 8405 }
8436 if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0) 8406 qeth_set_ip_addr_list(card);
8437 schedule_work(&card->kernel_thread_starter);
8438out: 8407out:
8439 return NOTIFY_DONE; 8408 return NOTIFY_DONE;
8440} 8409}
diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c
index d72df5dae4ee..e16fe361436e 100644
--- a/drivers/scsi/pcmcia/nsp_cs.c
+++ b/drivers/scsi/pcmcia/nsp_cs.c
@@ -1629,7 +1629,6 @@ static int nsp_cs_probe(struct pcmcia_device *link)
1629 /* General socket configuration */ 1629 /* General socket configuration */
1630 link->conf.Attributes = CONF_ENABLE_IRQ; 1630 link->conf.Attributes = CONF_ENABLE_IRQ;
1631 link->conf.IntType = INT_MEMORY_AND_IO; 1631 link->conf.IntType = INT_MEMORY_AND_IO;
1632 link->conf.Present = PRESENT_OPTION;
1633 1632
1634 ret = nsp_cs_config(link); 1633 ret = nsp_cs_config(link);
1635 1634
diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c
index fb7acea60286..9fb0ea5c1fb9 100644
--- a/drivers/scsi/pcmcia/sym53c500_cs.c
+++ b/drivers/scsi/pcmcia/sym53c500_cs.c
@@ -895,7 +895,6 @@ SYM53C500_probe(struct pcmcia_device *link)
895 link->irq.IRQInfo1 = IRQ_LEVEL_ID; 895 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
896 link->conf.Attributes = CONF_ENABLE_IRQ; 896 link->conf.Attributes = CONF_ENABLE_IRQ;
897 link->conf.IntType = INT_MEMORY_AND_IO; 897 link->conf.IntType = INT_MEMORY_AND_IO;
898 link->conf.Present = PRESENT_OPTION;
899 898
900 return SYM53C500_config(link); 899 return SYM53C500_config(link);
901} /* SYM53C500_attach */ 900} /* SYM53C500_attach */
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 51f3c739f7e1..5261f0af8b10 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -2296,7 +2296,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
2296 local_irq_restore(flags); 2296 local_irq_restore(flags);
2297} 2297}
2298 2298
2299static int serial8250_console_setup(struct console *co, char *options) 2299static int __init serial8250_console_setup(struct console *co, char *options)
2300{ 2300{
2301 struct uart_port *port; 2301 struct uart_port *port;
2302 int baud = 9600; 2302 int baud = 9600;
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c
index 9d11a75663e6..3c4b6c243712 100644
--- a/drivers/serial/mpc52xx_uart.c
+++ b/drivers/serial/mpc52xx_uart.c
@@ -789,7 +789,9 @@ static struct console mpc52xx_console = {
789static int __init 789static int __init
790mpc52xx_console_init(void) 790mpc52xx_console_init(void)
791{ 791{
792#if defined(CONFIG_PPC_MERGE)
792 mpc52xx_uart_of_enumerate(); 793 mpc52xx_uart_of_enumerate();
794#endif
793 register_console(&mpc52xx_console); 795 register_console(&mpc52xx_console);
794 return 0; 796 return 0;
795} 797}
diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c
index 24ee8be359f5..6377db1b446d 100644
--- a/drivers/usb/class/usblp.c
+++ b/drivers/usb/class/usblp.c
@@ -217,6 +217,7 @@ static const struct quirk_printer_struct quirk_printers[] = {
217 { 0x0409, 0xbef4, USBLP_QUIRK_BIDIR }, /* NEC Picty760 (HP OEM) */ 217 { 0x0409, 0xbef4, USBLP_QUIRK_BIDIR }, /* NEC Picty760 (HP OEM) */
218 { 0x0409, 0xf0be, USBLP_QUIRK_BIDIR }, /* NEC Picty920 (HP OEM) */ 218 { 0x0409, 0xf0be, USBLP_QUIRK_BIDIR }, /* NEC Picty920 (HP OEM) */
219 { 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (HP OEM) */ 219 { 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (HP OEM) */
220 { 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820, by zut <kernel@zut.de> */
220 { 0, 0 } 221 { 0, 0 }
221}; 222};
222 223
diff --git a/drivers/usb/core/endpoint.c b/drivers/usb/core/endpoint.c
index c505b767cee1..5e628ae3aec7 100644
--- a/drivers/usb/core/endpoint.c
+++ b/drivers/usb/core/endpoint.c
@@ -268,6 +268,7 @@ static void ep_device_release(struct device *dev)
268 struct ep_device *ep_dev = to_ep_device(dev); 268 struct ep_device *ep_dev = to_ep_device(dev);
269 269
270 dev_dbg(dev, "%s called for %s\n", __FUNCTION__, dev->bus_id); 270 dev_dbg(dev, "%s called for %s\n", __FUNCTION__, dev->bus_id);
271 endpoint_free_minor(ep_dev);
271 kfree(ep_dev); 272 kfree(ep_dev);
272} 273}
273 274
@@ -349,7 +350,6 @@ void usb_remove_ep_files(struct usb_host_endpoint *endpoint)
349 sprintf(name, "ep_%02x", endpoint->desc.bEndpointAddress); 350 sprintf(name, "ep_%02x", endpoint->desc.bEndpointAddress);
350 sysfs_remove_link(&ep_dev->dev.parent->kobj, name); 351 sysfs_remove_link(&ep_dev->dev.parent->kobj, name);
351 sysfs_remove_group(&ep_dev->dev.kobj, &ep_dev_attr_grp); 352 sysfs_remove_group(&ep_dev->dev.kobj, &ep_dev_attr_grp);
352 endpoint_free_minor(ep_dev);
353 device_unregister(&ep_dev->dev); 353 device_unregister(&ep_dev->dev);
354 endpoint->ep_dev = NULL; 354 endpoint->ep_dev = NULL;
355 destroy_endpoint_class(); 355 destroy_endpoint_class();
diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c
index 15d77c307930..cdcfd42843d4 100644
--- a/drivers/usb/gadget/omap_udc.c
+++ b/drivers/usb/gadget/omap_udc.c
@@ -42,6 +42,7 @@
42#include <linux/usb_gadget.h> 42#include <linux/usb_gadget.h>
43#include <linux/usb/otg.h> 43#include <linux/usb/otg.h>
44#include <linux/dma-mapping.h> 44#include <linux/dma-mapping.h>
45#include <linux/clk.h>
45 46
46#include <asm/byteorder.h> 47#include <asm/byteorder.h>
47#include <asm/io.h> 48#include <asm/io.h>
@@ -60,6 +61,11 @@
60/* bulk DMA seems to be behaving for both IN and OUT */ 61/* bulk DMA seems to be behaving for both IN and OUT */
61#define USE_DMA 62#define USE_DMA
62 63
64/* FIXME: OMAP2 currently has some problem in DMA mode */
65#ifdef CONFIG_ARCH_OMAP2
66#undef USE_DMA
67#endif
68
63/* ISO too */ 69/* ISO too */
64#define USE_ISO 70#define USE_ISO
65 71
@@ -99,7 +105,7 @@ static unsigned fifo_mode = 0;
99 * boot parameter "omap_udc:fifo_mode=42" 105 * boot parameter "omap_udc:fifo_mode=42"
100 */ 106 */
101module_param (fifo_mode, uint, 0); 107module_param (fifo_mode, uint, 0);
102MODULE_PARM_DESC (fifo_mode, "endpoint setup (0 == default)"); 108MODULE_PARM_DESC (fifo_mode, "endpoint configuration");
103 109
104#ifdef USE_DMA 110#ifdef USE_DMA
105static unsigned use_dma = 1; 111static unsigned use_dma = 1;
@@ -122,7 +128,7 @@ static const char driver_desc [] = DRIVER_DESC;
122/*-------------------------------------------------------------------------*/ 128/*-------------------------------------------------------------------------*/
123 129
124/* there's a notion of "current endpoint" for modifying endpoint 130/* there's a notion of "current endpoint" for modifying endpoint
125 * state, and PIO access to its FIFO. 131 * state, and PIO access to its FIFO.
126 */ 132 */
127 133
128static void use_ep(struct omap_ep *ep, u16 select) 134static void use_ep(struct omap_ep *ep, u16 select)
@@ -391,7 +397,7 @@ done(struct omap_ep *ep, struct omap_req *req, int status)
391#define FIFO_EMPTY (UDC_NON_ISO_FIFO_EMPTY | UDC_ISO_FIFO_EMPTY) 397#define FIFO_EMPTY (UDC_NON_ISO_FIFO_EMPTY | UDC_ISO_FIFO_EMPTY)
392#define FIFO_UNREADABLE (UDC_EP_HALTED | FIFO_EMPTY) 398#define FIFO_UNREADABLE (UDC_EP_HALTED | FIFO_EMPTY)
393 399
394static inline int 400static inline int
395write_packet(u8 *buf, struct omap_req *req, unsigned max) 401write_packet(u8 *buf, struct omap_req *req, unsigned max)
396{ 402{
397 unsigned len; 403 unsigned len;
@@ -456,7 +462,7 @@ static int write_fifo(struct omap_ep *ep, struct omap_req *req)
456 return is_last; 462 return is_last;
457} 463}
458 464
459static inline int 465static inline int
460read_packet(u8 *buf, struct omap_req *req, unsigned avail) 466read_packet(u8 *buf, struct omap_req *req, unsigned avail)
461{ 467{
462 unsigned len; 468 unsigned len;
@@ -542,9 +548,9 @@ static inline dma_addr_t dma_csac(unsigned lch)
542 /* omap 3.2/3.3 erratum: sometimes 0 is returned if CSAC/CDAC is 548 /* omap 3.2/3.3 erratum: sometimes 0 is returned if CSAC/CDAC is
543 * read before the DMA controller finished disabling the channel. 549 * read before the DMA controller finished disabling the channel.
544 */ 550 */
545 csac = omap_readw(OMAP_DMA_CSAC(lch)); 551 csac = OMAP_DMA_CSAC_REG(lch);
546 if (csac == 0) 552 if (csac == 0)
547 csac = omap_readw(OMAP_DMA_CSAC(lch)); 553 csac = OMAP_DMA_CSAC_REG(lch);
548 return csac; 554 return csac;
549} 555}
550 556
@@ -555,9 +561,9 @@ static inline dma_addr_t dma_cdac(unsigned lch)
555 /* omap 3.2/3.3 erratum: sometimes 0 is returned if CSAC/CDAC is 561 /* omap 3.2/3.3 erratum: sometimes 0 is returned if CSAC/CDAC is
556 * read before the DMA controller finished disabling the channel. 562 * read before the DMA controller finished disabling the channel.
557 */ 563 */
558 cdac = omap_readw(OMAP_DMA_CDAC(lch)); 564 cdac = OMAP_DMA_CDAC_REG(lch);
559 if (cdac == 0) 565 if (cdac == 0)
560 cdac = omap_readw(OMAP_DMA_CDAC(lch)); 566 cdac = OMAP_DMA_CDAC_REG(lch);
561 return cdac; 567 return cdac;
562} 568}
563 569
@@ -582,7 +588,7 @@ static u16 dma_src_len(struct omap_ep *ep, dma_addr_t start)
582} 588}
583 589
584#define DMA_DEST_LAST(x) (cpu_is_omap15xx() \ 590#define DMA_DEST_LAST(x) (cpu_is_omap15xx() \
585 ? omap_readw(OMAP_DMA_CSAC(x)) /* really: CPC */ \ 591 ? OMAP_DMA_CSAC_REG(x) /* really: CPC */ \
586 : dma_cdac(x)) 592 : dma_cdac(x))
587 593
588static u16 dma_dest_len(struct omap_ep *ep, dma_addr_t start) 594static u16 dma_dest_len(struct omap_ep *ep, dma_addr_t start)
@@ -620,17 +626,19 @@ static void next_in_dma(struct omap_ep *ep, struct omap_req *req)
620 || (cpu_is_omap15xx() && length < ep->maxpacket)) { 626 || (cpu_is_omap15xx() && length < ep->maxpacket)) {
621 txdma_ctrl = UDC_TXN_EOT | length; 627 txdma_ctrl = UDC_TXN_EOT | length;
622 omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S8, 628 omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S8,
623 length, 1, sync_mode); 629 length, 1, sync_mode, 0, 0);
624 } else { 630 } else {
625 length = min(length / ep->maxpacket, 631 length = min(length / ep->maxpacket,
626 (unsigned) UDC_TXN_TSC + 1); 632 (unsigned) UDC_TXN_TSC + 1);
627 txdma_ctrl = length; 633 txdma_ctrl = length;
628 omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S16, 634 omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S16,
629 ep->ep.maxpacket >> 1, length, sync_mode); 635 ep->ep.maxpacket >> 1, length, sync_mode,
636 0, 0);
630 length *= ep->maxpacket; 637 length *= ep->maxpacket;
631 } 638 }
632 omap_set_dma_src_params(ep->lch, OMAP_DMA_PORT_EMIFF, 639 omap_set_dma_src_params(ep->lch, OMAP_DMA_PORT_EMIFF,
633 OMAP_DMA_AMODE_POST_INC, req->req.dma + req->req.actual); 640 OMAP_DMA_AMODE_POST_INC, req->req.dma + req->req.actual,
641 0, 0);
634 642
635 omap_start_dma(ep->lch); 643 omap_start_dma(ep->lch);
636 ep->dma_counter = dma_csac(ep->lch); 644 ep->dma_counter = dma_csac(ep->lch);
@@ -675,9 +683,11 @@ static void next_out_dma(struct omap_ep *ep, struct omap_req *req)
675 req->dma_bytes = packets * ep->ep.maxpacket; 683 req->dma_bytes = packets * ep->ep.maxpacket;
676 omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S16, 684 omap_set_dma_transfer_params(ep->lch, OMAP_DMA_DATA_TYPE_S16,
677 ep->ep.maxpacket >> 1, packets, 685 ep->ep.maxpacket >> 1, packets,
678 OMAP_DMA_SYNC_ELEMENT); 686 OMAP_DMA_SYNC_ELEMENT,
687 0, 0);
679 omap_set_dma_dest_params(ep->lch, OMAP_DMA_PORT_EMIFF, 688 omap_set_dma_dest_params(ep->lch, OMAP_DMA_PORT_EMIFF,
680 OMAP_DMA_AMODE_POST_INC, req->req.dma + req->req.actual); 689 OMAP_DMA_AMODE_POST_INC, req->req.dma + req->req.actual,
690 0, 0);
681 ep->dma_counter = DMA_DEST_LAST(ep->lch); 691 ep->dma_counter = DMA_DEST_LAST(ep->lch);
682 692
683 UDC_RXDMA_REG(ep->dma_channel) = UDC_RXN_STOP | (packets - 1); 693 UDC_RXDMA_REG(ep->dma_channel) = UDC_RXN_STOP | (packets - 1);
@@ -820,7 +830,8 @@ static void dma_channel_claim(struct omap_ep *ep, unsigned channel)
820 omap_set_dma_dest_params(ep->lch, 830 omap_set_dma_dest_params(ep->lch,
821 OMAP_DMA_PORT_TIPB, 831 OMAP_DMA_PORT_TIPB,
822 OMAP_DMA_AMODE_CONSTANT, 832 OMAP_DMA_AMODE_CONSTANT,
823 (unsigned long) io_v2p((u32)&UDC_DATA_DMA_REG)); 833 (unsigned long) io_v2p((u32)&UDC_DATA_DMA_REG),
834 0, 0);
824 } 835 }
825 } else { 836 } else {
826 status = omap_request_dma(OMAP_DMA_USB_W2FC_RX0 - 1 + channel, 837 status = omap_request_dma(OMAP_DMA_USB_W2FC_RX0 - 1 + channel,
@@ -831,7 +842,8 @@ static void dma_channel_claim(struct omap_ep *ep, unsigned channel)
831 omap_set_dma_src_params(ep->lch, 842 omap_set_dma_src_params(ep->lch,
832 OMAP_DMA_PORT_TIPB, 843 OMAP_DMA_PORT_TIPB,
833 OMAP_DMA_AMODE_CONSTANT, 844 OMAP_DMA_AMODE_CONSTANT,
834 (unsigned long) io_v2p((u32)&UDC_DATA_DMA_REG)); 845 (unsigned long) io_v2p((u32)&UDC_DATA_DMA_REG),
846 0, 0);
835 /* EMIFF */ 847 /* EMIFF */
836 omap_set_dma_dest_burst_mode(ep->lch, 848 omap_set_dma_dest_burst_mode(ep->lch,
837 OMAP_DMA_DATA_BURST_4); 849 OMAP_DMA_DATA_BURST_4);
@@ -846,7 +858,7 @@ static void dma_channel_claim(struct omap_ep *ep, unsigned channel)
846 858
847 /* channel type P: hw synch (fifo) */ 859 /* channel type P: hw synch (fifo) */
848 if (!cpu_is_omap15xx()) 860 if (!cpu_is_omap15xx())
849 omap_writew(2, OMAP_DMA_LCH_CTRL(ep->lch)); 861 OMAP1_DMA_LCH_CTRL_REG(ep->lch) = 2;
850 } 862 }
851 863
852just_restart: 864just_restart:
@@ -893,7 +905,7 @@ static void dma_channel_release(struct omap_ep *ep)
893 else 905 else
894 req = NULL; 906 req = NULL;
895 907
896 active = ((1 << 7) & omap_readl(OMAP_DMA_CCR(ep->lch))) != 0; 908 active = ((1 << 7) & OMAP_DMA_CCR_REG(ep->lch)) != 0;
897 909
898 DBG("%s release %s %cxdma%d %p\n", ep->ep.name, 910 DBG("%s release %s %cxdma%d %p\n", ep->ep.name,
899 active ? "active" : "idle", 911 active ? "active" : "idle",
@@ -1117,7 +1129,7 @@ static int omap_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
1117 */ 1129 */
1118 dma_channel_release(ep); 1130 dma_channel_release(ep);
1119 dma_channel_claim(ep, channel); 1131 dma_channel_claim(ep, channel);
1120 } else 1132 } else
1121 done(ep, req, -ECONNRESET); 1133 done(ep, req, -ECONNRESET);
1122 spin_unlock_irqrestore(&ep->udc->lock, flags); 1134 spin_unlock_irqrestore(&ep->udc->lock, flags);
1123 return 0; 1135 return 0;
@@ -1153,7 +1165,7 @@ static int omap_ep_set_halt(struct usb_ep *_ep, int value)
1153 1165
1154 /* IN endpoints must already be idle */ 1166 /* IN endpoints must already be idle */
1155 if ((ep->bEndpointAddress & USB_DIR_IN) 1167 if ((ep->bEndpointAddress & USB_DIR_IN)
1156 && !list_empty(&ep->queue)) { 1168 && !list_empty(&ep->queue)) {
1157 status = -EAGAIN; 1169 status = -EAGAIN;
1158 goto done; 1170 goto done;
1159 } 1171 }
@@ -1298,6 +1310,23 @@ static void pullup_disable(struct omap_udc *udc)
1298 UDC_SYSCON1_REG &= ~UDC_PULLUP_EN; 1310 UDC_SYSCON1_REG &= ~UDC_PULLUP_EN;
1299} 1311}
1300 1312
1313static struct omap_udc *udc;
1314
1315static void omap_udc_enable_clock(int enable)
1316{
1317 if (udc == NULL || udc->dc_clk == NULL || udc->hhc_clk == NULL)
1318 return;
1319
1320 if (enable) {
1321 clk_enable(udc->dc_clk);
1322 clk_enable(udc->hhc_clk);
1323 udelay(100);
1324 } else {
1325 clk_disable(udc->hhc_clk);
1326 clk_disable(udc->dc_clk);
1327 }
1328}
1329
1301/* 1330/*
1302 * Called by whatever detects VBUS sessions: external transceiver 1331 * Called by whatever detects VBUS sessions: external transceiver
1303 * driver, or maybe GPIO0 VBUS IRQ. May request 48 MHz clock. 1332 * driver, or maybe GPIO0 VBUS IRQ. May request 48 MHz clock.
@@ -1318,10 +1347,22 @@ static int omap_vbus_session(struct usb_gadget *gadget, int is_active)
1318 else 1347 else
1319 FUNC_MUX_CTRL_0_REG &= ~VBUS_CTRL_1510; 1348 FUNC_MUX_CTRL_0_REG &= ~VBUS_CTRL_1510;
1320 } 1349 }
1350 if (udc->dc_clk != NULL && is_active) {
1351 if (!udc->clk_requested) {
1352 omap_udc_enable_clock(1);
1353 udc->clk_requested = 1;
1354 }
1355 }
1321 if (can_pullup(udc)) 1356 if (can_pullup(udc))
1322 pullup_enable(udc); 1357 pullup_enable(udc);
1323 else 1358 else
1324 pullup_disable(udc); 1359 pullup_disable(udc);
1360 if (udc->dc_clk != NULL && !is_active) {
1361 if (udc->clk_requested) {
1362 omap_udc_enable_clock(0);
1363 udc->clk_requested = 0;
1364 }
1365 }
1325 spin_unlock_irqrestore(&udc->lock, flags); 1366 spin_unlock_irqrestore(&udc->lock, flags);
1326 return 0; 1367 return 0;
1327} 1368}
@@ -1441,7 +1482,7 @@ static void ep0_irq(struct omap_udc *udc, u16 irq_src)
1441 } 1482 }
1442 } 1483 }
1443 1484
1444 /* IN/OUT packets mean we're in the DATA or STATUS stage. 1485 /* IN/OUT packets mean we're in the DATA or STATUS stage.
1445 * This driver uses only uses protocol stalls (ep0 never halts), 1486 * This driver uses only uses protocol stalls (ep0 never halts),
1446 * and if we got this far the gadget driver already had a 1487 * and if we got this far the gadget driver already had a
1447 * chance to stall. Tries to be forgiving of host oddities. 1488 * chance to stall. Tries to be forgiving of host oddities.
@@ -1509,7 +1550,7 @@ static void ep0_irq(struct omap_udc *udc, u16 irq_src)
1509 } else if (stat == 0) 1550 } else if (stat == 0)
1510 UDC_CTRL_REG = UDC_SET_FIFO_EN; 1551 UDC_CTRL_REG = UDC_SET_FIFO_EN;
1511 UDC_EP_NUM_REG = 0; 1552 UDC_EP_NUM_REG = 0;
1512 1553
1513 /* activate status stage */ 1554 /* activate status stage */
1514 if (stat == 1) { 1555 if (stat == 1) {
1515 done(ep0, req, 0); 1556 done(ep0, req, 0);
@@ -1866,7 +1907,7 @@ static void pio_out_timer(unsigned long _ep)
1866 1907
1867 spin_lock_irqsave(&ep->udc->lock, flags); 1908 spin_lock_irqsave(&ep->udc->lock, flags);
1868 if (!list_empty(&ep->queue) && ep->ackwait) { 1909 if (!list_empty(&ep->queue) && ep->ackwait) {
1869 use_ep(ep, 0); 1910 use_ep(ep, UDC_EP_SEL);
1870 stat_flg = UDC_STAT_FLG_REG; 1911 stat_flg = UDC_STAT_FLG_REG;
1871 1912
1872 if ((stat_flg & UDC_ACK) && (!(stat_flg & UDC_FIFO_EN) 1913 if ((stat_flg & UDC_ACK) && (!(stat_flg & UDC_FIFO_EN)
@@ -1876,12 +1917,12 @@ static void pio_out_timer(unsigned long _ep)
1876 VDBG("%s: lose, %04x\n", ep->ep.name, stat_flg); 1917 VDBG("%s: lose, %04x\n", ep->ep.name, stat_flg);
1877 req = container_of(ep->queue.next, 1918 req = container_of(ep->queue.next,
1878 struct omap_req, queue); 1919 struct omap_req, queue);
1879 UDC_EP_NUM_REG = ep->bEndpointAddress | UDC_EP_SEL;
1880 (void) read_fifo(ep, req); 1920 (void) read_fifo(ep, req);
1881 UDC_EP_NUM_REG = ep->bEndpointAddress; 1921 UDC_EP_NUM_REG = ep->bEndpointAddress;
1882 UDC_CTRL_REG = UDC_SET_FIFO_EN; 1922 UDC_CTRL_REG = UDC_SET_FIFO_EN;
1883 ep->ackwait = 1 + ep->double_buf; 1923 ep->ackwait = 1 + ep->double_buf;
1884 } 1924 } else
1925 deselect_ep();
1885 } 1926 }
1886 mod_timer(&ep->timer, PIO_OUT_TIMEOUT); 1927 mod_timer(&ep->timer, PIO_OUT_TIMEOUT);
1887 spin_unlock_irqrestore(&ep->udc->lock, flags); 1928 spin_unlock_irqrestore(&ep->udc->lock, flags);
@@ -2028,7 +2069,17 @@ static irqreturn_t omap_udc_iso_irq(int irq, void *_dev)
2028 2069
2029/*-------------------------------------------------------------------------*/ 2070/*-------------------------------------------------------------------------*/
2030 2071
2031static struct omap_udc *udc; 2072static inline int machine_needs_vbus_session(void)
2073{
2074 return (machine_is_omap_innovator()
2075 || machine_is_omap_osk()
2076 || machine_is_omap_apollon()
2077#ifndef CONFIG_MACH_OMAP_H4_OTG
2078 || machine_is_omap_h4()
2079#endif
2080 || machine_is_sx1()
2081 );
2082}
2032 2083
2033int usb_gadget_register_driver (struct usb_gadget_driver *driver) 2084int usb_gadget_register_driver (struct usb_gadget_driver *driver)
2034{ 2085{
@@ -2070,6 +2121,9 @@ int usb_gadget_register_driver (struct usb_gadget_driver *driver)
2070 udc->gadget.dev.driver = &driver->driver; 2121 udc->gadget.dev.driver = &driver->driver;
2071 spin_unlock_irqrestore(&udc->lock, flags); 2122 spin_unlock_irqrestore(&udc->lock, flags);
2072 2123
2124 if (udc->dc_clk != NULL)
2125 omap_udc_enable_clock(1);
2126
2073 status = driver->bind (&udc->gadget); 2127 status = driver->bind (&udc->gadget);
2074 if (status) { 2128 if (status) {
2075 DBG("bind to %s --> %d\n", driver->driver.name, status); 2129 DBG("bind to %s --> %d\n", driver->driver.name, status);
@@ -2103,10 +2157,12 @@ int usb_gadget_register_driver (struct usb_gadget_driver *driver)
2103 /* boards that don't have VBUS sensing can't autogate 48MHz; 2157 /* boards that don't have VBUS sensing can't autogate 48MHz;
2104 * can't enter deep sleep while a gadget driver is active. 2158 * can't enter deep sleep while a gadget driver is active.
2105 */ 2159 */
2106 if (machine_is_omap_innovator() || machine_is_omap_osk()) 2160 if (machine_needs_vbus_session())
2107 omap_vbus_session(&udc->gadget, 1); 2161 omap_vbus_session(&udc->gadget, 1);
2108 2162
2109done: 2163done:
2164 if (udc->dc_clk != NULL)
2165 omap_udc_enable_clock(0);
2110 return status; 2166 return status;
2111} 2167}
2112EXPORT_SYMBOL(usb_gadget_register_driver); 2168EXPORT_SYMBOL(usb_gadget_register_driver);
@@ -2121,7 +2177,10 @@ int usb_gadget_unregister_driver (struct usb_gadget_driver *driver)
2121 if (!driver || driver != udc->driver || !driver->unbind) 2177 if (!driver || driver != udc->driver || !driver->unbind)
2122 return -EINVAL; 2178 return -EINVAL;
2123 2179
2124 if (machine_is_omap_innovator() || machine_is_omap_osk()) 2180 if (udc->dc_clk != NULL)
2181 omap_udc_enable_clock(1);
2182
2183 if (machine_needs_vbus_session())
2125 omap_vbus_session(&udc->gadget, 0); 2184 omap_vbus_session(&udc->gadget, 0);
2126 2185
2127 if (udc->transceiver) 2186 if (udc->transceiver)
@@ -2137,6 +2196,8 @@ int usb_gadget_unregister_driver (struct usb_gadget_driver *driver)
2137 udc->gadget.dev.driver = NULL; 2196 udc->gadget.dev.driver = NULL;
2138 udc->driver = NULL; 2197 udc->driver = NULL;
2139 2198
2199 if (udc->dc_clk != NULL)
2200 omap_udc_enable_clock(0);
2140 DBG("unregistered driver '%s'\n", driver->driver.name); 2201 DBG("unregistered driver '%s'\n", driver->driver.name);
2141 return status; 2202 return status;
2142} 2203}
@@ -2219,7 +2280,7 @@ static char *trx_mode(unsigned m, int enabled)
2219 case 0: return enabled ? "*6wire" : "unused"; 2280 case 0: return enabled ? "*6wire" : "unused";
2220 case 1: return "4wire"; 2281 case 1: return "4wire";
2221 case 2: return "3wire"; 2282 case 2: return "3wire";
2222 case 3: return "6wire"; 2283 case 3: return "6wire";
2223 default: return "unknown"; 2284 default: return "unknown";
2224 } 2285 }
2225} 2286}
@@ -2228,11 +2289,18 @@ static int proc_otg_show(struct seq_file *s)
2228{ 2289{
2229 u32 tmp; 2290 u32 tmp;
2230 u32 trans; 2291 u32 trans;
2292 char *ctrl_name;
2231 2293
2232 tmp = OTG_REV_REG; 2294 tmp = OTG_REV_REG;
2233 trans = USB_TRANSCEIVER_CTRL_REG; 2295 if (cpu_is_omap24xx()) {
2234 seq_printf(s, "\nOTG rev %d.%d, transceiver_ctrl %05x\n", 2296 ctrl_name = "control_devconf";
2235 tmp >> 4, tmp & 0xf, trans); 2297 trans = CONTROL_DEVCONF_REG;
2298 } else {
2299 ctrl_name = "tranceiver_ctrl";
2300 trans = USB_TRANSCEIVER_CTRL_REG;
2301 }
2302 seq_printf(s, "\nOTG rev %d.%d, %s %05x\n",
2303 tmp >> 4, tmp & 0xf, ctrl_name, trans);
2236 tmp = OTG_SYSCON_1_REG; 2304 tmp = OTG_SYSCON_1_REG;
2237 seq_printf(s, "otg_syscon1 %08x usb2 %s, usb1 %s, usb0 %s," 2305 seq_printf(s, "otg_syscon1 %08x usb2 %s, usb1 %s, usb0 %s,"
2238 FOURBITS "\n", tmp, 2306 FOURBITS "\n", tmp,
@@ -2307,7 +2375,7 @@ static int proc_udc_show(struct seq_file *s, void *_)
2307 driver_desc, 2375 driver_desc,
2308 use_dma ? " (dma)" : ""); 2376 use_dma ? " (dma)" : "");
2309 2377
2310 tmp = UDC_REV_REG & 0xff; 2378 tmp = UDC_REV_REG & 0xff;
2311 seq_printf(s, 2379 seq_printf(s,
2312 "UDC rev %d.%d, fifo mode %d, gadget %s\n" 2380 "UDC rev %d.%d, fifo mode %d, gadget %s\n"
2313 "hmc %d, transceiver %s\n", 2381 "hmc %d, transceiver %s\n",
@@ -2315,11 +2383,16 @@ static int proc_udc_show(struct seq_file *s, void *_)
2315 fifo_mode, 2383 fifo_mode,
2316 udc->driver ? udc->driver->driver.name : "(none)", 2384 udc->driver ? udc->driver->driver.name : "(none)",
2317 HMC, 2385 HMC,
2318 udc->transceiver ? udc->transceiver->label : "(none)"); 2386 udc->transceiver
2319 seq_printf(s, "ULPD control %04x req %04x status %04x\n", 2387 ? udc->transceiver->label
2320 __REG16(ULPD_CLOCK_CTRL), 2388 : ((cpu_is_omap1710() || cpu_is_omap24xx())
2321 __REG16(ULPD_SOFT_REQ), 2389 ? "external" : "(none)"));
2322 __REG16(ULPD_STATUS_REQ)); 2390 if (cpu_class_is_omap1()) {
2391 seq_printf(s, "ULPD control %04x req %04x status %04x\n",
2392 __REG16(ULPD_CLOCK_CTRL),
2393 __REG16(ULPD_SOFT_REQ),
2394 __REG16(ULPD_STATUS_REQ));
2395 }
2323 2396
2324 /* OTG controller registers */ 2397 /* OTG controller registers */
2325 if (!cpu_is_omap15xx()) 2398 if (!cpu_is_omap15xx())
@@ -2504,9 +2577,10 @@ omap_ep_setup(char *name, u8 addr, u8 type,
2504 dbuf = 1; 2577 dbuf = 1;
2505 } else { 2578 } else {
2506 /* double-buffering "not supported" on 15xx, 2579 /* double-buffering "not supported" on 15xx,
2507 * and ignored for PIO-IN on 16xx 2580 * and ignored for PIO-IN on newer chips
2581 * (for more reliable behavior)
2508 */ 2582 */
2509 if (!use_dma || cpu_is_omap15xx()) 2583 if (!use_dma || cpu_is_omap15xx() || cpu_is_omap24xx())
2510 dbuf = 0; 2584 dbuf = 0;
2511 2585
2512 switch (maxp) { 2586 switch (maxp) {
@@ -2549,7 +2623,7 @@ omap_ep_setup(char *name, u8 addr, u8 type,
2549 ep->bEndpointAddress = addr; 2623 ep->bEndpointAddress = addr;
2550 ep->bmAttributes = type; 2624 ep->bmAttributes = type;
2551 ep->double_buf = dbuf; 2625 ep->double_buf = dbuf;
2552 ep->udc = udc; 2626 ep->udc = udc;
2553 2627
2554 ep->ep.name = ep->name; 2628 ep->ep.name = ep->name;
2555 ep->ep.ops = &omap_ep_ops; 2629 ep->ep.ops = &omap_ep_ops;
@@ -2709,15 +2783,37 @@ static int __init omap_udc_probe(struct platform_device *pdev)
2709 struct otg_transceiver *xceiv = NULL; 2783 struct otg_transceiver *xceiv = NULL;
2710 const char *type = NULL; 2784 const char *type = NULL;
2711 struct omap_usb_config *config = pdev->dev.platform_data; 2785 struct omap_usb_config *config = pdev->dev.platform_data;
2786 struct clk *dc_clk;
2787 struct clk *hhc_clk;
2712 2788
2713 /* NOTE: "knows" the order of the resources! */ 2789 /* NOTE: "knows" the order of the resources! */
2714 if (!request_mem_region(pdev->resource[0].start, 2790 if (!request_mem_region(pdev->resource[0].start,
2715 pdev->resource[0].end - pdev->resource[0].start + 1, 2791 pdev->resource[0].end - pdev->resource[0].start + 1,
2716 driver_name)) { 2792 driver_name)) {
2717 DBG("request_mem_region failed\n"); 2793 DBG("request_mem_region failed\n");
2718 return -EBUSY; 2794 return -EBUSY;
2719 } 2795 }
2720 2796
2797 if (cpu_is_omap16xx()) {
2798 dc_clk = clk_get(&pdev->dev, "usb_dc_ck");
2799 hhc_clk = clk_get(&pdev->dev, "usb_hhc_ck");
2800 BUG_ON(IS_ERR(dc_clk) || IS_ERR(hhc_clk));
2801 /* can't use omap_udc_enable_clock yet */
2802 clk_enable(dc_clk);
2803 clk_enable(hhc_clk);
2804 udelay(100);
2805 }
2806
2807 if (cpu_is_omap24xx()) {
2808 dc_clk = clk_get(&pdev->dev, "usb_fck");
2809 hhc_clk = clk_get(&pdev->dev, "usb_l4_ick");
2810 BUG_ON(IS_ERR(dc_clk) || IS_ERR(hhc_clk));
2811 /* can't use omap_udc_enable_clock yet */
2812 clk_enable(dc_clk);
2813 clk_enable(hhc_clk);
2814 udelay(100);
2815 }
2816
2721 INFO("OMAP UDC rev %d.%d%s\n", 2817 INFO("OMAP UDC rev %d.%d%s\n",
2722 UDC_REV_REG >> 4, UDC_REV_REG & 0xf, 2818 UDC_REV_REG >> 4, UDC_REV_REG & 0xf,
2723 config->otg ? ", Mini-AB" : ""); 2819 config->otg ? ", Mini-AB" : "");
@@ -2727,7 +2823,7 @@ static int __init omap_udc_probe(struct platform_device *pdev)
2727 hmc = HMC_1510; 2823 hmc = HMC_1510;
2728 type = "(unknown)"; 2824 type = "(unknown)";
2729 2825
2730 if (machine_is_omap_innovator()) { 2826 if (machine_is_omap_innovator() || machine_is_sx1()) {
2731 /* just set up software VBUS detect, and then 2827 /* just set up software VBUS detect, and then
2732 * later rig it so we always report VBUS. 2828 * later rig it so we always report VBUS.
2733 * FIXME without really sensing VBUS, we can't 2829 * FIXME without really sensing VBUS, we can't
@@ -2756,6 +2852,15 @@ static int __init omap_udc_probe(struct platform_device *pdev)
2756 } 2852 }
2757 2853
2758 hmc = HMC_1610; 2854 hmc = HMC_1610;
2855
2856 if (cpu_is_omap24xx()) {
2857 /* this could be transceiverless in one of the
2858 * "we don't need to know" modes.
2859 */
2860 type = "external";
2861 goto known;
2862 }
2863
2759 switch (hmc) { 2864 switch (hmc) {
2760 case 0: /* POWERUP DEFAULT == 0 */ 2865 case 0: /* POWERUP DEFAULT == 0 */
2761 case 4: 2866 case 4:
@@ -2794,6 +2899,7 @@ bad_on_1710:
2794 goto cleanup0; 2899 goto cleanup0;
2795 } 2900 }
2796 } 2901 }
2902known:
2797 INFO("hmc mode %d, %s transceiver\n", hmc, type); 2903 INFO("hmc mode %d, %s transceiver\n", hmc, type);
2798 2904
2799 /* a "gadget" abstracts/virtualizes the controller */ 2905 /* a "gadget" abstracts/virtualizes the controller */
@@ -2818,8 +2924,8 @@ bad_on_1710:
2818 status = request_irq(pdev->resource[1].start, omap_udc_irq, 2924 status = request_irq(pdev->resource[1].start, omap_udc_irq,
2819 IRQF_SAMPLE_RANDOM, driver_name, udc); 2925 IRQF_SAMPLE_RANDOM, driver_name, udc);
2820 if (status != 0) { 2926 if (status != 0) {
2821 ERR( "can't get irq %ld, err %d\n", 2927 ERR("can't get irq %d, err %d\n",
2822 pdev->resource[1].start, status); 2928 (int) pdev->resource[1].start, status);
2823 goto cleanup1; 2929 goto cleanup1;
2824 } 2930 }
2825 2931
@@ -2827,24 +2933,41 @@ bad_on_1710:
2827 status = request_irq(pdev->resource[2].start, omap_udc_pio_irq, 2933 status = request_irq(pdev->resource[2].start, omap_udc_pio_irq,
2828 IRQF_SAMPLE_RANDOM, "omap_udc pio", udc); 2934 IRQF_SAMPLE_RANDOM, "omap_udc pio", udc);
2829 if (status != 0) { 2935 if (status != 0) {
2830 ERR( "can't get irq %ld, err %d\n", 2936 ERR("can't get irq %d, err %d\n",
2831 pdev->resource[2].start, status); 2937 (int) pdev->resource[2].start, status);
2832 goto cleanup2; 2938 goto cleanup2;
2833 } 2939 }
2834#ifdef USE_ISO 2940#ifdef USE_ISO
2835 status = request_irq(pdev->resource[3].start, omap_udc_iso_irq, 2941 status = request_irq(pdev->resource[3].start, omap_udc_iso_irq,
2836 IRQF_DISABLED, "omap_udc iso", udc); 2942 IRQF_DISABLED, "omap_udc iso", udc);
2837 if (status != 0) { 2943 if (status != 0) {
2838 ERR("can't get irq %ld, err %d\n", 2944 ERR("can't get irq %d, err %d\n",
2839 pdev->resource[3].start, status); 2945 (int) pdev->resource[3].start, status);
2840 goto cleanup3; 2946 goto cleanup3;
2841 } 2947 }
2842#endif 2948#endif
2949 if (cpu_is_omap16xx()) {
2950 udc->dc_clk = dc_clk;
2951 udc->hhc_clk = hhc_clk;
2952 clk_disable(hhc_clk);
2953 clk_disable(dc_clk);
2954 }
2955
2956 if (cpu_is_omap24xx()) {
2957 udc->dc_clk = dc_clk;
2958 udc->hhc_clk = hhc_clk;
2959 /* FIXME OMAP2 don't release hhc & dc clock */
2960#if 0
2961 clk_disable(hhc_clk);
2962 clk_disable(dc_clk);
2963#endif
2964 }
2843 2965
2844 create_proc_file(); 2966 create_proc_file();
2845 device_add(&udc->gadget.dev); 2967 status = device_add(&udc->gadget.dev);
2846 return 0; 2968 if (!status)
2847 2969 return status;
2970 /* If fail, fall through */
2848#ifdef USE_ISO 2971#ifdef USE_ISO
2849cleanup3: 2972cleanup3:
2850 free_irq(pdev->resource[2].start, udc); 2973 free_irq(pdev->resource[2].start, udc);
@@ -2860,8 +2983,17 @@ cleanup1:
2860cleanup0: 2983cleanup0:
2861 if (xceiv) 2984 if (xceiv)
2862 put_device(xceiv->dev); 2985 put_device(xceiv->dev);
2986
2987 if (cpu_is_omap16xx() || cpu_is_omap24xx()) {
2988 clk_disable(hhc_clk);
2989 clk_disable(dc_clk);
2990 clk_put(hhc_clk);
2991 clk_put(dc_clk);
2992 }
2993
2863 release_mem_region(pdev->resource[0].start, 2994 release_mem_region(pdev->resource[0].start,
2864 pdev->resource[0].end - pdev->resource[0].start + 1); 2995 pdev->resource[0].end - pdev->resource[0].start + 1);
2996
2865 return status; 2997 return status;
2866} 2998}
2867 2999
@@ -2891,6 +3023,13 @@ static int __exit omap_udc_remove(struct platform_device *pdev)
2891 free_irq(pdev->resource[2].start, udc); 3023 free_irq(pdev->resource[2].start, udc);
2892 free_irq(pdev->resource[1].start, udc); 3024 free_irq(pdev->resource[1].start, udc);
2893 3025
3026 if (udc->dc_clk) {
3027 if (udc->clk_requested)
3028 omap_udc_enable_clock(0);
3029 clk_put(udc->hhc_clk);
3030 clk_put(udc->dc_clk);
3031 }
3032
2894 release_mem_region(pdev->resource[0].start, 3033 release_mem_region(pdev->resource[0].start,
2895 pdev->resource[0].end - pdev->resource[0].start + 1); 3034 pdev->resource[0].end - pdev->resource[0].start + 1);
2896 3035
diff --git a/drivers/usb/gadget/omap_udc.h b/drivers/usb/gadget/omap_udc.h
index 652ee4627344..1dc398bb9ab2 100644
--- a/drivers/usb/gadget/omap_udc.h
+++ b/drivers/usb/gadget/omap_udc.h
@@ -175,6 +175,9 @@ struct omap_udc {
175 unsigned ep0_reset_config:1; 175 unsigned ep0_reset_config:1;
176 unsigned ep0_setup:1; 176 unsigned ep0_setup:1;
177 struct completion *done; 177 struct completion *done;
178 struct clk *dc_clk;
179 struct clk *hhc_clk;
180 unsigned clk_requested:1;
178}; 181};
179 182
180/*-------------------------------------------------------------------------*/ 183/*-------------------------------------------------------------------------*/
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
index acd101caeeeb..e0d4c2358b39 100644
--- a/drivers/usb/host/uhci-hcd.c
+++ b/drivers/usb/host/uhci-hcd.c
@@ -209,24 +209,16 @@ static int resume_detect_interrupts_are_broken(struct uhci_hcd *uhci)
209 209
210static int remote_wakeup_is_broken(struct uhci_hcd *uhci) 210static int remote_wakeup_is_broken(struct uhci_hcd *uhci)
211{ 211{
212 static struct dmi_system_id broken_wakeup_table[] = {
213 {
214 .ident = "Asus A7V8X",
215 .matches = {
216 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK"),
217 DMI_MATCH(DMI_BOARD_NAME, "A7V8X"),
218 DMI_MATCH(DMI_BOARD_VERSION, "REV 1.xx"),
219 }
220 },
221 { }
222 };
223 int port; 212 int port;
213 char *sys_info;
214 static char bad_Asus_board[] = "A7V8X";
224 215
225 /* One of Asus's motherboards has a bug which causes it to 216 /* One of Asus's motherboards has a bug which causes it to
226 * wake up immediately from suspend-to-RAM if any of the ports 217 * wake up immediately from suspend-to-RAM if any of the ports
227 * are connected. In such cases we will not set EGSM. 218 * are connected. In such cases we will not set EGSM.
228 */ 219 */
229 if (dmi_check_system(broken_wakeup_table)) { 220 sys_info = dmi_get_system_info(DMI_BOARD_NAME);
221 if (sys_info && !strcmp(sys_info, bad_Asus_board)) {
230 for (port = 0; port < uhci->rh_numports; ++port) { 222 for (port = 0; port < uhci->rh_numports; ++port) {
231 if (inw(uhci->io_addr + USBPORTSC1 + port * 2) & 223 if (inw(uhci->io_addr + USBPORTSC1 + port * 2) &
232 USBPORTSC_CCS) 224 USBPORTSC_CCS)
@@ -265,7 +257,9 @@ __acquires(uhci->lock)
265 int_enable = USBINTR_RESUME; 257 int_enable = USBINTR_RESUME;
266 if (remote_wakeup_is_broken(uhci)) 258 if (remote_wakeup_is_broken(uhci))
267 egsm_enable = 0; 259 egsm_enable = 0;
268 if (resume_detect_interrupts_are_broken(uhci) || !egsm_enable) 260 if (resume_detect_interrupts_are_broken(uhci) || !egsm_enable ||
261 !device_may_wakeup(
262 &uhci_to_hcd(uhci)->self.root_hub->dev))
269 uhci->working_RD = int_enable = 0; 263 uhci->working_RD = int_enable = 0;
270 264
271 outw(int_enable, uhci->io_addr + USBINTR); 265 outw(int_enable, uhci->io_addr + USBINTR);
diff --git a/drivers/usb/input/Kconfig b/drivers/usb/input/Kconfig
index f877cd4f317a..c7d887540d8d 100644
--- a/drivers/usb/input/Kconfig
+++ b/drivers/usb/input/Kconfig
@@ -7,15 +7,13 @@ 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,
14 mice, joysticks, graphic tablets, or any other HID based devices 14 mice, joysticks, graphic tablets, or any other HID based devices
15 to your computer via USB. You also need to select HID Input layer 15 to your computer via USB, as well as Uninterruptible Power Supply
16 support (below) if you want to use keyboards, mice, joysticks and 16 (UPS) and monitor control devices.
17 the like ... as well as Uninterruptible Power Supply (UPS) and
18 monitor control devices.
19 17
20 You can't use this driver and the HIDBP (Boot Protocol) keyboard 18 You can't use this driver and the HIDBP (Boot Protocol) keyboard
21 and mouse drivers at the same time. More information is available: 19 and mouse drivers at the same time. More information is available:
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c
index 89fa6885709b..6e739efee6f7 100644
--- a/drivers/usb/input/hid-core.c
+++ b/drivers/usb/input/hid-core.c
@@ -106,18 +106,18 @@ static void hid_reset(struct work_struct *work)
106 106
107 if (test_bit(HID_CLEAR_HALT, &usbhid->iofl)) { 107 if (test_bit(HID_CLEAR_HALT, &usbhid->iofl)) {
108 dev_dbg(&usbhid->intf->dev, "clear halt\n"); 108 dev_dbg(&usbhid->intf->dev, "clear halt\n");
109 rc = usb_clear_halt(to_usb_device(hid->dev), usbhid->urbin->pipe); 109 rc = usb_clear_halt(hid_to_usb_dev(hid), usbhid->urbin->pipe);
110 clear_bit(HID_CLEAR_HALT, &usbhid->iofl); 110 clear_bit(HID_CLEAR_HALT, &usbhid->iofl);
111 hid_start_in(hid); 111 hid_start_in(hid);
112 } 112 }
113 113
114 else if (test_bit(HID_RESET_PENDING, &usbhid->iofl)) { 114 else if (test_bit(HID_RESET_PENDING, &usbhid->iofl)) {
115 dev_dbg(&usbhid->intf->dev, "resetting device\n"); 115 dev_dbg(&usbhid->intf->dev, "resetting device\n");
116 rc = rc_lock = usb_lock_device_for_reset(to_usb_device(hid->dev), usbhid->intf); 116 rc = rc_lock = usb_lock_device_for_reset(hid_to_usb_dev(hid), usbhid->intf);
117 if (rc_lock >= 0) { 117 if (rc_lock >= 0) {
118 rc = usb_reset_composite_device(to_usb_device(hid->dev), usbhid->intf); 118 rc = usb_reset_composite_device(hid_to_usb_dev(hid), usbhid->intf);
119 if (rc_lock) 119 if (rc_lock)
120 usb_unlock_device(to_usb_device(hid->dev)); 120 usb_unlock_device(hid_to_usb_dev(hid));
121 } 121 }
122 clear_bit(HID_RESET_PENDING, &usbhid->iofl); 122 clear_bit(HID_RESET_PENDING, &usbhid->iofl);
123 } 123 }
@@ -129,8 +129,8 @@ static void hid_reset(struct work_struct *work)
129 break; 129 break;
130 default: 130 default:
131 err("can't reset device, %s-%s/input%d, status %d", 131 err("can't reset device, %s-%s/input%d, status %d",
132 to_usb_device(hid->dev)->bus->bus_name, 132 hid_to_usb_dev(hid)->bus->bus_name,
133 to_usb_device(hid->dev)->devpath, 133 hid_to_usb_dev(hid)->devpath,
134 usbhid->ifnum, rc); 134 usbhid->ifnum, rc);
135 /* FALLTHROUGH */ 135 /* FALLTHROUGH */
136 case -EHOSTUNREACH: 136 case -EHOSTUNREACH:
@@ -217,8 +217,8 @@ static void hid_irq_in(struct urb *urb)
217 clear_bit(HID_IN_RUNNING, &usbhid->iofl); 217 clear_bit(HID_IN_RUNNING, &usbhid->iofl);
218 if (status != -EPERM) { 218 if (status != -EPERM) {
219 err("can't resubmit intr, %s-%s/input%d, status %d", 219 err("can't resubmit intr, %s-%s/input%d, status %d",
220 to_usb_device(hid->dev)->bus->bus_name, 220 hid_to_usb_dev(hid)->bus->bus_name,
221 to_usb_device(hid->dev)->devpath, 221 hid_to_usb_dev(hid)->devpath,
222 usbhid->ifnum, status); 222 usbhid->ifnum, status);
223 hid_io_error(hid); 223 hid_io_error(hid);
224 } 224 }
@@ -251,7 +251,7 @@ static int hid_submit_out(struct hid_device *hid)
251 251
252 hid_output_report(report, usbhid->outbuf); 252 hid_output_report(report, usbhid->outbuf);
253 usbhid->urbout->transfer_buffer_length = ((report->size - 1) >> 3) + 1 + (report->id > 0); 253 usbhid->urbout->transfer_buffer_length = ((report->size - 1) >> 3) + 1 + (report->id > 0);
254 usbhid->urbout->dev = to_usb_device(hid->dev); 254 usbhid->urbout->dev = hid_to_usb_dev(hid);
255 255
256 dbg("submitting out urb"); 256 dbg("submitting out urb");
257 257
@@ -276,13 +276,13 @@ static int hid_submit_ctrl(struct hid_device *hid)
276 len = ((report->size - 1) >> 3) + 1 + (report->id > 0); 276 len = ((report->size - 1) >> 3) + 1 + (report->id > 0);
277 if (dir == USB_DIR_OUT) { 277 if (dir == USB_DIR_OUT) {
278 hid_output_report(report, usbhid->ctrlbuf); 278 hid_output_report(report, usbhid->ctrlbuf);
279 usbhid->urbctrl->pipe = usb_sndctrlpipe(to_usb_device(hid->dev), 0); 279 usbhid->urbctrl->pipe = usb_sndctrlpipe(hid_to_usb_dev(hid), 0);
280 usbhid->urbctrl->transfer_buffer_length = len; 280 usbhid->urbctrl->transfer_buffer_length = len;
281 } else { 281 } else {
282 int maxpacket, padlen; 282 int maxpacket, padlen;
283 283
284 usbhid->urbctrl->pipe = usb_rcvctrlpipe(to_usb_device(hid->dev), 0); 284 usbhid->urbctrl->pipe = usb_rcvctrlpipe(hid_to_usb_dev(hid), 0);
285 maxpacket = usb_maxpacket(to_usb_device(hid->dev), usbhid->urbctrl->pipe, 0); 285 maxpacket = usb_maxpacket(hid_to_usb_dev(hid), usbhid->urbctrl->pipe, 0);
286 if (maxpacket > 0) { 286 if (maxpacket > 0) {
287 padlen = (len + maxpacket - 1) / maxpacket; 287 padlen = (len + maxpacket - 1) / maxpacket;
288 padlen *= maxpacket; 288 padlen *= maxpacket;
@@ -292,7 +292,7 @@ static int hid_submit_ctrl(struct hid_device *hid)
292 padlen = 0; 292 padlen = 0;
293 usbhid->urbctrl->transfer_buffer_length = padlen; 293 usbhid->urbctrl->transfer_buffer_length = padlen;
294 } 294 }
295 usbhid->urbctrl->dev = to_usb_device(hid->dev); 295 usbhid->urbctrl->dev = hid_to_usb_dev(hid);
296 296
297 usbhid->cr->bRequestType = USB_TYPE_CLASS | USB_RECIP_INTERFACE | dir; 297 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; 298 usbhid->cr->bRequest = (dir == USB_DIR_OUT) ? HID_REQ_SET_REPORT : HID_REQ_GET_REPORT;
@@ -582,6 +582,8 @@ void usbhid_init_reports(struct hid_device *hid)
582} 582}
583 583
584#define USB_VENDOR_ID_GTCO 0x078c 584#define USB_VENDOR_ID_GTCO 0x078c
585#define USB_VENDOR_ID_GTCO_IPANEL_1 0x08ca
586#define USB_VENDOR_ID_GTCO_IPANEL_2 0x5543
585#define USB_DEVICE_ID_GTCO_90 0x0090 587#define USB_DEVICE_ID_GTCO_90 0x0090
586#define USB_DEVICE_ID_GTCO_100 0x0100 588#define USB_DEVICE_ID_GTCO_100 0x0100
587#define USB_DEVICE_ID_GTCO_101 0x0101 589#define USB_DEVICE_ID_GTCO_101 0x0101
@@ -627,6 +629,9 @@ void usbhid_init_reports(struct hid_device *hid)
627#define USB_DEVICE_ID_GTCO_1004 0x1004 629#define USB_DEVICE_ID_GTCO_1004 0x1004
628#define USB_DEVICE_ID_GTCO_1005 0x1005 630#define USB_DEVICE_ID_GTCO_1005 0x1005
629#define USB_DEVICE_ID_GTCO_1006 0x1006 631#define USB_DEVICE_ID_GTCO_1006 0x1006
632#define USB_DEVICE_ID_GTCO_10 0x0010
633#define USB_DEVICE_ID_GTCO_8 0x0008
634#define USB_DEVICE_ID_GTCO_d 0x000d
630 635
631#define USB_VENDOR_ID_WACOM 0x056a 636#define USB_VENDOR_ID_WACOM 0x056a
632 637
@@ -875,6 +880,9 @@ static const struct hid_blacklist {
875 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1004, HID_QUIRK_IGNORE }, 880 { 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 }, 881 { 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 }, 882 { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006, HID_QUIRK_IGNORE },
883 { USB_VENDOR_ID_GTCO_IPANEL_1, USB_DEVICE_ID_GTCO_10, HID_QUIRK_IGNORE },
884 { USB_VENDOR_ID_GTCO_IPANEL_2, USB_DEVICE_ID_GTCO_8, HID_QUIRK_IGNORE },
885 { USB_VENDOR_ID_GTCO_IPANEL_2, USB_DEVICE_ID_GTCO_d, HID_QUIRK_IGNORE },
878 { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE }, 886 { 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 }, 887 { 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 }, 888 { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY, HID_QUIRK_IGNORE },
@@ -951,7 +959,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}, 959 { 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 }, 960 { 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 }, 961 { 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 }, 962 { 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 }, 963 { 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 }, 964 { 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 }, 965 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN },
@@ -1187,7 +1195,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf)
1187 1195
1188 hid->version = le16_to_cpu(hdesc->bcdHID); 1196 hid->version = le16_to_cpu(hdesc->bcdHID);
1189 hid->country = hdesc->bCountryCode; 1197 hid->country = hdesc->bCountryCode;
1190 hid->dev = &dev->dev; 1198 hid->dev = &intf->dev;
1191 usbhid->intf = intf; 1199 usbhid->intf = intf;
1192 usbhid->ifnum = interface->desc.bInterfaceNumber; 1200 usbhid->ifnum = interface->desc.bInterfaceNumber;
1193 1201
@@ -1282,7 +1290,7 @@ static void hid_disconnect(struct usb_interface *intf)
1282 usb_free_urb(usbhid->urbctrl); 1290 usb_free_urb(usbhid->urbctrl);
1283 usb_free_urb(usbhid->urbout); 1291 usb_free_urb(usbhid->urbout);
1284 1292
1285 hid_free_buffers(to_usb_device(hid->dev), hid); 1293 hid_free_buffers(hid_to_usb_dev(hid), hid);
1286 hid_free_device(hid); 1294 hid_free_device(hid);
1287} 1295}
1288 1296
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/misc/sisusbvga/sisusb_con.c b/drivers/usb/misc/sisusbvga/sisusb_con.c
index bf26c3c56990..9148694627d5 100644
--- a/drivers/usb/misc/sisusbvga/sisusb_con.c
+++ b/drivers/usb/misc/sisusbvga/sisusb_con.c
@@ -403,7 +403,7 @@ sisusbcon_putc(struct vc_data *c, int ch, int y, int x)
403 403
404 404
405 sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(x, y), 405 sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(x, y),
406 (u32)SISUSB_HADDR(x, y), 2, &written); 406 (long)SISUSB_HADDR(x, y), 2, &written);
407 407
408 mutex_unlock(&sisusb->lock); 408 mutex_unlock(&sisusb->lock);
409} 409}
@@ -438,7 +438,7 @@ sisusbcon_putcs(struct vc_data *c, const unsigned short *s,
438 } 438 }
439 439
440 sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(x, y), 440 sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(x, y),
441 (u32)SISUSB_HADDR(x, y), count * 2, &written); 441 (long)SISUSB_HADDR(x, y), count * 2, &written);
442 442
443 mutex_unlock(&sisusb->lock); 443 mutex_unlock(&sisusb->lock);
444} 444}
@@ -492,7 +492,7 @@ sisusbcon_clear(struct vc_data *c, int y, int x, int height, int width)
492 492
493 493
494 sisusb_copy_memory(sisusb, (unsigned char *)SISUSB_VADDR(x, y), 494 sisusb_copy_memory(sisusb, (unsigned char *)SISUSB_VADDR(x, y),
495 (u32)SISUSB_HADDR(x, y), length, &written); 495 (long)SISUSB_HADDR(x, y), length, &written);
496 496
497 mutex_unlock(&sisusb->lock); 497 mutex_unlock(&sisusb->lock);
498} 498}
@@ -564,7 +564,7 @@ sisusbcon_bmove(struct vc_data *c, int sy, int sx,
564 564
565 565
566 sisusb_copy_memory(sisusb, (unsigned char *)SISUSB_VADDR(dx, dy), 566 sisusb_copy_memory(sisusb, (unsigned char *)SISUSB_VADDR(dx, dy),
567 (u32)SISUSB_HADDR(dx, dy), length, &written); 567 (long)SISUSB_HADDR(dx, dy), length, &written);
568 568
569 mutex_unlock(&sisusb->lock); 569 mutex_unlock(&sisusb->lock);
570} 570}
@@ -612,7 +612,7 @@ sisusbcon_switch(struct vc_data *c)
612 length); 612 length);
613 613
614 sisusb_copy_memory(sisusb, (unsigned char *)c->vc_origin, 614 sisusb_copy_memory(sisusb, (unsigned char *)c->vc_origin,
615 (u32)SISUSB_HADDR(0, 0), 615 (long)SISUSB_HADDR(0, 0),
616 length, &written); 616 length, &written);
617 617
618 mutex_unlock(&sisusb->lock); 618 mutex_unlock(&sisusb->lock);
@@ -939,7 +939,7 @@ sisusbcon_scroll_area(struct vc_data *c, struct sisusb_usb_data *sisusb,
939 } 939 }
940 940
941 sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(0, t), 941 sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(0, t),
942 (u32)SISUSB_HADDR(0, t), length, &written); 942 (long)SISUSB_HADDR(0, t), length, &written);
943 943
944 mutex_unlock(&sisusb->lock); 944 mutex_unlock(&sisusb->lock);
945 945
diff --git a/drivers/usb/net/asix.c b/drivers/usb/net/asix.c
index 95e682e2c9d6..f538013965b0 100644
--- a/drivers/usb/net/asix.c
+++ b/drivers/usb/net/asix.c
@@ -920,7 +920,7 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
920 goto out2; 920 goto out2;
921 921
922 if ((ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT, 922 if ((ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT,
923 0x0000, 0, 0, buf)) < 0) { 923 1, 0, 0, buf)) < 0) {
924 dbg("Select PHY #1 failed: %d", ret); 924 dbg("Select PHY #1 failed: %d", ret);
925 goto out2; 925 goto out2;
926 } 926 }
diff --git a/drivers/usb/serial/funsoft.c b/drivers/usb/serial/funsoft.c
index d3be9214c7c1..31501c9361b9 100644
--- a/drivers/usb/serial/funsoft.c
+++ b/drivers/usb/serial/funsoft.c
@@ -32,7 +32,7 @@ static int funsoft_ioctl(struct usb_serial_port *port, struct file *file,
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
34 if (cmd == TCSETSF) { 34 if (cmd == TCSETSF) {
35 if (user_termios_to_kernel_termios(&t, (void __user *)arg)) 35 if (user_termios_to_kernel_termios(&t, (struct termios __user *)arg))
36 return -EFAULT; 36 return -EFAULT;
37 37
38 dbg("%s - iflag:%x oflag:%x cflag:%x lflag:%x", __FUNCTION__, 38 dbg("%s - iflag:%x oflag:%x cflag:%x lflag:%x", __FUNCTION__,
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 819266b7e2f8..5ca04e82ea19 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -625,6 +625,9 @@ static int option_send_setup(struct usb_serial_port *port)
625 625
626 dbg("%s", __FUNCTION__); 626 dbg("%s", __FUNCTION__);
627 627
628 if (port->number != 0)
629 return 0;
630
628 portdata = usb_get_serial_port_data(port); 631 portdata = usb_get_serial_port_data(port);
629 632
630 if (port->tty) { 633 if (port->tty) {
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index 5fe7ff441a09..cddef3efba0a 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -728,7 +728,7 @@ UNUSUAL_DEV( 0x05ac, 0x1204, 0x0000, 0x9999,
728 "Apple", 728 "Apple",
729 "iPod", 729 "iPod",
730 US_SC_DEVICE, US_PR_DEVICE, NULL, 730 US_SC_DEVICE, US_PR_DEVICE, NULL,
731 US_FL_FIX_CAPACITY ), 731 US_FL_FIX_CAPACITY | US_FL_NOT_LOCKABLE ),
732 732
733UNUSUAL_DEV( 0x05ac, 0x1205, 0x0000, 0x9999, 733UNUSUAL_DEV( 0x05ac, 0x1205, 0x0000, 0x9999,
734 "Apple", 734 "Apple",
@@ -1358,6 +1358,21 @@ UNUSUAL_DEV( 0x1370, 0x6828, 0x0110, 0x0110,
1358 US_SC_DEVICE, US_PR_DEVICE, NULL, 1358 US_SC_DEVICE, US_PR_DEVICE, NULL,
1359 US_FL_IGNORE_RESIDUE ), 1359 US_FL_IGNORE_RESIDUE ),
1360 1360
1361/* Reported by Francesco Foresti <frafore@tiscali.it> */
1362UNUSUAL_DEV( 0x14cd, 0x6600, 0x0201, 0x0201,
1363 "Super Top",
1364 "IDE DEVICE",
1365 US_SC_DEVICE, US_PR_DEVICE, NULL,
1366 US_FL_IGNORE_RESIDUE ),
1367
1368/* Reported by Robert Schedel <r.schedel@yahoo.de>
1369 * Note: this is a 'super top' device like the above 14cd/6600 device */
1370UNUSUAL_DEV( 0x1652, 0x6600, 0x0201, 0x0201,
1371 "Teac",
1372 "HD-35PUK-B",
1373 US_SC_DEVICE, US_PR_DEVICE, NULL,
1374 US_FL_IGNORE_RESIDUE ),
1375
1361/* patch submitted by Davide Perini <perini.davide@dpsoftware.org> 1376/* patch submitted by Davide Perini <perini.davide@dpsoftware.org>
1362 * and Renato Perini <rperini@email.it> 1377 * and Renato Perini <rperini@email.it>
1363 */ 1378 */
diff --git a/drivers/video/backlight/corgi_bl.c b/drivers/video/backlight/corgi_bl.c
index 61587ca2cdbb..fde1d9518123 100644
--- a/drivers/video/backlight/corgi_bl.c
+++ b/drivers/video/backlight/corgi_bl.c
@@ -121,7 +121,7 @@ static int corgibl_probe(struct platform_device *pdev)
121 machinfo->limit_mask = -1; 121 machinfo->limit_mask = -1;
122 122
123 corgi_backlight_device = backlight_device_register ("corgi-bl", 123 corgi_backlight_device = backlight_device_register ("corgi-bl",
124 NULL, &corgibl_data); 124 &pdev->dev, NULL, &corgibl_data);
125 if (IS_ERR (corgi_backlight_device)) 125 if (IS_ERR (corgi_backlight_device))
126 return PTR_ERR (corgi_backlight_device); 126 return PTR_ERR (corgi_backlight_device);
127 127
diff --git a/drivers/video/backlight/hp680_bl.c b/drivers/video/backlight/hp680_bl.c
index 1c569fb543ae..c07d8207fb54 100644
--- a/drivers/video/backlight/hp680_bl.c
+++ b/drivers/video/backlight/hp680_bl.c
@@ -105,7 +105,7 @@ static struct backlight_properties hp680bl_data = {
105static int __init hp680bl_probe(struct platform_device *dev) 105static int __init hp680bl_probe(struct platform_device *dev)
106{ 106{
107 hp680_backlight_device = backlight_device_register ("hp680-bl", 107 hp680_backlight_device = backlight_device_register ("hp680-bl",
108 NULL, &hp680bl_data); 108 &dev->dev, NULL, &hp680bl_data);
109 if (IS_ERR (hp680_backlight_device)) 109 if (IS_ERR (hp680_backlight_device))
110 return PTR_ERR (hp680_backlight_device); 110 return PTR_ERR (hp680_backlight_device);
111 111
diff --git a/drivers/video/backlight/locomolcd.c b/drivers/video/backlight/locomolcd.c
index 2d7905410b2a..fc812d96c31d 100644
--- a/drivers/video/backlight/locomolcd.c
+++ b/drivers/video/backlight/locomolcd.c
@@ -184,7 +184,7 @@ static int locomolcd_probe(struct locomo_dev *ldev)
184 184
185 local_irq_restore(flags); 185 local_irq_restore(flags);
186 186
187 locomolcd_bl_device = backlight_device_register("locomo-bl", NULL, &locomobl_data); 187 locomolcd_bl_device = backlight_device_register("locomo-bl", &ldev->dev, NULL, &locomobl_data);
188 188
189 if (IS_ERR (locomolcd_bl_device)) 189 if (IS_ERR (locomolcd_bl_device))
190 return PTR_ERR (locomolcd_bl_device); 190 return PTR_ERR (locomolcd_bl_device);
diff --git a/fs/adfs/dir_f.c b/fs/adfs/dir_f.c
index bbfc86259272..b9b2b27b68c3 100644
--- a/fs/adfs/dir_f.c
+++ b/fs/adfs/dir_f.c
@@ -53,7 +53,7 @@ static inline int adfs_readname(char *buf, char *ptr, int maxlen)
53{ 53{
54 char *old_buf = buf; 54 char *old_buf = buf;
55 55
56 while (*ptr >= ' ' && maxlen--) { 56 while ((unsigned char)*ptr >= ' ' && maxlen--) {
57 if (*ptr == '/') 57 if (*ptr == '/')
58 *buf++ = '.'; 58 *buf++ = '.';
59 else 59 else
diff --git a/fs/bad_inode.c b/fs/bad_inode.c
index 34e6d7b220c3..869f5193ecc2 100644
--- a/fs/bad_inode.c
+++ b/fs/bad_inode.c
@@ -14,59 +14,307 @@
14#include <linux/time.h> 14#include <linux/time.h>
15#include <linux/smp_lock.h> 15#include <linux/smp_lock.h>
16#include <linux/namei.h> 16#include <linux/namei.h>
17#include <linux/poll.h>
17 18
18static int return_EIO(void) 19
20static loff_t bad_file_llseek(struct file *file, loff_t offset, int origin)
21{
22 return -EIO;
23}
24
25static ssize_t bad_file_read(struct file *filp, char __user *buf,
26 size_t size, loff_t *ppos)
27{
28 return -EIO;
29}
30
31static ssize_t bad_file_write(struct file *filp, const char __user *buf,
32 size_t siz, loff_t *ppos)
33{
34 return -EIO;
35}
36
37static ssize_t bad_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
38 unsigned long nr_segs, loff_t pos)
39{
40 return -EIO;
41}
42
43static ssize_t bad_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
44 unsigned long nr_segs, loff_t pos)
45{
46 return -EIO;
47}
48
49static int bad_file_readdir(struct file *filp, void *dirent, filldir_t filldir)
50{
51 return -EIO;
52}
53
54static unsigned int bad_file_poll(struct file *filp, poll_table *wait)
55{
56 return POLLERR;
57}
58
59static int bad_file_ioctl (struct inode *inode, struct file *filp,
60 unsigned int cmd, unsigned long arg)
61{
62 return -EIO;
63}
64
65static long bad_file_unlocked_ioctl(struct file *file, unsigned cmd,
66 unsigned long arg)
67{
68 return -EIO;
69}
70
71static long bad_file_compat_ioctl(struct file *file, unsigned int cmd,
72 unsigned long arg)
73{
74 return -EIO;
75}
76
77static int bad_file_mmap(struct file *file, struct vm_area_struct *vma)
78{
79 return -EIO;
80}
81
82static int bad_file_open(struct inode *inode, struct file *filp)
83{
84 return -EIO;
85}
86
87static int bad_file_flush(struct file *file, fl_owner_t id)
88{
89 return -EIO;
90}
91
92static int bad_file_release(struct inode *inode, struct file *filp)
93{
94 return -EIO;
95}
96
97static int bad_file_fsync(struct file *file, struct dentry *dentry,
98 int datasync)
99{
100 return -EIO;
101}
102
103static int bad_file_aio_fsync(struct kiocb *iocb, int datasync)
104{
105 return -EIO;
106}
107
108static int bad_file_fasync(int fd, struct file *filp, int on)
109{
110 return -EIO;
111}
112
113static int bad_file_lock(struct file *file, int cmd, struct file_lock *fl)
114{
115 return -EIO;
116}
117
118static ssize_t bad_file_sendfile(struct file *in_file, loff_t *ppos,
119 size_t count, read_actor_t actor, void *target)
120{
121 return -EIO;
122}
123
124static ssize_t bad_file_sendpage(struct file *file, struct page *page,
125 int off, size_t len, loff_t *pos, int more)
126{
127 return -EIO;
128}
129
130static unsigned long bad_file_get_unmapped_area(struct file *file,
131 unsigned long addr, unsigned long len,
132 unsigned long pgoff, unsigned long flags)
133{
134 return -EIO;
135}
136
137static int bad_file_check_flags(int flags)
19{ 138{
20 return -EIO; 139 return -EIO;
21} 140}
22 141
23#define EIO_ERROR ((void *) (return_EIO)) 142static int bad_file_dir_notify(struct file *file, unsigned long arg)
143{
144 return -EIO;
145}
146
147static int bad_file_flock(struct file *filp, int cmd, struct file_lock *fl)
148{
149 return -EIO;
150}
151
152static ssize_t bad_file_splice_write(struct pipe_inode_info *pipe,
153 struct file *out, loff_t *ppos, size_t len,
154 unsigned int flags)
155{
156 return -EIO;
157}
158
159static ssize_t bad_file_splice_read(struct file *in, loff_t *ppos,
160 struct pipe_inode_info *pipe, size_t len,
161 unsigned int flags)
162{
163 return -EIO;
164}
24 165
25static const struct file_operations bad_file_ops = 166static const struct file_operations bad_file_ops =
26{ 167{
27 .llseek = EIO_ERROR, 168 .llseek = bad_file_llseek,
28 .aio_read = EIO_ERROR, 169 .read = bad_file_read,
29 .read = EIO_ERROR, 170 .write = bad_file_write,
30 .write = EIO_ERROR, 171 .aio_read = bad_file_aio_read,
31 .aio_write = EIO_ERROR, 172 .aio_write = bad_file_aio_write,
32 .readdir = EIO_ERROR, 173 .readdir = bad_file_readdir,
33 .poll = EIO_ERROR, 174 .poll = bad_file_poll,
34 .ioctl = EIO_ERROR, 175 .ioctl = bad_file_ioctl,
35 .mmap = EIO_ERROR, 176 .unlocked_ioctl = bad_file_unlocked_ioctl,
36 .open = EIO_ERROR, 177 .compat_ioctl = bad_file_compat_ioctl,
37 .flush = EIO_ERROR, 178 .mmap = bad_file_mmap,
38 .release = EIO_ERROR, 179 .open = bad_file_open,
39 .fsync = EIO_ERROR, 180 .flush = bad_file_flush,
40 .aio_fsync = EIO_ERROR, 181 .release = bad_file_release,
41 .fasync = EIO_ERROR, 182 .fsync = bad_file_fsync,
42 .lock = EIO_ERROR, 183 .aio_fsync = bad_file_aio_fsync,
43 .sendfile = EIO_ERROR, 184 .fasync = bad_file_fasync,
44 .sendpage = EIO_ERROR, 185 .lock = bad_file_lock,
45 .get_unmapped_area = EIO_ERROR, 186 .sendfile = bad_file_sendfile,
187 .sendpage = bad_file_sendpage,
188 .get_unmapped_area = bad_file_get_unmapped_area,
189 .check_flags = bad_file_check_flags,
190 .dir_notify = bad_file_dir_notify,
191 .flock = bad_file_flock,
192 .splice_write = bad_file_splice_write,
193 .splice_read = bad_file_splice_read,
46}; 194};
47 195
196static int bad_inode_create (struct inode *dir, struct dentry *dentry,
197 int mode, struct nameidata *nd)
198{
199 return -EIO;
200}
201
202static struct dentry *bad_inode_lookup(struct inode *dir,
203 struct dentry *dentry, struct nameidata *nd)
204{
205 return ERR_PTR(-EIO);
206}
207
208static int bad_inode_link (struct dentry *old_dentry, struct inode *dir,
209 struct dentry *dentry)
210{
211 return -EIO;
212}
213
214static int bad_inode_unlink(struct inode *dir, struct dentry *dentry)
215{
216 return -EIO;
217}
218
219static int bad_inode_symlink (struct inode *dir, struct dentry *dentry,
220 const char *symname)
221{
222 return -EIO;
223}
224
225static int bad_inode_mkdir(struct inode *dir, struct dentry *dentry,
226 int mode)
227{
228 return -EIO;
229}
230
231static int bad_inode_rmdir (struct inode *dir, struct dentry *dentry)
232{
233 return -EIO;
234}
235
236static int bad_inode_mknod (struct inode *dir, struct dentry *dentry,
237 int mode, dev_t rdev)
238{
239 return -EIO;
240}
241
242static int bad_inode_rename (struct inode *old_dir, struct dentry *old_dentry,
243 struct inode *new_dir, struct dentry *new_dentry)
244{
245 return -EIO;
246}
247
248static int bad_inode_readlink(struct dentry *dentry, char __user *buffer,
249 int buflen)
250{
251 return -EIO;
252}
253
254static int bad_inode_permission(struct inode *inode, int mask,
255 struct nameidata *nd)
256{
257 return -EIO;
258}
259
260static int bad_inode_getattr(struct vfsmount *mnt, struct dentry *dentry,
261 struct kstat *stat)
262{
263 return -EIO;
264}
265
266static int bad_inode_setattr(struct dentry *direntry, struct iattr *attrs)
267{
268 return -EIO;
269}
270
271static int bad_inode_setxattr(struct dentry *dentry, const char *name,
272 const void *value, size_t size, int flags)
273{
274 return -EIO;
275}
276
277static ssize_t bad_inode_getxattr(struct dentry *dentry, const char *name,
278 void *buffer, size_t size)
279{
280 return -EIO;
281}
282
283static ssize_t bad_inode_listxattr(struct dentry *dentry, char *buffer,
284 size_t buffer_size)
285{
286 return -EIO;
287}
288
289static int bad_inode_removexattr(struct dentry *dentry, const char *name)
290{
291 return -EIO;
292}
293
48static struct inode_operations bad_inode_ops = 294static struct inode_operations bad_inode_ops =
49{ 295{
50 .create = EIO_ERROR, 296 .create = bad_inode_create,
51 .lookup = EIO_ERROR, 297 .lookup = bad_inode_lookup,
52 .link = EIO_ERROR, 298 .link = bad_inode_link,
53 .unlink = EIO_ERROR, 299 .unlink = bad_inode_unlink,
54 .symlink = EIO_ERROR, 300 .symlink = bad_inode_symlink,
55 .mkdir = EIO_ERROR, 301 .mkdir = bad_inode_mkdir,
56 .rmdir = EIO_ERROR, 302 .rmdir = bad_inode_rmdir,
57 .mknod = EIO_ERROR, 303 .mknod = bad_inode_mknod,
58 .rename = EIO_ERROR, 304 .rename = bad_inode_rename,
59 .readlink = EIO_ERROR, 305 .readlink = bad_inode_readlink,
60 /* follow_link must be no-op, otherwise unmounting this inode 306 /* follow_link must be no-op, otherwise unmounting this inode
61 won't work */ 307 won't work */
62 .truncate = EIO_ERROR, 308 /* put_link returns void */
63 .permission = EIO_ERROR, 309 /* truncate returns void */
64 .getattr = EIO_ERROR, 310 .permission = bad_inode_permission,
65 .setattr = EIO_ERROR, 311 .getattr = bad_inode_getattr,
66 .setxattr = EIO_ERROR, 312 .setattr = bad_inode_setattr,
67 .getxattr = EIO_ERROR, 313 .setxattr = bad_inode_setxattr,
68 .listxattr = EIO_ERROR, 314 .getxattr = bad_inode_getxattr,
69 .removexattr = EIO_ERROR, 315 .listxattr = bad_inode_listxattr,
316 .removexattr = bad_inode_removexattr,
317 /* truncate_range returns void */
70}; 318};
71 319
72 320
@@ -88,7 +336,7 @@ static struct inode_operations bad_inode_ops =
88 * on it to fail from this point on. 336 * on it to fail from this point on.
89 */ 337 */
90 338
91void make_bad_inode(struct inode * inode) 339void make_bad_inode(struct inode *inode)
92{ 340{
93 remove_inode_hash(inode); 341 remove_inode_hash(inode);
94 342
@@ -113,7 +361,7 @@ EXPORT_SYMBOL(make_bad_inode);
113 * Returns true if the inode in question has been marked as bad. 361 * Returns true if the inode in question has been marked as bad.
114 */ 362 */
115 363
116int is_bad_inode(struct inode * inode) 364int is_bad_inode(struct inode *inode)
117{ 365{
118 return (inode->i_op == &bad_inode_ops); 366 return (inode->i_op == &bad_inode_ops);
119} 367}
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index d3adfd353ff9..7cb28720f90e 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -854,13 +854,7 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
854 * default mmap base, as well as whatever program they 854 * default mmap base, as well as whatever program they
855 * might try to exec. This is because the brk will 855 * might try to exec. This is because the brk will
856 * follow the loader, and is not movable. */ 856 * follow the loader, and is not movable. */
857 if (current->flags & PF_RANDOMIZE) 857 load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
858 load_bias = randomize_range(0x10000,
859 ELF_ET_DYN_BASE,
860 0);
861 else
862 load_bias = ELF_ET_DYN_BASE;
863 load_bias = ELF_PAGESTART(load_bias - vaddr);
864 } 858 }
865 859
866 error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt, 860 error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 1715d6b5f411..8b18e43b82fe 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -411,7 +411,7 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
411 { 411 {
412 memset(bdev, 0, sizeof(*bdev)); 412 memset(bdev, 0, sizeof(*bdev));
413 mutex_init(&bdev->bd_mutex); 413 mutex_init(&bdev->bd_mutex);
414 mutex_init(&bdev->bd_mount_mutex); 414 sema_init(&bdev->bd_mount_sem, 1);
415 INIT_LIST_HEAD(&bdev->bd_inodes); 415 INIT_LIST_HEAD(&bdev->bd_inodes);
416 INIT_LIST_HEAD(&bdev->bd_list); 416 INIT_LIST_HEAD(&bdev->bd_list);
417#ifdef CONFIG_SYSFS 417#ifdef CONFIG_SYSFS
diff --git a/fs/buffer.c b/fs/buffer.c
index 263f88e4dffb..3b116078b4c3 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -180,7 +180,7 @@ int fsync_bdev(struct block_device *bdev)
180 * freeze_bdev -- lock a filesystem and force it into a consistent state 180 * freeze_bdev -- lock a filesystem and force it into a consistent state
181 * @bdev: blockdevice to lock 181 * @bdev: blockdevice to lock
182 * 182 *
183 * This takes the block device bd_mount_mutex to make sure no new mounts 183 * This takes the block device bd_mount_sem to make sure no new mounts
184 * happen on bdev until thaw_bdev() is called. 184 * happen on bdev until thaw_bdev() is called.
185 * If a superblock is found on this device, we take the s_umount semaphore 185 * If a superblock is found on this device, we take the s_umount semaphore
186 * on it to make sure nobody unmounts until the snapshot creation is done. 186 * on it to make sure nobody unmounts until the snapshot creation is done.
@@ -189,7 +189,7 @@ struct super_block *freeze_bdev(struct block_device *bdev)
189{ 189{
190 struct super_block *sb; 190 struct super_block *sb;
191 191
192 mutex_lock(&bdev->bd_mount_mutex); 192 down(&bdev->bd_mount_sem);
193 sb = get_super(bdev); 193 sb = get_super(bdev);
194 if (sb && !(sb->s_flags & MS_RDONLY)) { 194 if (sb && !(sb->s_flags & MS_RDONLY)) {
195 sb->s_frozen = SB_FREEZE_WRITE; 195 sb->s_frozen = SB_FREEZE_WRITE;
@@ -231,7 +231,7 @@ void thaw_bdev(struct block_device *bdev, struct super_block *sb)
231 drop_super(sb); 231 drop_super(sb);
232 } 232 }
233 233
234 mutex_unlock(&bdev->bd_mount_mutex); 234 up(&bdev->bd_mount_sem);
235} 235}
236EXPORT_SYMBOL(thaw_bdev); 236EXPORT_SYMBOL(thaw_bdev);
237 237
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index d14e139d2674..ee80b8a5e7bc 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -867,9 +867,9 @@ static int gfs2_get_sb_meta(struct file_system_type *fs_type, int flags,
867 error = -EBUSY; 867 error = -EBUSY;
868 goto error; 868 goto error;
869 } 869 }
870 mutex_lock(&sb->s_bdev->bd_mount_mutex); 870 down(&sb->s_bdev->bd_mount_sem);
871 new = sget(fs_type, test_bdev_super, set_bdev_super, sb->s_bdev); 871 new = sget(fs_type, test_bdev_super, set_bdev_super, sb->s_bdev);
872 mutex_unlock(&sb->s_bdev->bd_mount_mutex); 872 up(&sb->s_bdev->bd_mount_sem);
873 if (IS_ERR(new)) { 873 if (IS_ERR(new)) {
874 error = PTR_ERR(new); 874 error = PTR_ERR(new);
875 goto error; 875 goto error;
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 0dd6be346aa7..fab20d06d936 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -315,14 +315,13 @@ static void nfs_invalidate_page(struct page *page, unsigned long offset)
315 315
316static int nfs_release_page(struct page *page, gfp_t gfp) 316static int nfs_release_page(struct page *page, gfp_t gfp)
317{ 317{
318 /* 318 /* If PagePrivate() is set, then the page is not freeable */
319 * Avoid deadlock on nfs_wait_on_request(). 319 return 0;
320 */ 320}
321 if (!(gfp & __GFP_FS)) 321
322 return 0; 322static int nfs_launder_page(struct page *page)
323 /* Hack... Force nfs_wb_page() to write out the page */ 323{
324 SetPageDirty(page); 324 return nfs_wb_page(page->mapping->host, page);
325 return !nfs_wb_page(page->mapping->host, page);
326} 325}
327 326
328const struct address_space_operations nfs_file_aops = { 327const struct address_space_operations nfs_file_aops = {
@@ -338,6 +337,7 @@ const struct address_space_operations nfs_file_aops = {
338#ifdef CONFIG_NFS_DIRECTIO 337#ifdef CONFIG_NFS_DIRECTIO
339 .direct_IO = nfs_direct_IO, 338 .direct_IO = nfs_direct_IO,
340#endif 339#endif
340 .launder_page = nfs_launder_page,
341}; 341};
342 342
343static ssize_t nfs_file_write(struct kiocb *iocb, const struct iovec *iov, 343static ssize_t nfs_file_write(struct kiocb *iocb, const struct iovec *iov,
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/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/proc/proc_misc.c b/fs/proc/proc_misc.c
index 92ea7743fe8f..b37ce33f67ea 100644
--- a/fs/proc/proc_misc.c
+++ b/fs/proc/proc_misc.c
@@ -47,7 +47,6 @@
47#include <linux/vmalloc.h> 47#include <linux/vmalloc.h>
48#include <linux/crash_dump.h> 48#include <linux/crash_dump.h>
49#include <linux/pid_namespace.h> 49#include <linux/pid_namespace.h>
50#include <linux/compile.h>
51#include <asm/uaccess.h> 50#include <asm/uaccess.h>
52#include <asm/pgtable.h> 51#include <asm/pgtable.h>
53#include <asm/io.h> 52#include <asm/io.h>
@@ -254,12 +253,7 @@ static int version_read_proc(char *page, char **start, off_t off,
254{ 253{
255 int len; 254 int len;
256 255
257 /* FIXED STRING! Don't touch! */ 256 len = snprintf(page, PAGE_SIZE, linux_proc_banner,
258 len = snprintf(page, PAGE_SIZE,
259 "%s version %s"
260 " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")"
261 " (" LINUX_COMPILER ")"
262 " %s\n",
263 utsname()->sysname, 257 utsname()->sysname,
264 utsname()->release, 258 utsname()->release,
265 utsname()->version); 259 utsname()->version);
diff --git a/fs/super.c b/fs/super.c
index f961e0307997..3e7458c2bb76 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -753,9 +753,9 @@ int get_sb_bdev(struct file_system_type *fs_type,
753 * will protect the lockfs code from trying to start a snapshot 753 * will protect the lockfs code from trying to start a snapshot
754 * while we are mounting 754 * while we are mounting
755 */ 755 */
756 mutex_lock(&bdev->bd_mount_mutex); 756 down(&bdev->bd_mount_sem);
757 s = sget(fs_type, test_bdev_super, set_bdev_super, bdev); 757 s = sget(fs_type, test_bdev_super, set_bdev_super, bdev);
758 mutex_unlock(&bdev->bd_mount_mutex); 758 up(&bdev->bd_mount_sem);
759 if (IS_ERR(s)) 759 if (IS_ERR(s))
760 goto error_s; 760 goto error_s;
761 761
diff --git a/fs/ufs/balloc.c b/fs/ufs/balloc.c
index b82381475779..2e0021e8f366 100644
--- a/fs/ufs/balloc.c
+++ b/fs/ufs/balloc.c
@@ -275,6 +275,25 @@ static void ufs_change_blocknr(struct inode *inode, unsigned int baseblk,
275 UFSD("EXIT\n"); 275 UFSD("EXIT\n");
276} 276}
277 277
278static void ufs_clear_frags(struct inode *inode, sector_t beg, unsigned int n,
279 int sync)
280{
281 struct buffer_head *bh;
282 sector_t end = beg + n;
283
284 for (; beg < end; ++beg) {
285 bh = sb_getblk(inode->i_sb, beg);
286 lock_buffer(bh);
287 memset(bh->b_data, 0, inode->i_sb->s_blocksize);
288 set_buffer_uptodate(bh);
289 mark_buffer_dirty(bh);
290 unlock_buffer(bh);
291 if (IS_SYNC(inode) || sync)
292 sync_dirty_buffer(bh);
293 brelse(bh);
294 }
295}
296
278unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment, 297unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
279 unsigned goal, unsigned count, int * err, struct page *locked_page) 298 unsigned goal, unsigned count, int * err, struct page *locked_page)
280{ 299{
@@ -350,6 +369,8 @@ unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
350 *p = cpu_to_fs32(sb, result); 369 *p = cpu_to_fs32(sb, result);
351 *err = 0; 370 *err = 0;
352 UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count); 371 UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count);
372 ufs_clear_frags(inode, result + oldcount, newcount - oldcount,
373 locked_page != NULL);
353 } 374 }
354 unlock_super(sb); 375 unlock_super(sb);
355 UFSD("EXIT, result %u\n", result); 376 UFSD("EXIT, result %u\n", result);
@@ -363,6 +384,8 @@ unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
363 if (result) { 384 if (result) {
364 *err = 0; 385 *err = 0;
365 UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count); 386 UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count);
387 ufs_clear_frags(inode, result + oldcount, newcount - oldcount,
388 locked_page != NULL);
366 unlock_super(sb); 389 unlock_super(sb);
367 UFSD("EXIT, result %u\n", result); 390 UFSD("EXIT, result %u\n", result);
368 return result; 391 return result;
@@ -398,6 +421,8 @@ unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
398 *p = cpu_to_fs32(sb, result); 421 *p = cpu_to_fs32(sb, result);
399 *err = 0; 422 *err = 0;
400 UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count); 423 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);
401 unlock_super(sb); 426 unlock_super(sb);
402 if (newcount < request) 427 if (newcount < request)
403 ufs_free_fragments (inode, result + newcount, request - newcount); 428 ufs_free_fragments (inode, result + newcount, request - newcount);
diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
index ee1eaa6f4ec2..2fbab0aab688 100644
--- a/fs/ufs/inode.c
+++ b/fs/ufs/inode.c
@@ -156,36 +156,6 @@ out:
156 return ret; 156 return ret;
157} 157}
158 158
159static void ufs_clear_frag(struct inode *inode, struct buffer_head *bh)
160{
161 lock_buffer(bh);
162 memset(bh->b_data, 0, inode->i_sb->s_blocksize);
163 set_buffer_uptodate(bh);
164 mark_buffer_dirty(bh);
165 unlock_buffer(bh);
166 if (IS_SYNC(inode))
167 sync_dirty_buffer(bh);
168}
169
170static struct buffer_head *
171ufs_clear_frags(struct inode *inode, sector_t beg,
172 unsigned int n, sector_t want)
173{
174 struct buffer_head *res = NULL, *bh;
175 sector_t end = beg + n;
176
177 for (; beg < end; ++beg) {
178 bh = sb_getblk(inode->i_sb, beg);
179 ufs_clear_frag(inode, bh);
180 if (want != beg)
181 brelse(bh);
182 else
183 res = bh;
184 }
185 BUG_ON(!res);
186 return res;
187}
188
189/** 159/**
190 * ufs_inode_getfrag() - allocate new fragment(s) 160 * ufs_inode_getfrag() - allocate new fragment(s)
191 * @inode - pointer to inode 161 * @inode - pointer to inode
@@ -302,7 +272,7 @@ repeat:
302 } 272 }
303 273
304 if (!phys) { 274 if (!phys) {
305 result = ufs_clear_frags(inode, tmp, required, tmp + blockoff); 275 result = sb_getblk(sb, tmp + blockoff);
306 } else { 276 } else {
307 *phys = tmp + blockoff; 277 *phys = tmp + blockoff;
308 result = NULL; 278 result = NULL;
@@ -403,8 +373,7 @@ repeat:
403 373
404 374
405 if (!phys) { 375 if (!phys) {
406 result = ufs_clear_frags(inode, tmp, uspi->s_fpb, 376 result = sb_getblk(sb, tmp + blockoff);
407 tmp + blockoff);
408 } else { 377 } else {
409 *phys = tmp + blockoff; 378 *phys = tmp + blockoff;
410 *new = 1; 379 *new = 1;
@@ -471,13 +440,13 @@ int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buffer_head
471#define GET_INODE_DATABLOCK(x) \ 440#define GET_INODE_DATABLOCK(x) \
472 ufs_inode_getfrag(inode, x, fragment, 1, &err, &phys, &new, bh_result->b_page) 441 ufs_inode_getfrag(inode, x, fragment, 1, &err, &phys, &new, bh_result->b_page)
473#define GET_INODE_PTR(x) \ 442#define GET_INODE_PTR(x) \
474 ufs_inode_getfrag(inode, x, fragment, uspi->s_fpb, &err, NULL, NULL, bh_result->b_page) 443 ufs_inode_getfrag(inode, x, fragment, uspi->s_fpb, &err, NULL, NULL, NULL)
475#define GET_INDIRECT_DATABLOCK(x) \ 444#define GET_INDIRECT_DATABLOCK(x) \
476 ufs_inode_getblock(inode, bh, x, fragment, \ 445 ufs_inode_getblock(inode, bh, x, fragment, \
477 &err, &phys, &new, bh_result->b_page); 446 &err, &phys, &new, bh_result->b_page)
478#define GET_INDIRECT_PTR(x) \ 447#define GET_INDIRECT_PTR(x) \
479 ufs_inode_getblock(inode, bh, x, fragment, \ 448 ufs_inode_getblock(inode, bh, x, fragment, \
480 &err, NULL, NULL, bh_result->b_page); 449 &err, NULL, NULL, NULL)
481 450
482 if (ptr < UFS_NDIR_FRAGMENT) { 451 if (ptr < UFS_NDIR_FRAGMENT) {
483 bh = GET_INODE_DATABLOCK(ptr); 452 bh = GET_INODE_DATABLOCK(ptr);
diff --git a/include/acpi/acconfig.h b/include/acpi/acconfig.h
index 9e6c23c360b2..ebc1f697615a 100644
--- a/include/acpi/acconfig.h
+++ b/include/acpi/acconfig.h
@@ -105,7 +105,7 @@
105 105
106/* Maximum object reference count (detects object deletion issues) */ 106/* Maximum object reference count (detects object deletion issues) */
107 107
108#define ACPI_MAX_REFERENCE_COUNT 0x800 108#define ACPI_MAX_REFERENCE_COUNT 0x1000
109 109
110/* Size of cached memory mapping for system memory operation region */ 110/* Size of cached memory mapping for system memory operation region */
111 111
diff --git a/include/asm-alpha/posix_types.h b/include/asm-alpha/posix_types.h
index c78c04a94f4e..db167413300b 100644
--- a/include/asm-alpha/posix_types.h
+++ b/include/asm-alpha/posix_types.h
@@ -49,7 +49,7 @@ typedef unsigned int __kernel_old_dev_t;
49#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d)) 49#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
50#define __FD_ISSET(d, set) (((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) != 0) 50#define __FD_ISSET(d, set) (((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) != 0)
51#define __FD_ZERO(set) \ 51#define __FD_ZERO(set) \
52 ((void) memset ((__ptr_t) (set), 0, sizeof (__kernel_fd_set))) 52 ((void) memset ((void *) (set), 0, sizeof (__kernel_fd_set)))
53 53
54#else /* __GNUC__ */ 54#else /* __GNUC__ */
55 55
diff --git a/include/asm-arm/arch-iop32x/iop32x.h b/include/asm-arm/arch-iop32x/iop32x.h
index 4bbd85f3ed2a..2e9469047eb1 100644
--- a/include/asm-arm/arch-iop32x/iop32x.h
+++ b/include/asm-arm/arch-iop32x/iop32x.h
@@ -19,7 +19,7 @@
19 * Peripherals that are shared between the iop32x and iop33x but 19 * Peripherals that are shared between the iop32x and iop33x but
20 * located at different addresses. 20 * located at different addresses.
21 */ 21 */
22#define IOP3XX_GPIO_REG(reg) (IOP3XX_PERIPHERAL_VIRT_BASE + 0x07c0 + (reg)) 22#define IOP3XX_GPIO_REG(reg) (IOP3XX_PERIPHERAL_VIRT_BASE + 0x07c4 + (reg))
23#define IOP3XX_TIMER_REG(reg) (IOP3XX_PERIPHERAL_VIRT_BASE + 0x07e0 + (reg)) 23#define IOP3XX_TIMER_REG(reg) (IOP3XX_PERIPHERAL_VIRT_BASE + 0x07e0 + (reg))
24 24
25#include <asm/hardware/iop3xx.h> 25#include <asm/hardware/iop3xx.h>
diff --git a/include/asm-arm/cacheflush.h b/include/asm-arm/cacheflush.h
index d51049522cd0..5f531ea03059 100644
--- a/include/asm-arm/cacheflush.h
+++ b/include/asm-arm/cacheflush.h
@@ -357,6 +357,16 @@ extern void flush_dcache_page(struct page *);
357 357
358extern void __flush_dcache_page(struct address_space *mapping, struct page *page); 358extern void __flush_dcache_page(struct address_space *mapping, struct page *page);
359 359
360#define ARCH_HAS_FLUSH_ANON_PAGE
361static inline void flush_anon_page(struct vm_area_struct *vma,
362 struct page *page, unsigned long vmaddr)
363{
364 extern void __flush_anon_page(struct vm_area_struct *vma,
365 struct page *, unsigned long);
366 if (PageAnon(page))
367 __flush_anon_page(vma, page, vmaddr);
368}
369
360#define flush_dcache_mmap_lock(mapping) \ 370#define flush_dcache_mmap_lock(mapping) \
361 write_lock_irq(&(mapping)->tree_lock) 371 write_lock_irq(&(mapping)->tree_lock)
362#define flush_dcache_mmap_unlock(mapping) \ 372#define flush_dcache_mmap_unlock(mapping) \
diff --git a/include/asm-arm/hardware/iop3xx.h b/include/asm-arm/hardware/iop3xx.h
index 1018a7486ab7..13ac8a4cd01f 100644
--- a/include/asm-arm/hardware/iop3xx.h
+++ b/include/asm-arm/hardware/iop3xx.h
@@ -168,9 +168,9 @@ extern void gpio_line_set(int line, int value);
168#define IOP3XX_PERCR0 (volatile u32 *)IOP3XX_REG_ADDR(0x0710) 168#define IOP3XX_PERCR0 (volatile u32 *)IOP3XX_REG_ADDR(0x0710)
169 169
170/* General Purpose I/O */ 170/* General Purpose I/O */
171#define IOP3XX_GPOE (volatile u32 *)IOP3XX_GPIO_REG(0x0004) 171#define IOP3XX_GPOE (volatile u32 *)IOP3XX_GPIO_REG(0x0000)
172#define IOP3XX_GPID (volatile u32 *)IOP3XX_GPIO_REG(0x0008) 172#define IOP3XX_GPID (volatile u32 *)IOP3XX_GPIO_REG(0x0004)
173#define IOP3XX_GPOD (volatile u32 *)IOP3XX_GPIO_REG(0x000c) 173#define IOP3XX_GPOD (volatile u32 *)IOP3XX_GPIO_REG(0x0008)
174 174
175/* Timers */ 175/* Timers */
176#define IOP3XX_TU_TMR0 (volatile u32 *)IOP3XX_TIMER_REG(0x0000) 176#define IOP3XX_TU_TMR0 (volatile u32 *)IOP3XX_TIMER_REG(0x0000)
diff --git a/include/asm-i386/boot.h b/include/asm-i386/boot.h
index 8ce79a6fa891..e7686d0a8413 100644
--- a/include/asm-i386/boot.h
+++ b/include/asm-i386/boot.h
@@ -13,7 +13,8 @@
13#define ASK_VGA 0xfffd /* ask for it at bootup */ 13#define ASK_VGA 0xfffd /* ask for it at bootup */
14 14
15/* Physical address where kenrel should be loaded. */ 15/* Physical address where kenrel should be loaded. */
16#define LOAD_PHYSICAL_ADDR ((0x100000 + CONFIG_PHYSICAL_ALIGN - 1) \ 16#define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \
17 + (CONFIG_PHYSICAL_ALIGN - 1)) \
17 & ~(CONFIG_PHYSICAL_ALIGN - 1)) 18 & ~(CONFIG_PHYSICAL_ALIGN - 1))
18 19
19#endif /* _LINUX_BOOT_H */ 20#endif /* _LINUX_BOOT_H */
diff --git a/include/asm-ia64/posix_types.h b/include/asm-ia64/posix_types.h
index adb62272694f..17885567b731 100644
--- a/include/asm-ia64/posix_types.h
+++ b/include/asm-ia64/posix_types.h
@@ -54,7 +54,7 @@ typedef unsigned int __kernel_old_dev_t;
54#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d)) 54#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
55#define __FD_ISSET(d, set) (((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) != 0) 55#define __FD_ISSET(d, set) (((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) != 0)
56#define __FD_ZERO(set) \ 56#define __FD_ZERO(set) \
57 ((void) memset ((__ptr_t) (set), 0, sizeof (__kernel_fd_set))) 57 ((void) memset ((void *) (set), 0, sizeof (__kernel_fd_set)))
58 58
59# else /* !__GNUC__ */ 59# else /* !__GNUC__ */
60 60
diff --git a/include/asm-mips/checksum.h b/include/asm-mips/checksum.h
index 9b768c3b96b3..24cdcc6eaab8 100644
--- a/include/asm-mips/checksum.h
+++ b/include/asm-mips/checksum.h
@@ -29,31 +29,38 @@
29 */ 29 */
30__wsum csum_partial(const void *buff, int len, __wsum sum); 30__wsum csum_partial(const void *buff, int len, __wsum sum);
31 31
32__wsum __csum_partial_copy_user(const void *src, void *dst,
33 int len, __wsum sum, int *err_ptr);
34
32/* 35/*
33 * this is a new version of the above that records errors it finds in *errp, 36 * this is a new version of the above that records errors it finds in *errp,
34 * but continues and zeros the rest of the buffer. 37 * but continues and zeros the rest of the buffer.
35 */ 38 */
36__wsum csum_partial_copy_from_user(const void __user *src, 39static inline
37 void *dst, int len, 40__wsum csum_partial_copy_from_user(const void __user *src, void *dst, int len,
38 __wsum sum, int *errp); 41 __wsum sum, int *err_ptr)
42{
43 might_sleep();
44 return __csum_partial_copy_user((__force void *)src, dst,
45 len, sum, err_ptr);
46}
39 47
40/* 48/*
41 * Copy and checksum to user 49 * Copy and checksum to user
42 */ 50 */
43#define HAVE_CSUM_COPY_USER 51#define HAVE_CSUM_COPY_USER
44static inline __wsum csum_and_copy_to_user (const void *src, void __user *dst, 52static inline
45 int len, __wsum sum, 53__wsum csum_and_copy_to_user(const void *src, void __user *dst, int len,
46 int *err_ptr) 54 __wsum sum, int *err_ptr)
47{ 55{
48 might_sleep(); 56 might_sleep();
49 sum = csum_partial(src, len, sum); 57 if (access_ok(VERIFY_WRITE, dst, len))
50 58 return __csum_partial_copy_user(src, (__force void *)dst,
51 if (copy_to_user(dst, src, len)) { 59 len, sum, err_ptr);
60 if (len)
52 *err_ptr = -EFAULT; 61 *err_ptr = -EFAULT;
53 return (__force __wsum)-1;
54 }
55 62
56 return sum; 63 return (__force __wsum)-1; /* invalid checksum */
57} 64}
58 65
59/* 66/*
diff --git a/include/asm-mips/irq.h b/include/asm-mips/irq.h
index 67657089efa7..386da82e5774 100644
--- a/include/asm-mips/irq.h
+++ b/include/asm-mips/irq.h
@@ -31,14 +31,14 @@ static inline int irq_canonicalize(int irq)
31 * functions will take over re-enabling the low-level mask. 31 * functions will take over re-enabling the low-level mask.
32 * Otherwise it will be done on return from exception. 32 * Otherwise it will be done on return from exception.
33 */ 33 */
34#define __DO_IRQ_SMTC_HOOK() \ 34#define __DO_IRQ_SMTC_HOOK(irq) \
35do { \ 35do { \
36 if (irq_hwmask[irq] & 0x0000ff00) \ 36 if (irq_hwmask[irq] & 0x0000ff00) \
37 write_c0_tccontext(read_c0_tccontext() & \ 37 write_c0_tccontext(read_c0_tccontext() & \
38 ~(irq_hwmask[irq] & 0x0000ff00)); \ 38 ~(irq_hwmask[irq] & 0x0000ff00)); \
39} while (0) 39} while (0)
40#else 40#else
41#define __DO_IRQ_SMTC_HOOK() do { } while (0) 41#define __DO_IRQ_SMTC_HOOK(irq) do { } while (0)
42#endif 42#endif
43 43
44/* 44/*
@@ -52,7 +52,7 @@ do { \
52#define do_IRQ(irq) \ 52#define do_IRQ(irq) \
53do { \ 53do { \
54 irq_enter(); \ 54 irq_enter(); \
55 __DO_IRQ_SMTC_HOOK(); \ 55 __DO_IRQ_SMTC_HOOK(irq); \
56 generic_handle_irq(irq); \ 56 generic_handle_irq(irq); \
57 irq_exit(); \ 57 irq_exit(); \
58} while (0) 58} while (0)
diff --git a/include/asm-parisc/cacheflush.h b/include/asm-parisc/cacheflush.h
index aedb0512cb04..a799dd8ef395 100644
--- a/include/asm-parisc/cacheflush.h
+++ b/include/asm-parisc/cacheflush.h
@@ -186,7 +186,7 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
186} 186}
187 187
188static inline void 188static inline void
189flush_anon_page(struct page *page, unsigned long vmaddr) 189flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr)
190{ 190{
191 if (PageAnon(page)) 191 if (PageAnon(page))
192 flush_user_dcache_page(vmaddr); 192 flush_user_dcache_page(vmaddr);
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/bug.h b/include/asm-powerpc/bug.h
index 709568879f73..f6fa39474846 100644
--- a/include/asm-powerpc/bug.h
+++ b/include/asm-powerpc/bug.h
@@ -11,10 +11,31 @@
11#define BUG_OPCODE .long 0x00b00b00 /* For asm */ 11#define BUG_OPCODE .long 0x00b00b00 /* For asm */
12#define BUG_ILLEGAL_INSTR "0x00b00b00" /* For BUG macro */ 12#define BUG_ILLEGAL_INSTR "0x00b00b00" /* For BUG macro */
13 13
14#ifndef __ASSEMBLY__
15
16#ifdef CONFIG_BUG 14#ifdef CONFIG_BUG
17 15
16#ifdef __ASSEMBLY__
17#ifdef CONFIG_DEBUG_BUGVERBOSE
18.macro EMIT_BUG_ENTRY addr,file,line,flags
19 .section __bug_table,"a"
205001: PPC_LONG \addr, 5002f
21 .short \line, \flags
22 .org 5001b+BUG_ENTRY_SIZE
23 .previous
24 .section .rodata,"a"
255002: .asciz "\file"
26 .previous
27.endm
28#else
29 .macro EMIT_BUG_ENTRY addr,file,line,flags
30 .section __bug_table,"a"
315001: PPC_LONG \addr
32 .short \flags
33 .org 5001b+BUG_ENTRY_SIZE
34 .previous
35.endm
36#endif /* verbose */
37
38#else /* !__ASSEMBLY__ */
18/* _EMIT_BUG_ENTRY expects args %0,%1,%2,%3 to be FILE, LINE, flags and 39/* _EMIT_BUG_ENTRY expects args %0,%1,%2,%3 to be FILE, LINE, flags and
19 sizeof(struct bug_entry), respectively */ 40 sizeof(struct bug_entry), respectively */
20#ifdef CONFIG_DEBUG_BUGVERBOSE 41#ifdef CONFIG_DEBUG_BUGVERBOSE
@@ -91,8 +112,8 @@
91#define HAVE_ARCH_BUG 112#define HAVE_ARCH_BUG
92#define HAVE_ARCH_BUG_ON 113#define HAVE_ARCH_BUG_ON
93#define HAVE_ARCH_WARN_ON 114#define HAVE_ARCH_WARN_ON
94#endif /* CONFIG_BUG */
95#endif /* __ASSEMBLY __ */ 115#endif /* __ASSEMBLY __ */
116#endif /* CONFIG_BUG */
96 117
97#include <asm-generic/bug.h> 118#include <asm-generic/bug.h>
98 119
diff --git a/include/asm-powerpc/hvcall.h b/include/asm-powerpc/hvcall.h
index 257d1cecb8c9..7a500732b671 100644
--- a/include/asm-powerpc/hvcall.h
+++ b/include/asm-powerpc/hvcall.h
@@ -252,8 +252,6 @@ struct hcall_stats {
252 unsigned long tb_total; /* total wall time (mftb) of calls. */ 252 unsigned long tb_total; /* total wall time (mftb) of calls. */
253 unsigned long purr_total; /* total cpu time (PURR) of calls. */ 253 unsigned long purr_total; /* total cpu time (PURR) of calls. */
254}; 254};
255void update_hcall_stats(unsigned long opcode, unsigned long tb_delta,
256 unsigned long purr_delta);
257#define HCALL_STAT_ARRAY_SIZE ((MAX_HCALL_OPCODE >> 2) + 1) 255#define HCALL_STAT_ARRAY_SIZE ((MAX_HCALL_OPCODE >> 2) + 1)
258 256
259#endif /* __ASSEMBLY__ */ 257#endif /* __ASSEMBLY__ */
diff --git a/include/asm-powerpc/mpc52xx.h b/include/asm-powerpc/mpc52xx.h
index 4a28a850998c..4560d72fc758 100644
--- a/include/asm-powerpc/mpc52xx.h
+++ b/include/asm-powerpc/mpc52xx.h
@@ -244,6 +244,7 @@ struct mpc52xx_cdm {
244extern void __iomem * mpc52xx_find_and_map(const char *); 244extern void __iomem * mpc52xx_find_and_map(const char *);
245extern unsigned int mpc52xx_find_ipb_freq(struct device_node *node); 245extern unsigned int mpc52xx_find_ipb_freq(struct device_node *node);
246extern void mpc52xx_setup_cpu(void); 246extern void mpc52xx_setup_cpu(void);
247extern void mpc52xx_declare_of_platform_devices(void);
247 248
248extern void mpc52xx_init_irq(void); 249extern void mpc52xx_init_irq(void);
249extern unsigned int mpc52xx_get_irq(void); 250extern unsigned int mpc52xx_get_irq(void);
diff --git a/include/asm-powerpc/posix_types.h b/include/asm-powerpc/posix_types.h
index c6391077224f..2f2288f520be 100644
--- a/include/asm-powerpc/posix_types.h
+++ b/include/asm-powerpc/posix_types.h
@@ -60,7 +60,7 @@ typedef struct {
60#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d)) 60#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
61#define __FD_ISSET(d, set) (((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) != 0) 61#define __FD_ISSET(d, set) (((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) != 0)
62#define __FD_ZERO(set) \ 62#define __FD_ZERO(set) \
63 ((void) memset ((__ptr_t) (set), 0, sizeof (__kernel_fd_set))) 63 ((void) memset ((void *) (set), 0, sizeof (__kernel_fd_set)))
64 64
65#else /* __GNUC__ */ 65#else /* __GNUC__ */
66 66
diff --git a/include/asm-s390/futex.h b/include/asm-s390/futex.h
index 5e261e1de671..5c5d02de49e9 100644
--- a/include/asm-s390/futex.h
+++ b/include/asm-s390/futex.h
@@ -4,8 +4,8 @@
4#ifdef __KERNEL__ 4#ifdef __KERNEL__
5 5
6#include <linux/futex.h> 6#include <linux/futex.h>
7#include <linux/uaccess.h>
7#include <asm/errno.h> 8#include <asm/errno.h>
8#include <asm/uaccess.h>
9 9
10static inline int futex_atomic_op_inuser (int encoded_op, int __user *uaddr) 10static inline int futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
11{ 11{
@@ -21,7 +21,9 @@ static inline int futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
21 if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int))) 21 if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
22 return -EFAULT; 22 return -EFAULT;
23 23
24 pagefault_disable();
24 ret = uaccess.futex_atomic_op(op, uaddr, oparg, &oldval); 25 ret = uaccess.futex_atomic_op(op, uaddr, oparg, &oldval);
26 pagefault_enable();
25 27
26 if (!ret) { 28 if (!ret) {
27 switch (cmp) { 29 switch (cmp) {
diff --git a/include/asm-s390/posix_types.h b/include/asm-s390/posix_types.h
index b94c98856e12..397d93fba3a7 100644
--- a/include/asm-s390/posix_types.h
+++ b/include/asm-s390/posix_types.h
@@ -104,7 +104,7 @@ static inline int __FD_ISSET(unsigned long fd, const __kernel_fd_set *fdsetp)
104 104
105#undef __FD_ZERO 105#undef __FD_ZERO
106#define __FD_ZERO(fdsetp) \ 106#define __FD_ZERO(fdsetp) \
107 ((void) memset ((__ptr_t) (fdsetp), 0, sizeof (__kernel_fd_set))) 107 ((void) memset ((void *) (fdsetp), 0, sizeof (__kernel_fd_set)))
108 108
109#endif /* __KERNEL__ */ 109#endif /* __KERNEL__ */
110 110
diff --git a/include/asm-x86_64/bitops.h b/include/asm-x86_64/bitops.h
index 5b535eaf5309..8da9609070f4 100644
--- a/include/asm-x86_64/bitops.h
+++ b/include/asm-x86_64/bitops.h
@@ -7,7 +7,13 @@
7 7
8#include <asm/alternative.h> 8#include <asm/alternative.h>
9 9
10#define ADDR (*(volatile long *) addr) 10#if __GNUC__ < 4 || __GNUC_MINOR__ < 1
11/* Technically wrong, but this avoids compilation errors on some gcc
12 versions. */
13#define ADDR "=m" (*(volatile long *) addr)
14#else
15#define ADDR "+m" (*(volatile long *) addr)
16#endif
11 17
12/** 18/**
13 * set_bit - Atomically set a bit in memory 19 * set_bit - Atomically set a bit in memory
@@ -23,7 +29,7 @@ static __inline__ void set_bit(int nr, volatile void * addr)
23{ 29{
24 __asm__ __volatile__( LOCK_PREFIX 30 __asm__ __volatile__( LOCK_PREFIX
25 "btsl %1,%0" 31 "btsl %1,%0"
26 :"+m" (ADDR) 32 :ADDR
27 :"dIr" (nr) : "memory"); 33 :"dIr" (nr) : "memory");
28} 34}
29 35
@@ -40,7 +46,7 @@ static __inline__ void __set_bit(int nr, volatile void * addr)
40{ 46{
41 __asm__ volatile( 47 __asm__ volatile(
42 "btsl %1,%0" 48 "btsl %1,%0"
43 :"+m" (ADDR) 49 :ADDR
44 :"dIr" (nr) : "memory"); 50 :"dIr" (nr) : "memory");
45} 51}
46 52
@@ -58,7 +64,7 @@ static __inline__ void clear_bit(int nr, volatile void * addr)
58{ 64{
59 __asm__ __volatile__( LOCK_PREFIX 65 __asm__ __volatile__( LOCK_PREFIX
60 "btrl %1,%0" 66 "btrl %1,%0"
61 :"+m" (ADDR) 67 :ADDR
62 :"dIr" (nr)); 68 :"dIr" (nr));
63} 69}
64 70
@@ -66,7 +72,7 @@ static __inline__ void __clear_bit(int nr, volatile void * addr)
66{ 72{
67 __asm__ __volatile__( 73 __asm__ __volatile__(
68 "btrl %1,%0" 74 "btrl %1,%0"
69 :"+m" (ADDR) 75 :ADDR
70 :"dIr" (nr)); 76 :"dIr" (nr));
71} 77}
72 78
@@ -86,7 +92,7 @@ static __inline__ void __change_bit(int nr, volatile void * addr)
86{ 92{
87 __asm__ __volatile__( 93 __asm__ __volatile__(
88 "btcl %1,%0" 94 "btcl %1,%0"
89 :"+m" (ADDR) 95 :ADDR
90 :"dIr" (nr)); 96 :"dIr" (nr));
91} 97}
92 98
@@ -103,7 +109,7 @@ static __inline__ void change_bit(int nr, volatile void * addr)
103{ 109{
104 __asm__ __volatile__( LOCK_PREFIX 110 __asm__ __volatile__( LOCK_PREFIX
105 "btcl %1,%0" 111 "btcl %1,%0"
106 :"+m" (ADDR) 112 :ADDR
107 :"dIr" (nr)); 113 :"dIr" (nr));
108} 114}
109 115
@@ -121,7 +127,7 @@ static __inline__ int test_and_set_bit(int nr, volatile void * addr)
121 127
122 __asm__ __volatile__( LOCK_PREFIX 128 __asm__ __volatile__( LOCK_PREFIX
123 "btsl %2,%1\n\tsbbl %0,%0" 129 "btsl %2,%1\n\tsbbl %0,%0"
124 :"=r" (oldbit),"+m" (ADDR) 130 :"=r" (oldbit),ADDR
125 :"dIr" (nr) : "memory"); 131 :"dIr" (nr) : "memory");
126 return oldbit; 132 return oldbit;
127} 133}
@@ -141,7 +147,7 @@ static __inline__ int __test_and_set_bit(int nr, volatile void * addr)
141 147
142 __asm__( 148 __asm__(
143 "btsl %2,%1\n\tsbbl %0,%0" 149 "btsl %2,%1\n\tsbbl %0,%0"
144 :"=r" (oldbit),"+m" (ADDR) 150 :"=r" (oldbit),ADDR
145 :"dIr" (nr)); 151 :"dIr" (nr));
146 return oldbit; 152 return oldbit;
147} 153}
@@ -160,7 +166,7 @@ static __inline__ int test_and_clear_bit(int nr, volatile void * addr)
160 166
161 __asm__ __volatile__( LOCK_PREFIX 167 __asm__ __volatile__( LOCK_PREFIX
162 "btrl %2,%1\n\tsbbl %0,%0" 168 "btrl %2,%1\n\tsbbl %0,%0"
163 :"=r" (oldbit),"+m" (ADDR) 169 :"=r" (oldbit),ADDR
164 :"dIr" (nr) : "memory"); 170 :"dIr" (nr) : "memory");
165 return oldbit; 171 return oldbit;
166} 172}
@@ -180,7 +186,7 @@ static __inline__ int __test_and_clear_bit(int nr, volatile void * addr)
180 186
181 __asm__( 187 __asm__(
182 "btrl %2,%1\n\tsbbl %0,%0" 188 "btrl %2,%1\n\tsbbl %0,%0"
183 :"=r" (oldbit),"+m" (ADDR) 189 :"=r" (oldbit),ADDR
184 :"dIr" (nr)); 190 :"dIr" (nr));
185 return oldbit; 191 return oldbit;
186} 192}
@@ -192,7 +198,7 @@ static __inline__ int __test_and_change_bit(int nr, volatile void * addr)
192 198
193 __asm__ __volatile__( 199 __asm__ __volatile__(
194 "btcl %2,%1\n\tsbbl %0,%0" 200 "btcl %2,%1\n\tsbbl %0,%0"
195 :"=r" (oldbit),"+m" (ADDR) 201 :"=r" (oldbit),ADDR
196 :"dIr" (nr) : "memory"); 202 :"dIr" (nr) : "memory");
197 return oldbit; 203 return oldbit;
198} 204}
@@ -211,7 +217,7 @@ static __inline__ int test_and_change_bit(int nr, volatile void * addr)
211 217
212 __asm__ __volatile__( LOCK_PREFIX 218 __asm__ __volatile__( LOCK_PREFIX
213 "btcl %2,%1\n\tsbbl %0,%0" 219 "btcl %2,%1\n\tsbbl %0,%0"
214 :"=r" (oldbit),"+m" (ADDR) 220 :"=r" (oldbit),ADDR
215 :"dIr" (nr) : "memory"); 221 :"dIr" (nr) : "memory");
216 return oldbit; 222 return oldbit;
217} 223}
@@ -237,7 +243,7 @@ static __inline__ int variable_test_bit(int nr, volatile const void * addr)
237 __asm__ __volatile__( 243 __asm__ __volatile__(
238 "btl %2,%1\n\tsbbl %0,%0" 244 "btl %2,%1\n\tsbbl %0,%0"
239 :"=r" (oldbit) 245 :"=r" (oldbit)
240 :"m" (ADDR),"dIr" (nr)); 246 :"m" (*(volatile long *)addr),"dIr" (nr));
241 return oldbit; 247 return oldbit;
242} 248}
243 249
diff --git a/include/asm-xtensa/posix_types.h b/include/asm-xtensa/posix_types.h
index 3470b44c12ce..4ad77dda6d5f 100644
--- a/include/asm-xtensa/posix_types.h
+++ b/include/asm-xtensa/posix_types.h
@@ -60,7 +60,7 @@ typedef struct {
60#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d)) 60#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
61#define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) 61#define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d))
62#define __FD_ZERO(set) \ 62#define __FD_ZERO(set) \
63 ((void) memset ((__ptr_t) (set), 0, sizeof (__kernel_fd_set))) 63 ((void) memset ((void *) (set), 0, sizeof (__kernel_fd_set)))
64 64
65#else /* __GNUC__ */ 65#else /* __GNUC__ */
66 66
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 2b0c955590fe..91f1f2363870 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -47,6 +47,7 @@ enum acpi_irq_model_id {
47 ACPI_IRQ_MODEL_PIC = 0, 47 ACPI_IRQ_MODEL_PIC = 0,
48 ACPI_IRQ_MODEL_IOAPIC, 48 ACPI_IRQ_MODEL_IOAPIC,
49 ACPI_IRQ_MODEL_IOSAPIC, 49 ACPI_IRQ_MODEL_IOSAPIC,
50 ACPI_IRQ_MODEL_PLATFORM,
50 ACPI_IRQ_MODEL_COUNT 51 ACPI_IRQ_MODEL_COUNT
51}; 52};
52 53
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 186da813541e..1410e5330c8d 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -426,6 +426,7 @@ struct address_space_operations {
426 /* migrate the contents of a page to the specified target */ 426 /* migrate the contents of a page to the specified target */
427 int (*migratepage) (struct address_space *, 427 int (*migratepage) (struct address_space *,
428 struct page *, struct page *); 428 struct page *, struct page *);
429 int (*launder_page) (struct page *);
429}; 430};
430 431
431struct backing_dev_info; 432struct backing_dev_info;
@@ -458,7 +459,7 @@ struct block_device {
458 struct inode * bd_inode; /* will die */ 459 struct inode * bd_inode; /* will die */
459 int bd_openers; 460 int bd_openers;
460 struct mutex bd_mutex; /* open/close mutex */ 461 struct mutex bd_mutex; /* open/close mutex */
461 struct mutex bd_mount_mutex; /* mount mutex */ 462 struct semaphore bd_mount_sem;
462 struct list_head bd_inodes; 463 struct list_head bd_inodes;
463 void * bd_holder; 464 void * bd_holder;
464 int bd_holders; 465 int bd_holders;
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/highmem.h b/include/linux/highmem.h
index ca9a602cffd7..645d440807c2 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -8,7 +8,7 @@
8#include <asm/cacheflush.h> 8#include <asm/cacheflush.h>
9 9
10#ifndef ARCH_HAS_FLUSH_ANON_PAGE 10#ifndef ARCH_HAS_FLUSH_ANON_PAGE
11static inline void flush_anon_page(struct page *page, unsigned long vmaddr) 11static inline void flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr)
12{ 12{
13} 13}
14#endif 14#endif
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index b0c4a05a4b0c..63fb18dcac30 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -17,6 +17,9 @@
17#include <asm/byteorder.h> 17#include <asm/byteorder.h>
18#include <asm/bug.h> 18#include <asm/bug.h>
19 19
20extern const char linux_banner[];
21extern const char linux_proc_banner[];
22
20#define INT_MAX ((int)(~0U>>1)) 23#define INT_MAX ((int)(~0U>>1))
21#define INT_MIN (-INT_MAX - 1) 24#define INT_MIN (-INT_MAX - 1)
22#define UINT_MAX (~0U) 25#define UINT_MAX (~0U)
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
index 28fdce1ac1db..bc8b4616bad7 100644
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -11,7 +11,7 @@
11#include <asm/types.h> 11#include <asm/types.h>
12#include <linux/ioctl.h> 12#include <linux/ioctl.h>
13 13
14#define KVM_API_VERSION 1 14#define KVM_API_VERSION 2
15 15
16/* 16/*
17 * Architectural interrupt line count, and the size of the bitmap needed 17 * Architectural interrupt line count, and the size of the bitmap needed
@@ -45,6 +45,7 @@ enum kvm_exit_reason {
45 KVM_EXIT_DEBUG = 4, 45 KVM_EXIT_DEBUG = 4,
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}; 49};
49 50
50/* for KVM_RUN */ 51/* for KVM_RUN */
@@ -53,11 +54,19 @@ struct kvm_run {
53 __u32 vcpu; 54 __u32 vcpu;
54 __u32 emulated; /* skip current instruction */ 55 __u32 emulated; /* skip current instruction */
55 __u32 mmio_completed; /* mmio request completed */ 56 __u32 mmio_completed; /* mmio request completed */
57 __u8 request_interrupt_window;
58 __u8 padding1[3];
56 59
57 /* out */ 60 /* out */
58 __u32 exit_type; 61 __u32 exit_type;
59 __u32 exit_reason; 62 __u32 exit_reason;
60 __u32 instruction_length; 63 __u32 instruction_length;
64 __u8 ready_for_interrupt_injection;
65 __u8 if_flag;
66 __u16 padding2;
67 __u64 cr8;
68 __u64 apic_base;
69
61 union { 70 union {
62 /* KVM_EXIT_UNKNOWN */ 71 /* KVM_EXIT_UNKNOWN */
63 struct { 72 struct {
diff --git a/include/linux/magic.h b/include/linux/magic.h
index 156c40fc664e..b78bbf42135a 100644
--- a/include/linux/magic.h
+++ b/include/linux/magic.h
@@ -3,6 +3,7 @@
3 3
4#define ADFS_SUPER_MAGIC 0xadf5 4#define ADFS_SUPER_MAGIC 0xadf5
5#define AFFS_SUPER_MAGIC 0xadff 5#define AFFS_SUPER_MAGIC 0xadff
6#define AFS_SUPER_MAGIC 0x5346414F
6#define AUTOFS_SUPER_MAGIC 0x0187 7#define AUTOFS_SUPER_MAGIC 0x0187
7#define CODA_SUPER_MAGIC 0x73757245 8#define CODA_SUPER_MAGIC 0x73757245
8#define EFS_SUPER_MAGIC 0x414A53 9#define EFS_SUPER_MAGIC 0x414A53
diff --git a/include/linux/mm.h b/include/linux/mm.h
index a17b147c61e7..76912231af41 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -978,7 +978,8 @@ extern int early_pfn_to_nid(unsigned long pfn);
978#endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */ 978#endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */
979#endif /* CONFIG_ARCH_POPULATES_NODE_MAP */ 979#endif /* CONFIG_ARCH_POPULATES_NODE_MAP */
980extern void set_dma_reserve(unsigned long new_dma_reserve); 980extern void set_dma_reserve(unsigned long new_dma_reserve);
981extern void memmap_init_zone(unsigned long, int, unsigned long, unsigned long); 981extern void memmap_init_zone(unsigned long, int, unsigned long,
982 unsigned long, enum memmap_context);
982extern void setup_per_zone_pages_min(void); 983extern void setup_per_zone_pages_min(void);
983extern void mem_init(void); 984extern void mem_init(void);
984extern void show_mem(void); 985extern void show_mem(void);
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/mmzone.h b/include/linux/mmzone.h
index e339a7345f25..b262f47961fb 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -450,9 +450,13 @@ void build_all_zonelists(void);
450void wakeup_kswapd(struct zone *zone, int order); 450void wakeup_kswapd(struct zone *zone, int order);
451int zone_watermark_ok(struct zone *z, int order, unsigned long mark, 451int zone_watermark_ok(struct zone *z, int order, unsigned long mark,
452 int classzone_idx, int alloc_flags); 452 int classzone_idx, int alloc_flags);
453 453enum memmap_context {
454 MEMMAP_EARLY,
455 MEMMAP_HOTPLUG,
456};
454extern int init_currently_empty_zone(struct zone *zone, unsigned long start_pfn, 457extern int init_currently_empty_zone(struct zone *zone, unsigned long start_pfn,
455 unsigned long size); 458 unsigned long size,
459 enum memmap_context context);
456 460
457#ifdef CONFIG_HAVE_MEMORY_PRESENT 461#ifdef CONFIG_HAVE_MEMORY_PRESENT
458void memory_present(int nid, unsigned long start, unsigned long end); 462void memory_present(int nid, unsigned long start, unsigned long end);
diff --git a/include/linux/netfilter/nf_conntrack_tcp.h b/include/linux/netfilter/nf_conntrack_tcp.h
index 6b01ba297727..2f4e98b90cc0 100644
--- a/include/linux/netfilter/nf_conntrack_tcp.h
+++ b/include/linux/netfilter/nf_conntrack_tcp.h
@@ -25,7 +25,7 @@ enum tcp_conntrack {
25#define IP_CT_TCP_FLAG_SACK_PERM 0x02 25#define IP_CT_TCP_FLAG_SACK_PERM 0x02
26 26
27/* This sender sent FIN first */ 27/* This sender sent FIN first */
28#define IP_CT_TCP_FLAG_CLOSE_INIT 0x03 28#define IP_CT_TCP_FLAG_CLOSE_INIT 0x04
29 29
30#ifdef __KERNEL__ 30#ifdef __KERNEL__
31 31
diff --git a/include/linux/netfilter_arp/arp_tables.h b/include/linux/netfilter_arp/arp_tables.h
index 0be235418a2f..24c8786d12e9 100644
--- a/include/linux/netfilter_arp/arp_tables.h
+++ b/include/linux/netfilter_arp/arp_tables.h
@@ -190,6 +190,7 @@ struct arpt_replace
190 190
191/* The argument to ARPT_SO_ADD_COUNTERS. */ 191/* The argument to ARPT_SO_ADD_COUNTERS. */
192#define arpt_counters_info xt_counters_info 192#define arpt_counters_info xt_counters_info
193#define arpt_counters xt_counters
193 194
194/* The argument to ARPT_SO_GET_ENTRIES. */ 195/* The argument to ARPT_SO_GET_ENTRIES. */
195struct arpt_get_entries 196struct arpt_get_entries
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 778e701eff30..f7a416c52edc 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -1277,6 +1277,7 @@
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_8371_0 0x0391 1281#define PCI_DEVICE_ID_VIA_8371_0 0x0391
1281#define PCI_DEVICE_ID_VIA_8501_0 0x0501 1282#define PCI_DEVICE_ID_VIA_8501_0 0x0501
1282#define PCI_DEVICE_ID_VIA_82C561 0x0561 1283#define PCI_DEVICE_ID_VIA_82C561 0x0561
diff --git a/include/linux/profile.h b/include/linux/profile.h
index 5670b340c4ef..eec48f5f9348 100644
--- a/include/linux/profile.h
+++ b/include/linux/profile.h
@@ -15,6 +15,7 @@ extern int prof_on __read_mostly;
15#define CPU_PROFILING 1 15#define CPU_PROFILING 1
16#define SCHED_PROFILING 2 16#define SCHED_PROFILING 2
17#define SLEEP_PROFILING 3 17#define SLEEP_PROFILING 3
18#define KVM_PROFILING 4
18 19
19struct proc_dir_entry; 20struct proc_dir_entry;
20struct pt_regs; 21struct pt_regs;
diff --git a/include/linux/swap.h b/include/linux/swap.h
index add51cebc8d9..5423559a44a6 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -245,7 +245,7 @@ extern int swap_duplicate(swp_entry_t);
245extern int valid_swaphandles(swp_entry_t, unsigned long *); 245extern int valid_swaphandles(swp_entry_t, unsigned long *);
246extern void swap_free(swp_entry_t); 246extern void swap_free(swp_entry_t);
247extern void free_swap_and_cache(swp_entry_t); 247extern void free_swap_and_cache(swp_entry_t);
248extern int swap_type_of(dev_t, sector_t); 248extern int swap_type_of(dev_t, sector_t, struct block_device **);
249extern unsigned int count_swap_pages(int, int); 249extern unsigned int count_swap_pages(int, int);
250extern sector_t map_swap_page(struct swap_info_struct *, pgoff_t); 250extern sector_t map_swap_page(struct swap_info_struct *, pgoff_t);
251extern sector_t swapdev_block(int, pgoff_t); 251extern sector_t swapdev_block(int, pgoff_t);
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/ieee80211.h b/include/net/ieee80211.h
index e6af381e206d..e02d85f56e60 100644
--- a/include/net/ieee80211.h
+++ b/include/net/ieee80211.h
@@ -218,7 +218,7 @@ struct ieee80211_snap_hdr {
218#define WLAN_FC_GET_STYPE(fc) ((fc) & IEEE80211_FCTL_STYPE) 218#define WLAN_FC_GET_STYPE(fc) ((fc) & IEEE80211_FCTL_STYPE)
219 219
220#define WLAN_GET_SEQ_FRAG(seq) ((seq) & IEEE80211_SCTL_FRAG) 220#define WLAN_GET_SEQ_FRAG(seq) ((seq) & IEEE80211_SCTL_FRAG)
221#define WLAN_GET_SEQ_SEQ(seq) ((seq) & IEEE80211_SCTL_SEQ) 221#define WLAN_GET_SEQ_SEQ(seq) (((seq) & IEEE80211_SCTL_SEQ) >> 4)
222 222
223/* Authentication algorithms */ 223/* Authentication algorithms */
224#define WLAN_AUTH_OPEN 0 224#define WLAN_AUTH_OPEN 0
diff --git a/include/net/tcp.h b/include/net/tcp.h
index b7d8317f22ac..cd8fa0c858ae 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -242,7 +242,7 @@ extern int tcp_memory_pressure;
242 242
243static inline int before(__u32 seq1, __u32 seq2) 243static inline int before(__u32 seq1, __u32 seq2)
244{ 244{
245 return (__s32)(seq2-seq1) > 0; 245 return (__s32)(seq1-seq2) < 0;
246} 246}
247#define after(seq2, seq1) before(seq1, seq2) 247#define after(seq2, seq1) before(seq1, seq2)
248 248
diff --git a/include/net/x25.h b/include/net/x25.h
index 0ad90ebcf86e..e47fe440d9d7 100644
--- a/include/net/x25.h
+++ b/include/net/x25.h
@@ -259,6 +259,7 @@ extern int x25_decode(struct sock *, struct sk_buff *, int *, int *, int *, int
259extern void x25_disconnect(struct sock *, int, unsigned char, unsigned char); 259extern void x25_disconnect(struct sock *, int, unsigned char, unsigned char);
260 260
261/* x25_timer.c */ 261/* x25_timer.c */
262extern void x25_init_timers(struct sock *sk);
262extern void x25_start_heartbeat(struct sock *); 263extern void x25_start_heartbeat(struct sock *);
263extern void x25_start_t2timer(struct sock *); 264extern void x25_start_t2timer(struct sock *);
264extern void x25_start_t21timer(struct sock *); 265extern void x25_start_t21timer(struct sock *);
diff --git a/include/sound/version.h b/include/sound/version.h
index 2949b9b991b5..20f7babad514 100644
--- a/include/sound/version.h
+++ b/include/sound/version.h
@@ -1,3 +1,3 @@
1/* include/version.h. Generated by alsa/ksync script. */ 1/* include/version.h. Generated by alsa/ksync script. */
2#define CONFIG_SND_VERSION "1.0.14rc1" 2#define CONFIG_SND_VERSION "1.0.14rc1"
3#define CONFIG_SND_DATE " (Wed Dec 20 08:11:48 2006 UTC)" 3#define CONFIG_SND_DATE " (Tue Jan 09 09:56:17 2007 UTC)"
diff --git a/init/Makefile b/init/Makefile
index 9cd871ce5784..633a268d270d 100644
--- a/init/Makefile
+++ b/init/Makefile
@@ -15,6 +15,14 @@ clean-files := ../include/linux/compile.h
15 15
16# dependencies on generated files need to be listed explicitly 16# dependencies on generated files need to be listed explicitly
17 17
18$(obj)/main.o: include/linux/compile.h
19$(obj)/version.o: include/linux/compile.h 18$(obj)/version.o: include/linux/compile.h
20 19
20# compile.h changes depending on hostname, generation number, etc,
21# so we regenerate it always.
22# mkcompile_h will make sure to only update the
23# actual file if its content has changed.
24
25include/linux/compile.h: FORCE
26 @echo ' CHK $@'
27 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \
28 "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CC) $(CFLAGS)"
diff --git a/init/main.c b/init/main.c
index 2b1cdaab45e6..8b4a7d769162 100644
--- a/init/main.c
+++ b/init/main.c
@@ -50,9 +50,7 @@
50#include <linux/buffer_head.h> 50#include <linux/buffer_head.h>
51#include <linux/debug_locks.h> 51#include <linux/debug_locks.h>
52#include <linux/lockdep.h> 52#include <linux/lockdep.h>
53#include <linux/utsrelease.h>
54#include <linux/pid_namespace.h> 53#include <linux/pid_namespace.h>
55#include <linux/compile.h>
56#include <linux/device.h> 54#include <linux/device.h>
57 55
58#include <asm/io.h> 56#include <asm/io.h>
@@ -482,12 +480,6 @@ void __init __attribute__((weak)) smp_setup_processor_id(void)
482{ 480{
483} 481}
484 482
485static const char linux_banner[] =
486 "Linux version " UTS_RELEASE
487 " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")"
488 " (" LINUX_COMPILER ")"
489 " " UTS_VERSION "\n";
490
491asmlinkage void __init start_kernel(void) 483asmlinkage void __init start_kernel(void)
492{ 484{
493 char * command_line; 485 char * command_line;
@@ -538,6 +530,11 @@ asmlinkage void __init start_kernel(void)
538 parse_args("Booting kernel", command_line, __start___param, 530 parse_args("Booting kernel", command_line, __start___param,
539 __stop___param - __start___param, 531 __stop___param - __start___param,
540 &unknown_bootoption); 532 &unknown_bootoption);
533 if (!irqs_disabled()) {
534 printk(KERN_WARNING "start_kernel(): bug: interrupts were "
535 "enabled *very* early, fixing it\n");
536 local_irq_disable();
537 }
541 sort_main_extable(); 538 sort_main_extable();
542 trap_init(); 539 trap_init();
543 rcu_init(); 540 rcu_init();
@@ -698,7 +695,7 @@ static void __init do_basic_setup(void)
698 do_initcalls(); 695 do_initcalls();
699} 696}
700 697
701static void do_pre_smp_initcalls(void) 698static void __init do_pre_smp_initcalls(void)
702{ 699{
703 extern int spawn_ksoftirqd(void); 700 extern int spawn_ksoftirqd(void);
704#ifdef CONFIG_SMP 701#ifdef CONFIG_SMP
diff --git a/init/version.c b/init/version.c
index 9d96d36501ca..6c01ec1cc48d 100644
--- a/init/version.c
+++ b/init/version.c
@@ -33,3 +33,13 @@ struct uts_namespace init_uts_ns = {
33 }, 33 },
34}; 34};
35EXPORT_SYMBOL_GPL(init_uts_ns); 35EXPORT_SYMBOL_GPL(init_uts_ns);
36
37/* FIXED STRINGS! Don't touch! */
38const char linux_banner[] =
39 "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
40 LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
41
42const char linux_proc_banner[] =
43 "%s version %s"
44 " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")"
45 " (" LINUX_COMPILER ") %s\n";
diff --git a/kernel/cpu.c b/kernel/cpu.c
index 241064a32241..7406fe6966f9 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -204,7 +204,7 @@ int cpu_down(unsigned int cpu)
204#endif /*CONFIG_HOTPLUG_CPU*/ 204#endif /*CONFIG_HOTPLUG_CPU*/
205 205
206/* Requires cpu_add_remove_lock to be held */ 206/* Requires cpu_add_remove_lock to be held */
207static int __devinit _cpu_up(unsigned int cpu) 207static int __cpuinit _cpu_up(unsigned int cpu)
208{ 208{
209 int ret; 209 int ret;
210 void *hcpu = (void *)(long)cpu; 210 void *hcpu = (void *)(long)cpu;
@@ -239,7 +239,7 @@ out_notify:
239 return ret; 239 return ret;
240} 240}
241 241
242int __devinit cpu_up(unsigned int cpu) 242int __cpuinit cpu_up(unsigned int cpu)
243{ 243{
244 int err = 0; 244 int err = 0;
245 245
diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c
index 543ea2e5ad93..9d8c79b48823 100644
--- a/kernel/irq/spurious.c
+++ b/kernel/irq/spurious.c
@@ -176,7 +176,7 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc,
176 176
177int noirqdebug __read_mostly; 177int noirqdebug __read_mostly;
178 178
179int __init noirqdebug_setup(char *str) 179int noirqdebug_setup(char *str)
180{ 180{
181 noirqdebug = 1; 181 noirqdebug = 1;
182 printk(KERN_INFO "IRQ lockup detection disabled\n"); 182 printk(KERN_INFO "IRQ lockup detection disabled\n");
diff --git a/kernel/module.c b/kernel/module.c
index dbce132b354c..d0f2260a0210 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1148,10 +1148,10 @@ static int mod_sysfs_setup(struct module *mod,
1148 kobject_uevent(&mod->mkobj.kobj, KOBJ_ADD); 1148 kobject_uevent(&mod->mkobj.kobj, KOBJ_ADD);
1149 return 0; 1149 return 0;
1150 1150
1151out_unreg_drivers:
1152 kobject_unregister(mod->drivers_dir);
1153out_unreg_param: 1151out_unreg_param:
1154 module_param_sysfs_remove(mod); 1152 module_param_sysfs_remove(mod);
1153out_unreg_drivers:
1154 kobject_unregister(mod->drivers_dir);
1155out_unreg: 1155out_unreg:
1156 kobject_del(&mod->mkobj.kobj); 1156 kobject_del(&mod->mkobj.kobj);
1157 kobject_put(&mod->mkobj.kobj); 1157 kobject_put(&mod->mkobj.kobj);
@@ -2327,8 +2327,22 @@ void print_modules(void)
2327 printk("\n"); 2327 printk("\n");
2328} 2328}
2329 2329
2330static char *make_driver_name(struct device_driver *drv)
2331{
2332 char *driver_name;
2333
2334 driver_name = kmalloc(strlen(drv->name) + strlen(drv->bus->name) + 2,
2335 GFP_KERNEL);
2336 if (!driver_name)
2337 return NULL;
2338
2339 sprintf(driver_name, "%s:%s", drv->bus->name, drv->name);
2340 return driver_name;
2341}
2342
2330void module_add_driver(struct module *mod, struct device_driver *drv) 2343void module_add_driver(struct module *mod, struct device_driver *drv)
2331{ 2344{
2345 char *driver_name;
2332 int no_warn; 2346 int no_warn;
2333 2347
2334 if (!mod || !drv) 2348 if (!mod || !drv)
@@ -2336,17 +2350,31 @@ void module_add_driver(struct module *mod, struct device_driver *drv)
2336 2350
2337 /* Don't check return codes; these calls are idempotent */ 2351 /* Don't check return codes; these calls are idempotent */
2338 no_warn = sysfs_create_link(&drv->kobj, &mod->mkobj.kobj, "module"); 2352 no_warn = sysfs_create_link(&drv->kobj, &mod->mkobj.kobj, "module");
2339 no_warn = sysfs_create_link(mod->drivers_dir, &drv->kobj, drv->name); 2353 driver_name = make_driver_name(drv);
2354 if (driver_name) {
2355 no_warn = sysfs_create_link(mod->drivers_dir, &drv->kobj,
2356 driver_name);
2357 kfree(driver_name);
2358 }
2340} 2359}
2341EXPORT_SYMBOL(module_add_driver); 2360EXPORT_SYMBOL(module_add_driver);
2342 2361
2343void module_remove_driver(struct device_driver *drv) 2362void module_remove_driver(struct device_driver *drv)
2344{ 2363{
2364 char *driver_name;
2365
2345 if (!drv) 2366 if (!drv)
2346 return; 2367 return;
2368
2347 sysfs_remove_link(&drv->kobj, "module"); 2369 sysfs_remove_link(&drv->kobj, "module");
2348 if (drv->owner && drv->owner->drivers_dir) 2370 if (drv->owner && drv->owner->drivers_dir) {
2349 sysfs_remove_link(drv->owner->drivers_dir, drv->name); 2371 driver_name = make_driver_name(drv);
2372 if (driver_name) {
2373 sysfs_remove_link(drv->owner->drivers_dir,
2374 driver_name);
2375 kfree(driver_name);
2376 }
2377 }
2350} 2378}
2351EXPORT_SYMBOL(module_remove_driver); 2379EXPORT_SYMBOL(module_remove_driver);
2352 2380
diff --git a/kernel/params.c b/kernel/params.c
index f406655d6653..718945da8f58 100644
--- a/kernel/params.c
+++ b/kernel/params.c
@@ -143,9 +143,15 @@ int parse_args(const char *name,
143 143
144 while (*args) { 144 while (*args) {
145 int ret; 145 int ret;
146 int irq_was_disabled;
146 147
147 args = next_arg(args, &param, &val); 148 args = next_arg(args, &param, &val);
149 irq_was_disabled = irqs_disabled();
148 ret = parse_one(param, val, params, num, unknown); 150 ret = parse_one(param, val, params, num, unknown);
151 if (irq_was_disabled && !irqs_disabled()) {
152 printk(KERN_WARNING "parse_args(): option '%s' enabled "
153 "irq's!\n", param);
154 }
149 switch (ret) { 155 switch (ret) {
150 case -ENOENT: 156 case -ENOENT:
151 printk(KERN_ERR "%s: Unknown parameter `%s'\n", 157 printk(KERN_ERR "%s: Unknown parameter `%s'\n",
diff --git a/kernel/power/swap.c b/kernel/power/swap.c
index f133d4a6d817..3581f8f86acd 100644
--- a/kernel/power/swap.c
+++ b/kernel/power/swap.c
@@ -165,14 +165,15 @@ static int swsusp_swap_check(void) /* This is called before saving image */
165{ 165{
166 int res; 166 int res;
167 167
168 res = swap_type_of(swsusp_resume_device, swsusp_resume_block); 168 res = swap_type_of(swsusp_resume_device, swsusp_resume_block,
169 &resume_bdev);
169 if (res < 0) 170 if (res < 0)
170 return res; 171 return res;
171 172
172 root_swap = res; 173 root_swap = res;
173 resume_bdev = open_by_devnum(swsusp_resume_device, FMODE_WRITE); 174 res = blkdev_get(resume_bdev, FMODE_WRITE, O_RDWR);
174 if (IS_ERR(resume_bdev)) 175 if (res)
175 return PTR_ERR(resume_bdev); 176 return res;
176 177
177 res = set_blocksize(resume_bdev, PAGE_SIZE); 178 res = set_blocksize(resume_bdev, PAGE_SIZE);
178 if (res < 0) 179 if (res < 0)
diff --git a/kernel/power/user.c b/kernel/power/user.c
index 89443b85163b..f7b7a785a5c6 100644
--- a/kernel/power/user.c
+++ b/kernel/power/user.c
@@ -57,7 +57,7 @@ static int snapshot_open(struct inode *inode, struct file *filp)
57 memset(&data->handle, 0, sizeof(struct snapshot_handle)); 57 memset(&data->handle, 0, sizeof(struct snapshot_handle));
58 if ((filp->f_flags & O_ACCMODE) == O_RDONLY) { 58 if ((filp->f_flags & O_ACCMODE) == O_RDONLY) {
59 data->swap = swsusp_resume_device ? 59 data->swap = swsusp_resume_device ?
60 swap_type_of(swsusp_resume_device, 0) : -1; 60 swap_type_of(swsusp_resume_device, 0, NULL) : -1;
61 data->mode = O_RDONLY; 61 data->mode = O_RDONLY;
62 } else { 62 } else {
63 data->swap = -1; 63 data->swap = -1;
@@ -268,7 +268,8 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp,
268 * so we need to recode them 268 * so we need to recode them
269 */ 269 */
270 if (old_decode_dev(arg)) { 270 if (old_decode_dev(arg)) {
271 data->swap = swap_type_of(old_decode_dev(arg), 0); 271 data->swap = swap_type_of(old_decode_dev(arg),
272 0, NULL);
272 if (data->swap < 0) 273 if (data->swap < 0)
273 error = -ENODEV; 274 error = -ENODEV;
274 } else { 275 } else {
@@ -365,7 +366,7 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp,
365 swdev = old_decode_dev(swap_area.dev); 366 swdev = old_decode_dev(swap_area.dev);
366 if (swdev) { 367 if (swdev) {
367 offset = swap_area.offset; 368 offset = swap_area.offset;
368 data->swap = swap_type_of(swdev, offset); 369 data->swap = swap_type_of(swdev, offset, NULL);
369 if (data->swap < 0) 370 if (data->swap < 0)
370 error = -ENODEV; 371 error = -ENODEV;
371 } else { 372 } else {
diff --git a/kernel/profile.c b/kernel/profile.c
index fb5e03d57e9d..a6574a18514e 100644
--- a/kernel/profile.c
+++ b/kernel/profile.c
@@ -40,7 +40,10 @@ int (*timer_hook)(struct pt_regs *) __read_mostly;
40 40
41static atomic_t *prof_buffer; 41static atomic_t *prof_buffer;
42static unsigned long prof_len, prof_shift; 42static unsigned long prof_len, prof_shift;
43
43int prof_on __read_mostly; 44int prof_on __read_mostly;
45EXPORT_SYMBOL_GPL(prof_on);
46
44static cpumask_t prof_cpu_mask = CPU_MASK_ALL; 47static cpumask_t prof_cpu_mask = CPU_MASK_ALL;
45#ifdef CONFIG_SMP 48#ifdef CONFIG_SMP
46static DEFINE_PER_CPU(struct profile_hit *[2], cpu_profile_hits); 49static DEFINE_PER_CPU(struct profile_hit *[2], cpu_profile_hits);
@@ -52,6 +55,7 @@ static int __init profile_setup(char * str)
52{ 55{
53 static char __initdata schedstr[] = "schedule"; 56 static char __initdata schedstr[] = "schedule";
54 static char __initdata sleepstr[] = "sleep"; 57 static char __initdata sleepstr[] = "sleep";
58 static char __initdata kvmstr[] = "kvm";
55 int par; 59 int par;
56 60
57 if (!strncmp(str, sleepstr, strlen(sleepstr))) { 61 if (!strncmp(str, sleepstr, strlen(sleepstr))) {
@@ -63,7 +67,7 @@ static int __init profile_setup(char * str)
63 printk(KERN_INFO 67 printk(KERN_INFO
64 "kernel sleep profiling enabled (shift: %ld)\n", 68 "kernel sleep profiling enabled (shift: %ld)\n",
65 prof_shift); 69 prof_shift);
66 } else if (!strncmp(str, sleepstr, strlen(sleepstr))) { 70 } else if (!strncmp(str, schedstr, strlen(schedstr))) {
67 prof_on = SCHED_PROFILING; 71 prof_on = SCHED_PROFILING;
68 if (str[strlen(schedstr)] == ',') 72 if (str[strlen(schedstr)] == ',')
69 str += strlen(schedstr) + 1; 73 str += strlen(schedstr) + 1;
@@ -72,6 +76,15 @@ static int __init profile_setup(char * str)
72 printk(KERN_INFO 76 printk(KERN_INFO
73 "kernel schedule profiling enabled (shift: %ld)\n", 77 "kernel schedule profiling enabled (shift: %ld)\n",
74 prof_shift); 78 prof_shift);
79 } else if (!strncmp(str, kvmstr, strlen(kvmstr))) {
80 prof_on = KVM_PROFILING;
81 if (str[strlen(kvmstr)] == ',')
82 str += strlen(kvmstr) + 1;
83 if (get_option(&str, &par))
84 prof_shift = par;
85 printk(KERN_INFO
86 "kernel KVM profiling enabled (shift: %ld)\n",
87 prof_shift);
75 } else if (get_option(&str, &par)) { 88 } else if (get_option(&str, &par)) {
76 prof_shift = par; 89 prof_shift = par;
77 prof_on = CPU_PROFILING; 90 prof_on = CPU_PROFILING;
@@ -318,6 +331,7 @@ out:
318 local_irq_restore(flags); 331 local_irq_restore(flags);
319 put_cpu(); 332 put_cpu();
320} 333}
334EXPORT_SYMBOL_GPL(profile_hits);
321 335
322static int __devinit profile_cpu_callback(struct notifier_block *info, 336static int __devinit profile_cpu_callback(struct notifier_block *info,
323 unsigned long action, void *__cpu) 337 unsigned long action, void *__cpu)
diff --git a/kernel/sched.c b/kernel/sched.c
index 3df33da0dafc..cca93cc0dd7d 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -6865,7 +6865,7 @@ void __init sched_init_smp(void)
6865 6865
6866 lock_cpu_hotplug(); 6866 lock_cpu_hotplug();
6867 arch_init_sched_domains(&cpu_online_map); 6867 arch_init_sched_domains(&cpu_online_map);
6868 cpus_andnot(non_isolated_cpus, cpu_online_map, cpu_isolated_map); 6868 cpus_andnot(non_isolated_cpus, cpu_possible_map, cpu_isolated_map);
6869 if (cpus_empty(non_isolated_cpus)) 6869 if (cpus_empty(non_isolated_cpus))
6870 cpu_set(smp_processor_id(), non_isolated_cpus); 6870 cpu_set(smp_processor_id(), non_isolated_cpus);
6871 unlock_cpu_hotplug(); 6871 unlock_cpu_hotplug();
diff --git a/mm/bounce.c b/mm/bounce.c
index e4b62d2a4024..643efbe82402 100644
--- a/mm/bounce.c
+++ b/mm/bounce.c
@@ -237,6 +237,8 @@ static void __blk_queue_bounce(request_queue_t *q, struct bio **bio_orig,
237 if (!bio) 237 if (!bio)
238 return; 238 return;
239 239
240 blk_add_trace_bio(q, *bio_orig, BLK_TA_BOUNCE);
241
240 /* 242 /*
241 * at least one page was bounced, fill in possible non-highmem 243 * at least one page was bounced, fill in possible non-highmem
242 * pages 244 * pages
@@ -291,8 +293,6 @@ void blk_queue_bounce(request_queue_t *q, struct bio **bio_orig)
291 pool = isa_page_pool; 293 pool = isa_page_pool;
292 } 294 }
293 295
294 blk_add_trace_bio(q, *bio_orig, BLK_TA_BOUNCE);
295
296 /* 296 /*
297 * slow path 297 * slow path
298 */ 298 */
diff --git a/mm/memory.c b/mm/memory.c
index 563792f4f687..af227d26e104 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1091,7 +1091,7 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
1091 if (pages) { 1091 if (pages) {
1092 pages[i] = page; 1092 pages[i] = page;
1093 1093
1094 flush_anon_page(page, start); 1094 flush_anon_page(vma, page, start);
1095 flush_dcache_page(page); 1095 flush_dcache_page(page);
1096 } 1096 }
1097 if (vmas) 1097 if (vmas)
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 0c055a090f4d..84279127fcd3 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -67,11 +67,13 @@ static int __add_zone(struct zone *zone, unsigned long phys_start_pfn)
67 zone_type = zone - pgdat->node_zones; 67 zone_type = zone - pgdat->node_zones;
68 if (!populated_zone(zone)) { 68 if (!populated_zone(zone)) {
69 int ret = 0; 69 int ret = 0;
70 ret = init_currently_empty_zone(zone, phys_start_pfn, nr_pages); 70 ret = init_currently_empty_zone(zone, phys_start_pfn,
71 nr_pages, MEMMAP_HOTPLUG);
71 if (ret < 0) 72 if (ret < 0)
72 return ret; 73 return ret;
73 } 74 }
74 memmap_init_zone(nr_pages, nid, zone_type, phys_start_pfn); 75 memmap_init_zone(nr_pages, nid, zone_type,
76 phys_start_pfn, MEMMAP_HOTPLUG);
75 return 0; 77 return 0;
76} 78}
77 79
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 6969cfb33901..b278b8d60eee 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -61,12 +61,6 @@ unsigned long badness(struct task_struct *p, unsigned long uptime)
61 } 61 }
62 62
63 /* 63 /*
64 * swapoff can easily use up all memory, so kill those first.
65 */
66 if (p->flags & PF_SWAPOFF)
67 return ULONG_MAX;
68
69 /*
70 * The memory size of the process is the basis for the badness. 64 * The memory size of the process is the basis for the badness.
71 */ 65 */
72 points = mm->total_vm; 66 points = mm->total_vm;
@@ -77,6 +71,12 @@ unsigned long badness(struct task_struct *p, unsigned long uptime)
77 task_unlock(p); 71 task_unlock(p);
78 72
79 /* 73 /*
74 * swapoff can easily use up all memory, so kill those first.
75 */
76 if (p->flags & PF_SWAPOFF)
77 return ULONG_MAX;
78
79 /*
80 * Processes which fork a lot of child processes are likely 80 * Processes which fork a lot of child processes are likely
81 * a good choice. We add half the vmsize of the children if they 81 * a good choice. We add half the vmsize of the children if they
82 * have an own mm. This prevents forking servers to flood the 82 * have an own mm. This prevents forking servers to flood the
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 8c1a116875bc..fc5b5442e942 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -711,6 +711,9 @@ static void __drain_pages(unsigned int cpu)
711 for_each_zone(zone) { 711 for_each_zone(zone) {
712 struct per_cpu_pageset *pset; 712 struct per_cpu_pageset *pset;
713 713
714 if (!populated_zone(zone))
715 continue;
716
714 pset = zone_pcp(zone, cpu); 717 pset = zone_pcp(zone, cpu);
715 for (i = 0; i < ARRAY_SIZE(pset->pcp); i++) { 718 for (i = 0; i < ARRAY_SIZE(pset->pcp); i++) {
716 struct per_cpu_pages *pcp; 719 struct per_cpu_pages *pcp;
@@ -1953,17 +1956,24 @@ static inline unsigned long wait_table_bits(unsigned long size)
1953 * done. Non-atomic initialization, single-pass. 1956 * done. Non-atomic initialization, single-pass.
1954 */ 1957 */
1955void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone, 1958void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
1956 unsigned long start_pfn) 1959 unsigned long start_pfn, enum memmap_context context)
1957{ 1960{
1958 struct page *page; 1961 struct page *page;
1959 unsigned long end_pfn = start_pfn + size; 1962 unsigned long end_pfn = start_pfn + size;
1960 unsigned long pfn; 1963 unsigned long pfn;
1961 1964
1962 for (pfn = start_pfn; pfn < end_pfn; pfn++) { 1965 for (pfn = start_pfn; pfn < end_pfn; pfn++) {
1963 if (!early_pfn_valid(pfn)) 1966 /*
1964 continue; 1967 * There can be holes in boot-time mem_map[]s
1965 if (!early_pfn_in_nid(pfn, nid)) 1968 * handed to this function. They do not
1966 continue; 1969 * exist on hotplugged memory.
1970 */
1971 if (context == MEMMAP_EARLY) {
1972 if (!early_pfn_valid(pfn))
1973 continue;
1974 if (!early_pfn_in_nid(pfn, nid))
1975 continue;
1976 }
1967 page = pfn_to_page(pfn); 1977 page = pfn_to_page(pfn);
1968 set_page_links(page, zone, nid, pfn); 1978 set_page_links(page, zone, nid, pfn);
1969 init_page_count(page); 1979 init_page_count(page);
@@ -1990,7 +2000,7 @@ void zone_init_free_lists(struct pglist_data *pgdat, struct zone *zone,
1990 2000
1991#ifndef __HAVE_ARCH_MEMMAP_INIT 2001#ifndef __HAVE_ARCH_MEMMAP_INIT
1992#define memmap_init(size, nid, zone, start_pfn) \ 2002#define memmap_init(size, nid, zone, start_pfn) \
1993 memmap_init_zone((size), (nid), (zone), (start_pfn)) 2003 memmap_init_zone((size), (nid), (zone), (start_pfn), MEMMAP_EARLY)
1994#endif 2004#endif
1995 2005
1996static int __cpuinit zone_batchsize(struct zone *zone) 2006static int __cpuinit zone_batchsize(struct zone *zone)
@@ -2236,7 +2246,8 @@ static __meminit void zone_pcp_init(struct zone *zone)
2236 2246
2237__meminit int init_currently_empty_zone(struct zone *zone, 2247__meminit int init_currently_empty_zone(struct zone *zone,
2238 unsigned long zone_start_pfn, 2248 unsigned long zone_start_pfn,
2239 unsigned long size) 2249 unsigned long size,
2250 enum memmap_context context)
2240{ 2251{
2241 struct pglist_data *pgdat = zone->zone_pgdat; 2252 struct pglist_data *pgdat = zone->zone_pgdat;
2242 int ret; 2253 int ret;
@@ -2680,7 +2691,8 @@ static void __meminit free_area_init_core(struct pglist_data *pgdat,
2680 if (!size) 2691 if (!size)
2681 continue; 2692 continue;
2682 2693
2683 ret = init_currently_empty_zone(zone, zone_start_pfn, size); 2694 ret = init_currently_empty_zone(zone, zone_start_pfn,
2695 size, MEMMAP_EARLY);
2684 BUG_ON(ret); 2696 BUG_ON(ret);
2685 zone_start_pfn += size; 2697 zone_start_pfn += size;
2686 } 2698 }
@@ -3321,6 +3333,10 @@ void *__init alloc_large_system_hash(const char *tablename,
3321 numentries >>= (scale - PAGE_SHIFT); 3333 numentries >>= (scale - PAGE_SHIFT);
3322 else 3334 else
3323 numentries <<= (PAGE_SHIFT - scale); 3335 numentries <<= (PAGE_SHIFT - scale);
3336
3337 /* Make sure we've got at least a 0-order allocation.. */
3338 if (unlikely((numentries * bucketsize) < PAGE_SIZE))
3339 numentries = PAGE_SIZE / bucketsize;
3324 } 3340 }
3325 numentries = roundup_pow_of_two(numentries); 3341 numentries = roundup_pow_of_two(numentries);
3326 3342
diff --git a/mm/slab.c b/mm/slab.c
index 0d4e57431de4..c6100628a6ef 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -3281,7 +3281,7 @@ retry:
3281 flags | GFP_THISNODE, nid); 3281 flags | GFP_THISNODE, nid);
3282 } 3282 }
3283 3283
3284 if (!obj) { 3284 if (!obj && !(flags & __GFP_NO_GROW)) {
3285 /* 3285 /*
3286 * This allocation will be performed within the constraints 3286 * This allocation will be performed within the constraints
3287 * of the current cpuset / memory policy requirements. 3287 * of the current cpuset / memory policy requirements.
@@ -3310,7 +3310,7 @@ retry:
3310 */ 3310 */
3311 goto retry; 3311 goto retry;
3312 } else { 3312 } else {
3313 kmem_freepages(cache, obj); 3313 /* cache_grow already freed obj */
3314 obj = NULL; 3314 obj = NULL;
3315 } 3315 }
3316 } 3316 }
diff --git a/mm/swapfile.c b/mm/swapfile.c
index b9fc0e5de6d5..a2d9bb4e80df 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -434,7 +434,7 @@ void free_swap_and_cache(swp_entry_t entry)
434 * 434 *
435 * This is needed for the suspend to disk (aka swsusp). 435 * This is needed for the suspend to disk (aka swsusp).
436 */ 436 */
437int swap_type_of(dev_t device, sector_t offset) 437int swap_type_of(dev_t device, sector_t offset, struct block_device **bdev_p)
438{ 438{
439 struct block_device *bdev = NULL; 439 struct block_device *bdev = NULL;
440 int i; 440 int i;
@@ -450,6 +450,9 @@ int swap_type_of(dev_t device, sector_t offset)
450 continue; 450 continue;
451 451
452 if (!bdev) { 452 if (!bdev) {
453 if (bdev_p)
454 *bdev_p = sis->bdev;
455
453 spin_unlock(&swap_lock); 456 spin_unlock(&swap_lock);
454 return i; 457 return i;
455 } 458 }
@@ -459,6 +462,9 @@ int swap_type_of(dev_t device, sector_t offset)
459 se = list_entry(sis->extent_list.next, 462 se = list_entry(sis->extent_list.next,
460 struct swap_extent, list); 463 struct swap_extent, list);
461 if (se->start_block == offset) { 464 if (se->start_block == offset) {
465 if (bdev_p)
466 *bdev_p = sis->bdev;
467
462 spin_unlock(&swap_lock); 468 spin_unlock(&swap_lock);
463 bdput(bdev); 469 bdput(bdev);
464 return i; 470 return i;
diff --git a/mm/truncate.c b/mm/truncate.c
index ecdfdcc50522..6c79ca4a1ca7 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -341,6 +341,15 @@ failed:
341 return 0; 341 return 0;
342} 342}
343 343
344static int do_launder_page(struct address_space *mapping, struct page *page)
345{
346 if (!PageDirty(page))
347 return 0;
348 if (page->mapping != mapping || mapping->a_ops->launder_page == NULL)
349 return 0;
350 return mapping->a_ops->launder_page(page);
351}
352
344/** 353/**
345 * invalidate_inode_pages2_range - remove range of pages from an address_space 354 * invalidate_inode_pages2_range - remove range of pages from an address_space
346 * @mapping: the address_space 355 * @mapping: the address_space
@@ -405,7 +414,8 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
405 PAGE_CACHE_SIZE, 0); 414 PAGE_CACHE_SIZE, 0);
406 } 415 }
407 } 416 }
408 if (!invalidate_complete_page2(mapping, page)) 417 ret = do_launder_page(mapping, page);
418 if (ret == 0 && !invalidate_complete_page2(mapping, page))
409 ret = -EIO; 419 ret = -EIO;
410 unlock_page(page); 420 unlock_page(page);
411 } 421 }
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 40fea4918390..7430df68cb64 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1406,6 +1406,16 @@ static unsigned long shrink_all_zones(unsigned long nr_pages, int prio,
1406 return ret; 1406 return ret;
1407} 1407}
1408 1408
1409static unsigned long count_lru_pages(void)
1410{
1411 struct zone *zone;
1412 unsigned long ret = 0;
1413
1414 for_each_zone(zone)
1415 ret += zone->nr_active + zone->nr_inactive;
1416 return ret;
1417}
1418
1409/* 1419/*
1410 * Try to free `nr_pages' of memory, system-wide, and return the number of 1420 * Try to free `nr_pages' of memory, system-wide, and return the number of
1411 * freed pages. 1421 * freed pages.
@@ -1420,7 +1430,6 @@ unsigned long shrink_all_memory(unsigned long nr_pages)
1420 unsigned long ret = 0; 1430 unsigned long ret = 0;
1421 int pass; 1431 int pass;
1422 struct reclaim_state reclaim_state; 1432 struct reclaim_state reclaim_state;
1423 struct zone *zone;
1424 struct scan_control sc = { 1433 struct scan_control sc = {
1425 .gfp_mask = GFP_KERNEL, 1434 .gfp_mask = GFP_KERNEL,
1426 .may_swap = 0, 1435 .may_swap = 0,
@@ -1431,10 +1440,7 @@ unsigned long shrink_all_memory(unsigned long nr_pages)
1431 1440
1432 current->reclaim_state = &reclaim_state; 1441 current->reclaim_state = &reclaim_state;
1433 1442
1434 lru_pages = 0; 1443 lru_pages = count_lru_pages();
1435 for_each_zone(zone)
1436 lru_pages += zone->nr_active + zone->nr_inactive;
1437
1438 nr_slab = global_page_state(NR_SLAB_RECLAIMABLE); 1444 nr_slab = global_page_state(NR_SLAB_RECLAIMABLE);
1439 /* If slab caches are huge, it's better to hit them first */ 1445 /* If slab caches are huge, it's better to hit them first */
1440 while (nr_slab >= lru_pages) { 1446 while (nr_slab >= lru_pages) {
@@ -1461,13 +1467,6 @@ unsigned long shrink_all_memory(unsigned long nr_pages)
1461 for (pass = 0; pass < 5; pass++) { 1467 for (pass = 0; pass < 5; pass++) {
1462 int prio; 1468 int prio;
1463 1469
1464 /* Needed for shrinking slab caches later on */
1465 if (!lru_pages)
1466 for_each_zone(zone) {
1467 lru_pages += zone->nr_active;
1468 lru_pages += zone->nr_inactive;
1469 }
1470
1471 /* Force reclaiming mapped pages in the passes #3 and #4 */ 1470 /* Force reclaiming mapped pages in the passes #3 and #4 */
1472 if (pass > 2) { 1471 if (pass > 2) {
1473 sc.may_swap = 1; 1472 sc.may_swap = 1;
@@ -1483,7 +1482,8 @@ unsigned long shrink_all_memory(unsigned long nr_pages)
1483 goto out; 1482 goto out;
1484 1483
1485 reclaim_state.reclaimed_slab = 0; 1484 reclaim_state.reclaimed_slab = 0;
1486 shrink_slab(sc.nr_scanned, sc.gfp_mask, lru_pages); 1485 shrink_slab(sc.nr_scanned, sc.gfp_mask,
1486 count_lru_pages());
1487 ret += reclaim_state.reclaimed_slab; 1487 ret += reclaim_state.reclaimed_slab;
1488 if (ret >= nr_pages) 1488 if (ret >= nr_pages)
1489 goto out; 1489 goto out;
@@ -1491,20 +1491,19 @@ unsigned long shrink_all_memory(unsigned long nr_pages)
1491 if (sc.nr_scanned && prio < DEF_PRIORITY - 2) 1491 if (sc.nr_scanned && prio < DEF_PRIORITY - 2)
1492 congestion_wait(WRITE, HZ / 10); 1492 congestion_wait(WRITE, HZ / 10);
1493 } 1493 }
1494
1495 lru_pages = 0;
1496 } 1494 }
1497 1495
1498 /* 1496 /*
1499 * If ret = 0, we could not shrink LRUs, but there may be something 1497 * If ret = 0, we could not shrink LRUs, but there may be something
1500 * in slab caches 1498 * in slab caches
1501 */ 1499 */
1502 if (!ret) 1500 if (!ret) {
1503 do { 1501 do {
1504 reclaim_state.reclaimed_slab = 0; 1502 reclaim_state.reclaimed_slab = 0;
1505 shrink_slab(nr_pages, sc.gfp_mask, lru_pages); 1503 shrink_slab(nr_pages, sc.gfp_mask, count_lru_pages());
1506 ret += reclaim_state.reclaimed_slab; 1504 ret += reclaim_state.reclaimed_slab;
1507 } while (ret < nr_pages && reclaim_state.reclaimed_slab > 0); 1505 } while (ret < nr_pages && reclaim_state.reclaimed_slab > 0);
1506 }
1508 1507
1509out: 1508out:
1510 current->reclaim_state = NULL; 1509 current->reclaim_state = NULL;
diff --git a/net/bluetooth/cmtp/capi.c b/net/bluetooth/cmtp/capi.c
index be04e9fb11f6..ab166b48ce8d 100644
--- a/net/bluetooth/cmtp/capi.c
+++ b/net/bluetooth/cmtp/capi.c
@@ -196,6 +196,9 @@ static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *s
196 196
197 switch (CAPIMSG_SUBCOMMAND(skb->data)) { 197 switch (CAPIMSG_SUBCOMMAND(skb->data)) {
198 case CAPI_CONF: 198 case CAPI_CONF:
199 if (skb->len < CAPI_MSG_BASELEN + 10)
200 break;
201
199 func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 5); 202 func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 5);
200 info = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 8); 203 info = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 8);
201 204
@@ -226,6 +229,9 @@ static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *s
226 break; 229 break;
227 230
228 case CAPI_FUNCTION_GET_PROFILE: 231 case CAPI_FUNCTION_GET_PROFILE:
232 if (skb->len < CAPI_MSG_BASELEN + 11 + sizeof(capi_profile))
233 break;
234
229 controller = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 11); 235 controller = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 11);
230 msgnum = CAPIMSG_MSGID(skb->data); 236 msgnum = CAPIMSG_MSGID(skb->data);
231 237
@@ -246,17 +252,26 @@ static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *s
246 break; 252 break;
247 253
248 case CAPI_FUNCTION_GET_MANUFACTURER: 254 case CAPI_FUNCTION_GET_MANUFACTURER:
255 if (skb->len < CAPI_MSG_BASELEN + 15)
256 break;
257
249 controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 10); 258 controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 10);
250 259
251 if (!info && ctrl) { 260 if (!info && ctrl) {
261 int len = min_t(uint, CAPI_MANUFACTURER_LEN,
262 skb->data[CAPI_MSG_BASELEN + 14]);
263
264 memset(ctrl->manu, 0, CAPI_MANUFACTURER_LEN);
252 strncpy(ctrl->manu, 265 strncpy(ctrl->manu,
253 skb->data + CAPI_MSG_BASELEN + 15, 266 skb->data + CAPI_MSG_BASELEN + 15, len);
254 skb->data[CAPI_MSG_BASELEN + 14]);
255 } 267 }
256 268
257 break; 269 break;
258 270
259 case CAPI_FUNCTION_GET_VERSION: 271 case CAPI_FUNCTION_GET_VERSION:
272 if (skb->len < CAPI_MSG_BASELEN + 32)
273 break;
274
260 controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12); 275 controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12);
261 276
262 if (!info && ctrl) { 277 if (!info && ctrl) {
@@ -269,13 +284,18 @@ static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *s
269 break; 284 break;
270 285
271 case CAPI_FUNCTION_GET_SERIAL_NUMBER: 286 case CAPI_FUNCTION_GET_SERIAL_NUMBER:
287 if (skb->len < CAPI_MSG_BASELEN + 17)
288 break;
289
272 controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12); 290 controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12);
273 291
274 if (!info && ctrl) { 292 if (!info && ctrl) {
293 int len = min_t(uint, CAPI_SERIAL_LEN,
294 skb->data[CAPI_MSG_BASELEN + 16]);
295
275 memset(ctrl->serial, 0, CAPI_SERIAL_LEN); 296 memset(ctrl->serial, 0, CAPI_SERIAL_LEN);
276 strncpy(ctrl->serial, 297 strncpy(ctrl->serial,
277 skb->data + CAPI_MSG_BASELEN + 17, 298 skb->data + CAPI_MSG_BASELEN + 17, len);
278 skb->data[CAPI_MSG_BASELEN + 16]);
279 } 299 }
280 300
281 break; 301 break;
@@ -284,14 +304,18 @@ static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *s
284 break; 304 break;
285 305
286 case CAPI_IND: 306 case CAPI_IND:
307 if (skb->len < CAPI_MSG_BASELEN + 6)
308 break;
309
287 func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 3); 310 func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 3);
288 311
289 if (func == CAPI_FUNCTION_LOOPBACK) { 312 if (func == CAPI_FUNCTION_LOOPBACK) {
313 int len = min_t(uint, skb->len - CAPI_MSG_BASELEN - 6,
314 skb->data[CAPI_MSG_BASELEN + 5]);
290 appl = CAPIMSG_APPID(skb->data); 315 appl = CAPIMSG_APPID(skb->data);
291 msgnum = CAPIMSG_MSGID(skb->data); 316 msgnum = CAPIMSG_MSGID(skb->data);
292 cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func, 317 cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func,
293 skb->data + CAPI_MSG_BASELEN + 6, 318 skb->data + CAPI_MSG_BASELEN + 6, len);
294 skb->data[CAPI_MSG_BASELEN + 5]);
295 } 319 }
296 320
297 break; 321 break;
@@ -309,6 +333,9 @@ void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb)
309 333
310 BT_DBG("session %p skb %p len %d", session, skb, skb->len); 334 BT_DBG("session %p skb %p len %d", session, skb, skb->len);
311 335
336 if (skb->len < CAPI_MSG_BASELEN)
337 return;
338
312 if (CAPIMSG_COMMAND(skb->data) == CAPI_INTEROPERABILITY) { 339 if (CAPIMSG_COMMAND(skb->data) == CAPI_INTEROPERABILITY) {
313 cmtp_recv_interopmsg(session, skb); 340 cmtp_recv_interopmsg(session, skb);
314 return; 341 return;
diff --git a/net/bluetooth/hci_sysfs.c b/net/bluetooth/hci_sysfs.c
index d4c935692ccf..801d687ea4ef 100644
--- a/net/bluetooth/hci_sysfs.c
+++ b/net/bluetooth/hci_sysfs.c
@@ -242,7 +242,7 @@ static void add_conn(struct work_struct *work)
242 struct hci_conn *conn = container_of(work, struct hci_conn, work); 242 struct hci_conn *conn = container_of(work, struct hci_conn, work);
243 int i; 243 int i;
244 244
245 if (device_register(&conn->dev) < 0) { 245 if (device_add(&conn->dev) < 0) {
246 BT_ERR("Failed to register connection device"); 246 BT_ERR("Failed to register connection device");
247 return; 247 return;
248 } 248 }
@@ -272,6 +272,8 @@ void hci_conn_add_sysfs(struct hci_conn *conn)
272 272
273 dev_set_drvdata(&conn->dev, conn); 273 dev_set_drvdata(&conn->dev, conn);
274 274
275 device_initialize(&conn->dev);
276
275 INIT_WORK(&conn->work, add_conn); 277 INIT_WORK(&conn->work, add_conn);
276 278
277 schedule_work(&conn->work); 279 schedule_work(&conn->work);
@@ -287,6 +289,9 @@ void hci_conn_del_sysfs(struct hci_conn *conn)
287{ 289{
288 BT_DBG("conn %p", conn); 290 BT_DBG("conn %p", conn);
289 291
292 if (!device_is_registered(&conn->dev))
293 return;
294
290 INIT_WORK(&conn->work, del_conn); 295 INIT_WORK(&conn->work, del_conn);
291 296
292 schedule_work(&conn->work); 297 schedule_work(&conn->work);
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
index 544d65b7baa7..cb7e855f0828 100644
--- a/net/bluetooth/rfcomm/sock.c
+++ b/net/bluetooth/rfcomm/sock.c
@@ -557,7 +557,6 @@ static int rfcomm_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
557 struct sock *sk = sock->sk; 557 struct sock *sk = sock->sk;
558 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; 558 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
559 struct sk_buff *skb; 559 struct sk_buff *skb;
560 int err;
561 int sent = 0; 560 int sent = 0;
562 561
563 if (msg->msg_flags & MSG_OOB) 562 if (msg->msg_flags & MSG_OOB)
@@ -572,6 +571,7 @@ static int rfcomm_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
572 571
573 while (len) { 572 while (len) {
574 size_t size = min_t(size_t, len, d->mtu); 573 size_t size = min_t(size_t, len, d->mtu);
574 int err;
575 575
576 skb = sock_alloc_send_skb(sk, size + RFCOMM_SKB_RESERVE, 576 skb = sock_alloc_send_skb(sk, size + RFCOMM_SKB_RESERVE,
577 msg->msg_flags & MSG_DONTWAIT, &err); 577 msg->msg_flags & MSG_DONTWAIT, &err);
@@ -582,13 +582,16 @@ static int rfcomm_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
582 err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size); 582 err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size);
583 if (err) { 583 if (err) {
584 kfree_skb(skb); 584 kfree_skb(skb);
585 sent = err; 585 if (sent == 0)
586 sent = err;
586 break; 587 break;
587 } 588 }
588 589
589 err = rfcomm_dlc_send(d, skb); 590 err = rfcomm_dlc_send(d, skb);
590 if (err < 0) { 591 if (err < 0) {
591 kfree_skb(skb); 592 kfree_skb(skb);
593 if (sent == 0)
594 sent = err;
592 break; 595 break;
593 } 596 }
594 597
@@ -598,7 +601,7 @@ static int rfcomm_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
598 601
599 release_sock(sk); 602 release_sock(sk);
600 603
601 return sent ? sent : err; 604 return sent;
602} 605}
603 606
604static long rfcomm_sock_data_wait(struct sock *sk, long timeo) 607static long rfcomm_sock_data_wait(struct sock *sk, long timeo)
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index e0e0d09023b2..eb2b52484c70 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -697,9 +697,13 @@ static int rfcomm_tty_write_room(struct tty_struct *tty)
697 697
698 BT_DBG("tty %p", tty); 698 BT_DBG("tty %p", tty);
699 699
700 if (!dev || !dev->dlc)
701 return 0;
702
700 room = rfcomm_room(dev->dlc) - atomic_read(&dev->wmem_alloc); 703 room = rfcomm_room(dev->dlc) - atomic_read(&dev->wmem_alloc);
701 if (room < 0) 704 if (room < 0)
702 room = 0; 705 room = 0;
706
703 return room; 707 return room;
704} 708}
705 709
@@ -915,12 +919,14 @@ static void rfcomm_tty_unthrottle(struct tty_struct *tty)
915static int rfcomm_tty_chars_in_buffer(struct tty_struct *tty) 919static int rfcomm_tty_chars_in_buffer(struct tty_struct *tty)
916{ 920{
917 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; 921 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
918 struct rfcomm_dlc *dlc = dev->dlc;
919 922
920 BT_DBG("tty %p dev %p", tty, dev); 923 BT_DBG("tty %p dev %p", tty, dev);
921 924
922 if (!skb_queue_empty(&dlc->tx_queue)) 925 if (!dev || !dev->dlc)
923 return dlc->mtu; 926 return 0;
927
928 if (!skb_queue_empty(&dev->dlc->tx_queue))
929 return dev->dlc->mtu;
924 930
925 return 0; 931 return 0;
926} 932}
@@ -928,11 +934,12 @@ static int rfcomm_tty_chars_in_buffer(struct tty_struct *tty)
928static void rfcomm_tty_flush_buffer(struct tty_struct *tty) 934static void rfcomm_tty_flush_buffer(struct tty_struct *tty)
929{ 935{
930 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; 936 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
931 if (!dev)
932 return;
933 937
934 BT_DBG("tty %p dev %p", tty, dev); 938 BT_DBG("tty %p dev %p", tty, dev);
935 939
940 if (!dev || !dev->dlc)
941 return;
942
936 skb_queue_purge(&dev->dlc->tx_queue); 943 skb_queue_purge(&dev->dlc->tx_queue);
937 944
938 if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup) 945 if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup)
@@ -952,11 +959,12 @@ static void rfcomm_tty_wait_until_sent(struct tty_struct *tty, int timeout)
952static void rfcomm_tty_hangup(struct tty_struct *tty) 959static void rfcomm_tty_hangup(struct tty_struct *tty)
953{ 960{
954 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; 961 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
955 if (!dev)
956 return;
957 962
958 BT_DBG("tty %p dev %p", tty, dev); 963 BT_DBG("tty %p dev %p", tty, dev);
959 964
965 if (!dev)
966 return;
967
960 rfcomm_tty_flush_buffer(tty); 968 rfcomm_tty_flush_buffer(tty);
961 969
962 if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) 970 if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags))
diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
index bee558a41800..6c84ccb8c9d7 100644
--- a/net/bridge/netfilter/ebtables.c
+++ b/net/bridge/netfilter/ebtables.c
@@ -610,7 +610,7 @@ ebt_check_entry(struct ebt_entry *e, struct ebt_table_info *newinfo,
610 struct ebt_entry_target *t; 610 struct ebt_entry_target *t;
611 struct ebt_target *target; 611 struct ebt_target *target;
612 unsigned int i, j, hook = 0, hookmask = 0; 612 unsigned int i, j, hook = 0, hookmask = 0;
613 size_t gap = e->next_offset - e->target_offset; 613 size_t gap;
614 int ret; 614 int ret;
615 615
616 /* don't mess with the struct ebt_entries */ 616 /* don't mess with the struct ebt_entries */
@@ -660,6 +660,7 @@ ebt_check_entry(struct ebt_entry *e, struct ebt_table_info *newinfo,
660 if (ret != 0) 660 if (ret != 0)
661 goto cleanup_watchers; 661 goto cleanup_watchers;
662 t = (struct ebt_entry_target *)(((char *)e) + e->target_offset); 662 t = (struct ebt_entry_target *)(((char *)e) + e->target_offset);
663 gap = e->next_offset - e->target_offset;
663 target = find_target_lock(t->u.name, &ret, &ebt_mutex); 664 target = find_target_lock(t->u.name, &ret, &ebt_mutex);
664 if (!target) 665 if (!target)
665 goto cleanup_watchers; 666 goto cleanup_watchers;
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index 1897a3a385d8..04d4b93c68eb 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -148,6 +148,7 @@
148#include <linux/seq_file.h> 148#include <linux/seq_file.h>
149#include <linux/wait.h> 149#include <linux/wait.h>
150#include <linux/etherdevice.h> 150#include <linux/etherdevice.h>
151#include <linux/kthread.h>
151#include <net/checksum.h> 152#include <net/checksum.h>
152#include <net/ipv6.h> 153#include <net/ipv6.h>
153#include <net/addrconf.h> 154#include <net/addrconf.h>
@@ -360,8 +361,7 @@ struct pktgen_thread {
360 spinlock_t if_lock; 361 spinlock_t if_lock;
361 struct list_head if_list; /* All device here */ 362 struct list_head if_list; /* All device here */
362 struct list_head th_list; 363 struct list_head th_list;
363 int removed; 364 struct task_struct *tsk;
364 char name[32];
365 char result[512]; 365 char result[512];
366 u32 max_before_softirq; /* We'll call do_softirq to prevent starvation. */ 366 u32 max_before_softirq; /* We'll call do_softirq to prevent starvation. */
367 367
@@ -1689,7 +1689,7 @@ static int pktgen_thread_show(struct seq_file *seq, void *v)
1689 BUG_ON(!t); 1689 BUG_ON(!t);
1690 1690
1691 seq_printf(seq, "Name: %s max_before_softirq: %d\n", 1691 seq_printf(seq, "Name: %s max_before_softirq: %d\n",
1692 t->name, t->max_before_softirq); 1692 t->tsk->comm, t->max_before_softirq);
1693 1693
1694 seq_printf(seq, "Running: "); 1694 seq_printf(seq, "Running: ");
1695 1695
@@ -3112,7 +3112,7 @@ static void pktgen_rem_thread(struct pktgen_thread *t)
3112{ 3112{
3113 /* Remove from the thread list */ 3113 /* Remove from the thread list */
3114 3114
3115 remove_proc_entry(t->name, pg_proc_dir); 3115 remove_proc_entry(t->tsk->comm, pg_proc_dir);
3116 3116
3117 mutex_lock(&pktgen_thread_lock); 3117 mutex_lock(&pktgen_thread_lock);
3118 3118
@@ -3260,58 +3260,40 @@ out:;
3260 * Main loop of the thread goes here 3260 * Main loop of the thread goes here
3261 */ 3261 */
3262 3262
3263static void pktgen_thread_worker(struct pktgen_thread *t) 3263static int pktgen_thread_worker(void *arg)
3264{ 3264{
3265 DEFINE_WAIT(wait); 3265 DEFINE_WAIT(wait);
3266 struct pktgen_thread *t = arg;
3266 struct pktgen_dev *pkt_dev = NULL; 3267 struct pktgen_dev *pkt_dev = NULL;
3267 int cpu = t->cpu; 3268 int cpu = t->cpu;
3268 sigset_t tmpsig;
3269 u32 max_before_softirq; 3269 u32 max_before_softirq;
3270 u32 tx_since_softirq = 0; 3270 u32 tx_since_softirq = 0;
3271 3271
3272 daemonize("pktgen/%d", cpu); 3272 BUG_ON(smp_processor_id() != cpu);
3273
3274 /* Block all signals except SIGKILL, SIGSTOP and SIGTERM */
3275
3276 spin_lock_irq(&current->sighand->siglock);
3277 tmpsig = current->blocked;
3278 siginitsetinv(&current->blocked,
3279 sigmask(SIGKILL) | sigmask(SIGSTOP) | sigmask(SIGTERM));
3280
3281 recalc_sigpending();
3282 spin_unlock_irq(&current->sighand->siglock);
3283
3284 /* Migrate to the right CPU */
3285 set_cpus_allowed(current, cpumask_of_cpu(cpu));
3286 if (smp_processor_id() != cpu)
3287 BUG();
3288 3273
3289 init_waitqueue_head(&t->queue); 3274 init_waitqueue_head(&t->queue);
3290 3275
3291 t->control &= ~(T_TERMINATE);
3292 t->control &= ~(T_RUN);
3293 t->control &= ~(T_STOP);
3294 t->control &= ~(T_REMDEVALL);
3295 t->control &= ~(T_REMDEV);
3296
3297 t->pid = current->pid; 3276 t->pid = current->pid;
3298 3277
3299 PG_DEBUG(printk("pktgen: starting pktgen/%d: pid=%d\n", cpu, current->pid)); 3278 PG_DEBUG(printk("pktgen: starting pktgen/%d: pid=%d\n", cpu, current->pid));
3300 3279
3301 max_before_softirq = t->max_before_softirq; 3280 max_before_softirq = t->max_before_softirq;
3302 3281
3303 __set_current_state(TASK_INTERRUPTIBLE); 3282 set_current_state(TASK_INTERRUPTIBLE);
3304 mb();
3305 3283
3306 while (1) { 3284 while (!kthread_should_stop()) {
3307 3285 pkt_dev = next_to_run(t);
3308 __set_current_state(TASK_RUNNING);
3309 3286
3310 /* 3287 if (!pkt_dev &&
3311 * Get next dev to xmit -- if any. 3288 (t->control & (T_STOP | T_RUN | T_REMDEVALL | T_REMDEV))
3312 */ 3289 == 0) {
3290 prepare_to_wait(&(t->queue), &wait,
3291 TASK_INTERRUPTIBLE);
3292 schedule_timeout(HZ / 10);
3293 finish_wait(&(t->queue), &wait);
3294 }
3313 3295
3314 pkt_dev = next_to_run(t); 3296 __set_current_state(TASK_RUNNING);
3315 3297
3316 if (pkt_dev) { 3298 if (pkt_dev) {
3317 3299
@@ -3329,21 +3311,8 @@ static void pktgen_thread_worker(struct pktgen_thread *t)
3329 do_softirq(); 3311 do_softirq();
3330 tx_since_softirq = 0; 3312 tx_since_softirq = 0;
3331 } 3313 }
3332 } else {
3333 prepare_to_wait(&(t->queue), &wait, TASK_INTERRUPTIBLE);
3334 schedule_timeout(HZ / 10);
3335 finish_wait(&(t->queue), &wait);
3336 } 3314 }
3337 3315
3338 /*
3339 * Back from sleep, either due to the timeout or signal.
3340 * We check if we have any "posted" work for us.
3341 */
3342
3343 if (t->control & T_TERMINATE || signal_pending(current))
3344 /* we received a request to terminate ourself */
3345 break;
3346
3347 if (t->control & T_STOP) { 3316 if (t->control & T_STOP) {
3348 pktgen_stop(t); 3317 pktgen_stop(t);
3349 t->control &= ~(T_STOP); 3318 t->control &= ~(T_STOP);
@@ -3364,20 +3333,19 @@ static void pktgen_thread_worker(struct pktgen_thread *t)
3364 t->control &= ~(T_REMDEV); 3333 t->control &= ~(T_REMDEV);
3365 } 3334 }
3366 3335
3367 if (need_resched()) 3336 set_current_state(TASK_INTERRUPTIBLE);
3368 schedule();
3369 } 3337 }
3370 3338
3371 PG_DEBUG(printk("pktgen: %s stopping all device\n", t->name)); 3339 PG_DEBUG(printk("pktgen: %s stopping all device\n", t->tsk->comm));
3372 pktgen_stop(t); 3340 pktgen_stop(t);
3373 3341
3374 PG_DEBUG(printk("pktgen: %s removing all device\n", t->name)); 3342 PG_DEBUG(printk("pktgen: %s removing all device\n", t->tsk->comm));
3375 pktgen_rem_all_ifs(t); 3343 pktgen_rem_all_ifs(t);
3376 3344
3377 PG_DEBUG(printk("pktgen: %s removing thread.\n", t->name)); 3345 PG_DEBUG(printk("pktgen: %s removing thread.\n", t->tsk->comm));
3378 pktgen_rem_thread(t); 3346 pktgen_rem_thread(t);
3379 3347
3380 t->removed = 1; 3348 return 0;
3381} 3349}
3382 3350
3383static struct pktgen_dev *pktgen_find_dev(struct pktgen_thread *t, 3351static struct pktgen_dev *pktgen_find_dev(struct pktgen_thread *t,
@@ -3495,37 +3463,11 @@ static int pktgen_add_device(struct pktgen_thread *t, const char *ifname)
3495 return add_dev_to_thread(t, pkt_dev); 3463 return add_dev_to_thread(t, pkt_dev);
3496} 3464}
3497 3465
3498static struct pktgen_thread *__init pktgen_find_thread(const char *name) 3466static int __init pktgen_create_thread(int cpu)
3499{ 3467{
3500 struct pktgen_thread *t; 3468 struct pktgen_thread *t;
3501
3502 mutex_lock(&pktgen_thread_lock);
3503
3504 list_for_each_entry(t, &pktgen_threads, th_list)
3505 if (strcmp(t->name, name) == 0) {
3506 mutex_unlock(&pktgen_thread_lock);
3507 return t;
3508 }
3509
3510 mutex_unlock(&pktgen_thread_lock);
3511 return NULL;
3512}
3513
3514static int __init pktgen_create_thread(const char *name, int cpu)
3515{
3516 int err;
3517 struct pktgen_thread *t = NULL;
3518 struct proc_dir_entry *pe; 3469 struct proc_dir_entry *pe;
3519 3470 struct task_struct *p;
3520 if (strlen(name) > 31) {
3521 printk("pktgen: ERROR: Thread name cannot be more than 31 characters.\n");
3522 return -EINVAL;
3523 }
3524
3525 if (pktgen_find_thread(name)) {
3526 printk("pktgen: ERROR: thread: %s already exists\n", name);
3527 return -EINVAL;
3528 }
3529 3471
3530 t = kzalloc(sizeof(struct pktgen_thread), GFP_KERNEL); 3472 t = kzalloc(sizeof(struct pktgen_thread), GFP_KERNEL);
3531 if (!t) { 3473 if (!t) {
@@ -3533,14 +3475,29 @@ static int __init pktgen_create_thread(const char *name, int cpu)
3533 return -ENOMEM; 3475 return -ENOMEM;
3534 } 3476 }
3535 3477
3536 strcpy(t->name, name);
3537 spin_lock_init(&t->if_lock); 3478 spin_lock_init(&t->if_lock);
3538 t->cpu = cpu; 3479 t->cpu = cpu;
3539 3480
3540 pe = create_proc_entry(t->name, 0600, pg_proc_dir); 3481 INIT_LIST_HEAD(&t->if_list);
3482
3483 list_add_tail(&t->th_list, &pktgen_threads);
3484
3485 p = kthread_create(pktgen_thread_worker, t, "kpktgend_%d", cpu);
3486 if (IS_ERR(p)) {
3487 printk("pktgen: kernel_thread() failed for cpu %d\n", t->cpu);
3488 list_del(&t->th_list);
3489 kfree(t);
3490 return PTR_ERR(p);
3491 }
3492 kthread_bind(p, cpu);
3493 t->tsk = p;
3494
3495 pe = create_proc_entry(t->tsk->comm, 0600, pg_proc_dir);
3541 if (!pe) { 3496 if (!pe) {
3542 printk("pktgen: cannot create %s/%s procfs entry.\n", 3497 printk("pktgen: cannot create %s/%s procfs entry.\n",
3543 PG_PROC_DIR, t->name); 3498 PG_PROC_DIR, t->tsk->comm);
3499 kthread_stop(p);
3500 list_del(&t->th_list);
3544 kfree(t); 3501 kfree(t);
3545 return -EINVAL; 3502 return -EINVAL;
3546 } 3503 }
@@ -3548,21 +3505,7 @@ static int __init pktgen_create_thread(const char *name, int cpu)
3548 pe->proc_fops = &pktgen_thread_fops; 3505 pe->proc_fops = &pktgen_thread_fops;
3549 pe->data = t; 3506 pe->data = t;
3550 3507
3551 INIT_LIST_HEAD(&t->if_list); 3508 wake_up_process(p);
3552
3553 list_add_tail(&t->th_list, &pktgen_threads);
3554
3555 t->removed = 0;
3556
3557 err = kernel_thread((void *)pktgen_thread_worker, (void *)t,
3558 CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
3559 if (err < 0) {
3560 printk("pktgen: kernel_thread() failed for cpu %d\n", t->cpu);
3561 remove_proc_entry(t->name, pg_proc_dir);
3562 list_del(&t->th_list);
3563 kfree(t);
3564 return err;
3565 }
3566 3509
3567 return 0; 3510 return 0;
3568} 3511}
@@ -3643,10 +3586,8 @@ static int __init pg_init(void)
3643 3586
3644 for_each_online_cpu(cpu) { 3587 for_each_online_cpu(cpu) {
3645 int err; 3588 int err;
3646 char buf[30];
3647 3589
3648 sprintf(buf, "kpktgend_%i", cpu); 3590 err = pktgen_create_thread(cpu);
3649 err = pktgen_create_thread(buf, cpu);
3650 if (err) 3591 if (err)
3651 printk("pktgen: WARNING: Cannot create thread for cpu %d (%d)\n", 3592 printk("pktgen: WARNING: Cannot create thread for cpu %d (%d)\n",
3652 cpu, err); 3593 cpu, err);
@@ -3674,9 +3615,8 @@ static void __exit pg_cleanup(void)
3674 3615
3675 list_for_each_safe(q, n, &pktgen_threads) { 3616 list_for_each_safe(q, n, &pktgen_threads) {
3676 t = list_entry(q, struct pktgen_thread, th_list); 3617 t = list_entry(q, struct pktgen_thread, th_list);
3677 t->control |= (T_TERMINATE); 3618 kthread_stop(t->tsk);
3678 3619 kfree(t);
3679 wait_event_interruptible_timeout(queue, (t->removed == 1), HZ);
3680 } 3620 }
3681 3621
3682 /* Un-register us from receiving netdevice events */ 3622 /* Un-register us from receiving netdevice events */
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 1144900d37f6..864009643675 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -305,7 +305,7 @@ lookup_protocol:
305 sk->sk_reuse = 1; 305 sk->sk_reuse = 1;
306 306
307 inet = inet_sk(sk); 307 inet = inet_sk(sk);
308 inet->is_icsk = INET_PROTOSW_ICSK & answer_flags; 308 inet->is_icsk = (INET_PROTOSW_ICSK & answer_flags) != 0;
309 309
310 if (SOCK_RAW == sock->type) { 310 if (SOCK_RAW == sock->type) {
311 inet->num = protocol; 311 inet->num = protocol;
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index 84bed40273ad..480ace9819f6 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -165,9 +165,8 @@ struct in_device *inetdev_init(struct net_device *dev)
165 NET_IPV4_NEIGH, "ipv4", NULL, NULL); 165 NET_IPV4_NEIGH, "ipv4", NULL, NULL);
166#endif 166#endif
167 167
168 /* Account for reference dev->ip_ptr */ 168 /* Account for reference dev->ip_ptr (below) */
169 in_dev_hold(in_dev); 169 in_dev_hold(in_dev);
170 rcu_assign_pointer(dev->ip_ptr, in_dev);
171 170
172#ifdef CONFIG_SYSCTL 171#ifdef CONFIG_SYSCTL
173 devinet_sysctl_register(in_dev, &in_dev->cnf); 172 devinet_sysctl_register(in_dev, &in_dev->cnf);
@@ -175,6 +174,9 @@ struct in_device *inetdev_init(struct net_device *dev)
175 ip_mc_init_dev(in_dev); 174 ip_mc_init_dev(in_dev);
176 if (dev->flags & IFF_UP) 175 if (dev->flags & IFF_UP)
177 ip_mc_up(in_dev); 176 ip_mc_up(in_dev);
177
178 /* we can receive as soon as ip_ptr is set -- do this last */
179 rcu_assign_pointer(dev->ip_ptr, in_dev);
178out: 180out:
179 return in_dev; 181 return in_dev;
180out_kfree: 182out_kfree:
diff --git a/net/ipv4/netfilter.c b/net/ipv4/netfilter.c
index a68966059b50..c47ce7076bd5 100644
--- a/net/ipv4/netfilter.c
+++ b/net/ipv4/netfilter.c
@@ -15,16 +15,19 @@ int ip_route_me_harder(struct sk_buff **pskb, unsigned addr_type)
15 struct flowi fl = {}; 15 struct flowi fl = {};
16 struct dst_entry *odst; 16 struct dst_entry *odst;
17 unsigned int hh_len; 17 unsigned int hh_len;
18 unsigned int type;
18 19
20 type = inet_addr_type(iph->saddr);
19 if (addr_type == RTN_UNSPEC) 21 if (addr_type == RTN_UNSPEC)
20 addr_type = inet_addr_type(iph->saddr); 22 addr_type = type;
21 23
22 /* some non-standard hacks like ipt_REJECT.c:send_reset() can cause 24 /* some non-standard hacks like ipt_REJECT.c:send_reset() can cause
23 * packets with foreign saddr to appear on the NF_IP_LOCAL_OUT hook. 25 * packets with foreign saddr to appear on the NF_IP_LOCAL_OUT hook.
24 */ 26 */
25 if (addr_type == RTN_LOCAL) { 27 if (addr_type == RTN_LOCAL) {
26 fl.nl_u.ip4_u.daddr = iph->daddr; 28 fl.nl_u.ip4_u.daddr = iph->daddr;
27 fl.nl_u.ip4_u.saddr = iph->saddr; 29 if (type == RTN_LOCAL)
30 fl.nl_u.ip4_u.saddr = iph->saddr;
28 fl.nl_u.ip4_u.tos = RT_TOS(iph->tos); 31 fl.nl_u.ip4_u.tos = RT_TOS(iph->tos);
29 fl.oif = (*pskb)->sk ? (*pskb)->sk->sk_bound_dev_if : 0; 32 fl.oif = (*pskb)->sk ? (*pskb)->sk->sk_bound_dev_if : 0;
30 fl.mark = (*pskb)->mark; 33 fl.mark = (*pskb)->mark;
diff --git a/net/ipv4/netfilter/Kconfig b/net/ipv4/netfilter/Kconfig
index f6026d4ac428..47bd3ad18b71 100644
--- a/net/ipv4/netfilter/Kconfig
+++ b/net/ipv4/netfilter/Kconfig
@@ -6,8 +6,8 @@ menu "IP: Netfilter Configuration"
6 depends on INET && NETFILTER 6 depends on INET && NETFILTER
7 7
8config NF_CONNTRACK_IPV4 8config NF_CONNTRACK_IPV4
9 tristate "IPv4 connection tracking support (required for NAT) (EXPERIMENTAL)" 9 tristate "IPv4 connection tracking support (required for NAT)"
10 depends on EXPERIMENTAL && NF_CONNTRACK 10 depends on NF_CONNTRACK
11 ---help--- 11 ---help---
12 Connection tracking keeps a record of what packets have passed 12 Connection tracking keeps a record of what packets have passed
13 through your machine, in order to figure out how they are related 13 through your machine, in order to figure out how they are related
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
index 09696f16aa95..fc1f153c86ba 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -919,13 +919,13 @@ copy_entries_to_user(unsigned int total_size,
919#ifdef CONFIG_COMPAT 919#ifdef CONFIG_COMPAT
920struct compat_delta { 920struct compat_delta {
921 struct compat_delta *next; 921 struct compat_delta *next;
922 u_int16_t offset; 922 unsigned int offset;
923 short delta; 923 short delta;
924}; 924};
925 925
926static struct compat_delta *compat_offsets = NULL; 926static struct compat_delta *compat_offsets = NULL;
927 927
928static int compat_add_offset(u_int16_t offset, short delta) 928static int compat_add_offset(unsigned int offset, short delta)
929{ 929{
930 struct compat_delta *tmp; 930 struct compat_delta *tmp;
931 931
@@ -957,7 +957,7 @@ static void compat_flush_offsets(void)
957 } 957 }
958} 958}
959 959
960static short compat_calc_jump(u_int16_t offset) 960static short compat_calc_jump(unsigned int offset)
961{ 961{
962 struct compat_delta *tmp; 962 struct compat_delta *tmp;
963 short delta; 963 short delta;
@@ -997,7 +997,7 @@ static int compat_calc_entry(struct ipt_entry *e, struct xt_table_info *info,
997 void *base, struct xt_table_info *newinfo) 997 void *base, struct xt_table_info *newinfo)
998{ 998{
999 struct ipt_entry_target *t; 999 struct ipt_entry_target *t;
1000 u_int16_t entry_offset; 1000 unsigned int entry_offset;
1001 int off, i, ret; 1001 int off, i, ret;
1002 1002
1003 off = 0; 1003 off = 0;
@@ -1467,7 +1467,7 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
1467{ 1467{
1468 struct ipt_entry_target *t; 1468 struct ipt_entry_target *t;
1469 struct ipt_target *target; 1469 struct ipt_target *target;
1470 u_int16_t entry_offset; 1470 unsigned int entry_offset;
1471 int ret, off, h, j; 1471 int ret, off, h, j;
1472 1472
1473 duprintf("check_compat_entry_size_and_hooks %p\n", e); 1473 duprintf("check_compat_entry_size_and_hooks %p\n", e);
diff --git a/net/ipv4/netfilter/ipt_MASQUERADE.c b/net/ipv4/netfilter/ipt_MASQUERADE.c
index 28b9233956b5..d669685afd04 100644
--- a/net/ipv4/netfilter/ipt_MASQUERADE.c
+++ b/net/ipv4/netfilter/ipt_MASQUERADE.c
@@ -127,10 +127,13 @@ masquerade_target(struct sk_buff **pskb,
127static inline int 127static inline int
128device_cmp(struct ip_conntrack *i, void *ifindex) 128device_cmp(struct ip_conntrack *i, void *ifindex)
129{ 129{
130 int ret;
130#ifdef CONFIG_NF_NAT_NEEDED 131#ifdef CONFIG_NF_NAT_NEEDED
131 struct nf_conn_nat *nat = nfct_nat(i); 132 struct nf_conn_nat *nat = nfct_nat(i);
133
134 if (!nat)
135 return 0;
132#endif 136#endif
133 int ret;
134 137
135 read_lock_bh(&masq_lock); 138 read_lock_bh(&masq_lock);
136#ifdef CONFIG_NF_NAT_NEEDED 139#ifdef CONFIG_NF_NAT_NEEDED
diff --git a/net/ipv4/netfilter/nf_nat_standalone.c b/net/ipv4/netfilter/nf_nat_standalone.c
index 730a7a44c883..00d6dea9f7f3 100644
--- a/net/ipv4/netfilter/nf_nat_standalone.c
+++ b/net/ipv4/netfilter/nf_nat_standalone.c
@@ -123,7 +123,7 @@ nf_nat_fn(unsigned int hooknum,
123 123
124 nat = nfct_nat(ct); 124 nat = nfct_nat(ct);
125 if (!nat) 125 if (!nat)
126 return NF_DROP; 126 return NF_ACCEPT;
127 127
128 switch (ctinfo) { 128 switch (ctinfo) {
129 case IP_CT_RELATED: 129 case IP_CT_RELATED:
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index bf7a22412bcb..12de90a5047c 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -648,7 +648,7 @@ static void tcp_v4_send_ack(struct tcp_timewait_sock *twsk,
648 TCPOLEN_TIMESTAMP); 648 TCPOLEN_TIMESTAMP);
649 rep.opt[1] = htonl(tcp_time_stamp); 649 rep.opt[1] = htonl(tcp_time_stamp);
650 rep.opt[2] = htonl(ts); 650 rep.opt[2] = htonl(ts);
651 arg.iov[0].iov_len = TCPOLEN_TSTAMP_ALIGNED; 651 arg.iov[0].iov_len += TCPOLEN_TSTAMP_ALIGNED;
652 } 652 }
653 653
654 /* Swap the send and the receive. */ 654 /* Swap the send and the receive. */
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 9b0a90643151..171e5b55d7d6 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -413,8 +413,6 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
413 if (netif_carrier_ok(dev)) 413 if (netif_carrier_ok(dev))
414 ndev->if_flags |= IF_READY; 414 ndev->if_flags |= IF_READY;
415 415
416 /* protected by rtnl_lock */
417 rcu_assign_pointer(dev->ip6_ptr, ndev);
418 416
419 ipv6_mc_init_dev(ndev); 417 ipv6_mc_init_dev(ndev);
420 ndev->tstamp = jiffies; 418 ndev->tstamp = jiffies;
@@ -425,6 +423,8 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
425 NULL); 423 NULL);
426 addrconf_sysctl_register(ndev, &ndev->cnf); 424 addrconf_sysctl_register(ndev, &ndev->cnf);
427#endif 425#endif
426 /* protected by rtnl_lock */
427 rcu_assign_pointer(dev->ip6_ptr, ndev);
428 return ndev; 428 return ndev;
429} 429}
430 430
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index e5cd83b2205d..0e0e4262f4dc 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -171,7 +171,7 @@ lookup_protocol:
171 sk->sk_reuse = 1; 171 sk->sk_reuse = 1;
172 172
173 inet = inet_sk(sk); 173 inet = inet_sk(sk);
174 inet->is_icsk = INET_PROTOSW_ICSK & answer_flags; 174 inet->is_icsk = (INET_PROTOSW_ICSK & answer_flags) != 0;
175 175
176 if (SOCK_RAW == sock->type) { 176 if (SOCK_RAW == sock->type) {
177 inet->num = protocol; 177 inet->num = protocol;
diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
index 37e5fca923aa..d9c15402ba66 100644
--- a/net/ipv6/netfilter/nf_conntrack_reasm.c
+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
@@ -835,6 +835,8 @@ void nf_ct_frag6_output(unsigned int hooknum, struct sk_buff *skb,
835 s->nfct_reasm = skb; 835 s->nfct_reasm = skb;
836 836
837 s2 = s->next; 837 s2 = s->next;
838 s->next = NULL;
839
838 NF_HOOK_THRESH(PF_INET6, hooknum, s, in, out, okfn, 840 NF_HOOK_THRESH(PF_INET6, hooknum, s, in, out, okfn,
839 NF_IP6_PRI_CONNTRACK_DEFRAG + 1); 841 NF_IP6_PRI_CONNTRACK_DEFRAG + 1);
840 s = s2; 842 s = s2;
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
index 1b853c34d301..cd10e44db015 100644
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -44,8 +44,7 @@ choice
44 depends on NF_CONNTRACK_ENABLED 44 depends on NF_CONNTRACK_ENABLED
45 45
46config NF_CONNTRACK_SUPPORT 46config NF_CONNTRACK_SUPPORT
47 bool "Layer 3 Independent Connection tracking (EXPERIMENTAL)" 47 bool "Layer 3 Independent Connection tracking"
48 depends on EXPERIMENTAL
49 help 48 help
50 Layer 3 independent connection tracking is experimental scheme 49 Layer 3 independent connection tracking is experimental scheme
51 which generalize ip_conntrack to support other layer 3 protocols. 50 which generalize ip_conntrack to support other layer 3 protocols.
@@ -122,7 +121,7 @@ config NF_CONNTRACK_EVENTS
122 121
123config NF_CT_PROTO_GRE 122config NF_CT_PROTO_GRE
124 tristate 123 tristate
125 depends on EXPERIMENTAL && NF_CONNTRACK 124 depends on NF_CONNTRACK
126 125
127config NF_CT_PROTO_SCTP 126config NF_CT_PROTO_SCTP
128 tristate 'SCTP protocol connection tracking support (EXPERIMENTAL)' 127 tristate 'SCTP protocol connection tracking support (EXPERIMENTAL)'
@@ -136,8 +135,8 @@ config NF_CT_PROTO_SCTP
136 Documentation/modules.txt. If unsure, say `N'. 135 Documentation/modules.txt. If unsure, say `N'.
137 136
138config NF_CONNTRACK_AMANDA 137config NF_CONNTRACK_AMANDA
139 tristate "Amanda backup protocol support (EXPERIMENTAL)" 138 tristate "Amanda backup protocol support"
140 depends on EXPERIMENTAL && NF_CONNTRACK 139 depends on NF_CONNTRACK
141 select TEXTSEARCH 140 select TEXTSEARCH
142 select TEXTSEARCH_KMP 141 select TEXTSEARCH_KMP
143 help 142 help
@@ -151,8 +150,8 @@ config NF_CONNTRACK_AMANDA
151 To compile it as a module, choose M here. If unsure, say N. 150 To compile it as a module, choose M here. If unsure, say N.
152 151
153config NF_CONNTRACK_FTP 152config NF_CONNTRACK_FTP
154 tristate "FTP protocol support (EXPERIMENTAL)" 153 tristate "FTP protocol support"
155 depends on EXPERIMENTAL && NF_CONNTRACK 154 depends on NF_CONNTRACK
156 help 155 help
157 Tracking FTP connections is problematic: special helpers are 156 Tracking FTP connections is problematic: special helpers are
158 required for tracking them, and doing masquerading and other forms 157 required for tracking them, and doing masquerading and other forms
@@ -184,8 +183,8 @@ config NF_CONNTRACK_H323
184 To compile it as a module, choose M here. If unsure, say N. 183 To compile it as a module, choose M here. If unsure, say N.
185 184
186config NF_CONNTRACK_IRC 185config NF_CONNTRACK_IRC
187 tristate "IRC protocol support (EXPERIMENTAL)" 186 tristate "IRC protocol support"
188 depends on EXPERIMENTAL && NF_CONNTRACK 187 depends on NF_CONNTRACK
189 help 188 help
190 There is a commonly-used extension to IRC called 189 There is a commonly-used extension to IRC called
191 Direct Client-to-Client Protocol (DCC). This enables users to send 190 Direct Client-to-Client Protocol (DCC). This enables users to send
@@ -218,8 +217,8 @@ config NF_CONNTRACK_NETBIOS_NS
218 To compile it as a module, choose M here. If unsure, say N. 217 To compile it as a module, choose M here. If unsure, say N.
219 218
220config NF_CONNTRACK_PPTP 219config NF_CONNTRACK_PPTP
221 tristate "PPtP protocol support (EXPERIMENTAL)" 220 tristate "PPtP protocol support"
222 depends on EXPERIMENTAL && NF_CONNTRACK 221 depends on NF_CONNTRACK
223 select NF_CT_PROTO_GRE 222 select NF_CT_PROTO_GRE
224 help 223 help
225 This module adds support for PPTP (Point to Point Tunnelling 224 This module adds support for PPTP (Point to Point Tunnelling
@@ -249,8 +248,8 @@ config NF_CONNTRACK_SIP
249 To compile it as a module, choose M here. If unsure, say N. 248 To compile it as a module, choose M here. If unsure, say N.
250 249
251config NF_CONNTRACK_TFTP 250config NF_CONNTRACK_TFTP
252 tristate "TFTP protocol support (EXPERIMENTAL)" 251 tristate "TFTP protocol support"
253 depends on EXPERIMENTAL && NF_CONNTRACK 252 depends on NF_CONNTRACK
254 help 253 help
255 TFTP connection tracking helper, this is required depending 254 TFTP connection tracking helper, this is required depending
256 on how restrictive your ruleset is. 255 on how restrictive your ruleset is.
diff --git a/net/netfilter/nf_conntrack_netbios_ns.c b/net/netfilter/nf_conntrack_netbios_ns.c
index a5b234e444dc..2a48efdf0d67 100644
--- a/net/netfilter/nf_conntrack_netbios_ns.c
+++ b/net/netfilter/nf_conntrack_netbios_ns.c
@@ -89,6 +89,7 @@ static int help(struct sk_buff **pskb, unsigned int protoff,
89 89
90 exp->expectfn = NULL; 90 exp->expectfn = NULL;
91 exp->flags = NF_CT_EXPECT_PERMANENT; 91 exp->flags = NF_CT_EXPECT_PERMANENT;
92 exp->helper = NULL;
92 93
93 nf_conntrack_expect_related(exp); 94 nf_conntrack_expect_related(exp);
94 nf_conntrack_expect_put(exp); 95 nf_conntrack_expect_put(exp);
diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c
index a5a6e192ac2d..f28bf69d3d42 100644
--- a/net/netfilter/xt_hashlimit.c
+++ b/net/netfilter/xt_hashlimit.c
@@ -745,7 +745,7 @@ static int __init xt_hashlimit_init(void)
745 } 745 }
746 hashlimit_procdir6 = proc_mkdir("ip6t_hashlimit", proc_net); 746 hashlimit_procdir6 = proc_mkdir("ip6t_hashlimit", proc_net);
747 if (!hashlimit_procdir6) { 747 if (!hashlimit_procdir6) {
748 printk(KERN_ERR "xt_hashlimit: tnable to create proc dir " 748 printk(KERN_ERR "xt_hashlimit: unable to create proc dir "
749 "entry\n"); 749 "entry\n");
750 goto err4; 750 goto err4;
751 } 751 }
diff --git a/net/netlabel/netlabel_cipso_v4.c b/net/netlabel/netlabel_cipso_v4.c
index 4afc75f9e377..73e0ff469bff 100644
--- a/net/netlabel/netlabel_cipso_v4.c
+++ b/net/netlabel/netlabel_cipso_v4.c
@@ -130,12 +130,12 @@ static int netlbl_cipsov4_add_common(struct genl_info *info,
130 130
131 nla_for_each_nested(nla, info->attrs[NLBL_CIPSOV4_A_TAGLST], nla_rem) 131 nla_for_each_nested(nla, info->attrs[NLBL_CIPSOV4_A_TAGLST], nla_rem)
132 if (nla->nla_type == NLBL_CIPSOV4_A_TAG) { 132 if (nla->nla_type == NLBL_CIPSOV4_A_TAG) {
133 if (iter > CIPSO_V4_TAG_MAXCNT) 133 if (iter >= CIPSO_V4_TAG_MAXCNT)
134 return -EINVAL; 134 return -EINVAL;
135 doi_def->tags[iter++] = nla_get_u8(nla); 135 doi_def->tags[iter++] = nla_get_u8(nla);
136 } 136 }
137 if (iter < CIPSO_V4_TAG_MAXCNT) 137 while (iter < CIPSO_V4_TAG_MAXCNT)
138 doi_def->tags[iter] = CIPSO_V4_TAG_INVALID; 138 doi_def->tags[iter++] = CIPSO_V4_TAG_INVALID;
139 139
140 return 0; 140 return 0;
141} 141}
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 276131fe56dd..383dd4e82ee1 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -472,8 +472,7 @@ static int netlink_release(struct socket *sock)
472 NETLINK_URELEASE, &n); 472 NETLINK_URELEASE, &n);
473 } 473 }
474 474
475 if (nlk->module) 475 module_put(nlk->module);
476 module_put(nlk->module);
477 476
478 netlink_table_grab(); 477 netlink_table_grab();
479 if (nlk->flags & NETLINK_KERNEL_SOCKET) { 478 if (nlk->flags & NETLINK_KERNEL_SOCKET) {
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index f0bbe36799cf..167d888d1df2 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -124,8 +124,8 @@ void sctp_init_cause(struct sctp_chunk *chunk, __be16 cause_code,
124 padlen = len % 4; 124 padlen = len % 4;
125 err.length = htons(len); 125 err.length = htons(len);
126 len += padlen; 126 len += padlen;
127 sctp_addto_chunk(chunk, sizeof(sctp_errhdr_t), &err); 127 chunk->subh.err_hdr = sctp_addto_chunk(chunk, sizeof(sctp_errhdr_t), &err);
128 chunk->subh.err_hdr = sctp_addto_chunk(chunk, paylen, payload); 128 sctp_addto_chunk(chunk, paylen, payload);
129} 129}
130 130
131/* 3.3.2 Initiation (INIT) (1) 131/* 3.3.2 Initiation (INIT) (1)
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
index 52a2726d327f..b5c80b189902 100644
--- a/net/x25/af_x25.c
+++ b/net/x25/af_x25.c
@@ -484,8 +484,6 @@ out:
484 return sk; 484 return sk;
485} 485}
486 486
487void x25_init_timers(struct sock *sk);
488
489static int x25_create(struct socket *sock, int protocol) 487static int x25_create(struct socket *sock, int protocol)
490{ 488{
491 struct sock *sk; 489 struct sock *sk;
diff --git a/net/x25/x25_facilities.c b/net/x25/x25_facilities.c
index 9f42b9c9de37..27f5cc7966f6 100644
--- a/net/x25/x25_facilities.c
+++ b/net/x25/x25_facilities.c
@@ -254,7 +254,7 @@ int x25_negotiate_facilities(struct sk_buff *skb, struct sock *sk,
254 * They want reverse charging, we won't accept it. 254 * They want reverse charging, we won't accept it.
255 */ 255 */
256 if ((theirs.reverse & 0x01 ) && (ours->reverse & 0x01)) { 256 if ((theirs.reverse & 0x01 ) && (ours->reverse & 0x01)) {
257 SOCK_DEBUG(sk, "X.25: rejecting reverse charging request"); 257 SOCK_DEBUG(sk, "X.25: rejecting reverse charging request\n");
258 return -1; 258 return -1;
259 } 259 }
260 260
@@ -262,29 +262,29 @@ int x25_negotiate_facilities(struct sk_buff *skb, struct sock *sk,
262 262
263 if (theirs.throughput) { 263 if (theirs.throughput) {
264 if (theirs.throughput < ours->throughput) { 264 if (theirs.throughput < ours->throughput) {
265 SOCK_DEBUG(sk, "X.25: throughput negotiated down"); 265 SOCK_DEBUG(sk, "X.25: throughput negotiated down\n");
266 new->throughput = theirs.throughput; 266 new->throughput = theirs.throughput;
267 } 267 }
268 } 268 }
269 269
270 if (theirs.pacsize_in && theirs.pacsize_out) { 270 if (theirs.pacsize_in && theirs.pacsize_out) {
271 if (theirs.pacsize_in < ours->pacsize_in) { 271 if (theirs.pacsize_in < ours->pacsize_in) {
272 SOCK_DEBUG(sk, "X.25: packet size inwards negotiated down"); 272 SOCK_DEBUG(sk, "X.25: packet size inwards negotiated down\n");
273 new->pacsize_in = theirs.pacsize_in; 273 new->pacsize_in = theirs.pacsize_in;
274 } 274 }
275 if (theirs.pacsize_out < ours->pacsize_out) { 275 if (theirs.pacsize_out < ours->pacsize_out) {
276 SOCK_DEBUG(sk, "X.25: packet size outwards negotiated down"); 276 SOCK_DEBUG(sk, "X.25: packet size outwards negotiated down\n");
277 new->pacsize_out = theirs.pacsize_out; 277 new->pacsize_out = theirs.pacsize_out;
278 } 278 }
279 } 279 }
280 280
281 if (theirs.winsize_in && theirs.winsize_out) { 281 if (theirs.winsize_in && theirs.winsize_out) {
282 if (theirs.winsize_in < ours->winsize_in) { 282 if (theirs.winsize_in < ours->winsize_in) {
283 SOCK_DEBUG(sk, "X.25: window size inwards negotiated down"); 283 SOCK_DEBUG(sk, "X.25: window size inwards negotiated down\n");
284 new->winsize_in = theirs.winsize_in; 284 new->winsize_in = theirs.winsize_in;
285 } 285 }
286 if (theirs.winsize_out < ours->winsize_out) { 286 if (theirs.winsize_out < ours->winsize_out) {
287 SOCK_DEBUG(sk, "X.25: window size outwards negotiated down"); 287 SOCK_DEBUG(sk, "X.25: window size outwards negotiated down\n");
288 new->winsize_out = theirs.winsize_out; 288 new->winsize_out = theirs.winsize_out;
289 } 289 }
290 } 290 }
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index e5372b11fc8f..82f36d396fca 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -434,18 +434,19 @@ error_no_put:
434 return NULL; 434 return NULL;
435} 435}
436 436
437static int xfrm_add_sa(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 437static int xfrm_add_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
438 struct rtattr **xfrma)
438{ 439{
439 struct xfrm_usersa_info *p = NLMSG_DATA(nlh); 440 struct xfrm_usersa_info *p = NLMSG_DATA(nlh);
440 struct xfrm_state *x; 441 struct xfrm_state *x;
441 int err; 442 int err;
442 struct km_event c; 443 struct km_event c;
443 444
444 err = verify_newsa_info(p, (struct rtattr **)xfrma); 445 err = verify_newsa_info(p, xfrma);
445 if (err) 446 if (err)
446 return err; 447 return err;
447 448
448 x = xfrm_state_construct(p, (struct rtattr **)xfrma, &err); 449 x = xfrm_state_construct(p, xfrma, &err);
449 if (!x) 450 if (!x)
450 return err; 451 return err;
451 452
@@ -507,14 +508,15 @@ static struct xfrm_state *xfrm_user_state_lookup(struct xfrm_usersa_id *p,
507 return x; 508 return x;
508} 509}
509 510
510static int xfrm_del_sa(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 511static int xfrm_del_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
512 struct rtattr **xfrma)
511{ 513{
512 struct xfrm_state *x; 514 struct xfrm_state *x;
513 int err = -ESRCH; 515 int err = -ESRCH;
514 struct km_event c; 516 struct km_event c;
515 struct xfrm_usersa_id *p = NLMSG_DATA(nlh); 517 struct xfrm_usersa_id *p = NLMSG_DATA(nlh);
516 518
517 x = xfrm_user_state_lookup(p, (struct rtattr **)xfrma, &err); 519 x = xfrm_user_state_lookup(p, xfrma, &err);
518 if (x == NULL) 520 if (x == NULL)
519 return err; 521 return err;
520 522
@@ -672,14 +674,15 @@ static struct sk_buff *xfrm_state_netlink(struct sk_buff *in_skb,
672 return skb; 674 return skb;
673} 675}
674 676
675static int xfrm_get_sa(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 677static int xfrm_get_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
678 struct rtattr **xfrma)
676{ 679{
677 struct xfrm_usersa_id *p = NLMSG_DATA(nlh); 680 struct xfrm_usersa_id *p = NLMSG_DATA(nlh);
678 struct xfrm_state *x; 681 struct xfrm_state *x;
679 struct sk_buff *resp_skb; 682 struct sk_buff *resp_skb;
680 int err = -ESRCH; 683 int err = -ESRCH;
681 684
682 x = xfrm_user_state_lookup(p, (struct rtattr **)xfrma, &err); 685 x = xfrm_user_state_lookup(p, xfrma, &err);
683 if (x == NULL) 686 if (x == NULL)
684 goto out_noput; 687 goto out_noput;
685 688
@@ -718,7 +721,8 @@ static int verify_userspi_info(struct xfrm_userspi_info *p)
718 return 0; 721 return 0;
719} 722}
720 723
721static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 724static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh,
725 struct rtattr **xfrma)
722{ 726{
723 struct xfrm_state *x; 727 struct xfrm_state *x;
724 struct xfrm_userspi_info *p; 728 struct xfrm_userspi_info *p;
@@ -1013,7 +1017,8 @@ static struct xfrm_policy *xfrm_policy_construct(struct xfrm_userpolicy_info *p,
1013 return NULL; 1017 return NULL;
1014} 1018}
1015 1019
1016static int xfrm_add_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 1020static int xfrm_add_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
1021 struct rtattr **xfrma)
1017{ 1022{
1018 struct xfrm_userpolicy_info *p = NLMSG_DATA(nlh); 1023 struct xfrm_userpolicy_info *p = NLMSG_DATA(nlh);
1019 struct xfrm_policy *xp; 1024 struct xfrm_policy *xp;
@@ -1024,11 +1029,11 @@ static int xfrm_add_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfr
1024 err = verify_newpolicy_info(p); 1029 err = verify_newpolicy_info(p);
1025 if (err) 1030 if (err)
1026 return err; 1031 return err;
1027 err = verify_sec_ctx_len((struct rtattr **)xfrma); 1032 err = verify_sec_ctx_len(xfrma);
1028 if (err) 1033 if (err)
1029 return err; 1034 return err;
1030 1035
1031 xp = xfrm_policy_construct(p, (struct rtattr **)xfrma, &err); 1036 xp = xfrm_policy_construct(p, xfrma, &err);
1032 if (!xp) 1037 if (!xp)
1033 return err; 1038 return err;
1034 1039
@@ -1227,7 +1232,8 @@ static struct sk_buff *xfrm_policy_netlink(struct sk_buff *in_skb,
1227 return skb; 1232 return skb;
1228} 1233}
1229 1234
1230static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 1235static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
1236 struct rtattr **xfrma)
1231{ 1237{
1232 struct xfrm_policy *xp; 1238 struct xfrm_policy *xp;
1233 struct xfrm_userpolicy_id *p; 1239 struct xfrm_userpolicy_id *p;
@@ -1239,7 +1245,7 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfr
1239 p = NLMSG_DATA(nlh); 1245 p = NLMSG_DATA(nlh);
1240 delete = nlh->nlmsg_type == XFRM_MSG_DELPOLICY; 1246 delete = nlh->nlmsg_type == XFRM_MSG_DELPOLICY;
1241 1247
1242 err = copy_from_user_policy_type(&type, (struct rtattr **)xfrma); 1248 err = copy_from_user_policy_type(&type, xfrma);
1243 if (err) 1249 if (err)
1244 return err; 1250 return err;
1245 1251
@@ -1250,11 +1256,10 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfr
1250 if (p->index) 1256 if (p->index)
1251 xp = xfrm_policy_byid(type, p->dir, p->index, delete); 1257 xp = xfrm_policy_byid(type, p->dir, p->index, delete);
1252 else { 1258 else {
1253 struct rtattr **rtattrs = (struct rtattr **)xfrma; 1259 struct rtattr *rt = xfrma[XFRMA_SEC_CTX-1];
1254 struct rtattr *rt = rtattrs[XFRMA_SEC_CTX-1];
1255 struct xfrm_policy tmp; 1260 struct xfrm_policy tmp;
1256 1261
1257 err = verify_sec_ctx_len(rtattrs); 1262 err = verify_sec_ctx_len(xfrma);
1258 if (err) 1263 if (err)
1259 return err; 1264 return err;
1260 1265
@@ -1302,7 +1307,8 @@ out:
1302 return err; 1307 return err;
1303} 1308}
1304 1309
1305static int xfrm_flush_sa(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 1310static int xfrm_flush_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
1311 struct rtattr **xfrma)
1306{ 1312{
1307 struct km_event c; 1313 struct km_event c;
1308 struct xfrm_usersa_flush *p = NLMSG_DATA(nlh); 1314 struct xfrm_usersa_flush *p = NLMSG_DATA(nlh);
@@ -1367,7 +1373,8 @@ nlmsg_failure:
1367 return -1; 1373 return -1;
1368} 1374}
1369 1375
1370static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 1376static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
1377 struct rtattr **xfrma)
1371{ 1378{
1372 struct xfrm_state *x; 1379 struct xfrm_state *x;
1373 struct sk_buff *r_skb; 1380 struct sk_buff *r_skb;
@@ -1415,7 +1422,8 @@ static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma)
1415 return err; 1422 return err;
1416} 1423}
1417 1424
1418static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 1425static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
1426 struct rtattr **xfrma)
1419{ 1427{
1420 struct xfrm_state *x; 1428 struct xfrm_state *x;
1421 struct km_event c; 1429 struct km_event c;
@@ -1439,7 +1447,7 @@ static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma)
1439 goto out; 1447 goto out;
1440 1448
1441 spin_lock_bh(&x->lock); 1449 spin_lock_bh(&x->lock);
1442 err = xfrm_update_ae_params(x,(struct rtattr **)xfrma); 1450 err = xfrm_update_ae_params(x, xfrma);
1443 spin_unlock_bh(&x->lock); 1451 spin_unlock_bh(&x->lock);
1444 if (err < 0) 1452 if (err < 0)
1445 goto out; 1453 goto out;
@@ -1455,14 +1463,15 @@ out:
1455 return err; 1463 return err;
1456} 1464}
1457 1465
1458static int xfrm_flush_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 1466static int xfrm_flush_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
1467 struct rtattr **xfrma)
1459{ 1468{
1460 struct km_event c; 1469 struct km_event c;
1461 u8 type = XFRM_POLICY_TYPE_MAIN; 1470 u8 type = XFRM_POLICY_TYPE_MAIN;
1462 int err; 1471 int err;
1463 struct xfrm_audit audit_info; 1472 struct xfrm_audit audit_info;
1464 1473
1465 err = copy_from_user_policy_type(&type, (struct rtattr **)xfrma); 1474 err = copy_from_user_policy_type(&type, xfrma);
1466 if (err) 1475 if (err)
1467 return err; 1476 return err;
1468 1477
@@ -1477,7 +1486,8 @@ static int xfrm_flush_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **x
1477 return 0; 1486 return 0;
1478} 1487}
1479 1488
1480static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 1489static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
1490 struct rtattr **xfrma)
1481{ 1491{
1482 struct xfrm_policy *xp; 1492 struct xfrm_policy *xp;
1483 struct xfrm_user_polexpire *up = NLMSG_DATA(nlh); 1493 struct xfrm_user_polexpire *up = NLMSG_DATA(nlh);
@@ -1485,18 +1495,17 @@ static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh, void *
1485 u8 type = XFRM_POLICY_TYPE_MAIN; 1495 u8 type = XFRM_POLICY_TYPE_MAIN;
1486 int err = -ENOENT; 1496 int err = -ENOENT;
1487 1497
1488 err = copy_from_user_policy_type(&type, (struct rtattr **)xfrma); 1498 err = copy_from_user_policy_type(&type, xfrma);
1489 if (err) 1499 if (err)
1490 return err; 1500 return err;
1491 1501
1492 if (p->index) 1502 if (p->index)
1493 xp = xfrm_policy_byid(type, p->dir, p->index, 0); 1503 xp = xfrm_policy_byid(type, p->dir, p->index, 0);
1494 else { 1504 else {
1495 struct rtattr **rtattrs = (struct rtattr **)xfrma; 1505 struct rtattr *rt = xfrma[XFRMA_SEC_CTX-1];
1496 struct rtattr *rt = rtattrs[XFRMA_SEC_CTX-1];
1497 struct xfrm_policy tmp; 1506 struct xfrm_policy tmp;
1498 1507
1499 err = verify_sec_ctx_len(rtattrs); 1508 err = verify_sec_ctx_len(xfrma);
1500 if (err) 1509 if (err)
1501 return err; 1510 return err;
1502 1511
@@ -1537,7 +1546,8 @@ out:
1537 return err; 1546 return err;
1538} 1547}
1539 1548
1540static int xfrm_add_sa_expire(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 1549static int xfrm_add_sa_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
1550 struct rtattr **xfrma)
1541{ 1551{
1542 struct xfrm_state *x; 1552 struct xfrm_state *x;
1543 int err; 1553 int err;
@@ -1568,7 +1578,8 @@ out:
1568 return err; 1578 return err;
1569} 1579}
1570 1580
1571static int xfrm_add_acquire(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) 1581static int xfrm_add_acquire(struct sk_buff *skb, struct nlmsghdr *nlh,
1582 struct rtattr **xfrma)
1572{ 1583{
1573 struct xfrm_policy *xp; 1584 struct xfrm_policy *xp;
1574 struct xfrm_user_tmpl *ut; 1585 struct xfrm_user_tmpl *ut;
@@ -1647,7 +1658,7 @@ static const int xfrm_msg_min[XFRM_NR_MSGTYPES] = {
1647#undef XMSGSIZE 1658#undef XMSGSIZE
1648 1659
1649static struct xfrm_link { 1660static struct xfrm_link {
1650 int (*doit)(struct sk_buff *, struct nlmsghdr *, void **); 1661 int (*doit)(struct sk_buff *, struct nlmsghdr *, struct rtattr **);
1651 int (*dump)(struct sk_buff *, struct netlink_callback *); 1662 int (*dump)(struct sk_buff *, struct netlink_callback *);
1652} xfrm_dispatch[XFRM_NR_MSGTYPES] = { 1663} xfrm_dispatch[XFRM_NR_MSGTYPES] = {
1653 [XFRM_MSG_NEWSA - XFRM_MSG_BASE] = { .doit = xfrm_add_sa }, 1664 [XFRM_MSG_NEWSA - XFRM_MSG_BASE] = { .doit = xfrm_add_sa },
@@ -1735,7 +1746,7 @@ static int xfrm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *err
1735 1746
1736 if (link->doit == NULL) 1747 if (link->doit == NULL)
1737 goto err_einval; 1748 goto err_einval;
1738 *errp = link->doit(skb, nlh, (void **) &xfrma); 1749 *errp = link->doit(skb, nlh, xfrma);
1739 1750
1740 return *errp; 1751 return *errp;
1741 1752
diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
index 0b2fcc417f59..c0ae0a7ddb42 100644
--- a/scripts/kconfig/qconf.cc
+++ b/scripts/kconfig/qconf.cc
@@ -917,7 +917,7 @@ void ConfigView::updateListAll(void)
917} 917}
918 918
919ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) 919ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name)
920 : Parent(parent, name), menu(0) 920 : Parent(parent, name), menu(0), sym(0)
921{ 921{
922 if (name) { 922 if (name) {
923 configSettings->beginGroup(name); 923 configSettings->beginGroup(name);
@@ -953,6 +953,7 @@ void ConfigInfoView::setInfo(struct menu *m)
953 if (menu == m) 953 if (menu == m)
954 return; 954 return;
955 menu = m; 955 menu = m;
956 sym = NULL;
956 if (!menu) 957 if (!menu)
957 clear(); 958 clear();
958 else 959 else
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 15ab5d02e80a..2aa47623f5f8 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -582,9 +582,19 @@ static int strrcmp(const char *s, const char *sub)
582 * tosec = .init.text | .exit.text | .init.data 582 * tosec = .init.text | .exit.text | .init.data
583 * fromsec = .data 583 * fromsec = .data
584 * atsym = *driver, *_template, *_sht, *_ops, *_probe, *probe_one 584 * atsym = *driver, *_template, *_sht, *_ops, *_probe, *probe_one
585 *
586 * Pattern 3:
587 * Some symbols belong to init section but still it is ok to reference
588 * these from non-init sections as these symbols don't have any memory
589 * allocated for them and symbol address and value are same. So even
590 * if init section is freed, its ok to reference those symbols.
591 * For ex. symbols marking the init section boundaries.
592 * This pattern is identified by
593 * refsymname = __init_begin, _sinittext, _einittext
585 **/ 594 **/
586static int secref_whitelist(const char *modname, const char *tosec, 595static int secref_whitelist(const char *modname, const char *tosec,
587 const char *fromsec, const char *atsym) 596 const char *fromsec, const char *atsym,
597 const char *refsymname)
588{ 598{
589 int f1 = 1, f2 = 1; 599 int f1 = 1, f2 = 1;
590 const char **s; 600 const char **s;
@@ -595,6 +605,14 @@ static int secref_whitelist(const char *modname, const char *tosec,
595 "_ops", 605 "_ops",
596 "_probe", 606 "_probe",
597 "_probe_one", 607 "_probe_one",
608 "_console",
609 NULL
610 };
611
612 const char *pat3refsym[] = {
613 "__init_begin",
614 "_sinittext",
615 "_einittext",
598 NULL 616 NULL
599 }; 617 };
600 618
@@ -628,6 +646,11 @@ static int secref_whitelist(const char *modname, const char *tosec,
628 if ((strcmp(fromsec, ".pci_fixup") == 0) && 646 if ((strcmp(fromsec, ".pci_fixup") == 0) &&
629 (strcmp(tosec, ".init.text") == 0)) 647 (strcmp(tosec, ".init.text") == 0))
630 return 1; 648 return 1;
649
650 /* Check for pattern 3 */
651 for (s = pat3refsym; *s; s++)
652 if (strcmp(refsymname, *s) == 0)
653 return 1;
631 } 654 }
632 return 0; 655 return 0;
633} 656}
@@ -737,7 +760,7 @@ static void warn_sec_mismatch(const char *modname, const char *fromsec,
737 /* check whitelist - we may ignore it */ 760 /* check whitelist - we may ignore it */
738 if (before && 761 if (before &&
739 secref_whitelist(modname, secname, fromsec, 762 secref_whitelist(modname, secname, fromsec,
740 elf->strtab + before->st_name)) 763 elf->strtab + before->st_name, refsymname))
741 return; 764 return;
742 765
743 if (before && after) { 766 if (before && after) {
diff --git a/security/selinux/ss/context.h b/security/selinux/ss/context.h
index 0562bacb7b99..2eee0dab524d 100644
--- a/security/selinux/ss/context.h
+++ b/security/selinux/ss/context.h
@@ -55,6 +55,29 @@ out:
55 return rc; 55 return rc;
56} 56}
57 57
58/*
59 * Sets both levels in the MLS range of 'dst' to the low level of 'src'.
60 */
61static inline int mls_context_cpy_low(struct context *dst, struct context *src)
62{
63 int rc;
64
65 if (!selinux_mls_enabled)
66 return 0;
67
68 dst->range.level[0].sens = src->range.level[0].sens;
69 rc = ebitmap_cpy(&dst->range.level[0].cat, &src->range.level[0].cat);
70 if (rc)
71 goto out;
72
73 dst->range.level[1].sens = src->range.level[0].sens;
74 rc = ebitmap_cpy(&dst->range.level[1].cat, &src->range.level[0].cat);
75 if (rc)
76 ebitmap_destroy(&dst->range.level[0].cat);
77out:
78 return rc;
79}
80
58static inline int mls_context_cmp(struct context *c1, struct context *c2) 81static inline int mls_context_cmp(struct context *c1, struct context *c2)
59{ 82{
60 if (!selinux_mls_enabled) 83 if (!selinux_mls_enabled)
diff --git a/security/selinux/ss/mls.c b/security/selinux/ss/mls.c
index b4f682dc13ff..4a8bab2f3c71 100644
--- a/security/selinux/ss/mls.c
+++ b/security/selinux/ss/mls.c
@@ -270,7 +270,7 @@ int mls_context_to_sid(char oldc,
270 if (!defcon) 270 if (!defcon)
271 goto out; 271 goto out;
272 272
273 rc = mls_copy_context(context, defcon); 273 rc = mls_context_cpy(context, defcon);
274 goto out; 274 goto out;
275 } 275 }
276 276
@@ -401,26 +401,6 @@ int mls_from_string(char *str, struct context *context, gfp_t gfp_mask)
401} 401}
402 402
403/* 403/*
404 * Copies the effective MLS range from `src' into `dst'.
405 */
406static inline int mls_scopy_context(struct context *dst,
407 struct context *src)
408{
409 int l, rc = 0;
410
411 /* Copy the MLS range from the source context */
412 for (l = 0; l < 2; l++) {
413 dst->range.level[l].sens = src->range.level[0].sens;
414 rc = ebitmap_cpy(&dst->range.level[l].cat,
415 &src->range.level[0].cat);
416 if (rc)
417 break;
418 }
419
420 return rc;
421}
422
423/*
424 * Copies the MLS range `range' into `context'. 404 * Copies the MLS range `range' into `context'.
425 */ 405 */
426static inline int mls_range_set(struct context *context, 406static inline int mls_range_set(struct context *context,
@@ -552,19 +532,19 @@ int mls_compute_sid(struct context *scontext,
552 case AVTAB_CHANGE: 532 case AVTAB_CHANGE:
553 if (tclass == SECCLASS_PROCESS) 533 if (tclass == SECCLASS_PROCESS)
554 /* Use the process MLS attributes. */ 534 /* Use the process MLS attributes. */
555 return mls_copy_context(newcontext, scontext); 535 return mls_context_cpy(newcontext, scontext);
556 else 536 else
557 /* Use the process effective MLS attributes. */ 537 /* Use the process effective MLS attributes. */
558 return mls_scopy_context(newcontext, scontext); 538 return mls_context_cpy_low(newcontext, scontext);
559 case AVTAB_MEMBER: 539 case AVTAB_MEMBER:
560 /* Only polyinstantiate the MLS attributes if 540 /* Only polyinstantiate the MLS attributes if
561 the type is being polyinstantiated */ 541 the type is being polyinstantiated */
562 if (newcontext->type != tcontext->type) { 542 if (newcontext->type != tcontext->type) {
563 /* Use the process effective MLS attributes. */ 543 /* Use the process effective MLS attributes. */
564 return mls_scopy_context(newcontext, scontext); 544 return mls_context_cpy_low(newcontext, scontext);
565 } else { 545 } else {
566 /* Use the related object MLS attributes. */ 546 /* Use the related object MLS attributes. */
567 return mls_copy_context(newcontext, tcontext); 547 return mls_context_cpy(newcontext, tcontext);
568 } 548 }
569 default: 549 default:
570 return -EINVAL; 550 return -EINVAL;
diff --git a/security/selinux/ss/mls.h b/security/selinux/ss/mls.h
index 661d6fc76966..096d1b4ef7fb 100644
--- a/security/selinux/ss/mls.h
+++ b/security/selinux/ss/mls.h
@@ -24,26 +24,6 @@
24#include "context.h" 24#include "context.h"
25#include "policydb.h" 25#include "policydb.h"
26 26
27/*
28 * Copies the MLS range from `src' into `dst'.
29 */
30static inline int mls_copy_context(struct context *dst,
31 struct context *src)
32{
33 int l, rc = 0;
34
35 /* Copy the MLS range from the source context */
36 for (l = 0; l < 2; l++) {
37 dst->range.level[l].sens = src->range.level[l].sens;
38 rc = ebitmap_cpy(&dst->range.level[l].cat,
39 &src->range.level[l].cat);
40 if (rc)
41 break;
42 }
43
44 return rc;
45}
46
47int mls_compute_context_len(struct context *context); 27int mls_compute_context_len(struct context *context);
48void mls_sid_to_context(struct context *context, char **scontext); 28void mls_sid_to_context(struct context *context, char **scontext);
49int mls_context_isvalid(struct policydb *p, struct context *c); 29int mls_context_isvalid(struct policydb *p, struct context *c);
diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
index ee0581557966..3eb1fa9f0de1 100644
--- a/security/selinux/ss/services.c
+++ b/security/selinux/ss/services.c
@@ -1916,11 +1916,10 @@ int security_sid_mls_copy(u32 sid, u32 mls_sid, u32 *new_sid)
1916 newcon.user = context1->user; 1916 newcon.user = context1->user;
1917 newcon.role = context1->role; 1917 newcon.role = context1->role;
1918 newcon.type = context1->type; 1918 newcon.type = context1->type;
1919 rc = mls_copy_context(&newcon, context2); 1919 rc = mls_context_cpy(&newcon, context2);
1920 if (rc) 1920 if (rc)
1921 goto out_unlock; 1921 goto out_unlock;
1922 1922
1923
1924 /* Check the validity of the new context. */ 1923 /* Check the validity of the new context. */
1925 if (!policydb_context_isvalid(&policydb, &newcon)) { 1924 if (!policydb_context_isvalid(&policydb, &newcon)) {
1926 rc = convert_context_handle_invalid_context(&newcon); 1925 rc = convert_context_handle_invalid_context(&newcon);
@@ -2492,9 +2491,9 @@ static int selinux_netlbl_socket_setsid(struct socket *sock, u32 sid)
2492 2491
2493 rc = netlbl_socket_setattr(sock, &secattr); 2492 rc = netlbl_socket_setattr(sock, &secattr);
2494 if (rc == 0) { 2493 if (rc == 0) {
2495 spin_lock(&sksec->nlbl_lock); 2494 spin_lock_bh(&sksec->nlbl_lock);
2496 sksec->nlbl_state = NLBL_LABELED; 2495 sksec->nlbl_state = NLBL_LABELED;
2497 spin_unlock(&sksec->nlbl_lock); 2496 spin_unlock_bh(&sksec->nlbl_lock);
2498 } 2497 }
2499 2498
2500netlbl_socket_setsid_return: 2499netlbl_socket_setsid_return:
diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c
index 71c58df4af28..70face7e1048 100644
--- a/sound/pci/cmipci.c
+++ b/sound/pci/cmipci.c
@@ -2198,7 +2198,8 @@ static int _snd_cmipci_uswitch_put(struct snd_kcontrol *kcontrol,
2198 val = inb(cm->iobase + args->reg); 2198 val = inb(cm->iobase + args->reg);
2199 else 2199 else
2200 val = snd_cmipci_read(cm, args->reg); 2200 val = snd_cmipci_read(cm, args->reg);
2201 change = (val & args->mask) != (ucontrol->value.integer.value[0] ? args->mask : 0); 2201 change = (val & args->mask) != (ucontrol->value.integer.value[0] ?
2202 args->mask_on : (args->mask & ~args->mask_on));
2202 if (change) { 2203 if (change) {
2203 val &= ~args->mask; 2204 val &= ~args->mask;
2204 if (ucontrol->value.integer.value[0]) 2205 if (ucontrol->value.integer.value[0])
diff --git a/sound/pci/echoaudio/midi.c b/sound/pci/echoaudio/midi.c
index e31f0f11e3a8..91f5bff66d3f 100644
--- a/sound/pci/echoaudio/midi.c
+++ b/sound/pci/echoaudio/midi.c
@@ -213,7 +213,7 @@ static void snd_echo_midi_output_write(unsigned long data)
213 sent = bytes = 0; 213 sent = bytes = 0;
214 spin_lock_irqsave(&chip->lock, flags); 214 spin_lock_irqsave(&chip->lock, flags);
215 chip->midi_full = 0; 215 chip->midi_full = 0;
216 if (chip->midi_out && !snd_rawmidi_transmit_empty(chip->midi_out)) { 216 if (!snd_rawmidi_transmit_empty(chip->midi_out)) {
217 bytes = snd_rawmidi_transmit_peek(chip->midi_out, buf, 217 bytes = snd_rawmidi_transmit_peek(chip->midi_out, buf,
218 MIDI_OUT_BUFFER_SIZE - 1); 218 MIDI_OUT_BUFFER_SIZE - 1);
219 DE_MID(("Try to send %d bytes...\n", bytes)); 219 DE_MID(("Try to send %d bytes...\n", bytes));
@@ -264,9 +264,11 @@ static void snd_echo_midi_output_trigger(struct snd_rawmidi_substream *substream
264 } 264 }
265 } else { 265 } else {
266 if (chip->tinuse) { 266 if (chip->tinuse) {
267 del_timer(&chip->timer);
268 chip->tinuse = 0; 267 chip->tinuse = 0;
268 spin_unlock_irq(&chip->lock);
269 del_timer_sync(&chip->timer);
269 DE_MID(("Timer removed\n")); 270 DE_MID(("Timer removed\n"));
271 return;
270 } 272 }
271 } 273 }
272 spin_unlock_irq(&chip->lock); 274 spin_unlock_irq(&chip->lock);
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index 97e9af130b71..1589d2f2917f 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -485,8 +485,9 @@ static const char *get_input_type(struct hda_gnode *node, unsigned int *pinctl)
485 return "Front Aux"; 485 return "Front Aux";
486 return "Aux"; 486 return "Aux";
487 case AC_JACK_MIC_IN: 487 case AC_JACK_MIC_IN:
488 if (node->pin_caps & 488 if (pinctl &&
489 (AC_PINCAP_VREF_80 << AC_PINCAP_VREF_SHIFT)) 489 (node->pin_caps &
490 (AC_PINCAP_VREF_80 << AC_PINCAP_VREF_SHIFT)))
490 *pinctl |= AC_PINCTL_VREF_80; 491 *pinctl |= AC_PINCTL_VREF_80;
491 if ((location & 0x0f) == AC_JACK_LOC_FRONT) 492 if ((location & 0x0f) == AC_JACK_LOC_FRONT)
492 return "Front Mic"; 493 return "Front Mic";
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 9fd34f85cad5..1a7e82104bb9 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -83,6 +83,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6},"
83 "{Intel, ICH7}," 83 "{Intel, ICH7},"
84 "{Intel, ESB2}," 84 "{Intel, ESB2},"
85 "{Intel, ICH8}," 85 "{Intel, ICH8},"
86 "{Intel, ICH9},"
86 "{ATI, SB450}," 87 "{ATI, SB450},"
87 "{ATI, SB600}," 88 "{ATI, SB600},"
88 "{ATI, RS600}," 89 "{ATI, RS600},"
@@ -1711,6 +1712,8 @@ static struct pci_device_id azx_ids[] = {
1711 { 0x8086, 0x27d8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH7 */ 1712 { 0x8086, 0x27d8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH7 */
1712 { 0x8086, 0x269a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ESB2 */ 1713 { 0x8086, 0x269a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ESB2 */
1713 { 0x8086, 0x284b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH8 */ 1714 { 0x8086, 0x284b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH8 */
1715 { 0x8086, 0x293e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH9 */
1716 { 0x8086, 0x293f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH9 */
1714 { 0x1002, 0x437b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB450 */ 1717 { 0x1002, 0x437b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB450 */
1715 { 0x1002, 0x4383, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB600 */ 1718 { 0x1002, 0x4383, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB600 */
1716 { 0x1002, 0x793b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATIHDMI }, /* ATI RS600 HDMI */ 1719 { 0x1002, 0x793b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATIHDMI }, /* ATI RS600 HDMI */
@@ -1718,9 +1721,14 @@ static struct pci_device_id azx_ids[] = {
1718 { 0x1106, 0x3288, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_VIA }, /* VIA VT8251/VT8237A */ 1721 { 0x1106, 0x3288, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_VIA }, /* VIA VT8251/VT8237A */
1719 { 0x1039, 0x7502, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_SIS }, /* SIS966 */ 1722 { 0x1039, 0x7502, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_SIS }, /* SIS966 */
1720 { 0x10b9, 0x5461, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ULI }, /* ULI M5461 */ 1723 { 0x10b9, 0x5461, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ULI }, /* ULI M5461 */
1721 { 0x10de, 0x026c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 026c */ 1724 { 0x10de, 0x026c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP51 */
1722 { 0x10de, 0x0371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 0371 */ 1725 { 0x10de, 0x0371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP55 */
1723 { 0x10de, 0x03f0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 03f0 */ 1726 { 0x10de, 0x03e4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP61 */
1727 { 0x10de, 0x03f0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP61 */
1728 { 0x10de, 0x044a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP65 */
1729 { 0x10de, 0x044b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP65 */
1730 { 0x10de, 0x055c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP67 */
1731 { 0x10de, 0x055d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP67 */
1724 { 0, } 1732 { 0, }
1725}; 1733};
1726MODULE_DEVICE_TABLE(pci, azx_ids); 1734MODULE_DEVICE_TABLE(pci, azx_ids);
diff --git a/sound/sparc/cs4231.c b/sound/sparc/cs4231.c
index edeb3d3c4c7e..f5956d557f70 100644
--- a/sound/sparc/cs4231.c
+++ b/sound/sparc/cs4231.c
@@ -1268,7 +1268,7 @@ static struct snd_pcm_hardware snd_cs4231_playback =
1268 .channels_min = 1, 1268 .channels_min = 1,
1269 .channels_max = 2, 1269 .channels_max = 2,
1270 .buffer_bytes_max = (32*1024), 1270 .buffer_bytes_max = (32*1024),
1271 .period_bytes_min = 4096, 1271 .period_bytes_min = 64,
1272 .period_bytes_max = (32*1024), 1272 .period_bytes_max = (32*1024),
1273 .periods_min = 1, 1273 .periods_min = 1,
1274 .periods_max = 1024, 1274 .periods_max = 1024,
@@ -1288,7 +1288,7 @@ static struct snd_pcm_hardware snd_cs4231_capture =
1288 .channels_min = 1, 1288 .channels_min = 1,
1289 .channels_max = 2, 1289 .channels_max = 2,
1290 .buffer_bytes_max = (32*1024), 1290 .buffer_bytes_max = (32*1024),
1291 .period_bytes_min = 4096, 1291 .period_bytes_min = 64,
1292 .period_bytes_max = (32*1024), 1292 .period_bytes_max = (32*1024),
1293 .periods_min = 1, 1293 .periods_min = 1,
1294 .periods_max = 1024, 1294 .periods_max = 1024,
@@ -1796,7 +1796,7 @@ static irqreturn_t snd_cs4231_sbus_interrupt(int irq, void *dev_id)
1796 snd_cs4231_outm(chip, CS4231_IRQ_STATUS, ~CS4231_ALL_IRQS | ~status, 0); 1796 snd_cs4231_outm(chip, CS4231_IRQ_STATUS, ~CS4231_ALL_IRQS | ~status, 0);
1797 spin_unlock_irqrestore(&chip->lock, flags); 1797 spin_unlock_irqrestore(&chip->lock, flags);
1798 1798
1799 return 0; 1799 return IRQ_HANDLED;
1800} 1800}
1801 1801
1802/* 1802/*
@@ -1821,7 +1821,6 @@ static int sbus_dma_request(struct cs4231_dma_control *dma_cont, dma_addr_t bus_
1821 if (!(csr & test)) 1821 if (!(csr & test))
1822 goto out; 1822 goto out;
1823 err = -EBUSY; 1823 err = -EBUSY;
1824 csr = sbus_readl(base->regs + APCCSR);
1825 test = APC_XINT_CNVA; 1824 test = APC_XINT_CNVA;
1826 if ( base->dir == APC_PLAY ) 1825 if ( base->dir == APC_PLAY )
1827 test = APC_XINT_PNVA; 1826 test = APC_XINT_PNVA;
@@ -1862,17 +1861,16 @@ static void sbus_dma_enable(struct cs4231_dma_control *dma_cont, int on)
1862 1861
1863 spin_lock_irqsave(&base->lock, flags); 1862 spin_lock_irqsave(&base->lock, flags);
1864 if (!on) { 1863 if (!on) {
1865 if (base->dir == APC_PLAY) { 1864 sbus_writel(0, base->regs + base->dir + APCNC);
1866 sbus_writel(0, base->regs + base->dir + APCNVA); 1865 sbus_writel(0, base->regs + base->dir + APCNVA);
1867 sbus_writel(1, base->regs + base->dir + APCC); 1866 sbus_writel(0, base->regs + base->dir + APCC);
1868 } 1867 sbus_writel(0, base->regs + base->dir + APCVA);
1869 else 1868
1870 { 1869 /* ACK any APC interrupts. */
1871 sbus_writel(0, base->regs + base->dir + APCNC); 1870 csr = sbus_readl(base->regs + APCCSR);
1872 sbus_writel(0, base->regs + base->dir + APCVA); 1871 sbus_writel(csr, base->regs + APCCSR);
1873 }
1874 } 1872 }
1875 udelay(600); 1873 udelay(1000);
1876 csr = sbus_readl(base->regs + APCCSR); 1874 csr = sbus_readl(base->regs + APCCSR);
1877 shift = 0; 1875 shift = 0;
1878 if ( base->dir == APC_PLAY ) 1876 if ( base->dir == APC_PLAY )
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
index 3d7f36fb4cf0..19bdcc74c96c 100644
--- a/sound/usb/usbaudio.c
+++ b/sound/usb/usbaudio.c
@@ -2471,7 +2471,13 @@ static int parse_audio_format_rates(struct snd_usb_audio *chip, struct audioform
2471 fp->nr_rates = nr_rates; 2471 fp->nr_rates = nr_rates;
2472 fp->rate_min = fp->rate_max = combine_triple(&fmt[8]); 2472 fp->rate_min = fp->rate_max = combine_triple(&fmt[8]);
2473 for (r = 0, idx = offset + 1; r < nr_rates; r++, idx += 3) { 2473 for (r = 0, idx = offset + 1; r < nr_rates; r++, idx += 3) {
2474 unsigned int rate = fp->rate_table[r] = combine_triple(&fmt[idx]); 2474 unsigned int rate = combine_triple(&fmt[idx]);
2475 /* C-Media CM6501 mislabels its 96 kHz altsetting */
2476 if (rate == 48000 && nr_rates == 1 &&
2477 chip->usb_id == USB_ID(0x0d8c, 0x0201) &&
2478 fp->altsetting == 5 && fp->maxpacksize == 392)
2479 rate = 96000;
2480 fp->rate_table[r] = rate;
2475 if (rate < fp->rate_min) 2481 if (rate < fp->rate_min)
2476 fp->rate_min = rate; 2482 fp->rate_min = rate;
2477 else if (rate > fp->rate_max) 2483 else if (rate > fp->rate_max)
@@ -3280,6 +3286,7 @@ static void snd_usb_audio_create_proc(struct snd_usb_audio *chip)
3280 3286
3281static int snd_usb_audio_free(struct snd_usb_audio *chip) 3287static int snd_usb_audio_free(struct snd_usb_audio *chip)
3282{ 3288{
3289 usb_chip[chip->index] = NULL;
3283 kfree(chip); 3290 kfree(chip);
3284 return 0; 3291 return 0;
3285} 3292}
@@ -3541,7 +3548,6 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr)
3541 list_for_each(p, &chip->mixer_list) { 3548 list_for_each(p, &chip->mixer_list) {
3542 snd_usb_mixer_disconnect(p); 3549 snd_usb_mixer_disconnect(p);
3543 } 3550 }
3544 usb_chip[chip->index] = NULL;
3545 mutex_unlock(&register_mutex); 3551 mutex_unlock(&register_mutex);
3546 snd_card_free_when_closed(card); 3552 snd_card_free_when_closed(card);
3547 } else { 3553 } else {
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c
index e74eb1bc8d87..7b3bf3545a3b 100644
--- a/sound/usb/usbmixer.c
+++ b/sound/usb/usbmixer.c
@@ -1526,7 +1526,7 @@ static int parse_audio_selector_unit(struct mixer_build *state, int unitid, unsi
1526 namelist[i] = kmalloc(MAX_ITEM_NAME_LEN, GFP_KERNEL); 1526 namelist[i] = kmalloc(MAX_ITEM_NAME_LEN, GFP_KERNEL);
1527 if (! namelist[i]) { 1527 if (! namelist[i]) {
1528 snd_printk(KERN_ERR "cannot malloc\n"); 1528 snd_printk(KERN_ERR "cannot malloc\n");
1529 while (--i > 0) 1529 while (i--)
1530 kfree(namelist[i]); 1530 kfree(namelist[i]);
1531 kfree(namelist); 1531 kfree(namelist);
1532 kfree(cval); 1532 kfree(cval);