linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Punit Agrawal <punit.agrawal@arm.com>
To: Julien Thierry <julien.thierry@arm.com>
Cc: will.deacon@arm.com, catalin.marinas@arm.com,
	mark.rutland@arm.com, David Woods <dwoods@mellanox.com>,
	steve.capper@arm.com, linux-mm@kvack.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v7 5/9] arm64: hugetlb: Handle swap entries in huge_pte_offset() for contiguous hugepages
Date: Tue, 22 Aug 2017 15:41:56 +0100	[thread overview]
Message-ID: <87wp5vmzpn.fsf@e105922-lin.cambridge.arm.com> (raw)
In-Reply-To: <a54aff75-f79b-b40d-c66f-6730aaccbd39@arm.com> (Julien Thierry's message of "Tue, 22 Aug 2017 15:14:59 +0100")

Julien Thierry <julien.thierry@arm.com> writes:

> Hi Punit,
>
> On 22/08/17 11:42, Punit Agrawal wrote:
>> huge_pte_offset() was updated to correctly handle swap entries for
>> hugepages. With the addition of the size parameter, it is now possible
>> to disambiguate whether the request is for a regular hugepage or a
>> contiguous hugepage.
>>
>> Fix huge_pte_offset() for contiguous hugepages by using the size to find
>> the correct page table entry.
>>
>> Signed-off-by: Punit Agrawal <punit.agrawal@arm.com>
>> Cc: David Woods <dwoods@mellanox.com>
>> ---
>>   arch/arm64/mm/hugetlbpage.c | 21 ++++++++++++++++-----
>>   1 file changed, 16 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c
>> index 594232598cac..b95e24dc3477 100644
>> --- a/arch/arm64/mm/hugetlbpage.c
>> +++ b/arch/arm64/mm/hugetlbpage.c
>> @@ -214,6 +214,7 @@ pte_t *huge_pte_offset(struct mm_struct *mm,
>>   	pgd_t *pgd;
>>   	pud_t *pud;
>>   	pmd_t *pmd;
>> +	pte_t *pte;
>>     	pgd = pgd_offset(mm, addr);
>>   	pr_debug("%s: addr:0x%lx pgd:%p\n", __func__, addr, pgd);
>> @@ -221,19 +222,29 @@ pte_t *huge_pte_offset(struct mm_struct *mm,
>>   		return NULL;
>>     	pud = pud_offset(pgd, addr);
>> -	if (pud_none(*pud))
>> +	if (sz != PUD_SIZE && pud_none(*pud))
>>   		return NULL;
>> -	/* swap or huge page */
>> -	if (!pud_present(*pud) || pud_huge(*pud))
>> +	/* hugepage or swap? */
>> +	if (pud_huge(*pud) || !pud_present(*pud))
>>   		return (pte_t *)pud;
>>   	/* table; check the next level */
>>   +	if (sz == CONT_PMD_SIZE)
>> +		addr &= CONT_PMD_MASK;
>> +
>>   	pmd = pmd_offset(pud, addr);
>> -	if (pmd_none(*pmd))
>> +	if (!(sz == PMD_SIZE || sz == CONT_PMD_SIZE) &&
>> +	    pmd_none(*pmd))
>>   		return NULL;
>> -	if (!pmd_present(*pmd) || pmd_huge(*pmd))
>> +	if (pmd_huge(*pmd) || !pmd_present(*pmd))
>>   		return (pte_t *)pmd;
>>   +	if (sz == CONT_PTE_SIZE) {
>> +		pte = pte_offset_kernel(
>> +			pmd, (addr & CONT_PTE_MASK));
>> +		return pte;
>
> Nit: Looks like this is the only place the new variable pte is
> used. Since we don't need to test its value, why not just write:
> 	return pte_offset_kernel(pmd, (addr & CONT_PTE_MASK));
>
> and get rid of the pte variable?

There is no benefit to getting rid of "pte" other than conciseness of
the patch. Having an explicit identifier helps highlight the level of
the page tables we are accessing.

And we always want to prioritise readability vs conciseness of the
patch, no?

>
> Cheers,

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

  reply	other threads:[~2017-08-22 14:42 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-22 10:42 [PATCH v7 0/9] arm64: Enable contiguous pte hugepage support Punit Agrawal
2017-08-22 10:42 ` [PATCH v7 1/9] arm64: hugetlb: set_huge_pte_at Add WARN_ON on !pte_present Punit Agrawal
2017-08-22 10:42 ` [PATCH v7 2/9] arm64: hugetlb: Introduce pte_pgprot helper Punit Agrawal
2017-08-22 10:42 ` [PATCH v7 3/9] arm64: hugetlb: Spring clean huge pte accessors Punit Agrawal
2017-08-22 10:42 ` [PATCH v7 4/9] arm64: hugetlb: Add break-before-make logic for contiguous entries Punit Agrawal
2017-08-22 10:42 ` [PATCH v7 5/9] arm64: hugetlb: Handle swap entries in huge_pte_offset() for contiguous hugepages Punit Agrawal
2017-08-22 14:14   ` Julien Thierry
2017-08-22 14:41     ` Punit Agrawal [this message]
2017-08-22 15:01       ` Julien Thierry
2017-08-22 16:18         ` Punit Agrawal
2017-08-22 16:21           ` Julien Thierry
2017-08-22 16:35   ` Catalin Marinas
2017-08-22 17:14     ` Punit Agrawal
2017-08-22 10:42 ` [PATCH v7 6/9] arm64: hugetlb: Override huge_pte_clear() to support " Punit Agrawal
2017-08-22 10:42 ` [PATCH v7 7/9] arm64: hugetlb: Override set_huge_swap_pte_at() " Punit Agrawal
2017-08-22 10:42 ` [PATCH v7 8/9] arm64: Re-enable support for " Punit Agrawal
2017-08-22 10:42 ` [PATCH v7 9/9] arm64: hugetlb: Cleanup setup_hugepagesz Punit Agrawal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87wp5vmzpn.fsf@e105922-lin.cambridge.arm.com \
    --to=punit.agrawal@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=dwoods@mellanox.com \
    --cc=julien.thierry@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mm@kvack.org \
    --cc=mark.rutland@arm.com \
    --cc=steve.capper@arm.com \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox