git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 2.0-rc4
[linux-2.6.git]
/
arch
/
sparc64
/
mm
/
hugetlbpage.c
diff --git
a/arch/sparc64/mm/hugetlbpage.c
b/arch/sparc64/mm/hugetlbpage.c
index
c9954c2
..
c43156a
100644
(file)
--- a/
arch/sparc64/mm/hugetlbpage.c
+++ b/
arch/sparc64/mm/hugetlbpage.c
@@
-24,14
+24,18
@@
static pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
{
pgd_t *pgd;
static pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
{
pgd_t *pgd;
+ pud_t *pud;
pmd_t *pmd;
pte_t *pte = NULL;
pgd = pgd_offset(mm, addr);
if (pgd) {
pmd_t *pmd;
pte_t *pte = NULL;
pgd = pgd_offset(mm, addr);
if (pgd) {
- pmd = pmd_alloc(mm, pgd, addr);
- if (pmd)
- pte = pte_alloc_map(mm, pmd, addr);
+ pud = pud_offset(pgd, addr);
+ if (pud) {
+ pmd = pmd_alloc(mm, pud, addr);
+ if (pmd)
+ pte = pte_alloc_map(mm, pmd, addr);
+ }
}
return pte;
}
}
return pte;
}
@@
-39,14
+43,18
@@
static pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
static pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
{
pgd_t *pgd;
static pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
{
pgd_t *pgd;
+ pud_t *pud;
pmd_t *pmd;
pte_t *pte = NULL;
pgd = pgd_offset(mm, addr);
if (pgd) {
pmd_t *pmd;
pte_t *pte = NULL;
pgd = pgd_offset(mm, addr);
if (pgd) {
- pmd = pmd_offset(pgd, addr);
- if (pmd)
- pte = pte_offset_map(pmd, addr);
+ pud = pud_offset(pgd, addr);
+ if (pud) {
+ pmd = pmd_offset(pud, addr);
+ if (pmd)
+ pte = pte_offset_map(pmd, addr);
+ }
}
return pte;
}
}
return pte;
}
@@
-59,7
+67,6
@@
static void set_huge_pte(struct mm_struct *mm, struct vm_area_struct *vma,
unsigned long i;
pte_t entry;
unsigned long i;
pte_t entry;
- // mm->rss += (HPAGE_SIZE / PAGE_SIZE);
vx_rsspages_add(mm, HPAGE_SIZE / PAGE_SIZE);
if (write_access)
vx_rsspages_add(mm, HPAGE_SIZE / PAGE_SIZE);
if (write_access)
@@
-113,7
+120,6
@@
int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
pte_val(entry) += PAGE_SIZE;
dst_pte++;
}
pte_val(entry) += PAGE_SIZE;
dst_pte++;
}
- // dst->rss += (HPAGE_SIZE / PAGE_SIZE);
vx_rsspages_add(dst, HPAGE_SIZE / PAGE_SIZE);
addr += HPAGE_SIZE;
}
vx_rsspages_add(dst, HPAGE_SIZE / PAGE_SIZE);
addr += HPAGE_SIZE;
}
@@
-205,7
+211,6
@@
void unmap_hugepage_range(struct vm_area_struct *vma,
pte++;
}
}
pte++;
}
}
- // mm->rss -= (end - start) >> PAGE_SHIFT;
vx_rsspages_sub(mm, (end - start) >> PAGE_SHIFT);
flush_tlb_range(vma, start, end);
}
vx_rsspages_sub(mm, (end - start) >> PAGE_SHIFT);
flush_tlb_range(vma, start, end);
}