The 'viridian_vp_assist', 'viridian_hypercall_gpa' and 'viridian_reference_tsc' union types are identical in layout. The layout is also common throughout the specification [1].
This patch declares a common 'viridian_page_msr' type and converts the rest of the code to use that type for both the hypercall and VP assist pages. Also, rename 'viridian_guest_os_id' to 'viridian_guest_os_id_msr' since it also is a union representing an MSR value. No functional change. [1] https://github.com/MicrosoftDocs/Virtualization-Documentation/raw/live/tlfs/Hypervisor%20Top%20Level%20Functional%20Specification%20v5.0C.pdf Signed-off-by: Paul Durrant <paul.durr...@citrix.com> Reviewed-by: Roger Pau Monne <roger....@citrix.com> --- Cc: Jan Beulich <jbeul...@suse.com> Cc: Andrew Cooper <andrew.coop...@citrix.com> Cc: Wei Liu <wei.l...@citrix.com> --- xen/arch/x86/hvm/viridian/viridian.c | 8 ++++---- xen/include/asm-x86/hvm/viridian.h | 36 ++++++++---------------------------- 2 files changed, 12 insertions(+), 32 deletions(-) diff --git a/xen/arch/x86/hvm/viridian/viridian.c b/xen/arch/x86/hvm/viridian/viridian.c index f5f5fbcdfe..2dc86dd0f3 100644 --- a/xen/arch/x86/hvm/viridian/viridian.c +++ b/xen/arch/x86/hvm/viridian/viridian.c @@ -286,7 +286,7 @@ void cpuid_viridian_leaves(const struct vcpu *v, uint32_t leaf, static void dump_guest_os_id(const struct domain *d) { - const union viridian_guest_os_id *goi; + const union viridian_guest_os_id_msr *goi; goi = &d->arch.hvm.viridian.guest_os_id; @@ -300,7 +300,7 @@ static void dump_guest_os_id(const struct domain *d) static void dump_hypercall(const struct domain *d) { - const union viridian_hypercall_gpa *hg; + const union viridian_page_msr *hg; hg = &d->arch.hvm.viridian.hypercall_gpa; @@ -311,7 +311,7 @@ static void dump_hypercall(const struct domain *d) static void dump_vp_assist(const struct vcpu *v) { - const union viridian_vp_assist *va; + const union viridian_page_msr *va; va = &v->arch.hvm.viridian.vp_assist.msr; @@ -321,7 +321,7 @@ static void dump_vp_assist(const struct vcpu *v) static void dump_reference_tsc(const struct domain *d) { - const union viridian_reference_tsc *rt; + const union viridian_page_msr *rt; rt = &d->arch.hvm.viridian.reference_tsc; diff --git a/xen/include/asm-x86/hvm/viridian.h b/xen/include/asm-x86/hvm/viridian.h index f6008f9bdb..359fdf5a83 100644 --- a/xen/include/asm-x86/hvm/viridian.h +++ b/xen/include/asm-x86/hvm/viridian.h @@ -9,8 +9,9 @@ #ifndef __ASM_X86_HVM_VIRIDIAN_H__ #define __ASM_X86_HVM_VIRIDIAN_H__ -union viridian_vp_assist -{ uint64_t raw; +union viridian_page_msr +{ + uint64_t raw; struct { uint64_t enabled:1; @@ -22,14 +23,14 @@ union viridian_vp_assist struct viridian_vcpu { struct { - union viridian_vp_assist msr; + union viridian_page_msr msr; void *va; bool pending; } vp_assist; uint64_t crash_param[5]; }; -union viridian_guest_os_id +union viridian_guest_os_id_msr { uint64_t raw; struct @@ -43,16 +44,6 @@ union viridian_guest_os_id } fields; }; -union viridian_hypercall_gpa -{ uint64_t raw; - struct - { - uint64_t enabled:1; - uint64_t reserved_preserved:11; - uint64_t pfn:48; - } fields; -}; - struct viridian_time_ref_count { unsigned long flags; @@ -66,17 +57,6 @@ struct viridian_time_ref_count int64_t off; }; -union viridian_reference_tsc -{ - uint64_t raw; - struct - { - uint64_t enabled:1; - uint64_t reserved_preserved:11; - uint64_t pfn:48; - } fields; -}; - typedef struct _HV_REFERENCE_TSC_PAGE { uint32_t TscSequence; @@ -88,10 +68,10 @@ typedef struct _HV_REFERENCE_TSC_PAGE struct viridian_domain { - union viridian_guest_os_id guest_os_id; - union viridian_hypercall_gpa hypercall_gpa; + union viridian_guest_os_id_msr guest_os_id; + union viridian_page_msr hypercall_gpa; struct viridian_time_ref_count time_ref_count; - union viridian_reference_tsc reference_tsc; + union viridian_page_msr reference_tsc; }; void cpuid_viridian_leaves(const struct vcpu *v, uint32_t leaf, -- 2.11.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel