Lines Matching refs:msr

29 static bool msr_mtrr_valid(unsigned msr)  in msr_mtrr_valid()  argument
31 switch (msr) { in msr_mtrr_valid()
61 bool kvm_mtrr_valid(struct kvm_vcpu *vcpu, u32 msr, u64 data) in kvm_mtrr_valid() argument
66 if (!msr_mtrr_valid(msr)) in kvm_mtrr_valid()
69 if (msr == MSR_IA32_CR_PAT) { in kvm_mtrr_valid()
74 } else if (msr == MSR_MTRRdefType) { in kvm_mtrr_valid()
78 } else if (msr >= MSR_MTRRfix64K_00000 && msr <= MSR_MTRRfix4K_F8000) { in kvm_mtrr_valid()
86 WARN_ON(!(msr >= 0x200 && msr < 0x200 + 2 * KVM_NR_VAR_MTRR)); in kvm_mtrr_valid()
89 if ((msr & 1) == 0) { in kvm_mtrr_valid()
196 static bool fixed_msr_to_seg_unit(u32 msr, int *seg, int *unit) in fixed_msr_to_seg_unit() argument
198 switch (msr) { in fixed_msr_to_seg_unit()
205 *unit = msr - MSR_MTRRfix16K_80000; in fixed_msr_to_seg_unit()
209 *unit = msr - MSR_MTRRfix4K_C0000; in fixed_msr_to_seg_unit()
248 static bool fixed_msr_to_range(u32 msr, u64 *start, u64 *end) in fixed_msr_to_range() argument
252 if (!fixed_msr_to_seg_unit(msr, &seg, &unit)) in fixed_msr_to_range()
259 static int fixed_msr_to_range_index(u32 msr) in fixed_msr_to_range_index() argument
263 if (!fixed_msr_to_seg_unit(msr, &seg, &unit)) in fixed_msr_to_range_index()
316 static void update_mtrr(struct kvm_vcpu *vcpu, u32 msr) in update_mtrr() argument
322 if (msr == MSR_IA32_CR_PAT || !tdp_enabled || in update_mtrr()
326 if (!mtrr_is_enabled(mtrr_state) && msr != MSR_MTRRdefType) in update_mtrr()
330 if (fixed_msr_to_range(msr, &start, &end)) { in update_mtrr()
333 } else if (msr == MSR_MTRRdefType) { in update_mtrr()
338 index = (msr - 0x200) / 2; in update_mtrr()
350 static void set_var_mtrr_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data) in set_var_mtrr_msr() argument
356 index = (msr - 0x200) / 2; in set_var_mtrr_msr()
357 is_mtrr_mask = msr - 0x200 - 2 * index; in set_var_mtrr_msr()
382 int kvm_mtrr_set_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data) in kvm_mtrr_set_msr() argument
386 if (!kvm_mtrr_valid(vcpu, msr, data)) in kvm_mtrr_set_msr()
389 index = fixed_msr_to_range_index(msr); in kvm_mtrr_set_msr()
392 else if (msr == MSR_MTRRdefType) in kvm_mtrr_set_msr()
394 else if (msr == MSR_IA32_CR_PAT) in kvm_mtrr_set_msr()
397 set_var_mtrr_msr(vcpu, msr, data); in kvm_mtrr_set_msr()
399 update_mtrr(vcpu, msr); in kvm_mtrr_set_msr()
403 int kvm_mtrr_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata) in kvm_mtrr_get_msr() argument
408 if (msr == MSR_MTRRcap) { in kvm_mtrr_get_msr()
419 if (!msr_mtrr_valid(msr)) in kvm_mtrr_get_msr()
422 index = fixed_msr_to_range_index(msr); in kvm_mtrr_get_msr()
425 else if (msr == MSR_MTRRdefType) in kvm_mtrr_get_msr()
427 else if (msr == MSR_IA32_CR_PAT) in kvm_mtrr_get_msr()
432 index = (msr - 0x200) / 2; in kvm_mtrr_get_msr()
433 is_mtrr_mask = msr - 0x200 - 2 * index; in kvm_mtrr_get_msr()