viridian: introduce struct viridian_page
authorPaul Durrant <paul.durrant@citrix.com>
Fri, 9 Nov 2018 10:40:12 +0000 (11:40 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 9 Nov 2018 10:40:12 +0000 (11:40 +0100)
commitb8f0767b438bb00b3bddb58dd0bb6001cff29d23
treecde95885315778553b6fb927bdd2869cc9871744
parent07ded9a515eb27765ca437167f5dc087901112de
viridian: introduce struct viridian_page

The 'vp_assist' page is currently an example of a guest page which needs to
be kept mapped throughout the life-time of a guest, but there are other
such examples in the specifiction [1]. This patch therefore introduces a
generic 'viridian_page' type and converts the current vp_assist/apic_assist
related code to use it. Subsequent patches implementing other enlightments
can then also make use of it.

This patch also renames the 'vp_assist_pending' field in struct
hvm_viridian_vcpu_context to 'apic_assist_pending' to more accurately
reflect its meaning. The term 'vp_assist' applies to the whole page rather
than just the EOI-avoidance enlightenment. New versons of the specification
have defined data structures for other enlightenments within the same page.

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.durrant@citrix.com>
Reviewed-by: Roger Pau Monne <roger.pau@citrix.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
tools/misc/xen-hvmctx.c
xen/arch/x86/hvm/viridian/private.h
xen/arch/x86/hvm/viridian/synic.c
xen/arch/x86/hvm/viridian/viridian.c
xen/include/asm-x86/hvm/viridian.h
xen/include/public/arch-x86/hvm/save.h