[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86/PAT: have pat_enabled() properly reflect state when running on e.g. Xen
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@xxxxxxxx> 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. Juergen Attachment:
OpenPGP_0xB0DE9DD628BF132F.asc Attachment:
OpenPGP_signature
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |