Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mm: remove ptep_test_and_clear_dirty and ptep_clear_flush_dirty

Nobody is using ptep_test_and_clear_dirty and ptep_clear_flush_dirty. Remove
the functions from all architectures.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Martin Schwidefsky and committed by
Linus Torvalds
e21ea246 f0e47c22

-173
-8
include/asm-frv/pgtable.h
··· 388 388 static inline pte_t pte_mkyoung(pte_t pte) { (pte).pte |= _PAGE_ACCESSED; return pte; } 389 389 static inline pte_t pte_mkwrite(pte_t pte) { (pte).pte &= ~_PAGE_WP; return pte; } 390 390 391 - static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) 392 - { 393 - int i = test_and_clear_bit(_PAGE_BIT_DIRTY, ptep); 394 - asm volatile("dcf %M0" :: "U"(*ptep)); 395 - return i; 396 - } 397 - 398 391 static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) 399 392 { 400 393 int i = test_and_clear_bit(_PAGE_BIT_ACCESSED, ptep); ··· 497 504 remap_pfn_range(vma, vaddr, pfn, size, prot) 498 505 499 506 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG 500 - #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 501 507 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR 502 508 #define __HAVE_ARCH_PTEP_SET_WRPROTECT 503 509 #define __HAVE_ARCH_PTE_SAME
-25
include/asm-generic/pgtable.h
··· 49 49 }) 50 50 #endif 51 51 52 - #ifndef __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 53 - #define ptep_test_and_clear_dirty(__vma, __address, __ptep) \ 54 - ({ \ 55 - pte_t __pte = *__ptep; \ 56 - int r = 1; \ 57 - if (!pte_dirty(__pte)) \ 58 - r = 0; \ 59 - else \ 60 - set_pte_at((__vma)->vm_mm, (__address), (__ptep), \ 61 - pte_mkclean(__pte)); \ 62 - r; \ 63 - }) 64 - #endif 65 - 66 - #ifndef __HAVE_ARCH_PTEP_CLEAR_DIRTY_FLUSH 67 - #define ptep_clear_flush_dirty(__vma, __address, __ptep) \ 68 - ({ \ 69 - int __dirty; \ 70 - __dirty = ptep_test_and_clear_dirty(__vma, __address, __ptep); \ 71 - if (__dirty) \ 72 - flush_tlb_page(__vma, __address); \ 73 - __dirty; \ 74 - }) 75 - #endif 76 - 77 52 #ifndef __HAVE_ARCH_PTEP_GET_AND_CLEAR 78 53 #define ptep_get_and_clear(__mm, __address, __ptep) \ 79 54 ({ \
-21
include/asm-i386/pgtable.h
··· 289 289 __changed; \ 290 290 }) 291 291 292 - #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 293 - #define ptep_test_and_clear_dirty(vma, addr, ptep) ({ \ 294 - int __ret = 0; \ 295 - if (pte_dirty(*(ptep))) \ 296 - __ret = test_and_clear_bit(_PAGE_BIT_DIRTY, \ 297 - &(ptep)->pte_low); \ 298 - if (__ret) \ 299 - pte_update((vma)->vm_mm, addr, ptep); \ 300 - __ret; \ 301 - }) 302 - 303 292 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG 304 293 #define ptep_test_and_clear_young(vma, addr, ptep) ({ \ 305 294 int __ret = 0; \ ··· 298 309 if (__ret) \ 299 310 pte_update((vma)->vm_mm, addr, ptep); \ 300 311 __ret; \ 301 - }) 302 - 303 - #define __HAVE_ARCH_PTEP_CLEAR_DIRTY_FLUSH 304 - #define ptep_clear_flush_dirty(vma, address, ptep) \ 305 - ({ \ 306 - int __dirty; \ 307 - __dirty = ptep_test_and_clear_dirty((vma), (address), (ptep)); \ 308 - if (__dirty) \ 309 - flush_tlb_page(vma, address); \ 310 - __dirty; \ 311 312 }) 312 313 313 314 #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
-17
include/asm-ia64/pgtable.h
··· 395 395 #endif 396 396 } 397 397 398 - static inline int 399 - ptep_test_and_clear_dirty (struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) 400 - { 401 - #ifdef CONFIG_SMP 402 - if (!pte_dirty(*ptep)) 403 - return 0; 404 - return test_and_clear_bit(_PAGE_D_BIT, ptep); 405 - #else 406 - pte_t pte = *ptep; 407 - if (!pte_dirty(pte)) 408 - return 0; 409 - set_pte_at(vma->vm_mm, addr, ptep, pte_mkclean(pte)); 410 - return 1; 411 - #endif 412 - } 413 - 414 398 static inline pte_t 415 399 ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) 416 400 { ··· 574 590 #endif 575 591 576 592 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG 577 - #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 578 593 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR 579 594 #define __HAVE_ARCH_PTEP_SET_WRPROTECT 580 595 #define __HAVE_ARCH_PTE_SAME
-6
include/asm-m32r/pgtable.h
··· 250 250 return pte; 251 251 } 252 252 253 - static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) 254 - { 255 - return test_and_clear_bit(_PAGE_BIT_DIRTY, ptep); 256 - } 257 - 258 253 static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) 259 254 { 260 255 return test_and_clear_bit(_PAGE_BIT_ACCESSED, ptep); ··· 343 348 remap_pfn_range(vma, vaddr, pfn, size, prot) 344 349 345 350 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG 346 - #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 347 351 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR 348 352 #define __HAVE_ARCH_PTEP_SET_WRPROTECT 349 353 #define __HAVE_ARCH_PTE_SAME
-16
include/asm-parisc/pgtable.h
··· 447 447 #endif 448 448 } 449 449 450 - static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) 451 - { 452 - #ifdef CONFIG_SMP 453 - if (!pte_dirty(*ptep)) 454 - return 0; 455 - return test_and_clear_bit(xlate_pabit(_PAGE_DIRTY_BIT), &pte_val(*ptep)); 456 - #else 457 - pte_t pte = *ptep; 458 - if (!pte_dirty(pte)) 459 - return 0; 460 - set_pte_at(vma->vm_mm, addr, ptep, pte_mkclean(pte)); 461 - return 1; 462 - #endif 463 - } 464 - 465 450 extern spinlock_t pa_dbit_lock; 466 451 467 452 struct mm_struct; ··· 514 529 #define HAVE_ARCH_UNMAPPED_AREA 515 530 516 531 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG 517 - #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 518 532 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR 519 533 #define __HAVE_ARCH_PTEP_SET_WRPROTECT 520 534 #define __HAVE_ARCH_PTE_SAME
-7
include/asm-powerpc/pgtable-ppc32.h
··· 621 621 #define ptep_test_and_clear_young(__vma, __addr, __ptep) \ 622 622 __ptep_test_and_clear_young((__vma)->vm_mm->context.id, __addr, __ptep) 623 623 624 - #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 625 - static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, 626 - unsigned long addr, pte_t *ptep) 627 - { 628 - return (pte_update(ptep, (_PAGE_DIRTY | _PAGE_HWWRITE), 0) & _PAGE_DIRTY) != 0; 629 - } 630 - 631 624 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR 632 625 static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, 633 626 pte_t *ptep)
-31
include/asm-powerpc/pgtable-ppc64.h
··· 292 292 __r; \ 293 293 }) 294 294 295 - /* 296 - * On RW/DIRTY bit transitions we can avoid flushing the hpte. For the 297 - * moment we always flush but we need to fix hpte_update and test if the 298 - * optimisation is worth it. 299 - */ 300 - static inline int __ptep_test_and_clear_dirty(struct mm_struct *mm, 301 - unsigned long addr, pte_t *ptep) 302 - { 303 - unsigned long old; 304 - 305 - if ((pte_val(*ptep) & _PAGE_DIRTY) == 0) 306 - return 0; 307 - old = pte_update(mm, addr, ptep, _PAGE_DIRTY, 0); 308 - return (old & _PAGE_DIRTY) != 0; 309 - } 310 - #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 311 - #define ptep_test_and_clear_dirty(__vma, __addr, __ptep) \ 312 - ({ \ 313 - int __r; \ 314 - __r = __ptep_test_and_clear_dirty((__vma)->vm_mm, __addr, __ptep); \ 315 - __r; \ 316 - }) 317 - 318 295 #define __HAVE_ARCH_PTEP_SET_WRPROTECT 319 296 static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, 320 297 pte_t *ptep) ··· 317 340 int __young = __ptep_test_and_clear_young((__vma)->vm_mm, __address, \ 318 341 __ptep); \ 319 342 __young; \ 320 - }) 321 - 322 - #define __HAVE_ARCH_PTEP_CLEAR_DIRTY_FLUSH 323 - #define ptep_clear_flush_dirty(__vma, __address, __ptep) \ 324 - ({ \ 325 - int __dirty = __ptep_test_and_clear_dirty((__vma)->vm_mm, __address, \ 326 - __ptep); \ 327 - __dirty; \ 328 343 }) 329 344 330 345 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR
-7
include/asm-ppc/pgtable.h
··· 654 654 #define ptep_test_and_clear_young(__vma, __addr, __ptep) \ 655 655 __ptep_test_and_clear_young((__vma)->vm_mm->context.id, __addr, __ptep) 656 656 657 - #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 658 - static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, 659 - unsigned long addr, pte_t *ptep) 660 - { 661 - return (pte_update(ptep, (_PAGE_DIRTY | _PAGE_HWWRITE), 0) & _PAGE_DIRTY) != 0; 662 - } 663 - 664 657 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR 665 658 static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, 666 659 pte_t *ptep)
-15
include/asm-s390/pgtable.h
··· 669 669 return ptep_test_and_clear_young(vma, address, ptep); 670 670 } 671 671 672 - static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) 673 - { 674 - return 0; 675 - } 676 - 677 - static inline int 678 - ptep_clear_flush_dirty(struct vm_area_struct *vma, 679 - unsigned long address, pte_t *ptep) 680 - { 681 - /* No need to flush TLB; bits are in storage key */ 682 - return ptep_test_and_clear_dirty(vma, address, ptep); 683 - } 684 - 685 672 static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) 686 673 { 687 674 pte_t pte = *ptep; ··· 926 939 #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS 927 940 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG 928 941 #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH 929 - #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 930 - #define __HAVE_ARCH_PTEP_CLEAR_DIRTY_FLUSH 931 942 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR 932 943 #define __HAVE_ARCH_PTEP_CLEAR_FLUSH 933 944 #define __HAVE_ARCH_PTEP_SET_WRPROTECT
-8
include/asm-x86_64/pgtable.h
··· 284 284 285 285 struct vm_area_struct; 286 286 287 - static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) 288 - { 289 - if (!pte_dirty(*ptep)) 290 - return 0; 291 - return test_and_clear_bit(_PAGE_BIT_DIRTY, &ptep->pte); 292 - } 293 - 294 287 static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) 295 288 { 296 289 if (!pte_young(*ptep)) ··· 420 427 (((o) & (1UL << (__VIRTUAL_MASK_SHIFT-1))) ? ((o) | (~__VIRTUAL_MASK)) : (o)) 421 428 422 429 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG 423 - #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 424 430 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR 425 431 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL 426 432 #define __HAVE_ARCH_PTEP_SET_WRPROTECT
-12
include/asm-xtensa/pgtable.h
··· 267 267 return 1; 268 268 } 269 269 270 - static inline int 271 - ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, 272 - pte_t *ptep) 273 - { 274 - pte_t pte = *ptep; 275 - if (!pte_dirty(pte)) 276 - return 0; 277 - update_pte(ptep, pte_mkclean(pte)); 278 - return 1; 279 - } 280 - 281 270 static inline pte_t 282 271 ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) 283 272 { ··· 407 418 #endif /* !defined (__ASSEMBLY__) */ 408 419 409 420 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG 410 - #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY 411 421 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR 412 422 #define __HAVE_ARCH_PTEP_SET_WRPROTECT 413 423 #define __HAVE_ARCH_PTEP_MKDIRTY