Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 changes from Martin Schwidefsky: "No new functions, a few changes to make the code more robust, some cleanups and bug fixes." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (21 commits) s390/vtimer: rework virtual timer interface s390/dis: Add the servc instruction to the disassembler. s390/comments: unify copyright messages and remove file names s390/lgr: Add init check to lgr_info_log() s390/cpu init: use __get_cpu_var instead of per_cpu s390/idle: reduce size of s390_idle_data structure s390/idle: fix sequence handling vs cpu hotplug s390/ap: resend enable adapter interrupt request. s390/hypfs: Add missing get_next_ino() s390/dasd: add shutdown action s390/ipl: Fix ipib handling for "dumpreipl" shutdown action s390/smp: make absolute lowcore / cpu restart parameter accesses more robust s390/vmlogrdr: cleanup driver attribute usage s390/vmlogrdr: cleanup device attribute usage s390/ccwgroup: remove unused ccwgroup_device member s390/cio/chp: cleanup attribute usage s390/sigp: use sigp order code defines in assembly code s390/smp: use sigp cpu status definitions s390/smp/kvm: unifiy sigp definitions s390/smp: remove redundant check ...
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* arch/s390/appldata/appldata.h
|
||||
*
|
||||
* Definitions and interface for Linux - z/VM Monitor Stream.
|
||||
*
|
||||
* Copyright IBM Corp. 2003, 2008
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* arch/s390/appldata/appldata_base.c
|
||||
*
|
||||
* Base infrastructure for Linux-z/VM Monitor Stream, Stage 1.
|
||||
* Exports appldata_register_ops() and appldata_unregister_ops() for the
|
||||
* data gathering modules.
|
||||
@@ -29,7 +27,7 @@
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <asm/appldata.h>
|
||||
#include <asm/timer.h>
|
||||
#include <asm/vtimer.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/smp.h>
|
||||
@@ -84,8 +82,7 @@ static struct ctl_table appldata_dir_table[] = {
|
||||
/*
|
||||
* Timer
|
||||
*/
|
||||
static DEFINE_PER_CPU(struct vtimer_list, appldata_timer);
|
||||
static atomic_t appldata_expire_count = ATOMIC_INIT(0);
|
||||
static struct vtimer_list appldata_timer;
|
||||
|
||||
static DEFINE_SPINLOCK(appldata_timer_lock);
|
||||
static int appldata_interval = APPLDATA_CPU_INTERVAL;
|
||||
@@ -115,11 +112,8 @@ static LIST_HEAD(appldata_ops_list);
|
||||
*/
|
||||
static void appldata_timer_function(unsigned long data)
|
||||
{
|
||||
if (atomic_dec_and_test(&appldata_expire_count)) {
|
||||
atomic_set(&appldata_expire_count, num_online_cpus());
|
||||
queue_work(appldata_wq, (struct work_struct *) data);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* appldata_work_fn()
|
||||
@@ -131,7 +125,6 @@ static void appldata_work_fn(struct work_struct *work)
|
||||
struct list_head *lh;
|
||||
struct appldata_ops *ops;
|
||||
|
||||
get_online_cpus();
|
||||
mutex_lock(&appldata_ops_mutex);
|
||||
list_for_each(lh, &appldata_ops_list) {
|
||||
ops = list_entry(lh, struct appldata_ops, list);
|
||||
@@ -140,7 +133,6 @@ static void appldata_work_fn(struct work_struct *work)
|
||||
}
|
||||
}
|
||||
mutex_unlock(&appldata_ops_mutex);
|
||||
put_online_cpus();
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -168,20 +160,6 @@ int appldata_diag(char record_nr, u16 function, unsigned long buffer,
|
||||
|
||||
/****************************** /proc stuff **********************************/
|
||||
|
||||
/*
|
||||
* appldata_mod_vtimer_wrap()
|
||||
*
|
||||
* wrapper function for mod_virt_timer(), because smp_call_function_single()
|
||||
* accepts only one parameter.
|
||||
*/
|
||||
static void __appldata_mod_vtimer_wrap(void *p) {
|
||||
struct {
|
||||
struct vtimer_list *timer;
|
||||
u64 expires;
|
||||
} *args = p;
|
||||
mod_virt_timer_periodic(args->timer, args->expires);
|
||||
}
|
||||
|
||||
#define APPLDATA_ADD_TIMER 0
|
||||
#define APPLDATA_DEL_TIMER 1
|
||||
#define APPLDATA_MOD_TIMER 2
|
||||
@@ -192,49 +170,28 @@ static void __appldata_mod_vtimer_wrap(void *p) {
|
||||
* Add, delete or modify virtual timers on all online cpus.
|
||||
* The caller needs to get the appldata_timer_lock spinlock.
|
||||
*/
|
||||
static void
|
||||
__appldata_vtimer_setup(int cmd)
|
||||
static void __appldata_vtimer_setup(int cmd)
|
||||
{
|
||||
u64 per_cpu_interval;
|
||||
int i;
|
||||
u64 timer_interval = (u64) appldata_interval * 1000 * TOD_MICRO;
|
||||
|
||||
switch (cmd) {
|
||||
case APPLDATA_ADD_TIMER:
|
||||
if (appldata_timer_active)
|
||||
break;
|
||||
per_cpu_interval = (u64) (appldata_interval*1000 /
|
||||
num_online_cpus()) * TOD_MICRO;
|
||||
for_each_online_cpu(i) {
|
||||
per_cpu(appldata_timer, i).expires = per_cpu_interval;
|
||||
smp_call_function_single(i, add_virt_timer_periodic,
|
||||
&per_cpu(appldata_timer, i),
|
||||
1);
|
||||
}
|
||||
appldata_timer.expires = timer_interval;
|
||||
add_virt_timer_periodic(&appldata_timer);
|
||||
appldata_timer_active = 1;
|
||||
break;
|
||||
case APPLDATA_DEL_TIMER:
|
||||
for_each_online_cpu(i)
|
||||
del_virt_timer(&per_cpu(appldata_timer, i));
|
||||
del_virt_timer(&appldata_timer);
|
||||
if (!appldata_timer_active)
|
||||
break;
|
||||
appldata_timer_active = 0;
|
||||
atomic_set(&appldata_expire_count, num_online_cpus());
|
||||
break;
|
||||
case APPLDATA_MOD_TIMER:
|
||||
per_cpu_interval = (u64) (appldata_interval*1000 /
|
||||
num_online_cpus()) * TOD_MICRO;
|
||||
if (!appldata_timer_active)
|
||||
break;
|
||||
for_each_online_cpu(i) {
|
||||
struct {
|
||||
struct vtimer_list *timer;
|
||||
u64 expires;
|
||||
} args;
|
||||
args.timer = &per_cpu(appldata_timer, i);
|
||||
args.expires = per_cpu_interval;
|
||||
smp_call_function_single(i, __appldata_mod_vtimer_wrap,
|
||||
&args, 1);
|
||||
}
|
||||
mod_virt_timer_periodic(&appldata_timer, timer_interval);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,14 +222,12 @@ appldata_timer_handler(ctl_table *ctl, int write,
|
||||
len = *lenp;
|
||||
if (copy_from_user(buf, buffer, len > sizeof(buf) ? sizeof(buf) : len))
|
||||
return -EFAULT;
|
||||
get_online_cpus();
|
||||
spin_lock(&appldata_timer_lock);
|
||||
if (buf[0] == '1')
|
||||
__appldata_vtimer_setup(APPLDATA_ADD_TIMER);
|
||||
else if (buf[0] == '0')
|
||||
__appldata_vtimer_setup(APPLDATA_DEL_TIMER);
|
||||
spin_unlock(&appldata_timer_lock);
|
||||
put_online_cpus();
|
||||
out:
|
||||
*lenp = len;
|
||||
*ppos += len;
|
||||
@@ -305,20 +260,17 @@ appldata_interval_handler(ctl_table *ctl, int write,
|
||||
goto out;
|
||||
}
|
||||
len = *lenp;
|
||||
if (copy_from_user(buf, buffer, len > sizeof(buf) ? sizeof(buf) : len)) {
|
||||
if (copy_from_user(buf, buffer, len > sizeof(buf) ? sizeof(buf) : len))
|
||||
return -EFAULT;
|
||||
}
|
||||
interval = 0;
|
||||
sscanf(buf, "%i", &interval);
|
||||
if (interval <= 0)
|
||||
return -EINVAL;
|
||||
|
||||
get_online_cpus();
|
||||
spin_lock(&appldata_timer_lock);
|
||||
appldata_interval = interval;
|
||||
__appldata_vtimer_setup(APPLDATA_MOD_TIMER);
|
||||
spin_unlock(&appldata_timer_lock);
|
||||
put_online_cpus();
|
||||
out:
|
||||
*lenp = len;
|
||||
*ppos += len;
|
||||
@@ -485,14 +437,12 @@ static int appldata_freeze(struct device *dev)
|
||||
int rc;
|
||||
struct list_head *lh;
|
||||
|
||||
get_online_cpus();
|
||||
spin_lock(&appldata_timer_lock);
|
||||
if (appldata_timer_active) {
|
||||
__appldata_vtimer_setup(APPLDATA_DEL_TIMER);
|
||||
appldata_timer_suspended = 1;
|
||||
}
|
||||
spin_unlock(&appldata_timer_lock);
|
||||
put_online_cpus();
|
||||
|
||||
mutex_lock(&appldata_ops_mutex);
|
||||
list_for_each(lh, &appldata_ops_list) {
|
||||
@@ -516,14 +466,12 @@ static int appldata_restore(struct device *dev)
|
||||
int rc;
|
||||
struct list_head *lh;
|
||||
|
||||
get_online_cpus();
|
||||
spin_lock(&appldata_timer_lock);
|
||||
if (appldata_timer_suspended) {
|
||||
__appldata_vtimer_setup(APPLDATA_ADD_TIMER);
|
||||
appldata_timer_suspended = 0;
|
||||
}
|
||||
spin_unlock(&appldata_timer_lock);
|
||||
put_online_cpus();
|
||||
|
||||
mutex_lock(&appldata_ops_mutex);
|
||||
list_for_each(lh, &appldata_ops_list) {
|
||||
@@ -567,53 +515,6 @@ static struct platform_driver appldata_pdrv = {
|
||||
|
||||
/******************************* init / exit *********************************/
|
||||
|
||||
static void __cpuinit appldata_online_cpu(int cpu)
|
||||
{
|
||||
init_virt_timer(&per_cpu(appldata_timer, cpu));
|
||||
per_cpu(appldata_timer, cpu).function = appldata_timer_function;
|
||||
per_cpu(appldata_timer, cpu).data = (unsigned long)
|
||||
&appldata_work;
|
||||
atomic_inc(&appldata_expire_count);
|
||||
spin_lock(&appldata_timer_lock);
|
||||
__appldata_vtimer_setup(APPLDATA_MOD_TIMER);
|
||||
spin_unlock(&appldata_timer_lock);
|
||||
}
|
||||
|
||||
static void __cpuinit appldata_offline_cpu(int cpu)
|
||||
{
|
||||
del_virt_timer(&per_cpu(appldata_timer, cpu));
|
||||
if (atomic_dec_and_test(&appldata_expire_count)) {
|
||||
atomic_set(&appldata_expire_count, num_online_cpus());
|
||||
queue_work(appldata_wq, &appldata_work);
|
||||
}
|
||||
spin_lock(&appldata_timer_lock);
|
||||
__appldata_vtimer_setup(APPLDATA_MOD_TIMER);
|
||||
spin_unlock(&appldata_timer_lock);
|
||||
}
|
||||
|
||||
static int __cpuinit appldata_cpu_notify(struct notifier_block *self,
|
||||
unsigned long action,
|
||||
void *hcpu)
|
||||
{
|
||||
switch (action) {
|
||||
case CPU_ONLINE:
|
||||
case CPU_ONLINE_FROZEN:
|
||||
appldata_online_cpu((long) hcpu);
|
||||
break;
|
||||
case CPU_DEAD:
|
||||
case CPU_DEAD_FROZEN:
|
||||
appldata_offline_cpu((long) hcpu);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
|
||||
static struct notifier_block __cpuinitdata appldata_nb = {
|
||||
.notifier_call = appldata_cpu_notify,
|
||||
};
|
||||
|
||||
/*
|
||||
* appldata_init()
|
||||
*
|
||||
@@ -621,7 +522,10 @@ static struct notifier_block __cpuinitdata appldata_nb = {
|
||||
*/
|
||||
static int __init appldata_init(void)
|
||||
{
|
||||
int i, rc;
|
||||
int rc;
|
||||
|
||||
appldata_timer.function = appldata_timer_function;
|
||||
appldata_timer.data = (unsigned long) &appldata_work;
|
||||
|
||||
rc = platform_driver_register(&appldata_pdrv);
|
||||
if (rc)
|
||||
@@ -639,14 +543,6 @@ static int __init appldata_init(void)
|
||||
goto out_device;
|
||||
}
|
||||
|
||||
get_online_cpus();
|
||||
for_each_online_cpu(i)
|
||||
appldata_online_cpu(i);
|
||||
put_online_cpus();
|
||||
|
||||
/* Register cpu hotplug notifier */
|
||||
register_hotcpu_notifier(&appldata_nb);
|
||||
|
||||
appldata_sysctl_header = register_sysctl_table(appldata_dir_table);
|
||||
return 0;
|
||||
|
||||
|
@@ -1,10 +1,8 @@
|
||||
/*
|
||||
* arch/s390/appldata/appldata_mem.c
|
||||
*
|
||||
* Data gathering module for Linux-VM Monitor Stream, Stage 1.
|
||||
* Collects data related to memory management.
|
||||
*
|
||||
* Copyright (C) 2003,2006 IBM Corporation, IBM Deutschland Entwicklung GmbH.
|
||||
* Copyright IBM Corp. 2003, 2006
|
||||
*
|
||||
* Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
|
||||
*/
|
||||
|
@@ -1,11 +1,9 @@
|
||||
/*
|
||||
* arch/s390/appldata/appldata_net_sum.c
|
||||
*
|
||||
* Data gathering module for Linux-VM Monitor Stream, Stage 1.
|
||||
* Collects accumulated network statistics (Packets received/transmitted,
|
||||
* dropped, errors, ...).
|
||||
*
|
||||
* Copyright (C) 2003,2006 IBM Corporation, IBM Deutschland Entwicklung GmbH.
|
||||
* Copyright IBM Corp. 2003, 2006
|
||||
*
|
||||
* Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
|
||||
*/
|
||||
|
@@ -1,10 +1,8 @@
|
||||
/*
|
||||
* arch/s390/appldata/appldata_os.c
|
||||
*
|
||||
* Data gathering module for Linux-VM Monitor Stream, Stage 1.
|
||||
* Collects misc. OS related data (CPU utilization, running processes).
|
||||
*
|
||||
* Copyright (C) 2003,2006 IBM Corporation, IBM Deutschland Entwicklung GmbH.
|
||||
* Copyright IBM Corp. 2003, 2006
|
||||
*
|
||||
* Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
|
||||
*/
|
||||
|
@@ -1,8 +1,7 @@
|
||||
/*
|
||||
* arch/s390/hypfs/hypfs.h
|
||||
* Hypervisor filesystem for Linux on s390.
|
||||
*
|
||||
* Copyright (C) IBM Corp. 2006
|
||||
* Copyright IBM Corp. 2006
|
||||
* Author(s): Michael Holzheu <holzheu@de.ibm.com>
|
||||
*/
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Hypervisor filesystem for Linux on s390 - debugfs interface
|
||||
*
|
||||
* Copyright (C) IBM Corp. 2010
|
||||
* Copyright IBM Corp. 2010
|
||||
* Author(s): Michael Holzheu <holzheu@linux.vnet.ibm.com>
|
||||
*/
|
||||
|
||||
|
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* arch/s390/hypfs/hypfs_diag.c
|
||||
* Hypervisor filesystem for Linux on s390. Diag 204 and 224
|
||||
* implementation.
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Hypervisor filesystem for Linux on s390. z/VM implementation.
|
||||
*
|
||||
* Copyright (C) IBM Corp. 2006
|
||||
* Copyright IBM Corp. 2006
|
||||
* Author(s): Michael Holzheu <holzheu@de.ibm.com>
|
||||
*/
|
||||
|
||||
|
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* arch/s390/hypfs/inode.c
|
||||
* Hypervisor filesystem for Linux on s390.
|
||||
*
|
||||
* Copyright IBM Corp. 2006, 2008
|
||||
@@ -103,6 +102,7 @@ static struct inode *hypfs_make_inode(struct super_block *sb, umode_t mode)
|
||||
|
||||
if (ret) {
|
||||
struct hypfs_sb_info *hypfs_info = sb->s_fs_info;
|
||||
ret->i_ino = get_next_ino();
|
||||
ret->i_mode = mode;
|
||||
ret->i_uid = hypfs_info->uid;
|
||||
ret->i_gid = hypfs_info->gid;
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/airq.h
|
||||
*
|
||||
* Copyright IBM Corp. 2002, 2007
|
||||
* Author(s): Ingo Adlung <adlung@de.ibm.com>
|
||||
* Cornelia Huck <cornelia.huck@de.ibm.com>
|
||||
|
@@ -1,7 +1,5 @@
|
||||
/*
|
||||
* include/asm-s390/appldata.h
|
||||
*
|
||||
* Copyright (C) IBM Corp. 2006
|
||||
* Copyright IBM Corp. 2006
|
||||
*
|
||||
* Author(s): Melissa Howland <melissah@us.ibm.com>
|
||||
*/
|
||||
|
@@ -1,8 +1,5 @@
|
||||
#ifndef __ARCH_S390_ATOMIC__
|
||||
#define __ARCH_S390_ATOMIC__
|
||||
|
||||
/*
|
||||
* Copyright 1999,2009 IBM Corp.
|
||||
* Copyright IBM Corp. 1999, 2009
|
||||
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>,
|
||||
* Denis Joseph Barrow,
|
||||
* Arnd Bergmann <arndb@de.ibm.com>,
|
||||
@@ -13,6 +10,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_S390_ATOMIC__
|
||||
#define __ARCH_S390_ATOMIC__
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/types.h>
|
||||
#include <asm/cmpxchg.h>
|
||||
|
@@ -1,11 +1,6 @@
|
||||
#ifndef _S390_BITOPS_H
|
||||
#define _S390_BITOPS_H
|
||||
|
||||
/*
|
||||
* include/asm-s390/bitops.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*
|
||||
* Derived from "include/asm-i386/bitops.h"
|
||||
@@ -13,6 +8,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _S390_BITOPS_H
|
||||
#define _S390_BITOPS_H
|
||||
|
||||
#ifndef _LINUX_BITOPS_H
|
||||
#error only <linux/bitops.h> can be included directly
|
||||
#endif
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/bugs.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*
|
||||
* Derived from "include/asm-i386/bugs.h"
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/cache.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
*
|
||||
* Derived from "include/asm-i386/cache.h"
|
||||
* Copyright (C) 1992, Linus Torvalds
|
||||
|
@@ -6,14 +6,12 @@ struct ccw_driver;
|
||||
|
||||
/**
|
||||
* struct ccwgroup_device - ccw group device
|
||||
* @creator_id: unique number of the driver
|
||||
* @state: online/offline state
|
||||
* @count: number of attached slave devices
|
||||
* @dev: embedded device structure
|
||||
* @cdev: variable number of slave devices, allocated as needed
|
||||
*/
|
||||
struct ccwgroup_device {
|
||||
unsigned long creator_id;
|
||||
enum {
|
||||
CCWGROUP_OFFLINE,
|
||||
CCWGROUP_ONLINE,
|
||||
|
@@ -1,18 +1,16 @@
|
||||
#ifndef _S390_CHECKSUM_H
|
||||
#define _S390_CHECKSUM_H
|
||||
|
||||
/*
|
||||
* include/asm-s390/checksum.h
|
||||
* S390 fast network checksum routines
|
||||
* see also arch/S390/lib/checksum.c
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Ulrich Hild (first version)
|
||||
* Martin Schwidefsky (heavily optimized CKSM version)
|
||||
* D.J. Barrow (third attempt)
|
||||
*/
|
||||
|
||||
#ifndef _S390_CHECKSUM_H
|
||||
#define _S390_CHECKSUM_H
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
/*
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* drivers/s390/cio/chpid.h
|
||||
*
|
||||
* Copyright IBM Corp. 2007
|
||||
* Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
|
||||
*/
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* ioctl interface for /dev/chsc
|
||||
*
|
||||
* Copyright 2008 IBM Corp.
|
||||
* Copyright IBM Corp. 2008
|
||||
* Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
|
||||
*/
|
||||
|
||||
|
@@ -1,7 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/cio.h
|
||||
* include/asm-s390x/cio.h
|
||||
*
|
||||
* Common interface for I/O on S/390
|
||||
*/
|
||||
#ifndef _ASM_S390_CIO_H_
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* arch/s390/kernel/cpcmd.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
|
||||
* Christian Borntraeger (cborntra@de.ibm.com),
|
||||
*/
|
||||
|
@@ -1,7 +1,5 @@
|
||||
/*
|
||||
* include/asm-s390/cputime.h
|
||||
*
|
||||
* (C) Copyright IBM Corp. 2004
|
||||
* Copyright IBM Corp. 2004
|
||||
*
|
||||
* Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
*/
|
||||
@@ -167,12 +165,14 @@ static inline clock_t cputime64_to_clock_t(cputime64_t cputime)
|
||||
}
|
||||
|
||||
struct s390_idle_data {
|
||||
int nohz_delay;
|
||||
unsigned int sequence;
|
||||
unsigned long long idle_count;
|
||||
unsigned long long idle_enter;
|
||||
unsigned long long idle_exit;
|
||||
unsigned long long idle_time;
|
||||
int nohz_delay;
|
||||
unsigned long long clock_idle_enter;
|
||||
unsigned long long clock_idle_exit;
|
||||
unsigned long long timer_idle_enter;
|
||||
unsigned long long timer_idle_exit;
|
||||
};
|
||||
|
||||
DECLARE_PER_CPU(struct s390_idle_data, s390_idle);
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/current.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*
|
||||
* Derived from "include/asm-i386/current.h"
|
||||
|
@@ -1,8 +1,7 @@
|
||||
/*
|
||||
* File...........: linux/drivers/s390/block/dasd.c
|
||||
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
|
||||
* Bugreports.to..: <Linux390@de.ibm.com>
|
||||
* (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
|
||||
* Copyright IBM Corp. 1999, 2000
|
||||
* EMC Symmetrix ioctl Copyright EMC Corporation, 2008
|
||||
* Author.........: Nigel Hislop <hislop_nigel@emc.com>
|
||||
*
|
||||
|
@@ -1,9 +1,7 @@
|
||||
/*
|
||||
* include/asm-s390/debug.h
|
||||
* S/390 debug facility
|
||||
*
|
||||
* Copyright (C) 1999, 2000 IBM Deutschland Entwicklung GmbH,
|
||||
* IBM Corporation
|
||||
* Copyright IBM Corp. 1999, 2000
|
||||
*/
|
||||
|
||||
#ifndef DEBUG_H
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/delay.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*
|
||||
* Derived from "include/asm-i386/delay.h"
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/dma.h
|
||||
*
|
||||
* S390 version
|
||||
*/
|
||||
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* include/asm-s390/ebcdic.h
|
||||
* EBCDIC -> ASCII, ASCII -> EBCDIC conversion routines.
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
*/
|
||||
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/elf.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/elf.h"
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/errno.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
*/
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/etr.h
|
||||
*
|
||||
* Copyright IBM Corp. 2006
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*/
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390x/extmem.h
|
||||
*
|
||||
* definitions for external memory segment support
|
||||
* Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 2003
|
||||
*/
|
||||
|
||||
#ifndef _ASM_S390X_DCSS_H
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/hardirq.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999, 2000
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
|
||||
* Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
|
||||
*
|
||||
|
@@ -1,10 +1,9 @@
|
||||
/*
|
||||
* File...........: linux/include/asm-s390x/idals.h
|
||||
* Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
|
||||
* Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
* Bugreports.to..: <Linux390@de.ibm.com>
|
||||
* (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000a
|
||||
|
||||
* Copyright IBM Corp. 2000
|
||||
*
|
||||
* History of changes
|
||||
* 07/24/00 new file
|
||||
* 05/04/02 code restructuring.
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/io.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*
|
||||
* Derived from "include/asm-i386/io.h"
|
||||
|
@@ -1,7 +1,5 @@
|
||||
/*
|
||||
* include/asm-s390/kexec.h
|
||||
*
|
||||
* (C) Copyright IBM Corp. 2005
|
||||
* Copyright IBM Corp. 2005
|
||||
*
|
||||
* Author(s): Rolf Adelsberger <adelsberger@de.ibm.com>
|
||||
*
|
||||
|
@@ -17,7 +17,7 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Copyright (C) IBM Corporation, 2002, 2006
|
||||
* Copyright IBM Corp. 2002, 2006
|
||||
*
|
||||
* 2002-Oct Created by Vamsi Krishna S <vamsi_krishna@in.ibm.com> Kernel
|
||||
* Probes initial implementation ( includes suggestions from
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#ifndef __LINUX_KVM_S390_H
|
||||
#define __LINUX_KVM_S390_H
|
||||
/*
|
||||
* asm-s390/kvm.h - KVM s390 specific structures and definitions
|
||||
* KVM s390 specific structures and definitions
|
||||
*
|
||||
* Copyright IBM Corp. 2008
|
||||
*
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* asm-s390/kvm_host.h - definition for kernel virtual machines on s390
|
||||
* definition for kernel virtual machines on s390
|
||||
*
|
||||
* Copyright IBM Corp. 2008, 2009
|
||||
*
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* asm-s390/kvm_para.h - definition for paravirtual devices on s390
|
||||
* definition for paravirtual devices on s390
|
||||
*
|
||||
* Copyright IBM Corp. 2008
|
||||
*
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* kvm_virtio.h - definition for virtio for kvm on s390
|
||||
* definition for virtio for kvm on s390
|
||||
*
|
||||
* Copyright IBM Corp. 2008
|
||||
*
|
||||
|
@@ -302,12 +302,7 @@ struct _lowcore {
|
||||
*/
|
||||
__u64 ipib; /* 0x0e00 */
|
||||
__u32 ipib_checksum; /* 0x0e08 */
|
||||
/*
|
||||
* Because the vmcore_info pointer is not 8 byte aligned it never
|
||||
* should not be accessed directly. For accessing the pointer, first
|
||||
* copy it to a local pointer variable.
|
||||
*/
|
||||
__u8 vmcore_info[8]; /* 0x0e0c */
|
||||
__u64 vmcore_info; /* 0x0e0c */
|
||||
__u8 pad_0x0e14[0x0e18-0x0e14]; /* 0x0e14 */
|
||||
__u64 os_info; /* 0x0e18 */
|
||||
__u8 pad_0x0e20[0x0f00-0x0e20]; /* 0x0e20 */
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* arch/s390/kernel/mathemu.h
|
||||
* IEEE floating point emulation.
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*/
|
||||
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/mman.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/mman.h"
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/mmu_context.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/mmu_context.h"
|
||||
|
@@ -1,7 +1,5 @@
|
||||
/*
|
||||
* include/asm-s390/monwriter.h
|
||||
*
|
||||
* Copyright (C) IBM Corp. 2006
|
||||
* Copyright IBM Corp. 2006
|
||||
* Character device driver for writing z/VM APPLDATA monitor records
|
||||
* Version 1.0
|
||||
* Author(s): Melissa Howland <melissah@us.ibm.com>
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/page.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999, 2000
|
||||
* Author(s): Hartmut Penner (hp@de.ibm.com)
|
||||
*/
|
||||
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/pgalloc.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999, 2000
|
||||
* Author(s): Hartmut Penner (hp@de.ibm.com)
|
||||
* Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/pgtable.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999, 2000
|
||||
* Author(s): Hartmut Penner (hp@de.ibm.com)
|
||||
* Ulrich Weigand (weigand@de.ibm.com)
|
||||
* Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/posix_types.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
*/
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/processor.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Hartmut Penner (hp@de.ibm.com),
|
||||
* Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*
|
||||
@@ -348,4 +346,14 @@ extern void (*s390_base_ext_handler_fn)(void);
|
||||
".previous\n"
|
||||
#endif
|
||||
|
||||
extern int memcpy_real(void *, void *, size_t);
|
||||
extern void memcpy_absolute(void *, void *, size_t);
|
||||
|
||||
#define mem_assign_absolute(dest, val) { \
|
||||
__typeof__(dest) __tmp = (val); \
|
||||
\
|
||||
BUILD_BUG_ON(sizeof(__tmp) != sizeof(val)); \
|
||||
memcpy_absolute(&(dest), &__tmp, sizeof(__tmp)); \
|
||||
}
|
||||
|
||||
#endif /* __ASM_S390_PROCESSOR_H */
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/ptrace.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999, 2000
|
||||
* Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
|
||||
*/
|
||||
|
||||
|
@@ -1,7 +1,5 @@
|
||||
/*
|
||||
* linux/include/asm-s390/qdio.h
|
||||
*
|
||||
* Copyright 2000,2008 IBM Corp.
|
||||
* Copyright IBM Corp. 2000, 2008
|
||||
* Author(s): Utz Bacher <utz.bacher@de.ibm.com>
|
||||
* Jan Glauber <jang@linux.vnet.ibm.com>
|
||||
*
|
||||
|
@@ -1,9 +1,7 @@
|
||||
/*
|
||||
* include/asm-s390/qeth.h
|
||||
*
|
||||
* ioctl definitions for qeth driver
|
||||
*
|
||||
* Copyright (C) 2004 IBM Corporation
|
||||
* Copyright IBM Corp. 2004
|
||||
*
|
||||
* Author(s): Thomas Spatzier <tspat@de.ibm.com>
|
||||
*
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/reset.h
|
||||
*
|
||||
* Copyright IBM Corp. 2006
|
||||
* Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
|
||||
*/
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/resource.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/resources.h"
|
||||
|
@@ -2,10 +2,8 @@
|
||||
#define _S390_RWSEM_H
|
||||
|
||||
/*
|
||||
* include/asm-s390/rwsem.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 2002
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*
|
||||
* Based on asm-alpha/semaphore.h and asm-i386/rwsem.h
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/sclp.h
|
||||
*
|
||||
* Copyright IBM Corp. 2007
|
||||
* Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
|
||||
*/
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/setup.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright IBM Corp. 1999, 2010
|
||||
*/
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/shmparam.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/shmparam.h"
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/sigcontext.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999, 2000
|
||||
*/
|
||||
|
||||
#ifndef _ASM_S390_SIGCONTEXT_H
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/siginfo.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/siginfo.h"
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/signal.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/signal.h"
|
||||
|
31
arch/s390/include/asm/sigp.h
Normal file
31
arch/s390/include/asm/sigp.h
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef __S390_ASM_SIGP_H
|
||||
#define __S390_ASM_SIGP_H
|
||||
|
||||
/* SIGP order codes */
|
||||
#define SIGP_SENSE 1
|
||||
#define SIGP_EXTERNAL_CALL 2
|
||||
#define SIGP_EMERGENCY_SIGNAL 3
|
||||
#define SIGP_STOP 5
|
||||
#define SIGP_RESTART 6
|
||||
#define SIGP_STOP_AND_STORE_STATUS 9
|
||||
#define SIGP_INITIAL_CPU_RESET 11
|
||||
#define SIGP_SET_PREFIX 13
|
||||
#define SIGP_STORE_STATUS_AT_ADDRESS 14
|
||||
#define SIGP_SET_ARCHITECTURE 18
|
||||
#define SIGP_SENSE_RUNNING 21
|
||||
|
||||
/* SIGP condition codes */
|
||||
#define SIGP_CC_ORDER_CODE_ACCEPTED 0
|
||||
#define SIGP_CC_STATUS_STORED 1
|
||||
#define SIGP_CC_BUSY 2
|
||||
#define SIGP_CC_NOT_OPERATIONAL 3
|
||||
|
||||
/* SIGP cpu status bits */
|
||||
|
||||
#define SIGP_STATUS_CHECK_STOP 0x00000010UL
|
||||
#define SIGP_STATUS_STOPPED 0x00000040UL
|
||||
#define SIGP_STATUS_INVALID_PARAMETER 0x00000100UL
|
||||
#define SIGP_STATUS_INCORRECT_STATE 0x00000200UL
|
||||
#define SIGP_STATUS_NOT_RUNNING 0x00000400UL
|
||||
|
||||
#endif /* __S390_ASM_SIGP_H */
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/socket.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/socket.h"
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/spinlock.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*
|
||||
* Derived from "include/asm-i386/spinlock.h"
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/stat.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/stat.h"
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/statfs.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/statfs.h"
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/string.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
|
||||
*/
|
||||
|
||||
|
@@ -2,10 +2,8 @@
|
||||
#define _S390_SWAB_H
|
||||
|
||||
/*
|
||||
* include/asm-s390/swab.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*/
|
||||
|
||||
|
@@ -1,6 +1,5 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* tape390.h
|
||||
* enables user programs to display messages and control encryption
|
||||
* on s390 tape devices
|
||||
*
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/termios.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/termios.h"
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/thread_info.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) IBM Corp. 2002,2006
|
||||
* Copyright IBM Corp. 2002, 2006
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*/
|
||||
|
||||
|
@@ -1,51 +0,0 @@
|
||||
/*
|
||||
* include/asm-s390/timer.h
|
||||
*
|
||||
* (C) Copyright IBM Corp. 2003,2006
|
||||
* Virtual CPU timer
|
||||
*
|
||||
* Author: Jan Glauber (jang@de.ibm.com)
|
||||
*/
|
||||
|
||||
#ifndef _ASM_S390_TIMER_H
|
||||
#define _ASM_S390_TIMER_H
|
||||
|
||||
#include <linux/timer.h>
|
||||
|
||||
#define VTIMER_MAX_SLICE (0x7ffffffffffff000LL)
|
||||
|
||||
struct vtimer_list {
|
||||
struct list_head entry;
|
||||
|
||||
int cpu;
|
||||
__u64 expires;
|
||||
__u64 interval;
|
||||
|
||||
void (*function)(unsigned long);
|
||||
unsigned long data;
|
||||
};
|
||||
|
||||
/* the vtimer value will wrap after ca. 71 years */
|
||||
struct vtimer_queue {
|
||||
struct list_head list;
|
||||
spinlock_t lock;
|
||||
__u64 timer; /* last programmed timer */
|
||||
__u64 elapsed; /* elapsed time of timer expire values */
|
||||
__u64 idle_enter; /* cpu timer on idle enter */
|
||||
__u64 idle_exit; /* cpu timer on idle exit */
|
||||
};
|
||||
|
||||
extern void init_virt_timer(struct vtimer_list *timer);
|
||||
extern void add_virt_timer(void *new);
|
||||
extern void add_virt_timer_periodic(void *new);
|
||||
extern int mod_virt_timer(struct vtimer_list *timer, __u64 expires);
|
||||
extern int mod_virt_timer_periodic(struct vtimer_list *timer, __u64 expires);
|
||||
extern int del_virt_timer(struct vtimer_list *timer);
|
||||
|
||||
extern void init_cpu_vtimer(void);
|
||||
extern void vtime_init(void);
|
||||
|
||||
extern void vtime_stop_cpu(void);
|
||||
extern void vtime_start_leave(void);
|
||||
|
||||
#endif /* _ASM_S390_TIMER_H */
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/timex.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
*
|
||||
* Derived from "include/asm-i386/timex.h"
|
||||
* Copyright (C) 1992, Linus Torvalds
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/types.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/types.h"
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* include/asm-s390/uaccess.h
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999, 2000
|
||||
* Author(s): Hartmut Penner (hp@de.ibm.com),
|
||||
* Martin Schwidefsky (schwidefsky@de.ibm.com)
|
||||
*
|
||||
@@ -381,8 +379,6 @@ clear_user(void __user *to, unsigned long n)
|
||||
return n;
|
||||
}
|
||||
|
||||
extern int memcpy_real(void *, void *, size_t);
|
||||
extern void memcpy_absolute(void *, void *, size_t);
|
||||
extern int copy_to_user_real(void __user *dest, void *src, size_t count);
|
||||
extern int copy_from_user_real(void *dest, void __user *src, size_t count);
|
||||
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/ucontext.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/ucontext.h"
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/unistd.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/unistd.h"
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* include/asm-s390/user.h
|
||||
*
|
||||
* S390 version
|
||||
*
|
||||
* Derived from "include/asm-i386/usr.h"
|
||||
|
33
arch/s390/include/asm/vtimer.h
Normal file
33
arch/s390/include/asm/vtimer.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright IBM Corp. 2003, 2012
|
||||
* Virtual CPU timer
|
||||
*
|
||||
* Author(s): Jan Glauber <jan.glauber@de.ibm.com>
|
||||
*/
|
||||
|
||||
#ifndef _ASM_S390_TIMER_H
|
||||
#define _ASM_S390_TIMER_H
|
||||
|
||||
#define VTIMER_MAX_SLICE (0x7fffffffffffffffULL)
|
||||
|
||||
struct vtimer_list {
|
||||
struct list_head entry;
|
||||
u64 expires;
|
||||
u64 interval;
|
||||
void (*function)(unsigned long);
|
||||
unsigned long data;
|
||||
};
|
||||
|
||||
extern void init_virt_timer(struct vtimer_list *timer);
|
||||
extern void add_virt_timer(struct vtimer_list *timer);
|
||||
extern void add_virt_timer_periodic(struct vtimer_list *timer);
|
||||
extern int mod_virt_timer(struct vtimer_list *timer, u64 expires);
|
||||
extern int mod_virt_timer_periodic(struct vtimer_list *timer, u64 expires);
|
||||
extern int del_virt_timer(struct vtimer_list *timer);
|
||||
|
||||
extern void init_cpu_vtimer(void);
|
||||
extern void vtime_init(void);
|
||||
|
||||
extern void vtime_stop_cpu(void);
|
||||
|
||||
#endif /* _ASM_S390_TIMER_H */
|
@@ -1,9 +1,7 @@
|
||||
/*
|
||||
* include/asm-s390/vtoc.h
|
||||
*
|
||||
* This file contains volume label definitions for DASD devices.
|
||||
*
|
||||
* (C) Copyright IBM Corp. 2005
|
||||
* Copyright IBM Corp. 2005
|
||||
*
|
||||
* Author(s): Volker Sameske <sameske@de.ibm.com>
|
||||
*
|
||||
|
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* zcrypt 2.1.0 (user-visible header)
|
||||
*
|
||||
* Copyright (C) 2001, 2006 IBM Corporation
|
||||
* Copyright IBM Corp. 2001, 2006
|
||||
* Author(s): Robert Burroughs
|
||||
* Eric Rossman (edrossma@us.ibm.com)
|
||||
*
|
||||
|
@@ -9,7 +9,6 @@
|
||||
#include <linux/kbuild.h>
|
||||
#include <linux/sched.h>
|
||||
#include <asm/cputime.h>
|
||||
#include <asm/timer.h>
|
||||
#include <asm/vdso.h>
|
||||
#include <asm/pgtable.h>
|
||||
|
||||
@@ -72,11 +71,10 @@ int main(void)
|
||||
DEFINE(__CLOCK_REALTIME_RES, MONOTONIC_RES_NSEC);
|
||||
BLANK();
|
||||
/* idle data offsets */
|
||||
DEFINE(__IDLE_ENTER, offsetof(struct s390_idle_data, idle_enter));
|
||||
DEFINE(__IDLE_EXIT, offsetof(struct s390_idle_data, idle_exit));
|
||||
/* vtimer queue offsets */
|
||||
DEFINE(__VQ_IDLE_ENTER, offsetof(struct vtimer_queue, idle_enter));
|
||||
DEFINE(__VQ_IDLE_EXIT, offsetof(struct vtimer_queue, idle_exit));
|
||||
DEFINE(__CLOCK_IDLE_ENTER, offsetof(struct s390_idle_data, clock_idle_enter));
|
||||
DEFINE(__CLOCK_IDLE_EXIT, offsetof(struct s390_idle_data, clock_idle_exit));
|
||||
DEFINE(__TIMER_IDLE_ENTER, offsetof(struct s390_idle_data, timer_idle_enter));
|
||||
DEFINE(__TIMER_IDLE_EXIT, offsetof(struct s390_idle_data, timer_idle_exit));
|
||||
/* lowcore offsets */
|
||||
DEFINE(__LC_EXT_PARAMS, offsetof(struct _lowcore, ext_params));
|
||||
DEFINE(__LC_EXT_CPU_ADDR, offsetof(struct _lowcore, ext_cpu_addr));
|
||||
@@ -131,6 +129,8 @@ int main(void)
|
||||
DEFINE(__LC_PANIC_STACK, offsetof(struct _lowcore, panic_stack));
|
||||
DEFINE(__LC_RESTART_STACK, offsetof(struct _lowcore, restart_stack));
|
||||
DEFINE(__LC_RESTART_FN, offsetof(struct _lowcore, restart_fn));
|
||||
DEFINE(__LC_RESTART_DATA, offsetof(struct _lowcore, restart_data));
|
||||
DEFINE(__LC_RESTART_SOURCE, offsetof(struct _lowcore, restart_source));
|
||||
DEFINE(__LC_USER_ASCE, offsetof(struct _lowcore, user_asce));
|
||||
DEFINE(__LC_INT_CLOCK, offsetof(struct _lowcore, int_clock));
|
||||
DEFINE(__LC_MCCK_CLOCK, offsetof(struct _lowcore, mcck_clock));
|
||||
|
@@ -9,6 +9,7 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/sigp.h>
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
|
||||
@@ -100,7 +101,7 @@ ENTRY(diag308_reset)
|
||||
.Lrestart_part2:
|
||||
lhi %r0,0 # Load r0 with zero
|
||||
lhi %r1,2 # Use mode 2 = ESAME (dump)
|
||||
sigp %r1,%r0,0x12 # Switch to ESAME mode
|
||||
sigp %r1,%r0,SIGP_SET_ARCHITECTURE # Switch to ESAME mode
|
||||
sam64 # Switch to 64 bit addressing mode
|
||||
larl %r4,.Lctlregs # Restore control registers
|
||||
lctlg %c0,%c15,0(%r4)
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Support for 32-bit Linux for S390 personality.
|
||||
*
|
||||
* Copyright (C) 2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 2000
|
||||
* Author(s): Gerhard Tonn (ton@de.ibm.com)
|
||||
*
|
||||
*
|
||||
|
@@ -1,8 +1,6 @@
|
||||
/*
|
||||
* arch/s390x/kernel/linux32.c
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 2000
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
|
||||
* Gerhard Tonn (ton@de.ibm.com)
|
||||
* Thomas Spatzier (tspat@de.ibm.com)
|
||||
|
@@ -1,7 +1,5 @@
|
||||
/*
|
||||
* arch/s390/kernel/compat_signal.c
|
||||
*
|
||||
* Copyright (C) IBM Corp. 2000,2006
|
||||
* Copyright IBM Corp. 2000, 2006
|
||||
* Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
|
||||
* Gerhard Tonn (ton@de.ibm.com)
|
||||
*
|
||||
|
@@ -1,8 +1,7 @@
|
||||
/*
|
||||
* arch/s390/kernel/compat_wrapper.S
|
||||
* wrapper for 31 bit compatible system calls.
|
||||
*
|
||||
* Copyright (C) IBM Corp. 2000,2006
|
||||
* Copyright IBM Corp. 2000, 2006
|
||||
* Author(s): Gerhard Tonn (ton@de.ibm.com),
|
||||
* Thomas Spatzier (tspat@de.ibm.com)
|
||||
*/
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* arch/s390/kernel/cpcmd.c
|
||||
*
|
||||
* S390 version
|
||||
* Copyright IBM Corp. 1999, 2007
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
|
||||
|
@@ -1,7 +1,5 @@
|
||||
/*
|
||||
* arch/s390/kernel/crash.c
|
||||
*
|
||||
* (C) Copyright IBM Corp. 2005
|
||||
* Copyright IBM Corp. 2005
|
||||
*
|
||||
* Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
|
||||
*
|
||||
|
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* arch/s390/kernel/debug.c
|
||||
* S/390 debug facility
|
||||
*
|
||||
* Copyright IBM Corp. 1999, 2012
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* arch/s390/kernel/dis.c
|
||||
*
|
||||
* Disassemble s390 instructions.
|
||||
*
|
||||
* Copyright IBM Corp. 2007
|
||||
@@ -613,6 +611,7 @@ static struct insn opcode_b2[] = {
|
||||
{ "sie", 0x14, INSTR_S_RD },
|
||||
{ "pc", 0x18, INSTR_S_RD },
|
||||
{ "sac", 0x19, INSTR_S_RD },
|
||||
{ "servc", 0x20, INSTR_RRE_RR },
|
||||
{ "cfc", 0x1a, INSTR_S_RD },
|
||||
{ "ipte", 0x21, INSTR_RRE_RR },
|
||||
{ "ipm", 0x22, INSTR_RRE_R0 },
|
||||
|
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* arch/s390/kernel/early.c
|
||||
*
|
||||
* Copyright IBM Corp. 2007, 2009
|
||||
* Author(s): Hongjie Yang <hongjie@us.ibm.com>,
|
||||
* Heiko Carstens <heiko.carstens@de.ibm.com>
|
||||
|
@@ -1,10 +1,9 @@
|
||||
/*
|
||||
* arch/s390/kernel/ebcdic.c
|
||||
* ECBDIC -> ASCII, ASCII -> ECBDIC,
|
||||
* upper to lower case (EBCDIC) conversion tables.
|
||||
*
|
||||
* S390 version
|
||||
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright IBM Corp. 1999
|
||||
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
* Martin Peschke <peschke@fh-brandenburg.de>
|
||||
*/
|
||||
|
@@ -1,8 +1,7 @@
|
||||
/*
|
||||
* arch/s390/kernel/entry.S
|
||||
* S390 low-level entry points.
|
||||
*
|
||||
* Copyright (C) IBM Corp. 1999,2012
|
||||
* Copyright IBM Corp. 1999, 2012
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
|
||||
* Hartmut Penner (hp@de.ibm.com),
|
||||
* Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com),
|
||||
@@ -18,6 +17,7 @@
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/sigp.h>
|
||||
|
||||
__PT_R0 = __PT_GPRS
|
||||
__PT_R1 = __PT_GPRS + 4
|
||||
@@ -616,17 +616,13 @@ ext_skip:
|
||||
* Load idle PSW. The second "half" of this function is in cleanup_idle.
|
||||
*/
|
||||
ENTRY(psw_idle)
|
||||
st %r4,__SF_EMPTY(%r15)
|
||||
st %r3,__SF_EMPTY(%r15)
|
||||
basr %r1,0
|
||||
la %r1,psw_idle_lpsw+4-.(%r1)
|
||||
st %r1,__SF_EMPTY+4(%r15)
|
||||
oi __SF_EMPTY+4(%r15),0x80
|
||||
la %r1,.Lvtimer_max-psw_idle_lpsw-4(%r1)
|
||||
stck __IDLE_ENTER(%r2)
|
||||
ltr %r5,%r5
|
||||
stpt __VQ_IDLE_ENTER(%r3)
|
||||
jz psw_idle_lpsw
|
||||
spt 0(%r1)
|
||||
stck __CLOCK_IDLE_ENTER(%r2)
|
||||
stpt __TIMER_IDLE_ENTER(%r2)
|
||||
psw_idle_lpsw:
|
||||
lpsw __SF_EMPTY(%r15)
|
||||
br %r14
|
||||
@@ -723,15 +719,17 @@ ENTRY(restart_int_handler)
|
||||
mvc __PT_PSW(8,%r15),__LC_RST_OLD_PSW # store restart old psw
|
||||
ahi %r15,-STACK_FRAME_OVERHEAD # create stack frame on stack
|
||||
xc 0(STACK_FRAME_OVERHEAD,%r15),0(%r15)
|
||||
lm %r1,%r3,__LC_RESTART_FN # load fn, parm & source cpu
|
||||
l %r1,__LC_RESTART_FN # load fn, parm & source cpu
|
||||
l %r2,__LC_RESTART_DATA
|
||||
l %r3,__LC_RESTART_SOURCE
|
||||
ltr %r3,%r3 # test source cpu address
|
||||
jm 1f # negative -> skip source stop
|
||||
0: sigp %r4,%r3,1 # sigp sense to source cpu
|
||||
0: sigp %r4,%r3,SIGP_SENSE # sigp sense to source cpu
|
||||
brc 10,0b # wait for status stored
|
||||
1: basr %r14,%r1 # call function
|
||||
stap __SF_EMPTY(%r15) # store cpu address
|
||||
lh %r3,__SF_EMPTY(%r15)
|
||||
2: sigp %r4,%r3,5 # sigp stop to current cpu
|
||||
2: sigp %r4,%r3,SIGP_STOP # sigp stop to current cpu
|
||||
brc 2,2b
|
||||
3: j 3b
|
||||
|
||||
@@ -883,33 +881,28 @@ cleanup_io_restore_insn:
|
||||
|
||||
cleanup_idle:
|
||||
# copy interrupt clock & cpu timer
|
||||
mvc __IDLE_EXIT(8,%r2),__LC_INT_CLOCK
|
||||
mvc __VQ_IDLE_EXIT(8,%r3),__LC_ASYNC_ENTER_TIMER
|
||||
mvc __CLOCK_IDLE_EXIT(8,%r2),__LC_INT_CLOCK
|
||||
mvc __TIMER_IDLE_EXIT(8,%r2),__LC_ASYNC_ENTER_TIMER
|
||||
chi %r11,__LC_SAVE_AREA_ASYNC
|
||||
je 0f
|
||||
mvc __IDLE_EXIT(8,%r2),__LC_MCCK_CLOCK
|
||||
mvc __VQ_IDLE_EXIT(8,%r3),__LC_MCCK_ENTER_TIMER
|
||||
mvc __CLOCK_IDLE_EXIT(8,%r2),__LC_MCCK_CLOCK
|
||||
mvc __TIMER_IDLE_EXIT(8,%r2),__LC_MCCK_ENTER_TIMER
|
||||
0: # check if stck has been executed
|
||||
cl %r9,BASED(cleanup_idle_insn)
|
||||
jhe 1f
|
||||
mvc __IDLE_ENTER(8,%r2),__IDLE_EXIT(%r2)
|
||||
mvc __VQ_IDLE_ENTER(8,%r3),__VQ_IDLE_EXIT(%r3)
|
||||
j 2f
|
||||
1: # check if the cpu timer has been reprogrammed
|
||||
ltr %r5,%r5
|
||||
jz 2f
|
||||
spt __VQ_IDLE_ENTER(%r3)
|
||||
2: # account system time going idle
|
||||
mvc __CLOCK_IDLE_ENTER(8,%r2),__CLOCK_IDLE_EXIT(%r2)
|
||||
mvc __TIMER_IDLE_ENTER(8,%r2),__TIMER_IDLE_EXIT(%r3)
|
||||
1: # account system time going idle
|
||||
lm %r9,%r10,__LC_STEAL_TIMER
|
||||
ADD64 %r9,%r10,__IDLE_ENTER(%r2)
|
||||
ADD64 %r9,%r10,__CLOCK_IDLE_ENTER(%r2)
|
||||
SUB64 %r9,%r10,__LC_LAST_UPDATE_CLOCK
|
||||
stm %r9,%r10,__LC_STEAL_TIMER
|
||||
mvc __LC_LAST_UPDATE_CLOCK(8),__IDLE_EXIT(%r2)
|
||||
mvc __LC_LAST_UPDATE_CLOCK(8),__CLOCK_IDLE_EXIT(%r2)
|
||||
lm %r9,%r10,__LC_SYSTEM_TIMER
|
||||
ADD64 %r9,%r10,__LC_LAST_UPDATE_TIMER
|
||||
SUB64 %r9,%r10,__VQ_IDLE_ENTER(%r3)
|
||||
SUB64 %r9,%r10,__TIMER_IDLE_ENTER(%r2)
|
||||
stm %r9,%r10,__LC_SYSTEM_TIMER
|
||||
mvc __LC_LAST_UPDATE_TIMER(8),__VQ_IDLE_EXIT(%r3)
|
||||
mvc __LC_LAST_UPDATE_TIMER(8),__TIMER_IDLE_EXIT(%r2)
|
||||
# prepare return psw
|
||||
n %r8,BASED(cleanup_idle_wait) # clear wait state bit
|
||||
l %r9,24(%r11) # return from psw_idle
|
||||
|
@@ -5,7 +5,6 @@
|
||||
#include <linux/signal.h>
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/cputime.h>
|
||||
#include <asm/timer.h>
|
||||
|
||||
extern void (*pgm_check_table[128])(struct pt_regs *);
|
||||
extern void *restart_stack;
|
||||
@@ -17,8 +16,7 @@ void io_int_handler(void);
|
||||
void mcck_int_handler(void);
|
||||
void restart_int_handler(void);
|
||||
void restart_call_handler(void);
|
||||
void psw_idle(struct s390_idle_data *, struct vtimer_queue *,
|
||||
unsigned long, int);
|
||||
void psw_idle(struct s390_idle_data *, unsigned long);
|
||||
|
||||
asmlinkage long do_syscall_trace_enter(struct pt_regs *regs);
|
||||
asmlinkage void do_syscall_trace_exit(struct pt_regs *regs);
|
||||
|
@@ -1,8 +1,7 @@
|
||||
/*
|
||||
* arch/s390/kernel/entry64.S
|
||||
* S390 low-level entry points.
|
||||
*
|
||||
* Copyright (C) IBM Corp. 1999,2012
|
||||
* Copyright IBM Corp. 1999, 2012
|
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
|
||||
* Hartmut Penner (hp@de.ibm.com),
|
||||
* Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com),
|
||||
@@ -18,6 +17,7 @@
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/sigp.h>
|
||||
|
||||
__PT_R0 = __PT_GPRS
|
||||
__PT_R1 = __PT_GPRS + 8
|
||||
@@ -642,15 +642,11 @@ ext_skip:
|
||||
* Load idle PSW. The second "half" of this function is in cleanup_idle.
|
||||
*/
|
||||
ENTRY(psw_idle)
|
||||
stg %r4,__SF_EMPTY(%r15)
|
||||
stg %r3,__SF_EMPTY(%r15)
|
||||
larl %r1,psw_idle_lpsw+4
|
||||
stg %r1,__SF_EMPTY+8(%r15)
|
||||
larl %r1,.Lvtimer_max
|
||||
STCK __IDLE_ENTER(%r2)
|
||||
ltr %r5,%r5
|
||||
stpt __VQ_IDLE_ENTER(%r3)
|
||||
jz psw_idle_lpsw
|
||||
spt 0(%r1)
|
||||
STCK __CLOCK_IDLE_ENTER(%r2)
|
||||
stpt __TIMER_IDLE_ENTER(%r2)
|
||||
psw_idle_lpsw:
|
||||
lpswe __SF_EMPTY(%r15)
|
||||
br %r14
|
||||
@@ -750,15 +746,17 @@ ENTRY(restart_int_handler)
|
||||
mvc __PT_PSW(16,%r15),__LC_RST_OLD_PSW # store restart old psw
|
||||
aghi %r15,-STACK_FRAME_OVERHEAD # create stack frame on stack
|
||||
xc 0(STACK_FRAME_OVERHEAD,%r15),0(%r15)
|
||||
lmg %r1,%r3,__LC_RESTART_FN # load fn, parm & source cpu
|
||||
lg %r1,__LC_RESTART_FN # load fn, parm & source cpu
|
||||
lg %r2,__LC_RESTART_DATA
|
||||
lg %r3,__LC_RESTART_SOURCE
|
||||
ltgr %r3,%r3 # test source cpu address
|
||||
jm 1f # negative -> skip source stop
|
||||
0: sigp %r4,%r3,1 # sigp sense to source cpu
|
||||
0: sigp %r4,%r3,SIGP_SENSE # sigp sense to source cpu
|
||||
brc 10,0b # wait for status stored
|
||||
1: basr %r14,%r1 # call function
|
||||
stap __SF_EMPTY(%r15) # store cpu address
|
||||
llgh %r3,__SF_EMPTY(%r15)
|
||||
2: sigp %r4,%r3,5 # sigp stop to current cpu
|
||||
2: sigp %r4,%r3,SIGP_STOP # sigp stop to current cpu
|
||||
brc 2,2b
|
||||
3: j 3b
|
||||
|
||||
@@ -916,33 +914,28 @@ cleanup_io_restore_insn:
|
||||
|
||||
cleanup_idle:
|
||||
# copy interrupt clock & cpu timer
|
||||
mvc __IDLE_EXIT(8,%r2),__LC_INT_CLOCK
|
||||
mvc __VQ_IDLE_EXIT(8,%r3),__LC_ASYNC_ENTER_TIMER
|
||||
mvc __CLOCK_IDLE_EXIT(8,%r2),__LC_INT_CLOCK
|
||||
mvc __TIMER_IDLE_EXIT(8,%r2),__LC_ASYNC_ENTER_TIMER
|
||||
cghi %r11,__LC_SAVE_AREA_ASYNC
|
||||
je 0f
|
||||
mvc __IDLE_EXIT(8,%r2),__LC_MCCK_CLOCK
|
||||
mvc __VQ_IDLE_EXIT(8,%r3),__LC_MCCK_ENTER_TIMER
|
||||
mvc __CLOCK_IDLE_EXIT(8,%r2),__LC_MCCK_CLOCK
|
||||
mvc __TIMER_IDLE_EXIT(8,%r2),__LC_MCCK_ENTER_TIMER
|
||||
0: # check if stck & stpt have been executed
|
||||
clg %r9,BASED(cleanup_idle_insn)
|
||||
jhe 1f
|
||||
mvc __IDLE_ENTER(8,%r2),__IDLE_EXIT(%r2)
|
||||
mvc __VQ_IDLE_ENTER(8,%r3),__VQ_IDLE_EXIT(%r3)
|
||||
j 2f
|
||||
1: # check if the cpu timer has been reprogrammed
|
||||
ltr %r5,%r5
|
||||
jz 2f
|
||||
spt __VQ_IDLE_ENTER(%r3)
|
||||
2: # account system time going idle
|
||||
mvc __CLOCK_IDLE_ENTER(8,%r2),__CLOCK_IDLE_EXIT(%r2)
|
||||
mvc __TIMER_IDLE_ENTER(8,%r2),__TIMER_IDLE_EXIT(%r2)
|
||||
1: # account system time going idle
|
||||
lg %r9,__LC_STEAL_TIMER
|
||||
alg %r9,__IDLE_ENTER(%r2)
|
||||
alg %r9,__CLOCK_IDLE_ENTER(%r2)
|
||||
slg %r9,__LC_LAST_UPDATE_CLOCK
|
||||
stg %r9,__LC_STEAL_TIMER
|
||||
mvc __LC_LAST_UPDATE_CLOCK(8),__IDLE_EXIT(%r2)
|
||||
mvc __LC_LAST_UPDATE_CLOCK(8),__CLOCK_IDLE_EXIT(%r2)
|
||||
lg %r9,__LC_SYSTEM_TIMER
|
||||
alg %r9,__LC_LAST_UPDATE_TIMER
|
||||
slg %r9,__VQ_IDLE_ENTER(%r3)
|
||||
slg %r9,__TIMER_IDLE_ENTER(%r2)
|
||||
stg %r9,__LC_SYSTEM_TIMER
|
||||
mvc __LC_LAST_UPDATE_TIMER(8),__VQ_IDLE_EXIT(%r3)
|
||||
mvc __LC_LAST_UPDATE_TIMER(8),__TIMER_IDLE_EXIT(%r2)
|
||||
# prepare return psw
|
||||
nihh %r8,0xfffd # clear wait state bit
|
||||
lg %r9,48(%r11) # return from psw_idle
|
||||
@@ -958,8 +951,6 @@ cleanup_idle_insn:
|
||||
.quad __critical_start
|
||||
.Lcritical_length:
|
||||
.quad __critical_end - __critical_start
|
||||
.Lvtimer_max:
|
||||
.quad 0x7fffffffffffffff
|
||||
|
||||
|
||||
#if defined(CONFIG_KVM) || defined(CONFIG_KVM_MODULE)
|
||||
@@ -974,7 +965,6 @@ ENTRY(sie64a)
|
||||
stg %r3,__SF_EMPTY+8(%r15) # save guest register save area
|
||||
xc __SF_EMPTY+16(8,%r15),__SF_EMPTY+16(%r15) # host id == 0
|
||||
lmg %r0,%r13,0(%r3) # load guest gprs 0-13
|
||||
lg %r14,__LC_THREAD_INFO # pointer thread_info struct
|
||||
sie_loop:
|
||||
lg %r14,__LC_THREAD_INFO # pointer thread_info struct
|
||||
tm __TI_flags+7(%r14),_TIF_EXIT_SIE
|
||||
|
@@ -1,7 +1,5 @@
|
||||
/*
|
||||
* arch/s390/kernel/head31.S
|
||||
*
|
||||
* Copyright (C) IBM Corp. 2005,2010
|
||||
* Copyright IBM Corp. 2005, 2010
|
||||
*
|
||||
* Author(s): Hartmut Penner <hp@de.ibm.com>
|
||||
* Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user