Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6

* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
[S390] update default configuration
[S390] duplicate ccw devices in ccwgroup.
[S390] permanent subchannel busy conditions may cause I/O stall

+40 -17
+35 -9
arch/s390/defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.17-rc1 4 - # Mon Apr 3 14:34:15 2006 3 + # Linux kernel version: 2.6.18-rc2 4 + # Thu Jul 27 13:51:07 2006 5 5 # 6 6 CONFIG_MMU=y 7 + CONFIG_LOCKDEP_SUPPORT=y 8 + CONFIG_STACKTRACE_SUPPORT=y 7 9 CONFIG_RWSEM_XCHGADD_ALGORITHM=y 8 10 CONFIG_GENERIC_HWEIGHT=y 9 11 CONFIG_GENERIC_CALIBRATE_DELAY=y 10 12 CONFIG_S390=y 13 + CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 11 14 12 15 # 13 16 # Code maturity level options ··· 28 25 CONFIG_SYSVIPC=y 29 26 CONFIG_POSIX_MQUEUE=y 30 27 # CONFIG_BSD_PROCESS_ACCT is not set 28 + # CONFIG_TASKSTATS is not set 31 29 CONFIG_SYSCTL=y 32 30 CONFIG_AUDIT=y 33 31 # CONFIG_AUDITSYSCALL is not set ··· 47 43 CONFIG_BUG=y 48 44 CONFIG_ELF_CORE=y 49 45 CONFIG_BASE_FULL=y 46 + CONFIG_RT_MUTEXES=y 50 47 CONFIG_FUTEX=y 51 48 CONFIG_EPOLL=y 52 49 CONFIG_SHMEM=y 53 50 CONFIG_SLAB=y 51 + CONFIG_VM_EVENT_COUNTERS=y 54 52 # CONFIG_TINY_SHMEM is not set 55 53 CONFIG_BASE_SMALL=0 56 54 # CONFIG_SLOB is not set ··· 100 94 CONFIG_DEFAULT_MIGRATION_COST=1000000 101 95 CONFIG_COMPAT=y 102 96 CONFIG_SYSVIPC_COMPAT=y 103 - CONFIG_BINFMT_ELF32=y 104 97 105 98 # 106 99 # Code generation options ··· 120 115 CONFIG_FLAT_NODE_MEM_MAP=y 121 116 # CONFIG_SPARSEMEM_STATIC is not set 122 117 CONFIG_SPLIT_PTLOCK_CPUS=4 118 + CONFIG_RESOURCES_64BIT=y 123 119 124 120 # 125 121 # I/O subsystem configuration ··· 148 142 # CONFIG_APPLDATA_BASE is not set 149 143 CONFIG_NO_IDLE_HZ=y 150 144 CONFIG_NO_IDLE_HZ_INIT=y 145 + CONFIG_S390_HYPFS_FS=y 151 146 CONFIG_KEXEC=y 152 147 153 148 # ··· 181 174 # CONFIG_INET_IPCOMP is not set 182 175 # CONFIG_INET_XFRM_TUNNEL is not set 183 176 # CONFIG_INET_TUNNEL is not set 177 + CONFIG_INET_XFRM_MODE_TRANSPORT=y 178 + CONFIG_INET_XFRM_MODE_TUNNEL=y 184 179 CONFIG_INET_DIAG=y 185 180 CONFIG_INET_TCP_DIAG=y 186 181 # CONFIG_TCP_CONG_ADVANCED is not set ··· 195 186 # CONFIG_INET6_IPCOMP is not set 196 187 # CONFIG_INET6_XFRM_TUNNEL is not set 197 188 # CONFIG_INET6_TUNNEL is not set 189 + CONFIG_INET6_XFRM_MODE_TRANSPORT=y 190 + CONFIG_INET6_XFRM_MODE_TUNNEL=y 198 191 # CONFIG_IPV6_TUNNEL is not set 192 + # CONFIG_NETWORK_SECMARK is not set 199 193 # CONFIG_NETFILTER is not set 200 194 201 195 # ··· 275 263 # Network testing 276 264 # 277 265 # CONFIG_NET_PKTGEN is not set 266 + # CONFIG_NET_TCPPROBE is not set 278 267 # CONFIG_HAMRADIO is not set 279 268 # CONFIG_IRDA is not set 280 269 # CONFIG_BT is not set ··· 289 276 CONFIG_PREVENT_FIRMWARE_BUILD=y 290 277 # CONFIG_FW_LOADER is not set 291 278 # CONFIG_DEBUG_DRIVER is not set 279 + CONFIG_SYS_HYPERVISOR=y 292 280 293 281 # 294 282 # Connector - unified userspace <-> kernelspace linker ··· 348 334 CONFIG_BLK_DEV_RAM=y 349 335 CONFIG_BLK_DEV_RAM_COUNT=16 350 336 CONFIG_BLK_DEV_RAM_SIZE=4096 337 + CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 351 338 CONFIG_BLK_DEV_INITRD=y 352 339 # CONFIG_CDROM_PKTCDVD is not set 353 340 ··· 374 359 CONFIG_MD_RAID0=m 375 360 CONFIG_MD_RAID1=m 376 361 # CONFIG_MD_RAID10 is not set 377 - CONFIG_MD_RAID5=m 378 - # CONFIG_MD_RAID5_RESHAPE is not set 379 - # CONFIG_MD_RAID6 is not set 362 + # CONFIG_MD_RAID456 is not set 380 363 CONFIG_MD_MULTIPATH=m 381 364 # CONFIG_MD_FAULTY is not set 382 365 CONFIG_BLK_DEV_DM=y ··· 432 419 # 433 420 # Cryptographic devices 434 421 # 435 - CONFIG_Z90CRYPT=m 422 + CONFIG_ZCRYPT=m 423 + # CONFIG_ZCRYPT_MONOLITHIC is not set 436 424 437 425 # 438 426 # Network device support ··· 523 509 # CONFIG_MINIX_FS is not set 524 510 # CONFIG_ROMFS_FS is not set 525 511 CONFIG_INOTIFY=y 512 + CONFIG_INOTIFY_USER=y 526 513 # CONFIG_QUOTA is not set 527 514 CONFIG_DNOTIFY=y 528 515 # CONFIG_AUTOFS_FS is not set ··· 629 614 # Instrumentation Support 630 615 # 631 616 # CONFIG_PROFILING is not set 632 - # CONFIG_STATISTICS is not set 617 + CONFIG_STATISTICS=y 618 + CONFIG_KPROBES=y 633 619 634 620 # 635 621 # Kernel hacking 636 622 # 623 + CONFIG_TRACE_IRQFLAGS_SUPPORT=y 637 624 # CONFIG_PRINTK_TIME is not set 638 625 CONFIG_MAGIC_SYSRQ=y 626 + # CONFIG_UNUSED_SYMBOLS is not set 639 627 CONFIG_DEBUG_KERNEL=y 640 628 CONFIG_LOG_BUF_SHIFT=17 641 629 # CONFIG_DETECT_SOFTLOCKUP is not set 642 630 # CONFIG_SCHEDSTATS is not set 643 631 # CONFIG_DEBUG_SLAB is not set 644 632 CONFIG_DEBUG_PREEMPT=y 645 - CONFIG_DEBUG_MUTEXES=y 633 + # CONFIG_DEBUG_RT_MUTEXES is not set 634 + # CONFIG_RT_MUTEX_TESTER is not set 646 635 CONFIG_DEBUG_SPINLOCK=y 636 + CONFIG_DEBUG_MUTEXES=y 637 + # CONFIG_DEBUG_RWSEMS is not set 638 + # CONFIG_DEBUG_LOCK_ALLOC is not set 639 + # CONFIG_PROVE_LOCKING is not set 647 640 CONFIG_DEBUG_SPINLOCK_SLEEP=y 641 + # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 648 642 # CONFIG_DEBUG_KOBJECT is not set 649 643 # CONFIG_DEBUG_INFO is not set 650 644 CONFIG_DEBUG_FS=y 651 645 # CONFIG_DEBUG_VM is not set 646 + # CONFIG_FRAME_POINTER is not set 652 647 # CONFIG_UNWIND_INFO is not set 653 648 CONFIG_FORCED_INLINING=y 654 649 # CONFIG_RCU_TORTURE_TEST is not set ··· 713 688 # CONFIG_CRC16 is not set 714 689 CONFIG_CRC32=m 715 690 # CONFIG_LIBCRC32C is not set 691 + CONFIG_PLIST=y
+3 -7
drivers/s390/cio/ccwgroup.c
··· 152 152 struct ccwgroup_device *gdev; 153 153 int i; 154 154 int rc; 155 - int del_drvdata; 156 155 157 156 if (argc > 256) /* disallow dumb users */ 158 157 return -EINVAL; ··· 162 163 163 164 atomic_set(&gdev->onoff, 0); 164 165 165 - del_drvdata = 0; 166 166 for (i = 0; i < argc; i++) { 167 167 gdev->cdev[i] = get_ccwdev_by_busid(cdrv, argv[i]); 168 168 ··· 178 180 rc = -EINVAL; 179 181 goto free_dev; 180 182 } 181 - } 182 - for (i = 0; i < argc; i++) 183 183 gdev->cdev[i]->dev.driver_data = gdev; 184 - del_drvdata = 1; 184 + } 185 185 186 186 gdev->creator_id = creator_id; 187 187 gdev->count = argc; ··· 222 226 free_dev: 223 227 for (i = 0; i < argc; i++) 224 228 if (gdev->cdev[i]) { 225 - put_device(&gdev->cdev[i]->dev); 226 - if (del_drvdata) 229 + if (gdev->cdev[i]->dev.driver_data == gdev) 227 230 gdev->cdev[i]->dev.driver_data = NULL; 231 + put_device(&gdev->cdev[i]->dev); 228 232 } 229 233 kfree(gdev); 230 234 return rc;
+2 -1
drivers/s390/cio/device_fsm.c
··· 152 152 if (cdev->private->iretry) { 153 153 cdev->private->iretry--; 154 154 ret = cio_halt(sch); 155 - return (ret == 0) ? -EBUSY : ret; 155 + if (ret != -EBUSY) 156 + return (ret == 0) ? -EBUSY : ret; 156 157 } 157 158 /* halt io unsuccessful. */ 158 159 cdev->private->iretry = 255; /* 255 clear retries. */