diff options
Diffstat (limited to 'include/asm-generic/pgtable.h')
| -rw-r--r-- | include/asm-generic/pgtable.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index 6f2b45a9b6bc..ff4947b7a976 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h | |||
| @@ -484,6 +484,16 @@ static inline int pmd_none_or_trans_huge_or_clear_bad(pmd_t *pmd) | |||
| 484 | /* | 484 | /* |
| 485 | * The barrier will stabilize the pmdval in a register or on | 485 | * The barrier will stabilize the pmdval in a register or on |
| 486 | * the stack so that it will stop changing under the code. | 486 | * the stack so that it will stop changing under the code. |
| 487 | * | ||
| 488 | * When CONFIG_TRANSPARENT_HUGEPAGE=y on x86 32bit PAE, | ||
| 489 | * pmd_read_atomic is allowed to return a not atomic pmdval | ||
| 490 | * (for example pointing to an hugepage that has never been | ||
| 491 | * mapped in the pmd). The below checks will only care about | ||
| 492 | * the low part of the pmd with 32bit PAE x86 anyway, with the | ||
| 493 | * exception of pmd_none(). So the important thing is that if | ||
| 494 | * the low part of the pmd is found null, the high part will | ||
| 495 | * be also null or the pmd_none() check below would be | ||
| 496 | * confused. | ||
| 487 | */ | 497 | */ |
| 488 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | 498 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE |
| 489 | barrier(); | 499 | barrier(); |
