|
| 1 | +From d14d762911594a3b4c9dd11f15105e80d2e4335b Mon Sep 17 00:00:00 2001 |
| 2 | +From: Benjamin Leggett <benjamin@edera.io> |
| 3 | +Date: Mon, 28 Jul 2025 20:06:45 -0400 |
| 4 | +Subject: [PATCH] Edera hack |
| 5 | + |
| 6 | +--- |
| 7 | + kernel-open/nvidia/nv-pat.c | 11 ++++------- |
| 8 | + 1 file changed, 4 insertions(+), 7 deletions(-) |
| 9 | + |
| 10 | +diff --git a/kernel-open/nvidia/nv-pat.c b/kernel-open/nvidia/nv-pat.c |
| 11 | +index 1fa530d9..83c00eab 100644 |
| 12 | +--- a/kernel-open/nvidia/nv-pat.c |
| 13 | ++++ b/kernel-open/nvidia/nv-pat.c |
| 14 | +@@ -40,12 +40,9 @@ int nv_pat_mode = NV_PAT_MODE_DISABLED; |
| 15 | + * WC entry is as expected before using PAT. |
| 16 | + */ |
| 17 | + |
| 18 | +-#if defined(CONFIG_X86_PAT) |
| 19 | +-#define NV_ENABLE_BUILTIN_PAT_SUPPORT 0 |
| 20 | +-#else |
| 21 | ++// HACK(edera) - force use of builtin PAT even on x86 to work around |
| 22 | ++// buggy PAT detection under Xen |
| 23 | + #define NV_ENABLE_BUILTIN_PAT_SUPPORT 1 |
| 24 | +-#endif |
| 25 | +- |
| 26 | + |
| 27 | + #define NV_READ_PAT_ENTRIES(pat1, pat2) rdmsr(0x277, (pat1), (pat2)) |
| 28 | + #define NV_WRITE_PAT_ENTRIES(pat1, pat2) wrmsr(0x277, (pat1), (pat2)) |
| 29 | +@@ -63,14 +60,14 @@ static inline void nv_disable_caches(unsigned long *cr4) |
| 30 | + wbinvd(); |
| 31 | + *cr4 = NV_READ_CR4(); |
| 32 | + if (*cr4 & 0x80) NV_WRITE_CR4(*cr4 & ~0x80); |
| 33 | +- __flush_tlb(); |
| 34 | ++ __flush_tlb_local(); |
| 35 | + } |
| 36 | + |
| 37 | + static inline void nv_enable_caches(unsigned long cr4) |
| 38 | + { |
| 39 | + unsigned long cr0 = read_cr0(); |
| 40 | + wbinvd(); |
| 41 | +- __flush_tlb(); |
| 42 | ++ __flush_tlb_local(); |
| 43 | + write_cr0((cr0 & 0x9fffffff)); |
| 44 | + if (cr4 & 0x80) NV_WRITE_CR4(cr4); |
| 45 | + } |
| 46 | +-- |
| 47 | +2.50.1 |
| 48 | + |
0 commit comments