|
[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 03.09.2020 10:15, Roger Pau Monné wrote:
> On Wed, Sep 02, 2020 at 10:02:33PM +0100, Andrew Cooper wrote:
>> 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.
>
> Oh, unless I'm very confused the comment was already wrong, since
> svm_msr_write_intercept previous to this patch would return a #GP when
> trying to write to BU_CFG if the underlying MSR is not readable, so
> this just keeps the previous behavior.
>
> Looking at the original commit (338db98dd8d) it seems the intention
> was to only handle reads and let writes return a #GP?
I agree. And hence while moving it I think you want to also adjust
that comment.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |