Messages in this thread | | | Date | Tue, 7 Mar 2023 16:47:50 -0500 | Subject | Re: [PATCH v4 05/12] x86/xen: set MTRR state when running as Xen PV initial domain | From | Boris Ostrovsky <> |
| |
On 3/6/23 11:34 AM, Juergen Gross wrote: > When running as Xen PV initial domain (aka dom0), MTRRs are disabled > by the hypervisor, but the system should nevertheless use correct > cache memory types. This has always kind of worked, as disabled MTRRs > resulted in disabled PAT, too, so that the kernel avoided code paths > resulting in inconsistencies. This bypassed all of the sanity checks > the kernel is doing with enabled MTRRs in order to avoid memory > mappings with conflicting memory types. > > This has been changed recently, leading to PAT being accepted to be > enabled, while MTRRs stayed disabled. The result is that > mtrr_type_lookup() no longer is accepting all memory type requests, > but started to return WB even if UC- was requested. This led to > driver failures during initialization of some devices. > > In reality MTRRs are still in effect, but they are under complete > control of the Xen hypervisor. It is possible, however, to retrieve > the MTRR settings from the hypervisor. > > In order to fix those problems, overwrite the MTRR state via > mtrr_overwrite_state() with the MTRR data from the hypervisor, if the > system is running as a Xen dom0. > > Fixes: 72cbc8f04fe2 ("x86/PAT: Have pat_enabled() properly reflect state when running on Xen") > Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
| |