While working on Qubes OS Marek found out that there were some PAT hacks
in the Linux i915 driver. I decided to make Xen use Linux’s PAT to see
if it solved the graphics glitches that were observed; it did. This
required a substantial amount of preliminary work that is useful even
without using Linux’s PAT.
Patches 1 through 7 are the preliminary work and I would like them to be
accepted into upstream Xen. Patch 7 does technically break ABI by
rejecting the unused PAT entries in debug builds, but as release builds
are not impacted I suspect it is not a serious concern. Patch 8
actually switches to Linux’s PAT and is NOT intended to be merged (at
least for now) as it would at a minimum break migration of PV guests
from hosts that do not have the patch.
Demi Marie Obenour (8):
x86/mm: Avoid hard-coding PAT in get_page_from_l1e()
p2m-pt: Avoid hard-coding Xen's PAT
x86/mm/shadow: avoid assuming a specific Xen PAT
efi: Avoid hard-coding the various PAT constants
x86/mm/shadow: do not open-code PAGE_CACHE_ATTRS
x86: Derive XEN_MSR_PAT from its individual entries
x86/mm: make code robust to future PAT changes
Use Linux's PAT
xen/arch/x86/include/asm/page.h | 4 +-
xen/arch/x86/include/asm/processor.h | 22 +++++++++-
xen/arch/x86/mm.c | 65 ++++++++++++++++++++++++----
xen/arch/x86/mm/p2m-pt.c | 6 +--
xen/arch/x86/mm/shadow/multi.c | 8 ++--
xen/common/efi/boot.c | 10 ++---
6 files changed, 91 insertions(+), 24 deletions(-)
--
Sincerely,
Demi Marie Obenour (she/her/hers)
Invisible Things Lab