aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/s390/appldata/appldata.h2
-rw-r--r--arch/s390/appldata/appldata_base.c132
-rw-r--r--arch/s390/appldata/appldata_mem.c4
-rw-r--r--arch/s390/appldata/appldata_net_sum.c4
-rw-r--r--arch/s390/appldata/appldata_os.c4
-rw-r--r--arch/s390/crypto/aes_s390.c2
-rw-r--r--arch/s390/crypto/crypt_s390.h2
-rw-r--r--arch/s390/crypto/des_s390.c2
-rw-r--r--arch/s390/crypto/prng.c2
-rw-r--r--arch/s390/crypto/sha1_s390.c2
-rw-r--r--arch/s390/crypto/sha256_s390.c2
-rw-r--r--arch/s390/hypfs/hypfs.h3
-rw-r--r--arch/s390/hypfs/hypfs_dbfs.c2
-rw-r--r--arch/s390/hypfs/hypfs_diag.c1
-rw-r--r--arch/s390/hypfs/hypfs_vm.c2
-rw-r--r--arch/s390/hypfs/inode.c2
-rw-r--r--arch/s390/include/asm/airq.h4
-rw-r--r--arch/s390/include/asm/appldata.h4
-rw-r--r--arch/s390/include/asm/atomic.h8
-rw-r--r--arch/s390/include/asm/bitops.h10
-rw-r--r--arch/s390/include/asm/bugs.h4
-rw-r--r--arch/s390/include/asm/cache.h4
-rw-r--r--arch/s390/include/asm/ccwdev.h2
-rw-r--r--arch/s390/include/asm/ccwgroup.h2
-rw-r--r--arch/s390/include/asm/checksum.h10
-rw-r--r--arch/s390/include/asm/chpid.h2
-rw-r--r--arch/s390/include/asm/chsc.h2
-rw-r--r--arch/s390/include/asm/cio.h3
-rw-r--r--arch/s390/include/asm/cpcmd.h4
-rw-r--r--arch/s390/include/asm/cpu.h2
-rw-r--r--arch/s390/include/asm/cputime.h12
-rw-r--r--arch/s390/include/asm/crw.h2
-rw-r--r--arch/s390/include/asm/current.h4
-rw-r--r--arch/s390/include/asm/dasd.h3
-rw-r--r--arch/s390/include/asm/debug.h4
-rw-r--r--arch/s390/include/asm/delay.h4
-rw-r--r--arch/s390/include/asm/dma.h2
-rw-r--r--arch/s390/include/asm/ebcdic.h3
-rw-r--r--arch/s390/include/asm/elf.h2
-rw-r--r--arch/s390/include/asm/errno.h2
-rw-r--r--arch/s390/include/asm/etr.h2
-rw-r--r--arch/s390/include/asm/extmem.h4
-rw-r--r--arch/s390/include/asm/hardirq.h4
-rw-r--r--arch/s390/include/asm/idals.h5
-rw-r--r--arch/s390/include/asm/io.h4
-rw-r--r--arch/s390/include/asm/irqflags.h2
-rw-r--r--arch/s390/include/asm/kexec.h4
-rw-r--r--arch/s390/include/asm/kprobes.h2
-rw-r--r--arch/s390/include/asm/kvm.h2
-rw-r--r--arch/s390/include/asm/kvm_host.h4
-rw-r--r--arch/s390/include/asm/kvm_para.h2
-rw-r--r--arch/s390/include/asm/kvm_virtio.h2
-rw-r--r--arch/s390/include/asm/lowcore.h9
-rw-r--r--arch/s390/include/asm/mathemu.h3
-rw-r--r--arch/s390/include/asm/mman.h2
-rw-r--r--arch/s390/include/asm/mmu_context.h2
-rw-r--r--arch/s390/include/asm/monwriter.h4
-rw-r--r--arch/s390/include/asm/nmi.h2
-rw-r--r--arch/s390/include/asm/page.h4
-rw-r--r--arch/s390/include/asm/pgalloc.h4
-rw-r--r--arch/s390/include/asm/pgtable.h4
-rw-r--r--arch/s390/include/asm/posix_types.h2
-rw-r--r--arch/s390/include/asm/processor.h14
-rw-r--r--arch/s390/include/asm/ptrace.h4
-rw-r--r--arch/s390/include/asm/qdio.h4
-rw-r--r--arch/s390/include/asm/qeth.h4
-rw-r--r--arch/s390/include/asm/reset.h2
-rw-r--r--arch/s390/include/asm/resource.h2
-rw-r--r--arch/s390/include/asm/rwsem.h4
-rw-r--r--arch/s390/include/asm/sclp.h2
-rw-r--r--arch/s390/include/asm/scsw.h2
-rw-r--r--arch/s390/include/asm/setup.h4
-rw-r--r--arch/s390/include/asm/shmparam.h2
-rw-r--r--arch/s390/include/asm/sigcontext.h4
-rw-r--r--arch/s390/include/asm/siginfo.h2
-rw-r--r--arch/s390/include/asm/signal.h2
-rw-r--r--arch/s390/include/asm/sigp.h31
-rw-r--r--arch/s390/include/asm/smp.h2
-rw-r--r--arch/s390/include/asm/socket.h2
-rw-r--r--arch/s390/include/asm/spinlock.h4
-rw-r--r--arch/s390/include/asm/stat.h2
-rw-r--r--arch/s390/include/asm/statfs.h2
-rw-r--r--arch/s390/include/asm/string.h4
-rw-r--r--arch/s390/include/asm/swab.h4
-rw-r--r--arch/s390/include/asm/sysinfo.h2
-rw-r--r--arch/s390/include/asm/tape390.h3
-rw-r--r--arch/s390/include/asm/termios.h2
-rw-r--r--arch/s390/include/asm/thread_info.h4
-rw-r--r--arch/s390/include/asm/timer.h51
-rw-r--r--arch/s390/include/asm/timex.h4
-rw-r--r--arch/s390/include/asm/types.h2
-rw-r--r--arch/s390/include/asm/uaccess.h6
-rw-r--r--arch/s390/include/asm/ucontext.h2
-rw-r--r--arch/s390/include/asm/unistd.h2
-rw-r--r--arch/s390/include/asm/user.h2
-rw-r--r--arch/s390/include/asm/vtimer.h33
-rw-r--r--arch/s390/include/asm/vtoc.h4
-rw-r--r--arch/s390/include/asm/zcrypt.h2
-rw-r--r--arch/s390/kernel/asm-offsets.c12
-rw-r--r--arch/s390/kernel/base.S5
-rw-r--r--arch/s390/kernel/bitmap.c2
-rw-r--r--arch/s390/kernel/compat_exec_domain.c2
-rw-r--r--arch/s390/kernel/compat_linux.c4
-rw-r--r--arch/s390/kernel/compat_signal.c4
-rw-r--r--arch/s390/kernel/compat_wrapper.S3
-rw-r--r--arch/s390/kernel/cpcmd.c4
-rw-r--r--arch/s390/kernel/crash.c4
-rw-r--r--arch/s390/kernel/debug.c1
-rw-r--r--arch/s390/kernel/dis.c3
-rw-r--r--arch/s390/kernel/early.c2
-rw-r--r--arch/s390/kernel/ebcdic.c3
-rw-r--r--arch/s390/kernel/entry.S49
-rw-r--r--arch/s390/kernel/entry.h4
-rw-r--r--arch/s390/kernel/entry64.S52
-rw-r--r--arch/s390/kernel/head.S2
-rw-r--r--arch/s390/kernel/head31.S4
-rw-r--r--arch/s390/kernel/head64.S4
-rw-r--r--arch/s390/kernel/head_kdump.S6
-rw-r--r--arch/s390/kernel/ipl.c16
-rw-r--r--arch/s390/kernel/irq.c2
-rw-r--r--arch/s390/kernel/kprobes.c2
-rw-r--r--arch/s390/kernel/lgr.c15
-rw-r--r--arch/s390/kernel/machine_kexec.c4
-rw-r--r--arch/s390/kernel/mcount.S2
-rw-r--r--arch/s390/kernel/mcount64.S2
-rw-r--r--arch/s390/kernel/module.c5
-rw-r--r--arch/s390/kernel/nmi.c2
-rw-r--r--arch/s390/kernel/os_info.c2
-rw-r--r--arch/s390/kernel/process.c4
-rw-r--r--arch/s390/kernel/processor.c6
-rw-r--r--arch/s390/kernel/ptrace.c2
-rw-r--r--arch/s390/kernel/reipl.S7
-rw-r--r--arch/s390/kernel/reipl64.S5
-rw-r--r--arch/s390/kernel/relocate_kernel.S7
-rw-r--r--arch/s390/kernel/relocate_kernel64.S9
-rw-r--r--arch/s390/kernel/sclp.S2
-rw-r--r--arch/s390/kernel/setup.c17
-rw-r--r--arch/s390/kernel/signal.c4
-rw-r--r--arch/s390/kernel/smp.c114
-rw-r--r--arch/s390/kernel/stacktrace.c4
-rw-r--r--arch/s390/kernel/swsusp_asm64.S13
-rw-r--r--arch/s390/kernel/sys_s390.c4
-rw-r--r--arch/s390/kernel/time.c3
-rw-r--r--arch/s390/kernel/topology.c2
-rw-r--r--arch/s390/kernel/traps.c4
-rw-r--r--arch/s390/kernel/vtime.c370
-rw-r--r--arch/s390/kvm/diag.c4
-rw-r--r--arch/s390/kvm/gaccess.h4
-rw-r--r--arch/s390/kvm/intercept.c4
-rw-r--r--arch/s390/kvm/interrupt.c2
-rw-r--r--arch/s390/kvm/kvm-s390.c4
-rw-r--r--arch/s390/kvm/kvm-s390.h4
-rw-r--r--arch/s390/kvm/priv.c2
-rw-r--r--arch/s390/kvm/sigp.c50
-rw-r--r--arch/s390/lib/delay.c4
-rw-r--r--arch/s390/lib/div64.c4
-rw-r--r--arch/s390/lib/spinlock.c3
-rw-r--r--arch/s390/lib/string.c3
-rw-r--r--arch/s390/lib/uaccess.h2
-rw-r--r--arch/s390/lib/uaccess_mvcos.c4
-rw-r--r--arch/s390/lib/uaccess_pt.c2
-rw-r--r--arch/s390/lib/uaccess_std.c4
-rw-r--r--arch/s390/math-emu/math.c4
-rw-r--r--arch/s390/mm/cmm.c2
-rw-r--r--arch/s390/mm/extmem.c3
-rw-r--r--arch/s390/mm/fault.c4
-rw-r--r--arch/s390/mm/hugetlbpage.c2
-rw-r--r--arch/s390/mm/init.c4
-rw-r--r--arch/s390/mm/mmap.c2
-rw-r--r--arch/s390/mm/pgtable.c2
-rw-r--r--arch/s390/mm/vmem.c2
-rw-r--r--arch/s390/oprofile/backtrace.c6
-rw-r--r--arch/s390/oprofile/hwsampler.c4
-rw-r--r--arch/s390/oprofile/init.c6
-rw-r--r--arch/s390/oprofile/op_counter.h6
-rw-r--r--drivers/s390/block/dasd.c35
-rw-r--r--drivers/s390/block/dasd_3990_erp.c3
-rw-r--r--drivers/s390/block/dasd_alias.c2
-rw-r--r--drivers/s390/block/dasd_devmap.c3
-rw-r--r--drivers/s390/block/dasd_diag.c3
-rw-r--r--drivers/s390/block/dasd_diag.h3
-rw-r--r--drivers/s390/block/dasd_eckd.c2
-rw-r--r--drivers/s390/block/dasd_eckd.h3
-rw-r--r--drivers/s390/block/dasd_eer.c2
-rw-r--r--drivers/s390/block/dasd_erp.c3
-rw-r--r--drivers/s390/block/dasd_fba.c1
-rw-r--r--drivers/s390/block/dasd_fba.h3
-rw-r--r--drivers/s390/block/dasd_genhd.c3
-rw-r--r--drivers/s390/block/dasd_int.h2
-rw-r--r--drivers/s390/block/dasd_ioctl.c3
-rw-r--r--drivers/s390/block/dasd_proc.c3
-rw-r--r--drivers/s390/char/ctrlchar.c3
-rw-r--r--drivers/s390/char/ctrlchar.h3
-rw-r--r--drivers/s390/char/keyboard.c3
-rw-r--r--drivers/s390/char/keyboard.h3
-rw-r--r--drivers/s390/char/sclp_config.c2
-rw-r--r--drivers/s390/char/sclp_cpi.c1
-rw-r--r--drivers/s390/char/sclp_cpi_sys.c1
-rw-r--r--drivers/s390/char/sclp_cpi_sys.h1
-rw-r--r--drivers/s390/char/sclp_ocf.c1
-rw-r--r--drivers/s390/char/sclp_quiesce.c3
-rw-r--r--drivers/s390/char/sclp_sdias.c2
-rw-r--r--drivers/s390/char/sclp_tty.c3
-rw-r--r--drivers/s390/char/sclp_tty.h3
-rw-r--r--drivers/s390/char/tape.h1
-rw-r--r--drivers/s390/char/tape_34xx.c1
-rw-r--r--drivers/s390/char/tape_3590.c1
-rw-r--r--drivers/s390/char/tape_3590.h3
-rw-r--r--drivers/s390/char/tape_char.c3
-rw-r--r--drivers/s390/char/tape_class.c5
-rw-r--r--drivers/s390/char/tape_class.h3
-rw-r--r--drivers/s390/char/tape_core.c1
-rw-r--r--drivers/s390/char/tape_proc.c3
-rw-r--r--drivers/s390/char/tape_std.c3
-rw-r--r--drivers/s390/char/tape_std.h3
-rw-r--r--drivers/s390/char/tty3270.c3
-rw-r--r--drivers/s390/char/tty3270.h2
-rw-r--r--drivers/s390/char/vmcp.c2
-rw-r--r--drivers/s390/char/vmcp.h2
-rw-r--r--drivers/s390/char/vmlogrdr.c45
-rw-r--r--drivers/s390/char/vmwatchdog.c2
-rw-r--r--drivers/s390/char/zcore.c2
-rw-r--r--drivers/s390/cio/airq.c3
-rw-r--r--drivers/s390/cio/blacklist.c4
-rw-r--r--drivers/s390/cio/chp.c16
-rw-r--r--drivers/s390/cio/chp.h4
-rw-r--r--drivers/s390/cio/chsc.c3
-rw-r--r--drivers/s390/cio/cio.c3
-rw-r--r--drivers/s390/cio/cmf.c6
-rw-r--r--drivers/s390/cio/crw.c2
-rw-r--r--drivers/s390/cio/device.c3
-rw-r--r--drivers/s390/cio/device_fsm.c3
-rw-r--r--drivers/s390/cio/device_id.c2
-rw-r--r--drivers/s390/cio/device_pgid.c2
-rw-r--r--drivers/s390/cio/device_status.c5
-rw-r--r--drivers/s390/cio/idset.c2
-rw-r--r--drivers/s390/cio/idset.h2
-rw-r--r--drivers/s390/cio/qdio.h4
-rw-r--r--drivers/s390/cio/qdio_debug.c4
-rw-r--r--drivers/s390/cio/qdio_debug.h2
-rw-r--r--drivers/s390/cio/qdio_main.c4
-rw-r--r--drivers/s390/cio/qdio_setup.c4
-rw-r--r--drivers/s390/cio/qdio_thinint.c4
-rw-r--r--drivers/s390/crypto/ap_bus.c12
-rw-r--r--drivers/s390/crypto/ap_bus.h4
-rw-r--r--drivers/s390/crypto/zcrypt_api.c6
-rw-r--r--drivers/s390/crypto/zcrypt_api.h4
-rw-r--r--drivers/s390/crypto/zcrypt_cca_key.h4
-rw-r--r--drivers/s390/crypto/zcrypt_cex2a.c6
-rw-r--r--drivers/s390/crypto/zcrypt_cex2a.h4
-rw-r--r--drivers/s390/crypto/zcrypt_error.h4
-rw-r--r--drivers/s390/crypto/zcrypt_pcica.c6
-rw-r--r--drivers/s390/crypto/zcrypt_pcica.h4
-rw-r--r--drivers/s390/crypto/zcrypt_pcicc.c6
-rw-r--r--drivers/s390/crypto/zcrypt_pcicc.h4
-rw-r--r--drivers/s390/crypto/zcrypt_pcixcc.c6
-rw-r--r--drivers/s390/crypto/zcrypt_pcixcc.h4
-rw-r--r--drivers/s390/kvm/kvm_virtio.c2
-rw-r--r--drivers/s390/net/claw.c3
-rw-r--r--drivers/s390/net/ctcm_dbug.c2
-rw-r--r--drivers/s390/net/ctcm_dbug.h2
-rw-r--r--drivers/s390/net/ctcm_fsms.c2
-rw-r--r--drivers/s390/net/ctcm_fsms.h2
-rw-r--r--drivers/s390/net/ctcm_main.c2
-rw-r--r--drivers/s390/net/ctcm_main.h2
-rw-r--r--drivers/s390/net/ctcm_mpc.c2
-rw-r--r--drivers/s390/net/ctcm_mpc.h2
-rw-r--r--drivers/s390/net/ctcm_sysfs.c2
-rw-r--r--drivers/s390/net/qeth_core.h2
-rw-r--r--drivers/s390/net/qeth_core_main.c2
-rw-r--r--drivers/s390/net/qeth_core_mpc.c2
-rw-r--r--drivers/s390/net/qeth_core_mpc.h2
-rw-r--r--drivers/s390/net/qeth_core_sys.c2
-rw-r--r--drivers/s390/net/qeth_l2_main.c2
-rw-r--r--drivers/s390/net/qeth_l3.h2
-rw-r--r--drivers/s390/net/qeth_l3_main.c2
-rw-r--r--drivers/s390/net/qeth_l3_sys.c2
-rw-r--r--drivers/s390/net/smsgiucv.h2
-rw-r--r--drivers/s390/scsi/zfcp_aux.c2
-rw-r--r--drivers/s390/scsi/zfcp_ccw.c2
-rw-r--r--drivers/s390/scsi/zfcp_cfdc.c2
-rw-r--r--drivers/s390/scsi/zfcp_dbf.c2
-rw-r--r--drivers/s390/scsi/zfcp_def.h2
-rw-r--r--drivers/s390/scsi/zfcp_erp.c2
-rw-r--r--drivers/s390/scsi/zfcp_ext.h2
-rw-r--r--drivers/s390/scsi/zfcp_fc.c2
-rw-r--r--drivers/s390/scsi/zfcp_fc.h2
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c2
-rw-r--r--drivers/s390/scsi/zfcp_fsf.h2
-rw-r--r--drivers/s390/scsi/zfcp_qdio.c2
-rw-r--r--drivers/s390/scsi/zfcp_qdio.h2
-rw-r--r--drivers/s390/scsi/zfcp_reqlist.h2
-rw-r--r--drivers/s390/scsi/zfcp_scsi.c2
-rw-r--r--drivers/s390/scsi/zfcp_sysfs.c2
-rw-r--r--drivers/s390/scsi/zfcp_unit.c2
295 files changed, 678 insertions, 1251 deletions
diff --git a/arch/s390/appldata/appldata.h b/arch/s390/appldata/appldata.h
index f0b23fc759ba..4a67f2b5f6aa 100644
--- a/arch/s390/appldata/appldata.h
+++ b/arch/s390/appldata/appldata.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/s390/appldata/appldata.h
3 *
4 * Definitions and interface for Linux - z/VM Monitor Stream. 2 * Definitions and interface for Linux - z/VM Monitor Stream.
5 * 3 *
6 * Copyright IBM Corp. 2003, 2008 4 * Copyright IBM Corp. 2003, 2008
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c
index 24bff4f1cc52..bae0f402bf2a 100644
--- a/arch/s390/appldata/appldata_base.c
+++ b/arch/s390/appldata/appldata_base.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/s390/appldata/appldata_base.c
3 *
4 * Base infrastructure for Linux-z/VM Monitor Stream, Stage 1. 2 * Base infrastructure for Linux-z/VM Monitor Stream, Stage 1.
5 * Exports appldata_register_ops() and appldata_unregister_ops() for the 3 * Exports appldata_register_ops() and appldata_unregister_ops() for the
6 * data gathering modules. 4 * data gathering modules.
@@ -29,7 +27,7 @@
29#include <linux/suspend.h> 27#include <linux/suspend.h>
30#include <linux/platform_device.h> 28#include <linux/platform_device.h>
31#include <asm/appldata.h> 29#include <asm/appldata.h>
32#include <asm/timer.h> 30#include <asm/vtimer.h>
33#include <asm/uaccess.h> 31#include <asm/uaccess.h>
34#include <asm/io.h> 32#include <asm/io.h>
35#include <asm/smp.h> 33#include <asm/smp.h>
@@ -84,8 +82,7 @@ static struct ctl_table appldata_dir_table[] = {
84/* 82/*
85 * Timer 83 * Timer
86 */ 84 */
87static DEFINE_PER_CPU(struct vtimer_list, appldata_timer); 85static struct vtimer_list appldata_timer;
88static atomic_t appldata_expire_count = ATOMIC_INIT(0);
89 86
90static DEFINE_SPINLOCK(appldata_timer_lock); 87static DEFINE_SPINLOCK(appldata_timer_lock);
91static int appldata_interval = APPLDATA_CPU_INTERVAL; 88static int appldata_interval = APPLDATA_CPU_INTERVAL;
@@ -115,10 +112,7 @@ static LIST_HEAD(appldata_ops_list);
115 */ 112 */
116static void appldata_timer_function(unsigned long data) 113static void appldata_timer_function(unsigned long data)
117{ 114{
118 if (atomic_dec_and_test(&appldata_expire_count)) { 115 queue_work(appldata_wq, (struct work_struct *) data);
119 atomic_set(&appldata_expire_count, num_online_cpus());
120 queue_work(appldata_wq, (struct work_struct *) data);
121 }
122} 116}
123 117
124/* 118/*
@@ -131,7 +125,6 @@ static void appldata_work_fn(struct work_struct *work)
131 struct list_head *lh; 125 struct list_head *lh;
132 struct appldata_ops *ops; 126 struct appldata_ops *ops;
133 127
134 get_online_cpus();
135 mutex_lock(&appldata_ops_mutex); 128 mutex_lock(&appldata_ops_mutex);
136 list_for_each(lh, &appldata_ops_list) { 129 list_for_each(lh, &appldata_ops_list) {
137 ops = list_entry(lh, struct appldata_ops, list); 130 ops = list_entry(lh, struct appldata_ops, list);
@@ -140,7 +133,6 @@ static void appldata_work_fn(struct work_struct *work)
140 } 133 }
141 } 134 }
142 mutex_unlock(&appldata_ops_mutex); 135 mutex_unlock(&appldata_ops_mutex);
143 put_online_cpus();
144} 136}
145 137
146/* 138/*
@@ -168,20 +160,6 @@ int appldata_diag(char record_nr, u16 function, unsigned long buffer,
168 160
169/****************************** /proc stuff **********************************/ 161/****************************** /proc stuff **********************************/
170 162
171/*
172 * appldata_mod_vtimer_wrap()
173 *
174 * wrapper function for mod_virt_timer(), because smp_call_function_single()
175 * accepts only one parameter.
176 */
177static void __appldata_mod_vtimer_wrap(void *p) {
178 struct {
179 struct vtimer_list *timer;
180 u64 expires;
181 } *args = p;
182 mod_virt_timer_periodic(args->timer, args->expires);
183}
184
185#define APPLDATA_ADD_TIMER 0 163#define APPLDATA_ADD_TIMER 0
186#define APPLDATA_DEL_TIMER 1 164#define APPLDATA_DEL_TIMER 1
187#define APPLDATA_MOD_TIMER 2 165#define APPLDATA_MOD_TIMER 2
@@ -192,49 +170,28 @@ static void __appldata_mod_vtimer_wrap(void *p) {
192 * Add, delete or modify virtual timers on all online cpus. 170 * Add, delete or modify virtual timers on all online cpus.
193 * The caller needs to get the appldata_timer_lock spinlock. 171 * The caller needs to get the appldata_timer_lock spinlock.
194 */ 172 */
195static void 173static void __appldata_vtimer_setup(int cmd)
196__appldata_vtimer_setup(int cmd)
197{ 174{
198 u64 per_cpu_interval; 175 u64 timer_interval = (u64) appldata_interval * 1000 * TOD_MICRO;
199 int i;
200 176
201 switch (cmd) { 177 switch (cmd) {
202 case APPLDATA_ADD_TIMER: 178 case APPLDATA_ADD_TIMER:
203 if (appldata_timer_active) 179 if (appldata_timer_active)
204 break; 180 break;
205 per_cpu_interval = (u64) (appldata_interval*1000 / 181 appldata_timer.expires = timer_interval;
206 num_online_cpus()) * TOD_MICRO; 182 add_virt_timer_periodic(&appldata_timer);
207 for_each_online_cpu(i) {
208 per_cpu(appldata_timer, i).expires = per_cpu_interval;
209 smp_call_function_single(i, add_virt_timer_periodic,
210 &per_cpu(appldata_timer, i),
211 1);
212 }
213 appldata_timer_active = 1; 183 appldata_timer_active = 1;
214 break; 184 break;
215 case APPLDATA_DEL_TIMER: 185 case APPLDATA_DEL_TIMER:
216 for_each_online_cpu(i) 186 del_virt_timer(&appldata_timer);
217 del_virt_timer(&per_cpu(appldata_timer, i));
218 if (!appldata_timer_active) 187 if (!appldata_timer_active)
219 break; 188 break;
220 appldata_timer_active = 0; 189 appldata_timer_active = 0;
221 atomic_set(&appldata_expire_count, num_online_cpus());
222 break; 190 break;
223 case APPLDATA_MOD_TIMER: 191 case APPLDATA_MOD_TIMER:
224 per_cpu_interval = (u64) (appldata_interval*1000 /
225 num_online_cpus()) * TOD_MICRO;
226 if (!appldata_timer_active) 192 if (!appldata_timer_active)
227 break; 193 break;
228 for_each_online_cpu(i) { 194 mod_virt_timer_periodic(&appldata_timer, timer_interval);
229 struct {
230 struct vtimer_list *timer;
231 u64 expires;
232 } args;
233 args.timer = &per_cpu(appldata_timer, i);
234 args.expires = per_cpu_interval;
235 smp_call_function_single(i, __appldata_mod_vtimer_wrap,
236 &args, 1);
237 }
238 } 195 }
239} 196}
240 197
@@ -265,14 +222,12 @@ appldata_timer_handler(ctl_table *ctl, int write,
265 len = *lenp; 222 len = *lenp;
266 if (copy_from_user(buf, buffer, len > sizeof(buf) ? sizeof(buf) : len)) 223 if (copy_from_user(buf, buffer, len > sizeof(buf) ? sizeof(buf) : len))
267 return -EFAULT; 224 return -EFAULT;
268 get_online_cpus();
269 spin_lock(&appldata_timer_lock); 225 spin_lock(&appldata_timer_lock);
270 if (buf[0] == '1') 226 if (buf[0] == '1')
271 __appldata_vtimer_setup(APPLDATA_ADD_TIMER); 227 __appldata_vtimer_setup(APPLDATA_ADD_TIMER);
272 else if (buf[0] == '0') 228 else if (buf[0] == '0')
273 __appldata_vtimer_setup(APPLDATA_DEL_TIMER); 229 __appldata_vtimer_setup(APPLDATA_DEL_TIMER);
274 spin_unlock(&appldata_timer_lock); 230 spin_unlock(&appldata_timer_lock);
275 put_online_cpus();
276out: 231out:
277 *lenp = len; 232 *lenp = len;
278 *ppos += len; 233 *ppos += len;
@@ -305,20 +260,17 @@ appldata_interval_handler(ctl_table *ctl, int write,
305 goto out; 260 goto out;
306 } 261 }
307 len = *lenp; 262 len = *lenp;
308 if (copy_from_user(buf, buffer, len > sizeof(buf) ? sizeof(buf) : len)) { 263 if (copy_from_user(buf, buffer, len > sizeof(buf) ? sizeof(buf) : len))
309 return -EFAULT; 264 return -EFAULT;
310 }
311 interval = 0; 265 interval = 0;
312 sscanf(buf, "%i", &interval); 266 sscanf(buf, "%i", &interval);
313 if (interval <= 0) 267 if (interval <= 0)
314 return -EINVAL; 268 return -EINVAL;
315 269
316 get_online_cpus();
317 spin_lock(&appldata_timer_lock); 270 spin_lock(&appldata_timer_lock);
318 appldata_interval = interval; 271 appldata_interval = interval;
319 __appldata_vtimer_setup(APPLDATA_MOD_TIMER); 272 __appldata_vtimer_setup(APPLDATA_MOD_TIMER);
320 spin_unlock(&appldata_timer_lock); 273 spin_unlock(&appldata_timer_lock);
321 put_online_cpus();
322out: 274out:
323 *lenp = len; 275 *lenp = len;
324 *ppos += len; 276 *ppos += len;
@@ -485,14 +437,12 @@ static int appldata_freeze(struct device *dev)
485 int rc; 437 int rc;
486 struct list_head *lh; 438 struct list_head *lh;
487 439
488 get_online_cpus();
489 spin_lock(&appldata_timer_lock); 440 spin_lock(&appldata_timer_lock);
490 if (appldata_timer_active) { 441 if (appldata_timer_active) {
491 __appldata_vtimer_setup(APPLDATA_DEL_TIMER); 442 __appldata_vtimer_setup(APPLDATA_DEL_TIMER);
492 appldata_timer_suspended = 1; 443 appldata_timer_suspended = 1;
493 } 444 }
494 spin_unlock(&appldata_timer_lock); 445 spin_unlock(&appldata_timer_lock);
495 put_online_cpus();
496 446
497 mutex_lock(&appldata_ops_mutex); 447 mutex_lock(&appldata_ops_mutex);
498 list_for_each(lh, &appldata_ops_list) { 448 list_for_each(lh, &appldata_ops_list) {
@@ -516,14 +466,12 @@ static int appldata_restore(struct device *dev)
516 int rc; 466 int rc;
517 struct list_head *lh; 467 struct list_head *lh;
518 468
519 get_online_cpus();
520 spin_lock(&appldata_timer_lock); 469 spin_lock(&appldata_timer_lock);
521 if (appldata_timer_suspended) { 470 if (appldata_timer_suspended) {
522 __appldata_vtimer_setup(APPLDATA_ADD_TIMER); 471 __appldata_vtimer_setup(APPLDATA_ADD_TIMER);
523 appldata_timer_suspended = 0; 472 appldata_timer_suspended = 0;
524 } 473 }
525 spin_unlock(&appldata_timer_lock); 474 spin_unlock(&appldata_timer_lock);
526 put_online_cpus();
527 475
528 mutex_lock(&appldata_ops_mutex); 476 mutex_lock(&appldata_ops_mutex);
529 list_for_each(lh, &appldata_ops_list) { 477 list_for_each(lh, &appldata_ops_list) {
@@ -567,53 +515,6 @@ static struct platform_driver appldata_pdrv = {
567 515
568/******************************* init / exit *********************************/ 516/******************************* init / exit *********************************/
569 517
570static void __cpuinit appldata_online_cpu(int cpu)
571{
572 init_virt_timer(&per_cpu(appldata_timer, cpu));
573 per_cpu(appldata_timer, cpu).function = appldata_timer_function;
574 per_cpu(appldata_timer, cpu).data = (unsigned long)
575 &appldata_work;
576 atomic_inc(&appldata_expire_count);
577 spin_lock(&appldata_timer_lock);
578 __appldata_vtimer_setup(APPLDATA_MOD_TIMER);
579 spin_unlock(&appldata_timer_lock);
580}
581
582static void __cpuinit appldata_offline_cpu(int cpu)
583{
584 del_virt_timer(&per_cpu(appldata_timer, cpu));
585 if (atomic_dec_and_test(&appldata_expire_count)) {
586 atomic_set(&appldata_expire_count, num_online_cpus());
587 queue_work(appldata_wq, &appldata_work);
588 }
589 spin_lock(&appldata_timer_lock);
590 __appldata_vtimer_setup(APPLDATA_MOD_TIMER);
591 spin_unlock(&appldata_timer_lock);
592}
593
594static int __cpuinit appldata_cpu_notify(struct notifier_block *self,
595 unsigned long action,
596 void *hcpu)
597{
598 switch (action) {
599 case CPU_ONLINE:
600 case CPU_ONLINE_FROZEN:
601 appldata_online_cpu((long) hcpu);
602 break;
603 case CPU_DEAD:
604 case CPU_DEAD_FROZEN:
605 appldata_offline_cpu((long) hcpu);
606 break;
607 default:
608 break;
609 }
610 return NOTIFY_OK;
611}
612
613static struct notifier_block __cpuinitdata appldata_nb = {
614 .notifier_call = appldata_cpu_notify,
615};
616
617/* 518/*
618 * appldata_init() 519 * appldata_init()
619 * 520 *
@@ -621,7 +522,10 @@ static struct notifier_block __cpuinitdata appldata_nb = {
621 */ 522 */
622static int __init appldata_init(void) 523static int __init appldata_init(void)
623{ 524{
624 int i, rc; 525 int rc;
526
527 appldata_timer.function = appldata_timer_function;
528 appldata_timer.data = (unsigned long) &appldata_work;
625 529
626 rc = platform_driver_register(&appldata_pdrv); 530 rc = platform_driver_register(&appldata_pdrv);
627 if (rc) 531 if (rc)
@@ -639,14 +543,6 @@ static int __init appldata_init(void)
639 goto out_device; 543 goto out_device;
640 } 544 }
641 545
642 get_online_cpus();
643 for_each_online_cpu(i)
644 appldata_online_cpu(i);
645 put_online_cpus();
646
647 /* Register cpu hotplug notifier */
648 register_hotcpu_notifier(&appldata_nb);
649
650 appldata_sysctl_header = register_sysctl_table(appldata_dir_table); 546 appldata_sysctl_header = register_sysctl_table(appldata_dir_table);
651 return 0; 547 return 0;
652 548
diff --git a/arch/s390/appldata/appldata_mem.c b/arch/s390/appldata/appldata_mem.c
index f7d3dc555bdb..02d9a1cf5057 100644
--- a/arch/s390/appldata/appldata_mem.c
+++ b/arch/s390/appldata/appldata_mem.c
@@ -1,10 +1,8 @@
1/* 1/*
2 * arch/s390/appldata/appldata_mem.c
3 *
4 * Data gathering module for Linux-VM Monitor Stream, Stage 1. 2 * Data gathering module for Linux-VM Monitor Stream, Stage 1.
5 * Collects data related to memory management. 3 * Collects data related to memory management.
6 * 4 *
7 * Copyright (C) 2003,2006 IBM Corporation, IBM Deutschland Entwicklung GmbH. 5 * Copyright IBM Corp. 2003, 2006
8 * 6 *
9 * Author: Gerald Schaefer <gerald.schaefer@de.ibm.com> 7 * Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
10 */ 8 */
diff --git a/arch/s390/appldata/appldata_net_sum.c b/arch/s390/appldata/appldata_net_sum.c
index 5da7c562a90b..1370e358d49a 100644
--- a/arch/s390/appldata/appldata_net_sum.c
+++ b/arch/s390/appldata/appldata_net_sum.c
@@ -1,11 +1,9 @@
1/* 1/*
2 * arch/s390/appldata/appldata_net_sum.c
3 *
4 * Data gathering module for Linux-VM Monitor Stream, Stage 1. 2 * Data gathering module for Linux-VM Monitor Stream, Stage 1.
5 * Collects accumulated network statistics (Packets received/transmitted, 3 * Collects accumulated network statistics (Packets received/transmitted,
6 * dropped, errors, ...). 4 * dropped, errors, ...).
7 * 5 *
8 * Copyright (C) 2003,2006 IBM Corporation, IBM Deutschland Entwicklung GmbH. 6 * Copyright IBM Corp. 2003, 2006
9 * 7 *
10 * Author: Gerald Schaefer <gerald.schaefer@de.ibm.com> 8 * Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
11 */ 9 */
diff --git a/arch/s390/appldata/appldata_os.c b/arch/s390/appldata/appldata_os.c
index 4de031d6b76c..87521ba682e5 100644
--- a/arch/s390/appldata/appldata_os.c
+++ b/arch/s390/appldata/appldata_os.c
@@ -1,10 +1,8 @@
1/* 1/*
2 * arch/s390/appldata/appldata_os.c
3 *
4 * Data gathering module for Linux-VM Monitor Stream, Stage 1. 2 * Data gathering module for Linux-VM Monitor Stream, Stage 1.
5 * Collects misc. OS related data (CPU utilization, running processes). 3 * Collects misc. OS related data (CPU utilization, running processes).
6 * 4 *
7 * Copyright (C) 2003,2006 IBM Corporation, IBM Deutschland Entwicklung GmbH. 5 * Copyright IBM Corp. 2003, 2006
8 * 6 *
9 * Author: Gerald Schaefer <gerald.schaefer@de.ibm.com> 7 * Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
10 */ 8 */
diff --git a/arch/s390/crypto/aes_s390.c b/arch/s390/crypto/aes_s390.c
index a9ce135893f8..e402a9dd4eda 100644
--- a/arch/s390/crypto/aes_s390.c
+++ b/arch/s390/crypto/aes_s390.c
@@ -4,7 +4,7 @@
4 * s390 implementation of the AES Cipher Algorithm. 4 * s390 implementation of the AES Cipher Algorithm.
5 * 5 *
6 * s390 Version: 6 * s390 Version:
7 * Copyright IBM Corp. 2005,2007 7 * Copyright IBM Corp. 2005, 2007
8 * Author(s): Jan Glauber (jang@de.ibm.com) 8 * Author(s): Jan Glauber (jang@de.ibm.com)
9 * Sebastian Siewior (sebastian@breakpoint.cc> SW-Fallback 9 * Sebastian Siewior (sebastian@breakpoint.cc> SW-Fallback
10 * 10 *
diff --git a/arch/s390/crypto/crypt_s390.h b/arch/s390/crypto/crypt_s390.h
index 9178db6db0a5..6c5cc6da7111 100644
--- a/arch/s390/crypto/crypt_s390.h
+++ b/arch/s390/crypto/crypt_s390.h
@@ -3,7 +3,7 @@
3 * 3 *
4 * Support for s390 cryptographic instructions. 4 * Support for s390 cryptographic instructions.
5 * 5 *
6 * Copyright IBM Corp. 2003,2007 6 * Copyright IBM Corp. 2003, 2007
7 * Author(s): Thomas Spatzier 7 * Author(s): Thomas Spatzier
8 * Jan Glauber (jan.glauber@de.ibm.com) 8 * Jan Glauber (jan.glauber@de.ibm.com)
9 * 9 *
diff --git a/arch/s390/crypto/des_s390.c b/arch/s390/crypto/des_s390.c
index a52bfd124d86..1eaa371ca3ee 100644
--- a/arch/s390/crypto/des_s390.c
+++ b/arch/s390/crypto/des_s390.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * s390 implementation of the DES Cipher Algorithm. 4 * s390 implementation of the DES Cipher Algorithm.
5 * 5 *
6 * Copyright IBM Corp. 2003,2011 6 * Copyright IBM Corp. 2003, 2011
7 * Author(s): Thomas Spatzier 7 * Author(s): Thomas Spatzier
8 * Jan Glauber (jan.glauber@de.ibm.com) 8 * Jan Glauber (jan.glauber@de.ibm.com)
9 * 9 *
diff --git a/arch/s390/crypto/prng.c b/arch/s390/crypto/prng.c
index 0808fbf0f7d3..94a35a4c1b48 100644
--- a/arch/s390/crypto/prng.c
+++ b/arch/s390/crypto/prng.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 2006,2007 2 * Copyright IBM Corp. 2006, 2007
3 * Author(s): Jan Glauber <jan.glauber@de.ibm.com> 3 * Author(s): Jan Glauber <jan.glauber@de.ibm.com>
4 * Driver for the s390 pseudo random number generator 4 * Driver for the s390 pseudo random number generator
5 */ 5 */
diff --git a/arch/s390/crypto/sha1_s390.c b/arch/s390/crypto/sha1_s390.c
index e9868c6e0a08..a1b3a9dc9d8a 100644
--- a/arch/s390/crypto/sha1_s390.c
+++ b/arch/s390/crypto/sha1_s390.c
@@ -8,7 +8,7 @@
8 * implementation written by Steve Reid. 8 * implementation written by Steve Reid.
9 * 9 *
10 * s390 Version: 10 * s390 Version:
11 * Copyright IBM Corp. 2003,2007 11 * Copyright IBM Corp. 2003, 2007
12 * Author(s): Thomas Spatzier 12 * Author(s): Thomas Spatzier
13 * Jan Glauber (jan.glauber@de.ibm.com) 13 * Jan Glauber (jan.glauber@de.ibm.com)
14 * 14 *
diff --git a/arch/s390/crypto/sha256_s390.c b/arch/s390/crypto/sha256_s390.c
index 0317a3547cb9..9b853809a492 100644
--- a/arch/s390/crypto/sha256_s390.c
+++ b/arch/s390/crypto/sha256_s390.c
@@ -4,7 +4,7 @@
4 * s390 implementation of the SHA256 and SHA224 Secure Hash Algorithm. 4 * s390 implementation of the SHA256 and SHA224 Secure Hash Algorithm.
5 * 5 *
6 * s390 Version: 6 * s390 Version:
7 * Copyright IBM Corp. 2005,2011 7 * Copyright IBM Corp. 2005, 2011
8 * Author(s): Jan Glauber (jang@de.ibm.com) 8 * Author(s): Jan Glauber (jang@de.ibm.com)
9 * 9 *
10 * This program is free software; you can redistribute it and/or modify it 10 * This program is free software; you can redistribute it and/or modify it
diff --git a/arch/s390/hypfs/hypfs.h b/arch/s390/hypfs/hypfs.h
index d9df5a060a83..f41e0ef7fdf9 100644
--- a/arch/s390/hypfs/hypfs.h
+++ b/arch/s390/hypfs/hypfs.h
@@ -1,8 +1,7 @@
1/* 1/*
2 * arch/s390/hypfs/hypfs.h
3 * Hypervisor filesystem for Linux on s390. 2 * Hypervisor filesystem for Linux on s390.
4 * 3 *
5 * Copyright (C) IBM Corp. 2006 4 * Copyright IBM Corp. 2006
6 * Author(s): Michael Holzheu <holzheu@de.ibm.com> 5 * Author(s): Michael Holzheu <holzheu@de.ibm.com>
7 */ 6 */
8 7
diff --git a/arch/s390/hypfs/hypfs_dbfs.c b/arch/s390/hypfs/hypfs_dbfs.c
index b478013b7fec..13e76dabbe8b 100644
--- a/arch/s390/hypfs/hypfs_dbfs.c
+++ b/arch/s390/hypfs/hypfs_dbfs.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Hypervisor filesystem for Linux on s390 - debugfs interface 2 * Hypervisor filesystem for Linux on s390 - debugfs interface
3 * 3 *
4 * Copyright (C) IBM Corp. 2010 4 * Copyright IBM Corp. 2010
5 * Author(s): Michael Holzheu <holzheu@linux.vnet.ibm.com> 5 * Author(s): Michael Holzheu <holzheu@linux.vnet.ibm.com>
6 */ 6 */
7 7
diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c
index 74c8f5e76ce4..7fd3690b6760 100644
--- a/arch/s390/hypfs/hypfs_diag.c
+++ b/arch/s390/hypfs/hypfs_diag.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * arch/s390/hypfs/hypfs_diag.c
3 * Hypervisor filesystem for Linux on s390. Diag 204 and 224 2 * Hypervisor filesystem for Linux on s390. Diag 204 and 224
4 * implementation. 3 * implementation.
5 * 4 *
diff --git a/arch/s390/hypfs/hypfs_vm.c b/arch/s390/hypfs/hypfs_vm.c
index e54796002f61..4f6afaa8bd8f 100644
--- a/arch/s390/hypfs/hypfs_vm.c
+++ b/arch/s390/hypfs/hypfs_vm.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Hypervisor filesystem for Linux on s390. z/VM implementation. 2 * Hypervisor filesystem for Linux on s390. z/VM implementation.
3 * 3 *
4 * Copyright (C) IBM Corp. 2006 4 * Copyright IBM Corp. 2006
5 * Author(s): Michael Holzheu <holzheu@de.ibm.com> 5 * Author(s): Michael Holzheu <holzheu@de.ibm.com>
6 */ 6 */
7 7
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c
index 73dae8b9b77a..6767b437a103 100644
--- a/arch/s390/hypfs/inode.c
+++ b/arch/s390/hypfs/inode.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * arch/s390/hypfs/inode.c
3 * Hypervisor filesystem for Linux on s390. 2 * Hypervisor filesystem for Linux on s390.
4 * 3 *
5 * Copyright IBM Corp. 2006, 2008 4 * Copyright IBM Corp. 2006, 2008
@@ -103,6 +102,7 @@ static struct inode *hypfs_make_inode(struct super_block *sb, umode_t mode)
103 102
104 if (ret) { 103 if (ret) {
105 struct hypfs_sb_info *hypfs_info = sb->s_fs_info; 104 struct hypfs_sb_info *hypfs_info = sb->s_fs_info;
105 ret->i_ino = get_next_ino();
106 ret->i_mode = mode; 106 ret->i_mode = mode;
107 ret->i_uid = hypfs_info->uid; 107 ret->i_uid = hypfs_info->uid;
108 ret->i_gid = hypfs_info->gid; 108 ret->i_gid = hypfs_info->gid;
diff --git a/arch/s390/include/asm/airq.h b/arch/s390/include/asm/airq.h
index 1ac80d6b0588..9819891ed7a2 100644
--- a/arch/s390/include/asm/airq.h
+++ b/arch/s390/include/asm/airq.h
@@ -1,7 +1,5 @@
1/* 1/*
2 * include/asm-s390/airq.h 2 * Copyright IBM Corp. 2002, 2007
3 *
4 * Copyright IBM Corp. 2002,2007
5 * Author(s): Ingo Adlung <adlung@de.ibm.com> 3 * Author(s): Ingo Adlung <adlung@de.ibm.com>
6 * Cornelia Huck <cornelia.huck@de.ibm.com> 4 * Cornelia Huck <cornelia.huck@de.ibm.com>
7 * Arnd Bergmann <arndb@de.ibm.com> 5 * Arnd Bergmann <arndb@de.ibm.com>
diff --git a/arch/s390/include/asm/appldata.h b/arch/s390/include/asm/appldata.h
index 79283dac8281..f328294faeae 100644
--- a/arch/s390/include/asm/appldata.h
+++ b/arch/s390/include/asm/appldata.h
@@ -1,7 +1,5 @@
1/* 1/*
2 * include/asm-s390/appldata.h 2 * Copyright IBM Corp. 2006
3 *
4 * Copyright (C) IBM Corp. 2006
5 * 3 *
6 * Author(s): Melissa Howland <melissah@us.ibm.com> 4 * Author(s): Melissa Howland <melissah@us.ibm.com>
7 */ 5 */
diff --git a/arch/s390/include/asm/atomic.h b/arch/s390/include/asm/atomic.h
index 748347baecb8..c797832daa5f 100644
--- a/arch/s390/include/asm/atomic.h
+++ b/arch/s390/include/asm/atomic.h
@@ -1,8 +1,5 @@
1#ifndef __ARCH_S390_ATOMIC__
2#define __ARCH_S390_ATOMIC__
3
4/* 1/*
5 * Copyright 1999,2009 IBM Corp. 2 * Copyright IBM Corp. 1999, 2009
6 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>, 3 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>,
7 * Denis Joseph Barrow, 4 * Denis Joseph Barrow,
8 * Arnd Bergmann <arndb@de.ibm.com>, 5 * Arnd Bergmann <arndb@de.ibm.com>,
@@ -13,6 +10,9 @@
13 * 10 *
14 */ 11 */
15 12
13#ifndef __ARCH_S390_ATOMIC__
14#define __ARCH_S390_ATOMIC__
15
16#include <linux/compiler.h> 16#include <linux/compiler.h>
17#include <linux/types.h> 17#include <linux/types.h>
18#include <asm/cmpxchg.h> 18#include <asm/cmpxchg.h>
diff --git a/arch/s390/include/asm/bitops.h b/arch/s390/include/asm/bitops.h
index a6ff5a83e227..6f573890fb28 100644
--- a/arch/s390/include/asm/bitops.h
+++ b/arch/s390/include/asm/bitops.h
@@ -1,11 +1,6 @@
1#ifndef _S390_BITOPS_H
2#define _S390_BITOPS_H
3
4/* 1/*
5 * include/asm-s390/bitops.h
6 *
7 * S390 version 2 * S390 version
8 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
9 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
10 * 5 *
11 * Derived from "include/asm-i386/bitops.h" 6 * Derived from "include/asm-i386/bitops.h"
@@ -13,6 +8,9 @@
13 * 8 *
14 */ 9 */
15 10
11#ifndef _S390_BITOPS_H
12#define _S390_BITOPS_H
13
16#ifndef _LINUX_BITOPS_H 14#ifndef _LINUX_BITOPS_H
17#error only <linux/bitops.h> can be included directly 15#error only <linux/bitops.h> can be included directly
18#endif 16#endif
diff --git a/arch/s390/include/asm/bugs.h b/arch/s390/include/asm/bugs.h
index 011f1e6a2a6c..0f5bd894f4dc 100644
--- a/arch/s390/include/asm/bugs.h
+++ b/arch/s390/include/asm/bugs.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/bugs.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
7 * 5 *
8 * Derived from "include/asm-i386/bugs.h" 6 * Derived from "include/asm-i386/bugs.h"
diff --git a/arch/s390/include/asm/cache.h b/arch/s390/include/asm/cache.h
index 2a30d5ac0667..4d7ccac5fd1d 100644
--- a/arch/s390/include/asm/cache.h
+++ b/arch/s390/include/asm/cache.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/cache.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * 4 *
7 * Derived from "include/asm-i386/cache.h" 5 * Derived from "include/asm-i386/cache.h"
8 * Copyright (C) 1992, Linus Torvalds 6 * Copyright (C) 1992, Linus Torvalds
diff --git a/arch/s390/include/asm/ccwdev.h b/arch/s390/include/asm/ccwdev.h
index 9381c92cc779..1cb4bb3f32d9 100644
--- a/arch/s390/include/asm/ccwdev.h
+++ b/arch/s390/include/asm/ccwdev.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 2002, 2009 2 * Copyright IBM Corp. 2002, 2009
3 * 3 *
4 * Author(s): Arnd Bergmann <arndb@de.ibm.com> 4 * Author(s): Arnd Bergmann <arndb@de.ibm.com>
5 * 5 *
diff --git a/arch/s390/include/asm/ccwgroup.h b/arch/s390/include/asm/ccwgroup.h
index f2ef34f6d6e5..01a905eb11e0 100644
--- a/arch/s390/include/asm/ccwgroup.h
+++ b/arch/s390/include/asm/ccwgroup.h
@@ -6,14 +6,12 @@ struct ccw_driver;
6 6
7/** 7/**
8 * struct ccwgroup_device - ccw group device 8 * struct ccwgroup_device - ccw group device
9 * @creator_id: unique number of the driver
10 * @state: online/offline state 9 * @state: online/offline state
11 * @count: number of attached slave devices 10 * @count: number of attached slave devices
12 * @dev: embedded device structure 11 * @dev: embedded device structure
13 * @cdev: variable number of slave devices, allocated as needed 12 * @cdev: variable number of slave devices, allocated as needed
14 */ 13 */
15struct ccwgroup_device { 14struct ccwgroup_device {
16 unsigned long creator_id;
17 enum { 15 enum {
18 CCWGROUP_OFFLINE, 16 CCWGROUP_OFFLINE,
19 CCWGROUP_ONLINE, 17 CCWGROUP_ONLINE,
diff --git a/arch/s390/include/asm/checksum.h b/arch/s390/include/asm/checksum.h
index 6c00f6800a34..4f57a4f3909a 100644
--- a/arch/s390/include/asm/checksum.h
+++ b/arch/s390/include/asm/checksum.h
@@ -1,18 +1,16 @@
1#ifndef _S390_CHECKSUM_H
2#define _S390_CHECKSUM_H
3
4/* 1/*
5 * include/asm-s390/checksum.h
6 * S390 fast network checksum routines 2 * S390 fast network checksum routines
7 * see also arch/S390/lib/checksum.c
8 * 3 *
9 * S390 version 4 * S390 version
10 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 5 * Copyright IBM Corp. 1999
11 * Author(s): Ulrich Hild (first version) 6 * Author(s): Ulrich Hild (first version)
12 * Martin Schwidefsky (heavily optimized CKSM version) 7 * Martin Schwidefsky (heavily optimized CKSM version)
13 * D.J. Barrow (third attempt) 8 * D.J. Barrow (third attempt)
14 */ 9 */
15 10
11#ifndef _S390_CHECKSUM_H
12#define _S390_CHECKSUM_H
13
16#include <asm/uaccess.h> 14#include <asm/uaccess.h>
17 15
18/* 16/*
diff --git a/arch/s390/include/asm/chpid.h b/arch/s390/include/asm/chpid.h
index 8e88e2221771..e5bde9f9291f 100644
--- a/arch/s390/include/asm/chpid.h
+++ b/arch/s390/include/asm/chpid.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/cio/chpid.h
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com> 3 * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
6 */ 4 */
diff --git a/arch/s390/include/asm/chsc.h b/arch/s390/include/asm/chsc.h
index 4943654ed7fd..bf115b49f444 100644
--- a/arch/s390/include/asm/chsc.h
+++ b/arch/s390/include/asm/chsc.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * ioctl interface for /dev/chsc 2 * ioctl interface for /dev/chsc
3 * 3 *
4 * Copyright 2008 IBM Corp. 4 * Copyright IBM Corp. 2008
5 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> 5 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
6 */ 6 */
7 7
diff --git a/arch/s390/include/asm/cio.h b/arch/s390/include/asm/cio.h
index 4c8d4d5b8bd2..77043aa44d67 100644
--- a/arch/s390/include/asm/cio.h
+++ b/arch/s390/include/asm/cio.h
@@ -1,7 +1,4 @@
1/* 1/*
2 * include/asm-s390/cio.h
3 * include/asm-s390x/cio.h
4 *
5 * Common interface for I/O on S/390 2 * Common interface for I/O on S/390
6 */ 3 */
7#ifndef _ASM_S390_CIO_H_ 4#ifndef _ASM_S390_CIO_H_
diff --git a/arch/s390/include/asm/cpcmd.h b/arch/s390/include/asm/cpcmd.h
index 48a9eab16429..3dfadb5d648f 100644
--- a/arch/s390/include/asm/cpcmd.h
+++ b/arch/s390/include/asm/cpcmd.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * arch/s390/kernel/cpcmd.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
7 * Christian Borntraeger (cborntra@de.ibm.com), 5 * Christian Borntraeger (cborntra@de.ibm.com),
8 */ 6 */
diff --git a/arch/s390/include/asm/cpu.h b/arch/s390/include/asm/cpu.h
index e0b69540216f..f5a8e2fcde0c 100644
--- a/arch/s390/include/asm/cpu.h
+++ b/arch/s390/include/asm/cpu.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 2000,2009 2 * Copyright IBM Corp. 2000, 2009
3 * Author(s): Hartmut Penner <hp@de.ibm.com>, 3 * Author(s): Hartmut Penner <hp@de.ibm.com>,
4 * Martin Schwidefsky <schwidefsky@de.ibm.com>, 4 * Martin Schwidefsky <schwidefsky@de.ibm.com>,
5 * Christian Ehrhardt <ehrhardt@de.ibm.com>, 5 * Christian Ehrhardt <ehrhardt@de.ibm.com>,
diff --git a/arch/s390/include/asm/cputime.h b/arch/s390/include/asm/cputime.h
index 718374de9c7f..8709bdef233c 100644
--- a/arch/s390/include/asm/cputime.h
+++ b/arch/s390/include/asm/cputime.h
@@ -1,7 +1,5 @@
1/* 1/*
2 * include/asm-s390/cputime.h 2 * Copyright IBM Corp. 2004
3 *
4 * (C) Copyright IBM Corp. 2004
5 * 3 *
6 * Author: Martin Schwidefsky <schwidefsky@de.ibm.com> 4 * Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
7 */ 5 */
@@ -167,12 +165,14 @@ static inline clock_t cputime64_to_clock_t(cputime64_t cputime)
167} 165}
168 166
169struct s390_idle_data { 167struct s390_idle_data {
168 int nohz_delay;
170 unsigned int sequence; 169 unsigned int sequence;
171 unsigned long long idle_count; 170 unsigned long long idle_count;
172 unsigned long long idle_enter;
173 unsigned long long idle_exit;
174 unsigned long long idle_time; 171 unsigned long long idle_time;
175 int nohz_delay; 172 unsigned long long clock_idle_enter;
173 unsigned long long clock_idle_exit;
174 unsigned long long timer_idle_enter;
175 unsigned long long timer_idle_exit;
176}; 176};
177 177
178DECLARE_PER_CPU(struct s390_idle_data, s390_idle); 178DECLARE_PER_CPU(struct s390_idle_data, s390_idle);
diff --git a/arch/s390/include/asm/crw.h b/arch/s390/include/asm/crw.h
index 749a97e61bea..7c31d3e25cd1 100644
--- a/arch/s390/include/asm/crw.h
+++ b/arch/s390/include/asm/crw.h
@@ -1,6 +1,6 @@
1/* 1/*
2 * Data definitions for channel report processing 2 * Data definitions for channel report processing
3 * Copyright IBM Corp. 2000,2009 3 * Copyright IBM Corp. 2000, 2009
4 * Author(s): Ingo Adlung <adlung@de.ibm.com>, 4 * Author(s): Ingo Adlung <adlung@de.ibm.com>,
5 * Martin Schwidefsky <schwidefsky@de.ibm.com>, 5 * Martin Schwidefsky <schwidefsky@de.ibm.com>,
6 * Cornelia Huck <cornelia.huck@de.ibm.com>, 6 * Cornelia Huck <cornelia.huck@de.ibm.com>,
diff --git a/arch/s390/include/asm/current.h b/arch/s390/include/asm/current.h
index 7a68084ec2f0..b80941f30df5 100644
--- a/arch/s390/include/asm/current.h
+++ b/arch/s390/include/asm/current.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/current.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
7 * 5 *
8 * Derived from "include/asm-i386/current.h" 6 * Derived from "include/asm-i386/current.h"
diff --git a/arch/s390/include/asm/dasd.h b/arch/s390/include/asm/dasd.h
index 0be28efe5b66..38eca3ba40e2 100644
--- a/arch/s390/include/asm/dasd.h
+++ b/arch/s390/include/asm/dasd.h
@@ -1,8 +1,7 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd.c
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Bugreports.to..: <Linux390@de.ibm.com> 3 * Bugreports.to..: <Linux390@de.ibm.com>
5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 4 * Copyright IBM Corp. 1999, 2000
6 * EMC Symmetrix ioctl Copyright EMC Corporation, 2008 5 * EMC Symmetrix ioctl Copyright EMC Corporation, 2008
7 * Author.........: Nigel Hislop <hislop_nigel@emc.com> 6 * Author.........: Nigel Hislop <hislop_nigel@emc.com>
8 * 7 *
diff --git a/arch/s390/include/asm/debug.h b/arch/s390/include/asm/debug.h
index 8a8245ed14d2..f39677e6ccde 100644
--- a/arch/s390/include/asm/debug.h
+++ b/arch/s390/include/asm/debug.h
@@ -1,9 +1,7 @@
1/* 1/*
2 * include/asm-s390/debug.h
3 * S/390 debug facility 2 * S/390 debug facility
4 * 3 *
5 * Copyright (C) 1999, 2000 IBM Deutschland Entwicklung GmbH, 4 * Copyright IBM Corp. 1999, 2000
6 * IBM Corporation
7 */ 5 */
8 6
9#ifndef DEBUG_H 7#ifndef DEBUG_H
diff --git a/arch/s390/include/asm/delay.h b/arch/s390/include/asm/delay.h
index 0e3b35f96be1..3f6e4095f471 100644
--- a/arch/s390/include/asm/delay.h
+++ b/arch/s390/include/asm/delay.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/delay.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
7 * 5 *
8 * Derived from "include/asm-i386/delay.h" 6 * Derived from "include/asm-i386/delay.h"
diff --git a/arch/s390/include/asm/dma.h b/arch/s390/include/asm/dma.h
index 7425c6af6cd4..6fb6de4f15b0 100644
--- a/arch/s390/include/asm/dma.h
+++ b/arch/s390/include/asm/dma.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/dma.h
3 *
4 * S390 version 2 * S390 version
5 */ 3 */
6 4
diff --git a/arch/s390/include/asm/ebcdic.h b/arch/s390/include/asm/ebcdic.h
index 7f6f641d32f4..c5befc5a3bf5 100644
--- a/arch/s390/include/asm/ebcdic.h
+++ b/arch/s390/include/asm/ebcdic.h
@@ -1,9 +1,8 @@
1/* 1/*
2 * include/asm-s390/ebcdic.h
3 * EBCDIC -> ASCII, ASCII -> EBCDIC conversion routines. 2 * EBCDIC -> ASCII, ASCII -> EBCDIC conversion routines.
4 * 3 *
5 * S390 version 4 * S390 version
6 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 5 * Copyright IBM Corp. 1999
7 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> 6 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
8 */ 7 */
9 8
diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h
index 06151e6a3098..32e8449640fa 100644
--- a/arch/s390/include/asm/elf.h
+++ b/arch/s390/include/asm/elf.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/elf.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/elf.h" 4 * Derived from "include/asm-i386/elf.h"
diff --git a/arch/s390/include/asm/errno.h b/arch/s390/include/asm/errno.h
index e41d5b37c4d6..395e97d8005e 100644
--- a/arch/s390/include/asm/errno.h
+++ b/arch/s390/include/asm/errno.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/errno.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 */ 4 */
diff --git a/arch/s390/include/asm/etr.h b/arch/s390/include/asm/etr.h
index 538e1b36a726..a24b03b9fb64 100644
--- a/arch/s390/include/asm/etr.h
+++ b/arch/s390/include/asm/etr.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/etr.h
3 *
4 * Copyright IBM Corp. 2006 2 * Copyright IBM Corp. 2006
5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 3 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
6 */ 4 */
diff --git a/arch/s390/include/asm/extmem.h b/arch/s390/include/asm/extmem.h
index 33837d756184..6276002d76ba 100644
--- a/arch/s390/include/asm/extmem.h
+++ b/arch/s390/include/asm/extmem.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390x/extmem.h
3 *
4 * definitions for external memory segment support 2 * definitions for external memory segment support
5 * Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 2003
6 */ 4 */
7 5
8#ifndef _ASM_S390X_DCSS_H 6#ifndef _ASM_S390X_DCSS_H
diff --git a/arch/s390/include/asm/hardirq.h b/arch/s390/include/asm/hardirq.h
index 510ba9ef4248..0c82ba86e997 100644
--- a/arch/s390/include/asm/hardirq.h
+++ b/arch/s390/include/asm/hardirq.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/hardirq.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999, 2000
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
7 * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) 5 * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
8 * 6 *
diff --git a/arch/s390/include/asm/idals.h b/arch/s390/include/asm/idals.h
index aef0dde340d1..ea5a6e45fd93 100644
--- a/arch/s390/include/asm/idals.h
+++ b/arch/s390/include/asm/idals.h
@@ -1,10 +1,9 @@
1/* 1/*
2 * File...........: linux/include/asm-s390x/idals.h
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Martin Schwidefsky <schwidefsky@de.ibm.com> 3 * Martin Schwidefsky <schwidefsky@de.ibm.com>
5 * Bugreports.to..: <Linux390@de.ibm.com> 4 * Bugreports.to..: <Linux390@de.ibm.com>
6 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000a 5 * Copyright IBM Corp. 2000
7 6 *
8 * History of changes 7 * History of changes
9 * 07/24/00 new file 8 * 07/24/00 new file
10 * 05/04/02 code restructuring. 9 * 05/04/02 code restructuring.
diff --git a/arch/s390/include/asm/io.h b/arch/s390/include/asm/io.h
index f81a0975cbea..559e921a6bba 100644
--- a/arch/s390/include/asm/io.h
+++ b/arch/s390/include/asm/io.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/io.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
7 * 5 *
8 * Derived from "include/asm-i386/io.h" 6 * Derived from "include/asm-i386/io.h"
diff --git a/arch/s390/include/asm/irqflags.h b/arch/s390/include/asm/irqflags.h
index 38fdf451febb..37b9091ab8c0 100644
--- a/arch/s390/include/asm/irqflags.h
+++ b/arch/s390/include/asm/irqflags.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 2006,2010 2 * Copyright IBM Corp. 2006, 2010
3 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> 3 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
4 */ 4 */
5 5
diff --git a/arch/s390/include/asm/kexec.h b/arch/s390/include/asm/kexec.h
index f4f38826eebb..694bcd6bd927 100644
--- a/arch/s390/include/asm/kexec.h
+++ b/arch/s390/include/asm/kexec.h
@@ -1,7 +1,5 @@
1/* 1/*
2 * include/asm-s390/kexec.h 2 * Copyright IBM Corp. 2005
3 *
4 * (C) Copyright IBM Corp. 2005
5 * 3 *
6 * Author(s): Rolf Adelsberger <adelsberger@de.ibm.com> 4 * Author(s): Rolf Adelsberger <adelsberger@de.ibm.com>
7 * 5 *
diff --git a/arch/s390/include/asm/kprobes.h b/arch/s390/include/asm/kprobes.h
index a231a9439c4b..dcf6948a875c 100644
--- a/arch/s390/include/asm/kprobes.h
+++ b/arch/s390/include/asm/kprobes.h
@@ -17,7 +17,7 @@
17 * along with this program; if not, write to the Free Software 17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 * 19 *
20 * Copyright (C) IBM Corporation, 2002, 2006 20 * Copyright IBM Corp. 2002, 2006
21 * 21 *
22 * 2002-Oct Created by Vamsi Krishna S <vamsi_krishna@in.ibm.com> Kernel 22 * 2002-Oct Created by Vamsi Krishna S <vamsi_krishna@in.ibm.com> Kernel
23 * Probes initial implementation ( includes suggestions from 23 * Probes initial implementation ( includes suggestions from
diff --git a/arch/s390/include/asm/kvm.h b/arch/s390/include/asm/kvm.h
index bdcbe0f8dd7b..d25da598ec62 100644
--- a/arch/s390/include/asm/kvm.h
+++ b/arch/s390/include/asm/kvm.h
@@ -1,7 +1,7 @@
1#ifndef __LINUX_KVM_S390_H 1#ifndef __LINUX_KVM_S390_H
2#define __LINUX_KVM_S390_H 2#define __LINUX_KVM_S390_H
3/* 3/*
4 * asm-s390/kvm.h - KVM s390 specific structures and definitions 4 * KVM s390 specific structures and definitions
5 * 5 *
6 * Copyright IBM Corp. 2008 6 * Copyright IBM Corp. 2008
7 * 7 *
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
index dd17537b9a9d..b7841546991f 100644
--- a/arch/s390/include/asm/kvm_host.h
+++ b/arch/s390/include/asm/kvm_host.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * asm-s390/kvm_host.h - definition for kernel virtual machines on s390 2 * definition for kernel virtual machines on s390
3 * 3 *
4 * Copyright IBM Corp. 2008,2009 4 * Copyright IBM Corp. 2008, 2009
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License (version 2 only) 7 * it under the terms of the GNU General Public License (version 2 only)
diff --git a/arch/s390/include/asm/kvm_para.h b/arch/s390/include/asm/kvm_para.h
index a98832961035..da44867de60f 100644
--- a/arch/s390/include/asm/kvm_para.h
+++ b/arch/s390/include/asm/kvm_para.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * asm-s390/kvm_para.h - definition for paravirtual devices on s390 2 * definition for paravirtual devices on s390
3 * 3 *
4 * Copyright IBM Corp. 2008 4 * Copyright IBM Corp. 2008
5 * 5 *
diff --git a/arch/s390/include/asm/kvm_virtio.h b/arch/s390/include/asm/kvm_virtio.h
index 72f614181eff..44a438ca9e72 100644
--- a/arch/s390/include/asm/kvm_virtio.h
+++ b/arch/s390/include/asm/kvm_virtio.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * kvm_virtio.h - definition for virtio for kvm on s390 2 * definition for virtio for kvm on s390
3 * 3 *
4 * Copyright IBM Corp. 2008 4 * Copyright IBM Corp. 2008
5 * 5 *
diff --git a/arch/s390/include/asm/lowcore.h b/arch/s390/include/asm/lowcore.h
index 47853debb3b9..aab5555bbbda 100644
--- a/arch/s390/include/asm/lowcore.h
+++ b/arch/s390/include/asm/lowcore.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 1999,2012 2 * Copyright IBM Corp. 1999, 2012
3 * Author(s): Hartmut Penner <hp@de.ibm.com>, 3 * Author(s): Hartmut Penner <hp@de.ibm.com>,
4 * Martin Schwidefsky <schwidefsky@de.ibm.com>, 4 * Martin Schwidefsky <schwidefsky@de.ibm.com>,
5 * Denis Joseph Barrow, 5 * Denis Joseph Barrow,
@@ -302,12 +302,7 @@ struct _lowcore {
302 */ 302 */
303 __u64 ipib; /* 0x0e00 */ 303 __u64 ipib; /* 0x0e00 */
304 __u32 ipib_checksum; /* 0x0e08 */ 304 __u32 ipib_checksum; /* 0x0e08 */
305 /* 305 __u64 vmcore_info; /* 0x0e0c */
306 * Because the vmcore_info pointer is not 8 byte aligned it never
307 * should not be accessed directly. For accessing the pointer, first
308 * copy it to a local pointer variable.
309 */
310 __u8 vmcore_info[8]; /* 0x0e0c */
311 __u8 pad_0x0e14[0x0e18-0x0e14]; /* 0x0e14 */ 306 __u8 pad_0x0e14[0x0e18-0x0e14]; /* 0x0e14 */
312 __u64 os_info; /* 0x0e18 */ 307 __u64 os_info; /* 0x0e18 */
313 __u8 pad_0x0e20[0x0f00-0x0e20]; /* 0x0e20 */ 308 __u8 pad_0x0e20[0x0f00-0x0e20]; /* 0x0e20 */
diff --git a/arch/s390/include/asm/mathemu.h b/arch/s390/include/asm/mathemu.h
index e8dd1ba8edb0..614dfaf47f71 100644
--- a/arch/s390/include/asm/mathemu.h
+++ b/arch/s390/include/asm/mathemu.h
@@ -1,9 +1,8 @@
1/* 1/*
2 * arch/s390/kernel/mathemu.h
3 * IEEE floating point emulation. 2 * IEEE floating point emulation.
4 * 3 *
5 * S390 version 4 * S390 version
6 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 5 * Copyright IBM Corp. 1999
7 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
8 */ 7 */
9 8
diff --git a/arch/s390/include/asm/mman.h b/arch/s390/include/asm/mman.h
index d49760e63506..abc1932ac4e1 100644
--- a/arch/s390/include/asm/mman.h
+++ b/arch/s390/include/asm/mman.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/mman.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/mman.h" 4 * Derived from "include/asm-i386/mman.h"
diff --git a/arch/s390/include/asm/mmu_context.h b/arch/s390/include/asm/mmu_context.h
index 69bdf72e95ec..5c63615f1349 100644
--- a/arch/s390/include/asm/mmu_context.h
+++ b/arch/s390/include/asm/mmu_context.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/mmu_context.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/mmu_context.h" 4 * Derived from "include/asm-i386/mmu_context.h"
diff --git a/arch/s390/include/asm/monwriter.h b/arch/s390/include/asm/monwriter.h
index f0cbf96c52e6..f845c8e2f861 100644
--- a/arch/s390/include/asm/monwriter.h
+++ b/arch/s390/include/asm/monwriter.h
@@ -1,7 +1,5 @@
1/* 1/*
2 * include/asm-s390/monwriter.h 2 * Copyright IBM Corp. 2006
3 *
4 * Copyright (C) IBM Corp. 2006
5 * Character device driver for writing z/VM APPLDATA monitor records 3 * Character device driver for writing z/VM APPLDATA monitor records
6 * Version 1.0 4 * Version 1.0
7 * Author(s): Melissa Howland <melissah@us.ibm.com> 5 * Author(s): Melissa Howland <melissah@us.ibm.com>
diff --git a/arch/s390/include/asm/nmi.h b/arch/s390/include/asm/nmi.h
index f4b60441adca..35f8ec185616 100644
--- a/arch/s390/include/asm/nmi.h
+++ b/arch/s390/include/asm/nmi.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * Machine check handler definitions 2 * Machine check handler definitions
3 * 3 *
4 * Copyright IBM Corp. 2000,2009 4 * Copyright IBM Corp. 2000, 2009
5 * Author(s): Ingo Adlung <adlung@de.ibm.com>, 5 * Author(s): Ingo Adlung <adlung@de.ibm.com>,
6 * Martin Schwidefsky <schwidefsky@de.ibm.com>, 6 * Martin Schwidefsky <schwidefsky@de.ibm.com>,
7 * Cornelia Huck <cornelia.huck@de.ibm.com>, 7 * Cornelia Huck <cornelia.huck@de.ibm.com>,
diff --git a/arch/s390/include/asm/page.h b/arch/s390/include/asm/page.h
index f7ec548c2b9d..27ab3c7c1e8b 100644
--- a/arch/s390/include/asm/page.h
+++ b/arch/s390/include/asm/page.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/page.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999, 2000
6 * Author(s): Hartmut Penner (hp@de.ibm.com) 4 * Author(s): Hartmut Penner (hp@de.ibm.com)
7 */ 5 */
8 6
diff --git a/arch/s390/include/asm/pgalloc.h b/arch/s390/include/asm/pgalloc.h
index 43078c194394..590c3219c634 100644
--- a/arch/s390/include/asm/pgalloc.h
+++ b/arch/s390/include/asm/pgalloc.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/pgalloc.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999, 2000
6 * Author(s): Hartmut Penner (hp@de.ibm.com) 4 * Author(s): Hartmut Penner (hp@de.ibm.com)
7 * Martin Schwidefsky (schwidefsky@de.ibm.com) 5 * Martin Schwidefsky (schwidefsky@de.ibm.com)
8 * 6 *
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index b3227415abda..6bd7d7483017 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/pgtable.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999, 2000
6 * Author(s): Hartmut Penner (hp@de.ibm.com) 4 * Author(s): Hartmut Penner (hp@de.ibm.com)
7 * Ulrich Weigand (weigand@de.ibm.com) 5 * Ulrich Weigand (weigand@de.ibm.com)
8 * Martin Schwidefsky (schwidefsky@de.ibm.com) 6 * Martin Schwidefsky (schwidefsky@de.ibm.com)
diff --git a/arch/s390/include/asm/posix_types.h b/arch/s390/include/asm/posix_types.h
index 7be104c0f192..7bcc14e395f0 100644
--- a/arch/s390/include/asm/posix_types.h
+++ b/arch/s390/include/asm/posix_types.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/posix_types.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 */ 4 */
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
index 20d0585cf905..c40fa91e38a8 100644
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/processor.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * Author(s): Hartmut Penner (hp@de.ibm.com), 4 * Author(s): Hartmut Penner (hp@de.ibm.com),
7 * Martin Schwidefsky (schwidefsky@de.ibm.com) 5 * Martin Schwidefsky (schwidefsky@de.ibm.com)
8 * 6 *
@@ -348,4 +346,14 @@ extern void (*s390_base_ext_handler_fn)(void);
348 ".previous\n" 346 ".previous\n"
349#endif 347#endif
350 348
349extern int memcpy_real(void *, void *, size_t);
350extern void memcpy_absolute(void *, void *, size_t);
351
352#define mem_assign_absolute(dest, val) { \
353 __typeof__(dest) __tmp = (val); \
354 \
355 BUILD_BUG_ON(sizeof(__tmp) != sizeof(val)); \
356 memcpy_absolute(&(dest), &__tmp, sizeof(__tmp)); \
357}
358
351#endif /* __ASM_S390_PROCESSOR_H */ 359#endif /* __ASM_S390_PROCESSOR_H */
diff --git a/arch/s390/include/asm/ptrace.h b/arch/s390/include/asm/ptrace.h
index aeb77f017985..d5f08ea566ed 100644
--- a/arch/s390/include/asm/ptrace.h
+++ b/arch/s390/include/asm/ptrace.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/ptrace.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999, 2000
6 * Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) 4 * Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
7 */ 5 */
8 6
diff --git a/arch/s390/include/asm/qdio.h b/arch/s390/include/asm/qdio.h
index f039d86adf67..57d0d7e794b1 100644
--- a/arch/s390/include/asm/qdio.h
+++ b/arch/s390/include/asm/qdio.h
@@ -1,7 +1,5 @@
1/* 1/*
2 * linux/include/asm-s390/qdio.h 2 * Copyright IBM Corp. 2000, 2008
3 *
4 * Copyright 2000,2008 IBM Corp.
5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com> 3 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>
6 * Jan Glauber <jang@linux.vnet.ibm.com> 4 * Jan Glauber <jang@linux.vnet.ibm.com>
7 * 5 *
diff --git a/arch/s390/include/asm/qeth.h b/arch/s390/include/asm/qeth.h
index 2c7c898c03e4..3a896cf52589 100644
--- a/arch/s390/include/asm/qeth.h
+++ b/arch/s390/include/asm/qeth.h
@@ -1,9 +1,7 @@
1/* 1/*
2 * include/asm-s390/qeth.h
3 *
4 * ioctl definitions for qeth driver 2 * ioctl definitions for qeth driver
5 * 3 *
6 * Copyright (C) 2004 IBM Corporation 4 * Copyright IBM Corp. 2004
7 * 5 *
8 * Author(s): Thomas Spatzier <tspat@de.ibm.com> 6 * Author(s): Thomas Spatzier <tspat@de.ibm.com>
9 * 7 *
diff --git a/arch/s390/include/asm/reset.h b/arch/s390/include/asm/reset.h
index 3d6ad4ad2a3f..804578587a7a 100644
--- a/arch/s390/include/asm/reset.h
+++ b/arch/s390/include/asm/reset.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/reset.h
3 *
4 * Copyright IBM Corp. 2006 2 * Copyright IBM Corp. 2006
5 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> 3 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
6 */ 4 */
diff --git a/arch/s390/include/asm/resource.h b/arch/s390/include/asm/resource.h
index 366c01de04f2..ec23d1c73c92 100644
--- a/arch/s390/include/asm/resource.h
+++ b/arch/s390/include/asm/resource.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/resource.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/resources.h" 4 * Derived from "include/asm-i386/resources.h"
diff --git a/arch/s390/include/asm/rwsem.h b/arch/s390/include/asm/rwsem.h
index 1ceee10264c3..487f9b64efb9 100644
--- a/arch/s390/include/asm/rwsem.h
+++ b/arch/s390/include/asm/rwsem.h
@@ -2,10 +2,8 @@
2#define _S390_RWSEM_H 2#define _S390_RWSEM_H
3 3
4/* 4/*
5 * include/asm-s390/rwsem.h
6 *
7 * S390 version 5 * S390 version
8 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, IBM Corporation 6 * Copyright IBM Corp. 2002
9 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 7 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
10 * 8 *
11 * Based on asm-alpha/semaphore.h and asm-i386/rwsem.h 9 * Based on asm-alpha/semaphore.h and asm-i386/rwsem.h
diff --git a/arch/s390/include/asm/sclp.h b/arch/s390/include/asm/sclp.h
index bf238c55740b..8685d1fb8b75 100644
--- a/arch/s390/include/asm/sclp.h
+++ b/arch/s390/include/asm/sclp.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/sclp.h
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> 3 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
6 */ 4 */
diff --git a/arch/s390/include/asm/scsw.h b/arch/s390/include/asm/scsw.h
index de389cb54d28..4071d00978cb 100644
--- a/arch/s390/include/asm/scsw.h
+++ b/arch/s390/include/asm/scsw.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * Helper functions for scsw access. 2 * Helper functions for scsw access.
3 * 3 *
4 * Copyright IBM Corp. 2008,2009 4 * Copyright IBM Corp. 2008, 2009
5 * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com> 5 * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
6 */ 6 */
7 7
diff --git a/arch/s390/include/asm/setup.h b/arch/s390/include/asm/setup.h
index 40eb2ff88e9e..57e80534375a 100644
--- a/arch/s390/include/asm/setup.h
+++ b/arch/s390/include/asm/setup.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/setup.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright IBM Corp. 1999,2010 3 * Copyright IBM Corp. 1999, 2010
6 */ 4 */
7 5
8#ifndef _ASM_S390_SETUP_H 6#ifndef _ASM_S390_SETUP_H
diff --git a/arch/s390/include/asm/shmparam.h b/arch/s390/include/asm/shmparam.h
index c2e0c0508e73..e985182738f8 100644
--- a/arch/s390/include/asm/shmparam.h
+++ b/arch/s390/include/asm/shmparam.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/shmparam.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/shmparam.h" 4 * Derived from "include/asm-i386/shmparam.h"
diff --git a/arch/s390/include/asm/sigcontext.h b/arch/s390/include/asm/sigcontext.h
index aeb6e0b13329..584787f6ce44 100644
--- a/arch/s390/include/asm/sigcontext.h
+++ b/arch/s390/include/asm/sigcontext.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/sigcontext.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999, 2000
6 */ 4 */
7 5
8#ifndef _ASM_S390_SIGCONTEXT_H 6#ifndef _ASM_S390_SIGCONTEXT_H
diff --git a/arch/s390/include/asm/siginfo.h b/arch/s390/include/asm/siginfo.h
index e0ff1ab054be..91fd3e4b70ce 100644
--- a/arch/s390/include/asm/siginfo.h
+++ b/arch/s390/include/asm/siginfo.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/siginfo.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/siginfo.h" 4 * Derived from "include/asm-i386/siginfo.h"
diff --git a/arch/s390/include/asm/signal.h b/arch/s390/include/asm/signal.h
index cdf5cb2fe03f..6d4d9d1faee9 100644
--- a/arch/s390/include/asm/signal.h
+++ b/arch/s390/include/asm/signal.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/signal.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/signal.h" 4 * Derived from "include/asm-i386/signal.h"
diff --git a/arch/s390/include/asm/sigp.h b/arch/s390/include/asm/sigp.h
new file mode 100644
index 000000000000..7306270b5b84
--- /dev/null
+++ b/arch/s390/include/asm/sigp.h
@@ -0,0 +1,31 @@
1#ifndef __S390_ASM_SIGP_H
2#define __S390_ASM_SIGP_H
3
4/* SIGP order codes */
5#define SIGP_SENSE 1
6#define SIGP_EXTERNAL_CALL 2
7#define SIGP_EMERGENCY_SIGNAL 3
8#define SIGP_STOP 5
9#define SIGP_RESTART 6
10#define SIGP_STOP_AND_STORE_STATUS 9
11#define SIGP_INITIAL_CPU_RESET 11
12#define SIGP_SET_PREFIX 13
13#define SIGP_STORE_STATUS_AT_ADDRESS 14
14#define SIGP_SET_ARCHITECTURE 18
15#define SIGP_SENSE_RUNNING 21
16
17/* SIGP condition codes */
18#define SIGP_CC_ORDER_CODE_ACCEPTED 0
19#define SIGP_CC_STATUS_STORED 1
20#define SIGP_CC_BUSY 2
21#define SIGP_CC_NOT_OPERATIONAL 3
22
23/* SIGP cpu status bits */
24
25#define SIGP_STATUS_CHECK_STOP 0x00000010UL
26#define SIGP_STATUS_STOPPED 0x00000040UL
27#define SIGP_STATUS_INVALID_PARAMETER 0x00000100UL
28#define SIGP_STATUS_INCORRECT_STATE 0x00000200UL
29#define SIGP_STATUS_NOT_RUNNING 0x00000400UL
30
31#endif /* __S390_ASM_SIGP_H */
diff --git a/arch/s390/include/asm/smp.h b/arch/s390/include/asm/smp.h
index 0b6f586c1383..a0a8340daafa 100644
--- a/arch/s390/include/asm/smp.h
+++ b/arch/s390/include/asm/smp.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 1999,2012 2 * Copyright IBM Corp. 1999, 2012
3 * Author(s): Denis Joseph Barrow, 3 * Author(s): Denis Joseph Barrow,
4 * Martin Schwidefsky <schwidefsky@de.ibm.com>, 4 * Martin Schwidefsky <schwidefsky@de.ibm.com>,
5 * Heiko Carstens <heiko.carstens@de.ibm.com>, 5 * Heiko Carstens <heiko.carstens@de.ibm.com>,
diff --git a/arch/s390/include/asm/socket.h b/arch/s390/include/asm/socket.h
index c91b720965c0..69718cd6d635 100644
--- a/arch/s390/include/asm/socket.h
+++ b/arch/s390/include/asm/socket.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/socket.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/socket.h" 4 * Derived from "include/asm-i386/socket.h"
diff --git a/arch/s390/include/asm/spinlock.h b/arch/s390/include/asm/spinlock.h
index fd94dfec8d08..701fe8c59e1f 100644
--- a/arch/s390/include/asm/spinlock.h
+++ b/arch/s390/include/asm/spinlock.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/spinlock.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
7 * 5 *
8 * Derived from "include/asm-i386/spinlock.h" 6 * Derived from "include/asm-i386/spinlock.h"
diff --git a/arch/s390/include/asm/stat.h b/arch/s390/include/asm/stat.h
index d92959eebb65..b4ca97d91466 100644
--- a/arch/s390/include/asm/stat.h
+++ b/arch/s390/include/asm/stat.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/stat.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/stat.h" 4 * Derived from "include/asm-i386/stat.h"
diff --git a/arch/s390/include/asm/statfs.h b/arch/s390/include/asm/statfs.h
index 3be7fbd406c8..5acca0a34c20 100644
--- a/arch/s390/include/asm/statfs.h
+++ b/arch/s390/include/asm/statfs.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/statfs.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/statfs.h" 4 * Derived from "include/asm-i386/statfs.h"
diff --git a/arch/s390/include/asm/string.h b/arch/s390/include/asm/string.h
index 8cc160c9e1cb..1bd1352fa3b5 100644
--- a/arch/s390/include/asm/string.h
+++ b/arch/s390/include/asm/string.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/string.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
7 */ 5 */
8 6
diff --git a/arch/s390/include/asm/swab.h b/arch/s390/include/asm/swab.h
index a3e4ebb32090..da3bfe5cc161 100644
--- a/arch/s390/include/asm/swab.h
+++ b/arch/s390/include/asm/swab.h
@@ -2,10 +2,8 @@
2#define _S390_SWAB_H 2#define _S390_SWAB_H
3 3
4/* 4/*
5 * include/asm-s390/swab.h
6 *
7 * S390 version 5 * S390 version
8 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 6 * Copyright IBM Corp. 1999
9 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 7 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
10 */ 8 */
11 9
diff --git a/arch/s390/include/asm/sysinfo.h b/arch/s390/include/asm/sysinfo.h
index 79d3d6e2e9c5..282ee36f6162 100644
--- a/arch/s390/include/asm/sysinfo.h
+++ b/arch/s390/include/asm/sysinfo.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * definition for store system information stsi 2 * definition for store system information stsi
3 * 3 *
4 * Copyright IBM Corp. 2001,2008 4 * Copyright IBM Corp. 2001, 2008
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License (version 2 only) 7 * it under the terms of the GNU General Public License (version 2 only)
diff --git a/arch/s390/include/asm/tape390.h b/arch/s390/include/asm/tape390.h
index 884fba48f1ff..b2bc4bab7929 100644
--- a/arch/s390/include/asm/tape390.h
+++ b/arch/s390/include/asm/tape390.h
@@ -1,10 +1,9 @@
1/************************************************************************* 1/*************************************************************************
2 * 2 *
3 * tape390.h
4 * enables user programs to display messages and control encryption 3 * enables user programs to display messages and control encryption
5 * on s390 tape devices 4 * on s390 tape devices
6 * 5 *
7 * Copyright IBM Corp. 2001,2006 6 * Copyright IBM Corp. 2001, 2006
8 * Author(s): Michael Holzheu <holzheu@de.ibm.com> 7 * Author(s): Michael Holzheu <holzheu@de.ibm.com>
9 * 8 *
10 *************************************************************************/ 9 *************************************************************************/
diff --git a/arch/s390/include/asm/termios.h b/arch/s390/include/asm/termios.h
index bc3a35cefc96..cb9fe2786b81 100644
--- a/arch/s390/include/asm/termios.h
+++ b/arch/s390/include/asm/termios.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/termios.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/termios.h" 4 * Derived from "include/asm-i386/termios.h"
diff --git a/arch/s390/include/asm/thread_info.h b/arch/s390/include/asm/thread_info.h
index 4e40b25cd060..bb08e2afc5de 100644
--- a/arch/s390/include/asm/thread_info.h
+++ b/arch/s390/include/asm/thread_info.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/thread_info.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) IBM Corp. 2002,2006 3 * Copyright IBM Corp. 2002, 2006
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
7 */ 5 */
8 6
diff --git a/arch/s390/include/asm/timer.h b/arch/s390/include/asm/timer.h
deleted file mode 100644
index 15d647901e5c..000000000000
--- a/arch/s390/include/asm/timer.h
+++ /dev/null
@@ -1,51 +0,0 @@
1/*
2 * include/asm-s390/timer.h
3 *
4 * (C) Copyright IBM Corp. 2003,2006
5 * Virtual CPU timer
6 *
7 * Author: Jan Glauber (jang@de.ibm.com)
8 */
9
10#ifndef _ASM_S390_TIMER_H
11#define _ASM_S390_TIMER_H
12
13#include <linux/timer.h>
14
15#define VTIMER_MAX_SLICE (0x7ffffffffffff000LL)
16
17struct vtimer_list {
18 struct list_head entry;
19
20 int cpu;
21 __u64 expires;
22 __u64 interval;
23
24 void (*function)(unsigned long);
25 unsigned long data;
26};
27
28/* the vtimer value will wrap after ca. 71 years */
29struct vtimer_queue {
30 struct list_head list;
31 spinlock_t lock;
32 __u64 timer; /* last programmed timer */
33 __u64 elapsed; /* elapsed time of timer expire values */
34 __u64 idle_enter; /* cpu timer on idle enter */
35 __u64 idle_exit; /* cpu timer on idle exit */
36};
37
38extern void init_virt_timer(struct vtimer_list *timer);
39extern void add_virt_timer(void *new);
40extern void add_virt_timer_periodic(void *new);
41extern int mod_virt_timer(struct vtimer_list *timer, __u64 expires);
42extern int mod_virt_timer_periodic(struct vtimer_list *timer, __u64 expires);
43extern int del_virt_timer(struct vtimer_list *timer);
44
45extern void init_cpu_vtimer(void);
46extern void vtime_init(void);
47
48extern void vtime_stop_cpu(void);
49extern void vtime_start_leave(void);
50
51#endif /* _ASM_S390_TIMER_H */
diff --git a/arch/s390/include/asm/timex.h b/arch/s390/include/asm/timex.h
index 239ece9e53c1..fba4d66788a2 100644
--- a/arch/s390/include/asm/timex.h
+++ b/arch/s390/include/asm/timex.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/timex.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * 4 *
7 * Derived from "include/asm-i386/timex.h" 5 * Derived from "include/asm-i386/timex.h"
8 * Copyright (C) 1992, Linus Torvalds 6 * Copyright (C) 1992, Linus Torvalds
diff --git a/arch/s390/include/asm/types.h b/arch/s390/include/asm/types.h
index 6c8c35f8df14..6ba7c2c7217a 100644
--- a/arch/s390/include/asm/types.h
+++ b/arch/s390/include/asm/types.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/types.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/types.h" 4 * Derived from "include/asm-i386/types.h"
diff --git a/arch/s390/include/asm/uaccess.h b/arch/s390/include/asm/uaccess.h
index 1f3a79bcd262..a8ab18b18b54 100644
--- a/arch/s390/include/asm/uaccess.h
+++ b/arch/s390/include/asm/uaccess.h
@@ -1,8 +1,6 @@
1/* 1/*
2 * include/asm-s390/uaccess.h
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999, 2000
6 * Author(s): Hartmut Penner (hp@de.ibm.com), 4 * Author(s): Hartmut Penner (hp@de.ibm.com),
7 * Martin Schwidefsky (schwidefsky@de.ibm.com) 5 * Martin Schwidefsky (schwidefsky@de.ibm.com)
8 * 6 *
@@ -381,8 +379,6 @@ clear_user(void __user *to, unsigned long n)
381 return n; 379 return n;
382} 380}
383 381
384extern int memcpy_real(void *, void *, size_t);
385extern void memcpy_absolute(void *, void *, size_t);
386extern int copy_to_user_real(void __user *dest, void *src, size_t count); 382extern int copy_to_user_real(void __user *dest, void *src, size_t count);
387extern int copy_from_user_real(void *dest, void __user *src, size_t count); 383extern int copy_from_user_real(void *dest, void __user *src, size_t count);
388 384
diff --git a/arch/s390/include/asm/ucontext.h b/arch/s390/include/asm/ucontext.h
index cfb874e66c9a..200e06325c6a 100644
--- a/arch/s390/include/asm/ucontext.h
+++ b/arch/s390/include/asm/ucontext.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/ucontext.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/ucontext.h" 4 * Derived from "include/asm-i386/ucontext.h"
diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h
index 8a8008fe7b8f..2e37157ba6a9 100644
--- a/arch/s390/include/asm/unistd.h
+++ b/arch/s390/include/asm/unistd.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/unistd.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/unistd.h" 4 * Derived from "include/asm-i386/unistd.h"
diff --git a/arch/s390/include/asm/user.h b/arch/s390/include/asm/user.h
index 1b050e35fdc6..6ed1d1886333 100644
--- a/arch/s390/include/asm/user.h
+++ b/arch/s390/include/asm/user.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * include/asm-s390/user.h
3 *
4 * S390 version 2 * S390 version
5 * 3 *
6 * Derived from "include/asm-i386/usr.h" 4 * Derived from "include/asm-i386/usr.h"
diff --git a/arch/s390/include/asm/vtimer.h b/arch/s390/include/asm/vtimer.h
new file mode 100644
index 000000000000..bfe25d513ad2
--- /dev/null
+++ b/arch/s390/include/asm/vtimer.h
@@ -0,0 +1,33 @@
1/*
2 * Copyright IBM Corp. 2003, 2012
3 * Virtual CPU timer
4 *
5 * Author(s): Jan Glauber <jan.glauber@de.ibm.com>
6 */
7
8#ifndef _ASM_S390_TIMER_H
9#define _ASM_S390_TIMER_H
10
11#define VTIMER_MAX_SLICE (0x7fffffffffffffffULL)
12
13struct vtimer_list {
14 struct list_head entry;
15 u64 expires;
16 u64 interval;
17 void (*function)(unsigned long);
18 unsigned long data;
19};
20
21extern void init_virt_timer(struct vtimer_list *timer);
22extern void add_virt_timer(struct vtimer_list *timer);
23extern void add_virt_timer_periodic(struct vtimer_list *timer);
24extern int mod_virt_timer(struct vtimer_list *timer, u64 expires);
25extern int mod_virt_timer_periodic(struct vtimer_list *timer, u64 expires);
26extern int del_virt_timer(struct vtimer_list *timer);
27
28extern void init_cpu_vtimer(void);
29extern void vtime_init(void);
30
31extern void vtime_stop_cpu(void);
32
33#endif /* _ASM_S390_TIMER_H */
diff --git a/arch/s390/include/asm/vtoc.h b/arch/s390/include/asm/vtoc.h
index 8406a2b3157a..221419de275e 100644
--- a/arch/s390/include/asm/vtoc.h
+++ b/arch/s390/include/asm/vtoc.h
@@ -1,9 +1,7 @@
1/* 1/*
2 * include/asm-s390/vtoc.h
3 *
4 * This file contains volume label definitions for DASD devices. 2 * This file contains volume label definitions for DASD devices.
5 * 3 *
6 * (C) Copyright IBM Corp. 2005 4 * Copyright IBM Corp. 2005
7 * 5 *
8 * Author(s): Volker Sameske <sameske@de.ibm.com> 6 * Author(s): Volker Sameske <sameske@de.ibm.com>
9 * 7 *
diff --git a/arch/s390/include/asm/zcrypt.h b/arch/s390/include/asm/zcrypt.h
index 00d3bbd44117..e83fc116f5bf 100644
--- a/arch/s390/include/asm/zcrypt.h
+++ b/arch/s390/include/asm/zcrypt.h
@@ -3,7 +3,7 @@
3 * 3 *
4 * zcrypt 2.1.0 (user-visible header) 4 * zcrypt 2.1.0 (user-visible header)
5 * 5 *
6 * Copyright (C) 2001, 2006 IBM Corporation 6 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 7 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 8 * Eric Rossman (edrossma@us.ibm.com)
9 * 9 *
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c
index 83e6edf5cf17..45ef1a7b08f9 100644
--- a/arch/s390/kernel/asm-offsets.c
+++ b/arch/s390/kernel/asm-offsets.c
@@ -9,7 +9,6 @@
9#include <linux/kbuild.h> 9#include <linux/kbuild.h>
10#include <linux/sched.h> 10#include <linux/sched.h>
11#include <asm/cputime.h> 11#include <asm/cputime.h>
12#include <asm/timer.h>
13#include <asm/vdso.h> 12#include <asm/vdso.h>
14#include <asm/pgtable.h> 13#include <asm/pgtable.h>
15 14
@@ -72,11 +71,10 @@ int main(void)
72 DEFINE(__CLOCK_REALTIME_RES, MONOTONIC_RES_NSEC); 71 DEFINE(__CLOCK_REALTIME_RES, MONOTONIC_RES_NSEC);
73 BLANK(); 72 BLANK();
74 /* idle data offsets */ 73 /* idle data offsets */
75 DEFINE(__IDLE_ENTER, offsetof(struct s390_idle_data, idle_enter)); 74 DEFINE(__CLOCK_IDLE_ENTER, offsetof(struct s390_idle_data, clock_idle_enter));
76 DEFINE(__IDLE_EXIT, offsetof(struct s390_idle_data, idle_exit)); 75 DEFINE(__CLOCK_IDLE_EXIT, offsetof(struct s390_idle_data, clock_idle_exit));
77 /* vtimer queue offsets */ 76 DEFINE(__TIMER_IDLE_ENTER, offsetof(struct s390_idle_data, timer_idle_enter));
78 DEFINE(__VQ_IDLE_ENTER, offsetof(struct vtimer_queue, idle_enter)); 77 DEFINE(__TIMER_IDLE_EXIT, offsetof(struct s390_idle_data, timer_idle_exit));
79 DEFINE(__VQ_IDLE_EXIT, offsetof(struct vtimer_queue, idle_exit));
80 /* lowcore offsets */ 78 /* lowcore offsets */
81 DEFINE(__LC_EXT_PARAMS, offsetof(struct _lowcore, ext_params)); 79 DEFINE(__LC_EXT_PARAMS, offsetof(struct _lowcore, ext_params));
82 DEFINE(__LC_EXT_CPU_ADDR, offsetof(struct _lowcore, ext_cpu_addr)); 80 DEFINE(__LC_EXT_CPU_ADDR, offsetof(struct _lowcore, ext_cpu_addr));
@@ -131,6 +129,8 @@ int main(void)
131 DEFINE(__LC_PANIC_STACK, offsetof(struct _lowcore, panic_stack)); 129 DEFINE(__LC_PANIC_STACK, offsetof(struct _lowcore, panic_stack));
132 DEFINE(__LC_RESTART_STACK, offsetof(struct _lowcore, restart_stack)); 130 DEFINE(__LC_RESTART_STACK, offsetof(struct _lowcore, restart_stack));
133 DEFINE(__LC_RESTART_FN, offsetof(struct _lowcore, restart_fn)); 131 DEFINE(__LC_RESTART_FN, offsetof(struct _lowcore, restart_fn));
132 DEFINE(__LC_RESTART_DATA, offsetof(struct _lowcore, restart_data));
133 DEFINE(__LC_RESTART_SOURCE, offsetof(struct _lowcore, restart_source));
134 DEFINE(__LC_USER_ASCE, offsetof(struct _lowcore, user_asce)); 134 DEFINE(__LC_USER_ASCE, offsetof(struct _lowcore, user_asce));
135 DEFINE(__LC_INT_CLOCK, offsetof(struct _lowcore, int_clock)); 135 DEFINE(__LC_INT_CLOCK, offsetof(struct _lowcore, int_clock));
136 DEFINE(__LC_MCCK_CLOCK, offsetof(struct _lowcore, mcck_clock)); 136 DEFINE(__LC_MCCK_CLOCK, offsetof(struct _lowcore, mcck_clock));
diff --git a/arch/s390/kernel/base.S b/arch/s390/kernel/base.S
index c880ff72db44..797a823a2275 100644
--- a/arch/s390/kernel/base.S
+++ b/arch/s390/kernel/base.S
@@ -1,7 +1,7 @@
1/* 1/*
2 * arch/s390/kernel/base.S 2 * arch/s390/kernel/base.S
3 * 3 *
4 * Copyright IBM Corp. 2006,2007 4 * Copyright IBM Corp. 2006, 2007
5 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> 5 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
6 * Michael Holzheu <holzheu@de.ibm.com> 6 * Michael Holzheu <holzheu@de.ibm.com>
7 */ 7 */
@@ -9,6 +9,7 @@
9#include <linux/linkage.h> 9#include <linux/linkage.h>
10#include <asm/asm-offsets.h> 10#include <asm/asm-offsets.h>
11#include <asm/ptrace.h> 11#include <asm/ptrace.h>
12#include <asm/sigp.h>
12 13
13#ifdef CONFIG_64BIT 14#ifdef CONFIG_64BIT
14 15
@@ -100,7 +101,7 @@ ENTRY(diag308_reset)
100.Lrestart_part2: 101.Lrestart_part2:
101 lhi %r0,0 # Load r0 with zero 102 lhi %r0,0 # Load r0 with zero
102 lhi %r1,2 # Use mode 2 = ESAME (dump) 103 lhi %r1,2 # Use mode 2 = ESAME (dump)
103 sigp %r1,%r0,0x12 # Switch to ESAME mode 104 sigp %r1,%r0,SIGP_SET_ARCHITECTURE # Switch to ESAME mode
104 sam64 # Switch to 64 bit addressing mode 105 sam64 # Switch to 64 bit addressing mode
105 larl %r4,.Lctlregs # Restore control registers 106 larl %r4,.Lctlregs # Restore control registers
106 lctlg %c0,%c15,0(%r4) 107 lctlg %c0,%c15,0(%r4)
diff --git a/arch/s390/kernel/bitmap.c b/arch/s390/kernel/bitmap.c
index 3ae4757b006a..102da5e23037 100644
--- a/arch/s390/kernel/bitmap.c
+++ b/arch/s390/kernel/bitmap.c
@@ -2,7 +2,7 @@
2 * Bitmaps for set_bit, clear_bit, test_and_set_bit, ... 2 * Bitmaps for set_bit, clear_bit, test_and_set_bit, ...
3 * See include/asm/{bitops.h|posix_types.h} for details 3 * See include/asm/{bitops.h|posix_types.h} for details
4 * 4 *
5 * Copyright IBM Corp. 1999,2009 5 * Copyright IBM Corp. 1999, 2009
6 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>, 6 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>,
7 */ 7 */
8 8
diff --git a/arch/s390/kernel/compat_exec_domain.c b/arch/s390/kernel/compat_exec_domain.c
index 914d49444f92..765fabdada9f 100644
--- a/arch/s390/kernel/compat_exec_domain.c
+++ b/arch/s390/kernel/compat_exec_domain.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Support for 32-bit Linux for S390 personality. 2 * Support for 32-bit Linux for S390 personality.
3 * 3 *
4 * Copyright (C) 2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright IBM Corp. 2000
5 * Author(s): Gerhard Tonn (ton@de.ibm.com) 5 * Author(s): Gerhard Tonn (ton@de.ibm.com)
6 * 6 *
7 * 7 *
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
index 65426525d9f2..d1225089a4bb 100644
--- a/arch/s390/kernel/compat_linux.c
+++ b/arch/s390/kernel/compat_linux.c
@@ -1,8 +1,6 @@
1/* 1/*
2 * arch/s390x/kernel/linux32.c
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 2000
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
7 * Gerhard Tonn (ton@de.ibm.com) 5 * Gerhard Tonn (ton@de.ibm.com)
8 * Thomas Spatzier (tspat@de.ibm.com) 6 * Thomas Spatzier (tspat@de.ibm.com)
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c
index 3c0c19830c37..a1e8a8694bb7 100644
--- a/arch/s390/kernel/compat_signal.c
+++ b/arch/s390/kernel/compat_signal.c
@@ -1,7 +1,5 @@
1/* 1/*
2 * arch/s390/kernel/compat_signal.c 2 * Copyright IBM Corp. 2000, 2006
3 *
4 * Copyright (C) IBM Corp. 2000,2006
5 * Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) 3 * Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
6 * Gerhard Tonn (ton@de.ibm.com) 4 * Gerhard Tonn (ton@de.ibm.com)
7 * 5 *
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
index ff605a39cf43..e835d6d5b7fd 100644
--- a/arch/s390/kernel/compat_wrapper.S
+++ b/arch/s390/kernel/compat_wrapper.S
@@ -1,8 +1,7 @@
1/* 1/*
2* arch/s390/kernel/compat_wrapper.S
3* wrapper for 31 bit compatible system calls. 2* wrapper for 31 bit compatible system calls.
4* 3*
5* Copyright (C) IBM Corp. 2000,2006 4* Copyright IBM Corp. 2000, 2006
6* Author(s): Gerhard Tonn (ton@de.ibm.com), 5* Author(s): Gerhard Tonn (ton@de.ibm.com),
7* Thomas Spatzier (tspat@de.ibm.com) 6* Thomas Spatzier (tspat@de.ibm.com)
8*/ 7*/
diff --git a/arch/s390/kernel/cpcmd.c b/arch/s390/kernel/cpcmd.c
index e3dd886e1b32..d7b0c4d27880 100644
--- a/arch/s390/kernel/cpcmd.c
+++ b/arch/s390/kernel/cpcmd.c
@@ -1,8 +1,6 @@
1/* 1/*
2 * arch/s390/kernel/cpcmd.c
3 *
4 * S390 version 2 * S390 version
5 * Copyright IBM Corp. 1999,2007 3 * Copyright IBM Corp. 1999, 2007
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
7 * Christian Borntraeger (cborntra@de.ibm.com), 5 * Christian Borntraeger (cborntra@de.ibm.com),
8 */ 6 */
diff --git a/arch/s390/kernel/crash.c b/arch/s390/kernel/crash.c
index 8cc7c9fa64f5..3819153de8bd 100644
--- a/arch/s390/kernel/crash.c
+++ b/arch/s390/kernel/crash.c
@@ -1,7 +1,5 @@
1/* 1/*
2 * arch/s390/kernel/crash.c 2 * Copyright IBM Corp. 2005
3 *
4 * (C) Copyright IBM Corp. 2005
5 * 3 *
6 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> 4 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
7 * 5 *
diff --git a/arch/s390/kernel/debug.c b/arch/s390/kernel/debug.c
index 19e5e9eba546..21be961e8a43 100644
--- a/arch/s390/kernel/debug.c
+++ b/arch/s390/kernel/debug.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * arch/s390/kernel/debug.c
3 * S/390 debug facility 2 * S/390 debug facility
4 * 3 *
5 * Copyright IBM Corp. 1999, 2012 4 * Copyright IBM Corp. 1999, 2012
diff --git a/arch/s390/kernel/dis.c b/arch/s390/kernel/dis.c
index 3221c6fca8bb..1f6b428e2762 100644
--- a/arch/s390/kernel/dis.c
+++ b/arch/s390/kernel/dis.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/s390/kernel/dis.c
3 *
4 * Disassemble s390 instructions. 2 * Disassemble s390 instructions.
5 * 3 *
6 * Copyright IBM Corp. 2007 4 * Copyright IBM Corp. 2007
@@ -613,6 +611,7 @@ static struct insn opcode_b2[] = {
613 { "sie", 0x14, INSTR_S_RD }, 611 { "sie", 0x14, INSTR_S_RD },
614 { "pc", 0x18, INSTR_S_RD }, 612 { "pc", 0x18, INSTR_S_RD },
615 { "sac", 0x19, INSTR_S_RD }, 613 { "sac", 0x19, INSTR_S_RD },
614 { "servc", 0x20, INSTR_RRE_RR },
616 { "cfc", 0x1a, INSTR_S_RD }, 615 { "cfc", 0x1a, INSTR_S_RD },
617 { "ipte", 0x21, INSTR_RRE_RR }, 616 { "ipte", 0x21, INSTR_RRE_RR },
618 { "ipm", 0x22, INSTR_RRE_R0 }, 617 { "ipm", 0x22, INSTR_RRE_R0 },
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
index 6684fff17558..bc95a8ebd9cc 100644
--- a/arch/s390/kernel/early.c
+++ b/arch/s390/kernel/early.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/s390/kernel/early.c
3 *
4 * Copyright IBM Corp. 2007, 2009 2 * Copyright IBM Corp. 2007, 2009
5 * Author(s): Hongjie Yang <hongjie@us.ibm.com>, 3 * Author(s): Hongjie Yang <hongjie@us.ibm.com>,
6 * Heiko Carstens <heiko.carstens@de.ibm.com> 4 * Heiko Carstens <heiko.carstens@de.ibm.com>
diff --git a/arch/s390/kernel/ebcdic.c b/arch/s390/kernel/ebcdic.c
index cc0dc609d738..b971c6be6298 100644
--- a/arch/s390/kernel/ebcdic.c
+++ b/arch/s390/kernel/ebcdic.c
@@ -1,10 +1,9 @@
1/* 1/*
2 * arch/s390/kernel/ebcdic.c
3 * ECBDIC -> ASCII, ASCII -> ECBDIC, 2 * ECBDIC -> ASCII, ASCII -> ECBDIC,
4 * upper to lower case (EBCDIC) conversion tables. 3 * upper to lower case (EBCDIC) conversion tables.
5 * 4 *
6 * S390 version 5 * S390 version
7 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 6 * Copyright IBM Corp. 1999
8 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> 7 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
9 * Martin Peschke <peschke@fh-brandenburg.de> 8 * Martin Peschke <peschke@fh-brandenburg.de>
10 */ 9 */
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index 1ae93b573d7d..870bad6d56fc 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -1,8 +1,7 @@
1/* 1/*
2 * arch/s390/kernel/entry.S
3 * S390 low-level entry points. 2 * S390 low-level entry points.
4 * 3 *
5 * Copyright (C) IBM Corp. 1999,2012 4 * Copyright IBM Corp. 1999, 2012
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
7 * Hartmut Penner (hp@de.ibm.com), 6 * Hartmut Penner (hp@de.ibm.com),
8 * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com), 7 * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com),
@@ -18,6 +17,7 @@
18#include <asm/asm-offsets.h> 17#include <asm/asm-offsets.h>
19#include <asm/unistd.h> 18#include <asm/unistd.h>
20#include <asm/page.h> 19#include <asm/page.h>
20#include <asm/sigp.h>
21 21
22__PT_R0 = __PT_GPRS 22__PT_R0 = __PT_GPRS
23__PT_R1 = __PT_GPRS + 4 23__PT_R1 = __PT_GPRS + 4
@@ -616,17 +616,13 @@ ext_skip:
616 * Load idle PSW. The second "half" of this function is in cleanup_idle. 616 * Load idle PSW. The second "half" of this function is in cleanup_idle.
617 */ 617 */
618ENTRY(psw_idle) 618ENTRY(psw_idle)
619 st %r4,__SF_EMPTY(%r15) 619 st %r3,__SF_EMPTY(%r15)
620 basr %r1,0 620 basr %r1,0
621 la %r1,psw_idle_lpsw+4-.(%r1) 621 la %r1,psw_idle_lpsw+4-.(%r1)
622 st %r1,__SF_EMPTY+4(%r15) 622 st %r1,__SF_EMPTY+4(%r15)
623 oi __SF_EMPTY+4(%r15),0x80 623 oi __SF_EMPTY+4(%r15),0x80
624 la %r1,.Lvtimer_max-psw_idle_lpsw-4(%r1) 624 stck __CLOCK_IDLE_ENTER(%r2)
625 stck __IDLE_ENTER(%r2) 625 stpt __TIMER_IDLE_ENTER(%r2)
626 ltr %r5,%r5
627 stpt __VQ_IDLE_ENTER(%r3)
628 jz psw_idle_lpsw
629 spt 0(%r1)
630psw_idle_lpsw: 626psw_idle_lpsw:
631 lpsw __SF_EMPTY(%r15) 627 lpsw __SF_EMPTY(%r15)
632 br %r14 628 br %r14
@@ -723,15 +719,17 @@ ENTRY(restart_int_handler)
723 mvc __PT_PSW(8,%r15),__LC_RST_OLD_PSW # store restart old psw 719 mvc __PT_PSW(8,%r15),__LC_RST_OLD_PSW # store restart old psw
724 ahi %r15,-STACK_FRAME_OVERHEAD # create stack frame on stack 720 ahi %r15,-STACK_FRAME_OVERHEAD # create stack frame on stack
725 xc 0(STACK_FRAME_OVERHEAD,%r15),0(%r15) 721 xc 0(STACK_FRAME_OVERHEAD,%r15),0(%r15)
726 lm %r1,%r3,__LC_RESTART_FN # load fn, parm & source cpu 722 l %r1,__LC_RESTART_FN # load fn, parm & source cpu
723 l %r2,__LC_RESTART_DATA
724 l %r3,__LC_RESTART_SOURCE
727 ltr %r3,%r3 # test source cpu address 725 ltr %r3,%r3 # test source cpu address
728 jm 1f # negative -> skip source stop 726 jm 1f # negative -> skip source stop
7290: sigp %r4,%r3,1 # sigp sense to source cpu 7270: sigp %r4,%r3,SIGP_SENSE # sigp sense to source cpu
730 brc 10,0b # wait for status stored 728 brc 10,0b # wait for status stored
7311: basr %r14,%r1 # call function 7291: basr %r14,%r1 # call function
732 stap __SF_EMPTY(%r15) # store cpu address 730 stap __SF_EMPTY(%r15) # store cpu address
733 lh %r3,__SF_EMPTY(%r15) 731 lh %r3,__SF_EMPTY(%r15)
7342: sigp %r4,%r3,5 # sigp stop to current cpu 7322: sigp %r4,%r3,SIGP_STOP # sigp stop to current cpu
735 brc 2,2b 733 brc 2,2b
7363: j 3b 7343: j 3b
737 735
@@ -883,33 +881,28 @@ cleanup_io_restore_insn:
883 881
884cleanup_idle: 882cleanup_idle:
885 # copy interrupt clock & cpu timer 883 # copy interrupt clock & cpu timer
886 mvc __IDLE_EXIT(8,%r2),__LC_INT_CLOCK 884 mvc __CLOCK_IDLE_EXIT(8,%r2),__LC_INT_CLOCK
887 mvc __VQ_IDLE_EXIT(8,%r3),__LC_ASYNC_ENTER_TIMER 885 mvc __TIMER_IDLE_EXIT(8,%r2),__LC_ASYNC_ENTER_TIMER
888 chi %r11,__LC_SAVE_AREA_ASYNC 886 chi %r11,__LC_SAVE_AREA_ASYNC
889 je 0f 887 je 0f
890 mvc __IDLE_EXIT(8,%r2),__LC_MCCK_CLOCK 888 mvc __CLOCK_IDLE_EXIT(8,%r2),__LC_MCCK_CLOCK
891 mvc __VQ_IDLE_EXIT(8,%r3),__LC_MCCK_ENTER_TIMER 889 mvc __TIMER_IDLE_EXIT(8,%r2),__LC_MCCK_ENTER_TIMER
8920: # check if stck has been executed 8900: # check if stck has been executed
893 cl %r9,BASED(cleanup_idle_insn) 891 cl %r9,BASED(cleanup_idle_insn)
894 jhe 1f 892 jhe 1f
895 mvc __IDLE_ENTER(8,%r2),__IDLE_EXIT(%r2) 893 mvc __CLOCK_IDLE_ENTER(8,%r2),__CLOCK_IDLE_EXIT(%r2)
896 mvc __VQ_IDLE_ENTER(8,%r3),__VQ_IDLE_EXIT(%r3) 894 mvc __TIMER_IDLE_ENTER(8,%r2),__TIMER_IDLE_EXIT(%r3)
897 j 2f 8951: # account system time going idle
8981: # check if the cpu timer has been reprogrammed
899 ltr %r5,%r5
900 jz 2f
901 spt __VQ_IDLE_ENTER(%r3)
9022: # account system time going idle
903 lm %r9,%r10,__LC_STEAL_TIMER 896 lm %r9,%r10,__LC_STEAL_TIMER
904 ADD64 %r9,%r10,__IDLE_ENTER(%r2) 897 ADD64 %r9,%r10,__CLOCK_IDLE_ENTER(%r2)
905 SUB64 %r9,%r10,__LC_LAST_UPDATE_CLOCK 898 SUB64 %r9,%r10,__LC_LAST_UPDATE_CLOCK
906 stm %r9,%r10,__LC_STEAL_TIMER 899 stm %r9,%r10,__LC_STEAL_TIMER
907 mvc __LC_LAST_UPDATE_CLOCK(8),__IDLE_EXIT(%r2) 900 mvc __LC_LAST_UPDATE_CLOCK(8),__CLOCK_IDLE_EXIT(%r2)
908 lm %r9,%r10,__LC_SYSTEM_TIMER 901 lm %r9,%r10,__LC_SYSTEM_TIMER
909 ADD64 %r9,%r10,__LC_LAST_UPDATE_TIMER 902 ADD64 %r9,%r10,__LC_LAST_UPDATE_TIMER
910 SUB64 %r9,%r10,__VQ_IDLE_ENTER(%r3) 903 SUB64 %r9,%r10,__TIMER_IDLE_ENTER(%r2)
911 stm %r9,%r10,__LC_SYSTEM_TIMER 904 stm %r9,%r10,__LC_SYSTEM_TIMER
912 mvc __LC_LAST_UPDATE_TIMER(8),__VQ_IDLE_EXIT(%r3) 905 mvc __LC_LAST_UPDATE_TIMER(8),__TIMER_IDLE_EXIT(%r2)
913 # prepare return psw 906 # prepare return psw
914 n %r8,BASED(cleanup_idle_wait) # clear wait state bit 907 n %r8,BASED(cleanup_idle_wait) # clear wait state bit
915 l %r9,24(%r11) # return from psw_idle 908 l %r9,24(%r11) # return from psw_idle
diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h
index f66a229ab0b3..a5f4dc42a5db 100644
--- a/arch/s390/kernel/entry.h
+++ b/arch/s390/kernel/entry.h
@@ -5,7 +5,6 @@
5#include <linux/signal.h> 5#include <linux/signal.h>
6#include <asm/ptrace.h> 6#include <asm/ptrace.h>
7#include <asm/cputime.h> 7#include <asm/cputime.h>
8#include <asm/timer.h>
9 8
10extern void (*pgm_check_table[128])(struct pt_regs *); 9extern void (*pgm_check_table[128])(struct pt_regs *);
11extern void *restart_stack; 10extern void *restart_stack;
@@ -17,8 +16,7 @@ void io_int_handler(void);
17void mcck_int_handler(void); 16void mcck_int_handler(void);
18void restart_int_handler(void); 17void restart_int_handler(void);
19void restart_call_handler(void); 18void restart_call_handler(void);
20void psw_idle(struct s390_idle_data *, struct vtimer_queue *, 19void psw_idle(struct s390_idle_data *, unsigned long);
21 unsigned long, int);
22 20
23asmlinkage long do_syscall_trace_enter(struct pt_regs *regs); 21asmlinkage long do_syscall_trace_enter(struct pt_regs *regs);
24asmlinkage void do_syscall_trace_exit(struct pt_regs *regs); 22asmlinkage void do_syscall_trace_exit(struct pt_regs *regs);
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S
index 229fe1d07749..349b7eeb348a 100644
--- a/arch/s390/kernel/entry64.S
+++ b/arch/s390/kernel/entry64.S
@@ -1,8 +1,7 @@
1/* 1/*
2 * arch/s390/kernel/entry64.S
3 * S390 low-level entry points. 2 * S390 low-level entry points.
4 * 3 *
5 * Copyright (C) IBM Corp. 1999,2012 4 * Copyright IBM Corp. 1999, 2012
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
7 * Hartmut Penner (hp@de.ibm.com), 6 * Hartmut Penner (hp@de.ibm.com),
8 * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com), 7 * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com),
@@ -18,6 +17,7 @@
18#include <asm/asm-offsets.h> 17#include <asm/asm-offsets.h>
19#include <asm/unistd.h> 18#include <asm/unistd.h>
20#include <asm/page.h> 19#include <asm/page.h>
20#include <asm/sigp.h>
21 21
22__PT_R0 = __PT_GPRS 22__PT_R0 = __PT_GPRS
23__PT_R1 = __PT_GPRS + 8 23__PT_R1 = __PT_GPRS + 8
@@ -642,15 +642,11 @@ ext_skip:
642 * Load idle PSW. The second "half" of this function is in cleanup_idle. 642 * Load idle PSW. The second "half" of this function is in cleanup_idle.
643 */ 643 */
644ENTRY(psw_idle) 644ENTRY(psw_idle)
645 stg %r4,__SF_EMPTY(%r15) 645 stg %r3,__SF_EMPTY(%r15)
646 larl %r1,psw_idle_lpsw+4 646 larl %r1,psw_idle_lpsw+4
647 stg %r1,__SF_EMPTY+8(%r15) 647 stg %r1,__SF_EMPTY+8(%r15)
648 larl %r1,.Lvtimer_max 648 STCK __CLOCK_IDLE_ENTER(%r2)
649 STCK __IDLE_ENTER(%r2) 649 stpt __TIMER_IDLE_ENTER(%r2)
650 ltr %r5,%r5
651 stpt __VQ_IDLE_ENTER(%r3)
652 jz psw_idle_lpsw
653 spt 0(%r1)
654psw_idle_lpsw: 650psw_idle_lpsw:
655 lpswe __SF_EMPTY(%r15) 651 lpswe __SF_EMPTY(%r15)
656 br %r14 652 br %r14
@@ -750,15 +746,17 @@ ENTRY(restart_int_handler)
750 mvc __PT_PSW(16,%r15),__LC_RST_OLD_PSW # store restart old psw 746 mvc __PT_PSW(16,%r15),__LC_RST_OLD_PSW # store restart old psw
751 aghi %r15,-STACK_FRAME_OVERHEAD # create stack frame on stack 747 aghi %r15,-STACK_FRAME_OVERHEAD # create stack frame on stack
752 xc 0(STACK_FRAME_OVERHEAD,%r15),0(%r15) 748 xc 0(STACK_FRAME_OVERHEAD,%r15),0(%r15)
753 lmg %r1,%r3,__LC_RESTART_FN # load fn, parm & source cpu 749 lg %r1,__LC_RESTART_FN # load fn, parm & source cpu
750 lg %r2,__LC_RESTART_DATA
751 lg %r3,__LC_RESTART_SOURCE
754 ltgr %r3,%r3 # test source cpu address 752 ltgr %r3,%r3 # test source cpu address
755 jm 1f # negative -> skip source stop 753 jm 1f # negative -> skip source stop
7560: sigp %r4,%r3,1 # sigp sense to source cpu 7540: sigp %r4,%r3,SIGP_SENSE # sigp sense to source cpu
757 brc 10,0b # wait for status stored 755 brc 10,0b # wait for status stored
7581: basr %r14,%r1 # call function 7561: basr %r14,%r1 # call function
759 stap __SF_EMPTY(%r15) # store cpu address 757 stap __SF_EMPTY(%r15) # store cpu address
760 llgh %r3,__SF_EMPTY(%r15) 758 llgh %r3,__SF_EMPTY(%r15)
7612: sigp %r4,%r3,5 # sigp stop to current cpu 7592: sigp %r4,%r3,SIGP_STOP # sigp stop to current cpu
762 brc 2,2b 760 brc 2,2b
7633: j 3b 7613: j 3b
764 762
@@ -916,33 +914,28 @@ cleanup_io_restore_insn:
916 914
917cleanup_idle: 915cleanup_idle:
918 # copy interrupt clock & cpu timer 916 # copy interrupt clock & cpu timer
919 mvc __IDLE_EXIT(8,%r2),__LC_INT_CLOCK 917 mvc __CLOCK_IDLE_EXIT(8,%r2),__LC_INT_CLOCK
920 mvc __VQ_IDLE_EXIT(8,%r3),__LC_ASYNC_ENTER_TIMER 918 mvc __TIMER_IDLE_EXIT(8,%r2),__LC_ASYNC_ENTER_TIMER
921 cghi %r11,__LC_SAVE_AREA_ASYNC 919 cghi %r11,__LC_SAVE_AREA_ASYNC
922 je 0f 920 je 0f
923 mvc __IDLE_EXIT(8,%r2),__LC_MCCK_CLOCK 921 mvc __CLOCK_IDLE_EXIT(8,%r2),__LC_MCCK_CLOCK
924 mvc __VQ_IDLE_EXIT(8,%r3),__LC_MCCK_ENTER_TIMER 922 mvc __TIMER_IDLE_EXIT(8,%r2),__LC_MCCK_ENTER_TIMER
9250: # check if stck & stpt have been executed 9230: # check if stck & stpt have been executed
926 clg %r9,BASED(cleanup_idle_insn) 924 clg %r9,BASED(cleanup_idle_insn)
927 jhe 1f 925 jhe 1f
928 mvc __IDLE_ENTER(8,%r2),__IDLE_EXIT(%r2) 926 mvc __CLOCK_IDLE_ENTER(8,%r2),__CLOCK_IDLE_EXIT(%r2)
929 mvc __VQ_IDLE_ENTER(8,%r3),__VQ_IDLE_EXIT(%r3) 927 mvc __TIMER_IDLE_ENTER(8,%r2),__TIMER_IDLE_EXIT(%r2)
930 j 2f 9281: # account system time going idle
9311: # check if the cpu timer has been reprogrammed
932 ltr %r5,%r5
933 jz 2f
934 spt __VQ_IDLE_ENTER(%r3)
9352: # account system time going idle
936 lg %r9,__LC_STEAL_TIMER 929 lg %r9,__LC_STEAL_TIMER
937 alg %r9,__IDLE_ENTER(%r2) 930 alg %r9,__CLOCK_IDLE_ENTER(%r2)
938 slg %r9,__LC_LAST_UPDATE_CLOCK 931 slg %r9,__LC_LAST_UPDATE_CLOCK
939 stg %r9,__LC_STEAL_TIMER 932 stg %r9,__LC_STEAL_TIMER
940 mvc __LC_LAST_UPDATE_CLOCK(8),__IDLE_EXIT(%r2) 933 mvc __LC_LAST_UPDATE_CLOCK(8),__CLOCK_IDLE_EXIT(%r2)
941 lg %r9,__LC_SYSTEM_TIMER 934 lg %r9,__LC_SYSTEM_TIMER
942 alg %r9,__LC_LAST_UPDATE_TIMER 935 alg %r9,__LC_LAST_UPDATE_TIMER
943 slg %r9,__VQ_IDLE_ENTER(%r3) 936 slg %r9,__TIMER_IDLE_ENTER(%r2)
944 stg %r9,__LC_SYSTEM_TIMER 937 stg %r9,__LC_SYSTEM_TIMER
945 mvc __LC_LAST_UPDATE_TIMER(8),__VQ_IDLE_EXIT(%r3) 938 mvc __LC_LAST_UPDATE_TIMER(8),__TIMER_IDLE_EXIT(%r2)
946 # prepare return psw 939 # prepare return psw
947 nihh %r8,0xfffd # clear wait state bit 940 nihh %r8,0xfffd # clear wait state bit
948 lg %r9,48(%r11) # return from psw_idle 941 lg %r9,48(%r11) # return from psw_idle
@@ -958,8 +951,6 @@ cleanup_idle_insn:
958 .quad __critical_start 951 .quad __critical_start
959.Lcritical_length: 952.Lcritical_length:
960 .quad __critical_end - __critical_start 953 .quad __critical_end - __critical_start
961.Lvtimer_max:
962 .quad 0x7fffffffffffffff
963 954
964 955
965#if defined(CONFIG_KVM) || defined(CONFIG_KVM_MODULE) 956#if defined(CONFIG_KVM) || defined(CONFIG_KVM_MODULE)
@@ -974,7 +965,6 @@ ENTRY(sie64a)
974 stg %r3,__SF_EMPTY+8(%r15) # save guest register save area 965 stg %r3,__SF_EMPTY+8(%r15) # save guest register save area
975 xc __SF_EMPTY+16(8,%r15),__SF_EMPTY+16(%r15) # host id == 0 966 xc __SF_EMPTY+16(8,%r15),__SF_EMPTY+16(%r15) # host id == 0
976 lmg %r0,%r13,0(%r3) # load guest gprs 0-13 967 lmg %r0,%r13,0(%r3) # load guest gprs 0-13
977 lg %r14,__LC_THREAD_INFO # pointer thread_info struct
978sie_loop: 968sie_loop:
979 lg %r14,__LC_THREAD_INFO # pointer thread_info struct 969 lg %r14,__LC_THREAD_INFO # pointer thread_info struct
980 tm __TI_flags+7(%r14),_TIF_EXIT_SIE 970 tm __TI_flags+7(%r14),_TIF_EXIT_SIE
diff --git a/arch/s390/kernel/head.S b/arch/s390/kernel/head.S
index 4939d15375aa..805b6686b641 100644
--- a/arch/s390/kernel/head.S
+++ b/arch/s390/kernel/head.S
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 1999,2010 2 * Copyright IBM Corp. 1999, 2010
3 * 3 *
4 * Author(s): Hartmut Penner <hp@de.ibm.com> 4 * Author(s): Hartmut Penner <hp@de.ibm.com>
5 * Martin Schwidefsky <schwidefsky@de.ibm.com> 5 * Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/arch/s390/kernel/head31.S b/arch/s390/kernel/head31.S
index d3f1ab7d90ad..a1372ae24ae1 100644
--- a/arch/s390/kernel/head31.S
+++ b/arch/s390/kernel/head31.S
@@ -1,7 +1,5 @@
1/* 1/*
2 * arch/s390/kernel/head31.S 2 * Copyright IBM Corp. 2005, 2010
3 *
4 * Copyright (C) IBM Corp. 2005,2010
5 * 3 *
6 * Author(s): Hartmut Penner <hp@de.ibm.com> 4 * Author(s): Hartmut Penner <hp@de.ibm.com>
7 * Martin Schwidefsky <schwidefsky@de.ibm.com> 5 * Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S
index 99348c0eaa41..c108af28bbe8 100644
--- a/arch/s390/kernel/head64.S
+++ b/arch/s390/kernel/head64.S
@@ -1,7 +1,5 @@
1/* 1/*
2 * arch/s390/kernel/head64.S 2 * Copyright IBM Corp. 1999, 2010
3 *
4 * Copyright (C) IBM Corp. 1999,2010
5 * 3 *
6 * Author(s): Hartmut Penner <hp@de.ibm.com> 4 * Author(s): Hartmut Penner <hp@de.ibm.com>
7 * Martin Schwidefsky <schwidefsky@de.ibm.com> 5 * Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/arch/s390/kernel/head_kdump.S b/arch/s390/kernel/head_kdump.S
index 796c976b5fdc..acaaaf4b7055 100644
--- a/arch/s390/kernel/head_kdump.S
+++ b/arch/s390/kernel/head_kdump.S
@@ -5,6 +5,8 @@
5 * Author(s): Michael Holzheu <holzheu@linux.vnet.ibm.com> 5 * Author(s): Michael Holzheu <holzheu@linux.vnet.ibm.com>
6 */ 6 */
7 7
8#include <asm/sigp.h>
9
8#define DATAMOVER_ADDR 0x4000 10#define DATAMOVER_ADDR 0x4000
9#define COPY_PAGE_ADDR 0x6000 11#define COPY_PAGE_ADDR 0x6000
10 12
@@ -19,7 +21,7 @@
19.align 2 21.align 2
20.Lep_startup_kdump: 22.Lep_startup_kdump:
21 lhi %r1,2 # mode 2 = esame (dump) 23 lhi %r1,2 # mode 2 = esame (dump)
22 sigp %r1,%r0,0x12 # Switch to esame mode 24 sigp %r1,%r0,SIGP_SET_ARCHITECTURE # Switch to esame mode
23 sam64 # Switch to 64 bit addressing 25 sam64 # Switch to 64 bit addressing
24 basr %r13,0 26 basr %r13,0
25.Lbase: 27.Lbase:
@@ -88,7 +90,7 @@ startup_kdump_relocated:
88 sam31 # Switch to 31 bit addr mode 90 sam31 # Switch to 31 bit addr mode
89 sr %r1,%r1 # Erase register r1 91 sr %r1,%r1 # Erase register r1
90 sr %r2,%r2 # Erase register r2 92 sr %r2,%r2 # Erase register r2
91 sigp %r1,%r2,0x12 # Switch to 31 bit arch mode 93 sigp %r1,%r2,SIGP_SET_ARCHITECTURE # Switch to 31 bit arch mode
92 lpsw 0 # Start new kernel... 94 lpsw 0 # Start new kernel...
93.align 8 95.align 8
94.Lrestart_psw: 96.Lrestart_psw:
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index 2f6cfd460cb6..e64d141555ce 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -1,8 +1,7 @@
1/* 1/*
2 * arch/s390/kernel/ipl.c
3 * ipl/reipl/dump support for Linux on s390. 2 * ipl/reipl/dump support for Linux on s390.
4 * 3 *
5 * Copyright IBM Corp. 2005,2012 4 * Copyright IBM Corp. 2005, 2012
6 * Author(s): Michael Holzheu <holzheu@de.ibm.com> 5 * Author(s): Michael Holzheu <holzheu@de.ibm.com>
7 * Heiko Carstens <heiko.carstens@de.ibm.com> 6 * Heiko Carstens <heiko.carstens@de.ibm.com>
8 * Volker Sameske <sameske@de.ibm.com> 7 * Volker Sameske <sameske@de.ibm.com>
@@ -1528,15 +1527,12 @@ static struct shutdown_action __refdata dump_action = {
1528 1527
1529static void dump_reipl_run(struct shutdown_trigger *trigger) 1528static void dump_reipl_run(struct shutdown_trigger *trigger)
1530{ 1529{
1531 struct { 1530 unsigned long ipib = (unsigned long) reipl_block_actual;
1532 void *addr; 1531 unsigned int csum;
1533 __u32 csum;
1534 } __packed ipib;
1535 1532
1536 ipib.csum = csum_partial(reipl_block_actual, 1533 csum = csum_partial(reipl_block_actual, reipl_block_actual->hdr.len, 0);
1537 reipl_block_actual->hdr.len, 0); 1534 mem_assign_absolute(S390_lowcore.ipib, ipib);
1538 ipib.addr = reipl_block_actual; 1535 mem_assign_absolute(S390_lowcore.ipib_checksum, csum);
1539 memcpy_absolute(&S390_lowcore.ipib, &ipib, sizeof(ipib));
1540 dump_run(trigger); 1536 dump_run(trigger);
1541} 1537}
1542 1538
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c
index b4f4a7133fa1..dd7630d8aab7 100644
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 2004,2011 2 * Copyright IBM Corp. 2004, 2011
3 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>, 3 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>,
4 * Holger Smolinski <Holger.Smolinski@de.ibm.com>, 4 * Holger Smolinski <Holger.Smolinski@de.ibm.com>,
5 * Thomas Spatzier <tspat@de.ibm.com>, 5 * Thomas Spatzier <tspat@de.ibm.com>,
diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c
index 64b761aef004..8aa634f5944b 100644
--- a/arch/s390/kernel/kprobes.c
+++ b/arch/s390/kernel/kprobes.c
@@ -15,7 +15,7 @@
15 * along with this program; if not, write to the Free Software 15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 * 17 *
18 * Copyright (C) IBM Corporation, 2002, 2006 18 * Copyright IBM Corp. 2002, 2006
19 * 19 *
20 * s390 port, used ppc64 as template. Mike Grundy <grundym@us.ibm.com> 20 * s390 port, used ppc64 as template. Mike Grundy <grundym@us.ibm.com>
21 */ 21 */
diff --git a/arch/s390/kernel/lgr.c b/arch/s390/kernel/lgr.c
index 87f080b17af1..eca94e74d19a 100644
--- a/arch/s390/kernel/lgr.c
+++ b/arch/s390/kernel/lgr.c
@@ -45,7 +45,7 @@ struct lgr_info {
45/* 45/*
46 * LGR globals 46 * LGR globals
47 */ 47 */
48static void *lgr_page; 48static char lgr_page[PAGE_SIZE] __aligned(PAGE_SIZE);
49static struct lgr_info lgr_info_last; 49static struct lgr_info lgr_info_last;
50static struct lgr_info lgr_info_cur; 50static struct lgr_info lgr_info_cur;
51static struct debug_info *lgr_dbf; 51static struct debug_info *lgr_dbf;
@@ -74,7 +74,7 @@ static void cpascii(char *dst, char *src, int size)
74 */ 74 */
75static void lgr_stsi_1_1_1(struct lgr_info *lgr_info) 75static void lgr_stsi_1_1_1(struct lgr_info *lgr_info)
76{ 76{
77 struct sysinfo_1_1_1 *si = lgr_page; 77 struct sysinfo_1_1_1 *si = (void *) lgr_page;
78 78
79 if (stsi(si, 1, 1, 1) == -ENOSYS) 79 if (stsi(si, 1, 1, 1) == -ENOSYS)
80 return; 80 return;
@@ -91,7 +91,7 @@ static void lgr_stsi_1_1_1(struct lgr_info *lgr_info)
91 */ 91 */
92static void lgr_stsi_2_2_2(struct lgr_info *lgr_info) 92static void lgr_stsi_2_2_2(struct lgr_info *lgr_info)
93{ 93{
94 struct sysinfo_2_2_2 *si = lgr_page; 94 struct sysinfo_2_2_2 *si = (void *) lgr_page;
95 95
96 if (stsi(si, 2, 2, 2) == -ENOSYS) 96 if (stsi(si, 2, 2, 2) == -ENOSYS)
97 return; 97 return;
@@ -105,7 +105,7 @@ static void lgr_stsi_2_2_2(struct lgr_info *lgr_info)
105 */ 105 */
106static void lgr_stsi_3_2_2(struct lgr_info *lgr_info) 106static void lgr_stsi_3_2_2(struct lgr_info *lgr_info)
107{ 107{
108 struct sysinfo_3_2_2 *si = lgr_page; 108 struct sysinfo_3_2_2 *si = (void *) lgr_page;
109 int i; 109 int i;
110 110
111 if (stsi(si, 3, 2, 2) == -ENOSYS) 111 if (stsi(si, 3, 2, 2) == -ENOSYS)
@@ -183,14 +183,9 @@ static void lgr_timer_set(void)
183 */ 183 */
184static int __init lgr_init(void) 184static int __init lgr_init(void)
185{ 185{
186 lgr_page = (void *) __get_free_pages(GFP_KERNEL, 0);
187 if (!lgr_page)
188 return -ENOMEM;
189 lgr_dbf = debug_register("lgr", 1, 1, sizeof(struct lgr_info)); 186 lgr_dbf = debug_register("lgr", 1, 1, sizeof(struct lgr_info));
190 if (!lgr_dbf) { 187 if (!lgr_dbf)
191 free_page((unsigned long) lgr_page);
192 return -ENOMEM; 188 return -ENOMEM;
193 }
194 debug_register_view(lgr_dbf, &debug_hex_ascii_view); 189 debug_register_view(lgr_dbf, &debug_hex_ascii_view);
195 lgr_info_get(&lgr_info_last); 190 lgr_info_get(&lgr_info_last);
196 debug_event(lgr_dbf, 1, &lgr_info_last, sizeof(lgr_info_last)); 191 debug_event(lgr_dbf, 1, &lgr_info_last, sizeof(lgr_info_last));
diff --git a/arch/s390/kernel/machine_kexec.c b/arch/s390/kernel/machine_kexec.c
index cdacf8f91b2d..493304bdf1c7 100644
--- a/arch/s390/kernel/machine_kexec.c
+++ b/arch/s390/kernel/machine_kexec.c
@@ -1,7 +1,5 @@
1/* 1/*
2 * arch/s390/kernel/machine_kexec.c 2 * Copyright IBM Corp. 2005, 2011
3 *
4 * Copyright IBM Corp. 2005,2011
5 * 3 *
6 * Author(s): Rolf Adelsberger, 4 * Author(s): Rolf Adelsberger,
7 * Heiko Carstens <heiko.carstens@de.ibm.com> 5 * Heiko Carstens <heiko.carstens@de.ibm.com>
diff --git a/arch/s390/kernel/mcount.S b/arch/s390/kernel/mcount.S
index 7e2c38ba1373..4567ce20d900 100644
--- a/arch/s390/kernel/mcount.S
+++ b/arch/s390/kernel/mcount.S
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 2008,2009 2 * Copyright IBM Corp. 2008, 2009
3 * 3 *
4 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>, 4 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>,
5 * 5 *
diff --git a/arch/s390/kernel/mcount64.S b/arch/s390/kernel/mcount64.S
index f70cadec68fc..11332193db30 100644
--- a/arch/s390/kernel/mcount64.S
+++ b/arch/s390/kernel/mcount64.S
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 2008,2009 2 * Copyright IBM Corp. 2008, 2009
3 * 3 *
4 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>, 4 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>,
5 * 5 *
diff --git a/arch/s390/kernel/module.c b/arch/s390/kernel/module.c
index dfcb3436bad0..46412b1d7e1e 100644
--- a/arch/s390/kernel/module.c
+++ b/arch/s390/kernel/module.c
@@ -1,9 +1,8 @@
1/* 1/*
2 * arch/s390/kernel/module.c - Kernel module help for s390. 2 * Kernel module help for s390.
3 * 3 *
4 * S390 version 4 * S390 version
5 * Copyright (C) 2002, 2003 IBM Deutschland Entwicklung GmbH, 5 * Copyright IBM Corp. 2002, 2003
6 * IBM Corporation
7 * Author(s): Arnd Bergmann (arndb@de.ibm.com) 6 * Author(s): Arnd Bergmann (arndb@de.ibm.com)
8 * Martin Schwidefsky (schwidefsky@de.ibm.com) 7 * Martin Schwidefsky (schwidefsky@de.ibm.com)
9 * 8 *
diff --git a/arch/s390/kernel/nmi.c b/arch/s390/kernel/nmi.c
index 8c372ca61350..a6daa5c5cdb0 100644
--- a/arch/s390/kernel/nmi.c
+++ b/arch/s390/kernel/nmi.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Machine check handler 2 * Machine check handler
3 * 3 *
4 * Copyright IBM Corp. 2000,2009 4 * Copyright IBM Corp. 2000, 2009
5 * Author(s): Ingo Adlung <adlung@de.ibm.com>, 5 * Author(s): Ingo Adlung <adlung@de.ibm.com>,
6 * Martin Schwidefsky <schwidefsky@de.ibm.com>, 6 * Martin Schwidefsky <schwidefsky@de.ibm.com>,
7 * Cornelia Huck <cornelia.huck@de.ibm.com>, 7 * Cornelia Huck <cornelia.huck@de.ibm.com>,
diff --git a/arch/s390/kernel/os_info.c b/arch/s390/kernel/os_info.c
index 95fa5ac6c4ce..46480d81df00 100644
--- a/arch/s390/kernel/os_info.c
+++ b/arch/s390/kernel/os_info.c
@@ -60,7 +60,7 @@ void __init os_info_init(void)
60 os_info.version_minor = OS_INFO_VERSION_MINOR; 60 os_info.version_minor = OS_INFO_VERSION_MINOR;
61 os_info.magic = OS_INFO_MAGIC; 61 os_info.magic = OS_INFO_MAGIC;
62 os_info.csum = os_info_csum(&os_info); 62 os_info.csum = os_info_csum(&os_info);
63 memcpy_absolute(&S390_lowcore.os_info, &ptr, sizeof(ptr)); 63 mem_assign_absolute(S390_lowcore.os_info, (unsigned long) ptr);
64} 64}
65 65
66#ifdef CONFIG_CRASH_DUMP 66#ifdef CONFIG_CRASH_DUMP
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index 60055cefdd04..733175373a4c 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * This file handles the architecture dependent parts of process handling. 2 * This file handles the architecture dependent parts of process handling.
3 * 3 *
4 * Copyright IBM Corp. 1999,2009 4 * Copyright IBM Corp. 1999, 2009
5 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>, 5 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>,
6 * Hartmut Penner <hp@de.ibm.com>, 6 * Hartmut Penner <hp@de.ibm.com>,
7 * Denis Joseph Barrow, 7 * Denis Joseph Barrow,
@@ -25,8 +25,8 @@
25#include <linux/module.h> 25#include <linux/module.h>
26#include <asm/io.h> 26#include <asm/io.h>
27#include <asm/processor.h> 27#include <asm/processor.h>
28#include <asm/vtimer.h>
28#include <asm/irq.h> 29#include <asm/irq.h>
29#include <asm/timer.h>
30#include <asm/nmi.h> 30#include <asm/nmi.h>
31#include <asm/smp.h> 31#include <asm/smp.h>
32#include <asm/switch_to.h> 32#include <asm/switch_to.h>
diff --git a/arch/s390/kernel/processor.c b/arch/s390/kernel/processor.c
index 6e0073e43f54..572d4c9cb33b 100644
--- a/arch/s390/kernel/processor.c
+++ b/arch/s390/kernel/processor.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/s390/kernel/processor.c
3 *
4 * Copyright IBM Corp. 2008 2 * Copyright IBM Corp. 2008
5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 3 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
6 */ 4 */
@@ -25,13 +23,15 @@ static DEFINE_PER_CPU(struct cpuid, cpu_id);
25 */ 23 */
26void __cpuinit cpu_init(void) 24void __cpuinit cpu_init(void)
27{ 25{
28 struct cpuid *id = &per_cpu(cpu_id, smp_processor_id()); 26 struct s390_idle_data *idle = &__get_cpu_var(s390_idle);
27 struct cpuid *id = &__get_cpu_var(cpu_id);
29 28
30 get_cpu_id(id); 29 get_cpu_id(id);
31 atomic_inc(&init_mm.mm_count); 30 atomic_inc(&init_mm.mm_count);
32 current->active_mm = &init_mm; 31 current->active_mm = &init_mm;
33 BUG_ON(current->mm); 32 BUG_ON(current->mm);
34 enter_lazy_tlb(&init_mm, current); 33 enter_lazy_tlb(&init_mm, current);
34 memset(idle, 0, sizeof(*idle));
35} 35}
36 36
37/* 37/*
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
index 4993e689b2c2..f4eb37680b91 100644
--- a/arch/s390/kernel/ptrace.c
+++ b/arch/s390/kernel/ptrace.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Ptrace user space interface. 2 * Ptrace user space interface.
3 * 3 *
4 * Copyright IBM Corp. 1999,2010 4 * Copyright IBM Corp. 1999, 2010
5 * Author(s): Denis Joseph Barrow 5 * Author(s): Denis Joseph Barrow
6 * Martin Schwidefsky (schwidefsky@de.ibm.com) 6 * Martin Schwidefsky (schwidefsky@de.ibm.com)
7 */ 7 */
diff --git a/arch/s390/kernel/reipl.S b/arch/s390/kernel/reipl.S
index ad67c214be04..dd8016b0477e 100644
--- a/arch/s390/kernel/reipl.S
+++ b/arch/s390/kernel/reipl.S
@@ -1,13 +1,12 @@
1/* 1/*
2 * arch/s390/kernel/reipl.S
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 2000
6 * Author(s): Holger Smolinski (Holger.Smolinski@de.ibm.com) 4 * Author(s): Holger Smolinski (Holger.Smolinski@de.ibm.com)
7 */ 5 */
8 6
9#include <linux/linkage.h> 7#include <linux/linkage.h>
10#include <asm/asm-offsets.h> 8#include <asm/asm-offsets.h>
9#include <asm/sigp.h>
11 10
12# 11#
13# store_status: Empty implementation until kdump is supported on 31 bit 12# store_status: Empty implementation until kdump is supported on 31 bit
@@ -60,7 +59,7 @@ ENTRY(do_reipl_asm)
60 bas %r14,.Ldisab-.Lpg0(%r13) 59 bas %r14,.Ldisab-.Lpg0(%r13)
61.L003: st %r1,__LC_SUBCHANNEL_ID 60.L003: st %r1,__LC_SUBCHANNEL_ID
62 lpsw 0 61 lpsw 0
63 sigp 0,0,0(6) 62 sigp 0,0,SIGP_RESTART
64.Ldisab: st %r14,.Ldispsw+4-.Lpg0(%r13) 63.Ldisab: st %r14,.Ldispsw+4-.Lpg0(%r13)
65 lpsw .Ldispsw-.Lpg0(%r13) 64 lpsw .Ldispsw-.Lpg0(%r13)
66 .align 8 65 .align 8
diff --git a/arch/s390/kernel/reipl64.S b/arch/s390/kernel/reipl64.S
index 36b32658fb24..dc3b1273c4dc 100644
--- a/arch/s390/kernel/reipl64.S
+++ b/arch/s390/kernel/reipl64.S
@@ -1,11 +1,12 @@
1/* 1/*
2 * Copyright IBM Corp 2000,2011 2 * Copyright IBM Corp 2000, 2011
3 * Author(s): Holger Smolinski <Holger.Smolinski@de.ibm.com>, 3 * Author(s): Holger Smolinski <Holger.Smolinski@de.ibm.com>,
4 * Denis Joseph Barrow, 4 * Denis Joseph Barrow,
5 */ 5 */
6 6
7#include <linux/linkage.h> 7#include <linux/linkage.h>
8#include <asm/asm-offsets.h> 8#include <asm/asm-offsets.h>
9#include <asm/sigp.h>
9 10
10# 11#
11# store_status 12# store_status
@@ -106,7 +107,7 @@ ENTRY(do_reipl_asm)
106.L003: st %r1,__LC_SUBCHANNEL_ID 107.L003: st %r1,__LC_SUBCHANNEL_ID
107 lhi %r1,0 # mode 0 = esa 108 lhi %r1,0 # mode 0 = esa
108 slr %r0,%r0 # set cpuid to zero 109 slr %r0,%r0 # set cpuid to zero
109 sigp %r1,%r0,0x12 # switch to esa mode 110 sigp %r1,%r0,SIGP_SET_ARCHITECTURE # switch to esa mode
110 lpsw 0 111 lpsw 0
111.Ldisab: sll %r14,1 112.Ldisab: sll %r14,1
112 srl %r14,1 # need to kill hi bit to avoid specification exceptions. 113 srl %r14,1 # need to kill hi bit to avoid specification exceptions.
diff --git a/arch/s390/kernel/relocate_kernel.S b/arch/s390/kernel/relocate_kernel.S
index c91d70aede91..f4e6f20e117a 100644
--- a/arch/s390/kernel/relocate_kernel.S
+++ b/arch/s390/kernel/relocate_kernel.S
@@ -1,7 +1,5 @@
1/* 1/*
2 * arch/s390/kernel/relocate_kernel.S 2 * Copyright IBM Corp. 2005
3 *
4 * (C) Copyright IBM Corp. 2005
5 * 3 *
6 * Author(s): Rolf Adelsberger, 4 * Author(s): Rolf Adelsberger,
7 * Heiko Carstens <heiko.carstens@de.ibm.com> 5 * Heiko Carstens <heiko.carstens@de.ibm.com>
@@ -9,6 +7,7 @@
9 */ 7 */
10 8
11#include <linux/linkage.h> 9#include <linux/linkage.h>
10#include <asm/sigp.h>
12 11
13/* 12/*
14 * moves the new kernel to its destination... 13 * moves the new kernel to its destination...
@@ -93,7 +92,7 @@ ENTRY(relocate_kernel)
93 .no_diag308: 92 .no_diag308:
94 sr %r1,%r1 # clear %r1 93 sr %r1,%r1 # clear %r1
95 sr %r2,%r2 # clear %r2 94 sr %r2,%r2 # clear %r2
96 sigp %r1,%r2,0x12 # set cpuid to zero 95 sigp %r1,%r2,SIGP_SET_ARCHITECTURE # set cpuid to zero
97 lpsw 0 # hopefully start new kernel... 96 lpsw 0 # hopefully start new kernel...
98 97
99 .align 8 98 .align 8
diff --git a/arch/s390/kernel/relocate_kernel64.S b/arch/s390/kernel/relocate_kernel64.S
index 7c3ce589a7f0..cfac28330b03 100644
--- a/arch/s390/kernel/relocate_kernel64.S
+++ b/arch/s390/kernel/relocate_kernel64.S
@@ -1,7 +1,5 @@
1/* 1/*
2 * arch/s390/kernel/relocate_kernel64.S 2 * Copyright IBM Corp. 2005
3 *
4 * (C) Copyright IBM Corp. 2005
5 * 3 *
6 * Author(s): Rolf Adelsberger, 4 * Author(s): Rolf Adelsberger,
7 * Heiko Carstens <heiko.carstens@de.ibm.com> 5 * Heiko Carstens <heiko.carstens@de.ibm.com>
@@ -9,6 +7,7 @@
9 */ 7 */
10 8
11#include <linux/linkage.h> 9#include <linux/linkage.h>
10#include <asm/sigp.h>
12 11
13/* 12/*
14 * moves the new kernel to its destination... 13 * moves the new kernel to its destination...
@@ -45,7 +44,7 @@ ENTRY(relocate_kernel)
45 diag %r0,%r0,0x308 44 diag %r0,%r0,0x308
46 .back: 45 .back:
47 lhi %r1,1 # mode 1 = esame 46 lhi %r1,1 # mode 1 = esame
48 sigp %r1,%r0,0x12 # switch to esame mode 47 sigp %r1,%r0,SIGP_SET_ARCHITECTURE # switch to esame mode
49 sam64 # switch to 64 bit addressing mode 48 sam64 # switch to 64 bit addressing mode
50 basr %r13,0 49 basr %r13,0
51 .back_base: 50 .back_base:
@@ -96,7 +95,7 @@ ENTRY(relocate_kernel)
96 sam31 # 31 bit mode 95 sam31 # 31 bit mode
97 sr %r1,%r1 # erase register r1 96 sr %r1,%r1 # erase register r1
98 sr %r2,%r2 # erase register r2 97 sr %r2,%r2 # erase register r2
99 sigp %r1,%r2,0x12 # set cpuid to zero 98 sigp %r1,%r2,SIGP_SET_ARCHITECTURE # set cpuid to zero
100 lpsw 0 # hopefully start new kernel... 99 lpsw 0 # hopefully start new kernel...
101 100
102 .align 8 101 .align 8
diff --git a/arch/s390/kernel/sclp.S b/arch/s390/kernel/sclp.S
index 95792d846bb6..bf053898630d 100644
--- a/arch/s390/kernel/sclp.S
+++ b/arch/s390/kernel/sclp.S
@@ -1,7 +1,7 @@
1/* 1/*
2 * Mini SCLP driver. 2 * Mini SCLP driver.
3 * 3 *
4 * Copyright IBM Corp. 2004,2009 4 * Copyright IBM Corp. 2004, 2009
5 * 5 *
6 * Author(s): Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>, 6 * Author(s): Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>,
7 * Heiko Carstens <heiko.carstens@de.ibm.com>, 7 * Heiko Carstens <heiko.carstens@de.ibm.com>,
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 489d1d8d96b0..34d75b50526c 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -1,8 +1,6 @@
1/* 1/*
2 * arch/s390/kernel/setup.c
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) IBM Corp. 1999,2012 3 * Copyright IBM Corp. 1999, 2012
6 * Author(s): Hartmut Penner (hp@de.ibm.com), 4 * Author(s): Hartmut Penner (hp@de.ibm.com),
7 * Martin Schwidefsky (schwidefsky@de.ibm.com) 5 * Martin Schwidefsky (schwidefsky@de.ibm.com)
8 * 6 *
@@ -430,10 +428,11 @@ static void __init setup_lowcore(void)
430 lc->restart_source = -1UL; 428 lc->restart_source = -1UL;
431 429
432 /* Setup absolute zero lowcore */ 430 /* Setup absolute zero lowcore */
433 memcpy_absolute(&S390_lowcore.restart_stack, &lc->restart_stack, 431 mem_assign_absolute(S390_lowcore.restart_stack, lc->restart_stack);
434 4 * sizeof(unsigned long)); 432 mem_assign_absolute(S390_lowcore.restart_fn, lc->restart_fn);
435 memcpy_absolute(&S390_lowcore.restart_psw, &lc->restart_psw, 433 mem_assign_absolute(S390_lowcore.restart_data, lc->restart_data);
436 sizeof(lc->restart_psw)); 434 mem_assign_absolute(S390_lowcore.restart_source, lc->restart_source);
435 mem_assign_absolute(S390_lowcore.restart_psw, lc->restart_psw);
437 436
438 set_prefix((u32)(unsigned long) lc); 437 set_prefix((u32)(unsigned long) lc);
439 lowcore_ptr[0] = lc; 438 lowcore_ptr[0] = lc;
@@ -598,9 +597,7 @@ static void __init setup_memory_end(void)
598static void __init setup_vmcoreinfo(void) 597static void __init setup_vmcoreinfo(void)
599{ 598{
600#ifdef CONFIG_KEXEC 599#ifdef CONFIG_KEXEC
601 unsigned long ptr = paddr_vmcoreinfo_note(); 600 mem_assign_absolute(S390_lowcore.vmcore_info, paddr_vmcoreinfo_note());
602
603 memcpy_absolute(&S390_lowcore.vmcore_info, &ptr, sizeof(ptr));
604#endif 601#endif
605} 602}
606 603
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index ac565b44aabb..c13a2a37ef00 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -1,7 +1,5 @@
1/* 1/*
2 * arch/s390/kernel/signal.c 2 * Copyright IBM Corp. 1999, 2006
3 *
4 * Copyright (C) IBM Corp. 1999,2006
5 * Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) 3 * Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
6 * 4 *
7 * Based on Intel version 5 * Based on Intel version
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 8dca9c248ac7..720fda1620f2 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * SMP related functions 2 * SMP related functions
3 * 3 *
4 * Copyright IBM Corp. 1999,2012 4 * Copyright IBM Corp. 1999, 2012
5 * Author(s): Denis Joseph Barrow, 5 * Author(s): Denis Joseph Barrow,
6 * Martin Schwidefsky <schwidefsky@de.ibm.com>, 6 * Martin Schwidefsky <schwidefsky@de.ibm.com>,
7 * Heiko Carstens <heiko.carstens@de.ibm.com>, 7 * Heiko Carstens <heiko.carstens@de.ibm.com>,
@@ -38,40 +38,16 @@
38#include <asm/setup.h> 38#include <asm/setup.h>
39#include <asm/irq.h> 39#include <asm/irq.h>
40#include <asm/tlbflush.h> 40#include <asm/tlbflush.h>
41#include <asm/timer.h> 41#include <asm/vtimer.h>
42#include <asm/lowcore.h> 42#include <asm/lowcore.h>
43#include <asm/sclp.h> 43#include <asm/sclp.h>
44#include <asm/vdso.h> 44#include <asm/vdso.h>
45#include <asm/debug.h> 45#include <asm/debug.h>
46#include <asm/os_info.h> 46#include <asm/os_info.h>
47#include <asm/sigp.h>
47#include "entry.h" 48#include "entry.h"
48 49
49enum { 50enum {
50 sigp_sense = 1,
51 sigp_external_call = 2,
52 sigp_emergency_signal = 3,
53 sigp_start = 4,
54 sigp_stop = 5,
55 sigp_restart = 6,
56 sigp_stop_and_store_status = 9,
57 sigp_initial_cpu_reset = 11,
58 sigp_cpu_reset = 12,
59 sigp_set_prefix = 13,
60 sigp_store_status_at_address = 14,
61 sigp_store_extended_status_at_address = 15,
62 sigp_set_architecture = 18,
63 sigp_conditional_emergency_signal = 19,
64 sigp_sense_running = 21,
65};
66
67enum {
68 sigp_order_code_accepted = 0,
69 sigp_status_stored = 1,
70 sigp_busy = 2,
71 sigp_not_operational = 3,
72};
73
74enum {
75 ec_schedule = 0, 51 ec_schedule = 0,
76 ec_call_function, 52 ec_call_function,
77 ec_call_function_single, 53 ec_call_function_single,
@@ -124,7 +100,7 @@ static inline int __pcpu_sigp_relax(u16 addr, u8 order, u32 parm, u32 *status)
124 100
125 while (1) { 101 while (1) {
126 cc = __pcpu_sigp(addr, order, parm, status); 102 cc = __pcpu_sigp(addr, order, parm, status);
127 if (cc != sigp_busy) 103 if (cc != SIGP_CC_BUSY)
128 return cc; 104 return cc;
129 cpu_relax(); 105 cpu_relax();
130 } 106 }
@@ -136,7 +112,7 @@ static int pcpu_sigp_retry(struct pcpu *pcpu, u8 order, u32 parm)
136 112
137 for (retry = 0; ; retry++) { 113 for (retry = 0; ; retry++) {
138 cc = __pcpu_sigp(pcpu->address, order, parm, &pcpu->status); 114 cc = __pcpu_sigp(pcpu->address, order, parm, &pcpu->status);
139 if (cc != sigp_busy) 115 if (cc != SIGP_CC_BUSY)
140 break; 116 break;
141 if (retry >= 3) 117 if (retry >= 3)
142 udelay(10); 118 udelay(10);
@@ -146,20 +122,19 @@ static int pcpu_sigp_retry(struct pcpu *pcpu, u8 order, u32 parm)
146 122
147static inline int pcpu_stopped(struct pcpu *pcpu) 123static inline int pcpu_stopped(struct pcpu *pcpu)
148{ 124{
149 if (__pcpu_sigp(pcpu->address, sigp_sense, 125 if (__pcpu_sigp(pcpu->address, SIGP_SENSE,
150 0, &pcpu->status) != sigp_status_stored) 126 0, &pcpu->status) != SIGP_CC_STATUS_STORED)
151 return 0; 127 return 0;
152 /* Check for stopped and check stop state */ 128 return !!(pcpu->status & (SIGP_STATUS_CHECK_STOP|SIGP_STATUS_STOPPED));
153 return !!(pcpu->status & 0x50);
154} 129}
155 130
156static inline int pcpu_running(struct pcpu *pcpu) 131static inline int pcpu_running(struct pcpu *pcpu)
157{ 132{
158 if (__pcpu_sigp(pcpu->address, sigp_sense_running, 133 if (__pcpu_sigp(pcpu->address, SIGP_SENSE_RUNNING,
159 0, &pcpu->status) != sigp_status_stored) 134 0, &pcpu->status) != SIGP_CC_STATUS_STORED)
160 return 1; 135 return 1;
161 /* Check for running status */ 136 /* Status stored condition code is equivalent to cpu not running. */
162 return !(pcpu->status & 0x400); 137 return 0;
163} 138}
164 139
165/* 140/*
@@ -181,7 +156,7 @@ static void pcpu_ec_call(struct pcpu *pcpu, int ec_bit)
181 156
182 set_bit(ec_bit, &pcpu->ec_mask); 157 set_bit(ec_bit, &pcpu->ec_mask);
183 order = pcpu_running(pcpu) ? 158 order = pcpu_running(pcpu) ?
184 sigp_external_call : sigp_emergency_signal; 159 SIGP_EXTERNAL_CALL : SIGP_EMERGENCY_SIGNAL;
185 pcpu_sigp_retry(pcpu, order, 0); 160 pcpu_sigp_retry(pcpu, order, 0);
186} 161}
187 162
@@ -214,7 +189,7 @@ static int __cpuinit pcpu_alloc_lowcore(struct pcpu *pcpu, int cpu)
214 goto out; 189 goto out;
215#endif 190#endif
216 lowcore_ptr[cpu] = lc; 191 lowcore_ptr[cpu] = lc;
217 pcpu_sigp_retry(pcpu, sigp_set_prefix, (u32)(unsigned long) lc); 192 pcpu_sigp_retry(pcpu, SIGP_SET_PREFIX, (u32)(unsigned long) lc);
218 return 0; 193 return 0;
219out: 194out:
220 if (pcpu != &pcpu_devices[0]) { 195 if (pcpu != &pcpu_devices[0]) {
@@ -229,7 +204,7 @@ out:
229 204
230static void pcpu_free_lowcore(struct pcpu *pcpu) 205static void pcpu_free_lowcore(struct pcpu *pcpu)
231{ 206{
232 pcpu_sigp_retry(pcpu, sigp_set_prefix, 0); 207 pcpu_sigp_retry(pcpu, SIGP_SET_PREFIX, 0);
233 lowcore_ptr[pcpu - pcpu_devices] = NULL; 208 lowcore_ptr[pcpu - pcpu_devices] = NULL;
234#ifndef CONFIG_64BIT 209#ifndef CONFIG_64BIT
235 if (MACHINE_HAS_IEEE) { 210 if (MACHINE_HAS_IEEE) {
@@ -288,7 +263,7 @@ static void pcpu_start_fn(struct pcpu *pcpu, void (*func)(void *), void *data)
288 lc->restart_fn = (unsigned long) func; 263 lc->restart_fn = (unsigned long) func;
289 lc->restart_data = (unsigned long) data; 264 lc->restart_data = (unsigned long) data;
290 lc->restart_source = -1UL; 265 lc->restart_source = -1UL;
291 pcpu_sigp_retry(pcpu, sigp_restart, 0); 266 pcpu_sigp_retry(pcpu, SIGP_RESTART, 0);
292} 267}
293 268
294/* 269/*
@@ -298,26 +273,26 @@ static void pcpu_delegate(struct pcpu *pcpu, void (*func)(void *),
298 void *data, unsigned long stack) 273 void *data, unsigned long stack)
299{ 274{
300 struct _lowcore *lc = lowcore_ptr[pcpu - pcpu_devices]; 275 struct _lowcore *lc = lowcore_ptr[pcpu - pcpu_devices];
301 struct { 276 unsigned long source_cpu = stap();
302 unsigned long stack;
303 void *func;
304 void *data;
305 unsigned long source;
306 } restart = { stack, func, data, stap() };
307 277
308 __load_psw_mask(psw_kernel_bits); 278 __load_psw_mask(psw_kernel_bits);
309 if (pcpu->address == restart.source) 279 if (pcpu->address == source_cpu)
310 func(data); /* should not return */ 280 func(data); /* should not return */
311 /* Stop target cpu (if func returns this stops the current cpu). */ 281 /* Stop target cpu (if func returns this stops the current cpu). */
312 pcpu_sigp_retry(pcpu, sigp_stop, 0); 282 pcpu_sigp_retry(pcpu, SIGP_STOP, 0);
313 /* Restart func on the target cpu and stop the current cpu. */ 283 /* Restart func on the target cpu and stop the current cpu. */
314 memcpy_absolute(&lc->restart_stack, &restart, sizeof(restart)); 284 mem_assign_absolute(lc->restart_stack, stack);
285 mem_assign_absolute(lc->restart_fn, (unsigned long) func);
286 mem_assign_absolute(lc->restart_data, (unsigned long) data);
287 mem_assign_absolute(lc->restart_source, source_cpu);
315 asm volatile( 288 asm volatile(
316 "0: sigp 0,%0,6 # sigp restart to target cpu\n" 289 "0: sigp 0,%0,%2 # sigp restart to target cpu\n"
317 " brc 2,0b # busy, try again\n" 290 " brc 2,0b # busy, try again\n"
318 "1: sigp 0,%1,5 # sigp stop to current cpu\n" 291 "1: sigp 0,%1,%3 # sigp stop to current cpu\n"
319 " brc 2,1b # busy, try again\n" 292 " brc 2,1b # busy, try again\n"
320 : : "d" (pcpu->address), "d" (restart.source) : "0", "1", "cc"); 293 : : "d" (pcpu->address), "d" (source_cpu),
294 "K" (SIGP_RESTART), "K" (SIGP_STOP)
295 : "0", "1", "cc");
321 for (;;) ; 296 for (;;) ;
322} 297}
323 298
@@ -388,8 +363,8 @@ void smp_emergency_stop(cpumask_t *cpumask)
388 for_each_cpu(cpu, cpumask) { 363 for_each_cpu(cpu, cpumask) {
389 struct pcpu *pcpu = pcpu_devices + cpu; 364 struct pcpu *pcpu = pcpu_devices + cpu;
390 set_bit(ec_stop_cpu, &pcpu->ec_mask); 365 set_bit(ec_stop_cpu, &pcpu->ec_mask);
391 while (__pcpu_sigp(pcpu->address, sigp_emergency_signal, 366 while (__pcpu_sigp(pcpu->address, SIGP_EMERGENCY_SIGNAL,
392 0, NULL) == sigp_busy && 367 0, NULL) == SIGP_CC_BUSY &&
393 get_clock() < end) 368 get_clock() < end)
394 cpu_relax(); 369 cpu_relax();
395 } 370 }
@@ -425,7 +400,7 @@ void smp_send_stop(void)
425 /* stop all processors */ 400 /* stop all processors */
426 for_each_cpu(cpu, &cpumask) { 401 for_each_cpu(cpu, &cpumask) {
427 struct pcpu *pcpu = pcpu_devices + cpu; 402 struct pcpu *pcpu = pcpu_devices + cpu;
428 pcpu_sigp_retry(pcpu, sigp_stop, 0); 403 pcpu_sigp_retry(pcpu, SIGP_STOP, 0);
429 while (!pcpu_stopped(pcpu)) 404 while (!pcpu_stopped(pcpu))
430 cpu_relax(); 405 cpu_relax();
431 } 406 }
@@ -436,7 +411,7 @@ void smp_send_stop(void)
436 */ 411 */
437void smp_stop_cpu(void) 412void smp_stop_cpu(void)
438{ 413{
439 pcpu_sigp_retry(pcpu_devices + smp_processor_id(), sigp_stop, 0); 414 pcpu_sigp_retry(pcpu_devices + smp_processor_id(), SIGP_STOP, 0);
440 for (;;) ; 415 for (;;) ;
441} 416}
442 417
@@ -590,7 +565,7 @@ static void __init smp_get_save_area(int cpu, u16 address)
590 } 565 }
591#endif 566#endif
592 /* Get the registers of a non-boot cpu. */ 567 /* Get the registers of a non-boot cpu. */
593 __pcpu_sigp_relax(address, sigp_stop_and_store_status, 0, NULL); 568 __pcpu_sigp_relax(address, SIGP_STOP_AND_STORE_STATUS, 0, NULL);
594 memcpy_real(save_area, lc + SAVE_AREA_BASE, sizeof(*save_area)); 569 memcpy_real(save_area, lc + SAVE_AREA_BASE, sizeof(*save_area));
595} 570}
596 571
@@ -599,8 +574,8 @@ int smp_store_status(int cpu)
599 struct pcpu *pcpu; 574 struct pcpu *pcpu;
600 575
601 pcpu = pcpu_devices + cpu; 576 pcpu = pcpu_devices + cpu;
602 if (__pcpu_sigp_relax(pcpu->address, sigp_stop_and_store_status, 577 if (__pcpu_sigp_relax(pcpu->address, SIGP_STOP_AND_STORE_STATUS,
603 0, NULL) != sigp_order_code_accepted) 578 0, NULL) != SIGP_CC_ORDER_CODE_ACCEPTED)
604 return -EIO; 579 return -EIO;
605 return 0; 580 return 0;
606} 581}
@@ -621,8 +596,8 @@ static struct sclp_cpu_info *smp_get_cpu_info(void)
621 if (info && (use_sigp_detection || sclp_get_cpu_info(info))) { 596 if (info && (use_sigp_detection || sclp_get_cpu_info(info))) {
622 use_sigp_detection = 1; 597 use_sigp_detection = 1;
623 for (address = 0; address <= MAX_CPU_ADDRESS; address++) { 598 for (address = 0; address <= MAX_CPU_ADDRESS; address++) {
624 if (__pcpu_sigp_relax(address, sigp_sense, 0, NULL) == 599 if (__pcpu_sigp_relax(address, SIGP_SENSE, 0, NULL) ==
625 sigp_not_operational) 600 SIGP_CC_NOT_OPERATIONAL)
626 continue; 601 continue;
627 info->cpu[info->configured].address = address; 602 info->cpu[info->configured].address = address;
628 info->configured++; 603 info->configured++;
@@ -732,8 +707,8 @@ int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle)
732 pcpu = pcpu_devices + cpu; 707 pcpu = pcpu_devices + cpu;
733 if (pcpu->state != CPU_STATE_CONFIGURED) 708 if (pcpu->state != CPU_STATE_CONFIGURED)
734 return -EIO; 709 return -EIO;
735 if (pcpu_sigp_retry(pcpu, sigp_initial_cpu_reset, 0) != 710 if (pcpu_sigp_retry(pcpu, SIGP_INITIAL_CPU_RESET, 0) !=
736 sigp_order_code_accepted) 711 SIGP_CC_ORDER_CODE_ACCEPTED)
737 return -EIO; 712 return -EIO;
738 713
739 rc = pcpu_alloc_lowcore(pcpu, cpu); 714 rc = pcpu_alloc_lowcore(pcpu, cpu);
@@ -793,7 +768,7 @@ void __cpu_die(unsigned int cpu)
793void __noreturn cpu_die(void) 768void __noreturn cpu_die(void)
794{ 769{
795 idle_task_exit(); 770 idle_task_exit();
796 pcpu_sigp_retry(pcpu_devices + smp_processor_id(), sigp_stop, 0); 771 pcpu_sigp_retry(pcpu_devices + smp_processor_id(), SIGP_STOP, 0);
797 for (;;) ; 772 for (;;) ;
798} 773}
799 774
@@ -940,7 +915,7 @@ static ssize_t show_idle_count(struct device *dev,
940 do { 915 do {
941 sequence = ACCESS_ONCE(idle->sequence); 916 sequence = ACCESS_ONCE(idle->sequence);
942 idle_count = ACCESS_ONCE(idle->idle_count); 917 idle_count = ACCESS_ONCE(idle->idle_count);
943 if (ACCESS_ONCE(idle->idle_enter)) 918 if (ACCESS_ONCE(idle->clock_idle_enter))
944 idle_count++; 919 idle_count++;
945 } while ((sequence & 1) || (idle->sequence != sequence)); 920 } while ((sequence & 1) || (idle->sequence != sequence));
946 return sprintf(buf, "%llu\n", idle_count); 921 return sprintf(buf, "%llu\n", idle_count);
@@ -958,8 +933,8 @@ static ssize_t show_idle_time(struct device *dev,
958 now = get_clock(); 933 now = get_clock();
959 sequence = ACCESS_ONCE(idle->sequence); 934 sequence = ACCESS_ONCE(idle->sequence);
960 idle_time = ACCESS_ONCE(idle->idle_time); 935 idle_time = ACCESS_ONCE(idle->idle_time);
961 idle_enter = ACCESS_ONCE(idle->idle_enter); 936 idle_enter = ACCESS_ONCE(idle->clock_idle_enter);
962 idle_exit = ACCESS_ONCE(idle->idle_exit); 937 idle_exit = ACCESS_ONCE(idle->clock_idle_exit);
963 } while ((sequence & 1) || (idle->sequence != sequence)); 938 } while ((sequence & 1) || (idle->sequence != sequence));
964 idle_time += idle_enter ? ((idle_exit ? : now) - idle_enter) : 0; 939 idle_time += idle_enter ? ((idle_exit ? : now) - idle_enter) : 0;
965 return sprintf(buf, "%llu\n", idle_time >> 12); 940 return sprintf(buf, "%llu\n", idle_time >> 12);
@@ -982,14 +957,11 @@ static int __cpuinit smp_cpu_notify(struct notifier_block *self,
982 unsigned int cpu = (unsigned int)(long)hcpu; 957 unsigned int cpu = (unsigned int)(long)hcpu;
983 struct cpu *c = &pcpu_devices[cpu].cpu; 958 struct cpu *c = &pcpu_devices[cpu].cpu;
984 struct device *s = &c->dev; 959 struct device *s = &c->dev;
985 struct s390_idle_data *idle;
986 int err = 0; 960 int err = 0;
987 961
988 switch (action) { 962 switch (action) {
989 case CPU_ONLINE: 963 case CPU_ONLINE:
990 case CPU_ONLINE_FROZEN: 964 case CPU_ONLINE_FROZEN:
991 idle = &per_cpu(s390_idle, cpu);
992 memset(idle, 0, sizeof(struct s390_idle_data));
993 err = sysfs_create_group(&s->kobj, &cpu_online_attr_group); 965 err = sysfs_create_group(&s->kobj, &cpu_online_attr_group);
994 break; 966 break;
995 case CPU_DEAD: 967 case CPU_DEAD:
diff --git a/arch/s390/kernel/stacktrace.c b/arch/s390/kernel/stacktrace.c
index 8841919ef7e6..1785cd82253c 100644
--- a/arch/s390/kernel/stacktrace.c
+++ b/arch/s390/kernel/stacktrace.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * arch/s390/kernel/stacktrace.c
3 *
4 * Stack trace management functions 2 * Stack trace management functions
5 * 3 *
6 * Copyright (C) IBM Corp. 2006 4 * Copyright IBM Corp. 2006
7 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> 5 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
8 */ 6 */
9 7
diff --git a/arch/s390/kernel/swsusp_asm64.S b/arch/s390/kernel/swsusp_asm64.S
index dd70ef046058..d4ca4e0617b5 100644
--- a/arch/s390/kernel/swsusp_asm64.S
+++ b/arch/s390/kernel/swsusp_asm64.S
@@ -12,6 +12,7 @@
12#include <asm/ptrace.h> 12#include <asm/ptrace.h>
13#include <asm/thread_info.h> 13#include <asm/thread_info.h>
14#include <asm/asm-offsets.h> 14#include <asm/asm-offsets.h>
15#include <asm/sigp.h>
15 16
16/* 17/*
17 * Save register context in absolute 0 lowcore and call swsusp_save() to 18 * Save register context in absolute 0 lowcore and call swsusp_save() to
@@ -163,7 +164,7 @@ ENTRY(swsusp_arch_resume)
163 diag %r0,%r0,0x308 164 diag %r0,%r0,0x308
164restart_entry: 165restart_entry:
165 lhi %r1,1 166 lhi %r1,1
166 sigp %r1,%r0,0x12 167 sigp %r1,%r0,SIGP_SET_ARCHITECTURE
167 sam64 168 sam64
168 larl %r1,.Lnew_pgm_check_psw 169 larl %r1,.Lnew_pgm_check_psw
169 lpswe 0(%r1) 170 lpswe 0(%r1)
@@ -179,7 +180,7 @@ pgm_check_entry:
179 larl %r4,.Lrestart_suspend_psw /* Set new restart PSW */ 180 larl %r4,.Lrestart_suspend_psw /* Set new restart PSW */
180 mvc __LC_RST_NEW_PSW(16,%r0),0(%r4) 181 mvc __LC_RST_NEW_PSW(16,%r0),0(%r4)
1813: 1823:
182 sigp %r9,%r1,11 /* sigp initial cpu reset */ 183 sigp %r9,%r1,SIGP_INITIAL_CPU_RESET /* sigp initial cpu reset */
183 brc 8,4f /* accepted */ 184 brc 8,4f /* accepted */
184 brc 2,3b /* busy, try again */ 185 brc 2,3b /* busy, try again */
185 186
@@ -190,16 +191,16 @@ pgm_check_entry:
190 larl %r3,_sclp_print_early 191 larl %r3,_sclp_print_early
191 lghi %r1,0 192 lghi %r1,0
192 sam31 193 sam31
193 sigp %r1,%r0,0x12 194 sigp %r1,%r0,SIGP_SET_ARCHITECTURE
194 basr %r14,%r3 195 basr %r14,%r3
195 larl %r3,.Ldisabled_wait_31 196 larl %r3,.Ldisabled_wait_31
196 lpsw 0(%r3) 197 lpsw 0(%r3)
1974: 1984:
198 /* Switch to suspend CPU */ 199 /* Switch to suspend CPU */
199 sigp %r9,%r1,6 /* sigp restart to suspend CPU */ 200 sigp %r9,%r1,SIGP_RESTART /* sigp restart to suspend CPU */
200 brc 2,4b /* busy, try again */ 201 brc 2,4b /* busy, try again */
2015: 2025:
202 sigp %r9,%r2,5 /* sigp stop to current resume CPU */ 203 sigp %r9,%r2,SIGP_STOP /* sigp stop to current resume CPU */
203 brc 2,5b /* busy, try again */ 204 brc 2,5b /* busy, try again */
2046: j 6b 2056: j 6b
205 206
@@ -207,7 +208,7 @@ restart_suspend:
207 larl %r1,.Lresume_cpu 208 larl %r1,.Lresume_cpu
208 llgh %r2,0(%r1) 209 llgh %r2,0(%r1)
2097: 2107:
210 sigp %r9,%r2,1 /* sigp sense, wait for resume CPU */ 211 sigp %r9,%r2,SIGP_SENSE /* sigp sense, wait for resume CPU */
211 brc 8,7b /* accepted, status 0, still running */ 212 brc 8,7b /* accepted, status 0, still running */
212 brc 2,7b /* busy, try again */ 213 brc 2,7b /* busy, try again */
213 tmll %r9,0x40 /* Test if resume CPU is stopped */ 214 tmll %r9,0x40 /* Test if resume CPU is stopped */
diff --git a/arch/s390/kernel/sys_s390.c b/arch/s390/kernel/sys_s390.c
index 78ea1948ff51..b4a29eee41b8 100644
--- a/arch/s390/kernel/sys_s390.c
+++ b/arch/s390/kernel/sys_s390.c
@@ -1,8 +1,6 @@
1/* 1/*
2 * arch/s390/kernel/sys_s390.c
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999, 2000
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
7 * Thomas Spatzier (tspat@de.ibm.com) 5 * Thomas Spatzier (tspat@de.ibm.com)
8 * 6 *
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index d4e1cb1dbcd1..dcec960fc724 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * arch/s390/kernel/time.c
3 * Time of day based timer functions. 2 * Time of day based timer functions.
4 * 3 *
5 * S390 version 4 * S390 version
@@ -45,7 +44,7 @@
45#include <asm/vdso.h> 44#include <asm/vdso.h>
46#include <asm/irq.h> 45#include <asm/irq.h>
47#include <asm/irq_regs.h> 46#include <asm/irq_regs.h>
48#include <asm/timer.h> 47#include <asm/vtimer.h>
49#include <asm/etr.h> 48#include <asm/etr.h>
50#include <asm/cio.h> 49#include <asm/cio.h>
51#include "entry.h" 50#include "entry.h"
diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c
index 4f8dc942257c..05151e06c388 100644
--- a/arch/s390/kernel/topology.c
+++ b/arch/s390/kernel/topology.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 2007,2011 2 * Copyright IBM Corp. 2007, 2011
3 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> 3 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
4 */ 4 */
5 5
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
index 77cdf4234ebc..af2421a0f315 100644
--- a/arch/s390/kernel/traps.c
+++ b/arch/s390/kernel/traps.c
@@ -1,8 +1,6 @@
1/* 1/*
2 * arch/s390/kernel/traps.c
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999, 2000
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
7 * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com), 5 * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com),
8 * 6 *
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c
index 39ebff506946..4fc97b40a6e1 100644
--- a/arch/s390/kernel/vtime.c
+++ b/arch/s390/kernel/vtime.c
@@ -1,71 +1,82 @@
1/* 1/*
2 * arch/s390/kernel/vtime.c
3 * Virtual cpu timer based timer functions. 2 * Virtual cpu timer based timer functions.
4 * 3 *
5 * S390 version 4 * Copyright IBM Corp. 2004, 2012
6 * Copyright (C) 2004 IBM Deutschland Entwicklung GmbH, IBM Corporation
7 * Author(s): Jan Glauber <jan.glauber@de.ibm.com> 5 * Author(s): Jan Glauber <jan.glauber@de.ibm.com>
8 */ 6 */
9 7
10#include <linux/module.h> 8#include <linux/kernel_stat.h>
9#include <linux/notifier.h>
10#include <linux/kprobes.h>
11#include <linux/export.h>
11#include <linux/kernel.h> 12#include <linux/kernel.h>
12#include <linux/time.h>
13#include <linux/delay.h>
14#include <linux/init.h>
15#include <linux/smp.h>
16#include <linux/types.h>
17#include <linux/timex.h> 13#include <linux/timex.h>
18#include <linux/notifier.h> 14#include <linux/types.h>
19#include <linux/kernel_stat.h> 15#include <linux/time.h>
20#include <linux/rcupdate.h>
21#include <linux/posix-timers.h>
22#include <linux/cpu.h> 16#include <linux/cpu.h>
23#include <linux/kprobes.h> 17#include <linux/smp.h>
24 18
25#include <asm/timer.h>
26#include <asm/irq_regs.h> 19#include <asm/irq_regs.h>
27#include <asm/cputime.h> 20#include <asm/cputime.h>
21#include <asm/vtimer.h>
28#include <asm/irq.h> 22#include <asm/irq.h>
29#include "entry.h" 23#include "entry.h"
30 24
31static DEFINE_PER_CPU(struct vtimer_queue, virt_cpu_timer); 25static void virt_timer_expire(void);
32 26
33DEFINE_PER_CPU(struct s390_idle_data, s390_idle); 27DEFINE_PER_CPU(struct s390_idle_data, s390_idle);
34 28
35static inline __u64 get_vtimer(void) 29static LIST_HEAD(virt_timer_list);
30static DEFINE_SPINLOCK(virt_timer_lock);
31static atomic64_t virt_timer_current;
32static atomic64_t virt_timer_elapsed;
33
34static inline u64 get_vtimer(void)
36{ 35{
37 __u64 timer; 36 u64 timer;
38 37
39 asm volatile("STPT %0" : "=m" (timer)); 38 asm volatile("stpt %0" : "=m" (timer));
40 return timer; 39 return timer;
41} 40}
42 41
43static inline void set_vtimer(__u64 expires) 42static inline void set_vtimer(u64 expires)
44{ 43{
45 __u64 timer; 44 u64 timer;
46 45
47 asm volatile (" STPT %0\n" /* Store current cpu timer value */ 46 asm volatile(
48 " SPT %1" /* Set new value immediately afterwards */ 47 " stpt %0\n" /* Store current cpu timer value */
49 : "=m" (timer) : "m" (expires) ); 48 " spt %1" /* Set new value imm. afterwards */
49 : "=m" (timer) : "m" (expires));
50 S390_lowcore.system_timer += S390_lowcore.last_update_timer - timer; 50 S390_lowcore.system_timer += S390_lowcore.last_update_timer - timer;
51 S390_lowcore.last_update_timer = expires; 51 S390_lowcore.last_update_timer = expires;
52} 52}
53 53
54static inline int virt_timer_forward(u64 elapsed)
55{
56 BUG_ON(!irqs_disabled());
57
58 if (list_empty(&virt_timer_list))
59 return 0;
60 elapsed = atomic64_add_return(elapsed, &virt_timer_elapsed);
61 return elapsed >= atomic64_read(&virt_timer_current);
62}
63
54/* 64/*
55 * Update process times based on virtual cpu times stored by entry.S 65 * Update process times based on virtual cpu times stored by entry.S
56 * to the lowcore fields user_timer, system_timer & steal_clock. 66 * to the lowcore fields user_timer, system_timer & steal_clock.
57 */ 67 */
58static void do_account_vtime(struct task_struct *tsk, int hardirq_offset) 68static int do_account_vtime(struct task_struct *tsk, int hardirq_offset)
59{ 69{
60 struct thread_info *ti = task_thread_info(tsk); 70 struct thread_info *ti = task_thread_info(tsk);
61 __u64 timer, clock, user, system, steal; 71 u64 timer, clock, user, system, steal;
62 72
63 timer = S390_lowcore.last_update_timer; 73 timer = S390_lowcore.last_update_timer;
64 clock = S390_lowcore.last_update_clock; 74 clock = S390_lowcore.last_update_clock;
65 asm volatile (" STPT %0\n" /* Store current cpu timer value */ 75 asm volatile(
66 " STCK %1" /* Store current tod clock value */ 76 " stpt %0\n" /* Store current cpu timer value */
67 : "=m" (S390_lowcore.last_update_timer), 77 " stck %1" /* Store current tod clock value */
68 "=m" (S390_lowcore.last_update_clock) ); 78 : "=m" (S390_lowcore.last_update_timer),
79 "=m" (S390_lowcore.last_update_clock));
69 S390_lowcore.system_timer += timer - S390_lowcore.last_update_timer; 80 S390_lowcore.system_timer += timer - S390_lowcore.last_update_timer;
70 S390_lowcore.steal_timer += S390_lowcore.last_update_clock - clock; 81 S390_lowcore.steal_timer += S390_lowcore.last_update_clock - clock;
71 82
@@ -84,6 +95,8 @@ static void do_account_vtime(struct task_struct *tsk, int hardirq_offset)
84 S390_lowcore.steal_timer = 0; 95 S390_lowcore.steal_timer = 0;
85 account_steal_time(steal); 96 account_steal_time(steal);
86 } 97 }
98
99 return virt_timer_forward(user + system);
87} 100}
88 101
89void account_vtime(struct task_struct *prev, struct task_struct *next) 102void account_vtime(struct task_struct *prev, struct task_struct *next)
@@ -101,7 +114,8 @@ void account_vtime(struct task_struct *prev, struct task_struct *next)
101 114
102void account_process_tick(struct task_struct *tsk, int user_tick) 115void account_process_tick(struct task_struct *tsk, int user_tick)
103{ 116{
104 do_account_vtime(tsk, HARDIRQ_OFFSET); 117 if (do_account_vtime(tsk, HARDIRQ_OFFSET))
118 virt_timer_expire();
105} 119}
106 120
107/* 121/*
@@ -111,7 +125,7 @@ void account_process_tick(struct task_struct *tsk, int user_tick)
111void account_system_vtime(struct task_struct *tsk) 125void account_system_vtime(struct task_struct *tsk)
112{ 126{
113 struct thread_info *ti = task_thread_info(tsk); 127 struct thread_info *ti = task_thread_info(tsk);
114 __u64 timer, system; 128 u64 timer, system;
115 129
116 timer = S390_lowcore.last_update_timer; 130 timer = S390_lowcore.last_update_timer;
117 S390_lowcore.last_update_timer = get_vtimer(); 131 S390_lowcore.last_update_timer = get_vtimer();
@@ -121,13 +135,14 @@ void account_system_vtime(struct task_struct *tsk)
121 S390_lowcore.steal_timer -= system; 135 S390_lowcore.steal_timer -= system;
122 ti->system_timer = S390_lowcore.system_timer; 136 ti->system_timer = S390_lowcore.system_timer;
123 account_system_time(tsk, 0, system, system); 137 account_system_time(tsk, 0, system, system);
138
139 virt_timer_forward(system);
124} 140}
125EXPORT_SYMBOL_GPL(account_system_vtime); 141EXPORT_SYMBOL_GPL(account_system_vtime);
126 142
127void __kprobes vtime_stop_cpu(void) 143void __kprobes vtime_stop_cpu(void)
128{ 144{
129 struct s390_idle_data *idle = &__get_cpu_var(s390_idle); 145 struct s390_idle_data *idle = &__get_cpu_var(s390_idle);
130 struct vtimer_queue *vq = &__get_cpu_var(virt_cpu_timer);
131 unsigned long long idle_time; 146 unsigned long long idle_time;
132 unsigned long psw_mask; 147 unsigned long psw_mask;
133 148
@@ -141,7 +156,7 @@ void __kprobes vtime_stop_cpu(void)
141 idle->nohz_delay = 0; 156 idle->nohz_delay = 0;
142 157
143 /* Call the assembler magic in entry.S */ 158 /* Call the assembler magic in entry.S */
144 psw_idle(idle, vq, psw_mask, !list_empty(&vq->list)); 159 psw_idle(idle, psw_mask);
145 160
146 /* Reenable preemption tracer. */ 161 /* Reenable preemption tracer. */
147 start_critical_timings(); 162 start_critical_timings();
@@ -149,9 +164,9 @@ void __kprobes vtime_stop_cpu(void)
149 /* Account time spent with enabled wait psw loaded as idle time. */ 164 /* Account time spent with enabled wait psw loaded as idle time. */
150 idle->sequence++; 165 idle->sequence++;
151 smp_wmb(); 166 smp_wmb();
152 idle_time = idle->idle_exit - idle->idle_enter; 167 idle_time = idle->clock_idle_exit - idle->clock_idle_enter;
168 idle->clock_idle_enter = idle->clock_idle_exit = 0ULL;
153 idle->idle_time += idle_time; 169 idle->idle_time += idle_time;
154 idle->idle_enter = idle->idle_exit = 0ULL;
155 idle->idle_count++; 170 idle->idle_count++;
156 account_idle_time(idle_time); 171 account_idle_time(idle_time);
157 smp_wmb(); 172 smp_wmb();
@@ -167,10 +182,10 @@ cputime64_t s390_get_idle_time(int cpu)
167 do { 182 do {
168 now = get_clock(); 183 now = get_clock();
169 sequence = ACCESS_ONCE(idle->sequence); 184 sequence = ACCESS_ONCE(idle->sequence);
170 idle_enter = ACCESS_ONCE(idle->idle_enter); 185 idle_enter = ACCESS_ONCE(idle->clock_idle_enter);
171 idle_exit = ACCESS_ONCE(idle->idle_exit); 186 idle_exit = ACCESS_ONCE(idle->clock_idle_exit);
172 } while ((sequence & 1) || (idle->sequence != sequence)); 187 } while ((sequence & 1) || (idle->sequence != sequence));
173 return idle_enter ? ((idle_exit ? : now) - idle_enter) : 0; 188 return idle_enter ? ((idle_exit ?: now) - idle_enter) : 0;
174} 189}
175 190
176/* 191/*
@@ -179,11 +194,11 @@ cputime64_t s390_get_idle_time(int cpu)
179 */ 194 */
180static void list_add_sorted(struct vtimer_list *timer, struct list_head *head) 195static void list_add_sorted(struct vtimer_list *timer, struct list_head *head)
181{ 196{
182 struct vtimer_list *event; 197 struct vtimer_list *tmp;
183 198
184 list_for_each_entry(event, head, entry) { 199 list_for_each_entry(tmp, head, entry) {
185 if (event->expires > timer->expires) { 200 if (tmp->expires > timer->expires) {
186 list_add_tail(&timer->entry, &event->entry); 201 list_add_tail(&timer->entry, &tmp->entry);
187 return; 202 return;
188 } 203 }
189 } 204 }
@@ -191,82 +206,45 @@ static void list_add_sorted(struct vtimer_list *timer, struct list_head *head)
191} 206}
192 207
193/* 208/*
194 * Do the callback functions of expired vtimer events. 209 * Handler for expired virtual CPU timer.
195 * Called from within the interrupt handler.
196 */
197static void do_callbacks(struct list_head *cb_list)
198{
199 struct vtimer_queue *vq;
200 struct vtimer_list *event, *tmp;
201
202 if (list_empty(cb_list))
203 return;
204
205 vq = &__get_cpu_var(virt_cpu_timer);
206
207 list_for_each_entry_safe(event, tmp, cb_list, entry) {
208 list_del_init(&event->entry);
209 (event->function)(event->data);
210 if (event->interval) {
211 /* Recharge interval timer */
212 event->expires = event->interval + vq->elapsed;
213 spin_lock(&vq->lock);
214 list_add_sorted(event, &vq->list);
215 spin_unlock(&vq->lock);
216 }
217 }
218}
219
220/*
221 * Handler for the virtual CPU timer.
222 */ 210 */
223static void do_cpu_timer_interrupt(struct ext_code ext_code, 211static void virt_timer_expire(void)
224 unsigned int param32, unsigned long param64)
225{ 212{
226 struct vtimer_queue *vq; 213 struct vtimer_list *timer, *tmp;
227 struct vtimer_list *event, *tmp; 214 unsigned long elapsed;
228 struct list_head cb_list; /* the callback queue */ 215 LIST_HEAD(cb_list);
229 __u64 elapsed, next; 216
230 217 /* walk timer list, fire all expired timers */
231 kstat_cpu(smp_processor_id()).irqs[EXTINT_TMR]++; 218 spin_lock(&virt_timer_lock);
232 INIT_LIST_HEAD(&cb_list); 219 elapsed = atomic64_read(&virt_timer_elapsed);
233 vq = &__get_cpu_var(virt_cpu_timer); 220 list_for_each_entry_safe(timer, tmp, &virt_timer_list, entry) {
234 221 if (timer->expires < elapsed)
235 /* walk timer list, fire all expired events */
236 spin_lock(&vq->lock);
237
238 elapsed = vq->elapsed + (vq->timer - S390_lowcore.async_enter_timer);
239 BUG_ON((s64) elapsed < 0);
240 vq->elapsed = 0;
241 list_for_each_entry_safe(event, tmp, &vq->list, entry) {
242 if (event->expires < elapsed)
243 /* move expired timer to the callback queue */ 222 /* move expired timer to the callback queue */
244 list_move_tail(&event->entry, &cb_list); 223 list_move_tail(&timer->entry, &cb_list);
245 else 224 else
246 event->expires -= elapsed; 225 timer->expires -= elapsed;
247 } 226 }
248 spin_unlock(&vq->lock); 227 if (!list_empty(&virt_timer_list)) {
249 228 timer = list_first_entry(&virt_timer_list,
250 do_callbacks(&cb_list); 229 struct vtimer_list, entry);
251 230 atomic64_set(&virt_timer_current, timer->expires);
252 /* next event is first in list */ 231 }
253 next = VTIMER_MAX_SLICE; 232 atomic64_sub(elapsed, &virt_timer_elapsed);
254 spin_lock(&vq->lock); 233 spin_unlock(&virt_timer_lock);
255 if (!list_empty(&vq->list)) { 234
256 event = list_first_entry(&vq->list, struct vtimer_list, entry); 235 /* Do callbacks and recharge periodic timers */
257 next = event->expires; 236 list_for_each_entry_safe(timer, tmp, &cb_list, entry) {
237 list_del_init(&timer->entry);
238 timer->function(timer->data);
239 if (timer->interval) {
240 /* Recharge interval timer */
241 timer->expires = timer->interval +
242 atomic64_read(&virt_timer_elapsed);
243 spin_lock(&virt_timer_lock);
244 list_add_sorted(timer, &virt_timer_list);
245 spin_unlock(&virt_timer_lock);
246 }
258 } 247 }
259 spin_unlock(&vq->lock);
260 /*
261 * To improve precision add the time spent by the
262 * interrupt handler to the elapsed time.
263 * Note: CPU timer counts down and we got an interrupt,
264 * the current content is negative
265 */
266 elapsed = S390_lowcore.async_enter_timer - get_vtimer();
267 set_vtimer(next - elapsed);
268 vq->timer = next - elapsed;
269 vq->elapsed = elapsed;
270} 248}
271 249
272void init_virt_timer(struct vtimer_list *timer) 250void init_virt_timer(struct vtimer_list *timer)
@@ -278,179 +256,108 @@ EXPORT_SYMBOL(init_virt_timer);
278 256
279static inline int vtimer_pending(struct vtimer_list *timer) 257static inline int vtimer_pending(struct vtimer_list *timer)
280{ 258{
281 return (!list_empty(&timer->entry)); 259 return !list_empty(&timer->entry);
282} 260}
283 261
284/*
285 * this function should only run on the specified CPU
286 */
287static void internal_add_vtimer(struct vtimer_list *timer) 262static void internal_add_vtimer(struct vtimer_list *timer)
288{ 263{
289 struct vtimer_queue *vq; 264 if (list_empty(&virt_timer_list)) {
290 unsigned long flags; 265 /* First timer, just program it. */
291 __u64 left, expires; 266 atomic64_set(&virt_timer_current, timer->expires);
292 267 atomic64_set(&virt_timer_elapsed, 0);
293 vq = &per_cpu(virt_cpu_timer, timer->cpu); 268 list_add(&timer->entry, &virt_timer_list);
294 spin_lock_irqsave(&vq->lock, flags);
295
296 BUG_ON(timer->cpu != smp_processor_id());
297
298 if (list_empty(&vq->list)) {
299 /* First timer on this cpu, just program it. */
300 list_add(&timer->entry, &vq->list);
301 set_vtimer(timer->expires);
302 vq->timer = timer->expires;
303 vq->elapsed = 0;
304 } else { 269 } else {
305 /* Check progress of old timers. */ 270 /* Update timer against current base. */
306 expires = timer->expires; 271 timer->expires += atomic64_read(&virt_timer_elapsed);
307 left = get_vtimer(); 272 if (likely((s64) timer->expires <
308 if (likely((s64) expires < (s64) left)) { 273 (s64) atomic64_read(&virt_timer_current)))
309 /* The new timer expires before the current timer. */ 274 /* The new timer expires before the current timer. */
310 set_vtimer(expires); 275 atomic64_set(&virt_timer_current, timer->expires);
311 vq->elapsed += vq->timer - left; 276 /* Insert new timer into the list. */
312 vq->timer = expires; 277 list_add_sorted(timer, &virt_timer_list);
313 } else {
314 vq->elapsed += vq->timer - left;
315 vq->timer = left;
316 }
317 /* Insert new timer into per cpu list. */
318 timer->expires += vq->elapsed;
319 list_add_sorted(timer, &vq->list);
320 } 278 }
321
322 spin_unlock_irqrestore(&vq->lock, flags);
323 /* release CPU acquired in prepare_vtimer or mod_virt_timer() */
324 put_cpu();
325} 279}
326 280
327static inline void prepare_vtimer(struct vtimer_list *timer) 281static void __add_vtimer(struct vtimer_list *timer, int periodic)
328{ 282{
329 BUG_ON(!timer->function); 283 unsigned long flags;
330 BUG_ON(!timer->expires || timer->expires > VTIMER_MAX_SLICE); 284
331 BUG_ON(vtimer_pending(timer)); 285 timer->interval = periodic ? timer->expires : 0;
332 timer->cpu = get_cpu(); 286 spin_lock_irqsave(&virt_timer_lock, flags);
287 internal_add_vtimer(timer);
288 spin_unlock_irqrestore(&virt_timer_lock, flags);
333} 289}
334 290
335/* 291/*
336 * add_virt_timer - add an oneshot virtual CPU timer 292 * add_virt_timer - add an oneshot virtual CPU timer
337 */ 293 */
338void add_virt_timer(void *new) 294void add_virt_timer(struct vtimer_list *timer)
339{ 295{
340 struct vtimer_list *timer; 296 __add_vtimer(timer, 0);
341
342 timer = (struct vtimer_list *)new;
343 prepare_vtimer(timer);
344 timer->interval = 0;
345 internal_add_vtimer(timer);
346} 297}
347EXPORT_SYMBOL(add_virt_timer); 298EXPORT_SYMBOL(add_virt_timer);
348 299
349/* 300/*
350 * add_virt_timer_int - add an interval virtual CPU timer 301 * add_virt_timer_int - add an interval virtual CPU timer
351 */ 302 */
352void add_virt_timer_periodic(void *new) 303void add_virt_timer_periodic(struct vtimer_list *timer)
353{ 304{
354 struct vtimer_list *timer; 305 __add_vtimer(timer, 1);
355
356 timer = (struct vtimer_list *)new;
357 prepare_vtimer(timer);
358 timer->interval = timer->expires;
359 internal_add_vtimer(timer);
360} 306}
361EXPORT_SYMBOL(add_virt_timer_periodic); 307EXPORT_SYMBOL(add_virt_timer_periodic);
362 308
363static int __mod_vtimer(struct vtimer_list *timer, __u64 expires, int periodic) 309static int __mod_vtimer(struct vtimer_list *timer, u64 expires, int periodic)
364{ 310{
365 struct vtimer_queue *vq;
366 unsigned long flags; 311 unsigned long flags;
367 int cpu; 312 int rc;
368 313
369 BUG_ON(!timer->function); 314 BUG_ON(!timer->function);
370 BUG_ON(!expires || expires > VTIMER_MAX_SLICE);
371 315
372 if (timer->expires == expires && vtimer_pending(timer)) 316 if (timer->expires == expires && vtimer_pending(timer))
373 return 1; 317 return 1;
374 318 spin_lock_irqsave(&virt_timer_lock, flags);
375 cpu = get_cpu(); 319 rc = vtimer_pending(timer);
376 vq = &per_cpu(virt_cpu_timer, cpu); 320 if (rc)
377 321 list_del_init(&timer->entry);
378 /* disable interrupts before test if timer is pending */ 322 timer->interval = periodic ? expires : 0;
379 spin_lock_irqsave(&vq->lock, flags);
380
381 /* if timer isn't pending add it on the current CPU */
382 if (!vtimer_pending(timer)) {
383 spin_unlock_irqrestore(&vq->lock, flags);
384
385 if (periodic)
386 timer->interval = expires;
387 else
388 timer->interval = 0;
389 timer->expires = expires;
390 timer->cpu = cpu;
391 internal_add_vtimer(timer);
392 return 0;
393 }
394
395 /* check if we run on the right CPU */
396 BUG_ON(timer->cpu != cpu);
397
398 list_del_init(&timer->entry);
399 timer->expires = expires; 323 timer->expires = expires;
400 if (periodic)
401 timer->interval = expires;
402
403 /* the timer can't expire anymore so we can release the lock */
404 spin_unlock_irqrestore(&vq->lock, flags);
405 internal_add_vtimer(timer); 324 internal_add_vtimer(timer);
406 return 1; 325 spin_unlock_irqrestore(&virt_timer_lock, flags);
326 return rc;
407} 327}
408 328
409/* 329/*
410 * If we change a pending timer the function must be called on the CPU
411 * where the timer is running on.
412 *
413 * returns whether it has modified a pending timer (1) or not (0) 330 * returns whether it has modified a pending timer (1) or not (0)
414 */ 331 */
415int mod_virt_timer(struct vtimer_list *timer, __u64 expires) 332int mod_virt_timer(struct vtimer_list *timer, u64 expires)
416{ 333{
417 return __mod_vtimer(timer, expires, 0); 334 return __mod_vtimer(timer, expires, 0);
418} 335}
419EXPORT_SYMBOL(mod_virt_timer); 336EXPORT_SYMBOL(mod_virt_timer);
420 337
421/* 338/*
422 * If we change a pending timer the function must be called on the CPU
423 * where the timer is running on.
424 *
425 * returns whether it has modified a pending timer (1) or not (0) 339 * returns whether it has modified a pending timer (1) or not (0)
426 */ 340 */
427int mod_virt_timer_periodic(struct vtimer_list *timer, __u64 expires) 341int mod_virt_timer_periodic(struct vtimer_list *timer, u64 expires)
428{ 342{
429 return __mod_vtimer(timer, expires, 1); 343 return __mod_vtimer(timer, expires, 1);
430} 344}
431EXPORT_SYMBOL(mod_virt_timer_periodic); 345EXPORT_SYMBOL(mod_virt_timer_periodic);
432 346
433/* 347/*
434 * delete a virtual timer 348 * Delete a virtual timer.
435 * 349 *
436 * returns whether the deleted timer was pending (1) or not (0) 350 * returns whether the deleted timer was pending (1) or not (0)
437 */ 351 */
438int del_virt_timer(struct vtimer_list *timer) 352int del_virt_timer(struct vtimer_list *timer)
439{ 353{
440 unsigned long flags; 354 unsigned long flags;
441 struct vtimer_queue *vq;
442 355
443 /* check if timer is pending */
444 if (!vtimer_pending(timer)) 356 if (!vtimer_pending(timer))
445 return 0; 357 return 0;
446 358 spin_lock_irqsave(&virt_timer_lock, flags);
447 vq = &per_cpu(virt_cpu_timer, timer->cpu);
448 spin_lock_irqsave(&vq->lock, flags);
449
450 /* we don't interrupt a running timer, just let it expire! */
451 list_del_init(&timer->entry); 359 list_del_init(&timer->entry);
452 360 spin_unlock_irqrestore(&virt_timer_lock, flags);
453 spin_unlock_irqrestore(&vq->lock, flags);
454 return 1; 361 return 1;
455} 362}
456EXPORT_SYMBOL(del_virt_timer); 363EXPORT_SYMBOL(del_virt_timer);
@@ -458,20 +365,10 @@ EXPORT_SYMBOL(del_virt_timer);
458/* 365/*
459 * Start the virtual CPU timer on the current CPU. 366 * Start the virtual CPU timer on the current CPU.
460 */ 367 */
461void init_cpu_vtimer(void) 368void __cpuinit init_cpu_vtimer(void)
462{ 369{
463 struct vtimer_queue *vq;
464
465 /* initialize per cpu vtimer structure */
466 vq = &__get_cpu_var(virt_cpu_timer);
467 INIT_LIST_HEAD(&vq->list);
468 spin_lock_init(&vq->lock);
469
470 /* enable cpu timer interrupts */
471 __ctl_set_bit(0,10);
472
473 /* set initial cpu timer */ 370 /* set initial cpu timer */
474 set_vtimer(0x7fffffffffffffffULL); 371 set_vtimer(VTIMER_MAX_SLICE);
475} 372}
476 373
477static int __cpuinit s390_nohz_notify(struct notifier_block *self, 374static int __cpuinit s390_nohz_notify(struct notifier_block *self,
@@ -493,12 +390,7 @@ static int __cpuinit s390_nohz_notify(struct notifier_block *self,
493 390
494void __init vtime_init(void) 391void __init vtime_init(void)
495{ 392{
496 /* request the cpu timer external interrupt */
497 if (register_external_interrupt(0x1005, do_cpu_timer_interrupt))
498 panic("Couldn't request external interrupt 0x1005");
499
500 /* Enable cpu timer interrupts on the boot cpu. */ 393 /* Enable cpu timer interrupts on the boot cpu. */
501 init_cpu_vtimer(); 394 init_cpu_vtimer();
502 cpu_notifier(s390_nohz_notify, 0); 395 cpu_notifier(s390_nohz_notify, 0);
503} 396}
504
diff --git a/arch/s390/kvm/diag.c b/arch/s390/kvm/diag.c
index b23d9ac77dfc..c88bb7793390 100644
--- a/arch/s390/kvm/diag.c
+++ b/arch/s390/kvm/diag.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * diag.c - handling diagnose instructions 2 * handling diagnose instructions
3 * 3 *
4 * Copyright IBM Corp. 2008,2011 4 * Copyright IBM Corp. 2008, 2011
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License (version 2 only) 7 * it under the terms of the GNU General Public License (version 2 only)
diff --git a/arch/s390/kvm/gaccess.h b/arch/s390/kvm/gaccess.h
index c86f6ae43f76..4703f129e95e 100644
--- a/arch/s390/kvm/gaccess.h
+++ b/arch/s390/kvm/gaccess.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * access.h - access guest memory 2 * access guest memory
3 * 3 *
4 * Copyright IBM Corp. 2008,2009 4 * Copyright IBM Corp. 2008, 2009
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License (version 2 only) 7 * it under the terms of the GNU General Public License (version 2 only)
diff --git a/arch/s390/kvm/intercept.c b/arch/s390/kvm/intercept.c
index 979cbe55bf5e..adae539f12e2 100644
--- a/arch/s390/kvm/intercept.c
+++ b/arch/s390/kvm/intercept.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * intercept.c - in-kernel handling for sie intercepts 2 * in-kernel handling for sie intercepts
3 * 3 *
4 * Copyright IBM Corp. 2008,2009 4 * Copyright IBM Corp. 2008, 2009
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License (version 2 only) 7 * it under the terms of the GNU General Public License (version 2 only)
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c
index 2d9f9a72bb81..b7bc1aac8ed2 100644
--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * interrupt.c - handling kvm guest interrupts 2 * handling kvm guest interrupts
3 * 3 *
4 * Copyright IBM Corp. 2008 4 * Copyright IBM Corp. 2008
5 * 5 *
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 664766d0c83c..c552d1f4103f 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * s390host.c -- hosting zSeries kernel virtual machines 2 * hosting zSeries kernel virtual machines
3 * 3 *
4 * Copyright IBM Corp. 2008,2009 4 * Copyright IBM Corp. 2008, 2009
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License (version 2 only) 7 * it under the terms of the GNU General Public License (version 2 only)
diff --git a/arch/s390/kvm/kvm-s390.h b/arch/s390/kvm/kvm-s390.h
index 2294377975e8..d75bc5e92c5b 100644
--- a/arch/s390/kvm/kvm-s390.h
+++ b/arch/s390/kvm/kvm-s390.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * kvm_s390.h - definition for kvm on s390 2 * definition for kvm on s390
3 * 3 *
4 * Copyright IBM Corp. 2008,2009 4 * Copyright IBM Corp. 2008, 2009
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License (version 2 only) 7 * it under the terms of the GNU General Public License (version 2 only)
diff --git a/arch/s390/kvm/priv.c b/arch/s390/kvm/priv.c
index 68a6b2ed16bf..60da903d6f3e 100644
--- a/arch/s390/kvm/priv.c
+++ b/arch/s390/kvm/priv.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * priv.c - handling privileged instructions 2 * handling privileged instructions
3 * 3 *
4 * Copyright IBM Corp. 2008 4 * Copyright IBM Corp. 2008
5 * 5 *
diff --git a/arch/s390/kvm/sigp.c b/arch/s390/kvm/sigp.c
index 0ad4cf238391..1ab2ce1611c5 100644
--- a/arch/s390/kvm/sigp.c
+++ b/arch/s390/kvm/sigp.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * sigp.c - handlinge interprocessor communication 2 * handling interprocessor communication
3 * 3 *
4 * Copyright IBM Corp. 2008,2009 4 * Copyright IBM Corp. 2008, 2009
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License (version 2 only) 7 * it under the terms of the GNU General Public License (version 2 only)
@@ -15,38 +15,10 @@
15#include <linux/kvm.h> 15#include <linux/kvm.h>
16#include <linux/kvm_host.h> 16#include <linux/kvm_host.h>
17#include <linux/slab.h> 17#include <linux/slab.h>
18#include <asm/sigp.h>
18#include "gaccess.h" 19#include "gaccess.h"
19#include "kvm-s390.h" 20#include "kvm-s390.h"
20 21
21/* sigp order codes */
22#define SIGP_SENSE 0x01
23#define SIGP_EXTERNAL_CALL 0x02
24#define SIGP_EMERGENCY 0x03
25#define SIGP_START 0x04
26#define SIGP_STOP 0x05
27#define SIGP_RESTART 0x06
28#define SIGP_STOP_STORE_STATUS 0x09
29#define SIGP_INITIAL_CPU_RESET 0x0b
30#define SIGP_CPU_RESET 0x0c
31#define SIGP_SET_PREFIX 0x0d
32#define SIGP_STORE_STATUS_ADDR 0x0e
33#define SIGP_SET_ARCH 0x12
34#define SIGP_SENSE_RUNNING 0x15
35
36/* cpu status bits */
37#define SIGP_STAT_EQUIPMENT_CHECK 0x80000000UL
38#define SIGP_STAT_NOT_RUNNING 0x00000400UL
39#define SIGP_STAT_INCORRECT_STATE 0x00000200UL
40#define SIGP_STAT_INVALID_PARAMETER 0x00000100UL
41#define SIGP_STAT_EXT_CALL_PENDING 0x00000080UL
42#define SIGP_STAT_STOPPED 0x00000040UL
43#define SIGP_STAT_OPERATOR_INTERV 0x00000020UL
44#define SIGP_STAT_CHECK_STOP 0x00000010UL
45#define SIGP_STAT_INOPERATIVE 0x00000004UL
46#define SIGP_STAT_INVALID_ORDER 0x00000002UL
47#define SIGP_STAT_RECEIVER_CHECK 0x00000001UL
48
49
50static int __sigp_sense(struct kvm_vcpu *vcpu, u16 cpu_addr, 22static int __sigp_sense(struct kvm_vcpu *vcpu, u16 cpu_addr,
51 u64 *reg) 23 u64 *reg)
52{ 24{
@@ -65,7 +37,7 @@ static int __sigp_sense(struct kvm_vcpu *vcpu, u16 cpu_addr,
65 rc = 1; /* status stored */ 37 rc = 1; /* status stored */
66 } else { 38 } else {
67 *reg &= 0xffffffff00000000UL; 39 *reg &= 0xffffffff00000000UL;
68 *reg |= SIGP_STAT_STOPPED; 40 *reg |= SIGP_STATUS_STOPPED;
69 rc = 1; /* status stored */ 41 rc = 1; /* status stored */
70 } 42 }
71 spin_unlock(&fi->lock); 43 spin_unlock(&fi->lock);
@@ -235,7 +207,7 @@ static int __sigp_set_prefix(struct kvm_vcpu *vcpu, u16 cpu_addr, u32 address,
235 address = address & 0x7fffe000u; 207 address = address & 0x7fffe000u;
236 if (copy_from_guest_absolute(vcpu, &tmp, address, 1) || 208 if (copy_from_guest_absolute(vcpu, &tmp, address, 1) ||
237 copy_from_guest_absolute(vcpu, &tmp, address + PAGE_SIZE, 1)) { 209 copy_from_guest_absolute(vcpu, &tmp, address + PAGE_SIZE, 1)) {
238 *reg |= SIGP_STAT_INVALID_PARAMETER; 210 *reg |= SIGP_STATUS_INVALID_PARAMETER;
239 return 1; /* invalid parameter */ 211 return 1; /* invalid parameter */
240 } 212 }
241 213
@@ -249,7 +221,7 @@ static int __sigp_set_prefix(struct kvm_vcpu *vcpu, u16 cpu_addr, u32 address,
249 221
250 if (li == NULL) { 222 if (li == NULL) {
251 rc = 1; /* incorrect state */ 223 rc = 1; /* incorrect state */
252 *reg &= SIGP_STAT_INCORRECT_STATE; 224 *reg &= SIGP_STATUS_INCORRECT_STATE;
253 kfree(inti); 225 kfree(inti);
254 goto out_fi; 226 goto out_fi;
255 } 227 }
@@ -258,7 +230,7 @@ static int __sigp_set_prefix(struct kvm_vcpu *vcpu, u16 cpu_addr, u32 address,
258 /* cpu must be in stopped state */ 230 /* cpu must be in stopped state */
259 if (!(atomic_read(li->cpuflags) & CPUSTAT_STOPPED)) { 231 if (!(atomic_read(li->cpuflags) & CPUSTAT_STOPPED)) {
260 rc = 1; /* incorrect state */ 232 rc = 1; /* incorrect state */
261 *reg &= SIGP_STAT_INCORRECT_STATE; 233 *reg &= SIGP_STATUS_INCORRECT_STATE;
262 kfree(inti); 234 kfree(inti);
263 goto out_li; 235 goto out_li;
264 } 236 }
@@ -300,7 +272,7 @@ static int __sigp_sense_running(struct kvm_vcpu *vcpu, u16 cpu_addr,
300 } else { 272 } else {
301 /* not running */ 273 /* not running */
302 *reg &= 0xffffffff00000000UL; 274 *reg &= 0xffffffff00000000UL;
303 *reg |= SIGP_STAT_NOT_RUNNING; 275 *reg |= SIGP_STATUS_NOT_RUNNING;
304 rc = 0; 276 rc = 0;
305 } 277 }
306 } 278 }
@@ -375,7 +347,7 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu)
375 vcpu->stat.instruction_sigp_external_call++; 347 vcpu->stat.instruction_sigp_external_call++;
376 rc = __sigp_external_call(vcpu, cpu_addr); 348 rc = __sigp_external_call(vcpu, cpu_addr);
377 break; 349 break;
378 case SIGP_EMERGENCY: 350 case SIGP_EMERGENCY_SIGNAL:
379 vcpu->stat.instruction_sigp_emergency++; 351 vcpu->stat.instruction_sigp_emergency++;
380 rc = __sigp_emergency(vcpu, cpu_addr); 352 rc = __sigp_emergency(vcpu, cpu_addr);
381 break; 353 break;
@@ -383,12 +355,12 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu)
383 vcpu->stat.instruction_sigp_stop++; 355 vcpu->stat.instruction_sigp_stop++;
384 rc = __sigp_stop(vcpu, cpu_addr, ACTION_STOP_ON_STOP); 356 rc = __sigp_stop(vcpu, cpu_addr, ACTION_STOP_ON_STOP);
385 break; 357 break;
386 case SIGP_STOP_STORE_STATUS: 358 case SIGP_STOP_AND_STORE_STATUS:
387 vcpu->stat.instruction_sigp_stop++; 359 vcpu->stat.instruction_sigp_stop++;
388 rc = __sigp_stop(vcpu, cpu_addr, ACTION_STORE_ON_STOP | 360 rc = __sigp_stop(vcpu, cpu_addr, ACTION_STORE_ON_STOP |
389 ACTION_STOP_ON_STOP); 361 ACTION_STOP_ON_STOP);
390 break; 362 break;
391 case SIGP_SET_ARCH: 363 case SIGP_SET_ARCHITECTURE:
392 vcpu->stat.instruction_sigp_arch++; 364 vcpu->stat.instruction_sigp_arch++;
393 rc = __sigp_set_arch(vcpu, parameter); 365 rc = __sigp_set_arch(vcpu, parameter);
394 break; 366 break;
diff --git a/arch/s390/lib/delay.c b/arch/s390/lib/delay.c
index 9f1f71e85778..42d0cf89121d 100644
--- a/arch/s390/lib/delay.c
+++ b/arch/s390/lib/delay.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Precise Delay Loops for S390 2 * Precise Delay Loops for S390
3 * 3 *
4 * Copyright IBM Corp. 1999,2008 4 * Copyright IBM Corp. 1999, 2008
5 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>, 5 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>,
6 * Heiko Carstens <heiko.carstens@de.ibm.com>, 6 * Heiko Carstens <heiko.carstens@de.ibm.com>,
7 */ 7 */
@@ -12,8 +12,8 @@
12#include <linux/module.h> 12#include <linux/module.h>
13#include <linux/irqflags.h> 13#include <linux/irqflags.h>
14#include <linux/interrupt.h> 14#include <linux/interrupt.h>
15#include <asm/vtimer.h>
15#include <asm/div64.h> 16#include <asm/div64.h>
16#include <asm/timer.h>
17 17
18void __delay(unsigned long loops) 18void __delay(unsigned long loops)
19{ 19{
diff --git a/arch/s390/lib/div64.c b/arch/s390/lib/div64.c
index d9e62c0b576a..261152f83242 100644
--- a/arch/s390/lib/div64.c
+++ b/arch/s390/lib/div64.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * arch/s390/lib/div64.c
3 *
4 * __div64_32 implementation for 31 bit. 2 * __div64_32 implementation for 31 bit.
5 * 3 *
6 * Copyright (C) IBM Corp. 2006 4 * Copyright IBM Corp. 2006
7 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
8 */ 6 */
9 7
diff --git a/arch/s390/lib/spinlock.c b/arch/s390/lib/spinlock.c
index 093eb694d9c1..f709983f41f8 100644
--- a/arch/s390/lib/spinlock.c
+++ b/arch/s390/lib/spinlock.c
@@ -1,8 +1,7 @@
1/* 1/*
2 * arch/s390/lib/spinlock.c
3 * Out of line spinlock code. 2 * Out of line spinlock code.
4 * 3 *
5 * Copyright (C) IBM Corp. 2004, 2006 4 * Copyright IBM Corp. 2004, 2006
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
7 */ 6 */
8 7
diff --git a/arch/s390/lib/string.c b/arch/s390/lib/string.c
index 4143b7c19096..846ec64ab2c9 100644
--- a/arch/s390/lib/string.c
+++ b/arch/s390/lib/string.c
@@ -1,9 +1,8 @@
1/* 1/*
2 * arch/s390/lib/string.c
3 * Optimized string functions 2 * Optimized string functions
4 * 3 *
5 * S390 version 4 * S390 version
6 * Copyright (C) 2004 IBM Deutschland Entwicklung GmbH, IBM Corporation 5 * Copyright IBM Corp. 2004
7 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
8 */ 7 */
9 8
diff --git a/arch/s390/lib/uaccess.h b/arch/s390/lib/uaccess.h
index 1d2536cb630b..315dbe09983e 100644
--- a/arch/s390/lib/uaccess.h
+++ b/arch/s390/lib/uaccess.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/s390/uaccess.h
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * 3 *
6 */ 4 */
diff --git a/arch/s390/lib/uaccess_mvcos.c b/arch/s390/lib/uaccess_mvcos.c
index 58a75a8ae90c..2443ae476e33 100644
--- a/arch/s390/lib/uaccess_mvcos.c
+++ b/arch/s390/lib/uaccess_mvcos.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * arch/s390/lib/uaccess_mvcos.c
3 *
4 * Optimized user space space access functions based on mvcos. 2 * Optimized user space space access functions based on mvcos.
5 * 3 *
6 * Copyright (C) IBM Corp. 2006 4 * Copyright IBM Corp. 2006
7 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
8 * Gerald Schaefer (gerald.schaefer@de.ibm.com) 6 * Gerald Schaefer (gerald.schaefer@de.ibm.com)
9 */ 7 */
diff --git a/arch/s390/lib/uaccess_pt.c b/arch/s390/lib/uaccess_pt.c
index 342ae35a5ba9..60ee2b883797 100644
--- a/arch/s390/lib/uaccess_pt.c
+++ b/arch/s390/lib/uaccess_pt.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/s390/lib/uaccess_pt.c
3 *
4 * User access functions based on page table walks for enhanced 2 * User access functions based on page table walks for enhanced
5 * system layout without hardware support. 3 * system layout without hardware support.
6 * 4 *
diff --git a/arch/s390/lib/uaccess_std.c b/arch/s390/lib/uaccess_std.c
index 57e94298539b..6fbd06338270 100644
--- a/arch/s390/lib/uaccess_std.c
+++ b/arch/s390/lib/uaccess_std.c
@@ -1,10 +1,8 @@
1/* 1/*
2 * arch/s390/lib/uaccess_std.c
3 *
4 * Standard user space access functions based on mvcp/mvcs and doing 2 * Standard user space access functions based on mvcp/mvcs and doing
5 * interesting things in the secondary space mode. 3 * interesting things in the secondary space mode.
6 * 4 *
7 * Copyright (C) IBM Corp. 2006 5 * Copyright IBM Corp. 2006
8 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
9 * Gerald Schaefer (gerald.schaefer@de.ibm.com) 7 * Gerald Schaefer (gerald.schaefer@de.ibm.com)
10 */ 8 */
diff --git a/arch/s390/math-emu/math.c b/arch/s390/math-emu/math.c
index cd4e9c168dd7..58bff541fde9 100644
--- a/arch/s390/math-emu/math.c
+++ b/arch/s390/math-emu/math.c
@@ -1,8 +1,6 @@
1/* 1/*
2 * arch/s390/math-emu/math.c
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999-2001 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999, 2001
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
7 * 5 *
8 * 'math.c' emulates IEEE instructions on a S390 processor 6 * 'math.c' emulates IEEE instructions on a S390 processor
diff --git a/arch/s390/mm/cmm.c b/arch/s390/mm/cmm.c
index 1f1dba9dcf58..479e94282910 100644
--- a/arch/s390/mm/cmm.c
+++ b/arch/s390/mm/cmm.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Collaborative memory management interface. 2 * Collaborative memory management interface.
3 * 3 *
4 * Copyright IBM Corp 2003,2010 4 * Copyright IBM Corp 2003, 2010
5 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>, 5 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>,
6 * 6 *
7 */ 7 */
diff --git a/arch/s390/mm/extmem.c b/arch/s390/mm/extmem.c
index 075ddada4911..519bba716cc3 100644
--- a/arch/s390/mm/extmem.c
+++ b/arch/s390/mm/extmem.c
@@ -1,10 +1,9 @@
1/* 1/*
2 * File...........: arch/s390/mm/extmem.c
3 * Author(s)......: Carsten Otte <cotte@de.ibm.com> 2 * Author(s)......: Carsten Otte <cotte@de.ibm.com>
4 * Rob M van der Heij <rvdheij@nl.ibm.com> 3 * Rob M van der Heij <rvdheij@nl.ibm.com>
5 * Steven Shultz <shultzss@us.ibm.com> 4 * Steven Shultz <shultzss@us.ibm.com>
6 * Bugreports.to..: <Linux390@de.ibm.com> 5 * Bugreports.to..: <Linux390@de.ibm.com>
7 * (C) IBM Corporation 2002-2004 6 * Copyright IBM Corp. 2002, 2004
8 */ 7 */
9 8
10#define KMSG_COMPONENT "extmem" 9#define KMSG_COMPONENT "extmem"
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index 72cec9ecd96c..6a12d1bb6e09 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -1,8 +1,6 @@
1/* 1/*
2 * arch/s390/mm/fault.c
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * Author(s): Hartmut Penner (hp@de.ibm.com) 4 * Author(s): Hartmut Penner (hp@de.ibm.com)
7 * Ulrich Weigand (uweigand@de.ibm.com) 5 * Ulrich Weigand (uweigand@de.ibm.com)
8 * 6 *
diff --git a/arch/s390/mm/hugetlbpage.c b/arch/s390/mm/hugetlbpage.c
index 900de2b3cf28..532525ec88c1 100644
--- a/arch/s390/mm/hugetlbpage.c
+++ b/arch/s390/mm/hugetlbpage.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * IBM System z Huge TLB Page Support for Kernel. 2 * IBM System z Huge TLB Page Support for Kernel.
3 * 3 *
4 * Copyright 2007 IBM Corp. 4 * Copyright IBM Corp. 2007
5 * Author(s): Gerald Schaefer <gerald.schaefer@de.ibm.com> 5 * Author(s): Gerald Schaefer <gerald.schaefer@de.ibm.com>
6 */ 6 */
7 7
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c
index 2bea0605856e..6adbc082618a 100644
--- a/arch/s390/mm/init.c
+++ b/arch/s390/mm/init.c
@@ -1,8 +1,6 @@
1/* 1/*
2 * arch/s390/mm/init.c
3 *
4 * S390 version 2 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 1999
6 * Author(s): Hartmut Penner (hp@de.ibm.com) 4 * Author(s): Hartmut Penner (hp@de.ibm.com)
7 * 5 *
8 * Derived from "arch/i386/mm/init.c" 6 * Derived from "arch/i386/mm/init.c"
diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c
index 2857c48486ea..573384256c5c 100644
--- a/arch/s390/mm/mmap.c
+++ b/arch/s390/mm/mmap.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * linux/arch/s390/mm/mmap.c
3 *
4 * flexible mmap layout support 2 * flexible mmap layout support
5 * 3 *
6 * Copyright 2003-2004 Red Hat Inc., Durham, North Carolina. 4 * Copyright 2003-2004 Red Hat Inc., Durham, North Carolina.
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
index a3db5a3ea083..1cab221077cc 100644
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 2007,2011 2 * Copyright IBM Corp. 2007, 2011
3 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> 3 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
4 */ 4 */
5 5
diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c
index 71ae20df674e..6f896e75ab49 100644
--- a/arch/s390/mm/vmem.c
+++ b/arch/s390/mm/vmem.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * arch/s390/mm/vmem.c
3 *
4 * Copyright IBM Corp. 2006 2 * Copyright IBM Corp. 2006
5 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> 3 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
6 */ 4 */
diff --git a/arch/s390/oprofile/backtrace.c b/arch/s390/oprofile/backtrace.c
index bc4b84a35cad..c82f62fb9c28 100644
--- a/arch/s390/oprofile/backtrace.c
+++ b/arch/s390/oprofile/backtrace.c
@@ -1,8 +1,6 @@
1/** 1/*
2 * arch/s390/oprofile/backtrace.c
3 *
4 * S390 Version 2 * S390 Version
5 * Copyright (C) 2005 IBM Corporation, IBM Deutschland Entwicklung GmbH. 3 * Copyright IBM Corp. 2005
6 * Author(s): Andreas Krebbel <Andreas.Krebbel@de.ibm.com> 4 * Author(s): Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
7 */ 5 */
8 6
diff --git a/arch/s390/oprofile/hwsampler.c b/arch/s390/oprofile/hwsampler.c
index a4a89fa980d6..0cb385da202c 100644
--- a/arch/s390/oprofile/hwsampler.c
+++ b/arch/s390/oprofile/hwsampler.c
@@ -1,6 +1,4 @@
1/** 1/*
2 * arch/s390/oprofile/hwsampler.c
3 *
4 * Copyright IBM Corp. 2010 2 * Copyright IBM Corp. 2010
5 * Author: Heinz Graalfs <graalfs@de.ibm.com> 3 * Author: Heinz Graalfs <graalfs@de.ibm.com>
6 */ 4 */
diff --git a/arch/s390/oprofile/init.c b/arch/s390/oprofile/init.c
index 2297be406c61..a1e9d69a9c90 100644
--- a/arch/s390/oprofile/init.c
+++ b/arch/s390/oprofile/init.c
@@ -1,8 +1,6 @@
1/** 1/*
2 * arch/s390/oprofile/init.c
3 *
4 * S390 Version 2 * S390 Version
5 * Copyright (C) 2002-2011 IBM Deutschland Entwicklung GmbH, IBM Corporation 3 * Copyright IBM Corp. 2002, 2011
6 * Author(s): Thomas Spatzier (tspat@de.ibm.com) 4 * Author(s): Thomas Spatzier (tspat@de.ibm.com)
7 * Author(s): Mahesh Salgaonkar (mahesh@linux.vnet.ibm.com) 5 * Author(s): Mahesh Salgaonkar (mahesh@linux.vnet.ibm.com)
8 * Author(s): Heinz Graalfs (graalfs@linux.vnet.ibm.com) 6 * Author(s): Heinz Graalfs (graalfs@linux.vnet.ibm.com)
diff --git a/arch/s390/oprofile/op_counter.h b/arch/s390/oprofile/op_counter.h
index 1a8d3ca09014..61b2531eef17 100644
--- a/arch/s390/oprofile/op_counter.h
+++ b/arch/s390/oprofile/op_counter.h
@@ -1,7 +1,5 @@
1/** 1/*
2 * arch/s390/oprofile/op_counter.h 2 * Copyright IBM Corp. 2011
3 *
4 * Copyright (C) 2011 IBM Deutschland Entwicklung GmbH, IBM Corporation
5 * Author(s): Andreas Krebbel (krebbel@linux.vnet.ibm.com) 3 * Author(s): Andreas Krebbel (krebbel@linux.vnet.ibm.com)
6 * 4 *
7 * @remark Copyright 2011 OProfile authors 5 * @remark Copyright 2011 OProfile authors
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index f3509120a507..15370a2c5ff0 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd.c
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Horst Hummel <Horst.Hummel@de.ibm.com> 3 * Horst Hummel <Horst.Hummel@de.ibm.com>
5 * Carsten Otte <Cotte@de.ibm.com> 4 * Carsten Otte <Cotte@de.ibm.com>
@@ -52,7 +51,7 @@ void dasd_int_handler(struct ccw_device *, unsigned long, struct irb *);
52 51
53MODULE_AUTHOR("Holger Smolinski <Holger.Smolinski@de.ibm.com>"); 52MODULE_AUTHOR("Holger Smolinski <Holger.Smolinski@de.ibm.com>");
54MODULE_DESCRIPTION("Linux on S/390 DASD device driver," 53MODULE_DESCRIPTION("Linux on S/390 DASD device driver,"
55 " Copyright 2000 IBM Corporation"); 54 " Copyright IBM Corp. 2000");
56MODULE_SUPPORTED_DEVICE("dasd"); 55MODULE_SUPPORTED_DEVICE("dasd");
57MODULE_LICENSE("GPL"); 56MODULE_LICENSE("GPL");
58 57
@@ -82,6 +81,7 @@ static void dasd_profile_exit(struct dasd_profile *);
82static wait_queue_head_t dasd_init_waitq; 81static wait_queue_head_t dasd_init_waitq;
83static wait_queue_head_t dasd_flush_wq; 82static wait_queue_head_t dasd_flush_wq;
84static wait_queue_head_t generic_waitq; 83static wait_queue_head_t generic_waitq;
84static wait_queue_head_t shutdown_waitq;
85 85
86/* 86/*
87 * Allocate memory for a new device structure. 87 * Allocate memory for a new device structure.
@@ -1994,6 +1994,8 @@ static void dasd_device_tasklet(struct dasd_device *device)
1994 /* Now check if the head of the ccw queue needs to be started. */ 1994 /* Now check if the head of the ccw queue needs to be started. */
1995 __dasd_device_start_head(device); 1995 __dasd_device_start_head(device);
1996 spin_unlock_irq(get_ccwdev_lock(device->cdev)); 1996 spin_unlock_irq(get_ccwdev_lock(device->cdev));
1997 if (waitqueue_active(&shutdown_waitq))
1998 wake_up(&shutdown_waitq);
1997 dasd_put_device(device); 1999 dasd_put_device(device);
1998} 2000}
1999 2001
@@ -2632,6 +2634,8 @@ static void dasd_block_tasklet(struct dasd_block *block)
2632 __dasd_block_start_head(block); 2634 __dasd_block_start_head(block);
2633 spin_unlock(&block->queue_lock); 2635 spin_unlock(&block->queue_lock);
2634 spin_unlock_irq(&block->request_queue_lock); 2636 spin_unlock_irq(&block->request_queue_lock);
2637 if (waitqueue_active(&shutdown_waitq))
2638 wake_up(&shutdown_waitq);
2635 dasd_put_device(block->base); 2639 dasd_put_device(block->base);
2636} 2640}
2637 2641
@@ -3474,6 +3478,32 @@ char *dasd_get_sense(struct irb *irb)
3474} 3478}
3475EXPORT_SYMBOL_GPL(dasd_get_sense); 3479EXPORT_SYMBOL_GPL(dasd_get_sense);
3476 3480
3481static inline int _wait_for_empty_queues(struct dasd_device *device)
3482{
3483 if (device->block)
3484 return list_empty(&device->ccw_queue) &&
3485 list_empty(&device->block->ccw_queue);
3486 else
3487 return list_empty(&device->ccw_queue);
3488}
3489
3490void dasd_generic_shutdown(struct ccw_device *cdev)
3491{
3492 struct dasd_device *device;
3493
3494 device = dasd_device_from_cdev(cdev);
3495 if (IS_ERR(device))
3496 return;
3497
3498 if (device->block)
3499 dasd_schedule_block_bh(device->block);
3500
3501 dasd_schedule_device_bh(device);
3502
3503 wait_event(shutdown_waitq, _wait_for_empty_queues(device));
3504}
3505EXPORT_SYMBOL_GPL(dasd_generic_shutdown);
3506
3477static int __init dasd_init(void) 3507static int __init dasd_init(void)
3478{ 3508{
3479 int rc; 3509 int rc;
@@ -3481,6 +3511,7 @@ static int __init dasd_init(void)
3481 init_waitqueue_head(&dasd_init_waitq); 3511 init_waitqueue_head(&dasd_init_waitq);
3482 init_waitqueue_head(&dasd_flush_wq); 3512 init_waitqueue_head(&dasd_flush_wq);
3483 init_waitqueue_head(&generic_waitq); 3513 init_waitqueue_head(&generic_waitq);
3514 init_waitqueue_head(&shutdown_waitq);
3484 3515
3485 /* register 'common' DASD debug area, used for all DBF_XXX calls */ 3516 /* register 'common' DASD debug area, used for all DBF_XXX calls */
3486 dasd_debug_area = debug_register("dasd", 1, 1, 8 * sizeof(long)); 3517 dasd_debug_area = debug_register("dasd", 1, 1, 8 * sizeof(long));
diff --git a/drivers/s390/block/dasd_3990_erp.c b/drivers/s390/block/dasd_3990_erp.c
index 0326571e7ffa..f8212d54013a 100644
--- a/drivers/s390/block/dasd_3990_erp.c
+++ b/drivers/s390/block/dasd_3990_erp.c
@@ -1,9 +1,8 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_3990_erp.c
3 * Author(s)......: Horst Hummel <Horst.Hummel@de.ibm.com> 2 * Author(s)......: Horst Hummel <Horst.Hummel@de.ibm.com>
4 * Holger Smolinski <Holger.Smolinski@de.ibm.com> 3 * Holger Smolinski <Holger.Smolinski@de.ibm.com>
5 * Bugreports.to..: <Linux390@de.ibm.com> 4 * Bugreports.to..: <Linux390@de.ibm.com>
6 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000, 2001 5 * Copyright IBM Corp. 2000, 2001
7 * 6 *
8 */ 7 */
9 8
diff --git a/drivers/s390/block/dasd_alias.c b/drivers/s390/block/dasd_alias.c
index b3beed5434e4..157defe5e069 100644
--- a/drivers/s390/block/dasd_alias.c
+++ b/drivers/s390/block/dasd_alias.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * PAV alias management for the DASD ECKD discipline 2 * PAV alias management for the DASD ECKD discipline
3 * 3 *
4 * Copyright IBM Corporation, 2007 4 * Copyright IBM Corp. 2007
5 * Author(s): Stefan Weinhuber <wein@de.ibm.com> 5 * Author(s): Stefan Weinhuber <wein@de.ibm.com>
6 */ 6 */
7 7
diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c
index d71511c7850a..b2b8c18eeced 100644
--- a/drivers/s390/block/dasd_devmap.c
+++ b/drivers/s390/block/dasd_devmap.c
@@ -1,11 +1,10 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_devmap.c
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Horst Hummel <Horst.Hummel@de.ibm.com> 3 * Horst Hummel <Horst.Hummel@de.ibm.com>
5 * Carsten Otte <Cotte@de.ibm.com> 4 * Carsten Otte <Cotte@de.ibm.com>
6 * Martin Schwidefsky <schwidefsky@de.ibm.com> 5 * Martin Schwidefsky <schwidefsky@de.ibm.com>
7 * Bugreports.to..: <Linux390@de.ibm.com> 6 * Bugreports.to..: <Linux390@de.ibm.com>
8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 7 * Copyright IBM Corp. 1999,2001
9 * 8 *
10 * Device mapping and dasd= parameter parsing functions. All devmap 9 * Device mapping and dasd= parameter parsing functions. All devmap
11 * functions may not be called from interrupt context. In particular 10 * functions may not be called from interrupt context. In particular
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c
index 0cea7e98f464..9bd5da36f99e 100644
--- a/drivers/s390/block/dasd_diag.c
+++ b/drivers/s390/block/dasd_diag.c
@@ -1,10 +1,9 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_diag.c
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Based on.......: linux/drivers/s390/block/mdisk.c 3 * Based on.......: linux/drivers/s390/block/mdisk.c
5 * ...............: by Hartmunt Penner <hpenner@de.ibm.com> 4 * ...............: by Hartmunt Penner <hpenner@de.ibm.com>
6 * Bugreports.to..: <Linux390@de.ibm.com> 5 * Bugreports.to..: <Linux390@de.ibm.com>
7 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 6 * Copyright IBM Corp. 1999, 2000
8 * 7 *
9 */ 8 */
10 9
diff --git a/drivers/s390/block/dasd_diag.h b/drivers/s390/block/dasd_diag.h
index 4f71fbe60c82..a803cc731586 100644
--- a/drivers/s390/block/dasd_diag.h
+++ b/drivers/s390/block/dasd_diag.h
@@ -1,10 +1,9 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_diag.h
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Based on.......: linux/drivers/s390/block/mdisk.h 3 * Based on.......: linux/drivers/s390/block/mdisk.h
5 * ...............: by Hartmunt Penner <hpenner@de.ibm.com> 4 * ...............: by Hartmunt Penner <hpenner@de.ibm.com>
6 * Bugreports.to..: <Linux390@de.ibm.com> 5 * Bugreports.to..: <Linux390@de.ibm.com>
7 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 6 * Copyright IBM Corp. 1999, 2000
8 * 7 *
9 */ 8 */
10 9
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index bc2e8a7c265b..40a826a7295f 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_eckd.c
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Horst Hummel <Horst.Hummel@de.ibm.com> 3 * Horst Hummel <Horst.Hummel@de.ibm.com>
5 * Carsten Otte <Cotte@de.ibm.com> 4 * Carsten Otte <Cotte@de.ibm.com>
@@ -4247,6 +4246,7 @@ static struct ccw_driver dasd_eckd_driver = {
4247 .set_online = dasd_eckd_set_online, 4246 .set_online = dasd_eckd_set_online,
4248 .notify = dasd_generic_notify, 4247 .notify = dasd_generic_notify,
4249 .path_event = dasd_generic_path_event, 4248 .path_event = dasd_generic_path_event,
4249 .shutdown = dasd_generic_shutdown,
4250 .freeze = dasd_generic_pm_freeze, 4250 .freeze = dasd_generic_pm_freeze,
4251 .thaw = dasd_generic_restore_device, 4251 .thaw = dasd_generic_restore_device,
4252 .restore = dasd_generic_restore_device, 4252 .restore = dasd_generic_restore_device,
diff --git a/drivers/s390/block/dasd_eckd.h b/drivers/s390/block/dasd_eckd.h
index 4a688a873a77..2555e494591f 100644
--- a/drivers/s390/block/dasd_eckd.h
+++ b/drivers/s390/block/dasd_eckd.h
@@ -1,9 +1,8 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_eckd.h
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Horst Hummel <Horst.Hummel@de.ibm.com> 3 * Horst Hummel <Horst.Hummel@de.ibm.com>
5 * Bugreports.to..: <Linux390@de.ibm.com> 4 * Bugreports.to..: <Linux390@de.ibm.com>
6 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 5 * Copyright IBM Corp. 1999, 2000
7 * 6 *
8 */ 7 */
9 8
diff --git a/drivers/s390/block/dasd_eer.c b/drivers/s390/block/dasd_eer.c
index 16c5208c3dc7..ff901b5509c1 100644
--- a/drivers/s390/block/dasd_eer.c
+++ b/drivers/s390/block/dasd_eer.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Character device driver for extended error reporting. 2 * Character device driver for extended error reporting.
3 * 3 *
4 * Copyright (C) 2005 IBM Corporation 4 * Copyright IBM Corp. 2005
5 * extended error reporting for DASD ECKD devices 5 * extended error reporting for DASD ECKD devices
6 * Author(s): Stefan Weinhuber <wein@de.ibm.com> 6 * Author(s): Stefan Weinhuber <wein@de.ibm.com>
7 */ 7 */
diff --git a/drivers/s390/block/dasd_erp.c b/drivers/s390/block/dasd_erp.c
index 0eafe2e421e7..d01ef82f8757 100644
--- a/drivers/s390/block/dasd_erp.c
+++ b/drivers/s390/block/dasd_erp.c
@@ -1,11 +1,10 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd.c
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Horst Hummel <Horst.Hummel@de.ibm.com> 3 * Horst Hummel <Horst.Hummel@de.ibm.com>
5 * Carsten Otte <Cotte@de.ibm.com> 4 * Carsten Otte <Cotte@de.ibm.com>
6 * Martin Schwidefsky <schwidefsky@de.ibm.com> 5 * Martin Schwidefsky <schwidefsky@de.ibm.com>
7 * Bugreports.to..: <Linux390@de.ibm.com> 6 * Bugreports.to..: <Linux390@de.ibm.com>
8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 7 * Copyright IBM Corp. 1999, 2001
9 * 8 *
10 */ 9 */
11 10
diff --git a/drivers/s390/block/dasd_fba.c b/drivers/s390/block/dasd_fba.c
index a62a75358eb9..fb7f3bdc6604 100644
--- a/drivers/s390/block/dasd_fba.c
+++ b/drivers/s390/block/dasd_fba.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_fba.c
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Bugreports.to..: <Linux390@de.ibm.com> 3 * Bugreports.to..: <Linux390@de.ibm.com>
5 * Copyright IBM Corp. 1999, 2009 4 * Copyright IBM Corp. 1999, 2009
diff --git a/drivers/s390/block/dasd_fba.h b/drivers/s390/block/dasd_fba.h
index 14c910baa5fe..b5d3db0e5efb 100644
--- a/drivers/s390/block/dasd_fba.h
+++ b/drivers/s390/block/dasd_fba.h
@@ -1,8 +1,7 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_fba.h
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Bugreports.to..: <Linux390@de.ibm.com> 3 * Bugreports.to..: <Linux390@de.ibm.com>
5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 4 * Coypright IBM Corp. 1999, 2000
6 * 5 *
7 */ 6 */
8 7
diff --git a/drivers/s390/block/dasd_genhd.c b/drivers/s390/block/dasd_genhd.c
index 19a1ff03d65e..f64921756ad6 100644
--- a/drivers/s390/block/dasd_genhd.c
+++ b/drivers/s390/block/dasd_genhd.c
@@ -1,11 +1,10 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_genhd.c
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Horst Hummel <Horst.Hummel@de.ibm.com> 3 * Horst Hummel <Horst.Hummel@de.ibm.com>
5 * Carsten Otte <Cotte@de.ibm.com> 4 * Carsten Otte <Cotte@de.ibm.com>
6 * Martin Schwidefsky <schwidefsky@de.ibm.com> 5 * Martin Schwidefsky <schwidefsky@de.ibm.com>
7 * Bugreports.to..: <Linux390@de.ibm.com> 6 * Bugreports.to..: <Linux390@de.ibm.com>
8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 7 * Copyright IBM Corp. 1999, 2001
9 * 8 *
10 * gendisk related functions for the dasd driver. 9 * gendisk related functions for the dasd driver.
11 * 10 *
diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h
index c05da00583f0..7ff93eea673d 100644
--- a/drivers/s390/block/dasd_int.h
+++ b/drivers/s390/block/dasd_int.h
@@ -1,5 +1,4 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_int.h
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Horst Hummel <Horst.Hummel@de.ibm.com> 3 * Horst Hummel <Horst.Hummel@de.ibm.com>
5 * Martin Schwidefsky <schwidefsky@de.ibm.com> 4 * Martin Schwidefsky <schwidefsky@de.ibm.com>
@@ -686,6 +685,7 @@ int dasd_generic_set_offline (struct ccw_device *cdev);
686int dasd_generic_notify(struct ccw_device *, int); 685int dasd_generic_notify(struct ccw_device *, int);
687int dasd_generic_last_path_gone(struct dasd_device *); 686int dasd_generic_last_path_gone(struct dasd_device *);
688int dasd_generic_path_operational(struct dasd_device *); 687int dasd_generic_path_operational(struct dasd_device *);
688void dasd_generic_shutdown(struct ccw_device *);
689 689
690void dasd_generic_handle_state_change(struct dasd_device *); 690void dasd_generic_handle_state_change(struct dasd_device *);
691int dasd_generic_pm_freeze(struct ccw_device *); 691int dasd_generic_pm_freeze(struct ccw_device *);
diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c
index 792c69e78fe2..cceae70279f6 100644
--- a/drivers/s390/block/dasd_ioctl.c
+++ b/drivers/s390/block/dasd_ioctl.c
@@ -1,11 +1,10 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_ioctl.c
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Horst Hummel <Horst.Hummel@de.ibm.com> 3 * Horst Hummel <Horst.Hummel@de.ibm.com>
5 * Carsten Otte <Cotte@de.ibm.com> 4 * Carsten Otte <Cotte@de.ibm.com>
6 * Martin Schwidefsky <schwidefsky@de.ibm.com> 5 * Martin Schwidefsky <schwidefsky@de.ibm.com>
7 * Bugreports.to..: <Linux390@de.ibm.com> 6 * Bugreports.to..: <Linux390@de.ibm.com>
8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 7 * Copyright IBM Corp. 1999, 2001
9 * 8 *
10 * i/o controls for the dasd driver. 9 * i/o controls for the dasd driver.
11 */ 10 */
diff --git a/drivers/s390/block/dasd_proc.c b/drivers/s390/block/dasd_proc.c
index e12989fff4ff..78ac905a5b7f 100644
--- a/drivers/s390/block/dasd_proc.c
+++ b/drivers/s390/block/dasd_proc.c
@@ -1,11 +1,10 @@
1/* 1/*
2 * File...........: linux/drivers/s390/block/dasd_proc.c
3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 2 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4 * Horst Hummel <Horst.Hummel@de.ibm.com> 3 * Horst Hummel <Horst.Hummel@de.ibm.com>
5 * Carsten Otte <Cotte@de.ibm.com> 4 * Carsten Otte <Cotte@de.ibm.com>
6 * Martin Schwidefsky <schwidefsky@de.ibm.com> 5 * Martin Schwidefsky <schwidefsky@de.ibm.com>
7 * Bugreports.to..: <Linux390@de.ibm.com> 6 * Bugreports.to..: <Linux390@de.ibm.com>
8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2002 7 * Coypright IBM Corp. 1999, 2002
9 * 8 *
10 * /proc interface for the dasd driver. 9 * /proc interface for the dasd driver.
11 * 10 *
diff --git a/drivers/s390/char/ctrlchar.c b/drivers/s390/char/ctrlchar.c
index 0e9a309b9669..8de2deb176d7 100644
--- a/drivers/s390/char/ctrlchar.c
+++ b/drivers/s390/char/ctrlchar.c
@@ -1,8 +1,7 @@
1/* 1/*
2 * drivers/s390/char/ctrlchar.c
3 * Unified handling of special chars. 2 * Unified handling of special chars.
4 * 3 *
5 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright IBM Corp. 2001
6 * Author(s): Fritz Elfert <felfert@millenux.com> <elfert@de.ibm.com> 5 * Author(s): Fritz Elfert <felfert@millenux.com> <elfert@de.ibm.com>
7 * 6 *
8 */ 7 */
diff --git a/drivers/s390/char/ctrlchar.h b/drivers/s390/char/ctrlchar.h
index 935ffa0ea7c6..1a53552f4981 100644
--- a/drivers/s390/char/ctrlchar.h
+++ b/drivers/s390/char/ctrlchar.h
@@ -1,8 +1,7 @@
1/* 1/*
2 * drivers/s390/char/ctrlchar.c
3 * Unified handling of special chars. 2 * Unified handling of special chars.
4 * 3 *
5 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright IBM Corp. 2001
6 * Author(s): Fritz Elfert <felfert@millenux.com> <elfert@de.ibm.com> 5 * Author(s): Fritz Elfert <felfert@millenux.com> <elfert@de.ibm.com>
7 * 6 *
8 */ 7 */
diff --git a/drivers/s390/char/keyboard.c b/drivers/s390/char/keyboard.c
index 7ef9cfdc17d8..01463b052ae7 100644
--- a/drivers/s390/char/keyboard.c
+++ b/drivers/s390/char/keyboard.c
@@ -1,9 +1,8 @@
1/* 1/*
2 * drivers/s390/char/keyboard.c
3 * ebcdic keycode functions for s390 console drivers 2 * ebcdic keycode functions for s390 console drivers
4 * 3 *
5 * S390 version 4 * S390 version
6 * Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation 5 * Copyright IBM Corp. 2003
7 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
8 */ 7 */
9 8
diff --git a/drivers/s390/char/keyboard.h b/drivers/s390/char/keyboard.h
index f682f4e49680..d0ae2be58191 100644
--- a/drivers/s390/char/keyboard.h
+++ b/drivers/s390/char/keyboard.h
@@ -1,8 +1,7 @@
1/* 1/*
2 * drivers/s390/char/keyboard.h
3 * ebcdic keycode functions for s390 console drivers 2 * ebcdic keycode functions for s390 console drivers
4 * 3 *
5 * Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright IBM Corp. 2003
6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
7 */ 6 */
8 7
diff --git a/drivers/s390/char/sclp_config.c b/drivers/s390/char/sclp_config.c
index 3c03c1060be6..444d36183a25 100644
--- a/drivers/s390/char/sclp_config.c
+++ b/drivers/s390/char/sclp_config.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/char/sclp_config.c
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> 3 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
6 */ 4 */
diff --git a/drivers/s390/char/sclp_cpi.c b/drivers/s390/char/sclp_cpi.c
index 5716487b8c9d..d70d8c20229c 100644
--- a/drivers/s390/char/sclp_cpi.c
+++ b/drivers/s390/char/sclp_cpi.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * drivers/s390/char/sclp_cpi.c
3 * SCLP control programm identification 2 * SCLP control programm identification
4 * 3 *
5 * Copyright IBM Corp. 2001, 2007 4 * Copyright IBM Corp. 2001, 2007
diff --git a/drivers/s390/char/sclp_cpi_sys.c b/drivers/s390/char/sclp_cpi_sys.c
index bd1b9c919051..2acea809e2ac 100644
--- a/drivers/s390/char/sclp_cpi_sys.c
+++ b/drivers/s390/char/sclp_cpi_sys.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * drivers/s390/char/sclp_cpi_sys.c
3 * SCLP control program identification sysfs interface 2 * SCLP control program identification sysfs interface
4 * 3 *
5 * Copyright IBM Corp. 2001, 2007 4 * Copyright IBM Corp. 2001, 2007
diff --git a/drivers/s390/char/sclp_cpi_sys.h b/drivers/s390/char/sclp_cpi_sys.h
index deef3e6ff496..65bb6a99c97f 100644
--- a/drivers/s390/char/sclp_cpi_sys.h
+++ b/drivers/s390/char/sclp_cpi_sys.h
@@ -1,5 +1,4 @@
1/* 1/*
2 * drivers/s390/char/sclp_cpi_sys.h
3 * SCLP control program identification sysfs interface 2 * SCLP control program identification sysfs interface
4 * 3 *
5 * Copyright IBM Corp. 2007 4 * Copyright IBM Corp. 2007
diff --git a/drivers/s390/char/sclp_ocf.c b/drivers/s390/char/sclp_ocf.c
index ab294d5a534e..2553db0fdb52 100644
--- a/drivers/s390/char/sclp_ocf.c
+++ b/drivers/s390/char/sclp_ocf.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * drivers/s390/char/sclp_ocf.c
3 * SCLP OCF communication parameters sysfs interface 2 * SCLP OCF communication parameters sysfs interface
4 * 3 *
5 * Copyright IBM Corp. 2011 4 * Copyright IBM Corp. 2011
diff --git a/drivers/s390/char/sclp_quiesce.c b/drivers/s390/char/sclp_quiesce.c
index 69df137310bc..475e470d9768 100644
--- a/drivers/s390/char/sclp_quiesce.c
+++ b/drivers/s390/char/sclp_quiesce.c
@@ -1,8 +1,7 @@
1/* 1/*
2 * drivers/s390/char/sclp_quiesce.c
3 * signal quiesce handler 2 * signal quiesce handler
4 * 3 *
5 * (C) Copyright IBM Corp. 1999,2004 4 * Copyright IBM Corp. 1999, 2004
6 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> 5 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
7 * Peter Oberparleiter <peter.oberparleiter@de.ibm.com> 6 * Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
8 */ 7 */
diff --git a/drivers/s390/char/sclp_sdias.c b/drivers/s390/char/sclp_sdias.c
index 50f7115990ff..6a6f76bf6e3d 100644
--- a/drivers/s390/char/sclp_sdias.c
+++ b/drivers/s390/char/sclp_sdias.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Sclp "store data in absolut storage" 2 * Sclp "store data in absolut storage"
3 * 3 *
4 * Copyright IBM Corp. 2003,2007 4 * Copyright IBM Corp. 2003, 2007
5 * Author(s): Michael Holzheu 5 * Author(s): Michael Holzheu
6 */ 6 */
7 7
diff --git a/drivers/s390/char/sclp_tty.c b/drivers/s390/char/sclp_tty.c
index e66a75b3822c..0792c85baafe 100644
--- a/drivers/s390/char/sclp_tty.c
+++ b/drivers/s390/char/sclp_tty.c
@@ -1,9 +1,8 @@
1/* 1/*
2 * drivers/s390/char/sclp_tty.c
3 * SCLP line mode terminal driver. 2 * SCLP line mode terminal driver.
4 * 3 *
5 * S390 version 4 * S390 version
6 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 5 * Copyright IBM Corp. 1999
7 * Author(s): Martin Peschke <mpeschke@de.ibm.com> 6 * Author(s): Martin Peschke <mpeschke@de.ibm.com>
8 * Martin Schwidefsky <schwidefsky@de.ibm.com> 7 * Martin Schwidefsky <schwidefsky@de.ibm.com>
9 */ 8 */
diff --git a/drivers/s390/char/sclp_tty.h b/drivers/s390/char/sclp_tty.h
index 4b965b22fecd..c8773421c31f 100644
--- a/drivers/s390/char/sclp_tty.h
+++ b/drivers/s390/char/sclp_tty.h
@@ -1,9 +1,8 @@
1/* 1/*
2 * drivers/s390/char/sclp_tty.h
3 * interface to the SCLP-read/write driver 2 * interface to the SCLP-read/write driver
4 * 3 *
5 * S390 version 4 * S390 version
6 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation 5 * Copyright IBM Corp. 1999
7 * Author(s): Martin Peschke <mpeschke@de.ibm.com> 6 * Author(s): Martin Peschke <mpeschke@de.ibm.com>
8 * Martin Schwidefsky <schwidefsky@de.ibm.com> 7 * Martin Schwidefsky <schwidefsky@de.ibm.com>
9 */ 8 */
diff --git a/drivers/s390/char/tape.h b/drivers/s390/char/tape.h
index bc6c7cfd36b6..c06be6cc2fc3 100644
--- a/drivers/s390/char/tape.h
+++ b/drivers/s390/char/tape.h
@@ -1,5 +1,4 @@
1/* 1/*
2 * drivers/s390/char/tape.h
3 * tape device driver for 3480/3490E/3590 tapes. 2 * tape device driver for 3480/3490E/3590 tapes.
4 * 3 *
5 * S390 and zSeries version 4 * S390 and zSeries version
diff --git a/drivers/s390/char/tape_34xx.c b/drivers/s390/char/tape_34xx.c
index b28de80b7ca4..6ae929c024ae 100644
--- a/drivers/s390/char/tape_34xx.c
+++ b/drivers/s390/char/tape_34xx.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * drivers/s390/char/tape_34xx.c
3 * tape device discipline for 3480/3490 tapes. 2 * tape device discipline for 3480/3490 tapes.
4 * 3 *
5 * Copyright IBM Corp. 2001, 2009 4 * Copyright IBM Corp. 2001, 2009
diff --git a/drivers/s390/char/tape_3590.c b/drivers/s390/char/tape_3590.c
index a5c6614b0db2..1b0eb49f739c 100644
--- a/drivers/s390/char/tape_3590.c
+++ b/drivers/s390/char/tape_3590.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * drivers/s390/char/tape_3590.c
3 * tape device discipline for 3590 tapes. 2 * tape device discipline for 3590 tapes.
4 * 3 *
5 * Copyright IBM Corp. 2001, 2009 4 * Copyright IBM Corp. 2001, 2009
diff --git a/drivers/s390/char/tape_3590.h b/drivers/s390/char/tape_3590.h
index 4534055f1376..36b759e89d22 100644
--- a/drivers/s390/char/tape_3590.h
+++ b/drivers/s390/char/tape_3590.h
@@ -1,8 +1,7 @@
1/* 1/*
2 * drivers/s390/char/tape_3590.h
3 * tape device discipline for 3590 tapes. 2 * tape device discipline for 3590 tapes.
4 * 3 *
5 * Copyright IBM Corp. 2001,2006 4 * Copyright IBM Corp. 2001, 2006
6 * Author(s): Stefan Bader <shbader@de.ibm.com> 5 * Author(s): Stefan Bader <shbader@de.ibm.com>
7 * Michael Holzheu <holzheu@de.ibm.com> 6 * Michael Holzheu <holzheu@de.ibm.com>
8 * Martin Schwidefsky <schwidefsky@de.ibm.com> 7 * Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/drivers/s390/char/tape_char.c b/drivers/s390/char/tape_char.c
index 46886a7578c6..2d61db3fc62a 100644
--- a/drivers/s390/char/tape_char.c
+++ b/drivers/s390/char/tape_char.c
@@ -1,9 +1,8 @@
1/* 1/*
2 * drivers/s390/char/tape_char.c
3 * character device frontend for tape device driver 2 * character device frontend for tape device driver
4 * 3 *
5 * S390 and zSeries version 4 * S390 and zSeries version
6 * Copyright IBM Corp. 2001,2006 5 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Carsten Otte <cotte@de.ibm.com> 6 * Author(s): Carsten Otte <cotte@de.ibm.com>
8 * Michael Holzheu <holzheu@de.ibm.com> 7 * Michael Holzheu <holzheu@de.ibm.com>
9 * Tuan Ngo-Anh <ngoanh@de.ibm.com> 8 * Tuan Ngo-Anh <ngoanh@de.ibm.com>
diff --git a/drivers/s390/char/tape_class.c b/drivers/s390/char/tape_class.c
index 55343df61edd..54b3c79203f5 100644
--- a/drivers/s390/char/tape_class.c
+++ b/drivers/s390/char/tape_class.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * (C) Copyright IBM Corp. 2004 2 * Copyright IBM Corp. 2004
3 * tape_class.c
4 * 3 *
5 * Tape class device support 4 * Tape class device support
6 * 5 *
@@ -17,7 +16,7 @@
17 16
18MODULE_AUTHOR("Stefan Bader <shbader@de.ibm.com>"); 17MODULE_AUTHOR("Stefan Bader <shbader@de.ibm.com>");
19MODULE_DESCRIPTION( 18MODULE_DESCRIPTION(
20 "(C) Copyright IBM Corp. 2004 All Rights Reserved.\n" 19 "Copyright IBM Corp. 2004 All Rights Reserved.\n"
21 "tape_class.c" 20 "tape_class.c"
22); 21);
23MODULE_LICENSE("GPL"); 22MODULE_LICENSE("GPL");
diff --git a/drivers/s390/char/tape_class.h b/drivers/s390/char/tape_class.h
index ba2092f741d5..a332c10d50ad 100644
--- a/drivers/s390/char/tape_class.h
+++ b/drivers/s390/char/tape_class.h
@@ -1,6 +1,5 @@
1/* 1/*
2 * (C) Copyright IBM Corp. 2004 All Rights Reserved. 2 * Copyright IBM Corp. 2004 All Rights Reserved.
3 * tape_class.h
4 * 3 *
5 * Tape class device support 4 * Tape class device support
6 * 5 *
diff --git a/drivers/s390/char/tape_core.c b/drivers/s390/char/tape_core.c
index 585618663ba4..f3b5123faf08 100644
--- a/drivers/s390/char/tape_core.c
+++ b/drivers/s390/char/tape_core.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * drivers/s390/char/tape_core.c
3 * basic function of the tape device driver 2 * basic function of the tape device driver
4 * 3 *
5 * S390 and zSeries version 4 * S390 and zSeries version
diff --git a/drivers/s390/char/tape_proc.c b/drivers/s390/char/tape_proc.c
index 0ceb37984f77..8733b232a116 100644
--- a/drivers/s390/char/tape_proc.c
+++ b/drivers/s390/char/tape_proc.c
@@ -1,9 +1,8 @@
1/* 1/*
2 * drivers/s390/char/tape.c
3 * tape device driver for S/390 and zSeries tapes. 2 * tape device driver for S/390 and zSeries tapes.
4 * 3 *
5 * S390 and zSeries version 4 * S390 and zSeries version
6 * Copyright (C) 2001 IBM Corporation 5 * Copyright IBM Corp. 2001
7 * Author(s): Carsten Otte <cotte@de.ibm.com> 6 * Author(s): Carsten Otte <cotte@de.ibm.com>
8 * Michael Holzheu <holzheu@de.ibm.com> 7 * Michael Holzheu <holzheu@de.ibm.com>
9 * Tuan Ngo-Anh <ngoanh@de.ibm.com> 8 * Tuan Ngo-Anh <ngoanh@de.ibm.com>
diff --git a/drivers/s390/char/tape_std.c b/drivers/s390/char/tape_std.c
index e7650170274a..981a99fd8d42 100644
--- a/drivers/s390/char/tape_std.c
+++ b/drivers/s390/char/tape_std.c
@@ -1,9 +1,8 @@
1/* 1/*
2 * drivers/s390/char/tape_std.c
3 * standard tape device functions for ibm tapes. 2 * standard tape device functions for ibm tapes.
4 * 3 *
5 * S390 and zSeries version 4 * S390 and zSeries version
6 * Copyright (C) 2001,2002 IBM Deutschland Entwicklung GmbH, IBM Corporation 5 * Copyright IBM Corp. 2001, 2002
7 * Author(s): Carsten Otte <cotte@de.ibm.com> 6 * Author(s): Carsten Otte <cotte@de.ibm.com>
8 * Michael Holzheu <holzheu@de.ibm.com> 7 * Michael Holzheu <holzheu@de.ibm.com>
9 * Tuan Ngo-Anh <ngoanh@de.ibm.com> 8 * Tuan Ngo-Anh <ngoanh@de.ibm.com>
diff --git a/drivers/s390/char/tape_std.h b/drivers/s390/char/tape_std.h
index 1fc952359341..c5816ad9ed7d 100644
--- a/drivers/s390/char/tape_std.h
+++ b/drivers/s390/char/tape_std.h
@@ -1,8 +1,7 @@
1/* 1/*
2 * drivers/s390/char/tape_std.h
3 * standard tape device functions for ibm tapes. 2 * standard tape device functions for ibm tapes.
4 * 3 *
5 * Copyright (C) IBM Corp. 2001,2006 4 * Copyright IBM Corp. 2001, 2006
6 * Author(s): Carsten Otte <cotte@de.ibm.com> 5 * Author(s): Carsten Otte <cotte@de.ibm.com>
7 * Tuan Ngo-Anh <ngoanh@de.ibm.com> 6 * Tuan Ngo-Anh <ngoanh@de.ibm.com>
8 * Martin Schwidefsky <schwidefsky@de.ibm.com> 7 * Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/drivers/s390/char/tty3270.c b/drivers/s390/char/tty3270.c
index 10ec690197cb..1928f3458d10 100644
--- a/drivers/s390/char/tty3270.c
+++ b/drivers/s390/char/tty3270.c
@@ -1,11 +1,10 @@
1/* 1/*
2 * drivers/s390/char/tty3270.c
3 * IBM/3270 Driver - tty functions. 2 * IBM/3270 Driver - tty functions.
4 * 3 *
5 * Author(s): 4 * Author(s):
6 * Original 3270 Code for 2.4 written by Richard Hitt (UTS Global) 5 * Original 3270 Code for 2.4 written by Richard Hitt (UTS Global)
7 * Rewritten for 2.5 by Martin Schwidefsky <schwidefsky@de.ibm.com> 6 * Rewritten for 2.5 by Martin Schwidefsky <schwidefsky@de.ibm.com>
8 * -- Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation 7 * -- Copyright IBM Corp. 2003
9 */ 8 */
10 9
11#include <linux/module.h> 10#include <linux/module.h>
diff --git a/drivers/s390/char/tty3270.h b/drivers/s390/char/tty3270.h
index 799da57f0390..11141a8f8974 100644
--- a/drivers/s390/char/tty3270.h
+++ b/drivers/s390/char/tty3270.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/char/tty3270.h
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * 3 *
6 */ 4 */
diff --git a/drivers/s390/char/vmcp.c b/drivers/s390/char/vmcp.c
index 89c03e6b1c0c..0fdedadff7bc 100644
--- a/drivers/s390/char/vmcp.c
+++ b/drivers/s390/char/vmcp.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright IBM Corp. 2004,2010 2 * Copyright IBM Corp. 2004, 2010
3 * Interface implementation for communication with the z/VM control program 3 * Interface implementation for communication with the z/VM control program
4 * 4 *
5 * Author(s): Christian Borntraeger <borntraeger@de.ibm.com> 5 * Author(s): Christian Borntraeger <borntraeger@de.ibm.com>
diff --git a/drivers/s390/char/vmcp.h b/drivers/s390/char/vmcp.h
index 6a993948e188..1e29b0418382 100644
--- a/drivers/s390/char/vmcp.h
+++ b/drivers/s390/char/vmcp.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (C) 2004, 2005 IBM Corporation 2 * Copyright IBM Corp. 2004, 2005
3 * Interface implementation for communication with the z/VM control program 3 * Interface implementation for communication with the z/VM control program
4 * Version 1.0 4 * Version 1.0
5 * Author(s): Christian Borntraeger <cborntra@de.ibm.com> 5 * Author(s): Christian Borntraeger <cborntra@de.ibm.com>
diff --git a/drivers/s390/char/vmlogrdr.c b/drivers/s390/char/vmlogrdr.c
index 524d988d89dd..c131bc40f962 100644
--- a/drivers/s390/char/vmlogrdr.c
+++ b/drivers/s390/char/vmlogrdr.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * drivers/s390/char/vmlogrdr.c
3 * character device driver for reading z/VM system service records 2 * character device driver for reading z/VM system service records
4 * 3 *
5 * 4 *
@@ -656,10 +655,19 @@ static ssize_t vmlogrdr_recording_status_show(struct device_driver *driver,
656 len = strlen(buf); 655 len = strlen(buf);
657 return len; 656 return len;
658} 657}
659
660
661static DRIVER_ATTR(recording_status, 0444, vmlogrdr_recording_status_show, 658static DRIVER_ATTR(recording_status, 0444, vmlogrdr_recording_status_show,
662 NULL); 659 NULL);
660static struct attribute *vmlogrdr_drv_attrs[] = {
661 &driver_attr_recording_status.attr,
662 NULL,
663};
664static struct attribute_group vmlogrdr_drv_attr_group = {
665 .attrs = vmlogrdr_drv_attrs,
666};
667static const struct attribute_group *vmlogrdr_drv_attr_groups[] = {
668 &vmlogrdr_drv_attr_group,
669 NULL,
670};
663 671
664static struct attribute *vmlogrdr_attrs[] = { 672static struct attribute *vmlogrdr_attrs[] = {
665 &dev_attr_autopurge.attr, 673 &dev_attr_autopurge.attr,
@@ -668,6 +676,13 @@ static struct attribute *vmlogrdr_attrs[] = {
668 &dev_attr_recording.attr, 676 &dev_attr_recording.attr,
669 NULL, 677 NULL,
670}; 678};
679static struct attribute_group vmlogrdr_attr_group = {
680 .attrs = vmlogrdr_attrs,
681};
682static const struct attribute_group *vmlogrdr_attr_groups[] = {
683 &vmlogrdr_attr_group,
684 NULL,
685};
671 686
672static int vmlogrdr_pm_prepare(struct device *dev) 687static int vmlogrdr_pm_prepare(struct device *dev)
673{ 688{
@@ -692,18 +707,14 @@ static const struct dev_pm_ops vmlogrdr_pm_ops = {
692 .prepare = vmlogrdr_pm_prepare, 707 .prepare = vmlogrdr_pm_prepare,
693}; 708};
694 709
695static struct attribute_group vmlogrdr_attr_group = {
696 .attrs = vmlogrdr_attrs,
697};
698
699static struct class *vmlogrdr_class; 710static struct class *vmlogrdr_class;
700static struct device_driver vmlogrdr_driver = { 711static struct device_driver vmlogrdr_driver = {
701 .name = "vmlogrdr", 712 .name = "vmlogrdr",
702 .bus = &iucv_bus, 713 .bus = &iucv_bus,
703 .pm = &vmlogrdr_pm_ops, 714 .pm = &vmlogrdr_pm_ops,
715 .groups = vmlogrdr_drv_attr_groups,
704}; 716};
705 717
706
707static int vmlogrdr_register_driver(void) 718static int vmlogrdr_register_driver(void)
708{ 719{
709 int ret; 720 int ret;
@@ -717,21 +728,14 @@ static int vmlogrdr_register_driver(void)
717 if (ret) 728 if (ret)
718 goto out_iucv; 729 goto out_iucv;
719 730
720 ret = driver_create_file(&vmlogrdr_driver,
721 &driver_attr_recording_status);
722 if (ret)
723 goto out_driver;
724
725 vmlogrdr_class = class_create(THIS_MODULE, "vmlogrdr"); 731 vmlogrdr_class = class_create(THIS_MODULE, "vmlogrdr");
726 if (IS_ERR(vmlogrdr_class)) { 732 if (IS_ERR(vmlogrdr_class)) {
727 ret = PTR_ERR(vmlogrdr_class); 733 ret = PTR_ERR(vmlogrdr_class);
728 vmlogrdr_class = NULL; 734 vmlogrdr_class = NULL;
729 goto out_attr; 735 goto out_driver;
730 } 736 }
731 return 0; 737 return 0;
732 738
733out_attr:
734 driver_remove_file(&vmlogrdr_driver, &driver_attr_recording_status);
735out_driver: 739out_driver:
736 driver_unregister(&vmlogrdr_driver); 740 driver_unregister(&vmlogrdr_driver);
737out_iucv: 741out_iucv:
@@ -745,7 +749,6 @@ static void vmlogrdr_unregister_driver(void)
745{ 749{
746 class_destroy(vmlogrdr_class); 750 class_destroy(vmlogrdr_class);
747 vmlogrdr_class = NULL; 751 vmlogrdr_class = NULL;
748 driver_remove_file(&vmlogrdr_driver, &driver_attr_recording_status);
749 driver_unregister(&vmlogrdr_driver); 752 driver_unregister(&vmlogrdr_driver);
750 iucv_unregister(&vmlogrdr_iucv_handler, 1); 753 iucv_unregister(&vmlogrdr_iucv_handler, 1);
751} 754}
@@ -762,6 +765,7 @@ static int vmlogrdr_register_device(struct vmlogrdr_priv_t *priv)
762 dev->bus = &iucv_bus; 765 dev->bus = &iucv_bus;
763 dev->parent = iucv_root; 766 dev->parent = iucv_root;
764 dev->driver = &vmlogrdr_driver; 767 dev->driver = &vmlogrdr_driver;
768 dev->groups = vmlogrdr_attr_groups;
765 dev_set_drvdata(dev, priv); 769 dev_set_drvdata(dev, priv);
766 /* 770 /*
767 * The release function could be called after the 771 * The release function could be called after the
@@ -779,11 +783,6 @@ static int vmlogrdr_register_device(struct vmlogrdr_priv_t *priv)
779 return ret; 783 return ret;
780 } 784 }
781 785
782 ret = sysfs_create_group(&dev->kobj, &vmlogrdr_attr_group);
783 if (ret) {
784 device_unregister(dev);
785 return ret;
786 }
787 priv->class_device = device_create(vmlogrdr_class, dev, 786 priv->class_device = device_create(vmlogrdr_class, dev,
788 MKDEV(vmlogrdr_major, 787 MKDEV(vmlogrdr_major,
789 priv->minor_num), 788 priv->minor_num),
@@ -791,7 +790,6 @@ static int vmlogrdr_register_device(struct vmlogrdr_priv_t *priv)
791 if (IS_ERR(priv->class_device)) { 790 if (IS_ERR(priv->class_device)) {
792 ret = PTR_ERR(priv->class_device); 791 ret = PTR_ERR(priv->class_device);
793 priv->class_device=NULL; 792 priv->class_device=NULL;
794 sysfs_remove_group(&dev->kobj, &vmlogrdr_attr_group);
795 device_unregister(dev); 793 device_unregister(dev);
796 return ret; 794 return ret;
797 } 795 }
@@ -804,7 +802,6 @@ static int vmlogrdr_unregister_device(struct vmlogrdr_priv_t *priv)
804{ 802{
805 device_destroy(vmlogrdr_class, MKDEV(vmlogrdr_major, priv->minor_num)); 803 device_destroy(vmlogrdr_class, MKDEV(vmlogrdr_major, priv->minor_num));
806 if (priv->device != NULL) { 804 if (priv->device != NULL) {
807 sysfs_remove_group(&priv->device->kobj, &vmlogrdr_attr_group);
808 device_unregister(priv->device); 805 device_unregister(priv->device);
809 priv->device=NULL; 806 priv->device=NULL;
810 } 807 }
diff --git a/drivers/s390/char/vmwatchdog.c b/drivers/s390/char/vmwatchdog.c
index 2211277a1079..e9b72311e254 100644
--- a/drivers/s390/char/vmwatchdog.c
+++ b/drivers/s390/char/vmwatchdog.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Watchdog implementation based on z/VM Watchdog Timer API 2 * Watchdog implementation based on z/VM Watchdog Timer API
3 * 3 *
4 * Copyright IBM Corp. 2004,2009 4 * Copyright IBM Corp. 2004, 2009
5 * 5 *
6 * The user space watchdog daemon can use this driver as 6 * The user space watchdog daemon can use this driver as
7 * /dev/vmwatchdog to have z/VM execute the specified CP 7 * /dev/vmwatchdog to have z/VM execute the specified CP
diff --git a/drivers/s390/char/zcore.c b/drivers/s390/char/zcore.c
index 3303d66b2794..e3b9308b0fe3 100644
--- a/drivers/s390/char/zcore.c
+++ b/drivers/s390/char/zcore.c
@@ -5,7 +5,7 @@
5 * 5 *
6 * For more information please refer to Documentation/s390/zfcpdump.txt 6 * For more information please refer to Documentation/s390/zfcpdump.txt
7 * 7 *
8 * Copyright IBM Corp. 2003,2008 8 * Copyright IBM Corp. 2003, 2008
9 * Author(s): Michael Holzheu 9 * Author(s): Michael Holzheu
10 */ 10 */
11 11
diff --git a/drivers/s390/cio/airq.c b/drivers/s390/cio/airq.c
index 65d2e769dfa1..bc10220f6847 100644
--- a/drivers/s390/cio/airq.c
+++ b/drivers/s390/cio/airq.c
@@ -1,8 +1,7 @@
1/* 1/*
2 * drivers/s390/cio/airq.c
3 * Support for adapter interruptions 2 * Support for adapter interruptions
4 * 3 *
5 * Copyright IBM Corp. 1999,2007 4 * Copyright IBM Corp. 1999, 2007
6 * Author(s): Ingo Adlung <adlung@de.ibm.com> 5 * Author(s): Ingo Adlung <adlung@de.ibm.com>
7 * Cornelia Huck <cornelia.huck@de.ibm.com> 6 * Cornelia Huck <cornelia.huck@de.ibm.com>
8 * Arnd Bergmann <arndb@de.ibm.com> 7 * Arnd Bergmann <arndb@de.ibm.com>
diff --git a/drivers/s390/cio/blacklist.c b/drivers/s390/cio/blacklist.c
index 08c66035dd19..2d2a966a3b39 100644
--- a/drivers/s390/cio/blacklist.c
+++ b/drivers/s390/cio/blacklist.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * drivers/s390/cio/blacklist.c
3 * S/390 common I/O routines -- blacklisting of specific devices 2 * S/390 common I/O routines -- blacklisting of specific devices
4 * 3 *
5 * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, 4 * Copyright IBM Corp. 1999, 2002
6 * IBM Corporation
7 * Author(s): Ingo Adlung (adlung@de.ibm.com) 5 * Author(s): Ingo Adlung (adlung@de.ibm.com)
8 * Cornelia Huck (cornelia.huck@de.ibm.com) 6 * Cornelia Huck (cornelia.huck@de.ibm.com)
9 * Arnd Bergmann (arndb@de.ibm.com) 7 * Arnd Bergmann (arndb@de.ibm.com)
diff --git a/drivers/s390/cio/chp.c b/drivers/s390/cio/chp.c
index e792436c9270..50ad5fdd815d 100644
--- a/drivers/s390/cio/chp.c
+++ b/drivers/s390/cio/chp.c
@@ -1,7 +1,5 @@
1/* 1/*
2 * drivers/s390/cio/chp.c 2 * Copyright IBM Corp. 1999, 2010
3 *
4 * Copyright IBM Corp. 1999,2010
5 * Author(s): Cornelia Huck (cornelia.huck@de.ibm.com) 3 * Author(s): Cornelia Huck (cornelia.huck@de.ibm.com)
6 * Arnd Bergmann (arndb@de.ibm.com) 4 * Arnd Bergmann (arndb@de.ibm.com)
7 * Peter Oberparleiter <peter.oberparleiter@de.ibm.com> 5 * Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
@@ -362,10 +360,13 @@ static struct attribute *chp_attrs[] = {
362 &dev_attr_shared.attr, 360 &dev_attr_shared.attr,
363 NULL, 361 NULL,
364}; 362};
365
366static struct attribute_group chp_attr_group = { 363static struct attribute_group chp_attr_group = {
367 .attrs = chp_attrs, 364 .attrs = chp_attrs,
368}; 365};
366static const struct attribute_group *chp_attr_groups[] = {
367 &chp_attr_group,
368 NULL,
369};
369 370
370static void chp_release(struct device *dev) 371static void chp_release(struct device *dev)
371{ 372{
@@ -397,6 +398,7 @@ int chp_new(struct chp_id chpid)
397 chp->chpid = chpid; 398 chp->chpid = chpid;
398 chp->state = 1; 399 chp->state = 1;
399 chp->dev.parent = &channel_subsystems[chpid.cssid]->device; 400 chp->dev.parent = &channel_subsystems[chpid.cssid]->device;
401 chp->dev.groups = chp_attr_groups;
400 chp->dev.release = chp_release; 402 chp->dev.release = chp_release;
401 mutex_init(&chp->lock); 403 mutex_init(&chp->lock);
402 404
@@ -426,16 +428,10 @@ int chp_new(struct chp_id chpid)
426 put_device(&chp->dev); 428 put_device(&chp->dev);
427 goto out; 429 goto out;
428 } 430 }
429 ret = sysfs_create_group(&chp->dev.kobj, &chp_attr_group);
430 if (ret) {
431 device_unregister(&chp->dev);
432 goto out;
433 }
434 mutex_lock(&channel_subsystems[chpid.cssid]->mutex); 431 mutex_lock(&channel_subsystems[chpid.cssid]->mutex);
435 if (channel_subsystems[chpid.cssid]->cm_enabled) { 432 if (channel_subsystems[chpid.cssid]->cm_enabled) {
436 ret = chp_add_cmg_attr(chp); 433 ret = chp_add_cmg_attr(chp);
437 if (ret) { 434 if (ret) {
438 sysfs_remove_group(&chp->dev.kobj, &chp_attr_group);
439 device_unregister(&chp->dev); 435 device_unregister(&chp->dev);
440 mutex_unlock(&channel_subsystems[chpid.cssid]->mutex); 436 mutex_unlock(&channel_subsystems[chpid.cssid]->mutex);
441 goto out; 437 goto out;
diff --git a/drivers/s390/cio/chp.h b/drivers/s390/cio/chp.h
index 12b4903d6fe3..e1399dbee834 100644
--- a/drivers/s390/cio/chp.h
+++ b/drivers/s390/cio/chp.h
@@ -1,7 +1,5 @@
1/* 1/*
2 * drivers/s390/cio/chp.h 2 * Copyright IBM Corp. 2007, 2010
3 *
4 * Copyright IBM Corp. 2007,2010
5 * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com> 3 * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
6 */ 4 */
7 5
diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c
index a84631a7391d..cfe0c087fe5c 100644
--- a/drivers/s390/cio/chsc.c
+++ b/drivers/s390/cio/chsc.c
@@ -1,8 +1,7 @@
1/* 1/*
2 * drivers/s390/cio/chsc.c
3 * S/390 common I/O routines -- channel subsystem call 2 * S/390 common I/O routines -- channel subsystem call
4 * 3 *
5 * Copyright IBM Corp. 1999,2010 4 * Copyright IBM Corp. 1999, 2010
6 * Author(s): Ingo Adlung (adlung@de.ibm.com) 5 * Author(s): Ingo Adlung (adlung@de.ibm.com)
7 * Cornelia Huck (cornelia.huck@de.ibm.com) 6 * Cornelia Huck (cornelia.huck@de.ibm.com)
8 * Arnd Bergmann (arndb@de.ibm.com) 7 * Arnd Bergmann (arndb@de.ibm.com)
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index a6ddaed8793d..33d1ef703593 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -1,8 +1,7 @@
1/* 1/*
2 * drivers/s390/cio/cio.c
3 * S/390 common I/O routines -- low level i/o calls 2 * S/390 common I/O routines -- low level i/o calls
4 * 3 *
5 * Copyright IBM Corp. 1999,2008 4 * Copyright IBM Corp. 1999, 2008
6 * Author(s): Ingo Adlung (adlung@de.ibm.com) 5 * Author(s): Ingo Adlung (adlung@de.ibm.com)
7 * Cornelia Huck (cornelia.huck@de.ibm.com) 6 * Cornelia Huck (cornelia.huck@de.ibm.com)
8 * Arnd Bergmann (arndb@de.ibm.com) 7 * Arnd Bergmann (arndb@de.ibm.com)
diff --git a/drivers/s390/cio/cmf.c b/drivers/s390/cio/cmf.c
index 204ca728e7fd..c9fc61c0a866 100644
--- a/drivers/s390/cio/cmf.c
+++ b/drivers/s390/cio/cmf.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/cio/cmf.c
3 *
4 * Linux on zSeries Channel Measurement Facility support 2 * Linux on zSeries Channel Measurement Facility support
5 * 3 *
6 * Copyright 2000,2006 IBM Corporation 4 * Copyright IBM Corp. 2000, 2006
7 * 5 *
8 * Authors: Arnd Bergmann <arndb@de.ibm.com> 6 * Authors: Arnd Bergmann <arndb@de.ibm.com>
9 * Cornelia Huck <cornelia.huck@de.ibm.com> 7 * Cornelia Huck <cornelia.huck@de.ibm.com>
@@ -1341,7 +1339,7 @@ module_init(init_cmf);
1341MODULE_AUTHOR("Arnd Bergmann <arndb@de.ibm.com>"); 1339MODULE_AUTHOR("Arnd Bergmann <arndb@de.ibm.com>");
1342MODULE_LICENSE("GPL"); 1340MODULE_LICENSE("GPL");
1343MODULE_DESCRIPTION("channel measurement facility base driver\n" 1341MODULE_DESCRIPTION("channel measurement facility base driver\n"
1344 "Copyright 2003 IBM Corporation\n"); 1342 "Copyright IBM Corp. 2003\n");
1345 1343
1346EXPORT_SYMBOL_GPL(enable_cmf); 1344EXPORT_SYMBOL_GPL(enable_cmf);
1347EXPORT_SYMBOL_GPL(disable_cmf); 1345EXPORT_SYMBOL_GPL(disable_cmf);
diff --git a/drivers/s390/cio/crw.c b/drivers/s390/cio/crw.c
index d0a2dff43fb4..0f8a25f98b10 100644
--- a/drivers/s390/cio/crw.c
+++ b/drivers/s390/cio/crw.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Channel report handling code 2 * Channel report handling code
3 * 3 *
4 * Copyright IBM Corp. 2000,2009 4 * Copyright IBM Corp. 2000, 2009
5 * Author(s): Ingo Adlung <adlung@de.ibm.com>, 5 * Author(s): Ingo Adlung <adlung@de.ibm.com>,
6 * Martin Schwidefsky <schwidefsky@de.ibm.com>, 6 * Martin Schwidefsky <schwidefsky@de.ibm.com>,
7 * Cornelia Huck <cornelia.huck@de.ibm.com>, 7 * Cornelia Huck <cornelia.huck@de.ibm.com>,
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index f8f952d52045..ed25c8740a9c 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -1,8 +1,7 @@
1/* 1/*
2 * drivers/s390/cio/device.c
3 * bus driver for ccw devices 2 * bus driver for ccw devices
4 * 3 *
5 * Copyright IBM Corp. 2002,2008 4 * Copyright IBM Corp. 2002, 2008
6 * Author(s): Arnd Bergmann (arndb@de.ibm.com) 5 * Author(s): Arnd Bergmann (arndb@de.ibm.com)
7 * Cornelia Huck (cornelia.huck@de.ibm.com) 6 * Cornelia Huck (cornelia.huck@de.ibm.com)
8 * Martin Schwidefsky (schwidefsky@de.ibm.com) 7 * Martin Schwidefsky (schwidefsky@de.ibm.com)
diff --git a/drivers/s390/cio/device_fsm.c b/drivers/s390/cio/device_fsm.c
index 1b853513c891..1bb1d00095af 100644
--- a/drivers/s390/cio/device_fsm.c
+++ b/drivers/s390/cio/device_fsm.c
@@ -1,8 +1,7 @@
1/* 1/*
2 * drivers/s390/cio/device_fsm.c
3 * finite state machine for device handling 2 * finite state machine for device handling
4 * 3 *
5 * Copyright IBM Corp. 2002,2008 4 * Copyright IBM Corp. 2002, 2008
6 * Author(s): Cornelia Huck (cornelia.huck@de.ibm.com) 5 * Author(s): Cornelia Huck (cornelia.huck@de.ibm.com)
7 * Martin Schwidefsky (schwidefsky@de.ibm.com) 6 * Martin Schwidefsky (schwidefsky@de.ibm.com)
8 */ 7 */
diff --git a/drivers/s390/cio/device_id.c b/drivers/s390/cio/device_id.c
index 78a0b43862c5..d4fa30541a33 100644
--- a/drivers/s390/cio/device_id.c
+++ b/drivers/s390/cio/device_id.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * CCW device SENSE ID I/O handling. 2 * CCW device SENSE ID I/O handling.
3 * 3 *
4 * Copyright IBM Corp. 2002,2009 4 * Copyright IBM Corp. 2002, 2009
5 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> 5 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
6 * Martin Schwidefsky <schwidefsky@de.ibm.com> 6 * Martin Schwidefsky <schwidefsky@de.ibm.com>
7 * Peter Oberparleiter <peter.oberparleiter@de.ibm.com> 7 * Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
diff --git a/drivers/s390/cio/device_pgid.c b/drivers/s390/cio/device_pgid.c
index 07a4fd29f096..368368fe04b2 100644
--- a/drivers/s390/cio/device_pgid.c
+++ b/drivers/s390/cio/device_pgid.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * CCW device PGID and path verification I/O handling. 2 * CCW device PGID and path verification I/O handling.
3 * 3 *
4 * Copyright IBM Corp. 2002,2009 4 * Copyright IBM Corp. 2002, 2009
5 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> 5 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
6 * Martin Schwidefsky <schwidefsky@de.ibm.com> 6 * Martin Schwidefsky <schwidefsky@de.ibm.com>
7 * Peter Oberparleiter <peter.oberparleiter@de.ibm.com> 7 * Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
diff --git a/drivers/s390/cio/device_status.c b/drivers/s390/cio/device_status.c
index 66d8066ef22a..15b56a15db15 100644
--- a/drivers/s390/cio/device_status.c
+++ b/drivers/s390/cio/device_status.c
@@ -1,8 +1,5 @@
1/* 1/*
2 * drivers/s390/cio/device_status.c 2 * Copyright IBM Corp. 2002
3 *
4 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH,
5 * IBM Corporation
6 * Author(s): Cornelia Huck (cornelia.huck@de.ibm.com) 3 * Author(s): Cornelia Huck (cornelia.huck@de.ibm.com)
7 * Martin Schwidefsky (schwidefsky@de.ibm.com) 4 * Martin Schwidefsky (schwidefsky@de.ibm.com)
8 * 5 *
diff --git a/drivers/s390/cio/idset.c b/drivers/s390/cio/idset.c
index 4d10981c7cc1..e6d5f8c49524 100644
--- a/drivers/s390/cio/idset.c
+++ b/drivers/s390/cio/idset.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/cio/idset.c
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com> 3 * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
6 */ 4 */
diff --git a/drivers/s390/cio/idset.h b/drivers/s390/cio/idset.h
index 7543da4529f9..3d943f03591e 100644
--- a/drivers/s390/cio/idset.h
+++ b/drivers/s390/cio/idset.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/cio/idset.h
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com> 3 * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
6 */ 4 */
diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h
index b962ffbc0803..5132554d7917 100644
--- a/drivers/s390/cio/qdio.h
+++ b/drivers/s390/cio/qdio.h
@@ -1,7 +1,5 @@
1/* 1/*
2 * linux/drivers/s390/cio/qdio.h 2 * Copyright IBM Corp. 2000, 2009
3 *
4 * Copyright 2000,2009 IBM Corp.
5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com> 3 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>
6 * Jan Glauber <jang@linux.vnet.ibm.com> 4 * Jan Glauber <jang@linux.vnet.ibm.com>
7 */ 5 */
diff --git a/drivers/s390/cio/qdio_debug.c b/drivers/s390/cio/qdio_debug.c
index 29021f4e96b6..e6e0d31c02ac 100644
--- a/drivers/s390/cio/qdio_debug.c
+++ b/drivers/s390/cio/qdio_debug.c
@@ -1,7 +1,5 @@
1/* 1/*
2 * drivers/s390/cio/qdio_debug.c 2 * Copyright IBM Corp. 2008, 2009
3 *
4 * Copyright IBM Corp. 2008,2009
5 * 3 *
6 * Author: Jan Glauber (jang@linux.vnet.ibm.com) 4 * Author: Jan Glauber (jang@linux.vnet.ibm.com)
7 */ 5 */
diff --git a/drivers/s390/cio/qdio_debug.h b/drivers/s390/cio/qdio_debug.h
index 5d70bd162ae9..e1f646800ddb 100644
--- a/drivers/s390/cio/qdio_debug.h
+++ b/drivers/s390/cio/qdio_debug.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/cio/qdio_debug.h
3 *
4 * Copyright IBM Corp. 2008 2 * Copyright IBM Corp. 2008
5 * 3 *
6 * Author: Jan Glauber (jang@linux.vnet.ibm.com) 4 * Author: Jan Glauber (jang@linux.vnet.ibm.com)
diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c
index 7493efafa0d5..e06fa03ea1e4 100644
--- a/drivers/s390/cio/qdio_main.c
+++ b/drivers/s390/cio/qdio_main.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/cio/qdio_main.c
3 *
4 * Linux for s390 qdio support, buffer handling, qdio API and module support. 2 * Linux for s390 qdio support, buffer handling, qdio API and module support.
5 * 3 *
6 * Copyright 2000,2008 IBM Corp. 4 * Copyright IBM Corp. 2000, 2008
7 * Author(s): Utz Bacher <utz.bacher@de.ibm.com> 5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>
8 * Jan Glauber <jang@linux.vnet.ibm.com> 6 * Jan Glauber <jang@linux.vnet.ibm.com>
9 * 2.6 cio integration by Cornelia Huck <cornelia.huck@de.ibm.com> 7 * 2.6 cio integration by Cornelia Huck <cornelia.huck@de.ibm.com>
diff --git a/drivers/s390/cio/qdio_setup.c b/drivers/s390/cio/qdio_setup.c
index ecf12f0aca7b..6c973db14983 100644
--- a/drivers/s390/cio/qdio_setup.c
+++ b/drivers/s390/cio/qdio_setup.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * driver/s390/cio/qdio_setup.c
3 *
4 * qdio queue initialization 2 * qdio queue initialization
5 * 3 *
6 * Copyright (C) IBM Corp. 2008 4 * Copyright IBM Corp. 2008
7 * Author(s): Jan Glauber <jang@linux.vnet.ibm.com> 5 * Author(s): Jan Glauber <jang@linux.vnet.ibm.com>
8 */ 6 */
9#include <linux/kernel.h> 7#include <linux/kernel.h>
diff --git a/drivers/s390/cio/qdio_thinint.c b/drivers/s390/cio/qdio_thinint.c
index 011eadea3ee4..2e060088fa87 100644
--- a/drivers/s390/cio/qdio_thinint.c
+++ b/drivers/s390/cio/qdio_thinint.c
@@ -1,7 +1,5 @@
1/* 1/*
2 * linux/drivers/s390/cio/thinint_qdio.c 2 * Copyright IBM Corp. 2000, 2009
3 *
4 * Copyright 2000,2009 IBM Corp.
5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com> 3 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>
6 * Cornelia Huck <cornelia.huck@de.ibm.com> 4 * Cornelia Huck <cornelia.huck@de.ibm.com>
7 * Jan Glauber <jang@linux.vnet.ibm.com> 5 * Jan Glauber <jang@linux.vnet.ibm.com>
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c
index b987d4619586..ae258a4b4e5e 100644
--- a/drivers/s390/crypto/ap_bus.c
+++ b/drivers/s390/crypto/ap_bus.c
@@ -1,7 +1,5 @@
1/* 1/*
2 * linux/drivers/s390/crypto/ap_bus.c 2 * Copyright IBM Corp. 2006
3 *
4 * Copyright (C) 2006 IBM Corporation
5 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> 3 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
6 * Martin Schwidefsky <schwidefsky@de.ibm.com> 4 * Martin Schwidefsky <schwidefsky@de.ibm.com>
7 * Ralph Wuerthner <rwuerthn@de.ibm.com> 5 * Ralph Wuerthner <rwuerthn@de.ibm.com>
@@ -70,7 +68,7 @@ static int ap_select_domain(void);
70 */ 68 */
71MODULE_AUTHOR("IBM Corporation"); 69MODULE_AUTHOR("IBM Corporation");
72MODULE_DESCRIPTION("Adjunct Processor Bus driver, " 70MODULE_DESCRIPTION("Adjunct Processor Bus driver, "
73 "Copyright 2006 IBM Corporation"); 71 "Copyright IBM Corp. 2006");
74MODULE_LICENSE("GPL"); 72MODULE_LICENSE("GPL");
75 73
76/* 74/*
@@ -338,6 +336,12 @@ static int ap_queue_enable_interruption(ap_qid_t qid, void *ind)
338 break; 336 break;
339 case AP_RESPONSE_RESET_IN_PROGRESS: 337 case AP_RESPONSE_RESET_IN_PROGRESS:
340 case AP_RESPONSE_BUSY: 338 case AP_RESPONSE_BUSY:
339 if (i < AP_MAX_RESET - 1) {
340 udelay(5);
341 status = ap_queue_interruption_control(qid,
342 ind);
343 continue;
344 }
341 break; 345 break;
342 case AP_RESPONSE_Q_NOT_AVAIL: 346 case AP_RESPONSE_Q_NOT_AVAIL:
343 case AP_RESPONSE_DECONFIGURED: 347 case AP_RESPONSE_DECONFIGURED:
diff --git a/drivers/s390/crypto/ap_bus.h b/drivers/s390/crypto/ap_bus.h
index 726fc65809d8..52d61995af88 100644
--- a/drivers/s390/crypto/ap_bus.h
+++ b/drivers/s390/crypto/ap_bus.h
@@ -1,7 +1,5 @@
1/* 1/*
2 * linux/drivers/s390/crypto/ap_bus.h 2 * Copyright IBM Corp. 2006
3 *
4 * Copyright (C) 2006 IBM Corporation
5 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> 3 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
6 * Martin Schwidefsky <schwidefsky@de.ibm.com> 4 * Martin Schwidefsky <schwidefsky@de.ibm.com>
7 * Ralph Wuerthner <rwuerthn@de.ibm.com> 5 * Ralph Wuerthner <rwuerthn@de.ibm.com>
diff --git a/drivers/s390/crypto/zcrypt_api.c b/drivers/s390/crypto/zcrypt_api.c
index 88523208d47d..2f94132246a1 100644
--- a/drivers/s390/crypto/zcrypt_api.c
+++ b/drivers/s390/crypto/zcrypt_api.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_api.c
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * Cornelia Huck <cornelia.huck@de.ibm.com> 7 * Cornelia Huck <cornelia.huck@de.ibm.com>
@@ -47,7 +45,7 @@
47 */ 45 */
48MODULE_AUTHOR("IBM Corporation"); 46MODULE_AUTHOR("IBM Corporation");
49MODULE_DESCRIPTION("Cryptographic Coprocessor interface, " 47MODULE_DESCRIPTION("Cryptographic Coprocessor interface, "
50 "Copyright 2001, 2006 IBM Corporation"); 48 "Copyright IBM Corp. 2001, 2006");
51MODULE_LICENSE("GPL"); 49MODULE_LICENSE("GPL");
52 50
53static DEFINE_SPINLOCK(zcrypt_device_lock); 51static DEFINE_SPINLOCK(zcrypt_device_lock);
diff --git a/drivers/s390/crypto/zcrypt_api.h b/drivers/s390/crypto/zcrypt_api.h
index 9688f3985b07..7a32c4bc8ef9 100644
--- a/drivers/s390/crypto/zcrypt_api.h
+++ b/drivers/s390/crypto/zcrypt_api.h
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_api.h
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * Cornelia Huck <cornelia.huck@de.ibm.com> 7 * Cornelia Huck <cornelia.huck@de.ibm.com>
diff --git a/drivers/s390/crypto/zcrypt_cca_key.h b/drivers/s390/crypto/zcrypt_cca_key.h
index ed82f2f59b17..1f42f103c761 100644
--- a/drivers/s390/crypto/zcrypt_cca_key.h
+++ b/drivers/s390/crypto/zcrypt_cca_key.h
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_cca_key.h
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * 7 *
diff --git a/drivers/s390/crypto/zcrypt_cex2a.c b/drivers/s390/crypto/zcrypt_cex2a.c
index 46812440425a..744c668f586c 100644
--- a/drivers/s390/crypto/zcrypt_cex2a.c
+++ b/drivers/s390/crypto/zcrypt_cex2a.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_cex2a.c
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * 7 *
@@ -66,7 +64,7 @@ static struct ap_device_id zcrypt_cex2a_ids[] = {
66MODULE_DEVICE_TABLE(ap, zcrypt_cex2a_ids); 64MODULE_DEVICE_TABLE(ap, zcrypt_cex2a_ids);
67MODULE_AUTHOR("IBM Corporation"); 65MODULE_AUTHOR("IBM Corporation");
68MODULE_DESCRIPTION("CEX2A Cryptographic Coprocessor device driver, " 66MODULE_DESCRIPTION("CEX2A Cryptographic Coprocessor device driver, "
69 "Copyright 2001, 2006 IBM Corporation"); 67 "Copyright IBM Corp. 2001, 2006");
70MODULE_LICENSE("GPL"); 68MODULE_LICENSE("GPL");
71 69
72static int zcrypt_cex2a_probe(struct ap_device *ap_dev); 70static int zcrypt_cex2a_probe(struct ap_device *ap_dev);
diff --git a/drivers/s390/crypto/zcrypt_cex2a.h b/drivers/s390/crypto/zcrypt_cex2a.h
index 0350665810cf..0dce4b9af184 100644
--- a/drivers/s390/crypto/zcrypt_cex2a.h
+++ b/drivers/s390/crypto/zcrypt_cex2a.h
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_cex2a.h
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * 7 *
diff --git a/drivers/s390/crypto/zcrypt_error.h b/drivers/s390/crypto/zcrypt_error.h
index 03ba27f05f92..0965e2626d18 100644
--- a/drivers/s390/crypto/zcrypt_error.h
+++ b/drivers/s390/crypto/zcrypt_error.h
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_error.h
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * 7 *
diff --git a/drivers/s390/crypto/zcrypt_pcica.c b/drivers/s390/crypto/zcrypt_pcica.c
index ad7951c21b79..f2b71d8df01f 100644
--- a/drivers/s390/crypto/zcrypt_pcica.c
+++ b/drivers/s390/crypto/zcrypt_pcica.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_pcica.c
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * 7 *
@@ -56,7 +54,7 @@ static struct ap_device_id zcrypt_pcica_ids[] = {
56MODULE_DEVICE_TABLE(ap, zcrypt_pcica_ids); 54MODULE_DEVICE_TABLE(ap, zcrypt_pcica_ids);
57MODULE_AUTHOR("IBM Corporation"); 55MODULE_AUTHOR("IBM Corporation");
58MODULE_DESCRIPTION("PCICA Cryptographic Coprocessor device driver, " 56MODULE_DESCRIPTION("PCICA Cryptographic Coprocessor device driver, "
59 "Copyright 2001, 2006 IBM Corporation"); 57 "Copyright IBM Corp. 2001, 2006");
60MODULE_LICENSE("GPL"); 58MODULE_LICENSE("GPL");
61 59
62static int zcrypt_pcica_probe(struct ap_device *ap_dev); 60static int zcrypt_pcica_probe(struct ap_device *ap_dev);
diff --git a/drivers/s390/crypto/zcrypt_pcica.h b/drivers/s390/crypto/zcrypt_pcica.h
index 3be11187f6df..9a59155cad51 100644
--- a/drivers/s390/crypto/zcrypt_pcica.h
+++ b/drivers/s390/crypto/zcrypt_pcica.h
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_pcica.h
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * 7 *
diff --git a/drivers/s390/crypto/zcrypt_pcicc.c b/drivers/s390/crypto/zcrypt_pcicc.c
index e5dd335fda53..0d90a4334055 100644
--- a/drivers/s390/crypto/zcrypt_pcicc.c
+++ b/drivers/s390/crypto/zcrypt_pcicc.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_pcicc.c
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * 7 *
@@ -68,7 +66,7 @@ static struct ap_device_id zcrypt_pcicc_ids[] = {
68MODULE_DEVICE_TABLE(ap, zcrypt_pcicc_ids); 66MODULE_DEVICE_TABLE(ap, zcrypt_pcicc_ids);
69MODULE_AUTHOR("IBM Corporation"); 67MODULE_AUTHOR("IBM Corporation");
70MODULE_DESCRIPTION("PCICC Cryptographic Coprocessor device driver, " 68MODULE_DESCRIPTION("PCICC Cryptographic Coprocessor device driver, "
71 "Copyright 2001, 2006 IBM Corporation"); 69 "Copyright IBM Corp. 2001, 2006");
72MODULE_LICENSE("GPL"); 70MODULE_LICENSE("GPL");
73 71
74static int zcrypt_pcicc_probe(struct ap_device *ap_dev); 72static int zcrypt_pcicc_probe(struct ap_device *ap_dev);
diff --git a/drivers/s390/crypto/zcrypt_pcicc.h b/drivers/s390/crypto/zcrypt_pcicc.h
index 6d4454846c8f..7fe27e15075b 100644
--- a/drivers/s390/crypto/zcrypt_pcicc.h
+++ b/drivers/s390/crypto/zcrypt_pcicc.h
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_pcicc.h
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * 7 *
diff --git a/drivers/s390/crypto/zcrypt_pcixcc.c b/drivers/s390/crypto/zcrypt_pcixcc.c
index f7cc43401816..ccb4f8b60c75 100644
--- a/drivers/s390/crypto/zcrypt_pcixcc.c
+++ b/drivers/s390/crypto/zcrypt_pcixcc.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_pcixcc.c
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * 7 *
@@ -78,7 +76,7 @@ static struct ap_device_id zcrypt_pcixcc_ids[] = {
78MODULE_DEVICE_TABLE(ap, zcrypt_pcixcc_ids); 76MODULE_DEVICE_TABLE(ap, zcrypt_pcixcc_ids);
79MODULE_AUTHOR("IBM Corporation"); 77MODULE_AUTHOR("IBM Corporation");
80MODULE_DESCRIPTION("PCIXCC Cryptographic Coprocessor device driver, " 78MODULE_DESCRIPTION("PCIXCC Cryptographic Coprocessor device driver, "
81 "Copyright 2001, 2006 IBM Corporation"); 79 "Copyright IBM Corp. 2001, 2006");
82MODULE_LICENSE("GPL"); 80MODULE_LICENSE("GPL");
83 81
84static int zcrypt_pcixcc_probe(struct ap_device *ap_dev); 82static int zcrypt_pcixcc_probe(struct ap_device *ap_dev);
diff --git a/drivers/s390/crypto/zcrypt_pcixcc.h b/drivers/s390/crypto/zcrypt_pcixcc.h
index 8cb7d7a6973b..c7cdf599e46b 100644
--- a/drivers/s390/crypto/zcrypt_pcixcc.h
+++ b/drivers/s390/crypto/zcrypt_pcixcc.h
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/crypto/zcrypt_pcixcc.h
3 *
4 * zcrypt 2.1.0 2 * zcrypt 2.1.0
5 * 3 *
6 * Copyright (C) 2001, 2006 IBM Corporation 4 * Copyright IBM Corp. 2001, 2006
7 * Author(s): Robert Burroughs 5 * Author(s): Robert Burroughs
8 * Eric Rossman (edrossma@us.ibm.com) 6 * Eric Rossman (edrossma@us.ibm.com)
9 * 7 *
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
index d74e9ae6dfb3..b67ee0408267 100644
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * kvm_virtio.c - virtio for kvm on s390 2 * virtio for kvm on s390
3 * 3 *
4 * Copyright IBM Corp. 2008 4 * Copyright IBM Corp. 2008
5 * 5 *
diff --git a/drivers/s390/net/claw.c b/drivers/s390/net/claw.c
index 6b1ff90d2f00..a0a4afe537d0 100644
--- a/drivers/s390/net/claw.c
+++ b/drivers/s390/net/claw.c
@@ -1,5 +1,4 @@
1/* 1/*
2 * drivers/s390/net/claw.c
3 * ESCON CLAW network driver 2 * ESCON CLAW network driver
4 * 3 *
5 * Linux for zSeries version 4 * Linux for zSeries version
@@ -3380,5 +3379,5 @@ module_exit(claw_cleanup);
3380 3379
3381MODULE_AUTHOR("Andy Richter <richtera@us.ibm.com>"); 3380MODULE_AUTHOR("Andy Richter <richtera@us.ibm.com>");
3382MODULE_DESCRIPTION("Linux for System z CLAW Driver\n" \ 3381MODULE_DESCRIPTION("Linux for System z CLAW Driver\n" \
3383 "Copyright 2000,2008 IBM Corporation\n"); 3382 "Copyright IBM Corp. 2000, 2008\n");
3384MODULE_LICENSE("GPL"); 3383MODULE_LICENSE("GPL");
diff --git a/drivers/s390/net/ctcm_dbug.c b/drivers/s390/net/ctcm_dbug.c
index d962fd741a23..6514e1cb3f1c 100644
--- a/drivers/s390/net/ctcm_dbug.c
+++ b/drivers/s390/net/ctcm_dbug.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/ctcm_dbug.c
3 *
4 * Copyright IBM Corp. 2001, 2007 2 * Copyright IBM Corp. 2001, 2007
5 * Authors: Peter Tiedemann (ptiedem@de.ibm.com) 3 * Authors: Peter Tiedemann (ptiedem@de.ibm.com)
6 * 4 *
diff --git a/drivers/s390/net/ctcm_dbug.h b/drivers/s390/net/ctcm_dbug.h
index 26966d0b9abd..47bf0501995e 100644
--- a/drivers/s390/net/ctcm_dbug.h
+++ b/drivers/s390/net/ctcm_dbug.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/ctcm_dbug.h
3 *
4 * Copyright IBM Corp. 2001, 2007 2 * Copyright IBM Corp. 2001, 2007
5 * Authors: Peter Tiedemann (ptiedem@de.ibm.com) 3 * Authors: Peter Tiedemann (ptiedem@de.ibm.com)
6 * 4 *
diff --git a/drivers/s390/net/ctcm_fsms.c b/drivers/s390/net/ctcm_fsms.c
index a69766900a17..d4ade9e92fbb 100644
--- a/drivers/s390/net/ctcm_fsms.c
+++ b/drivers/s390/net/ctcm_fsms.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/ctcm_fsms.c
3 *
4 * Copyright IBM Corp. 2001, 2007 2 * Copyright IBM Corp. 2001, 2007
5 * Authors: Fritz Elfert (felfert@millenux.com) 3 * Authors: Fritz Elfert (felfert@millenux.com)
6 * Peter Tiedemann (ptiedem@de.ibm.com) 4 * Peter Tiedemann (ptiedem@de.ibm.com)
diff --git a/drivers/s390/net/ctcm_fsms.h b/drivers/s390/net/ctcm_fsms.h
index 046d077fabbb..c963d04799c0 100644
--- a/drivers/s390/net/ctcm_fsms.h
+++ b/drivers/s390/net/ctcm_fsms.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/ctcm_fsms.h
3 *
4 * Copyright IBM Corp. 2001, 2007 2 * Copyright IBM Corp. 2001, 2007
5 * Authors: Fritz Elfert (felfert@millenux.com) 3 * Authors: Fritz Elfert (felfert@millenux.com)
6 * Peter Tiedemann (ptiedem@de.ibm.com) 4 * Peter Tiedemann (ptiedem@de.ibm.com)
diff --git a/drivers/s390/net/ctcm_main.c b/drivers/s390/net/ctcm_main.c
index 3cd25544a27a..5227e5734a9d 100644
--- a/drivers/s390/net/ctcm_main.c
+++ b/drivers/s390/net/ctcm_main.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/ctcm_main.c
3 *
4 * Copyright IBM Corp. 2001, 2009 2 * Copyright IBM Corp. 2001, 2009
5 * Author(s): 3 * Author(s):
6 * Original CTC driver(s): 4 * Original CTC driver(s):
diff --git a/drivers/s390/net/ctcm_main.h b/drivers/s390/net/ctcm_main.h
index b9056a55d995..477c933685f3 100644
--- a/drivers/s390/net/ctcm_main.h
+++ b/drivers/s390/net/ctcm_main.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/ctcm_main.h
3 *
4 * Copyright IBM Corp. 2001, 2007 2 * Copyright IBM Corp. 2001, 2007
5 * Authors: Fritz Elfert (felfert@millenux.com) 3 * Authors: Fritz Elfert (felfert@millenux.com)
6 * Peter Tiedemann (ptiedem@de.ibm.com) 4 * Peter Tiedemann (ptiedem@de.ibm.com)
diff --git a/drivers/s390/net/ctcm_mpc.c b/drivers/s390/net/ctcm_mpc.c
index ac7975b7a837..05b734a2b5b7 100644
--- a/drivers/s390/net/ctcm_mpc.c
+++ b/drivers/s390/net/ctcm_mpc.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/ctcm_mpc.c
3 *
4 * Copyright IBM Corp. 2004, 2007 2 * Copyright IBM Corp. 2004, 2007
5 * Authors: Belinda Thompson (belindat@us.ibm.com) 3 * Authors: Belinda Thompson (belindat@us.ibm.com)
6 * Andy Richter (richtera@us.ibm.com) 4 * Andy Richter (richtera@us.ibm.com)
diff --git a/drivers/s390/net/ctcm_mpc.h b/drivers/s390/net/ctcm_mpc.h
index 1fa07b0c11c0..bd1b1cc54ffa 100644
--- a/drivers/s390/net/ctcm_mpc.h
+++ b/drivers/s390/net/ctcm_mpc.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/ctcm_mpc.h
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Authors: Peter Tiedemann (ptiedem@de.ibm.com) 3 * Authors: Peter Tiedemann (ptiedem@de.ibm.com)
6 * 4 *
diff --git a/drivers/s390/net/ctcm_sysfs.c b/drivers/s390/net/ctcm_sysfs.c
index 0c27ae726475..985b5dcbdac8 100644
--- a/drivers/s390/net/ctcm_sysfs.c
+++ b/drivers/s390/net/ctcm_sysfs.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/ctcm_sysfs.c
3 *
4 * Copyright IBM Corp. 2007, 2007 2 * Copyright IBM Corp. 2007, 2007
5 * Authors: Peter Tiedemann (ptiedem@de.ibm.com) 3 * Authors: Peter Tiedemann (ptiedem@de.ibm.com)
6 * 4 *
diff --git a/drivers/s390/net/qeth_core.h b/drivers/s390/net/qeth_core.h
index 06e8f31ff3dc..fa7adad6f9ba 100644
--- a/drivers/s390/net/qeth_core.h
+++ b/drivers/s390/net/qeth_core.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/qeth_core.h
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>, 3 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>,
6 * Frank Pavlic <fpavlic@de.ibm.com>, 4 * Frank Pavlic <fpavlic@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
index e118e1e1e1c1..7a8b09612c41 100644
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/qeth_core_main.c
3 *
4 * Copyright IBM Corp. 2007, 2009 2 * Copyright IBM Corp. 2007, 2009
5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>, 3 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>,
6 * Frank Pavlic <fpavlic@de.ibm.com>, 4 * Frank Pavlic <fpavlic@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_core_mpc.c b/drivers/s390/net/qeth_core_mpc.c
index 7fab6544def6..5cebfddb86bd 100644
--- a/drivers/s390/net/qeth_core_mpc.c
+++ b/drivers/s390/net/qeth_core_mpc.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/qeth_core_mpc.c
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Author(s): Frank Pavlic <fpavlic@de.ibm.com>, 3 * Author(s): Frank Pavlic <fpavlic@de.ibm.com>,
6 * Thomas Spatzier <tspat@de.ibm.com>, 4 * Thomas Spatzier <tspat@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_core_mpc.h b/drivers/s390/net/qeth_core_mpc.h
index a11b30c38423..3690bbf2cb3c 100644
--- a/drivers/s390/net/qeth_core_mpc.h
+++ b/drivers/s390/net/qeth_core_mpc.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/qeth_core_mpc.h
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Author(s): Frank Pavlic <fpavlic@de.ibm.com>, 3 * Author(s): Frank Pavlic <fpavlic@de.ibm.com>,
6 * Thomas Spatzier <tspat@de.ibm.com>, 4 * Thomas Spatzier <tspat@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_core_sys.c b/drivers/s390/net/qeth_core_sys.c
index f163af575c48..9655dc0ea0ec 100644
--- a/drivers/s390/net/qeth_core_sys.c
+++ b/drivers/s390/net/qeth_core_sys.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/qeth_core_sys.c
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>, 3 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>,
6 * Frank Pavlic <fpavlic@de.ibm.com>, 4 * Frank Pavlic <fpavlic@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c
index 426986518e96..d86f645a76da 100644
--- a/drivers/s390/net/qeth_l2_main.c
+++ b/drivers/s390/net/qeth_l2_main.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/qeth_l2_main.c
3 *
4 * Copyright IBM Corp. 2007, 2009 2 * Copyright IBM Corp. 2007, 2009
5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>, 3 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>,
6 * Frank Pavlic <fpavlic@de.ibm.com>, 4 * Frank Pavlic <fpavlic@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_l3.h b/drivers/s390/net/qeth_l3.h
index e367315a63f0..29c1c00e3a0f 100644
--- a/drivers/s390/net/qeth_l3.h
+++ b/drivers/s390/net/qeth_l3.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/qeth_l3.h
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>, 3 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>,
6 * Frank Pavlic <fpavlic@de.ibm.com>, 4 * Frank Pavlic <fpavlic@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
index 7be5e9775691..f0045ca8a766 100644
--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/qeth_l3_main.c
3 *
4 * Copyright IBM Corp. 2007, 2009 2 * Copyright IBM Corp. 2007, 2009
5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>, 3 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>,
6 * Frank Pavlic <fpavlic@de.ibm.com>, 4 * Frank Pavlic <fpavlic@de.ibm.com>,
diff --git a/drivers/s390/net/qeth_l3_sys.c b/drivers/s390/net/qeth_l3_sys.c
index 4cafedf950ad..ebc379486267 100644
--- a/drivers/s390/net/qeth_l3_sys.c
+++ b/drivers/s390/net/qeth_l3_sys.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * drivers/s390/net/qeth_l3_sys.c
3 *
4 * Copyright IBM Corp. 2007 2 * Copyright IBM Corp. 2007
5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>, 3 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>,
6 * Frank Pavlic <fpavlic@de.ibm.com>, 4 * Frank Pavlic <fpavlic@de.ibm.com>,
diff --git a/drivers/s390/net/smsgiucv.h b/drivers/s390/net/smsgiucv.h
index 149a1151608d..45bc925928ca 100644
--- a/drivers/s390/net/smsgiucv.h
+++ b/drivers/s390/net/smsgiucv.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * IUCV special message driver 2 * IUCV special message driver
3 * 3 *
4 * Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright IBM Corp. 2003
5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
6 */ 6 */
7 7
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c
index 086018109662..aff8621de806 100644
--- a/drivers/s390/scsi/zfcp_aux.c
+++ b/drivers/s390/scsi/zfcp_aux.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Module interface and handling of zfcp data structures. 4 * Module interface and handling of zfcp data structures.
5 * 5 *
6 * Copyright IBM Corporation 2002, 2010 6 * Copyright IBM Corp. 2002, 2010
7 */ 7 */
8 8
9/* 9/*
diff --git a/drivers/s390/scsi/zfcp_ccw.c b/drivers/s390/scsi/zfcp_ccw.c
index 96f13ad88123..e37f04551948 100644
--- a/drivers/s390/scsi/zfcp_ccw.c
+++ b/drivers/s390/scsi/zfcp_ccw.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Registration and callback for the s390 common I/O layer. 4 * Registration and callback for the s390 common I/O layer.
5 * 5 *
6 * Copyright IBM Corporation 2002, 2010 6 * Copyright IBM Corp. 2002, 2010
7 */ 7 */
8 8
9#define KMSG_COMPONENT "zfcp" 9#define KMSG_COMPONENT "zfcp"
diff --git a/drivers/s390/scsi/zfcp_cfdc.c b/drivers/s390/scsi/zfcp_cfdc.c
index fab2c2592a97..fbd8b4db6025 100644
--- a/drivers/s390/scsi/zfcp_cfdc.c
+++ b/drivers/s390/scsi/zfcp_cfdc.c
@@ -5,7 +5,7 @@
5 * Access Control Lists / Control File Data Channel; 5 * Access Control Lists / Control File Data Channel;
6 * handling of response code and states for ports and LUNs. 6 * handling of response code and states for ports and LUNs.
7 * 7 *
8 * Copyright IBM Corporation 2008, 2010 8 * Copyright IBM Corp. 2008, 2010
9 */ 9 */
10 10
11#define KMSG_COMPONENT "zfcp" 11#define KMSG_COMPONENT "zfcp"
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c
index a9a816e4aa55..3c1d22097ad0 100644
--- a/drivers/s390/scsi/zfcp_dbf.c
+++ b/drivers/s390/scsi/zfcp_dbf.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Debug traces for zfcp. 4 * Debug traces for zfcp.
5 * 5 *
6 * Copyright IBM Corporation 2002, 2010 6 * Copyright IBM Corp. 2002, 2010
7 */ 7 */
8 8
9#define KMSG_COMPONENT "zfcp" 9#define KMSG_COMPONENT "zfcp"
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h
index ed5d921e82cd..2955e1a3deaf 100644
--- a/drivers/s390/scsi/zfcp_def.h
+++ b/drivers/s390/scsi/zfcp_def.h
@@ -3,7 +3,7 @@
3 * 3 *
4 * Global definitions for the zfcp device driver. 4 * Global definitions for the zfcp device driver.
5 * 5 *
6 * Copyright IBM Corporation 2002, 2010 6 * Copyright IBM Corp. 2002, 2010
7 */ 7 */
8 8
9#ifndef ZFCP_DEF_H 9#ifndef ZFCP_DEF_H
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c
index e1b4f800e226..92d3df6ac8ba 100644
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Error Recovery Procedures (ERP). 4 * Error Recovery Procedures (ERP).
5 * 5 *
6 * Copyright IBM Corporation 2002, 2010 6 * Copyright IBM Corp. 2002, 2010
7 */ 7 */
8 8
9#define KMSG_COMPONENT "zfcp" 9#define KMSG_COMPONENT "zfcp"
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h
index 2302e1cfb76c..36f422770ff5 100644
--- a/drivers/s390/scsi/zfcp_ext.h
+++ b/drivers/s390/scsi/zfcp_ext.h
@@ -3,7 +3,7 @@
3 * 3 *
4 * External function declarations. 4 * External function declarations.
5 * 5 *
6 * Copyright IBM Corporation 2002, 2010 6 * Copyright IBM Corp. 2002, 2010
7 */ 7 */
8 8
9#ifndef ZFCP_EXT_H 9#ifndef ZFCP_EXT_H
diff --git a/drivers/s390/scsi/zfcp_fc.c b/drivers/s390/scsi/zfcp_fc.c
index 297e6b71ce9c..88688a80b2c1 100644
--- a/drivers/s390/scsi/zfcp_fc.c
+++ b/drivers/s390/scsi/zfcp_fc.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Fibre Channel related functions for the zfcp device driver. 4 * Fibre Channel related functions for the zfcp device driver.
5 * 5 *
6 * Copyright IBM Corporation 2008, 2010 6 * Copyright IBM Corp. 2008, 2010
7 */ 7 */
8 8
9#define KMSG_COMPONENT "zfcp" 9#define KMSG_COMPONENT "zfcp"
diff --git a/drivers/s390/scsi/zfcp_fc.h b/drivers/s390/scsi/zfcp_fc.h
index 4561f3bf7300..b1d2024ed513 100644
--- a/drivers/s390/scsi/zfcp_fc.h
+++ b/drivers/s390/scsi/zfcp_fc.h
@@ -4,7 +4,7 @@
4 * Fibre Channel related definitions and inline functions for the zfcp 4 * Fibre Channel related definitions and inline functions for the zfcp
5 * device driver 5 * device driver
6 * 6 *
7 * Copyright IBM Corporation 2009 7 * Copyright IBM Corp. 2009
8 */ 8 */
9 9
10#ifndef ZFCP_FC_H 10#ifndef ZFCP_FC_H
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index e9a787e2e6a5..e1c1efc2c5a0 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Implementation of FSF commands. 4 * Implementation of FSF commands.
5 * 5 *
6 * Copyright IBM Corporation 2002, 2010 6 * Copyright IBM Corp. 2002, 2010
7 */ 7 */
8 8
9#define KMSG_COMPONENT "zfcp" 9#define KMSG_COMPONENT "zfcp"
diff --git a/drivers/s390/scsi/zfcp_fsf.h b/drivers/s390/scsi/zfcp_fsf.h
index db8c85382dca..5e795b86931b 100644
--- a/drivers/s390/scsi/zfcp_fsf.h
+++ b/drivers/s390/scsi/zfcp_fsf.h
@@ -3,7 +3,7 @@
3 * 3 *
4 * Interface to the FSF support functions. 4 * Interface to the FSF support functions.
5 * 5 *
6 * Copyright IBM Corporation 2002, 2010 6 * Copyright IBM Corp. 2002, 2010
7 */ 7 */
8 8
9#ifndef FSF_H 9#ifndef FSF_H
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c
index e14da5751d32..b9fffc8d94a7 100644
--- a/drivers/s390/scsi/zfcp_qdio.c
+++ b/drivers/s390/scsi/zfcp_qdio.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Setup and helper functions to access QDIO. 4 * Setup and helper functions to access QDIO.
5 * 5 *
6 * Copyright IBM Corporation 2002, 2010 6 * Copyright IBM Corp. 2002, 2010
7 */ 7 */
8 8
9#define KMSG_COMPONENT "zfcp" 9#define KMSG_COMPONENT "zfcp"
diff --git a/drivers/s390/scsi/zfcp_qdio.h b/drivers/s390/scsi/zfcp_qdio.h
index 8ac7f5342d29..497cd379b0d1 100644
--- a/drivers/s390/scsi/zfcp_qdio.h
+++ b/drivers/s390/scsi/zfcp_qdio.h
@@ -3,7 +3,7 @@
3 * 3 *
4 * Header file for zfcp qdio interface 4 * Header file for zfcp qdio interface
5 * 5 *
6 * Copyright IBM Corporation 2010 6 * Copyright IBM Corp. 2010
7 */ 7 */
8 8
9#ifndef ZFCP_QDIO_H 9#ifndef ZFCP_QDIO_H
diff --git a/drivers/s390/scsi/zfcp_reqlist.h b/drivers/s390/scsi/zfcp_reqlist.h
index a72d1b730aba..7c2c6194dfca 100644
--- a/drivers/s390/scsi/zfcp_reqlist.h
+++ b/drivers/s390/scsi/zfcp_reqlist.h
@@ -4,7 +4,7 @@
4 * Data structure and helper functions for tracking pending FSF 4 * Data structure and helper functions for tracking pending FSF
5 * requests. 5 * requests.
6 * 6 *
7 * Copyright IBM Corporation 2009 7 * Copyright IBM Corp. 2009
8 */ 8 */
9 9
10#ifndef ZFCP_REQLIST_H 10#ifndef ZFCP_REQLIST_H
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c
index b79576b64f45..7b31e3f403f9 100644
--- a/drivers/s390/scsi/zfcp_scsi.c
+++ b/drivers/s390/scsi/zfcp_scsi.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Interface to Linux SCSI midlayer. 4 * Interface to Linux SCSI midlayer.
5 * 5 *
6 * Copyright IBM Corporation 2002, 2010 6 * Copyright IBM Corp. 2002, 2010
7 */ 7 */
8 8
9#define KMSG_COMPONENT "zfcp" 9#define KMSG_COMPONENT "zfcp"
diff --git a/drivers/s390/scsi/zfcp_sysfs.c b/drivers/s390/scsi/zfcp_sysfs.c
index cdc4ff78a7ba..c66af27b230b 100644
--- a/drivers/s390/scsi/zfcp_sysfs.c
+++ b/drivers/s390/scsi/zfcp_sysfs.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * sysfs attributes. 4 * sysfs attributes.
5 * 5 *
6 * Copyright IBM Corporation 2008, 2010 6 * Copyright IBM Corp. 2008, 2010
7 */ 7 */
8 8
9#define KMSG_COMPONENT "zfcp" 9#define KMSG_COMPONENT "zfcp"
diff --git a/drivers/s390/scsi/zfcp_unit.c b/drivers/s390/scsi/zfcp_unit.c
index 20796ebc33ce..3f2bff0d3aa2 100644
--- a/drivers/s390/scsi/zfcp_unit.c
+++ b/drivers/s390/scsi/zfcp_unit.c
@@ -4,7 +4,7 @@
4 * Tracking of manually configured LUNs and helper functions to 4 * Tracking of manually configured LUNs and helper functions to
5 * register the LUNs with the SCSI midlayer. 5 * register the LUNs with the SCSI midlayer.
6 * 6 *
7 * Copyright IBM Corporation 2010 7 * Copyright IBM Corp. 2010
8 */ 8 */
9 9
10#include "zfcp_def.h" 10#include "zfcp_def.h"