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

Configure Feed

Select the types of activity you want to include in your feed.

[PATCH] freepgt: remove arch pgd_addr_end

ia64 and sparc64 hurriedly had to introduce their own variants of
pgd_addr_end, to leapfrog over the holes in their virtual address spaces which
the final clear_page_range suddenly presented when converted from pgd_index to
pgd_addr_end. But now that free_pgtables respects the vma list, those holes
are never presented, and the arch variants can go.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Hugh Dickins and committed by
Linus Torvalds
8f6c99c1 3bf5ee95

+3 -46
+3 -5
include/asm-generic/pgtable.h
··· 140 140 #endif 141 141 142 142 /* 143 - * When walking page tables, get the address of the next boundary, or 144 - * the end address of the range if that comes earlier. Although end might 145 - * wrap to 0 only in clear_page_range, __boundary may wrap to 0 throughout. 143 + * When walking page tables, get the address of the next boundary, 144 + * or the end address of the range if that comes earlier. Although no 145 + * vma end wraps to 0, rounded up __boundary may wrap to 0 throughout. 146 146 */ 147 147 148 - #ifndef pgd_addr_end 149 148 #define pgd_addr_end(addr, end) \ 150 149 ({ unsigned long __boundary = ((addr) + PGDIR_SIZE) & PGDIR_MASK; \ 151 150 (__boundary - 1 < (end) - 1)? __boundary: (end); \ 152 151 }) 153 - #endif 154 152 155 153 #ifndef pud_addr_end 156 154 #define pud_addr_end(addr, end) \
-26
include/asm-ia64/pgtable.h
··· 561 561 #define __HAVE_ARCH_PGD_OFFSET_GATE 562 562 #define __HAVE_ARCH_LAZY_MMU_PROT_UPDATE 563 563 564 - /* 565 - * Override for pgd_addr_end() to deal with the virtual address space holes 566 - * in each region. In regions 0..4 virtual address bits are used like this: 567 - * +--------+------+--------+-----+-----+--------+ 568 - * | pgdhi3 | rsvd | pgdlow | pmd | pte | offset | 569 - * +--------+------+--------+-----+-----+--------+ 570 - * 'pgdlow' overflows to pgdhi3 (a.k.a. region bits) leaving rsvd==0 571 - */ 572 - #define IA64_PGD_OVERFLOW (PGDIR_SIZE << (PAGE_SHIFT-6)) 573 - 574 - #define pgd_addr_end(addr, end) \ 575 - ({ unsigned long __boundary = ((addr) + PGDIR_SIZE) & PGDIR_MASK; \ 576 - if (REGION_NUMBER(__boundary) < 5 && \ 577 - __boundary & IA64_PGD_OVERFLOW) \ 578 - __boundary += (RGN_SIZE - 1) & ~(IA64_PGD_OVERFLOW - 1);\ 579 - (__boundary - 1 < (end) - 1)? __boundary: (end); \ 580 - }) 581 - 582 - #define pmd_addr_end(addr, end) \ 583 - ({ unsigned long __boundary = ((addr) + PMD_SIZE) & PMD_MASK; \ 584 - if (REGION_NUMBER(__boundary) < 5 && \ 585 - __boundary & IA64_PGD_OVERFLOW) \ 586 - __boundary += (RGN_SIZE - 1) & ~(IA64_PGD_OVERFLOW - 1);\ 587 - (__boundary - 1 < (end) - 1)? __boundary: (end); \ 588 - }) 589 - 590 564 #include <asm-generic/pgtable-nopud.h> 591 565 #include <asm-generic/pgtable.h> 592 566
-15
include/asm-sparc64/pgtable.h
··· 424 424 #define GET_IOSPACE(pfn) (pfn >> (BITS_PER_LONG - 4)) 425 425 #define GET_PFN(pfn) (pfn & 0x0fffffffffffffffUL) 426 426 427 - /* Override for {pgd,pmd}_addr_end() to deal with the virtual address 428 - * space hole. We simply sign extend bit 43. 429 - */ 430 - #define pgd_addr_end(addr, end) \ 431 - ({ unsigned long __boundary = ((addr) + PGDIR_SIZE) & PGDIR_MASK; \ 432 - __boundary = ((long) (__boundary << 20)) >> 20; \ 433 - (__boundary - 1 < (end) - 1)? __boundary: (end); \ 434 - }) 435 - 436 - #define pmd_addr_end(addr, end) \ 437 - ({ unsigned long __boundary = ((addr) + PMD_SIZE) & PMD_MASK; \ 438 - __boundary = ((long) (__boundary << 20)) >> 20; \ 439 - (__boundary - 1 < (end) - 1)? __boundary: (end); \ 440 - }) 441 - 442 427 #include <asm-generic/pgtable.h> 443 428 444 429 /* We provide our own get_unmapped_area to cope with VA holes for userland */