diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-01-29 19:58:26 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-01-29 19:58:26 -0500 |
| commit | 8e5d573a6acfb129513cc929a731eeae37eddeee (patch) | |
| tree | d30977997a8dc4574cf10ea184866b7b3c9db8b8 | |
| parent | d6a3bf93d69aefa2d81b64ece799799f44acd925 (diff) | |
| parent | be3286507dab888d4aad9f91fd6ff5202b24cd5b (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull one s390 fix from Martin Schwidefsky:
"Another transparent huge page fix, we need to define a s390 variant
for pmdp_set_wrprotect to flush the TLB for the huge page correctly."
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
s390/thp: implement pmdp_set_wrprotect()
| -rw-r--r-- | arch/s390/include/asm/pgtable.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index c1d7930a82f4..098adbb62660 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h | |||
| @@ -1365,6 +1365,18 @@ static inline void pmdp_invalidate(struct vm_area_struct *vma, | |||
| 1365 | __pmd_idte(address, pmdp); | 1365 | __pmd_idte(address, pmdp); |
| 1366 | } | 1366 | } |
| 1367 | 1367 | ||
| 1368 | #define __HAVE_ARCH_PMDP_SET_WRPROTECT | ||
| 1369 | static inline void pmdp_set_wrprotect(struct mm_struct *mm, | ||
| 1370 | unsigned long address, pmd_t *pmdp) | ||
| 1371 | { | ||
| 1372 | pmd_t pmd = *pmdp; | ||
| 1373 | |||
| 1374 | if (pmd_write(pmd)) { | ||
| 1375 | __pmd_idte(address, pmdp); | ||
| 1376 | set_pmd_at(mm, address, pmdp, pmd_wrprotect(pmd)); | ||
| 1377 | } | ||
| 1378 | } | ||
| 1379 | |||
| 1368 | static inline pmd_t mk_pmd_phys(unsigned long physpage, pgprot_t pgprot) | 1380 | static inline pmd_t mk_pmd_phys(unsigned long physpage, pgprot_t pgprot) |
| 1369 | { | 1381 | { |
| 1370 | pmd_t __pmd; | 1382 | pmd_t __pmd; |
