提交 58be18c4 编写于 作者: L Linus Torvalds

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

* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
  [S390] update default configuration.
  [S390] omit frame pointers on s390 when possible
  [S390] Use tape_generic_offline directly.
  [S390] /proc/stat idle field for idle cpus
  [S390] appldata: avoid deadlock with appldata_mem
  [S390] ipl: fix compile breakage
...@@ -98,7 +98,7 @@ static DECLARE_WORK(appldata_work, appldata_work_fn); ...@@ -98,7 +98,7 @@ static DECLARE_WORK(appldata_work, appldata_work_fn);
/* /*
* Ops list * Ops list
*/ */
static DEFINE_SPINLOCK(appldata_ops_lock); static DEFINE_MUTEX(appldata_ops_mutex);
static LIST_HEAD(appldata_ops_list); static LIST_HEAD(appldata_ops_list);
...@@ -129,14 +129,14 @@ static void appldata_work_fn(struct work_struct *work) ...@@ -129,14 +129,14 @@ static void appldata_work_fn(struct work_struct *work)
i = 0; i = 0;
get_online_cpus(); get_online_cpus();
spin_lock(&appldata_ops_lock); mutex_lock(&appldata_ops_mutex);
list_for_each(lh, &appldata_ops_list) { list_for_each(lh, &appldata_ops_list) {
ops = list_entry(lh, struct appldata_ops, list); ops = list_entry(lh, struct appldata_ops, list);
if (ops->active == 1) { if (ops->active == 1) {
ops->callback(ops->data); ops->callback(ops->data);
} }
} }
spin_unlock(&appldata_ops_lock); mutex_unlock(&appldata_ops_mutex);
put_online_cpus(); put_online_cpus();
} }
...@@ -338,7 +338,7 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp, ...@@ -338,7 +338,7 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp,
struct list_head *lh; struct list_head *lh;
found = 0; found = 0;
spin_lock(&appldata_ops_lock); mutex_lock(&appldata_ops_mutex);
list_for_each(lh, &appldata_ops_list) { list_for_each(lh, &appldata_ops_list) {
tmp_ops = list_entry(lh, struct appldata_ops, list); tmp_ops = list_entry(lh, struct appldata_ops, list);
if (&tmp_ops->ctl_table[2] == ctl) { if (&tmp_ops->ctl_table[2] == ctl) {
...@@ -346,15 +346,15 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp, ...@@ -346,15 +346,15 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp,
} }
} }
if (!found) { if (!found) {
spin_unlock(&appldata_ops_lock); mutex_unlock(&appldata_ops_mutex);
return -ENODEV; return -ENODEV;
} }
ops = ctl->data; ops = ctl->data;
if (!try_module_get(ops->owner)) { // protect this function if (!try_module_get(ops->owner)) { // protect this function
spin_unlock(&appldata_ops_lock); mutex_unlock(&appldata_ops_mutex);
return -ENODEV; return -ENODEV;
} }
spin_unlock(&appldata_ops_lock); mutex_unlock(&appldata_ops_mutex);
if (!*lenp || *ppos) { if (!*lenp || *ppos) {
*lenp = 0; *lenp = 0;
...@@ -378,11 +378,11 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp, ...@@ -378,11 +378,11 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp,
return -EFAULT; return -EFAULT;
} }
spin_lock(&appldata_ops_lock); mutex_lock(&appldata_ops_mutex);
if ((buf[0] == '1') && (ops->active == 0)) { if ((buf[0] == '1') && (ops->active == 0)) {
// protect work queue callback // protect work queue callback
if (!try_module_get(ops->owner)) { if (!try_module_get(ops->owner)) {
spin_unlock(&appldata_ops_lock); mutex_unlock(&appldata_ops_mutex);
module_put(ops->owner); module_put(ops->owner);
return -ENODEV; return -ENODEV;
} }
...@@ -407,7 +407,7 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp, ...@@ -407,7 +407,7 @@ appldata_generic_handler(ctl_table *ctl, int write, struct file *filp,
"failed with rc=%d\n", ops->name, rc); "failed with rc=%d\n", ops->name, rc);
module_put(ops->owner); module_put(ops->owner);
} }
spin_unlock(&appldata_ops_lock); mutex_unlock(&appldata_ops_mutex);
out: out:
*lenp = len; *lenp = len;
*ppos += len; *ppos += len;
...@@ -433,9 +433,9 @@ int appldata_register_ops(struct appldata_ops *ops) ...@@ -433,9 +433,9 @@ int appldata_register_ops(struct appldata_ops *ops)
if (!ops->ctl_table) if (!ops->ctl_table)
return -ENOMEM; return -ENOMEM;
spin_lock(&appldata_ops_lock); mutex_lock(&appldata_ops_mutex);
list_add(&ops->list, &appldata_ops_list); list_add(&ops->list, &appldata_ops_list);
spin_unlock(&appldata_ops_lock); mutex_unlock(&appldata_ops_mutex);
ops->ctl_table[0].procname = appldata_proc_name; ops->ctl_table[0].procname = appldata_proc_name;
ops->ctl_table[0].maxlen = 0; ops->ctl_table[0].maxlen = 0;
...@@ -452,9 +452,9 @@ int appldata_register_ops(struct appldata_ops *ops) ...@@ -452,9 +452,9 @@ int appldata_register_ops(struct appldata_ops *ops)
goto out; goto out;
return 0; return 0;
out: out:
spin_lock(&appldata_ops_lock); mutex_lock(&appldata_ops_mutex);
list_del(&ops->list); list_del(&ops->list);
spin_unlock(&appldata_ops_lock); mutex_unlock(&appldata_ops_mutex);
kfree(ops->ctl_table); kfree(ops->ctl_table);
return -ENOMEM; return -ENOMEM;
} }
...@@ -466,9 +466,9 @@ int appldata_register_ops(struct appldata_ops *ops) ...@@ -466,9 +466,9 @@ int appldata_register_ops(struct appldata_ops *ops)
*/ */
void appldata_unregister_ops(struct appldata_ops *ops) void appldata_unregister_ops(struct appldata_ops *ops)
{ {
spin_lock(&appldata_ops_lock); mutex_lock(&appldata_ops_mutex);
list_del(&ops->list); list_del(&ops->list);
spin_unlock(&appldata_ops_lock); mutex_unlock(&appldata_ops_mutex);
unregister_sysctl_table(ops->sysctl_header); unregister_sysctl_table(ops->sysctl_header);
kfree(ops->ctl_table); kfree(ops->ctl_table);
} }
......
...@@ -78,7 +78,7 @@ static void appldata_get_mem_data(void *data) ...@@ -78,7 +78,7 @@ static void appldata_get_mem_data(void *data)
{ {
/* /*
* don't put large structures on the stack, we are * don't put large structures on the stack, we are
* serialized through the appldata_ops_lock and can use static * serialized through the appldata_ops_mutex and can use static
*/ */
static struct sysinfo val; static struct sysinfo val;
unsigned long ev[NR_VM_EVENT_ITEMS]; unsigned long ev[NR_VM_EVENT_ITEMS];
......
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.29-rc4 # Linux kernel version: 2.6.30-rc3
# Wed Feb 11 10:07:16 2009 # Thu Apr 23 09:29:52 2009
# #
CONFIG_SCHED_MC=y CONFIG_SCHED_MC=y
CONFIG_MMU=y CONFIG_MMU=y
...@@ -22,6 +22,7 @@ CONFIG_NO_DMA=y ...@@ -22,6 +22,7 @@ CONFIG_NO_DMA=y
CONFIG_GENERIC_LOCKBREAK=y CONFIG_GENERIC_LOCKBREAK=y
CONFIG_PGSTE=y CONFIG_PGSTE=y
CONFIG_VIRT_CPU_ACCOUNTING=y CONFIG_VIRT_CPU_ACCOUNTING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_S390=y CONFIG_S390=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
...@@ -37,6 +38,7 @@ CONFIG_SWAP=y ...@@ -37,6 +38,7 @@ CONFIG_SWAP=y
CONFIG_SYSVIPC=y CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
# CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set # CONFIG_TASKSTATS is not set
CONFIG_AUDIT=y CONFIG_AUDIT=y
...@@ -77,21 +79,24 @@ CONFIG_IPC_NS=y ...@@ -77,21 +79,24 @@ CONFIG_IPC_NS=y
# CONFIG_NET_NS is not set # CONFIG_NET_NS is not set
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="" CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EMBEDDED is not set # CONFIG_EMBEDDED is not set
CONFIG_SYSCTL_SYSCALL=y CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set # CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set
# CONFIG_STRIP_ASM_SYMS is not set
CONFIG_HOTPLUG=y CONFIG_HOTPLUG=y
CONFIG_PRINTK=y CONFIG_PRINTK=y
CONFIG_BUG=y CONFIG_BUG=y
CONFIG_ELF_CORE=y CONFIG_ELF_CORE=y
# CONFIG_COMPAT_BRK is not set
CONFIG_BASE_FULL=y CONFIG_BASE_FULL=y
CONFIG_FUTEX=y CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y CONFIG_EPOLL=y
CONFIG_SIGNALFD=y CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y CONFIG_TIMERFD=y
...@@ -99,10 +104,12 @@ CONFIG_EVENTFD=y ...@@ -99,10 +104,12 @@ CONFIG_EVENTFD=y
CONFIG_SHMEM=y CONFIG_SHMEM=y
CONFIG_AIO=y CONFIG_AIO=y
CONFIG_VM_EVENT_COUNTERS=y CONFIG_VM_EVENT_COUNTERS=y
# CONFIG_COMPAT_BRK is not set
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPROFILE=y
CONFIG_KPROBES=y CONFIG_KPROBES=y
CONFIG_HAVE_SYSCALL_WRAPPERS=y CONFIG_HAVE_SYSCALL_WRAPPERS=y
...@@ -111,6 +118,8 @@ CONFIG_HAVE_KPROBES=y ...@@ -111,6 +118,8 @@ CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_USE_GENERIC_SMP_HELPERS=y CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_DEFAULT_NO_SPIN_MUTEXES=y
# CONFIG_SLOW_WORK is not set
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
CONFIG_SLABINFO=y CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y CONFIG_RT_MUTEXES=y
...@@ -124,7 +133,6 @@ CONFIG_MODVERSIONS=y ...@@ -124,7 +133,6 @@ CONFIG_MODVERSIONS=y
CONFIG_INIT_ALL_POSSIBLE=y CONFIG_INIT_ALL_POSSIBLE=y
CONFIG_STOP_MACHINE=y CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y CONFIG_BLOCK=y
# CONFIG_BLK_DEV_IO_TRACE is not set
CONFIG_BLK_DEV_BSG=y CONFIG_BLK_DEV_BSG=y
# CONFIG_BLK_DEV_INTEGRITY is not set # CONFIG_BLK_DEV_INTEGRITY is not set
CONFIG_BLOCK_COMPAT=y CONFIG_BLOCK_COMPAT=y
...@@ -211,11 +219,12 @@ CONFIG_ZONE_DMA_FLAG=1 ...@@ -211,11 +219,12 @@ CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y CONFIG_VIRT_TO_BUS=y
CONFIG_UNEVICTABLE_LRU=y CONFIG_UNEVICTABLE_LRU=y
CONFIG_HAVE_MLOCK=y
CONFIG_HAVE_MLOCKED_PAGE_BIT=y
# #
# I/O subsystem configuration # I/O subsystem configuration
# #
CONFIG_MACHCHK_WARNING=y
CONFIG_QDIO=y CONFIG_QDIO=y
CONFIG_CHSC_SCH=m CONFIG_CHSC_SCH=m
...@@ -247,12 +256,12 @@ CONFIG_S390_HYPFS_FS=y ...@@ -247,12 +256,12 @@ CONFIG_S390_HYPFS_FS=y
CONFIG_KEXEC=y CONFIG_KEXEC=y
# CONFIG_ZFCPDUMP is not set # CONFIG_ZFCPDUMP is not set
CONFIG_S390_GUEST=y CONFIG_S390_GUEST=y
CONFIG_SECCOMP=y
CONFIG_NET=y CONFIG_NET=y
# #
# Networking options # Networking options
# #
CONFIG_COMPAT_NET_DEV_OPS=y
CONFIG_PACKET=y CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set # CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y CONFIG_UNIX=y
...@@ -374,6 +383,7 @@ CONFIG_SCTP_HMAC_MD5=y ...@@ -374,6 +383,7 @@ CONFIG_SCTP_HMAC_MD5=y
# CONFIG_LAPB is not set # CONFIG_LAPB is not set
# CONFIG_ECONET is not set # CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set # CONFIG_WAN_ROUTER is not set
# CONFIG_PHONET is not set
CONFIG_NET_SCHED=y CONFIG_NET_SCHED=y
# #
...@@ -438,7 +448,6 @@ CONFIG_CAN_BCM=m ...@@ -438,7 +448,6 @@ CONFIG_CAN_BCM=m
CONFIG_CAN_VCAN=m CONFIG_CAN_VCAN=m
# CONFIG_CAN_DEBUG_DEVICES is not set # CONFIG_CAN_DEBUG_DEVICES is not set
# CONFIG_AF_RXRPC is not set # CONFIG_AF_RXRPC is not set
# CONFIG_PHONET is not set
# CONFIG_WIMAX is not set # CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set # CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set # CONFIG_NET_9P is not set
...@@ -537,6 +546,7 @@ CONFIG_SCSI_FC_ATTRS=y ...@@ -537,6 +546,7 @@ CONFIG_SCSI_FC_ATTRS=y
CONFIG_SCSI_LOWLEVEL=y CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set # CONFIG_ISCSI_TCP is not set
# CONFIG_LIBFC is not set # CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_DEBUG is not set
CONFIG_ZFCP=y CONFIG_ZFCP=y
CONFIG_SCSI_DH=m CONFIG_SCSI_DH=m
...@@ -544,6 +554,10 @@ CONFIG_SCSI_DH_RDAC=m ...@@ -544,6 +554,10 @@ CONFIG_SCSI_DH_RDAC=m
CONFIG_SCSI_DH_HP_SW=m CONFIG_SCSI_DH_HP_SW=m
CONFIG_SCSI_DH_EMC=m CONFIG_SCSI_DH_EMC=m
CONFIG_SCSI_DH_ALUA=m CONFIG_SCSI_DH_ALUA=m
CONFIG_SCSI_OSD_INITIATOR=m
CONFIG_SCSI_OSD_ULD=m
CONFIG_SCSI_OSD_DPRINT_SENSE=1
# CONFIG_SCSI_OSD_DEBUG is not set
CONFIG_MD=y CONFIG_MD=y
CONFIG_BLK_DEV_MD=y CONFIG_BLK_DEV_MD=y
CONFIG_MD_AUTODETECT=y CONFIG_MD_AUTODETECT=y
...@@ -564,6 +578,7 @@ CONFIG_DM_MULTIPATH=m ...@@ -564,6 +578,7 @@ CONFIG_DM_MULTIPATH=m
# CONFIG_DM_DELAY is not set # CONFIG_DM_DELAY is not set
# CONFIG_DM_UEVENT is not set # CONFIG_DM_UEVENT is not set
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
CONFIG_COMPAT_NET_DEV_OPS=y
# CONFIG_IFB is not set # CONFIG_IFB is not set
CONFIG_DUMMY=m CONFIG_DUMMY=m
CONFIG_BONDING=m CONFIG_BONDING=m
...@@ -667,6 +682,7 @@ CONFIG_S390_VMUR=m ...@@ -667,6 +682,7 @@ CONFIG_S390_VMUR=m
# CONFIG_MEMSTICK is not set # CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set # CONFIG_NEW_LEDS is not set
CONFIG_ACCESSIBILITY=y CONFIG_ACCESSIBILITY=y
# CONFIG_AUXDISPLAY is not set
# CONFIG_STAGING is not set # CONFIG_STAGING is not set
# #
...@@ -676,6 +692,7 @@ CONFIG_EXT2_FS=y ...@@ -676,6 +692,7 @@ CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set # CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set # CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y CONFIG_EXT3_FS=y
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_XATTR=y
# CONFIG_EXT3_FS_POSIX_ACL is not set # CONFIG_EXT3_FS_POSIX_ACL is not set
# CONFIG_EXT3_FS_SECURITY is not set # CONFIG_EXT3_FS_SECURITY is not set
...@@ -700,6 +717,11 @@ CONFIG_INOTIFY_USER=y ...@@ -700,6 +717,11 @@ CONFIG_INOTIFY_USER=y
# CONFIG_FUSE_FS is not set # CONFIG_FUSE_FS is not set
CONFIG_GENERIC_ACL=y CONFIG_GENERIC_ACL=y
#
# Caches
#
# CONFIG_FSCACHE is not set
# #
# CD-ROM/DVD Filesystems # CD-ROM/DVD Filesystems
# #
...@@ -744,6 +766,8 @@ CONFIG_MISC_FILESYSTEMS=y ...@@ -744,6 +766,8 @@ CONFIG_MISC_FILESYSTEMS=y
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
# CONFIG_SYSV_FS is not set # CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set # CONFIG_UFS_FS is not set
# CONFIG_EXOFS_FS is not set
# CONFIG_NILFS2_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y CONFIG_NFS_FS=y
CONFIG_NFS_V3=y CONFIG_NFS_V3=y
...@@ -758,7 +782,6 @@ CONFIG_LOCKD_V4=y ...@@ -758,7 +782,6 @@ CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=y CONFIG_EXPORTFS=y
CONFIG_NFS_COMMON=y CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y CONFIG_SUNRPC=y
# CONFIG_SUNRPC_REGISTER_V4 is not set
# CONFIG_RPCSEC_GSS_KRB5 is not set # CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set # CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set # CONFIG_SMB_FS is not set
...@@ -806,6 +829,7 @@ CONFIG_MAGIC_SYSRQ=y ...@@ -806,6 +829,7 @@ CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_FS=y CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set # CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_KERNEL=y
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set # CONFIG_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set # CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set # CONFIG_TIMER_STATS is not set
...@@ -830,7 +854,6 @@ CONFIG_DEBUG_MEMORY_INIT=y ...@@ -830,7 +854,6 @@ CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_LIST is not set # CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set # CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_FRAME_POINTER is not set
# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set # CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_KPROBES_SANITY_TEST is not set
...@@ -840,7 +863,9 @@ CONFIG_DEBUG_MEMORY_INIT=y ...@@ -840,7 +863,9 @@ CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_FAULT_INJECTION is not set # CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set # CONFIG_LATENCYTOP is not set
CONFIG_SYSCTL_SYSCALL_CHECK=y CONFIG_SYSCTL_SYSCALL_CHECK=y
# CONFIG_DEBUG_PAGEALLOC is not set
CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_TRACING_SUPPORT=y
# #
# Tracers # Tracers
...@@ -850,14 +875,17 @@ CONFIG_HAVE_FUNCTION_TRACER=y ...@@ -850,14 +875,17 @@ CONFIG_HAVE_FUNCTION_TRACER=y
# CONFIG_PREEMPT_TRACER is not set # CONFIG_PREEMPT_TRACER is not set
# CONFIG_SCHED_TRACER is not set # CONFIG_SCHED_TRACER is not set
# CONFIG_CONTEXT_SWITCH_TRACER is not set # CONFIG_CONTEXT_SWITCH_TRACER is not set
# CONFIG_EVENT_TRACER is not set
# CONFIG_BOOT_TRACER is not set # CONFIG_BOOT_TRACER is not set
# CONFIG_TRACE_BRANCH_PROFILING is not set # CONFIG_TRACE_BRANCH_PROFILING is not set
# CONFIG_STACK_TRACER is not set # CONFIG_STACK_TRACER is not set
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set # CONFIG_KMEMTRACE is not set
# CONFIG_WORKQUEUE_TRACER is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_DYNAMIC_DEBUG is not set
CONFIG_SAMPLES=y CONFIG_SAMPLES=y
# CONFIG_SAMPLE_KOBJECT is not set # CONFIG_SAMPLE_KOBJECT is not set
# CONFIG_SAMPLE_KPROBES is not set # CONFIG_SAMPLE_KPROBES is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# #
# Security options # Security options
...@@ -882,10 +910,12 @@ CONFIG_CRYPTO_HASH=m ...@@ -882,10 +910,12 @@ CONFIG_CRYPTO_HASH=m
CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=m CONFIG_CRYPTO_RNG=m
CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_PCOMP=y
CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_GF128MUL=m CONFIG_CRYPTO_GF128MUL=m
# CONFIG_CRYPTO_NULL is not set # CONFIG_CRYPTO_NULL is not set
CONFIG_CRYPTO_WORKQUEUE=y
# CONFIG_CRYPTO_CRYPTD is not set # CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_AUTHENC=m CONFIG_CRYPTO_AUTHENC=m
# CONFIG_CRYPTO_TEST is not set # CONFIG_CRYPTO_TEST is not set
...@@ -954,6 +984,7 @@ CONFIG_CRYPTO_SEED=m ...@@ -954,6 +984,7 @@ CONFIG_CRYPTO_SEED=m
# Compression # Compression
# #
# CONFIG_CRYPTO_DEFLATE is not set # CONFIG_CRYPTO_DEFLATE is not set
CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=m CONFIG_CRYPTO_LZO=m
# #
...@@ -969,6 +1000,7 @@ CONFIG_CRYPTO_SHA512_S390=m ...@@ -969,6 +1000,7 @@ CONFIG_CRYPTO_SHA512_S390=m
# CONFIG_CRYPTO_DES_S390 is not set # CONFIG_CRYPTO_DES_S390 is not set
# CONFIG_CRYPTO_AES_S390 is not set # CONFIG_CRYPTO_AES_S390 is not set
CONFIG_S390_PRNG=m CONFIG_S390_PRNG=m
# CONFIG_BINARY_PRINTF is not set
# #
# Library routines # Library routines
...@@ -982,9 +1014,14 @@ CONFIG_CRC_T10DIF=y ...@@ -982,9 +1014,14 @@ CONFIG_CRC_T10DIF=y
CONFIG_CRC32=m CONFIG_CRC32=m
CONFIG_CRC7=m CONFIG_CRC7=m
CONFIG_LIBCRC32C=m CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=m CONFIG_LZO_COMPRESS=m
CONFIG_LZO_DECOMPRESS=m CONFIG_LZO_DECOMPRESS=m
CONFIG_PLIST=y CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_NLATTR=y
CONFIG_HAVE_KVM=y CONFIG_HAVE_KVM=y
CONFIG_VIRTUALIZATION=y CONFIG_VIRTUALIZATION=y
CONFIG_KVM=m CONFIG_KVM=m
......
...@@ -174,4 +174,8 @@ cputime64_to_clock_t(cputime64_t cputime) ...@@ -174,4 +174,8 @@ cputime64_to_clock_t(cputime64_t cputime)
return __div(cputime, 4096000000ULL / USER_HZ); return __div(cputime, 4096000000ULL / USER_HZ);
} }
cputime64_t s390_get_idle_time(int cpu);
#define arch_idle_time(cpu) s390_get_idle_time(cpu)
#endif /* _S390_CPUTIME_H */ #endif /* _S390_CPUTIME_H */
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <asm/ebcdic.h> #include <asm/ebcdic.h>
#include <asm/reset.h> #include <asm/reset.h>
#include <asm/sclp.h> #include <asm/sclp.h>
#include <asm/sigp.h>
#include <asm/checksum.h> #include <asm/checksum.h>
#define IPL_PARM_BLOCK_VERSION 0 #define IPL_PARM_BLOCK_VERSION 0
......
...@@ -240,6 +240,22 @@ void vtime_stop_cpu(void) ...@@ -240,6 +240,22 @@ void vtime_stop_cpu(void)
} }
} }
cputime64_t s390_get_idle_time(int cpu)
{
struct s390_idle_data *idle;
unsigned long long now, idle_time, idle_enter;
idle = &per_cpu(s390_idle, cpu);
spin_lock(&idle->lock);
now = get_clock();
idle_time = 0;
idle_enter = idle->idle_enter;
if (idle_enter != 0ULL && idle_enter < now)
idle_time = now - idle_enter;
spin_unlock(&idle->lock);
return idle_time;
}
/* /*
* Sorted add to a list. List is linear searched until first bigger * Sorted add to a list. List is linear searched until first bigger
* element is found. * element is found.
......
...@@ -285,7 +285,7 @@ extern int tape_mtop(struct tape_device *, int, int); ...@@ -285,7 +285,7 @@ extern int tape_mtop(struct tape_device *, int, int);
extern void tape_state_set(struct tape_device *, enum tape_state); extern void tape_state_set(struct tape_device *, enum tape_state);
extern int tape_generic_online(struct tape_device *, struct tape_discipline *); extern int tape_generic_online(struct tape_device *, struct tape_discipline *);
extern int tape_generic_offline(struct tape_device *device); extern int tape_generic_offline(struct ccw_device *);
/* Externals from tape_devmap.c */ /* Externals from tape_devmap.c */
extern int tape_generic_probe(struct ccw_device *); extern int tape_generic_probe(struct ccw_device *);
......
...@@ -1294,12 +1294,6 @@ tape_34xx_online(struct ccw_device *cdev) ...@@ -1294,12 +1294,6 @@ tape_34xx_online(struct ccw_device *cdev)
); );
} }
static int
tape_34xx_offline(struct ccw_device *cdev)
{
return tape_generic_offline(cdev->dev.driver_data);
}
static struct ccw_driver tape_34xx_driver = { static struct ccw_driver tape_34xx_driver = {
.name = "tape_34xx", .name = "tape_34xx",
.owner = THIS_MODULE, .owner = THIS_MODULE,
...@@ -1307,7 +1301,7 @@ static struct ccw_driver tape_34xx_driver = { ...@@ -1307,7 +1301,7 @@ static struct ccw_driver tape_34xx_driver = {
.probe = tape_generic_probe, .probe = tape_generic_probe,
.remove = tape_generic_remove, .remove = tape_generic_remove,
.set_online = tape_34xx_online, .set_online = tape_34xx_online,
.set_offline = tape_34xx_offline, .set_offline = tape_generic_offline,
}; };
static int static int
......
...@@ -1707,19 +1707,13 @@ tape_3590_online(struct ccw_device *cdev) ...@@ -1707,19 +1707,13 @@ tape_3590_online(struct ccw_device *cdev)
&tape_discipline_3590); &tape_discipline_3590);
} }
static int
tape_3590_offline(struct ccw_device *cdev)
{
return tape_generic_offline(cdev->dev.driver_data);
}
static struct ccw_driver tape_3590_driver = { static struct ccw_driver tape_3590_driver = {
.name = "tape_3590", .name = "tape_3590",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.ids = tape_3590_ids, .ids = tape_3590_ids,
.probe = tape_generic_probe, .probe = tape_generic_probe,
.remove = tape_generic_remove, .remove = tape_generic_remove,
.set_offline = tape_3590_offline, .set_offline = tape_generic_offline,
.set_online = tape_3590_online, .set_online = tape_3590_online,
}; };
......
...@@ -387,8 +387,11 @@ tape_cleanup_device(struct tape_device *device) ...@@ -387,8 +387,11 @@ tape_cleanup_device(struct tape_device *device)
* Manual offline is only allowed while the drive is not in use. * Manual offline is only allowed while the drive is not in use.
*/ */
int int
tape_generic_offline(struct tape_device *device) tape_generic_offline(struct ccw_device *cdev)
{ {
struct tape_device *device;
device = cdev->dev.driver_data;
if (!device) { if (!device) {
return -ENODEV; return -ENODEV;
} }
......
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
#ifndef arch_irq_stat #ifndef arch_irq_stat
#define arch_irq_stat() 0 #define arch_irq_stat() 0
#endif #endif
#ifndef arch_idle_time
#define arch_idle_time(cpu) 0
#endif
static int show_stat(struct seq_file *p, void *v) static int show_stat(struct seq_file *p, void *v)
{ {
...@@ -40,6 +43,7 @@ static int show_stat(struct seq_file *p, void *v) ...@@ -40,6 +43,7 @@ static int show_stat(struct seq_file *p, void *v)
nice = cputime64_add(nice, kstat_cpu(i).cpustat.nice); nice = cputime64_add(nice, kstat_cpu(i).cpustat.nice);
system = cputime64_add(system, kstat_cpu(i).cpustat.system); system = cputime64_add(system, kstat_cpu(i).cpustat.system);
idle = cputime64_add(idle, kstat_cpu(i).cpustat.idle); idle = cputime64_add(idle, kstat_cpu(i).cpustat.idle);
idle = cputime64_add(idle, arch_idle_time(i));
iowait = cputime64_add(iowait, kstat_cpu(i).cpustat.iowait); iowait = cputime64_add(iowait, kstat_cpu(i).cpustat.iowait);
irq = cputime64_add(irq, kstat_cpu(i).cpustat.irq); irq = cputime64_add(irq, kstat_cpu(i).cpustat.irq);
softirq = cputime64_add(softirq, kstat_cpu(i).cpustat.softirq); softirq = cputime64_add(softirq, kstat_cpu(i).cpustat.softirq);
...@@ -69,6 +73,7 @@ static int show_stat(struct seq_file *p, void *v) ...@@ -69,6 +73,7 @@ static int show_stat(struct seq_file *p, void *v)
nice = kstat_cpu(i).cpustat.nice; nice = kstat_cpu(i).cpustat.nice;
system = kstat_cpu(i).cpustat.system; system = kstat_cpu(i).cpustat.system;
idle = kstat_cpu(i).cpustat.idle; idle = kstat_cpu(i).cpustat.idle;
idle = cputime64_add(idle, arch_idle_time(i));
iowait = kstat_cpu(i).cpustat.iowait; iowait = kstat_cpu(i).cpustat.iowait;
irq = kstat_cpu(i).cpustat.irq; irq = kstat_cpu(i).cpustat.irq;
softirq = kstat_cpu(i).cpustat.softirq; softirq = kstat_cpu(i).cpustat.softirq;
......
...@@ -440,7 +440,7 @@ config LOCKDEP ...@@ -440,7 +440,7 @@ config LOCKDEP
bool bool
depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
select STACKTRACE select STACKTRACE
select FRAME_POINTER if !X86 && !MIPS && !PPC && !ARM_UNWIND select FRAME_POINTER if !X86 && !MIPS && !PPC && !ARM_UNWIND && !S390
select KALLSYMS select KALLSYMS
select KALLSYMS_ALL select KALLSYMS_ALL
...@@ -620,7 +620,7 @@ config ARCH_WANT_FRAME_POINTERS ...@@ -620,7 +620,7 @@ config ARCH_WANT_FRAME_POINTERS
config FRAME_POINTER config FRAME_POINTER
bool "Compile the kernel with frame pointers" bool "Compile the kernel with frame pointers"
depends on DEBUG_KERNEL && \ depends on DEBUG_KERNEL && \
(CRIS || M68K || M68KNOMMU || FRV || UML || S390 || \ (CRIS || M68K || M68KNOMMU || FRV || UML || \
AVR32 || SUPERH || BLACKFIN || MN10300) || \ AVR32 || SUPERH || BLACKFIN || MN10300) || \
ARCH_WANT_FRAME_POINTERS ARCH_WANT_FRAME_POINTERS
default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
...@@ -809,13 +809,13 @@ config FAULT_INJECTION_STACKTRACE_FILTER ...@@ -809,13 +809,13 @@ config FAULT_INJECTION_STACKTRACE_FILTER
depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
depends on !X86_64 depends on !X86_64
select STACKTRACE select STACKTRACE
select FRAME_POINTER if !PPC select FRAME_POINTER if !PPC && !S390
help help
Provide stacktrace filter for fault-injection capabilities Provide stacktrace filter for fault-injection capabilities
config LATENCYTOP config LATENCYTOP
bool "Latency measuring infrastructure" bool "Latency measuring infrastructure"
select FRAME_POINTER if !MIPS && !PPC select FRAME_POINTER if !MIPS && !PPC && !S390
select KALLSYMS select KALLSYMS
select KALLSYMS_ALL select KALLSYMS_ALL
select STACKTRACE select STACKTRACE
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册