1 /* Copyright (c) 2018 Citrix Systems Inc. */ 2 3 #ifndef X86_HVM_VIRIDIAN_PRIVATE_H 4 #define X86_HVM_VIRIDIAN_PRIVATE_H 5 6 #include <asm/hvm/save.h> 7 #include <asm/hvm/viridian.h> 8 #include <public/hvm/params.h> 9 10 int viridian_synic_wrmsr(struct vcpu *v, uint32_t idx, uint64_t val); 11 int viridian_synic_rdmsr(const struct vcpu *v, uint32_t idx, uint64_t *val); 12 13 bool viridian_synic_deliver_timer_msg(struct vcpu *v, unsigned int sintx, 14 unsigned int index, 15 uint64_t expiration, 16 uint64_t delivery); 17 18 int viridian_synic_vcpu_init(const struct vcpu *v); 19 int viridian_synic_domain_init(const struct domain *d); 20 21 void viridian_synic_vcpu_deinit(const struct vcpu *v); 22 void viridian_synic_domain_deinit(const struct domain *d); 23 24 void viridian_synic_save_vcpu_ctxt(const struct vcpu *v, 25 struct hvm_viridian_vcpu_context *ctxt); 26 void viridian_synic_load_vcpu_ctxt( 27 struct vcpu *v, const struct hvm_viridian_vcpu_context *ctxt); 28 29 void viridian_synic_save_domain_ctxt( 30 const struct domain *d, struct hvm_viridian_domain_context *ctxt); 31 void viridian_synic_load_domain_ctxt( 32 struct domain *d, const struct hvm_viridian_domain_context *ctxt); 33 34 int viridian_time_wrmsr(struct vcpu *v, uint32_t idx, uint64_t val); 35 int viridian_time_rdmsr(const struct vcpu *v, uint32_t idx, uint64_t *val); 36 37 void viridian_time_poll_timers(struct vcpu *v); 38 39 int viridian_time_vcpu_init(struct vcpu *v); 40 int viridian_time_domain_init(const struct domain *d); 41 42 void viridian_time_vcpu_deinit(const struct vcpu *v); 43 void viridian_time_domain_deinit(const struct domain *d); 44 45 void viridian_time_save_vcpu_ctxt( 46 const struct vcpu *v, struct hvm_viridian_vcpu_context *ctxt); 47 void viridian_time_load_vcpu_ctxt( 48 struct vcpu *v, const struct hvm_viridian_vcpu_context *ctxt); 49 50 void viridian_time_save_domain_ctxt( 51 const struct domain *d, struct hvm_viridian_domain_context *ctxt); 52 void viridian_time_load_domain_ctxt( 53 struct domain *d, const struct hvm_viridian_domain_context *ctxt); 54 55 void viridian_dump_guest_page(const struct vcpu *v, const char *name, 56 const struct viridian_page *vp); 57 void viridian_map_guest_page(struct domain *d, struct viridian_page *vp); 58 void viridian_unmap_guest_page(struct viridian_page *vp); 59 60 #endif /* X86_HVM_VIRIDIAN_PRIVATE_H */ 61 62 /* 63 * Local variables: 64 * mode: C 65 * c-file-style: "BSD" 66 * c-basic-offset: 4 67 * tab-width: 4 68 * indent-tabs-mode: nil 69 * End: 70 */ 71