Re: runtime regression with "x86/mm/pat: Emulate PAT when it is disabled"
From: Toshi Kani
Date: Thu Mar 10 2016 - 10:57:29 EST
On Thu, 2016-03-10 at 09:42 -0500, Paul Gortmaker wrote:
> [Re: runtime regression with "x86/mm/pat: Emulate PAT when it is
> disabled"] On 07/03/2016 (Mon 18:35) Toshi Kani wrote:
> > On Mon, 2016-03-07 at 17:56 -0700, Toshi Kani wrote:
> > And also an output of /proc/cpuinfo, please?
> Here is the output of /proc/cpuinfo in the guest session, while
> running on pentium dual core as host (no vmx):
> processor : 0
> vendor_id : GenuineIntel
> cpu family : 6
> model : 6
> model name : QEMU Virtual CPU version 2.5+
> stepping : 3
> cpu MHz : 2593.449
> cache size : 4096 KB
> physical id : 0
> siblings : 1
> core id : 0
> cpu cores : 1
> apicid : 0
> initial apicid : 0
> fdiv_bug : no
> f00f_bug : no
> coma_bug : no
> fpu : yes
> fpu_exception : yes
> cpuid level : 4
> wp : yes
> flags : fpu de pse tsc msr pae mce cx8 apic sep pge cmov
> mmx fxsr sse sse2 pni hypervisor
> bugs :
> bogomips : 5186.89
> clflush size : 32
> cache_alignment : 32
> address sizes : 36 bits physical, 32 bits virtual
> power management:
This confirms the issue - QEMU's virtual Intel CPU does not support MTRR.Â
When MTRR is disabled, the kernel does not call pat_init(). Âpat_enabled()
is still set to true whenÂCONFIG_X86_PAT is set. ÂCONFIG_X86_PAT depends on
CONFIG_MTRR, and assumes that MTRR is enabled.Â
> > I think I know what's going on. ÂI noticed that you have the following
> > message in your dmesg files.
> > Â[ÂÂÂÂ0.000000] MTRR: Disabled
> > MTRR is set to disabled when your CPU is Intel but does not support
> > MTRR.
> > ÂPerhaps, QEMU does not emulate MTRR?
> > pat_init() is not called when MTRR is disabled. ÂI think this
> > dependency is
> > wrong, and it needs to be fixed.
> > This issue has been there for a long time, and you have been running
> > essentially as PAT disabled in the past. ÂThe commit in question simply
> > detected this issue.
> > Thanks,
> > -Toshi