Re: [PATCH v3 01/10] KVM: MMU: fix decoding cache type from MTRR

From: Xiao Guangrong
Date: Mon Jul 13 2015 - 11:20:58 EST




On 07/13/2015 11:13 PM, Paolo Bonzini wrote:
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.

Yes... Will fix.


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.

I see, will do it.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/