linux-hardened/include/asm-s390
Carsten Otte ba5c1e9b6c KVM: s390: interrupt subsystem, cpu timer, waitpsw
This patch contains the s390 interrupt subsystem (similar to in kernel apic)
including timer interrupts (similar to in-kernel-pit) and enabled wait
(similar to in kernel hlt).

In order to achieve that, this patch also introduces intercept handling
for instruction intercepts, and it implements load control instructions.

This patch introduces an ioctl KVM_S390_INTERRUPT which is valid for both
the vm file descriptors and the vcpu file descriptors. In case this ioctl is
issued against a vm file descriptor, the interrupt is considered floating.
Floating interrupts may be delivered to any virtual cpu in the configuration.

The following interrupts are supported:
SIGP STOP       - interprocessor signal that stops a remote cpu
SIGP SET PREFIX - interprocessor signal that sets the prefix register of a
                  (stopped) remote cpu
INT EMERGENCY   - interprocessor interrupt, usually used to signal need_reshed
                  and for smp_call_function() in the guest.
PROGRAM INT     - exception during program execution such as page fault, illegal
                  instruction and friends
RESTART         - interprocessor signal that starts a stopped cpu
INT VIRTIO      - floating interrupt for virtio signalisation
INT SERVICE     - floating interrupt for signalisations from the system
                  service processor

struct kvm_s390_interrupt, which is submitted as ioctl parameter when injecting
an interrupt, also carrys parameter data for interrupts along with the interrupt
type. Interrupts on s390 usually have a state that represents the current
operation, or identifies which device has caused the interruption on s390.

kvm_s390_handle_wait() does handle waitpsw in two flavors: in case of a
disabled wait (that is, disabled for interrupts), we exit to userspace. In case
of an enabled wait we set up a timer that equals the cpu clock comparator value
and sleep on a wait queue.

