|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 4/8] x86/svm: handle BU_CFG and BU_CFG2 with cases
On 01/09/2020 11:54, Roger Pau Monne wrote:
> @@ -1942,19 +1966,6 @@ static int svm_msr_read_intercept(unsigned int msr,
> uint64_t *msr_content)
> default:
> if ( rdmsr_safe(msr, *msr_content) == 0 )
> break;
> -
> - if ( boot_cpu_data.x86 == 0xf && msr == MSR_F10_BU_CFG )
> - {
> - /* Win2k8 x64 reads this MSR on revF chips, where it
> - * wasn't publically available; it uses a magic constant
> - * in %rdi as a password, which we don't have in
> - * rdmsr_safe(). Since we'll ignore the later writes,
> - * just use a plausible value here (the reset value from
> - * rev10h chips) if the real CPU didn't provide one. */
> - *msr_content = 0x0000000010200020ull;
> - break;
> - }
> -
> goto gpf;
> }
>
> @@ -2110,6 +2121,12 @@ static int svm_msr_write_intercept(unsigned int msr,
> uint64_t msr_content)
> nsvm->ns_msr_hsavepa = msr_content;
> break;
>
> + case MSR_F10_BU_CFG:
> + case MSR_F10_BU_CFG2:
> + if ( rdmsr_safe(msr, msr_content) )
> + goto gpf;
The comment you've moved depends on this not having this behaviour, as
you'll now hand #GP back to Win2k8 on its write.
Honestly, given that how obsolete both Win2k8 and K10's are, I'm
seriously tempted to suggest dropping this workaround entirely.
~Andrew
> + break;
> +
> case MSR_AMD64_TSC_RATIO:
> if ( msr_content & TSC_RATIO_RSVD_BITS )
> goto gpf;
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |