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