linux/arch/s390/kvm/kvm-s390.h
<<
>>
Prefs
   1/*
   2 * kvm_s390.h -  definition for kvm on s390
   3 *
   4 * Copyright IBM Corp. 2008
   5 *
   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)
   8 * as published by the Free Software Foundation.
   9 *
  10 *    Author(s): Carsten Otte <cotte@de.ibm.com>
  11 *               Christian Borntraeger <borntraeger@de.ibm.com>
  12 */
  13
  14#ifndef ARCH_S390_KVM_S390_H
  15#define ARCH_S390_KVM_S390_H
  16
  17#include <linux/kvm.h>
  18#include <linux/kvm_host.h>
  19
  20typedef int (*intercept_handler_t)(struct kvm_vcpu *vcpu);
  21
  22int kvm_handle_sie_intercept(struct kvm_vcpu *vcpu);
  23
  24#define VM_EVENT(d_kvm, d_loglevel, d_string, d_args...)\
  25do { \
  26        debug_sprintf_event(d_kvm->arch.dbf, d_loglevel, d_string "\n", \
  27          d_args); \
  28} while (0)
  29
  30#define VCPU_EVENT(d_vcpu, d_loglevel, d_string, d_args...)\
  31do { \
  32        debug_sprintf_event(d_vcpu->kvm->arch.dbf, d_loglevel, \
  33          "%02d[%016lx-%016lx]: " d_string "\n", d_vcpu->vcpu_id, \
  34          d_vcpu->arch.sie_block->gpsw.mask, d_vcpu->arch.sie_block->gpsw.addr,\
  35          d_args); \
  36} while (0)
  37
  38static inline int __cpu_is_stopped(struct kvm_vcpu *vcpu)
  39{
  40        return atomic_read(&vcpu->arch.sie_block->cpuflags) & CPUSTAT_STOP_INT;
  41}
  42
  43int kvm_s390_handle_wait(struct kvm_vcpu *vcpu);
  44void kvm_s390_idle_wakeup(unsigned long data);
  45void kvm_s390_deliver_pending_interrupts(struct kvm_vcpu *vcpu);
  46int kvm_s390_inject_vm(struct kvm *kvm,
  47                struct kvm_s390_interrupt *s390int);
  48int kvm_s390_inject_vcpu(struct kvm_vcpu *vcpu,
  49                struct kvm_s390_interrupt *s390int);
  50int kvm_s390_inject_program_int(struct kvm_vcpu *vcpu, u16 code);
  51
  52/* implemented in priv.c */
  53int kvm_s390_handle_priv(struct kvm_vcpu *vcpu);
  54
  55/* implemented in sigp.c */
  56int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu);
  57
  58/* implemented in kvm-s390.c */
  59int __kvm_s390_vcpu_store_status(struct kvm_vcpu *vcpu,
  60                                 unsigned long addr);
  61/* implemented in diag.c */
  62int kvm_s390_handle_diag(struct kvm_vcpu *vcpu);
  63
  64#endif
  65