Re: [PATCHv2] mm/migrate: clean up useless code in migrate_vma_collect_pmd()
On Thu, Aug 15, 2019 at 03:40:21PM -0400, Jerome Glisse wrote: > On Thu, Aug 15, 2019 at 12:23:44PM -0700, Ralph Campbell wrote: > [...] > > > > I don't understand. The only use of "pfn" I see is in the "else" > > clause above where it is set just before using it. > > Ok i managed to confuse myself with mpfn and probably with old > version of the code. Sorry for reading too quickly. Can we move > unsigned long pfn; into the else { branch so that there is no > more confusion to its scope. Looks better, I will update v3. Thanks, Pingfan
Re: [PATCHv2] mm/migrate: clean up useless code in migrate_vma_collect_pmd()
On Thu, Aug 15, 2019 at 12:23:44PM -0700, Ralph Campbell wrote: > > On 8/15/19 10:19 AM, Jerome Glisse wrote: > > On Wed, Aug 07, 2019 at 04:41:12PM +0800, Pingfan Liu wrote: > > > Clean up useless 'pfn' variable. > > > > NAK there is a bug see below: > > > > > > > > Signed-off-by: Pingfan Liu > > > Cc: "Jérôme Glisse" > > > Cc: Andrew Morton > > > Cc: Mel Gorman > > > Cc: Jan Kara > > > Cc: "Kirill A. Shutemov" > > > Cc: Michal Hocko > > > Cc: Mike Kravetz > > > Cc: Andrea Arcangeli > > > Cc: Matthew Wilcox > > > To: linux...@kvack.org > > > Cc: linux-kernel@vger.kernel.org > > > --- > > > mm/migrate.c | 9 +++-- > > > 1 file changed, 3 insertions(+), 6 deletions(-) > > > > > > diff --git a/mm/migrate.c b/mm/migrate.c > > > index 8992741..d483a55 100644 > > > --- a/mm/migrate.c > > > +++ b/mm/migrate.c > > > @@ -2225,17 +2225,15 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, > > > pte_t pte; > > > pte = *ptep; > > > - pfn = pte_pfn(pte); > > > if (pte_none(pte)) { > > > mpfn = MIGRATE_PFN_MIGRATE; > > > migrate->cpages++; > > > - pfn = 0; > > > goto next; > > > } > > > if (!pte_present(pte)) { > > > - mpfn = pfn = 0; > > > + mpfn = 0; > > > /* > > >* Only care about unaddressable device page > > > special > > > @@ -2252,10 +2250,10 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, > > > if (is_write_device_private_entry(entry)) > > > mpfn |= MIGRATE_PFN_WRITE; > > > } else { > > > + pfn = pte_pfn(pte); > > > if (is_zero_pfn(pfn)) { > > > mpfn = MIGRATE_PFN_MIGRATE; > > > migrate->cpages++; > > > - pfn = 0; > > > goto next; > > > } > > > page = vm_normal_page(migrate->vma, addr, pte); > > > @@ -2265,10 +2263,9 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, > > > /* FIXME support THP */ > > > if (!page || !page->mapping || PageTransCompound(page)) > > > { > > > - mpfn = pfn = 0; > > > + mpfn = 0; > > > goto next; > > > } > > > - pfn = page_to_pfn(page); > > > > You can not remove that one ! Otherwise it will break the device > > private case. > > > > I don't understand. The only use of "pfn" I see is in the "else" > clause above where it is set just before using it. Ok i managed to confuse myself with mpfn and probably with old version of the code. Sorry for reading too quickly. Can we move unsigned long pfn; into the else { branch so that there is no more confusion to its scope. Cheers, Jérôme
Re: [PATCHv2] mm/migrate: clean up useless code in migrate_vma_collect_pmd()
On 8/15/19 10:19 AM, Jerome Glisse wrote: On Wed, Aug 07, 2019 at 04:41:12PM +0800, Pingfan Liu wrote: Clean up useless 'pfn' variable. NAK there is a bug see below: Signed-off-by: Pingfan Liu Cc: "Jérôme Glisse" Cc: Andrew Morton Cc: Mel Gorman Cc: Jan Kara Cc: "Kirill A. Shutemov" Cc: Michal Hocko Cc: Mike Kravetz Cc: Andrea Arcangeli Cc: Matthew Wilcox To: linux...@kvack.org Cc: linux-kernel@vger.kernel.org --- mm/migrate.c | 9 +++-- 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mm/migrate.c b/mm/migrate.c index 8992741..d483a55 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -2225,17 +2225,15 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, pte_t pte; pte = *ptep; - pfn = pte_pfn(pte); if (pte_none(pte)) { mpfn = MIGRATE_PFN_MIGRATE; migrate->cpages++; - pfn = 0; goto next; } if (!pte_present(pte)) { - mpfn = pfn = 0; + mpfn = 0; /* * Only care about unaddressable device page special @@ -2252,10 +2250,10 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, if (is_write_device_private_entry(entry)) mpfn |= MIGRATE_PFN_WRITE; } else { + pfn = pte_pfn(pte); if (is_zero_pfn(pfn)) { mpfn = MIGRATE_PFN_MIGRATE; migrate->cpages++; - pfn = 0; goto next; } page = vm_normal_page(migrate->vma, addr, pte); @@ -2265,10 +2263,9 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, /* FIXME support THP */ if (!page || !page->mapping || PageTransCompound(page)) { - mpfn = pfn = 0; + mpfn = 0; goto next; } - pfn = page_to_pfn(page); You can not remove that one ! Otherwise it will break the device private case. I don't understand. The only use of "pfn" I see is in the "else" clause above where it is set just before using it.
Re: [PATCHv2] mm/migrate: clean up useless code in migrate_vma_collect_pmd()
On Wed, Aug 07, 2019 at 04:41:12PM +0800, Pingfan Liu wrote: > Clean up useless 'pfn' variable. NAK there is a bug see below: > > Signed-off-by: Pingfan Liu > Cc: "Jérôme Glisse" > Cc: Andrew Morton > Cc: Mel Gorman > Cc: Jan Kara > Cc: "Kirill A. Shutemov" > Cc: Michal Hocko > Cc: Mike Kravetz > Cc: Andrea Arcangeli > Cc: Matthew Wilcox > To: linux...@kvack.org > Cc: linux-kernel@vger.kernel.org > --- > mm/migrate.c | 9 +++-- > 1 file changed, 3 insertions(+), 6 deletions(-) > > diff --git a/mm/migrate.c b/mm/migrate.c > index 8992741..d483a55 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -2225,17 +2225,15 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, > pte_t pte; > > pte = *ptep; > - pfn = pte_pfn(pte); > > if (pte_none(pte)) { > mpfn = MIGRATE_PFN_MIGRATE; > migrate->cpages++; > - pfn = 0; > goto next; > } > > if (!pte_present(pte)) { > - mpfn = pfn = 0; > + mpfn = 0; > > /* >* Only care about unaddressable device page special > @@ -2252,10 +2250,10 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, > if (is_write_device_private_entry(entry)) > mpfn |= MIGRATE_PFN_WRITE; > } else { > + pfn = pte_pfn(pte); > if (is_zero_pfn(pfn)) { > mpfn = MIGRATE_PFN_MIGRATE; > migrate->cpages++; > - pfn = 0; > goto next; > } > page = vm_normal_page(migrate->vma, addr, pte); > @@ -2265,10 +2263,9 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, > > /* FIXME support THP */ > if (!page || !page->mapping || PageTransCompound(page)) { > - mpfn = pfn = 0; > + mpfn = 0; > goto next; > } > - pfn = page_to_pfn(page); You can not remove that one ! Otherwise it will break the device private case.
Re: [PATCHv2] mm/migrate: clean up useless code in migrate_vma_collect_pmd()
On 8/7/19 1:41 AM, Pingfan Liu wrote: Clean up useless 'pfn' variable. Signed-off-by: Pingfan Liu Cc: "Jérôme Glisse" Cc: Andrew Morton Cc: Mel Gorman Cc: Jan Kara Cc: "Kirill A. Shutemov" Cc: Michal Hocko Cc: Mike Kravetz Cc: Andrea Arcangeli Cc: Matthew Wilcox To: linux...@kvack.org Cc: linux-kernel@vger.kernel.org --- mm/migrate.c | 9 +++-- 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mm/migrate.c b/mm/migrate.c index 8992741..d483a55 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -2225,17 +2225,15 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, pte_t pte; pte = *ptep; - pfn = pte_pfn(pte); if (pte_none(pte)) { mpfn = MIGRATE_PFN_MIGRATE; migrate->cpages++; - pfn = 0; goto next; } if (!pte_present(pte)) { - mpfn = pfn = 0; + mpfn = 0; /* * Only care about unaddressable device page special @@ -2252,10 +2250,10 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, if (is_write_device_private_entry(entry)) mpfn |= MIGRATE_PFN_WRITE; } else { + pfn = pte_pfn(pte); if (is_zero_pfn(pfn)) { mpfn = MIGRATE_PFN_MIGRATE; migrate->cpages++; - pfn = 0; goto next; } page = vm_normal_page(migrate->vma, addr, pte); @@ -2265,10 +2263,9 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, /* FIXME support THP */ if (!page || !page->mapping || PageTransCompound(page)) { - mpfn = pfn = 0; + mpfn = 0; goto next; } - pfn = page_to_pfn(page); /* * By getting a reference on the page we pin it and that blocks Thanks, I was planning to do this too. Reviewed-by: Ralph Campbell