Merge branch 'akpm' (patches from Andrew)
Merge misc updates from Andrew Morton: "Bite-sized chunks this time, to avoid the MTA ratelimiting woes. - fs/notify updates - ocfs2 - some of MM" That laconic "some MM" is mainly the removal of remap_file_pages(), which is a big simplification of the VM, and which gets rid of a *lot* of random cruft and special cases because we no longer support the non-linear mappings that it used. From a user interface perspective, nothing has changed, because the remap_file_pages() syscall still exists, it's just done by emulating the old behavior by creating a lot of individual small mappings instead of one non-linear one. The emulation is slower than the old "native" non-linear mappings, but nobody really uses or cares about remap_file_pages(), and simplifying the VM is a big advantage. * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (78 commits) memcg: zap memcg_slab_caches and memcg_slab_mutex memcg: zap memcg_name argument of memcg_create_kmem_cache memcg: zap __memcg_{charge,uncharge}_slab mm/page_alloc.c: place zone_id check before VM_BUG_ON_PAGE check mm: hugetlb: fix type of hugetlb_treat_as_movable variable mm, hugetlb: remove unnecessary lower bound on sysctl handlers"? mm: memory: merge shared-writable dirtying branches in do_wp_page() mm: memory: remove ->vm_file check on shared writable vmas xtensa: drop _PAGE_FILE and pte_file()-related helpers x86: drop _PAGE_FILE and pte_file()-related helpers unicore32: drop pte_file()-related helpers um: drop _PAGE_FILE and pte_file()-related helpers tile: drop pte_file()-related helpers sparc: drop pte_file()-related helpers sh: drop _PAGE_FILE and pte_file()-related helpers score: drop _PAGE_FILE and pte_file()-related helpers s390: drop pte_file()-related helpers parisc: drop _PAGE_FILE and pte_file()-related helpers openrisc: drop _PAGE_FILE and pte_file()-related helpers nios2: drop _PAGE_FILE and pte_file()-related helpers ...
This commit is contained in:
@@ -35,7 +35,6 @@
|
||||
* hitting hardware.
|
||||
*/
|
||||
#define CF_PAGE_DIRTY 0x00000001
|
||||
#define CF_PAGE_FILE 0x00000200
|
||||
#define CF_PAGE_ACCESSED 0x00001000
|
||||
|
||||
#define _PAGE_CACHE040 0x020 /* 68040 cache mode, cachable, copyback */
|
||||
@@ -243,11 +242,6 @@ static inline int pte_young(pte_t pte)
|
||||
return pte_val(pte) & CF_PAGE_ACCESSED;
|
||||
}
|
||||
|
||||
static inline int pte_file(pte_t pte)
|
||||
{
|
||||
return pte_val(pte) & CF_PAGE_FILE;
|
||||
}
|
||||
|
||||
static inline int pte_special(pte_t pte)
|
||||
{
|
||||
return 0;
|
||||
@@ -391,26 +385,13 @@ static inline void cache_page(void *vaddr)
|
||||
*ptep = pte_mkcache(*ptep);
|
||||
}
|
||||
|
||||
#define PTE_FILE_MAX_BITS 21
|
||||
#define PTE_FILE_SHIFT 11
|
||||
|
||||
static inline unsigned long pte_to_pgoff(pte_t pte)
|
||||
{
|
||||
return pte_val(pte) >> PTE_FILE_SHIFT;
|
||||
}
|
||||
|
||||
static inline pte_t pgoff_to_pte(unsigned pgoff)
|
||||
{
|
||||
return __pte((pgoff << PTE_FILE_SHIFT) + CF_PAGE_FILE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Encode and de-code a swap entry (must be !pte_none(e) && !pte_present(e))
|
||||
*/
|
||||
#define __swp_type(x) ((x).val & 0xFF)
|
||||
#define __swp_offset(x) ((x).val >> PTE_FILE_SHIFT)
|
||||
#define __swp_offset(x) ((x).val >> 11)
|
||||
#define __swp_entry(typ, off) ((swp_entry_t) { (typ) | \
|
||||
(off << PTE_FILE_SHIFT) })
|
||||
(off << 11) })
|
||||
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
|
||||
#define __swp_entry_to_pte(x) (__pte((x).val))
|
||||
|
||||
|
@@ -28,7 +28,6 @@
|
||||
#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_NOCACHE)
|
||||
|
||||
#define _PAGE_PROTNONE 0x004
|
||||
#define _PAGE_FILE 0x008 /* pagecache or swap? */
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
@@ -168,7 +167,6 @@ static inline void pgd_set(pgd_t *pgdp, pmd_t *pmdp)
|
||||
static inline int pte_write(pte_t pte) { return !(pte_val(pte) & _PAGE_RONLY); }
|
||||
static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; }
|
||||
static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; }
|
||||
static inline int pte_file(pte_t pte) { return pte_val(pte) & _PAGE_FILE; }
|
||||
static inline int pte_special(pte_t pte) { return 0; }
|
||||
|
||||
static inline pte_t pte_wrprotect(pte_t pte) { pte_val(pte) |= _PAGE_RONLY; return pte; }
|
||||
@@ -266,19 +264,6 @@ static inline void cache_page(void *vaddr)
|
||||
}
|
||||
}
|
||||
|
||||
#define PTE_FILE_MAX_BITS 28
|
||||
|
||||
static inline unsigned long pte_to_pgoff(pte_t pte)
|
||||
{
|
||||
return pte.pte >> 4;
|
||||
}
|
||||
|
||||
static inline pte_t pgoff_to_pte(unsigned off)
|
||||
{
|
||||
pte_t pte = { (off << 4) + _PAGE_FILE };
|
||||
return pte;
|
||||
}
|
||||
|
||||
/* Encode and de-code a swap entry (must be !pte_none(e) && !pte_present(e)) */
|
||||
#define __swp_type(x) (((x).val >> 4) & 0xff)
|
||||
#define __swp_offset(x) ((x).val >> 12)
|
||||
|
@@ -37,8 +37,6 @@ extern void paging_init(void);
|
||||
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
|
||||
#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
|
||||
|
||||
static inline int pte_file(pte_t pte) { return 0; }
|
||||
|
||||
/*
|
||||
* ZERO_PAGE is a global shared page that is always zero: used
|
||||
* for zero-mapped memory areas etc..
|
||||
|
@@ -38,8 +38,6 @@
|
||||
#define _PAGE_PRESENT (SUN3_PAGE_VALID)
|
||||
#define _PAGE_ACCESSED (SUN3_PAGE_ACCESSED)
|
||||
|
||||
#define PTE_FILE_MAX_BITS 28
|
||||
|
||||
/* Compound page protection values. */
|
||||
//todo: work out which ones *should* have SUN3_PAGE_NOCACHE and fix...
|
||||
// is it just PAGE_KERNEL and PAGE_SHARED?
|
||||
@@ -168,7 +166,6 @@ static inline void pgd_clear (pgd_t *pgdp) {}
|
||||
static inline int pte_write(pte_t pte) { return pte_val(pte) & SUN3_PAGE_WRITEABLE; }
|
||||
static inline int pte_dirty(pte_t pte) { return pte_val(pte) & SUN3_PAGE_MODIFIED; }
|
||||
static inline int pte_young(pte_t pte) { return pte_val(pte) & SUN3_PAGE_ACCESSED; }
|
||||
static inline int pte_file(pte_t pte) { return pte_val(pte) & SUN3_PAGE_ACCESSED; }
|
||||
static inline int pte_special(pte_t pte) { return 0; }
|
||||
|
||||
static inline pte_t pte_wrprotect(pte_t pte) { pte_val(pte) &= ~SUN3_PAGE_WRITEABLE; return pte; }
|
||||
@@ -202,18 +199,6 @@ static inline pmd_t *pmd_offset (pgd_t *pgd, unsigned long address)
|
||||
return (pmd_t *) pgd;
|
||||
}
|
||||
|
||||
static inline unsigned long pte_to_pgoff(pte_t pte)
|
||||
{
|
||||
return pte.pte & SUN3_PAGE_PGNUM_MASK;
|
||||
}
|
||||
|
||||
static inline pte_t pgoff_to_pte(unsigned off)
|
||||
{
|
||||
pte_t pte = { off + SUN3_PAGE_ACCESSED };
|
||||
return pte;
|
||||
}
|
||||
|
||||
|
||||
/* Find an entry in the third-level pagetable. */
|
||||
#define pte_index(address) ((address >> PAGE_SHIFT) & (PTRS_PER_PTE-1))
|
||||
#define pte_offset_kernel(pmd, address) ((pte_t *) __pmd_page(*pmd) + pte_index(address))
|
||||
|
Reference in New Issue
Block a user