Allow mm-Support-soft-dirty-flag patches on all kernels as long as the patches are available.

Effectively allows 5.11 and up, while it was bound to 5.11 and 5.12 before.

Also fix the first patch on 5.14, thanks to @Tatsh - Fixes https://github.com/Frogging-Family/linux-tkg/issues/298
This commit is contained in:
Tk-Glitch
2021-08-31 22:13:08 +02:00
parent 6d3d3e78e3
commit b5da16cc45
3 changed files with 26 additions and 27 deletions

View File

@@ -587,7 +587,7 @@ case $_basever in
'a557b342111849a5f920bbe1c129f3ff1fc1eff62c6bd6685e0972fc88e39911' 'a557b342111849a5f920bbe1c129f3ff1fc1eff62c6bd6685e0972fc88e39911'
'92e5f35da18fcabfa87a4543b0d1daafff56f3c523a4c516e2600df9de231fd0' '92e5f35da18fcabfa87a4543b0d1daafff56f3c523a4c516e2600df9de231fd0'
'7fb1104c167edb79ec8fbdcde97940ed0f806aa978bdd14d0c665a1d76d25c24' '7fb1104c167edb79ec8fbdcde97940ed0f806aa978bdd14d0c665a1d76d25c24'
'b1c6599d0e1ac9b66898d652ed99dae3fb8676d840a43ffa920a78d96e0521be' '1b656ad96004f27e9dc63d7f430b50d5c48510d6d4cd595a81c24b21adb70313'
'b0319a7dff9c48b2f3e3d3597ee154bf92223149a633a8b7ce4026252db86da6') 'b0319a7dff9c48b2f3e3d3597ee154bf92223149a633a8b7ce4026252db86da6')
;; ;;
esac esac

View File

@@ -420,11 +420,9 @@ _tkg_srcprep() {
_msg="Applying misc additions patch" && _tkg_patcher _msg="Applying misc additions patch" && _tkg_patcher
fi fi
if [ "$_basever" = "511" ] || [ "$_basever" = "512" ]; then
_msg="Applying patches for WRITE_WATCH support in Wine" _msg="Applying patches for WRITE_WATCH support in Wine"
tkgpatch="$srcdir/0001-mm-Support-soft-dirty-flag-reset-for-VA-range.patch" && _tkg_patcher tkgpatch="$srcdir/0001-mm-Support-soft-dirty-flag-reset-for-VA-range.patch" && _tkg_patcher
tkgpatch="$srcdir/0002-mm-Support-soft-dirty-flag-read-with-reset.patch" && _tkg_patcher tkgpatch="$srcdir/0002-mm-Support-soft-dirty-flag-read-with-reset.patch" && _tkg_patcher
fi
# prjc/bmq patch rev # prjc/bmq patch rev
if [ "$_basever" = "58" ] || [ "$_basever" = "57" ]; then if [ "$_basever" = "58" ] || [ "$_basever" = "57" ]; then

View File

@@ -204,41 +204,42 @@ index 3cec6fbef725..7c7865028f10 100644
#define PM_SOFT_DIRTY BIT_ULL(55) #define PM_SOFT_DIRTY BIT_ULL(55)
#define PM_MMAP_EXCLUSIVE BIT_ULL(56) #define PM_MMAP_EXCLUSIVE BIT_ULL(56)
+#define PM_SOFT_DIRTY_PAGE BIT_ULL(57) +#define PM_SOFT_DIRTY_PAGE BIT_ULL(57)
#define PM_UFFD_WP BIT_ULL(57)
#define PM_FILE BIT_ULL(61) #define PM_FILE BIT_ULL(61)
#define PM_SWAP BIT_ULL(62) #define PM_SWAP BIT_ULL(62)
#define PM_PRESENT BIT_ULL(63) @@ -1373,13 +1450,13 @@ static pagemap_entry_t pte_to_pagemap_entry(struct pagemapread *pm,
@@ -1373,11 +1450,11 @@ static pagemap_entry_t pte_to_pagemap_entry(struct pagemapread *pm,
flags |= PM_PRESENT; flags |= PM_PRESENT;
page = vm_normal_page(vma, addr, pte); page = vm_normal_page(vma, addr, pte);
if (pte_soft_dirty(pte)) if (pte_soft_dirty(pte))
- flags |= PM_SOFT_DIRTY; - flags |= PM_SOFT_DIRTY;
+ flags |= PM_SOFT_DIRTY | PM_SOFT_DIRTY_PAGE; + flags |= PM_SOFT_DIRTY | PM_SOFT_DIRTY_PAGE;
if (pte_uffd_wp(pte))
flags |= PM_UFFD_WP;
} else if (is_swap_pte(pte)) { } else if (is_swap_pte(pte)) {
swp_entry_t entry; swp_entry_t entry;
if (pte_swp_soft_dirty(pte)) if (pte_swp_soft_dirty(pte))
- flags |= PM_SOFT_DIRTY; - flags |= PM_SOFT_DIRTY;
+ flags |= PM_SOFT_DIRTY | PM_SOFT_DIRTY_PAGE; + flags |= PM_SOFT_DIRTY | PM_SOFT_DIRTY_PAGE;
if (pte_swp_uffd_wp(pte))
flags |= PM_UFFD_WP;
entry = pte_to_swp_entry(pte); entry = pte_to_swp_entry(pte);
if (pm->show_pfn) @@ -1500,7 +1500,7 @@
frame = swp_type(entry) |
@@ -1424,7 +1501,7 @@ static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned long end,
flags |= PM_PRESENT; flags |= PM_PRESENT;
if (pmd_soft_dirty(pmd)) if (pmd_soft_dirty(pmd))
- flags |= PM_SOFT_DIRTY; - flags |= PM_SOFT_DIRTY;
+ flags |= PM_SOFT_DIRTY | PM_SOFT_DIRTY_PAGE; + flags |= PM_SOFT_DIRTY | PM_SOFT_DIRTY_PAGE;
if (pmd_uffd_wp(pmd))
flags |= PM_UFFD_WP;
if (pm->show_pfn) if (pm->show_pfn)
frame = pmd_pfn(pmd) +
((addr & ~PMD_MASK) >> PAGE_SHIFT);
@@ -1442,7 +1519,7 @@ static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned long end, @@ -1442,7 +1519,7 @@ static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned long end,
} }
flags |= PM_SWAP; flags |= PM_SWAP;
if (pmd_swp_soft_dirty(pmd)) if (pmd_swp_soft_dirty(pmd))
- flags |= PM_SOFT_DIRTY; - flags |= PM_SOFT_DIRTY;
+ flags |= PM_SOFT_DIRTY | PM_SOFT_DIRTY_PAGE; + flags |= PM_SOFT_DIRTY | PM_SOFT_DIRTY_PAGE;
if (pmd_swp_uffd_wp(pmd))
flags |= PM_UFFD_WP;
VM_BUG_ON(!is_pmd_migration_entry(pmd)); VM_BUG_ON(!is_pmd_migration_entry(pmd));
page = migration_entry_to_page(entry);
}
-- --
2.30.2 2.30.2