|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86/svm: Clean up vmcbcleanbits_t handling
On Tue, May 05, 2020 at 06:32:50PM +0100, Andrew Cooper wrote:
> Rework the vmcbcleanbits_t definitons to use bool, drop 'fields' from the
> namespace, position the comments in an unambiguous position, and include the
> bit position.
>
> In svm_vmexit_handler(), don't bother conditionally writing ~0 or 0 based on
> hardware support. The field was entirely unused and ignored on older
> hardware (and we're already setting reserved cleanbits anyway).
>
> In nsvm_vmcb_prepare4vmrun(), simplify the logic massivly by dropping the
^e
> vcleanbit_set() macro using a vmcbcleanbits_t local variable which only gets
> filled in the case that clean bits were valid previously. Fix up the style on
> impacted lines.
>
> No practical change in behaviour.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
> diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
> index 5950e4d52b..aeebeaf873 100644
> --- a/xen/arch/x86/hvm/svm/svm.c
> +++ b/xen/arch/x86/hvm/svm/svm.c
> @@ -345,7 +345,7 @@ static int svm_vmcb_restore(struct vcpu *v, struct
> hvm_hw_cpu *c)
> else
> vmcb->event_inj.raw = 0;
>
> - vmcb->cleanbits.bytes = 0;
> + vmcb->cleanbits.raw = 0;
> paging_update_paging_modes(v);
>
> return 0;
> @@ -693,12 +693,12 @@ static void svm_set_segment_register(struct vcpu *v,
> enum x86_segment seg,
> case x86_seg_ds:
> case x86_seg_es:
> case x86_seg_ss: /* cpl */
> - vmcb->cleanbits.fields.seg = 0;
> + vmcb->cleanbits.seg = 0;
> break;
>
> case x86_seg_gdtr:
> case x86_seg_idtr:
> - vmcb->cleanbits.fields.dt = 0;
> + vmcb->cleanbits.dt = 0;
Nit: using false here (and above) would be better, since the fields
are now booleans.
Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |