aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/acpi/dsdt-override.txt12
-rwxr-xr-xDocumentation/acpi/initramfs-add-dsdt.sh43
-rw-r--r--Documentation/fb/cmap_xfbdev.txt53
-rw-r--r--Documentation/fb/metronomefb.txt38
-rw-r--r--Documentation/feature-removal-schedule.txt10
-rw-r--r--Documentation/ide/ide.txt21
-rw-r--r--Documentation/input/notifier.txt52
-rw-r--r--Documentation/kernel-parameters.txt5
-rw-r--r--Documentation/mca.txt17
-rw-r--r--MAINTAINERS19
-rw-r--r--Makefile2
-rw-r--r--arch/arm/Kconfig1
-rw-r--r--arch/arm/kernel/signal.c4
-rw-r--r--arch/arm/mach-iop32x/glantank.c12
-rw-r--r--arch/arm/mach-omap1/time.c12
-rw-r--r--arch/arm/mm/proc-xscale.S4
-rw-r--r--arch/arm/plat-omap/Kconfig1
-rw-r--r--arch/arm/plat-omap/Makefile5
-rw-r--r--arch/arm/plat-omap/dma.c9
-rw-r--r--arch/arm/plat-omap/gpio.c3
-rw-r--r--arch/parisc/Makefile3
-rw-r--r--arch/parisc/configs/default_defconfig (renamed from arch/parisc/defconfig)0
-rw-r--r--arch/parisc/kernel/firmware.c27
-rw-r--r--arch/parisc/kernel/hardware.c13
-rw-r--r--arch/parisc/kernel/head.S7
-rw-r--r--arch/parisc/kernel/pdc_cons.c30
-rw-r--r--arch/parisc/kernel/syscall_table.S5
-rw-r--r--arch/parisc/kernel/traps.c25
-rw-r--r--arch/powerpc/boot/Makefile4
-rwxr-xr-xarch/powerpc/boot/wrapper4
-rw-r--r--arch/powerpc/configs/cell_defconfig141
-rw-r--r--arch/powerpc/configs/celleb_defconfig117
-rw-r--r--arch/powerpc/configs/chrp32_defconfig165
-rw-r--r--arch/powerpc/configs/g5_defconfig137
-rw-r--r--arch/powerpc/configs/iseries_defconfig99
-rw-r--r--arch/powerpc/configs/pmac32_defconfig195
-rw-r--r--arch/powerpc/configs/ppc64_defconfig169
-rw-r--r--arch/powerpc/configs/ps3_defconfig103
-rw-r--r--arch/powerpc/configs/pseries_defconfig136
-rw-r--r--arch/powerpc/kernel/process.c6
-rw-r--r--arch/powerpc/kernel/ptrace.c10
-rw-r--r--arch/powerpc/mm/slb.c6
-rw-r--r--arch/powerpc/platforms/cell/iommu.c41
-rw-r--r--arch/powerpc/platforms/cell/setup.c36
-rw-r--r--arch/s390/lib/uaccess_pt.c2
-rw-r--r--arch/sh/Kconfig1
-rw-r--r--arch/sh/Makefile8
-rw-r--r--arch/sh/boot/Makefile4
-rw-r--r--arch/sh/kernel/cpu/sh2/entry.S1
-rw-r--r--arch/sh/kernel/smp.c2
-rw-r--r--arch/sparc/kernel/sys_sunos.c2
-rw-r--r--arch/sparc64/kernel/sys_sunos32.c2
-rw-r--r--arch/x86/kernel/aperture_64.c3
-rw-r--r--arch/x86/kernel/cpu/mtrr/main.c3
-rw-r--r--arch/x86/kernel/e820_32.c26
-rw-r--r--arch/x86/kernel/e820_64.c27
-rw-r--r--arch/x86/kernel/head_32.S2
-rw-r--r--arch/x86/kernel/pci-dma_64.c5
-rw-r--r--arch/x86/kernel/quirks.c2
-rw-r--r--arch/x86/kernel/reboot.c18
-rw-r--r--arch/x86/kernel/setup64.c14
-rw-r--r--arch/x86/mach-visws/traps.c5
-rw-r--r--arch/x86/mm/numa_64.c3
-rw-r--r--crypto/async_tx/async_xor.c2
-rw-r--r--drivers/acpi/Kconfig11
-rw-r--r--drivers/acpi/asus_acpi.c2
-rw-r--r--drivers/acpi/battery.c11
-rw-r--r--drivers/acpi/dock.c1
-rw-r--r--drivers/acpi/ec.c11
-rw-r--r--drivers/acpi/osl.c84
-rw-r--r--drivers/acpi/processor_idle.c12
-rw-r--r--drivers/acpi/video.c60
-rw-r--r--drivers/ata/Kconfig1
-rw-r--r--drivers/ata/ahci.c72
-rw-r--r--drivers/ata/libata-acpi.c96
-rw-r--r--drivers/ata/pata_ali.c2
-rw-r--r--drivers/atm/fore200e.c110
-rw-r--r--drivers/atm/fore200e.h106
-rw-r--r--drivers/block/Kconfig10
-rw-r--r--drivers/block/Makefile1
-rw-r--r--drivers/block/ps2esdi.c1079
-rw-r--r--drivers/block/virtio_blk.c1
-rw-r--r--drivers/char/drm/ati_pcigart.c91
-rw-r--r--drivers/char/drm/drmP.h3
-rw-r--r--drivers/char/drm/drm_fops.c7
-rw-r--r--drivers/char/drm/drm_lock.c35
-rw-r--r--drivers/char/drm/drm_pciids.h7
-rw-r--r--drivers/char/drm/r128_cce.c1
-rw-r--r--drivers/char/drm/radeon_cp.c1
-rw-r--r--drivers/char/drm/via_dma.c59
-rw-r--r--drivers/char/drm/via_dmablit.c2
-rw-r--r--drivers/char/rocket.c37
-rw-r--r--drivers/char/rocket_int.h83
-rw-r--r--drivers/dma/fsldma.c30
-rw-r--r--drivers/dma/fsldma.h1
-rw-r--r--drivers/firewire/Kconfig50
-rw-r--r--drivers/firewire/fw-ohci.c108
-rw-r--r--drivers/firewire/fw-sbp2.c36
-rw-r--r--drivers/firewire/fw-topology.c3
-rw-r--r--drivers/firewire/fw-transaction.c8
-rw-r--r--drivers/firewire/fw-transaction.h6
-rw-r--r--drivers/hid/hid-core.c2
-rw-r--r--drivers/hid/hid-input.c22
-rw-r--r--drivers/hid/usbhid/hid-core.c2
-rw-r--r--drivers/hid/usbhid/hid-quirks.c6
-rw-r--r--drivers/hwmon/Kconfig5
-rw-r--r--drivers/hwmon/ibmpex.c13
-rw-r--r--drivers/ide/ide-lib.c10
-rw-r--r--drivers/ide/ide-tape.c5
-rw-r--r--drivers/ide/ide-taskfile.c36
-rw-r--r--drivers/ide/ide.c20
-rw-r--r--drivers/ieee1394/sbp2.c5
-rw-r--r--drivers/input/misc/cobalt_btns.c16
-rw-r--r--drivers/input/mouse/alps.c5
-rw-r--r--drivers/input/serio/i8042-snirm.h75
-rw-r--r--drivers/input/serio/i8042-x86ia64io.h7
-rw-r--r--drivers/input/serio/i8042.c3
-rw-r--r--drivers/input/serio/i8042.h2
-rw-r--r--drivers/input/tablet/wacom.h6
-rw-r--r--drivers/input/tablet/wacom_sys.c6
-rw-r--r--drivers/input/tablet/wacom_wac.c31
-rw-r--r--drivers/input/tablet/wacom_wac.h1
-rw-r--r--drivers/input/touchscreen/ads7846.c2
-rw-r--r--drivers/md/md.c12
-rw-r--r--drivers/md/raid5.c6
-rw-r--r--drivers/media/dvb/dvb-usb/opera1.c2
-rw-r--r--drivers/media/video/Kconfig4
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c1
-rw-r--r--drivers/media/video/cx88/cx88-cards.c5
-rw-r--r--drivers/media/video/cx88/cx88-video.c2
-rw-r--r--drivers/media/video/em28xx/em28xx-core.c2
-rw-r--r--drivers/media/video/ivtv/ivtv-driver.c7
-rw-r--r--drivers/media/video/ivtv/ivtv-firmware.c8
-rw-r--r--drivers/media/video/saa7134/saa7134-cards.c41
-rw-r--r--drivers/media/video/saa7134/saa7134-core.c5
-rw-r--r--drivers/media/video/tvp5150.c4
-rw-r--r--drivers/media/video/usbvideo/usbvideo.c9
-rw-r--r--drivers/media/video/v4l1-compat.c50
-rw-r--r--drivers/memstick/core/memstick.c9
-rw-r--r--drivers/memstick/core/mspro_block.c94
-rw-r--r--drivers/memstick/host/jmb38x_ms.c113
-rw-r--r--drivers/memstick/host/tifm_ms.c17
-rw-r--r--drivers/message/fusion/mptbase.c276
-rw-r--r--drivers/message/fusion/mptscsih.c11
-rw-r--r--drivers/mmc/core/Makefile2
-rw-r--r--drivers/mmc/core/bus.c23
-rw-r--r--drivers/mmc/core/bus.h11
-rw-r--r--drivers/mmc/core/core.h2
-rw-r--r--drivers/mmc/core/mmc.c90
-rw-r--r--drivers/mmc/core/sd.c95
-rw-r--r--drivers/mmc/core/sdio.c2
-rw-r--r--drivers/mmc/core/sysfs.c43
-rw-r--r--drivers/mmc/core/sysfs.h26
-rw-r--r--drivers/mmc/host/tifm_sd.c2
-rw-r--r--drivers/net/3c501.c16
-rw-r--r--drivers/net/atl1/atl1_main.c3
-rw-r--r--drivers/net/cxgb3/sge.c12
-rw-r--r--drivers/net/epic100.c47
-rw-r--r--drivers/net/forcedeth.c118
-rw-r--r--drivers/net/ibm_newemac/core.c7
-rw-r--r--drivers/net/ibm_newemac/tah.c4
-rw-r--r--drivers/net/ifb.c15
-rw-r--r--drivers/net/igb/igb_main.c21
-rw-r--r--drivers/net/ioc3-eth.c3
-rw-r--r--drivers/net/ipg.c10
-rw-r--r--drivers/net/ne2k-pci.c8
-rw-r--r--drivers/net/ps3_gelic_wireless.c29
-rw-r--r--drivers/net/r6040.c10
-rw-r--r--drivers/net/tg3.c6
-rw-r--r--drivers/net/tulip/de2104x.c10
-rw-r--r--drivers/net/ucc_geth.c6
-rw-r--r--drivers/net/usb/rndis_host.c12
-rw-r--r--drivers/net/virtio_net.c22
-rw-r--r--drivers/net/wan/farsync.c17
-rw-r--r--drivers/net/wireless/ath5k/hw.c2
-rw-r--r--drivers/net/wireless/b43/phy.c2
-rw-r--r--drivers/net/wireless/p54usb.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h3
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c38
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00lib.h20
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00rfkill.c116
-rw-r--r--drivers/parisc/pdc_stable.c6
-rw-r--r--drivers/parisc/sba_iommu.c4
-rw-r--r--drivers/pci/hotplug/pciehp_core.c2
-rw-r--r--drivers/pnp/isapnp/core.c25
-rw-r--r--drivers/rtc/Kconfig2
-rw-r--r--drivers/rtc/rtc-at91sam9.c6
-rw-r--r--drivers/scsi/Kconfig2
-rw-r--r--drivers/scsi/a100u2w.c9
-rw-r--r--drivers/scsi/advansys.c2
-rw-r--r--drivers/scsi/arcmsr/arcmsr.h14
-rw-r--r--drivers/scsi/gdth.c7
-rw-r--r--drivers/scsi/scsi_lib.c5
-rw-r--r--drivers/scsi/scsi_sysfs.c2
-rw-r--r--drivers/scsi/sd.c1
-rw-r--r--drivers/scsi/sr.c1
-rw-r--r--drivers/serial/sh-sci.c4
-rw-r--r--drivers/sn/ioc3.c22
-rw-r--r--drivers/thermal/Kconfig2
-rw-r--r--drivers/thermal/thermal.c169
-rw-r--r--drivers/usb/storage/isd200.c5
-rw-r--r--drivers/video/Kconfig14
-rw-r--r--drivers/video/Makefile1
-rw-r--r--drivers/video/fb_defio.c22
-rw-r--r--drivers/video/i810/i810_main.c2
-rw-r--r--drivers/video/metronomefb.c999
-rw-r--r--drivers/virtio/virtio_balloon.c4
-rw-r--r--drivers/virtio/virtio_pci.c15
-rw-r--r--drivers/virtio/virtio_ring.c1
-rw-r--r--fs/aio.c8
-rw-r--r--fs/bio.c2
-rw-r--r--fs/buffer.c4
-rw-r--r--fs/cifs/cifs_dfs_ref.c18
-rw-r--r--fs/cifs/cifsacl.c25
-rw-r--r--fs/cifs/cifsproto.h9
-rw-r--r--fs/cifs/dir.c5
-rw-r--r--fs/cifs/dns_resolve.c8
-rw-r--r--fs/cifs/file.c4
-rw-r--r--fs/cifs/inode.c161
-rw-r--r--fs/cifs/link.c2
-rw-r--r--fs/dquot.c2
-rw-r--r--fs/ecryptfs/dentry.c2
-rw-r--r--fs/ext3/acl.c8
-rw-r--r--fs/ext3/resize.c4
-rw-r--r--fs/ext3/xattr.c4
-rw-r--r--fs/fs-writeback.c6
-rw-r--r--fs/hfs/brec.c18
-rw-r--r--fs/isofs/compress.c11
-rw-r--r--fs/jbd/journal.c5
-rw-r--r--fs/jbd/recovery.c2
-rw-r--r--fs/jbd/transaction.c8
-rw-r--r--fs/jbd2/recovery.c2
-rw-r--r--fs/locks.c4
-rw-r--r--fs/namei.c6
-rw-r--r--fs/nfs/read.c5
-rw-r--r--fs/nfs/super.c2
-rw-r--r--fs/nfs/write.c8
-rw-r--r--fs/nfsd/nfsfh.c4
-rw-r--r--fs/proc/base.c24
-rw-r--r--fs/proc/task_mmu.c50
-rw-r--r--fs/romfs/inode.c30
-rw-r--r--fs/super.c6
-rw-r--r--fs/ufs/balloc.c4
-rw-r--r--include/asm-arm/arch-at91/at91cap9.h7
-rw-r--r--include/asm-arm/arch-omap/dsp_common.h8
-rw-r--r--include/asm-arm/arch-s3c2410/irqs.h2
-rw-r--r--include/asm-parisc/elf.h22
-rw-r--r--include/asm-parisc/fixmap.h9
-rw-r--r--include/asm-parisc/futex.h10
-rw-r--r--include/asm-parisc/pdc.h3
-rw-r--r--include/asm-parisc/pgalloc.h4
-rw-r--r--include/asm-parisc/pgtable.h8
-rw-r--r--include/asm-parisc/unistd.h5
-rw-r--r--include/asm-sh/byteorder.h15
-rw-r--r--include/asm-sh/posix_types.h6
-rw-r--r--include/asm-sparc64/backoff.h3
-rw-r--r--include/asm-x86/cmpxchg_32.h32
-rw-r--r--include/asm-x86/e820_32.h2
-rw-r--r--include/asm-x86/e820_64.h2
-rw-r--r--include/asm-x86/page.h4
-rw-r--r--include/asm-x86/sync_bitops.h9
-rw-r--r--include/linux/Kbuild1
-rw-r--r--include/linux/exportfs.h4
-rw-r--r--include/linux/in.h2
-rw-r--r--include/linux/jbd.h11
-rw-r--r--include/linux/memstick.h1
-rw-r--r--include/linux/pci.h2
-rw-r--r--include/linux/pkt_cls.h8
-rw-r--r--include/linux/pnp.h2
-rw-r--r--include/linux/ps2esdi.h98
-rw-r--r--include/linux/rcupreempt.h4
-rw-r--r--include/linux/sched.h4
-rw-r--r--include/linux/security.h3
-rw-r--r--include/linux/topology.h3
-rw-r--r--include/linux/virtio.h5
-rw-r--r--include/net/dst.h23
-rw-r--r--include/net/sctp/sctp.h12
-rw-r--r--include/net/xfrm.h2
-rw-r--r--init/initramfs.c8
-rw-r--r--init/main.c7
-rw-r--r--kernel/audit.c11
-rw-r--r--kernel/relay.c5
-rw-r--r--kernel/sched.c72
-rw-r--r--kernel/sched_debug.c1
-rw-r--r--kernel/sched_fair.c291
-rw-r--r--kernel/time/clocksource.c14
-rw-r--r--lib/devres.c25
-rw-r--r--mm/filemap.c20
-rw-r--r--mm/fremap.c2
-rw-r--r--mm/highmem.c30
-rw-r--r--mm/memcontrol.c2
-rw-r--r--mm/oom_kill.c9
-rw-r--r--mm/pagewalk.c10
-rw-r--r--mm/readahead.c5
-rw-r--r--mm/rmap.c13
-rw-r--r--mm/shmem.c25
-rw-r--r--mm/slab.c5
-rw-r--r--mm/slub.c12
-rw-r--r--mm/swap.c5
-rw-r--r--mm/swap_state.c2
-rw-r--r--mm/tiny-shmem.c8
-rw-r--r--mm/vmalloc.c6
-rw-r--r--net/8021q/vlan_dev.c2
-rw-r--r--net/bridge/br_fdb.c2
-rw-r--r--net/core/netpoll.c6
-rw-r--r--net/core/sock.c4
-rw-r--r--net/ipv4/af_inet.c2
-rw-r--r--net/ipv4/esp4.c2
-rw-r--r--net/ipv4/ip_sockglue.c2
-rw-r--r--net/ipv4/ipconfig.c9
-rw-r--r--net/ipv4/netfilter/ipt_recent.c2
-rw-r--r--net/ipv4/tcp_output.c2
-rw-r--r--net/ipv6/Kconfig5
-rw-r--r--net/netfilter/nf_conntrack_h323_main.c2
-rw-r--r--net/sched/cls_u32.c8
-rw-r--r--net/sched/em_u32.c2
-rw-r--r--net/sctp/input.c2
-rw-r--r--net/sctp/ipv6.c32
-rw-r--r--net/sctp/protocol.c139
-rw-r--r--net/sunrpc/auth_gss/gss_mech_switch.c2
-rw-r--r--net/sunrpc/svc_xprt.c2
-rw-r--r--security/capability.c1
-rw-r--r--security/commoncap.c40
-rw-r--r--security/selinux/hooks.c3
-rw-r--r--security/smack/smack_lsm.c14
325 files changed, 4969 insertions, 4033 deletions
diff --git a/Documentation/acpi/dsdt-override.txt b/Documentation/acpi/dsdt-override.txt
index 5008f256a2db..febbb1ba4d23 100644
--- a/Documentation/acpi/dsdt-override.txt
+++ b/Documentation/acpi/dsdt-override.txt
@@ -1,15 +1,7 @@
1Linux supports two methods of overriding the BIOS DSDT: 1Linux supports a method of overriding the BIOS DSDT:
2 2
3CONFIG_ACPI_CUSTOM_DSDT builds the image into the kernel. 3CONFIG_ACPI_CUSTOM_DSDT builds the image into the kernel.
4 4
5CONFIG_ACPI_CUSTOM_DSDT_INITRD adds the image to the initrd. 5When to use this method is described in detail on the
6
7When to use these methods is described in detail on the
8Linux/ACPI home page: 6Linux/ACPI home page:
9http://www.lesswatts.org/projects/acpi/overridingDSDT.php 7http://www.lesswatts.org/projects/acpi/overridingDSDT.php
10
11Note that if both options are used, the DSDT supplied
12by the INITRD method takes precedence.
13
14Documentation/initramfs-add-dsdt.sh is provided for convenience
15for use with the CONFIG_ACPI_CUSTOM_DSDT_INITRD method.
diff --git a/Documentation/acpi/initramfs-add-dsdt.sh b/Documentation/acpi/initramfs-add-dsdt.sh
deleted file mode 100755
index 17ef6e838e14..000000000000
--- a/Documentation/acpi/initramfs-add-dsdt.sh
+++ /dev/null
@@ -1,43 +0,0 @@
1#!/bin/bash
2# Adds a DSDT file to the initrd (if it's an initramfs)
3# first argument is the name of archive
4# second argument is the name of the file to add
5# The file will be copied as /DSDT.aml
6
7# 20060126: fix "Premature end of file" with some old cpio (Roland Robic)
8# 20060205: this time it should really work
9
10# check the arguments
11if [ $# -ne 2 ]; then
12 program_name=$(basename $0)
13 echo "\
14$program_name: too few arguments
15Usage: $program_name initrd-name.img DSDT-to-add.aml
16Adds a DSDT file to an initrd (in initramfs format)
17
18 initrd-name.img: filename of the initrd in initramfs format
19 DSDT-to-add.aml: filename of the DSDT file to add
20 " 1>&2
21 exit 1
22fi
23
24# we should check it's an initramfs
25
26tempcpio=$(mktemp -d)
27# cleanup on exit, hangup, interrupt, quit, termination
28trap 'rm -rf $tempcpio' 0 1 2 3 15
29
30# extract the archive
31gunzip -c "$1" > "$tempcpio"/initramfs.cpio || exit 1
32
33# copy the DSDT file at the root of the directory so that we can call it "/DSDT.aml"
34cp -f "$2" "$tempcpio"/DSDT.aml
35
36# add the file
37cd "$tempcpio"
38(echo DSDT.aml | cpio --quiet -H newc -o -A -O "$tempcpio"/initramfs.cpio) || exit 1
39cd "$OLDPWD"
40
41# re-compress the archive
42gzip -c "$tempcpio"/initramfs.cpio > "$1"
43
diff --git a/Documentation/fb/cmap_xfbdev.txt b/Documentation/fb/cmap_xfbdev.txt
new file mode 100644
index 000000000000..55e1f0a3d2b4
--- /dev/null
+++ b/Documentation/fb/cmap_xfbdev.txt
@@ -0,0 +1,53 @@
1Understanding fbdev's cmap
2--------------------------
3
4These notes explain how X's dix layer uses fbdev's cmap structures.
5
6*. example of relevant structures in fbdev as used for a 3-bit grayscale cmap
7struct fb_var_screeninfo {
8 .bits_per_pixel = 8,
9 .grayscale = 1,
10 .red = { 4, 3, 0 },
11 .green = { 0, 0, 0 },
12 .blue = { 0, 0, 0 },
13}
14struct fb_fix_screeninfo {
15 .visual = FB_VISUAL_STATIC_PSEUDOCOLOR,
16}
17for (i = 0; i < 8; i++)
18 info->cmap.red[i] = (((2*i)+1)*(0xFFFF))/16;
19memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*8);
20memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*8);
21
22*. X11 apps do something like the following when trying to use grayscale.
23for (i=0; i < 8; i++) {
24 char colorspec[64];
25 memset(colorspec,0,64);
26 sprintf(colorspec, "rgb:%x/%x/%x", i*36,i*36,i*36);
27 if (!XParseColor(outputDisplay, testColormap, colorspec, &wantedColor))
28 printf("Can't get color %s\n",colorspec);
29 XAllocColor(outputDisplay, testColormap, &wantedColor);
30 grays[i] = wantedColor;
31}
32There's also named equivalents like gray1..x provided you have an rgb.txt.
33
34Somewhere in X's callchain, this results in a call to X code that handles the
35colormap. For example, Xfbdev hits the following:
36
37xc-011010/programs/Xserver/dix/colormap.c:
38
39FindBestPixel(pentFirst, size, prgb, channel)
40
41dr = (long) pent->co.local.red - prgb->red;
42dg = (long) pent->co.local.green - prgb->green;
43db = (long) pent->co.local.blue - prgb->blue;
44sq = dr * dr;
45UnsignedToBigNum (sq, &sum);
46BigNumAdd (&sum, &temp, &sum);
47
48co.local.red are entries that were brought in through FBIOGETCMAP which come
49directly from the info->cmap.red that was listed above. The prgb is the rgb
50that the app wants to match to. The above code is doing what looks like a least
51squares matching function. That's why the cmap entries can't be set to the left
52hand side boundaries of a color range.
53
diff --git a/Documentation/fb/metronomefb.txt b/Documentation/fb/metronomefb.txt
new file mode 100644
index 000000000000..b9a2e7b7e838
--- /dev/null
+++ b/Documentation/fb/metronomefb.txt
@@ -0,0 +1,38 @@
1 Metronomefb
2 -----------
3Maintained by Jaya Kumar <jayakumar.lkml.gmail.com>
4Last revised: Nov 20, 2007
5
6Metronomefb is a driver for the Metronome display controller. The controller
7is from E-Ink Corporation. It is intended to be used to drive the E-Ink
8Vizplex display media. E-Ink hosts some details of this controller and the
9display media here http://www.e-ink.com/products/matrix/metronome.html .
10
11Metronome is interfaced to the host CPU through the AMLCD interface. The
12host CPU generates the control information and the image in a framebuffer
13which is then delivered to the AMLCD interface by a host specific method.
14Currently, that's implemented for the PXA's LCDC controller. The display and
15error status are each pulled through individual GPIOs.
16
17Metronomefb was written for the PXA255/gumstix/lyre combination and
18therefore currently has board set specific code in it. If other boards based on
19other architectures are available, then the host specific code can be separated
20and abstracted out.
21
22Metronomefb requires waveform information which is delivered via the AMLCD
23interface to the metronome controller. The waveform information is expected to
24be delivered from userspace via the firmware class interface. The waveform file
25can be compressed as long as your udev or hotplug script is aware of the need
26to uncompress it before delivering it. metronomefb will ask for waveform.wbf
27which would typically go into /lib/firmware/waveform.wbf depending on your
28udev/hotplug setup. I have only tested with a single waveform file which was
29originally labeled 23P01201_60_WT0107_MTC. I do not know what it stands for.
30Caution should be exercised when manipulating the waveform as there may be
31a possibility that it could have some permanent effects on the display media.
32I neither have access to nor know exactly what the waveform does in terms of
33the physical media.
34
35Metronomefb uses the deferred IO interface so that it can provide a memory
36mappable frame buffer. It has been tested with tinyx (Xfbdev). It is known
37to work at this time with xeyes, xclock, xloadimage, xpdf.
38
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index c1d1fd0c299b..bf0e3df8e7a1 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -172,16 +172,6 @@ Who: Len Brown <len.brown@intel.com>
172 172
173--------------------------- 173---------------------------
174 174
175What: ide-tape driver
176When: July 2008
177Files: drivers/ide/ide-tape.c
178Why: This driver might not have any users anymore and maintaining it for no
179 reason is an effort no one wants to make.
180Who: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>, Borislav Petkov
181 <petkovbb@googlemail.com>
182
183---------------------------
184
185What: libata spindown skipping and warning 175What: libata spindown skipping and warning
186When: Dec 2008 176When: Dec 2008
187Why: Some halt(8) implementations synchronize caches for and spin 177Why: Some halt(8) implementations synchronize caches for and spin
diff --git a/Documentation/ide/ide.txt b/Documentation/ide/ide.txt
index e3b3425328b6..818676aad45a 100644
--- a/Documentation/ide/ide.txt
+++ b/Documentation/ide/ide.txt
@@ -105,7 +105,7 @@ Drives are normally found by auto-probing and/or examining the CMOS/BIOS data.
105For really weird situations, the apparent (fdisk) geometry can also be specified 105For really weird situations, the apparent (fdisk) geometry can also be specified
106on the kernel "command line" using LILO. The format of such lines is: 106on the kernel "command line" using LILO. The format of such lines is:
107 107
108 hdx=cyls,heads,sects,wpcom,irq 108 hdx=cyls,heads,sects
109or hdx=cdrom 109or hdx=cdrom
110 110
111where hdx can be any of hda through hdh, Three values are required 111where hdx can be any of hda through hdh, Three values are required
@@ -214,9 +214,9 @@ driver using the "options=" keyword to insmod, while replacing any ',' with
214Summary of ide driver parameters for kernel command line 214Summary of ide driver parameters for kernel command line
215-------------------------------------------------------- 215--------------------------------------------------------
216 216
217 "hdx=" is recognized for all "x" from "a" to "h", such as "hdc". 217 "hdx=" is recognized for all "x" from "a" to "u", such as "hdc".
218 218
219 "idex=" is recognized for all "x" from "0" to "3", such as "ide1". 219 "idex=" is recognized for all "x" from "0" to "9", such as "ide1".
220 220
221 "hdx=noprobe" : drive may be present, but do not probe for it 221 "hdx=noprobe" : drive may be present, but do not probe for it
222 222
@@ -228,13 +228,6 @@ Summary of ide driver parameters for kernel command line
228 228
229 "hdx=cyl,head,sect" : disk drive is present, with specified geometry 229 "hdx=cyl,head,sect" : disk drive is present, with specified geometry
230 230
231 "hdx=remap" : remap access of sector 0 to sector 1 (for EZDrive)
232
233 "hdx=remap63" : remap the drive: add 63 to all sector numbers
234 (for DM OnTrack)
235
236 "idex=noautotune" : driver will NOT attempt to tune interface speed
237
238 "hdx=autotune" : driver will attempt to tune interface speed 231 "hdx=autotune" : driver will attempt to tune interface speed
239 to the fastest PIO mode supported, 232 to the fastest PIO mode supported,
240 if possible for this drive only. 233 if possible for this drive only.
@@ -244,10 +237,6 @@ Summary of ide driver parameters for kernel command line
244 237
245 "hdx=nodma" : disallow DMA 238 "hdx=nodma" : disallow DMA
246 239
247 "hdx=scsi" : the return of the ide-scsi flag, this is useful for
248 allowing ide-floppy, ide-tape, and ide-cdrom|writers
249 to use ide-scsi emulation on a device specific option.
250
251 "idebus=xx" : inform IDE driver of VESA/PCI bus speed in MHz, 240 "idebus=xx" : inform IDE driver of VESA/PCI bus speed in MHz,
252 where "xx" is between 20 and 66 inclusive, 241 where "xx" is between 20 and 66 inclusive,
253 used when tuning chipset PIO modes. 242 used when tuning chipset PIO modes.
@@ -282,10 +271,6 @@ Summary of ide driver parameters for kernel command line
282 271
283 "ide=reverse" : formerly called to pci sub-system, but now local. 272 "ide=reverse" : formerly called to pci sub-system, but now local.
284 273
285The following are valid ONLY on ide0, which usually corresponds
286to the first ATA interface found on the particular host, and the defaults for
287the base,ctl ports must not be altered.
288
289 "ide=doubler" : probe/support IDE doublers on Amiga 274 "ide=doubler" : probe/support IDE doublers on Amiga
290 275
291There may be more options than shown -- use the source, Luke! 276There may be more options than shown -- use the source, Luke!
diff --git a/Documentation/input/notifier.txt b/Documentation/input/notifier.txt
new file mode 100644
index 000000000000..95172ca6f3d2
--- /dev/null
+++ b/Documentation/input/notifier.txt
@@ -0,0 +1,52 @@
1Keyboard notifier
2
3One can use register_keyboard_notifier to get called back on keyboard
4events (see kbd_keycode() function for details). The passed structure is
5keyboard_notifier_param:
6
7- 'vc' always provide the VC for which the keyboard event applies;
8- 'down' is 1 for a key press event, 0 for a key release;
9- 'shift' is the current modifier state, mask bit indexes are KG_*;
10- 'value' depends on the type of event.
11
12- KBD_KEYCODE events are always sent before other events, value is the keycode.
13- KBD_UNBOUND_KEYCODE events are sent if the keycode is not bound to a keysym.
14 value is the keycode.
15- KBD_UNICODE events are sent if the keycode -> keysym translation produced a
16 unicode character. value is the unicode value.
17- KBD_KEYSYM events are sent if the keycode -> keysym translation produced a
18 non-unicode character. value is the keysym.
19- KBD_POST_KEYSYM events are sent after the treatment of non-unicode keysyms.
20 That permits one to inspect the resulting LEDs for instance.
21
22For each kind of event but the last, the callback may return NOTIFY_STOP in
23order to "eat" the event: the notify loop is stopped and the keyboard event is
24dropped.
25
26In a rough C snippet, we have:
27
28kbd_keycode(keycode) {
29 ...
30 params.value = keycode;
31 if (notifier_call_chain(KBD_KEYCODE,&params) == NOTIFY_STOP)
32 || !bound) {
33 notifier_call_chain(KBD_UNBOUND_KEYCODE,&params);
34 return;
35 }
36
37 if (unicode) {
38 param.value = unicode;
39 if (notifier_call_chain(KBD_UNICODE,&params) == NOTIFY_STOP)
40 return;
41 emit unicode;
42 return;
43 }
44
45 params.value = keysym;
46 if (notifier_call_chain(KBD_KEYSYM,&params) == NOTIFY_STOP)
47 return;
48 apply keysym;
49 notifier_call_chain(KBD_POST_KEYSYM,&params);
50}
51
52NOTE: This notifier is usually called from interrupt context.
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 49318b99e581..650b0d8aa89b 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -177,9 +177,6 @@ and is between 256 and 4096 characters. It is defined in the file
177 177
178 acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT 178 acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT
179 179
180 acpi_no_initrd_override [KNL,ACPI]
181 Disable loading custom ACPI tables from the initramfs
182
183 acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS 180 acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS
184 Format: To spoof as Windows 98: ="Microsoft Windows" 181 Format: To spoof as Windows 98: ="Microsoft Windows"
185 182
@@ -735,6 +732,8 @@ and is between 256 and 4096 characters. It is defined in the file
735 (Don't attempt to blink the leds) 732 (Don't attempt to blink the leds)
736 i8042.noaux [HW] Don't check for auxiliary (== mouse) port 733 i8042.noaux [HW] Don't check for auxiliary (== mouse) port
737 i8042.nokbd [HW] Don't check/create keyboard port 734 i8042.nokbd [HW] Don't check/create keyboard port
735 i8042.noloop [HW] Disable the AUX Loopback command while probing
736 for the AUX port
738 i8042.nomux [HW] Don't check presence of an active multiplexing 737 i8042.nomux [HW] Don't check presence of an active multiplexing
739 controller 738 controller
740 i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX 739 i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX
diff --git a/Documentation/mca.txt b/Documentation/mca.txt
index aabce4ad90f9..510375d4209a 100644
--- a/Documentation/mca.txt
+++ b/Documentation/mca.txt
@@ -143,14 +143,7 @@ MCA Device Drivers
143 143
144Currently, there are a number of MCA-specific device drivers. 144Currently, there are a number of MCA-specific device drivers.
145 145
1461) PS/2 ESDI 1461) PS/2 SCSI
147 drivers/block/ps2esdi.c
148 include/linux/ps2esdi.h
149 Uses major number 36, and should use /dev files /dev/eda, /dev/edb.
150 Supports two drives, but only one controller. May use the
151 command-line args "ed=cyl,head,sec" and "tp720".
152
1532) PS/2 SCSI
154 drivers/scsi/ibmmca.c 147 drivers/scsi/ibmmca.c
155 drivers/scsi/ibmmca.h 148 drivers/scsi/ibmmca.h
156 The driver for the IBM SCSI subsystem. Includes both integrated 149 The driver for the IBM SCSI subsystem. Includes both integrated
@@ -159,25 +152,25 @@ Currently, there are a number of MCA-specific device drivers.
159 machine with a front-panel display (i.e. model 95), you can use 152 machine with a front-panel display (i.e. model 95), you can use
160 "ibmmcascsi=display" to enable a drive activity indicator. 153 "ibmmcascsi=display" to enable a drive activity indicator.
161 154
1623) 3c523 1552) 3c523
163 drivers/net/3c523.c 156 drivers/net/3c523.c
164 drivers/net/3c523.h 157 drivers/net/3c523.h
165 3Com 3c523 Etherlink/MC ethernet driver. 158 3Com 3c523 Etherlink/MC ethernet driver.
166 159
1674) SMC Ultra/MCA and IBM Adapter/A 1603) SMC Ultra/MCA and IBM Adapter/A
168 drivers/net/smc-mca.c 161 drivers/net/smc-mca.c
169 drivers/net/smc-mca.h 162 drivers/net/smc-mca.h
170 Driver for the MCA version of the SMC Ultra and various other 163 Driver for the MCA version of the SMC Ultra and various other
171 OEM'ed and work-alike cards (Elite, Adapter/A, etc). 164 OEM'ed and work-alike cards (Elite, Adapter/A, etc).
172 165
1735) NE/2 1664) NE/2
174 driver/net/ne2.c 167 driver/net/ne2.c
175 driver/net/ne2.h 168 driver/net/ne2.h
176 The NE/2 is the MCA version of the NE2000. This may not work 169 The NE/2 is the MCA version of the NE2000. This may not work
177 with clones that have a different adapter id than the original 170 with clones that have a different adapter id than the original
178 NE/2. 171 NE/2.
179 172
1806) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Adapter/A and 1735) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Adapter/A and
181 Reply Sound Blaster/SCSI (SCSI part) 174 Reply Sound Blaster/SCSI (SCSI part)
182 Better support for these cards than the driver for ISA. 175 Better support for these cards than the driver for ISA.
183 Supports multiple cards with IRQ sharing. 176 Supports multiple cards with IRQ sharing.
diff --git a/MAINTAINERS b/MAINTAINERS
index 0f95a4a787a6..73883b8bbd76 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -266,6 +266,15 @@ L: linux-acpi@vger.kernel.org
266W: http://www.lesswatts.org/projects/acpi/ 266W: http://www.lesswatts.org/projects/acpi/
267S: Maintained 267S: Maintained
268 268
269AD1889 ALSA SOUND DRIVER
270P: Kyle McMartin
271M: kyle@parisc-linux.org
272P: Thibaut Varene
273M: T-Bone@parisc-linux.org
274W: http://wiki.parisc-linux.org/AD1889
275L: linux-parisc@vger.kernel.org
276S: Maintained
277
269ADM1025 HARDWARE MONITOR DRIVER 278ADM1025 HARDWARE MONITOR DRIVER
270P: Jean Delvare 279P: Jean Delvare
271M: khali@linux-fr.org 280M: khali@linux-fr.org
@@ -443,7 +452,7 @@ S: Maintained
443 452
444ARM/ATMEL AT91RM9200 ARM ARCHITECTURE 453ARM/ATMEL AT91RM9200 ARM ARCHITECTURE
445P: Andrew Victor 454P: Andrew Victor
446M: andrew@sanpeople.com 455M: linux@maxim.org.za
447L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 456L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
448W: http://maxim.org.za/at91_26.html 457W: http://maxim.org.za/at91_26.html
449S: Maintained 458S: Maintained
@@ -871,7 +880,7 @@ P: Marcel Holtmann
871M: marcel@holtmann.org 880M: marcel@holtmann.org
872P: Maxim Krasnyansky 881P: Maxim Krasnyansky
873M: maxk@qualcomm.com 882M: maxk@qualcomm.com
874L: bluez-devel@lists.sf.net 883L: linux-bluetooth@vger.kernel.org
875W: http://bluez.sf.net 884W: http://bluez.sf.net
876W: http://www.bluez.org 885W: http://www.bluez.org
877W: http://www.holtmann.org/linux/bluetooth/ 886W: http://www.holtmann.org/linux/bluetooth/
@@ -2926,9 +2935,9 @@ S: Maintained
2926 2935
2927ORACLE CLUSTER FILESYSTEM 2 (OCFS2) 2936ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
2928P: Mark Fasheh 2937P: Mark Fasheh
2929M: mark.fasheh@oracle.com 2938M: mfasheh@suse.com
2930P: Kurt Hackel 2939P: Joel Becker
2931M: kurt.hackel@oracle.com 2940M: joel.becker@oracle.com
2932L: ocfs2-devel@oss.oracle.com 2941L: ocfs2-devel@oss.oracle.com
2933W: http://oss.oracle.com/projects/ocfs2/ 2942W: http://oss.oracle.com/projects/ocfs2/
2934S: Supported 2943S: Supported
diff --git a/Makefile b/Makefile
index 0eb23e5bfc88..7a4d34b91e03 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 25 3SUBLEVEL = 25
4EXTRAVERSION = -rc5 4EXTRAVERSION = -rc6
5NAME = Funky Weasel is Jiggy wit it 5NAME = Funky Weasel is Jiggy wit it
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 955fc53c1c01..4039a133006e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -469,6 +469,7 @@ config ARCH_OMAP
469 bool "TI OMAP" 469 bool "TI OMAP"
470 select GENERIC_GPIO 470 select GENERIC_GPIO
471 select GENERIC_TIME 471 select GENERIC_TIME
472 select GENERIC_CLOCKEVENTS
472 help 473 help
473 Support for TI's OMAP platform (OMAP1 and OMAP2). 474 Support for TI's OMAP platform (OMAP1 and OMAP2).
474 475
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index 54cdf1aeefc3..ef2f86a5e78a 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -26,8 +26,8 @@
26/* 26/*
27 * For ARM syscalls, we encode the syscall number into the instruction. 27 * For ARM syscalls, we encode the syscall number into the instruction.
28 */ 28 */
29#define SWI_SYS_SIGRETURN (0xef000000|(__NR_sigreturn)) 29#define SWI_SYS_SIGRETURN (0xef000000|(__NR_sigreturn)|(__NR_OABI_SYSCALL_BASE))
30#define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)) 30#define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)|(__NR_OABI_SYSCALL_BASE))
31 31
32/* 32/*
33 * With EABI, the syscall number has to be loaded into r7. 33 * With EABI, the syscall number has to be loaded into r7.
diff --git a/arch/arm/mach-iop32x/glantank.c b/arch/arm/mach-iop32x/glantank.c
index 74c65ce221de..d2a7b04f1cb0 100644
--- a/arch/arm/mach-iop32x/glantank.c
+++ b/arch/arm/mach-iop32x/glantank.c
@@ -14,8 +14,10 @@
14 14
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/f75375s.h>
17#include <linux/kernel.h> 18#include <linux/kernel.h>
18#include <linux/pci.h> 19#include <linux/pci.h>
20#include <linux/pm.h>
19#include <linux/string.h> 21#include <linux/string.h>
20#include <linux/slab.h> 22#include <linux/slab.h>
21#include <linux/serial_core.h> 23#include <linux/serial_core.h>
@@ -167,11 +169,21 @@ static struct platform_device glantank_serial_device = {
167 .resource = &glantank_uart_resource, 169 .resource = &glantank_uart_resource,
168}; 170};
169 171
172static struct f75375s_platform_data glantank_f75375s = {
173 .pwm = { 255, 255 },
174 .pwm_enable = { 0, 0 },
175};
176
170static struct i2c_board_info __initdata glantank_i2c_devices[] = { 177static struct i2c_board_info __initdata glantank_i2c_devices[] = {
171 { 178 {
172 I2C_BOARD_INFO("rtc-rs5c372", 0x32), 179 I2C_BOARD_INFO("rtc-rs5c372", 0x32),
173 .type = "rs5c372a", 180 .type = "rs5c372a",
174 }, 181 },
182 {
183 I2C_BOARD_INFO("f75375", 0x2e),
184 .type = "f75375",
185 .platform_data = &glantank_f75375s,
186 },
175}; 187};
176 188
177static void glantank_power_off(void) 189static void glantank_power_off(void)
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
index 237651ebae5d..a4f8b2055437 100644
--- a/arch/arm/mach-omap1/time.c
+++ b/arch/arm/mach-omap1/time.c
@@ -132,13 +132,20 @@ static inline void omap_mpu_timer_start(int nr, unsigned long load_val,
132 timer->cntl = timerflags; 132 timer->cntl = timerflags;
133} 133}
134 134
135static inline void omap_mpu_timer_stop(int nr)
136{
137 volatile omap_mpu_timer_regs_t* timer = omap_mpu_timer_base(nr);
138
139 timer->cntl &= ~MPU_TIMER_ST;
140}
141
135/* 142/*
136 * --------------------------------------------------------------------------- 143 * ---------------------------------------------------------------------------
137 * MPU timer 1 ... count down to zero, interrupt, reload 144 * MPU timer 1 ... count down to zero, interrupt, reload
138 * --------------------------------------------------------------------------- 145 * ---------------------------------------------------------------------------
139 */ 146 */
140static int omap_mpu_set_next_event(unsigned long cycles, 147static int omap_mpu_set_next_event(unsigned long cycles,
141 struct clock_event_device *evt) 148 struct clock_event_device *evt)
142{ 149{
143 omap_mpu_timer_start(0, cycles, 0); 150 omap_mpu_timer_start(0, cycles, 0);
144 return 0; 151 return 0;
@@ -152,6 +159,7 @@ static void omap_mpu_set_mode(enum clock_event_mode mode,
152 omap_mpu_set_autoreset(0); 159 omap_mpu_set_autoreset(0);
153 break; 160 break;
154 case CLOCK_EVT_MODE_ONESHOT: 161 case CLOCK_EVT_MODE_ONESHOT:
162 omap_mpu_timer_stop(0);
155 omap_mpu_remove_autoreset(0); 163 omap_mpu_remove_autoreset(0);
156 break; 164 break;
157 case CLOCK_EVT_MODE_UNUSED: 165 case CLOCK_EVT_MODE_UNUSED:
@@ -163,7 +171,7 @@ static void omap_mpu_set_mode(enum clock_event_mode mode,
163 171
164static struct clock_event_device clockevent_mpu_timer1 = { 172static struct clock_event_device clockevent_mpu_timer1 = {
165 .name = "mpu_timer1", 173 .name = "mpu_timer1",
166 .features = CLOCK_EVT_FEAT_PERIODIC, CLOCK_EVT_FEAT_ONESHOT, 174 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
167 .shift = 32, 175 .shift = 32,
168 .set_next_event = omap_mpu_set_next_event, 176 .set_next_event = omap_mpu_set_next_event,
169 .set_mode = omap_mpu_set_mode, 177 .set_mode = omap_mpu_set_mode,
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S
index c156ddab9a2d..016690b9d564 100644
--- a/arch/arm/mm/proc-xscale.S
+++ b/arch/arm/mm/proc-xscale.S
@@ -114,6 +114,10 @@ clean_addr: .word CLEAN_ADDR
114 * Nothing too exciting at the moment 114 * Nothing too exciting at the moment
115 */ 115 */
116ENTRY(cpu_xscale_proc_init) 116ENTRY(cpu_xscale_proc_init)
117 @ enable write buffer coalescing. Some bootloader disable it
118 mrc p15, 0, r1, c1, c0, 1
119 bic r1, r1, #1
120 mcr p15, 0, r1, c1, c0, 1
117 mov pc, lr 121 mov pc, lr
118 122
119/* 123/*
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
index c1f7e5a819a3..b917206ee906 100644
--- a/arch/arm/plat-omap/Kconfig
+++ b/arch/arm/plat-omap/Kconfig
@@ -11,7 +11,6 @@ choice
11 11
12config ARCH_OMAP1 12config ARCH_OMAP1
13 bool "TI OMAP1" 13 bool "TI OMAP1"
14 select GENERIC_CLOCKEVENTS
15 14
16config ARCH_OMAP2 15config ARCH_OMAP2
17 bool "TI OMAP2" 16 bool "TI OMAP2"
diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
index ce17df31b845..8f56c255d1ee 100644
--- a/arch/arm/plat-omap/Makefile
+++ b/arch/arm/plat-omap/Makefile
@@ -14,9 +14,14 @@ obj-$(CONFIG_OMAP_32K_TIMER) += timer32k.o
14# OCPI interconnect support for 1710, 1610 and 5912 14# OCPI interconnect support for 1710, 1610 and 5912
15obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o 15obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o
16 16
17obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
17 18
18obj-$(CONFIG_CPU_FREQ) += cpu-omap.o 19obj-$(CONFIG_CPU_FREQ) += cpu-omap.o
19obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o 20obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
20obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o 21obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
21obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o 22obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
22obj-$(CONFIG_I2C_OMAP) += i2c.o 23obj-$(CONFIG_I2C_OMAP) += i2c.o
24
25# OMAP mailbox framework
26obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
27
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index 91004a3c4794..793740686be2 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -1020,12 +1020,12 @@ static void create_dma_lch_chain(int lch_head, int lch_queue)
1020 } 1020 }
1021 1021
1022 w = OMAP_DMA_CLNK_CTRL_REG(lch_head); 1022 w = OMAP_DMA_CLNK_CTRL_REG(lch_head);
1023 w &= ~(0x0f); 1023 w &= ~(0x1f);
1024 w |= lch_queue; 1024 w |= lch_queue;
1025 OMAP_DMA_CLNK_CTRL_REG(lch_head) = w; 1025 OMAP_DMA_CLNK_CTRL_REG(lch_head) = w;
1026 1026
1027 w = OMAP_DMA_CLNK_CTRL_REG(lch_queue); 1027 w = OMAP_DMA_CLNK_CTRL_REG(lch_queue);
1028 w &= ~(0x0f); 1028 w &= ~(0x1f);
1029 w |= (dma_chan[lch_queue].next_linked_ch); 1029 w |= (dma_chan[lch_queue].next_linked_ch);
1030 OMAP_DMA_CLNK_CTRL_REG(lch_queue) = w; 1030 OMAP_DMA_CLNK_CTRL_REG(lch_queue) = w;
1031} 1031}
@@ -1248,7 +1248,7 @@ EXPORT_SYMBOL(omap_dma_chain_status);
1248 * @param frame_count 1248 * @param frame_count
1249 * @param callbk_data - channel callback parameter data. 1249 * @param callbk_data - channel callback parameter data.
1250 * 1250 *
1251 * @return - Success : start_dma status 1251 * @return - Success : 0
1252 * Failure: -EINVAL/-EBUSY 1252 * Failure: -EINVAL/-EBUSY
1253 */ 1253 */
1254int omap_dma_chain_a_transfer(int chain_id, int src_start, int dest_start, 1254int omap_dma_chain_a_transfer(int chain_id, int src_start, int dest_start,
@@ -1367,7 +1367,7 @@ int omap_dma_chain_a_transfer(int chain_id, int src_start, int dest_start,
1367 dma_chan[lch].flags |= OMAP_DMA_ACTIVE; 1367 dma_chan[lch].flags |= OMAP_DMA_ACTIVE;
1368 } 1368 }
1369 } 1369 }
1370 return start_dma; 1370 return 0;
1371} 1371}
1372EXPORT_SYMBOL(omap_dma_chain_a_transfer); 1372EXPORT_SYMBOL(omap_dma_chain_a_transfer);
1373 1373
@@ -1663,6 +1663,7 @@ static int omap2_dma_handle_ch(int ch)
1663 if (!status) { 1663 if (!status) {
1664 if (printk_ratelimit()) 1664 if (printk_ratelimit())
1665 printk(KERN_WARNING "Spurious DMA IRQ for lch %d\n", ch); 1665 printk(KERN_WARNING "Spurious DMA IRQ for lch %d\n", ch);
1666 omap_writel(1 << ch, OMAP_DMA4_IRQSTATUS_L0);
1666 return 0; 1667 return 0;
1667 } 1668 }
1668 if (unlikely(dma_chan[ch].dev_id == -1)) { 1669 if (unlikely(dma_chan[ch].dev_id == -1)) {
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index 66a1455595f4..8c78e4e57b5c 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -1134,10 +1134,9 @@ static void gpio_mask_irq(unsigned int irq)
1134static void gpio_unmask_irq(unsigned int irq) 1134static void gpio_unmask_irq(unsigned int irq)
1135{ 1135{
1136 unsigned int gpio = irq - IH_GPIO_BASE; 1136 unsigned int gpio = irq - IH_GPIO_BASE;
1137 unsigned int gpio_idx = get_gpio_index(gpio);
1138 struct gpio_bank *bank = get_irq_chip_data(irq); 1137 struct gpio_bank *bank = get_irq_chip_data(irq);
1139 1138
1140 _set_gpio_irqenable(bank, gpio_idx, 1); 1139 _set_gpio_irqenable(bank, gpio, 1);
1141} 1140}
1142 1141
1143static struct irq_chip gpio_irq_chip = { 1142static struct irq_chip gpio_irq_chip = {
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile
index e574de4efb36..5ddad7bd60ac 100644
--- a/arch/parisc/Makefile
+++ b/arch/parisc/Makefile
@@ -16,6 +16,9 @@
16# Modified for PA-RISC Linux by Paul Lahaie, Alex deVries, 16# Modified for PA-RISC Linux by Paul Lahaie, Alex deVries,
17# Mike Shaver, Helge Deller and Martin K. Petersen 17# Mike Shaver, Helge Deller and Martin K. Petersen
18# 18#
19
20KBUILD_DEFCONFIG := default_defconfig
21
19NM = sh $(srctree)/arch/parisc/nm 22NM = sh $(srctree)/arch/parisc/nm
20CHECKFLAGS += -D__hppa__=1 23CHECKFLAGS += -D__hppa__=1
21 24
diff --git a/arch/parisc/defconfig b/arch/parisc/configs/default_defconfig
index 448a757b06c6..448a757b06c6 100644
--- a/arch/parisc/defconfig
+++ b/arch/parisc/configs/default_defconfig
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c
index 4ab83d56974d..7177a6cd1b7f 100644
--- a/arch/parisc/kernel/firmware.c
+++ b/arch/parisc/kernel/firmware.c
@@ -1080,6 +1080,9 @@ void pdc_io_reset_devices(void)
1080 spin_unlock_irqrestore(&pdc_lock, flags); 1080 spin_unlock_irqrestore(&pdc_lock, flags);
1081} 1081}
1082 1082
1083/* locked by pdc_console_lock */
1084static int __attribute__((aligned(8))) iodc_retbuf[32];
1085static char __attribute__((aligned(64))) iodc_dbuf[4096];
1083 1086
1084/** 1087/**
1085 * pdc_iodc_print - Console print using IODC. 1088 * pdc_iodc_print - Console print using IODC.
@@ -1091,24 +1094,20 @@ void pdc_io_reset_devices(void)
1091 * Since the HP console requires CR+LF to perform a 'newline', we translate 1094 * Since the HP console requires CR+LF to perform a 'newline', we translate
1092 * "\n" to "\r\n". 1095 * "\n" to "\r\n".
1093 */ 1096 */
1094int pdc_iodc_print(unsigned char *str, unsigned count) 1097int pdc_iodc_print(const unsigned char *str, unsigned count)
1095{ 1098{
1096 /* XXX Should we spinlock posx usage */
1097 static int posx; /* for simple TAB-Simulation... */ 1099 static int posx; /* for simple TAB-Simulation... */
1098 int __attribute__((aligned(8))) iodc_retbuf[32];
1099 char __attribute__((aligned(64))) iodc_dbuf[4096];
1100 unsigned int i; 1100 unsigned int i;
1101 unsigned long flags; 1101 unsigned long flags;
1102 1102
1103 memset(iodc_dbuf, 0, 4096); 1103 for (i = 0; i < count && i < 79;) {
1104 for (i = 0; i < count && i < 2048;) {
1105 switch(str[i]) { 1104 switch(str[i]) {
1106 case '\n': 1105 case '\n':
1107 iodc_dbuf[i+0] = '\r'; 1106 iodc_dbuf[i+0] = '\r';
1108 iodc_dbuf[i+1] = '\n'; 1107 iodc_dbuf[i+1] = '\n';
1109 i += 2; 1108 i += 2;
1110 posx = 0; 1109 posx = 0;
1111 break; 1110 goto print;
1112 case '\t': 1111 case '\t':
1113 while (posx & 7) { 1112 while (posx & 7) {
1114 iodc_dbuf[i] = ' '; 1113 iodc_dbuf[i] = ' ';
@@ -1124,6 +1123,16 @@ int pdc_iodc_print(unsigned char *str, unsigned count)
1124 } 1123 }
1125 } 1124 }
1126 1125
1126 /* if we're at the end of line, and not already inserting a newline,
1127 * insert one anyway. iodc console doesn't claim to support >79 char
1128 * lines. don't account for this in the return value.
1129 */
1130 if (i == 79 && iodc_dbuf[i-1] != '\n') {
1131 iodc_dbuf[i+0] = '\r';
1132 iodc_dbuf[i+1] = '\n';
1133 }
1134
1135print:
1127 spin_lock_irqsave(&pdc_lock, flags); 1136 spin_lock_irqsave(&pdc_lock, flags);
1128 real32_call(PAGE0->mem_cons.iodc_io, 1137 real32_call(PAGE0->mem_cons.iodc_io,
1129 (unsigned long)PAGE0->mem_cons.hpa, ENTRY_IO_COUT, 1138 (unsigned long)PAGE0->mem_cons.hpa, ENTRY_IO_COUT,
@@ -1142,11 +1151,9 @@ int pdc_iodc_print(unsigned char *str, unsigned count)
1142 */ 1151 */
1143int pdc_iodc_getc(void) 1152int pdc_iodc_getc(void)
1144{ 1153{
1145 unsigned long flags;
1146 static int __attribute__((aligned(8))) iodc_retbuf[32];
1147 static char __attribute__((aligned(64))) iodc_dbuf[4096];
1148 int ch; 1154 int ch;
1149 int status; 1155 int status;
1156 unsigned long flags;
1150 1157
1151 /* Bail if no console input device. */ 1158 /* Bail if no console input device. */
1152 if (!PAGE0->mem_kbd.iodc_io) 1159 if (!PAGE0->mem_kbd.iodc_io)
diff --git a/arch/parisc/kernel/hardware.c b/arch/parisc/kernel/hardware.c
index 84b9611a9228..f48a640b55fb 100644
--- a/arch/parisc/kernel/hardware.c
+++ b/arch/parisc/kernel/hardware.c
@@ -274,7 +274,18 @@ static struct hp_hardware hp_hardware_list[] __devinitdata = {
274 {HPHW_NPROC,0x887,0x4,0x91,"Storm Peak Slow"}, 274 {HPHW_NPROC,0x887,0x4,0x91,"Storm Peak Slow"},
275 {HPHW_NPROC,0x888,0x4,0x91,"Storm Peak Fast DC-"}, 275 {HPHW_NPROC,0x888,0x4,0x91,"Storm Peak Fast DC-"},
276 {HPHW_NPROC,0x889,0x4,0x91,"Storm Peak Fast"}, 276 {HPHW_NPROC,0x889,0x4,0x91,"Storm Peak Fast"},
277 {HPHW_NPROC,0x88A,0x4,0x91,"Crestone Peak"}, 277 {HPHW_NPROC,0x88A,0x4,0x91,"Crestone Peak Slow"},
278 {HPHW_NPROC,0x88C,0x4,0x91,"Orca Mako+"},
279 {HPHW_NPROC,0x88D,0x4,0x91,"Rainier/Medel Mako+ Slow"},
280 {HPHW_NPROC,0x88E,0x4,0x91,"Rainier/Medel Mako+ Fast"},
281 {HPHW_NPROC,0x894,0x4,0x91,"Mt. Hamilton Fast Mako+"},
282 {HPHW_NPROC,0x895,0x4,0x91,"Storm Peak Slow Mako+"},
283 {HPHW_NPROC,0x896,0x4,0x91,"Storm Peak Fast Mako+"},
284 {HPHW_NPROC,0x897,0x4,0x91,"Storm Peak DC- Slow Mako+"},
285 {HPHW_NPROC,0x898,0x4,0x91,"Storm Peak DC- Fast Mako+"},
286 {HPHW_NPROC,0x899,0x4,0x91,"Mt. Hamilton Slow Mako+"},
287 {HPHW_NPROC,0x89B,0x4,0x91,"Crestone Peak Mako+ Slow"},
288 {HPHW_NPROC,0x89C,0x4,0x91,"Crestone Peak Mako+ Fast"},
278 {HPHW_A_DIRECT, 0x004, 0x0000D, 0x00, "Arrakis MUX"}, 289 {HPHW_A_DIRECT, 0x004, 0x0000D, 0x00, "Arrakis MUX"},
279 {HPHW_A_DIRECT, 0x005, 0x0000D, 0x00, "Dyun Kiuh MUX"}, 290 {HPHW_A_DIRECT, 0x005, 0x0000D, 0x00, "Dyun Kiuh MUX"},
280 {HPHW_A_DIRECT, 0x006, 0x0000D, 0x00, "Baat Kiuh AP/MUX (40299B)"}, 291 {HPHW_A_DIRECT, 0x006, 0x0000D, 0x00, "Baat Kiuh AP/MUX (40299B)"},
diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S
index a7b8859488bb..ec2482dc1beb 100644
--- a/arch/parisc/kernel/head.S
+++ b/arch/parisc/kernel/head.S
@@ -20,10 +20,11 @@
20#include <asm/pgtable.h> 20#include <asm/pgtable.h>
21 21
22#include <linux/linkage.h> 22#include <linux/linkage.h>
23#include <linux/init.h>
23 24
24 .level LEVEL 25 .level LEVEL
25 26
26 .data 27 __INITDATA
27ENTRY(boot_args) 28ENTRY(boot_args)
28 .word 0 /* arg0 */ 29 .word 0 /* arg0 */
29 .word 0 /* arg1 */ 30 .word 0 /* arg1 */
@@ -31,7 +32,7 @@ ENTRY(boot_args)
31 .word 0 /* arg3 */ 32 .word 0 /* arg3 */
32END(boot_args) 33END(boot_args)
33 34
34 .text 35 .section .text.head
35 .align 4 36 .align 4
36 .import init_thread_union,data 37 .import init_thread_union,data
37 .import fault_vector_20,code /* IVA parisc 2.0 32 bit */ 38 .import fault_vector_20,code /* IVA parisc 2.0 32 bit */
@@ -343,7 +344,7 @@ smp_slave_stext:
343ENDPROC(stext) 344ENDPROC(stext)
344 345
345#ifndef CONFIG_64BIT 346#ifndef CONFIG_64BIT
346 .data 347 .section .data.read_mostly
347 348
348 .align 4 349 .align 4
349 .export $global$,data 350 .export $global$,data
diff --git a/arch/parisc/kernel/pdc_cons.c b/arch/parisc/kernel/pdc_cons.c
index 33b1f84441b1..ccb68090781e 100644
--- a/arch/parisc/kernel/pdc_cons.c
+++ b/arch/parisc/kernel/pdc_cons.c
@@ -52,28 +52,30 @@
52#include <linux/tty.h> 52#include <linux/tty.h>
53#include <asm/pdc.h> /* for iodc_call() proto and friends */ 53#include <asm/pdc.h> /* for iodc_call() proto and friends */
54 54
55static spinlock_t pdc_console_lock = SPIN_LOCK_UNLOCKED;
55 56
56static void pdc_console_write(struct console *co, const char *s, unsigned count) 57static void pdc_console_write(struct console *co, const char *s, unsigned count)
57{ 58{
58 pdc_iodc_print(s, count); 59 int i = 0;
60 unsigned long flags;
61
62 spin_lock_irqsave(&pdc_console_lock, flags);
63 do {
64 i += pdc_iodc_print(s + i, count - i);
65 } while (i < count);
66 spin_unlock_irqrestore(&pdc_console_lock, flags);
59} 67}
60 68
61void pdc_printf(const char *fmt, ...) 69int pdc_console_poll_key(struct console *co)
62{ 70{
63 va_list args; 71 int c;
64 char buf[1024]; 72 unsigned long flags;
65 int i, len;
66
67 va_start(args, fmt);
68 len = vscnprintf(buf, sizeof(buf), fmt, args);
69 va_end(args);
70 73
71 pdc_iodc_print(buf, len); 74 spin_lock_irqsave(&pdc_console_lock, flags);
72} 75 c = pdc_iodc_getc();
76 spin_unlock_irqrestore(&pdc_console_lock, flags);
73 77
74int pdc_console_poll_key(struct console *co) 78 return c;
75{
76 return pdc_iodc_getc();
77} 79}
78 80
79static int pdc_console_setup(struct console *co, char *options) 81static int pdc_console_setup(struct console *co, char *options)
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
index 117438e9eb2a..6b5ac38f5a99 100644
--- a/arch/parisc/kernel/syscall_table.S
+++ b/arch/parisc/kernel/syscall_table.S
@@ -401,9 +401,12 @@
401 ENTRY_COMP(kexec_load) /* 300 */ 401 ENTRY_COMP(kexec_load) /* 300 */
402 ENTRY_COMP(utimensat) 402 ENTRY_COMP(utimensat)
403 ENTRY_COMP(signalfd) 403 ENTRY_COMP(signalfd)
404 ENTRY_COMP(timerfd) 404 ENTRY_SAME(ni_syscall) /* was timerfd */
405 ENTRY_SAME(eventfd) 405 ENTRY_SAME(eventfd)
406 ENTRY_COMP(fallocate) /* 305 */ 406 ENTRY_COMP(fallocate) /* 305 */
407 ENTRY_SAME(timerfd_create)
408 ENTRY_COMP(timerfd_settime)
409 ENTRY_COMP(timerfd_gettime)
407 410
408 /* Nothing yet */ 411 /* Nothing yet */
409 412
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
index 99fd56939afa..9dc6dc42f9cf 100644
--- a/arch/parisc/kernel/traps.c
+++ b/arch/parisc/kernel/traps.c
@@ -51,6 +51,9 @@
51DEFINE_SPINLOCK(pa_dbit_lock); 51DEFINE_SPINLOCK(pa_dbit_lock);
52#endif 52#endif
53 53
54void parisc_show_stack(struct task_struct *t, unsigned long *sp,
55 struct pt_regs *regs);
56
54static int printbinary(char *buf, unsigned long x, int nbits) 57static int printbinary(char *buf, unsigned long x, int nbits)
55{ 58{
56 unsigned long mask = 1UL << (nbits - 1); 59 unsigned long mask = 1UL << (nbits - 1);
@@ -148,6 +151,8 @@ void show_regs(struct pt_regs *regs)
148 print_symbol(" IAOQ[1]: %s\n", regs->iaoq[1]); 151 print_symbol(" IAOQ[1]: %s\n", regs->iaoq[1]);
149 printk(level); 152 printk(level);
150 print_symbol(" RP(r2): %s\n", regs->gr[2]); 153 print_symbol(" RP(r2): %s\n", regs->gr[2]);
154
155 parisc_show_stack(current, NULL, regs);
151} 156}
152 157
153 158
@@ -181,11 +186,19 @@ static void do_show_stack(struct unwind_frame_info *info)
181 printk("\n"); 186 printk("\n");
182} 187}
183 188
184void show_stack(struct task_struct *task, unsigned long *s) 189void parisc_show_stack(struct task_struct *task, unsigned long *sp,
190 struct pt_regs *regs)
185{ 191{
186 struct unwind_frame_info info; 192 struct unwind_frame_info info;
193 struct task_struct *t;
194
195 t = task ? task : current;
196 if (regs) {
197 unwind_frame_init(&info, t, regs);
198 goto show_stack;
199 }
187 200
188 if (!task) { 201 if (t == current) {
189 unsigned long sp; 202 unsigned long sp;
190 203
191HERE: 204HERE:
@@ -201,12 +214,18 @@ HERE:
201 unwind_frame_init(&info, current, &r); 214 unwind_frame_init(&info, current, &r);
202 } 215 }
203 } else { 216 } else {
204 unwind_frame_init_from_blocked_task(&info, task); 217 unwind_frame_init_from_blocked_task(&info, t);
205 } 218 }
206 219
220show_stack:
207 do_show_stack(&info); 221 do_show_stack(&info);
208} 222}
209 223
224void show_stack(struct task_struct *t, unsigned long *sp)
225{
226 return parisc_show_stack(t, sp, NULL);
227}
228
210int is_valid_bugaddr(unsigned long iaoq) 229int is_valid_bugaddr(unsigned long iaoq)
211{ 230{
212 return 1; 231 return 1;
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 4974d9e56ead..1aded8f759d0 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -253,8 +253,8 @@ image-$(CONFIG_TQM8540) += cuImage.tqm8540
253image-$(CONFIG_TQM8541) += cuImage.tqm8541 253image-$(CONFIG_TQM8541) += cuImage.tqm8541
254image-$(CONFIG_TQM8555) += cuImage.tqm8555 254image-$(CONFIG_TQM8555) += cuImage.tqm8555
255image-$(CONFIG_TQM8560) += cuImage.tqm8560 255image-$(CONFIG_TQM8560) += cuImage.tqm8560
256image-$(CONFIG_SBC8548) += cuImage.tqm8548 256image-$(CONFIG_SBC8548) += cuImage.sbc8548
257image-$(CONFIG_SBC8560) += cuImage.tqm8560 257image-$(CONFIG_SBC8560) += cuImage.sbc8560
258 258
259# Board ports in arch/powerpc/platform/embedded6xx/Kconfig 259# Board ports in arch/powerpc/platform/embedded6xx/Kconfig
260image-$(CONFIG_STORCENTER) += cuImage.storcenter 260image-$(CONFIG_STORCENTER) += cuImage.storcenter
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index d50e498a072b..8f8b8494d62f 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -174,10 +174,10 @@ cuboot*)
174 *-mpc83*) 174 *-mpc83*)
175 platformo=$object/cuboot-83xx.o 175 platformo=$object/cuboot-83xx.o
176 ;; 176 ;;
177 *-tqm8541|*-mpc8560*|*-tqm8560|*-tqm8555*) 177 *-tqm8541|*-mpc8560*|*-tqm8560|*-tqm8555)
178 platformo=$object/cuboot-85xx-cpm2.o 178 platformo=$object/cuboot-85xx-cpm2.o
179 ;; 179 ;;
180 *-mpc85*) 180 *-mpc85*|*-tqm8540|*-sbc85*)
181 platformo=$object/cuboot-85xx.o 181 platformo=$object/cuboot-85xx.o
182 ;; 182 ;;
183 esac 183 esac
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig
index f3bde8c6c8c6..c420e47426f8 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.24-rc4 3# Linux kernel version: 2.6.25-rc6
4# Thu Dec 6 16:48:05 2007 4# Thu Mar 20 10:31:04 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y
28CONFIG_GENERIC_TIME_VSYSCALL=y 28CONFIG_GENERIC_TIME_VSYSCALL=y
29CONFIG_GENERIC_CLOCKEVENTS=y 29CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_HAVE_SETUP_PER_CPU_AREA=y
31CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
32CONFIG_RWSEM_XCHGADD_ALGORITHM=y 33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
33CONFIG_ARCH_HAS_ILOG2_U32=y 34CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -69,8 +70,6 @@ CONFIG_SYSVIPC_SYSCTL=y
69# CONFIG_POSIX_MQUEUE is not set 70# CONFIG_POSIX_MQUEUE is not set
70# CONFIG_BSD_PROCESS_ACCT is not set 71# CONFIG_BSD_PROCESS_ACCT is not set
71# CONFIG_TASKSTATS is not set 72# CONFIG_TASKSTATS is not set
72# CONFIG_USER_NS is not set
73# CONFIG_PID_NS is not set
74# CONFIG_AUDIT is not set 73# CONFIG_AUDIT is not set
75CONFIG_IKCONFIG=y 74CONFIG_IKCONFIG=y
76CONFIG_IKCONFIG_PROC=y 75CONFIG_IKCONFIG_PROC=y
@@ -79,13 +78,20 @@ CONFIG_CGROUPS=y
79# CONFIG_CGROUP_DEBUG is not set 78# CONFIG_CGROUP_DEBUG is not set
80# CONFIG_CGROUP_NS is not set 79# CONFIG_CGROUP_NS is not set
81CONFIG_CPUSETS=y 80CONFIG_CPUSETS=y
82CONFIG_FAIR_GROUP_SCHED=y 81# CONFIG_GROUP_SCHED is not set
83CONFIG_FAIR_USER_SCHED=y 82# CONFIG_USER_SCHED is not set
84# CONFIG_FAIR_CGROUP_SCHED is not set 83# CONFIG_CGROUP_SCHED is not set
85# CONFIG_CGROUP_CPUACCT is not set 84# CONFIG_CGROUP_CPUACCT is not set
85# CONFIG_RESOURCE_COUNTERS is not set
86CONFIG_SYSFS_DEPRECATED=y 86CONFIG_SYSFS_DEPRECATED=y
87CONFIG_SYSFS_DEPRECATED_V2=y
87CONFIG_PROC_PID_CPUSET=y 88CONFIG_PROC_PID_CPUSET=y
88# CONFIG_RELAY is not set 89# CONFIG_RELAY is not set
90CONFIG_NAMESPACES=y
91# CONFIG_UTS_NS is not set
92# CONFIG_IPC_NS is not set
93# CONFIG_USER_NS is not set
94# CONFIG_PID_NS is not set
89CONFIG_BLK_DEV_INITRD=y 95CONFIG_BLK_DEV_INITRD=y
90CONFIG_INITRAMFS_SOURCE="" 96CONFIG_INITRAMFS_SOURCE=""
91CONFIG_CC_OPTIMIZE_FOR_SIZE=y 97CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -99,11 +105,13 @@ CONFIG_HOTPLUG=y
99CONFIG_PRINTK=y 105CONFIG_PRINTK=y
100CONFIG_BUG=y 106CONFIG_BUG=y
101CONFIG_ELF_CORE=y 107CONFIG_ELF_CORE=y
108# CONFIG_COMPAT_BRK is not set
102CONFIG_BASE_FULL=y 109CONFIG_BASE_FULL=y
103CONFIG_FUTEX=y 110CONFIG_FUTEX=y
104CONFIG_ANON_INODES=y 111CONFIG_ANON_INODES=y
105CONFIG_EPOLL=y 112CONFIG_EPOLL=y
106CONFIG_SIGNALFD=y 113CONFIG_SIGNALFD=y
114CONFIG_TIMERFD=y
107CONFIG_EVENTFD=y 115CONFIG_EVENTFD=y
108CONFIG_SHMEM=y 116CONFIG_SHMEM=y
109CONFIG_VM_EVENT_COUNTERS=y 117CONFIG_VM_EVENT_COUNTERS=y
@@ -111,6 +119,15 @@ CONFIG_SLUB_DEBUG=y
111# CONFIG_SLAB is not set 119# CONFIG_SLAB is not set
112CONFIG_SLUB=y 120CONFIG_SLUB=y
113# CONFIG_SLOB is not set 121# CONFIG_SLOB is not set
122CONFIG_PROFILING=y
123# CONFIG_MARKERS is not set
124CONFIG_OPROFILE=m
125CONFIG_HAVE_OPROFILE=y
126# CONFIG_KPROBES is not set
127CONFIG_HAVE_KPROBES=y
128CONFIG_HAVE_KRETPROBES=y
129CONFIG_PROC_PAGE_MONITOR=y
130CONFIG_SLABINFO=y
114CONFIG_RT_MUTEXES=y 131CONFIG_RT_MUTEXES=y
115# CONFIG_TINY_SHMEM is not set 132# CONFIG_TINY_SHMEM is not set
116CONFIG_BASE_SMALL=0 133CONFIG_BASE_SMALL=0
@@ -138,6 +155,7 @@ CONFIG_DEFAULT_AS=y
138# CONFIG_DEFAULT_CFQ is not set 155# CONFIG_DEFAULT_CFQ is not set
139# CONFIG_DEFAULT_NOOP is not set 156# CONFIG_DEFAULT_NOOP is not set
140CONFIG_DEFAULT_IOSCHED="anticipatory" 157CONFIG_DEFAULT_IOSCHED="anticipatory"
158CONFIG_CLASSIC_RCU=y
141 159
142# 160#
143# Platform support 161# Platform support
@@ -148,8 +166,8 @@ CONFIG_PPC_MULTIPLATFORM=y
148# CONFIG_PPC_86xx is not set 166# CONFIG_PPC_86xx is not set
149# CONFIG_PPC_PSERIES is not set 167# CONFIG_PPC_PSERIES is not set
150# CONFIG_PPC_ISERIES is not set 168# CONFIG_PPC_ISERIES is not set
151# CONFIG_PPC_MPC52xx is not set 169# CONFIG_PPC_MPC512x is not set
152# CONFIG_PPC_MPC5200 is not set 170# CONFIG_PPC_MPC5121 is not set
153# CONFIG_PPC_PMAC is not set 171# CONFIG_PPC_PMAC is not set
154# CONFIG_PPC_MAPLE is not set 172# CONFIG_PPC_MAPLE is not set
155# CONFIG_PPC_PASEMI is not set 173# CONFIG_PPC_PASEMI is not set
@@ -162,14 +180,14 @@ CONFIG_PPC_PS3=y
162# CONFIG_PS3_ADVANCED is not set 180# CONFIG_PS3_ADVANCED is not set
163CONFIG_PS3_HTAB_SIZE=20 181CONFIG_PS3_HTAB_SIZE=20
164# CONFIG_PS3_DYNAMIC_DMA is not set 182# CONFIG_PS3_DYNAMIC_DMA is not set
165CONFIG_PS3_USE_LPAR_ADDR=y
166CONFIG_PS3_VUART=y 183CONFIG_PS3_VUART=y
167CONFIG_PS3_PS3AV=y 184CONFIG_PS3_PS3AV=y
168CONFIG_PS3_SYS_MANAGER=m 185CONFIG_PS3_SYS_MANAGER=y
169CONFIG_PS3_STORAGE=y 186CONFIG_PS3_STORAGE=y
170CONFIG_PS3_DISK=y 187CONFIG_PS3_DISK=y
171CONFIG_PS3_ROM=m 188CONFIG_PS3_ROM=m
172CONFIG_PS3_FLASH=m 189CONFIG_PS3_FLASH=m
190CONFIG_PS3_LPM=m
173CONFIG_PPC_CELL=y 191CONFIG_PPC_CELL=y
174CONFIG_PPC_CELL_NATIVE=y 192CONFIG_PPC_CELL_NATIVE=y
175CONFIG_PPC_IBM_CELL_BLADE=y 193CONFIG_PPC_IBM_CELL_BLADE=y
@@ -183,10 +201,12 @@ CONFIG_CBE_RAS=y
183CONFIG_CBE_THERM=m 201CONFIG_CBE_THERM=m
184CONFIG_CBE_CPUFREQ=m 202CONFIG_CBE_CPUFREQ=m
185CONFIG_CBE_CPUFREQ_PMI=m 203CONFIG_CBE_CPUFREQ_PMI=m
204CONFIG_OPROFILE_CELL=y
186# CONFIG_PQ2ADS is not set 205# CONFIG_PQ2ADS is not set
187CONFIG_PPC_NATIVE=y 206CONFIG_PPC_NATIVE=y
188CONFIG_UDBG_RTAS_CONSOLE=y 207CONFIG_UDBG_RTAS_CONSOLE=y
189CONFIG_PPC_UDBG_BEAT=y 208CONFIG_PPC_UDBG_BEAT=y
209# CONFIG_IPIC is not set
190CONFIG_MPIC=y 210CONFIG_MPIC=y
191# CONFIG_MPIC_WEIRD is not set 211# CONFIG_MPIC_WEIRD is not set
192# CONFIG_PPC_I8259 is not set 212# CONFIG_PPC_I8259 is not set
@@ -219,7 +239,6 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
219# 239#
220# CPU Frequency drivers 240# CPU Frequency drivers
221# 241#
222# CONFIG_CPM2 is not set
223CONFIG_AXON_RAM=m 242CONFIG_AXON_RAM=m
224# CONFIG_FSL_ULI1575 is not set 243# CONFIG_FSL_ULI1575 is not set
225 244
@@ -235,16 +254,20 @@ CONFIG_HZ_250=y
235# CONFIG_HZ_300 is not set 254# CONFIG_HZ_300 is not set
236# CONFIG_HZ_1000 is not set 255# CONFIG_HZ_1000 is not set
237CONFIG_HZ=250 256CONFIG_HZ=250
257# CONFIG_SCHED_HRTICK is not set
238CONFIG_PREEMPT_NONE=y 258CONFIG_PREEMPT_NONE=y
239# CONFIG_PREEMPT_VOLUNTARY is not set 259# CONFIG_PREEMPT_VOLUNTARY is not set
240# CONFIG_PREEMPT is not set 260# CONFIG_PREEMPT is not set
241CONFIG_PREEMPT_BKL=y
242CONFIG_BINFMT_ELF=y 261CONFIG_BINFMT_ELF=y
262CONFIG_COMPAT_BINFMT_ELF=y
243CONFIG_BINFMT_MISC=m 263CONFIG_BINFMT_MISC=m
244CONFIG_FORCE_MAX_ZONEORDER=9 264CONFIG_FORCE_MAX_ZONEORDER=9
245CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y 265CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
246# CONFIG_IOMMU_VMERGE is not set 266# CONFIG_IOMMU_VMERGE is not set
267CONFIG_IOMMU_HELPER=y
247CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 268CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
269CONFIG_ARCH_HAS_WALK_MEMORY=y
270CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
248# CONFIG_KEXEC is not set 271# CONFIG_KEXEC is not set
249# CONFIG_CRASH_DUMP is not set 272# CONFIG_CRASH_DUMP is not set
250CONFIG_IRQ_ALL_CPUS=y 273CONFIG_IRQ_ALL_CPUS=y
@@ -267,6 +290,7 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
267CONFIG_SPARSEMEM_VMEMMAP=y 290CONFIG_SPARSEMEM_VMEMMAP=y
268CONFIG_MEMORY_HOTPLUG=y 291CONFIG_MEMORY_HOTPLUG=y
269CONFIG_MEMORY_HOTPLUG_SPARSE=y 292CONFIG_MEMORY_HOTPLUG_SPARSE=y
293CONFIG_MEMORY_HOTREMOVE=y
270CONFIG_SPLIT_PTLOCK_CPUS=4 294CONFIG_SPLIT_PTLOCK_CPUS=4
271CONFIG_MIGRATION=y 295CONFIG_MIGRATION=y
272CONFIG_RESOURCES_64BIT=y 296CONFIG_RESOURCES_64BIT=y
@@ -276,12 +300,12 @@ CONFIG_ARCH_MEMORY_PROBE=y
276CONFIG_NODES_SPAN_OTHER_NODES=y 300CONFIG_NODES_SPAN_OTHER_NODES=y
277CONFIG_PPC_HAS_HASH_64K=y 301CONFIG_PPC_HAS_HASH_64K=y
278CONFIG_PPC_64K_PAGES=y 302CONFIG_PPC_64K_PAGES=y
303# CONFIG_PPC_SUBPAGE_PROT is not set
279CONFIG_SCHED_SMT=y 304CONFIG_SCHED_SMT=y
280CONFIG_PROC_DEVICETREE=y 305CONFIG_PROC_DEVICETREE=y
281# CONFIG_CMDLINE_BOOL is not set 306# CONFIG_CMDLINE_BOOL is not set
282# CONFIG_PM is not set 307# CONFIG_PM is not set
283CONFIG_SECCOMP=y 308CONFIG_SECCOMP=y
284# CONFIG_WANT_DEVICE_TREE is not set
285CONFIG_ISA_DMA_API=y 309CONFIG_ISA_DMA_API=y
286 310
287# 311#
@@ -318,6 +342,7 @@ CONFIG_XFRM=y
318# CONFIG_XFRM_USER is not set 342# CONFIG_XFRM_USER is not set
319# CONFIG_XFRM_SUB_POLICY is not set 343# CONFIG_XFRM_SUB_POLICY is not set
320# CONFIG_XFRM_MIGRATE is not set 344# CONFIG_XFRM_MIGRATE is not set
345# CONFIG_XFRM_STATISTICS is not set
321# CONFIG_NET_KEY is not set 346# CONFIG_NET_KEY is not set
322CONFIG_INET=y 347CONFIG_INET=y
323CONFIG_IP_MULTICAST=y 348CONFIG_IP_MULTICAST=y
@@ -368,6 +393,7 @@ CONFIG_IPV6_TUNNEL=m
368# CONFIG_NETWORK_SECMARK is not set 393# CONFIG_NETWORK_SECMARK is not set
369CONFIG_NETFILTER=y 394CONFIG_NETFILTER=y
370# CONFIG_NETFILTER_DEBUG is not set 395# CONFIG_NETFILTER_DEBUG is not set
396CONFIG_NETFILTER_ADVANCED=y
371 397
372# 398#
373# Core Netfilter Configuration 399# Core Netfilter Configuration
@@ -375,7 +401,6 @@ CONFIG_NETFILTER=y
375CONFIG_NETFILTER_NETLINK=m 401CONFIG_NETFILTER_NETLINK=m
376CONFIG_NETFILTER_NETLINK_QUEUE=m 402CONFIG_NETFILTER_NETLINK_QUEUE=m
377CONFIG_NETFILTER_NETLINK_LOG=m 403CONFIG_NETFILTER_NETLINK_LOG=m
378# CONFIG_NF_CONNTRACK_ENABLED is not set
379# CONFIG_NF_CONNTRACK is not set 404# CONFIG_NF_CONNTRACK is not set
380CONFIG_NETFILTER_XTABLES=m 405CONFIG_NETFILTER_XTABLES=m
381CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 406CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
@@ -383,20 +408,25 @@ CONFIG_NETFILTER_XT_TARGET_DSCP=m
383CONFIG_NETFILTER_XT_TARGET_MARK=m 408CONFIG_NETFILTER_XT_TARGET_MARK=m
384CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 409CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
385CONFIG_NETFILTER_XT_TARGET_NFLOG=m 410CONFIG_NETFILTER_XT_TARGET_NFLOG=m
411CONFIG_NETFILTER_XT_TARGET_RATEEST=m
386# CONFIG_NETFILTER_XT_TARGET_TRACE is not set 412# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
387CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 413CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
414CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
388CONFIG_NETFILTER_XT_MATCH_COMMENT=m 415CONFIG_NETFILTER_XT_MATCH_COMMENT=m
389CONFIG_NETFILTER_XT_MATCH_DCCP=m 416CONFIG_NETFILTER_XT_MATCH_DCCP=m
390CONFIG_NETFILTER_XT_MATCH_DSCP=m 417CONFIG_NETFILTER_XT_MATCH_DSCP=m
391CONFIG_NETFILTER_XT_MATCH_ESP=m 418CONFIG_NETFILTER_XT_MATCH_ESP=m
419CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
392CONFIG_NETFILTER_XT_MATCH_LENGTH=m 420CONFIG_NETFILTER_XT_MATCH_LENGTH=m
393CONFIG_NETFILTER_XT_MATCH_LIMIT=m 421CONFIG_NETFILTER_XT_MATCH_LIMIT=m
394CONFIG_NETFILTER_XT_MATCH_MAC=m 422CONFIG_NETFILTER_XT_MATCH_MAC=m
395CONFIG_NETFILTER_XT_MATCH_MARK=m 423CONFIG_NETFILTER_XT_MATCH_MARK=m
424CONFIG_NETFILTER_XT_MATCH_OWNER=m
396CONFIG_NETFILTER_XT_MATCH_POLICY=m 425CONFIG_NETFILTER_XT_MATCH_POLICY=m
397CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 426CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
398CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 427CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
399CONFIG_NETFILTER_XT_MATCH_QUOTA=m 428CONFIG_NETFILTER_XT_MATCH_QUOTA=m
429CONFIG_NETFILTER_XT_MATCH_RATEEST=m
400CONFIG_NETFILTER_XT_MATCH_REALM=m 430CONFIG_NETFILTER_XT_MATCH_REALM=m
401CONFIG_NETFILTER_XT_MATCH_SCTP=m 431CONFIG_NETFILTER_XT_MATCH_SCTP=m
402CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 432CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
@@ -411,20 +441,16 @@ CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
411# 441#
412CONFIG_IP_NF_QUEUE=m 442CONFIG_IP_NF_QUEUE=m
413CONFIG_IP_NF_IPTABLES=m 443CONFIG_IP_NF_IPTABLES=m
414CONFIG_IP_NF_MATCH_IPRANGE=m
415CONFIG_IP_NF_MATCH_TOS=m
416CONFIG_IP_NF_MATCH_RECENT=m 444CONFIG_IP_NF_MATCH_RECENT=m
417CONFIG_IP_NF_MATCH_ECN=m 445CONFIG_IP_NF_MATCH_ECN=m
418CONFIG_IP_NF_MATCH_AH=m 446CONFIG_IP_NF_MATCH_AH=m
419CONFIG_IP_NF_MATCH_TTL=m 447CONFIG_IP_NF_MATCH_TTL=m
420CONFIG_IP_NF_MATCH_OWNER=m
421CONFIG_IP_NF_MATCH_ADDRTYPE=m 448CONFIG_IP_NF_MATCH_ADDRTYPE=m
422CONFIG_IP_NF_FILTER=m 449CONFIG_IP_NF_FILTER=m
423CONFIG_IP_NF_TARGET_REJECT=m 450CONFIG_IP_NF_TARGET_REJECT=m
424CONFIG_IP_NF_TARGET_LOG=m 451CONFIG_IP_NF_TARGET_LOG=m
425CONFIG_IP_NF_TARGET_ULOG=m 452CONFIG_IP_NF_TARGET_ULOG=m
426CONFIG_IP_NF_MANGLE=m 453CONFIG_IP_NF_MANGLE=m
427CONFIG_IP_NF_TARGET_TOS=m
428CONFIG_IP_NF_TARGET_ECN=m 454CONFIG_IP_NF_TARGET_ECN=m
429CONFIG_IP_NF_TARGET_TTL=m 455CONFIG_IP_NF_TARGET_TTL=m
430CONFIG_IP_NF_RAW=m 456CONFIG_IP_NF_RAW=m
@@ -433,7 +459,7 @@ CONFIG_IP_NF_ARPFILTER=m
433CONFIG_IP_NF_ARP_MANGLE=m 459CONFIG_IP_NF_ARP_MANGLE=m
434 460
435# 461#
436# IPv6: Netfilter Configuration (EXPERIMENTAL) 462# IPv6: Netfilter Configuration
437# 463#
438# CONFIG_IP6_NF_QUEUE is not set 464# CONFIG_IP6_NF_QUEUE is not set
439# CONFIG_IP6_NF_IPTABLES is not set 465# CONFIG_IP6_NF_IPTABLES is not set
@@ -459,6 +485,7 @@ CONFIG_NET_CLS_ROUTE=y
459# 485#
460# CONFIG_NET_PKTGEN is not set 486# CONFIG_NET_PKTGEN is not set
461# CONFIG_HAMRADIO is not set 487# CONFIG_HAMRADIO is not set
488# CONFIG_CAN is not set
462# CONFIG_IRDA is not set 489# CONFIG_IRDA is not set
463# CONFIG_BT is not set 490# CONFIG_BT is not set
464# CONFIG_AF_RXRPC is not set 491# CONFIG_AF_RXRPC is not set
@@ -467,7 +494,7 @@ CONFIG_NET_CLS_ROUTE=y
467# Wireless 494# Wireless
468# 495#
469# CONFIG_CFG80211 is not set 496# CONFIG_CFG80211 is not set
470# CONFIG_WIRELESS_EXT is not set 497CONFIG_WIRELESS_EXT=y
471# CONFIG_MAC80211 is not set 498# CONFIG_MAC80211 is not set
472# CONFIG_IEEE80211 is not set 499# CONFIG_IEEE80211 is not set
473# CONFIG_RFKILL is not set 500# CONFIG_RFKILL is not set
@@ -505,7 +532,7 @@ CONFIG_BLK_DEV_LOOP=y
505CONFIG_BLK_DEV_RAM=y 532CONFIG_BLK_DEV_RAM=y
506CONFIG_BLK_DEV_RAM_COUNT=16 533CONFIG_BLK_DEV_RAM_COUNT=16
507CONFIG_BLK_DEV_RAM_SIZE=131072 534CONFIG_BLK_DEV_RAM_SIZE=131072
508CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 535# CONFIG_BLK_DEV_XIP is not set
509# CONFIG_CDROM_PKTCDVD is not set 536# CONFIG_CDROM_PKTCDVD is not set
510# CONFIG_ATA_OVER_ETH is not set 537# CONFIG_ATA_OVER_ETH is not set
511CONFIG_MISC_DEVICES=y 538CONFIG_MISC_DEVICES=y
@@ -513,11 +540,13 @@ CONFIG_MISC_DEVICES=y
513# CONFIG_EEPROM_93CX6 is not set 540# CONFIG_EEPROM_93CX6 is not set
514# CONFIG_SGI_IOC4 is not set 541# CONFIG_SGI_IOC4 is not set
515# CONFIG_TIFM_CORE is not set 542# CONFIG_TIFM_CORE is not set
543# CONFIG_ENCLOSURE_SERVICES is not set
544CONFIG_HAVE_IDE=y
516CONFIG_IDE=y 545CONFIG_IDE=y
517CONFIG_BLK_DEV_IDE=y 546CONFIG_BLK_DEV_IDE=y
518 547
519# 548#
520# Please see Documentation/ide.txt for help/info on IDE drives 549# Please see Documentation/ide/ide.txt for help/info on IDE drives
521# 550#
522# CONFIG_BLK_DEV_IDE_SATA is not set 551# CONFIG_BLK_DEV_IDE_SATA is not set
523CONFIG_BLK_DEV_IDEDISK=y 552CONFIG_BLK_DEV_IDEDISK=y
@@ -534,12 +563,12 @@ CONFIG_IDE_PROC_FS=y
534# 563#
535CONFIG_IDE_GENERIC=y 564CONFIG_IDE_GENERIC=y
536# CONFIG_BLK_DEV_PLATFORM is not set 565# CONFIG_BLK_DEV_PLATFORM is not set
566CONFIG_BLK_DEV_IDEDMA_SFF=y
537 567
538# 568#
539# PCI IDE chipsets support 569# PCI IDE chipsets support
540# 570#
541CONFIG_BLK_DEV_IDEPCI=y 571CONFIG_BLK_DEV_IDEPCI=y
542CONFIG_IDEPCI_SHARE_IRQ=y
543CONFIG_IDEPCI_PCIBUS_ORDER=y 572CONFIG_IDEPCI_PCIBUS_ORDER=y
544# CONFIG_BLK_DEV_OFFBOARD is not set 573# CONFIG_BLK_DEV_OFFBOARD is not set
545CONFIG_BLK_DEV_GENERIC=y 574CONFIG_BLK_DEV_GENERIC=y
@@ -571,7 +600,6 @@ CONFIG_BLK_DEV_SIIMAGE=y
571# CONFIG_BLK_DEV_VIA82CXXX is not set 600# CONFIG_BLK_DEV_VIA82CXXX is not set
572# CONFIG_BLK_DEV_TC86C001 is not set 601# CONFIG_BLK_DEV_TC86C001 is not set
573CONFIG_BLK_DEV_CELLEB=y 602CONFIG_BLK_DEV_CELLEB=y
574# CONFIG_IDE_ARM is not set
575CONFIG_BLK_DEV_IDEDMA=y 603CONFIG_BLK_DEV_IDEDMA=y
576CONFIG_IDE_ARCH_OBSOLETE_INIT=y 604CONFIG_IDE_ARCH_OBSOLETE_INIT=y
577# CONFIG_BLK_DEV_HD is not set 605# CONFIG_BLK_DEV_HD is not set
@@ -637,6 +665,7 @@ CONFIG_SCSI_LOWLEVEL=y
637# CONFIG_SCSI_IPS is not set 665# CONFIG_SCSI_IPS is not set
638# CONFIG_SCSI_INITIO is not set 666# CONFIG_SCSI_INITIO is not set
639# CONFIG_SCSI_INIA100 is not set 667# CONFIG_SCSI_INIA100 is not set
668# CONFIG_SCSI_MVSAS is not set
640# CONFIG_SCSI_STEX is not set 669# CONFIG_SCSI_STEX is not set
641# CONFIG_SCSI_SYM53C8XX_2 is not set 670# CONFIG_SCSI_SYM53C8XX_2 is not set
642# CONFIG_SCSI_IPR is not set 671# CONFIG_SCSI_IPR is not set
@@ -689,6 +718,7 @@ CONFIG_SATA_PROMISE=y
689# CONFIG_PATA_MPIIX is not set 718# CONFIG_PATA_MPIIX is not set
690# CONFIG_PATA_OLDPIIX is not set 719# CONFIG_PATA_OLDPIIX is not set
691# CONFIG_PATA_NETCELL is not set 720# CONFIG_PATA_NETCELL is not set
721# CONFIG_PATA_NINJA32 is not set
692# CONFIG_PATA_NS87410 is not set 722# CONFIG_PATA_NS87410 is not set
693# CONFIG_PATA_NS87415 is not set 723# CONFIG_PATA_NS87415 is not set
694# CONFIG_PATA_OPTI is not set 724# CONFIG_PATA_OPTI is not set
@@ -703,6 +733,7 @@ CONFIG_PATA_PDC2027X=m
703# CONFIG_PATA_SIS is not set 733# CONFIG_PATA_SIS is not set
704# CONFIG_PATA_VIA is not set 734# CONFIG_PATA_VIA is not set
705# CONFIG_PATA_WINBOND is not set 735# CONFIG_PATA_WINBOND is not set
736# CONFIG_PATA_PLATFORM is not set
706# CONFIG_PATA_SCC is not set 737# CONFIG_PATA_SCC is not set
707CONFIG_MD=y 738CONFIG_MD=y
708CONFIG_BLK_DEV_MD=m 739CONFIG_BLK_DEV_MD=m
@@ -748,7 +779,6 @@ CONFIG_MACVLAN=m
748# CONFIG_EQUALIZER is not set 779# CONFIG_EQUALIZER is not set
749CONFIG_TUN=y 780CONFIG_TUN=y
750# CONFIG_VETH is not set 781# CONFIG_VETH is not set
751# CONFIG_IP1000 is not set
752# CONFIG_ARCNET is not set 782# CONFIG_ARCNET is not set
753# CONFIG_PHYLIB is not set 783# CONFIG_PHYLIB is not set
754CONFIG_NET_ETHERNET=y 784CONFIG_NET_ETHERNET=y
@@ -773,6 +803,9 @@ CONFIG_E1000=m
773CONFIG_E1000_NAPI=y 803CONFIG_E1000_NAPI=y
774# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 804# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
775# CONFIG_E1000E is not set 805# CONFIG_E1000E is not set
806# CONFIG_E1000E_ENABLED is not set
807# CONFIG_IP1000 is not set
808# CONFIG_IGB is not set
776# CONFIG_NS83820 is not set 809# CONFIG_NS83820 is not set
777# CONFIG_HAMACHI is not set 810# CONFIG_HAMACHI is not set
778# CONFIG_YELLOWFIN is not set 811# CONFIG_YELLOWFIN is not set
@@ -788,6 +821,7 @@ CONFIG_TIGON3=y
788# CONFIG_BNX2 is not set 821# CONFIG_BNX2 is not set
789CONFIG_SPIDER_NET=y 822CONFIG_SPIDER_NET=y
790CONFIG_GELIC_NET=m 823CONFIG_GELIC_NET=m
824CONFIG_GELIC_WIRELESS=y
791# CONFIG_QLA3XXX is not set 825# CONFIG_QLA3XXX is not set
792# CONFIG_ATL1 is not set 826# CONFIG_ATL1 is not set
793CONFIG_NETDEV_10000=y 827CONFIG_NETDEV_10000=y
@@ -802,6 +836,7 @@ CONFIG_NETDEV_10000=y
802# CONFIG_PASEMI_MAC is not set 836# CONFIG_PASEMI_MAC is not set
803# CONFIG_MLX4_CORE is not set 837# CONFIG_MLX4_CORE is not set
804# CONFIG_TEHUTI is not set 838# CONFIG_TEHUTI is not set
839# CONFIG_BNX2X is not set
805# CONFIG_TR is not set 840# CONFIG_TR is not set
806 841
807# 842#
@@ -824,7 +859,6 @@ CONFIG_NETDEV_10000=y
824# CONFIG_PPP is not set 859# CONFIG_PPP is not set
825# CONFIG_SLIP is not set 860# CONFIG_SLIP is not set
826# CONFIG_NET_FC is not set 861# CONFIG_NET_FC is not set
827# CONFIG_SHAPER is not set
828# CONFIG_NETCONSOLE is not set 862# CONFIG_NETCONSOLE is not set
829# CONFIG_NETPOLL is not set 863# CONFIG_NETPOLL is not set
830# CONFIG_NET_POLL_CONTROLLER is not set 864# CONFIG_NET_POLL_CONTROLLER is not set
@@ -883,16 +917,17 @@ CONFIG_SERIAL_NONSTANDARD=y
883# CONFIG_DIGIEPCA is not set 917# CONFIG_DIGIEPCA is not set
884# CONFIG_MOXA_INTELLIO is not set 918# CONFIG_MOXA_INTELLIO is not set
885# CONFIG_MOXA_SMARTIO is not set 919# CONFIG_MOXA_SMARTIO is not set
886# CONFIG_MOXA_SMARTIO_NEW is not set
887# CONFIG_ISI is not set 920# CONFIG_ISI is not set
888# CONFIG_SYNCLINK is not set 921# CONFIG_SYNCLINK is not set
889# CONFIG_SYNCLINKMP is not set 922# CONFIG_SYNCLINKMP is not set
890# CONFIG_SYNCLINK_GT is not set 923# CONFIG_SYNCLINK_GT is not set
891# CONFIG_N_HDLC is not set 924# CONFIG_N_HDLC is not set
925# CONFIG_RISCOM8 is not set
892# CONFIG_SPECIALIX is not set 926# CONFIG_SPECIALIX is not set
893# CONFIG_SX is not set 927# CONFIG_SX is not set
894# CONFIG_RIO is not set 928# CONFIG_RIO is not set
895# CONFIG_STALDRV is not set 929# CONFIG_STALDRV is not set
930# CONFIG_NOZOMI is not set
896 931
897# 932#
898# Serial drivers 933# Serial drivers
@@ -976,13 +1011,12 @@ CONFIG_I2C_ALGOBIT=y
976# 1011#
977# Miscellaneous I2C Chip support 1012# Miscellaneous I2C Chip support
978# 1013#
979# CONFIG_SENSORS_DS1337 is not set
980# CONFIG_SENSORS_DS1374 is not set
981# CONFIG_DS1682 is not set 1014# CONFIG_DS1682 is not set
982# CONFIG_SENSORS_EEPROM is not set 1015# CONFIG_SENSORS_EEPROM is not set
983# CONFIG_SENSORS_PCF8574 is not set 1016# CONFIG_SENSORS_PCF8574 is not set
984# CONFIG_SENSORS_PCA9539 is not set 1017# CONFIG_PCF8575 is not set
985# CONFIG_SENSORS_PCF8591 is not set 1018# CONFIG_SENSORS_PCF8591 is not set
1019# CONFIG_TPS65010 is not set
986# CONFIG_SENSORS_MAX6875 is not set 1020# CONFIG_SENSORS_MAX6875 is not set
987# CONFIG_SENSORS_TSL2550 is not set 1021# CONFIG_SENSORS_TSL2550 is not set
988# CONFIG_I2C_DEBUG_CORE is not set 1022# CONFIG_I2C_DEBUG_CORE is not set
@@ -998,6 +1032,7 @@ CONFIG_I2C_ALGOBIT=y
998# CONFIG_W1 is not set 1032# CONFIG_W1 is not set
999# CONFIG_POWER_SUPPLY is not set 1033# CONFIG_POWER_SUPPLY is not set
1000# CONFIG_HWMON is not set 1034# CONFIG_HWMON is not set
1035# CONFIG_THERMAL is not set
1001CONFIG_WATCHDOG=y 1036CONFIG_WATCHDOG=y
1002# CONFIG_WATCHDOG_NOWAYOUT is not set 1037# CONFIG_WATCHDOG_NOWAYOUT is not set
1003 1038
@@ -1082,6 +1117,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y
1082CONFIG_USB_ARCH_HAS_EHCI=y 1117CONFIG_USB_ARCH_HAS_EHCI=y
1083CONFIG_USB=m 1118CONFIG_USB=m
1084# CONFIG_USB_DEBUG is not set 1119# CONFIG_USB_DEBUG is not set
1120# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1085 1121
1086# 1122#
1087# Miscellaneous USB options 1123# Miscellaneous USB options
@@ -1095,10 +1131,10 @@ CONFIG_USB_DEVICE_CLASS=y
1095# USB Host Controller Drivers 1131# USB Host Controller Drivers
1096# 1132#
1097CONFIG_USB_EHCI_HCD=m 1133CONFIG_USB_EHCI_HCD=m
1098# CONFIG_USB_EHCI_SPLIT_ISO is not set
1099# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1134# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1100# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1135# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1101CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y 1136CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
1137# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1102# CONFIG_USB_ISP116X_HCD is not set 1138# CONFIG_USB_ISP116X_HCD is not set
1103CONFIG_USB_OHCI_HCD=m 1139CONFIG_USB_OHCI_HCD=m
1104CONFIG_USB_OHCI_HCD_PPC_OF=y 1140CONFIG_USB_OHCI_HCD_PPC_OF=y
@@ -1149,10 +1185,6 @@ CONFIG_USB_MON=y
1149# 1185#
1150# USB port drivers 1186# USB port drivers
1151# 1187#
1152
1153#
1154# USB Serial Converter support
1155#
1156# CONFIG_USB_SERIAL is not set 1188# CONFIG_USB_SERIAL is not set
1157 1189
1158# 1190#
@@ -1178,16 +1210,9 @@ CONFIG_USB_MON=y
1178# CONFIG_USB_TRANCEVIBRATOR is not set 1210# CONFIG_USB_TRANCEVIBRATOR is not set
1179# CONFIG_USB_IOWARRIOR is not set 1211# CONFIG_USB_IOWARRIOR is not set
1180# CONFIG_USB_TEST is not set 1212# CONFIG_USB_TEST is not set
1181
1182#
1183# USB DSL modem support
1184#
1185
1186#
1187# USB Gadget Support
1188#
1189# CONFIG_USB_GADGET is not set 1213# CONFIG_USB_GADGET is not set
1190# CONFIG_MMC is not set 1214# CONFIG_MMC is not set
1215# CONFIG_MEMSTICK is not set
1191# CONFIG_NEW_LEDS is not set 1216# CONFIG_NEW_LEDS is not set
1192CONFIG_INFINIBAND=m 1217CONFIG_INFINIBAND=m
1193CONFIG_INFINIBAND_USER_MAD=m 1218CONFIG_INFINIBAND_USER_MAD=m
@@ -1198,6 +1223,7 @@ CONFIG_INFINIBAND_MTHCA=m
1198CONFIG_INFINIBAND_MTHCA_DEBUG=y 1223CONFIG_INFINIBAND_MTHCA_DEBUG=y
1199# CONFIG_INFINIBAND_AMSO1100 is not set 1224# CONFIG_INFINIBAND_AMSO1100 is not set
1200# CONFIG_MLX4_INFINIBAND is not set 1225# CONFIG_MLX4_INFINIBAND is not set
1226# CONFIG_INFINIBAND_NES is not set
1201CONFIG_INFINIBAND_IPOIB=m 1227CONFIG_INFINIBAND_IPOIB=m
1202# CONFIG_INFINIBAND_IPOIB_CM is not set 1228# CONFIG_INFINIBAND_IPOIB_CM is not set
1203CONFIG_INFINIBAND_IPOIB_DEBUG=y 1229CONFIG_INFINIBAND_IPOIB_DEBUG=y
@@ -1211,7 +1237,9 @@ CONFIG_EDAC=y
1211# 1237#
1212# CONFIG_EDAC_DEBUG is not set 1238# CONFIG_EDAC_DEBUG is not set
1213CONFIG_EDAC_MM_EDAC=y 1239CONFIG_EDAC_MM_EDAC=y
1240CONFIG_EDAC_CELL=y
1214# CONFIG_RTC_CLASS is not set 1241# CONFIG_RTC_CLASS is not set
1242# CONFIG_DMADEVICES is not set
1215 1243
1216# 1244#
1217# Userspace I/O 1245# Userspace I/O
@@ -1239,12 +1267,10 @@ CONFIG_FS_POSIX_ACL=y
1239# CONFIG_XFS_FS is not set 1267# CONFIG_XFS_FS is not set
1240# CONFIG_GFS2_FS is not set 1268# CONFIG_GFS2_FS is not set
1241# CONFIG_OCFS2_FS is not set 1269# CONFIG_OCFS2_FS is not set
1242# CONFIG_MINIX_FS is not set 1270CONFIG_DNOTIFY=y
1243# CONFIG_ROMFS_FS is not set
1244CONFIG_INOTIFY=y 1271CONFIG_INOTIFY=y
1245CONFIG_INOTIFY_USER=y 1272CONFIG_INOTIFY_USER=y
1246# CONFIG_QUOTA is not set 1273# CONFIG_QUOTA is not set
1247CONFIG_DNOTIFY=y
1248# CONFIG_AUTOFS_FS is not set 1274# CONFIG_AUTOFS_FS is not set
1249CONFIG_AUTOFS4_FS=m 1275CONFIG_AUTOFS4_FS=m
1250# CONFIG_FUSE_FS is not set 1276# CONFIG_FUSE_FS is not set
@@ -1293,8 +1319,10 @@ CONFIG_HUGETLB_PAGE=y
1293# CONFIG_EFS_FS is not set 1319# CONFIG_EFS_FS is not set
1294# CONFIG_CRAMFS is not set 1320# CONFIG_CRAMFS is not set
1295# CONFIG_VXFS_FS is not set 1321# CONFIG_VXFS_FS is not set
1322# CONFIG_MINIX_FS is not set
1296# CONFIG_HPFS_FS is not set 1323# CONFIG_HPFS_FS is not set
1297# CONFIG_QNX4FS_FS is not set 1324# CONFIG_QNX4FS_FS is not set
1325# CONFIG_ROMFS_FS is not set
1298# CONFIG_SYSV_FS is not set 1326# CONFIG_SYSV_FS is not set
1299# CONFIG_UFS_FS is not set 1327# CONFIG_UFS_FS is not set
1300CONFIG_NETWORK_FILESYSTEMS=y 1328CONFIG_NETWORK_FILESYSTEMS=y
@@ -1382,7 +1410,6 @@ CONFIG_NLS_ISO8859_15=m
1382# CONFIG_NLS_KOI8_U is not set 1410# CONFIG_NLS_KOI8_U is not set
1383# CONFIG_NLS_UTF8 is not set 1411# CONFIG_NLS_UTF8 is not set
1384# CONFIG_DLM is not set 1412# CONFIG_DLM is not set
1385# CONFIG_UCC_SLOW is not set
1386 1413
1387# 1414#
1388# Library routines 1415# Library routines
@@ -1404,11 +1431,6 @@ CONFIG_PLIST=y
1404CONFIG_HAS_IOMEM=y 1431CONFIG_HAS_IOMEM=y
1405CONFIG_HAS_IOPORT=y 1432CONFIG_HAS_IOPORT=y
1406CONFIG_HAS_DMA=y 1433CONFIG_HAS_DMA=y
1407CONFIG_INSTRUMENTATION=y
1408CONFIG_PROFILING=y
1409CONFIG_OPROFILE=m
1410# CONFIG_KPROBES is not set
1411# CONFIG_MARKERS is not set
1412 1434
1413# 1435#
1414# Kernel hacking 1436# Kernel hacking
@@ -1427,6 +1449,7 @@ CONFIG_SCHED_DEBUG=y
1427# CONFIG_SCHEDSTATS is not set 1449# CONFIG_SCHEDSTATS is not set
1428# CONFIG_TIMER_STATS is not set 1450# CONFIG_TIMER_STATS is not set
1429# CONFIG_SLUB_DEBUG_ON is not set 1451# CONFIG_SLUB_DEBUG_ON is not set
1452# CONFIG_SLUB_STATS is not set
1430# CONFIG_DEBUG_RT_MUTEXES is not set 1453# CONFIG_DEBUG_RT_MUTEXES is not set
1431# CONFIG_RT_MUTEX_TESTER is not set 1454# CONFIG_RT_MUTEX_TESTER is not set
1432# CONFIG_DEBUG_SPINLOCK is not set 1455# CONFIG_DEBUG_SPINLOCK is not set
@@ -1439,9 +1462,9 @@ CONFIG_DEBUG_BUGVERBOSE=y
1439# CONFIG_DEBUG_VM is not set 1462# CONFIG_DEBUG_VM is not set
1440# CONFIG_DEBUG_LIST is not set 1463# CONFIG_DEBUG_LIST is not set
1441# CONFIG_DEBUG_SG is not set 1464# CONFIG_DEBUG_SG is not set
1442# CONFIG_FORCED_INLINING is not set
1443# CONFIG_BOOT_PRINTK_DELAY is not set 1465# CONFIG_BOOT_PRINTK_DELAY is not set
1444# CONFIG_RCU_TORTURE_TEST is not set 1466# CONFIG_RCU_TORTURE_TEST is not set
1467# CONFIG_BACKTRACE_SELF_TEST is not set
1445# CONFIG_FAULT_INJECTION is not set 1468# CONFIG_FAULT_INJECTION is not set
1446# CONFIG_SAMPLES is not set 1469# CONFIG_SAMPLES is not set
1447# CONFIG_DEBUG_STACKOVERFLOW is not set 1470# CONFIG_DEBUG_STACKOVERFLOW is not set
@@ -1464,7 +1487,9 @@ CONFIG_IRQSTACKS=y
1464# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1487# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1465CONFIG_CRYPTO=y 1488CONFIG_CRYPTO=y
1466CONFIG_CRYPTO_ALGAPI=y 1489CONFIG_CRYPTO_ALGAPI=y
1490CONFIG_CRYPTO_AEAD=m
1467CONFIG_CRYPTO_BLKCIPHER=m 1491CONFIG_CRYPTO_BLKCIPHER=m
1492# CONFIG_CRYPTO_SEQIV is not set
1468CONFIG_CRYPTO_HASH=y 1493CONFIG_CRYPTO_HASH=y
1469CONFIG_CRYPTO_MANAGER=y 1494CONFIG_CRYPTO_MANAGER=y
1470CONFIG_CRYPTO_HMAC=y 1495CONFIG_CRYPTO_HMAC=y
@@ -1483,6 +1508,9 @@ CONFIG_CRYPTO_CBC=m
1483CONFIG_CRYPTO_PCBC=m 1508CONFIG_CRYPTO_PCBC=m
1484# CONFIG_CRYPTO_LRW is not set 1509# CONFIG_CRYPTO_LRW is not set
1485# CONFIG_CRYPTO_XTS is not set 1510# CONFIG_CRYPTO_XTS is not set
1511# CONFIG_CRYPTO_CTR is not set
1512# CONFIG_CRYPTO_GCM is not set
1513# CONFIG_CRYPTO_CCM is not set
1486# CONFIG_CRYPTO_CRYPTD is not set 1514# CONFIG_CRYPTO_CRYPTD is not set
1487CONFIG_CRYPTO_DES=m 1515CONFIG_CRYPTO_DES=m
1488# CONFIG_CRYPTO_FCRYPT is not set 1516# CONFIG_CRYPTO_FCRYPT is not set
@@ -1497,11 +1525,14 @@ CONFIG_CRYPTO_DES=m
1497# CONFIG_CRYPTO_KHAZAD is not set 1525# CONFIG_CRYPTO_KHAZAD is not set
1498# CONFIG_CRYPTO_ANUBIS is not set 1526# CONFIG_CRYPTO_ANUBIS is not set
1499# CONFIG_CRYPTO_SEED is not set 1527# CONFIG_CRYPTO_SEED is not set
1528# CONFIG_CRYPTO_SALSA20 is not set
1500CONFIG_CRYPTO_DEFLATE=m 1529CONFIG_CRYPTO_DEFLATE=m
1501# CONFIG_CRYPTO_MICHAEL_MIC is not set 1530# CONFIG_CRYPTO_MICHAEL_MIC is not set
1502# CONFIG_CRYPTO_CRC32C is not set 1531# CONFIG_CRYPTO_CRC32C is not set
1503# CONFIG_CRYPTO_CAMELLIA is not set 1532# CONFIG_CRYPTO_CAMELLIA is not set
1504# CONFIG_CRYPTO_TEST is not set 1533# CONFIG_CRYPTO_TEST is not set
1505# CONFIG_CRYPTO_AUTHENC is not set 1534CONFIG_CRYPTO_AUTHENC=m
1535# CONFIG_CRYPTO_LZO is not set
1506CONFIG_CRYPTO_HW=y 1536CONFIG_CRYPTO_HW=y
1537# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1507# CONFIG_PPC_CLOCK is not set 1538# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/configs/celleb_defconfig b/arch/powerpc/configs/celleb_defconfig
index 9ed2e098f96f..9ba3c6fc2fef 100644
--- a/arch/powerpc/configs/celleb_defconfig
+++ b/arch/powerpc/configs/celleb_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.24-rc4 3# Linux kernel version: 2.6.25-rc6
4# Thu Dec 6 16:48:07 2007 4# Thu Mar 20 10:32:45 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y
28CONFIG_GENERIC_TIME_VSYSCALL=y 28CONFIG_GENERIC_TIME_VSYSCALL=y
29CONFIG_GENERIC_CLOCKEVENTS=y 29CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_HAVE_SETUP_PER_CPU_AREA=y
31CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
32CONFIG_RWSEM_XCHGADD_ALGORITHM=y 33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
33CONFIG_ARCH_HAS_ILOG2_U32=y 34CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -69,16 +70,22 @@ CONFIG_SYSVIPC_SYSCTL=y
69# CONFIG_POSIX_MQUEUE is not set 70# CONFIG_POSIX_MQUEUE is not set
70# CONFIG_BSD_PROCESS_ACCT is not set 71# CONFIG_BSD_PROCESS_ACCT is not set
71# CONFIG_TASKSTATS is not set 72# CONFIG_TASKSTATS is not set
72# CONFIG_USER_NS is not set
73# CONFIG_PID_NS is not set
74# CONFIG_AUDIT is not set 73# CONFIG_AUDIT is not set
75CONFIG_IKCONFIG=y 74CONFIG_IKCONFIG=y
76CONFIG_IKCONFIG_PROC=y 75CONFIG_IKCONFIG_PROC=y
77CONFIG_LOG_BUF_SHIFT=15 76CONFIG_LOG_BUF_SHIFT=15
78# CONFIG_CGROUPS is not set 77# CONFIG_CGROUPS is not set
79# CONFIG_FAIR_GROUP_SCHED is not set 78# CONFIG_GROUP_SCHED is not set
79# CONFIG_USER_SCHED is not set
80# CONFIG_CGROUP_SCHED is not set
80CONFIG_SYSFS_DEPRECATED=y 81CONFIG_SYSFS_DEPRECATED=y
82CONFIG_SYSFS_DEPRECATED_V2=y
81# CONFIG_RELAY is not set 83# CONFIG_RELAY is not set
84CONFIG_NAMESPACES=y
85# CONFIG_UTS_NS is not set
86# CONFIG_IPC_NS is not set
87# CONFIG_USER_NS is not set
88# CONFIG_PID_NS is not set
82CONFIG_BLK_DEV_INITRD=y 89CONFIG_BLK_DEV_INITRD=y
83CONFIG_INITRAMFS_SOURCE="" 90CONFIG_INITRAMFS_SOURCE=""
84CONFIG_CC_OPTIMIZE_FOR_SIZE=y 91CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -92,11 +99,13 @@ CONFIG_HOTPLUG=y
92CONFIG_PRINTK=y 99CONFIG_PRINTK=y
93CONFIG_BUG=y 100CONFIG_BUG=y
94CONFIG_ELF_CORE=y 101CONFIG_ELF_CORE=y
102# CONFIG_COMPAT_BRK is not set
95CONFIG_BASE_FULL=y 103CONFIG_BASE_FULL=y
96CONFIG_FUTEX=y 104CONFIG_FUTEX=y
97CONFIG_ANON_INODES=y 105CONFIG_ANON_INODES=y
98CONFIG_EPOLL=y 106CONFIG_EPOLL=y
99CONFIG_SIGNALFD=y 107CONFIG_SIGNALFD=y
108CONFIG_TIMERFD=y
100CONFIG_EVENTFD=y 109CONFIG_EVENTFD=y
101CONFIG_SHMEM=y 110CONFIG_SHMEM=y
102CONFIG_VM_EVENT_COUNTERS=y 111CONFIG_VM_EVENT_COUNTERS=y
@@ -104,6 +113,14 @@ CONFIG_SLUB_DEBUG=y
104# CONFIG_SLAB is not set 113# CONFIG_SLAB is not set
105CONFIG_SLUB=y 114CONFIG_SLUB=y
106# CONFIG_SLOB is not set 115# CONFIG_SLOB is not set
116# CONFIG_PROFILING is not set
117# CONFIG_MARKERS is not set
118CONFIG_HAVE_OPROFILE=y
119# CONFIG_KPROBES is not set
120CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y
122CONFIG_PROC_PAGE_MONITOR=y
123CONFIG_SLABINFO=y
107CONFIG_RT_MUTEXES=y 124CONFIG_RT_MUTEXES=y
108# CONFIG_TINY_SHMEM is not set 125# CONFIG_TINY_SHMEM is not set
109CONFIG_BASE_SMALL=0 126CONFIG_BASE_SMALL=0
@@ -131,6 +148,7 @@ CONFIG_DEFAULT_AS=y
131# CONFIG_DEFAULT_CFQ is not set 148# CONFIG_DEFAULT_CFQ is not set
132# CONFIG_DEFAULT_NOOP is not set 149# CONFIG_DEFAULT_NOOP is not set
133CONFIG_DEFAULT_IOSCHED="anticipatory" 150CONFIG_DEFAULT_IOSCHED="anticipatory"
151CONFIG_CLASSIC_RCU=y
134 152
135# 153#
136# Platform support 154# Platform support
@@ -141,8 +159,8 @@ CONFIG_PPC_MULTIPLATFORM=y
141# CONFIG_PPC_86xx is not set 159# CONFIG_PPC_86xx is not set
142# CONFIG_PPC_PSERIES is not set 160# CONFIG_PPC_PSERIES is not set
143# CONFIG_PPC_ISERIES is not set 161# CONFIG_PPC_ISERIES is not set
144# CONFIG_PPC_MPC52xx is not set 162# CONFIG_PPC_MPC512x is not set
145# CONFIG_PPC_MPC5200 is not set 163# CONFIG_PPC_MPC5121 is not set
146# CONFIG_PPC_PMAC is not set 164# CONFIG_PPC_PMAC is not set
147# CONFIG_PPC_MAPLE is not set 165# CONFIG_PPC_MAPLE is not set
148# CONFIG_PPC_PASEMI is not set 166# CONFIG_PPC_PASEMI is not set
@@ -164,6 +182,7 @@ CONFIG_CBE_RAS=y
164CONFIG_PPC_NATIVE=y 182CONFIG_PPC_NATIVE=y
165CONFIG_UDBG_RTAS_CONSOLE=y 183CONFIG_UDBG_RTAS_CONSOLE=y
166CONFIG_PPC_UDBG_BEAT=y 184CONFIG_PPC_UDBG_BEAT=y
185# CONFIG_IPIC is not set
167CONFIG_MPIC=y 186CONFIG_MPIC=y
168# CONFIG_MPIC_WEIRD is not set 187# CONFIG_MPIC_WEIRD is not set
169# CONFIG_PPC_I8259 is not set 188# CONFIG_PPC_I8259 is not set
@@ -177,7 +196,6 @@ CONFIG_PPC_RTAS=y
177CONFIG_PPC_INDIRECT_IO=y 196CONFIG_PPC_INDIRECT_IO=y
178CONFIG_GENERIC_IOMAP=y 197CONFIG_GENERIC_IOMAP=y
179# CONFIG_CPU_FREQ is not set 198# CONFIG_CPU_FREQ is not set
180# CONFIG_CPM2 is not set
181# CONFIG_FSL_ULI1575 is not set 199# CONFIG_FSL_ULI1575 is not set
182 200
183# 201#
@@ -192,16 +210,20 @@ CONFIG_HZ_250=y
192# CONFIG_HZ_300 is not set 210# CONFIG_HZ_300 is not set
193# CONFIG_HZ_1000 is not set 211# CONFIG_HZ_1000 is not set
194CONFIG_HZ=250 212CONFIG_HZ=250
213# CONFIG_SCHED_HRTICK is not set
195CONFIG_PREEMPT_NONE=y 214CONFIG_PREEMPT_NONE=y
196# CONFIG_PREEMPT_VOLUNTARY is not set 215# CONFIG_PREEMPT_VOLUNTARY is not set
197# CONFIG_PREEMPT is not set 216# CONFIG_PREEMPT is not set
198CONFIG_PREEMPT_BKL=y
199CONFIG_BINFMT_ELF=y 217CONFIG_BINFMT_ELF=y
218CONFIG_COMPAT_BINFMT_ELF=y
200CONFIG_BINFMT_MISC=m 219CONFIG_BINFMT_MISC=m
201CONFIG_FORCE_MAX_ZONEORDER=13 220CONFIG_FORCE_MAX_ZONEORDER=13
202CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y 221CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
203# CONFIG_IOMMU_VMERGE is not set 222# CONFIG_IOMMU_VMERGE is not set
223CONFIG_IOMMU_HELPER=y
204CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 224CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
225CONFIG_ARCH_HAS_WALK_MEMORY=y
226CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
205CONFIG_KEXEC=y 227CONFIG_KEXEC=y
206# CONFIG_CRASH_DUMP is not set 228# CONFIG_CRASH_DUMP is not set
207# CONFIG_IRQ_ALL_CPUS is not set 229# CONFIG_IRQ_ALL_CPUS is not set
@@ -223,6 +245,7 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
223CONFIG_SPARSEMEM_VMEMMAP=y 245CONFIG_SPARSEMEM_VMEMMAP=y
224CONFIG_MEMORY_HOTPLUG=y 246CONFIG_MEMORY_HOTPLUG=y
225CONFIG_MEMORY_HOTPLUG_SPARSE=y 247CONFIG_MEMORY_HOTPLUG_SPARSE=y
248# CONFIG_MEMORY_HOTREMOVE is not set
226CONFIG_SPLIT_PTLOCK_CPUS=4 249CONFIG_SPLIT_PTLOCK_CPUS=4
227CONFIG_MIGRATION=y 250CONFIG_MIGRATION=y
228CONFIG_RESOURCES_64BIT=y 251CONFIG_RESOURCES_64BIT=y
@@ -237,7 +260,6 @@ CONFIG_PROC_DEVICETREE=y
237# CONFIG_CMDLINE_BOOL is not set 260# CONFIG_CMDLINE_BOOL is not set
238# CONFIG_PM is not set 261# CONFIG_PM is not set
239CONFIG_SECCOMP=y 262CONFIG_SECCOMP=y
240# CONFIG_WANT_DEVICE_TREE is not set
241CONFIG_ISA_DMA_API=y 263CONFIG_ISA_DMA_API=y
242 264
243# 265#
@@ -273,6 +295,7 @@ CONFIG_XFRM=y
273# CONFIG_XFRM_USER is not set 295# CONFIG_XFRM_USER is not set
274# CONFIG_XFRM_SUB_POLICY is not set 296# CONFIG_XFRM_SUB_POLICY is not set
275# CONFIG_XFRM_MIGRATE is not set 297# CONFIG_XFRM_MIGRATE is not set
298# CONFIG_XFRM_STATISTICS is not set
276# CONFIG_NET_KEY is not set 299# CONFIG_NET_KEY is not set
277CONFIG_INET=y 300CONFIG_INET=y
278CONFIG_IP_MULTICAST=y 301CONFIG_IP_MULTICAST=y
@@ -320,12 +343,13 @@ CONFIG_IPV6_TUNNEL=m
320# CONFIG_NETWORK_SECMARK is not set 343# CONFIG_NETWORK_SECMARK is not set
321CONFIG_NETFILTER=y 344CONFIG_NETFILTER=y
322# CONFIG_NETFILTER_DEBUG is not set 345# CONFIG_NETFILTER_DEBUG is not set
346CONFIG_NETFILTER_ADVANCED=y
323 347
324# 348#
325# Core Netfilter Configuration 349# Core Netfilter Configuration
326# 350#
327# CONFIG_NETFILTER_NETLINK is not set 351# CONFIG_NETFILTER_NETLINK_QUEUE is not set
328# CONFIG_NF_CONNTRACK_ENABLED is not set 352# CONFIG_NETFILTER_NETLINK_LOG is not set
329# CONFIG_NF_CONNTRACK is not set 353# CONFIG_NF_CONNTRACK is not set
330# CONFIG_NETFILTER_XTABLES is not set 354# CONFIG_NETFILTER_XTABLES is not set
331 355
@@ -337,7 +361,7 @@ CONFIG_IP_NF_QUEUE=m
337# CONFIG_IP_NF_ARPTABLES is not set 361# CONFIG_IP_NF_ARPTABLES is not set
338 362
339# 363#
340# IPv6: Netfilter Configuration (EXPERIMENTAL) 364# IPv6: Netfilter Configuration
341# 365#
342# CONFIG_IP6_NF_QUEUE is not set 366# CONFIG_IP6_NF_QUEUE is not set
343# CONFIG_IP6_NF_IPTABLES is not set 367# CONFIG_IP6_NF_IPTABLES is not set
@@ -362,6 +386,7 @@ CONFIG_IP_NF_QUEUE=m
362# 386#
363# CONFIG_NET_PKTGEN is not set 387# CONFIG_NET_PKTGEN is not set
364# CONFIG_HAMRADIO is not set 388# CONFIG_HAMRADIO is not set
389# CONFIG_CAN is not set
365# CONFIG_IRDA is not set 390# CONFIG_IRDA is not set
366# CONFIG_BT is not set 391# CONFIG_BT is not set
367# CONFIG_AF_RXRPC is not set 392# CONFIG_AF_RXRPC is not set
@@ -408,7 +433,7 @@ CONFIG_BLK_DEV_LOOP=y
408CONFIG_BLK_DEV_RAM=y 433CONFIG_BLK_DEV_RAM=y
409CONFIG_BLK_DEV_RAM_COUNT=16 434CONFIG_BLK_DEV_RAM_COUNT=16
410CONFIG_BLK_DEV_RAM_SIZE=131072 435CONFIG_BLK_DEV_RAM_SIZE=131072
411CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 436# CONFIG_BLK_DEV_XIP is not set
412# CONFIG_CDROM_PKTCDVD is not set 437# CONFIG_CDROM_PKTCDVD is not set
413# CONFIG_ATA_OVER_ETH is not set 438# CONFIG_ATA_OVER_ETH is not set
414CONFIG_MISC_DEVICES=y 439CONFIG_MISC_DEVICES=y
@@ -416,16 +441,19 @@ CONFIG_MISC_DEVICES=y
416# CONFIG_EEPROM_93CX6 is not set 441# CONFIG_EEPROM_93CX6 is not set
417# CONFIG_SGI_IOC4 is not set 442# CONFIG_SGI_IOC4 is not set
418# CONFIG_TIFM_CORE is not set 443# CONFIG_TIFM_CORE is not set
444# CONFIG_ENCLOSURE_SERVICES is not set
445CONFIG_HAVE_IDE=y
419CONFIG_IDE=y 446CONFIG_IDE=y
420CONFIG_BLK_DEV_IDE=y 447CONFIG_BLK_DEV_IDE=y
421 448
422# 449#
423# Please see Documentation/ide.txt for help/info on IDE drives 450# Please see Documentation/ide/ide.txt for help/info on IDE drives
424# 451#
425# CONFIG_BLK_DEV_IDE_SATA is not set 452# CONFIG_BLK_DEV_IDE_SATA is not set
426CONFIG_BLK_DEV_IDEDISK=y 453CONFIG_BLK_DEV_IDEDISK=y
427CONFIG_IDEDISK_MULTI_MODE=y 454CONFIG_IDEDISK_MULTI_MODE=y
428CONFIG_BLK_DEV_IDECD=m 455CONFIG_BLK_DEV_IDECD=m
456CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
429# CONFIG_BLK_DEV_IDETAPE is not set 457# CONFIG_BLK_DEV_IDETAPE is not set
430# CONFIG_BLK_DEV_IDEFLOPPY is not set 458# CONFIG_BLK_DEV_IDEFLOPPY is not set
431# CONFIG_BLK_DEV_IDESCSI is not set 459# CONFIG_BLK_DEV_IDESCSI is not set
@@ -437,12 +465,12 @@ CONFIG_IDE_PROC_FS=y
437# 465#
438CONFIG_IDE_GENERIC=y 466CONFIG_IDE_GENERIC=y
439# CONFIG_BLK_DEV_PLATFORM is not set 467# CONFIG_BLK_DEV_PLATFORM is not set
468CONFIG_BLK_DEV_IDEDMA_SFF=y
440 469
441# 470#
442# PCI IDE chipsets support 471# PCI IDE chipsets support
443# 472#
444CONFIG_BLK_DEV_IDEPCI=y 473CONFIG_BLK_DEV_IDEPCI=y
445CONFIG_IDEPCI_SHARE_IRQ=y
446CONFIG_IDEPCI_PCIBUS_ORDER=y 474CONFIG_IDEPCI_PCIBUS_ORDER=y
447# CONFIG_BLK_DEV_OFFBOARD is not set 475# CONFIG_BLK_DEV_OFFBOARD is not set
448CONFIG_BLK_DEV_GENERIC=y 476CONFIG_BLK_DEV_GENERIC=y
@@ -474,7 +502,6 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
474# CONFIG_BLK_DEV_VIA82CXXX is not set 502# CONFIG_BLK_DEV_VIA82CXXX is not set
475# CONFIG_BLK_DEV_TC86C001 is not set 503# CONFIG_BLK_DEV_TC86C001 is not set
476CONFIG_BLK_DEV_CELLEB=y 504CONFIG_BLK_DEV_CELLEB=y
477# CONFIG_IDE_ARM is not set
478CONFIG_BLK_DEV_IDEDMA=y 505CONFIG_BLK_DEV_IDEDMA=y
479CONFIG_IDE_ARCH_OBSOLETE_INIT=y 506CONFIG_IDE_ARCH_OBSOLETE_INIT=y
480# CONFIG_BLK_DEV_HD is not set 507# CONFIG_BLK_DEV_HD is not set
@@ -540,6 +567,7 @@ CONFIG_SCSI_LOWLEVEL=y
540# CONFIG_SCSI_IPS is not set 567# CONFIG_SCSI_IPS is not set
541# CONFIG_SCSI_INITIO is not set 568# CONFIG_SCSI_INITIO is not set
542# CONFIG_SCSI_INIA100 is not set 569# CONFIG_SCSI_INIA100 is not set
570# CONFIG_SCSI_MVSAS is not set
543# CONFIG_SCSI_STEX is not set 571# CONFIG_SCSI_STEX is not set
544# CONFIG_SCSI_SYM53C8XX_2 is not set 572# CONFIG_SCSI_SYM53C8XX_2 is not set
545# CONFIG_SCSI_QLOGIC_1280 is not set 573# CONFIG_SCSI_QLOGIC_1280 is not set
@@ -589,7 +617,6 @@ CONFIG_NETDEVICES=y
589# CONFIG_EQUALIZER is not set 617# CONFIG_EQUALIZER is not set
590# CONFIG_TUN is not set 618# CONFIG_TUN is not set
591# CONFIG_VETH is not set 619# CONFIG_VETH is not set
592# CONFIG_IP1000 is not set
593# CONFIG_ARCNET is not set 620# CONFIG_ARCNET is not set
594# CONFIG_PHYLIB is not set 621# CONFIG_PHYLIB is not set
595CONFIG_NET_ETHERNET=y 622CONFIG_NET_ETHERNET=y
@@ -612,6 +639,9 @@ CONFIG_NETDEV_1000=y
612# CONFIG_DL2K is not set 639# CONFIG_DL2K is not set
613# CONFIG_E1000 is not set 640# CONFIG_E1000 is not set
614# CONFIG_E1000E is not set 641# CONFIG_E1000E is not set
642# CONFIG_E1000E_ENABLED is not set
643# CONFIG_IP1000 is not set
644# CONFIG_IGB is not set
615# CONFIG_NS83820 is not set 645# CONFIG_NS83820 is not set
616# CONFIG_HAMACHI is not set 646# CONFIG_HAMACHI is not set
617# CONFIG_YELLOWFIN is not set 647# CONFIG_YELLOWFIN is not set
@@ -638,6 +668,7 @@ CONFIG_NETDEV_10000=y
638# CONFIG_PASEMI_MAC is not set 668# CONFIG_PASEMI_MAC is not set
639# CONFIG_MLX4_CORE is not set 669# CONFIG_MLX4_CORE is not set
640# CONFIG_TEHUTI is not set 670# CONFIG_TEHUTI is not set
671# CONFIG_BNX2X is not set
641# CONFIG_TR is not set 672# CONFIG_TR is not set
642 673
643# 674#
@@ -660,7 +691,6 @@ CONFIG_NETDEV_10000=y
660# CONFIG_PPP is not set 691# CONFIG_PPP is not set
661# CONFIG_SLIP is not set 692# CONFIG_SLIP is not set
662# CONFIG_NET_FC is not set 693# CONFIG_NET_FC is not set
663# CONFIG_SHAPER is not set
664# CONFIG_NETCONSOLE is not set 694# CONFIG_NETCONSOLE is not set
665# CONFIG_NETPOLL is not set 695# CONFIG_NETPOLL is not set
666# CONFIG_NET_POLL_CONTROLLER is not set 696# CONFIG_NET_POLL_CONTROLLER is not set
@@ -719,16 +749,17 @@ CONFIG_SERIAL_NONSTANDARD=y
719# CONFIG_DIGIEPCA is not set 749# CONFIG_DIGIEPCA is not set
720# CONFIG_MOXA_INTELLIO is not set 750# CONFIG_MOXA_INTELLIO is not set
721# CONFIG_MOXA_SMARTIO is not set 751# CONFIG_MOXA_SMARTIO is not set
722# CONFIG_MOXA_SMARTIO_NEW is not set
723# CONFIG_ISI is not set 752# CONFIG_ISI is not set
724# CONFIG_SYNCLINK is not set 753# CONFIG_SYNCLINK is not set
725# CONFIG_SYNCLINKMP is not set 754# CONFIG_SYNCLINKMP is not set
726# CONFIG_SYNCLINK_GT is not set 755# CONFIG_SYNCLINK_GT is not set
727# CONFIG_N_HDLC is not set 756# CONFIG_N_HDLC is not set
757# CONFIG_RISCOM8 is not set
728# CONFIG_SPECIALIX is not set 758# CONFIG_SPECIALIX is not set
729# CONFIG_SX is not set 759# CONFIG_SX is not set
730# CONFIG_RIO is not set 760# CONFIG_RIO is not set
731# CONFIG_STALDRV is not set 761# CONFIG_STALDRV is not set
762# CONFIG_NOZOMI is not set
732 763
733# 764#
734# Serial drivers 765# Serial drivers
@@ -802,13 +833,12 @@ CONFIG_I2C_ALGOBIT=y
802# 833#
803# Miscellaneous I2C Chip support 834# Miscellaneous I2C Chip support
804# 835#
805# CONFIG_SENSORS_DS1337 is not set
806# CONFIG_SENSORS_DS1374 is not set
807# CONFIG_DS1682 is not set 836# CONFIG_DS1682 is not set
808# CONFIG_SENSORS_EEPROM is not set 837# CONFIG_SENSORS_EEPROM is not set
809# CONFIG_SENSORS_PCF8574 is not set 838# CONFIG_SENSORS_PCF8574 is not set
810# CONFIG_SENSORS_PCA9539 is not set 839# CONFIG_PCF8575 is not set
811# CONFIG_SENSORS_PCF8591 is not set 840# CONFIG_SENSORS_PCF8591 is not set
841# CONFIG_TPS65010 is not set
812# CONFIG_SENSORS_MAX6875 is not set 842# CONFIG_SENSORS_MAX6875 is not set
813# CONFIG_SENSORS_TSL2550 is not set 843# CONFIG_SENSORS_TSL2550 is not set
814# CONFIG_I2C_DEBUG_CORE is not set 844# CONFIG_I2C_DEBUG_CORE is not set
@@ -824,6 +854,7 @@ CONFIG_I2C_ALGOBIT=y
824# CONFIG_W1 is not set 854# CONFIG_W1 is not set
825# CONFIG_POWER_SUPPLY is not set 855# CONFIG_POWER_SUPPLY is not set
826# CONFIG_HWMON is not set 856# CONFIG_HWMON is not set
857# CONFIG_THERMAL is not set
827CONFIG_WATCHDOG=y 858CONFIG_WATCHDOG=y
828# CONFIG_WATCHDOG_NOWAYOUT is not set 859# CONFIG_WATCHDOG_NOWAYOUT is not set
829 860
@@ -905,6 +936,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y
905CONFIG_USB_ARCH_HAS_EHCI=y 936CONFIG_USB_ARCH_HAS_EHCI=y
906CONFIG_USB=y 937CONFIG_USB=y
907# CONFIG_USB_DEBUG is not set 938# CONFIG_USB_DEBUG is not set
939# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
908 940
909# 941#
910# Miscellaneous USB options 942# Miscellaneous USB options
@@ -918,10 +950,10 @@ CONFIG_USB_DEVICEFS=y
918# USB Host Controller Drivers 950# USB Host Controller Drivers
919# 951#
920CONFIG_USB_EHCI_HCD=m 952CONFIG_USB_EHCI_HCD=m
921# CONFIG_USB_EHCI_SPLIT_ISO is not set
922# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 953# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
923# CONFIG_USB_EHCI_TT_NEWSCHED is not set 954# CONFIG_USB_EHCI_TT_NEWSCHED is not set
924CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y 955CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
956# CONFIG_USB_EHCI_HCD_PPC_OF is not set
925# CONFIG_USB_ISP116X_HCD is not set 957# CONFIG_USB_ISP116X_HCD is not set
926CONFIG_USB_OHCI_HCD=m 958CONFIG_USB_OHCI_HCD=m
927# CONFIG_USB_OHCI_HCD_PPC_OF is not set 959# CONFIG_USB_OHCI_HCD_PPC_OF is not set
@@ -969,10 +1001,6 @@ CONFIG_USB_MON=y
969# 1001#
970# USB port drivers 1002# USB port drivers
971# 1003#
972
973#
974# USB Serial Converter support
975#
976# CONFIG_USB_SERIAL is not set 1004# CONFIG_USB_SERIAL is not set
977 1005
978# 1006#
@@ -998,20 +1026,14 @@ CONFIG_USB_MON=y
998# CONFIG_USB_TRANCEVIBRATOR is not set 1026# CONFIG_USB_TRANCEVIBRATOR is not set
999# CONFIG_USB_IOWARRIOR is not set 1027# CONFIG_USB_IOWARRIOR is not set
1000# CONFIG_USB_TEST is not set 1028# CONFIG_USB_TEST is not set
1001
1002#
1003# USB DSL modem support
1004#
1005
1006#
1007# USB Gadget Support
1008#
1009# CONFIG_USB_GADGET is not set 1029# CONFIG_USB_GADGET is not set
1010# CONFIG_MMC is not set 1030# CONFIG_MMC is not set
1031# CONFIG_MEMSTICK is not set
1011# CONFIG_NEW_LEDS is not set 1032# CONFIG_NEW_LEDS is not set
1012# CONFIG_INFINIBAND is not set 1033# CONFIG_INFINIBAND is not set
1013# CONFIG_EDAC is not set 1034# CONFIG_EDAC is not set
1014# CONFIG_RTC_CLASS is not set 1035# CONFIG_RTC_CLASS is not set
1036# CONFIG_DMADEVICES is not set
1015 1037
1016# 1038#
1017# Userspace I/O 1039# Userspace I/O
@@ -1041,12 +1063,10 @@ CONFIG_FS_POSIX_ACL=y
1041# CONFIG_XFS_FS is not set 1063# CONFIG_XFS_FS is not set
1042# CONFIG_GFS2_FS is not set 1064# CONFIG_GFS2_FS is not set
1043# CONFIG_OCFS2_FS is not set 1065# CONFIG_OCFS2_FS is not set
1044# CONFIG_MINIX_FS is not set 1066CONFIG_DNOTIFY=y
1045# CONFIG_ROMFS_FS is not set
1046CONFIG_INOTIFY=y 1067CONFIG_INOTIFY=y
1047CONFIG_INOTIFY_USER=y 1068CONFIG_INOTIFY_USER=y
1048# CONFIG_QUOTA is not set 1069# CONFIG_QUOTA is not set
1049CONFIG_DNOTIFY=y
1050# CONFIG_AUTOFS_FS is not set 1070# CONFIG_AUTOFS_FS is not set
1051# CONFIG_AUTOFS4_FS is not set 1071# CONFIG_AUTOFS4_FS is not set
1052# CONFIG_FUSE_FS is not set 1072# CONFIG_FUSE_FS is not set
@@ -1095,8 +1115,10 @@ CONFIG_HUGETLB_PAGE=y
1095# CONFIG_EFS_FS is not set 1115# CONFIG_EFS_FS is not set
1096# CONFIG_CRAMFS is not set 1116# CONFIG_CRAMFS is not set
1097# CONFIG_VXFS_FS is not set 1117# CONFIG_VXFS_FS is not set
1118# CONFIG_MINIX_FS is not set
1098# CONFIG_HPFS_FS is not set 1119# CONFIG_HPFS_FS is not set
1099# CONFIG_QNX4FS_FS is not set 1120# CONFIG_QNX4FS_FS is not set
1121# CONFIG_ROMFS_FS is not set
1100# CONFIG_SYSV_FS is not set 1122# CONFIG_SYSV_FS is not set
1101# CONFIG_UFS_FS is not set 1123# CONFIG_UFS_FS is not set
1102CONFIG_NETWORK_FILESYSTEMS=y 1124CONFIG_NETWORK_FILESYSTEMS=y
@@ -1188,7 +1210,6 @@ CONFIG_NLS_ISO8859_15=m
1188# CONFIG_NLS_KOI8_U is not set 1210# CONFIG_NLS_KOI8_U is not set
1189# CONFIG_NLS_UTF8 is not set 1211# CONFIG_NLS_UTF8 is not set
1190# CONFIG_DLM is not set 1212# CONFIG_DLM is not set
1191# CONFIG_UCC_SLOW is not set
1192 1213
1193# 1214#
1194# Library routines 1215# Library routines
@@ -1206,10 +1227,6 @@ CONFIG_PLIST=y
1206CONFIG_HAS_IOMEM=y 1227CONFIG_HAS_IOMEM=y
1207CONFIG_HAS_IOPORT=y 1228CONFIG_HAS_IOPORT=y
1208CONFIG_HAS_DMA=y 1229CONFIG_HAS_DMA=y
1209CONFIG_INSTRUMENTATION=y
1210# CONFIG_PROFILING is not set
1211# CONFIG_KPROBES is not set
1212# CONFIG_MARKERS is not set
1213 1230
1214# 1231#
1215# Kernel hacking 1232# Kernel hacking
@@ -1228,6 +1245,7 @@ CONFIG_SCHED_DEBUG=y
1228# CONFIG_SCHEDSTATS is not set 1245# CONFIG_SCHEDSTATS is not set
1229# CONFIG_TIMER_STATS is not set 1246# CONFIG_TIMER_STATS is not set
1230# CONFIG_SLUB_DEBUG_ON is not set 1247# CONFIG_SLUB_DEBUG_ON is not set
1248# CONFIG_SLUB_STATS is not set
1231# CONFIG_DEBUG_RT_MUTEXES is not set 1249# CONFIG_DEBUG_RT_MUTEXES is not set
1232# CONFIG_RT_MUTEX_TESTER is not set 1250# CONFIG_RT_MUTEX_TESTER is not set
1233# CONFIG_DEBUG_SPINLOCK is not set 1251# CONFIG_DEBUG_SPINLOCK is not set
@@ -1240,9 +1258,9 @@ CONFIG_DEBUG_BUGVERBOSE=y
1240# CONFIG_DEBUG_VM is not set 1258# CONFIG_DEBUG_VM is not set
1241# CONFIG_DEBUG_LIST is not set 1259# CONFIG_DEBUG_LIST is not set
1242# CONFIG_DEBUG_SG is not set 1260# CONFIG_DEBUG_SG is not set
1243# CONFIG_FORCED_INLINING is not set
1244# CONFIG_BOOT_PRINTK_DELAY is not set 1261# CONFIG_BOOT_PRINTK_DELAY is not set
1245# CONFIG_RCU_TORTURE_TEST is not set 1262# CONFIG_RCU_TORTURE_TEST is not set
1263# CONFIG_BACKTRACE_SELF_TEST is not set
1246# CONFIG_FAULT_INJECTION is not set 1264# CONFIG_FAULT_INJECTION is not set
1247# CONFIG_SAMPLES is not set 1265# CONFIG_SAMPLES is not set
1248# CONFIG_DEBUG_STACKOVERFLOW is not set 1266# CONFIG_DEBUG_STACKOVERFLOW is not set
@@ -1265,7 +1283,9 @@ CONFIG_IRQSTACKS=y
1265# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1283# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1266CONFIG_CRYPTO=y 1284CONFIG_CRYPTO=y
1267CONFIG_CRYPTO_ALGAPI=y 1285CONFIG_CRYPTO_ALGAPI=y
1286CONFIG_CRYPTO_AEAD=m
1268CONFIG_CRYPTO_BLKCIPHER=m 1287CONFIG_CRYPTO_BLKCIPHER=m
1288# CONFIG_CRYPTO_SEQIV is not set
1269CONFIG_CRYPTO_HASH=y 1289CONFIG_CRYPTO_HASH=y
1270CONFIG_CRYPTO_MANAGER=y 1290CONFIG_CRYPTO_MANAGER=y
1271CONFIG_CRYPTO_HMAC=y 1291CONFIG_CRYPTO_HMAC=y
@@ -1284,6 +1304,9 @@ CONFIG_CRYPTO_CBC=m
1284CONFIG_CRYPTO_PCBC=m 1304CONFIG_CRYPTO_PCBC=m
1285# CONFIG_CRYPTO_LRW is not set 1305# CONFIG_CRYPTO_LRW is not set
1286# CONFIG_CRYPTO_XTS is not set 1306# CONFIG_CRYPTO_XTS is not set
1307# CONFIG_CRYPTO_CTR is not set
1308# CONFIG_CRYPTO_GCM is not set
1309# CONFIG_CRYPTO_CCM is not set
1287# CONFIG_CRYPTO_CRYPTD is not set 1310# CONFIG_CRYPTO_CRYPTD is not set
1288CONFIG_CRYPTO_DES=m 1311CONFIG_CRYPTO_DES=m
1289# CONFIG_CRYPTO_FCRYPT is not set 1312# CONFIG_CRYPTO_FCRYPT is not set
@@ -1299,11 +1322,13 @@ CONFIG_CRYPTO_ARC4=m
1299CONFIG_CRYPTO_KHAZAD=m 1322CONFIG_CRYPTO_KHAZAD=m
1300CONFIG_CRYPTO_ANUBIS=m 1323CONFIG_CRYPTO_ANUBIS=m
1301# CONFIG_CRYPTO_SEED is not set 1324# CONFIG_CRYPTO_SEED is not set
1325# CONFIG_CRYPTO_SALSA20 is not set
1302CONFIG_CRYPTO_DEFLATE=m 1326CONFIG_CRYPTO_DEFLATE=m
1303CONFIG_CRYPTO_MICHAEL_MIC=m 1327CONFIG_CRYPTO_MICHAEL_MIC=m
1304CONFIG_CRYPTO_CRC32C=m 1328CONFIG_CRYPTO_CRC32C=m
1305# CONFIG_CRYPTO_CAMELLIA is not set 1329# CONFIG_CRYPTO_CAMELLIA is not set
1306CONFIG_CRYPTO_TEST=m 1330CONFIG_CRYPTO_TEST=m
1307# CONFIG_CRYPTO_AUTHENC is not set 1331CONFIG_CRYPTO_AUTHENC=m
1332# CONFIG_CRYPTO_LZO is not set
1308# CONFIG_CRYPTO_HW is not set 1333# CONFIG_CRYPTO_HW is not set
1309# CONFIG_PPC_CLOCK is not set 1334# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/configs/chrp32_defconfig b/arch/powerpc/configs/chrp32_defconfig
index 5989b5d2277e..38b85b211c38 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.24-rc4 3# Linux kernel version: 2.6.25-rc6
4# Thu Dec 6 16:48:09 2007 4# Thu Mar 20 10:33:36 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -30,6 +30,7 @@ CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y 30CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y 31CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 35CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 36CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -67,16 +68,22 @@ CONFIG_SYSVIPC_SYSCTL=y
67CONFIG_POSIX_MQUEUE=y 68CONFIG_POSIX_MQUEUE=y
68# CONFIG_BSD_PROCESS_ACCT is not set 69# CONFIG_BSD_PROCESS_ACCT is not set
69# CONFIG_TASKSTATS is not set 70# CONFIG_TASKSTATS is not set
70# CONFIG_USER_NS is not set
71# CONFIG_PID_NS is not set
72# CONFIG_AUDIT is not set 71# CONFIG_AUDIT is not set
73CONFIG_IKCONFIG=y 72CONFIG_IKCONFIG=y
74CONFIG_IKCONFIG_PROC=y 73CONFIG_IKCONFIG_PROC=y
75CONFIG_LOG_BUF_SHIFT=15 74CONFIG_LOG_BUF_SHIFT=15
76# CONFIG_CGROUPS is not set 75# CONFIG_CGROUPS is not set
77# CONFIG_FAIR_GROUP_SCHED is not set 76# CONFIG_GROUP_SCHED is not set
77# CONFIG_USER_SCHED is not set
78# CONFIG_CGROUP_SCHED is not set
78CONFIG_SYSFS_DEPRECATED=y 79CONFIG_SYSFS_DEPRECATED=y
80CONFIG_SYSFS_DEPRECATED_V2=y
79# CONFIG_RELAY is not set 81# CONFIG_RELAY is not set
82CONFIG_NAMESPACES=y
83# CONFIG_UTS_NS is not set
84# CONFIG_IPC_NS is not set
85# CONFIG_USER_NS is not set
86# CONFIG_PID_NS is not set
80CONFIG_BLK_DEV_INITRD=y 87CONFIG_BLK_DEV_INITRD=y
81CONFIG_INITRAMFS_SOURCE="" 88CONFIG_INITRAMFS_SOURCE=""
82# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 89# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -90,11 +97,13 @@ CONFIG_HOTPLUG=y
90CONFIG_PRINTK=y 97CONFIG_PRINTK=y
91CONFIG_BUG=y 98CONFIG_BUG=y
92CONFIG_ELF_CORE=y 99CONFIG_ELF_CORE=y
100# CONFIG_COMPAT_BRK is not set
93CONFIG_BASE_FULL=y 101CONFIG_BASE_FULL=y
94CONFIG_FUTEX=y 102CONFIG_FUTEX=y
95CONFIG_ANON_INODES=y 103CONFIG_ANON_INODES=y
96CONFIG_EPOLL=y 104CONFIG_EPOLL=y
97CONFIG_SIGNALFD=y 105CONFIG_SIGNALFD=y
106CONFIG_TIMERFD=y
98CONFIG_EVENTFD=y 107CONFIG_EVENTFD=y
99CONFIG_SHMEM=y 108CONFIG_SHMEM=y
100CONFIG_VM_EVENT_COUNTERS=y 109CONFIG_VM_EVENT_COUNTERS=y
@@ -102,6 +111,14 @@ CONFIG_SLUB_DEBUG=y
102# CONFIG_SLAB is not set 111# CONFIG_SLAB is not set
103CONFIG_SLUB=y 112CONFIG_SLUB=y
104# CONFIG_SLOB is not set 113# CONFIG_SLOB is not set
114# CONFIG_PROFILING is not set
115# CONFIG_MARKERS is not set
116CONFIG_HAVE_OPROFILE=y
117# CONFIG_KPROBES is not set
118CONFIG_HAVE_KPROBES=y
119CONFIG_HAVE_KRETPROBES=y
120CONFIG_PROC_PAGE_MONITOR=y
121CONFIG_SLABINFO=y
105CONFIG_RT_MUTEXES=y 122CONFIG_RT_MUTEXES=y
106# CONFIG_TINY_SHMEM is not set 123# CONFIG_TINY_SHMEM is not set
107CONFIG_BASE_SMALL=0 124CONFIG_BASE_SMALL=0
@@ -130,6 +147,7 @@ CONFIG_DEFAULT_AS=y
130# CONFIG_DEFAULT_CFQ is not set 147# CONFIG_DEFAULT_CFQ is not set
131# CONFIG_DEFAULT_NOOP is not set 148# CONFIG_DEFAULT_NOOP is not set
132CONFIG_DEFAULT_IOSCHED="anticipatory" 149CONFIG_DEFAULT_IOSCHED="anticipatory"
150CONFIG_CLASSIC_RCU=y
133 151
134# 152#
135# Platform support 153# Platform support
@@ -140,16 +158,17 @@ CONFIG_PPC_MULTIPLATFORM=y
140# CONFIG_PPC_86xx is not set 158# CONFIG_PPC_86xx is not set
141CONFIG_CLASSIC32=y 159CONFIG_CLASSIC32=y
142CONFIG_PPC_CHRP=y 160CONFIG_PPC_CHRP=y
161# CONFIG_PPC_MPC512x is not set
162# CONFIG_PPC_MPC5121 is not set
163# CONFIG_MPC5121_ADS is not set
143# CONFIG_PPC_MPC52xx is not set 164# CONFIG_PPC_MPC52xx is not set
144# CONFIG_PPC_MPC5200 is not set
145# CONFIG_PPC_EFIKA is not set
146# CONFIG_PPC_LITE5200 is not set
147# CONFIG_PPC_PMAC is not set 165# CONFIG_PPC_PMAC is not set
148# CONFIG_PPC_CELL is not set 166# CONFIG_PPC_CELL is not set
149# CONFIG_PPC_CELL_NATIVE is not set 167# CONFIG_PPC_CELL_NATIVE is not set
150# CONFIG_PQ2ADS is not set 168# CONFIG_PQ2ADS is not set
151CONFIG_PPC_NATIVE=y 169CONFIG_PPC_NATIVE=y
152# CONFIG_UDBG_RTAS_CONSOLE is not set 170# CONFIG_UDBG_RTAS_CONSOLE is not set
171# CONFIG_IPIC is not set
153CONFIG_MPIC=y 172CONFIG_MPIC=y
154# CONFIG_MPIC_WEIRD is not set 173# CONFIG_MPIC_WEIRD is not set
155CONFIG_PPC_I8259=y 174CONFIG_PPC_I8259=y
@@ -163,7 +182,6 @@ CONFIG_PPC_MPC106=y
163# CONFIG_GENERIC_IOMAP is not set 182# CONFIG_GENERIC_IOMAP is not set
164# CONFIG_CPU_FREQ is not set 183# CONFIG_CPU_FREQ is not set
165# CONFIG_TAU is not set 184# CONFIG_TAU is not set
166# CONFIG_CPM2 is not set
167# CONFIG_FSL_ULI1575 is not set 185# CONFIG_FSL_ULI1575 is not set
168 186
169# 187#
@@ -179,13 +197,16 @@ CONFIG_HZ_250=y
179# CONFIG_HZ_300 is not set 197# CONFIG_HZ_300 is not set
180# CONFIG_HZ_1000 is not set 198# CONFIG_HZ_1000 is not set
181CONFIG_HZ=250 199CONFIG_HZ=250
200# CONFIG_SCHED_HRTICK is not set
182CONFIG_PREEMPT_NONE=y 201CONFIG_PREEMPT_NONE=y
183# CONFIG_PREEMPT_VOLUNTARY is not set 202# CONFIG_PREEMPT_VOLUNTARY is not set
184# CONFIG_PREEMPT is not set 203# CONFIG_PREEMPT is not set
185CONFIG_PREEMPT_BKL=y
186CONFIG_BINFMT_ELF=y 204CONFIG_BINFMT_ELF=y
187CONFIG_BINFMT_MISC=y 205CONFIG_BINFMT_MISC=y
206# CONFIG_IOMMU_HELPER is not set
188CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 207CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
208CONFIG_ARCH_HAS_WALK_MEMORY=y
209CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
189# CONFIG_KEXEC is not set 210# CONFIG_KEXEC is not set
190CONFIG_IRQ_ALL_CPUS=y 211CONFIG_IRQ_ALL_CPUS=y
191CONFIG_ARCH_FLATMEM_ENABLE=y 212CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -207,7 +228,6 @@ CONFIG_PROC_DEVICETREE=y
207# CONFIG_CMDLINE_BOOL is not set 228# CONFIG_CMDLINE_BOOL is not set
208# CONFIG_PM is not set 229# CONFIG_PM is not set
209CONFIG_SECCOMP=y 230CONFIG_SECCOMP=y
210# CONFIG_WANT_DEVICE_TREE is not set
211CONFIG_ISA_DMA_API=y 231CONFIG_ISA_DMA_API=y
212 232
213# 233#
@@ -286,74 +306,32 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
286# CONFIG_NETWORK_SECMARK is not set 306# CONFIG_NETWORK_SECMARK is not set
287CONFIG_NETFILTER=y 307CONFIG_NETFILTER=y
288# CONFIG_NETFILTER_DEBUG is not set 308# CONFIG_NETFILTER_DEBUG is not set
309# CONFIG_NETFILTER_ADVANCED is not set
289 310
290# 311#
291# Core Netfilter Configuration 312# Core Netfilter Configuration
292# 313#
293# CONFIG_NETFILTER_NETLINK is not set 314CONFIG_NETFILTER_NETLINK=m
294CONFIG_NF_CONNTRACK_ENABLED=m 315CONFIG_NETFILTER_NETLINK_LOG=m
295CONFIG_NF_CONNTRACK=m 316CONFIG_NF_CONNTRACK=m
296# CONFIG_NF_CT_ACCT is not set
297# CONFIG_NF_CONNTRACK_MARK is not set
298# CONFIG_NF_CONNTRACK_EVENTS is not set
299# CONFIG_NF_CT_PROTO_SCTP is not set
300# CONFIG_NF_CT_PROTO_UDPLITE is not set
301# CONFIG_NF_CONNTRACK_AMANDA is not set
302CONFIG_NF_CONNTRACK_FTP=m 317CONFIG_NF_CONNTRACK_FTP=m
303# CONFIG_NF_CONNTRACK_H323 is not set
304CONFIG_NF_CONNTRACK_IRC=m 318CONFIG_NF_CONNTRACK_IRC=m
305# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
306# CONFIG_NF_CONNTRACK_PPTP is not set
307# CONFIG_NF_CONNTRACK_SANE is not set
308CONFIG_NF_CONNTRACK_SIP=m 319CONFIG_NF_CONNTRACK_SIP=m
309CONFIG_NF_CONNTRACK_TFTP=m 320CONFIG_NF_CT_NETLINK=m
310CONFIG_NETFILTER_XTABLES=m 321CONFIG_NETFILTER_XTABLES=m
311# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
312# CONFIG_NETFILTER_XT_TARGET_MARK is not set 322# CONFIG_NETFILTER_XT_TARGET_MARK is not set
313# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
314# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set 323# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
315# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set 324# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
316# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
317# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
318# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
319# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
320# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set 325# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
321# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
322# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
323# CONFIG_NETFILTER_XT_MATCH_ESP is not set
324# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
325# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
326# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
327# CONFIG_NETFILTER_XT_MATCH_MAC is not set
328# CONFIG_NETFILTER_XT_MATCH_MARK is not set 326# CONFIG_NETFILTER_XT_MATCH_MARK is not set
329# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
330# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
331# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
332# CONFIG_NETFILTER_XT_MATCH_REALM is not set
333# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
334# CONFIG_NETFILTER_XT_MATCH_STATE is not set 327# CONFIG_NETFILTER_XT_MATCH_STATE is not set
335# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
336# CONFIG_NETFILTER_XT_MATCH_STRING is not set
337# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
338# CONFIG_NETFILTER_XT_MATCH_TIME is not set
339# CONFIG_NETFILTER_XT_MATCH_U32 is not set
340# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
341 328
342# 329#
343# IP: Netfilter Configuration 330# IP: Netfilter Configuration
344# 331#
345CONFIG_NF_CONNTRACK_IPV4=m 332CONFIG_NF_CONNTRACK_IPV4=m
346CONFIG_NF_CONNTRACK_PROC_COMPAT=y 333CONFIG_NF_CONNTRACK_PROC_COMPAT=y
347# CONFIG_IP_NF_QUEUE is not set
348CONFIG_IP_NF_IPTABLES=m 334CONFIG_IP_NF_IPTABLES=m
349# CONFIG_IP_NF_MATCH_IPRANGE is not set
350# CONFIG_IP_NF_MATCH_TOS is not set
351# CONFIG_IP_NF_MATCH_RECENT is not set
352# CONFIG_IP_NF_MATCH_ECN is not set
353# CONFIG_IP_NF_MATCH_AH is not set
354# CONFIG_IP_NF_MATCH_TTL is not set
355# CONFIG_IP_NF_MATCH_OWNER is not set
356# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
357CONFIG_IP_NF_FILTER=m 335CONFIG_IP_NF_FILTER=m
358CONFIG_IP_NF_TARGET_REJECT=m 336CONFIG_IP_NF_TARGET_REJECT=m
359CONFIG_IP_NF_TARGET_LOG=m 337CONFIG_IP_NF_TARGET_LOG=m
@@ -361,20 +339,14 @@ CONFIG_IP_NF_TARGET_LOG=m
361CONFIG_NF_NAT=m 339CONFIG_NF_NAT=m
362CONFIG_NF_NAT_NEEDED=y 340CONFIG_NF_NAT_NEEDED=y
363CONFIG_IP_NF_TARGET_MASQUERADE=m 341CONFIG_IP_NF_TARGET_MASQUERADE=m
364CONFIG_IP_NF_TARGET_REDIRECT=m
365# CONFIG_IP_NF_TARGET_NETMAP is not set
366# CONFIG_IP_NF_TARGET_SAME is not set
367# CONFIG_NF_NAT_SNMP_BASIC is not set
368CONFIG_NF_NAT_FTP=m 342CONFIG_NF_NAT_FTP=m
369CONFIG_NF_NAT_IRC=m 343CONFIG_NF_NAT_IRC=m
370CONFIG_NF_NAT_TFTP=m 344# CONFIG_NF_NAT_TFTP is not set
371# CONFIG_NF_NAT_AMANDA is not set 345# CONFIG_NF_NAT_AMANDA is not set
372# CONFIG_NF_NAT_PPTP is not set 346# CONFIG_NF_NAT_PPTP is not set
373# CONFIG_NF_NAT_H323 is not set 347# CONFIG_NF_NAT_H323 is not set
374CONFIG_NF_NAT_SIP=m 348CONFIG_NF_NAT_SIP=m
375# CONFIG_IP_NF_MANGLE is not set 349# CONFIG_IP_NF_MANGLE is not set
376# CONFIG_IP_NF_RAW is not set
377# CONFIG_IP_NF_ARPTABLES is not set
378# CONFIG_IP_DCCP is not set 350# CONFIG_IP_DCCP is not set
379# CONFIG_IP_SCTP is not set 351# CONFIG_IP_SCTP is not set
380# CONFIG_TIPC is not set 352# CONFIG_TIPC is not set
@@ -396,6 +368,7 @@ CONFIG_NF_NAT_SIP=m
396# 368#
397# CONFIG_NET_PKTGEN is not set 369# CONFIG_NET_PKTGEN is not set
398# CONFIG_HAMRADIO is not set 370# CONFIG_HAMRADIO is not set
371# CONFIG_CAN is not set
399# CONFIG_IRDA is not set 372# CONFIG_IRDA is not set
400# CONFIG_BT is not set 373# CONFIG_BT is not set
401# CONFIG_AF_RXRPC is not set 374# CONFIG_AF_RXRPC is not set
@@ -445,7 +418,7 @@ CONFIG_BLK_DEV_LOOP=y
445CONFIG_BLK_DEV_RAM=y 418CONFIG_BLK_DEV_RAM=y
446CONFIG_BLK_DEV_RAM_COUNT=16 419CONFIG_BLK_DEV_RAM_COUNT=16
447CONFIG_BLK_DEV_RAM_SIZE=4096 420CONFIG_BLK_DEV_RAM_SIZE=4096
448CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 421# CONFIG_BLK_DEV_XIP is not set
449# CONFIG_CDROM_PKTCDVD is not set 422# CONFIG_CDROM_PKTCDVD is not set
450# CONFIG_ATA_OVER_ETH is not set 423# CONFIG_ATA_OVER_ETH is not set
451CONFIG_MISC_DEVICES=y 424CONFIG_MISC_DEVICES=y
@@ -453,16 +426,19 @@ CONFIG_MISC_DEVICES=y
453# CONFIG_EEPROM_93CX6 is not set 426# CONFIG_EEPROM_93CX6 is not set
454# CONFIG_SGI_IOC4 is not set 427# CONFIG_SGI_IOC4 is not set
455# CONFIG_TIFM_CORE is not set 428# CONFIG_TIFM_CORE is not set
429# CONFIG_ENCLOSURE_SERVICES is not set
430CONFIG_HAVE_IDE=y
456CONFIG_IDE=y 431CONFIG_IDE=y
457CONFIG_BLK_DEV_IDE=y 432CONFIG_BLK_DEV_IDE=y
458 433
459# 434#
460# Please see Documentation/ide.txt for help/info on IDE drives 435# Please see Documentation/ide/ide.txt for help/info on IDE drives
461# 436#
462# CONFIG_BLK_DEV_IDE_SATA is not set 437# CONFIG_BLK_DEV_IDE_SATA is not set
463CONFIG_BLK_DEV_IDEDISK=y 438CONFIG_BLK_DEV_IDEDISK=y
464CONFIG_IDEDISK_MULTI_MODE=y 439CONFIG_IDEDISK_MULTI_MODE=y
465CONFIG_BLK_DEV_IDECD=y 440CONFIG_BLK_DEV_IDECD=y
441CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
466# CONFIG_BLK_DEV_IDETAPE is not set 442# CONFIG_BLK_DEV_IDETAPE is not set
467# CONFIG_BLK_DEV_IDEFLOPPY is not set 443# CONFIG_BLK_DEV_IDEFLOPPY is not set
468# CONFIG_BLK_DEV_IDESCSI is not set 444# CONFIG_BLK_DEV_IDESCSI is not set
@@ -474,12 +450,12 @@ CONFIG_IDE_PROC_FS=y
474# 450#
475CONFIG_IDE_GENERIC=y 451CONFIG_IDE_GENERIC=y
476# CONFIG_BLK_DEV_PLATFORM is not set 452# CONFIG_BLK_DEV_PLATFORM is not set
453CONFIG_BLK_DEV_IDEDMA_SFF=y
477 454
478# 455#
479# PCI IDE chipsets support 456# PCI IDE chipsets support
480# 457#
481CONFIG_BLK_DEV_IDEPCI=y 458CONFIG_BLK_DEV_IDEPCI=y
482CONFIG_IDEPCI_SHARE_IRQ=y
483CONFIG_IDEPCI_PCIBUS_ORDER=y 459CONFIG_IDEPCI_PCIBUS_ORDER=y
484# CONFIG_BLK_DEV_OFFBOARD is not set 460# CONFIG_BLK_DEV_OFFBOARD is not set
485CONFIG_BLK_DEV_GENERIC=y 461CONFIG_BLK_DEV_GENERIC=y
@@ -510,7 +486,6 @@ CONFIG_BLK_DEV_SL82C105=y
510# CONFIG_BLK_DEV_TRM290 is not set 486# CONFIG_BLK_DEV_TRM290 is not set
511CONFIG_BLK_DEV_VIA82CXXX=y 487CONFIG_BLK_DEV_VIA82CXXX=y
512# CONFIG_BLK_DEV_TC86C001 is not set 488# CONFIG_BLK_DEV_TC86C001 is not set
513# CONFIG_IDE_ARM is not set
514 489
515# 490#
516# Other IDE chipsets support 491# Other IDE chipsets support
@@ -599,6 +574,7 @@ CONFIG_SCSI_LOWLEVEL=y
599# CONFIG_SCSI_IPS is not set 574# CONFIG_SCSI_IPS is not set
600# CONFIG_SCSI_INITIO is not set 575# CONFIG_SCSI_INITIO is not set
601# CONFIG_SCSI_INIA100 is not set 576# CONFIG_SCSI_INIA100 is not set
577# CONFIG_SCSI_MVSAS is not set
602# CONFIG_SCSI_NCR53C406A is not set 578# CONFIG_SCSI_NCR53C406A is not set
603# CONFIG_SCSI_STEX is not set 579# CONFIG_SCSI_STEX is not set
604CONFIG_SCSI_SYM53C8XX_2=y 580CONFIG_SCSI_SYM53C8XX_2=y
@@ -607,7 +583,6 @@ CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
607CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 583CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
608CONFIG_SCSI_SYM53C8XX_MMIO=y 584CONFIG_SCSI_SYM53C8XX_MMIO=y
609# CONFIG_SCSI_PAS16 is not set 585# CONFIG_SCSI_PAS16 is not set
610# CONFIG_SCSI_PSI240I is not set
611# CONFIG_SCSI_QLOGIC_FAS is not set 586# CONFIG_SCSI_QLOGIC_FAS is not set
612# CONFIG_SCSI_QLOGIC_1280 is not set 587# CONFIG_SCSI_QLOGIC_1280 is not set
613# CONFIG_SCSI_QLA_FC is not set 588# CONFIG_SCSI_QLA_FC is not set
@@ -640,7 +615,6 @@ CONFIG_NETDEVICES=y
640# CONFIG_EQUALIZER is not set 615# CONFIG_EQUALIZER is not set
641# CONFIG_TUN is not set 616# CONFIG_TUN is not set
642# CONFIG_VETH is not set 617# CONFIG_VETH is not set
643# CONFIG_IP1000 is not set
644# CONFIG_ARCNET is not set 618# CONFIG_ARCNET is not set
645# CONFIG_PHYLIB is not set 619# CONFIG_PHYLIB is not set
646CONFIG_NET_ETHERNET=y 620CONFIG_NET_ETHERNET=y
@@ -688,6 +662,7 @@ CONFIG_8139TOO=y
688# CONFIG_8139TOO_TUNE_TWISTER is not set 662# CONFIG_8139TOO_TUNE_TWISTER is not set
689# CONFIG_8139TOO_8129 is not set 663# CONFIG_8139TOO_8129 is not set
690# CONFIG_8139_OLD_RX_RESET is not set 664# CONFIG_8139_OLD_RX_RESET is not set
665# CONFIG_R6040 is not set
691# CONFIG_SIS900 is not set 666# CONFIG_SIS900 is not set
692# CONFIG_EPIC100 is not set 667# CONFIG_EPIC100 is not set
693# CONFIG_SUNDANCE is not set 668# CONFIG_SUNDANCE is not set
@@ -701,6 +676,9 @@ CONFIG_NETDEV_1000=y
701# CONFIG_DL2K is not set 676# CONFIG_DL2K is not set
702# CONFIG_E1000 is not set 677# CONFIG_E1000 is not set
703# CONFIG_E1000E is not set 678# CONFIG_E1000E is not set
679# CONFIG_E1000E_ENABLED is not set
680# CONFIG_IP1000 is not set
681# CONFIG_IGB is not set
704# CONFIG_NS83820 is not set 682# CONFIG_NS83820 is not set
705# CONFIG_HAMACHI is not set 683# CONFIG_HAMACHI is not set
706# CONFIG_YELLOWFIN is not set 684# CONFIG_YELLOWFIN is not set
@@ -726,6 +704,7 @@ CONFIG_NETDEV_10000=y
726# CONFIG_NIU is not set 704# CONFIG_NIU is not set
727# CONFIG_MLX4_CORE is not set 705# CONFIG_MLX4_CORE is not set
728# CONFIG_TEHUTI is not set 706# CONFIG_TEHUTI is not set
707# CONFIG_BNX2X is not set
729# CONFIG_TR is not set 708# CONFIG_TR is not set
730 709
731# 710#
@@ -758,7 +737,6 @@ CONFIG_PPPOE=m
758# CONFIG_SLIP is not set 737# CONFIG_SLIP is not set
759CONFIG_SLHC=m 738CONFIG_SLHC=m
760# CONFIG_NET_FC is not set 739# CONFIG_NET_FC is not set
761# CONFIG_SHAPER is not set
762# CONFIG_NETCONSOLE is not set 740# CONFIG_NETCONSOLE is not set
763# CONFIG_NETPOLL is not set 741# CONFIG_NETPOLL is not set
764# CONFIG_NET_POLL_CONTROLLER is not set 742# CONFIG_NET_POLL_CONTROLLER is not set
@@ -838,6 +816,7 @@ CONFIG_VT_CONSOLE=y
838CONFIG_HW_CONSOLE=y 816CONFIG_HW_CONSOLE=y
839# CONFIG_VT_HW_CONSOLE_BINDING is not set 817# CONFIG_VT_HW_CONSOLE_BINDING is not set
840# CONFIG_SERIAL_NONSTANDARD is not set 818# CONFIG_SERIAL_NONSTANDARD is not set
819# CONFIG_NOZOMI is not set
841 820
842# 821#
843# Serial drivers 822# Serial drivers
@@ -917,14 +896,12 @@ CONFIG_I2C_ALGOBIT=y
917# 896#
918# Miscellaneous I2C Chip support 897# Miscellaneous I2C Chip support
919# 898#
920# CONFIG_SENSORS_DS1337 is not set
921# CONFIG_SENSORS_DS1374 is not set
922# CONFIG_DS1682 is not set 899# CONFIG_DS1682 is not set
923# CONFIG_SENSORS_EEPROM is not set 900# CONFIG_SENSORS_EEPROM is not set
924# CONFIG_SENSORS_PCF8574 is not set 901# CONFIG_SENSORS_PCF8574 is not set
925# CONFIG_SENSORS_PCA9539 is not set 902# CONFIG_PCF8575 is not set
926# CONFIG_SENSORS_PCF8591 is not set 903# CONFIG_SENSORS_PCF8591 is not set
927# CONFIG_SENSORS_M41T00 is not set 904# CONFIG_TPS65010 is not set
928# CONFIG_SENSORS_MAX6875 is not set 905# CONFIG_SENSORS_MAX6875 is not set
929# CONFIG_SENSORS_TSL2550 is not set 906# CONFIG_SENSORS_TSL2550 is not set
930# CONFIG_I2C_DEBUG_CORE is not set 907# CONFIG_I2C_DEBUG_CORE is not set
@@ -940,6 +917,7 @@ CONFIG_I2C_ALGOBIT=y
940# CONFIG_W1 is not set 917# CONFIG_W1 is not set
941# CONFIG_POWER_SUPPLY is not set 918# CONFIG_POWER_SUPPLY is not set
942# CONFIG_HWMON is not set 919# CONFIG_HWMON is not set
920# CONFIG_THERMAL is not set
943# CONFIG_WATCHDOG is not set 921# CONFIG_WATCHDOG is not set
944 922
945# 923#
@@ -1083,6 +1061,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y
1083CONFIG_USB_ARCH_HAS_EHCI=y 1061CONFIG_USB_ARCH_HAS_EHCI=y
1084CONFIG_USB=y 1062CONFIG_USB=y
1085# CONFIG_USB_DEBUG is not set 1063# CONFIG_USB_DEBUG is not set
1064# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1086 1065
1087# 1066#
1088# Miscellaneous USB options 1067# Miscellaneous USB options
@@ -1096,9 +1075,9 @@ CONFIG_USB_DEVICE_CLASS=y
1096# USB Host Controller Drivers 1075# USB Host Controller Drivers
1097# 1076#
1098CONFIG_USB_EHCI_HCD=m 1077CONFIG_USB_EHCI_HCD=m
1099# CONFIG_USB_EHCI_SPLIT_ISO is not set
1100# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1078# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1101# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1079# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1080# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1102# CONFIG_USB_ISP116X_HCD is not set 1081# CONFIG_USB_ISP116X_HCD is not set
1103CONFIG_USB_OHCI_HCD=y 1082CONFIG_USB_OHCI_HCD=y
1104# CONFIG_USB_OHCI_HCD_PPC_OF is not set 1083# CONFIG_USB_OHCI_HCD_PPC_OF is not set
@@ -1147,10 +1126,6 @@ CONFIG_USB_MON=y
1147# 1126#
1148# USB port drivers 1127# USB port drivers
1149# 1128#
1150
1151#
1152# USB Serial Converter support
1153#
1154# CONFIG_USB_SERIAL is not set 1129# CONFIG_USB_SERIAL is not set
1155 1130
1156# 1131#
@@ -1176,20 +1151,14 @@ CONFIG_USB_MON=y
1176# CONFIG_USB_TRANCEVIBRATOR is not set 1151# CONFIG_USB_TRANCEVIBRATOR is not set
1177# CONFIG_USB_IOWARRIOR is not set 1152# CONFIG_USB_IOWARRIOR is not set
1178# CONFIG_USB_TEST is not set 1153# CONFIG_USB_TEST is not set
1179
1180#
1181# USB DSL modem support
1182#
1183
1184#
1185# USB Gadget Support
1186#
1187# CONFIG_USB_GADGET is not set 1154# CONFIG_USB_GADGET is not set
1188# CONFIG_MMC is not set 1155# CONFIG_MMC is not set
1156# CONFIG_MEMSTICK is not set
1189# CONFIG_NEW_LEDS is not set 1157# CONFIG_NEW_LEDS is not set
1190# CONFIG_INFINIBAND is not set 1158# CONFIG_INFINIBAND is not set
1191# CONFIG_EDAC is not set 1159# CONFIG_EDAC is not set
1192# CONFIG_RTC_CLASS is not set 1160# CONFIG_RTC_CLASS is not set
1161# CONFIG_DMADEVICES is not set
1193 1162
1194# 1163#
1195# Userspace I/O 1164# Userspace I/O
@@ -1215,12 +1184,10 @@ CONFIG_FS_MBCACHE=y
1215# CONFIG_XFS_FS is not set 1184# CONFIG_XFS_FS is not set
1216# CONFIG_GFS2_FS is not set 1185# CONFIG_GFS2_FS is not set
1217# CONFIG_OCFS2_FS is not set 1186# CONFIG_OCFS2_FS is not set
1218# CONFIG_MINIX_FS is not set 1187CONFIG_DNOTIFY=y
1219# CONFIG_ROMFS_FS is not set
1220CONFIG_INOTIFY=y 1188CONFIG_INOTIFY=y
1221CONFIG_INOTIFY_USER=y 1189CONFIG_INOTIFY_USER=y
1222# CONFIG_QUOTA is not set 1190# CONFIG_QUOTA is not set
1223CONFIG_DNOTIFY=y
1224# CONFIG_AUTOFS_FS is not set 1191# CONFIG_AUTOFS_FS is not set
1225# CONFIG_AUTOFS4_FS is not set 1192# CONFIG_AUTOFS4_FS is not set
1226# CONFIG_FUSE_FS is not set 1193# CONFIG_FUSE_FS is not set
@@ -1267,8 +1234,10 @@ CONFIG_TMPFS=y
1267# CONFIG_EFS_FS is not set 1234# CONFIG_EFS_FS is not set
1268# CONFIG_CRAMFS is not set 1235# CONFIG_CRAMFS is not set
1269# CONFIG_VXFS_FS is not set 1236# CONFIG_VXFS_FS is not set
1237# CONFIG_MINIX_FS is not set
1270# CONFIG_HPFS_FS is not set 1238# CONFIG_HPFS_FS is not set
1271# CONFIG_QNX4FS_FS is not set 1239# CONFIG_QNX4FS_FS is not set
1240# CONFIG_ROMFS_FS is not set
1272# CONFIG_SYSV_FS is not set 1241# CONFIG_SYSV_FS is not set
1273# CONFIG_UFS_FS is not set 1242# CONFIG_UFS_FS is not set
1274CONFIG_NETWORK_FILESYSTEMS=y 1243CONFIG_NETWORK_FILESYSTEMS=y
@@ -1342,7 +1311,6 @@ CONFIG_NLS_ISO8859_1=m
1342# CONFIG_NLS_KOI8_U is not set 1311# CONFIG_NLS_KOI8_U is not set
1343# CONFIG_NLS_UTF8 is not set 1312# CONFIG_NLS_UTF8 is not set
1344# CONFIG_DLM is not set 1313# CONFIG_DLM is not set
1345# CONFIG_UCC_SLOW is not set
1346 1314
1347# 1315#
1348# Library routines 1316# Library routines
@@ -1360,10 +1328,6 @@ CONFIG_PLIST=y
1360CONFIG_HAS_IOMEM=y 1328CONFIG_HAS_IOMEM=y
1361CONFIG_HAS_IOPORT=y 1329CONFIG_HAS_IOPORT=y
1362CONFIG_HAS_DMA=y 1330CONFIG_HAS_DMA=y
1363CONFIG_INSTRUMENTATION=y
1364# CONFIG_PROFILING is not set
1365# CONFIG_KPROBES is not set
1366# CONFIG_MARKERS is not set
1367 1331
1368# 1332#
1369# Kernel hacking 1333# Kernel hacking
@@ -1382,6 +1346,7 @@ CONFIG_SCHED_DEBUG=y
1382# CONFIG_SCHEDSTATS is not set 1346# CONFIG_SCHEDSTATS is not set
1383# CONFIG_TIMER_STATS is not set 1347# CONFIG_TIMER_STATS is not set
1384# CONFIG_SLUB_DEBUG_ON is not set 1348# CONFIG_SLUB_DEBUG_ON is not set
1349# CONFIG_SLUB_STATS is not set
1385# CONFIG_DEBUG_RT_MUTEXES is not set 1350# CONFIG_DEBUG_RT_MUTEXES is not set
1386# CONFIG_RT_MUTEX_TESTER is not set 1351# CONFIG_RT_MUTEX_TESTER is not set
1387# CONFIG_DEBUG_SPINLOCK is not set 1352# CONFIG_DEBUG_SPINLOCK is not set
@@ -1395,9 +1360,9 @@ CONFIG_DEBUG_BUGVERBOSE=y
1395# CONFIG_DEBUG_VM is not set 1360# CONFIG_DEBUG_VM is not set
1396# CONFIG_DEBUG_LIST is not set 1361# CONFIG_DEBUG_LIST is not set
1397# CONFIG_DEBUG_SG is not set 1362# CONFIG_DEBUG_SG is not set
1398CONFIG_FORCED_INLINING=y
1399# CONFIG_BOOT_PRINTK_DELAY is not set 1363# CONFIG_BOOT_PRINTK_DELAY is not set
1400# CONFIG_RCU_TORTURE_TEST is not set 1364# CONFIG_RCU_TORTURE_TEST is not set
1365# CONFIG_BACKTRACE_SELF_TEST is not set
1401# CONFIG_FAULT_INJECTION is not set 1366# CONFIG_FAULT_INJECTION is not set
1402# CONFIG_SAMPLES is not set 1367# CONFIG_SAMPLES is not set
1403# CONFIG_DEBUG_STACKOVERFLOW is not set 1368# CONFIG_DEBUG_STACKOVERFLOW is not set
@@ -1420,6 +1385,7 @@ CONFIG_XMON_DISASSEMBLY=y
1420CONFIG_CRYPTO=y 1385CONFIG_CRYPTO=y
1421CONFIG_CRYPTO_ALGAPI=m 1386CONFIG_CRYPTO_ALGAPI=m
1422CONFIG_CRYPTO_BLKCIPHER=m 1387CONFIG_CRYPTO_BLKCIPHER=m
1388# CONFIG_CRYPTO_SEQIV is not set
1423CONFIG_CRYPTO_MANAGER=m 1389CONFIG_CRYPTO_MANAGER=m
1424# CONFIG_CRYPTO_HMAC is not set 1390# CONFIG_CRYPTO_HMAC is not set
1425# CONFIG_CRYPTO_XCBC is not set 1391# CONFIG_CRYPTO_XCBC is not set
@@ -1437,6 +1403,9 @@ CONFIG_CRYPTO_CBC=m
1437CONFIG_CRYPTO_PCBC=m 1403CONFIG_CRYPTO_PCBC=m
1438# CONFIG_CRYPTO_LRW is not set 1404# CONFIG_CRYPTO_LRW is not set
1439# CONFIG_CRYPTO_XTS is not set 1405# CONFIG_CRYPTO_XTS is not set
1406# CONFIG_CRYPTO_CTR is not set
1407# CONFIG_CRYPTO_GCM is not set
1408# CONFIG_CRYPTO_CCM is not set
1440# CONFIG_CRYPTO_CRYPTD is not set 1409# CONFIG_CRYPTO_CRYPTD is not set
1441# CONFIG_CRYPTO_DES is not set 1410# CONFIG_CRYPTO_DES is not set
1442# CONFIG_CRYPTO_FCRYPT is not set 1411# CONFIG_CRYPTO_FCRYPT is not set
@@ -1451,11 +1420,13 @@ CONFIG_CRYPTO_ARC4=m
1451# CONFIG_CRYPTO_KHAZAD is not set 1420# CONFIG_CRYPTO_KHAZAD is not set
1452# CONFIG_CRYPTO_ANUBIS is not set 1421# CONFIG_CRYPTO_ANUBIS is not set
1453# CONFIG_CRYPTO_SEED is not set 1422# CONFIG_CRYPTO_SEED is not set
1423# CONFIG_CRYPTO_SALSA20 is not set
1454# CONFIG_CRYPTO_DEFLATE is not set 1424# CONFIG_CRYPTO_DEFLATE is not set
1455# CONFIG_CRYPTO_MICHAEL_MIC is not set 1425# CONFIG_CRYPTO_MICHAEL_MIC is not set
1456# CONFIG_CRYPTO_CRC32C is not set 1426# CONFIG_CRYPTO_CRC32C is not set
1457# CONFIG_CRYPTO_CAMELLIA is not set 1427# CONFIG_CRYPTO_CAMELLIA is not set
1458# CONFIG_CRYPTO_TEST is not set 1428# CONFIG_CRYPTO_TEST is not set
1459# CONFIG_CRYPTO_AUTHENC is not set 1429# CONFIG_CRYPTO_AUTHENC is not set
1430# CONFIG_CRYPTO_LZO is not set
1460# CONFIG_CRYPTO_HW is not set 1431# CONFIG_CRYPTO_HW is not set
1461# CONFIG_PPC_CLOCK is not set 1432# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig
index 3673dd23120c..0f82f66a60f8 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.24-rc4 3# Linux kernel version: 2.6.25-rc6
4# Thu Dec 6 16:48:15 2007 4# Thu Mar 20 10:36:41 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -27,6 +27,7 @@ CONFIG_GENERIC_TIME=y
27CONFIG_GENERIC_TIME_VSYSCALL=y 27CONFIG_GENERIC_TIME_VSYSCALL=y
28CONFIG_GENERIC_CLOCKEVENTS=y 28CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 29CONFIG_GENERIC_HARDIRQS=y
30CONFIG_HAVE_SETUP_PER_CPU_AREA=y
30CONFIG_IRQ_PER_CPU=y 31CONFIG_IRQ_PER_CPU=y
31CONFIG_RWSEM_XCHGADD_ALGORITHM=y 32CONFIG_RWSEM_XCHGADD_ALGORITHM=y
32CONFIG_ARCH_HAS_ILOG2_U32=y 33CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -48,7 +49,9 @@ CONFIG_GENERIC_TBSYNC=y
48CONFIG_AUDIT_ARCH=y 49CONFIG_AUDIT_ARCH=y
49CONFIG_GENERIC_BUG=y 50CONFIG_GENERIC_BUG=y
50# CONFIG_DEFAULT_UIMAGE is not set 51# CONFIG_DEFAULT_UIMAGE is not set
51CONFIG_PPC64_SWSUSP=y 52CONFIG_HIBERNATE_64=y
53CONFIG_ARCH_HIBERNATION_POSSIBLE=y
54CONFIG_ARCH_SUSPEND_POSSIBLE=y
52# CONFIG_PPC_DCR_NATIVE is not set 55# CONFIG_PPC_DCR_NATIVE is not set
53# CONFIG_PPC_DCR_MMIO is not set 56# CONFIG_PPC_DCR_MMIO is not set
54# CONFIG_PPC_OF_PLATFORM_PCI is not set 57# CONFIG_PPC_OF_PLATFORM_PCI is not set
@@ -68,18 +71,22 @@ CONFIG_SYSVIPC_SYSCTL=y
68CONFIG_POSIX_MQUEUE=y 71CONFIG_POSIX_MQUEUE=y
69# CONFIG_BSD_PROCESS_ACCT is not set 72# CONFIG_BSD_PROCESS_ACCT is not set
70# CONFIG_TASKSTATS is not set 73# CONFIG_TASKSTATS is not set
71# CONFIG_USER_NS is not set
72# CONFIG_PID_NS is not set
73# CONFIG_AUDIT is not set 74# CONFIG_AUDIT is not set
74CONFIG_IKCONFIG=y 75CONFIG_IKCONFIG=y
75CONFIG_IKCONFIG_PROC=y 76CONFIG_IKCONFIG_PROC=y
76CONFIG_LOG_BUF_SHIFT=17 77CONFIG_LOG_BUF_SHIFT=17
77# CONFIG_CGROUPS is not set 78# CONFIG_CGROUPS is not set
78CONFIG_FAIR_GROUP_SCHED=y 79# CONFIG_GROUP_SCHED is not set
79CONFIG_FAIR_USER_SCHED=y 80# CONFIG_USER_SCHED is not set
80# CONFIG_FAIR_CGROUP_SCHED is not set 81# CONFIG_CGROUP_SCHED is not set
81CONFIG_SYSFS_DEPRECATED=y 82CONFIG_SYSFS_DEPRECATED=y
83CONFIG_SYSFS_DEPRECATED_V2=y
82# CONFIG_RELAY is not set 84# CONFIG_RELAY is not set
85CONFIG_NAMESPACES=y
86# CONFIG_UTS_NS is not set
87# CONFIG_IPC_NS is not set
88# CONFIG_USER_NS is not set
89# CONFIG_PID_NS is not set
83CONFIG_BLK_DEV_INITRD=y 90CONFIG_BLK_DEV_INITRD=y
84CONFIG_INITRAMFS_SOURCE="" 91CONFIG_INITRAMFS_SOURCE=""
85CONFIG_CC_OPTIMIZE_FOR_SIZE=y 92CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -93,11 +100,13 @@ CONFIG_HOTPLUG=y
93CONFIG_PRINTK=y 100CONFIG_PRINTK=y
94CONFIG_BUG=y 101CONFIG_BUG=y
95CONFIG_ELF_CORE=y 102CONFIG_ELF_CORE=y
103# CONFIG_COMPAT_BRK is not set
96CONFIG_BASE_FULL=y 104CONFIG_BASE_FULL=y
97CONFIG_FUTEX=y 105CONFIG_FUTEX=y
98CONFIG_ANON_INODES=y 106CONFIG_ANON_INODES=y
99CONFIG_EPOLL=y 107CONFIG_EPOLL=y
100CONFIG_SIGNALFD=y 108CONFIG_SIGNALFD=y
109CONFIG_TIMERFD=y
101CONFIG_EVENTFD=y 110CONFIG_EVENTFD=y
102CONFIG_SHMEM=y 111CONFIG_SHMEM=y
103CONFIG_VM_EVENT_COUNTERS=y 112CONFIG_VM_EVENT_COUNTERS=y
@@ -105,6 +114,15 @@ CONFIG_SLUB_DEBUG=y
105# CONFIG_SLAB is not set 114# CONFIG_SLAB is not set
106CONFIG_SLUB=y 115CONFIG_SLUB=y
107# CONFIG_SLOB is not set 116# CONFIG_SLOB is not set
117CONFIG_PROFILING=y
118# CONFIG_MARKERS is not set
119CONFIG_OPROFILE=y
120CONFIG_HAVE_OPROFILE=y
121# CONFIG_KPROBES is not set
122CONFIG_HAVE_KPROBES=y
123CONFIG_HAVE_KRETPROBES=y
124CONFIG_PROC_PAGE_MONITOR=y
125CONFIG_SLABINFO=y
108CONFIG_RT_MUTEXES=y 126CONFIG_RT_MUTEXES=y
109# CONFIG_TINY_SHMEM is not set 127# CONFIG_TINY_SHMEM is not set
110CONFIG_BASE_SMALL=0 128CONFIG_BASE_SMALL=0
@@ -132,6 +150,7 @@ CONFIG_DEFAULT_AS=y
132# CONFIG_DEFAULT_CFQ is not set 150# CONFIG_DEFAULT_CFQ is not set
133# CONFIG_DEFAULT_NOOP is not set 151# CONFIG_DEFAULT_NOOP is not set
134CONFIG_DEFAULT_IOSCHED="anticipatory" 152CONFIG_DEFAULT_IOSCHED="anticipatory"
153CONFIG_CLASSIC_RCU=y
135 154
136# 155#
137# Platform support 156# Platform support
@@ -142,8 +161,8 @@ CONFIG_PPC_MULTIPLATFORM=y
142# CONFIG_PPC_86xx is not set 161# CONFIG_PPC_86xx is not set
143# CONFIG_PPC_PSERIES is not set 162# CONFIG_PPC_PSERIES is not set
144# CONFIG_PPC_ISERIES is not set 163# CONFIG_PPC_ISERIES is not set
145# CONFIG_PPC_MPC52xx is not set 164# CONFIG_PPC_MPC512x is not set
146# CONFIG_PPC_MPC5200 is not set 165# CONFIG_PPC_MPC5121 is not set
147CONFIG_PPC_PMAC=y 166CONFIG_PPC_PMAC=y
148CONFIG_PPC_PMAC64=y 167CONFIG_PPC_PMAC64=y
149# CONFIG_PPC_MAPLE is not set 168# CONFIG_PPC_MAPLE is not set
@@ -155,6 +174,7 @@ CONFIG_PPC_PMAC64=y
155# CONFIG_PPC_IBM_CELL_BLADE is not set 174# CONFIG_PPC_IBM_CELL_BLADE is not set
156# CONFIG_PQ2ADS is not set 175# CONFIG_PQ2ADS is not set
157CONFIG_PPC_NATIVE=y 176CONFIG_PPC_NATIVE=y
177# CONFIG_IPIC is not set
158CONFIG_MPIC=y 178CONFIG_MPIC=y
159# CONFIG_MPIC_WEIRD is not set 179# CONFIG_MPIC_WEIRD is not set
160# CONFIG_PPC_I8259 is not set 180# CONFIG_PPC_I8259 is not set
@@ -185,7 +205,6 @@ CONFIG_CPU_FREQ_GOV_USERSPACE=y
185# CPU Frequency drivers 205# CPU Frequency drivers
186# 206#
187CONFIG_CPU_FREQ_PMAC64=y 207CONFIG_CPU_FREQ_PMAC64=y
188# CONFIG_CPM2 is not set
189# CONFIG_FSL_ULI1575 is not set 208# CONFIG_FSL_ULI1575 is not set
190 209
191# 210#
@@ -200,17 +219,21 @@ CONFIG_HZ_250=y
200# CONFIG_HZ_300 is not set 219# CONFIG_HZ_300 is not set
201# CONFIG_HZ_1000 is not set 220# CONFIG_HZ_1000 is not set
202CONFIG_HZ=250 221CONFIG_HZ=250
222# CONFIG_SCHED_HRTICK is not set
203CONFIG_PREEMPT_NONE=y 223CONFIG_PREEMPT_NONE=y
204# CONFIG_PREEMPT_VOLUNTARY is not set 224# CONFIG_PREEMPT_VOLUNTARY is not set
205# CONFIG_PREEMPT is not set 225# CONFIG_PREEMPT is not set
206# CONFIG_PREEMPT_BKL is not set
207CONFIG_BINFMT_ELF=y 226CONFIG_BINFMT_ELF=y
227CONFIG_COMPAT_BINFMT_ELF=y
208# CONFIG_BINFMT_MISC is not set 228# CONFIG_BINFMT_MISC is not set
209CONFIG_FORCE_MAX_ZONEORDER=13 229CONFIG_FORCE_MAX_ZONEORDER=13
210CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y 230CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
211CONFIG_IOMMU_VMERGE=y 231CONFIG_IOMMU_VMERGE=y
232CONFIG_IOMMU_HELPER=y
212# CONFIG_HOTPLUG_CPU is not set 233# CONFIG_HOTPLUG_CPU is not set
213CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 234CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
235CONFIG_ARCH_HAS_WALK_MEMORY=y
236CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
214CONFIG_KEXEC=y 237CONFIG_KEXEC=y
215# CONFIG_CRASH_DUMP is not set 238# CONFIG_CRASH_DUMP is not set
216CONFIG_IRQ_ALL_CPUS=y 239CONFIG_IRQ_ALL_CPUS=y
@@ -236,11 +259,9 @@ CONFIG_BOUNCE=y
236# CONFIG_SCHED_SMT is not set 259# CONFIG_SCHED_SMT is not set
237CONFIG_PROC_DEVICETREE=y 260CONFIG_PROC_DEVICETREE=y
238# CONFIG_CMDLINE_BOOL is not set 261# CONFIG_CMDLINE_BOOL is not set
262CONFIG_ARCH_WANTS_FREEZER_CONTROL=y
239# CONFIG_PM is not set 263# CONFIG_PM is not set
240CONFIG_SUSPEND_SMP_POSSIBLE=y
241CONFIG_HIBERNATION_SMP_POSSIBLE=y
242CONFIG_SECCOMP=y 264CONFIG_SECCOMP=y
243# CONFIG_WANT_DEVICE_TREE is not set
244CONFIG_ISA_DMA_API=y 265CONFIG_ISA_DMA_API=y
245 266
246# 267#
@@ -276,6 +297,7 @@ CONFIG_XFRM=y
276CONFIG_XFRM_USER=m 297CONFIG_XFRM_USER=m
277# CONFIG_XFRM_SUB_POLICY is not set 298# CONFIG_XFRM_SUB_POLICY is not set
278# CONFIG_XFRM_MIGRATE is not set 299# CONFIG_XFRM_MIGRATE is not set
300# CONFIG_XFRM_STATISTICS is not set
279CONFIG_NET_KEY=m 301CONFIG_NET_KEY=m
280# CONFIG_NET_KEY_MIGRATE is not set 302# CONFIG_NET_KEY_MIGRATE is not set
281CONFIG_INET=y 303CONFIG_INET=y
@@ -310,12 +332,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
310# CONFIG_NETWORK_SECMARK is not set 332# CONFIG_NETWORK_SECMARK is not set
311CONFIG_NETFILTER=y 333CONFIG_NETFILTER=y
312# CONFIG_NETFILTER_DEBUG is not set 334# CONFIG_NETFILTER_DEBUG is not set
335CONFIG_NETFILTER_ADVANCED=y
313 336
314# 337#
315# Core Netfilter Configuration 338# Core Netfilter Configuration
316# 339#
317# CONFIG_NETFILTER_NETLINK is not set 340CONFIG_NETFILTER_NETLINK=m
318CONFIG_NF_CONNTRACK_ENABLED=m 341CONFIG_NETFILTER_NETLINK_QUEUE=m
342CONFIG_NETFILTER_NETLINK_LOG=m
319CONFIG_NF_CONNTRACK=m 343CONFIG_NF_CONNTRACK=m
320# CONFIG_NF_CT_ACCT is not set 344# CONFIG_NF_CT_ACCT is not set
321CONFIG_NF_CONNTRACK_MARK=y 345CONFIG_NF_CONNTRACK_MARK=y
@@ -331,6 +355,7 @@ CONFIG_NF_CONNTRACK_IRC=m
331# CONFIG_NF_CONNTRACK_SANE is not set 355# CONFIG_NF_CONNTRACK_SANE is not set
332# CONFIG_NF_CONNTRACK_SIP is not set 356# CONFIG_NF_CONNTRACK_SIP is not set
333CONFIG_NF_CONNTRACK_TFTP=m 357CONFIG_NF_CONNTRACK_TFTP=m
358CONFIG_NF_CT_NETLINK=m
334# CONFIG_NETFILTER_XTABLES is not set 359# CONFIG_NETFILTER_XTABLES is not set
335 360
336# 361#
@@ -363,6 +388,7 @@ CONFIG_LLC=y
363# 388#
364# CONFIG_NET_PKTGEN is not set 389# CONFIG_NET_PKTGEN is not set
365# CONFIG_HAMRADIO is not set 390# CONFIG_HAMRADIO is not set
391# CONFIG_CAN is not set
366# CONFIG_IRDA is not set 392# CONFIG_IRDA is not set
367# CONFIG_BT is not set 393# CONFIG_BT is not set
368# CONFIG_AF_RXRPC is not set 394# CONFIG_AF_RXRPC is not set
@@ -409,7 +435,7 @@ CONFIG_BLK_DEV_NBD=m
409CONFIG_BLK_DEV_RAM=y 435CONFIG_BLK_DEV_RAM=y
410CONFIG_BLK_DEV_RAM_COUNT=16 436CONFIG_BLK_DEV_RAM_COUNT=16
411CONFIG_BLK_DEV_RAM_SIZE=65536 437CONFIG_BLK_DEV_RAM_SIZE=65536
412CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 438# CONFIG_BLK_DEV_XIP is not set
413CONFIG_CDROM_PKTCDVD=m 439CONFIG_CDROM_PKTCDVD=m
414CONFIG_CDROM_PKTCDVD_BUFFERS=8 440CONFIG_CDROM_PKTCDVD_BUFFERS=8
415# CONFIG_CDROM_PKTCDVD_WCACHE is not set 441# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -419,16 +445,19 @@ CONFIG_MISC_DEVICES=y
419# CONFIG_EEPROM_93CX6 is not set 445# CONFIG_EEPROM_93CX6 is not set
420# CONFIG_SGI_IOC4 is not set 446# CONFIG_SGI_IOC4 is not set
421# CONFIG_TIFM_CORE is not set 447# CONFIG_TIFM_CORE is not set
448# CONFIG_ENCLOSURE_SERVICES is not set
449CONFIG_HAVE_IDE=y
422CONFIG_IDE=y 450CONFIG_IDE=y
423CONFIG_BLK_DEV_IDE=y 451CONFIG_BLK_DEV_IDE=y
424 452
425# 453#
426# Please see Documentation/ide.txt for help/info on IDE drives 454# Please see Documentation/ide/ide.txt for help/info on IDE drives
427# 455#
428# CONFIG_BLK_DEV_IDE_SATA is not set 456# CONFIG_BLK_DEV_IDE_SATA is not set
429CONFIG_BLK_DEV_IDEDISK=y 457CONFIG_BLK_DEV_IDEDISK=y
430# CONFIG_IDEDISK_MULTI_MODE is not set 458# CONFIG_IDEDISK_MULTI_MODE is not set
431CONFIG_BLK_DEV_IDECD=y 459CONFIG_BLK_DEV_IDECD=y
460CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
432# CONFIG_BLK_DEV_IDETAPE is not set 461# CONFIG_BLK_DEV_IDETAPE is not set
433# CONFIG_BLK_DEV_IDEFLOPPY is not set 462# CONFIG_BLK_DEV_IDEFLOPPY is not set
434# CONFIG_BLK_DEV_IDESCSI is not set 463# CONFIG_BLK_DEV_IDESCSI is not set
@@ -440,12 +469,12 @@ CONFIG_IDE_PROC_FS=y
440# 469#
441CONFIG_IDE_GENERIC=y 470CONFIG_IDE_GENERIC=y
442# CONFIG_BLK_DEV_PLATFORM is not set 471# CONFIG_BLK_DEV_PLATFORM is not set
472CONFIG_BLK_DEV_IDEDMA_SFF=y
443 473
444# 474#
445# PCI IDE chipsets support 475# PCI IDE chipsets support
446# 476#
447CONFIG_BLK_DEV_IDEPCI=y 477CONFIG_BLK_DEV_IDEPCI=y
448# CONFIG_IDEPCI_SHARE_IRQ is not set
449CONFIG_IDEPCI_PCIBUS_ORDER=y 478CONFIG_IDEPCI_PCIBUS_ORDER=y
450# CONFIG_BLK_DEV_GENERIC is not set 479# CONFIG_BLK_DEV_GENERIC is not set
451# CONFIG_BLK_DEV_OPTI621 is not set 480# CONFIG_BLK_DEV_OPTI621 is not set
@@ -478,7 +507,6 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
478CONFIG_BLK_DEV_IDE_PMAC=y 507CONFIG_BLK_DEV_IDE_PMAC=y
479CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y 508CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
480CONFIG_BLK_DEV_IDEDMA_PMAC=y 509CONFIG_BLK_DEV_IDEDMA_PMAC=y
481# CONFIG_IDE_ARM is not set
482CONFIG_BLK_DEV_IDEDMA=y 510CONFIG_BLK_DEV_IDEDMA=y
483CONFIG_IDE_ARCH_OBSOLETE_INIT=y 511CONFIG_IDE_ARCH_OBSOLETE_INIT=y
484# CONFIG_BLK_DEV_HD is not set 512# CONFIG_BLK_DEV_HD is not set
@@ -544,6 +572,7 @@ CONFIG_SCSI_LOWLEVEL=y
544# CONFIG_SCSI_IPS is not set 572# CONFIG_SCSI_IPS is not set
545# CONFIG_SCSI_INITIO is not set 573# CONFIG_SCSI_INITIO is not set
546# CONFIG_SCSI_INIA100 is not set 574# CONFIG_SCSI_INIA100 is not set
575# CONFIG_SCSI_MVSAS is not set
547# CONFIG_SCSI_STEX is not set 576# CONFIG_SCSI_STEX is not set
548# CONFIG_SCSI_SYM53C8XX_2 is not set 577# CONFIG_SCSI_SYM53C8XX_2 is not set
549# CONFIG_SCSI_IPR is not set 578# CONFIG_SCSI_IPR is not set
@@ -596,6 +625,7 @@ CONFIG_SATA_SVW=y
596# CONFIG_PATA_MPIIX is not set 625# CONFIG_PATA_MPIIX is not set
597# CONFIG_PATA_OLDPIIX is not set 626# CONFIG_PATA_OLDPIIX is not set
598# CONFIG_PATA_NETCELL is not set 627# CONFIG_PATA_NETCELL is not set
628# CONFIG_PATA_NINJA32 is not set
599# CONFIG_PATA_NS87410 is not set 629# CONFIG_PATA_NS87410 is not set
600# CONFIG_PATA_NS87415 is not set 630# CONFIG_PATA_NS87415 is not set
601# CONFIG_PATA_OPTI is not set 631# CONFIG_PATA_OPTI is not set
@@ -610,6 +640,7 @@ CONFIG_SATA_SVW=y
610# CONFIG_PATA_SIS is not set 640# CONFIG_PATA_SIS is not set
611# CONFIG_PATA_VIA is not set 641# CONFIG_PATA_VIA is not set
612# CONFIG_PATA_WINBOND is not set 642# CONFIG_PATA_WINBOND is not set
643# CONFIG_PATA_PLATFORM is not set
613CONFIG_MD=y 644CONFIG_MD=y
614CONFIG_BLK_DEV_MD=y 645CONFIG_BLK_DEV_MD=y
615CONFIG_MD_LINEAR=y 646CONFIG_MD_LINEAR=y
@@ -676,7 +707,6 @@ CONFIG_BONDING=m
676# CONFIG_EQUALIZER is not set 707# CONFIG_EQUALIZER is not set
677CONFIG_TUN=m 708CONFIG_TUN=m
678# CONFIG_VETH is not set 709# CONFIG_VETH is not set
679# CONFIG_IP1000 is not set
680# CONFIG_ARCNET is not set 710# CONFIG_ARCNET is not set
681# CONFIG_PHYLIB is not set 711# CONFIG_PHYLIB is not set
682CONFIG_NET_ETHERNET=y 712CONFIG_NET_ETHERNET=y
@@ -701,6 +731,9 @@ CONFIG_E1000=y
701# CONFIG_E1000_NAPI is not set 731# CONFIG_E1000_NAPI is not set
702# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 732# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
703# CONFIG_E1000E is not set 733# CONFIG_E1000E is not set
734# CONFIG_E1000E_ENABLED is not set
735# CONFIG_IP1000 is not set
736# CONFIG_IGB is not set
704# CONFIG_NS83820 is not set 737# CONFIG_NS83820 is not set
705# CONFIG_HAMACHI is not set 738# CONFIG_HAMACHI is not set
706# CONFIG_YELLOWFIN is not set 739# CONFIG_YELLOWFIN is not set
@@ -726,6 +759,7 @@ CONFIG_NETDEV_10000=y
726# CONFIG_PASEMI_MAC is not set 759# CONFIG_PASEMI_MAC is not set
727# CONFIG_MLX4_CORE is not set 760# CONFIG_MLX4_CORE is not set
728# CONFIG_TEHUTI is not set 761# CONFIG_TEHUTI is not set
762# CONFIG_BNX2X is not set
729CONFIG_TR=y 763CONFIG_TR=y
730CONFIG_IBMOL=y 764CONFIG_IBMOL=y
731# CONFIG_3C359 is not set 765# CONFIG_3C359 is not set
@@ -771,7 +805,6 @@ CONFIG_PPPOE=m
771# CONFIG_SLIP is not set 805# CONFIG_SLIP is not set
772CONFIG_SLHC=m 806CONFIG_SLHC=m
773# CONFIG_NET_FC is not set 807# CONFIG_NET_FC is not set
774# CONFIG_SHAPER is not set
775# CONFIG_NETCONSOLE is not set 808# CONFIG_NETCONSOLE is not set
776# CONFIG_NETPOLL is not set 809# CONFIG_NETPOLL is not set
777# CONFIG_NET_POLL_CONTROLLER is not set 810# CONFIG_NET_POLL_CONTROLLER is not set
@@ -834,6 +867,7 @@ CONFIG_VT_CONSOLE=y
834CONFIG_HW_CONSOLE=y 867CONFIG_HW_CONSOLE=y
835# CONFIG_VT_HW_CONSOLE_BINDING is not set 868# CONFIG_VT_HW_CONSOLE_BINDING is not set
836# CONFIG_SERIAL_NONSTANDARD is not set 869# CONFIG_SERIAL_NONSTANDARD is not set
870# CONFIG_NOZOMI is not set
837 871
838# 872#
839# Serial drivers 873# Serial drivers
@@ -901,13 +935,12 @@ CONFIG_I2C_POWERMAC=y
901# 935#
902# Miscellaneous I2C Chip support 936# Miscellaneous I2C Chip support
903# 937#
904# CONFIG_SENSORS_DS1337 is not set
905# CONFIG_SENSORS_DS1374 is not set
906# CONFIG_DS1682 is not set 938# CONFIG_DS1682 is not set
907# CONFIG_SENSORS_EEPROM is not set 939# CONFIG_SENSORS_EEPROM is not set
908# CONFIG_SENSORS_PCF8574 is not set 940# CONFIG_SENSORS_PCF8574 is not set
909# CONFIG_SENSORS_PCA9539 is not set 941# CONFIG_PCF8575 is not set
910# CONFIG_SENSORS_PCF8591 is not set 942# CONFIG_SENSORS_PCF8591 is not set
943# CONFIG_TPS65010 is not set
911# CONFIG_SENSORS_MAX6875 is not set 944# CONFIG_SENSORS_MAX6875 is not set
912# CONFIG_SENSORS_TSL2550 is not set 945# CONFIG_SENSORS_TSL2550 is not set
913# CONFIG_I2C_DEBUG_CORE is not set 946# CONFIG_I2C_DEBUG_CORE is not set
@@ -923,6 +956,7 @@ CONFIG_I2C_POWERMAC=y
923# CONFIG_W1 is not set 956# CONFIG_W1 is not set
924# CONFIG_POWER_SUPPLY is not set 957# CONFIG_POWER_SUPPLY is not set
925# CONFIG_HWMON is not set 958# CONFIG_HWMON is not set
959# CONFIG_THERMAL is not set
926# CONFIG_WATCHDOG is not set 960# CONFIG_WATCHDOG is not set
927 961
928# 962#
@@ -1083,6 +1117,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1083# CONFIG_SND_BT87X is not set 1117# CONFIG_SND_BT87X is not set
1084# CONFIG_SND_CA0106 is not set 1118# CONFIG_SND_CA0106 is not set
1085# CONFIG_SND_CMIPCI is not set 1119# CONFIG_SND_CMIPCI is not set
1120# CONFIG_SND_OXYGEN is not set
1086# CONFIG_SND_CS4281 is not set 1121# CONFIG_SND_CS4281 is not set
1087# CONFIG_SND_CS46XX is not set 1122# CONFIG_SND_CS46XX is not set
1088# CONFIG_SND_CS5530 is not set 1123# CONFIG_SND_CS5530 is not set
@@ -1108,6 +1143,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1108# CONFIG_SND_HDA_INTEL is not set 1143# CONFIG_SND_HDA_INTEL is not set
1109# CONFIG_SND_HDSP is not set 1144# CONFIG_SND_HDSP is not set
1110# CONFIG_SND_HDSPM is not set 1145# CONFIG_SND_HDSPM is not set
1146# CONFIG_SND_HIFIER is not set
1111# CONFIG_SND_ICE1712 is not set 1147# CONFIG_SND_ICE1712 is not set
1112# CONFIG_SND_ICE1724 is not set 1148# CONFIG_SND_ICE1724 is not set
1113# CONFIG_SND_INTEL8X0 is not set 1149# CONFIG_SND_INTEL8X0 is not set
@@ -1125,6 +1161,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1125# CONFIG_SND_TRIDENT is not set 1161# CONFIG_SND_TRIDENT is not set
1126# CONFIG_SND_VIA82XX is not set 1162# CONFIG_SND_VIA82XX is not set
1127# CONFIG_SND_VIA82XX_MODEM is not set 1163# CONFIG_SND_VIA82XX_MODEM is not set
1164# CONFIG_SND_VIRTUOSO is not set
1128# CONFIG_SND_VX222 is not set 1165# CONFIG_SND_VX222 is not set
1129# CONFIG_SND_YMFPCI is not set 1166# CONFIG_SND_YMFPCI is not set
1130 1167
@@ -1166,6 +1203,10 @@ CONFIG_SND_USB_AUDIO=m
1166# 1203#
1167 1204
1168# 1205#
1206# ALSA SoC audio for Freescale SOCs
1207#
1208
1209#
1169# Open Sound System 1210# Open Sound System
1170# 1211#
1171# CONFIG_SOUND_PRIME is not set 1212# CONFIG_SOUND_PRIME is not set
@@ -1192,6 +1233,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y
1192CONFIG_USB_ARCH_HAS_EHCI=y 1233CONFIG_USB_ARCH_HAS_EHCI=y
1193CONFIG_USB=y 1234CONFIG_USB=y
1194# CONFIG_USB_DEBUG is not set 1235# CONFIG_USB_DEBUG is not set
1236# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1195 1237
1196# 1238#
1197# Miscellaneous USB options 1239# Miscellaneous USB options
@@ -1205,9 +1247,9 @@ CONFIG_USB_DEVICE_CLASS=y
1205# USB Host Controller Drivers 1247# USB Host Controller Drivers
1206# 1248#
1207CONFIG_USB_EHCI_HCD=y 1249CONFIG_USB_EHCI_HCD=y
1208# CONFIG_USB_EHCI_SPLIT_ISO is not set
1209# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1250# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1210# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1251# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1252# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1211# CONFIG_USB_ISP116X_HCD is not set 1253# CONFIG_USB_ISP116X_HCD is not set
1212CONFIG_USB_OHCI_HCD=y 1254CONFIG_USB_OHCI_HCD=y
1213CONFIG_USB_OHCI_HCD_PPC_OF=y 1255CONFIG_USB_OHCI_HCD_PPC_OF=y
@@ -1259,11 +1301,8 @@ CONFIG_USB_MON=y
1259# 1301#
1260# USB port drivers 1302# USB port drivers
1261# 1303#
1262
1263#
1264# USB Serial Converter support
1265#
1266CONFIG_USB_SERIAL=m 1304CONFIG_USB_SERIAL=m
1305CONFIG_USB_EZUSB=y
1267CONFIG_USB_SERIAL_GENERIC=y 1306CONFIG_USB_SERIAL_GENERIC=y
1268# CONFIG_USB_SERIAL_AIRCABLE is not set 1307# CONFIG_USB_SERIAL_AIRCABLE is not set
1269# CONFIG_USB_SERIAL_AIRPRIME is not set 1308# CONFIG_USB_SERIAL_AIRPRIME is not set
@@ -1284,6 +1323,7 @@ CONFIG_USB_SERIAL_EDGEPORT=m
1284CONFIG_USB_SERIAL_EDGEPORT_TI=m 1323CONFIG_USB_SERIAL_EDGEPORT_TI=m
1285CONFIG_USB_SERIAL_GARMIN=m 1324CONFIG_USB_SERIAL_GARMIN=m
1286CONFIG_USB_SERIAL_IPW=m 1325CONFIG_USB_SERIAL_IPW=m
1326# CONFIG_USB_SERIAL_IUU is not set
1287CONFIG_USB_SERIAL_KEYSPAN_PDA=m 1327CONFIG_USB_SERIAL_KEYSPAN_PDA=m
1288CONFIG_USB_SERIAL_KEYSPAN=m 1328CONFIG_USB_SERIAL_KEYSPAN=m
1289CONFIG_USB_SERIAL_KEYSPAN_MPR=y 1329CONFIG_USB_SERIAL_KEYSPAN_MPR=y
@@ -1316,7 +1356,6 @@ CONFIG_USB_SERIAL_XIRCOM=m
1316# CONFIG_USB_SERIAL_OPTION is not set 1356# CONFIG_USB_SERIAL_OPTION is not set
1317CONFIG_USB_SERIAL_OMNINET=m 1357CONFIG_USB_SERIAL_OMNINET=m
1318# CONFIG_USB_SERIAL_DEBUG is not set 1358# CONFIG_USB_SERIAL_DEBUG is not set
1319CONFIG_USB_EZUSB=y
1320 1359
1321# 1360#
1322# USB Miscellaneous drivers 1361# USB Miscellaneous drivers
@@ -1341,20 +1380,14 @@ CONFIG_USB_APPLEDISPLAY=m
1341# CONFIG_USB_TRANCEVIBRATOR is not set 1380# CONFIG_USB_TRANCEVIBRATOR is not set
1342# CONFIG_USB_IOWARRIOR is not set 1381# CONFIG_USB_IOWARRIOR is not set
1343# CONFIG_USB_TEST is not set 1382# CONFIG_USB_TEST is not set
1344
1345#
1346# USB DSL modem support
1347#
1348
1349#
1350# USB Gadget Support
1351#
1352# CONFIG_USB_GADGET is not set 1383# CONFIG_USB_GADGET is not set
1353# CONFIG_MMC is not set 1384# CONFIG_MMC is not set
1385# CONFIG_MEMSTICK is not set
1354# CONFIG_NEW_LEDS is not set 1386# CONFIG_NEW_LEDS is not set
1355# CONFIG_INFINIBAND is not set 1387# CONFIG_INFINIBAND is not set
1356# CONFIG_EDAC is not set 1388# CONFIG_EDAC is not set
1357# CONFIG_RTC_CLASS is not set 1389# CONFIG_RTC_CLASS is not set
1390# CONFIG_DMADEVICES is not set
1358 1391
1359# 1392#
1360# Userspace I/O 1393# Userspace I/O
@@ -1393,12 +1426,10 @@ CONFIG_XFS_POSIX_ACL=y
1393# CONFIG_XFS_RT is not set 1426# CONFIG_XFS_RT is not set
1394# CONFIG_GFS2_FS is not set 1427# CONFIG_GFS2_FS is not set
1395# CONFIG_OCFS2_FS is not set 1428# CONFIG_OCFS2_FS is not set
1396# CONFIG_MINIX_FS is not set 1429CONFIG_DNOTIFY=y
1397# CONFIG_ROMFS_FS is not set
1398CONFIG_INOTIFY=y 1430CONFIG_INOTIFY=y
1399CONFIG_INOTIFY_USER=y 1431CONFIG_INOTIFY_USER=y
1400# CONFIG_QUOTA is not set 1432# CONFIG_QUOTA is not set
1401CONFIG_DNOTIFY=y
1402CONFIG_AUTOFS_FS=m 1433CONFIG_AUTOFS_FS=m
1403# CONFIG_AUTOFS4_FS is not set 1434# CONFIG_AUTOFS4_FS is not set
1404# CONFIG_FUSE_FS is not set 1435# CONFIG_FUSE_FS is not set
@@ -1447,8 +1478,10 @@ CONFIG_HFSPLUS_FS=m
1447# CONFIG_EFS_FS is not set 1478# CONFIG_EFS_FS is not set
1448CONFIG_CRAMFS=y 1479CONFIG_CRAMFS=y
1449# CONFIG_VXFS_FS is not set 1480# CONFIG_VXFS_FS is not set
1481# CONFIG_MINIX_FS is not set
1450# CONFIG_HPFS_FS is not set 1482# CONFIG_HPFS_FS is not set
1451# CONFIG_QNX4FS_FS is not set 1483# CONFIG_QNX4FS_FS is not set
1484# CONFIG_ROMFS_FS is not set
1452# CONFIG_SYSV_FS is not set 1485# CONFIG_SYSV_FS is not set
1453# CONFIG_UFS_FS is not set 1486# CONFIG_UFS_FS is not set
1454CONFIG_NETWORK_FILESYSTEMS=y 1487CONFIG_NETWORK_FILESYSTEMS=y
@@ -1546,7 +1579,6 @@ CONFIG_NLS_ISO8859_15=y
1546# CONFIG_NLS_KOI8_U is not set 1579# CONFIG_NLS_KOI8_U is not set
1547CONFIG_NLS_UTF8=y 1580CONFIG_NLS_UTF8=y
1548# CONFIG_DLM is not set 1581# CONFIG_DLM is not set
1549# CONFIG_UCC_SLOW is not set
1550 1582
1551# 1583#
1552# Library routines 1584# Library routines
@@ -1564,11 +1596,6 @@ CONFIG_PLIST=y
1564CONFIG_HAS_IOMEM=y 1596CONFIG_HAS_IOMEM=y
1565CONFIG_HAS_IOPORT=y 1597CONFIG_HAS_IOPORT=y
1566CONFIG_HAS_DMA=y 1598CONFIG_HAS_DMA=y
1567CONFIG_INSTRUMENTATION=y
1568CONFIG_PROFILING=y
1569CONFIG_OPROFILE=y
1570# CONFIG_KPROBES is not set
1571# CONFIG_MARKERS is not set
1572 1599
1573# 1600#
1574# Kernel hacking 1601# Kernel hacking
@@ -1587,6 +1614,7 @@ CONFIG_SCHED_DEBUG=y
1587# CONFIG_SCHEDSTATS is not set 1614# CONFIG_SCHEDSTATS is not set
1588# CONFIG_TIMER_STATS is not set 1615# CONFIG_TIMER_STATS is not set
1589# CONFIG_SLUB_DEBUG_ON is not set 1616# CONFIG_SLUB_DEBUG_ON is not set
1617# CONFIG_SLUB_STATS is not set
1590# CONFIG_DEBUG_RT_MUTEXES is not set 1618# CONFIG_DEBUG_RT_MUTEXES is not set
1591# CONFIG_RT_MUTEX_TESTER is not set 1619# CONFIG_RT_MUTEX_TESTER is not set
1592# CONFIG_DEBUG_SPINLOCK is not set 1620# CONFIG_DEBUG_SPINLOCK is not set
@@ -1599,9 +1627,9 @@ CONFIG_DEBUG_BUGVERBOSE=y
1599# CONFIG_DEBUG_VM is not set 1627# CONFIG_DEBUG_VM is not set
1600# CONFIG_DEBUG_LIST is not set 1628# CONFIG_DEBUG_LIST is not set
1601# CONFIG_DEBUG_SG is not set 1629# CONFIG_DEBUG_SG is not set
1602CONFIG_FORCED_INLINING=y
1603# CONFIG_BOOT_PRINTK_DELAY is not set 1630# CONFIG_BOOT_PRINTK_DELAY is not set
1604# CONFIG_RCU_TORTURE_TEST is not set 1631# CONFIG_RCU_TORTURE_TEST is not set
1632# CONFIG_BACKTRACE_SELF_TEST is not set
1605# CONFIG_FAULT_INJECTION is not set 1633# CONFIG_FAULT_INJECTION is not set
1606# CONFIG_SAMPLES is not set 1634# CONFIG_SAMPLES is not set
1607# CONFIG_DEBUG_STACKOVERFLOW is not set 1635# CONFIG_DEBUG_STACKOVERFLOW is not set
@@ -1621,7 +1649,9 @@ CONFIG_BOOTX_TEXT=y
1621# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1649# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1622CONFIG_CRYPTO=y 1650CONFIG_CRYPTO=y
1623CONFIG_CRYPTO_ALGAPI=y 1651CONFIG_CRYPTO_ALGAPI=y
1652CONFIG_CRYPTO_AEAD=m
1624CONFIG_CRYPTO_BLKCIPHER=y 1653CONFIG_CRYPTO_BLKCIPHER=y
1654# CONFIG_CRYPTO_SEQIV is not set
1625CONFIG_CRYPTO_HASH=y 1655CONFIG_CRYPTO_HASH=y
1626CONFIG_CRYPTO_MANAGER=y 1656CONFIG_CRYPTO_MANAGER=y
1627CONFIG_CRYPTO_HMAC=y 1657CONFIG_CRYPTO_HMAC=y
@@ -1640,6 +1670,9 @@ CONFIG_CRYPTO_CBC=y
1640CONFIG_CRYPTO_PCBC=m 1670CONFIG_CRYPTO_PCBC=m
1641# CONFIG_CRYPTO_LRW is not set 1671# CONFIG_CRYPTO_LRW is not set
1642# CONFIG_CRYPTO_XTS is not set 1672# CONFIG_CRYPTO_XTS is not set
1673# CONFIG_CRYPTO_CTR is not set
1674# CONFIG_CRYPTO_GCM is not set
1675# CONFIG_CRYPTO_CCM is not set
1643# CONFIG_CRYPTO_CRYPTD is not set 1676# CONFIG_CRYPTO_CRYPTD is not set
1644CONFIG_CRYPTO_DES=y 1677CONFIG_CRYPTO_DES=y
1645# CONFIG_CRYPTO_FCRYPT is not set 1678# CONFIG_CRYPTO_FCRYPT is not set
@@ -1655,11 +1688,13 @@ CONFIG_CRYPTO_ARC4=m
1655CONFIG_CRYPTO_KHAZAD=m 1688CONFIG_CRYPTO_KHAZAD=m
1656CONFIG_CRYPTO_ANUBIS=m 1689CONFIG_CRYPTO_ANUBIS=m
1657# CONFIG_CRYPTO_SEED is not set 1690# CONFIG_CRYPTO_SEED is not set
1691# CONFIG_CRYPTO_SALSA20 is not set
1658CONFIG_CRYPTO_DEFLATE=m 1692CONFIG_CRYPTO_DEFLATE=m
1659CONFIG_CRYPTO_MICHAEL_MIC=m 1693CONFIG_CRYPTO_MICHAEL_MIC=m
1660CONFIG_CRYPTO_CRC32C=m 1694CONFIG_CRYPTO_CRC32C=m
1661# CONFIG_CRYPTO_CAMELLIA is not set 1695# CONFIG_CRYPTO_CAMELLIA is not set
1662CONFIG_CRYPTO_TEST=m 1696CONFIG_CRYPTO_TEST=m
1663# CONFIG_CRYPTO_AUTHENC is not set 1697CONFIG_CRYPTO_AUTHENC=m
1698# CONFIG_CRYPTO_LZO is not set
1664# CONFIG_CRYPTO_HW is not set 1699# CONFIG_CRYPTO_HW is not set
1665# CONFIG_PPC_CLOCK is not set 1700# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig
index 4a87745c7803..8d9a84f50157 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.24-rc3 3# Linux kernel version: 2.6.25-rc6
4# Wed Nov 21 11:19:59 2007 4# Thu Mar 20 10:43:46 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y
28CONFIG_GENERIC_TIME_VSYSCALL=y 28CONFIG_GENERIC_TIME_VSYSCALL=y
29CONFIG_GENERIC_CLOCKEVENTS=y 29CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_HAVE_SETUP_PER_CPU_AREA=y
31CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
32CONFIG_RWSEM_XCHGADD_ALGORITHM=y 33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
33CONFIG_ARCH_HAS_ILOG2_U32=y 34CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -68,8 +69,6 @@ CONFIG_SYSVIPC_SYSCTL=y
68CONFIG_POSIX_MQUEUE=y 69CONFIG_POSIX_MQUEUE=y
69# CONFIG_BSD_PROCESS_ACCT is not set 70# CONFIG_BSD_PROCESS_ACCT is not set
70# CONFIG_TASKSTATS is not set 71# CONFIG_TASKSTATS is not set
71# CONFIG_USER_NS is not set
72# CONFIG_PID_NS is not set
73CONFIG_AUDIT=y 72CONFIG_AUDIT=y
74CONFIG_AUDITSYSCALL=y 73CONFIG_AUDITSYSCALL=y
75CONFIG_AUDIT_TREE=y 74CONFIG_AUDIT_TREE=y
@@ -77,11 +76,17 @@ CONFIG_IKCONFIG=y
77CONFIG_IKCONFIG_PROC=y 76CONFIG_IKCONFIG_PROC=y
78CONFIG_LOG_BUF_SHIFT=17 77CONFIG_LOG_BUF_SHIFT=17
79# CONFIG_CGROUPS is not set 78# CONFIG_CGROUPS is not set
80CONFIG_FAIR_GROUP_SCHED=y 79# CONFIG_GROUP_SCHED is not set
81CONFIG_FAIR_USER_SCHED=y 80# CONFIG_USER_SCHED is not set
82# CONFIG_FAIR_CGROUP_SCHED is not set 81# CONFIG_CGROUP_SCHED is not set
83CONFIG_SYSFS_DEPRECATED=y 82CONFIG_SYSFS_DEPRECATED=y
83CONFIG_SYSFS_DEPRECATED_V2=y
84# CONFIG_RELAY is not set 84# CONFIG_RELAY is not set
85CONFIG_NAMESPACES=y
86# CONFIG_UTS_NS is not set
87# CONFIG_IPC_NS is not set
88# CONFIG_USER_NS is not set
89# CONFIG_PID_NS is not set
85CONFIG_BLK_DEV_INITRD=y 90CONFIG_BLK_DEV_INITRD=y
86CONFIG_INITRAMFS_SOURCE="" 91CONFIG_INITRAMFS_SOURCE=""
87CONFIG_CC_OPTIMIZE_FOR_SIZE=y 92CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -95,11 +100,13 @@ CONFIG_HOTPLUG=y
95CONFIG_PRINTK=y 100CONFIG_PRINTK=y
96CONFIG_BUG=y 101CONFIG_BUG=y
97CONFIG_ELF_CORE=y 102CONFIG_ELF_CORE=y
103# CONFIG_COMPAT_BRK is not set
98CONFIG_BASE_FULL=y 104CONFIG_BASE_FULL=y
99CONFIG_FUTEX=y 105CONFIG_FUTEX=y
100CONFIG_ANON_INODES=y 106CONFIG_ANON_INODES=y
101CONFIG_EPOLL=y 107CONFIG_EPOLL=y
102CONFIG_SIGNALFD=y 108CONFIG_SIGNALFD=y
109CONFIG_TIMERFD=y
103CONFIG_EVENTFD=y 110CONFIG_EVENTFD=y
104CONFIG_SHMEM=y 111CONFIG_SHMEM=y
105CONFIG_VM_EVENT_COUNTERS=y 112CONFIG_VM_EVENT_COUNTERS=y
@@ -107,6 +114,14 @@ CONFIG_SLUB_DEBUG=y
107# CONFIG_SLAB is not set 114# CONFIG_SLAB is not set
108CONFIG_SLUB=y 115CONFIG_SLUB=y
109# CONFIG_SLOB is not set 116# CONFIG_SLOB is not set
117# CONFIG_PROFILING is not set
118# CONFIG_MARKERS is not set
119CONFIG_HAVE_OPROFILE=y
120# CONFIG_KPROBES is not set
121CONFIG_HAVE_KPROBES=y
122CONFIG_HAVE_KRETPROBES=y
123CONFIG_PROC_PAGE_MONITOR=y
124CONFIG_SLABINFO=y
110CONFIG_RT_MUTEXES=y 125CONFIG_RT_MUTEXES=y
111# CONFIG_TINY_SHMEM is not set 126# CONFIG_TINY_SHMEM is not set
112CONFIG_BASE_SMALL=0 127CONFIG_BASE_SMALL=0
@@ -134,6 +149,7 @@ CONFIG_DEFAULT_AS=y
134# CONFIG_DEFAULT_CFQ is not set 149# CONFIG_DEFAULT_CFQ is not set
135# CONFIG_DEFAULT_NOOP is not set 150# CONFIG_DEFAULT_NOOP is not set
136CONFIG_DEFAULT_IOSCHED="anticipatory" 151CONFIG_DEFAULT_IOSCHED="anticipatory"
152CONFIG_CLASSIC_RCU=y
137 153
138# 154#
139# Platform support 155# Platform support
@@ -153,8 +169,8 @@ CONFIG_VIODASD=y
153CONFIG_VIOCD=m 169CONFIG_VIOCD=m
154CONFIG_VIOTAPE=m 170CONFIG_VIOTAPE=m
155CONFIG_VIOPATH=y 171CONFIG_VIOPATH=y
156# CONFIG_PPC_MPC52xx is not set 172# CONFIG_PPC_MPC512x is not set
157# CONFIG_PPC_MPC5200 is not set 173# CONFIG_PPC_MPC5121 is not set
158# CONFIG_PPC_PMAC is not set 174# CONFIG_PPC_PMAC is not set
159# CONFIG_PPC_MAPLE is not set 175# CONFIG_PPC_MAPLE is not set
160# CONFIG_PPC_PASEMI is not set 176# CONFIG_PPC_PASEMI is not set
@@ -164,6 +180,7 @@ CONFIG_VIOPATH=y
164# CONFIG_PPC_CELL_NATIVE is not set 180# CONFIG_PPC_CELL_NATIVE is not set
165# CONFIG_PPC_IBM_CELL_BLADE is not set 181# CONFIG_PPC_IBM_CELL_BLADE is not set
166# CONFIG_PQ2ADS is not set 182# CONFIG_PQ2ADS is not set
183# CONFIG_IPIC is not set
167# CONFIG_MPIC is not set 184# CONFIG_MPIC is not set
168# CONFIG_MPIC_WEIRD is not set 185# CONFIG_MPIC_WEIRD is not set
169# CONFIG_PPC_I8259 is not set 186# CONFIG_PPC_I8259 is not set
@@ -176,7 +193,6 @@ CONFIG_IBMVIO=y
176CONFIG_PPC_INDIRECT_IO=y 193CONFIG_PPC_INDIRECT_IO=y
177CONFIG_GENERIC_IOMAP=y 194CONFIG_GENERIC_IOMAP=y
178# CONFIG_CPU_FREQ is not set 195# CONFIG_CPU_FREQ is not set
179# CONFIG_CPM2 is not set
180# CONFIG_FSL_ULI1575 is not set 196# CONFIG_FSL_ULI1575 is not set
181 197
182# 198#
@@ -191,15 +207,19 @@ CONFIG_HZ_250=y
191# CONFIG_HZ_300 is not set 207# CONFIG_HZ_300 is not set
192# CONFIG_HZ_1000 is not set 208# CONFIG_HZ_1000 is not set
193CONFIG_HZ=250 209CONFIG_HZ=250
210# CONFIG_SCHED_HRTICK is not set
194CONFIG_PREEMPT_NONE=y 211CONFIG_PREEMPT_NONE=y
195# CONFIG_PREEMPT_VOLUNTARY is not set 212# CONFIG_PREEMPT_VOLUNTARY is not set
196# CONFIG_PREEMPT is not set 213# CONFIG_PREEMPT is not set
197# CONFIG_PREEMPT_BKL is not set
198CONFIG_BINFMT_ELF=y 214CONFIG_BINFMT_ELF=y
215CONFIG_COMPAT_BINFMT_ELF=y
199# CONFIG_BINFMT_MISC is not set 216# CONFIG_BINFMT_MISC is not set
200CONFIG_FORCE_MAX_ZONEORDER=13 217CONFIG_FORCE_MAX_ZONEORDER=13
201CONFIG_IOMMU_VMERGE=y 218CONFIG_IOMMU_VMERGE=y
219CONFIG_IOMMU_HELPER=y
202CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 220CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
221CONFIG_ARCH_HAS_WALK_MEMORY=y
222CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
203# CONFIG_KEXEC is not set 223# CONFIG_KEXEC is not set
204# CONFIG_CRASH_DUMP is not set 224# CONFIG_CRASH_DUMP is not set
205CONFIG_IRQ_ALL_CPUS=y 225CONFIG_IRQ_ALL_CPUS=y
@@ -227,7 +247,6 @@ CONFIG_PROC_DEVICETREE=y
227# CONFIG_CMDLINE_BOOL is not set 247# CONFIG_CMDLINE_BOOL is not set
228# CONFIG_PM is not set 248# CONFIG_PM is not set
229CONFIG_SECCOMP=y 249CONFIG_SECCOMP=y
230# CONFIG_WANT_DEVICE_TREE is not set
231CONFIG_ISA_DMA_API=y 250CONFIG_ISA_DMA_API=y
232 251
233# 252#
@@ -263,6 +282,7 @@ CONFIG_XFRM=y
263CONFIG_XFRM_USER=m 282CONFIG_XFRM_USER=m
264CONFIG_XFRM_SUB_POLICY=y 283CONFIG_XFRM_SUB_POLICY=y
265# CONFIG_XFRM_MIGRATE is not set 284# CONFIG_XFRM_MIGRATE is not set
285# CONFIG_XFRM_STATISTICS is not set
266CONFIG_NET_KEY=m 286CONFIG_NET_KEY=m
267# CONFIG_NET_KEY_MIGRATE is not set 287# CONFIG_NET_KEY_MIGRATE is not set
268CONFIG_INET=y 288CONFIG_INET=y
@@ -297,12 +317,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
297# CONFIG_NETWORK_SECMARK is not set 317# CONFIG_NETWORK_SECMARK is not set
298CONFIG_NETFILTER=y 318CONFIG_NETFILTER=y
299# CONFIG_NETFILTER_DEBUG is not set 319# CONFIG_NETFILTER_DEBUG is not set
320CONFIG_NETFILTER_ADVANCED=y
300 321
301# 322#
302# Core Netfilter Configuration 323# Core Netfilter Configuration
303# 324#
304# CONFIG_NETFILTER_NETLINK is not set 325CONFIG_NETFILTER_NETLINK=m
305CONFIG_NF_CONNTRACK_ENABLED=m 326CONFIG_NETFILTER_NETLINK_QUEUE=m
327CONFIG_NETFILTER_NETLINK_LOG=m
306CONFIG_NF_CONNTRACK=m 328CONFIG_NF_CONNTRACK=m
307# CONFIG_NF_CT_ACCT is not set 329# CONFIG_NF_CT_ACCT is not set
308CONFIG_NF_CONNTRACK_MARK=y 330CONFIG_NF_CONNTRACK_MARK=y
@@ -318,6 +340,7 @@ CONFIG_NF_CONNTRACK_IRC=m
318# CONFIG_NF_CONNTRACK_SANE is not set 340# CONFIG_NF_CONNTRACK_SANE is not set
319# CONFIG_NF_CONNTRACK_SIP is not set 341# CONFIG_NF_CONNTRACK_SIP is not set
320CONFIG_NF_CONNTRACK_TFTP=m 342CONFIG_NF_CONNTRACK_TFTP=m
343CONFIG_NF_CT_NETLINK=m
321CONFIG_NETFILTER_XTABLES=m 344CONFIG_NETFILTER_XTABLES=m
322CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 345CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
323CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 346CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
@@ -326,8 +349,10 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
326CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 349CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
327# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set 350# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
328# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set 351# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
352CONFIG_NETFILTER_XT_TARGET_RATEEST=m
329# CONFIG_NETFILTER_XT_TARGET_TRACE is not set 353# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
330# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set 354# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
355CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
331CONFIG_NETFILTER_XT_MATCH_COMMENT=m 356CONFIG_NETFILTER_XT_MATCH_COMMENT=m
332# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set 357# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
333# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set 358# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
@@ -337,14 +362,17 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
337CONFIG_NETFILTER_XT_MATCH_DSCP=m 362CONFIG_NETFILTER_XT_MATCH_DSCP=m
338# CONFIG_NETFILTER_XT_MATCH_ESP is not set 363# CONFIG_NETFILTER_XT_MATCH_ESP is not set
339# CONFIG_NETFILTER_XT_MATCH_HELPER is not set 364# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
365CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
340CONFIG_NETFILTER_XT_MATCH_LENGTH=m 366CONFIG_NETFILTER_XT_MATCH_LENGTH=m
341CONFIG_NETFILTER_XT_MATCH_LIMIT=m 367CONFIG_NETFILTER_XT_MATCH_LIMIT=m
342CONFIG_NETFILTER_XT_MATCH_MAC=m 368CONFIG_NETFILTER_XT_MATCH_MAC=m
343CONFIG_NETFILTER_XT_MATCH_MARK=m 369CONFIG_NETFILTER_XT_MATCH_MARK=m
370CONFIG_NETFILTER_XT_MATCH_OWNER=m
344# CONFIG_NETFILTER_XT_MATCH_POLICY is not set 371# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
345# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set 372# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
346CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 373CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
347# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 374# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
375CONFIG_NETFILTER_XT_MATCH_RATEEST=m
348CONFIG_NETFILTER_XT_MATCH_REALM=m 376CONFIG_NETFILTER_XT_MATCH_REALM=m
349CONFIG_NETFILTER_XT_MATCH_SCTP=m 377CONFIG_NETFILTER_XT_MATCH_SCTP=m
350# CONFIG_NETFILTER_XT_MATCH_STATE is not set 378# CONFIG_NETFILTER_XT_MATCH_STATE is not set
@@ -362,13 +390,10 @@ CONFIG_NF_CONNTRACK_IPV4=m
362CONFIG_NF_CONNTRACK_PROC_COMPAT=y 390CONFIG_NF_CONNTRACK_PROC_COMPAT=y
363CONFIG_IP_NF_QUEUE=m 391CONFIG_IP_NF_QUEUE=m
364CONFIG_IP_NF_IPTABLES=m 392CONFIG_IP_NF_IPTABLES=m
365CONFIG_IP_NF_MATCH_IPRANGE=m
366CONFIG_IP_NF_MATCH_TOS=m
367CONFIG_IP_NF_MATCH_RECENT=m 393CONFIG_IP_NF_MATCH_RECENT=m
368CONFIG_IP_NF_MATCH_ECN=m 394CONFIG_IP_NF_MATCH_ECN=m
369# CONFIG_IP_NF_MATCH_AH is not set 395# CONFIG_IP_NF_MATCH_AH is not set
370CONFIG_IP_NF_MATCH_TTL=m 396CONFIG_IP_NF_MATCH_TTL=m
371CONFIG_IP_NF_MATCH_OWNER=m
372CONFIG_IP_NF_MATCH_ADDRTYPE=m 397CONFIG_IP_NF_MATCH_ADDRTYPE=m
373CONFIG_IP_NF_FILTER=m 398CONFIG_IP_NF_FILTER=m
374CONFIG_IP_NF_TARGET_REJECT=m 399CONFIG_IP_NF_TARGET_REJECT=m
@@ -379,7 +404,6 @@ CONFIG_NF_NAT_NEEDED=y
379CONFIG_IP_NF_TARGET_MASQUERADE=m 404CONFIG_IP_NF_TARGET_MASQUERADE=m
380CONFIG_IP_NF_TARGET_REDIRECT=m 405CONFIG_IP_NF_TARGET_REDIRECT=m
381CONFIG_IP_NF_TARGET_NETMAP=m 406CONFIG_IP_NF_TARGET_NETMAP=m
382CONFIG_IP_NF_TARGET_SAME=m
383# CONFIG_NF_NAT_SNMP_BASIC is not set 407# CONFIG_NF_NAT_SNMP_BASIC is not set
384CONFIG_NF_NAT_FTP=m 408CONFIG_NF_NAT_FTP=m
385CONFIG_NF_NAT_IRC=m 409CONFIG_NF_NAT_IRC=m
@@ -389,7 +413,6 @@ CONFIG_NF_NAT_TFTP=m
389# CONFIG_NF_NAT_H323 is not set 413# CONFIG_NF_NAT_H323 is not set
390# CONFIG_NF_NAT_SIP is not set 414# CONFIG_NF_NAT_SIP is not set
391CONFIG_IP_NF_MANGLE=m 415CONFIG_IP_NF_MANGLE=m
392CONFIG_IP_NF_TARGET_TOS=m
393CONFIG_IP_NF_TARGET_ECN=m 416CONFIG_IP_NF_TARGET_ECN=m
394CONFIG_IP_NF_TARGET_TTL=m 417CONFIG_IP_NF_TARGET_TTL=m
395CONFIG_IP_NF_TARGET_CLUSTERIP=m 418CONFIG_IP_NF_TARGET_CLUSTERIP=m
@@ -425,6 +448,7 @@ CONFIG_NET_CLS_ROUTE=y
425# 448#
426# CONFIG_NET_PKTGEN is not set 449# CONFIG_NET_PKTGEN is not set
427# CONFIG_HAMRADIO is not set 450# CONFIG_HAMRADIO is not set
451# CONFIG_CAN is not set
428# CONFIG_IRDA is not set 452# CONFIG_IRDA is not set
429# CONFIG_BT is not set 453# CONFIG_BT is not set
430# CONFIG_AF_RXRPC is not set 454# CONFIG_AF_RXRPC is not set
@@ -470,7 +494,7 @@ CONFIG_BLK_DEV_NBD=m
470CONFIG_BLK_DEV_RAM=y 494CONFIG_BLK_DEV_RAM=y
471CONFIG_BLK_DEV_RAM_COUNT=16 495CONFIG_BLK_DEV_RAM_COUNT=16
472CONFIG_BLK_DEV_RAM_SIZE=65536 496CONFIG_BLK_DEV_RAM_SIZE=65536
473CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 497# CONFIG_BLK_DEV_XIP is not set
474# CONFIG_CDROM_PKTCDVD is not set 498# CONFIG_CDROM_PKTCDVD is not set
475# CONFIG_ATA_OVER_ETH is not set 499# CONFIG_ATA_OVER_ETH is not set
476CONFIG_MISC_DEVICES=y 500CONFIG_MISC_DEVICES=y
@@ -478,6 +502,8 @@ CONFIG_MISC_DEVICES=y
478# CONFIG_EEPROM_93CX6 is not set 502# CONFIG_EEPROM_93CX6 is not set
479# CONFIG_SGI_IOC4 is not set 503# CONFIG_SGI_IOC4 is not set
480# CONFIG_TIFM_CORE is not set 504# CONFIG_TIFM_CORE is not set
505# CONFIG_ENCLOSURE_SERVICES is not set
506CONFIG_HAVE_IDE=y
481# CONFIG_IDE is not set 507# CONFIG_IDE is not set
482 508
483# 509#
@@ -518,6 +544,7 @@ CONFIG_SCSI_FC_ATTRS=y
518# CONFIG_SCSI_ISCSI_ATTRS is not set 544# CONFIG_SCSI_ISCSI_ATTRS is not set
519CONFIG_SCSI_SAS_ATTRS=m 545CONFIG_SCSI_SAS_ATTRS=m
520CONFIG_SCSI_SAS_LIBSAS=m 546CONFIG_SCSI_SAS_LIBSAS=m
547CONFIG_SCSI_SAS_HOST_SMP=y
521CONFIG_SCSI_SAS_LIBSAS_DEBUG=y 548CONFIG_SCSI_SAS_LIBSAS_DEBUG=y
522CONFIG_SCSI_SRP_ATTRS=m 549CONFIG_SCSI_SRP_ATTRS=m
523CONFIG_SCSI_LOWLEVEL=y 550CONFIG_SCSI_LOWLEVEL=y
@@ -543,6 +570,7 @@ CONFIG_SCSI_LOWLEVEL=y
543CONFIG_SCSI_IBMVSCSI=m 570CONFIG_SCSI_IBMVSCSI=m
544# CONFIG_SCSI_INITIO is not set 571# CONFIG_SCSI_INITIO is not set
545# CONFIG_SCSI_INIA100 is not set 572# CONFIG_SCSI_INIA100 is not set
573# CONFIG_SCSI_MVSAS is not set
546# CONFIG_SCSI_STEX is not set 574# CONFIG_SCSI_STEX is not set
547# CONFIG_SCSI_SYM53C8XX_2 is not set 575# CONFIG_SCSI_SYM53C8XX_2 is not set
548# CONFIG_SCSI_QLOGIC_1280 is not set 576# CONFIG_SCSI_QLOGIC_1280 is not set
@@ -589,7 +617,6 @@ CONFIG_BONDING=m
589# CONFIG_EQUALIZER is not set 617# CONFIG_EQUALIZER is not set
590CONFIG_TUN=m 618CONFIG_TUN=m
591# CONFIG_VETH is not set 619# CONFIG_VETH is not set
592# CONFIG_IP1000 is not set
593# CONFIG_ARCNET is not set 620# CONFIG_ARCNET is not set
594# CONFIG_PHYLIB is not set 621# CONFIG_PHYLIB is not set
595CONFIG_NET_ETHERNET=y 622CONFIG_NET_ETHERNET=y
@@ -618,6 +645,7 @@ CONFIG_E100=y
618# CONFIG_NE2K_PCI is not set 645# CONFIG_NE2K_PCI is not set
619# CONFIG_8139CP is not set 646# CONFIG_8139CP is not set
620# CONFIG_8139TOO is not set 647# CONFIG_8139TOO is not set
648# CONFIG_R6040 is not set
621# CONFIG_SIS900 is not set 649# CONFIG_SIS900 is not set
622# CONFIG_EPIC100 is not set 650# CONFIG_EPIC100 is not set
623# CONFIG_SUNDANCE is not set 651# CONFIG_SUNDANCE is not set
@@ -631,6 +659,9 @@ CONFIG_E1000=m
631# CONFIG_E1000_NAPI is not set 659# CONFIG_E1000_NAPI is not set
632# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 660# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
633# CONFIG_E1000E is not set 661# CONFIG_E1000E is not set
662# CONFIG_E1000E_ENABLED is not set
663# CONFIG_IP1000 is not set
664# CONFIG_IGB is not set
634# CONFIG_NS83820 is not set 665# CONFIG_NS83820 is not set
635# CONFIG_HAMACHI is not set 666# CONFIG_HAMACHI is not set
636# CONFIG_YELLOWFIN is not set 667# CONFIG_YELLOWFIN is not set
@@ -656,6 +687,7 @@ CONFIG_NETDEV_10000=y
656# CONFIG_PASEMI_MAC is not set 687# CONFIG_PASEMI_MAC is not set
657# CONFIG_MLX4_CORE is not set 688# CONFIG_MLX4_CORE is not set
658# CONFIG_TEHUTI is not set 689# CONFIG_TEHUTI is not set
690# CONFIG_BNX2X is not set
659CONFIG_TR=y 691CONFIG_TR=y
660CONFIG_IBMOL=y 692CONFIG_IBMOL=y
661# CONFIG_3C359 is not set 693# CONFIG_3C359 is not set
@@ -683,7 +715,6 @@ CONFIG_PPPOE=m
683# CONFIG_SLIP is not set 715# CONFIG_SLIP is not set
684CONFIG_SLHC=m 716CONFIG_SLHC=m
685# CONFIG_NET_FC is not set 717# CONFIG_NET_FC is not set
686# CONFIG_SHAPER is not set
687CONFIG_NETCONSOLE=y 718CONFIG_NETCONSOLE=y
688# CONFIG_NETCONSOLE_DYNAMIC is not set 719# CONFIG_NETCONSOLE_DYNAMIC is not set
689CONFIG_NETPOLL=y 720CONFIG_NETPOLL=y
@@ -734,6 +765,7 @@ CONFIG_VT_CONSOLE=y
734CONFIG_HW_CONSOLE=y 765CONFIG_HW_CONSOLE=y
735# CONFIG_VT_HW_CONSOLE_BINDING is not set 766# CONFIG_VT_HW_CONSOLE_BINDING is not set
736# CONFIG_SERIAL_NONSTANDARD is not set 767# CONFIG_SERIAL_NONSTANDARD is not set
768# CONFIG_NOZOMI is not set
737 769
738# 770#
739# Serial drivers 771# Serial drivers
@@ -772,6 +804,7 @@ CONFIG_DEVPORT=y
772# CONFIG_W1 is not set 804# CONFIG_W1 is not set
773# CONFIG_POWER_SUPPLY is not set 805# CONFIG_POWER_SUPPLY is not set
774# CONFIG_HWMON is not set 806# CONFIG_HWMON is not set
807# CONFIG_THERMAL is not set
775# CONFIG_WATCHDOG is not set 808# CONFIG_WATCHDOG is not set
776 809
777# 810#
@@ -821,10 +854,12 @@ CONFIG_DUMMY_CONSOLE=y
821# CONFIG_HID_SUPPORT is not set 854# CONFIG_HID_SUPPORT is not set
822# CONFIG_USB_SUPPORT is not set 855# CONFIG_USB_SUPPORT is not set
823# CONFIG_MMC is not set 856# CONFIG_MMC is not set
857# CONFIG_MEMSTICK is not set
824# CONFIG_NEW_LEDS is not set 858# CONFIG_NEW_LEDS is not set
825# CONFIG_INFINIBAND is not set 859# CONFIG_INFINIBAND is not set
826# CONFIG_EDAC is not set 860# CONFIG_EDAC is not set
827# CONFIG_RTC_CLASS is not set 861# CONFIG_RTC_CLASS is not set
862# CONFIG_DMADEVICES is not set
828 863
829# 864#
830# Userspace I/O 865# Userspace I/O
@@ -869,12 +904,10 @@ CONFIG_GFS2_FS=m
869CONFIG_GFS2_FS_LOCKING_NOLOCK=m 904CONFIG_GFS2_FS_LOCKING_NOLOCK=m
870CONFIG_GFS2_FS_LOCKING_DLM=m 905CONFIG_GFS2_FS_LOCKING_DLM=m
871# CONFIG_OCFS2_FS is not set 906# CONFIG_OCFS2_FS is not set
872# CONFIG_MINIX_FS is not set 907CONFIG_DNOTIFY=y
873# CONFIG_ROMFS_FS is not set
874CONFIG_INOTIFY=y 908CONFIG_INOTIFY=y
875CONFIG_INOTIFY_USER=y 909CONFIG_INOTIFY_USER=y
876# CONFIG_QUOTA is not set 910# CONFIG_QUOTA is not set
877CONFIG_DNOTIFY=y
878CONFIG_AUTOFS_FS=m 911CONFIG_AUTOFS_FS=m
879# CONFIG_AUTOFS4_FS is not set 912# CONFIG_AUTOFS4_FS is not set
880# CONFIG_FUSE_FS is not set 913# CONFIG_FUSE_FS is not set
@@ -924,8 +957,10 @@ CONFIG_CONFIGFS_FS=m
924# CONFIG_EFS_FS is not set 957# CONFIG_EFS_FS is not set
925CONFIG_CRAMFS=y 958CONFIG_CRAMFS=y
926# CONFIG_VXFS_FS is not set 959# CONFIG_VXFS_FS is not set
960# CONFIG_MINIX_FS is not set
927# CONFIG_HPFS_FS is not set 961# CONFIG_HPFS_FS is not set
928# CONFIG_QNX4FS_FS is not set 962# CONFIG_QNX4FS_FS is not set
963# CONFIG_ROMFS_FS is not set
929# CONFIG_SYSV_FS is not set 964# CONFIG_SYSV_FS is not set
930# CONFIG_UFS_FS is not set 965# CONFIG_UFS_FS is not set
931CONFIG_NETWORK_FILESYSTEMS=y 966CONFIG_NETWORK_FILESYSTEMS=y
@@ -1009,7 +1044,6 @@ CONFIG_NLS_ISO8859_1=y
1009# CONFIG_NLS_UTF8 is not set 1044# CONFIG_NLS_UTF8 is not set
1010CONFIG_DLM=m 1045CONFIG_DLM=m
1011# CONFIG_DLM_DEBUG is not set 1046# CONFIG_DLM_DEBUG is not set
1012# CONFIG_UCC_SLOW is not set
1013 1047
1014# 1048#
1015# Library routines 1049# Library routines
@@ -1031,10 +1065,6 @@ CONFIG_PLIST=y
1031CONFIG_HAS_IOMEM=y 1065CONFIG_HAS_IOMEM=y
1032CONFIG_HAS_IOPORT=y 1066CONFIG_HAS_IOPORT=y
1033CONFIG_HAS_DMA=y 1067CONFIG_HAS_DMA=y
1034CONFIG_INSTRUMENTATION=y
1035# CONFIG_PROFILING is not set
1036# CONFIG_KPROBES is not set
1037# CONFIG_MARKERS is not set
1038 1068
1039# 1069#
1040# Kernel hacking 1070# Kernel hacking
@@ -1053,6 +1083,7 @@ CONFIG_SCHED_DEBUG=y
1053# CONFIG_SCHEDSTATS is not set 1083# CONFIG_SCHEDSTATS is not set
1054# CONFIG_TIMER_STATS is not set 1084# CONFIG_TIMER_STATS is not set
1055# CONFIG_SLUB_DEBUG_ON is not set 1085# CONFIG_SLUB_DEBUG_ON is not set
1086# CONFIG_SLUB_STATS is not set
1056# CONFIG_DEBUG_RT_MUTEXES is not set 1087# CONFIG_DEBUG_RT_MUTEXES is not set
1057# CONFIG_RT_MUTEX_TESTER is not set 1088# CONFIG_RT_MUTEX_TESTER is not set
1058# CONFIG_DEBUG_SPINLOCK is not set 1089# CONFIG_DEBUG_SPINLOCK is not set
@@ -1065,9 +1096,9 @@ CONFIG_DEBUG_BUGVERBOSE=y
1065# CONFIG_DEBUG_VM is not set 1096# CONFIG_DEBUG_VM is not set
1066# CONFIG_DEBUG_LIST is not set 1097# CONFIG_DEBUG_LIST is not set
1067# CONFIG_DEBUG_SG is not set 1098# CONFIG_DEBUG_SG is not set
1068# CONFIG_FORCED_INLINING is not set
1069# CONFIG_BOOT_PRINTK_DELAY is not set 1099# CONFIG_BOOT_PRINTK_DELAY is not set
1070# CONFIG_RCU_TORTURE_TEST is not set 1100# CONFIG_RCU_TORTURE_TEST is not set
1101# CONFIG_BACKTRACE_SELF_TEST is not set
1071# CONFIG_FAULT_INJECTION is not set 1102# CONFIG_FAULT_INJECTION is not set
1072# CONFIG_SAMPLES is not set 1103# CONFIG_SAMPLES is not set
1073CONFIG_DEBUG_STACKOVERFLOW=y 1104CONFIG_DEBUG_STACKOVERFLOW=y
@@ -1089,6 +1120,7 @@ CONFIG_CRYPTO=y
1089CONFIG_CRYPTO_ALGAPI=y 1120CONFIG_CRYPTO_ALGAPI=y
1090CONFIG_CRYPTO_AEAD=m 1121CONFIG_CRYPTO_AEAD=m
1091CONFIG_CRYPTO_BLKCIPHER=y 1122CONFIG_CRYPTO_BLKCIPHER=y
1123# CONFIG_CRYPTO_SEQIV is not set
1092CONFIG_CRYPTO_HASH=y 1124CONFIG_CRYPTO_HASH=y
1093CONFIG_CRYPTO_MANAGER=y 1125CONFIG_CRYPTO_MANAGER=y
1094CONFIG_CRYPTO_HMAC=y 1126CONFIG_CRYPTO_HMAC=y
@@ -1107,6 +1139,9 @@ CONFIG_CRYPTO_CBC=y
1107CONFIG_CRYPTO_PCBC=m 1139CONFIG_CRYPTO_PCBC=m
1108# CONFIG_CRYPTO_LRW is not set 1140# CONFIG_CRYPTO_LRW is not set
1109# CONFIG_CRYPTO_XTS is not set 1141# CONFIG_CRYPTO_XTS is not set
1142# CONFIG_CRYPTO_CTR is not set
1143# CONFIG_CRYPTO_GCM is not set
1144# CONFIG_CRYPTO_CCM is not set
1110# CONFIG_CRYPTO_CRYPTD is not set 1145# CONFIG_CRYPTO_CRYPTD is not set
1111CONFIG_CRYPTO_DES=y 1146CONFIG_CRYPTO_DES=y
1112# CONFIG_CRYPTO_FCRYPT is not set 1147# CONFIG_CRYPTO_FCRYPT is not set
@@ -1122,11 +1157,13 @@ CONFIG_CRYPTO_ARC4=m
1122CONFIG_CRYPTO_KHAZAD=m 1157CONFIG_CRYPTO_KHAZAD=m
1123CONFIG_CRYPTO_ANUBIS=m 1158CONFIG_CRYPTO_ANUBIS=m
1124CONFIG_CRYPTO_SEED=m 1159CONFIG_CRYPTO_SEED=m
1160# CONFIG_CRYPTO_SALSA20 is not set
1125CONFIG_CRYPTO_DEFLATE=m 1161CONFIG_CRYPTO_DEFLATE=m
1126CONFIG_CRYPTO_MICHAEL_MIC=m 1162CONFIG_CRYPTO_MICHAEL_MIC=m
1127CONFIG_CRYPTO_CRC32C=m 1163CONFIG_CRYPTO_CRC32C=m
1128# CONFIG_CRYPTO_CAMELLIA is not set 1164# CONFIG_CRYPTO_CAMELLIA is not set
1129CONFIG_CRYPTO_TEST=m 1165CONFIG_CRYPTO_TEST=m
1130CONFIG_CRYPTO_AUTHENC=m 1166CONFIG_CRYPTO_AUTHENC=m
1167# CONFIG_CRYPTO_LZO is not set
1131# CONFIG_CRYPTO_HW is not set 1168# CONFIG_CRYPTO_HW is not set
1132# CONFIG_PPC_CLOCK is not set 1169# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/configs/pmac32_defconfig b/arch/powerpc/configs/pmac32_defconfig
index 5416be4419bb..558b0d348d4f 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.24-rc4 3# Linux kernel version: 2.6.25-rc6
4# Thu Dec 6 16:49:05 2007 4# Thu Mar 20 11:05:14 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -29,6 +29,7 @@ CONFIG_GENERIC_TIME=y
29CONFIG_GENERIC_TIME_VSYSCALL=y 29CONFIG_GENERIC_TIME_VSYSCALL=y
30CONFIG_GENERIC_CLOCKEVENTS=y 30CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
32CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
33CONFIG_RWSEM_XCHGADD_ALGORITHM=y 34CONFIG_RWSEM_XCHGADD_ALGORITHM=y
34CONFIG_ARCH_HAS_ILOG2_U32=y 35CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -49,6 +50,9 @@ CONFIG_AUDIT_ARCH=y
49CONFIG_GENERIC_BUG=y 50CONFIG_GENERIC_BUG=y
50CONFIG_SYS_SUPPORTS_APM_EMULATION=y 51CONFIG_SYS_SUPPORTS_APM_EMULATION=y
51# CONFIG_DEFAULT_UIMAGE is not set 52# CONFIG_DEFAULT_UIMAGE is not set
53CONFIG_HIBERNATE_32=y
54CONFIG_ARCH_HIBERNATION_POSSIBLE=y
55CONFIG_ARCH_SUSPEND_POSSIBLE=y
52# CONFIG_PPC_DCR_NATIVE is not set 56# CONFIG_PPC_DCR_NATIVE is not set
53# CONFIG_PPC_DCR_MMIO is not set 57# CONFIG_PPC_DCR_MMIO is not set
54CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 58CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -67,18 +71,22 @@ CONFIG_SYSVIPC_SYSCTL=y
67CONFIG_POSIX_MQUEUE=y 71CONFIG_POSIX_MQUEUE=y
68# CONFIG_BSD_PROCESS_ACCT is not set 72# CONFIG_BSD_PROCESS_ACCT is not set
69# CONFIG_TASKSTATS is not set 73# CONFIG_TASKSTATS is not set
70# CONFIG_USER_NS is not set
71# CONFIG_PID_NS is not set
72# CONFIG_AUDIT is not set 74# CONFIG_AUDIT is not set
73CONFIG_IKCONFIG=y 75CONFIG_IKCONFIG=y
74CONFIG_IKCONFIG_PROC=y 76CONFIG_IKCONFIG_PROC=y
75CONFIG_LOG_BUF_SHIFT=14 77CONFIG_LOG_BUF_SHIFT=14
76# CONFIG_CGROUPS is not set 78# CONFIG_CGROUPS is not set
77CONFIG_FAIR_GROUP_SCHED=y 79# CONFIG_GROUP_SCHED is not set
78CONFIG_FAIR_USER_SCHED=y 80# CONFIG_USER_SCHED is not set
79# CONFIG_FAIR_CGROUP_SCHED is not set 81# CONFIG_CGROUP_SCHED is not set
80CONFIG_SYSFS_DEPRECATED=y 82CONFIG_SYSFS_DEPRECATED=y
83CONFIG_SYSFS_DEPRECATED_V2=y
81# CONFIG_RELAY is not set 84# CONFIG_RELAY is not set
85CONFIG_NAMESPACES=y
86# CONFIG_UTS_NS is not set
87# CONFIG_IPC_NS is not set
88# CONFIG_USER_NS is not set
89# CONFIG_PID_NS is not set
82CONFIG_BLK_DEV_INITRD=y 90CONFIG_BLK_DEV_INITRD=y
83CONFIG_INITRAMFS_SOURCE="" 91CONFIG_INITRAMFS_SOURCE=""
84# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 92# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -92,11 +100,13 @@ CONFIG_HOTPLUG=y
92CONFIG_PRINTK=y 100CONFIG_PRINTK=y
93CONFIG_BUG=y 101CONFIG_BUG=y
94CONFIG_ELF_CORE=y 102CONFIG_ELF_CORE=y
103# CONFIG_COMPAT_BRK is not set
95CONFIG_BASE_FULL=y 104CONFIG_BASE_FULL=y
96CONFIG_FUTEX=y 105CONFIG_FUTEX=y
97CONFIG_ANON_INODES=y 106CONFIG_ANON_INODES=y
98CONFIG_EPOLL=y 107CONFIG_EPOLL=y
99CONFIG_SIGNALFD=y 108CONFIG_SIGNALFD=y
109CONFIG_TIMERFD=y
100CONFIG_EVENTFD=y 110CONFIG_EVENTFD=y
101CONFIG_SHMEM=y 111CONFIG_SHMEM=y
102CONFIG_VM_EVENT_COUNTERS=y 112CONFIG_VM_EVENT_COUNTERS=y
@@ -104,6 +114,15 @@ CONFIG_SLUB_DEBUG=y
104# CONFIG_SLAB is not set 114# CONFIG_SLAB is not set
105CONFIG_SLUB=y 115CONFIG_SLUB=y
106# CONFIG_SLOB is not set 116# CONFIG_SLOB is not set
117CONFIG_PROFILING=y
118# CONFIG_MARKERS is not set
119CONFIG_OPROFILE=y
120CONFIG_HAVE_OPROFILE=y
121# CONFIG_KPROBES is not set
122CONFIG_HAVE_KPROBES=y
123CONFIG_HAVE_KRETPROBES=y
124CONFIG_PROC_PAGE_MONITOR=y
125CONFIG_SLABINFO=y
107CONFIG_RT_MUTEXES=y 126CONFIG_RT_MUTEXES=y
108# CONFIG_TINY_SHMEM is not set 127# CONFIG_TINY_SHMEM is not set
109CONFIG_BASE_SMALL=0 128CONFIG_BASE_SMALL=0
@@ -131,6 +150,7 @@ CONFIG_DEFAULT_AS=y
131# CONFIG_DEFAULT_CFQ is not set 150# CONFIG_DEFAULT_CFQ is not set
132# CONFIG_DEFAULT_NOOP is not set 151# CONFIG_DEFAULT_NOOP is not set
133CONFIG_DEFAULT_IOSCHED="anticipatory" 152CONFIG_DEFAULT_IOSCHED="anticipatory"
153CONFIG_CLASSIC_RCU=y
134 154
135# 155#
136# Platform support 156# Platform support
@@ -141,16 +161,17 @@ CONFIG_PPC_MULTIPLATFORM=y
141# CONFIG_PPC_86xx is not set 161# CONFIG_PPC_86xx is not set
142CONFIG_CLASSIC32=y 162CONFIG_CLASSIC32=y
143# CONFIG_PPC_CHRP is not set 163# CONFIG_PPC_CHRP is not set
164# CONFIG_PPC_MPC512x is not set
165# CONFIG_PPC_MPC5121 is not set
166# CONFIG_MPC5121_ADS is not set
144# CONFIG_PPC_MPC52xx is not set 167# CONFIG_PPC_MPC52xx is not set
145# CONFIG_PPC_MPC5200 is not set
146# CONFIG_PPC_EFIKA is not set
147# CONFIG_PPC_LITE5200 is not set
148CONFIG_PPC_PMAC=y 168CONFIG_PPC_PMAC=y
149# CONFIG_PPC_CELL is not set 169# CONFIG_PPC_CELL is not set
150# CONFIG_PPC_CELL_NATIVE is not set 170# CONFIG_PPC_CELL_NATIVE is not set
151# CONFIG_PQ2ADS is not set 171# CONFIG_PQ2ADS is not set
152# CONFIG_EMBEDDED6xx is not set 172# CONFIG_EMBEDDED6xx is not set
153CONFIG_PPC_NATIVE=y 173CONFIG_PPC_NATIVE=y
174# CONFIG_IPIC is not set
154CONFIG_MPIC=y 175CONFIG_MPIC=y
155# CONFIG_MPIC_WEIRD is not set 176# CONFIG_MPIC_WEIRD is not set
156# CONFIG_PPC_I8259 is not set 177# CONFIG_PPC_I8259 is not set
@@ -181,7 +202,6 @@ CONFIG_CPU_FREQ_GOV_USERSPACE=y
181CONFIG_CPU_FREQ_PMAC=y 202CONFIG_CPU_FREQ_PMAC=y
182CONFIG_PPC601_SYNC_FIX=y 203CONFIG_PPC601_SYNC_FIX=y
183# CONFIG_TAU is not set 204# CONFIG_TAU is not set
184# CONFIG_CPM2 is not set
185# CONFIG_FSL_ULI1575 is not set 205# CONFIG_FSL_ULI1575 is not set
186 206
187# 207#
@@ -197,12 +217,16 @@ CONFIG_HZ_250=y
197# CONFIG_HZ_300 is not set 217# CONFIG_HZ_300 is not set
198# CONFIG_HZ_1000 is not set 218# CONFIG_HZ_1000 is not set
199CONFIG_HZ=250 219CONFIG_HZ=250
220# CONFIG_SCHED_HRTICK is not set
200CONFIG_PREEMPT_NONE=y 221CONFIG_PREEMPT_NONE=y
201# CONFIG_PREEMPT_VOLUNTARY is not set 222# CONFIG_PREEMPT_VOLUNTARY is not set
202# CONFIG_PREEMPT is not set 223# CONFIG_PREEMPT is not set
203CONFIG_BINFMT_ELF=y 224CONFIG_BINFMT_ELF=y
204CONFIG_BINFMT_MISC=m 225CONFIG_BINFMT_MISC=m
226# CONFIG_IOMMU_HELPER is not set
205CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 227CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
228CONFIG_ARCH_HAS_WALK_MEMORY=y
229CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
206# CONFIG_KEXEC is not set 230# CONFIG_KEXEC is not set
207CONFIG_ARCH_FLATMEM_ENABLE=y 231CONFIG_ARCH_FLATMEM_ENABLE=y
208CONFIG_ARCH_POPULATES_NODE_MAP=y 232CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -221,19 +245,19 @@ CONFIG_BOUNCE=y
221CONFIG_VIRT_TO_BUS=y 245CONFIG_VIRT_TO_BUS=y
222CONFIG_PROC_DEVICETREE=y 246CONFIG_PROC_DEVICETREE=y
223# CONFIG_CMDLINE_BOOL is not set 247# CONFIG_CMDLINE_BOOL is not set
248CONFIG_ARCH_WANTS_FREEZER_CONTROL=y
224CONFIG_PM=y 249CONFIG_PM=y
225# CONFIG_PM_LEGACY is not set 250# CONFIG_PM_LEGACY is not set
226CONFIG_PM_DEBUG=y 251CONFIG_PM_DEBUG=y
227# CONFIG_PM_VERBOSE is not set 252# CONFIG_PM_VERBOSE is not set
253CONFIG_CAN_PM_TRACE=y
228CONFIG_PM_SLEEP=y 254CONFIG_PM_SLEEP=y
229CONFIG_SUSPEND_UP_POSSIBLE=y
230CONFIG_SUSPEND=y 255CONFIG_SUSPEND=y
231CONFIG_HIBERNATION_UP_POSSIBLE=y 256CONFIG_SUSPEND_FREEZER=y
232CONFIG_HIBERNATION=y 257CONFIG_HIBERNATION=y
233CONFIG_PM_STD_PARTITION="" 258CONFIG_PM_STD_PARTITION=""
234CONFIG_APM_EMULATION=y 259CONFIG_APM_EMULATION=y
235CONFIG_SECCOMP=y 260CONFIG_SECCOMP=y
236# CONFIG_WANT_DEVICE_TREE is not set
237CONFIG_ISA_DMA_API=y 261CONFIG_ISA_DMA_API=y
238 262
239# 263#
@@ -300,6 +324,7 @@ CONFIG_XFRM=y
300CONFIG_XFRM_USER=y 324CONFIG_XFRM_USER=y
301# CONFIG_XFRM_SUB_POLICY is not set 325# CONFIG_XFRM_SUB_POLICY is not set
302# CONFIG_XFRM_MIGRATE is not set 326# CONFIG_XFRM_MIGRATE is not set
327# CONFIG_XFRM_STATISTICS is not set
303CONFIG_NET_KEY=y 328CONFIG_NET_KEY=y
304# CONFIG_NET_KEY_MIGRATE is not set 329# CONFIG_NET_KEY_MIGRATE is not set
305CONFIG_INET=y 330CONFIG_INET=y
@@ -334,12 +359,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
334# CONFIG_NETWORK_SECMARK is not set 359# CONFIG_NETWORK_SECMARK is not set
335CONFIG_NETFILTER=y 360CONFIG_NETFILTER=y
336# CONFIG_NETFILTER_DEBUG is not set 361# CONFIG_NETFILTER_DEBUG is not set
362CONFIG_NETFILTER_ADVANCED=y
337 363
338# 364#
339# Core Netfilter Configuration 365# Core Netfilter Configuration
340# 366#
341# CONFIG_NETFILTER_NETLINK is not set 367CONFIG_NETFILTER_NETLINK=m
342CONFIG_NF_CONNTRACK_ENABLED=m 368CONFIG_NETFILTER_NETLINK_QUEUE=m
369CONFIG_NETFILTER_NETLINK_LOG=m
343CONFIG_NF_CONNTRACK=m 370CONFIG_NF_CONNTRACK=m
344# CONFIG_NF_CT_ACCT is not set 371# CONFIG_NF_CT_ACCT is not set
345# CONFIG_NF_CONNTRACK_MARK is not set 372# CONFIG_NF_CONNTRACK_MARK is not set
@@ -355,6 +382,7 @@ CONFIG_NF_CONNTRACK_IRC=m
355# CONFIG_NF_CONNTRACK_SANE is not set 382# CONFIG_NF_CONNTRACK_SANE is not set
356# CONFIG_NF_CONNTRACK_SIP is not set 383# CONFIG_NF_CONNTRACK_SIP is not set
357CONFIG_NF_CONNTRACK_TFTP=m 384CONFIG_NF_CONNTRACK_TFTP=m
385CONFIG_NF_CT_NETLINK=m
358CONFIG_NETFILTER_XTABLES=m 386CONFIG_NETFILTER_XTABLES=m
359CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 387CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
360# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set 388# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
@@ -363,8 +391,10 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
363CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 391CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
364CONFIG_NETFILTER_XT_TARGET_NFLOG=m 392CONFIG_NETFILTER_XT_TARGET_NFLOG=m
365CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 393CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
394CONFIG_NETFILTER_XT_TARGET_RATEEST=m
366CONFIG_NETFILTER_XT_TARGET_TRACE=m 395CONFIG_NETFILTER_XT_TARGET_TRACE=m
367CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 396CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
397CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
368CONFIG_NETFILTER_XT_MATCH_COMMENT=m 398CONFIG_NETFILTER_XT_MATCH_COMMENT=m
369# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set 399# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
370CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 400CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -374,14 +404,17 @@ CONFIG_NETFILTER_XT_MATCH_DCCP=m
374CONFIG_NETFILTER_XT_MATCH_DSCP=m 404CONFIG_NETFILTER_XT_MATCH_DSCP=m
375CONFIG_NETFILTER_XT_MATCH_ESP=m 405CONFIG_NETFILTER_XT_MATCH_ESP=m
376CONFIG_NETFILTER_XT_MATCH_HELPER=m 406CONFIG_NETFILTER_XT_MATCH_HELPER=m
407CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
377CONFIG_NETFILTER_XT_MATCH_LENGTH=m 408CONFIG_NETFILTER_XT_MATCH_LENGTH=m
378CONFIG_NETFILTER_XT_MATCH_LIMIT=m 409CONFIG_NETFILTER_XT_MATCH_LIMIT=m
379CONFIG_NETFILTER_XT_MATCH_MAC=m 410CONFIG_NETFILTER_XT_MATCH_MAC=m
380CONFIG_NETFILTER_XT_MATCH_MARK=m 411CONFIG_NETFILTER_XT_MATCH_MARK=m
412CONFIG_NETFILTER_XT_MATCH_OWNER=m
381CONFIG_NETFILTER_XT_MATCH_POLICY=m 413CONFIG_NETFILTER_XT_MATCH_POLICY=m
382CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 414CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
383CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 415CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
384# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 416# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
417CONFIG_NETFILTER_XT_MATCH_RATEEST=m
385CONFIG_NETFILTER_XT_MATCH_REALM=m 418CONFIG_NETFILTER_XT_MATCH_REALM=m
386CONFIG_NETFILTER_XT_MATCH_SCTP=m 419CONFIG_NETFILTER_XT_MATCH_SCTP=m
387# CONFIG_NETFILTER_XT_MATCH_STATE is not set 420# CONFIG_NETFILTER_XT_MATCH_STATE is not set
@@ -399,13 +432,10 @@ CONFIG_NF_CONNTRACK_IPV4=m
399CONFIG_NF_CONNTRACK_PROC_COMPAT=y 432CONFIG_NF_CONNTRACK_PROC_COMPAT=y
400# CONFIG_IP_NF_QUEUE is not set 433# CONFIG_IP_NF_QUEUE is not set
401CONFIG_IP_NF_IPTABLES=m 434CONFIG_IP_NF_IPTABLES=m
402CONFIG_IP_NF_MATCH_IPRANGE=m
403CONFIG_IP_NF_MATCH_TOS=m
404CONFIG_IP_NF_MATCH_RECENT=m 435CONFIG_IP_NF_MATCH_RECENT=m
405CONFIG_IP_NF_MATCH_ECN=m 436CONFIG_IP_NF_MATCH_ECN=m
406CONFIG_IP_NF_MATCH_AH=m 437CONFIG_IP_NF_MATCH_AH=m
407CONFIG_IP_NF_MATCH_TTL=m 438CONFIG_IP_NF_MATCH_TTL=m
408CONFIG_IP_NF_MATCH_OWNER=m
409CONFIG_IP_NF_MATCH_ADDRTYPE=m 439CONFIG_IP_NF_MATCH_ADDRTYPE=m
410CONFIG_IP_NF_FILTER=m 440CONFIG_IP_NF_FILTER=m
411CONFIG_IP_NF_TARGET_REJECT=m 441CONFIG_IP_NF_TARGET_REJECT=m
@@ -416,7 +446,6 @@ CONFIG_NF_NAT_NEEDED=y
416CONFIG_IP_NF_TARGET_MASQUERADE=m 446CONFIG_IP_NF_TARGET_MASQUERADE=m
417CONFIG_IP_NF_TARGET_REDIRECT=m 447CONFIG_IP_NF_TARGET_REDIRECT=m
418CONFIG_IP_NF_TARGET_NETMAP=m 448CONFIG_IP_NF_TARGET_NETMAP=m
419CONFIG_IP_NF_TARGET_SAME=m
420# CONFIG_NF_NAT_SNMP_BASIC is not set 449# CONFIG_NF_NAT_SNMP_BASIC is not set
421CONFIG_NF_NAT_FTP=m 450CONFIG_NF_NAT_FTP=m
422CONFIG_NF_NAT_IRC=m 451CONFIG_NF_NAT_IRC=m
@@ -426,7 +455,6 @@ CONFIG_NF_NAT_TFTP=m
426# CONFIG_NF_NAT_H323 is not set 455# CONFIG_NF_NAT_H323 is not set
427# CONFIG_NF_NAT_SIP is not set 456# CONFIG_NF_NAT_SIP is not set
428CONFIG_IP_NF_MANGLE=m 457CONFIG_IP_NF_MANGLE=m
429CONFIG_IP_NF_TARGET_TOS=m
430CONFIG_IP_NF_TARGET_ECN=m 458CONFIG_IP_NF_TARGET_ECN=m
431CONFIG_IP_NF_TARGET_TTL=m 459CONFIG_IP_NF_TARGET_TTL=m
432# CONFIG_IP_NF_TARGET_CLUSTERIP is not set 460# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
@@ -444,9 +472,9 @@ CONFIG_IP_DCCP_ACKVEC=y
444CONFIG_IP_DCCP_CCID2=m 472CONFIG_IP_DCCP_CCID2=m
445# CONFIG_IP_DCCP_CCID2_DEBUG is not set 473# CONFIG_IP_DCCP_CCID2_DEBUG is not set
446CONFIG_IP_DCCP_CCID3=m 474CONFIG_IP_DCCP_CCID3=m
447CONFIG_IP_DCCP_TFRC_LIB=m
448# CONFIG_IP_DCCP_CCID3_DEBUG is not set 475# CONFIG_IP_DCCP_CCID3_DEBUG is not set
449CONFIG_IP_DCCP_CCID3_RTO=100 476CONFIG_IP_DCCP_CCID3_RTO=100
477CONFIG_IP_DCCP_TFRC_LIB=m
450 478
451# 479#
452# DCCP Kernel Hacking 480# DCCP Kernel Hacking
@@ -474,6 +502,7 @@ CONFIG_NET_SCH_FIFO=y
474# 502#
475# CONFIG_NET_PKTGEN is not set 503# CONFIG_NET_PKTGEN is not set
476# CONFIG_HAMRADIO is not set 504# CONFIG_HAMRADIO is not set
505# CONFIG_CAN is not set
477CONFIG_IRDA=m 506CONFIG_IRDA=m
478 507
479# 508#
@@ -509,15 +538,6 @@ CONFIG_IRTTY_SIR=m
509# CONFIG_KS959_DONGLE is not set 538# CONFIG_KS959_DONGLE is not set
510 539
511# 540#
512# Old SIR device drivers
513#
514# CONFIG_IRPORT_SIR is not set
515
516#
517# Old Serial dongle support
518#
519
520#
521# FIR device drivers 541# FIR device drivers
522# 542#
523# CONFIG_USB_IRDA is not set 543# CONFIG_USB_IRDA is not set
@@ -563,8 +583,26 @@ CONFIG_CFG80211=m
563CONFIG_NL80211=y 583CONFIG_NL80211=y
564CONFIG_WIRELESS_EXT=y 584CONFIG_WIRELESS_EXT=y
565CONFIG_MAC80211=m 585CONFIG_MAC80211=m
566CONFIG_MAC80211_RCSIMPLE=y 586
587#
588# Rate control algorithm selection
589#
590CONFIG_MAC80211_RC_DEFAULT_PID=y
591# CONFIG_MAC80211_RC_DEFAULT_SIMPLE is not set
592# CONFIG_MAC80211_RC_DEFAULT_NONE is not set
593
594#
595# Selecting 'y' for an algorithm will
596#
597
598#
599# build the algorithm into mac80211.
600#
601CONFIG_MAC80211_RC_DEFAULT="pid"
602CONFIG_MAC80211_RC_PID=y
603# CONFIG_MAC80211_RC_SIMPLE is not set
567CONFIG_MAC80211_LEDS=y 604CONFIG_MAC80211_LEDS=y
605# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set
568# CONFIG_MAC80211_DEBUG is not set 606# CONFIG_MAC80211_DEBUG is not set
569CONFIG_IEEE80211=m 607CONFIG_IEEE80211=m
570# CONFIG_IEEE80211_DEBUG is not set 608# CONFIG_IEEE80211_DEBUG is not set
@@ -610,7 +648,7 @@ CONFIG_BLK_DEV_UB=m
610CONFIG_BLK_DEV_RAM=y 648CONFIG_BLK_DEV_RAM=y
611CONFIG_BLK_DEV_RAM_COUNT=16 649CONFIG_BLK_DEV_RAM_COUNT=16
612CONFIG_BLK_DEV_RAM_SIZE=4096 650CONFIG_BLK_DEV_RAM_SIZE=4096
613CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 651# CONFIG_BLK_DEV_XIP is not set
614# CONFIG_CDROM_PKTCDVD is not set 652# CONFIG_CDROM_PKTCDVD is not set
615# CONFIG_ATA_OVER_ETH is not set 653# CONFIG_ATA_OVER_ETH is not set
616CONFIG_MISC_DEVICES=y 654CONFIG_MISC_DEVICES=y
@@ -618,11 +656,13 @@ CONFIG_MISC_DEVICES=y
618# CONFIG_EEPROM_93CX6 is not set 656# CONFIG_EEPROM_93CX6 is not set
619# CONFIG_SGI_IOC4 is not set 657# CONFIG_SGI_IOC4 is not set
620# CONFIG_TIFM_CORE is not set 658# CONFIG_TIFM_CORE is not set
659# CONFIG_ENCLOSURE_SERVICES is not set
660CONFIG_HAVE_IDE=y
621CONFIG_IDE=y 661CONFIG_IDE=y
622CONFIG_BLK_DEV_IDE=y 662CONFIG_BLK_DEV_IDE=y
623 663
624# 664#
625# Please see Documentation/ide.txt for help/info on IDE drives 665# Please see Documentation/ide/ide.txt for help/info on IDE drives
626# 666#
627# CONFIG_BLK_DEV_IDE_SATA is not set 667# CONFIG_BLK_DEV_IDE_SATA is not set
628CONFIG_BLK_DEV_IDEDISK=y 668CONFIG_BLK_DEV_IDEDISK=y
@@ -630,6 +670,7 @@ CONFIG_BLK_DEV_IDEDISK=y
630CONFIG_BLK_DEV_IDECS=m 670CONFIG_BLK_DEV_IDECS=m
631# CONFIG_BLK_DEV_DELKIN is not set 671# CONFIG_BLK_DEV_DELKIN is not set
632CONFIG_BLK_DEV_IDECD=y 672CONFIG_BLK_DEV_IDECD=y
673CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
633# CONFIG_BLK_DEV_IDETAPE is not set 674# CONFIG_BLK_DEV_IDETAPE is not set
634CONFIG_BLK_DEV_IDEFLOPPY=y 675CONFIG_BLK_DEV_IDEFLOPPY=y
635CONFIG_BLK_DEV_IDESCSI=y 676CONFIG_BLK_DEV_IDESCSI=y
@@ -641,12 +682,12 @@ CONFIG_IDE_PROC_FS=y
641# 682#
642# CONFIG_IDE_GENERIC is not set 683# CONFIG_IDE_GENERIC is not set
643# CONFIG_BLK_DEV_PLATFORM is not set 684# CONFIG_BLK_DEV_PLATFORM is not set
685CONFIG_BLK_DEV_IDEDMA_SFF=y
644 686
645# 687#
646# PCI IDE chipsets support 688# PCI IDE chipsets support
647# 689#
648CONFIG_BLK_DEV_IDEPCI=y 690CONFIG_BLK_DEV_IDEPCI=y
649CONFIG_IDEPCI_SHARE_IRQ=y
650CONFIG_IDEPCI_PCIBUS_ORDER=y 691CONFIG_IDEPCI_PCIBUS_ORDER=y
651# CONFIG_BLK_DEV_OFFBOARD is not set 692# CONFIG_BLK_DEV_OFFBOARD is not set
652CONFIG_BLK_DEV_GENERIC=y 693CONFIG_BLK_DEV_GENERIC=y
@@ -680,7 +721,6 @@ CONFIG_BLK_DEV_SL82C105=y
680CONFIG_BLK_DEV_IDE_PMAC=y 721CONFIG_BLK_DEV_IDE_PMAC=y
681CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y 722CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
682CONFIG_BLK_DEV_IDEDMA_PMAC=y 723CONFIG_BLK_DEV_IDEDMA_PMAC=y
683# CONFIG_IDE_ARM is not set
684CONFIG_BLK_DEV_IDEDMA=y 724CONFIG_BLK_DEV_IDEDMA=y
685CONFIG_IDE_ARCH_OBSOLETE_INIT=y 725CONFIG_IDE_ARCH_OBSOLETE_INIT=y
686# CONFIG_BLK_DEV_HD is not set 726# CONFIG_BLK_DEV_HD is not set
@@ -754,6 +794,7 @@ CONFIG_SCSI_AIC7XXX_OLD=m
754# CONFIG_SCSI_IPS is not set 794# CONFIG_SCSI_IPS is not set
755# CONFIG_SCSI_INITIO is not set 795# CONFIG_SCSI_INITIO is not set
756# CONFIG_SCSI_INIA100 is not set 796# CONFIG_SCSI_INIA100 is not set
797# CONFIG_SCSI_MVSAS is not set
757# CONFIG_SCSI_STEX is not set 798# CONFIG_SCSI_STEX is not set
758CONFIG_SCSI_SYM53C8XX_2=y 799CONFIG_SCSI_SYM53C8XX_2=y
759CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 800CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
@@ -848,7 +889,6 @@ CONFIG_DUMMY=m
848# CONFIG_EQUALIZER is not set 889# CONFIG_EQUALIZER is not set
849CONFIG_TUN=m 890CONFIG_TUN=m
850# CONFIG_VETH is not set 891# CONFIG_VETH is not set
851# CONFIG_IP1000 is not set
852# CONFIG_ARCNET is not set 892# CONFIG_ARCNET is not set
853# CONFIG_PHYLIB is not set 893# CONFIG_PHYLIB is not set
854CONFIG_NET_ETHERNET=y 894CONFIG_NET_ETHERNET=y
@@ -880,6 +920,7 @@ CONFIG_PCNET32=y
880# CONFIG_NE2K_PCI is not set 920# CONFIG_NE2K_PCI is not set
881# CONFIG_8139CP is not set 921# CONFIG_8139CP is not set
882# CONFIG_8139TOO is not set 922# CONFIG_8139TOO is not set
923# CONFIG_R6040 is not set
883# CONFIG_SIS900 is not set 924# CONFIG_SIS900 is not set
884# CONFIG_EPIC100 is not set 925# CONFIG_EPIC100 is not set
885# CONFIG_SUNDANCE is not set 926# CONFIG_SUNDANCE is not set
@@ -891,6 +932,9 @@ CONFIG_NETDEV_1000=y
891# CONFIG_DL2K is not set 932# CONFIG_DL2K is not set
892# CONFIG_E1000 is not set 933# CONFIG_E1000 is not set
893# CONFIG_E1000E is not set 934# CONFIG_E1000E is not set
935# CONFIG_E1000E_ENABLED is not set
936# CONFIG_IP1000 is not set
937# CONFIG_IGB is not set
894# CONFIG_NS83820 is not set 938# CONFIG_NS83820 is not set
895# CONFIG_HAMACHI is not set 939# CONFIG_HAMACHI is not set
896# CONFIG_YELLOWFIN is not set 940# CONFIG_YELLOWFIN is not set
@@ -916,6 +960,7 @@ CONFIG_NETDEV_10000=y
916# CONFIG_NIU is not set 960# CONFIG_NIU is not set
917# CONFIG_MLX4_CORE is not set 961# CONFIG_MLX4_CORE is not set
918# CONFIG_TEHUTI is not set 962# CONFIG_TEHUTI is not set
963# CONFIG_BNX2X is not set
919# CONFIG_TR is not set 964# CONFIG_TR is not set
920 965
921# 966#
@@ -941,12 +986,16 @@ CONFIG_PCMCIA_HERMES=m
941# CONFIG_PCMCIA_WL3501 is not set 986# CONFIG_PCMCIA_WL3501 is not set
942CONFIG_PRISM54=m 987CONFIG_PRISM54=m
943# CONFIG_USB_ZD1201 is not set 988# CONFIG_USB_ZD1201 is not set
989# CONFIG_USB_NET_RNDIS_WLAN is not set
990# CONFIG_RTL8180 is not set
944# CONFIG_RTL8187 is not set 991# CONFIG_RTL8187 is not set
945# CONFIG_ADM8211 is not set 992# CONFIG_ADM8211 is not set
946CONFIG_P54_COMMON=m 993CONFIG_P54_COMMON=m
947# CONFIG_P54_USB is not set 994# CONFIG_P54_USB is not set
948# CONFIG_P54_PCI is not set 995# CONFIG_P54_PCI is not set
949# CONFIG_IWLWIFI is not set 996# CONFIG_ATH5K is not set
997# CONFIG_IWL4965 is not set
998# CONFIG_IWL3945 is not set
950# CONFIG_HOSTAP is not set 999# CONFIG_HOSTAP is not set
951CONFIG_B43=m 1000CONFIG_B43=m
952CONFIG_B43_PCI_AUTOSELECT=y 1001CONFIG_B43_PCI_AUTOSELECT=y
@@ -954,20 +1003,17 @@ CONFIG_B43_PCICORE_AUTOSELECT=y
954# CONFIG_B43_PCMCIA is not set 1003# CONFIG_B43_PCMCIA is not set
955CONFIG_B43_LEDS=y 1004CONFIG_B43_LEDS=y
956# CONFIG_B43_DEBUG is not set 1005# CONFIG_B43_DEBUG is not set
957CONFIG_B43_DMA=y
958CONFIG_B43_PIO=y
959CONFIG_B43_DMA_AND_PIO_MODE=y
960# CONFIG_B43_DMA_MODE is not set
961# CONFIG_B43_PIO_MODE is not set
962CONFIG_B43LEGACY=m 1006CONFIG_B43LEGACY=m
963CONFIG_B43LEGACY_PCI_AUTOSELECT=y 1007CONFIG_B43LEGACY_PCI_AUTOSELECT=y
964CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y 1008CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
1009CONFIG_B43LEGACY_LEDS=y
965CONFIG_B43LEGACY_DEBUG=y 1010CONFIG_B43LEGACY_DEBUG=y
966CONFIG_B43LEGACY_DMA=y 1011CONFIG_B43LEGACY_DMA=y
967CONFIG_B43LEGACY_PIO=y 1012CONFIG_B43LEGACY_PIO=y
968CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y 1013CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
969# CONFIG_B43LEGACY_DMA_MODE is not set 1014# CONFIG_B43LEGACY_DMA_MODE is not set
970# CONFIG_B43LEGACY_PIO_MODE is not set 1015# CONFIG_B43LEGACY_PIO_MODE is not set
1016# CONFIG_ZD1211RW is not set
971# CONFIG_RT2X00 is not set 1017# CONFIG_RT2X00 is not set
972 1018
973# 1019#
@@ -1005,7 +1051,6 @@ CONFIG_PPP_BSDCOMP=m
1005# CONFIG_SLIP is not set 1051# CONFIG_SLIP is not set
1006CONFIG_SLHC=y 1052CONFIG_SLHC=y
1007# CONFIG_NET_FC is not set 1053# CONFIG_NET_FC is not set
1008# CONFIG_SHAPER is not set
1009# CONFIG_NETCONSOLE is not set 1054# CONFIG_NETCONSOLE is not set
1010# CONFIG_NETPOLL is not set 1055# CONFIG_NETPOLL is not set
1011# CONFIG_NET_POLL_CONTROLLER is not set 1056# CONFIG_NET_POLL_CONTROLLER is not set
@@ -1068,6 +1113,7 @@ CONFIG_VT_CONSOLE=y
1068CONFIG_HW_CONSOLE=y 1113CONFIG_HW_CONSOLE=y
1069# CONFIG_VT_HW_CONSOLE_BINDING is not set 1114# CONFIG_VT_HW_CONSOLE_BINDING is not set
1070# CONFIG_SERIAL_NONSTANDARD is not set 1115# CONFIG_SERIAL_NONSTANDARD is not set
1116# CONFIG_NOZOMI is not set
1071 1117
1072# 1118#
1073# Serial drivers 1119# Serial drivers
@@ -1105,6 +1151,7 @@ CONFIG_GEN_RTC=y
1105# CONFIG_SYNCLINK_CS is not set 1151# CONFIG_SYNCLINK_CS is not set
1106# CONFIG_CARDMAN_4000 is not set 1152# CONFIG_CARDMAN_4000 is not set
1107# CONFIG_CARDMAN_4040 is not set 1153# CONFIG_CARDMAN_4040 is not set
1154# CONFIG_IPWIRELESS is not set
1108# CONFIG_RAW_DRIVER is not set 1155# CONFIG_RAW_DRIVER is not set
1109# CONFIG_TCG_TPM is not set 1156# CONFIG_TCG_TPM is not set
1110CONFIG_DEVPORT=y 1157CONFIG_DEVPORT=y
@@ -1151,14 +1198,12 @@ CONFIG_I2C_POWERMAC=y
1151# 1198#
1152# Miscellaneous I2C Chip support 1199# Miscellaneous I2C Chip support
1153# 1200#
1154# CONFIG_SENSORS_DS1337 is not set
1155# CONFIG_SENSORS_DS1374 is not set
1156# CONFIG_DS1682 is not set 1201# CONFIG_DS1682 is not set
1157# CONFIG_SENSORS_EEPROM is not set 1202# CONFIG_SENSORS_EEPROM is not set
1158# CONFIG_SENSORS_PCF8574 is not set 1203# CONFIG_SENSORS_PCF8574 is not set
1159# CONFIG_SENSORS_PCA9539 is not set 1204# CONFIG_PCF8575 is not set
1160# CONFIG_SENSORS_PCF8591 is not set 1205# CONFIG_SENSORS_PCF8591 is not set
1161# CONFIG_SENSORS_M41T00 is not set 1206# CONFIG_TPS65010 is not set
1162# CONFIG_SENSORS_MAX6875 is not set 1207# CONFIG_SENSORS_MAX6875 is not set
1163# CONFIG_SENSORS_TSL2550 is not set 1208# CONFIG_SENSORS_TSL2550 is not set
1164# CONFIG_I2C_DEBUG_CORE is not set 1209# CONFIG_I2C_DEBUG_CORE is not set
@@ -1179,6 +1224,7 @@ CONFIG_APM_POWER=y
1179# CONFIG_BATTERY_DS2760 is not set 1224# CONFIG_BATTERY_DS2760 is not set
1180CONFIG_BATTERY_PMU=y 1225CONFIG_BATTERY_PMU=y
1181# CONFIG_HWMON is not set 1226# CONFIG_HWMON is not set
1227# CONFIG_THERMAL is not set
1182# CONFIG_WATCHDOG is not set 1228# CONFIG_WATCHDOG is not set
1183 1229
1184# 1230#
@@ -1188,6 +1234,7 @@ CONFIG_SSB_POSSIBLE=y
1188CONFIG_SSB=m 1234CONFIG_SSB=m
1189CONFIG_SSB_PCIHOST_POSSIBLE=y 1235CONFIG_SSB_PCIHOST_POSSIBLE=y
1190CONFIG_SSB_PCIHOST=y 1236CONFIG_SSB_PCIHOST=y
1237CONFIG_SSB_B43_PCI_BRIDGE=y
1191CONFIG_SSB_PCMCIAHOST_POSSIBLE=y 1238CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
1192# CONFIG_SSB_PCMCIAHOST is not set 1239# CONFIG_SSB_PCMCIAHOST is not set
1193# CONFIG_SSB_DEBUG is not set 1240# CONFIG_SSB_DEBUG is not set
@@ -1372,6 +1419,7 @@ CONFIG_SND_DUMMY=m
1372# CONFIG_SND_BT87X is not set 1419# CONFIG_SND_BT87X is not set
1373# CONFIG_SND_CA0106 is not set 1420# CONFIG_SND_CA0106 is not set
1374# CONFIG_SND_CMIPCI is not set 1421# CONFIG_SND_CMIPCI is not set
1422# CONFIG_SND_OXYGEN is not set
1375# CONFIG_SND_CS4281 is not set 1423# CONFIG_SND_CS4281 is not set
1376# CONFIG_SND_CS46XX is not set 1424# CONFIG_SND_CS46XX is not set
1377# CONFIG_SND_CS5530 is not set 1425# CONFIG_SND_CS5530 is not set
@@ -1397,6 +1445,7 @@ CONFIG_SND_DUMMY=m
1397# CONFIG_SND_HDA_INTEL is not set 1445# CONFIG_SND_HDA_INTEL is not set
1398# CONFIG_SND_HDSP is not set 1446# CONFIG_SND_HDSP is not set
1399# CONFIG_SND_HDSPM is not set 1447# CONFIG_SND_HDSPM is not set
1448# CONFIG_SND_HIFIER is not set
1400# CONFIG_SND_ICE1712 is not set 1449# CONFIG_SND_ICE1712 is not set
1401# CONFIG_SND_ICE1724 is not set 1450# CONFIG_SND_ICE1724 is not set
1402# CONFIG_SND_INTEL8X0 is not set 1451# CONFIG_SND_INTEL8X0 is not set
@@ -1414,6 +1463,7 @@ CONFIG_SND_DUMMY=m
1414# CONFIG_SND_TRIDENT is not set 1463# CONFIG_SND_TRIDENT is not set
1415# CONFIG_SND_VIA82XX is not set 1464# CONFIG_SND_VIA82XX is not set
1416# CONFIG_SND_VIA82XX_MODEM is not set 1465# CONFIG_SND_VIA82XX_MODEM is not set
1466# CONFIG_SND_VIRTUOSO is not set
1417# CONFIG_SND_VX222 is not set 1467# CONFIG_SND_VX222 is not set
1418# CONFIG_SND_YMFPCI is not set 1468# CONFIG_SND_YMFPCI is not set
1419 1469
@@ -1461,6 +1511,10 @@ CONFIG_SND_USB_AUDIO=m
1461# 1511#
1462 1512
1463# 1513#
1514# ALSA SoC audio for Freescale SOCs
1515#
1516
1517#
1464# Open Sound System 1518# Open Sound System
1465# 1519#
1466# CONFIG_SOUND_PRIME is not set 1520# CONFIG_SOUND_PRIME is not set
@@ -1482,6 +1536,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y
1482CONFIG_USB_ARCH_HAS_EHCI=y 1536CONFIG_USB_ARCH_HAS_EHCI=y
1483CONFIG_USB=y 1537CONFIG_USB=y
1484# CONFIG_USB_DEBUG is not set 1538# CONFIG_USB_DEBUG is not set
1539# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1485 1540
1486# 1541#
1487# Miscellaneous USB options 1542# Miscellaneous USB options
@@ -1497,9 +1552,9 @@ CONFIG_USB_DYNAMIC_MINORS=y
1497# USB Host Controller Drivers 1552# USB Host Controller Drivers
1498# 1553#
1499CONFIG_USB_EHCI_HCD=m 1554CONFIG_USB_EHCI_HCD=m
1500CONFIG_USB_EHCI_SPLIT_ISO=y
1501CONFIG_USB_EHCI_ROOT_HUB_TT=y 1555CONFIG_USB_EHCI_ROOT_HUB_TT=y
1502# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1556# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1557# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1503# CONFIG_USB_ISP116X_HCD is not set 1558# CONFIG_USB_ISP116X_HCD is not set
1504CONFIG_USB_OHCI_HCD=y 1559CONFIG_USB_OHCI_HCD=y
1505# CONFIG_USB_OHCI_HCD_PPC_OF is not set 1560# CONFIG_USB_OHCI_HCD_PPC_OF is not set
@@ -1547,11 +1602,8 @@ CONFIG_USB_MON=y
1547# 1602#
1548# USB port drivers 1603# USB port drivers
1549# 1604#
1550
1551#
1552# USB Serial Converter support
1553#
1554CONFIG_USB_SERIAL=m 1605CONFIG_USB_SERIAL=m
1606CONFIG_USB_EZUSB=y
1555# CONFIG_USB_SERIAL_GENERIC is not set 1607# CONFIG_USB_SERIAL_GENERIC is not set
1556# CONFIG_USB_SERIAL_AIRCABLE is not set 1608# CONFIG_USB_SERIAL_AIRCABLE is not set
1557# CONFIG_USB_SERIAL_AIRPRIME is not set 1609# CONFIG_USB_SERIAL_AIRPRIME is not set
@@ -1572,6 +1624,7 @@ CONFIG_USB_SERIAL_IPAQ=m
1572# CONFIG_USB_SERIAL_EDGEPORT_TI is not set 1624# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
1573# CONFIG_USB_SERIAL_GARMIN is not set 1625# CONFIG_USB_SERIAL_GARMIN is not set
1574# CONFIG_USB_SERIAL_IPW is not set 1626# CONFIG_USB_SERIAL_IPW is not set
1627# CONFIG_USB_SERIAL_IUU is not set
1575CONFIG_USB_SERIAL_KEYSPAN_PDA=m 1628CONFIG_USB_SERIAL_KEYSPAN_PDA=m
1576CONFIG_USB_SERIAL_KEYSPAN=m 1629CONFIG_USB_SERIAL_KEYSPAN=m
1577CONFIG_USB_SERIAL_KEYSPAN_MPR=y 1630CONFIG_USB_SERIAL_KEYSPAN_MPR=y
@@ -1603,7 +1656,6 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
1603# CONFIG_USB_SERIAL_OPTION is not set 1656# CONFIG_USB_SERIAL_OPTION is not set
1604# CONFIG_USB_SERIAL_OMNINET is not set 1657# CONFIG_USB_SERIAL_OMNINET is not set
1605# CONFIG_USB_SERIAL_DEBUG is not set 1658# CONFIG_USB_SERIAL_DEBUG is not set
1606CONFIG_USB_EZUSB=y
1607 1659
1608# 1660#
1609# USB Miscellaneous drivers 1661# USB Miscellaneous drivers
@@ -1628,16 +1680,9 @@ CONFIG_USB_APPLEDISPLAY=m
1628# CONFIG_USB_TRANCEVIBRATOR is not set 1680# CONFIG_USB_TRANCEVIBRATOR is not set
1629# CONFIG_USB_IOWARRIOR is not set 1681# CONFIG_USB_IOWARRIOR is not set
1630# CONFIG_USB_TEST is not set 1682# CONFIG_USB_TEST is not set
1631
1632#
1633# USB DSL modem support
1634#
1635
1636#
1637# USB Gadget Support
1638#
1639# CONFIG_USB_GADGET is not set 1683# CONFIG_USB_GADGET is not set
1640# CONFIG_MMC is not set 1684# CONFIG_MMC is not set
1685# CONFIG_MEMSTICK is not set
1641CONFIG_NEW_LEDS=y 1686CONFIG_NEW_LEDS=y
1642CONFIG_LEDS_CLASS=y 1687CONFIG_LEDS_CLASS=y
1643 1688
@@ -1655,6 +1700,7 @@ CONFIG_LEDS_TRIGGER_IDE_DISK=y
1655# CONFIG_INFINIBAND is not set 1700# CONFIG_INFINIBAND is not set
1656# CONFIG_EDAC is not set 1701# CONFIG_EDAC is not set
1657# CONFIG_RTC_CLASS is not set 1702# CONFIG_RTC_CLASS is not set
1703# CONFIG_DMADEVICES is not set
1658 1704
1659# 1705#
1660# Userspace I/O 1706# Userspace I/O
@@ -1680,12 +1726,10 @@ CONFIG_FS_POSIX_ACL=y
1680# CONFIG_XFS_FS is not set 1726# CONFIG_XFS_FS is not set
1681# CONFIG_GFS2_FS is not set 1727# CONFIG_GFS2_FS is not set
1682# CONFIG_OCFS2_FS is not set 1728# CONFIG_OCFS2_FS is not set
1683# CONFIG_MINIX_FS is not set 1729CONFIG_DNOTIFY=y
1684# CONFIG_ROMFS_FS is not set
1685CONFIG_INOTIFY=y 1730CONFIG_INOTIFY=y
1686CONFIG_INOTIFY_USER=y 1731CONFIG_INOTIFY_USER=y
1687# CONFIG_QUOTA is not set 1732# CONFIG_QUOTA is not set
1688CONFIG_DNOTIFY=y
1689# CONFIG_AUTOFS_FS is not set 1733# CONFIG_AUTOFS_FS is not set
1690CONFIG_AUTOFS4_FS=m 1734CONFIG_AUTOFS4_FS=m
1691CONFIG_FUSE_FS=m 1735CONFIG_FUSE_FS=m
@@ -1733,8 +1777,10 @@ CONFIG_HFSPLUS_FS=m
1733# CONFIG_EFS_FS is not set 1777# CONFIG_EFS_FS is not set
1734# CONFIG_CRAMFS is not set 1778# CONFIG_CRAMFS is not set
1735# CONFIG_VXFS_FS is not set 1779# CONFIG_VXFS_FS is not set
1780# CONFIG_MINIX_FS is not set
1736# CONFIG_HPFS_FS is not set 1781# CONFIG_HPFS_FS is not set
1737# CONFIG_QNX4FS_FS is not set 1782# CONFIG_QNX4FS_FS is not set
1783# CONFIG_ROMFS_FS is not set
1738# CONFIG_SYSV_FS is not set 1784# CONFIG_SYSV_FS is not set
1739# CONFIG_UFS_FS is not set 1785# CONFIG_UFS_FS is not set
1740CONFIG_NETWORK_FILESYSTEMS=y 1786CONFIG_NETWORK_FILESYSTEMS=y
@@ -1828,7 +1874,6 @@ CONFIG_NLS_ISO8859_1=m
1828# CONFIG_NLS_KOI8_U is not set 1874# CONFIG_NLS_KOI8_U is not set
1829CONFIG_NLS_UTF8=m 1875CONFIG_NLS_UTF8=m
1830# CONFIG_DLM is not set 1876# CONFIG_DLM is not set
1831# CONFIG_UCC_SLOW is not set
1832 1877
1833# 1878#
1834# Library routines 1879# Library routines
@@ -1850,11 +1895,6 @@ CONFIG_PLIST=y
1850CONFIG_HAS_IOMEM=y 1895CONFIG_HAS_IOMEM=y
1851CONFIG_HAS_IOPORT=y 1896CONFIG_HAS_IOPORT=y
1852CONFIG_HAS_DMA=y 1897CONFIG_HAS_DMA=y
1853CONFIG_INSTRUMENTATION=y
1854CONFIG_PROFILING=y
1855CONFIG_OPROFILE=y
1856# CONFIG_KPROBES is not set
1857# CONFIG_MARKERS is not set
1858 1898
1859# 1899#
1860# Kernel hacking 1900# Kernel hacking
@@ -1873,6 +1913,7 @@ CONFIG_SCHED_DEBUG=y
1873# CONFIG_SCHEDSTATS is not set 1913# CONFIG_SCHEDSTATS is not set
1874# CONFIG_TIMER_STATS is not set 1914# CONFIG_TIMER_STATS is not set
1875# CONFIG_SLUB_DEBUG_ON is not set 1915# CONFIG_SLUB_DEBUG_ON is not set
1916# CONFIG_SLUB_STATS is not set
1876# CONFIG_DEBUG_RT_MUTEXES is not set 1917# CONFIG_DEBUG_RT_MUTEXES is not set
1877# CONFIG_RT_MUTEX_TESTER is not set 1918# CONFIG_RT_MUTEX_TESTER is not set
1878# CONFIG_DEBUG_SPINLOCK is not set 1919# CONFIG_DEBUG_SPINLOCK is not set
@@ -1885,9 +1926,9 @@ CONFIG_DEBUG_BUGVERBOSE=y
1885# CONFIG_DEBUG_VM is not set 1926# CONFIG_DEBUG_VM is not set
1886# CONFIG_DEBUG_LIST is not set 1927# CONFIG_DEBUG_LIST is not set
1887# CONFIG_DEBUG_SG is not set 1928# CONFIG_DEBUG_SG is not set
1888# CONFIG_FORCED_INLINING is not set
1889# CONFIG_BOOT_PRINTK_DELAY is not set 1929# CONFIG_BOOT_PRINTK_DELAY is not set
1890# CONFIG_RCU_TORTURE_TEST is not set 1930# CONFIG_RCU_TORTURE_TEST is not set
1931# CONFIG_BACKTRACE_SELF_TEST is not set
1891# CONFIG_FAULT_INJECTION is not set 1932# CONFIG_FAULT_INJECTION is not set
1892# CONFIG_SAMPLES is not set 1933# CONFIG_SAMPLES is not set
1893# CONFIG_DEBUG_STACKOVERFLOW is not set 1934# CONFIG_DEBUG_STACKOVERFLOW is not set
@@ -1908,7 +1949,9 @@ CONFIG_BOOTX_TEXT=y
1908# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1949# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1909CONFIG_CRYPTO=y 1950CONFIG_CRYPTO=y
1910CONFIG_CRYPTO_ALGAPI=y 1951CONFIG_CRYPTO_ALGAPI=y
1952CONFIG_CRYPTO_AEAD=y
1911CONFIG_CRYPTO_BLKCIPHER=y 1953CONFIG_CRYPTO_BLKCIPHER=y
1954# CONFIG_CRYPTO_SEQIV is not set
1912CONFIG_CRYPTO_HASH=y 1955CONFIG_CRYPTO_HASH=y
1913CONFIG_CRYPTO_MANAGER=y 1956CONFIG_CRYPTO_MANAGER=y
1914CONFIG_CRYPTO_HMAC=y 1957CONFIG_CRYPTO_HMAC=y
@@ -1927,6 +1970,9 @@ CONFIG_CRYPTO_CBC=y
1927CONFIG_CRYPTO_PCBC=m 1970CONFIG_CRYPTO_PCBC=m
1928# CONFIG_CRYPTO_LRW is not set 1971# CONFIG_CRYPTO_LRW is not set
1929# CONFIG_CRYPTO_XTS is not set 1972# CONFIG_CRYPTO_XTS is not set
1973# CONFIG_CRYPTO_CTR is not set
1974# CONFIG_CRYPTO_GCM is not set
1975# CONFIG_CRYPTO_CCM is not set
1930# CONFIG_CRYPTO_CRYPTD is not set 1976# CONFIG_CRYPTO_CRYPTD is not set
1931CONFIG_CRYPTO_DES=y 1977CONFIG_CRYPTO_DES=y
1932# CONFIG_CRYPTO_FCRYPT is not set 1978# CONFIG_CRYPTO_FCRYPT is not set
@@ -1942,11 +1988,14 @@ CONFIG_CRYPTO_ARC4=m
1942CONFIG_CRYPTO_KHAZAD=m 1988CONFIG_CRYPTO_KHAZAD=m
1943CONFIG_CRYPTO_ANUBIS=m 1989CONFIG_CRYPTO_ANUBIS=m
1944# CONFIG_CRYPTO_SEED is not set 1990# CONFIG_CRYPTO_SEED is not set
1991# CONFIG_CRYPTO_SALSA20 is not set
1945CONFIG_CRYPTO_DEFLATE=m 1992CONFIG_CRYPTO_DEFLATE=m
1946CONFIG_CRYPTO_MICHAEL_MIC=m 1993CONFIG_CRYPTO_MICHAEL_MIC=m
1947CONFIG_CRYPTO_CRC32C=m 1994CONFIG_CRYPTO_CRC32C=m
1948# CONFIG_CRYPTO_CAMELLIA is not set 1995# CONFIG_CRYPTO_CAMELLIA is not set
1949# CONFIG_CRYPTO_TEST is not set 1996# CONFIG_CRYPTO_TEST is not set
1950# CONFIG_CRYPTO_AUTHENC is not set 1997CONFIG_CRYPTO_AUTHENC=y
1998# CONFIG_CRYPTO_LZO is not set
1951CONFIG_CRYPTO_HW=y 1999CONFIG_CRYPTO_HW=y
2000# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1952# CONFIG_PPC_CLOCK is not set 2001# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig
index 7695a4c66e80..880ab7ad10c1 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.24-rc4 3# Linux kernel version: 2.6.25-rc6
4# Fri Dec 21 14:47:29 2007 4# Thu Mar 20 11:06:28 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y
28CONFIG_GENERIC_TIME_VSYSCALL=y 28CONFIG_GENERIC_TIME_VSYSCALL=y
29CONFIG_GENERIC_CLOCKEVENTS=y 29CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_HAVE_SETUP_PER_CPU_AREA=y
31CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
32CONFIG_RWSEM_XCHGADD_ALGORITHM=y 33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
33CONFIG_ARCH_HAS_ILOG2_U32=y 34CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -49,7 +50,9 @@ CONFIG_GENERIC_TBSYNC=y
49CONFIG_AUDIT_ARCH=y 50CONFIG_AUDIT_ARCH=y
50CONFIG_GENERIC_BUG=y 51CONFIG_GENERIC_BUG=y
51# CONFIG_DEFAULT_UIMAGE is not set 52# CONFIG_DEFAULT_UIMAGE is not set
52CONFIG_PPC64_SWSUSP=y 53CONFIG_HIBERNATE_64=y
54CONFIG_ARCH_HIBERNATION_POSSIBLE=y
55CONFIG_ARCH_SUSPEND_POSSIBLE=y
53# CONFIG_PPC_DCR_NATIVE is not set 56# CONFIG_PPC_DCR_NATIVE is not set
54CONFIG_PPC_DCR_MMIO=y 57CONFIG_PPC_DCR_MMIO=y
55CONFIG_PPC_DCR=y 58CONFIG_PPC_DCR=y
@@ -72,8 +75,6 @@ CONFIG_POSIX_MQUEUE=y
72CONFIG_TASKSTATS=y 75CONFIG_TASKSTATS=y
73CONFIG_TASK_DELAY_ACCT=y 76CONFIG_TASK_DELAY_ACCT=y
74# CONFIG_TASK_XACCT is not set 77# CONFIG_TASK_XACCT is not set
75# CONFIG_USER_NS is not set
76# CONFIG_PID_NS is not set
77# CONFIG_AUDIT is not set 78# CONFIG_AUDIT is not set
78CONFIG_IKCONFIG=y 79CONFIG_IKCONFIG=y
79CONFIG_IKCONFIG_PROC=y 80CONFIG_IKCONFIG_PROC=y
@@ -82,13 +83,20 @@ CONFIG_CGROUPS=y
82# CONFIG_CGROUP_DEBUG is not set 83# CONFIG_CGROUP_DEBUG is not set
83# CONFIG_CGROUP_NS is not set 84# CONFIG_CGROUP_NS is not set
84CONFIG_CPUSETS=y 85CONFIG_CPUSETS=y
85CONFIG_FAIR_GROUP_SCHED=y 86# CONFIG_GROUP_SCHED is not set
86CONFIG_FAIR_USER_SCHED=y 87# CONFIG_USER_SCHED is not set
87# CONFIG_FAIR_CGROUP_SCHED is not set 88# CONFIG_CGROUP_SCHED is not set
88# CONFIG_CGROUP_CPUACCT is not set 89# CONFIG_CGROUP_CPUACCT is not set
90# CONFIG_RESOURCE_COUNTERS is not set
89CONFIG_SYSFS_DEPRECATED=y 91CONFIG_SYSFS_DEPRECATED=y
92CONFIG_SYSFS_DEPRECATED_V2=y
90CONFIG_PROC_PID_CPUSET=y 93CONFIG_PROC_PID_CPUSET=y
91CONFIG_RELAY=y 94CONFIG_RELAY=y
95CONFIG_NAMESPACES=y
96# CONFIG_UTS_NS is not set
97# CONFIG_IPC_NS is not set
98# CONFIG_USER_NS is not set
99# CONFIG_PID_NS is not set
92CONFIG_BLK_DEV_INITRD=y 100CONFIG_BLK_DEV_INITRD=y
93CONFIG_INITRAMFS_SOURCE="" 101CONFIG_INITRAMFS_SOURCE=""
94CONFIG_CC_OPTIMIZE_FOR_SIZE=y 102CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -102,11 +110,13 @@ CONFIG_HOTPLUG=y
102CONFIG_PRINTK=y 110CONFIG_PRINTK=y
103CONFIG_BUG=y 111CONFIG_BUG=y
104CONFIG_ELF_CORE=y 112CONFIG_ELF_CORE=y
113# CONFIG_COMPAT_BRK is not set
105CONFIG_BASE_FULL=y 114CONFIG_BASE_FULL=y
106CONFIG_FUTEX=y 115CONFIG_FUTEX=y
107CONFIG_ANON_INODES=y 116CONFIG_ANON_INODES=y
108CONFIG_EPOLL=y 117CONFIG_EPOLL=y
109CONFIG_SIGNALFD=y 118CONFIG_SIGNALFD=y
119CONFIG_TIMERFD=y
110CONFIG_EVENTFD=y 120CONFIG_EVENTFD=y
111CONFIG_SHMEM=y 121CONFIG_SHMEM=y
112CONFIG_VM_EVENT_COUNTERS=y 122CONFIG_VM_EVENT_COUNTERS=y
@@ -114,6 +124,15 @@ CONFIG_SLUB_DEBUG=y
114# CONFIG_SLAB is not set 124# CONFIG_SLAB is not set
115CONFIG_SLUB=y 125CONFIG_SLUB=y
116# CONFIG_SLOB is not set 126# CONFIG_SLOB is not set
127CONFIG_PROFILING=y
128# CONFIG_MARKERS is not set
129CONFIG_OPROFILE=y
130CONFIG_HAVE_OPROFILE=y
131# CONFIG_KPROBES is not set
132CONFIG_HAVE_KPROBES=y
133CONFIG_HAVE_KRETPROBES=y
134CONFIG_PROC_PAGE_MONITOR=y
135CONFIG_SLABINFO=y
117CONFIG_RT_MUTEXES=y 136CONFIG_RT_MUTEXES=y
118# CONFIG_TINY_SHMEM is not set 137# CONFIG_TINY_SHMEM is not set
119CONFIG_BASE_SMALL=0 138CONFIG_BASE_SMALL=0
@@ -141,6 +160,7 @@ CONFIG_DEFAULT_AS=y
141# CONFIG_DEFAULT_CFQ is not set 160# CONFIG_DEFAULT_CFQ is not set
142# CONFIG_DEFAULT_NOOP is not set 161# CONFIG_DEFAULT_NOOP is not set
143CONFIG_DEFAULT_IOSCHED="anticipatory" 162CONFIG_DEFAULT_IOSCHED="anticipatory"
163CONFIG_CLASSIC_RCU=y
144 164
145# 165#
146# Platform support 166# Platform support
@@ -163,8 +183,8 @@ CONFIG_VIODASD=y
163CONFIG_VIOCD=m 183CONFIG_VIOCD=m
164CONFIG_VIOTAPE=m 184CONFIG_VIOTAPE=m
165CONFIG_VIOPATH=y 185CONFIG_VIOPATH=y
166# CONFIG_PPC_MPC52xx is not set 186# CONFIG_PPC_MPC512x is not set
167# CONFIG_PPC_MPC5200 is not set 187# CONFIG_PPC_MPC5121 is not set
168CONFIG_PPC_PMAC=y 188CONFIG_PPC_PMAC=y
169CONFIG_PPC_PMAC64=y 189CONFIG_PPC_PMAC64=y
170CONFIG_PPC_MAPLE=y 190CONFIG_PPC_MAPLE=y
@@ -176,7 +196,6 @@ CONFIG_PPC_PASEMI=y
176CONFIG_PPC_PASEMI_IOMMU=y 196CONFIG_PPC_PASEMI_IOMMU=y
177# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set 197# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
178CONFIG_PPC_PASEMI_MDIO=y 198CONFIG_PPC_PASEMI_MDIO=y
179CONFIG_ELECTRA_IDE=y
180CONFIG_PPC_CELLEB=y 199CONFIG_PPC_CELLEB=y
181# CONFIG_PPC_PS3 is not set 200# CONFIG_PPC_PS3 is not set
182CONFIG_PPC_CELL=y 201CONFIG_PPC_CELL=y
@@ -193,11 +212,13 @@ CONFIG_CBE_RAS=y
193CONFIG_CBE_THERM=m 212CONFIG_CBE_THERM=m
194CONFIG_CBE_CPUFREQ=m 213CONFIG_CBE_CPUFREQ=m
195CONFIG_CBE_CPUFREQ_PMI=m 214CONFIG_CBE_CPUFREQ_PMI=m
215CONFIG_OPROFILE_CELL=y
196# CONFIG_PQ2ADS is not set 216# CONFIG_PQ2ADS is not set
197CONFIG_PPC_NATIVE=y 217CONFIG_PPC_NATIVE=y
198CONFIG_UDBG_RTAS_CONSOLE=y 218CONFIG_UDBG_RTAS_CONSOLE=y
199CONFIG_PPC_UDBG_BEAT=y 219CONFIG_PPC_UDBG_BEAT=y
200CONFIG_XICS=y 220CONFIG_XICS=y
221# CONFIG_IPIC is not set
201CONFIG_MPIC=y 222CONFIG_MPIC=y
202# CONFIG_MPIC_WEIRD is not set 223# CONFIG_MPIC_WEIRD is not set
203CONFIG_PPC_I8259=y 224CONFIG_PPC_I8259=y
@@ -236,7 +257,6 @@ CONFIG_CPU_FREQ_GOV_USERSPACE=y
236# 257#
237CONFIG_CPU_FREQ_PMAC64=y 258CONFIG_CPU_FREQ_PMAC64=y
238CONFIG_PPC_PASEMI_CPUFREQ=y 259CONFIG_PPC_PASEMI_CPUFREQ=y
239# CONFIG_CPM2 is not set
240CONFIG_AXON_RAM=m 260CONFIG_AXON_RAM=m
241# CONFIG_FSL_ULI1575 is not set 261# CONFIG_FSL_ULI1575 is not set
242 262
@@ -252,17 +272,21 @@ CONFIG_HZ_250=y
252# CONFIG_HZ_300 is not set 272# CONFIG_HZ_300 is not set
253# CONFIG_HZ_1000 is not set 273# CONFIG_HZ_1000 is not set
254CONFIG_HZ=250 274CONFIG_HZ=250
275# CONFIG_SCHED_HRTICK is not set
255CONFIG_PREEMPT_NONE=y 276CONFIG_PREEMPT_NONE=y
256# CONFIG_PREEMPT_VOLUNTARY is not set 277# CONFIG_PREEMPT_VOLUNTARY is not set
257# CONFIG_PREEMPT is not set 278# CONFIG_PREEMPT is not set
258# CONFIG_PREEMPT_BKL is not set
259CONFIG_BINFMT_ELF=y 279CONFIG_BINFMT_ELF=y
280CONFIG_COMPAT_BINFMT_ELF=y
260CONFIG_BINFMT_MISC=m 281CONFIG_BINFMT_MISC=m
261CONFIG_FORCE_MAX_ZONEORDER=13 282CONFIG_FORCE_MAX_ZONEORDER=13
262CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y 283CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
263CONFIG_IOMMU_VMERGE=y 284CONFIG_IOMMU_VMERGE=y
285CONFIG_IOMMU_HELPER=y
264CONFIG_HOTPLUG_CPU=y 286CONFIG_HOTPLUG_CPU=y
265CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 287CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
288CONFIG_ARCH_HAS_WALK_MEMORY=y
289CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
266CONFIG_KEXEC=y 290CONFIG_KEXEC=y
267# CONFIG_CRASH_DUMP is not set 291# CONFIG_CRASH_DUMP is not set
268CONFIG_IRQ_ALL_CPUS=y 292CONFIG_IRQ_ALL_CPUS=y
@@ -294,11 +318,9 @@ CONFIG_PPC_HAS_HASH_64K=y
294# CONFIG_SCHED_SMT is not set 318# CONFIG_SCHED_SMT is not set
295CONFIG_PROC_DEVICETREE=y 319CONFIG_PROC_DEVICETREE=y
296# CONFIG_CMDLINE_BOOL is not set 320# CONFIG_CMDLINE_BOOL is not set
321CONFIG_ARCH_WANTS_FREEZER_CONTROL=y
297# CONFIG_PM is not set 322# CONFIG_PM is not set
298CONFIG_SUSPEND_SMP_POSSIBLE=y
299CONFIG_HIBERNATION_SMP_POSSIBLE=y
300CONFIG_SECCOMP=y 323CONFIG_SECCOMP=y
301# CONFIG_WANT_DEVICE_TREE is not set
302CONFIG_ISA_DMA_API=y 324CONFIG_ISA_DMA_API=y
303 325
304# 326#
@@ -352,6 +374,7 @@ CONFIG_XFRM=y
352CONFIG_XFRM_USER=m 374CONFIG_XFRM_USER=m
353# CONFIG_XFRM_SUB_POLICY is not set 375# CONFIG_XFRM_SUB_POLICY is not set
354# CONFIG_XFRM_MIGRATE is not set 376# CONFIG_XFRM_MIGRATE is not set
377# CONFIG_XFRM_STATISTICS is not set
355CONFIG_NET_KEY=m 378CONFIG_NET_KEY=m
356# CONFIG_NET_KEY_MIGRATE is not set 379# CONFIG_NET_KEY_MIGRATE is not set
357CONFIG_INET=y 380CONFIG_INET=y
@@ -375,7 +398,7 @@ CONFIG_INET_TUNNEL=y
375CONFIG_INET_XFRM_MODE_TRANSPORT=y 398CONFIG_INET_XFRM_MODE_TRANSPORT=y
376CONFIG_INET_XFRM_MODE_TUNNEL=y 399CONFIG_INET_XFRM_MODE_TUNNEL=y
377CONFIG_INET_XFRM_MODE_BEET=y 400CONFIG_INET_XFRM_MODE_BEET=y
378CONFIG_INET_LRO=m 401CONFIG_INET_LRO=y
379CONFIG_INET_DIAG=y 402CONFIG_INET_DIAG=y
380CONFIG_INET_TCP_DIAG=y 403CONFIG_INET_TCP_DIAG=y
381# CONFIG_TCP_CONG_ADVANCED is not set 404# CONFIG_TCP_CONG_ADVANCED is not set
@@ -389,14 +412,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
389# CONFIG_NETWORK_SECMARK is not set 412# CONFIG_NETWORK_SECMARK is not set
390CONFIG_NETFILTER=y 413CONFIG_NETFILTER=y
391# CONFIG_NETFILTER_DEBUG is not set 414# CONFIG_NETFILTER_DEBUG is not set
415CONFIG_NETFILTER_ADVANCED=y
392 416
393# 417#
394# Core Netfilter Configuration 418# Core Netfilter Configuration
395# 419#
396CONFIG_NETFILTER_NETLINK=y 420CONFIG_NETFILTER_NETLINK=m
397CONFIG_NETFILTER_NETLINK_QUEUE=m 421CONFIG_NETFILTER_NETLINK_QUEUE=m
398CONFIG_NETFILTER_NETLINK_LOG=m 422CONFIG_NETFILTER_NETLINK_LOG=m
399CONFIG_NF_CONNTRACK_ENABLED=m
400CONFIG_NF_CONNTRACK=m 423CONFIG_NF_CONNTRACK=m
401CONFIG_NF_CT_ACCT=y 424CONFIG_NF_CT_ACCT=y
402CONFIG_NF_CONNTRACK_MARK=y 425CONFIG_NF_CONNTRACK_MARK=y
@@ -422,8 +445,10 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
422CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 445CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
423CONFIG_NETFILTER_XT_TARGET_NFLOG=m 446CONFIG_NETFILTER_XT_TARGET_NFLOG=m
424CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 447CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
448CONFIG_NETFILTER_XT_TARGET_RATEEST=m
425CONFIG_NETFILTER_XT_TARGET_TRACE=m 449CONFIG_NETFILTER_XT_TARGET_TRACE=m
426CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 450CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
451CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
427CONFIG_NETFILTER_XT_MATCH_COMMENT=m 452CONFIG_NETFILTER_XT_MATCH_COMMENT=m
428CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 453CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
429CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 454CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
@@ -433,14 +458,17 @@ CONFIG_NETFILTER_XT_MATCH_DCCP=m
433CONFIG_NETFILTER_XT_MATCH_DSCP=m 458CONFIG_NETFILTER_XT_MATCH_DSCP=m
434CONFIG_NETFILTER_XT_MATCH_ESP=m 459CONFIG_NETFILTER_XT_MATCH_ESP=m
435CONFIG_NETFILTER_XT_MATCH_HELPER=m 460CONFIG_NETFILTER_XT_MATCH_HELPER=m
461CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
436CONFIG_NETFILTER_XT_MATCH_LENGTH=m 462CONFIG_NETFILTER_XT_MATCH_LENGTH=m
437CONFIG_NETFILTER_XT_MATCH_LIMIT=m 463CONFIG_NETFILTER_XT_MATCH_LIMIT=m
438CONFIG_NETFILTER_XT_MATCH_MAC=m 464CONFIG_NETFILTER_XT_MATCH_MAC=m
439CONFIG_NETFILTER_XT_MATCH_MARK=m 465CONFIG_NETFILTER_XT_MATCH_MARK=m
466CONFIG_NETFILTER_XT_MATCH_OWNER=m
440CONFIG_NETFILTER_XT_MATCH_POLICY=m 467CONFIG_NETFILTER_XT_MATCH_POLICY=m
441CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 468CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
442CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 469CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
443CONFIG_NETFILTER_XT_MATCH_QUOTA=m 470CONFIG_NETFILTER_XT_MATCH_QUOTA=m
471CONFIG_NETFILTER_XT_MATCH_RATEEST=m
444CONFIG_NETFILTER_XT_MATCH_REALM=m 472CONFIG_NETFILTER_XT_MATCH_REALM=m
445CONFIG_NETFILTER_XT_MATCH_SCTP=m 473CONFIG_NETFILTER_XT_MATCH_SCTP=m
446CONFIG_NETFILTER_XT_MATCH_STATE=m 474CONFIG_NETFILTER_XT_MATCH_STATE=m
@@ -458,13 +486,10 @@ CONFIG_NF_CONNTRACK_IPV4=m
458CONFIG_NF_CONNTRACK_PROC_COMPAT=y 486CONFIG_NF_CONNTRACK_PROC_COMPAT=y
459CONFIG_IP_NF_QUEUE=m 487CONFIG_IP_NF_QUEUE=m
460CONFIG_IP_NF_IPTABLES=m 488CONFIG_IP_NF_IPTABLES=m
461CONFIG_IP_NF_MATCH_IPRANGE=m
462CONFIG_IP_NF_MATCH_TOS=m
463CONFIG_IP_NF_MATCH_RECENT=m 489CONFIG_IP_NF_MATCH_RECENT=m
464CONFIG_IP_NF_MATCH_ECN=m 490CONFIG_IP_NF_MATCH_ECN=m
465CONFIG_IP_NF_MATCH_AH=m 491CONFIG_IP_NF_MATCH_AH=m
466CONFIG_IP_NF_MATCH_TTL=m 492CONFIG_IP_NF_MATCH_TTL=m
467CONFIG_IP_NF_MATCH_OWNER=m
468CONFIG_IP_NF_MATCH_ADDRTYPE=m 493CONFIG_IP_NF_MATCH_ADDRTYPE=m
469CONFIG_IP_NF_FILTER=m 494CONFIG_IP_NF_FILTER=m
470CONFIG_IP_NF_TARGET_REJECT=m 495CONFIG_IP_NF_TARGET_REJECT=m
@@ -475,7 +500,6 @@ CONFIG_NF_NAT_NEEDED=y
475CONFIG_IP_NF_TARGET_MASQUERADE=m 500CONFIG_IP_NF_TARGET_MASQUERADE=m
476CONFIG_IP_NF_TARGET_REDIRECT=m 501CONFIG_IP_NF_TARGET_REDIRECT=m
477CONFIG_IP_NF_TARGET_NETMAP=m 502CONFIG_IP_NF_TARGET_NETMAP=m
478CONFIG_IP_NF_TARGET_SAME=m
479CONFIG_NF_NAT_SNMP_BASIC=m 503CONFIG_NF_NAT_SNMP_BASIC=m
480CONFIG_NF_NAT_PROTO_GRE=m 504CONFIG_NF_NAT_PROTO_GRE=m
481CONFIG_NF_NAT_FTP=m 505CONFIG_NF_NAT_FTP=m
@@ -486,7 +510,6 @@ CONFIG_NF_NAT_PPTP=m
486CONFIG_NF_NAT_H323=m 510CONFIG_NF_NAT_H323=m
487CONFIG_NF_NAT_SIP=m 511CONFIG_NF_NAT_SIP=m
488CONFIG_IP_NF_MANGLE=m 512CONFIG_IP_NF_MANGLE=m
489CONFIG_IP_NF_TARGET_TOS=m
490CONFIG_IP_NF_TARGET_ECN=m 513CONFIG_IP_NF_TARGET_ECN=m
491CONFIG_IP_NF_TARGET_TTL=m 514CONFIG_IP_NF_TARGET_TTL=m
492CONFIG_IP_NF_TARGET_CLUSTERIP=m 515CONFIG_IP_NF_TARGET_CLUSTERIP=m
@@ -517,6 +540,7 @@ CONFIG_NET_CLS_ROUTE=y
517# 540#
518# CONFIG_NET_PKTGEN is not set 541# CONFIG_NET_PKTGEN is not set
519# CONFIG_HAMRADIO is not set 542# CONFIG_HAMRADIO is not set
543# CONFIG_CAN is not set
520# CONFIG_IRDA is not set 544# CONFIG_IRDA is not set
521# CONFIG_BT is not set 545# CONFIG_BT is not set
522# CONFIG_AF_RXRPC is not set 546# CONFIG_AF_RXRPC is not set
@@ -563,7 +587,7 @@ CONFIG_BLK_DEV_NBD=m
563CONFIG_BLK_DEV_RAM=y 587CONFIG_BLK_DEV_RAM=y
564CONFIG_BLK_DEV_RAM_COUNT=16 588CONFIG_BLK_DEV_RAM_COUNT=16
565CONFIG_BLK_DEV_RAM_SIZE=65536 589CONFIG_BLK_DEV_RAM_SIZE=65536
566CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 590# CONFIG_BLK_DEV_XIP is not set
567# CONFIG_CDROM_PKTCDVD is not set 591# CONFIG_CDROM_PKTCDVD is not set
568# CONFIG_ATA_OVER_ETH is not set 592# CONFIG_ATA_OVER_ETH is not set
569CONFIG_MISC_DEVICES=y 593CONFIG_MISC_DEVICES=y
@@ -571,11 +595,13 @@ CONFIG_MISC_DEVICES=y
571# CONFIG_EEPROM_93CX6 is not set 595# CONFIG_EEPROM_93CX6 is not set
572# CONFIG_SGI_IOC4 is not set 596# CONFIG_SGI_IOC4 is not set
573# CONFIG_TIFM_CORE is not set 597# CONFIG_TIFM_CORE is not set
598# CONFIG_ENCLOSURE_SERVICES is not set
599CONFIG_HAVE_IDE=y
574CONFIG_IDE=y 600CONFIG_IDE=y
575CONFIG_BLK_DEV_IDE=y 601CONFIG_BLK_DEV_IDE=y
576 602
577# 603#
578# Please see Documentation/ide.txt for help/info on IDE drives 604# Please see Documentation/ide/ide.txt for help/info on IDE drives
579# 605#
580# CONFIG_BLK_DEV_IDE_SATA is not set 606# CONFIG_BLK_DEV_IDE_SATA is not set
581CONFIG_BLK_DEV_IDEDISK=y 607CONFIG_BLK_DEV_IDEDISK=y
@@ -583,6 +609,7 @@ CONFIG_BLK_DEV_IDEDISK=y
583# CONFIG_BLK_DEV_IDECS is not set 609# CONFIG_BLK_DEV_IDECS is not set
584# CONFIG_BLK_DEV_DELKIN is not set 610# CONFIG_BLK_DEV_DELKIN is not set
585CONFIG_BLK_DEV_IDECD=y 611CONFIG_BLK_DEV_IDECD=y
612CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
586# CONFIG_BLK_DEV_IDETAPE is not set 613# CONFIG_BLK_DEV_IDETAPE is not set
587# CONFIG_BLK_DEV_IDEFLOPPY is not set 614# CONFIG_BLK_DEV_IDEFLOPPY is not set
588# CONFIG_BLK_DEV_IDESCSI is not set 615# CONFIG_BLK_DEV_IDESCSI is not set
@@ -594,12 +621,12 @@ CONFIG_IDE_PROC_FS=y
594# 621#
595CONFIG_IDE_GENERIC=y 622CONFIG_IDE_GENERIC=y
596# CONFIG_BLK_DEV_PLATFORM is not set 623# CONFIG_BLK_DEV_PLATFORM is not set
624CONFIG_BLK_DEV_IDEDMA_SFF=y
597 625
598# 626#
599# PCI IDE chipsets support 627# PCI IDE chipsets support
600# 628#
601CONFIG_BLK_DEV_IDEPCI=y 629CONFIG_BLK_DEV_IDEPCI=y
602CONFIG_IDEPCI_SHARE_IRQ=y
603CONFIG_IDEPCI_PCIBUS_ORDER=y 630CONFIG_IDEPCI_PCIBUS_ORDER=y
604# CONFIG_BLK_DEV_OFFBOARD is not set 631# CONFIG_BLK_DEV_OFFBOARD is not set
605CONFIG_BLK_DEV_GENERIC=y 632CONFIG_BLK_DEV_GENERIC=y
@@ -634,7 +661,6 @@ CONFIG_BLK_DEV_CELLEB=y
634CONFIG_BLK_DEV_IDE_PMAC=y 661CONFIG_BLK_DEV_IDE_PMAC=y
635CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y 662CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
636CONFIG_BLK_DEV_IDEDMA_PMAC=y 663CONFIG_BLK_DEV_IDEDMA_PMAC=y
637# CONFIG_IDE_ARM is not set
638CONFIG_BLK_DEV_IDEDMA=y 664CONFIG_BLK_DEV_IDEDMA=y
639CONFIG_IDE_ARCH_OBSOLETE_INIT=y 665CONFIG_IDE_ARCH_OBSOLETE_INIT=y
640# CONFIG_BLK_DEV_HD is not set 666# CONFIG_BLK_DEV_HD is not set
@@ -701,6 +727,7 @@ CONFIG_SCSI_LOWLEVEL=y
701CONFIG_SCSI_IBMVSCSI=y 727CONFIG_SCSI_IBMVSCSI=y
702# CONFIG_SCSI_INITIO is not set 728# CONFIG_SCSI_INITIO is not set
703# CONFIG_SCSI_INIA100 is not set 729# CONFIG_SCSI_INIA100 is not set
730# CONFIG_SCSI_MVSAS is not set
704# CONFIG_SCSI_STEX is not set 731# CONFIG_SCSI_STEX is not set
705CONFIG_SCSI_SYM53C8XX_2=y 732CONFIG_SCSI_SYM53C8XX_2=y
706CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 733CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
@@ -760,6 +787,7 @@ CONFIG_SATA_SIL24=y
760# CONFIG_PATA_MPIIX is not set 787# CONFIG_PATA_MPIIX is not set
761# CONFIG_PATA_OLDPIIX is not set 788# CONFIG_PATA_OLDPIIX is not set
762# CONFIG_PATA_NETCELL is not set 789# CONFIG_PATA_NETCELL is not set
790# CONFIG_PATA_NINJA32 is not set
763# CONFIG_PATA_NS87410 is not set 791# CONFIG_PATA_NS87410 is not set
764# CONFIG_PATA_NS87415 is not set 792# CONFIG_PATA_NS87415 is not set
765# CONFIG_PATA_OPTI is not set 793# CONFIG_PATA_OPTI is not set
@@ -776,6 +804,7 @@ CONFIG_PATA_PCMCIA=y
776# CONFIG_PATA_VIA is not set 804# CONFIG_PATA_VIA is not set
777CONFIG_PATA_WINBOND=y 805CONFIG_PATA_WINBOND=y
778CONFIG_PATA_PLATFORM=y 806CONFIG_PATA_PLATFORM=y
807# CONFIG_PATA_OF_PLATFORM is not set
779CONFIG_PATA_SCC=y 808CONFIG_PATA_SCC=y
780CONFIG_MD=y 809CONFIG_MD=y
781CONFIG_BLK_DEV_MD=y 810CONFIG_BLK_DEV_MD=y
@@ -847,7 +876,6 @@ CONFIG_BONDING=m
847# CONFIG_EQUALIZER is not set 876# CONFIG_EQUALIZER is not set
848CONFIG_TUN=m 877CONFIG_TUN=m
849# CONFIG_VETH is not set 878# CONFIG_VETH is not set
850# CONFIG_IP1000 is not set
851# CONFIG_ARCNET is not set 879# CONFIG_ARCNET is not set
852CONFIG_PHYLIB=y 880CONFIG_PHYLIB=y
853 881
@@ -863,11 +891,8 @@ CONFIG_MARVELL_PHY=y
863# CONFIG_SMSC_PHY is not set 891# CONFIG_SMSC_PHY is not set
864CONFIG_BROADCOM_PHY=m 892CONFIG_BROADCOM_PHY=m
865# CONFIG_ICPLUS_PHY is not set 893# CONFIG_ICPLUS_PHY is not set
866CONFIG_FIXED_PHY=m 894# CONFIG_REALTEK_PHY is not set
867CONFIG_FIXED_MII_10_FDX=y 895# CONFIG_FIXED_PHY is not set
868CONFIG_FIXED_MII_100_FDX=y
869# CONFIG_FIXED_MII_1000_FDX is not set
870CONFIG_FIXED_MII_AMNT=1
871# CONFIG_MDIO_BITBANG is not set 896# CONFIG_MDIO_BITBANG is not set
872CONFIG_NET_ETHERNET=y 897CONFIG_NET_ETHERNET=y
873CONFIG_MII=y 898CONFIG_MII=y
@@ -899,6 +924,7 @@ CONFIG_E100=y
899# CONFIG_NE2K_PCI is not set 924# CONFIG_NE2K_PCI is not set
900# CONFIG_8139CP is not set 925# CONFIG_8139CP is not set
901# CONFIG_8139TOO is not set 926# CONFIG_8139TOO is not set
927# CONFIG_R6040 is not set
902# CONFIG_SIS900 is not set 928# CONFIG_SIS900 is not set
903# CONFIG_EPIC100 is not set 929# CONFIG_EPIC100 is not set
904# CONFIG_SUNDANCE is not set 930# CONFIG_SUNDANCE is not set
@@ -912,6 +938,9 @@ CONFIG_E1000=y
912# CONFIG_E1000_NAPI is not set 938# CONFIG_E1000_NAPI is not set
913# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 939# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
914# CONFIG_E1000E is not set 940# CONFIG_E1000E is not set
941# CONFIG_E1000E_ENABLED is not set
942# CONFIG_IP1000 is not set
943# CONFIG_IGB is not set
915# CONFIG_NS83820 is not set 944# CONFIG_NS83820 is not set
916# CONFIG_HAMACHI is not set 945# CONFIG_HAMACHI is not set
917# CONFIG_YELLOWFIN is not set 946# CONFIG_YELLOWFIN is not set
@@ -940,6 +969,7 @@ CONFIG_IXGB=m
940CONFIG_PASEMI_MAC=y 969CONFIG_PASEMI_MAC=y
941# CONFIG_MLX4_CORE is not set 970# CONFIG_MLX4_CORE is not set
942# CONFIG_TEHUTI is not set 971# CONFIG_TEHUTI is not set
972# CONFIG_BNX2X is not set
943CONFIG_TR=y 973CONFIG_TR=y
944CONFIG_IBMOL=y 974CONFIG_IBMOL=y
945# CONFIG_3C359 is not set 975# CONFIG_3C359 is not set
@@ -977,7 +1007,6 @@ CONFIG_PPPOE=m
977# CONFIG_SLIP is not set 1007# CONFIG_SLIP is not set
978CONFIG_SLHC=m 1008CONFIG_SLHC=m
979# CONFIG_NET_FC is not set 1009# CONFIG_NET_FC is not set
980# CONFIG_SHAPER is not set
981CONFIG_NETCONSOLE=y 1010CONFIG_NETCONSOLE=y
982# CONFIG_NETCONSOLE_DYNAMIC is not set 1011# CONFIG_NETCONSOLE_DYNAMIC is not set
983CONFIG_NETPOLL=y 1012CONFIG_NETPOLL=y
@@ -1056,6 +1085,7 @@ CONFIG_VT_CONSOLE=y
1056CONFIG_HW_CONSOLE=y 1085CONFIG_HW_CONSOLE=y
1057# CONFIG_VT_HW_CONSOLE_BINDING is not set 1086# CONFIG_VT_HW_CONSOLE_BINDING is not set
1058# CONFIG_SERIAL_NONSTANDARD is not set 1087# CONFIG_SERIAL_NONSTANDARD is not set
1088# CONFIG_NOZOMI is not set
1059 1089
1060# 1090#
1061# Serial drivers 1091# Serial drivers
@@ -1103,6 +1133,7 @@ CONFIG_GEN_RTC=y
1103# CONFIG_SYNCLINK_CS is not set 1133# CONFIG_SYNCLINK_CS is not set
1104# CONFIG_CARDMAN_4000 is not set 1134# CONFIG_CARDMAN_4000 is not set
1105# CONFIG_CARDMAN_4040 is not set 1135# CONFIG_CARDMAN_4040 is not set
1136# CONFIG_IPWIRELESS is not set
1106CONFIG_RAW_DRIVER=y 1137CONFIG_RAW_DRIVER=y
1107CONFIG_MAX_RAW_DEVS=256 1138CONFIG_MAX_RAW_DEVS=256
1108# CONFIG_HANGCHECK_TIMER is not set 1139# CONFIG_HANGCHECK_TIMER is not set
@@ -1151,13 +1182,12 @@ CONFIG_I2C_PASEMI=y
1151# 1182#
1152# Miscellaneous I2C Chip support 1183# Miscellaneous I2C Chip support
1153# 1184#
1154# CONFIG_SENSORS_DS1337 is not set
1155# CONFIG_SENSORS_DS1374 is not set
1156# CONFIG_DS1682 is not set 1185# CONFIG_DS1682 is not set
1157# CONFIG_SENSORS_EEPROM is not set 1186# CONFIG_SENSORS_EEPROM is not set
1158# CONFIG_SENSORS_PCF8574 is not set 1187# CONFIG_SENSORS_PCF8574 is not set
1159# CONFIG_SENSORS_PCA9539 is not set 1188# CONFIG_PCF8575 is not set
1160# CONFIG_SENSORS_PCF8591 is not set 1189# CONFIG_SENSORS_PCF8591 is not set
1190# CONFIG_TPS65010 is not set
1161# CONFIG_SENSORS_MAX6875 is not set 1191# CONFIG_SENSORS_MAX6875 is not set
1162# CONFIG_SENSORS_TSL2550 is not set 1192# CONFIG_SENSORS_TSL2550 is not set
1163# CONFIG_I2C_DEBUG_CORE is not set 1193# CONFIG_I2C_DEBUG_CORE is not set
@@ -1173,6 +1203,7 @@ CONFIG_I2C_PASEMI=y
1173# CONFIG_W1 is not set 1203# CONFIG_W1 is not set
1174# CONFIG_POWER_SUPPLY is not set 1204# CONFIG_POWER_SUPPLY is not set
1175# CONFIG_HWMON is not set 1205# CONFIG_HWMON is not set
1206# CONFIG_THERMAL is not set
1176# CONFIG_WATCHDOG is not set 1207# CONFIG_WATCHDOG is not set
1177 1208
1178# 1209#
@@ -1337,6 +1368,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1337# CONFIG_SND_BT87X is not set 1368# CONFIG_SND_BT87X is not set
1338# CONFIG_SND_CA0106 is not set 1369# CONFIG_SND_CA0106 is not set
1339# CONFIG_SND_CMIPCI is not set 1370# CONFIG_SND_CMIPCI is not set
1371# CONFIG_SND_OXYGEN is not set
1340# CONFIG_SND_CS4281 is not set 1372# CONFIG_SND_CS4281 is not set
1341# CONFIG_SND_CS46XX is not set 1373# CONFIG_SND_CS46XX is not set
1342# CONFIG_SND_CS5530 is not set 1374# CONFIG_SND_CS5530 is not set
@@ -1362,6 +1394,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1362# CONFIG_SND_HDA_INTEL is not set 1394# CONFIG_SND_HDA_INTEL is not set
1363# CONFIG_SND_HDSP is not set 1395# CONFIG_SND_HDSP is not set
1364# CONFIG_SND_HDSPM is not set 1396# CONFIG_SND_HDSPM is not set
1397# CONFIG_SND_HIFIER is not set
1365# CONFIG_SND_ICE1712 is not set 1398# CONFIG_SND_ICE1712 is not set
1366# CONFIG_SND_ICE1724 is not set 1399# CONFIG_SND_ICE1724 is not set
1367# CONFIG_SND_INTEL8X0 is not set 1400# CONFIG_SND_INTEL8X0 is not set
@@ -1379,6 +1412,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1379# CONFIG_SND_TRIDENT is not set 1412# CONFIG_SND_TRIDENT is not set
1380# CONFIG_SND_VIA82XX is not set 1413# CONFIG_SND_VIA82XX is not set
1381# CONFIG_SND_VIA82XX_MODEM is not set 1414# CONFIG_SND_VIA82XX_MODEM is not set
1415# CONFIG_SND_VIRTUOSO is not set
1382# CONFIG_SND_VX222 is not set 1416# CONFIG_SND_VX222 is not set
1383# CONFIG_SND_YMFPCI is not set 1417# CONFIG_SND_YMFPCI is not set
1384 1418
@@ -1426,6 +1460,10 @@ CONFIG_SND_AOA_SOUNDBUS_I2S=m
1426# 1460#
1427 1461
1428# 1462#
1463# ALSA SoC audio for Freescale SOCs
1464#
1465
1466#
1429# Open Sound System 1467# Open Sound System
1430# 1468#
1431# CONFIG_SOUND_PRIME is not set 1469# CONFIG_SOUND_PRIME is not set
@@ -1447,6 +1485,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y
1447CONFIG_USB_ARCH_HAS_EHCI=y 1485CONFIG_USB_ARCH_HAS_EHCI=y
1448CONFIG_USB=y 1486CONFIG_USB=y
1449# CONFIG_USB_DEBUG is not set 1487# CONFIG_USB_DEBUG is not set
1488# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1450 1489
1451# 1490#
1452# Miscellaneous USB options 1491# Miscellaneous USB options
@@ -1460,10 +1499,10 @@ CONFIG_USB_DEVICE_CLASS=y
1460# USB Host Controller Drivers 1499# USB Host Controller Drivers
1461# 1500#
1462CONFIG_USB_EHCI_HCD=y 1501CONFIG_USB_EHCI_HCD=y
1463# CONFIG_USB_EHCI_SPLIT_ISO is not set
1464# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1502# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1465CONFIG_USB_EHCI_TT_NEWSCHED=y 1503CONFIG_USB_EHCI_TT_NEWSCHED=y
1466CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y 1504CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
1505# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1467# CONFIG_USB_ISP116X_HCD is not set 1506# CONFIG_USB_ISP116X_HCD is not set
1468CONFIG_USB_OHCI_HCD=y 1507CONFIG_USB_OHCI_HCD=y
1469# CONFIG_USB_OHCI_HCD_PPC_OF is not set 1508# CONFIG_USB_OHCI_HCD_PPC_OF is not set
@@ -1512,10 +1551,6 @@ CONFIG_USB_STORAGE=m
1512# 1551#
1513# USB port drivers 1552# USB port drivers
1514# 1553#
1515
1516#
1517# USB Serial Converter support
1518#
1519# CONFIG_USB_SERIAL is not set 1554# CONFIG_USB_SERIAL is not set
1520 1555
1521# 1556#
@@ -1541,16 +1576,9 @@ CONFIG_USB_APPLEDISPLAY=m
1541# CONFIG_USB_TRANCEVIBRATOR is not set 1576# CONFIG_USB_TRANCEVIBRATOR is not set
1542# CONFIG_USB_IOWARRIOR is not set 1577# CONFIG_USB_IOWARRIOR is not set
1543# CONFIG_USB_TEST is not set 1578# CONFIG_USB_TEST is not set
1544
1545#
1546# USB DSL modem support
1547#
1548
1549#
1550# USB Gadget Support
1551#
1552# CONFIG_USB_GADGET is not set 1579# CONFIG_USB_GADGET is not set
1553# CONFIG_MMC is not set 1580# CONFIG_MMC is not set
1581# CONFIG_MEMSTICK is not set
1554# CONFIG_NEW_LEDS is not set 1582# CONFIG_NEW_LEDS is not set
1555CONFIG_INFINIBAND=m 1583CONFIG_INFINIBAND=m
1556# CONFIG_INFINIBAND_USER_MAD is not set 1584# CONFIG_INFINIBAND_USER_MAD is not set
@@ -1562,6 +1590,7 @@ CONFIG_INFINIBAND_MTHCA_DEBUG=y
1562CONFIG_INFINIBAND_EHCA=m 1590CONFIG_INFINIBAND_EHCA=m
1563# CONFIG_INFINIBAND_AMSO1100 is not set 1591# CONFIG_INFINIBAND_AMSO1100 is not set
1564# CONFIG_MLX4_INFINIBAND is not set 1592# CONFIG_MLX4_INFINIBAND is not set
1593# CONFIG_INFINIBAND_NES is not set
1565CONFIG_INFINIBAND_IPOIB=m 1594CONFIG_INFINIBAND_IPOIB=m
1566# CONFIG_INFINIBAND_IPOIB_CM is not set 1595# CONFIG_INFINIBAND_IPOIB_CM is not set
1567CONFIG_INFINIBAND_IPOIB_DEBUG=y 1596CONFIG_INFINIBAND_IPOIB_DEBUG=y
@@ -1576,8 +1605,13 @@ CONFIG_EDAC=y
1576# CONFIG_EDAC_DEBUG is not set 1605# CONFIG_EDAC_DEBUG is not set
1577CONFIG_EDAC_MM_EDAC=y 1606CONFIG_EDAC_MM_EDAC=y
1578CONFIG_EDAC_PASEMI=y 1607CONFIG_EDAC_PASEMI=y
1608# CONFIG_EDAC_CELL is not set
1579CONFIG_RTC_LIB=y 1609CONFIG_RTC_LIB=y
1580CONFIG_RTC_CLASS=y 1610CONFIG_RTC_CLASS=y
1611
1612#
1613# Conflicting RTC option has been selected, check GEN_RTC and RTC
1614#
1581CONFIG_RTC_HCTOSYS=y 1615CONFIG_RTC_HCTOSYS=y
1582CONFIG_RTC_HCTOSYS_DEVICE="rtc0" 1616CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1583# CONFIG_RTC_DEBUG is not set 1617# CONFIG_RTC_DEBUG is not set
@@ -1604,6 +1638,7 @@ CONFIG_RTC_DRV_DS1307=y
1604# CONFIG_RTC_DRV_PCF8563 is not set 1638# CONFIG_RTC_DRV_PCF8563 is not set
1605# CONFIG_RTC_DRV_PCF8583 is not set 1639# CONFIG_RTC_DRV_PCF8583 is not set
1606# CONFIG_RTC_DRV_M41T80 is not set 1640# CONFIG_RTC_DRV_M41T80 is not set
1641# CONFIG_RTC_DRV_S35390A is not set
1607 1642
1608# 1643#
1609# SPI RTC drivers 1644# SPI RTC drivers
@@ -1613,9 +1648,10 @@ CONFIG_RTC_DRV_DS1307=y
1613# Platform RTC drivers 1648# Platform RTC drivers
1614# 1649#
1615# CONFIG_RTC_DRV_CMOS is not set 1650# CONFIG_RTC_DRV_CMOS is not set
1651# CONFIG_RTC_DRV_DS1511 is not set
1616# CONFIG_RTC_DRV_DS1553 is not set 1652# CONFIG_RTC_DRV_DS1553 is not set
1617# CONFIG_RTC_DRV_STK17TA8 is not set
1618# CONFIG_RTC_DRV_DS1742 is not set 1653# CONFIG_RTC_DRV_DS1742 is not set
1654# CONFIG_RTC_DRV_STK17TA8 is not set
1619# CONFIG_RTC_DRV_M48T86 is not set 1655# CONFIG_RTC_DRV_M48T86 is not set
1620# CONFIG_RTC_DRV_M48T59 is not set 1656# CONFIG_RTC_DRV_M48T59 is not set
1621# CONFIG_RTC_DRV_V3020 is not set 1657# CONFIG_RTC_DRV_V3020 is not set
@@ -1623,6 +1659,7 @@ CONFIG_RTC_DRV_DS1307=y
1623# 1659#
1624# on-CPU RTC drivers 1660# on-CPU RTC drivers
1625# 1661#
1662# CONFIG_DMADEVICES is not set
1626 1663
1627# 1664#
1628# Userspace I/O 1665# Userspace I/O
@@ -1665,12 +1702,10 @@ CONFIG_XFS_POSIX_ACL=y
1665# CONFIG_XFS_RT is not set 1702# CONFIG_XFS_RT is not set
1666# CONFIG_GFS2_FS is not set 1703# CONFIG_GFS2_FS is not set
1667# CONFIG_OCFS2_FS is not set 1704# CONFIG_OCFS2_FS is not set
1668# CONFIG_MINIX_FS is not set 1705CONFIG_DNOTIFY=y
1669# CONFIG_ROMFS_FS is not set
1670CONFIG_INOTIFY=y 1706CONFIG_INOTIFY=y
1671CONFIG_INOTIFY_USER=y 1707CONFIG_INOTIFY_USER=y
1672# CONFIG_QUOTA is not set 1708# CONFIG_QUOTA is not set
1673CONFIG_DNOTIFY=y
1674# CONFIG_AUTOFS_FS is not set 1709# CONFIG_AUTOFS_FS is not set
1675CONFIG_AUTOFS4_FS=m 1710CONFIG_AUTOFS4_FS=m
1676# CONFIG_FUSE_FS is not set 1711# CONFIG_FUSE_FS is not set
@@ -1719,8 +1754,10 @@ CONFIG_HFSPLUS_FS=m
1719# CONFIG_EFS_FS is not set 1754# CONFIG_EFS_FS is not set
1720CONFIG_CRAMFS=y 1755CONFIG_CRAMFS=y
1721# CONFIG_VXFS_FS is not set 1756# CONFIG_VXFS_FS is not set
1757# CONFIG_MINIX_FS is not set
1722# CONFIG_HPFS_FS is not set 1758# CONFIG_HPFS_FS is not set
1723# CONFIG_QNX4FS_FS is not set 1759# CONFIG_QNX4FS_FS is not set
1760# CONFIG_ROMFS_FS is not set
1724# CONFIG_SYSV_FS is not set 1761# CONFIG_SYSV_FS is not set
1725# CONFIG_UFS_FS is not set 1762# CONFIG_UFS_FS is not set
1726CONFIG_NETWORK_FILESYSTEMS=y 1763CONFIG_NETWORK_FILESYSTEMS=y
@@ -1821,7 +1858,6 @@ CONFIG_NLS_KOI8_R=m
1821CONFIG_NLS_KOI8_U=m 1858CONFIG_NLS_KOI8_U=m
1822CONFIG_NLS_UTF8=m 1859CONFIG_NLS_UTF8=m
1823# CONFIG_DLM is not set 1860# CONFIG_DLM is not set
1824# CONFIG_UCC_SLOW is not set
1825 1861
1826# 1862#
1827# Library routines 1863# Library routines
@@ -1835,6 +1871,8 @@ CONFIG_CRC32=y
1835CONFIG_LIBCRC32C=m 1871CONFIG_LIBCRC32C=m
1836CONFIG_ZLIB_INFLATE=y 1872CONFIG_ZLIB_INFLATE=y
1837CONFIG_ZLIB_DEFLATE=m 1873CONFIG_ZLIB_DEFLATE=m
1874CONFIG_LZO_COMPRESS=m
1875CONFIG_LZO_DECOMPRESS=m
1838CONFIG_TEXTSEARCH=y 1876CONFIG_TEXTSEARCH=y
1839CONFIG_TEXTSEARCH_KMP=m 1877CONFIG_TEXTSEARCH_KMP=m
1840CONFIG_TEXTSEARCH_BM=m 1878CONFIG_TEXTSEARCH_BM=m
@@ -1843,11 +1881,6 @@ CONFIG_PLIST=y
1843CONFIG_HAS_IOMEM=y 1881CONFIG_HAS_IOMEM=y
1844CONFIG_HAS_IOPORT=y 1882CONFIG_HAS_IOPORT=y
1845CONFIG_HAS_DMA=y 1883CONFIG_HAS_DMA=y
1846CONFIG_INSTRUMENTATION=y
1847CONFIG_PROFILING=y
1848CONFIG_OPROFILE=y
1849# CONFIG_KPROBES is not set
1850# CONFIG_MARKERS is not set
1851 1884
1852# 1885#
1853# Kernel hacking 1886# Kernel hacking
@@ -1866,6 +1899,7 @@ CONFIG_SCHED_DEBUG=y
1866# CONFIG_SCHEDSTATS is not set 1899# CONFIG_SCHEDSTATS is not set
1867# CONFIG_TIMER_STATS is not set 1900# CONFIG_TIMER_STATS is not set
1868# CONFIG_SLUB_DEBUG_ON is not set 1901# CONFIG_SLUB_DEBUG_ON is not set
1902# CONFIG_SLUB_STATS is not set
1869# CONFIG_DEBUG_RT_MUTEXES is not set 1903# CONFIG_DEBUG_RT_MUTEXES is not set
1870# CONFIG_RT_MUTEX_TESTER is not set 1904# CONFIG_RT_MUTEX_TESTER is not set
1871# CONFIG_DEBUG_SPINLOCK is not set 1905# CONFIG_DEBUG_SPINLOCK is not set
@@ -1878,9 +1912,9 @@ CONFIG_DEBUG_BUGVERBOSE=y
1878# CONFIG_DEBUG_VM is not set 1912# CONFIG_DEBUG_VM is not set
1879# CONFIG_DEBUG_LIST is not set 1913# CONFIG_DEBUG_LIST is not set
1880# CONFIG_DEBUG_SG is not set 1914# CONFIG_DEBUG_SG is not set
1881CONFIG_FORCED_INLINING=y
1882# CONFIG_BOOT_PRINTK_DELAY is not set 1915# CONFIG_BOOT_PRINTK_DELAY is not set
1883# CONFIG_RCU_TORTURE_TEST is not set 1916# CONFIG_RCU_TORTURE_TEST is not set
1917# CONFIG_BACKTRACE_SELF_TEST is not set
1884# CONFIG_FAULT_INJECTION is not set 1918# CONFIG_FAULT_INJECTION is not set
1885# CONFIG_SAMPLES is not set 1919# CONFIG_SAMPLES is not set
1886CONFIG_DEBUG_STACKOVERFLOW=y 1920CONFIG_DEBUG_STACKOVERFLOW=y
@@ -1908,7 +1942,9 @@ CONFIG_ASYNC_MEMCPY=y
1908CONFIG_ASYNC_XOR=y 1942CONFIG_ASYNC_XOR=y
1909CONFIG_CRYPTO=y 1943CONFIG_CRYPTO=y
1910CONFIG_CRYPTO_ALGAPI=y 1944CONFIG_CRYPTO_ALGAPI=y
1945CONFIG_CRYPTO_AEAD=m
1911CONFIG_CRYPTO_BLKCIPHER=y 1946CONFIG_CRYPTO_BLKCIPHER=y
1947CONFIG_CRYPTO_SEQIV=m
1912CONFIG_CRYPTO_HASH=y 1948CONFIG_CRYPTO_HASH=y
1913CONFIG_CRYPTO_MANAGER=y 1949CONFIG_CRYPTO_MANAGER=y
1914CONFIG_CRYPTO_HMAC=y 1950CONFIG_CRYPTO_HMAC=y
@@ -1921,12 +1957,15 @@ CONFIG_CRYPTO_SHA256=m
1921CONFIG_CRYPTO_SHA512=m 1957CONFIG_CRYPTO_SHA512=m
1922CONFIG_CRYPTO_WP512=m 1958CONFIG_CRYPTO_WP512=m
1923CONFIG_CRYPTO_TGR192=m 1959CONFIG_CRYPTO_TGR192=m
1924# CONFIG_CRYPTO_GF128MUL is not set 1960CONFIG_CRYPTO_GF128MUL=m
1925CONFIG_CRYPTO_ECB=m 1961CONFIG_CRYPTO_ECB=m
1926CONFIG_CRYPTO_CBC=y 1962CONFIG_CRYPTO_CBC=y
1927CONFIG_CRYPTO_PCBC=m 1963CONFIG_CRYPTO_PCBC=m
1928# CONFIG_CRYPTO_LRW is not set 1964# CONFIG_CRYPTO_LRW is not set
1929# CONFIG_CRYPTO_XTS is not set 1965# CONFIG_CRYPTO_XTS is not set
1966CONFIG_CRYPTO_CTR=m
1967CONFIG_CRYPTO_GCM=m
1968CONFIG_CRYPTO_CCM=m
1930# CONFIG_CRYPTO_CRYPTD is not set 1969# CONFIG_CRYPTO_CRYPTD is not set
1931CONFIG_CRYPTO_DES=y 1970CONFIG_CRYPTO_DES=y
1932# CONFIG_CRYPTO_FCRYPT is not set 1971# CONFIG_CRYPTO_FCRYPT is not set
@@ -1942,11 +1981,13 @@ CONFIG_CRYPTO_ARC4=m
1942CONFIG_CRYPTO_KHAZAD=m 1981CONFIG_CRYPTO_KHAZAD=m
1943CONFIG_CRYPTO_ANUBIS=m 1982CONFIG_CRYPTO_ANUBIS=m
1944# CONFIG_CRYPTO_SEED is not set 1983# CONFIG_CRYPTO_SEED is not set
1984CONFIG_CRYPTO_SALSA20=m
1945CONFIG_CRYPTO_DEFLATE=m 1985CONFIG_CRYPTO_DEFLATE=m
1946CONFIG_CRYPTO_MICHAEL_MIC=m 1986CONFIG_CRYPTO_MICHAEL_MIC=m
1947CONFIG_CRYPTO_CRC32C=m 1987CONFIG_CRYPTO_CRC32C=m
1948# CONFIG_CRYPTO_CAMELLIA is not set 1988# CONFIG_CRYPTO_CAMELLIA is not set
1949CONFIG_CRYPTO_TEST=m 1989CONFIG_CRYPTO_TEST=m
1950# CONFIG_CRYPTO_AUTHENC is not set 1990CONFIG_CRYPTO_AUTHENC=m
1991CONFIG_CRYPTO_LZO=m
1951# CONFIG_CRYPTO_HW is not set 1992# CONFIG_CRYPTO_HW is not set
1952# CONFIG_PPC_CLOCK is not set 1993# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/configs/ps3_defconfig b/arch/powerpc/configs/ps3_defconfig
index 7994955c29d3..7a64c564f6e6 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.24-rc8 3# Linux kernel version: 2.6.25-rc6
4# Wed Jan 16 14:31:21 2008 4# Thu Mar 20 11:07:04 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y
28CONFIG_GENERIC_TIME_VSYSCALL=y 28CONFIG_GENERIC_TIME_VSYSCALL=y
29CONFIG_GENERIC_CLOCKEVENTS=y 29CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_HAVE_SETUP_PER_CPU_AREA=y
31CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
32CONFIG_RWSEM_XCHGADD_ALGORITHM=y 33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
33CONFIG_ARCH_HAS_ILOG2_U32=y 34CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -51,7 +52,6 @@ CONFIG_GENERIC_BUG=y
51# CONFIG_DEFAULT_UIMAGE is not set 52# CONFIG_DEFAULT_UIMAGE is not set
52# CONFIG_PPC_DCR_NATIVE is not set 53# CONFIG_PPC_DCR_NATIVE is not set
53# CONFIG_PPC_DCR_MMIO is not set 54# CONFIG_PPC_DCR_MMIO is not set
54# CONFIG_PPC_OF_PLATFORM_PCI is not set
55CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 55CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
56 56
57# 57#
@@ -68,17 +68,21 @@ CONFIG_SYSVIPC_SYSCTL=y
68CONFIG_POSIX_MQUEUE=y 68CONFIG_POSIX_MQUEUE=y
69# CONFIG_BSD_PROCESS_ACCT is not set 69# CONFIG_BSD_PROCESS_ACCT is not set
70# CONFIG_TASKSTATS is not set 70# CONFIG_TASKSTATS is not set
71# CONFIG_USER_NS is not set
72# CONFIG_PID_NS is not set
73# CONFIG_AUDIT is not set 71# CONFIG_AUDIT is not set
74# CONFIG_IKCONFIG is not set 72# CONFIG_IKCONFIG is not set
75CONFIG_LOG_BUF_SHIFT=17 73CONFIG_LOG_BUF_SHIFT=17
76# CONFIG_CGROUPS is not set 74# CONFIG_CGROUPS is not set
77CONFIG_FAIR_GROUP_SCHED=y 75# CONFIG_GROUP_SCHED is not set
78CONFIG_FAIR_USER_SCHED=y 76# CONFIG_USER_SCHED is not set
79# CONFIG_FAIR_CGROUP_SCHED is not set 77# CONFIG_CGROUP_SCHED is not set
80CONFIG_SYSFS_DEPRECATED=y 78CONFIG_SYSFS_DEPRECATED=y
79CONFIG_SYSFS_DEPRECATED_V2=y
81# CONFIG_RELAY is not set 80# CONFIG_RELAY is not set
81CONFIG_NAMESPACES=y
82# CONFIG_UTS_NS is not set
83# CONFIG_IPC_NS is not set
84# CONFIG_USER_NS is not set
85# CONFIG_PID_NS is not set
82CONFIG_BLK_DEV_INITRD=y 86CONFIG_BLK_DEV_INITRD=y
83CONFIG_INITRAMFS_SOURCE="" 87CONFIG_INITRAMFS_SOURCE=""
84CONFIG_CC_OPTIMIZE_FOR_SIZE=y 88CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -92,17 +96,27 @@ CONFIG_HOTPLUG=y
92CONFIG_PRINTK=y 96CONFIG_PRINTK=y
93CONFIG_BUG=y 97CONFIG_BUG=y
94CONFIG_ELF_CORE=y 98CONFIG_ELF_CORE=y
99# CONFIG_COMPAT_BRK is not set
95CONFIG_BASE_FULL=y 100CONFIG_BASE_FULL=y
96CONFIG_FUTEX=y 101CONFIG_FUTEX=y
97CONFIG_ANON_INODES=y 102CONFIG_ANON_INODES=y
98CONFIG_EPOLL=y 103CONFIG_EPOLL=y
99CONFIG_SIGNALFD=y 104CONFIG_SIGNALFD=y
105CONFIG_TIMERFD=y
100CONFIG_EVENTFD=y 106CONFIG_EVENTFD=y
101CONFIG_SHMEM=y 107CONFIG_SHMEM=y
102CONFIG_VM_EVENT_COUNTERS=y 108CONFIG_VM_EVENT_COUNTERS=y
103CONFIG_SLAB=y 109CONFIG_SLAB=y
104# CONFIG_SLUB is not set 110# CONFIG_SLUB is not set
105# CONFIG_SLOB is not set 111# CONFIG_SLOB is not set
112CONFIG_PROFILING=y
113# CONFIG_MARKERS is not set
114CONFIG_OPROFILE=m
115CONFIG_HAVE_OPROFILE=y
116# CONFIG_KPROBES is not set
117CONFIG_HAVE_KPROBES=y
118CONFIG_HAVE_KRETPROBES=y
119CONFIG_PROC_PAGE_MONITOR=y
106CONFIG_SLABINFO=y 120CONFIG_SLABINFO=y
107CONFIG_RT_MUTEXES=y 121CONFIG_RT_MUTEXES=y
108# CONFIG_TINY_SHMEM is not set 122# CONFIG_TINY_SHMEM is not set
@@ -131,6 +145,7 @@ CONFIG_DEFAULT_AS=y
131# CONFIG_DEFAULT_CFQ is not set 145# CONFIG_DEFAULT_CFQ is not set
132# CONFIG_DEFAULT_NOOP is not set 146# CONFIG_DEFAULT_NOOP is not set
133CONFIG_DEFAULT_IOSCHED="anticipatory" 147CONFIG_DEFAULT_IOSCHED="anticipatory"
148CONFIG_CLASSIC_RCU=y
134 149
135# 150#
136# Platform support 151# Platform support
@@ -141,8 +156,8 @@ CONFIG_PPC_MULTIPLATFORM=y
141# CONFIG_PPC_86xx is not set 156# CONFIG_PPC_86xx is not set
142# CONFIG_PPC_PSERIES is not set 157# CONFIG_PPC_PSERIES is not set
143# CONFIG_PPC_ISERIES is not set 158# CONFIG_PPC_ISERIES is not set
144# CONFIG_PPC_MPC52xx is not set 159# CONFIG_PPC_MPC512x is not set
145# CONFIG_PPC_MPC5200 is not set 160# CONFIG_PPC_MPC5121 is not set
146# CONFIG_PPC_PMAC is not set 161# CONFIG_PPC_PMAC is not set
147# CONFIG_PPC_MAPLE is not set 162# CONFIG_PPC_MAPLE is not set
148# CONFIG_PPC_PASEMI is not set 163# CONFIG_PPC_PASEMI is not set
@@ -173,6 +188,7 @@ CONFIG_PPC_CELL=y
173CONFIG_SPU_FS=y 188CONFIG_SPU_FS=y
174CONFIG_SPU_BASE=y 189CONFIG_SPU_BASE=y
175# CONFIG_PQ2ADS is not set 190# CONFIG_PQ2ADS is not set
191# CONFIG_IPIC is not set
176# CONFIG_MPIC is not set 192# CONFIG_MPIC is not set
177# CONFIG_MPIC_WEIRD is not set 193# CONFIG_MPIC_WEIRD is not set
178# CONFIG_PPC_I8259 is not set 194# CONFIG_PPC_I8259 is not set
@@ -184,7 +200,6 @@ CONFIG_SPU_BASE=y
184# CONFIG_PPC_INDIRECT_IO is not set 200# CONFIG_PPC_INDIRECT_IO is not set
185# CONFIG_GENERIC_IOMAP is not set 201# CONFIG_GENERIC_IOMAP is not set
186# CONFIG_CPU_FREQ is not set 202# CONFIG_CPU_FREQ is not set
187# CONFIG_CPM2 is not set
188# CONFIG_FSL_ULI1575 is not set 203# CONFIG_FSL_ULI1575 is not set
189 204
190# 205#
@@ -199,15 +214,19 @@ CONFIG_HZ_250=y
199# CONFIG_HZ_300 is not set 214# CONFIG_HZ_300 is not set
200# CONFIG_HZ_1000 is not set 215# CONFIG_HZ_1000 is not set
201CONFIG_HZ=250 216CONFIG_HZ=250
217# CONFIG_SCHED_HRTICK is not set
202CONFIG_PREEMPT_NONE=y 218CONFIG_PREEMPT_NONE=y
203# CONFIG_PREEMPT_VOLUNTARY is not set 219# CONFIG_PREEMPT_VOLUNTARY is not set
204# CONFIG_PREEMPT is not set 220# CONFIG_PREEMPT is not set
205# CONFIG_PREEMPT_BKL is not set
206CONFIG_BINFMT_ELF=y 221CONFIG_BINFMT_ELF=y
222CONFIG_COMPAT_BINFMT_ELF=y
207CONFIG_BINFMT_MISC=y 223CONFIG_BINFMT_MISC=y
208CONFIG_FORCE_MAX_ZONEORDER=13 224CONFIG_FORCE_MAX_ZONEORDER=13
209# CONFIG_IOMMU_VMERGE is not set 225# CONFIG_IOMMU_VMERGE is not set
226CONFIG_IOMMU_HELPER=y
210CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 227CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
228CONFIG_ARCH_HAS_WALK_MEMORY=y
229CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
211CONFIG_KEXEC=y 230CONFIG_KEXEC=y
212# CONFIG_CRASH_DUMP is not set 231# CONFIG_CRASH_DUMP is not set
213# CONFIG_IRQ_ALL_CPUS is not set 232# CONFIG_IRQ_ALL_CPUS is not set
@@ -241,7 +260,6 @@ CONFIG_PROC_DEVICETREE=y
241# CONFIG_CMDLINE_BOOL is not set 260# CONFIG_CMDLINE_BOOL is not set
242# CONFIG_PM is not set 261# CONFIG_PM is not set
243# CONFIG_SECCOMP is not set 262# CONFIG_SECCOMP is not set
244# CONFIG_WANT_DEVICE_TREE is not set
245CONFIG_ISA_DMA_API=y 263CONFIG_ISA_DMA_API=y
246 264
247# 265#
@@ -271,6 +289,7 @@ CONFIG_XFRM=y
271# CONFIG_XFRM_USER is not set 289# CONFIG_XFRM_USER is not set
272# CONFIG_XFRM_SUB_POLICY is not set 290# CONFIG_XFRM_SUB_POLICY is not set
273# CONFIG_XFRM_MIGRATE is not set 291# CONFIG_XFRM_MIGRATE is not set
292# CONFIG_XFRM_STATISTICS is not set
274# CONFIG_NET_KEY is not set 293# CONFIG_NET_KEY is not set
275CONFIG_INET=y 294CONFIG_INET=y
276# CONFIG_IP_MULTICAST is not set 295# CONFIG_IP_MULTICAST is not set
@@ -338,6 +357,7 @@ CONFIG_IPV6_SIT=y
338# 357#
339# CONFIG_NET_PKTGEN is not set 358# CONFIG_NET_PKTGEN is not set
340# CONFIG_HAMRADIO is not set 359# CONFIG_HAMRADIO is not set
360# CONFIG_CAN is not set
341# CONFIG_IRDA is not set 361# CONFIG_IRDA is not set
342CONFIG_BT=m 362CONFIG_BT=m
343CONFIG_BT_L2CAP=m 363CONFIG_BT_L2CAP=m
@@ -405,11 +425,13 @@ CONFIG_BLK_DEV_LOOP=y
405CONFIG_BLK_DEV_RAM=y 425CONFIG_BLK_DEV_RAM=y
406CONFIG_BLK_DEV_RAM_COUNT=16 426CONFIG_BLK_DEV_RAM_COUNT=16
407CONFIG_BLK_DEV_RAM_SIZE=65535 427CONFIG_BLK_DEV_RAM_SIZE=65535
408CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 428# CONFIG_BLK_DEV_XIP is not set
409# CONFIG_CDROM_PKTCDVD is not set 429# CONFIG_CDROM_PKTCDVD is not set
410# CONFIG_ATA_OVER_ETH is not set 430# CONFIG_ATA_OVER_ETH is not set
411CONFIG_MISC_DEVICES=y 431CONFIG_MISC_DEVICES=y
412# CONFIG_EEPROM_93CX6 is not set 432# CONFIG_EEPROM_93CX6 is not set
433# CONFIG_ENCLOSURE_SERVICES is not set
434CONFIG_HAVE_IDE=y
413# CONFIG_IDE is not set 435# CONFIG_IDE is not set
414 436
415# 437#
@@ -472,7 +494,9 @@ CONFIG_MII=m
472# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 494# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
473# CONFIG_B44 is not set 495# CONFIG_B44 is not set
474CONFIG_NETDEV_1000=y 496CONFIG_NETDEV_1000=y
497# CONFIG_E1000E_ENABLED is not set
475CONFIG_GELIC_NET=y 498CONFIG_GELIC_NET=y
499CONFIG_GELIC_WIRELESS=y
476# CONFIG_NETDEV_10000 is not set 500# CONFIG_NETDEV_10000 is not set
477 501
478# 502#
@@ -482,9 +506,8 @@ CONFIG_GELIC_NET=y
482CONFIG_WLAN_80211=y 506CONFIG_WLAN_80211=y
483# CONFIG_LIBERTAS is not set 507# CONFIG_LIBERTAS is not set
484# CONFIG_USB_ZD1201 is not set 508# CONFIG_USB_ZD1201 is not set
509# CONFIG_USB_NET_RNDIS_WLAN is not set
485# CONFIG_HOSTAP is not set 510# CONFIG_HOSTAP is not set
486CONFIG_ZD1211RW=m
487# CONFIG_ZD1211RW_DEBUG is not set
488 511
489# 512#
490# USB Network Adapters 513# USB Network Adapters
@@ -507,7 +530,6 @@ CONFIG_USB_NET_MCS7830=m
507# CONFIG_WAN is not set 530# CONFIG_WAN is not set
508# CONFIG_PPP is not set 531# CONFIG_PPP is not set
509# CONFIG_SLIP is not set 532# CONFIG_SLIP is not set
510# CONFIG_SHAPER is not set
511# CONFIG_NETCONSOLE is not set 533# CONFIG_NETCONSOLE is not set
512# CONFIG_NETPOLL is not set 534# CONFIG_NETPOLL is not set
513# CONFIG_NET_POLL_CONTROLLER is not set 535# CONFIG_NET_POLL_CONTROLLER is not set
@@ -606,6 +628,7 @@ CONFIG_GEN_RTC=y
606# CONFIG_W1 is not set 628# CONFIG_W1 is not set
607# CONFIG_POWER_SUPPLY is not set 629# CONFIG_POWER_SUPPLY is not set
608# CONFIG_HWMON is not set 630# CONFIG_HWMON is not set
631# CONFIG_THERMAL is not set
609# CONFIG_WATCHDOG is not set 632# CONFIG_WATCHDOG is not set
610 633
611# 634#
@@ -742,6 +765,10 @@ CONFIG_SND_PS3_DEFAULT_START_DELAY=2000
742# 765#
743 766
744# 767#
768# ALSA SoC audio for Freescale SOCs
769#
770
771#
745# Open Sound System 772# Open Sound System
746# 773#
747# CONFIG_SOUND_PRIME is not set 774# CONFIG_SOUND_PRIME is not set
@@ -769,6 +796,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y
769CONFIG_USB_ARCH_HAS_EHCI=y 796CONFIG_USB_ARCH_HAS_EHCI=y
770CONFIG_USB=m 797CONFIG_USB=m
771# CONFIG_USB_DEBUG is not set 798# CONFIG_USB_DEBUG is not set
799# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
772 800
773# 801#
774# Miscellaneous USB options 802# Miscellaneous USB options
@@ -782,10 +810,10 @@ CONFIG_USB_DEVICEFS=y
782# USB Host Controller Drivers 810# USB Host Controller Drivers
783# 811#
784CONFIG_USB_EHCI_HCD=m 812CONFIG_USB_EHCI_HCD=m
785# CONFIG_USB_EHCI_SPLIT_ISO is not set
786# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 813# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
787# CONFIG_USB_EHCI_TT_NEWSCHED is not set 814# CONFIG_USB_EHCI_TT_NEWSCHED is not set
788CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y 815CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
816# CONFIG_USB_EHCI_HCD_PPC_OF is not set
789# CONFIG_USB_ISP116X_HCD is not set 817# CONFIG_USB_ISP116X_HCD is not set
790CONFIG_USB_OHCI_HCD=m 818CONFIG_USB_OHCI_HCD=m
791# CONFIG_USB_OHCI_HCD_PPC_OF is not set 819# CONFIG_USB_OHCI_HCD_PPC_OF is not set
@@ -833,10 +861,6 @@ CONFIG_USB_MON=y
833# 861#
834# USB port drivers 862# USB port drivers
835# 863#
836
837#
838# USB Serial Converter support
839#
840# CONFIG_USB_SERIAL is not set 864# CONFIG_USB_SERIAL is not set
841 865
842# 866#
@@ -862,19 +886,13 @@ CONFIG_USB_MON=y
862# CONFIG_USB_TRANCEVIBRATOR is not set 886# CONFIG_USB_TRANCEVIBRATOR is not set
863# CONFIG_USB_IOWARRIOR is not set 887# CONFIG_USB_IOWARRIOR is not set
864# CONFIG_USB_TEST is not set 888# CONFIG_USB_TEST is not set
865
866#
867# USB DSL modem support
868#
869
870#
871# USB Gadget Support
872#
873# CONFIG_USB_GADGET is not set 889# CONFIG_USB_GADGET is not set
874# CONFIG_MMC is not set 890# CONFIG_MMC is not set
891# CONFIG_MEMSTICK is not set
875# CONFIG_NEW_LEDS is not set 892# CONFIG_NEW_LEDS is not set
876# CONFIG_EDAC is not set 893# CONFIG_EDAC is not set
877# CONFIG_RTC_CLASS is not set 894# CONFIG_RTC_CLASS is not set
895# CONFIG_DMADEVICES is not set
878 896
879# 897#
880# Userspace I/O 898# Userspace I/O
@@ -900,8 +918,7 @@ CONFIG_FS_MBCACHE=y
900# CONFIG_XFS_FS is not set 918# CONFIG_XFS_FS is not set
901# CONFIG_GFS2_FS is not set 919# CONFIG_GFS2_FS is not set
902# CONFIG_OCFS2_FS is not set 920# CONFIG_OCFS2_FS is not set
903# CONFIG_MINIX_FS is not set 921CONFIG_DNOTIFY=y
904# CONFIG_ROMFS_FS is not set
905CONFIG_INOTIFY=y 922CONFIG_INOTIFY=y
906CONFIG_INOTIFY_USER=y 923CONFIG_INOTIFY_USER=y
907CONFIG_QUOTA=y 924CONFIG_QUOTA=y
@@ -910,7 +927,6 @@ CONFIG_PRINT_QUOTA_WARNING=y
910# CONFIG_QFMT_V1 is not set 927# CONFIG_QFMT_V1 is not set
911CONFIG_QFMT_V2=y 928CONFIG_QFMT_V2=y
912CONFIG_QUOTACTL=y 929CONFIG_QUOTACTL=y
913CONFIG_DNOTIFY=y
914CONFIG_AUTOFS_FS=m 930CONFIG_AUTOFS_FS=m
915CONFIG_AUTOFS4_FS=m 931CONFIG_AUTOFS4_FS=m
916# CONFIG_FUSE_FS is not set 932# CONFIG_FUSE_FS is not set
@@ -959,8 +975,10 @@ CONFIG_TMPFS=y
959# CONFIG_EFS_FS is not set 975# CONFIG_EFS_FS is not set
960# CONFIG_CRAMFS is not set 976# CONFIG_CRAMFS is not set
961# CONFIG_VXFS_FS is not set 977# CONFIG_VXFS_FS is not set
978# CONFIG_MINIX_FS is not set
962# CONFIG_HPFS_FS is not set 979# CONFIG_HPFS_FS is not set
963# CONFIG_QNX4FS_FS is not set 980# CONFIG_QNX4FS_FS is not set
981# CONFIG_ROMFS_FS is not set
964# CONFIG_SYSV_FS is not set 982# CONFIG_SYSV_FS is not set
965# CONFIG_UFS_FS is not set 983# CONFIG_UFS_FS is not set
966CONFIG_NETWORK_FILESYSTEMS=y 984CONFIG_NETWORK_FILESYSTEMS=y
@@ -1036,7 +1054,6 @@ CONFIG_NLS_ISO8859_1=y
1036# CONFIG_NLS_KOI8_U is not set 1054# CONFIG_NLS_KOI8_U is not set
1037# CONFIG_NLS_UTF8 is not set 1055# CONFIG_NLS_UTF8 is not set
1038# CONFIG_DLM is not set 1056# CONFIG_DLM is not set
1039# CONFIG_UCC_SLOW is not set
1040 1057
1041# 1058#
1042# Library routines 1059# Library routines
@@ -1048,15 +1065,12 @@ CONFIG_BITREVERSE=y
1048CONFIG_CRC32=y 1065CONFIG_CRC32=y
1049# CONFIG_CRC7 is not set 1066# CONFIG_CRC7 is not set
1050# CONFIG_LIBCRC32C is not set 1067# CONFIG_LIBCRC32C is not set
1068CONFIG_LZO_COMPRESS=m
1069CONFIG_LZO_DECOMPRESS=m
1051CONFIG_PLIST=y 1070CONFIG_PLIST=y
1052CONFIG_HAS_IOMEM=y 1071CONFIG_HAS_IOMEM=y
1053CONFIG_HAS_IOPORT=y 1072CONFIG_HAS_IOPORT=y
1054CONFIG_HAS_DMA=y 1073CONFIG_HAS_DMA=y
1055CONFIG_INSTRUMENTATION=y
1056CONFIG_PROFILING=y
1057CONFIG_OPROFILE=m
1058# CONFIG_KPROBES is not set
1059# CONFIG_MARKERS is not set
1060 1074
1061# 1075#
1062# Kernel hacking 1076# Kernel hacking
@@ -1087,9 +1101,9 @@ CONFIG_DEBUG_INFO=y
1087# CONFIG_DEBUG_VM is not set 1101# CONFIG_DEBUG_VM is not set
1088CONFIG_DEBUG_LIST=y 1102CONFIG_DEBUG_LIST=y
1089# CONFIG_DEBUG_SG is not set 1103# CONFIG_DEBUG_SG is not set
1090CONFIG_FORCED_INLINING=y
1091# CONFIG_BOOT_PRINTK_DELAY is not set 1104# CONFIG_BOOT_PRINTK_DELAY is not set
1092# CONFIG_RCU_TORTURE_TEST is not set 1105# CONFIG_RCU_TORTURE_TEST is not set
1106# CONFIG_BACKTRACE_SELF_TEST is not set
1093# CONFIG_FAULT_INJECTION is not set 1107# CONFIG_FAULT_INJECTION is not set
1094# CONFIG_SAMPLES is not set 1108# CONFIG_SAMPLES is not set
1095CONFIG_DEBUG_STACKOVERFLOW=y 1109CONFIG_DEBUG_STACKOVERFLOW=y
@@ -1108,7 +1122,9 @@ CONFIG_IRQSTACKS=y
1108# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1122# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1109CONFIG_CRYPTO=y 1123CONFIG_CRYPTO=y
1110CONFIG_CRYPTO_ALGAPI=y 1124CONFIG_CRYPTO_ALGAPI=y
1125CONFIG_CRYPTO_AEAD=m
1111CONFIG_CRYPTO_BLKCIPHER=y 1126CONFIG_CRYPTO_BLKCIPHER=y
1127CONFIG_CRYPTO_SEQIV=m
1112CONFIG_CRYPTO_MANAGER=y 1128CONFIG_CRYPTO_MANAGER=y
1113# CONFIG_CRYPTO_HMAC is not set 1129# CONFIG_CRYPTO_HMAC is not set
1114# CONFIG_CRYPTO_XCBC is not set 1130# CONFIG_CRYPTO_XCBC is not set
@@ -1120,12 +1136,15 @@ CONFIG_CRYPTO_MD5=y
1120# CONFIG_CRYPTO_SHA512 is not set 1136# CONFIG_CRYPTO_SHA512 is not set
1121# CONFIG_CRYPTO_WP512 is not set 1137# CONFIG_CRYPTO_WP512 is not set
1122# CONFIG_CRYPTO_TGR192 is not set 1138# CONFIG_CRYPTO_TGR192 is not set
1123# CONFIG_CRYPTO_GF128MUL is not set 1139CONFIG_CRYPTO_GF128MUL=m
1124CONFIG_CRYPTO_ECB=m 1140CONFIG_CRYPTO_ECB=m
1125CONFIG_CRYPTO_CBC=y 1141CONFIG_CRYPTO_CBC=y
1126CONFIG_CRYPTO_PCBC=m 1142CONFIG_CRYPTO_PCBC=m
1127# CONFIG_CRYPTO_LRW is not set 1143# CONFIG_CRYPTO_LRW is not set
1128# CONFIG_CRYPTO_XTS is not set 1144# CONFIG_CRYPTO_XTS is not set
1145CONFIG_CRYPTO_CTR=m
1146CONFIG_CRYPTO_GCM=m
1147CONFIG_CRYPTO_CCM=m
1129# CONFIG_CRYPTO_CRYPTD is not set 1148# CONFIG_CRYPTO_CRYPTD is not set
1130CONFIG_CRYPTO_DES=y 1149CONFIG_CRYPTO_DES=y
1131# CONFIG_CRYPTO_FCRYPT is not set 1150# CONFIG_CRYPTO_FCRYPT is not set
@@ -1140,11 +1159,13 @@ CONFIG_CRYPTO_ARC4=m
1140# CONFIG_CRYPTO_KHAZAD is not set 1159# CONFIG_CRYPTO_KHAZAD is not set
1141# CONFIG_CRYPTO_ANUBIS is not set 1160# CONFIG_CRYPTO_ANUBIS is not set
1142# CONFIG_CRYPTO_SEED is not set 1161# CONFIG_CRYPTO_SEED is not set
1162CONFIG_CRYPTO_SALSA20=m
1143# CONFIG_CRYPTO_DEFLATE is not set 1163# CONFIG_CRYPTO_DEFLATE is not set
1144CONFIG_CRYPTO_MICHAEL_MIC=m 1164CONFIG_CRYPTO_MICHAEL_MIC=m
1145# CONFIG_CRYPTO_CRC32C is not set 1165# CONFIG_CRYPTO_CRC32C is not set
1146# CONFIG_CRYPTO_CAMELLIA is not set 1166# CONFIG_CRYPTO_CAMELLIA is not set
1147# CONFIG_CRYPTO_TEST is not set 1167# CONFIG_CRYPTO_TEST is not set
1148# CONFIG_CRYPTO_AUTHENC is not set 1168# CONFIG_CRYPTO_AUTHENC is not set
1169CONFIG_CRYPTO_LZO=m
1149CONFIG_CRYPTO_HW=y 1170CONFIG_CRYPTO_HW=y
1150# CONFIG_PPC_CLOCK is not set 1171# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig
index 92bbf51ad4f0..755aca72b522 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.24-rc4 3# Linux kernel version: 2.6.25-rc6
4# Thu Dec 6 16:49:15 2007 4# Thu Mar 20 11:08:01 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y
28CONFIG_GENERIC_TIME_VSYSCALL=y 28CONFIG_GENERIC_TIME_VSYSCALL=y
29CONFIG_GENERIC_CLOCKEVENTS=y 29CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_HAVE_SETUP_PER_CPU_AREA=y
31CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
32CONFIG_RWSEM_XCHGADD_ALGORITHM=y 33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
33CONFIG_ARCH_HAS_ILOG2_U32=y 34CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -71,8 +72,6 @@ CONFIG_TASKSTATS=y
71CONFIG_TASK_DELAY_ACCT=y 72CONFIG_TASK_DELAY_ACCT=y
72CONFIG_TASK_XACCT=y 73CONFIG_TASK_XACCT=y
73CONFIG_TASK_IO_ACCOUNTING=y 74CONFIG_TASK_IO_ACCOUNTING=y
74# CONFIG_USER_NS is not set
75# CONFIG_PID_NS is not set
76CONFIG_AUDIT=y 75CONFIG_AUDIT=y
77CONFIG_AUDITSYSCALL=y 76CONFIG_AUDITSYSCALL=y
78CONFIG_AUDIT_TREE=y 77CONFIG_AUDIT_TREE=y
@@ -83,13 +82,20 @@ CONFIG_CGROUPS=y
83# CONFIG_CGROUP_DEBUG is not set 82# CONFIG_CGROUP_DEBUG is not set
84CONFIG_CGROUP_NS=y 83CONFIG_CGROUP_NS=y
85CONFIG_CPUSETS=y 84CONFIG_CPUSETS=y
86CONFIG_FAIR_GROUP_SCHED=y 85# CONFIG_GROUP_SCHED is not set
87# CONFIG_FAIR_USER_SCHED is not set 86# CONFIG_USER_SCHED is not set
88CONFIG_FAIR_CGROUP_SCHED=y 87# CONFIG_CGROUP_SCHED is not set
89CONFIG_CGROUP_CPUACCT=y 88CONFIG_CGROUP_CPUACCT=y
89# CONFIG_RESOURCE_COUNTERS is not set
90CONFIG_SYSFS_DEPRECATED=y 90CONFIG_SYSFS_DEPRECATED=y
91CONFIG_SYSFS_DEPRECATED_V2=y
91CONFIG_PROC_PID_CPUSET=y 92CONFIG_PROC_PID_CPUSET=y
92# CONFIG_RELAY is not set 93# CONFIG_RELAY is not set
94CONFIG_NAMESPACES=y
95# CONFIG_UTS_NS is not set
96# CONFIG_IPC_NS is not set
97# CONFIG_USER_NS is not set
98# CONFIG_PID_NS is not set
93CONFIG_BLK_DEV_INITRD=y 99CONFIG_BLK_DEV_INITRD=y
94CONFIG_INITRAMFS_SOURCE="" 100CONFIG_INITRAMFS_SOURCE=""
95CONFIG_CC_OPTIMIZE_FOR_SIZE=y 101CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -103,11 +109,13 @@ CONFIG_HOTPLUG=y
103CONFIG_PRINTK=y 109CONFIG_PRINTK=y
104CONFIG_BUG=y 110CONFIG_BUG=y
105CONFIG_ELF_CORE=y 111CONFIG_ELF_CORE=y
112# CONFIG_COMPAT_BRK is not set
106CONFIG_BASE_FULL=y 113CONFIG_BASE_FULL=y
107CONFIG_FUTEX=y 114CONFIG_FUTEX=y
108CONFIG_ANON_INODES=y 115CONFIG_ANON_INODES=y
109CONFIG_EPOLL=y 116CONFIG_EPOLL=y
110CONFIG_SIGNALFD=y 117CONFIG_SIGNALFD=y
118CONFIG_TIMERFD=y
111CONFIG_EVENTFD=y 119CONFIG_EVENTFD=y
112CONFIG_SHMEM=y 120CONFIG_SHMEM=y
113CONFIG_VM_EVENT_COUNTERS=y 121CONFIG_VM_EVENT_COUNTERS=y
@@ -115,6 +123,16 @@ CONFIG_SLUB_DEBUG=y
115# CONFIG_SLAB is not set 123# CONFIG_SLAB is not set
116CONFIG_SLUB=y 124CONFIG_SLUB=y
117# CONFIG_SLOB is not set 125# CONFIG_SLOB is not set
126CONFIG_PROFILING=y
127CONFIG_MARKERS=y
128CONFIG_OPROFILE=y
129CONFIG_HAVE_OPROFILE=y
130CONFIG_KPROBES=y
131CONFIG_KRETPROBES=y
132CONFIG_HAVE_KPROBES=y
133CONFIG_HAVE_KRETPROBES=y
134CONFIG_PROC_PAGE_MONITOR=y
135CONFIG_SLABINFO=y
118CONFIG_RT_MUTEXES=y 136CONFIG_RT_MUTEXES=y
119# CONFIG_TINY_SHMEM is not set 137# CONFIG_TINY_SHMEM is not set
120CONFIG_BASE_SMALL=0 138CONFIG_BASE_SMALL=0
@@ -142,6 +160,7 @@ CONFIG_DEFAULT_AS=y
142# CONFIG_DEFAULT_CFQ is not set 160# CONFIG_DEFAULT_CFQ is not set
143# CONFIG_DEFAULT_NOOP is not set 161# CONFIG_DEFAULT_NOOP is not set
144CONFIG_DEFAULT_IOSCHED="anticipatory" 162CONFIG_DEFAULT_IOSCHED="anticipatory"
163CONFIG_CLASSIC_RCU=y
145 164
146# 165#
147# Platform support 166# Platform support
@@ -156,8 +175,8 @@ CONFIG_EEH=y
156CONFIG_SCANLOG=m 175CONFIG_SCANLOG=m
157CONFIG_LPARCFG=y 176CONFIG_LPARCFG=y
158# CONFIG_PPC_ISERIES is not set 177# CONFIG_PPC_ISERIES is not set
159# CONFIG_PPC_MPC52xx is not set 178# CONFIG_PPC_MPC512x is not set
160# CONFIG_PPC_MPC5200 is not set 179# CONFIG_PPC_MPC5121 is not set
161# CONFIG_PPC_PMAC is not set 180# CONFIG_PPC_PMAC is not set
162# CONFIG_PPC_MAPLE is not set 181# CONFIG_PPC_MAPLE is not set
163# CONFIG_PPC_PASEMI is not set 182# CONFIG_PPC_PASEMI is not set
@@ -170,6 +189,7 @@ CONFIG_LPARCFG=y
170CONFIG_PPC_NATIVE=y 189CONFIG_PPC_NATIVE=y
171# CONFIG_UDBG_RTAS_CONSOLE is not set 190# CONFIG_UDBG_RTAS_CONSOLE is not set
172CONFIG_XICS=y 191CONFIG_XICS=y
192# CONFIG_IPIC is not set
173CONFIG_MPIC=y 193CONFIG_MPIC=y
174# CONFIG_MPIC_WEIRD is not set 194# CONFIG_MPIC_WEIRD is not set
175CONFIG_PPC_I8259=y 195CONFIG_PPC_I8259=y
@@ -186,7 +206,6 @@ CONFIG_IBMEBUS=y
186# CONFIG_PPC_INDIRECT_IO is not set 206# CONFIG_PPC_INDIRECT_IO is not set
187# CONFIG_GENERIC_IOMAP is not set 207# CONFIG_GENERIC_IOMAP is not set
188# CONFIG_CPU_FREQ is not set 208# CONFIG_CPU_FREQ is not set
189# CONFIG_CPM2 is not set
190# CONFIG_FSL_ULI1575 is not set 209# CONFIG_FSL_ULI1575 is not set
191 210
192# 211#
@@ -201,17 +220,21 @@ CONFIG_HZ_250=y
201# CONFIG_HZ_300 is not set 220# CONFIG_HZ_300 is not set
202# CONFIG_HZ_1000 is not set 221# CONFIG_HZ_1000 is not set
203CONFIG_HZ=250 222CONFIG_HZ=250
223# CONFIG_SCHED_HRTICK is not set
204CONFIG_PREEMPT_NONE=y 224CONFIG_PREEMPT_NONE=y
205# CONFIG_PREEMPT_VOLUNTARY is not set 225# CONFIG_PREEMPT_VOLUNTARY is not set
206# CONFIG_PREEMPT is not set 226# CONFIG_PREEMPT is not set
207# CONFIG_PREEMPT_BKL is not set
208CONFIG_BINFMT_ELF=y 227CONFIG_BINFMT_ELF=y
228CONFIG_COMPAT_BINFMT_ELF=y
209CONFIG_BINFMT_MISC=m 229CONFIG_BINFMT_MISC=m
210CONFIG_FORCE_MAX_ZONEORDER=13 230CONFIG_FORCE_MAX_ZONEORDER=13
211CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y 231CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
212CONFIG_IOMMU_VMERGE=y 232CONFIG_IOMMU_VMERGE=y
233CONFIG_IOMMU_HELPER=y
213CONFIG_HOTPLUG_CPU=y 234CONFIG_HOTPLUG_CPU=y
214CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 235CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
236CONFIG_ARCH_HAS_WALK_MEMORY=y
237CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
215CONFIG_KEXEC=y 238CONFIG_KEXEC=y
216# CONFIG_CRASH_DUMP is not set 239# CONFIG_CRASH_DUMP is not set
217CONFIG_IRQ_ALL_CPUS=y 240CONFIG_IRQ_ALL_CPUS=y
@@ -245,9 +268,7 @@ CONFIG_SCHED_SMT=y
245CONFIG_PROC_DEVICETREE=y 268CONFIG_PROC_DEVICETREE=y
246# CONFIG_CMDLINE_BOOL is not set 269# CONFIG_CMDLINE_BOOL is not set
247# CONFIG_PM is not set 270# CONFIG_PM is not set
248CONFIG_SUSPEND_SMP_POSSIBLE=y
249CONFIG_SECCOMP=y 271CONFIG_SECCOMP=y
250# CONFIG_WANT_DEVICE_TREE is not set
251CONFIG_ISA_DMA_API=y 272CONFIG_ISA_DMA_API=y
252 273
253# 274#
@@ -288,6 +309,7 @@ CONFIG_XFRM=y
288CONFIG_XFRM_USER=m 309CONFIG_XFRM_USER=m
289# CONFIG_XFRM_SUB_POLICY is not set 310# CONFIG_XFRM_SUB_POLICY is not set
290# CONFIG_XFRM_MIGRATE is not set 311# CONFIG_XFRM_MIGRATE is not set
312# CONFIG_XFRM_STATISTICS is not set
291CONFIG_NET_KEY=m 313CONFIG_NET_KEY=m
292# CONFIG_NET_KEY_MIGRATE is not set 314# CONFIG_NET_KEY_MIGRATE is not set
293CONFIG_INET=y 315CONFIG_INET=y
@@ -322,14 +344,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
322# CONFIG_NETWORK_SECMARK is not set 344# CONFIG_NETWORK_SECMARK is not set
323CONFIG_NETFILTER=y 345CONFIG_NETFILTER=y
324# CONFIG_NETFILTER_DEBUG is not set 346# CONFIG_NETFILTER_DEBUG is not set
347CONFIG_NETFILTER_ADVANCED=y
325 348
326# 349#
327# Core Netfilter Configuration 350# Core Netfilter Configuration
328# 351#
329CONFIG_NETFILTER_NETLINK=y 352CONFIG_NETFILTER_NETLINK=m
330CONFIG_NETFILTER_NETLINK_QUEUE=m 353CONFIG_NETFILTER_NETLINK_QUEUE=m
331CONFIG_NETFILTER_NETLINK_LOG=m 354CONFIG_NETFILTER_NETLINK_LOG=m
332CONFIG_NF_CONNTRACK_ENABLED=m
333CONFIG_NF_CONNTRACK=m 355CONFIG_NF_CONNTRACK=m
334CONFIG_NF_CT_ACCT=y 356CONFIG_NF_CT_ACCT=y
335CONFIG_NF_CONNTRACK_MARK=y 357CONFIG_NF_CONNTRACK_MARK=y
@@ -351,6 +373,7 @@ CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
351CONFIG_NETFILTER_XT_TARGET_MARK=m 373CONFIG_NETFILTER_XT_TARGET_MARK=m
352CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 374CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
353CONFIG_NETFILTER_XT_TARGET_NFLOG=m 375CONFIG_NETFILTER_XT_TARGET_NFLOG=m
376CONFIG_NETFILTER_XT_TARGET_RATEEST=m
354CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 377CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
355CONFIG_NETFILTER_XT_MATCH_COMMENT=m 378CONFIG_NETFILTER_XT_MATCH_COMMENT=m
356CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 379CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
@@ -361,14 +384,17 @@ CONFIG_NETFILTER_XT_MATCH_DCCP=m
361CONFIG_NETFILTER_XT_MATCH_DSCP=m 384CONFIG_NETFILTER_XT_MATCH_DSCP=m
362CONFIG_NETFILTER_XT_MATCH_ESP=m 385CONFIG_NETFILTER_XT_MATCH_ESP=m
363CONFIG_NETFILTER_XT_MATCH_HELPER=m 386CONFIG_NETFILTER_XT_MATCH_HELPER=m
387CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
364CONFIG_NETFILTER_XT_MATCH_LENGTH=m 388CONFIG_NETFILTER_XT_MATCH_LENGTH=m
365CONFIG_NETFILTER_XT_MATCH_LIMIT=m 389CONFIG_NETFILTER_XT_MATCH_LIMIT=m
366CONFIG_NETFILTER_XT_MATCH_MAC=m 390CONFIG_NETFILTER_XT_MATCH_MAC=m
367CONFIG_NETFILTER_XT_MATCH_MARK=m 391CONFIG_NETFILTER_XT_MATCH_MARK=m
392CONFIG_NETFILTER_XT_MATCH_OWNER=m
368CONFIG_NETFILTER_XT_MATCH_POLICY=m 393CONFIG_NETFILTER_XT_MATCH_POLICY=m
369CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 394CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
370CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 395CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
371CONFIG_NETFILTER_XT_MATCH_QUOTA=m 396CONFIG_NETFILTER_XT_MATCH_QUOTA=m
397CONFIG_NETFILTER_XT_MATCH_RATEEST=m
372CONFIG_NETFILTER_XT_MATCH_REALM=m 398CONFIG_NETFILTER_XT_MATCH_REALM=m
373CONFIG_NETFILTER_XT_MATCH_SCTP=m 399CONFIG_NETFILTER_XT_MATCH_SCTP=m
374CONFIG_NETFILTER_XT_MATCH_STATE=m 400CONFIG_NETFILTER_XT_MATCH_STATE=m
@@ -386,13 +412,10 @@ CONFIG_NF_CONNTRACK_IPV4=m
386CONFIG_NF_CONNTRACK_PROC_COMPAT=y 412CONFIG_NF_CONNTRACK_PROC_COMPAT=y
387CONFIG_IP_NF_QUEUE=m 413CONFIG_IP_NF_QUEUE=m
388CONFIG_IP_NF_IPTABLES=m 414CONFIG_IP_NF_IPTABLES=m
389CONFIG_IP_NF_MATCH_IPRANGE=m
390CONFIG_IP_NF_MATCH_TOS=m
391CONFIG_IP_NF_MATCH_RECENT=m 415CONFIG_IP_NF_MATCH_RECENT=m
392CONFIG_IP_NF_MATCH_ECN=m 416CONFIG_IP_NF_MATCH_ECN=m
393CONFIG_IP_NF_MATCH_AH=m 417CONFIG_IP_NF_MATCH_AH=m
394CONFIG_IP_NF_MATCH_TTL=m 418CONFIG_IP_NF_MATCH_TTL=m
395CONFIG_IP_NF_MATCH_OWNER=m
396CONFIG_IP_NF_MATCH_ADDRTYPE=m 419CONFIG_IP_NF_MATCH_ADDRTYPE=m
397CONFIG_IP_NF_FILTER=m 420CONFIG_IP_NF_FILTER=m
398CONFIG_IP_NF_TARGET_REJECT=m 421CONFIG_IP_NF_TARGET_REJECT=m
@@ -403,7 +426,6 @@ CONFIG_NF_NAT_NEEDED=y
403CONFIG_IP_NF_TARGET_MASQUERADE=m 426CONFIG_IP_NF_TARGET_MASQUERADE=m
404CONFIG_IP_NF_TARGET_REDIRECT=m 427CONFIG_IP_NF_TARGET_REDIRECT=m
405CONFIG_IP_NF_TARGET_NETMAP=m 428CONFIG_IP_NF_TARGET_NETMAP=m
406CONFIG_IP_NF_TARGET_SAME=m
407CONFIG_NF_NAT_SNMP_BASIC=m 429CONFIG_NF_NAT_SNMP_BASIC=m
408CONFIG_NF_NAT_FTP=m 430CONFIG_NF_NAT_FTP=m
409CONFIG_NF_NAT_IRC=m 431CONFIG_NF_NAT_IRC=m
@@ -439,6 +461,7 @@ CONFIG_NET_CLS_ROUTE=y
439# CONFIG_NET_PKTGEN is not set 461# CONFIG_NET_PKTGEN is not set
440# CONFIG_NET_TCPPROBE is not set 462# CONFIG_NET_TCPPROBE is not set
441# CONFIG_HAMRADIO is not set 463# CONFIG_HAMRADIO is not set
464# CONFIG_CAN is not set
442# CONFIG_IRDA is not set 465# CONFIG_IRDA is not set
443# CONFIG_BT is not set 466# CONFIG_BT is not set
444# CONFIG_AF_RXRPC is not set 467# CONFIG_AF_RXRPC is not set
@@ -493,7 +516,7 @@ CONFIG_BLK_DEV_NBD=m
493CONFIG_BLK_DEV_RAM=y 516CONFIG_BLK_DEV_RAM=y
494CONFIG_BLK_DEV_RAM_COUNT=16 517CONFIG_BLK_DEV_RAM_COUNT=16
495CONFIG_BLK_DEV_RAM_SIZE=65536 518CONFIG_BLK_DEV_RAM_SIZE=65536
496CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 519# CONFIG_BLK_DEV_XIP is not set
497# CONFIG_CDROM_PKTCDVD is not set 520# CONFIG_CDROM_PKTCDVD is not set
498# CONFIG_ATA_OVER_ETH is not set 521# CONFIG_ATA_OVER_ETH is not set
499CONFIG_MISC_DEVICES=y 522CONFIG_MISC_DEVICES=y
@@ -501,16 +524,19 @@ CONFIG_MISC_DEVICES=y
501# CONFIG_EEPROM_93CX6 is not set 524# CONFIG_EEPROM_93CX6 is not set
502# CONFIG_SGI_IOC4 is not set 525# CONFIG_SGI_IOC4 is not set
503# CONFIG_TIFM_CORE is not set 526# CONFIG_TIFM_CORE is not set
527# CONFIG_ENCLOSURE_SERVICES is not set
528CONFIG_HAVE_IDE=y
504CONFIG_IDE=y 529CONFIG_IDE=y
505CONFIG_BLK_DEV_IDE=y 530CONFIG_BLK_DEV_IDE=y
506 531
507# 532#
508# Please see Documentation/ide.txt for help/info on IDE drives 533# Please see Documentation/ide/ide.txt for help/info on IDE drives
509# 534#
510# CONFIG_BLK_DEV_IDE_SATA is not set 535# CONFIG_BLK_DEV_IDE_SATA is not set
511CONFIG_BLK_DEV_IDEDISK=y 536CONFIG_BLK_DEV_IDEDISK=y
512# CONFIG_IDEDISK_MULTI_MODE is not set 537# CONFIG_IDEDISK_MULTI_MODE is not set
513CONFIG_BLK_DEV_IDECD=y 538CONFIG_BLK_DEV_IDECD=y
539CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
514# CONFIG_BLK_DEV_IDETAPE is not set 540# CONFIG_BLK_DEV_IDETAPE is not set
515# CONFIG_BLK_DEV_IDEFLOPPY is not set 541# CONFIG_BLK_DEV_IDEFLOPPY is not set
516# CONFIG_BLK_DEV_IDESCSI is not set 542# CONFIG_BLK_DEV_IDESCSI is not set
@@ -522,12 +548,12 @@ CONFIG_IDE_PROC_FS=y
522# 548#
523CONFIG_IDE_GENERIC=y 549CONFIG_IDE_GENERIC=y
524# CONFIG_BLK_DEV_PLATFORM is not set 550# CONFIG_BLK_DEV_PLATFORM is not set
551CONFIG_BLK_DEV_IDEDMA_SFF=y
525 552
526# 553#
527# PCI IDE chipsets support 554# PCI IDE chipsets support
528# 555#
529CONFIG_BLK_DEV_IDEPCI=y 556CONFIG_BLK_DEV_IDEPCI=y
530CONFIG_IDEPCI_SHARE_IRQ=y
531CONFIG_IDEPCI_PCIBUS_ORDER=y 557CONFIG_IDEPCI_PCIBUS_ORDER=y
532# CONFIG_BLK_DEV_OFFBOARD is not set 558# CONFIG_BLK_DEV_OFFBOARD is not set
533CONFIG_BLK_DEV_GENERIC=y 559CONFIG_BLK_DEV_GENERIC=y
@@ -558,7 +584,6 @@ CONFIG_BLK_DEV_AMD74XX=y
558# CONFIG_BLK_DEV_TRM290 is not set 584# CONFIG_BLK_DEV_TRM290 is not set
559# CONFIG_BLK_DEV_VIA82CXXX is not set 585# CONFIG_BLK_DEV_VIA82CXXX is not set
560# CONFIG_BLK_DEV_TC86C001 is not set 586# CONFIG_BLK_DEV_TC86C001 is not set
561# CONFIG_IDE_ARM is not set
562CONFIG_BLK_DEV_IDEDMA=y 587CONFIG_BLK_DEV_IDEDMA=y
563CONFIG_IDE_ARCH_OBSOLETE_INIT=y 588CONFIG_IDE_ARCH_OBSOLETE_INIT=y
564# CONFIG_BLK_DEV_HD is not set 589# CONFIG_BLK_DEV_HD is not set
@@ -627,6 +652,7 @@ CONFIG_SCSI_IBMVSCSI=y
627# CONFIG_SCSI_INIA100 is not set 652# CONFIG_SCSI_INIA100 is not set
628# CONFIG_SCSI_PPA is not set 653# CONFIG_SCSI_PPA is not set
629# CONFIG_SCSI_IMM is not set 654# CONFIG_SCSI_IMM is not set
655# CONFIG_SCSI_MVSAS is not set
630# CONFIG_SCSI_STEX is not set 656# CONFIG_SCSI_STEX is not set
631CONFIG_SCSI_SYM53C8XX_2=y 657CONFIG_SCSI_SYM53C8XX_2=y
632CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 658CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
@@ -685,6 +711,7 @@ CONFIG_ATA=y
685# CONFIG_PATA_MPIIX is not set 711# CONFIG_PATA_MPIIX is not set
686# CONFIG_PATA_OLDPIIX is not set 712# CONFIG_PATA_OLDPIIX is not set
687# CONFIG_PATA_NETCELL is not set 713# CONFIG_PATA_NETCELL is not set
714# CONFIG_PATA_NINJA32 is not set
688# CONFIG_PATA_NS87410 is not set 715# CONFIG_PATA_NS87410 is not set
689# CONFIG_PATA_NS87415 is not set 716# CONFIG_PATA_NS87415 is not set
690# CONFIG_PATA_OPTI is not set 717# CONFIG_PATA_OPTI is not set
@@ -699,6 +726,7 @@ CONFIG_ATA=y
699# CONFIG_PATA_SIS is not set 726# CONFIG_PATA_SIS is not set
700# CONFIG_PATA_VIA is not set 727# CONFIG_PATA_VIA is not set
701CONFIG_PATA_WINBOND=y 728CONFIG_PATA_WINBOND=y
729# CONFIG_PATA_PLATFORM is not set
702CONFIG_MD=y 730CONFIG_MD=y
703CONFIG_BLK_DEV_MD=y 731CONFIG_BLK_DEV_MD=y
704CONFIG_MD_LINEAR=y 732CONFIG_MD_LINEAR=y
@@ -737,7 +765,6 @@ CONFIG_BONDING=m
737# CONFIG_EQUALIZER is not set 765# CONFIG_EQUALIZER is not set
738CONFIG_TUN=m 766CONFIG_TUN=m
739# CONFIG_VETH is not set 767# CONFIG_VETH is not set
740# CONFIG_IP1000 is not set
741# CONFIG_ARCNET is not set 768# CONFIG_ARCNET is not set
742# CONFIG_PHYLIB is not set 769# CONFIG_PHYLIB is not set
743CONFIG_NET_ETHERNET=y 770CONFIG_NET_ETHERNET=y
@@ -769,6 +796,7 @@ CONFIG_E100=y
769# CONFIG_NE2K_PCI is not set 796# CONFIG_NE2K_PCI is not set
770# CONFIG_8139CP is not set 797# CONFIG_8139CP is not set
771# CONFIG_8139TOO is not set 798# CONFIG_8139TOO is not set
799# CONFIG_R6040 is not set
772# CONFIG_SIS900 is not set 800# CONFIG_SIS900 is not set
773# CONFIG_EPIC100 is not set 801# CONFIG_EPIC100 is not set
774# CONFIG_SUNDANCE is not set 802# CONFIG_SUNDANCE is not set
@@ -783,6 +811,9 @@ CONFIG_E1000=y
783# CONFIG_E1000_NAPI is not set 811# CONFIG_E1000_NAPI is not set
784# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 812# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
785# CONFIG_E1000E is not set 813# CONFIG_E1000E is not set
814# CONFIG_E1000E_ENABLED is not set
815# CONFIG_IP1000 is not set
816# CONFIG_IGB is not set
786# CONFIG_NS83820 is not set 817# CONFIG_NS83820 is not set
787# CONFIG_HAMACHI is not set 818# CONFIG_HAMACHI is not set
788# CONFIG_YELLOWFIN is not set 819# CONFIG_YELLOWFIN is not set
@@ -811,6 +842,7 @@ CONFIG_S2IO=m
811# CONFIG_PASEMI_MAC is not set 842# CONFIG_PASEMI_MAC is not set
812# CONFIG_MLX4_CORE is not set 843# CONFIG_MLX4_CORE is not set
813# CONFIG_TEHUTI is not set 844# CONFIG_TEHUTI is not set
845# CONFIG_BNX2X is not set
814CONFIG_TR=y 846CONFIG_TR=y
815CONFIG_IBMOL=y 847CONFIG_IBMOL=y
816# CONFIG_3C359 is not set 848# CONFIG_3C359 is not set
@@ -847,7 +879,6 @@ CONFIG_PPPOE=m
847# CONFIG_SLIP is not set 879# CONFIG_SLIP is not set
848CONFIG_SLHC=m 880CONFIG_SLHC=m
849# CONFIG_NET_FC is not set 881# CONFIG_NET_FC is not set
850# CONFIG_SHAPER is not set
851CONFIG_NETCONSOLE=y 882CONFIG_NETCONSOLE=y
852# CONFIG_NETCONSOLE_DYNAMIC is not set 883# CONFIG_NETCONSOLE_DYNAMIC is not set
853CONFIG_NETPOLL=y 884CONFIG_NETPOLL=y
@@ -927,6 +958,7 @@ CONFIG_VT_CONSOLE=y
927CONFIG_HW_CONSOLE=y 958CONFIG_HW_CONSOLE=y
928# CONFIG_VT_HW_CONSOLE_BINDING is not set 959# CONFIG_VT_HW_CONSOLE_BINDING is not set
929# CONFIG_SERIAL_NONSTANDARD is not set 960# CONFIG_SERIAL_NONSTANDARD is not set
961# CONFIG_NOZOMI is not set
930 962
931# 963#
932# Serial drivers 964# Serial drivers
@@ -951,7 +983,6 @@ CONFIG_LEGACY_PTYS=y
951CONFIG_LEGACY_PTY_COUNT=256 983CONFIG_LEGACY_PTY_COUNT=256
952# CONFIG_PRINTER is not set 984# CONFIG_PRINTER is not set
953# CONFIG_PPDEV is not set 985# CONFIG_PPDEV is not set
954# CONFIG_TIPAR is not set
955CONFIG_HVC_DRIVER=y 986CONFIG_HVC_DRIVER=y
956CONFIG_HVC_CONSOLE=y 987CONFIG_HVC_CONSOLE=y
957CONFIG_HVC_RTAS=y 988CONFIG_HVC_RTAS=y
@@ -1009,13 +1040,12 @@ CONFIG_I2C_ALGOBIT=y
1009# 1040#
1010# Miscellaneous I2C Chip support 1041# Miscellaneous I2C Chip support
1011# 1042#
1012# CONFIG_SENSORS_DS1337 is not set
1013# CONFIG_SENSORS_DS1374 is not set
1014# CONFIG_DS1682 is not set 1043# CONFIG_DS1682 is not set
1015# CONFIG_SENSORS_EEPROM is not set 1044# CONFIG_SENSORS_EEPROM is not set
1016# CONFIG_SENSORS_PCF8574 is not set 1045# CONFIG_SENSORS_PCF8574 is not set
1017# CONFIG_SENSORS_PCA9539 is not set 1046# CONFIG_PCF8575 is not set
1018# CONFIG_SENSORS_PCF8591 is not set 1047# CONFIG_SENSORS_PCF8591 is not set
1048# CONFIG_TPS65010 is not set
1019# CONFIG_SENSORS_MAX6875 is not set 1049# CONFIG_SENSORS_MAX6875 is not set
1020# CONFIG_SENSORS_TSL2550 is not set 1050# CONFIG_SENSORS_TSL2550 is not set
1021# CONFIG_I2C_DEBUG_CORE is not set 1051# CONFIG_I2C_DEBUG_CORE is not set
@@ -1031,6 +1061,7 @@ CONFIG_I2C_ALGOBIT=y
1031# CONFIG_W1 is not set 1061# CONFIG_W1 is not set
1032# CONFIG_POWER_SUPPLY is not set 1062# CONFIG_POWER_SUPPLY is not set
1033# CONFIG_HWMON is not set 1063# CONFIG_HWMON is not set
1064# CONFIG_THERMAL is not set
1034# CONFIG_WATCHDOG is not set 1065# CONFIG_WATCHDOG is not set
1035 1066
1036# 1067#
@@ -1166,6 +1197,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y
1166CONFIG_USB_ARCH_HAS_EHCI=y 1197CONFIG_USB_ARCH_HAS_EHCI=y
1167CONFIG_USB=y 1198CONFIG_USB=y
1168# CONFIG_USB_DEBUG is not set 1199# CONFIG_USB_DEBUG is not set
1200# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1169 1201
1170# 1202#
1171# Miscellaneous USB options 1203# Miscellaneous USB options
@@ -1179,9 +1211,9 @@ CONFIG_USB_DEVICE_CLASS=y
1179# USB Host Controller Drivers 1211# USB Host Controller Drivers
1180# 1212#
1181CONFIG_USB_EHCI_HCD=y 1213CONFIG_USB_EHCI_HCD=y
1182# CONFIG_USB_EHCI_SPLIT_ISO is not set
1183# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1214# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1184# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1215# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1216# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1185# CONFIG_USB_ISP116X_HCD is not set 1217# CONFIG_USB_ISP116X_HCD is not set
1186CONFIG_USB_OHCI_HCD=y 1218CONFIG_USB_OHCI_HCD=y
1187# CONFIG_USB_OHCI_HCD_PPC_OF is not set 1219# CONFIG_USB_OHCI_HCD_PPC_OF is not set
@@ -1230,10 +1262,6 @@ CONFIG_USB_MON=y
1230# USB port drivers 1262# USB port drivers
1231# 1263#
1232# CONFIG_USB_USS720 is not set 1264# CONFIG_USB_USS720 is not set
1233
1234#
1235# USB Serial Converter support
1236#
1237# CONFIG_USB_SERIAL is not set 1265# CONFIG_USB_SERIAL is not set
1238 1266
1239# 1267#
@@ -1259,16 +1287,9 @@ CONFIG_USB_MON=y
1259# CONFIG_USB_TRANCEVIBRATOR is not set 1287# CONFIG_USB_TRANCEVIBRATOR is not set
1260# CONFIG_USB_IOWARRIOR is not set 1288# CONFIG_USB_IOWARRIOR is not set
1261# CONFIG_USB_TEST is not set 1289# CONFIG_USB_TEST is not set
1262
1263#
1264# USB DSL modem support
1265#
1266
1267#
1268# USB Gadget Support
1269#
1270# CONFIG_USB_GADGET is not set 1290# CONFIG_USB_GADGET is not set
1271# CONFIG_MMC is not set 1291# CONFIG_MMC is not set
1292# CONFIG_MEMSTICK is not set
1272# CONFIG_NEW_LEDS is not set 1293# CONFIG_NEW_LEDS is not set
1273CONFIG_INFINIBAND=m 1294CONFIG_INFINIBAND=m
1274CONFIG_INFINIBAND_USER_MAD=m 1295CONFIG_INFINIBAND_USER_MAD=m
@@ -1281,6 +1302,7 @@ CONFIG_INFINIBAND_MTHCA_DEBUG=y
1281CONFIG_INFINIBAND_EHCA=m 1302CONFIG_INFINIBAND_EHCA=m
1282# CONFIG_INFINIBAND_AMSO1100 is not set 1303# CONFIG_INFINIBAND_AMSO1100 is not set
1283# CONFIG_MLX4_INFINIBAND is not set 1304# CONFIG_MLX4_INFINIBAND is not set
1305# CONFIG_INFINIBAND_NES is not set
1284CONFIG_INFINIBAND_IPOIB=m 1306CONFIG_INFINIBAND_IPOIB=m
1285# CONFIG_INFINIBAND_IPOIB_CM is not set 1307# CONFIG_INFINIBAND_IPOIB_CM is not set
1286CONFIG_INFINIBAND_IPOIB_DEBUG=y 1308CONFIG_INFINIBAND_IPOIB_DEBUG=y
@@ -1289,6 +1311,7 @@ CONFIG_INFINIBAND_SRP=m
1289# CONFIG_INFINIBAND_ISER is not set 1311# CONFIG_INFINIBAND_ISER is not set
1290# CONFIG_EDAC is not set 1312# CONFIG_EDAC is not set
1291# CONFIG_RTC_CLASS is not set 1313# CONFIG_RTC_CLASS is not set
1314# CONFIG_DMADEVICES is not set
1292# CONFIG_AUXDISPLAY is not set 1315# CONFIG_AUXDISPLAY is not set
1293 1316
1294# 1317#
@@ -1334,12 +1357,10 @@ CONFIG_XFS_POSIX_ACL=y
1334CONFIG_OCFS2_FS=m 1357CONFIG_OCFS2_FS=m
1335CONFIG_OCFS2_DEBUG_MASKLOG=y 1358CONFIG_OCFS2_DEBUG_MASKLOG=y
1336# CONFIG_OCFS2_DEBUG_FS is not set 1359# CONFIG_OCFS2_DEBUG_FS is not set
1337# CONFIG_MINIX_FS is not set 1360CONFIG_DNOTIFY=y
1338# CONFIG_ROMFS_FS is not set
1339CONFIG_INOTIFY=y 1361CONFIG_INOTIFY=y
1340CONFIG_INOTIFY_USER=y 1362CONFIG_INOTIFY_USER=y
1341# CONFIG_QUOTA is not set 1363# CONFIG_QUOTA is not set
1342CONFIG_DNOTIFY=y
1343# CONFIG_AUTOFS_FS is not set 1364# CONFIG_AUTOFS_FS is not set
1344CONFIG_AUTOFS4_FS=m 1365CONFIG_AUTOFS4_FS=m
1345CONFIG_FUSE_FS=m 1366CONFIG_FUSE_FS=m
@@ -1388,8 +1409,10 @@ CONFIG_CONFIGFS_FS=m
1388# CONFIG_EFS_FS is not set 1409# CONFIG_EFS_FS is not set
1389CONFIG_CRAMFS=y 1410CONFIG_CRAMFS=y
1390# CONFIG_VXFS_FS is not set 1411# CONFIG_VXFS_FS is not set
1412# CONFIG_MINIX_FS is not set
1391# CONFIG_HPFS_FS is not set 1413# CONFIG_HPFS_FS is not set
1392# CONFIG_QNX4FS_FS is not set 1414# CONFIG_QNX4FS_FS is not set
1415# CONFIG_ROMFS_FS is not set
1393# CONFIG_SYSV_FS is not set 1416# CONFIG_SYSV_FS is not set
1394# CONFIG_UFS_FS is not set 1417# CONFIG_UFS_FS is not set
1395CONFIG_NETWORK_FILESYSTEMS=y 1418CONFIG_NETWORK_FILESYSTEMS=y
@@ -1473,7 +1496,6 @@ CONFIG_NLS_ISO8859_1=y
1473# CONFIG_NLS_KOI8_U is not set 1496# CONFIG_NLS_KOI8_U is not set
1474# CONFIG_NLS_UTF8 is not set 1497# CONFIG_NLS_UTF8 is not set
1475# CONFIG_DLM is not set 1498# CONFIG_DLM is not set
1476# CONFIG_UCC_SLOW is not set
1477 1499
1478# 1500#
1479# Library routines 1501# Library routines
@@ -1487,6 +1509,8 @@ CONFIG_CRC32=y
1487CONFIG_LIBCRC32C=m 1509CONFIG_LIBCRC32C=m
1488CONFIG_ZLIB_INFLATE=y 1510CONFIG_ZLIB_INFLATE=y
1489CONFIG_ZLIB_DEFLATE=m 1511CONFIG_ZLIB_DEFLATE=m
1512CONFIG_LZO_COMPRESS=m
1513CONFIG_LZO_DECOMPRESS=m
1490CONFIG_TEXTSEARCH=y 1514CONFIG_TEXTSEARCH=y
1491CONFIG_TEXTSEARCH_KMP=m 1515CONFIG_TEXTSEARCH_KMP=m
1492CONFIG_TEXTSEARCH_BM=m 1516CONFIG_TEXTSEARCH_BM=m
@@ -1495,11 +1519,6 @@ CONFIG_PLIST=y
1495CONFIG_HAS_IOMEM=y 1519CONFIG_HAS_IOMEM=y
1496CONFIG_HAS_IOPORT=y 1520CONFIG_HAS_IOPORT=y
1497CONFIG_HAS_DMA=y 1521CONFIG_HAS_DMA=y
1498CONFIG_INSTRUMENTATION=y
1499CONFIG_PROFILING=y
1500CONFIG_OPROFILE=y
1501CONFIG_KPROBES=y
1502CONFIG_MARKERS=y
1503 1522
1504# 1523#
1505# Kernel hacking 1524# Kernel hacking
@@ -1518,6 +1537,7 @@ CONFIG_SCHED_DEBUG=y
1518# CONFIG_SCHEDSTATS is not set 1537# CONFIG_SCHEDSTATS is not set
1519# CONFIG_TIMER_STATS is not set 1538# CONFIG_TIMER_STATS is not set
1520# CONFIG_SLUB_DEBUG_ON is not set 1539# CONFIG_SLUB_DEBUG_ON is not set
1540# CONFIG_SLUB_STATS is not set
1521# CONFIG_DEBUG_RT_MUTEXES is not set 1541# CONFIG_DEBUG_RT_MUTEXES is not set
1522# CONFIG_RT_MUTEX_TESTER is not set 1542# CONFIG_RT_MUTEX_TESTER is not set
1523# CONFIG_DEBUG_SPINLOCK is not set 1543# CONFIG_DEBUG_SPINLOCK is not set
@@ -1530,9 +1550,10 @@ CONFIG_DEBUG_BUGVERBOSE=y
1530# CONFIG_DEBUG_VM is not set 1550# CONFIG_DEBUG_VM is not set
1531# CONFIG_DEBUG_LIST is not set 1551# CONFIG_DEBUG_LIST is not set
1532# CONFIG_DEBUG_SG is not set 1552# CONFIG_DEBUG_SG is not set
1533CONFIG_FORCED_INLINING=y
1534# CONFIG_BOOT_PRINTK_DELAY is not set 1553# CONFIG_BOOT_PRINTK_DELAY is not set
1535# CONFIG_RCU_TORTURE_TEST is not set 1554# CONFIG_RCU_TORTURE_TEST is not set
1555# CONFIG_KPROBES_SANITY_TEST is not set
1556# CONFIG_BACKTRACE_SELF_TEST is not set
1536# CONFIG_LKDTM is not set 1557# CONFIG_LKDTM is not set
1537# CONFIG_FAULT_INJECTION is not set 1558# CONFIG_FAULT_INJECTION is not set
1538# CONFIG_SAMPLES is not set 1559# CONFIG_SAMPLES is not set
@@ -1557,7 +1578,9 @@ CONFIG_VIRQ_DEBUG=y
1557# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1578# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1558CONFIG_CRYPTO=y 1579CONFIG_CRYPTO=y
1559CONFIG_CRYPTO_ALGAPI=y 1580CONFIG_CRYPTO_ALGAPI=y
1581CONFIG_CRYPTO_AEAD=m
1560CONFIG_CRYPTO_BLKCIPHER=y 1582CONFIG_CRYPTO_BLKCIPHER=y
1583CONFIG_CRYPTO_SEQIV=m
1561CONFIG_CRYPTO_HASH=y 1584CONFIG_CRYPTO_HASH=y
1562CONFIG_CRYPTO_MANAGER=y 1585CONFIG_CRYPTO_MANAGER=y
1563CONFIG_CRYPTO_HMAC=y 1586CONFIG_CRYPTO_HMAC=y
@@ -1570,12 +1593,15 @@ CONFIG_CRYPTO_SHA256=m
1570CONFIG_CRYPTO_SHA512=m 1593CONFIG_CRYPTO_SHA512=m
1571CONFIG_CRYPTO_WP512=m 1594CONFIG_CRYPTO_WP512=m
1572CONFIG_CRYPTO_TGR192=m 1595CONFIG_CRYPTO_TGR192=m
1573# CONFIG_CRYPTO_GF128MUL is not set 1596CONFIG_CRYPTO_GF128MUL=m
1574CONFIG_CRYPTO_ECB=m 1597CONFIG_CRYPTO_ECB=m
1575CONFIG_CRYPTO_CBC=y 1598CONFIG_CRYPTO_CBC=y
1576CONFIG_CRYPTO_PCBC=m 1599CONFIG_CRYPTO_PCBC=m
1577# CONFIG_CRYPTO_LRW is not set 1600# CONFIG_CRYPTO_LRW is not set
1578# CONFIG_CRYPTO_XTS is not set 1601# CONFIG_CRYPTO_XTS is not set
1602CONFIG_CRYPTO_CTR=m
1603CONFIG_CRYPTO_GCM=m
1604CONFIG_CRYPTO_CCM=m
1579# CONFIG_CRYPTO_CRYPTD is not set 1605# CONFIG_CRYPTO_CRYPTD is not set
1580CONFIG_CRYPTO_DES=y 1606CONFIG_CRYPTO_DES=y
1581# CONFIG_CRYPTO_FCRYPT is not set 1607# CONFIG_CRYPTO_FCRYPT is not set
@@ -1591,11 +1617,13 @@ CONFIG_CRYPTO_ARC4=m
1591CONFIG_CRYPTO_KHAZAD=m 1617CONFIG_CRYPTO_KHAZAD=m
1592CONFIG_CRYPTO_ANUBIS=m 1618CONFIG_CRYPTO_ANUBIS=m
1593# CONFIG_CRYPTO_SEED is not set 1619# CONFIG_CRYPTO_SEED is not set
1620CONFIG_CRYPTO_SALSA20=m
1594CONFIG_CRYPTO_DEFLATE=m 1621CONFIG_CRYPTO_DEFLATE=m
1595CONFIG_CRYPTO_MICHAEL_MIC=m 1622CONFIG_CRYPTO_MICHAEL_MIC=m
1596CONFIG_CRYPTO_CRC32C=m 1623CONFIG_CRYPTO_CRC32C=m
1597# CONFIG_CRYPTO_CAMELLIA is not set 1624# CONFIG_CRYPTO_CAMELLIA is not set
1598CONFIG_CRYPTO_TEST=m 1625CONFIG_CRYPTO_TEST=m
1599# CONFIG_CRYPTO_AUTHENC is not set 1626CONFIG_CRYPTO_AUTHENC=m
1627CONFIG_CRYPTO_LZO=m
1600# CONFIG_CRYPTO_HW is not set 1628# CONFIG_CRYPTO_HW is not set
1601# CONFIG_PPC_CLOCK is not set 1629# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 4846bf543a8c..59311ec0d422 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -353,6 +353,12 @@ struct task_struct *__switch_to(struct task_struct *prev,
353 account_process_vtime(current); 353 account_process_vtime(current);
354 calculate_steal_time(); 354 calculate_steal_time();
355 355
356 /*
357 * We can't take a PMU exception inside _switch() since there is a
358 * window where the kernel stack SLB and the kernel stack are out
359 * of sync. Hard disable here.
360 */
361 hard_irq_disable();
356 last = _switch(old_thread, new_thread); 362 last = _switch(old_thread, new_thread);
357 363
358 local_irq_restore(flags); 364 local_irq_restore(flags);
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
index 7673e9865733..2a9fe97e4521 100644
--- a/arch/powerpc/kernel/ptrace.c
+++ b/arch/powerpc/kernel/ptrace.c
@@ -530,15 +530,21 @@ static int gpr32_set(struct task_struct *target,
530 --count; 530 --count;
531 } 531 }
532 532
533 if (kbuf) 533 if (kbuf) {
534 for (; count > 0 && pos <= PT_MAX_PUT_REG; --count) 534 for (; count > 0 && pos <= PT_MAX_PUT_REG; --count)
535 regs[pos++] = *k++; 535 regs[pos++] = *k++;
536 else 536 for (; count > 0 && pos < PT_TRAP; --count, ++pos)
537 ++k;
538 } else {
537 for (; count > 0 && pos <= PT_MAX_PUT_REG; --count) { 539 for (; count > 0 && pos <= PT_MAX_PUT_REG; --count) {
538 if (__get_user(reg, u++)) 540 if (__get_user(reg, u++))
539 return -EFAULT; 541 return -EFAULT;
540 regs[pos++] = reg; 542 regs[pos++] = reg;
541 } 543 }
544 for (; count > 0 && pos < PT_TRAP; --count, ++pos)
545 if (__get_user(reg, u++))
546 return -EFAULT;
547 }
542 548
543 if (count > 0 && pos == PT_TRAP) { 549 if (count > 0 && pos == PT_TRAP) {
544 if (kbuf) 550 if (kbuf)
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
index 47b06bad24ad..906daeda59a8 100644
--- a/arch/powerpc/mm/slb.c
+++ b/arch/powerpc/mm/slb.c
@@ -124,6 +124,12 @@ void slb_flush_and_rebolt(void)
124 ksp_vsid_data = get_slb_shadow()->save_area[2].vsid; 124 ksp_vsid_data = get_slb_shadow()->save_area[2].vsid;
125 } 125 }
126 126
127 /*
128 * We can't take a PMU exception in the following code, so hard
129 * disable interrupts.
130 */
131 hard_irq_disable();
132
127 /* We need to do this all in asm, so we're sure we don't touch 133 /* We need to do this all in asm, so we're sure we don't touch
128 * the stack between the slbia and rebolting it. */ 134 * the stack between the slbia and rebolting it. */
129 asm volatile("isync\n" 135 asm volatile("isync\n"
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c
index 20ea0e118f24..d75ccded7f10 100644
--- a/arch/powerpc/platforms/cell/iommu.c
+++ b/arch/powerpc/platforms/cell/iommu.c
@@ -802,17 +802,24 @@ static int __init cell_iommu_init_disabled(void)
802 802
803static u64 cell_iommu_get_fixed_address(struct device *dev) 803static u64 cell_iommu_get_fixed_address(struct device *dev)
804{ 804{
805 u64 cpu_addr, size, best_size, pci_addr = OF_BAD_ADDR; 805 u64 cpu_addr, size, best_size, dev_addr = OF_BAD_ADDR;
806 struct device_node *np; 806 struct device_node *np;
807 const u32 *ranges = NULL; 807 const u32 *ranges = NULL;
808 int i, len, best; 808 int i, len, best, naddr, nsize, pna, range_size;
809 809
810 np = of_node_get(dev->archdata.of_node); 810 np = of_node_get(dev->archdata.of_node);
811 while (np) { 811 while (1) {
812 naddr = of_n_addr_cells(np);
813 nsize = of_n_size_cells(np);
814 np = of_get_next_parent(np);
815 if (!np)
816 break;
817
812 ranges = of_get_property(np, "dma-ranges", &len); 818 ranges = of_get_property(np, "dma-ranges", &len);
813 if (ranges) 819
820 /* Ignore empty ranges, they imply no translation required */
821 if (ranges && len > 0)
814 break; 822 break;
815 np = of_get_next_parent(np);
816 } 823 }
817 824
818 if (!ranges) { 825 if (!ranges) {
@@ -822,15 +829,17 @@ static u64 cell_iommu_get_fixed_address(struct device *dev)
822 829
823 len /= sizeof(u32); 830 len /= sizeof(u32);
824 831
832 pna = of_n_addr_cells(np);
833 range_size = naddr + nsize + pna;
834
825 /* dma-ranges format: 835 /* dma-ranges format:
826 * 1 cell: pci space 836 * child addr : naddr cells
827 * 2 cells: pci address 837 * parent addr : pna cells
828 * 2 cells: parent address 838 * size : nsize cells
829 * 2 cells: size
830 */ 839 */
831 for (i = 0, best = -1, best_size = 0; i < len; i += 7) { 840 for (i = 0, best = -1, best_size = 0; i < len; i += range_size) {
832 cpu_addr = of_translate_dma_address(np, ranges +i + 3); 841 cpu_addr = of_translate_dma_address(np, ranges + i + naddr);
833 size = of_read_number(ranges + i + 5, 2); 842 size = of_read_number(ranges + i + naddr + pna, nsize);
834 843
835 if (cpu_addr == 0 && size > best_size) { 844 if (cpu_addr == 0 && size > best_size) {
836 best = i; 845 best = i;
@@ -838,15 +847,15 @@ static u64 cell_iommu_get_fixed_address(struct device *dev)
838 } 847 }
839 } 848 }
840 849
841 if (best >= 0) 850 if (best >= 0) {
842 pci_addr = of_read_number(ranges + best + 1, 2); 851 dev_addr = of_read_number(ranges + best, naddr);
843 else 852 } else
844 dev_dbg(dev, "iommu: no suitable range found!\n"); 853 dev_dbg(dev, "iommu: no suitable range found!\n");
845 854
846out: 855out:
847 of_node_put(np); 856 of_node_put(np);
848 857
849 return pci_addr; 858 return dev_addr;
850} 859}
851 860
852static int dma_set_mask_and_switch(struct device *dev, u64 dma_mask) 861static int dma_set_mask_and_switch(struct device *dev, u64 dma_mask)
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c
index dda34650cb07..5c531e8f9f6f 100644
--- a/arch/powerpc/platforms/cell/setup.c
+++ b/arch/powerpc/platforms/cell/setup.c
@@ -81,6 +81,42 @@ static void cell_progress(char *s, unsigned short hex)
81 printk("*** %04x : %s\n", hex, s ? s : ""); 81 printk("*** %04x : %s\n", hex, s ? s : "");
82} 82}
83 83
84static void cell_fixup_pcie_rootcomplex(struct pci_dev *dev)
85{
86 struct pci_controller *hose;
87 const char *s;
88 int i;
89
90 if (!machine_is(cell))
91 return;
92
93 /* We're searching for a direct child of the PHB */
94 if (dev->bus->self != NULL || dev->devfn != 0)
95 return;
96
97 hose = pci_bus_to_host(dev->bus);
98 if (hose == NULL)
99 return;
100
101 /* Only on PCIE */
102 if (!of_device_is_compatible(hose->dn, "pciex"))
103 return;
104
105 /* And only on axon */
106 s = of_get_property(hose->dn, "model", NULL);
107 if (!s || strcmp(s, "Axon") != 0)
108 return;
109
110 for (i = 0; i < PCI_BRIDGE_RESOURCES; i++) {
111 dev->resource[i].start = dev->resource[i].end = 0;
112 dev->resource[i].flags = 0;
113 }
114
115 printk(KERN_DEBUG "PCI: Hiding resources on Axon PCIE RC %s\n",
116 pci_name(dev));
117}
118DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, cell_fixup_pcie_rootcomplex);
119
84static int __init cell_publish_devices(void) 120static int __init cell_publish_devices(void)
85{ 121{
86 int node; 122 int node;
diff --git a/arch/s390/lib/uaccess_pt.c b/arch/s390/lib/uaccess_pt.c
index 7e8efaade2ea..5efdfe9f5e76 100644
--- a/arch/s390/lib/uaccess_pt.c
+++ b/arch/s390/lib/uaccess_pt.c
@@ -406,6 +406,8 @@ int futex_atomic_cmpxchg_pt(int __user *uaddr, int oldval, int newval)
406{ 406{
407 int ret; 407 int ret;
408 408
409 if (!current->mm)
410 return -EFAULT;
409 spin_lock(&current->mm->page_table_lock); 411 spin_lock(&current->mm->page_table_lock);
410 uaddr = (int __user *) __dat_user_addr((unsigned long) uaddr); 412 uaddr = (int __user *) __dat_user_addr((unsigned long) uaddr);
411 if (!uaddr) { 413 if (!uaddr) {
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 95b7534e9e3c..12720489e458 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -580,6 +580,7 @@ config SH_TIMER_IRQ
580 CPU_SUBTYPE_SH7763 580 CPU_SUBTYPE_SH7763
581 default "86" if CPU_SUBTYPE_SH7619 581 default "86" if CPU_SUBTYPE_SH7619
582 default "140" if CPU_SUBTYPE_SH7206 582 default "140" if CPU_SUBTYPE_SH7206
583 default "142" if CPU_SUBTYPE_SH7203
583 default "16" 584 default "16"
584 585
585config SH_PCLK_FREQ 586config SH_PCLK_FREQ
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index c510c225144f..cffc92b1bf2e 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -154,7 +154,11 @@ drivers-$(CONFIG_OPROFILE) += arch/sh/oprofile/
154 154
155boot := arch/sh/boot 155boot := arch/sh/boot
156 156
157ifneq ($(KBUILD_SRC),)
157incdir-prefix := $(srctree)/include/asm-sh/ 158incdir-prefix := $(srctree)/include/asm-sh/
159else
160incdir-prefix :=
161endif
158 162
159# Update machine arch and proc symlinks if something which affects 163# Update machine arch and proc symlinks if something which affects
160# them changed. We use .arch and .mach to indicate when they were 164# them changed. We use .arch and .mach to indicate when they were
@@ -182,7 +186,7 @@ include/asm-sh/.mach: $(wildcard include/config/sh/*.h) \
182 $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi 186 $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi
183 $(Q)rm -f include/asm-sh/mach 187 $(Q)rm -f include/asm-sh/mach
184 $(Q)for i in $(incdir-y); do \ 188 $(Q)for i in $(incdir-y); do \
185 if [ -d $(incdir-prefix)$$i ]; then \ 189 if [ -d $(srctree)/include/asm-sh/$$i ]; then \
186 echo -n ' SYMLINK include/asm-sh/mach -> '; \ 190 echo -n ' SYMLINK include/asm-sh/mach -> '; \
187 echo -e "include/asm-sh/$$i"; \ 191 echo -e "include/asm-sh/$$i"; \
188 ln -fsn $(incdir-prefix)$$i \ 192 ln -fsn $(incdir-prefix)$$i \
@@ -191,7 +195,7 @@ include/asm-sh/.mach: $(wildcard include/config/sh/*.h) \
191 if [ ! -d include/asm-sh/mach ]; then \ 195 if [ ! -d include/asm-sh/mach ]; then \
192 echo -n ' SYMLINK include/asm-sh/mach -> '; \ 196 echo -n ' SYMLINK include/asm-sh/mach -> '; \
193 echo -e 'include/asm-sh'; \ 197 echo -e 'include/asm-sh'; \
194 ln -fsn $(incdir-prefix) include/asm-sh/mach; \ 198 ln -fsn $(incdir-prefix)../asm-sh include/asm-sh/mach; \
195 fi; \ 199 fi; \
196 fi; \ 200 fi; \
197 done 201 done
diff --git a/arch/sh/boot/Makefile b/arch/sh/boot/Makefile
index 59f552c13349..3dda24daa0a8 100644
--- a/arch/sh/boot/Makefile
+++ b/arch/sh/boot/Makefile
@@ -32,12 +32,12 @@ $(obj)/zImage: $(obj)/compressed/vmlinux FORCE
32$(obj)/compressed/vmlinux: FORCE 32$(obj)/compressed/vmlinux: FORCE
33 $(Q)$(MAKE) $(build)=$(obj)/compressed $@ 33 $(Q)$(MAKE) $(build)=$(obj)/compressed $@
34 34
35KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%8x" \ 35KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%08x" \
36 $$[$(CONFIG_PAGE_OFFSET) + \ 36 $$[$(CONFIG_PAGE_OFFSET) + \
37 $(CONFIG_MEMORY_START) + \ 37 $(CONFIG_MEMORY_START) + \
38 $(CONFIG_ZERO_PAGE_OFFSET)]') 38 $(CONFIG_ZERO_PAGE_OFFSET)]')
39 39
40KERNEL_ENTRY := $(shell /bin/bash -c 'printf "0x%8x" \ 40KERNEL_ENTRY := $(shell /bin/bash -c 'printf "0x%08x" \
41 $$[$(CONFIG_PAGE_OFFSET) + \ 41 $$[$(CONFIG_PAGE_OFFSET) + \
42 $(CONFIG_MEMORY_START) + \ 42 $(CONFIG_MEMORY_START) + \
43 $(CONFIG_ZERO_PAGE_OFFSET)+0x1000]') 43 $(CONFIG_ZERO_PAGE_OFFSET)+0x1000]')
diff --git a/arch/sh/kernel/cpu/sh2/entry.S b/arch/sh/kernel/cpu/sh2/entry.S
index 7a26569e7956..0fc89069d8c7 100644
--- a/arch/sh/kernel/cpu/sh2/entry.S
+++ b/arch/sh/kernel/cpu/sh2/entry.S
@@ -267,7 +267,6 @@ ENTRY(sh_bios_handler)
267 267
268ENTRY(address_error_trap_handler) 268ENTRY(address_error_trap_handler)
269 mov r15,r4 ! regs 269 mov r15,r4 ! regs
270 add #4,r4
271 mov #OFF_PC,r0 270 mov #OFF_PC,r0
272 mov.l @(r0,r15),r6 ! pc 271 mov.l @(r0,r15),r6 ! pc
273 mov.l 1f,r0 272 mov.l 1f,r0
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c
index 94075e1a1e61..5d039d168f57 100644
--- a/arch/sh/kernel/smp.c
+++ b/arch/sh/kernel/smp.c
@@ -179,7 +179,7 @@ void smp_send_stop(void)
179} 179}
180 180
181struct smp_fn_call_struct smp_fn_call = { 181struct smp_fn_call_struct smp_fn_call = {
182 .lock = SPIN_LOCK_UNLOCKED, 182 .lock = __SPIN_LOCK_UNLOCKED(smp_fn_call.lock),
183 .finished = ATOMIC_INIT(0), 183 .finished = ATOMIC_INIT(0),
184}; 184};
185 185
diff --git a/arch/sparc/kernel/sys_sunos.c b/arch/sparc/kernel/sys_sunos.c
index 28c187c5d9fd..f5b608bbe8af 100644
--- a/arch/sparc/kernel/sys_sunos.c
+++ b/arch/sparc/kernel/sys_sunos.c
@@ -659,7 +659,7 @@ sunos_nfs_get_server_fd (int fd, struct sockaddr_in *addr)
659 659
660 socket = SOCKET_I(inode); 660 socket = SOCKET_I(inode);
661 local.sin_family = AF_INET; 661 local.sin_family = AF_INET;
662 local.sin_addr.s_addr = INADDR_ANY; 662 local.sin_addr.s_addr = htonl(INADDR_ANY);
663 663
664 /* IPPORT_RESERVED = 1024, can't find the definition in the kernel */ 664 /* IPPORT_RESERVED = 1024, can't find the definition in the kernel */
665 try_port = 1024; 665 try_port = 1024;
diff --git a/arch/sparc64/kernel/sys_sunos32.c b/arch/sparc64/kernel/sys_sunos32.c
index cfc22d3fe54c..e91194fe39d7 100644
--- a/arch/sparc64/kernel/sys_sunos32.c
+++ b/arch/sparc64/kernel/sys_sunos32.c
@@ -618,7 +618,7 @@ sunos_nfs_get_server_fd (int fd, struct sockaddr_in *addr)
618 618
619 socket = SOCKET_I(inode); 619 socket = SOCKET_I(inode);
620 local.sin_family = AF_INET; 620 local.sin_family = AF_INET;
621 local.sin_addr.s_addr = INADDR_ANY; 621 local.sin_addr.s_addr = htonl(INADDR_ANY);
622 622
623 /* IPPORT_RESERVED = 1024, can't find the definition in the kernel */ 623 /* IPPORT_RESERVED = 1024, can't find the definition in the kernel */
624 try_port = 1024; 624 try_port = 1024;
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c
index 608152a2a05e..00df126169b4 100644
--- a/arch/x86/kernel/aperture_64.c
+++ b/arch/x86/kernel/aperture_64.c
@@ -18,6 +18,7 @@
18#include <linux/pci.h> 18#include <linux/pci.h>
19#include <linux/bitops.h> 19#include <linux/bitops.h>
20#include <linux/ioport.h> 20#include <linux/ioport.h>
21#include <linux/suspend.h>
21#include <asm/e820.h> 22#include <asm/e820.h>
22#include <asm/io.h> 23#include <asm/io.h>
23#include <asm/gart.h> 24#include <asm/gart.h>
@@ -76,6 +77,8 @@ static u32 __init allocate_aperture(void)
76 printk(KERN_INFO "Mapping aperture over %d KB of RAM @ %lx\n", 77 printk(KERN_INFO "Mapping aperture over %d KB of RAM @ %lx\n",
77 aper_size >> 10, __pa(p)); 78 aper_size >> 10, __pa(p));
78 insert_aperture_resource((u32)__pa(p), aper_size); 79 insert_aperture_resource((u32)__pa(p), aper_size);
80 register_nosave_region((u32)__pa(p) >> PAGE_SHIFT,
81 (u32)__pa(p+aper_size) >> PAGE_SHIFT);
79 82
80 return (u32)__pa(p); 83 return (u32)__pa(p);
81} 84}
diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
index be83336fddba..a6450b3ae759 100644
--- a/arch/x86/kernel/cpu/mtrr/main.c
+++ b/arch/x86/kernel/cpu/mtrr/main.c
@@ -711,7 +711,8 @@ int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
711 trim_size = end_pfn; 711 trim_size = end_pfn;
712 trim_size <<= PAGE_SHIFT; 712 trim_size <<= PAGE_SHIFT;
713 trim_size -= trim_start; 713 trim_size -= trim_start;
714 add_memory_region(trim_start, trim_size, E820_RESERVED); 714 update_memory_range(trim_start, trim_size, E820_RAM,
715 E820_RESERVED);
715 update_e820(); 716 update_e820();
716 return 1; 717 return 1;
717 } 718 }
diff --git a/arch/x86/kernel/e820_32.c b/arch/x86/kernel/e820_32.c
index 4e16ef4a2659..80444c5c9b14 100644
--- a/arch/x86/kernel/e820_32.c
+++ b/arch/x86/kernel/e820_32.c
@@ -749,6 +749,32 @@ static int __init parse_memmap(char *arg)
749 return 0; 749 return 0;
750} 750}
751early_param("memmap", parse_memmap); 751early_param("memmap", parse_memmap);
752void __init update_memory_range(u64 start, u64 size, unsigned old_type,
753 unsigned new_type)
754{
755 int i;
756
757 BUG_ON(old_type == new_type);
758
759 for (i = 0; i < e820.nr_map; i++) {
760 struct e820entry *ei = &e820.map[i];
761 u64 final_start, final_end;
762 if (ei->type != old_type)
763 continue;
764 /* totally covered? */
765 if (ei->addr >= start && ei->size <= size) {
766 ei->type = new_type;
767 continue;
768 }
769 /* partially covered */
770 final_start = max(start, ei->addr);
771 final_end = min(start + size, ei->addr + ei->size);
772 if (final_start >= final_end)
773 continue;
774 add_memory_region(final_start, final_end - final_start,
775 new_type);
776 }
777}
752void __init update_e820(void) 778void __init update_e820(void)
753{ 779{
754 u8 nr_map; 780 u8 nr_map;
diff --git a/arch/x86/kernel/e820_64.c b/arch/x86/kernel/e820_64.c
index 9f65b4cc323c..9be697126013 100644
--- a/arch/x86/kernel/e820_64.c
+++ b/arch/x86/kernel/e820_64.c
@@ -744,6 +744,33 @@ void __init finish_e820_parsing(void)
744 } 744 }
745} 745}
746 746
747void __init update_memory_range(u64 start, u64 size, unsigned old_type,
748 unsigned new_type)
749{
750 int i;
751
752 BUG_ON(old_type == new_type);
753
754 for (i = 0; i < e820.nr_map; i++) {
755 struct e820entry *ei = &e820.map[i];
756 u64 final_start, final_end;
757 if (ei->type != old_type)
758 continue;
759 /* totally covered? */
760 if (ei->addr >= start && ei->size <= size) {
761 ei->type = new_type;
762 continue;
763 }
764 /* partially covered */
765 final_start = max(start, ei->addr);
766 final_end = min(start + size, ei->addr + ei->size);
767 if (final_start >= final_end)
768 continue;
769 add_memory_region(final_start, final_end - final_start,
770 new_type);
771 }
772}
773
747void __init update_e820(void) 774void __init update_e820(void)
748{ 775{
749 u8 nr_map; 776 u8 nr_map;
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
index fd8ca53943a8..74d87ea85b5c 100644
--- a/arch/x86/kernel/head_32.S
+++ b/arch/x86/kernel/head_32.S
@@ -657,7 +657,7 @@ int_msg:
657 .asciz "Unknown interrupt or fault at EIP %p %p %p\n" 657 .asciz "Unknown interrupt or fault at EIP %p %p %p\n"
658 658
659fault_msg: 659fault_msg:
660 .ascii \ 660 .asciz \
661/* fault info: */ "BUG: Int %d: CR2 %p\n" \ 661/* fault info: */ "BUG: Int %d: CR2 %p\n" \
662/* pusha regs: */ " EDI %p ESI %p EBP %p ESP %p\n" \ 662/* pusha regs: */ " EDI %p ESI %p EBP %p ESP %p\n" \
663 " EBX %p EDX %p ECX %p EAX %p\n" \ 663 " EBX %p EDX %p ECX %p EAX %p\n" \
diff --git a/arch/x86/kernel/pci-dma_64.c b/arch/x86/kernel/pci-dma_64.c
index a82473d192a3..375cb2bc45be 100644
--- a/arch/x86/kernel/pci-dma_64.c
+++ b/arch/x86/kernel/pci-dma_64.c
@@ -53,11 +53,6 @@ dma_alloc_pages(struct device *dev, gfp_t gfp, unsigned order)
53 int node; 53 int node;
54 54
55 node = dev_to_node(dev); 55 node = dev_to_node(dev);
56 if (node == -1)
57 node = numa_node_id();
58
59 if (node < first_node(node_online_map))
60 node = first_node(node_online_map);
61 56
62 page = alloc_pages_node(node, gfp, order); 57 page = alloc_pages_node(node, gfp, order);
63 return page ? page_address(page) : NULL; 58 return page ? page_address(page) : NULL;
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c
index c47208fc5932..d89a648fe710 100644
--- a/arch/x86/kernel/quirks.c
+++ b/arch/x86/kernel/quirks.c
@@ -363,6 +363,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0051,
363 nvidia_force_enable_hpet); 363 nvidia_force_enable_hpet);
364 364
365/* LPC bridges */ 365/* LPC bridges */
366DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0260,
367 nvidia_force_enable_hpet);
366DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0360, 368DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0360,
367 nvidia_force_enable_hpet); 369 nvidia_force_enable_hpet);
368DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0361, 370DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0361,
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 55ceb8cdef75..484c4a80d38a 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -152,6 +152,24 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
152 DMI_MATCH(DMI_BOARD_NAME, "0WF810"), 152 DMI_MATCH(DMI_BOARD_NAME, "0WF810"),
153 }, 153 },
154 }, 154 },
155 { /* Handle problems with rebooting on Dell Optiplex 745's DFF*/
156 .callback = set_bios_reboot,
157 .ident = "Dell OptiPlex 745",
158 .matches = {
159 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
160 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
161 DMI_MATCH(DMI_BOARD_NAME, "0MM599"),
162 },
163 },
164 { /* Handle problems with rebooting on Dell Optiplex 745 with 0KW626 */
165 .callback = set_bios_reboot,
166 .ident = "Dell OptiPlex 745",
167 .matches = {
168 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
169 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
170 DMI_MATCH(DMI_BOARD_NAME, "0KW626"),
171 },
172 },
155 { /* Handle problems with rebooting on Dell 2400's */ 173 { /* Handle problems with rebooting on Dell 2400's */
156 .callback = set_bios_reboot, 174 .callback = set_bios_reboot,
157 .ident = "Dell PowerEdge 2400", 175 .ident = "Dell PowerEdge 2400",
diff --git a/arch/x86/kernel/setup64.c b/arch/x86/kernel/setup64.c
index 309366f8f603..e24c45677094 100644
--- a/arch/x86/kernel/setup64.c
+++ b/arch/x86/kernel/setup64.c
@@ -142,14 +142,16 @@ void __init setup_per_cpu_areas(void)
142 printk(KERN_INFO "PERCPU: Allocating %lu bytes of per cpu data\n", size); 142 printk(KERN_INFO "PERCPU: Allocating %lu bytes of per cpu data\n", size);
143 for_each_cpu_mask (i, cpu_possible_map) { 143 for_each_cpu_mask (i, cpu_possible_map) {
144 char *ptr; 144 char *ptr;
145#ifndef CONFIG_NEED_MULTIPLE_NODES
146 ptr = alloc_bootmem_pages(size);
147#else
148 int node = early_cpu_to_node(i);
145 149
146 if (!NODE_DATA(early_cpu_to_node(i))) { 150 if (!node_online(node) || !NODE_DATA(node))
147 printk("cpu with no node %d, num_online_nodes %d\n",
148 i, num_online_nodes());
149 ptr = alloc_bootmem_pages(size); 151 ptr = alloc_bootmem_pages(size);
150 } else { 152 else
151 ptr = alloc_bootmem_pages_node(NODE_DATA(early_cpu_to_node(i)), size); 153 ptr = alloc_bootmem_pages_node(NODE_DATA(node), size);
152 } 154#endif
153 if (!ptr) 155 if (!ptr)
154 panic("Cannot allocate cpu data for CPU %d\n", i); 156 panic("Cannot allocate cpu data for CPU %d\n", i);
155 cpu_pda(i)->data_offset = ptr - __per_cpu_start; 157 cpu_pda(i)->data_offset = ptr - __per_cpu_start;
diff --git a/arch/x86/mach-visws/traps.c b/arch/x86/mach-visws/traps.c
index 843b67acf43b..bfac6ba10f8a 100644
--- a/arch/x86/mach-visws/traps.c
+++ b/arch/x86/mach-visws/traps.c
@@ -46,8 +46,9 @@ static __init void cobalt_init(void)
46 */ 46 */
47 set_fixmap(FIX_APIC_BASE, APIC_DEFAULT_PHYS_BASE); 47 set_fixmap(FIX_APIC_BASE, APIC_DEFAULT_PHYS_BASE);
48 setup_local_APIC(); 48 setup_local_APIC();
49 printk(KERN_INFO "Local APIC Version %#lx, ID %#lx\n", 49 printk(KERN_INFO "Local APIC Version %#x, ID %#x\n",
50 apic_read(APIC_LVR), apic_read(APIC_ID)); 50 (unsigned int)apic_read(APIC_LVR),
51 (unsigned int)apic_read(APIC_ID));
51 52
52 set_fixmap(FIX_CO_CPU, CO_CPU_PHYS); 53 set_fixmap(FIX_CO_CPU, CO_CPU_PHYS);
53 set_fixmap(FIX_CO_APIC, CO_APIC_PHYS); 54 set_fixmap(FIX_CO_APIC, CO_APIC_PHYS);
diff --git a/arch/x86/mm/numa_64.c b/arch/x86/mm/numa_64.c
index 8ccfee10f5b5..16b82ad34b96 100644
--- a/arch/x86/mm/numa_64.c
+++ b/arch/x86/mm/numa_64.c
@@ -221,8 +221,7 @@ void __init setup_node_bootmem(int nodeid, unsigned long start,
221 bootmap_pages<<PAGE_SHIFT, PAGE_SIZE); 221 bootmap_pages<<PAGE_SHIFT, PAGE_SIZE);
222 if (bootmap == NULL) { 222 if (bootmap == NULL) {
223 if (nodedata_phys < start || nodedata_phys >= end) 223 if (nodedata_phys < start || nodedata_phys >= end)
224 free_bootmem((unsigned long)node_data[nodeid], 224 free_bootmem(nodedata_phys, pgdat_size);
225 pgdat_size);
226 node_data[nodeid] = NULL; 225 node_data[nodeid] = NULL;
227 return; 226 return;
228 } 227 }
diff --git a/crypto/async_tx/async_xor.c b/crypto/async_tx/async_xor.c
index 7a9db353f198..1c445c7bdab7 100644
--- a/crypto/async_tx/async_xor.c
+++ b/crypto/async_tx/async_xor.c
@@ -271,7 +271,7 @@ async_xor_zero_sum(struct page *dest, struct page **src_list,
271 271
272 BUG_ON(src_cnt <= 1); 272 BUG_ON(src_cnt <= 1);
273 273
274 if (device) { 274 if (device && src_cnt <= device->max_xor) {
275 dma_addr_t *dma_src = (dma_addr_t *) src_list; 275 dma_addr_t *dma_src = (dma_addr_t *) src_list;
276 unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0; 276 unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0;
277 int i; 277 int i;
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index fbcaa069be86..b4f5e8542829 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -300,17 +300,6 @@ config ACPI_CUSTOM_DSDT
300 bool 300 bool
301 default ACPI_CUSTOM_DSDT_FILE != "" 301 default ACPI_CUSTOM_DSDT_FILE != ""
302 302
303config ACPI_CUSTOM_DSDT_INITRD
304 bool "Read Custom DSDT from initramfs"
305 depends on BLK_DEV_INITRD
306 default n
307 help
308 This option supports a custom DSDT by optionally loading it from initrd.
309 See Documentation/acpi/dsdt-override.txt
310
311 If you are not using this feature now, but may use it later,
312 it is safe to say Y here.
313
314config ACPI_BLACKLIST_YEAR 303config ACPI_BLACKLIST_YEAR
315 int "Disable ACPI for systems before Jan 1st this year" if X86_32 304 int "Disable ACPI for systems before Jan 1st this year" if X86_32
316 default 0 305 default 0
diff --git a/drivers/acpi/asus_acpi.c b/drivers/acpi/asus_acpi.c
index d25ef961415c..44ad90c03c2e 100644
--- a/drivers/acpi/asus_acpi.c
+++ b/drivers/acpi/asus_acpi.c
@@ -610,7 +610,7 @@ write_led(const char __user * buffer, unsigned long count,
610 (led_out) ? (hotk->status | ledmask) : (hotk->status & ~ledmask); 610 (led_out) ? (hotk->status | ledmask) : (hotk->status & ~ledmask);
611 611
612 if (invert) /* invert target value */ 612 if (invert) /* invert target value */
613 led_out = !led_out & 0x1; 613 led_out = !led_out;
614 614
615 if (!write_acpi_int(hotk->handle, ledname, led_out, NULL)) 615 if (!write_acpi_int(hotk->handle, ledname, led_out, NULL))
616 printk(KERN_WARNING "Asus ACPI: LED (%s) write failed\n", 616 printk(KERN_WARNING "Asus ACPI: LED (%s) write failed\n",
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index f6215e809808..d5729d5dc190 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -293,13 +293,12 @@ static int extract_package(struct acpi_battery *battery,
293 strncpy(ptr, (u8 *)&element->integer.value, 293 strncpy(ptr, (u8 *)&element->integer.value,
294 sizeof(acpi_integer)); 294 sizeof(acpi_integer));
295 ptr[sizeof(acpi_integer)] = 0; 295 ptr[sizeof(acpi_integer)] = 0;
296 } else return -EFAULT; 296 } else
297 *ptr = 0; /* don't have value */
297 } else { 298 } else {
298 if (element->type == ACPI_TYPE_INTEGER) { 299 int *x = (int *)((u8 *)battery + offsets[i].offset);
299 int *x = (int *)((u8 *)battery + 300 *x = (element->type == ACPI_TYPE_INTEGER) ?
300 offsets[i].offset); 301 element->integer.value : -1;
301 *x = element->integer.value;
302 } else return -EFAULT;
303 } 302 }
304 } 303 }
305 return 0; 304 return 0;
diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
index 307cef65c247..fa44fb96fc34 100644
--- a/drivers/acpi/dock.c
+++ b/drivers/acpi/dock.c
@@ -710,6 +710,7 @@ static ssize_t write_undock(struct device *dev, struct device_attribute *attr,
710 if (!count) 710 if (!count)
711 return -EINVAL; 711 return -EINVAL;
712 712
713 begin_undock(dock_station);
713 ret = handle_eject_request(dock_station, ACPI_NOTIFY_EJECT_REQUEST); 714 ret = handle_eject_request(dock_station, ACPI_NOTIFY_EJECT_REQUEST);
714 return ret ? ret: count; 715 return ret ? ret: count;
715} 716}
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index e7e197e3a4ff..7222a18a0319 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -129,7 +129,6 @@ static struct acpi_ec {
129 struct mutex lock; 129 struct mutex lock;
130 wait_queue_head_t wait; 130 wait_queue_head_t wait;
131 struct list_head list; 131 struct list_head list;
132 atomic_t irq_count;
133 u8 handlers_installed; 132 u8 handlers_installed;
134} *boot_ec, *first_ec; 133} *boot_ec, *first_ec;
135 134
@@ -182,8 +181,6 @@ static int acpi_ec_wait(struct acpi_ec *ec, enum ec_event event, int force_poll)
182{ 181{
183 int ret = 0; 182 int ret = 0;
184 183
185 atomic_set(&ec->irq_count, 0);
186
187 if (unlikely(event == ACPI_EC_EVENT_OBF_1 && 184 if (unlikely(event == ACPI_EC_EVENT_OBF_1 &&
188 test_bit(EC_FLAGS_NO_OBF1_GPE, &ec->flags))) 185 test_bit(EC_FLAGS_NO_OBF1_GPE, &ec->flags)))
189 force_poll = 1; 186 force_poll = 1;
@@ -230,7 +227,6 @@ static int acpi_ec_wait(struct acpi_ec *ec, enum ec_event event, int force_poll)
230 while (time_before(jiffies, delay)) { 227 while (time_before(jiffies, delay)) {
231 if (acpi_ec_check_status(ec, event)) 228 if (acpi_ec_check_status(ec, event))
232 goto end; 229 goto end;
233 msleep(5);
234 } 230 }
235 } 231 }
236 pr_err(PREFIX "acpi_ec_wait timeout," 232 pr_err(PREFIX "acpi_ec_wait timeout,"
@@ -533,13 +529,6 @@ static u32 acpi_ec_gpe_handler(void *data)
533 struct acpi_ec *ec = data; 529 struct acpi_ec *ec = data;
534 530
535 pr_debug(PREFIX "~~~> interrupt\n"); 531 pr_debug(PREFIX "~~~> interrupt\n");
536 atomic_inc(&ec->irq_count);
537 if (atomic_read(&ec->irq_count) > 5) {
538 pr_err(PREFIX "GPE storm detected, disabling EC GPE\n");
539 acpi_disable_gpe(NULL, ec->gpe, ACPI_ISR);
540 clear_bit(EC_FLAGS_GPE_MODE, &ec->flags);
541 return ACPI_INTERRUPT_HANDLED;
542 }
543 clear_bit(EC_FLAGS_WAIT_GPE, &ec->flags); 532 clear_bit(EC_FLAGS_WAIT_GPE, &ec->flags);
544 if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags)) 533 if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags))
545 wake_up(&ec->wait); 534 wake_up(&ec->wait);
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index 065819ba87c7..a697fb6cf050 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -91,10 +91,6 @@ static DEFINE_SPINLOCK(acpi_res_lock);
91#define OSI_STRING_LENGTH_MAX 64 /* arbitrary */ 91#define OSI_STRING_LENGTH_MAX 64 /* arbitrary */
92static char osi_additional_string[OSI_STRING_LENGTH_MAX]; 92static char osi_additional_string[OSI_STRING_LENGTH_MAX];
93 93
94#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
95static int acpi_no_initrd_override;
96#endif
97
98/* 94/*
99 * "Ode to _OSI(Linux)" 95 * "Ode to _OSI(Linux)"
100 * 96 *
@@ -324,67 +320,6 @@ acpi_os_predefined_override(const struct acpi_predefined_names *init_val,
324 return AE_OK; 320 return AE_OK;
325} 321}
326 322
327#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
328static struct acpi_table_header *acpi_find_dsdt_initrd(void)
329{
330 struct file *firmware_file;
331 mm_segment_t oldfs;
332 unsigned long len, len2;
333 struct acpi_table_header *dsdt_buffer, *ret = NULL;
334 struct kstat stat;
335 char *ramfs_dsdt_name = "/DSDT.aml";
336
337 printk(KERN_INFO PREFIX "Checking initramfs for custom DSDT\n");
338
339 /*
340 * Never do this at home, only the user-space is allowed to open a file.
341 * The clean way would be to use the firmware loader.
342 * But this code must be run before there is any userspace available.
343 * A static/init firmware infrastructure doesn't exist yet...
344 */
345 if (vfs_stat(ramfs_dsdt_name, &stat) < 0)
346 return ret;
347
348 len = stat.size;
349 /* check especially against empty files */
350 if (len <= 4) {
351 printk(KERN_ERR PREFIX "Failed: DSDT only %lu bytes.\n", len);
352 return ret;
353 }
354
355 firmware_file = filp_open(ramfs_dsdt_name, O_RDONLY, 0);
356 if (IS_ERR(firmware_file)) {
357 printk(KERN_ERR PREFIX "Failed to open %s.\n", ramfs_dsdt_name);
358 return ret;
359 }
360
361 dsdt_buffer = kmalloc(len, GFP_ATOMIC);
362 if (!dsdt_buffer) {
363 printk(KERN_ERR PREFIX "Failed to allocate %lu bytes.\n", len);
364 goto err;
365 }
366
367 oldfs = get_fs();
368 set_fs(KERNEL_DS);
369 len2 = vfs_read(firmware_file, (char __user *)dsdt_buffer, len,
370 &firmware_file->f_pos);
371 set_fs(oldfs);
372 if (len2 < len) {
373 printk(KERN_ERR PREFIX "Failed to read %lu bytes from %s.\n",
374 len, ramfs_dsdt_name);
375 ACPI_FREE(dsdt_buffer);
376 goto err;
377 }
378
379 printk(KERN_INFO PREFIX "Found %lu byte DSDT in %s.\n",
380 len, ramfs_dsdt_name);
381 ret = dsdt_buffer;
382err:
383 filp_close(firmware_file, NULL);
384 return ret;
385}
386#endif
387
388acpi_status 323acpi_status
389acpi_os_table_override(struct acpi_table_header * existing_table, 324acpi_os_table_override(struct acpi_table_header * existing_table,
390 struct acpi_table_header ** new_table) 325 struct acpi_table_header ** new_table)
@@ -398,16 +333,6 @@ acpi_os_table_override(struct acpi_table_header * existing_table,
398 if (strncmp(existing_table->signature, "DSDT", 4) == 0) 333 if (strncmp(existing_table->signature, "DSDT", 4) == 0)
399 *new_table = (struct acpi_table_header *)AmlCode; 334 *new_table = (struct acpi_table_header *)AmlCode;
400#endif 335#endif
401#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
402 if ((strncmp(existing_table->signature, "DSDT", 4) == 0) &&
403 !acpi_no_initrd_override) {
404 struct acpi_table_header *initrd_table;
405
406 initrd_table = acpi_find_dsdt_initrd();
407 if (initrd_table)
408 *new_table = initrd_table;
409 }
410#endif
411 if (*new_table != NULL) { 336 if (*new_table != NULL) {
412 printk(KERN_WARNING PREFIX "Override [%4.4s-%8.8s], " 337 printk(KERN_WARNING PREFIX "Override [%4.4s-%8.8s], "
413 "this is unsafe: tainting kernel\n", 338 "this is unsafe: tainting kernel\n",
@@ -418,15 +343,6 @@ acpi_os_table_override(struct acpi_table_header * existing_table,
418 return AE_OK; 343 return AE_OK;
419} 344}
420 345
421#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
422static int __init acpi_no_initrd_override_setup(char *s)
423{
424 acpi_no_initrd_override = 1;
425 return 1;
426}
427__setup("acpi_no_initrd_override", acpi_no_initrd_override_setup);
428#endif
429
430static irqreturn_t acpi_irq(int irq, void *dev_id) 346static irqreturn_t acpi_irq(int irq, void *dev_id)
431{ 347{
432 u32 handled; 348 u32 handled;
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 6f3b217699e9..e8e2d8869236 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -216,8 +216,10 @@ static void acpi_safe_halt(void)
216 * test NEED_RESCHED: 216 * test NEED_RESCHED:
217 */ 217 */
218 smp_mb(); 218 smp_mb();
219 if (!need_resched()) 219 if (!need_resched()) {
220 safe_halt(); 220 safe_halt();
221 local_irq_disable();
222 }
221 current_thread_info()->status |= TS_POLLING; 223 current_thread_info()->status |= TS_POLLING;
222} 224}
223 225
@@ -421,7 +423,9 @@ static void acpi_processor_idle(void)
421 else 423 else
422 acpi_safe_halt(); 424 acpi_safe_halt();
423 425
424 local_irq_enable(); 426 if (irqs_disabled())
427 local_irq_enable();
428
425 return; 429 return;
426 } 430 }
427 431
@@ -530,7 +534,9 @@ static void acpi_processor_idle(void)
530 * skew otherwise. 534 * skew otherwise.
531 */ 535 */
532 sleep_ticks = 0xFFFFFFFF; 536 sleep_ticks = 0xFFFFFFFF;
533 local_irq_enable(); 537 if (irqs_disabled())
538 local_irq_enable();
539
534 break; 540 break;
535 541
536 case ACPI_STATE_C2: 542 case ACPI_STATE_C2:
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 1bc0c74f2755..12fb44f16766 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -807,40 +807,11 @@ static void acpi_video_bus_find_cap(struct acpi_video_bus *video)
807static int acpi_video_bus_check(struct acpi_video_bus *video) 807static int acpi_video_bus_check(struct acpi_video_bus *video)
808{ 808{
809 acpi_status status = -ENOENT; 809 acpi_status status = -ENOENT;
810 long device_id; 810
811 struct device *dev;
812 struct acpi_device *device;
813 811
814 if (!video) 812 if (!video)
815 return -EINVAL; 813 return -EINVAL;
816 814
817 device = video->device;
818
819 status =
820 acpi_evaluate_integer(device->handle, "_ADR", NULL, &device_id);
821
822 if (!ACPI_SUCCESS(status))
823 return -ENODEV;
824
825 /* We need to attempt to determine whether the _ADR refers to a
826 PCI device or not. There's no terribly good way to do this,
827 so the best we can hope for is to assume that there'll never
828 be a video device in the host bridge */
829 if (device_id >= 0x10000) {
830 /* It looks like a PCI device. Does it exist? */
831 dev = acpi_get_physical_device(device->handle);
832 } else {
833 /* It doesn't look like a PCI device. Does its parent
834 exist? */
835 acpi_handle phandle;
836 if (acpi_get_parent(device->handle, &phandle))
837 return -ENODEV;
838 dev = acpi_get_physical_device(phandle);
839 }
840 if (!dev)
841 return -ENODEV;
842 put_device(dev);
843
844 /* Since there is no HID, CID and so on for VGA driver, we have 815 /* Since there is no HID, CID and so on for VGA driver, we have
845 * to check well known required nodes. 816 * to check well known required nodes.
846 */ 817 */
@@ -1366,37 +1337,8 @@ acpi_video_bus_write_DOS(struct file *file,
1366 1337
1367static int acpi_video_bus_add_fs(struct acpi_device *device) 1338static int acpi_video_bus_add_fs(struct acpi_device *device)
1368{ 1339{
1369 long device_id;
1370 int status;
1371 struct proc_dir_entry *entry = NULL; 1340 struct proc_dir_entry *entry = NULL;
1372 struct acpi_video_bus *video; 1341 struct acpi_video_bus *video;
1373 struct device *dev;
1374
1375 status =
1376 acpi_evaluate_integer(device->handle, "_ADR", NULL, &device_id);
1377
1378 if (!ACPI_SUCCESS(status))
1379 return -ENODEV;
1380
1381 /* We need to attempt to determine whether the _ADR refers to a
1382 PCI device or not. There's no terribly good way to do this,
1383 so the best we can hope for is to assume that there'll never
1384 be a video device in the host bridge */
1385 if (device_id >= 0x10000) {
1386 /* It looks like a PCI device. Does it exist? */
1387 dev = acpi_get_physical_device(device->handle);
1388 } else {
1389 /* It doesn't look like a PCI device. Does its parent
1390 exist? */
1391 acpi_handle phandle;
1392 if (acpi_get_parent(device->handle, &phandle))
1393 return -ENODEV;
1394 dev = acpi_get_physical_device(phandle);
1395 }
1396 if (!dev)
1397 return -ENODEV;
1398 put_device(dev);
1399
1400 1342
1401 1343
1402 video = acpi_driver_data(device); 1344 video = acpi_driver_data(device);
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index e469647330de..25aba69b59b4 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -30,6 +30,7 @@ config ATA_NONSTANDARD
30config ATA_ACPI 30config ATA_ACPI
31 bool 31 bool
32 depends on ACPI && PCI 32 depends on ACPI && PCI
33 select ACPI_DOCK
33 default y 34 default y
34 help 35 help
35 This option adds support for ATA-related ACPI objects. 36 This option adds support for ATA-related ACPI objects.
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 6978469eb16d..17ee6ed985d9 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -49,6 +49,10 @@
49#define DRV_NAME "ahci" 49#define DRV_NAME "ahci"
50#define DRV_VERSION "3.0" 50#define DRV_VERSION "3.0"
51 51
52static int ahci_skip_host_reset;
53module_param_named(skip_host_reset, ahci_skip_host_reset, int, 0444);
54MODULE_PARM_DESC(skip_host_reset, "skip global host reset (0=don't skip, 1=skip)");
55
52static int ahci_enable_alpm(struct ata_port *ap, 56static int ahci_enable_alpm(struct ata_port *ap,
53 enum link_pm policy); 57 enum link_pm policy);
54static void ahci_disable_alpm(struct ata_port *ap); 58static void ahci_disable_alpm(struct ata_port *ap);
@@ -587,6 +591,7 @@ static const struct pci_device_id ahci_pci_tbl[] = {
587 591
588 /* Marvell */ 592 /* Marvell */
589 { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */ 593 { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */
594 { PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv }, /* 6121 */
590 595
591 /* Generic, PCI class code for AHCI */ 596 /* Generic, PCI class code for AHCI */
592 { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 597 { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
@@ -661,6 +666,7 @@ static void ahci_save_initial_config(struct pci_dev *pdev,
661 void __iomem *mmio = pcim_iomap_table(pdev)[AHCI_PCI_BAR]; 666 void __iomem *mmio = pcim_iomap_table(pdev)[AHCI_PCI_BAR];
662 u32 cap, port_map; 667 u32 cap, port_map;
663 int i; 668 int i;
669 int mv;
664 670
665 /* make sure AHCI mode is enabled before accessing CAP */ 671 /* make sure AHCI mode is enabled before accessing CAP */
666 ahci_enable_ahci(mmio); 672 ahci_enable_ahci(mmio);
@@ -696,12 +702,16 @@ static void ahci_save_initial_config(struct pci_dev *pdev,
696 * presence register, as bit 4 (counting from 0) 702 * presence register, as bit 4 (counting from 0)
697 */ 703 */
698 if (hpriv->flags & AHCI_HFLAG_MV_PATA) { 704 if (hpriv->flags & AHCI_HFLAG_MV_PATA) {
705 if (pdev->device == 0x6121)
706 mv = 0x3;
707 else
708 mv = 0xf;
699 dev_printk(KERN_ERR, &pdev->dev, 709 dev_printk(KERN_ERR, &pdev->dev,
700 "MV_AHCI HACK: port_map %x -> %x\n", 710 "MV_AHCI HACK: port_map %x -> %x\n",
701 hpriv->port_map, 711 port_map,
702 hpriv->port_map & 0xf); 712 port_map & mv);
703 713
704 port_map &= 0xf; 714 port_map &= mv;
705 } 715 }
706 716
707 /* cross check port_map and cap.n_ports */ 717 /* cross check port_map and cap.n_ports */
@@ -1088,29 +1098,35 @@ static int ahci_reset_controller(struct ata_host *host)
1088 ahci_enable_ahci(mmio); 1098 ahci_enable_ahci(mmio);
1089 1099
1090 /* global controller reset */ 1100 /* global controller reset */
1091 tmp = readl(mmio + HOST_CTL); 1101 if (!ahci_skip_host_reset) {
1092 if ((tmp & HOST_RESET) == 0) { 1102 tmp = readl(mmio + HOST_CTL);
1093 writel(tmp | HOST_RESET, mmio + HOST_CTL); 1103 if ((tmp & HOST_RESET) == 0) {
1094 readl(mmio + HOST_CTL); /* flush */ 1104 writel(tmp | HOST_RESET, mmio + HOST_CTL);
1095 } 1105 readl(mmio + HOST_CTL); /* flush */
1106 }
1096 1107
1097 /* reset must complete within 1 second, or 1108 /* reset must complete within 1 second, or
1098 * the hardware should be considered fried. 1109 * the hardware should be considered fried.
1099 */ 1110 */
1100 ssleep(1); 1111 ssleep(1);
1101 1112
1102 tmp = readl(mmio + HOST_CTL); 1113 tmp = readl(mmio + HOST_CTL);
1103 if (tmp & HOST_RESET) { 1114 if (tmp & HOST_RESET) {
1104 dev_printk(KERN_ERR, host->dev, 1115 dev_printk(KERN_ERR, host->dev,
1105 "controller reset failed (0x%x)\n", tmp); 1116 "controller reset failed (0x%x)\n", tmp);
1106 return -EIO; 1117 return -EIO;
1107 } 1118 }
1108 1119
1109 /* turn on AHCI mode */ 1120 /* turn on AHCI mode */
1110 ahci_enable_ahci(mmio); 1121 ahci_enable_ahci(mmio);
1111 1122
1112 /* some registers might be cleared on reset. restore initial values */ 1123 /* Some registers might be cleared on reset. Restore
1113 ahci_restore_initial_config(host); 1124 * initial values.
1125 */
1126 ahci_restore_initial_config(host);
1127 } else
1128 dev_printk(KERN_INFO, host->dev,
1129 "skipping global host reset\n");
1114 1130
1115 if (pdev->vendor == PCI_VENDOR_ID_INTEL) { 1131 if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
1116 u16 tmp16; 1132 u16 tmp16;
@@ -1162,9 +1178,14 @@ static void ahci_init_controller(struct ata_host *host)
1162 int i; 1178 int i;
1163 void __iomem *port_mmio; 1179 void __iomem *port_mmio;
1164 u32 tmp; 1180 u32 tmp;
1181 int mv;
1165 1182
1166 if (hpriv->flags & AHCI_HFLAG_MV_PATA) { 1183 if (hpriv->flags & AHCI_HFLAG_MV_PATA) {
1167 port_mmio = __ahci_port_base(host, 4); 1184 if (pdev->device == 0x6121)
1185 mv = 2;
1186 else
1187 mv = 4;
1188 port_mmio = __ahci_port_base(host, mv);
1168 1189
1169 writel(0, port_mmio + PORT_IRQ_MASK); 1190 writel(0, port_mmio + PORT_IRQ_MASK);
1170 1191
@@ -2241,7 +2262,10 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
2241 if (rc) 2262 if (rc)
2242 return rc; 2263 return rc;
2243 2264
2244 rc = pcim_iomap_regions(pdev, 1 << AHCI_PCI_BAR, DRV_NAME); 2265 /* AHCI controllers often implement SFF compatible interface.
2266 * Grab all PCI BARs just in case.
2267 */
2268 rc = pcim_iomap_regions_request_all(pdev, 1 << AHCI_PCI_BAR, DRV_NAME);
2245 if (rc == -EBUSY) 2269 if (rc == -EBUSY)
2246 pcim_pin_device(pdev); 2270 pcim_pin_device(pdev);
2247 if (rc) 2271 if (rc)
diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c
index 0770cb7391a4..bf98a566adac 100644
--- a/drivers/ata/libata-acpi.c
+++ b/drivers/ata/libata-acpi.c
@@ -118,45 +118,77 @@ static void ata_acpi_associate_ide_port(struct ata_port *ap)
118 ap->pflags |= ATA_PFLAG_INIT_GTM_VALID; 118 ap->pflags |= ATA_PFLAG_INIT_GTM_VALID;
119} 119}
120 120
121static void ata_acpi_handle_hotplug(struct ata_port *ap, struct kobject *kobj, 121static void ata_acpi_handle_hotplug(struct ata_port *ap, struct ata_device *dev,
122 u32 event) 122 u32 event)
123{ 123{
124 char event_string[12]; 124 char event_string[12];
125 char *envp[] = { event_string, NULL }; 125 char *envp[] = { event_string, NULL };
126 struct ata_eh_info *ehi = &ap->link.eh_info; 126 struct ata_eh_info *ehi;
127 127 struct kobject *kobj = NULL;
128 if (event == 0 || event == 1) { 128 int wait = 0;
129 unsigned long flags; 129 unsigned long flags;
130 spin_lock_irqsave(ap->lock, flags); 130
131 ata_ehi_clear_desc(ehi); 131 if (!ap)
132 ata_ehi_push_desc(ehi, "ACPI event"); 132 ap = dev->link->ap;
133 ata_ehi_hotplugged(ehi); 133 ehi = &ap->link.eh_info;
134 ata_port_freeze(ap); 134
135 spin_unlock_irqrestore(ap->lock, flags); 135 spin_lock_irqsave(ap->lock, flags);
136
137 switch (event) {
138 case ACPI_NOTIFY_BUS_CHECK:
139 case ACPI_NOTIFY_DEVICE_CHECK:
140 ata_ehi_push_desc(ehi, "ACPI event");
141 ata_ehi_hotplugged(ehi);
142 ata_port_freeze(ap);
143 break;
144
145 case ACPI_NOTIFY_EJECT_REQUEST:
146 ata_ehi_push_desc(ehi, "ACPI event");
147 if (dev)
148 dev->flags |= ATA_DFLAG_DETACH;
149 else {
150 struct ata_link *tlink;
151 struct ata_device *tdev;
152
153 ata_port_for_each_link(tlink, ap)
154 ata_link_for_each_dev(tdev, tlink)
155 tdev->flags |= ATA_DFLAG_DETACH;
156 }
157
158 ata_port_schedule_eh(ap);
159 wait = 1;
160 break;
136 } 161 }
137 162
163 if (dev) {
164 if (dev->sdev)
165 kobj = &dev->sdev->sdev_gendev.kobj;
166 } else
167 kobj = &ap->dev->kobj;
168
138 if (kobj) { 169 if (kobj) {
139 sprintf(event_string, "BAY_EVENT=%d", event); 170 sprintf(event_string, "BAY_EVENT=%d", event);
140 kobject_uevent_env(kobj, KOBJ_CHANGE, envp); 171 kobject_uevent_env(kobj, KOBJ_CHANGE, envp);
141 } 172 }
173
174 spin_unlock_irqrestore(ap->lock, flags);
175
176 if (wait)
177 ata_port_wait_eh(ap);
142} 178}
143 179
144static void ata_acpi_dev_notify(acpi_handle handle, u32 event, void *data) 180static void ata_acpi_dev_notify(acpi_handle handle, u32 event, void *data)
145{ 181{
146 struct ata_device *dev = data; 182 struct ata_device *dev = data;
147 struct kobject *kobj = NULL;
148 183
149 if (dev->sdev) 184 ata_acpi_handle_hotplug(NULL, dev, event);
150 kobj = &dev->sdev->sdev_gendev.kobj;
151
152 ata_acpi_handle_hotplug(dev->link->ap, kobj, event);
153} 185}
154 186
155static void ata_acpi_ap_notify(acpi_handle handle, u32 event, void *data) 187static void ata_acpi_ap_notify(acpi_handle handle, u32 event, void *data)
156{ 188{
157 struct ata_port *ap = data; 189 struct ata_port *ap = data;
158 190
159 ata_acpi_handle_hotplug(ap, &ap->dev->kobj, event); 191 ata_acpi_handle_hotplug(ap, NULL, event);
160} 192}
161 193
162/** 194/**
@@ -191,20 +223,30 @@ void ata_acpi_associate(struct ata_host *host)
191 else 223 else
192 ata_acpi_associate_ide_port(ap); 224 ata_acpi_associate_ide_port(ap);
193 225
194 if (ap->acpi_handle) 226 if (ap->acpi_handle) {
195 acpi_install_notify_handler (ap->acpi_handle, 227 acpi_install_notify_handler(ap->acpi_handle,
196 ACPI_SYSTEM_NOTIFY, 228 ACPI_SYSTEM_NOTIFY,
197 ata_acpi_ap_notify, 229 ata_acpi_ap_notify, ap);
198 ap); 230#if defined(CONFIG_ACPI_DOCK) || defined(CONFIG_ACPI_DOCK_MODULE)
231 /* we might be on a docking station */
232 register_hotplug_dock_device(ap->acpi_handle,
233 ata_acpi_ap_notify, ap);
234#endif
235 }
199 236
200 for (j = 0; j < ata_link_max_devices(&ap->link); j++) { 237 for (j = 0; j < ata_link_max_devices(&ap->link); j++) {
201 struct ata_device *dev = &ap->link.device[j]; 238 struct ata_device *dev = &ap->link.device[j];
202 239
203 if (dev->acpi_handle) 240 if (dev->acpi_handle) {
204 acpi_install_notify_handler (dev->acpi_handle, 241 acpi_install_notify_handler(dev->acpi_handle,
205 ACPI_SYSTEM_NOTIFY, 242 ACPI_SYSTEM_NOTIFY,
206 ata_acpi_dev_notify, 243 ata_acpi_dev_notify, dev);
207 dev); 244#if defined(CONFIG_ACPI_DOCK) || defined(CONFIG_ACPI_DOCK_MODULE)
245 /* we might be on a docking station */
246 register_hotplug_dock_device(dev->acpi_handle,
247 ata_acpi_dev_notify, dev);
248#endif
249 }
208 } 250 }
209 } 251 }
210} 252}
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c
index 7e68edf3c0f3..8786455c901d 100644
--- a/drivers/ata/pata_ali.c
+++ b/drivers/ata/pata_ali.c
@@ -295,7 +295,7 @@ static void ali_lock_sectors(struct ata_device *adev)
295static int ali_check_atapi_dma(struct ata_queued_cmd *qc) 295static int ali_check_atapi_dma(struct ata_queued_cmd *qc)
296{ 296{
297 /* If its not a media command, its not worth it */ 297 /* If its not a media command, its not worth it */
298 if (qc->nbytes < 2048) 298 if (atapi_cmd_type(qc->cdb[0]) == ATAPI_MISC)
299 return -EOPNOTSUPP; 299 return -EOPNOTSUPP;
300 return 0; 300 return 0;
301} 301}
diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c
index 9427a61f62b0..432181ed7bb5 100644
--- a/drivers/atm/fore200e.c
+++ b/drivers/atm/fore200e.c
@@ -1988,19 +1988,19 @@ fore200e_fetch_stats(struct fore200e* fore200e, struct sonet_stats __user *arg)
1988 if (fore200e_getstats(fore200e) < 0) 1988 if (fore200e_getstats(fore200e) < 0)
1989 return -EIO; 1989 return -EIO;
1990 1990
1991 tmp.section_bip = cpu_to_be32(fore200e->stats->oc3.section_bip8_errors); 1991 tmp.section_bip = be32_to_cpu(fore200e->stats->oc3.section_bip8_errors);
1992 tmp.line_bip = cpu_to_be32(fore200e->stats->oc3.line_bip24_errors); 1992 tmp.line_bip = be32_to_cpu(fore200e->stats->oc3.line_bip24_errors);
1993 tmp.path_bip = cpu_to_be32(fore200e->stats->oc3.path_bip8_errors); 1993 tmp.path_bip = be32_to_cpu(fore200e->stats->oc3.path_bip8_errors);
1994 tmp.line_febe = cpu_to_be32(fore200e->stats->oc3.line_febe_errors); 1994 tmp.line_febe = be32_to_cpu(fore200e->stats->oc3.line_febe_errors);
1995 tmp.path_febe = cpu_to_be32(fore200e->stats->oc3.path_febe_errors); 1995 tmp.path_febe = be32_to_cpu(fore200e->stats->oc3.path_febe_errors);
1996 tmp.corr_hcs = cpu_to_be32(fore200e->stats->oc3.corr_hcs_errors); 1996 tmp.corr_hcs = be32_to_cpu(fore200e->stats->oc3.corr_hcs_errors);
1997 tmp.uncorr_hcs = cpu_to_be32(fore200e->stats->oc3.ucorr_hcs_errors); 1997 tmp.uncorr_hcs = be32_to_cpu(fore200e->stats->oc3.ucorr_hcs_errors);
1998 tmp.tx_cells = cpu_to_be32(fore200e->stats->aal0.cells_transmitted) + 1998 tmp.tx_cells = be32_to_cpu(fore200e->stats->aal0.cells_transmitted) +
1999 cpu_to_be32(fore200e->stats->aal34.cells_transmitted) + 1999 be32_to_cpu(fore200e->stats->aal34.cells_transmitted) +
2000 cpu_to_be32(fore200e->stats->aal5.cells_transmitted); 2000 be32_to_cpu(fore200e->stats->aal5.cells_transmitted);
2001 tmp.rx_cells = cpu_to_be32(fore200e->stats->aal0.cells_received) + 2001 tmp.rx_cells = be32_to_cpu(fore200e->stats->aal0.cells_received) +
2002 cpu_to_be32(fore200e->stats->aal34.cells_received) + 2002 be32_to_cpu(fore200e->stats->aal34.cells_received) +
2003 cpu_to_be32(fore200e->stats->aal5.cells_received); 2003 be32_to_cpu(fore200e->stats->aal5.cells_received);
2004 2004
2005 if (arg) 2005 if (arg)
2006 return copy_to_user(arg, &tmp, sizeof(struct sonet_stats)) ? -EFAULT : 0; 2006 return copy_to_user(arg, &tmp, sizeof(struct sonet_stats)) ? -EFAULT : 0;
@@ -2587,7 +2587,7 @@ fore200e_start_fw(struct fore200e* fore200e)
2587static int __devinit 2587static int __devinit
2588fore200e_load_fw(struct fore200e* fore200e) 2588fore200e_load_fw(struct fore200e* fore200e)
2589{ 2589{
2590 u32* fw_data = (u32*) fore200e->bus->fw_data; 2590 __le32* fw_data = (__le32*) fore200e->bus->fw_data;
2591 u32 fw_size = (u32) *fore200e->bus->fw_size / sizeof(u32); 2591 u32 fw_size = (u32) *fore200e->bus->fw_size / sizeof(u32);
2592 2592
2593 struct fw_header* fw_header = (struct fw_header*) fw_data; 2593 struct fw_header* fw_header = (struct fw_header*) fw_data;
@@ -2965,8 +2965,8 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page)
2965 " 4b5b:\n" 2965 " 4b5b:\n"
2966 " crc_header_errors:\t\t%10u\n" 2966 " crc_header_errors:\t\t%10u\n"
2967 " framing_errors:\t\t%10u\n", 2967 " framing_errors:\t\t%10u\n",
2968 cpu_to_be32(fore200e->stats->phy.crc_header_errors), 2968 be32_to_cpu(fore200e->stats->phy.crc_header_errors),
2969 cpu_to_be32(fore200e->stats->phy.framing_errors)); 2969 be32_to_cpu(fore200e->stats->phy.framing_errors));
2970 2970
2971 if (!left--) 2971 if (!left--)
2972 return sprintf(page, "\n" 2972 return sprintf(page, "\n"
@@ -2978,13 +2978,13 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page)
2978 " path_febe_errors:\t\t%10u\n" 2978 " path_febe_errors:\t\t%10u\n"
2979 " corr_hcs_errors:\t\t%10u\n" 2979 " corr_hcs_errors:\t\t%10u\n"
2980 " ucorr_hcs_errors:\t\t%10u\n", 2980 " ucorr_hcs_errors:\t\t%10u\n",
2981 cpu_to_be32(fore200e->stats->oc3.section_bip8_errors), 2981 be32_to_cpu(fore200e->stats->oc3.section_bip8_errors),
2982 cpu_to_be32(fore200e->stats->oc3.path_bip8_errors), 2982 be32_to_cpu(fore200e->stats->oc3.path_bip8_errors),
2983 cpu_to_be32(fore200e->stats->oc3.line_bip24_errors), 2983 be32_to_cpu(fore200e->stats->oc3.line_bip24_errors),
2984 cpu_to_be32(fore200e->stats->oc3.line_febe_errors), 2984 be32_to_cpu(fore200e->stats->oc3.line_febe_errors),
2985 cpu_to_be32(fore200e->stats->oc3.path_febe_errors), 2985 be32_to_cpu(fore200e->stats->oc3.path_febe_errors),
2986 cpu_to_be32(fore200e->stats->oc3.corr_hcs_errors), 2986 be32_to_cpu(fore200e->stats->oc3.corr_hcs_errors),
2987 cpu_to_be32(fore200e->stats->oc3.ucorr_hcs_errors)); 2987 be32_to_cpu(fore200e->stats->oc3.ucorr_hcs_errors));
2988 2988
2989 if (!left--) 2989 if (!left--)
2990 return sprintf(page,"\n" 2990 return sprintf(page,"\n"
@@ -2995,12 +2995,12 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page)
2995 " vpi no conn:\t\t%10u\n" 2995 " vpi no conn:\t\t%10u\n"
2996 " vci out of range:\t\t%10u\n" 2996 " vci out of range:\t\t%10u\n"
2997 " vci no conn:\t\t%10u\n", 2997 " vci no conn:\t\t%10u\n",
2998 cpu_to_be32(fore200e->stats->atm.cells_transmitted), 2998 be32_to_cpu(fore200e->stats->atm.cells_transmitted),
2999 cpu_to_be32(fore200e->stats->atm.cells_received), 2999 be32_to_cpu(fore200e->stats->atm.cells_received),
3000 cpu_to_be32(fore200e->stats->atm.vpi_bad_range), 3000 be32_to_cpu(fore200e->stats->atm.vpi_bad_range),
3001 cpu_to_be32(fore200e->stats->atm.vpi_no_conn), 3001 be32_to_cpu(fore200e->stats->atm.vpi_no_conn),
3002 cpu_to_be32(fore200e->stats->atm.vci_bad_range), 3002 be32_to_cpu(fore200e->stats->atm.vci_bad_range),
3003 cpu_to_be32(fore200e->stats->atm.vci_no_conn)); 3003 be32_to_cpu(fore200e->stats->atm.vci_no_conn));
3004 3004
3005 if (!left--) 3005 if (!left--)
3006 return sprintf(page,"\n" 3006 return sprintf(page,"\n"
@@ -3008,9 +3008,9 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page)
3008 " TX:\t\t\t%10u\n" 3008 " TX:\t\t\t%10u\n"
3009 " RX:\t\t\t%10u\n" 3009 " RX:\t\t\t%10u\n"
3010 " dropped:\t\t\t%10u\n", 3010 " dropped:\t\t\t%10u\n",
3011 cpu_to_be32(fore200e->stats->aal0.cells_transmitted), 3011 be32_to_cpu(fore200e->stats->aal0.cells_transmitted),
3012 cpu_to_be32(fore200e->stats->aal0.cells_received), 3012 be32_to_cpu(fore200e->stats->aal0.cells_received),
3013 cpu_to_be32(fore200e->stats->aal0.cells_dropped)); 3013 be32_to_cpu(fore200e->stats->aal0.cells_dropped));
3014 3014
3015 if (!left--) 3015 if (!left--)
3016 return sprintf(page,"\n" 3016 return sprintf(page,"\n"
@@ -3026,15 +3026,15 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page)
3026 " RX:\t\t\t%10u\n" 3026 " RX:\t\t\t%10u\n"
3027 " dropped:\t\t\t%10u\n" 3027 " dropped:\t\t\t%10u\n"
3028 " protocol errors:\t\t%10u\n", 3028 " protocol errors:\t\t%10u\n",
3029 cpu_to_be32(fore200e->stats->aal34.cells_transmitted), 3029 be32_to_cpu(fore200e->stats->aal34.cells_transmitted),
3030 cpu_to_be32(fore200e->stats->aal34.cells_received), 3030 be32_to_cpu(fore200e->stats->aal34.cells_received),
3031 cpu_to_be32(fore200e->stats->aal34.cells_dropped), 3031 be32_to_cpu(fore200e->stats->aal34.cells_dropped),
3032 cpu_to_be32(fore200e->stats->aal34.cells_crc_errors), 3032 be32_to_cpu(fore200e->stats->aal34.cells_crc_errors),
3033 cpu_to_be32(fore200e->stats->aal34.cells_protocol_errors), 3033 be32_to_cpu(fore200e->stats->aal34.cells_protocol_errors),
3034 cpu_to_be32(fore200e->stats->aal34.cspdus_transmitted), 3034 be32_to_cpu(fore200e->stats->aal34.cspdus_transmitted),
3035 cpu_to_be32(fore200e->stats->aal34.cspdus_received), 3035 be32_to_cpu(fore200e->stats->aal34.cspdus_received),
3036 cpu_to_be32(fore200e->stats->aal34.cspdus_dropped), 3036 be32_to_cpu(fore200e->stats->aal34.cspdus_dropped),
3037 cpu_to_be32(fore200e->stats->aal34.cspdus_protocol_errors)); 3037 be32_to_cpu(fore200e->stats->aal34.cspdus_protocol_errors));
3038 3038
3039 if (!left--) 3039 if (!left--)
3040 return sprintf(page,"\n" 3040 return sprintf(page,"\n"
@@ -3050,15 +3050,15 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page)
3050 " dropped:\t\t\t%10u\n" 3050 " dropped:\t\t\t%10u\n"
3051 " CRC errors:\t\t%10u\n" 3051 " CRC errors:\t\t%10u\n"
3052 " protocol errors:\t\t%10u\n", 3052 " protocol errors:\t\t%10u\n",
3053 cpu_to_be32(fore200e->stats->aal5.cells_transmitted), 3053 be32_to_cpu(fore200e->stats->aal5.cells_transmitted),
3054 cpu_to_be32(fore200e->stats->aal5.cells_received), 3054 be32_to_cpu(fore200e->stats->aal5.cells_received),
3055 cpu_to_be32(fore200e->stats->aal5.cells_dropped), 3055 be32_to_cpu(fore200e->stats->aal5.cells_dropped),
3056 cpu_to_be32(fore200e->stats->aal5.congestion_experienced), 3056 be32_to_cpu(fore200e->stats->aal5.congestion_experienced),
3057 cpu_to_be32(fore200e->stats->aal5.cspdus_transmitted), 3057 be32_to_cpu(fore200e->stats->aal5.cspdus_transmitted),
3058 cpu_to_be32(fore200e->stats->aal5.cspdus_received), 3058 be32_to_cpu(fore200e->stats->aal5.cspdus_received),
3059 cpu_to_be32(fore200e->stats->aal5.cspdus_dropped), 3059 be32_to_cpu(fore200e->stats->aal5.cspdus_dropped),
3060 cpu_to_be32(fore200e->stats->aal5.cspdus_crc_errors), 3060 be32_to_cpu(fore200e->stats->aal5.cspdus_crc_errors),
3061 cpu_to_be32(fore200e->stats->aal5.cspdus_protocol_errors)); 3061 be32_to_cpu(fore200e->stats->aal5.cspdus_protocol_errors));
3062 3062
3063 if (!left--) 3063 if (!left--)
3064 return sprintf(page,"\n" 3064 return sprintf(page,"\n"
@@ -3069,11 +3069,11 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page)
3069 " large b2:\t\t\t%10u\n" 3069 " large b2:\t\t\t%10u\n"
3070 " RX PDUs:\t\t\t%10u\n" 3070 " RX PDUs:\t\t\t%10u\n"
3071 " TX PDUs:\t\t\t%10lu\n", 3071 " TX PDUs:\t\t\t%10lu\n",
3072 cpu_to_be32(fore200e->stats->aux.small_b1_failed), 3072 be32_to_cpu(fore200e->stats->aux.small_b1_failed),
3073 cpu_to_be32(fore200e->stats->aux.large_b1_failed), 3073 be32_to_cpu(fore200e->stats->aux.large_b1_failed),
3074 cpu_to_be32(fore200e->stats->aux.small_b2_failed), 3074 be32_to_cpu(fore200e->stats->aux.small_b2_failed),
3075 cpu_to_be32(fore200e->stats->aux.large_b2_failed), 3075 be32_to_cpu(fore200e->stats->aux.large_b2_failed),
3076 cpu_to_be32(fore200e->stats->aux.rpd_alloc_failed), 3076 be32_to_cpu(fore200e->stats->aux.rpd_alloc_failed),
3077 fore200e->tx_sat); 3077 fore200e->tx_sat);
3078 3078
3079 if (!left--) 3079 if (!left--)
diff --git a/drivers/atm/fore200e.h b/drivers/atm/fore200e.h
index b85a54613dea..183841cc8fdf 100644
--- a/drivers/atm/fore200e.h
+++ b/drivers/atm/fore200e.h
@@ -349,90 +349,90 @@ typedef struct oc3_block {
349/* physical encoding statistics */ 349/* physical encoding statistics */
350 350
351typedef struct stats_phy { 351typedef struct stats_phy {
352 u32 crc_header_errors; /* cells received with bad header CRC */ 352 __be32 crc_header_errors; /* cells received with bad header CRC */
353 u32 framing_errors; /* cells received with bad framing */ 353 __be32 framing_errors; /* cells received with bad framing */
354 u32 pad[ 2 ]; /* i960 padding */ 354 __be32 pad[ 2 ]; /* i960 padding */
355} stats_phy_t; 355} stats_phy_t;
356 356
357 357
358/* OC-3 statistics */ 358/* OC-3 statistics */
359 359
360typedef struct stats_oc3 { 360typedef struct stats_oc3 {
361 u32 section_bip8_errors; /* section 8 bit interleaved parity */ 361 __be32 section_bip8_errors; /* section 8 bit interleaved parity */
362 u32 path_bip8_errors; /* path 8 bit interleaved parity */ 362 __be32 path_bip8_errors; /* path 8 bit interleaved parity */
363 u32 line_bip24_errors; /* line 24 bit interleaved parity */ 363 __be32 line_bip24_errors; /* line 24 bit interleaved parity */
364 u32 line_febe_errors; /* line far end block errors */ 364 __be32 line_febe_errors; /* line far end block errors */
365 u32 path_febe_errors; /* path far end block errors */ 365 __be32 path_febe_errors; /* path far end block errors */
366 u32 corr_hcs_errors; /* correctable header check sequence */ 366 __be32 corr_hcs_errors; /* correctable header check sequence */
367 u32 ucorr_hcs_errors; /* uncorrectable header check sequence */ 367 __be32 ucorr_hcs_errors; /* uncorrectable header check sequence */
368 u32 pad[ 1 ]; /* i960 padding */ 368 __be32 pad[ 1 ]; /* i960 padding */
369} stats_oc3_t; 369} stats_oc3_t;
370 370
371 371
372/* ATM statistics */ 372/* ATM statistics */
373 373
374typedef struct stats_atm { 374typedef struct stats_atm {
375 u32 cells_transmitted; /* cells transmitted */ 375 __be32 cells_transmitted; /* cells transmitted */
376 u32 cells_received; /* cells received */ 376 __be32 cells_received; /* cells received */
377 u32 vpi_bad_range; /* cell drops: VPI out of range */ 377 __be32 vpi_bad_range; /* cell drops: VPI out of range */
378 u32 vpi_no_conn; /* cell drops: no connection for VPI */ 378 __be32 vpi_no_conn; /* cell drops: no connection for VPI */
379 u32 vci_bad_range; /* cell drops: VCI out of range */ 379 __be32 vci_bad_range; /* cell drops: VCI out of range */
380 u32 vci_no_conn; /* cell drops: no connection for VCI */ 380 __be32 vci_no_conn; /* cell drops: no connection for VCI */
381 u32 pad[ 2 ]; /* i960 padding */ 381 __be32 pad[ 2 ]; /* i960 padding */
382} stats_atm_t; 382} stats_atm_t;
383 383
384/* AAL0 statistics */ 384/* AAL0 statistics */
385 385
386typedef struct stats_aal0 { 386typedef struct stats_aal0 {
387 u32 cells_transmitted; /* cells transmitted */ 387 __be32 cells_transmitted; /* cells transmitted */
388 u32 cells_received; /* cells received */ 388 __be32 cells_received; /* cells received */
389 u32 cells_dropped; /* cells dropped */ 389 __be32 cells_dropped; /* cells dropped */
390 u32 pad[ 1 ]; /* i960 padding */ 390 __be32 pad[ 1 ]; /* i960 padding */
391} stats_aal0_t; 391} stats_aal0_t;
392 392
393 393
394/* AAL3/4 statistics */ 394/* AAL3/4 statistics */
395 395
396typedef struct stats_aal34 { 396typedef struct stats_aal34 {
397 u32 cells_transmitted; /* cells transmitted from segmented PDUs */ 397 __be32 cells_transmitted; /* cells transmitted from segmented PDUs */
398 u32 cells_received; /* cells reassembled into PDUs */ 398 __be32 cells_received; /* cells reassembled into PDUs */
399 u32 cells_crc_errors; /* payload CRC error count */ 399 __be32 cells_crc_errors; /* payload CRC error count */
400 u32 cells_protocol_errors; /* SAR or CS layer protocol errors */ 400 __be32 cells_protocol_errors; /* SAR or CS layer protocol errors */
401 u32 cells_dropped; /* cells dropped: partial reassembly */ 401 __be32 cells_dropped; /* cells dropped: partial reassembly */
402 u32 cspdus_transmitted; /* CS PDUs transmitted */ 402 __be32 cspdus_transmitted; /* CS PDUs transmitted */
403 u32 cspdus_received; /* CS PDUs received */ 403 __be32 cspdus_received; /* CS PDUs received */
404 u32 cspdus_protocol_errors; /* CS layer protocol errors */ 404 __be32 cspdus_protocol_errors; /* CS layer protocol errors */
405 u32 cspdus_dropped; /* reassembled PDUs drop'd (in cells) */ 405 __be32 cspdus_dropped; /* reassembled PDUs drop'd (in cells) */
406 u32 pad[ 3 ]; /* i960 padding */ 406 __be32 pad[ 3 ]; /* i960 padding */
407} stats_aal34_t; 407} stats_aal34_t;
408 408
409 409
410/* AAL5 statistics */ 410/* AAL5 statistics */
411 411
412typedef struct stats_aal5 { 412typedef struct stats_aal5 {
413 u32 cells_transmitted; /* cells transmitted from segmented SDUs */ 413 __be32 cells_transmitted; /* cells transmitted from segmented SDUs */
414 u32 cells_received; /* cells reassembled into SDUs */ 414 __be32 cells_received; /* cells reassembled into SDUs */
415 u32 cells_dropped; /* reassembled PDUs dropped (in cells) */ 415 __be32 cells_dropped; /* reassembled PDUs dropped (in cells) */
416 u32 congestion_experienced; /* CRC error and length wrong */ 416 __be32 congestion_experienced; /* CRC error and length wrong */
417 u32 cspdus_transmitted; /* CS PDUs transmitted */ 417 __be32 cspdus_transmitted; /* CS PDUs transmitted */
418 u32 cspdus_received; /* CS PDUs received */ 418 __be32 cspdus_received; /* CS PDUs received */
419 u32 cspdus_crc_errors; /* CS PDUs CRC errors */ 419 __be32 cspdus_crc_errors; /* CS PDUs CRC errors */
420 u32 cspdus_protocol_errors; /* CS layer protocol errors */ 420 __be32 cspdus_protocol_errors; /* CS layer protocol errors */
421 u32 cspdus_dropped; /* reassembled PDUs dropped */ 421 __be32 cspdus_dropped; /* reassembled PDUs dropped */
422 u32 pad[ 3 ]; /* i960 padding */ 422 __be32 pad[ 3 ]; /* i960 padding */
423} stats_aal5_t; 423} stats_aal5_t;
424 424
425 425
426/* auxiliary statistics */ 426/* auxiliary statistics */
427 427
428typedef struct stats_aux { 428typedef struct stats_aux {
429 u32 small_b1_failed; /* receive BD allocation failures */ 429 __be32 small_b1_failed; /* receive BD allocation failures */
430 u32 large_b1_failed; /* receive BD allocation failures */ 430 __be32 large_b1_failed; /* receive BD allocation failures */
431 u32 small_b2_failed; /* receive BD allocation failures */ 431 __be32 small_b2_failed; /* receive BD allocation failures */
432 u32 large_b2_failed; /* receive BD allocation failures */ 432 __be32 large_b2_failed; /* receive BD allocation failures */
433 u32 rpd_alloc_failed; /* receive PDU allocation failures */ 433 __be32 rpd_alloc_failed; /* receive PDU allocation failures */
434 u32 receive_carrier; /* no carrier = 0, carrier = 1 */ 434 __be32 receive_carrier; /* no carrier = 0, carrier = 1 */
435 u32 pad[ 2 ]; /* i960 padding */ 435 __be32 pad[ 2 ]; /* i960 padding */
436} stats_aux_t; 436} stats_aux_t;
437 437
438 438
@@ -643,10 +643,10 @@ typedef struct host_bsq {
643/* header of the firmware image */ 643/* header of the firmware image */
644 644
645typedef struct fw_header { 645typedef struct fw_header {
646 u32 magic; /* magic number */ 646 __le32 magic; /* magic number */
647 u32 version; /* firmware version id */ 647 __le32 version; /* firmware version id */
648 u32 load_offset; /* fw load offset in board memory */ 648 __le32 load_offset; /* fw load offset in board memory */
649 u32 start_offset; /* fw execution start address in board memory */ 649 __le32 start_offset; /* fw execution start address in board memory */
650} fw_header_t; 650} fw_header_t;
651 651
652#define FW_HEADER_MAGIC 0x65726f66 /* 'fore' */ 652#define FW_HEADER_MAGIC 0x65726f66 /* 'fore' */
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index b6d230b3209f..0d1d2133d9bc 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -44,16 +44,6 @@ config MAC_FLOPPY
44 If you have a SWIM-3 (Super Woz Integrated Machine 3; from Apple) 44 If you have a SWIM-3 (Super Woz Integrated Machine 3; from Apple)
45 floppy controller, say Y here. Most commonly found in PowerMacs. 45 floppy controller, say Y here. Most commonly found in PowerMacs.
46 46
47config BLK_DEV_PS2
48 tristate "PS/2 ESDI hard disk support"
49 depends on MCA && MCA_LEGACY && BROKEN
50 help
51 Say Y here if you have a PS/2 machine with a MCA bus and an ESDI
52 hard disk.
53
54 To compile this driver as a module, choose M here: the
55 module will be called ps2esdi.
56
57config AMIGA_Z2RAM 47config AMIGA_Z2RAM
58 tristate "Amiga Zorro II ramdisk support" 48 tristate "Amiga Zorro II ramdisk support"
59 depends on ZORRO 49 depends on ZORRO
diff --git a/drivers/block/Makefile b/drivers/block/Makefile
index 01c972415cb2..5e584306be99 100644
--- a/drivers/block/Makefile
+++ b/drivers/block/Makefile
@@ -13,7 +13,6 @@ obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o
13obj-$(CONFIG_AMIGA_Z2RAM) += z2ram.o 13obj-$(CONFIG_AMIGA_Z2RAM) += z2ram.o
14obj-$(CONFIG_BLK_DEV_RAM) += brd.o 14obj-$(CONFIG_BLK_DEV_RAM) += brd.o
15obj-$(CONFIG_BLK_DEV_LOOP) += loop.o 15obj-$(CONFIG_BLK_DEV_LOOP) += loop.o
16obj-$(CONFIG_BLK_DEV_PS2) += ps2esdi.o
17obj-$(CONFIG_BLK_DEV_XD) += xd.o 16obj-$(CONFIG_BLK_DEV_XD) += xd.o
18obj-$(CONFIG_BLK_CPQ_DA) += cpqarray.o 17obj-$(CONFIG_BLK_CPQ_DA) += cpqarray.o
19obj-$(CONFIG_BLK_CPQ_CISS_DA) += cciss.o 18obj-$(CONFIG_BLK_CPQ_CISS_DA) += cciss.o
diff --git a/drivers/block/ps2esdi.c b/drivers/block/ps2esdi.c
deleted file mode 100644
index 3c796e236253..000000000000
--- a/drivers/block/ps2esdi.c
+++ /dev/null
@@ -1,1079 +0,0 @@
1/* ps2esdi driver based on assembler code by Arindam Banerji,
2 written by Peter De Schrijver */
3/* Reassuring note to IBM : This driver was NOT developed by vice-versa
4 engineering the PS/2's BIOS */
5/* Dedicated to Wannes, Tofke, Ykke, Godot, Killroy and all those
6 other lovely fish out there... */
7/* This code was written during the long and boring WINA
8 elections 1994 */
9/* Thanks to Arindam Banerij for giving me the source of his driver */
10/* This code may be freely distributed and modified in any way,
11 as long as these notes remain intact */
12
13/* Revised: 05/07/94 by Arindam Banerji (axb@cse.nd.edu) */
14/* Revised: 09/08/94 by Peter De Schrijver (stud11@cc4.kuleuven.ac.be)
15 Thanks to Arindam Banerij for sending me the docs of the adapter */
16
17/* BA Modified for ThinkPad 720 by Boris Ashkinazi */
18/* (bash@vnet.ibm.com) 08/08/95 */
19
20/* Modified further for ThinkPad-720C by Uri Blumenthal */
21/* (uri@watson.ibm.com) Sep 11, 1995 */
22
23/* TODO :
24 + Timeouts
25 + Get disk parameters
26 + DMA above 16MB
27 + reset after read/write error
28 */
29
30#define DEVICE_NAME "PS/2 ESDI"
31
32#include <linux/major.h>
33#include <linux/errno.h>
34#include <linux/wait.h>
35#include <linux/interrupt.h>
36#include <linux/fs.h>
37#include <linux/kernel.h>
38#include <linux/genhd.h>
39#include <linux/ps2esdi.h>
40#include <linux/blkdev.h>
41#include <linux/mca-legacy.h>
42#include <linux/init.h>
43#include <linux/ioport.h>
44#include <linux/module.h>
45#include <linux/hdreg.h>
46
47#include <asm/system.h>
48#include <asm/io.h>
49#include <asm/dma.h>
50#include <asm/mca_dma.h>
51#include <asm/uaccess.h>
52
53#define PS2ESDI_IRQ 14
54#define MAX_HD 2
55#define MAX_RETRIES 5
56#define MAX_16BIT 65536
57#define ESDI_TIMEOUT 0xf000
58#define ESDI_STAT_TIMEOUT 4
59
60#define TYPE_0_CMD_BLK_LENGTH 2
61#define TYPE_1_CMD_BLK_LENGTH 4
62
63static void reset_ctrl(void);
64
65static int ps2esdi_geninit(void);
66
67static void do_ps2esdi_request(struct request_queue * q);
68
69static void ps2esdi_readwrite(int cmd, struct request *req);
70
71static void ps2esdi_fill_cmd_block(u_short * cmd_blk, u_short cmd,
72u_short cyl, u_short head, u_short sector, u_short length, u_char drive);
73
74static int ps2esdi_out_cmd_blk(u_short * cmd_blk);
75
76static void ps2esdi_prep_dma(char *buffer, u_short length, u_char dma_xmode);
77
78static irqreturn_t ps2esdi_interrupt_handler(int irq, void *dev_id);
79static void (*current_int_handler) (u_int) = NULL;
80static void ps2esdi_normal_interrupt_handler(u_int);
81static void ps2esdi_initial_reset_int_handler(u_int);
82static void ps2esdi_geometry_int_handler(u_int);
83static int ps2esdi_getgeo(struct block_device *bdev, struct hd_geometry *geo);
84
85static int ps2esdi_read_status_words(int num_words, int max_words, u_short * buffer);
86
87static void dump_cmd_complete_status(u_int int_ret_code);
88
89static void ps2esdi_get_device_cfg(void);
90
91static void ps2esdi_reset_timer(unsigned long unused);
92
93static u_int dma_arb_level; /* DMA arbitration level */
94
95static DECLARE_WAIT_QUEUE_HEAD(ps2esdi_int);
96
97static int no_int_yet;
98static int ps2esdi_drives;
99static u_short io_base;
100static DEFINE_TIMER(esdi_timer, ps2esdi_reset_timer, 0, 0);
101static int reset_status;
102static int ps2esdi_slot = -1;
103static int tp720esdi = 0; /* Is it Integrated ESDI of ThinkPad-720? */
104static int intg_esdi = 0; /* If integrated adapter */
105struct ps2esdi_i_struct {
106 unsigned int head, sect, cyl, wpcom, lzone, ctl;
107};
108static DEFINE_SPINLOCK(ps2esdi_lock);
109static struct request_queue *ps2esdi_queue;
110static struct request *current_req;
111
112#if 0
113#if 0 /* try both - I don't know which one is better... UB */
114static struct ps2esdi_i_struct ps2esdi_info[MAX_HD] =
115{
116 {4, 48, 1553, 0, 0, 0},
117 {0, 0, 0, 0, 0, 0}};
118#else
119static struct ps2esdi_i_struct ps2esdi_info[MAX_HD] =
120{
121 {64, 32, 161, 0, 0, 0},
122 {0, 0, 0, 0, 0, 0}};
123#endif
124#endif
125static struct ps2esdi_i_struct ps2esdi_info[MAX_HD] =
126{
127 {0, 0, 0, 0, 0, 0},
128 {0, 0, 0, 0, 0, 0}};
129
130static struct block_device_operations ps2esdi_fops =
131{
132 .owner = THIS_MODULE,
133 .getgeo = ps2esdi_getgeo,
134};
135
136static struct gendisk *ps2esdi_gendisk[2];
137
138/* initialization routine called by ll_rw_blk.c */
139static int __init ps2esdi_init(void)
140{
141
142 int error = 0;
143
144 /* register the device - pass the name and major number */
145 if (register_blkdev(PS2ESDI_MAJOR, "ed"))
146 return -EBUSY;
147
148 /* set up some global information - indicating device specific info */
149 ps2esdi_queue = blk_init_queue(do_ps2esdi_request, &ps2esdi_lock);
150 if (!ps2esdi_queue) {
151 unregister_blkdev(PS2ESDI_MAJOR, "ed");
152 return -ENOMEM;
153 }
154
155 /* some minor housekeeping - setup the global gendisk structure */
156 error = ps2esdi_geninit();
157 if (error) {
158 printk(KERN_WARNING "PS2ESDI: error initialising"
159 " device, releasing resources\n");
160 unregister_blkdev(PS2ESDI_MAJOR, "ed");
161 blk_cleanup_queue(ps2esdi_queue);
162 return error;
163 }
164 return 0;
165} /* ps2esdi_init */
166
167#ifndef MODULE
168
169module_init(ps2esdi_init);
170
171#else
172
173static int cyl[MAX_HD] = {-1,-1};
174static int head[MAX_HD] = {-1, -1};
175static int sect[MAX_HD] = {-1, -1};
176
177module_param(tp720esdi, bool, 0);
178module_param_array(cyl, int, NULL, 0);
179module_param_array(head, int, NULL, 0);
180module_param_array(sect, int, NULL, 0);
181MODULE_LICENSE("GPL");
182
183int init_module(void) {
184 int drive;
185
186 for(drive = 0; drive < MAX_HD; drive++) {
187 struct ps2esdi_i_struct *info = &ps2esdi_info[drive];
188
189 if (cyl[drive] != -1) {
190 info->cyl = info->lzone = cyl[drive];
191 info->wpcom = 0;
192 }
193 if (head[drive] != -1) {
194 info->head = head[drive];
195 info->ctl = (head[drive] > 8 ? 8 : 0);
196 }
197 if (sect[drive] != -1) info->sect = sect[drive];
198 }
199 return ps2esdi_init();
200}
201
202void
203cleanup_module(void) {
204 int i;
205 if(ps2esdi_slot) {
206 mca_mark_as_unused(ps2esdi_slot);
207 mca_set_adapter_procfn(ps2esdi_slot, NULL, NULL);
208 }
209 release_region(io_base, 4);
210 free_dma(dma_arb_level);
211 free_irq(PS2ESDI_IRQ, &ps2esdi_gendisk);
212 unregister_blkdev(PS2ESDI_MAJOR, "ed");
213 blk_cleanup_queue(ps2esdi_queue);
214 for (i = 0; i < ps2esdi_drives; i++) {
215 del_gendisk(ps2esdi_gendisk[i]);
216 put_disk(ps2esdi_gendisk[i]);
217 }
218}
219#endif /* MODULE */
220
221/* handles boot time command line parameters */
222void __init tp720_setup(char *str, int *ints)
223{
224 /* no params, just sets the tp720esdi flag if it exists */
225
226 printk("%s: TP 720 ESDI flag set\n", DEVICE_NAME);
227 tp720esdi = 1;
228}
229
230void __init ed_setup(char *str, int *ints)
231{
232 int hdind = 0;
233
234 /* handles 3 parameters only - corresponding to
235 1. Number of cylinders
236 2. Number of heads
237 3. Sectors/track
238 */
239
240 if (ints[0] != 3)
241 return;
242
243 /* print out the information - seen at boot time */
244 printk("%s: ints[0]=%d ints[1]=%d ints[2]=%d ints[3]=%d\n",
245 DEVICE_NAME, ints[0], ints[1], ints[2], ints[3]);
246
247 /* set the index into device specific information table */
248 if (ps2esdi_info[0].head != 0)
249 hdind = 1;
250
251 /* set up all the device information */
252 ps2esdi_info[hdind].head = ints[2];
253 ps2esdi_info[hdind].sect = ints[3];
254 ps2esdi_info[hdind].cyl = ints[1];
255 ps2esdi_info[hdind].wpcom = 0;
256 ps2esdi_info[hdind].lzone = ints[1];
257 ps2esdi_info[hdind].ctl = (ints[2] > 8 ? 8 : 0);
258#if 0 /* this may be needed for PS2/Mod.80, but it hurts ThinkPad! */
259 ps2esdi_drives = hdind + 1; /* increment index for the next time */
260#endif
261} /* ed_setup */
262
263static int ps2esdi_getinfo(char *buf, int slot, void *d)
264{
265 int len = 0;
266
267 len += sprintf(buf + len, "DMA Arbitration Level: %d\n",
268 dma_arb_level);
269 len += sprintf(buf + len, "IO Port: %x\n", io_base);
270 len += sprintf(buf + len, "IRQ: 14\n");
271 len += sprintf(buf + len, "Drives: %d\n", ps2esdi_drives);
272
273 return len;
274}
275
276/* ps2 esdi specific initialization - called thru the gendisk chain */
277static int __init ps2esdi_geninit(void)
278{
279 /*
280 The first part contains the initialization code
281 for the ESDI disk subsystem. All we really do
282 is search for the POS registers of the controller
283 to do some simple setup operations. First, we
284 must ensure that the controller is installed,
285 enabled, and configured as PRIMARY. Then we must
286 determine the DMA arbitration level being used by
287 the controller so we can handle data transfer
288 operations properly. If all of this works, then
289 we will set the INIT_FLAG to a non-zero value.
290 */
291
292 int slot = 0, i, reset_start, reset_end;
293 u_char status;
294 unsigned short adapterID;
295 int error = 0;
296
297 if ((slot = mca_find_adapter(INTG_ESDI_ID, 0)) != MCA_NOTFOUND) {
298 adapterID = INTG_ESDI_ID;
299 printk("%s: integrated ESDI adapter found in slot %d\n",
300 DEVICE_NAME, slot+1);
301#ifndef MODULE
302 mca_set_adapter_name(slot, "PS/2 Integrated ESDI");
303#endif
304 } else if ((slot = mca_find_adapter(NRML_ESDI_ID, 0)) != -1) {
305 adapterID = NRML_ESDI_ID;
306 printk("%s: normal ESDI adapter found in slot %d\n",
307 DEVICE_NAME, slot+1);
308 mca_set_adapter_name(slot, "PS/2 ESDI");
309 } else {
310 return -ENODEV;
311 }
312
313 ps2esdi_slot = slot;
314 mca_mark_as_used(slot);
315 mca_set_adapter_procfn(slot, (MCA_ProcFn) ps2esdi_getinfo, NULL);
316
317 /* Found the slot - read the POS register 2 to get the necessary
318 configuration and status information. POS register 2 has the
319 following information :
320 Bit Function
321 7 reserved = 0
322 6 arbitration method
323 0 - fairness enabled
324 1 - fairness disabled, linear priority assignment
325 5-2 arbitration level
326 1 alternate address
327 1 alternate address
328 0 - use addresses 0x3510 - 0x3517
329 0 adapter enable
330 */
331
332 status = mca_read_stored_pos(slot, 2);
333 /* is it enabled ? */
334 if (!(status & STATUS_ENABLED)) {
335 printk("%s: ESDI adapter disabled\n", DEVICE_NAME);
336 error = -ENODEV;
337 goto err_out1;
338 }
339 /* try to grab IRQ, and try to grab a slow IRQ if it fails, so we can
340 share with the SCSI driver */
341 if (request_irq(PS2ESDI_IRQ, ps2esdi_interrupt_handler,
342 IRQF_DISABLED | IRQF_SHARED, "PS/2 ESDI", &ps2esdi_gendisk)
343 && request_irq(PS2ESDI_IRQ, ps2esdi_interrupt_handler,
344 IRQF_SHARED, "PS/2 ESDI", &ps2esdi_gendisk)
345 ) {
346 printk("%s: Unable to get IRQ %d\n", DEVICE_NAME, PS2ESDI_IRQ);
347 error = -EBUSY;
348 goto err_out1;
349 }
350 if (status & STATUS_ALTERNATE)
351 io_base = ALT_IO_BASE;
352 else
353 io_base = PRIMARY_IO_BASE;
354
355 if (!request_region(io_base, 4, "ed")) {
356 printk(KERN_WARNING"Unable to request region 0x%x\n", io_base);
357 error = -EBUSY;
358 goto err_out2;
359 }
360 /* get the dma arbitration level */
361 dma_arb_level = (status >> 2) & 0xf;
362
363 /* BA */
364 printk("%s: DMA arbitration level : %d\n",
365 DEVICE_NAME, dma_arb_level);
366
367 LITE_ON;
368 current_int_handler = ps2esdi_initial_reset_int_handler;
369 reset_ctrl();
370 reset_status = 0;
371 reset_start = jiffies;
372 while (!reset_status) {
373 init_timer(&esdi_timer);
374 esdi_timer.expires = jiffies + HZ;
375 esdi_timer.data = 0;
376 add_timer(&esdi_timer);
377 sleep_on(&ps2esdi_int);
378 }
379 reset_end = jiffies;
380 LITE_OFF;
381 printk("%s: reset interrupt after %d jiffies, %u.%02u secs\n",
382 DEVICE_NAME, reset_end - reset_start, (reset_end - reset_start) / HZ,
383 (reset_end - reset_start) % HZ);
384
385
386 /* Integrated ESDI Disk and Controller has only one drive! */
387 if (adapterID == INTG_ESDI_ID) {/* if not "normal" PS2 ESDI adapter */
388 ps2esdi_drives = 1; /* then we have only one physical disk! */ intg_esdi = 1;
389 }
390
391
392
393 /* finally this part sets up some global data structures etc. */
394
395 ps2esdi_get_device_cfg();
396
397 /* some annoyance in the above routine returns TWO drives?
398 Is something else happining in the background?
399 Regaurdless we fix the # of drives again. AJK */
400 /* Integrated ESDI Disk and Controller has only one drive! */
401 if (adapterID == INTG_ESDI_ID) /* if not "normal" PS2 ESDI adapter */
402 ps2esdi_drives = 1; /* Not three or two, ONE DAMNIT! */
403
404 current_int_handler = ps2esdi_normal_interrupt_handler;
405
406 if (request_dma(dma_arb_level, "ed") !=0) {
407 printk(KERN_WARNING "PS2ESDI: Can't request dma-channel %d\n"
408 ,(int) dma_arb_level);
409 error = -EBUSY;
410 goto err_out3;
411 }
412 blk_queue_max_sectors(ps2esdi_queue, 128);
413
414 error = -ENOMEM;
415 for (i = 0; i < ps2esdi_drives; i++) {
416 struct gendisk *disk = alloc_disk(64);
417 if (!disk)
418 goto err_out4;
419 disk->major = PS2ESDI_MAJOR;
420 disk->first_minor = i<<6;
421 sprintf(disk->disk_name, "ed%c", 'a'+i);
422 disk->fops = &ps2esdi_fops;
423 ps2esdi_gendisk[i] = disk;
424 }
425
426 for (i = 0; i < ps2esdi_drives; i++) {
427 struct gendisk *disk = ps2esdi_gendisk[i];
428 set_capacity(disk, ps2esdi_info[i].head * ps2esdi_info[i].sect *
429 ps2esdi_info[i].cyl);
430 disk->queue = ps2esdi_queue;
431 disk->private_data = &ps2esdi_info[i];
432 add_disk(disk);
433 }
434 return 0;
435err_out4:
436 while (i--)
437 put_disk(ps2esdi_gendisk[i]);
438err_out3:
439 release_region(io_base, 4);
440err_out2:
441 free_irq(PS2ESDI_IRQ, &ps2esdi_gendisk);
442err_out1:
443 if(ps2esdi_slot) {
444 mca_mark_as_unused(ps2esdi_slot);
445 mca_set_adapter_procfn(ps2esdi_slot, NULL, NULL);
446 }
447 return error;
448}
449
450static void __init ps2esdi_get_device_cfg(void)
451{
452 u_short cmd_blk[TYPE_0_CMD_BLK_LENGTH];
453
454 /*BA */ printk("%s: Drive 0\n", DEVICE_NAME);
455 current_int_handler = ps2esdi_geometry_int_handler;
456 cmd_blk[0] = CMD_GET_DEV_CONFIG | 0x600;
457 cmd_blk[1] = 0;
458 no_int_yet = TRUE;
459 ps2esdi_out_cmd_blk(cmd_blk);
460 if (no_int_yet)
461 sleep_on(&ps2esdi_int);
462
463 if (ps2esdi_drives > 1) {
464 printk("%s: Drive 1\n", DEVICE_NAME); /*BA */
465 cmd_blk[0] = CMD_GET_DEV_CONFIG | (1 << 5) | 0x600;
466 cmd_blk[1] = 0;
467 no_int_yet = TRUE;
468 ps2esdi_out_cmd_blk(cmd_blk);
469 if (no_int_yet)
470 sleep_on(&ps2esdi_int);
471 } /* if second physical drive is present */
472 return;
473}
474
475/* strategy routine that handles most of the IO requests */
476static void do_ps2esdi_request(struct request_queue * q)
477{
478 struct request *req;
479 /* since, this routine is called with interrupts cleared - they
480 must be before it finishes */
481
482 req = elv_next_request(q);
483 if (!req)
484 return;
485
486#if 0
487 printk("%s:got request. device : %s command : %d sector : %ld count : %ld, buffer: %p\n",
488 DEVICE_NAME,
489 req->rq_disk->disk_name,
490 req->cmd, req->sector,
491 req->current_nr_sectors, req->buffer);
492#endif
493
494 /* check for above 16Mb dmas */
495 if (isa_virt_to_bus(req->buffer + req->current_nr_sectors * 512) > 16 * MB) {
496 printk("%s: DMA above 16MB not supported\n", DEVICE_NAME);
497 end_request(req, FAIL);
498 return;
499 }
500
501 if (req->sector+req->current_nr_sectors > get_capacity(req->rq_disk)) {
502 printk("Grrr. error. ps2esdi_drives: %d, %llu %llu\n",
503 ps2esdi_drives, req->sector,
504 (unsigned long long)get_capacity(req->rq_disk));
505 end_request(req, FAIL);
506 return;
507 }
508
509 switch (rq_data_dir(req)) {
510 case READ:
511 ps2esdi_readwrite(READ, req);
512 break;
513 case WRITE:
514 ps2esdi_readwrite(WRITE, req);
515 break;
516 default:
517 printk("%s: Unknown command\n", req->rq_disk->disk_name);
518 end_request(req, FAIL);
519 break;
520 } /* handle different commands */
521} /* main strategy routine */
522
523/* resets the ESDI adapter */
524static void reset_ctrl(void)
525{
526
527 u_long expire;
528 u_short status;
529
530 /* enable interrupts on the controller */
531 status = inb(ESDI_INTRPT);
532 outb((status & 0xe0) | ATT_EOI, ESDI_ATTN); /* to be sure we don't have
533 any interrupt pending... */
534 outb_p(CTRL_ENABLE_INTR, ESDI_CONTROL);
535
536 /* read the ESDI status port - if the controller is not busy,
537 simply do a soft reset (fast) - otherwise we'll have to do a
538 hard (slow) reset. */
539 if (!(inb_p(ESDI_STATUS) & STATUS_BUSY)) {
540 /*BA */ printk("%s: soft reset...\n", DEVICE_NAME);
541 outb_p(CTRL_SOFT_RESET, ESDI_ATTN);
542 }
543 /* soft reset */
544 else {
545 /*BA */
546 printk("%s: hard reset...\n", DEVICE_NAME);
547 outb_p(CTRL_HARD_RESET, ESDI_CONTROL);
548 expire = jiffies + 2*HZ;
549 while (time_before(jiffies, expire));
550 outb_p(1, ESDI_CONTROL);
551 } /* hard reset */
552
553
554} /* reset the controller */
555
556/* called by the strategy routine to handle read and write requests */
557static void ps2esdi_readwrite(int cmd, struct request *req)
558{
559 struct ps2esdi_i_struct *p = req->rq_disk->private_data;
560 unsigned block = req->sector;
561 unsigned count = req->current_nr_sectors;
562 int drive = p - ps2esdi_info;
563 u_short track, head, cylinder, sector;
564 u_short cmd_blk[TYPE_1_CMD_BLK_LENGTH];
565
566 /* do some relevant arithmatic */
567 track = block / p->sect;
568 head = track % p->head;
569 cylinder = track / p->head;
570 sector = block % p->sect;
571
572#if 0
573 printk("%s: cyl=%d head=%d sect=%d\n", DEVICE_NAME, cylinder, head, sector);
574#endif
575 /* call the routine that actually fills out a command block */
576 ps2esdi_fill_cmd_block
577 (cmd_blk,
578 (cmd == READ) ? CMD_READ : CMD_WRITE,
579 cylinder, head, sector, count, drive);
580
581 /* send the command block to the controller */
582 current_req = req;
583 spin_unlock_irq(&ps2esdi_lock);
584 if (ps2esdi_out_cmd_blk(cmd_blk)) {
585 spin_lock_irq(&ps2esdi_lock);
586 printk("%s: Controller failed\n", DEVICE_NAME);
587 if ((++req->errors) >= MAX_RETRIES)
588 end_request(req, FAIL);
589 }
590 /* check for failure to put out the command block */
591 else {
592 spin_lock_irq(&ps2esdi_lock);
593#if 0
594 printk("%s: waiting for xfer\n", DEVICE_NAME);
595#endif
596 /* turn disk lights on */
597 LITE_ON;
598 }
599
600} /* ps2esdi_readwrite */
601
602/* fill out the command block */
603static void ps2esdi_fill_cmd_block(u_short * cmd_blk, u_short cmd,
604 u_short cyl, u_short head, u_short sector, u_short length, u_char drive)
605{
606
607 cmd_blk[0] = (drive << 5) | cmd;
608 cmd_blk[1] = length;
609 cmd_blk[2] = ((cyl & 0x1f) << 11) | (head << 5) | sector;
610 cmd_blk[3] = (cyl & 0x3E0) >> 5;
611
612} /* fill out the command block */
613
614/* write a command block to the controller */
615static int ps2esdi_out_cmd_blk(u_short * cmd_blk)
616{
617
618 int i;
619 unsigned long jif;
620 u_char status;
621
622 /* enable interrupts */
623 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
624
625 /* do not write to the controller, if it is busy */
626 for (jif = jiffies + ESDI_STAT_TIMEOUT;
627 time_after(jif, jiffies) &&
628 (inb(ESDI_STATUS) & STATUS_BUSY); )
629 ;
630
631#if 0
632 printk("%s: i(1)=%ld\n", DEVICE_NAME, jif);
633#endif
634
635 /* if device is still busy - then just time out */
636 if (inb(ESDI_STATUS) & STATUS_BUSY) {
637 printk("%s: ps2esdi_out_cmd timed out (1)\n", DEVICE_NAME);
638 return ERROR;
639 } /* timeout ??? */
640 /* Set up the attention register in the controller */
641 outb(((*cmd_blk) & 0xE0) | 1, ESDI_ATTN);
642
643#if 0
644 printk("%s: sending %d words to controller\n", DEVICE_NAME, (((*cmd_blk) >> 14) + 1) << 1);
645#endif
646
647 /* one by one send each word out */
648 for (i = (((*cmd_blk) >> 14) + 1) << 1; i; i--) {
649 status = inb(ESDI_STATUS);
650 for (jif = jiffies + ESDI_STAT_TIMEOUT;
651 time_after(jif, jiffies) && (status & STATUS_BUSY) &&
652 (status & STATUS_CMD_INF); status = inb(ESDI_STATUS));
653 if ((status & (STATUS_BUSY | STATUS_CMD_INF)) == STATUS_BUSY) {
654#if 0
655 printk("%s: sending %04X\n", DEVICE_NAME, *cmd_blk);
656#endif
657 outw(*cmd_blk++, ESDI_CMD_INT);
658 } else {
659 printk("%s: ps2esdi_out_cmd timed out while sending command (status=%02X)\n",
660 DEVICE_NAME, status);
661 return ERROR;
662 }
663 } /* send all words out */
664 return OK;
665} /* send out the commands */
666
667
668/* prepare for dma - do all the necessary setup */
669static void ps2esdi_prep_dma(char *buffer, u_short length, u_char dma_xmode)
670{
671 unsigned long flags = claim_dma_lock();
672
673 mca_disable_dma(dma_arb_level);
674
675 mca_set_dma_addr(dma_arb_level, isa_virt_to_bus(buffer));
676
677 mca_set_dma_count(dma_arb_level, length * 512 / 2);
678
679 mca_set_dma_mode(dma_arb_level, dma_xmode);
680
681 mca_enable_dma(dma_arb_level);
682
683 release_dma_lock(flags);
684
685} /* prepare for dma */
686
687
688
689static irqreturn_t ps2esdi_interrupt_handler(int irq, void *dev_id)
690{
691 u_int int_ret_code;
692
693 if (inb(ESDI_STATUS) & STATUS_INTR) {
694 int_ret_code = inb(ESDI_INTRPT);
695 if (current_int_handler) {
696 /* Disable adapter interrupts till processing is finished */
697 outb(CTRL_DISABLE_INTR, ESDI_CONTROL);
698 current_int_handler(int_ret_code);
699 } else
700 printk("%s: help ! No interrupt handler.\n", DEVICE_NAME);
701 } else {
702 return IRQ_NONE;
703 }
704 return IRQ_HANDLED;
705}
706
707static void ps2esdi_initial_reset_int_handler(u_int int_ret_code)
708{
709
710 switch (int_ret_code & 0xf) {
711 case INT_RESET:
712 /*BA */
713 printk("%s: initial reset completed.\n", DEVICE_NAME);
714 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
715 wake_up(&ps2esdi_int);
716 break;
717 case INT_ATTN_ERROR:
718 printk("%s: Attention error. interrupt status : %02X\n", DEVICE_NAME,
719 int_ret_code);
720 printk("%s: status: %02x\n", DEVICE_NAME, inb(ESDI_STATUS));
721 break;
722 default:
723 printk("%s: initial reset handler received interrupt: %02X\n",
724 DEVICE_NAME, int_ret_code);
725 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
726 break;
727 }
728 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
729}
730
731
732static void ps2esdi_geometry_int_handler(u_int int_ret_code)
733{
734 u_int status, drive_num;
735 unsigned long rba;
736 int i;
737
738 drive_num = int_ret_code >> 5;
739 switch (int_ret_code & 0xf) {
740 case INT_CMD_COMPLETE:
741 for (i = ESDI_TIMEOUT; i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--);
742 if (!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) {
743 printk("%s: timeout reading status word\n", DEVICE_NAME);
744 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
745 break;
746 }
747 status = inw(ESDI_STT_INT);
748 if ((status & 0x1F) == CMD_GET_DEV_CONFIG) {
749#define REPLY_WORDS 5 /* we already read word 0 */
750 u_short reply[REPLY_WORDS];
751
752 if (ps2esdi_read_status_words((status >> 8) - 1, REPLY_WORDS, reply)) {
753 /*BA */
754 printk("%s: Device Configuration Status for drive %u\n",
755 DEVICE_NAME, drive_num);
756
757 printk("%s: Spares/cyls: %u", DEVICE_NAME, reply[0] >> 8);
758
759 printk
760 ("Config bits: %s%s%s%s%s\n",
761 (reply[0] & CONFIG_IS) ? "Invalid Secondary, " : "",
762 ((reply[0] & CONFIG_ZD) && !(reply[0] & CONFIG_IS))
763 ? "Zero Defect, " : "Defects Present, ",
764 (reply[0] & CONFIG_SF) ? "Skewed Format, " : "",
765 (reply[0] & CONFIG_FR) ? "Removable, " : "Non-Removable, ",
766 (reply[0] & CONFIG_RT) ? "No Retries" : "Retries");
767
768 rba = reply[1] | ((unsigned long) reply[2] << 16);
769 printk("%s: Number of RBA's: %lu\n", DEVICE_NAME, rba);
770
771 printk("%s: Physical number of cylinders: %u, Sectors/Track: %u, Heads: %u\n",
772 DEVICE_NAME, reply[3], reply[4] >> 8, reply[4] & 0xff);
773
774 if (!ps2esdi_info[drive_num].head) {
775 ps2esdi_info[drive_num].head = 64;
776 ps2esdi_info[drive_num].sect = 32;
777 ps2esdi_info[drive_num].cyl = rba / (64 * 32);
778 ps2esdi_info[drive_num].wpcom = 0;
779 ps2esdi_info[drive_num].lzone = ps2esdi_info[drive_num].cyl;
780 ps2esdi_info[drive_num].ctl = 8;
781 if (tp720esdi) { /* store the retrieved parameters */
782 ps2esdi_info[0].head = reply[4] & 0Xff;
783 ps2esdi_info[0].sect = reply[4] >> 8;
784 ps2esdi_info[0].cyl = reply[3];
785 ps2esdi_info[0].wpcom = 0;
786 ps2esdi_info[0].lzone = reply[3];
787 } else {
788 if (!intg_esdi)
789 ps2esdi_drives++;
790 }
791 }
792#ifdef OBSOLETE
793 if (!ps2esdi_info[drive_num].head) {
794 ps2esdi_info[drive_num].head = reply[4] & 0Xff;
795 ps2esdi_info[drive_num].sect = reply[4] >> 8;
796 ps2esdi_info[drive_num].cyl = reply[3];
797 ps2esdi_info[drive_num].wpcom = 0;
798 ps2esdi_info[drive_num].lzone = reply[3];
799 if (tp720esdi) { /* store the retrieved parameters */
800 ps2esdi_info[0].head = reply[4] & 0Xff;
801 ps2esdi_info[0].sect = reply[4] >> 8;
802 ps2esdi_info[0].cyl = reply[3];
803 ps2esdi_info[0].wpcom = 0;
804 ps2esdi_info[0].lzone = reply[3];
805 } else {
806 ps2esdi_drives++;
807 }
808 }
809#endif
810
811 } else
812 printk("%s: failed while getting device config\n", DEVICE_NAME);
813#undef REPLY_WORDS
814 } else
815 printk("%s: command %02X unknown by geometry handler\n",
816 DEVICE_NAME, status & 0x1f);
817
818 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
819 break;
820
821 case INT_ATTN_ERROR:
822 printk("%s: Attention error. interrupt status : %02X\n", DEVICE_NAME,
823 int_ret_code);
824 printk("%s: Device not available\n", DEVICE_NAME);
825 break;
826 case INT_CMD_ECC:
827 case INT_CMD_RETRY:
828 case INT_CMD_ECC_RETRY:
829 case INT_CMD_WARNING:
830 case INT_CMD_ABORT:
831 case INT_CMD_FAILED:
832 case INT_DMA_ERR:
833 case INT_CMD_BLK_ERR:
834 /*BA */ printk("%s: Whaa. Error occurred...\n", DEVICE_NAME);
835 dump_cmd_complete_status(int_ret_code);
836 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
837 break;
838 default:
839 printk("%s: Unknown interrupt reason: %02X\n",
840 DEVICE_NAME, int_ret_code & 0xf);
841 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
842 break;
843 }
844
845 wake_up(&ps2esdi_int);
846 no_int_yet = FALSE;
847 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
848
849}
850
851static void ps2esdi_normal_interrupt_handler(u_int int_ret_code)
852{
853 unsigned long flags;
854 u_int status;
855 u_int ending;
856 int i;
857
858 switch (int_ret_code & 0x0f) {
859 case INT_TRANSFER_REQ:
860 ps2esdi_prep_dma(current_req->buffer,
861 current_req->current_nr_sectors,
862 (rq_data_dir(current_req) == READ)
863 ? MCA_DMA_MODE_16 | MCA_DMA_MODE_WRITE | MCA_DMA_MODE_XFER
864 : MCA_DMA_MODE_16 | MCA_DMA_MODE_READ);
865 outb(CTRL_ENABLE_DMA | CTRL_ENABLE_INTR, ESDI_CONTROL);
866 ending = -1;
867 break;
868
869 case INT_ATTN_ERROR:
870 printk("%s: Attention error. interrupt status : %02X\n", DEVICE_NAME,
871 int_ret_code);
872 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
873 ending = FAIL;
874 break;
875
876 case INT_CMD_COMPLETE:
877 for (i = ESDI_TIMEOUT; i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--);
878 if (!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) {
879 printk("%s: timeout reading status word\n", DEVICE_NAME);
880 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
881 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
882 if ((++current_req->errors) >= MAX_RETRIES)
883 ending = FAIL;
884 else
885 ending = -1;
886 break;
887 }
888 status = inw(ESDI_STT_INT);
889 switch (status & 0x1F) {
890 case (CMD_READ & 0xff):
891 case (CMD_WRITE & 0xff):
892 LITE_OFF;
893 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
894 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
895 ending = SUCCES;
896 break;
897 default:
898 printk("%s: interrupt for unknown command %02X\n",
899 DEVICE_NAME, status & 0x1f);
900 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
901 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
902 ending = -1;
903 break;
904 }
905 break;
906 case INT_CMD_ECC:
907 case INT_CMD_RETRY:
908 case INT_CMD_ECC_RETRY:
909 LITE_OFF;
910 dump_cmd_complete_status(int_ret_code);
911 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
912 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
913 ending = SUCCES;
914 break;
915 case INT_CMD_WARNING:
916 case INT_CMD_ABORT:
917 case INT_CMD_FAILED:
918 case INT_DMA_ERR:
919 LITE_OFF;
920 dump_cmd_complete_status(int_ret_code);
921 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
922 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
923 if ((++current_req->errors) >= MAX_RETRIES)
924 ending = FAIL;
925 else
926 ending = -1;
927 break;
928
929 case INT_CMD_BLK_ERR:
930 dump_cmd_complete_status(int_ret_code);
931 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
932 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
933 ending = FAIL;
934 break;
935
936 case INT_CMD_FORMAT:
937 printk("%s: huh ? Who issued this format command ?\n"
938 ,DEVICE_NAME);
939 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
940 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
941 ending = -1;
942 break;
943
944 case INT_RESET:
945 /* BA printk("%s: reset completed.\n", DEVICE_NAME) */ ;
946 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
947 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
948 ending = -1;
949 break;
950
951 default:
952 printk("%s: Unknown interrupt reason: %02X\n",
953 DEVICE_NAME, int_ret_code & 0xf);
954 outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
955 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
956 ending = -1;
957 break;
958 }
959 if(ending != -1) {
960 spin_lock_irqsave(&ps2esdi_lock, flags);
961 end_request(current_req, ending);
962 current_req = NULL;
963 do_ps2esdi_request(ps2esdi_queue);
964 spin_unlock_irqrestore(&ps2esdi_lock, flags);
965 }
966} /* handle interrupts */
967
968
969
970static int ps2esdi_read_status_words(int num_words,
971 int max_words,
972 u_short * buffer)
973{
974 int i;
975
976 for (; max_words && num_words; max_words--, num_words--, buffer++) {
977 for (i = ESDI_TIMEOUT; i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--);
978 if (!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) {
979 printk("%s: timeout reading status word\n", DEVICE_NAME);
980 return FAIL;
981 }
982 *buffer = inw(ESDI_STT_INT);
983 }
984 return SUCCES;
985}
986
987
988
989
990static void dump_cmd_complete_status(u_int int_ret_code)
991{
992#define WAIT_FOR_STATUS \
993 for(i=ESDI_TIMEOUT;i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL);i--); \
994 if(!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) { \
995 printk("%s: timeout reading status word\n",DEVICE_NAME); \
996 return; \
997 }
998
999 int i, word_count;
1000 u_short stat_word;
1001 u_long rba;
1002
1003 printk("%s: Device: %u, interrupt ID: %02X\n",
1004 DEVICE_NAME, int_ret_code >> 5,
1005 int_ret_code & 0xf);
1006
1007 WAIT_FOR_STATUS;
1008 stat_word = inw(ESDI_STT_INT);
1009 word_count = (stat_word >> 8) - 1;
1010 printk("%s: %u status words, command: %02X\n", DEVICE_NAME, word_count,
1011 stat_word & 0xff);
1012
1013 if (word_count--) {
1014 WAIT_FOR_STATUS;
1015 stat_word = inw(ESDI_STT_INT);
1016 printk("%s: command status code: %02X, command error code: %02X\n",
1017 DEVICE_NAME, stat_word >> 8, stat_word & 0xff);
1018 }
1019 if (word_count--) {
1020 WAIT_FOR_STATUS;
1021 stat_word = inw(ESDI_STT_INT);
1022 printk("%s: device error code: %s%s%s%s%s,%02X\n", DEVICE_NAME,
1023 (stat_word & 0x1000) ? "Ready, " : "Not Ready, ",
1024 (stat_word & 0x0800) ? "Selected, " : "Not Selected, ",
1025 (stat_word & 0x0400) ? "Write Fault, " : "",
1026 (stat_word & 0x0200) ? "Track 0, " : "",
1027 (stat_word & 0x0100) ? "Seek or command complete, " : "",
1028 stat_word >> 8);
1029 }
1030 if (word_count--) {
1031 WAIT_FOR_STATUS;
1032 stat_word = inw(ESDI_STT_INT);
1033 printk("%s: Blocks to do: %u", DEVICE_NAME, stat_word);
1034 }
1035 if (word_count -= 2) {
1036 WAIT_FOR_STATUS;
1037 rba = inw(ESDI_STT_INT);
1038 WAIT_FOR_STATUS;
1039 rba |= inw(ESDI_STT_INT) << 16;
1040 printk(", Last Cyl: %u Head: %u Sector: %u\n",
1041 (u_short) ((rba & 0x1ff80000) >> 11),
1042 (u_short) ((rba & 0x7E0) >> 5), (u_short) (rba & 0x1f));
1043 } else
1044 printk("\n");
1045
1046 if (word_count--) {
1047 WAIT_FOR_STATUS;
1048 stat_word = inw(ESDI_STT_INT);
1049 printk("%s: Blocks required ECC: %u", DEVICE_NAME, stat_word);
1050 }
1051 printk("\n");
1052
1053#undef WAIT_FOR_STATUS
1054
1055}
1056
1057static int ps2esdi_getgeo(struct block_device *bdev, struct hd_geometry *geo)
1058{
1059 struct ps2esdi_i_struct *p = bdev->bd_disk->private_data;
1060
1061 geo->heads = p->head;
1062 geo->sectors = p->sect;
1063 geo->cylinders = p->cyl;
1064 return 0;
1065}
1066
1067static void ps2esdi_reset_timer(unsigned long unused)
1068{
1069
1070 int status;
1071
1072 status = inb(ESDI_INTRPT);
1073 if ((status & 0xf) == INT_RESET) {
1074 outb((status & 0xe0) | ATT_EOI, ESDI_ATTN);
1075 outb(CTRL_ENABLE_INTR, ESDI_CONTROL);
1076 reset_status = 1;
1077 }
1078 wake_up(&ps2esdi_int);
1079}
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 3b1a68d6eddb..0cfbe8c594a5 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -238,6 +238,7 @@ static int virtblk_probe(struct virtio_device *vdev)
238 vblk->disk->first_minor = index_to_minor(index); 238 vblk->disk->first_minor = index_to_minor(index);
239 vblk->disk->private_data = vblk; 239 vblk->disk->private_data = vblk;
240 vblk->disk->fops = &virtblk_fops; 240 vblk->disk->fops = &virtblk_fops;
241 vblk->disk->driverfs_dev = &vdev->dev;
241 index++; 242 index++;
242 243
243 /* If barriers are supported, tell block layer that queue is ordered */ 244 /* If barriers are supported, tell block layer that queue is ordered */
diff --git a/drivers/char/drm/ati_pcigart.c b/drivers/char/drm/ati_pcigart.c
index d352dbb4ccf7..e5a0e97cfdda 100644
--- a/drivers/char/drm/ati_pcigart.c
+++ b/drivers/char/drm/ati_pcigart.c
@@ -35,42 +35,23 @@
35 35
36# define ATI_PCIGART_PAGE_SIZE 4096 /**< PCI GART page size */ 36# define ATI_PCIGART_PAGE_SIZE 4096 /**< PCI GART page size */
37 37
38static void *drm_ati_alloc_pcigart_table(int order) 38static int drm_ati_alloc_pcigart_table(struct drm_device *dev,
39 struct drm_ati_pcigart_info *gart_info)
39{ 40{
40 unsigned long address; 41 gart_info->table_handle = drm_pci_alloc(dev, gart_info->table_size,
41 struct page *page; 42 PAGE_SIZE,
42 int i; 43 gart_info->table_mask);
43 44 if (gart_info->table_handle == NULL)
44 DRM_DEBUG("%d order\n", order); 45 return -ENOMEM;
45
46 address = __get_free_pages(GFP_KERNEL | __GFP_COMP,
47 order);
48 if (address == 0UL) {
49 return NULL;
50 }
51
52 page = virt_to_page(address);
53 46
54 for (i = 0; i < order; i++, page++) 47 return 0;
55 SetPageReserved(page);
56
57 DRM_DEBUG("returning 0x%08lx\n", address);
58 return (void *)address;
59} 48}
60 49
61static void drm_ati_free_pcigart_table(void *address, int order) 50static void drm_ati_free_pcigart_table(struct drm_device *dev,
51 struct drm_ati_pcigart_info *gart_info)
62{ 52{
63 struct page *page; 53 drm_pci_free(dev, gart_info->table_handle);
64 int i; 54 gart_info->table_handle = NULL;
65 int num_pages = 1 << order;
66 DRM_DEBUG("\n");
67
68 page = virt_to_page((unsigned long)address);
69
70 for (i = 0; i < num_pages; i++, page++)
71 ClearPageReserved(page);
72
73 free_pages((unsigned long)address, order);
74} 55}
75 56
76int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info *gart_info) 57int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info *gart_info)
@@ -78,8 +59,7 @@ int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info
78 struct drm_sg_mem *entry = dev->sg; 59 struct drm_sg_mem *entry = dev->sg;
79 unsigned long pages; 60 unsigned long pages;
80 int i; 61 int i;
81 int order; 62 int max_pages;
82 int num_pages, max_pages;
83 63
84 /* we need to support large memory configurations */ 64 /* we need to support large memory configurations */
85 if (!entry) { 65 if (!entry) {
@@ -87,15 +67,7 @@ int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info
87 return 0; 67 return 0;
88 } 68 }
89 69
90 order = drm_order((gart_info->table_size + (PAGE_SIZE-1)) / PAGE_SIZE);
91 num_pages = 1 << order;
92
93 if (gart_info->bus_addr) { 70 if (gart_info->bus_addr) {
94 if (gart_info->gart_table_location == DRM_ATI_GART_MAIN) {
95 pci_unmap_single(dev->pdev, gart_info->bus_addr,
96 num_pages * PAGE_SIZE,
97 PCI_DMA_TODEVICE);
98 }
99 71
100 max_pages = (gart_info->table_size / sizeof(u32)); 72 max_pages = (gart_info->table_size / sizeof(u32));
101 pages = (entry->pages <= max_pages) 73 pages = (entry->pages <= max_pages)
@@ -112,10 +84,9 @@ int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info
112 gart_info->bus_addr = 0; 84 gart_info->bus_addr = 0;
113 } 85 }
114 86
115 if (gart_info->gart_table_location == DRM_ATI_GART_MAIN 87 if (gart_info->gart_table_location == DRM_ATI_GART_MAIN &&
116 && gart_info->addr) { 88 gart_info->table_handle) {
117 drm_ati_free_pcigart_table(gart_info->addr, order); 89 drm_ati_free_pcigart_table(dev, gart_info);
118 gart_info->addr = NULL;
119 } 90 }
120 91
121 return 1; 92 return 1;
@@ -127,11 +98,10 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
127 struct drm_sg_mem *entry = dev->sg; 98 struct drm_sg_mem *entry = dev->sg;
128 void *address = NULL; 99 void *address = NULL;
129 unsigned long pages; 100 unsigned long pages;
130 u32 *pci_gart, page_base, bus_address = 0; 101 u32 *pci_gart, page_base;
102 dma_addr_t bus_address = 0;
131 int i, j, ret = 0; 103 int i, j, ret = 0;
132 int order;
133 int max_pages; 104 int max_pages;
134 int num_pages;
135 105
136 if (!entry) { 106 if (!entry) {
137 DRM_ERROR("no scatter/gather memory!\n"); 107 DRM_ERROR("no scatter/gather memory!\n");
@@ -141,31 +111,14 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
141 if (gart_info->gart_table_location == DRM_ATI_GART_MAIN) { 111 if (gart_info->gart_table_location == DRM_ATI_GART_MAIN) {
142 DRM_DEBUG("PCI: no table in VRAM: using normal RAM\n"); 112 DRM_DEBUG("PCI: no table in VRAM: using normal RAM\n");
143 113
144 order = drm_order((gart_info->table_size + 114 ret = drm_ati_alloc_pcigart_table(dev, gart_info);
145 (PAGE_SIZE-1)) / PAGE_SIZE); 115 if (ret) {
146 num_pages = 1 << order;
147 address = drm_ati_alloc_pcigart_table(order);
148 if (!address) {
149 DRM_ERROR("cannot allocate PCI GART page!\n"); 116 DRM_ERROR("cannot allocate PCI GART page!\n");
150 goto done; 117 goto done;
151 } 118 }
152 119
153 if (!dev->pdev) { 120 address = gart_info->table_handle->vaddr;
154 DRM_ERROR("PCI device unknown!\n"); 121 bus_address = gart_info->table_handle->busaddr;
155 goto done;
156 }
157
158 bus_address = pci_map_single(dev->pdev, address,
159 num_pages * PAGE_SIZE,
160 PCI_DMA_TODEVICE);
161 if (bus_address == 0) {
162 DRM_ERROR("unable to map PCIGART pages!\n");
163 order = drm_order((gart_info->table_size +
164 (PAGE_SIZE-1)) / PAGE_SIZE);
165 drm_ati_free_pcigart_table(address, order);
166 address = NULL;
167 goto done;
168 }
169 } else { 122 } else {
170 address = gart_info->addr; 123 address = gart_info->addr;
171 bus_address = gart_info->bus_addr; 124 bus_address = gart_info->bus_addr;
diff --git a/drivers/char/drm/drmP.h b/drivers/char/drm/drmP.h
index a6789f25009b..8ea9dd1717a9 100644
--- a/drivers/char/drm/drmP.h
+++ b/drivers/char/drm/drmP.h
@@ -54,6 +54,7 @@
54#include <linux/pci.h> 54#include <linux/pci.h>
55#include <linux/jiffies.h> 55#include <linux/jiffies.h>
56#include <linux/smp_lock.h> /* For (un)lock_kernel */ 56#include <linux/smp_lock.h> /* For (un)lock_kernel */
57#include <linux/dma-mapping.h>
57#include <linux/mm.h> 58#include <linux/mm.h>
58#include <linux/cdev.h> 59#include <linux/cdev.h>
59#include <linux/mutex.h> 60#include <linux/mutex.h>
@@ -551,6 +552,8 @@ struct drm_ati_pcigart_info {
551 int gart_reg_if; 552 int gart_reg_if;
552 void *addr; 553 void *addr;
553 dma_addr_t bus_addr; 554 dma_addr_t bus_addr;
555 dma_addr_t table_mask;
556 struct drm_dma_handle *table_handle;
554 drm_local_map_t mapping; 557 drm_local_map_t mapping;
555 int table_size; 558 int table_size;
556}; 559};
diff --git a/drivers/char/drm/drm_fops.c b/drivers/char/drm/drm_fops.c
index 3992f73299cc..f09d4b5002b0 100644
--- a/drivers/char/drm/drm_fops.c
+++ b/drivers/char/drm/drm_fops.c
@@ -326,6 +326,7 @@ int drm_release(struct inode *inode, struct file *filp)
326 struct drm_file *file_priv = filp->private_data; 326 struct drm_file *file_priv = filp->private_data;
327 struct drm_device *dev = file_priv->head->dev; 327 struct drm_device *dev = file_priv->head->dev;
328 int retcode = 0; 328 int retcode = 0;
329 unsigned long irqflags;
329 330
330 lock_kernel(); 331 lock_kernel();
331 332
@@ -357,9 +358,11 @@ int drm_release(struct inode *inode, struct file *filp)
357 */ 358 */
358 359
359 do{ 360 do{
360 spin_lock(&dev->lock.spinlock); 361 spin_lock_irqsave(&dev->lock.spinlock,
362 irqflags);
361 locked = dev->lock.idle_has_lock; 363 locked = dev->lock.idle_has_lock;
362 spin_unlock(&dev->lock.spinlock); 364 spin_unlock_irqrestore(&dev->lock.spinlock,
365 irqflags);
363 if (locked) 366 if (locked)
364 break; 367 break;
365 schedule(); 368 schedule();
diff --git a/drivers/char/drm/drm_lock.c b/drivers/char/drm/drm_lock.c
index bea2a7d5b2b2..12dcdd1832f0 100644
--- a/drivers/char/drm/drm_lock.c
+++ b/drivers/char/drm/drm_lock.c
@@ -53,6 +53,7 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv)
53 DECLARE_WAITQUEUE(entry, current); 53 DECLARE_WAITQUEUE(entry, current);
54 struct drm_lock *lock = data; 54 struct drm_lock *lock = data;
55 int ret = 0; 55 int ret = 0;
56 unsigned long irqflags;
56 57
57 ++file_priv->lock_count; 58 ++file_priv->lock_count;
58 59
@@ -71,9 +72,9 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv)
71 return -EINVAL; 72 return -EINVAL;
72 73
73 add_wait_queue(&dev->lock.lock_queue, &entry); 74 add_wait_queue(&dev->lock.lock_queue, &entry);
74 spin_lock(&dev->lock.spinlock); 75 spin_lock_irqsave(&dev->lock.spinlock, irqflags);
75 dev->lock.user_waiters++; 76 dev->lock.user_waiters++;
76 spin_unlock(&dev->lock.spinlock); 77 spin_unlock_irqrestore(&dev->lock.spinlock, irqflags);
77 for (;;) { 78 for (;;) {
78 __set_current_state(TASK_INTERRUPTIBLE); 79 __set_current_state(TASK_INTERRUPTIBLE);
79 if (!dev->lock.hw_lock) { 80 if (!dev->lock.hw_lock) {
@@ -95,9 +96,9 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv)
95 break; 96 break;
96 } 97 }
97 } 98 }
98 spin_lock(&dev->lock.spinlock); 99 spin_lock_irqsave(&dev->lock.spinlock, irqflags);
99 dev->lock.user_waiters--; 100 dev->lock.user_waiters--;
100 spin_unlock(&dev->lock.spinlock); 101 spin_unlock_irqrestore(&dev->lock.spinlock, irqflags);
101 __set_current_state(TASK_RUNNING); 102 __set_current_state(TASK_RUNNING);
102 remove_wait_queue(&dev->lock.lock_queue, &entry); 103 remove_wait_queue(&dev->lock.lock_queue, &entry);
103 104
@@ -198,8 +199,9 @@ int drm_lock_take(struct drm_lock_data *lock_data,
198{ 199{
199 unsigned int old, new, prev; 200 unsigned int old, new, prev;
200 volatile unsigned int *lock = &lock_data->hw_lock->lock; 201 volatile unsigned int *lock = &lock_data->hw_lock->lock;
202 unsigned long irqflags;
201 203
202 spin_lock(&lock_data->spinlock); 204 spin_lock_irqsave(&lock_data->spinlock, irqflags);
203 do { 205 do {
204 old = *lock; 206 old = *lock;
205 if (old & _DRM_LOCK_HELD) 207 if (old & _DRM_LOCK_HELD)
@@ -211,7 +213,7 @@ int drm_lock_take(struct drm_lock_data *lock_data,
211 } 213 }
212 prev = cmpxchg(lock, old, new); 214 prev = cmpxchg(lock, old, new);
213 } while (prev != old); 215 } while (prev != old);
214 spin_unlock(&lock_data->spinlock); 216 spin_unlock_irqrestore(&lock_data->spinlock, irqflags);
215 217
216 if (_DRM_LOCKING_CONTEXT(old) == context) { 218 if (_DRM_LOCKING_CONTEXT(old) == context) {
217 if (old & _DRM_LOCK_HELD) { 219 if (old & _DRM_LOCK_HELD) {
@@ -272,15 +274,16 @@ int drm_lock_free(struct drm_lock_data *lock_data, unsigned int context)
272{ 274{
273 unsigned int old, new, prev; 275 unsigned int old, new, prev;
274 volatile unsigned int *lock = &lock_data->hw_lock->lock; 276 volatile unsigned int *lock = &lock_data->hw_lock->lock;
277 unsigned long irqflags;
275 278
276 spin_lock(&lock_data->spinlock); 279 spin_lock_irqsave(&lock_data->spinlock, irqflags);
277 if (lock_data->kernel_waiters != 0) { 280 if (lock_data->kernel_waiters != 0) {
278 drm_lock_transfer(lock_data, 0); 281 drm_lock_transfer(lock_data, 0);
279 lock_data->idle_has_lock = 1; 282 lock_data->idle_has_lock = 1;
280 spin_unlock(&lock_data->spinlock); 283 spin_unlock_irqrestore(&lock_data->spinlock, irqflags);
281 return 1; 284 return 1;
282 } 285 }
283 spin_unlock(&lock_data->spinlock); 286 spin_unlock_irqrestore(&lock_data->spinlock, irqflags);
284 287
285 do { 288 do {
286 old = *lock; 289 old = *lock;
@@ -344,19 +347,20 @@ static int drm_notifier(void *priv)
344void drm_idlelock_take(struct drm_lock_data *lock_data) 347void drm_idlelock_take(struct drm_lock_data *lock_data)
345{ 348{
346 int ret = 0; 349 int ret = 0;
350 unsigned long irqflags;
347 351
348 spin_lock(&lock_data->spinlock); 352 spin_lock_irqsave(&lock_data->spinlock, irqflags);
349 lock_data->kernel_waiters++; 353 lock_data->kernel_waiters++;
350 if (!lock_data->idle_has_lock) { 354 if (!lock_data->idle_has_lock) {
351 355
352 spin_unlock(&lock_data->spinlock); 356 spin_unlock_irqrestore(&lock_data->spinlock, irqflags);
353 ret = drm_lock_take(lock_data, DRM_KERNEL_CONTEXT); 357 ret = drm_lock_take(lock_data, DRM_KERNEL_CONTEXT);
354 spin_lock(&lock_data->spinlock); 358 spin_lock_irqsave(&lock_data->spinlock, irqflags);
355 359
356 if (ret == 1) 360 if (ret == 1)
357 lock_data->idle_has_lock = 1; 361 lock_data->idle_has_lock = 1;
358 } 362 }
359 spin_unlock(&lock_data->spinlock); 363 spin_unlock_irqrestore(&lock_data->spinlock, irqflags);
360} 364}
361EXPORT_SYMBOL(drm_idlelock_take); 365EXPORT_SYMBOL(drm_idlelock_take);
362 366
@@ -364,8 +368,9 @@ void drm_idlelock_release(struct drm_lock_data *lock_data)
364{ 368{
365 unsigned int old, prev; 369 unsigned int old, prev;
366 volatile unsigned int *lock = &lock_data->hw_lock->lock; 370 volatile unsigned int *lock = &lock_data->hw_lock->lock;
371 unsigned long irqflags;
367 372
368 spin_lock(&lock_data->spinlock); 373 spin_lock_irqsave(&lock_data->spinlock, irqflags);
369 if (--lock_data->kernel_waiters == 0) { 374 if (--lock_data->kernel_waiters == 0) {
370 if (lock_data->idle_has_lock) { 375 if (lock_data->idle_has_lock) {
371 do { 376 do {
@@ -376,7 +381,7 @@ void drm_idlelock_release(struct drm_lock_data *lock_data)
376 lock_data->idle_has_lock = 0; 381 lock_data->idle_has_lock = 0;
377 } 382 }
378 } 383 }
379 spin_unlock(&lock_data->spinlock); 384 spin_unlock_irqrestore(&lock_data->spinlock, irqflags);
380} 385}
381EXPORT_SYMBOL(drm_idlelock_release); 386EXPORT_SYMBOL(drm_idlelock_release);
382 387
diff --git a/drivers/char/drm/drm_pciids.h b/drivers/char/drm/drm_pciids.h
index 715b361f0c2b..a6a499f97e22 100644
--- a/drivers/char/drm/drm_pciids.h
+++ b/drivers/char/drm/drm_pciids.h
@@ -205,9 +205,9 @@
205 {0x1002, 0x71D6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 205 {0x1002, 0x71D6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
206 {0x1002, 0x71DA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_NEW_MEMMAP}, \ 206 {0x1002, 0x71DA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_NEW_MEMMAP}, \
207 {0x1002, 0x71DE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 207 {0x1002, 0x71DE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
208 {0x1002, 0x7200, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_NEW_MEMMAP}, \ 208 {0x1002, 0x7200, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV515|RADEON_NEW_MEMMAP}, \
209 {0x1002, 0x7210, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 209 {0x1002, 0x7210, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV515|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
210 {0x1002, 0x7211, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 210 {0x1002, 0x7211, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV515|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
211 {0x1002, 0x7240, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \ 211 {0x1002, 0x7240, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \
212 {0x1002, 0x7243, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \ 212 {0x1002, 0x7243, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \
213 {0x1002, 0x7244, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \ 213 {0x1002, 0x7244, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \
@@ -238,6 +238,7 @@
238 {0x1002, 0x7834, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP|RADEON_NEW_MEMMAP}, \ 238 {0x1002, 0x7834, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP|RADEON_NEW_MEMMAP}, \
239 {0x1002, 0x7835, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 239 {0x1002, 0x7835, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
240 {0x1002, 0x791e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS690|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART}, \ 240 {0x1002, 0x791e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS690|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART}, \
241 {0x1002, 0x791f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS690|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART}, \
241 {0, 0, 0} 242 {0, 0, 0}
242 243
243#define r128_PCI_IDS \ 244#define r128_PCI_IDS \
diff --git a/drivers/char/drm/r128_cce.c b/drivers/char/drm/r128_cce.c
index 892e0a589846..f36adbd3aaf5 100644
--- a/drivers/char/drm/r128_cce.c
+++ b/drivers/char/drm/r128_cce.c
@@ -558,6 +558,7 @@ static int r128_do_init_cce(struct drm_device * dev, drm_r128_init_t * init)
558#if __OS_HAS_AGP 558#if __OS_HAS_AGP
559 if (dev_priv->is_pci) { 559 if (dev_priv->is_pci) {
560#endif 560#endif
561 dev_priv->gart_info.table_mask = DMA_BIT_MASK(32);
561 dev_priv->gart_info.gart_table_location = DRM_ATI_GART_MAIN; 562 dev_priv->gart_info.gart_table_location = DRM_ATI_GART_MAIN;
562 dev_priv->gart_info.table_size = R128_PCIGART_TABLE_SIZE; 563 dev_priv->gart_info.table_size = R128_PCIGART_TABLE_SIZE;
563 dev_priv->gart_info.addr = NULL; 564 dev_priv->gart_info.addr = NULL;
diff --git a/drivers/char/drm/radeon_cp.c b/drivers/char/drm/radeon_cp.c
index 833abc7e55fb..9072e4a1894e 100644
--- a/drivers/char/drm/radeon_cp.c
+++ b/drivers/char/drm/radeon_cp.c
@@ -1807,6 +1807,7 @@ static int radeon_do_init_cp(struct drm_device * dev, drm_radeon_init_t * init)
1807 } else 1807 } else
1808#endif 1808#endif
1809 { 1809 {
1810 dev_priv->gart_info.table_mask = DMA_BIT_MASK(32);
1810 /* if we have an offset set from userspace */ 1811 /* if we have an offset set from userspace */
1811 if (dev_priv->pcigart_offset_set) { 1812 if (dev_priv->pcigart_offset_set) {
1812 dev_priv->gart_info.bus_addr = 1813 dev_priv->gart_info.bus_addr =
diff --git a/drivers/char/drm/via_dma.c b/drivers/char/drm/via_dma.c
index 94baec692b57..7a339dba6a69 100644
--- a/drivers/char/drm/via_dma.c
+++ b/drivers/char/drm/via_dma.c
@@ -126,6 +126,8 @@ via_cmdbuf_wait(drm_via_private_t * dev_priv, unsigned int size)
126 hw_addr, cur_addr, next_addr); 126 hw_addr, cur_addr, next_addr);
127 return -1; 127 return -1;
128 } 128 }
129 if ((cur_addr < hw_addr) && (next_addr >= hw_addr))
130 msleep(1);
129 } while ((cur_addr < hw_addr) && (next_addr >= hw_addr)); 131 } while ((cur_addr < hw_addr) && (next_addr >= hw_addr));
130 return 0; 132 return 0;
131} 133}
@@ -416,27 +418,50 @@ static int via_hook_segment(drm_via_private_t * dev_priv,
416 int paused, count; 418 int paused, count;
417 volatile uint32_t *paused_at = dev_priv->last_pause_ptr; 419 volatile uint32_t *paused_at = dev_priv->last_pause_ptr;
418 uint32_t reader,ptr; 420 uint32_t reader,ptr;
421 uint32_t diff;
419 422
420 paused = 0; 423 paused = 0;
421 via_flush_write_combine(); 424 via_flush_write_combine();
422 (void) *(volatile uint32_t *)(via_get_dma(dev_priv) -1); 425 (void) *(volatile uint32_t *)(via_get_dma(dev_priv) -1);
426
423 *paused_at = pause_addr_lo; 427 *paused_at = pause_addr_lo;
424 via_flush_write_combine(); 428 via_flush_write_combine();
425 (void) *paused_at; 429 (void) *paused_at;
430
426 reader = *(dev_priv->hw_addr_ptr); 431 reader = *(dev_priv->hw_addr_ptr);
427 ptr = ((volatile char *)paused_at - dev_priv->dma_ptr) + 432 ptr = ((volatile char *)paused_at - dev_priv->dma_ptr) +
428 dev_priv->dma_offset + (uint32_t) dev_priv->agpAddr + 4; 433 dev_priv->dma_offset + (uint32_t) dev_priv->agpAddr + 4;
434
429 dev_priv->last_pause_ptr = via_get_dma(dev_priv) - 1; 435 dev_priv->last_pause_ptr = via_get_dma(dev_priv) - 1;
430 436
431 if ((ptr - reader) <= dev_priv->dma_diff ) { 437 /*
432 count = 10000000; 438 * If there is a possibility that the command reader will
433 while (!(paused = (VIA_READ(0x41c) & 0x80000000)) && count--); 439 * miss the new pause address and pause on the old one,
440 * In that case we need to program the new start address
441 * using PCI.
442 */
443
444 diff = (uint32_t) (ptr - reader) - dev_priv->dma_diff;
445 count = 10000000;
446 while(diff == 0 && count--) {
447 paused = (VIA_READ(0x41c) & 0x80000000);
448 if (paused)
449 break;
450 reader = *(dev_priv->hw_addr_ptr);
451 diff = (uint32_t) (ptr - reader) - dev_priv->dma_diff;
434 } 452 }
435 453
454 paused = VIA_READ(0x41c) & 0x80000000;
455
436 if (paused && !no_pci_fire) { 456 if (paused && !no_pci_fire) {
437 reader = *(dev_priv->hw_addr_ptr); 457 reader = *(dev_priv->hw_addr_ptr);
438 if ((ptr - reader) == dev_priv->dma_diff) { 458 diff = (uint32_t) (ptr - reader) - dev_priv->dma_diff;
439 459 diff &= (dev_priv->dma_high - 1);
460 if (diff != 0 && diff < (dev_priv->dma_high >> 1)) {
461 DRM_ERROR("Paused at incorrect address. "
462 "0x%08x, 0x%08x 0x%08x\n",
463 ptr, reader, dev_priv->dma_diff);
464 } else if (diff == 0) {
440 /* 465 /*
441 * There is a concern that these writes may stall the PCI bus 466 * There is a concern that these writes may stall the PCI bus
442 * if the GPU is not idle. However, idling the GPU first 467 * if the GPU is not idle. However, idling the GPU first
@@ -577,6 +602,7 @@ static void via_cmdbuf_jump(drm_via_private_t * dev_priv)
577 uint32_t pause_addr_lo, pause_addr_hi; 602 uint32_t pause_addr_lo, pause_addr_hi;
578 uint32_t jump_addr_lo, jump_addr_hi; 603 uint32_t jump_addr_lo, jump_addr_hi;
579 volatile uint32_t *last_pause_ptr; 604 volatile uint32_t *last_pause_ptr;
605 uint32_t dma_low_save1, dma_low_save2;
580 606
581 agp_base = dev_priv->dma_offset + (uint32_t) dev_priv->agpAddr; 607 agp_base = dev_priv->dma_offset + (uint32_t) dev_priv->agpAddr;
582 via_align_cmd(dev_priv, HC_HAGPBpID_JUMP, 0, &jump_addr_hi, 608 via_align_cmd(dev_priv, HC_HAGPBpID_JUMP, 0, &jump_addr_hi,
@@ -603,8 +629,29 @@ static void via_cmdbuf_jump(drm_via_private_t * dev_priv)
603 &pause_addr_lo, 0); 629 &pause_addr_lo, 0);
604 630
605 *last_pause_ptr = pause_addr_lo; 631 *last_pause_ptr = pause_addr_lo;
632 dma_low_save1 = dev_priv->dma_low;
606 633
607 via_hook_segment( dev_priv, jump_addr_hi, jump_addr_lo, 0); 634 /*
635 * Now, set a trap that will pause the regulator if it tries to rerun the old
636 * command buffer. (Which may happen if via_hook_segment detecs a command regulator pause
637 * and reissues the jump command over PCI, while the regulator has already taken the jump
638 * and actually paused at the current buffer end).
639 * There appears to be no other way to detect this condition, since the hw_addr_pointer
640 * does not seem to get updated immediately when a jump occurs.
641 */
642
643 last_pause_ptr =
644 via_align_cmd(dev_priv, HC_HAGPBpID_PAUSE, 0, &pause_addr_hi,
645 &pause_addr_lo, 0) - 1;
646 via_align_cmd(dev_priv, HC_HAGPBpID_PAUSE, 0, &pause_addr_hi,
647 &pause_addr_lo, 0);
648 *last_pause_ptr = pause_addr_lo;
649
650 dma_low_save2 = dev_priv->dma_low;
651 dev_priv->dma_low = dma_low_save1;
652 via_hook_segment(dev_priv, jump_addr_hi, jump_addr_lo, 0);
653 dev_priv->dma_low = dma_low_save2;
654 via_hook_segment(dev_priv, pause_addr_hi, pause_addr_lo, 0);
608} 655}
609 656
610 657
diff --git a/drivers/char/drm/via_dmablit.c b/drivers/char/drm/via_dmablit.c
index 33c5197b73c4..409e00afdd07 100644
--- a/drivers/char/drm/via_dmablit.c
+++ b/drivers/char/drm/via_dmablit.c
@@ -603,7 +603,7 @@ via_build_sg_info(struct drm_device *dev, drm_via_sg_info_t *vsg, drm_via_dmabli
603 * (Not a big limitation anyway.) 603 * (Not a big limitation anyway.)
604 */ 604 */
605 605
606 if ((xfer->mem_stride - xfer->line_length) >= PAGE_SIZE) { 606 if ((xfer->mem_stride - xfer->line_length) > 2*PAGE_SIZE) {
607 DRM_ERROR("Too large system memory stride. Stride: %d, " 607 DRM_ERROR("Too large system memory stride. Stride: %d, "
608 "Length: %d\n", xfer->mem_stride, xfer->line_length); 608 "Length: %d\n", xfer->mem_stride, xfer->line_length);
609 return -EINVAL; 609 return -EINVAL;
diff --git a/drivers/char/rocket.c b/drivers/char/rocket.c
index 72f289279d8f..f585bc8579e9 100644
--- a/drivers/char/rocket.c
+++ b/drivers/char/rocket.c
@@ -83,6 +83,7 @@
83#include <linux/pci.h> 83#include <linux/pci.h>
84#include <asm/uaccess.h> 84#include <asm/uaccess.h>
85#include <asm/atomic.h> 85#include <asm/atomic.h>
86#include <asm/unaligned.h>
86#include <linux/bitops.h> 87#include <linux/bitops.h>
87#include <linux/spinlock.h> 88#include <linux/spinlock.h>
88#include <linux/init.h> 89#include <linux/init.h>
@@ -1312,7 +1313,7 @@ static int rp_tiocmset(struct tty_struct *tty, struct file *file,
1312 if (clear & TIOCM_DTR) 1313 if (clear & TIOCM_DTR)
1313 info->channel.TxControl[3] &= ~SET_DTR; 1314 info->channel.TxControl[3] &= ~SET_DTR;
1314 1315
1315 sOutDW(info->channel.IndexAddr, *(DWord_t *) & (info->channel.TxControl[0])); 1316 out32(info->channel.IndexAddr, info->channel.TxControl);
1316 return 0; 1317 return 0;
1317} 1318}
1318 1319
@@ -1748,7 +1749,7 @@ static int rp_write(struct tty_struct *tty,
1748 1749
1749 /* Write remaining data into the port's xmit_buf */ 1750 /* Write remaining data into the port's xmit_buf */
1750 while (1) { 1751 while (1) {
1751 if (info->tty == 0) /* Seemingly obligatory check... */ 1752 if (!info->tty) /* Seemingly obligatory check... */
1752 goto end; 1753 goto end;
1753 1754
1754 c = min(count, min(XMIT_BUF_SIZE - info->xmit_cnt - 1, XMIT_BUF_SIZE - info->xmit_head)); 1755 c = min(count, min(XMIT_BUF_SIZE - info->xmit_cnt - 1, XMIT_BUF_SIZE - info->xmit_head));
@@ -2798,7 +2799,7 @@ static int sReadAiopNumChan(WordIO_t io)
2798 static Byte_t R[4] = { 0x00, 0x00, 0x34, 0x12 }; 2799 static Byte_t R[4] = { 0x00, 0x00, 0x34, 0x12 };
2799 2800
2800 /* write to chan 0 SRAM */ 2801 /* write to chan 0 SRAM */
2801 sOutDW((DWordIO_t) io + _INDX_ADDR, *((DWord_t *) & R[0])); 2802 out32((DWordIO_t) io + _INDX_ADDR, R);
2802 sOutW(io + _INDX_ADDR, 0); /* read from SRAM, chan 0 */ 2803 sOutW(io + _INDX_ADDR, 0); /* read from SRAM, chan 0 */
2803 x = sInW(io + _INDX_DATA); 2804 x = sInW(io + _INDX_DATA);
2804 sOutW(io + _INDX_ADDR, 0x4000); /* read from SRAM, chan 4 */ 2805 sOutW(io + _INDX_ADDR, 0x4000); /* read from SRAM, chan 4 */
@@ -2864,7 +2865,7 @@ static int sInitChan(CONTROLLER_T * CtlP, CHANNEL_T * ChP, int AiopNum,
2864 R[1] = RData[i + 1] + 0x10 * ChanNum; 2865 R[1] = RData[i + 1] + 0x10 * ChanNum;
2865 R[2] = RData[i + 2]; 2866 R[2] = RData[i + 2];
2866 R[3] = RData[i + 3]; 2867 R[3] = RData[i + 3];
2867 sOutDW(ChP->IndexAddr, *((DWord_t *) & R[0])); 2868 out32(ChP->IndexAddr, R);
2868 } 2869 }
2869 2870
2870 ChR = ChP->R; 2871 ChR = ChP->R;
@@ -2887,43 +2888,43 @@ static int sInitChan(CONTROLLER_T * CtlP, CHANNEL_T * ChP, int AiopNum,
2887 ChP->BaudDiv[1] = (Byte_t) ((ChOff + _BAUD) >> 8); 2888 ChP->BaudDiv[1] = (Byte_t) ((ChOff + _BAUD) >> 8);
2888 ChP->BaudDiv[2] = (Byte_t) brd9600; 2889 ChP->BaudDiv[2] = (Byte_t) brd9600;
2889 ChP->BaudDiv[3] = (Byte_t) (brd9600 >> 8); 2890 ChP->BaudDiv[3] = (Byte_t) (brd9600 >> 8);
2890 sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->BaudDiv[0]); 2891 out32(ChP->IndexAddr, ChP->BaudDiv);
2891 2892
2892 ChP->TxControl[0] = (Byte_t) (ChOff + _TX_CTRL); 2893 ChP->TxControl[0] = (Byte_t) (ChOff + _TX_CTRL);
2893 ChP->TxControl[1] = (Byte_t) ((ChOff + _TX_CTRL) >> 8); 2894 ChP->TxControl[1] = (Byte_t) ((ChOff + _TX_CTRL) >> 8);
2894 ChP->TxControl[2] = 0; 2895 ChP->TxControl[2] = 0;
2895 ChP->TxControl[3] = 0; 2896 ChP->TxControl[3] = 0;
2896 sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxControl[0]); 2897 out32(ChP->IndexAddr, ChP->TxControl);
2897 2898
2898 ChP->RxControl[0] = (Byte_t) (ChOff + _RX_CTRL); 2899 ChP->RxControl[0] = (Byte_t) (ChOff + _RX_CTRL);
2899 ChP->RxControl[1] = (Byte_t) ((ChOff + _RX_CTRL) >> 8); 2900 ChP->RxControl[1] = (Byte_t) ((ChOff + _RX_CTRL) >> 8);
2900 ChP->RxControl[2] = 0; 2901 ChP->RxControl[2] = 0;
2901 ChP->RxControl[3] = 0; 2902 ChP->RxControl[3] = 0;
2902 sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->RxControl[0]); 2903 out32(ChP->IndexAddr, ChP->RxControl);
2903 2904
2904 ChP->TxEnables[0] = (Byte_t) (ChOff + _TX_ENBLS); 2905 ChP->TxEnables[0] = (Byte_t) (ChOff + _TX_ENBLS);
2905 ChP->TxEnables[1] = (Byte_t) ((ChOff + _TX_ENBLS) >> 8); 2906 ChP->TxEnables[1] = (Byte_t) ((ChOff + _TX_ENBLS) >> 8);
2906 ChP->TxEnables[2] = 0; 2907 ChP->TxEnables[2] = 0;
2907 ChP->TxEnables[3] = 0; 2908 ChP->TxEnables[3] = 0;
2908 sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxEnables[0]); 2909 out32(ChP->IndexAddr, ChP->TxEnables);
2909 2910
2910 ChP->TxCompare[0] = (Byte_t) (ChOff + _TXCMP1); 2911 ChP->TxCompare[0] = (Byte_t) (ChOff + _TXCMP1);
2911 ChP->TxCompare[1] = (Byte_t) ((ChOff + _TXCMP1) >> 8); 2912 ChP->TxCompare[1] = (Byte_t) ((ChOff + _TXCMP1) >> 8);
2912 ChP->TxCompare[2] = 0; 2913 ChP->TxCompare[2] = 0;
2913 ChP->TxCompare[3] = 0; 2914 ChP->TxCompare[3] = 0;
2914 sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxCompare[0]); 2915 out32(ChP->IndexAddr, ChP->TxCompare);
2915 2916
2916 ChP->TxReplace1[0] = (Byte_t) (ChOff + _TXREP1B1); 2917 ChP->TxReplace1[0] = (Byte_t) (ChOff + _TXREP1B1);
2917 ChP->TxReplace1[1] = (Byte_t) ((ChOff + _TXREP1B1) >> 8); 2918 ChP->TxReplace1[1] = (Byte_t) ((ChOff + _TXREP1B1) >> 8);
2918 ChP->TxReplace1[2] = 0; 2919 ChP->TxReplace1[2] = 0;
2919 ChP->TxReplace1[3] = 0; 2920 ChP->TxReplace1[3] = 0;
2920 sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxReplace1[0]); 2921 out32(ChP->IndexAddr, ChP->TxReplace1);
2921 2922
2922 ChP->TxReplace2[0] = (Byte_t) (ChOff + _TXREP2); 2923 ChP->TxReplace2[0] = (Byte_t) (ChOff + _TXREP2);
2923 ChP->TxReplace2[1] = (Byte_t) ((ChOff + _TXREP2) >> 8); 2924 ChP->TxReplace2[1] = (Byte_t) ((ChOff + _TXREP2) >> 8);
2924 ChP->TxReplace2[2] = 0; 2925 ChP->TxReplace2[2] = 0;
2925 ChP->TxReplace2[3] = 0; 2926 ChP->TxReplace2[3] = 0;
2926 sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxReplace2[0]); 2927 out32(ChP->IndexAddr, ChP->TxReplace2);
2927 2928
2928 ChP->TxFIFOPtrs = ChOff + _TXF_OUTP; 2929 ChP->TxFIFOPtrs = ChOff + _TXF_OUTP;
2929 ChP->TxFIFO = ChOff + _TX_FIFO; 2930 ChP->TxFIFO = ChOff + _TX_FIFO;
@@ -2979,7 +2980,7 @@ static void sStopRxProcessor(CHANNEL_T * ChP)
2979 R[1] = ChP->R[1]; 2980 R[1] = ChP->R[1];
2980 R[2] = 0x0a; 2981 R[2] = 0x0a;
2981 R[3] = ChP->R[3]; 2982 R[3] = ChP->R[3];
2982 sOutDW(ChP->IndexAddr, *(DWord_t *) & R[0]); 2983 out32(ChP->IndexAddr, R);
2983} 2984}
2984 2985
2985/*************************************************************************** 2986/***************************************************************************
@@ -3094,13 +3095,13 @@ static int sWriteTxPrioByte(CHANNEL_T * ChP, Byte_t Data)
3094 *WordPtr = ChP->TxPrioBuf; /* data byte address */ 3095 *WordPtr = ChP->TxPrioBuf; /* data byte address */
3095 3096
3096 DWBuf[2] = Data; /* data byte value */ 3097 DWBuf[2] = Data; /* data byte value */
3097 sOutDW(IndexAddr, *((DWord_t *) (&DWBuf[0]))); /* write it out */ 3098 out32(IndexAddr, DWBuf); /* write it out */
3098 3099
3099 *WordPtr = ChP->TxPrioCnt; /* Tx priority count address */ 3100 *WordPtr = ChP->TxPrioCnt; /* Tx priority count address */
3100 3101
3101 DWBuf[2] = PRI_PEND + 1; /* indicate 1 byte pending */ 3102 DWBuf[2] = PRI_PEND + 1; /* indicate 1 byte pending */
3102 DWBuf[3] = 0; /* priority buffer pointer */ 3103 DWBuf[3] = 0; /* priority buffer pointer */
3103 sOutDW(IndexAddr, *((DWord_t *) (&DWBuf[0]))); /* write it out */ 3104 out32(IndexAddr, DWBuf); /* write it out */
3104 } else { /* write it to Tx FIFO */ 3105 } else { /* write it to Tx FIFO */
3105 3106
3106 sWriteTxByte(sGetTxRxDataIO(ChP), Data); 3107 sWriteTxByte(sGetTxRxDataIO(ChP), Data);
@@ -3147,11 +3148,11 @@ static void sEnInterrupts(CHANNEL_T * ChP, Word_t Flags)
3147 ChP->RxControl[2] |= 3148 ChP->RxControl[2] |=
3148 ((Byte_t) Flags & (RXINT_EN | SRCINT_EN | MCINT_EN)); 3149 ((Byte_t) Flags & (RXINT_EN | SRCINT_EN | MCINT_EN));
3149 3150
3150 sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->RxControl[0]); 3151 out32(ChP->IndexAddr, ChP->RxControl);
3151 3152
3152 ChP->TxControl[2] |= ((Byte_t) Flags & TXINT_EN); 3153 ChP->TxControl[2] |= ((Byte_t) Flags & TXINT_EN);
3153 3154
3154 sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxControl[0]); 3155 out32(ChP->IndexAddr, ChP->TxControl);
3155 3156
3156 if (Flags & CHANINT_EN) { 3157 if (Flags & CHANINT_EN) {
3157 Mask = sInB(ChP->IntMask) | sBitMapSetTbl[ChP->ChanNum]; 3158 Mask = sInB(ChP->IntMask) | sBitMapSetTbl[ChP->ChanNum];
@@ -3190,9 +3191,9 @@ static void sDisInterrupts(CHANNEL_T * ChP, Word_t Flags)
3190 3191
3191 ChP->RxControl[2] &= 3192 ChP->RxControl[2] &=
3192 ~((Byte_t) Flags & (RXINT_EN | SRCINT_EN | MCINT_EN)); 3193 ~((Byte_t) Flags & (RXINT_EN | SRCINT_EN | MCINT_EN));
3193 sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->RxControl[0]); 3194 out32(ChP->IndexAddr, ChP->RxControl);
3194 ChP->TxControl[2] &= ~((Byte_t) Flags & TXINT_EN); 3195 ChP->TxControl[2] &= ~((Byte_t) Flags & TXINT_EN);
3195 sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxControl[0]); 3196 out32(ChP->IndexAddr, ChP->TxControl);
3196 3197
3197 if (Flags & CHANINT_EN) { 3198 if (Flags & CHANINT_EN) {
3198 Mask = sInB(ChP->IntMask) & sBitMapClrTbl[ChP->ChanNum]; 3199 Mask = sInB(ChP->IntMask) & sBitMapClrTbl[ChP->ChanNum];
diff --git a/drivers/char/rocket_int.h b/drivers/char/rocket_int.h
index f3a75791b811..b01d38125a8f 100644
--- a/drivers/char/rocket_int.h
+++ b/drivers/char/rocket_int.h
@@ -26,7 +26,6 @@ typedef unsigned int ByteIO_t;
26typedef unsigned int Word_t; 26typedef unsigned int Word_t;
27typedef unsigned int WordIO_t; 27typedef unsigned int WordIO_t;
28 28
29typedef unsigned long DWord_t;
30typedef unsigned int DWordIO_t; 29typedef unsigned int DWordIO_t;
31 30
32/* 31/*
@@ -38,7 +37,6 @@ typedef unsigned int DWordIO_t;
38 * instruction. 37 * instruction.
39 */ 38 */
40 39
41#ifdef ROCKET_DEBUG_IO
42static inline void sOutB(unsigned short port, unsigned char value) 40static inline void sOutB(unsigned short port, unsigned char value)
43{ 41{
44#ifdef ROCKET_DEBUG_IO 42#ifdef ROCKET_DEBUG_IO
@@ -55,12 +53,13 @@ static inline void sOutW(unsigned short port, unsigned short value)
55 outw_p(value, port); 53 outw_p(value, port);
56} 54}
57 55
58static inline void sOutDW(unsigned short port, unsigned long value) 56static inline void out32(unsigned short port, Byte_t *p)
59{ 57{
58 u32 value = le32_to_cpu(get_unaligned((__le32 *)p));
60#ifdef ROCKET_DEBUG_IO 59#ifdef ROCKET_DEBUG_IO
61 printk(KERN_DEBUG "sOutDW(%x, %lx)...\n", port, value); 60 printk(KERN_DEBUG "out32(%x, %lx)...\n", port, value);
62#endif 61#endif
63 outl_p(cpu_to_le32(value), port); 62 outl_p(value, port);
64} 63}
65 64
66static inline unsigned char sInB(unsigned short port) 65static inline unsigned char sInB(unsigned short port)
@@ -73,14 +72,6 @@ static inline unsigned short sInW(unsigned short port)
73 return inw_p(port); 72 return inw_p(port);
74} 73}
75 74
76#else /* !ROCKET_DEBUG_IO */
77#define sOutB(a, b) outb_p(b, a)
78#define sOutW(a, b) outw_p(b, a)
79#define sOutDW(port, value) outl_p(cpu_to_le32(value), port)
80#define sInB(a) (inb_p(a))
81#define sInW(a) (inw_p(a))
82#endif /* ROCKET_DEBUG_IO */
83
84/* This is used to move arrays of bytes so byte swapping isn't appropriate. */ 75/* This is used to move arrays of bytes so byte swapping isn't appropriate. */
85#define sOutStrW(port, addr, count) if (count) outsw(port, addr, count) 76#define sOutStrW(port, addr, count) if (count) outsw(port, addr, count)
86#define sInStrW(port, addr, count) if (count) insw(port, addr, count) 77#define sInStrW(port, addr, count) if (count) insw(port, addr, count)
@@ -390,7 +381,7 @@ Call: sClrBreak(ChP)
390#define sClrBreak(ChP) \ 381#define sClrBreak(ChP) \
391do { \ 382do { \
392 (ChP)->TxControl[3] &= ~SETBREAK; \ 383 (ChP)->TxControl[3] &= ~SETBREAK; \
393 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 384 out32((ChP)->IndexAddr,(ChP)->TxControl); \
394} while (0) 385} while (0)
395 386
396/*************************************************************************** 387/***************************************************************************
@@ -402,7 +393,7 @@ Call: sClrDTR(ChP)
402#define sClrDTR(ChP) \ 393#define sClrDTR(ChP) \
403do { \ 394do { \
404 (ChP)->TxControl[3] &= ~SET_DTR; \ 395 (ChP)->TxControl[3] &= ~SET_DTR; \
405 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 396 out32((ChP)->IndexAddr,(ChP)->TxControl); \
406} while (0) 397} while (0)
407 398
408/*************************************************************************** 399/***************************************************************************
@@ -415,7 +406,7 @@ Call: sClrRTS(ChP)
415do { \ 406do { \
416 if ((ChP)->rtsToggle) break; \ 407 if ((ChP)->rtsToggle) break; \
417 (ChP)->TxControl[3] &= ~SET_RTS; \ 408 (ChP)->TxControl[3] &= ~SET_RTS; \
418 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 409 out32((ChP)->IndexAddr,(ChP)->TxControl); \
419} while (0) 410} while (0)
420 411
421/*************************************************************************** 412/***************************************************************************
@@ -489,7 +480,7 @@ Call: sDisCTSFlowCtl(ChP)
489#define sDisCTSFlowCtl(ChP) \ 480#define sDisCTSFlowCtl(ChP) \
490do { \ 481do { \
491 (ChP)->TxControl[2] &= ~CTSFC_EN; \ 482 (ChP)->TxControl[2] &= ~CTSFC_EN; \
492 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 483 out32((ChP)->IndexAddr,(ChP)->TxControl); \
493} while (0) 484} while (0)
494 485
495/*************************************************************************** 486/***************************************************************************
@@ -501,7 +492,7 @@ Call: sDisIXANY(ChP)
501#define sDisIXANY(ChP) \ 492#define sDisIXANY(ChP) \
502do { \ 493do { \
503 (ChP)->R[0x0e] = 0x86; \ 494 (ChP)->R[0x0e] = 0x86; \
504 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x0c]); \ 495 out32((ChP)->IndexAddr,&(ChP)->R[0x0c]); \
505} while (0) 496} while (0)
506 497
507/*************************************************************************** 498/***************************************************************************
@@ -515,7 +506,7 @@ Comments: Function sSetParity() can be used in place of functions sEnParity(),
515#define sDisParity(ChP) \ 506#define sDisParity(ChP) \
516do { \ 507do { \
517 (ChP)->TxControl[2] &= ~PARITY_EN; \ 508 (ChP)->TxControl[2] &= ~PARITY_EN; \
518 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 509 out32((ChP)->IndexAddr,(ChP)->TxControl); \
519} while (0) 510} while (0)
520 511
521/*************************************************************************** 512/***************************************************************************
@@ -527,7 +518,7 @@ Call: sDisRTSToggle(ChP)
527#define sDisRTSToggle(ChP) \ 518#define sDisRTSToggle(ChP) \
528do { \ 519do { \
529 (ChP)->TxControl[2] &= ~RTSTOG_EN; \ 520 (ChP)->TxControl[2] &= ~RTSTOG_EN; \
530 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 521 out32((ChP)->IndexAddr,(ChP)->TxControl); \
531 (ChP)->rtsToggle = 0; \ 522 (ChP)->rtsToggle = 0; \
532} while (0) 523} while (0)
533 524
@@ -540,7 +531,7 @@ Call: sDisRxFIFO(ChP)
540#define sDisRxFIFO(ChP) \ 531#define sDisRxFIFO(ChP) \
541do { \ 532do { \
542 (ChP)->R[0x32] = 0x0a; \ 533 (ChP)->R[0x32] = 0x0a; \
543 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x30]); \ 534 out32((ChP)->IndexAddr,&(ChP)->R[0x30]); \
544} while (0) 535} while (0)
545 536
546/*************************************************************************** 537/***************************************************************************
@@ -567,7 +558,7 @@ Call: sDisTransmit(ChP)
567#define sDisTransmit(ChP) \ 558#define sDisTransmit(ChP) \
568do { \ 559do { \
569 (ChP)->TxControl[3] &= ~TX_ENABLE; \ 560 (ChP)->TxControl[3] &= ~TX_ENABLE; \
570 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 561 out32((ChP)->IndexAddr,(ChP)->TxControl); \
571} while (0) 562} while (0)
572 563
573/*************************************************************************** 564/***************************************************************************
@@ -579,7 +570,7 @@ Call: sDisTxSoftFlowCtl(ChP)
579#define sDisTxSoftFlowCtl(ChP) \ 570#define sDisTxSoftFlowCtl(ChP) \
580do { \ 571do { \
581 (ChP)->R[0x06] = 0x8a; \ 572 (ChP)->R[0x06] = 0x8a; \
582 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x04]); \ 573 out32((ChP)->IndexAddr,&(ChP)->R[0x04]); \
583} while (0) 574} while (0)
584 575
585/*************************************************************************** 576/***************************************************************************
@@ -604,7 +595,7 @@ Call: sEnCTSFlowCtl(ChP)
604#define sEnCTSFlowCtl(ChP) \ 595#define sEnCTSFlowCtl(ChP) \
605do { \ 596do { \
606 (ChP)->TxControl[2] |= CTSFC_EN; \ 597 (ChP)->TxControl[2] |= CTSFC_EN; \
607 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 598 out32((ChP)->IndexAddr,(ChP)->TxControl); \
608} while (0) 599} while (0)
609 600
610/*************************************************************************** 601/***************************************************************************
@@ -616,7 +607,7 @@ Call: sEnIXANY(ChP)
616#define sEnIXANY(ChP) \ 607#define sEnIXANY(ChP) \
617do { \ 608do { \
618 (ChP)->R[0x0e] = 0x21; \ 609 (ChP)->R[0x0e] = 0x21; \
619 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x0c]); \ 610 out32((ChP)->IndexAddr,&(ChP)->R[0x0c]); \
620} while (0) 611} while (0)
621 612
622/*************************************************************************** 613/***************************************************************************
@@ -633,7 +624,7 @@ Warnings: Before enabling parity odd or even parity should be chosen using
633#define sEnParity(ChP) \ 624#define sEnParity(ChP) \
634do { \ 625do { \
635 (ChP)->TxControl[2] |= PARITY_EN; \ 626 (ChP)->TxControl[2] |= PARITY_EN; \
636 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 627 out32((ChP)->IndexAddr,(ChP)->TxControl); \
637} while (0) 628} while (0)
638 629
639/*************************************************************************** 630/***************************************************************************
@@ -647,10 +638,10 @@ Comments: This function will disable RTS flow control and clear the RTS
647#define sEnRTSToggle(ChP) \ 638#define sEnRTSToggle(ChP) \
648do { \ 639do { \
649 (ChP)->RxControl[2] &= ~RTSFC_EN; \ 640 (ChP)->RxControl[2] &= ~RTSFC_EN; \
650 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->RxControl[0]); \ 641 out32((ChP)->IndexAddr,(ChP)->RxControl); \
651 (ChP)->TxControl[2] |= RTSTOG_EN; \ 642 (ChP)->TxControl[2] |= RTSTOG_EN; \
652 (ChP)->TxControl[3] &= ~SET_RTS; \ 643 (ChP)->TxControl[3] &= ~SET_RTS; \
653 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 644 out32((ChP)->IndexAddr,(ChP)->TxControl); \
654 (ChP)->rtsToggle = 1; \ 645 (ChP)->rtsToggle = 1; \
655} while (0) 646} while (0)
656 647
@@ -663,7 +654,7 @@ Call: sEnRxFIFO(ChP)
663#define sEnRxFIFO(ChP) \ 654#define sEnRxFIFO(ChP) \
664do { \ 655do { \
665 (ChP)->R[0x32] = 0x08; \ 656 (ChP)->R[0x32] = 0x08; \
666 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x30]); \ 657 out32((ChP)->IndexAddr,&(ChP)->R[0x30]); \
667} while (0) 658} while (0)
668 659
669/*************************************************************************** 660/***************************************************************************
@@ -684,7 +675,7 @@ Warnings: This function must be called after valid microcode has been
684#define sEnRxProcessor(ChP) \ 675#define sEnRxProcessor(ChP) \
685do { \ 676do { \
686 (ChP)->RxControl[2] |= RXPROC_EN; \ 677 (ChP)->RxControl[2] |= RXPROC_EN; \
687 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->RxControl[0]); \ 678 out32((ChP)->IndexAddr,(ChP)->RxControl); \
688} while (0) 679} while (0)
689 680
690/*************************************************************************** 681/***************************************************************************
@@ -708,7 +699,7 @@ Call: sEnTransmit(ChP)
708#define sEnTransmit(ChP) \ 699#define sEnTransmit(ChP) \
709do { \ 700do { \
710 (ChP)->TxControl[3] |= TX_ENABLE; \ 701 (ChP)->TxControl[3] |= TX_ENABLE; \
711 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 702 out32((ChP)->IndexAddr,(ChP)->TxControl); \
712} while (0) 703} while (0)
713 704
714/*************************************************************************** 705/***************************************************************************
@@ -720,7 +711,7 @@ Call: sEnTxSoftFlowCtl(ChP)
720#define sEnTxSoftFlowCtl(ChP) \ 711#define sEnTxSoftFlowCtl(ChP) \
721do { \ 712do { \
722 (ChP)->R[0x06] = 0xc5; \ 713 (ChP)->R[0x06] = 0xc5; \
723 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x04]); \ 714 out32((ChP)->IndexAddr,&(ChP)->R[0x04]); \
724} while (0) 715} while (0)
725 716
726/*************************************************************************** 717/***************************************************************************
@@ -927,7 +918,7 @@ Call: sSendBreak(ChP)
927#define sSendBreak(ChP) \ 918#define sSendBreak(ChP) \
928do { \ 919do { \
929 (ChP)->TxControl[3] |= SETBREAK; \ 920 (ChP)->TxControl[3] |= SETBREAK; \
930 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 921 out32((ChP)->IndexAddr,(ChP)->TxControl); \
931} while (0) 922} while (0)
932 923
933/*************************************************************************** 924/***************************************************************************
@@ -941,7 +932,7 @@ Call: sSetBaud(ChP,Divisor)
941do { \ 932do { \
942 (ChP)->BaudDiv[2] = (Byte_t)(DIVISOR); \ 933 (ChP)->BaudDiv[2] = (Byte_t)(DIVISOR); \
943 (ChP)->BaudDiv[3] = (Byte_t)((DIVISOR) >> 8); \ 934 (ChP)->BaudDiv[3] = (Byte_t)((DIVISOR) >> 8); \
944 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->BaudDiv[0]); \ 935 out32((ChP)->IndexAddr,(ChP)->BaudDiv); \
945} while (0) 936} while (0)
946 937
947/*************************************************************************** 938/***************************************************************************
@@ -953,7 +944,7 @@ Call: sSetData7(ChP)
953#define sSetData7(ChP) \ 944#define sSetData7(ChP) \
954do { \ 945do { \
955 (ChP)->TxControl[2] &= ~DATA8BIT; \ 946 (ChP)->TxControl[2] &= ~DATA8BIT; \
956 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 947 out32((ChP)->IndexAddr,(ChP)->TxControl); \
957} while (0) 948} while (0)
958 949
959/*************************************************************************** 950/***************************************************************************
@@ -965,7 +956,7 @@ Call: sSetData8(ChP)
965#define sSetData8(ChP) \ 956#define sSetData8(ChP) \
966do { \ 957do { \
967 (ChP)->TxControl[2] |= DATA8BIT; \ 958 (ChP)->TxControl[2] |= DATA8BIT; \
968 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 959 out32((ChP)->IndexAddr,(ChP)->TxControl); \
969} while (0) 960} while (0)
970 961
971/*************************************************************************** 962/***************************************************************************
@@ -977,7 +968,7 @@ Call: sSetDTR(ChP)
977#define sSetDTR(ChP) \ 968#define sSetDTR(ChP) \
978do { \ 969do { \
979 (ChP)->TxControl[3] |= SET_DTR; \ 970 (ChP)->TxControl[3] |= SET_DTR; \
980 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 971 out32((ChP)->IndexAddr,(ChP)->TxControl); \
981} while (0) 972} while (0)
982 973
983/*************************************************************************** 974/***************************************************************************
@@ -994,7 +985,7 @@ Warnings: This function has no effect unless parity is enabled with function
994#define sSetEvenParity(ChP) \ 985#define sSetEvenParity(ChP) \
995do { \ 986do { \
996 (ChP)->TxControl[2] |= EVEN_PAR; \ 987 (ChP)->TxControl[2] |= EVEN_PAR; \
997 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 988 out32((ChP)->IndexAddr,(ChP)->TxControl); \
998} while (0) 989} while (0)
999 990
1000/*************************************************************************** 991/***************************************************************************
@@ -1011,7 +1002,7 @@ Warnings: This function has no effect unless parity is enabled with function
1011#define sSetOddParity(ChP) \ 1002#define sSetOddParity(ChP) \
1012do { \ 1003do { \
1013 (ChP)->TxControl[2] &= ~EVEN_PAR; \ 1004 (ChP)->TxControl[2] &= ~EVEN_PAR; \
1014 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 1005 out32((ChP)->IndexAddr,(ChP)->TxControl); \
1015} while (0) 1006} while (0)
1016 1007
1017/*************************************************************************** 1008/***************************************************************************
@@ -1024,7 +1015,7 @@ Call: sSetRTS(ChP)
1024do { \ 1015do { \
1025 if ((ChP)->rtsToggle) break; \ 1016 if ((ChP)->rtsToggle) break; \
1026 (ChP)->TxControl[3] |= SET_RTS; \ 1017 (ChP)->TxControl[3] |= SET_RTS; \
1027 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 1018 out32((ChP)->IndexAddr,(ChP)->TxControl); \
1028} while (0) 1019} while (0)
1029 1020
1030/*************************************************************************** 1021/***************************************************************************
@@ -1050,7 +1041,7 @@ Comments: An interrupt will be generated when the trigger level is reached
1050do { \ 1041do { \
1051 (ChP)->RxControl[2] &= ~TRIG_MASK; \ 1042 (ChP)->RxControl[2] &= ~TRIG_MASK; \
1052 (ChP)->RxControl[2] |= LEVEL; \ 1043 (ChP)->RxControl[2] |= LEVEL; \
1053 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->RxControl[0]); \ 1044 out32((ChP)->IndexAddr,(ChP)->RxControl); \
1054} while (0) 1045} while (0)
1055 1046
1056/*************************************************************************** 1047/***************************************************************************
@@ -1062,7 +1053,7 @@ Call: sSetStop1(ChP)
1062#define sSetStop1(ChP) \ 1053#define sSetStop1(ChP) \
1063do { \ 1054do { \
1064 (ChP)->TxControl[2] &= ~STOP2; \ 1055 (ChP)->TxControl[2] &= ~STOP2; \
1065 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 1056 out32((ChP)->IndexAddr,(ChP)->TxControl); \
1066} while (0) 1057} while (0)
1067 1058
1068/*************************************************************************** 1059/***************************************************************************
@@ -1074,7 +1065,7 @@ Call: sSetStop2(ChP)
1074#define sSetStop2(ChP) \ 1065#define sSetStop2(ChP) \
1075do { \ 1066do { \
1076 (ChP)->TxControl[2] |= STOP2; \ 1067 (ChP)->TxControl[2] |= STOP2; \
1077 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ 1068 out32((ChP)->IndexAddr,(ChP)->TxControl); \
1078} while (0) 1069} while (0)
1079 1070
1080/*************************************************************************** 1071/***************************************************************************
@@ -1087,7 +1078,7 @@ Call: sSetTxXOFFChar(ChP,Ch)
1087#define sSetTxXOFFChar(ChP,CH) \ 1078#define sSetTxXOFFChar(ChP,CH) \
1088do { \ 1079do { \
1089 (ChP)->R[0x07] = (CH); \ 1080 (ChP)->R[0x07] = (CH); \
1090 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x04]); \ 1081 out32((ChP)->IndexAddr,&(ChP)->R[0x04]); \
1091} while (0) 1082} while (0)
1092 1083
1093/*************************************************************************** 1084/***************************************************************************
@@ -1100,7 +1091,7 @@ Call: sSetTxXONChar(ChP,Ch)
1100#define sSetTxXONChar(ChP,CH) \ 1091#define sSetTxXONChar(ChP,CH) \
1101do { \ 1092do { \
1102 (ChP)->R[0x0b] = (CH); \ 1093 (ChP)->R[0x0b] = (CH); \
1103 sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x08]); \ 1094 out32((ChP)->IndexAddr,&(ChP)->R[0x08]); \
1104} while (0) 1095} while (0)
1105 1096
1106/*************************************************************************** 1097/***************************************************************************
@@ -1113,7 +1104,7 @@ Comments: This function is used to start a Rx processor after it was
1113 will restart both the Rx processor and software input flow control. 1104 will restart both the Rx processor and software input flow control.
1114 1105
1115*/ 1106*/
1116#define sStartRxProcessor(ChP) sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0]) 1107#define sStartRxProcessor(ChP) out32((ChP)->IndexAddr,&(ChP)->R[0])
1117 1108
1118/*************************************************************************** 1109/***************************************************************************
1119Function: sWriteTxByte 1110Function: sWriteTxByte
diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
index ad2f938597e2..72692309398a 100644
--- a/drivers/dma/fsldma.c
+++ b/drivers/dma/fsldma.c
@@ -123,6 +123,11 @@ static dma_addr_t get_ndar(struct fsl_dma_chan *fsl_chan)
123 return DMA_IN(fsl_chan, &fsl_chan->reg_base->ndar, 64); 123 return DMA_IN(fsl_chan, &fsl_chan->reg_base->ndar, 64);
124} 124}
125 125
126static u32 get_bcr(struct fsl_dma_chan *fsl_chan)
127{
128 return DMA_IN(fsl_chan, &fsl_chan->reg_base->bcr, 32);
129}
130
126static int dma_is_idle(struct fsl_dma_chan *fsl_chan) 131static int dma_is_idle(struct fsl_dma_chan *fsl_chan)
127{ 132{
128 u32 sr = get_sr(fsl_chan); 133 u32 sr = get_sr(fsl_chan);
@@ -426,6 +431,9 @@ fsl_dma_prep_interrupt(struct dma_chan *chan)
426 new->async_tx.cookie = -EBUSY; 431 new->async_tx.cookie = -EBUSY;
427 new->async_tx.ack = 0; 432 new->async_tx.ack = 0;
428 433
434 /* Insert the link descriptor to the LD ring */
435 list_add_tail(&new->node, &new->async_tx.tx_list);
436
429 /* Set End-of-link to the last link descriptor of new list*/ 437 /* Set End-of-link to the last link descriptor of new list*/
430 set_ld_eol(fsl_chan, new); 438 set_ld_eol(fsl_chan, new);
431 439
@@ -701,6 +709,23 @@ static irqreturn_t fsl_dma_chan_do_interrupt(int irq, void *data)
701 if (stat & FSL_DMA_SR_TE) 709 if (stat & FSL_DMA_SR_TE)
702 dev_err(fsl_chan->dev, "Transfer Error!\n"); 710 dev_err(fsl_chan->dev, "Transfer Error!\n");
703 711
712 /* Programming Error
713 * The DMA_INTERRUPT async_tx is a NULL transfer, which will
714 * triger a PE interrupt.
715 */
716 if (stat & FSL_DMA_SR_PE) {
717 dev_dbg(fsl_chan->dev, "event: Programming Error INT\n");
718 if (get_bcr(fsl_chan) == 0) {
719 /* BCR register is 0, this is a DMA_INTERRUPT async_tx.
720 * Now, update the completed cookie, and continue the
721 * next uncompleted transfer.
722 */
723 fsl_dma_update_completed_cookie(fsl_chan);
724 fsl_chan_xfer_ld_queue(fsl_chan);
725 }
726 stat &= ~FSL_DMA_SR_PE;
727 }
728
704 /* If the link descriptor segment transfer finishes, 729 /* If the link descriptor segment transfer finishes,
705 * we will recycle the used descriptor. 730 * we will recycle the used descriptor.
706 */ 731 */
@@ -841,6 +866,11 @@ static int fsl_dma_self_test(struct fsl_dma_chan *fsl_chan)
841 tx3 = fsl_dma_prep_memcpy(chan, dma_dest, dma_src, test_size / 4, 0); 866 tx3 = fsl_dma_prep_memcpy(chan, dma_dest, dma_src, test_size / 4, 0);
842 async_tx_ack(tx3); 867 async_tx_ack(tx3);
843 868
869 /* Interrupt tx test */
870 tx1 = fsl_dma_prep_interrupt(chan);
871 async_tx_ack(tx1);
872 cookie = fsl_dma_tx_submit(tx1);
873
844 /* Test exchanging the prepared tx sort */ 874 /* Test exchanging the prepared tx sort */
845 cookie = fsl_dma_tx_submit(tx3); 875 cookie = fsl_dma_tx_submit(tx3);
846 cookie = fsl_dma_tx_submit(tx2); 876 cookie = fsl_dma_tx_submit(tx2);
diff --git a/drivers/dma/fsldma.h b/drivers/dma/fsldma.h
index ba78c42121ba..fddd6aee2a63 100644
--- a/drivers/dma/fsldma.h
+++ b/drivers/dma/fsldma.h
@@ -40,6 +40,7 @@
40#define FSL_DMA_MR_EOTIE 0x00000080 40#define FSL_DMA_MR_EOTIE 0x00000080
41 41
42#define FSL_DMA_SR_CH 0x00000020 42#define FSL_DMA_SR_CH 0x00000020
43#define FSL_DMA_SR_PE 0x00000010
43#define FSL_DMA_SR_CB 0x00000004 44#define FSL_DMA_SR_CB 0x00000004
44#define FSL_DMA_SR_TE 0x00000080 45#define FSL_DMA_SR_TE 0x00000080
45#define FSL_DMA_SR_EOSI 0x00000002 46#define FSL_DMA_SR_EOSI 0x00000002
diff --git a/drivers/firewire/Kconfig b/drivers/firewire/Kconfig
index fe9e768cfbc4..25bdc2dd9ce1 100644
--- a/drivers/firewire/Kconfig
+++ b/drivers/firewire/Kconfig
@@ -1,5 +1,3 @@
1# -*- shell-script -*-
2
3comment "An alternative FireWire stack is available with EXPERIMENTAL=y" 1comment "An alternative FireWire stack is available with EXPERIMENTAL=y"
4 depends on EXPERIMENTAL=n 2 depends on EXPERIMENTAL=n
5 3
@@ -21,27 +19,7 @@ config FIREWIRE
21 NOTE: 19 NOTE:
22 20
23 You should only build ONE of the stacks, unless you REALLY know what 21 You should only build ONE of the stacks, unless you REALLY know what
24 you are doing. If you install both, you should configure them only as 22 you are doing.
25 modules rather than link them statically, and you should blacklist one
26 of the concurrent low-level drivers in /etc/modprobe.conf. Add either
27
28 blacklist firewire-ohci
29 or
30 blacklist ohci1394
31
32 there depending on which driver you DON'T want to have auto-loaded.
33 You can optionally do the same with the other IEEE 1394/ FireWire
34 drivers.
35
36 If you have an old modprobe which doesn't implement the blacklist
37 directive, use either
38
39 install firewire-ohci /bin/true
40 or
41 install ohci1394 /bin/true
42
43 and so on, depending on which modules you DON't want to have
44 auto-loaded.
45 23
46config FIREWIRE_OHCI 24config FIREWIRE_OHCI
47 tristate "Support for OHCI FireWire host controllers" 25 tristate "Support for OHCI FireWire host controllers"
@@ -57,8 +35,24 @@ config FIREWIRE_OHCI
57 35
58 NOTE: 36 NOTE:
59 37
60 If you also build ohci1394 of the classic stack, blacklist either 38 You should only build ohci1394 or firewire-ohci, but not both.
61 ohci1394 or firewire-ohci to let hotplug load only the desired driver. 39 If you nevertheless want to install both, you should configure them
40 only as modules and blacklist the driver(s) which you don't want to
41 have auto-loaded. Add either
42
43 blacklist firewire-ohci
44 or
45 blacklist ohci1394
46 blacklist video1394
47 blacklist dv1394
48
49 to /etc/modprobe.conf or /etc/modprobe.d/* and update modprobe.conf
50 depending on your distribution. The latter two modules should be
51 blacklisted together with ohci1394 because they depend on ohci1394.
52
53 If you have an old modprobe which doesn't implement the blacklist
54 directive, use "install modulename /bin/true" for the modules to be
55 blacklisted.
62 56
63config FIREWIRE_SBP2 57config FIREWIRE_SBP2
64 tristate "Support for storage devices (SBP-2 protocol driver)" 58 tristate "Support for storage devices (SBP-2 protocol driver)"
@@ -75,9 +69,3 @@ config FIREWIRE_SBP2
75 69
76 You should also enable support for disks, CD-ROMs, etc. in the SCSI 70 You should also enable support for disks, CD-ROMs, etc. in the SCSI
77 configuration section. 71 configuration section.
78
79 NOTE:
80
81 If you also build sbp2 of the classic stack, blacklist either sbp2
82 or firewire-sbp2 to let hotplug load only the desired driver.
83
diff --git a/drivers/firewire/fw-ohci.c b/drivers/firewire/fw-ohci.c
index 7ebad3c14cb8..996d61f0d460 100644
--- a/drivers/firewire/fw-ohci.c
+++ b/drivers/firewire/fw-ohci.c
@@ -33,6 +33,10 @@
33#include <asm/page.h> 33#include <asm/page.h>
34#include <asm/system.h> 34#include <asm/system.h>
35 35
36#ifdef CONFIG_PPC_PMAC
37#include <asm/pmac_feature.h>
38#endif
39
36#include "fw-ohci.h" 40#include "fw-ohci.h"
37#include "fw-transaction.h" 41#include "fw-transaction.h"
38 42
@@ -175,6 +179,7 @@ struct fw_ohci {
175 int generation; 179 int generation;
176 int request_generation; 180 int request_generation;
177 u32 bus_seconds; 181 u32 bus_seconds;
182 bool old_uninorth;
178 183
179 /* 184 /*
180 * Spinlock for accessing fw_ohci data. Never call out of 185 * Spinlock for accessing fw_ohci data. Never call out of
@@ -276,19 +281,13 @@ static int ar_context_add_page(struct ar_context *ctx)
276{ 281{
277 struct device *dev = ctx->ohci->card.device; 282 struct device *dev = ctx->ohci->card.device;
278 struct ar_buffer *ab; 283 struct ar_buffer *ab;
279 dma_addr_t ab_bus; 284 dma_addr_t uninitialized_var(ab_bus);
280 size_t offset; 285 size_t offset;
281 286
282 ab = (struct ar_buffer *) __get_free_page(GFP_ATOMIC); 287 ab = dma_alloc_coherent(dev, PAGE_SIZE, &ab_bus, GFP_ATOMIC);
283 if (ab == NULL) 288 if (ab == NULL)
284 return -ENOMEM; 289 return -ENOMEM;
285 290
286 ab_bus = dma_map_single(dev, ab, PAGE_SIZE, DMA_BIDIRECTIONAL);
287 if (dma_mapping_error(ab_bus)) {
288 free_page((unsigned long) ab);
289 return -ENOMEM;
290 }
291
292 memset(&ab->descriptor, 0, sizeof(ab->descriptor)); 291 memset(&ab->descriptor, 0, sizeof(ab->descriptor));
293 ab->descriptor.control = cpu_to_le16(DESCRIPTOR_INPUT_MORE | 292 ab->descriptor.control = cpu_to_le16(DESCRIPTOR_INPUT_MORE |
294 DESCRIPTOR_STATUS | 293 DESCRIPTOR_STATUS |
@@ -299,8 +298,6 @@ static int ar_context_add_page(struct ar_context *ctx)
299 ab->descriptor.res_count = cpu_to_le16(PAGE_SIZE - offset); 298 ab->descriptor.res_count = cpu_to_le16(PAGE_SIZE - offset);
300 ab->descriptor.branch_address = 0; 299 ab->descriptor.branch_address = 0;
301 300
302 dma_sync_single_for_device(dev, ab_bus, PAGE_SIZE, DMA_BIDIRECTIONAL);
303
304 ctx->last_buffer->descriptor.branch_address = cpu_to_le32(ab_bus | 1); 301 ctx->last_buffer->descriptor.branch_address = cpu_to_le32(ab_bus | 1);
305 ctx->last_buffer->next = ab; 302 ctx->last_buffer->next = ab;
306 ctx->last_buffer = ab; 303 ctx->last_buffer = ab;
@@ -311,15 +308,22 @@ static int ar_context_add_page(struct ar_context *ctx)
311 return 0; 308 return 0;
312} 309}
313 310
311#if defined(CONFIG_PPC_PMAC) && defined(CONFIG_PPC32)
312#define cond_le32_to_cpu(v) \
313 (ohci->old_uninorth ? (__force __u32)(v) : le32_to_cpu(v))
314#else
315#define cond_le32_to_cpu(v) le32_to_cpu(v)
316#endif
317
314static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer) 318static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer)
315{ 319{
316 struct fw_ohci *ohci = ctx->ohci; 320 struct fw_ohci *ohci = ctx->ohci;
317 struct fw_packet p; 321 struct fw_packet p;
318 u32 status, length, tcode; 322 u32 status, length, tcode;
319 323
320 p.header[0] = le32_to_cpu(buffer[0]); 324 p.header[0] = cond_le32_to_cpu(buffer[0]);
321 p.header[1] = le32_to_cpu(buffer[1]); 325 p.header[1] = cond_le32_to_cpu(buffer[1]);
322 p.header[2] = le32_to_cpu(buffer[2]); 326 p.header[2] = cond_le32_to_cpu(buffer[2]);
323 327
324 tcode = (p.header[0] >> 4) & 0x0f; 328 tcode = (p.header[0] >> 4) & 0x0f;
325 switch (tcode) { 329 switch (tcode) {
@@ -331,7 +335,7 @@ static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer)
331 break; 335 break;
332 336
333 case TCODE_READ_BLOCK_REQUEST : 337 case TCODE_READ_BLOCK_REQUEST :
334 p.header[3] = le32_to_cpu(buffer[3]); 338 p.header[3] = cond_le32_to_cpu(buffer[3]);
335 p.header_length = 16; 339 p.header_length = 16;
336 p.payload_length = 0; 340 p.payload_length = 0;
337 break; 341 break;
@@ -340,7 +344,7 @@ static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer)
340 case TCODE_READ_BLOCK_RESPONSE: 344 case TCODE_READ_BLOCK_RESPONSE:
341 case TCODE_LOCK_REQUEST: 345 case TCODE_LOCK_REQUEST:
342 case TCODE_LOCK_RESPONSE: 346 case TCODE_LOCK_RESPONSE:
343 p.header[3] = le32_to_cpu(buffer[3]); 347 p.header[3] = cond_le32_to_cpu(buffer[3]);
344 p.header_length = 16; 348 p.header_length = 16;
345 p.payload_length = p.header[3] >> 16; 349 p.payload_length = p.header[3] >> 16;
346 break; 350 break;
@@ -357,7 +361,7 @@ static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer)
357 361
358 /* FIXME: What to do about evt_* errors? */ 362 /* FIXME: What to do about evt_* errors? */
359 length = (p.header_length + p.payload_length + 3) / 4; 363 length = (p.header_length + p.payload_length + 3) / 4;
360 status = le32_to_cpu(buffer[length]); 364 status = cond_le32_to_cpu(buffer[length]);
361 365
362 p.ack = ((status >> 16) & 0x1f) - 16; 366 p.ack = ((status >> 16) & 0x1f) - 16;
363 p.speed = (status >> 21) & 0x7; 367 p.speed = (status >> 21) & 0x7;
@@ -375,7 +379,7 @@ static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer)
375 */ 379 */
376 380
377 if (p.ack + 16 == 0x09) 381 if (p.ack + 16 == 0x09)
378 ohci->request_generation = (buffer[2] >> 16) & 0xff; 382 ohci->request_generation = (p.header[2] >> 16) & 0xff;
379 else if (ctx == &ohci->ar_request_ctx) 383 else if (ctx == &ohci->ar_request_ctx)
380 fw_core_handle_request(&ohci->card, &p); 384 fw_core_handle_request(&ohci->card, &p);
381 else 385 else
@@ -397,6 +401,7 @@ static void ar_context_tasklet(unsigned long data)
397 401
398 if (d->res_count == 0) { 402 if (d->res_count == 0) {
399 size_t size, rest, offset; 403 size_t size, rest, offset;
404 dma_addr_t buffer_bus;
400 405
401 /* 406 /*
402 * This descriptor is finished and we may have a 407 * This descriptor is finished and we may have a
@@ -405,9 +410,7 @@ static void ar_context_tasklet(unsigned long data)
405 */ 410 */
406 411
407 offset = offsetof(struct ar_buffer, data); 412 offset = offsetof(struct ar_buffer, data);
408 dma_unmap_single(ohci->card.device, 413 buffer_bus = le32_to_cpu(ab->descriptor.data_address) - offset;
409 le32_to_cpu(ab->descriptor.data_address) - offset,
410 PAGE_SIZE, DMA_BIDIRECTIONAL);
411 414
412 buffer = ab; 415 buffer = ab;
413 ab = ab->next; 416 ab = ab->next;
@@ -423,7 +426,8 @@ static void ar_context_tasklet(unsigned long data)
423 while (buffer < end) 426 while (buffer < end)
424 buffer = handle_ar_packet(ctx, buffer); 427 buffer = handle_ar_packet(ctx, buffer);
425 428
426 free_page((unsigned long)buffer); 429 dma_free_coherent(ohci->card.device, PAGE_SIZE,
430 buffer, buffer_bus);
427 ar_context_add_page(ctx); 431 ar_context_add_page(ctx);
428 } else { 432 } else {
429 buffer = ctx->pointer; 433 buffer = ctx->pointer;
@@ -532,7 +536,7 @@ static int
532context_add_buffer(struct context *ctx) 536context_add_buffer(struct context *ctx)
533{ 537{
534 struct descriptor_buffer *desc; 538 struct descriptor_buffer *desc;
535 dma_addr_t bus_addr; 539 dma_addr_t uninitialized_var(bus_addr);
536 int offset; 540 int offset;
537 541
538 /* 542 /*
@@ -1022,13 +1026,14 @@ static void bus_reset_tasklet(unsigned long data)
1022 */ 1026 */
1023 1027
1024 self_id_count = (reg_read(ohci, OHCI1394_SelfIDCount) >> 3) & 0x3ff; 1028 self_id_count = (reg_read(ohci, OHCI1394_SelfIDCount) >> 3) & 0x3ff;
1025 generation = (le32_to_cpu(ohci->self_id_cpu[0]) >> 16) & 0xff; 1029 generation = (cond_le32_to_cpu(ohci->self_id_cpu[0]) >> 16) & 0xff;
1026 rmb(); 1030 rmb();
1027 1031
1028 for (i = 1, j = 0; j < self_id_count; i += 2, j++) { 1032 for (i = 1, j = 0; j < self_id_count; i += 2, j++) {
1029 if (ohci->self_id_cpu[i] != ~ohci->self_id_cpu[i + 1]) 1033 if (ohci->self_id_cpu[i] != ~ohci->self_id_cpu[i + 1])
1030 fw_error("inconsistent self IDs\n"); 1034 fw_error("inconsistent self IDs\n");
1031 ohci->self_id_buffer[j] = le32_to_cpu(ohci->self_id_cpu[i]); 1035 ohci->self_id_buffer[j] =
1036 cond_le32_to_cpu(ohci->self_id_cpu[i]);
1032 } 1037 }
1033 rmb(); 1038 rmb();
1034 1039
@@ -1316,7 +1321,7 @@ ohci_set_config_rom(struct fw_card *card, u32 *config_rom, size_t length)
1316 unsigned long flags; 1321 unsigned long flags;
1317 int retval = -EBUSY; 1322 int retval = -EBUSY;
1318 __be32 *next_config_rom; 1323 __be32 *next_config_rom;
1319 dma_addr_t next_config_rom_bus; 1324 dma_addr_t uninitialized_var(next_config_rom_bus);
1320 1325
1321 ohci = fw_ohci(card); 1326 ohci = fw_ohci(card);
1322 1327
@@ -1487,7 +1492,7 @@ static int handle_ir_dualbuffer_packet(struct context *context,
1487 void *p, *end; 1492 void *p, *end;
1488 int i; 1493 int i;
1489 1494
1490 if (db->first_res_count > 0 && db->second_res_count > 0) { 1495 if (db->first_res_count != 0 && db->second_res_count != 0) {
1491 if (ctx->excess_bytes <= le16_to_cpu(db->second_req_count)) { 1496 if (ctx->excess_bytes <= le16_to_cpu(db->second_req_count)) {
1492 /* This descriptor isn't done yet, stop iteration. */ 1497 /* This descriptor isn't done yet, stop iteration. */
1493 return 0; 1498 return 0;
@@ -1513,7 +1518,7 @@ static int handle_ir_dualbuffer_packet(struct context *context,
1513 memcpy(ctx->header + i + 4, p + 8, ctx->base.header_size - 4); 1518 memcpy(ctx->header + i + 4, p + 8, ctx->base.header_size - 4);
1514 i += ctx->base.header_size; 1519 i += ctx->base.header_size;
1515 ctx->excess_bytes += 1520 ctx->excess_bytes +=
1516 (le32_to_cpu(*(u32 *)(p + 4)) >> 16) & 0xffff; 1521 (le32_to_cpu(*(__le32 *)(p + 4)) >> 16) & 0xffff;
1517 p += ctx->base.header_size + 4; 1522 p += ctx->base.header_size + 4;
1518 } 1523 }
1519 ctx->header_length = i; 1524 ctx->header_length = i;
@@ -2048,6 +2053,18 @@ pci_probe(struct pci_dev *dev, const struct pci_device_id *ent)
2048 int err; 2053 int err;
2049 size_t size; 2054 size_t size;
2050 2055
2056#ifdef CONFIG_PPC_PMAC
2057 /* Necessary on some machines if fw-ohci was loaded/ unloaded before */
2058 if (machine_is(powermac)) {
2059 struct device_node *ofn = pci_device_to_OF_node(dev);
2060
2061 if (ofn) {
2062 pmac_call_feature(PMAC_FTR_1394_CABLE_POWER, ofn, 0, 1);
2063 pmac_call_feature(PMAC_FTR_1394_ENABLE, ofn, 0, 1);
2064 }
2065 }
2066#endif /* CONFIG_PPC_PMAC */
2067
2051 ohci = kzalloc(sizeof(*ohci), GFP_KERNEL); 2068 ohci = kzalloc(sizeof(*ohci), GFP_KERNEL);
2052 if (ohci == NULL) { 2069 if (ohci == NULL) {
2053 fw_error("Could not malloc fw_ohci data.\n"); 2070 fw_error("Could not malloc fw_ohci data.\n");
@@ -2066,6 +2083,10 @@ pci_probe(struct pci_dev *dev, const struct pci_device_id *ent)
2066 pci_write_config_dword(dev, OHCI1394_PCI_HCI_Control, 0); 2083 pci_write_config_dword(dev, OHCI1394_PCI_HCI_Control, 0);
2067 pci_set_drvdata(dev, ohci); 2084 pci_set_drvdata(dev, ohci);
2068 2085
2086#if defined(CONFIG_PPC_PMAC) && defined(CONFIG_PPC32)
2087 ohci->old_uninorth = dev->vendor == PCI_VENDOR_ID_APPLE &&
2088 dev->device == PCI_DEVICE_ID_APPLE_UNI_N_FW;
2089#endif
2069 spin_lock_init(&ohci->lock); 2090 spin_lock_init(&ohci->lock);
2070 2091
2071 tasklet_init(&ohci->bus_reset_tasklet, 2092 tasklet_init(&ohci->bus_reset_tasklet,
@@ -2182,6 +2203,19 @@ static void pci_remove(struct pci_dev *dev)
2182 pci_disable_device(dev); 2203 pci_disable_device(dev);
2183 fw_card_put(&ohci->card); 2204 fw_card_put(&ohci->card);
2184 2205
2206#ifdef CONFIG_PPC_PMAC
2207 /* On UniNorth, power down the cable and turn off the chip clock
2208 * to save power on laptops */
2209 if (machine_is(powermac)) {
2210 struct device_node *ofn = pci_device_to_OF_node(dev);
2211
2212 if (ofn) {
2213 pmac_call_feature(PMAC_FTR_1394_ENABLE, ofn, 0, 0);
2214 pmac_call_feature(PMAC_FTR_1394_CABLE_POWER, ofn, 0, 0);
2215 }
2216 }
2217#endif /* CONFIG_PPC_PMAC */
2218
2185 fw_notify("Removed fw-ohci device.\n"); 2219 fw_notify("Removed fw-ohci device.\n");
2186} 2220}
2187 2221
@@ -2202,6 +2236,16 @@ static int pci_suspend(struct pci_dev *pdev, pm_message_t state)
2202 if (err) 2236 if (err)
2203 fw_error("pci_set_power_state failed with %d\n", err); 2237 fw_error("pci_set_power_state failed with %d\n", err);
2204 2238
2239/* PowerMac suspend code comes last */
2240#ifdef CONFIG_PPC_PMAC
2241 if (machine_is(powermac)) {
2242 struct device_node *ofn = pci_device_to_OF_node(pdev);
2243
2244 if (ofn)
2245 pmac_call_feature(PMAC_FTR_1394_ENABLE, ofn, 0, 0);
2246 }
2247#endif /* CONFIG_PPC_PMAC */
2248
2205 return 0; 2249 return 0;
2206} 2250}
2207 2251
@@ -2210,6 +2254,16 @@ static int pci_resume(struct pci_dev *pdev)
2210 struct fw_ohci *ohci = pci_get_drvdata(pdev); 2254 struct fw_ohci *ohci = pci_get_drvdata(pdev);
2211 int err; 2255 int err;
2212 2256
2257/* PowerMac resume code comes first */
2258#ifdef CONFIG_PPC_PMAC
2259 if (machine_is(powermac)) {
2260 struct device_node *ofn = pci_device_to_OF_node(pdev);
2261
2262 if (ofn)
2263 pmac_call_feature(PMAC_FTR_1394_ENABLE, ofn, 0, 1);
2264 }
2265#endif /* CONFIG_PPC_PMAC */
2266
2213 pci_set_power_state(pdev, PCI_D0); 2267 pci_set_power_state(pdev, PCI_D0);
2214 pci_restore_state(pdev); 2268 pci_restore_state(pdev);
2215 err = pci_enable_device(pdev); 2269 err = pci_enable_device(pdev);
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c
index 03069a454c07..62b4e47d0cc0 100644
--- a/drivers/firewire/fw-sbp2.c
+++ b/drivers/firewire/fw-sbp2.c
@@ -173,6 +173,7 @@ struct sbp2_target {
173#define SBP2_ORB_TIMEOUT 2000U /* Timeout in ms */ 173#define SBP2_ORB_TIMEOUT 2000U /* Timeout in ms */
174#define SBP2_ORB_NULL 0x80000000 174#define SBP2_ORB_NULL 0x80000000
175#define SBP2_MAX_SG_ELEMENT_LENGTH 0xf000 175#define SBP2_MAX_SG_ELEMENT_LENGTH 0xf000
176#define SBP2_RETRY_LIMIT 0xf /* 15 retries */
176 177
177#define SBP2_DIRECTION_TO_MEDIA 0x0 178#define SBP2_DIRECTION_TO_MEDIA 0x0
178#define SBP2_DIRECTION_FROM_MEDIA 0x1 179#define SBP2_DIRECTION_FROM_MEDIA 0x1
@@ -330,6 +331,11 @@ static const struct {
330 .model = ~0, 331 .model = ~0,
331 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS, 332 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS,
332 }, 333 },
334 /* Datafab MD2-FW2 with Symbios/LSILogic SYM13FW500 bridge */ {
335 .firmware_revision = 0x002600,
336 .model = ~0,
337 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS,
338 },
333 339
334 /* 340 /*
335 * There are iPods (2nd gen, 3rd gen) with model_id == 0, but 341 * There are iPods (2nd gen, 3rd gen) with model_id == 0, but
@@ -812,6 +818,30 @@ static void sbp2_target_put(struct sbp2_target *tgt)
812 kref_put(&tgt->kref, sbp2_release_target); 818 kref_put(&tgt->kref, sbp2_release_target);
813} 819}
814 820
821static void
822complete_set_busy_timeout(struct fw_card *card, int rcode,
823 void *payload, size_t length, void *done)
824{
825 complete(done);
826}
827
828static void sbp2_set_busy_timeout(struct sbp2_logical_unit *lu)
829{
830 struct fw_device *device = fw_device(lu->tgt->unit->device.parent);
831 DECLARE_COMPLETION_ONSTACK(done);
832 struct fw_transaction t;
833 static __be32 busy_timeout;
834
835 /* FIXME: we should try to set dual-phase cycle_limit too */
836 busy_timeout = cpu_to_be32(SBP2_RETRY_LIMIT);
837
838 fw_send_request(device->card, &t, TCODE_WRITE_QUADLET_REQUEST,
839 lu->tgt->node_id, lu->generation, device->max_speed,
840 CSR_REGISTER_BASE + CSR_BUSY_TIMEOUT, &busy_timeout,
841 sizeof(busy_timeout), complete_set_busy_timeout, &done);
842 wait_for_completion(&done);
843}
844
815static void sbp2_reconnect(struct work_struct *work); 845static void sbp2_reconnect(struct work_struct *work);
816 846
817static void sbp2_login(struct work_struct *work) 847static void sbp2_login(struct work_struct *work)
@@ -864,10 +894,8 @@ static void sbp2_login(struct work_struct *work)
864 fw_notify("%s: logged in to LUN %04x (%d retries)\n", 894 fw_notify("%s: logged in to LUN %04x (%d retries)\n",
865 tgt->bus_id, lu->lun, lu->retries); 895 tgt->bus_id, lu->lun, lu->retries);
866 896
867#if 0 897 /* set appropriate retry limit(s) in BUSY_TIMEOUT register */
868 /* FIXME: The linux1394 sbp2 does this last step. */ 898 sbp2_set_busy_timeout(lu);
869 sbp2_set_busy_timeout(scsi_id);
870#endif
871 899
872 PREPARE_DELAYED_WORK(&lu->work, sbp2_reconnect); 900 PREPARE_DELAYED_WORK(&lu->work, sbp2_reconnect);
873 sbp2_agent_reset(lu); 901 sbp2_agent_reset(lu);
diff --git a/drivers/firewire/fw-topology.c b/drivers/firewire/fw-topology.c
index e47bb040197a..d2c7a3d7e1cb 100644
--- a/drivers/firewire/fw-topology.c
+++ b/drivers/firewire/fw-topology.c
@@ -21,6 +21,7 @@
21#include <linux/module.h> 21#include <linux/module.h>
22#include <linux/wait.h> 22#include <linux/wait.h>
23#include <linux/errno.h> 23#include <linux/errno.h>
24#include <asm/bug.h>
24#include <asm/system.h> 25#include <asm/system.h>
25#include "fw-transaction.h" 26#include "fw-transaction.h"
26#include "fw-topology.h" 27#include "fw-topology.h"
@@ -424,8 +425,8 @@ update_tree(struct fw_card *card, struct fw_node *root)
424 node1 = fw_node(list1.next); 425 node1 = fw_node(list1.next);
425 426
426 while (&node0->link != &list0) { 427 while (&node0->link != &list0) {
428 WARN_ON(node0->port_count != node1->port_count);
427 429
428 /* assert(node0->port_count == node1->port_count); */
429 if (node0->link_on && !node1->link_on) 430 if (node0->link_on && !node1->link_on)
430 event = FW_NODE_LINK_OFF; 431 event = FW_NODE_LINK_OFF;
431 else if (!node0->link_on && node1->link_on) 432 else if (!node0->link_on && node1->link_on)
diff --git a/drivers/firewire/fw-transaction.c b/drivers/firewire/fw-transaction.c
index 7fcc59dedf08..e6f1bda38940 100644
--- a/drivers/firewire/fw-transaction.c
+++ b/drivers/firewire/fw-transaction.c
@@ -736,6 +736,12 @@ fw_core_handle_response(struct fw_card *card, struct fw_packet *p)
736 break; 736 break;
737 } 737 }
738 738
739 /*
740 * The response handler may be executed while the request handler
741 * is still pending. Cancel the request handler.
742 */
743 card->driver->cancel_packet(card, &t->packet);
744
739 t->callback(card, rcode, data, data_length, t->callback_data); 745 t->callback(card, rcode, data, data_length, t->callback_data);
740} 746}
741EXPORT_SYMBOL(fw_core_handle_response); 747EXPORT_SYMBOL(fw_core_handle_response);
@@ -751,7 +757,7 @@ handle_topology_map(struct fw_card *card, struct fw_request *request,
751 void *payload, size_t length, void *callback_data) 757 void *payload, size_t length, void *callback_data)
752{ 758{
753 int i, start, end; 759 int i, start, end;
754 u32 *map; 760 __be32 *map;
755 761
756 if (!TCODE_IS_READ_REQUEST(tcode)) { 762 if (!TCODE_IS_READ_REQUEST(tcode)) {
757 fw_send_response(card, request, RCODE_TYPE_ERROR); 763 fw_send_response(card, request, RCODE_TYPE_ERROR);
diff --git a/drivers/firewire/fw-transaction.h b/drivers/firewire/fw-transaction.h
index 09cb72870454..a43bb22912f9 100644
--- a/drivers/firewire/fw-transaction.h
+++ b/drivers/firewire/fw-transaction.h
@@ -86,12 +86,12 @@
86static inline void 86static inline void
87fw_memcpy_from_be32(void *_dst, void *_src, size_t size) 87fw_memcpy_from_be32(void *_dst, void *_src, size_t size)
88{ 88{
89 u32 *dst = _dst; 89 u32 *dst = _dst;
90 u32 *src = _src; 90 __be32 *src = _src;
91 int i; 91 int i;
92 92
93 for (i = 0; i < size / 4; i++) 93 for (i = 0; i < size / 4; i++)
94 dst[i] = cpu_to_be32(src[i]); 94 dst[i] = be32_to_cpu(src[i]);
95} 95}
96 96
97static inline void 97static inline void
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index d73a768e176e..f0b00ec1e47e 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -968,7 +968,7 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i
968 size--; 968 size--;
969 } 969 }
970 970
971 /* dump the report descriptor */ 971 /* dump the report */
972 dbg_hid("report %d (size %u) = ", n, size); 972 dbg_hid("report %d (size %u) = ", n, size);
973 for (i = 0; i < size; i++) 973 for (i = 0; i < size; i++)
974 dbg_hid_line(" %02x", data[i]); 974 dbg_hid_line(" %02x", data[i]);
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 5a38fb27d69f..c3eb3f13e2ca 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -98,18 +98,16 @@ struct hidinput_key_translation {
98 98
99static struct hidinput_key_translation apple_fn_keys[] = { 99static struct hidinput_key_translation apple_fn_keys[] = {
100 { KEY_BACKSPACE, KEY_DELETE }, 100 { KEY_BACKSPACE, KEY_DELETE },
101 { KEY_F1, KEY_BRIGHTNESSDOWN, APPLE_FLAG_FKEY }, 101 { KEY_F1, KEY_BRIGHTNESSDOWN, APPLE_FLAG_FKEY },
102 { KEY_F2, KEY_BRIGHTNESSUP, APPLE_FLAG_FKEY }, 102 { KEY_F2, KEY_BRIGHTNESSUP, APPLE_FLAG_FKEY },
103 { KEY_F3, KEY_CYCLEWINDOWS, APPLE_FLAG_FKEY }, /* Exposé */ 103 { KEY_F3, KEY_FN_F5, APPLE_FLAG_FKEY }, /* Exposé */
104 { KEY_F4, KEY_FN_F4, APPLE_FLAG_FKEY }, /* Dashboard */ 104 { KEY_F4, KEY_FN_F4, APPLE_FLAG_FKEY }, /* Dashboard */
105 { KEY_F5, KEY_FN_F5 }, 105 { KEY_F7, KEY_PREVIOUSSONG, APPLE_FLAG_FKEY },
106 { KEY_F6, KEY_FN_F6 }, 106 { KEY_F8, KEY_PLAYPAUSE, APPLE_FLAG_FKEY },
107 { KEY_F7, KEY_BACK, APPLE_FLAG_FKEY }, 107 { KEY_F9, KEY_NEXTSONG, APPLE_FLAG_FKEY },
108 { KEY_F8, KEY_PLAYPAUSE, APPLE_FLAG_FKEY }, 108 { KEY_F10, KEY_MUTE, APPLE_FLAG_FKEY },
109 { KEY_F9, KEY_FORWARD, APPLE_FLAG_FKEY }, 109 { KEY_F11, KEY_VOLUMEDOWN, APPLE_FLAG_FKEY },
110 { KEY_F10, KEY_MUTE, APPLE_FLAG_FKEY }, 110 { KEY_F12, KEY_VOLUMEUP, APPLE_FLAG_FKEY },
111 { KEY_F11, KEY_VOLUMEDOWN, APPLE_FLAG_FKEY },
112 { KEY_F12, KEY_VOLUMEUP, APPLE_FLAG_FKEY },
113 { KEY_UP, KEY_PAGEUP }, 111 { KEY_UP, KEY_PAGEUP },
114 { KEY_DOWN, KEY_PAGEDOWN }, 112 { KEY_DOWN, KEY_PAGEDOWN },
115 { KEY_LEFT, KEY_HOME }, 113 { KEY_LEFT, KEY_HOME },
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index b38e559b7a46..d95979f0e028 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -278,7 +278,7 @@ static int hid_submit_ctrl(struct hid_device *hid)
278 usbhid->urbctrl->pipe = usb_rcvctrlpipe(hid_to_usb_dev(hid), 0); 278 usbhid->urbctrl->pipe = usb_rcvctrlpipe(hid_to_usb_dev(hid), 0);
279 maxpacket = usb_maxpacket(hid_to_usb_dev(hid), usbhid->urbctrl->pipe, 0); 279 maxpacket = usb_maxpacket(hid_to_usb_dev(hid), usbhid->urbctrl->pipe, 0);
280 if (maxpacket > 0) { 280 if (maxpacket > 0) {
281 padlen = (len + maxpacket - 1) / maxpacket; 281 padlen = DIV_ROUND_UP(len, maxpacket);
282 padlen *= maxpacket; 282 padlen *= maxpacket;
283 if (padlen > usbhid->bufsize) 283 if (padlen > usbhid->bufsize)
284 padlen = usbhid->bufsize; 284 padlen = usbhid->bufsize;
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
index e6d05f6b1c1c..e29a057cbea2 100644
--- a/drivers/hid/usbhid/hid-quirks.c
+++ b/drivers/hid/usbhid/hid-quirks.c
@@ -345,6 +345,9 @@
345#define USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR 0x0400 345#define USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR 0x0400
346#define USB_DEVICE_ID_N_S_HARMONY 0xc359 346#define USB_DEVICE_ID_N_S_HARMONY 0xc359
347 347
348#define USB_VENDOR_ID_NATSU 0x08b7
349#define USB_DEVICE_ID_NATSU_GAMEPAD 0x0001
350
348#define USB_VENDOR_ID_NEC 0x073e 351#define USB_VENDOR_ID_NEC 0x073e
349#define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301 352#define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301
350 353
@@ -426,6 +429,7 @@ static const struct hid_blacklist {
426 { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, 429 { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },
427 { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, 430 { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },
428 { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, 431 { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },
432 { USB_VENDOR_ID_NATSU, USB_DEVICE_ID_NATSU_GAMEPAD, HID_QUIRK_BADPAD },
429 { USB_VENDOR_ID_NEC, USB_DEVICE_ID_NEC_USB_GAME_PAD, HID_QUIRK_BADPAD }, 433 { USB_VENDOR_ID_NEC, USB_DEVICE_ID_NEC_USB_GAME_PAD, HID_QUIRK_BADPAD },
430 { USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD, HID_QUIRK_BADPAD }, 434 { USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD, HID_QUIRK_BADPAD },
431 { USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD, HID_QUIRK_BADPAD }, 435 { USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD, HID_QUIRK_BADPAD },
@@ -624,7 +628,7 @@ static const struct hid_blacklist {
624 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, 628 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD },
625 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS, HID_QUIRK_APPLE_HAS_FN }, 629 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS, HID_QUIRK_APPLE_HAS_FN },
626 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 630 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
627 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD }, 631 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
628 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 632 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
629 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI, HID_QUIRK_APPLE_HAS_FN }, 633 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI, HID_QUIRK_APPLE_HAS_FN },
630 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, 634 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD },
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 368879ff5d8c..4dc76bc45c9d 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -337,8 +337,9 @@ config SENSORS_IBMPEX
337 help 337 help
338 If you say yes here you get support for the temperature and 338 If you say yes here you get support for the temperature and
339 power sensors in various IBM System X servers that support 339 power sensors in various IBM System X servers that support
340 PowerExecutive. So far this includes the x3550, x3650, x3655, 340 PowerExecutive. So far this includes the x3350, x3550, x3650,
341 x3755, and certain HS20 blades. 341 x3655, and x3755; the x3800, x3850, and x3950 models that have
342 PCI Express; and some of the HS2x, LS2x, and QS2x blades.
342 343
343 This driver can also be built as a module. If so, the module 344 This driver can also be built as a module. If so, the module
344 will be called ibmpex. 345 will be called ibmpex.
diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c
index 9c9cdb0685e4..4e9b19c6732f 100644
--- a/drivers/hwmon/ibmpex.c
+++ b/drivers/hwmon/ibmpex.c
@@ -327,10 +327,14 @@ static int is_temp_sensor(const char *sensor_id, int len)
327 return 0; 327 return 0;
328} 328}
329 329
330static int power_sensor_multiplier(const char *sensor_id, int len) 330static int power_sensor_multiplier(struct ibmpex_bmc_data *data,
331 const char *sensor_id, int len)
331{ 332{
332 int i; 333 int i;
333 334
335 if (data->sensor_major == 2)
336 return 1000000;
337
334 for (i = PEX_SENSOR_TYPE_LEN; i < len - 1; i++) 338 for (i = PEX_SENSOR_TYPE_LEN; i < len - 1; i++)
335 if (!memcmp(&sensor_id[i], watt_sensor_sig, PEX_MULT_LEN)) 339 if (!memcmp(&sensor_id[i], watt_sensor_sig, PEX_MULT_LEN))
336 return 1000000; 340 return 1000000;
@@ -398,14 +402,15 @@ static int ibmpex_find_sensors(struct ibmpex_bmc_data *data)
398 num_power++; 402 num_power++;
399 sensor_counter = num_power; 403 sensor_counter = num_power;
400 data->sensors[i].multiplier = 404 data->sensors[i].multiplier =
401 power_sensor_multiplier(data->rx_msg_data, 405 power_sensor_multiplier(data,
402 data->rx_msg_len); 406 data->rx_msg_data,
407 data->rx_msg_len);
403 } else if (is_temp_sensor(data->rx_msg_data, 408 } else if (is_temp_sensor(data->rx_msg_data,
404 data->rx_msg_len)) { 409 data->rx_msg_len)) {
405 sensor_type = TEMP_SENSOR; 410 sensor_type = TEMP_SENSOR;
406 num_temp++; 411 num_temp++;
407 sensor_counter = num_temp; 412 sensor_counter = num_temp;
408 data->sensors[i].multiplier = 1; 413 data->sensors[i].multiplier = 1000;
409 } else 414 } else
410 continue; 415 continue;
411 416
diff --git a/drivers/ide/ide-lib.c b/drivers/ide/ide-lib.c
index 29e2c9719c30..7031a8dcf692 100644
--- a/drivers/ide/ide-lib.c
+++ b/drivers/ide/ide-lib.c
@@ -122,7 +122,6 @@ static struct ide_pio_info {
122 const char *name; 122 const char *name;
123 int pio; 123 int pio;
124} ide_pio_blacklist [] = { 124} ide_pio_blacklist [] = {
125/* { "Conner Peripherals 1275MB - CFS1275A", 4 }, */
126 { "Conner Peripherals 540MB - CFS540A", 3 }, 125 { "Conner Peripherals 540MB - CFS540A", 3 },
127 126
128 { "WDC AC2700", 3 }, 127 { "WDC AC2700", 3 },
@@ -138,10 +137,8 @@ static struct ide_pio_info {
138 { "WDC AC1170", 1 }, 137 { "WDC AC1170", 1 },
139 { "WDC AC1210", 1 }, 138 { "WDC AC1210", 1 },
140 { "WDC AC280", 0 }, 139 { "WDC AC280", 0 },
141/* { "WDC AC21000", 4 }, */
142 { "WDC AC31000", 3 }, 140 { "WDC AC31000", 3 },
143 { "WDC AC31200", 3 }, 141 { "WDC AC31200", 3 },
144/* { "WDC AC31600", 4 }, */
145 142
146 { "Maxtor 7131 AT", 1 }, 143 { "Maxtor 7131 AT", 1 },
147 { "Maxtor 7171 AT", 1 }, 144 { "Maxtor 7171 AT", 1 },
@@ -155,13 +152,6 @@ static struct ide_pio_info {
155 { "SAMSUNG SHD-3122A", 1 }, 152 { "SAMSUNG SHD-3122A", 1 },
156 { "SAMSUNG SHD-3172A", 1 }, 153 { "SAMSUNG SHD-3172A", 1 },
157 154
158/* { "ST51080A", 4 },
159 * { "ST51270A", 4 },
160 * { "ST31220A", 4 },
161 * { "ST31640A", 4 },
162 * { "ST32140A", 4 },
163 * { "ST3780A", 4 },
164 */
165 { "ST5660A", 3 }, 155 { "ST5660A", 3 },
166 { "ST3660A", 3 }, 156 { "ST3660A", 3 },
167 { "ST3630A", 3 }, 157 { "ST3630A", 3 },
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
index 43e0e0557776..0598ecfd5f37 100644
--- a/drivers/ide/ide-tape.c
+++ b/drivers/ide/ide-tape.c
@@ -3765,11 +3765,6 @@ static int ide_tape_probe(ide_drive_t *drive)
3765 g->fops = &idetape_block_ops; 3765 g->fops = &idetape_block_ops;
3766 ide_register_region(g); 3766 ide_register_region(g);
3767 3767
3768 printk(KERN_WARNING "It is possible that this driver does not have any"
3769 " users anymore and, as a result, it will be REMOVED soon."
3770 " Please notify Bart <bzolnier@gmail.com> or Boris"
3771 " <petkovbb@gmail.com> in case you still need it.\n");
3772
3773 return 0; 3768 return 0;
3774 3769
3775out_free_tape: 3770out_free_tape:
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
index 0518a2e948cf..4c86a8d84b4c 100644
--- a/drivers/ide/ide-taskfile.c
+++ b/drivers/ide/ide-taskfile.c
@@ -423,6 +423,25 @@ void task_end_request(ide_drive_t *drive, struct request *rq, u8 stat)
423} 423}
424 424
425/* 425/*
426 * We got an interrupt on a task_in case, but no errors and no DRQ.
427 *
428 * It might be a spurious irq (shared irq), but it might be a
429 * command that had no output.
430 */
431static ide_startstop_t task_in_unexpected(ide_drive_t *drive, struct request *rq, u8 stat)
432{
433 /* Command all done? */
434 if (OK_STAT(stat, READY_STAT, BUSY_STAT)) {
435 task_end_request(drive, rq, stat);
436 return ide_stopped;
437 }
438
439 /* Assume it was a spurious irq */
440 ide_set_handler(drive, &task_in_intr, WAIT_WORSTCASE, NULL);
441 return ide_started;
442}
443
444/*
426 * Handler for command with PIO data-in phase (Read/Read Multiple). 445 * Handler for command with PIO data-in phase (Read/Read Multiple).
427 */ 446 */
428static ide_startstop_t task_in_intr(ide_drive_t *drive) 447static ide_startstop_t task_in_intr(ide_drive_t *drive)
@@ -431,18 +450,17 @@ static ide_startstop_t task_in_intr(ide_drive_t *drive)
431 struct request *rq = HWGROUP(drive)->rq; 450 struct request *rq = HWGROUP(drive)->rq;
432 u8 stat = ide_read_status(drive); 451 u8 stat = ide_read_status(drive);
433 452
434 /* new way for dealing with premature shared PCI interrupts */ 453 /* Error? */
435 if (!OK_STAT(stat, DRQ_STAT, BAD_R_STAT)) { 454 if (stat & ERR_STAT)
436 if (stat & (ERR_STAT | DRQ_STAT)) 455 return task_error(drive, rq, __FUNCTION__, stat);
437 return task_error(drive, rq, __FUNCTION__, stat); 456
438 /* No data yet, so wait for another IRQ. */ 457 /* Didn't want any data? Odd. */
439 ide_set_handler(drive, &task_in_intr, WAIT_WORSTCASE, NULL); 458 if (!(stat & DRQ_STAT))
440 return ide_started; 459 return task_in_unexpected(drive, rq, stat);
441 }
442 460
443 ide_pio_datablock(drive, rq, 0); 461 ide_pio_datablock(drive, rq, 0);
444 462
445 /* If it was the last datablock check status and finish transfer. */ 463 /* Are we done? Check status and finish transfer. */
446 if (!hwif->nleft) { 464 if (!hwif->nleft) {
447 stat = wait_drive_not_busy(drive); 465 stat = wait_drive_not_busy(drive);
448 if (!OK_STAT(stat, 0, BAD_STAT)) 466 if (!OK_STAT(stat, 0, BAD_STAT))
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index 9976f9d627d4..fc69fe2e3ec0 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -1258,7 +1258,7 @@ static int __init ide_setup(char *s)
1258 drive = &hwif->drives[unit]; 1258 drive = &hwif->drives[unit];
1259 if (strncmp(s + 4, "ide-", 4) == 0) { 1259 if (strncmp(s + 4, "ide-", 4) == 0) {
1260 strlcpy(drive->driver_req, s + 4, sizeof(drive->driver_req)); 1260 strlcpy(drive->driver_req, s + 4, sizeof(drive->driver_req));
1261 goto done; 1261 goto obsolete_option;
1262 } 1262 }
1263 switch (match_parm(&s[3], hd_words, vals, 3)) { 1263 switch (match_parm(&s[3], hd_words, vals, 3)) {
1264 case -1: /* "none" */ 1264 case -1: /* "none" */
@@ -1290,13 +1290,13 @@ static int __init ide_setup(char *s)
1290 goto done; 1290 goto done;
1291 case -12: /* "remap" */ 1291 case -12: /* "remap" */
1292 drive->remap_0_to_1 = 1; 1292 drive->remap_0_to_1 = 1;
1293 goto done; 1293 goto obsolete_option;
1294 case -13: /* "remap63" */ 1294 case -13: /* "remap63" */
1295 drive->sect0 = 63; 1295 drive->sect0 = 63;
1296 goto done; 1296 goto obsolete_option;
1297 case -14: /* "scsi" */ 1297 case -14: /* "scsi" */
1298 drive->scsi = 1; 1298 drive->scsi = 1;
1299 goto done; 1299 goto obsolete_option;
1300 case 3: /* cyl,head,sect */ 1300 case 3: /* cyl,head,sect */
1301 drive->media = ide_disk; 1301 drive->media = ide_disk;
1302 drive->ready_stat = READY_STAT; 1302 drive->ready_stat = READY_STAT;
@@ -1370,32 +1370,32 @@ static int __init ide_setup(char *s)
1370#ifdef CONFIG_BLK_DEV_ALI14XX 1370#ifdef CONFIG_BLK_DEV_ALI14XX
1371 case -17: /* "ali14xx" */ 1371 case -17: /* "ali14xx" */
1372 probe_ali14xx = 1; 1372 probe_ali14xx = 1;
1373 goto done; 1373 goto obsolete_option;
1374#endif 1374#endif
1375#ifdef CONFIG_BLK_DEV_UMC8672 1375#ifdef CONFIG_BLK_DEV_UMC8672
1376 case -16: /* "umc8672" */ 1376 case -16: /* "umc8672" */
1377 probe_umc8672 = 1; 1377 probe_umc8672 = 1;
1378 goto done; 1378 goto obsolete_option;
1379#endif 1379#endif
1380#ifdef CONFIG_BLK_DEV_DTC2278 1380#ifdef CONFIG_BLK_DEV_DTC2278
1381 case -15: /* "dtc2278" */ 1381 case -15: /* "dtc2278" */
1382 probe_dtc2278 = 1; 1382 probe_dtc2278 = 1;
1383 goto done; 1383 goto obsolete_option;
1384#endif 1384#endif
1385#ifdef CONFIG_BLK_DEV_CMD640 1385#ifdef CONFIG_BLK_DEV_CMD640
1386 case -14: /* "cmd640_vlb" */ 1386 case -14: /* "cmd640_vlb" */
1387 cmd640_vlb = 1; 1387 cmd640_vlb = 1;
1388 goto done; 1388 goto obsolete_option;
1389#endif 1389#endif
1390#ifdef CONFIG_BLK_DEV_HT6560B 1390#ifdef CONFIG_BLK_DEV_HT6560B
1391 case -13: /* "ht6560b" */ 1391 case -13: /* "ht6560b" */
1392 probe_ht6560b = 1; 1392 probe_ht6560b = 1;
1393 goto done; 1393 goto obsolete_option;
1394#endif 1394#endif
1395#ifdef CONFIG_BLK_DEV_QD65XX 1395#ifdef CONFIG_BLK_DEV_QD65XX
1396 case -12: /* "qd65xx" */ 1396 case -12: /* "qd65xx" */
1397 probe_qd65xx = 1; 1397 probe_qd65xx = 1;
1398 goto done; 1398 goto obsolete_option;
1399#endif 1399#endif
1400#ifdef CONFIG_BLK_DEV_4DRIVES 1400#ifdef CONFIG_BLK_DEV_4DRIVES
1401 case -11: /* "four" drives on one set of ports */ 1401 case -11: /* "four" drives on one set of ports */
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c
index 9e2b1964d71a..f53f72daae34 100644
--- a/drivers/ieee1394/sbp2.c
+++ b/drivers/ieee1394/sbp2.c
@@ -376,6 +376,11 @@ static const struct {
376 .model_id = SBP2_ROM_VALUE_WILDCARD, 376 .model_id = SBP2_ROM_VALUE_WILDCARD,
377 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS, 377 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS,
378 }, 378 },
379 /* Datafab MD2-FW2 with Symbios/LSILogic SYM13FW500 bridge */ {
380 .firmware_revision = 0x002600,
381 .model_id = SBP2_ROM_VALUE_WILDCARD,
382 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS,
383 },
379 /* iPod 4th generation */ { 384 /* iPod 4th generation */ {
380 .firmware_revision = 0x0a2700, 385 .firmware_revision = 0x0a2700,
381 .model_id = 0x000021, 386 .model_id = 0x000021,
diff --git a/drivers/input/misc/cobalt_btns.c b/drivers/input/misc/cobalt_btns.c
index 4833b1a82623..5511ef006a66 100644
--- a/drivers/input/misc/cobalt_btns.c
+++ b/drivers/input/misc/cobalt_btns.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Cobalt button interface driver. 2 * Cobalt button interface driver.
3 * 3 *
4 * Copyright (C) 2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> 4 * Copyright (C) 2007-2008 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by 7 * it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
15 * 15 *
16 * You should have received a copy of the GNU General Public License 16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software 17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */ 19 */
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/input-polldev.h> 21#include <linux/input-polldev.h>
@@ -55,7 +55,7 @@ static void handle_buttons(struct input_polled_dev *dev)
55 status = ~readl(bdev->reg) >> 24; 55 status = ~readl(bdev->reg) >> 24;
56 56
57 for (i = 0; i < ARRAY_SIZE(bdev->keymap); i++) { 57 for (i = 0; i < ARRAY_SIZE(bdev->keymap); i++) {
58 if (status & (1UL << i)) { 58 if (status & (1U << i)) {
59 if (++bdev->count[i] == BUTTONS_COUNT_THRESHOLD) { 59 if (++bdev->count[i] == BUTTONS_COUNT_THRESHOLD) {
60 input_event(input, EV_MSC, MSC_SCAN, i); 60 input_event(input, EV_MSC, MSC_SCAN, i);
61 input_report_key(input, bdev->keymap[i], 1); 61 input_report_key(input, bdev->keymap[i], 1);
@@ -97,16 +97,16 @@ static int __devinit cobalt_buttons_probe(struct platform_device *pdev)
97 input->name = "Cobalt buttons"; 97 input->name = "Cobalt buttons";
98 input->phys = "cobalt/input0"; 98 input->phys = "cobalt/input0";
99 input->id.bustype = BUS_HOST; 99 input->id.bustype = BUS_HOST;
100 input->cdev.dev = &pdev->dev; 100 input->dev.parent = &pdev->dev;
101 101
102 input->keycode = pdev->keymap; 102 input->keycode = bdev->keymap;
103 input->keycodemax = ARRAY_SIZE(pdev->keymap); 103 input->keycodemax = ARRAY_SIZE(bdev->keymap);
104 input->keycodesize = sizeof(unsigned short); 104 input->keycodesize = sizeof(unsigned short);
105 105
106 input_set_capability(input, EV_MSC, MSC_SCAN); 106 input_set_capability(input, EV_MSC, MSC_SCAN);
107 __set_bit(EV_KEY, input->evbit); 107 __set_bit(EV_KEY, input->evbit);
108 for (i = 0; i < ARRAY_SIZE(buttons_map); i++) 108 for (i = 0; i < ARRAY_SIZE(cobalt_map); i++)
109 __set_bit(input->keycode[i], input->keybit); 109 __set_bit(bdev->keymap[i], input->keybit);
110 __clear_bit(KEY_RESERVED, input->keybit); 110 __clear_bit(KEY_RESERVED, input->keybit);
111 111
112 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 112 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index b346a3b418ea..385e32bcf6a6 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -116,8 +116,8 @@ static void alps_process_packet(struct psmouse *psmouse)
116 } 116 }
117 117
118 if (priv->i->flags & ALPS_FW_BK_1) { 118 if (priv->i->flags & ALPS_FW_BK_1) {
119 back = packet[2] & 4; 119 back = packet[0] & 0x10;
120 forward = packet[0] & 0x10; 120 forward = packet[2] & 4;
121 } 121 }
122 122
123 if (priv->i->flags & ALPS_FW_BK_2) { 123 if (priv->i->flags & ALPS_FW_BK_2) {
@@ -483,6 +483,7 @@ int alps_init(struct psmouse *psmouse)
483 dev2->id.vendor = 0x0002; 483 dev2->id.vendor = 0x0002;
484 dev2->id.product = PSMOUSE_ALPS; 484 dev2->id.product = PSMOUSE_ALPS;
485 dev2->id.version = 0x0000; 485 dev2->id.version = 0x0000;
486 dev2->dev.parent = &psmouse->ps2dev.serio->dev;
486 487
487 dev2->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL); 488 dev2->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);
488 dev2->relbit[BIT_WORD(REL_X)] |= BIT_MASK(REL_X) | BIT_MASK(REL_Y); 489 dev2->relbit[BIT_WORD(REL_X)] |= BIT_MASK(REL_X) | BIT_MASK(REL_Y);
diff --git a/drivers/input/serio/i8042-snirm.h b/drivers/input/serio/i8042-snirm.h
new file mode 100644
index 000000000000..409a9341143d
--- /dev/null
+++ b/drivers/input/serio/i8042-snirm.h
@@ -0,0 +1,75 @@
1#ifndef _I8042_SNIRM_H
2#define _I8042_SNIRM_H
3
4#include <asm/sni.h>
5
6/*
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License version 2 as published by
9 * the Free Software Foundation.
10 */
11
12/*
13 * Names.
14 */
15
16#define I8042_KBD_PHYS_DESC "onboard/serio0"
17#define I8042_AUX_PHYS_DESC "onboard/serio1"
18#define I8042_MUX_PHYS_DESC "onboard/serio%d"
19
20/*
21 * IRQs.
22 */
23static int i8042_kbd_irq;
24static int i8042_aux_irq;
25#define I8042_KBD_IRQ i8042_kbd_irq
26#define I8042_AUX_IRQ i8042_aux_irq
27
28static void __iomem *kbd_iobase;
29
30#define I8042_COMMAND_REG (kbd_iobase + 0x64UL)
31#define I8042_DATA_REG (kbd_iobase + 0x60UL)
32
33static inline int i8042_read_data(void)
34{
35 return readb(kbd_iobase + 0x60UL);
36}
37
38static inline int i8042_read_status(void)
39{
40 return readb(kbd_iobase + 0x64UL);
41}
42
43static inline void i8042_write_data(int val)
44{
45 writeb(val, kbd_iobase + 0x60UL);
46}
47
48static inline void i8042_write_command(int val)
49{
50 writeb(val, kbd_iobase + 0x64UL);
51}
52static inline int i8042_platform_init(void)
53{
54 /* RM200 is strange ... */
55 if (sni_brd_type == SNI_BRD_RM200) {
56 kbd_iobase = ioremap(0x16000000, 4);
57 i8042_kbd_irq = 33;
58 i8042_aux_irq = 44;
59 } else {
60 kbd_iobase = ioremap(0x14000000, 4);
61 i8042_kbd_irq = 1;
62 i8042_aux_irq = 12;
63 }
64 if (!kbd_iobase)
65 return -ENOMEM;
66
67 return 0;
68}
69
70static inline void i8042_platform_exit(void)
71{
72
73}
74
75#endif /* _I8042_SNIRM_H */
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index 662e84482c26..60931aceb828 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -277,6 +277,13 @@ static struct dmi_system_id __initdata i8042_dmi_nomux_table[] = {
277 DMI_MATCH(DMI_PRODUCT_NAME, "M636/A737 platform"), 277 DMI_MATCH(DMI_PRODUCT_NAME, "M636/A737 platform"),
278 }, 278 },
279 }, 279 },
280 {
281 .ident = "Lenovo 3000 n100",
282 .matches = {
283 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
284 DMI_MATCH(DMI_PRODUCT_VERSION, "3000 N100"),
285 },
286 },
280 { } 287 { }
281}; 288};
282 289
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 2763394869d2..65a74cfc187b 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -1151,7 +1151,6 @@ static int __devinit i8042_setup_kbd(void)
1151static int __devinit i8042_probe(struct platform_device *dev) 1151static int __devinit i8042_probe(struct platform_device *dev)
1152{ 1152{
1153 int error; 1153 int error;
1154 char param;
1155 1154
1156 error = i8042_controller_selftest(); 1155 error = i8042_controller_selftest();
1157 if (error) 1156 if (error)
@@ -1174,7 +1173,7 @@ static int __devinit i8042_probe(struct platform_device *dev)
1174 } 1173 }
1175#ifdef CONFIG_X86 1174#ifdef CONFIG_X86
1176 if (i8042_dritek) { 1175 if (i8042_dritek) {
1177 param = 0x90; 1176 char param = 0x90;
1178 error = i8042_command(&param, 0x1059); 1177 error = i8042_command(&param, 0x1059);
1179 if (error) 1178 if (error)
1180 goto out_fail; 1179 goto out_fail;
diff --git a/drivers/input/serio/i8042.h b/drivers/input/serio/i8042.h
index c972e5d03a3f..cbc1beb66574 100644
--- a/drivers/input/serio/i8042.h
+++ b/drivers/input/serio/i8042.h
@@ -18,6 +18,8 @@
18#include "i8042-jazzio.h" 18#include "i8042-jazzio.h"
19#elif defined(CONFIG_SGI_HAS_I8042) 19#elif defined(CONFIG_SGI_HAS_I8042)
20#include "i8042-ip22io.h" 20#include "i8042-ip22io.h"
21#elif defined(CONFIG_SNI_RM)
22#include "i8042-snirm.h"
21#elif defined(CONFIG_PPC) 23#elif defined(CONFIG_PPC)
22#include "i8042-ppcio.h" 24#include "i8042-ppcio.h"
23#elif defined(CONFIG_SPARC) 25#elif defined(CONFIG_SPARC)
diff --git a/drivers/input/tablet/wacom.h b/drivers/input/tablet/wacom.h
index 6542edb6f76e..acf9830698cb 100644
--- a/drivers/input/tablet/wacom.h
+++ b/drivers/input/tablet/wacom.h
@@ -11,7 +11,7 @@
11 * Copyright (c) 2000 Daniel Egger <egger@suse.de> 11 * Copyright (c) 2000 Daniel Egger <egger@suse.de>
12 * Copyright (c) 2001 Frederic Lepied <flepied@mandrakesoft.com> 12 * Copyright (c) 2001 Frederic Lepied <flepied@mandrakesoft.com>
13 * Copyright (c) 2004 Panagiotis Issaris <panagiotis.issaris@mech.kuleuven.ac.be> 13 * Copyright (c) 2004 Panagiotis Issaris <panagiotis.issaris@mech.kuleuven.ac.be>
14 * Copyright (c) 2002-2007 Ping Cheng <pingc@wacom.com> 14 * Copyright (c) 2002-2008 Ping Cheng <pingc@wacom.com>
15 * 15 *
16 * ChangeLog: 16 * ChangeLog:
17 * v0.1 (vp) - Initial release 17 * v0.1 (vp) - Initial release
@@ -65,6 +65,7 @@
65 * - and wacom_wac.c deals with Wacom specific code 65 * - and wacom_wac.c deals with Wacom specific code
66 * - Support Intuos3 4x6 66 * - Support Intuos3 4x6
67 * v1.47 (pc) - Added support for Bamboo 67 * v1.47 (pc) - Added support for Bamboo
68 * v1.48 (pc) - Added support for Bamboo1, BambooFun, and Cintiq 12WX
68 */ 69 */
69 70
70/* 71/*
@@ -85,7 +86,7 @@
85/* 86/*
86 * Version Information 87 * Version Information
87 */ 88 */
88#define DRIVER_VERSION "v1.47" 89#define DRIVER_VERSION "v1.48"
89#define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" 90#define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>"
90#define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" 91#define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver"
91#define DRIVER_LICENSE "GPL" 92#define DRIVER_LICENSE "GPL"
@@ -125,6 +126,7 @@ extern void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac
125extern void input_dev_pl(struct input_dev *input_dev, struct wacom_wac *wacom_wac); 126extern void input_dev_pl(struct input_dev *input_dev, struct wacom_wac *wacom_wac);
126extern void input_dev_pt(struct input_dev *input_dev, struct wacom_wac *wacom_wac); 127extern void input_dev_pt(struct input_dev *input_dev, struct wacom_wac *wacom_wac);
127extern void input_dev_mo(struct input_dev *input_dev, struct wacom_wac *wacom_wac); 128extern void input_dev_mo(struct input_dev *input_dev, struct wacom_wac *wacom_wac);
129extern void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac);
128extern __u16 wacom_le16_to_cpu(unsigned char *data); 130extern __u16 wacom_le16_to_cpu(unsigned char *data);
129extern __u16 wacom_be16_to_cpu(unsigned char *data); 131extern __u16 wacom_be16_to_cpu(unsigned char *data);
130extern struct wacom_features * get_wacom_feature(const struct usb_device_id *id); 132extern struct wacom_features * get_wacom_feature(const struct usb_device_id *id);
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
index d64b1ea136b3..41caaef8e2d7 100644
--- a/drivers/input/tablet/wacom_sys.c
+++ b/drivers/input/tablet/wacom_sys.c
@@ -171,6 +171,7 @@ void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac)
171 input_dev->keybit[BIT_WORD(BTN_LEFT)] |= BIT_MASK(BTN_0) | 171 input_dev->keybit[BIT_WORD(BTN_LEFT)] |= BIT_MASK(BTN_0) |
172 BIT_MASK(BTN_1) | BIT_MASK(BTN_2) | BIT_MASK(BTN_3); 172 BIT_MASK(BTN_1) | BIT_MASK(BTN_2) | BIT_MASK(BTN_3);
173 input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0); 173 input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0);
174 input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);
174} 175}
175 176
176void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) 177void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac)
@@ -180,6 +181,11 @@ void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac)
180 input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0); 181 input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0);
181} 182}
182 183
184void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac)
185{
186 input_dev->keybit[BIT_WORD(BTN_LEFT)] |= BIT_MASK(BTN_8) | BIT_MASK(BTN_9);
187}
188
183void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac) 189void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac)
184{ 190{
185 input_dev->evbit[0] |= BIT_MASK(EV_MSC) | BIT_MASK(EV_REL); 191 input_dev->evbit[0] |= BIT_MASK(EV_MSC) | BIT_MASK(EV_REL);
diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
index fc03ba256f4c..ffe33842143f 100644
--- a/drivers/input/tablet/wacom_wac.c
+++ b/drivers/input/tablet/wacom_wac.c
@@ -163,7 +163,9 @@ static int wacom_graphire_irq(struct wacom_wac *wacom, void *wcombo)
163 } 163 }
164 164
165 id = STYLUS_DEVICE_ID; 165 id = STYLUS_DEVICE_ID;
166 if (data[1] & 0x80) { /* in prox */ 166 if ((data[1] & 0x80) && ((data[1] & 0x07) || data[2] || data[3] || data[4]
167 || data[5] || data[6] || (data[7] & 0x07))) {
168 /* in prox and not a pad data */
167 169
168 switch ((data[1] >> 5) & 3) { 170 switch ((data[1] >> 5) & 3) {
169 171
@@ -233,7 +235,6 @@ static int wacom_graphire_irq(struct wacom_wac *wacom, void *wcombo)
233 if (data[7] & 0xf8) { 235 if (data[7] & 0xf8) {
234 wacom_input_sync(wcombo); /* sync last event */ 236 wacom_input_sync(wcombo); /* sync last event */
235 wacom->id[1] = 1; 237 wacom->id[1] = 1;
236 wacom->serial[1] = (data[7] & 0xf8);
237 wacom_report_key(wcombo, BTN_0, (data[7] & 0x40)); 238 wacom_report_key(wcombo, BTN_0, (data[7] & 0x40));
238 wacom_report_key(wcombo, BTN_4, (data[7] & 0x80)); 239 wacom_report_key(wcombo, BTN_4, (data[7] & 0x80));
239 rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); 240 rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3);
@@ -252,10 +253,9 @@ static int wacom_graphire_irq(struct wacom_wac *wacom, void *wcombo)
252 } 253 }
253 break; 254 break;
254 case WACOM_MO: 255 case WACOM_MO:
255 if ((data[7] & 0xf8) || (data[8] & 0x80)) { 256 if ((data[7] & 0xf8) || (data[8] & 0xff)) {
256 wacom_input_sync(wcombo); /* sync last event */ 257 wacom_input_sync(wcombo); /* sync last event */
257 wacom->id[1] = 1; 258 wacom->id[1] = 1;
258 wacom->serial[1] = (data[7] & 0xf8);
259 wacom_report_key(wcombo, BTN_0, (data[7] & 0x08)); 259 wacom_report_key(wcombo, BTN_0, (data[7] & 0x08));
260 wacom_report_key(wcombo, BTN_1, (data[7] & 0x20)); 260 wacom_report_key(wcombo, BTN_1, (data[7] & 0x20));
261 wacom_report_key(wcombo, BTN_4, (data[7] & 0x10)); 261 wacom_report_key(wcombo, BTN_4, (data[7] & 0x10));
@@ -434,10 +434,12 @@ static int wacom_intuos_irq(struct wacom_wac *wacom, void *wcombo)
434 wacom_report_key(wcombo, BTN_5, (data[6] & 0x02)); 434 wacom_report_key(wcombo, BTN_5, (data[6] & 0x02));
435 wacom_report_key(wcombo, BTN_6, (data[6] & 0x04)); 435 wacom_report_key(wcombo, BTN_6, (data[6] & 0x04));
436 wacom_report_key(wcombo, BTN_7, (data[6] & 0x08)); 436 wacom_report_key(wcombo, BTN_7, (data[6] & 0x08));
437 wacom_report_key(wcombo, BTN_8, (data[5] & 0x10));
438 wacom_report_key(wcombo, BTN_9, (data[6] & 0x10));
437 wacom_report_abs(wcombo, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); 439 wacom_report_abs(wcombo, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]);
438 wacom_report_abs(wcombo, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); 440 wacom_report_abs(wcombo, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]);
439 441
440 if((data[5] & 0x0f) | (data[6] & 0x0f) | (data[1] & 0x1f) | 442 if ((data[5] & 0x1f) | (data[6] & 0x1f) | (data[1] & 0x1f) |
441 data[2] | (data[3] & 0x1f) | data[4]) 443 data[2] | (data[3] & 0x1f) | data[4])
442 wacom_report_key(wcombo, wacom->tool[1], 1); 444 wacom_report_key(wcombo, wacom->tool[1], 1);
443 else 445 else
@@ -481,13 +483,11 @@ static int wacom_intuos_irq(struct wacom_wac *wacom, void *wcombo)
481 if (data[1] & 0x02) { 483 if (data[1] & 0x02) {
482 /* Rotation packet */ 484 /* Rotation packet */
483 if (wacom->features->type >= INTUOS3S) { 485 if (wacom->features->type >= INTUOS3S) {
484 /* I3 marker pen rotation reported as wheel 486 /* I3 marker pen rotation */
485 * due to valuator limitation
486 */
487 t = (data[6] << 3) | ((data[7] >> 5) & 7); 487 t = (data[6] << 3) | ((data[7] >> 5) & 7);
488 t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : 488 t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) :
489 ((t-1) / 2 + 450)) : (450 - t / 2) ; 489 ((t-1) / 2 + 450)) : (450 - t / 2) ;
490 wacom_report_abs(wcombo, ABS_WHEEL, t); 490 wacom_report_abs(wcombo, ABS_Z, t);
491 } else { 491 } else {
492 /* 4D mouse rotation packet */ 492 /* 4D mouse rotation packet */
493 t = (data[6] << 3) | ((data[7] >> 5) & 7); 493 t = (data[6] << 3) | ((data[7] >> 5) & 7);
@@ -558,6 +558,7 @@ int wacom_wac_irq(struct wacom_wac *wacom_wac, void *wcombo)
558 case INTUOS3: 558 case INTUOS3:
559 case INTUOS3L: 559 case INTUOS3L:
560 case CINTIQ: 560 case CINTIQ:
561 case WACOM_BEE:
561 return (wacom_intuos_irq(wacom_wac, wcombo)); 562 return (wacom_intuos_irq(wacom_wac, wcombo));
562 break; 563 break;
563 default: 564 default:
@@ -577,6 +578,8 @@ void wacom_init_input_dev(struct input_dev *input_dev, struct wacom_wac *wacom_w
577 case GRAPHIRE: 578 case GRAPHIRE:
578 input_dev_g(input_dev, wacom_wac); 579 input_dev_g(input_dev, wacom_wac);
579 break; 580 break;
581 case WACOM_BEE:
582 input_dev_bee(input_dev, wacom_wac);
580 case INTUOS3: 583 case INTUOS3:
581 case INTUOS3L: 584 case INTUOS3L:
582 case CINTIQ: 585 case CINTIQ:
@@ -607,12 +610,15 @@ static struct wacom_features wacom_features[] = {
607 { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, GRAPHIRE }, 610 { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, GRAPHIRE },
608 { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, WACOM_G4 }, 611 { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, WACOM_G4 },
609 { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, WACOM_G4 }, 612 { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, WACOM_G4 },
613 { "Wacom BambooFun 4x5", 9, 14760, 9225, 511, 63, WACOM_MO },
614 { "Wacom BambooFun 6x8", 9, 21648, 13530, 511, 63, WACOM_MO },
610 { "Wacom Volito", 8, 5104, 3712, 511, 63, GRAPHIRE }, 615 { "Wacom Volito", 8, 5104, 3712, 511, 63, GRAPHIRE },
611 { "Wacom PenStation2", 8, 3250, 2320, 255, 63, GRAPHIRE }, 616 { "Wacom PenStation2", 8, 3250, 2320, 255, 63, GRAPHIRE },
612 { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, GRAPHIRE }, 617 { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, GRAPHIRE },
613 { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 63, GRAPHIRE }, 618 { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 63, GRAPHIRE },
614 { "Wacom PenPartner2", 8, 3250, 2320, 255, 63, GRAPHIRE }, 619 { "Wacom PenPartner2", 8, 3250, 2320, 511, 63, GRAPHIRE },
615 { "Wacom Bamboo", 9, 14760, 9225, 511, 63, WACOM_MO }, 620 { "Wacom Bamboo", 9, 14760, 9225, 511, 63, WACOM_MO },
621 { "Wacom Bamboo1", 8, 5104, 3712, 511, 63, GRAPHIRE },
616 { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, INTUOS }, 622 { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, INTUOS },
617 { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, 623 { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, INTUOS },
618 { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, INTUOS }, 624 { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, INTUOS },
@@ -643,6 +649,7 @@ static struct wacom_features wacom_features[] = {
643 { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3 }, 649 { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3 },
644 { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S }, 650 { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S },
645 { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ }, 651 { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ },
652 { "Wacom Cintiq 12WX", 10, 53020, 33440, 1023, 63, WACOM_BEE },
646 { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, 653 { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS },
647 { } 654 { }
648}; 655};
@@ -656,12 +663,15 @@ static struct usb_device_id wacom_ids[] = {
656 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14) }, 663 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14) },
657 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15) }, 664 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15) },
658 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16) }, 665 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16) },
666 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x17) },
667 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x18) },
659 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x60) }, 668 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x60) },
660 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x61) }, 669 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x61) },
661 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x62) }, 670 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x62) },
662 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63) }, 671 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63) },
663 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64) }, 672 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64) },
664 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65) }, 673 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65) },
674 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x69) },
665 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x20) }, 675 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x20) },
666 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x21) }, 676 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x21) },
667 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x22) }, 677 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x22) },
@@ -692,6 +702,7 @@ static struct usb_device_id wacom_ids[] = {
692 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5) }, 702 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5) },
693 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7) }, 703 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7) },
694 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F) }, 704 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F) },
705 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC6) },
695 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x47) }, 706 { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x47) },
696 { } 707 { }
697}; 708};
diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h
index a302e229bb8a..3342bc05847d 100644
--- a/drivers/input/tablet/wacom_wac.h
+++ b/drivers/input/tablet/wacom_wac.h
@@ -25,6 +25,7 @@ enum {
25 INTUOS3, 25 INTUOS3,
26 INTUOS3L, 26 INTUOS3L,
27 CINTIQ, 27 CINTIQ,
28 WACOM_BEE,
28 WACOM_MO, 29 WACOM_MO,
29 MAX_TYPE 30 MAX_TYPE
30}; 31};
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 58934a40f5ce..57a1c28bf122 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -213,7 +213,7 @@ static int ads7846_read12_ser(struct device *dev, unsigned command)
213 struct ads7846 *ts = dev_get_drvdata(dev); 213 struct ads7846 *ts = dev_get_drvdata(dev);
214 struct ser_req *req = kzalloc(sizeof *req, GFP_KERNEL); 214 struct ser_req *req = kzalloc(sizeof *req, GFP_KERNEL);
215 int status; 215 int status;
216 int sample; 216 int uninitialized_var(sample);
217 int use_internal; 217 int use_internal;
218 218
219 if (!req) 219 if (!req)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index ccbbf63727cc..61ccbd2683fa 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -1864,17 +1864,6 @@ static struct rdev_sysfs_entry rdev_state =
1864__ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store); 1864__ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store);
1865 1865
1866static ssize_t 1866static ssize_t
1867super_show(mdk_rdev_t *rdev, char *page)
1868{
1869 if (rdev->sb_loaded && rdev->sb_size) {
1870 memcpy(page, page_address(rdev->sb_page), rdev->sb_size);
1871 return rdev->sb_size;
1872 } else
1873 return 0;
1874}
1875static struct rdev_sysfs_entry rdev_super = __ATTR_RO(super);
1876
1877static ssize_t
1878errors_show(mdk_rdev_t *rdev, char *page) 1867errors_show(mdk_rdev_t *rdev, char *page)
1879{ 1868{
1880 return sprintf(page, "%d\n", atomic_read(&rdev->corrected_errors)); 1869 return sprintf(page, "%d\n", atomic_read(&rdev->corrected_errors));
@@ -2060,7 +2049,6 @@ __ATTR(size, S_IRUGO|S_IWUSR, rdev_size_show, rdev_size_store);
2060 2049
2061static struct attribute *rdev_default_attrs[] = { 2050static struct attribute *rdev_default_attrs[] = {
2062 &rdev_state.attr, 2051 &rdev_state.attr,
2063 &rdev_super.attr,
2064 &rdev_errors.attr, 2052 &rdev_errors.attr,
2065 &rdev_slot.attr, 2053 &rdev_slot.attr,
2066 &rdev_offset.attr, 2054 &rdev_offset.attr,
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 2d6f1a51359c..c574cf5efb5c 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -1143,7 +1143,7 @@ static void raid5_end_read_request(struct bio * bi, int error)
1143 rdev = conf->disks[i].rdev; 1143 rdev = conf->disks[i].rdev;
1144 printk(KERN_INFO "raid5:%s: read error corrected (%lu sectors at %llu on %s)\n", 1144 printk(KERN_INFO "raid5:%s: read error corrected (%lu sectors at %llu on %s)\n",
1145 mdname(conf->mddev), STRIPE_SECTORS, 1145 mdname(conf->mddev), STRIPE_SECTORS,
1146 (unsigned long long)sh->sector + rdev->data_offset, 1146 (unsigned long long)(sh->sector + rdev->data_offset),
1147 bdevname(rdev->bdev, b)); 1147 bdevname(rdev->bdev, b));
1148 clear_bit(R5_ReadError, &sh->dev[i].flags); 1148 clear_bit(R5_ReadError, &sh->dev[i].flags);
1149 clear_bit(R5_ReWrite, &sh->dev[i].flags); 1149 clear_bit(R5_ReWrite, &sh->dev[i].flags);
@@ -1160,13 +1160,13 @@ static void raid5_end_read_request(struct bio * bi, int error)
1160 if (conf->mddev->degraded) 1160 if (conf->mddev->degraded)
1161 printk(KERN_WARNING "raid5:%s: read error not correctable (sector %llu on %s).\n", 1161 printk(KERN_WARNING "raid5:%s: read error not correctable (sector %llu on %s).\n",
1162 mdname(conf->mddev), 1162 mdname(conf->mddev),
1163 (unsigned long long)sh->sector + rdev->data_offset, 1163 (unsigned long long)(sh->sector + rdev->data_offset),
1164 bdn); 1164 bdn);
1165 else if (test_bit(R5_ReWrite, &sh->dev[i].flags)) 1165 else if (test_bit(R5_ReWrite, &sh->dev[i].flags))
1166 /* Oh, no!!! */ 1166 /* Oh, no!!! */
1167 printk(KERN_WARNING "raid5:%s: read error NOT corrected!! (sector %llu on %s).\n", 1167 printk(KERN_WARNING "raid5:%s: read error NOT corrected!! (sector %llu on %s).\n",
1168 mdname(conf->mddev), 1168 mdname(conf->mddev),
1169 (unsigned long long)sh->sector + rdev->data_offset, 1169 (unsigned long long)(sh->sector + rdev->data_offset),
1170 bdn); 1170 bdn);
1171 else if (atomic_read(&rdev->read_errors) 1171 else if (atomic_read(&rdev->read_errors)
1172 > conf->max_nr_stripes) 1172 > conf->max_nr_stripes)
diff --git a/drivers/media/dvb/dvb-usb/opera1.c b/drivers/media/dvb/dvb-usb/opera1.c
index 21935bf7059e..302cc67407c3 100644
--- a/drivers/media/dvb/dvb-usb/opera1.c
+++ b/drivers/media/dvb/dvb-usb/opera1.c
@@ -478,9 +478,9 @@ static int opera1_xilinx_load_firmware(struct usb_device *dev,
478 err("could not restart the USB controller CPU."); 478 err("could not restart the USB controller CPU.");
479 ret = -EINVAL; 479 ret = -EINVAL;
480 } 480 }
481 kfree(p);
482 } 481 }
483 } 482 }
483 kfree(p);
484 if (fw) { 484 if (fw) {
485 release_firmware(fw); 485 release_firmware(fw);
486 } 486 }
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
index 37072a21d8c9..1832966f53f3 100644
--- a/drivers/media/video/Kconfig
+++ b/drivers/media/video/Kconfig
@@ -305,7 +305,7 @@ comment "MPEG video encoders"
305 305
306config VIDEO_CX2341X 306config VIDEO_CX2341X
307 tristate "Conexant CX2341x MPEG encoders" 307 tristate "Conexant CX2341x MPEG encoders"
308 depends on VIDEO_V4L2 && EXPERIMENTAL 308 depends on VIDEO_V4L2 && EXPERIMENTAL && VIDEO_V4L2_COMMON
309 ---help--- 309 ---help---
310 Support for the Conexant CX23416 MPEG encoders 310 Support for the Conexant CX23416 MPEG encoders
311 and CX23415 MPEG encoder/decoders. 311 and CX23415 MPEG encoder/decoders.
@@ -382,7 +382,7 @@ endmenu # encoder / decoder chips
382 382
383config VIDEO_VIVI 383config VIDEO_VIVI
384 tristate "Virtual Video Driver" 384 tristate "Virtual Video Driver"
385 depends on VIDEO_V4L2 && !SPARC32 && !SPARC64 385 depends on VIDEO_DEV && VIDEO_V4L2 && !SPARC32 && !SPARC64
386 select VIDEOBUF_VMALLOC 386 select VIDEOBUF_VMALLOC
387 default n 387 default n
388 ---help--- 388 ---help---
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 5404fcc5276d..a080c149cc6c 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -3389,7 +3389,6 @@ static struct video_device bttv_video_template =
3389 .vidiocgmbuf = vidiocgmbuf, 3389 .vidiocgmbuf = vidiocgmbuf,
3390#endif 3390#endif
3391 .vidioc_g_crop = bttv_g_crop, 3391 .vidioc_g_crop = bttv_g_crop,
3392 .vidioc_g_crop = bttv_g_crop,
3393 .vidioc_s_crop = bttv_s_crop, 3392 .vidioc_s_crop = bttv_s_crop,
3394 .vidioc_g_fbuf = bttv_g_fbuf, 3393 .vidioc_g_fbuf = bttv_g_fbuf,
3395 .vidioc_s_fbuf = bttv_s_fbuf, 3394 .vidioc_s_fbuf = bttv_s_fbuf,
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index e6b7f518c56e..8c9a8adf52de 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -2196,6 +2196,11 @@ struct cx88_core *cx88_core_create(struct pci_dev *pci, int nr)
2196 cx88_reset(core); 2196 cx88_reset(core);
2197 cx88_card_setup_pre_i2c(core); 2197 cx88_card_setup_pre_i2c(core);
2198 cx88_i2c_init(core, pci); 2198 cx88_i2c_init(core, pci);
2199
2200 /* load tuner module, if needed */
2201 if (TUNER_ABSENT != core->board.tuner_type)
2202 request_module("tuner");
2203
2199 cx88_call_i2c_clients (core, TUNER_SET_STANDBY, NULL); 2204 cx88_call_i2c_clients (core, TUNER_SET_STANDBY, NULL);
2200 cx88_card_setup(core); 2205 cx88_card_setup(core);
2201 cx88_ir_init(core, pci); 2206 cx88_ir_init(core, pci);
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c
index 7f1931aed207..227179620d13 100644
--- a/drivers/media/video/cx88/cx88-video.c
+++ b/drivers/media/video/cx88/cx88-video.c
@@ -1826,8 +1826,6 @@ static int __devinit cx8800_initdev(struct pci_dev *pci_dev,
1826 cx_set(MO_PCI_INTMSK, core->pci_irqmask); 1826 cx_set(MO_PCI_INTMSK, core->pci_irqmask);
1827 1827
1828 /* load and configure helper modules */ 1828 /* load and configure helper modules */
1829 if (TUNER_ABSENT != core->board.tuner_type)
1830 request_module("tuner");
1831 1829
1832 if (core->board.audio_chip == AUDIO_CHIP_WM8775) 1830 if (core->board.audio_chip == AUDIO_CHIP_WM8775)
1833 request_module("wm8775"); 1831 request_module("wm8775");
diff --git a/drivers/media/video/em28xx/em28xx-core.c b/drivers/media/video/em28xx/em28xx-core.c
index 7d1537cab867..c1caaa855b99 100644
--- a/drivers/media/video/em28xx/em28xx-core.c
+++ b/drivers/media/video/em28xx/em28xx-core.c
@@ -267,7 +267,7 @@ static int em28xx_write_ac97(struct em28xx *dev, u8 reg, u8 *val)
267 for (i = 0; i < 10; i++) { 267 for (i = 0; i < 10; i++) {
268 if ((ret = em28xx_read_reg(dev, AC97BUSY_REG)) < 0) 268 if ((ret = em28xx_read_reg(dev, AC97BUSY_REG)) < 0)
269 return ret; 269 return ret;
270 if (!((u8) ret) & 0x01) 270 if (!(ret & 0x01))
271 return 0; 271 return 0;
272 msleep(5); 272 msleep(5);
273 } 273 }
diff --git a/drivers/media/video/ivtv/ivtv-driver.c b/drivers/media/video/ivtv/ivtv-driver.c
index d42f120354e5..948ca35e7ee8 100644
--- a/drivers/media/video/ivtv/ivtv-driver.c
+++ b/drivers/media/video/ivtv/ivtv-driver.c
@@ -54,7 +54,6 @@
54#include "ivtv-vbi.h" 54#include "ivtv-vbi.h"
55#include "ivtv-routing.h" 55#include "ivtv-routing.h"
56#include "ivtv-gpio.h" 56#include "ivtv-gpio.h"
57#include "ivtv-yuv.h"
58 57
59#include <media/tveeprom.h> 58#include <media/tveeprom.h>
60#include <media/saa7115.h> 59#include <media/saa7115.h>
@@ -700,6 +699,9 @@ static int __devinit ivtv_init_struct1(struct ivtv *itv)
700 itv->vbi.in.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE; 699 itv->vbi.in.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
701 itv->vbi.sliced_in = &itv->vbi.in.fmt.sliced; 700 itv->vbi.sliced_in = &itv->vbi.in.fmt.sliced;
702 701
702 /* Init the sg table for osd/yuv output */
703 sg_init_table(itv->udma.SGlist, IVTV_DMA_SG_OSD_ENT);
704
703 /* OSD */ 705 /* OSD */
704 itv->osd_global_alpha_state = 1; 706 itv->osd_global_alpha_state = 1;
705 itv->osd_global_alpha = 255; 707 itv->osd_global_alpha = 255;
@@ -1053,9 +1055,6 @@ static int __devinit ivtv_probe(struct pci_dev *dev,
1053 goto free_io; 1055 goto free_io;
1054 } 1056 }
1055 1057
1056 /* Check yuv output filter table */
1057 if (itv->has_cx23415) ivtv_yuv_filter_check(itv);
1058
1059 ivtv_gpio_init(itv); 1058 ivtv_gpio_init(itv);
1060 1059
1061 /* active i2c */ 1060 /* active i2c */
diff --git a/drivers/media/video/ivtv/ivtv-firmware.c b/drivers/media/video/ivtv/ivtv-firmware.c
index 425eb1063904..6dba55b7e25a 100644
--- a/drivers/media/video/ivtv/ivtv-firmware.c
+++ b/drivers/media/video/ivtv/ivtv-firmware.c
@@ -22,6 +22,7 @@
22#include "ivtv-driver.h" 22#include "ivtv-driver.h"
23#include "ivtv-mailbox.h" 23#include "ivtv-mailbox.h"
24#include "ivtv-firmware.h" 24#include "ivtv-firmware.h"
25#include "ivtv-yuv.h"
25#include <linux/firmware.h> 26#include <linux/firmware.h>
26 27
27#define IVTV_MASK_SPU_ENABLE 0xFFFFFFFE 28#define IVTV_MASK_SPU_ENABLE 0xFFFFFFFE
@@ -225,11 +226,14 @@ int ivtv_firmware_init(struct ivtv *itv)
225 return 0; 226 return 0;
226 227
227 itv->dec_mbox.mbox = ivtv_search_mailbox(itv->dec_mem, IVTV_DECODER_SIZE); 228 itv->dec_mbox.mbox = ivtv_search_mailbox(itv->dec_mem, IVTV_DECODER_SIZE);
228 if (itv->dec_mbox.mbox == NULL) 229 if (itv->dec_mbox.mbox == NULL) {
229 IVTV_ERR("Decoder mailbox not found\n"); 230 IVTV_ERR("Decoder mailbox not found\n");
230 else if (itv->has_cx23415 && ivtv_vapi(itv, CX2341X_DEC_PING_FW, 0)) { 231 } else if (itv->has_cx23415 && ivtv_vapi(itv, CX2341X_DEC_PING_FW, 0)) {
231 IVTV_ERR("Decoder firmware dead!\n"); 232 IVTV_ERR("Decoder firmware dead!\n");
232 itv->dec_mbox.mbox = NULL; 233 itv->dec_mbox.mbox = NULL;
234 } else {
235 /* Firmware okay, so check yuv output filter table */
236 ivtv_yuv_filter_check(itv);
233 } 237 }
234 return itv->dec_mbox.mbox ? 0 : -ENODEV; 238 return itv->dec_mbox.mbox ? 0 : -ENODEV;
235} 239}
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c
index 262830da08c8..6f5744286e8c 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -2484,27 +2484,28 @@ struct saa7134_board saa7134_boards[] = {
2484 .tuner_addr = ADDR_UNSET, 2484 .tuner_addr = ADDR_UNSET,
2485 .radio_addr = ADDR_UNSET, 2485 .radio_addr = ADDR_UNSET,
2486 .gpiomask = 0x080200000, 2486 .gpiomask = 0x080200000,
2487 .inputs = {{ 2487 .inputs = { {
2488 .name = name_tv, 2488 .name = name_tv,
2489 .vmux = 4, 2489 .vmux = 4,
2490 .amux = TV, 2490 .amux = TV,
2491 .tv = 1, 2491 .tv = 1,
2492 },{ 2492 }, {
2493 .name = name_comp1, 2493 .name = name_comp1,
2494 .vmux = 1, 2494 .vmux = 1,
2495 .amux = LINE2, 2495 .amux = LINE2,
2496 },{ 2496 }, {
2497 .name = name_comp2, 2497 .name = name_comp2,
2498 .vmux = 0, 2498 .vmux = 0,
2499 .amux = LINE2, 2499 .amux = LINE2,
2500 },{ 2500 }, {
2501 .name = name_svideo, 2501 .name = name_svideo,
2502 .vmux = 8, 2502 .vmux = 8,
2503 .amux = LINE2, 2503 .amux = LINE2,
2504 }}, 2504 } },
2505 .radio = { 2505 .radio = {
2506 .name = name_radio, 2506 .name = name_radio,
2507 .amux = LINE1, 2507 .amux = TV,
2508 .gpio = 0x0200000,
2508 }, 2509 },
2509 }, 2510 },
2510 [SAA7134_BOARD_ASUSTeK_P7131_DUAL] = { 2511 [SAA7134_BOARD_ASUSTeK_P7131_DUAL] = {
diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c
index 52baa4f7f7dd..58ab163fdbd7 100644
--- a/drivers/media/video/saa7134/saa7134-core.c
+++ b/drivers/media/video/saa7134/saa7134-core.c
@@ -1022,12 +1022,13 @@ static int __devinit saa7134_initdev(struct pci_dev *pci_dev,
1022 saa7134_i2c_register(dev); 1022 saa7134_i2c_register(dev);
1023 1023
1024 /* initialize hardware #2 */ 1024 /* initialize hardware #2 */
1025 if (TUNER_ABSENT != dev->tuner_type)
1026 request_module("tuner");
1025 saa7134_board_init2(dev); 1027 saa7134_board_init2(dev);
1028
1026 saa7134_hwinit2(dev); 1029 saa7134_hwinit2(dev);
1027 1030
1028 /* load i2c helpers */ 1031 /* load i2c helpers */
1029 if (TUNER_ABSENT != dev->tuner_type)
1030 request_module("tuner");
1031 if (card_is_empress(dev)) { 1032 if (card_is_empress(dev)) {
1032 request_module("saa6752hs"); 1033 request_module("saa6752hs");
1033 } 1034 }
diff --git a/drivers/media/video/tvp5150.c b/drivers/media/video/tvp5150.c
index 445eba4174d7..d28318cb2b8d 100644
--- a/drivers/media/video/tvp5150.c
+++ b/drivers/media/video/tvp5150.c
@@ -672,7 +672,7 @@ static int tvp5150_set_vbi(struct i2c_client *c,
672 if (std == V4L2_STD_ALL) { 672 if (std == V4L2_STD_ALL) {
673 tvp5150_err("VBI can't be configured without knowing number of lines\n"); 673 tvp5150_err("VBI can't be configured without knowing number of lines\n");
674 return 0; 674 return 0;
675 } else if (std && V4L2_STD_625_50) { 675 } else if (std & V4L2_STD_625_50) {
676 /* Don't follow NTSC Line number convension */ 676 /* Don't follow NTSC Line number convension */
677 line += 3; 677 line += 3;
678 } 678 }
@@ -719,7 +719,7 @@ static int tvp5150_get_vbi(struct i2c_client *c,
719 if (std == V4L2_STD_ALL) { 719 if (std == V4L2_STD_ALL) {
720 tvp5150_err("VBI can't be configured without knowing number of lines\n"); 720 tvp5150_err("VBI can't be configured without knowing number of lines\n");
721 return 0; 721 return 0;
722 } else if (std && V4L2_STD_625_50) { 722 } else if (std & V4L2_STD_625_50) {
723 /* Don't follow NTSC Line number convension */ 723 /* Don't follow NTSC Line number convension */
724 line += 3; 724 line += 3;
725 } 725 }
diff --git a/drivers/media/video/usbvideo/usbvideo.c b/drivers/media/video/usbvideo/usbvideo.c
index fb434b5602a3..5d363be7bc73 100644
--- a/drivers/media/video/usbvideo/usbvideo.c
+++ b/drivers/media/video/usbvideo/usbvideo.c
@@ -1034,6 +1034,11 @@ int usbvideo_RegisterVideoDevice(struct uvd *uvd)
1034 info("%s: iface=%d. endpoint=$%02x paletteBits=$%08lx", 1034 info("%s: iface=%d. endpoint=$%02x paletteBits=$%08lx",
1035 __FUNCTION__, uvd->iface, uvd->video_endp, uvd->paletteBits); 1035 __FUNCTION__, uvd->iface, uvd->video_endp, uvd->paletteBits);
1036 } 1036 }
1037 if (uvd->dev == NULL) {
1038 err("%s: uvd->dev == NULL", __FUNCTION__);
1039 return -EINVAL;
1040 }
1041 uvd->vdev.dev=&(uvd->dev->dev);
1037 if (video_register_device(&uvd->vdev, VFL_TYPE_GRABBER, video_nr) == -1) { 1042 if (video_register_device(&uvd->vdev, VFL_TYPE_GRABBER, video_nr) == -1) {
1038 err("%s: video_register_device failed", __FUNCTION__); 1043 err("%s: video_register_device failed", __FUNCTION__);
1039 return -EPIPE; 1044 return -EPIPE;
@@ -1041,10 +1046,6 @@ int usbvideo_RegisterVideoDevice(struct uvd *uvd)
1041 if (uvd->debug > 1) { 1046 if (uvd->debug > 1) {
1042 info("%s: video_register_device() successful", __FUNCTION__); 1047 info("%s: video_register_device() successful", __FUNCTION__);
1043 } 1048 }
1044 if (uvd->dev == NULL) {
1045 err("%s: uvd->dev == NULL", __FUNCTION__);
1046 return -EINVAL;
1047 }
1048 1049
1049 info("%s on /dev/video%d: canvas=%s videosize=%s", 1050 info("%s on /dev/video%d: canvas=%s videosize=%s",
1050 (uvd->handle != NULL) ? uvd->handle->drvName : "???", 1051 (uvd->handle != NULL) ? uvd->handle->drvName : "???",
diff --git a/drivers/media/video/v4l1-compat.c b/drivers/media/video/v4l1-compat.c
index dcf22a3b672a..50e1ff9f2be5 100644
--- a/drivers/media/video/v4l1-compat.c
+++ b/drivers/media/video/v4l1-compat.c
@@ -303,7 +303,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
303 { 303 {
304 struct video_capability *cap = arg; 304 struct video_capability *cap = arg;
305 305
306 cap2 = kzalloc(sizeof(*cap2),GFP_KERNEL); 306 cap2 = kzalloc(sizeof(*cap2), GFP_KERNEL);
307 if (!cap2) {
308 err = -ENOMEM;
309 break;
310 }
307 memset(cap, 0, sizeof(*cap)); 311 memset(cap, 0, sizeof(*cap));
308 memset(&fbuf2, 0, sizeof(fbuf2)); 312 memset(&fbuf2, 0, sizeof(fbuf2));
309 313
@@ -426,7 +430,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
426 { 430 {
427 struct video_window *win = arg; 431 struct video_window *win = arg;
428 432
429 fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); 433 fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
434 if (!fmt2) {
435 err = -ENOMEM;
436 break;
437 }
430 memset(win,0,sizeof(*win)); 438 memset(win,0,sizeof(*win));
431 439
432 fmt2->type = V4L2_BUF_TYPE_VIDEO_OVERLAY; 440 fmt2->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
@@ -464,7 +472,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
464 struct video_window *win = arg; 472 struct video_window *win = arg;
465 int err1,err2; 473 int err1,err2;
466 474
467 fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); 475 fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
476 if (!fmt2) {
477 err = -ENOMEM;
478 break;
479 }
468 fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 480 fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
469 drv(inode, file, VIDIOC_STREAMOFF, &fmt2->type); 481 drv(inode, file, VIDIOC_STREAMOFF, &fmt2->type);
470 err1 = drv(inode, file, VIDIOC_G_FMT, fmt2); 482 err1 = drv(inode, file, VIDIOC_G_FMT, fmt2);
@@ -586,6 +598,12 @@ v4l_compat_translate_ioctl(struct inode *inode,
586 { 598 {
587 struct video_picture *pict = arg; 599 struct video_picture *pict = arg;
588 600
601 fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
602 if (!fmt2) {
603 err = -ENOMEM;
604 break;
605 }
606
589 pict->brightness = get_v4l_control(inode, file, 607 pict->brightness = get_v4l_control(inode, file,
590 V4L2_CID_BRIGHTNESS,drv); 608 V4L2_CID_BRIGHTNESS,drv);
591 pict->hue = get_v4l_control(inode, file, 609 pict->hue = get_v4l_control(inode, file,
@@ -597,7 +615,6 @@ v4l_compat_translate_ioctl(struct inode *inode,
597 pict->whiteness = get_v4l_control(inode, file, 615 pict->whiteness = get_v4l_control(inode, file,
598 V4L2_CID_WHITENESS, drv); 616 V4L2_CID_WHITENESS, drv);
599 617
600 fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL);
601 fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 618 fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
602 err = drv(inode, file, VIDIOC_G_FMT, fmt2); 619 err = drv(inode, file, VIDIOC_G_FMT, fmt2);
603 if (err < 0) { 620 if (err < 0) {
@@ -617,6 +634,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
617 struct video_picture *pict = arg; 634 struct video_picture *pict = arg;
618 int mem_err = 0, ovl_err = 0; 635 int mem_err = 0, ovl_err = 0;
619 636
637 fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
638 if (!fmt2) {
639 err = -ENOMEM;
640 break;
641 }
620 memset(&fbuf2, 0, sizeof(fbuf2)); 642 memset(&fbuf2, 0, sizeof(fbuf2));
621 643
622 set_v4l_control(inode, file, 644 set_v4l_control(inode, file,
@@ -636,7 +658,6 @@ v4l_compat_translate_ioctl(struct inode *inode,
636 * different pixel formats for memory vs overlay. 658 * different pixel formats for memory vs overlay.
637 */ 659 */
638 660
639 fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL);
640 fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 661 fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
641 err = drv(inode, file, VIDIOC_G_FMT, fmt2); 662 err = drv(inode, file, VIDIOC_G_FMT, fmt2);
642 /* If VIDIOC_G_FMT failed, then the driver likely doesn't 663 /* If VIDIOC_G_FMT failed, then the driver likely doesn't
@@ -890,7 +911,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
890 { 911 {
891 struct video_mmap *mm = arg; 912 struct video_mmap *mm = arg;
892 913
893 fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); 914 fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
915 if (!fmt2) {
916 err = -ENOMEM;
917 break;
918 }
894 memset(&buf2,0,sizeof(buf2)); 919 memset(&buf2,0,sizeof(buf2));
895 920
896 fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 921 fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
@@ -986,7 +1011,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
986 { 1011 {
987 struct vbi_format *fmt = arg; 1012 struct vbi_format *fmt = arg;
988 1013
989 fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); 1014 fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
1015 if (!fmt2) {
1016 err = -ENOMEM;
1017 break;
1018 }
990 fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE; 1019 fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE;
991 1020
992 err = drv(inode, file, VIDIOC_G_FMT, fmt2); 1021 err = drv(inode, file, VIDIOC_G_FMT, fmt2);
@@ -1018,8 +1047,11 @@ v4l_compat_translate_ioctl(struct inode *inode,
1018 break; 1047 break;
1019 } 1048 }
1020 1049
1021 fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); 1050 fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL);
1022 1051 if (!fmt2) {
1052 err = -ENOMEM;
1053 break;
1054 }
1023 fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE; 1055 fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE;
1024 fmt2->fmt.vbi.samples_per_line = fmt->samples_per_line; 1056 fmt2->fmt.vbi.samples_per_line = fmt->samples_per_line;
1025 fmt2->fmt.vbi.sampling_rate = fmt->sampling_rate; 1057 fmt2->fmt.vbi.sampling_rate = fmt->sampling_rate;
diff --git a/drivers/memstick/core/memstick.c b/drivers/memstick/core/memstick.c
index de80dba12f9b..946e3d3506ac 100644
--- a/drivers/memstick/core/memstick.c
+++ b/drivers/memstick/core/memstick.c
@@ -276,8 +276,6 @@ void memstick_init_req_sg(struct memstick_request *mrq, unsigned char tpc,
276 mrq->need_card_int = 1; 276 mrq->need_card_int = 1;
277 else 277 else
278 mrq->need_card_int = 0; 278 mrq->need_card_int = 0;
279
280 mrq->get_int_reg = 0;
281} 279}
282EXPORT_SYMBOL(memstick_init_req_sg); 280EXPORT_SYMBOL(memstick_init_req_sg);
283 281
@@ -311,8 +309,6 @@ void memstick_init_req(struct memstick_request *mrq, unsigned char tpc,
311 mrq->need_card_int = 1; 309 mrq->need_card_int = 1;
312 else 310 else
313 mrq->need_card_int = 0; 311 mrq->need_card_int = 0;
314
315 mrq->get_int_reg = 0;
316} 312}
317EXPORT_SYMBOL(memstick_init_req); 313EXPORT_SYMBOL(memstick_init_req);
318 314
@@ -342,6 +338,7 @@ static int h_memstick_read_dev_id(struct memstick_dev *card,
342 card->id.class = id_reg.class; 338 card->id.class = id_reg.class;
343 } 339 }
344 complete(&card->mrq_complete); 340 complete(&card->mrq_complete);
341 dev_dbg(&card->dev, "if_mode = %02x\n", id_reg.if_mode);
345 return -EAGAIN; 342 return -EAGAIN;
346 } 343 }
347} 344}
@@ -422,7 +419,6 @@ static void memstick_power_on(struct memstick_host *host)
422{ 419{
423 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON); 420 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON);
424 host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL); 421 host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL);
425 msleep(1);
426} 422}
427 423
428static void memstick_check(struct work_struct *work) 424static void memstick_check(struct work_struct *work)
@@ -579,7 +575,8 @@ EXPORT_SYMBOL(memstick_suspend_host);
579void memstick_resume_host(struct memstick_host *host) 575void memstick_resume_host(struct memstick_host *host)
580{ 576{
581 mutex_lock(&host->lock); 577 mutex_lock(&host->lock);
582 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON); 578 if (host->card)
579 memstick_power_on(host);
583 mutex_unlock(&host->lock); 580 mutex_unlock(&host->lock);
584 memstick_detect_change(host); 581 memstick_detect_change(host);
585} 582}
diff --git a/drivers/memstick/core/mspro_block.c b/drivers/memstick/core/mspro_block.c
index 1d637e4561d3..557dbbba5cb2 100644
--- a/drivers/memstick/core/mspro_block.c
+++ b/drivers/memstick/core/mspro_block.c
@@ -133,6 +133,7 @@ struct mspro_devinfo {
133struct mspro_block_data { 133struct mspro_block_data {
134 struct memstick_dev *card; 134 struct memstick_dev *card;
135 unsigned int usage_count; 135 unsigned int usage_count;
136 unsigned int caps;
136 struct gendisk *disk; 137 struct gendisk *disk;
137 struct request_queue *queue; 138 struct request_queue *queue;
138 spinlock_t q_lock; 139 spinlock_t q_lock;
@@ -577,7 +578,6 @@ static int h_mspro_block_wait_for_ced(struct memstick_dev *card,
577static int h_mspro_block_transfer_data(struct memstick_dev *card, 578static int h_mspro_block_transfer_data(struct memstick_dev *card,
578 struct memstick_request **mrq) 579 struct memstick_request **mrq)
579{ 580{
580 struct memstick_host *host = card->host;
581 struct mspro_block_data *msb = memstick_get_drvdata(card); 581 struct mspro_block_data *msb = memstick_get_drvdata(card);
582 unsigned char t_val = 0; 582 unsigned char t_val = 0;
583 struct scatterlist t_sg = { 0 }; 583 struct scatterlist t_sg = { 0 };
@@ -591,12 +591,12 @@ static int h_mspro_block_transfer_data(struct memstick_dev *card,
591 switch ((*mrq)->tpc) { 591 switch ((*mrq)->tpc) {
592 case MS_TPC_WRITE_REG: 592 case MS_TPC_WRITE_REG:
593 memstick_init_req(*mrq, MS_TPC_SET_CMD, &msb->transfer_cmd, 1); 593 memstick_init_req(*mrq, MS_TPC_SET_CMD, &msb->transfer_cmd, 1);
594 (*mrq)->get_int_reg = 1; 594 (*mrq)->need_card_int = 1;
595 return 0; 595 return 0;
596 case MS_TPC_SET_CMD: 596 case MS_TPC_SET_CMD:
597 t_val = (*mrq)->int_reg; 597 t_val = (*mrq)->int_reg;
598 memstick_init_req(*mrq, MS_TPC_GET_INT, NULL, 1); 598 memstick_init_req(*mrq, MS_TPC_GET_INT, NULL, 1);
599 if (host->caps & MEMSTICK_CAP_AUTO_GET_INT) 599 if (msb->caps & MEMSTICK_CAP_AUTO_GET_INT)
600 goto has_int_reg; 600 goto has_int_reg;
601 return 0; 601 return 0;
602 case MS_TPC_GET_INT: 602 case MS_TPC_GET_INT:
@@ -646,12 +646,12 @@ has_int_reg:
646 ? MS_TPC_READ_LONG_DATA 646 ? MS_TPC_READ_LONG_DATA
647 : MS_TPC_WRITE_LONG_DATA, 647 : MS_TPC_WRITE_LONG_DATA,
648 &t_sg); 648 &t_sg);
649 (*mrq)->get_int_reg = 1; 649 (*mrq)->need_card_int = 1;
650 return 0; 650 return 0;
651 case MS_TPC_READ_LONG_DATA: 651 case MS_TPC_READ_LONG_DATA:
652 case MS_TPC_WRITE_LONG_DATA: 652 case MS_TPC_WRITE_LONG_DATA:
653 msb->current_page++; 653 msb->current_page++;
654 if (host->caps & MEMSTICK_CAP_AUTO_GET_INT) { 654 if (msb->caps & MEMSTICK_CAP_AUTO_GET_INT) {
655 t_val = (*mrq)->int_reg; 655 t_val = (*mrq)->int_reg;
656 goto has_int_reg; 656 goto has_int_reg;
657 } else { 657 } else {
@@ -816,12 +816,13 @@ static int mspro_block_wait_for_ced(struct memstick_dev *card)
816 return card->current_mrq.error; 816 return card->current_mrq.error;
817} 817}
818 818
819static int mspro_block_switch_to_parallel(struct memstick_dev *card) 819static int mspro_block_set_interface(struct memstick_dev *card,
820 unsigned char sys_reg)
820{ 821{
821 struct memstick_host *host = card->host; 822 struct memstick_host *host = card->host;
822 struct mspro_block_data *msb = memstick_get_drvdata(card); 823 struct mspro_block_data *msb = memstick_get_drvdata(card);
823 struct mspro_param_register param = { 824 struct mspro_param_register param = {
824 .system = MEMSTICK_SYS_PAR4, 825 .system = sys_reg,
825 .data_count = 0, 826 .data_count = 0,
826 .data_address = 0, 827 .data_address = 0,
827 .tpc_param = 0 828 .tpc_param = 0
@@ -833,41 +834,70 @@ static int mspro_block_switch_to_parallel(struct memstick_dev *card)
833 sizeof(param)); 834 sizeof(param));
834 memstick_new_req(host); 835 memstick_new_req(host);
835 wait_for_completion(&card->mrq_complete); 836 wait_for_completion(&card->mrq_complete);
836 if (card->current_mrq.error) 837 return card->current_mrq.error;
837 return card->current_mrq.error; 838}
839
840static int mspro_block_switch_interface(struct memstick_dev *card)
841{
842 struct memstick_host *host = card->host;
843 struct mspro_block_data *msb = memstick_get_drvdata(card);
844 int rc = 0;
845
846 if (msb->caps & MEMSTICK_CAP_PAR4)
847 rc = mspro_block_set_interface(card, MEMSTICK_SYS_PAR4);
848 else
849 return 0;
850
851 if (rc) {
852 printk(KERN_WARNING
853 "%s: could not switch to 4-bit mode, error %d\n",
854 card->dev.bus_id, rc);
855 return 0;
856 }
838 857
839 msb->system = MEMSTICK_SYS_PAR4; 858 msb->system = MEMSTICK_SYS_PAR4;
840 host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_PAR4); 859 host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_PAR4);
860 printk(KERN_INFO "%s: switching to 4-bit parallel mode\n",
861 card->dev.bus_id);
862
863 if (msb->caps & MEMSTICK_CAP_PAR8) {
864 rc = mspro_block_set_interface(card, MEMSTICK_SYS_PAR8);
865
866 if (!rc) {
867 msb->system = MEMSTICK_SYS_PAR8;
868 host->set_param(host, MEMSTICK_INTERFACE,
869 MEMSTICK_PAR8);
870 printk(KERN_INFO
871 "%s: switching to 8-bit parallel mode\n",
872 card->dev.bus_id);
873 } else
874 printk(KERN_WARNING
875 "%s: could not switch to 8-bit mode, error %d\n",
876 card->dev.bus_id, rc);
877 }
841 878
842 card->next_request = h_mspro_block_req_init; 879 card->next_request = h_mspro_block_req_init;
843 msb->mrq_handler = h_mspro_block_default; 880 msb->mrq_handler = h_mspro_block_default;
844 memstick_init_req(&card->current_mrq, MS_TPC_GET_INT, NULL, 1); 881 memstick_init_req(&card->current_mrq, MS_TPC_GET_INT, NULL, 1);
845 memstick_new_req(card->host); 882 memstick_new_req(card->host);
846 wait_for_completion(&card->mrq_complete); 883 wait_for_completion(&card->mrq_complete);
884 rc = card->current_mrq.error;
847 885
848 if (card->current_mrq.error) { 886 if (rc) {
887 printk(KERN_WARNING
888 "%s: interface error, trying to fall back to serial\n",
889 card->dev.bus_id);
849 msb->system = MEMSTICK_SYS_SERIAL; 890 msb->system = MEMSTICK_SYS_SERIAL;
850 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF); 891 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF);
851 msleep(1000); 892 msleep(10);
852 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON); 893 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON);
853 host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL); 894 host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL);
854 895
855 if (memstick_set_rw_addr(card)) 896 rc = memstick_set_rw_addr(card);
856 return card->current_mrq.error; 897 if (!rc)
857 898 rc = mspro_block_set_interface(card, msb->system);
858 param.system = msb->system;
859
860 card->next_request = h_mspro_block_req_init;
861 msb->mrq_handler = h_mspro_block_default;
862 memstick_init_req(&card->current_mrq, MS_TPC_WRITE_REG, &param,
863 sizeof(param));
864 memstick_new_req(host);
865 wait_for_completion(&card->mrq_complete);
866
867 return -EFAULT;
868 } 899 }
869 900 return rc;
870 return 0;
871} 901}
872 902
873/* Memory allocated for attributes by this function should be freed by 903/* Memory allocated for attributes by this function should be freed by
@@ -1052,16 +1082,18 @@ static int mspro_block_init_card(struct memstick_dev *card)
1052 if (memstick_set_rw_addr(card)) 1082 if (memstick_set_rw_addr(card))
1053 return -EIO; 1083 return -EIO;
1054 1084
1055 if (host->caps & MEMSTICK_CAP_PAR4) { 1085 msb->caps = host->caps;
1056 if (mspro_block_switch_to_parallel(card)) 1086 rc = mspro_block_switch_interface(card);
1057 printk(KERN_WARNING "%s: could not switch to " 1087 if (rc)
1058 "parallel interface\n", card->dev.bus_id); 1088 return rc;
1059 }
1060 1089
1090 msleep(200);
1061 rc = mspro_block_wait_for_ced(card); 1091 rc = mspro_block_wait_for_ced(card);
1062 if (rc) 1092 if (rc)
1063 return rc; 1093 return rc;
1064 dev_dbg(&card->dev, "card activated\n"); 1094 dev_dbg(&card->dev, "card activated\n");
1095 if (msb->system != MEMSTICK_SYS_SERIAL)
1096 msb->caps |= MEMSTICK_CAP_AUTO_GET_INT;
1065 1097
1066 card->next_request = h_mspro_block_req_init; 1098 card->next_request = h_mspro_block_req_init;
1067 msb->mrq_handler = h_mspro_block_get_ro; 1099 msb->mrq_handler = h_mspro_block_get_ro;
diff --git a/drivers/memstick/host/jmb38x_ms.c b/drivers/memstick/host/jmb38x_ms.c
index 03fe8783b1ee..8770a5fac3b6 100644
--- a/drivers/memstick/host/jmb38x_ms.c
+++ b/drivers/memstick/host/jmb38x_ms.c
@@ -12,6 +12,7 @@
12#include <linux/spinlock.h> 12#include <linux/spinlock.h>
13#include <linux/interrupt.h> 13#include <linux/interrupt.h>
14#include <linux/pci.h> 14#include <linux/pci.h>
15#include <linux/dma-mapping.h>
15#include <linux/delay.h> 16#include <linux/delay.h>
16#include <linux/highmem.h> 17#include <linux/highmem.h>
17#include <linux/memstick.h> 18#include <linux/memstick.h>
@@ -56,8 +57,6 @@ struct jmb38x_ms_host {
56 unsigned long timeout_jiffies; 57 unsigned long timeout_jiffies;
57 struct timer_list timer; 58 struct timer_list timer;
58 struct memstick_request *req; 59 struct memstick_request *req;
59 unsigned char eject:1,
60 use_dma:1;
61 unsigned char cmd_flags; 60 unsigned char cmd_flags;
62 unsigned char io_pos; 61 unsigned char io_pos;
63 unsigned int io_word[2]; 62 unsigned int io_word[2];
@@ -94,9 +93,22 @@ struct jmb38x_ms {
94#define HOST_CONTROL_IF_PAR4 0x1 93#define HOST_CONTROL_IF_PAR4 0x1
95#define HOST_CONTROL_IF_PAR8 0x3 94#define HOST_CONTROL_IF_PAR8 0x3
96 95
96#define STATUS_BUSY 0x00080000
97#define STATUS_MS_DAT7 0x00040000
98#define STATUS_MS_DAT6 0x00020000
99#define STATUS_MS_DAT5 0x00010000
100#define STATUS_MS_DAT4 0x00008000
101#define STATUS_MS_DAT3 0x00004000
102#define STATUS_MS_DAT2 0x00002000
103#define STATUS_MS_DAT1 0x00001000
104#define STATUS_MS_DAT0 0x00000800
97#define STATUS_HAS_MEDIA 0x00000400 105#define STATUS_HAS_MEDIA 0x00000400
98#define STATUS_FIFO_EMPTY 0x00000200 106#define STATUS_FIFO_EMPTY 0x00000200
99#define STATUS_FIFO_FULL 0x00000100 107#define STATUS_FIFO_FULL 0x00000100
108#define STATUS_MS_CED 0x00000080
109#define STATUS_MS_ERR 0x00000040
110#define STATUS_MS_BRQ 0x00000020
111#define STATUS_MS_CNK 0x00000001
100 112
101#define INT_STATUS_TPC_ERR 0x00080000 113#define INT_STATUS_TPC_ERR 0x00080000
102#define INT_STATUS_CRC_ERR 0x00040000 114#define INT_STATUS_CRC_ERR 0x00040000
@@ -119,11 +131,17 @@ struct jmb38x_ms {
119#define PAD_PU_PD_ON_MS_SOCK0 0x5f8f0000 131#define PAD_PU_PD_ON_MS_SOCK0 0x5f8f0000
120#define PAD_PU_PD_ON_MS_SOCK1 0x0f0f0000 132#define PAD_PU_PD_ON_MS_SOCK1 0x0f0f0000
121 133
134#define CLOCK_CONTROL_40MHZ 0x00000001
135#define CLOCK_CONTROL_50MHZ 0x00000002
136#define CLOCK_CONTROL_60MHZ 0x00000008
137#define CLOCK_CONTROL_62_5MHZ 0x0000000c
138#define CLOCK_CONTROL_OFF 0x00000000
139
122enum { 140enum {
123 CMD_READY = 0x01, 141 CMD_READY = 0x01,
124 FIFO_READY = 0x02, 142 FIFO_READY = 0x02,
125 REG_DATA = 0x04, 143 REG_DATA = 0x04,
126 AUTO_GET_INT = 0x08 144 DMA_DATA = 0x08
127}; 145};
128 146
129static unsigned int jmb38x_ms_read_data(struct jmb38x_ms_host *host, 147static unsigned int jmb38x_ms_read_data(struct jmb38x_ms_host *host,
@@ -273,7 +291,7 @@ static int jmb38x_ms_transfer_data(struct jmb38x_ms_host *host)
273{ 291{
274 unsigned int length; 292 unsigned int length;
275 unsigned int off; 293 unsigned int off;
276 unsigned int t_size, p_off, p_cnt; 294 unsigned int t_size, p_cnt;
277 unsigned char *buf; 295 unsigned char *buf;
278 struct page *pg; 296 struct page *pg;
279 unsigned long flags = 0; 297 unsigned long flags = 0;
@@ -287,6 +305,8 @@ static int jmb38x_ms_transfer_data(struct jmb38x_ms_host *host)
287 } 305 }
288 306
289 while (length) { 307 while (length) {
308 unsigned int uninitialized_var(p_off);
309
290 if (host->req->long_data) { 310 if (host->req->long_data) {
291 pg = nth_page(sg_page(&host->req->sg), 311 pg = nth_page(sg_page(&host->req->sg),
292 off >> PAGE_SHIFT); 312 off >> PAGE_SHIFT);
@@ -364,28 +384,27 @@ static int jmb38x_ms_issue_cmd(struct memstick_host *msh)
364 cmd |= TPC_DIR; 384 cmd |= TPC_DIR;
365 if (host->req->need_card_int) 385 if (host->req->need_card_int)
366 cmd |= TPC_WAIT_INT; 386 cmd |= TPC_WAIT_INT;
367 if (host->req->get_int_reg)
368 cmd |= TPC_GET_INT;
369 387
370 data = host->req->data; 388 data = host->req->data;
371 389
372 host->use_dma = !no_dma; 390 if (!no_dma)
391 host->cmd_flags |= DMA_DATA;
373 392
374 if (host->req->long_data) { 393 if (host->req->long_data) {
375 data_len = host->req->sg.length; 394 data_len = host->req->sg.length;
376 } else { 395 } else {
377 data_len = host->req->data_len; 396 data_len = host->req->data_len;
378 host->use_dma = 0; 397 host->cmd_flags &= ~DMA_DATA;
379 } 398 }
380 399
381 if (data_len <= 8) { 400 if (data_len <= 8) {
382 cmd &= ~(TPC_DATA_SEL | 0xf); 401 cmd &= ~(TPC_DATA_SEL | 0xf);
383 host->cmd_flags |= REG_DATA; 402 host->cmd_flags |= REG_DATA;
384 cmd |= data_len & 0xf; 403 cmd |= data_len & 0xf;
385 host->use_dma = 0; 404 host->cmd_flags &= ~DMA_DATA;
386 } 405 }
387 406
388 if (host->use_dma) { 407 if (host->cmd_flags & DMA_DATA) {
389 if (1 != pci_map_sg(host->chip->pdev, &host->req->sg, 1, 408 if (1 != pci_map_sg(host->chip->pdev, &host->req->sg, 1,
390 host->req->data_dir == READ 409 host->req->data_dir == READ
391 ? PCI_DMA_FROMDEVICE 410 ? PCI_DMA_FROMDEVICE
@@ -448,13 +467,12 @@ static void jmb38x_ms_complete_cmd(struct memstick_host *msh, int last)
448 readl(host->addr + INT_STATUS)); 467 readl(host->addr + INT_STATUS));
449 dev_dbg(msh->cdev.dev, "c hstatus %08x\n", readl(host->addr + STATUS)); 468 dev_dbg(msh->cdev.dev, "c hstatus %08x\n", readl(host->addr + STATUS));
450 469
451 if (host->req->get_int_reg) { 470 host->req->int_reg = readl(host->addr + STATUS) & 0xff;
452 t_val = readl(host->addr + TPC_P0); 471
453 host->req->int_reg = (t_val & 0xff); 472 writel(0, host->addr + BLOCK);
454 } 473 writel(0, host->addr + DMA_CONTROL);
455 474
456 if (host->use_dma) { 475 if (host->cmd_flags & DMA_DATA) {
457 writel(0, host->addr + DMA_CONTROL);
458 pci_unmap_sg(host->chip->pdev, &host->req->sg, 1, 476 pci_unmap_sg(host->chip->pdev, &host->req->sg, 1,
459 host->req->data_dir == READ 477 host->req->data_dir == READ
460 ? PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE); 478 ? PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE);
@@ -506,7 +524,7 @@ static irqreturn_t jmb38x_ms_isr(int irq, void *dev_id)
506 else 524 else
507 host->req->error = -ETIME; 525 host->req->error = -ETIME;
508 } else { 526 } else {
509 if (host->use_dma) { 527 if (host->cmd_flags & DMA_DATA) {
510 if (irq_status & INT_STATUS_EOTRAN) 528 if (irq_status & INT_STATUS_EOTRAN)
511 host->cmd_flags |= FIFO_READY; 529 host->cmd_flags |= FIFO_READY;
512 } else { 530 } else {
@@ -595,19 +613,18 @@ static void jmb38x_ms_reset(struct jmb38x_ms_host *host)
595{ 613{
596 unsigned int host_ctl = readl(host->addr + HOST_CONTROL); 614 unsigned int host_ctl = readl(host->addr + HOST_CONTROL);
597 615
598 writel(host_ctl | HOST_CONTROL_RESET_REQ | HOST_CONTROL_RESET, 616 writel(HOST_CONTROL_RESET_REQ, host->addr + HOST_CONTROL);
599 host->addr + HOST_CONTROL);
600 617
601 while (HOST_CONTROL_RESET_REQ 618 while (HOST_CONTROL_RESET_REQ
602 & (host_ctl = readl(host->addr + HOST_CONTROL))) { 619 & (host_ctl = readl(host->addr + HOST_CONTROL))) {
603 ndelay(100); 620 ndelay(20);
604 dev_dbg(&host->chip->pdev->dev, "reset\n"); 621 dev_dbg(&host->chip->pdev->dev, "reset %08x\n", host_ctl);
605 } 622 }
606 623
607 writel(INT_STATUS_ALL, host->addr + INT_STATUS_ENABLE); 624 writel(HOST_CONTROL_RESET, host->addr + HOST_CONTROL);
625 mmiowb();
608 writel(INT_STATUS_ALL, host->addr + INT_SIGNAL_ENABLE); 626 writel(INT_STATUS_ALL, host->addr + INT_SIGNAL_ENABLE);
609 627 writel(INT_STATUS_ALL, host->addr + INT_STATUS_ENABLE);
610 dev_dbg(&host->chip->pdev->dev, "reset\n");
611} 628}
612 629
613static void jmb38x_ms_set_param(struct memstick_host *msh, 630static void jmb38x_ms_set_param(struct memstick_host *msh,
@@ -615,10 +632,8 @@ static void jmb38x_ms_set_param(struct memstick_host *msh,
615 int value) 632 int value)
616{ 633{
617 struct jmb38x_ms_host *host = memstick_priv(msh); 634 struct jmb38x_ms_host *host = memstick_priv(msh);
618 unsigned int host_ctl; 635 unsigned int host_ctl = readl(host->addr + HOST_CONTROL);
619 unsigned long flags; 636 unsigned int clock_ctl = CLOCK_CONTROL_40MHZ, clock_delay = 0;
620
621 spin_lock_irqsave(&host->lock, flags);
622 637
623 switch (param) { 638 switch (param) {
624 case MEMSTICK_POWER: 639 case MEMSTICK_POWER:
@@ -626,60 +641,57 @@ static void jmb38x_ms_set_param(struct memstick_host *msh,
626 jmb38x_ms_reset(host); 641 jmb38x_ms_reset(host);
627 642
628 writel(host->id ? PAD_PU_PD_ON_MS_SOCK1 643 writel(host->id ? PAD_PU_PD_ON_MS_SOCK1
629 : PAD_PU_PD_ON_MS_SOCK0, 644 : PAD_PU_PD_ON_MS_SOCK0,
630 host->addr + PAD_PU_PD); 645 host->addr + PAD_PU_PD);
631 646
632 writel(PAD_OUTPUT_ENABLE_MS, 647 writel(PAD_OUTPUT_ENABLE_MS,
633 host->addr + PAD_OUTPUT_ENABLE); 648 host->addr + PAD_OUTPUT_ENABLE);
634 649
635 host_ctl = readl(host->addr + HOST_CONTROL); 650 host_ctl = 7;
636 host_ctl |= 7; 651 host_ctl |= HOST_CONTROL_POWER_EN
637 writel(host_ctl | (HOST_CONTROL_POWER_EN 652 | HOST_CONTROL_CLOCK_EN;
638 | HOST_CONTROL_CLOCK_EN), 653 writel(host_ctl, host->addr + HOST_CONTROL);
639 host->addr + HOST_CONTROL);
640 654
641 dev_dbg(&host->chip->pdev->dev, "power on\n"); 655 dev_dbg(&host->chip->pdev->dev, "power on\n");
642 } else if (value == MEMSTICK_POWER_OFF) { 656 } else if (value == MEMSTICK_POWER_OFF) {
643 writel(readl(host->addr + HOST_CONTROL) 657 host_ctl &= ~(HOST_CONTROL_POWER_EN
644 & ~(HOST_CONTROL_POWER_EN 658 | HOST_CONTROL_CLOCK_EN);
645 | HOST_CONTROL_CLOCK_EN), 659 writel(host_ctl, host->addr + HOST_CONTROL);
646 host->addr + HOST_CONTROL);
647 writel(0, host->addr + PAD_OUTPUT_ENABLE); 660 writel(0, host->addr + PAD_OUTPUT_ENABLE);
648 writel(PAD_PU_PD_OFF, host->addr + PAD_PU_PD); 661 writel(PAD_PU_PD_OFF, host->addr + PAD_PU_PD);
649 dev_dbg(&host->chip->pdev->dev, "power off\n"); 662 dev_dbg(&host->chip->pdev->dev, "power off\n");
650 } 663 }
651 break; 664 break;
652 case MEMSTICK_INTERFACE: 665 case MEMSTICK_INTERFACE:
653 /* jmb38x_ms_reset(host); */
654
655 host_ctl = readl(host->addr + HOST_CONTROL);
656 host_ctl &= ~(3 << HOST_CONTROL_IF_SHIFT); 666 host_ctl &= ~(3 << HOST_CONTROL_IF_SHIFT);
657 /* host_ctl |= 7; */
658 667
659 if (value == MEMSTICK_SERIAL) { 668 if (value == MEMSTICK_SERIAL) {
660 host_ctl &= ~HOST_CONTROL_FAST_CLK; 669 host_ctl &= ~HOST_CONTROL_FAST_CLK;
661 host_ctl |= HOST_CONTROL_IF_SERIAL 670 host_ctl |= HOST_CONTROL_IF_SERIAL
662 << HOST_CONTROL_IF_SHIFT; 671 << HOST_CONTROL_IF_SHIFT;
663 host_ctl |= HOST_CONTROL_REI; 672 host_ctl |= HOST_CONTROL_REI;
664 writel(0, host->addr + CLOCK_DELAY); 673 clock_ctl = CLOCK_CONTROL_40MHZ;
674 clock_delay = 0;
665 } else if (value == MEMSTICK_PAR4) { 675 } else if (value == MEMSTICK_PAR4) {
666 host_ctl |= HOST_CONTROL_FAST_CLK; 676 host_ctl |= HOST_CONTROL_FAST_CLK;
667 host_ctl |= HOST_CONTROL_IF_PAR4 677 host_ctl |= HOST_CONTROL_IF_PAR4
668 << HOST_CONTROL_IF_SHIFT; 678 << HOST_CONTROL_IF_SHIFT;
669 host_ctl &= ~HOST_CONTROL_REI; 679 host_ctl &= ~HOST_CONTROL_REI;
670 writel(4, host->addr + CLOCK_DELAY); 680 clock_ctl = CLOCK_CONTROL_40MHZ;
681 clock_delay = 4;
671 } else if (value == MEMSTICK_PAR8) { 682 } else if (value == MEMSTICK_PAR8) {
672 host_ctl |= HOST_CONTROL_FAST_CLK; 683 host_ctl |= HOST_CONTROL_FAST_CLK;
673 host_ctl |= HOST_CONTROL_IF_PAR8 684 host_ctl |= HOST_CONTROL_IF_PAR8
674 << HOST_CONTROL_IF_SHIFT; 685 << HOST_CONTROL_IF_SHIFT;
675 host_ctl &= ~HOST_CONTROL_REI; 686 host_ctl &= ~HOST_CONTROL_REI;
676 writel(4, host->addr + CLOCK_DELAY); 687 clock_ctl = CLOCK_CONTROL_60MHZ;
688 clock_delay = 0;
677 } 689 }
678 writel(host_ctl, host->addr + HOST_CONTROL); 690 writel(host_ctl, host->addr + HOST_CONTROL);
691 writel(clock_ctl, host->addr + CLOCK_CONTROL);
692 writel(clock_delay, host->addr + CLOCK_DELAY);
679 break; 693 break;
680 }; 694 };
681
682 spin_unlock_irqrestore(&host->lock, flags);
683} 695}
684 696
685#ifdef CONFIG_PM 697#ifdef CONFIG_PM
@@ -772,13 +784,10 @@ static struct memstick_host *jmb38x_ms_alloc_host(struct jmb38x_ms *jm, int cnt)
772 snprintf(host->host_id, DEVICE_ID_SIZE, DRIVER_NAME ":slot%d", 784 snprintf(host->host_id, DEVICE_ID_SIZE, DRIVER_NAME ":slot%d",
773 host->id); 785 host->id);
774 host->irq = jm->pdev->irq; 786 host->irq = jm->pdev->irq;
775 host->timeout_jiffies = msecs_to_jiffies(4000); 787 host->timeout_jiffies = msecs_to_jiffies(1000);
776 msh->request = jmb38x_ms_request; 788 msh->request = jmb38x_ms_request;
777 msh->set_param = jmb38x_ms_set_param; 789 msh->set_param = jmb38x_ms_set_param;
778 /* 790
779 msh->caps = MEMSTICK_CAP_AUTO_GET_INT | MEMSTICK_CAP_PAR4
780 | MEMSTICK_CAP_PAR8;
781 */
782 msh->caps = MEMSTICK_CAP_PAR4 | MEMSTICK_CAP_PAR8; 791 msh->caps = MEMSTICK_CAP_PAR4 | MEMSTICK_CAP_PAR8;
783 792
784 setup_timer(&host->timer, jmb38x_ms_abort, (unsigned long)msh); 793 setup_timer(&host->timer, jmb38x_ms_abort, (unsigned long)msh);
diff --git a/drivers/memstick/host/tifm_ms.c b/drivers/memstick/host/tifm_ms.c
index 2b5bf52a8302..eb150dfb637f 100644
--- a/drivers/memstick/host/tifm_ms.c
+++ b/drivers/memstick/host/tifm_ms.c
@@ -340,11 +340,20 @@ static void tifm_ms_complete_cmd(struct tifm_ms *host)
340 340
341 del_timer(&host->timer); 341 del_timer(&host->timer);
342 342
343 if (host->use_dma) 343 host->req->int_reg = readl(sock->addr + SOCK_MS_STATUS) & 0xff;
344 host->req->int_reg = (host->req->int_reg & 1)
345 | ((host->req->int_reg << 4) & 0xe0);
346
347 writel(TIFM_FIFO_INT_SETALL,
348 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR);
349 writel(TIFM_DMA_RESET, sock->addr + SOCK_DMA_CONTROL);
350
351 if (host->use_dma) {
344 tifm_unmap_sg(sock, &host->req->sg, 1, 352 tifm_unmap_sg(sock, &host->req->sg, 1,
345 host->req->data_dir == READ 353 host->req->data_dir == READ
346 ? PCI_DMA_FROMDEVICE 354 ? PCI_DMA_FROMDEVICE
347 : PCI_DMA_TODEVICE); 355 : PCI_DMA_TODEVICE);
356 }
348 357
349 writel((~TIFM_CTRL_LED) & readl(sock->addr + SOCK_CONTROL), 358 writel((~TIFM_CTRL_LED) & readl(sock->addr + SOCK_CONTROL),
350 sock->addr + SOCK_CONTROL); 359 sock->addr + SOCK_CONTROL);
@@ -424,12 +433,6 @@ static void tifm_ms_card_event(struct tifm_dev *sock)
424 else if (host_status & TIFM_MS_STAT_CRC) 433 else if (host_status & TIFM_MS_STAT_CRC)
425 host->req->error = -EILSEQ; 434 host->req->error = -EILSEQ;
426 435
427 if (host->req->error) {
428 writel(TIFM_FIFO_INT_SETALL,
429 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR);
430 writel(TIFM_DMA_RESET, sock->addr + SOCK_DMA_CONTROL);
431 }
432
433 if (host_status & TIFM_MS_STAT_RDY) 436 if (host_status & TIFM_MS_STAT_RDY)
434 host->cmd_flags |= CMD_READY; 437 host->cmd_flags |= CMD_READY;
435 438
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index 6b6df8679585..c6be6eba7dc3 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -1430,6 +1430,98 @@ mpt_get_product_name(u16 vendor, u16 device, u8 revision, char *prod_name)
1430 sprintf(prod_name, "%s", product_str); 1430 sprintf(prod_name, "%s", product_str);
1431} 1431}
1432 1432
1433/**
1434 * mpt_mapresources - map in memory mapped io
1435 * @ioc: Pointer to pointer to IOC adapter
1436 *
1437 **/
1438static int
1439mpt_mapresources(MPT_ADAPTER *ioc)
1440{
1441 u8 __iomem *mem;
1442 int ii;
1443 unsigned long mem_phys;
1444 unsigned long port;
1445 u32 msize;
1446 u32 psize;
1447 u8 revision;
1448 int r = -ENODEV;
1449 struct pci_dev *pdev;
1450
1451 pdev = ioc->pcidev;
1452 ioc->bars = pci_select_bars(pdev, IORESOURCE_MEM);
1453 if (pci_enable_device_mem(pdev)) {
1454 printk(MYIOC_s_ERR_FMT "pci_enable_device_mem() "
1455 "failed\n", ioc->name);
1456 return r;
1457 }
1458 if (pci_request_selected_regions(pdev, ioc->bars, "mpt")) {
1459 printk(MYIOC_s_ERR_FMT "pci_request_selected_regions() with "
1460 "MEM failed\n", ioc->name);
1461 return r;
1462 }
1463
1464 pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision);
1465
1466 if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK)
1467 && !pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK)) {
1468 dinitprintk(ioc, printk(MYIOC_s_INFO_FMT
1469 ": 64 BIT PCI BUS DMA ADDRESSING SUPPORTED\n",
1470 ioc->name));
1471 } else if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK)
1472 && !pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK)) {
1473 dinitprintk(ioc, printk(MYIOC_s_INFO_FMT
1474 ": 32 BIT PCI BUS DMA ADDRESSING SUPPORTED\n",
1475 ioc->name));
1476 } else {
1477 printk(MYIOC_s_WARN_FMT "no suitable DMA mask for %s\n",
1478 ioc->name, pci_name(pdev));
1479 pci_release_selected_regions(pdev, ioc->bars);
1480 return r;
1481 }
1482
1483 mem_phys = msize = 0;
1484 port = psize = 0;
1485 for (ii = 0; ii < DEVICE_COUNT_RESOURCE; ii++) {
1486 if (pci_resource_flags(pdev, ii) & PCI_BASE_ADDRESS_SPACE_IO) {
1487 if (psize)
1488 continue;
1489 /* Get I/O space! */
1490 port = pci_resource_start(pdev, ii);
1491 psize = pci_resource_len(pdev, ii);
1492 } else {
1493 if (msize)
1494 continue;
1495 /* Get memmap */
1496 mem_phys = pci_resource_start(pdev, ii);
1497 msize = pci_resource_len(pdev, ii);
1498 }
1499 }
1500 ioc->mem_size = msize;
1501
1502 mem = NULL;
1503 /* Get logical ptr for PciMem0 space */
1504 /*mem = ioremap(mem_phys, msize);*/
1505 mem = ioremap(mem_phys, msize);
1506 if (mem == NULL) {
1507 printk(MYIOC_s_ERR_FMT ": ERROR - Unable to map adapter"
1508 " memory!\n", ioc->name);
1509 return -EINVAL;
1510 }
1511 ioc->memmap = mem;
1512 dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "mem = %p, mem_phys = %lx\n",
1513 ioc->name, mem, mem_phys));
1514
1515 ioc->mem_phys = mem_phys;
1516 ioc->chip = (SYSIF_REGS __iomem *)mem;
1517
1518 /* Save Port IO values in case we need to do downloadboot */
1519 ioc->pio_mem_phys = port;
1520 ioc->pio_chip = (SYSIF_REGS __iomem *)port;
1521
1522 return 0;
1523}
1524
1433/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 1525/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
1434/** 1526/**
1435 * mpt_attach - Install a PCI intelligent MPT adapter. 1527 * mpt_attach - Install a PCI intelligent MPT adapter.
@@ -1452,13 +1544,6 @@ int
1452mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id) 1544mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
1453{ 1545{
1454 MPT_ADAPTER *ioc; 1546 MPT_ADAPTER *ioc;
1455 u8 __iomem *mem;
1456 u8 __iomem *pmem;
1457 unsigned long mem_phys;
1458 unsigned long port;
1459 u32 msize;
1460 u32 psize;
1461 int ii;
1462 u8 cb_idx; 1547 u8 cb_idx;
1463 int r = -ENODEV; 1548 int r = -ENODEV;
1464 u8 revision; 1549 u8 revision;
@@ -1468,52 +1553,32 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
1468 struct proc_dir_entry *dent, *ent; 1553 struct proc_dir_entry *dent, *ent;
1469#endif 1554#endif
1470 1555
1471 if (mpt_debug_level)
1472 printk(KERN_INFO MYNAM ": mpt_debug_level=%xh\n", mpt_debug_level);
1473
1474 ioc = kzalloc(sizeof(MPT_ADAPTER), GFP_ATOMIC); 1556 ioc = kzalloc(sizeof(MPT_ADAPTER), GFP_ATOMIC);
1475 if (ioc == NULL) { 1557 if (ioc == NULL) {
1476 printk(KERN_ERR MYNAM ": ERROR - Insufficient memory to add adapter!\n"); 1558 printk(KERN_ERR MYNAM ": ERROR - Insufficient memory to add adapter!\n");
1477 return -ENOMEM; 1559 return -ENOMEM;
1478 } 1560 }
1479 ioc->debug_level = mpt_debug_level; 1561
1480 ioc->id = mpt_ids++; 1562 ioc->id = mpt_ids++;
1481 sprintf(ioc->name, "ioc%d", ioc->id); 1563 sprintf(ioc->name, "ioc%d", ioc->id);
1482 1564
1483 ioc->bars = pci_select_bars(pdev, IORESOURCE_MEM); 1565 /*
1484 if (pci_enable_device_mem(pdev)) { 1566 * set initial debug level
1485 printk(MYIOC_s_ERR_FMT "pci_enable_device_mem() " 1567 * (refer to mptdebug.h)
1486 "failed\n", ioc->name); 1568 *
1487 kfree(ioc); 1569 */
1488 return r; 1570 ioc->debug_level = mpt_debug_level;
1489 } 1571 if (mpt_debug_level)
1490 if (pci_request_selected_regions(pdev, ioc->bars, "mpt")) { 1572 printk(KERN_INFO "mpt_debug_level=%xh\n", mpt_debug_level);
1491 printk(MYIOC_s_ERR_FMT "pci_request_selected_regions() with "
1492 "MEM failed\n", ioc->name);
1493 kfree(ioc);
1494 return r;
1495 }
1496 1573
1497 dinitprintk(ioc, printk(MYIOC_s_INFO_FMT ": mpt_adapter_install\n", ioc->name)); 1574 dinitprintk(ioc, printk(MYIOC_s_INFO_FMT ": mpt_adapter_install\n", ioc->name));
1498 1575
1499 if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK)) { 1576 ioc->pcidev = pdev;
1500 dprintk(ioc, printk(MYIOC_s_INFO_FMT 1577 if (mpt_mapresources(ioc)) {
1501 ": 64 BIT PCI BUS DMA ADDRESSING SUPPORTED\n", ioc->name));
1502 } else if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
1503 printk(MYIOC_s_WARN_FMT ": 32 BIT PCI BUS DMA ADDRESSING NOT SUPPORTED\n",
1504 ioc->name);
1505 kfree(ioc); 1578 kfree(ioc);
1506 return r; 1579 return r;
1507 } 1580 }
1508 1581
1509 if (!pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK)) {
1510 dprintk(ioc, printk(MYIOC_s_INFO_FMT
1511 ": Using 64 bit consistent mask\n", ioc->name));
1512 } else {
1513 dprintk(ioc, printk(MYIOC_s_INFO_FMT
1514 ": Not using 64 bit consistent mask\n", ioc->name));
1515 }
1516
1517 ioc->alloc_total = sizeof(MPT_ADAPTER); 1582 ioc->alloc_total = sizeof(MPT_ADAPTER);
1518 ioc->req_sz = MPT_DEFAULT_FRAME_SIZE; /* avoid div by zero! */ 1583 ioc->req_sz = MPT_DEFAULT_FRAME_SIZE; /* avoid div by zero! */
1519 ioc->reply_sz = MPT_REPLY_FRAME_SIZE; 1584 ioc->reply_sz = MPT_REPLY_FRAME_SIZE;
@@ -1551,48 +1616,9 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
1551 /* Find lookup slot. */ 1616 /* Find lookup slot. */
1552 INIT_LIST_HEAD(&ioc->list); 1617 INIT_LIST_HEAD(&ioc->list);
1553 1618
1554 mem_phys = msize = 0;
1555 port = psize = 0;
1556 for (ii=0; ii < DEVICE_COUNT_RESOURCE; ii++) {
1557 if (pci_resource_flags(pdev, ii) & PCI_BASE_ADDRESS_SPACE_IO) {
1558 if (psize)
1559 continue;
1560 /* Get I/O space! */
1561 port = pci_resource_start(pdev, ii);
1562 psize = pci_resource_len(pdev,ii);
1563 } else {
1564 if (msize)
1565 continue;
1566 /* Get memmap */
1567 mem_phys = pci_resource_start(pdev, ii);
1568 msize = pci_resource_len(pdev,ii);
1569 }
1570 }
1571 ioc->mem_size = msize;
1572
1573 mem = NULL;
1574 /* Get logical ptr for PciMem0 space */
1575 /*mem = ioremap(mem_phys, msize);*/
1576 mem = ioremap(mem_phys, msize);
1577 if (mem == NULL) {
1578 printk(MYIOC_s_ERR_FMT "Unable to map adapter memory!\n", ioc->name);
1579 kfree(ioc);
1580 return -EINVAL;
1581 }
1582 ioc->memmap = mem;
1583 dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "mem = %p, mem_phys = %lx\n", ioc->name, mem, mem_phys));
1584
1585 dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "facts @ %p, pfacts[0] @ %p\n", 1619 dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "facts @ %p, pfacts[0] @ %p\n",
1586 ioc->name, &ioc->facts, &ioc->pfacts[0])); 1620 ioc->name, &ioc->facts, &ioc->pfacts[0]));
1587 1621
1588 ioc->mem_phys = mem_phys;
1589 ioc->chip = (SYSIF_REGS __iomem *)mem;
1590
1591 /* Save Port IO values in case we need to do downloadboot */
1592 ioc->pio_mem_phys = port;
1593 pmem = (u8 __iomem *)port;
1594 ioc->pio_chip = (SYSIF_REGS __iomem *)pmem;
1595
1596 pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision); 1622 pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision);
1597 mpt_get_product_name(pdev->vendor, pdev->device, revision, ioc->prod_name); 1623 mpt_get_product_name(pdev->vendor, pdev->device, revision, ioc->prod_name);
1598 1624
@@ -1688,7 +1714,9 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
1688 list_del(&ioc->list); 1714 list_del(&ioc->list);
1689 if (ioc->alt_ioc) 1715 if (ioc->alt_ioc)
1690 ioc->alt_ioc->alt_ioc = NULL; 1716 ioc->alt_ioc->alt_ioc = NULL;
1691 iounmap(mem); 1717 iounmap(ioc->memmap);
1718 if (r != -5)
1719 pci_release_selected_regions(pdev, ioc->bars);
1692 kfree(ioc); 1720 kfree(ioc);
1693 pci_set_drvdata(pdev, NULL); 1721 pci_set_drvdata(pdev, NULL);
1694 return r; 1722 return r;
@@ -1784,13 +1812,10 @@ mpt_suspend(struct pci_dev *pdev, pm_message_t state)
1784 u32 device_state; 1812 u32 device_state;
1785 MPT_ADAPTER *ioc = pci_get_drvdata(pdev); 1813 MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
1786 1814
1787 device_state=pci_choose_state(pdev, state); 1815 device_state = pci_choose_state(pdev, state);
1788 1816 printk(MYIOC_s_INFO_FMT "pci-suspend: pdev=0x%p, slot=%s, Entering "
1789 printk(MYIOC_s_INFO_FMT 1817 "operating state [D%d]\n", ioc->name, pdev, pci_name(pdev),
1790 "pci-suspend: pdev=0x%p, slot=%s, Entering operating state [D%d]\n", 1818 device_state);
1791 ioc->name, pdev, pci_name(pdev), device_state);
1792
1793 pci_save_state(pdev);
1794 1819
1795 /* put ioc into READY_STATE */ 1820 /* put ioc into READY_STATE */
1796 if(SendIocReset(ioc, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, CAN_SLEEP)) { 1821 if(SendIocReset(ioc, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, CAN_SLEEP)) {
@@ -1805,10 +1830,14 @@ mpt_suspend(struct pci_dev *pdev, pm_message_t state)
1805 /* Clear any lingering interrupt */ 1830 /* Clear any lingering interrupt */
1806 CHIPREG_WRITE32(&ioc->chip->IntStatus, 0); 1831 CHIPREG_WRITE32(&ioc->chip->IntStatus, 0);
1807 1832
1833 free_irq(ioc->pci_irq, ioc);
1834 if (mpt_msi_enable)
1835 pci_disable_msi(ioc->pcidev);
1836 ioc->pci_irq = -1;
1837 pci_save_state(pdev);
1808 pci_disable_device(pdev); 1838 pci_disable_device(pdev);
1809 pci_release_selected_regions(pdev, ioc->bars); 1839 pci_release_selected_regions(pdev, ioc->bars);
1810 pci_set_power_state(pdev, device_state); 1840 pci_set_power_state(pdev, device_state);
1811
1812 return 0; 1841 return 0;
1813} 1842}
1814 1843
@@ -1823,48 +1852,54 @@ mpt_resume(struct pci_dev *pdev)
1823 MPT_ADAPTER *ioc = pci_get_drvdata(pdev); 1852 MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
1824 u32 device_state = pdev->current_state; 1853 u32 device_state = pdev->current_state;
1825 int recovery_state; 1854 int recovery_state;
1855 int err;
1826 1856
1827 printk(MYIOC_s_INFO_FMT 1857 printk(MYIOC_s_INFO_FMT "pci-resume: pdev=0x%p, slot=%s, Previous "
1828 "pci-resume: pdev=0x%p, slot=%s, Previous operating state [D%d]\n", 1858 "operating state [D%d]\n", ioc->name, pdev, pci_name(pdev),
1829 ioc->name, pdev, pci_name(pdev), device_state); 1859 device_state);
1830 1860
1831 pci_set_power_state(pdev, 0); 1861 pci_set_power_state(pdev, PCI_D0);
1862 pci_enable_wake(pdev, PCI_D0, 0);
1832 pci_restore_state(pdev); 1863 pci_restore_state(pdev);
1833 if (ioc->facts.Flags & MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT) { 1864 ioc->pcidev = pdev;
1834 ioc->bars = pci_select_bars(ioc->pcidev, IORESOURCE_MEM | 1865 err = mpt_mapresources(ioc);
1835 IORESOURCE_IO); 1866 if (err)
1836 if (pci_enable_device(pdev)) 1867 return err;
1837 return 0;
1838 } else {
1839 ioc->bars = pci_select_bars(pdev, IORESOURCE_MEM);
1840 if (pci_enable_device_mem(pdev))
1841 return 0;
1842 }
1843 if (pci_request_selected_regions(pdev, ioc->bars, "mpt"))
1844 return 0;
1845 1868
1846 /* enable interrupts */ 1869 printk(MYIOC_s_INFO_FMT "pci-resume: ioc-state=0x%x,doorbell=0x%x\n",
1847 CHIPREG_WRITE32(&ioc->chip->IntMask, MPI_HIM_DIM); 1870 ioc->name, (mpt_GetIocState(ioc, 1) >> MPI_IOC_STATE_SHIFT),
1848 ioc->active = 1; 1871 CHIPREG_READ32(&ioc->chip->Doorbell));
1849 1872
1850 printk(MYIOC_s_INFO_FMT 1873 /*
1851 "pci-resume: ioc-state=0x%x,doorbell=0x%x\n", 1874 * Errata workaround for SAS pci express:
1852 ioc->name, 1875 * Upon returning to the D0 state, the contents of the doorbell will be
1853 (mpt_GetIocState(ioc, 1) >> MPI_IOC_STATE_SHIFT), 1876 * stale data, and this will incorrectly signal to the host driver that
1854 CHIPREG_READ32(&ioc->chip->Doorbell)); 1877 * the firmware is ready to process mpt commands. The workaround is
1878 * to issue a diagnostic reset.
1879 */
1880 if (ioc->bus_type == SAS && (pdev->device ==
1881 MPI_MANUFACTPAGE_DEVID_SAS1068E || pdev->device ==
1882 MPI_MANUFACTPAGE_DEVID_SAS1064E)) {
1883 if (KickStart(ioc, 1, CAN_SLEEP) < 0) {
1884 printk(MYIOC_s_WARN_FMT "pci-resume: Cannot recover\n",
1885 ioc->name);
1886 goto out;
1887 }
1888 }
1855 1889
1856 /* bring ioc to operational state */ 1890 /* bring ioc to operational state */
1857 if ((recovery_state = mpt_do_ioc_recovery(ioc, 1891 printk(MYIOC_s_INFO_FMT "Sending mpt_do_ioc_recovery\n", ioc->name);
1858 MPT_HOSTEVENT_IOC_RECOVER, CAN_SLEEP)) != 0) { 1892 recovery_state = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_BRINGUP,
1859 printk(MYIOC_s_INFO_FMT 1893 CAN_SLEEP);
1860 "pci-resume: Cannot recover, error:[%x]\n", 1894 if (recovery_state != 0)
1861 ioc->name, recovery_state); 1895 printk(MYIOC_s_WARN_FMT "pci-resume: Cannot recover, "
1862 } else { 1896 "error:[%x]\n", ioc->name, recovery_state);
1897 else
1863 printk(MYIOC_s_INFO_FMT 1898 printk(MYIOC_s_INFO_FMT
1864 "pci-resume: success\n", ioc->name); 1899 "pci-resume: success\n", ioc->name);
1865 } 1900 out:
1866
1867 return 0; 1901 return 0;
1902
1868} 1903}
1869#endif 1904#endif
1870 1905
@@ -1903,6 +1938,7 @@ mpt_signal_reset(u8 index, MPT_ADAPTER *ioc, int reset_phase)
1903 * -3 if READY but PrimeIOCFifos Failed 1938 * -3 if READY but PrimeIOCFifos Failed
1904 * -4 if READY but IOCInit Failed 1939 * -4 if READY but IOCInit Failed
1905 * -5 if failed to enable_device and/or request_selected_regions 1940 * -5 if failed to enable_device and/or request_selected_regions
1941 * -6 if failed to upload firmware
1906 */ 1942 */
1907static int 1943static int
1908mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag) 1944mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
@@ -2097,7 +2133,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
2097 } else { 2133 } else {
2098 printk(MYIOC_s_WARN_FMT 2134 printk(MYIOC_s_WARN_FMT
2099 "firmware upload failure!\n", ioc->name); 2135 "firmware upload failure!\n", ioc->name);
2100 ret = -5; 2136 ret = -6;
2101 } 2137 }
2102 } 2138 }
2103 } 2139 }
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index 0c252f60c4c1..c207bda6723b 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -1170,6 +1170,10 @@ mptscsih_shutdown(struct pci_dev *pdev)
1170int 1170int
1171mptscsih_suspend(struct pci_dev *pdev, pm_message_t state) 1171mptscsih_suspend(struct pci_dev *pdev, pm_message_t state)
1172{ 1172{
1173 MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
1174
1175 scsi_block_requests(ioc->sh);
1176 flush_scheduled_work();
1173 mptscsih_shutdown(pdev); 1177 mptscsih_shutdown(pdev);
1174 return mpt_suspend(pdev,state); 1178 return mpt_suspend(pdev,state);
1175} 1179}
@@ -1183,7 +1187,12 @@ mptscsih_suspend(struct pci_dev *pdev, pm_message_t state)
1183int 1187int
1184mptscsih_resume(struct pci_dev *pdev) 1188mptscsih_resume(struct pci_dev *pdev)
1185{ 1189{
1186 return mpt_resume(pdev); 1190 MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
1191 int rc;
1192
1193 rc = mpt_resume(pdev);
1194 scsi_unblock_requests(ioc->sh);
1195 return rc;
1187} 1196}
1188 1197
1189#endif 1198#endif
diff --git a/drivers/mmc/core/Makefile b/drivers/mmc/core/Makefile
index 4985807257a8..19a1a254a0c5 100644
--- a/drivers/mmc/core/Makefile
+++ b/drivers/mmc/core/Makefile
@@ -7,7 +7,7 @@ ifeq ($(CONFIG_MMC_DEBUG),y)
7endif 7endif
8 8
9obj-$(CONFIG_MMC) += mmc_core.o 9obj-$(CONFIG_MMC) += mmc_core.o
10mmc_core-y := core.o sysfs.o bus.o host.o \ 10mmc_core-y := core.o bus.o host.o \
11 mmc.o mmc_ops.o sd.o sd_ops.o \ 11 mmc.o mmc_ops.o sd.o sd_ops.o \
12 sdio.o sdio_ops.o sdio_bus.o \ 12 sdio.o sdio_ops.o sdio_bus.o \
13 sdio_cis.o sdio_io.o sdio_irq.o 13 sdio_cis.o sdio_io.o sdio_irq.o
diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c
index b0c22cad9423..fd95b18e988b 100644
--- a/drivers/mmc/core/bus.c
+++ b/drivers/mmc/core/bus.c
@@ -17,7 +17,6 @@
17#include <linux/mmc/card.h> 17#include <linux/mmc/card.h>
18#include <linux/mmc/host.h> 18#include <linux/mmc/host.h>
19 19
20#include "sysfs.h"
21#include "core.h" 20#include "core.h"
22#include "sdio_cis.h" 21#include "sdio_cis.h"
23#include "bus.h" 22#include "bus.h"
@@ -43,7 +42,7 @@ static ssize_t mmc_type_show(struct device *dev,
43} 42}
44 43
45static struct device_attribute mmc_dev_attrs[] = { 44static struct device_attribute mmc_dev_attrs[] = {
46 MMC_ATTR_RO(type), 45 __ATTR(type, S_IRUGO, mmc_type_show, NULL),
47 __ATTR_NULL, 46 __ATTR_NULL,
48}; 47};
49 48
@@ -189,7 +188,7 @@ static void mmc_release_card(struct device *dev)
189/* 188/*
190 * Allocate and initialise a new MMC card structure. 189 * Allocate and initialise a new MMC card structure.
191 */ 190 */
192struct mmc_card *mmc_alloc_card(struct mmc_host *host) 191struct mmc_card *mmc_alloc_card(struct mmc_host *host, struct device_type *type)
193{ 192{
194 struct mmc_card *card; 193 struct mmc_card *card;
195 194
@@ -204,6 +203,7 @@ struct mmc_card *mmc_alloc_card(struct mmc_host *host)
204 card->dev.parent = mmc_classdev(host); 203 card->dev.parent = mmc_classdev(host);
205 card->dev.bus = &mmc_bus_type; 204 card->dev.bus = &mmc_bus_type;
206 card->dev.release = mmc_release_card; 205 card->dev.release = mmc_release_card;
206 card->dev.type = type;
207 207
208 return card; 208 return card;
209} 209}
@@ -248,24 +248,10 @@ int mmc_add_card(struct mmc_card *card)
248 type, card->rca); 248 type, card->rca);
249 } 249 }
250 250
251 card->dev.uevent_suppress = 1;
252
253 ret = device_add(&card->dev); 251 ret = device_add(&card->dev);
254 if (ret) 252 if (ret)
255 return ret; 253 return ret;
256 254
257 if (card->host->bus_ops->sysfs_add) {
258 ret = card->host->bus_ops->sysfs_add(card->host, card);
259 if (ret) {
260 device_del(&card->dev);
261 return ret;
262 }
263 }
264
265 card->dev.uevent_suppress = 0;
266
267 kobject_uevent(&card->dev.kobj, KOBJ_ADD);
268
269 mmc_card_set_present(card); 255 mmc_card_set_present(card);
270 256
271 return 0; 257 return 0;
@@ -285,9 +271,6 @@ void mmc_remove_card(struct mmc_card *card)
285 printk(KERN_INFO "%s: card %04x removed\n", 271 printk(KERN_INFO "%s: card %04x removed\n",
286 mmc_hostname(card->host), card->rca); 272 mmc_hostname(card->host), card->rca);
287 } 273 }
288
289 if (card->host->bus_ops->sysfs_remove)
290 card->host->bus_ops->sysfs_remove(card->host, card);
291 device_del(&card->dev); 274 device_del(&card->dev);
292 } 275 }
293 276
diff --git a/drivers/mmc/core/bus.h b/drivers/mmc/core/bus.h
index 4f35431116a8..18178766ab46 100644
--- a/drivers/mmc/core/bus.h
+++ b/drivers/mmc/core/bus.h
@@ -11,7 +11,16 @@
11#ifndef _MMC_CORE_BUS_H 11#ifndef _MMC_CORE_BUS_H
12#define _MMC_CORE_BUS_H 12#define _MMC_CORE_BUS_H
13 13
14struct mmc_card *mmc_alloc_card(struct mmc_host *host); 14#define MMC_DEV_ATTR(name, fmt, args...) \
15static ssize_t mmc_##name##_show (struct device *dev, struct device_attribute *attr, char *buf) \
16{ \
17 struct mmc_card *card = container_of(dev, struct mmc_card, dev); \
18 return sprintf(buf, fmt, args); \
19} \
20static DEVICE_ATTR(name, S_IRUGO, mmc_##name##_show, NULL)
21
22struct mmc_card *mmc_alloc_card(struct mmc_host *host,
23 struct device_type *type);
15int mmc_add_card(struct mmc_card *card); 24int mmc_add_card(struct mmc_card *card);
16void mmc_remove_card(struct mmc_card *card); 25void mmc_remove_card(struct mmc_card *card);
17 26
diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h
index 39daf2fb5dc4..cfa8e15b5923 100644
--- a/drivers/mmc/core/core.h
+++ b/drivers/mmc/core/core.h
@@ -18,8 +18,6 @@
18struct mmc_bus_ops { 18struct mmc_bus_ops {
19 void (*remove)(struct mmc_host *); 19 void (*remove)(struct mmc_host *);
20 void (*detect)(struct mmc_host *); 20 void (*detect)(struct mmc_host *);
21 int (*sysfs_add)(struct mmc_host *, struct mmc_card *card);
22 void (*sysfs_remove)(struct mmc_host *, struct mmc_card *card);
23 void (*suspend)(struct mmc_host *); 21 void (*suspend)(struct mmc_host *);
24 void (*resume)(struct mmc_host *); 22 void (*resume)(struct mmc_host *);
25}; 23};
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 68c0e3b2f0e8..3da29eef8f7d 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -17,7 +17,6 @@
17#include <linux/mmc/mmc.h> 17#include <linux/mmc/mmc.h>
18 18
19#include "core.h" 19#include "core.h"
20#include "sysfs.h"
21#include "bus.h" 20#include "bus.h"
22#include "mmc_ops.h" 21#include "mmc_ops.h"
23 22
@@ -248,6 +247,44 @@ out:
248 return err; 247 return err;
249} 248}
250 249
250MMC_DEV_ATTR(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1],
251 card->raw_cid[2], card->raw_cid[3]);
252MMC_DEV_ATTR(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1],
253 card->raw_csd[2], card->raw_csd[3]);
254MMC_DEV_ATTR(date, "%02d/%04d\n", card->cid.month, card->cid.year);
255MMC_DEV_ATTR(fwrev, "0x%x\n", card->cid.fwrev);
256MMC_DEV_ATTR(hwrev, "0x%x\n", card->cid.hwrev);
257MMC_DEV_ATTR(manfid, "0x%06x\n", card->cid.manfid);
258MMC_DEV_ATTR(name, "%s\n", card->cid.prod_name);
259MMC_DEV_ATTR(oemid, "0x%04x\n", card->cid.oemid);
260MMC_DEV_ATTR(serial, "0x%08x\n", card->cid.serial);
261
262static struct attribute *mmc_std_attrs[] = {
263 &dev_attr_cid.attr,
264 &dev_attr_csd.attr,
265 &dev_attr_date.attr,
266 &dev_attr_fwrev.attr,
267 &dev_attr_hwrev.attr,
268 &dev_attr_manfid.attr,
269 &dev_attr_name.attr,
270 &dev_attr_oemid.attr,
271 &dev_attr_serial.attr,
272 NULL,
273};
274
275static struct attribute_group mmc_std_attr_group = {
276 .attrs = mmc_std_attrs,
277};
278
279static struct attribute_group *mmc_attr_groups[] = {
280 &mmc_std_attr_group,
281 NULL,
282};
283
284static struct device_type mmc_type = {
285 .groups = mmc_attr_groups,
286};
287
251/* 288/*
252 * Handle the detection and initialisation of a card. 289 * Handle the detection and initialisation of a card.
253 * 290 *
@@ -308,7 +345,7 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
308 /* 345 /*
309 * Allocate card structure. 346 * Allocate card structure.
310 */ 347 */
311 card = mmc_alloc_card(host); 348 card = mmc_alloc_card(host, &mmc_type);
312 if (IS_ERR(card)) { 349 if (IS_ERR(card)) {
313 err = PTR_ERR(card); 350 err = PTR_ERR(card);
314 goto err; 351 goto err;
@@ -459,53 +496,6 @@ static void mmc_detect(struct mmc_host *host)
459 } 496 }
460} 497}
461 498
462MMC_ATTR_FN(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1],
463 card->raw_cid[2], card->raw_cid[3]);
464MMC_ATTR_FN(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1],
465 card->raw_csd[2], card->raw_csd[3]);
466MMC_ATTR_FN(date, "%02d/%04d\n", card->cid.month, card->cid.year);
467MMC_ATTR_FN(fwrev, "0x%x\n", card->cid.fwrev);
468MMC_ATTR_FN(hwrev, "0x%x\n", card->cid.hwrev);
469MMC_ATTR_FN(manfid, "0x%06x\n", card->cid.manfid);
470MMC_ATTR_FN(name, "%s\n", card->cid.prod_name);
471MMC_ATTR_FN(oemid, "0x%04x\n", card->cid.oemid);
472MMC_ATTR_FN(serial, "0x%08x\n", card->cid.serial);
473
474static struct device_attribute mmc_dev_attrs[] = {
475 MMC_ATTR_RO(cid),
476 MMC_ATTR_RO(csd),
477 MMC_ATTR_RO(date),
478 MMC_ATTR_RO(fwrev),
479 MMC_ATTR_RO(hwrev),
480 MMC_ATTR_RO(manfid),
481 MMC_ATTR_RO(name),
482 MMC_ATTR_RO(oemid),
483 MMC_ATTR_RO(serial),
484 __ATTR_NULL,
485};
486
487/*
488 * Adds sysfs entries as relevant.
489 */
490static int mmc_sysfs_add(struct mmc_host *host, struct mmc_card *card)
491{
492 int ret;
493
494 ret = mmc_add_attrs(card, mmc_dev_attrs);
495 if (ret < 0)
496 return ret;
497
498 return 0;
499}
500
501/*
502 * Removes the sysfs entries added by mmc_sysfs_add().
503 */
504static void mmc_sysfs_remove(struct mmc_host *host, struct mmc_card *card)
505{
506 mmc_remove_attrs(card, mmc_dev_attrs);
507}
508
509#ifdef CONFIG_MMC_UNSAFE_RESUME 499#ifdef CONFIG_MMC_UNSAFE_RESUME
510 500
511/* 501/*
@@ -560,8 +550,6 @@ static void mmc_resume(struct mmc_host *host)
560static const struct mmc_bus_ops mmc_ops = { 550static const struct mmc_bus_ops mmc_ops = {
561 .remove = mmc_remove, 551 .remove = mmc_remove,
562 .detect = mmc_detect, 552 .detect = mmc_detect,
563 .sysfs_add = mmc_sysfs_add,
564 .sysfs_remove = mmc_sysfs_remove,
565 .suspend = mmc_suspend, 553 .suspend = mmc_suspend,
566 .resume = mmc_resume, 554 .resume = mmc_resume,
567}; 555};
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index d1c1e0f592f1..7ef3b15c5e3d 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -18,7 +18,6 @@
18#include <linux/mmc/sd.h> 18#include <linux/mmc/sd.h>
19 19
20#include "core.h" 20#include "core.h"
21#include "sysfs.h"
22#include "bus.h" 21#include "bus.h"
23#include "mmc_ops.h" 22#include "mmc_ops.h"
24#include "sd_ops.h" 23#include "sd_ops.h"
@@ -283,6 +282,47 @@ out:
283 return err; 282 return err;
284} 283}
285 284
285MMC_DEV_ATTR(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1],
286 card->raw_cid[2], card->raw_cid[3]);
287MMC_DEV_ATTR(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1],
288 card->raw_csd[2], card->raw_csd[3]);
289MMC_DEV_ATTR(scr, "%08x%08x\n", card->raw_scr[0], card->raw_scr[1]);
290MMC_DEV_ATTR(date, "%02d/%04d\n", card->cid.month, card->cid.year);
291MMC_DEV_ATTR(fwrev, "0x%x\n", card->cid.fwrev);
292MMC_DEV_ATTR(hwrev, "0x%x\n", card->cid.hwrev);
293MMC_DEV_ATTR(manfid, "0x%06x\n", card->cid.manfid);
294MMC_DEV_ATTR(name, "%s\n", card->cid.prod_name);
295MMC_DEV_ATTR(oemid, "0x%04x\n", card->cid.oemid);
296MMC_DEV_ATTR(serial, "0x%08x\n", card->cid.serial);
297
298
299static struct attribute *sd_std_attrs[] = {
300 &dev_attr_cid.attr,
301 &dev_attr_csd.attr,
302 &dev_attr_scr.attr,
303 &dev_attr_date.attr,
304 &dev_attr_fwrev.attr,
305 &dev_attr_hwrev.attr,
306 &dev_attr_manfid.attr,
307 &dev_attr_name.attr,
308 &dev_attr_oemid.attr,
309 &dev_attr_serial.attr,
310 NULL,
311};
312
313static struct attribute_group sd_std_attr_group = {
314 .attrs = sd_std_attrs,
315};
316
317static struct attribute_group *sd_attr_groups[] = {
318 &sd_std_attr_group,
319 NULL,
320};
321
322static struct device_type sd_type = {
323 .groups = sd_attr_groups,
324};
325
286/* 326/*
287 * Handle the detection and initialisation of a card. 327 * Handle the detection and initialisation of a card.
288 * 328 *
@@ -352,7 +392,7 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
352 /* 392 /*
353 * Allocate card structure. 393 * Allocate card structure.
354 */ 394 */
355 card = mmc_alloc_card(host); 395 card = mmc_alloc_card(host, &sd_type);
356 if (IS_ERR(card)) { 396 if (IS_ERR(card)) {
357 err = PTR_ERR(card); 397 err = PTR_ERR(card);
358 goto err; 398 goto err;
@@ -518,55 +558,6 @@ static void mmc_sd_detect(struct mmc_host *host)
518 } 558 }
519} 559}
520 560
521MMC_ATTR_FN(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1],
522 card->raw_cid[2], card->raw_cid[3]);
523MMC_ATTR_FN(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1],
524 card->raw_csd[2], card->raw_csd[3]);
525MMC_ATTR_FN(scr, "%08x%08x\n", card->raw_scr[0], card->raw_scr[1]);
526MMC_ATTR_FN(date, "%02d/%04d\n", card->cid.month, card->cid.year);
527MMC_ATTR_FN(fwrev, "0x%x\n", card->cid.fwrev);
528MMC_ATTR_FN(hwrev, "0x%x\n", card->cid.hwrev);
529MMC_ATTR_FN(manfid, "0x%06x\n", card->cid.manfid);
530MMC_ATTR_FN(name, "%s\n", card->cid.prod_name);
531MMC_ATTR_FN(oemid, "0x%04x\n", card->cid.oemid);
532MMC_ATTR_FN(serial, "0x%08x\n", card->cid.serial);
533
534static struct device_attribute mmc_sd_dev_attrs[] = {
535 MMC_ATTR_RO(cid),
536 MMC_ATTR_RO(csd),
537 MMC_ATTR_RO(scr),
538 MMC_ATTR_RO(date),
539 MMC_ATTR_RO(fwrev),
540 MMC_ATTR_RO(hwrev),
541 MMC_ATTR_RO(manfid),
542 MMC_ATTR_RO(name),
543 MMC_ATTR_RO(oemid),
544 MMC_ATTR_RO(serial),
545 __ATTR_NULL,
546};
547
548/*
549 * Adds sysfs entries as relevant.
550 */
551static int mmc_sd_sysfs_add(struct mmc_host *host, struct mmc_card *card)
552{
553 int ret;
554
555 ret = mmc_add_attrs(card, mmc_sd_dev_attrs);
556 if (ret < 0)
557 return ret;
558
559 return 0;
560}
561
562/*
563 * Removes the sysfs entries added by mmc_sysfs_add().
564 */
565static void mmc_sd_sysfs_remove(struct mmc_host *host, struct mmc_card *card)
566{
567 mmc_remove_attrs(card, mmc_sd_dev_attrs);
568}
569
570#ifdef CONFIG_MMC_UNSAFE_RESUME 561#ifdef CONFIG_MMC_UNSAFE_RESUME
571 562
572/* 563/*
@@ -621,8 +612,6 @@ static void mmc_sd_resume(struct mmc_host *host)
621static const struct mmc_bus_ops mmc_sd_ops = { 612static const struct mmc_bus_ops mmc_sd_ops = {
622 .remove = mmc_sd_remove, 613 .remove = mmc_sd_remove,
623 .detect = mmc_sd_detect, 614 .detect = mmc_sd_detect,
624 .sysfs_add = mmc_sd_sysfs_add,
625 .sysfs_remove = mmc_sd_sysfs_remove,
626 .suspend = mmc_sd_suspend, 615 .suspend = mmc_sd_suspend,
627 .resume = mmc_sd_resume, 616 .resume = mmc_sd_resume,
628}; 617};
diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
index 87a50f456efc..4eab79e09ccc 100644
--- a/drivers/mmc/core/sdio.c
+++ b/drivers/mmc/core/sdio.c
@@ -287,7 +287,7 @@ int mmc_attach_sdio(struct mmc_host *host, u32 ocr)
287 /* 287 /*
288 * Allocate card structure. 288 * Allocate card structure.
289 */ 289 */
290 card = mmc_alloc_card(host); 290 card = mmc_alloc_card(host, NULL);
291 if (IS_ERR(card)) { 291 if (IS_ERR(card)) {
292 err = PTR_ERR(card); 292 err = PTR_ERR(card);
293 goto err; 293 goto err;
diff --git a/drivers/mmc/core/sysfs.c b/drivers/mmc/core/sysfs.c
deleted file mode 100644
index 00a97e70f914..000000000000
--- a/drivers/mmc/core/sysfs.c
+++ /dev/null
@@ -1,43 +0,0 @@
1/*
2 * linux/drivers/mmc/core/sysfs.c
3 *
4 * Copyright (C) 2003 Russell King, All Rights Reserved.
5 * Copyright 2007 Pierre Ossman
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 *
11 * MMC sysfs/driver model support.
12 */
13#include <linux/device.h>
14
15#include <linux/mmc/card.h>
16
17#include "sysfs.h"
18
19int mmc_add_attrs(struct mmc_card *card, struct device_attribute *attrs)
20{
21 int error = 0;
22 int i;
23
24 for (i = 0; attr_name(attrs[i]); i++) {
25 error = device_create_file(&card->dev, &attrs[i]);
26 if (error) {
27 while (--i >= 0)
28 device_remove_file(&card->dev, &attrs[i]);
29 break;
30 }
31 }
32
33 return error;
34}
35
36void mmc_remove_attrs(struct mmc_card *card, struct device_attribute *attrs)
37{
38 int i;
39
40 for (i = 0; attr_name(attrs[i]); i++)
41 device_remove_file(&card->dev, &attrs[i]);
42}
43
diff --git a/drivers/mmc/core/sysfs.h b/drivers/mmc/core/sysfs.h
deleted file mode 100644
index 4b8f670bd10f..000000000000
--- a/drivers/mmc/core/sysfs.h
+++ /dev/null
@@ -1,26 +0,0 @@
1/*
2 * linux/drivers/mmc/core/sysfs.h
3 *
4 * Copyright (C) 2003 Russell King, All Rights Reserved.
5 * Copyright 2007 Pierre Ossman
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11#ifndef _MMC_CORE_SYSFS_H
12#define _MMC_CORE_SYSFS_H
13
14#define MMC_ATTR_FN(name, fmt, args...) \
15static ssize_t mmc_##name##_show (struct device *dev, struct device_attribute *attr, char *buf) \
16{ \
17 struct mmc_card *card = container_of(dev, struct mmc_card, dev);\
18 return sprintf(buf, fmt, args); \
19}
20
21#define MMC_ATTR_RO(name) __ATTR(name, S_IRUGO, mmc_##name##_show, NULL)
22
23int mmc_add_attrs(struct mmc_card *card, struct device_attribute *attrs);
24void mmc_remove_attrs(struct mmc_card *card, struct device_attribute *attrs);
25
26#endif
diff --git a/drivers/mmc/host/tifm_sd.c b/drivers/mmc/host/tifm_sd.c
index 20d5c7bd940a..1c14a186f000 100644
--- a/drivers/mmc/host/tifm_sd.c
+++ b/drivers/mmc/host/tifm_sd.c
@@ -180,7 +180,7 @@ static void tifm_sd_transfer_data(struct tifm_sd *host)
180 host->sg_pos++; 180 host->sg_pos++;
181 if (host->sg_pos == host->sg_len) { 181 if (host->sg_pos == host->sg_len) {
182 if ((r_data->flags & MMC_DATA_WRITE) 182 if ((r_data->flags & MMC_DATA_WRITE)
183 && DATA_CARRY) 183 && (host->cmd_flags & DATA_CARRY))
184 writel(host->bounce_buf_data[0], 184 writel(host->bounce_buf_data[0],
185 host->dev->addr 185 host->dev->addr
186 + SOCK_MMCSD_DATA); 186 + SOCK_MMCSD_DATA);
diff --git a/drivers/net/3c501.c b/drivers/net/3c501.c
index 7d253686ed0d..5ba4bab6d43e 100644
--- a/drivers/net/3c501.c
+++ b/drivers/net/3c501.c
@@ -485,9 +485,7 @@ static int el_start_xmit(struct sk_buff *skb, struct net_device *dev)
485 printk(KERN_DEBUG "%s: burped during tx load.\n", 485 printk(KERN_DEBUG "%s: burped during tx load.\n",
486 dev->name); 486 dev->name);
487 spin_lock_irqsave(&lp->lock, flags); 487 spin_lock_irqsave(&lp->lock, flags);
488 } 488 } while (1);
489 while (1);
490
491} 489}
492 490
493/** 491/**
@@ -612,7 +610,8 @@ static irqreturn_t el_interrupt(int irq, void *dev_id)
612 dev->stats.tx_packets++; 610 dev->stats.tx_packets++;
613 if (el_debug > 6) 611 if (el_debug > 6)
614 printk(KERN_DEBUG " Tx succeeded %s\n", 612 printk(KERN_DEBUG " Tx succeeded %s\n",
615 (txsr & TX_RDY) ? "." : "but tx is busy!"); 613 (txsr & TX_RDY) ? "." :
614 "but tx is busy!");
616 /* 615 /*
617 * This is safe the interrupt is atomic WRT itself. 616 * This is safe the interrupt is atomic WRT itself.
618 */ 617 */
@@ -693,7 +692,8 @@ static void el_receive(struct net_device *dev)
693 692
694 if (pkt_len < 60 || pkt_len > 1536) { 693 if (pkt_len < 60 || pkt_len > 1536) {
695 if (el_debug) 694 if (el_debug)
696 printk(KERN_DEBUG "%s: bogus packet, length=%d\n", dev->name, pkt_len); 695 printk(KERN_DEBUG "%s: bogus packet, length=%d\n",
696 dev->name, pkt_len);
697 dev->stats.rx_over_errors++; 697 dev->stats.rx_over_errors++;
698 return; 698 return;
699 } 699 }
@@ -711,7 +711,8 @@ static void el_receive(struct net_device *dev)
711 711
712 outw(0x00, GP_LOW); 712 outw(0x00, GP_LOW);
713 if (skb == NULL) { 713 if (skb == NULL) {
714 printk(KERN_INFO "%s: Memory squeeze, dropping packet.\n", dev->name); 714 printk(KERN_INFO "%s: Memory squeeze, dropping packet.\n",
715 dev->name);
715 dev->stats.rx_dropped++; 716 dev->stats.rx_dropped++;
716 return; 717 return;
717 } else { 718 } else {
@@ -748,7 +749,8 @@ static void el_reset(struct net_device *dev)
748 if (el_debug > 2) 749 if (el_debug > 2)
749 printk(KERN_INFO "3c501 reset..."); 750 printk(KERN_INFO "3c501 reset...");
750 outb(AX_RESET, AX_CMD); /* Reset the chip */ 751 outb(AX_RESET, AX_CMD); /* Reset the chip */
751 outb(AX_LOOP, AX_CMD); /* Aux control, irq and loopback enabled */ 752 /* Aux control, irq and loopback enabled */
753 outb(AX_LOOP, AX_CMD);
752 { 754 {
753 int i; 755 int i;
754 for (i = 0; i < 6; i++) /* Set the station address. */ 756 for (i = 0; i < 6; i++) /* Set the station address. */
diff --git a/drivers/net/atl1/atl1_main.c b/drivers/net/atl1/atl1_main.c
index 9200ee59d854..129b8b3aa773 100644
--- a/drivers/net/atl1/atl1_main.c
+++ b/drivers/net/atl1/atl1_main.c
@@ -1765,15 +1765,12 @@ static irqreturn_t atl1_intr(int irq, void *data)
1765{ 1765{
1766 struct atl1_adapter *adapter = netdev_priv(data); 1766 struct atl1_adapter *adapter = netdev_priv(data);
1767 u32 status; 1767 u32 status;
1768 u8 update_rx;
1769 int max_ints = 10; 1768 int max_ints = 10;
1770 1769
1771 status = adapter->cmb.cmb->int_stats; 1770 status = adapter->cmb.cmb->int_stats;
1772 if (!status) 1771 if (!status)
1773 return IRQ_NONE; 1772 return IRQ_NONE;
1774 1773
1775 update_rx = 0;
1776
1777 do { 1774 do {
1778 /* clear CMB interrupt status at once */ 1775 /* clear CMB interrupt status at once */
1779 adapter->cmb.cmb->int_stats = 0; 1776 adapter->cmb.cmb->int_stats = 0;
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c
index 979f3fc5e765..db586870c5f4 100644
--- a/drivers/net/cxgb3/sge.c
+++ b/drivers/net/cxgb3/sge.c
@@ -1107,9 +1107,15 @@ int t3_eth_xmit(struct sk_buff *skb, struct net_device *dev)
1107 } 1107 }
1108 1108
1109 q->in_use += ndesc; 1109 q->in_use += ndesc;
1110 if (unlikely(credits - ndesc < q->stop_thres)) 1110 if (unlikely(credits - ndesc < q->stop_thres)) {
1111 if (USE_GTS || !should_restart_tx(q)) 1111 t3_stop_queue(dev, qs, q);
1112 t3_stop_queue(dev, qs, q); 1112
1113 if (should_restart_tx(q) &&
1114 test_and_clear_bit(TXQ_ETH, &qs->txq_stopped)) {
1115 q->restarts++;
1116 netif_wake_queue(dev);
1117 }
1118 }
1113 1119
1114 gen = q->gen; 1120 gen = q->gen;
1115 q->unacked += ndesc; 1121 q->unacked += ndesc;
diff --git a/drivers/net/epic100.c b/drivers/net/epic100.c
index 0b365b8d947b..76118ddd1042 100644
--- a/drivers/net/epic100.c
+++ b/drivers/net/epic100.c
@@ -131,8 +131,8 @@ IIIa. Ring buffers
131 131
132IVb. References 132IVb. References
133 133
134http://www.smsc.com/main/datasheets/83c171.pdf 134http://www.smsc.com/main/tools/discontinued/83c171.pdf
135http://www.smsc.com/main/datasheets/83c175.pdf 135http://www.smsc.com/main/tools/discontinued/83c175.pdf
136http://scyld.com/expert/NWay.html 136http://scyld.com/expert/NWay.html
137http://www.national.com/pf/DP/DP83840A.html 137http://www.national.com/pf/DP/DP83840A.html
138 138
@@ -227,7 +227,12 @@ static const u16 media2miictl[16] = {
227 0, 0x0C00, 0x0C00, 0x2000, 0x0100, 0x2100, 0, 0, 227 0, 0x0C00, 0x0C00, 0x2000, 0x0100, 0x2100, 0, 0,
228 0, 0, 0, 0, 0, 0, 0, 0 }; 228 0, 0, 0, 0, 0, 0, 0, 0 };
229 229
230/* The EPIC100 Rx and Tx buffer descriptors. */ 230/*
231 * The EPIC100 Rx and Tx buffer descriptors. Note that these
232 * really ARE host-endian; it's not a misannotation. We tell
233 * the card to byteswap them internally on big-endian hosts -
234 * look for #ifdef CONFIG_BIG_ENDIAN in epic_open().
235 */
231 236
232struct epic_tx_desc { 237struct epic_tx_desc {
233 u32 txstatus; 238 u32 txstatus;
@@ -418,7 +423,7 @@ static int __devinit epic_init_one (struct pci_dev *pdev,
418 423
419 /* Note: the '175 does not have a serial EEPROM. */ 424 /* Note: the '175 does not have a serial EEPROM. */
420 for (i = 0; i < 3; i++) 425 for (i = 0; i < 3; i++)
421 ((u16 *)dev->dev_addr)[i] = le16_to_cpu(inw(ioaddr + LAN0 + i*4)); 426 ((__le16 *)dev->dev_addr)[i] = cpu_to_le16(inw(ioaddr + LAN0 + i*4));
422 427
423 if (debug > 2) { 428 if (debug > 2) {
424 dev_printk(KERN_DEBUG, &pdev->dev, "EEPROM contents:\n"); 429 dev_printk(KERN_DEBUG, &pdev->dev, "EEPROM contents:\n");
@@ -682,7 +687,8 @@ static int epic_open(struct net_device *dev)
682 if (ep->chip_flags & MII_PWRDWN) 687 if (ep->chip_flags & MII_PWRDWN)
683 outl((inl(ioaddr + NVCTL) & ~0x003C) | 0x4800, ioaddr + NVCTL); 688 outl((inl(ioaddr + NVCTL) & ~0x003C) | 0x4800, ioaddr + NVCTL);
684 689
685#if defined(__powerpc__) || defined(__sparc__) /* Big endian */ 690 /* Tell the chip to byteswap descriptors on big-endian hosts */
691#ifdef CONFIG_BIG_ENDIAN
686 outl(0x4432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); 692 outl(0x4432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL);
687 inl(ioaddr + GENCTL); 693 inl(ioaddr + GENCTL);
688 outl(0x0432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); 694 outl(0x0432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL);
@@ -695,7 +701,7 @@ static int epic_open(struct net_device *dev)
695 udelay(20); /* Looks like EPII needs that if you want reliable RX init. FIXME: pci posting bug? */ 701 udelay(20); /* Looks like EPII needs that if you want reliable RX init. FIXME: pci posting bug? */
696 702
697 for (i = 0; i < 3; i++) 703 for (i = 0; i < 3; i++)
698 outl(cpu_to_le16(((u16*)dev->dev_addr)[i]), ioaddr + LAN0 + i*4); 704 outl(le16_to_cpu(((__le16*)dev->dev_addr)[i]), ioaddr + LAN0 + i*4);
699 705
700 ep->tx_threshold = TX_FIFO_THRESH; 706 ep->tx_threshold = TX_FIFO_THRESH;
701 outl(ep->tx_threshold, ioaddr + TxThresh); 707 outl(ep->tx_threshold, ioaddr + TxThresh);
@@ -798,7 +804,7 @@ static void epic_restart(struct net_device *dev)
798 for (i = 16; i > 0; i--) 804 for (i = 16; i > 0; i--)
799 outl(0x0008, ioaddr + TEST1); 805 outl(0x0008, ioaddr + TEST1);
800 806
801#if defined(__powerpc__) || defined(__sparc__) /* Big endian */ 807#ifdef CONFIG_BIG_ENDIAN
802 outl(0x0432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); 808 outl(0x0432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL);
803#else 809#else
804 outl(0x0412 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); 810 outl(0x0412 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL);
@@ -808,7 +814,7 @@ static void epic_restart(struct net_device *dev)
808 outl((inl(ioaddr + NVCTL) & ~0x003C) | 0x4800, ioaddr + NVCTL); 814 outl((inl(ioaddr + NVCTL) & ~0x003C) | 0x4800, ioaddr + NVCTL);
809 815
810 for (i = 0; i < 3; i++) 816 for (i = 0; i < 3; i++)
811 outl(cpu_to_le16(((u16*)dev->dev_addr)[i]), ioaddr + LAN0 + i*4); 817 outl(le16_to_cpu(((__le16*)dev->dev_addr)[i]), ioaddr + LAN0 + i*4);
812 818
813 ep->tx_threshold = TX_FIFO_THRESH; 819 ep->tx_threshold = TX_FIFO_THRESH;
814 outl(ep->tx_threshold, ioaddr + TxThresh); 820 outl(ep->tx_threshold, ioaddr + TxThresh);
@@ -919,7 +925,7 @@ static void epic_init_ring(struct net_device *dev)
919 /* Initialize all Rx descriptors. */ 925 /* Initialize all Rx descriptors. */
920 for (i = 0; i < RX_RING_SIZE; i++) { 926 for (i = 0; i < RX_RING_SIZE; i++) {
921 ep->rx_ring[i].rxstatus = 0; 927 ep->rx_ring[i].rxstatus = 0;
922 ep->rx_ring[i].buflength = cpu_to_le32(ep->rx_buf_sz); 928 ep->rx_ring[i].buflength = ep->rx_buf_sz;
923 ep->rx_ring[i].next = ep->rx_ring_dma + 929 ep->rx_ring[i].next = ep->rx_ring_dma +
924 (i+1)*sizeof(struct epic_rx_desc); 930 (i+1)*sizeof(struct epic_rx_desc);
925 ep->rx_skbuff[i] = NULL; 931 ep->rx_skbuff[i] = NULL;
@@ -936,7 +942,7 @@ static void epic_init_ring(struct net_device *dev)
936 skb_reserve(skb, 2); /* 16 byte align the IP header. */ 942 skb_reserve(skb, 2); /* 16 byte align the IP header. */
937 ep->rx_ring[i].bufaddr = pci_map_single(ep->pci_dev, 943 ep->rx_ring[i].bufaddr = pci_map_single(ep->pci_dev,
938 skb->data, ep->rx_buf_sz, PCI_DMA_FROMDEVICE); 944 skb->data, ep->rx_buf_sz, PCI_DMA_FROMDEVICE);
939 ep->rx_ring[i].rxstatus = cpu_to_le32(DescOwn); 945 ep->rx_ring[i].rxstatus = DescOwn;
940 } 946 }
941 ep->dirty_rx = (unsigned int)(i - RX_RING_SIZE); 947 ep->dirty_rx = (unsigned int)(i - RX_RING_SIZE);
942 948
@@ -974,20 +980,20 @@ static int epic_start_xmit(struct sk_buff *skb, struct net_device *dev)
974 ep->tx_ring[entry].bufaddr = pci_map_single(ep->pci_dev, skb->data, 980 ep->tx_ring[entry].bufaddr = pci_map_single(ep->pci_dev, skb->data,
975 skb->len, PCI_DMA_TODEVICE); 981 skb->len, PCI_DMA_TODEVICE);
976 if (free_count < TX_QUEUE_LEN/2) {/* Typical path */ 982 if (free_count < TX_QUEUE_LEN/2) {/* Typical path */
977 ctrl_word = cpu_to_le32(0x100000); /* No interrupt */ 983 ctrl_word = 0x100000; /* No interrupt */
978 } else if (free_count == TX_QUEUE_LEN/2) { 984 } else if (free_count == TX_QUEUE_LEN/2) {
979 ctrl_word = cpu_to_le32(0x140000); /* Tx-done intr. */ 985 ctrl_word = 0x140000; /* Tx-done intr. */
980 } else if (free_count < TX_QUEUE_LEN - 1) { 986 } else if (free_count < TX_QUEUE_LEN - 1) {
981 ctrl_word = cpu_to_le32(0x100000); /* No Tx-done intr. */ 987 ctrl_word = 0x100000; /* No Tx-done intr. */
982 } else { 988 } else {
983 /* Leave room for an additional entry. */ 989 /* Leave room for an additional entry. */
984 ctrl_word = cpu_to_le32(0x140000); /* Tx-done intr. */ 990 ctrl_word = 0x140000; /* Tx-done intr. */
985 ep->tx_full = 1; 991 ep->tx_full = 1;
986 } 992 }
987 ep->tx_ring[entry].buflength = ctrl_word | cpu_to_le32(skb->len); 993 ep->tx_ring[entry].buflength = ctrl_word | skb->len;
988 ep->tx_ring[entry].txstatus = 994 ep->tx_ring[entry].txstatus =
989 ((skb->len >= ETH_ZLEN ? skb->len : ETH_ZLEN) << 16) 995 ((skb->len >= ETH_ZLEN ? skb->len : ETH_ZLEN) << 16)
990 | cpu_to_le32(DescOwn); 996 | DescOwn;
991 997
992 ep->cur_tx++; 998 ep->cur_tx++;
993 if (ep->tx_full) 999 if (ep->tx_full)
@@ -1041,7 +1047,7 @@ static void epic_tx(struct net_device *dev, struct epic_private *ep)
1041 for (dirty_tx = ep->dirty_tx; cur_tx - dirty_tx > 0; dirty_tx++) { 1047 for (dirty_tx = ep->dirty_tx; cur_tx - dirty_tx > 0; dirty_tx++) {
1042 struct sk_buff *skb; 1048 struct sk_buff *skb;
1043 int entry = dirty_tx % TX_RING_SIZE; 1049 int entry = dirty_tx % TX_RING_SIZE;
1044 int txstatus = le32_to_cpu(ep->tx_ring[entry].txstatus); 1050 int txstatus = ep->tx_ring[entry].txstatus;
1045 1051
1046 if (txstatus & DescOwn) 1052 if (txstatus & DescOwn)
1047 break; /* It still hasn't been Txed */ 1053 break; /* It still hasn't been Txed */
@@ -1163,8 +1169,8 @@ static int epic_rx(struct net_device *dev, int budget)
1163 rx_work_limit = budget; 1169 rx_work_limit = budget;
1164 1170
1165 /* If we own the next entry, it's a new packet. Send it up. */ 1171 /* If we own the next entry, it's a new packet. Send it up. */
1166 while ((ep->rx_ring[entry].rxstatus & cpu_to_le32(DescOwn)) == 0) { 1172 while ((ep->rx_ring[entry].rxstatus & DescOwn) == 0) {
1167 int status = le32_to_cpu(ep->rx_ring[entry].rxstatus); 1173 int status = ep->rx_ring[entry].rxstatus;
1168 1174
1169 if (debug > 4) 1175 if (debug > 4)
1170 printk(KERN_DEBUG " epic_rx() status was %8.8x.\n", status); 1176 printk(KERN_DEBUG " epic_rx() status was %8.8x.\n", status);
@@ -1238,7 +1244,8 @@ static int epic_rx(struct net_device *dev, int budget)
1238 skb->data, ep->rx_buf_sz, PCI_DMA_FROMDEVICE); 1244 skb->data, ep->rx_buf_sz, PCI_DMA_FROMDEVICE);
1239 work_done++; 1245 work_done++;
1240 } 1246 }
1241 ep->rx_ring[entry].rxstatus = cpu_to_le32(DescOwn); 1247 /* AV: shouldn't we add a barrier here? */
1248 ep->rx_ring[entry].rxstatus = DescOwn;
1242 } 1249 }
1243 return work_done; 1250 return work_done;
1244} 1251}
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index 801b4d9cd972..6f7e3fde9e7c 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -184,6 +184,7 @@
184#define DEV_HAS_PAUSEFRAME_TX_V1 0x08000 /* device supports tx pause frames version 1 */ 184#define DEV_HAS_PAUSEFRAME_TX_V1 0x08000 /* device supports tx pause frames version 1 */
185#define DEV_HAS_PAUSEFRAME_TX_V2 0x10000 /* device supports tx pause frames version 2 */ 185#define DEV_HAS_PAUSEFRAME_TX_V2 0x10000 /* device supports tx pause frames version 2 */
186#define DEV_HAS_PAUSEFRAME_TX_V3 0x20000 /* device supports tx pause frames version 3 */ 186#define DEV_HAS_PAUSEFRAME_TX_V3 0x20000 /* device supports tx pause frames version 3 */
187#define DEV_NEED_TX_LIMIT 0x40000 /* device needs to limit tx */
187 188
188enum { 189enum {
189 NvRegIrqStatus = 0x000, 190 NvRegIrqStatus = 0x000,
@@ -635,6 +636,8 @@ union ring_type {
635#define NV_RESTART_TX 0x1 636#define NV_RESTART_TX 0x1
636#define NV_RESTART_RX 0x2 637#define NV_RESTART_RX 0x2
637 638
639#define NV_TX_LIMIT_COUNT 16
640
638/* statistics */ 641/* statistics */
639struct nv_ethtool_str { 642struct nv_ethtool_str {
640 char name[ETH_GSTRING_LEN]; 643 char name[ETH_GSTRING_LEN];
@@ -743,6 +746,8 @@ struct nv_skb_map {
743 struct sk_buff *skb; 746 struct sk_buff *skb;
744 dma_addr_t dma; 747 dma_addr_t dma;
745 unsigned int dma_len; 748 unsigned int dma_len;
749 struct ring_desc_ex *first_tx_desc;
750 struct nv_skb_map *next_tx_ctx;
746}; 751};
747 752
748/* 753/*
@@ -827,6 +832,10 @@ struct fe_priv {
827 union ring_type tx_ring; 832 union ring_type tx_ring;
828 u32 tx_flags; 833 u32 tx_flags;
829 int tx_ring_size; 834 int tx_ring_size;
835 int tx_limit;
836 u32 tx_pkts_in_progress;
837 struct nv_skb_map *tx_change_owner;
838 struct nv_skb_map *tx_end_flip;
830 int tx_stop; 839 int tx_stop;
831 840
832 /* vlan fields */ 841 /* vlan fields */
@@ -1707,6 +1716,9 @@ static void nv_init_tx(struct net_device *dev)
1707 np->last_tx.ex = &np->tx_ring.ex[np->tx_ring_size-1]; 1716 np->last_tx.ex = &np->tx_ring.ex[np->tx_ring_size-1];
1708 np->get_tx_ctx = np->put_tx_ctx = np->first_tx_ctx = np->tx_skb; 1717 np->get_tx_ctx = np->put_tx_ctx = np->first_tx_ctx = np->tx_skb;
1709 np->last_tx_ctx = &np->tx_skb[np->tx_ring_size-1]; 1718 np->last_tx_ctx = &np->tx_skb[np->tx_ring_size-1];
1719 np->tx_pkts_in_progress = 0;
1720 np->tx_change_owner = NULL;
1721 np->tx_end_flip = NULL;
1710 1722
1711 for (i = 0; i < np->tx_ring_size; i++) { 1723 for (i = 0; i < np->tx_ring_size; i++) {
1712 if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) { 1724 if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
@@ -1720,6 +1732,9 @@ static void nv_init_tx(struct net_device *dev)
1720 } 1732 }
1721 np->tx_skb[i].skb = NULL; 1733 np->tx_skb[i].skb = NULL;
1722 np->tx_skb[i].dma = 0; 1734 np->tx_skb[i].dma = 0;
1735 np->tx_skb[i].dma_len = 0;
1736 np->tx_skb[i].first_tx_desc = NULL;
1737 np->tx_skb[i].next_tx_ctx = NULL;
1723 } 1738 }
1724} 1739}
1725 1740
@@ -1771,7 +1786,14 @@ static void nv_drain_tx(struct net_device *dev)
1771 } 1786 }
1772 if (nv_release_txskb(dev, &np->tx_skb[i])) 1787 if (nv_release_txskb(dev, &np->tx_skb[i]))
1773 dev->stats.tx_dropped++; 1788 dev->stats.tx_dropped++;
1789 np->tx_skb[i].dma = 0;
1790 np->tx_skb[i].dma_len = 0;
1791 np->tx_skb[i].first_tx_desc = NULL;
1792 np->tx_skb[i].next_tx_ctx = NULL;
1774 } 1793 }
1794 np->tx_pkts_in_progress = 0;
1795 np->tx_change_owner = NULL;
1796 np->tx_end_flip = NULL;
1775} 1797}
1776 1798
1777static void nv_drain_rx(struct net_device *dev) 1799static void nv_drain_rx(struct net_device *dev)
@@ -1948,6 +1970,7 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev)
1948 struct ring_desc_ex* start_tx; 1970 struct ring_desc_ex* start_tx;
1949 struct ring_desc_ex* prev_tx; 1971 struct ring_desc_ex* prev_tx;
1950 struct nv_skb_map* prev_tx_ctx; 1972 struct nv_skb_map* prev_tx_ctx;
1973 struct nv_skb_map* start_tx_ctx;
1951 1974
1952 /* add fragments to entries count */ 1975 /* add fragments to entries count */
1953 for (i = 0; i < fragments; i++) { 1976 for (i = 0; i < fragments; i++) {
@@ -1965,6 +1988,7 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev)
1965 } 1988 }
1966 1989
1967 start_tx = put_tx = np->put_tx.ex; 1990 start_tx = put_tx = np->put_tx.ex;
1991 start_tx_ctx = np->put_tx_ctx;
1968 1992
1969 /* setup the header buffer */ 1993 /* setup the header buffer */
1970 do { 1994 do {
@@ -2037,6 +2061,26 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev)
2037 2061
2038 spin_lock_irq(&np->lock); 2062 spin_lock_irq(&np->lock);
2039 2063
2064 if (np->tx_limit) {
2065 /* Limit the number of outstanding tx. Setup all fragments, but
2066 * do not set the VALID bit on the first descriptor. Save a pointer
2067 * to that descriptor and also for next skb_map element.
2068 */
2069
2070 if (np->tx_pkts_in_progress == NV_TX_LIMIT_COUNT) {
2071 if (!np->tx_change_owner)
2072 np->tx_change_owner = start_tx_ctx;
2073
2074 /* remove VALID bit */
2075 tx_flags &= ~NV_TX2_VALID;
2076 start_tx_ctx->first_tx_desc = start_tx;
2077 start_tx_ctx->next_tx_ctx = np->put_tx_ctx;
2078 np->tx_end_flip = np->put_tx_ctx;
2079 } else {
2080 np->tx_pkts_in_progress++;
2081 }
2082 }
2083
2040 /* set tx flags */ 2084 /* set tx flags */
2041 start_tx->flaglen |= cpu_to_le32(tx_flags | tx_flags_extra); 2085 start_tx->flaglen |= cpu_to_le32(tx_flags | tx_flags_extra);
2042 np->put_tx.ex = put_tx; 2086 np->put_tx.ex = put_tx;
@@ -2060,6 +2104,25 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev)
2060 return NETDEV_TX_OK; 2104 return NETDEV_TX_OK;
2061} 2105}
2062 2106
2107static inline void nv_tx_flip_ownership(struct net_device *dev)
2108{
2109 struct fe_priv *np = netdev_priv(dev);
2110
2111 np->tx_pkts_in_progress--;
2112 if (np->tx_change_owner) {
2113 __le32 flaglen = le32_to_cpu(np->tx_change_owner->first_tx_desc->flaglen);
2114 flaglen |= NV_TX2_VALID;
2115 np->tx_change_owner->first_tx_desc->flaglen = cpu_to_le32(flaglen);
2116 np->tx_pkts_in_progress++;
2117
2118 np->tx_change_owner = np->tx_change_owner->next_tx_ctx;
2119 if (np->tx_change_owner == np->tx_end_flip)
2120 np->tx_change_owner = NULL;
2121
2122 writel(NVREG_TXRXCTL_KICK|np->txrxctl_bits, get_hwbase(dev) + NvRegTxRxControl);
2123 }
2124}
2125
2063/* 2126/*
2064 * nv_tx_done: check for completed packets, release the skbs. 2127 * nv_tx_done: check for completed packets, release the skbs.
2065 * 2128 *
@@ -2147,6 +2210,10 @@ static void nv_tx_done_optimized(struct net_device *dev, int limit)
2147 dev->stats.tx_packets++; 2210 dev->stats.tx_packets++;
2148 dev_kfree_skb_any(np->get_tx_ctx->skb); 2211 dev_kfree_skb_any(np->get_tx_ctx->skb);
2149 np->get_tx_ctx->skb = NULL; 2212 np->get_tx_ctx->skb = NULL;
2213
2214 if (np->tx_limit) {
2215 nv_tx_flip_ownership(dev);
2216 }
2150 } 2217 }
2151 if (unlikely(np->get_tx.ex++ == np->last_tx.ex)) 2218 if (unlikely(np->get_tx.ex++ == np->last_tx.ex))
2152 np->get_tx.ex = np->first_tx.ex; 2219 np->get_tx.ex = np->first_tx.ex;
@@ -5333,6 +5400,21 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
5333 np->need_linktimer = 0; 5400 np->need_linktimer = 0;
5334 } 5401 }
5335 5402
5403 /* Limit the number of tx's outstanding for hw bug */
5404 if (id->driver_data & DEV_NEED_TX_LIMIT) {
5405 np->tx_limit = 1;
5406 if ((id->device == PCI_DEVICE_ID_NVIDIA_NVENET_32 ||
5407 id->device == PCI_DEVICE_ID_NVIDIA_NVENET_33 ||
5408 id->device == PCI_DEVICE_ID_NVIDIA_NVENET_34 ||
5409 id->device == PCI_DEVICE_ID_NVIDIA_NVENET_35 ||
5410 id->device == PCI_DEVICE_ID_NVIDIA_NVENET_36 ||
5411 id->device == PCI_DEVICE_ID_NVIDIA_NVENET_37 ||
5412 id->device == PCI_DEVICE_ID_NVIDIA_NVENET_38 ||
5413 id->device == PCI_DEVICE_ID_NVIDIA_NVENET_39) &&
5414 pci_dev->revision >= 0xA2)
5415 np->tx_limit = 0;
5416 }
5417
5336 /* clear phy state and temporarily halt phy interrupts */ 5418 /* clear phy state and temporarily halt phy interrupts */
5337 writel(0, base + NvRegMIIMask); 5419 writel(0, base + NvRegMIIMask);
5338 phystate = readl(base + NvRegAdapterControl); 5420 phystate = readl(base + NvRegAdapterControl);
@@ -5563,19 +5645,19 @@ static struct pci_device_id pci_tbl[] = {
5563 }, 5645 },
5564 { /* CK804 Ethernet Controller */ 5646 { /* CK804 Ethernet Controller */
5565 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_8), 5647 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_8),
5566 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1, 5648 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1|DEV_NEED_TX_LIMIT,
5567 }, 5649 },
5568 { /* CK804 Ethernet Controller */ 5650 { /* CK804 Ethernet Controller */
5569 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_9), 5651 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_9),
5570 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1, 5652 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1|DEV_NEED_TX_LIMIT,
5571 }, 5653 },
5572 { /* MCP04 Ethernet Controller */ 5654 { /* MCP04 Ethernet Controller */
5573 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_10), 5655 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_10),
5574 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1, 5656 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1|DEV_NEED_TX_LIMIT,
5575 }, 5657 },
5576 { /* MCP04 Ethernet Controller */ 5658 { /* MCP04 Ethernet Controller */
5577 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_11), 5659 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_11),
5578 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1, 5660 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1|DEV_NEED_TX_LIMIT,
5579 }, 5661 },
5580 { /* MCP51 Ethernet Controller */ 5662 { /* MCP51 Ethernet Controller */
5581 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_12), 5663 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_12),
@@ -5587,11 +5669,11 @@ static struct pci_device_id pci_tbl[] = {
5587 }, 5669 },
5588 { /* MCP55 Ethernet Controller */ 5670 { /* MCP55 Ethernet Controller */
5589 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_14), 5671 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_14),
5590 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT, 5672 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_NEED_TX_LIMIT,
5591 }, 5673 },
5592 { /* MCP55 Ethernet Controller */ 5674 { /* MCP55 Ethernet Controller */
5593 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_15), 5675 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_15),
5594 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT, 5676 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_NEED_TX_LIMIT,
5595 }, 5677 },
5596 { /* MCP61 Ethernet Controller */ 5678 { /* MCP61 Ethernet Controller */
5597 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_16), 5679 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_16),
@@ -5611,19 +5693,19 @@ static struct pci_device_id pci_tbl[] = {
5611 }, 5693 },
5612 { /* MCP65 Ethernet Controller */ 5694 { /* MCP65 Ethernet Controller */
5613 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_20), 5695 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_20),
5614 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR, 5696 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_NEED_TX_LIMIT|DEV_NEED_TX_LIMIT,
5615 }, 5697 },
5616 { /* MCP65 Ethernet Controller */ 5698 { /* MCP65 Ethernet Controller */
5617 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_21), 5699 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_21),
5618 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR, 5700 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_NEED_TX_LIMIT,
5619 }, 5701 },
5620 { /* MCP65 Ethernet Controller */ 5702 { /* MCP65 Ethernet Controller */
5621 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_22), 5703 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_22),
5622 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR, 5704 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_NEED_TX_LIMIT,
5623 }, 5705 },
5624 { /* MCP65 Ethernet Controller */ 5706 { /* MCP65 Ethernet Controller */
5625 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_23), 5707 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_23),
5626 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR, 5708 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_NEED_TX_LIMIT,
5627 }, 5709 },
5628 { /* MCP67 Ethernet Controller */ 5710 { /* MCP67 Ethernet Controller */
5629 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_24), 5711 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_24),
@@ -5659,35 +5741,35 @@ static struct pci_device_id pci_tbl[] = {
5659 }, 5741 },
5660 { /* MCP77 Ethernet Controller */ 5742 { /* MCP77 Ethernet Controller */
5661 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_32), 5743 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_32),
5662 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, 5744 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT,
5663 }, 5745 },
5664 { /* MCP77 Ethernet Controller */ 5746 { /* MCP77 Ethernet Controller */
5665 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_33), 5747 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_33),
5666 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, 5748 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT,
5667 }, 5749 },
5668 { /* MCP77 Ethernet Controller */ 5750 { /* MCP77 Ethernet Controller */
5669 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_34), 5751 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_34),
5670 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, 5752 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT,
5671 }, 5753 },
5672 { /* MCP77 Ethernet Controller */ 5754 { /* MCP77 Ethernet Controller */
5673 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_35), 5755 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_35),
5674 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, 5756 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT,
5675 }, 5757 },
5676 { /* MCP79 Ethernet Controller */ 5758 { /* MCP79 Ethernet Controller */
5677 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_36), 5759 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_36),
5678 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, 5760 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT,
5679 }, 5761 },
5680 { /* MCP79 Ethernet Controller */ 5762 { /* MCP79 Ethernet Controller */
5681 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_37), 5763 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_37),
5682 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, 5764 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT,
5683 }, 5765 },
5684 { /* MCP79 Ethernet Controller */ 5766 { /* MCP79 Ethernet Controller */
5685 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_38), 5767 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_38),
5686 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, 5768 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT,
5687 }, 5769 },
5688 { /* MCP79 Ethernet Controller */ 5770 { /* MCP79 Ethernet Controller */
5689 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_39), 5771 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_39),
5690 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, 5772 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT,
5691 }, 5773 },
5692 {0,}, 5774 {0,},
5693}; 5775};
diff --git a/drivers/net/ibm_newemac/core.c b/drivers/net/ibm_newemac/core.c
index e6c69f77259b..0789802d59ed 100644
--- a/drivers/net/ibm_newemac/core.c
+++ b/drivers/net/ibm_newemac/core.c
@@ -143,6 +143,10 @@ static inline void emac_report_timeout_error(struct emac_instance *dev,
143#define STOP_TIMEOUT_1000 13 143#define STOP_TIMEOUT_1000 13
144#define STOP_TIMEOUT_1000_JUMBO 73 144#define STOP_TIMEOUT_1000_JUMBO 73
145 145
146static unsigned char default_mcast_addr[] = {
147 0x01, 0x80, 0xC2, 0x00, 0x00, 0x01
148};
149
146/* Please, keep in sync with struct ibm_emac_stats/ibm_emac_error_stats */ 150/* Please, keep in sync with struct ibm_emac_stats/ibm_emac_error_stats */
147static const char emac_stats_keys[EMAC_ETHTOOL_STATS_COUNT][ETH_GSTRING_LEN] = { 151static const char emac_stats_keys[EMAC_ETHTOOL_STATS_COUNT][ETH_GSTRING_LEN] = {
148 "rx_packets", "rx_bytes", "tx_packets", "tx_bytes", "rx_packets_csum", 152 "rx_packets", "rx_bytes", "tx_packets", "tx_bytes", "rx_packets_csum",
@@ -618,6 +622,9 @@ static int emac_configure(struct emac_instance *dev)
618 if (emac_phy_gpcs(dev->phy.mode)) 622 if (emac_phy_gpcs(dev->phy.mode))
619 emac_mii_reset_phy(&dev->phy); 623 emac_mii_reset_phy(&dev->phy);
620 624
625 /* Required for Pause packet support in EMAC */
626 dev_mc_add(ndev, default_mcast_addr, sizeof(default_mcast_addr), 1);
627
621 return 0; 628 return 0;
622} 629}
623 630
diff --git a/drivers/net/ibm_newemac/tah.c b/drivers/net/ibm_newemac/tah.c
index 96417adec326..b023d10d7e1c 100644
--- a/drivers/net/ibm_newemac/tah.c
+++ b/drivers/net/ibm_newemac/tah.c
@@ -155,6 +155,10 @@ static int __devexit tah_remove(struct of_device *ofdev)
155static struct of_device_id tah_match[] = 155static struct of_device_id tah_match[] =
156{ 156{
157 { 157 {
158 .compatible = "ibm,tah",
159 },
160 /* For backward compat with old DT */
161 {
158 .type = "tah", 162 .type = "tah",
159 }, 163 },
160 {}, 164 {},
diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
index 15949d3df17e..af233b591534 100644
--- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c
@@ -35,6 +35,7 @@
35#include <linux/moduleparam.h> 35#include <linux/moduleparam.h>
36#include <net/pkt_sched.h> 36#include <net/pkt_sched.h>
37#include <net/net_namespace.h> 37#include <net/net_namespace.h>
38#include <linux/lockdep.h>
38 39
39#define TX_TIMEOUT (2*HZ) 40#define TX_TIMEOUT (2*HZ)
40 41
@@ -227,6 +228,16 @@ static struct rtnl_link_ops ifb_link_ops __read_mostly = {
227module_param(numifbs, int, 0); 228module_param(numifbs, int, 0);
228MODULE_PARM_DESC(numifbs, "Number of ifb devices"); 229MODULE_PARM_DESC(numifbs, "Number of ifb devices");
229 230
231/*
232 * dev_ifb->queue_lock is usually taken after dev->ingress_lock,
233 * reversely to e.g. qdisc_lock_tree(). It should be safe until
234 * ifb doesn't take dev->queue_lock with dev_ifb->ingress_lock.
235 * But lockdep should know that ifb has different locks from dev.
236 */
237static struct lock_class_key ifb_queue_lock_key;
238static struct lock_class_key ifb_ingress_lock_key;
239
240
230static int __init ifb_init_one(int index) 241static int __init ifb_init_one(int index)
231{ 242{
232 struct net_device *dev_ifb; 243 struct net_device *dev_ifb;
@@ -246,6 +257,10 @@ static int __init ifb_init_one(int index)
246 err = register_netdevice(dev_ifb); 257 err = register_netdevice(dev_ifb);
247 if (err < 0) 258 if (err < 0)
248 goto err; 259 goto err;
260
261 lockdep_set_class(&dev_ifb->queue_lock, &ifb_queue_lock_key);
262 lockdep_set_class(&dev_ifb->ingress_lock, &ifb_ingress_lock_key);
263
249 return 0; 264 return 0;
250 265
251err: 266err:
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index 6a1f23092099..928ce8287e69 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -31,7 +31,6 @@
31#include <linux/vmalloc.h> 31#include <linux/vmalloc.h>
32#include <linux/pagemap.h> 32#include <linux/pagemap.h>
33#include <linux/netdevice.h> 33#include <linux/netdevice.h>
34#include <linux/tcp.h>
35#include <linux/ipv6.h> 34#include <linux/ipv6.h>
36#include <net/checksum.h> 35#include <net/checksum.h>
37#include <net/ip6_checksum.h> 36#include <net/ip6_checksum.h>
@@ -2484,10 +2483,24 @@ static inline bool igb_tx_csum_adv(struct igb_adapter *adapter,
2484 tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT); 2483 tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT);
2485 2484
2486 if (skb->ip_summed == CHECKSUM_PARTIAL) { 2485 if (skb->ip_summed == CHECKSUM_PARTIAL) {
2487 if (skb->protocol == htons(ETH_P_IP)) 2486 switch (skb->protocol) {
2487 case __constant_htons(ETH_P_IP):
2488 tu_cmd |= E1000_ADVTXD_TUCMD_IPV4; 2488 tu_cmd |= E1000_ADVTXD_TUCMD_IPV4;
2489 if (skb->sk && (skb->sk->sk_protocol == IPPROTO_TCP)) 2489 if (ip_hdr(skb)->protocol == IPPROTO_TCP)
2490 tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP; 2490 tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
2491 break;
2492 case __constant_htons(ETH_P_IPV6):
2493 /* XXX what about other V6 headers?? */
2494 if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
2495 tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
2496 break;
2497 default:
2498 if (unlikely(net_ratelimit()))
2499 dev_warn(&adapter->pdev->dev,
2500 "partial checksum but proto=%x!\n",
2501 skb->protocol);
2502 break;
2503 }
2491 } 2504 }
2492 2505
2493 context_desc->type_tucmd_mlhl = cpu_to_le32(tu_cmd); 2506 context_desc->type_tucmd_mlhl = cpu_to_le32(tu_cmd);
diff --git a/drivers/net/ioc3-eth.c b/drivers/net/ioc3-eth.c
index 373f72cdbe8e..1f25263dc7eb 100644
--- a/drivers/net/ioc3-eth.c
+++ b/drivers/net/ioc3-eth.c
@@ -1221,7 +1221,8 @@ static void __devinit ioc3_serial_probe(struct pci_dev *pdev, struct ioc3 *ioc3)
1221} 1221}
1222#endif 1222#endif
1223 1223
1224static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *ent) 1224static int __devinit ioc3_probe(struct pci_dev *pdev,
1225 const struct pci_device_id *ent)
1225{ 1226{
1226 unsigned int sw_physid1, sw_physid2; 1227 unsigned int sw_physid1, sw_physid2;
1227 struct net_device *dev = NULL; 1228 struct net_device *dev = NULL;
diff --git a/drivers/net/ipg.c b/drivers/net/ipg.c
index 5e5d9b527ed1..9b358f61ed7f 100644
--- a/drivers/net/ipg.c
+++ b/drivers/net/ipg.c
@@ -472,7 +472,6 @@ static int ipg_config_autoneg(struct net_device *dev)
472 unsigned int txflowcontrol; 472 unsigned int txflowcontrol;
473 unsigned int rxflowcontrol; 473 unsigned int rxflowcontrol;
474 unsigned int fullduplex; 474 unsigned int fullduplex;
475 unsigned int gig;
476 u32 mac_ctrl_val; 475 u32 mac_ctrl_val;
477 u32 asicctrl; 476 u32 asicctrl;
478 u8 phyctrl; 477 u8 phyctrl;
@@ -489,7 +488,6 @@ static int ipg_config_autoneg(struct net_device *dev)
489 fullduplex = 0; 488 fullduplex = 0;
490 txflowcontrol = 0; 489 txflowcontrol = 0;
491 rxflowcontrol = 0; 490 rxflowcontrol = 0;
492 gig = 0;
493 491
494 /* To accomodate a problem in 10Mbps operation, 492 /* To accomodate a problem in 10Mbps operation,
495 * set a global flag if PHY running in 10Mbps mode. 493 * set a global flag if PHY running in 10Mbps mode.
@@ -511,7 +509,6 @@ static int ipg_config_autoneg(struct net_device *dev)
511 break; 509 break;
512 case IPG_PC_LINK_SPEED_1000MBPS: 510 case IPG_PC_LINK_SPEED_1000MBPS:
513 printk("1000Mbps.\n"); 511 printk("1000Mbps.\n");
514 gig = 1;
515 break; 512 break;
516 default: 513 default:
517 printk("undefined!\n"); 514 printk("undefined!\n");
@@ -1900,8 +1897,13 @@ static int ipg_nic_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
1900 1897
1901 /* Specify the TFC field within the TFD. */ 1898 /* Specify the TFC field within the TFD. */
1902 txfd->tfc |= cpu_to_le64(IPG_TFC_WORDALIGNDISABLED | 1899 txfd->tfc |= cpu_to_le64(IPG_TFC_WORDALIGNDISABLED |
1903 (IPG_TFC_FRAMEID & cpu_to_le64(sp->tx_current)) | 1900 (IPG_TFC_FRAMEID & sp->tx_current) |
1904 (IPG_TFC_FRAGCOUNT & (1 << 24))); 1901 (IPG_TFC_FRAGCOUNT & (1 << 24)));
1902 /*
1903 * 16--17 (WordAlign) <- 3 (disable),
1904 * 0--15 (FrameId) <- sp->tx_current,
1905 * 24--27 (FragCount) <- 1
1906 */
1905 1907
1906 /* Request TxComplete interrupts at an interval defined 1908 /* Request TxComplete interrupts at an interval defined
1907 * by the constant IPG_FRAMESBETWEENTXCOMPLETES. 1909 * by the constant IPG_FRAMESBETWEENTXCOMPLETES.
diff --git a/drivers/net/ne2k-pci.c b/drivers/net/ne2k-pci.c
index b569c90da4ba..de0de744a8fa 100644
--- a/drivers/net/ne2k-pci.c
+++ b/drivers/net/ne2k-pci.c
@@ -535,9 +535,9 @@ static void ne2k_pci_block_input(struct net_device *dev, int count,
535 if (count & 3) { 535 if (count & 3) {
536 buf += count & ~3; 536 buf += count & ~3;
537 if (count & 2) { 537 if (count & 2) {
538 u16 *b = (u16 *)buf; 538 __le16 *b = (__le16 *)buf;
539 539
540 *b++ = le16_to_cpu(inw(NE_BASE + NE_DATAPORT)); 540 *b++ = cpu_to_le16(inw(NE_BASE + NE_DATAPORT));
541 buf = (char *)b; 541 buf = (char *)b;
542 } 542 }
543 if (count & 1) 543 if (count & 1)
@@ -600,9 +600,9 @@ static void ne2k_pci_block_output(struct net_device *dev, int count,
600 if (count & 3) { 600 if (count & 3) {
601 buf += count & ~3; 601 buf += count & ~3;
602 if (count & 2) { 602 if (count & 2) {
603 u16 *b = (u16 *)buf; 603 __le16 *b = (__le16 *)buf;
604 604
605 outw(cpu_to_le16(*b++), NE_BASE + NE_DATAPORT); 605 outw(le16_to_cpu(*b++), NE_BASE + NE_DATAPORT);
606 buf = (char *)b; 606 buf = (char *)b;
607 } 607 }
608 } 608 }
diff --git a/drivers/net/ps3_gelic_wireless.c b/drivers/net/ps3_gelic_wireless.c
index daf5abab9534..ddbc6e475e28 100644
--- a/drivers/net/ps3_gelic_wireless.c
+++ b/drivers/net/ps3_gelic_wireless.c
@@ -1644,13 +1644,24 @@ static void gelic_wl_scan_complete_event(struct gelic_wl_info *wl)
1644 } 1644 }
1645 1645
1646 /* put them in the newtork_list */ 1646 /* put them in the newtork_list */
1647 scan_info = wl->buf; 1647 for (i = 0, scan_info_size = 0, scan_info = wl->buf;
1648 scan_info_size = 0; 1648 scan_info_size < data_len;
1649 i = 0; 1649 i++, scan_info_size += be16_to_cpu(scan_info->size),
1650 while (scan_info_size < data_len) { 1650 scan_info = (void *)scan_info + be16_to_cpu(scan_info->size)) {
1651 pr_debug("%s:size=%d bssid=%s scan_info=%p\n", __func__, 1651 pr_debug("%s:size=%d bssid=%s scan_info=%p\n", __func__,
1652 be16_to_cpu(scan_info->size), 1652 be16_to_cpu(scan_info->size),
1653 print_mac(mac, &scan_info->bssid[2]), scan_info); 1653 print_mac(mac, &scan_info->bssid[2]), scan_info);
1654
1655 /*
1656 * The wireless firmware may return invalid channel 0 and/or
1657 * invalid rate if the AP emits zero length SSID ie. As this
1658 * scan information is useless, ignore it
1659 */
1660 if (!be16_to_cpu(scan_info->channel) || !scan_info->rate[0]) {
1661 pr_debug("%s: invalid scan info\n", __func__);
1662 continue;
1663 }
1664
1654 found = 0; 1665 found = 0;
1655 oldest = NULL; 1666 oldest = NULL;
1656 list_for_each_entry(target, &wl->network_list, list) { 1667 list_for_each_entry(target, &wl->network_list, list) {
@@ -1687,10 +1698,6 @@ static void gelic_wl_scan_complete_event(struct gelic_wl_info *wl)
1687 GFP_KERNEL); 1698 GFP_KERNEL);
1688 if (!target->hwinfo) { 1699 if (!target->hwinfo) {
1689 pr_info("%s: kzalloc failed\n", __func__); 1700 pr_info("%s: kzalloc failed\n", __func__);
1690 i++;
1691 scan_info_size += be16_to_cpu(scan_info->size);
1692 scan_info = (void *)scan_info +
1693 be16_to_cpu(scan_info->size);
1694 continue; 1701 continue;
1695 } 1702 }
1696 /* copy hw scan info */ 1703 /* copy hw scan info */
@@ -1709,10 +1716,6 @@ static void gelic_wl_scan_complete_event(struct gelic_wl_info *wl)
1709 if (scan_info->ext_rate[r]) 1716 if (scan_info->ext_rate[r])
1710 target->rate_ext_len++; 1717 target->rate_ext_len++;
1711 list_move_tail(&target->list, &wl->network_list); 1718 list_move_tail(&target->list, &wl->network_list);
1712 /* bump pointer */
1713 i++;
1714 scan_info_size += be16_to_cpu(scan_info->size);
1715 scan_info = (void *)scan_info + be16_to_cpu(scan_info->size);
1716 } 1719 }
1717 memset(&data, 0, sizeof(data)); 1720 memset(&data, 0, sizeof(data));
1718 wireless_send_event(port_to_netdev(wl_port(wl)), SIOCGIWSCAN, &data, 1721 wireless_send_event(port_to_netdev(wl_port(wl)), SIOCGIWSCAN, &data,
@@ -2389,6 +2392,8 @@ static struct net_device *gelic_wl_alloc(struct gelic_card *card)
2389 if (!netdev) 2392 if (!netdev)
2390 return NULL; 2393 return NULL;
2391 2394
2395 strcpy(netdev->name, "wlan%d");
2396
2392 port = netdev_priv(netdev); 2397 port = netdev_priv(netdev);
2393 port->netdev = netdev; 2398 port->netdev = netdev;
2394 port->card = card; 2399 port->card = card;
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c
index 19184e486ae9..169edc154928 100644
--- a/drivers/net/r6040.c
+++ b/drivers/net/r6040.c
@@ -239,7 +239,8 @@ static void r6040_free_txbufs(struct net_device *dev)
239 239
240 for (i = 0; i < TX_DCNT; i++) { 240 for (i = 0; i < TX_DCNT; i++) {
241 if (lp->tx_insert_ptr->skb_ptr) { 241 if (lp->tx_insert_ptr->skb_ptr) {
242 pci_unmap_single(lp->pdev, lp->tx_insert_ptr->buf, 242 pci_unmap_single(lp->pdev,
243 le32_to_cpu(lp->tx_insert_ptr->buf),
243 MAX_BUF_SIZE, PCI_DMA_TODEVICE); 244 MAX_BUF_SIZE, PCI_DMA_TODEVICE);
244 dev_kfree_skb(lp->tx_insert_ptr->skb_ptr); 245 dev_kfree_skb(lp->tx_insert_ptr->skb_ptr);
245 lp->rx_insert_ptr->skb_ptr = NULL; 246 lp->rx_insert_ptr->skb_ptr = NULL;
@@ -255,7 +256,8 @@ static void r6040_free_rxbufs(struct net_device *dev)
255 256
256 for (i = 0; i < RX_DCNT; i++) { 257 for (i = 0; i < RX_DCNT; i++) {
257 if (lp->rx_insert_ptr->skb_ptr) { 258 if (lp->rx_insert_ptr->skb_ptr) {
258 pci_unmap_single(lp->pdev, lp->rx_insert_ptr->buf, 259 pci_unmap_single(lp->pdev,
260 le32_to_cpu(lp->rx_insert_ptr->buf),
259 MAX_BUF_SIZE, PCI_DMA_FROMDEVICE); 261 MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
260 dev_kfree_skb(lp->rx_insert_ptr->skb_ptr); 262 dev_kfree_skb(lp->rx_insert_ptr->skb_ptr);
261 lp->rx_insert_ptr->skb_ptr = NULL; 263 lp->rx_insert_ptr->skb_ptr = NULL;
@@ -542,7 +544,7 @@ static int r6040_rx(struct net_device *dev, int limit)
542 skb_ptr->dev = priv->dev; 544 skb_ptr->dev = priv->dev;
543 /* Do not count the CRC */ 545 /* Do not count the CRC */
544 skb_put(skb_ptr, descptr->len - 4); 546 skb_put(skb_ptr, descptr->len - 4);
545 pci_unmap_single(priv->pdev, descptr->buf, 547 pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf),
546 MAX_BUF_SIZE, PCI_DMA_FROMDEVICE); 548 MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
547 skb_ptr->protocol = eth_type_trans(skb_ptr, priv->dev); 549 skb_ptr->protocol = eth_type_trans(skb_ptr, priv->dev);
548 /* Send to upper layer */ 550 /* Send to upper layer */
@@ -585,7 +587,7 @@ static void r6040_tx(struct net_device *dev)
585 if (descptr->status & 0x8000) 587 if (descptr->status & 0x8000)
586 break; /* Not complete */ 588 break; /* Not complete */
587 skb_ptr = descptr->skb_ptr; 589 skb_ptr = descptr->skb_ptr;
588 pci_unmap_single(priv->pdev, descptr->buf, 590 pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf),
589 skb_ptr->len, PCI_DMA_TODEVICE); 591 skb_ptr->len, PCI_DMA_TODEVICE);
590 /* Free buffer */ 592 /* Free buffer */
591 dev_kfree_skb_irq(skb_ptr); 593 dev_kfree_skb_irq(skb_ptr);
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 26ffb67f1da2..f9ef8bd8b11e 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -64,8 +64,8 @@
64 64
65#define DRV_MODULE_NAME "tg3" 65#define DRV_MODULE_NAME "tg3"
66#define PFX DRV_MODULE_NAME ": " 66#define PFX DRV_MODULE_NAME ": "
67#define DRV_MODULE_VERSION "3.87" 67#define DRV_MODULE_VERSION "3.88"
68#define DRV_MODULE_RELDATE "December 20, 2007" 68#define DRV_MODULE_RELDATE "March 20, 2008"
69 69
70#define TG3_DEF_MAC_MODE 0 70#define TG3_DEF_MAC_MODE 0
71#define TG3_DEF_RX_MODE 0 71#define TG3_DEF_RX_MODE 0
@@ -11841,7 +11841,7 @@ static int __devinit tg3_get_device_address(struct tg3 *tp)
11841 } 11841 }
11842 11842
11843 if (!is_valid_ether_addr(&dev->dev_addr[0])) { 11843 if (!is_valid_ether_addr(&dev->dev_addr[0])) {
11844#ifdef CONFIG_SPARC64 11844#ifdef CONFIG_SPARC
11845 if (!tg3_get_default_macaddr_sparc(tp)) 11845 if (!tg3_get_default_macaddr_sparc(tp))
11846 return 0; 11846 return 0;
11847#endif 11847#endif
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c
index 567c62757e9d..1b5edd646a8c 100644
--- a/drivers/net/tulip/de2104x.c
+++ b/drivers/net/tulip/de2104x.c
@@ -842,7 +842,7 @@ static inline int de_is_running (struct de_private *de)
842static void de_stop_rxtx (struct de_private *de) 842static void de_stop_rxtx (struct de_private *de)
843{ 843{
844 u32 macmode; 844 u32 macmode;
845 unsigned int work = 1000; 845 unsigned int i = 1300/100;
846 846
847 macmode = dr32(MacMode); 847 macmode = dr32(MacMode);
848 if (macmode & RxTx) { 848 if (macmode & RxTx) {
@@ -850,10 +850,14 @@ static void de_stop_rxtx (struct de_private *de)
850 dr32(MacMode); 850 dr32(MacMode);
851 } 851 }
852 852
853 while (--work > 0) { 853 /* wait until in-flight frame completes.
854 * Max time @ 10BT: 1500*8b/10Mbps == 1200us (+ 100us margin)
855 * Typically expect this loop to end in < 50 us on 100BT.
856 */
857 while (--i) {
854 if (!de_is_running(de)) 858 if (!de_is_running(de))
855 return; 859 return;
856 cpu_relax(); 860 udelay(100);
857 } 861 }
858 862
859 printk(KERN_WARNING "%s: timeout expired stopping DMA\n", de->dev->name); 863 printk(KERN_WARNING "%s: timeout expired stopping DMA\n", de->dev->name);
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c
index fba0811d2608..8cc316653a39 100644
--- a/drivers/net/ucc_geth.c
+++ b/drivers/net/ucc_geth.c
@@ -154,8 +154,8 @@ static struct ucc_geth_info ugeth_primary_info = {
154 .rxQoSMode = UCC_GETH_QOS_MODE_DEFAULT, 154 .rxQoSMode = UCC_GETH_QOS_MODE_DEFAULT,
155 .aufc = UPSMR_AUTOMATIC_FLOW_CONTROL_MODE_NONE, 155 .aufc = UPSMR_AUTOMATIC_FLOW_CONTROL_MODE_NONE,
156 .padAndCrc = MACCFG2_PAD_AND_CRC_MODE_PAD_AND_CRC, 156 .padAndCrc = MACCFG2_PAD_AND_CRC_MODE_PAD_AND_CRC,
157 .numThreadsTx = UCC_GETH_NUM_OF_THREADS_4, 157 .numThreadsTx = UCC_GETH_NUM_OF_THREADS_1,
158 .numThreadsRx = UCC_GETH_NUM_OF_THREADS_4, 158 .numThreadsRx = UCC_GETH_NUM_OF_THREADS_1,
159 .riscTx = QE_RISC_ALLOCATION_RISC1_AND_RISC2, 159 .riscTx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
160 .riscRx = QE_RISC_ALLOCATION_RISC1_AND_RISC2, 160 .riscRx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
161}; 161};
@@ -3975,6 +3975,8 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
3975 ug_info->uf_info.utfs = UCC_GETH_UTFS_GIGA_INIT; 3975 ug_info->uf_info.utfs = UCC_GETH_UTFS_GIGA_INIT;
3976 ug_info->uf_info.utfet = UCC_GETH_UTFET_GIGA_INIT; 3976 ug_info->uf_info.utfet = UCC_GETH_UTFET_GIGA_INIT;
3977 ug_info->uf_info.utftt = UCC_GETH_UTFTT_GIGA_INIT; 3977 ug_info->uf_info.utftt = UCC_GETH_UTFTT_GIGA_INIT;
3978 ug_info->numThreadsTx = UCC_GETH_NUM_OF_THREADS_4;
3979 ug_info->numThreadsRx = UCC_GETH_NUM_OF_THREADS_4;
3978 } 3980 }
3979 3981
3980 /* Set the bus id */ 3982 /* Set the bus id */
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index a61324757b17..727547a28992 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -16,10 +16,6 @@
16 * along with this program; if not, write to the Free Software 16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */ 18 */
19
20// #define DEBUG // error path messages, extra info
21// #define VERBOSE // more; success messages
22
23#include <linux/module.h> 19#include <linux/module.h>
24#include <linux/init.h> 20#include <linux/init.h>
25#include <linux/netdevice.h> 21#include <linux/netdevice.h>
@@ -318,6 +314,14 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags)
318 net->hard_header_len += sizeof (struct rndis_data_hdr); 314 net->hard_header_len += sizeof (struct rndis_data_hdr);
319 dev->hard_mtu = net->mtu + net->hard_header_len; 315 dev->hard_mtu = net->mtu + net->hard_header_len;
320 316
317 dev->maxpacket = usb_maxpacket(dev->udev, dev->out, 1);
318 if (dev->maxpacket == 0) {
319 if (netif_msg_probe(dev))
320 dev_dbg(&intf->dev, "dev->maxpacket can't be 0\n");
321 retval = -EINVAL;
322 goto fail_and_release;
323 }
324
321 dev->rx_urb_size = dev->hard_mtu + (dev->maxpacket + 1); 325 dev->rx_urb_size = dev->hard_mtu + (dev->maxpacket + 1);
322 dev->rx_urb_size &= ~(dev->maxpacket - 1); 326 dev->rx_urb_size &= ~(dev->maxpacket - 1);
323 u.init->max_transfer_size = cpu_to_le32(dev->rx_urb_size); 327 u.init->max_transfer_size = cpu_to_le32(dev->rx_urb_size);
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 19fd4cb0ddf8..b58472cf76f8 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -203,8 +203,11 @@ again:
203 if (received < budget) { 203 if (received < budget) {
204 netif_rx_complete(vi->dev, napi); 204 netif_rx_complete(vi->dev, napi);
205 if (unlikely(!vi->rvq->vq_ops->enable_cb(vi->rvq)) 205 if (unlikely(!vi->rvq->vq_ops->enable_cb(vi->rvq))
206 && netif_rx_reschedule(vi->dev, napi)) 206 && napi_schedule_prep(napi)) {
207 vi->rvq->vq_ops->disable_cb(vi->rvq);
208 __netif_rx_schedule(vi->dev, napi);
207 goto again; 209 goto again;
210 }
208 } 211 }
209 212
210 return received; 213 return received;
@@ -278,10 +281,11 @@ again:
278 pr_debug("%s: virtio not prepared to send\n", dev->name); 281 pr_debug("%s: virtio not prepared to send\n", dev->name);
279 netif_stop_queue(dev); 282 netif_stop_queue(dev);
280 283
281 /* Activate callback for using skbs: if this fails it 284 /* Activate callback for using skbs: if this returns false it
282 * means some were used in the meantime. */ 285 * means some were used in the meantime. */
283 if (unlikely(!vi->svq->vq_ops->enable_cb(vi->svq))) { 286 if (unlikely(!vi->svq->vq_ops->enable_cb(vi->svq))) {
284 printk("Unlikely: restart svq failed\n"); 287 printk("Unlikely: restart svq race\n");
288 vi->svq->vq_ops->disable_cb(vi->svq);
285 netif_start_queue(dev); 289 netif_start_queue(dev);
286 goto again; 290 goto again;
287 } 291 }
@@ -294,6 +298,15 @@ again:
294 return 0; 298 return 0;
295} 299}
296 300
301#ifdef CONFIG_NET_POLL_CONTROLLER
302static void virtnet_netpoll(struct net_device *dev)
303{
304 struct virtnet_info *vi = netdev_priv(dev);
305
306 napi_schedule(&vi->napi);
307}
308#endif
309
297static int virtnet_open(struct net_device *dev) 310static int virtnet_open(struct net_device *dev)
298{ 311{
299 struct virtnet_info *vi = netdev_priv(dev); 312 struct virtnet_info *vi = netdev_priv(dev);
@@ -336,6 +349,9 @@ static int virtnet_probe(struct virtio_device *vdev)
336 dev->stop = virtnet_close; 349 dev->stop = virtnet_close;
337 dev->hard_start_xmit = start_xmit; 350 dev->hard_start_xmit = start_xmit;
338 dev->features = NETIF_F_HIGHDMA; 351 dev->features = NETIF_F_HIGHDMA;
352#ifdef CONFIG_NET_POLL_CONTROLLER
353 dev->poll_controller = virtnet_netpoll;
354#endif
339 SET_NETDEV_DEV(dev, &vdev->dev); 355 SET_NETDEV_DEV(dev, &vdev->dev);
340 356
341 /* Do we support "hardware" checksums? */ 357 /* Do we support "hardware" checksums? */
diff --git a/drivers/net/wan/farsync.c b/drivers/net/wan/farsync.c
index cf27bf40d36e..547368e9633d 100644
--- a/drivers/net/wan/farsync.c
+++ b/drivers/net/wan/farsync.c
@@ -2024,6 +2024,7 @@ fst_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
2024 struct fstioc_write wrthdr; 2024 struct fstioc_write wrthdr;
2025 struct fstioc_info info; 2025 struct fstioc_info info;
2026 unsigned long flags; 2026 unsigned long flags;
2027 void *buf;
2027 2028
2028 dbg(DBG_IOCTL, "ioctl: %x, %p\n", cmd, ifr->ifr_data); 2029 dbg(DBG_IOCTL, "ioctl: %x, %p\n", cmd, ifr->ifr_data);
2029 2030
@@ -2065,16 +2066,22 @@ fst_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
2065 return -ENXIO; 2066 return -ENXIO;
2066 } 2067 }
2067 2068
2068 /* Now copy the data to the card. 2069 /* Now copy the data to the card. */
2069 * This will probably break on some architectures. 2070
2070 * I'll fix it when I have something to test on. 2071 buf = kmalloc(wrthdr.size, GFP_KERNEL);
2071 */ 2072 if (!buf)
2072 if (copy_from_user(card->mem + wrthdr.offset, 2073 return -ENOMEM;
2074
2075 if (copy_from_user(buf,
2073 ifr->ifr_data + sizeof (struct fstioc_write), 2076 ifr->ifr_data + sizeof (struct fstioc_write),
2074 wrthdr.size)) { 2077 wrthdr.size)) {
2078 kfree(buf);
2075 return -EFAULT; 2079 return -EFAULT;
2076 } 2080 }
2077 2081
2082 memcpy_toio(card->mem + wrthdr.offset, buf, wrthdr.size);
2083 kfree(buf);
2084
2078 /* Writes to the memory of a card in the reset state constitute 2085 /* Writes to the memory of a card in the reset state constitute
2079 * a download 2086 * a download
2080 */ 2087 */
diff --git a/drivers/net/wireless/ath5k/hw.c b/drivers/net/wireless/ath5k/hw.c
index c2de2d958e8e..01757436353d 100644
--- a/drivers/net/wireless/ath5k/hw.c
+++ b/drivers/net/wireless/ath5k/hw.c
@@ -427,6 +427,8 @@ void ath5k_hw_detach(struct ath5k_hw *ah)
427{ 427{
428 ATH5K_TRACE(ah->ah_sc); 428 ATH5K_TRACE(ah->ah_sc);
429 429
430 __set_bit(ATH_STAT_INVALID, ah->ah_sc->status);
431
430 if (ah->ah_rf_banks != NULL) 432 if (ah->ah_rf_banks != NULL)
431 kfree(ah->ah_rf_banks); 433 kfree(ah->ah_rf_banks);
432 434
diff --git a/drivers/net/wireless/b43/phy.c b/drivers/net/wireless/b43/phy.c
index 71507b260b6d..575c5436ebdf 100644
--- a/drivers/net/wireless/b43/phy.c
+++ b/drivers/net/wireless/b43/phy.c
@@ -860,7 +860,7 @@ static void b43_phy_ww(struct b43_wldev *dev)
860 b43_phy_write(dev, B43_PHY_OFDM(0xBB), 860 b43_phy_write(dev, B43_PHY_OFDM(0xBB),
861 (b43_phy_read(dev, B43_PHY_OFDM(0xBB)) & 0xF000) | 0x0053); 861 (b43_phy_read(dev, B43_PHY_OFDM(0xBB)) & 0xF000) | 0x0053);
862 b43_phy_write(dev, B43_PHY_OFDM61, 862 b43_phy_write(dev, B43_PHY_OFDM61,
863 (b43_phy_read(dev, B43_PHY_OFDM61 & 0xFE1F)) | 0x0120); 863 (b43_phy_read(dev, B43_PHY_OFDM61) & 0xFE1F) | 0x0120);
864 b43_phy_write(dev, B43_PHY_OFDM(0x13), 864 b43_phy_write(dev, B43_PHY_OFDM(0x13),
865 (b43_phy_read(dev, B43_PHY_OFDM(0x13)) & 0x0FFF) | 0x3000); 865 (b43_phy_read(dev, B43_PHY_OFDM(0x13)) & 0x0FFF) | 0x3000);
866 b43_phy_write(dev, B43_PHY_OFDM(0x14), 866 b43_phy_write(dev, B43_PHY_OFDM(0x14),
diff --git a/drivers/net/wireless/p54usb.c b/drivers/net/wireless/p54usb.c
index e7d4aee8799e..98ddbb3b3273 100644
--- a/drivers/net/wireless/p54usb.c
+++ b/drivers/net/wireless/p54usb.c
@@ -63,6 +63,7 @@ static struct usb_device_id p54u_table[] __devinitdata = {
63 {USB_DEVICE(0x0cde, 0x0008)}, /* Sagem XG703A */ 63 {USB_DEVICE(0x0cde, 0x0008)}, /* Sagem XG703A */
64 {USB_DEVICE(0x0d8e, 0x3762)}, /* DLink DWL-G120 Cohiba */ 64 {USB_DEVICE(0x0d8e, 0x3762)}, /* DLink DWL-G120 Cohiba */
65 {USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */ 65 {USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */
66 {USB_DEVICE(0x124a, 0x4025)}, /* IOGear GWU513 (GW3887IK chip) */
66 {USB_DEVICE(0x13b1, 0x000a)}, /* Linksys WUSB54G ver 2 */ 67 {USB_DEVICE(0x13b1, 0x000a)}, /* Linksys WUSB54G ver 2 */
67 {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */ 68 {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */
68 {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ 69 {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 05927b908f80..6c725422af5a 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -620,6 +620,9 @@ struct rt2x00_dev {
620 * This will only be compiled in when required. 620 * This will only be compiled in when required.
621 */ 621 */
622#ifdef CONFIG_RT2X00_LIB_RFKILL 622#ifdef CONFIG_RT2X00_LIB_RFKILL
623unsigned long rfkill_state;
624#define RFKILL_STATE_ALLOCATED 1
625#define RFKILL_STATE_REGISTERED 2
623 struct rfkill *rfkill; 626 struct rfkill *rfkill;
624 struct input_polled_dev *poll_dev; 627 struct input_polled_dev *poll_dev;
625#endif /* CONFIG_RT2X00_LIB_RFKILL */ 628#endif /* CONFIG_RT2X00_LIB_RFKILL */
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 0d51f478bcdf..bd305f7f3efd 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -1098,7 +1098,7 @@ static void rt2x00lib_uninitialize(struct rt2x00_dev *rt2x00dev)
1098 return; 1098 return;
1099 1099
1100 /* 1100 /*
1101 * Unregister rfkill. 1101 * Unregister extra components.
1102 */ 1102 */
1103 rt2x00rfkill_unregister(rt2x00dev); 1103 rt2x00rfkill_unregister(rt2x00dev);
1104 1104
@@ -1139,17 +1139,12 @@ static int rt2x00lib_initialize(struct rt2x00_dev *rt2x00dev)
1139 __set_bit(DEVICE_INITIALIZED, &rt2x00dev->flags); 1139 __set_bit(DEVICE_INITIALIZED, &rt2x00dev->flags);
1140 1140
1141 /* 1141 /*
1142 * Register the rfkill handler. 1142 * Register the extra components.
1143 */ 1143 */
1144 status = rt2x00rfkill_register(rt2x00dev); 1144 rt2x00rfkill_register(rt2x00dev);
1145 if (status)
1146 goto exit_unitialize;
1147 1145
1148 return 0; 1146 return 0;
1149 1147
1150exit_unitialize:
1151 rt2x00lib_uninitialize(rt2x00dev);
1152
1153exit: 1148exit:
1154 rt2x00lib_free_ring_entries(rt2x00dev); 1149 rt2x00lib_free_ring_entries(rt2x00dev);
1155 1150
@@ -1313,15 +1308,9 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
1313 } 1308 }
1314 1309
1315 /* 1310 /*
1316 * Allocatie rfkill. 1311 * Register extra components.
1317 */
1318 retval = rt2x00rfkill_allocate(rt2x00dev);
1319 if (retval)
1320 goto exit;
1321
1322 /*
1323 * Open the debugfs entry.
1324 */ 1312 */
1313 rt2x00rfkill_allocate(rt2x00dev);
1325 rt2x00debug_register(rt2x00dev); 1314 rt2x00debug_register(rt2x00dev);
1326 1315
1327 __set_bit(DEVICE_PRESENT, &rt2x00dev->flags); 1316 __set_bit(DEVICE_PRESENT, &rt2x00dev->flags);
@@ -1350,13 +1339,9 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
1350 rt2x00lib_uninitialize(rt2x00dev); 1339 rt2x00lib_uninitialize(rt2x00dev);
1351 1340
1352 /* 1341 /*
1353 * Close debugfs entry. 1342 * Free extra components
1354 */ 1343 */
1355 rt2x00debug_deregister(rt2x00dev); 1344 rt2x00debug_deregister(rt2x00dev);
1356
1357 /*
1358 * Free rfkill
1359 */
1360 rt2x00rfkill_free(rt2x00dev); 1345 rt2x00rfkill_free(rt2x00dev);
1361 1346
1362 /* 1347 /*
@@ -1395,11 +1380,15 @@ int rt2x00lib_suspend(struct rt2x00_dev *rt2x00dev, pm_message_t state)
1395 __set_bit(DEVICE_STARTED_SUSPEND, &rt2x00dev->flags); 1380 __set_bit(DEVICE_STARTED_SUSPEND, &rt2x00dev->flags);
1396 1381
1397 /* 1382 /*
1398 * Disable radio and unitialize all items 1383 * Disable radio.
1399 * that must be recreated on resume.
1400 */ 1384 */
1401 rt2x00lib_stop(rt2x00dev); 1385 rt2x00lib_stop(rt2x00dev);
1402 rt2x00lib_uninitialize(rt2x00dev); 1386 rt2x00lib_uninitialize(rt2x00dev);
1387
1388 /*
1389 * Suspend/disable extra components.
1390 */
1391 rt2x00rfkill_suspend(rt2x00dev);
1403 rt2x00debug_deregister(rt2x00dev); 1392 rt2x00debug_deregister(rt2x00dev);
1404 1393
1405exit: 1394exit:
@@ -1422,9 +1411,10 @@ int rt2x00lib_resume(struct rt2x00_dev *rt2x00dev)
1422 NOTICE(rt2x00dev, "Waking up.\n"); 1411 NOTICE(rt2x00dev, "Waking up.\n");
1423 1412
1424 /* 1413 /*
1425 * Open the debugfs entry. 1414 * Restore/enable extra components.
1426 */ 1415 */
1427 rt2x00debug_register(rt2x00dev); 1416 rt2x00debug_register(rt2x00dev);
1417 rt2x00rfkill_resume(rt2x00dev);
1428 1418
1429 /* 1419 /*
1430 * Only continue if mac80211 had open interfaces. 1420 * Only continue if mac80211 had open interfaces.
diff --git a/drivers/net/wireless/rt2x00/rt2x00lib.h b/drivers/net/wireless/rt2x00/rt2x00lib.h
index 1adbd28e0973..ce58c654ade1 100644
--- a/drivers/net/wireless/rt2x00/rt2x00lib.h
+++ b/drivers/net/wireless/rt2x00/rt2x00lib.h
@@ -100,28 +100,36 @@ static inline void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
100 * RFkill handlers. 100 * RFkill handlers.
101 */ 101 */
102#ifdef CONFIG_RT2X00_LIB_RFKILL 102#ifdef CONFIG_RT2X00_LIB_RFKILL
103int rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev); 103void rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev);
104void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev); 104void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev);
105int rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev); 105void rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev);
106void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev); 106void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev);
107void rt2x00rfkill_suspend(struct rt2x00_dev *rt2x00dev);
108void rt2x00rfkill_resume(struct rt2x00_dev *rt2x00dev);
107#else 109#else
108static inline int rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev) 110static inline void rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev)
109{ 111{
110 return 0;
111} 112}
112 113
113static inline void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev) 114static inline void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev)
114{ 115{
115} 116}
116 117
117static inline int rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev) 118static inline void rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev)
118{ 119{
119 return 0;
120} 120}
121 121
122static inline void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev) 122static inline void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev)
123{ 123{
124} 124}
125
126static inline void rt2x00rfkill_suspend(struct rt2x00_dev *rt2x00dev)
127{
128}
129
130static inline void rt2x00rfkill_resume(struct rt2x00_dev *rt2x00dev)
131{
132}
125#endif /* CONFIG_RT2X00_LIB_RFKILL */ 133#endif /* CONFIG_RT2X00_LIB_RFKILL */
126 134
127#endif /* RT2X00LIB_H */ 135#endif /* RT2X00LIB_H */
diff --git a/drivers/net/wireless/rt2x00/rt2x00rfkill.c b/drivers/net/wireless/rt2x00/rt2x00rfkill.c
index 34a96d44e306..f95577596206 100644
--- a/drivers/net/wireless/rt2x00/rt2x00rfkill.c
+++ b/drivers/net/wireless/rt2x00/rt2x00rfkill.c
@@ -69,56 +69,81 @@ static void rt2x00rfkill_poll(struct input_polled_dev *poll_dev)
69 } 69 }
70} 70}
71 71
72int rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev) 72void rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev)
73{ 73{
74 int retval; 74 if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags) ||
75 75 !test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->rfkill_state))
76 if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) 76 return;
77 return 0;
78 77
79 retval = rfkill_register(rt2x00dev->rfkill); 78 if (rfkill_register(rt2x00dev->rfkill)) {
80 if (retval) {
81 ERROR(rt2x00dev, "Failed to register rfkill handler.\n"); 79 ERROR(rt2x00dev, "Failed to register rfkill handler.\n");
82 return retval; 80 return;
83 } 81 }
84 82
85 retval = input_register_polled_device(rt2x00dev->poll_dev); 83 if (input_register_polled_device(rt2x00dev->poll_dev)) {
86 if (retval) {
87 ERROR(rt2x00dev, "Failed to register polled device.\n"); 84 ERROR(rt2x00dev, "Failed to register polled device.\n");
88 rfkill_unregister(rt2x00dev->rfkill); 85 rfkill_unregister(rt2x00dev->rfkill);
89 return retval; 86 return;
90 } 87 }
91 88
89 __set_bit(RFKILL_STATE_REGISTERED, &rt2x00dev->rfkill_state);
90
92 /* 91 /*
93 * Force initial poll which will detect the initial device state, 92 * Force initial poll which will detect the initial device state,
94 * and correctly sends the signal to the rfkill layer about this 93 * and correctly sends the signal to the rfkill layer about this
95 * state. 94 * state.
96 */ 95 */
97 rt2x00rfkill_poll(rt2x00dev->poll_dev); 96 rt2x00rfkill_poll(rt2x00dev->poll_dev);
98
99 return 0;
100} 97}
101 98
102void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev) 99void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev)
103{ 100{
104 if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) 101 if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags) ||
102 !test_bit(RFKILL_STATE_REGISTERED, &rt2x00dev->rfkill_state))
105 return; 103 return;
106 104
107 input_unregister_polled_device(rt2x00dev->poll_dev); 105 input_unregister_polled_device(rt2x00dev->poll_dev);
108 rfkill_unregister(rt2x00dev->rfkill); 106 rfkill_unregister(rt2x00dev->rfkill);
107
108 __clear_bit(RFKILL_STATE_REGISTERED, &rt2x00dev->rfkill_state);
109} 109}
110 110
111int rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev) 111static struct input_polled_dev *
112rt2x00rfkill_allocate_polldev(struct rt2x00_dev *rt2x00dev)
112{ 113{
113 struct device *device = wiphy_dev(rt2x00dev->hw->wiphy); 114 struct input_polled_dev *poll_dev;
115
116 poll_dev = input_allocate_polled_device();
117 if (!poll_dev)
118 return NULL;
119
120 poll_dev->private = rt2x00dev;
121 poll_dev->poll = rt2x00rfkill_poll;
122 poll_dev->poll_interval = RFKILL_POLL_INTERVAL;
123
124 poll_dev->input->name = rt2x00dev->ops->name;
125 poll_dev->input->phys = wiphy_name(rt2x00dev->hw->wiphy);
126 poll_dev->input->id.bustype = BUS_HOST;
127 poll_dev->input->id.vendor = 0x1814;
128 poll_dev->input->id.product = rt2x00dev->chip.rt;
129 poll_dev->input->id.version = rt2x00dev->chip.rev;
130 poll_dev->input->dev.parent = wiphy_dev(rt2x00dev->hw->wiphy);
131 poll_dev->input->evbit[0] = BIT(EV_KEY);
132 set_bit(KEY_WLAN, poll_dev->input->keybit);
133
134 return poll_dev;
135}
114 136
137void rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev)
138{
115 if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) 139 if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags))
116 return 0; 140 return;
117 141
118 rt2x00dev->rfkill = rfkill_allocate(device, RFKILL_TYPE_WLAN); 142 rt2x00dev->rfkill =
143 rfkill_allocate(wiphy_dev(rt2x00dev->hw->wiphy), RFKILL_TYPE_WLAN);
119 if (!rt2x00dev->rfkill) { 144 if (!rt2x00dev->rfkill) {
120 ERROR(rt2x00dev, "Failed to allocate rfkill handler.\n"); 145 ERROR(rt2x00dev, "Failed to allocate rfkill handler.\n");
121 goto exit; 146 return;
122 } 147 }
123 148
124 rt2x00dev->rfkill->name = rt2x00dev->ops->name; 149 rt2x00dev->rfkill->name = rt2x00dev->ops->name;
@@ -126,40 +151,49 @@ int rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev)
126 rt2x00dev->rfkill->state = -1; 151 rt2x00dev->rfkill->state = -1;
127 rt2x00dev->rfkill->toggle_radio = rt2x00rfkill_toggle_radio; 152 rt2x00dev->rfkill->toggle_radio = rt2x00rfkill_toggle_radio;
128 153
129 rt2x00dev->poll_dev = input_allocate_polled_device(); 154 rt2x00dev->poll_dev = rt2x00rfkill_allocate_polldev(rt2x00dev);
130 if (!rt2x00dev->poll_dev) { 155 if (!rt2x00dev->poll_dev) {
131 ERROR(rt2x00dev, "Failed to allocate polled device.\n"); 156 ERROR(rt2x00dev, "Failed to allocate polled device.\n");
132 goto exit_free_rfkill; 157 rfkill_free(rt2x00dev->rfkill);
158 rt2x00dev->rfkill = NULL;
159 return;
133 } 160 }
134 161
135 rt2x00dev->poll_dev->private = rt2x00dev; 162 return;
136 rt2x00dev->poll_dev->poll = rt2x00rfkill_poll; 163}
137 rt2x00dev->poll_dev->poll_interval = RFKILL_POLL_INTERVAL;
138 164
139 rt2x00dev->poll_dev->input->name = rt2x00dev->ops->name; 165void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev)
140 rt2x00dev->poll_dev->input->phys = wiphy_name(rt2x00dev->hw->wiphy); 166{
141 rt2x00dev->poll_dev->input->id.bustype = BUS_HOST; 167 if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags) ||
142 rt2x00dev->poll_dev->input->id.vendor = 0x1814; 168 !test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->rfkill_state))
143 rt2x00dev->poll_dev->input->id.product = rt2x00dev->chip.rt; 169 return;
144 rt2x00dev->poll_dev->input->id.version = rt2x00dev->chip.rev;
145 rt2x00dev->poll_dev->input->dev.parent = device;
146 rt2x00dev->poll_dev->input->evbit[0] = BIT(EV_KEY);
147 set_bit(KEY_WLAN, rt2x00dev->poll_dev->input->keybit);
148 170
149 return 0; 171 input_free_polled_device(rt2x00dev->poll_dev);
172 rt2x00dev->poll_dev = NULL;
150 173
151exit_free_rfkill:
152 rfkill_free(rt2x00dev->rfkill); 174 rfkill_free(rt2x00dev->rfkill);
153 175 rt2x00dev->rfkill = NULL;
154exit:
155 return -ENOMEM;
156} 176}
157 177
158void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev) 178void rt2x00rfkill_suspend(struct rt2x00_dev *rt2x00dev)
159{ 179{
160 if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) 180 if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags) ||
181 !test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->rfkill_state))
161 return; 182 return;
162 183
163 input_free_polled_device(rt2x00dev->poll_dev); 184 input_free_polled_device(rt2x00dev->poll_dev);
164 rfkill_free(rt2x00dev->rfkill); 185 rt2x00dev->poll_dev = NULL;
186}
187
188void rt2x00rfkill_resume(struct rt2x00_dev *rt2x00dev)
189{
190 if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags) ||
191 !test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->rfkill_state))
192 return;
193
194 rt2x00dev->poll_dev = rt2x00rfkill_allocate_polldev(rt2x00dev);
195 if (!rt2x00dev->poll_dev) {
196 ERROR(rt2x00dev, "Failed to allocate polled device.\n");
197 return;
198 }
165} 199}
diff --git a/drivers/parisc/pdc_stable.c b/drivers/parisc/pdc_stable.c
index de34aa9d3136..f9f9a5f1bbd0 100644
--- a/drivers/parisc/pdc_stable.c
+++ b/drivers/parisc/pdc_stable.c
@@ -829,7 +829,7 @@ static ssize_t pdcs_autoboot_write(struct kobject *kobj,
829 struct kobj_attribute *attr, 829 struct kobj_attribute *attr,
830 const char *buf, size_t count) 830 const char *buf, size_t count)
831{ 831{
832 return pdcs_auto_write(kset, attr, buf, count, PF_AUTOBOOT); 832 return pdcs_auto_write(kobj, attr, buf, count, PF_AUTOBOOT);
833} 833}
834 834
835/** 835/**
@@ -845,7 +845,7 @@ static ssize_t pdcs_autosearch_write(struct kobject *kobj,
845 struct kobj_attribute *attr, 845 struct kobj_attribute *attr,
846 const char *buf, size_t count) 846 const char *buf, size_t count)
847{ 847{
848 return pdcs_auto_write(kset, attr, buf, count, PF_AUTOSEARCH); 848 return pdcs_auto_write(kobj, attr, buf, count, PF_AUTOSEARCH);
849} 849}
850 850
851/** 851/**
@@ -1066,7 +1066,7 @@ pdc_stable_init(void)
1066 } 1066 }
1067 1067
1068 /* Don't forget the root entries */ 1068 /* Don't forget the root entries */
1069 error = sysfs_create_group(stable_kobj, pdcs_attr_group); 1069 error = sysfs_create_group(stable_kobj, &pdcs_attr_group);
1070 1070
1071 /* register the paths kset as a child of the stable kset */ 1071 /* register the paths kset as a child of the stable kset */
1072 paths_kset = kset_create_and_add("paths", NULL, stable_kobj); 1072 paths_kset = kset_create_and_add("paths", NULL, stable_kobj);
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c
index bdbe780e21c5..8c4d2c13d5f2 100644
--- a/drivers/parisc/sba_iommu.c
+++ b/drivers/parisc/sba_iommu.c
@@ -314,8 +314,8 @@ sba_dump_sg( struct ioc *ioc, struct scatterlist *startsg, int nents)
314#define RESMAP_MASK(n) (~0UL << (BITS_PER_LONG - (n))) 314#define RESMAP_MASK(n) (~0UL << (BITS_PER_LONG - (n)))
315#define RESMAP_IDX_MASK (sizeof(unsigned long) - 1) 315#define RESMAP_IDX_MASK (sizeof(unsigned long) - 1)
316 316
317unsigned long ptr_to_pide(struct ioc *ioc, unsigned long *res_ptr, 317static unsigned long ptr_to_pide(struct ioc *ioc, unsigned long *res_ptr,
318 unsigned int bitshiftcnt) 318 unsigned int bitshiftcnt)
319{ 319{
320 return (((unsigned long)res_ptr - (unsigned long)ioc->res_map) << 3) 320 return (((unsigned long)res_ptr - (unsigned long)ioc->res_map) << 3)
321 + bitshiftcnt; 321 + bitshiftcnt;
diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
index 7f4836b8e71e..5fa4ba0d9934 100644
--- a/drivers/pci/hotplug/pciehp_core.c
+++ b/drivers/pci/hotplug/pciehp_core.c
@@ -467,7 +467,7 @@ static int pciehp_probe(struct pcie_device *dev, const struct pcie_port_service_
467 t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset); 467 t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset);
468 468
469 t_slot->hpc_ops->get_adapter_status(t_slot, &value); /* Check if slot is occupied */ 469 t_slot->hpc_ops->get_adapter_status(t_slot, &value); /* Check if slot is occupied */
470 if (value) { 470 if (value && pciehp_force) {
471 rc = pciehp_enable_slot(t_slot); 471 rc = pciehp_enable_slot(t_slot);
472 if (rc) /* -ENODEV: shouldn't happen, but deal with it */ 472 if (rc) /* -ENODEV: shouldn't happen, but deal with it */
473 value = 0; 473 value = 0;
diff --git a/drivers/pnp/isapnp/core.c b/drivers/pnp/isapnp/core.c
index 2c925b7cd93e..257f5d827d83 100644
--- a/drivers/pnp/isapnp/core.c
+++ b/drivers/pnp/isapnp/core.c
@@ -88,6 +88,15 @@ MODULE_LICENSE("GPL");
88#define _LTAG_MEM32RANGE 0x85 88#define _LTAG_MEM32RANGE 0x85
89#define _LTAG_FIXEDMEM32RANGE 0x86 89#define _LTAG_FIXEDMEM32RANGE 0x86
90 90
91/*
92 * Sizes of ISAPNP logical device configuration register sets.
93 * See PNP-ISA-v1.0a.pdf, Appendix A.
94 */
95#define ISAPNP_MAX_MEM 4
96#define ISAPNP_MAX_PORT 8
97#define ISAPNP_MAX_IRQ 2
98#define ISAPNP_MAX_DMA 2
99
91static unsigned char isapnp_checksum_value; 100static unsigned char isapnp_checksum_value;
92static DEFINE_MUTEX(isapnp_cfg_mutex); 101static DEFINE_MUTEX(isapnp_cfg_mutex);
93static int isapnp_csn_count; 102static int isapnp_csn_count;
@@ -945,14 +954,14 @@ static int isapnp_read_resources(struct pnp_dev *dev,
945 954
946 dev->active = isapnp_read_byte(ISAPNP_CFG_ACTIVATE); 955 dev->active = isapnp_read_byte(ISAPNP_CFG_ACTIVATE);
947 if (dev->active) { 956 if (dev->active) {
948 for (tmp = 0; tmp < PNP_MAX_PORT; tmp++) { 957 for (tmp = 0; tmp < ISAPNP_MAX_PORT; tmp++) {
949 ret = isapnp_read_word(ISAPNP_CFG_PORT + (tmp << 1)); 958 ret = isapnp_read_word(ISAPNP_CFG_PORT + (tmp << 1));
950 if (!ret) 959 if (!ret)
951 continue; 960 continue;
952 res->port_resource[tmp].start = ret; 961 res->port_resource[tmp].start = ret;
953 res->port_resource[tmp].flags = IORESOURCE_IO; 962 res->port_resource[tmp].flags = IORESOURCE_IO;
954 } 963 }
955 for (tmp = 0; tmp < PNP_MAX_MEM; tmp++) { 964 for (tmp = 0; tmp < ISAPNP_MAX_MEM; tmp++) {
956 ret = 965 ret =
957 isapnp_read_word(ISAPNP_CFG_MEM + (tmp << 3)) << 8; 966 isapnp_read_word(ISAPNP_CFG_MEM + (tmp << 3)) << 8;
958 if (!ret) 967 if (!ret)
@@ -960,7 +969,7 @@ static int isapnp_read_resources(struct pnp_dev *dev,
960 res->mem_resource[tmp].start = ret; 969 res->mem_resource[tmp].start = ret;
961 res->mem_resource[tmp].flags = IORESOURCE_MEM; 970 res->mem_resource[tmp].flags = IORESOURCE_MEM;
962 } 971 }
963 for (tmp = 0; tmp < PNP_MAX_IRQ; tmp++) { 972 for (tmp = 0; tmp < ISAPNP_MAX_IRQ; tmp++) {
964 ret = 973 ret =
965 (isapnp_read_word(ISAPNP_CFG_IRQ + (tmp << 1)) >> 974 (isapnp_read_word(ISAPNP_CFG_IRQ + (tmp << 1)) >>
966 8); 975 8);
@@ -970,7 +979,7 @@ static int isapnp_read_resources(struct pnp_dev *dev,
970 res->irq_resource[tmp].end = ret; 979 res->irq_resource[tmp].end = ret;
971 res->irq_resource[tmp].flags = IORESOURCE_IRQ; 980 res->irq_resource[tmp].flags = IORESOURCE_IRQ;
972 } 981 }
973 for (tmp = 0; tmp < PNP_MAX_DMA; tmp++) { 982 for (tmp = 0; tmp < ISAPNP_MAX_DMA; tmp++) {
974 ret = isapnp_read_byte(ISAPNP_CFG_DMA + tmp); 983 ret = isapnp_read_byte(ISAPNP_CFG_DMA + tmp);
975 if (ret == 4) 984 if (ret == 4)
976 continue; 985 continue;
@@ -1002,14 +1011,14 @@ static int isapnp_set_resources(struct pnp_dev *dev,
1002 isapnp_cfg_begin(dev->card->number, dev->number); 1011 isapnp_cfg_begin(dev->card->number, dev->number);
1003 dev->active = 1; 1012 dev->active = 1;
1004 for (tmp = 0; 1013 for (tmp = 0;
1005 tmp < PNP_MAX_PORT 1014 tmp < ISAPNP_MAX_PORT
1006 && (res->port_resource[tmp]. 1015 && (res->port_resource[tmp].
1007 flags & (IORESOURCE_IO | IORESOURCE_UNSET)) == IORESOURCE_IO; 1016 flags & (IORESOURCE_IO | IORESOURCE_UNSET)) == IORESOURCE_IO;
1008 tmp++) 1017 tmp++)
1009 isapnp_write_word(ISAPNP_CFG_PORT + (tmp << 1), 1018 isapnp_write_word(ISAPNP_CFG_PORT + (tmp << 1),
1010 res->port_resource[tmp].start); 1019 res->port_resource[tmp].start);
1011 for (tmp = 0; 1020 for (tmp = 0;
1012 tmp < PNP_MAX_IRQ 1021 tmp < ISAPNP_MAX_IRQ
1013 && (res->irq_resource[tmp]. 1022 && (res->irq_resource[tmp].
1014 flags & (IORESOURCE_IRQ | IORESOURCE_UNSET)) == IORESOURCE_IRQ; 1023 flags & (IORESOURCE_IRQ | IORESOURCE_UNSET)) == IORESOURCE_IRQ;
1015 tmp++) { 1024 tmp++) {
@@ -1019,14 +1028,14 @@ static int isapnp_set_resources(struct pnp_dev *dev,
1019 isapnp_write_byte(ISAPNP_CFG_IRQ + (tmp << 1), irq); 1028 isapnp_write_byte(ISAPNP_CFG_IRQ + (tmp << 1), irq);
1020 } 1029 }
1021 for (tmp = 0; 1030 for (tmp = 0;
1022 tmp < PNP_MAX_DMA 1031 tmp < ISAPNP_MAX_DMA
1023 && (res->dma_resource[tmp]. 1032 && (res->dma_resource[tmp].
1024 flags & (IORESOURCE_DMA | IORESOURCE_UNSET)) == IORESOURCE_DMA; 1033 flags & (IORESOURCE_DMA | IORESOURCE_UNSET)) == IORESOURCE_DMA;
1025 tmp++) 1034 tmp++)
1026 isapnp_write_byte(ISAPNP_CFG_DMA + tmp, 1035 isapnp_write_byte(ISAPNP_CFG_DMA + tmp,
1027 res->dma_resource[tmp].start); 1036 res->dma_resource[tmp].start);
1028 for (tmp = 0; 1037 for (tmp = 0;
1029 tmp < PNP_MAX_MEM 1038 tmp < ISAPNP_MAX_MEM
1030 && (res->mem_resource[tmp]. 1039 && (res->mem_resource[tmp].
1031 flags & (IORESOURCE_MEM | IORESOURCE_UNSET)) == IORESOURCE_MEM; 1040 flags & (IORESOURCE_MEM | IORESOURCE_UNSET)) == IORESOURCE_MEM;
1032 tmp++) 1041 tmp++)
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 82f5ad9c3af4..9e7de63b26ef 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -16,7 +16,7 @@ menuconfig RTC_CLASS
16 probably want to enable one or more of the interfaces below. 16 probably want to enable one or more of the interfaces below.
17 17
18 This driver can also be built as a module. If so, the module 18 This driver can also be built as a module. If so, the module
19 will be called rtc-class. 19 will be called rtc-core.
20 20
21if RTC_CLASS 21if RTC_CLASS
22 22
diff --git a/drivers/rtc/rtc-at91sam9.c b/drivers/rtc/rtc-at91sam9.c
index bbf10ecf416c..56728a2a3385 100644
--- a/drivers/rtc/rtc-at91sam9.c
+++ b/drivers/rtc/rtc-at91sam9.c
@@ -274,7 +274,7 @@ static irqreturn_t at91_rtc_interrupt(int irq, void *_rtc)
274 * SR clears it, so we must only read it in this irq handler! 274 * SR clears it, so we must only read it in this irq handler!
275 */ 275 */
276 mr = rtt_readl(rtc, MR) & (AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN); 276 mr = rtt_readl(rtc, MR) & (AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN);
277 sr = rtt_readl(rtc, SR) & mr; 277 sr = rtt_readl(rtc, SR) & (mr >> 16);
278 if (!sr) 278 if (!sr)
279 return IRQ_NONE; 279 return IRQ_NONE;
280 280
@@ -321,6 +321,10 @@ static int __init at91_rtc_probe(struct platform_device *pdev)
321 if (!rtc) 321 if (!rtc)
322 return -ENOMEM; 322 return -ENOMEM;
323 323
324 /* platform setup code should have handled this; sigh */
325 if (!device_can_wakeup(&pdev->dev))
326 device_init_wakeup(&pdev->dev, 1);
327
324 platform_set_drvdata(pdev, rtc); 328 platform_set_drvdata(pdev, rtc);
325 rtc->rtt = (void __force __iomem *) (AT91_VA_BASE_SYS - AT91_BASE_SYS); 329 rtc->rtt = (void __force __iomem *) (AT91_VA_BASE_SYS - AT91_BASE_SYS);
326 rtc->rtt += r->start; 330 rtc->rtt += r->start;
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index c46666a24809..b9d374082b65 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -325,7 +325,7 @@ menuconfig SCSI_LOWLEVEL
325 depends on SCSI!=n 325 depends on SCSI!=n
326 default y 326 default y
327 327
328if SCSI_LOWLEVEL 328if SCSI_LOWLEVEL && SCSI
329 329
330config ISCSI_TCP 330config ISCSI_TCP
331 tristate "iSCSI Initiator over TCP/IP" 331 tristate "iSCSI Initiator over TCP/IP"
diff --git a/drivers/scsi/a100u2w.c b/drivers/scsi/a100u2w.c
index f608d4a1d6da..792b2e807bf3 100644
--- a/drivers/scsi/a100u2w.c
+++ b/drivers/scsi/a100u2w.c
@@ -674,12 +674,13 @@ static struct orc_scb *__orc_alloc_scb(struct orc_host * host)
674 for (index = 0; index < 32; index++) { 674 for (index = 0; index < 32; index++) {
675 if ((host->allocation_map[channel][i] >> index) & 0x01) { 675 if ((host->allocation_map[channel][i] >> index) & 0x01) {
676 host->allocation_map[channel][i] &= ~(1 << index); 676 host->allocation_map[channel][i] &= ~(1 << index);
677 break; 677 idx = index + 32 * i;
678 /*
679 * Translate the index to a structure instance
680 */
681 return host->scb_virt + idx;
678 } 682 }
679 } 683 }
680 idx = index + 32 * i;
681 /* Translate the index to a structure instance */
682 return (struct orc_scb *) ((unsigned long) host->scb_virt + (idx * sizeof(struct orc_scb)));
683 } 684 }
684 return NULL; 685 return NULL;
685} 686}
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
index 3c2d6888bb8c..8591585e5cc5 100644
--- a/drivers/scsi/advansys.c
+++ b/drivers/scsi/advansys.c
@@ -6439,7 +6439,7 @@ static int AdvLoadMicrocode(AdvPortAddr iop_base, unsigned char *buf, int size,
6439 i += 2; 6439 i += 2;
6440 len += 2; 6440 len += 2;
6441 } else { 6441 } else {
6442 unsigned char off = buf[i] * 2; 6442 unsigned int off = buf[i] * 2;
6443 unsigned short word = (buf[off + 1] << 8) | buf[off]; 6443 unsigned short word = (buf[off + 1] << 8) | buf[off];
6444 AdvWriteWordAutoIncLram(iop_base, word); 6444 AdvWriteWordAutoIncLram(iop_base, word);
6445 len += 2; 6445 len += 2;
diff --git a/drivers/scsi/arcmsr/arcmsr.h b/drivers/scsi/arcmsr/arcmsr.h
index 0393707bdfce..3288be2e49f8 100644
--- a/drivers/scsi/arcmsr/arcmsr.h
+++ b/drivers/scsi/arcmsr/arcmsr.h
@@ -341,13 +341,13 @@ struct MessageUnit_B
341 uint32_t done_qbuffer[ARCMSR_MAX_HBB_POSTQUEUE]; 341 uint32_t done_qbuffer[ARCMSR_MAX_HBB_POSTQUEUE];
342 uint32_t postq_index; 342 uint32_t postq_index;
343 uint32_t doneq_index; 343 uint32_t doneq_index;
344 uint32_t __iomem *drv2iop_doorbell_reg; 344 void __iomem *drv2iop_doorbell_reg;
345 uint32_t __iomem *drv2iop_doorbell_mask_reg; 345 void __iomem *drv2iop_doorbell_mask_reg;
346 uint32_t __iomem *iop2drv_doorbell_reg; 346 void __iomem *iop2drv_doorbell_reg;
347 uint32_t __iomem *iop2drv_doorbell_mask_reg; 347 void __iomem *iop2drv_doorbell_mask_reg;
348 uint32_t __iomem *msgcode_rwbuffer_reg; 348 void __iomem *msgcode_rwbuffer_reg;
349 uint32_t __iomem *ioctl_wbuffer_reg; 349 void __iomem *ioctl_wbuffer_reg;
350 uint32_t __iomem *ioctl_rbuffer_reg; 350 void __iomem *ioctl_rbuffer_reg;
351}; 351};
352 352
353/* 353/*
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
index 27ebd336409b..0b2080d33575 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -493,6 +493,12 @@ int __gdth_execute(struct scsi_device *sdev, gdth_cmd_str *gdtcmd, char *cmnd,
493 if (!scp) 493 if (!scp)
494 return -ENOMEM; 494 return -ENOMEM;
495 495
496 scp->sense_buffer = kzalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL);
497 if (!scp->sense_buffer) {
498 kfree(scp);
499 return -ENOMEM;
500 }
501
496 scp->device = sdev; 502 scp->device = sdev;
497 memset(&cmndinfo, 0, sizeof(cmndinfo)); 503 memset(&cmndinfo, 0, sizeof(cmndinfo));
498 504
@@ -513,6 +519,7 @@ int __gdth_execute(struct scsi_device *sdev, gdth_cmd_str *gdtcmd, char *cmnd,
513 rval = cmndinfo.status; 519 rval = cmndinfo.status;
514 if (info) 520 if (info)
515 *info = cmndinfo.info; 521 *info = cmndinfo.info;
522 kfree(scp->sense_buffer);
516 kfree(scp); 523 kfree(scp);
517 return rval; 524 return rval;
518} 525}
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index ba21d97d1855..f40898dc2d14 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -2162,10 +2162,15 @@ void sdev_evt_send(struct scsi_device *sdev, struct scsi_event *evt)
2162{ 2162{
2163 unsigned long flags; 2163 unsigned long flags;
2164 2164
2165#if 0
2166 /* FIXME: currently this check eliminates all media change events
2167 * for polled devices. Need to update to discriminate between AN
2168 * and polled events */
2165 if (!test_bit(evt->evt_type, sdev->supported_events)) { 2169 if (!test_bit(evt->evt_type, sdev->supported_events)) {
2166 kfree(evt); 2170 kfree(evt);
2167 return; 2171 return;
2168 } 2172 }
2173#endif
2169 2174
2170 spin_lock_irqsave(&sdev->list_lock, flags); 2175 spin_lock_irqsave(&sdev->list_lock, flags);
2171 list_add_tail(&evt->node, &sdev->event_list); 2176 list_add_tail(&evt->node, &sdev->event_list);
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
index ed83cdb6e67d..b9b09a704584 100644
--- a/drivers/scsi/scsi_sysfs.c
+++ b/drivers/scsi/scsi_sysfs.c
@@ -294,6 +294,7 @@ static void scsi_device_dev_release_usercontext(struct work_struct *work)
294 } 294 }
295 295
296 if (sdev->request_queue) { 296 if (sdev->request_queue) {
297 bsg_unregister_queue(sdev->request_queue);
297 sdev->request_queue->queuedata = NULL; 298 sdev->request_queue->queuedata = NULL;
298 /* user context needed to free queue */ 299 /* user context needed to free queue */
299 scsi_free_queue(sdev->request_queue); 300 scsi_free_queue(sdev->request_queue);
@@ -857,7 +858,6 @@ void __scsi_remove_device(struct scsi_device *sdev)
857 if (scsi_device_set_state(sdev, SDEV_CANCEL) != 0) 858 if (scsi_device_set_state(sdev, SDEV_CANCEL) != 0)
858 return; 859 return;
859 860
860 bsg_unregister_queue(sdev->request_queue);
861 class_device_unregister(&sdev->sdev_classdev); 861 class_device_unregister(&sdev->sdev_classdev);
862 transport_remove_device(dev); 862 transport_remove_device(dev);
863 device_del(dev); 863 device_del(dev);
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 7aee64dbfbeb..5fe7aaed904c 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1654,6 +1654,7 @@ static int sd_probe(struct device *dev)
1654 sdkp->disk = gd; 1654 sdkp->disk = gd;
1655 sdkp->index = index; 1655 sdkp->index = index;
1656 sdkp->openers = 0; 1656 sdkp->openers = 0;
1657 sdkp->previous_state = 1;
1657 1658
1658 if (!sdp->timeout) { 1659 if (!sdp->timeout) {
1659 if (sdp->type != TYPE_MOD) 1660 if (sdp->type != TYPE_MOD)
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 208565bdbe8e..7ee86d4a7618 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -623,6 +623,7 @@ static int sr_probe(struct device *dev)
623 cd->disk = disk; 623 cd->disk = disk;
624 cd->capacity = 0x1fffff; 624 cd->capacity = 0x1fffff;
625 cd->device->changed = 1; /* force recheck CD type */ 625 cd->device->changed = 1; /* force recheck CD type */
626 cd->previous_state = 1;
626 cd->use = 1; 627 cd->use = 1;
627 cd->readcd_known = 0; 628 cd->readcd_known = 0;
628 cd->readcd_cdda = 0; 629 cd->readcd_cdda = 0;
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c
index a8c116b80bff..9d244d1644e1 100644
--- a/drivers/serial/sh-sci.c
+++ b/drivers/serial/sh-sci.c
@@ -414,12 +414,12 @@ static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag)
414 defined(CONFIG_CPU_SUBTYPE_SH7785) 414 defined(CONFIG_CPU_SUBTYPE_SH7785)
415static inline int scif_txroom(struct uart_port *port) 415static inline int scif_txroom(struct uart_port *port)
416{ 416{
417 return SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0x7f); 417 return SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0xff);
418} 418}
419 419
420static inline int scif_rxroom(struct uart_port *port) 420static inline int scif_rxroom(struct uart_port *port)
421{ 421{
422 return sci_in(port, SCRFDR) & 0x7f; 422 return sci_in(port, SCRFDR) & 0xff;
423} 423}
424#else 424#else
425static inline int scif_txroom(struct uart_port *port) 425static inline int scif_txroom(struct uart_port *port)
diff --git a/drivers/sn/ioc3.c b/drivers/sn/ioc3.c
index 29fcd6d0301d..a0aa33dde0a4 100644
--- a/drivers/sn/ioc3.c
+++ b/drivers/sn/ioc3.c
@@ -561,7 +561,7 @@ void ioc3_unregister_submodule(struct ioc3_submodule *is)
561 printk(KERN_WARNING 561 printk(KERN_WARNING
562 "%s: IOC3 submodule %s remove failed " 562 "%s: IOC3 submodule %s remove failed "
563 "for pci_dev %s.\n", 563 "for pci_dev %s.\n",
564 __FUNCTION__, module_name(is->owner), 564 __func__, module_name(is->owner),
565 pci_name(idd->pdev)); 565 pci_name(idd->pdev));
566 idd->active[is->id] = 0; 566 idd->active[is->id] = 0;
567 if(is->irq_mask) 567 if(is->irq_mask)
@@ -611,7 +611,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
611 if ((ret = pci_enable_device(pdev))) { 611 if ((ret = pci_enable_device(pdev))) {
612 printk(KERN_WARNING 612 printk(KERN_WARNING
613 "%s: Failed to enable IOC3 device for pci_dev %s.\n", 613 "%s: Failed to enable IOC3 device for pci_dev %s.\n",
614 __FUNCTION__, pci_name(pdev)); 614 __func__, pci_name(pdev));
615 goto out; 615 goto out;
616 } 616 }
617 pci_set_master(pdev); 617 pci_set_master(pdev);
@@ -623,7 +623,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
623 if (ret < 0) { 623 if (ret < 0) {
624 printk(KERN_WARNING "%s: Unable to obtain 64 bit DMA " 624 printk(KERN_WARNING "%s: Unable to obtain 64 bit DMA "
625 "for consistent allocations\n", 625 "for consistent allocations\n",
626 __FUNCTION__); 626 __func__);
627 } 627 }
628 } 628 }
629#endif 629#endif
@@ -633,7 +633,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
633 if (!idd) { 633 if (!idd) {
634 printk(KERN_WARNING 634 printk(KERN_WARNING
635 "%s: Failed to allocate IOC3 data for pci_dev %s.\n", 635 "%s: Failed to allocate IOC3 data for pci_dev %s.\n",
636 __FUNCTION__, pci_name(pdev)); 636 __func__, pci_name(pdev));
637 ret = -ENODEV; 637 ret = -ENODEV;
638 goto out_idd; 638 goto out_idd;
639 } 639 }
@@ -649,7 +649,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
649 printk(KERN_WARNING 649 printk(KERN_WARNING
650 "%s: Unable to find IOC3 resource " 650 "%s: Unable to find IOC3 resource "
651 "for pci_dev %s.\n", 651 "for pci_dev %s.\n",
652 __FUNCTION__, pci_name(pdev)); 652 __func__, pci_name(pdev));
653 ret = -ENODEV; 653 ret = -ENODEV;
654 goto out_pci; 654 goto out_pci;
655 } 655 }
@@ -657,7 +657,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
657 printk(KERN_WARNING 657 printk(KERN_WARNING
658 "%s: Unable to request IOC3 region " 658 "%s: Unable to request IOC3 region "
659 "for pci_dev %s.\n", 659 "for pci_dev %s.\n",
660 __FUNCTION__, pci_name(pdev)); 660 __func__, pci_name(pdev));
661 ret = -ENODEV; 661 ret = -ENODEV;
662 goto out_pci; 662 goto out_pci;
663 } 663 }
@@ -666,7 +666,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
666 printk(KERN_WARNING 666 printk(KERN_WARNING
667 "%s: Unable to remap IOC3 region " 667 "%s: Unable to remap IOC3 region "
668 "for pci_dev %s.\n", 668 "for pci_dev %s.\n",
669 __FUNCTION__, pci_name(pdev)); 669 __func__, pci_name(pdev));
670 ret = -ENODEV; 670 ret = -ENODEV;
671 goto out_misc_region; 671 goto out_misc_region;
672 } 672 }
@@ -709,7 +709,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
709 } else { 709 } else {
710 printk(KERN_WARNING 710 printk(KERN_WARNING
711 "%s : request_irq fails for IRQ 0x%x\n ", 711 "%s : request_irq fails for IRQ 0x%x\n ",
712 __FUNCTION__, pdev->irq); 712 __func__, pdev->irq);
713 } 713 }
714 if (!request_irq(pdev->irq+2, ioc3_intr_io, IRQF_SHARED, 714 if (!request_irq(pdev->irq+2, ioc3_intr_io, IRQF_SHARED,
715 "ioc3-io", (void *)idd)) { 715 "ioc3-io", (void *)idd)) {
@@ -717,7 +717,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
717 } else { 717 } else {
718 printk(KERN_WARNING 718 printk(KERN_WARNING
719 "%s : request_irq fails for IRQ 0x%x\n ", 719 "%s : request_irq fails for IRQ 0x%x\n ",
720 __FUNCTION__, pdev->irq+2); 720 __func__, pdev->irq+2);
721 } 721 }
722 } else { 722 } else {
723 if (!request_irq(pdev->irq, ioc3_intr_io, IRQF_SHARED, 723 if (!request_irq(pdev->irq, ioc3_intr_io, IRQF_SHARED,
@@ -726,7 +726,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
726 } else { 726 } else {
727 printk(KERN_WARNING 727 printk(KERN_WARNING
728 "%s : request_irq fails for IRQ 0x%x\n ", 728 "%s : request_irq fails for IRQ 0x%x\n ",
729 __FUNCTION__, pdev->irq); 729 __func__, pdev->irq);
730 } 730 }
731 } 731 }
732 732
@@ -769,7 +769,7 @@ static void ioc3_remove(struct pci_dev *pdev)
769 printk(KERN_WARNING 769 printk(KERN_WARNING
770 "%s: IOC3 submodule 0x%s remove failed " 770 "%s: IOC3 submodule 0x%s remove failed "
771 "for pci_dev %s.\n", 771 "for pci_dev %s.\n",
772 __FUNCTION__, 772 __func__,
773 module_name(ioc3_submodules[id]->owner), 773 module_name(ioc3_submodules[id]->owner),
774 pci_name(pdev)); 774 pci_name(pdev));
775 idd->active[id] = 0; 775 idd->active[id] = 0;
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index 3ab313ed441c..17e71d56f31e 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -4,8 +4,6 @@
4 4
5menuconfig THERMAL 5menuconfig THERMAL
6 bool "Generic Thermal sysfs driver" 6 bool "Generic Thermal sysfs driver"
7 select HWMON
8 default y
9 help 7 help
10 Generic Thermal Sysfs driver offers a generic mechanism for 8 Generic Thermal Sysfs driver offers a generic mechanism for
11 thermal management. Usually it's made up of one or more thermal 9 thermal management. Usually it's made up of one or more thermal
diff --git a/drivers/thermal/thermal.c b/drivers/thermal/thermal.c
index 41bd4c805ace..8b86e53ccf7a 100644
--- a/drivers/thermal/thermal.c
+++ b/drivers/thermal/thermal.c
@@ -30,10 +30,8 @@
30#include <linux/idr.h> 30#include <linux/idr.h>
31#include <linux/thermal.h> 31#include <linux/thermal.h>
32#include <linux/spinlock.h> 32#include <linux/spinlock.h>
33#include <linux/hwmon.h>
34#include <linux/hwmon-sysfs.h>
35 33
36MODULE_AUTHOR("Zhang Rui"); 34MODULE_AUTHOR("Zhang Rui")
37MODULE_DESCRIPTION("Generic thermal management sysfs support"); 35MODULE_DESCRIPTION("Generic thermal management sysfs support");
38MODULE_LICENSE("GPL"); 36MODULE_LICENSE("GPL");
39 37
@@ -58,9 +56,6 @@ static LIST_HEAD(thermal_tz_list);
58static LIST_HEAD(thermal_cdev_list); 56static LIST_HEAD(thermal_cdev_list);
59static DEFINE_MUTEX(thermal_list_lock); 57static DEFINE_MUTEX(thermal_list_lock);
60 58
61static struct device *thermal_hwmon;
62#define MAX_THERMAL_ZONES 10
63
64static int get_idr(struct idr *idr, struct mutex *lock, int *id) 59static int get_idr(struct idr *idr, struct mutex *lock, int *id)
65{ 60{
66 int err; 61 int err;
@@ -92,67 +87,7 @@ static void release_idr(struct idr *idr, struct mutex *lock, int id)
92 mutex_unlock(lock); 87 mutex_unlock(lock);
93} 88}
94 89
95/* hwmon sys I/F*/ 90/* sys I/F for thermal zone */
96static ssize_t
97name_show(struct device *dev, struct device_attribute *attr, char *buf)
98{
99 return sprintf(buf, "thermal_sys_class\n");
100}
101
102static ssize_t
103temp_input_show(struct device *dev, struct device_attribute *attr, char *buf)
104{
105 struct thermal_zone_device *tz;
106 struct sensor_device_attribute *sensor_attr
107 = to_sensor_dev_attr(attr);
108
109 list_for_each_entry(tz, &thermal_tz_list, node)
110 if (tz->id == sensor_attr->index)
111 return tz->ops->get_temp(tz, buf);
112
113 return -ENODEV;
114}
115
116static ssize_t
117temp_crit_show(struct device *dev, struct device_attribute *attr,
118 char *buf)
119{
120 struct thermal_zone_device *tz;
121 struct sensor_device_attribute *sensor_attr
122 = to_sensor_dev_attr(attr);
123
124 list_for_each_entry(tz, &thermal_tz_list, node)
125 if (tz->id == sensor_attr->index)
126 return tz->ops->get_trip_temp(tz, 0, buf);
127
128 return -ENODEV;
129}
130
131static DEVICE_ATTR(name, 0444, name_show, NULL);
132static struct sensor_device_attribute sensor_attrs[] = {
133 SENSOR_ATTR(temp1_input, 0444, temp_input_show, NULL, 0),
134 SENSOR_ATTR(temp1_crit, 0444, temp_crit_show, NULL, 0),
135 SENSOR_ATTR(temp2_input, 0444, temp_input_show, NULL, 1),
136 SENSOR_ATTR(temp2_crit, 0444, temp_crit_show, NULL, 1),
137 SENSOR_ATTR(temp3_input, 0444, temp_input_show, NULL, 2),
138 SENSOR_ATTR(temp3_crit, 0444, temp_crit_show, NULL, 2),
139 SENSOR_ATTR(temp4_input, 0444, temp_input_show, NULL, 3),
140 SENSOR_ATTR(temp4_crit, 0444, temp_crit_show, NULL, 3),
141 SENSOR_ATTR(temp5_input, 0444, temp_input_show, NULL, 4),
142 SENSOR_ATTR(temp5_crit, 0444, temp_crit_show, NULL, 4),
143 SENSOR_ATTR(temp6_input, 0444, temp_input_show, NULL, 5),
144 SENSOR_ATTR(temp6_crit, 0444, temp_crit_show, NULL, 5),
145 SENSOR_ATTR(temp7_input, 0444, temp_input_show, NULL, 6),
146 SENSOR_ATTR(temp7_crit, 0444, temp_crit_show, NULL, 6),
147 SENSOR_ATTR(temp8_input, 0444, temp_input_show, NULL, 7),
148 SENSOR_ATTR(temp8_crit, 0444, temp_crit_show, NULL, 7),
149 SENSOR_ATTR(temp9_input, 0444, temp_input_show, NULL, 8),
150 SENSOR_ATTR(temp9_crit, 0444, temp_crit_show, NULL, 8),
151 SENSOR_ATTR(temp10_input, 0444, temp_input_show, NULL, 9),
152 SENSOR_ATTR(temp10_crit, 0444, temp_crit_show, NULL, 9),
153};
154
155/* thermal zone sys I/F */
156 91
157#define to_thermal_zone(_dev) \ 92#define to_thermal_zone(_dev) \
158 container_of(_dev, struct thermal_zone_device, device) 93 container_of(_dev, struct thermal_zone_device, device)
@@ -279,7 +214,7 @@ do { \
279 device_remove_file(_dev, &trip_point_attrs[_index * 2 + 1]); \ 214 device_remove_file(_dev, &trip_point_attrs[_index * 2 + 1]); \
280} while (0) 215} while (0)
281 216
282/* cooling device sys I/F */ 217/* sys I/F for cooling device */
283#define to_cooling_device(_dev) \ 218#define to_cooling_device(_dev) \
284 container_of(_dev, struct thermal_cooling_device, device) 219 container_of(_dev, struct thermal_cooling_device, device)
285 220
@@ -512,9 +447,6 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *type,
512 struct thermal_zone_device *pos; 447 struct thermal_zone_device *pos;
513 int result; 448 int result;
514 449
515 if (!type)
516 return ERR_PTR(-EINVAL);
517
518 if (strlen(type) >= THERMAL_NAME_LENGTH) 450 if (strlen(type) >= THERMAL_NAME_LENGTH)
519 return ERR_PTR(-EINVAL); 451 return ERR_PTR(-EINVAL);
520 452
@@ -545,9 +477,11 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *type,
545 } 477 }
546 478
547 /* sys I/F */ 479 /* sys I/F */
548 result = device_create_file(&cdev->device, &dev_attr_cdev_type); 480 if (type) {
549 if (result) 481 result = device_create_file(&cdev->device, &dev_attr_cdev_type);
550 goto unregister; 482 if (result)
483 goto unregister;
484 }
551 485
552 result = device_create_file(&cdev->device, &dev_attr_max_state); 486 result = device_create_file(&cdev->device, &dev_attr_max_state);
553 if (result) 487 if (result)
@@ -613,8 +547,8 @@ void thermal_cooling_device_unregister(struct
613 tz->ops->unbind(tz, cdev); 547 tz->ops->unbind(tz, cdev);
614 } 548 }
615 mutex_unlock(&thermal_list_lock); 549 mutex_unlock(&thermal_list_lock);
616 550 if (cdev->type[0])
617 device_remove_file(&cdev->device, &dev_attr_cdev_type); 551 device_remove_file(&cdev->device, &dev_attr_cdev_type);
618 device_remove_file(&cdev->device, &dev_attr_max_state); 552 device_remove_file(&cdev->device, &dev_attr_max_state);
619 device_remove_file(&cdev->device, &dev_attr_cur_state); 553 device_remove_file(&cdev->device, &dev_attr_cur_state);
620 554
@@ -646,9 +580,6 @@ struct thermal_zone_device *thermal_zone_device_register(char *type,
646 int result; 580 int result;
647 int count; 581 int count;
648 582
649 if (!type)
650 return ERR_PTR(-EINVAL);
651
652 if (strlen(type) >= THERMAL_NAME_LENGTH) 583 if (strlen(type) >= THERMAL_NAME_LENGTH)
653 return ERR_PTR(-EINVAL); 584 return ERR_PTR(-EINVAL);
654 585
@@ -670,13 +601,6 @@ struct thermal_zone_device *thermal_zone_device_register(char *type,
670 kfree(tz); 601 kfree(tz);
671 return ERR_PTR(result); 602 return ERR_PTR(result);
672 } 603 }
673 if (tz->id >= MAX_THERMAL_ZONES) {
674 printk(KERN_ERR PREFIX
675 "Too many thermal zones\n");
676 release_idr(&thermal_tz_idr, &thermal_idr_lock, tz->id);
677 kfree(tz);
678 return ERR_PTR(-EINVAL);
679 }
680 604
681 strcpy(tz->type, type); 605 strcpy(tz->type, type);
682 tz->ops = ops; 606 tz->ops = ops;
@@ -691,27 +615,12 @@ struct thermal_zone_device *thermal_zone_device_register(char *type,
691 return ERR_PTR(result); 615 return ERR_PTR(result);
692 } 616 }
693 617
694 /* hwmon sys I/F */
695 result = device_create_file(thermal_hwmon,
696 &sensor_attrs[tz->id * 2].dev_attr);
697 if (result)
698 goto unregister;
699
700 if (trips > 0) {
701 char buf[40];
702 result = tz->ops->get_trip_type(tz, 0, buf);
703 if (result > 0 && !strcmp(buf, "critical\n")) {
704 result = device_create_file(thermal_hwmon,
705 &sensor_attrs[tz->id * 2 + 1].dev_attr);
706 if (result)
707 goto unregister;
708 }
709 }
710
711 /* sys I/F */ 618 /* sys I/F */
712 result = device_create_file(&tz->device, &dev_attr_type); 619 if (type) {
713 if (result) 620 result = device_create_file(&tz->device, &dev_attr_type);
714 goto unregister; 621 if (result)
622 goto unregister;
623 }
715 624
716 result = device_create_file(&tz->device, &dev_attr_temp); 625 result = device_create_file(&tz->device, &dev_attr_temp);
717 if (result) 626 if (result)
@@ -778,17 +687,8 @@ void thermal_zone_device_unregister(struct thermal_zone_device *tz)
778 tz->ops->unbind(tz, cdev); 687 tz->ops->unbind(tz, cdev);
779 mutex_unlock(&thermal_list_lock); 688 mutex_unlock(&thermal_list_lock);
780 689
781 device_remove_file(thermal_hwmon, 690 if (tz->type[0])
782 &sensor_attrs[tz->id * 2].dev_attr); 691 device_remove_file(&tz->device, &dev_attr_type);
783 if (tz->trips > 0) {
784 char buf[40];
785 if (tz->ops->get_trip_type(tz, 0, buf) > 0)
786 if (!strcmp(buf, "critical\n"))
787 device_remove_file(thermal_hwmon,
788 &sensor_attrs[tz->id * 2 + 1].dev_attr);
789 }
790
791 device_remove_file(&tz->device, &dev_attr_type);
792 device_remove_file(&tz->device, &dev_attr_temp); 692 device_remove_file(&tz->device, &dev_attr_temp);
793 if (tz->ops->get_mode) 693 if (tz->ops->get_mode)
794 device_remove_file(&tz->device, &dev_attr_mode); 694 device_remove_file(&tz->device, &dev_attr_mode);
@@ -805,19 +705,6 @@ void thermal_zone_device_unregister(struct thermal_zone_device *tz)
805 705
806EXPORT_SYMBOL(thermal_zone_device_unregister); 706EXPORT_SYMBOL(thermal_zone_device_unregister);
807 707
808static void thermal_exit(void)
809{
810 if (thermal_hwmon) {
811 device_remove_file(thermal_hwmon, &dev_attr_name);
812 hwmon_device_unregister(thermal_hwmon);
813 }
814 class_unregister(&thermal_class);
815 idr_destroy(&thermal_tz_idr);
816 idr_destroy(&thermal_cdev_idr);
817 mutex_destroy(&thermal_idr_lock);
818 mutex_destroy(&thermal_list_lock);
819}
820
821static int __init thermal_init(void) 708static int __init thermal_init(void)
822{ 709{
823 int result = 0; 710 int result = 0;
@@ -829,21 +716,17 @@ static int __init thermal_init(void)
829 mutex_destroy(&thermal_idr_lock); 716 mutex_destroy(&thermal_idr_lock);
830 mutex_destroy(&thermal_list_lock); 717 mutex_destroy(&thermal_list_lock);
831 } 718 }
832
833 thermal_hwmon = hwmon_device_register(NULL);
834 if (IS_ERR(thermal_hwmon)) {
835 result = PTR_ERR(thermal_hwmon);
836 thermal_hwmon = NULL;
837 printk(KERN_ERR PREFIX
838 "unable to register hwmon device\n");
839 thermal_exit();
840 return result;
841 }
842
843 result = device_create_file(thermal_hwmon, &dev_attr_name);
844
845 return result; 719 return result;
846} 720}
847 721
722static void __exit thermal_exit(void)
723{
724 class_unregister(&thermal_class);
725 idr_destroy(&thermal_tz_idr);
726 idr_destroy(&thermal_cdev_idr);
727 mutex_destroy(&thermal_idr_lock);
728 mutex_destroy(&thermal_list_lock);
729}
730
848subsys_initcall(thermal_init); 731subsys_initcall(thermal_init);
849module_exit(thermal_exit); 732module_exit(thermal_exit);
diff --git a/drivers/usb/storage/isd200.c b/drivers/usb/storage/isd200.c
index 2ae1e8673b19..9d3f28b92cbe 100644
--- a/drivers/usb/storage/isd200.c
+++ b/drivers/usb/storage/isd200.c
@@ -1469,6 +1469,7 @@ static void isd200_free_info_ptrs(void *info_)
1469 if (info) { 1469 if (info) {
1470 kfree(info->id); 1470 kfree(info->id);
1471 kfree(info->RegsBuf); 1471 kfree(info->RegsBuf);
1472 kfree(info->srb.sense_buffer);
1472 } 1473 }
1473} 1474}
1474 1475
@@ -1494,7 +1495,9 @@ static int isd200_init_info(struct us_data *us)
1494 kzalloc(sizeof(struct hd_driveid), GFP_KERNEL); 1495 kzalloc(sizeof(struct hd_driveid), GFP_KERNEL);
1495 info->RegsBuf = (unsigned char *) 1496 info->RegsBuf = (unsigned char *)
1496 kmalloc(sizeof(info->ATARegs), GFP_KERNEL); 1497 kmalloc(sizeof(info->ATARegs), GFP_KERNEL);
1497 if (!info->id || !info->RegsBuf) { 1498 info->srb.sense_buffer =
1499 kmalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL);
1500 if (!info->id || !info->RegsBuf || !info->srb.sense_buffer) {
1498 isd200_free_info_ptrs(info); 1501 isd200_free_info_ptrs(info);
1499 kfree(info); 1502 kfree(info);
1500 retStatus = ISD200_ERROR; 1503 retStatus = ISD200_ERROR;
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index e0b0580705e4..1bd5fb30237d 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -1893,6 +1893,20 @@ config FB_XILINX
1893 framebuffer. ML300 carries a 640*480 LCD display on the board, 1893 framebuffer. ML300 carries a 640*480 LCD display on the board,
1894 ML403 uses a standard DB15 VGA connector. 1894 ML403 uses a standard DB15 VGA connector.
1895 1895
1896config FB_METRONOME
1897 tristate "Metronome display controller support"
1898 depends on FB && ARCH_PXA && MMU
1899 select FB_SYS_FILLRECT
1900 select FB_SYS_COPYAREA
1901 select FB_SYS_IMAGEBLIT
1902 select FB_SYS_FOPS
1903 select FB_DEFERRED_IO
1904 help
1905 This enables support for the Metronome display controller. Tested
1906 with an E-Ink 800x600 display and Gumstix Connex through an AMLCD
1907 interface. Please read <file:Documentation/fb/metronomefb.txt>
1908 for more information.
1909
1896config FB_VIRTUAL 1910config FB_VIRTUAL
1897 tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)" 1911 tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)"
1898 depends on FB 1912 depends on FB
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 03371c789039..11c0e5e05f21 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -103,6 +103,7 @@ obj-$(CONFIG_FB_PMAG_AA) += pmag-aa-fb.o
103obj-$(CONFIG_FB_PMAG_BA) += pmag-ba-fb.o 103obj-$(CONFIG_FB_PMAG_BA) += pmag-ba-fb.o
104obj-$(CONFIG_FB_PMAGB_B) += pmagb-b-fb.o 104obj-$(CONFIG_FB_PMAGB_B) += pmagb-b-fb.o
105obj-$(CONFIG_FB_MAXINE) += maxinefb.o 105obj-$(CONFIG_FB_MAXINE) += maxinefb.o
106obj-$(CONFIG_FB_METRONOME) += metronomefb.o
106obj-$(CONFIG_FB_S1D13XXX) += s1d13xxxfb.o 107obj-$(CONFIG_FB_S1D13XXX) += s1d13xxxfb.o
107obj-$(CONFIG_FB_IMX) += imxfb.o 108obj-$(CONFIG_FB_IMX) += imxfb.o
108obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o 109obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o
diff --git a/drivers/video/fb_defio.c b/drivers/video/fb_defio.c
index 0f8cfb988c90..24843fdd5395 100644
--- a/drivers/video/fb_defio.c
+++ b/drivers/video/fb_defio.c
@@ -4,7 +4,7 @@
4 * Copyright (C) 2006 Jaya Kumar 4 * Copyright (C) 2006 Jaya Kumar
5 * 5 *
6 * This file is subject to the terms and conditions of the GNU General Public 6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file COPYING in the main directory of this archive 7 * License. See the file COPYING in the main directory of this archive
8 * for more details. 8 * for more details.
9 */ 9 */
10 10
@@ -31,7 +31,7 @@ static int fb_deferred_io_fault(struct vm_area_struct *vma,
31 unsigned long offset; 31 unsigned long offset;
32 struct page *page; 32 struct page *page;
33 struct fb_info *info = vma->vm_private_data; 33 struct fb_info *info = vma->vm_private_data;
34 /* info->screen_base is in System RAM */ 34 /* info->screen_base is virtual memory */
35 void *screen_base = (void __force *) info->screen_base; 35 void *screen_base = (void __force *) info->screen_base;
36 36
37 offset = vmf->pgoff << PAGE_SHIFT; 37 offset = vmf->pgoff << PAGE_SHIFT;
@@ -43,6 +43,15 @@ static int fb_deferred_io_fault(struct vm_area_struct *vma,
43 return VM_FAULT_SIGBUS; 43 return VM_FAULT_SIGBUS;
44 44
45 get_page(page); 45 get_page(page);
46
47 if (vma->vm_file)
48 page->mapping = vma->vm_file->f_mapping;
49 else
50 printk(KERN_ERR "no mapping available\n");
51
52 BUG_ON(!page->mapping);
53 page->index = vmf->pgoff;
54
46 vmf->page = page; 55 vmf->page = page;
47 return 0; 56 return 0;
48} 57}
@@ -138,11 +147,20 @@ EXPORT_SYMBOL_GPL(fb_deferred_io_init);
138 147
139void fb_deferred_io_cleanup(struct fb_info *info) 148void fb_deferred_io_cleanup(struct fb_info *info)
140{ 149{
150 void *screen_base = (void __force *) info->screen_base;
141 struct fb_deferred_io *fbdefio = info->fbdefio; 151 struct fb_deferred_io *fbdefio = info->fbdefio;
152 struct page *page;
153 int i;
142 154
143 BUG_ON(!fbdefio); 155 BUG_ON(!fbdefio);
144 cancel_delayed_work(&info->deferred_work); 156 cancel_delayed_work(&info->deferred_work);
145 flush_scheduled_work(); 157 flush_scheduled_work();
158
159 /* clear out the mapping that we setup */
160 for (i = 0 ; i < info->fix.smem_len; i += PAGE_SIZE) {
161 page = vmalloc_to_page(screen_base + i);
162 page->mapping = NULL;
163 }
146} 164}
147EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup); 165EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup);
148 166
diff --git a/drivers/video/i810/i810_main.c b/drivers/video/i810/i810_main.c
index 1d13dd099af8..a24e680d2b9c 100644
--- a/drivers/video/i810/i810_main.c
+++ b/drivers/video/i810/i810_main.c
@@ -1476,7 +1476,7 @@ static int i810fb_cursor(struct fb_info *info, struct fb_cursor *cursor)
1476 struct i810fb_par *par = info->par; 1476 struct i810fb_par *par = info->par;
1477 u8 __iomem *mmio = par->mmio_start_virtual; 1477 u8 __iomem *mmio = par->mmio_start_virtual;
1478 1478
1479 if (!(par->dev_flags & LOCKUP)) 1479 if (par->dev_flags & LOCKUP)
1480 return -ENXIO; 1480 return -ENXIO;
1481 1481
1482 if (cursor->image.width > 64 || cursor->image.height > 64) 1482 if (cursor->image.width > 64 || cursor->image.height > 64)
diff --git a/drivers/video/metronomefb.c b/drivers/video/metronomefb.c
new file mode 100644
index 000000000000..e9a89fd82757
--- /dev/null
+++ b/drivers/video/metronomefb.c
@@ -0,0 +1,999 @@
1/*
2 * linux/drivers/video/metronomefb.c -- FB driver for Metronome controller
3 *
4 * Copyright (C) 2008, Jaya Kumar
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file COPYING in the main directory of this archive for
8 * more details.
9 *
10 * Layout is based on skeletonfb.c by James Simmons and Geert Uytterhoeven.
11 *
12 * This work was made possible by help and equipment support from E-Ink
13 * Corporation. http://support.eink.com/community
14 *
15 * This driver is written to be used with the Metronome display controller.
16 * It was tested with an E-Ink 800x600 Vizplex EPD on a Gumstix Connex board
17 * using the Lyre interface board.
18 *
19 * General notes:
20 * - User must set metronomefb_enable=1 to enable it.
21 * - See Documentation/fb/metronomefb.txt for how metronome works.
22 */
23#include <linux/module.h>
24#include <linux/kernel.h>
25#include <linux/errno.h>
26#include <linux/string.h>
27#include <linux/mm.h>
28#include <linux/slab.h>
29#include <linux/vmalloc.h>
30#include <linux/delay.h>
31#include <linux/interrupt.h>
32#include <linux/fb.h>
33#include <linux/init.h>
34#include <linux/platform_device.h>
35#include <linux/list.h>
36#include <linux/firmware.h>
37#include <linux/dma-mapping.h>
38#include <linux/uaccess.h>
39#include <linux/irq.h>
40
41#include <asm/arch/pxa-regs.h>
42#include <asm/unaligned.h>
43
44#define DEBUG 1
45#ifdef DEBUG
46#define DPRINTK(f, a...) printk(KERN_DEBUG "%s: " f, __func__ , ## a)
47#else
48#define DPRINTK(f, a...)
49#endif
50
51
52/* Display specific information */
53#define DPY_W 832
54#define DPY_H 622
55
56struct metromem_desc {
57 u32 mFDADR0;
58 u32 mFSADR0;
59 u32 mFIDR0;
60 u32 mLDCMD0;
61};
62
63struct metromem_cmd {
64 u16 opcode;
65 u16 args[((64-2)/2)];
66 u16 csum;
67};
68
69struct metronomefb_par {
70 unsigned char *metromem;
71 struct metromem_desc *metromem_desc;
72 struct metromem_cmd *metromem_cmd;
73 unsigned char *metromem_wfm;
74 unsigned char *metromem_img;
75 u16 *metromem_img_csum;
76 u16 *csum_table;
77 int metromemsize;
78 dma_addr_t metromem_dma;
79 dma_addr_t metromem_desc_dma;
80 struct fb_info *info;
81 wait_queue_head_t waitq;
82 u8 frame_count;
83};
84
85/* frame differs from image. frame includes non-visible pixels */
86struct epd_frame {
87 int fw; /* frame width */
88 int fh; /* frame height */
89};
90
91static struct epd_frame epd_frame_table[] = {
92 {
93 .fw = 832,
94 .fh = 622
95 },
96};
97
98static struct fb_fix_screeninfo metronomefb_fix __devinitdata = {
99 .id = "metronomefb",
100 .type = FB_TYPE_PACKED_PIXELS,
101 .visual = FB_VISUAL_STATIC_PSEUDOCOLOR,
102 .xpanstep = 0,
103 .ypanstep = 0,
104 .ywrapstep = 0,
105 .line_length = DPY_W,
106 .accel = FB_ACCEL_NONE,
107};
108
109static struct fb_var_screeninfo metronomefb_var __devinitdata = {
110 .xres = DPY_W,
111 .yres = DPY_H,
112 .xres_virtual = DPY_W,
113 .yres_virtual = DPY_H,
114 .bits_per_pixel = 8,
115 .grayscale = 1,
116 .nonstd = 1,
117 .red = { 4, 3, 0 },
118 .green = { 0, 0, 0 },
119 .blue = { 0, 0, 0 },
120 .transp = { 0, 0, 0 },
121};
122
123static unsigned int metronomefb_enable;
124
125struct waveform_hdr {
126 u8 stuff[32];
127
128 u8 wmta[3];
129 u8 fvsn;
130
131 u8 luts;
132 u8 mc;
133 u8 trc;
134 u8 stuff3;
135
136 u8 endb;
137 u8 swtb;
138 u8 stuff2a[2];
139
140 u8 stuff2b[3];
141 u8 wfm_cs;
142} __attribute__ ((packed));
143
144/* main metronomefb functions */
145static u8 calc_cksum(int start, int end, u8 *mem)
146{
147 u8 tmp = 0;
148 int i;
149
150 for (i = start; i < end; i++)
151 tmp += mem[i];
152
153 return tmp;
154}
155
156static u16 calc_img_cksum(u16 *start, int length)
157{
158 u16 tmp = 0;
159
160 while (length--)
161 tmp += *start++;
162
163 return tmp;
164}
165
166/* here we decode the incoming waveform file and populate metromem */
167#define EXP_WFORM_SIZE 47001
168static int load_waveform(u8 *mem, size_t size, u8 *metromem, int m, int t,
169 u8 *frame_count)
170{
171 int tta;
172 int wmta;
173 int trn = 0;
174 int i;
175 unsigned char v;
176 u8 cksum;
177 int cksum_idx;
178 int wfm_idx, owfm_idx;
179 int mem_idx = 0;
180 struct waveform_hdr *wfm_hdr;
181
182 if (size != EXP_WFORM_SIZE) {
183 printk(KERN_ERR "Error: unexpected size %d != %d\n", size,
184 EXP_WFORM_SIZE);
185 return -EINVAL;
186 }
187
188 wfm_hdr = (struct waveform_hdr *) mem;
189
190 if (wfm_hdr->fvsn != 1) {
191 printk(KERN_ERR "Error: bad fvsn %x\n", wfm_hdr->fvsn);
192 return -EINVAL;
193 }
194 if (wfm_hdr->luts != 0) {
195 printk(KERN_ERR "Error: bad luts %x\n", wfm_hdr->luts);
196 return -EINVAL;
197 }
198 cksum = calc_cksum(32, 47, mem);
199 if (cksum != wfm_hdr->wfm_cs) {
200 printk(KERN_ERR "Error: bad cksum %x != %x\n", cksum,
201 wfm_hdr->wfm_cs);
202 return -EINVAL;
203 }
204 wfm_hdr->mc += 1;
205 wfm_hdr->trc += 1;
206 for (i = 0; i < 5; i++) {
207 if (*(wfm_hdr->stuff2a + i) != 0) {
208 printk(KERN_ERR "Error: unexpected value in padding\n");
209 return -EINVAL;
210 }
211 }
212
213 /* calculating trn. trn is something used to index into
214 the waveform. presumably selecting the right one for the
215 desired temperature. it works out the offset of the first
216 v that exceeds the specified temperature */
217 if ((sizeof(*wfm_hdr) + wfm_hdr->trc) > size)
218 return -EINVAL;
219
220 for (i = sizeof(*wfm_hdr); i <= sizeof(*wfm_hdr) + wfm_hdr->trc; i++) {
221 if (mem[i] > t) {
222 trn = i - sizeof(*wfm_hdr) - 1;
223 break;
224 }
225 }
226
227 /* check temperature range table checksum */
228 cksum_idx = sizeof(*wfm_hdr) + wfm_hdr->trc + 1;
229 if (cksum_idx > size)
230 return -EINVAL;
231 cksum = calc_cksum(sizeof(*wfm_hdr), cksum_idx, mem);
232 if (cksum != mem[cksum_idx]) {
233 printk(KERN_ERR "Error: bad temperature range table cksum"
234 " %x != %x\n", cksum, mem[cksum_idx]);
235 return -EINVAL;
236 }
237
238 /* check waveform mode table address checksum */
239 wmta = le32_to_cpu(get_unaligned((__le32 *) wfm_hdr->wmta));
240 wmta &= 0x00FFFFFF;
241 cksum_idx = wmta + m*4 + 3;
242 if (cksum_idx > size)
243 return -EINVAL;
244 cksum = calc_cksum(cksum_idx - 3, cksum_idx, mem);
245 if (cksum != mem[cksum_idx]) {
246 printk(KERN_ERR "Error: bad mode table address cksum"
247 " %x != %x\n", cksum, mem[cksum_idx]);
248 return -EINVAL;
249 }
250
251 /* check waveform temperature table address checksum */
252 tta = le32_to_cpu(get_unaligned((int *) (mem + wmta + m*4)));
253 tta &= 0x00FFFFFF;
254 cksum_idx = tta + trn*4 + 3;
255 if (cksum_idx > size)
256 return -EINVAL;
257 cksum = calc_cksum(cksum_idx - 3, cksum_idx, mem);
258 if (cksum != mem[cksum_idx]) {
259 printk(KERN_ERR "Error: bad temperature table address cksum"
260 " %x != %x\n", cksum, mem[cksum_idx]);
261 return -EINVAL;
262 }
263
264 /* here we do the real work of putting the waveform into the
265 metromem buffer. this does runlength decoding of the waveform */
266 wfm_idx = le32_to_cpu(get_unaligned((__le32 *) (mem + tta + trn*4)));
267 wfm_idx &= 0x00FFFFFF;
268 owfm_idx = wfm_idx;
269 if (wfm_idx > size)
270 return -EINVAL;
271 while (wfm_idx < size) {
272 unsigned char rl;
273 v = mem[wfm_idx++];
274 if (v == wfm_hdr->swtb) {
275 while (((v = mem[wfm_idx++]) != wfm_hdr->swtb) &&
276 wfm_idx < size)
277 metromem[mem_idx++] = v;
278
279 continue;
280 }
281
282 if (v == wfm_hdr->endb)
283 break;
284
285 rl = mem[wfm_idx++];
286 for (i = 0; i <= rl; i++)
287 metromem[mem_idx++] = v;
288 }
289
290 cksum_idx = wfm_idx;
291 if (cksum_idx > size)
292 return -EINVAL;
293 cksum = calc_cksum(owfm_idx, cksum_idx, mem);
294 if (cksum != mem[cksum_idx]) {
295 printk(KERN_ERR "Error: bad waveform data cksum"
296 " %x != %x\n", cksum, mem[cksum_idx]);
297 return -EINVAL;
298 }
299 *frame_count = (mem_idx/64);
300
301 return 0;
302}
303
304/* register offsets for gpio control */
305#define LED_GPIO_PIN 51
306#define STDBY_GPIO_PIN 48
307#define RST_GPIO_PIN 49
308#define RDY_GPIO_PIN 32
309#define ERR_GPIO_PIN 17
310#define PCBPWR_GPIO_PIN 16
311
312#define AF_SEL_GPIO_N 0x3
313#define GAFR0_U_OFFSET(pin) ((pin - 16) * 2)
314#define GAFR1_L_OFFSET(pin) ((pin - 32) * 2)
315#define GAFR1_U_OFFSET(pin) ((pin - 48) * 2)
316#define GPDR1_OFFSET(pin) (pin - 32)
317#define GPCR1_OFFSET(pin) (pin - 32)
318#define GPSR1_OFFSET(pin) (pin - 32)
319#define GPCR0_OFFSET(pin) (pin)
320#define GPSR0_OFFSET(pin) (pin)
321
322static void metronome_set_gpio_output(int pin, int val)
323{
324 u8 index;
325
326 index = pin >> 4;
327
328 switch (index) {
329 case 1:
330 if (val)
331 GPSR0 |= (1 << GPSR0_OFFSET(pin));
332 else
333 GPCR0 |= (1 << GPCR0_OFFSET(pin));
334 break;
335 case 2:
336 break;
337 case 3:
338 if (val)
339 GPSR1 |= (1 << GPSR1_OFFSET(pin));
340 else
341 GPCR1 |= (1 << GPCR1_OFFSET(pin));
342 break;
343 default:
344 printk(KERN_ERR "unimplemented\n");
345 }
346}
347
348static void __devinit metronome_init_gpio_pin(int pin, int dir)
349{
350 u8 index;
351 /* dir 0 is output, 1 is input
352 - do 2 things here:
353 - set gpio alternate function to standard gpio
354 - set gpio direction to input or output */
355
356 index = pin >> 4;
357 switch (index) {
358 case 1:
359 GAFR0_U &= ~(AF_SEL_GPIO_N << GAFR0_U_OFFSET(pin));
360
361 if (dir)
362 GPDR0 &= ~(1 << pin);
363 else
364 GPDR0 |= (1 << pin);
365 break;
366 case 2:
367 GAFR1_L &= ~(AF_SEL_GPIO_N << GAFR1_L_OFFSET(pin));
368
369 if (dir)
370 GPDR1 &= ~(1 << GPDR1_OFFSET(pin));
371 else
372 GPDR1 |= (1 << GPDR1_OFFSET(pin));
373 break;
374 case 3:
375 GAFR1_U &= ~(AF_SEL_GPIO_N << GAFR1_U_OFFSET(pin));
376
377 if (dir)
378 GPDR1 &= ~(1 << GPDR1_OFFSET(pin));
379 else
380 GPDR1 |= (1 << GPDR1_OFFSET(pin));
381 break;
382 default:
383 printk(KERN_ERR "unimplemented\n");
384 }
385}
386
387static void __devinit metronome_init_gpio_regs(void)
388{
389 metronome_init_gpio_pin(LED_GPIO_PIN, 0);
390 metronome_set_gpio_output(LED_GPIO_PIN, 0);
391
392 metronome_init_gpio_pin(STDBY_GPIO_PIN, 0);
393 metronome_set_gpio_output(STDBY_GPIO_PIN, 0);
394
395 metronome_init_gpio_pin(RST_GPIO_PIN, 0);
396 metronome_set_gpio_output(RST_GPIO_PIN, 0);
397
398 metronome_init_gpio_pin(RDY_GPIO_PIN, 1);
399
400 metronome_init_gpio_pin(ERR_GPIO_PIN, 1);
401
402 metronome_init_gpio_pin(PCBPWR_GPIO_PIN, 0);
403 metronome_set_gpio_output(PCBPWR_GPIO_PIN, 0);
404}
405
406static void metronome_disable_lcd_controller(struct metronomefb_par *par)
407{
408 LCSR = 0xffffffff; /* Clear LCD Status Register */
409 LCCR0 |= LCCR0_DIS; /* Disable LCD Controller */
410
411 /* we reset and just wait for things to settle */
412 msleep(200);
413}
414
415static void metronome_enable_lcd_controller(struct metronomefb_par *par)
416{
417 LCSR = 0xffffffff;
418 FDADR0 = par->metromem_desc_dma;
419 LCCR0 |= LCCR0_ENB;
420}
421
422static void __devinit metronome_init_lcdc_regs(struct metronomefb_par *par)
423{
424 /* here we do:
425 - disable the lcd controller
426 - setup lcd control registers
427 - setup dma descriptor
428 - reenable lcd controller
429 */
430
431 /* disable the lcd controller */
432 metronome_disable_lcd_controller(par);
433
434 /* setup lcd control registers */
435 LCCR0 = LCCR0_LDM | LCCR0_SFM | LCCR0_IUM | LCCR0_EFM | LCCR0_PAS
436 | LCCR0_QDM | LCCR0_BM | LCCR0_OUM;
437
438 LCCR1 = (epd_frame_table[0].fw/2 - 1) /* pixels per line */
439 | (27 << 10) /* hsync pulse width - 1 */
440 | (33 << 16) /* eol pixel count */
441 | (33 << 24); /* bol pixel count */
442
443 LCCR2 = (epd_frame_table[0].fh - 1) /* lines per panel */
444 | (24 << 10) /* vsync pulse width - 1 */
445 | (2 << 16) /* eof pixel count */
446 | (0 << 24); /* bof pixel count */
447
448 LCCR3 = 2 /* pixel clock divisor */
449 | (24 << 8) /* AC Bias pin freq */
450 | LCCR3_16BPP /* BPP */
451 | LCCR3_PCP; /* PCP falling edge */
452
453 /* setup dma descriptor */
454 par->metromem_desc->mFDADR0 = par->metromem_desc_dma;
455 par->metromem_desc->mFSADR0 = par->metromem_dma;
456 par->metromem_desc->mFIDR0 = 0;
457 par->metromem_desc->mLDCMD0 = epd_frame_table[0].fw
458 * epd_frame_table[0].fh;
459 /* reenable lcd controller */
460 metronome_enable_lcd_controller(par);
461}
462
463static int metronome_display_cmd(struct metronomefb_par *par)
464{
465 int i;
466 u16 cs;
467 u16 opcode;
468 static u8 borderval;
469 u8 *ptr;
470
471 /* setup display command
472 we can't immediately set the opcode since the controller
473 will try parse the command before we've set it all up
474 so we just set cs here and set the opcode at the end */
475
476 ptr = par->metromem;
477
478 if (par->metromem_cmd->opcode == 0xCC40)
479 opcode = cs = 0xCC41;
480 else
481 opcode = cs = 0xCC40;
482
483 /* set the args ( 2 bytes ) for display */
484 i = 0;
485 par->metromem_cmd->args[i] = 1 << 3 /* border update */
486 | ((borderval++ % 4) & 0x0F) << 4
487 | (par->frame_count - 1) << 8;
488 cs += par->metromem_cmd->args[i++];
489
490 /* the rest are 0 */
491 memset((u8 *) (par->metromem_cmd->args + i), 0, (32-i)*2);
492
493 par->metromem_cmd->csum = cs;
494 par->metromem_cmd->opcode = opcode; /* display cmd */
495
496 i = wait_event_interruptible_timeout(par->waitq, (GPLR1 & 0x01), HZ);
497 return i;
498}
499
500static int __devinit metronome_powerup_cmd(struct metronomefb_par *par)
501{
502 int i;
503 u16 cs;
504
505 /* setup power up command */
506 par->metromem_cmd->opcode = 0x1234; /* pwr up pseudo cmd */
507 cs = par->metromem_cmd->opcode;
508
509 /* set pwr1,2,3 to 1024 */
510 for (i = 0; i < 3; i++) {
511 par->metromem_cmd->args[i] = 1024;
512 cs += par->metromem_cmd->args[i];
513 }
514
515 /* the rest are 0 */
516 memset((u8 *) (par->metromem_cmd->args + i), 0, (32-i)*2);
517
518 par->metromem_cmd->csum = cs;
519
520 msleep(1);
521 metronome_set_gpio_output(RST_GPIO_PIN, 1);
522
523 msleep(1);
524 metronome_set_gpio_output(STDBY_GPIO_PIN, 1);
525
526 i = wait_event_timeout(par->waitq, (GPLR1 & 0x01), HZ);
527 return i;
528}
529
530static int __devinit metronome_config_cmd(struct metronomefb_par *par)
531{
532 int i;
533 u16 cs;
534
535 /* setup config command
536 we can't immediately set the opcode since the controller
537 will try parse the command before we've set it all up
538 so we just set cs here and set the opcode at the end */
539
540 cs = 0xCC10;
541
542 /* set the 12 args ( 8 bytes ) for config. see spec for meanings */
543 i = 0;
544 par->metromem_cmd->args[i] = 15 /* sdlew */
545 | 2 << 8 /* sdosz */
546 | 0 << 11 /* sdor */
547 | 0 << 12 /* sdces */
548 | 0 << 15; /* sdcer */
549 cs += par->metromem_cmd->args[i++];
550
551 par->metromem_cmd->args[i] = 42 /* gdspl */
552 | 1 << 8 /* gdr1 */
553 | 1 << 9 /* sdshr */
554 | 0 << 15; /* gdspp */
555 cs += par->metromem_cmd->args[i++];
556
557 par->metromem_cmd->args[i] = 18 /* gdspw */
558 | 0 << 15; /* dispc */
559 cs += par->metromem_cmd->args[i++];
560
561 par->metromem_cmd->args[i] = 599 /* vdlc */
562 | 0 << 11 /* dsi */
563 | 0 << 12; /* dsic */
564 cs += par->metromem_cmd->args[i++];
565
566 /* the rest are 0 */
567 memset((u8 *) (par->metromem_cmd->args + i), 0, (32-i)*2);
568
569 par->metromem_cmd->csum = cs;
570 par->metromem_cmd->opcode = 0xCC10; /* config cmd */
571
572 i = wait_event_timeout(par->waitq, (GPLR1 & 0x01), HZ);
573 return i;
574}
575
576static int __devinit metronome_init_cmd(struct metronomefb_par *par)
577{
578 int i;
579 u16 cs;
580
581 /* setup init command
582 we can't immediately set the opcode since the controller
583 will try parse the command before we've set it all up
584 so we just set cs here and set the opcode at the end */
585
586 cs = 0xCC20;
587
588 /* set the args ( 2 bytes ) for init */
589 i = 0;
590 par->metromem_cmd->args[i] = 0;
591 cs += par->metromem_cmd->args[i++];
592
593 /* the rest are 0 */
594 memset((u8 *) (par->metromem_cmd->args + i), 0, (32-i)*2);
595
596 par->metromem_cmd->csum = cs;
597 par->metromem_cmd->opcode = 0xCC20; /* init cmd */
598
599 i = wait_event_timeout(par->waitq, (GPLR1 & 0x01), HZ);
600 return i;
601}
602
603static int __devinit metronome_init_regs(struct metronomefb_par *par)
604{
605 int res;
606
607 metronome_init_gpio_regs();
608 metronome_init_lcdc_regs(par);
609
610 res = metronome_powerup_cmd(par);
611 if (res)
612 return res;
613
614 res = metronome_config_cmd(par);
615 if (res)
616 return res;
617
618 res = metronome_init_cmd(par);
619 if (res)
620 return res;
621
622 return res;
623}
624
625static void metronomefb_dpy_update(struct metronomefb_par *par)
626{
627 u16 cksum;
628 unsigned char *buf = (unsigned char __force *)par->info->screen_base;
629
630 /* copy from vm to metromem */
631 memcpy(par->metromem_img, buf, DPY_W*DPY_H);
632
633 cksum = calc_img_cksum((u16 *) par->metromem_img,
634 (epd_frame_table[0].fw * DPY_H)/2);
635 *((u16 *) (par->metromem_img) +
636 (epd_frame_table[0].fw * DPY_H)/2) = cksum;
637 metronome_display_cmd(par);
638}
639
640static u16 metronomefb_dpy_update_page(struct metronomefb_par *par, int index)
641{
642 int i;
643 u16 csum = 0;
644 u16 *buf = (u16 __force *) (par->info->screen_base + index);
645 u16 *img = (u16 *) (par->metromem_img + index);
646
647 /* swizzle from vm to metromem and recalc cksum at the same time*/
648 for (i = 0; i < PAGE_SIZE/2; i++) {
649 *(img + i) = (buf[i] << 5) & 0xE0E0;
650 csum += *(img + i);
651 }
652 return csum;
653}
654
655/* this is called back from the deferred io workqueue */
656static void metronomefb_dpy_deferred_io(struct fb_info *info,
657 struct list_head *pagelist)
658{
659 u16 cksum;
660 struct page *cur;
661 struct fb_deferred_io *fbdefio = info->fbdefio;
662 struct metronomefb_par *par = info->par;
663
664 /* walk the written page list and swizzle the data */
665 list_for_each_entry(cur, &fbdefio->pagelist, lru) {
666 cksum = metronomefb_dpy_update_page(par,
667 (cur->index << PAGE_SHIFT));
668 par->metromem_img_csum -= par->csum_table[cur->index];
669 par->csum_table[cur->index] = cksum;
670 par->metromem_img_csum += cksum;
671 }
672
673 metronome_display_cmd(par);
674}
675
676static void metronomefb_fillrect(struct fb_info *info,
677 const struct fb_fillrect *rect)
678{
679 struct metronomefb_par *par = info->par;
680
681 cfb_fillrect(info, rect);
682 metronomefb_dpy_update(par);
683}
684
685static void metronomefb_copyarea(struct fb_info *info,
686 const struct fb_copyarea *area)
687{
688 struct metronomefb_par *par = info->par;
689
690 cfb_copyarea(info, area);
691 metronomefb_dpy_update(par);
692}
693
694static void metronomefb_imageblit(struct fb_info *info,
695 const struct fb_image *image)
696{
697 struct metronomefb_par *par = info->par;
698
699 cfb_imageblit(info, image);
700 metronomefb_dpy_update(par);
701}
702
703/*
704 * this is the slow path from userspace. they can seek and write to
705 * the fb. it is based on fb_sys_write
706 */
707static ssize_t metronomefb_write(struct fb_info *info, const char __user *buf,
708 size_t count, loff_t *ppos)
709{
710 struct metronomefb_par *par = info->par;
711 unsigned long p = *ppos;
712 void *dst;
713 int err = 0;
714 unsigned long total_size;
715
716 if (info->state != FBINFO_STATE_RUNNING)
717 return -EPERM;
718
719 total_size = info->fix.smem_len;
720
721 if (p > total_size)
722 return -EFBIG;
723
724 if (count > total_size) {
725 err = -EFBIG;
726 count = total_size;
727 }
728
729 if (count + p > total_size) {
730 if (!err)
731 err = -ENOSPC;
732
733 count = total_size - p;
734 }
735
736 dst = (void __force *) (info->screen_base + p);
737
738 if (copy_from_user(dst, buf, count))
739 err = -EFAULT;
740
741 if (!err)
742 *ppos += count;
743
744 metronomefb_dpy_update(par);
745
746 return (err) ? err : count;
747}
748
749static struct fb_ops metronomefb_ops = {
750 .owner = THIS_MODULE,
751 .fb_write = metronomefb_write,
752 .fb_fillrect = metronomefb_fillrect,
753 .fb_copyarea = metronomefb_copyarea,
754 .fb_imageblit = metronomefb_imageblit,
755};
756
757static struct fb_deferred_io metronomefb_defio = {
758 .delay = HZ,
759 .deferred_io = metronomefb_dpy_deferred_io,
760};
761
762static irqreturn_t metronome_handle_irq(int irq, void *dev_id)
763{
764 struct fb_info *info = dev_id;
765 struct metronomefb_par *par = info->par;
766
767 wake_up_interruptible(&par->waitq);
768 return IRQ_HANDLED;
769}
770
771static int __devinit metronomefb_probe(struct platform_device *dev)
772{
773 struct fb_info *info;
774 int retval = -ENOMEM;
775 int videomemorysize;
776 unsigned char *videomemory;
777 struct metronomefb_par *par;
778 const struct firmware *fw_entry;
779 int cmd_size, wfm_size, img_size, padding_size, totalsize;
780 int i;
781
782 /* we have two blocks of memory.
783 info->screen_base which is vm, and is the fb used by apps.
784 par->metromem which is physically contiguous memory and
785 contains the display controller commands, waveform,
786 processed image data and padding. this is the data pulled
787 by the pxa255's LCD controller and pushed to Metronome */
788
789 videomemorysize = (DPY_W*DPY_H);
790 videomemory = vmalloc(videomemorysize);
791 if (!videomemory)
792 return retval;
793
794 memset(videomemory, 0, videomemorysize);
795
796 info = framebuffer_alloc(sizeof(struct metronomefb_par), &dev->dev);
797 if (!info)
798 goto err_vfree;
799
800 info->screen_base = (char __iomem *) videomemory;
801 info->fbops = &metronomefb_ops;
802
803 info->var = metronomefb_var;
804 info->fix = metronomefb_fix;
805 info->fix.smem_len = videomemorysize;
806 par = info->par;
807 par->info = info;
808 init_waitqueue_head(&par->waitq);
809
810 /* this table caches per page csum values. */
811 par->csum_table = vmalloc(videomemorysize/PAGE_SIZE);
812 if (!par->csum_table)
813 goto err_csum_table;
814
815 /* the metromem buffer is divided as follows:
816 command | CRC | padding
817 16kb waveform data | CRC | padding
818 image data | CRC
819 and an extra 256 bytes for dma descriptors
820 eg: IW=832 IH=622 WS=128
821 */
822
823 cmd_size = 1 * epd_frame_table[0].fw;
824 wfm_size = ((16*1024 + 2 + epd_frame_table[0].fw - 1)
825 / epd_frame_table[0].fw) * epd_frame_table[0].fw;
826 img_size = epd_frame_table[0].fh * epd_frame_table[0].fw;
827 padding_size = 4 * epd_frame_table[0].fw;
828 totalsize = cmd_size + wfm_size + img_size + padding_size;
829 par->metromemsize = PAGE_ALIGN(totalsize + 256);
830 DPRINTK("desired memory size = %d\n", par->metromemsize);
831 dev->dev.coherent_dma_mask = 0xffffffffull;
832 par->metromem = dma_alloc_writecombine(&dev->dev, par->metromemsize,
833 &par->metromem_dma, GFP_KERNEL);
834 if (!par->metromem) {
835 printk(KERN_ERR
836 "metronomefb: unable to allocate dma buffer\n");
837 goto err_vfree;
838 }
839
840 info->fix.smem_start = par->metromem_dma;
841 par->metromem_cmd = (struct metromem_cmd *) par->metromem;
842 par->metromem_wfm = par->metromem + cmd_size;
843 par->metromem_img = par->metromem + cmd_size + wfm_size;
844 par->metromem_img_csum = (u16 *) (par->metromem_img +
845 (epd_frame_table[0].fw * DPY_H));
846 DPRINTK("img offset=0x%x\n", cmd_size + wfm_size);
847 par->metromem_desc = (struct metromem_desc *) (par->metromem + cmd_size
848 + wfm_size + img_size + padding_size);
849 par->metromem_desc_dma = par->metromem_dma + cmd_size + wfm_size
850 + img_size + padding_size;
851
852 /* load the waveform in. assume mode 3, temp 31 for now */
853 /* a) request the waveform file from userspace
854 b) process waveform and decode into metromem */
855
856 retval = request_firmware(&fw_entry, "waveform.wbf", &dev->dev);
857 if (retval < 0) {
858 printk(KERN_ERR "metronomefb: couldn't get waveform\n");
859 goto err_dma_free;
860 }
861
862 retval = load_waveform((u8 *) fw_entry->data, fw_entry->size,
863 par->metromem_wfm, 3, 31, &par->frame_count);
864 if (retval < 0) {
865 printk(KERN_ERR "metronomefb: couldn't process waveform\n");
866 goto err_ld_wfm;
867 }
868 release_firmware(fw_entry);
869
870 retval = request_irq(IRQ_GPIO(RDY_GPIO_PIN), metronome_handle_irq,
871 IRQF_DISABLED, "Metronome", info);
872 if (retval) {
873 dev_err(&dev->dev, "request_irq failed: %d\n", retval);
874 goto err_ld_wfm;
875 }
876 set_irq_type(IRQ_GPIO(RDY_GPIO_PIN), IRQT_FALLING);
877
878 retval = metronome_init_regs(par);
879 if (retval < 0)
880 goto err_free_irq;
881
882 info->flags = FBINFO_FLAG_DEFAULT;
883
884 info->fbdefio = &metronomefb_defio;
885 fb_deferred_io_init(info);
886
887 retval = fb_alloc_cmap(&info->cmap, 8, 0);
888 if (retval < 0) {
889 printk(KERN_ERR "Failed to allocate colormap\n");
890 goto err_fb_rel;
891 }
892
893 /* set cmap */
894 for (i = 0; i < 8; i++)
895 info->cmap.red[i] = (((2*i)+1)*(0xFFFF))/16;
896 memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*8);
897 memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*8);
898
899 retval = register_framebuffer(info);
900 if (retval < 0)
901 goto err_cmap;
902
903 platform_set_drvdata(dev, info);
904
905 printk(KERN_INFO
906 "fb%d: Metronome frame buffer device, using %dK of video"
907 " memory\n", info->node, videomemorysize >> 10);
908
909 return 0;
910
911err_cmap:
912 fb_dealloc_cmap(&info->cmap);
913err_fb_rel:
914 framebuffer_release(info);
915err_free_irq:
916 free_irq(IRQ_GPIO(RDY_GPIO_PIN), info);
917err_ld_wfm:
918 release_firmware(fw_entry);
919err_dma_free:
920 dma_free_writecombine(&dev->dev, par->metromemsize, par->metromem,
921 par->metromem_dma);
922err_csum_table:
923 vfree(par->csum_table);
924err_vfree:
925 vfree(videomemory);
926 return retval;
927}
928
929static int __devexit metronomefb_remove(struct platform_device *dev)
930{
931 struct fb_info *info = platform_get_drvdata(dev);
932
933 if (info) {
934 struct metronomefb_par *par = info->par;
935 fb_deferred_io_cleanup(info);
936 dma_free_writecombine(&dev->dev, par->metromemsize,
937 par->metromem, par->metromem_dma);
938 fb_dealloc_cmap(&info->cmap);
939 vfree(par->csum_table);
940 unregister_framebuffer(info);
941 vfree((void __force *)info->screen_base);
942 free_irq(IRQ_GPIO(RDY_GPIO_PIN), info);
943 framebuffer_release(info);
944 }
945 return 0;
946}
947
948static struct platform_driver metronomefb_driver = {
949 .probe = metronomefb_probe,
950 .remove = metronomefb_remove,
951 .driver = {
952 .name = "metronomefb",
953 },
954};
955
956static struct platform_device *metronomefb_device;
957
958static int __init metronomefb_init(void)
959{
960 int ret;
961
962 if (!metronomefb_enable) {
963 printk(KERN_ERR
964 "Use metronomefb_enable to enable the device\n");
965 return -ENXIO;
966 }
967
968 ret = platform_driver_register(&metronomefb_driver);
969 if (!ret) {
970 metronomefb_device = platform_device_alloc("metronomefb", 0);
971 if (metronomefb_device)
972 ret = platform_device_add(metronomefb_device);
973 else
974 ret = -ENOMEM;
975
976 if (ret) {
977 platform_device_put(metronomefb_device);
978 platform_driver_unregister(&metronomefb_driver);
979 }
980 }
981 return ret;
982
983}
984
985static void __exit metronomefb_exit(void)
986{
987 platform_device_unregister(metronomefb_device);
988 platform_driver_unregister(&metronomefb_driver);
989}
990
991module_param(metronomefb_enable, uint, 0);
992MODULE_PARM_DESC(metronomefb_enable, "Enable communication with Metronome");
993
994module_init(metronomefb_init);
995module_exit(metronomefb_exit);
996
997MODULE_DESCRIPTION("fbdev driver for Metronome controller");
998MODULE_AUTHOR("Jaya Kumar");
999MODULE_LICENSE("GPL");
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index c8a4332d1132..0b3efc31ee6d 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -152,7 +152,7 @@ static void virtballoon_changed(struct virtio_device *vdev)
152 wake_up(&vb->config_change); 152 wake_up(&vb->config_change);
153} 153}
154 154
155static inline int towards_target(struct virtio_balloon *vb) 155static inline s64 towards_target(struct virtio_balloon *vb)
156{ 156{
157 u32 v; 157 u32 v;
158 __virtio_config_val(vb->vdev, 158 __virtio_config_val(vb->vdev,
@@ -176,7 +176,7 @@ static int balloon(void *_vballoon)
176 176
177 set_freezable(); 177 set_freezable();
178 while (!kthread_should_stop()) { 178 while (!kthread_should_stop()) {
179 int diff; 179 s64 diff;
180 180
181 try_to_freeze(); 181 try_to_freeze();
182 wait_event_interruptible(vb->config_change, 182 wait_event_interruptible(vb->config_change,
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index 26f787ddd5ff..59a8f73dec73 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -177,6 +177,7 @@ static irqreturn_t vp_interrupt(int irq, void *opaque)
177 struct virtio_pci_device *vp_dev = opaque; 177 struct virtio_pci_device *vp_dev = opaque;
178 struct virtio_pci_vq_info *info; 178 struct virtio_pci_vq_info *info;
179 irqreturn_t ret = IRQ_NONE; 179 irqreturn_t ret = IRQ_NONE;
180 unsigned long flags;
180 u8 isr; 181 u8 isr;
181 182
182 /* reading the ISR has the effect of also clearing it so it's very 183 /* reading the ISR has the effect of also clearing it so it's very
@@ -197,12 +198,12 @@ static irqreturn_t vp_interrupt(int irq, void *opaque)
197 drv->config_changed(&vp_dev->vdev); 198 drv->config_changed(&vp_dev->vdev);
198 } 199 }
199 200
200 spin_lock(&vp_dev->lock); 201 spin_lock_irqsave(&vp_dev->lock, flags);
201 list_for_each_entry(info, &vp_dev->virtqueues, node) { 202 list_for_each_entry(info, &vp_dev->virtqueues, node) {
202 if (vring_interrupt(irq, info->vq) == IRQ_HANDLED) 203 if (vring_interrupt(irq, info->vq) == IRQ_HANDLED)
203 ret = IRQ_HANDLED; 204 ret = IRQ_HANDLED;
204 } 205 }
205 spin_unlock(&vp_dev->lock); 206 spin_unlock_irqrestore(&vp_dev->lock, flags);
206 207
207 return ret; 208 return ret;
208} 209}
@@ -214,6 +215,7 @@ static struct virtqueue *vp_find_vq(struct virtio_device *vdev, unsigned index,
214 struct virtio_pci_device *vp_dev = to_vp_device(vdev); 215 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
215 struct virtio_pci_vq_info *info; 216 struct virtio_pci_vq_info *info;
216 struct virtqueue *vq; 217 struct virtqueue *vq;
218 unsigned long flags;
217 u16 num; 219 u16 num;
218 int err; 220 int err;
219 221
@@ -255,9 +257,9 @@ static struct virtqueue *vp_find_vq(struct virtio_device *vdev, unsigned index,
255 vq->priv = info; 257 vq->priv = info;
256 info->vq = vq; 258 info->vq = vq;
257 259
258 spin_lock(&vp_dev->lock); 260 spin_lock_irqsave(&vp_dev->lock, flags);
259 list_add(&info->node, &vp_dev->virtqueues); 261 list_add(&info->node, &vp_dev->virtqueues);
260 spin_unlock(&vp_dev->lock); 262 spin_unlock_irqrestore(&vp_dev->lock, flags);
261 263
262 return vq; 264 return vq;
263 265
@@ -274,10 +276,11 @@ static void vp_del_vq(struct virtqueue *vq)
274{ 276{
275 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); 277 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev);
276 struct virtio_pci_vq_info *info = vq->priv; 278 struct virtio_pci_vq_info *info = vq->priv;
279 unsigned long flags;
277 280
278 spin_lock(&vp_dev->lock); 281 spin_lock_irqsave(&vp_dev->lock, flags);
279 list_del(&info->node); 282 list_del(&info->node);
280 spin_unlock(&vp_dev->lock); 283 spin_unlock_irqrestore(&vp_dev->lock, flags);
281 284
282 vring_del_virtqueue(vq); 285 vring_del_virtqueue(vq);
283 286
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 3a28c1382131..aa714028641e 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -232,7 +232,6 @@ static bool vring_enable_cb(struct virtqueue *_vq)
232 vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT; 232 vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT;
233 mb(); 233 mb();
234 if (unlikely(more_used(vq))) { 234 if (unlikely(more_used(vq))) {
235 vq->vring.avail->flags |= VRING_AVAIL_F_NO_INTERRUPT;
236 END_USE(vq); 235 END_USE(vq);
237 return false; 236 return false;
238 } 237 }
diff --git a/fs/aio.c b/fs/aio.c
index b74c567383bc..6af921940622 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -996,6 +996,14 @@ put_rq:
996 /* everything turned out well, dispose of the aiocb. */ 996 /* everything turned out well, dispose of the aiocb. */
997 ret = __aio_put_req(ctx, iocb); 997 ret = __aio_put_req(ctx, iocb);
998 998
999 /*
1000 * We have to order our ring_info tail store above and test
1001 * of the wait list below outside the wait lock. This is
1002 * like in wake_up_bit() where clearing a bit has to be
1003 * ordered with the unlocked test.
1004 */
1005 smp_mb();
1006
999 if (waitqueue_active(&ctx->wait)) 1007 if (waitqueue_active(&ctx->wait))
1000 wake_up(&ctx->wait); 1008 wake_up(&ctx->wait);
1001 1009
diff --git a/fs/bio.c b/fs/bio.c
index 3312fcc3c098..553b5b7960ad 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -1194,6 +1194,8 @@ EXPORT_SYMBOL(bio_hw_segments);
1194EXPORT_SYMBOL(bio_add_page); 1194EXPORT_SYMBOL(bio_add_page);
1195EXPORT_SYMBOL(bio_add_pc_page); 1195EXPORT_SYMBOL(bio_add_pc_page);
1196EXPORT_SYMBOL(bio_get_nr_vecs); 1196EXPORT_SYMBOL(bio_get_nr_vecs);
1197EXPORT_SYMBOL(bio_map_user);
1198EXPORT_SYMBOL(bio_unmap_user);
1197EXPORT_SYMBOL(bio_map_kern); 1199EXPORT_SYMBOL(bio_map_kern);
1198EXPORT_SYMBOL(bio_pair_release); 1200EXPORT_SYMBOL(bio_pair_release);
1199EXPORT_SYMBOL(bio_split); 1201EXPORT_SYMBOL(bio_split);
diff --git a/fs/buffer.c b/fs/buffer.c
index ddfdd2c80bf9..7ba58386beee 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -3213,7 +3213,7 @@ static int buffer_cpu_notify(struct notifier_block *self,
3213} 3213}
3214 3214
3215/** 3215/**
3216 * bh_uptodate_or_lock: Test whether the buffer is uptodate 3216 * bh_uptodate_or_lock - Test whether the buffer is uptodate
3217 * @bh: struct buffer_head 3217 * @bh: struct buffer_head
3218 * 3218 *
3219 * Return true if the buffer is up-to-date and false, 3219 * Return true if the buffer is up-to-date and false,
@@ -3232,7 +3232,7 @@ int bh_uptodate_or_lock(struct buffer_head *bh)
3232EXPORT_SYMBOL(bh_uptodate_or_lock); 3232EXPORT_SYMBOL(bh_uptodate_or_lock);
3233 3233
3234/** 3234/**
3235 * bh_submit_read: Submit a locked buffer for reading 3235 * bh_submit_read - Submit a locked buffer for reading
3236 * @bh: struct buffer_head 3236 * @bh: struct buffer_head
3237 * 3237 *
3238 * Returns zero on success and -EIO on error. 3238 * Returns zero on success and -EIO on error.
diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c
index 7f8838253410..a1a95b027136 100644
--- a/fs/cifs/cifs_dfs_ref.c
+++ b/fs/cifs/cifs_dfs_ref.c
@@ -74,7 +74,7 @@ static char *cifs_get_share_name(const char *node_name)
74 pSep = memchr(UNC+2, '\\', len-2); 74 pSep = memchr(UNC+2, '\\', len-2);
75 if (!pSep) { 75 if (!pSep) {
76 cERROR(1, ("%s: no server name end in node name: %s", 76 cERROR(1, ("%s: no server name end in node name: %s",
77 __FUNCTION__, node_name)); 77 __func__, node_name));
78 kfree(UNC); 78 kfree(UNC);
79 return NULL; 79 return NULL;
80 } 80 }
@@ -84,7 +84,7 @@ static char *cifs_get_share_name(const char *node_name)
84 pSep = memchr(UNC+(pSep-UNC), '\\', len-(pSep-UNC)); 84 pSep = memchr(UNC+(pSep-UNC), '\\', len-(pSep-UNC));
85 if (!pSep) { 85 if (!pSep) {
86 cERROR(1, ("%s:2 cant find share name in node name: %s", 86 cERROR(1, ("%s:2 cant find share name in node name: %s",
87 __FUNCTION__, node_name)); 87 __func__, node_name));
88 kfree(UNC); 88 kfree(UNC);
89 return NULL; 89 return NULL;
90 } 90 }
@@ -127,7 +127,7 @@ static char *compose_mount_options(const char *sb_mountdata,
127 rc = dns_resolve_server_name_to_ip(*devname, &srvIP); 127 rc = dns_resolve_server_name_to_ip(*devname, &srvIP);
128 if (rc != 0) { 128 if (rc != 0) {
129 cERROR(1, ("%s: Failed to resolve server part of %s to IP", 129 cERROR(1, ("%s: Failed to resolve server part of %s to IP",
130 __FUNCTION__, *devname)); 130 __func__, *devname));
131 mountdata = ERR_PTR(rc); 131 mountdata = ERR_PTR(rc);
132 goto compose_mount_options_out; 132 goto compose_mount_options_out;
133 } 133 }
@@ -181,8 +181,8 @@ static char *compose_mount_options(const char *sb_mountdata,
181 } 181 }
182 } 182 }
183 183
184 /*cFYI(1,("%s: parent mountdata: %s", __FUNCTION__,sb_mountdata));*/ 184 /*cFYI(1,("%s: parent mountdata: %s", __func__,sb_mountdata));*/
185 /*cFYI(1, ("%s: submount mountdata: %s", __FUNCTION__, mountdata ));*/ 185 /*cFYI(1, ("%s: submount mountdata: %s", __func__, mountdata ));*/
186 186
187compose_mount_options_out: 187compose_mount_options_out:
188 kfree(srvIP); 188 kfree(srvIP);
@@ -302,7 +302,7 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd)
302 int rc = 0; 302 int rc = 0;
303 struct vfsmount *mnt = ERR_PTR(-ENOENT); 303 struct vfsmount *mnt = ERR_PTR(-ENOENT);
304 304
305 cFYI(1, ("in %s", __FUNCTION__)); 305 cFYI(1, ("in %s", __func__));
306 BUG_ON(IS_ROOT(dentry)); 306 BUG_ON(IS_ROOT(dentry));
307 307
308 xid = GetXid(); 308 xid = GetXid();
@@ -336,7 +336,7 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd)
336 len = strlen(referrals[i].node_name); 336 len = strlen(referrals[i].node_name);
337 if (len < 2) { 337 if (len < 2) {
338 cERROR(1, ("%s: Net Address path too short: %s", 338 cERROR(1, ("%s: Net Address path too short: %s",
339 __FUNCTION__, referrals[i].node_name)); 339 __func__, referrals[i].node_name));
340 rc = -EINVAL; 340 rc = -EINVAL;
341 goto out_err; 341 goto out_err;
342 } 342 }
@@ -344,7 +344,7 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd)
344 nd->path.dentry, 344 nd->path.dentry,
345 referrals[i].node_name); 345 referrals[i].node_name);
346 cFYI(1, ("%s: cifs_dfs_do_refmount:%s , mnt:%p", 346 cFYI(1, ("%s: cifs_dfs_do_refmount:%s , mnt:%p",
347 __FUNCTION__, 347 __func__,
348 referrals[i].node_name, mnt)); 348 referrals[i].node_name, mnt));
349 349
350 /* complete mount procedure if we accured submount */ 350 /* complete mount procedure if we accured submount */
@@ -365,7 +365,7 @@ out:
365 FreeXid(xid); 365 FreeXid(xid);
366 free_dfs_info_array(referrals, num_referrals); 366 free_dfs_info_array(referrals, num_referrals);
367 kfree(full_path); 367 kfree(full_path);
368 cFYI(1, ("leaving %s" , __FUNCTION__)); 368 cFYI(1, ("leaving %s" , __func__));
369 return ERR_PTR(rc); 369 return ERR_PTR(rc);
370out_err: 370out_err:
371 path_put(&nd->path); 371 path_put(&nd->path);
diff --git a/fs/cifs/cifsacl.c b/fs/cifs/cifsacl.c
index f93932c21772..1f5a4289b848 100644
--- a/fs/cifs/cifsacl.c
+++ b/fs/cifs/cifsacl.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * fs/cifs/cifsacl.c 2 * fs/cifs/cifsacl.c
3 * 3 *
4 * Copyright (C) International Business Machines Corp., 2007 4 * Copyright (C) International Business Machines Corp., 2007,2008
5 * Author(s): Steve French (sfrench@us.ibm.com) 5 * Author(s): Steve French (sfrench@us.ibm.com)
6 * 6 *
7 * Contains the routines for mapping CIFS/NTFS ACLs 7 * Contains the routines for mapping CIFS/NTFS ACLs
@@ -556,9 +556,9 @@ static int build_sec_desc(struct cifs_ntsd *pntsd, struct cifs_ntsd *pnntsd,
556 556
557/* Retrieve an ACL from the server */ 557/* Retrieve an ACL from the server */
558static struct cifs_ntsd *get_cifs_acl(u32 *pacllen, struct inode *inode, 558static struct cifs_ntsd *get_cifs_acl(u32 *pacllen, struct inode *inode,
559 const char *path) 559 const char *path, const __u16 *pfid)
560{ 560{
561 struct cifsFileInfo *open_file; 561 struct cifsFileInfo *open_file = NULL;
562 int unlock_file = FALSE; 562 int unlock_file = FALSE;
563 int xid; 563 int xid;
564 int rc = -EIO; 564 int rc = -EIO;
@@ -573,7 +573,11 @@ static struct cifs_ntsd *get_cifs_acl(u32 *pacllen, struct inode *inode,
573 return NULL; 573 return NULL;
574 574
575 xid = GetXid(); 575 xid = GetXid();
576 open_file = find_readable_file(CIFS_I(inode)); 576 if (pfid == NULL)
577 open_file = find_readable_file(CIFS_I(inode));
578 else
579 fid = *pfid;
580
577 sb = inode->i_sb; 581 sb = inode->i_sb;
578 if (sb == NULL) { 582 if (sb == NULL) {
579 FreeXid(xid); 583 FreeXid(xid);
@@ -584,7 +588,7 @@ static struct cifs_ntsd *get_cifs_acl(u32 *pacllen, struct inode *inode,
584 if (open_file) { 588 if (open_file) {
585 unlock_file = TRUE; 589 unlock_file = TRUE;
586 fid = open_file->netfid; 590 fid = open_file->netfid;
587 } else { 591 } else if (pfid == NULL) {
588 int oplock = FALSE; 592 int oplock = FALSE;
589 /* open file */ 593 /* open file */
590 rc = CIFSSMBOpen(xid, cifs_sb->tcon, path, FILE_OPEN, 594 rc = CIFSSMBOpen(xid, cifs_sb->tcon, path, FILE_OPEN,
@@ -600,10 +604,11 @@ static struct cifs_ntsd *get_cifs_acl(u32 *pacllen, struct inode *inode,
600 604
601 rc = CIFSSMBGetCIFSACL(xid, cifs_sb->tcon, fid, &pntsd, pacllen); 605 rc = CIFSSMBGetCIFSACL(xid, cifs_sb->tcon, fid, &pntsd, pacllen);
602 cFYI(1, ("GetCIFSACL rc = %d ACL len %d", rc, *pacllen)); 606 cFYI(1, ("GetCIFSACL rc = %d ACL len %d", rc, *pacllen));
603 if (unlock_file == TRUE) 607 if (unlock_file == TRUE) /* find_readable_file increments ref count */
604 atomic_dec(&open_file->wrtPending); 608 atomic_dec(&open_file->wrtPending);
605 else 609 else if (pfid == NULL) /* if opened above we have to close the handle */
606 CIFSSMBClose(xid, cifs_sb->tcon, fid); 610 CIFSSMBClose(xid, cifs_sb->tcon, fid);
611 /* else handle was passed in by caller */
607 612
608 FreeXid(xid); 613 FreeXid(xid);
609 return pntsd; 614 return pntsd;
@@ -664,14 +669,14 @@ static int set_cifs_acl(struct cifs_ntsd *pnntsd, __u32 acllen,
664} 669}
665 670
666/* Translate the CIFS ACL (simlar to NTFS ACL) for a file into mode bits */ 671/* Translate the CIFS ACL (simlar to NTFS ACL) for a file into mode bits */
667void acl_to_uid_mode(struct inode *inode, const char *path) 672void acl_to_uid_mode(struct inode *inode, const char *path, const __u16 *pfid)
668{ 673{
669 struct cifs_ntsd *pntsd = NULL; 674 struct cifs_ntsd *pntsd = NULL;
670 u32 acllen = 0; 675 u32 acllen = 0;
671 int rc = 0; 676 int rc = 0;
672 677
673 cFYI(DBG2, ("converting ACL to mode for %s", path)); 678 cFYI(DBG2, ("converting ACL to mode for %s", path));
674 pntsd = get_cifs_acl(&acllen, inode, path); 679 pntsd = get_cifs_acl(&acllen, inode, path, pfid);
675 680
676 /* if we can retrieve the ACL, now parse Access Control Entries, ACEs */ 681 /* if we can retrieve the ACL, now parse Access Control Entries, ACEs */
677 if (pntsd) 682 if (pntsd)
@@ -694,7 +699,7 @@ int mode_to_acl(struct inode *inode, const char *path, __u64 nmode)
694 cFYI(DBG2, ("set ACL from mode for %s", path)); 699 cFYI(DBG2, ("set ACL from mode for %s", path));
695 700
696 /* Get the security descriptor */ 701 /* Get the security descriptor */
697 pntsd = get_cifs_acl(&acllen, inode, path); 702 pntsd = get_cifs_acl(&acllen, inode, path, NULL);
698 703
699 /* Add three ACEs for owner, group, everyone getting rid of 704 /* Add three ACEs for owner, group, everyone getting rid of
700 other ACEs as chmod disables ACEs and set the security descriptor */ 705 other ACEs as chmod disables ACEs and set the security descriptor */
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
index 0af63e6b426b..7e5e0e78cd72 100644
--- a/fs/cifs/cifsproto.h
+++ b/fs/cifs/cifsproto.h
@@ -39,8 +39,8 @@ extern int smb_send(struct socket *, struct smb_hdr *,
39 unsigned int /* length */ , struct sockaddr *); 39 unsigned int /* length */ , struct sockaddr *);
40extern unsigned int _GetXid(void); 40extern unsigned int _GetXid(void);
41extern void _FreeXid(unsigned int); 41extern void _FreeXid(unsigned int);
42#define GetXid() (int)_GetXid(); cFYI(1,("CIFS VFS: in %s as Xid: %d with uid: %d",__FUNCTION__, xid,current->fsuid)); 42#define GetXid() (int)_GetXid(); cFYI(1,("CIFS VFS: in %s as Xid: %d with uid: %d",__func__, xid,current->fsuid));
43#define FreeXid(curr_xid) {_FreeXid(curr_xid); cFYI(1,("CIFS VFS: leaving %s (xid = %d) rc = %d",__FUNCTION__,curr_xid,(int)rc));} 43#define FreeXid(curr_xid) {_FreeXid(curr_xid); cFYI(1,("CIFS VFS: leaving %s (xid = %d) rc = %d",__func__,curr_xid,(int)rc));}
44extern char *build_path_from_dentry(struct dentry *); 44extern char *build_path_from_dentry(struct dentry *);
45extern char *build_wildcard_path_from_dentry(struct dentry *direntry); 45extern char *build_wildcard_path_from_dentry(struct dentry *direntry);
46/* extern void renew_parental_timestamps(struct dentry *direntry);*/ 46/* extern void renew_parental_timestamps(struct dentry *direntry);*/
@@ -92,11 +92,12 @@ extern struct timespec cnvrtDosUnixTm(__u16 date, __u16 time);
92extern int cifs_get_inode_info(struct inode **pinode, 92extern int cifs_get_inode_info(struct inode **pinode,
93 const unsigned char *search_path, 93 const unsigned char *search_path,
94 FILE_ALL_INFO * pfile_info, 94 FILE_ALL_INFO * pfile_info,
95 struct super_block *sb, int xid); 95 struct super_block *sb, int xid, const __u16 *pfid);
96extern int cifs_get_inode_info_unix(struct inode **pinode, 96extern int cifs_get_inode_info_unix(struct inode **pinode,
97 const unsigned char *search_path, 97 const unsigned char *search_path,
98 struct super_block *sb, int xid); 98 struct super_block *sb, int xid);
99extern void acl_to_uid_mode(struct inode *inode, const char *search_path); 99extern void acl_to_uid_mode(struct inode *inode, const char *path,
100 const __u16 *pfid);
100extern int mode_to_acl(struct inode *inode, const char *path, __u64); 101extern int mode_to_acl(struct inode *inode, const char *path, __u64);
101 102
102extern int cifs_mount(struct super_block *, struct cifs_sb_info *, char *, 103extern int cifs_mount(struct super_block *, struct cifs_sb_info *, char *,
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
index 4e83b47c4b34..0f5c62ba4038 100644
--- a/fs/cifs/dir.c
+++ b/fs/cifs/dir.c
@@ -229,7 +229,8 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
229 inode->i_sb, xid); 229 inode->i_sb, xid);
230 else { 230 else {
231 rc = cifs_get_inode_info(&newinode, full_path, 231 rc = cifs_get_inode_info(&newinode, full_path,
232 buf, inode->i_sb, xid); 232 buf, inode->i_sb, xid,
233 &fileHandle);
233 if (newinode) { 234 if (newinode) {
234 newinode->i_mode = mode; 235 newinode->i_mode = mode;
235 if ((oplock & CIFS_CREATE_ACTION) && 236 if ((oplock & CIFS_CREATE_ACTION) &&
@@ -483,7 +484,7 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
483 parent_dir_inode->i_sb, xid); 484 parent_dir_inode->i_sb, xid);
484 else 485 else
485 rc = cifs_get_inode_info(&newInode, full_path, NULL, 486 rc = cifs_get_inode_info(&newInode, full_path, NULL,
486 parent_dir_inode->i_sb, xid); 487 parent_dir_inode->i_sb, xid, NULL);
487 488
488 if ((rc == 0) && (newInode != NULL)) { 489 if ((rc == 0) && (newInode != NULL)) {
489 if (pTcon->nocase) 490 if (pTcon->nocase)
diff --git a/fs/cifs/dns_resolve.c b/fs/cifs/dns_resolve.c
index ef7f43824347..7cc86c418182 100644
--- a/fs/cifs/dns_resolve.c
+++ b/fs/cifs/dns_resolve.c
@@ -77,14 +77,14 @@ dns_resolve_server_name_to_ip(const char *unc, char **ip_addr)
77 /* search for server name delimiter */ 77 /* search for server name delimiter */
78 len = strlen(unc); 78 len = strlen(unc);
79 if (len < 3) { 79 if (len < 3) {
80 cFYI(1, ("%s: unc is too short: %s", __FUNCTION__, unc)); 80 cFYI(1, ("%s: unc is too short: %s", __func__, unc));
81 return -EINVAL; 81 return -EINVAL;
82 } 82 }
83 len -= 2; 83 len -= 2;
84 name = memchr(unc+2, '\\', len); 84 name = memchr(unc+2, '\\', len);
85 if (!name) { 85 if (!name) {
86 cFYI(1, ("%s: probably server name is whole unc: %s", 86 cFYI(1, ("%s: probably server name is whole unc: %s",
87 __FUNCTION__, unc)); 87 __func__, unc));
88 } else { 88 } else {
89 len = (name - unc) - 2/* leading // */; 89 len = (name - unc) - 2/* leading // */;
90 } 90 }
@@ -104,7 +104,7 @@ dns_resolve_server_name_to_ip(const char *unc, char **ip_addr)
104 if (*ip_addr) { 104 if (*ip_addr) {
105 memcpy(*ip_addr, rkey->payload.data, len); 105 memcpy(*ip_addr, rkey->payload.data, len);
106 (*ip_addr)[len] = '\0'; 106 (*ip_addr)[len] = '\0';
107 cFYI(1, ("%s: resolved: %s to %s", __FUNCTION__, 107 cFYI(1, ("%s: resolved: %s to %s", __func__,
108 rkey->description, 108 rkey->description,
109 *ip_addr 109 *ip_addr
110 )); 110 ));
@@ -114,7 +114,7 @@ dns_resolve_server_name_to_ip(const char *unc, char **ip_addr)
114 } 114 }
115 key_put(rkey); 115 key_put(rkey);
116 } else { 116 } else {
117 cERROR(1, ("%s: unable to resolve: %s", __FUNCTION__, name)); 117 cERROR(1, ("%s: unable to resolve: %s", __func__, name));
118 } 118 }
119 119
120 kfree(name); 120 kfree(name);
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index fa849c91d323..40b690073fc1 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -145,7 +145,7 @@ client_can_cache:
145 full_path, inode->i_sb, xid); 145 full_path, inode->i_sb, xid);
146 else 146 else
147 rc = cifs_get_inode_info(&file->f_path.dentry->d_inode, 147 rc = cifs_get_inode_info(&file->f_path.dentry->d_inode,
148 full_path, buf, inode->i_sb, xid); 148 full_path, buf, inode->i_sb, xid, NULL);
149 149
150 if ((*oplock & 0xF) == OPLOCK_EXCLUSIVE) { 150 if ((*oplock & 0xF) == OPLOCK_EXCLUSIVE) {
151 pCifsInode->clientCanCacheAll = TRUE; 151 pCifsInode->clientCanCacheAll = TRUE;
@@ -440,7 +440,7 @@ reopen_error_exit:
440 else 440 else
441 rc = cifs_get_inode_info(&inode, 441 rc = cifs_get_inode_info(&inode,
442 full_path, NULL, inode->i_sb, 442 full_path, NULL, inode->i_sb,
443 xid); 443 xid, NULL);
444 } /* else we are writing out data to server already 444 } /* else we are writing out data to server already
445 and could deadlock if we tried to flush data, and 445 and could deadlock if we tried to flush data, and
446 since we do not know if we have data that would 446 since we do not know if we have data that would
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 24eb4d392155..bc673c8c1e6b 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -30,7 +30,7 @@
30#include "cifs_fs_sb.h" 30#include "cifs_fs_sb.h"
31 31
32 32
33static void cifs_set_ops(struct inode *inode) 33static void cifs_set_ops(struct inode *inode, const bool is_dfs_referral)
34{ 34{
35 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); 35 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
36 36
@@ -57,8 +57,16 @@ static void cifs_set_ops(struct inode *inode)
57 inode->i_data.a_ops = &cifs_addr_ops; 57 inode->i_data.a_ops = &cifs_addr_ops;
58 break; 58 break;
59 case S_IFDIR: 59 case S_IFDIR:
60 inode->i_op = &cifs_dir_inode_ops; 60#ifdef CONFIG_CIFS_DFS_UPCALL
61 inode->i_fop = &cifs_dir_ops; 61 if (is_dfs_referral) {
62 inode->i_op = &cifs_dfs_referral_inode_operations;
63 } else {
64#else /* NO DFS support, treat as a directory */
65 {
66#endif
67 inode->i_op = &cifs_dir_inode_ops;
68 inode->i_fop = &cifs_dir_ops;
69 }
62 break; 70 break;
63 case S_IFLNK: 71 case S_IFLNK:
64 inode->i_op = &cifs_symlink_inode_ops; 72 inode->i_op = &cifs_symlink_inode_ops;
@@ -153,6 +161,30 @@ static void cifs_unix_info_to_inode(struct inode *inode,
153 spin_unlock(&inode->i_lock); 161 spin_unlock(&inode->i_lock);
154} 162}
155 163
164static const unsigned char *cifs_get_search_path(struct cifsTconInfo *pTcon,
165 const char *search_path)
166{
167 int tree_len;
168 int path_len;
169 char *tmp_path;
170
171 if (!(pTcon->Flags & SMB_SHARE_IS_IN_DFS))
172 return search_path;
173
174 /* use full path name for working with DFS */
175 tree_len = strnlen(pTcon->treeName, MAX_TREE_SIZE + 1);
176 path_len = strnlen(search_path, MAX_PATHCONF);
177
178 tmp_path = kmalloc(tree_len+path_len+1, GFP_KERNEL);
179 if (tmp_path == NULL)
180 return search_path;
181
182 strncpy(tmp_path, pTcon->treeName, tree_len);
183 strncpy(tmp_path+tree_len, search_path, path_len);
184 tmp_path[tree_len+path_len] = 0;
185 return tmp_path;
186}
187
156int cifs_get_inode_info_unix(struct inode **pinode, 188int cifs_get_inode_info_unix(struct inode **pinode,
157 const unsigned char *search_path, struct super_block *sb, int xid) 189 const unsigned char *search_path, struct super_block *sb, int xid)
158{ 190{
@@ -161,41 +193,31 @@ int cifs_get_inode_info_unix(struct inode **pinode,
161 struct cifsTconInfo *pTcon; 193 struct cifsTconInfo *pTcon;
162 struct inode *inode; 194 struct inode *inode;
163 struct cifs_sb_info *cifs_sb = CIFS_SB(sb); 195 struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
164 char *tmp_path; 196 const unsigned char *full_path;
197 bool is_dfs_referral = false;
165 198
166 pTcon = cifs_sb->tcon; 199 pTcon = cifs_sb->tcon;
167 cFYI(1, ("Getting info on %s", search_path)); 200 cFYI(1, ("Getting info on %s", search_path));
201
202 full_path = cifs_get_search_path(pTcon, search_path);
203
204try_again_CIFSSMBUnixQPathInfo:
168 /* could have done a find first instead but this returns more info */ 205 /* could have done a find first instead but this returns more info */
169 rc = CIFSSMBUnixQPathInfo(xid, pTcon, search_path, &findData, 206 rc = CIFSSMBUnixQPathInfo(xid, pTcon, full_path, &findData,
170 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags & 207 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
171 CIFS_MOUNT_MAP_SPECIAL_CHR); 208 CIFS_MOUNT_MAP_SPECIAL_CHR);
172/* dump_mem("\nUnixQPathInfo return data", &findData, 209/* dump_mem("\nUnixQPathInfo return data", &findData,
173 sizeof(findData)); */ 210 sizeof(findData)); */
174 if (rc) { 211 if (rc) {
175 if (rc == -EREMOTE) { 212 if (rc == -EREMOTE && !is_dfs_referral) {
176 tmp_path = 213 is_dfs_referral = true;
177 kmalloc(strnlen(pTcon->treeName, 214 if (full_path != search_path) {
178 MAX_TREE_SIZE + 1) + 215 kfree(full_path);
179 strnlen(search_path, MAX_PATHCONF) + 1, 216 full_path = search_path;
180 GFP_KERNEL); 217 }
181 if (tmp_path == NULL) 218 goto try_again_CIFSSMBUnixQPathInfo;
182 return -ENOMEM;
183
184 /* have to skip first of the double backslash of
185 UNC name */
186 strncpy(tmp_path, pTcon->treeName, MAX_TREE_SIZE);
187 strncat(tmp_path, search_path, MAX_PATHCONF);
188 rc = connect_to_dfs_path(xid, pTcon->ses,
189 /* treename + */ tmp_path,
190 cifs_sb->local_nls,
191 cifs_sb->mnt_cifs_flags &
192 CIFS_MOUNT_MAP_SPECIAL_CHR);
193 kfree(tmp_path);
194
195 /* BB fix up inode etc. */
196 } else if (rc) {
197 return rc;
198 } 219 }
220 goto cgiiu_exit;
199 } else { 221 } else {
200 struct cifsInodeInfo *cifsInfo; 222 struct cifsInodeInfo *cifsInfo;
201 __u64 num_of_bytes = le64_to_cpu(findData.NumOfBytes); 223 __u64 num_of_bytes = le64_to_cpu(findData.NumOfBytes);
@@ -204,8 +226,10 @@ int cifs_get_inode_info_unix(struct inode **pinode,
204 /* get new inode */ 226 /* get new inode */
205 if (*pinode == NULL) { 227 if (*pinode == NULL) {
206 *pinode = new_inode(sb); 228 *pinode = new_inode(sb);
207 if (*pinode == NULL) 229 if (*pinode == NULL) {
208 return -ENOMEM; 230 rc = -ENOMEM;
231 goto cgiiu_exit;
232 }
209 /* Is an i_ino of zero legal? */ 233 /* Is an i_ino of zero legal? */
210 /* Are there sanity checks we can use to ensure that 234 /* Are there sanity checks we can use to ensure that
211 the server is really filling in that field? */ 235 the server is really filling in that field? */
@@ -237,8 +261,11 @@ int cifs_get_inode_info_unix(struct inode **pinode,
237 (unsigned long) inode->i_size, 261 (unsigned long) inode->i_size,
238 (unsigned long long)inode->i_blocks)); 262 (unsigned long long)inode->i_blocks));
239 263
240 cifs_set_ops(inode); 264 cifs_set_ops(inode, is_dfs_referral);
241 } 265 }
266cgiiu_exit:
267 if (full_path != search_path)
268 kfree(full_path);
242 return rc; 269 return rc;
243} 270}
244 271
@@ -347,15 +374,16 @@ static int get_sfu_mode(struct inode *inode,
347 374
348int cifs_get_inode_info(struct inode **pinode, 375int cifs_get_inode_info(struct inode **pinode,
349 const unsigned char *search_path, FILE_ALL_INFO *pfindData, 376 const unsigned char *search_path, FILE_ALL_INFO *pfindData,
350 struct super_block *sb, int xid) 377 struct super_block *sb, int xid, const __u16 *pfid)
351{ 378{
352 int rc = 0; 379 int rc = 0;
353 struct cifsTconInfo *pTcon; 380 struct cifsTconInfo *pTcon;
354 struct inode *inode; 381 struct inode *inode;
355 struct cifs_sb_info *cifs_sb = CIFS_SB(sb); 382 struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
356 char *tmp_path; 383 const unsigned char *full_path = NULL;
357 char *buf = NULL; 384 char *buf = NULL;
358 int adjustTZ = FALSE; 385 int adjustTZ = FALSE;
386 bool is_dfs_referral = false;
359 387
360 pTcon = cifs_sb->tcon; 388 pTcon = cifs_sb->tcon;
361 cFYI(1, ("Getting info on %s", search_path)); 389 cFYI(1, ("Getting info on %s", search_path));
@@ -373,8 +401,12 @@ int cifs_get_inode_info(struct inode **pinode,
373 if (buf == NULL) 401 if (buf == NULL)
374 return -ENOMEM; 402 return -ENOMEM;
375 pfindData = (FILE_ALL_INFO *)buf; 403 pfindData = (FILE_ALL_INFO *)buf;
404
405 full_path = cifs_get_search_path(pTcon, search_path);
406
407try_again_CIFSSMBQPathInfo:
376 /* could do find first instead but this returns more info */ 408 /* could do find first instead but this returns more info */
377 rc = CIFSSMBQPathInfo(xid, pTcon, search_path, pfindData, 409 rc = CIFSSMBQPathInfo(xid, pTcon, full_path, pfindData,
378 0 /* not legacy */, 410 0 /* not legacy */,
379 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags & 411 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
380 CIFS_MOUNT_MAP_SPECIAL_CHR); 412 CIFS_MOUNT_MAP_SPECIAL_CHR);
@@ -382,7 +414,7 @@ int cifs_get_inode_info(struct inode **pinode,
382 when server claims no NT SMB support and the above call 414 when server claims no NT SMB support and the above call
383 failed at least once - set flag in tcon or mount */ 415 failed at least once - set flag in tcon or mount */
384 if ((rc == -EOPNOTSUPP) || (rc == -EINVAL)) { 416 if ((rc == -EOPNOTSUPP) || (rc == -EINVAL)) {
385 rc = SMBQueryInformation(xid, pTcon, search_path, 417 rc = SMBQueryInformation(xid, pTcon, full_path,
386 pfindData, cifs_sb->local_nls, 418 pfindData, cifs_sb->local_nls,
387 cifs_sb->mnt_cifs_flags & 419 cifs_sb->mnt_cifs_flags &
388 CIFS_MOUNT_MAP_SPECIAL_CHR); 420 CIFS_MOUNT_MAP_SPECIAL_CHR);
@@ -391,31 +423,15 @@ int cifs_get_inode_info(struct inode **pinode,
391 } 423 }
392 /* dump_mem("\nQPathInfo return data",&findData, sizeof(findData)); */ 424 /* dump_mem("\nQPathInfo return data",&findData, sizeof(findData)); */
393 if (rc) { 425 if (rc) {
394 if (rc == -EREMOTE) { 426 if (rc == -EREMOTE && !is_dfs_referral) {
395 tmp_path = 427 is_dfs_referral = true;
396 kmalloc(strnlen 428 if (full_path != search_path) {
397 (pTcon->treeName, 429 kfree(full_path);
398 MAX_TREE_SIZE + 1) + 430 full_path = search_path;
399 strnlen(search_path, MAX_PATHCONF) + 1,
400 GFP_KERNEL);
401 if (tmp_path == NULL) {
402 kfree(buf);
403 return -ENOMEM;
404 } 431 }
405 432 goto try_again_CIFSSMBQPathInfo;
406 strncpy(tmp_path, pTcon->treeName, MAX_TREE_SIZE);
407 strncat(tmp_path, search_path, MAX_PATHCONF);
408 rc = connect_to_dfs_path(xid, pTcon->ses,
409 /* treename + */ tmp_path,
410 cifs_sb->local_nls,
411 cifs_sb->mnt_cifs_flags &
412 CIFS_MOUNT_MAP_SPECIAL_CHR);
413 kfree(tmp_path);
414 /* BB fix up inode etc. */
415 } else if (rc) {
416 kfree(buf);
417 return rc;
418 } 433 }
434 goto cgii_exit;
419 } else { 435 } else {
420 struct cifsInodeInfo *cifsInfo; 436 struct cifsInodeInfo *cifsInfo;
421 __u32 attr = le32_to_cpu(pfindData->Attributes); 437 __u32 attr = le32_to_cpu(pfindData->Attributes);
@@ -424,8 +440,8 @@ int cifs_get_inode_info(struct inode **pinode,
424 if (*pinode == NULL) { 440 if (*pinode == NULL) {
425 *pinode = new_inode(sb); 441 *pinode = new_inode(sb);
426 if (*pinode == NULL) { 442 if (*pinode == NULL) {
427 kfree(buf); 443 rc = -ENOMEM;
428 return -ENOMEM; 444 goto cgii_exit;
429 } 445 }
430 /* Is an i_ino of zero legal? Can we use that to check 446 /* Is an i_ino of zero legal? Can we use that to check
431 if the server supports returning inode numbers? Are 447 if the server supports returning inode numbers? Are
@@ -559,7 +575,7 @@ int cifs_get_inode_info(struct inode **pinode,
559 /* fill in 0777 bits from ACL */ 575 /* fill in 0777 bits from ACL */
560 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) { 576 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) {
561 cFYI(1, ("Getting mode bits from ACL")); 577 cFYI(1, ("Getting mode bits from ACL"));
562 acl_to_uid_mode(inode, search_path); 578 acl_to_uid_mode(inode, search_path, pfid);
563 } 579 }
564#endif 580#endif
565 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) { 581 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) {
@@ -573,8 +589,11 @@ int cifs_get_inode_info(struct inode **pinode,
573 atomic_set(&cifsInfo->inUse, 1); 589 atomic_set(&cifsInfo->inUse, 1);
574 } 590 }
575 591
576 cifs_set_ops(inode); 592 cifs_set_ops(inode, is_dfs_referral);
577 } 593 }
594cgii_exit:
595 if (full_path != search_path)
596 kfree(full_path);
578 kfree(buf); 597 kfree(buf);
579 return rc; 598 return rc;
580} 599}
@@ -603,7 +622,8 @@ struct inode *cifs_iget(struct super_block *sb, unsigned long ino)
603 if (cifs_sb->tcon->unix_ext) 622 if (cifs_sb->tcon->unix_ext)
604 rc = cifs_get_inode_info_unix(&inode, "", inode->i_sb, xid); 623 rc = cifs_get_inode_info_unix(&inode, "", inode->i_sb, xid);
605 else 624 else
606 rc = cifs_get_inode_info(&inode, "", NULL, inode->i_sb, xid); 625 rc = cifs_get_inode_info(&inode, "", NULL, inode->i_sb, xid,
626 NULL);
607 if (rc && cifs_sb->tcon->ipc) { 627 if (rc && cifs_sb->tcon->ipc) {
608 cFYI(1, ("ipc connection - fake read inode")); 628 cFYI(1, ("ipc connection - fake read inode"));
609 inode->i_mode |= S_IFDIR; 629 inode->i_mode |= S_IFDIR;
@@ -804,7 +824,7 @@ static void posix_fill_in_inode(struct inode *tmp_inode,
804 local_size = tmp_inode->i_size; 824 local_size = tmp_inode->i_size;
805 825
806 cifs_unix_info_to_inode(tmp_inode, pData, 1); 826 cifs_unix_info_to_inode(tmp_inode, pData, 1);
807 cifs_set_ops(tmp_inode); 827 cifs_set_ops(tmp_inode, false);
808 828
809 if (!S_ISREG(tmp_inode->i_mode)) 829 if (!S_ISREG(tmp_inode->i_mode))
810 return; 830 return;
@@ -936,7 +956,7 @@ mkdir_get_info:
936 inode->i_sb, xid); 956 inode->i_sb, xid);
937 else 957 else
938 rc = cifs_get_inode_info(&newinode, full_path, NULL, 958 rc = cifs_get_inode_info(&newinode, full_path, NULL,
939 inode->i_sb, xid); 959 inode->i_sb, xid, NULL);
940 960
941 if (pTcon->nocase) 961 if (pTcon->nocase)
942 direntry->d_op = &cifs_ci_dentry_ops; 962 direntry->d_op = &cifs_ci_dentry_ops;
@@ -1218,7 +1238,7 @@ int cifs_revalidate(struct dentry *direntry)
1218 } 1238 }
1219 } else { 1239 } else {
1220 rc = cifs_get_inode_info(&direntry->d_inode, full_path, NULL, 1240 rc = cifs_get_inode_info(&direntry->d_inode, full_path, NULL,
1221 direntry->d_sb, xid); 1241 direntry->d_sb, xid, NULL);
1222 if (rc) { 1242 if (rc) {
1223 cFYI(1, ("error on getting revalidate info %d", rc)); 1243 cFYI(1, ("error on getting revalidate info %d", rc));
1224/* if (rc != -ENOENT) 1244/* if (rc != -ENOENT)
@@ -1407,11 +1427,10 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs)
1407 } 1427 }
1408 cifsInode = CIFS_I(direntry->d_inode); 1428 cifsInode = CIFS_I(direntry->d_inode);
1409 1429
1410 /* BB check if we need to refresh inode from server now ? BB */ 1430 if ((attrs->ia_valid & ATTR_MTIME) || (attrs->ia_valid & ATTR_SIZE)) {
1411
1412 if (attrs->ia_valid & ATTR_SIZE) {
1413 /* 1431 /*
1414 Flush data before changing file size on server. If the 1432 Flush data before changing file size or changing the last
1433 write time of the file on the server. If the
1415 flush returns error, store it to report later and continue. 1434 flush returns error, store it to report later and continue.
1416 BB: This should be smarter. Why bother flushing pages that 1435 BB: This should be smarter. Why bother flushing pages that
1417 will be truncated anyway? Also, should we error out here if 1436 will be truncated anyway? Also, should we error out here if
@@ -1422,7 +1441,9 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs)
1422 CIFS_I(direntry->d_inode)->write_behind_rc = rc; 1441 CIFS_I(direntry->d_inode)->write_behind_rc = rc;
1423 rc = 0; 1442 rc = 0;
1424 } 1443 }
1444 }
1425 1445
1446 if (attrs->ia_valid & ATTR_SIZE) {
1426 /* To avoid spurious oplock breaks from server, in the case of 1447 /* To avoid spurious oplock breaks from server, in the case of
1427 inodes that we already have open, avoid doing path based 1448 inodes that we already have open, avoid doing path based
1428 setting of file size if we can do it by handle. 1449 setting of file size if we can do it by handle.
diff --git a/fs/cifs/link.c b/fs/cifs/link.c
index 1d6fb01b8e6d..d4e7ec93285f 100644
--- a/fs/cifs/link.c
+++ b/fs/cifs/link.c
@@ -205,7 +205,7 @@ cifs_symlink(struct inode *inode, struct dentry *direntry, const char *symname)
205 inode->i_sb, xid); 205 inode->i_sb, xid);
206 else 206 else
207 rc = cifs_get_inode_info(&newinode, full_path, NULL, 207 rc = cifs_get_inode_info(&newinode, full_path, NULL,
208 inode->i_sb, xid); 208 inode->i_sb, xid, NULL);
209 209
210 if (rc != 0) { 210 if (rc != 0) {
211 cFYI(1, ("Create symlink ok, getinodeinfo fail rc = %d", 211 cFYI(1, ("Create symlink ok, getinodeinfo fail rc = %d",
diff --git a/fs/dquot.c b/fs/dquot.c
index 9c7feb62eed1..41b9dbd68b0e 100644
--- a/fs/dquot.c
+++ b/fs/dquot.c
@@ -1522,8 +1522,8 @@ int vfs_quota_off(struct super_block *sb, int type)
1522 truncate_inode_pages(&toputinode[cnt]->i_data, 0); 1522 truncate_inode_pages(&toputinode[cnt]->i_data, 0);
1523 mutex_unlock(&toputinode[cnt]->i_mutex); 1523 mutex_unlock(&toputinode[cnt]->i_mutex);
1524 mark_inode_dirty(toputinode[cnt]); 1524 mark_inode_dirty(toputinode[cnt]);
1525 iput(toputinode[cnt]);
1526 } 1525 }
1526 iput(toputinode[cnt]);
1527 mutex_unlock(&dqopt->dqonoff_mutex); 1527 mutex_unlock(&dqopt->dqonoff_mutex);
1528 } 1528 }
1529 if (sb->s_bdev) 1529 if (sb->s_bdev)
diff --git a/fs/ecryptfs/dentry.c b/fs/ecryptfs/dentry.c
index 841a032050a7..5e596583946c 100644
--- a/fs/ecryptfs/dentry.c
+++ b/fs/ecryptfs/dentry.c
@@ -80,8 +80,8 @@ static void ecryptfs_d_release(struct dentry *dentry)
80{ 80{
81 if (ecryptfs_dentry_to_private(dentry)) { 81 if (ecryptfs_dentry_to_private(dentry)) {
82 if (ecryptfs_dentry_to_lower(dentry)) { 82 if (ecryptfs_dentry_to_lower(dentry)) {
83 mntput(ecryptfs_dentry_to_lower_mnt(dentry));
84 dput(ecryptfs_dentry_to_lower(dentry)); 83 dput(ecryptfs_dentry_to_lower(dentry));
84 mntput(ecryptfs_dentry_to_lower_mnt(dentry));
85 } 85 }
86 kmem_cache_free(ecryptfs_dentry_info_cache, 86 kmem_cache_free(ecryptfs_dentry_info_cache,
87 ecryptfs_dentry_to_private(dentry)); 87 ecryptfs_dentry_to_private(dentry));
diff --git a/fs/ext3/acl.c b/fs/ext3/acl.c
index d34e9967430a..a754d1848173 100644
--- a/fs/ext3/acl.c
+++ b/fs/ext3/acl.c
@@ -37,7 +37,7 @@ ext3_acl_from_disk(const void *value, size_t size)
37 return ERR_PTR(-EINVAL); 37 return ERR_PTR(-EINVAL);
38 if (count == 0) 38 if (count == 0)
39 return NULL; 39 return NULL;
40 acl = posix_acl_alloc(count, GFP_KERNEL); 40 acl = posix_acl_alloc(count, GFP_NOFS);
41 if (!acl) 41 if (!acl)
42 return ERR_PTR(-ENOMEM); 42 return ERR_PTR(-ENOMEM);
43 for (n=0; n < count; n++) { 43 for (n=0; n < count; n++) {
@@ -91,7 +91,7 @@ ext3_acl_to_disk(const struct posix_acl *acl, size_t *size)
91 91
92 *size = ext3_acl_size(acl->a_count); 92 *size = ext3_acl_size(acl->a_count);
93 ext_acl = kmalloc(sizeof(ext3_acl_header) + acl->a_count * 93 ext_acl = kmalloc(sizeof(ext3_acl_header) + acl->a_count *
94 sizeof(ext3_acl_entry), GFP_KERNEL); 94 sizeof(ext3_acl_entry), GFP_NOFS);
95 if (!ext_acl) 95 if (!ext_acl)
96 return ERR_PTR(-ENOMEM); 96 return ERR_PTR(-ENOMEM);
97 ext_acl->a_version = cpu_to_le32(EXT3_ACL_VERSION); 97 ext_acl->a_version = cpu_to_le32(EXT3_ACL_VERSION);
@@ -187,7 +187,7 @@ ext3_get_acl(struct inode *inode, int type)
187 } 187 }
188 retval = ext3_xattr_get(inode, name_index, "", NULL, 0); 188 retval = ext3_xattr_get(inode, name_index, "", NULL, 0);
189 if (retval > 0) { 189 if (retval > 0) {
190 value = kmalloc(retval, GFP_KERNEL); 190 value = kmalloc(retval, GFP_NOFS);
191 if (!value) 191 if (!value)
192 return ERR_PTR(-ENOMEM); 192 return ERR_PTR(-ENOMEM);
193 retval = ext3_xattr_get(inode, name_index, "", value, retval); 193 retval = ext3_xattr_get(inode, name_index, "", value, retval);
@@ -335,7 +335,7 @@ ext3_init_acl(handle_t *handle, struct inode *inode, struct inode *dir)
335 if (error) 335 if (error)
336 goto cleanup; 336 goto cleanup;
337 } 337 }
338 clone = posix_acl_clone(acl, GFP_KERNEL); 338 clone = posix_acl_clone(acl, GFP_NOFS);
339 error = -ENOMEM; 339 error = -ENOMEM;
340 if (!clone) 340 if (!clone)
341 goto cleanup; 341 goto cleanup;
diff --git a/fs/ext3/resize.c b/fs/ext3/resize.c
index 9397d779c43d..0e97b6e07cb0 100644
--- a/fs/ext3/resize.c
+++ b/fs/ext3/resize.c
@@ -485,7 +485,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode,
485 goto exit_dindj; 485 goto exit_dindj;
486 486
487 n_group_desc = kmalloc((gdb_num + 1) * sizeof(struct buffer_head *), 487 n_group_desc = kmalloc((gdb_num + 1) * sizeof(struct buffer_head *),
488 GFP_KERNEL); 488 GFP_NOFS);
489 if (!n_group_desc) { 489 if (!n_group_desc) {
490 err = -ENOMEM; 490 err = -ENOMEM;
491 ext3_warning (sb, __FUNCTION__, 491 ext3_warning (sb, __FUNCTION__,
@@ -568,7 +568,7 @@ static int reserve_backup_gdb(handle_t *handle, struct inode *inode,
568 int res, i; 568 int res, i;
569 int err; 569 int err;
570 570
571 primary = kmalloc(reserved_gdb * sizeof(*primary), GFP_KERNEL); 571 primary = kmalloc(reserved_gdb * sizeof(*primary), GFP_NOFS);
572 if (!primary) 572 if (!primary)
573 return -ENOMEM; 573 return -ENOMEM;
574 574
diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c
index fb89c299bece..a6ea4d6a8bb2 100644
--- a/fs/ext3/xattr.c
+++ b/fs/ext3/xattr.c
@@ -728,7 +728,7 @@ ext3_xattr_block_set(handle_t *handle, struct inode *inode,
728 ce = NULL; 728 ce = NULL;
729 } 729 }
730 ea_bdebug(bs->bh, "cloning"); 730 ea_bdebug(bs->bh, "cloning");
731 s->base = kmalloc(bs->bh->b_size, GFP_KERNEL); 731 s->base = kmalloc(bs->bh->b_size, GFP_NOFS);
732 error = -ENOMEM; 732 error = -ENOMEM;
733 if (s->base == NULL) 733 if (s->base == NULL)
734 goto cleanup; 734 goto cleanup;
@@ -740,7 +740,7 @@ ext3_xattr_block_set(handle_t *handle, struct inode *inode,
740 } 740 }
741 } else { 741 } else {
742 /* Allocate a buffer where we construct the new block. */ 742 /* Allocate a buffer where we construct the new block. */
743 s->base = kzalloc(sb->s_blocksize, GFP_KERNEL); 743 s->base = kzalloc(sb->s_blocksize, GFP_NOFS);
744 /* assert(header == s->base) */ 744 /* assert(header == s->base) */
745 error = -ENOMEM; 745 error = -ENOMEM;
746 if (s->base == NULL) 746 if (s->base == NULL)
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index c0076077d338..06557679ca41 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -751,7 +751,7 @@ int generic_osync_inode(struct inode *inode, struct address_space *mapping, int
751EXPORT_SYMBOL(generic_osync_inode); 751EXPORT_SYMBOL(generic_osync_inode);
752 752
753/** 753/**
754 * writeback_acquire: attempt to get exclusive writeback access to a device 754 * writeback_acquire - attempt to get exclusive writeback access to a device
755 * @bdi: the device's backing_dev_info structure 755 * @bdi: the device's backing_dev_info structure
756 * 756 *
757 * It is a waste of resources to have more than one pdflush thread blocked on 757 * It is a waste of resources to have more than one pdflush thread blocked on
@@ -768,7 +768,7 @@ int writeback_acquire(struct backing_dev_info *bdi)
768} 768}
769 769
770/** 770/**
771 * writeback_in_progress: determine whether there is writeback in progress 771 * writeback_in_progress - determine whether there is writeback in progress
772 * @bdi: the device's backing_dev_info structure. 772 * @bdi: the device's backing_dev_info structure.
773 * 773 *
774 * Determine whether there is writeback in progress against a backing device. 774 * Determine whether there is writeback in progress against a backing device.
@@ -779,7 +779,7 @@ int writeback_in_progress(struct backing_dev_info *bdi)
779} 779}
780 780
781/** 781/**
782 * writeback_release: relinquish exclusive writeback access against a device. 782 * writeback_release - relinquish exclusive writeback access against a device.
783 * @bdi: the device's backing_dev_info structure 783 * @bdi: the device's backing_dev_info structure
784 */ 784 */
785void writeback_release(struct backing_dev_info *bdi) 785void writeback_release(struct backing_dev_info *bdi)
diff --git a/fs/hfs/brec.c b/fs/hfs/brec.c
index 878bf25dbc6a..92fb358ce824 100644
--- a/fs/hfs/brec.c
+++ b/fs/hfs/brec.c
@@ -229,7 +229,7 @@ skip:
229static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd) 229static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd)
230{ 230{
231 struct hfs_btree *tree; 231 struct hfs_btree *tree;
232 struct hfs_bnode *node, *new_node; 232 struct hfs_bnode *node, *new_node, *next_node;
233 struct hfs_bnode_desc node_desc; 233 struct hfs_bnode_desc node_desc;
234 int num_recs, new_rec_off, new_off, old_rec_off; 234 int num_recs, new_rec_off, new_off, old_rec_off;
235 int data_start, data_end, size; 235 int data_start, data_end, size;
@@ -248,6 +248,17 @@ static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd)
248 new_node->type = node->type; 248 new_node->type = node->type;
249 new_node->height = node->height; 249 new_node->height = node->height;
250 250
251 if (node->next)
252 next_node = hfs_bnode_find(tree, node->next);
253 else
254 next_node = NULL;
255
256 if (IS_ERR(next_node)) {
257 hfs_bnode_put(node);
258 hfs_bnode_put(new_node);
259 return next_node;
260 }
261
251 size = tree->node_size / 2 - node->num_recs * 2 - 14; 262 size = tree->node_size / 2 - node->num_recs * 2 - 14;
252 old_rec_off = tree->node_size - 4; 263 old_rec_off = tree->node_size - 4;
253 num_recs = 1; 264 num_recs = 1;
@@ -261,6 +272,8 @@ static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd)
261 /* panic? */ 272 /* panic? */
262 hfs_bnode_put(node); 273 hfs_bnode_put(node);
263 hfs_bnode_put(new_node); 274 hfs_bnode_put(new_node);
275 if (next_node)
276 hfs_bnode_put(next_node);
264 return ERR_PTR(-ENOSPC); 277 return ERR_PTR(-ENOSPC);
265 } 278 }
266 279
@@ -315,8 +328,7 @@ static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd)
315 hfs_bnode_write(node, &node_desc, 0, sizeof(node_desc)); 328 hfs_bnode_write(node, &node_desc, 0, sizeof(node_desc));
316 329
317 /* update next bnode header */ 330 /* update next bnode header */
318 if (new_node->next) { 331 if (next_node) {
319 struct hfs_bnode *next_node = hfs_bnode_find(tree, new_node->next);
320 next_node->prev = new_node->this; 332 next_node->prev = new_node->this;
321 hfs_bnode_read(next_node, &node_desc, 0, sizeof(node_desc)); 333 hfs_bnode_read(next_node, &node_desc, 0, sizeof(node_desc));
322 node_desc.prev = cpu_to_be32(next_node->prev); 334 node_desc.prev = cpu_to_be32(next_node->prev);
diff --git a/fs/isofs/compress.c b/fs/isofs/compress.c
index 37dbd6404787..defb932eee9a 100644
--- a/fs/isofs/compress.c
+++ b/fs/isofs/compress.c
@@ -72,6 +72,17 @@ static int zisofs_readpage(struct file *file, struct page *page)
72 offset = index & ~zisofs_block_page_mask; 72 offset = index & ~zisofs_block_page_mask;
73 blockindex = offset >> zisofs_block_page_shift; 73 blockindex = offset >> zisofs_block_page_shift;
74 maxpage = (inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; 74 maxpage = (inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
75
76 /*
77 * If this page is wholly outside i_size we just return zero;
78 * do_generic_file_read() will handle this for us
79 */
80 if (page->index >= maxpage) {
81 SetPageUptodate(page);
82 unlock_page(page);
83 return 0;
84 }
85
75 maxpage = min(zisofs_block_pages, maxpage-offset); 86 maxpage = min(zisofs_block_pages, maxpage-offset);
76 87
77 for ( i = 0 ; i < maxpage ; i++, offset++ ) { 88 for ( i = 0 ; i < maxpage ; i++, offset++ ) {
diff --git a/fs/jbd/journal.c b/fs/jbd/journal.c
index 3943a8905eb2..9816293442ab 100644
--- a/fs/jbd/journal.c
+++ b/fs/jbd/journal.c
@@ -697,13 +697,14 @@ fail:
697 */ 697 */
698 698
699/** 699/**
700 * journal_t * journal_init_dev() - creates an initialises a journal structure 700 * journal_t * journal_init_dev() - creates and initialises a journal structure
701 * @bdev: Block device on which to create the journal 701 * @bdev: Block device on which to create the journal
702 * @fs_dev: Device which hold journalled filesystem for this journal. 702 * @fs_dev: Device which hold journalled filesystem for this journal.
703 * @start: Block nr Start of journal. 703 * @start: Block nr Start of journal.
704 * @len: Length of the journal in blocks. 704 * @len: Length of the journal in blocks.
705 * @blocksize: blocksize of journalling device 705 * @blocksize: blocksize of journalling device
706 * @returns: a newly created journal_t * 706 *
707 * Returns: a newly created journal_t *
707 * 708 *
708 * journal_init_dev creates a journal which maps a fixed contiguous 709 * journal_init_dev creates a journal which maps a fixed contiguous
709 * range of blocks on an arbitrary block device. 710 * range of blocks on an arbitrary block device.
diff --git a/fs/jbd/recovery.c b/fs/jbd/recovery.c
index 2b8edf4d6eaa..43bc5e5ed064 100644
--- a/fs/jbd/recovery.c
+++ b/fs/jbd/recovery.c
@@ -478,7 +478,7 @@ static int do_one_pass(journal_t *journal,
478 memcpy(nbh->b_data, obh->b_data, 478 memcpy(nbh->b_data, obh->b_data,
479 journal->j_blocksize); 479 journal->j_blocksize);
480 if (flags & JFS_FLAG_ESCAPE) { 480 if (flags & JFS_FLAG_ESCAPE) {
481 *((__be32 *)bh->b_data) = 481 *((__be32 *)nbh->b_data) =
482 cpu_to_be32(JFS_MAGIC_NUMBER); 482 cpu_to_be32(JFS_MAGIC_NUMBER);
483 } 483 }
484 484
diff --git a/fs/jbd/transaction.c b/fs/jbd/transaction.c
index c6cbb6cd59b2..2c9e8f5d13aa 100644
--- a/fs/jbd/transaction.c
+++ b/fs/jbd/transaction.c
@@ -1426,7 +1426,8 @@ int journal_stop(handle_t *handle)
1426 return err; 1426 return err;
1427} 1427}
1428 1428
1429/**int journal_force_commit() - force any uncommitted transactions 1429/**
1430 * int journal_force_commit() - force any uncommitted transactions
1430 * @journal: journal to force 1431 * @journal: journal to force
1431 * 1432 *
1432 * For synchronous operations: force any uncommitted transactions 1433 * For synchronous operations: force any uncommitted transactions
@@ -1903,13 +1904,12 @@ zap_buffer_unlocked:
1903} 1904}
1904 1905
1905/** 1906/**
1906 * void journal_invalidatepage() 1907 * void journal_invalidatepage() - invalidate a journal page
1907 * @journal: journal to use for flush... 1908 * @journal: journal to use for flush
1908 * @page: page to flush 1909 * @page: page to flush
1909 * @offset: length of page to invalidate. 1910 * @offset: length of page to invalidate.
1910 * 1911 *
1911 * Reap page buffers containing data after offset in page. 1912 * Reap page buffers containing data after offset in page.
1912 *
1913 */ 1913 */
1914void journal_invalidatepage(journal_t *journal, 1914void journal_invalidatepage(journal_t *journal,
1915 struct page *page, 1915 struct page *page,
diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
index 146411387ada..5d0405a9e7ca 100644
--- a/fs/jbd2/recovery.c
+++ b/fs/jbd2/recovery.c
@@ -535,7 +535,7 @@ static int do_one_pass(journal_t *journal,
535 memcpy(nbh->b_data, obh->b_data, 535 memcpy(nbh->b_data, obh->b_data,
536 journal->j_blocksize); 536 journal->j_blocksize);
537 if (flags & JBD2_FLAG_ESCAPE) { 537 if (flags & JBD2_FLAG_ESCAPE) {
538 *((__be32 *)bh->b_data) = 538 *((__be32 *)nbh->b_data) =
539 cpu_to_be32(JBD2_MAGIC_NUMBER); 539 cpu_to_be32(JBD2_MAGIC_NUMBER);
540 } 540 }
541 541
diff --git a/fs/locks.c b/fs/locks.c
index f36f0e61558d..d83fab1b77b5 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -1275,13 +1275,13 @@ out:
1275EXPORT_SYMBOL(__break_lease); 1275EXPORT_SYMBOL(__break_lease);
1276 1276
1277/** 1277/**
1278 * lease_get_mtime 1278 * lease_get_mtime - get the last modified time of an inode
1279 * @inode: the inode 1279 * @inode: the inode
1280 * @time: pointer to a timespec which will contain the last modified time 1280 * @time: pointer to a timespec which will contain the last modified time
1281 * 1281 *
1282 * This is to force NFS clients to flush their caches for files with 1282 * This is to force NFS clients to flush their caches for files with
1283 * exclusive leases. The justification is that if someone has an 1283 * exclusive leases. The justification is that if someone has an
1284 * exclusive lease, then they could be modifiying it. 1284 * exclusive lease, then they could be modifying it.
1285 */ 1285 */
1286void lease_get_mtime(struct inode *inode, struct timespec *time) 1286void lease_get_mtime(struct inode *inode, struct timespec *time)
1287{ 1287{
diff --git a/fs/namei.c b/fs/namei.c
index 941c8e8228c0..6b7a0eef4090 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1364,13 +1364,13 @@ static int __lookup_one_len(const char *name, struct qstr *this,
1364} 1364}
1365 1365
1366/** 1366/**
1367 * lookup_one_len: filesystem helper to lookup single pathname component 1367 * lookup_one_len - filesystem helper to lookup single pathname component
1368 * @name: pathname component to lookup 1368 * @name: pathname component to lookup
1369 * @base: base directory to lookup from 1369 * @base: base directory to lookup from
1370 * @len: maximum length @len should be interpreted to 1370 * @len: maximum length @len should be interpreted to
1371 * 1371 *
1372 * Note that this routine is purely a helper for filesystem useage and should 1372 * Note that this routine is purely a helper for filesystem usage and should
1373 * not be called by generic code. Also note that by using this function to 1373 * not be called by generic code. Also note that by using this function the
1374 * nameidata argument is passed to the filesystem methods and a filesystem 1374 * nameidata argument is passed to the filesystem methods and a filesystem
1375 * using this helper needs to be prepared for that. 1375 * using this helper needs to be prepared for that.
1376 */ 1376 */
diff --git a/fs/nfs/read.c b/fs/nfs/read.c
index 3d7d9631e125..5a70be589bbe 100644
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -533,7 +533,10 @@ readpage_async_filler(void *data, struct page *page)
533 533
534 if (len < PAGE_CACHE_SIZE) 534 if (len < PAGE_CACHE_SIZE)
535 zero_user_segment(page, len, PAGE_CACHE_SIZE); 535 zero_user_segment(page, len, PAGE_CACHE_SIZE);
536 nfs_pageio_add_request(desc->pgio, new); 536 if (!nfs_pageio_add_request(desc->pgio, new)) {
537 error = desc->pgio->pg_error;
538 goto out_unlock;
539 }
537 return 0; 540 return 0;
538out_error: 541out_error:
539 error = PTR_ERR(new); 542 error = PTR_ERR(new);
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index fcf4b982c885..dd4dfcd632ec 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -632,7 +632,7 @@ static int nfs_verify_server_address(struct sockaddr *addr)
632 switch (addr->sa_family) { 632 switch (addr->sa_family) {
633 case AF_INET: { 633 case AF_INET: {
634 struct sockaddr_in *sa = (struct sockaddr_in *)addr; 634 struct sockaddr_in *sa = (struct sockaddr_in *)addr;
635 return sa->sin_addr.s_addr != INADDR_ANY; 635 return sa->sin_addr.s_addr != htonl(INADDR_ANY);
636 } 636 }
637 case AF_INET6: { 637 case AF_INET6: {
638 struct in6_addr *sa = &((struct sockaddr_in6 *)addr)->sin6_addr; 638 struct in6_addr *sa = &((struct sockaddr_in6 *)addr)->sin6_addr;
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 80c61fdb2720..bed63416a55b 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -39,6 +39,7 @@ static struct nfs_page * nfs_update_request(struct nfs_open_context*,
39 unsigned int, unsigned int); 39 unsigned int, unsigned int);
40static void nfs_pageio_init_write(struct nfs_pageio_descriptor *desc, 40static void nfs_pageio_init_write(struct nfs_pageio_descriptor *desc,
41 struct inode *inode, int ioflags); 41 struct inode *inode, int ioflags);
42static void nfs_redirty_request(struct nfs_page *req);
42static const struct rpc_call_ops nfs_write_partial_ops; 43static const struct rpc_call_ops nfs_write_partial_ops;
43static const struct rpc_call_ops nfs_write_full_ops; 44static const struct rpc_call_ops nfs_write_full_ops;
44static const struct rpc_call_ops nfs_commit_ops; 45static const struct rpc_call_ops nfs_commit_ops;
@@ -288,7 +289,12 @@ static int nfs_page_async_flush(struct nfs_pageio_descriptor *pgio,
288 BUG(); 289 BUG();
289 } 290 }
290 spin_unlock(&inode->i_lock); 291 spin_unlock(&inode->i_lock);
291 nfs_pageio_add_request(pgio, req); 292 if (!nfs_pageio_add_request(pgio, req)) {
293 nfs_redirty_request(req);
294 nfs_end_page_writeback(page);
295 nfs_clear_page_tag_locked(req);
296 return pgio->pg_error;
297 }
292 return 0; 298 return 0;
293} 299}
294 300
diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c
index 1eb771d79cca..3e6b3f41ee1f 100644
--- a/fs/nfsd/nfsfh.c
+++ b/fs/nfsd/nfsfh.c
@@ -232,6 +232,7 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, int access)
232 fhp->fh_dentry = dentry; 232 fhp->fh_dentry = dentry;
233 fhp->fh_export = exp; 233 fhp->fh_export = exp;
234 nfsd_nr_verified++; 234 nfsd_nr_verified++;
235 cache_get(&exp->h);
235 } else { 236 } else {
236 /* 237 /*
237 * just rechecking permissions 238 * just rechecking permissions
@@ -241,6 +242,7 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, int access)
241 dprintk("nfsd: fh_verify - just checking\n"); 242 dprintk("nfsd: fh_verify - just checking\n");
242 dentry = fhp->fh_dentry; 243 dentry = fhp->fh_dentry;
243 exp = fhp->fh_export; 244 exp = fhp->fh_export;
245 cache_get(&exp->h);
244 /* 246 /*
245 * Set user creds for this exportpoint; necessary even 247 * Set user creds for this exportpoint; necessary even
246 * in the "just checking" case because this may be a 248 * in the "just checking" case because this may be a
@@ -252,8 +254,6 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, int access)
252 if (error) 254 if (error)
253 goto out; 255 goto out;
254 } 256 }
255 cache_get(&exp->h);
256
257 257
258 error = nfsd_mode_check(rqstp, dentry->d_inode->i_mode, type); 258 error = nfsd_mode_check(rqstp, dentry->d_inode->i_mode, type);
259 if (error) 259 if (error)
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 9a4da0aae02e..81d7d145292a 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1036,6 +1036,26 @@ static const struct file_operations proc_loginuid_operations = {
1036 .read = proc_loginuid_read, 1036 .read = proc_loginuid_read,
1037 .write = proc_loginuid_write, 1037 .write = proc_loginuid_write,
1038}; 1038};
1039
1040static ssize_t proc_sessionid_read(struct file * file, char __user * buf,
1041 size_t count, loff_t *ppos)
1042{
1043 struct inode * inode = file->f_path.dentry->d_inode;
1044 struct task_struct *task = get_proc_task(inode);
1045 ssize_t length;
1046 char tmpbuf[TMPBUFLEN];
1047
1048 if (!task)
1049 return -ESRCH;
1050 length = scnprintf(tmpbuf, TMPBUFLEN, "%u",
1051 audit_get_sessionid(task));
1052 put_task_struct(task);
1053 return simple_read_from_buffer(buf, count, ppos, tmpbuf, length);
1054}
1055
1056static const struct file_operations proc_sessionid_operations = {
1057 .read = proc_sessionid_read,
1058};
1039#endif 1059#endif
1040 1060
1041#ifdef CONFIG_FAULT_INJECTION 1061#ifdef CONFIG_FAULT_INJECTION
@@ -2270,7 +2290,7 @@ static const struct pid_entry tgid_base_stuff[] = {
2270 DIR("fd", S_IRUSR|S_IXUSR, fd), 2290 DIR("fd", S_IRUSR|S_IXUSR, fd),
2271 DIR("fdinfo", S_IRUSR|S_IXUSR, fdinfo), 2291 DIR("fdinfo", S_IRUSR|S_IXUSR, fdinfo),
2272#ifdef CONFIG_NET 2292#ifdef CONFIG_NET
2273 DIR("net", S_IRUGO|S_IXUSR, net), 2293 DIR("net", S_IRUGO|S_IXUGO, net),
2274#endif 2294#endif
2275 REG("environ", S_IRUSR, environ), 2295 REG("environ", S_IRUSR, environ),
2276 INF("auxv", S_IRUSR, pid_auxv), 2296 INF("auxv", S_IRUSR, pid_auxv),
@@ -2319,6 +2339,7 @@ static const struct pid_entry tgid_base_stuff[] = {
2319 REG("oom_adj", S_IRUGO|S_IWUSR, oom_adjust), 2339 REG("oom_adj", S_IRUGO|S_IWUSR, oom_adjust),
2320#ifdef CONFIG_AUDITSYSCALL 2340#ifdef CONFIG_AUDITSYSCALL
2321 REG("loginuid", S_IWUSR|S_IRUGO, loginuid), 2341 REG("loginuid", S_IWUSR|S_IRUGO, loginuid),
2342 REG("sessionid", S_IRUSR, sessionid),
2322#endif 2343#endif
2323#ifdef CONFIG_FAULT_INJECTION 2344#ifdef CONFIG_FAULT_INJECTION
2324 REG("make-it-fail", S_IRUGO|S_IWUSR, fault_inject), 2345 REG("make-it-fail", S_IRUGO|S_IWUSR, fault_inject),
@@ -2649,6 +2670,7 @@ static const struct pid_entry tid_base_stuff[] = {
2649 REG("oom_adj", S_IRUGO|S_IWUSR, oom_adjust), 2670 REG("oom_adj", S_IRUGO|S_IWUSR, oom_adjust),
2650#ifdef CONFIG_AUDITSYSCALL 2671#ifdef CONFIG_AUDITSYSCALL
2651 REG("loginuid", S_IWUSR|S_IRUGO, loginuid), 2672 REG("loginuid", S_IWUSR|S_IRUGO, loginuid),
2673 REG("sessionid", S_IRUSR, sessionid),
2652#endif 2674#endif
2653#ifdef CONFIG_FAULT_INJECTION 2675#ifdef CONFIG_FAULT_INJECTION
2654 REG("make-it-fail", S_IRUGO|S_IWUSR, fault_inject), 2676 REG("make-it-fail", S_IRUGO|S_IWUSR, fault_inject),
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index 4206454734e0..9dfb5ff24209 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -527,13 +527,21 @@ struct pagemapread {
527 char __user *out, *end; 527 char __user *out, *end;
528}; 528};
529 529
530#define PM_ENTRY_BYTES sizeof(u64) 530#define PM_ENTRY_BYTES sizeof(u64)
531#define PM_RESERVED_BITS 3 531#define PM_STATUS_BITS 3
532#define PM_RESERVED_OFFSET (64 - PM_RESERVED_BITS) 532#define PM_STATUS_OFFSET (64 - PM_STATUS_BITS)
533#define PM_RESERVED_MASK (((1LL<<PM_RESERVED_BITS)-1) << PM_RESERVED_OFFSET) 533#define PM_STATUS_MASK (((1LL << PM_STATUS_BITS) - 1) << PM_STATUS_OFFSET)
534#define PM_SPECIAL(nr) (((nr) << PM_RESERVED_OFFSET) & PM_RESERVED_MASK) 534#define PM_STATUS(nr) (((nr) << PM_STATUS_OFFSET) & PM_STATUS_MASK)
535#define PM_NOT_PRESENT PM_SPECIAL(1LL) 535#define PM_PSHIFT_BITS 6
536#define PM_SWAP PM_SPECIAL(2LL) 536#define PM_PSHIFT_OFFSET (PM_STATUS_OFFSET - PM_PSHIFT_BITS)
537#define PM_PSHIFT_MASK (((1LL << PM_PSHIFT_BITS) - 1) << PM_PSHIFT_OFFSET)
538#define PM_PSHIFT(x) (((u64) (x) << PM_PSHIFT_OFFSET) & PM_PSHIFT_MASK)
539#define PM_PFRAME_MASK ((1LL << PM_PSHIFT_OFFSET) - 1)
540#define PM_PFRAME(x) ((x) & PM_PFRAME_MASK)
541
542#define PM_PRESENT PM_STATUS(4LL)
543#define PM_SWAP PM_STATUS(2LL)
544#define PM_NOT_PRESENT PM_PSHIFT(PAGE_SHIFT)
537#define PM_END_OF_BUFFER 1 545#define PM_END_OF_BUFFER 1
538 546
539static int add_to_pagemap(unsigned long addr, u64 pfn, 547static int add_to_pagemap(unsigned long addr, u64 pfn,
@@ -574,7 +582,7 @@ static int pagemap_pte_hole(unsigned long start, unsigned long end,
574u64 swap_pte_to_pagemap_entry(pte_t pte) 582u64 swap_pte_to_pagemap_entry(pte_t pte)
575{ 583{
576 swp_entry_t e = pte_to_swp_entry(pte); 584 swp_entry_t e = pte_to_swp_entry(pte);
577 return PM_SWAP | swp_type(e) | (swp_offset(e) << MAX_SWAPFILES_SHIFT); 585 return swp_type(e) | (swp_offset(e) << MAX_SWAPFILES_SHIFT);
578} 586}
579 587
580static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end, 588static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
@@ -588,9 +596,11 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
588 u64 pfn = PM_NOT_PRESENT; 596 u64 pfn = PM_NOT_PRESENT;
589 pte = pte_offset_map(pmd, addr); 597 pte = pte_offset_map(pmd, addr);
590 if (is_swap_pte(*pte)) 598 if (is_swap_pte(*pte))
591 pfn = swap_pte_to_pagemap_entry(*pte); 599 pfn = PM_PFRAME(swap_pte_to_pagemap_entry(*pte))
600 | PM_PSHIFT(PAGE_SHIFT) | PM_SWAP;
592 else if (pte_present(*pte)) 601 else if (pte_present(*pte))
593 pfn = pte_pfn(*pte); 602 pfn = PM_PFRAME(pte_pfn(*pte))
603 | PM_PSHIFT(PAGE_SHIFT) | PM_PRESENT;
594 /* unmap so we're not in atomic when we copy to userspace */ 604 /* unmap so we're not in atomic when we copy to userspace */
595 pte_unmap(pte); 605 pte_unmap(pte);
596 err = add_to_pagemap(addr, pfn, pm); 606 err = add_to_pagemap(addr, pfn, pm);
@@ -611,12 +621,20 @@ static struct mm_walk pagemap_walk = {
611/* 621/*
612 * /proc/pid/pagemap - an array mapping virtual pages to pfns 622 * /proc/pid/pagemap - an array mapping virtual pages to pfns
613 * 623 *
614 * For each page in the address space, this file contains one 64-bit 624 * For each page in the address space, this file contains one 64-bit entry
615 * entry representing the corresponding physical page frame number 625 * consisting of the following:
616 * (PFN) if the page is present. If there is a swap entry for the 626 *
617 * physical page, then an encoding of the swap file number and the 627 * Bits 0-55 page frame number (PFN) if present
618 * page's offset into the swap file are returned. If no page is 628 * Bits 0-4 swap type if swapped
619 * present at all, PM_NOT_PRESENT is returned. This allows determining 629 * Bits 5-55 swap offset if swapped
630 * Bits 55-60 page shift (page size = 1<<page shift)
631 * Bit 61 reserved for future use
632 * Bit 62 page swapped
633 * Bit 63 page present
634 *
635 * If the page is not present but in swap, then the PFN contains an
636 * encoding of the swap file number and the page's offset into the
637 * swap. Unmapped pages return a null PFN. This allows determining
620 * precisely which pages are mapped (or in swap) and comparing mapped 638 * precisely which pages are mapped (or in swap) and comparing mapped
621 * pages between processes. 639 * pages between processes.
622 * 640 *
diff --git a/fs/romfs/inode.c b/fs/romfs/inode.c
index 00b6f0a518c8..3f13d491c7c7 100644
--- a/fs/romfs/inode.c
+++ b/fs/romfs/inode.c
@@ -340,8 +340,9 @@ static struct dentry *
340romfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 340romfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
341{ 341{
342 unsigned long offset, maxoff; 342 unsigned long offset, maxoff;
343 int fslen, res; 343 long res;
344 struct inode *inode; 344 int fslen;
345 struct inode *inode = NULL;
345 char fsname[ROMFS_MAXFN]; /* XXX dynamic? */ 346 char fsname[ROMFS_MAXFN]; /* XXX dynamic? */
346 struct romfs_inode ri; 347 struct romfs_inode ri;
347 const char *name; /* got from dentry */ 348 const char *name; /* got from dentry */
@@ -351,7 +352,7 @@ romfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
351 offset = dir->i_ino & ROMFH_MASK; 352 offset = dir->i_ino & ROMFH_MASK;
352 lock_kernel(); 353 lock_kernel();
353 if (romfs_copyfrom(dir, &ri, offset, ROMFH_SIZE) <= 0) 354 if (romfs_copyfrom(dir, &ri, offset, ROMFH_SIZE) <= 0)
354 goto out; 355 goto error;
355 356
356 maxoff = romfs_maxsize(dir->i_sb); 357 maxoff = romfs_maxsize(dir->i_sb);
357 offset = be32_to_cpu(ri.spec) & ROMFH_MASK; 358 offset = be32_to_cpu(ri.spec) & ROMFH_MASK;
@@ -364,9 +365,9 @@ romfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
364 365
365 for(;;) { 366 for(;;) {
366 if (!offset || offset >= maxoff) 367 if (!offset || offset >= maxoff)
367 goto out0; 368 goto success; /* negative success */
368 if (romfs_copyfrom(dir, &ri, offset, ROMFH_SIZE) <= 0) 369 if (romfs_copyfrom(dir, &ri, offset, ROMFH_SIZE) <= 0)
369 goto out; 370 goto error;
370 371
371 /* try to match the first 16 bytes of name */ 372 /* try to match the first 16 bytes of name */
372 fslen = romfs_strnlen(dir, offset+ROMFH_SIZE, ROMFH_SIZE); 373 fslen = romfs_strnlen(dir, offset+ROMFH_SIZE, ROMFH_SIZE);
@@ -397,23 +398,14 @@ romfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
397 inode = romfs_iget(dir->i_sb, offset); 398 inode = romfs_iget(dir->i_sb, offset);
398 if (IS_ERR(inode)) { 399 if (IS_ERR(inode)) {
399 res = PTR_ERR(inode); 400 res = PTR_ERR(inode);
400 goto out; 401 goto error;
401 } 402 }
402 403
403 /* 404success:
404 * it's a bit funky, _lookup needs to return an error code 405 d_add(dentry, inode);
405 * (negative) or a NULL, both as a dentry. ENOENT should not
406 * be returned, instead we need to create a negative dentry by
407 * d_add(dentry, NULL); and return 0 as no error.
408 * (Although as I see, it only matters on writable file
409 * systems).
410 */
411
412out0: inode = NULL;
413 res = 0; 406 res = 0;
414 d_add (dentry, inode); 407error:
415 408 unlock_kernel();
416out: unlock_kernel();
417 return ERR_PTR(res); 409 return ERR_PTR(res);
418} 410}
419 411
diff --git a/fs/super.c b/fs/super.c
index 010446d8c40a..d0a941a4e620 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -556,11 +556,11 @@ out:
556} 556}
557 557
558/** 558/**
559 * mark_files_ro 559 * mark_files_ro - mark all files read-only
560 * @sb: superblock in question 560 * @sb: superblock in question
561 * 561 *
562 * All files are marked read/only. We don't care about pending 562 * All files are marked read-only. We don't care about pending
563 * delete files so this should be used in 'force' mode only 563 * delete files so this should be used in 'force' mode only.
564 */ 564 */
565 565
566static void mark_files_ro(struct super_block *sb) 566static void mark_files_ro(struct super_block *sb)
diff --git a/fs/ufs/balloc.c b/fs/ufs/balloc.c
index 1fca381f0ce2..1e7598fb9787 100644
--- a/fs/ufs/balloc.c
+++ b/fs/ufs/balloc.c
@@ -315,8 +315,8 @@ static void ufs_change_blocknr(struct inode *inode, sector_t beg,
315 } 315 }
316 316
317 UFSD(" change from %llu to %llu, pos %u\n", 317 UFSD(" change from %llu to %llu, pos %u\n",
318 (unsigned long long)pos + oldb, 318 (unsigned long long)(pos + oldb),
319 (unsigned long long)pos + newb, pos); 319 (unsigned long long)(pos + newb), pos);
320 320
321 bh->b_blocknr = newb + pos; 321 bh->b_blocknr = newb + pos;
322 unmap_underlying_metadata(bh->b_bdev, 322 unmap_underlying_metadata(bh->b_bdev,
diff --git a/include/asm-arm/arch-at91/at91cap9.h b/include/asm-arm/arch-at91/at91cap9.h
index 73e1fcf4a0aa..bac83adb5050 100644
--- a/include/asm-arm/arch-at91/at91cap9.h
+++ b/include/asm-arm/arch-at91/at91cap9.h
@@ -97,12 +97,17 @@
97#define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) 97#define AT91_PIOD (0xfffff800 - AT91_BASE_SYS)
98#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) 98#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
99#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) 99#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
100#define AT91_SHDC (0xfffffd10 - AT91_BASE_SYS) 100#define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS)
101#define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) 101#define AT91_RTT (0xfffffd20 - AT91_BASE_SYS)
102#define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) 102#define AT91_PIT (0xfffffd30 - AT91_BASE_SYS)
103#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) 103#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS)
104#define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) 104#define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS)
105 105
106#define AT91_USART0 AT91CAP9_BASE_US0
107#define AT91_USART1 AT91CAP9_BASE_US1
108#define AT91_USART2 AT91CAP9_BASE_US2
109
110
106/* 111/*
107 * Internal Memory. 112 * Internal Memory.
108 */ 113 */
diff --git a/include/asm-arm/arch-omap/dsp_common.h b/include/asm-arm/arch-omap/dsp_common.h
index c61f868f24ee..da97736f3efa 100644
--- a/include/asm-arm/arch-omap/dsp_common.h
+++ b/include/asm-arm/arch-omap/dsp_common.h
@@ -24,11 +24,17 @@
24#ifndef ASM_ARCH_DSP_COMMON_H 24#ifndef ASM_ARCH_DSP_COMMON_H
25#define ASM_ARCH_DSP_COMMON_H 25#define ASM_ARCH_DSP_COMMON_H
26 26
27#ifdef CONFIG_ARCH_OMAP1 27#if defined(CONFIG_ARCH_OMAP1) && defined(CONFIG_OMAP_MMU_FWK)
28extern void omap_dsp_request_mpui(void); 28extern void omap_dsp_request_mpui(void);
29extern void omap_dsp_release_mpui(void); 29extern void omap_dsp_release_mpui(void);
30extern int omap_dsp_request_mem(void); 30extern int omap_dsp_request_mem(void);
31extern int omap_dsp_release_mem(void); 31extern int omap_dsp_release_mem(void);
32#else
33static inline int omap_dsp_request_mem(void)
34{
35 return 0;
36}
37#define omap_dsp_release_mem() do {} while (0)
32#endif 38#endif
33 39
34#endif /* ASM_ARCH_DSP_COMMON_H */ 40#endif /* ASM_ARCH_DSP_COMMON_H */
diff --git a/include/asm-arm/arch-s3c2410/irqs.h b/include/asm-arm/arch-s3c2410/irqs.h
index d858b3eb5547..f5435d8c3769 100644
--- a/include/asm-arm/arch-s3c2410/irqs.h
+++ b/include/asm-arm/arch-s3c2410/irqs.h
@@ -85,7 +85,7 @@
85#define IRQ_EINT23 S3C2410_IRQ(51) 85#define IRQ_EINT23 S3C2410_IRQ(51)
86 86
87 87
88#define IRQ_EINT(x) S3C2410_IRQ((x >= 4) ? (IRQ_EINT4 + (x) - 4) : (S3C2410_IRQ(0) + (x))) 88#define IRQ_EINT(x) (((x) >= 4) ? (IRQ_EINT4 + (x) - 4) : (IRQ_EINT0 + (x)))
89 89
90#define IRQ_LCD_FIFO S3C2410_IRQ(52) 90#define IRQ_LCD_FIFO S3C2410_IRQ(52)
91#define IRQ_LCD_FRAME S3C2410_IRQ(53) 91#define IRQ_LCD_FRAME S3C2410_IRQ(53)
diff --git a/include/asm-parisc/elf.h b/include/asm-parisc/elf.h
index ce0c0d844c7d..d0a4a8262818 100644
--- a/include/asm-parisc/elf.h
+++ b/include/asm-parisc/elf.h
@@ -204,7 +204,7 @@ typedef struct elf64_fdesc {
204/* 204/*
205 * The following definitions are those for 32-bit ELF binaries on a 32-bit 205 * The following definitions are those for 32-bit ELF binaries on a 32-bit
206 * kernel and for 64-bit binaries on a 64-bit kernel. To run 32-bit binaries 206 * kernel and for 64-bit binaries on a 64-bit kernel. To run 32-bit binaries
207 * on a 64-bit kernel, arch/parisc64/kernel/binfmt_elf32.c defines these 207 * on a 64-bit kernel, arch/parisc/kernel/binfmt_elf32.c defines these
208 * macros appropriately and then #includes binfmt_elf.c, which then includes 208 * macros appropriately and then #includes binfmt_elf.c, which then includes
209 * this file. 209 * this file.
210 */ 210 */
@@ -216,26 +216,25 @@ typedef struct elf64_fdesc {
216 * Note that this header file is used by default in fs/binfmt_elf.c. So 216 * Note that this header file is used by default in fs/binfmt_elf.c. So
217 * the following macros are for the default case. However, for the 64 217 * the following macros are for the default case. However, for the 64
218 * bit kernel we also support 32 bit parisc binaries. To do that 218 * bit kernel we also support 32 bit parisc binaries. To do that
219 * arch/parisc64/kernel/binfmt_elf32.c defines its own set of these 219 * arch/parisc/kernel/binfmt_elf32.c defines its own set of these
220 * macros, and then it includes fs/binfmt_elf.c to provide an alternate 220 * macros, and then it includes fs/binfmt_elf.c to provide an alternate
221 * elf binary handler for 32 bit binaries (on the 64 bit kernel). 221 * elf binary handler for 32 bit binaries (on the 64 bit kernel).
222 */ 222 */
223#ifdef CONFIG_64BIT 223#ifdef CONFIG_64BIT
224#define ELF_CLASS ELFCLASS64 224#define ELF_CLASS ELFCLASS64
225#else 225#else
226#define ELF_CLASS ELFCLASS32 226#define ELF_CLASS ELFCLASS32
227#endif 227#endif
228 228
229typedef unsigned long elf_greg_t; 229typedef unsigned long elf_greg_t;
230 230
231/* This yields a string that ld.so will use to load implementation 231/*
232 specific libraries for optimization. This is more specific in 232 * This yields a string that ld.so will use to load implementation
233 intent than poking at uname or /proc/cpuinfo. 233 * specific libraries for optimization. This is more specific in
234 234 * intent than poking at uname or /proc/cpuinfo.
235 For the moment, we have only optimizations for the Intel generations, 235 */
236 but that could change... */
237 236
238#define ELF_PLATFORM ("PARISC\0" /*+((boot_cpu_data.x86-3)*5) */) 237#define ELF_PLATFORM ("PARISC\0")
239 238
240#define SET_PERSONALITY(ex, ibcs2) \ 239#define SET_PERSONALITY(ex, ibcs2) \
241 current->personality = PER_LINUX; \ 240 current->personality = PER_LINUX; \
@@ -310,7 +309,7 @@ struct pt_regs; /* forward declaration... */
310#define ELF_OSABI ELFOSABI_LINUX 309#define ELF_OSABI ELFOSABI_LINUX
311 310
312/* %r23 is set by ld.so to a pointer to a function which might be 311/* %r23 is set by ld.so to a pointer to a function which might be
313 registered using atexit. This provides a mean for the dynamic 312 registered using atexit. This provides a means for the dynamic
314 linker to call DT_FINI functions for shared libraries that have 313 linker to call DT_FINI functions for shared libraries that have
315 been loaded before the code runs. 314 been loaded before the code runs.
316 315
@@ -339,6 +338,5 @@ struct pt_regs; /* forward declaration... */
339 but it's not easy, and we've already done it here. */ 338 but it's not easy, and we've already done it here. */
340 339
341#define ELF_HWCAP 0 340#define ELF_HWCAP 0
342/* (boot_cpu_data.x86_capability) */
343 341
344#endif 342#endif
diff --git a/include/asm-parisc/fixmap.h b/include/asm-parisc/fixmap.h
index a5caf4b122b7..de3fe3a18229 100644
--- a/include/asm-parisc/fixmap.h
+++ b/include/asm-parisc/fixmap.h
@@ -20,4 +20,11 @@
20#define KERNEL_MAP_START (GATEWAY_PAGE_SIZE) 20#define KERNEL_MAP_START (GATEWAY_PAGE_SIZE)
21#define KERNEL_MAP_END (TMPALIAS_MAP_START) 21#define KERNEL_MAP_END (TMPALIAS_MAP_START)
22 22
23#endif 23#ifndef __ASSEMBLY__
24extern void *vmalloc_start;
25#define PCXL_DMA_MAP_SIZE (8*1024*1024)
26#define VMALLOC_START ((unsigned long)vmalloc_start)
27#define VMALLOC_END (KERNEL_MAP_END)
28#endif /*__ASSEMBLY__*/
29
30#endif /*_ASM_FIXMAP_H*/
diff --git a/include/asm-parisc/futex.h b/include/asm-parisc/futex.h
index dbee6e60aa81..fdc6d055ef7f 100644
--- a/include/asm-parisc/futex.h
+++ b/include/asm-parisc/futex.h
@@ -56,6 +56,12 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
56 int err = 0; 56 int err = 0;
57 int uval; 57 int uval;
58 58
59 /* futex.c wants to do a cmpxchg_inatomic on kernel NULL, which is
60 * our gateway page, and causes no end of trouble...
61 */
62 if (segment_eq(KERNEL_DS, get_fs()) && !uaddr)
63 return -EFAULT;
64
59 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) 65 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))
60 return -EFAULT; 66 return -EFAULT;
61 67
@@ -67,5 +73,5 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
67 return uval; 73 return uval;
68} 74}
69 75
70#endif 76#endif /*__KERNEL__*/
71#endif 77#endif /*_ASM_PARISC_FUTEX_H*/
diff --git a/include/asm-parisc/pdc.h b/include/asm-parisc/pdc.h
index deda8c311373..9eaa794c3e4a 100644
--- a/include/asm-parisc/pdc.h
+++ b/include/asm-parisc/pdc.h
@@ -645,8 +645,7 @@ int pdc_soft_power_button(int sw_control);
645void pdc_io_reset(void); 645void pdc_io_reset(void);
646void pdc_io_reset_devices(void); 646void pdc_io_reset_devices(void);
647int pdc_iodc_getc(void); 647int pdc_iodc_getc(void);
648int pdc_iodc_print(unsigned char *str, unsigned count); 648int pdc_iodc_print(const unsigned char *str, unsigned count);
649void pdc_printf(const char *fmt, ...);
650 649
651void pdc_emergency_unlock(void); 650void pdc_emergency_unlock(void);
652int pdc_sti_call(unsigned long func, unsigned long flags, 651int pdc_sti_call(unsigned long func, unsigned long flags,
diff --git a/include/asm-parisc/pgalloc.h b/include/asm-parisc/pgalloc.h
index 3996dfc30a3f..fc987a1c12a8 100644
--- a/include/asm-parisc/pgalloc.h
+++ b/include/asm-parisc/pgalloc.h
@@ -138,10 +138,10 @@ static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
138 free_page((unsigned long)pte); 138 free_page((unsigned long)pte);
139} 139}
140 140
141static inline void pte_free_kernel(struct mm_struct *mm, struct page *pte) 141static inline void pte_free(struct mm_struct *mm, struct page *pte)
142{ 142{
143 pgtable_page_dtor(pte); 143 pgtable_page_dtor(pte);
144 pte_free_kernel(page_address((pte)); 144 pte_free_kernel(mm, page_address(pte));
145} 145}
146 146
147#define check_pgt_cache() do { } while (0) 147#define check_pgt_cache() do { } while (0)
diff --git a/include/asm-parisc/pgtable.h b/include/asm-parisc/pgtable.h
index cd0fa4f73320..dc86adbec916 100644
--- a/include/asm-parisc/pgtable.h
+++ b/include/asm-parisc/pgtable.h
@@ -116,14 +116,6 @@
116 116
117#define FIRST_USER_ADDRESS 0 117#define FIRST_USER_ADDRESS 0
118 118
119#ifndef __ASSEMBLY__
120extern void *vmalloc_start;
121#define PCXL_DMA_MAP_SIZE (8*1024*1024)
122#define VMALLOC_START ((unsigned long)vmalloc_start)
123/* this is a fixmap remnant, see fixmap.h */
124#define VMALLOC_END (KERNEL_MAP_END)
125#endif
126
127/* NB: The tlb miss handlers make certain assumptions about the order */ 119/* NB: The tlb miss handlers make certain assumptions about the order */
128/* of the following bits, so be careful (One example, bits 25-31 */ 120/* of the following bits, so be careful (One example, bits 25-31 */
129/* are moved together in one instruction). */ 121/* are moved together in one instruction). */
diff --git a/include/asm-parisc/unistd.h b/include/asm-parisc/unistd.h
index 081b4ae61866..a7d857f0e4f4 100644
--- a/include/asm-parisc/unistd.h
+++ b/include/asm-parisc/unistd.h
@@ -798,8 +798,11 @@
798#define __NR_timerfd (__NR_Linux + 303) 798#define __NR_timerfd (__NR_Linux + 303)
799#define __NR_eventfd (__NR_Linux + 304) 799#define __NR_eventfd (__NR_Linux + 304)
800#define __NR_fallocate (__NR_Linux + 305) 800#define __NR_fallocate (__NR_Linux + 305)
801#define __NR_timerfd_create (__NR_Linux + 306)
802#define __NR_timerfd_settime (__NR_Linux + 307)
803#define __NR_timerfd_gettime (__NR_Linux + 308)
801 804
802#define __NR_Linux_syscalls (__NR_fallocate + 1) 805#define __NR_Linux_syscalls (__NR_timerfd_gettime + 1)
803 806
804 807
805#define __IGNORE_select /* newselect */ 808#define __IGNORE_select /* newselect */
diff --git a/include/asm-sh/byteorder.h b/include/asm-sh/byteorder.h
index 0eb9904b6545..4c13e6117563 100644
--- a/include/asm-sh/byteorder.h
+++ b/include/asm-sh/byteorder.h
@@ -11,13 +11,13 @@
11static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) 11static inline __attribute_const__ __u32 ___arch__swab32(__u32 x)
12{ 12{
13 __asm__( 13 __asm__(
14#ifdef CONFIG_SUPERH32 14#ifdef __SH5__
15 "byterev %0, %0\n\t"
16 "shari %0, 32, %0"
17#else
15 "swap.b %0, %0\n\t" 18 "swap.b %0, %0\n\t"
16 "swap.w %0, %0\n\t" 19 "swap.w %0, %0\n\t"
17 "swap.b %0, %0" 20 "swap.b %0, %0"
18#else
19 "byterev %0, %0\n\t"
20 "shari %0, 32, %0"
21#endif 21#endif
22 : "=r" (x) 22 : "=r" (x)
23 : "0" (x)); 23 : "0" (x));
@@ -28,12 +28,11 @@ static inline __attribute_const__ __u32 ___arch__swab32(__u32 x)
28static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) 28static inline __attribute_const__ __u16 ___arch__swab16(__u16 x)
29{ 29{
30 __asm__( 30 __asm__(
31#ifdef CONFIG_SUPERH32 31#ifdef __SH5__
32 "swap.b %0, %0"
33#else
34 "byterev %0, %0\n\t" 32 "byterev %0, %0\n\t"
35 "shari %0, 32, %0" 33 "shari %0, 32, %0"
36 34#else
35 "swap.b %0, %0"
37#endif 36#endif
38 : "=r" (x) 37 : "=r" (x)
39 : "0" (x)); 38 : "0" (x));
diff --git a/include/asm-sh/posix_types.h b/include/asm-sh/posix_types.h
index 4b9d11c9fc77..4eeb723aee7e 100644
--- a/include/asm-sh/posix_types.h
+++ b/include/asm-sh/posix_types.h
@@ -4,4 +4,10 @@
4# else 4# else
5# include "posix_types_64.h" 5# include "posix_types_64.h"
6# endif 6# endif
7#else
8# ifdef __SH5__
9# include "posix_types_64.h"
10# else
11# include "posix_types_32.h"
12# endif
7#endif /* __KERNEL__ */ 13#endif /* __KERNEL__ */
diff --git a/include/asm-sparc64/backoff.h b/include/asm-sparc64/backoff.h
index dadd6c385c6c..fa1fdf67e350 100644
--- a/include/asm-sparc64/backoff.h
+++ b/include/asm-sparc64/backoff.h
@@ -12,7 +12,8 @@
12 mov reg, tmp; \ 12 mov reg, tmp; \
1388: brnz,pt tmp, 88b; \ 1388: brnz,pt tmp, 88b; \
14 sub tmp, 1, tmp; \ 14 sub tmp, 1, tmp; \
15 cmp reg, BACKOFF_LIMIT; \ 15 set BACKOFF_LIMIT, tmp; \
16 cmp reg, tmp; \
16 bg,pn %xcc, label; \ 17 bg,pn %xcc, label; \
17 nop; \ 18 nop; \
18 ba,pt %xcc, label; \ 19 ba,pt %xcc, label; \
diff --git a/include/asm-x86/cmpxchg_32.h b/include/asm-x86/cmpxchg_32.h
index cea1dae288a7..959fad00dff5 100644
--- a/include/asm-x86/cmpxchg_32.h
+++ b/include/asm-x86/cmpxchg_32.h
@@ -269,22 +269,26 @@ static inline unsigned long cmpxchg_386(volatile void *ptr, unsigned long old,
269({ \ 269({ \
270 __typeof__(*(ptr)) __ret; \ 270 __typeof__(*(ptr)) __ret; \
271 if (likely(boot_cpu_data.x86 > 3)) \ 271 if (likely(boot_cpu_data.x86 > 3)) \
272 __ret = __cmpxchg((ptr), (unsigned long)(o), \ 272 __ret = (__typeof__(*(ptr)))__cmpxchg((ptr), \
273 (unsigned long)(n), sizeof(*(ptr))); \ 273 (unsigned long)(o), (unsigned long)(n), \
274 sizeof(*(ptr))); \
274 else \ 275 else \
275 __ret = cmpxchg_386((ptr), (unsigned long)(o), \ 276 __ret = (__typeof__(*(ptr)))cmpxchg_386((ptr), \
276 (unsigned long)(n), sizeof(*(ptr))); \ 277 (unsigned long)(o), (unsigned long)(n), \
278 sizeof(*(ptr))); \
277 __ret; \ 279 __ret; \
278}) 280})
279#define cmpxchg_local(ptr, o, n) \ 281#define cmpxchg_local(ptr, o, n) \
280({ \ 282({ \
281 __typeof__(*(ptr)) __ret; \ 283 __typeof__(*(ptr)) __ret; \
282 if (likely(boot_cpu_data.x86 > 3)) \ 284 if (likely(boot_cpu_data.x86 > 3)) \
283 __ret = __cmpxchg_local((ptr), (unsigned long)(o), \ 285 __ret = (__typeof__(*(ptr)))__cmpxchg_local((ptr), \
284 (unsigned long)(n), sizeof(*(ptr))); \ 286 (unsigned long)(o), (unsigned long)(n), \
287 sizeof(*(ptr))); \
285 else \ 288 else \
286 __ret = cmpxchg_386((ptr), (unsigned long)(o), \ 289 __ret = (__typeof__(*(ptr)))cmpxchg_386((ptr), \
287 (unsigned long)(n), sizeof(*(ptr))); \ 290 (unsigned long)(o), (unsigned long)(n), \
291 sizeof(*(ptr))); \
288 __ret; \ 292 __ret; \
289}) 293})
290#endif 294#endif
@@ -301,10 +305,12 @@ extern unsigned long long cmpxchg_486_u64(volatile void *, u64, u64);
301({ \ 305({ \
302 __typeof__(*(ptr)) __ret; \ 306 __typeof__(*(ptr)) __ret; \
303 if (likely(boot_cpu_data.x86 > 4)) \ 307 if (likely(boot_cpu_data.x86 > 4)) \
304 __ret = __cmpxchg64((ptr), (unsigned long long)(o), \ 308 __ret = (__typeof__(*(ptr)))__cmpxchg64((ptr), \
309 (unsigned long long)(o), \
305 (unsigned long long)(n)); \ 310 (unsigned long long)(n)); \
306 else \ 311 else \
307 __ret = cmpxchg_486_u64((ptr), (unsigned long long)(o), \ 312 __ret = (__typeof__(*(ptr)))cmpxchg_486_u64((ptr), \
313 (unsigned long long)(o), \
308 (unsigned long long)(n)); \ 314 (unsigned long long)(n)); \
309 __ret; \ 315 __ret; \
310}) 316})
@@ -312,10 +318,12 @@ extern unsigned long long cmpxchg_486_u64(volatile void *, u64, u64);
312({ \ 318({ \
313 __typeof__(*(ptr)) __ret; \ 319 __typeof__(*(ptr)) __ret; \
314 if (likely(boot_cpu_data.x86 > 4)) \ 320 if (likely(boot_cpu_data.x86 > 4)) \
315 __ret = __cmpxchg64_local((ptr), (unsigned long long)(o), \ 321 __ret = (__typeof__(*(ptr)))__cmpxchg64_local((ptr), \
322 (unsigned long long)(o), \
316 (unsigned long long)(n)); \ 323 (unsigned long long)(n)); \
317 else \ 324 else \
318 __ret = cmpxchg_486_u64((ptr), (unsigned long long)(o), \ 325 __ret = (__typeof__(*(ptr)))cmpxchg_486_u64((ptr), \
326 (unsigned long long)(o), \
319 (unsigned long long)(n)); \ 327 (unsigned long long)(n)); \
320 __ret; \ 328 __ret; \
321}) 329})
diff --git a/include/asm-x86/e820_32.h b/include/asm-x86/e820_32.h
index f1da7ebd1905..e7207a6de3e0 100644
--- a/include/asm-x86/e820_32.h
+++ b/include/asm-x86/e820_32.h
@@ -28,6 +28,8 @@ extern void find_max_pfn(void);
28extern void register_bootmem_low_pages(unsigned long max_low_pfn); 28extern void register_bootmem_low_pages(unsigned long max_low_pfn);
29extern void add_memory_region(unsigned long long start, 29extern void add_memory_region(unsigned long long start,
30 unsigned long long size, int type); 30 unsigned long long size, int type);
31extern void update_memory_range(u64 start, u64 size, unsigned old_type,
32 unsigned new_type);
31extern void e820_register_memory(void); 33extern void e820_register_memory(void);
32extern void limit_regions(unsigned long long size); 34extern void limit_regions(unsigned long long size);
33extern void print_memory_map(char *who); 35extern void print_memory_map(char *who);
diff --git a/include/asm-x86/e820_64.h b/include/asm-x86/e820_64.h
index a560c4f5d500..22ede73ae724 100644
--- a/include/asm-x86/e820_64.h
+++ b/include/asm-x86/e820_64.h
@@ -18,6 +18,8 @@ extern unsigned long find_e820_area(unsigned long start, unsigned long end,
18 unsigned size, unsigned long align); 18 unsigned size, unsigned long align);
19extern void add_memory_region(unsigned long start, unsigned long size, 19extern void add_memory_region(unsigned long start, unsigned long size,
20 int type); 20 int type);
21extern void update_memory_range(u64 start, u64 size, unsigned old_type,
22 unsigned new_type);
21extern void setup_memory_region(void); 23extern void setup_memory_region(void);
22extern void contig_e820_setup(void); 24extern void contig_e820_setup(void);
23extern unsigned long e820_end_of_ram(void); 25extern unsigned long e820_end_of_ram(void);
diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h
index 1cb7c51bc296..a05b2896492f 100644
--- a/include/asm-x86/page.h
+++ b/include/asm-x86/page.h
@@ -52,13 +52,13 @@ extern int page_is_ram(unsigned long pagenr);
52 52
53struct page; 53struct page;
54 54
55static void inline clear_user_page(void *page, unsigned long vaddr, 55static inline void clear_user_page(void *page, unsigned long vaddr,
56 struct page *pg) 56 struct page *pg)
57{ 57{
58 clear_page(page); 58 clear_page(page);
59} 59}
60 60
61static void inline copy_user_page(void *to, void *from, unsigned long vaddr, 61static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
62 struct page *topage) 62 struct page *topage)
63{ 63{
64 copy_page(to, from); 64 copy_page(to, from);
diff --git a/include/asm-x86/sync_bitops.h b/include/asm-x86/sync_bitops.h
index cbce08a2d135..6b775c905666 100644
--- a/include/asm-x86/sync_bitops.h
+++ b/include/asm-x86/sync_bitops.h
@@ -23,10 +23,6 @@
23 * This function is atomic and may not be reordered. See __set_bit() 23 * This function is atomic and may not be reordered. See __set_bit()
24 * if you do not require the atomic guarantees. 24 * if you do not require the atomic guarantees.
25 * 25 *
26 * Note: there are no guarantees that this function will not be reordered
27 * on non-x86 architectures, so if you are writing portable code,
28 * make sure not to rely on its reordering guarantees.
29 *
30 * Note that @nr may be almost arbitrarily large; this function is not 26 * Note that @nr may be almost arbitrarily large; this function is not
31 * restricted to acting on a single-word quantity. 27 * restricted to acting on a single-word quantity.
32 */ 28 */
@@ -61,8 +57,7 @@ static inline void sync_clear_bit(int nr, volatile unsigned long * addr)
61 * @nr: Bit to change 57 * @nr: Bit to change
62 * @addr: Address to start counting from 58 * @addr: Address to start counting from
63 * 59 *
64 * change_bit() is atomic and may not be reordered. It may be 60 * sync_change_bit() is atomic and may not be reordered.
65 * reordered on other architectures than x86.
66 * Note that @nr may be almost arbitrarily large; this function is not 61 * Note that @nr may be almost arbitrarily large; this function is not
67 * restricted to acting on a single-word quantity. 62 * restricted to acting on a single-word quantity.
68 */ 63 */
@@ -80,7 +75,6 @@ static inline void sync_change_bit(int nr, volatile unsigned long * addr)
80 * @addr: Address to count from 75 * @addr: Address to count from
81 * 76 *
82 * This operation is atomic and cannot be reordered. 77 * This operation is atomic and cannot be reordered.
83 * It may be reordered on other architectures than x86.
84 * It also implies a memory barrier. 78 * It also implies a memory barrier.
85 */ 79 */
86static inline int sync_test_and_set_bit(int nr, volatile unsigned long * addr) 80static inline int sync_test_and_set_bit(int nr, volatile unsigned long * addr)
@@ -99,7 +93,6 @@ static inline int sync_test_and_set_bit(int nr, volatile unsigned long * addr)
99 * @addr: Address to count from 93 * @addr: Address to count from
100 * 94 *
101 * This operation is atomic and cannot be reordered. 95 * This operation is atomic and cannot be reordered.
102 * It can be reorderdered on other architectures other than x86.
103 * It also implies a memory barrier. 96 * It also implies a memory barrier.
104 */ 97 */
105static inline int sync_test_and_clear_bit(int nr, volatile unsigned long * addr) 98static inline int sync_test_and_clear_bit(int nr, volatile unsigned long * addr)
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index 0fac822c1157..4108b38ebb16 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -127,7 +127,6 @@ header-y += pkt_sched.h
127header-y += posix_types.h 127header-y += posix_types.h
128header-y += ppdev.h 128header-y += ppdev.h
129header-y += prctl.h 129header-y += prctl.h
130header-y += ps2esdi.h
131header-y += qnxtypes.h 130header-y += qnxtypes.h
132header-y += quotaio_v1.h 131header-y += quotaio_v1.h
133header-y += quotaio_v2.h 132header-y += quotaio_v2.h
diff --git a/include/linux/exportfs.h b/include/linux/exportfs.h
index 51d214138814..adcbb05b120b 100644
--- a/include/linux/exportfs.h
+++ b/include/linux/exportfs.h
@@ -49,11 +49,11 @@ struct fid {
49 49
50/** 50/**
51 * struct export_operations - for nfsd to communicate with file systems 51 * struct export_operations - for nfsd to communicate with file systems
52 * @decode_fh: decode a file handle fragment and return a &struct dentry
53 * @encode_fh: encode a file handle fragment from a dentry 52 * @encode_fh: encode a file handle fragment from a dentry
53 * @fh_to_dentry: find the implied object and get a dentry for it
54 * @fh_to_parent: find the implied object's parent and get a dentry for it
54 * @get_name: find the name for a given inode in a given directory 55 * @get_name: find the name for a given inode in a given directory
55 * @get_parent: find the parent of a given directory 56 * @get_parent: find the parent of a given directory
56 * @get_dentry: find a dentry for the inode given a file handle sub-fragment
57 * 57 *
58 * See Documentation/filesystems/Exporting for details on how to use 58 * See Documentation/filesystems/Exporting for details on how to use
59 * this interface correctly. 59 * this interface correctly.
diff --git a/include/linux/in.h b/include/linux/in.h
index 70c6df882694..4065313cd7ee 100644
--- a/include/linux/in.h
+++ b/include/linux/in.h
@@ -265,7 +265,7 @@ static inline bool ipv4_is_local_multicast(__be32 addr)
265static inline bool ipv4_is_lbcast(__be32 addr) 265static inline bool ipv4_is_lbcast(__be32 addr)
266{ 266{
267 /* limited broadcast */ 267 /* limited broadcast */
268 return addr == INADDR_BROADCAST; 268 return addr == htonl(INADDR_BROADCAST);
269} 269}
270 270
271static inline bool ipv4_is_zeronet(__be32 addr) 271static inline bool ipv4_is_zeronet(__be32 addr)
diff --git a/include/linux/jbd.h b/include/linux/jbd.h
index b18fd3b9b835..423f58272188 100644
--- a/include/linux/jbd.h
+++ b/include/linux/jbd.h
@@ -348,8 +348,7 @@ static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh)
348struct jbd_revoke_table_s; 348struct jbd_revoke_table_s;
349 349
350/** 350/**
351 * struct handle_s - The handle_s type is the concrete type associated with 351 * struct handle_s - this is the concrete type associated with handle_t.
352 * handle_t.
353 * @h_transaction: Which compound transaction is this update a part of? 352 * @h_transaction: Which compound transaction is this update a part of?
354 * @h_buffer_credits: Number of remaining buffers we are allowed to dirty. 353 * @h_buffer_credits: Number of remaining buffers we are allowed to dirty.
355 * @h_ref: Reference count on this handle 354 * @h_ref: Reference count on this handle
@@ -358,12 +357,7 @@ struct jbd_revoke_table_s;
358 * @h_jdata: flag to force data journaling 357 * @h_jdata: flag to force data journaling
359 * @h_aborted: flag indicating fatal error on handle 358 * @h_aborted: flag indicating fatal error on handle
360 * @h_lockdep_map: lockdep info for debugging lock problems 359 * @h_lockdep_map: lockdep info for debugging lock problems
361 **/
362
363/* Docbook can't yet cope with the bit fields, but will leave the documentation
364 * in so it can be fixed later.
365 */ 360 */
366
367struct handle_s 361struct handle_s
368{ 362{
369 /* Which compound transaction is this update a part of? */ 363 /* Which compound transaction is this update a part of? */
@@ -558,8 +552,7 @@ struct transaction_s
558}; 552};
559 553
560/** 554/**
561 * struct journal_s - The journal_s type is the concrete type associated with 555 * struct journal_s - this is the concrete type associated with journal_t.
562 * journal_t.
563 * @j_flags: General journaling state flags 556 * @j_flags: General journaling state flags
564 * @j_errno: Is there an outstanding uncleared error on the journal (from a 557 * @j_errno: Is there an outstanding uncleared error on the journal (from a
565 * prior abort)? 558 * prior abort)?
diff --git a/include/linux/memstick.h b/include/linux/memstick.h
index b7ee25888836..3e686ec6a967 100644
--- a/include/linux/memstick.h
+++ b/include/linux/memstick.h
@@ -239,7 +239,6 @@ struct memstick_request {
239 unsigned char tpc; 239 unsigned char tpc;
240 unsigned char data_dir:1, 240 unsigned char data_dir:1,
241 need_card_int:1, 241 need_card_int:1,
242 get_int_reg:1,
243 long_data:1; 242 long_data:1;
244 unsigned char int_reg; 243 unsigned char int_reg;
245 int error; 244 int error;
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 9010f5458767..b7e4b633c69b 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1045,6 +1045,8 @@ void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen);
1045void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr); 1045void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr);
1046void __iomem * const *pcim_iomap_table(struct pci_dev *pdev); 1046void __iomem * const *pcim_iomap_table(struct pci_dev *pdev);
1047int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name); 1047int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name);
1048int pcim_iomap_regions_request_all(struct pci_dev *pdev, u16 mask,
1049 const char *name);
1048void pcim_iounmap_regions(struct pci_dev *pdev, u16 mask); 1050void pcim_iounmap_regions(struct pci_dev *pdev, u16 mask);
1049 1051
1050extern int pci_pci_problems; 1052extern int pci_pci_problems;
diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h
index 28dfc61cf79e..99efbed81fa2 100644
--- a/include/linux/pkt_cls.h
+++ b/include/linux/pkt_cls.h
@@ -201,8 +201,8 @@ enum
201 201
202struct tc_u32_key 202struct tc_u32_key
203{ 203{
204 __u32 mask; 204 __be32 mask;
205 __u32 val; 205 __be32 val;
206 int off; 206 int off;
207 int offmask; 207 int offmask;
208}; 208};
@@ -213,12 +213,12 @@ struct tc_u32_sel
213 unsigned char offshift; 213 unsigned char offshift;
214 unsigned char nkeys; 214 unsigned char nkeys;
215 215
216 __u16 offmask; 216 __be16 offmask;
217 __u16 off; 217 __u16 off;
218 short offoff; 218 short offoff;
219 219
220 short hoff; 220 short hoff;
221 __u32 hmask; 221 __be32 hmask;
222 struct tc_u32_key keys[0]; 222 struct tc_u32_key keys[0];
223}; 223};
224 224
diff --git a/include/linux/pnp.h b/include/linux/pnp.h
index cd6332b88829..29dd55838e84 100644
--- a/include/linux/pnp.h
+++ b/include/linux/pnp.h
@@ -14,7 +14,7 @@
14#include <linux/mod_devicetable.h> 14#include <linux/mod_devicetable.h>
15 15
16#define PNP_MAX_PORT 40 16#define PNP_MAX_PORT 40
17#define PNP_MAX_MEM 12 17#define PNP_MAX_MEM 24
18#define PNP_MAX_IRQ 2 18#define PNP_MAX_IRQ 2
19#define PNP_MAX_DMA 2 19#define PNP_MAX_DMA 2
20#define PNP_NAME_LEN 50 20#define PNP_NAME_LEN 50
diff --git a/include/linux/ps2esdi.h b/include/linux/ps2esdi.h
deleted file mode 100644
index c0e050b1dfe9..000000000000
--- a/include/linux/ps2esdi.h
+++ /dev/null
@@ -1,98 +0,0 @@
1#ifndef _PS2ESDI_H_
2#define _PS2ESDI_H_
3
4#define NRML_ESDI_ID 0xddff
5#define INTG_ESDI_ID 0xdf9f
6
7#define PRIMARY_IO_BASE 0x3510
8#define ALT_IO_BASE 0x3518
9
10#define ESDI_CMD_INT (io_base+0)
11#define ESDI_STT_INT (io_base+0)
12#define ESDI_CONTROL (io_base+2)
13#define ESDI_STATUS (io_base+2)
14#define ESDI_ATTN (io_base+3)
15#define ESDI_INTRPT (io_base+3)
16
17#define STATUS_ENABLED 0x01
18#define STATUS_ALTERNATE 0x02
19#define STATUS_BUSY 0x10
20#define STATUS_STAT_AVAIL 0x08
21#define STATUS_INTR 0x01
22#define STATUS_RESET_FAIL 0xea
23#define STATUS_CMD_INF 0x04
24
25#define CTRL_SOFT_RESET 0xe4
26#define CTRL_HARD_RESET 0x80
27#define CTRL_EOI 0xe2
28#define CTRL_ENABLE_DMA 0x02
29#define CTRL_ENABLE_INTR 0x01
30#define CTRL_DISABLE_INTR 0x00
31
32#define ATT_EOI 0x02
33
34/* bits of word 0 of configuration status block. more info see p.38 of tech ref */
35#define CONFIG_IS 0x10 /* Invalid Secondary */
36#define CONFIG_ZD 0x08 /* Zero Defect */
37#define CONFIG_SF 0x04 /* Skewed Format */
38#define CONFIG_FR 0x02 /* Removable */
39#define CONFIG_RT 0x01 /* Retries */
40
41#define PORT_SYS_A 0x92
42#define PORT_DMA_FN 0x18
43#define PORT_DMA_EX 0x1a
44
45#define ON (unsigned char)0x40
46#define OFF (unsigned char)~ON
47#define LITE_ON outb(inb(PORT_SYS_A) | ON,PORT_SYS_A)
48#define LITE_OFF outb((inb(PORT_SYS_A) & OFF),PORT_SYS_A)
49
50#define FAIL 0
51#define SUCCES 1
52
53#define INT_CMD_COMPLETE 0x01
54#define INT_CMD_ECC 0x03
55#define INT_CMD_RETRY 0x05
56#define INT_CMD_FORMAT 0x06
57#define INT_CMD_ECC_RETRY 0x07
58#define INT_CMD_WARNING 0x08
59#define INT_CMD_ABORT 0x09
60#define INT_RESET 0x0A
61#define INT_TRANSFER_REQ 0x0B
62#define INT_CMD_FAILED 0x0C
63#define INT_DMA_ERR 0x0D
64#define INT_CMD_BLK_ERR 0x0E
65#define INT_ATTN_ERROR 0x0F
66
67#define DMA_MASK_CHAN 0x90
68#define DMA_UNMASK_CHAN 0xA0
69#define DMA_WRITE_ADDR 0x20
70#define DMA_WRITE_TC 0x40
71#define DMA_WRITE_MODE 0x70
72
73#define CMD_GET_DEV_CONFIG 0x09
74#define CMD_READ 0x4601
75#define CMD_WRITE 0x4602
76#define DMA_READ_16 0x4C
77#define DMA_WRITE_16 0x44
78
79
80#define MB 1024*1024
81#define SECT_SIZE 512
82
83#define ERROR 1
84#define OK 0
85
86#define HDIO_GETGEO 0x0301
87
88#define FALSE 0
89#define TRUE !FALSE
90
91struct ps2esdi_geometry {
92 unsigned char heads;
93 unsigned char sectors;
94 unsigned short cylinders;
95 unsigned long start;
96};
97
98#endif /* _PS2ESDI_H_ */
diff --git a/include/linux/rcupreempt.h b/include/linux/rcupreempt.h
index 01152ed532c8..d038aa6e5ee1 100644
--- a/include/linux/rcupreempt.h
+++ b/include/linux/rcupreempt.h
@@ -87,15 +87,15 @@ DECLARE_PER_CPU(long, dynticks_progress_counter);
87 87
88static inline void rcu_enter_nohz(void) 88static inline void rcu_enter_nohz(void)
89{ 89{
90 smp_mb(); /* CPUs seeing ++ must see prior RCU read-side crit sects */
90 __get_cpu_var(dynticks_progress_counter)++; 91 __get_cpu_var(dynticks_progress_counter)++;
91 WARN_ON(__get_cpu_var(dynticks_progress_counter) & 0x1); 92 WARN_ON(__get_cpu_var(dynticks_progress_counter) & 0x1);
92 mb();
93} 93}
94 94
95static inline void rcu_exit_nohz(void) 95static inline void rcu_exit_nohz(void)
96{ 96{
97 mb();
98 __get_cpu_var(dynticks_progress_counter)++; 97 __get_cpu_var(dynticks_progress_counter)++;
98 smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */
99 WARN_ON(!(__get_cpu_var(dynticks_progress_counter) & 0x1)); 99 WARN_ON(!(__get_cpu_var(dynticks_progress_counter) & 0x1));
100} 100}
101 101
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 11d8e9a74eff..fed07d03364e 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -790,6 +790,7 @@ struct sched_domain {
790}; 790};
791 791
792extern void partition_sched_domains(int ndoms_new, cpumask_t *doms_new); 792extern void partition_sched_domains(int ndoms_new, cpumask_t *doms_new);
793extern int arch_reinit_sched_domains(void);
793 794
794#endif /* CONFIG_SMP */ 795#endif /* CONFIG_SMP */
795 796
@@ -929,6 +930,9 @@ struct sched_entity {
929 u64 vruntime; 930 u64 vruntime;
930 u64 prev_sum_exec_runtime; 931 u64 prev_sum_exec_runtime;
931 932
933 u64 last_wakeup;
934 u64 avg_overlap;
935
932#ifdef CONFIG_SCHEDSTATS 936#ifdef CONFIG_SCHEDSTATS
933 u64 wait_start; 937 u64 wait_start;
934 u64 wait_max; 938 u64 wait_max;
diff --git a/include/linux/security.h b/include/linux/security.h
index b07357ca2137..c673dfd4dffc 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -57,7 +57,6 @@ extern int cap_inode_need_killpriv(struct dentry *dentry);
57extern int cap_inode_killpriv(struct dentry *dentry); 57extern int cap_inode_killpriv(struct dentry *dentry);
58extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags); 58extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags);
59extern void cap_task_reparent_to_init (struct task_struct *p); 59extern void cap_task_reparent_to_init (struct task_struct *p);
60extern int cap_task_kill(struct task_struct *p, struct siginfo *info, int sig, u32 secid);
61extern int cap_task_setscheduler (struct task_struct *p, int policy, struct sched_param *lp); 60extern int cap_task_setscheduler (struct task_struct *p, int policy, struct sched_param *lp);
62extern int cap_task_setioprio (struct task_struct *p, int ioprio); 61extern int cap_task_setioprio (struct task_struct *p, int ioprio);
63extern int cap_task_setnice (struct task_struct *p, int nice); 62extern int cap_task_setnice (struct task_struct *p, int nice);
@@ -2187,7 +2186,7 @@ static inline int security_task_kill (struct task_struct *p,
2187 struct siginfo *info, int sig, 2186 struct siginfo *info, int sig,
2188 u32 secid) 2187 u32 secid)
2189{ 2188{
2190 return cap_task_kill(p, info, sig, secid); 2189 return 0;
2191} 2190}
2192 2191
2193static inline int security_task_wait (struct task_struct *p) 2192static inline int security_task_wait (struct task_struct *p)
diff --git a/include/linux/topology.h b/include/linux/topology.h
index 2352f46160d3..bd14f8b30f09 100644
--- a/include/linux/topology.h
+++ b/include/linux/topology.h
@@ -50,6 +50,8 @@
50 for_each_online_node(node) \ 50 for_each_online_node(node) \
51 if (nr_cpus_node(node)) 51 if (nr_cpus_node(node))
52 52
53void arch_update_cpu_topology(void);
54
53/* Conform to ACPI 2.0 SLIT distance definitions */ 55/* Conform to ACPI 2.0 SLIT distance definitions */
54#define LOCAL_DISTANCE 10 56#define LOCAL_DISTANCE 10
55#define REMOTE_DISTANCE 20 57#define REMOTE_DISTANCE 20
@@ -138,7 +140,6 @@
138 | SD_BALANCE_FORK \ 140 | SD_BALANCE_FORK \
139 | SD_BALANCE_EXEC \ 141 | SD_BALANCE_EXEC \
140 | SD_WAKE_AFFINE \ 142 | SD_WAKE_AFFINE \
141 | SD_WAKE_IDLE \
142 | SD_SHARE_PKG_RESOURCES\ 143 | SD_SHARE_PKG_RESOURCES\
143 | BALANCE_FOR_MC_POWER, \ 144 | BALANCE_FOR_MC_POWER, \
144 .last_balance = jiffies, \ 145 .last_balance = jiffies, \
diff --git a/include/linux/virtio.h b/include/linux/virtio.h
index 260d1fcf29a4..12c18ac1b973 100644
--- a/include/linux/virtio.h
+++ b/include/linux/virtio.h
@@ -43,8 +43,9 @@ struct virtqueue
43 * vq: the struct virtqueue we're talking about. 43 * vq: the struct virtqueue we're talking about.
44 * @enable_cb: restart callbacks after disable_cb. 44 * @enable_cb: restart callbacks after disable_cb.
45 * vq: the struct virtqueue we're talking about. 45 * vq: the struct virtqueue we're talking about.
46 * This returns "false" (and doesn't re-enable) if there are pending 46 * This re-enables callbacks; it returns "false" if there are pending
47 * buffers in the queue, to avoid a race. 47 * buffers in the queue, to detect a possible race between the driver
48 * checking for more work, and enabling callbacks.
48 * 49 *
49 * Locking rules are straightforward: the driver is responsible for 50 * Locking rules are straightforward: the driver is responsible for
50 * locking. No two operations may be invoked simultaneously. 51 * locking. No two operations may be invoked simultaneously.
diff --git a/include/net/dst.h b/include/net/dst.h
index e3ac7d0fc4e1..ae13370e8484 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -52,15 +52,10 @@ struct dst_entry
52 unsigned short header_len; /* more space at head required */ 52 unsigned short header_len; /* more space at head required */
53 unsigned short trailer_len; /* space to reserve at tail */ 53 unsigned short trailer_len; /* space to reserve at tail */
54 54
55 u32 metrics[RTAX_MAX];
56 struct dst_entry *path;
57
58 unsigned long rate_last; /* rate limiting for ICMP */
59 unsigned int rate_tokens; 55 unsigned int rate_tokens;
56 unsigned long rate_last; /* rate limiting for ICMP */
60 57
61#ifdef CONFIG_NET_CLS_ROUTE 58 struct dst_entry *path;
62 __u32 tclassid;
63#endif
64 59
65 struct neighbour *neighbour; 60 struct neighbour *neighbour;
66 struct hh_cache *hh; 61 struct hh_cache *hh;
@@ -70,10 +65,20 @@ struct dst_entry
70 int (*output)(struct sk_buff*); 65 int (*output)(struct sk_buff*);
71 66
72 struct dst_ops *ops; 67 struct dst_ops *ops;
73 68
74 unsigned long lastuse; 69 u32 metrics[RTAX_MAX];
70
71#ifdef CONFIG_NET_CLS_ROUTE
72 __u32 tclassid;
73#endif
74
75 /*
76 * __refcnt wants to be on a different cache line from
77 * input/output/ops or performance tanks badly
78 */
75 atomic_t __refcnt; /* client references */ 79 atomic_t __refcnt; /* client references */
76 int __use; 80 int __use;
81 unsigned long lastuse;
77 union { 82 union {
78 struct dst_entry *next; 83 struct dst_entry *next;
79 struct rtable *rt_next; 84 struct rtable *rt_next;
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
index 57df27f19588..57ed3e323d97 100644
--- a/include/net/sctp/sctp.h
+++ b/include/net/sctp/sctp.h
@@ -380,15 +380,19 @@ static inline int sctp_sysctl_jiffies_ms(ctl_table *table, int __user *name, int
380 380
381#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) 381#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
382 382
383int sctp_v6_init(void); 383void sctp_v6_pf_init(void);
384void sctp_v6_exit(void); 384void sctp_v6_pf_exit(void);
385int sctp_v6_protosw_init(void);
386void sctp_v6_protosw_exit(void);
385int sctp_v6_add_protocol(void); 387int sctp_v6_add_protocol(void);
386void sctp_v6_del_protocol(void); 388void sctp_v6_del_protocol(void);
387 389
388#else /* #ifdef defined(CONFIG_IPV6) */ 390#else /* #ifdef defined(CONFIG_IPV6) */
389 391
390static inline int sctp_v6_init(void) { return 0; } 392static inline void sctp_v6_pf_init(void) { return 0; }
391static inline void sctp_v6_exit(void) { return; } 393static inline void sctp_v6_pf_exit(void) { return; }
394static inline int sctp_v6_protosw_init(void) { return 0; }
395static inline void sctp_v6_protosw_exit(void) { return; }
392static inline int sctp_v6_add_protocol(void) { return 0; } 396static inline int sctp_v6_add_protocol(void) { return 0; }
393static inline void sctp_v6_del_protocol(void) { return; } 397static inline void sctp_v6_del_protocol(void) { return; }
394 398
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index eea7785cc757..619c53bc3cd2 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -277,7 +277,7 @@ extern int __xfrm_state_delete(struct xfrm_state *x);
277struct xfrm_state_afinfo { 277struct xfrm_state_afinfo {
278 unsigned int family; 278 unsigned int family;
279 unsigned int proto; 279 unsigned int proto;
280 unsigned int eth_proto; 280 __be16 eth_proto;
281 struct module *owner; 281 struct module *owner;
282 const struct xfrm_type *type_map[IPPROTO_MAX]; 282 const struct xfrm_type *type_map[IPPROTO_MAX];
283 struct xfrm_mode *mode_map[XFRM_MODE_MAX]; 283 struct xfrm_mode *mode_map[XFRM_MODE_MAX];
diff --git a/init/initramfs.c b/init/initramfs.c
index c0b1e0533d80..d53fee8d8604 100644
--- a/init/initramfs.c
+++ b/init/initramfs.c
@@ -538,7 +538,7 @@ skip:
538 initrd_end = 0; 538 initrd_end = 0;
539} 539}
540 540
541int __init populate_rootfs(void) 541static int __init populate_rootfs(void)
542{ 542{
543 char *err = unpack_to_rootfs(__initramfs_start, 543 char *err = unpack_to_rootfs(__initramfs_start,
544 __initramfs_end - __initramfs_start, 0); 544 __initramfs_end - __initramfs_start, 0);
@@ -577,10 +577,4 @@ int __init populate_rootfs(void)
577 } 577 }
578 return 0; 578 return 0;
579} 579}
580#ifndef CONFIG_ACPI_CUSTOM_DSDT_INITRD
581/*
582 * if this option is enabled, populate_rootfs() is called _earlier_ in the
583 * boot sequence. This insures that the ACPI initialisation can find the file.
584 */
585rootfs_initcall(populate_rootfs); 580rootfs_initcall(populate_rootfs);
586#endif
diff --git a/init/main.c b/init/main.c
index fbb0167c6b8a..99ce94930b09 100644
--- a/init/main.c
+++ b/init/main.c
@@ -102,12 +102,6 @@ static inline void mark_rodata_ro(void) { }
102extern void tc_init(void); 102extern void tc_init(void);
103#endif 103#endif
104 104
105#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
106extern int populate_rootfs(void);
107#else
108static inline void populate_rootfs(void) {}
109#endif
110
111enum system_states system_state; 105enum system_states system_state;
112EXPORT_SYMBOL(system_state); 106EXPORT_SYMBOL(system_state);
113 107
@@ -650,7 +644,6 @@ asmlinkage void __init start_kernel(void)
650 644
651 check_bugs(); 645 check_bugs();
652 646
653 populate_rootfs(); /* For DSDT override from initramfs */
654 acpi_early_init(); /* before LAPIC and SMP init */ 647 acpi_early_init(); /* before LAPIC and SMP init */
655 648
656 /* Do the rest non-__init'ed, we're now alive */ 649 /* Do the rest non-__init'ed, we're now alive */
diff --git a/kernel/audit.c b/kernel/audit.c
index 10c4930c2bbf..be55cb503633 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -78,9 +78,13 @@ static int audit_default;
78/* If auditing cannot proceed, audit_failure selects what happens. */ 78/* If auditing cannot proceed, audit_failure selects what happens. */
79static int audit_failure = AUDIT_FAIL_PRINTK; 79static int audit_failure = AUDIT_FAIL_PRINTK;
80 80
81/* If audit records are to be written to the netlink socket, audit_pid 81/*
82 * contains the (non-zero) pid. */ 82 * If audit records are to be written to the netlink socket, audit_pid
83 * contains the pid of the auditd process and audit_nlk_pid contains
84 * the pid to use to send netlink messages to that process.
85 */
83int audit_pid; 86int audit_pid;
87static int audit_nlk_pid;
84 88
85/* If audit_rate_limit is non-zero, limit the rate of sending audit records 89/* If audit_rate_limit is non-zero, limit the rate of sending audit records
86 * to that number per second. This prevents DoS attacks, but results in 90 * to that number per second. This prevents DoS attacks, but results in
@@ -350,7 +354,7 @@ static int kauditd_thread(void *dummy)
350 wake_up(&audit_backlog_wait); 354 wake_up(&audit_backlog_wait);
351 if (skb) { 355 if (skb) {
352 if (audit_pid) { 356 if (audit_pid) {
353 int err = netlink_unicast(audit_sock, skb, audit_pid, 0); 357 int err = netlink_unicast(audit_sock, skb, audit_nlk_pid, 0);
354 if (err < 0) { 358 if (err < 0) {
355 BUG_ON(err != -ECONNREFUSED); /* Shoudn't happen */ 359 BUG_ON(err != -ECONNREFUSED); /* Shoudn't happen */
356 printk(KERN_ERR "audit: *NO* daemon at audit_pid=%d\n", audit_pid); 360 printk(KERN_ERR "audit: *NO* daemon at audit_pid=%d\n", audit_pid);
@@ -626,6 +630,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
626 sid, 1); 630 sid, 1);
627 631
628 audit_pid = new_pid; 632 audit_pid = new_pid;
633 audit_nlk_pid = NETLINK_CB(skb).pid;
629 } 634 }
630 if (status_get->mask & AUDIT_STATUS_RATE_LIMIT) 635 if (status_get->mask & AUDIT_STATUS_RATE_LIMIT)
631 err = audit_set_rate_limit(status_get->rate_limit, 636 err = audit_set_rate_limit(status_get->rate_limit,
diff --git a/kernel/relay.c b/kernel/relay.c
index d080b9d161a7..4c035a8a248c 100644
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -1066,7 +1066,7 @@ static int subbuf_splice_actor(struct file *in,
1066 unsigned int flags, 1066 unsigned int flags,
1067 int *nonpad_ret) 1067 int *nonpad_ret)
1068{ 1068{
1069 unsigned int pidx, poff, total_len, subbuf_pages, ret; 1069 unsigned int pidx, poff, total_len, subbuf_pages, nr_pages, ret;
1070 struct rchan_buf *rbuf = in->private_data; 1070 struct rchan_buf *rbuf = in->private_data;
1071 unsigned int subbuf_size = rbuf->chan->subbuf_size; 1071 unsigned int subbuf_size = rbuf->chan->subbuf_size;
1072 uint64_t pos = (uint64_t) *ppos; 1072 uint64_t pos = (uint64_t) *ppos;
@@ -1097,8 +1097,9 @@ static int subbuf_splice_actor(struct file *in,
1097 subbuf_pages = rbuf->chan->alloc_size >> PAGE_SHIFT; 1097 subbuf_pages = rbuf->chan->alloc_size >> PAGE_SHIFT;
1098 pidx = (read_start / PAGE_SIZE) % subbuf_pages; 1098 pidx = (read_start / PAGE_SIZE) % subbuf_pages;
1099 poff = read_start & ~PAGE_MASK; 1099 poff = read_start & ~PAGE_MASK;
1100 nr_pages = min_t(unsigned int, subbuf_pages, PIPE_BUFFERS);
1100 1101
1101 for (total_len = 0; spd.nr_pages < subbuf_pages; spd.nr_pages++) { 1102 for (total_len = 0; spd.nr_pages < nr_pages; spd.nr_pages++) {
1102 unsigned int this_len, this_end, private; 1103 unsigned int this_len, this_end, private;
1103 unsigned int cur_pos = read_start + total_len; 1104 unsigned int cur_pos = read_start + total_len;
1104 1105
diff --git a/kernel/sched.c b/kernel/sched.c
index 1cb53fb1fe3d..28c73f07efb2 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -301,7 +301,7 @@ struct cfs_rq {
301 /* 'curr' points to currently running entity on this cfs_rq. 301 /* 'curr' points to currently running entity on this cfs_rq.
302 * It is set to NULL otherwise (i.e when none are currently running). 302 * It is set to NULL otherwise (i.e when none are currently running).
303 */ 303 */
304 struct sched_entity *curr; 304 struct sched_entity *curr, *next;
305 305
306 unsigned long nr_spread_over; 306 unsigned long nr_spread_over;
307 307
@@ -594,18 +594,14 @@ enum {
594 SCHED_FEAT_NEW_FAIR_SLEEPERS = 1, 594 SCHED_FEAT_NEW_FAIR_SLEEPERS = 1,
595 SCHED_FEAT_WAKEUP_PREEMPT = 2, 595 SCHED_FEAT_WAKEUP_PREEMPT = 2,
596 SCHED_FEAT_START_DEBIT = 4, 596 SCHED_FEAT_START_DEBIT = 4,
597 SCHED_FEAT_TREE_AVG = 8, 597 SCHED_FEAT_HRTICK = 8,
598 SCHED_FEAT_APPROX_AVG = 16, 598 SCHED_FEAT_DOUBLE_TICK = 16,
599 SCHED_FEAT_HRTICK = 32,
600 SCHED_FEAT_DOUBLE_TICK = 64,
601}; 599};
602 600
603const_debug unsigned int sysctl_sched_features = 601const_debug unsigned int sysctl_sched_features =
604 SCHED_FEAT_NEW_FAIR_SLEEPERS * 1 | 602 SCHED_FEAT_NEW_FAIR_SLEEPERS * 1 |
605 SCHED_FEAT_WAKEUP_PREEMPT * 1 | 603 SCHED_FEAT_WAKEUP_PREEMPT * 1 |
606 SCHED_FEAT_START_DEBIT * 1 | 604 SCHED_FEAT_START_DEBIT * 1 |
607 SCHED_FEAT_TREE_AVG * 0 |
608 SCHED_FEAT_APPROX_AVG * 0 |
609 SCHED_FEAT_HRTICK * 1 | 605 SCHED_FEAT_HRTICK * 1 |
610 SCHED_FEAT_DOUBLE_TICK * 0; 606 SCHED_FEAT_DOUBLE_TICK * 0;
611 607
@@ -1084,7 +1080,7 @@ calc_delta_mine(unsigned long delta_exec, unsigned long weight,
1084 u64 tmp; 1080 u64 tmp;
1085 1081
1086 if (unlikely(!lw->inv_weight)) 1082 if (unlikely(!lw->inv_weight))
1087 lw->inv_weight = (WMULT_CONST - lw->weight/2) / lw->weight + 1; 1083 lw->inv_weight = (WMULT_CONST-lw->weight/2) / (lw->weight+1);
1088 1084
1089 tmp = (u64)delta_exec * weight; 1085 tmp = (u64)delta_exec * weight;
1090 /* 1086 /*
@@ -1108,11 +1104,13 @@ calc_delta_fair(unsigned long delta_exec, struct load_weight *lw)
1108static inline void update_load_add(struct load_weight *lw, unsigned long inc) 1104static inline void update_load_add(struct load_weight *lw, unsigned long inc)
1109{ 1105{
1110 lw->weight += inc; 1106 lw->weight += inc;
1107 lw->inv_weight = 0;
1111} 1108}
1112 1109
1113static inline void update_load_sub(struct load_weight *lw, unsigned long dec) 1110static inline void update_load_sub(struct load_weight *lw, unsigned long dec)
1114{ 1111{
1115 lw->weight -= dec; 1112 lw->weight -= dec;
1113 lw->inv_weight = 0;
1116} 1114}
1117 1115
1118/* 1116/*
@@ -1394,6 +1392,12 @@ task_hot(struct task_struct *p, u64 now, struct sched_domain *sd)
1394{ 1392{
1395 s64 delta; 1393 s64 delta;
1396 1394
1395 /*
1396 * Buddy candidates are cache hot:
1397 */
1398 if (&p->se == cfs_rq_of(&p->se)->next)
1399 return 1;
1400
1397 if (p->sched_class != &fair_sched_class) 1401 if (p->sched_class != &fair_sched_class)
1398 return 0; 1402 return 0;
1399 1403
@@ -1853,10 +1857,11 @@ out_activate:
1853 schedstat_inc(p, se.nr_wakeups_remote); 1857 schedstat_inc(p, se.nr_wakeups_remote);
1854 update_rq_clock(rq); 1858 update_rq_clock(rq);
1855 activate_task(rq, p, 1); 1859 activate_task(rq, p, 1);
1856 check_preempt_curr(rq, p);
1857 success = 1; 1860 success = 1;
1858 1861
1859out_running: 1862out_running:
1863 check_preempt_curr(rq, p);
1864
1860 p->state = TASK_RUNNING; 1865 p->state = TASK_RUNNING;
1861#ifdef CONFIG_SMP 1866#ifdef CONFIG_SMP
1862 if (p->sched_class->task_wake_up) 1867 if (p->sched_class->task_wake_up)
@@ -1890,6 +1895,8 @@ static void __sched_fork(struct task_struct *p)
1890 p->se.exec_start = 0; 1895 p->se.exec_start = 0;
1891 p->se.sum_exec_runtime = 0; 1896 p->se.sum_exec_runtime = 0;
1892 p->se.prev_sum_exec_runtime = 0; 1897 p->se.prev_sum_exec_runtime = 0;
1898 p->se.last_wakeup = 0;
1899 p->se.avg_overlap = 0;
1893 1900
1894#ifdef CONFIG_SCHEDSTATS 1901#ifdef CONFIG_SCHEDSTATS
1895 p->se.wait_start = 0; 1902 p->se.wait_start = 0;
@@ -3875,7 +3882,7 @@ need_resched_nonpreemptible:
3875 3882
3876 if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { 3883 if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) {
3877 if (unlikely((prev->state & TASK_INTERRUPTIBLE) && 3884 if (unlikely((prev->state & TASK_INTERRUPTIBLE) &&
3878 unlikely(signal_pending(prev)))) { 3885 signal_pending(prev))) {
3879 prev->state = TASK_RUNNING; 3886 prev->state = TASK_RUNNING;
3880 } else { 3887 } else {
3881 deactivate_task(rq, prev, 1); 3888 deactivate_task(rq, prev, 1);
@@ -4268,11 +4275,10 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
4268 oldprio = p->prio; 4275 oldprio = p->prio;
4269 on_rq = p->se.on_rq; 4276 on_rq = p->se.on_rq;
4270 running = task_current(rq, p); 4277 running = task_current(rq, p);
4271 if (on_rq) { 4278 if (on_rq)
4272 dequeue_task(rq, p, 0); 4279 dequeue_task(rq, p, 0);
4273 if (running) 4280 if (running)
4274 p->sched_class->put_prev_task(rq, p); 4281 p->sched_class->put_prev_task(rq, p);
4275 }
4276 4282
4277 if (rt_prio(prio)) 4283 if (rt_prio(prio))
4278 p->sched_class = &rt_sched_class; 4284 p->sched_class = &rt_sched_class;
@@ -4281,10 +4287,9 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
4281 4287
4282 p->prio = prio; 4288 p->prio = prio;
4283 4289
4290 if (running)
4291 p->sched_class->set_curr_task(rq);
4284 if (on_rq) { 4292 if (on_rq) {
4285 if (running)
4286 p->sched_class->set_curr_task(rq);
4287
4288 enqueue_task(rq, p, 0); 4293 enqueue_task(rq, p, 0);
4289 4294
4290 check_class_changed(rq, p, prev_class, oldprio, running); 4295 check_class_changed(rq, p, prev_class, oldprio, running);
@@ -4581,19 +4586,17 @@ recheck:
4581 update_rq_clock(rq); 4586 update_rq_clock(rq);
4582 on_rq = p->se.on_rq; 4587 on_rq = p->se.on_rq;
4583 running = task_current(rq, p); 4588 running = task_current(rq, p);
4584 if (on_rq) { 4589 if (on_rq)
4585 deactivate_task(rq, p, 0); 4590 deactivate_task(rq, p, 0);
4586 if (running) 4591 if (running)
4587 p->sched_class->put_prev_task(rq, p); 4592 p->sched_class->put_prev_task(rq, p);
4588 }
4589 4593
4590 oldprio = p->prio; 4594 oldprio = p->prio;
4591 __setscheduler(rq, p, policy, param->sched_priority); 4595 __setscheduler(rq, p, policy, param->sched_priority);
4592 4596
4597 if (running)
4598 p->sched_class->set_curr_task(rq);
4593 if (on_rq) { 4599 if (on_rq) {
4594 if (running)
4595 p->sched_class->set_curr_task(rq);
4596
4597 activate_task(rq, p, 0); 4600 activate_task(rq, p, 0);
4598 4601
4599 check_class_changed(rq, p, prev_class, oldprio, running); 4602 check_class_changed(rq, p, prev_class, oldprio, running);
@@ -6804,6 +6807,10 @@ static int ndoms_cur; /* number of sched domains in 'doms_cur' */
6804 */ 6807 */
6805static cpumask_t fallback_doms; 6808static cpumask_t fallback_doms;
6806 6809
6810void __attribute__((weak)) arch_update_cpu_topology(void)
6811{
6812}
6813
6807/* 6814/*
6808 * Set up scheduler domains and groups. Callers must hold the hotplug lock. 6815 * Set up scheduler domains and groups. Callers must hold the hotplug lock.
6809 * For now this just excludes isolated cpus, but could be used to 6816 * For now this just excludes isolated cpus, but could be used to
@@ -6813,6 +6820,7 @@ static int arch_init_sched_domains(const cpumask_t *cpu_map)
6813{ 6820{
6814 int err; 6821 int err;
6815 6822
6823 arch_update_cpu_topology();
6816 ndoms_cur = 1; 6824 ndoms_cur = 1;
6817 doms_cur = kmalloc(sizeof(cpumask_t), GFP_KERNEL); 6825 doms_cur = kmalloc(sizeof(cpumask_t), GFP_KERNEL);
6818 if (!doms_cur) 6826 if (!doms_cur)
@@ -6917,7 +6925,7 @@ match2:
6917} 6925}
6918 6926
6919#if defined(CONFIG_SCHED_MC) || defined(CONFIG_SCHED_SMT) 6927#if defined(CONFIG_SCHED_MC) || defined(CONFIG_SCHED_SMT)
6920static int arch_reinit_sched_domains(void) 6928int arch_reinit_sched_domains(void)
6921{ 6929{
6922 int err; 6930 int err;
6923 6931
@@ -7618,11 +7626,10 @@ void sched_move_task(struct task_struct *tsk)
7618 running = task_current(rq, tsk); 7626 running = task_current(rq, tsk);
7619 on_rq = tsk->se.on_rq; 7627 on_rq = tsk->se.on_rq;
7620 7628
7621 if (on_rq) { 7629 if (on_rq)
7622 dequeue_task(rq, tsk, 0); 7630 dequeue_task(rq, tsk, 0);
7623 if (unlikely(running)) 7631 if (unlikely(running))
7624 tsk->sched_class->put_prev_task(rq, tsk); 7632 tsk->sched_class->put_prev_task(rq, tsk);
7625 }
7626 7633
7627 set_task_rq(tsk, task_cpu(tsk)); 7634 set_task_rq(tsk, task_cpu(tsk));
7628 7635
@@ -7631,11 +7638,10 @@ void sched_move_task(struct task_struct *tsk)
7631 tsk->sched_class->moved_group(tsk); 7638 tsk->sched_class->moved_group(tsk);
7632#endif 7639#endif
7633 7640
7634 if (on_rq) { 7641 if (unlikely(running))
7635 if (unlikely(running)) 7642 tsk->sched_class->set_curr_task(rq);
7636 tsk->sched_class->set_curr_task(rq); 7643 if (on_rq)
7637 enqueue_task(rq, tsk, 0); 7644 enqueue_task(rq, tsk, 0);
7638 }
7639 7645
7640 task_rq_unlock(rq, &flags); 7646 task_rq_unlock(rq, &flags);
7641} 7647}
diff --git a/kernel/sched_debug.c b/kernel/sched_debug.c
index 4b5e24cf2f4a..ef358ba07683 100644
--- a/kernel/sched_debug.c
+++ b/kernel/sched_debug.c
@@ -288,6 +288,7 @@ void proc_sched_show_task(struct task_struct *p, struct seq_file *m)
288 PN(se.exec_start); 288 PN(se.exec_start);
289 PN(se.vruntime); 289 PN(se.vruntime);
290 PN(se.sum_exec_runtime); 290 PN(se.sum_exec_runtime);
291 PN(se.avg_overlap);
291 292
292 nr_switches = p->nvcsw + p->nivcsw; 293 nr_switches = p->nvcsw + p->nivcsw;
293 294
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index e2a530515619..86a93376282c 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -73,13 +73,13 @@ unsigned int sysctl_sched_batch_wakeup_granularity = 10000000UL;
73 73
74/* 74/*
75 * SCHED_OTHER wake-up granularity. 75 * SCHED_OTHER wake-up granularity.
76 * (default: 10 msec * (1 + ilog(ncpus)), units: nanoseconds) 76 * (default: 5 msec * (1 + ilog(ncpus)), units: nanoseconds)
77 * 77 *
78 * This option delays the preemption effects of decoupled workloads 78 * This option delays the preemption effects of decoupled workloads
79 * and reduces their over-scheduling. Synchronous workloads will still 79 * and reduces their over-scheduling. Synchronous workloads will still
80 * have immediate wakeup/sleep latencies. 80 * have immediate wakeup/sleep latencies.
81 */ 81 */
82unsigned int sysctl_sched_wakeup_granularity = 10000000UL; 82unsigned int sysctl_sched_wakeup_granularity = 5000000UL;
83 83
84const_debug unsigned int sysctl_sched_migration_cost = 500000UL; 84const_debug unsigned int sysctl_sched_migration_cost = 500000UL;
85 85
@@ -175,8 +175,15 @@ static void __enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
175 * Maintain a cache of leftmost tree entries (it is frequently 175 * Maintain a cache of leftmost tree entries (it is frequently
176 * used): 176 * used):
177 */ 177 */
178 if (leftmost) 178 if (leftmost) {
179 cfs_rq->rb_leftmost = &se->run_node; 179 cfs_rq->rb_leftmost = &se->run_node;
180 /*
181 * maintain cfs_rq->min_vruntime to be a monotonic increasing
182 * value tracking the leftmost vruntime in the tree.
183 */
184 cfs_rq->min_vruntime =
185 max_vruntime(cfs_rq->min_vruntime, se->vruntime);
186 }
180 187
181 rb_link_node(&se->run_node, parent, link); 188 rb_link_node(&se->run_node, parent, link);
182 rb_insert_color(&se->run_node, &cfs_rq->tasks_timeline); 189 rb_insert_color(&se->run_node, &cfs_rq->tasks_timeline);
@@ -184,8 +191,24 @@ static void __enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
184 191
185static void __dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) 192static void __dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
186{ 193{
187 if (cfs_rq->rb_leftmost == &se->run_node) 194 if (cfs_rq->rb_leftmost == &se->run_node) {
188 cfs_rq->rb_leftmost = rb_next(&se->run_node); 195 struct rb_node *next_node;
196 struct sched_entity *next;
197
198 next_node = rb_next(&se->run_node);
199 cfs_rq->rb_leftmost = next_node;
200
201 if (next_node) {
202 next = rb_entry(next_node,
203 struct sched_entity, run_node);
204 cfs_rq->min_vruntime =
205 max_vruntime(cfs_rq->min_vruntime,
206 next->vruntime);
207 }
208 }
209
210 if (cfs_rq->next == se)
211 cfs_rq->next = NULL;
189 212
190 rb_erase(&se->run_node, &cfs_rq->tasks_timeline); 213 rb_erase(&se->run_node, &cfs_rq->tasks_timeline);
191} 214}
@@ -260,12 +283,8 @@ static u64 __sched_period(unsigned long nr_running)
260 */ 283 */
261static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) 284static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se)
262{ 285{
263 u64 slice = __sched_period(cfs_rq->nr_running); 286 return calc_delta_mine(__sched_period(cfs_rq->nr_running),
264 287 se->load.weight, &cfs_rq->load);
265 slice *= se->load.weight;
266 do_div(slice, cfs_rq->load.weight);
267
268 return slice;
269} 288}
270 289
271/* 290/*
@@ -283,11 +302,6 @@ static u64 __sched_vslice(unsigned long rq_weight, unsigned long nr_running)
283 return vslice; 302 return vslice;
284} 303}
285 304
286static u64 sched_vslice(struct cfs_rq *cfs_rq)
287{
288 return __sched_vslice(cfs_rq->load.weight, cfs_rq->nr_running);
289}
290
291static u64 sched_vslice_add(struct cfs_rq *cfs_rq, struct sched_entity *se) 305static u64 sched_vslice_add(struct cfs_rq *cfs_rq, struct sched_entity *se)
292{ 306{
293 return __sched_vslice(cfs_rq->load.weight + se->load.weight, 307 return __sched_vslice(cfs_rq->load.weight + se->load.weight,
@@ -303,7 +317,6 @@ __update_curr(struct cfs_rq *cfs_rq, struct sched_entity *curr,
303 unsigned long delta_exec) 317 unsigned long delta_exec)
304{ 318{
305 unsigned long delta_exec_weighted; 319 unsigned long delta_exec_weighted;
306 u64 vruntime;
307 320
308 schedstat_set(curr->exec_max, max((u64)delta_exec, curr->exec_max)); 321 schedstat_set(curr->exec_max, max((u64)delta_exec, curr->exec_max));
309 322
@@ -315,19 +328,6 @@ __update_curr(struct cfs_rq *cfs_rq, struct sched_entity *curr,
315 &curr->load); 328 &curr->load);
316 } 329 }
317 curr->vruntime += delta_exec_weighted; 330 curr->vruntime += delta_exec_weighted;
318
319 /*
320 * maintain cfs_rq->min_vruntime to be a monotonic increasing
321 * value tracking the leftmost vruntime in the tree.
322 */
323 if (first_fair(cfs_rq)) {
324 vruntime = min_vruntime(curr->vruntime,
325 __pick_next_entity(cfs_rq)->vruntime);
326 } else
327 vruntime = curr->vruntime;
328
329 cfs_rq->min_vruntime =
330 max_vruntime(cfs_rq->min_vruntime, vruntime);
331} 331}
332 332
333static void update_curr(struct cfs_rq *cfs_rq) 333static void update_curr(struct cfs_rq *cfs_rq)
@@ -493,16 +493,11 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial)
493{ 493{
494 u64 vruntime; 494 u64 vruntime;
495 495
496 vruntime = cfs_rq->min_vruntime; 496 if (first_fair(cfs_rq)) {
497 497 vruntime = min_vruntime(cfs_rq->min_vruntime,
498 if (sched_feat(TREE_AVG)) { 498 __pick_next_entity(cfs_rq)->vruntime);
499 struct sched_entity *last = __pick_last_entity(cfs_rq); 499 } else
500 if (last) { 500 vruntime = cfs_rq->min_vruntime;
501 vruntime += last->vruntime;
502 vruntime >>= 1;
503 }
504 } else if (sched_feat(APPROX_AVG) && cfs_rq->nr_running)
505 vruntime += sched_vslice(cfs_rq)/2;
506 501
507 /* 502 /*
508 * The 'current' period is already promised to the current tasks, 503 * The 'current' period is already promised to the current tasks,
@@ -515,8 +510,10 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial)
515 510
516 if (!initial) { 511 if (!initial) {
517 /* sleeps upto a single latency don't count. */ 512 /* sleeps upto a single latency don't count. */
518 if (sched_feat(NEW_FAIR_SLEEPERS)) 513 if (sched_feat(NEW_FAIR_SLEEPERS)) {
519 vruntime -= sysctl_sched_latency; 514 vruntime -= calc_delta_fair(sysctl_sched_latency,
515 &cfs_rq->load);
516 }
520 517
521 /* ensure we never gain time by being placed backwards. */ 518 /* ensure we never gain time by being placed backwards. */
522 vruntime = max_vruntime(se->vruntime, vruntime); 519 vruntime = max_vruntime(se->vruntime, vruntime);
@@ -545,6 +542,21 @@ enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int wakeup)
545 account_entity_enqueue(cfs_rq, se); 542 account_entity_enqueue(cfs_rq, se);
546} 543}
547 544
545static void update_avg(u64 *avg, u64 sample)
546{
547 s64 diff = sample - *avg;
548 *avg += diff >> 3;
549}
550
551static void update_avg_stats(struct cfs_rq *cfs_rq, struct sched_entity *se)
552{
553 if (!se->last_wakeup)
554 return;
555
556 update_avg(&se->avg_overlap, se->sum_exec_runtime - se->last_wakeup);
557 se->last_wakeup = 0;
558}
559
548static void 560static void
549dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int sleep) 561dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int sleep)
550{ 562{
@@ -555,6 +567,7 @@ dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int sleep)
555 567
556 update_stats_dequeue(cfs_rq, se); 568 update_stats_dequeue(cfs_rq, se);
557 if (sleep) { 569 if (sleep) {
570 update_avg_stats(cfs_rq, se);
558#ifdef CONFIG_SCHEDSTATS 571#ifdef CONFIG_SCHEDSTATS
559 if (entity_is_task(se)) { 572 if (entity_is_task(se)) {
560 struct task_struct *tsk = task_of(se); 573 struct task_struct *tsk = task_of(se);
@@ -616,12 +629,32 @@ set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
616 se->prev_sum_exec_runtime = se->sum_exec_runtime; 629 se->prev_sum_exec_runtime = se->sum_exec_runtime;
617} 630}
618 631
632static struct sched_entity *
633pick_next(struct cfs_rq *cfs_rq, struct sched_entity *se)
634{
635 s64 diff, gran;
636
637 if (!cfs_rq->next)
638 return se;
639
640 diff = cfs_rq->next->vruntime - se->vruntime;
641 if (diff < 0)
642 return se;
643
644 gran = calc_delta_fair(sysctl_sched_wakeup_granularity, &cfs_rq->load);
645 if (diff > gran)
646 return se;
647
648 return cfs_rq->next;
649}
650
619static struct sched_entity *pick_next_entity(struct cfs_rq *cfs_rq) 651static struct sched_entity *pick_next_entity(struct cfs_rq *cfs_rq)
620{ 652{
621 struct sched_entity *se = NULL; 653 struct sched_entity *se = NULL;
622 654
623 if (first_fair(cfs_rq)) { 655 if (first_fair(cfs_rq)) {
624 se = __pick_next_entity(cfs_rq); 656 se = __pick_next_entity(cfs_rq);
657 se = pick_next(cfs_rq, se);
625 set_next_entity(cfs_rq, se); 658 set_next_entity(cfs_rq, se);
626 } 659 }
627 660
@@ -949,96 +982,121 @@ static inline int wake_idle(int cpu, struct task_struct *p)
949#endif 982#endif
950 983
951#ifdef CONFIG_SMP 984#ifdef CONFIG_SMP
952static int select_task_rq_fair(struct task_struct *p, int sync) 985
986static const struct sched_class fair_sched_class;
987
988static int
989wake_affine(struct rq *rq, struct sched_domain *this_sd, struct rq *this_rq,
990 struct task_struct *p, int prev_cpu, int this_cpu, int sync,
991 int idx, unsigned long load, unsigned long this_load,
992 unsigned int imbalance)
953{ 993{
954 int cpu, this_cpu; 994 struct task_struct *curr = this_rq->curr;
955 struct rq *rq; 995 unsigned long tl = this_load;
956 struct sched_domain *sd, *this_sd = NULL; 996 unsigned long tl_per_task;
957 int new_cpu; 997
998 if (!(this_sd->flags & SD_WAKE_AFFINE))
999 return 0;
1000
1001 /*
1002 * If the currently running task will sleep within
1003 * a reasonable amount of time then attract this newly
1004 * woken task:
1005 */
1006 if (sync && curr->sched_class == &fair_sched_class) {
1007 if (curr->se.avg_overlap < sysctl_sched_migration_cost &&
1008 p->se.avg_overlap < sysctl_sched_migration_cost)
1009 return 1;
1010 }
1011
1012 schedstat_inc(p, se.nr_wakeups_affine_attempts);
1013 tl_per_task = cpu_avg_load_per_task(this_cpu);
958 1014
959 cpu = task_cpu(p); 1015 /*
960 rq = task_rq(p); 1016 * If sync wakeup then subtract the (maximum possible)
961 this_cpu = smp_processor_id(); 1017 * effect of the currently running task from the load
962 new_cpu = cpu; 1018 * of the current CPU:
1019 */
1020 if (sync)
1021 tl -= current->se.load.weight;
1022
1023 if ((tl <= load && tl + target_load(prev_cpu, idx) <= tl_per_task) ||
1024 100*(tl + p->se.load.weight) <= imbalance*load) {
1025 /*
1026 * This domain has SD_WAKE_AFFINE and
1027 * p is cache cold in this domain, and
1028 * there is no bad imbalance.
1029 */
1030 schedstat_inc(this_sd, ttwu_move_affine);
1031 schedstat_inc(p, se.nr_wakeups_affine);
1032
1033 return 1;
1034 }
1035 return 0;
1036}
963 1037
964 if (cpu == this_cpu) 1038static int select_task_rq_fair(struct task_struct *p, int sync)
965 goto out_set_cpu; 1039{
1040 struct sched_domain *sd, *this_sd = NULL;
1041 int prev_cpu, this_cpu, new_cpu;
1042 unsigned long load, this_load;
1043 struct rq *rq, *this_rq;
1044 unsigned int imbalance;
1045 int idx;
1046
1047 prev_cpu = task_cpu(p);
1048 rq = task_rq(p);
1049 this_cpu = smp_processor_id();
1050 this_rq = cpu_rq(this_cpu);
1051 new_cpu = prev_cpu;
966 1052
1053 /*
1054 * 'this_sd' is the first domain that both
1055 * this_cpu and prev_cpu are present in:
1056 */
967 for_each_domain(this_cpu, sd) { 1057 for_each_domain(this_cpu, sd) {
968 if (cpu_isset(cpu, sd->span)) { 1058 if (cpu_isset(prev_cpu, sd->span)) {
969 this_sd = sd; 1059 this_sd = sd;
970 break; 1060 break;
971 } 1061 }
972 } 1062 }
973 1063
974 if (unlikely(!cpu_isset(this_cpu, p->cpus_allowed))) 1064 if (unlikely(!cpu_isset(this_cpu, p->cpus_allowed)))
975 goto out_set_cpu; 1065 goto out;
976 1066
977 /* 1067 /*
978 * Check for affine wakeup and passive balancing possibilities. 1068 * Check for affine wakeup and passive balancing possibilities.
979 */ 1069 */
980 if (this_sd) { 1070 if (!this_sd)
981 int idx = this_sd->wake_idx; 1071 goto out;
982 unsigned int imbalance;
983 unsigned long load, this_load;
984
985 imbalance = 100 + (this_sd->imbalance_pct - 100) / 2;
986
987 load = source_load(cpu, idx);
988 this_load = target_load(this_cpu, idx);
989
990 new_cpu = this_cpu; /* Wake to this CPU if we can */
991
992 if (this_sd->flags & SD_WAKE_AFFINE) {
993 unsigned long tl = this_load;
994 unsigned long tl_per_task;
995
996 /*
997 * Attract cache-cold tasks on sync wakeups:
998 */
999 if (sync && !task_hot(p, rq->clock, this_sd))
1000 goto out_set_cpu;
1001
1002 schedstat_inc(p, se.nr_wakeups_affine_attempts);
1003 tl_per_task = cpu_avg_load_per_task(this_cpu);
1004
1005 /*
1006 * If sync wakeup then subtract the (maximum possible)
1007 * effect of the currently running task from the load
1008 * of the current CPU:
1009 */
1010 if (sync)
1011 tl -= current->se.load.weight;
1012
1013 if ((tl <= load &&
1014 tl + target_load(cpu, idx) <= tl_per_task) ||
1015 100*(tl + p->se.load.weight) <= imbalance*load) {
1016 /*
1017 * This domain has SD_WAKE_AFFINE and
1018 * p is cache cold in this domain, and
1019 * there is no bad imbalance.
1020 */
1021 schedstat_inc(this_sd, ttwu_move_affine);
1022 schedstat_inc(p, se.nr_wakeups_affine);
1023 goto out_set_cpu;
1024 }
1025 }
1026 1072
1027 /* 1073 idx = this_sd->wake_idx;
1028 * Start passive balancing when half the imbalance_pct 1074
1029 * limit is reached. 1075 imbalance = 100 + (this_sd->imbalance_pct - 100) / 2;
1030 */ 1076
1031 if (this_sd->flags & SD_WAKE_BALANCE) { 1077 load = source_load(prev_cpu, idx);
1032 if (imbalance*this_load <= 100*load) { 1078 this_load = target_load(this_cpu, idx);
1033 schedstat_inc(this_sd, ttwu_move_balance); 1079
1034 schedstat_inc(p, se.nr_wakeups_passive); 1080 if (wake_affine(rq, this_sd, this_rq, p, prev_cpu, this_cpu, sync, idx,
1035 goto out_set_cpu; 1081 load, this_load, imbalance))
1036 } 1082 return this_cpu;
1083
1084 if (prev_cpu == this_cpu)
1085 goto out;
1086
1087 /*
1088 * Start passive balancing when half the imbalance_pct
1089 * limit is reached.
1090 */
1091 if (this_sd->flags & SD_WAKE_BALANCE) {
1092 if (imbalance*this_load <= 100*load) {
1093 schedstat_inc(this_sd, ttwu_move_balance);
1094 schedstat_inc(p, se.nr_wakeups_passive);
1095 return this_cpu;
1037 } 1096 }
1038 } 1097 }
1039 1098
1040 new_cpu = cpu; /* Could not wake to this_cpu. Wake to cpu instead */ 1099out:
1041out_set_cpu:
1042 return wake_idle(new_cpu, p); 1100 return wake_idle(new_cpu, p);
1043} 1101}
1044#endif /* CONFIG_SMP */ 1102#endif /* CONFIG_SMP */
@@ -1060,6 +1118,13 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p)
1060 resched_task(curr); 1118 resched_task(curr);
1061 return; 1119 return;
1062 } 1120 }
1121
1122 se->last_wakeup = se->sum_exec_runtime;
1123 if (unlikely(se == pse))
1124 return;
1125
1126 cfs_rq_of(pse)->next = pse;
1127
1063 /* 1128 /*
1064 * Batch tasks do not preempt (their preemption is driven by 1129 * Batch tasks do not preempt (their preemption is driven by
1065 * the tick): 1130 * the tick):
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index 548c436a776b..278534bbca95 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -141,13 +141,8 @@ static void clocksource_watchdog(unsigned long data)
141 } 141 }
142 142
143 if (!list_empty(&watchdog_list)) { 143 if (!list_empty(&watchdog_list)) {
144 /* Cycle through CPUs to check if the CPUs stay synchronized to 144 __mod_timer(&watchdog_timer,
145 * each other. */ 145 watchdog_timer.expires + WATCHDOG_INTERVAL);
146 int next_cpu = next_cpu(raw_smp_processor_id(), cpu_online_map);
147 if (next_cpu >= NR_CPUS)
148 next_cpu = first_cpu(cpu_online_map);
149 watchdog_timer.expires += WATCHDOG_INTERVAL;
150 add_timer_on(&watchdog_timer, next_cpu);
151 } 146 }
152 spin_unlock(&watchdog_lock); 147 spin_unlock(&watchdog_lock);
153} 148}
@@ -169,7 +164,7 @@ static void clocksource_check_watchdog(struct clocksource *cs)
169 if (!started && watchdog) { 164 if (!started && watchdog) {
170 watchdog_last = watchdog->read(); 165 watchdog_last = watchdog->read();
171 watchdog_timer.expires = jiffies + WATCHDOG_INTERVAL; 166 watchdog_timer.expires = jiffies + WATCHDOG_INTERVAL;
172 add_timer_on(&watchdog_timer, first_cpu(cpu_online_map)); 167 add_timer(&watchdog_timer);
173 } 168 }
174 } else { 169 } else {
175 if (cs->flags & CLOCK_SOURCE_IS_CONTINUOUS) 170 if (cs->flags & CLOCK_SOURCE_IS_CONTINUOUS)
@@ -190,8 +185,7 @@ static void clocksource_check_watchdog(struct clocksource *cs)
190 watchdog_last = watchdog->read(); 185 watchdog_last = watchdog->read();
191 watchdog_timer.expires = 186 watchdog_timer.expires =
192 jiffies + WATCHDOG_INTERVAL; 187 jiffies + WATCHDOG_INTERVAL;
193 add_timer_on(&watchdog_timer, 188 add_timer(&watchdog_timer);
194 first_cpu(cpu_online_map));
195 } 189 }
196 } 190 }
197 } 191 }
diff --git a/lib/devres.c b/lib/devres.c
index b1d336ce7f3d..edc27a5d1b73 100644
--- a/lib/devres.c
+++ b/lib/devres.c
@@ -298,6 +298,31 @@ int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name)
298EXPORT_SYMBOL(pcim_iomap_regions); 298EXPORT_SYMBOL(pcim_iomap_regions);
299 299
300/** 300/**
301 * pcim_iomap_regions_request_all - Request all BARs and iomap specified ones
302 * @pdev: PCI device to map IO resources for
303 * @mask: Mask of BARs to iomap
304 * @name: Name used when requesting regions
305 *
306 * Request all PCI BARs and iomap regions specified by @mask.
307 */
308int pcim_iomap_regions_request_all(struct pci_dev *pdev, u16 mask,
309 const char *name)
310{
311 int request_mask = ((1 << 6) - 1) & ~mask;
312 int rc;
313
314 rc = pci_request_selected_regions(pdev, request_mask, name);
315 if (rc)
316 return rc;
317
318 rc = pcim_iomap_regions(pdev, mask, name);
319 if (rc)
320 pci_release_selected_regions(pdev, request_mask);
321 return rc;
322}
323EXPORT_SYMBOL(pcim_iomap_regions_request_all);
324
325/**
301 * pcim_iounmap_regions - Unmap and release PCI BARs 326 * pcim_iounmap_regions - Unmap and release PCI BARs
302 * @pdev: PCI device to map IO resources for 327 * @pdev: PCI device to map IO resources for
303 * @mask: Mask of BARs to unmap and release 328 * @mask: Mask of BARs to unmap and release
diff --git a/mm/filemap.c b/mm/filemap.c
index df343d1e6345..07e9d9258b48 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -343,7 +343,7 @@ int sync_page_range(struct inode *inode, struct address_space *mapping,
343EXPORT_SYMBOL(sync_page_range); 343EXPORT_SYMBOL(sync_page_range);
344 344
345/** 345/**
346 * sync_page_range_nolock 346 * sync_page_range_nolock - write & wait on all pages in the passed range without locking
347 * @inode: target inode 347 * @inode: target inode
348 * @mapping: target address_space 348 * @mapping: target address_space
349 * @pos: beginning offset in pages to write 349 * @pos: beginning offset in pages to write
@@ -611,7 +611,10 @@ int __lock_page_killable(struct page *page)
611 sync_page_killable, TASK_KILLABLE); 611 sync_page_killable, TASK_KILLABLE);
612} 612}
613 613
614/* 614/**
615 * __lock_page_nosync - get a lock on the page, without calling sync_page()
616 * @page: the page to lock
617 *
615 * Variant of lock_page that does not require the caller to hold a reference 618 * Variant of lock_page that does not require the caller to hold a reference
616 * on the page's mapping. 619 * on the page's mapping.
617 */ 620 */
@@ -1538,9 +1541,20 @@ repeat:
1538 return page; 1541 return page;
1539} 1542}
1540 1543
1541/* 1544/**
1545 * read_cache_page_async - read into page cache, fill it if needed
1546 * @mapping: the page's address_space
1547 * @index: the page index
1548 * @filler: function to perform the read
1549 * @data: destination for read data
1550 *
1542 * Same as read_cache_page, but don't wait for page to become unlocked 1551 * Same as read_cache_page, but don't wait for page to become unlocked
1543 * after submitting it to the filler. 1552 * after submitting it to the filler.
1553 *
1554 * Read into the page cache. If a page already exists, and PageUptodate() is
1555 * not set, try to fill the page but don't wait for it to become unlocked.
1556 *
1557 * If the page does not get brought uptodate, return -EIO.
1544 */ 1558 */
1545struct page *read_cache_page_async(struct address_space *mapping, 1559struct page *read_cache_page_async(struct address_space *mapping,
1546 pgoff_t index, 1560 pgoff_t index,
diff --git a/mm/fremap.c b/mm/fremap.c
index 69a37c2bdf81..07a9c82ce1a3 100644
--- a/mm/fremap.c
+++ b/mm/fremap.c
@@ -113,7 +113,7 @@ static int populate_range(struct mm_struct *mm, struct vm_area_struct *vma,
113 * mmap()/mremap() it does not create any new vmas. The new mappings are 113 * mmap()/mremap() it does not create any new vmas. The new mappings are
114 * also safe across swapout. 114 * also safe across swapout.
115 * 115 *
116 * NOTE: the 'prot' parameter right now is ignored (but must be zero), 116 * NOTE: the @prot parameter right now is ignored (but must be zero),
117 * and the vma's default protection is used. Arbitrary protections 117 * and the vma's default protection is used. Arbitrary protections
118 * might be implemented in the future. 118 * might be implemented in the future.
119 */ 119 */
diff --git a/mm/highmem.c b/mm/highmem.c
index 35d47733cde4..7da4a7b6af11 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -104,8 +104,9 @@ static void flush_all_zero_pkmaps(void)
104 flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP)); 104 flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP));
105} 105}
106 106
107/* Flush all unused kmap mappings in order to remove stray 107/**
108 mappings. */ 108 * kmap_flush_unused - flush all unused kmap mappings in order to remove stray mappings
109 */
109void kmap_flush_unused(void) 110void kmap_flush_unused(void)
110{ 111{
111 spin_lock(&kmap_lock); 112 spin_lock(&kmap_lock);
@@ -163,6 +164,14 @@ start:
163 return vaddr; 164 return vaddr;
164} 165}
165 166
167/**
168 * kmap_high - map a highmem page into memory
169 * @page: &struct page to map
170 *
171 * Returns the page's virtual memory address.
172 *
173 * We cannot call this from interrupts, as it may block.
174 */
166void *kmap_high(struct page *page) 175void *kmap_high(struct page *page)
167{ 176{
168 unsigned long vaddr; 177 unsigned long vaddr;
@@ -170,8 +179,6 @@ void *kmap_high(struct page *page)
170 /* 179 /*
171 * For highmem pages, we can't trust "virtual" until 180 * For highmem pages, we can't trust "virtual" until
172 * after we have the lock. 181 * after we have the lock.
173 *
174 * We cannot call this from interrupts, as it may block
175 */ 182 */
176 spin_lock(&kmap_lock); 183 spin_lock(&kmap_lock);
177 vaddr = (unsigned long)page_address(page); 184 vaddr = (unsigned long)page_address(page);
@@ -185,6 +192,10 @@ void *kmap_high(struct page *page)
185 192
186EXPORT_SYMBOL(kmap_high); 193EXPORT_SYMBOL(kmap_high);
187 194
195/**
196 * kunmap_high - map a highmem page into memory
197 * @page: &struct page to unmap
198 */
188void kunmap_high(struct page *page) 199void kunmap_high(struct page *page)
189{ 200{
190 unsigned long vaddr; 201 unsigned long vaddr;
@@ -259,6 +270,12 @@ static struct page_address_slot *page_slot(struct page *page)
259 return &page_address_htable[hash_ptr(page, PA_HASH_ORDER)]; 270 return &page_address_htable[hash_ptr(page, PA_HASH_ORDER)];
260} 271}
261 272
273/**
274 * page_address - get the mapped virtual address of a page
275 * @page: &struct page to get the virtual address of
276 *
277 * Returns the page's virtual address.
278 */
262void *page_address(struct page *page) 279void *page_address(struct page *page)
263{ 280{
264 unsigned long flags; 281 unsigned long flags;
@@ -288,6 +305,11 @@ done:
288 305
289EXPORT_SYMBOL(page_address); 306EXPORT_SYMBOL(page_address);
290 307
308/**
309 * set_page_address - set a page's virtual address
310 * @page: &struct page to set
311 * @virtual: virtual address to use
312 */
291void set_page_address(struct page *page, void *virtual) 313void set_page_address(struct page *page, void *virtual)
292{ 314{
293 unsigned long flags; 315 unsigned long flags;
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 8b9f6cae938e..9b648bd63451 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -1079,7 +1079,7 @@ static void mem_cgroup_move_task(struct cgroup_subsys *ss,
1079 * Only thread group leaders are allowed to migrate, the mm_struct is 1079 * Only thread group leaders are allowed to migrate, the mm_struct is
1080 * in effect owned by the leader 1080 * in effect owned by the leader
1081 */ 1081 */
1082 if (p->tgid != p->pid) 1082 if (!thread_group_leader(p))
1083 goto out; 1083 goto out;
1084 1084
1085 css_get(&mem->css); 1085 css_get(&mem->css);
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 44b2da11bf43..f255eda693b0 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -37,6 +37,7 @@ static DEFINE_SPINLOCK(zone_scan_mutex);
37 * badness - calculate a numeric value for how bad this task has been 37 * badness - calculate a numeric value for how bad this task has been
38 * @p: task struct of which task we should calculate 38 * @p: task struct of which task we should calculate
39 * @uptime: current uptime in seconds 39 * @uptime: current uptime in seconds
40 * @mem: target memory controller
40 * 41 *
41 * The formula used is relatively simple and documented inline in the 42 * The formula used is relatively simple and documented inline in the
42 * function. The main rationale is that we want to select a good task 43 * function. The main rationale is that we want to select a good task
@@ -264,6 +265,9 @@ static struct task_struct *select_bad_process(unsigned long *ppoints,
264} 265}
265 266
266/** 267/**
268 * dump_tasks - dump current memory state of all system tasks
269 * @mem: target memory controller
270 *
267 * Dumps the current memory state of all system tasks, excluding kernel threads. 271 * Dumps the current memory state of all system tasks, excluding kernel threads.
268 * State information includes task's pid, uid, tgid, vm size, rss, cpu, oom_adj 272 * State information includes task's pid, uid, tgid, vm size, rss, cpu, oom_adj
269 * score, and name. 273 * score, and name.
@@ -298,7 +302,7 @@ static void dump_tasks(const struct mem_cgroup *mem)
298 } while_each_thread(g, p); 302 } while_each_thread(g, p);
299} 303}
300 304
301/** 305/*
302 * Send SIGKILL to the selected process irrespective of CAP_SYS_RAW_IO 306 * Send SIGKILL to the selected process irrespective of CAP_SYS_RAW_IO
303 * flag though it's unlikely that we select a process with CAP_SYS_RAW_IO 307 * flag though it's unlikely that we select a process with CAP_SYS_RAW_IO
304 * set. 308 * set.
@@ -504,6 +508,9 @@ void clear_zonelist_oom(struct zonelist *zonelist)
504 508
505/** 509/**
506 * out_of_memory - kill the "best" process when we run out of memory 510 * out_of_memory - kill the "best" process when we run out of memory
511 * @zonelist: zonelist pointer
512 * @gfp_mask: memory allocation flags
513 * @order: amount of memory being requested as a power of 2
507 * 514 *
508 * If we run out of memory, we have the choice between either 515 * If we run out of memory, we have the choice between either
509 * killing a random task (bad), letting the system crash (worse) 516 * killing a random task (bad), letting the system crash (worse)
diff --git a/mm/pagewalk.c b/mm/pagewalk.c
index b4f27d22da91..1cf1417ef8b7 100644
--- a/mm/pagewalk.c
+++ b/mm/pagewalk.c
@@ -77,11 +77,11 @@ static int walk_pud_range(pgd_t *pgd, unsigned long addr, unsigned long end,
77 77
78/** 78/**
79 * walk_page_range - walk a memory map's page tables with a callback 79 * walk_page_range - walk a memory map's page tables with a callback
80 * @mm - memory map to walk 80 * @mm: memory map to walk
81 * @addr - starting address 81 * @addr: starting address
82 * @end - ending address 82 * @end: ending address
83 * @walk - set of callbacks to invoke for each level of the tree 83 * @walk: set of callbacks to invoke for each level of the tree
84 * @private - private data passed to the callback function 84 * @private: private data passed to the callback function
85 * 85 *
86 * Recursively walk the page table for the memory area in a VMA, 86 * Recursively walk the page table for the memory area in a VMA,
87 * calling supplied callbacks. Callbacks are called in-order (first 87 * calling supplied callbacks. Callbacks are called in-order (first
diff --git a/mm/readahead.c b/mm/readahead.c
index c9c50ca1ec38..8762e8988972 100644
--- a/mm/readahead.c
+++ b/mm/readahead.c
@@ -443,9 +443,10 @@ EXPORT_SYMBOL_GPL(page_cache_sync_readahead);
443 * pagecache pages 443 * pagecache pages
444 * 444 *
445 * page_cache_async_ondemand() should be called when a page is used which 445 * page_cache_async_ondemand() should be called when a page is used which
446 * has the PG_readahead flag: this is a marker to suggest that the application 446 * has the PG_readahead flag; this is a marker to suggest that the application
447 * has used up enough of the readahead window that we should start pulling in 447 * has used up enough of the readahead window that we should start pulling in
448 * more pages. */ 448 * more pages.
449 */
449void 450void
450page_cache_async_readahead(struct address_space *mapping, 451page_cache_async_readahead(struct address_space *mapping,
451 struct file_ra_state *ra, struct file *filp, 452 struct file_ra_state *ra, struct file *filp,
diff --git a/mm/rmap.c b/mm/rmap.c
index 0c9a2df06c39..997f06907b6d 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -335,6 +335,7 @@ static int page_referenced_anon(struct page *page,
335/** 335/**
336 * page_referenced_file - referenced check for object-based rmap 336 * page_referenced_file - referenced check for object-based rmap
337 * @page: the page we're checking references on. 337 * @page: the page we're checking references on.
338 * @mem_cont: target memory controller
338 * 339 *
339 * For an object-based mapped page, find all the places it is mapped and 340 * For an object-based mapped page, find all the places it is mapped and
340 * check/clear the referenced flag. This is done by following the page->mapping 341 * check/clear the referenced flag. This is done by following the page->mapping
@@ -402,6 +403,7 @@ static int page_referenced_file(struct page *page,
402 * page_referenced - test if the page was referenced 403 * page_referenced - test if the page was referenced
403 * @page: the page to test 404 * @page: the page to test
404 * @is_locked: caller holds lock on the page 405 * @is_locked: caller holds lock on the page
406 * @mem_cont: target memory controller
405 * 407 *
406 * Quick test_and_clear_referenced for all mappings to a page, 408 * Quick test_and_clear_referenced for all mappings to a page,
407 * returns the number of ptes which referenced the page. 409 * returns the number of ptes which referenced the page.
@@ -506,7 +508,7 @@ int page_mkclean(struct page *page)
506EXPORT_SYMBOL_GPL(page_mkclean); 508EXPORT_SYMBOL_GPL(page_mkclean);
507 509
508/** 510/**
509 * page_set_anon_rmap - setup new anonymous rmap 511 * __page_set_anon_rmap - setup new anonymous rmap
510 * @page: the page to add the mapping to 512 * @page: the page to add the mapping to
511 * @vma: the vm area in which the mapping is added 513 * @vma: the vm area in which the mapping is added
512 * @address: the user virtual address mapped 514 * @address: the user virtual address mapped
@@ -530,7 +532,7 @@ static void __page_set_anon_rmap(struct page *page,
530} 532}
531 533
532/** 534/**
533 * page_set_anon_rmap - sanity check anonymous rmap addition 535 * __page_check_anon_rmap - sanity check anonymous rmap addition
534 * @page: the page to add the mapping to 536 * @page: the page to add the mapping to
535 * @vma: the vm area in which the mapping is added 537 * @vma: the vm area in which the mapping is added
536 * @address: the user virtual address mapped 538 * @address: the user virtual address mapped
@@ -583,7 +585,7 @@ void page_add_anon_rmap(struct page *page,
583 } 585 }
584} 586}
585 587
586/* 588/**
587 * page_add_new_anon_rmap - add pte mapping to a new anonymous page 589 * page_add_new_anon_rmap - add pte mapping to a new anonymous page
588 * @page: the page to add the mapping to 590 * @page: the page to add the mapping to
589 * @vma: the vm area in which the mapping is added 591 * @vma: the vm area in which the mapping is added
@@ -623,6 +625,8 @@ void page_add_file_rmap(struct page *page)
623/** 625/**
624 * page_dup_rmap - duplicate pte mapping to a page 626 * page_dup_rmap - duplicate pte mapping to a page
625 * @page: the page to add the mapping to 627 * @page: the page to add the mapping to
628 * @vma: the vm area being duplicated
629 * @address: the user virtual address mapped
626 * 630 *
627 * For copy_page_range only: minimal extract from page_add_file_rmap / 631 * For copy_page_range only: minimal extract from page_add_file_rmap /
628 * page_add_anon_rmap, avoiding unnecessary tests (already checked) so it's 632 * page_add_anon_rmap, avoiding unnecessary tests (already checked) so it's
@@ -642,6 +646,7 @@ void page_dup_rmap(struct page *page, struct vm_area_struct *vma, unsigned long
642/** 646/**
643 * page_remove_rmap - take down pte mapping from a page 647 * page_remove_rmap - take down pte mapping from a page
644 * @page: page to remove mapping from 648 * @page: page to remove mapping from
649 * @vma: the vm area in which the mapping is removed
645 * 650 *
646 * The caller needs to hold the pte lock. 651 * The caller needs to hold the pte lock.
647 */ 652 */
@@ -890,6 +895,7 @@ static int try_to_unmap_anon(struct page *page, int migration)
890/** 895/**
891 * try_to_unmap_file - unmap file page using the object-based rmap method 896 * try_to_unmap_file - unmap file page using the object-based rmap method
892 * @page: the page to unmap 897 * @page: the page to unmap
898 * @migration: migration flag
893 * 899 *
894 * Find all the mappings of a page using the mapping pointer and the vma chains 900 * Find all the mappings of a page using the mapping pointer and the vma chains
895 * contained in the address_space struct it points to. 901 * contained in the address_space struct it points to.
@@ -986,6 +992,7 @@ out:
986/** 992/**
987 * try_to_unmap - try to remove all page table mappings to a page 993 * try_to_unmap - try to remove all page table mappings to a page
988 * @page: the page to get unmapped 994 * @page: the page to get unmapped
995 * @migration: migration flag
989 * 996 *
990 * Tries to remove all the page table entries which are mapping this 997 * Tries to remove all the page table entries which are mapping this
991 * page, used in the pageout path. Caller must hold the page lock. 998 * page, used in the pageout path. Caller must hold the page lock.
diff --git a/mm/shmem.c b/mm/shmem.c
index 3372bc579e89..f514dd392cd9 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -244,9 +244,8 @@ static void shmem_free_inode(struct super_block *sb)
244 } 244 }
245} 245}
246 246
247/* 247/**
248 * shmem_recalc_inode - recalculate the size of an inode 248 * shmem_recalc_inode - recalculate the size of an inode
249 *
250 * @inode: inode to recalc 249 * @inode: inode to recalc
251 * 250 *
252 * We have to calculate the free blocks since the mm can drop 251 * We have to calculate the free blocks since the mm can drop
@@ -270,9 +269,8 @@ static void shmem_recalc_inode(struct inode *inode)
270 } 269 }
271} 270}
272 271
273/* 272/**
274 * shmem_swp_entry - find the swap vector position in the info structure 273 * shmem_swp_entry - find the swap vector position in the info structure
275 *
276 * @info: info structure for the inode 274 * @info: info structure for the inode
277 * @index: index of the page to find 275 * @index: index of the page to find
278 * @page: optional page to add to the structure. Has to be preset to 276 * @page: optional page to add to the structure. Has to be preset to
@@ -374,13 +372,13 @@ static void shmem_swp_set(struct shmem_inode_info *info, swp_entry_t *entry, uns
374 } 372 }
375} 373}
376 374
377/* 375/**
378 * shmem_swp_alloc - get the position of the swap entry for the page. 376 * shmem_swp_alloc - get the position of the swap entry for the page.
379 * If it does not exist allocate the entry.
380 *
381 * @info: info structure for the inode 377 * @info: info structure for the inode
382 * @index: index of the page to find 378 * @index: index of the page to find
383 * @sgp: check and recheck i_size? skip allocation? 379 * @sgp: check and recheck i_size? skip allocation?
380 *
381 * If the entry does not exist, allocate it.
384 */ 382 */
385static swp_entry_t *shmem_swp_alloc(struct shmem_inode_info *info, unsigned long index, enum sgp_type sgp) 383static swp_entry_t *shmem_swp_alloc(struct shmem_inode_info *info, unsigned long index, enum sgp_type sgp)
386{ 384{
@@ -440,9 +438,8 @@ static swp_entry_t *shmem_swp_alloc(struct shmem_inode_info *info, unsigned long
440 return entry; 438 return entry;
441} 439}
442 440
443/* 441/**
444 * shmem_free_swp - free some swap entries in a directory 442 * shmem_free_swp - free some swap entries in a directory
445 *
446 * @dir: pointer to the directory 443 * @dir: pointer to the directory
447 * @edir: pointer after last entry of the directory 444 * @edir: pointer after last entry of the directory
448 * @punch_lock: pointer to spinlock when needed for the holepunch case 445 * @punch_lock: pointer to spinlock when needed for the holepunch case
@@ -2022,7 +2019,7 @@ static const struct inode_operations shmem_symlink_inode_operations = {
2022}; 2019};
2023 2020
2024#ifdef CONFIG_TMPFS_POSIX_ACL 2021#ifdef CONFIG_TMPFS_POSIX_ACL
2025/** 2022/*
2026 * Superblocks without xattr inode operations will get security.* xattr 2023 * Superblocks without xattr inode operations will get security.* xattr
2027 * support from the VFS "for free". As soon as we have any other xattrs 2024 * support from the VFS "for free". As soon as we have any other xattrs
2028 * like ACLs, we also need to implement the security.* handlers at 2025 * like ACLs, we also need to implement the security.* handlers at
@@ -2561,12 +2558,11 @@ out4:
2561} 2558}
2562module_init(init_tmpfs) 2559module_init(init_tmpfs)
2563 2560
2564/* 2561/**
2565 * shmem_file_setup - get an unlinked file living in tmpfs 2562 * shmem_file_setup - get an unlinked file living in tmpfs
2566 *
2567 * @name: name for dentry (to be seen in /proc/<pid>/maps 2563 * @name: name for dentry (to be seen in /proc/<pid>/maps
2568 * @size: size to be set for the file 2564 * @size: size to be set for the file
2569 * 2565 * @flags: vm_flags
2570 */ 2566 */
2571struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags) 2567struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags)
2572{ 2568{
@@ -2621,9 +2617,8 @@ put_memory:
2621 return ERR_PTR(error); 2617 return ERR_PTR(error);
2622} 2618}
2623 2619
2624/* 2620/**
2625 * shmem_zero_setup - setup a shared anonymous mapping 2621 * shmem_zero_setup - setup a shared anonymous mapping
2626 *
2627 * @vma: the vma to be mmapped is prepared by do_mmap_pgoff 2622 * @vma: the vma to be mmapped is prepared by do_mmap_pgoff
2628 */ 2623 */
2629int shmem_zero_setup(struct vm_area_struct *vma) 2624int shmem_zero_setup(struct vm_area_struct *vma)
diff --git a/mm/slab.c b/mm/slab.c
index e6c698f55674..bb4070e1079f 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -3624,12 +3624,11 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, gfp_t flags)
3624EXPORT_SYMBOL(kmem_cache_alloc); 3624EXPORT_SYMBOL(kmem_cache_alloc);
3625 3625
3626/** 3626/**
3627 * kmem_ptr_validate - check if an untrusted pointer might 3627 * kmem_ptr_validate - check if an untrusted pointer might be a slab entry.
3628 * be a slab entry.
3629 * @cachep: the cache we're checking against 3628 * @cachep: the cache we're checking against
3630 * @ptr: pointer to validate 3629 * @ptr: pointer to validate
3631 * 3630 *
3632 * This verifies that the untrusted pointer looks sane: 3631 * This verifies that the untrusted pointer looks sane;
3633 * it is _not_ a guarantee that the pointer is actually 3632 * it is _not_ a guarantee that the pointer is actually
3634 * part of the slab cache in question, but it at least 3633 * part of the slab cache in question, but it at least
3635 * validates that the pointer can be dereferenced and 3634 * validates that the pointer can be dereferenced and
diff --git a/mm/slub.c b/mm/slub.c
index 96d63eb3ab17..ca71d5b81e4a 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1536,9 +1536,15 @@ new_slab:
1536 * That is only possible if certain conditions are met that are being 1536 * That is only possible if certain conditions are met that are being
1537 * checked when a slab is created. 1537 * checked when a slab is created.
1538 */ 1538 */
1539 if (!(gfpflags & __GFP_NORETRY) && (s->flags & __PAGE_ALLOC_FALLBACK)) 1539 if (!(gfpflags & __GFP_NORETRY) &&
1540 return kmalloc_large(s->objsize, gfpflags); 1540 (s->flags & __PAGE_ALLOC_FALLBACK)) {
1541 1541 if (gfpflags & __GFP_WAIT)
1542 local_irq_enable();
1543 object = kmalloc_large(s->objsize, gfpflags);
1544 if (gfpflags & __GFP_WAIT)
1545 local_irq_disable();
1546 return object;
1547 }
1542 return NULL; 1548 return NULL;
1543debug: 1549debug:
1544 if (!alloc_debug_processing(s, c->page, object, addr)) 1550 if (!alloc_debug_processing(s, c->page, object, addr))
diff --git a/mm/swap.c b/mm/swap.c
index d4ec59aa5c46..aa1139ccf3a7 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -78,12 +78,11 @@ void put_page(struct page *page)
78EXPORT_SYMBOL(put_page); 78EXPORT_SYMBOL(put_page);
79 79
80/** 80/**
81 * put_pages_list(): release a list of pages 81 * put_pages_list() - release a list of pages
82 * @pages: list of pages threaded on page->lru
82 * 83 *
83 * Release a list of pages which are strung together on page.lru. Currently 84 * Release a list of pages which are strung together on page.lru. Currently
84 * used by read_cache_pages() and related error recovery code. 85 * used by read_cache_pages() and related error recovery code.
85 *
86 * @pages: list of pages threaded on page->lru
87 */ 86 */
88void put_pages_list(struct list_head *pages) 87void put_pages_list(struct list_head *pages)
89{ 88{
diff --git a/mm/swap_state.c b/mm/swap_state.c
index ec42f01a8d02..50757ee3f9f3 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -115,6 +115,7 @@ void __delete_from_swap_cache(struct page *page)
115/** 115/**
116 * add_to_swap - allocate swap space for a page 116 * add_to_swap - allocate swap space for a page
117 * @page: page we want to move to swap 117 * @page: page we want to move to swap
118 * @gfp_mask: memory allocation flags
118 * 119 *
119 * Allocate swap space for the page and add the page to the 120 * Allocate swap space for the page and add the page to the
120 * swap cache. Caller needs to hold the page lock. 121 * swap cache. Caller needs to hold the page lock.
@@ -315,6 +316,7 @@ struct page *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,
315/** 316/**
316 * swapin_readahead - swap in pages in hope we need them soon 317 * swapin_readahead - swap in pages in hope we need them soon
317 * @entry: swap entry of this memory 318 * @entry: swap entry of this memory
319 * @gfp_mask: memory allocation flags
318 * @vma: user vma this address belongs to 320 * @vma: user vma this address belongs to
319 * @addr: target address for mempolicy 321 * @addr: target address for mempolicy
320 * 322 *
diff --git a/mm/tiny-shmem.c b/mm/tiny-shmem.c
index 702083638c16..f0f55875dd6a 100644
--- a/mm/tiny-shmem.c
+++ b/mm/tiny-shmem.c
@@ -39,12 +39,11 @@ static int __init init_tmpfs(void)
39} 39}
40module_init(init_tmpfs) 40module_init(init_tmpfs)
41 41
42/* 42/**
43 * shmem_file_setup - get an unlinked file living in tmpfs 43 * shmem_file_setup - get an unlinked file living in tmpfs
44 *
45 * @name: name for dentry (to be seen in /proc/<pid>/maps 44 * @name: name for dentry (to be seen in /proc/<pid>/maps
46 * @size: size to be set for the file 45 * @size: size to be set for the file
47 * 46 * @flags: vm_flags
48 */ 47 */
49struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags) 48struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags)
50{ 49{
@@ -95,9 +94,8 @@ put_memory:
95 return ERR_PTR(error); 94 return ERR_PTR(error);
96} 95}
97 96
98/* 97/**
99 * shmem_zero_setup - setup a shared anonymous mapping 98 * shmem_zero_setup - setup a shared anonymous mapping
100 *
101 * @vma: the vma to be mmapped is prepared by do_mmap_pgoff 99 * @vma: the vma to be mmapped is prepared by do_mmap_pgoff
102 */ 100 */
103int shmem_zero_setup(struct vm_area_struct *vma) 101int shmem_zero_setup(struct vm_area_struct *vma)
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 950c0be9ca81..ecf91f8034bf 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -757,7 +757,8 @@ finished:
757 * @vma: vma to cover (map full range of vma) 757 * @vma: vma to cover (map full range of vma)
758 * @addr: vmalloc memory 758 * @addr: vmalloc memory
759 * @pgoff: number of pages into addr before first page to map 759 * @pgoff: number of pages into addr before first page to map
760 * @returns: 0 for success, -Exxx on failure 760 *
761 * Returns: 0 for success, -Exxx on failure
761 * 762 *
762 * This function checks that addr is a valid vmalloc'ed area, and 763 * This function checks that addr is a valid vmalloc'ed area, and
763 * that it is big enough to cover the vma. Will return failure if 764 * that it is big enough to cover the vma. Will return failure if
@@ -829,7 +830,8 @@ static int f(pte_t *pte, pgtable_t table, unsigned long addr, void *data)
829/** 830/**
830 * alloc_vm_area - allocate a range of kernel address space 831 * alloc_vm_area - allocate a range of kernel address space
831 * @size: size of the area 832 * @size: size of the area
832 * @returns: NULL on failure, vm_struct on success 833 *
834 * Returns: NULL on failure, vm_struct on success
833 * 835 *
834 * This function reserves a range of kernel address space, and 836 * This function reserves a range of kernel address space, and
835 * allocates pagetables to map that range. No actual mappings 837 * allocates pagetables to map that range. No actual mappings
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 77f04e49a1a0..8fbcefe10c9f 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -382,7 +382,7 @@ static int vlan_dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
382 vlan_dev_info(dev)->cnt_encap_on_xmit++; 382 vlan_dev_info(dev)->cnt_encap_on_xmit++;
383 383
384 pr_debug("%s: proto to encap: 0x%hx\n", 384 pr_debug("%s: proto to encap: 0x%hx\n",
385 __FUNCTION__, htons(veth->h_vlan_proto)); 385 __FUNCTION__, ntohs(veth->h_vlan_proto));
386 /* Construct the second two bytes. This field looks something 386 /* Construct the second two bytes. This field looks something
387 * like: 387 * like:
388 * usr_priority: 3 bits (high bits) 388 * usr_priority: 3 bits (high bits)
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c
index bc40377136a2..9326c377822e 100644
--- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c
@@ -136,7 +136,7 @@ void br_fdb_cleanup(unsigned long _data)
136 this_timer = f->ageing_timer + delay; 136 this_timer = f->ageing_timer + delay;
137 if (time_before_eq(this_timer, jiffies)) 137 if (time_before_eq(this_timer, jiffies))
138 fdb_delete(f); 138 fdb_delete(f);
139 else if (this_timer < next_timer) 139 else if (time_before(this_timer, next_timer))
140 next_timer = this_timer; 140 next_timer = this_timer;
141 } 141 }
142 } 142 }
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index 4b7e756181c9..c635de52526c 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -215,10 +215,12 @@ static void zap_completion_queue(void)
215 while (clist != NULL) { 215 while (clist != NULL) {
216 struct sk_buff *skb = clist; 216 struct sk_buff *skb = clist;
217 clist = clist->next; 217 clist = clist->next;
218 if (skb->destructor) 218 if (skb->destructor) {
219 atomic_inc(&skb->users);
219 dev_kfree_skb_any(skb); /* put this one back */ 220 dev_kfree_skb_any(skb); /* put this one back */
220 else 221 } else {
221 __kfree_skb(skb); 222 __kfree_skb(skb);
223 }
222 } 224 }
223 } 225 }
224 226
diff --git a/net/core/sock.c b/net/core/sock.c
index 09cb3a74de7f..2654c147c004 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1621,7 +1621,7 @@ static void sock_def_readable(struct sock *sk, int len)
1621{ 1621{
1622 read_lock(&sk->sk_callback_lock); 1622 read_lock(&sk->sk_callback_lock);
1623 if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) 1623 if (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
1624 wake_up_interruptible(sk->sk_sleep); 1624 wake_up_interruptible_sync(sk->sk_sleep);
1625 sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN); 1625 sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN);
1626 read_unlock(&sk->sk_callback_lock); 1626 read_unlock(&sk->sk_callback_lock);
1627} 1627}
@@ -1635,7 +1635,7 @@ static void sock_def_write_space(struct sock *sk)
1635 */ 1635 */
1636 if ((atomic_read(&sk->sk_wmem_alloc) << 1) <= sk->sk_sndbuf) { 1636 if ((atomic_read(&sk->sk_wmem_alloc) << 1) <= sk->sk_sndbuf) {
1637 if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) 1637 if (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
1638 wake_up_interruptible(sk->sk_sleep); 1638 wake_up_interruptible_sync(sk->sk_sleep);
1639 1639
1640 /* Should agree with poll, otherwise some programs break */ 1640 /* Should agree with poll, otherwise some programs break */
1641 if (sock_writeable(sk)) 1641 if (sock_writeable(sk))
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 09ca5293d08f..0d109504ed86 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -458,7 +458,7 @@ int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
458 err = -EADDRNOTAVAIL; 458 err = -EADDRNOTAVAIL;
459 if (!sysctl_ip_nonlocal_bind && 459 if (!sysctl_ip_nonlocal_bind &&
460 !inet->freebind && 460 !inet->freebind &&
461 addr->sin_addr.s_addr != INADDR_ANY && 461 addr->sin_addr.s_addr != htonl(INADDR_ANY) &&
462 chk_addr_ret != RTN_LOCAL && 462 chk_addr_ret != RTN_LOCAL &&
463 chk_addr_ret != RTN_MULTICAST && 463 chk_addr_ret != RTN_MULTICAST &&
464 chk_addr_ret != RTN_BROADCAST) 464 chk_addr_ret != RTN_BROADCAST)
diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c
index 091e6709f831..f3ceca31aa45 100644
--- a/net/ipv4/esp4.c
+++ b/net/ipv4/esp4.c
@@ -168,7 +168,7 @@ static int esp_output(struct xfrm_state *x, struct sk_buff *skb)
168 struct xfrm_encap_tmpl *encap = x->encap; 168 struct xfrm_encap_tmpl *encap = x->encap;
169 struct udphdr *uh; 169 struct udphdr *uh;
170 __be32 *udpdata32; 170 __be32 *udpdata32;
171 unsigned int sport, dport; 171 __be16 sport, dport;
172 int encap_type; 172 int encap_type;
173 173
174 spin_lock_bh(&x->lock); 174 spin_lock_bh(&x->lock);
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index de0572c88859..f72457b4b0a7 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -583,7 +583,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
583 } 583 }
584 584
585 if (!mreq.imr_ifindex) { 585 if (!mreq.imr_ifindex) {
586 if (mreq.imr_address.s_addr == INADDR_ANY) { 586 if (mreq.imr_address.s_addr == htonl(INADDR_ANY)) {
587 inet->mc_index = 0; 587 inet->mc_index = 0;
588 inet->mc_addr = 0; 588 inet->mc_addr = 0;
589 err = 0; 589 err = 0;
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index 5dd938579eeb..7c992fbbc2c3 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -103,6 +103,7 @@
103 - '3' from resolv.h */ 103 - '3' from resolv.h */
104 104
105#define NONE __constant_htonl(INADDR_NONE) 105#define NONE __constant_htonl(INADDR_NONE)
106#define ANY __constant_htonl(INADDR_ANY)
106 107
107/* 108/*
108 * Public IP configuration 109 * Public IP configuration
@@ -1479,19 +1480,19 @@ static int __init ip_auto_config_setup(char *addrs)
1479 DBG(("IP-Config: Parameter #%d: `%s'\n", num, ip)); 1480 DBG(("IP-Config: Parameter #%d: `%s'\n", num, ip));
1480 switch (num) { 1481 switch (num) {
1481 case 0: 1482 case 0:
1482 if ((ic_myaddr = in_aton(ip)) == INADDR_ANY) 1483 if ((ic_myaddr = in_aton(ip)) == ANY)
1483 ic_myaddr = NONE; 1484 ic_myaddr = NONE;
1484 break; 1485 break;
1485 case 1: 1486 case 1:
1486 if ((ic_servaddr = in_aton(ip)) == INADDR_ANY) 1487 if ((ic_servaddr = in_aton(ip)) == ANY)
1487 ic_servaddr = NONE; 1488 ic_servaddr = NONE;
1488 break; 1489 break;
1489 case 2: 1490 case 2:
1490 if ((ic_gateway = in_aton(ip)) == INADDR_ANY) 1491 if ((ic_gateway = in_aton(ip)) == ANY)
1491 ic_gateway = NONE; 1492 ic_gateway = NONE;
1492 break; 1493 break;
1493 case 3: 1494 case 3:
1494 if ((ic_netmask = in_aton(ip)) == INADDR_ANY) 1495 if ((ic_netmask = in_aton(ip)) == ANY)
1495 ic_netmask = NONE; 1496 ic_netmask = NONE;
1496 break; 1497 break;
1497 case 4: 1498 case 4:
diff --git a/net/ipv4/netfilter/ipt_recent.c b/net/ipv4/netfilter/ipt_recent.c
index 68cbe3ca01ce..8e8f0425a8ed 100644
--- a/net/ipv4/netfilter/ipt_recent.c
+++ b/net/ipv4/netfilter/ipt_recent.c
@@ -252,6 +252,8 @@ recent_mt_check(const char *tablename, const void *ip,
252 if ((info->check_set & (IPT_RECENT_SET | IPT_RECENT_REMOVE)) && 252 if ((info->check_set & (IPT_RECENT_SET | IPT_RECENT_REMOVE)) &&
253 (info->seconds || info->hit_count)) 253 (info->seconds || info->hit_count))
254 return false; 254 return false;
255 if (info->hit_count > ip_pkt_list_tot)
256 return false;
255 if (info->name[0] == '\0' || 257 if (info->name[0] == '\0' ||
256 strnlen(info->name, IPT_RECENT_NAME_LEN) == IPT_RECENT_NAME_LEN) 258 strnlen(info->name, IPT_RECENT_NAME_LEN) == IPT_RECENT_NAME_LEN)
257 return false; 259 return false;
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 01578f544ad6..72b9350006fe 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -255,7 +255,7 @@ static u16 tcp_select_window(struct sock *sk)
255 * 255 *
256 * Relax Will Robinson. 256 * Relax Will Robinson.
257 */ 257 */
258 new_win = cur_win; 258 new_win = ALIGN(cur_win, 1 << tp->rx_opt.rcv_wscale);
259 } 259 }
260 tp->rcv_wnd = new_win; 260 tp->rcv_wnd = new_win;
261 tp->rcv_wup = tp->rcv_nxt; 261 tp->rcv_wup = tp->rcv_nxt;
diff --git a/net/ipv6/Kconfig b/net/ipv6/Kconfig
index 58219dfffef8..47263e45bacb 100644
--- a/net/ipv6/Kconfig
+++ b/net/ipv6/Kconfig
@@ -179,11 +179,12 @@ config IPV6_SIT
179 Saying M here will produce a module called sit.ko. If unsure, say Y. 179 Saying M here will produce a module called sit.ko. If unsure, say Y.
180 180
181config IPV6_TUNNEL 181config IPV6_TUNNEL
182 tristate "IPv6: IPv6-in-IPv6 tunnel" 182 tristate "IPv6: IP-in-IPv6 tunnel (RFC2473)"
183 select INET6_TUNNEL 183 select INET6_TUNNEL
184 depends on IPV6 184 depends on IPV6
185 ---help--- 185 ---help---
186 Support for IPv6-in-IPv6 tunnels described in RFC 2473. 186 Support for IPv6-in-IPv6 and IPv4-in-IPv6 tunnels described in
187 RFC 2473.
187 188
188 If unsure, say N. 189 If unsure, say N.
189 190
diff --git a/net/netfilter/nf_conntrack_h323_main.c b/net/netfilter/nf_conntrack_h323_main.c
index 62137879e6aa..898f1922b5b8 100644
--- a/net/netfilter/nf_conntrack_h323_main.c
+++ b/net/netfilter/nf_conntrack_h323_main.c
@@ -842,7 +842,7 @@ static int process_setup(struct sk_buff *skb, struct nf_conn *ct,
842 842
843 set_h225_addr = rcu_dereference(set_h225_addr_hook); 843 set_h225_addr = rcu_dereference(set_h225_addr_hook);
844 if ((setup->options & eSetup_UUIE_destCallSignalAddress) && 844 if ((setup->options & eSetup_UUIE_destCallSignalAddress) &&
845 (set_h225_addr) && ct->status && IPS_NAT_MASK && 845 (set_h225_addr) && ct->status & IPS_NAT_MASK &&
846 get_h225_addr(ct, *data, &setup->destCallSignalAddress, 846 get_h225_addr(ct, *data, &setup->destCallSignalAddress,
847 &addr, &port) && 847 &addr, &port) &&
848 memcmp(&addr, &ct->tuplehash[!dir].tuple.src.u3, sizeof(addr))) { 848 memcmp(&addr, &ct->tuplehash[!dir].tuple.src.u3, sizeof(addr))) {
diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c
index b18fa95ef248..c5c16b4b6e98 100644
--- a/net/sched/cls_u32.c
+++ b/net/sched/cls_u32.c
@@ -89,7 +89,7 @@ static const struct tcf_ext_map u32_ext_map = {
89 89
90static struct tc_u_common *u32_list; 90static struct tc_u_common *u32_list;
91 91
92static __inline__ unsigned u32_hash_fold(u32 key, struct tc_u32_sel *sel, u8 fshift) 92static __inline__ unsigned u32_hash_fold(__be32 key, struct tc_u32_sel *sel, u8 fshift)
93{ 93{
94 unsigned h = ntohl(key & sel->hmask)>>fshift; 94 unsigned h = ntohl(key & sel->hmask)>>fshift;
95 95
@@ -137,7 +137,7 @@ next_knode:
137 137
138 for (i = n->sel.nkeys; i>0; i--, key++) { 138 for (i = n->sel.nkeys; i>0; i--, key++) {
139 139
140 if ((*(u32*)(ptr+key->off+(off2&key->offmask))^key->val)&key->mask) { 140 if ((*(__be32*)(ptr+key->off+(off2&key->offmask))^key->val)&key->mask) {
141 n = n->next; 141 n = n->next;
142 goto next_knode; 142 goto next_knode;
143 } 143 }
@@ -182,7 +182,7 @@ check_terminal:
182 ht = n->ht_down; 182 ht = n->ht_down;
183 sel = 0; 183 sel = 0;
184 if (ht->divisor) 184 if (ht->divisor)
185 sel = ht->divisor&u32_hash_fold(*(u32*)(ptr+n->sel.hoff), &n->sel,n->fshift); 185 sel = ht->divisor&u32_hash_fold(*(__be32*)(ptr+n->sel.hoff), &n->sel,n->fshift);
186 186
187 if (!(n->sel.flags&(TC_U32_VAROFFSET|TC_U32_OFFSET|TC_U32_EAT))) 187 if (!(n->sel.flags&(TC_U32_VAROFFSET|TC_U32_OFFSET|TC_U32_EAT)))
188 goto next_ht; 188 goto next_ht;
@@ -190,7 +190,7 @@ check_terminal:
190 if (n->sel.flags&(TC_U32_OFFSET|TC_U32_VAROFFSET)) { 190 if (n->sel.flags&(TC_U32_OFFSET|TC_U32_VAROFFSET)) {
191 off2 = n->sel.off + 3; 191 off2 = n->sel.off + 3;
192 if (n->sel.flags&TC_U32_VAROFFSET) 192 if (n->sel.flags&TC_U32_VAROFFSET)
193 off2 += ntohs(n->sel.offmask & *(u16*)(ptr+n->sel.offoff)) >>n->sel.offshift; 193 off2 += ntohs(n->sel.offmask & *(__be16*)(ptr+n->sel.offoff)) >>n->sel.offshift;
194 off2 &= ~3; 194 off2 &= ~3;
195 } 195 }
196 if (n->sel.flags&TC_U32_EAT) { 196 if (n->sel.flags&TC_U32_EAT) {
diff --git a/net/sched/em_u32.c b/net/sched/em_u32.c
index 112796e4a7c4..953f1479f7da 100644
--- a/net/sched/em_u32.c
+++ b/net/sched/em_u32.c
@@ -35,7 +35,7 @@ static int em_u32_match(struct sk_buff *skb, struct tcf_ematch *em,
35 if (!tcf_valid_offset(skb, ptr, sizeof(u32))) 35 if (!tcf_valid_offset(skb, ptr, sizeof(u32)))
36 return 0; 36 return 0;
37 37
38 return !(((*(u32*) ptr) ^ key->val) & key->mask); 38 return !(((*(__be32*) ptr) ^ key->val) & key->mask);
39} 39}
40 40
41static struct tcf_ematch_ops em_u32_ops = { 41static struct tcf_ematch_ops em_u32_ops = {
diff --git a/net/sctp/input.c b/net/sctp/input.c
index 57fe2f81eca8..812ff1756c3e 100644
--- a/net/sctp/input.c
+++ b/net/sctp/input.c
@@ -944,7 +944,7 @@ static struct sctp_association *__sctp_rcv_init_lookup(struct sk_buff *skb,
944static struct sctp_association *__sctp_rcv_asconf_lookup( 944static struct sctp_association *__sctp_rcv_asconf_lookup(
945 sctp_chunkhdr_t *ch, 945 sctp_chunkhdr_t *ch,
946 const union sctp_addr *laddr, 946 const union sctp_addr *laddr,
947 __be32 peer_port, 947 __be16 peer_port,
948 struct sctp_transport **transportp) 948 struct sctp_transport **transportp)
949{ 949{
950 sctp_addip_chunk_t *asconf = (struct sctp_addip_chunk *)ch; 950 sctp_addip_chunk_t *asconf = (struct sctp_addip_chunk *)ch;
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
index 9aa0733aee87..b1e05d719f9b 100644
--- a/net/sctp/ipv6.c
+++ b/net/sctp/ipv6.c
@@ -1014,15 +1014,24 @@ static struct sctp_pf sctp_pf_inet6 = {
1014}; 1014};
1015 1015
1016/* Initialize IPv6 support and register with socket layer. */ 1016/* Initialize IPv6 support and register with socket layer. */
1017int sctp_v6_init(void) 1017void sctp_v6_pf_init(void)
1018{ 1018{
1019 int rc;
1020
1021 /* Register the SCTP specific PF_INET6 functions. */ 1019 /* Register the SCTP specific PF_INET6 functions. */
1022 sctp_register_pf(&sctp_pf_inet6, PF_INET6); 1020 sctp_register_pf(&sctp_pf_inet6, PF_INET6);
1023 1021
1024 /* Register the SCTP specific AF_INET6 functions. */ 1022 /* Register the SCTP specific AF_INET6 functions. */
1025 sctp_register_af(&sctp_af_inet6); 1023 sctp_register_af(&sctp_af_inet6);
1024}
1025
1026void sctp_v6_pf_exit(void)
1027{
1028 list_del(&sctp_af_inet6.list);
1029}
1030
1031/* Initialize IPv6 support and register with socket layer. */
1032int sctp_v6_protosw_init(void)
1033{
1034 int rc;
1026 1035
1027 rc = proto_register(&sctpv6_prot, 1); 1036 rc = proto_register(&sctpv6_prot, 1);
1028 if (rc) 1037 if (rc)
@@ -1035,6 +1044,14 @@ int sctp_v6_init(void)
1035 return 0; 1044 return 0;
1036} 1045}
1037 1046
1047void sctp_v6_protosw_exit(void)
1048{
1049 inet6_unregister_protosw(&sctpv6_seqpacket_protosw);
1050 inet6_unregister_protosw(&sctpv6_stream_protosw);
1051 proto_unregister(&sctpv6_prot);
1052}
1053
1054
1038/* Register with inet6 layer. */ 1055/* Register with inet6 layer. */
1039int sctp_v6_add_protocol(void) 1056int sctp_v6_add_protocol(void)
1040{ 1057{
@@ -1047,15 +1064,6 @@ int sctp_v6_add_protocol(void)
1047 return 0; 1064 return 0;
1048} 1065}
1049 1066
1050/* IPv6 specific exit support. */
1051void sctp_v6_exit(void)
1052{
1053 inet6_unregister_protosw(&sctpv6_seqpacket_protosw);
1054 inet6_unregister_protosw(&sctpv6_stream_protosw);
1055 proto_unregister(&sctpv6_prot);
1056 list_del(&sctp_af_inet6.list);
1057}
1058
1059/* Unregister with inet6 layer. */ 1067/* Unregister with inet6 layer. */
1060void sctp_v6_del_protocol(void) 1068void sctp_v6_del_protocol(void)
1061{ 1069{
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index ad0a4069b95b..f90091a1b9ce 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -337,14 +337,14 @@ static int sctp_v4_cmp_addr(const union sctp_addr *addr1,
337static void sctp_v4_inaddr_any(union sctp_addr *addr, __be16 port) 337static void sctp_v4_inaddr_any(union sctp_addr *addr, __be16 port)
338{ 338{
339 addr->v4.sin_family = AF_INET; 339 addr->v4.sin_family = AF_INET;
340 addr->v4.sin_addr.s_addr = INADDR_ANY; 340 addr->v4.sin_addr.s_addr = htonl(INADDR_ANY);
341 addr->v4.sin_port = port; 341 addr->v4.sin_port = port;
342} 342}
343 343
344/* Is this a wildcard address? */ 344/* Is this a wildcard address? */
345static int sctp_v4_is_any(const union sctp_addr *addr) 345static int sctp_v4_is_any(const union sctp_addr *addr)
346{ 346{
347 return INADDR_ANY == addr->v4.sin_addr.s_addr; 347 return htonl(INADDR_ANY) == addr->v4.sin_addr.s_addr;
348} 348}
349 349
350/* This function checks if the address is a valid address to be used for 350/* This function checks if the address is a valid address to be used for
@@ -375,7 +375,7 @@ static int sctp_v4_available(union sctp_addr *addr, struct sctp_sock *sp)
375 int ret = inet_addr_type(&init_net, addr->v4.sin_addr.s_addr); 375 int ret = inet_addr_type(&init_net, addr->v4.sin_addr.s_addr);
376 376
377 377
378 if (addr->v4.sin_addr.s_addr != INADDR_ANY && 378 if (addr->v4.sin_addr.s_addr != htonl(INADDR_ANY) &&
379 ret != RTN_LOCAL && 379 ret != RTN_LOCAL &&
380 !sp->inet.freebind && 380 !sp->inet.freebind &&
381 !sysctl_ip_nonlocal_bind) 381 !sysctl_ip_nonlocal_bind)
@@ -785,8 +785,8 @@ static int sctp_inet_cmp_addr(const union sctp_addr *addr1,
785 /* PF_INET only supports AF_INET addresses. */ 785 /* PF_INET only supports AF_INET addresses. */
786 if (addr1->sa.sa_family != addr2->sa.sa_family) 786 if (addr1->sa.sa_family != addr2->sa.sa_family)
787 return 0; 787 return 0;
788 if (INADDR_ANY == addr1->v4.sin_addr.s_addr || 788 if (htonl(INADDR_ANY) == addr1->v4.sin_addr.s_addr ||
789 INADDR_ANY == addr2->v4.sin_addr.s_addr) 789 htonl(INADDR_ANY) == addr2->v4.sin_addr.s_addr)
790 return 1; 790 return 1;
791 if (addr1->v4.sin_addr.s_addr == addr2->v4.sin_addr.s_addr) 791 if (addr1->v4.sin_addr.s_addr == addr2->v4.sin_addr.s_addr)
792 return 1; 792 return 1;
@@ -992,6 +992,58 @@ static void cleanup_sctp_mibs(void)
992 free_percpu(sctp_statistics[1]); 992 free_percpu(sctp_statistics[1]);
993} 993}
994 994
995static void sctp_v4_pf_init(void)
996{
997 /* Initialize the SCTP specific PF functions. */
998 sctp_register_pf(&sctp_pf_inet, PF_INET);
999 sctp_register_af(&sctp_af_inet);
1000}
1001
1002static void sctp_v4_pf_exit(void)
1003{
1004 list_del(&sctp_af_inet.list);
1005}
1006
1007static int sctp_v4_protosw_init(void)
1008{
1009 int rc;
1010
1011 rc = proto_register(&sctp_prot, 1);
1012 if (rc)
1013 return rc;
1014
1015 /* Register SCTP(UDP and TCP style) with socket layer. */
1016 inet_register_protosw(&sctp_seqpacket_protosw);
1017 inet_register_protosw(&sctp_stream_protosw);
1018
1019 return 0;
1020}
1021
1022static void sctp_v4_protosw_exit(void)
1023{
1024 inet_unregister_protosw(&sctp_stream_protosw);
1025 inet_unregister_protosw(&sctp_seqpacket_protosw);
1026 proto_unregister(&sctp_prot);
1027}
1028
1029static int sctp_v4_add_protocol(void)
1030{
1031 /* Register notifier for inet address additions/deletions. */
1032 register_inetaddr_notifier(&sctp_inetaddr_notifier);
1033
1034 /* Register SCTP with inet layer. */
1035 if (inet_add_protocol(&sctp_protocol, IPPROTO_SCTP) < 0)
1036 return -EAGAIN;
1037
1038 return 0;
1039}
1040
1041static void sctp_v4_del_protocol(void)
1042{
1043 inet_del_protocol(&sctp_protocol, IPPROTO_SCTP);
1044 unregister_inetaddr_notifier(&sctp_inetaddr_notifier);
1045}
1046
995/* Initialize the universe into something sensible. */ 1047/* Initialize the universe into something sensible. */
996SCTP_STATIC __init int sctp_init(void) 1048SCTP_STATIC __init int sctp_init(void)
997{ 1049{
@@ -1035,8 +1087,6 @@ SCTP_STATIC __init int sctp_init(void)
1035 /* Initialize object count debugging. */ 1087 /* Initialize object count debugging. */
1036 sctp_dbg_objcnt_init(); 1088 sctp_dbg_objcnt_init();
1037 1089
1038 /* Initialize the SCTP specific PF functions. */
1039 sctp_register_pf(&sctp_pf_inet, PF_INET);
1040 /* 1090 /*
1041 * 14. Suggested SCTP Protocol Parameter Values 1091 * 14. Suggested SCTP Protocol Parameter Values
1042 */ 1092 */
@@ -1194,19 +1244,22 @@ SCTP_STATIC __init int sctp_init(void)
1194 sctp_sysctl_register(); 1244 sctp_sysctl_register();
1195 1245
1196 INIT_LIST_HEAD(&sctp_address_families); 1246 INIT_LIST_HEAD(&sctp_address_families);
1197 sctp_register_af(&sctp_af_inet); 1247 sctp_v4_pf_init();
1248 sctp_v6_pf_init();
1198 1249
1199 status = proto_register(&sctp_prot, 1); 1250 /* Initialize the local address list. */
1200 if (status) 1251 INIT_LIST_HEAD(&sctp_local_addr_list);
1201 goto err_proto_register; 1252 spin_lock_init(&sctp_local_addr_lock);
1253 sctp_get_local_addr_list();
1202 1254
1203 /* Register SCTP(UDP and TCP style) with socket layer. */ 1255 status = sctp_v4_protosw_init();
1204 inet_register_protosw(&sctp_seqpacket_protosw);
1205 inet_register_protosw(&sctp_stream_protosw);
1206 1256
1207 status = sctp_v6_init();
1208 if (status) 1257 if (status)
1209 goto err_v6_init; 1258 goto err_protosw_init;
1259
1260 status = sctp_v6_protosw_init();
1261 if (status)
1262 goto err_v6_protosw_init;
1210 1263
1211 /* Initialize the control inode/socket for handling OOTB packets. */ 1264 /* Initialize the control inode/socket for handling OOTB packets. */
1212 if ((status = sctp_ctl_sock_init())) { 1265 if ((status = sctp_ctl_sock_init())) {
@@ -1215,19 +1268,9 @@ SCTP_STATIC __init int sctp_init(void)
1215 goto err_ctl_sock_init; 1268 goto err_ctl_sock_init;
1216 } 1269 }
1217 1270
1218 /* Initialize the local address list. */ 1271 status = sctp_v4_add_protocol();
1219 INIT_LIST_HEAD(&sctp_local_addr_list); 1272 if (status)
1220 spin_lock_init(&sctp_local_addr_lock);
1221 sctp_get_local_addr_list();
1222
1223 /* Register notifier for inet address additions/deletions. */
1224 register_inetaddr_notifier(&sctp_inetaddr_notifier);
1225
1226 /* Register SCTP with inet layer. */
1227 if (inet_add_protocol(&sctp_protocol, IPPROTO_SCTP) < 0) {
1228 status = -EAGAIN;
1229 goto err_add_protocol; 1273 goto err_add_protocol;
1230 }
1231 1274
1232 /* Register SCTP with inet6 layer. */ 1275 /* Register SCTP with inet6 layer. */
1233 status = sctp_v6_add_protocol(); 1276 status = sctp_v6_add_protocol();
@@ -1238,18 +1281,18 @@ SCTP_STATIC __init int sctp_init(void)
1238out: 1281out:
1239 return status; 1282 return status;
1240err_v6_add_protocol: 1283err_v6_add_protocol:
1241 inet_del_protocol(&sctp_protocol, IPPROTO_SCTP); 1284 sctp_v6_del_protocol();
1242 unregister_inetaddr_notifier(&sctp_inetaddr_notifier);
1243err_add_protocol: 1285err_add_protocol:
1244 sctp_free_local_addr_list(); 1286 sctp_v4_del_protocol();
1245 sock_release(sctp_ctl_socket); 1287 sock_release(sctp_ctl_socket);
1246err_ctl_sock_init: 1288err_ctl_sock_init:
1247 sctp_v6_exit(); 1289 sctp_v6_protosw_exit();
1248err_v6_init: 1290err_v6_protosw_init:
1249 inet_unregister_protosw(&sctp_stream_protosw); 1291 sctp_v4_protosw_exit();
1250 inet_unregister_protosw(&sctp_seqpacket_protosw); 1292err_protosw_init:
1251 proto_unregister(&sctp_prot); 1293 sctp_free_local_addr_list();
1252err_proto_register: 1294 sctp_v4_pf_exit();
1295 sctp_v6_pf_exit();
1253 sctp_sysctl_unregister(); 1296 sctp_sysctl_unregister();
1254 list_del(&sctp_af_inet.list); 1297 list_del(&sctp_af_inet.list);
1255 free_pages((unsigned long)sctp_port_hashtable, 1298 free_pages((unsigned long)sctp_port_hashtable,
@@ -1282,23 +1325,21 @@ SCTP_STATIC __exit void sctp_exit(void)
1282 1325
1283 /* Unregister with inet6/inet layers. */ 1326 /* Unregister with inet6/inet layers. */
1284 sctp_v6_del_protocol(); 1327 sctp_v6_del_protocol();
1285 inet_del_protocol(&sctp_protocol, IPPROTO_SCTP); 1328 sctp_v4_del_protocol();
1286
1287 /* Unregister notifier for inet address additions/deletions. */
1288 unregister_inetaddr_notifier(&sctp_inetaddr_notifier);
1289
1290 /* Free the local address list. */
1291 sctp_free_local_addr_list();
1292 1329
1293 /* Free the control endpoint. */ 1330 /* Free the control endpoint. */
1294 sock_release(sctp_ctl_socket); 1331 sock_release(sctp_ctl_socket);
1295 1332
1296 /* Cleanup v6 initializations. */ 1333 /* Free protosw registrations */
1297 sctp_v6_exit(); 1334 sctp_v6_protosw_exit();
1335 sctp_v4_protosw_exit();
1336
1337 /* Free the local address list. */
1338 sctp_free_local_addr_list();
1298 1339
1299 /* Unregister with socket layer. */ 1340 /* Unregister with socket layer. */
1300 inet_unregister_protosw(&sctp_stream_protosw); 1341 sctp_v6_pf_exit();
1301 inet_unregister_protosw(&sctp_seqpacket_protosw); 1342 sctp_v4_pf_exit();
1302 1343
1303 sctp_sysctl_unregister(); 1344 sctp_sysctl_unregister();
1304 list_del(&sctp_af_inet.list); 1345 list_del(&sctp_af_inet.list);
@@ -1317,8 +1358,6 @@ SCTP_STATIC __exit void sctp_exit(void)
1317 1358
1318 kmem_cache_destroy(sctp_chunk_cachep); 1359 kmem_cache_destroy(sctp_chunk_cachep);
1319 kmem_cache_destroy(sctp_bucket_cachep); 1360 kmem_cache_destroy(sctp_bucket_cachep);
1320
1321 proto_unregister(&sctp_prot);
1322} 1361}
1323 1362
1324module_init(sctp_init); 1363module_init(sctp_init);
diff --git a/net/sunrpc/auth_gss/gss_mech_switch.c b/net/sunrpc/auth_gss/gss_mech_switch.c
index 61801a069ff0..bce9d527af08 100644
--- a/net/sunrpc/auth_gss/gss_mech_switch.c
+++ b/net/sunrpc/auth_gss/gss_mech_switch.c
@@ -317,7 +317,7 @@ gss_delete_sec_context(struct gss_ctx **context_handle)
317 317
318 if (!*context_handle) 318 if (!*context_handle)
319 return(GSS_S_NO_CONTEXT); 319 return(GSS_S_NO_CONTEXT);
320 if ((*context_handle)->internal_ctx_id != 0) 320 if ((*context_handle)->internal_ctx_id)
321 (*context_handle)->mech_type->gm_ops 321 (*context_handle)->mech_type->gm_ops
322 ->gss_delete_sec_context((*context_handle) 322 ->gss_delete_sec_context((*context_handle)
323 ->internal_ctx_id); 323 ->internal_ctx_id);
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
index ea377e06afae..332eb47539e1 100644
--- a/net/sunrpc/svc_xprt.c
+++ b/net/sunrpc/svc_xprt.c
@@ -185,7 +185,7 @@ int svc_create_xprt(struct svc_serv *serv, char *xprt_name, unsigned short port,
185 struct svc_xprt_class *xcl; 185 struct svc_xprt_class *xcl;
186 struct sockaddr_in sin = { 186 struct sockaddr_in sin = {
187 .sin_family = AF_INET, 187 .sin_family = AF_INET,
188 .sin_addr.s_addr = INADDR_ANY, 188 .sin_addr.s_addr = htonl(INADDR_ANY),
189 .sin_port = htons(port), 189 .sin_port = htons(port),
190 }; 190 };
191 dprintk("svc: creating transport %s[%d]\n", xprt_name, port); 191 dprintk("svc: creating transport %s[%d]\n", xprt_name, port);
diff --git a/security/capability.c b/security/capability.c
index 9e99f36a8b5c..2c6e06d18fab 100644
--- a/security/capability.c
+++ b/security/capability.c
@@ -40,7 +40,6 @@ static struct security_operations capability_ops = {
40 .inode_need_killpriv = cap_inode_need_killpriv, 40 .inode_need_killpriv = cap_inode_need_killpriv,
41 .inode_killpriv = cap_inode_killpriv, 41 .inode_killpriv = cap_inode_killpriv,
42 42
43 .task_kill = cap_task_kill,
44 .task_setscheduler = cap_task_setscheduler, 43 .task_setscheduler = cap_task_setscheduler,
45 .task_setioprio = cap_task_setioprio, 44 .task_setioprio = cap_task_setioprio,
46 .task_setnice = cap_task_setnice, 45 .task_setnice = cap_task_setnice,
diff --git a/security/commoncap.c b/security/commoncap.c
index bb0c095f5761..06d5c9469ba3 100644
--- a/security/commoncap.c
+++ b/security/commoncap.c
@@ -540,41 +540,6 @@ int cap_task_setnice (struct task_struct *p, int nice)
540 return cap_safe_nice(p); 540 return cap_safe_nice(p);
541} 541}
542 542
543int cap_task_kill(struct task_struct *p, struct siginfo *info,
544 int sig, u32 secid)
545{
546 if (info != SEND_SIG_NOINFO && (is_si_special(info) || SI_FROMKERNEL(info)))
547 return 0;
548
549 /*
550 * Running a setuid root program raises your capabilities.
551 * Killing your own setuid root processes was previously
552 * allowed.
553 * We must preserve legacy signal behavior in this case.
554 */
555 if (p->uid == current->uid)
556 return 0;
557
558 /* sigcont is permitted within same session */
559 if (sig == SIGCONT && (task_session_nr(current) == task_session_nr(p)))
560 return 0;
561
562 if (secid)
563 /*
564 * Signal sent as a particular user.
565 * Capabilities are ignored. May be wrong, but it's the
566 * only thing we can do at the moment.
567 * Used only by usb drivers?
568 */
569 return 0;
570 if (cap_issubset(p->cap_permitted, current->cap_permitted))
571 return 0;
572 if (capable(CAP_KILL))
573 return 0;
574
575 return -EPERM;
576}
577
578/* 543/*
579 * called from kernel/sys.c for prctl(PR_CABSET_DROP) 544 * called from kernel/sys.c for prctl(PR_CABSET_DROP)
580 * done without task_capability_lock() because it introduces 545 * done without task_capability_lock() because it introduces
@@ -605,11 +570,6 @@ int cap_task_setnice (struct task_struct *p, int nice)
605{ 570{
606 return 0; 571 return 0;
607} 572}
608int cap_task_kill(struct task_struct *p, struct siginfo *info,
609 int sig, u32 secid)
610{
611 return 0;
612}
613#endif 573#endif
614 574
615void cap_task_reparent_to_init (struct task_struct *p) 575void cap_task_reparent_to_init (struct task_struct *p)
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index 4bf4807f2d44..41a049f50f58 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -800,7 +800,8 @@ static void selinux_sb_clone_mnt_opts(const struct super_block *oldsb,
800 mutex_unlock(&newsbsec->lock); 800 mutex_unlock(&newsbsec->lock);
801} 801}
802 802
803int selinux_parse_opts_str(char *options, struct security_mnt_opts *opts) 803static int selinux_parse_opts_str(char *options,
804 struct security_mnt_opts *opts)
804{ 805{
805 char *p; 806 char *p;
806 char *context = NULL, *defcontext = NULL; 807 char *context = NULL, *defcontext = NULL;
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index 0241fd359675..732ba27923c4 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -1117,11 +1117,6 @@ static int smack_task_movememory(struct task_struct *p)
1117static int smack_task_kill(struct task_struct *p, struct siginfo *info, 1117static int smack_task_kill(struct task_struct *p, struct siginfo *info,
1118 int sig, u32 secid) 1118 int sig, u32 secid)
1119{ 1119{
1120 int rc;
1121
1122 rc = cap_task_kill(p, info, sig, secid);
1123 if (rc != 0)
1124 return rc;
1125 /* 1120 /*
1126 * Special cases where signals really ought to go through 1121 * Special cases where signals really ought to go through
1127 * in spite of policy. Stephen Smalley suggests it may 1122 * in spite of policy. Stephen Smalley suggests it may
@@ -1508,7 +1503,7 @@ static int smack_shm_associate(struct shmid_kernel *shp, int shmflg)
1508 */ 1503 */
1509static int smack_shm_shmctl(struct shmid_kernel *shp, int cmd) 1504static int smack_shm_shmctl(struct shmid_kernel *shp, int cmd)
1510{ 1505{
1511 char *ssp = smack_of_shm(shp); 1506 char *ssp;
1512 int may; 1507 int may;
1513 1508
1514 switch (cmd) { 1509 switch (cmd) {
@@ -1532,6 +1527,7 @@ static int smack_shm_shmctl(struct shmid_kernel *shp, int cmd)
1532 return -EINVAL; 1527 return -EINVAL;
1533 } 1528 }
1534 1529
1530 ssp = smack_of_shm(shp);
1535 return smk_curacc(ssp, may); 1531 return smk_curacc(ssp, may);
1536} 1532}
1537 1533
@@ -1616,7 +1612,7 @@ static int smack_sem_associate(struct sem_array *sma, int semflg)
1616 */ 1612 */
1617static int smack_sem_semctl(struct sem_array *sma, int cmd) 1613static int smack_sem_semctl(struct sem_array *sma, int cmd)
1618{ 1614{
1619 char *ssp = smack_of_sem(sma); 1615 char *ssp;
1620 int may; 1616 int may;
1621 1617
1622 switch (cmd) { 1618 switch (cmd) {
@@ -1645,6 +1641,7 @@ static int smack_sem_semctl(struct sem_array *sma, int cmd)
1645 return -EINVAL; 1641 return -EINVAL;
1646 } 1642 }
1647 1643
1644 ssp = smack_of_sem(sma);
1648 return smk_curacc(ssp, may); 1645 return smk_curacc(ssp, may);
1649} 1646}
1650 1647
@@ -1730,7 +1727,7 @@ static int smack_msg_queue_associate(struct msg_queue *msq, int msqflg)
1730 */ 1727 */
1731static int smack_msg_queue_msgctl(struct msg_queue *msq, int cmd) 1728static int smack_msg_queue_msgctl(struct msg_queue *msq, int cmd)
1732{ 1729{
1733 char *msp = smack_of_msq(msq); 1730 char *msp;
1734 int may; 1731 int may;
1735 1732
1736 switch (cmd) { 1733 switch (cmd) {
@@ -1752,6 +1749,7 @@ static int smack_msg_queue_msgctl(struct msg_queue *msq, int cmd)
1752 return -EINVAL; 1749 return -EINVAL;
1753 } 1750 }
1754 1751
1752 msp = smack_of_msq(msq);
1755 return smk_curacc(msp, may); 1753 return smk_curacc(msp, may);
1756} 1754}
1757 1755