diff options
Diffstat (limited to 'arch/powerpc/mm/pgtable.c')
-rw-r--r-- | arch/powerpc/mm/pgtable.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c index 533fc6fa6726..2029e585e5c3 100644 --- a/arch/powerpc/mm/pgtable.c +++ b/arch/powerpc/mm/pgtable.c | |||
@@ -340,10 +340,11 @@ pte_t *__find_linux_pte(pgd_t *pgdir, unsigned long ea, | |||
340 | if (pgd_none(pgd)) | 340 | if (pgd_none(pgd)) |
341 | return NULL; | 341 | return NULL; |
342 | 342 | ||
343 | if (pgd_huge(pgd)) { | 343 | if (pgd_is_leaf(pgd)) { |
344 | ret_pte = (pte_t *)pgdp; | 344 | ret_pte = (pte_t *)pgdp; |
345 | goto out; | 345 | goto out; |
346 | } | 346 | } |
347 | |||
347 | if (is_hugepd(__hugepd(pgd_val(pgd)))) { | 348 | if (is_hugepd(__hugepd(pgd_val(pgd)))) { |
348 | hpdp = (hugepd_t *)&pgd; | 349 | hpdp = (hugepd_t *)&pgd; |
349 | goto out_huge; | 350 | goto out_huge; |
@@ -361,14 +362,16 @@ pte_t *__find_linux_pte(pgd_t *pgdir, unsigned long ea, | |||
361 | if (pud_none(pud)) | 362 | if (pud_none(pud)) |
362 | return NULL; | 363 | return NULL; |
363 | 364 | ||
364 | if (pud_huge(pud)) { | 365 | if (pud_is_leaf(pud)) { |
365 | ret_pte = (pte_t *)pudp; | 366 | ret_pte = (pte_t *)pudp; |
366 | goto out; | 367 | goto out; |
367 | } | 368 | } |
369 | |||
368 | if (is_hugepd(__hugepd(pud_val(pud)))) { | 370 | if (is_hugepd(__hugepd(pud_val(pud)))) { |
369 | hpdp = (hugepd_t *)&pud; | 371 | hpdp = (hugepd_t *)&pud; |
370 | goto out_huge; | 372 | goto out_huge; |
371 | } | 373 | } |
374 | |||
372 | pdshift = PMD_SHIFT; | 375 | pdshift = PMD_SHIFT; |
373 | pmdp = pmd_offset(&pud, ea); | 376 | pmdp = pmd_offset(&pud, ea); |
374 | pmd = READ_ONCE(*pmdp); | 377 | pmd = READ_ONCE(*pmdp); |
@@ -397,15 +400,12 @@ pte_t *__find_linux_pte(pgd_t *pgdir, unsigned long ea, | |||
397 | ret_pte = (pte_t *)pmdp; | 400 | ret_pte = (pte_t *)pmdp; |
398 | goto out; | 401 | goto out; |
399 | } | 402 | } |
400 | /* | 403 | |
401 | * pmd_large check below will handle the swap pmd pte | 404 | if (pmd_is_leaf(pmd)) { |
402 | * we need to do both the check because they are config | ||
403 | * dependent. | ||
404 | */ | ||
405 | if (pmd_huge(pmd) || pmd_large(pmd)) { | ||
406 | ret_pte = (pte_t *)pmdp; | 405 | ret_pte = (pte_t *)pmdp; |
407 | goto out; | 406 | goto out; |
408 | } | 407 | } |
408 | |||
409 | if (is_hugepd(__hugepd(pmd_val(pmd)))) { | 409 | if (is_hugepd(__hugepd(pmd_val(pmd)))) { |
410 | hpdp = (hugepd_t *)&pmd; | 410 | hpdp = (hugepd_t *)&pmd; |
411 | goto out_huge; | 411 | goto out_huge; |