[christian: change virtio interrupt to 0x2603]

Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
2008-04-27 12:00:44 +03:00
..
airq.h [S390] cio: Extend adapter interrupt interface. 2008-01-26 14:11:00 +01:00
appldata.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
atomic.h [S390] Change atomic_read/set to inline functions with barrier semantics. 2007-08-22 13:51:49 +02:00
auxvec.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
bitops.h generic: implement __fls on all 64-bit archs 2008-04-26 19:21:16 +02:00
bug.h Fix WARN_ON() on bitfield ops for all other archs 2007-08-01 20:45:38 -07:00
bugs.h [S390] check_bugs() should be inline. 2007-03-05 23:35:50 +01:00
byteorder.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
cache.h [S390] Get rid of ARCH_KMALLOC_MINALIGN. 2007-10-12 16:13:07 +02:00
cacheflush.h [S390] DEBUG_PAGEALLOC support for s390. 2008-02-05 16:50:54 +01:00
ccwdev.h [S390] cio: Introduce ccw_bus_type.shutdown. 2007-10-12 16:13:01 +02:00
ccwgroup.h [S390] cio: Add shutdown callback for ccwgroup. 2008-02-05 16:50:54 +01:00
checksum.h [S390] Fix TCP/UDP pseudo header checksum computation. 2007-03-26 20:43:46 +02:00
chpid.h [S390] cio: Channel-path configure function. 2007-04-27 16:01:39 +02:00
cio.h [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
cmb.h [S390] cio: Kerneldoc comments for cmf. 2007-10-12 16:12:59 +02:00
compat.h asm-*/compat.h: fix typo in comment 2008-02-03 16:32:51 +02:00
cpcmd.h [S390] cpcmd <-> __cpcmd calling issues 2006-12-04 15:40:30 +01:00
cpu.h [S390] Convert monitor calls to function calls. 2008-04-17 07:47:05 +02:00
cputime.h taskstats scaled time cleanup 2008-02-06 10:41:00 -08:00
current.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dasd.h [S390] include/asm-s390/: Spelling fixes 2008-01-26 14:11:25 +01:00
debug.h [S390] Add debug_register_mode() function to debug feature API 2008-04-17 07:47:03 +02:00
delay.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
device.h Driver core: add dev_archdata to struct device 2006-12-01 14:52:01 -08:00
diag.h [S390] vmur: fix diag14 exceptions with addresses > 2GB. 2007-08-22 13:51:47 +02:00
div64.h [S390] __div64_32 for 31 bit. 2006-09-28 16:55:39 +02:00
dma.h [S390] empty function defines. 2006-09-20 15:58:51 +02:00
ebcdic.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
elf.h [S390] dynamic page tables. 2008-02-09 18:24:41 +01:00
emergency-restart.h [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
errno.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
etr.h [S390] ETR support. 2007-02-05 21:18:19 +01:00
extmem.h [S390] Remove code duplication from monreader / dcssblk. 2008-04-17 07:47:07 +02:00
fb.h fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
fcntl.h [PATCH] Clean up struct flock64 definitions 2005-09-07 16:57:38 -07:00
futex.h [S390] don't call handle_mm_fault() if in an atomic context. 2007-01-09 10:18:50 +01:00
hardirq.h [S390] Convert s390 to GENERIC_CLOCKEVENTS. 2008-04-17 07:47:05 +02:00
idals.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
io.h [S390] remove __io_virt and mmiowb. 2007-02-12 15:49:57 +01:00
ioctl.h [PATCH] Generic ioctl.h 2006-01-10 08:01:34 -08:00
ioctls.h tty: s390 support for termios2. 2008-02-08 09:22:24 -08:00
ipcbuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipl.h [S390] Use diag308 subcodes 3 and 6 for reboot and dump when possible. 2008-01-26 14:11:24 +01:00
irq.h [PATCH] Make touch_nmi_watchdog imply touch_softlockup_watchdog on all archs 2006-09-29 09:18:05 -07:00
irq_regs.h [S390] irq change build fixes. 2006-10-06 16:38:35 +02:00
irqflags.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
Kbuild KVM: s390: arch backend for the kvm kernel module 2008-04-27 12:00:42 +03:00
kdebug.h x86: optimize page faults like all other achitectures and kill notifier cruft 2007-10-16 09:42:50 -07:00
kexec.h Unexport asm/page.h 2008-02-07 08:42:30 -08:00
kmap_types.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kprobes.h Kprobes: indicate kretprobe support in Kconfig 2008-03-04 16:35:11 -08:00
kvm.h KVM: s390: arch backend for the kvm kernel module 2008-04-27 12:00:42 +03:00
kvm_host.h KVM: s390: interrupt subsystem, cpu timer, waitpsw 2008-04-27 12:00:44 +03:00
kvm_para.h KVM: s390: arch backend for the kvm kernel module 2008-04-27 12:00:42 +03:00
linkage.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
local.h [S390] local_t cleanup : use asm-generic/local.h. 2007-02-21 10:55:55 +01:00
lowcore.h s390: KVM preparation: address of the 64bit extint parm in lowcore 2008-04-27 12:00:41 +03:00
mathemu.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mman.h [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
mmu.h s390: KVM preparation: provide hook to enable pgstes in user pagetable 2008-04-27 12:00:40 +03:00
mmu_context.h s390: KVM preparation: provide hook to enable pgstes in user pagetable 2008-04-27 12:00:40 +03:00
module.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
monwriter.h [S390] Linux API for writing z/VM APPLDATA Monitor records. 2006-09-20 15:59:34 +02:00
msgbuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mutex.h [PATCH] mutex subsystem, add default include/asm-*/mutex.h files 2006-01-09 15:59:19 -08:00
namei.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
page.h [S390] 1K/2K page table pages. 2008-02-09 18:24:40 +01:00
param.h [S390] Kconfig: use common Kconfig files for s390. 2007-05-10 15:46:08 +02:00
pci.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
percpu.h s390: use generic percpu linux-2.6.git 2008-01-30 23:27:58 +01:00
pgalloc.h [S390] dynamic page tables. 2008-02-09 18:24:41 +01:00
pgtable.h s390: KVM preparation: host memory management changes for s390 kvm 2008-04-27 12:00:40 +03:00
poll.h Consolidate asm/poll.h 2007-05-11 08:29:34 -07:00
posix_types.h [PATCH] FD_ZERO build fix 2007-01-11 18:18:22 -08:00
processor.h [S390] kernel: show last breaking-event-address on oops 2008-04-17 07:47:07 +02:00
ptrace.h [S390] single-step cleanup 2008-01-26 14:11:27 +01:00
qdio.h [S390] include/asm-s390/: Spelling fixes 2008-01-26 14:11:25 +01:00
qeth.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
reset.h [S390] Convert memory detection into C code. 2007-02-05 21:18:37 +01:00
resource.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rwsem.h [S390] Use new style spinlock initializer in __RWSEM_INITIALIZER. 2008-01-26 14:11:15 +01:00
s390_ext.h [S390] remove packed attribute from ext_int_info_t. 2007-10-12 16:13:07 +02:00
s390_rdev.h [PATCH] s390: email-address change 2006-01-14 18:27:10 -08:00
scatterlist.h Add CONFIG_DEBUG_SG sg validation 2007-10-22 21:20:03 +02:00
sclp.h [S390] Get rid of additional_cpus kernel parameter. 2008-01-26 14:11:15 +01:00
sections.h [S390] nss: Free unused memory in kernel image. 2007-02-21 10:55:37 +01:00
segment.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
semaphore.h Generic semaphore implementation 2008-04-17 10:42:34 -04:00
sembuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.h [S390] zfcpdump support. 2007-04-27 16:01:44 +02:00
sfp-machine.h [S390] Bogomips calculation for 64 bit. 2007-07-10 11:24:47 +02:00
sfp-util.h [S390] Bogomips calculation for 64 bit. 2007-07-10 11:24:47 +02:00
shmbuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
shmparam.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sigcontext.h [PATCH] s390: sigcontext.h vs __user 2006-01-14 18:27:08 -08:00
siginfo.h [PATCH] consolidate SIGEV_PAD_SIZE 2005-05-01 08:59:08 -07:00
signal.h [PATCH] irq-flags: S390: Use the new IRQF_ constants 2006-07-02 13:58:48 -07:00
sigp.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
smp.h [S390] Vertical cpu management. 2008-04-17 07:47:01 +02:00
socket.h [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
sockios.h [NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution 2007-04-25 22:24:04 -07:00
spinlock.h [S390] do local_irq_restore while spinning in spin_lock_irqsave. 2008-01-26 14:11:31 +01:00
spinlock_types.h [S390] Remove owner_pc member from raw_spinlock_t. 2008-01-26 14:11:14 +01:00
stat.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
statfs.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
string.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
suspend.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sysinfo.h [S390] Add new fields for System z10 to /proc/sysinfo 2008-04-17 07:47:01 +02:00
system.h [S390] Export stfle. 2008-04-17 07:47:01 +02:00
tape390.h [S390] Add crypto support for 3592 tape devices 2007-02-05 21:18:26 +01:00
termbits.h tty: s390 support for termios2. 2008-02-08 09:22:24 -08:00
termios.h tty: s390 support for termios2. 2008-02-08 09:22:24 -08:00
thread_info.h [S390] preempt_count initialization. 2006-06-29 15:02:47 +02:00
timer.h [S390] Get rid of a lot of sparse warnings. 2007-02-05 21:16:47 +01:00
timex.h [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
tlb.h [S390] dynamic page tables. 2008-02-09 18:24:41 +01:00
tlbflush.h [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
todclk.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
topology.h [S390] Vertical cpu management. 2008-04-17 07:47:01 +02:00
types.h remove strict ansi check from __u64 in asm/types.h 2007-10-17 08:42:53 -07:00
uaccess.h [S390] noexec protection 2007-02-05 21:18:17 +01:00
ucontext.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unaligned.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unistd.h [S390] Wire up new timerfd syscalls. 2008-02-09 18:24:37 +01:00
user.h Sanitize the type of struct user.u_ar0 2008-02-07 08:42:30 -08:00
vtoc.h Use __uXX types for S390 DASD volume label definitions which are user-visible 2006-05-04 01:18:33 +01:00
xor.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
zcrypt.h [S390] include/asm-s390/: Spelling fixes 2008-01-26 14:11:25 +01:00