1f16bbb9bSDavid Hildenbrand /* 2f16bbb9bSDavid Hildenbrand * QEMU KVM support -- s390x specific functions. 3f16bbb9bSDavid Hildenbrand * 4f16bbb9bSDavid Hildenbrand * Copyright (c) 2009 Ulrich Hecht 5f16bbb9bSDavid Hildenbrand * 6f16bbb9bSDavid Hildenbrand * This work is licensed under the terms of the GNU GPL, version 2 or later. 7f16bbb9bSDavid Hildenbrand * See the COPYING file in the top-level directory. 8f16bbb9bSDavid Hildenbrand */ 9f16bbb9bSDavid Hildenbrand 10f16bbb9bSDavid Hildenbrand #ifndef KVM_S390X_H 11f16bbb9bSDavid Hildenbrand #define KVM_S390X_H 12f16bbb9bSDavid Hildenbrand 138046f374SDavid Hildenbrand #include "cpu-qom.h" 148046f374SDavid Hildenbrand 15f16bbb9bSDavid Hildenbrand struct kvm_s390_irq; 16f16bbb9bSDavid Hildenbrand 17e6505d53SDavid Hildenbrand void kvm_s390_floating_interrupt_legacy(struct kvm_s390_irq *irq); 18f16bbb9bSDavid Hildenbrand void kvm_s390_vcpu_interrupt(S390CPU *cpu, struct kvm_s390_irq *irq); 19f16bbb9bSDavid Hildenbrand void kvm_s390_access_exception(S390CPU *cpu, uint16_t code, uint64_t te_code); 20f16bbb9bSDavid Hildenbrand int kvm_s390_mem_op(S390CPU *cpu, vaddr addr, uint8_t ar, void *hostbuf, 21f16bbb9bSDavid Hildenbrand int len, bool is_write); 221cca8265SJanosch Frank int kvm_s390_mem_op_pv(S390CPU *cpu, vaddr addr, void *hostbuf, int len, 231cca8265SJanosch Frank bool is_write); 24f16bbb9bSDavid Hildenbrand void kvm_s390_program_interrupt(S390CPU *cpu, uint16_t code); 25f16bbb9bSDavid Hildenbrand int kvm_s390_set_cpu_state(S390CPU *cpu, uint8_t cpu_state); 26f16bbb9bSDavid Hildenbrand void kvm_s390_vcpu_interrupt_pre_save(S390CPU *cpu); 27f16bbb9bSDavid Hildenbrand int kvm_s390_vcpu_interrupt_post_load(S390CPU *cpu); 28c3347ed0SJanosch Frank int kvm_s390_get_hpage_1m(void); 29ad3b2e69SJanosch Frank int kvm_s390_get_protected_dump(void); 30f16bbb9bSDavid Hildenbrand int kvm_s390_get_ri(void); 31dd1d5fd9SMatthew Rosato int kvm_s390_get_zpci_op(void); 32f16bbb9bSDavid Hildenbrand int kvm_s390_get_clock(uint8_t *tod_high, uint64_t *tod_clock); 337edd4a49SCollin L. Walling int kvm_s390_get_clock_ext(uint8_t *tod_high, uint64_t *tod_clock); 344ab6a1feSDavid Hildenbrand int kvm_s390_set_clock(uint8_t tod_high, uint64_t tod_clock); 354ab6a1feSDavid Hildenbrand int kvm_s390_set_clock_ext(uint8_t tod_high, uint64_t tod_clock); 36f16bbb9bSDavid Hildenbrand void kvm_s390_enable_css_support(S390CPU *cpu); 37f16bbb9bSDavid Hildenbrand int kvm_s390_assign_subch_ioeventfd(EventNotifier *notifier, uint32_t sch, 38f16bbb9bSDavid Hildenbrand int vq, bool assign); 39f16bbb9bSDavid Hildenbrand int kvm_s390_cmma_active(void); 40f16bbb9bSDavid Hildenbrand void kvm_s390_cmma_reset(void); 41b91a0394SJanosch Frank void kvm_s390_reset_vcpu_clear(S390CPU *cpu); 42b91a0394SJanosch Frank void kvm_s390_reset_vcpu_normal(S390CPU *cpu); 43b91a0394SJanosch Frank void kvm_s390_reset_vcpu_initial(S390CPU *cpu); 44f16bbb9bSDavid Hildenbrand int kvm_s390_set_mem_limit(uint64_t new_limit, uint64_t *hw_limit); 459138977bSDavid Hildenbrand void kvm_s390_set_max_pagesize(uint64_t pagesize, Error **errp); 46f16bbb9bSDavid Hildenbrand void kvm_s390_crypto_reset(void); 47eabcea18SDavid Hildenbrand void kvm_s390_restart_interrupt(S390CPU *cpu); 48eabcea18SDavid Hildenbrand void kvm_s390_stop_interrupt(S390CPU *cpu); 49e2c6cd56SCollin Walling void kvm_s390_set_diag318(CPUState *cs, uint64_t diag318_info); 50*3d6e75f4SPierre Morel int kvm_s390_topology_set_mtcr(uint64_t attr); 51f16bbb9bSDavid Hildenbrand 52f16bbb9bSDavid Hildenbrand #endif /* KVM_S390X_H */ 53