Skip to content

Commit

Permalink
[PATCH] Fix bug in ppc64 dynamic hugepage support
Browse files Browse the repository at this point in the history
In adjusting the logic for SLB miss for the dynamic hugepage stuff, I
messed up the !CONFIG_HUGETLB_PAGE case, failing to set the SLB flags
properly.

This fixes it.  It also streamlines the logic for the HUGETLB_PAGE case
(removing a couple of branches) while we're at it.

Booted, and roughly tested on POWER5 (with and without HUGETLB_PAGE),
iSeries/RS64 (no hugepage available), and G5 (with and without
HUGETLB_PAGE).

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
David Gibson authored and Linus Torvalds committed Sep 1, 2005
1 parent 7eaa414 commit 319e76a
Showing 1 changed file with 9 additions and 13 deletions.
22 changes: 9 additions & 13 deletions arch/ppc64/mm/slb_low.S
Original file line number Diff line number Diff line change
Expand Up @@ -97,25 +97,21 @@ BEGIN_FTR_SECTION
lhz r9,PACAHIGHHTLBAREAS(r13)
srdi r11,r3,(HTLB_AREA_SHIFT-SID_SHIFT)
srd r9,r9,r11
andi. r9,r9,1
bne 5f
lhz r11,PACALOWHTLBAREAS(r13)
srd r11,r11,r3
or r9,r9,r11
END_FTR_SECTION_IFSET(CPU_FTR_16M_PAGE)
#endif /* CONFIG_HUGETLB_PAGE */

li r11,SLB_VSID_USER

cmpldi r3,16
bge 6f

lhz r9,PACALOWHTLBAREAS(r13)
srd r9,r9,r3
andi. r9,r9,1

beq 6f

5: li r11,SLB_VSID_USER|SLB_VSID_L
#ifdef CONFIG_HUGETLB_PAGE
BEGIN_FTR_SECTION
rldimi r11,r9,8,55 /* shift masked bit into SLB_VSID_L */
END_FTR_SECTION_IFSET(CPU_FTR_16M_PAGE)
#endif /* CONFIG_HUGETLB_PAGE */

6: ld r9,PACACONTEXTID(r13)
ld r9,PACACONTEXTID(r13)
rldimi r3,r9,USER_ESID_BITS,0

9: /* r3 = protovsid, r11 = flags, r10 = esid_data, cr7 = <>KERNELBASE */
Expand Down

0 comments on commit 319e76a

Please sign in to comment.