On 13/07/2015 16:45, Xiao Guangrong wrote:
+ /* MTRR is completely disabled, use UC for all of physical
memory. */
+ if (!(mtrr_state->enabled & 0x2))
+ return MTRR_TYPE_UNCACHABLE;
actually disappears in commit fa61213746a7 (KVM: MTRR: simplify
kvm_mtrr_get_guest_memory_type, 2015-06-15).
:(
Based on the SDM, UC is applied to all memory rather than default-type
if MTRR is disabled.
There are two issues I think. One is that I cannot find in the current
code that "UC is applied to all memory rather than default-type if MTRR
is disabled". mtrr_default_type unconditionally looks at
mtrr_state->deftype.
However, fast boot came back if "return 0xFF" here. So fast boot expects
that the memory type is WB.
Yes.
static u8 mtrr_default_type(struct kvm_mtrr *mtrr_state)
{
if (mtrr_is_enabled(mtrr_state))
return mtrr_state->deftype &
IA32_MTRR_DEF_TYPE_TYPE_MASK;
else
return MTRR_TYPE_UNCACHABLE;
}
? Then it's easy to add a quirk that makes the default WRITEBACK until
MTRRs are enabled.
It is the wrong configure in OVMF... shall we need to adjust KVM to satisfy
OVMF?
That's what quirks are for... The firmware should still be fixed of course.