[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 5/5] x86: Rework MSR_TSC_AUX handling from scratch.

On Tue, Feb 20, 2018 at 11:58:43AM +0000, Andrew Cooper wrote:
> There are many problems with MSR_TSC_AUX handling.
> To being with, the RDPID instruction reads MSR_TSC_AUX, but it is only the

> RDTSCP feature which enumerates the MSR.  Therefore, RDPID functionally
> depends on RDTSCP.
> For PV guests, we hide RDTSCP but advertise RDPID.  We also silently drop
> writes to MSR_TSC_AUX, which is very antisocial.  Therefore, enable RDTSCP for
> PV guests, which in turn allows RDPID to work.
> To support RDTSCP properly for PV guests, the MSR_TSC_AUX handling is moved
> into the generic MSR policy infrastructure, and becomes common.  One
> improvement is that we will now reject invalid values, rather than silently
> truncating an accepting them.  This also causes the emulator to reject RDTSCP

> for guests without the features.
> @@ -1284,7 +1285,18 @@ long arch_do_domctl(
>                  for ( j = 0; j < ARRAY_SIZE(msrs_to_send); ++j )
>                  {
>                      uint64_t val;
> -                    int rc = guest_rdmsr(v, msrs_to_send[j], &val);
> +                    int rc;
> +
> +                    /*
> +                     * Skip MSR_TSC_AUX if using TSC_MODE_PVRDTSCP.  In this
> +                     * case, the MSR is read-only, and should be rejected if
> +                     * seen on the restore side.
> +                     */
> +                    if ( msrs_to_send[j] == MSR_TSC_AUX &&
> +                         d->arch.tsc_mode == TSC_MODE_PVRDTSCP )
> +                        continue;

Shouldn't we increment incarnation and send it over to the remote end?
Or send the original value and let the remote increments it?

Frankly I'm not sure how guest is supposed to use that value, but
letting the receiving end restart at 0, which can end up using the same
incarnation as before seems conceptually wrong to me. The more so you
mention a lot of migration's in your previous patches.

This is not disagreeing with the point that IA32_TSC_AUX should be
read-only for PV guest.

And +1 for the unification of HVM and PV code for handling this.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.