[PATCH v7 6/6] mm: simplify follow_invalidate_pte()

2022-04-02 Thread Muchun Song
The only user (DAX) of range and pmdpp parameters of follow_invalidate_pte() is gone, it is safe to remove them and make it static to simlify the code. This is revertant of the following commits: 097963959594 ("mm: add follow_pte_pmd()") a4d1a8852513 ("dax: update to new mmu_notifier

[PATCH v7 5/6] dax: fix missing writeprotect the pte entry

2022-04-02 Thread Muchun Song
Currently dax_mapping_entry_mkclean() fails to clean and write protect the pte entry within a DAX PMD entry during an *sync operation. This can result in data loss in the following sequence: 1) process A mmap write to DAX PMD, dirtying PMD radix tree entry and making the pmd entry dirty

[PATCH v7 4/6] mm: pvmw: add support for walking devmap pages

2022-04-02 Thread Muchun Song
The devmap pages can not use page_vma_mapped_walk() to check if a huge devmap page is mapped into a vma. Add support for walking huge devmap pages so that DAX can use it in the next patch. Signed-off-by: Muchun Song --- mm/page_vma_mapped.c | 17 + 1 file changed, 9

[PATCH v7 3/6] mm: rmap: introduce pfn_mkclean_range() to cleans PTEs

2022-04-02 Thread Muchun Song
The page_mkclean_one() is supposed to be used with the pfn that has a associated struct page, but not all the pfns (e.g. DAX) have a struct page. Introduce a new function pfn_mkclean_range() to cleans the PTEs (including PMDs) mapped with range of pfns which has no struct page associated with

[PATCH v7 2/6] dax: fix cache flush on PMD-mapped pages

2022-04-02 Thread Muchun Song
The flush_cache_page() only remove a PAGE_SIZE sized range from the cache. However, it does not cover the full pages in a THP except a head page. Replace it with flush_cache_range() to fix this issue. This is just a documentation issue with the respect to properly documenting the expected usage

[PATCH v7 1/6] mm: rmap: fix cache flush on THP pages

2022-04-02 Thread Muchun Song
The flush_cache_page() only remove a PAGE_SIZE sized range from the cache. However, it does not cover the full pages in a THP except a head page. Replace it with flush_cache_range() to fix this issue. At least, no problems were found due to this. Maybe because the architectures that have virtual

[PATCH v7 0/6] Fix some bugs related to ramp and dax

2022-04-02 Thread Muchun Song
This series is based on next-20220225. Patch 1-2 fix a cache flush bug, because subsequent patches depend on those on those changes, there are placed in this series. Patch 3-4 are preparation for fixing a dax bug in patch 5. Patch 6 is code cleanup since the previous patch remove the usage of

Re: [PATCH v5 0/6] Fix some bugs related to ramp and dax

2022-04-02 Thread Muchun Song
On Thu, Mar 31, 2022 at 11:55 PM Qian Cai wrote: > > On Fri, Mar 18, 2022 at 03:45:23PM +0800, Muchun Song wrote: > > This series is based on next-20220225. > > > > Patch 1-2 fix a cache flush bug, because subsequent patches depend on > > those on those changes, there are placed in this series.