aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS31
-rw-r--r--arch/m68k/lib/string.c6
-rw-r--r--arch/powerpc/boot/.gitignore8
-rw-r--r--arch/powerpc/boot/Makefile6
-rw-r--r--arch/powerpc/boot/dts/mpc8377_mds.dts18
-rw-r--r--arch/powerpc/configs/chrp32_defconfig164
-rw-r--r--arch/powerpc/configs/g5_defconfig226
-rw-r--r--arch/powerpc/configs/iseries_defconfig146
-rw-r--r--arch/powerpc/configs/pmac32_defconfig174
-rw-r--r--arch/powerpc/configs/ppc64_defconfig236
-rw-r--r--arch/powerpc/configs/pseries_defconfig224
-rw-r--r--arch/powerpc/mm/hash_low_32.S2
-rw-r--r--arch/sh/drivers/heartbeat.c2
-rw-r--r--arch/um/Kconfig2
-rw-r--r--arch/um/drivers/pcap_user.c2
-rw-r--r--arch/um/kernel/ksyms.c5
-rw-r--r--arch/um/os-Linux/sys-i386/registers.c1
-rw-r--r--arch/um/sys-x86_64/ksyms.c6
-rw-r--r--arch/x86/pci/common.c8
-rw-r--r--drivers/atm/fore200e.h1
-rw-r--r--drivers/atm/fore200e_mkfirm.c2
-rw-r--r--drivers/atm/he.h2
-rw-r--r--drivers/atm/idt77252.c7
-rw-r--r--drivers/atm/idt77252.h4
-rw-r--r--drivers/atm/iphase.h3
-rw-r--r--drivers/atm/nicstarmac.copyright2
-rw-r--r--drivers/base/core.c93
-rw-r--r--drivers/dma/iop-adma.c6
-rw-r--r--drivers/firewire/fw-cdev.c14
-rw-r--r--drivers/hid/hid-debug.c2
-rw-r--r--drivers/hid/hid-input.c7
-rw-r--r--drivers/hid/usbhid/hid-quirks.c49
-rw-r--r--drivers/hid/usbhid/usbkbd.c2
-rw-r--r--drivers/hid/usbhid/usbmouse.c2
-rw-r--r--drivers/ide/ide-probe.c5
-rw-r--r--drivers/ieee1394/sbp2.c20
-rw-r--r--drivers/infiniband/core/user_mad.c14
-rw-r--r--drivers/infiniband/core/uverbs_main.c11
-rw-r--r--drivers/input/keyboard/aaed2000_kbd.c2
-rw-r--r--drivers/input/keyboard/corgikbd.c2
-rw-r--r--drivers/input/keyboard/jornada680_kbd.c2
-rw-r--r--drivers/input/keyboard/jornada720_kbd.c2
-rw-r--r--drivers/input/keyboard/spitzkbd.c2
-rw-r--r--drivers/input/touchscreen/jornada720_ts.c2
-rw-r--r--drivers/isdn/capi/capiutil.c6
-rw-r--r--drivers/isdn/hysdn/Kconfig2
-rw-r--r--drivers/isdn/hysdn/boardergo.c14
-rw-r--r--drivers/leds/led-class.c6
-rw-r--r--drivers/media/video/Kconfig2
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c2
-rw-r--r--drivers/media/video/videobuf-core.c3
-rw-r--r--drivers/mfd/Kconfig2
-rw-r--r--drivers/mmc/host/Kconfig2
-rw-r--r--drivers/net/3c509.c15
-rw-r--r--drivers/net/Kconfig2
-rw-r--r--drivers/net/atlx/atl1.c2
-rw-r--r--drivers/net/bonding/bond_sysfs.c12
-rw-r--r--drivers/net/irda/irda-usb.c2
-rw-r--r--drivers/net/irda/irda-usb.h4
-rw-r--r--drivers/net/pppol2tp.c13
-rw-r--r--drivers/net/usb/catc.c5
-rw-r--r--drivers/net/usb/cdc_subset.c2
-rw-r--r--drivers/net/usb/rndis_host.c4
-rw-r--r--drivers/net/wireless/airo.c3
-rw-r--r--drivers/net/wireless/b43/Kconfig2
-rw-r--r--drivers/net/wireless/b43legacy/Kconfig2
-rw-r--r--drivers/net/wireless/hostap/hostap_hw.c9
-rw-r--r--drivers/net/wireless/ipw2200.c1
-rw-r--r--drivers/net/wireless/libertas/main.c2
-rw-r--r--drivers/net/wireless/zd1211rw/zd_mac.c2
-rw-r--r--drivers/net/wireless/zd1211rw/zd_usb.c2
-rw-r--r--drivers/power/power_supply_core.c6
-rw-r--r--drivers/s390/char/vmlogrdr.c9
-rw-r--r--drivers/sbus/char/bpp.c6
-rw-r--r--drivers/scsi/ch.c7
-rw-r--r--drivers/scsi/mac_esp.c2
-rw-r--r--drivers/scsi/osst.c3
-rw-r--r--drivers/scsi/sg.c11
-rw-r--r--drivers/scsi/st.c12
-rw-r--r--drivers/uio/uio.c7
-rw-r--r--drivers/usb/class/Kconfig11
-rw-r--r--drivers/usb/class/Makefile1
-rw-r--r--drivers/usb/class/cdc-wdm.c740
-rw-r--r--drivers/usb/core/hcd.c6
-rw-r--r--drivers/usb/gadget/pxa27x_udc.c3
-rw-r--r--drivers/usb/host/ehci-orion.c2
-rw-r--r--drivers/usb/misc/phidgetkit.c6
-rw-r--r--drivers/usb/misc/phidgetmotorcontrol.c7
-rw-r--r--drivers/usb/misc/phidgetservo.c6
-rw-r--r--drivers/usb/serial/ch341.c1
-rw-r--r--drivers/usb/serial/ftdi_sio.c1
-rw-r--r--drivers/usb/serial/ftdi_sio.h6
-rw-r--r--drivers/usb/serial/option.c7
-rw-r--r--drivers/usb/serial/pl2303.c1
-rw-r--r--drivers/usb/serial/pl2303.h1
-rw-r--r--drivers/video/display/display-sysfs.c10
-rw-r--r--fs/cifs/AUTHORS1
-rw-r--r--fs/cifs/CHANGES5
-rw-r--r--fs/cifs/README5
-rw-r--r--fs/cifs/TODO15
-rw-r--r--fs/cifs/cifs_dfs_ref.c49
-rw-r--r--fs/cifs/cifs_fs_sb.h1
-rw-r--r--fs/cifs/cifsfs.c44
-rw-r--r--fs/cifs/cifsfs.h3
-rw-r--r--fs/cifs/cifsglob.h1
-rw-r--r--fs/cifs/cifspdu.h25
-rw-r--r--fs/cifs/cifsproto.h13
-rw-r--r--fs/cifs/cifssmb.c315
-rw-r--r--fs/cifs/connect.c68
-rw-r--r--fs/cifs/dir.c30
-rw-r--r--fs/cifs/dns_resolve.c9
-rw-r--r--fs/cifs/file.c6
-rw-r--r--fs/cifs/inode.c503
-rw-r--r--fs/cifs/ioctl.c4
-rw-r--r--fs/cifs/link.c43
-rw-r--r--fs/cifs/netmisc.c6
-rw-r--r--fs/cifs/ntlmssp.h4
-rw-r--r--fs/cifs/readdir.c7
-rw-r--r--fs/ecryptfs/miscdev.c26
-rw-r--r--fs/gfs2/glops.c2
-rw-r--r--fs/gfs2/incore.h1
-rw-r--r--fs/gfs2/inode.c10
-rw-r--r--fs/gfs2/meta_io.c6
-rw-r--r--fs/gfs2/ops_fstype.c4
-rw-r--r--fs/gfs2/ops_super.c16
-rw-r--r--fs/gfs2/rgrp.c2
-rw-r--r--fs/hppfs/Makefile5
-rw-r--r--fs/nfsd/nfs4callback.c2
-rw-r--r--fs/ocfs2/alloc.c4
-rw-r--r--fs/sysfs/dir.c6
-rw-r--r--include/asm-x86/page.h15
-rw-r--r--include/asm-x86/pgtable-3level.h6
-rw-r--r--include/asm-x86/pgtable.h3
-rw-r--r--include/asm-x86/pgtable_32.h4
-rw-r--r--include/asm-x86/pgtable_64.h12
-rw-r--r--include/asm-x86/xen/page.h2
-rw-r--r--include/linux/Kbuild2
-rw-r--r--include/linux/atm.h7
-rw-r--r--include/linux/atm_tcp.h12
-rw-r--r--include/linux/device.h12
-rw-r--r--include/linux/hid.h3
-rw-r--r--include/linux/hiddev.h2
-rw-r--r--include/linux/netdevice.h6
-rw-r--r--include/linux/sunrpc/svc_rdma.h12
-rw-r--r--include/linux/usb/cdc.h9
-rw-r--r--include/media/videobuf-core.h3
-rw-r--r--include/net/mac80211.h25
-rw-r--r--include/net/ndisc.h4
-rw-r--r--lib/lmb.c3
-rw-r--r--mm/backing-dev.c12
-rw-r--r--net/8021q/vlan.c34
-rw-r--r--net/8021q/vlan.h2
-rw-r--r--net/8021q/vlan_dev.c5
-rw-r--r--net/core/dev.c8
-rw-r--r--net/core/pktgen.c4
-rw-r--r--net/ipv4/route.c2
-rw-r--r--net/ipv6/addrconf.c75
-rw-r--r--net/ipv6/ndisc.c8
-rw-r--r--net/ipv6/route.c12
-rw-r--r--net/mac80211/mlme.c14
-rw-r--r--net/mac80211/util.c37
-rw-r--r--net/sched/cls_api.c2
-rw-r--r--net/sunrpc/svc_xprt.c23
-rw-r--r--net/sunrpc/svcauth_unix.c4
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_recvfrom.c102
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_sendto.c11
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_transport.c290
-rw-r--r--sound/core/sound.c8
-rw-r--r--sound/drivers/pcsp/pcsp.c2
-rw-r--r--sound/drivers/pcsp/pcsp_lib.c37
-rw-r--r--sound/oss/Kconfig4
-rw-r--r--sound/pci/hda/patch_realtek.c48
-rw-r--r--sound/usb/caiaq/caiaq-device.c4
173 files changed, 2913 insertions, 1738 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index a0291616a35f..b42dcfcbee44 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -982,13 +982,6 @@ L: bonding-devel@lists.sourceforge.net
982W: http://sourceforge.net/projects/bonding/ 982W: http://sourceforge.net/projects/bonding/
983S: Supported 983S: Supported
984 984
985BROADBAND PROCESSOR ARCHITECTURE
986P: Arnd Bergmann
987M: arnd@arndb.de
988L: linuxppc-dev@ozlabs.org
989W: http://www.penguinppc.org/ppc64/
990S: Supported
991
992BROADCOM B44 10/100 ETHERNET DRIVER 985BROADCOM B44 10/100 ETHERNET DRIVER
993P: Gary Zambrano 986P: Gary Zambrano
994M: zambrano@broadcom.com 987M: zambrano@broadcom.com
@@ -1052,6 +1045,14 @@ L: linux-kernel@vger.kernel.org
1052L: discuss@x86-64.org 1045L: discuss@x86-64.org
1053S: Maintained 1046S: Maintained
1054 1047
1048CELL BROADBAND ENGINE ARCHITECTURE
1049P: Arnd Bergmann
1050M: arnd@arndb.de
1051L: linuxppc-dev@ozlabs.org
1052L: cbe-oss-dev@ozlabs.org
1053W: http://www.ibm.com/developerworks/power/cell/
1054S: Supported
1055
1055CFAG12864B LCD DRIVER 1056CFAG12864B LCD DRIVER
1056P: Miguel Ojeda Sandonis 1057P: Miguel Ojeda Sandonis
1057M: maxextreme@gmail.com 1058M: maxextreme@gmail.com
@@ -1645,8 +1646,10 @@ W: http://linux-fbdev.sourceforge.net/
1645S: Maintained 1646S: Maintained
1646 1647
1647FREESCALE DMA DRIVER 1648FREESCALE DMA DRIVER
1648P; Zhang Wei 1649P: Li Yang
1649M: wei.zhang@freescale.com 1650M: leoli@freescale.com
1651P: Zhang Wei
1652M: zw@zh-kernel.org
1650L: linuxppc-embedded@ozlabs.org 1653L: linuxppc-embedded@ozlabs.org
1651L: linux-kernel@vger.kernel.org 1654L: linux-kernel@vger.kernel.org
1652S: Maintained 1655S: Maintained
@@ -3142,7 +3145,7 @@ PCI ERROR RECOVERY
3142P: Linas Vepstas 3145P: Linas Vepstas
3143M: linas@austin.ibm.com 3146M: linas@austin.ibm.com
3144L: linux-kernel@vger.kernel.org 3147L: linux-kernel@vger.kernel.org
3145L: linux-pci@atrey.karlin.mff.cuni.cz 3148L: linux-pci@vger.kernel.org
3146S: Supported 3149S: Supported
3147 3150
3148PCI SUBSYSTEM 3151PCI SUBSYSTEM
@@ -3776,6 +3779,14 @@ M: dbrownell@users.sourceforge.net
3776L: spi-devel-general@lists.sourceforge.net 3779L: spi-devel-general@lists.sourceforge.net
3777S: Maintained 3780S: Maintained
3778 3781
3782SPU FILE SYSTEM
3783P: Jeremy Kerr
3784M: jk@ozlabs.org
3785L: linuxppc-dev@ozlabs.org
3786L: cbe-oss-dev@ozlabs.org
3787W: http://www.ibm.com/developerworks/power/cell/
3788S: Supported
3789
3779STABLE BRANCH: 3790STABLE BRANCH:
3780P: Greg Kroah-Hartman 3791P: Greg Kroah-Hartman
3781M: greg@kroah.com 3792M: greg@kroah.com
diff --git a/arch/m68k/lib/string.c b/arch/m68k/lib/string.c
index 891e1347bc4e..4253f870e54f 100644
--- a/arch/m68k/lib/string.c
+++ b/arch/m68k/lib/string.c
@@ -15,6 +15,12 @@ char *strcpy(char *dest, const char *src)
15} 15}
16EXPORT_SYMBOL(strcpy); 16EXPORT_SYMBOL(strcpy);
17 17
18char *strcat(char *dest, const char *src)
19{
20 return __kernel_strcpy(dest + __kernel_strlen(dest), src);
21}
22EXPORT_SYMBOL(strcat);
23
18void *memset(void *s, int c, size_t count) 24void *memset(void *s, int c, size_t count)
19{ 25{
20 void *xs = s; 26 void *xs = s;
diff --git a/arch/powerpc/boot/.gitignore b/arch/powerpc/boot/.gitignore
index 2347294ff35b..2f50acd11a60 100644
--- a/arch/powerpc/boot/.gitignore
+++ b/arch/powerpc/boot/.gitignore
@@ -20,21 +20,19 @@ kernel-vmlinux.strip.gz
20mktree 20mktree
21uImage 21uImage
22cuImage.* 22cuImage.*
23dtbImage.*
23treeImage.* 24treeImage.*
24zImage 25zImage
26zImage.initrd
25zImage.bin.* 27zImage.bin.*
26zImage.chrp 28zImage.chrp
27zImage.coff 29zImage.coff
28zImage.coff.lds 30zImage.holly
29zImage.ep*
30zImage.iseries 31zImage.iseries
31zImage.*lds 32zImage.*lds
32zImage.miboot 33zImage.miboot
33zImage.pmac 34zImage.pmac
34zImage.pseries 35zImage.pseries
35zImage.redboot*
36zImage.sandpoint
37zImage.vmode
38zconf.h 36zconf.h
39zlib.h 37zlib.h
40zutil.h 38zutil.h
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 7822d25c9d31..f5e0b2a5af57 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -99,7 +99,7 @@ $(obj)/zImage.lds $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds: $(obj)/%: $(srct
99 @cp $< $@ 99 @cp $< $@
100 100
101clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \ 101clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \
102 empty.c zImage zImage.coff.lds zImage.ps3.lds zImage.lds 102 empty.c zImage.coff.lds zImage.ps3.lds zImage.lds
103 103
104quiet_cmd_bootcc = BOOTCC $@ 104quiet_cmd_bootcc = BOOTCC $@
105 cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $< 105 cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $<
@@ -339,7 +339,9 @@ install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
339 sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $< 339 sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $<
340 340
341# anything not in $(targets) 341# anything not in $(targets)
342clean-files += $(image-) $(initrd-) zImage zImage.initrd cuImage.* treeImage.* \ 342clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
343 zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \
344 zImage.iseries zImage.miboot zImage.pmac zImage.pseries \
343 otheros.bld *.dtb 345 otheros.bld *.dtb
344 346
345# clean up files cached by wrapper 347# clean up files cached by wrapper
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts
index 1e7802cc31ae..fea592574004 100644
--- a/arch/powerpc/boot/dts/mpc8377_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8377_mds.dts
@@ -271,27 +271,35 @@
271 dma@82a8 { 271 dma@82a8 {
272 #address-cells = <1>; 272 #address-cells = <1>;
273 #size-cells = <1>; 273 #size-cells = <1>;
274 compatible = "fsl,mpc8349-dma"; 274 compatible = "fsl,mpc8377-dma", "fsl,elo-dma";
275 reg = <0x82a8 4>; 275 reg = <0x82a8 4>;
276 ranges = <0 0x8100 0x1a8>; 276 ranges = <0 0x8100 0x1a8>;
277 interrupt-parent = <&ipic>; 277 interrupt-parent = <&ipic>;
278 interrupts = <0x47 8>; 278 interrupts = <0x47 8>;
279 cell-index = <0>; 279 cell-index = <0>;
280 dma-channel@0 { 280 dma-channel@0 {
281 compatible = "fsl,mpc8349-dma-channel"; 281 compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel";
282 reg = <0 0x80>; 282 reg = <0 0x80>;
283 interrupt-parent = <&ipic>;
284 interrupts = <0x47 8>;
283 }; 285 };
284 dma-channel@80 { 286 dma-channel@80 {
285 compatible = "fsl,mpc8349-dma-channel"; 287 compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel";
286 reg = <0x80 0x80>; 288 reg = <0x80 0x80>;
289 interrupt-parent = <&ipic>;
290 interrupts = <0x47 8>;
287 }; 291 };
288 dma-channel@100 { 292 dma-channel@100 {
289 compatible = "fsl,mpc8349-dma-channel"; 293 compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel";
290 reg = <0x100 0x80>; 294 reg = <0x100 0x80>;
295 interrupt-parent = <&ipic>;
296 interrupts = <0x47 8>;
291 }; 297 };
292 dma-channel@180 { 298 dma-channel@180 {
293 compatible = "fsl,mpc8349-dma-channel"; 299 compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel";
294 reg = <0x180 0x28>; 300 reg = <0x180 0x28>;
301 interrupt-parent = <&ipic>;
302 interrupts = <0x47 8>;
295 }; 303 };
296 }; 304 };
297 305
diff --git a/arch/powerpc/configs/chrp32_defconfig b/arch/powerpc/configs/chrp32_defconfig
index d7fd298bd234..05360d4ef1b1 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.25-rc6 3# Linux kernel version: 2.6.26-rc3
4# Thu Mar 27 13:55:37 2008 4# Tue May 20 20:00:44 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -88,6 +90,7 @@ CONFIG_INITRAMFS_SOURCE=""
88CONFIG_SYSCTL=y 90CONFIG_SYSCTL=y
89# CONFIG_EMBEDDED is not set 91# CONFIG_EMBEDDED is not set
90CONFIG_SYSCTL_SYSCALL=y 92CONFIG_SYSCTL_SYSCALL=y
93CONFIG_SYSCTL_SYSCALL_CHECK=y
91CONFIG_KALLSYMS=y 94CONFIG_KALLSYMS=y
92# CONFIG_KALLSYMS_ALL is not set 95# CONFIG_KALLSYMS_ALL is not set
93# CONFIG_KALLSYMS_EXTRA_PASS is not set 96# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -95,6 +98,7 @@ CONFIG_HOTPLUG=y
95CONFIG_PRINTK=y 98CONFIG_PRINTK=y
96CONFIG_BUG=y 99CONFIG_BUG=y
97CONFIG_ELF_CORE=y 100CONFIG_ELF_CORE=y
101CONFIG_PCSPKR_PLATFORM=y
98# CONFIG_COMPAT_BRK is not set 102# CONFIG_COMPAT_BRK is not set
99CONFIG_BASE_FULL=y 103CONFIG_BASE_FULL=y
100CONFIG_FUTEX=y 104CONFIG_FUTEX=y
@@ -115,12 +119,14 @@ CONFIG_HAVE_OPROFILE=y
115# CONFIG_KPROBES is not set 119# CONFIG_KPROBES is not set
116CONFIG_HAVE_KPROBES=y 120CONFIG_HAVE_KPROBES=y
117CONFIG_HAVE_KRETPROBES=y 121CONFIG_HAVE_KRETPROBES=y
122# CONFIG_HAVE_DMA_ATTRS is not set
118CONFIG_PROC_PAGE_MONITOR=y 123CONFIG_PROC_PAGE_MONITOR=y
119CONFIG_SLABINFO=y 124CONFIG_SLABINFO=y
120CONFIG_RT_MUTEXES=y 125CONFIG_RT_MUTEXES=y
121# CONFIG_TINY_SHMEM is not set 126# CONFIG_TINY_SHMEM is not set
122CONFIG_BASE_SMALL=0 127CONFIG_BASE_SMALL=0
123CONFIG_MODULES=y 128CONFIG_MODULES=y
129# CONFIG_MODULE_FORCE_LOAD is not set
124CONFIG_MODULE_UNLOAD=y 130CONFIG_MODULE_UNLOAD=y
125CONFIG_MODULE_FORCE_UNLOAD=y 131CONFIG_MODULE_FORCE_UNLOAD=y
126# CONFIG_MODVERSIONS is not set 132# CONFIG_MODVERSIONS is not set
@@ -217,11 +223,13 @@ CONFIG_FLATMEM=y
217CONFIG_FLAT_NODE_MEM_MAP=y 223CONFIG_FLAT_NODE_MEM_MAP=y
218# CONFIG_SPARSEMEM_STATIC is not set 224# CONFIG_SPARSEMEM_STATIC is not set
219# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 225# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
226CONFIG_PAGEFLAGS_EXTENDED=y
220CONFIG_SPLIT_PTLOCK_CPUS=4 227CONFIG_SPLIT_PTLOCK_CPUS=4
221# CONFIG_RESOURCES_64BIT is not set 228# CONFIG_RESOURCES_64BIT is not set
222CONFIG_ZONE_DMA_FLAG=1 229CONFIG_ZONE_DMA_FLAG=1
223CONFIG_BOUNCE=y 230CONFIG_BOUNCE=y
224CONFIG_VIRT_TO_BUS=y 231CONFIG_VIRT_TO_BUS=y
232CONFIG_FORCE_MAX_ZONEORDER=11
225CONFIG_PROC_DEVICETREE=y 233CONFIG_PROC_DEVICETREE=y
226# CONFIG_CMDLINE_BOOL is not set 234# CONFIG_CMDLINE_BOOL is not set
227# CONFIG_PM is not set 235# CONFIG_PM is not set
@@ -245,6 +253,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
245# CONFIG_PCI_DEBUG is not set 253# CONFIG_PCI_DEBUG is not set
246# CONFIG_PCCARD is not set 254# CONFIG_PCCARD is not set
247# CONFIG_HOTPLUG_PCI is not set 255# CONFIG_HOTPLUG_PCI is not set
256# CONFIG_HAS_RAPIDIO is not set
248 257
249# 258#
250# Advanced setup 259# Advanced setup
@@ -254,11 +263,11 @@ CONFIG_ARCH_SUPPORTS_MSI=y
254# 263#
255# Default settings for advanced configuration options are used 264# Default settings for advanced configuration options are used
256# 265#
257CONFIG_HIGHMEM_START=0xfe000000
258CONFIG_LOWMEM_SIZE=0x30000000 266CONFIG_LOWMEM_SIZE=0x30000000
267CONFIG_PAGE_OFFSET=0xc0000000
259CONFIG_KERNEL_START=0xc0000000 268CONFIG_KERNEL_START=0xc0000000
269CONFIG_PHYSICAL_START=0x00000000
260CONFIG_TASK_SIZE=0xc0000000 270CONFIG_TASK_SIZE=0xc0000000
261CONFIG_BOOT_LOAD=0x00800000
262 271
263# 272#
264# Networking 273# Networking
@@ -299,8 +308,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
299# CONFIG_TCP_MD5SIG is not set 308# CONFIG_TCP_MD5SIG is not set
300# CONFIG_IP_VS is not set 309# CONFIG_IP_VS is not set
301# CONFIG_IPV6 is not set 310# CONFIG_IPV6 is not set
302# CONFIG_INET6_XFRM_TUNNEL is not set
303# CONFIG_INET6_TUNNEL is not set
304# CONFIG_NETWORK_SECMARK is not set 311# CONFIG_NETWORK_SECMARK is not set
305CONFIG_NETFILTER=y 312CONFIG_NETFILTER=y
306# CONFIG_NETFILTER_DEBUG is not set 313# CONFIG_NETFILTER_DEBUG is not set
@@ -398,6 +405,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
398# CONFIG_CONNECTOR is not set 405# CONFIG_CONNECTOR is not set
399# CONFIG_MTD is not set 406# CONFIG_MTD is not set
400CONFIG_OF_DEVICE=y 407CONFIG_OF_DEVICE=y
408CONFIG_OF_I2C=y
401# CONFIG_PARPORT is not set 409# CONFIG_PARPORT is not set
402# CONFIG_PNP is not set 410# CONFIG_PNP is not set
403CONFIG_BLK_DEV=y 411CONFIG_BLK_DEV=y
@@ -484,22 +492,8 @@ CONFIG_BLK_DEV_SL82C105=y
484# CONFIG_BLK_DEV_TRM290 is not set 492# CONFIG_BLK_DEV_TRM290 is not set
485CONFIG_BLK_DEV_VIA82CXXX=y 493CONFIG_BLK_DEV_VIA82CXXX=y
486# CONFIG_BLK_DEV_TC86C001 is not set 494# CONFIG_BLK_DEV_TC86C001 is not set
487
488#
489# Other IDE chipsets support
490#
491
492#
493# Note: most of these also require special kernel boot parameters
494#
495# CONFIG_BLK_DEV_4DRIVES is not set
496# CONFIG_BLK_DEV_ALI14XX is not set
497# CONFIG_BLK_DEV_DTC2278 is not set
498# CONFIG_BLK_DEV_HT6560B is not set
499# CONFIG_BLK_DEV_QD65XX is not set
500# CONFIG_BLK_DEV_UMC8672 is not set
501CONFIG_BLK_DEV_IDEDMA=y 495CONFIG_BLK_DEV_IDEDMA=y
502CONFIG_IDE_ARCH_OBSOLETE_INIT=y 496# CONFIG_BLK_DEV_HD_ONLY is not set
503# CONFIG_BLK_DEV_HD is not set 497# CONFIG_BLK_DEV_HD is not set
504 498
505# 499#
@@ -641,7 +635,6 @@ CONFIG_DE4X5=y
641# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 635# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
642CONFIG_NET_PCI=y 636CONFIG_NET_PCI=y
643CONFIG_PCNET32=y 637CONFIG_PCNET32=y
644# CONFIG_PCNET32_NAPI is not set
645# CONFIG_AMD8111_ETH is not set 638# CONFIG_AMD8111_ETH is not set
646# CONFIG_ADAPTEC_STARFIRE is not set 639# CONFIG_ADAPTEC_STARFIRE is not set
647# CONFIG_AC3200 is not set 640# CONFIG_AC3200 is not set
@@ -684,7 +677,6 @@ CONFIG_NETDEV_1000=y
684# CONFIG_SIS190 is not set 677# CONFIG_SIS190 is not set
685# CONFIG_SKGE is not set 678# CONFIG_SKGE is not set
686# CONFIG_SKY2 is not set 679# CONFIG_SKY2 is not set
687# CONFIG_SK98LIN is not set
688# CONFIG_VIA_VELOCITY is not set 680# CONFIG_VIA_VELOCITY is not set
689# CONFIG_TIGON3 is not set 681# CONFIG_TIGON3 is not set
690# CONFIG_BNX2 is not set 682# CONFIG_BNX2 is not set
@@ -703,6 +695,7 @@ CONFIG_NETDEV_10000=y
703# CONFIG_MLX4_CORE is not set 695# CONFIG_MLX4_CORE is not set
704# CONFIG_TEHUTI is not set 696# CONFIG_TEHUTI is not set
705# CONFIG_BNX2X is not set 697# CONFIG_BNX2X is not set
698# CONFIG_SFC is not set
706# CONFIG_TR is not set 699# CONFIG_TR is not set
707 700
708# 701#
@@ -710,6 +703,7 @@ CONFIG_NETDEV_10000=y
710# 703#
711# CONFIG_WLAN_PRE80211 is not set 704# CONFIG_WLAN_PRE80211 is not set
712# CONFIG_WLAN_80211 is not set 705# CONFIG_WLAN_80211 is not set
706# CONFIG_IWLWIFI_LEDS is not set
713 707
714# 708#
715# USB Network Adapters 709# USB Network Adapters
@@ -813,6 +807,7 @@ CONFIG_VT=y
813CONFIG_VT_CONSOLE=y 807CONFIG_VT_CONSOLE=y
814CONFIG_HW_CONSOLE=y 808CONFIG_HW_CONSOLE=y
815# CONFIG_VT_HW_CONSOLE_BINDING is not set 809# CONFIG_VT_HW_CONSOLE_BINDING is not set
810CONFIG_DEVKMEM=y
816# CONFIG_SERIAL_NONSTANDARD is not set 811# CONFIG_SERIAL_NONSTANDARD is not set
817# CONFIG_NOZOMI is not set 812# CONFIG_NOZOMI is not set
818 813
@@ -853,13 +848,7 @@ CONFIG_DEVPORT=y
853CONFIG_I2C=y 848CONFIG_I2C=y
854CONFIG_I2C_BOARDINFO=y 849CONFIG_I2C_BOARDINFO=y
855# CONFIG_I2C_CHARDEV is not set 850# CONFIG_I2C_CHARDEV is not set
856
857#
858# I2C Algorithms
859#
860CONFIG_I2C_ALGOBIT=y 851CONFIG_I2C_ALGOBIT=y
861# CONFIG_I2C_ALGOPCF is not set
862# CONFIG_I2C_ALGOPCA is not set
863 852
864# 853#
865# I2C Hardware Bus support 854# I2C Hardware Bus support
@@ -890,6 +879,7 @@ CONFIG_I2C_ALGOBIT=y
890# CONFIG_I2C_VIAPRO is not set 879# CONFIG_I2C_VIAPRO is not set
891# CONFIG_I2C_VOODOO3 is not set 880# CONFIG_I2C_VOODOO3 is not set
892# CONFIG_I2C_PCA_ISA is not set 881# CONFIG_I2C_PCA_ISA is not set
882# CONFIG_I2C_PCA_PLATFORM is not set
893 883
894# 884#
895# Miscellaneous I2C Chip support 885# Miscellaneous I2C Chip support
@@ -899,19 +889,13 @@ CONFIG_I2C_ALGOBIT=y
899# CONFIG_SENSORS_PCF8574 is not set 889# CONFIG_SENSORS_PCF8574 is not set
900# CONFIG_PCF8575 is not set 890# CONFIG_PCF8575 is not set
901# CONFIG_SENSORS_PCF8591 is not set 891# CONFIG_SENSORS_PCF8591 is not set
902# CONFIG_TPS65010 is not set
903# CONFIG_SENSORS_MAX6875 is not set 892# CONFIG_SENSORS_MAX6875 is not set
904# CONFIG_SENSORS_TSL2550 is not set 893# CONFIG_SENSORS_TSL2550 is not set
905# CONFIG_I2C_DEBUG_CORE is not set 894# CONFIG_I2C_DEBUG_CORE is not set
906# CONFIG_I2C_DEBUG_ALGO is not set 895# CONFIG_I2C_DEBUG_ALGO is not set
907# CONFIG_I2C_DEBUG_BUS is not set 896# CONFIG_I2C_DEBUG_BUS is not set
908# CONFIG_I2C_DEBUG_CHIP is not set 897# CONFIG_I2C_DEBUG_CHIP is not set
909
910#
911# SPI support
912#
913# CONFIG_SPI is not set 898# CONFIG_SPI is not set
914# CONFIG_SPI_MASTER is not set
915# CONFIG_W1 is not set 899# CONFIG_W1 is not set
916# CONFIG_POWER_SUPPLY is not set 900# CONFIG_POWER_SUPPLY is not set
917# CONFIG_HWMON is not set 901# CONFIG_HWMON is not set
@@ -928,12 +912,22 @@ CONFIG_SSB_POSSIBLE=y
928# Multifunction device drivers 912# Multifunction device drivers
929# 913#
930# CONFIG_MFD_SM501 is not set 914# CONFIG_MFD_SM501 is not set
915# CONFIG_HTC_PASIC3 is not set
931 916
932# 917#
933# Multimedia devices 918# Multimedia devices
934# 919#
920
921#
922# Multimedia core support
923#
935# CONFIG_VIDEO_DEV is not set 924# CONFIG_VIDEO_DEV is not set
936# CONFIG_DVB_CORE is not set 925# CONFIG_DVB_CORE is not set
926# CONFIG_VIDEO_MEDIA is not set
927
928#
929# Multimedia drivers
930#
937# CONFIG_DAB is not set 931# CONFIG_DAB is not set
938 932
939# 933#
@@ -953,8 +947,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y
953# CONFIG_FB_SYS_FILLRECT is not set 947# CONFIG_FB_SYS_FILLRECT is not set
954# CONFIG_FB_SYS_COPYAREA is not set 948# CONFIG_FB_SYS_COPYAREA is not set
955# CONFIG_FB_SYS_IMAGEBLIT is not set 949# CONFIG_FB_SYS_IMAGEBLIT is not set
950# CONFIG_FB_FOREIGN_ENDIAN is not set
956# CONFIG_FB_SYS_FOPS is not set 951# CONFIG_FB_SYS_FOPS is not set
957CONFIG_FB_DEFERRED_IO=y
958# CONFIG_FB_SVGALIB is not set 952# CONFIG_FB_SVGALIB is not set
959CONFIG_FB_MACMODES=y 953CONFIG_FB_MACMODES=y
960CONFIG_FB_BACKLIGHT=y 954CONFIG_FB_BACKLIGHT=y
@@ -1072,11 +1066,13 @@ CONFIG_USB_DEVICE_CLASS=y
1072# 1066#
1073# USB Host Controller Drivers 1067# USB Host Controller Drivers
1074# 1068#
1069# CONFIG_USB_C67X00_HCD is not set
1075CONFIG_USB_EHCI_HCD=m 1070CONFIG_USB_EHCI_HCD=m
1076# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1071# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1077# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1072# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1078# CONFIG_USB_EHCI_HCD_PPC_OF is not set 1073# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1079# CONFIG_USB_ISP116X_HCD is not set 1074# CONFIG_USB_ISP116X_HCD is not set
1075# CONFIG_USB_ISP1760_HCD is not set
1080CONFIG_USB_OHCI_HCD=y 1076CONFIG_USB_OHCI_HCD=y
1081# CONFIG_USB_OHCI_HCD_PPC_OF is not set 1077# CONFIG_USB_OHCI_HCD_PPC_OF is not set
1082# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1078# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -1112,6 +1108,7 @@ CONFIG_USB_STORAGE=m
1112# CONFIG_USB_STORAGE_ALAUDA is not set 1108# CONFIG_USB_STORAGE_ALAUDA is not set
1113# CONFIG_USB_STORAGE_ONETOUCH is not set 1109# CONFIG_USB_STORAGE_ONETOUCH is not set
1114# CONFIG_USB_STORAGE_KARMA is not set 1110# CONFIG_USB_STORAGE_KARMA is not set
1111# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1115# CONFIG_USB_LIBUSUAL is not set 1112# CONFIG_USB_LIBUSUAL is not set
1116 1113
1117# 1114#
@@ -1153,14 +1150,11 @@ CONFIG_USB_MON=y
1153# CONFIG_MMC is not set 1150# CONFIG_MMC is not set
1154# CONFIG_MEMSTICK is not set 1151# CONFIG_MEMSTICK is not set
1155# CONFIG_NEW_LEDS is not set 1152# CONFIG_NEW_LEDS is not set
1153# CONFIG_ACCESSIBILITY is not set
1156# CONFIG_INFINIBAND is not set 1154# CONFIG_INFINIBAND is not set
1157# CONFIG_EDAC is not set 1155# CONFIG_EDAC is not set
1158# CONFIG_RTC_CLASS is not set 1156# CONFIG_RTC_CLASS is not set
1159# CONFIG_DMADEVICES is not set 1157# CONFIG_DMADEVICES is not set
1160
1161#
1162# Userspace I/O
1163#
1164# CONFIG_UIO is not set 1158# CONFIG_UIO is not set
1165 1159
1166# 1160#
@@ -1180,7 +1174,6 @@ CONFIG_FS_MBCACHE=y
1180# CONFIG_JFS_FS is not set 1174# CONFIG_JFS_FS is not set
1181# CONFIG_FS_POSIX_ACL is not set 1175# CONFIG_FS_POSIX_ACL is not set
1182# CONFIG_XFS_FS is not set 1176# CONFIG_XFS_FS is not set
1183# CONFIG_GFS2_FS is not set
1184# CONFIG_OCFS2_FS is not set 1177# CONFIG_OCFS2_FS is not set
1185CONFIG_DNOTIFY=y 1178CONFIG_DNOTIFY=y
1186CONFIG_INOTIFY=y 1179CONFIG_INOTIFY=y
@@ -1314,6 +1307,7 @@ CONFIG_NLS_ISO8859_1=m
1314# Library routines 1307# Library routines
1315# 1308#
1316CONFIG_BITREVERSE=y 1309CONFIG_BITREVERSE=y
1310# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1317CONFIG_CRC_CCITT=m 1311CONFIG_CRC_CCITT=m
1318# CONFIG_CRC16 is not set 1312# CONFIG_CRC16 is not set
1319# CONFIG_CRC_ITU_T is not set 1313# CONFIG_CRC_ITU_T is not set
@@ -1334,6 +1328,7 @@ CONFIG_HAVE_LMB=y
1334# CONFIG_PRINTK_TIME is not set 1328# CONFIG_PRINTK_TIME is not set
1335CONFIG_ENABLE_WARN_DEPRECATED=y 1329CONFIG_ENABLE_WARN_DEPRECATED=y
1336CONFIG_ENABLE_MUST_CHECK=y 1330CONFIG_ENABLE_MUST_CHECK=y
1331CONFIG_FRAME_WARN=1024
1337CONFIG_MAGIC_SYSRQ=y 1332CONFIG_MAGIC_SYSRQ=y
1338# CONFIG_UNUSED_SYMBOLS is not set 1333# CONFIG_UNUSED_SYMBOLS is not set
1339# CONFIG_DEBUG_FS is not set 1334# CONFIG_DEBUG_FS is not set
@@ -1344,6 +1339,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1344CONFIG_SCHED_DEBUG=y 1339CONFIG_SCHED_DEBUG=y
1345# CONFIG_SCHEDSTATS is not set 1340# CONFIG_SCHEDSTATS is not set
1346# CONFIG_TIMER_STATS is not set 1341# CONFIG_TIMER_STATS is not set
1342# CONFIG_DEBUG_OBJECTS is not set
1347# CONFIG_SLUB_DEBUG_ON is not set 1343# CONFIG_SLUB_DEBUG_ON is not set
1348# CONFIG_SLUB_STATS is not set 1344# CONFIG_SLUB_STATS is not set
1349# CONFIG_DEBUG_RT_MUTEXES is not set 1345# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1357,6 +1353,7 @@ CONFIG_DEBUG_SPINLOCK_SLEEP=y
1357CONFIG_DEBUG_BUGVERBOSE=y 1353CONFIG_DEBUG_BUGVERBOSE=y
1358# CONFIG_DEBUG_INFO is not set 1354# CONFIG_DEBUG_INFO is not set
1359# CONFIG_DEBUG_VM is not set 1355# CONFIG_DEBUG_VM is not set
1356# CONFIG_DEBUG_WRITECOUNT is not set
1360# CONFIG_DEBUG_LIST is not set 1357# CONFIG_DEBUG_LIST is not set
1361# CONFIG_DEBUG_SG is not set 1358# CONFIG_DEBUG_SG is not set
1362# CONFIG_BOOT_PRINTK_DELAY is not set 1359# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1371,6 +1368,7 @@ CONFIG_DEBUGGER=y
1371CONFIG_XMON=y 1368CONFIG_XMON=y
1372CONFIG_XMON_DEFAULT=y 1369CONFIG_XMON_DEFAULT=y
1373CONFIG_XMON_DISASSEMBLY=y 1370CONFIG_XMON_DISASSEMBLY=y
1371CONFIG_IRQSTACKS=y
1374# CONFIG_BDI_SWITCH is not set 1372# CONFIG_BDI_SWITCH is not set
1375# CONFIG_BOOTX_TEXT is not set 1373# CONFIG_BOOTX_TEXT is not set
1376# CONFIG_PPC_EARLY_DEBUG is not set 1374# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1382,50 +1380,80 @@ CONFIG_XMON_DISASSEMBLY=y
1382# CONFIG_SECURITY is not set 1380# CONFIG_SECURITY is not set
1383# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1381# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1384CONFIG_CRYPTO=y 1382CONFIG_CRYPTO=y
1383
1384#
1385# Crypto core or helper
1386#
1385CONFIG_CRYPTO_ALGAPI=m 1387CONFIG_CRYPTO_ALGAPI=m
1386CONFIG_CRYPTO_BLKCIPHER=m 1388CONFIG_CRYPTO_BLKCIPHER=m
1387# CONFIG_CRYPTO_SEQIV is not set
1388CONFIG_CRYPTO_MANAGER=m 1389CONFIG_CRYPTO_MANAGER=m
1390# CONFIG_CRYPTO_GF128MUL is not set
1391# CONFIG_CRYPTO_NULL is not set
1392# CONFIG_CRYPTO_CRYPTD is not set
1393# CONFIG_CRYPTO_AUTHENC is not set
1394# CONFIG_CRYPTO_TEST is not set
1395
1396#
1397# Authenticated Encryption with Associated Data
1398#
1399# CONFIG_CRYPTO_CCM is not set
1400# CONFIG_CRYPTO_GCM is not set
1401# CONFIG_CRYPTO_SEQIV is not set
1402
1403#
1404# Block modes
1405#
1406CONFIG_CRYPTO_CBC=m
1407# CONFIG_CRYPTO_CTR is not set
1408# CONFIG_CRYPTO_CTS is not set
1409CONFIG_CRYPTO_ECB=m
1410# CONFIG_CRYPTO_LRW is not set
1411CONFIG_CRYPTO_PCBC=m
1412# CONFIG_CRYPTO_XTS is not set
1413
1414#
1415# Hash modes
1416#
1389# CONFIG_CRYPTO_HMAC is not set 1417# CONFIG_CRYPTO_HMAC is not set
1390# CONFIG_CRYPTO_XCBC is not set 1418# CONFIG_CRYPTO_XCBC is not set
1391# CONFIG_CRYPTO_NULL is not set 1419
1420#
1421# Digest
1422#
1423# CONFIG_CRYPTO_CRC32C is not set
1392# CONFIG_CRYPTO_MD4 is not set 1424# CONFIG_CRYPTO_MD4 is not set
1393# CONFIG_CRYPTO_MD5 is not set 1425# CONFIG_CRYPTO_MD5 is not set
1426# CONFIG_CRYPTO_MICHAEL_MIC is not set
1394CONFIG_CRYPTO_SHA1=m 1427CONFIG_CRYPTO_SHA1=m
1395# CONFIG_CRYPTO_SHA256 is not set 1428# CONFIG_CRYPTO_SHA256 is not set
1396# CONFIG_CRYPTO_SHA512 is not set 1429# CONFIG_CRYPTO_SHA512 is not set
1397# CONFIG_CRYPTO_WP512 is not set
1398# CONFIG_CRYPTO_TGR192 is not set 1430# CONFIG_CRYPTO_TGR192 is not set
1399# CONFIG_CRYPTO_GF128MUL is not set 1431# CONFIG_CRYPTO_WP512 is not set
1400CONFIG_CRYPTO_ECB=m 1432
1401CONFIG_CRYPTO_CBC=m 1433#
1402CONFIG_CRYPTO_PCBC=m 1434# Ciphers
1403# CONFIG_CRYPTO_LRW is not set 1435#
1404# CONFIG_CRYPTO_XTS is not set
1405# CONFIG_CRYPTO_CTR is not set
1406# CONFIG_CRYPTO_GCM is not set
1407# CONFIG_CRYPTO_CCM is not set
1408# CONFIG_CRYPTO_CRYPTD is not set
1409# CONFIG_CRYPTO_DES is not set
1410# CONFIG_CRYPTO_FCRYPT is not set
1411# CONFIG_CRYPTO_BLOWFISH is not set
1412# CONFIG_CRYPTO_TWOFISH is not set
1413# CONFIG_CRYPTO_SERPENT is not set
1414# CONFIG_CRYPTO_AES is not set 1436# CONFIG_CRYPTO_AES is not set
1437# CONFIG_CRYPTO_ANUBIS is not set
1438CONFIG_CRYPTO_ARC4=m
1439# CONFIG_CRYPTO_BLOWFISH is not set
1440# CONFIG_CRYPTO_CAMELLIA is not set
1415# CONFIG_CRYPTO_CAST5 is not set 1441# CONFIG_CRYPTO_CAST5 is not set
1416# CONFIG_CRYPTO_CAST6 is not set 1442# CONFIG_CRYPTO_CAST6 is not set
1417# CONFIG_CRYPTO_TEA is not set 1443# CONFIG_CRYPTO_DES is not set
1418CONFIG_CRYPTO_ARC4=m 1444# CONFIG_CRYPTO_FCRYPT is not set
1419# CONFIG_CRYPTO_KHAZAD is not set 1445# CONFIG_CRYPTO_KHAZAD is not set
1420# CONFIG_CRYPTO_ANUBIS is not set
1421# CONFIG_CRYPTO_SEED is not set
1422# CONFIG_CRYPTO_SALSA20 is not set 1446# CONFIG_CRYPTO_SALSA20 is not set
1447# CONFIG_CRYPTO_SEED is not set
1448# CONFIG_CRYPTO_SERPENT is not set
1449# CONFIG_CRYPTO_TEA is not set
1450# CONFIG_CRYPTO_TWOFISH is not set
1451
1452#
1453# Compression
1454#
1423# CONFIG_CRYPTO_DEFLATE is not set 1455# CONFIG_CRYPTO_DEFLATE is not set
1424# CONFIG_CRYPTO_MICHAEL_MIC is not set
1425# CONFIG_CRYPTO_CRC32C is not set
1426# CONFIG_CRYPTO_CAMELLIA is not set
1427# CONFIG_CRYPTO_TEST is not set
1428# CONFIG_CRYPTO_AUTHENC is not set
1429# CONFIG_CRYPTO_LZO is not set 1456# CONFIG_CRYPTO_LZO is not set
1430# CONFIG_CRYPTO_HW is not set 1457# CONFIG_CRYPTO_HW is not set
1431# CONFIG_PPC_CLOCK is not set 1458# CONFIG_PPC_CLOCK is not set
1459# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig
index 88338a9f5e95..db34909831a2 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.25-rc6 3# Linux kernel version: 2.6.26-rc3
4# Thu Mar 27 13:55:43 2008 4# Tue May 20 20:01:18 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -29,6 +29,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 29CONFIG_GENERIC_HARDIRQS=y
30CONFIG_HAVE_SETUP_PER_CPU_AREA=y 30CONFIG_HAVE_SETUP_PER_CPU_AREA=y
31CONFIG_IRQ_PER_CPU=y 31CONFIG_IRQ_PER_CPU=y
32CONFIG_STACKTRACE_SUPPORT=y
33CONFIG_TRACE_IRQFLAGS_SUPPORT=y
34CONFIG_LOCKDEP_SUPPORT=y
32CONFIG_RWSEM_XCHGADD_ALGORITHM=y 35CONFIG_RWSEM_XCHGADD_ALGORITHM=y
33CONFIG_ARCH_HAS_ILOG2_U32=y 36CONFIG_ARCH_HAS_ILOG2_U32=y
34CONFIG_ARCH_HAS_ILOG2_U64=y 37CONFIG_ARCH_HAS_ILOG2_U64=y
@@ -91,6 +94,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
91CONFIG_SYSCTL=y 94CONFIG_SYSCTL=y
92# CONFIG_EMBEDDED is not set 95# CONFIG_EMBEDDED is not set
93CONFIG_SYSCTL_SYSCALL=y 96CONFIG_SYSCTL_SYSCALL=y
97CONFIG_SYSCTL_SYSCALL_CHECK=y
94CONFIG_KALLSYMS=y 98CONFIG_KALLSYMS=y
95# CONFIG_KALLSYMS_ALL is not set 99# CONFIG_KALLSYMS_ALL is not set
96# CONFIG_KALLSYMS_EXTRA_PASS is not set 100# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -119,12 +123,14 @@ CONFIG_HAVE_OPROFILE=y
119# CONFIG_KPROBES is not set 123# CONFIG_KPROBES is not set
120CONFIG_HAVE_KPROBES=y 124CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 125CONFIG_HAVE_KRETPROBES=y
126# CONFIG_HAVE_DMA_ATTRS is not set
122CONFIG_PROC_PAGE_MONITOR=y 127CONFIG_PROC_PAGE_MONITOR=y
123CONFIG_SLABINFO=y 128CONFIG_SLABINFO=y
124CONFIG_RT_MUTEXES=y 129CONFIG_RT_MUTEXES=y
125# CONFIG_TINY_SHMEM is not set 130# CONFIG_TINY_SHMEM is not set
126CONFIG_BASE_SMALL=0 131CONFIG_BASE_SMALL=0
127CONFIG_MODULES=y 132CONFIG_MODULES=y
133# CONFIG_MODULE_FORCE_LOAD is not set
128CONFIG_MODULE_UNLOAD=y 134CONFIG_MODULE_UNLOAD=y
129# CONFIG_MODULE_FORCE_UNLOAD is not set 135# CONFIG_MODULE_FORCE_UNLOAD is not set
130CONFIG_MODVERSIONS=y 136CONFIG_MODVERSIONS=y
@@ -165,11 +171,11 @@ CONFIG_PPC_PMAC=y
165CONFIG_PPC_PMAC64=y 171CONFIG_PPC_PMAC64=y
166# CONFIG_PPC_MAPLE is not set 172# CONFIG_PPC_MAPLE is not set
167# CONFIG_PPC_PASEMI is not set 173# CONFIG_PPC_PASEMI is not set
168# CONFIG_PPC_CELLEB is not set
169# CONFIG_PPC_PS3 is not set 174# CONFIG_PPC_PS3 is not set
170# CONFIG_PPC_CELL is not set 175# CONFIG_PPC_CELL is not set
171# CONFIG_PPC_CELL_NATIVE is not set 176# CONFIG_PPC_CELL_NATIVE is not set
172# CONFIG_PPC_IBM_CELL_BLADE is not set 177# CONFIG_PPC_IBM_CELL_BLADE is not set
178# CONFIG_PPC_CELLEB is not set
173# CONFIG_PQ2ADS is not set 179# CONFIG_PQ2ADS is not set
174CONFIG_PPC_NATIVE=y 180CONFIG_PPC_NATIVE=y
175# CONFIG_IPIC is not set 181# CONFIG_IPIC is not set
@@ -190,6 +196,7 @@ CONFIG_CPU_FREQ_TABLE=y
190CONFIG_CPU_FREQ_STAT=y 196CONFIG_CPU_FREQ_STAT=y
191# CONFIG_CPU_FREQ_STAT_DETAILS is not set 197# CONFIG_CPU_FREQ_STAT_DETAILS is not set
192CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 198CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
199# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
193# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set 200# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
194# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set 201# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
195# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set 202# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
@@ -224,7 +231,6 @@ CONFIG_PREEMPT_NONE=y
224CONFIG_BINFMT_ELF=y 231CONFIG_BINFMT_ELF=y
225CONFIG_COMPAT_BINFMT_ELF=y 232CONFIG_COMPAT_BINFMT_ELF=y
226# CONFIG_BINFMT_MISC is not set 233# CONFIG_BINFMT_MISC is not set
227CONFIG_FORCE_MAX_ZONEORDER=13
228CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y 234CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
229CONFIG_IOMMU_VMERGE=y 235CONFIG_IOMMU_VMERGE=y
230CONFIG_IOMMU_HELPER=y 236CONFIG_IOMMU_HELPER=y
@@ -248,12 +254,14 @@ CONFIG_FLATMEM=y
248CONFIG_FLAT_NODE_MEM_MAP=y 254CONFIG_FLAT_NODE_MEM_MAP=y
249# CONFIG_SPARSEMEM_STATIC is not set 255# CONFIG_SPARSEMEM_STATIC is not set
250CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y 256CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
257CONFIG_PAGEFLAGS_EXTENDED=y
251CONFIG_SPLIT_PTLOCK_CPUS=4 258CONFIG_SPLIT_PTLOCK_CPUS=4
252CONFIG_RESOURCES_64BIT=y 259CONFIG_RESOURCES_64BIT=y
253CONFIG_ZONE_DMA_FLAG=1 260CONFIG_ZONE_DMA_FLAG=1
254CONFIG_BOUNCE=y 261CONFIG_BOUNCE=y
255# CONFIG_PPC_HAS_HASH_64K is not set 262# CONFIG_PPC_HAS_HASH_64K is not set
256# CONFIG_PPC_64K_PAGES is not set 263# CONFIG_PPC_64K_PAGES is not set
264CONFIG_FORCE_MAX_ZONEORDER=13
257# CONFIG_SCHED_SMT is not set 265# CONFIG_SCHED_SMT is not set
258CONFIG_PROC_DEVICETREE=y 266CONFIG_PROC_DEVICETREE=y
259# CONFIG_CMDLINE_BOOL is not set 267# CONFIG_CMDLINE_BOOL is not set
@@ -278,7 +286,10 @@ CONFIG_PCI_MSI=y
278# CONFIG_PCI_DEBUG is not set 286# CONFIG_PCI_DEBUG is not set
279# CONFIG_PCCARD is not set 287# CONFIG_PCCARD is not set
280# CONFIG_HOTPLUG_PCI is not set 288# CONFIG_HOTPLUG_PCI is not set
289# CONFIG_HAS_RAPIDIO is not set
290CONFIG_PAGE_OFFSET=0xc000000000000000
281CONFIG_KERNEL_START=0xc000000000000000 291CONFIG_KERNEL_START=0xc000000000000000
292CONFIG_PHYSICAL_START=0x00000000
282 293
283# 294#
284# Networking 295# Networking
@@ -325,8 +336,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
325# CONFIG_TCP_MD5SIG is not set 336# CONFIG_TCP_MD5SIG is not set
326# CONFIG_IP_VS is not set 337# CONFIG_IP_VS is not set
327# CONFIG_IPV6 is not set 338# CONFIG_IPV6 is not set
328# CONFIG_INET6_XFRM_TUNNEL is not set
329# CONFIG_INET6_TUNNEL is not set
330# CONFIG_NETWORK_SECMARK is not set 339# CONFIG_NETWORK_SECMARK is not set
331CONFIG_NETFILTER=y 340CONFIG_NETFILTER=y
332# CONFIG_NETFILTER_DEBUG is not set 341# CONFIG_NETFILTER_DEBUG is not set
@@ -342,6 +351,7 @@ CONFIG_NF_CONNTRACK=m
342# CONFIG_NF_CT_ACCT is not set 351# CONFIG_NF_CT_ACCT is not set
343CONFIG_NF_CONNTRACK_MARK=y 352CONFIG_NF_CONNTRACK_MARK=y
344CONFIG_NF_CONNTRACK_EVENTS=y 353CONFIG_NF_CONNTRACK_EVENTS=y
354# CONFIG_NF_CT_PROTO_DCCP is not set
345# CONFIG_NF_CT_PROTO_SCTP is not set 355# CONFIG_NF_CT_PROTO_SCTP is not set
346# CONFIG_NF_CT_PROTO_UDPLITE is not set 356# CONFIG_NF_CT_PROTO_UDPLITE is not set
347# CONFIG_NF_CONNTRACK_AMANDA is not set 357# CONFIG_NF_CONNTRACK_AMANDA is not set
@@ -418,6 +428,7 @@ CONFIG_FW_LOADER=y
418# CONFIG_CONNECTOR is not set 428# CONFIG_CONNECTOR is not set
419# CONFIG_MTD is not set 429# CONFIG_MTD is not set
420CONFIG_OF_DEVICE=y 430CONFIG_OF_DEVICE=y
431CONFIG_OF_I2C=y
421# CONFIG_PARPORT is not set 432# CONFIG_PARPORT is not set
422CONFIG_BLK_DEV=y 433CONFIG_BLK_DEV=y
423# CONFIG_BLK_DEV_FD is not set 434# CONFIG_BLK_DEV_FD is not set
@@ -465,7 +476,6 @@ CONFIG_IDE_PROC_FS=y
465# 476#
466# IDE chipset support/bugfixes 477# IDE chipset support/bugfixes
467# 478#
468CONFIG_IDE_GENERIC=y
469# CONFIG_BLK_DEV_PLATFORM is not set 479# CONFIG_BLK_DEV_PLATFORM is not set
470CONFIG_BLK_DEV_IDEDMA_SFF=y 480CONFIG_BLK_DEV_IDEDMA_SFF=y
471 481
@@ -506,7 +516,7 @@ CONFIG_BLK_DEV_IDE_PMAC=y
506CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y 516CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
507CONFIG_BLK_DEV_IDEDMA_PMAC=y 517CONFIG_BLK_DEV_IDEDMA_PMAC=y
508CONFIG_BLK_DEV_IDEDMA=y 518CONFIG_BLK_DEV_IDEDMA=y
509CONFIG_IDE_ARCH_OBSOLETE_INIT=y 519# CONFIG_BLK_DEV_HD_ONLY is not set
510# CONFIG_BLK_DEV_HD is not set 520# CONFIG_BLK_DEV_HD is not set
511 521
512# 522#
@@ -584,61 +594,10 @@ CONFIG_SCSI_LOWLEVEL=y
584# CONFIG_SCSI_SRP is not set 594# CONFIG_SCSI_SRP is not set
585CONFIG_ATA=y 595CONFIG_ATA=y
586# CONFIG_ATA_NONSTANDARD is not set 596# CONFIG_ATA_NONSTANDARD is not set
597CONFIG_SATA_PMP=y
587# CONFIG_SATA_AHCI is not set 598# CONFIG_SATA_AHCI is not set
588CONFIG_SATA_SVW=y
589# CONFIG_ATA_PIIX is not set
590# CONFIG_SATA_MV is not set
591# CONFIG_SATA_NV is not set
592# CONFIG_PDC_ADMA is not set
593# CONFIG_SATA_QSTOR is not set
594# CONFIG_SATA_PROMISE is not set
595# CONFIG_SATA_SX4 is not set
596# CONFIG_SATA_SIL is not set
597# CONFIG_SATA_SIL24 is not set 599# CONFIG_SATA_SIL24 is not set
598# CONFIG_SATA_SIS is not set 600# CONFIG_ATA_SFF is not set
599# CONFIG_SATA_ULI is not set
600# CONFIG_SATA_VIA is not set
601# CONFIG_SATA_VITESSE is not set
602# CONFIG_SATA_INIC162X is not set
603# CONFIG_PATA_ALI is not set
604# CONFIG_PATA_AMD is not set
605# CONFIG_PATA_ARTOP is not set
606# CONFIG_PATA_ATIIXP is not set
607# CONFIG_PATA_CMD640_PCI is not set
608# CONFIG_PATA_CMD64X is not set
609# CONFIG_PATA_CS5520 is not set
610# CONFIG_PATA_CS5530 is not set
611# CONFIG_PATA_CYPRESS is not set
612# CONFIG_PATA_EFAR is not set
613# CONFIG_ATA_GENERIC is not set
614# CONFIG_PATA_HPT366 is not set
615# CONFIG_PATA_HPT37X is not set
616# CONFIG_PATA_HPT3X2N is not set
617# CONFIG_PATA_HPT3X3 is not set
618# CONFIG_PATA_IT821X is not set
619# CONFIG_PATA_IT8213 is not set
620# CONFIG_PATA_JMICRON is not set
621# CONFIG_PATA_TRIFLEX is not set
622# CONFIG_PATA_MARVELL is not set
623# CONFIG_PATA_MPIIX is not set
624# CONFIG_PATA_OLDPIIX is not set
625# CONFIG_PATA_NETCELL is not set
626# CONFIG_PATA_NINJA32 is not set
627# CONFIG_PATA_NS87410 is not set
628# CONFIG_PATA_NS87415 is not set
629# CONFIG_PATA_OPTI is not set
630# CONFIG_PATA_OPTIDMA is not set
631# CONFIG_PATA_PDC_OLD is not set
632# CONFIG_PATA_RADISYS is not set
633# CONFIG_PATA_RZ1000 is not set
634# CONFIG_PATA_SC1200 is not set
635# CONFIG_PATA_SERVERWORKS is not set
636# CONFIG_PATA_PDC2027X is not set
637# CONFIG_PATA_SIL680 is not set
638# CONFIG_PATA_SIS is not set
639# CONFIG_PATA_VIA is not set
640# CONFIG_PATA_WINBOND is not set
641# CONFIG_PATA_PLATFORM is not set
642CONFIG_MD=y 601CONFIG_MD=y
643CONFIG_BLK_DEV_MD=y 602CONFIG_BLK_DEV_MD=y
644CONFIG_MD_LINEAR=y 603CONFIG_MD_LINEAR=y
@@ -740,7 +699,6 @@ CONFIG_E1000=y
740# CONFIG_SIS190 is not set 699# CONFIG_SIS190 is not set
741# CONFIG_SKGE is not set 700# CONFIG_SKGE is not set
742# CONFIG_SKY2 is not set 701# CONFIG_SKY2 is not set
743# CONFIG_SK98LIN is not set
744# CONFIG_VIA_VELOCITY is not set 702# CONFIG_VIA_VELOCITY is not set
745CONFIG_TIGON3=y 703CONFIG_TIGON3=y
746# CONFIG_BNX2 is not set 704# CONFIG_BNX2 is not set
@@ -755,10 +713,10 @@ CONFIG_NETDEV_10000=y
755# CONFIG_MYRI10GE is not set 713# CONFIG_MYRI10GE is not set
756# CONFIG_NETXEN_NIC is not set 714# CONFIG_NETXEN_NIC is not set
757# CONFIG_NIU is not set 715# CONFIG_NIU is not set
758# CONFIG_PASEMI_MAC is not set
759# CONFIG_MLX4_CORE is not set 716# CONFIG_MLX4_CORE is not set
760# CONFIG_TEHUTI is not set 717# CONFIG_TEHUTI is not set
761# CONFIG_BNX2X is not set 718# CONFIG_BNX2X is not set
719# CONFIG_SFC is not set
762CONFIG_TR=y 720CONFIG_TR=y
763CONFIG_IBMOL=y 721CONFIG_IBMOL=y
764# CONFIG_3C359 is not set 722# CONFIG_3C359 is not set
@@ -769,6 +727,7 @@ CONFIG_IBMOL=y
769# 727#
770# CONFIG_WLAN_PRE80211 is not set 728# CONFIG_WLAN_PRE80211 is not set
771# CONFIG_WLAN_80211 is not set 729# CONFIG_WLAN_80211 is not set
730# CONFIG_IWLWIFI_LEDS is not set
772 731
773# 732#
774# USB Network Adapters 733# USB Network Adapters
@@ -865,6 +824,7 @@ CONFIG_VT=y
865CONFIG_VT_CONSOLE=y 824CONFIG_VT_CONSOLE=y
866CONFIG_HW_CONSOLE=y 825CONFIG_HW_CONSOLE=y
867# CONFIG_VT_HW_CONSOLE_BINDING is not set 826# CONFIG_VT_HW_CONSOLE_BINDING is not set
827CONFIG_DEVKMEM=y
868# CONFIG_SERIAL_NONSTANDARD is not set 828# CONFIG_SERIAL_NONSTANDARD is not set
869# CONFIG_NOZOMI is not set 829# CONFIG_NOZOMI is not set
870 830
@@ -895,13 +855,7 @@ CONFIG_DEVPORT=y
895CONFIG_I2C=y 855CONFIG_I2C=y
896CONFIG_I2C_BOARDINFO=y 856CONFIG_I2C_BOARDINFO=y
897CONFIG_I2C_CHARDEV=y 857CONFIG_I2C_CHARDEV=y
898
899#
900# I2C Algorithms
901#
902CONFIG_I2C_ALGOBIT=y 858CONFIG_I2C_ALGOBIT=y
903# CONFIG_I2C_ALGOPCF is not set
904# CONFIG_I2C_ALGOPCA is not set
905 859
906# 860#
907# I2C Hardware Bus support 861# I2C Hardware Bus support
@@ -930,6 +884,7 @@ CONFIG_I2C_POWERMAC=y
930# CONFIG_I2C_VIA is not set 884# CONFIG_I2C_VIA is not set
931# CONFIG_I2C_VIAPRO is not set 885# CONFIG_I2C_VIAPRO is not set
932# CONFIG_I2C_VOODOO3 is not set 886# CONFIG_I2C_VOODOO3 is not set
887# CONFIG_I2C_PCA_PLATFORM is not set
933 888
934# 889#
935# Miscellaneous I2C Chip support 890# Miscellaneous I2C Chip support
@@ -939,19 +894,13 @@ CONFIG_I2C_POWERMAC=y
939# CONFIG_SENSORS_PCF8574 is not set 894# CONFIG_SENSORS_PCF8574 is not set
940# CONFIG_PCF8575 is not set 895# CONFIG_PCF8575 is not set
941# CONFIG_SENSORS_PCF8591 is not set 896# CONFIG_SENSORS_PCF8591 is not set
942# CONFIG_TPS65010 is not set
943# CONFIG_SENSORS_MAX6875 is not set 897# CONFIG_SENSORS_MAX6875 is not set
944# CONFIG_SENSORS_TSL2550 is not set 898# CONFIG_SENSORS_TSL2550 is not set
945# CONFIG_I2C_DEBUG_CORE is not set 899# CONFIG_I2C_DEBUG_CORE is not set
946# CONFIG_I2C_DEBUG_ALGO is not set 900# CONFIG_I2C_DEBUG_ALGO is not set
947# CONFIG_I2C_DEBUG_BUS is not set 901# CONFIG_I2C_DEBUG_BUS is not set
948# CONFIG_I2C_DEBUG_CHIP is not set 902# CONFIG_I2C_DEBUG_CHIP is not set
949
950#
951# SPI support
952#
953# CONFIG_SPI is not set 903# CONFIG_SPI is not set
954# CONFIG_SPI_MASTER is not set
955# CONFIG_W1 is not set 904# CONFIG_W1 is not set
956# CONFIG_POWER_SUPPLY is not set 905# CONFIG_POWER_SUPPLY is not set
957# CONFIG_HWMON is not set 906# CONFIG_HWMON is not set
@@ -968,12 +917,22 @@ CONFIG_SSB_POSSIBLE=y
968# Multifunction device drivers 917# Multifunction device drivers
969# 918#
970# CONFIG_MFD_SM501 is not set 919# CONFIG_MFD_SM501 is not set
920# CONFIG_HTC_PASIC3 is not set
971 921
972# 922#
973# Multimedia devices 923# Multimedia devices
974# 924#
925
926#
927# Multimedia core support
928#
975# CONFIG_VIDEO_DEV is not set 929# CONFIG_VIDEO_DEV is not set
976# CONFIG_DVB_CORE is not set 930# CONFIG_DVB_CORE is not set
931# CONFIG_VIDEO_MEDIA is not set
932
933#
934# Multimedia drivers
935#
977CONFIG_DAB=y 936CONFIG_DAB=y
978# CONFIG_USB_DABUSB is not set 937# CONFIG_USB_DABUSB is not set
979 938
@@ -995,8 +954,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y
995# CONFIG_FB_SYS_FILLRECT is not set 954# CONFIG_FB_SYS_FILLRECT is not set
996# CONFIG_FB_SYS_COPYAREA is not set 955# CONFIG_FB_SYS_COPYAREA is not set
997# CONFIG_FB_SYS_IMAGEBLIT is not set 956# CONFIG_FB_SYS_IMAGEBLIT is not set
957# CONFIG_FB_FOREIGN_ENDIAN is not set
998# CONFIG_FB_SYS_FOPS is not set 958# CONFIG_FB_SYS_FOPS is not set
999CONFIG_FB_DEFERRED_IO=y
1000# CONFIG_FB_SVGALIB is not set 959# CONFIG_FB_SVGALIB is not set
1001CONFIG_FB_MACMODES=y 960CONFIG_FB_MACMODES=y
1002CONFIG_FB_BACKLIGHT=y 961CONFIG_FB_BACKLIGHT=y
@@ -1112,6 +1071,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1112# CONFIG_SND_AU8810 is not set 1071# CONFIG_SND_AU8810 is not set
1113# CONFIG_SND_AU8820 is not set 1072# CONFIG_SND_AU8820 is not set
1114# CONFIG_SND_AU8830 is not set 1073# CONFIG_SND_AU8830 is not set
1074# CONFIG_SND_AW2 is not set
1115# CONFIG_SND_AZT3328 is not set 1075# CONFIG_SND_AZT3328 is not set
1116# CONFIG_SND_BT87X is not set 1076# CONFIG_SND_BT87X is not set
1117# CONFIG_SND_CA0106 is not set 1077# CONFIG_SND_CA0106 is not set
@@ -1198,11 +1158,11 @@ CONFIG_SND_USB_AUDIO=m
1198# CONFIG_SND_SOC is not set 1158# CONFIG_SND_SOC is not set
1199 1159
1200# 1160#
1201# SoC Audio support for SuperH 1161# ALSA SoC audio for Freescale SOCs
1202# 1162#
1203 1163
1204# 1164#
1205# ALSA SoC audio for Freescale SOCs 1165# SoC Audio for the Texas Instruments OMAP
1206# 1166#
1207 1167
1208# 1168#
@@ -1222,6 +1182,7 @@ CONFIG_USB_HID=y
1222CONFIG_HID_FF=y 1182CONFIG_HID_FF=y
1223CONFIG_HID_PID=y 1183CONFIG_HID_PID=y
1224CONFIG_LOGITECH_FF=y 1184CONFIG_LOGITECH_FF=y
1185# CONFIG_LOGIRUMBLEPAD2_FF is not set
1225# CONFIG_PANTHERLORD_FF is not set 1186# CONFIG_PANTHERLORD_FF is not set
1226CONFIG_THRUSTMASTER_FF=y 1187CONFIG_THRUSTMASTER_FF=y
1227# CONFIG_ZEROPLUS_FF is not set 1188# CONFIG_ZEROPLUS_FF is not set
@@ -1245,11 +1206,13 @@ CONFIG_USB_DEVICE_CLASS=y
1245# 1206#
1246# USB Host Controller Drivers 1207# USB Host Controller Drivers
1247# 1208#
1209# CONFIG_USB_C67X00_HCD is not set
1248CONFIG_USB_EHCI_HCD=y 1210CONFIG_USB_EHCI_HCD=y
1249# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1211# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1250# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1212# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1251# CONFIG_USB_EHCI_HCD_PPC_OF is not set 1213# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1252# CONFIG_USB_ISP116X_HCD is not set 1214# CONFIG_USB_ISP116X_HCD is not set
1215# CONFIG_USB_ISP1760_HCD is not set
1253CONFIG_USB_OHCI_HCD=y 1216CONFIG_USB_OHCI_HCD=y
1254CONFIG_USB_OHCI_HCD_PPC_OF=y 1217CONFIG_USB_OHCI_HCD_PPC_OF=y
1255CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1218CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
@@ -1288,6 +1251,7 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
1288# CONFIG_USB_STORAGE_ALAUDA is not set 1251# CONFIG_USB_STORAGE_ALAUDA is not set
1289# CONFIG_USB_STORAGE_ONETOUCH is not set 1252# CONFIG_USB_STORAGE_ONETOUCH is not set
1290# CONFIG_USB_STORAGE_KARMA is not set 1253# CONFIG_USB_STORAGE_KARMA is not set
1254# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1291# CONFIG_USB_LIBUSUAL is not set 1255# CONFIG_USB_LIBUSUAL is not set
1292 1256
1293# 1257#
@@ -1342,9 +1306,11 @@ CONFIG_USB_SERIAL_KOBIL_SCT=m
1342CONFIG_USB_SERIAL_MCT_U232=m 1306CONFIG_USB_SERIAL_MCT_U232=m
1343# CONFIG_USB_SERIAL_MOS7720 is not set 1307# CONFIG_USB_SERIAL_MOS7720 is not set
1344# CONFIG_USB_SERIAL_MOS7840 is not set 1308# CONFIG_USB_SERIAL_MOS7840 is not set
1309# CONFIG_USB_SERIAL_MOTOROLA is not set
1345# CONFIG_USB_SERIAL_NAVMAN is not set 1310# CONFIG_USB_SERIAL_NAVMAN is not set
1346CONFIG_USB_SERIAL_PL2303=m 1311CONFIG_USB_SERIAL_PL2303=m
1347# CONFIG_USB_SERIAL_OTI6858 is not set 1312# CONFIG_USB_SERIAL_OTI6858 is not set
1313# CONFIG_USB_SERIAL_SPCP8X5 is not set
1348# CONFIG_USB_SERIAL_HP4X is not set 1314# CONFIG_USB_SERIAL_HP4X is not set
1349CONFIG_USB_SERIAL_SAFE=m 1315CONFIG_USB_SERIAL_SAFE=m
1350CONFIG_USB_SERIAL_SAFE_PADDED=y 1316CONFIG_USB_SERIAL_SAFE_PADDED=y
@@ -1383,14 +1349,11 @@ CONFIG_USB_APPLEDISPLAY=m
1383# CONFIG_MMC is not set 1349# CONFIG_MMC is not set
1384# CONFIG_MEMSTICK is not set 1350# CONFIG_MEMSTICK is not set
1385# CONFIG_NEW_LEDS is not set 1351# CONFIG_NEW_LEDS is not set
1352# CONFIG_ACCESSIBILITY is not set
1386# CONFIG_INFINIBAND is not set 1353# CONFIG_INFINIBAND is not set
1387# CONFIG_EDAC is not set 1354# CONFIG_EDAC is not set
1388# CONFIG_RTC_CLASS is not set 1355# CONFIG_RTC_CLASS is not set
1389# CONFIG_DMADEVICES is not set 1356# CONFIG_DMADEVICES is not set
1390
1391#
1392# Userspace I/O
1393#
1394# CONFIG_UIO is not set 1357# CONFIG_UIO is not set
1395 1358
1396# 1359#
@@ -1420,9 +1383,9 @@ CONFIG_REISERFS_FS_SECURITY=y
1420CONFIG_FS_POSIX_ACL=y 1383CONFIG_FS_POSIX_ACL=y
1421CONFIG_XFS_FS=m 1384CONFIG_XFS_FS=m
1422# CONFIG_XFS_QUOTA is not set 1385# CONFIG_XFS_QUOTA is not set
1423CONFIG_XFS_SECURITY=y
1424CONFIG_XFS_POSIX_ACL=y 1386CONFIG_XFS_POSIX_ACL=y
1425# CONFIG_XFS_RT is not set 1387# CONFIG_XFS_RT is not set
1388# CONFIG_XFS_DEBUG is not set
1426# CONFIG_GFS2_FS is not set 1389# CONFIG_GFS2_FS is not set
1427# CONFIG_OCFS2_FS is not set 1390# CONFIG_OCFS2_FS is not set
1428CONFIG_DNOTIFY=y 1391CONFIG_DNOTIFY=y
@@ -1488,13 +1451,11 @@ CONFIG_NFS_FS=y
1488CONFIG_NFS_V3=y 1451CONFIG_NFS_V3=y
1489CONFIG_NFS_V3_ACL=y 1452CONFIG_NFS_V3_ACL=y
1490CONFIG_NFS_V4=y 1453CONFIG_NFS_V4=y
1491# CONFIG_NFS_DIRECTIO is not set
1492CONFIG_NFSD=y 1454CONFIG_NFSD=y
1493CONFIG_NFSD_V2_ACL=y 1455CONFIG_NFSD_V2_ACL=y
1494CONFIG_NFSD_V3=y 1456CONFIG_NFSD_V3=y
1495CONFIG_NFSD_V3_ACL=y 1457CONFIG_NFSD_V3_ACL=y
1496CONFIG_NFSD_V4=y 1458CONFIG_NFSD_V4=y
1497CONFIG_NFSD_TCP=y
1498CONFIG_LOCKD=y 1459CONFIG_LOCKD=y
1499CONFIG_LOCKD_V4=y 1460CONFIG_LOCKD_V4=y
1500CONFIG_EXPORTFS=y 1461CONFIG_EXPORTFS=y
@@ -1583,9 +1544,10 @@ CONFIG_NLS_UTF8=y
1583# Library routines 1544# Library routines
1584# 1545#
1585CONFIG_BITREVERSE=y 1546CONFIG_BITREVERSE=y
1547# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1586CONFIG_CRC_CCITT=m 1548CONFIG_CRC_CCITT=m
1587# CONFIG_CRC16 is not set 1549# CONFIG_CRC16 is not set
1588# CONFIG_CRC_ITU_T is not set 1550CONFIG_CRC_ITU_T=m
1589CONFIG_CRC32=y 1551CONFIG_CRC32=y
1590# CONFIG_CRC7 is not set 1552# CONFIG_CRC7 is not set
1591CONFIG_LIBCRC32C=m 1553CONFIG_LIBCRC32C=m
@@ -1603,6 +1565,7 @@ CONFIG_HAVE_LMB=y
1603# CONFIG_PRINTK_TIME is not set 1565# CONFIG_PRINTK_TIME is not set
1604CONFIG_ENABLE_WARN_DEPRECATED=y 1566CONFIG_ENABLE_WARN_DEPRECATED=y
1605CONFIG_ENABLE_MUST_CHECK=y 1567CONFIG_ENABLE_MUST_CHECK=y
1568CONFIG_FRAME_WARN=2048
1606CONFIG_MAGIC_SYSRQ=y 1569CONFIG_MAGIC_SYSRQ=y
1607# CONFIG_UNUSED_SYMBOLS is not set 1570# CONFIG_UNUSED_SYMBOLS is not set
1608CONFIG_DEBUG_FS=y 1571CONFIG_DEBUG_FS=y
@@ -1613,18 +1576,23 @@ CONFIG_DETECT_SOFTLOCKUP=y
1613CONFIG_SCHED_DEBUG=y 1576CONFIG_SCHED_DEBUG=y
1614# CONFIG_SCHEDSTATS is not set 1577# CONFIG_SCHEDSTATS is not set
1615# CONFIG_TIMER_STATS is not set 1578# CONFIG_TIMER_STATS is not set
1579# CONFIG_DEBUG_OBJECTS is not set
1616# CONFIG_SLUB_DEBUG_ON is not set 1580# CONFIG_SLUB_DEBUG_ON is not set
1617# CONFIG_SLUB_STATS is not set 1581# CONFIG_SLUB_STATS is not set
1618# CONFIG_DEBUG_RT_MUTEXES is not set 1582# CONFIG_DEBUG_RT_MUTEXES is not set
1619# CONFIG_RT_MUTEX_TESTER is not set 1583# CONFIG_RT_MUTEX_TESTER is not set
1620# CONFIG_DEBUG_SPINLOCK is not set 1584# CONFIG_DEBUG_SPINLOCK is not set
1621CONFIG_DEBUG_MUTEXES=y 1585CONFIG_DEBUG_MUTEXES=y
1586# CONFIG_DEBUG_LOCK_ALLOC is not set
1587# CONFIG_PROVE_LOCKING is not set
1588# CONFIG_LOCK_STAT is not set
1622# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1589# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1623# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1590# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1624# CONFIG_DEBUG_KOBJECT is not set 1591# CONFIG_DEBUG_KOBJECT is not set
1625CONFIG_DEBUG_BUGVERBOSE=y 1592CONFIG_DEBUG_BUGVERBOSE=y
1626# CONFIG_DEBUG_INFO is not set 1593# CONFIG_DEBUG_INFO is not set
1627# CONFIG_DEBUG_VM is not set 1594# CONFIG_DEBUG_VM is not set
1595# CONFIG_DEBUG_WRITECOUNT is not set
1628# CONFIG_DEBUG_LIST is not set 1596# CONFIG_DEBUG_LIST is not set
1629# CONFIG_DEBUG_SG is not set 1597# CONFIG_DEBUG_SG is not set
1630# CONFIG_BOOT_PRINTK_DELAY is not set 1598# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1648,53 +1616,83 @@ CONFIG_BOOTX_TEXT=y
1648# CONFIG_SECURITY is not set 1616# CONFIG_SECURITY is not set
1649# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1617# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1650CONFIG_CRYPTO=y 1618CONFIG_CRYPTO=y
1619
1620#
1621# Crypto core or helper
1622#
1651CONFIG_CRYPTO_ALGAPI=y 1623CONFIG_CRYPTO_ALGAPI=y
1652CONFIG_CRYPTO_AEAD=m 1624CONFIG_CRYPTO_AEAD=m
1653CONFIG_CRYPTO_BLKCIPHER=y 1625CONFIG_CRYPTO_BLKCIPHER=y
1654# CONFIG_CRYPTO_SEQIV is not set
1655CONFIG_CRYPTO_HASH=y 1626CONFIG_CRYPTO_HASH=y
1656CONFIG_CRYPTO_MANAGER=y 1627CONFIG_CRYPTO_MANAGER=y
1628# CONFIG_CRYPTO_GF128MUL is not set
1629CONFIG_CRYPTO_NULL=m
1630# CONFIG_CRYPTO_CRYPTD is not set
1631CONFIG_CRYPTO_AUTHENC=m
1632CONFIG_CRYPTO_TEST=m
1633
1634#
1635# Authenticated Encryption with Associated Data
1636#
1637# CONFIG_CRYPTO_CCM is not set
1638# CONFIG_CRYPTO_GCM is not set
1639# CONFIG_CRYPTO_SEQIV is not set
1640
1641#
1642# Block modes
1643#
1644CONFIG_CRYPTO_CBC=y
1645# CONFIG_CRYPTO_CTR is not set
1646# CONFIG_CRYPTO_CTS is not set
1647CONFIG_CRYPTO_ECB=m
1648# CONFIG_CRYPTO_LRW is not set
1649CONFIG_CRYPTO_PCBC=m
1650# CONFIG_CRYPTO_XTS is not set
1651
1652#
1653# Hash modes
1654#
1657CONFIG_CRYPTO_HMAC=y 1655CONFIG_CRYPTO_HMAC=y
1658# CONFIG_CRYPTO_XCBC is not set 1656# CONFIG_CRYPTO_XCBC is not set
1659CONFIG_CRYPTO_NULL=m 1657
1658#
1659# Digest
1660#
1661CONFIG_CRYPTO_CRC32C=m
1660CONFIG_CRYPTO_MD4=m 1662CONFIG_CRYPTO_MD4=m
1661CONFIG_CRYPTO_MD5=y 1663CONFIG_CRYPTO_MD5=y
1664CONFIG_CRYPTO_MICHAEL_MIC=m
1662CONFIG_CRYPTO_SHA1=m 1665CONFIG_CRYPTO_SHA1=m
1663CONFIG_CRYPTO_SHA256=m 1666CONFIG_CRYPTO_SHA256=m
1664CONFIG_CRYPTO_SHA512=m 1667CONFIG_CRYPTO_SHA512=m
1665CONFIG_CRYPTO_WP512=m
1666# CONFIG_CRYPTO_TGR192 is not set 1668# CONFIG_CRYPTO_TGR192 is not set
1667# CONFIG_CRYPTO_GF128MUL is not set 1669CONFIG_CRYPTO_WP512=m
1668CONFIG_CRYPTO_ECB=m 1670
1669CONFIG_CRYPTO_CBC=y 1671#
1670CONFIG_CRYPTO_PCBC=m 1672# Ciphers
1671# CONFIG_CRYPTO_LRW is not set 1673#
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
1676# CONFIG_CRYPTO_CRYPTD is not set
1677CONFIG_CRYPTO_DES=y
1678# CONFIG_CRYPTO_FCRYPT is not set
1679CONFIG_CRYPTO_BLOWFISH=m
1680CONFIG_CRYPTO_TWOFISH=m
1681CONFIG_CRYPTO_TWOFISH_COMMON=m
1682CONFIG_CRYPTO_SERPENT=m
1683CONFIG_CRYPTO_AES=m 1674CONFIG_CRYPTO_AES=m
1675CONFIG_CRYPTO_ANUBIS=m
1676CONFIG_CRYPTO_ARC4=m
1677CONFIG_CRYPTO_BLOWFISH=m
1678# CONFIG_CRYPTO_CAMELLIA is not set
1684CONFIG_CRYPTO_CAST5=m 1679CONFIG_CRYPTO_CAST5=m
1685CONFIG_CRYPTO_CAST6=m 1680CONFIG_CRYPTO_CAST6=m
1686CONFIG_CRYPTO_TEA=m 1681CONFIG_CRYPTO_DES=y
1687CONFIG_CRYPTO_ARC4=m 1682# CONFIG_CRYPTO_FCRYPT is not set
1688CONFIG_CRYPTO_KHAZAD=m 1683CONFIG_CRYPTO_KHAZAD=m
1689CONFIG_CRYPTO_ANUBIS=m
1690# CONFIG_CRYPTO_SEED is not set
1691# CONFIG_CRYPTO_SALSA20 is not set 1684# CONFIG_CRYPTO_SALSA20 is not set
1685# CONFIG_CRYPTO_SEED is not set
1686CONFIG_CRYPTO_SERPENT=m
1687CONFIG_CRYPTO_TEA=m
1688CONFIG_CRYPTO_TWOFISH=m
1689CONFIG_CRYPTO_TWOFISH_COMMON=m
1690
1691#
1692# Compression
1693#
1692CONFIG_CRYPTO_DEFLATE=m 1694CONFIG_CRYPTO_DEFLATE=m
1693CONFIG_CRYPTO_MICHAEL_MIC=m
1694CONFIG_CRYPTO_CRC32C=m
1695# CONFIG_CRYPTO_CAMELLIA is not set
1696CONFIG_CRYPTO_TEST=m
1697CONFIG_CRYPTO_AUTHENC=m
1698# CONFIG_CRYPTO_LZO is not set 1695# CONFIG_CRYPTO_LZO is not set
1699# CONFIG_CRYPTO_HW is not set 1696# CONFIG_CRYPTO_HW is not set
1700# CONFIG_PPC_CLOCK is not set 1697# CONFIG_PPC_CLOCK is not set
1698# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig
index b3128fb7ce7e..63f0bdb6340d 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.25-rc6 3# Linux kernel version: 2.6.26-rc3
4# Thu Mar 27 13:55:45 2008 4# Tue May 20 20:01:36 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -30,6 +30,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_HAVE_SETUP_PER_CPU_AREA=y 31CONFIG_HAVE_SETUP_PER_CPU_AREA=y
32CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
33CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_TRACE_IRQFLAGS_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
33CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
34CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
35CONFIG_ARCH_HAS_ILOG2_U64=y 38CONFIG_ARCH_HAS_ILOG2_U64=y
@@ -91,6 +94,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
91CONFIG_SYSCTL=y 94CONFIG_SYSCTL=y
92# CONFIG_EMBEDDED is not set 95# CONFIG_EMBEDDED is not set
93CONFIG_SYSCTL_SYSCALL=y 96CONFIG_SYSCTL_SYSCALL=y
97CONFIG_SYSCTL_SYSCALL_CHECK=y
94CONFIG_KALLSYMS=y 98CONFIG_KALLSYMS=y
95# CONFIG_KALLSYMS_ALL is not set 99# CONFIG_KALLSYMS_ALL is not set
96# CONFIG_KALLSYMS_EXTRA_PASS is not set 100# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -118,12 +122,14 @@ CONFIG_HAVE_OPROFILE=y
118# CONFIG_KPROBES is not set 122# CONFIG_KPROBES is not set
119CONFIG_HAVE_KPROBES=y 123CONFIG_HAVE_KPROBES=y
120CONFIG_HAVE_KRETPROBES=y 124CONFIG_HAVE_KRETPROBES=y
125# CONFIG_HAVE_DMA_ATTRS is not set
121CONFIG_PROC_PAGE_MONITOR=y 126CONFIG_PROC_PAGE_MONITOR=y
122CONFIG_SLABINFO=y 127CONFIG_SLABINFO=y
123CONFIG_RT_MUTEXES=y 128CONFIG_RT_MUTEXES=y
124# CONFIG_TINY_SHMEM is not set 129# CONFIG_TINY_SHMEM is not set
125CONFIG_BASE_SMALL=0 130CONFIG_BASE_SMALL=0
126CONFIG_MODULES=y 131CONFIG_MODULES=y
132# CONFIG_MODULE_FORCE_LOAD is not set
127CONFIG_MODULE_UNLOAD=y 133CONFIG_MODULE_UNLOAD=y
128# CONFIG_MODULE_FORCE_UNLOAD is not set 134# CONFIG_MODULE_FORCE_UNLOAD is not set
129CONFIG_MODVERSIONS=y 135CONFIG_MODVERSIONS=y
@@ -172,11 +178,11 @@ CONFIG_VIOPATH=y
172# CONFIG_PPC_PMAC is not set 178# CONFIG_PPC_PMAC is not set
173# CONFIG_PPC_MAPLE is not set 179# CONFIG_PPC_MAPLE is not set
174# CONFIG_PPC_PASEMI is not set 180# CONFIG_PPC_PASEMI is not set
175# CONFIG_PPC_CELLEB is not set
176# CONFIG_PPC_PS3 is not set 181# CONFIG_PPC_PS3 is not set
177# CONFIG_PPC_CELL is not set 182# CONFIG_PPC_CELL is not set
178# CONFIG_PPC_CELL_NATIVE is not set 183# CONFIG_PPC_CELL_NATIVE is not set
179# CONFIG_PPC_IBM_CELL_BLADE is not set 184# CONFIG_PPC_IBM_CELL_BLADE is not set
185# CONFIG_PPC_CELLEB is not set
180# CONFIG_PQ2ADS is not set 186# CONFIG_PQ2ADS is not set
181# CONFIG_IPIC is not set 187# CONFIG_IPIC is not set
182# CONFIG_MPIC is not set 188# CONFIG_MPIC is not set
@@ -212,7 +218,6 @@ CONFIG_PREEMPT_NONE=y
212CONFIG_BINFMT_ELF=y 218CONFIG_BINFMT_ELF=y
213CONFIG_COMPAT_BINFMT_ELF=y 219CONFIG_COMPAT_BINFMT_ELF=y
214# CONFIG_BINFMT_MISC is not set 220# CONFIG_BINFMT_MISC is not set
215CONFIG_FORCE_MAX_ZONEORDER=13
216CONFIG_IOMMU_VMERGE=y 221CONFIG_IOMMU_VMERGE=y
217CONFIG_IOMMU_HELPER=y 222CONFIG_IOMMU_HELPER=y
218CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 223CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
@@ -234,12 +239,14 @@ CONFIG_FLATMEM=y
234CONFIG_FLAT_NODE_MEM_MAP=y 239CONFIG_FLAT_NODE_MEM_MAP=y
235# CONFIG_SPARSEMEM_STATIC is not set 240# CONFIG_SPARSEMEM_STATIC is not set
236CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y 241CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
242CONFIG_PAGEFLAGS_EXTENDED=y
237CONFIG_SPLIT_PTLOCK_CPUS=4 243CONFIG_SPLIT_PTLOCK_CPUS=4
238CONFIG_RESOURCES_64BIT=y 244CONFIG_RESOURCES_64BIT=y
239CONFIG_ZONE_DMA_FLAG=1 245CONFIG_ZONE_DMA_FLAG=1
240CONFIG_BOUNCE=y 246CONFIG_BOUNCE=y
241# CONFIG_PPC_HAS_HASH_64K is not set 247# CONFIG_PPC_HAS_HASH_64K is not set
242# CONFIG_PPC_64K_PAGES is not set 248# CONFIG_PPC_64K_PAGES is not set
249CONFIG_FORCE_MAX_ZONEORDER=13
243# CONFIG_SCHED_SMT is not set 250# CONFIG_SCHED_SMT is not set
244CONFIG_PROC_DEVICETREE=y 251CONFIG_PROC_DEVICETREE=y
245# CONFIG_CMDLINE_BOOL is not set 252# CONFIG_CMDLINE_BOOL is not set
@@ -263,7 +270,10 @@ CONFIG_ARCH_SUPPORTS_MSI=y
263# CONFIG_PCI_DEBUG is not set 270# CONFIG_PCI_DEBUG is not set
264# CONFIG_PCCARD is not set 271# CONFIG_PCCARD is not set
265# CONFIG_HOTPLUG_PCI is not set 272# CONFIG_HOTPLUG_PCI is not set
273# CONFIG_HAS_RAPIDIO is not set
274CONFIG_PAGE_OFFSET=0xc000000000000000
266CONFIG_KERNEL_START=0xc000000000000000 275CONFIG_KERNEL_START=0xc000000000000000
276CONFIG_PHYSICAL_START=0x00000000
267 277
268# 278#
269# Networking 279# Networking
@@ -310,8 +320,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
310# CONFIG_TCP_MD5SIG is not set 320# CONFIG_TCP_MD5SIG is not set
311# CONFIG_IP_VS is not set 321# CONFIG_IP_VS is not set
312# CONFIG_IPV6 is not set 322# CONFIG_IPV6 is not set
313# CONFIG_INET6_XFRM_TUNNEL is not set
314# CONFIG_INET6_TUNNEL is not set
315# CONFIG_NETWORK_SECMARK is not set 323# CONFIG_NETWORK_SECMARK is not set
316CONFIG_NETFILTER=y 324CONFIG_NETFILTER=y
317# CONFIG_NETFILTER_DEBUG is not set 325# CONFIG_NETFILTER_DEBUG is not set
@@ -327,6 +335,7 @@ CONFIG_NF_CONNTRACK=m
327# CONFIG_NF_CT_ACCT is not set 335# CONFIG_NF_CT_ACCT is not set
328CONFIG_NF_CONNTRACK_MARK=y 336CONFIG_NF_CONNTRACK_MARK=y
329CONFIG_NF_CONNTRACK_EVENTS=y 337CONFIG_NF_CONNTRACK_EVENTS=y
338# CONFIG_NF_CT_PROTO_DCCP is not set
330# CONFIG_NF_CT_PROTO_SCTP is not set 339# CONFIG_NF_CT_PROTO_SCTP is not set
331# CONFIG_NF_CT_PROTO_UDPLITE is not set 340# CONFIG_NF_CT_PROTO_UDPLITE is not set
332# CONFIG_NF_CONNTRACK_AMANDA is not set 341# CONFIG_NF_CONNTRACK_AMANDA is not set
@@ -631,7 +640,6 @@ CONFIG_MII=y
631# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 640# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
632CONFIG_NET_PCI=y 641CONFIG_NET_PCI=y
633CONFIG_PCNET32=y 642CONFIG_PCNET32=y
634CONFIG_PCNET32_NAPI=y
635# CONFIG_AMD8111_ETH is not set 643# CONFIG_AMD8111_ETH is not set
636# CONFIG_ADAPTEC_STARFIRE is not set 644# CONFIG_ADAPTEC_STARFIRE is not set
637# CONFIG_B44 is not set 645# CONFIG_B44 is not set
@@ -667,7 +675,6 @@ CONFIG_E1000=m
667# CONFIG_SIS190 is not set 675# CONFIG_SIS190 is not set
668# CONFIG_SKGE is not set 676# CONFIG_SKGE is not set
669# CONFIG_SKY2 is not set 677# CONFIG_SKY2 is not set
670# CONFIG_SK98LIN is not set
671# CONFIG_VIA_VELOCITY is not set 678# CONFIG_VIA_VELOCITY is not set
672# CONFIG_TIGON3 is not set 679# CONFIG_TIGON3 is not set
673# CONFIG_BNX2 is not set 680# CONFIG_BNX2 is not set
@@ -682,10 +689,10 @@ CONFIG_NETDEV_10000=y
682# CONFIG_MYRI10GE is not set 689# CONFIG_MYRI10GE is not set
683# CONFIG_NETXEN_NIC is not set 690# CONFIG_NETXEN_NIC is not set
684# CONFIG_NIU is not set 691# CONFIG_NIU is not set
685# CONFIG_PASEMI_MAC is not set
686# CONFIG_MLX4_CORE is not set 692# CONFIG_MLX4_CORE is not set
687# CONFIG_TEHUTI is not set 693# CONFIG_TEHUTI is not set
688# CONFIG_BNX2X is not set 694# CONFIG_BNX2X is not set
695# CONFIG_SFC is not set
689CONFIG_TR=y 696CONFIG_TR=y
690CONFIG_IBMOL=y 697CONFIG_IBMOL=y
691# CONFIG_3C359 is not set 698# CONFIG_3C359 is not set
@@ -696,6 +703,7 @@ CONFIG_IBMOL=y
696# 703#
697# CONFIG_WLAN_PRE80211 is not set 704# CONFIG_WLAN_PRE80211 is not set
698# CONFIG_WLAN_80211 is not set 705# CONFIG_WLAN_80211 is not set
706# CONFIG_IWLWIFI_LEDS is not set
699# CONFIG_WAN is not set 707# CONFIG_WAN is not set
700CONFIG_ISERIES_VETH=y 708CONFIG_ISERIES_VETH=y
701# CONFIG_FDDI is not set 709# CONFIG_FDDI is not set
@@ -762,6 +770,7 @@ CONFIG_VT=y
762CONFIG_VT_CONSOLE=y 770CONFIG_VT_CONSOLE=y
763CONFIG_HW_CONSOLE=y 771CONFIG_HW_CONSOLE=y
764# CONFIG_VT_HW_CONSOLE_BINDING is not set 772# CONFIG_VT_HW_CONSOLE_BINDING is not set
773CONFIG_DEVKMEM=y
765# CONFIG_SERIAL_NONSTANDARD is not set 774# CONFIG_SERIAL_NONSTANDARD is not set
766# CONFIG_NOZOMI is not set 775# CONFIG_NOZOMI is not set
767 776
@@ -793,12 +802,7 @@ CONFIG_MAX_RAW_DEVS=256
793# CONFIG_TCG_TPM is not set 802# CONFIG_TCG_TPM is not set
794CONFIG_DEVPORT=y 803CONFIG_DEVPORT=y
795# CONFIG_I2C is not set 804# CONFIG_I2C is not set
796
797#
798# SPI support
799#
800# CONFIG_SPI is not set 805# CONFIG_SPI is not set
801# CONFIG_SPI_MASTER is not set
802# CONFIG_W1 is not set 806# CONFIG_W1 is not set
803# CONFIG_POWER_SUPPLY is not set 807# CONFIG_POWER_SUPPLY is not set
804# CONFIG_HWMON is not set 808# CONFIG_HWMON is not set
@@ -815,12 +819,22 @@ CONFIG_SSB_POSSIBLE=y
815# Multifunction device drivers 819# Multifunction device drivers
816# 820#
817# CONFIG_MFD_SM501 is not set 821# CONFIG_MFD_SM501 is not set
822# CONFIG_HTC_PASIC3 is not set
818 823
819# 824#
820# Multimedia devices 825# Multimedia devices
821# 826#
827
828#
829# Multimedia core support
830#
822# CONFIG_VIDEO_DEV is not set 831# CONFIG_VIDEO_DEV is not set
823# CONFIG_DVB_CORE is not set 832# CONFIG_DVB_CORE is not set
833# CONFIG_VIDEO_MEDIA is not set
834
835#
836# Multimedia drivers
837#
824# CONFIG_DAB is not set 838# CONFIG_DAB is not set
825 839
826# 840#
@@ -854,14 +868,11 @@ CONFIG_DUMMY_CONSOLE=y
854# CONFIG_MMC is not set 868# CONFIG_MMC is not set
855# CONFIG_MEMSTICK is not set 869# CONFIG_MEMSTICK is not set
856# CONFIG_NEW_LEDS is not set 870# CONFIG_NEW_LEDS is not set
871# CONFIG_ACCESSIBILITY is not set
857# CONFIG_INFINIBAND is not set 872# CONFIG_INFINIBAND is not set
858# CONFIG_EDAC is not set 873# CONFIG_EDAC is not set
859# CONFIG_RTC_CLASS is not set 874# CONFIG_RTC_CLASS is not set
860# CONFIG_DMADEVICES is not set 875# CONFIG_DMADEVICES is not set
861
862#
863# Userspace I/O
864#
865# CONFIG_UIO is not set 876# CONFIG_UIO is not set
866 877
867# 878#
@@ -895,9 +906,9 @@ CONFIG_JFS_SECURITY=y
895CONFIG_FS_POSIX_ACL=y 906CONFIG_FS_POSIX_ACL=y
896CONFIG_XFS_FS=m 907CONFIG_XFS_FS=m
897# CONFIG_XFS_QUOTA is not set 908# CONFIG_XFS_QUOTA is not set
898CONFIG_XFS_SECURITY=y
899CONFIG_XFS_POSIX_ACL=y 909CONFIG_XFS_POSIX_ACL=y
900# CONFIG_XFS_RT is not set 910# CONFIG_XFS_RT is not set
911# CONFIG_XFS_DEBUG is not set
901CONFIG_GFS2_FS=m 912CONFIG_GFS2_FS=m
902CONFIG_GFS2_FS_LOCKING_NOLOCK=m 913CONFIG_GFS2_FS_LOCKING_NOLOCK=m
903CONFIG_GFS2_FS_LOCKING_DLM=m 914CONFIG_GFS2_FS_LOCKING_DLM=m
@@ -966,13 +977,11 @@ CONFIG_NFS_FS=y
966CONFIG_NFS_V3=y 977CONFIG_NFS_V3=y
967CONFIG_NFS_V3_ACL=y 978CONFIG_NFS_V3_ACL=y
968CONFIG_NFS_V4=y 979CONFIG_NFS_V4=y
969# CONFIG_NFS_DIRECTIO is not set
970CONFIG_NFSD=m 980CONFIG_NFSD=m
971CONFIG_NFSD_V2_ACL=y 981CONFIG_NFSD_V2_ACL=y
972CONFIG_NFSD_V3=y 982CONFIG_NFSD_V3=y
973CONFIG_NFSD_V3_ACL=y 983CONFIG_NFSD_V3_ACL=y
974CONFIG_NFSD_V4=y 984CONFIG_NFSD_V4=y
975CONFIG_NFSD_TCP=y
976CONFIG_LOCKD=y 985CONFIG_LOCKD=y
977CONFIG_LOCKD_V4=y 986CONFIG_LOCKD_V4=y
978CONFIG_EXPORTFS=m 987CONFIG_EXPORTFS=m
@@ -1047,9 +1056,10 @@ CONFIG_DLM=m
1047# Library routines 1056# Library routines
1048# 1057#
1049CONFIG_BITREVERSE=y 1058CONFIG_BITREVERSE=y
1059# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1050CONFIG_CRC_CCITT=m 1060CONFIG_CRC_CCITT=m
1051# CONFIG_CRC16 is not set 1061# CONFIG_CRC16 is not set
1052# CONFIG_CRC_ITU_T is not set 1062CONFIG_CRC_ITU_T=m
1053CONFIG_CRC32=y 1063CONFIG_CRC32=y
1054# CONFIG_CRC7 is not set 1064# CONFIG_CRC7 is not set
1055CONFIG_LIBCRC32C=m 1065CONFIG_LIBCRC32C=m
@@ -1071,6 +1081,7 @@ CONFIG_HAVE_LMB=y
1071# CONFIG_PRINTK_TIME is not set 1081# CONFIG_PRINTK_TIME is not set
1072CONFIG_ENABLE_WARN_DEPRECATED=y 1082CONFIG_ENABLE_WARN_DEPRECATED=y
1073CONFIG_ENABLE_MUST_CHECK=y 1083CONFIG_ENABLE_MUST_CHECK=y
1084CONFIG_FRAME_WARN=2048
1074CONFIG_MAGIC_SYSRQ=y 1085CONFIG_MAGIC_SYSRQ=y
1075# CONFIG_UNUSED_SYMBOLS is not set 1086# CONFIG_UNUSED_SYMBOLS is not set
1076CONFIG_DEBUG_FS=y 1087CONFIG_DEBUG_FS=y
@@ -1081,18 +1092,23 @@ CONFIG_DETECT_SOFTLOCKUP=y
1081CONFIG_SCHED_DEBUG=y 1092CONFIG_SCHED_DEBUG=y
1082# CONFIG_SCHEDSTATS is not set 1093# CONFIG_SCHEDSTATS is not set
1083# CONFIG_TIMER_STATS is not set 1094# CONFIG_TIMER_STATS is not set
1095# CONFIG_DEBUG_OBJECTS is not set
1084# CONFIG_SLUB_DEBUG_ON is not set 1096# CONFIG_SLUB_DEBUG_ON is not set
1085# CONFIG_SLUB_STATS is not set 1097# CONFIG_SLUB_STATS is not set
1086# CONFIG_DEBUG_RT_MUTEXES is not set 1098# CONFIG_DEBUG_RT_MUTEXES is not set
1087# CONFIG_RT_MUTEX_TESTER is not set 1099# CONFIG_RT_MUTEX_TESTER is not set
1088# CONFIG_DEBUG_SPINLOCK is not set 1100# CONFIG_DEBUG_SPINLOCK is not set
1089# CONFIG_DEBUG_MUTEXES is not set 1101# CONFIG_DEBUG_MUTEXES is not set
1102# CONFIG_DEBUG_LOCK_ALLOC is not set
1103# CONFIG_PROVE_LOCKING is not set
1104# CONFIG_LOCK_STAT is not set
1090# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1105# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1091# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1106# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1092# CONFIG_DEBUG_KOBJECT is not set 1107# CONFIG_DEBUG_KOBJECT is not set
1093CONFIG_DEBUG_BUGVERBOSE=y 1108CONFIG_DEBUG_BUGVERBOSE=y
1094# CONFIG_DEBUG_INFO is not set 1109# CONFIG_DEBUG_INFO is not set
1095# CONFIG_DEBUG_VM is not set 1110# CONFIG_DEBUG_VM is not set
1111# CONFIG_DEBUG_WRITECOUNT is not set
1096# CONFIG_DEBUG_LIST is not set 1112# CONFIG_DEBUG_LIST is not set
1097# CONFIG_DEBUG_SG is not set 1113# CONFIG_DEBUG_SG is not set
1098# CONFIG_BOOT_PRINTK_DELAY is not set 1114# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1116,53 +1132,83 @@ CONFIG_IRQSTACKS=y
1116# CONFIG_SECURITY is not set 1132# CONFIG_SECURITY is not set
1117# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1133# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1118CONFIG_CRYPTO=y 1134CONFIG_CRYPTO=y
1135
1136#
1137# Crypto core or helper
1138#
1119CONFIG_CRYPTO_ALGAPI=y 1139CONFIG_CRYPTO_ALGAPI=y
1120CONFIG_CRYPTO_AEAD=m 1140CONFIG_CRYPTO_AEAD=m
1121CONFIG_CRYPTO_BLKCIPHER=y 1141CONFIG_CRYPTO_BLKCIPHER=y
1122# CONFIG_CRYPTO_SEQIV is not set
1123CONFIG_CRYPTO_HASH=y 1142CONFIG_CRYPTO_HASH=y
1124CONFIG_CRYPTO_MANAGER=y 1143CONFIG_CRYPTO_MANAGER=y
1144# CONFIG_CRYPTO_GF128MUL is not set
1145CONFIG_CRYPTO_NULL=m
1146# CONFIG_CRYPTO_CRYPTD is not set
1147CONFIG_CRYPTO_AUTHENC=m
1148CONFIG_CRYPTO_TEST=m
1149
1150#
1151# Authenticated Encryption with Associated Data
1152#
1153# CONFIG_CRYPTO_CCM is not set
1154# CONFIG_CRYPTO_GCM is not set
1155# CONFIG_CRYPTO_SEQIV is not set
1156
1157#
1158# Block modes
1159#
1160CONFIG_CRYPTO_CBC=y
1161# CONFIG_CRYPTO_CTR is not set
1162# CONFIG_CRYPTO_CTS is not set
1163CONFIG_CRYPTO_ECB=m
1164# CONFIG_CRYPTO_LRW is not set
1165CONFIG_CRYPTO_PCBC=m
1166# CONFIG_CRYPTO_XTS is not set
1167
1168#
1169# Hash modes
1170#
1125CONFIG_CRYPTO_HMAC=y 1171CONFIG_CRYPTO_HMAC=y
1126# CONFIG_CRYPTO_XCBC is not set 1172# CONFIG_CRYPTO_XCBC is not set
1127CONFIG_CRYPTO_NULL=m 1173
1174#
1175# Digest
1176#
1177CONFIG_CRYPTO_CRC32C=m
1128CONFIG_CRYPTO_MD4=m 1178CONFIG_CRYPTO_MD4=m
1129CONFIG_CRYPTO_MD5=y 1179CONFIG_CRYPTO_MD5=y
1180CONFIG_CRYPTO_MICHAEL_MIC=m
1130CONFIG_CRYPTO_SHA1=m 1181CONFIG_CRYPTO_SHA1=m
1131CONFIG_CRYPTO_SHA256=m 1182CONFIG_CRYPTO_SHA256=m
1132CONFIG_CRYPTO_SHA512=m 1183CONFIG_CRYPTO_SHA512=m
1133CONFIG_CRYPTO_WP512=m
1134CONFIG_CRYPTO_TGR192=m 1184CONFIG_CRYPTO_TGR192=m
1135# CONFIG_CRYPTO_GF128MUL is not set 1185CONFIG_CRYPTO_WP512=m
1136CONFIG_CRYPTO_ECB=m 1186
1137CONFIG_CRYPTO_CBC=y 1187#
1138CONFIG_CRYPTO_PCBC=m 1188# Ciphers
1139# CONFIG_CRYPTO_LRW is not set 1189#
1140# CONFIG_CRYPTO_XTS is not set
1141# CONFIG_CRYPTO_CTR is not set
1142# CONFIG_CRYPTO_GCM is not set
1143# CONFIG_CRYPTO_CCM is not set
1144# CONFIG_CRYPTO_CRYPTD is not set
1145CONFIG_CRYPTO_DES=y
1146# CONFIG_CRYPTO_FCRYPT is not set
1147CONFIG_CRYPTO_BLOWFISH=m
1148CONFIG_CRYPTO_TWOFISH=m
1149CONFIG_CRYPTO_TWOFISH_COMMON=m
1150CONFIG_CRYPTO_SERPENT=m
1151CONFIG_CRYPTO_AES=m 1190CONFIG_CRYPTO_AES=m
1191CONFIG_CRYPTO_ANUBIS=m
1192CONFIG_CRYPTO_ARC4=m
1193CONFIG_CRYPTO_BLOWFISH=m
1194# CONFIG_CRYPTO_CAMELLIA is not set
1152CONFIG_CRYPTO_CAST5=m 1195CONFIG_CRYPTO_CAST5=m
1153CONFIG_CRYPTO_CAST6=m 1196CONFIG_CRYPTO_CAST6=m
1154CONFIG_CRYPTO_TEA=m 1197CONFIG_CRYPTO_DES=y
1155CONFIG_CRYPTO_ARC4=m 1198# CONFIG_CRYPTO_FCRYPT is not set
1156CONFIG_CRYPTO_KHAZAD=m 1199CONFIG_CRYPTO_KHAZAD=m
1157CONFIG_CRYPTO_ANUBIS=m
1158CONFIG_CRYPTO_SEED=m
1159# CONFIG_CRYPTO_SALSA20 is not set 1200# CONFIG_CRYPTO_SALSA20 is not set
1201CONFIG_CRYPTO_SEED=m
1202CONFIG_CRYPTO_SERPENT=m
1203CONFIG_CRYPTO_TEA=m
1204CONFIG_CRYPTO_TWOFISH=m
1205CONFIG_CRYPTO_TWOFISH_COMMON=m
1206
1207#
1208# Compression
1209#
1160CONFIG_CRYPTO_DEFLATE=m 1210CONFIG_CRYPTO_DEFLATE=m
1161CONFIG_CRYPTO_MICHAEL_MIC=m
1162CONFIG_CRYPTO_CRC32C=m
1163# CONFIG_CRYPTO_CAMELLIA is not set
1164CONFIG_CRYPTO_TEST=m
1165CONFIG_CRYPTO_AUTHENC=m
1166# CONFIG_CRYPTO_LZO is not set 1211# CONFIG_CRYPTO_LZO is not set
1167# CONFIG_CRYPTO_HW is not set 1212# CONFIG_CRYPTO_HW is not set
1168# CONFIG_PPC_CLOCK is not set 1213# CONFIG_PPC_CLOCK is not set
1214# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/pmac32_defconfig b/arch/powerpc/configs/pmac32_defconfig
index fca114252ac7..3688e4bb6fc2 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.25-rc6 3# Linux kernel version: 2.6.26-rc3
4# Thu Mar 27 13:56:21 2008 4# Tue May 20 20:02:24 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y 38CONFIG_GENERIC_HWEIGHT=y
@@ -91,6 +93,7 @@ CONFIG_INITRAMFS_SOURCE=""
91CONFIG_SYSCTL=y 93CONFIG_SYSCTL=y
92# CONFIG_EMBEDDED is not set 94# CONFIG_EMBEDDED is not set
93CONFIG_SYSCTL_SYSCALL=y 95CONFIG_SYSCTL_SYSCALL=y
96CONFIG_SYSCTL_SYSCALL_CHECK=y
94CONFIG_KALLSYMS=y 97CONFIG_KALLSYMS=y
95# CONFIG_KALLSYMS_ALL is not set 98# CONFIG_KALLSYMS_ALL is not set
96# CONFIG_KALLSYMS_EXTRA_PASS is not set 99# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -119,12 +122,14 @@ CONFIG_HAVE_OPROFILE=y
119# CONFIG_KPROBES is not set 122# CONFIG_KPROBES is not set
120CONFIG_HAVE_KPROBES=y 123CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 124CONFIG_HAVE_KRETPROBES=y
125# CONFIG_HAVE_DMA_ATTRS is not set
122CONFIG_PROC_PAGE_MONITOR=y 126CONFIG_PROC_PAGE_MONITOR=y
123CONFIG_SLABINFO=y 127CONFIG_SLABINFO=y
124CONFIG_RT_MUTEXES=y 128CONFIG_RT_MUTEXES=y
125# CONFIG_TINY_SHMEM is not set 129# CONFIG_TINY_SHMEM is not set
126CONFIG_BASE_SMALL=0 130CONFIG_BASE_SMALL=0
127CONFIG_MODULES=y 131CONFIG_MODULES=y
132# CONFIG_MODULE_FORCE_LOAD is not set
128CONFIG_MODULE_UNLOAD=y 133CONFIG_MODULE_UNLOAD=y
129CONFIG_MODULE_FORCE_UNLOAD=y 134CONFIG_MODULE_FORCE_UNLOAD=y
130# CONFIG_MODVERSIONS is not set 135# CONFIG_MODVERSIONS is not set
@@ -185,6 +190,7 @@ CONFIG_CPU_FREQ_TABLE=y
185CONFIG_CPU_FREQ_STAT=y 190CONFIG_CPU_FREQ_STAT=y
186# CONFIG_CPU_FREQ_STAT_DETAILS is not set 191# CONFIG_CPU_FREQ_STAT_DETAILS is not set
187CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 192CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
193# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
188# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set 194# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
189# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set 195# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
190# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set 196# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
@@ -236,16 +242,17 @@ CONFIG_FLATMEM=y
236CONFIG_FLAT_NODE_MEM_MAP=y 242CONFIG_FLAT_NODE_MEM_MAP=y
237# CONFIG_SPARSEMEM_STATIC is not set 243# CONFIG_SPARSEMEM_STATIC is not set
238# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 244# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
245CONFIG_PAGEFLAGS_EXTENDED=y
239CONFIG_SPLIT_PTLOCK_CPUS=4 246CONFIG_SPLIT_PTLOCK_CPUS=4
240# CONFIG_RESOURCES_64BIT is not set 247# CONFIG_RESOURCES_64BIT is not set
241CONFIG_ZONE_DMA_FLAG=1 248CONFIG_ZONE_DMA_FLAG=1
242CONFIG_BOUNCE=y 249CONFIG_BOUNCE=y
243CONFIG_VIRT_TO_BUS=y 250CONFIG_VIRT_TO_BUS=y
251CONFIG_FORCE_MAX_ZONEORDER=11
244CONFIG_PROC_DEVICETREE=y 252CONFIG_PROC_DEVICETREE=y
245# CONFIG_CMDLINE_BOOL is not set 253# CONFIG_CMDLINE_BOOL is not set
246CONFIG_ARCH_WANTS_FREEZER_CONTROL=y 254CONFIG_ARCH_WANTS_FREEZER_CONTROL=y
247CONFIG_PM=y 255CONFIG_PM=y
248# CONFIG_PM_LEGACY is not set
249CONFIG_PM_DEBUG=y 256CONFIG_PM_DEBUG=y
250# CONFIG_PM_VERBOSE is not set 257# CONFIG_PM_VERBOSE is not set
251CONFIG_CAN_PM_TRACE=y 258CONFIG_CAN_PM_TRACE=y
@@ -292,6 +299,7 @@ CONFIG_YENTA_TOSHIBA=y
292# CONFIG_I82092 is not set 299# CONFIG_I82092 is not set
293CONFIG_PCCARD_NONSTATIC=m 300CONFIG_PCCARD_NONSTATIC=m
294# CONFIG_HOTPLUG_PCI is not set 301# CONFIG_HOTPLUG_PCI is not set
302# CONFIG_HAS_RAPIDIO is not set
295 303
296# 304#
297# Advanced setup 305# Advanced setup
@@ -301,11 +309,11 @@ CONFIG_PCCARD_NONSTATIC=m
301# 309#
302# Default settings for advanced configuration options are used 310# Default settings for advanced configuration options are used
303# 311#
304CONFIG_HIGHMEM_START=0xfe000000
305CONFIG_LOWMEM_SIZE=0x30000000 312CONFIG_LOWMEM_SIZE=0x30000000
313CONFIG_PAGE_OFFSET=0xc0000000
306CONFIG_KERNEL_START=0xc0000000 314CONFIG_KERNEL_START=0xc0000000
315CONFIG_PHYSICAL_START=0x00000000
307CONFIG_TASK_SIZE=0xc0000000 316CONFIG_TASK_SIZE=0xc0000000
308CONFIG_BOOT_LOAD=0x00800000
309 317
310# 318#
311# Networking 319# Networking
@@ -352,8 +360,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
352# CONFIG_TCP_MD5SIG is not set 360# CONFIG_TCP_MD5SIG is not set
353# CONFIG_IP_VS is not set 361# CONFIG_IP_VS is not set
354# CONFIG_IPV6 is not set 362# CONFIG_IPV6 is not set
355# CONFIG_INET6_XFRM_TUNNEL is not set
356# CONFIG_INET6_TUNNEL is not set
357# CONFIG_NETWORK_SECMARK is not set 363# CONFIG_NETWORK_SECMARK is not set
358CONFIG_NETFILTER=y 364CONFIG_NETFILTER=y
359# CONFIG_NETFILTER_DEBUG is not set 365# CONFIG_NETFILTER_DEBUG is not set
@@ -369,6 +375,7 @@ CONFIG_NF_CONNTRACK=m
369# CONFIG_NF_CT_ACCT is not set 375# CONFIG_NF_CT_ACCT is not set
370# CONFIG_NF_CONNTRACK_MARK is not set 376# CONFIG_NF_CONNTRACK_MARK is not set
371# CONFIG_NF_CONNTRACK_EVENTS is not set 377# CONFIG_NF_CONNTRACK_EVENTS is not set
378CONFIG_NF_CT_PROTO_DCCP=m
372# CONFIG_NF_CT_PROTO_SCTP is not set 379# CONFIG_NF_CT_PROTO_SCTP is not set
373# CONFIG_NF_CT_PROTO_UDPLITE is not set 380# CONFIG_NF_CT_PROTO_UDPLITE is not set
374# CONFIG_NF_CONNTRACK_AMANDA is not set 381# CONFIG_NF_CONNTRACK_AMANDA is not set
@@ -445,6 +452,7 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m
445CONFIG_IP_NF_TARGET_REDIRECT=m 452CONFIG_IP_NF_TARGET_REDIRECT=m
446CONFIG_IP_NF_TARGET_NETMAP=m 453CONFIG_IP_NF_TARGET_NETMAP=m
447# CONFIG_NF_NAT_SNMP_BASIC is not set 454# CONFIG_NF_NAT_SNMP_BASIC is not set
455CONFIG_NF_NAT_PROTO_DCCP=m
448CONFIG_NF_NAT_FTP=m 456CONFIG_NF_NAT_FTP=m
449CONFIG_NF_NAT_IRC=m 457CONFIG_NF_NAT_IRC=m
450CONFIG_NF_NAT_TFTP=m 458CONFIG_NF_NAT_TFTP=m
@@ -586,7 +594,6 @@ CONFIG_MAC80211=m
586# Rate control algorithm selection 594# Rate control algorithm selection
587# 595#
588CONFIG_MAC80211_RC_DEFAULT_PID=y 596CONFIG_MAC80211_RC_DEFAULT_PID=y
589# CONFIG_MAC80211_RC_DEFAULT_SIMPLE is not set
590# CONFIG_MAC80211_RC_DEFAULT_NONE is not set 597# CONFIG_MAC80211_RC_DEFAULT_NONE is not set
591 598
592# 599#
@@ -598,7 +605,7 @@ CONFIG_MAC80211_RC_DEFAULT_PID=y
598# 605#
599CONFIG_MAC80211_RC_DEFAULT="pid" 606CONFIG_MAC80211_RC_DEFAULT="pid"
600CONFIG_MAC80211_RC_PID=y 607CONFIG_MAC80211_RC_PID=y
601# CONFIG_MAC80211_RC_SIMPLE is not set 608# CONFIG_MAC80211_MESH is not set
602CONFIG_MAC80211_LEDS=y 609CONFIG_MAC80211_LEDS=y
603# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set 610# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set
604# CONFIG_MAC80211_DEBUG is not set 611# CONFIG_MAC80211_DEBUG is not set
@@ -607,7 +614,6 @@ CONFIG_IEEE80211=m
607CONFIG_IEEE80211_CRYPT_WEP=m 614CONFIG_IEEE80211_CRYPT_WEP=m
608CONFIG_IEEE80211_CRYPT_CCMP=m 615CONFIG_IEEE80211_CRYPT_CCMP=m
609CONFIG_IEEE80211_CRYPT_TKIP=m 616CONFIG_IEEE80211_CRYPT_TKIP=m
610# CONFIG_IEEE80211_SOFTMAC is not set
611# CONFIG_RFKILL is not set 617# CONFIG_RFKILL is not set
612# CONFIG_NET_9P is not set 618# CONFIG_NET_9P is not set
613 619
@@ -629,6 +635,7 @@ CONFIG_CONNECTOR=y
629CONFIG_PROC_EVENTS=y 635CONFIG_PROC_EVENTS=y
630# CONFIG_MTD is not set 636# CONFIG_MTD is not set
631CONFIG_OF_DEVICE=y 637CONFIG_OF_DEVICE=y
638CONFIG_OF_I2C=y
632# CONFIG_PARPORT is not set 639# CONFIG_PARPORT is not set
633CONFIG_BLK_DEV=y 640CONFIG_BLK_DEV=y
634# CONFIG_BLK_DEV_FD is not set 641# CONFIG_BLK_DEV_FD is not set
@@ -720,7 +727,7 @@ CONFIG_BLK_DEV_IDE_PMAC=y
720CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y 727CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
721CONFIG_BLK_DEV_IDEDMA_PMAC=y 728CONFIG_BLK_DEV_IDEDMA_PMAC=y
722CONFIG_BLK_DEV_IDEDMA=y 729CONFIG_BLK_DEV_IDEDMA=y
723CONFIG_IDE_ARCH_OBSOLETE_INIT=y 730# CONFIG_BLK_DEV_HD_ONLY is not set
724# CONFIG_BLK_DEV_HD is not set 731# CONFIG_BLK_DEV_HD is not set
725 732
726# 733#
@@ -906,7 +913,6 @@ CONFIG_SUNGEM=y
906# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 913# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
907CONFIG_NET_PCI=y 914CONFIG_NET_PCI=y
908CONFIG_PCNET32=y 915CONFIG_PCNET32=y
909# CONFIG_PCNET32_NAPI is not set
910# CONFIG_AMD8111_ETH is not set 916# CONFIG_AMD8111_ETH is not set
911# CONFIG_ADAPTEC_STARFIRE is not set 917# CONFIG_ADAPTEC_STARFIRE is not set
912# CONFIG_B44 is not set 918# CONFIG_B44 is not set
@@ -940,7 +946,6 @@ CONFIG_NETDEV_1000=y
940# CONFIG_SIS190 is not set 946# CONFIG_SIS190 is not set
941# CONFIG_SKGE is not set 947# CONFIG_SKGE is not set
942# CONFIG_SKY2 is not set 948# CONFIG_SKY2 is not set
943# CONFIG_SK98LIN is not set
944# CONFIG_VIA_VELOCITY is not set 949# CONFIG_VIA_VELOCITY is not set
945# CONFIG_TIGON3 is not set 950# CONFIG_TIGON3 is not set
946# CONFIG_BNX2 is not set 951# CONFIG_BNX2 is not set
@@ -959,6 +964,7 @@ CONFIG_NETDEV_10000=y
959# CONFIG_MLX4_CORE is not set 964# CONFIG_MLX4_CORE is not set
960# CONFIG_TEHUTI is not set 965# CONFIG_TEHUTI is not set
961# CONFIG_BNX2X is not set 966# CONFIG_BNX2X is not set
967# CONFIG_SFC is not set
962# CONFIG_TR is not set 968# CONFIG_TR is not set
963 969
964# 970#
@@ -992,6 +998,8 @@ CONFIG_P54_COMMON=m
992# CONFIG_P54_USB is not set 998# CONFIG_P54_USB is not set
993# CONFIG_P54_PCI is not set 999# CONFIG_P54_PCI is not set
994# CONFIG_ATH5K is not set 1000# CONFIG_ATH5K is not set
1001# CONFIG_IWLCORE is not set
1002# CONFIG_IWLWIFI_LEDS is not set
995# CONFIG_IWL4965 is not set 1003# CONFIG_IWL4965 is not set
996# CONFIG_IWL3945 is not set 1004# CONFIG_IWL3945 is not set
997# CONFIG_HOSTAP is not set 1005# CONFIG_HOSTAP is not set
@@ -1110,6 +1118,7 @@ CONFIG_VT=y
1110CONFIG_VT_CONSOLE=y 1118CONFIG_VT_CONSOLE=y
1111CONFIG_HW_CONSOLE=y 1119CONFIG_HW_CONSOLE=y
1112# CONFIG_VT_HW_CONSOLE_BINDING is not set 1120# CONFIG_VT_HW_CONSOLE_BINDING is not set
1121CONFIG_DEVKMEM=y
1113# CONFIG_SERIAL_NONSTANDARD is not set 1122# CONFIG_SERIAL_NONSTANDARD is not set
1114# CONFIG_NOZOMI is not set 1123# CONFIG_NOZOMI is not set
1115 1124
@@ -1156,13 +1165,7 @@ CONFIG_DEVPORT=y
1156CONFIG_I2C=y 1165CONFIG_I2C=y
1157CONFIG_I2C_BOARDINFO=y 1166CONFIG_I2C_BOARDINFO=y
1158CONFIG_I2C_CHARDEV=m 1167CONFIG_I2C_CHARDEV=m
1159
1160#
1161# I2C Algorithms
1162#
1163CONFIG_I2C_ALGOBIT=y 1168CONFIG_I2C_ALGOBIT=y
1164# CONFIG_I2C_ALGOPCF is not set
1165# CONFIG_I2C_ALGOPCA is not set
1166 1169
1167# 1170#
1168# I2C Hardware Bus support 1171# I2C Hardware Bus support
@@ -1192,6 +1195,7 @@ CONFIG_I2C_POWERMAC=y
1192# CONFIG_I2C_VIA is not set 1195# CONFIG_I2C_VIA is not set
1193# CONFIG_I2C_VIAPRO is not set 1196# CONFIG_I2C_VIAPRO is not set
1194# CONFIG_I2C_VOODOO3 is not set 1197# CONFIG_I2C_VOODOO3 is not set
1198# CONFIG_I2C_PCA_PLATFORM is not set
1195 1199
1196# 1200#
1197# Miscellaneous I2C Chip support 1201# Miscellaneous I2C Chip support
@@ -1201,19 +1205,13 @@ CONFIG_I2C_POWERMAC=y
1201# CONFIG_SENSORS_PCF8574 is not set 1205# CONFIG_SENSORS_PCF8574 is not set
1202# CONFIG_PCF8575 is not set 1206# CONFIG_PCF8575 is not set
1203# CONFIG_SENSORS_PCF8591 is not set 1207# CONFIG_SENSORS_PCF8591 is not set
1204# CONFIG_TPS65010 is not set
1205# CONFIG_SENSORS_MAX6875 is not set 1208# CONFIG_SENSORS_MAX6875 is not set
1206# CONFIG_SENSORS_TSL2550 is not set 1209# CONFIG_SENSORS_TSL2550 is not set
1207# CONFIG_I2C_DEBUG_CORE is not set 1210# CONFIG_I2C_DEBUG_CORE is not set
1208# CONFIG_I2C_DEBUG_ALGO is not set 1211# CONFIG_I2C_DEBUG_ALGO is not set
1209# CONFIG_I2C_DEBUG_BUS is not set 1212# CONFIG_I2C_DEBUG_BUS is not set
1210# CONFIG_I2C_DEBUG_CHIP is not set 1213# CONFIG_I2C_DEBUG_CHIP is not set
1211
1212#
1213# SPI support
1214#
1215# CONFIG_SPI is not set 1214# CONFIG_SPI is not set
1216# CONFIG_SPI_MASTER is not set
1217# CONFIG_W1 is not set 1215# CONFIG_W1 is not set
1218CONFIG_POWER_SUPPLY=y 1216CONFIG_POWER_SUPPLY=y
1219# CONFIG_POWER_SUPPLY_DEBUG is not set 1217# CONFIG_POWER_SUPPLY_DEBUG is not set
@@ -1230,6 +1228,7 @@ CONFIG_BATTERY_PMU=y
1230# 1228#
1231CONFIG_SSB_POSSIBLE=y 1229CONFIG_SSB_POSSIBLE=y
1232CONFIG_SSB=m 1230CONFIG_SSB=m
1231CONFIG_SSB_SPROM=y
1233CONFIG_SSB_PCIHOST_POSSIBLE=y 1232CONFIG_SSB_PCIHOST_POSSIBLE=y
1234CONFIG_SSB_PCIHOST=y 1233CONFIG_SSB_PCIHOST=y
1235CONFIG_SSB_B43_PCI_BRIDGE=y 1234CONFIG_SSB_B43_PCI_BRIDGE=y
@@ -1243,12 +1242,22 @@ CONFIG_SSB_DRIVER_PCICORE=y
1243# Multifunction device drivers 1242# Multifunction device drivers
1244# 1243#
1245# CONFIG_MFD_SM501 is not set 1244# CONFIG_MFD_SM501 is not set
1245# CONFIG_HTC_PASIC3 is not set
1246 1246
1247# 1247#
1248# Multimedia devices 1248# Multimedia devices
1249# 1249#
1250
1251#
1252# Multimedia core support
1253#
1250# CONFIG_VIDEO_DEV is not set 1254# CONFIG_VIDEO_DEV is not set
1251# CONFIG_DVB_CORE is not set 1255# CONFIG_DVB_CORE is not set
1256# CONFIG_VIDEO_MEDIA is not set
1257
1258#
1259# Multimedia drivers
1260#
1252# CONFIG_DAB is not set 1261# CONFIG_DAB is not set
1253 1262
1254# 1263#
@@ -1276,8 +1285,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y
1276# CONFIG_FB_SYS_FILLRECT is not set 1285# CONFIG_FB_SYS_FILLRECT is not set
1277# CONFIG_FB_SYS_COPYAREA is not set 1286# CONFIG_FB_SYS_COPYAREA is not set
1278# CONFIG_FB_SYS_IMAGEBLIT is not set 1287# CONFIG_FB_SYS_IMAGEBLIT is not set
1288# CONFIG_FB_FOREIGN_ENDIAN is not set
1279# CONFIG_FB_SYS_FOPS is not set 1289# CONFIG_FB_SYS_FOPS is not set
1280CONFIG_FB_DEFERRED_IO=y
1281# CONFIG_FB_SVGALIB is not set 1290# CONFIG_FB_SVGALIB is not set
1282CONFIG_FB_MACMODES=y 1291CONFIG_FB_MACMODES=y
1283CONFIG_FB_BACKLIGHT=y 1292CONFIG_FB_BACKLIGHT=y
@@ -1413,6 +1422,7 @@ CONFIG_SND_DUMMY=m
1413# CONFIG_SND_AU8810 is not set 1422# CONFIG_SND_AU8810 is not set
1414# CONFIG_SND_AU8820 is not set 1423# CONFIG_SND_AU8820 is not set
1415# CONFIG_SND_AU8830 is not set 1424# CONFIG_SND_AU8830 is not set
1425# CONFIG_SND_AW2 is not set
1416# CONFIG_SND_AZT3328 is not set 1426# CONFIG_SND_AZT3328 is not set
1417# CONFIG_SND_BT87X is not set 1427# CONFIG_SND_BT87X is not set
1418# CONFIG_SND_CA0106 is not set 1428# CONFIG_SND_CA0106 is not set
@@ -1505,11 +1515,11 @@ CONFIG_SND_USB_AUDIO=m
1505# CONFIG_SND_SOC is not set 1515# CONFIG_SND_SOC is not set
1506 1516
1507# 1517#
1508# SoC Audio support for SuperH 1518# ALSA SoC audio for Freescale SOCs
1509# 1519#
1510 1520
1511# 1521#
1512# ALSA SoC audio for Freescale SOCs 1522# SoC Audio for the Texas Instruments OMAP
1513# 1523#
1514 1524
1515# 1525#
@@ -1543,17 +1553,18 @@ CONFIG_USB_DEVICEFS=y
1543CONFIG_USB_DEVICE_CLASS=y 1553CONFIG_USB_DEVICE_CLASS=y
1544CONFIG_USB_DYNAMIC_MINORS=y 1554CONFIG_USB_DYNAMIC_MINORS=y
1545# CONFIG_USB_SUSPEND is not set 1555# CONFIG_USB_SUSPEND is not set
1546# CONFIG_USB_PERSIST is not set
1547# CONFIG_USB_OTG is not set 1556# CONFIG_USB_OTG is not set
1548 1557
1549# 1558#
1550# USB Host Controller Drivers 1559# USB Host Controller Drivers
1551# 1560#
1561# CONFIG_USB_C67X00_HCD is not set
1552CONFIG_USB_EHCI_HCD=m 1562CONFIG_USB_EHCI_HCD=m
1553CONFIG_USB_EHCI_ROOT_HUB_TT=y 1563CONFIG_USB_EHCI_ROOT_HUB_TT=y
1554# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1564# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1555# CONFIG_USB_EHCI_HCD_PPC_OF is not set 1565# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1556# CONFIG_USB_ISP116X_HCD is not set 1566# CONFIG_USB_ISP116X_HCD is not set
1567# CONFIG_USB_ISP1760_HCD is not set
1557CONFIG_USB_OHCI_HCD=y 1568CONFIG_USB_OHCI_HCD=y
1558# CONFIG_USB_OHCI_HCD_PPC_OF is not set 1569# CONFIG_USB_OHCI_HCD_PPC_OF is not set
1559# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1570# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -1587,7 +1598,9 @@ CONFIG_USB_STORAGE=m
1587# CONFIG_USB_STORAGE_SDDR55 is not set 1598# CONFIG_USB_STORAGE_SDDR55 is not set
1588# CONFIG_USB_STORAGE_JUMPSHOT is not set 1599# CONFIG_USB_STORAGE_JUMPSHOT is not set
1589# CONFIG_USB_STORAGE_ALAUDA is not set 1600# CONFIG_USB_STORAGE_ALAUDA is not set
1601CONFIG_USB_STORAGE_ONETOUCH=y
1590# CONFIG_USB_STORAGE_KARMA is not set 1602# CONFIG_USB_STORAGE_KARMA is not set
1603# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1591# CONFIG_USB_LIBUSUAL is not set 1604# CONFIG_USB_LIBUSUAL is not set
1592 1605
1593# 1606#
@@ -1642,9 +1655,11 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
1642# CONFIG_USB_SERIAL_MCT_U232 is not set 1655# CONFIG_USB_SERIAL_MCT_U232 is not set
1643# CONFIG_USB_SERIAL_MOS7720 is not set 1656# CONFIG_USB_SERIAL_MOS7720 is not set
1644# CONFIG_USB_SERIAL_MOS7840 is not set 1657# CONFIG_USB_SERIAL_MOS7840 is not set
1658# CONFIG_USB_SERIAL_MOTOROLA is not set
1645# CONFIG_USB_SERIAL_NAVMAN is not set 1659# CONFIG_USB_SERIAL_NAVMAN is not set
1646# CONFIG_USB_SERIAL_PL2303 is not set 1660# CONFIG_USB_SERIAL_PL2303 is not set
1647# CONFIG_USB_SERIAL_OTI6858 is not set 1661# CONFIG_USB_SERIAL_OTI6858 is not set
1662# CONFIG_USB_SERIAL_SPCP8X5 is not set
1648# CONFIG_USB_SERIAL_HP4X is not set 1663# CONFIG_USB_SERIAL_HP4X is not set
1649# CONFIG_USB_SERIAL_SAFE is not set 1664# CONFIG_USB_SERIAL_SAFE is not set
1650# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set 1665# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
@@ -1695,14 +1710,12 @@ CONFIG_LEDS_TRIGGERS=y
1695# CONFIG_LEDS_TRIGGER_TIMER is not set 1710# CONFIG_LEDS_TRIGGER_TIMER is not set
1696CONFIG_LEDS_TRIGGER_IDE_DISK=y 1711CONFIG_LEDS_TRIGGER_IDE_DISK=y
1697# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set 1712# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
1713CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
1714# CONFIG_ACCESSIBILITY is not set
1698# CONFIG_INFINIBAND is not set 1715# CONFIG_INFINIBAND is not set
1699# CONFIG_EDAC is not set 1716# CONFIG_EDAC is not set
1700# CONFIG_RTC_CLASS is not set 1717# CONFIG_RTC_CLASS is not set
1701# CONFIG_DMADEVICES is not set 1718# CONFIG_DMADEVICES is not set
1702
1703#
1704# Userspace I/O
1705#
1706# CONFIG_UIO is not set 1719# CONFIG_UIO is not set
1707 1720
1708# 1721#
@@ -1786,13 +1799,11 @@ CONFIG_NFS_FS=y
1786CONFIG_NFS_V3=y 1799CONFIG_NFS_V3=y
1787CONFIG_NFS_V3_ACL=y 1800CONFIG_NFS_V3_ACL=y
1788CONFIG_NFS_V4=y 1801CONFIG_NFS_V4=y
1789# CONFIG_NFS_DIRECTIO is not set
1790CONFIG_NFSD=m 1802CONFIG_NFSD=m
1791CONFIG_NFSD_V2_ACL=y 1803CONFIG_NFSD_V2_ACL=y
1792CONFIG_NFSD_V3=y 1804CONFIG_NFSD_V3=y
1793CONFIG_NFSD_V3_ACL=y 1805CONFIG_NFSD_V3_ACL=y
1794CONFIG_NFSD_V4=y 1806CONFIG_NFSD_V4=y
1795CONFIG_NFSD_TCP=y
1796CONFIG_LOCKD=y 1807CONFIG_LOCKD=y
1797CONFIG_LOCKD_V4=y 1808CONFIG_LOCKD_V4=y
1798CONFIG_EXPORTFS=m 1809CONFIG_EXPORTFS=m
@@ -1877,9 +1888,10 @@ CONFIG_NLS_UTF8=m
1877# Library routines 1888# Library routines
1878# 1889#
1879CONFIG_BITREVERSE=y 1890CONFIG_BITREVERSE=y
1891# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1880CONFIG_CRC_CCITT=y 1892CONFIG_CRC_CCITT=y
1881CONFIG_CRC16=y 1893CONFIG_CRC16=y
1882# CONFIG_CRC_ITU_T is not set 1894CONFIG_CRC_ITU_T=m
1883CONFIG_CRC32=y 1895CONFIG_CRC32=y
1884# CONFIG_CRC7 is not set 1896# CONFIG_CRC7 is not set
1885CONFIG_LIBCRC32C=m 1897CONFIG_LIBCRC32C=m
@@ -1901,6 +1913,7 @@ CONFIG_HAVE_LMB=y
1901# CONFIG_PRINTK_TIME is not set 1913# CONFIG_PRINTK_TIME is not set
1902CONFIG_ENABLE_WARN_DEPRECATED=y 1914CONFIG_ENABLE_WARN_DEPRECATED=y
1903CONFIG_ENABLE_MUST_CHECK=y 1915CONFIG_ENABLE_MUST_CHECK=y
1916CONFIG_FRAME_WARN=1024
1904CONFIG_MAGIC_SYSRQ=y 1917CONFIG_MAGIC_SYSRQ=y
1905# CONFIG_UNUSED_SYMBOLS is not set 1918# CONFIG_UNUSED_SYMBOLS is not set
1906# CONFIG_DEBUG_FS is not set 1919# CONFIG_DEBUG_FS is not set
@@ -1911,6 +1924,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1911CONFIG_SCHED_DEBUG=y 1924CONFIG_SCHED_DEBUG=y
1912# CONFIG_SCHEDSTATS is not set 1925# CONFIG_SCHEDSTATS is not set
1913# CONFIG_TIMER_STATS is not set 1926# CONFIG_TIMER_STATS is not set
1927# CONFIG_DEBUG_OBJECTS is not set
1914# CONFIG_SLUB_DEBUG_ON is not set 1928# CONFIG_SLUB_DEBUG_ON is not set
1915# CONFIG_SLUB_STATS is not set 1929# CONFIG_SLUB_STATS is not set
1916# CONFIG_DEBUG_RT_MUTEXES is not set 1930# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1923,6 +1937,7 @@ CONFIG_SCHED_DEBUG=y
1923CONFIG_DEBUG_BUGVERBOSE=y 1937CONFIG_DEBUG_BUGVERBOSE=y
1924# CONFIG_DEBUG_INFO is not set 1938# CONFIG_DEBUG_INFO is not set
1925# CONFIG_DEBUG_VM is not set 1939# CONFIG_DEBUG_VM is not set
1940# CONFIG_DEBUG_WRITECOUNT is not set
1926# CONFIG_DEBUG_LIST is not set 1941# CONFIG_DEBUG_LIST is not set
1927# CONFIG_DEBUG_SG is not set 1942# CONFIG_DEBUG_SG is not set
1928# CONFIG_BOOT_PRINTK_DELAY is not set 1943# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1936,6 +1951,7 @@ CONFIG_DEBUGGER=y
1936CONFIG_XMON=y 1951CONFIG_XMON=y
1937CONFIG_XMON_DEFAULT=y 1952CONFIG_XMON_DEFAULT=y
1938CONFIG_XMON_DISASSEMBLY=y 1953CONFIG_XMON_DISASSEMBLY=y
1954CONFIG_IRQSTACKS=y
1939# CONFIG_BDI_SWITCH is not set 1955# CONFIG_BDI_SWITCH is not set
1940CONFIG_BOOTX_TEXT=y 1956CONFIG_BOOTX_TEXT=y
1941# CONFIG_PPC_EARLY_DEBUG is not set 1957# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1947,54 +1963,84 @@ CONFIG_BOOTX_TEXT=y
1947# CONFIG_SECURITY is not set 1963# CONFIG_SECURITY is not set
1948# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1964# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1949CONFIG_CRYPTO=y 1965CONFIG_CRYPTO=y
1966
1967#
1968# Crypto core or helper
1969#
1950CONFIG_CRYPTO_ALGAPI=y 1970CONFIG_CRYPTO_ALGAPI=y
1951CONFIG_CRYPTO_AEAD=y 1971CONFIG_CRYPTO_AEAD=y
1952CONFIG_CRYPTO_BLKCIPHER=y 1972CONFIG_CRYPTO_BLKCIPHER=y
1953# CONFIG_CRYPTO_SEQIV is not set
1954CONFIG_CRYPTO_HASH=y 1973CONFIG_CRYPTO_HASH=y
1955CONFIG_CRYPTO_MANAGER=y 1974CONFIG_CRYPTO_MANAGER=y
1975# CONFIG_CRYPTO_GF128MUL is not set
1976CONFIG_CRYPTO_NULL=m
1977# CONFIG_CRYPTO_CRYPTD is not set
1978CONFIG_CRYPTO_AUTHENC=y
1979# CONFIG_CRYPTO_TEST is not set
1980
1981#
1982# Authenticated Encryption with Associated Data
1983#
1984# CONFIG_CRYPTO_CCM is not set
1985# CONFIG_CRYPTO_GCM is not set
1986# CONFIG_CRYPTO_SEQIV is not set
1987
1988#
1989# Block modes
1990#
1991CONFIG_CRYPTO_CBC=y
1992# CONFIG_CRYPTO_CTR is not set
1993# CONFIG_CRYPTO_CTS is not set
1994CONFIG_CRYPTO_ECB=m
1995# CONFIG_CRYPTO_LRW is not set
1996CONFIG_CRYPTO_PCBC=m
1997# CONFIG_CRYPTO_XTS is not set
1998
1999#
2000# Hash modes
2001#
1956CONFIG_CRYPTO_HMAC=y 2002CONFIG_CRYPTO_HMAC=y
1957# CONFIG_CRYPTO_XCBC is not set 2003# CONFIG_CRYPTO_XCBC is not set
1958CONFIG_CRYPTO_NULL=m 2004
2005#
2006# Digest
2007#
2008CONFIG_CRYPTO_CRC32C=m
1959CONFIG_CRYPTO_MD4=m 2009CONFIG_CRYPTO_MD4=m
1960CONFIG_CRYPTO_MD5=y 2010CONFIG_CRYPTO_MD5=y
2011CONFIG_CRYPTO_MICHAEL_MIC=m
1961CONFIG_CRYPTO_SHA1=y 2012CONFIG_CRYPTO_SHA1=y
1962CONFIG_CRYPTO_SHA256=m 2013CONFIG_CRYPTO_SHA256=m
1963CONFIG_CRYPTO_SHA512=m 2014CONFIG_CRYPTO_SHA512=m
1964CONFIG_CRYPTO_WP512=m
1965CONFIG_CRYPTO_TGR192=m 2015CONFIG_CRYPTO_TGR192=m
1966# CONFIG_CRYPTO_GF128MUL is not set 2016CONFIG_CRYPTO_WP512=m
1967CONFIG_CRYPTO_ECB=m 2017
1968CONFIG_CRYPTO_CBC=y 2018#
1969CONFIG_CRYPTO_PCBC=m 2019# Ciphers
1970# CONFIG_CRYPTO_LRW is not set 2020#
1971# CONFIG_CRYPTO_XTS is not set
1972# CONFIG_CRYPTO_CTR is not set
1973# CONFIG_CRYPTO_GCM is not set
1974# CONFIG_CRYPTO_CCM is not set
1975# CONFIG_CRYPTO_CRYPTD is not set
1976CONFIG_CRYPTO_DES=y
1977# CONFIG_CRYPTO_FCRYPT is not set
1978CONFIG_CRYPTO_BLOWFISH=m
1979CONFIG_CRYPTO_TWOFISH=m
1980CONFIG_CRYPTO_TWOFISH_COMMON=m
1981CONFIG_CRYPTO_SERPENT=m
1982CONFIG_CRYPTO_AES=m 2021CONFIG_CRYPTO_AES=m
2022CONFIG_CRYPTO_ANUBIS=m
2023CONFIG_CRYPTO_ARC4=m
2024CONFIG_CRYPTO_BLOWFISH=m
2025# CONFIG_CRYPTO_CAMELLIA is not set
1983CONFIG_CRYPTO_CAST5=m 2026CONFIG_CRYPTO_CAST5=m
1984CONFIG_CRYPTO_CAST6=m 2027CONFIG_CRYPTO_CAST6=m
1985CONFIG_CRYPTO_TEA=m 2028CONFIG_CRYPTO_DES=y
1986CONFIG_CRYPTO_ARC4=m 2029# CONFIG_CRYPTO_FCRYPT is not set
1987CONFIG_CRYPTO_KHAZAD=m 2030CONFIG_CRYPTO_KHAZAD=m
1988CONFIG_CRYPTO_ANUBIS=m
1989# CONFIG_CRYPTO_SEED is not set
1990# CONFIG_CRYPTO_SALSA20 is not set 2031# CONFIG_CRYPTO_SALSA20 is not set
2032# CONFIG_CRYPTO_SEED is not set
2033CONFIG_CRYPTO_SERPENT=m
2034CONFIG_CRYPTO_TEA=m
2035CONFIG_CRYPTO_TWOFISH=m
2036CONFIG_CRYPTO_TWOFISH_COMMON=m
2037
2038#
2039# Compression
2040#
1991CONFIG_CRYPTO_DEFLATE=m 2041CONFIG_CRYPTO_DEFLATE=m
1992CONFIG_CRYPTO_MICHAEL_MIC=m
1993CONFIG_CRYPTO_CRC32C=m
1994# CONFIG_CRYPTO_CAMELLIA is not set
1995# CONFIG_CRYPTO_TEST is not set
1996CONFIG_CRYPTO_AUTHENC=y
1997# CONFIG_CRYPTO_LZO is not set 2042# CONFIG_CRYPTO_LZO is not set
1998CONFIG_CRYPTO_HW=y 2043CONFIG_CRYPTO_HW=y
1999# CONFIG_CRYPTO_DEV_HIFN_795X is not set 2044# CONFIG_CRYPTO_DEV_HIFN_795X is not set
2000# CONFIG_PPC_CLOCK is not set 2045# CONFIG_PPC_CLOCK is not set
2046# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig
index 970282b1a004..40f84fa2bd29 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.25-rc6 3# Linux kernel version: 2.6.26-rc3
4# Thu Mar 27 13:56:24 2008 4# Tue May 20 20:03:02 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -30,6 +30,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_HAVE_SETUP_PER_CPU_AREA=y 31CONFIG_HAVE_SETUP_PER_CPU_AREA=y
32CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
33CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_TRACE_IRQFLAGS_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
33CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
34CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
35CONFIG_ARCH_HAS_ILOG2_U64=y 38CONFIG_ARCH_HAS_ILOG2_U64=y
@@ -82,6 +85,7 @@ CONFIG_LOG_BUF_SHIFT=17
82CONFIG_CGROUPS=y 85CONFIG_CGROUPS=y
83# CONFIG_CGROUP_DEBUG is not set 86# CONFIG_CGROUP_DEBUG is not set
84# CONFIG_CGROUP_NS is not set 87# CONFIG_CGROUP_NS is not set
88# CONFIG_CGROUP_DEVICE is not set
85CONFIG_CPUSETS=y 89CONFIG_CPUSETS=y
86# CONFIG_GROUP_SCHED is not set 90# CONFIG_GROUP_SCHED is not set
87# CONFIG_CGROUP_CPUACCT is not set 91# CONFIG_CGROUP_CPUACCT is not set
@@ -101,6 +105,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
101CONFIG_SYSCTL=y 105CONFIG_SYSCTL=y
102# CONFIG_EMBEDDED is not set 106# CONFIG_EMBEDDED is not set
103CONFIG_SYSCTL_SYSCALL=y 107CONFIG_SYSCTL_SYSCALL=y
108CONFIG_SYSCTL_SYSCALL_CHECK=y
104CONFIG_KALLSYMS=y 109CONFIG_KALLSYMS=y
105CONFIG_KALLSYMS_ALL=y 110CONFIG_KALLSYMS_ALL=y
106# CONFIG_KALLSYMS_EXTRA_PASS is not set 111# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -108,6 +113,7 @@ CONFIG_HOTPLUG=y
108CONFIG_PRINTK=y 113CONFIG_PRINTK=y
109CONFIG_BUG=y 114CONFIG_BUG=y
110CONFIG_ELF_CORE=y 115CONFIG_ELF_CORE=y
116CONFIG_PCSPKR_PLATFORM=y
111# CONFIG_COMPAT_BRK is not set 117# CONFIG_COMPAT_BRK is not set
112CONFIG_BASE_FULL=y 118CONFIG_BASE_FULL=y
113CONFIG_FUTEX=y 119CONFIG_FUTEX=y
@@ -129,12 +135,14 @@ CONFIG_HAVE_OPROFILE=y
129# CONFIG_KPROBES is not set 135# CONFIG_KPROBES is not set
130CONFIG_HAVE_KPROBES=y 136CONFIG_HAVE_KPROBES=y
131CONFIG_HAVE_KRETPROBES=y 137CONFIG_HAVE_KRETPROBES=y
138# CONFIG_HAVE_DMA_ATTRS is not set
132CONFIG_PROC_PAGE_MONITOR=y 139CONFIG_PROC_PAGE_MONITOR=y
133CONFIG_SLABINFO=y 140CONFIG_SLABINFO=y
134CONFIG_RT_MUTEXES=y 141CONFIG_RT_MUTEXES=y
135# CONFIG_TINY_SHMEM is not set 142# CONFIG_TINY_SHMEM is not set
136CONFIG_BASE_SMALL=0 143CONFIG_BASE_SMALL=0
137CONFIG_MODULES=y 144CONFIG_MODULES=y
145# CONFIG_MODULE_FORCE_LOAD is not set
138CONFIG_MODULE_UNLOAD=y 146CONFIG_MODULE_UNLOAD=y
139# CONFIG_MODULE_FORCE_UNLOAD is not set 147# CONFIG_MODULE_FORCE_UNLOAD is not set
140CONFIG_MODVERSIONS=y 148CONFIG_MODVERSIONS=y
@@ -194,11 +202,11 @@ CONFIG_PPC_PASEMI=y
194CONFIG_PPC_PASEMI_IOMMU=y 202CONFIG_PPC_PASEMI_IOMMU=y
195# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set 203# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
196CONFIG_PPC_PASEMI_MDIO=y 204CONFIG_PPC_PASEMI_MDIO=y
197CONFIG_PPC_CELLEB=y
198# CONFIG_PPC_PS3 is not set 205# CONFIG_PPC_PS3 is not set
199CONFIG_PPC_CELL=y 206CONFIG_PPC_CELL=y
200CONFIG_PPC_CELL_NATIVE=y 207CONFIG_PPC_CELL_NATIVE=y
201CONFIG_PPC_IBM_CELL_BLADE=y 208CONFIG_PPC_IBM_CELL_BLADE=y
209CONFIG_PPC_CELLEB=y
202 210
203# 211#
204# Cell Broadband Engine options 212# Cell Broadband Engine options
@@ -241,6 +249,7 @@ CONFIG_CPU_FREQ_TABLE=y
241CONFIG_CPU_FREQ_STAT=y 249CONFIG_CPU_FREQ_STAT=y
242# CONFIG_CPU_FREQ_STAT_DETAILS is not set 250# CONFIG_CPU_FREQ_STAT_DETAILS is not set
243CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 251CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
252# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
244# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set 253# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
245# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set 254# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
246# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set 255# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
@@ -277,7 +286,6 @@ CONFIG_PREEMPT_NONE=y
277CONFIG_BINFMT_ELF=y 286CONFIG_BINFMT_ELF=y
278CONFIG_COMPAT_BINFMT_ELF=y 287CONFIG_COMPAT_BINFMT_ELF=y
279CONFIG_BINFMT_MISC=m 288CONFIG_BINFMT_MISC=m
280CONFIG_FORCE_MAX_ZONEORDER=13
281CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y 289CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
282CONFIG_IOMMU_VMERGE=y 290CONFIG_IOMMU_VMERGE=y
283CONFIG_IOMMU_HELPER=y 291CONFIG_IOMMU_HELPER=y
@@ -307,6 +315,7 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
307CONFIG_SPARSEMEM_VMEMMAP=y 315CONFIG_SPARSEMEM_VMEMMAP=y
308CONFIG_MEMORY_HOTPLUG=y 316CONFIG_MEMORY_HOTPLUG=y
309CONFIG_MEMORY_HOTPLUG_SPARSE=y 317CONFIG_MEMORY_HOTPLUG_SPARSE=y
318CONFIG_PAGEFLAGS_EXTENDED=y
310CONFIG_SPLIT_PTLOCK_CPUS=4 319CONFIG_SPLIT_PTLOCK_CPUS=4
311CONFIG_RESOURCES_64BIT=y 320CONFIG_RESOURCES_64BIT=y
312CONFIG_ZONE_DMA_FLAG=1 321CONFIG_ZONE_DMA_FLAG=1
@@ -314,6 +323,7 @@ CONFIG_BOUNCE=y
314CONFIG_ARCH_MEMORY_PROBE=y 323CONFIG_ARCH_MEMORY_PROBE=y
315CONFIG_PPC_HAS_HASH_64K=y 324CONFIG_PPC_HAS_HASH_64K=y
316# CONFIG_PPC_64K_PAGES is not set 325# CONFIG_PPC_64K_PAGES is not set
326CONFIG_FORCE_MAX_ZONEORDER=13
317# CONFIG_SCHED_SMT is not set 327# CONFIG_SCHED_SMT is not set
318CONFIG_PROC_DEVICETREE=y 328CONFIG_PROC_DEVICETREE=y
319# CONFIG_CMDLINE_BOOL is not set 329# CONFIG_CMDLINE_BOOL is not set
@@ -356,7 +366,10 @@ CONFIG_HOTPLUG_PCI=m
356# CONFIG_HOTPLUG_PCI_SHPC is not set 366# CONFIG_HOTPLUG_PCI_SHPC is not set
357CONFIG_HOTPLUG_PCI_RPA=m 367CONFIG_HOTPLUG_PCI_RPA=m
358CONFIG_HOTPLUG_PCI_RPA_DLPAR=m 368CONFIG_HOTPLUG_PCI_RPA_DLPAR=m
369# CONFIG_HAS_RAPIDIO is not set
370CONFIG_PAGE_OFFSET=0xc000000000000000
359CONFIG_KERNEL_START=0xc000000000000000 371CONFIG_KERNEL_START=0xc000000000000000
372CONFIG_PHYSICAL_START=0x00000000
360 373
361# 374#
362# Networking 375# Networking
@@ -406,8 +419,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
406# CONFIG_TCP_MD5SIG is not set 419# CONFIG_TCP_MD5SIG is not set
407# CONFIG_IP_VS is not set 420# CONFIG_IP_VS is not set
408# CONFIG_IPV6 is not set 421# CONFIG_IPV6 is not set
409# CONFIG_INET6_XFRM_TUNNEL is not set
410# CONFIG_INET6_TUNNEL is not set
411# CONFIG_NETWORK_SECMARK is not set 422# CONFIG_NETWORK_SECMARK is not set
412CONFIG_NETFILTER=y 423CONFIG_NETFILTER=y
413# CONFIG_NETFILTER_DEBUG is not set 424# CONFIG_NETFILTER_DEBUG is not set
@@ -423,6 +434,7 @@ CONFIG_NF_CONNTRACK=m
423CONFIG_NF_CT_ACCT=y 434CONFIG_NF_CT_ACCT=y
424CONFIG_NF_CONNTRACK_MARK=y 435CONFIG_NF_CONNTRACK_MARK=y
425CONFIG_NF_CONNTRACK_EVENTS=y 436CONFIG_NF_CONNTRACK_EVENTS=y
437# CONFIG_NF_CT_PROTO_DCCP is not set
426CONFIG_NF_CT_PROTO_GRE=m 438CONFIG_NF_CT_PROTO_GRE=m
427CONFIG_NF_CT_PROTO_SCTP=m 439CONFIG_NF_CT_PROTO_SCTP=m
428# CONFIG_NF_CT_PROTO_UDPLITE is not set 440# CONFIG_NF_CT_PROTO_UDPLITE is not set
@@ -501,6 +513,7 @@ CONFIG_IP_NF_TARGET_REDIRECT=m
501CONFIG_IP_NF_TARGET_NETMAP=m 513CONFIG_IP_NF_TARGET_NETMAP=m
502CONFIG_NF_NAT_SNMP_BASIC=m 514CONFIG_NF_NAT_SNMP_BASIC=m
503CONFIG_NF_NAT_PROTO_GRE=m 515CONFIG_NF_NAT_PROTO_GRE=m
516CONFIG_NF_NAT_PROTO_SCTP=m
504CONFIG_NF_NAT_FTP=m 517CONFIG_NF_NAT_FTP=m
505CONFIG_NF_NAT_IRC=m 518CONFIG_NF_NAT_IRC=m
506CONFIG_NF_NAT_TFTP=m 519CONFIG_NF_NAT_TFTP=m
@@ -571,6 +584,7 @@ CONFIG_FW_LOADER=y
571# CONFIG_CONNECTOR is not set 584# CONFIG_CONNECTOR is not set
572# CONFIG_MTD is not set 585# CONFIG_MTD is not set
573CONFIG_OF_DEVICE=y 586CONFIG_OF_DEVICE=y
587CONFIG_OF_I2C=y
574# CONFIG_PARPORT is not set 588# CONFIG_PARPORT is not set
575CONFIG_BLK_DEV=y 589CONFIG_BLK_DEV=y
576CONFIG_BLK_DEV_FD=y 590CONFIG_BLK_DEV_FD=y
@@ -618,7 +632,6 @@ CONFIG_IDE_PROC_FS=y
618# 632#
619# IDE chipset support/bugfixes 633# IDE chipset support/bugfixes
620# 634#
621CONFIG_IDE_GENERIC=y
622# CONFIG_BLK_DEV_PLATFORM is not set 635# CONFIG_BLK_DEV_PLATFORM is not set
623CONFIG_BLK_DEV_IDEDMA_SFF=y 636CONFIG_BLK_DEV_IDEDMA_SFF=y
624 637
@@ -661,7 +674,7 @@ CONFIG_BLK_DEV_IDE_PMAC=y
661CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y 674CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
662CONFIG_BLK_DEV_IDEDMA_PMAC=y 675CONFIG_BLK_DEV_IDEDMA_PMAC=y
663CONFIG_BLK_DEV_IDEDMA=y 676CONFIG_BLK_DEV_IDEDMA=y
664CONFIG_IDE_ARCH_OBSOLETE_INIT=y 677# CONFIG_BLK_DEV_HD_ONLY is not set
665# CONFIG_BLK_DEV_HD is not set 678# CONFIG_BLK_DEV_HD is not set
666 679
667# 680#
@@ -747,64 +760,10 @@ CONFIG_SCSI_DEBUG=m
747# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 760# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
748CONFIG_ATA=y 761CONFIG_ATA=y
749CONFIG_ATA_NONSTANDARD=y 762CONFIG_ATA_NONSTANDARD=y
763CONFIG_SATA_PMP=y
750# CONFIG_SATA_AHCI is not set 764# CONFIG_SATA_AHCI is not set
751CONFIG_SATA_SVW=y
752# CONFIG_ATA_PIIX is not set
753CONFIG_SATA_MV=y
754# CONFIG_SATA_NV is not set
755# CONFIG_PDC_ADMA is not set
756# CONFIG_SATA_QSTOR is not set
757# CONFIG_SATA_PROMISE is not set
758# CONFIG_SATA_SX4 is not set
759# CONFIG_SATA_SIL is not set
760CONFIG_SATA_SIL24=y 765CONFIG_SATA_SIL24=y
761# CONFIG_SATA_SIS is not set 766# CONFIG_ATA_SFF is not set
762# CONFIG_SATA_ULI is not set
763# CONFIG_SATA_VIA is not set
764# CONFIG_SATA_VITESSE is not set
765# CONFIG_SATA_INIC162X is not set
766# CONFIG_PATA_ALI is not set
767# CONFIG_PATA_AMD is not set
768# CONFIG_PATA_ARTOP is not set
769# CONFIG_PATA_ATIIXP is not set
770# CONFIG_PATA_CMD640_PCI is not set
771# CONFIG_PATA_CMD64X is not set
772# CONFIG_PATA_CS5520 is not set
773# CONFIG_PATA_CS5530 is not set
774# CONFIG_PATA_CYPRESS is not set
775# CONFIG_PATA_EFAR is not set
776# CONFIG_ATA_GENERIC is not set
777# CONFIG_PATA_HPT366 is not set
778# CONFIG_PATA_HPT37X is not set
779# CONFIG_PATA_HPT3X2N is not set
780# CONFIG_PATA_HPT3X3 is not set
781# CONFIG_PATA_IT821X is not set
782# CONFIG_PATA_IT8213 is not set
783# CONFIG_PATA_JMICRON is not set
784# CONFIG_PATA_TRIFLEX is not set
785# CONFIG_PATA_MARVELL is not set
786# CONFIG_PATA_MPIIX is not set
787# CONFIG_PATA_OLDPIIX is not set
788# CONFIG_PATA_NETCELL is not set
789# CONFIG_PATA_NINJA32 is not set
790# CONFIG_PATA_NS87410 is not set
791# CONFIG_PATA_NS87415 is not set
792# CONFIG_PATA_OPTI is not set
793# CONFIG_PATA_OPTIDMA is not set
794CONFIG_PATA_PCMCIA=y
795# CONFIG_PATA_PDC_OLD is not set
796# CONFIG_PATA_RADISYS is not set
797# CONFIG_PATA_RZ1000 is not set
798# CONFIG_PATA_SC1200 is not set
799# CONFIG_PATA_SERVERWORKS is not set
800# CONFIG_PATA_PDC2027X is not set
801# CONFIG_PATA_SIL680 is not set
802# CONFIG_PATA_SIS is not set
803# CONFIG_PATA_VIA is not set
804CONFIG_PATA_WINBOND=y
805CONFIG_PATA_PLATFORM=y
806# CONFIG_PATA_OF_PLATFORM is not set
807CONFIG_PATA_SCC=y
808CONFIG_MD=y 767CONFIG_MD=y
809CONFIG_BLK_DEV_MD=y 768CONFIG_BLK_DEV_MD=y
810CONFIG_MD_LINEAR=y 769CONFIG_MD_LINEAR=y
@@ -866,6 +825,7 @@ CONFIG_WINDFARM=y
866CONFIG_WINDFARM_PM81=y 825CONFIG_WINDFARM_PM81=y
867CONFIG_WINDFARM_PM91=y 826CONFIG_WINDFARM_PM91=y
868CONFIG_WINDFARM_PM112=y 827CONFIG_WINDFARM_PM112=y
828CONFIG_WINDFARM_PM121=y
869# CONFIG_PMAC_RACKMETER is not set 829# CONFIG_PMAC_RACKMETER is not set
870CONFIG_NETDEVICES=y 830CONFIG_NETDEVICES=y
871# CONFIG_NETDEVICES_MULTIQUEUE is not set 831# CONFIG_NETDEVICES_MULTIQUEUE is not set
@@ -911,7 +871,6 @@ CONFIG_IBM_NEW_EMAC_TAH=y
911CONFIG_IBM_NEW_EMAC_EMAC4=y 871CONFIG_IBM_NEW_EMAC_EMAC4=y
912CONFIG_NET_PCI=y 872CONFIG_NET_PCI=y
913CONFIG_PCNET32=y 873CONFIG_PCNET32=y
914# CONFIG_PCNET32_NAPI is not set
915# CONFIG_AMD8111_ETH is not set 874# CONFIG_AMD8111_ETH is not set
916# CONFIG_ADAPTEC_STARFIRE is not set 875# CONFIG_ADAPTEC_STARFIRE is not set
917# CONFIG_B44 is not set 876# CONFIG_B44 is not set
@@ -947,7 +906,6 @@ CONFIG_E1000=y
947# CONFIG_SIS190 is not set 906# CONFIG_SIS190 is not set
948# CONFIG_SKGE is not set 907# CONFIG_SKGE is not set
949# CONFIG_SKY2 is not set 908# CONFIG_SKY2 is not set
950# CONFIG_SK98LIN is not set
951# CONFIG_VIA_VELOCITY is not set 909# CONFIG_VIA_VELOCITY is not set
952CONFIG_TIGON3=y 910CONFIG_TIGON3=y
953# CONFIG_BNX2 is not set 911# CONFIG_BNX2 is not set
@@ -969,6 +927,7 @@ CONFIG_PASEMI_MAC=y
969# CONFIG_MLX4_CORE is not set 927# CONFIG_MLX4_CORE is not set
970# CONFIG_TEHUTI is not set 928# CONFIG_TEHUTI is not set
971# CONFIG_BNX2X is not set 929# CONFIG_BNX2X is not set
930# CONFIG_SFC is not set
972CONFIG_TR=y 931CONFIG_TR=y
973CONFIG_IBMOL=y 932CONFIG_IBMOL=y
974# CONFIG_3C359 is not set 933# CONFIG_3C359 is not set
@@ -979,6 +938,7 @@ CONFIG_IBMOL=y
979# 938#
980# CONFIG_WLAN_PRE80211 is not set 939# CONFIG_WLAN_PRE80211 is not set
981# CONFIG_WLAN_80211 is not set 940# CONFIG_WLAN_80211 is not set
941# CONFIG_IWLWIFI_LEDS is not set
982 942
983# 943#
984# USB Network Adapters 944# USB Network Adapters
@@ -1083,6 +1043,7 @@ CONFIG_VT=y
1083CONFIG_VT_CONSOLE=y 1043CONFIG_VT_CONSOLE=y
1084CONFIG_HW_CONSOLE=y 1044CONFIG_HW_CONSOLE=y
1085# CONFIG_VT_HW_CONSOLE_BINDING is not set 1045# CONFIG_VT_HW_CONSOLE_BINDING is not set
1046CONFIG_DEVKMEM=y
1086# CONFIG_SERIAL_NONSTANDARD is not set 1047# CONFIG_SERIAL_NONSTANDARD is not set
1087# CONFIG_NOZOMI is not set 1048# CONFIG_NOZOMI is not set
1088 1049
@@ -1121,8 +1082,6 @@ CONFIG_HVC_BEAT=y
1121CONFIG_HVCS=m 1082CONFIG_HVCS=m
1122# CONFIG_IPMI_HANDLER is not set 1083# CONFIG_IPMI_HANDLER is not set
1123# CONFIG_HW_RANDOM is not set 1084# CONFIG_HW_RANDOM is not set
1124CONFIG_GEN_RTC=y
1125# CONFIG_GEN_RTC_X is not set
1126# CONFIG_R3964 is not set 1085# CONFIG_R3964 is not set
1127# CONFIG_APPLICOM is not set 1086# CONFIG_APPLICOM is not set
1128 1087
@@ -1141,13 +1100,7 @@ CONFIG_DEVPORT=y
1141CONFIG_I2C=y 1100CONFIG_I2C=y
1142CONFIG_I2C_BOARDINFO=y 1101CONFIG_I2C_BOARDINFO=y
1143CONFIG_I2C_CHARDEV=y 1102CONFIG_I2C_CHARDEV=y
1144
1145#
1146# I2C Algorithms
1147#
1148CONFIG_I2C_ALGOBIT=y 1103CONFIG_I2C_ALGOBIT=y
1149# CONFIG_I2C_ALGOPCF is not set
1150# CONFIG_I2C_ALGOPCA is not set
1151 1104
1152# 1105#
1153# I2C Hardware Bus support 1106# I2C Hardware Bus support
@@ -1177,6 +1130,7 @@ CONFIG_I2C_PASEMI=y
1177# CONFIG_I2C_VIA is not set 1130# CONFIG_I2C_VIA is not set
1178# CONFIG_I2C_VIAPRO is not set 1131# CONFIG_I2C_VIAPRO is not set
1179# CONFIG_I2C_VOODOO3 is not set 1132# CONFIG_I2C_VOODOO3 is not set
1133# CONFIG_I2C_PCA_PLATFORM is not set
1180 1134
1181# 1135#
1182# Miscellaneous I2C Chip support 1136# Miscellaneous I2C Chip support
@@ -1186,19 +1140,13 @@ CONFIG_I2C_PASEMI=y
1186# CONFIG_SENSORS_PCF8574 is not set 1140# CONFIG_SENSORS_PCF8574 is not set
1187# CONFIG_PCF8575 is not set 1141# CONFIG_PCF8575 is not set
1188# CONFIG_SENSORS_PCF8591 is not set 1142# CONFIG_SENSORS_PCF8591 is not set
1189# CONFIG_TPS65010 is not set
1190# CONFIG_SENSORS_MAX6875 is not set 1143# CONFIG_SENSORS_MAX6875 is not set
1191# CONFIG_SENSORS_TSL2550 is not set 1144# CONFIG_SENSORS_TSL2550 is not set
1192# CONFIG_I2C_DEBUG_CORE is not set 1145# CONFIG_I2C_DEBUG_CORE is not set
1193# CONFIG_I2C_DEBUG_ALGO is not set 1146# CONFIG_I2C_DEBUG_ALGO is not set
1194# CONFIG_I2C_DEBUG_BUS is not set 1147# CONFIG_I2C_DEBUG_BUS is not set
1195# CONFIG_I2C_DEBUG_CHIP is not set 1148# CONFIG_I2C_DEBUG_CHIP is not set
1196
1197#
1198# SPI support
1199#
1200# CONFIG_SPI is not set 1149# CONFIG_SPI is not set
1201# CONFIG_SPI_MASTER is not set
1202# CONFIG_W1 is not set 1150# CONFIG_W1 is not set
1203# CONFIG_POWER_SUPPLY is not set 1151# CONFIG_POWER_SUPPLY is not set
1204# CONFIG_HWMON is not set 1152# CONFIG_HWMON is not set
@@ -1215,12 +1163,22 @@ CONFIG_SSB_POSSIBLE=y
1215# Multifunction device drivers 1163# Multifunction device drivers
1216# 1164#
1217# CONFIG_MFD_SM501 is not set 1165# CONFIG_MFD_SM501 is not set
1166# CONFIG_HTC_PASIC3 is not set
1218 1167
1219# 1168#
1220# Multimedia devices 1169# Multimedia devices
1221# 1170#
1171
1172#
1173# Multimedia core support
1174#
1222# CONFIG_VIDEO_DEV is not set 1175# CONFIG_VIDEO_DEV is not set
1223# CONFIG_DVB_CORE is not set 1176# CONFIG_DVB_CORE is not set
1177# CONFIG_VIDEO_MEDIA is not set
1178
1179#
1180# Multimedia drivers
1181#
1224# CONFIG_DAB is not set 1182# CONFIG_DAB is not set
1225 1183
1226# 1184#
@@ -1240,8 +1198,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y
1240# CONFIG_FB_SYS_FILLRECT is not set 1198# CONFIG_FB_SYS_FILLRECT is not set
1241# CONFIG_FB_SYS_COPYAREA is not set 1199# CONFIG_FB_SYS_COPYAREA is not set
1242# CONFIG_FB_SYS_IMAGEBLIT is not set 1200# CONFIG_FB_SYS_IMAGEBLIT is not set
1201# CONFIG_FB_FOREIGN_ENDIAN is not set
1243# CONFIG_FB_SYS_FOPS is not set 1202# CONFIG_FB_SYS_FOPS is not set
1244CONFIG_FB_DEFERRED_IO=y
1245# CONFIG_FB_SVGALIB is not set 1203# CONFIG_FB_SVGALIB is not set
1246CONFIG_FB_MACMODES=y 1204CONFIG_FB_MACMODES=y
1247CONFIG_FB_BACKLIGHT=y 1205CONFIG_FB_BACKLIGHT=y
@@ -1363,6 +1321,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1363# CONFIG_SND_AU8810 is not set 1321# CONFIG_SND_AU8810 is not set
1364# CONFIG_SND_AU8820 is not set 1322# CONFIG_SND_AU8820 is not set
1365# CONFIG_SND_AU8830 is not set 1323# CONFIG_SND_AU8830 is not set
1324# CONFIG_SND_AW2 is not set
1366# CONFIG_SND_AZT3328 is not set 1325# CONFIG_SND_AZT3328 is not set
1367# CONFIG_SND_BT87X is not set 1326# CONFIG_SND_BT87X is not set
1368# CONFIG_SND_CA0106 is not set 1327# CONFIG_SND_CA0106 is not set
@@ -1455,11 +1414,11 @@ CONFIG_SND_AOA_SOUNDBUS_I2S=m
1455# CONFIG_SND_SOC is not set 1414# CONFIG_SND_SOC is not set
1456 1415
1457# 1416#
1458# SoC Audio support for SuperH 1417# ALSA SoC audio for Freescale SOCs
1459# 1418#
1460 1419
1461# 1420#
1462# ALSA SoC audio for Freescale SOCs 1421# SoC Audio for the Texas Instruments OMAP
1463# 1422#
1464 1423
1465# 1424#
@@ -1497,12 +1456,14 @@ CONFIG_USB_DEVICE_CLASS=y
1497# 1456#
1498# USB Host Controller Drivers 1457# USB Host Controller Drivers
1499# 1458#
1459# CONFIG_USB_C67X00_HCD is not set
1500CONFIG_USB_EHCI_HCD=y 1460CONFIG_USB_EHCI_HCD=y
1501# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1461# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1502CONFIG_USB_EHCI_TT_NEWSCHED=y 1462CONFIG_USB_EHCI_TT_NEWSCHED=y
1503CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y 1463CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
1504# CONFIG_USB_EHCI_HCD_PPC_OF is not set 1464# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1505# CONFIG_USB_ISP116X_HCD is not set 1465# CONFIG_USB_ISP116X_HCD is not set
1466# CONFIG_USB_ISP1760_HCD is not set
1506CONFIG_USB_OHCI_HCD=y 1467CONFIG_USB_OHCI_HCD=y
1507# CONFIG_USB_OHCI_HCD_PPC_OF is not set 1468# CONFIG_USB_OHCI_HCD_PPC_OF is not set
1508# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1469# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -1538,6 +1499,7 @@ CONFIG_USB_STORAGE=m
1538# CONFIG_USB_STORAGE_ALAUDA is not set 1499# CONFIG_USB_STORAGE_ALAUDA is not set
1539# CONFIG_USB_STORAGE_ONETOUCH is not set 1500# CONFIG_USB_STORAGE_ONETOUCH is not set
1540# CONFIG_USB_STORAGE_KARMA is not set 1501# CONFIG_USB_STORAGE_KARMA is not set
1502# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1541# CONFIG_USB_LIBUSUAL is not set 1503# CONFIG_USB_LIBUSUAL is not set
1542 1504
1543# 1505#
@@ -1579,6 +1541,7 @@ CONFIG_USB_APPLEDISPLAY=m
1579# CONFIG_MMC is not set 1541# CONFIG_MMC is not set
1580# CONFIG_MEMSTICK is not set 1542# CONFIG_MEMSTICK is not set
1581# CONFIG_NEW_LEDS is not set 1543# CONFIG_NEW_LEDS is not set
1544# CONFIG_ACCESSIBILITY is not set
1582CONFIG_INFINIBAND=m 1545CONFIG_INFINIBAND=m
1583# CONFIG_INFINIBAND_USER_MAD is not set 1546# CONFIG_INFINIBAND_USER_MAD is not set
1584# CONFIG_INFINIBAND_USER_ACCESS is not set 1547# CONFIG_INFINIBAND_USER_ACCESS is not set
@@ -1607,10 +1570,6 @@ CONFIG_EDAC_PASEMI=y
1607# CONFIG_EDAC_CELL is not set 1570# CONFIG_EDAC_CELL is not set
1608CONFIG_RTC_LIB=y 1571CONFIG_RTC_LIB=y
1609CONFIG_RTC_CLASS=y 1572CONFIG_RTC_CLASS=y
1610
1611#
1612# Conflicting RTC option has been selected, check GEN_RTC and RTC
1613#
1614CONFIG_RTC_HCTOSYS=y 1573CONFIG_RTC_HCTOSYS=y
1615CONFIG_RTC_HCTOSYS_DEVICE="rtc0" 1574CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1616# CONFIG_RTC_DEBUG is not set 1575# CONFIG_RTC_DEBUG is not set
@@ -1659,10 +1618,6 @@ CONFIG_RTC_DRV_DS1307=y
1659# on-CPU RTC drivers 1618# on-CPU RTC drivers
1660# 1619#
1661# CONFIG_DMADEVICES is not set 1620# CONFIG_DMADEVICES is not set
1662
1663#
1664# Userspace I/O
1665#
1666# CONFIG_UIO is not set 1621# CONFIG_UIO is not set
1667 1622
1668# 1623#
@@ -1696,9 +1651,9 @@ CONFIG_JFS_SECURITY=y
1696CONFIG_FS_POSIX_ACL=y 1651CONFIG_FS_POSIX_ACL=y
1697CONFIG_XFS_FS=m 1652CONFIG_XFS_FS=m
1698# CONFIG_XFS_QUOTA is not set 1653# CONFIG_XFS_QUOTA is not set
1699CONFIG_XFS_SECURITY=y
1700CONFIG_XFS_POSIX_ACL=y 1654CONFIG_XFS_POSIX_ACL=y
1701# CONFIG_XFS_RT is not set 1655# CONFIG_XFS_RT is not set
1656# CONFIG_XFS_DEBUG is not set
1702# CONFIG_GFS2_FS is not set 1657# CONFIG_GFS2_FS is not set
1703# CONFIG_OCFS2_FS is not set 1658# CONFIG_OCFS2_FS is not set
1704CONFIG_DNOTIFY=y 1659CONFIG_DNOTIFY=y
@@ -1764,13 +1719,11 @@ CONFIG_NFS_FS=y
1764CONFIG_NFS_V3=y 1719CONFIG_NFS_V3=y
1765CONFIG_NFS_V3_ACL=y 1720CONFIG_NFS_V3_ACL=y
1766CONFIG_NFS_V4=y 1721CONFIG_NFS_V4=y
1767# CONFIG_NFS_DIRECTIO is not set
1768CONFIG_NFSD=m 1722CONFIG_NFSD=m
1769CONFIG_NFSD_V2_ACL=y 1723CONFIG_NFSD_V2_ACL=y
1770CONFIG_NFSD_V3=y 1724CONFIG_NFSD_V3=y
1771CONFIG_NFSD_V3_ACL=y 1725CONFIG_NFSD_V3_ACL=y
1772CONFIG_NFSD_V4=y 1726CONFIG_NFSD_V4=y
1773CONFIG_NFSD_TCP=y
1774CONFIG_ROOT_NFS=y 1727CONFIG_ROOT_NFS=y
1775CONFIG_LOCKD=y 1728CONFIG_LOCKD=y
1776CONFIG_LOCKD_V4=y 1729CONFIG_LOCKD_V4=y
@@ -1862,9 +1815,10 @@ CONFIG_NLS_UTF8=m
1862# Library routines 1815# Library routines
1863# 1816#
1864CONFIG_BITREVERSE=y 1817CONFIG_BITREVERSE=y
1818# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1865CONFIG_CRC_CCITT=m 1819CONFIG_CRC_CCITT=m
1866# CONFIG_CRC16 is not set 1820# CONFIG_CRC16 is not set
1867# CONFIG_CRC_ITU_T is not set 1821CONFIG_CRC_ITU_T=m
1868CONFIG_CRC32=y 1822CONFIG_CRC32=y
1869# CONFIG_CRC7 is not set 1823# CONFIG_CRC7 is not set
1870CONFIG_LIBCRC32C=m 1824CONFIG_LIBCRC32C=m
@@ -1888,6 +1842,7 @@ CONFIG_HAVE_LMB=y
1888# CONFIG_PRINTK_TIME is not set 1842# CONFIG_PRINTK_TIME is not set
1889CONFIG_ENABLE_WARN_DEPRECATED=y 1843CONFIG_ENABLE_WARN_DEPRECATED=y
1890CONFIG_ENABLE_MUST_CHECK=y 1844CONFIG_ENABLE_MUST_CHECK=y
1845CONFIG_FRAME_WARN=2048
1891CONFIG_MAGIC_SYSRQ=y 1846CONFIG_MAGIC_SYSRQ=y
1892# CONFIG_UNUSED_SYMBOLS is not set 1847# CONFIG_UNUSED_SYMBOLS is not set
1893CONFIG_DEBUG_FS=y 1848CONFIG_DEBUG_FS=y
@@ -1898,18 +1853,23 @@ CONFIG_DETECT_SOFTLOCKUP=y
1898CONFIG_SCHED_DEBUG=y 1853CONFIG_SCHED_DEBUG=y
1899# CONFIG_SCHEDSTATS is not set 1854# CONFIG_SCHEDSTATS is not set
1900# CONFIG_TIMER_STATS is not set 1855# CONFIG_TIMER_STATS is not set
1856# CONFIG_DEBUG_OBJECTS is not set
1901# CONFIG_SLUB_DEBUG_ON is not set 1857# CONFIG_SLUB_DEBUG_ON is not set
1902# CONFIG_SLUB_STATS is not set 1858# CONFIG_SLUB_STATS is not set
1903# CONFIG_DEBUG_RT_MUTEXES is not set 1859# CONFIG_DEBUG_RT_MUTEXES is not set
1904# CONFIG_RT_MUTEX_TESTER is not set 1860# CONFIG_RT_MUTEX_TESTER is not set
1905# CONFIG_DEBUG_SPINLOCK is not set 1861# CONFIG_DEBUG_SPINLOCK is not set
1906CONFIG_DEBUG_MUTEXES=y 1862CONFIG_DEBUG_MUTEXES=y
1863# CONFIG_DEBUG_LOCK_ALLOC is not set
1864# CONFIG_PROVE_LOCKING is not set
1865# CONFIG_LOCK_STAT is not set
1907# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1866# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1908# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1867# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1909# CONFIG_DEBUG_KOBJECT is not set 1868# CONFIG_DEBUG_KOBJECT is not set
1910CONFIG_DEBUG_BUGVERBOSE=y 1869CONFIG_DEBUG_BUGVERBOSE=y
1911# CONFIG_DEBUG_INFO is not set 1870# CONFIG_DEBUG_INFO is not set
1912# CONFIG_DEBUG_VM is not set 1871# CONFIG_DEBUG_VM is not set
1872# CONFIG_DEBUG_WRITECOUNT is not set
1913# CONFIG_DEBUG_LIST is not set 1873# CONFIG_DEBUG_LIST is not set
1914# CONFIG_DEBUG_SG is not set 1874# CONFIG_DEBUG_SG is not set
1915# CONFIG_BOOT_PRINTK_DELAY is not set 1875# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1941,53 +1901,83 @@ CONFIG_ASYNC_CORE=y
1941CONFIG_ASYNC_MEMCPY=y 1901CONFIG_ASYNC_MEMCPY=y
1942CONFIG_ASYNC_XOR=y 1902CONFIG_ASYNC_XOR=y
1943CONFIG_CRYPTO=y 1903CONFIG_CRYPTO=y
1904
1905#
1906# Crypto core or helper
1907#
1944CONFIG_CRYPTO_ALGAPI=y 1908CONFIG_CRYPTO_ALGAPI=y
1945CONFIG_CRYPTO_AEAD=m 1909CONFIG_CRYPTO_AEAD=m
1946CONFIG_CRYPTO_BLKCIPHER=y 1910CONFIG_CRYPTO_BLKCIPHER=y
1947CONFIG_CRYPTO_SEQIV=m
1948CONFIG_CRYPTO_HASH=y 1911CONFIG_CRYPTO_HASH=y
1949CONFIG_CRYPTO_MANAGER=y 1912CONFIG_CRYPTO_MANAGER=y
1913CONFIG_CRYPTO_GF128MUL=m
1914CONFIG_CRYPTO_NULL=m
1915# CONFIG_CRYPTO_CRYPTD is not set
1916CONFIG_CRYPTO_AUTHENC=m
1917CONFIG_CRYPTO_TEST=m
1918
1919#
1920# Authenticated Encryption with Associated Data
1921#
1922CONFIG_CRYPTO_CCM=m
1923CONFIG_CRYPTO_GCM=m
1924CONFIG_CRYPTO_SEQIV=m
1925
1926#
1927# Block modes
1928#
1929CONFIG_CRYPTO_CBC=y
1930CONFIG_CRYPTO_CTR=m
1931# CONFIG_CRYPTO_CTS is not set
1932CONFIG_CRYPTO_ECB=m
1933# CONFIG_CRYPTO_LRW is not set
1934CONFIG_CRYPTO_PCBC=m
1935# CONFIG_CRYPTO_XTS is not set
1936
1937#
1938# Hash modes
1939#
1950CONFIG_CRYPTO_HMAC=y 1940CONFIG_CRYPTO_HMAC=y
1951# CONFIG_CRYPTO_XCBC is not set 1941# CONFIG_CRYPTO_XCBC is not set
1952CONFIG_CRYPTO_NULL=m 1942
1943#
1944# Digest
1945#
1946CONFIG_CRYPTO_CRC32C=m
1953CONFIG_CRYPTO_MD4=m 1947CONFIG_CRYPTO_MD4=m
1954CONFIG_CRYPTO_MD5=y 1948CONFIG_CRYPTO_MD5=y
1949CONFIG_CRYPTO_MICHAEL_MIC=m
1955CONFIG_CRYPTO_SHA1=m 1950CONFIG_CRYPTO_SHA1=m
1956CONFIG_CRYPTO_SHA256=m 1951CONFIG_CRYPTO_SHA256=m
1957CONFIG_CRYPTO_SHA512=m 1952CONFIG_CRYPTO_SHA512=m
1958CONFIG_CRYPTO_WP512=m
1959CONFIG_CRYPTO_TGR192=m 1953CONFIG_CRYPTO_TGR192=m
1960CONFIG_CRYPTO_GF128MUL=m 1954CONFIG_CRYPTO_WP512=m
1961CONFIG_CRYPTO_ECB=m 1955
1962CONFIG_CRYPTO_CBC=y 1956#
1963CONFIG_CRYPTO_PCBC=m 1957# Ciphers
1964# CONFIG_CRYPTO_LRW is not set 1958#
1965# CONFIG_CRYPTO_XTS is not set
1966CONFIG_CRYPTO_CTR=m
1967CONFIG_CRYPTO_GCM=m
1968CONFIG_CRYPTO_CCM=m
1969# CONFIG_CRYPTO_CRYPTD is not set
1970CONFIG_CRYPTO_DES=y
1971# CONFIG_CRYPTO_FCRYPT is not set
1972CONFIG_CRYPTO_BLOWFISH=m
1973CONFIG_CRYPTO_TWOFISH=m
1974CONFIG_CRYPTO_TWOFISH_COMMON=m
1975CONFIG_CRYPTO_SERPENT=m
1976CONFIG_CRYPTO_AES=m 1959CONFIG_CRYPTO_AES=m
1960CONFIG_CRYPTO_ANUBIS=m
1961CONFIG_CRYPTO_ARC4=m
1962CONFIG_CRYPTO_BLOWFISH=m
1963# CONFIG_CRYPTO_CAMELLIA is not set
1977CONFIG_CRYPTO_CAST5=m 1964CONFIG_CRYPTO_CAST5=m
1978CONFIG_CRYPTO_CAST6=m 1965CONFIG_CRYPTO_CAST6=m
1979CONFIG_CRYPTO_TEA=m 1966CONFIG_CRYPTO_DES=y
1980CONFIG_CRYPTO_ARC4=m 1967# CONFIG_CRYPTO_FCRYPT is not set
1981CONFIG_CRYPTO_KHAZAD=m 1968CONFIG_CRYPTO_KHAZAD=m
1982CONFIG_CRYPTO_ANUBIS=m
1983# CONFIG_CRYPTO_SEED is not set
1984CONFIG_CRYPTO_SALSA20=m 1969CONFIG_CRYPTO_SALSA20=m
1970# CONFIG_CRYPTO_SEED is not set
1971CONFIG_CRYPTO_SERPENT=m
1972CONFIG_CRYPTO_TEA=m
1973CONFIG_CRYPTO_TWOFISH=m
1974CONFIG_CRYPTO_TWOFISH_COMMON=m
1975
1976#
1977# Compression
1978#
1985CONFIG_CRYPTO_DEFLATE=m 1979CONFIG_CRYPTO_DEFLATE=m
1986CONFIG_CRYPTO_MICHAEL_MIC=m
1987CONFIG_CRYPTO_CRC32C=m
1988# CONFIG_CRYPTO_CAMELLIA is not set
1989CONFIG_CRYPTO_TEST=m
1990CONFIG_CRYPTO_AUTHENC=m
1991CONFIG_CRYPTO_LZO=m 1980CONFIG_CRYPTO_LZO=m
1992# CONFIG_CRYPTO_HW is not set 1981# CONFIG_CRYPTO_HW is not set
1993# CONFIG_PPC_CLOCK is not set 1982# CONFIG_PPC_CLOCK is not set
1983# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig
index 3e2593c60b12..adaa05fb0478 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.25-rc6 3# Linux kernel version: 2.6.26-rc3
4# Thu Mar 27 13:56:28 2008 4# Tue May 20 20:03:28 2008
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
@@ -30,6 +30,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_HAVE_SETUP_PER_CPU_AREA=y 31CONFIG_HAVE_SETUP_PER_CPU_AREA=y
32CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
33CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_TRACE_IRQFLAGS_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
33CONFIG_RWSEM_XCHGADD_ALGORITHM=y 36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
34CONFIG_ARCH_HAS_ILOG2_U32=y 37CONFIG_ARCH_HAS_ILOG2_U32=y
35CONFIG_ARCH_HAS_ILOG2_U64=y 38CONFIG_ARCH_HAS_ILOG2_U64=y
@@ -81,6 +84,7 @@ CONFIG_LOG_BUF_SHIFT=17
81CONFIG_CGROUPS=y 84CONFIG_CGROUPS=y
82# CONFIG_CGROUP_DEBUG is not set 85# CONFIG_CGROUP_DEBUG is not set
83CONFIG_CGROUP_NS=y 86CONFIG_CGROUP_NS=y
87CONFIG_CGROUP_DEVICE=y
84CONFIG_CPUSETS=y 88CONFIG_CPUSETS=y
85# CONFIG_GROUP_SCHED is not set 89# CONFIG_GROUP_SCHED is not set
86CONFIG_CGROUP_CPUACCT=y 90CONFIG_CGROUP_CPUACCT=y
@@ -100,6 +104,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
100CONFIG_SYSCTL=y 104CONFIG_SYSCTL=y
101# CONFIG_EMBEDDED is not set 105# CONFIG_EMBEDDED is not set
102CONFIG_SYSCTL_SYSCALL=y 106CONFIG_SYSCTL_SYSCALL=y
107CONFIG_SYSCTL_SYSCALL_CHECK=y
103CONFIG_KALLSYMS=y 108CONFIG_KALLSYMS=y
104CONFIG_KALLSYMS_ALL=y 109CONFIG_KALLSYMS_ALL=y
105# CONFIG_KALLSYMS_EXTRA_PASS is not set 110# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -107,6 +112,7 @@ CONFIG_HOTPLUG=y
107CONFIG_PRINTK=y 112CONFIG_PRINTK=y
108CONFIG_BUG=y 113CONFIG_BUG=y
109CONFIG_ELF_CORE=y 114CONFIG_ELF_CORE=y
115CONFIG_PCSPKR_PLATFORM=y
110# CONFIG_COMPAT_BRK is not set 116# CONFIG_COMPAT_BRK is not set
111CONFIG_BASE_FULL=y 117CONFIG_BASE_FULL=y
112CONFIG_FUTEX=y 118CONFIG_FUTEX=y
@@ -129,12 +135,14 @@ CONFIG_KPROBES=y
129CONFIG_KRETPROBES=y 135CONFIG_KRETPROBES=y
130CONFIG_HAVE_KPROBES=y 136CONFIG_HAVE_KPROBES=y
131CONFIG_HAVE_KRETPROBES=y 137CONFIG_HAVE_KRETPROBES=y
138# CONFIG_HAVE_DMA_ATTRS is not set
132CONFIG_PROC_PAGE_MONITOR=y 139CONFIG_PROC_PAGE_MONITOR=y
133CONFIG_SLABINFO=y 140CONFIG_SLABINFO=y
134CONFIG_RT_MUTEXES=y 141CONFIG_RT_MUTEXES=y
135# CONFIG_TINY_SHMEM is not set 142# CONFIG_TINY_SHMEM is not set
136CONFIG_BASE_SMALL=0 143CONFIG_BASE_SMALL=0
137CONFIG_MODULES=y 144CONFIG_MODULES=y
145# CONFIG_MODULE_FORCE_LOAD is not set
138CONFIG_MODULE_UNLOAD=y 146CONFIG_MODULE_UNLOAD=y
139# CONFIG_MODULE_FORCE_UNLOAD is not set 147# CONFIG_MODULE_FORCE_UNLOAD is not set
140CONFIG_MODVERSIONS=y 148CONFIG_MODVERSIONS=y
@@ -178,11 +186,11 @@ CONFIG_LPARCFG=y
178# CONFIG_PPC_PMAC is not set 186# CONFIG_PPC_PMAC is not set
179# CONFIG_PPC_MAPLE is not set 187# CONFIG_PPC_MAPLE is not set
180# CONFIG_PPC_PASEMI is not set 188# CONFIG_PPC_PASEMI is not set
181# CONFIG_PPC_CELLEB is not set
182# CONFIG_PPC_PS3 is not set 189# CONFIG_PPC_PS3 is not set
183# CONFIG_PPC_CELL is not set 190# CONFIG_PPC_CELL is not set
184# CONFIG_PPC_CELL_NATIVE is not set 191# CONFIG_PPC_CELL_NATIVE is not set
185# CONFIG_PPC_IBM_CELL_BLADE is not set 192# CONFIG_PPC_IBM_CELL_BLADE is not set
193# CONFIG_PPC_CELLEB is not set
186# CONFIG_PQ2ADS is not set 194# CONFIG_PQ2ADS is not set
187CONFIG_PPC_NATIVE=y 195CONFIG_PPC_NATIVE=y
188# CONFIG_UDBG_RTAS_CONSOLE is not set 196# CONFIG_UDBG_RTAS_CONSOLE is not set
@@ -225,7 +233,6 @@ CONFIG_PREEMPT_NONE=y
225CONFIG_BINFMT_ELF=y 233CONFIG_BINFMT_ELF=y
226CONFIG_COMPAT_BINFMT_ELF=y 234CONFIG_COMPAT_BINFMT_ELF=y
227CONFIG_BINFMT_MISC=m 235CONFIG_BINFMT_MISC=m
228CONFIG_FORCE_MAX_ZONEORDER=13
229CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y 236CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
230CONFIG_IOMMU_VMERGE=y 237CONFIG_IOMMU_VMERGE=y
231CONFIG_IOMMU_HELPER=y 238CONFIG_IOMMU_HELPER=y
@@ -255,6 +262,7 @@ CONFIG_SPARSEMEM_EXTREME=y
255CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y 262CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
256CONFIG_SPARSEMEM_VMEMMAP=y 263CONFIG_SPARSEMEM_VMEMMAP=y
257# CONFIG_MEMORY_HOTPLUG is not set 264# CONFIG_MEMORY_HOTPLUG is not set
265CONFIG_PAGEFLAGS_EXTENDED=y
258CONFIG_SPLIT_PTLOCK_CPUS=4 266CONFIG_SPLIT_PTLOCK_CPUS=4
259CONFIG_MIGRATION=y 267CONFIG_MIGRATION=y
260CONFIG_RESOURCES_64BIT=y 268CONFIG_RESOURCES_64BIT=y
@@ -263,6 +271,7 @@ CONFIG_BOUNCE=y
263CONFIG_NODES_SPAN_OTHER_NODES=y 271CONFIG_NODES_SPAN_OTHER_NODES=y
264# CONFIG_PPC_HAS_HASH_64K is not set 272# CONFIG_PPC_HAS_HASH_64K is not set
265# CONFIG_PPC_64K_PAGES is not set 273# CONFIG_PPC_64K_PAGES is not set
274CONFIG_FORCE_MAX_ZONEORDER=13
266CONFIG_SCHED_SMT=y 275CONFIG_SCHED_SMT=y
267CONFIG_PROC_DEVICETREE=y 276CONFIG_PROC_DEVICETREE=y
268# CONFIG_CMDLINE_BOOL is not set 277# CONFIG_CMDLINE_BOOL is not set
@@ -291,7 +300,10 @@ CONFIG_HOTPLUG_PCI=m
291# CONFIG_HOTPLUG_PCI_SHPC is not set 300# CONFIG_HOTPLUG_PCI_SHPC is not set
292CONFIG_HOTPLUG_PCI_RPA=m 301CONFIG_HOTPLUG_PCI_RPA=m
293CONFIG_HOTPLUG_PCI_RPA_DLPAR=m 302CONFIG_HOTPLUG_PCI_RPA_DLPAR=m
303# CONFIG_HAS_RAPIDIO is not set
304CONFIG_PAGE_OFFSET=0xc000000000000000
294CONFIG_KERNEL_START=0xc000000000000000 305CONFIG_KERNEL_START=0xc000000000000000
306CONFIG_PHYSICAL_START=0x00000000
295 307
296# 308#
297# Networking 309# Networking
@@ -338,8 +350,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
338# CONFIG_TCP_MD5SIG is not set 350# CONFIG_TCP_MD5SIG is not set
339# CONFIG_IP_VS is not set 351# CONFIG_IP_VS is not set
340# CONFIG_IPV6 is not set 352# CONFIG_IPV6 is not set
341# CONFIG_INET6_XFRM_TUNNEL is not set
342# CONFIG_INET6_TUNNEL is not set
343# CONFIG_NETWORK_SECMARK is not set 353# CONFIG_NETWORK_SECMARK is not set
344CONFIG_NETFILTER=y 354CONFIG_NETFILTER=y
345# CONFIG_NETFILTER_DEBUG is not set 355# CONFIG_NETFILTER_DEBUG is not set
@@ -355,6 +365,7 @@ CONFIG_NF_CONNTRACK=m
355CONFIG_NF_CT_ACCT=y 365CONFIG_NF_CT_ACCT=y
356CONFIG_NF_CONNTRACK_MARK=y 366CONFIG_NF_CONNTRACK_MARK=y
357CONFIG_NF_CONNTRACK_EVENTS=y 367CONFIG_NF_CONNTRACK_EVENTS=y
368# CONFIG_NF_CT_PROTO_DCCP is not set
358# CONFIG_NF_CT_PROTO_SCTP is not set 369# CONFIG_NF_CT_PROTO_SCTP is not set
359CONFIG_NF_CT_PROTO_UDPLITE=m 370CONFIG_NF_CT_PROTO_UDPLITE=m
360# CONFIG_NF_CONNTRACK_AMANDA is not set 371# CONFIG_NF_CONNTRACK_AMANDA is not set
@@ -426,6 +437,7 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m
426CONFIG_IP_NF_TARGET_REDIRECT=m 437CONFIG_IP_NF_TARGET_REDIRECT=m
427CONFIG_IP_NF_TARGET_NETMAP=m 438CONFIG_IP_NF_TARGET_NETMAP=m
428CONFIG_NF_NAT_SNMP_BASIC=m 439CONFIG_NF_NAT_SNMP_BASIC=m
440CONFIG_NF_NAT_PROTO_UDPLITE=m
429CONFIG_NF_NAT_FTP=m 441CONFIG_NF_NAT_FTP=m
430CONFIG_NF_NAT_IRC=m 442CONFIG_NF_NAT_IRC=m
431CONFIG_NF_NAT_TFTP=m 443CONFIG_NF_NAT_TFTP=m
@@ -492,6 +504,7 @@ CONFIG_FW_LOADER=y
492# CONFIG_CONNECTOR is not set 504# CONFIG_CONNECTOR is not set
493# CONFIG_MTD is not set 505# CONFIG_MTD is not set
494CONFIG_OF_DEVICE=y 506CONFIG_OF_DEVICE=y
507CONFIG_OF_I2C=y
495CONFIG_PARPORT=m 508CONFIG_PARPORT=m
496CONFIG_PARPORT_PC=m 509CONFIG_PARPORT_PC=m
497# CONFIG_PARPORT_SERIAL is not set 510# CONFIG_PARPORT_SERIAL is not set
@@ -545,7 +558,6 @@ CONFIG_IDE_PROC_FS=y
545# 558#
546# IDE chipset support/bugfixes 559# IDE chipset support/bugfixes
547# 560#
548CONFIG_IDE_GENERIC=y
549# CONFIG_BLK_DEV_PLATFORM is not set 561# CONFIG_BLK_DEV_PLATFORM is not set
550CONFIG_BLK_DEV_IDEDMA_SFF=y 562CONFIG_BLK_DEV_IDEDMA_SFF=y
551 563
@@ -584,7 +596,7 @@ CONFIG_BLK_DEV_AMD74XX=y
584# CONFIG_BLK_DEV_VIA82CXXX is not set 596# CONFIG_BLK_DEV_VIA82CXXX is not set
585# CONFIG_BLK_DEV_TC86C001 is not set 597# CONFIG_BLK_DEV_TC86C001 is not set
586CONFIG_BLK_DEV_IDEDMA=y 598CONFIG_BLK_DEV_IDEDMA=y
587CONFIG_IDE_ARCH_OBSOLETE_INIT=y 599# CONFIG_BLK_DEV_HD_ONLY is not set
588# CONFIG_BLK_DEV_HD is not set 600# CONFIG_BLK_DEV_HD is not set
589 601
590# 602#
@@ -671,61 +683,10 @@ CONFIG_SCSI_LPFC=m
671# CONFIG_SCSI_SRP is not set 683# CONFIG_SCSI_SRP is not set
672CONFIG_ATA=y 684CONFIG_ATA=y
673# CONFIG_ATA_NONSTANDARD is not set 685# CONFIG_ATA_NONSTANDARD is not set
686CONFIG_SATA_PMP=y
674# CONFIG_SATA_AHCI is not set 687# CONFIG_SATA_AHCI is not set
675# CONFIG_SATA_SVW is not set
676# CONFIG_ATA_PIIX is not set
677# CONFIG_SATA_MV is not set
678# CONFIG_SATA_NV is not set
679# CONFIG_PDC_ADMA is not set
680# CONFIG_SATA_QSTOR is not set
681# CONFIG_SATA_PROMISE is not set
682# CONFIG_SATA_SX4 is not set
683# CONFIG_SATA_SIL is not set
684# CONFIG_SATA_SIL24 is not set 688# CONFIG_SATA_SIL24 is not set
685# CONFIG_SATA_SIS is not set 689# CONFIG_ATA_SFF is not set
686# CONFIG_SATA_ULI is not set
687# CONFIG_SATA_VIA is not set
688# CONFIG_SATA_VITESSE is not set
689# CONFIG_SATA_INIC162X is not set
690# CONFIG_PATA_ALI is not set
691# CONFIG_PATA_AMD is not set
692# CONFIG_PATA_ARTOP is not set
693# CONFIG_PATA_ATIIXP is not set
694# CONFIG_PATA_CMD640_PCI is not set
695# CONFIG_PATA_CMD64X is not set
696# CONFIG_PATA_CS5520 is not set
697# CONFIG_PATA_CS5530 is not set
698# CONFIG_PATA_CYPRESS is not set
699# CONFIG_PATA_EFAR is not set
700# CONFIG_ATA_GENERIC is not set
701# CONFIG_PATA_HPT366 is not set
702# CONFIG_PATA_HPT37X is not set
703# CONFIG_PATA_HPT3X2N is not set
704# CONFIG_PATA_HPT3X3 is not set
705# CONFIG_PATA_IT821X is not set
706# CONFIG_PATA_IT8213 is not set
707# CONFIG_PATA_JMICRON is not set
708# CONFIG_PATA_TRIFLEX is not set
709# CONFIG_PATA_MARVELL is not set
710# CONFIG_PATA_MPIIX is not set
711# CONFIG_PATA_OLDPIIX is not set
712# CONFIG_PATA_NETCELL is not set
713# CONFIG_PATA_NINJA32 is not set
714# CONFIG_PATA_NS87410 is not set
715# CONFIG_PATA_NS87415 is not set
716# CONFIG_PATA_OPTI is not set
717# CONFIG_PATA_OPTIDMA is not set
718# CONFIG_PATA_PDC_OLD is not set
719# CONFIG_PATA_RADISYS is not set
720# CONFIG_PATA_RZ1000 is not set
721# CONFIG_PATA_SC1200 is not set
722# CONFIG_PATA_SERVERWORKS is not set
723# CONFIG_PATA_PDC2027X is not set
724# CONFIG_PATA_SIL680 is not set
725# CONFIG_PATA_SIS is not set
726# CONFIG_PATA_VIA is not set
727CONFIG_PATA_WINBOND=y
728# CONFIG_PATA_PLATFORM is not set
729CONFIG_MD=y 690CONFIG_MD=y
730CONFIG_BLK_DEV_MD=y 691CONFIG_BLK_DEV_MD=y
731CONFIG_MD_LINEAR=y 692CONFIG_MD_LINEAR=y
@@ -783,7 +744,6 @@ CONFIG_IBMVETH=y
783# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 744# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
784CONFIG_NET_PCI=y 745CONFIG_NET_PCI=y
785CONFIG_PCNET32=y 746CONFIG_PCNET32=y
786# CONFIG_PCNET32_NAPI is not set
787# CONFIG_AMD8111_ETH is not set 747# CONFIG_AMD8111_ETH is not set
788# CONFIG_ADAPTEC_STARFIRE is not set 748# CONFIG_ADAPTEC_STARFIRE is not set
789# CONFIG_B44 is not set 749# CONFIG_B44 is not set
@@ -820,7 +780,6 @@ CONFIG_E1000=y
820# CONFIG_SIS190 is not set 780# CONFIG_SIS190 is not set
821# CONFIG_SKGE is not set 781# CONFIG_SKGE is not set
822# CONFIG_SKY2 is not set 782# CONFIG_SKY2 is not set
823# CONFIG_SK98LIN is not set
824# CONFIG_VIA_VELOCITY is not set 783# CONFIG_VIA_VELOCITY is not set
825CONFIG_TIGON3=y 784CONFIG_TIGON3=y
826# CONFIG_BNX2 is not set 785# CONFIG_BNX2 is not set
@@ -829,7 +788,6 @@ CONFIG_TIGON3=y
829CONFIG_NETDEV_10000=y 788CONFIG_NETDEV_10000=y
830# CONFIG_CHELSIO_T1 is not set 789# CONFIG_CHELSIO_T1 is not set
831# CONFIG_CHELSIO_T3 is not set 790# CONFIG_CHELSIO_T3 is not set
832CONFIG_EHEA=m
833# CONFIG_IXGBE is not set 791# CONFIG_IXGBE is not set
834CONFIG_IXGB=m 792CONFIG_IXGB=m
835# CONFIG_IXGB_NAPI is not set 793# CONFIG_IXGB_NAPI is not set
@@ -838,10 +796,10 @@ CONFIG_S2IO=m
838# CONFIG_MYRI10GE is not set 796# CONFIG_MYRI10GE is not set
839# CONFIG_NETXEN_NIC is not set 797# CONFIG_NETXEN_NIC is not set
840# CONFIG_NIU is not set 798# CONFIG_NIU is not set
841# CONFIG_PASEMI_MAC is not set
842# CONFIG_MLX4_CORE is not set 799# CONFIG_MLX4_CORE is not set
843# CONFIG_TEHUTI is not set 800# CONFIG_TEHUTI is not set
844# CONFIG_BNX2X is not set 801# CONFIG_BNX2X is not set
802# CONFIG_SFC is not set
845CONFIG_TR=y 803CONFIG_TR=y
846CONFIG_IBMOL=y 804CONFIG_IBMOL=y
847# CONFIG_3C359 is not set 805# CONFIG_3C359 is not set
@@ -852,6 +810,7 @@ CONFIG_IBMOL=y
852# 810#
853# CONFIG_WLAN_PRE80211 is not set 811# CONFIG_WLAN_PRE80211 is not set
854# CONFIG_WLAN_80211 is not set 812# CONFIG_WLAN_80211 is not set
813# CONFIG_IWLWIFI_LEDS is not set
855 814
856# 815#
857# USB Network Adapters 816# USB Network Adapters
@@ -956,6 +915,7 @@ CONFIG_VT=y
956CONFIG_VT_CONSOLE=y 915CONFIG_VT_CONSOLE=y
957CONFIG_HW_CONSOLE=y 916CONFIG_HW_CONSOLE=y
958# CONFIG_VT_HW_CONSOLE_BINDING is not set 917# CONFIG_VT_HW_CONSOLE_BINDING is not set
918CONFIG_DEVKMEM=y
959# CONFIG_SERIAL_NONSTANDARD is not set 919# CONFIG_SERIAL_NONSTANDARD is not set
960# CONFIG_NOZOMI is not set 920# CONFIG_NOZOMI is not set
961 921
@@ -1000,13 +960,7 @@ CONFIG_DEVPORT=y
1000CONFIG_I2C=y 960CONFIG_I2C=y
1001CONFIG_I2C_BOARDINFO=y 961CONFIG_I2C_BOARDINFO=y
1002# CONFIG_I2C_CHARDEV is not set 962# CONFIG_I2C_CHARDEV is not set
1003
1004#
1005# I2C Algorithms
1006#
1007CONFIG_I2C_ALGOBIT=y 963CONFIG_I2C_ALGOBIT=y
1008# CONFIG_I2C_ALGOPCF is not set
1009# CONFIG_I2C_ALGOPCA is not set
1010 964
1011# 965#
1012# I2C Hardware Bus support 966# I2C Hardware Bus support
@@ -1035,6 +989,7 @@ CONFIG_I2C_ALGOBIT=y
1035# CONFIG_I2C_VIA is not set 989# CONFIG_I2C_VIA is not set
1036# CONFIG_I2C_VIAPRO is not set 990# CONFIG_I2C_VIAPRO is not set
1037# CONFIG_I2C_VOODOO3 is not set 991# CONFIG_I2C_VOODOO3 is not set
992# CONFIG_I2C_PCA_PLATFORM is not set
1038 993
1039# 994#
1040# Miscellaneous I2C Chip support 995# Miscellaneous I2C Chip support
@@ -1044,19 +999,13 @@ CONFIG_I2C_ALGOBIT=y
1044# CONFIG_SENSORS_PCF8574 is not set 999# CONFIG_SENSORS_PCF8574 is not set
1045# CONFIG_PCF8575 is not set 1000# CONFIG_PCF8575 is not set
1046# CONFIG_SENSORS_PCF8591 is not set 1001# CONFIG_SENSORS_PCF8591 is not set
1047# CONFIG_TPS65010 is not set
1048# CONFIG_SENSORS_MAX6875 is not set 1002# CONFIG_SENSORS_MAX6875 is not set
1049# CONFIG_SENSORS_TSL2550 is not set 1003# CONFIG_SENSORS_TSL2550 is not set
1050# CONFIG_I2C_DEBUG_CORE is not set 1004# CONFIG_I2C_DEBUG_CORE is not set
1051# CONFIG_I2C_DEBUG_ALGO is not set 1005# CONFIG_I2C_DEBUG_ALGO is not set
1052# CONFIG_I2C_DEBUG_BUS is not set 1006# CONFIG_I2C_DEBUG_BUS is not set
1053# CONFIG_I2C_DEBUG_CHIP is not set 1007# CONFIG_I2C_DEBUG_CHIP is not set
1054
1055#
1056# SPI support
1057#
1058# CONFIG_SPI is not set 1008# CONFIG_SPI is not set
1059# CONFIG_SPI_MASTER is not set
1060# CONFIG_W1 is not set 1009# CONFIG_W1 is not set
1061# CONFIG_POWER_SUPPLY is not set 1010# CONFIG_POWER_SUPPLY is not set
1062# CONFIG_HWMON is not set 1011# CONFIG_HWMON is not set
@@ -1073,12 +1022,22 @@ CONFIG_SSB_POSSIBLE=y
1073# Multifunction device drivers 1022# Multifunction device drivers
1074# 1023#
1075# CONFIG_MFD_SM501 is not set 1024# CONFIG_MFD_SM501 is not set
1025# CONFIG_HTC_PASIC3 is not set
1076 1026
1077# 1027#
1078# Multimedia devices 1028# Multimedia devices
1079# 1029#
1030
1031#
1032# Multimedia core support
1033#
1080# CONFIG_VIDEO_DEV is not set 1034# CONFIG_VIDEO_DEV is not set
1081# CONFIG_DVB_CORE is not set 1035# CONFIG_DVB_CORE is not set
1036# CONFIG_VIDEO_MEDIA is not set
1037
1038#
1039# Multimedia drivers
1040#
1082# CONFIG_DAB is not set 1041# CONFIG_DAB is not set
1083 1042
1084# 1043#
@@ -1098,8 +1057,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y
1098# CONFIG_FB_SYS_FILLRECT is not set 1057# CONFIG_FB_SYS_FILLRECT is not set
1099# CONFIG_FB_SYS_COPYAREA is not set 1058# CONFIG_FB_SYS_COPYAREA is not set
1100# CONFIG_FB_SYS_IMAGEBLIT is not set 1059# CONFIG_FB_SYS_IMAGEBLIT is not set
1060# CONFIG_FB_FOREIGN_ENDIAN is not set
1101# CONFIG_FB_SYS_FOPS is not set 1061# CONFIG_FB_SYS_FOPS is not set
1102CONFIG_FB_DEFERRED_IO=y
1103# CONFIG_FB_SVGALIB is not set 1062# CONFIG_FB_SVGALIB is not set
1104CONFIG_FB_MACMODES=y 1063CONFIG_FB_MACMODES=y
1105CONFIG_FB_BACKLIGHT=y 1064CONFIG_FB_BACKLIGHT=y
@@ -1209,11 +1168,13 @@ CONFIG_USB_DEVICE_CLASS=y
1209# 1168#
1210# USB Host Controller Drivers 1169# USB Host Controller Drivers
1211# 1170#
1171# CONFIG_USB_C67X00_HCD is not set
1212CONFIG_USB_EHCI_HCD=y 1172CONFIG_USB_EHCI_HCD=y
1213# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1173# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1214# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1174# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1215# CONFIG_USB_EHCI_HCD_PPC_OF is not set 1175# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1216# CONFIG_USB_ISP116X_HCD is not set 1176# CONFIG_USB_ISP116X_HCD is not set
1177# CONFIG_USB_ISP1760_HCD is not set
1217CONFIG_USB_OHCI_HCD=y 1178CONFIG_USB_OHCI_HCD=y
1218# CONFIG_USB_OHCI_HCD_PPC_OF is not set 1179# CONFIG_USB_OHCI_HCD_PPC_OF is not set
1219# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1180# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -1247,7 +1208,9 @@ CONFIG_USB_STORAGE=y
1247# CONFIG_USB_STORAGE_SDDR55 is not set 1208# CONFIG_USB_STORAGE_SDDR55 is not set
1248# CONFIG_USB_STORAGE_JUMPSHOT is not set 1209# CONFIG_USB_STORAGE_JUMPSHOT is not set
1249# CONFIG_USB_STORAGE_ALAUDA is not set 1210# CONFIG_USB_STORAGE_ALAUDA is not set
1211CONFIG_USB_STORAGE_ONETOUCH=y
1250# CONFIG_USB_STORAGE_KARMA is not set 1212# CONFIG_USB_STORAGE_KARMA is not set
1213# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1251# CONFIG_USB_LIBUSUAL is not set 1214# CONFIG_USB_LIBUSUAL is not set
1252 1215
1253# 1216#
@@ -1290,6 +1253,7 @@ CONFIG_USB_MON=y
1290# CONFIG_MMC is not set 1253# CONFIG_MMC is not set
1291# CONFIG_MEMSTICK is not set 1254# CONFIG_MEMSTICK is not set
1292# CONFIG_NEW_LEDS is not set 1255# CONFIG_NEW_LEDS is not set
1256# CONFIG_ACCESSIBILITY is not set
1293CONFIG_INFINIBAND=m 1257CONFIG_INFINIBAND=m
1294CONFIG_INFINIBAND_USER_MAD=m 1258CONFIG_INFINIBAND_USER_MAD=m
1295CONFIG_INFINIBAND_USER_ACCESS=m 1259CONFIG_INFINIBAND_USER_ACCESS=m
@@ -1312,10 +1276,6 @@ CONFIG_INFINIBAND_SRP=m
1312# CONFIG_RTC_CLASS is not set 1276# CONFIG_RTC_CLASS is not set
1313# CONFIG_DMADEVICES is not set 1277# CONFIG_DMADEVICES is not set
1314# CONFIG_AUXDISPLAY is not set 1278# CONFIG_AUXDISPLAY is not set
1315
1316#
1317# Userspace I/O
1318#
1319# CONFIG_UIO is not set 1279# CONFIG_UIO is not set
1320 1280
1321# 1281#
@@ -1349,11 +1309,12 @@ CONFIG_JFS_SECURITY=y
1349CONFIG_FS_POSIX_ACL=y 1309CONFIG_FS_POSIX_ACL=y
1350CONFIG_XFS_FS=m 1310CONFIG_XFS_FS=m
1351# CONFIG_XFS_QUOTA is not set 1311# CONFIG_XFS_QUOTA is not set
1352CONFIG_XFS_SECURITY=y
1353CONFIG_XFS_POSIX_ACL=y 1312CONFIG_XFS_POSIX_ACL=y
1354# CONFIG_XFS_RT is not set 1313# CONFIG_XFS_RT is not set
1314# CONFIG_XFS_DEBUG is not set
1355# CONFIG_GFS2_FS is not set 1315# CONFIG_GFS2_FS is not set
1356CONFIG_OCFS2_FS=m 1316CONFIG_OCFS2_FS=m
1317CONFIG_OCFS2_FS_O2CB=m
1357CONFIG_OCFS2_DEBUG_MASKLOG=y 1318CONFIG_OCFS2_DEBUG_MASKLOG=y
1358# CONFIG_OCFS2_DEBUG_FS is not set 1319# CONFIG_OCFS2_DEBUG_FS is not set
1359CONFIG_DNOTIFY=y 1320CONFIG_DNOTIFY=y
@@ -1419,13 +1380,11 @@ CONFIG_NFS_FS=y
1419CONFIG_NFS_V3=y 1380CONFIG_NFS_V3=y
1420CONFIG_NFS_V3_ACL=y 1381CONFIG_NFS_V3_ACL=y
1421CONFIG_NFS_V4=y 1382CONFIG_NFS_V4=y
1422# CONFIG_NFS_DIRECTIO is not set
1423CONFIG_NFSD=y 1383CONFIG_NFSD=y
1424CONFIG_NFSD_V2_ACL=y 1384CONFIG_NFSD_V2_ACL=y
1425CONFIG_NFSD_V3=y 1385CONFIG_NFSD_V3=y
1426CONFIG_NFSD_V3_ACL=y 1386CONFIG_NFSD_V3_ACL=y
1427CONFIG_NFSD_V4=y 1387CONFIG_NFSD_V4=y
1428CONFIG_NFSD_TCP=y
1429CONFIG_LOCKD=y 1388CONFIG_LOCKD=y
1430CONFIG_LOCKD_V4=y 1389CONFIG_LOCKD_V4=y
1431CONFIG_EXPORTFS=y 1390CONFIG_EXPORTFS=y
@@ -1500,9 +1459,10 @@ CONFIG_NLS_ISO8859_1=y
1500# Library routines 1459# Library routines
1501# 1460#
1502CONFIG_BITREVERSE=y 1461CONFIG_BITREVERSE=y
1462# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1503CONFIG_CRC_CCITT=m 1463CONFIG_CRC_CCITT=m
1504# CONFIG_CRC16 is not set 1464# CONFIG_CRC16 is not set
1505# CONFIG_CRC_ITU_T is not set 1465CONFIG_CRC_ITU_T=m
1506CONFIG_CRC32=y 1466CONFIG_CRC32=y
1507# CONFIG_CRC7 is not set 1467# CONFIG_CRC7 is not set
1508CONFIG_LIBCRC32C=m 1468CONFIG_LIBCRC32C=m
@@ -1526,6 +1486,7 @@ CONFIG_HAVE_LMB=y
1526# CONFIG_PRINTK_TIME is not set 1486# CONFIG_PRINTK_TIME is not set
1527CONFIG_ENABLE_WARN_DEPRECATED=y 1487CONFIG_ENABLE_WARN_DEPRECATED=y
1528CONFIG_ENABLE_MUST_CHECK=y 1488CONFIG_ENABLE_MUST_CHECK=y
1489CONFIG_FRAME_WARN=2048
1529CONFIG_MAGIC_SYSRQ=y 1490CONFIG_MAGIC_SYSRQ=y
1530# CONFIG_UNUSED_SYMBOLS is not set 1491# CONFIG_UNUSED_SYMBOLS is not set
1531CONFIG_DEBUG_FS=y 1492CONFIG_DEBUG_FS=y
@@ -1536,18 +1497,23 @@ CONFIG_DETECT_SOFTLOCKUP=y
1536CONFIG_SCHED_DEBUG=y 1497CONFIG_SCHED_DEBUG=y
1537# CONFIG_SCHEDSTATS is not set 1498# CONFIG_SCHEDSTATS is not set
1538# CONFIG_TIMER_STATS is not set 1499# CONFIG_TIMER_STATS is not set
1500# CONFIG_DEBUG_OBJECTS is not set
1539# CONFIG_SLUB_DEBUG_ON is not set 1501# CONFIG_SLUB_DEBUG_ON is not set
1540# CONFIG_SLUB_STATS is not set 1502# CONFIG_SLUB_STATS is not set
1541# CONFIG_DEBUG_RT_MUTEXES is not set 1503# CONFIG_DEBUG_RT_MUTEXES is not set
1542# CONFIG_RT_MUTEX_TESTER is not set 1504# CONFIG_RT_MUTEX_TESTER is not set
1543# CONFIG_DEBUG_SPINLOCK is not set 1505# CONFIG_DEBUG_SPINLOCK is not set
1544# CONFIG_DEBUG_MUTEXES is not set 1506# CONFIG_DEBUG_MUTEXES is not set
1507# CONFIG_DEBUG_LOCK_ALLOC is not set
1508# CONFIG_PROVE_LOCKING is not set
1509# CONFIG_LOCK_STAT is not set
1545# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1510# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1546# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1511# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1547# CONFIG_DEBUG_KOBJECT is not set 1512# CONFIG_DEBUG_KOBJECT is not set
1548CONFIG_DEBUG_BUGVERBOSE=y 1513CONFIG_DEBUG_BUGVERBOSE=y
1549# CONFIG_DEBUG_INFO is not set 1514# CONFIG_DEBUG_INFO is not set
1550# CONFIG_DEBUG_VM is not set 1515# CONFIG_DEBUG_VM is not set
1516# CONFIG_DEBUG_WRITECOUNT is not set
1551# CONFIG_DEBUG_LIST is not set 1517# CONFIG_DEBUG_LIST is not set
1552# CONFIG_DEBUG_SG is not set 1518# CONFIG_DEBUG_SG is not set
1553# CONFIG_BOOT_PRINTK_DELAY is not set 1519# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -1577,53 +1543,83 @@ CONFIG_VIRQ_DEBUG=y
1577# CONFIG_SECURITY is not set 1543# CONFIG_SECURITY is not set
1578# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1544# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1579CONFIG_CRYPTO=y 1545CONFIG_CRYPTO=y
1546
1547#
1548# Crypto core or helper
1549#
1580CONFIG_CRYPTO_ALGAPI=y 1550CONFIG_CRYPTO_ALGAPI=y
1581CONFIG_CRYPTO_AEAD=m 1551CONFIG_CRYPTO_AEAD=m
1582CONFIG_CRYPTO_BLKCIPHER=y 1552CONFIG_CRYPTO_BLKCIPHER=y
1583CONFIG_CRYPTO_SEQIV=m
1584CONFIG_CRYPTO_HASH=y 1553CONFIG_CRYPTO_HASH=y
1585CONFIG_CRYPTO_MANAGER=y 1554CONFIG_CRYPTO_MANAGER=y
1555CONFIG_CRYPTO_GF128MUL=m
1556CONFIG_CRYPTO_NULL=m
1557# CONFIG_CRYPTO_CRYPTD is not set
1558CONFIG_CRYPTO_AUTHENC=m
1559CONFIG_CRYPTO_TEST=m
1560
1561#
1562# Authenticated Encryption with Associated Data
1563#
1564CONFIG_CRYPTO_CCM=m
1565CONFIG_CRYPTO_GCM=m
1566CONFIG_CRYPTO_SEQIV=m
1567
1568#
1569# Block modes
1570#
1571CONFIG_CRYPTO_CBC=y
1572CONFIG_CRYPTO_CTR=m
1573# CONFIG_CRYPTO_CTS is not set
1574CONFIG_CRYPTO_ECB=m
1575# CONFIG_CRYPTO_LRW is not set
1576CONFIG_CRYPTO_PCBC=m
1577# CONFIG_CRYPTO_XTS is not set
1578
1579#
1580# Hash modes
1581#
1586CONFIG_CRYPTO_HMAC=y 1582CONFIG_CRYPTO_HMAC=y
1587# CONFIG_CRYPTO_XCBC is not set 1583# CONFIG_CRYPTO_XCBC is not set
1588CONFIG_CRYPTO_NULL=m 1584
1585#
1586# Digest
1587#
1588CONFIG_CRYPTO_CRC32C=m
1589CONFIG_CRYPTO_MD4=m 1589CONFIG_CRYPTO_MD4=m
1590CONFIG_CRYPTO_MD5=y 1590CONFIG_CRYPTO_MD5=y
1591CONFIG_CRYPTO_MICHAEL_MIC=m
1591CONFIG_CRYPTO_SHA1=m 1592CONFIG_CRYPTO_SHA1=m
1592CONFIG_CRYPTO_SHA256=m 1593CONFIG_CRYPTO_SHA256=m
1593CONFIG_CRYPTO_SHA512=m 1594CONFIG_CRYPTO_SHA512=m
1594CONFIG_CRYPTO_WP512=m
1595CONFIG_CRYPTO_TGR192=m 1595CONFIG_CRYPTO_TGR192=m
1596CONFIG_CRYPTO_GF128MUL=m 1596CONFIG_CRYPTO_WP512=m
1597CONFIG_CRYPTO_ECB=m 1597
1598CONFIG_CRYPTO_CBC=y 1598#
1599CONFIG_CRYPTO_PCBC=m 1599# Ciphers
1600# CONFIG_CRYPTO_LRW is not set 1600#
1601# CONFIG_CRYPTO_XTS is not set
1602CONFIG_CRYPTO_CTR=m
1603CONFIG_CRYPTO_GCM=m
1604CONFIG_CRYPTO_CCM=m
1605# CONFIG_CRYPTO_CRYPTD is not set
1606CONFIG_CRYPTO_DES=y
1607# CONFIG_CRYPTO_FCRYPT is not set
1608CONFIG_CRYPTO_BLOWFISH=m
1609CONFIG_CRYPTO_TWOFISH=m
1610CONFIG_CRYPTO_TWOFISH_COMMON=m
1611CONFIG_CRYPTO_SERPENT=m
1612CONFIG_CRYPTO_AES=m 1601CONFIG_CRYPTO_AES=m
1602CONFIG_CRYPTO_ANUBIS=m
1603CONFIG_CRYPTO_ARC4=m
1604CONFIG_CRYPTO_BLOWFISH=m
1605# CONFIG_CRYPTO_CAMELLIA is not set
1613CONFIG_CRYPTO_CAST5=m 1606CONFIG_CRYPTO_CAST5=m
1614CONFIG_CRYPTO_CAST6=m 1607CONFIG_CRYPTO_CAST6=m
1615CONFIG_CRYPTO_TEA=m 1608CONFIG_CRYPTO_DES=y
1616CONFIG_CRYPTO_ARC4=m 1609# CONFIG_CRYPTO_FCRYPT is not set
1617CONFIG_CRYPTO_KHAZAD=m 1610CONFIG_CRYPTO_KHAZAD=m
1618CONFIG_CRYPTO_ANUBIS=m
1619# CONFIG_CRYPTO_SEED is not set
1620CONFIG_CRYPTO_SALSA20=m 1611CONFIG_CRYPTO_SALSA20=m
1612# CONFIG_CRYPTO_SEED is not set
1613CONFIG_CRYPTO_SERPENT=m
1614CONFIG_CRYPTO_TEA=m
1615CONFIG_CRYPTO_TWOFISH=m
1616CONFIG_CRYPTO_TWOFISH_COMMON=m
1617
1618#
1619# Compression
1620#
1621CONFIG_CRYPTO_DEFLATE=m 1621CONFIG_CRYPTO_DEFLATE=m
1622CONFIG_CRYPTO_MICHAEL_MIC=m
1623CONFIG_CRYPTO_CRC32C=m
1624# CONFIG_CRYPTO_CAMELLIA is not set
1625CONFIG_CRYPTO_TEST=m
1626CONFIG_CRYPTO_AUTHENC=m
1627CONFIG_CRYPTO_LZO=m 1622CONFIG_CRYPTO_LZO=m
1628# CONFIG_CRYPTO_HW is not set 1623# CONFIG_CRYPTO_HW is not set
1629# CONFIG_PPC_CLOCK is not set 1624# CONFIG_PPC_CLOCK is not set
1625# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/mm/hash_low_32.S b/arch/powerpc/mm/hash_low_32.S
index ddeaf9e38ad5..b9ba7d930801 100644
--- a/arch/powerpc/mm/hash_low_32.S
+++ b/arch/powerpc/mm/hash_low_32.S
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: hashtable.S,v 1.6 1999/10/08 01:56:15 paulus Exp $
3 *
4 * PowerPC version 2 * PowerPC version
5 * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) 3 * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
6 * Rewritten by Cort Dougan (cort@cs.nmt.edu) for PReP 4 * Rewritten by Cort Dougan (cort@cs.nmt.edu) for PReP
diff --git a/arch/sh/drivers/heartbeat.c b/arch/sh/drivers/heartbeat.c
index ab77b0e0fa0e..938817e34e2b 100644
--- a/arch/sh/drivers/heartbeat.c
+++ b/arch/sh/drivers/heartbeat.c
@@ -154,4 +154,4 @@ module_exit(heartbeat_exit);
154 154
155MODULE_VERSION(DRV_VERSION); 155MODULE_VERSION(DRV_VERSION);
156MODULE_AUTHOR("Paul Mundt"); 156MODULE_AUTHOR("Paul Mundt");
157MODULE_LICENSE("GPLv2"); 157MODULE_LICENSE("GPL v2");
diff --git a/arch/um/Kconfig b/arch/um/Kconfig
index dba8e05f0287..6976812cfb18 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig
@@ -259,6 +259,8 @@ if BROKEN
259 source "drivers/mtd/Kconfig" 259 source "drivers/mtd/Kconfig"
260endif 260endif
261 261
262source "drivers/leds/Kconfig"
263
262#This is just to shut up some Kconfig warnings, so no prompt. 264#This is just to shut up some Kconfig warnings, so no prompt.
263config INPUT 265config INPUT
264 bool 266 bool
diff --git a/arch/um/drivers/pcap_user.c b/arch/um/drivers/pcap_user.c
index e9809356c530..5f903587d69e 100644
--- a/arch/um/drivers/pcap_user.c
+++ b/arch/um/drivers/pcap_user.c
@@ -50,7 +50,7 @@ static int pcap_open(void *data)
50 return -EIO; 50 return -EIO;
51 } 51 }
52 52
53 pri->compiled = kmalloc(sizeof(struct bpf_program), 53 pri->compiled = uml_kmalloc(sizeof(struct bpf_program),
54 UM_GFP_KERNEL); 54 UM_GFP_KERNEL);
55 if (pri->compiled == NULL) { 55 if (pri->compiled == NULL) {
56 printk(UM_KERN_ERR "pcap_open : kmalloc failed\n"); 56 printk(UM_KERN_ERR "pcap_open : kmalloc failed\n");
diff --git a/arch/um/kernel/ksyms.c b/arch/um/kernel/ksyms.c
index 66e2a305a8d6..ccc02a616c22 100644
--- a/arch/um/kernel/ksyms.c
+++ b/arch/um/kernel/ksyms.c
@@ -60,6 +60,11 @@ EXPORT_SYMBOL(os_rcv_fd);
60EXPORT_SYMBOL(run_helper); 60EXPORT_SYMBOL(run_helper);
61EXPORT_SYMBOL(start_thread); 61EXPORT_SYMBOL(start_thread);
62 62
63EXPORT_SYMBOL(add_sigio_fd);
64EXPORT_SYMBOL(ignore_sigio_fd);
65EXPORT_SYMBOL(deactivate_fd);
66EXPORT_SYMBOL(sigio_broken);
67
63#ifdef CONFIG_SMP 68#ifdef CONFIG_SMP
64 69
65/* required for SMP */ 70/* required for SMP */
diff --git a/arch/um/os-Linux/sys-i386/registers.c b/arch/um/os-Linux/sys-i386/registers.c
index c6183e7aec3d..b487cbead1bd 100644
--- a/arch/um/os-Linux/sys-i386/registers.c
+++ b/arch/um/os-Linux/sys-i386/registers.c
@@ -5,6 +5,7 @@
5 */ 5 */
6 6
7#include <errno.h> 7#include <errno.h>
8#include <sys/ptrace.h>
8#include <asm/user.h> 9#include <asm/user.h>
9#include "kern_constants.h" 10#include "kern_constants.h"
10#include "longjmp.h" 11#include "longjmp.h"
diff --git a/arch/um/sys-x86_64/ksyms.c b/arch/um/sys-x86_64/ksyms.c
index 4d7d1a812d8f..6604673a849d 100644
--- a/arch/um/sys-x86_64/ksyms.c
+++ b/arch/um/sys-x86_64/ksyms.c
@@ -1,5 +1,7 @@
1#include "linux/module.h" 1#include <linux/module.h>
2#include "asm/string.h" 2#include <asm/string.h>
3#include <asm/checksum.h>
3 4
4/*XXX: we need them because they would be exported by x86_64 */ 5/*XXX: we need them because they would be exported by x86_64 */
5EXPORT_SYMBOL(__memcpy); 6EXPORT_SYMBOL(__memcpy);
7EXPORT_SYMBOL(csum_partial);
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 8545c8a9d107..6e64aaf00d1d 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -302,18 +302,18 @@ static struct dmi_system_id __devinitdata pciprobe_dmi_table[] = {
302 }, 302 },
303 { 303 {
304 .callback = set_bf_sort, 304 .callback = set_bf_sort,
305 .ident = "HP ProLiant DL385 G2", 305 .ident = "HP ProLiant DL360",
306 .matches = { 306 .matches = {
307 DMI_MATCH(DMI_SYS_VENDOR, "HP"), 307 DMI_MATCH(DMI_SYS_VENDOR, "HP"),
308 DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL385 G2"), 308 DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL360"),
309 }, 309 },
310 }, 310 },
311 { 311 {
312 .callback = set_bf_sort, 312 .callback = set_bf_sort,
313 .ident = "HP ProLiant DL585 G2", 313 .ident = "HP ProLiant DL380",
314 .matches = { 314 .matches = {
315 DMI_MATCH(DMI_SYS_VENDOR, "HP"), 315 DMI_MATCH(DMI_SYS_VENDOR, "HP"),
316 DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL585 G2"), 316 DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL380"),
317 }, 317 },
318 }, 318 },
319#ifdef __i386__ 319#ifdef __i386__
diff --git a/drivers/atm/fore200e.h b/drivers/atm/fore200e.h
index 183841cc8fdf..8dd4aa76c3bd 100644
--- a/drivers/atm/fore200e.h
+++ b/drivers/atm/fore200e.h
@@ -1,4 +1,3 @@
1/* $Id: fore200e.h,v 1.4 2000/04/14 10:10:34 davem Exp $ */
2#ifndef _FORE200E_H 1#ifndef _FORE200E_H
3#define _FORE200E_H 2#define _FORE200E_H
4 3
diff --git a/drivers/atm/fore200e_mkfirm.c b/drivers/atm/fore200e_mkfirm.c
index 2ebe1a1e6f8b..520e14b488ff 100644
--- a/drivers/atm/fore200e_mkfirm.c
+++ b/drivers/atm/fore200e_mkfirm.c
@@ -1,6 +1,4 @@
1/* 1/*
2 $Id: fore200e_mkfirm.c,v 1.1 2000/02/21 16:04:32 davem Exp $
3
4 mkfirm.c: generates a C readable file from a binary firmware image 2 mkfirm.c: generates a C readable file from a binary firmware image
5 3
6 Christophe Lizzi (lizzi@{csti.fr, cnam.fr}), June 1999. 4 Christophe Lizzi (lizzi@{csti.fr, cnam.fr}), June 1999.
diff --git a/drivers/atm/he.h b/drivers/atm/he.h
index 1dc277547a73..fe6cd15a78a4 100644
--- a/drivers/atm/he.h
+++ b/drivers/atm/he.h
@@ -1,5 +1,3 @@
1/* $Id: he.h,v 1.4 2003/05/06 22:48:00 chas Exp $ */
2
3/* 1/*
4 2
5 he.h 3 he.h
diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
index 28d77b5195de..3a504e94a4d9 100644
--- a/drivers/atm/idt77252.c
+++ b/drivers/atm/idt77252.c
@@ -1,8 +1,4 @@
1/******************************************************************* 1/*******************************************************************
2 * ident "$Id: idt77252.c,v 1.2 2001/11/11 08:13:54 ecd Exp $"
3 *
4 * $Author: ecd $
5 * $Date: 2001/11/11 08:13:54 $
6 * 2 *
7 * Copyright (c) 2000 ATecoM GmbH 3 * Copyright (c) 2000 ATecoM GmbH
8 * 4 *
@@ -29,9 +25,6 @@
29 * 675 Mass Ave, Cambridge, MA 02139, USA. 25 * 675 Mass Ave, Cambridge, MA 02139, USA.
30 * 26 *
31 *******************************************************************/ 27 *******************************************************************/
32static char const rcsid[] =
33"$Id: idt77252.c,v 1.2 2001/11/11 08:13:54 ecd Exp $";
34
35 28
36#include <linux/module.h> 29#include <linux/module.h>
37#include <linux/pci.h> 30#include <linux/pci.h>
diff --git a/drivers/atm/idt77252.h b/drivers/atm/idt77252.h
index 6f2b4a5875fb..e83eaf120da0 100644
--- a/drivers/atm/idt77252.h
+++ b/drivers/atm/idt77252.h
@@ -1,8 +1,4 @@
1/******************************************************************* 1/*******************************************************************
2 * ident "$Id: idt77252.h,v 1.2 2001/11/11 08:13:54 ecd Exp $"
3 *
4 * $Author: ecd $
5 * $Date: 2001/11/11 08:13:54 $
6 * 2 *
7 * Copyright (c) 2000 ATecoM GmbH 3 * Copyright (c) 2000 ATecoM GmbH
8 * 4 *
diff --git a/drivers/atm/iphase.h b/drivers/atm/iphase.h
index 133eefcc0475..b2cd20f549cb 100644
--- a/drivers/atm/iphase.h
+++ b/drivers/atm/iphase.h
@@ -1025,7 +1025,8 @@ typedef struct iadev_t {
1025 spinlock_t rx_lock, misc_lock; 1025 spinlock_t rx_lock, misc_lock;
1026 struct atm_vcc **rx_open; /* list of all open VCs */ 1026 struct atm_vcc **rx_open; /* list of all open VCs */
1027 u16 num_rx_desc, rx_buf_sz, rxing; 1027 u16 num_rx_desc, rx_buf_sz, rxing;
1028 u32 rx_pkt_ram, rx_tmp_cnt, rx_tmp_jif; 1028 u32 rx_pkt_ram, rx_tmp_cnt;
1029 unsigned long rx_tmp_jif;
1029 void __iomem *RX_DESC_BASE_ADDR; 1030 void __iomem *RX_DESC_BASE_ADDR;
1030 u32 drop_rxpkt, drop_rxcell, rx_cell_cnt, rx_pkt_cnt; 1031 u32 drop_rxpkt, drop_rxcell, rx_cell_cnt, rx_pkt_cnt;
1031 struct atm_dev *next_board; /* other iphase devices */ 1032 struct atm_dev *next_board; /* other iphase devices */
diff --git a/drivers/atm/nicstarmac.copyright b/drivers/atm/nicstarmac.copyright
index 2e15b39fac4f..180531a83c62 100644
--- a/drivers/atm/nicstarmac.copyright
+++ b/drivers/atm/nicstarmac.copyright
@@ -13,7 +13,7 @@
13 * 13 *
14 * Modified to work with the IDT7721 nicstar -- AAL5 (tested) only. 14 * Modified to work with the IDT7721 nicstar -- AAL5 (tested) only.
15 * 15 *
16 * R. D. Rechenmacher <ron@fnal.gov>, Aug. 6, 1997 $Revision: 1.1 $ $Date: 1999/08/20 11:00:11 $ 16 * R. D. Rechenmacher <ron@fnal.gov>, Aug. 6, 1997
17 * 17 *
18 * Linux driver for the IDT77201 NICStAR PCI ATM controller. 18 * Linux driver for the IDT77201 NICStAR PCI ATM controller.
19 * PHY component is expected to be 155 Mbps S/UNI-Lite or IDT 77155; 19 * PHY component is expected to be 155 Mbps S/UNI-Lite or IDT 77155;
diff --git a/drivers/base/core.c b/drivers/base/core.c
index be288b5e4180..72eccae4904b 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -1084,11 +1084,13 @@ static void device_create_release(struct device *dev)
1084} 1084}
1085 1085
1086/** 1086/**
1087 * device_create - creates a device and registers it with sysfs 1087 * device_create_vargs - creates a device and registers it with sysfs
1088 * @class: pointer to the struct class that this device should be registered to 1088 * @class: pointer to the struct class that this device should be registered to
1089 * @parent: pointer to the parent struct device of this new device, if any 1089 * @parent: pointer to the parent struct device of this new device, if any
1090 * @devt: the dev_t for the char device to be added 1090 * @devt: the dev_t for the char device to be added
1091 * @drvdata: the data to be added to the device for callbacks
1091 * @fmt: string for the device's name 1092 * @fmt: string for the device's name
1093 * @args: va_list for the device's name
1092 * 1094 *
1093 * This function can be used by char device classes. A struct device 1095 * This function can be used by char device classes. A struct device
1094 * will be created in sysfs, registered to the specified class. 1096 * will be created in sysfs, registered to the specified class.
@@ -1104,10 +1106,10 @@ static void device_create_release(struct device *dev)
1104 * Note: the struct class passed to this function must have previously 1106 * Note: the struct class passed to this function must have previously
1105 * been created with a call to class_create(). 1107 * been created with a call to class_create().
1106 */ 1108 */
1107struct device *device_create(struct class *class, struct device *parent, 1109struct device *device_create_vargs(struct class *class, struct device *parent,
1108 dev_t devt, const char *fmt, ...) 1110 dev_t devt, void *drvdata, const char *fmt,
1111 va_list args)
1109{ 1112{
1110 va_list args;
1111 struct device *dev = NULL; 1113 struct device *dev = NULL;
1112 int retval = -ENODEV; 1114 int retval = -ENODEV;
1113 1115
@@ -1124,10 +1126,9 @@ struct device *device_create(struct class *class, struct device *parent,
1124 dev->class = class; 1126 dev->class = class;
1125 dev->parent = parent; 1127 dev->parent = parent;
1126 dev->release = device_create_release; 1128 dev->release = device_create_release;
1129 dev_set_drvdata(dev, drvdata);
1127 1130
1128 va_start(args, fmt);
1129 vsnprintf(dev->bus_id, BUS_ID_SIZE, fmt, args); 1131 vsnprintf(dev->bus_id, BUS_ID_SIZE, fmt, args);
1130 va_end(args);
1131 retval = device_register(dev); 1132 retval = device_register(dev);
1132 if (retval) 1133 if (retval)
1133 goto error; 1134 goto error;
@@ -1138,6 +1139,78 @@ error:
1138 kfree(dev); 1139 kfree(dev);
1139 return ERR_PTR(retval); 1140 return ERR_PTR(retval);
1140} 1141}
1142EXPORT_SYMBOL_GPL(device_create_vargs);
1143
1144/**
1145 * device_create_drvdata - creates a device and registers it with sysfs
1146 * @class: pointer to the struct class that this device should be registered to
1147 * @parent: pointer to the parent struct device of this new device, if any
1148 * @devt: the dev_t for the char device to be added
1149 * @drvdata: the data to be added to the device for callbacks
1150 * @fmt: string for the device's name
1151 *
1152 * This function can be used by char device classes. A struct device
1153 * will be created in sysfs, registered to the specified class.
1154 *
1155 * A "dev" file will be created, showing the dev_t for the device, if
1156 * the dev_t is not 0,0.
1157 * If a pointer to a parent struct device is passed in, the newly created
1158 * struct device will be a child of that device in sysfs.
1159 * The pointer to the struct device will be returned from the call.
1160 * Any further sysfs files that might be required can be created using this
1161 * pointer.
1162 *
1163 * Note: the struct class passed to this function must have previously
1164 * been created with a call to class_create().
1165 */
1166struct device *device_create_drvdata(struct class *class,
1167 struct device *parent,
1168 dev_t devt,
1169 void *drvdata,
1170 const char *fmt, ...)
1171{
1172 va_list vargs;
1173 struct device *dev;
1174
1175 va_start(vargs, fmt);
1176 dev = device_create_vargs(class, parent, devt, drvdata, fmt, vargs);
1177 va_end(vargs);
1178 return dev;
1179}
1180EXPORT_SYMBOL_GPL(device_create_drvdata);
1181
1182/**
1183 * device_create - creates a device and registers it with sysfs
1184 * @class: pointer to the struct class that this device should be registered to
1185 * @parent: pointer to the parent struct device of this new device, if any
1186 * @devt: the dev_t for the char device to be added
1187 * @fmt: string for the device's name
1188 *
1189 * This function can be used by char device classes. A struct device
1190 * will be created in sysfs, registered to the specified class.
1191 *
1192 * A "dev" file will be created, showing the dev_t for the device, if
1193 * the dev_t is not 0,0.
1194 * If a pointer to a parent struct device is passed in, the newly created
1195 * struct device will be a child of that device in sysfs.
1196 * The pointer to the struct device will be returned from the call.
1197 * Any further sysfs files that might be required can be created using this
1198 * pointer.
1199 *
1200 * Note: the struct class passed to this function must have previously
1201 * been created with a call to class_create().
1202 */
1203struct device *device_create(struct class *class, struct device *parent,
1204 dev_t devt, const char *fmt, ...)
1205{
1206 va_list vargs;
1207 struct device *dev;
1208
1209 va_start(vargs, fmt);
1210 dev = device_create_vargs(class, parent, devt, NULL, fmt, vargs);
1211 va_end(vargs);
1212 return dev;
1213}
1141EXPORT_SYMBOL_GPL(device_create); 1214EXPORT_SYMBOL_GPL(device_create);
1142 1215
1143static int __match_devt(struct device *dev, void *data) 1216static int __match_devt(struct device *dev, void *data)
@@ -1218,13 +1291,11 @@ int device_rename(struct device *dev, char *new_name)
1218 } 1291 }
1219#else 1292#else
1220 if (dev->class) { 1293 if (dev->class) {
1221 sysfs_remove_link(&dev->class->subsys.kobj, old_device_name);
1222 error = sysfs_create_link(&dev->class->subsys.kobj, &dev->kobj, 1294 error = sysfs_create_link(&dev->class->subsys.kobj, &dev->kobj,
1223 dev->bus_id); 1295 dev->bus_id);
1224 if (error) { 1296 if (error)
1225 dev_err(dev, "%s: sysfs_create_symlink failed (%d)\n", 1297 goto out;
1226 __func__, error); 1298 sysfs_remove_link(&dev->class->subsys.kobj, old_device_name);
1227 }
1228 } 1299 }
1229#endif 1300#endif
1230 1301
diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c
index 762b729672e0..0ec0f431e6a1 100644
--- a/drivers/dma/iop-adma.c
+++ b/drivers/dma/iop-adma.c
@@ -821,10 +821,10 @@ static int __devinit iop_adma_memcpy_self_test(struct iop_adma_device *device)
821 821
822 dev_dbg(device->common.dev, "%s\n", __func__); 822 dev_dbg(device->common.dev, "%s\n", __func__);
823 823
824 src = kzalloc(sizeof(u8) * IOP_ADMA_TEST_SIZE, GFP_KERNEL); 824 src = kmalloc(IOP_ADMA_TEST_SIZE, GFP_KERNEL);
825 if (!src) 825 if (!src)
826 return -ENOMEM; 826 return -ENOMEM;
827 dest = kzalloc(sizeof(u8) * IOP_ADMA_TEST_SIZE, GFP_KERNEL); 827 dest = kzalloc(IOP_ADMA_TEST_SIZE, GFP_KERNEL);
828 if (!dest) { 828 if (!dest) {
829 kfree(src); 829 kfree(src);
830 return -ENOMEM; 830 return -ENOMEM;
@@ -834,8 +834,6 @@ static int __devinit iop_adma_memcpy_self_test(struct iop_adma_device *device)
834 for (i = 0; i < IOP_ADMA_TEST_SIZE; i++) 834 for (i = 0; i < IOP_ADMA_TEST_SIZE; i++)
835 ((u8 *) src)[i] = (u8)i; 835 ((u8 *) src)[i] = (u8)i;
836 836
837 memset(dest, 0, IOP_ADMA_TEST_SIZE);
838
839 /* Start copy, using first DMA channel */ 837 /* Start copy, using first DMA channel */
840 dma_chan = container_of(device->common.channels.next, 838 dma_chan = container_of(device->common.channels.next,
841 struct dma_chan, 839 struct dma_chan,
diff --git a/drivers/firewire/fw-cdev.c b/drivers/firewire/fw-cdev.c
index 4a541921a14a..dda14015e873 100644
--- a/drivers/firewire/fw-cdev.c
+++ b/drivers/firewire/fw-cdev.c
@@ -113,6 +113,11 @@ static int fw_device_op_open(struct inode *inode, struct file *file)
113 if (device == NULL) 113 if (device == NULL)
114 return -ENODEV; 114 return -ENODEV;
115 115
116 if (fw_device_is_shutdown(device)) {
117 fw_device_put(device);
118 return -ENODEV;
119 }
120
116 client = kzalloc(sizeof(*client), GFP_KERNEL); 121 client = kzalloc(sizeof(*client), GFP_KERNEL);
117 if (client == NULL) { 122 if (client == NULL) {
118 fw_device_put(device); 123 fw_device_put(device);
@@ -901,6 +906,9 @@ fw_device_op_ioctl(struct file *file,
901{ 906{
902 struct client *client = file->private_data; 907 struct client *client = file->private_data;
903 908
909 if (fw_device_is_shutdown(client->device))
910 return -ENODEV;
911
904 return dispatch_ioctl(client, cmd, (void __user *) arg); 912 return dispatch_ioctl(client, cmd, (void __user *) arg);
905} 913}
906 914
@@ -911,6 +919,9 @@ fw_device_op_compat_ioctl(struct file *file,
911{ 919{
912 struct client *client = file->private_data; 920 struct client *client = file->private_data;
913 921
922 if (fw_device_is_shutdown(client->device))
923 return -ENODEV;
924
914 return dispatch_ioctl(client, cmd, compat_ptr(arg)); 925 return dispatch_ioctl(client, cmd, compat_ptr(arg));
915} 926}
916#endif 927#endif
@@ -922,6 +933,9 @@ static int fw_device_op_mmap(struct file *file, struct vm_area_struct *vma)
922 unsigned long size; 933 unsigned long size;
923 int page_count, retval; 934 int page_count, retval;
924 935
936 if (fw_device_is_shutdown(client->device))
937 return -ENODEV;
938
925 /* FIXME: We could support multiple buffers, but we don't. */ 939 /* FIXME: We could support multiple buffers, but we don't. */
926 if (client->buffer.pages != NULL) 940 if (client->buffer.pages != NULL)
927 return -EBUSY; 941 return -EBUSY;
diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
index f88714b06000..47ac1a7d66e1 100644
--- a/drivers/hid/hid-debug.c
+++ b/drivers/hid/hid-debug.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: hid-debug.h,v 1.8 2001/09/25 09:37:57 vojtech Exp $
3 *
4 * (c) 1999 Andreas Gal <gal@cs.uni-magdeburg.de> 2 * (c) 1999 Andreas Gal <gal@cs.uni-magdeburg.de>
5 * (c) 2000-2001 Vojtech Pavlik <vojtech@ucw.cz> 3 * (c) 2000-2001 Vojtech Pavlik <vojtech@ucw.cz>
6 * (c) 2007 Jiri Kosina 4 * (c) 2007 Jiri Kosina
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index c3eb3f13e2ca..5c52a20ad344 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: hid-input.c,v 1.2 2002/04/23 00:59:25 rdamazio Exp $
3 *
4 * Copyright (c) 2000-2001 Vojtech Pavlik 2 * Copyright (c) 2000-2001 Vojtech Pavlik
5 * Copyright (c) 2006-2007 Jiri Kosina 3 * Copyright (c) 2006-2007 Jiri Kosina
6 * 4 *
@@ -218,8 +216,9 @@ int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
218 } 216 }
219 } 217 }
220 218
221 if (test_bit(usage->code, hid->pb_pressed_numlock) || 219 if (hid->quirks & HID_QUIRK_APPLE_NUMLOCK_EMULATION && (
222 test_bit(LED_NUML, input->led)) { 220 test_bit(usage->code, hid->pb_pressed_numlock) ||
221 test_bit(LED_NUML, input->led))) {
223 trans = find_translation(powerbook_numlock_keys, usage->code); 222 trans = find_translation(powerbook_numlock_keys, usage->code);
224 223
225 if (trans) { 224 if (trans) {
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
index d3f8d9194f30..1df832a8fcbc 100644
--- a/drivers/hid/usbhid/hid-quirks.c
+++ b/drivers/hid/usbhid/hid-quirks.c
@@ -325,6 +325,10 @@
325#define USB_DEVICE_ID_MGE_UPS 0xffff 325#define USB_DEVICE_ID_MGE_UPS 0xffff
326#define USB_DEVICE_ID_MGE_UPS1 0x0001 326#define USB_DEVICE_ID_MGE_UPS1 0x0001
327 327
328#define USB_VENDOR_ID_MICROCHIP 0x04d8
329#define USB_DEVICE_ID_PICKIT1 0x0032
330#define USB_DEVICE_ID_PICKIT2 0x0033
331
328#define USB_VENDOR_ID_MICROSOFT 0x045e 332#define USB_VENDOR_ID_MICROSOFT 0x045e
329#define USB_DEVICE_ID_SIDEWINDER_GV 0x003b 333#define USB_DEVICE_ID_SIDEWINDER_GV 0x003b
330#define USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0 0x009d 334#define USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0 0x009d
@@ -371,6 +375,9 @@
371#define USB_VENDOR_ID_SONY 0x054c 375#define USB_VENDOR_ID_SONY 0x054c
372#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268 376#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268
373 377
378#define USB_VENDOR_ID_SOUNDGRAPH 0x15c2
379#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD 0x0038
380
374#define USB_VENDOR_ID_SUN 0x0430 381#define USB_VENDOR_ID_SUN 0x0430
375#define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab 382#define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab
376 383
@@ -567,6 +574,7 @@ static const struct hid_blacklist {
567 { USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE }, 574 { USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE },
568 { USB_VENDOR_ID_PANJIT, 0x0003, HID_QUIRK_IGNORE }, 575 { USB_VENDOR_ID_PANJIT, 0x0003, HID_QUIRK_IGNORE },
569 { USB_VENDOR_ID_PANJIT, 0x0004, HID_QUIRK_IGNORE }, 576 { USB_VENDOR_ID_PANJIT, 0x0004, HID_QUIRK_IGNORE },
577 { USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD, HID_QUIRK_IGNORE },
570 { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO, HID_QUIRK_IGNORE }, 578 { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO, HID_QUIRK_IGNORE },
571 { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP, HID_QUIRK_IGNORE }, 579 { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP, HID_QUIRK_IGNORE },
572 { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP, HID_QUIRK_IGNORE }, 580 { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP, HID_QUIRK_IGNORE },
@@ -580,6 +588,9 @@ static const struct hid_blacklist {
580 { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR, HID_QUIRK_IGNORE }, 588 { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR, HID_QUIRK_IGNORE },
581 { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302, HID_QUIRK_IGNORE }, 589 { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302, HID_QUIRK_IGNORE },
582 590
591 { USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT1, HID_QUIRK_IGNORE },
592 { USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT2, HID_QUIRK_IGNORE },
593
583 { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_ELITE_KBD, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP }, 594 { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_ELITE_KBD, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP },
584 { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP }, 595 { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP },
585 596
@@ -611,28 +622,28 @@ static const struct hid_blacklist {
611 622
612 { USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, 623 { USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
613 624
614 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 625 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
615 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 626 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
616 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 627 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
617 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD}, 628 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD},
618 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 629 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
619 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 630 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
620 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD}, 631 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD},
621 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 632 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
622 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 633 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
623 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD}, 634 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD},
624 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 635 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
625 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ANSI, HID_QUIRK_APPLE_HAS_FN }, 636 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ANSI, HID_QUIRK_APPLE_HAS_FN },
626 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, 637 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD },
627 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS, HID_QUIRK_APPLE_HAS_FN }, 638 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS, HID_QUIRK_APPLE_HAS_FN },
628 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 639 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
629 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 640 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
630 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 641 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
631 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI, HID_QUIRK_APPLE_HAS_FN }, 642 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN },
632 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, 643 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD },
633 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS, HID_QUIRK_APPLE_HAS_FN }, 644 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN },
634 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 645 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
635 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 646 { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
636 647
637 { USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658, HID_QUIRK_RESET_LEDS }, 648 { USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658, HID_QUIRK_RESET_LEDS },
638 { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KBD, HID_QUIRK_RESET_LEDS }, 649 { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KBD, HID_QUIRK_RESET_LEDS },
diff --git a/drivers/hid/usbhid/usbkbd.c b/drivers/hid/usbhid/usbkbd.c
index 5d9dbb47e4a8..3cd46d2e53c1 100644
--- a/drivers/hid/usbhid/usbkbd.c
+++ b/drivers/hid/usbhid/usbkbd.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: usbkbd.c,v 1.27 2001/12/27 10:37:41 vojtech Exp $
3 *
4 * Copyright (c) 1999-2001 Vojtech Pavlik 2 * Copyright (c) 1999-2001 Vojtech Pavlik
5 * 3 *
6 * USB HIDBP Keyboard support 4 * USB HIDBP Keyboard support
diff --git a/drivers/hid/usbhid/usbmouse.c b/drivers/hid/usbhid/usbmouse.c
index df0d96d989de..703e9d0e8714 100644
--- a/drivers/hid/usbhid/usbmouse.c
+++ b/drivers/hid/usbhid/usbmouse.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: usbmouse.c,v 1.15 2001/12/27 10:37:41 vojtech Exp $
3 *
4 * Copyright (c) 1999-2001 Vojtech Pavlik 2 * Copyright (c) 1999-2001 Vojtech Pavlik
5 * 3 *
6 * USB HIDBP Mouse support 4 * USB HIDBP Mouse support
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 34b0d4f26b58..655ec7ef568a 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -648,13 +648,12 @@ static int ide_register_port(ide_hwif_t *hwif)
648 648
649 get_device(&hwif->gendev); 649 get_device(&hwif->gendev);
650 650
651 hwif->portdev = device_create(ide_port_class, &hwif->gendev, 651 hwif->portdev = device_create_drvdata(ide_port_class, &hwif->gendev,
652 MKDEV(0, 0), hwif->name); 652 MKDEV(0, 0), hwif, hwif->name);
653 if (IS_ERR(hwif->portdev)) { 653 if (IS_ERR(hwif->portdev)) {
654 ret = PTR_ERR(hwif->portdev); 654 ret = PTR_ERR(hwif->portdev);
655 device_unregister(&hwif->gendev); 655 device_unregister(&hwif->gendev);
656 } 656 }
657 dev_set_drvdata(hwif->portdev, hwif);
658out: 657out:
659 return ret; 658 return ret;
660} 659}
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c
index 16b9d0ad154e..a5ceff287a28 100644
--- a/drivers/ieee1394/sbp2.c
+++ b/drivers/ieee1394/sbp2.c
@@ -1539,15 +1539,13 @@ static void sbp2_prep_command_orb_sg(struct sbp2_command_orb *orb,
1539 1539
1540static void sbp2_create_command_orb(struct sbp2_lu *lu, 1540static void sbp2_create_command_orb(struct sbp2_lu *lu,
1541 struct sbp2_command_info *cmd, 1541 struct sbp2_command_info *cmd,
1542 unchar *scsi_cmd, 1542 struct scsi_cmnd *SCpnt)
1543 unsigned int scsi_use_sg,
1544 unsigned int scsi_request_bufflen,
1545 struct scatterlist *sg,
1546 enum dma_data_direction dma_dir)
1547{ 1543{
1548 struct sbp2_fwhost_info *hi = lu->hi; 1544 struct sbp2_fwhost_info *hi = lu->hi;
1549 struct sbp2_command_orb *orb = &cmd->command_orb; 1545 struct sbp2_command_orb *orb = &cmd->command_orb;
1550 u32 orb_direction; 1546 u32 orb_direction;
1547 unsigned int scsi_request_bufflen = scsi_bufflen(SCpnt);
1548 enum dma_data_direction dma_dir = SCpnt->sc_data_direction;
1551 1549
1552 /* 1550 /*
1553 * Set-up our command ORB. 1551 * Set-up our command ORB.
@@ -1580,13 +1578,14 @@ static void sbp2_create_command_orb(struct sbp2_lu *lu,
1580 orb->data_descriptor_lo = 0x0; 1578 orb->data_descriptor_lo = 0x0;
1581 orb->misc |= ORB_SET_DIRECTION(1); 1579 orb->misc |= ORB_SET_DIRECTION(1);
1582 } else 1580 } else
1583 sbp2_prep_command_orb_sg(orb, hi, cmd, scsi_use_sg, sg, 1581 sbp2_prep_command_orb_sg(orb, hi, cmd, scsi_sg_count(SCpnt),
1582 scsi_sglist(SCpnt),
1584 orb_direction, dma_dir); 1583 orb_direction, dma_dir);
1585 1584
1586 sbp2util_cpu_to_be32_buffer(orb, sizeof(*orb)); 1585 sbp2util_cpu_to_be32_buffer(orb, sizeof(*orb));
1587 1586
1588 memset(orb->cdb, 0, 12); 1587 memset(orb->cdb, 0, sizeof(orb->cdb));
1589 memcpy(orb->cdb, scsi_cmd, COMMAND_SIZE(*scsi_cmd)); 1588 memcpy(orb->cdb, SCpnt->cmnd, SCpnt->cmd_len);
1590} 1589}
1591 1590
1592static void sbp2_link_orb_command(struct sbp2_lu *lu, 1591static void sbp2_link_orb_command(struct sbp2_lu *lu,
@@ -1669,16 +1668,13 @@ static void sbp2_link_orb_command(struct sbp2_lu *lu,
1669static int sbp2_send_command(struct sbp2_lu *lu, struct scsi_cmnd *SCpnt, 1668static int sbp2_send_command(struct sbp2_lu *lu, struct scsi_cmnd *SCpnt,
1670 void (*done)(struct scsi_cmnd *)) 1669 void (*done)(struct scsi_cmnd *))
1671{ 1670{
1672 unchar *scsi_cmd = (unchar *)SCpnt->cmnd;
1673 struct sbp2_command_info *cmd; 1671 struct sbp2_command_info *cmd;
1674 1672
1675 cmd = sbp2util_allocate_command_orb(lu, SCpnt, done); 1673 cmd = sbp2util_allocate_command_orb(lu, SCpnt, done);
1676 if (!cmd) 1674 if (!cmd)
1677 return -EIO; 1675 return -EIO;
1678 1676
1679 sbp2_create_command_orb(lu, cmd, scsi_cmd, scsi_sg_count(SCpnt), 1677 sbp2_create_command_orb(lu, cmd, SCpnt);
1680 scsi_bufflen(SCpnt), scsi_sglist(SCpnt),
1681 SCpnt->sc_data_direction);
1682 sbp2_link_orb_command(lu, cmd); 1678 sbp2_link_orb_command(lu, cmd);
1683 1679
1684 return 0; 1680 return 0;
diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
index 3aa2db54eae4..840ede9ae965 100644
--- a/drivers/infiniband/core/user_mad.c
+++ b/drivers/infiniband/core/user_mad.c
@@ -1005,8 +1005,9 @@ static int ib_umad_init_port(struct ib_device *device, int port_num,
1005 if (cdev_add(port->cdev, base_dev + port->dev_num, 1)) 1005 if (cdev_add(port->cdev, base_dev + port->dev_num, 1))
1006 goto err_cdev; 1006 goto err_cdev;
1007 1007
1008 port->dev = device_create(umad_class, device->dma_device, 1008 port->dev = device_create_drvdata(umad_class, device->dma_device,
1009 port->cdev->dev, "umad%d", port->dev_num); 1009 port->cdev->dev, port,
1010 "umad%d", port->dev_num);
1010 if (IS_ERR(port->dev)) 1011 if (IS_ERR(port->dev))
1011 goto err_cdev; 1012 goto err_cdev;
1012 1013
@@ -1024,15 +1025,12 @@ static int ib_umad_init_port(struct ib_device *device, int port_num,
1024 if (cdev_add(port->sm_cdev, base_dev + port->dev_num + IB_UMAD_MAX_PORTS, 1)) 1025 if (cdev_add(port->sm_cdev, base_dev + port->dev_num + IB_UMAD_MAX_PORTS, 1))
1025 goto err_sm_cdev; 1026 goto err_sm_cdev;
1026 1027
1027 port->sm_dev = device_create(umad_class, device->dma_device, 1028 port->sm_dev = device_create_drvdata(umad_class, device->dma_device,
1028 port->sm_cdev->dev, 1029 port->sm_cdev->dev, port,
1029 "issm%d", port->dev_num); 1030 "issm%d", port->dev_num);
1030 if (IS_ERR(port->sm_dev)) 1031 if (IS_ERR(port->sm_dev))
1031 goto err_sm_cdev; 1032 goto err_sm_cdev;
1032 1033
1033 dev_set_drvdata(port->dev, port);
1034 dev_set_drvdata(port->sm_dev, port);
1035
1036 if (device_create_file(port->sm_dev, &dev_attr_ibdev)) 1034 if (device_create_file(port->sm_dev, &dev_attr_ibdev))
1037 goto err_sm_dev; 1035 goto err_sm_dev;
1038 if (device_create_file(port->sm_dev, &dev_attr_port)) 1036 if (device_create_file(port->sm_dev, &dev_attr_port))
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
index cc1afa28c181..f806da184b51 100644
--- a/drivers/infiniband/core/uverbs_main.c
+++ b/drivers/infiniband/core/uverbs_main.c
@@ -755,14 +755,15 @@ static void ib_uverbs_add_one(struct ib_device *device)
755 if (cdev_add(uverbs_dev->cdev, IB_UVERBS_BASE_DEV + uverbs_dev->devnum, 1)) 755 if (cdev_add(uverbs_dev->cdev, IB_UVERBS_BASE_DEV + uverbs_dev->devnum, 1))
756 goto err_cdev; 756 goto err_cdev;
757 757
758 uverbs_dev->dev = device_create(uverbs_class, device->dma_device, 758 uverbs_dev->dev = device_create_drvdata(uverbs_class,
759 uverbs_dev->cdev->dev, 759 device->dma_device,
760 "uverbs%d", uverbs_dev->devnum); 760 uverbs_dev->cdev->dev,
761 uverbs_dev,
762 "uverbs%d",
763 uverbs_dev->devnum);
761 if (IS_ERR(uverbs_dev->dev)) 764 if (IS_ERR(uverbs_dev->dev))
762 goto err_cdev; 765 goto err_cdev;
763 766
764 dev_set_drvdata(uverbs_dev->dev, uverbs_dev);
765
766 if (device_create_file(uverbs_dev->dev, &dev_attr_ibdev)) 767 if (device_create_file(uverbs_dev->dev, &dev_attr_ibdev))
767 goto err_class; 768 goto err_class;
768 if (device_create_file(uverbs_dev->dev, &dev_attr_abi_version)) 769 if (device_create_file(uverbs_dev->dev, &dev_attr_abi_version))
diff --git a/drivers/input/keyboard/aaed2000_kbd.c b/drivers/input/keyboard/aaed2000_kbd.c
index a293e8b3f508..8a77bfcd05bc 100644
--- a/drivers/input/keyboard/aaed2000_kbd.c
+++ b/drivers/input/keyboard/aaed2000_kbd.c
@@ -183,4 +183,4 @@ module_exit(aaedkbd_exit);
183 183
184MODULE_AUTHOR("Nicolas Bellido Y Ortega"); 184MODULE_AUTHOR("Nicolas Bellido Y Ortega");
185MODULE_DESCRIPTION("AAED-2000 Keyboard Driver"); 185MODULE_DESCRIPTION("AAED-2000 Keyboard Driver");
186MODULE_LICENSE("GPLv2"); 186MODULE_LICENSE("GPL v2");
diff --git a/drivers/input/keyboard/corgikbd.c b/drivers/input/keyboard/corgikbd.c
index 29fbec6218b9..1aa46ae12630 100644
--- a/drivers/input/keyboard/corgikbd.c
+++ b/drivers/input/keyboard/corgikbd.c
@@ -412,5 +412,5 @@ module_exit(corgikbd_exit);
412 412
413MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); 413MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>");
414MODULE_DESCRIPTION("Corgi Keyboard Driver"); 414MODULE_DESCRIPTION("Corgi Keyboard Driver");
415MODULE_LICENSE("GPLv2"); 415MODULE_LICENSE("GPL v2");
416MODULE_ALIAS("platform:corgi-keyboard"); 416MODULE_ALIAS("platform:corgi-keyboard");
diff --git a/drivers/input/keyboard/jornada680_kbd.c b/drivers/input/keyboard/jornada680_kbd.c
index 9387da343f97..781fc6102860 100644
--- a/drivers/input/keyboard/jornada680_kbd.c
+++ b/drivers/input/keyboard/jornada680_kbd.c
@@ -275,5 +275,5 @@ module_exit(jornada680kbd_exit);
275 275
276MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>"); 276MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>");
277MODULE_DESCRIPTION("HP Jornada 620/660/680/690 Keyboard Driver"); 277MODULE_DESCRIPTION("HP Jornada 620/660/680/690 Keyboard Driver");
278MODULE_LICENSE("GPLv2"); 278MODULE_LICENSE("GPL v2");
279MODULE_ALIAS("platform:jornada680_kbd"); 279MODULE_ALIAS("platform:jornada680_kbd");
diff --git a/drivers/input/keyboard/jornada720_kbd.c b/drivers/input/keyboard/jornada720_kbd.c
index a1164a0c7736..ce650af6d649 100644
--- a/drivers/input/keyboard/jornada720_kbd.c
+++ b/drivers/input/keyboard/jornada720_kbd.c
@@ -29,7 +29,7 @@
29 29
30MODULE_AUTHOR("Kristoffer Ericson <Kristoffer.Ericson@gmail.com>"); 30MODULE_AUTHOR("Kristoffer Ericson <Kristoffer.Ericson@gmail.com>");
31MODULE_DESCRIPTION("HP Jornada 710/720/728 keyboard driver"); 31MODULE_DESCRIPTION("HP Jornada 710/720/728 keyboard driver");
32MODULE_LICENSE("GPLv2"); 32MODULE_LICENSE("GPL v2");
33 33
34static unsigned short jornada_std_keymap[128] = { /* ROW */ 34static unsigned short jornada_std_keymap[128] = { /* ROW */
35 0, KEY_ESC, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, /* #1 */ 35 0, KEY_ESC, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, /* #1 */
diff --git a/drivers/input/keyboard/spitzkbd.c b/drivers/input/keyboard/spitzkbd.c
index 61e401bc9109..1aa37181c40f 100644
--- a/drivers/input/keyboard/spitzkbd.c
+++ b/drivers/input/keyboard/spitzkbd.c
@@ -494,5 +494,5 @@ module_exit(spitzkbd_exit);
494 494
495MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); 495MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>");
496MODULE_DESCRIPTION("Spitz Keyboard Driver"); 496MODULE_DESCRIPTION("Spitz Keyboard Driver");
497MODULE_LICENSE("GPLv2"); 497MODULE_LICENSE("GPL v2");
498MODULE_ALIAS("platform:spitz-keyboard"); 498MODULE_ALIAS("platform:spitz-keyboard");
diff --git a/drivers/input/touchscreen/jornada720_ts.c b/drivers/input/touchscreen/jornada720_ts.c
index 742242111bf1..1aca108b1031 100644
--- a/drivers/input/touchscreen/jornada720_ts.c
+++ b/drivers/input/touchscreen/jornada720_ts.c
@@ -24,7 +24,7 @@
24 24
25MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>"); 25MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>");
26MODULE_DESCRIPTION("HP Jornada 710/720/728 touchscreen driver"); 26MODULE_DESCRIPTION("HP Jornada 710/720/728 touchscreen driver");
27MODULE_LICENSE("GPLv2"); 27MODULE_LICENSE("GPL v2");
28 28
29struct jornada_ts { 29struct jornada_ts {
30 struct input_dev *dev; 30 struct input_dev *dev;
diff --git a/drivers/isdn/capi/capiutil.c b/drivers/isdn/capi/capiutil.c
index ebef4ce1b00c..29419a8d31dc 100644
--- a/drivers/isdn/capi/capiutil.c
+++ b/drivers/isdn/capi/capiutil.c
@@ -948,17 +948,17 @@ int __init cdebug_init(void)
948{ 948{
949 g_cmsg= kmalloc(sizeof(_cmsg), GFP_KERNEL); 949 g_cmsg= kmalloc(sizeof(_cmsg), GFP_KERNEL);
950 if (!g_cmsg) 950 if (!g_cmsg)
951 return ENOMEM; 951 return -ENOMEM;
952 g_debbuf = kmalloc(sizeof(_cdebbuf), GFP_KERNEL); 952 g_debbuf = kmalloc(sizeof(_cdebbuf), GFP_KERNEL);
953 if (!g_debbuf) { 953 if (!g_debbuf) {
954 kfree(g_cmsg); 954 kfree(g_cmsg);
955 return ENOMEM; 955 return -ENOMEM;
956 } 956 }
957 g_debbuf->buf = kmalloc(CDEBUG_GSIZE, GFP_KERNEL); 957 g_debbuf->buf = kmalloc(CDEBUG_GSIZE, GFP_KERNEL);
958 if (!g_debbuf->buf) { 958 if (!g_debbuf->buf) {
959 kfree(g_cmsg); 959 kfree(g_cmsg);
960 kfree(g_debbuf); 960 kfree(g_debbuf);
961 return ENOMEM;; 961 return -ENOMEM;;
962 } 962 }
963 g_debbuf->size = CDEBUG_GSIZE; 963 g_debbuf->size = CDEBUG_GSIZE;
964 g_debbuf->buf[0] = 0; 964 g_debbuf->buf[0] = 0;
diff --git a/drivers/isdn/hysdn/Kconfig b/drivers/isdn/hysdn/Kconfig
index c6d8a7042988..c9e4231968ef 100644
--- a/drivers/isdn/hysdn/Kconfig
+++ b/drivers/isdn/hysdn/Kconfig
@@ -3,7 +3,7 @@
3# 3#
4config HYSDN 4config HYSDN
5 tristate "Hypercope HYSDN cards (Champ, Ergo, Metro) support (module only)" 5 tristate "Hypercope HYSDN cards (Champ, Ergo, Metro) support (module only)"
6 depends on m && PROC_FS && PCI && BROKEN_ON_SMP 6 depends on m && PROC_FS && PCI
7 help 7 help
8 Say Y here if you have one of Hypercope's active PCI ISDN cards 8 Say Y here if you have one of Hypercope's active PCI ISDN cards
9 Champ, Ergo and Metro. You will then get a module called hysdn. 9 Champ, Ergo and Metro. You will then get a module called hysdn.
diff --git a/drivers/isdn/hysdn/boardergo.c b/drivers/isdn/hysdn/boardergo.c
index 6cdbad3a9926..3eb096f0ae1b 100644
--- a/drivers/isdn/hysdn/boardergo.c
+++ b/drivers/isdn/hysdn/boardergo.c
@@ -64,10 +64,11 @@ ergo_interrupt(int intno, void *dev_id)
64} /* ergo_interrupt */ 64} /* ergo_interrupt */
65 65
66/******************************************************************************/ 66/******************************************************************************/
67/* ergo_irq_bh is the function called by the immediate kernel task list after */ 67/* ergo_irq_bh will be called as part of the kernel clearing its shared work */
68/* being activated with queue_task and no interrupts active. This task is the */ 68/* queue sometime after a call to schedule_work has been made passing our */
69/* only one handling data transfer from or to the card after booting. The task */ 69/* work_struct. This task is the only one handling data transfer from or to */
70/* may be queued from everywhere (interrupts included). */ 70/* the card after booting. The task may be queued from everywhere */
71/* (interrupts included). */
71/******************************************************************************/ 72/******************************************************************************/
72static void 73static void
73ergo_irq_bh(struct work_struct *ugli_api) 74ergo_irq_bh(struct work_struct *ugli_api)
@@ -90,7 +91,6 @@ ergo_irq_bh(struct work_struct *ugli_api)
90 card->hw_lock = 1; /* we now lock the hardware */ 91 card->hw_lock = 1; /* we now lock the hardware */
91 92
92 do { 93 do {
93 sti(); /* reenable other ints */
94 again = 0; /* assume loop not to be repeated */ 94 again = 0; /* assume loop not to be repeated */
95 95
96 if (!dpr->ToHyFlag) { 96 if (!dpr->ToHyFlag) {
@@ -110,7 +110,6 @@ ergo_irq_bh(struct work_struct *ugli_api)
110 again = 1; /* restart loop */ 110 again = 1; /* restart loop */
111 } 111 }
112 } /* a message has arrived for us */ 112 } /* a message has arrived for us */
113 cli(); /* no further ints */
114 if (again) { 113 if (again) {
115 dpr->ToHyInt = 1; 114 dpr->ToHyInt = 1;
116 dpr->ToPcInt = 1; /* interrupt to E1 for all cards */ 115 dpr->ToPcInt = 1; /* interrupt to E1 for all cards */
@@ -242,7 +241,6 @@ ergo_writebootimg(struct HYSDN_CARD *card, unsigned char *buf,
242 byteout(card->iobase + PCI9050_USER_IO, PCI9050_E1_RUN); /* start E1 processor */ 241 byteout(card->iobase + PCI9050_USER_IO, PCI9050_E1_RUN); /* start E1 processor */
243 /* the interrupts are still masked */ 242 /* the interrupts are still masked */
244 243
245 sti();
246 msleep_interruptible(20); /* Timeout 20ms */ 244 msleep_interruptible(20); /* Timeout 20ms */
247 245
248 if (((tDpramBootSpooler *) card->dpram)->Len != DPRAM_SPOOLER_DATA_SIZE) { 246 if (((tDpramBootSpooler *) card->dpram)->Len != DPRAM_SPOOLER_DATA_SIZE) {
@@ -276,7 +274,6 @@ ergo_writebootseq(struct HYSDN_CARD *card, unsigned char *buf, int len)
276 dst = sp->Data; /* point to data in spool structure */ 274 dst = sp->Data; /* point to data in spool structure */
277 buflen = sp->Len; /* maximum len of spooled data */ 275 buflen = sp->Len; /* maximum len of spooled data */
278 wr_mirror = sp->WrPtr; /* only once read */ 276 wr_mirror = sp->WrPtr; /* only once read */
279 sti();
280 277
281 /* try until all bytes written or error */ 278 /* try until all bytes written or error */
282 i = 0x1000; /* timeout value */ 279 i = 0x1000; /* timeout value */
@@ -380,7 +377,6 @@ ergo_waitpofready(struct HYSDN_CARD *card)
380#endif /* CONFIG_HYSDN_CAPI */ 377#endif /* CONFIG_HYSDN_CAPI */
381 return (0); /* success */ 378 return (0); /* success */
382 } /* data has arrived */ 379 } /* data has arrived */
383 sti();
384 msleep_interruptible(50); /* Timeout 50ms */ 380 msleep_interruptible(50); /* Timeout 50ms */
385 } /* wait until timeout */ 381 } /* wait until timeout */
386 382
diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index b3c54be74556..559a40861c39 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -103,13 +103,11 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev)
103{ 103{
104 int rc; 104 int rc;
105 105
106 led_cdev->dev = device_create(leds_class, parent, 0, "%s", 106 led_cdev->dev = device_create_drvdata(leds_class, parent, 0, led_cdev,
107 led_cdev->name); 107 "%s", led_cdev->name);
108 if (IS_ERR(led_cdev->dev)) 108 if (IS_ERR(led_cdev->dev))
109 return PTR_ERR(led_cdev->dev); 109 return PTR_ERR(led_cdev->dev);
110 110
111 dev_set_drvdata(led_cdev->dev, led_cdev);
112
113 /* register the attributes */ 111 /* register the attributes */
114 rc = device_create_file(led_cdev->dev, &dev_attr_brightness); 112 rc = device_create_file(led_cdev->dev, &dev_attr_brightness);
115 if (rc) 113 if (rc)
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
index 89d8d37838a3..3b26fbd3e558 100644
--- a/drivers/media/video/Kconfig
+++ b/drivers/media/video/Kconfig
@@ -901,7 +901,7 @@ endif # V4L_USB_DRIVERS
901 901
902config SOC_CAMERA 902config SOC_CAMERA
903 tristate "SoC camera support" 903 tristate "SoC camera support"
904 depends on VIDEO_V4L2 904 depends on VIDEO_V4L2 && HAS_DMA
905 select VIDEOBUF_DMA_SG 905 select VIDEOBUF_DMA_SG
906 help 906 help
907 SoC Camera is a common API to several cameras, not connecting 907 SoC Camera is a common API to several cameras, not connecting
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 2ca3e9cfb2bb..0165aac533bf 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -2613,7 +2613,7 @@ static int vidiocgmbuf(struct file *file, void *priv, struct video_mbuf *mbuf)
2613 struct bttv_fh *fh = priv; 2613 struct bttv_fh *fh = priv;
2614 2614
2615 mutex_lock(&fh->cap.vb_lock); 2615 mutex_lock(&fh->cap.vb_lock);
2616 retval = videobuf_mmap_setup(&fh->cap, gbuffers, gbufsize, 2616 retval = __videobuf_mmap_setup(&fh->cap, gbuffers, gbufsize,
2617 V4L2_MEMORY_MMAP); 2617 V4L2_MEMORY_MMAP);
2618 if (retval < 0) { 2618 if (retval < 0) {
2619 mutex_unlock(&fh->cap.vb_lock); 2619 mutex_unlock(&fh->cap.vb_lock);
diff --git a/drivers/media/video/videobuf-core.c b/drivers/media/video/videobuf-core.c
index 982f4463896c..0a88c44ace00 100644
--- a/drivers/media/video/videobuf-core.c
+++ b/drivers/media/video/videobuf-core.c
@@ -331,7 +331,7 @@ int videobuf_mmap_free(struct videobuf_queue *q)
331} 331}
332 332
333/* Locking: Caller holds q->vb_lock */ 333/* Locking: Caller holds q->vb_lock */
334static int __videobuf_mmap_setup(struct videobuf_queue *q, 334int __videobuf_mmap_setup(struct videobuf_queue *q,
335 unsigned int bcount, unsigned int bsize, 335 unsigned int bcount, unsigned int bsize,
336 enum v4l2_memory memory) 336 enum v4l2_memory memory)
337{ 337{
@@ -1129,6 +1129,7 @@ EXPORT_SYMBOL_GPL(videobuf_read_stream);
1129EXPORT_SYMBOL_GPL(videobuf_read_one); 1129EXPORT_SYMBOL_GPL(videobuf_read_one);
1130EXPORT_SYMBOL_GPL(videobuf_poll_stream); 1130EXPORT_SYMBOL_GPL(videobuf_poll_stream);
1131 1131
1132EXPORT_SYMBOL_GPL(__videobuf_mmap_setup);
1132EXPORT_SYMBOL_GPL(videobuf_mmap_setup); 1133EXPORT_SYMBOL_GPL(videobuf_mmap_setup);
1133EXPORT_SYMBOL_GPL(videobuf_mmap_free); 1134EXPORT_SYMBOL_GPL(videobuf_mmap_free);
1134EXPORT_SYMBOL_GPL(videobuf_mmap_mapper); 1135EXPORT_SYMBOL_GPL(videobuf_mmap_mapper);
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 2566479937c9..ae96bd6242f2 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -24,7 +24,7 @@ config MFD_ASIC3
24 24
25config HTC_EGPIO 25config HTC_EGPIO
26 bool "HTC EGPIO support" 26 bool "HTC EGPIO support"
27 depends on GENERIC_HARDIRQS && HAVE_GPIO_LIB 27 depends on GENERIC_HARDIRQS && HAVE_GPIO_LIB && ARM
28 help 28 help
29 This driver supports the CPLD egpio chip present on 29 This driver supports the CPLD egpio chip present on
30 several HTC phones. It provides basic support for input 30 several HTC phones. It provides basic support for input
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 3b3cd0e74715..dead61754ad7 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -119,7 +119,7 @@ config MMC_TIFM_SD
119 119
120config MMC_SPI 120config MMC_SPI
121 tristate "MMC/SD over SPI" 121 tristate "MMC/SD over SPI"
122 depends on MMC && SPI_MASTER && !HIGHMEM 122 depends on MMC && SPI_MASTER && !HIGHMEM && HAS_DMA
123 select CRC7 123 select CRC7
124 select CRC_ITU_T 124 select CRC_ITU_T
125 help 125 help
diff --git a/drivers/net/3c509.c b/drivers/net/3c509.c
index e6c545fe5f58..87d8795823d7 100644
--- a/drivers/net/3c509.c
+++ b/drivers/net/3c509.c
@@ -413,7 +413,7 @@ static int __devinit el3_pnp_probe(struct pnp_dev *pdev,
413{ 413{
414 short i; 414 short i;
415 int ioaddr, irq, if_port; 415 int ioaddr, irq, if_port;
416 u16 phys_addr[3]; 416 __be16 phys_addr[3];
417 struct net_device *dev = NULL; 417 struct net_device *dev = NULL;
418 int err; 418 int err;
419 419
@@ -605,7 +605,7 @@ static int __init el3_mca_probe(struct device *device)
605 605
606 short i; 606 short i;
607 int ioaddr, irq, if_port; 607 int ioaddr, irq, if_port;
608 u16 phys_addr[3]; 608 __be16 phys_addr[3];
609 struct net_device *dev = NULL; 609 struct net_device *dev = NULL;
610 u_char pos4, pos5; 610 u_char pos4, pos5;
611 struct mca_device *mdev = to_mca_device(device); 611 struct mca_device *mdev = to_mca_device(device);
@@ -635,14 +635,13 @@ static int __init el3_mca_probe(struct device *device)
635 printk(KERN_DEBUG "3c529: irq %d ioaddr 0x%x ifport %d\n", irq, ioaddr, if_port); 635 printk(KERN_DEBUG "3c529: irq %d ioaddr 0x%x ifport %d\n", irq, ioaddr, if_port);
636 } 636 }
637 EL3WINDOW(0); 637 EL3WINDOW(0);
638 for (i = 0; i < 3; i++) { 638 for (i = 0; i < 3; i++)
639 phys_addr[i] = htons(read_eeprom(ioaddr, i)); 639 phys_addr[i] = htons(read_eeprom(ioaddr, i));
640 }
641 640
642 dev = alloc_etherdev(sizeof (struct el3_private)); 641 dev = alloc_etherdev(sizeof (struct el3_private));
643 if (dev == NULL) { 642 if (dev == NULL) {
644 release_region(ioaddr, EL3_IO_EXTENT); 643 release_region(ioaddr, EL3_IO_EXTENT);
645 return -ENOMEM; 644 return -ENOMEM;
646 } 645 }
647 646
648 netdev_boot_setup_check(dev); 647 netdev_boot_setup_check(dev);
@@ -668,7 +667,7 @@ static int __init el3_eisa_probe (struct device *device)
668{ 667{
669 short i; 668 short i;
670 int ioaddr, irq, if_port; 669 int ioaddr, irq, if_port;
671 u16 phys_addr[3]; 670 __be16 phys_addr[3];
672 struct net_device *dev = NULL; 671 struct net_device *dev = NULL;
673 struct eisa_device *edev; 672 struct eisa_device *edev;
674 int err; 673 int err;
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 9f6cc8a56073..dd0ec9ebc939 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -1353,7 +1353,7 @@ config APRICOT
1353 1353
1354config B44 1354config B44
1355 tristate "Broadcom 440x/47xx ethernet support" 1355 tristate "Broadcom 440x/47xx ethernet support"
1356 depends on SSB_POSSIBLE 1356 depends on SSB_POSSIBLE && HAS_DMA
1357 select SSB 1357 select SSB
1358 select MII 1358 select MII
1359 help 1359 help
diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
index 9c2394d49428..6e4c80d41b08 100644
--- a/drivers/net/atlx/atl1.c
+++ b/drivers/net/atlx/atl1.c
@@ -2135,7 +2135,7 @@ static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb,
2135 return -1; 2135 return -1;
2136 } 2136 }
2137 2137
2138 if (skb->protocol == ntohs(ETH_P_IP)) { 2138 if (skb->protocol == htons(ETH_P_IP)) {
2139 struct iphdr *iph = ip_hdr(skb); 2139 struct iphdr *iph = ip_hdr(skb);
2140 2140
2141 real_len = (((unsigned char *)iph - skb->data) + 2141 real_len = (((unsigned char *)iph - skb->data) +
diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
index 68c41a00d93d..08f3d396bcd6 100644
--- a/drivers/net/bonding/bond_sysfs.c
+++ b/drivers/net/bonding/bond_sysfs.c
@@ -1437,8 +1437,16 @@ int bond_create_sysfs(void)
1437 * configure multiple bonding devices. 1437 * configure multiple bonding devices.
1438 */ 1438 */
1439 if (ret == -EEXIST) { 1439 if (ret == -EEXIST) {
1440 netdev_class = NULL; 1440 /* Is someone being kinky and naming a device bonding_master? */
1441 return 0; 1441 if (__dev_get_by_name(&init_net,
1442 class_attr_bonding_masters.attr.name))
1443 printk(KERN_ERR
1444 "network device named %s already exists in sysfs",
1445 class_attr_bonding_masters.attr.name);
1446 else {
1447 netdev_class = NULL;
1448 return 0;
1449 }
1442 } 1450 }
1443 1451
1444 return ret; 1452 return ret;
diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c
index 9081234ab458..6f50ed7b183f 100644
--- a/drivers/net/irda/irda-usb.c
+++ b/drivers/net/irda/irda-usb.c
@@ -1120,7 +1120,7 @@ static int stir421x_patch_device(struct irda_usb_cb *self)
1120 } 1120 }
1121 } 1121 }
1122 1122
1123 if (self->usbdev->descriptor.bcdDevice == fw_version) { 1123 if (self->usbdev->descriptor.bcdDevice == cpu_to_le16(fw_version)) {
1124 /* 1124 /*
1125 * If we're here, we've found a correct patch 1125 * If we're here, we've found a correct patch
1126 * The actual image starts after the "STMP" keyword 1126 * The actual image starts after the "STMP" keyword
diff --git a/drivers/net/irda/irda-usb.h b/drivers/net/irda/irda-usb.h
index e846c38224a3..a0ca9c1fe196 100644
--- a/drivers/net/irda/irda-usb.h
+++ b/drivers/net/irda/irda-usb.h
@@ -117,11 +117,11 @@
117struct irda_class_desc { 117struct irda_class_desc {
118 __u8 bLength; 118 __u8 bLength;
119 __u8 bDescriptorType; 119 __u8 bDescriptorType;
120 __u16 bcdSpecRevision; 120 __le16 bcdSpecRevision;
121 __u8 bmDataSize; 121 __u8 bmDataSize;
122 __u8 bmWindowSize; 122 __u8 bmWindowSize;
123 __u8 bmMinTurnaroundTime; 123 __u8 bmMinTurnaroundTime;
124 __u16 wBaudRate; 124 __le16 wBaudRate;
125 __u8 bmAdditionalBOFs; 125 __u8 bmAdditionalBOFs;
126 __u8 bIrdaRateSniff; 126 __u8 bIrdaRateSniff;
127 __u8 bMaxUnicastList; 127 __u8 bMaxUnicastList;
diff --git a/drivers/net/pppol2tp.c b/drivers/net/pppol2tp.c
index 79359919335b..8db342f2fdc9 100644
--- a/drivers/net/pppol2tp.c
+++ b/drivers/net/pppol2tp.c
@@ -980,6 +980,8 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
980 __wsum csum = 0; 980 __wsum csum = 0;
981 struct udphdr *uh; 981 struct udphdr *uh;
982 unsigned int len; 982 unsigned int len;
983 int old_headroom;
984 int new_headroom;
983 985
984 if (sock_flag(sk, SOCK_DEAD) || !(sk->sk_state & PPPOX_CONNECTED)) 986 if (sock_flag(sk, SOCK_DEAD) || !(sk->sk_state & PPPOX_CONNECTED))
985 goto abort; 987 goto abort;
@@ -1001,16 +1003,18 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
1001 1003
1002 /* Check that there's enough headroom in the skb to insert IP, 1004 /* Check that there's enough headroom in the skb to insert IP,
1003 * UDP and L2TP and PPP headers. If not enough, expand it to 1005 * UDP and L2TP and PPP headers. If not enough, expand it to
1004 * make room. Note that a new skb (or a clone) is 1006 * make room. Adjust truesize.
1005 * allocated. If we return an error from this point on, make
1006 * sure we free the new skb but do not free the original skb
1007 * since that is done by the caller for the error case.
1008 */ 1007 */
1009 headroom = NET_SKB_PAD + sizeof(struct iphdr) + 1008 headroom = NET_SKB_PAD + sizeof(struct iphdr) +
1010 sizeof(struct udphdr) + hdr_len + sizeof(ppph); 1009 sizeof(struct udphdr) + hdr_len + sizeof(ppph);
1010 old_headroom = skb_headroom(skb);
1011 if (skb_cow_head(skb, headroom)) 1011 if (skb_cow_head(skb, headroom))
1012 goto abort; 1012 goto abort;
1013 1013
1014 new_headroom = skb_headroom(skb);
1015 skb_orphan(skb);
1016 skb->truesize += new_headroom - old_headroom;
1017
1014 /* Setup PPP header */ 1018 /* Setup PPP header */
1015 __skb_push(skb, sizeof(ppph)); 1019 __skb_push(skb, sizeof(ppph));
1016 skb->data[0] = ppph[0]; 1020 skb->data[0] = ppph[0];
@@ -1065,7 +1069,6 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
1065 /* Get routing info from the tunnel socket */ 1069 /* Get routing info from the tunnel socket */
1066 dst_release(skb->dst); 1070 dst_release(skb->dst);
1067 skb->dst = dst_clone(__sk_dst_get(sk_tun)); 1071 skb->dst = dst_clone(__sk_dst_get(sk_tun));
1068 skb_orphan(skb);
1069 skb->sk = sk_tun; 1072 skb->sk = sk_tun;
1070 1073
1071 /* Queue the packet to IP for output */ 1074 /* Queue the packet to IP for output */
diff --git a/drivers/net/usb/catc.c b/drivers/net/usb/catc.c
index 76752d84a30f..22c17bbacb69 100644
--- a/drivers/net/usb/catc.c
+++ b/drivers/net/usb/catc.c
@@ -423,7 +423,10 @@ static int catc_hard_start_xmit(struct sk_buff *skb, struct net_device *netdev)
423 423
424 catc->tx_ptr = (((catc->tx_ptr - 1) >> 6) + 1) << 6; 424 catc->tx_ptr = (((catc->tx_ptr - 1) >> 6) + 1) << 6;
425 tx_buf = catc->tx_buf[catc->tx_idx] + catc->tx_ptr; 425 tx_buf = catc->tx_buf[catc->tx_idx] + catc->tx_ptr;
426 *((u16*)tx_buf) = (catc->is_f5u011) ? cpu_to_be16((u16)skb->len) : cpu_to_le16((u16)skb->len); 426 if (catc->is_f5u011)
427 *(__be16 *)tx_buf = cpu_to_be16(skb->len);
428 else
429 *(__le16 *)tx_buf = cpu_to_le16(skb->len);
427 skb_copy_from_linear_data(skb, tx_buf + 2, skb->len); 430 skb_copy_from_linear_data(skb, tx_buf + 2, skb->len);
428 catc->tx_ptr += skb->len + 2; 431 catc->tx_ptr += skb->len + 2;
429 432
diff --git a/drivers/net/usb/cdc_subset.c b/drivers/net/usb/cdc_subset.c
index 0ec7936cbe21..c66b9c324f54 100644
--- a/drivers/net/usb/cdc_subset.c
+++ b/drivers/net/usb/cdc_subset.c
@@ -218,7 +218,7 @@ static const struct driver_info blob_info = {
218/*-------------------------------------------------------------------------*/ 218/*-------------------------------------------------------------------------*/
219 219
220#ifndef HAVE_HARDWARE 220#ifndef HAVE_HARDWARE
221#error You need to configure some hardware for this driver 221#warning You need to configure some hardware for this driver
222#endif 222#endif
223 223
224/* 224/*
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index 21a7785cb8b6..3969b7a2b8e6 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -283,8 +283,8 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags)
283 struct rndis_set_c *set_c; 283 struct rndis_set_c *set_c;
284 struct rndis_halt *halt; 284 struct rndis_halt *halt;
285 } u; 285 } u;
286 u32 tmp, phym_unspec; 286 u32 tmp;
287 __le32 *phym; 287 __le32 phym_unspec, *phym;
288 int reply_len; 288 int reply_len;
289 unsigned char *bp; 289 unsigned char *bp;
290 290
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 45f47c1c0a35..4e1c690ff45f 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -2668,6 +2668,7 @@ static struct net_device *init_wifidev(struct airo_info *ai,
2668 dev->irq = ethdev->irq; 2668 dev->irq = ethdev->irq;
2669 dev->base_addr = ethdev->base_addr; 2669 dev->base_addr = ethdev->base_addr;
2670 dev->wireless_data = ethdev->wireless_data; 2670 dev->wireless_data = ethdev->wireless_data;
2671 SET_NETDEV_DEV(dev, ethdev->dev.parent);
2671 memcpy(dev->dev_addr, ethdev->dev_addr, dev->addr_len); 2672 memcpy(dev->dev_addr, ethdev->dev_addr, dev->addr_len);
2672 err = register_netdev(dev); 2673 err = register_netdev(dev);
2673 if (err<0) { 2674 if (err<0) {
@@ -2904,7 +2905,7 @@ EXPORT_SYMBOL(init_airo_card);
2904 2905
2905static int waitbusy (struct airo_info *ai) { 2906static int waitbusy (struct airo_info *ai) {
2906 int delay = 0; 2907 int delay = 0;
2907 while ((IN4500 (ai, COMMAND) & COMMAND_BUSY) & (delay < 10000)) { 2908 while ((IN4500 (ai, COMMAND) & COMMAND_BUSY) && (delay < 10000)) {
2908 udelay (10); 2909 udelay (10);
2909 if ((++delay % 20) == 0) 2910 if ((++delay % 20) == 0)
2910 OUT4500(ai, EVACK, EV_CLEARCOMMANDBUSY); 2911 OUT4500(ai, EVACK, EV_CLEARCOMMANDBUSY);
diff --git a/drivers/net/wireless/b43/Kconfig b/drivers/net/wireless/b43/Kconfig
index f51b2d9b085b..1fa043d1802c 100644
--- a/drivers/net/wireless/b43/Kconfig
+++ b/drivers/net/wireless/b43/Kconfig
@@ -1,6 +1,6 @@
1config B43 1config B43
2 tristate "Broadcom 43xx wireless support (mac80211 stack)" 2 tristate "Broadcom 43xx wireless support (mac80211 stack)"
3 depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 3 depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
4 select SSB 4 select SSB
5 select FW_LOADER 5 select FW_LOADER
6 select HW_RANDOM 6 select HW_RANDOM
diff --git a/drivers/net/wireless/b43legacy/Kconfig b/drivers/net/wireless/b43legacy/Kconfig
index 13c65faf0247..aef2298d37ac 100644
--- a/drivers/net/wireless/b43legacy/Kconfig
+++ b/drivers/net/wireless/b43legacy/Kconfig
@@ -1,6 +1,6 @@
1config B43LEGACY 1config B43LEGACY
2 tristate "Broadcom 43xx-legacy wireless support (mac80211 stack)" 2 tristate "Broadcom 43xx-legacy wireless support (mac80211 stack)"
3 depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 3 depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
4 select SSB 4 select SSB
5 select FW_LOADER 5 select FW_LOADER
6 select HW_RANDOM 6 select HW_RANDOM
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c
index 7be68db6f300..cdf90c40f11b 100644
--- a/drivers/net/wireless/hostap/hostap_hw.c
+++ b/drivers/net/wireless/hostap/hostap_hw.c
@@ -3276,11 +3276,6 @@ while (0)
3276 } 3276 }
3277 printk(KERN_INFO "%s: Registered netdevice %s\n", dev_info, dev->name); 3277 printk(KERN_INFO "%s: Registered netdevice %s\n", dev_info, dev->name);
3278 3278
3279#ifndef PRISM2_NO_PROCFS_DEBUG
3280 create_proc_read_entry("registers", 0, local->proc,
3281 prism2_registers_proc_read, local);
3282#endif /* PRISM2_NO_PROCFS_DEBUG */
3283
3284 hostap_init_data(local); 3279 hostap_init_data(local);
3285 return dev; 3280 return dev;
3286 3281
@@ -3307,6 +3302,10 @@ static int hostap_hw_ready(struct net_device *dev)
3307 netif_carrier_off(local->ddev); 3302 netif_carrier_off(local->ddev);
3308 } 3303 }
3309 hostap_init_proc(local); 3304 hostap_init_proc(local);
3305#ifndef PRISM2_NO_PROCFS_DEBUG
3306 create_proc_read_entry("registers", 0, local->proc,
3307 prism2_registers_proc_read, local);
3308#endif /* PRISM2_NO_PROCFS_DEBUG */
3310 hostap_init_ap_proc(local); 3309 hostap_init_ap_proc(local);
3311 return 0; 3310 return 0;
3312 } 3311 }
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
index fa87c5c2ae0b..d74c061994ae 100644
--- a/drivers/net/wireless/ipw2200.c
+++ b/drivers/net/wireless/ipw2200.c
@@ -11584,6 +11584,7 @@ static int ipw_prom_alloc(struct ipw_priv *priv)
11584 priv->prom_net_dev->hard_start_xmit = ipw_prom_hard_start_xmit; 11584 priv->prom_net_dev->hard_start_xmit = ipw_prom_hard_start_xmit;
11585 11585
11586 priv->prom_priv->ieee->iw_mode = IW_MODE_MONITOR; 11586 priv->prom_priv->ieee->iw_mode = IW_MODE_MONITOR;
11587 SET_NETDEV_DEV(priv->prom_net_dev, &priv->pci_dev->dev);
11587 11588
11588 rc = register_netdev(priv->prom_net_dev); 11589 rc = register_netdev(priv->prom_net_dev);
11589 if (rc) { 11590 if (rc) {
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
index 406f54d40956..e1f066068590 100644
--- a/drivers/net/wireless/libertas/main.c
+++ b/drivers/net/wireless/libertas/main.c
@@ -756,6 +756,7 @@ static int lbs_thread(void *data)
756 priv->nr_retries = 0; 756 priv->nr_retries = 0;
757 } else { 757 } else {
758 priv->cur_cmd = NULL; 758 priv->cur_cmd = NULL;
759 priv->dnld_sent = DNLD_RES_RECEIVED;
759 lbs_pr_info("requeueing command %x due to timeout (#%d)\n", 760 lbs_pr_info("requeueing command %x due to timeout (#%d)\n",
760 le16_to_cpu(cmdnode->cmdbuf->command), priv->nr_retries); 761 le16_to_cpu(cmdnode->cmdbuf->command), priv->nr_retries);
761 762
@@ -1564,6 +1565,7 @@ static int lbs_add_rtap(struct lbs_private *priv)
1564 rtap_dev->hard_start_xmit = lbs_rtap_hard_start_xmit; 1565 rtap_dev->hard_start_xmit = lbs_rtap_hard_start_xmit;
1565 rtap_dev->set_multicast_list = lbs_set_multicast_list; 1566 rtap_dev->set_multicast_list = lbs_set_multicast_list;
1566 rtap_dev->priv = priv; 1567 rtap_dev->priv = priv;
1568 SET_NETDEV_DEV(rtap_dev, priv->dev->dev.parent);
1567 1569
1568 ret = register_netdev(rtap_dev); 1570 ret = register_netdev(rtap_dev);
1569 if (ret) { 1571 if (ret) {
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c
index 69c45ca99051..6424e5a2c83d 100644
--- a/drivers/net/wireless/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/zd1211rw/zd_mac.c
@@ -805,7 +805,7 @@ void zd_process_intr(struct work_struct *work)
805 u16 int_status; 805 u16 int_status;
806 struct zd_mac *mac = container_of(work, struct zd_mac, process_intr); 806 struct zd_mac *mac = container_of(work, struct zd_mac, process_intr);
807 807
808 int_status = le16_to_cpu(*(u16 *)(mac->intr_buffer+4)); 808 int_status = le16_to_cpu(*(__le16 *)(mac->intr_buffer+4));
809 if (int_status & INT_CFG_NEXT_BCN) { 809 if (int_status & INT_CFG_NEXT_BCN) {
810 if (net_ratelimit()) 810 if (net_ratelimit())
811 dev_dbg_f(zd_mac_dev(mac), "INT_CFG_NEXT_BCN\n"); 811 dev_dbg_f(zd_mac_dev(mac), "INT_CFG_NEXT_BCN\n");
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c
index 12e24f04dddf..8941f5eb96c2 100644
--- a/drivers/net/wireless/zd1211rw/zd_usb.c
+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
@@ -342,7 +342,7 @@ static inline void handle_regs_int(struct urb *urb)
342 ZD_ASSERT(in_interrupt()); 342 ZD_ASSERT(in_interrupt());
343 spin_lock(&intr->lock); 343 spin_lock(&intr->lock);
344 344
345 int_num = le16_to_cpu(*(u16 *)(urb->transfer_buffer+2)); 345 int_num = le16_to_cpu(*(__le16 *)(urb->transfer_buffer+2));
346 if (int_num == CR_INTERRUPT) { 346 if (int_num == CR_INTERRUPT) {
347 struct zd_mac *mac = zd_hw_mac(zd_usb_to_hw(urb->context)); 347 struct zd_mac *mac = zd_hw_mac(zd_usb_to_hw(urb->context));
348 memcpy(&mac->intr_buffer, urb->transfer_buffer, 348 memcpy(&mac->intr_buffer, urb->transfer_buffer,
diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c
index 138dd76ee347..af1633eb3b70 100644
--- a/drivers/power/power_supply_core.c
+++ b/drivers/power/power_supply_core.c
@@ -91,15 +91,13 @@ int power_supply_register(struct device *parent, struct power_supply *psy)
91{ 91{
92 int rc = 0; 92 int rc = 0;
93 93
94 psy->dev = device_create(power_supply_class, parent, 0, 94 psy->dev = device_create_drvdata(power_supply_class, parent, 0,
95 "%s", psy->name); 95 psy, "%s", psy->name);
96 if (IS_ERR(psy->dev)) { 96 if (IS_ERR(psy->dev)) {
97 rc = PTR_ERR(psy->dev); 97 rc = PTR_ERR(psy->dev);
98 goto dev_create_failed; 98 goto dev_create_failed;
99 } 99 }
100 100
101 dev_set_drvdata(psy->dev, psy);
102
103 INIT_WORK(&psy->changed_work, power_supply_changed_work); 101 INIT_WORK(&psy->changed_work, power_supply_changed_work);
104 102
105 rc = power_supply_create_attrs(psy); 103 rc = power_supply_create_attrs(psy);
diff --git a/drivers/s390/char/vmlogrdr.c b/drivers/s390/char/vmlogrdr.c
index e8487347e4d4..2c2428cc05d8 100644
--- a/drivers/s390/char/vmlogrdr.c
+++ b/drivers/s390/char/vmlogrdr.c
@@ -762,10 +762,10 @@ static int vmlogrdr_register_device(struct vmlogrdr_priv_t *priv)
762 device_unregister(dev); 762 device_unregister(dev);
763 return ret; 763 return ret;
764 } 764 }
765 priv->class_device = device_create(vmlogrdr_class, dev, 765 priv->class_device = device_create_drvdata(vmlogrdr_class, dev,
766 MKDEV(vmlogrdr_major, 766 MKDEV(vmlogrdr_major,
767 priv->minor_num), 767 priv->minor_num),
768 "%s", dev->bus_id); 768 priv, "%s", dev->bus_id);
769 if (IS_ERR(priv->class_device)) { 769 if (IS_ERR(priv->class_device)) {
770 ret = PTR_ERR(priv->class_device); 770 ret = PTR_ERR(priv->class_device);
771 priv->class_device=NULL; 771 priv->class_device=NULL;
@@ -773,7 +773,6 @@ static int vmlogrdr_register_device(struct vmlogrdr_priv_t *priv)
773 device_unregister(dev); 773 device_unregister(dev);
774 return ret; 774 return ret;
775 } 775 }
776 dev->driver_data = priv;
777 priv->device = dev; 776 priv->device = dev;
778 return 0; 777 return 0;
779} 778}
diff --git a/drivers/sbus/char/bpp.c b/drivers/sbus/char/bpp.c
index b87037ec9805..03c966059471 100644
--- a/drivers/sbus/char/bpp.c
+++ b/drivers/sbus/char/bpp.c
@@ -869,7 +869,7 @@ static void probeLptPort(unsigned idx)
869 instances[idx].mode = COMPATIBILITY; 869 instances[idx].mode = COMPATIBILITY;
870 instances[idx].run_length = 0; 870 instances[idx].run_length = 0;
871 instances[idx].run_flag = 0; 871 instances[idx].run_flag = 0;
872 if (!request_region(lpAddr,3, dev_name)) return; 872 if (!request_region(lpAddr,3, bpp_dev_name)) return;
873 873
874 /* 874 /*
875 * First, make sure the instance exists. Do this by writing to 875 * First, make sure the instance exists. Do this by writing to
@@ -1021,7 +1021,7 @@ static int __init bpp_init(void)
1021 if (rc == 0) 1021 if (rc == 0)
1022 return -ENODEV; 1022 return -ENODEV;
1023 1023
1024 rc = register_chrdev(BPP_MAJOR, dev_name, &bpp_fops); 1024 rc = register_chrdev(BPP_MAJOR, bpp_dev_name, &bpp_fops);
1025 if (rc < 0) 1025 if (rc < 0)
1026 return rc; 1026 return rc;
1027 1027
@@ -1037,7 +1037,7 @@ static void __exit bpp_cleanup(void)
1037{ 1037{
1038 unsigned idx; 1038 unsigned idx;
1039 1039
1040 unregister_chrdev(BPP_MAJOR, dev_name); 1040 unregister_chrdev(BPP_MAJOR, bpp_dev_name);
1041 1041
1042 for (idx = 0; idx < BPP_NO; idx++) { 1042 for (idx = 0; idx < BPP_NO; idx++) {
1043 if (instances[idx].present) 1043 if (instances[idx].present)
diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c
index 75c84d7b9ce8..c4b938bc30d3 100644
--- a/drivers/scsi/ch.c
+++ b/drivers/scsi/ch.c
@@ -910,9 +910,9 @@ static int ch_probe(struct device *dev)
910 ch->minor = minor; 910 ch->minor = minor;
911 sprintf(ch->name,"ch%d",ch->minor); 911 sprintf(ch->name,"ch%d",ch->minor);
912 912
913 class_dev = device_create(ch_sysfs_class, dev, 913 class_dev = device_create_drvdata(ch_sysfs_class, dev,
914 MKDEV(SCSI_CHANGER_MAJOR,ch->minor), 914 MKDEV(SCSI_CHANGER_MAJOR, ch->minor),
915 "s%s", ch->name); 915 ch, "s%s", ch->name);
916 if (IS_ERR(class_dev)) { 916 if (IS_ERR(class_dev)) {
917 printk(KERN_WARNING "ch%d: device_create failed\n", 917 printk(KERN_WARNING "ch%d: device_create failed\n",
918 ch->minor); 918 ch->minor);
@@ -926,7 +926,6 @@ static int ch_probe(struct device *dev)
926 if (init) 926 if (init)
927 ch_init_elem(ch); 927 ch_init_elem(ch);
928 928
929 dev_set_drvdata(dev, ch);
930 sdev_printk(KERN_INFO, sd, "Attached scsi changer %s\n", ch->name); 929 sdev_printk(KERN_INFO, sd, "Attached scsi changer %s\n", ch->name);
931 930
932 return 0; 931 return 0;
diff --git a/drivers/scsi/mac_esp.c b/drivers/scsi/mac_esp.c
index cd37bd69a115..887682a24e36 100644
--- a/drivers/scsi/mac_esp.c
+++ b/drivers/scsi/mac_esp.c
@@ -650,7 +650,7 @@ static void __exit mac_esp_exit(void)
650 650
651MODULE_DESCRIPTION("Mac ESP SCSI driver"); 651MODULE_DESCRIPTION("Mac ESP SCSI driver");
652MODULE_AUTHOR("Finn Thain <fthain@telegraphics.com.au>"); 652MODULE_AUTHOR("Finn Thain <fthain@telegraphics.com.au>");
653MODULE_LICENSE("GPLv2"); 653MODULE_LICENSE("GPL v2");
654MODULE_VERSION(DRV_VERSION); 654MODULE_VERSION(DRV_VERSION);
655 655
656module_init(mac_esp_init); 656module_init(mac_esp_init);
diff --git a/drivers/scsi/osst.c b/drivers/scsi/osst.c
index 31f7aec44d90..243d8becd30f 100644
--- a/drivers/scsi/osst.c
+++ b/drivers/scsi/osst.c
@@ -5695,13 +5695,12 @@ static int osst_sysfs_add(dev_t dev, struct device *device, struct osst_tape * S
5695 struct device *osst_member; 5695 struct device *osst_member;
5696 int err; 5696 int err;
5697 5697
5698 osst_member = device_create(osst_sysfs_class, device, dev, "%s", name); 5698 osst_member = device_create_drvdata(osst_sysfs_class, device, dev, STp, "%s", name);
5699 if (IS_ERR(osst_member)) { 5699 if (IS_ERR(osst_member)) {
5700 printk(KERN_WARNING "osst :W: Unable to add sysfs class member %s\n", name); 5700 printk(KERN_WARNING "osst :W: Unable to add sysfs class member %s\n", name);
5701 return PTR_ERR(osst_member); 5701 return PTR_ERR(osst_member);
5702 } 5702 }
5703 5703
5704 dev_set_drvdata(osst_member, STp);
5705 err = device_create_file(osst_member, &dev_attr_ADR_rev); 5704 err = device_create_file(osst_member, &dev_attr_ADR_rev);
5706 if (err) 5705 if (err)
5707 goto err_out; 5706 goto err_out;
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index c9d7f721b9e2..ea0edd1b2e76 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -1441,17 +1441,18 @@ sg_add(struct device *cl_dev, struct class_interface *cl_intf)
1441 if (sg_sysfs_valid) { 1441 if (sg_sysfs_valid) {
1442 struct device *sg_class_member; 1442 struct device *sg_class_member;
1443 1443
1444 sg_class_member = device_create(sg_sysfs_class, cl_dev->parent, 1444 sg_class_member = device_create_drvdata(sg_sysfs_class,
1445 MKDEV(SCSI_GENERIC_MAJOR, 1445 cl_dev->parent,
1446 sdp->index), 1446 MKDEV(SCSI_GENERIC_MAJOR,
1447 "%s", disk->disk_name); 1447 sdp->index),
1448 sdp,
1449 "%s", disk->disk_name);
1448 if (IS_ERR(sg_class_member)) { 1450 if (IS_ERR(sg_class_member)) {
1449 printk(KERN_ERR "sg_add: " 1451 printk(KERN_ERR "sg_add: "
1450 "device_create failed\n"); 1452 "device_create failed\n");
1451 error = PTR_ERR(sg_class_member); 1453 error = PTR_ERR(sg_class_member);
1452 goto cdev_add_err; 1454 goto cdev_add_err;
1453 } 1455 }
1454 dev_set_drvdata(sg_class_member, sdp);
1455 error = sysfs_create_link(&scsidp->sdev_gendev.kobj, 1456 error = sysfs_create_link(&scsidp->sdev_gendev.kobj,
1456 &sg_class_member->kobj, "generic"); 1457 &sg_class_member->kobj, "generic");
1457 if (error) 1458 if (error)
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index e8db66ad0bde..6e5a5bb31311 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -4424,17 +4424,19 @@ static int do_create_class_files(struct scsi_tape *STp, int dev_num, int mode)
4424 snprintf(name, 10, "%s%s%s", rew ? "n" : "", 4424 snprintf(name, 10, "%s%s%s", rew ? "n" : "",
4425 STp->disk->disk_name, st_formats[i]); 4425 STp->disk->disk_name, st_formats[i]);
4426 st_class_member = 4426 st_class_member =
4427 device_create(st_sysfs_class, &STp->device->sdev_gendev, 4427 device_create_drvdata(st_sysfs_class,
4428 MKDEV(SCSI_TAPE_MAJOR, 4428 &STp->device->sdev_gendev,
4429 TAPE_MINOR(dev_num, mode, rew)), 4429 MKDEV(SCSI_TAPE_MAJOR,
4430 "%s", name); 4430 TAPE_MINOR(dev_num,
4431 mode, rew)),
4432 &STp->modes[mode],
4433 "%s", name);
4431 if (IS_ERR(st_class_member)) { 4434 if (IS_ERR(st_class_member)) {
4432 printk(KERN_WARNING "st%d: device_create failed\n", 4435 printk(KERN_WARNING "st%d: device_create failed\n",
4433 dev_num); 4436 dev_num);
4434 error = PTR_ERR(st_class_member); 4437 error = PTR_ERR(st_class_member);
4435 goto out; 4438 goto out;
4436 } 4439 }
4437 dev_set_drvdata(st_class_member, &STp->modes[mode]);
4438 4440
4439 error = device_create_file(st_class_member, 4441 error = device_create_file(st_class_member,
4440 &dev_attr_defined); 4442 &dev_attr_defined);
diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
index 55cc7b80422a..0a12e90ad416 100644
--- a/drivers/uio/uio.c
+++ b/drivers/uio/uio.c
@@ -649,15 +649,14 @@ int __uio_register_device(struct module *owner,
649 if (ret) 649 if (ret)
650 goto err_get_minor; 650 goto err_get_minor;
651 651
652 idev->dev = device_create(uio_class->class, parent, 652 idev->dev = device_create_drvdata(uio_class->class, parent,
653 MKDEV(uio_major, idev->minor), 653 MKDEV(uio_major, idev->minor), idev,
654 "uio%d", idev->minor); 654 "uio%d", idev->minor);
655 if (IS_ERR(idev->dev)) { 655 if (IS_ERR(idev->dev)) {
656 printk(KERN_ERR "UIO: device register failed\n"); 656 printk(KERN_ERR "UIO: device register failed\n");
657 ret = PTR_ERR(idev->dev); 657 ret = PTR_ERR(idev->dev);
658 goto err_device_create; 658 goto err_device_create;
659 } 659 }
660 dev_set_drvdata(idev->dev, idev);
661 660
662 ret = uio_dev_add_attributes(idev); 661 ret = uio_dev_add_attributes(idev);
663 if (ret) 662 if (ret)
diff --git a/drivers/usb/class/Kconfig b/drivers/usb/class/Kconfig
index 3a9102d2591b..66f17ed88cb5 100644
--- a/drivers/usb/class/Kconfig
+++ b/drivers/usb/class/Kconfig
@@ -29,3 +29,14 @@ config USB_PRINTER
29 To compile this driver as a module, choose M here: the 29 To compile this driver as a module, choose M here: the
30 module will be called usblp. 30 module will be called usblp.
31 31
32config USB_WDM
33 tristate "USB Wireless Device Management support"
34 depends on USB
35 ---help---
36 This driver supports the WMC Device Management functionality
37 of cell phones compliant to the CDC WMC specification. You can use
38 AT commands over this device.
39
40 To compile this driver as a module, choose M here: the
41 module will be called cdc-wdm.
42
diff --git a/drivers/usb/class/Makefile b/drivers/usb/class/Makefile
index cc391e6c2af8..535d59a30600 100644
--- a/drivers/usb/class/Makefile
+++ b/drivers/usb/class/Makefile
@@ -5,3 +5,4 @@
5 5
6obj-$(CONFIG_USB_ACM) += cdc-acm.o 6obj-$(CONFIG_USB_ACM) += cdc-acm.o
7obj-$(CONFIG_USB_PRINTER) += usblp.o 7obj-$(CONFIG_USB_PRINTER) += usblp.o
8obj-$(CONFIG_USB_WDM) += cdc-wdm.o
diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
new file mode 100644
index 000000000000..107666d4e2ec
--- /dev/null
+++ b/drivers/usb/class/cdc-wdm.c
@@ -0,0 +1,740 @@
1/*
2 * cdc-wdm.c
3 *
4 * This driver supports USB CDC WCM Device Management.
5 *
6 * Copyright (c) 2007-2008 Oliver Neukum
7 *
8 * Some code taken from cdc-acm.c
9 *
10 * Released under the GPLv2.
11 *
12 * Many thanks to Carl Nordbeck
13 */
14#include <linux/kernel.h>
15#include <linux/errno.h>
16#include <linux/slab.h>
17#include <linux/module.h>
18#include <linux/smp_lock.h>
19#include <linux/mutex.h>
20#include <linux/uaccess.h>
21#include <linux/bitops.h>
22#include <linux/poll.h>
23#include <linux/usb.h>
24#include <linux/usb/cdc.h>
25#include <asm/byteorder.h>
26#include <asm/unaligned.h>
27
28/*
29 * Version Information
30 */
31#define DRIVER_VERSION "v0.02"
32#define DRIVER_AUTHOR "Oliver Neukum"
33
34static struct usb_device_id wdm_ids[] = {
35 {
36 .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS |
37 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
38 .bInterfaceClass = USB_CLASS_COMM,
39 .bInterfaceSubClass = USB_CDC_SUBCLASS_DMM
40 },
41 { }
42};
43
44#define WDM_MINOR_BASE 176
45
46
47#define WDM_IN_USE 1
48#define WDM_DISCONNECTING 2
49#define WDM_RESULT 3
50#define WDM_READ 4
51#define WDM_INT_STALL 5
52#define WDM_POLL_RUNNING 6
53
54
55#define WDM_MAX 16
56
57
58static DEFINE_MUTEX(wdm_mutex);
59
60/* --- method tables --- */
61
62struct wdm_device {
63 u8 *inbuf; /* buffer for response */
64 u8 *outbuf; /* buffer for command */
65 u8 *sbuf; /* buffer for status */
66 u8 *ubuf; /* buffer for copy to user space */
67
68 struct urb *command;
69 struct urb *response;
70 struct urb *validity;
71 struct usb_interface *intf;
72 struct usb_ctrlrequest *orq;
73 struct usb_ctrlrequest *irq;
74 spinlock_t iuspin;
75
76 unsigned long flags;
77 u16 bufsize;
78 u16 wMaxCommand;
79 u16 wMaxPacketSize;
80 u16 bMaxPacketSize0;
81 __le16 inum;
82 int reslength;
83 int length;
84 int read;
85 int count;
86 dma_addr_t shandle;
87 dma_addr_t ihandle;
88 struct mutex wlock;
89 struct mutex rlock;
90 wait_queue_head_t wait;
91 struct work_struct rxwork;
92 int werr;
93 int rerr;
94};
95
96static struct usb_driver wdm_driver;
97
98/* --- callbacks --- */
99static void wdm_out_callback(struct urb *urb)
100{
101 struct wdm_device *desc;
102 desc = urb->context;
103 spin_lock(&desc->iuspin);
104 desc->werr = urb->status;
105 spin_unlock(&desc->iuspin);
106 clear_bit(WDM_IN_USE, &desc->flags);
107 kfree(desc->outbuf);
108 wake_up(&desc->wait);
109}
110
111static void wdm_in_callback(struct urb *urb)
112{
113 struct wdm_device *desc = urb->context;
114 int status = urb->status;
115
116 spin_lock(&desc->iuspin);
117
118 if (status) {
119 switch (status) {
120 case -ENOENT:
121 dev_dbg(&desc->intf->dev,
122 "nonzero urb status received: -ENOENT");
123 break;
124 case -ECONNRESET:
125 dev_dbg(&desc->intf->dev,
126 "nonzero urb status received: -ECONNRESET");
127 break;
128 case -ESHUTDOWN:
129 dev_dbg(&desc->intf->dev,
130 "nonzero urb status received: -ESHUTDOWN");
131 break;
132 case -EPIPE:
133 err("nonzero urb status received: -EPIPE");
134 break;
135 default:
136 err("Unexpected error %d", status);
137 break;
138 }
139 }
140
141 desc->rerr = status;
142 desc->reslength = urb->actual_length;
143 memmove(desc->ubuf + desc->length, desc->inbuf, desc->reslength);
144 desc->length += desc->reslength;
145 wake_up(&desc->wait);
146
147 set_bit(WDM_READ, &desc->flags);
148 spin_unlock(&desc->iuspin);
149}
150
151static void wdm_int_callback(struct urb *urb)
152{
153 int rv = 0;
154 int status = urb->status;
155 struct wdm_device *desc;
156 struct usb_ctrlrequest *req;
157 struct usb_cdc_notification *dr;
158
159 desc = urb->context;
160 req = desc->irq;
161 dr = (struct usb_cdc_notification *)desc->sbuf;
162
163 if (status) {
164 switch (status) {
165 case -ESHUTDOWN:
166 case -ENOENT:
167 case -ECONNRESET:
168 return; /* unplug */
169 case -EPIPE:
170 set_bit(WDM_INT_STALL, &desc->flags);
171 err("Stall on int endpoint");
172 goto sw; /* halt is cleared in work */
173 default:
174 err("nonzero urb status received: %d", status);
175 break;
176 }
177 }
178
179 if (urb->actual_length < sizeof(struct usb_cdc_notification)) {
180 err("wdm_int_callback - %d bytes", urb->actual_length);
181 goto exit;
182 }
183
184 switch (dr->bNotificationType) {
185 case USB_CDC_NOTIFY_RESPONSE_AVAILABLE:
186 dev_dbg(&desc->intf->dev,
187 "NOTIFY_RESPONSE_AVAILABLE received: index %d len %d",
188 dr->wIndex, dr->wLength);
189 break;
190
191 case USB_CDC_NOTIFY_NETWORK_CONNECTION:
192
193 dev_dbg(&desc->intf->dev,
194 "NOTIFY_NETWORK_CONNECTION %s network",
195 dr->wValue ? "connected to" : "disconnected from");
196 goto exit;
197 default:
198 clear_bit(WDM_POLL_RUNNING, &desc->flags);
199 err("unknown notification %d received: index %d len %d",
200 dr->bNotificationType, dr->wIndex, dr->wLength);
201 goto exit;
202 }
203
204 req->bRequestType = (USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE);
205 req->bRequest = USB_CDC_GET_ENCAPSULATED_RESPONSE;
206 req->wValue = 0;
207 req->wIndex = desc->inum;
208 req->wLength = cpu_to_le16(desc->bMaxPacketSize0);
209
210 usb_fill_control_urb(
211 desc->response,
212 interface_to_usbdev(desc->intf),
213 /* using common endpoint 0 */
214 usb_rcvctrlpipe(interface_to_usbdev(desc->intf), 0),
215 (unsigned char *)req,
216 desc->inbuf,
217 desc->bMaxPacketSize0,
218 wdm_in_callback,
219 desc
220 );
221 desc->response->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
222 spin_lock(&desc->iuspin);
223 clear_bit(WDM_READ, &desc->flags);
224 if (!test_bit(WDM_DISCONNECTING, &desc->flags)) {
225 rv = usb_submit_urb(desc->response, GFP_ATOMIC);
226 dev_dbg(&desc->intf->dev, "%s: usb_submit_urb %d",
227 __func__, rv);
228 }
229 spin_unlock(&desc->iuspin);
230 if (rv < 0) {
231 if (rv == -EPERM)
232 return;
233 if (rv == -ENOMEM) {
234sw:
235 rv = schedule_work(&desc->rxwork);
236 if (rv)
237 err("Cannot schedule work");
238 }
239 }
240exit:
241 rv = usb_submit_urb(urb, GFP_ATOMIC);
242 if (rv)
243 err("%s - usb_submit_urb failed with result %d",
244 __func__, rv);
245
246}
247
248static void kill_urbs(struct wdm_device *desc)
249{
250 usb_kill_urb(desc->command);
251 usb_kill_urb(desc->validity);
252 usb_kill_urb(desc->response);
253}
254
255static void free_urbs(struct wdm_device *desc)
256{
257 usb_free_urb(desc->validity);
258 usb_free_urb(desc->response);
259 usb_free_urb(desc->command);
260}
261
262static void cleanup(struct wdm_device *desc)
263{
264 usb_buffer_free(interface_to_usbdev(desc->intf),
265 desc->wMaxPacketSize,
266 desc->sbuf,
267 desc->validity->transfer_dma);
268 usb_buffer_free(interface_to_usbdev(desc->intf),
269 desc->wMaxPacketSize,
270 desc->inbuf,
271 desc->response->transfer_dma);
272 kfree(desc->orq);
273 kfree(desc->irq);
274 kfree(desc->ubuf);
275 free_urbs(desc);
276 kfree(desc);
277}
278
279static ssize_t wdm_write
280(struct file *file, const char __user *buffer, size_t count, loff_t *ppos)
281{
282 u8 *buf;
283 int rv = -EMSGSIZE, r, we;
284 struct wdm_device *desc = file->private_data;
285 struct usb_ctrlrequest *req;
286
287 if (count > desc->wMaxCommand)
288 count = desc->wMaxCommand;
289
290 spin_lock_irq(&desc->iuspin);
291 we = desc->werr;
292 desc->werr = 0;
293 spin_unlock_irq(&desc->iuspin);
294 if (we < 0)
295 return -EIO;
296
297 r = mutex_lock_interruptible(&desc->wlock); /* concurrent writes */
298 rv = -ERESTARTSYS;
299 if (r)
300 goto outnl;
301
302 r = wait_event_interruptible(desc->wait, !test_bit(WDM_IN_USE,
303 &desc->flags));
304 if (r < 0)
305 goto out;
306
307 if (test_bit(WDM_DISCONNECTING, &desc->flags)) {
308 rv = -ENODEV;
309 goto out;
310 }
311
312 desc->outbuf = buf = kmalloc(count, GFP_KERNEL);
313 if (!buf) {
314 rv = -ENOMEM;
315 goto out;
316 }
317
318 r = copy_from_user(buf, buffer, count);
319 if (r > 0) {
320 kfree(buf);
321 rv = -EFAULT;
322 goto out;
323 }
324
325 req = desc->orq;
326 usb_fill_control_urb(
327 desc->command,
328 interface_to_usbdev(desc->intf),
329 /* using common endpoint 0 */
330 usb_sndctrlpipe(interface_to_usbdev(desc->intf), 0),
331 (unsigned char *)req,
332 buf,
333 count,
334 wdm_out_callback,
335 desc
336 );
337
338 req->bRequestType = (USB_DIR_OUT | USB_TYPE_CLASS |
339 USB_RECIP_INTERFACE);
340 req->bRequest = USB_CDC_SEND_ENCAPSULATED_COMMAND;
341 req->wValue = 0;
342 req->wIndex = desc->inum;
343 req->wLength = cpu_to_le16(count);
344 set_bit(WDM_IN_USE, &desc->flags);
345
346 rv = usb_submit_urb(desc->command, GFP_KERNEL);
347 if (rv < 0) {
348 kfree(buf);
349 clear_bit(WDM_IN_USE, &desc->flags);
350 } else {
351 dev_dbg(&desc->intf->dev, "Tx URB has been submitted index=%d",
352 req->wIndex);
353 }
354out:
355 mutex_unlock(&desc->wlock);
356outnl:
357 return rv < 0 ? rv : count;
358}
359
360static ssize_t wdm_read
361(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
362{
363 int rv, cntr;
364 int i = 0;
365 struct wdm_device *desc = file->private_data;
366
367
368 rv = mutex_lock_interruptible(&desc->rlock); /*concurrent reads */
369 if (rv < 0)
370 return -ERESTARTSYS;
371
372 if (desc->length == 0) {
373 desc->read = 0;
374retry:
375 i++;
376 rv = wait_event_interruptible(desc->wait,
377 test_bit(WDM_READ, &desc->flags));
378
379 if (rv < 0) {
380 rv = -ERESTARTSYS;
381 goto err;
382 }
383
384 spin_lock_irq(&desc->iuspin);
385
386 if (desc->rerr) { /* read completed, error happened */
387 int t = desc->rerr;
388 desc->rerr = 0;
389 spin_unlock_irq(&desc->iuspin);
390 err("reading had resulted in %d", t);
391 rv = -EIO;
392 goto err;
393 }
394 /*
395 * recheck whether we've lost the race
396 * against the completion handler
397 */
398 if (!test_bit(WDM_READ, &desc->flags)) { /* lost race */
399 spin_unlock_irq(&desc->iuspin);
400 goto retry;
401 }
402 if (!desc->reslength) { /* zero length read */
403 spin_unlock_irq(&desc->iuspin);
404 goto retry;
405 }
406 clear_bit(WDM_READ, &desc->flags);
407 spin_unlock_irq(&desc->iuspin);
408 }
409
410 cntr = count > desc->length ? desc->length : count;
411 rv = copy_to_user(buffer, desc->ubuf, cntr);
412 if (rv > 0) {
413 rv = -EFAULT;
414 goto err;
415 }
416
417 for (i = 0; i < desc->length - cntr; i++)
418 desc->ubuf[i] = desc->ubuf[i + cntr];
419
420 desc->length -= cntr;
421 rv = cntr;
422
423err:
424 mutex_unlock(&desc->rlock);
425 if (rv < 0)
426 err("wdm_read: exit error");
427 return rv;
428}
429
430static int wdm_flush(struct file *file, fl_owner_t id)
431{
432 struct wdm_device *desc = file->private_data;
433
434 wait_event(desc->wait, !test_bit(WDM_IN_USE, &desc->flags));
435 if (desc->werr < 0)
436 err("Error in flush path: %d", desc->werr);
437
438 return desc->werr;
439}
440
441static unsigned int wdm_poll(struct file *file, struct poll_table_struct *wait)
442{
443 struct wdm_device *desc = file->private_data;
444 unsigned long flags;
445 unsigned int mask = 0;
446
447 spin_lock_irqsave(&desc->iuspin, flags);
448 if (test_bit(WDM_DISCONNECTING, &desc->flags)) {
449 mask = POLLERR;
450 spin_unlock_irqrestore(&desc->iuspin, flags);
451 goto desc_out;
452 }
453 if (test_bit(WDM_READ, &desc->flags))
454 mask = POLLIN | POLLRDNORM;
455 if (desc->rerr || desc->werr)
456 mask |= POLLERR;
457 if (!test_bit(WDM_IN_USE, &desc->flags))
458 mask |= POLLOUT | POLLWRNORM;
459 spin_unlock_irqrestore(&desc->iuspin, flags);
460
461 poll_wait(file, &desc->wait, wait);
462
463desc_out:
464 return mask;
465}
466
467static int wdm_open(struct inode *inode, struct file *file)
468{
469 int minor = iminor(inode);
470 int rv = -ENODEV;
471 struct usb_interface *intf;
472 struct wdm_device *desc;
473
474 mutex_lock(&wdm_mutex);
475 intf = usb_find_interface(&wdm_driver, minor);
476 if (!intf)
477 goto out;
478
479 desc = usb_get_intfdata(intf);
480 if (test_bit(WDM_DISCONNECTING, &desc->flags))
481 goto out;
482
483 desc->count++;
484 file->private_data = desc;
485
486 rv = usb_submit_urb(desc->validity, GFP_KERNEL);
487
488 if (rv < 0) {
489 desc->count--;
490 err("Error submitting int urb - %d", rv);
491 goto out;
492 }
493 rv = 0;
494
495out:
496 mutex_unlock(&wdm_mutex);
497 return rv;
498}
499
500static int wdm_release(struct inode *inode, struct file *file)
501{
502 struct wdm_device *desc = file->private_data;
503
504 mutex_lock(&wdm_mutex);
505 desc->count--;
506 if (!desc->count) {
507 dev_dbg(&desc->intf->dev, "wdm_release: cleanup");
508 kill_urbs(desc);
509 }
510 mutex_unlock(&wdm_mutex);
511 return 0;
512}
513
514static const struct file_operations wdm_fops = {
515 .owner = THIS_MODULE,
516 .read = wdm_read,
517 .write = wdm_write,
518 .open = wdm_open,
519 .flush = wdm_flush,
520 .release = wdm_release,
521 .poll = wdm_poll
522};
523
524static struct usb_class_driver wdm_class = {
525 .name = "cdc-wdm%d",
526 .fops = &wdm_fops,
527 .minor_base = WDM_MINOR_BASE,
528};
529
530/* --- error handling --- */
531static void wdm_rxwork(struct work_struct *work)
532{
533 struct wdm_device *desc = container_of(work, struct wdm_device, rxwork);
534 unsigned long flags;
535 int rv;
536
537 spin_lock_irqsave(&desc->iuspin, flags);
538 if (test_bit(WDM_DISCONNECTING, &desc->flags)) {
539 spin_unlock_irqrestore(&desc->iuspin, flags);
540 } else {
541 spin_unlock_irqrestore(&desc->iuspin, flags);
542 rv = usb_submit_urb(desc->response, GFP_KERNEL);
543 if (rv < 0 && rv != -EPERM) {
544 spin_lock_irqsave(&desc->iuspin, flags);
545 if (!test_bit(WDM_DISCONNECTING, &desc->flags))
546 schedule_work(&desc->rxwork);
547 spin_unlock_irqrestore(&desc->iuspin, flags);
548 }
549 }
550}
551
552/* --- hotplug --- */
553
554static int wdm_probe(struct usb_interface *intf, const struct usb_device_id *id)
555{
556 int rv = -EINVAL;
557 struct usb_device *udev = interface_to_usbdev(intf);
558 struct wdm_device *desc;
559 struct usb_host_interface *iface;
560 struct usb_endpoint_descriptor *ep;
561 struct usb_cdc_dmm_desc *dmhd;
562 u8 *buffer = intf->altsetting->extra;
563 int buflen = intf->altsetting->extralen;
564 u16 maxcom = 0;
565
566 if (!buffer)
567 goto out;
568
569 while (buflen > 0) {
570 if (buffer [1] != USB_DT_CS_INTERFACE) {
571 err("skipping garbage");
572 goto next_desc;
573 }
574
575 switch (buffer [2]) {
576 case USB_CDC_HEADER_TYPE:
577 break;
578 case USB_CDC_DMM_TYPE:
579 dmhd = (struct usb_cdc_dmm_desc *)buffer;
580 maxcom = le16_to_cpu(dmhd->wMaxCommand);
581 dev_dbg(&intf->dev,
582 "Finding maximum buffer length: %d", maxcom);
583 break;
584 default:
585 err("Ignoring extra header, type %d, length %d",
586 buffer[2], buffer[0]);
587 break;
588 }
589next_desc:
590 buflen -= buffer[0];
591 buffer += buffer[0];
592 }
593
594 rv = -ENOMEM;
595 desc = kzalloc(sizeof(struct wdm_device), GFP_KERNEL);
596 if (!desc)
597 goto out;
598 mutex_init(&desc->wlock);
599 mutex_init(&desc->rlock);
600 spin_lock_init(&desc->iuspin);
601 init_waitqueue_head(&desc->wait);
602 desc->wMaxCommand = maxcom;
603 desc->inum = cpu_to_le16((u16)intf->cur_altsetting->desc.bInterfaceNumber);
604 desc->intf = intf;
605 INIT_WORK(&desc->rxwork, wdm_rxwork);
606
607 iface = &intf->altsetting[0];
608 ep = &iface->endpoint[0].desc;
609 if (!usb_endpoint_is_int_in(ep)) {
610 rv = -EINVAL;
611 goto err;
612 }
613
614 desc->wMaxPacketSize = ep->wMaxPacketSize;
615 desc->bMaxPacketSize0 = cpu_to_le16(udev->descriptor.bMaxPacketSize0);
616
617 desc->orq = kmalloc(sizeof(struct usb_ctrlrequest), GFP_KERNEL);
618 if (!desc->orq)
619 goto err;
620 desc->irq = kmalloc(sizeof(struct usb_ctrlrequest), GFP_KERNEL);
621 if (!desc->irq)
622 goto err;
623
624 desc->validity = usb_alloc_urb(0, GFP_KERNEL);
625 if (!desc->validity)
626 goto err;
627
628 desc->response = usb_alloc_urb(0, GFP_KERNEL);
629 if (!desc->response)
630 goto err;
631
632 desc->command = usb_alloc_urb(0, GFP_KERNEL);
633 if (!desc->command)
634 goto err;
635
636 desc->ubuf = kmalloc(desc->wMaxCommand, GFP_KERNEL);
637 if (!desc->ubuf)
638 goto err;
639
640 desc->sbuf = usb_buffer_alloc(interface_to_usbdev(intf),
641 desc->wMaxPacketSize,
642 GFP_KERNEL,
643 &desc->validity->transfer_dma);
644 if (!desc->sbuf)
645 goto err;
646
647 desc->inbuf = usb_buffer_alloc(interface_to_usbdev(intf),
648 desc->bMaxPacketSize0,
649 GFP_KERNEL,
650 &desc->response->transfer_dma);
651 if (!desc->inbuf)
652 goto err2;
653
654 usb_fill_int_urb(
655 desc->validity,
656 interface_to_usbdev(intf),
657 usb_rcvintpipe(interface_to_usbdev(intf), ep->bEndpointAddress),
658 desc->sbuf,
659 desc->wMaxPacketSize,
660 wdm_int_callback,
661 desc,
662 ep->bInterval
663 );
664 desc->validity->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
665
666 usb_set_intfdata(intf, desc);
667 rv = usb_register_dev(intf, &wdm_class);
668 dev_info(&intf->dev, "cdc-wdm%d: USB WDM device\n",
669 intf->minor - WDM_MINOR_BASE);
670 if (rv < 0)
671 goto err;
672out:
673 return rv;
674err2:
675 usb_buffer_free(interface_to_usbdev(desc->intf),
676 desc->wMaxPacketSize,
677 desc->sbuf,
678 desc->validity->transfer_dma);
679err:
680 free_urbs(desc);
681 kfree(desc->ubuf);
682 kfree(desc->orq);
683 kfree(desc->irq);
684 kfree(desc);
685 return rv;
686}
687
688static void wdm_disconnect(struct usb_interface *intf)
689{
690 struct wdm_device *desc;
691 unsigned long flags;
692
693 usb_deregister_dev(intf, &wdm_class);
694 mutex_lock(&wdm_mutex);
695 desc = usb_get_intfdata(intf);
696
697 /* the spinlock makes sure no new urbs are generated in the callbacks */
698 spin_lock_irqsave(&desc->iuspin, flags);
699 set_bit(WDM_DISCONNECTING, &desc->flags);
700 set_bit(WDM_READ, &desc->flags);
701 clear_bit(WDM_IN_USE, &desc->flags);
702 spin_unlock_irqrestore(&desc->iuspin, flags);
703 cancel_work_sync(&desc->rxwork);
704 kill_urbs(desc);
705 wake_up_all(&desc->wait);
706 if (!desc->count)
707 cleanup(desc);
708 mutex_unlock(&wdm_mutex);
709}
710
711static struct usb_driver wdm_driver = {
712 .name = "cdc_wdm",
713 .probe = wdm_probe,
714 .disconnect = wdm_disconnect,
715 .id_table = wdm_ids,
716};
717
718/* --- low level module stuff --- */
719
720static int __init wdm_init(void)
721{
722 int rv;
723
724 rv = usb_register(&wdm_driver);
725
726 return rv;
727}
728
729static void __exit wdm_exit(void)
730{
731 usb_deregister(&wdm_driver);
732}
733
734module_init(wdm_init);
735module_exit(wdm_exit);
736
737MODULE_AUTHOR(DRIVER_AUTHOR);
738MODULE_DESCRIPTION("USB Abstract Control Model driver for "
739 "USB WCM Device Management");
740MODULE_LICENSE("GPL");
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index bf10e9c4195e..09a53e7f3327 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -818,12 +818,12 @@ static int usb_register_bus(struct usb_bus *bus)
818 set_bit (busnum, busmap.busmap); 818 set_bit (busnum, busmap.busmap);
819 bus->busnum = busnum; 819 bus->busnum = busnum;
820 820
821 bus->dev = device_create(usb_host_class, bus->controller, MKDEV(0, 0), 821 bus->dev = device_create_drvdata(usb_host_class, bus->controller,
822 "usb_host%d", busnum); 822 MKDEV(0, 0), bus,
823 "usb_host%d", busnum);
823 result = PTR_ERR(bus->dev); 824 result = PTR_ERR(bus->dev);
824 if (IS_ERR(bus->dev)) 825 if (IS_ERR(bus->dev))
825 goto error_create_class_dev; 826 goto error_create_class_dev;
826 dev_set_drvdata(bus->dev, bus);
827 827
828 /* Add it to the local list of buses */ 828 /* Add it to the local list of buses */
829 list_add (&bus->bus_list, &usb_bus_list); 829 list_add (&bus->bus_list, &usb_bus_list);
diff --git a/drivers/usb/gadget/pxa27x_udc.c b/drivers/usb/gadget/pxa27x_udc.c
index 499b7a23f351..e02bfd4df3a6 100644
--- a/drivers/usb/gadget/pxa27x_udc.c
+++ b/drivers/usb/gadget/pxa27x_udc.c
@@ -1526,7 +1526,8 @@ static void udc_disable(struct pxa_udc *udc)
1526 1526
1527 ep0_idle(udc); 1527 ep0_idle(udc);
1528 udc->gadget.speed = USB_SPEED_UNKNOWN; 1528 udc->gadget.speed = USB_SPEED_UNKNOWN;
1529 udc->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT); 1529 if (udc->mach->udc_command)
1530 udc->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT);
1530} 1531}
1531 1532
1532/** 1533/**
diff --git a/drivers/usb/host/ehci-orion.c b/drivers/usb/host/ehci-orion.c
index d187d0313742..3adfda813a7b 100644
--- a/drivers/usb/host/ehci-orion.c
+++ b/drivers/usb/host/ehci-orion.c
@@ -115,6 +115,8 @@ static int ehci_orion_setup(struct usb_hcd *hcd)
115 if (retval) 115 if (retval)
116 return retval; 116 return retval;
117 117
118 hcd->has_tt = 1;
119
118 ehci_reset(ehci); 120 ehci_reset(ehci);
119 ehci_port_power(ehci, 0); 121 ehci_port_power(ehci, 0);
120 122
diff --git a/drivers/usb/misc/phidgetkit.c b/drivers/usb/misc/phidgetkit.c
index 24230c638b8e..4cfa25b0f44e 100644
--- a/drivers/usb/misc/phidgetkit.c
+++ b/drivers/usb/misc/phidgetkit.c
@@ -595,14 +595,14 @@ static int interfacekit_probe(struct usb_interface *intf, const struct usb_devic
595 } while(value); 595 } while(value);
596 kit->dev_no = bit; 596 kit->dev_no = bit;
597 597
598 kit->dev = device_create(phidget_class, &kit->udev->dev, 0, 598 kit->dev = device_create_drvdata(phidget_class, &kit->udev->dev,
599 "interfacekit%d", kit->dev_no); 599 MKDEV(0, 0), kit,
600 "interfacekit%d", kit->dev_no);
600 if (IS_ERR(kit->dev)) { 601 if (IS_ERR(kit->dev)) {
601 rc = PTR_ERR(kit->dev); 602 rc = PTR_ERR(kit->dev);
602 kit->dev = NULL; 603 kit->dev = NULL;
603 goto out; 604 goto out;
604 } 605 }
605 dev_set_drvdata(kit->dev, kit);
606 606
607 if (usb_submit_urb(kit->irq, GFP_KERNEL)) { 607 if (usb_submit_urb(kit->irq, GFP_KERNEL)) {
608 rc = -EIO; 608 rc = -EIO;
diff --git a/drivers/usb/misc/phidgetmotorcontrol.c b/drivers/usb/misc/phidgetmotorcontrol.c
index f0113c17cc5a..9b4696f21b22 100644
--- a/drivers/usb/misc/phidgetmotorcontrol.c
+++ b/drivers/usb/misc/phidgetmotorcontrol.c
@@ -365,16 +365,15 @@ static int motorcontrol_probe(struct usb_interface *intf, const struct usb_devic
365 } while(value); 365 } while(value);
366 mc->dev_no = bit; 366 mc->dev_no = bit;
367 367
368 mc->dev = device_create(phidget_class, &mc->udev->dev, 0, 368 mc->dev = device_create_drvdata(phidget_class, &mc->udev->dev,
369 "motorcontrol%d", mc->dev_no); 369 MKDEV(0, 0), mc,
370 "motorcontrol%d", mc->dev_no);
370 if (IS_ERR(mc->dev)) { 371 if (IS_ERR(mc->dev)) {
371 rc = PTR_ERR(mc->dev); 372 rc = PTR_ERR(mc->dev);
372 mc->dev = NULL; 373 mc->dev = NULL;
373 goto out; 374 goto out;
374 } 375 }
375 376
376 dev_set_drvdata(mc->dev, mc);
377
378 if (usb_submit_urb(mc->irq, GFP_KERNEL)) { 377 if (usb_submit_urb(mc->irq, GFP_KERNEL)) {
379 rc = -EIO; 378 rc = -EIO;
380 goto out; 379 goto out;
diff --git a/drivers/usb/misc/phidgetservo.c b/drivers/usb/misc/phidgetservo.c
index 7d590c09434a..1ca7ddb41d4d 100644
--- a/drivers/usb/misc/phidgetservo.c
+++ b/drivers/usb/misc/phidgetservo.c
@@ -275,14 +275,14 @@ servo_probe(struct usb_interface *interface, const struct usb_device_id *id)
275 } while (value); 275 } while (value);
276 dev->dev_no = bit; 276 dev->dev_no = bit;
277 277
278 dev->dev = device_create(phidget_class, &dev->udev->dev, 0, 278 dev->dev = device_create_drvdata(phidget_class, &dev->udev->dev,
279 "servo%d", dev->dev_no); 279 MKDEV(0, 0), dev,
280 "servo%d", dev->dev_no);
280 if (IS_ERR(dev->dev)) { 281 if (IS_ERR(dev->dev)) {
281 rc = PTR_ERR(dev->dev); 282 rc = PTR_ERR(dev->dev);
282 dev->dev = NULL; 283 dev->dev = NULL;
283 goto out; 284 goto out;
284 } 285 }
285 dev_set_drvdata(dev->dev, dev);
286 286
287 servo_count = dev->type & SERVO_COUNT_QUAD ? 4 : 1; 287 servo_count = dev->type & SERVO_COUNT_QUAD ? 4 : 1;
288 288
diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c
index ba28fdc9ccd2..1f7c86bd8297 100644
--- a/drivers/usb/serial/ch341.c
+++ b/drivers/usb/serial/ch341.c
@@ -28,6 +28,7 @@ static int debug;
28 28
29static struct usb_device_id id_table [] = { 29static struct usb_device_id id_table [] = {
30 { USB_DEVICE(0x4348, 0x5523) }, 30 { USB_DEVICE(0x4348, 0x5523) },
31 { USB_DEVICE(0x1a86, 0x7523) },
31 { }, 32 { },
32}; 33};
33MODULE_DEVICE_TABLE(usb, id_table); 34MODULE_DEVICE_TABLE(usb, id_table);
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 5b349ece7247..3cee6feac174 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -374,6 +374,7 @@ static struct usb_device_id id_table_combined [] = {
374 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, 374 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
375 { USB_DEVICE(FTDI_VID, FTDI_OOCDLINK_PID), 375 { USB_DEVICE(FTDI_VID, FTDI_OOCDLINK_PID),
376 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, 376 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
377 { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
377 { }, /* Optional parameter entry */ 378 { }, /* Optional parameter entry */
378 { } /* Terminating entry */ 379 { } /* Terminating entry */
379}; 380};
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
index 504edf8c3a3f..a72f2c81d664 100644
--- a/drivers/usb/serial/ftdi_sio.h
+++ b/drivers/usb/serial/ftdi_sio.h
@@ -592,6 +592,12 @@
592#define FIC_NEO1973_DEBUG_PID 0x5118 592#define FIC_NEO1973_DEBUG_PID 0x5118
593 593
594/* 594/*
595 * RATOC REX-USB60F
596 */
597#define RATOC_VENDOR_ID 0x0584
598#define RATOC_PRODUCT_ID_USB60F 0xb020
599
600/*
595 * BmRequestType: 1100 0000b 601 * BmRequestType: 1100 0000b
596 * bRequest: FTDI_E2_READ 602 * bRequest: FTDI_E2_READ
597 * wValue: 0 603 * wValue: 0
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index e7e016e60333..6cecd2c12b1d 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -183,6 +183,7 @@ static int option_send_setup(struct usb_serial_port *port);
183#define AXESSTEL_PRODUCT_MV110H 0x1000 183#define AXESSTEL_PRODUCT_MV110H 0x1000
184 184
185#define ONDA_VENDOR_ID 0x19d2 185#define ONDA_VENDOR_ID 0x19d2
186#define ONDA_PRODUCT_MSA501HS 0x0001
186#define ONDA_PRODUCT_ET502HS 0x0002 187#define ONDA_PRODUCT_ET502HS 0x0002
187 188
188#define BANDRICH_VENDOR_ID 0x1A8D 189#define BANDRICH_VENDOR_ID 0x1A8D
@@ -196,6 +197,9 @@ static int option_send_setup(struct usb_serial_port *port);
196 197
197#define MAXON_VENDOR_ID 0x16d8 198#define MAXON_VENDOR_ID 0x16d8
198 199
200#define TELIT_VENDOR_ID 0x1bc7
201#define TELIT_PRODUCT_UC864E 0x1003
202
199static struct usb_device_id option_ids[] = { 203static struct usb_device_id option_ids[] = {
200 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, 204 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
201 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, 205 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
@@ -297,13 +301,14 @@ static struct usb_device_id option_ids[] = {
297 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, 301 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) },
298 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) }, 302 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
299 { USB_DEVICE(AXESSTEL_VENDOR_ID, AXESSTEL_PRODUCT_MV110H) }, 303 { USB_DEVICE(AXESSTEL_VENDOR_ID, AXESSTEL_PRODUCT_MV110H) },
304 { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_MSA501HS) },
300 { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_ET502HS) }, 305 { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_ET502HS) },
301 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) }, 306 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) },
302 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) }, 307 { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },
303 { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, 308 { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
304 { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ 309 { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
305 { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ 310 { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
306 { USB_DEVICE(0x19d2, 0x0001) }, /* Telstra NextG CDMA */ 311 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
307 { } /* Terminating entry */ 312 { } /* Terminating entry */
308}; 313};
309MODULE_DEVICE_TABLE(usb, option_ids); 314MODULE_DEVICE_TABLE(usb, option_ids);
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index c605fb68f807..234c5eea95a2 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -66,7 +66,6 @@ static struct usb_device_id id_table [] = {
66 { USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID_2080) }, 66 { USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID_2080) },
67 { USB_DEVICE(MA620_VENDOR_ID, MA620_PRODUCT_ID) }, 67 { USB_DEVICE(MA620_VENDOR_ID, MA620_PRODUCT_ID) },
68 { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID) }, 68 { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID) },
69 { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
70 { USB_DEVICE(TRIPP_VENDOR_ID, TRIPP_PRODUCT_ID) }, 69 { USB_DEVICE(TRIPP_VENDOR_ID, TRIPP_PRODUCT_ID) },
71 { USB_DEVICE(RADIOSHACK_VENDOR_ID, RADIOSHACK_PRODUCT_ID) }, 70 { USB_DEVICE(RADIOSHACK_VENDOR_ID, RADIOSHACK_PRODUCT_ID) },
72 { USB_DEVICE(DCU10_VENDOR_ID, DCU10_PRODUCT_ID) }, 71 { USB_DEVICE(DCU10_VENDOR_ID, DCU10_PRODUCT_ID) },
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
index 10cf872e5ecb..3bdefe020501 100644
--- a/drivers/usb/serial/pl2303.h
+++ b/drivers/usb/serial/pl2303.h
@@ -36,7 +36,6 @@
36 36
37#define RATOC_VENDOR_ID 0x0584 37#define RATOC_VENDOR_ID 0x0584
38#define RATOC_PRODUCT_ID 0xb000 38#define RATOC_PRODUCT_ID 0xb000
39#define RATOC_PRODUCT_ID_USB60F 0xb020
40 39
41#define TRIPP_VENDOR_ID 0x2478 40#define TRIPP_VENDOR_ID 0x2478
42#define TRIPP_PRODUCT_ID 0x2008 41#define TRIPP_PRODUCT_ID 0x2008
diff --git a/drivers/video/display/display-sysfs.c b/drivers/video/display/display-sysfs.c
index 35477177bef4..6ef800bdf482 100644
--- a/drivers/video/display/display-sysfs.c
+++ b/drivers/video/display/display-sysfs.c
@@ -26,6 +26,7 @@
26#include <linux/ctype.h> 26#include <linux/ctype.h>
27#include <linux/idr.h> 27#include <linux/idr.h>
28#include <linux/err.h> 28#include <linux/err.h>
29#include <linux/kdev_t.h>
29 30
30static ssize_t display_show_name(struct device *dev, 31static ssize_t display_show_name(struct device *dev,
31 struct device_attribute *attr, char *buf) 32 struct device_attribute *attr, char *buf)
@@ -152,10 +153,13 @@ struct display_device *display_device_register(struct display_driver *driver,
152 mutex_unlock(&allocated_dsp_lock); 153 mutex_unlock(&allocated_dsp_lock);
153 154
154 if (!ret) { 155 if (!ret) {
155 new_dev->dev = device_create(display_class, parent, 0, 156 new_dev->dev = device_create_drvdata(display_class,
156 "display%d", new_dev->idx); 157 parent,
158 MKDEV(0,0),
159 new_dev,
160 "display%d",
161 new_dev->idx);
157 if (!IS_ERR(new_dev->dev)) { 162 if (!IS_ERR(new_dev->dev)) {
158 dev_set_drvdata(new_dev->dev, new_dev);
159 new_dev->parent = parent; 163 new_dev->parent = parent;
160 new_dev->driver = driver; 164 new_dev->driver = driver;
161 mutex_init(&new_dev->lock); 165 mutex_init(&new_dev->lock);
diff --git a/fs/cifs/AUTHORS b/fs/cifs/AUTHORS
index 8848e4dfa026..9c136d7803d9 100644
--- a/fs/cifs/AUTHORS
+++ b/fs/cifs/AUTHORS
@@ -36,6 +36,7 @@ Miklos Szeredi
36Kazeon team for various fixes especially for 2.4 version. 36Kazeon team for various fixes especially for 2.4 version.
37Asser Ferno (Change Notify support) 37Asser Ferno (Change Notify support)
38Shaggy (Dave Kleikamp) for inumerable small fs suggestions and some good cleanup 38Shaggy (Dave Kleikamp) for inumerable small fs suggestions and some good cleanup
39Igor Mammedov (DFS support)
39 40
40Test case and Bug Report contributors 41Test case and Bug Report contributors
41------------------------------------- 42-------------------------------------
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 8355e918fddf..28e3d5c5fcac 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -1,5 +1,7 @@
1Version 1.53 1Version 1.53
2------------ 2------------
3DFS support added (Microsoft Distributed File System client support needed
4for referrals which enable a hierarchical name space among servers).
3 5
4Version 1.52 6Version 1.52
5------------ 7------------
@@ -12,7 +14,8 @@ Add ability to modify cifs acls for handling chmod (when mounted with
12cifsacl flag). Fix prefixpath path separator so we can handle mounts 14cifsacl flag). Fix prefixpath path separator so we can handle mounts
13with prefixpaths longer than one directory (one path component) when 15with prefixpaths longer than one directory (one path component) when
14mounted to Windows servers. Fix slow file open when cifsacl 16mounted to Windows servers. Fix slow file open when cifsacl
15enabled. 17enabled. Fix memory leak in FindNext when the SMB call returns -EBADF.
18
16 19
17Version 1.51 20Version 1.51
18------------ 21------------
diff --git a/fs/cifs/README b/fs/cifs/README
index 621aa1a85971..2bd6fe556f88 100644
--- a/fs/cifs/README
+++ b/fs/cifs/README
@@ -483,6 +483,11 @@ A partial list of the supported mount options follows:
483 sign Must use packet signing (helps avoid unwanted data modification 483 sign Must use packet signing (helps avoid unwanted data modification
484 by intermediate systems in the route). Note that signing 484 by intermediate systems in the route). Note that signing
485 does not work with lanman or plaintext authentication. 485 does not work with lanman or plaintext authentication.
486 seal Must seal (encrypt) all data on this mounted share before
487 sending on the network. Requires support for Unix Extensions.
488 Note that this differs from the sign mount option in that it
489 causes encryption of data sent over this mounted share but other
490 shares mounted to the same server are unaffected.
486 sec Security mode. Allowed values are: 491 sec Security mode. Allowed values are:
487 none attempt to connection as a null user (no name) 492 none attempt to connection as a null user (no name)
488 krb5 Use Kerberos version 5 authentication 493 krb5 Use Kerberos version 5 authentication
diff --git a/fs/cifs/TODO b/fs/cifs/TODO
index 92c9feac440f..5aff46c61e52 100644
--- a/fs/cifs/TODO
+++ b/fs/cifs/TODO
@@ -1,4 +1,4 @@
1Version 1.52 January 3, 2008 1Version 1.53 May 20, 2008
2 2
3A Partial List of Missing Features 3A Partial List of Missing Features
4================================== 4==================================
@@ -20,20 +20,21 @@ d) Cleanup now unneeded SessSetup code in
20fs/cifs/connect.c and add back in NTLMSSP code if any servers 20fs/cifs/connect.c and add back in NTLMSSP code if any servers
21need it 21need it
22 22
23e) ms-dfs and ms-dfs host name resolution cleanup 23e) fix NTLMv2 signing when two mounts with different users to same
24
25f) fix NTLMv2 signing when two mounts with different users to same
26server. 24server.
27 25
28g) Directory entry caching relies on a 1 second timer, rather than 26f) Directory entry caching relies on a 1 second timer, rather than
29using FindNotify or equivalent. - (started) 27using FindNotify or equivalent. - (started)
30 28
31h) quota support (needs minor kernel change since quota calls 29g) quota support (needs minor kernel change since quota calls
32to make it to network filesystems or deviceless filesystems) 30to make it to network filesystems or deviceless filesystems)
33 31
34i) investigate sync behavior (including syncpage) and check 32h) investigate sync behavior (including syncpage) and check
35for proper behavior of intr/nointr 33for proper behavior of intr/nointr
36 34
35i) improve support for very old servers (OS/2 and Win9x for example)
36Including support for changing the time remotely (utimes command).
37
37j) hook lower into the sockets api (as NFS/SunRPC does) to avoid the 38j) hook lower into the sockets api (as NFS/SunRPC does) to avoid the
38extra copy in/out of the socket buffers in some cases. 39extra copy in/out of the socket buffers in some cases.
39 40
diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c
index f6fdecf6598c..d82374c9e329 100644
--- a/fs/cifs/cifs_dfs_ref.c
+++ b/fs/cifs/cifs_dfs_ref.c
@@ -219,53 +219,6 @@ static struct vfsmount *cifs_dfs_do_refmount(const struct vfsmount *mnt_parent,
219 219
220} 220}
221 221
222static char *build_full_dfs_path_from_dentry(struct dentry *dentry)
223{
224 char *full_path = NULL;
225 char *search_path;
226 char *tmp_path;
227 size_t l_max_len;
228 struct cifs_sb_info *cifs_sb;
229
230 if (dentry->d_inode == NULL)
231 return NULL;
232
233 cifs_sb = CIFS_SB(dentry->d_inode->i_sb);
234
235 if (cifs_sb->tcon == NULL)
236 return NULL;
237
238 search_path = build_path_from_dentry(dentry);
239 if (search_path == NULL)
240 return NULL;
241
242 if (cifs_sb->tcon->Flags & SMB_SHARE_IS_IN_DFS) {
243 int i;
244 /* we should use full path name for correct working with DFS */
245 l_max_len = strnlen(cifs_sb->tcon->treeName, MAX_TREE_SIZE+1) +
246 strnlen(search_path, MAX_PATHCONF) + 1;
247 tmp_path = kmalloc(l_max_len, GFP_KERNEL);
248 if (tmp_path == NULL) {
249 kfree(search_path);
250 return NULL;
251 }
252 strncpy(tmp_path, cifs_sb->tcon->treeName, l_max_len);
253 tmp_path[l_max_len-1] = 0;
254 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS)
255 for (i = 0; i < l_max_len; i++) {
256 if (tmp_path[i] == '\\')
257 tmp_path[i] = '/';
258 }
259 strncat(tmp_path, search_path, l_max_len - strlen(tmp_path));
260
261 full_path = tmp_path;
262 kfree(search_path);
263 } else {
264 full_path = search_path;
265 }
266 return full_path;
267}
268
269static int add_mount_helper(struct vfsmount *newmnt, struct nameidata *nd, 222static int add_mount_helper(struct vfsmount *newmnt, struct nameidata *nd,
270 struct list_head *mntlist) 223 struct list_head *mntlist)
271{ 224{
@@ -333,7 +286,7 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd)
333 goto out_err; 286 goto out_err;
334 } 287 }
335 288
336 full_path = build_full_dfs_path_from_dentry(dentry); 289 full_path = build_path_from_dentry(dentry);
337 if (full_path == NULL) { 290 if (full_path == NULL) {
338 rc = -ENOMEM; 291 rc = -ENOMEM;
339 goto out_err; 292 goto out_err;
diff --git a/fs/cifs/cifs_fs_sb.h b/fs/cifs/cifs_fs_sb.h
index 8ad2330ba061..877c85409f1f 100644
--- a/fs/cifs/cifs_fs_sb.h
+++ b/fs/cifs/cifs_fs_sb.h
@@ -30,6 +30,7 @@
30#define CIFS_MOUNT_CIFS_ACL 0x200 /* send ACL requests to non-POSIX srv */ 30#define CIFS_MOUNT_CIFS_ACL 0x200 /* send ACL requests to non-POSIX srv */
31#define CIFS_MOUNT_OVERR_UID 0x400 /* override uid returned from server */ 31#define CIFS_MOUNT_OVERR_UID 0x400 /* override uid returned from server */
32#define CIFS_MOUNT_OVERR_GID 0x800 /* override gid returned from server */ 32#define CIFS_MOUNT_OVERR_GID 0x800 /* override gid returned from server */
33#define CIFS_MOUNT_DYNPERM 0x1000 /* allow in-memory only mode setting */
33 34
34struct cifs_sb_info { 35struct cifs_sb_info {
35 struct cifsTconInfo *tcon; /* primary mount */ 36 struct cifsTconInfo *tcon; /* primary mount */
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 427a7c695896..5df93fd6303f 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * fs/cifs/cifsfs.c 2 * fs/cifs/cifsfs.c
3 * 3 *
4 * Copyright (C) International Business Machines Corp., 2002,2007 4 * Copyright (C) International Business Machines Corp., 2002,2008
5 * Author(s): Steve French (sfrench@us.ibm.com) 5 * Author(s): Steve French (sfrench@us.ibm.com)
6 * 6 *
7 * Common Internet FileSystem (CIFS) client 7 * Common Internet FileSystem (CIFS) client
@@ -353,9 +353,41 @@ cifs_show_options(struct seq_file *s, struct vfsmount *m)
353 if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_OVERR_GID) || 353 if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_OVERR_GID) ||
354 !(cifs_sb->tcon->unix_ext)) 354 !(cifs_sb->tcon->unix_ext))
355 seq_printf(s, ",gid=%d", cifs_sb->mnt_gid); 355 seq_printf(s, ",gid=%d", cifs_sb->mnt_gid);
356 if (!cifs_sb->tcon->unix_ext) {
357 seq_printf(s, ",file_mode=0%o,dir_mode=0%o",
358 cifs_sb->mnt_file_mode,
359 cifs_sb->mnt_dir_mode);
360 }
361 if (cifs_sb->tcon->seal)
362 seq_printf(s, ",seal");
363 if (cifs_sb->tcon->nocase)
364 seq_printf(s, ",nocase");
365 if (cifs_sb->tcon->retry)
366 seq_printf(s, ",hard");
356 } 367 }
357 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS) 368 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS)
358 seq_printf(s, ",posixpaths"); 369 seq_printf(s, ",posixpaths");
370 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID)
371 seq_printf(s, ",setuids");
372 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM)
373 seq_printf(s, ",serverino");
374 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DIRECT_IO)
375 seq_printf(s, ",directio");
376 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_XATTR)
377 seq_printf(s, ",nouser_xattr");
378 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR)
379 seq_printf(s, ",mapchars");
380 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL)
381 seq_printf(s, ",sfu");
382 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL)
383 seq_printf(s, ",nobrl");
384 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL)
385 seq_printf(s, ",cifsacl");
386 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DYNPERM)
387 seq_printf(s, ",dynperm");
388 if (m->mnt_sb->s_flags & MS_POSIXACL)
389 seq_printf(s, ",acl");
390
359 seq_printf(s, ",rsize=%d", cifs_sb->rsize); 391 seq_printf(s, ",rsize=%d", cifs_sb->rsize);
360 seq_printf(s, ",wsize=%d", cifs_sb->wsize); 392 seq_printf(s, ",wsize=%d", cifs_sb->wsize);
361 } 393 }
@@ -657,7 +689,7 @@ const struct file_operations cifs_file_ops = {
657 .splice_read = generic_file_splice_read, 689 .splice_read = generic_file_splice_read,
658 .llseek = cifs_llseek, 690 .llseek = cifs_llseek,
659#ifdef CONFIG_CIFS_POSIX 691#ifdef CONFIG_CIFS_POSIX
660 .ioctl = cifs_ioctl, 692 .unlocked_ioctl = cifs_ioctl,
661#endif /* CONFIG_CIFS_POSIX */ 693#endif /* CONFIG_CIFS_POSIX */
662 694
663#ifdef CONFIG_CIFS_EXPERIMENTAL 695#ifdef CONFIG_CIFS_EXPERIMENTAL
@@ -677,7 +709,7 @@ const struct file_operations cifs_file_direct_ops = {
677 .flush = cifs_flush, 709 .flush = cifs_flush,
678 .splice_read = generic_file_splice_read, 710 .splice_read = generic_file_splice_read,
679#ifdef CONFIG_CIFS_POSIX 711#ifdef CONFIG_CIFS_POSIX
680 .ioctl = cifs_ioctl, 712 .unlocked_ioctl = cifs_ioctl,
681#endif /* CONFIG_CIFS_POSIX */ 713#endif /* CONFIG_CIFS_POSIX */
682 .llseek = cifs_llseek, 714 .llseek = cifs_llseek,
683#ifdef CONFIG_CIFS_EXPERIMENTAL 715#ifdef CONFIG_CIFS_EXPERIMENTAL
@@ -697,7 +729,7 @@ const struct file_operations cifs_file_nobrl_ops = {
697 .splice_read = generic_file_splice_read, 729 .splice_read = generic_file_splice_read,
698 .llseek = cifs_llseek, 730 .llseek = cifs_llseek,
699#ifdef CONFIG_CIFS_POSIX 731#ifdef CONFIG_CIFS_POSIX
700 .ioctl = cifs_ioctl, 732 .unlocked_ioctl = cifs_ioctl,
701#endif /* CONFIG_CIFS_POSIX */ 733#endif /* CONFIG_CIFS_POSIX */
702 734
703#ifdef CONFIG_CIFS_EXPERIMENTAL 735#ifdef CONFIG_CIFS_EXPERIMENTAL
@@ -716,7 +748,7 @@ const struct file_operations cifs_file_direct_nobrl_ops = {
716 .flush = cifs_flush, 748 .flush = cifs_flush,
717 .splice_read = generic_file_splice_read, 749 .splice_read = generic_file_splice_read,
718#ifdef CONFIG_CIFS_POSIX 750#ifdef CONFIG_CIFS_POSIX
719 .ioctl = cifs_ioctl, 751 .unlocked_ioctl = cifs_ioctl,
720#endif /* CONFIG_CIFS_POSIX */ 752#endif /* CONFIG_CIFS_POSIX */
721 .llseek = cifs_llseek, 753 .llseek = cifs_llseek,
722#ifdef CONFIG_CIFS_EXPERIMENTAL 754#ifdef CONFIG_CIFS_EXPERIMENTAL
@@ -731,7 +763,7 @@ const struct file_operations cifs_dir_ops = {
731#ifdef CONFIG_CIFS_EXPERIMENTAL 763#ifdef CONFIG_CIFS_EXPERIMENTAL
732 .dir_notify = cifs_dir_notify, 764 .dir_notify = cifs_dir_notify,
733#endif /* CONFIG_CIFS_EXPERIMENTAL */ 765#endif /* CONFIG_CIFS_EXPERIMENTAL */
734 .ioctl = cifs_ioctl, 766 .unlocked_ioctl = cifs_ioctl,
735}; 767};
736 768
737static void 769static void
diff --git a/fs/cifs/cifsfs.h b/fs/cifs/cifsfs.h
index cd1301a09b3b..25a6cbd15529 100644
--- a/fs/cifs/cifsfs.h
+++ b/fs/cifs/cifsfs.h
@@ -95,8 +95,7 @@ extern int cifs_setxattr(struct dentry *, const char *, const void *,
95 size_t, int); 95 size_t, int);
96extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t); 96extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t);
97extern ssize_t cifs_listxattr(struct dentry *, char *, size_t); 97extern ssize_t cifs_listxattr(struct dentry *, char *, size_t);
98extern int cifs_ioctl(struct inode *inode, struct file *filep, 98extern long cifs_ioctl(struct file *filep, unsigned int cmd, unsigned long arg);
99 unsigned int command, unsigned long arg);
100 99
101#ifdef CONFIG_CIFS_EXPERIMENTAL 100#ifdef CONFIG_CIFS_EXPERIMENTAL
102extern const struct export_operations cifs_export_ops; 101extern const struct export_operations cifs_export_ops;
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index b7d9f698e63e..08914053242b 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -281,6 +281,7 @@ struct cifsTconInfo {
281 bool ipc:1; /* set if connection to IPC$ eg for RPC/PIPES */ 281 bool ipc:1; /* set if connection to IPC$ eg for RPC/PIPES */
282 bool retry:1; 282 bool retry:1;
283 bool nocase:1; 283 bool nocase:1;
284 bool seal:1; /* transport encryption for this mounted share */
284 bool unix_ext:1; /* if false disable Linux extensions to CIFS protocol 285 bool unix_ext:1; /* if false disable Linux extensions to CIFS protocol
285 for this mount even if server would support */ 286 for this mount even if server would support */
286 /* BB add field for back pointer to sb struct(s)? */ 287 /* BB add field for back pointer to sb struct(s)? */
diff --git a/fs/cifs/cifspdu.h b/fs/cifs/cifspdu.h
index c43bf4b7a556..65d58b4e6a61 100644
--- a/fs/cifs/cifspdu.h
+++ b/fs/cifs/cifspdu.h
@@ -1904,19 +1904,26 @@ typedef struct smb_com_transaction2_get_dfs_refer_req {
1904 char RequestFileName[1]; 1904 char RequestFileName[1];
1905} __attribute__((packed)) TRANSACTION2_GET_DFS_REFER_REQ; 1905} __attribute__((packed)) TRANSACTION2_GET_DFS_REFER_REQ;
1906 1906
1907#define DFS_VERSION cpu_to_le16(0x0003)
1908
1909/* DFS server target type */
1910#define DFS_TYPE_LINK 0x0000 /* also for sysvol targets */
1911#define DFS_TYPE_ROOT 0x0001
1912
1913/* Referral Entry Flags */
1914#define DFS_NAME_LIST_REF 0x0200
1915
1907typedef struct dfs_referral_level_3 { 1916typedef struct dfs_referral_level_3 {
1908 __le16 VersionNumber; 1917 __le16 VersionNumber;
1909 __le16 ReferralSize; 1918 __le16 Size;
1910 __le16 ServerType; /* 0x0001 = CIFS server */ 1919 __le16 ServerType; /* 0x0001 = root targets; 0x0000 = link targets */
1911 __le16 ReferralFlags; /* or proximity - not clear which since it is 1920 __le16 ReferralEntryFlags; /* 0x0200 bit set only for domain
1912 always set to zero - SNIA spec says 0x01 1921 or DC referral responce */
1913 means strip off PathConsumed chars before 1922 __le32 TimeToLive;
1914 submitting RequestFileName to remote node */
1915 __le16 TimeToLive;
1916 __le16 Proximity;
1917 __le16 DfsPathOffset; 1923 __le16 DfsPathOffset;
1918 __le16 DfsAlternatePathOffset; 1924 __le16 DfsAlternatePathOffset;
1919 __le16 NetworkAddressOffset; 1925 __le16 NetworkAddressOffset; /* offset of the link target */
1926 __le16 ServiceSiteGuid;
1920} __attribute__((packed)) REFERRAL3; 1927} __attribute__((packed)) REFERRAL3;
1921 1928
1922typedef struct smb_com_transaction_get_dfs_refer_rsp { 1929typedef struct smb_com_transaction_get_dfs_refer_rsp {
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
index d481f6c5a2be..b9f5e935f821 100644
--- a/fs/cifs/cifsproto.h
+++ b/fs/cifs/cifsproto.h
@@ -93,7 +93,7 @@ extern struct timespec cnvrtDosUnixTm(__u16 date, __u16 time);
93 93
94extern int cifs_get_inode_info(struct inode **pinode, 94extern int cifs_get_inode_info(struct inode **pinode,
95 const unsigned char *search_path, 95 const unsigned char *search_path,
96 FILE_ALL_INFO * pfile_info, 96 FILE_ALL_INFO *pfile_info,
97 struct super_block *sb, int xid, const __u16 *pfid); 97 struct super_block *sb, int xid, const __u16 *pfid);
98extern int cifs_get_inode_info_unix(struct inode **pinode, 98extern int cifs_get_inode_info_unix(struct inode **pinode,
99 const unsigned char *search_path, 99 const unsigned char *search_path,
@@ -130,7 +130,7 @@ extern int CIFSFindClose(const int, struct cifsTconInfo *tcon,
130 130
131extern int CIFSSMBQPathInfo(const int xid, struct cifsTconInfo *tcon, 131extern int CIFSSMBQPathInfo(const int xid, struct cifsTconInfo *tcon,
132 const unsigned char *searchName, 132 const unsigned char *searchName,
133 FILE_ALL_INFO * findData, 133 FILE_ALL_INFO *findData,
134 int legacy /* whether to use old info level */, 134 int legacy /* whether to use old info level */,
135 const struct nls_table *nls_codepage, int remap); 135 const struct nls_table *nls_codepage, int remap);
136extern int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon, 136extern int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon,
@@ -141,18 +141,15 @@ extern int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon,
141extern int CIFSSMBUnixQPathInfo(const int xid, 141extern int CIFSSMBUnixQPathInfo(const int xid,
142 struct cifsTconInfo *tcon, 142 struct cifsTconInfo *tcon,
143 const unsigned char *searchName, 143 const unsigned char *searchName,
144 FILE_UNIX_BASIC_INFO * pFindData, 144 FILE_UNIX_BASIC_INFO *pFindData,
145 const struct nls_table *nls_codepage, int remap); 145 const struct nls_table *nls_codepage, int remap);
146 146
147extern int CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses, 147extern int CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses,
148 const unsigned char *searchName, 148 const unsigned char *searchName,
149 unsigned char **targetUNCs, 149 struct dfs_info3_param **target_nodes,
150 unsigned int *number_of_UNC_in_array, 150 unsigned int *number_of_nodes_in_array,
151 const struct nls_table *nls_codepage, int remap); 151 const struct nls_table *nls_codepage, int remap);
152 152
153extern int connect_to_dfs_path(int xid, struct cifsSesInfo *pSesInfo,
154 const char *old_path,
155 const struct nls_table *nls_codepage, int remap);
156extern int get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, 153extern int get_dfs_path(int xid, struct cifsSesInfo *pSesInfo,
157 const char *old_path, 154 const char *old_path,
158 const struct nls_table *nls_codepage, 155 const struct nls_table *nls_codepage,
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index 95fbba4ea7d4..7b9938445b07 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -81,6 +81,40 @@ static struct {
81#endif /* CONFIG_CIFS_WEAK_PW_HASH */ 81#endif /* CONFIG_CIFS_WEAK_PW_HASH */
82#endif /* CIFS_POSIX */ 82#endif /* CIFS_POSIX */
83 83
84/* Allocates buffer into dst and copies smb string from src to it.
85 * caller is responsible for freeing dst if function returned 0.
86 * returns:
87 * on success - 0
88 * on failure - errno
89 */
90static int
91cifs_strncpy_to_host(char **dst, const char *src, const int maxlen,
92 const bool is_unicode, const struct nls_table *nls_codepage)
93{
94 int plen;
95
96 if (is_unicode) {
97 plen = UniStrnlen((wchar_t *)src, maxlen);
98 *dst = kmalloc(plen + 2, GFP_KERNEL);
99 if (!*dst)
100 goto cifs_strncpy_to_host_ErrExit;
101 cifs_strfromUCS_le(*dst, (__le16 *)src, plen, nls_codepage);
102 } else {
103 plen = strnlen(src, maxlen);
104 *dst = kmalloc(plen + 2, GFP_KERNEL);
105 if (!*dst)
106 goto cifs_strncpy_to_host_ErrExit;
107 strncpy(*dst, src, plen);
108 }
109 (*dst)[plen] = 0;
110 (*dst)[plen+1] = 0; /* harmless for ASCII case, needed for Unicode */
111 return 0;
112
113cifs_strncpy_to_host_ErrExit:
114 cERROR(1, ("Failed to allocate buffer for string\n"));
115 return -ENOMEM;
116}
117
84 118
85/* Mark as invalid, all open files on tree connections since they 119/* Mark as invalid, all open files on tree connections since they
86 were closed when session to server was lost */ 120 were closed when session to server was lost */
@@ -1166,6 +1200,20 @@ static __u16 convert_disposition(int disposition)
1166 return ofun; 1200 return ofun;
1167} 1201}
1168 1202
1203static int
1204access_flags_to_smbopen_mode(const int access_flags)
1205{
1206 int masked_flags = access_flags & (GENERIC_READ | GENERIC_WRITE);
1207
1208 if (masked_flags == GENERIC_READ)
1209 return SMBOPEN_READ;
1210 else if (masked_flags == GENERIC_WRITE)
1211 return SMBOPEN_WRITE;
1212
1213 /* just go for read/write */
1214 return SMBOPEN_READWRITE;
1215}
1216
1169int 1217int
1170SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon, 1218SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon,
1171 const char *fileName, const int openDisposition, 1219 const char *fileName, const int openDisposition,
@@ -1207,13 +1255,7 @@ OldOpenRetry:
1207 pSMB->OpenFlags = cpu_to_le16(REQ_BATCHOPLOCK); 1255 pSMB->OpenFlags = cpu_to_le16(REQ_BATCHOPLOCK);
1208 1256
1209 pSMB->OpenFlags |= cpu_to_le16(REQ_MORE_INFO); 1257 pSMB->OpenFlags |= cpu_to_le16(REQ_MORE_INFO);
1210 /* BB fixme add conversion for access_flags to bits 0 - 2 of mode */ 1258 pSMB->Mode = cpu_to_le16(access_flags_to_smbopen_mode(access_flags));
1211 /* 0 = read
1212 1 = write
1213 2 = rw
1214 3 = execute
1215 */
1216 pSMB->Mode = cpu_to_le16(2);
1217 pSMB->Mode |= cpu_to_le16(0x40); /* deny none */ 1259 pSMB->Mode |= cpu_to_le16(0x40); /* deny none */
1218 /* set file as system file if special file such 1260 /* set file as system file if special file such
1219 as fifo and server expecting SFU style and 1261 as fifo and server expecting SFU style and
@@ -1247,7 +1289,7 @@ OldOpenRetry:
1247 } else { 1289 } else {
1248 /* BB verify if wct == 15 */ 1290 /* BB verify if wct == 15 */
1249 1291
1250/* *pOplock = pSMBr->OplockLevel; */ /* BB take from action field BB */ 1292/* *pOplock = pSMBr->OplockLevel; */ /* BB take from action field*/
1251 1293
1252 *netfid = pSMBr->Fid; /* cifs fid stays in le */ 1294 *netfid = pSMBr->Fid; /* cifs fid stays in le */
1253 /* Let caller know file was created so we can set the mode. */ 1295 /* Let caller know file was created so we can set the mode. */
@@ -1767,7 +1809,7 @@ CIFSSMBPosixLock(const int xid, struct cifsTconInfo *tcon,
1767 cFYI(1, ("Posix Lock")); 1809 cFYI(1, ("Posix Lock"));
1768 1810
1769 if (pLockData == NULL) 1811 if (pLockData == NULL)
1770 return EINVAL; 1812 return -EINVAL;
1771 1813
1772 rc = small_smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB); 1814 rc = small_smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB);
1773 1815
@@ -1944,7 +1986,7 @@ renameRetry:
1944 /* protocol requires ASCII signature byte on Unicode string */ 1986 /* protocol requires ASCII signature byte on Unicode string */
1945 pSMB->OldFileName[name_len + 1] = 0x00; 1987 pSMB->OldFileName[name_len + 1] = 0x00;
1946 name_len2 = 1988 name_len2 =
1947 cifsConvertToUCS((__le16 *) &pSMB->OldFileName[name_len + 2], 1989 cifsConvertToUCS((__le16 *)&pSMB->OldFileName[name_len + 2],
1948 toName, PATH_MAX, nls_codepage, remap); 1990 toName, PATH_MAX, nls_codepage, remap);
1949 name_len2 += 1 /* trailing null */ + 1 /* Signature word */ ; 1991 name_len2 += 1 /* trailing null */ + 1 /* Signature word */ ;
1950 name_len2 *= 2; /* convert to bytes */ 1992 name_len2 *= 2; /* convert to bytes */
@@ -2925,7 +2967,8 @@ setAclRetry:
2925 } 2967 }
2926 params = 6 + name_len; 2968 params = 6 + name_len;
2927 pSMB->MaxParameterCount = cpu_to_le16(2); 2969 pSMB->MaxParameterCount = cpu_to_le16(2);
2928 pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB size from sess */ 2970 /* BB find max SMB size from sess */
2971 pSMB->MaxDataCount = cpu_to_le16(1000);
2929 pSMB->MaxSetupCount = 0; 2972 pSMB->MaxSetupCount = 0;
2930 pSMB->Reserved = 0; 2973 pSMB->Reserved = 0;
2931 pSMB->Flags = 0; 2974 pSMB->Flags = 0;
@@ -3322,7 +3365,8 @@ QPathInfoRetry:
3322 params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */; 3365 params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */;
3323 pSMB->TotalDataCount = 0; 3366 pSMB->TotalDataCount = 0;
3324 pSMB->MaxParameterCount = cpu_to_le16(2); 3367 pSMB->MaxParameterCount = cpu_to_le16(2);
3325 pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */ 3368 /* BB find exact max SMB PDU from sess structure BB */
3369 pSMB->MaxDataCount = cpu_to_le16(4000);
3326 pSMB->MaxSetupCount = 0; 3370 pSMB->MaxSetupCount = 0;
3327 pSMB->Reserved = 0; 3371 pSMB->Reserved = 0;
3328 pSMB->Flags = 0; 3372 pSMB->Flags = 0;
@@ -3388,7 +3432,7 @@ QPathInfoRetry:
3388int 3432int
3389CIFSSMBUnixQPathInfo(const int xid, struct cifsTconInfo *tcon, 3433CIFSSMBUnixQPathInfo(const int xid, struct cifsTconInfo *tcon,
3390 const unsigned char *searchName, 3434 const unsigned char *searchName,
3391 FILE_UNIX_BASIC_INFO * pFindData, 3435 FILE_UNIX_BASIC_INFO *pFindData,
3392 const struct nls_table *nls_codepage, int remap) 3436 const struct nls_table *nls_codepage, int remap)
3393{ 3437{
3394/* SMB_QUERY_FILE_UNIX_BASIC */ 3438/* SMB_QUERY_FILE_UNIX_BASIC */
@@ -3679,6 +3723,7 @@ int CIFSFindNext(const int xid, struct cifsTconInfo *tcon,
3679 if (rc) { 3723 if (rc) {
3680 if (rc == -EBADF) { 3724 if (rc == -EBADF) {
3681 psrch_inf->endOfSearch = true; 3725 psrch_inf->endOfSearch = true;
3726 cifs_buf_release(pSMB);
3682 rc = 0; /* search probably was closed at end of search*/ 3727 rc = 0; /* search probably was closed at end of search*/
3683 } else 3728 } else
3684 cFYI(1, ("FindNext returned = %d", rc)); 3729 cFYI(1, ("FindNext returned = %d", rc));
@@ -3856,25 +3901,112 @@ GetInodeNumOut:
3856 return rc; 3901 return rc;
3857} 3902}
3858 3903
3904/* parses DFS refferal V3 structure
3905 * caller is responsible for freeing target_nodes
3906 * returns:
3907 * on success - 0
3908 * on failure - errno
3909 */
3910static int
3911parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
3912 unsigned int *num_of_nodes,
3913 struct dfs_info3_param **target_nodes,
3914 const struct nls_table *nls_codepage)
3915{
3916 int i, rc = 0;
3917 char *data_end;
3918 bool is_unicode;
3919 struct dfs_referral_level_3 *ref;
3920
3921 is_unicode = pSMBr->hdr.Flags2 & SMBFLG2_UNICODE;
3922 *num_of_nodes = le16_to_cpu(pSMBr->NumberOfReferrals);
3923
3924 if (*num_of_nodes < 1) {
3925 cERROR(1, ("num_referrals: must be at least > 0,"
3926 "but we get num_referrals = %d\n", *num_of_nodes));
3927 rc = -EINVAL;
3928 goto parse_DFS_referrals_exit;
3929 }
3930
3931 ref = (struct dfs_referral_level_3 *) &(pSMBr->referrals);
3932 if (ref->VersionNumber != 3) {
3933 cERROR(1, ("Referrals of V%d version are not supported,"
3934 "should be V3", ref->VersionNumber));
3935 rc = -EINVAL;
3936 goto parse_DFS_referrals_exit;
3937 }
3938
3939 /* get the upper boundary of the resp buffer */
3940 data_end = (char *)(&(pSMBr->PathConsumed)) +
3941 le16_to_cpu(pSMBr->t2.DataCount);
3942
3943 cFYI(1, ("num_referrals: %d dfs flags: 0x%x ... \n",
3944 *num_of_nodes,
3945 le16_to_cpu(pSMBr->DFSFlags)));
3946
3947 *target_nodes = kzalloc(sizeof(struct dfs_info3_param) *
3948 *num_of_nodes, GFP_KERNEL);
3949 if (*target_nodes == NULL) {
3950 cERROR(1, ("Failed to allocate buffer for target_nodes\n"));
3951 rc = -ENOMEM;
3952 goto parse_DFS_referrals_exit;
3953 }
3954
3955 /* collect neccessary data from referrals */
3956 for (i = 0; i < *num_of_nodes; i++) {
3957 char *temp;
3958 int max_len;
3959 struct dfs_info3_param *node = (*target_nodes)+i;
3960
3961 node->flags = le16_to_cpu(pSMBr->DFSFlags);
3962 node->path_consumed = le16_to_cpu(pSMBr->PathConsumed);
3963 node->server_type = le16_to_cpu(ref->ServerType);
3964 node->ref_flag = le16_to_cpu(ref->ReferralEntryFlags);
3965
3966 /* copy DfsPath */
3967 temp = (char *)ref + le16_to_cpu(ref->DfsPathOffset);
3968 max_len = data_end - temp;
3969 rc = cifs_strncpy_to_host(&(node->path_name), temp,
3970 max_len, is_unicode, nls_codepage);
3971 if (rc)
3972 goto parse_DFS_referrals_exit;
3973
3974 /* copy link target UNC */
3975 temp = (char *)ref + le16_to_cpu(ref->NetworkAddressOffset);
3976 max_len = data_end - temp;
3977 rc = cifs_strncpy_to_host(&(node->node_name), temp,
3978 max_len, is_unicode, nls_codepage);
3979 if (rc)
3980 goto parse_DFS_referrals_exit;
3981
3982 ref += ref->Size;
3983 }
3984
3985parse_DFS_referrals_exit:
3986 if (rc) {
3987 free_dfs_info_array(*target_nodes, *num_of_nodes);
3988 *target_nodes = NULL;
3989 *num_of_nodes = 0;
3990 }
3991 return rc;
3992}
3993
3859int 3994int
3860CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses, 3995CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses,
3861 const unsigned char *searchName, 3996 const unsigned char *searchName,
3862 unsigned char **targetUNCs, 3997 struct dfs_info3_param **target_nodes,
3863 unsigned int *number_of_UNC_in_array, 3998 unsigned int *num_of_nodes,
3864 const struct nls_table *nls_codepage, int remap) 3999 const struct nls_table *nls_codepage, int remap)
3865{ 4000{
3866/* TRANS2_GET_DFS_REFERRAL */ 4001/* TRANS2_GET_DFS_REFERRAL */
3867 TRANSACTION2_GET_DFS_REFER_REQ *pSMB = NULL; 4002 TRANSACTION2_GET_DFS_REFER_REQ *pSMB = NULL;
3868 TRANSACTION2_GET_DFS_REFER_RSP *pSMBr = NULL; 4003 TRANSACTION2_GET_DFS_REFER_RSP *pSMBr = NULL;
3869 struct dfs_referral_level_3 *referrals = NULL;
3870 int rc = 0; 4004 int rc = 0;
3871 int bytes_returned; 4005 int bytes_returned;
3872 int name_len; 4006 int name_len;
3873 unsigned int i;
3874 char *temp;
3875 __u16 params, byte_count; 4007 __u16 params, byte_count;
3876 *number_of_UNC_in_array = 0; 4008 *num_of_nodes = 0;
3877 *targetUNCs = NULL; 4009 *target_nodes = NULL;
3878 4010
3879 cFYI(1, ("In GetDFSRefer the path %s", searchName)); 4011 cFYI(1, ("In GetDFSRefer the path %s", searchName));
3880 if (ses == NULL) 4012 if (ses == NULL)
@@ -3921,7 +4053,8 @@ getDFSRetry:
3921 pSMB->DataCount = 0; 4053 pSMB->DataCount = 0;
3922 pSMB->DataOffset = 0; 4054 pSMB->DataOffset = 0;
3923 pSMB->MaxParameterCount = 0; 4055 pSMB->MaxParameterCount = 0;
3924 pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */ 4056 /* BB find exact max SMB PDU from sess structure BB */
4057 pSMB->MaxDataCount = cpu_to_le16(4000);
3925 pSMB->MaxSetupCount = 0; 4058 pSMB->MaxSetupCount = 0;
3926 pSMB->Reserved = 0; 4059 pSMB->Reserved = 0;
3927 pSMB->Flags = 0; 4060 pSMB->Flags = 0;
@@ -3943,100 +4076,24 @@ getDFSRetry:
3943 (struct smb_hdr *) pSMBr, &bytes_returned, 0); 4076 (struct smb_hdr *) pSMBr, &bytes_returned, 0);
3944 if (rc) { 4077 if (rc) {
3945 cFYI(1, ("Send error in GetDFSRefer = %d", rc)); 4078 cFYI(1, ("Send error in GetDFSRefer = %d", rc));
3946 } else { /* decode response */ 4079 goto GetDFSRefExit;
3947/* BB Add logic to parse referrals here */ 4080 }
3948 rc = validate_t2((struct smb_t2_rsp *)pSMBr); 4081 rc = validate_t2((struct smb_t2_rsp *)pSMBr);
3949 4082
3950 /* BB Also check if enough total bytes returned? */ 4083 /* BB Also check if enough total bytes returned? */
3951 if (rc || (pSMBr->ByteCount < 17)) 4084 if (rc || (pSMBr->ByteCount < 17)) {
3952 rc = -EIO; /* bad smb */ 4085 rc = -EIO; /* bad smb */
3953 else { 4086 goto GetDFSRefExit;
3954 __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset); 4087 }
3955 __u16 data_count = le16_to_cpu(pSMBr->t2.DataCount);
3956 4088
3957 cFYI(1, 4089 cFYI(1, ("Decoding GetDFSRefer response BCC: %d Offset %d",
3958 ("Decoding GetDFSRefer response BCC: %d Offset %d", 4090 pSMBr->ByteCount,
3959 pSMBr->ByteCount, data_offset)); 4091 le16_to_cpu(pSMBr->t2.DataOffset)));
3960 referrals =
3961 (struct dfs_referral_level_3 *)
3962 (8 /* sizeof start of data block */ +
3963 data_offset +
3964 (char *) &pSMBr->hdr.Protocol);
3965 cFYI(1, ("num_referrals: %d dfs flags: 0x%x ... \n"
3966 "for referral one refer size: 0x%x srv "
3967 "type: 0x%x refer flags: 0x%x ttl: 0x%x",
3968 le16_to_cpu(pSMBr->NumberOfReferrals),
3969 le16_to_cpu(pSMBr->DFSFlags),
3970 le16_to_cpu(referrals->ReferralSize),
3971 le16_to_cpu(referrals->ServerType),
3972 le16_to_cpu(referrals->ReferralFlags),
3973 le16_to_cpu(referrals->TimeToLive)));
3974 /* BB This field is actually two bytes in from start of
3975 data block so we could do safety check that DataBlock
3976 begins at address of pSMBr->NumberOfReferrals */
3977 *number_of_UNC_in_array =
3978 le16_to_cpu(pSMBr->NumberOfReferrals);
3979
3980 /* BB Fix below so can return more than one referral */
3981 if (*number_of_UNC_in_array > 1)
3982 *number_of_UNC_in_array = 1;
3983
3984 /* get the length of the strings describing refs */
3985 name_len = 0;
3986 for (i = 0; i < *number_of_UNC_in_array; i++) {
3987 /* make sure that DfsPathOffset not past end */
3988 __u16 offset =
3989 le16_to_cpu(referrals->DfsPathOffset);
3990 if (offset > data_count) {
3991 /* if invalid referral, stop here and do
3992 not try to copy any more */
3993 *number_of_UNC_in_array = i;
3994 break;
3995 }
3996 temp = ((char *)referrals) + offset;
3997 4092
3998 if (pSMBr->hdr.Flags2 & SMBFLG2_UNICODE) { 4093 /* parse returned result into more usable form */
3999 name_len += UniStrnlen((wchar_t *)temp, 4094 rc = parse_DFS_referrals(pSMBr, num_of_nodes,
4000 data_count); 4095 target_nodes, nls_codepage);
4001 } else {
4002 name_len += strnlen(temp, data_count);
4003 }
4004 referrals++;
4005 /* BB add check that referral pointer does
4006 not fall off end PDU */
4007 }
4008 /* BB add check for name_len bigger than bcc */
4009 *targetUNCs =
4010 kmalloc(name_len+1+(*number_of_UNC_in_array),
4011 GFP_KERNEL);
4012 if (*targetUNCs == NULL) {
4013 rc = -ENOMEM;
4014 goto GetDFSRefExit;
4015 }
4016 /* copy the ref strings */
4017 referrals = (struct dfs_referral_level_3 *)
4018 (8 /* sizeof data hdr */ + data_offset +
4019 (char *) &pSMBr->hdr.Protocol);
4020
4021 for (i = 0; i < *number_of_UNC_in_array; i++) {
4022 temp = ((char *)referrals) +
4023 le16_to_cpu(referrals->DfsPathOffset);
4024 if (pSMBr->hdr.Flags2 & SMBFLG2_UNICODE) {
4025 cifs_strfromUCS_le(*targetUNCs,
4026 (__le16 *) temp,
4027 name_len,
4028 nls_codepage);
4029 } else {
4030 strncpy(*targetUNCs, temp, name_len);
4031 }
4032 /* BB update target_uncs pointers */
4033 referrals++;
4034 }
4035 temp = *targetUNCs;
4036 temp[name_len] = 0;
4037 }
4038 4096
4039 }
4040GetDFSRefExit: 4097GetDFSRefExit:
4041 if (pSMB) 4098 if (pSMB)
4042 cifs_buf_release(pSMB); 4099 cifs_buf_release(pSMB);
@@ -4229,7 +4286,8 @@ QFSAttributeRetry:
4229 params = 2; /* level */ 4286 params = 2; /* level */
4230 pSMB->TotalDataCount = 0; 4287 pSMB->TotalDataCount = 0;
4231 pSMB->MaxParameterCount = cpu_to_le16(2); 4288 pSMB->MaxParameterCount = cpu_to_le16(2);
4232 pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */ 4289 /* BB find exact max SMB PDU from sess structure BB */
4290 pSMB->MaxDataCount = cpu_to_le16(1000);
4233 pSMB->MaxSetupCount = 0; 4291 pSMB->MaxSetupCount = 0;
4234 pSMB->Reserved = 0; 4292 pSMB->Reserved = 0;
4235 pSMB->Flags = 0; 4293 pSMB->Flags = 0;
@@ -4298,7 +4356,8 @@ QFSDeviceRetry:
4298 params = 2; /* level */ 4356 params = 2; /* level */
4299 pSMB->TotalDataCount = 0; 4357 pSMB->TotalDataCount = 0;
4300 pSMB->MaxParameterCount = cpu_to_le16(2); 4358 pSMB->MaxParameterCount = cpu_to_le16(2);
4301 pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */ 4359 /* BB find exact max SMB PDU from sess structure BB */
4360 pSMB->MaxDataCount = cpu_to_le16(1000);
4302 pSMB->MaxSetupCount = 0; 4361 pSMB->MaxSetupCount = 0;
4303 pSMB->Reserved = 0; 4362 pSMB->Reserved = 0;
4304 pSMB->Flags = 0; 4363 pSMB->Flags = 0;
@@ -4369,7 +4428,8 @@ QFSUnixRetry:
4369 pSMB->DataCount = 0; 4428 pSMB->DataCount = 0;
4370 pSMB->DataOffset = 0; 4429 pSMB->DataOffset = 0;
4371 pSMB->MaxParameterCount = cpu_to_le16(2); 4430 pSMB->MaxParameterCount = cpu_to_le16(2);
4372 pSMB->MaxDataCount = cpu_to_le16(100); /* BB find exact max SMB PDU from sess structure BB */ 4431 /* BB find exact max SMB PDU from sess structure BB */
4432 pSMB->MaxDataCount = cpu_to_le16(100);
4373 pSMB->MaxSetupCount = 0; 4433 pSMB->MaxSetupCount = 0;
4374 pSMB->Reserved = 0; 4434 pSMB->Reserved = 0;
4375 pSMB->Flags = 0; 4435 pSMB->Flags = 0;
@@ -4444,7 +4504,8 @@ SETFSUnixRetry:
4444 offset = param_offset + params; 4504 offset = param_offset + params;
4445 4505
4446 pSMB->MaxParameterCount = cpu_to_le16(4); 4506 pSMB->MaxParameterCount = cpu_to_le16(4);
4447 pSMB->MaxDataCount = cpu_to_le16(100); /* BB find exact max SMB PDU from sess structure BB */ 4507 /* BB find exact max SMB PDU from sess structure BB */
4508 pSMB->MaxDataCount = cpu_to_le16(100);
4448 pSMB->SetupCount = 1; 4509 pSMB->SetupCount = 1;
4449 pSMB->Reserved3 = 0; 4510 pSMB->Reserved3 = 0;
4450 pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FS_INFORMATION); 4511 pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FS_INFORMATION);
@@ -4512,7 +4573,8 @@ QFSPosixRetry:
4512 pSMB->DataCount = 0; 4573 pSMB->DataCount = 0;
4513 pSMB->DataOffset = 0; 4574 pSMB->DataOffset = 0;
4514 pSMB->MaxParameterCount = cpu_to_le16(2); 4575 pSMB->MaxParameterCount = cpu_to_le16(2);
4515 pSMB->MaxDataCount = cpu_to_le16(100); /* BB find exact max SMB PDU from sess structure BB */ 4576 /* BB find exact max SMB PDU from sess structure BB */
4577 pSMB->MaxDataCount = cpu_to_le16(100);
4516 pSMB->MaxSetupCount = 0; 4578 pSMB->MaxSetupCount = 0;
4517 pSMB->Reserved = 0; 4579 pSMB->Reserved = 0;
4518 pSMB->Flags = 0; 4580 pSMB->Flags = 0;
@@ -4702,7 +4764,8 @@ CIFSSMBSetFileSize(const int xid, struct cifsTconInfo *tcon, __u64 size,
4702 4764
4703 count = sizeof(struct file_end_of_file_info); 4765 count = sizeof(struct file_end_of_file_info);
4704 pSMB->MaxParameterCount = cpu_to_le16(2); 4766 pSMB->MaxParameterCount = cpu_to_le16(2);
4705 pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB PDU from sess */ 4767 /* BB find exact max SMB PDU from sess structure BB */
4768 pSMB->MaxDataCount = cpu_to_le16(1000);
4706 pSMB->SetupCount = 1; 4769 pSMB->SetupCount = 1;
4707 pSMB->Reserved3 = 0; 4770 pSMB->Reserved3 = 0;
4708 pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FILE_INFORMATION); 4771 pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FILE_INFORMATION);
@@ -4789,7 +4852,8 @@ CIFSSMBSetFileTimes(const int xid, struct cifsTconInfo *tcon,
4789 4852
4790 count = sizeof(FILE_BASIC_INFO); 4853 count = sizeof(FILE_BASIC_INFO);
4791 pSMB->MaxParameterCount = cpu_to_le16(2); 4854 pSMB->MaxParameterCount = cpu_to_le16(2);
4792 pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB PDU from sess */ 4855 /* BB find max SMB PDU from sess */
4856 pSMB->MaxDataCount = cpu_to_le16(1000);
4793 pSMB->SetupCount = 1; 4857 pSMB->SetupCount = 1;
4794 pSMB->Reserved3 = 0; 4858 pSMB->Reserved3 = 0;
4795 pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FILE_INFORMATION); 4859 pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FILE_INFORMATION);
@@ -4856,7 +4920,8 @@ SetTimesRetry:
4856 params = 6 + name_len; 4920 params = 6 + name_len;
4857 count = sizeof(FILE_BASIC_INFO); 4921 count = sizeof(FILE_BASIC_INFO);
4858 pSMB->MaxParameterCount = cpu_to_le16(2); 4922 pSMB->MaxParameterCount = cpu_to_le16(2);
4859 pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */ 4923 /* BB find max SMB PDU from sess structure BB */
4924 pSMB->MaxDataCount = cpu_to_le16(1000);
4860 pSMB->MaxSetupCount = 0; 4925 pSMB->MaxSetupCount = 0;
4861 pSMB->Reserved = 0; 4926 pSMB->Reserved = 0;
4862 pSMB->Flags = 0; 4927 pSMB->Flags = 0;
@@ -4986,7 +5051,8 @@ setPermsRetry:
4986 params = 6 + name_len; 5051 params = 6 + name_len;
4987 count = sizeof(FILE_UNIX_BASIC_INFO); 5052 count = sizeof(FILE_UNIX_BASIC_INFO);
4988 pSMB->MaxParameterCount = cpu_to_le16(2); 5053 pSMB->MaxParameterCount = cpu_to_le16(2);
4989 pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */ 5054 /* BB find max SMB PDU from sess structure BB */
5055 pSMB->MaxDataCount = cpu_to_le16(1000);
4990 pSMB->MaxSetupCount = 0; 5056 pSMB->MaxSetupCount = 0;
4991 pSMB->Reserved = 0; 5057 pSMB->Reserved = 0;
4992 pSMB->Flags = 0; 5058 pSMB->Flags = 0;
@@ -5169,7 +5235,8 @@ QAllEAsRetry:
5169 params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */; 5235 params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */;
5170 pSMB->TotalDataCount = 0; 5236 pSMB->TotalDataCount = 0;
5171 pSMB->MaxParameterCount = cpu_to_le16(2); 5237 pSMB->MaxParameterCount = cpu_to_le16(2);
5172 pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */ 5238 /* BB find exact max SMB PDU from sess structure BB */
5239 pSMB->MaxDataCount = cpu_to_le16(4000);
5173 pSMB->MaxSetupCount = 0; 5240 pSMB->MaxSetupCount = 0;
5174 pSMB->Reserved = 0; 5241 pSMB->Reserved = 0;
5175 pSMB->Flags = 0; 5242 pSMB->Flags = 0;
@@ -5317,7 +5384,8 @@ QEARetry:
5317 params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */; 5384 params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */;
5318 pSMB->TotalDataCount = 0; 5385 pSMB->TotalDataCount = 0;
5319 pSMB->MaxParameterCount = cpu_to_le16(2); 5386 pSMB->MaxParameterCount = cpu_to_le16(2);
5320 pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */ 5387 /* BB find exact max SMB PDU from sess structure BB */
5388 pSMB->MaxDataCount = cpu_to_le16(4000);
5321 pSMB->MaxSetupCount = 0; 5389 pSMB->MaxSetupCount = 0;
5322 pSMB->Reserved = 0; 5390 pSMB->Reserved = 0;
5323 pSMB->Flags = 0; 5391 pSMB->Flags = 0;
@@ -5475,7 +5543,8 @@ SetEARetry:
5475 5543
5476 count = sizeof(*parm_data) + ea_value_len + name_len; 5544 count = sizeof(*parm_data) + ea_value_len + name_len;
5477 pSMB->MaxParameterCount = cpu_to_le16(2); 5545 pSMB->MaxParameterCount = cpu_to_le16(2);
5478 pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB size from sess */ 5546 /* BB find max SMB PDU from sess */
5547 pSMB->MaxDataCount = cpu_to_le16(1000);
5479 pSMB->MaxSetupCount = 0; 5548 pSMB->MaxSetupCount = 0;
5480 pSMB->Reserved = 0; 5549 pSMB->Reserved = 0;
5481 pSMB->Flags = 0; 5550 pSMB->Flags = 0;
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index f428bf3bf1a9..023434f72c15 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -60,7 +60,7 @@ struct smb_vol {
60 char *domainname; 60 char *domainname;
61 char *UNC; 61 char *UNC;
62 char *UNCip; 62 char *UNCip;
63 char *in6_addr; /* ipv6 address as human readable form of in6_addr */ 63 char *in6_addr; /* ipv6 address as human readable form of in6_addr */
64 char *iocharset; /* local code page for mapping to and from Unicode */ 64 char *iocharset; /* local code page for mapping to and from Unicode */
65 char source_rfc1001_name[16]; /* netbios name of client */ 65 char source_rfc1001_name[16]; /* netbios name of client */
66 char target_rfc1001_name[16]; /* netbios name of server for Win9x/ME */ 66 char target_rfc1001_name[16]; /* netbios name of server for Win9x/ME */
@@ -75,19 +75,21 @@ struct smb_vol {
75 bool setuids:1; 75 bool setuids:1;
76 bool override_uid:1; 76 bool override_uid:1;
77 bool override_gid:1; 77 bool override_gid:1;
78 bool dynperm:1;
78 bool noperm:1; 79 bool noperm:1;
79 bool no_psx_acl:1; /* set if posix acl support should be disabled */ 80 bool no_psx_acl:1; /* set if posix acl support should be disabled */
80 bool cifs_acl:1; 81 bool cifs_acl:1;
81 bool no_xattr:1; /* set if xattr (EA) support should be disabled*/ 82 bool no_xattr:1; /* set if xattr (EA) support should be disabled*/
82 bool server_ino:1; /* use inode numbers from server ie UniqueId */ 83 bool server_ino:1; /* use inode numbers from server ie UniqueId */
83 bool direct_io:1; 84 bool direct_io:1;
84 bool remap:1; /* set to remap seven reserved chars in filenames */ 85 bool remap:1; /* set to remap seven reserved chars in filenames */
85 bool posix_paths:1; /* unset to not ask for posix pathnames. */ 86 bool posix_paths:1; /* unset to not ask for posix pathnames. */
86 bool no_linux_ext:1; 87 bool no_linux_ext:1;
87 bool sfu_emul:1; 88 bool sfu_emul:1;
88 bool nullauth:1; /* attempt to authenticate with null user */ 89 bool nullauth:1; /* attempt to authenticate with null user */
89 unsigned nocase; /* request case insensitive filenames */ 90 bool nocase:1; /* request case insensitive filenames */
90 unsigned nobrl; /* disable sending byte range locks to srv */ 91 bool nobrl:1; /* disable sending byte range locks to srv */
92 bool seal:1; /* request transport encryption on share */
91 unsigned int rsize; 93 unsigned int rsize;
92 unsigned int wsize; 94 unsigned int wsize;
93 unsigned int sockopt; 95 unsigned int sockopt;
@@ -1246,6 +1248,10 @@ cifs_parse_mount_options(char *options, const char *devname,
1246 vol->setuids = 1; 1248 vol->setuids = 1;
1247 } else if (strnicmp(data, "nosetuids", 9) == 0) { 1249 } else if (strnicmp(data, "nosetuids", 9) == 0) {
1248 vol->setuids = 0; 1250 vol->setuids = 0;
1251 } else if (strnicmp(data, "dynperm", 7) == 0) {
1252 vol->dynperm = true;
1253 } else if (strnicmp(data, "nodynperm", 9) == 0) {
1254 vol->dynperm = false;
1249 } else if (strnicmp(data, "nohard", 6) == 0) { 1255 } else if (strnicmp(data, "nohard", 6) == 0) {
1250 vol->retry = 0; 1256 vol->retry = 0;
1251 } else if (strnicmp(data, "nosoft", 6) == 0) { 1257 } else if (strnicmp(data, "nosoft", 6) == 0) {
@@ -1268,8 +1274,12 @@ cifs_parse_mount_options(char *options, const char *devname,
1268 vol->no_psx_acl = 1; 1274 vol->no_psx_acl = 1;
1269 } else if (strnicmp(data, "sign", 4) == 0) { 1275 } else if (strnicmp(data, "sign", 4) == 0) {
1270 vol->secFlg |= CIFSSEC_MUST_SIGN; 1276 vol->secFlg |= CIFSSEC_MUST_SIGN;
1271/* } else if (strnicmp(data, "seal",4) == 0) { 1277 } else if (strnicmp(data, "seal", 4) == 0) {
1272 vol->secFlg |= CIFSSEC_MUST_SEAL; */ 1278 /* we do not do the following in secFlags because seal
1279 is a per tree connection (mount) not a per socket
1280 or per-smb connection option in the protocol */
1281 /* vol->secFlg |= CIFSSEC_MUST_SEAL; */
1282 vol->seal = 1;
1273 } else if (strnicmp(data, "direct", 6) == 0) { 1283 } else if (strnicmp(data, "direct", 6) == 0) {
1274 vol->direct_io = 1; 1284 vol->direct_io = 1;
1275 } else if (strnicmp(data, "forcedirectio", 13) == 0) { 1285 } else if (strnicmp(data, "forcedirectio", 13) == 0) {
@@ -1414,34 +1424,12 @@ find_unc(__be32 new_target_ip_addr, char *uncName, char *userName)
1414} 1424}
1415 1425
1416int 1426int
1417connect_to_dfs_path(int xid, struct cifsSesInfo *pSesInfo,
1418 const char *old_path, const struct nls_table *nls_codepage,
1419 int remap)
1420{
1421 struct dfs_info3_param *referrals = NULL;
1422 unsigned int num_referrals;
1423 int rc = 0;
1424
1425 rc = get_dfs_path(xid, pSesInfo, old_path, nls_codepage,
1426 &num_referrals, &referrals, remap);
1427
1428 /* BB Add in code to: if valid refrl, if not ip address contact
1429 the helper that resolves tcp names, mount to it, try to
1430 tcon to it unmount it if fail */
1431
1432 kfree(referrals);
1433
1434 return rc;
1435}
1436
1437int
1438get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, const char *old_path, 1427get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, const char *old_path,
1439 const struct nls_table *nls_codepage, unsigned int *pnum_referrals, 1428 const struct nls_table *nls_codepage, unsigned int *pnum_referrals,
1440 struct dfs_info3_param **preferrals, int remap) 1429 struct dfs_info3_param **preferrals, int remap)
1441{ 1430{
1442 char *temp_unc; 1431 char *temp_unc;
1443 int rc = 0; 1432 int rc = 0;
1444 unsigned char *targetUNCs;
1445 1433
1446 *pnum_referrals = 0; 1434 *pnum_referrals = 0;
1447 *preferrals = NULL; 1435 *preferrals = NULL;
@@ -1464,7 +1452,7 @@ get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, const char *old_path,
1464 kfree(temp_unc); 1452 kfree(temp_unc);
1465 } 1453 }
1466 if (rc == 0) 1454 if (rc == 0)
1467 rc = CIFSGetDFSRefer(xid, pSesInfo, old_path, &targetUNCs, 1455 rc = CIFSGetDFSRefer(xid, pSesInfo, old_path, preferrals,
1468 pnum_referrals, nls_codepage, remap); 1456 pnum_referrals, nls_codepage, remap);
1469 /* BB map targetUNCs to dfs_info3 structures, here or 1457 /* BB map targetUNCs to dfs_info3 structures, here or
1470 in CIFSGetDFSRefer BB */ 1458 in CIFSGetDFSRefer BB */
@@ -1815,7 +1803,7 @@ convert_delimiter(char *path, char delim)
1815 if (path == NULL) 1803 if (path == NULL)
1816 return; 1804 return;
1817 1805
1818 if (delim == '/') 1806 if (delim == '/')
1819 old_delim = '\\'; 1807 old_delim = '\\';
1820 else 1808 else
1821 old_delim = '/'; 1809 old_delim = '/';
@@ -2125,6 +2113,8 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
2125 cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_OVERR_UID; 2113 cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_OVERR_UID;
2126 if (volume_info.override_gid) 2114 if (volume_info.override_gid)
2127 cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_OVERR_GID; 2115 cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_OVERR_GID;
2116 if (volume_info.dynperm)
2117 cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DYNPERM;
2128 if (volume_info.direct_io) { 2118 if (volume_info.direct_io) {
2129 cFYI(1, ("mounting share using direct i/o")); 2119 cFYI(1, ("mounting share using direct i/o"));
2130 cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DIRECT_IO; 2120 cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DIRECT_IO;
@@ -2141,6 +2131,9 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
2141 for the retry flag is used */ 2131 for the retry flag is used */
2142 tcon->retry = volume_info.retry; 2132 tcon->retry = volume_info.retry;
2143 tcon->nocase = volume_info.nocase; 2133 tcon->nocase = volume_info.nocase;
2134 if (tcon->seal != volume_info.seal)
2135 cERROR(1, ("transport encryption setting "
2136 "conflicts with existing tid"));
2144 } else { 2137 } else {
2145 tcon = tconInfoAlloc(); 2138 tcon = tconInfoAlloc();
2146 if (tcon == NULL) 2139 if (tcon == NULL)
@@ -2154,10 +2147,11 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
2154 if ((strchr(volume_info.UNC + 3, '\\') == NULL) 2147 if ((strchr(volume_info.UNC + 3, '\\') == NULL)
2155 && (strchr(volume_info.UNC + 3, '/') == 2148 && (strchr(volume_info.UNC + 3, '/') ==
2156 NULL)) { 2149 NULL)) {
2157 rc = connect_to_dfs_path(xid, pSesInfo, 2150/* rc = connect_to_dfs_path(xid, pSesInfo,
2158 "", cifs_sb->local_nls, 2151 "", cifs_sb->local_nls,
2159 cifs_sb->mnt_cifs_flags & 2152 cifs_sb->mnt_cifs_flags &
2160 CIFS_MOUNT_MAP_SPECIAL_CHR); 2153 CIFS_MOUNT_MAP_SPECIAL_CHR);*/
2154 cFYI(1, ("DFS root not supported"));
2161 rc = -ENODEV; 2155 rc = -ENODEV;
2162 goto out; 2156 goto out;
2163 } else { 2157 } else {
@@ -2173,6 +2167,7 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
2173 atomic_inc(&pSesInfo->inUse); 2167 atomic_inc(&pSesInfo->inUse);
2174 tcon->retry = volume_info.retry; 2168 tcon->retry = volume_info.retry;
2175 tcon->nocase = volume_info.nocase; 2169 tcon->nocase = volume_info.nocase;
2170 tcon->seal = volume_info.seal;
2176 } 2171 }
2177 } 2172 }
2178 } 2173 }
@@ -2314,9 +2309,10 @@ CIFSSessSetup(unsigned int xid, struct cifsSesInfo *ses,
2314 user = ses->userName; 2309 user = ses->userName;
2315 domain = ses->domainName; 2310 domain = ses->domainName;
2316 smb_buffer = cifs_buf_get(); 2311 smb_buffer = cifs_buf_get();
2317 if (smb_buffer == NULL) { 2312
2313 if (smb_buffer == NULL)
2318 return -ENOMEM; 2314 return -ENOMEM;
2319 } 2315
2320 smb_buffer_response = smb_buffer; 2316 smb_buffer_response = smb_buffer;
2321 pSMBr = pSMB = (SESSION_SETUP_ANDX *) smb_buffer; 2317 pSMBr = pSMB = (SESSION_SETUP_ANDX *) smb_buffer;
2322 2318
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
index e4e0078a0526..f0b5b5f3dd2e 100644
--- a/fs/cifs/dir.c
+++ b/fs/cifs/dir.c
@@ -49,18 +49,25 @@ build_path_from_dentry(struct dentry *direntry)
49 struct dentry *temp; 49 struct dentry *temp;
50 int namelen; 50 int namelen;
51 int pplen; 51 int pplen;
52 int dfsplen;
52 char *full_path; 53 char *full_path;
53 char dirsep; 54 char dirsep;
55 struct cifs_sb_info *cifs_sb;
54 56
55 if (direntry == NULL) 57 if (direntry == NULL)
56 return NULL; /* not much we can do if dentry is freed and 58 return NULL; /* not much we can do if dentry is freed and
57 we need to reopen the file after it was closed implicitly 59 we need to reopen the file after it was closed implicitly
58 when the server crashed */ 60 when the server crashed */
59 61
60 dirsep = CIFS_DIR_SEP(CIFS_SB(direntry->d_sb)); 62 cifs_sb = CIFS_SB(direntry->d_sb);
61 pplen = CIFS_SB(direntry->d_sb)->prepathlen; 63 dirsep = CIFS_DIR_SEP(cifs_sb);
64 pplen = cifs_sb->prepathlen;
65 if (cifs_sb->tcon && (cifs_sb->tcon->Flags & SMB_SHARE_IS_IN_DFS))
66 dfsplen = strnlen(cifs_sb->tcon->treeName, MAX_TREE_SIZE + 1);
67 else
68 dfsplen = 0;
62cifs_bp_rename_retry: 69cifs_bp_rename_retry:
63 namelen = pplen; 70 namelen = pplen + dfsplen;
64 for (temp = direntry; !IS_ROOT(temp);) { 71 for (temp = direntry; !IS_ROOT(temp);) {
65 namelen += (1 + temp->d_name.len); 72 namelen += (1 + temp->d_name.len);
66 temp = temp->d_parent; 73 temp = temp->d_parent;
@@ -91,7 +98,7 @@ cifs_bp_rename_retry:
91 return NULL; 98 return NULL;
92 } 99 }
93 } 100 }
94 if (namelen != pplen) { 101 if (namelen != pplen + dfsplen) {
95 cERROR(1, 102 cERROR(1,
96 ("did not end path lookup where expected namelen is %d", 103 ("did not end path lookup where expected namelen is %d",
97 namelen)); 104 namelen));
@@ -107,7 +114,18 @@ cifs_bp_rename_retry:
107 since the '\' is a valid posix character so we can not switch 114 since the '\' is a valid posix character so we can not switch
108 those safely to '/' if any are found in the middle of the prepath */ 115 those safely to '/' if any are found in the middle of the prepath */
109 /* BB test paths to Windows with '/' in the midst of prepath */ 116 /* BB test paths to Windows with '/' in the midst of prepath */
110 strncpy(full_path, CIFS_SB(direntry->d_sb)->prepath, pplen); 117
118 if (dfsplen) {
119 strncpy(full_path, cifs_sb->tcon->treeName, dfsplen);
120 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS) {
121 int i;
122 for (i = 0; i < dfsplen; i++) {
123 if (full_path[i] == '\\')
124 full_path[i] = '/';
125 }
126 }
127 }
128 strncpy(full_path + dfsplen, CIFS_SB(direntry->d_sb)->prepath, pplen);
111 return full_path; 129 return full_path;
112} 130}
113 131
@@ -590,7 +608,7 @@ static int cifs_ci_compare(struct dentry *dentry, struct qstr *a,
590 * case take precedence. If a is not a negative dentry, this 608 * case take precedence. If a is not a negative dentry, this
591 * should have no side effects 609 * should have no side effects
592 */ 610 */
593 memcpy(a->name, b->name, a->len); 611 memcpy((void *)a->name, b->name, a->len);
594 return 0; 612 return 0;
595 } 613 }
596 return 1; 614 return 1;
diff --git a/fs/cifs/dns_resolve.c b/fs/cifs/dns_resolve.c
index 939e256f8497..f730ef35499e 100644
--- a/fs/cifs/dns_resolve.c
+++ b/fs/cifs/dns_resolve.c
@@ -134,10 +134,6 @@ dns_resolve_server_name_to_ip(const char *unc, char **ip_addr)
134 rkey = request_key(&key_type_dns_resolver, name, ""); 134 rkey = request_key(&key_type_dns_resolver, name, "");
135 if (!IS_ERR(rkey)) { 135 if (!IS_ERR(rkey)) {
136 data = rkey->payload.data; 136 data = rkey->payload.data;
137 cFYI(1, ("%s: resolved: %s to %s", __func__,
138 rkey->description,
139 *ip_addr
140 ));
141 } else { 137 } else {
142 cERROR(1, ("%s: unable to resolve: %s", __func__, name)); 138 cERROR(1, ("%s: unable to resolve: %s", __func__, name));
143 goto out; 139 goto out;
@@ -150,6 +146,11 @@ skip_upcall:
150 if (*ip_addr) { 146 if (*ip_addr) {
151 memcpy(*ip_addr, data, len); 147 memcpy(*ip_addr, data, len);
152 (*ip_addr)[len] = '\0'; 148 (*ip_addr)[len] = '\0';
149 if (!IS_ERR(rkey))
150 cFYI(1, ("%s: resolved: %s to %s", __func__,
151 name,
152 *ip_addr
153 ));
153 rc = 0; 154 rc = 0;
154 } else { 155 } else {
155 rc = -ENOMEM; 156 rc = -ENOMEM;
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 31a0a33b9d95..8636cec2642c 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -75,7 +75,11 @@ static inline int cifs_convert_flags(unsigned int flags)
75 return (GENERIC_READ | GENERIC_WRITE); 75 return (GENERIC_READ | GENERIC_WRITE);
76 } 76 }
77 77
78 return 0x20197; 78 return (READ_CONTROL | FILE_WRITE_ATTRIBUTES | FILE_READ_ATTRIBUTES |
79 FILE_WRITE_EA | FILE_APPEND_DATA | FILE_WRITE_DATA |
80 FILE_READ_DATA);
81
82
79} 83}
80 84
81static inline int cifs_get_disposition(unsigned int flags) 85static inline int cifs_get_disposition(unsigned int flags)
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index fcbdbb6ad7bf..00ced97bd53a 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -161,118 +161,115 @@ static void cifs_unix_info_to_inode(struct inode *inode,
161 spin_unlock(&inode->i_lock); 161 spin_unlock(&inode->i_lock);
162} 162}
163 163
164static const unsigned char *cifs_get_search_path(struct cifs_sb_info *cifs_sb,
165 const char *search_path)
166{
167 int tree_len;
168 int path_len;
169 int i;
170 char *tmp_path;
171 struct cifsTconInfo *pTcon = cifs_sb->tcon;
172
173 if (!(pTcon->Flags & SMB_SHARE_IS_IN_DFS))
174 return search_path;
175 164
176 /* use full path name for working with DFS */ 165/*
177 tree_len = strnlen(pTcon->treeName, MAX_TREE_SIZE + 1); 166 * Needed to setup inode data for the directory which is the
178 path_len = strnlen(search_path, MAX_PATHCONF); 167 * junction to the new submount (ie to setup the fake directory
179 168 * which represents a DFS referral)
180 tmp_path = kmalloc(tree_len+path_len+1, GFP_KERNEL); 169 */
181 if (tmp_path == NULL) 170static void fill_fake_finddataunix(FILE_UNIX_BASIC_INFO *pfnd_dat,
182 return search_path; 171 struct super_block *sb)
172{
173 struct inode *pinode = NULL;
174
175 memset(pfnd_dat, sizeof(FILE_UNIX_BASIC_INFO), 0);
176
177/* __le64 pfnd_dat->EndOfFile = cpu_to_le64(0);
178 __le64 pfnd_dat->NumOfBytes = cpu_to_le64(0);
179 __u64 UniqueId = 0; */
180 pfnd_dat->LastStatusChange =
181 cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME));
182 pfnd_dat->LastAccessTime =
183 cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME));
184 pfnd_dat->LastModificationTime =
185 cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME));
186 pfnd_dat->Type = cpu_to_le32(UNIX_DIR);
187 pfnd_dat->Permissions = cpu_to_le64(S_IXUGO | S_IRWXU);
188 pfnd_dat->Nlinks = cpu_to_le64(2);
189 if (sb->s_root)
190 pinode = sb->s_root->d_inode;
191 if (pinode == NULL)
192 return;
183 193
184 strncpy(tmp_path, pTcon->treeName, tree_len); 194 /* fill in default values for the remaining based on root
185 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS) 195 inode since we can not query the server for this inode info */
186 for (i = 0; i < tree_len; i++) { 196 pfnd_dat->DevMajor = cpu_to_le64(MAJOR(pinode->i_rdev));
187 if (tmp_path[i] == '\\') 197 pfnd_dat->DevMinor = cpu_to_le64(MINOR(pinode->i_rdev));
188 tmp_path[i] = '/'; 198 pfnd_dat->Uid = cpu_to_le64(pinode->i_uid);
189 } 199 pfnd_dat->Gid = cpu_to_le64(pinode->i_gid);
190 strncpy(tmp_path+tree_len, search_path, path_len);
191 tmp_path[tree_len+path_len] = 0;
192 return tmp_path;
193} 200}
194 201
195int cifs_get_inode_info_unix(struct inode **pinode, 202int cifs_get_inode_info_unix(struct inode **pinode,
196 const unsigned char *search_path, struct super_block *sb, int xid) 203 const unsigned char *full_path, struct super_block *sb, int xid)
197{ 204{
198 int rc = 0; 205 int rc = 0;
199 FILE_UNIX_BASIC_INFO findData; 206 FILE_UNIX_BASIC_INFO find_data;
200 struct cifsTconInfo *pTcon; 207 struct cifsTconInfo *pTcon;
201 struct inode *inode; 208 struct inode *inode;
202 struct cifs_sb_info *cifs_sb = CIFS_SB(sb); 209 struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
203 const unsigned char *full_path;
204 bool is_dfs_referral = false; 210 bool is_dfs_referral = false;
211 struct cifsInodeInfo *cifsInfo;
212 __u64 num_of_bytes;
213 __u64 end_of_file;
205 214
206 pTcon = cifs_sb->tcon; 215 pTcon = cifs_sb->tcon;
207 cFYI(1, ("Getting info on %s", search_path)); 216 cFYI(1, ("Getting info on %s", full_path));
208 217
209 full_path = cifs_get_search_path(cifs_sb, search_path);
210
211try_again_CIFSSMBUnixQPathInfo:
212 /* could have done a find first instead but this returns more info */ 218 /* could have done a find first instead but this returns more info */
213 rc = CIFSSMBUnixQPathInfo(xid, pTcon, full_path, &findData, 219 rc = CIFSSMBUnixQPathInfo(xid, pTcon, full_path, &find_data,
214 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags & 220 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
215 CIFS_MOUNT_MAP_SPECIAL_CHR); 221 CIFS_MOUNT_MAP_SPECIAL_CHR);
216/* dump_mem("\nUnixQPathInfo return data", &findData,
217 sizeof(findData)); */
218 if (rc) { 222 if (rc) {
219 if (rc == -EREMOTE && !is_dfs_referral) { 223 if (rc == -EREMOTE && !is_dfs_referral) {
220 is_dfs_referral = true; 224 is_dfs_referral = true;
221 if (full_path != search_path) { 225 cFYI(DBG2, ("DFS ref"));
222 kfree(full_path); 226 /* for DFS, server does not give us real inode data */
223 full_path = search_path; 227 fill_fake_finddataunix(&find_data, sb);
224 } 228 rc = 0;
225 goto try_again_CIFSSMBUnixQPathInfo;
226 } 229 }
227 goto cgiiu_exit; 230 }
228 } else { 231 num_of_bytes = le64_to_cpu(find_data.NumOfBytes);
229 struct cifsInodeInfo *cifsInfo; 232 end_of_file = le64_to_cpu(find_data.EndOfFile);
230 __u64 num_of_bytes = le64_to_cpu(findData.NumOfBytes);
231 __u64 end_of_file = le64_to_cpu(findData.EndOfFile);
232 233
233 /* get new inode */ 234 /* get new inode */
235 if (*pinode == NULL) {
236 *pinode = new_inode(sb);
234 if (*pinode == NULL) { 237 if (*pinode == NULL) {
235 *pinode = new_inode(sb); 238 rc = -ENOMEM;
236 if (*pinode == NULL) { 239 goto cgiiu_exit;
237 rc = -ENOMEM;
238 goto cgiiu_exit;
239 }
240 /* Is an i_ino of zero legal? */
241 /* Are there sanity checks we can use to ensure that
242 the server is really filling in that field? */
243 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) {
244 (*pinode)->i_ino =
245 (unsigned long)findData.UniqueId;
246 } /* note ino incremented to unique num in new_inode */
247 if (sb->s_flags & MS_NOATIME)
248 (*pinode)->i_flags |= S_NOATIME | S_NOCMTIME;
249
250 insert_inode_hash(*pinode);
251 } 240 }
241 /* Is an i_ino of zero legal? */
242 /* note ino incremented to unique num in new_inode */
243 /* Are there sanity checks we can use to ensure that
244 the server is really filling in that field? */
245 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM)
246 (*pinode)->i_ino = (unsigned long)find_data.UniqueId;
252 247
253 inode = *pinode; 248 if (sb->s_flags & MS_NOATIME)
254 cifsInfo = CIFS_I(inode); 249 (*pinode)->i_flags |= S_NOATIME | S_NOCMTIME;
255 250
256 cFYI(1, ("Old time %ld", cifsInfo->time)); 251 insert_inode_hash(*pinode);
257 cifsInfo->time = jiffies; 252 }
258 cFYI(1, ("New time %ld", cifsInfo->time));
259 /* this is ok to set on every inode revalidate */
260 atomic_set(&cifsInfo->inUse, 1);
261 253
262 cifs_unix_info_to_inode(inode, &findData, 0); 254 inode = *pinode;
255 cifsInfo = CIFS_I(inode);
263 256
257 cFYI(1, ("Old time %ld", cifsInfo->time));
258 cifsInfo->time = jiffies;
259 cFYI(1, ("New time %ld", cifsInfo->time));
260 /* this is ok to set on every inode revalidate */
261 atomic_set(&cifsInfo->inUse, 1);
264 262
265 if (num_of_bytes < end_of_file) 263 cifs_unix_info_to_inode(inode, &find_data, 0);
266 cFYI(1, ("allocation size less than end of file"));
267 cFYI(1, ("Size %ld and blocks %llu",
268 (unsigned long) inode->i_size,
269 (unsigned long long)inode->i_blocks));
270 264
271 cifs_set_ops(inode, is_dfs_referral); 265 if (num_of_bytes < end_of_file)
272 } 266 cFYI(1, ("allocation size less than end of file"));
267 cFYI(1, ("Size %ld and blocks %llu",
268 (unsigned long) inode->i_size,
269 (unsigned long long)inode->i_blocks));
270
271 cifs_set_ops(inode, is_dfs_referral);
273cgiiu_exit: 272cgiiu_exit:
274 if (full_path != search_path)
275 kfree(full_path);
276 return rc; 273 return rc;
277} 274}
278 275
@@ -379,21 +376,51 @@ static int get_sfu_mode(struct inode *inode,
379#endif 376#endif
380} 377}
381 378
379/*
380 * Needed to setup inode data for the directory which is the
381 * junction to the new submount (ie to setup the fake directory
382 * which represents a DFS referral)
383 */
384static void fill_fake_finddata(FILE_ALL_INFO *pfnd_dat,
385 struct super_block *sb)
386{
387 memset(pfnd_dat, sizeof(FILE_ALL_INFO), 0);
388
389/* __le64 pfnd_dat->AllocationSize = cpu_to_le64(0);
390 __le64 pfnd_dat->EndOfFile = cpu_to_le64(0);
391 __u8 pfnd_dat->DeletePending = 0;
392 __u8 pfnd_data->Directory = 0;
393 __le32 pfnd_dat->EASize = 0;
394 __u64 pfnd_dat->IndexNumber = 0;
395 __u64 pfnd_dat->IndexNumber1 = 0; */
396 pfnd_dat->CreationTime =
397 cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME));
398 pfnd_dat->LastAccessTime =
399 cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME));
400 pfnd_dat->LastWriteTime =
401 cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME));
402 pfnd_dat->ChangeTime =
403 cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME));
404 pfnd_dat->Attributes = cpu_to_le32(ATTR_DIRECTORY);
405 pfnd_dat->NumberOfLinks = cpu_to_le32(2);
406}
407
382int cifs_get_inode_info(struct inode **pinode, 408int cifs_get_inode_info(struct inode **pinode,
383 const unsigned char *search_path, FILE_ALL_INFO *pfindData, 409 const unsigned char *full_path, FILE_ALL_INFO *pfindData,
384 struct super_block *sb, int xid, const __u16 *pfid) 410 struct super_block *sb, int xid, const __u16 *pfid)
385{ 411{
386 int rc = 0; 412 int rc = 0;
413 __u32 attr;
414 struct cifsInodeInfo *cifsInfo;
387 struct cifsTconInfo *pTcon; 415 struct cifsTconInfo *pTcon;
388 struct inode *inode; 416 struct inode *inode;
389 struct cifs_sb_info *cifs_sb = CIFS_SB(sb); 417 struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
390 const unsigned char *full_path = NULL;
391 char *buf = NULL; 418 char *buf = NULL;
392 bool adjustTZ = false; 419 bool adjustTZ = false;
393 bool is_dfs_referral = false; 420 bool is_dfs_referral = false;
394 421
395 pTcon = cifs_sb->tcon; 422 pTcon = cifs_sb->tcon;
396 cFYI(1, ("Getting info on %s", search_path)); 423 cFYI(1, ("Getting info on %s", full_path));
397 424
398 if ((pfindData == NULL) && (*pinode != NULL)) { 425 if ((pfindData == NULL) && (*pinode != NULL)) {
399 if (CIFS_I(*pinode)->clientCanCacheRead) { 426 if (CIFS_I(*pinode)->clientCanCacheRead) {
@@ -409,9 +436,6 @@ int cifs_get_inode_info(struct inode **pinode,
409 return -ENOMEM; 436 return -ENOMEM;
410 pfindData = (FILE_ALL_INFO *)buf; 437 pfindData = (FILE_ALL_INFO *)buf;
411 438
412 full_path = cifs_get_search_path(cifs_sb, search_path);
413
414try_again_CIFSSMBQPathInfo:
415 /* could do find first instead but this returns more info */ 439 /* could do find first instead but this returns more info */
416 rc = CIFSSMBQPathInfo(xid, pTcon, full_path, pfindData, 440 rc = CIFSSMBQPathInfo(xid, pTcon, full_path, pfindData,
417 0 /* not legacy */, 441 0 /* not legacy */,
@@ -429,178 +453,168 @@ try_again_CIFSSMBQPathInfo:
429 } 453 }
430 } 454 }
431 /* dump_mem("\nQPathInfo return data",&findData, sizeof(findData)); */ 455 /* dump_mem("\nQPathInfo return data",&findData, sizeof(findData)); */
432 if (rc) { 456 if (rc == -EREMOTE) {
433 if (rc == -EREMOTE && !is_dfs_referral) { 457 is_dfs_referral = true;
434 is_dfs_referral = true; 458 fill_fake_finddata(pfindData, sb);
435 if (full_path != search_path) { 459 rc = 0;
436 kfree(full_path); 460 } else if (rc)
437 full_path = search_path;
438 }
439 goto try_again_CIFSSMBQPathInfo;
440 }
441 goto cgii_exit; 461 goto cgii_exit;
442 } else {
443 struct cifsInodeInfo *cifsInfo;
444 __u32 attr = le32_to_cpu(pfindData->Attributes);
445 462
446 /* get new inode */ 463 attr = le32_to_cpu(pfindData->Attributes);
447 if (*pinode == NULL) {
448 *pinode = new_inode(sb);
449 if (*pinode == NULL) {
450 rc = -ENOMEM;
451 goto cgii_exit;
452 }
453 /* Is an i_ino of zero legal? Can we use that to check
454 if the server supports returning inode numbers? Are
455 there other sanity checks we can use to ensure that
456 the server is really filling in that field? */
457 464
458 /* We can not use the IndexNumber field by default from 465 /* get new inode */
459 Windows or Samba (in ALL_INFO buf) but we can request 466 if (*pinode == NULL) {
460 it explicitly. It may not be unique presumably if 467 *pinode = new_inode(sb);
461 the server has multiple devices mounted under one 468 if (*pinode == NULL) {
462 share */ 469 rc = -ENOMEM;
463 470 goto cgii_exit;
464 /* There may be higher info levels that work but are 471 }
465 there Windows server or network appliances for which 472 /* Is an i_ino of zero legal? Can we use that to check
466 IndexNumber field is not guaranteed unique? */ 473 if the server supports returning inode numbers? Are
467 474 there other sanity checks we can use to ensure that
468 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) { 475 the server is really filling in that field? */
469 int rc1 = 0; 476
470 __u64 inode_num; 477 /* We can not use the IndexNumber field by default from
471 478 Windows or Samba (in ALL_INFO buf) but we can request
472 rc1 = CIFSGetSrvInodeNumber(xid, pTcon, 479 it explicitly. It may not be unique presumably if
473 search_path, &inode_num, 480 the server has multiple devices mounted under one share */
481
482 /* There may be higher info levels that work but are
483 there Windows server or network appliances for which
484 IndexNumber field is not guaranteed unique? */
485
486 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) {
487 int rc1 = 0;
488 __u64 inode_num;
489
490 rc1 = CIFSGetSrvInodeNumber(xid, pTcon,
491 full_path, &inode_num,
474 cifs_sb->local_nls, 492 cifs_sb->local_nls,
475 cifs_sb->mnt_cifs_flags & 493 cifs_sb->mnt_cifs_flags &
476 CIFS_MOUNT_MAP_SPECIAL_CHR); 494 CIFS_MOUNT_MAP_SPECIAL_CHR);
477 if (rc1) { 495 if (rc1) {
478 cFYI(1, ("GetSrvInodeNum rc %d", rc1)); 496 cFYI(1, ("GetSrvInodeNum rc %d", rc1));
479 /* BB EOPNOSUPP disable SERVER_INUM? */ 497 /* BB EOPNOSUPP disable SERVER_INUM? */
480 } else /* do we need cast or hash to ino? */ 498 } else /* do we need cast or hash to ino? */
481 (*pinode)->i_ino = inode_num; 499 (*pinode)->i_ino = inode_num;
482 } /* else ino incremented to unique num in new_inode*/ 500 } /* else ino incremented to unique num in new_inode*/
483 if (sb->s_flags & MS_NOATIME) 501 if (sb->s_flags & MS_NOATIME)
484 (*pinode)->i_flags |= S_NOATIME | S_NOCMTIME; 502 (*pinode)->i_flags |= S_NOATIME | S_NOCMTIME;
485 insert_inode_hash(*pinode); 503 insert_inode_hash(*pinode);
486 } 504 }
487 inode = *pinode; 505 inode = *pinode;
488 cifsInfo = CIFS_I(inode); 506 cifsInfo = CIFS_I(inode);
489 cifsInfo->cifsAttrs = attr; 507 cifsInfo->cifsAttrs = attr;
490 cFYI(1, ("Old time %ld", cifsInfo->time)); 508 cFYI(1, ("Old time %ld", cifsInfo->time));
491 cifsInfo->time = jiffies; 509 cifsInfo->time = jiffies;
492 cFYI(1, ("New time %ld", cifsInfo->time)); 510 cFYI(1, ("New time %ld", cifsInfo->time));
493 511
494 /* blksize needs to be multiple of two. So safer to default to 512 /* blksize needs to be multiple of two. So safer to default to
495 blksize and blkbits set in superblock so 2**blkbits and blksize 513 blksize and blkbits set in superblock so 2**blkbits and blksize
496 will match rather than setting to: 514 will match rather than setting to:
497 (pTcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE) & 0xFFFFFE00;*/ 515 (pTcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE) & 0xFFFFFE00;*/
498 516
499 /* Linux can not store file creation time so ignore it */ 517 /* Linux can not store file creation time so ignore it */
500 if (pfindData->LastAccessTime) 518 if (pfindData->LastAccessTime)
501 inode->i_atime = cifs_NTtimeToUnix 519 inode->i_atime = cifs_NTtimeToUnix
502 (le64_to_cpu(pfindData->LastAccessTime)); 520 (le64_to_cpu(pfindData->LastAccessTime));
503 else /* do not need to use current_fs_time - time not stored */ 521 else /* do not need to use current_fs_time - time not stored */
504 inode->i_atime = CURRENT_TIME; 522 inode->i_atime = CURRENT_TIME;
505 inode->i_mtime = 523 inode->i_mtime =
506 cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastWriteTime)); 524 cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastWriteTime));
507 inode->i_ctime = 525 inode->i_ctime =
508 cifs_NTtimeToUnix(le64_to_cpu(pfindData->ChangeTime)); 526 cifs_NTtimeToUnix(le64_to_cpu(pfindData->ChangeTime));
509 cFYI(0, ("Attributes came in as 0x%x", attr)); 527 cFYI(DBG2, ("Attributes came in as 0x%x", attr));
510 if (adjustTZ && (pTcon->ses) && (pTcon->ses->server)) { 528 if (adjustTZ && (pTcon->ses) && (pTcon->ses->server)) {
511 inode->i_ctime.tv_sec += pTcon->ses->server->timeAdj; 529 inode->i_ctime.tv_sec += pTcon->ses->server->timeAdj;
512 inode->i_mtime.tv_sec += pTcon->ses->server->timeAdj; 530 inode->i_mtime.tv_sec += pTcon->ses->server->timeAdj;
513 } 531 }
514 532
515 /* set default mode. will override for dirs below */ 533 /* set default mode. will override for dirs below */
516 if (atomic_read(&cifsInfo->inUse) == 0) 534 if (atomic_read(&cifsInfo->inUse) == 0)
517 /* new inode, can safely set these fields */ 535 /* new inode, can safely set these fields */
518 inode->i_mode = cifs_sb->mnt_file_mode; 536 inode->i_mode = cifs_sb->mnt_file_mode;
519 else /* since we set the inode type below we need to mask off 537 else /* since we set the inode type below we need to mask off
520 to avoid strange results if type changes and both 538 to avoid strange results if type changes and both
521 get orred in */ 539 get orred in */
522 inode->i_mode &= ~S_IFMT; 540 inode->i_mode &= ~S_IFMT;
523/* if (attr & ATTR_REPARSE) */ 541/* if (attr & ATTR_REPARSE) */
524 /* We no longer handle these as symlinks because we could not 542 /* We no longer handle these as symlinks because we could not
525 follow them due to the absolute path with drive letter */ 543 follow them due to the absolute path with drive letter */
526 if (attr & ATTR_DIRECTORY) { 544 if (attr & ATTR_DIRECTORY) {
527 /* override default perms since we do not do byte range locking 545 /* override default perms since we do not do byte range locking
528 on dirs */ 546 on dirs */
529 inode->i_mode = cifs_sb->mnt_dir_mode; 547 inode->i_mode = cifs_sb->mnt_dir_mode;
530 inode->i_mode |= S_IFDIR; 548 inode->i_mode |= S_IFDIR;
531 } else if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) && 549 } else if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) &&
532 (cifsInfo->cifsAttrs & ATTR_SYSTEM) && 550 (cifsInfo->cifsAttrs & ATTR_SYSTEM) &&
533 /* No need to le64 convert size of zero */ 551 /* No need to le64 convert size of zero */
534 (pfindData->EndOfFile == 0)) { 552 (pfindData->EndOfFile == 0)) {
535 inode->i_mode = cifs_sb->mnt_file_mode; 553 inode->i_mode = cifs_sb->mnt_file_mode;
536 inode->i_mode |= S_IFIFO; 554 inode->i_mode |= S_IFIFO;
537/* BB Finish for SFU style symlinks and devices */ 555/* BB Finish for SFU style symlinks and devices */
538 } else if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) && 556 } else if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) &&
539 (cifsInfo->cifsAttrs & ATTR_SYSTEM)) { 557 (cifsInfo->cifsAttrs & ATTR_SYSTEM)) {
540 if (decode_sfu_inode(inode, 558 if (decode_sfu_inode(inode, le64_to_cpu(pfindData->EndOfFile),
541 le64_to_cpu(pfindData->EndOfFile), 559 full_path, cifs_sb, xid))
542 search_path, 560 cFYI(1, ("Unrecognized sfu inode type"));
543 cifs_sb, xid))
544 cFYI(1, ("Unrecognized sfu inode type"));
545
546 cFYI(1, ("sfu mode 0%o", inode->i_mode));
547 } else {
548 inode->i_mode |= S_IFREG;
549 /* treat the dos attribute of read-only as read-only
550 mode e.g. 555 */
551 if (cifsInfo->cifsAttrs & ATTR_READONLY)
552 inode->i_mode &= ~(S_IWUGO);
553 else if ((inode->i_mode & S_IWUGO) == 0)
554 /* the ATTR_READONLY flag may have been */
555 /* changed on server -- set any w bits */
556 /* allowed by mnt_file_mode */
557 inode->i_mode |= (S_IWUGO &
558 cifs_sb->mnt_file_mode);
559 /* BB add code here -
560 validate if device or weird share or device type? */
561 }
562 561
563 spin_lock(&inode->i_lock); 562 cFYI(1, ("sfu mode 0%o", inode->i_mode));
564 if (is_size_safe_to_change(cifsInfo, 563 } else {
565 le64_to_cpu(pfindData->EndOfFile))) { 564 inode->i_mode |= S_IFREG;
566 /* can not safely shrink the file size here if the 565 /* treat dos attribute of read-only as read-only mode eg 555 */
567 client is writing to it due to potential races */ 566 if (cifsInfo->cifsAttrs & ATTR_READONLY)
568 i_size_write(inode, le64_to_cpu(pfindData->EndOfFile)); 567 inode->i_mode &= ~(S_IWUGO);
569 568 else if ((inode->i_mode & S_IWUGO) == 0)
570 /* 512 bytes (2**9) is the fake blocksize that must be 569 /* the ATTR_READONLY flag may have been */
571 used for this calculation */ 570 /* changed on server -- set any w bits */
572 inode->i_blocks = (512 - 1 + le64_to_cpu( 571 /* allowed by mnt_file_mode */
573 pfindData->AllocationSize)) >> 9; 572 inode->i_mode |= (S_IWUGO & cifs_sb->mnt_file_mode);
574 } 573 /* BB add code to validate if device or weird share or device type? */
575 spin_unlock(&inode->i_lock); 574 }
575
576 spin_lock(&inode->i_lock);
577 if (is_size_safe_to_change(cifsInfo,
578 le64_to_cpu(pfindData->EndOfFile))) {
579 /* can not safely shrink the file size here if the
580 client is writing to it due to potential races */
581 i_size_write(inode, le64_to_cpu(pfindData->EndOfFile));
582
583 /* 512 bytes (2**9) is the fake blocksize that must be
584 used for this calculation */
585 inode->i_blocks = (512 - 1 + le64_to_cpu(
586 pfindData->AllocationSize)) >> 9;
587 }
588 spin_unlock(&inode->i_lock);
576 589
577 inode->i_nlink = le32_to_cpu(pfindData->NumberOfLinks); 590 inode->i_nlink = le32_to_cpu(pfindData->NumberOfLinks);
578 591
579 /* BB fill in uid and gid here? with help from winbind? 592 /* BB fill in uid and gid here? with help from winbind?
580 or retrieve from NTFS stream extended attribute */ 593 or retrieve from NTFS stream extended attribute */
581#ifdef CONFIG_CIFS_EXPERIMENTAL 594#ifdef CONFIG_CIFS_EXPERIMENTAL
582 /* fill in 0777 bits from ACL */ 595 /* fill in 0777 bits from ACL */
583 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) { 596 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) {
584 cFYI(1, ("Getting mode bits from ACL")); 597 cFYI(1, ("Getting mode bits from ACL"));
585 acl_to_uid_mode(inode, search_path, pfid); 598 acl_to_uid_mode(inode, full_path, pfid);
586 } 599 }
587#endif 600#endif
588 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) { 601 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) {
589 /* fill in remaining high mode bits e.g. SUID, VTX */ 602 /* fill in remaining high mode bits e.g. SUID, VTX */
590 get_sfu_mode(inode, search_path, cifs_sb, xid); 603 get_sfu_mode(inode, full_path, cifs_sb, xid);
591 } else if (atomic_read(&cifsInfo->inUse) == 0) { 604 } else if (atomic_read(&cifsInfo->inUse) == 0) {
592 inode->i_uid = cifs_sb->mnt_uid; 605 inode->i_uid = cifs_sb->mnt_uid;
593 inode->i_gid = cifs_sb->mnt_gid; 606 inode->i_gid = cifs_sb->mnt_gid;
594 /* set so we do not keep refreshing these fields with 607 /* set so we do not keep refreshing these fields with
595 bad data after user has changed them in memory */ 608 bad data after user has changed them in memory */
596 atomic_set(&cifsInfo->inUse, 1); 609 atomic_set(&cifsInfo->inUse, 1);
597 }
598
599 cifs_set_ops(inode, is_dfs_referral);
600 } 610 }
611
612 cifs_set_ops(inode, is_dfs_referral);
613
614
615
616
601cgii_exit: 617cgii_exit:
602 if (full_path != search_path)
603 kfree(full_path);
604 kfree(buf); 618 kfree(buf);
605 return rc; 619 return rc;
606} 620}
@@ -1502,8 +1516,7 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs)
1502 int oplock = 0; 1516 int oplock = 0;
1503 1517
1504 rc = SMBLegacyOpen(xid, pTcon, full_path, 1518 rc = SMBLegacyOpen(xid, pTcon, full_path,
1505 FILE_OPEN, 1519 FILE_OPEN, GENERIC_WRITE,
1506 SYNCHRONIZE | FILE_WRITE_ATTRIBUTES,
1507 CREATE_NOT_DIR, &netfid, &oplock, 1520 CREATE_NOT_DIR, &netfid, &oplock,
1508 NULL, cifs_sb->local_nls, 1521 NULL, cifs_sb->local_nls,
1509 cifs_sb->mnt_cifs_flags & 1522 cifs_sb->mnt_cifs_flags &
diff --git a/fs/cifs/ioctl.c b/fs/cifs/ioctl.c
index 5c792df13d62..0088a5b52564 100644
--- a/fs/cifs/ioctl.c
+++ b/fs/cifs/ioctl.c
@@ -30,9 +30,9 @@
30 30
31#define CIFS_IOC_CHECKUMOUNT _IO(0xCF, 2) 31#define CIFS_IOC_CHECKUMOUNT _IO(0xCF, 2)
32 32
33int cifs_ioctl(struct inode *inode, struct file *filep, 33long cifs_ioctl(struct file *filep, unsigned int command, unsigned long arg)
34 unsigned int command, unsigned long arg)
35{ 34{
35 struct inode *inode = filep->f_dentry->d_inode;
36 int rc = -ENOTTY; /* strange error - but the precedent */ 36 int rc = -ENOTTY; /* strange error - but the precedent */
37 int xid; 37 int xid;
38 struct cifs_sb_info *cifs_sb; 38 struct cifs_sb_info *cifs_sb;
diff --git a/fs/cifs/link.c b/fs/cifs/link.c
index 1c2c3ce5020b..63f644000ce5 100644
--- a/fs/cifs/link.c
+++ b/fs/cifs/link.c
@@ -234,7 +234,6 @@ cifs_readlink(struct dentry *direntry, char __user *pBuffer, int buflen)
234 struct cifs_sb_info *cifs_sb; 234 struct cifs_sb_info *cifs_sb;
235 struct cifsTconInfo *pTcon; 235 struct cifsTconInfo *pTcon;
236 char *full_path = NULL; 236 char *full_path = NULL;
237 char *tmp_path = NULL;
238 char *tmpbuffer; 237 char *tmpbuffer;
239 int len; 238 int len;
240 __u16 fid; 239 __u16 fid;
@@ -295,45 +294,9 @@ cifs_readlink(struct dentry *direntry, char __user *pBuffer, int buflen)
295 cFYI(1, ("Error closing junction point " 294 cFYI(1, ("Error closing junction point "
296 "(open for ioctl)")); 295 "(open for ioctl)"));
297 } 296 }
298 /* BB unwind this long, nested function, or remove BB */ 297 /* If it is a DFS junction earlier we would have gotten
299 if (rc == -EIO) { 298 PATH_NOT_COVERED returned from server so we do
300 /* Query if DFS Junction */ 299 not need to request the DFS info here */
301 unsigned int num_referrals = 0;
302 struct dfs_info3_param *refs = NULL;
303 tmp_path =
304 kmalloc(MAX_TREE_SIZE + MAX_PATHCONF + 1,
305 GFP_KERNEL);
306 if (tmp_path) {
307 strncpy(tmp_path, pTcon->treeName,
308 MAX_TREE_SIZE);
309 strncat(tmp_path, full_path,
310 MAX_PATHCONF);
311 rc = get_dfs_path(xid, pTcon->ses,
312 tmp_path,
313 cifs_sb->local_nls,
314 &num_referrals, &refs,
315 cifs_sb->mnt_cifs_flags &
316 CIFS_MOUNT_MAP_SPECIAL_CHR);
317 cFYI(1, ("Get DFS for %s rc = %d ",
318 tmp_path, rc));
319 if ((num_referrals == 0) && (rc == 0))
320 rc = -EACCES;
321 else {
322 cFYI(1, ("num referral: %d",
323 num_referrals));
324 if (refs && refs->path_name) {
325 strncpy(tmpbuffer,
326 refs->path_name,
327 len-1);
328 }
329 }
330 kfree(refs);
331 kfree(tmp_path);
332}
333 /* BB add code like else decode referrals
334 then memcpy to tmpbuffer and free referrals
335 string array BB */
336 }
337 } 300 }
338 } 301 }
339 /* BB Anything else to do to handle recursive links? */ 302 /* BB Anything else to do to handle recursive links? */
diff --git a/fs/cifs/netmisc.c b/fs/cifs/netmisc.c
index 00f4cff400b3..8703d68f5b20 100644
--- a/fs/cifs/netmisc.c
+++ b/fs/cifs/netmisc.c
@@ -141,11 +141,11 @@ cifs_inet_pton(const int address_family, const char *cp, void *dst)
141 int ret = 0; 141 int ret = 0;
142 142
143 /* calculate length by finding first slash or NULL */ 143 /* calculate length by finding first slash or NULL */
144 if (address_family == AF_INET) { 144 if (address_family == AF_INET)
145 ret = in4_pton(cp, -1 /* len */, dst, '\\', NULL); 145 ret = in4_pton(cp, -1 /* len */, dst, '\\', NULL);
146 } else if (address_family == AF_INET6) { 146 else if (address_family == AF_INET6)
147 ret = in6_pton(cp, -1 /* len */, dst , '\\', NULL); 147 ret = in6_pton(cp, -1 /* len */, dst , '\\', NULL);
148 } 148
149 cFYI(DBG2, ("address conversion returned %d for %s", ret, cp)); 149 cFYI(DBG2, ("address conversion returned %d for %s", ret, cp));
150 if (ret > 0) 150 if (ret > 0)
151 ret = 1; 151 ret = 1;
diff --git a/fs/cifs/ntlmssp.h b/fs/cifs/ntlmssp.h
index 7170a9b70f1e..c377d8065d99 100644
--- a/fs/cifs/ntlmssp.h
+++ b/fs/cifs/ntlmssp.h
@@ -64,7 +64,7 @@ typedef struct _SECURITY_BUFFER {
64} __attribute__((packed)) SECURITY_BUFFER; 64} __attribute__((packed)) SECURITY_BUFFER;
65 65
66typedef struct _NEGOTIATE_MESSAGE { 66typedef struct _NEGOTIATE_MESSAGE {
67 __u8 Signature[sizeof (NTLMSSP_SIGNATURE)]; 67 __u8 Signature[sizeof(NTLMSSP_SIGNATURE)];
68 __le32 MessageType; /* 1 */ 68 __le32 MessageType; /* 1 */
69 __le32 NegotiateFlags; 69 __le32 NegotiateFlags;
70 SECURITY_BUFFER DomainName; /* RFC 1001 style and ASCII */ 70 SECURITY_BUFFER DomainName; /* RFC 1001 style and ASCII */
@@ -74,7 +74,7 @@ typedef struct _NEGOTIATE_MESSAGE {
74} __attribute__((packed)) NEGOTIATE_MESSAGE, *PNEGOTIATE_MESSAGE; 74} __attribute__((packed)) NEGOTIATE_MESSAGE, *PNEGOTIATE_MESSAGE;
75 75
76typedef struct _CHALLENGE_MESSAGE { 76typedef struct _CHALLENGE_MESSAGE {
77 __u8 Signature[sizeof (NTLMSSP_SIGNATURE)]; 77 __u8 Signature[sizeof(NTLMSSP_SIGNATURE)];
78 __le32 MessageType; /* 2 */ 78 __le32 MessageType; /* 2 */
79 SECURITY_BUFFER TargetName; 79 SECURITY_BUFFER TargetName;
80 __le32 NegotiateFlags; 80 __le32 NegotiateFlags;
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
index 34ec32100c72..713c25110197 100644
--- a/fs/cifs/readdir.c
+++ b/fs/cifs/readdir.c
@@ -670,8 +670,11 @@ static int find_cifs_entry(const int xid, struct cifsTconInfo *pTcon,
670 (index_to_find < first_entry_in_buffer)) { 670 (index_to_find < first_entry_in_buffer)) {
671 /* close and restart search */ 671 /* close and restart search */
672 cFYI(1, ("search backing up - close and restart search")); 672 cFYI(1, ("search backing up - close and restart search"));
673 cifsFile->invalidHandle = true; 673 if (!cifsFile->srch_inf.endOfSearch &&
674 CIFSFindClose(xid, pTcon, cifsFile->netfid); 674 !cifsFile->invalidHandle) {
675 cifsFile->invalidHandle = true;
676 CIFSFindClose(xid, pTcon, cifsFile->netfid);
677 }
675 kfree(cifsFile->search_resume_name); 678 kfree(cifsFile->search_resume_name);
676 cifsFile->search_resume_name = NULL; 679 cifsFile->search_resume_name = NULL;
677 if (cifsFile->srch_inf.ntwrk_buf_start) { 680 if (cifsFile->srch_inf.ntwrk_buf_start) {
diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c
index 6560da1a58ce..50c994a249a5 100644
--- a/fs/ecryptfs/miscdev.c
+++ b/fs/ecryptfs/miscdev.c
@@ -243,7 +243,6 @@ ecryptfs_miscdev_read(struct file *file, char __user *buf, size_t count,
243 struct ecryptfs_daemon *daemon; 243 struct ecryptfs_daemon *daemon;
244 struct ecryptfs_msg_ctx *msg_ctx; 244 struct ecryptfs_msg_ctx *msg_ctx;
245 size_t packet_length_size; 245 size_t packet_length_size;
246 u32 counter_nbo;
247 char packet_length[3]; 246 char packet_length[3];
248 size_t i; 247 size_t i;
249 size_t total_length; 248 size_t total_length;
@@ -328,20 +327,18 @@ check_list:
328 "pending message\n", __func__, count, total_length); 327 "pending message\n", __func__, count, total_length);
329 goto out_unlock_msg_ctx; 328 goto out_unlock_msg_ctx;
330 } 329 }
331 i = 0; 330 rc = -EFAULT;
332 buf[i++] = msg_ctx->type; 331 if (put_user(msg_ctx->type, buf))
333 counter_nbo = cpu_to_be32(msg_ctx->counter); 332 goto out_unlock_msg_ctx;
334 memcpy(&buf[i], (char *)&counter_nbo, 4); 333 if (put_user(cpu_to_be32(msg_ctx->counter), (__be32 __user *)(buf + 1)))
335 i += 4; 334 goto out_unlock_msg_ctx;
335 i = 5;
336 if (msg_ctx->msg) { 336 if (msg_ctx->msg) {
337 memcpy(&buf[i], packet_length, packet_length_size); 337 if (copy_to_user(&buf[i], packet_length, packet_length_size))
338 goto out_unlock_msg_ctx;
338 i += packet_length_size; 339 i += packet_length_size;
339 rc = copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size); 340 if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size))
340 if (rc) {
341 printk(KERN_ERR "%s: copy_to_user returned error "
342 "[%d]\n", __func__, rc);
343 goto out_unlock_msg_ctx; 341 goto out_unlock_msg_ctx;
344 }
345 i += msg_ctx->msg_size; 342 i += msg_ctx->msg_size;
346 } 343 }
347 rc = i; 344 rc = i;
@@ -452,7 +449,8 @@ static ssize_t
452ecryptfs_miscdev_write(struct file *file, const char __user *buf, 449ecryptfs_miscdev_write(struct file *file, const char __user *buf,
453 size_t count, loff_t *ppos) 450 size_t count, loff_t *ppos)
454{ 451{
455 u32 counter_nbo, seq; 452 __be32 counter_nbo;
453 u32 seq;
456 size_t packet_size, packet_size_length, i; 454 size_t packet_size, packet_size_length, i;
457 ssize_t sz = 0; 455 ssize_t sz = 0;
458 char *data; 456 char *data;
@@ -485,7 +483,7 @@ ecryptfs_miscdev_write(struct file *file, const char __user *buf,
485 count); 483 count);
486 goto out_free; 484 goto out_free;
487 } 485 }
488 memcpy((char *)&counter_nbo, &data[i], 4); 486 memcpy(&counter_nbo, &data[i], 4);
489 seq = be32_to_cpu(counter_nbo); 487 seq = be32_to_cpu(counter_nbo);
490 i += 4; 488 i += 4;
491 rc = ecryptfs_parse_packet_length(&data[i], &packet_size, 489 rc = ecryptfs_parse_packet_length(&data[i], &packet_size,
diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c
index d31badadef8f..07d84d16cda4 100644
--- a/fs/gfs2/glops.c
+++ b/fs/gfs2/glops.c
@@ -249,7 +249,7 @@ static int inode_go_lock(struct gfs2_holder *gh)
249 struct gfs2_inode *ip = gl->gl_object; 249 struct gfs2_inode *ip = gl->gl_object;
250 int error = 0; 250 int error = 0;
251 251
252 if (!ip) 252 if (!ip || (gh->gh_flags & GL_SKIP))
253 return 0; 253 return 0;
254 254
255 if (test_bit(GIF_INVALID, &ip->i_flags)) { 255 if (test_bit(GIF_INVALID, &ip->i_flags)) {
diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
index 9c2c0b90b22a..eabe5eac41da 100644
--- a/fs/gfs2/incore.h
+++ b/fs/gfs2/incore.h
@@ -236,6 +236,7 @@ enum {
236 GIF_INVALID = 0, 236 GIF_INVALID = 0,
237 GIF_QD_LOCKED = 1, 237 GIF_QD_LOCKED = 1,
238 GIF_SW_PAGED = 3, 238 GIF_SW_PAGED = 3,
239 GIF_USER = 4, /* user inode, not metadata addr space */
239}; 240};
240 241
241struct gfs2_dinode_host { 242struct gfs2_dinode_host {
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index 3a9ef526c308..09453d057e41 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -47,8 +47,7 @@ static int iget_test(struct inode *inode, void *opaque)
47 struct gfs2_inode *ip = GFS2_I(inode); 47 struct gfs2_inode *ip = GFS2_I(inode);
48 u64 *no_addr = opaque; 48 u64 *no_addr = opaque;
49 49
50 if (ip->i_no_addr == *no_addr && 50 if (ip->i_no_addr == *no_addr && test_bit(GIF_USER, &ip->i_flags))
51 inode->i_private != NULL)
52 return 1; 51 return 1;
53 52
54 return 0; 53 return 0;
@@ -61,6 +60,7 @@ static int iget_set(struct inode *inode, void *opaque)
61 60
62 inode->i_ino = (unsigned long)*no_addr; 61 inode->i_ino = (unsigned long)*no_addr;
63 ip->i_no_addr = *no_addr; 62 ip->i_no_addr = *no_addr;
63 set_bit(GIF_USER, &ip->i_flags);
64 return 0; 64 return 0;
65} 65}
66 66
@@ -86,7 +86,7 @@ static int iget_skip_test(struct inode *inode, void *opaque)
86 struct gfs2_inode *ip = GFS2_I(inode); 86 struct gfs2_inode *ip = GFS2_I(inode);
87 struct gfs2_skip_data *data = opaque; 87 struct gfs2_skip_data *data = opaque;
88 88
89 if (ip->i_no_addr == data->no_addr && inode->i_private != NULL){ 89 if (ip->i_no_addr == data->no_addr && test_bit(GIF_USER, &ip->i_flags)){
90 if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)){ 90 if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)){
91 data->skipped = 1; 91 data->skipped = 1;
92 return 0; 92 return 0;
@@ -105,6 +105,7 @@ static int iget_skip_set(struct inode *inode, void *opaque)
105 return 1; 105 return 1;
106 inode->i_ino = (unsigned long)(data->no_addr); 106 inode->i_ino = (unsigned long)(data->no_addr);
107 ip->i_no_addr = data->no_addr; 107 ip->i_no_addr = data->no_addr;
108 set_bit(GIF_USER, &ip->i_flags);
108 return 0; 109 return 0;
109} 110}
110 111
@@ -166,7 +167,7 @@ void gfs2_set_iop(struct inode *inode)
166 * Returns: A VFS inode, or an error 167 * Returns: A VFS inode, or an error
167 */ 168 */
168 169
169struct inode *gfs2_inode_lookup(struct super_block *sb, 170struct inode *gfs2_inode_lookup(struct super_block *sb,
170 unsigned int type, 171 unsigned int type,
171 u64 no_addr, 172 u64 no_addr,
172 u64 no_formal_ino, int skip_freeing) 173 u64 no_formal_ino, int skip_freeing)
@@ -187,7 +188,6 @@ struct inode *gfs2_inode_lookup(struct super_block *sb,
187 188
188 if (inode->i_state & I_NEW) { 189 if (inode->i_state & I_NEW) {
189 struct gfs2_sbd *sdp = GFS2_SB(inode); 190 struct gfs2_sbd *sdp = GFS2_SB(inode);
190 inode->i_private = ip;
191 ip->i_no_formal_ino = no_formal_ino; 191 ip->i_no_formal_ino = no_formal_ino;
192 192
193 error = gfs2_glock_get(sdp, no_addr, &gfs2_inode_glops, CREATE, &ip->i_gl); 193 error = gfs2_glock_get(sdp, no_addr, &gfs2_inode_glops, CREATE, &ip->i_gl);
diff --git a/fs/gfs2/meta_io.c b/fs/gfs2/meta_io.c
index 85aea27b4a86..78d75f892f82 100644
--- a/fs/gfs2/meta_io.c
+++ b/fs/gfs2/meta_io.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. 2 * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
3 * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved. 3 * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
4 * 4 *
5 * This copyrighted material is made available to anyone wishing to use, 5 * This copyrighted material is made available to anyone wishing to use,
6 * modify, copy, or redistribute it subject to the terms and conditions 6 * modify, copy, or redistribute it subject to the terms and conditions
@@ -69,13 +69,15 @@ static const struct address_space_operations aspace_aops = {
69struct inode *gfs2_aspace_get(struct gfs2_sbd *sdp) 69struct inode *gfs2_aspace_get(struct gfs2_sbd *sdp)
70{ 70{
71 struct inode *aspace; 71 struct inode *aspace;
72 struct gfs2_inode *ip;
72 73
73 aspace = new_inode(sdp->sd_vfs); 74 aspace = new_inode(sdp->sd_vfs);
74 if (aspace) { 75 if (aspace) {
75 mapping_set_gfp_mask(aspace->i_mapping, GFP_NOFS); 76 mapping_set_gfp_mask(aspace->i_mapping, GFP_NOFS);
76 aspace->i_mapping->a_ops = &aspace_aops; 77 aspace->i_mapping->a_ops = &aspace_aops;
77 aspace->i_size = ~0ULL; 78 aspace->i_size = ~0ULL;
78 aspace->i_private = NULL; 79 ip = GFS2_I(aspace);
80 clear_bit(GIF_USER, &ip->i_flags);
79 insert_inode_hash(aspace); 81 insert_inode_hash(aspace);
80 } 82 }
81 return aspace; 83 return aspace;
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index ef9c6c4f80f6..b2028c82e8d1 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -142,8 +142,8 @@ static int init_names(struct gfs2_sbd *sdp, int silent)
142 if (!table[0]) 142 if (!table[0])
143 table = sdp->sd_vfs->s_id; 143 table = sdp->sd_vfs->s_id;
144 144
145 snprintf(sdp->sd_proto_name, GFS2_FSNAME_LEN, "%s", proto); 145 strlcpy(sdp->sd_proto_name, proto, GFS2_FSNAME_LEN);
146 snprintf(sdp->sd_table_name, GFS2_FSNAME_LEN, "%s", table); 146 strlcpy(sdp->sd_table_name, table, GFS2_FSNAME_LEN);
147 147
148 table = sdp->sd_table_name; 148 table = sdp->sd_table_name;
149 while ((table = strchr(table, '/'))) 149 while ((table = strchr(table, '/')))
diff --git a/fs/gfs2/ops_super.c b/fs/gfs2/ops_super.c
index 2278c68b7e35..0b7cc920eb89 100644
--- a/fs/gfs2/ops_super.c
+++ b/fs/gfs2/ops_super.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. 2 * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
3 * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved. 3 * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
4 * 4 *
5 * This copyrighted material is made available to anyone wishing to use, 5 * This copyrighted material is made available to anyone wishing to use,
6 * modify, copy, or redistribute it subject to the terms and conditions 6 * modify, copy, or redistribute it subject to the terms and conditions
@@ -52,7 +52,7 @@ static int gfs2_write_inode(struct inode *inode, int sync)
52 struct gfs2_inode *ip = GFS2_I(inode); 52 struct gfs2_inode *ip = GFS2_I(inode);
53 53
54 /* Check this is a "normal" inode */ 54 /* Check this is a "normal" inode */
55 if (inode->i_private) { 55 if (test_bit(GIF_USER, &ip->i_flags)) {
56 if (current->flags & PF_MEMALLOC) 56 if (current->flags & PF_MEMALLOC)
57 return 0; 57 return 0;
58 if (sync) 58 if (sync)
@@ -297,8 +297,9 @@ static int gfs2_remount_fs(struct super_block *sb, int *flags, char *data)
297 */ 297 */
298static void gfs2_drop_inode(struct inode *inode) 298static void gfs2_drop_inode(struct inode *inode)
299{ 299{
300 if (inode->i_private && inode->i_nlink) { 300 struct gfs2_inode *ip = GFS2_I(inode);
301 struct gfs2_inode *ip = GFS2_I(inode); 301
302 if (test_bit(GIF_USER, &ip->i_flags) && inode->i_nlink) {
302 struct gfs2_glock *gl = ip->i_iopen_gh.gh_gl; 303 struct gfs2_glock *gl = ip->i_iopen_gh.gh_gl;
303 if (gl && test_bit(GLF_DEMOTE, &gl->gl_flags)) 304 if (gl && test_bit(GLF_DEMOTE, &gl->gl_flags))
304 clear_nlink(inode); 305 clear_nlink(inode);
@@ -314,12 +315,13 @@ static void gfs2_drop_inode(struct inode *inode)
314 315
315static void gfs2_clear_inode(struct inode *inode) 316static void gfs2_clear_inode(struct inode *inode)
316{ 317{
318 struct gfs2_inode *ip = GFS2_I(inode);
319
317 /* This tells us its a "real" inode and not one which only 320 /* This tells us its a "real" inode and not one which only
318 * serves to contain an address space (see rgrp.c, meta_io.c) 321 * serves to contain an address space (see rgrp.c, meta_io.c)
319 * which therefore doesn't have its own glocks. 322 * which therefore doesn't have its own glocks.
320 */ 323 */
321 if (inode->i_private) { 324 if (test_bit(GIF_USER, &ip->i_flags)) {
322 struct gfs2_inode *ip = GFS2_I(inode);
323 ip->i_gl->gl_object = NULL; 325 ip->i_gl->gl_object = NULL;
324 gfs2_glock_schedule_for_reclaim(ip->i_gl); 326 gfs2_glock_schedule_for_reclaim(ip->i_gl);
325 gfs2_glock_put(ip->i_gl); 327 gfs2_glock_put(ip->i_gl);
@@ -419,7 +421,7 @@ static void gfs2_delete_inode(struct inode *inode)
419 struct gfs2_holder gh; 421 struct gfs2_holder gh;
420 int error; 422 int error;
421 423
422 if (!inode->i_private) 424 if (!test_bit(GIF_USER, &ip->i_flags))
423 goto out; 425 goto out;
424 426
425 error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh); 427 error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh);
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 7e8f0b1d6c6e..6387523a3153 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -1495,7 +1495,7 @@ u64 gfs2_alloc_block(struct gfs2_inode *ip, unsigned int *n)
1495 1495
1496 al->al_alloced += *n; 1496 al->al_alloced += *n;
1497 1497
1498 gfs2_statfs_change(sdp, 0, -*n, 0); 1498 gfs2_statfs_change(sdp, 0, -(s64)*n, 0);
1499 gfs2_quota_change(ip, *n, ip->i_inode.i_uid, ip->i_inode.i_gid); 1499 gfs2_quota_change(ip, *n, ip->i_inode.i_uid, ip->i_inode.i_gid);
1500 1500
1501 spin_lock(&sdp->sd_rindex_spin); 1501 spin_lock(&sdp->sd_rindex_spin);
diff --git a/fs/hppfs/Makefile b/fs/hppfs/Makefile
index 8a1f50344368..3a982bd975d2 100644
--- a/fs/hppfs/Makefile
+++ b/fs/hppfs/Makefile
@@ -3,7 +3,4 @@
3# Licensed under the GPL 3# Licensed under the GPL
4# 4#
5 5
6hppfs-objs := hppfs.o 6obj-$(CONFIG_HPPFS) += hppfs.o
7
8obj-y =
9obj-$(CONFIG_HPPFS) += $(hppfs-objs)
diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c
index 0b3ffa9840c2..4d4760e687c3 100644
--- a/fs/nfsd/nfs4callback.c
+++ b/fs/nfsd/nfs4callback.c
@@ -419,9 +419,9 @@ static int do_probe_callback(void *data)
419out_release_client: 419out_release_client:
420 rpc_shutdown_client(client); 420 rpc_shutdown_client(client);
421out_err: 421out_err:
422 put_nfs4_client(clp);
423 dprintk("NFSD: warning: no callback path to client %.*s\n", 422 dprintk("NFSD: warning: no callback path to client %.*s\n",
424 (int)clp->cl_name.len, clp->cl_name.data); 423 (int)clp->cl_name.len, clp->cl_name.data);
424 put_nfs4_client(clp);
425 return status; 425 return status;
426} 426}
427 427
diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c
index 41f84c92094f..10bfb466e068 100644
--- a/fs/ocfs2/alloc.c
+++ b/fs/ocfs2/alloc.c
@@ -2788,7 +2788,7 @@ static int ocfs2_merge_rec_right(struct inode *inode,
2788 BUG_ON(index >= le16_to_cpu(el->l_next_free_rec)); 2788 BUG_ON(index >= le16_to_cpu(el->l_next_free_rec));
2789 left_rec = &el->l_recs[index]; 2789 left_rec = &el->l_recs[index];
2790 2790
2791 if (index == le16_to_cpu(el->l_next_free_rec - 1) && 2791 if (index == le16_to_cpu(el->l_next_free_rec) - 1 &&
2792 le16_to_cpu(el->l_next_free_rec) == le16_to_cpu(el->l_count)) { 2792 le16_to_cpu(el->l_next_free_rec) == le16_to_cpu(el->l_count)) {
2793 /* we meet with a cross extent block merge. */ 2793 /* we meet with a cross extent block merge. */
2794 ret = ocfs2_get_right_path(inode, left_path, &right_path); 2794 ret = ocfs2_get_right_path(inode, left_path, &right_path);
@@ -2802,7 +2802,7 @@ static int ocfs2_merge_rec_right(struct inode *inode,
2802 BUG_ON(next_free <= 0); 2802 BUG_ON(next_free <= 0);
2803 right_rec = &right_el->l_recs[0]; 2803 right_rec = &right_el->l_recs[0];
2804 if (ocfs2_is_empty_extent(right_rec)) { 2804 if (ocfs2_is_empty_extent(right_rec)) {
2805 BUG_ON(le16_to_cpu(next_free) <= 1); 2805 BUG_ON(next_free <= 1);
2806 right_rec = &right_el->l_recs[1]; 2806 right_rec = &right_el->l_recs[1];
2807 } 2807 }
2808 2808
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index a1c3a1fab7f0..8c0e4b92574f 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -419,12 +419,8 @@ void sysfs_addrm_start(struct sysfs_addrm_cxt *acxt,
419 */ 419 */
420int sysfs_add_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd) 420int sysfs_add_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd)
421{ 421{
422 if (sysfs_find_dirent(acxt->parent_sd, sd->s_name)) { 422 if (sysfs_find_dirent(acxt->parent_sd, sd->s_name))
423 printk(KERN_WARNING "sysfs: duplicate filename '%s' "
424 "can not be created\n", sd->s_name);
425 WARN_ON(1);
426 return -EEXIST; 423 return -EEXIST;
427 }
428 424
429 sd->s_parent = sysfs_get(acxt->parent_sd); 425 sd->s_parent = sysfs_get(acxt->parent_sd);
430 426
diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h
index b381f4a5a0bd..dc936dddf161 100644
--- a/include/asm-x86/page.h
+++ b/include/asm-x86/page.h
@@ -10,8 +10,16 @@
10 10
11#ifdef __KERNEL__ 11#ifdef __KERNEL__
12 12
13#define PHYSICAL_PAGE_MASK (PAGE_MASK & __PHYSICAL_MASK) 13#define __PHYSICAL_MASK ((phys_addr_t)(1ULL << __PHYSICAL_MASK_SHIFT) - 1)
14#define PTE_MASK (_AT(long, PHYSICAL_PAGE_MASK)) 14#define __VIRTUAL_MASK ((1UL << __VIRTUAL_MASK_SHIFT) - 1)
15
16/* Cast PAGE_MASK to a signed type so that it is sign-extended if
17 virtual addresses are 32-bits but physical addresses are larger
18 (ie, 32-bit PAE). */
19#define PHYSICAL_PAGE_MASK (((signed long)PAGE_MASK) & __PHYSICAL_MASK)
20
21/* PTE_MASK extracts the PFN from a (pte|pmd|pud|pgd)val_t */
22#define PTE_MASK ((pteval_t)PHYSICAL_PAGE_MASK)
15 23
16#define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT) 24#define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT)
17#define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1)) 25#define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1))
@@ -24,9 +32,6 @@
24/* to align the pointer to the (next) page boundary */ 32/* to align the pointer to the (next) page boundary */
25#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) 33#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
26 34
27#define __PHYSICAL_MASK _AT(phys_addr_t, (_AC(1,ULL) << __PHYSICAL_MASK_SHIFT) - 1)
28#define __VIRTUAL_MASK ((_AC(1,UL) << __VIRTUAL_MASK_SHIFT) - 1)
29
30#ifndef __ASSEMBLY__ 35#ifndef __ASSEMBLY__
31#include <linux/types.h> 36#include <linux/types.h>
32#endif 37#endif
diff --git a/include/asm-x86/pgtable-3level.h b/include/asm-x86/pgtable-3level.h
index 8b4a9d44b7f4..c93dbb6c2624 100644
--- a/include/asm-x86/pgtable-3level.h
+++ b/include/asm-x86/pgtable-3level.h
@@ -120,9 +120,9 @@ static inline void pud_clear(pud_t *pudp)
120 write_cr3(pgd); 120 write_cr3(pgd);
121} 121}
122 122
123#define pud_page(pud) ((struct page *) __va(pud_val(pud) & PAGE_MASK)) 123#define pud_page(pud) ((struct page *) __va(pud_val(pud) & PTE_MASK))
124 124
125#define pud_page_vaddr(pud) ((unsigned long) __va(pud_val(pud) & PAGE_MASK)) 125#define pud_page_vaddr(pud) ((unsigned long) __va(pud_val(pud) & PTE_MASK))
126 126
127 127
128/* Find an entry in the second-level page table.. */ 128/* Find an entry in the second-level page table.. */
@@ -160,7 +160,7 @@ static inline int pte_none(pte_t pte)
160 160
161static inline unsigned long pte_pfn(pte_t pte) 161static inline unsigned long pte_pfn(pte_t pte)
162{ 162{
163 return (pte_val(pte) & ~_PAGE_NX) >> PAGE_SHIFT; 163 return (pte_val(pte) & PTE_MASK) >> PAGE_SHIFT;
164} 164}
165 165
166/* 166/*
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h
index 55c3a0e3a8ce..97c271b2910b 100644
--- a/include/asm-x86/pgtable.h
+++ b/include/asm-x86/pgtable.h
@@ -57,6 +57,7 @@
57#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | \ 57#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | \
58 _PAGE_DIRTY) 58 _PAGE_DIRTY)
59 59
60/* Set of bits not changed in pte_modify */
60#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_PCD | _PAGE_PWT | \ 61#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_PCD | _PAGE_PWT | \
61 _PAGE_ACCESSED | _PAGE_DIRTY) 62 _PAGE_ACCESSED | _PAGE_DIRTY)
62 63
@@ -304,7 +305,7 @@ static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
304 return __pgprot(preservebits | addbits); 305 return __pgprot(preservebits | addbits);
305} 306}
306 307
307#define pte_pgprot(x) __pgprot(pte_val(x) & (0xfff | _PAGE_NX)) 308#define pte_pgprot(x) __pgprot(pte_val(x) & ~PTE_MASK)
308 309
309#define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask) 310#define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask)
310 311
diff --git a/include/asm-x86/pgtable_32.h b/include/asm-x86/pgtable_32.h
index d7f0403bbecb..32ca03109a4c 100644
--- a/include/asm-x86/pgtable_32.h
+++ b/include/asm-x86/pgtable_32.h
@@ -88,7 +88,7 @@ extern unsigned long pg0[];
88/* To avoid harmful races, pmd_none(x) should check only the lower when PAE */ 88/* To avoid harmful races, pmd_none(x) should check only the lower when PAE */
89#define pmd_none(x) (!(unsigned long)pmd_val((x))) 89#define pmd_none(x) (!(unsigned long)pmd_val((x)))
90#define pmd_present(x) (pmd_val((x)) & _PAGE_PRESENT) 90#define pmd_present(x) (pmd_val((x)) & _PAGE_PRESENT)
91#define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE) 91#define pmd_bad(x) ((pmd_val(x) & (~PTE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
92 92
93#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) 93#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
94 94
@@ -159,7 +159,7 @@ static inline int pud_large(pud_t pud) { return 0; }
159#define pmd_page(pmd) (pfn_to_page(pmd_val((pmd)) >> PAGE_SHIFT)) 159#define pmd_page(pmd) (pfn_to_page(pmd_val((pmd)) >> PAGE_SHIFT))
160 160
161#define pmd_page_vaddr(pmd) \ 161#define pmd_page_vaddr(pmd) \
162 ((unsigned long)__va(pmd_val((pmd)) & PAGE_MASK)) 162 ((unsigned long)__va(pmd_val((pmd)) & PTE_MASK))
163 163
164#if defined(CONFIG_HIGHPTE) 164#if defined(CONFIG_HIGHPTE)
165#define pte_offset_map(dir, address) \ 165#define pte_offset_map(dir, address) \
diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h
index efe83dcbd412..1cc50d22d735 100644
--- a/include/asm-x86/pgtable_64.h
+++ b/include/asm-x86/pgtable_64.h
@@ -151,19 +151,19 @@ static inline void native_pgd_clear(pgd_t *pgd)
151 151
152#ifndef __ASSEMBLY__ 152#ifndef __ASSEMBLY__
153 153
154static inline unsigned long pgd_bad(pgd_t pgd) 154static inline int pgd_bad(pgd_t pgd)
155{ 155{
156 return pgd_val(pgd) & ~(PTE_MASK | _KERNPG_TABLE | _PAGE_USER); 156 return (pgd_val(pgd) & ~(PTE_MASK | _PAGE_USER)) != _KERNPG_TABLE;
157} 157}
158 158
159static inline unsigned long pud_bad(pud_t pud) 159static inline int pud_bad(pud_t pud)
160{ 160{
161 return pud_val(pud) & ~(PTE_MASK | _KERNPG_TABLE | _PAGE_USER); 161 return (pud_val(pud) & ~(PTE_MASK | _PAGE_USER)) != _KERNPG_TABLE;
162} 162}
163 163
164static inline unsigned long pmd_bad(pmd_t pmd) 164static inline int pmd_bad(pmd_t pmd)
165{ 165{
166 return pmd_val(pmd) & ~(PTE_MASK | _KERNPG_TABLE | _PAGE_USER); 166 return (pmd_val(pmd) & ~(PTE_MASK | _PAGE_USER)) != _KERNPG_TABLE;
167} 167}
168 168
169#define pte_none(x) (!pte_val((x))) 169#define pte_none(x) (!pte_val((x)))
diff --git a/include/asm-x86/xen/page.h b/include/asm-x86/xen/page.h
index 01799305f02a..baf3a4dce28c 100644
--- a/include/asm-x86/xen/page.h
+++ b/include/asm-x86/xen/page.h
@@ -127,7 +127,7 @@ static inline void set_phys_to_machine(unsigned long pfn, unsigned long mfn)
127 127
128static inline unsigned long pte_mfn(pte_t pte) 128static inline unsigned long pte_mfn(pte_t pte)
129{ 129{
130 return (pte.pte & ~_PAGE_NX) >> PAGE_SHIFT; 130 return (pte.pte & PTE_MASK) >> PAGE_SHIFT;
131} 131}
132 132
133static inline pte_t mfn_pte(unsigned long page_nr, pgprot_t pgprot) 133static inline pte_t mfn_pte(unsigned long page_nr, pgprot_t pgprot)
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index 5dfa739045c8..93b98856007a 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -92,7 +92,6 @@ header-y += if_slip.h
92header-y += if_strip.h 92header-y += if_strip.h
93header-y += if_tun.h 93header-y += if_tun.h
94header-y += if_tunnel.h 94header-y += if_tunnel.h
95header-y += in6.h
96header-y += in_route.h 95header-y += in_route.h
97header-y += ioctl.h 96header-y += ioctl.h
98header-y += ip6_tunnel.h 97header-y += ip6_tunnel.h
@@ -236,6 +235,7 @@ unifdef-y += if_vlan.h
236unifdef-y += igmp.h 235unifdef-y += igmp.h
237unifdef-y += inet_diag.h 236unifdef-y += inet_diag.h
238unifdef-y += in.h 237unifdef-y += in.h
238unifdef-y += in6.h
239unifdef-y += inotify.h 239unifdef-y += inotify.h
240unifdef-y += input.h 240unifdef-y += input.h
241unifdef-y += ip.h 241unifdef-y += ip.h
diff --git a/include/linux/atm.h b/include/linux/atm.h
index 60136684e0af..c791ddd96939 100644
--- a/include/linux/atm.h
+++ b/include/linux/atm.h
@@ -16,14 +16,11 @@
16 * documentation. Do not change them. 16 * documentation. Do not change them.
17 */ 17 */
18 18
19#ifdef __KERNEL__
20#include <linux/socket.h>
21#include <linux/types.h>
22#endif
23#include <linux/compiler.h> 19#include <linux/compiler.h>
24#include <linux/atmapi.h> 20#include <linux/atmapi.h>
25#include <linux/atmsap.h> 21#include <linux/atmsap.h>
26#include <linux/atmioc.h> 22#include <linux/atmioc.h>
23#include <linux/types.h>
27 24
28 25
29/* general ATM constants */ 26/* general ATM constants */
@@ -212,7 +209,7 @@ struct sockaddr_atmsvc {
212 char pub[ATM_E164_LEN+1]; /* public address (E.164) */ 209 char pub[ATM_E164_LEN+1]; /* public address (E.164) */
213 /* unused addresses must be bzero'ed */ 210 /* unused addresses must be bzero'ed */
214 char lij_type; /* role in LIJ call; one of ATM_LIJ* */ 211 char lij_type; /* role in LIJ call; one of ATM_LIJ* */
215 uint32_t lij_id; /* LIJ call identifier */ 212 __u32 lij_id; /* LIJ call identifier */
216 } sas_addr __ATM_API_ALIGN; /* SVC address */ 213 } sas_addr __ATM_API_ALIGN; /* SVC address */
217}; 214};
218 215
diff --git a/include/linux/atm_tcp.h b/include/linux/atm_tcp.h
index 18787f9b2f19..375638f8554b 100644
--- a/include/linux/atm_tcp.h
+++ b/include/linux/atm_tcp.h
@@ -8,11 +8,9 @@
8#define LINUX_ATM_TCP_H 8#define LINUX_ATM_TCP_H
9 9
10#include <linux/atmapi.h> 10#include <linux/atmapi.h>
11 11#include <linux/atm.h>
12#ifdef __KERNEL__
13#include <linux/types.h>
14#endif
15#include <linux/atmioc.h> 12#include <linux/atmioc.h>
13#include <linux/types.h>
16 14
17 15
18/* 16/*
@@ -20,9 +18,9 @@
20 */ 18 */
21 19
22struct atmtcp_hdr { 20struct atmtcp_hdr {
23 uint16_t vpi; 21 __u16 vpi;
24 uint16_t vci; 22 __u16 vci;
25 uint32_t length; /* ... of data part */ 23 __u32 length; /* ... of data part */
26}; 24};
27 25
28/* 26/*
diff --git a/include/linux/device.h b/include/linux/device.h
index 15e9fa3ad3af..14616e80213c 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -449,9 +449,21 @@ extern int __must_check device_reprobe(struct device *dev);
449/* 449/*
450 * Easy functions for dynamically creating devices on the fly 450 * Easy functions for dynamically creating devices on the fly
451 */ 451 */
452extern struct device *device_create_vargs(struct class *cls,
453 struct device *parent,
454 dev_t devt,
455 void *drvdata,
456 const char *fmt,
457 va_list vargs);
452extern struct device *device_create(struct class *cls, struct device *parent, 458extern struct device *device_create(struct class *cls, struct device *parent,
453 dev_t devt, const char *fmt, ...) 459 dev_t devt, const char *fmt, ...)
454 __attribute__((format(printf, 4, 5))); 460 __attribute__((format(printf, 4, 5)));
461extern struct device *device_create_drvdata(struct class *cls,
462 struct device *parent,
463 dev_t devt,
464 void *drvdata,
465 const char *fmt, ...)
466 __attribute__((format(printf, 5, 6)));
455extern void device_destroy(struct class *cls, dev_t devt); 467extern void device_destroy(struct class *cls, dev_t devt);
456 468
457/* 469/*
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 4ce3b7a979ba..fe56b86f2c67 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -2,8 +2,6 @@
2#define __HID_H 2#define __HID_H
3 3
4/* 4/*
5 * $Id: hid.h,v 1.24 2001/12/27 10:37:41 vojtech Exp $
6 *
7 * Copyright (c) 1999 Andreas Gal 5 * Copyright (c) 1999 Andreas Gal
8 * Copyright (c) 2000-2001 Vojtech Pavlik 6 * Copyright (c) 2000-2001 Vojtech Pavlik
9 * Copyright (c) 2006-2007 Jiri Kosina 7 * Copyright (c) 2006-2007 Jiri Kosina
@@ -285,6 +283,7 @@ struct hid_item {
285#define HID_QUIRK_HWHEEL_WHEEL_INVERT 0x04000000 283#define HID_QUIRK_HWHEEL_WHEEL_INVERT 0x04000000
286#define HID_QUIRK_MICROSOFT_KEYS 0x08000000 284#define HID_QUIRK_MICROSOFT_KEYS 0x08000000
287#define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000 285#define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000
286#define HID_QUIRK_APPLE_NUMLOCK_EMULATION 0x20000000
288 287
289/* 288/*
290 * Separate quirks for runtime report descriptor fixup 289 * Separate quirks for runtime report descriptor fixup
diff --git a/include/linux/hiddev.h b/include/linux/hiddev.h
index acbdae6d7ae1..a416b904ba90 100644
--- a/include/linux/hiddev.h
+++ b/include/linux/hiddev.h
@@ -2,8 +2,6 @@
2#define _HIDDEV_H 2#define _HIDDEV_H
3 3
4/* 4/*
5 * $Id: hiddev.h,v 1.2 2001/04/26 11:26:09 vojtech Exp $
6 *
7 * Copyright (c) 1999-2000 Vojtech Pavlik 5 * Copyright (c) 1999-2000 Vojtech Pavlik
8 * 6 *
9 * Sponsored by SuSE 7 * Sponsored by SuSE
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index b11e6e19e96c..2b0266484c84 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -514,10 +514,12 @@ struct net_device
514#define NETIF_F_NETNS_LOCAL 8192 /* Does not change network namespaces */ 514#define NETIF_F_NETNS_LOCAL 8192 /* Does not change network namespaces */
515#define NETIF_F_MULTI_QUEUE 16384 /* Has multiple TX/RX queues */ 515#define NETIF_F_MULTI_QUEUE 16384 /* Has multiple TX/RX queues */
516#define NETIF_F_LRO 32768 /* large receive offload */ 516#define NETIF_F_LRO 32768 /* large receive offload */
517#define NETIF_F_VLAN_TSO 65536 /* Supports TSO for VLANs */
518#define NETIF_F_VLAN_CSUM 131072 /* Supports TX checksumming for VLANs */
517 519
518 /* Segmentation offload features */ 520 /* Segmentation offload features */
519#define NETIF_F_GSO_SHIFT 16 521#define NETIF_F_GSO_SHIFT 20
520#define NETIF_F_GSO_MASK 0xffff0000 522#define NETIF_F_GSO_MASK 0xfff00000
521#define NETIF_F_TSO (SKB_GSO_TCPV4 << NETIF_F_GSO_SHIFT) 523#define NETIF_F_TSO (SKB_GSO_TCPV4 << NETIF_F_GSO_SHIFT)
522#define NETIF_F_UFO (SKB_GSO_UDP << NETIF_F_GSO_SHIFT) 524#define NETIF_F_UFO (SKB_GSO_UDP << NETIF_F_GSO_SHIFT)
523#define NETIF_F_GSO_ROBUST (SKB_GSO_DODGY << NETIF_F_GSO_SHIFT) 525#define NETIF_F_GSO_ROBUST (SKB_GSO_DODGY << NETIF_F_GSO_SHIFT)
diff --git a/include/linux/sunrpc/svc_rdma.h b/include/linux/sunrpc/svc_rdma.h
index c11bbcc081f9..05eb4664d0dd 100644
--- a/include/linux/sunrpc/svc_rdma.h
+++ b/include/linux/sunrpc/svc_rdma.h
@@ -71,7 +71,8 @@ extern atomic_t rdma_stat_sq_prod;
71 * completes. 71 * completes.
72 */ 72 */
73struct svc_rdma_op_ctxt { 73struct svc_rdma_op_ctxt {
74 struct svc_rdma_op_ctxt *next; 74 struct svc_rdma_op_ctxt *read_hdr;
75 struct list_head free_list;
75 struct xdr_buf arg; 76 struct xdr_buf arg;
76 struct list_head dto_q; 77 struct list_head dto_q;
77 enum ib_wr_opcode wr_op; 78 enum ib_wr_opcode wr_op;
@@ -85,7 +86,6 @@ struct svc_rdma_op_ctxt {
85 struct page *pages[RPCSVC_MAXPAGES]; 86 struct page *pages[RPCSVC_MAXPAGES];
86}; 87};
87 88
88#define RDMACTXT_F_READ_DONE 1
89#define RDMACTXT_F_LAST_CTXT 2 89#define RDMACTXT_F_LAST_CTXT 2
90 90
91struct svcxprt_rdma { 91struct svcxprt_rdma {
@@ -104,7 +104,8 @@ struct svcxprt_rdma {
104 104
105 struct ib_pd *sc_pd; 105 struct ib_pd *sc_pd;
106 106
107 struct svc_rdma_op_ctxt *sc_ctxt_head; 107 atomic_t sc_ctxt_used;
108 struct list_head sc_ctxt_free;
108 int sc_ctxt_cnt; 109 int sc_ctxt_cnt;
109 int sc_ctxt_bump; 110 int sc_ctxt_bump;
110 int sc_ctxt_max; 111 int sc_ctxt_max;
@@ -123,6 +124,7 @@ struct svcxprt_rdma {
123 struct list_head sc_dto_q; /* DTO tasklet I/O pending Q */ 124 struct list_head sc_dto_q; /* DTO tasklet I/O pending Q */
124 struct list_head sc_read_complete_q; 125 struct list_head sc_read_complete_q;
125 spinlock_t sc_read_complete_lock; 126 spinlock_t sc_read_complete_lock;
127 struct work_struct sc_work;
126}; 128};
127/* sc_flags */ 129/* sc_flags */
128#define RDMAXPRT_RQ_PENDING 1 130#define RDMAXPRT_RQ_PENDING 1
@@ -164,8 +166,8 @@ extern int svc_rdma_sendto(struct svc_rqst *);
164 166
165/* svc_rdma_transport.c */ 167/* svc_rdma_transport.c */
166extern int svc_rdma_send(struct svcxprt_rdma *, struct ib_send_wr *); 168extern int svc_rdma_send(struct svcxprt_rdma *, struct ib_send_wr *);
167extern int svc_rdma_send_error(struct svcxprt_rdma *, struct rpcrdma_msg *, 169extern void svc_rdma_send_error(struct svcxprt_rdma *, struct rpcrdma_msg *,
168 enum rpcrdma_errcode); 170 enum rpcrdma_errcode);
169struct page *svc_rdma_get_page(void); 171struct page *svc_rdma_get_page(void);
170extern int svc_rdma_post_recv(struct svcxprt_rdma *); 172extern int svc_rdma_post_recv(struct svcxprt_rdma *);
171extern int svc_rdma_create_listen(struct svc_serv *, int, struct sockaddr *); 173extern int svc_rdma_create_listen(struct svc_serv *, int, struct sockaddr *);
diff --git a/include/linux/usb/cdc.h b/include/linux/usb/cdc.h
index 71e52f2f6a38..ca228bb94218 100644
--- a/include/linux/usb/cdc.h
+++ b/include/linux/usb/cdc.h
@@ -130,6 +130,15 @@ struct usb_cdc_ether_desc {
130 __u8 bNumberPowerFilters; 130 __u8 bNumberPowerFilters;
131} __attribute__ ((packed)); 131} __attribute__ ((packed));
132 132
133/* "Telephone Control Model Functional Descriptor" from CDC WMC spec 6.3..3 */
134struct usb_cdc_dmm_desc {
135 __u8 bFunctionLength;
136 __u8 bDescriptorType;
137 __u8 bDescriptorSubtype;
138 __u16 bcdVersion;
139 __le16 wMaxCommand;
140} __attribute__ ((packed));
141
133/* "MDLM Functional Descriptor" from CDC WMC spec 6.7.2.3 */ 142/* "MDLM Functional Descriptor" from CDC WMC spec 6.7.2.3 */
134struct usb_cdc_mdlm_desc { 143struct usb_cdc_mdlm_desc {
135 __u8 bLength; 144 __u8 bLength;
diff --git a/include/media/videobuf-core.h b/include/media/videobuf-core.h
index 5b39a22533fe..874f1340d049 100644
--- a/include/media/videobuf-core.h
+++ b/include/media/videobuf-core.h
@@ -237,6 +237,9 @@ unsigned int videobuf_poll_stream(struct file *file,
237int videobuf_mmap_setup(struct videobuf_queue *q, 237int videobuf_mmap_setup(struct videobuf_queue *q,
238 unsigned int bcount, unsigned int bsize, 238 unsigned int bcount, unsigned int bsize,
239 enum v4l2_memory memory); 239 enum v4l2_memory memory);
240int __videobuf_mmap_setup(struct videobuf_queue *q,
241 unsigned int bcount, unsigned int bsize,
242 enum v4l2_memory memory);
240int videobuf_mmap_free(struct videobuf_queue *q); 243int videobuf_mmap_free(struct videobuf_queue *q);
241int videobuf_mmap_mapper(struct videobuf_queue *q, 244int videobuf_mmap_mapper(struct videobuf_queue *q,
242 struct vm_area_struct *vma); 245 struct vm_area_struct *vma);
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 4a80d74975e8..dae3f9ec1154 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1594,13 +1594,16 @@ void ieee80211_wake_queues(struct ieee80211_hw *hw);
1594void ieee80211_scan_completed(struct ieee80211_hw *hw); 1594void ieee80211_scan_completed(struct ieee80211_hw *hw);
1595 1595
1596/** 1596/**
1597 * ieee80211_iterate_active_interfaces - iterate active interfaces 1597 * ieee80211_iterate_active_interfaces- iterate active interfaces
1598 * 1598 *
1599 * This function iterates over the interfaces associated with a given 1599 * This function iterates over the interfaces associated with a given
1600 * hardware that are currently active and calls the callback for them. 1600 * hardware that are currently active and calls the callback for them.
1601 * This function allows the iterator function to sleep, when the iterator
1602 * function is atomic @ieee80211_iterate_active_interfaces_atomic can
1603 * be used.
1601 * 1604 *
1602 * @hw: the hardware struct of which the interfaces should be iterated over 1605 * @hw: the hardware struct of which the interfaces should be iterated over
1603 * @iterator: the iterator function to call, cannot sleep 1606 * @iterator: the iterator function to call
1604 * @data: first argument of the iterator function 1607 * @data: first argument of the iterator function
1605 */ 1608 */
1606void ieee80211_iterate_active_interfaces(struct ieee80211_hw *hw, 1609void ieee80211_iterate_active_interfaces(struct ieee80211_hw *hw,
@@ -1609,6 +1612,24 @@ void ieee80211_iterate_active_interfaces(struct ieee80211_hw *hw,
1609 void *data); 1612 void *data);
1610 1613
1611/** 1614/**
1615 * ieee80211_iterate_active_interfaces_atomic - iterate active interfaces
1616 *
1617 * This function iterates over the interfaces associated with a given
1618 * hardware that are currently active and calls the callback for them.
1619 * This function requires the iterator callback function to be atomic,
1620 * if that is not desired, use @ieee80211_iterate_active_interfaces instead.
1621 *
1622 * @hw: the hardware struct of which the interfaces should be iterated over
1623 * @iterator: the iterator function to call, cannot sleep
1624 * @data: first argument of the iterator function
1625 */
1626void ieee80211_iterate_active_interfaces_atomic(struct ieee80211_hw *hw,
1627 void (*iterator)(void *data,
1628 u8 *mac,
1629 struct ieee80211_vif *vif),
1630 void *data);
1631
1632/**
1612 * ieee80211_start_tx_ba_session - Start a tx Block Ack session. 1633 * ieee80211_start_tx_ba_session - Start a tx Block Ack session.
1613 * @hw: pointer as obtained from ieee80211_alloc_hw(). 1634 * @hw: pointer as obtained from ieee80211_alloc_hw().
1614 * @ra: receiver address of the BA session recipient 1635 * @ra: receiver address of the BA session recipient
diff --git a/include/net/ndisc.h b/include/net/ndisc.h
index 9c451ff2f4f4..a01b7c4dc763 100644
--- a/include/net/ndisc.h
+++ b/include/net/ndisc.h
@@ -129,6 +129,10 @@ extern int ndisc_ifinfo_sysctl_change(struct ctl_table *ctl,
129 void __user *buffer, 129 void __user *buffer,
130 size_t *lenp, 130 size_t *lenp,
131 loff_t *ppos); 131 loff_t *ppos);
132int ndisc_ifinfo_sysctl_strategy(ctl_table *ctl, int __user *name,
133 int nlen, void __user *oldval,
134 size_t __user *oldlenp,
135 void __user *newval, size_t newlen);
132#endif 136#endif
133 137
134extern void inet6_ifinfo_notify(int event, 138extern void inet6_ifinfo_notify(int event,
diff --git a/lib/lmb.c b/lib/lmb.c
index 867f7b5a8231..5d7b9286503e 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -48,7 +48,8 @@ void lmb_dump_all(void)
48 } 48 }
49 49
50 pr_info(" reserved.cnt = 0x%lx\n", lmb.reserved.cnt); 50 pr_info(" reserved.cnt = 0x%lx\n", lmb.reserved.cnt);
51 pr_info(" reserved.size = 0x%lx\n", lmb.reserved.size); 51 pr_info(" reserved.size = 0x%llx\n",
52 (unsigned long long)lmb.memory.size);
52 for (i=0; i < lmb.reserved.cnt ;i++) { 53 for (i=0; i < lmb.reserved.cnt ;i++) {
53 pr_info(" reserved.region[0x%lx].base = 0x%llx\n", 54 pr_info(" reserved.region[0x%lx].base = 0x%llx\n",
54 i, (unsigned long long)lmb.reserved.region[i].base); 55 i, (unsigned long long)lmb.reserved.region[i].base);
diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index 7c4f9e097095..f2e574dbc300 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -172,30 +172,22 @@ postcore_initcall(bdi_class_init);
172int bdi_register(struct backing_dev_info *bdi, struct device *parent, 172int bdi_register(struct backing_dev_info *bdi, struct device *parent,
173 const char *fmt, ...) 173 const char *fmt, ...)
174{ 174{
175 char *name;
176 va_list args; 175 va_list args;
177 int ret = 0; 176 int ret = 0;
178 struct device *dev; 177 struct device *dev;
179 178
180 va_start(args, fmt); 179 va_start(args, fmt);
181 name = kvasprintf(GFP_KERNEL, fmt, args); 180 dev = device_create_vargs(bdi_class, parent, MKDEV(0, 0), bdi, fmt, args);
182 va_end(args); 181 va_end(args);
183
184 if (!name)
185 return -ENOMEM;
186
187 dev = device_create(bdi_class, parent, MKDEV(0, 0), name);
188 if (IS_ERR(dev)) { 182 if (IS_ERR(dev)) {
189 ret = PTR_ERR(dev); 183 ret = PTR_ERR(dev);
190 goto exit; 184 goto exit;
191 } 185 }
192 186
193 bdi->dev = dev; 187 bdi->dev = dev;
194 dev_set_drvdata(bdi->dev, bdi); 188 bdi_debug_register(bdi, dev_name(dev));
195 bdi_debug_register(bdi, name);
196 189
197exit: 190exit:
198 kfree(name);
199 return ret; 191 return ret;
200} 192}
201EXPORT_SYMBOL(bdi_register); 193EXPORT_SYMBOL(bdi_register);
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index 2a739adaa92b..51961300b586 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -382,6 +382,24 @@ static void vlan_sync_address(struct net_device *dev,
382 memcpy(vlan->real_dev_addr, dev->dev_addr, ETH_ALEN); 382 memcpy(vlan->real_dev_addr, dev->dev_addr, ETH_ALEN);
383} 383}
384 384
385static void vlan_transfer_features(struct net_device *dev,
386 struct net_device *vlandev)
387{
388 unsigned long old_features = vlandev->features;
389
390 if (dev->features & NETIF_F_VLAN_TSO) {
391 vlandev->features &= ~VLAN_TSO_FEATURES;
392 vlandev->features |= dev->features & VLAN_TSO_FEATURES;
393 }
394 if (dev->features & NETIF_F_VLAN_CSUM) {
395 vlandev->features &= ~NETIF_F_ALL_CSUM;
396 vlandev->features |= dev->features & NETIF_F_ALL_CSUM;
397 }
398
399 if (old_features != vlandev->features)
400 netdev_features_change(vlandev);
401}
402
385static void __vlan_device_event(struct net_device *dev, unsigned long event) 403static void __vlan_device_event(struct net_device *dev, unsigned long event)
386{ 404{
387 switch (event) { 405 switch (event) {
@@ -410,10 +428,8 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
410 int i, flgs; 428 int i, flgs;
411 struct net_device *vlandev; 429 struct net_device *vlandev;
412 430
413 if (is_vlan_dev(dev)) { 431 if (is_vlan_dev(dev))
414 __vlan_device_event(dev, event); 432 __vlan_device_event(dev, event);
415 goto out;
416 }
417 433
418 grp = __vlan_find_group(dev); 434 grp = __vlan_find_group(dev);
419 if (!grp) 435 if (!grp)
@@ -450,6 +466,18 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
450 } 466 }
451 break; 467 break;
452 468
469 case NETDEV_FEAT_CHANGE:
470 /* Propagate device features to underlying device */
471 for (i = 0; i < VLAN_GROUP_ARRAY_LEN; i++) {
472 vlandev = vlan_group_get_device(grp, i);
473 if (!vlandev)
474 continue;
475
476 vlan_transfer_features(dev, vlandev);
477 }
478
479 break;
480
453 case NETDEV_DOWN: 481 case NETDEV_DOWN:
454 /* Put all VLANs for this dev in the down state too. */ 482 /* Put all VLANs for this dev in the down state too. */
455 for (i = 0; i < VLAN_GROUP_ARRAY_LEN; i++) { 483 for (i = 0; i < VLAN_GROUP_ARRAY_LEN; i++) {
diff --git a/net/8021q/vlan.h b/net/8021q/vlan.h
index 5229a72c7ea1..79625696e86a 100644
--- a/net/8021q/vlan.h
+++ b/net/8021q/vlan.h
@@ -7,6 +7,8 @@
7#define VLAN_GRP_HASH_SIZE (1 << VLAN_GRP_HASH_SHIFT) 7#define VLAN_GRP_HASH_SIZE (1 << VLAN_GRP_HASH_SHIFT)
8#define VLAN_GRP_HASH_MASK (VLAN_GRP_HASH_SIZE - 1) 8#define VLAN_GRP_HASH_MASK (VLAN_GRP_HASH_SIZE - 1)
9 9
10#define VLAN_TSO_FEATURES (NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG)
11
10/* Find a VLAN device by the MAC address of its Ethernet device, and 12/* Find a VLAN device by the MAC address of its Ethernet device, and
11 * it's VLAN ID. The default configuration is to have VLAN's scope 13 * it's VLAN ID. The default configuration is to have VLAN's scope
12 * to be box-wide, so the MAC will be ignored. The mac will only be 14 * to be box-wide, so the MAC will be ignored. The mac will only be
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index c961f0826005..b1cfbaa88db2 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -663,6 +663,11 @@ static int vlan_dev_init(struct net_device *dev)
663 (1<<__LINK_STATE_DORMANT))) | 663 (1<<__LINK_STATE_DORMANT))) |
664 (1<<__LINK_STATE_PRESENT); 664 (1<<__LINK_STATE_PRESENT);
665 665
666 if (real_dev->features & NETIF_F_VLAN_TSO)
667 dev->features |= real_dev->features & VLAN_TSO_FEATURES;
668 if (real_dev->features & NETIF_F_VLAN_CSUM)
669 dev->features |= real_dev->features & NETIF_F_ALL_CSUM;
670
666 /* ipv6 shared card related stuff */ 671 /* ipv6 shared card related stuff */
667 dev->dev_id = real_dev->dev_id; 672 dev->dev_id = real_dev->dev_id;
668 673
diff --git a/net/core/dev.c b/net/core/dev.c
index a1607bc0cd4c..582963077877 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -903,7 +903,11 @@ int dev_change_name(struct net_device *dev, char *newname)
903 strlcpy(dev->name, newname, IFNAMSIZ); 903 strlcpy(dev->name, newname, IFNAMSIZ);
904 904
905rollback: 905rollback:
906 device_rename(&dev->dev, dev->name); 906 err = device_rename(&dev->dev, dev->name);
907 if (err) {
908 memcpy(dev->name, oldname, IFNAMSIZ);
909 return err;
910 }
907 911
908 write_lock_bh(&dev_base_lock); 912 write_lock_bh(&dev_base_lock);
909 hlist_del(&dev->name_hlist); 913 hlist_del(&dev->name_hlist);
@@ -3137,7 +3141,7 @@ int dev_change_flags(struct net_device *dev, unsigned flags)
3137 * Load in the correct multicast list now the flags have changed. 3141 * Load in the correct multicast list now the flags have changed.
3138 */ 3142 */
3139 3143
3140 if (dev->change_rx_flags && (dev->flags ^ flags) & IFF_MULTICAST) 3144 if (dev->change_rx_flags && (old_flags ^ flags) & IFF_MULTICAST)
3141 dev->change_rx_flags(dev, IFF_MULTICAST); 3145 dev->change_rx_flags(dev, IFF_MULTICAST);
3142 3146
3143 dev_set_rx_mode(dev); 3147 dev_set_rx_mode(dev);
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index 8dca21110493..fdf537707e51 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -390,6 +390,7 @@ struct pktgen_thread {
390 int cpu; 390 int cpu;
391 391
392 wait_queue_head_t queue; 392 wait_queue_head_t queue;
393 struct completion start_done;
393}; 394};
394 395
395#define REMOVE 1 396#define REMOVE 1
@@ -3414,6 +3415,7 @@ static int pktgen_thread_worker(void *arg)
3414 BUG_ON(smp_processor_id() != cpu); 3415 BUG_ON(smp_processor_id() != cpu);
3415 3416
3416 init_waitqueue_head(&t->queue); 3417 init_waitqueue_head(&t->queue);
3418 complete(&t->start_done);
3417 3419
3418 pr_debug("pktgen: starting pktgen/%d: pid=%d\n", cpu, task_pid_nr(current)); 3420 pr_debug("pktgen: starting pktgen/%d: pid=%d\n", cpu, task_pid_nr(current));
3419 3421
@@ -3615,6 +3617,7 @@ static int __init pktgen_create_thread(int cpu)
3615 INIT_LIST_HEAD(&t->if_list); 3617 INIT_LIST_HEAD(&t->if_list);
3616 3618
3617 list_add_tail(&t->th_list, &pktgen_threads); 3619 list_add_tail(&t->th_list, &pktgen_threads);
3620 init_completion(&t->start_done);
3618 3621
3619 p = kthread_create(pktgen_thread_worker, t, "kpktgend_%d", cpu); 3622 p = kthread_create(pktgen_thread_worker, t, "kpktgend_%d", cpu);
3620 if (IS_ERR(p)) { 3623 if (IS_ERR(p)) {
@@ -3639,6 +3642,7 @@ static int __init pktgen_create_thread(int cpu)
3639 } 3642 }
3640 3643
3641 wake_up_process(p); 3644 wake_up_process(p);
3645 wait_for_completion(&t->start_done);
3642 3646
3643 return 0; 3647 return 0;
3644} 3648}
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 92f90ae46f4a..df41026b60db 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -160,7 +160,7 @@ static struct dst_ops ipv4_dst_ops = {
160 .negative_advice = ipv4_negative_advice, 160 .negative_advice = ipv4_negative_advice,
161 .link_failure = ipv4_link_failure, 161 .link_failure = ipv4_link_failure,
162 .update_pmtu = ip_rt_update_pmtu, 162 .update_pmtu = ip_rt_update_pmtu,
163 .local_out = ip_local_out, 163 .local_out = __ip_local_out,
164 .entry_size = sizeof(struct rtable), 164 .entry_size = sizeof(struct rtable),
165 .entries = ATOMIC_INIT(0), 165 .entries = ATOMIC_INIT(0),
166}; 166};
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index e591e09e5e4e..3a835578fd1c 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -1764,14 +1764,16 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)
1764 * 2) Configure prefixes with the auto flag set 1764 * 2) Configure prefixes with the auto flag set
1765 */ 1765 */
1766 1766
1767 /* Avoid arithmetic overflow. Really, we could 1767 if (valid_lft == INFINITY_LIFE_TIME)
1768 save rt_expires in seconds, likely valid_lft, 1768 rt_expires = ~0UL;
1769 but it would require division in fib gc, that it 1769 else if (valid_lft >= 0x7FFFFFFF/HZ) {
1770 not good. 1770 /* Avoid arithmetic overflow. Really, we could
1771 */ 1771 * save rt_expires in seconds, likely valid_lft,
1772 if (valid_lft >= 0x7FFFFFFF/HZ) 1772 * but it would require division in fib gc, that it
1773 * not good.
1774 */
1773 rt_expires = 0x7FFFFFFF - (0x7FFFFFFF % HZ); 1775 rt_expires = 0x7FFFFFFF - (0x7FFFFFFF % HZ);
1774 else 1776 } else
1775 rt_expires = valid_lft * HZ; 1777 rt_expires = valid_lft * HZ;
1776 1778
1777 /* 1779 /*
@@ -1779,7 +1781,7 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)
1779 * Avoid arithmetic overflow there as well. 1781 * Avoid arithmetic overflow there as well.
1780 * Overflow can happen only if HZ < USER_HZ. 1782 * Overflow can happen only if HZ < USER_HZ.
1781 */ 1783 */
1782 if (HZ < USER_HZ && rt_expires > 0x7FFFFFFF / USER_HZ) 1784 if (HZ < USER_HZ && ~rt_expires && rt_expires > 0x7FFFFFFF / USER_HZ)
1783 rt_expires = 0x7FFFFFFF / USER_HZ; 1785 rt_expires = 0x7FFFFFFF / USER_HZ;
1784 1786
1785 if (pinfo->onlink) { 1787 if (pinfo->onlink) {
@@ -1788,17 +1790,28 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)
1788 dev->ifindex, 1); 1790 dev->ifindex, 1);
1789 1791
1790 if (rt && ((rt->rt6i_flags & (RTF_GATEWAY | RTF_DEFAULT)) == 0)) { 1792 if (rt && ((rt->rt6i_flags & (RTF_GATEWAY | RTF_DEFAULT)) == 0)) {
1791 if (rt->rt6i_flags&RTF_EXPIRES) { 1793 /* Autoconf prefix route */
1792 if (valid_lft == 0) { 1794 if (valid_lft == 0) {
1793 ip6_del_rt(rt); 1795 ip6_del_rt(rt);
1794 rt = NULL; 1796 rt = NULL;
1795 } else { 1797 } else if (~rt_expires) {
1796 rt->rt6i_expires = jiffies + rt_expires; 1798 /* not infinity */
1797 } 1799 rt->rt6i_expires = jiffies + rt_expires;
1800 rt->rt6i_flags |= RTF_EXPIRES;
1801 } else {
1802 rt->rt6i_flags &= ~RTF_EXPIRES;
1803 rt->rt6i_expires = 0;
1798 } 1804 }
1799 } else if (valid_lft) { 1805 } else if (valid_lft) {
1806 int flags = RTF_ADDRCONF | RTF_PREFIX_RT;
1807 clock_t expires = 0;
1808 if (~rt_expires) {
1809 /* not infinity */
1810 flags |= RTF_EXPIRES;
1811 expires = jiffies_to_clock_t(rt_expires);
1812 }
1800 addrconf_prefix_route(&pinfo->prefix, pinfo->prefix_len, 1813 addrconf_prefix_route(&pinfo->prefix, pinfo->prefix_len,
1801 dev, jiffies_to_clock_t(rt_expires), RTF_ADDRCONF|RTF_EXPIRES|RTF_PREFIX_RT); 1814 dev, expires, flags);
1802 } 1815 }
1803 if (rt) 1816 if (rt)
1804 dst_release(&rt->u.dst); 1817 dst_release(&rt->u.dst);
@@ -2021,7 +2034,8 @@ static int inet6_addr_add(struct net *net, int ifindex, struct in6_addr *pfx,
2021 struct inet6_dev *idev; 2034 struct inet6_dev *idev;
2022 struct net_device *dev; 2035 struct net_device *dev;
2023 int scope; 2036 int scope;
2024 u32 flags = RTF_EXPIRES; 2037 u32 flags;
2038 clock_t expires;
2025 2039
2026 ASSERT_RTNL(); 2040 ASSERT_RTNL();
2027 2041
@@ -2041,8 +2055,13 @@ static int inet6_addr_add(struct net *net, int ifindex, struct in6_addr *pfx,
2041 if (valid_lft == INFINITY_LIFE_TIME) { 2055 if (valid_lft == INFINITY_LIFE_TIME) {
2042 ifa_flags |= IFA_F_PERMANENT; 2056 ifa_flags |= IFA_F_PERMANENT;
2043 flags = 0; 2057 flags = 0;
2044 } else if (valid_lft >= 0x7FFFFFFF/HZ) 2058 expires = 0;
2045 valid_lft = 0x7FFFFFFF/HZ; 2059 } else {
2060 if (valid_lft >= 0x7FFFFFFF/HZ)
2061 valid_lft = 0x7FFFFFFF/HZ;
2062 flags = RTF_EXPIRES;
2063 expires = jiffies_to_clock_t(valid_lft * HZ);
2064 }
2046 2065
2047 if (prefered_lft == 0) 2066 if (prefered_lft == 0)
2048 ifa_flags |= IFA_F_DEPRECATED; 2067 ifa_flags |= IFA_F_DEPRECATED;
@@ -2060,7 +2079,7 @@ static int inet6_addr_add(struct net *net, int ifindex, struct in6_addr *pfx,
2060 spin_unlock_bh(&ifp->lock); 2079 spin_unlock_bh(&ifp->lock);
2061 2080
2062 addrconf_prefix_route(&ifp->addr, ifp->prefix_len, dev, 2081 addrconf_prefix_route(&ifp->addr, ifp->prefix_len, dev,
2063 jiffies_to_clock_t(valid_lft * HZ), flags); 2082 expires, flags);
2064 /* 2083 /*
2065 * Note that section 3.1 of RFC 4429 indicates 2084 * Note that section 3.1 of RFC 4429 indicates
2066 * that the Optimistic flag should not be set for 2085 * that the Optimistic flag should not be set for
@@ -3148,7 +3167,8 @@ inet6_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
3148static int inet6_addr_modify(struct inet6_ifaddr *ifp, u8 ifa_flags, 3167static int inet6_addr_modify(struct inet6_ifaddr *ifp, u8 ifa_flags,
3149 u32 prefered_lft, u32 valid_lft) 3168 u32 prefered_lft, u32 valid_lft)
3150{ 3169{
3151 u32 flags = RTF_EXPIRES; 3170 u32 flags;
3171 clock_t expires;
3152 3172
3153 if (!valid_lft || (prefered_lft > valid_lft)) 3173 if (!valid_lft || (prefered_lft > valid_lft))
3154 return -EINVAL; 3174 return -EINVAL;
@@ -3156,8 +3176,13 @@ static int inet6_addr_modify(struct inet6_ifaddr *ifp, u8 ifa_flags,
3156 if (valid_lft == INFINITY_LIFE_TIME) { 3176 if (valid_lft == INFINITY_LIFE_TIME) {
3157 ifa_flags |= IFA_F_PERMANENT; 3177 ifa_flags |= IFA_F_PERMANENT;
3158 flags = 0; 3178 flags = 0;
3159 } else if (valid_lft >= 0x7FFFFFFF/HZ) 3179 expires = 0;
3160 valid_lft = 0x7FFFFFFF/HZ; 3180 } else {
3181 if (valid_lft >= 0x7FFFFFFF/HZ)
3182 valid_lft = 0x7FFFFFFF/HZ;
3183 flags = RTF_EXPIRES;
3184 expires = jiffies_to_clock_t(valid_lft * HZ);
3185 }
3161 3186
3162 if (prefered_lft == 0) 3187 if (prefered_lft == 0)
3163 ifa_flags |= IFA_F_DEPRECATED; 3188 ifa_flags |= IFA_F_DEPRECATED;
@@ -3176,7 +3201,7 @@ static int inet6_addr_modify(struct inet6_ifaddr *ifp, u8 ifa_flags,
3176 ipv6_ifa_notify(0, ifp); 3201 ipv6_ifa_notify(0, ifp);
3177 3202
3178 addrconf_prefix_route(&ifp->addr, ifp->prefix_len, ifp->idev->dev, 3203 addrconf_prefix_route(&ifp->addr, ifp->prefix_len, ifp->idev->dev,
3179 jiffies_to_clock_t(valid_lft * HZ), flags); 3204 expires, flags);
3180 addrconf_verify(0); 3205 addrconf_verify(0);
3181 3206
3182 return 0; 3207 return 0;
@@ -4242,7 +4267,7 @@ static void addrconf_sysctl_register(struct inet6_dev *idev)
4242 neigh_sysctl_register(idev->dev, idev->nd_parms, NET_IPV6, 4267 neigh_sysctl_register(idev->dev, idev->nd_parms, NET_IPV6,
4243 NET_IPV6_NEIGH, "ipv6", 4268 NET_IPV6_NEIGH, "ipv6",
4244 &ndisc_ifinfo_sysctl_change, 4269 &ndisc_ifinfo_sysctl_change,
4245 NULL); 4270 ndisc_ifinfo_sysctl_strategy);
4246 __addrconf_sysctl_register(dev_net(idev->dev), idev->dev->name, 4271 __addrconf_sysctl_register(dev_net(idev->dev), idev->dev->name,
4247 idev->dev->ifindex, idev, &idev->cnf); 4272 idev->dev->ifindex, idev, &idev->cnf);
4248} 4273}
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
index a55fc05b8125..282fdb31f8ed 100644
--- a/net/ipv6/ndisc.c
+++ b/net/ipv6/ndisc.c
@@ -1727,10 +1727,10 @@ int ndisc_ifinfo_sysctl_change(struct ctl_table *ctl, int write, struct file * f
1727 return ret; 1727 return ret;
1728} 1728}
1729 1729
1730static int ndisc_ifinfo_sysctl_strategy(ctl_table *ctl, int __user *name, 1730int ndisc_ifinfo_sysctl_strategy(ctl_table *ctl, int __user *name,
1731 int nlen, void __user *oldval, 1731 int nlen, void __user *oldval,
1732 size_t __user *oldlenp, 1732 size_t __user *oldlenp,
1733 void __user *newval, size_t newlen) 1733 void __user *newval, size_t newlen)
1734{ 1734{
1735 struct net_device *dev = ctl->extra1; 1735 struct net_device *dev = ctl->extra1;
1736 struct inet6_dev *idev; 1736 struct inet6_dev *idev;
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 12bba0880345..48534c6c0735 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -109,7 +109,7 @@ static struct dst_ops ip6_dst_ops_template = {
109 .negative_advice = ip6_negative_advice, 109 .negative_advice = ip6_negative_advice,
110 .link_failure = ip6_link_failure, 110 .link_failure = ip6_link_failure,
111 .update_pmtu = ip6_rt_update_pmtu, 111 .update_pmtu = ip6_rt_update_pmtu,
112 .local_out = ip6_local_out, 112 .local_out = __ip6_local_out,
113 .entry_size = sizeof(struct rt6_info), 113 .entry_size = sizeof(struct rt6_info),
114 .entries = ATOMIC_INIT(0), 114 .entries = ATOMIC_INIT(0),
115}; 115};
@@ -475,7 +475,7 @@ int rt6_route_rcv(struct net_device *dev, u8 *opt, int len,
475 lifetime = ntohl(rinfo->lifetime); 475 lifetime = ntohl(rinfo->lifetime);
476 if (lifetime == 0xffffffff) { 476 if (lifetime == 0xffffffff) {
477 /* infinity */ 477 /* infinity */
478 } else if (lifetime > 0x7fffffff/HZ) { 478 } else if (lifetime > 0x7fffffff/HZ - 1) {
479 /* Avoid arithmetic overflow */ 479 /* Avoid arithmetic overflow */
480 lifetime = 0x7fffffff/HZ - 1; 480 lifetime = 0x7fffffff/HZ - 1;
481 } 481 }
@@ -1106,7 +1106,9 @@ int ip6_route_add(struct fib6_config *cfg)
1106 } 1106 }
1107 1107
1108 rt->u.dst.obsolete = -1; 1108 rt->u.dst.obsolete = -1;
1109 rt->rt6i_expires = jiffies + clock_t_to_jiffies(cfg->fc_expires); 1109 rt->rt6i_expires = (cfg->fc_flags & RTF_EXPIRES) ?
1110 jiffies + clock_t_to_jiffies(cfg->fc_expires) :
1111 0;
1110 1112
1111 if (cfg->fc_protocol == RTPROT_UNSPEC) 1113 if (cfg->fc_protocol == RTPROT_UNSPEC)
1112 cfg->fc_protocol = RTPROT_BOOT; 1114 cfg->fc_protocol = RTPROT_BOOT;
@@ -2200,7 +2202,9 @@ static int rt6_fill_node(struct sk_buff *skb, struct rt6_info *rt,
2200 2202
2201 NLA_PUT_U32(skb, RTA_PRIORITY, rt->rt6i_metric); 2203 NLA_PUT_U32(skb, RTA_PRIORITY, rt->rt6i_metric);
2202 2204
2203 expires = rt->rt6i_expires ? rt->rt6i_expires - jiffies : 0; 2205 expires = (rt->rt6i_flags & RTF_EXPIRES) ?
2206 rt->rt6i_expires - jiffies : 0;
2207
2204 if (rtnl_put_cacheinfo(skb, &rt->u.dst, 0, 0, 0, 2208 if (rtnl_put_cacheinfo(skb, &rt->u.dst, 0, 0, 0,
2205 expires, rt->u.dst.error) < 0) 2209 expires, rt->u.dst.error) < 0)
2206 goto nla_put_failure; 2210 goto nla_put_failure;
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 4adba09e80ca..e470bf12b765 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -3446,21 +3446,17 @@ static int ieee80211_sta_config_auth(struct net_device *dev,
3446 struct ieee80211_sta_bss *bss, *selected = NULL; 3446 struct ieee80211_sta_bss *bss, *selected = NULL;
3447 int top_rssi = 0, freq; 3447 int top_rssi = 0, freq;
3448 3448
3449 if (!(ifsta->flags & (IEEE80211_STA_AUTO_SSID_SEL |
3450 IEEE80211_STA_AUTO_BSSID_SEL | IEEE80211_STA_AUTO_CHANNEL_SEL))) {
3451 ifsta->state = IEEE80211_AUTHENTICATE;
3452 ieee80211_sta_reset_auth(dev, ifsta);
3453 return 0;
3454 }
3455
3456 spin_lock_bh(&local->sta_bss_lock); 3449 spin_lock_bh(&local->sta_bss_lock);
3457 freq = local->oper_channel->center_freq; 3450 freq = local->oper_channel->center_freq;
3458 list_for_each_entry(bss, &local->sta_bss_list, list) { 3451 list_for_each_entry(bss, &local->sta_bss_list, list) {
3459 if (!(bss->capability & WLAN_CAPABILITY_ESS)) 3452 if (!(bss->capability & WLAN_CAPABILITY_ESS))
3460 continue; 3453 continue;
3461 3454
3462 if (!!(bss->capability & WLAN_CAPABILITY_PRIVACY) ^ 3455 if ((ifsta->flags & (IEEE80211_STA_AUTO_SSID_SEL |
3463 !!sdata->default_key) 3456 IEEE80211_STA_AUTO_BSSID_SEL |
3457 IEEE80211_STA_AUTO_CHANNEL_SEL)) &&
3458 (!!(bss->capability & WLAN_CAPABILITY_PRIVACY) ^
3459 !!sdata->default_key))
3464 continue; 3460 continue;
3465 3461
3466 if (!(ifsta->flags & IEEE80211_STA_AUTO_CHANNEL_SEL) && 3462 if (!(ifsta->flags & IEEE80211_STA_AUTO_CHANNEL_SEL) &&
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 24a465c4df09..131e9e6c8a32 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -389,6 +389,41 @@ void ieee80211_iterate_active_interfaces(
389 struct ieee80211_local *local = hw_to_local(hw); 389 struct ieee80211_local *local = hw_to_local(hw);
390 struct ieee80211_sub_if_data *sdata; 390 struct ieee80211_sub_if_data *sdata;
391 391
392 rtnl_lock();
393
394 list_for_each_entry(sdata, &local->interfaces, list) {
395 switch (sdata->vif.type) {
396 case IEEE80211_IF_TYPE_INVALID:
397 case IEEE80211_IF_TYPE_MNTR:
398 case IEEE80211_IF_TYPE_VLAN:
399 continue;
400 case IEEE80211_IF_TYPE_AP:
401 case IEEE80211_IF_TYPE_STA:
402 case IEEE80211_IF_TYPE_IBSS:
403 case IEEE80211_IF_TYPE_WDS:
404 case IEEE80211_IF_TYPE_MESH_POINT:
405 break;
406 }
407 if (sdata->dev == local->mdev)
408 continue;
409 if (netif_running(sdata->dev))
410 iterator(data, sdata->dev->dev_addr,
411 &sdata->vif);
412 }
413
414 rtnl_unlock();
415}
416EXPORT_SYMBOL_GPL(ieee80211_iterate_active_interfaces);
417
418void ieee80211_iterate_active_interfaces_atomic(
419 struct ieee80211_hw *hw,
420 void (*iterator)(void *data, u8 *mac,
421 struct ieee80211_vif *vif),
422 void *data)
423{
424 struct ieee80211_local *local = hw_to_local(hw);
425 struct ieee80211_sub_if_data *sdata;
426
392 rcu_read_lock(); 427 rcu_read_lock();
393 428
394 list_for_each_entry_rcu(sdata, &local->interfaces, list) { 429 list_for_each_entry_rcu(sdata, &local->interfaces, list) {
@@ -413,4 +448,4 @@ void ieee80211_iterate_active_interfaces(
413 448
414 rcu_read_unlock(); 449 rcu_read_unlock();
415} 450}
416EXPORT_SYMBOL_GPL(ieee80211_iterate_active_interfaces); 451EXPORT_SYMBOL_GPL(ieee80211_iterate_active_interfaces_atomic);
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c
index 1086df7478bc..9360fc81e8c7 100644
--- a/net/sched/cls_api.c
+++ b/net/sched/cls_api.c
@@ -220,7 +220,7 @@ replay:
220 tp = kzalloc(sizeof(*tp), GFP_KERNEL); 220 tp = kzalloc(sizeof(*tp), GFP_KERNEL);
221 if (tp == NULL) 221 if (tp == NULL)
222 goto errout; 222 goto errout;
223 err = -EINVAL; 223 err = -ENOENT;
224 tp_ops = tcf_proto_lookup_ops(tca[TCA_KIND]); 224 tp_ops = tcf_proto_lookup_ops(tca[TCA_KIND]);
225 if (tp_ops == NULL) { 225 if (tp_ops == NULL) {
226#ifdef CONFIG_KMOD 226#ifdef CONFIG_KMOD
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
index d8e8d79a8451..e46c825f4954 100644
--- a/net/sunrpc/svc_xprt.c
+++ b/net/sunrpc/svc_xprt.c
@@ -6,30 +6,9 @@
6 6
7#include <linux/sched.h> 7#include <linux/sched.h>
8#include <linux/errno.h> 8#include <linux/errno.h>
9#include <linux/fcntl.h>
10#include <linux/net.h>
11#include <linux/in.h>
12#include <linux/inet.h>
13#include <linux/udp.h>
14#include <linux/tcp.h>
15#include <linux/unistd.h>
16#include <linux/slab.h>
17#include <linux/netdevice.h>
18#include <linux/skbuff.h>
19#include <linux/file.h>
20#include <linux/freezer.h> 9#include <linux/freezer.h>
21#include <linux/kthread.h> 10#include <linux/kthread.h>
22#include <net/sock.h> 11#include <net/sock.h>
23#include <net/checksum.h>
24#include <net/ip.h>
25#include <net/ipv6.h>
26#include <net/tcp_states.h>
27#include <linux/uaccess.h>
28#include <asm/ioctls.h>
29
30#include <linux/sunrpc/types.h>
31#include <linux/sunrpc/clnt.h>
32#include <linux/sunrpc/xdr.h>
33#include <linux/sunrpc/stats.h> 12#include <linux/sunrpc/stats.h>
34#include <linux/sunrpc/svc_xprt.h> 13#include <linux/sunrpc/svc_xprt.h>
35 14
@@ -296,8 +275,6 @@ void svc_xprt_enqueue(struct svc_xprt *xprt)
296 if (!(xprt->xpt_flags & 275 if (!(xprt->xpt_flags &
297 ((1<<XPT_CONN)|(1<<XPT_DATA)|(1<<XPT_CLOSE)|(1<<XPT_DEFERRED)))) 276 ((1<<XPT_CONN)|(1<<XPT_DATA)|(1<<XPT_CLOSE)|(1<<XPT_DEFERRED))))
298 return; 277 return;
299 if (test_bit(XPT_DEAD, &xprt->xpt_flags))
300 return;
301 278
302 cpu = get_cpu(); 279 cpu = get_cpu();
303 pool = svc_pool_for_cpu(xprt->xpt_server, cpu); 280 pool = svc_pool_for_cpu(xprt->xpt_server, cpu);
diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c
index 3f30ee6006ae..f24800f2c098 100644
--- a/net/sunrpc/svcauth_unix.c
+++ b/net/sunrpc/svcauth_unix.c
@@ -278,7 +278,7 @@ static int ip_map_show(struct seq_file *m,
278 dom = im->m_client->h.name; 278 dom = im->m_client->h.name;
279 279
280 if (ipv6_addr_v4mapped(&addr)) { 280 if (ipv6_addr_v4mapped(&addr)) {
281 seq_printf(m, "%s" NIPQUAD_FMT "%s\n", 281 seq_printf(m, "%s " NIPQUAD_FMT " %s\n",
282 im->m_class, 282 im->m_class,
283 ntohl(addr.s6_addr32[3]) >> 24 & 0xff, 283 ntohl(addr.s6_addr32[3]) >> 24 & 0xff,
284 ntohl(addr.s6_addr32[3]) >> 16 & 0xff, 284 ntohl(addr.s6_addr32[3]) >> 16 & 0xff,
@@ -286,7 +286,7 @@ static int ip_map_show(struct seq_file *m,
286 ntohl(addr.s6_addr32[3]) >> 0 & 0xff, 286 ntohl(addr.s6_addr32[3]) >> 0 & 0xff,
287 dom); 287 dom);
288 } else { 288 } else {
289 seq_printf(m, "%s" NIP6_FMT "%s\n", 289 seq_printf(m, "%s " NIP6_FMT " %s\n",
290 im->m_class, NIP6(addr), dom); 290 im->m_class, NIP6(addr), dom);
291 } 291 }
292 return 0; 292 return 0;
diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
index c22d6b6f2db4..06ab4841537b 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
@@ -260,11 +260,16 @@ static int rdma_read_max_sge(struct svcxprt_rdma *xprt, int sge_count)
260 * On our side, we need to read into a pagelist. The first page immediately 260 * On our side, we need to read into a pagelist. The first page immediately
261 * follows the RPC header. 261 * follows the RPC header.
262 * 262 *
263 * This function returns 1 to indicate success. The data is not yet in 263 * This function returns:
264 * 0 - No error and no read-list found.
265 *
266 * 1 - Successful read-list processing. The data is not yet in
264 * the pagelist and therefore the RPC request must be deferred. The 267 * the pagelist and therefore the RPC request must be deferred. The
265 * I/O completion will enqueue the transport again and 268 * I/O completion will enqueue the transport again and
266 * svc_rdma_recvfrom will complete the request. 269 * svc_rdma_recvfrom will complete the request.
267 * 270 *
271 * <0 - Error processing/posting read-list.
272 *
268 * NOTE: The ctxt must not be touched after the last WR has been posted 273 * NOTE: The ctxt must not be touched after the last WR has been posted
269 * because the I/O completion processing may occur on another 274 * because the I/O completion processing may occur on another
270 * processor and free / modify the context. Ne touche pas! 275 * processor and free / modify the context. Ne touche pas!
@@ -284,7 +289,6 @@ static int rdma_read_xdr(struct svcxprt_rdma *xprt,
284 u64 sgl_offset; 289 u64 sgl_offset;
285 struct rpcrdma_read_chunk *ch; 290 struct rpcrdma_read_chunk *ch;
286 struct svc_rdma_op_ctxt *ctxt = NULL; 291 struct svc_rdma_op_ctxt *ctxt = NULL;
287 struct svc_rdma_op_ctxt *head;
288 struct svc_rdma_op_ctxt *tmp_sge_ctxt; 292 struct svc_rdma_op_ctxt *tmp_sge_ctxt;
289 struct svc_rdma_op_ctxt *tmp_ch_ctxt; 293 struct svc_rdma_op_ctxt *tmp_ch_ctxt;
290 struct chunk_sge *ch_sge_ary; 294 struct chunk_sge *ch_sge_ary;
@@ -302,25 +306,19 @@ static int rdma_read_xdr(struct svcxprt_rdma *xprt,
302 ch_sge_ary = (struct chunk_sge *)tmp_ch_ctxt->sge; 306 ch_sge_ary = (struct chunk_sge *)tmp_ch_ctxt->sge;
303 307
304 svc_rdma_rcl_chunk_counts(ch, &ch_count, &byte_count); 308 svc_rdma_rcl_chunk_counts(ch, &ch_count, &byte_count);
309 if (ch_count > RPCSVC_MAXPAGES)
310 return -EINVAL;
305 sge_count = rdma_rcl_to_sge(xprt, rqstp, hdr_ctxt, rmsgp, 311 sge_count = rdma_rcl_to_sge(xprt, rqstp, hdr_ctxt, rmsgp,
306 sge, ch_sge_ary, 312 sge, ch_sge_ary,
307 ch_count, byte_count); 313 ch_count, byte_count);
308 head = svc_rdma_get_context(xprt);
309 sgl_offset = 0; 314 sgl_offset = 0;
310 ch_no = 0; 315 ch_no = 0;
311 316
312 for (ch = (struct rpcrdma_read_chunk *)&rmsgp->rm_body.rm_chunks[0]; 317 for (ch = (struct rpcrdma_read_chunk *)&rmsgp->rm_body.rm_chunks[0];
313 ch->rc_discrim != 0; ch++, ch_no++) { 318 ch->rc_discrim != 0; ch++, ch_no++) {
314next_sge: 319next_sge:
315 if (!ctxt) 320 ctxt = svc_rdma_get_context(xprt);
316 ctxt = head;
317 else {
318 ctxt->next = svc_rdma_get_context(xprt);
319 ctxt = ctxt->next;
320 }
321 ctxt->next = NULL;
322 ctxt->direction = DMA_FROM_DEVICE; 321 ctxt->direction = DMA_FROM_DEVICE;
323 clear_bit(RDMACTXT_F_READ_DONE, &ctxt->flags);
324 clear_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags); 322 clear_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags);
325 323
326 /* Prepare READ WR */ 324 /* Prepare READ WR */
@@ -347,20 +345,15 @@ next_sge:
347 * the client and the RPC needs to be enqueued. 345 * the client and the RPC needs to be enqueued.
348 */ 346 */
349 set_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags); 347 set_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags);
350 ctxt->next = hdr_ctxt; 348 ctxt->read_hdr = hdr_ctxt;
351 hdr_ctxt->next = head;
352 } 349 }
353 /* Post the read */ 350 /* Post the read */
354 err = svc_rdma_send(xprt, &read_wr); 351 err = svc_rdma_send(xprt, &read_wr);
355 if (err) { 352 if (err) {
356 printk(KERN_ERR "svcrdma: Error posting send = %d\n", 353 printk(KERN_ERR "svcrdma: Error %d posting RDMA_READ\n",
357 err); 354 err);
358 /* 355 set_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags);
359 * Break the circular list so free knows when 356 svc_rdma_put_context(ctxt, 0);
360 * to stop if the error happened to occur on
361 * the last read
362 */
363 ctxt->next = NULL;
364 goto out; 357 goto out;
365 } 358 }
366 atomic_inc(&rdma_stat_read); 359 atomic_inc(&rdma_stat_read);
@@ -371,7 +364,7 @@ next_sge:
371 goto next_sge; 364 goto next_sge;
372 } 365 }
373 sgl_offset = 0; 366 sgl_offset = 0;
374 err = 0; 367 err = 1;
375 } 368 }
376 369
377 out: 370 out:
@@ -389,25 +382,12 @@ next_sge:
389 while (rqstp->rq_resused) 382 while (rqstp->rq_resused)
390 rqstp->rq_respages[--rqstp->rq_resused] = NULL; 383 rqstp->rq_respages[--rqstp->rq_resused] = NULL;
391 384
392 if (err) { 385 return err;
393 printk(KERN_ERR "svcrdma : RDMA_READ error = %d\n", err);
394 set_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags);
395 /* Free the linked list of read contexts */
396 while (head != NULL) {
397 ctxt = head->next;
398 svc_rdma_put_context(head, 1);
399 head = ctxt;
400 }
401 return 0;
402 }
403
404 return 1;
405} 386}
406 387
407static int rdma_read_complete(struct svc_rqst *rqstp, 388static int rdma_read_complete(struct svc_rqst *rqstp,
408 struct svc_rdma_op_ctxt *data) 389 struct svc_rdma_op_ctxt *head)
409{ 390{
410 struct svc_rdma_op_ctxt *head = data->next;
411 int page_no; 391 int page_no;
412 int ret; 392 int ret;
413 393
@@ -433,21 +413,12 @@ static int rdma_read_complete(struct svc_rqst *rqstp,
433 rqstp->rq_arg.len = head->arg.len; 413 rqstp->rq_arg.len = head->arg.len;
434 rqstp->rq_arg.buflen = head->arg.buflen; 414 rqstp->rq_arg.buflen = head->arg.buflen;
435 415
416 /* Free the context */
417 svc_rdma_put_context(head, 0);
418
436 /* XXX: What should this be? */ 419 /* XXX: What should this be? */
437 rqstp->rq_prot = IPPROTO_MAX; 420 rqstp->rq_prot = IPPROTO_MAX;
438 421 svc_xprt_copy_addrs(rqstp, rqstp->rq_xprt);
439 /*
440 * Free the contexts we used to build the RDMA_READ. We have
441 * to be careful here because the context list uses the same
442 * next pointer used to chain the contexts associated with the
443 * RDMA_READ
444 */
445 data->next = NULL; /* terminate circular list */
446 do {
447 data = head->next;
448 svc_rdma_put_context(head, 0);
449 head = data;
450 } while (head != NULL);
451 422
452 ret = rqstp->rq_arg.head[0].iov_len 423 ret = rqstp->rq_arg.head[0].iov_len
453 + rqstp->rq_arg.page_len 424 + rqstp->rq_arg.page_len
@@ -457,8 +428,6 @@ static int rdma_read_complete(struct svc_rqst *rqstp,
457 ret, rqstp->rq_arg.len, rqstp->rq_arg.head[0].iov_base, 428 ret, rqstp->rq_arg.len, rqstp->rq_arg.head[0].iov_base,
458 rqstp->rq_arg.head[0].iov_len); 429 rqstp->rq_arg.head[0].iov_len);
459 430
460 /* Indicate that we've consumed an RQ credit */
461 rqstp->rq_xprt_ctxt = rqstp->rq_xprt;
462 svc_xprt_received(rqstp->rq_xprt); 431 svc_xprt_received(rqstp->rq_xprt);
463 return ret; 432 return ret;
464} 433}
@@ -480,13 +449,6 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
480 449
481 dprintk("svcrdma: rqstp=%p\n", rqstp); 450 dprintk("svcrdma: rqstp=%p\n", rqstp);
482 451
483 /*
484 * The rq_xprt_ctxt indicates if we've consumed an RQ credit
485 * or not. It is used in the rdma xpo_release_rqst function to
486 * determine whether or not to return an RQ WQE to the RQ.
487 */
488 rqstp->rq_xprt_ctxt = NULL;
489
490 spin_lock_bh(&rdma_xprt->sc_read_complete_lock); 452 spin_lock_bh(&rdma_xprt->sc_read_complete_lock);
491 if (!list_empty(&rdma_xprt->sc_read_complete_q)) { 453 if (!list_empty(&rdma_xprt->sc_read_complete_q)) {
492 ctxt = list_entry(rdma_xprt->sc_read_complete_q.next, 454 ctxt = list_entry(rdma_xprt->sc_read_complete_q.next,
@@ -537,21 +499,22 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
537 /* If the request is invalid, reply with an error */ 499 /* If the request is invalid, reply with an error */
538 if (len < 0) { 500 if (len < 0) {
539 if (len == -ENOSYS) 501 if (len == -ENOSYS)
540 (void)svc_rdma_send_error(rdma_xprt, rmsgp, ERR_VERS); 502 svc_rdma_send_error(rdma_xprt, rmsgp, ERR_VERS);
541 goto close_out; 503 goto close_out;
542 } 504 }
543 505
544 /* Read read-list data. If we would need to wait, defer 506 /* Read read-list data. */
545 * it. Not that in this case, we don't return the RQ credit 507 ret = rdma_read_xdr(rdma_xprt, rmsgp, rqstp, ctxt);
546 * until after the read completes. 508 if (ret > 0) {
547 */ 509 /* read-list posted, defer until data received from client. */
548 if (rdma_read_xdr(rdma_xprt, rmsgp, rqstp, ctxt)) {
549 svc_xprt_received(xprt); 510 svc_xprt_received(xprt);
550 return 0; 511 return 0;
551 } 512 }
552 513 if (ret < 0) {
553 /* Indicate we've consumed an RQ credit */ 514 /* Post of read-list failed, free context. */
554 rqstp->rq_xprt_ctxt = rqstp->rq_xprt; 515 svc_rdma_put_context(ctxt, 1);
516 return 0;
517 }
555 518
556 ret = rqstp->rq_arg.head[0].iov_len 519 ret = rqstp->rq_arg.head[0].iov_len
557 + rqstp->rq_arg.page_len 520 + rqstp->rq_arg.page_len
@@ -569,11 +532,8 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
569 return ret; 532 return ret;
570 533
571 close_out: 534 close_out:
572 if (ctxt) { 535 if (ctxt)
573 svc_rdma_put_context(ctxt, 1); 536 svc_rdma_put_context(ctxt, 1);
574 /* Indicate we've consumed an RQ credit */
575 rqstp->rq_xprt_ctxt = rqstp->rq_xprt;
576 }
577 dprintk("svcrdma: transport %p is closing\n", xprt); 537 dprintk("svcrdma: transport %p is closing\n", xprt);
578 /* 538 /*
579 * Set the close bit and enqueue it. svc_recv will see the 539 * Set the close bit and enqueue it. svc_recv will see the
diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
index 981f190c1b39..fb82b1b683f8 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
@@ -389,6 +389,17 @@ static int send_reply(struct svcxprt_rdma *rdma,
389 int page_no; 389 int page_no;
390 int ret; 390 int ret;
391 391
392 /* Post a recv buffer to handle another request. */
393 ret = svc_rdma_post_recv(rdma);
394 if (ret) {
395 printk(KERN_INFO
396 "svcrdma: could not post a receive buffer, err=%d."
397 "Closing transport %p.\n", ret, rdma);
398 set_bit(XPT_CLOSE, &rdma->sc_xprt.xpt_flags);
399 svc_rdma_put_context(ctxt, 0);
400 return -ENOTCONN;
401 }
402
392 /* Prepare the context */ 403 /* Prepare the context */
393 ctxt->pages[0] = page; 404 ctxt->pages[0] = page;
394 ctxt->count = 1; 405 ctxt->count = 1;
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
index af408fc12634..e132509d1db0 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
@@ -103,8 +103,8 @@ static int rdma_bump_context_cache(struct svcxprt_rdma *xprt)
103 spin_lock_bh(&xprt->sc_ctxt_lock); 103 spin_lock_bh(&xprt->sc_ctxt_lock);
104 if (ctxt) { 104 if (ctxt) {
105 at_least_one = 1; 105 at_least_one = 1;
106 ctxt->next = xprt->sc_ctxt_head; 106 INIT_LIST_HEAD(&ctxt->free_list);
107 xprt->sc_ctxt_head = ctxt; 107 list_add(&ctxt->free_list, &xprt->sc_ctxt_free);
108 } else { 108 } else {
109 /* kmalloc failed...give up for now */ 109 /* kmalloc failed...give up for now */
110 xprt->sc_ctxt_cnt--; 110 xprt->sc_ctxt_cnt--;
@@ -123,7 +123,7 @@ struct svc_rdma_op_ctxt *svc_rdma_get_context(struct svcxprt_rdma *xprt)
123 123
124 while (1) { 124 while (1) {
125 spin_lock_bh(&xprt->sc_ctxt_lock); 125 spin_lock_bh(&xprt->sc_ctxt_lock);
126 if (unlikely(xprt->sc_ctxt_head == NULL)) { 126 if (unlikely(list_empty(&xprt->sc_ctxt_free))) {
127 /* Try to bump my cache. */ 127 /* Try to bump my cache. */
128 spin_unlock_bh(&xprt->sc_ctxt_lock); 128 spin_unlock_bh(&xprt->sc_ctxt_lock);
129 129
@@ -136,12 +136,15 @@ struct svc_rdma_op_ctxt *svc_rdma_get_context(struct svcxprt_rdma *xprt)
136 schedule_timeout_uninterruptible(msecs_to_jiffies(500)); 136 schedule_timeout_uninterruptible(msecs_to_jiffies(500));
137 continue; 137 continue;
138 } 138 }
139 ctxt = xprt->sc_ctxt_head; 139 ctxt = list_entry(xprt->sc_ctxt_free.next,
140 xprt->sc_ctxt_head = ctxt->next; 140 struct svc_rdma_op_ctxt,
141 free_list);
142 list_del_init(&ctxt->free_list);
141 spin_unlock_bh(&xprt->sc_ctxt_lock); 143 spin_unlock_bh(&xprt->sc_ctxt_lock);
142 ctxt->xprt = xprt; 144 ctxt->xprt = xprt;
143 INIT_LIST_HEAD(&ctxt->dto_q); 145 INIT_LIST_HEAD(&ctxt->dto_q);
144 ctxt->count = 0; 146 ctxt->count = 0;
147 atomic_inc(&xprt->sc_ctxt_used);
145 break; 148 break;
146 } 149 }
147 return ctxt; 150 return ctxt;
@@ -159,14 +162,15 @@ void svc_rdma_put_context(struct svc_rdma_op_ctxt *ctxt, int free_pages)
159 put_page(ctxt->pages[i]); 162 put_page(ctxt->pages[i]);
160 163
161 for (i = 0; i < ctxt->count; i++) 164 for (i = 0; i < ctxt->count; i++)
162 dma_unmap_single(xprt->sc_cm_id->device->dma_device, 165 ib_dma_unmap_single(xprt->sc_cm_id->device,
163 ctxt->sge[i].addr, 166 ctxt->sge[i].addr,
164 ctxt->sge[i].length, 167 ctxt->sge[i].length,
165 ctxt->direction); 168 ctxt->direction);
169
166 spin_lock_bh(&xprt->sc_ctxt_lock); 170 spin_lock_bh(&xprt->sc_ctxt_lock);
167 ctxt->next = xprt->sc_ctxt_head; 171 list_add(&ctxt->free_list, &xprt->sc_ctxt_free);
168 xprt->sc_ctxt_head = ctxt;
169 spin_unlock_bh(&xprt->sc_ctxt_lock); 172 spin_unlock_bh(&xprt->sc_ctxt_lock);
173 atomic_dec(&xprt->sc_ctxt_used);
170} 174}
171 175
172/* ib_cq event handler */ 176/* ib_cq event handler */
@@ -228,23 +232,8 @@ static void dto_tasklet_func(unsigned long data)
228 list_del_init(&xprt->sc_dto_q); 232 list_del_init(&xprt->sc_dto_q);
229 spin_unlock_irqrestore(&dto_lock, flags); 233 spin_unlock_irqrestore(&dto_lock, flags);
230 234
231 if (test_and_clear_bit(RDMAXPRT_RQ_PENDING, &xprt->sc_flags)) { 235 rq_cq_reap(xprt);
232 ib_req_notify_cq(xprt->sc_rq_cq, IB_CQ_NEXT_COMP); 236 sq_cq_reap(xprt);
233 rq_cq_reap(xprt);
234 set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags);
235 /*
236 * If data arrived before established event,
237 * don't enqueue. This defers RPC I/O until the
238 * RDMA connection is complete.
239 */
240 if (!test_bit(RDMAXPRT_CONN_PENDING, &xprt->sc_flags))
241 svc_xprt_enqueue(&xprt->sc_xprt);
242 }
243
244 if (test_and_clear_bit(RDMAXPRT_SQ_PENDING, &xprt->sc_flags)) {
245 ib_req_notify_cq(xprt->sc_sq_cq, IB_CQ_NEXT_COMP);
246 sq_cq_reap(xprt);
247 }
248 237
249 svc_xprt_put(&xprt->sc_xprt); 238 svc_xprt_put(&xprt->sc_xprt);
250 spin_lock_irqsave(&dto_lock, flags); 239 spin_lock_irqsave(&dto_lock, flags);
@@ -263,11 +252,15 @@ static void rq_comp_handler(struct ib_cq *cq, void *cq_context)
263 struct svcxprt_rdma *xprt = cq_context; 252 struct svcxprt_rdma *xprt = cq_context;
264 unsigned long flags; 253 unsigned long flags;
265 254
255 /* Guard against unconditional flush call for destroyed QP */
256 if (atomic_read(&xprt->sc_xprt.xpt_ref.refcount)==0)
257 return;
258
266 /* 259 /*
267 * Set the bit regardless of whether or not it's on the list 260 * Set the bit regardless of whether or not it's on the list
268 * because it may be on the list already due to an SQ 261 * because it may be on the list already due to an SQ
269 * completion. 262 * completion.
270 */ 263 */
271 set_bit(RDMAXPRT_RQ_PENDING, &xprt->sc_flags); 264 set_bit(RDMAXPRT_RQ_PENDING, &xprt->sc_flags);
272 265
273 /* 266 /*
@@ -290,6 +283,8 @@ static void rq_comp_handler(struct ib_cq *cq, void *cq_context)
290 * 283 *
291 * Take all completing WC off the CQE and enqueue the associated DTO 284 * Take all completing WC off the CQE and enqueue the associated DTO
292 * context on the dto_q for the transport. 285 * context on the dto_q for the transport.
286 *
287 * Note that caller must hold a transport reference.
293 */ 288 */
294static void rq_cq_reap(struct svcxprt_rdma *xprt) 289static void rq_cq_reap(struct svcxprt_rdma *xprt)
295{ 290{
@@ -297,29 +292,47 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
297 struct ib_wc wc; 292 struct ib_wc wc;
298 struct svc_rdma_op_ctxt *ctxt = NULL; 293 struct svc_rdma_op_ctxt *ctxt = NULL;
299 294
295 if (!test_and_clear_bit(RDMAXPRT_RQ_PENDING, &xprt->sc_flags))
296 return;
297
298 ib_req_notify_cq(xprt->sc_rq_cq, IB_CQ_NEXT_COMP);
300 atomic_inc(&rdma_stat_rq_poll); 299 atomic_inc(&rdma_stat_rq_poll);
301 300
302 spin_lock_bh(&xprt->sc_rq_dto_lock);
303 while ((ret = ib_poll_cq(xprt->sc_rq_cq, 1, &wc)) > 0) { 301 while ((ret = ib_poll_cq(xprt->sc_rq_cq, 1, &wc)) > 0) {
304 ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id; 302 ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id;
305 ctxt->wc_status = wc.status; 303 ctxt->wc_status = wc.status;
306 ctxt->byte_len = wc.byte_len; 304 ctxt->byte_len = wc.byte_len;
307 if (wc.status != IB_WC_SUCCESS) { 305 if (wc.status != IB_WC_SUCCESS) {
308 /* Close the transport */ 306 /* Close the transport */
307 dprintk("svcrdma: transport closing putting ctxt %p\n", ctxt);
309 set_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags); 308 set_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags);
310 svc_rdma_put_context(ctxt, 1); 309 svc_rdma_put_context(ctxt, 1);
310 svc_xprt_put(&xprt->sc_xprt);
311 continue; 311 continue;
312 } 312 }
313 spin_lock_bh(&xprt->sc_rq_dto_lock);
313 list_add_tail(&ctxt->dto_q, &xprt->sc_rq_dto_q); 314 list_add_tail(&ctxt->dto_q, &xprt->sc_rq_dto_q);
315 spin_unlock_bh(&xprt->sc_rq_dto_lock);
316 svc_xprt_put(&xprt->sc_xprt);
314 } 317 }
315 spin_unlock_bh(&xprt->sc_rq_dto_lock);
316 318
317 if (ctxt) 319 if (ctxt)
318 atomic_inc(&rdma_stat_rq_prod); 320 atomic_inc(&rdma_stat_rq_prod);
321
322 set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags);
323 /*
324 * If data arrived before established event,
325 * don't enqueue. This defers RPC I/O until the
326 * RDMA connection is complete.
327 */
328 if (!test_bit(RDMAXPRT_CONN_PENDING, &xprt->sc_flags))
329 svc_xprt_enqueue(&xprt->sc_xprt);
319} 330}
320 331
321/* 332/*
322 * Send Queue Completion Handler - potentially called on interrupt context. 333 * Send Queue Completion Handler - potentially called on interrupt context.
334 *
335 * Note that caller must hold a transport reference.
323 */ 336 */
324static void sq_cq_reap(struct svcxprt_rdma *xprt) 337static void sq_cq_reap(struct svcxprt_rdma *xprt)
325{ 338{
@@ -328,6 +341,11 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
328 struct ib_cq *cq = xprt->sc_sq_cq; 341 struct ib_cq *cq = xprt->sc_sq_cq;
329 int ret; 342 int ret;
330 343
344
345 if (!test_and_clear_bit(RDMAXPRT_SQ_PENDING, &xprt->sc_flags))
346 return;
347
348 ib_req_notify_cq(xprt->sc_sq_cq, IB_CQ_NEXT_COMP);
331 atomic_inc(&rdma_stat_sq_poll); 349 atomic_inc(&rdma_stat_sq_poll);
332 while ((ret = ib_poll_cq(cq, 1, &wc)) > 0) { 350 while ((ret = ib_poll_cq(cq, 1, &wc)) > 0) {
333 ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id; 351 ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id;
@@ -349,14 +367,16 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
349 367
350 case IB_WR_RDMA_READ: 368 case IB_WR_RDMA_READ:
351 if (test_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags)) { 369 if (test_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags)) {
370 struct svc_rdma_op_ctxt *read_hdr = ctxt->read_hdr;
371 BUG_ON(!read_hdr);
352 set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags); 372 set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags);
353 set_bit(RDMACTXT_F_READ_DONE, &ctxt->flags);
354 spin_lock_bh(&xprt->sc_read_complete_lock); 373 spin_lock_bh(&xprt->sc_read_complete_lock);
355 list_add_tail(&ctxt->dto_q, 374 list_add_tail(&read_hdr->dto_q,
356 &xprt->sc_read_complete_q); 375 &xprt->sc_read_complete_q);
357 spin_unlock_bh(&xprt->sc_read_complete_lock); 376 spin_unlock_bh(&xprt->sc_read_complete_lock);
358 svc_xprt_enqueue(&xprt->sc_xprt); 377 svc_xprt_enqueue(&xprt->sc_xprt);
359 } 378 }
379 svc_rdma_put_context(ctxt, 0);
360 break; 380 break;
361 381
362 default: 382 default:
@@ -365,6 +385,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
365 wc.opcode, wc.status); 385 wc.opcode, wc.status);
366 break; 386 break;
367 } 387 }
388 svc_xprt_put(&xprt->sc_xprt);
368 } 389 }
369 390
370 if (ctxt) 391 if (ctxt)
@@ -376,11 +397,15 @@ static void sq_comp_handler(struct ib_cq *cq, void *cq_context)
376 struct svcxprt_rdma *xprt = cq_context; 397 struct svcxprt_rdma *xprt = cq_context;
377 unsigned long flags; 398 unsigned long flags;
378 399
400 /* Guard against unconditional flush call for destroyed QP */
401 if (atomic_read(&xprt->sc_xprt.xpt_ref.refcount)==0)
402 return;
403
379 /* 404 /*
380 * Set the bit regardless of whether or not it's on the list 405 * Set the bit regardless of whether or not it's on the list
381 * because it may be on the list already due to an RQ 406 * because it may be on the list already due to an RQ
382 * completion. 407 * completion.
383 */ 408 */
384 set_bit(RDMAXPRT_SQ_PENDING, &xprt->sc_flags); 409 set_bit(RDMAXPRT_SQ_PENDING, &xprt->sc_flags);
385 410
386 /* 411 /*
@@ -407,28 +432,29 @@ static void create_context_cache(struct svcxprt_rdma *xprt,
407 xprt->sc_ctxt_max = ctxt_max; 432 xprt->sc_ctxt_max = ctxt_max;
408 xprt->sc_ctxt_bump = ctxt_bump; 433 xprt->sc_ctxt_bump = ctxt_bump;
409 xprt->sc_ctxt_cnt = 0; 434 xprt->sc_ctxt_cnt = 0;
410 xprt->sc_ctxt_head = NULL; 435 atomic_set(&xprt->sc_ctxt_used, 0);
436
437 INIT_LIST_HEAD(&xprt->sc_ctxt_free);
411 for (i = 0; i < ctxt_count; i++) { 438 for (i = 0; i < ctxt_count; i++) {
412 ctxt = kmalloc(sizeof(*ctxt), GFP_KERNEL); 439 ctxt = kmalloc(sizeof(*ctxt), GFP_KERNEL);
413 if (ctxt) { 440 if (ctxt) {
414 ctxt->next = xprt->sc_ctxt_head; 441 INIT_LIST_HEAD(&ctxt->free_list);
415 xprt->sc_ctxt_head = ctxt; 442 list_add(&ctxt->free_list, &xprt->sc_ctxt_free);
416 xprt->sc_ctxt_cnt++; 443 xprt->sc_ctxt_cnt++;
417 } 444 }
418 } 445 }
419} 446}
420 447
421static void destroy_context_cache(struct svc_rdma_op_ctxt *ctxt) 448static void destroy_context_cache(struct svcxprt_rdma *xprt)
422{ 449{
423 struct svc_rdma_op_ctxt *next; 450 while (!list_empty(&xprt->sc_ctxt_free)) {
424 if (!ctxt) 451 struct svc_rdma_op_ctxt *ctxt;
425 return; 452 ctxt = list_entry(xprt->sc_ctxt_free.next,
426 453 struct svc_rdma_op_ctxt,
427 do { 454 free_list);
428 next = ctxt->next; 455 list_del_init(&ctxt->free_list);
429 kfree(ctxt); 456 kfree(ctxt);
430 ctxt = next; 457 }
431 } while (next);
432} 458}
433 459
434static struct svcxprt_rdma *rdma_create_xprt(struct svc_serv *serv, 460static struct svcxprt_rdma *rdma_create_xprt(struct svc_serv *serv,
@@ -465,7 +491,7 @@ static struct svcxprt_rdma *rdma_create_xprt(struct svc_serv *serv,
465 reqs + 491 reqs +
466 cma_xprt->sc_sq_depth + 492 cma_xprt->sc_sq_depth +
467 RPCRDMA_MAX_THREADS + 1); /* max */ 493 RPCRDMA_MAX_THREADS + 1); /* max */
468 if (!cma_xprt->sc_ctxt_head) { 494 if (list_empty(&cma_xprt->sc_ctxt_free)) {
469 kfree(cma_xprt); 495 kfree(cma_xprt);
470 return NULL; 496 return NULL;
471 } 497 }
@@ -520,7 +546,12 @@ int svc_rdma_post_recv(struct svcxprt_rdma *xprt)
520 recv_wr.num_sge = ctxt->count; 546 recv_wr.num_sge = ctxt->count;
521 recv_wr.wr_id = (u64)(unsigned long)ctxt; 547 recv_wr.wr_id = (u64)(unsigned long)ctxt;
522 548
549 svc_xprt_get(&xprt->sc_xprt);
523 ret = ib_post_recv(xprt->sc_qp, &recv_wr, &bad_recv_wr); 550 ret = ib_post_recv(xprt->sc_qp, &recv_wr, &bad_recv_wr);
551 if (ret) {
552 svc_xprt_put(&xprt->sc_xprt);
553 svc_rdma_put_context(ctxt, 1);
554 }
524 return ret; 555 return ret;
525} 556}
526 557
@@ -539,6 +570,7 @@ static void handle_connect_req(struct rdma_cm_id *new_cma_id)
539{ 570{
540 struct svcxprt_rdma *listen_xprt = new_cma_id->context; 571 struct svcxprt_rdma *listen_xprt = new_cma_id->context;
541 struct svcxprt_rdma *newxprt; 572 struct svcxprt_rdma *newxprt;
573 struct sockaddr *sa;
542 574
543 /* Create a new transport */ 575 /* Create a new transport */
544 newxprt = rdma_create_xprt(listen_xprt->sc_xprt.xpt_server, 0); 576 newxprt = rdma_create_xprt(listen_xprt->sc_xprt.xpt_server, 0);
@@ -551,6 +583,12 @@ static void handle_connect_req(struct rdma_cm_id *new_cma_id)
551 dprintk("svcrdma: Creating newxprt=%p, cm_id=%p, listenxprt=%p\n", 583 dprintk("svcrdma: Creating newxprt=%p, cm_id=%p, listenxprt=%p\n",
552 newxprt, newxprt->sc_cm_id, listen_xprt); 584 newxprt, newxprt->sc_cm_id, listen_xprt);
553 585
586 /* Set the local and remote addresses in the transport */
587 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr;
588 svc_xprt_set_remote(&newxprt->sc_xprt, sa, svc_addr_len(sa));
589 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr;
590 svc_xprt_set_local(&newxprt->sc_xprt, sa, svc_addr_len(sa));
591
554 /* 592 /*
555 * Enqueue the new transport on the accept queue of the listening 593 * Enqueue the new transport on the accept queue of the listening
556 * transport 594 * transport
@@ -627,6 +665,7 @@ static int rdma_cma_handler(struct rdma_cm_id *cma_id,
627 if (xprt) { 665 if (xprt) {
628 set_bit(XPT_CLOSE, &xprt->xpt_flags); 666 set_bit(XPT_CLOSE, &xprt->xpt_flags);
629 svc_xprt_enqueue(xprt); 667 svc_xprt_enqueue(xprt);
668 svc_xprt_put(xprt);
630 } 669 }
631 break; 670 break;
632 case RDMA_CM_EVENT_DEVICE_REMOVAL: 671 case RDMA_CM_EVENT_DEVICE_REMOVAL:
@@ -661,31 +700,27 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv,
661 700
662 cma_xprt = rdma_create_xprt(serv, 1); 701 cma_xprt = rdma_create_xprt(serv, 1);
663 if (!cma_xprt) 702 if (!cma_xprt)
664 return ERR_PTR(ENOMEM); 703 return ERR_PTR(-ENOMEM);
665 xprt = &cma_xprt->sc_xprt; 704 xprt = &cma_xprt->sc_xprt;
666 705
667 listen_id = rdma_create_id(rdma_listen_handler, cma_xprt, RDMA_PS_TCP); 706 listen_id = rdma_create_id(rdma_listen_handler, cma_xprt, RDMA_PS_TCP);
668 if (IS_ERR(listen_id)) { 707 if (IS_ERR(listen_id)) {
669 svc_xprt_put(&cma_xprt->sc_xprt); 708 ret = PTR_ERR(listen_id);
670 dprintk("svcrdma: rdma_create_id failed = %ld\n", 709 dprintk("svcrdma: rdma_create_id failed = %d\n", ret);
671 PTR_ERR(listen_id)); 710 goto err0;
672 return (void *)listen_id;
673 } 711 }
712
674 ret = rdma_bind_addr(listen_id, sa); 713 ret = rdma_bind_addr(listen_id, sa);
675 if (ret) { 714 if (ret) {
676 rdma_destroy_id(listen_id);
677 svc_xprt_put(&cma_xprt->sc_xprt);
678 dprintk("svcrdma: rdma_bind_addr failed = %d\n", ret); 715 dprintk("svcrdma: rdma_bind_addr failed = %d\n", ret);
679 return ERR_PTR(ret); 716 goto err1;
680 } 717 }
681 cma_xprt->sc_cm_id = listen_id; 718 cma_xprt->sc_cm_id = listen_id;
682 719
683 ret = rdma_listen(listen_id, RPCRDMA_LISTEN_BACKLOG); 720 ret = rdma_listen(listen_id, RPCRDMA_LISTEN_BACKLOG);
684 if (ret) { 721 if (ret) {
685 rdma_destroy_id(listen_id);
686 svc_xprt_put(&cma_xprt->sc_xprt);
687 dprintk("svcrdma: rdma_listen failed = %d\n", ret); 722 dprintk("svcrdma: rdma_listen failed = %d\n", ret);
688 return ERR_PTR(ret); 723 goto err1;
689 } 724 }
690 725
691 /* 726 /*
@@ -696,6 +731,12 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv,
696 svc_xprt_set_local(&cma_xprt->sc_xprt, sa, salen); 731 svc_xprt_set_local(&cma_xprt->sc_xprt, sa, salen);
697 732
698 return &cma_xprt->sc_xprt; 733 return &cma_xprt->sc_xprt;
734
735 err1:
736 rdma_destroy_id(listen_id);
737 err0:
738 kfree(cma_xprt);
739 return ERR_PTR(ret);
699} 740}
700 741
701/* 742/*
@@ -716,7 +757,6 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
716 struct rdma_conn_param conn_param; 757 struct rdma_conn_param conn_param;
717 struct ib_qp_init_attr qp_attr; 758 struct ib_qp_init_attr qp_attr;
718 struct ib_device_attr devattr; 759 struct ib_device_attr devattr;
719 struct sockaddr *sa;
720 int ret; 760 int ret;
721 int i; 761 int i;
722 762
@@ -826,7 +866,6 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
826 newxprt->sc_sq_depth = qp_attr.cap.max_send_wr; 866 newxprt->sc_sq_depth = qp_attr.cap.max_send_wr;
827 newxprt->sc_max_requests = qp_attr.cap.max_recv_wr; 867 newxprt->sc_max_requests = qp_attr.cap.max_recv_wr;
828 } 868 }
829 svc_xprt_get(&newxprt->sc_xprt);
830 newxprt->sc_qp = newxprt->sc_cm_id->qp; 869 newxprt->sc_qp = newxprt->sc_cm_id->qp;
831 870
832 /* Register all of physical memory */ 871 /* Register all of physical memory */
@@ -850,6 +889,13 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
850 /* Swap out the handler */ 889 /* Swap out the handler */
851 newxprt->sc_cm_id->event_handler = rdma_cma_handler; 890 newxprt->sc_cm_id->event_handler = rdma_cma_handler;
852 891
892 /*
893 * Arm the CQs for the SQ and RQ before accepting so we can't
894 * miss the first message
895 */
896 ib_req_notify_cq(newxprt->sc_sq_cq, IB_CQ_NEXT_COMP);
897 ib_req_notify_cq(newxprt->sc_rq_cq, IB_CQ_NEXT_COMP);
898
853 /* Accept Connection */ 899 /* Accept Connection */
854 set_bit(RDMAXPRT_CONN_PENDING, &newxprt->sc_flags); 900 set_bit(RDMAXPRT_CONN_PENDING, &newxprt->sc_flags);
855 memset(&conn_param, 0, sizeof conn_param); 901 memset(&conn_param, 0, sizeof conn_param);
@@ -886,58 +932,26 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
886 newxprt->sc_max_requests, 932 newxprt->sc_max_requests,
887 newxprt->sc_ord); 933 newxprt->sc_ord);
888 934
889 /* Set the local and remote addresses in the transport */
890 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr;
891 svc_xprt_set_remote(&newxprt->sc_xprt, sa, svc_addr_len(sa));
892 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr;
893 svc_xprt_set_local(&newxprt->sc_xprt, sa, svc_addr_len(sa));
894
895 ib_req_notify_cq(newxprt->sc_sq_cq, IB_CQ_NEXT_COMP);
896 ib_req_notify_cq(newxprt->sc_rq_cq, IB_CQ_NEXT_COMP);
897 return &newxprt->sc_xprt; 935 return &newxprt->sc_xprt;
898 936
899 errout: 937 errout:
900 dprintk("svcrdma: failure accepting new connection rc=%d.\n", ret); 938 dprintk("svcrdma: failure accepting new connection rc=%d.\n", ret);
901 /* Take a reference in case the DTO handler runs */ 939 /* Take a reference in case the DTO handler runs */
902 svc_xprt_get(&newxprt->sc_xprt); 940 svc_xprt_get(&newxprt->sc_xprt);
903 if (newxprt->sc_qp && !IS_ERR(newxprt->sc_qp)) { 941 if (newxprt->sc_qp && !IS_ERR(newxprt->sc_qp))
904 ib_destroy_qp(newxprt->sc_qp); 942 ib_destroy_qp(newxprt->sc_qp);
905 svc_xprt_put(&newxprt->sc_xprt);
906 }
907 rdma_destroy_id(newxprt->sc_cm_id); 943 rdma_destroy_id(newxprt->sc_cm_id);
908 /* This call to put will destroy the transport */ 944 /* This call to put will destroy the transport */
909 svc_xprt_put(&newxprt->sc_xprt); 945 svc_xprt_put(&newxprt->sc_xprt);
910 return NULL; 946 return NULL;
911} 947}
912 948
913/*
914 * Post an RQ WQE to the RQ when the rqst is being released. This
915 * effectively returns an RQ credit to the client. The rq_xprt_ctxt
916 * will be null if the request is deferred due to an RDMA_READ or the
917 * transport had no data ready (EAGAIN). Note that an RPC deferred in
918 * svc_process will still return the credit, this is because the data
919 * is copied and no longer consume a WQE/WC.
920 */
921static void svc_rdma_release_rqst(struct svc_rqst *rqstp) 949static void svc_rdma_release_rqst(struct svc_rqst *rqstp)
922{ 950{
923 int err;
924 struct svcxprt_rdma *rdma =
925 container_of(rqstp->rq_xprt, struct svcxprt_rdma, sc_xprt);
926 if (rqstp->rq_xprt_ctxt) {
927 BUG_ON(rqstp->rq_xprt_ctxt != rdma);
928 err = svc_rdma_post_recv(rdma);
929 if (err)
930 dprintk("svcrdma: failed to post an RQ WQE error=%d\n",
931 err);
932 }
933 rqstp->rq_xprt_ctxt = NULL;
934} 951}
935 952
936/* 953/*
937 * When connected, an svc_xprt has at least three references: 954 * When connected, an svc_xprt has at least two references:
938 *
939 * - A reference held by the QP. We still hold that here because this
940 * code deletes the QP and puts the reference.
941 * 955 *
942 * - A reference held by the cm_id between the ESTABLISHED and 956 * - A reference held by the cm_id between the ESTABLISHED and
943 * DISCONNECTED events. If the remote peer disconnected first, this 957 * DISCONNECTED events. If the remote peer disconnected first, this
@@ -946,7 +960,7 @@ static void svc_rdma_release_rqst(struct svc_rqst *rqstp)
946 * - A reference held by the svc_recv code that called this function 960 * - A reference held by the svc_recv code that called this function
947 * as part of close processing. 961 * as part of close processing.
948 * 962 *
949 * At a minimum two references should still be held. 963 * At a minimum one references should still be held.
950 */ 964 */
951static void svc_rdma_detach(struct svc_xprt *xprt) 965static void svc_rdma_detach(struct svc_xprt *xprt)
952{ 966{
@@ -956,23 +970,53 @@ static void svc_rdma_detach(struct svc_xprt *xprt)
956 970
957 /* Disconnect and flush posted WQE */ 971 /* Disconnect and flush posted WQE */
958 rdma_disconnect(rdma->sc_cm_id); 972 rdma_disconnect(rdma->sc_cm_id);
959
960 /* Destroy the QP if present (not a listener) */
961 if (rdma->sc_qp && !IS_ERR(rdma->sc_qp)) {
962 ib_destroy_qp(rdma->sc_qp);
963 svc_xprt_put(xprt);
964 }
965
966 /* Destroy the CM ID */
967 rdma_destroy_id(rdma->sc_cm_id);
968} 973}
969 974
970static void svc_rdma_free(struct svc_xprt *xprt) 975static void __svc_rdma_free(struct work_struct *work)
971{ 976{
972 struct svcxprt_rdma *rdma = (struct svcxprt_rdma *)xprt; 977 struct svcxprt_rdma *rdma =
978 container_of(work, struct svcxprt_rdma, sc_work);
973 dprintk("svcrdma: svc_rdma_free(%p)\n", rdma); 979 dprintk("svcrdma: svc_rdma_free(%p)\n", rdma);
980
974 /* We should only be called from kref_put */ 981 /* We should only be called from kref_put */
975 BUG_ON(atomic_read(&xprt->xpt_ref.refcount) != 0); 982 BUG_ON(atomic_read(&rdma->sc_xprt.xpt_ref.refcount) != 0);
983
984 /*
985 * Destroy queued, but not processed read completions. Note
986 * that this cleanup has to be done before destroying the
987 * cm_id because the device ptr is needed to unmap the dma in
988 * svc_rdma_put_context.
989 */
990 spin_lock_bh(&rdma->sc_read_complete_lock);
991 while (!list_empty(&rdma->sc_read_complete_q)) {
992 struct svc_rdma_op_ctxt *ctxt;
993 ctxt = list_entry(rdma->sc_read_complete_q.next,
994 struct svc_rdma_op_ctxt,
995 dto_q);
996 list_del_init(&ctxt->dto_q);
997 svc_rdma_put_context(ctxt, 1);
998 }
999 spin_unlock_bh(&rdma->sc_read_complete_lock);
1000
1001 /* Destroy queued, but not processed recv completions */
1002 spin_lock_bh(&rdma->sc_rq_dto_lock);
1003 while (!list_empty(&rdma->sc_rq_dto_q)) {
1004 struct svc_rdma_op_ctxt *ctxt;
1005 ctxt = list_entry(rdma->sc_rq_dto_q.next,
1006 struct svc_rdma_op_ctxt,
1007 dto_q);
1008 list_del_init(&ctxt->dto_q);
1009 svc_rdma_put_context(ctxt, 1);
1010 }
1011 spin_unlock_bh(&rdma->sc_rq_dto_lock);
1012
1013 /* Warn if we leaked a resource or under-referenced */
1014 WARN_ON(atomic_read(&rdma->sc_ctxt_used) != 0);
1015
1016 /* Destroy the QP if present (not a listener) */
1017 if (rdma->sc_qp && !IS_ERR(rdma->sc_qp))
1018 ib_destroy_qp(rdma->sc_qp);
1019
976 if (rdma->sc_sq_cq && !IS_ERR(rdma->sc_sq_cq)) 1020 if (rdma->sc_sq_cq && !IS_ERR(rdma->sc_sq_cq))
977 ib_destroy_cq(rdma->sc_sq_cq); 1021 ib_destroy_cq(rdma->sc_sq_cq);
978 1022
@@ -985,10 +1029,21 @@ static void svc_rdma_free(struct svc_xprt *xprt)
985 if (rdma->sc_pd && !IS_ERR(rdma->sc_pd)) 1029 if (rdma->sc_pd && !IS_ERR(rdma->sc_pd))
986 ib_dealloc_pd(rdma->sc_pd); 1030 ib_dealloc_pd(rdma->sc_pd);
987 1031
988 destroy_context_cache(rdma->sc_ctxt_head); 1032 /* Destroy the CM ID */
1033 rdma_destroy_id(rdma->sc_cm_id);
1034
1035 destroy_context_cache(rdma);
989 kfree(rdma); 1036 kfree(rdma);
990} 1037}
991 1038
1039static void svc_rdma_free(struct svc_xprt *xprt)
1040{
1041 struct svcxprt_rdma *rdma =
1042 container_of(xprt, struct svcxprt_rdma, sc_xprt);
1043 INIT_WORK(&rdma->sc_work, __svc_rdma_free);
1044 schedule_work(&rdma->sc_work);
1045}
1046
992static int svc_rdma_has_wspace(struct svc_xprt *xprt) 1047static int svc_rdma_has_wspace(struct svc_xprt *xprt)
993{ 1048{
994 struct svcxprt_rdma *rdma = 1049 struct svcxprt_rdma *rdma =
@@ -1018,7 +1073,7 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr)
1018 int ret; 1073 int ret;
1019 1074
1020 if (test_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags)) 1075 if (test_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags))
1021 return 0; 1076 return -ENOTCONN;
1022 1077
1023 BUG_ON(wr->send_flags != IB_SEND_SIGNALED); 1078 BUG_ON(wr->send_flags != IB_SEND_SIGNALED);
1024 BUG_ON(((struct svc_rdma_op_ctxt *)(unsigned long)wr->wr_id)->wr_op != 1079 BUG_ON(((struct svc_rdma_op_ctxt *)(unsigned long)wr->wr_id)->wr_op !=
@@ -1029,7 +1084,8 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr)
1029 if (xprt->sc_sq_depth == atomic_read(&xprt->sc_sq_count)) { 1084 if (xprt->sc_sq_depth == atomic_read(&xprt->sc_sq_count)) {
1030 spin_unlock_bh(&xprt->sc_lock); 1085 spin_unlock_bh(&xprt->sc_lock);
1031 atomic_inc(&rdma_stat_sq_starve); 1086 atomic_inc(&rdma_stat_sq_starve);
1032 /* See if we can reap some SQ WR */ 1087
1088 /* See if we can opportunistically reap SQ WR to make room */
1033 sq_cq_reap(xprt); 1089 sq_cq_reap(xprt);
1034 1090
1035 /* Wait until SQ WR available if SQ still full */ 1091 /* Wait until SQ WR available if SQ still full */
@@ -1041,22 +1097,25 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr)
1041 continue; 1097 continue;
1042 } 1098 }
1043 /* Bumped used SQ WR count and post */ 1099 /* Bumped used SQ WR count and post */
1100 svc_xprt_get(&xprt->sc_xprt);
1044 ret = ib_post_send(xprt->sc_qp, wr, &bad_wr); 1101 ret = ib_post_send(xprt->sc_qp, wr, &bad_wr);
1045 if (!ret) 1102 if (!ret)
1046 atomic_inc(&xprt->sc_sq_count); 1103 atomic_inc(&xprt->sc_sq_count);
1047 else 1104 else {
1105 svc_xprt_put(&xprt->sc_xprt);
1048 dprintk("svcrdma: failed to post SQ WR rc=%d, " 1106 dprintk("svcrdma: failed to post SQ WR rc=%d, "
1049 "sc_sq_count=%d, sc_sq_depth=%d\n", 1107 "sc_sq_count=%d, sc_sq_depth=%d\n",
1050 ret, atomic_read(&xprt->sc_sq_count), 1108 ret, atomic_read(&xprt->sc_sq_count),
1051 xprt->sc_sq_depth); 1109 xprt->sc_sq_depth);
1110 }
1052 spin_unlock_bh(&xprt->sc_lock); 1111 spin_unlock_bh(&xprt->sc_lock);
1053 break; 1112 break;
1054 } 1113 }
1055 return ret; 1114 return ret;
1056} 1115}
1057 1116
1058int svc_rdma_send_error(struct svcxprt_rdma *xprt, struct rpcrdma_msg *rmsgp, 1117void svc_rdma_send_error(struct svcxprt_rdma *xprt, struct rpcrdma_msg *rmsgp,
1059 enum rpcrdma_errcode err) 1118 enum rpcrdma_errcode err)
1060{ 1119{
1061 struct ib_send_wr err_wr; 1120 struct ib_send_wr err_wr;
1062 struct ib_sge sge; 1121 struct ib_sge sge;
@@ -1094,9 +1153,8 @@ int svc_rdma_send_error(struct svcxprt_rdma *xprt, struct rpcrdma_msg *rmsgp,
1094 /* Post It */ 1153 /* Post It */
1095 ret = svc_rdma_send(xprt, &err_wr); 1154 ret = svc_rdma_send(xprt, &err_wr);
1096 if (ret) { 1155 if (ret) {
1097 dprintk("svcrdma: Error posting send = %d\n", ret); 1156 dprintk("svcrdma: Error %d posting send for protocol error\n",
1157 ret);
1098 svc_rdma_put_context(ctxt, 1); 1158 svc_rdma_put_context(ctxt, 1);
1099 } 1159 }
1100
1101 return ret;
1102} 1160}
diff --git a/sound/core/sound.c b/sound/core/sound.c
index 812f91b3de5b..6c8ab48c689a 100644
--- a/sound/core/sound.c
+++ b/sound/core/sound.c
@@ -259,8 +259,9 @@ int snd_register_device_for_dev(int type, struct snd_card *card, int dev,
259 return minor; 259 return minor;
260 } 260 }
261 snd_minors[minor] = preg; 261 snd_minors[minor] = preg;
262 preg->dev = device_create(sound_class, device, MKDEV(major, minor), 262 preg->dev = device_create_drvdata(sound_class, device,
263 "%s", name); 263 MKDEV(major, minor),
264 private_data, "%s", name);
264 if (IS_ERR(preg->dev)) { 265 if (IS_ERR(preg->dev)) {
265 snd_minors[minor] = NULL; 266 snd_minors[minor] = NULL;
266 mutex_unlock(&sound_mutex); 267 mutex_unlock(&sound_mutex);
@@ -269,9 +270,6 @@ int snd_register_device_for_dev(int type, struct snd_card *card, int dev,
269 return minor; 270 return minor;
270 } 271 }
271 272
272 if (preg->dev)
273 dev_set_drvdata(preg->dev, private_data);
274
275 mutex_unlock(&sound_mutex); 273 mutex_unlock(&sound_mutex);
276 return 0; 274 return 0;
277} 275}
diff --git a/sound/drivers/pcsp/pcsp.c b/sound/drivers/pcsp/pcsp.c
index 54a1f9036c66..1899cf0685bc 100644
--- a/sound/drivers/pcsp/pcsp.c
+++ b/sound/drivers/pcsp/pcsp.c
@@ -96,7 +96,7 @@ static int __devinit snd_card_pcsp_probe(int devnum, struct device *dev)
96 return -EINVAL; 96 return -EINVAL;
97 97
98 hrtimer_init(&pcsp_chip.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); 98 hrtimer_init(&pcsp_chip.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
99 pcsp_chip.timer.cb_mode = HRTIMER_CB_IRQSAFE; 99 pcsp_chip.timer.cb_mode = HRTIMER_CB_SOFTIRQ;
100 pcsp_chip.timer.function = pcsp_do_timer; 100 pcsp_chip.timer.function = pcsp_do_timer;
101 101
102 card = snd_card_new(index, id, THIS_MODULE, 0); 102 card = snd_card_new(index, id, THIS_MODULE, 0);
diff --git a/sound/drivers/pcsp/pcsp_lib.c b/sound/drivers/pcsp/pcsp_lib.c
index 7ad4a1534b2b..e341f3f83b6a 100644
--- a/sound/drivers/pcsp/pcsp_lib.c
+++ b/sound/drivers/pcsp/pcsp_lib.c
@@ -9,7 +9,6 @@
9#include <linux/module.h> 9#include <linux/module.h>
10#include <linux/moduleparam.h> 10#include <linux/moduleparam.h>
11#include <sound/pcm.h> 11#include <sound/pcm.h>
12#include <linux/interrupt.h>
13#include <asm/io.h> 12#include <asm/io.h>
14#include "pcsp.h" 13#include "pcsp.h"
15 14
@@ -20,34 +19,8 @@ MODULE_PARM_DESC(nforce_wa, "Apply NForce chipset workaround "
20 19
21#define DMIX_WANTS_S16 1 20#define DMIX_WANTS_S16 1
22 21
23static void pcsp_start_timer(unsigned long dummy)
24{
25 hrtimer_start(&pcsp_chip.timer, ktime_set(0, 0), HRTIMER_MODE_REL);
26}
27
28/*
29 * We need the hrtimer_start as a tasklet to avoid
30 * the nasty locking problem. :(
31 * The problem:
32 * - The timer handler is called with the cpu_base->lock
33 * already held by hrtimer code.
34 * - snd_pcm_period_elapsed() takes the
35 * substream->self_group.lock.
36 * So far so good.
37 * But the snd_pcsp_trigger() is called with the
38 * substream->self_group.lock held, and it calls
39 * hrtimer_start(), which takes the cpu_base->lock.
40 * You see the problem. We have the code pathes
41 * which take two locks in a reverse order. This
42 * can deadlock and the lock validator complains.
43 * The only solution I could find was to move the
44 * hrtimer_start() into a tasklet. -stsp
45 */
46static DECLARE_TASKLET(pcsp_start_timer_tasklet, pcsp_start_timer, 0);
47
48enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) 22enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle)
49{ 23{
50 unsigned long flags;
51 unsigned char timer_cnt, val; 24 unsigned char timer_cnt, val;
52 int fmt_size, periods_elapsed; 25 int fmt_size, periods_elapsed;
53 u64 ns; 26 u64 ns;
@@ -66,9 +39,7 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle)
66 return HRTIMER_RESTART; 39 return HRTIMER_RESTART;
67 } 40 }
68 41
69 /* hrtimer calls us from both hardirq and softirq contexts, 42 spin_lock_irq(&chip->substream_lock);
70 * so irqsave :( */
71 spin_lock_irqsave(&chip->substream_lock, flags);
72 /* Takashi Iwai says regarding this extra lock: 43 /* Takashi Iwai says regarding this extra lock:
73 44
74 If the irq handler handles some data on the DMA buffer, it should 45 If the irq handler handles some data on the DMA buffer, it should
@@ -139,7 +110,7 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle)
139 chip->period_ptr %= buffer_bytes; 110 chip->period_ptr %= buffer_bytes;
140 } 111 }
141 112
142 spin_unlock_irqrestore(&chip->substream_lock, flags); 113 spin_unlock_irq(&chip->substream_lock);
143 114
144 if (!atomic_read(&chip->timer_active)) 115 if (!atomic_read(&chip->timer_active))
145 return HRTIMER_NORESTART; 116 return HRTIMER_NORESTART;
@@ -153,7 +124,7 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle)
153exit_nr_unlock2: 124exit_nr_unlock2:
154 snd_pcm_stream_unlock(substream); 125 snd_pcm_stream_unlock(substream);
155exit_nr_unlock1: 126exit_nr_unlock1:
156 spin_unlock_irqrestore(&chip->substream_lock, flags); 127 spin_unlock_irq(&chip->substream_lock);
157 return HRTIMER_NORESTART; 128 return HRTIMER_NORESTART;
158} 129}
159 130
@@ -174,7 +145,7 @@ static void pcsp_start_playing(struct snd_pcsp *chip)
174 atomic_set(&chip->timer_active, 1); 145 atomic_set(&chip->timer_active, 1);
175 chip->thalf = 0; 146 chip->thalf = 0;
176 147
177 tasklet_schedule(&pcsp_start_timer_tasklet); 148 hrtimer_start(&pcsp_chip.timer, ktime_set(0, 0), HRTIMER_MODE_REL);
178} 149}
179 150
180static void pcsp_stop_playing(struct snd_pcsp *chip) 151static void pcsp_stop_playing(struct snd_pcsp *chip)
diff --git a/sound/oss/Kconfig b/sound/oss/Kconfig
index 857008bb7167..3be2dc1025b5 100644
--- a/sound/oss/Kconfig
+++ b/sound/oss/Kconfig
@@ -79,7 +79,7 @@ config SOUND_TRIDENT
79 79
80config SOUND_MSNDCLAS 80config SOUND_MSNDCLAS
81 tristate "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey" 81 tristate "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey"
82 depends on SOUND_PRIME && (m || !STANDALONE) 82 depends on SOUND_PRIME && (m || !STANDALONE) && ISA
83 help 83 help
84 Say M here if you have a Turtle Beach MultiSound Classic, Tahiti or 84 Say M here if you have a Turtle Beach MultiSound Classic, Tahiti or
85 Monterey (not for the Pinnacle or Fiji). 85 Monterey (not for the Pinnacle or Fiji).
@@ -143,7 +143,7 @@ config MSNDCLAS_IO
143 143
144config SOUND_MSNDPIN 144config SOUND_MSNDPIN
145 tristate "Support for Turtle Beach MultiSound Pinnacle, Fiji" 145 tristate "Support for Turtle Beach MultiSound Pinnacle, Fiji"
146 depends on SOUND_PRIME && (m || !STANDALONE) 146 depends on SOUND_PRIME && (m || !STANDALONE) && ISA
147 help 147 help
148 Say M here if you have a Turtle Beach MultiSound Pinnacle or Fiji. 148 Say M here if you have a Turtle Beach MultiSound Pinnacle or Fiji.
149 See <file:Documentation/sound/oss/MultiSound> for important information 149 See <file:Documentation/sound/oss/MultiSound> for important information
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 6d4df45e81e0..864b2f598c38 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -2981,7 +2981,7 @@ static struct snd_pci_quirk alc880_cfg_tbl[] = {
2981 /* SND_PCI_QUIRK(0x1043, 0x1964, "ASUS", ALC880_ASUS_DIG), */ 2981 /* SND_PCI_QUIRK(0x1043, 0x1964, "ASUS", ALC880_ASUS_DIG), */
2982 SND_PCI_QUIRK(0x1043, 0x1973, "ASUS", ALC880_ASUS_DIG), 2982 SND_PCI_QUIRK(0x1043, 0x1973, "ASUS", ALC880_ASUS_DIG),
2983 SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS", ALC880_ASUS_DIG), 2983 SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS", ALC880_ASUS_DIG),
2984 SND_PCI_QUIRK(0x1043, 0x814e, "ASUS", ALC880_ASUS), 2984 SND_PCI_QUIRK(0x1043, 0x814e, "ASUS P5GD1 w/SPDIF", ALC880_6ST_DIG),
2985 SND_PCI_QUIRK(0x1043, 0x8181, "ASUS P4GPL", ALC880_ASUS_DIG), 2985 SND_PCI_QUIRK(0x1043, 0x8181, "ASUS P4GPL", ALC880_ASUS_DIG),
2986 SND_PCI_QUIRK(0x1043, 0x8196, "ASUS P5GD1", ALC880_6ST), 2986 SND_PCI_QUIRK(0x1043, 0x8196, "ASUS P5GD1", ALC880_6ST),
2987 SND_PCI_QUIRK(0x1043, 0x81b4, "ASUS", ALC880_6ST), 2987 SND_PCI_QUIRK(0x1043, 0x81b4, "ASUS", ALC880_6ST),
@@ -8757,35 +8757,39 @@ static struct hda_input_mux alc262_HP_D7000_capture_source = {
8757 }, 8757 },
8758}; 8758};
8759 8759
8760/* mute/unmute internal speaker according to the hp jack and mute state */ 8760/* mute/unmute internal speaker according to the hp jacks and mute state */
8761static void alc262_fujitsu_automute(struct hda_codec *codec, int force) 8761static void alc262_fujitsu_automute(struct hda_codec *codec, int force)
8762{ 8762{
8763 struct alc_spec *spec = codec->spec; 8763 struct alc_spec *spec = codec->spec;
8764 unsigned int mute; 8764 unsigned int mute;
8765 8765
8766 if (force || !spec->sense_updated) { 8766 if (force || !spec->sense_updated) {
8767 unsigned int present_int_hp, present_dock_hp; 8767 unsigned int present;
8768 /* need to execute and sync at first */ 8768 /* need to execute and sync at first */
8769 snd_hda_codec_read(codec, 0x14, 0, AC_VERB_SET_PIN_SENSE, 0); 8769 snd_hda_codec_read(codec, 0x14, 0, AC_VERB_SET_PIN_SENSE, 0);
8770 present_int_hp = snd_hda_codec_read(codec, 0x14, 0, 8770 /* check laptop HP jack */
8771 AC_VERB_GET_PIN_SENSE, 0); 8771 present = snd_hda_codec_read(codec, 0x14, 0,
8772 snd_hda_codec_read(codec, 0x1B, 0, AC_VERB_SET_PIN_SENSE, 0); 8772 AC_VERB_GET_PIN_SENSE, 0);
8773 present_dock_hp = snd_hda_codec_read(codec, 0x1b, 0, 8773 /* need to execute and sync at first */
8774 AC_VERB_GET_PIN_SENSE, 0); 8774 snd_hda_codec_read(codec, 0x1b, 0, AC_VERB_SET_PIN_SENSE, 0);
8775 spec->jack_present = (present_int_hp & 0x80000000) != 0; 8775 /* check docking HP jack */
8776 spec->jack_present |= (present_dock_hp & 0x80000000) != 0; 8776 present |= snd_hda_codec_read(codec, 0x1b, 0,
8777 AC_VERB_GET_PIN_SENSE, 0);
8778 if (present & AC_PINSENSE_PRESENCE)
8779 spec->jack_present = 1;
8780 else
8781 spec->jack_present = 0;
8777 spec->sense_updated = 1; 8782 spec->sense_updated = 1;
8778 } 8783 }
8779 if (spec->jack_present) { 8784 /* unmute internal speaker only if both HPs are unplugged and
8780 /* mute internal speaker */ 8785 * master switch is on
8781 snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0, 8786 */
8782 HDA_AMP_MUTE, HDA_AMP_MUTE); 8787 if (spec->jack_present)
8783 } else { 8788 mute = HDA_AMP_MUTE;
8784 /* unmute internal speaker if necessary */ 8789 else
8785 mute = snd_hda_codec_amp_read(codec, 0x14, 0, HDA_OUTPUT, 0); 8790 mute = snd_hda_codec_amp_read(codec, 0x14, 0, HDA_OUTPUT, 0);
8786 snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0, 8791 snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0,
8787 HDA_AMP_MUTE, mute); 8792 HDA_AMP_MUTE, mute);
8788 }
8789} 8793}
8790 8794
8791/* unsolicited event for HP jack sensing */ 8795/* unsolicited event for HP jack sensing */
@@ -8797,6 +8801,11 @@ static void alc262_fujitsu_unsol_event(struct hda_codec *codec,
8797 alc262_fujitsu_automute(codec, 1); 8801 alc262_fujitsu_automute(codec, 1);
8798} 8802}
8799 8803
8804static void alc262_fujitsu_init_hook(struct hda_codec *codec)
8805{
8806 alc262_fujitsu_automute(codec, 1);
8807}
8808
8800/* bind volumes of both NID 0x0c and 0x0d */ 8809/* bind volumes of both NID 0x0c and 0x0d */
8801static struct hda_bind_ctls alc262_fujitsu_bind_master_vol = { 8810static struct hda_bind_ctls alc262_fujitsu_bind_master_vol = {
8802 .ops = &snd_hda_bind_vol, 8811 .ops = &snd_hda_bind_vol,
@@ -9570,6 +9579,7 @@ static struct alc_config_preset alc262_presets[] = {
9570 .channel_mode = alc262_modes, 9579 .channel_mode = alc262_modes,
9571 .input_mux = &alc262_fujitsu_capture_source, 9580 .input_mux = &alc262_fujitsu_capture_source,
9572 .unsol_event = alc262_fujitsu_unsol_event, 9581 .unsol_event = alc262_fujitsu_unsol_event,
9582 .init_hook = alc262_fujitsu_init_hook,
9573 }, 9583 },
9574 [ALC262_HP_BPC] = { 9584 [ALC262_HP_BPC] = {
9575 .mixers = { alc262_HP_BPC_mixer }, 9585 .mixers = { alc262_HP_BPC_mixer },
diff --git a/sound/usb/caiaq/caiaq-device.c b/sound/usb/caiaq/caiaq-device.c
index e97d8b2ac16a..a972f77bd785 100644
--- a/sound/usb/caiaq/caiaq-device.c
+++ b/sound/usb/caiaq/caiaq-device.c
@@ -351,8 +351,8 @@ static struct snd_card* create_card(struct usb_device* usb_dev)
351 dev = caiaqdev(card); 351 dev = caiaqdev(card);
352 dev->chip.dev = usb_dev; 352 dev->chip.dev = usb_dev;
353 dev->chip.card = card; 353 dev->chip.card = card;
354 dev->chip.usb_id = USB_ID(usb_dev->descriptor.idVendor, 354 dev->chip.usb_id = USB_ID(le16_to_cpu(usb_dev->descriptor.idVendor),
355 usb_dev->descriptor.idProduct); 355 le16_to_cpu(usb_dev->descriptor.idProduct));
356 spin_lock_init(&dev->spinlock); 356 spin_lock_init(&dev->spinlock);
357 snd_card_set_dev(card, &usb_dev->dev); 357 snd_card_set_dev(card, &usb_dev->dev);
358 358