xref: /qemu/target/s390x/kvm/kvm_s390x.h (revision 3d6e75f4)
167043607SCho, Yu-Chen /*
267043607SCho, Yu-Chen  * QEMU KVM support -- s390x specific functions.
367043607SCho, Yu-Chen  *
467043607SCho, Yu-Chen  * Copyright (c) 2009 Ulrich Hecht
567043607SCho, Yu-Chen  *
667043607SCho, Yu-Chen  * This work is licensed under the terms of the GNU GPL, version 2 or later.
767043607SCho, Yu-Chen  * See the COPYING file in the top-level directory.
867043607SCho, Yu-Chen  */
967043607SCho, Yu-Chen 
1067043607SCho, Yu-Chen #ifndef KVM_S390X_H
1167043607SCho, Yu-Chen #define KVM_S390X_H
1267043607SCho, Yu-Chen 
1367043607SCho, Yu-Chen #include "cpu-qom.h"
1467043607SCho, Yu-Chen 
1567043607SCho, Yu-Chen struct kvm_s390_irq;
1667043607SCho, Yu-Chen 
1767043607SCho, Yu-Chen void kvm_s390_floating_interrupt_legacy(struct kvm_s390_irq *irq);
1867043607SCho, Yu-Chen void kvm_s390_vcpu_interrupt(S390CPU *cpu, struct kvm_s390_irq *irq);
1967043607SCho, Yu-Chen void kvm_s390_access_exception(S390CPU *cpu, uint16_t code, uint64_t te_code);
2067043607SCho, Yu-Chen int kvm_s390_mem_op(S390CPU *cpu, vaddr addr, uint8_t ar, void *hostbuf,
2167043607SCho, Yu-Chen                     int len, bool is_write);
2267043607SCho, Yu-Chen int kvm_s390_mem_op_pv(S390CPU *cpu, vaddr addr, void *hostbuf, int len,
2367043607SCho, Yu-Chen                        bool is_write);
2467043607SCho, Yu-Chen void kvm_s390_program_interrupt(S390CPU *cpu, uint16_t code);
2567043607SCho, Yu-Chen int kvm_s390_set_cpu_state(S390CPU *cpu, uint8_t cpu_state);
2667043607SCho, Yu-Chen void kvm_s390_vcpu_interrupt_pre_save(S390CPU *cpu);
2767043607SCho, Yu-Chen int kvm_s390_vcpu_interrupt_post_load(S390CPU *cpu);
2867043607SCho, Yu-Chen int kvm_s390_get_hpage_1m(void);
29ad3b2e69SJanosch Frank int kvm_s390_get_protected_dump(void);
3067043607SCho, Yu-Chen int kvm_s390_get_ri(void);
31dd1d5fd9SMatthew Rosato int kvm_s390_get_zpci_op(void);
3267043607SCho, Yu-Chen int kvm_s390_get_clock(uint8_t *tod_high, uint64_t *tod_clock);
3367043607SCho, Yu-Chen int kvm_s390_get_clock_ext(uint8_t *tod_high, uint64_t *tod_clock);
3467043607SCho, Yu-Chen int kvm_s390_set_clock(uint8_t tod_high, uint64_t tod_clock);
3567043607SCho, Yu-Chen int kvm_s390_set_clock_ext(uint8_t tod_high, uint64_t tod_clock);
3667043607SCho, Yu-Chen void kvm_s390_enable_css_support(S390CPU *cpu);
3767043607SCho, Yu-Chen int kvm_s390_assign_subch_ioeventfd(EventNotifier *notifier, uint32_t sch,
3867043607SCho, Yu-Chen                                     int vq, bool assign);
3967043607SCho, Yu-Chen int kvm_s390_cmma_active(void);
4067043607SCho, Yu-Chen void kvm_s390_cmma_reset(void);
4167043607SCho, Yu-Chen void kvm_s390_reset_vcpu_clear(S390CPU *cpu);
4267043607SCho, Yu-Chen void kvm_s390_reset_vcpu_normal(S390CPU *cpu);
4367043607SCho, Yu-Chen void kvm_s390_reset_vcpu_initial(S390CPU *cpu);
4467043607SCho, Yu-Chen int kvm_s390_set_mem_limit(uint64_t new_limit, uint64_t *hw_limit);
4567043607SCho, Yu-Chen void kvm_s390_set_max_pagesize(uint64_t pagesize, Error **errp);
4667043607SCho, Yu-Chen void kvm_s390_crypto_reset(void);
4767043607SCho, Yu-Chen void kvm_s390_restart_interrupt(S390CPU *cpu);
4867043607SCho, Yu-Chen void kvm_s390_stop_interrupt(S390CPU *cpu);
4967043607SCho, Yu-Chen void kvm_s390_set_diag318(CPUState *cs, uint64_t diag318_info);
503d6e75f4SPierre Morel int kvm_s390_topology_set_mtcr(uint64_t attr);
5167043607SCho, Yu-Chen 
5267043607SCho, Yu-Chen #endif /* KVM_S390X_H */
53