Quoting Chris Wilson (2020-08-21 11:39:19)
Quoting Joerg Roedel (2020-08-21 11:23:43)
On Fri, Aug 21, 2020 at 11:13:36AM +0100, Chris Wilson wrote:
We need to store the initial addr, as here addr == end [or earlier on earlier], so range is (start, addr).
Right, I missed that, thanks for pointing it out.
And with that (start, addr)
Tested-by: Chris Wilson chris@chris-wilson.co.uk #x86-32
In the version I tested, I also had
@@ -2216,7 +2216,7 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd,
if (create) { pte = (mm == &init_mm) ? - pte_alloc_kernel(pmd, addr) : + pte_alloc_kernel_track(pmd, addr, mask) : pte_alloc_map_lock(mm, pmd, addr, &ptl); if (!pte) return -ENOMEM;
And that PGTBL_PMD_MODIFIED makes a difference. -Chris