52 lines
1.4 KiB
Diff
52 lines
1.4 KiB
Diff
--- a/arch/x86/mm/pat/memtype_interval.c 2022-10-30 23:19:28.000000000 +0100
|
|
+++ b/arch/x86/mm/pat/memtype_interval.c 2022-11-03 20:49:00.370271855 +0100
|
|
@@ -33,6 +33,16 @@
|
|
* memtype_lock protects the rbtree.
|
|
*/
|
|
|
|
+int skip_pat_enable = 0;
|
|
+
|
|
+static int __init skip_pat_check(char *str)
|
|
+{
|
|
+ skip_pat_enable = 1;
|
|
+ pr_info("Disabled PAT check type (experimental)\n");
|
|
+ return 0;
|
|
+}
|
|
+early_param("skippatcheck", skip_pat_check);
|
|
+
|
|
static inline u64 interval_start(struct memtype *entry)
|
|
{
|
|
return entry->start;
|
|
@@ -86,19 +96,22 @@
|
|
if (entry_match == NULL)
|
|
goto success;
|
|
|
|
- if (entry_match->type != found_type && newtype == NULL)
|
|
- goto failure;
|
|
-
|
|
- dprintk("Overlap at 0x%Lx-0x%Lx\n", entry_match->start, entry_match->end);
|
|
- found_type = entry_match->type;
|
|
-
|
|
- entry_match = interval_iter_next(entry_match, start, end-1);
|
|
- while (entry_match) {
|
|
- if (entry_match->type != found_type)
|
|
+ if (!skip_pat_enable) {
|
|
+ if (entry_match->type != found_type && newtype == NULL)
|
|
goto failure;
|
|
|
|
+ dprintk("Overlap at 0x%Lx-0x%Lx\n", entry_match->start, entry_match->end);
|
|
+ found_type = entry_match->type;
|
|
+
|
|
entry_match = interval_iter_next(entry_match, start, end-1);
|
|
+ while (entry_match) {
|
|
+ if (entry_match->type != found_type)
|
|
+ goto failure;
|
|
+
|
|
+ entry_match = interval_iter_next(entry_match, start, end-1);
|
|
+ }
|
|
}
|
|
+
|
|
success:
|
|
if (newtype)
|
|
*newtype = found_type;
|