diff options
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 | |||
982 | W: http://sourceforge.net/projects/bonding/ | 982 | W: http://sourceforge.net/projects/bonding/ |
983 | S: Supported | 983 | S: Supported |
984 | 984 | ||
985 | BROADBAND PROCESSOR ARCHITECTURE | ||
986 | P: Arnd Bergmann | ||
987 | M: arnd@arndb.de | ||
988 | L: linuxppc-dev@ozlabs.org | ||
989 | W: http://www.penguinppc.org/ppc64/ | ||
990 | S: Supported | ||
991 | |||
992 | BROADCOM B44 10/100 ETHERNET DRIVER | 985 | BROADCOM B44 10/100 ETHERNET DRIVER |
993 | P: Gary Zambrano | 986 | P: Gary Zambrano |
994 | M: zambrano@broadcom.com | 987 | M: zambrano@broadcom.com |
@@ -1052,6 +1045,14 @@ L: linux-kernel@vger.kernel.org | |||
1052 | L: discuss@x86-64.org | 1045 | L: discuss@x86-64.org |
1053 | S: Maintained | 1046 | S: Maintained |
1054 | 1047 | ||
1048 | CELL BROADBAND ENGINE ARCHITECTURE | ||
1049 | P: Arnd Bergmann | ||
1050 | M: arnd@arndb.de | ||
1051 | L: linuxppc-dev@ozlabs.org | ||
1052 | L: cbe-oss-dev@ozlabs.org | ||
1053 | W: http://www.ibm.com/developerworks/power/cell/ | ||
1054 | S: Supported | ||
1055 | |||
1055 | CFAG12864B LCD DRIVER | 1056 | CFAG12864B LCD DRIVER |
1056 | P: Miguel Ojeda Sandonis | 1057 | P: Miguel Ojeda Sandonis |
1057 | M: maxextreme@gmail.com | 1058 | M: maxextreme@gmail.com |
@@ -1645,8 +1646,10 @@ W: http://linux-fbdev.sourceforge.net/ | |||
1645 | S: Maintained | 1646 | S: Maintained |
1646 | 1647 | ||
1647 | FREESCALE DMA DRIVER | 1648 | FREESCALE DMA DRIVER |
1648 | P; Zhang Wei | 1649 | P: Li Yang |
1649 | M: wei.zhang@freescale.com | 1650 | M: leoli@freescale.com |
1651 | P: Zhang Wei | ||
1652 | M: zw@zh-kernel.org | ||
1650 | L: linuxppc-embedded@ozlabs.org | 1653 | L: linuxppc-embedded@ozlabs.org |
1651 | L: linux-kernel@vger.kernel.org | 1654 | L: linux-kernel@vger.kernel.org |
1652 | S: Maintained | 1655 | S: Maintained |
@@ -3142,7 +3145,7 @@ PCI ERROR RECOVERY | |||
3142 | P: Linas Vepstas | 3145 | P: Linas Vepstas |
3143 | M: linas@austin.ibm.com | 3146 | M: linas@austin.ibm.com |
3144 | L: linux-kernel@vger.kernel.org | 3147 | L: linux-kernel@vger.kernel.org |
3145 | L: linux-pci@atrey.karlin.mff.cuni.cz | 3148 | L: linux-pci@vger.kernel.org |
3146 | S: Supported | 3149 | S: Supported |
3147 | 3150 | ||
3148 | PCI SUBSYSTEM | 3151 | PCI SUBSYSTEM |
@@ -3776,6 +3779,14 @@ M: dbrownell@users.sourceforge.net | |||
3776 | L: spi-devel-general@lists.sourceforge.net | 3779 | L: spi-devel-general@lists.sourceforge.net |
3777 | S: Maintained | 3780 | S: Maintained |
3778 | 3781 | ||
3782 | SPU FILE SYSTEM | ||
3783 | P: Jeremy Kerr | ||
3784 | M: jk@ozlabs.org | ||
3785 | L: linuxppc-dev@ozlabs.org | ||
3786 | L: cbe-oss-dev@ozlabs.org | ||
3787 | W: http://www.ibm.com/developerworks/power/cell/ | ||
3788 | S: Supported | ||
3789 | |||
3779 | STABLE BRANCH: | 3790 | STABLE BRANCH: |
3780 | P: Greg Kroah-Hartman | 3791 | P: Greg Kroah-Hartman |
3781 | M: greg@kroah.com | 3792 | M: 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 | } |
16 | EXPORT_SYMBOL(strcpy); | 16 | EXPORT_SYMBOL(strcpy); |
17 | 17 | ||
18 | char *strcat(char *dest, const char *src) | ||
19 | { | ||
20 | return __kernel_strcpy(dest + __kernel_strlen(dest), src); | ||
21 | } | ||
22 | EXPORT_SYMBOL(strcat); | ||
23 | |||
18 | void *memset(void *s, int c, size_t count) | 24 | void *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 | |||
20 | mktree | 20 | mktree |
21 | uImage | 21 | uImage |
22 | cuImage.* | 22 | cuImage.* |
23 | dtbImage.* | ||
23 | treeImage.* | 24 | treeImage.* |
24 | zImage | 25 | zImage |
26 | zImage.initrd | ||
25 | zImage.bin.* | 27 | zImage.bin.* |
26 | zImage.chrp | 28 | zImage.chrp |
27 | zImage.coff | 29 | zImage.coff |
28 | zImage.coff.lds | 30 | zImage.holly |
29 | zImage.ep* | ||
30 | zImage.iseries | 31 | zImage.iseries |
31 | zImage.*lds | 32 | zImage.*lds |
32 | zImage.miboot | 33 | zImage.miboot |
33 | zImage.pmac | 34 | zImage.pmac |
34 | zImage.pseries | 35 | zImage.pseries |
35 | zImage.redboot* | ||
36 | zImage.sandpoint | ||
37 | zImage.vmode | ||
38 | zconf.h | 36 | zconf.h |
39 | zlib.h | 37 | zlib.h |
40 | zutil.h | 38 | zutil.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 | ||
101 | clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \ | 101 | clean-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 | ||
104 | quiet_cmd_bootcc = BOOTCC $@ | 104 | quiet_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) |
342 | clean-files += $(image-) $(initrd-) zImage zImage.initrd cuImage.* treeImage.* \ | 342 | clean-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 | |||
32 | CONFIG_GENERIC_HARDIRQS=y | 32 | CONFIG_GENERIC_HARDIRQS=y |
33 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 33 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
34 | CONFIG_IRQ_PER_CPU=y | 34 | CONFIG_IRQ_PER_CPU=y |
35 | CONFIG_STACKTRACE_SUPPORT=y | ||
36 | CONFIG_LOCKDEP_SUPPORT=y | ||
35 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 37 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
36 | CONFIG_ARCH_HAS_ILOG2_U32=y | 38 | CONFIG_ARCH_HAS_ILOG2_U32=y |
37 | CONFIG_GENERIC_HWEIGHT=y | 39 | CONFIG_GENERIC_HWEIGHT=y |
@@ -88,6 +90,7 @@ CONFIG_INITRAMFS_SOURCE="" | |||
88 | CONFIG_SYSCTL=y | 90 | CONFIG_SYSCTL=y |
89 | # CONFIG_EMBEDDED is not set | 91 | # CONFIG_EMBEDDED is not set |
90 | CONFIG_SYSCTL_SYSCALL=y | 92 | CONFIG_SYSCTL_SYSCALL=y |
93 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
91 | CONFIG_KALLSYMS=y | 94 | CONFIG_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 | |||
95 | CONFIG_PRINTK=y | 98 | CONFIG_PRINTK=y |
96 | CONFIG_BUG=y | 99 | CONFIG_BUG=y |
97 | CONFIG_ELF_CORE=y | 100 | CONFIG_ELF_CORE=y |
101 | CONFIG_PCSPKR_PLATFORM=y | ||
98 | # CONFIG_COMPAT_BRK is not set | 102 | # CONFIG_COMPAT_BRK is not set |
99 | CONFIG_BASE_FULL=y | 103 | CONFIG_BASE_FULL=y |
100 | CONFIG_FUTEX=y | 104 | CONFIG_FUTEX=y |
@@ -115,12 +119,14 @@ CONFIG_HAVE_OPROFILE=y | |||
115 | # CONFIG_KPROBES is not set | 119 | # CONFIG_KPROBES is not set |
116 | CONFIG_HAVE_KPROBES=y | 120 | CONFIG_HAVE_KPROBES=y |
117 | CONFIG_HAVE_KRETPROBES=y | 121 | CONFIG_HAVE_KRETPROBES=y |
122 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
118 | CONFIG_PROC_PAGE_MONITOR=y | 123 | CONFIG_PROC_PAGE_MONITOR=y |
119 | CONFIG_SLABINFO=y | 124 | CONFIG_SLABINFO=y |
120 | CONFIG_RT_MUTEXES=y | 125 | CONFIG_RT_MUTEXES=y |
121 | # CONFIG_TINY_SHMEM is not set | 126 | # CONFIG_TINY_SHMEM is not set |
122 | CONFIG_BASE_SMALL=0 | 127 | CONFIG_BASE_SMALL=0 |
123 | CONFIG_MODULES=y | 128 | CONFIG_MODULES=y |
129 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
124 | CONFIG_MODULE_UNLOAD=y | 130 | CONFIG_MODULE_UNLOAD=y |
125 | CONFIG_MODULE_FORCE_UNLOAD=y | 131 | CONFIG_MODULE_FORCE_UNLOAD=y |
126 | # CONFIG_MODVERSIONS is not set | 132 | # CONFIG_MODVERSIONS is not set |
@@ -217,11 +223,13 @@ CONFIG_FLATMEM=y | |||
217 | CONFIG_FLAT_NODE_MEM_MAP=y | 223 | CONFIG_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 |
226 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
220 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 227 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
221 | # CONFIG_RESOURCES_64BIT is not set | 228 | # CONFIG_RESOURCES_64BIT is not set |
222 | CONFIG_ZONE_DMA_FLAG=1 | 229 | CONFIG_ZONE_DMA_FLAG=1 |
223 | CONFIG_BOUNCE=y | 230 | CONFIG_BOUNCE=y |
224 | CONFIG_VIRT_TO_BUS=y | 231 | CONFIG_VIRT_TO_BUS=y |
232 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
225 | CONFIG_PROC_DEVICETREE=y | 233 | CONFIG_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 | # |
257 | CONFIG_HIGHMEM_START=0xfe000000 | ||
258 | CONFIG_LOWMEM_SIZE=0x30000000 | 266 | CONFIG_LOWMEM_SIZE=0x30000000 |
267 | CONFIG_PAGE_OFFSET=0xc0000000 | ||
259 | CONFIG_KERNEL_START=0xc0000000 | 268 | CONFIG_KERNEL_START=0xc0000000 |
269 | CONFIG_PHYSICAL_START=0x00000000 | ||
260 | CONFIG_TASK_SIZE=0xc0000000 | 270 | CONFIG_TASK_SIZE=0xc0000000 |
261 | CONFIG_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 |
305 | CONFIG_NETFILTER=y | 312 | CONFIG_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 |
400 | CONFIG_OF_DEVICE=y | 407 | CONFIG_OF_DEVICE=y |
408 | CONFIG_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 |
403 | CONFIG_BLK_DEV=y | 411 | CONFIG_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 |
485 | CONFIG_BLK_DEV_VIA82CXXX=y | 493 | CONFIG_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 | ||
501 | CONFIG_BLK_DEV_IDEDMA=y | 495 | CONFIG_BLK_DEV_IDEDMA=y |
502 | CONFIG_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 |
642 | CONFIG_NET_PCI=y | 636 | CONFIG_NET_PCI=y |
643 | CONFIG_PCNET32=y | 637 | CONFIG_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 | |||
813 | CONFIG_VT_CONSOLE=y | 807 | CONFIG_VT_CONSOLE=y |
814 | CONFIG_HW_CONSOLE=y | 808 | CONFIG_HW_CONSOLE=y |
815 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 809 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
810 | CONFIG_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 | |||
853 | CONFIG_I2C=y | 848 | CONFIG_I2C=y |
854 | CONFIG_I2C_BOARDINFO=y | 849 | CONFIG_I2C_BOARDINFO=y |
855 | # CONFIG_I2C_CHARDEV is not set | 850 | # CONFIG_I2C_CHARDEV is not set |
856 | |||
857 | # | ||
858 | # I2C Algorithms | ||
859 | # | ||
860 | CONFIG_I2C_ALGOBIT=y | 851 | CONFIG_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 |
957 | CONFIG_FB_DEFERRED_IO=y | ||
958 | # CONFIG_FB_SVGALIB is not set | 952 | # CONFIG_FB_SVGALIB is not set |
959 | CONFIG_FB_MACMODES=y | 953 | CONFIG_FB_MACMODES=y |
960 | CONFIG_FB_BACKLIGHT=y | 954 | CONFIG_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 | ||
1075 | CONFIG_USB_EHCI_HCD=m | 1070 | CONFIG_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 | ||
1080 | CONFIG_USB_OHCI_HCD=y | 1076 | CONFIG_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 |
1185 | CONFIG_DNOTIFY=y | 1178 | CONFIG_DNOTIFY=y |
1186 | CONFIG_INOTIFY=y | 1179 | CONFIG_INOTIFY=y |
@@ -1314,6 +1307,7 @@ CONFIG_NLS_ISO8859_1=m | |||
1314 | # Library routines | 1307 | # Library routines |
1315 | # | 1308 | # |
1316 | CONFIG_BITREVERSE=y | 1309 | CONFIG_BITREVERSE=y |
1310 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1317 | CONFIG_CRC_CCITT=m | 1311 | CONFIG_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 |
1335 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1329 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1336 | CONFIG_ENABLE_MUST_CHECK=y | 1330 | CONFIG_ENABLE_MUST_CHECK=y |
1331 | CONFIG_FRAME_WARN=1024 | ||
1337 | CONFIG_MAGIC_SYSRQ=y | 1332 | CONFIG_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 | |||
1344 | CONFIG_SCHED_DEBUG=y | 1339 | CONFIG_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 | |||
1357 | CONFIG_DEBUG_BUGVERBOSE=y | 1353 | CONFIG_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 | |||
1371 | CONFIG_XMON=y | 1368 | CONFIG_XMON=y |
1372 | CONFIG_XMON_DEFAULT=y | 1369 | CONFIG_XMON_DEFAULT=y |
1373 | CONFIG_XMON_DISASSEMBLY=y | 1370 | CONFIG_XMON_DISASSEMBLY=y |
1371 | CONFIG_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 |
1384 | CONFIG_CRYPTO=y | 1382 | CONFIG_CRYPTO=y |
1383 | |||
1384 | # | ||
1385 | # Crypto core or helper | ||
1386 | # | ||
1385 | CONFIG_CRYPTO_ALGAPI=m | 1387 | CONFIG_CRYPTO_ALGAPI=m |
1386 | CONFIG_CRYPTO_BLKCIPHER=m | 1388 | CONFIG_CRYPTO_BLKCIPHER=m |
1387 | # CONFIG_CRYPTO_SEQIV is not set | ||
1388 | CONFIG_CRYPTO_MANAGER=m | 1389 | CONFIG_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 | # | ||
1406 | CONFIG_CRYPTO_CBC=m | ||
1407 | # CONFIG_CRYPTO_CTR is not set | ||
1408 | # CONFIG_CRYPTO_CTS is not set | ||
1409 | CONFIG_CRYPTO_ECB=m | ||
1410 | # CONFIG_CRYPTO_LRW is not set | ||
1411 | CONFIG_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 | ||
1394 | CONFIG_CRYPTO_SHA1=m | 1427 | CONFIG_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 |
1400 | CONFIG_CRYPTO_ECB=m | 1432 | |
1401 | CONFIG_CRYPTO_CBC=m | 1433 | # |
1402 | CONFIG_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 | ||
1438 | CONFIG_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 |
1418 | CONFIG_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 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -29,6 +29,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y | |||
29 | CONFIG_GENERIC_HARDIRQS=y | 29 | CONFIG_GENERIC_HARDIRQS=y |
30 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 30 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
31 | CONFIG_IRQ_PER_CPU=y | 31 | CONFIG_IRQ_PER_CPU=y |
32 | CONFIG_STACKTRACE_SUPPORT=y | ||
33 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
34 | CONFIG_LOCKDEP_SUPPORT=y | ||
32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 35 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
33 | CONFIG_ARCH_HAS_ILOG2_U32=y | 36 | CONFIG_ARCH_HAS_ILOG2_U32=y |
34 | CONFIG_ARCH_HAS_ILOG2_U64=y | 37 | CONFIG_ARCH_HAS_ILOG2_U64=y |
@@ -91,6 +94,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y | |||
91 | CONFIG_SYSCTL=y | 94 | CONFIG_SYSCTL=y |
92 | # CONFIG_EMBEDDED is not set | 95 | # CONFIG_EMBEDDED is not set |
93 | CONFIG_SYSCTL_SYSCALL=y | 96 | CONFIG_SYSCTL_SYSCALL=y |
97 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
94 | CONFIG_KALLSYMS=y | 98 | CONFIG_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 |
120 | CONFIG_HAVE_KPROBES=y | 124 | CONFIG_HAVE_KPROBES=y |
121 | CONFIG_HAVE_KRETPROBES=y | 125 | CONFIG_HAVE_KRETPROBES=y |
126 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
122 | CONFIG_PROC_PAGE_MONITOR=y | 127 | CONFIG_PROC_PAGE_MONITOR=y |
123 | CONFIG_SLABINFO=y | 128 | CONFIG_SLABINFO=y |
124 | CONFIG_RT_MUTEXES=y | 129 | CONFIG_RT_MUTEXES=y |
125 | # CONFIG_TINY_SHMEM is not set | 130 | # CONFIG_TINY_SHMEM is not set |
126 | CONFIG_BASE_SMALL=0 | 131 | CONFIG_BASE_SMALL=0 |
127 | CONFIG_MODULES=y | 132 | CONFIG_MODULES=y |
133 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
128 | CONFIG_MODULE_UNLOAD=y | 134 | CONFIG_MODULE_UNLOAD=y |
129 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 135 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
130 | CONFIG_MODVERSIONS=y | 136 | CONFIG_MODVERSIONS=y |
@@ -165,11 +171,11 @@ CONFIG_PPC_PMAC=y | |||
165 | CONFIG_PPC_PMAC64=y | 171 | CONFIG_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 |
174 | CONFIG_PPC_NATIVE=y | 180 | CONFIG_PPC_NATIVE=y |
175 | # CONFIG_IPIC is not set | 181 | # CONFIG_IPIC is not set |
@@ -190,6 +196,7 @@ CONFIG_CPU_FREQ_TABLE=y | |||
190 | CONFIG_CPU_FREQ_STAT=y | 196 | CONFIG_CPU_FREQ_STAT=y |
191 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | 197 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set |
192 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 198 | CONFIG_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 | |||
224 | CONFIG_BINFMT_ELF=y | 231 | CONFIG_BINFMT_ELF=y |
225 | CONFIG_COMPAT_BINFMT_ELF=y | 232 | CONFIG_COMPAT_BINFMT_ELF=y |
226 | # CONFIG_BINFMT_MISC is not set | 233 | # CONFIG_BINFMT_MISC is not set |
227 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
228 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 234 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
229 | CONFIG_IOMMU_VMERGE=y | 235 | CONFIG_IOMMU_VMERGE=y |
230 | CONFIG_IOMMU_HELPER=y | 236 | CONFIG_IOMMU_HELPER=y |
@@ -248,12 +254,14 @@ CONFIG_FLATMEM=y | |||
248 | CONFIG_FLAT_NODE_MEM_MAP=y | 254 | CONFIG_FLAT_NODE_MEM_MAP=y |
249 | # CONFIG_SPARSEMEM_STATIC is not set | 255 | # CONFIG_SPARSEMEM_STATIC is not set |
250 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | 256 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y |
257 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
251 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 258 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
252 | CONFIG_RESOURCES_64BIT=y | 259 | CONFIG_RESOURCES_64BIT=y |
253 | CONFIG_ZONE_DMA_FLAG=1 | 260 | CONFIG_ZONE_DMA_FLAG=1 |
254 | CONFIG_BOUNCE=y | 261 | CONFIG_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 |
264 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
257 | # CONFIG_SCHED_SMT is not set | 265 | # CONFIG_SCHED_SMT is not set |
258 | CONFIG_PROC_DEVICETREE=y | 266 | CONFIG_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 | ||
290 | CONFIG_PAGE_OFFSET=0xc000000000000000 | ||
281 | CONFIG_KERNEL_START=0xc000000000000000 | 291 | CONFIG_KERNEL_START=0xc000000000000000 |
292 | CONFIG_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 |
331 | CONFIG_NETFILTER=y | 340 | CONFIG_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 |
343 | CONFIG_NF_CONNTRACK_MARK=y | 352 | CONFIG_NF_CONNTRACK_MARK=y |
344 | CONFIG_NF_CONNTRACK_EVENTS=y | 353 | CONFIG_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 |
420 | CONFIG_OF_DEVICE=y | 430 | CONFIG_OF_DEVICE=y |
431 | CONFIG_OF_I2C=y | ||
421 | # CONFIG_PARPORT is not set | 432 | # CONFIG_PARPORT is not set |
422 | CONFIG_BLK_DEV=y | 433 | CONFIG_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 | # |
468 | CONFIG_IDE_GENERIC=y | ||
469 | # CONFIG_BLK_DEV_PLATFORM is not set | 479 | # CONFIG_BLK_DEV_PLATFORM is not set |
470 | CONFIG_BLK_DEV_IDEDMA_SFF=y | 480 | CONFIG_BLK_DEV_IDEDMA_SFF=y |
471 | 481 | ||
@@ -506,7 +516,7 @@ CONFIG_BLK_DEV_IDE_PMAC=y | |||
506 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y | 516 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y |
507 | CONFIG_BLK_DEV_IDEDMA_PMAC=y | 517 | CONFIG_BLK_DEV_IDEDMA_PMAC=y |
508 | CONFIG_BLK_DEV_IDEDMA=y | 518 | CONFIG_BLK_DEV_IDEDMA=y |
509 | CONFIG_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 |
585 | CONFIG_ATA=y | 595 | CONFIG_ATA=y |
586 | # CONFIG_ATA_NONSTANDARD is not set | 596 | # CONFIG_ATA_NONSTANDARD is not set |
597 | CONFIG_SATA_PMP=y | ||
587 | # CONFIG_SATA_AHCI is not set | 598 | # CONFIG_SATA_AHCI is not set |
588 | CONFIG_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 | ||
642 | CONFIG_MD=y | 601 | CONFIG_MD=y |
643 | CONFIG_BLK_DEV_MD=y | 602 | CONFIG_BLK_DEV_MD=y |
644 | CONFIG_MD_LINEAR=y | 603 | CONFIG_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 |
745 | CONFIG_TIGON3=y | 703 | CONFIG_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 | ||
762 | CONFIG_TR=y | 720 | CONFIG_TR=y |
763 | CONFIG_IBMOL=y | 721 | CONFIG_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 | |||
865 | CONFIG_VT_CONSOLE=y | 824 | CONFIG_VT_CONSOLE=y |
866 | CONFIG_HW_CONSOLE=y | 825 | CONFIG_HW_CONSOLE=y |
867 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 826 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
827 | CONFIG_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 | |||
895 | CONFIG_I2C=y | 855 | CONFIG_I2C=y |
896 | CONFIG_I2C_BOARDINFO=y | 856 | CONFIG_I2C_BOARDINFO=y |
897 | CONFIG_I2C_CHARDEV=y | 857 | CONFIG_I2C_CHARDEV=y |
898 | |||
899 | # | ||
900 | # I2C Algorithms | ||
901 | # | ||
902 | CONFIG_I2C_ALGOBIT=y | 858 | CONFIG_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 | # | ||
977 | CONFIG_DAB=y | 936 | CONFIG_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 |
999 | CONFIG_FB_DEFERRED_IO=y | ||
1000 | # CONFIG_FB_SVGALIB is not set | 959 | # CONFIG_FB_SVGALIB is not set |
1001 | CONFIG_FB_MACMODES=y | 960 | CONFIG_FB_MACMODES=y |
1002 | CONFIG_FB_BACKLIGHT=y | 961 | CONFIG_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 | |||
1222 | CONFIG_HID_FF=y | 1182 | CONFIG_HID_FF=y |
1223 | CONFIG_HID_PID=y | 1183 | CONFIG_HID_PID=y |
1224 | CONFIG_LOGITECH_FF=y | 1184 | CONFIG_LOGITECH_FF=y |
1185 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | ||
1225 | # CONFIG_PANTHERLORD_FF is not set | 1186 | # CONFIG_PANTHERLORD_FF is not set |
1226 | CONFIG_THRUSTMASTER_FF=y | 1187 | CONFIG_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 | ||
1248 | CONFIG_USB_EHCI_HCD=y | 1210 | CONFIG_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 | ||
1253 | CONFIG_USB_OHCI_HCD=y | 1216 | CONFIG_USB_OHCI_HCD=y |
1254 | CONFIG_USB_OHCI_HCD_PPC_OF=y | 1217 | CONFIG_USB_OHCI_HCD_PPC_OF=y |
1255 | CONFIG_USB_OHCI_HCD_PPC_OF_BE=y | 1218 | CONFIG_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 | |||
1342 | CONFIG_USB_SERIAL_MCT_U232=m | 1306 | CONFIG_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 |
1346 | CONFIG_USB_SERIAL_PL2303=m | 1311 | CONFIG_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 |
1349 | CONFIG_USB_SERIAL_SAFE=m | 1315 | CONFIG_USB_SERIAL_SAFE=m |
1350 | CONFIG_USB_SERIAL_SAFE_PADDED=y | 1316 | CONFIG_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 | |||
1420 | CONFIG_FS_POSIX_ACL=y | 1383 | CONFIG_FS_POSIX_ACL=y |
1421 | CONFIG_XFS_FS=m | 1384 | CONFIG_XFS_FS=m |
1422 | # CONFIG_XFS_QUOTA is not set | 1385 | # CONFIG_XFS_QUOTA is not set |
1423 | CONFIG_XFS_SECURITY=y | ||
1424 | CONFIG_XFS_POSIX_ACL=y | 1386 | CONFIG_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 |
1428 | CONFIG_DNOTIFY=y | 1391 | CONFIG_DNOTIFY=y |
@@ -1488,13 +1451,11 @@ CONFIG_NFS_FS=y | |||
1488 | CONFIG_NFS_V3=y | 1451 | CONFIG_NFS_V3=y |
1489 | CONFIG_NFS_V3_ACL=y | 1452 | CONFIG_NFS_V3_ACL=y |
1490 | CONFIG_NFS_V4=y | 1453 | CONFIG_NFS_V4=y |
1491 | # CONFIG_NFS_DIRECTIO is not set | ||
1492 | CONFIG_NFSD=y | 1454 | CONFIG_NFSD=y |
1493 | CONFIG_NFSD_V2_ACL=y | 1455 | CONFIG_NFSD_V2_ACL=y |
1494 | CONFIG_NFSD_V3=y | 1456 | CONFIG_NFSD_V3=y |
1495 | CONFIG_NFSD_V3_ACL=y | 1457 | CONFIG_NFSD_V3_ACL=y |
1496 | CONFIG_NFSD_V4=y | 1458 | CONFIG_NFSD_V4=y |
1497 | CONFIG_NFSD_TCP=y | ||
1498 | CONFIG_LOCKD=y | 1459 | CONFIG_LOCKD=y |
1499 | CONFIG_LOCKD_V4=y | 1460 | CONFIG_LOCKD_V4=y |
1500 | CONFIG_EXPORTFS=y | 1461 | CONFIG_EXPORTFS=y |
@@ -1583,9 +1544,10 @@ CONFIG_NLS_UTF8=y | |||
1583 | # Library routines | 1544 | # Library routines |
1584 | # | 1545 | # |
1585 | CONFIG_BITREVERSE=y | 1546 | CONFIG_BITREVERSE=y |
1547 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1586 | CONFIG_CRC_CCITT=m | 1548 | CONFIG_CRC_CCITT=m |
1587 | # CONFIG_CRC16 is not set | 1549 | # CONFIG_CRC16 is not set |
1588 | # CONFIG_CRC_ITU_T is not set | 1550 | CONFIG_CRC_ITU_T=m |
1589 | CONFIG_CRC32=y | 1551 | CONFIG_CRC32=y |
1590 | # CONFIG_CRC7 is not set | 1552 | # CONFIG_CRC7 is not set |
1591 | CONFIG_LIBCRC32C=m | 1553 | CONFIG_LIBCRC32C=m |
@@ -1603,6 +1565,7 @@ CONFIG_HAVE_LMB=y | |||
1603 | # CONFIG_PRINTK_TIME is not set | 1565 | # CONFIG_PRINTK_TIME is not set |
1604 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1566 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1605 | CONFIG_ENABLE_MUST_CHECK=y | 1567 | CONFIG_ENABLE_MUST_CHECK=y |
1568 | CONFIG_FRAME_WARN=2048 | ||
1606 | CONFIG_MAGIC_SYSRQ=y | 1569 | CONFIG_MAGIC_SYSRQ=y |
1607 | # CONFIG_UNUSED_SYMBOLS is not set | 1570 | # CONFIG_UNUSED_SYMBOLS is not set |
1608 | CONFIG_DEBUG_FS=y | 1571 | CONFIG_DEBUG_FS=y |
@@ -1613,18 +1576,23 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1613 | CONFIG_SCHED_DEBUG=y | 1576 | CONFIG_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 |
1621 | CONFIG_DEBUG_MUTEXES=y | 1585 | CONFIG_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 |
1625 | CONFIG_DEBUG_BUGVERBOSE=y | 1592 | CONFIG_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 |
1650 | CONFIG_CRYPTO=y | 1618 | CONFIG_CRYPTO=y |
1619 | |||
1620 | # | ||
1621 | # Crypto core or helper | ||
1622 | # | ||
1651 | CONFIG_CRYPTO_ALGAPI=y | 1623 | CONFIG_CRYPTO_ALGAPI=y |
1652 | CONFIG_CRYPTO_AEAD=m | 1624 | CONFIG_CRYPTO_AEAD=m |
1653 | CONFIG_CRYPTO_BLKCIPHER=y | 1625 | CONFIG_CRYPTO_BLKCIPHER=y |
1654 | # CONFIG_CRYPTO_SEQIV is not set | ||
1655 | CONFIG_CRYPTO_HASH=y | 1626 | CONFIG_CRYPTO_HASH=y |
1656 | CONFIG_CRYPTO_MANAGER=y | 1627 | CONFIG_CRYPTO_MANAGER=y |
1628 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1629 | CONFIG_CRYPTO_NULL=m | ||
1630 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1631 | CONFIG_CRYPTO_AUTHENC=m | ||
1632 | CONFIG_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 | # | ||
1644 | CONFIG_CRYPTO_CBC=y | ||
1645 | # CONFIG_CRYPTO_CTR is not set | ||
1646 | # CONFIG_CRYPTO_CTS is not set | ||
1647 | CONFIG_CRYPTO_ECB=m | ||
1648 | # CONFIG_CRYPTO_LRW is not set | ||
1649 | CONFIG_CRYPTO_PCBC=m | ||
1650 | # CONFIG_CRYPTO_XTS is not set | ||
1651 | |||
1652 | # | ||
1653 | # Hash modes | ||
1654 | # | ||
1657 | CONFIG_CRYPTO_HMAC=y | 1655 | CONFIG_CRYPTO_HMAC=y |
1658 | # CONFIG_CRYPTO_XCBC is not set | 1656 | # CONFIG_CRYPTO_XCBC is not set |
1659 | CONFIG_CRYPTO_NULL=m | 1657 | |
1658 | # | ||
1659 | # Digest | ||
1660 | # | ||
1661 | CONFIG_CRYPTO_CRC32C=m | ||
1660 | CONFIG_CRYPTO_MD4=m | 1662 | CONFIG_CRYPTO_MD4=m |
1661 | CONFIG_CRYPTO_MD5=y | 1663 | CONFIG_CRYPTO_MD5=y |
1664 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1662 | CONFIG_CRYPTO_SHA1=m | 1665 | CONFIG_CRYPTO_SHA1=m |
1663 | CONFIG_CRYPTO_SHA256=m | 1666 | CONFIG_CRYPTO_SHA256=m |
1664 | CONFIG_CRYPTO_SHA512=m | 1667 | CONFIG_CRYPTO_SHA512=m |
1665 | CONFIG_CRYPTO_WP512=m | ||
1666 | # CONFIG_CRYPTO_TGR192 is not set | 1668 | # CONFIG_CRYPTO_TGR192 is not set |
1667 | # CONFIG_CRYPTO_GF128MUL is not set | 1669 | CONFIG_CRYPTO_WP512=m |
1668 | CONFIG_CRYPTO_ECB=m | 1670 | |
1669 | CONFIG_CRYPTO_CBC=y | 1671 | # |
1670 | CONFIG_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 | ||
1677 | CONFIG_CRYPTO_DES=y | ||
1678 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1679 | CONFIG_CRYPTO_BLOWFISH=m | ||
1680 | CONFIG_CRYPTO_TWOFISH=m | ||
1681 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1682 | CONFIG_CRYPTO_SERPENT=m | ||
1683 | CONFIG_CRYPTO_AES=m | 1674 | CONFIG_CRYPTO_AES=m |
1675 | CONFIG_CRYPTO_ANUBIS=m | ||
1676 | CONFIG_CRYPTO_ARC4=m | ||
1677 | CONFIG_CRYPTO_BLOWFISH=m | ||
1678 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1684 | CONFIG_CRYPTO_CAST5=m | 1679 | CONFIG_CRYPTO_CAST5=m |
1685 | CONFIG_CRYPTO_CAST6=m | 1680 | CONFIG_CRYPTO_CAST6=m |
1686 | CONFIG_CRYPTO_TEA=m | 1681 | CONFIG_CRYPTO_DES=y |
1687 | CONFIG_CRYPTO_ARC4=m | 1682 | # CONFIG_CRYPTO_FCRYPT is not set |
1688 | CONFIG_CRYPTO_KHAZAD=m | 1683 | CONFIG_CRYPTO_KHAZAD=m |
1689 | CONFIG_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 | ||
1686 | CONFIG_CRYPTO_SERPENT=m | ||
1687 | CONFIG_CRYPTO_TEA=m | ||
1688 | CONFIG_CRYPTO_TWOFISH=m | ||
1689 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1690 | |||
1691 | # | ||
1692 | # Compression | ||
1693 | # | ||
1692 | CONFIG_CRYPTO_DEFLATE=m | 1694 | CONFIG_CRYPTO_DEFLATE=m |
1693 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1694 | CONFIG_CRYPTO_CRC32C=m | ||
1695 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1696 | CONFIG_CRYPTO_TEST=m | ||
1697 | CONFIG_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 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -30,6 +30,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y | |||
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
32 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
33 | CONFIG_STACKTRACE_SUPPORT=y | ||
34 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
35 | CONFIG_LOCKDEP_SUPPORT=y | ||
33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 36 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
34 | CONFIG_ARCH_HAS_ILOG2_U32=y | 37 | CONFIG_ARCH_HAS_ILOG2_U32=y |
35 | CONFIG_ARCH_HAS_ILOG2_U64=y | 38 | CONFIG_ARCH_HAS_ILOG2_U64=y |
@@ -91,6 +94,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y | |||
91 | CONFIG_SYSCTL=y | 94 | CONFIG_SYSCTL=y |
92 | # CONFIG_EMBEDDED is not set | 95 | # CONFIG_EMBEDDED is not set |
93 | CONFIG_SYSCTL_SYSCALL=y | 96 | CONFIG_SYSCTL_SYSCALL=y |
97 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
94 | CONFIG_KALLSYMS=y | 98 | CONFIG_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 |
119 | CONFIG_HAVE_KPROBES=y | 123 | CONFIG_HAVE_KPROBES=y |
120 | CONFIG_HAVE_KRETPROBES=y | 124 | CONFIG_HAVE_KRETPROBES=y |
125 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
121 | CONFIG_PROC_PAGE_MONITOR=y | 126 | CONFIG_PROC_PAGE_MONITOR=y |
122 | CONFIG_SLABINFO=y | 127 | CONFIG_SLABINFO=y |
123 | CONFIG_RT_MUTEXES=y | 128 | CONFIG_RT_MUTEXES=y |
124 | # CONFIG_TINY_SHMEM is not set | 129 | # CONFIG_TINY_SHMEM is not set |
125 | CONFIG_BASE_SMALL=0 | 130 | CONFIG_BASE_SMALL=0 |
126 | CONFIG_MODULES=y | 131 | CONFIG_MODULES=y |
132 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
127 | CONFIG_MODULE_UNLOAD=y | 133 | CONFIG_MODULE_UNLOAD=y |
128 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 134 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
129 | CONFIG_MODVERSIONS=y | 135 | CONFIG_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 | |||
212 | CONFIG_BINFMT_ELF=y | 218 | CONFIG_BINFMT_ELF=y |
213 | CONFIG_COMPAT_BINFMT_ELF=y | 219 | CONFIG_COMPAT_BINFMT_ELF=y |
214 | # CONFIG_BINFMT_MISC is not set | 220 | # CONFIG_BINFMT_MISC is not set |
215 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
216 | CONFIG_IOMMU_VMERGE=y | 221 | CONFIG_IOMMU_VMERGE=y |
217 | CONFIG_IOMMU_HELPER=y | 222 | CONFIG_IOMMU_HELPER=y |
218 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 223 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
@@ -234,12 +239,14 @@ CONFIG_FLATMEM=y | |||
234 | CONFIG_FLAT_NODE_MEM_MAP=y | 239 | CONFIG_FLAT_NODE_MEM_MAP=y |
235 | # CONFIG_SPARSEMEM_STATIC is not set | 240 | # CONFIG_SPARSEMEM_STATIC is not set |
236 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | 241 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y |
242 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
237 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 243 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
238 | CONFIG_RESOURCES_64BIT=y | 244 | CONFIG_RESOURCES_64BIT=y |
239 | CONFIG_ZONE_DMA_FLAG=1 | 245 | CONFIG_ZONE_DMA_FLAG=1 |
240 | CONFIG_BOUNCE=y | 246 | CONFIG_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 |
249 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
243 | # CONFIG_SCHED_SMT is not set | 250 | # CONFIG_SCHED_SMT is not set |
244 | CONFIG_PROC_DEVICETREE=y | 251 | CONFIG_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 | ||
274 | CONFIG_PAGE_OFFSET=0xc000000000000000 | ||
266 | CONFIG_KERNEL_START=0xc000000000000000 | 275 | CONFIG_KERNEL_START=0xc000000000000000 |
276 | CONFIG_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 |
316 | CONFIG_NETFILTER=y | 324 | CONFIG_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 |
328 | CONFIG_NF_CONNTRACK_MARK=y | 336 | CONFIG_NF_CONNTRACK_MARK=y |
329 | CONFIG_NF_CONNTRACK_EVENTS=y | 337 | CONFIG_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 |
632 | CONFIG_NET_PCI=y | 641 | CONFIG_NET_PCI=y |
633 | CONFIG_PCNET32=y | 642 | CONFIG_PCNET32=y |
634 | CONFIG_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 | ||
689 | CONFIG_TR=y | 696 | CONFIG_TR=y |
690 | CONFIG_IBMOL=y | 697 | CONFIG_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 |
700 | CONFIG_ISERIES_VETH=y | 708 | CONFIG_ISERIES_VETH=y |
701 | # CONFIG_FDDI is not set | 709 | # CONFIG_FDDI is not set |
@@ -762,6 +770,7 @@ CONFIG_VT=y | |||
762 | CONFIG_VT_CONSOLE=y | 770 | CONFIG_VT_CONSOLE=y |
763 | CONFIG_HW_CONSOLE=y | 771 | CONFIG_HW_CONSOLE=y |
764 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 772 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
773 | CONFIG_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 |
794 | CONFIG_DEVPORT=y | 803 | CONFIG_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 | |||
895 | CONFIG_FS_POSIX_ACL=y | 906 | CONFIG_FS_POSIX_ACL=y |
896 | CONFIG_XFS_FS=m | 907 | CONFIG_XFS_FS=m |
897 | # CONFIG_XFS_QUOTA is not set | 908 | # CONFIG_XFS_QUOTA is not set |
898 | CONFIG_XFS_SECURITY=y | ||
899 | CONFIG_XFS_POSIX_ACL=y | 909 | CONFIG_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 | ||
901 | CONFIG_GFS2_FS=m | 912 | CONFIG_GFS2_FS=m |
902 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | 913 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m |
903 | CONFIG_GFS2_FS_LOCKING_DLM=m | 914 | CONFIG_GFS2_FS_LOCKING_DLM=m |
@@ -966,13 +977,11 @@ CONFIG_NFS_FS=y | |||
966 | CONFIG_NFS_V3=y | 977 | CONFIG_NFS_V3=y |
967 | CONFIG_NFS_V3_ACL=y | 978 | CONFIG_NFS_V3_ACL=y |
968 | CONFIG_NFS_V4=y | 979 | CONFIG_NFS_V4=y |
969 | # CONFIG_NFS_DIRECTIO is not set | ||
970 | CONFIG_NFSD=m | 980 | CONFIG_NFSD=m |
971 | CONFIG_NFSD_V2_ACL=y | 981 | CONFIG_NFSD_V2_ACL=y |
972 | CONFIG_NFSD_V3=y | 982 | CONFIG_NFSD_V3=y |
973 | CONFIG_NFSD_V3_ACL=y | 983 | CONFIG_NFSD_V3_ACL=y |
974 | CONFIG_NFSD_V4=y | 984 | CONFIG_NFSD_V4=y |
975 | CONFIG_NFSD_TCP=y | ||
976 | CONFIG_LOCKD=y | 985 | CONFIG_LOCKD=y |
977 | CONFIG_LOCKD_V4=y | 986 | CONFIG_LOCKD_V4=y |
978 | CONFIG_EXPORTFS=m | 987 | CONFIG_EXPORTFS=m |
@@ -1047,9 +1056,10 @@ CONFIG_DLM=m | |||
1047 | # Library routines | 1056 | # Library routines |
1048 | # | 1057 | # |
1049 | CONFIG_BITREVERSE=y | 1058 | CONFIG_BITREVERSE=y |
1059 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1050 | CONFIG_CRC_CCITT=m | 1060 | CONFIG_CRC_CCITT=m |
1051 | # CONFIG_CRC16 is not set | 1061 | # CONFIG_CRC16 is not set |
1052 | # CONFIG_CRC_ITU_T is not set | 1062 | CONFIG_CRC_ITU_T=m |
1053 | CONFIG_CRC32=y | 1063 | CONFIG_CRC32=y |
1054 | # CONFIG_CRC7 is not set | 1064 | # CONFIG_CRC7 is not set |
1055 | CONFIG_LIBCRC32C=m | 1065 | CONFIG_LIBCRC32C=m |
@@ -1071,6 +1081,7 @@ CONFIG_HAVE_LMB=y | |||
1071 | # CONFIG_PRINTK_TIME is not set | 1081 | # CONFIG_PRINTK_TIME is not set |
1072 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1082 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1073 | CONFIG_ENABLE_MUST_CHECK=y | 1083 | CONFIG_ENABLE_MUST_CHECK=y |
1084 | CONFIG_FRAME_WARN=2048 | ||
1074 | CONFIG_MAGIC_SYSRQ=y | 1085 | CONFIG_MAGIC_SYSRQ=y |
1075 | # CONFIG_UNUSED_SYMBOLS is not set | 1086 | # CONFIG_UNUSED_SYMBOLS is not set |
1076 | CONFIG_DEBUG_FS=y | 1087 | CONFIG_DEBUG_FS=y |
@@ -1081,18 +1092,23 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1081 | CONFIG_SCHED_DEBUG=y | 1092 | CONFIG_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 |
1093 | CONFIG_DEBUG_BUGVERBOSE=y | 1108 | CONFIG_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 |
1118 | CONFIG_CRYPTO=y | 1134 | CONFIG_CRYPTO=y |
1135 | |||
1136 | # | ||
1137 | # Crypto core or helper | ||
1138 | # | ||
1119 | CONFIG_CRYPTO_ALGAPI=y | 1139 | CONFIG_CRYPTO_ALGAPI=y |
1120 | CONFIG_CRYPTO_AEAD=m | 1140 | CONFIG_CRYPTO_AEAD=m |
1121 | CONFIG_CRYPTO_BLKCIPHER=y | 1141 | CONFIG_CRYPTO_BLKCIPHER=y |
1122 | # CONFIG_CRYPTO_SEQIV is not set | ||
1123 | CONFIG_CRYPTO_HASH=y | 1142 | CONFIG_CRYPTO_HASH=y |
1124 | CONFIG_CRYPTO_MANAGER=y | 1143 | CONFIG_CRYPTO_MANAGER=y |
1144 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1145 | CONFIG_CRYPTO_NULL=m | ||
1146 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1147 | CONFIG_CRYPTO_AUTHENC=m | ||
1148 | CONFIG_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 | # | ||
1160 | CONFIG_CRYPTO_CBC=y | ||
1161 | # CONFIG_CRYPTO_CTR is not set | ||
1162 | # CONFIG_CRYPTO_CTS is not set | ||
1163 | CONFIG_CRYPTO_ECB=m | ||
1164 | # CONFIG_CRYPTO_LRW is not set | ||
1165 | CONFIG_CRYPTO_PCBC=m | ||
1166 | # CONFIG_CRYPTO_XTS is not set | ||
1167 | |||
1168 | # | ||
1169 | # Hash modes | ||
1170 | # | ||
1125 | CONFIG_CRYPTO_HMAC=y | 1171 | CONFIG_CRYPTO_HMAC=y |
1126 | # CONFIG_CRYPTO_XCBC is not set | 1172 | # CONFIG_CRYPTO_XCBC is not set |
1127 | CONFIG_CRYPTO_NULL=m | 1173 | |
1174 | # | ||
1175 | # Digest | ||
1176 | # | ||
1177 | CONFIG_CRYPTO_CRC32C=m | ||
1128 | CONFIG_CRYPTO_MD4=m | 1178 | CONFIG_CRYPTO_MD4=m |
1129 | CONFIG_CRYPTO_MD5=y | 1179 | CONFIG_CRYPTO_MD5=y |
1180 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1130 | CONFIG_CRYPTO_SHA1=m | 1181 | CONFIG_CRYPTO_SHA1=m |
1131 | CONFIG_CRYPTO_SHA256=m | 1182 | CONFIG_CRYPTO_SHA256=m |
1132 | CONFIG_CRYPTO_SHA512=m | 1183 | CONFIG_CRYPTO_SHA512=m |
1133 | CONFIG_CRYPTO_WP512=m | ||
1134 | CONFIG_CRYPTO_TGR192=m | 1184 | CONFIG_CRYPTO_TGR192=m |
1135 | # CONFIG_CRYPTO_GF128MUL is not set | 1185 | CONFIG_CRYPTO_WP512=m |
1136 | CONFIG_CRYPTO_ECB=m | 1186 | |
1137 | CONFIG_CRYPTO_CBC=y | 1187 | # |
1138 | CONFIG_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 | ||
1145 | CONFIG_CRYPTO_DES=y | ||
1146 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1147 | CONFIG_CRYPTO_BLOWFISH=m | ||
1148 | CONFIG_CRYPTO_TWOFISH=m | ||
1149 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1150 | CONFIG_CRYPTO_SERPENT=m | ||
1151 | CONFIG_CRYPTO_AES=m | 1190 | CONFIG_CRYPTO_AES=m |
1191 | CONFIG_CRYPTO_ANUBIS=m | ||
1192 | CONFIG_CRYPTO_ARC4=m | ||
1193 | CONFIG_CRYPTO_BLOWFISH=m | ||
1194 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1152 | CONFIG_CRYPTO_CAST5=m | 1195 | CONFIG_CRYPTO_CAST5=m |
1153 | CONFIG_CRYPTO_CAST6=m | 1196 | CONFIG_CRYPTO_CAST6=m |
1154 | CONFIG_CRYPTO_TEA=m | 1197 | CONFIG_CRYPTO_DES=y |
1155 | CONFIG_CRYPTO_ARC4=m | 1198 | # CONFIG_CRYPTO_FCRYPT is not set |
1156 | CONFIG_CRYPTO_KHAZAD=m | 1199 | CONFIG_CRYPTO_KHAZAD=m |
1157 | CONFIG_CRYPTO_ANUBIS=m | ||
1158 | CONFIG_CRYPTO_SEED=m | ||
1159 | # CONFIG_CRYPTO_SALSA20 is not set | 1200 | # CONFIG_CRYPTO_SALSA20 is not set |
1201 | CONFIG_CRYPTO_SEED=m | ||
1202 | CONFIG_CRYPTO_SERPENT=m | ||
1203 | CONFIG_CRYPTO_TEA=m | ||
1204 | CONFIG_CRYPTO_TWOFISH=m | ||
1205 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1206 | |||
1207 | # | ||
1208 | # Compression | ||
1209 | # | ||
1160 | CONFIG_CRYPTO_DEFLATE=m | 1210 | CONFIG_CRYPTO_DEFLATE=m |
1161 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1162 | CONFIG_CRYPTO_CRC32C=m | ||
1163 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1164 | CONFIG_CRYPTO_TEST=m | ||
1165 | CONFIG_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 | |||
31 | CONFIG_GENERIC_HARDIRQS=y | 31 | CONFIG_GENERIC_HARDIRQS=y |
32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
33 | CONFIG_IRQ_PER_CPU=y | 33 | CONFIG_IRQ_PER_CPU=y |
34 | CONFIG_STACKTRACE_SUPPORT=y | ||
35 | CONFIG_LOCKDEP_SUPPORT=y | ||
34 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 36 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
35 | CONFIG_ARCH_HAS_ILOG2_U32=y | 37 | CONFIG_ARCH_HAS_ILOG2_U32=y |
36 | CONFIG_GENERIC_HWEIGHT=y | 38 | CONFIG_GENERIC_HWEIGHT=y |
@@ -91,6 +93,7 @@ CONFIG_INITRAMFS_SOURCE="" | |||
91 | CONFIG_SYSCTL=y | 93 | CONFIG_SYSCTL=y |
92 | # CONFIG_EMBEDDED is not set | 94 | # CONFIG_EMBEDDED is not set |
93 | CONFIG_SYSCTL_SYSCALL=y | 95 | CONFIG_SYSCTL_SYSCALL=y |
96 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
94 | CONFIG_KALLSYMS=y | 97 | CONFIG_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 |
120 | CONFIG_HAVE_KPROBES=y | 123 | CONFIG_HAVE_KPROBES=y |
121 | CONFIG_HAVE_KRETPROBES=y | 124 | CONFIG_HAVE_KRETPROBES=y |
125 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
122 | CONFIG_PROC_PAGE_MONITOR=y | 126 | CONFIG_PROC_PAGE_MONITOR=y |
123 | CONFIG_SLABINFO=y | 127 | CONFIG_SLABINFO=y |
124 | CONFIG_RT_MUTEXES=y | 128 | CONFIG_RT_MUTEXES=y |
125 | # CONFIG_TINY_SHMEM is not set | 129 | # CONFIG_TINY_SHMEM is not set |
126 | CONFIG_BASE_SMALL=0 | 130 | CONFIG_BASE_SMALL=0 |
127 | CONFIG_MODULES=y | 131 | CONFIG_MODULES=y |
132 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
128 | CONFIG_MODULE_UNLOAD=y | 133 | CONFIG_MODULE_UNLOAD=y |
129 | CONFIG_MODULE_FORCE_UNLOAD=y | 134 | CONFIG_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 | |||
185 | CONFIG_CPU_FREQ_STAT=y | 190 | CONFIG_CPU_FREQ_STAT=y |
186 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | 191 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set |
187 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 192 | CONFIG_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 | |||
236 | CONFIG_FLAT_NODE_MEM_MAP=y | 242 | CONFIG_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 |
245 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
239 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 246 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
240 | # CONFIG_RESOURCES_64BIT is not set | 247 | # CONFIG_RESOURCES_64BIT is not set |
241 | CONFIG_ZONE_DMA_FLAG=1 | 248 | CONFIG_ZONE_DMA_FLAG=1 |
242 | CONFIG_BOUNCE=y | 249 | CONFIG_BOUNCE=y |
243 | CONFIG_VIRT_TO_BUS=y | 250 | CONFIG_VIRT_TO_BUS=y |
251 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
244 | CONFIG_PROC_DEVICETREE=y | 252 | CONFIG_PROC_DEVICETREE=y |
245 | # CONFIG_CMDLINE_BOOL is not set | 253 | # CONFIG_CMDLINE_BOOL is not set |
246 | CONFIG_ARCH_WANTS_FREEZER_CONTROL=y | 254 | CONFIG_ARCH_WANTS_FREEZER_CONTROL=y |
247 | CONFIG_PM=y | 255 | CONFIG_PM=y |
248 | # CONFIG_PM_LEGACY is not set | ||
249 | CONFIG_PM_DEBUG=y | 256 | CONFIG_PM_DEBUG=y |
250 | # CONFIG_PM_VERBOSE is not set | 257 | # CONFIG_PM_VERBOSE is not set |
251 | CONFIG_CAN_PM_TRACE=y | 258 | CONFIG_CAN_PM_TRACE=y |
@@ -292,6 +299,7 @@ CONFIG_YENTA_TOSHIBA=y | |||
292 | # CONFIG_I82092 is not set | 299 | # CONFIG_I82092 is not set |
293 | CONFIG_PCCARD_NONSTATIC=m | 300 | CONFIG_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 | # |
304 | CONFIG_HIGHMEM_START=0xfe000000 | ||
305 | CONFIG_LOWMEM_SIZE=0x30000000 | 312 | CONFIG_LOWMEM_SIZE=0x30000000 |
313 | CONFIG_PAGE_OFFSET=0xc0000000 | ||
306 | CONFIG_KERNEL_START=0xc0000000 | 314 | CONFIG_KERNEL_START=0xc0000000 |
315 | CONFIG_PHYSICAL_START=0x00000000 | ||
307 | CONFIG_TASK_SIZE=0xc0000000 | 316 | CONFIG_TASK_SIZE=0xc0000000 |
308 | CONFIG_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 |
358 | CONFIG_NETFILTER=y | 364 | CONFIG_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 |
378 | CONFIG_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 | |||
445 | CONFIG_IP_NF_TARGET_REDIRECT=m | 452 | CONFIG_IP_NF_TARGET_REDIRECT=m |
446 | CONFIG_IP_NF_TARGET_NETMAP=m | 453 | CONFIG_IP_NF_TARGET_NETMAP=m |
447 | # CONFIG_NF_NAT_SNMP_BASIC is not set | 454 | # CONFIG_NF_NAT_SNMP_BASIC is not set |
455 | CONFIG_NF_NAT_PROTO_DCCP=m | ||
448 | CONFIG_NF_NAT_FTP=m | 456 | CONFIG_NF_NAT_FTP=m |
449 | CONFIG_NF_NAT_IRC=m | 457 | CONFIG_NF_NAT_IRC=m |
450 | CONFIG_NF_NAT_TFTP=m | 458 | CONFIG_NF_NAT_TFTP=m |
@@ -586,7 +594,6 @@ CONFIG_MAC80211=m | |||
586 | # Rate control algorithm selection | 594 | # Rate control algorithm selection |
587 | # | 595 | # |
588 | CONFIG_MAC80211_RC_DEFAULT_PID=y | 596 | CONFIG_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 | # |
599 | CONFIG_MAC80211_RC_DEFAULT="pid" | 606 | CONFIG_MAC80211_RC_DEFAULT="pid" |
600 | CONFIG_MAC80211_RC_PID=y | 607 | CONFIG_MAC80211_RC_PID=y |
601 | # CONFIG_MAC80211_RC_SIMPLE is not set | 608 | # CONFIG_MAC80211_MESH is not set |
602 | CONFIG_MAC80211_LEDS=y | 609 | CONFIG_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 | |||
607 | CONFIG_IEEE80211_CRYPT_WEP=m | 614 | CONFIG_IEEE80211_CRYPT_WEP=m |
608 | CONFIG_IEEE80211_CRYPT_CCMP=m | 615 | CONFIG_IEEE80211_CRYPT_CCMP=m |
609 | CONFIG_IEEE80211_CRYPT_TKIP=m | 616 | CONFIG_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 | |||
629 | CONFIG_PROC_EVENTS=y | 635 | CONFIG_PROC_EVENTS=y |
630 | # CONFIG_MTD is not set | 636 | # CONFIG_MTD is not set |
631 | CONFIG_OF_DEVICE=y | 637 | CONFIG_OF_DEVICE=y |
638 | CONFIG_OF_I2C=y | ||
632 | # CONFIG_PARPORT is not set | 639 | # CONFIG_PARPORT is not set |
633 | CONFIG_BLK_DEV=y | 640 | CONFIG_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 | |||
720 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y | 727 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y |
721 | CONFIG_BLK_DEV_IDEDMA_PMAC=y | 728 | CONFIG_BLK_DEV_IDEDMA_PMAC=y |
722 | CONFIG_BLK_DEV_IDEDMA=y | 729 | CONFIG_BLK_DEV_IDEDMA=y |
723 | CONFIG_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 |
907 | CONFIG_NET_PCI=y | 914 | CONFIG_NET_PCI=y |
908 | CONFIG_PCNET32=y | 915 | CONFIG_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 | |||
1110 | CONFIG_VT_CONSOLE=y | 1118 | CONFIG_VT_CONSOLE=y |
1111 | CONFIG_HW_CONSOLE=y | 1119 | CONFIG_HW_CONSOLE=y |
1112 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 1120 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
1121 | CONFIG_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 | |||
1156 | CONFIG_I2C=y | 1165 | CONFIG_I2C=y |
1157 | CONFIG_I2C_BOARDINFO=y | 1166 | CONFIG_I2C_BOARDINFO=y |
1158 | CONFIG_I2C_CHARDEV=m | 1167 | CONFIG_I2C_CHARDEV=m |
1159 | |||
1160 | # | ||
1161 | # I2C Algorithms | ||
1162 | # | ||
1163 | CONFIG_I2C_ALGOBIT=y | 1168 | CONFIG_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 |
1218 | CONFIG_POWER_SUPPLY=y | 1216 | CONFIG_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 | # |
1231 | CONFIG_SSB_POSSIBLE=y | 1229 | CONFIG_SSB_POSSIBLE=y |
1232 | CONFIG_SSB=m | 1230 | CONFIG_SSB=m |
1231 | CONFIG_SSB_SPROM=y | ||
1233 | CONFIG_SSB_PCIHOST_POSSIBLE=y | 1232 | CONFIG_SSB_PCIHOST_POSSIBLE=y |
1234 | CONFIG_SSB_PCIHOST=y | 1233 | CONFIG_SSB_PCIHOST=y |
1235 | CONFIG_SSB_B43_PCI_BRIDGE=y | 1234 | CONFIG_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 |
1280 | CONFIG_FB_DEFERRED_IO=y | ||
1281 | # CONFIG_FB_SVGALIB is not set | 1290 | # CONFIG_FB_SVGALIB is not set |
1282 | CONFIG_FB_MACMODES=y | 1291 | CONFIG_FB_MACMODES=y |
1283 | CONFIG_FB_BACKLIGHT=y | 1292 | CONFIG_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 | |||
1543 | CONFIG_USB_DEVICE_CLASS=y | 1553 | CONFIG_USB_DEVICE_CLASS=y |
1544 | CONFIG_USB_DYNAMIC_MINORS=y | 1554 | CONFIG_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 | ||
1552 | CONFIG_USB_EHCI_HCD=m | 1562 | CONFIG_USB_EHCI_HCD=m |
1553 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1563 | CONFIG_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 | ||
1557 | CONFIG_USB_OHCI_HCD=y | 1568 | CONFIG_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 |
1601 | CONFIG_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 |
1696 | CONFIG_LEDS_TRIGGER_IDE_DISK=y | 1711 | CONFIG_LEDS_TRIGGER_IDE_DISK=y |
1697 | # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set | 1712 | # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set |
1713 | CONFIG_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 | |||
1786 | CONFIG_NFS_V3=y | 1799 | CONFIG_NFS_V3=y |
1787 | CONFIG_NFS_V3_ACL=y | 1800 | CONFIG_NFS_V3_ACL=y |
1788 | CONFIG_NFS_V4=y | 1801 | CONFIG_NFS_V4=y |
1789 | # CONFIG_NFS_DIRECTIO is not set | ||
1790 | CONFIG_NFSD=m | 1802 | CONFIG_NFSD=m |
1791 | CONFIG_NFSD_V2_ACL=y | 1803 | CONFIG_NFSD_V2_ACL=y |
1792 | CONFIG_NFSD_V3=y | 1804 | CONFIG_NFSD_V3=y |
1793 | CONFIG_NFSD_V3_ACL=y | 1805 | CONFIG_NFSD_V3_ACL=y |
1794 | CONFIG_NFSD_V4=y | 1806 | CONFIG_NFSD_V4=y |
1795 | CONFIG_NFSD_TCP=y | ||
1796 | CONFIG_LOCKD=y | 1807 | CONFIG_LOCKD=y |
1797 | CONFIG_LOCKD_V4=y | 1808 | CONFIG_LOCKD_V4=y |
1798 | CONFIG_EXPORTFS=m | 1809 | CONFIG_EXPORTFS=m |
@@ -1877,9 +1888,10 @@ CONFIG_NLS_UTF8=m | |||
1877 | # Library routines | 1888 | # Library routines |
1878 | # | 1889 | # |
1879 | CONFIG_BITREVERSE=y | 1890 | CONFIG_BITREVERSE=y |
1891 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1880 | CONFIG_CRC_CCITT=y | 1892 | CONFIG_CRC_CCITT=y |
1881 | CONFIG_CRC16=y | 1893 | CONFIG_CRC16=y |
1882 | # CONFIG_CRC_ITU_T is not set | 1894 | CONFIG_CRC_ITU_T=m |
1883 | CONFIG_CRC32=y | 1895 | CONFIG_CRC32=y |
1884 | # CONFIG_CRC7 is not set | 1896 | # CONFIG_CRC7 is not set |
1885 | CONFIG_LIBCRC32C=m | 1897 | CONFIG_LIBCRC32C=m |
@@ -1901,6 +1913,7 @@ CONFIG_HAVE_LMB=y | |||
1901 | # CONFIG_PRINTK_TIME is not set | 1913 | # CONFIG_PRINTK_TIME is not set |
1902 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1914 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1903 | CONFIG_ENABLE_MUST_CHECK=y | 1915 | CONFIG_ENABLE_MUST_CHECK=y |
1916 | CONFIG_FRAME_WARN=1024 | ||
1904 | CONFIG_MAGIC_SYSRQ=y | 1917 | CONFIG_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 | |||
1911 | CONFIG_SCHED_DEBUG=y | 1924 | CONFIG_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 | |||
1923 | CONFIG_DEBUG_BUGVERBOSE=y | 1937 | CONFIG_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 | |||
1936 | CONFIG_XMON=y | 1951 | CONFIG_XMON=y |
1937 | CONFIG_XMON_DEFAULT=y | 1952 | CONFIG_XMON_DEFAULT=y |
1938 | CONFIG_XMON_DISASSEMBLY=y | 1953 | CONFIG_XMON_DISASSEMBLY=y |
1954 | CONFIG_IRQSTACKS=y | ||
1939 | # CONFIG_BDI_SWITCH is not set | 1955 | # CONFIG_BDI_SWITCH is not set |
1940 | CONFIG_BOOTX_TEXT=y | 1956 | CONFIG_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 |
1949 | CONFIG_CRYPTO=y | 1965 | CONFIG_CRYPTO=y |
1966 | |||
1967 | # | ||
1968 | # Crypto core or helper | ||
1969 | # | ||
1950 | CONFIG_CRYPTO_ALGAPI=y | 1970 | CONFIG_CRYPTO_ALGAPI=y |
1951 | CONFIG_CRYPTO_AEAD=y | 1971 | CONFIG_CRYPTO_AEAD=y |
1952 | CONFIG_CRYPTO_BLKCIPHER=y | 1972 | CONFIG_CRYPTO_BLKCIPHER=y |
1953 | # CONFIG_CRYPTO_SEQIV is not set | ||
1954 | CONFIG_CRYPTO_HASH=y | 1973 | CONFIG_CRYPTO_HASH=y |
1955 | CONFIG_CRYPTO_MANAGER=y | 1974 | CONFIG_CRYPTO_MANAGER=y |
1975 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1976 | CONFIG_CRYPTO_NULL=m | ||
1977 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1978 | CONFIG_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 | # | ||
1991 | CONFIG_CRYPTO_CBC=y | ||
1992 | # CONFIG_CRYPTO_CTR is not set | ||
1993 | # CONFIG_CRYPTO_CTS is not set | ||
1994 | CONFIG_CRYPTO_ECB=m | ||
1995 | # CONFIG_CRYPTO_LRW is not set | ||
1996 | CONFIG_CRYPTO_PCBC=m | ||
1997 | # CONFIG_CRYPTO_XTS is not set | ||
1998 | |||
1999 | # | ||
2000 | # Hash modes | ||
2001 | # | ||
1956 | CONFIG_CRYPTO_HMAC=y | 2002 | CONFIG_CRYPTO_HMAC=y |
1957 | # CONFIG_CRYPTO_XCBC is not set | 2003 | # CONFIG_CRYPTO_XCBC is not set |
1958 | CONFIG_CRYPTO_NULL=m | 2004 | |
2005 | # | ||
2006 | # Digest | ||
2007 | # | ||
2008 | CONFIG_CRYPTO_CRC32C=m | ||
1959 | CONFIG_CRYPTO_MD4=m | 2009 | CONFIG_CRYPTO_MD4=m |
1960 | CONFIG_CRYPTO_MD5=y | 2010 | CONFIG_CRYPTO_MD5=y |
2011 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1961 | CONFIG_CRYPTO_SHA1=y | 2012 | CONFIG_CRYPTO_SHA1=y |
1962 | CONFIG_CRYPTO_SHA256=m | 2013 | CONFIG_CRYPTO_SHA256=m |
1963 | CONFIG_CRYPTO_SHA512=m | 2014 | CONFIG_CRYPTO_SHA512=m |
1964 | CONFIG_CRYPTO_WP512=m | ||
1965 | CONFIG_CRYPTO_TGR192=m | 2015 | CONFIG_CRYPTO_TGR192=m |
1966 | # CONFIG_CRYPTO_GF128MUL is not set | 2016 | CONFIG_CRYPTO_WP512=m |
1967 | CONFIG_CRYPTO_ECB=m | 2017 | |
1968 | CONFIG_CRYPTO_CBC=y | 2018 | # |
1969 | CONFIG_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 | ||
1976 | CONFIG_CRYPTO_DES=y | ||
1977 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1978 | CONFIG_CRYPTO_BLOWFISH=m | ||
1979 | CONFIG_CRYPTO_TWOFISH=m | ||
1980 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1981 | CONFIG_CRYPTO_SERPENT=m | ||
1982 | CONFIG_CRYPTO_AES=m | 2021 | CONFIG_CRYPTO_AES=m |
2022 | CONFIG_CRYPTO_ANUBIS=m | ||
2023 | CONFIG_CRYPTO_ARC4=m | ||
2024 | CONFIG_CRYPTO_BLOWFISH=m | ||
2025 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1983 | CONFIG_CRYPTO_CAST5=m | 2026 | CONFIG_CRYPTO_CAST5=m |
1984 | CONFIG_CRYPTO_CAST6=m | 2027 | CONFIG_CRYPTO_CAST6=m |
1985 | CONFIG_CRYPTO_TEA=m | 2028 | CONFIG_CRYPTO_DES=y |
1986 | CONFIG_CRYPTO_ARC4=m | 2029 | # CONFIG_CRYPTO_FCRYPT is not set |
1987 | CONFIG_CRYPTO_KHAZAD=m | 2030 | CONFIG_CRYPTO_KHAZAD=m |
1988 | CONFIG_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 | ||
2033 | CONFIG_CRYPTO_SERPENT=m | ||
2034 | CONFIG_CRYPTO_TEA=m | ||
2035 | CONFIG_CRYPTO_TWOFISH=m | ||
2036 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
2037 | |||
2038 | # | ||
2039 | # Compression | ||
2040 | # | ||
1991 | CONFIG_CRYPTO_DEFLATE=m | 2041 | CONFIG_CRYPTO_DEFLATE=m |
1992 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1993 | CONFIG_CRYPTO_CRC32C=m | ||
1994 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1995 | # CONFIG_CRYPTO_TEST is not set | ||
1996 | CONFIG_CRYPTO_AUTHENC=y | ||
1997 | # CONFIG_CRYPTO_LZO is not set | 2042 | # CONFIG_CRYPTO_LZO is not set |
1998 | CONFIG_CRYPTO_HW=y | 2043 | CONFIG_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 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -30,6 +30,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y | |||
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
32 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
33 | CONFIG_STACKTRACE_SUPPORT=y | ||
34 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
35 | CONFIG_LOCKDEP_SUPPORT=y | ||
33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 36 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
34 | CONFIG_ARCH_HAS_ILOG2_U32=y | 37 | CONFIG_ARCH_HAS_ILOG2_U32=y |
35 | CONFIG_ARCH_HAS_ILOG2_U64=y | 38 | CONFIG_ARCH_HAS_ILOG2_U64=y |
@@ -82,6 +85,7 @@ CONFIG_LOG_BUF_SHIFT=17 | |||
82 | CONFIG_CGROUPS=y | 85 | CONFIG_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 | ||
85 | CONFIG_CPUSETS=y | 89 | CONFIG_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 | |||
101 | CONFIG_SYSCTL=y | 105 | CONFIG_SYSCTL=y |
102 | # CONFIG_EMBEDDED is not set | 106 | # CONFIG_EMBEDDED is not set |
103 | CONFIG_SYSCTL_SYSCALL=y | 107 | CONFIG_SYSCTL_SYSCALL=y |
108 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
104 | CONFIG_KALLSYMS=y | 109 | CONFIG_KALLSYMS=y |
105 | CONFIG_KALLSYMS_ALL=y | 110 | CONFIG_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 | |||
108 | CONFIG_PRINTK=y | 113 | CONFIG_PRINTK=y |
109 | CONFIG_BUG=y | 114 | CONFIG_BUG=y |
110 | CONFIG_ELF_CORE=y | 115 | CONFIG_ELF_CORE=y |
116 | CONFIG_PCSPKR_PLATFORM=y | ||
111 | # CONFIG_COMPAT_BRK is not set | 117 | # CONFIG_COMPAT_BRK is not set |
112 | CONFIG_BASE_FULL=y | 118 | CONFIG_BASE_FULL=y |
113 | CONFIG_FUTEX=y | 119 | CONFIG_FUTEX=y |
@@ -129,12 +135,14 @@ CONFIG_HAVE_OPROFILE=y | |||
129 | # CONFIG_KPROBES is not set | 135 | # CONFIG_KPROBES is not set |
130 | CONFIG_HAVE_KPROBES=y | 136 | CONFIG_HAVE_KPROBES=y |
131 | CONFIG_HAVE_KRETPROBES=y | 137 | CONFIG_HAVE_KRETPROBES=y |
138 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
132 | CONFIG_PROC_PAGE_MONITOR=y | 139 | CONFIG_PROC_PAGE_MONITOR=y |
133 | CONFIG_SLABINFO=y | 140 | CONFIG_SLABINFO=y |
134 | CONFIG_RT_MUTEXES=y | 141 | CONFIG_RT_MUTEXES=y |
135 | # CONFIG_TINY_SHMEM is not set | 142 | # CONFIG_TINY_SHMEM is not set |
136 | CONFIG_BASE_SMALL=0 | 143 | CONFIG_BASE_SMALL=0 |
137 | CONFIG_MODULES=y | 144 | CONFIG_MODULES=y |
145 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
138 | CONFIG_MODULE_UNLOAD=y | 146 | CONFIG_MODULE_UNLOAD=y |
139 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 147 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
140 | CONFIG_MODVERSIONS=y | 148 | CONFIG_MODVERSIONS=y |
@@ -194,11 +202,11 @@ CONFIG_PPC_PASEMI=y | |||
194 | CONFIG_PPC_PASEMI_IOMMU=y | 202 | CONFIG_PPC_PASEMI_IOMMU=y |
195 | # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set | 203 | # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set |
196 | CONFIG_PPC_PASEMI_MDIO=y | 204 | CONFIG_PPC_PASEMI_MDIO=y |
197 | CONFIG_PPC_CELLEB=y | ||
198 | # CONFIG_PPC_PS3 is not set | 205 | # CONFIG_PPC_PS3 is not set |
199 | CONFIG_PPC_CELL=y | 206 | CONFIG_PPC_CELL=y |
200 | CONFIG_PPC_CELL_NATIVE=y | 207 | CONFIG_PPC_CELL_NATIVE=y |
201 | CONFIG_PPC_IBM_CELL_BLADE=y | 208 | CONFIG_PPC_IBM_CELL_BLADE=y |
209 | CONFIG_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 | |||
241 | CONFIG_CPU_FREQ_STAT=y | 249 | CONFIG_CPU_FREQ_STAT=y |
242 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | 250 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set |
243 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 251 | CONFIG_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 | |||
277 | CONFIG_BINFMT_ELF=y | 286 | CONFIG_BINFMT_ELF=y |
278 | CONFIG_COMPAT_BINFMT_ELF=y | 287 | CONFIG_COMPAT_BINFMT_ELF=y |
279 | CONFIG_BINFMT_MISC=m | 288 | CONFIG_BINFMT_MISC=m |
280 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
281 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 289 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
282 | CONFIG_IOMMU_VMERGE=y | 290 | CONFIG_IOMMU_VMERGE=y |
283 | CONFIG_IOMMU_HELPER=y | 291 | CONFIG_IOMMU_HELPER=y |
@@ -307,6 +315,7 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | |||
307 | CONFIG_SPARSEMEM_VMEMMAP=y | 315 | CONFIG_SPARSEMEM_VMEMMAP=y |
308 | CONFIG_MEMORY_HOTPLUG=y | 316 | CONFIG_MEMORY_HOTPLUG=y |
309 | CONFIG_MEMORY_HOTPLUG_SPARSE=y | 317 | CONFIG_MEMORY_HOTPLUG_SPARSE=y |
318 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
310 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 319 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
311 | CONFIG_RESOURCES_64BIT=y | 320 | CONFIG_RESOURCES_64BIT=y |
312 | CONFIG_ZONE_DMA_FLAG=1 | 321 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -314,6 +323,7 @@ CONFIG_BOUNCE=y | |||
314 | CONFIG_ARCH_MEMORY_PROBE=y | 323 | CONFIG_ARCH_MEMORY_PROBE=y |
315 | CONFIG_PPC_HAS_HASH_64K=y | 324 | CONFIG_PPC_HAS_HASH_64K=y |
316 | # CONFIG_PPC_64K_PAGES is not set | 325 | # CONFIG_PPC_64K_PAGES is not set |
326 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
317 | # CONFIG_SCHED_SMT is not set | 327 | # CONFIG_SCHED_SMT is not set |
318 | CONFIG_PROC_DEVICETREE=y | 328 | CONFIG_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 |
357 | CONFIG_HOTPLUG_PCI_RPA=m | 367 | CONFIG_HOTPLUG_PCI_RPA=m |
358 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m | 368 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m |
369 | # CONFIG_HAS_RAPIDIO is not set | ||
370 | CONFIG_PAGE_OFFSET=0xc000000000000000 | ||
359 | CONFIG_KERNEL_START=0xc000000000000000 | 371 | CONFIG_KERNEL_START=0xc000000000000000 |
372 | CONFIG_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 |
412 | CONFIG_NETFILTER=y | 423 | CONFIG_NETFILTER=y |
413 | # CONFIG_NETFILTER_DEBUG is not set | 424 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -423,6 +434,7 @@ CONFIG_NF_CONNTRACK=m | |||
423 | CONFIG_NF_CT_ACCT=y | 434 | CONFIG_NF_CT_ACCT=y |
424 | CONFIG_NF_CONNTRACK_MARK=y | 435 | CONFIG_NF_CONNTRACK_MARK=y |
425 | CONFIG_NF_CONNTRACK_EVENTS=y | 436 | CONFIG_NF_CONNTRACK_EVENTS=y |
437 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
426 | CONFIG_NF_CT_PROTO_GRE=m | 438 | CONFIG_NF_CT_PROTO_GRE=m |
427 | CONFIG_NF_CT_PROTO_SCTP=m | 439 | CONFIG_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 | |||
501 | CONFIG_IP_NF_TARGET_NETMAP=m | 513 | CONFIG_IP_NF_TARGET_NETMAP=m |
502 | CONFIG_NF_NAT_SNMP_BASIC=m | 514 | CONFIG_NF_NAT_SNMP_BASIC=m |
503 | CONFIG_NF_NAT_PROTO_GRE=m | 515 | CONFIG_NF_NAT_PROTO_GRE=m |
516 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
504 | CONFIG_NF_NAT_FTP=m | 517 | CONFIG_NF_NAT_FTP=m |
505 | CONFIG_NF_NAT_IRC=m | 518 | CONFIG_NF_NAT_IRC=m |
506 | CONFIG_NF_NAT_TFTP=m | 519 | CONFIG_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 |
573 | CONFIG_OF_DEVICE=y | 586 | CONFIG_OF_DEVICE=y |
587 | CONFIG_OF_I2C=y | ||
574 | # CONFIG_PARPORT is not set | 588 | # CONFIG_PARPORT is not set |
575 | CONFIG_BLK_DEV=y | 589 | CONFIG_BLK_DEV=y |
576 | CONFIG_BLK_DEV_FD=y | 590 | CONFIG_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 | # |
621 | CONFIG_IDE_GENERIC=y | ||
622 | # CONFIG_BLK_DEV_PLATFORM is not set | 635 | # CONFIG_BLK_DEV_PLATFORM is not set |
623 | CONFIG_BLK_DEV_IDEDMA_SFF=y | 636 | CONFIG_BLK_DEV_IDEDMA_SFF=y |
624 | 637 | ||
@@ -661,7 +674,7 @@ CONFIG_BLK_DEV_IDE_PMAC=y | |||
661 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y | 674 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y |
662 | CONFIG_BLK_DEV_IDEDMA_PMAC=y | 675 | CONFIG_BLK_DEV_IDEDMA_PMAC=y |
663 | CONFIG_BLK_DEV_IDEDMA=y | 676 | CONFIG_BLK_DEV_IDEDMA=y |
664 | CONFIG_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 |
748 | CONFIG_ATA=y | 761 | CONFIG_ATA=y |
749 | CONFIG_ATA_NONSTANDARD=y | 762 | CONFIG_ATA_NONSTANDARD=y |
763 | CONFIG_SATA_PMP=y | ||
750 | # CONFIG_SATA_AHCI is not set | 764 | # CONFIG_SATA_AHCI is not set |
751 | CONFIG_SATA_SVW=y | ||
752 | # CONFIG_ATA_PIIX is not set | ||
753 | CONFIG_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 | ||
760 | CONFIG_SATA_SIL24=y | 765 | CONFIG_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 | ||
794 | CONFIG_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 | ||
804 | CONFIG_PATA_WINBOND=y | ||
805 | CONFIG_PATA_PLATFORM=y | ||
806 | # CONFIG_PATA_OF_PLATFORM is not set | ||
807 | CONFIG_PATA_SCC=y | ||
808 | CONFIG_MD=y | 767 | CONFIG_MD=y |
809 | CONFIG_BLK_DEV_MD=y | 768 | CONFIG_BLK_DEV_MD=y |
810 | CONFIG_MD_LINEAR=y | 769 | CONFIG_MD_LINEAR=y |
@@ -866,6 +825,7 @@ CONFIG_WINDFARM=y | |||
866 | CONFIG_WINDFARM_PM81=y | 825 | CONFIG_WINDFARM_PM81=y |
867 | CONFIG_WINDFARM_PM91=y | 826 | CONFIG_WINDFARM_PM91=y |
868 | CONFIG_WINDFARM_PM112=y | 827 | CONFIG_WINDFARM_PM112=y |
828 | CONFIG_WINDFARM_PM121=y | ||
869 | # CONFIG_PMAC_RACKMETER is not set | 829 | # CONFIG_PMAC_RACKMETER is not set |
870 | CONFIG_NETDEVICES=y | 830 | CONFIG_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 | |||
911 | CONFIG_IBM_NEW_EMAC_EMAC4=y | 871 | CONFIG_IBM_NEW_EMAC_EMAC4=y |
912 | CONFIG_NET_PCI=y | 872 | CONFIG_NET_PCI=y |
913 | CONFIG_PCNET32=y | 873 | CONFIG_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 |
952 | CONFIG_TIGON3=y | 910 | CONFIG_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 | ||
972 | CONFIG_TR=y | 931 | CONFIG_TR=y |
973 | CONFIG_IBMOL=y | 932 | CONFIG_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 | |||
1083 | CONFIG_VT_CONSOLE=y | 1043 | CONFIG_VT_CONSOLE=y |
1084 | CONFIG_HW_CONSOLE=y | 1044 | CONFIG_HW_CONSOLE=y |
1085 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 1045 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
1046 | CONFIG_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 | |||
1121 | CONFIG_HVCS=m | 1082 | CONFIG_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 |
1124 | CONFIG_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 | |||
1141 | CONFIG_I2C=y | 1100 | CONFIG_I2C=y |
1142 | CONFIG_I2C_BOARDINFO=y | 1101 | CONFIG_I2C_BOARDINFO=y |
1143 | CONFIG_I2C_CHARDEV=y | 1102 | CONFIG_I2C_CHARDEV=y |
1144 | |||
1145 | # | ||
1146 | # I2C Algorithms | ||
1147 | # | ||
1148 | CONFIG_I2C_ALGOBIT=y | 1103 | CONFIG_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 |
1244 | CONFIG_FB_DEFERRED_IO=y | ||
1245 | # CONFIG_FB_SVGALIB is not set | 1203 | # CONFIG_FB_SVGALIB is not set |
1246 | CONFIG_FB_MACMODES=y | 1204 | CONFIG_FB_MACMODES=y |
1247 | CONFIG_FB_BACKLIGHT=y | 1205 | CONFIG_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 | ||
1500 | CONFIG_USB_EHCI_HCD=y | 1460 | CONFIG_USB_EHCI_HCD=y |
1501 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1461 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1502 | CONFIG_USB_EHCI_TT_NEWSCHED=y | 1462 | CONFIG_USB_EHCI_TT_NEWSCHED=y |
1503 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | 1463 | CONFIG_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 | ||
1506 | CONFIG_USB_OHCI_HCD=y | 1467 | CONFIG_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 | ||
1582 | CONFIG_INFINIBAND=m | 1545 | CONFIG_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 |
1608 | CONFIG_RTC_LIB=y | 1571 | CONFIG_RTC_LIB=y |
1609 | CONFIG_RTC_CLASS=y | 1572 | CONFIG_RTC_CLASS=y |
1610 | |||
1611 | # | ||
1612 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
1613 | # | ||
1614 | CONFIG_RTC_HCTOSYS=y | 1573 | CONFIG_RTC_HCTOSYS=y |
1615 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 1574 | CONFIG_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 | |||
1696 | CONFIG_FS_POSIX_ACL=y | 1651 | CONFIG_FS_POSIX_ACL=y |
1697 | CONFIG_XFS_FS=m | 1652 | CONFIG_XFS_FS=m |
1698 | # CONFIG_XFS_QUOTA is not set | 1653 | # CONFIG_XFS_QUOTA is not set |
1699 | CONFIG_XFS_SECURITY=y | ||
1700 | CONFIG_XFS_POSIX_ACL=y | 1654 | CONFIG_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 |
1704 | CONFIG_DNOTIFY=y | 1659 | CONFIG_DNOTIFY=y |
@@ -1764,13 +1719,11 @@ CONFIG_NFS_FS=y | |||
1764 | CONFIG_NFS_V3=y | 1719 | CONFIG_NFS_V3=y |
1765 | CONFIG_NFS_V3_ACL=y | 1720 | CONFIG_NFS_V3_ACL=y |
1766 | CONFIG_NFS_V4=y | 1721 | CONFIG_NFS_V4=y |
1767 | # CONFIG_NFS_DIRECTIO is not set | ||
1768 | CONFIG_NFSD=m | 1722 | CONFIG_NFSD=m |
1769 | CONFIG_NFSD_V2_ACL=y | 1723 | CONFIG_NFSD_V2_ACL=y |
1770 | CONFIG_NFSD_V3=y | 1724 | CONFIG_NFSD_V3=y |
1771 | CONFIG_NFSD_V3_ACL=y | 1725 | CONFIG_NFSD_V3_ACL=y |
1772 | CONFIG_NFSD_V4=y | 1726 | CONFIG_NFSD_V4=y |
1773 | CONFIG_NFSD_TCP=y | ||
1774 | CONFIG_ROOT_NFS=y | 1727 | CONFIG_ROOT_NFS=y |
1775 | CONFIG_LOCKD=y | 1728 | CONFIG_LOCKD=y |
1776 | CONFIG_LOCKD_V4=y | 1729 | CONFIG_LOCKD_V4=y |
@@ -1862,9 +1815,10 @@ CONFIG_NLS_UTF8=m | |||
1862 | # Library routines | 1815 | # Library routines |
1863 | # | 1816 | # |
1864 | CONFIG_BITREVERSE=y | 1817 | CONFIG_BITREVERSE=y |
1818 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1865 | CONFIG_CRC_CCITT=m | 1819 | CONFIG_CRC_CCITT=m |
1866 | # CONFIG_CRC16 is not set | 1820 | # CONFIG_CRC16 is not set |
1867 | # CONFIG_CRC_ITU_T is not set | 1821 | CONFIG_CRC_ITU_T=m |
1868 | CONFIG_CRC32=y | 1822 | CONFIG_CRC32=y |
1869 | # CONFIG_CRC7 is not set | 1823 | # CONFIG_CRC7 is not set |
1870 | CONFIG_LIBCRC32C=m | 1824 | CONFIG_LIBCRC32C=m |
@@ -1888,6 +1842,7 @@ CONFIG_HAVE_LMB=y | |||
1888 | # CONFIG_PRINTK_TIME is not set | 1842 | # CONFIG_PRINTK_TIME is not set |
1889 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1843 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1890 | CONFIG_ENABLE_MUST_CHECK=y | 1844 | CONFIG_ENABLE_MUST_CHECK=y |
1845 | CONFIG_FRAME_WARN=2048 | ||
1891 | CONFIG_MAGIC_SYSRQ=y | 1846 | CONFIG_MAGIC_SYSRQ=y |
1892 | # CONFIG_UNUSED_SYMBOLS is not set | 1847 | # CONFIG_UNUSED_SYMBOLS is not set |
1893 | CONFIG_DEBUG_FS=y | 1848 | CONFIG_DEBUG_FS=y |
@@ -1898,18 +1853,23 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1898 | CONFIG_SCHED_DEBUG=y | 1853 | CONFIG_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 |
1906 | CONFIG_DEBUG_MUTEXES=y | 1862 | CONFIG_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 |
1910 | CONFIG_DEBUG_BUGVERBOSE=y | 1869 | CONFIG_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 | |||
1941 | CONFIG_ASYNC_MEMCPY=y | 1901 | CONFIG_ASYNC_MEMCPY=y |
1942 | CONFIG_ASYNC_XOR=y | 1902 | CONFIG_ASYNC_XOR=y |
1943 | CONFIG_CRYPTO=y | 1903 | CONFIG_CRYPTO=y |
1904 | |||
1905 | # | ||
1906 | # Crypto core or helper | ||
1907 | # | ||
1944 | CONFIG_CRYPTO_ALGAPI=y | 1908 | CONFIG_CRYPTO_ALGAPI=y |
1945 | CONFIG_CRYPTO_AEAD=m | 1909 | CONFIG_CRYPTO_AEAD=m |
1946 | CONFIG_CRYPTO_BLKCIPHER=y | 1910 | CONFIG_CRYPTO_BLKCIPHER=y |
1947 | CONFIG_CRYPTO_SEQIV=m | ||
1948 | CONFIG_CRYPTO_HASH=y | 1911 | CONFIG_CRYPTO_HASH=y |
1949 | CONFIG_CRYPTO_MANAGER=y | 1912 | CONFIG_CRYPTO_MANAGER=y |
1913 | CONFIG_CRYPTO_GF128MUL=m | ||
1914 | CONFIG_CRYPTO_NULL=m | ||
1915 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1916 | CONFIG_CRYPTO_AUTHENC=m | ||
1917 | CONFIG_CRYPTO_TEST=m | ||
1918 | |||
1919 | # | ||
1920 | # Authenticated Encryption with Associated Data | ||
1921 | # | ||
1922 | CONFIG_CRYPTO_CCM=m | ||
1923 | CONFIG_CRYPTO_GCM=m | ||
1924 | CONFIG_CRYPTO_SEQIV=m | ||
1925 | |||
1926 | # | ||
1927 | # Block modes | ||
1928 | # | ||
1929 | CONFIG_CRYPTO_CBC=y | ||
1930 | CONFIG_CRYPTO_CTR=m | ||
1931 | # CONFIG_CRYPTO_CTS is not set | ||
1932 | CONFIG_CRYPTO_ECB=m | ||
1933 | # CONFIG_CRYPTO_LRW is not set | ||
1934 | CONFIG_CRYPTO_PCBC=m | ||
1935 | # CONFIG_CRYPTO_XTS is not set | ||
1936 | |||
1937 | # | ||
1938 | # Hash modes | ||
1939 | # | ||
1950 | CONFIG_CRYPTO_HMAC=y | 1940 | CONFIG_CRYPTO_HMAC=y |
1951 | # CONFIG_CRYPTO_XCBC is not set | 1941 | # CONFIG_CRYPTO_XCBC is not set |
1952 | CONFIG_CRYPTO_NULL=m | 1942 | |
1943 | # | ||
1944 | # Digest | ||
1945 | # | ||
1946 | CONFIG_CRYPTO_CRC32C=m | ||
1953 | CONFIG_CRYPTO_MD4=m | 1947 | CONFIG_CRYPTO_MD4=m |
1954 | CONFIG_CRYPTO_MD5=y | 1948 | CONFIG_CRYPTO_MD5=y |
1949 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1955 | CONFIG_CRYPTO_SHA1=m | 1950 | CONFIG_CRYPTO_SHA1=m |
1956 | CONFIG_CRYPTO_SHA256=m | 1951 | CONFIG_CRYPTO_SHA256=m |
1957 | CONFIG_CRYPTO_SHA512=m | 1952 | CONFIG_CRYPTO_SHA512=m |
1958 | CONFIG_CRYPTO_WP512=m | ||
1959 | CONFIG_CRYPTO_TGR192=m | 1953 | CONFIG_CRYPTO_TGR192=m |
1960 | CONFIG_CRYPTO_GF128MUL=m | 1954 | CONFIG_CRYPTO_WP512=m |
1961 | CONFIG_CRYPTO_ECB=m | 1955 | |
1962 | CONFIG_CRYPTO_CBC=y | 1956 | # |
1963 | CONFIG_CRYPTO_PCBC=m | 1957 | # Ciphers |
1964 | # CONFIG_CRYPTO_LRW is not set | 1958 | # |
1965 | # CONFIG_CRYPTO_XTS is not set | ||
1966 | CONFIG_CRYPTO_CTR=m | ||
1967 | CONFIG_CRYPTO_GCM=m | ||
1968 | CONFIG_CRYPTO_CCM=m | ||
1969 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1970 | CONFIG_CRYPTO_DES=y | ||
1971 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1972 | CONFIG_CRYPTO_BLOWFISH=m | ||
1973 | CONFIG_CRYPTO_TWOFISH=m | ||
1974 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1975 | CONFIG_CRYPTO_SERPENT=m | ||
1976 | CONFIG_CRYPTO_AES=m | 1959 | CONFIG_CRYPTO_AES=m |
1960 | CONFIG_CRYPTO_ANUBIS=m | ||
1961 | CONFIG_CRYPTO_ARC4=m | ||
1962 | CONFIG_CRYPTO_BLOWFISH=m | ||
1963 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1977 | CONFIG_CRYPTO_CAST5=m | 1964 | CONFIG_CRYPTO_CAST5=m |
1978 | CONFIG_CRYPTO_CAST6=m | 1965 | CONFIG_CRYPTO_CAST6=m |
1979 | CONFIG_CRYPTO_TEA=m | 1966 | CONFIG_CRYPTO_DES=y |
1980 | CONFIG_CRYPTO_ARC4=m | 1967 | # CONFIG_CRYPTO_FCRYPT is not set |
1981 | CONFIG_CRYPTO_KHAZAD=m | 1968 | CONFIG_CRYPTO_KHAZAD=m |
1982 | CONFIG_CRYPTO_ANUBIS=m | ||
1983 | # CONFIG_CRYPTO_SEED is not set | ||
1984 | CONFIG_CRYPTO_SALSA20=m | 1969 | CONFIG_CRYPTO_SALSA20=m |
1970 | # CONFIG_CRYPTO_SEED is not set | ||
1971 | CONFIG_CRYPTO_SERPENT=m | ||
1972 | CONFIG_CRYPTO_TEA=m | ||
1973 | CONFIG_CRYPTO_TWOFISH=m | ||
1974 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1975 | |||
1976 | # | ||
1977 | # Compression | ||
1978 | # | ||
1985 | CONFIG_CRYPTO_DEFLATE=m | 1979 | CONFIG_CRYPTO_DEFLATE=m |
1986 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1987 | CONFIG_CRYPTO_CRC32C=m | ||
1988 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1989 | CONFIG_CRYPTO_TEST=m | ||
1990 | CONFIG_CRYPTO_AUTHENC=m | ||
1991 | CONFIG_CRYPTO_LZO=m | 1980 | CONFIG_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 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -30,6 +30,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y | |||
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
32 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
33 | CONFIG_STACKTRACE_SUPPORT=y | ||
34 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
35 | CONFIG_LOCKDEP_SUPPORT=y | ||
33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 36 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
34 | CONFIG_ARCH_HAS_ILOG2_U32=y | 37 | CONFIG_ARCH_HAS_ILOG2_U32=y |
35 | CONFIG_ARCH_HAS_ILOG2_U64=y | 38 | CONFIG_ARCH_HAS_ILOG2_U64=y |
@@ -81,6 +84,7 @@ CONFIG_LOG_BUF_SHIFT=17 | |||
81 | CONFIG_CGROUPS=y | 84 | CONFIG_CGROUPS=y |
82 | # CONFIG_CGROUP_DEBUG is not set | 85 | # CONFIG_CGROUP_DEBUG is not set |
83 | CONFIG_CGROUP_NS=y | 86 | CONFIG_CGROUP_NS=y |
87 | CONFIG_CGROUP_DEVICE=y | ||
84 | CONFIG_CPUSETS=y | 88 | CONFIG_CPUSETS=y |
85 | # CONFIG_GROUP_SCHED is not set | 89 | # CONFIG_GROUP_SCHED is not set |
86 | CONFIG_CGROUP_CPUACCT=y | 90 | CONFIG_CGROUP_CPUACCT=y |
@@ -100,6 +104,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y | |||
100 | CONFIG_SYSCTL=y | 104 | CONFIG_SYSCTL=y |
101 | # CONFIG_EMBEDDED is not set | 105 | # CONFIG_EMBEDDED is not set |
102 | CONFIG_SYSCTL_SYSCALL=y | 106 | CONFIG_SYSCTL_SYSCALL=y |
107 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
103 | CONFIG_KALLSYMS=y | 108 | CONFIG_KALLSYMS=y |
104 | CONFIG_KALLSYMS_ALL=y | 109 | CONFIG_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 | |||
107 | CONFIG_PRINTK=y | 112 | CONFIG_PRINTK=y |
108 | CONFIG_BUG=y | 113 | CONFIG_BUG=y |
109 | CONFIG_ELF_CORE=y | 114 | CONFIG_ELF_CORE=y |
115 | CONFIG_PCSPKR_PLATFORM=y | ||
110 | # CONFIG_COMPAT_BRK is not set | 116 | # CONFIG_COMPAT_BRK is not set |
111 | CONFIG_BASE_FULL=y | 117 | CONFIG_BASE_FULL=y |
112 | CONFIG_FUTEX=y | 118 | CONFIG_FUTEX=y |
@@ -129,12 +135,14 @@ CONFIG_KPROBES=y | |||
129 | CONFIG_KRETPROBES=y | 135 | CONFIG_KRETPROBES=y |
130 | CONFIG_HAVE_KPROBES=y | 136 | CONFIG_HAVE_KPROBES=y |
131 | CONFIG_HAVE_KRETPROBES=y | 137 | CONFIG_HAVE_KRETPROBES=y |
138 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
132 | CONFIG_PROC_PAGE_MONITOR=y | 139 | CONFIG_PROC_PAGE_MONITOR=y |
133 | CONFIG_SLABINFO=y | 140 | CONFIG_SLABINFO=y |
134 | CONFIG_RT_MUTEXES=y | 141 | CONFIG_RT_MUTEXES=y |
135 | # CONFIG_TINY_SHMEM is not set | 142 | # CONFIG_TINY_SHMEM is not set |
136 | CONFIG_BASE_SMALL=0 | 143 | CONFIG_BASE_SMALL=0 |
137 | CONFIG_MODULES=y | 144 | CONFIG_MODULES=y |
145 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
138 | CONFIG_MODULE_UNLOAD=y | 146 | CONFIG_MODULE_UNLOAD=y |
139 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 147 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
140 | CONFIG_MODVERSIONS=y | 148 | CONFIG_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 |
187 | CONFIG_PPC_NATIVE=y | 195 | CONFIG_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 | |||
225 | CONFIG_BINFMT_ELF=y | 233 | CONFIG_BINFMT_ELF=y |
226 | CONFIG_COMPAT_BINFMT_ELF=y | 234 | CONFIG_COMPAT_BINFMT_ELF=y |
227 | CONFIG_BINFMT_MISC=m | 235 | CONFIG_BINFMT_MISC=m |
228 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
229 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 236 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
230 | CONFIG_IOMMU_VMERGE=y | 237 | CONFIG_IOMMU_VMERGE=y |
231 | CONFIG_IOMMU_HELPER=y | 238 | CONFIG_IOMMU_HELPER=y |
@@ -255,6 +262,7 @@ CONFIG_SPARSEMEM_EXTREME=y | |||
255 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | 262 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y |
256 | CONFIG_SPARSEMEM_VMEMMAP=y | 263 | CONFIG_SPARSEMEM_VMEMMAP=y |
257 | # CONFIG_MEMORY_HOTPLUG is not set | 264 | # CONFIG_MEMORY_HOTPLUG is not set |
265 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
258 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 266 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
259 | CONFIG_MIGRATION=y | 267 | CONFIG_MIGRATION=y |
260 | CONFIG_RESOURCES_64BIT=y | 268 | CONFIG_RESOURCES_64BIT=y |
@@ -263,6 +271,7 @@ CONFIG_BOUNCE=y | |||
263 | CONFIG_NODES_SPAN_OTHER_NODES=y | 271 | CONFIG_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 |
274 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
266 | CONFIG_SCHED_SMT=y | 275 | CONFIG_SCHED_SMT=y |
267 | CONFIG_PROC_DEVICETREE=y | 276 | CONFIG_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 |
292 | CONFIG_HOTPLUG_PCI_RPA=m | 301 | CONFIG_HOTPLUG_PCI_RPA=m |
293 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m | 302 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m |
303 | # CONFIG_HAS_RAPIDIO is not set | ||
304 | CONFIG_PAGE_OFFSET=0xc000000000000000 | ||
294 | CONFIG_KERNEL_START=0xc000000000000000 | 305 | CONFIG_KERNEL_START=0xc000000000000000 |
306 | CONFIG_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 |
344 | CONFIG_NETFILTER=y | 354 | CONFIG_NETFILTER=y |
345 | # CONFIG_NETFILTER_DEBUG is not set | 355 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -355,6 +365,7 @@ CONFIG_NF_CONNTRACK=m | |||
355 | CONFIG_NF_CT_ACCT=y | 365 | CONFIG_NF_CT_ACCT=y |
356 | CONFIG_NF_CONNTRACK_MARK=y | 366 | CONFIG_NF_CONNTRACK_MARK=y |
357 | CONFIG_NF_CONNTRACK_EVENTS=y | 367 | CONFIG_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 |
359 | CONFIG_NF_CT_PROTO_UDPLITE=m | 370 | CONFIG_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 | |||
426 | CONFIG_IP_NF_TARGET_REDIRECT=m | 437 | CONFIG_IP_NF_TARGET_REDIRECT=m |
427 | CONFIG_IP_NF_TARGET_NETMAP=m | 438 | CONFIG_IP_NF_TARGET_NETMAP=m |
428 | CONFIG_NF_NAT_SNMP_BASIC=m | 439 | CONFIG_NF_NAT_SNMP_BASIC=m |
440 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
429 | CONFIG_NF_NAT_FTP=m | 441 | CONFIG_NF_NAT_FTP=m |
430 | CONFIG_NF_NAT_IRC=m | 442 | CONFIG_NF_NAT_IRC=m |
431 | CONFIG_NF_NAT_TFTP=m | 443 | CONFIG_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 |
494 | CONFIG_OF_DEVICE=y | 506 | CONFIG_OF_DEVICE=y |
507 | CONFIG_OF_I2C=y | ||
495 | CONFIG_PARPORT=m | 508 | CONFIG_PARPORT=m |
496 | CONFIG_PARPORT_PC=m | 509 | CONFIG_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 | # |
548 | CONFIG_IDE_GENERIC=y | ||
549 | # CONFIG_BLK_DEV_PLATFORM is not set | 561 | # CONFIG_BLK_DEV_PLATFORM is not set |
550 | CONFIG_BLK_DEV_IDEDMA_SFF=y | 562 | CONFIG_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 |
586 | CONFIG_BLK_DEV_IDEDMA=y | 598 | CONFIG_BLK_DEV_IDEDMA=y |
587 | CONFIG_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 |
672 | CONFIG_ATA=y | 684 | CONFIG_ATA=y |
673 | # CONFIG_ATA_NONSTANDARD is not set | 685 | # CONFIG_ATA_NONSTANDARD is not set |
686 | CONFIG_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 | ||
727 | CONFIG_PATA_WINBOND=y | ||
728 | # CONFIG_PATA_PLATFORM is not set | ||
729 | CONFIG_MD=y | 690 | CONFIG_MD=y |
730 | CONFIG_BLK_DEV_MD=y | 691 | CONFIG_BLK_DEV_MD=y |
731 | CONFIG_MD_LINEAR=y | 692 | CONFIG_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 |
784 | CONFIG_NET_PCI=y | 745 | CONFIG_NET_PCI=y |
785 | CONFIG_PCNET32=y | 746 | CONFIG_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 |
825 | CONFIG_TIGON3=y | 784 | CONFIG_TIGON3=y |
826 | # CONFIG_BNX2 is not set | 785 | # CONFIG_BNX2 is not set |
@@ -829,7 +788,6 @@ CONFIG_TIGON3=y | |||
829 | CONFIG_NETDEV_10000=y | 788 | CONFIG_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 |
832 | CONFIG_EHEA=m | ||
833 | # CONFIG_IXGBE is not set | 791 | # CONFIG_IXGBE is not set |
834 | CONFIG_IXGB=m | 792 | CONFIG_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 | ||
845 | CONFIG_TR=y | 803 | CONFIG_TR=y |
846 | CONFIG_IBMOL=y | 804 | CONFIG_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 | |||
956 | CONFIG_VT_CONSOLE=y | 915 | CONFIG_VT_CONSOLE=y |
957 | CONFIG_HW_CONSOLE=y | 916 | CONFIG_HW_CONSOLE=y |
958 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 917 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
918 | CONFIG_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 | |||
1000 | CONFIG_I2C=y | 960 | CONFIG_I2C=y |
1001 | CONFIG_I2C_BOARDINFO=y | 961 | CONFIG_I2C_BOARDINFO=y |
1002 | # CONFIG_I2C_CHARDEV is not set | 962 | # CONFIG_I2C_CHARDEV is not set |
1003 | |||
1004 | # | ||
1005 | # I2C Algorithms | ||
1006 | # | ||
1007 | CONFIG_I2C_ALGOBIT=y | 963 | CONFIG_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 |
1102 | CONFIG_FB_DEFERRED_IO=y | ||
1103 | # CONFIG_FB_SVGALIB is not set | 1062 | # CONFIG_FB_SVGALIB is not set |
1104 | CONFIG_FB_MACMODES=y | 1063 | CONFIG_FB_MACMODES=y |
1105 | CONFIG_FB_BACKLIGHT=y | 1064 | CONFIG_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 | ||
1212 | CONFIG_USB_EHCI_HCD=y | 1172 | CONFIG_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 | ||
1217 | CONFIG_USB_OHCI_HCD=y | 1178 | CONFIG_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 |
1211 | CONFIG_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 | ||
1293 | CONFIG_INFINIBAND=m | 1257 | CONFIG_INFINIBAND=m |
1294 | CONFIG_INFINIBAND_USER_MAD=m | 1258 | CONFIG_INFINIBAND_USER_MAD=m |
1295 | CONFIG_INFINIBAND_USER_ACCESS=m | 1259 | CONFIG_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 | |||
1349 | CONFIG_FS_POSIX_ACL=y | 1309 | CONFIG_FS_POSIX_ACL=y |
1350 | CONFIG_XFS_FS=m | 1310 | CONFIG_XFS_FS=m |
1351 | # CONFIG_XFS_QUOTA is not set | 1311 | # CONFIG_XFS_QUOTA is not set |
1352 | CONFIG_XFS_SECURITY=y | ||
1353 | CONFIG_XFS_POSIX_ACL=y | 1312 | CONFIG_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 |
1356 | CONFIG_OCFS2_FS=m | 1316 | CONFIG_OCFS2_FS=m |
1317 | CONFIG_OCFS2_FS_O2CB=m | ||
1357 | CONFIG_OCFS2_DEBUG_MASKLOG=y | 1318 | CONFIG_OCFS2_DEBUG_MASKLOG=y |
1358 | # CONFIG_OCFS2_DEBUG_FS is not set | 1319 | # CONFIG_OCFS2_DEBUG_FS is not set |
1359 | CONFIG_DNOTIFY=y | 1320 | CONFIG_DNOTIFY=y |
@@ -1419,13 +1380,11 @@ CONFIG_NFS_FS=y | |||
1419 | CONFIG_NFS_V3=y | 1380 | CONFIG_NFS_V3=y |
1420 | CONFIG_NFS_V3_ACL=y | 1381 | CONFIG_NFS_V3_ACL=y |
1421 | CONFIG_NFS_V4=y | 1382 | CONFIG_NFS_V4=y |
1422 | # CONFIG_NFS_DIRECTIO is not set | ||
1423 | CONFIG_NFSD=y | 1383 | CONFIG_NFSD=y |
1424 | CONFIG_NFSD_V2_ACL=y | 1384 | CONFIG_NFSD_V2_ACL=y |
1425 | CONFIG_NFSD_V3=y | 1385 | CONFIG_NFSD_V3=y |
1426 | CONFIG_NFSD_V3_ACL=y | 1386 | CONFIG_NFSD_V3_ACL=y |
1427 | CONFIG_NFSD_V4=y | 1387 | CONFIG_NFSD_V4=y |
1428 | CONFIG_NFSD_TCP=y | ||
1429 | CONFIG_LOCKD=y | 1388 | CONFIG_LOCKD=y |
1430 | CONFIG_LOCKD_V4=y | 1389 | CONFIG_LOCKD_V4=y |
1431 | CONFIG_EXPORTFS=y | 1390 | CONFIG_EXPORTFS=y |
@@ -1500,9 +1459,10 @@ CONFIG_NLS_ISO8859_1=y | |||
1500 | # Library routines | 1459 | # Library routines |
1501 | # | 1460 | # |
1502 | CONFIG_BITREVERSE=y | 1461 | CONFIG_BITREVERSE=y |
1462 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1503 | CONFIG_CRC_CCITT=m | 1463 | CONFIG_CRC_CCITT=m |
1504 | # CONFIG_CRC16 is not set | 1464 | # CONFIG_CRC16 is not set |
1505 | # CONFIG_CRC_ITU_T is not set | 1465 | CONFIG_CRC_ITU_T=m |
1506 | CONFIG_CRC32=y | 1466 | CONFIG_CRC32=y |
1507 | # CONFIG_CRC7 is not set | 1467 | # CONFIG_CRC7 is not set |
1508 | CONFIG_LIBCRC32C=m | 1468 | CONFIG_LIBCRC32C=m |
@@ -1526,6 +1486,7 @@ CONFIG_HAVE_LMB=y | |||
1526 | # CONFIG_PRINTK_TIME is not set | 1486 | # CONFIG_PRINTK_TIME is not set |
1527 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1487 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1528 | CONFIG_ENABLE_MUST_CHECK=y | 1488 | CONFIG_ENABLE_MUST_CHECK=y |
1489 | CONFIG_FRAME_WARN=2048 | ||
1529 | CONFIG_MAGIC_SYSRQ=y | 1490 | CONFIG_MAGIC_SYSRQ=y |
1530 | # CONFIG_UNUSED_SYMBOLS is not set | 1491 | # CONFIG_UNUSED_SYMBOLS is not set |
1531 | CONFIG_DEBUG_FS=y | 1492 | CONFIG_DEBUG_FS=y |
@@ -1536,18 +1497,23 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1536 | CONFIG_SCHED_DEBUG=y | 1497 | CONFIG_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 |
1548 | CONFIG_DEBUG_BUGVERBOSE=y | 1513 | CONFIG_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 |
1579 | CONFIG_CRYPTO=y | 1545 | CONFIG_CRYPTO=y |
1546 | |||
1547 | # | ||
1548 | # Crypto core or helper | ||
1549 | # | ||
1580 | CONFIG_CRYPTO_ALGAPI=y | 1550 | CONFIG_CRYPTO_ALGAPI=y |
1581 | CONFIG_CRYPTO_AEAD=m | 1551 | CONFIG_CRYPTO_AEAD=m |
1582 | CONFIG_CRYPTO_BLKCIPHER=y | 1552 | CONFIG_CRYPTO_BLKCIPHER=y |
1583 | CONFIG_CRYPTO_SEQIV=m | ||
1584 | CONFIG_CRYPTO_HASH=y | 1553 | CONFIG_CRYPTO_HASH=y |
1585 | CONFIG_CRYPTO_MANAGER=y | 1554 | CONFIG_CRYPTO_MANAGER=y |
1555 | CONFIG_CRYPTO_GF128MUL=m | ||
1556 | CONFIG_CRYPTO_NULL=m | ||
1557 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1558 | CONFIG_CRYPTO_AUTHENC=m | ||
1559 | CONFIG_CRYPTO_TEST=m | ||
1560 | |||
1561 | # | ||
1562 | # Authenticated Encryption with Associated Data | ||
1563 | # | ||
1564 | CONFIG_CRYPTO_CCM=m | ||
1565 | CONFIG_CRYPTO_GCM=m | ||
1566 | CONFIG_CRYPTO_SEQIV=m | ||
1567 | |||
1568 | # | ||
1569 | # Block modes | ||
1570 | # | ||
1571 | CONFIG_CRYPTO_CBC=y | ||
1572 | CONFIG_CRYPTO_CTR=m | ||
1573 | # CONFIG_CRYPTO_CTS is not set | ||
1574 | CONFIG_CRYPTO_ECB=m | ||
1575 | # CONFIG_CRYPTO_LRW is not set | ||
1576 | CONFIG_CRYPTO_PCBC=m | ||
1577 | # CONFIG_CRYPTO_XTS is not set | ||
1578 | |||
1579 | # | ||
1580 | # Hash modes | ||
1581 | # | ||
1586 | CONFIG_CRYPTO_HMAC=y | 1582 | CONFIG_CRYPTO_HMAC=y |
1587 | # CONFIG_CRYPTO_XCBC is not set | 1583 | # CONFIG_CRYPTO_XCBC is not set |
1588 | CONFIG_CRYPTO_NULL=m | 1584 | |
1585 | # | ||
1586 | # Digest | ||
1587 | # | ||
1588 | CONFIG_CRYPTO_CRC32C=m | ||
1589 | CONFIG_CRYPTO_MD4=m | 1589 | CONFIG_CRYPTO_MD4=m |
1590 | CONFIG_CRYPTO_MD5=y | 1590 | CONFIG_CRYPTO_MD5=y |
1591 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1591 | CONFIG_CRYPTO_SHA1=m | 1592 | CONFIG_CRYPTO_SHA1=m |
1592 | CONFIG_CRYPTO_SHA256=m | 1593 | CONFIG_CRYPTO_SHA256=m |
1593 | CONFIG_CRYPTO_SHA512=m | 1594 | CONFIG_CRYPTO_SHA512=m |
1594 | CONFIG_CRYPTO_WP512=m | ||
1595 | CONFIG_CRYPTO_TGR192=m | 1595 | CONFIG_CRYPTO_TGR192=m |
1596 | CONFIG_CRYPTO_GF128MUL=m | 1596 | CONFIG_CRYPTO_WP512=m |
1597 | CONFIG_CRYPTO_ECB=m | 1597 | |
1598 | CONFIG_CRYPTO_CBC=y | 1598 | # |
1599 | CONFIG_CRYPTO_PCBC=m | 1599 | # Ciphers |
1600 | # CONFIG_CRYPTO_LRW is not set | 1600 | # |
1601 | # CONFIG_CRYPTO_XTS is not set | ||
1602 | CONFIG_CRYPTO_CTR=m | ||
1603 | CONFIG_CRYPTO_GCM=m | ||
1604 | CONFIG_CRYPTO_CCM=m | ||
1605 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1606 | CONFIG_CRYPTO_DES=y | ||
1607 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1608 | CONFIG_CRYPTO_BLOWFISH=m | ||
1609 | CONFIG_CRYPTO_TWOFISH=m | ||
1610 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1611 | CONFIG_CRYPTO_SERPENT=m | ||
1612 | CONFIG_CRYPTO_AES=m | 1601 | CONFIG_CRYPTO_AES=m |
1602 | CONFIG_CRYPTO_ANUBIS=m | ||
1603 | CONFIG_CRYPTO_ARC4=m | ||
1604 | CONFIG_CRYPTO_BLOWFISH=m | ||
1605 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1613 | CONFIG_CRYPTO_CAST5=m | 1606 | CONFIG_CRYPTO_CAST5=m |
1614 | CONFIG_CRYPTO_CAST6=m | 1607 | CONFIG_CRYPTO_CAST6=m |
1615 | CONFIG_CRYPTO_TEA=m | 1608 | CONFIG_CRYPTO_DES=y |
1616 | CONFIG_CRYPTO_ARC4=m | 1609 | # CONFIG_CRYPTO_FCRYPT is not set |
1617 | CONFIG_CRYPTO_KHAZAD=m | 1610 | CONFIG_CRYPTO_KHAZAD=m |
1618 | CONFIG_CRYPTO_ANUBIS=m | ||
1619 | # CONFIG_CRYPTO_SEED is not set | ||
1620 | CONFIG_CRYPTO_SALSA20=m | 1611 | CONFIG_CRYPTO_SALSA20=m |
1612 | # CONFIG_CRYPTO_SEED is not set | ||
1613 | CONFIG_CRYPTO_SERPENT=m | ||
1614 | CONFIG_CRYPTO_TEA=m | ||
1615 | CONFIG_CRYPTO_TWOFISH=m | ||
1616 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1617 | |||
1618 | # | ||
1619 | # Compression | ||
1620 | # | ||
1621 | CONFIG_CRYPTO_DEFLATE=m | 1621 | CONFIG_CRYPTO_DEFLATE=m |
1622 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1623 | CONFIG_CRYPTO_CRC32C=m | ||
1624 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1625 | CONFIG_CRYPTO_TEST=m | ||
1626 | CONFIG_CRYPTO_AUTHENC=m | ||
1627 | CONFIG_CRYPTO_LZO=m | 1622 | CONFIG_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 | ||
155 | MODULE_VERSION(DRV_VERSION); | 155 | MODULE_VERSION(DRV_VERSION); |
156 | MODULE_AUTHOR("Paul Mundt"); | 156 | MODULE_AUTHOR("Paul Mundt"); |
157 | MODULE_LICENSE("GPLv2"); | 157 | MODULE_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" |
260 | endif | 260 | endif |
261 | 261 | ||
262 | source "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. |
263 | config INPUT | 265 | config 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); | |||
60 | EXPORT_SYMBOL(run_helper); | 60 | EXPORT_SYMBOL(run_helper); |
61 | EXPORT_SYMBOL(start_thread); | 61 | EXPORT_SYMBOL(start_thread); |
62 | 62 | ||
63 | EXPORT_SYMBOL(add_sigio_fd); | ||
64 | EXPORT_SYMBOL(ignore_sigio_fd); | ||
65 | EXPORT_SYMBOL(deactivate_fd); | ||
66 | EXPORT_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 */ |
5 | EXPORT_SYMBOL(__memcpy); | 6 | EXPORT_SYMBOL(__memcpy); |
7 | EXPORT_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 | *******************************************************************/ |
32 | static 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 | */ |
1107 | struct device *device_create(struct class *class, struct device *parent, | 1109 | struct 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 | } |
1142 | EXPORT_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 | */ | ||
1166 | struct 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 | } | ||
1180 | EXPORT_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 | */ | ||
1203 | struct 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 | } | ||
1141 | EXPORT_SYMBOL_GPL(device_create); | 1214 | EXPORT_SYMBOL_GPL(device_create); |
1142 | 1215 | ||
1143 | static int __match_devt(struct device *dev, void *data) | 1216 | static 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); | ||
658 | out: | 657 | out: |
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 | ||
1540 | static void sbp2_create_command_orb(struct sbp2_lu *lu, | 1540 | static 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 | ||
1592 | static void sbp2_link_orb_command(struct sbp2_lu *lu, | 1591 | static void sbp2_link_orb_command(struct sbp2_lu *lu, |
@@ -1669,16 +1668,13 @@ static void sbp2_link_orb_command(struct sbp2_lu *lu, | |||
1669 | static int sbp2_send_command(struct sbp2_lu *lu, struct scsi_cmnd *SCpnt, | 1668 | static 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 | ||
184 | MODULE_AUTHOR("Nicolas Bellido Y Ortega"); | 184 | MODULE_AUTHOR("Nicolas Bellido Y Ortega"); |
185 | MODULE_DESCRIPTION("AAED-2000 Keyboard Driver"); | 185 | MODULE_DESCRIPTION("AAED-2000 Keyboard Driver"); |
186 | MODULE_LICENSE("GPLv2"); | 186 | MODULE_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 | ||
413 | MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); | 413 | MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); |
414 | MODULE_DESCRIPTION("Corgi Keyboard Driver"); | 414 | MODULE_DESCRIPTION("Corgi Keyboard Driver"); |
415 | MODULE_LICENSE("GPLv2"); | 415 | MODULE_LICENSE("GPL v2"); |
416 | MODULE_ALIAS("platform:corgi-keyboard"); | 416 | MODULE_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 | ||
276 | MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>"); | 276 | MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>"); |
277 | MODULE_DESCRIPTION("HP Jornada 620/660/680/690 Keyboard Driver"); | 277 | MODULE_DESCRIPTION("HP Jornada 620/660/680/690 Keyboard Driver"); |
278 | MODULE_LICENSE("GPLv2"); | 278 | MODULE_LICENSE("GPL v2"); |
279 | MODULE_ALIAS("platform:jornada680_kbd"); | 279 | MODULE_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 | ||
30 | MODULE_AUTHOR("Kristoffer Ericson <Kristoffer.Ericson@gmail.com>"); | 30 | MODULE_AUTHOR("Kristoffer Ericson <Kristoffer.Ericson@gmail.com>"); |
31 | MODULE_DESCRIPTION("HP Jornada 710/720/728 keyboard driver"); | 31 | MODULE_DESCRIPTION("HP Jornada 710/720/728 keyboard driver"); |
32 | MODULE_LICENSE("GPLv2"); | 32 | MODULE_LICENSE("GPL v2"); |
33 | 33 | ||
34 | static unsigned short jornada_std_keymap[128] = { /* ROW */ | 34 | static 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 | ||
495 | MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); | 495 | MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); |
496 | MODULE_DESCRIPTION("Spitz Keyboard Driver"); | 496 | MODULE_DESCRIPTION("Spitz Keyboard Driver"); |
497 | MODULE_LICENSE("GPLv2"); | 497 | MODULE_LICENSE("GPL v2"); |
498 | MODULE_ALIAS("platform:spitz-keyboard"); | 498 | MODULE_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 | ||
25 | MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>"); | 25 | MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>"); |
26 | MODULE_DESCRIPTION("HP Jornada 710/720/728 touchscreen driver"); | 26 | MODULE_DESCRIPTION("HP Jornada 710/720/728 touchscreen driver"); |
27 | MODULE_LICENSE("GPLv2"); | 27 | MODULE_LICENSE("GPL v2"); |
28 | 28 | ||
29 | struct jornada_ts { | 29 | struct 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 | # |
4 | config HYSDN | 4 | config 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 | /******************************************************************************/ |
72 | static void | 73 | static void |
73 | ergo_irq_bh(struct work_struct *ugli_api) | 74 | ergo_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 | ||
902 | config SOC_CAMERA | 902 | config 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 */ |
334 | static int __videobuf_mmap_setup(struct videobuf_queue *q, | 334 | int __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); | |||
1129 | EXPORT_SYMBOL_GPL(videobuf_read_one); | 1129 | EXPORT_SYMBOL_GPL(videobuf_read_one); |
1130 | EXPORT_SYMBOL_GPL(videobuf_poll_stream); | 1130 | EXPORT_SYMBOL_GPL(videobuf_poll_stream); |
1131 | 1131 | ||
1132 | EXPORT_SYMBOL_GPL(__videobuf_mmap_setup); | ||
1132 | EXPORT_SYMBOL_GPL(videobuf_mmap_setup); | 1133 | EXPORT_SYMBOL_GPL(videobuf_mmap_setup); |
1133 | EXPORT_SYMBOL_GPL(videobuf_mmap_free); | 1134 | EXPORT_SYMBOL_GPL(videobuf_mmap_free); |
1134 | EXPORT_SYMBOL_GPL(videobuf_mmap_mapper); | 1135 | EXPORT_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 | ||
25 | config HTC_EGPIO | 25 | config 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 | ||
120 | config MMC_SPI | 120 | config 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 | ||
1354 | config B44 | 1354 | config 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 @@ | |||
117 | struct irda_class_desc { | 117 | struct 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 | ||
2905 | static int waitbusy (struct airo_info *ai) { | 2906 | static 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 @@ | |||
1 | config B43 | 1 | config 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 @@ | |||
1 | config B43LEGACY | 1 | config 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 | ||
651 | MODULE_DESCRIPTION("Mac ESP SCSI driver"); | 651 | MODULE_DESCRIPTION("Mac ESP SCSI driver"); |
652 | MODULE_AUTHOR("Finn Thain <fthain@telegraphics.com.au>"); | 652 | MODULE_AUTHOR("Finn Thain <fthain@telegraphics.com.au>"); |
653 | MODULE_LICENSE("GPLv2"); | 653 | MODULE_LICENSE("GPL v2"); |
654 | MODULE_VERSION(DRV_VERSION); | 654 | MODULE_VERSION(DRV_VERSION); |
655 | 655 | ||
656 | module_init(mac_esp_init); | 656 | module_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 | ||
32 | config 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 | ||
6 | obj-$(CONFIG_USB_ACM) += cdc-acm.o | 6 | obj-$(CONFIG_USB_ACM) += cdc-acm.o |
7 | obj-$(CONFIG_USB_PRINTER) += usblp.o | 7 | obj-$(CONFIG_USB_PRINTER) += usblp.o |
8 | obj-$(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 | |||
34 | static 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 | |||
58 | static DEFINE_MUTEX(wdm_mutex); | ||
59 | |||
60 | /* --- method tables --- */ | ||
61 | |||
62 | struct 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 | |||
96 | static struct usb_driver wdm_driver; | ||
97 | |||
98 | /* --- callbacks --- */ | ||
99 | static 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 | |||
111 | static 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 | |||
151 | static 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) { | ||
234 | sw: | ||
235 | rv = schedule_work(&desc->rxwork); | ||
236 | if (rv) | ||
237 | err("Cannot schedule work"); | ||
238 | } | ||
239 | } | ||
240 | exit: | ||
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 | |||
248 | static 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 | |||
255 | static 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 | |||
262 | static 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 | |||
279 | static 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 | } | ||
354 | out: | ||
355 | mutex_unlock(&desc->wlock); | ||
356 | outnl: | ||
357 | return rv < 0 ? rv : count; | ||
358 | } | ||
359 | |||
360 | static 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; | ||
374 | retry: | ||
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 | |||
423 | err: | ||
424 | mutex_unlock(&desc->rlock); | ||
425 | if (rv < 0) | ||
426 | err("wdm_read: exit error"); | ||
427 | return rv; | ||
428 | } | ||
429 | |||
430 | static 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 | |||
441 | static 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 | |||
463 | desc_out: | ||
464 | return mask; | ||
465 | } | ||
466 | |||
467 | static 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 | |||
495 | out: | ||
496 | mutex_unlock(&wdm_mutex); | ||
497 | return rv; | ||
498 | } | ||
499 | |||
500 | static 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 | |||
514 | static 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 | |||
524 | static 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 --- */ | ||
531 | static 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 | |||
554 | static 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 | } | ||
589 | next_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; | ||
672 | out: | ||
673 | return rv; | ||
674 | err2: | ||
675 | usb_buffer_free(interface_to_usbdev(desc->intf), | ||
676 | desc->wMaxPacketSize, | ||
677 | desc->sbuf, | ||
678 | desc->validity->transfer_dma); | ||
679 | err: | ||
680 | free_urbs(desc); | ||
681 | kfree(desc->ubuf); | ||
682 | kfree(desc->orq); | ||
683 | kfree(desc->irq); | ||
684 | kfree(desc); | ||
685 | return rv; | ||
686 | } | ||
687 | |||
688 | static 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 | |||
711 | static 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 | |||
720 | static int __init wdm_init(void) | ||
721 | { | ||
722 | int rv; | ||
723 | |||
724 | rv = usb_register(&wdm_driver); | ||
725 | |||
726 | return rv; | ||
727 | } | ||
728 | |||
729 | static void __exit wdm_exit(void) | ||
730 | { | ||
731 | usb_deregister(&wdm_driver); | ||
732 | } | ||
733 | |||
734 | module_init(wdm_init); | ||
735 | module_exit(wdm_exit); | ||
736 | |||
737 | MODULE_AUTHOR(DRIVER_AUTHOR); | ||
738 | MODULE_DESCRIPTION("USB Abstract Control Model driver for " | ||
739 | "USB WCM Device Management"); | ||
740 | MODULE_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 | ||
29 | static struct usb_device_id id_table [] = { | 29 | static 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 | }; |
33 | MODULE_DEVICE_TABLE(usb, id_table); | 34 | MODULE_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 | |||
199 | static struct usb_device_id option_ids[] = { | 203 | static 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 | }; |
309 | MODULE_DEVICE_TABLE(usb, option_ids); | 314 | MODULE_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 | ||
30 | static ssize_t display_show_name(struct device *dev, | 31 | static 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 | |||
36 | Kazeon team for various fixes especially for 2.4 version. | 36 | Kazeon team for various fixes especially for 2.4 version. |
37 | Asser Ferno (Change Notify support) | 37 | Asser Ferno (Change Notify support) |
38 | Shaggy (Dave Kleikamp) for inumerable small fs suggestions and some good cleanup | 38 | Shaggy (Dave Kleikamp) for inumerable small fs suggestions and some good cleanup |
39 | Igor Mammedov (DFS support) | ||
39 | 40 | ||
40 | Test case and Bug Report contributors | 41 | Test 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 @@ | |||
1 | Version 1.53 | 1 | Version 1.53 |
2 | ------------ | 2 | ------------ |
3 | DFS support added (Microsoft Distributed File System client support needed | ||
4 | for referrals which enable a hierarchical name space among servers). | ||
3 | 5 | ||
4 | Version 1.52 | 6 | Version 1.52 |
5 | ------------ | 7 | ------------ |
@@ -12,7 +14,8 @@ Add ability to modify cifs acls for handling chmod (when mounted with | |||
12 | cifsacl flag). Fix prefixpath path separator so we can handle mounts | 14 | cifsacl flag). Fix prefixpath path separator so we can handle mounts |
13 | with prefixpaths longer than one directory (one path component) when | 15 | with prefixpaths longer than one directory (one path component) when |
14 | mounted to Windows servers. Fix slow file open when cifsacl | 16 | mounted to Windows servers. Fix slow file open when cifsacl |
15 | enabled. | 17 | enabled. Fix memory leak in FindNext when the SMB call returns -EBADF. |
18 | |||
16 | 19 | ||
17 | Version 1.51 | 20 | Version 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 @@ | |||
1 | Version 1.52 January 3, 2008 | 1 | Version 1.53 May 20, 2008 |
2 | 2 | ||
3 | A Partial List of Missing Features | 3 | A Partial List of Missing Features |
4 | ================================== | 4 | ================================== |
@@ -20,20 +20,21 @@ d) Cleanup now unneeded SessSetup code in | |||
20 | fs/cifs/connect.c and add back in NTLMSSP code if any servers | 20 | fs/cifs/connect.c and add back in NTLMSSP code if any servers |
21 | need it | 21 | need it |
22 | 22 | ||
23 | e) ms-dfs and ms-dfs host name resolution cleanup | 23 | e) fix NTLMv2 signing when two mounts with different users to same |
24 | |||
25 | f) fix NTLMv2 signing when two mounts with different users to same | ||
26 | server. | 24 | server. |
27 | 25 | ||
28 | g) Directory entry caching relies on a 1 second timer, rather than | 26 | f) Directory entry caching relies on a 1 second timer, rather than |
29 | using FindNotify or equivalent. - (started) | 27 | using FindNotify or equivalent. - (started) |
30 | 28 | ||
31 | h) quota support (needs minor kernel change since quota calls | 29 | g) quota support (needs minor kernel change since quota calls |
32 | to make it to network filesystems or deviceless filesystems) | 30 | to make it to network filesystems or deviceless filesystems) |
33 | 31 | ||
34 | i) investigate sync behavior (including syncpage) and check | 32 | h) investigate sync behavior (including syncpage) and check |
35 | for proper behavior of intr/nointr | 33 | for proper behavior of intr/nointr |
36 | 34 | ||
35 | i) improve support for very old servers (OS/2 and Win9x for example) | ||
36 | Including support for changing the time remotely (utimes command). | ||
37 | |||
37 | j) hook lower into the sockets api (as NFS/SunRPC does) to avoid the | 38 | j) hook lower into the sockets api (as NFS/SunRPC does) to avoid the |
38 | extra copy in/out of the socket buffers in some cases. | 39 | extra 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 | ||
222 | static 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 | |||
269 | static int add_mount_helper(struct vfsmount *newmnt, struct nameidata *nd, | 222 | static 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 | ||
34 | struct cifs_sb_info { | 35 | struct 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 | ||
737 | static void | 769 | static 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); |
96 | extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t); | 96 | extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t); |
97 | extern ssize_t cifs_listxattr(struct dentry *, char *, size_t); | 97 | extern ssize_t cifs_listxattr(struct dentry *, char *, size_t); |
98 | extern int cifs_ioctl(struct inode *inode, struct file *filep, | 98 | extern 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 |
102 | extern const struct export_operations cifs_export_ops; | 101 | extern 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 | |||
1907 | typedef struct dfs_referral_level_3 { | 1916 | typedef 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 | ||
1922 | typedef struct smb_com_transaction_get_dfs_refer_rsp { | 1929 | typedef 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 | ||
94 | extern int cifs_get_inode_info(struct inode **pinode, | 94 | extern 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); |
98 | extern int cifs_get_inode_info_unix(struct inode **pinode, | 98 | extern 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 | ||
131 | extern int CIFSSMBQPathInfo(const int xid, struct cifsTconInfo *tcon, | 131 | extern 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); |
136 | extern int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon, | 136 | extern int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon, |
@@ -141,18 +141,15 @@ extern int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon, | |||
141 | extern int CIFSSMBUnixQPathInfo(const int xid, | 141 | extern 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 | ||
147 | extern int CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses, | 147 | extern 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 | ||
153 | extern int connect_to_dfs_path(int xid, struct cifsSesInfo *pSesInfo, | ||
154 | const char *old_path, | ||
155 | const struct nls_table *nls_codepage, int remap); | ||
156 | extern int get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, | 153 | extern 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 | */ | ||
90 | static int | ||
91 | cifs_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 | |||
113 | cifs_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 | ||
1203 | static int | ||
1204 | access_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 | |||
1169 | int | 1217 | int |
1170 | SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon, | 1218 | SMBLegacyOpen(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: | |||
3388 | int | 3432 | int |
3389 | CIFSSMBUnixQPathInfo(const int xid, struct cifsTconInfo *tcon, | 3433 | CIFSSMBUnixQPathInfo(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 | */ | ||
3910 | static int | ||
3911 | parse_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 | |||
3985 | parse_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 | |||
3859 | int | 3994 | int |
3860 | CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses, | 3995 | CIFSGetDFSRefer(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 | } | ||
4040 | GetDFSRefExit: | 4097 | GetDFSRefExit: |
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 | ||
1416 | int | 1426 | int |
1417 | connect_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 | |||
1437 | int | ||
1438 | get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, const char *old_path, | 1427 | get_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; | ||
62 | cifs_bp_rename_retry: | 69 | cifs_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 | ||
81 | static inline int cifs_get_disposition(unsigned int flags) | 85 | static 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 | ||
164 | static 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) | 170 | static 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 | ||
195 | int cifs_get_inode_info_unix(struct inode **pinode, | 202 | int 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 | |||
211 | try_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); | ||
273 | cgiiu_exit: | 272 | cgiiu_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 | */ | ||
384 | static 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 | |||
382 | int cifs_get_inode_info(struct inode **pinode, | 408 | int 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 | |||
414 | try_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 | |||
601 | cgii_exit: | 617 | cgii_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 | ||
33 | int cifs_ioctl(struct inode *inode, struct file *filep, | 33 | long 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 | ||
66 | typedef struct _NEGOTIATE_MESSAGE { | 66 | typedef 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 | ||
76 | typedef struct _CHALLENGE_MESSAGE { | 76 | typedef 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 | |||
452 | ecryptfs_miscdev_write(struct file *file, const char __user *buf, | 449 | ecryptfs_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 | ||
241 | struct gfs2_dinode_host { | 242 | struct 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 | ||
169 | struct inode *gfs2_inode_lookup(struct super_block *sb, | 170 | struct 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 = { | |||
69 | struct inode *gfs2_aspace_get(struct gfs2_sbd *sdp) | 69 | struct 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 | */ |
298 | static void gfs2_drop_inode(struct inode *inode) | 298 | static 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 | ||
315 | static void gfs2_clear_inode(struct inode *inode) | 316 | static 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 | ||
6 | hppfs-objs := hppfs.o | 6 | obj-$(CONFIG_HPPFS) += hppfs.o |
7 | |||
8 | obj-y = | ||
9 | obj-$(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) | |||
419 | out_release_client: | 419 | out_release_client: |
420 | rpc_shutdown_client(client); | 420 | rpc_shutdown_client(client); |
421 | out_err: | 421 | out_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 | */ |
420 | int sysfs_add_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd) | 420 | int 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 | ||
161 | static inline unsigned long pte_pfn(pte_t pte) | 161 | static 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 | ||
154 | static inline unsigned long pgd_bad(pgd_t pgd) | 154 | static 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 | ||
159 | static inline unsigned long pud_bad(pud_t pud) | 159 | static 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 | ||
164 | static inline unsigned long pmd_bad(pmd_t pmd) | 164 | static 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 | ||
128 | static inline unsigned long pte_mfn(pte_t pte) | 128 | static 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 | ||
133 | static inline pte_t mfn_pte(unsigned long page_nr, pgprot_t pgprot) | 133 | static 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 | |||
92 | header-y += if_strip.h | 92 | header-y += if_strip.h |
93 | header-y += if_tun.h | 93 | header-y += if_tun.h |
94 | header-y += if_tunnel.h | 94 | header-y += if_tunnel.h |
95 | header-y += in6.h | ||
96 | header-y += in_route.h | 95 | header-y += in_route.h |
97 | header-y += ioctl.h | 96 | header-y += ioctl.h |
98 | header-y += ip6_tunnel.h | 97 | header-y += ip6_tunnel.h |
@@ -236,6 +235,7 @@ unifdef-y += if_vlan.h | |||
236 | unifdef-y += igmp.h | 235 | unifdef-y += igmp.h |
237 | unifdef-y += inet_diag.h | 236 | unifdef-y += inet_diag.h |
238 | unifdef-y += in.h | 237 | unifdef-y += in.h |
238 | unifdef-y += in6.h | ||
239 | unifdef-y += inotify.h | 239 | unifdef-y += inotify.h |
240 | unifdef-y += input.h | 240 | unifdef-y += input.h |
241 | unifdef-y += ip.h | 241 | unifdef-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 | ||
22 | struct atmtcp_hdr { | 20 | struct 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 | */ |
452 | extern 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); | ||
452 | extern struct device *device_create(struct class *cls, struct device *parent, | 458 | extern 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))); |
461 | extern 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))); | ||
455 | extern void device_destroy(struct class *cls, dev_t devt); | 467 | extern 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 | */ |
73 | struct svc_rdma_op_ctxt { | 73 | struct 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 | ||
91 | struct svcxprt_rdma { | 91 | struct 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 */ |
166 | extern int svc_rdma_send(struct svcxprt_rdma *, struct ib_send_wr *); | 168 | extern int svc_rdma_send(struct svcxprt_rdma *, struct ib_send_wr *); |
167 | extern int svc_rdma_send_error(struct svcxprt_rdma *, struct rpcrdma_msg *, | 169 | extern void svc_rdma_send_error(struct svcxprt_rdma *, struct rpcrdma_msg *, |
168 | enum rpcrdma_errcode); | 170 | enum rpcrdma_errcode); |
169 | struct page *svc_rdma_get_page(void); | 171 | struct page *svc_rdma_get_page(void); |
170 | extern int svc_rdma_post_recv(struct svcxprt_rdma *); | 172 | extern int svc_rdma_post_recv(struct svcxprt_rdma *); |
171 | extern int svc_rdma_create_listen(struct svc_serv *, int, struct sockaddr *); | 173 | extern 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 */ | ||
134 | struct 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 */ |
134 | struct usb_cdc_mdlm_desc { | 143 | struct 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, | |||
237 | int videobuf_mmap_setup(struct videobuf_queue *q, | 237 | int 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); |
240 | int __videobuf_mmap_setup(struct videobuf_queue *q, | ||
241 | unsigned int bcount, unsigned int bsize, | ||
242 | enum v4l2_memory memory); | ||
240 | int videobuf_mmap_free(struct videobuf_queue *q); | 243 | int videobuf_mmap_free(struct videobuf_queue *q); |
241 | int videobuf_mmap_mapper(struct videobuf_queue *q, | 244 | int 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); | |||
1594 | void ieee80211_scan_completed(struct ieee80211_hw *hw); | 1594 | void 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 | */ |
1606 | void ieee80211_iterate_active_interfaces(struct ieee80211_hw *hw, | 1609 | void 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 | */ | ||
1626 | void 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); |
132 | int 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 | ||
134 | extern void inet6_ifinfo_notify(int event, | 138 | extern void inet6_ifinfo_notify(int event, |
@@ -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); | |||
172 | int bdi_register(struct backing_dev_info *bdi, struct device *parent, | 172 | int 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 | ||
197 | exit: | 190 | exit: |
198 | kfree(name); | ||
199 | return ret; | 191 | return ret; |
200 | } | 192 | } |
201 | EXPORT_SYMBOL(bdi_register); | 193 | EXPORT_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 | ||
385 | static 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 | |||
385 | static void __vlan_device_event(struct net_device *dev, unsigned long event) | 403 | static 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 | ||
905 | rollback: | 905 | rollback: |
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) | |||
3148 | static int inet6_addr_modify(struct inet6_ifaddr *ifp, u8 ifa_flags, | 3167 | static 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 | ||
1730 | static int ndisc_ifinfo_sysctl_strategy(ctl_table *ctl, int __user *name, | 1730 | int 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 | } | ||
416 | EXPORT_SYMBOL_GPL(ieee80211_iterate_active_interfaces); | ||
417 | |||
418 | void 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 | } |
416 | EXPORT_SYMBOL_GPL(ieee80211_iterate_active_interfaces); | 451 | EXPORT_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++) { |
314 | next_sge: | 319 | next_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 | ||
407 | static int rdma_read_complete(struct svc_rqst *rqstp, | 388 | static 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 | */ |
294 | static void rq_cq_reap(struct svcxprt_rdma *xprt) | 289 | static 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 | */ |
324 | static void sq_cq_reap(struct svcxprt_rdma *xprt) | 337 | static 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 | ||
421 | static void destroy_context_cache(struct svc_rdma_op_ctxt *ctxt) | 448 | static 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 | ||
434 | static struct svcxprt_rdma *rdma_create_xprt(struct svc_serv *serv, | 460 | static 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 | */ | ||
921 | static void svc_rdma_release_rqst(struct svc_rqst *rqstp) | 949 | static 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 | */ |
951 | static void svc_rdma_detach(struct svc_xprt *xprt) | 965 | static 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 | ||
970 | static void svc_rdma_free(struct svc_xprt *xprt) | 975 | static 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 | ||
1039 | static 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 | |||
992 | static int svc_rdma_has_wspace(struct svc_xprt *xprt) | 1047 | static 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 | ||
1058 | int svc_rdma_send_error(struct svcxprt_rdma *xprt, struct rpcrdma_msg *rmsgp, | 1117 | void 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 | ||
23 | static 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 | */ | ||
46 | static DECLARE_TASKLET(pcsp_start_timer_tasklet, pcsp_start_timer, 0); | ||
47 | |||
48 | enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) | 22 | enum 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) | |||
153 | exit_nr_unlock2: | 124 | exit_nr_unlock2: |
154 | snd_pcm_stream_unlock(substream); | 125 | snd_pcm_stream_unlock(substream); |
155 | exit_nr_unlock1: | 126 | exit_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 | ||
180 | static void pcsp_stop_playing(struct snd_pcsp *chip) | 151 | static 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 | ||
80 | config SOUND_MSNDCLAS | 80 | config 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 | ||
144 | config SOUND_MSNDPIN | 144 | config 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 */ |
8761 | static void alc262_fujitsu_automute(struct hda_codec *codec, int force) | 8761 | static 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 | ||
8804 | static 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 */ |
8801 | static struct hda_bind_ctls alc262_fujitsu_bind_master_vol = { | 8810 | static 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 | ||