1*67043607SCho, Yu-Chen /* 2*67043607SCho, Yu-Chen * QEMU KVM support -- s390x specific functions. 3*67043607SCho, Yu-Chen * 4*67043607SCho, Yu-Chen * Copyright (c) 2009 Ulrich Hecht 5*67043607SCho, Yu-Chen * 6*67043607SCho, Yu-Chen * This work is licensed under the terms of the GNU GPL, version 2 or later. 7*67043607SCho, Yu-Chen * See the COPYING file in the top-level directory. 8*67043607SCho, Yu-Chen */ 9*67043607SCho, Yu-Chen 10*67043607SCho, Yu-Chen #ifndef KVM_S390X_H 11*67043607SCho, Yu-Chen #define KVM_S390X_H 12*67043607SCho, Yu-Chen 13*67043607SCho, Yu-Chen #include "cpu-qom.h" 14*67043607SCho, Yu-Chen 15*67043607SCho, Yu-Chen struct kvm_s390_irq; 16*67043607SCho, Yu-Chen 17*67043607SCho, Yu-Chen void kvm_s390_floating_interrupt_legacy(struct kvm_s390_irq *irq); 18*67043607SCho, Yu-Chen void kvm_s390_vcpu_interrupt(S390CPU *cpu, struct kvm_s390_irq *irq); 19*67043607SCho, Yu-Chen void kvm_s390_access_exception(S390CPU *cpu, uint16_t code, uint64_t te_code); 20*67043607SCho, Yu-Chen int kvm_s390_mem_op(S390CPU *cpu, vaddr addr, uint8_t ar, void *hostbuf, 21*67043607SCho, Yu-Chen int len, bool is_write); 22*67043607SCho, Yu-Chen int kvm_s390_mem_op_pv(S390CPU *cpu, vaddr addr, void *hostbuf, int len, 23*67043607SCho, Yu-Chen bool is_write); 24*67043607SCho, Yu-Chen void kvm_s390_program_interrupt(S390CPU *cpu, uint16_t code); 25*67043607SCho, Yu-Chen int kvm_s390_set_cpu_state(S390CPU *cpu, uint8_t cpu_state); 26*67043607SCho, Yu-Chen void kvm_s390_vcpu_interrupt_pre_save(S390CPU *cpu); 27*67043607SCho, Yu-Chen int kvm_s390_vcpu_interrupt_post_load(S390CPU *cpu); 28*67043607SCho, Yu-Chen int kvm_s390_get_hpage_1m(void); 29*67043607SCho, Yu-Chen int kvm_s390_get_ri(void); 30*67043607SCho, Yu-Chen int kvm_s390_get_clock(uint8_t *tod_high, uint64_t *tod_clock); 31*67043607SCho, Yu-Chen int kvm_s390_get_clock_ext(uint8_t *tod_high, uint64_t *tod_clock); 32*67043607SCho, Yu-Chen int kvm_s390_set_clock(uint8_t tod_high, uint64_t tod_clock); 33*67043607SCho, Yu-Chen int kvm_s390_set_clock_ext(uint8_t tod_high, uint64_t tod_clock); 34*67043607SCho, Yu-Chen void kvm_s390_enable_css_support(S390CPU *cpu); 35*67043607SCho, Yu-Chen int kvm_s390_assign_subch_ioeventfd(EventNotifier *notifier, uint32_t sch, 36*67043607SCho, Yu-Chen int vq, bool assign); 37*67043607SCho, Yu-Chen int kvm_s390_cmma_active(void); 38*67043607SCho, Yu-Chen void kvm_s390_cmma_reset(void); 39*67043607SCho, Yu-Chen void kvm_s390_reset_vcpu_clear(S390CPU *cpu); 40*67043607SCho, Yu-Chen void kvm_s390_reset_vcpu_normal(S390CPU *cpu); 41*67043607SCho, Yu-Chen void kvm_s390_reset_vcpu_initial(S390CPU *cpu); 42*67043607SCho, Yu-Chen int kvm_s390_set_mem_limit(uint64_t new_limit, uint64_t *hw_limit); 43*67043607SCho, Yu-Chen void kvm_s390_set_max_pagesize(uint64_t pagesize, Error **errp); 44*67043607SCho, Yu-Chen void kvm_s390_crypto_reset(void); 45*67043607SCho, Yu-Chen void kvm_s390_restart_interrupt(S390CPU *cpu); 46*67043607SCho, Yu-Chen void kvm_s390_stop_interrupt(S390CPU *cpu); 47*67043607SCho, Yu-Chen void kvm_s390_set_diag318(CPUState *cs, uint64_t diag318_info); 48*67043607SCho, Yu-Chen 49*67043607SCho, Yu-Chen #endif /* KVM_S390X_H */ 50