Re: libhugetlbfs and sparc64 support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Nishanth Aravamudan <nacc@xxxxxxxxxx>
Date: Mon, 12 Mar 2007 14:12:40 -0700

> On 12.03.2007 [13:40:28 -0700], David Miller wrote:
> > I'll try to take a look at this, thanks.
> 
> Really appreciated.

This patch below seems to improve the situation for me
on my SunBlade1500, let me know if you can get farther
on your Ultra60.

This points out a big pet-peeve I have with all of
these hugetlb page table interfaces, every single
platform has the HPAGE_MASK the address parameter,
and missing that is how I keep getting burnt with
hugetlb bugs on sparc64.

I really think the callers should be doing this.

commit bb8236f2b978e8ed84e8b664882905fb5a7dd6c8
Author: David S. Miller <davem@xxxxxxxxxxxxxxxxxxxx>
Date:   Mon Mar 12 22:55:39 2007 -0700

    [SPARC64]: Add missing HPAGE_MASK masks on address parameters.
    
    These pte loops all assume the passed in address is HPAGE
    aligned, make sure that is actually true.
    
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>

diff --git a/arch/sparc64/mm/hugetlbpage.c b/arch/sparc64/mm/hugetlbpage.c
index 33fd0b2..00677b5 100644
--- a/arch/sparc64/mm/hugetlbpage.c
+++ b/arch/sparc64/mm/hugetlbpage.c
@@ -248,6 +248,7 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
 	if (!pte_present(*ptep) && pte_present(entry))
 		mm->context.huge_pte_count++;
 
+	addr &= HPAGE_MASK;
 	for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
 		set_pte_at(mm, addr, ptep, entry);
 		ptep++;
@@ -266,6 +267,8 @@ pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
 	if (pte_present(entry))
 		mm->context.huge_pte_count--;
 
+	addr &= HPAGE_MASK;
+
 	for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
 		pte_clear(mm, addr, ptep);
 		addr += PAGE_SIZE;
-
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux