Skip to contentSkip to conversation

A question about the patch(commit :c777e2a8b654 powerpc/mm: Fix Multi hit ERAT cause by recent THP update)

DISCUSSION zhong jiang 2 participants 4 messages Jun 22, 2016 – Jun 28, 2016 Memory management

lore
Share & tools
lore
#0 lore raw

Hi Aneesh

                CPU0                            CPU1
    shrink_page_list()
      add_to_swap()
        split_huge_page_to_list()
          __split_huge_pmd_locked()
            pmdp_huge_clear_flush_notify()
        // pmd_none() == true
                                        exit_mmap()
                                          unmap_vmas()
                                            zap_pmd_range()
                                              // no action on pmd since pmd_none() == true
        pmd_populate()

the mm should be the last user when CPU1 process is exiting, CPU0 must be a own mm . two different process should not be influenced each other. in a words , they should not have race.

I want to know if I missing the point.

Thanks
zhongjiang

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#1 lore raw
Quoted 16 lines · zhong jiang

Hi Aneesh

                CPU0                            CPU1
    shrink_page_list()
      add_to_swap()
        split_huge_page_to_list()
          __split_huge_pmd_locked()
            pmdp_huge_clear_flush_notify()
        // pmd_none() == true
                                        exit_mmap()
                                          unmap_vmas()
                                            zap_pmd_range()
                                              // no action on pmd since pmd_none() == true
        pmd_populate()
Quoted 3 lines

the mm should be the last user when CPU1 process is exiting, CPU0 must be a own mm . two different process should not be influenced each other. in a words , they should not have race.

No this is a different scenario than
http://lkml.kernel.org/r/[email protected]
we were discussing recently. Note that pages are still on the LRU lists while the mm which maps them is exiting. So the above race is very much possible.

Signature · 8 lines
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#2 lore raw
Quoted 21 lines · Michal Hocko
Quoted 16 lines · zhong jiang

Hi Aneesh

                CPU0                            CPU1
    shrink_page_list()
      add_to_swap()
        split_huge_page_to_list()
          __split_huge_pmd_locked()
            pmdp_huge_clear_flush_notify()
        // pmd_none() == true
                                        exit_mmap()
                                          unmap_vmas()
                                            zap_pmd_range()
                                              // no action on pmd since pmd_none() == true
        pmd_populate()
Quoted 3 lines

the mm should be the last user when CPU1 process is exiting, CPU0 must be a own mm . two different process should not be influenced each other. in a words , they should not have race.

Quoted 5 lines

No this is a different scenario than
http://lkml.kernel.org/r/[email protected]
we were discussing recently. Note that pages are still on the LRU lists while the mm which maps them is exiting. So the above race is very much possible.

And just to clarify, I haven't checked the current code after c777e2a8b654 ("powerpc/mm: Fix Multi hit ERAT cause by recent THP update") which is ppc specific and I have no idea whether other arches need a similar treatment. I was merely trying to explain that the mm exclusive argument doesn't apply to reclaim vs. exit races.

Signature · 8 lines
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#3 lore raw
Quoted 26 lines · Michal Hocko
Quoted 17 lines · Michal Hocko
Quoted 16 lines · zhong jiang

Hi Aneesh

                CPU0                            CPU1
    shrink_page_list()
      add_to_swap()
        split_huge_page_to_list()
          __split_huge_pmd_locked()
            pmdp_huge_clear_flush_notify()
        // pmd_none() == true
                                        exit_mmap()
                                          unmap_vmas()
                                            zap_pmd_range()
                                              // no action on pmd since pmd_none() == true
        pmd_populate()
Quoted 8 lines
Quoted 3 lines

the mm should be the last user when CPU1 process is exiting, CPU0 must be a own mm . two different process should not be influenced each other. in a words , they should not have race.

No this is a different scenario than
http://lkml.kernel.org/r/[email protected]
we were discussing recently. Note that pages are still on the LRU lists while the mm which maps them is exiting. So the above race is very much possible.

Quoted 5 lines

And just to clarify, I haven't checked the current code after c777e2a8b654 ("powerpc/mm: Fix Multi hit ERAT cause by recent THP update") which is ppc specific and I have no idea whether other arches need a similar treatment. I was merely trying to explain that the mm exclusive argument doesn't apply to reclaim vs. exit races.

Thank for your explaintion!

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>