mirror of https://gitee.com/openkylin/linux.git
KVM: MTRR: handle MSR_MTRRcap in kvm_mtrr_get_msr
MSR_MTRRcap is a MTRR msr so move the handler to the common place, also add some comments to make the hard code more readable Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
ff53604b40
commit
eb839917a7
|
@ -199,6 +199,18 @@ int kvm_mtrr_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata)
|
||||||
{
|
{
|
||||||
u64 *p = (u64 *)&vcpu->arch.mtrr_state.fixed_ranges;
|
u64 *p = (u64 *)&vcpu->arch.mtrr_state.fixed_ranges;
|
||||||
|
|
||||||
|
/* MSR_MTRRcap is a readonly MSR. */
|
||||||
|
if (msr == MSR_MTRRcap) {
|
||||||
|
/*
|
||||||
|
* SMRR = 0
|
||||||
|
* WC = 1
|
||||||
|
* FIX = 1
|
||||||
|
* VCNT = KVM_NR_VAR_MTRR
|
||||||
|
*/
|
||||||
|
*pdata = 0x500 | KVM_NR_VAR_MTRR;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!msr_mtrr_valid(msr))
|
if (!msr_mtrr_valid(msr))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
|
|
@ -2443,8 +2443,6 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
|
||||||
msr_info->data = 0x100000000ULL;
|
msr_info->data = 0x100000000ULL;
|
||||||
break;
|
break;
|
||||||
case MSR_MTRRcap:
|
case MSR_MTRRcap:
|
||||||
msr_info->data = 0x500 | KVM_NR_VAR_MTRR;
|
|
||||||
break;
|
|
||||||
case 0x200 ... 0x2ff:
|
case 0x200 ... 0x2ff:
|
||||||
return kvm_mtrr_get_msr(vcpu, msr_info->index, &msr_info->data);
|
return kvm_mtrr_get_msr(vcpu, msr_info->index, &msr_info->data);
|
||||||
case 0xcd: /* fsb frequency */
|
case 0xcd: /* fsb frequency */
|
||||||
|
|
Loading…
Reference in New Issue