Messages in this thread | | | Date | Wed, 11 May 2022 15:32:47 +0200 | Subject | Re: [PATCH] x86/PAT: have pat_enabled() properly reflect state when running on e.g. Xen | From | Juergen Gross <> |
| |
On 03.05.22 14:54, Juergen Gross wrote: > On 28.04.22 16:50, Jan Beulich wrote: >> The latest with commit bdd8b6c98239 ("drm/i915: replace X86_FEATURE_PAT >> with pat_enabled()") pat_enabled() returning false (because of PAT >> initialization being suppressed in the absence of MTRRs being announced >> to be available) has become a problem: The i915 driver now fails to >> initialize when running PV on Xen (i915_gem_object_pin_map() is where I >> located the induced failure), and its error handling is flaky enough to >> (at least sometimes) result in a hung system. >> >> Yet even beyond that problem the keying of the use of WC mappings to >> pat_enabled() (see arch_can_pci_mmap_wc()) means that in particular >> graphics frame buffer accesses would have been quite a bit less >> performant than possible. >> >> Arrange for the function to return true in such environments, without >> undermining the rest of PAT MSR management logic considering PAT to be >> disabled: Specifically, no writes to the PAT MSR should occur. >> >> For the new boolean to live in .init.data, init_cache_modes() also needs >> moving to .init.text (where it could/should have lived already before). >> >> Signed-off-by: Jan Beulich <jbeulich@suse.com> > > I think this approach isn't the best way to tackle the issue. > > It can be solved rather easily by not deriving the supported caching > modes via pat_enabled(), but by adding specific functions to query > the needed caching mode from the PAT translation tables, and to use > those functions instead of pat_enabled(). > > I'm preparing a patch for that purpose.
That attempt was not a complete success.
Especially there are issues with my approach when "nopat" has been specified as boot parameter, as that would be just ignored.
So right now I can't think of a better approach than the one of Jan's patch.
Juergen [unhandled content-type:application/pgp-keys][unhandled content-type:application/pgp-signature] | |