mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-16 13:34:30 +00:00
um: Rename _PAGE_NEWPAGE to _PAGE_NEEDSYNC
The _PAGE_NEWPAGE bit does not really indicate that this is a new page, but rather whether this entry needs to be synced or not. Renaming it to _PAGE_NEEDSYNC will make it more clear how everything ties together. Suggested-by: Benjamin Berg <benjamin.berg@intel.com> Signed-off-by: Tiwei Bie <tiwei.btw@antgroup.com> Link: https://patch.msgid.link/20241011102354.1682626-3-tiwei.btw@antgroup.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
2717c6b649
commit
9b0881858c
@ -56,7 +56,7 @@ typedef struct { unsigned long pud; } pud_t;
|
||||
#define pte_set_bits(p, bits) ((p).pte |= (bits))
|
||||
#define pte_clear_bits(p, bits) ((p).pte &= ~(bits))
|
||||
#define pte_copy(to, from) ((to).pte = (from).pte)
|
||||
#define pte_is_zero(p) (!((p).pte & ~_PAGE_NEWPAGE))
|
||||
#define pte_is_zero(p) (!((p).pte & ~_PAGE_NEEDSYNC))
|
||||
#define pte_set_val(p, phys, prot) (p).pte = (phys | pgprot_val(prot))
|
||||
|
||||
typedef unsigned long phys_t;
|
||||
|
@ -31,7 +31,7 @@
|
||||
printk("%s:%d: bad pgd %p(%08lx).\n", __FILE__, __LINE__, &(e), \
|
||||
pgd_val(e))
|
||||
|
||||
static inline int pgd_newpage(pgd_t pgd) { return 0; }
|
||||
static inline int pgd_needsync(pgd_t pgd) { return 0; }
|
||||
static inline void pgd_mkuptodate(pgd_t pgd) { }
|
||||
|
||||
#define set_pmd(pmdptr, pmdval) (*(pmdptr) = (pmdval))
|
||||
|
@ -55,7 +55,7 @@
|
||||
printk("%s:%d: bad pgd %p(%016lx).\n", __FILE__, __LINE__, &(e), \
|
||||
pgd_val(e))
|
||||
|
||||
#define pud_none(x) (!(pud_val(x) & ~_PAGE_NEWPAGE))
|
||||
#define pud_none(x) (!(pud_val(x) & ~_PAGE_NEEDSYNC))
|
||||
#define pud_bad(x) ((pud_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
|
||||
#define pud_present(x) (pud_val(x) & _PAGE_PRESENT)
|
||||
#define pud_populate(mm, pud, pmd) \
|
||||
@ -63,7 +63,7 @@
|
||||
|
||||
#define set_pud(pudptr, pudval) (*(pudptr) = (pudval))
|
||||
|
||||
#define p4d_none(x) (!(p4d_val(x) & ~_PAGE_NEWPAGE))
|
||||
#define p4d_none(x) (!(p4d_val(x) & ~_PAGE_NEEDSYNC))
|
||||
#define p4d_bad(x) ((p4d_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
|
||||
#define p4d_present(x) (p4d_val(x) & _PAGE_PRESENT)
|
||||
#define p4d_populate(mm, p4d, pud) \
|
||||
@ -72,23 +72,23 @@
|
||||
#define set_p4d(p4dptr, p4dval) (*(p4dptr) = (p4dval))
|
||||
|
||||
|
||||
static inline int pgd_newpage(pgd_t pgd)
|
||||
static inline int pgd_needsync(pgd_t pgd)
|
||||
{
|
||||
return(pgd_val(pgd) & _PAGE_NEWPAGE);
|
||||
return pgd_val(pgd) & _PAGE_NEEDSYNC;
|
||||
}
|
||||
|
||||
static inline void pgd_mkuptodate(pgd_t pgd) { pgd_val(pgd) &= ~_PAGE_NEWPAGE; }
|
||||
static inline void pgd_mkuptodate(pgd_t pgd) { pgd_val(pgd) &= ~_PAGE_NEEDSYNC; }
|
||||
|
||||
#define set_pmd(pmdptr, pmdval) (*(pmdptr) = (pmdval))
|
||||
|
||||
static inline void pud_clear (pud_t *pud)
|
||||
{
|
||||
set_pud(pud, __pud(_PAGE_NEWPAGE));
|
||||
set_pud(pud, __pud(_PAGE_NEEDSYNC));
|
||||
}
|
||||
|
||||
static inline void p4d_clear (p4d_t *p4d)
|
||||
{
|
||||
set_p4d(p4d, __p4d(_PAGE_NEWPAGE));
|
||||
set_p4d(p4d, __p4d(_PAGE_NEEDSYNC));
|
||||
}
|
||||
|
||||
#define pud_page(pud) phys_to_page(pud_val(pud) & PAGE_MASK)
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include <asm/fixmap.h>
|
||||
|
||||
#define _PAGE_PRESENT 0x001
|
||||
#define _PAGE_NEWPAGE 0x002
|
||||
#define _PAGE_NEEDSYNC 0x002
|
||||
#define _PAGE_RW 0x020
|
||||
#define _PAGE_USER 0x040
|
||||
#define _PAGE_ACCESSED 0x080
|
||||
@ -79,22 +79,22 @@ extern unsigned long end_iomem;
|
||||
*/
|
||||
#define ZERO_PAGE(vaddr) virt_to_page(empty_zero_page)
|
||||
|
||||
#define pte_clear(mm,addr,xp) pte_set_val(*(xp), (phys_t) 0, __pgprot(_PAGE_NEWPAGE))
|
||||
#define pte_clear(mm, addr, xp) pte_set_val(*(xp), (phys_t) 0, __pgprot(_PAGE_NEEDSYNC))
|
||||
|
||||
#define pmd_none(x) (!((unsigned long)pmd_val(x) & ~_PAGE_NEWPAGE))
|
||||
#define pmd_none(x) (!((unsigned long)pmd_val(x) & ~_PAGE_NEEDSYNC))
|
||||
#define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
|
||||
|
||||
#define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT)
|
||||
#define pmd_clear(xp) do { pmd_val(*(xp)) = _PAGE_NEWPAGE; } while (0)
|
||||
#define pmd_clear(xp) do { pmd_val(*(xp)) = _PAGE_NEEDSYNC; } while (0)
|
||||
|
||||
#define pmd_newpage(x) (pmd_val(x) & _PAGE_NEWPAGE)
|
||||
#define pmd_mkuptodate(x) (pmd_val(x) &= ~_PAGE_NEWPAGE)
|
||||
#define pmd_needsync(x) (pmd_val(x) & _PAGE_NEEDSYNC)
|
||||
#define pmd_mkuptodate(x) (pmd_val(x) &= ~_PAGE_NEEDSYNC)
|
||||
|
||||
#define pud_newpage(x) (pud_val(x) & _PAGE_NEWPAGE)
|
||||
#define pud_mkuptodate(x) (pud_val(x) &= ~_PAGE_NEWPAGE)
|
||||
#define pud_needsync(x) (pud_val(x) & _PAGE_NEEDSYNC)
|
||||
#define pud_mkuptodate(x) (pud_val(x) &= ~_PAGE_NEEDSYNC)
|
||||
|
||||
#define p4d_newpage(x) (p4d_val(x) & _PAGE_NEWPAGE)
|
||||
#define p4d_mkuptodate(x) (p4d_val(x) &= ~_PAGE_NEWPAGE)
|
||||
#define p4d_needsync(x) (p4d_val(x) & _PAGE_NEEDSYNC)
|
||||
#define p4d_mkuptodate(x) (p4d_val(x) &= ~_PAGE_NEEDSYNC)
|
||||
|
||||
#define pmd_pfn(pmd) (pmd_val(pmd) >> PAGE_SHIFT)
|
||||
#define pmd_page(pmd) phys_to_page(pmd_val(pmd) & PAGE_MASK)
|
||||
@ -145,9 +145,9 @@ static inline int pte_young(pte_t pte)
|
||||
return pte_get_bits(pte, _PAGE_ACCESSED);
|
||||
}
|
||||
|
||||
static inline int pte_newpage(pte_t pte)
|
||||
static inline int pte_needsync(pte_t pte)
|
||||
{
|
||||
return pte_get_bits(pte, _PAGE_NEWPAGE);
|
||||
return pte_get_bits(pte, _PAGE_NEEDSYNC);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -200,13 +200,13 @@ static inline pte_t pte_mkwrite_novma(pte_t pte)
|
||||
|
||||
static inline pte_t pte_mkuptodate(pte_t pte)
|
||||
{
|
||||
pte_clear_bits(pte, _PAGE_NEWPAGE);
|
||||
pte_clear_bits(pte, _PAGE_NEEDSYNC);
|
||||
return pte;
|
||||
}
|
||||
|
||||
static inline pte_t pte_mknewpage(pte_t pte)
|
||||
static inline pte_t pte_mkneedsync(pte_t pte)
|
||||
{
|
||||
pte_set_bits(pte, _PAGE_NEWPAGE);
|
||||
pte_set_bits(pte, _PAGE_NEEDSYNC);
|
||||
return(pte);
|
||||
}
|
||||
|
||||
@ -214,11 +214,11 @@ static inline void set_pte(pte_t *pteptr, pte_t pteval)
|
||||
{
|
||||
pte_copy(*pteptr, pteval);
|
||||
|
||||
/* If it's a swap entry, it needs to be marked _PAGE_NEWPAGE so
|
||||
/* If it's a swap entry, it needs to be marked _PAGE_NEEDSYNC so
|
||||
* update_pte_range knows to unmap it.
|
||||
*/
|
||||
|
||||
*pteptr = pte_mknewpage(*pteptr);
|
||||
*pteptr = pte_mkneedsync(*pteptr);
|
||||
}
|
||||
|
||||
#define PFN_PTE_SHIFT PAGE_SHIFT
|
||||
@ -258,7 +258,7 @@ static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
|
||||
#define __HAVE_ARCH_PTE_SAME
|
||||
static inline int pte_same(pte_t pte_a, pte_t pte_b)
|
||||
{
|
||||
return !((pte_val(pte_a) ^ pte_val(pte_b)) & ~_PAGE_NEWPAGE);
|
||||
return !((pte_val(pte_a) ^ pte_val(pte_b)) & ~_PAGE_NEEDSYNC);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -308,7 +308,7 @@ extern pte_t *virt_to_pte(struct mm_struct *mm, unsigned long addr);
|
||||
* <--------------- offset ----------------> E < type -> 0 0 0 1 0
|
||||
*
|
||||
* E is the exclusive marker that is not stored in swap entries.
|
||||
* _PAGE_NEWPAGE (bit 1) is always set to 1 in set_pte().
|
||||
* _PAGE_NEEDSYNC (bit 1) is always set to 1 in set_pte().
|
||||
*/
|
||||
#define __swp_type(x) (((x).val >> 5) & 0x1f)
|
||||
#define __swp_offset(x) ((x).val >> 11)
|
||||
|
@ -57,7 +57,7 @@ static inline int update_pte_range(pmd_t *pmd, unsigned long addr,
|
||||
|
||||
pte = pte_offset_kernel(pmd, addr);
|
||||
do {
|
||||
if (!pte_newpage(*pte))
|
||||
if (!pte_needsync(*pte))
|
||||
continue;
|
||||
|
||||
if (pte_present(*pte)) {
|
||||
@ -101,7 +101,7 @@ static inline int update_pmd_range(pud_t *pud, unsigned long addr,
|
||||
do {
|
||||
next = pmd_addr_end(addr, end);
|
||||
if (!pmd_present(*pmd)) {
|
||||
if (pmd_newpage(*pmd)) {
|
||||
if (pmd_needsync(*pmd)) {
|
||||
ret = ops->unmap(ops->mm_idp, addr,
|
||||
next - addr);
|
||||
pmd_mkuptodate(*pmd);
|
||||
@ -124,7 +124,7 @@ static inline int update_pud_range(p4d_t *p4d, unsigned long addr,
|
||||
do {
|
||||
next = pud_addr_end(addr, end);
|
||||
if (!pud_present(*pud)) {
|
||||
if (pud_newpage(*pud)) {
|
||||
if (pud_needsync(*pud)) {
|
||||
ret = ops->unmap(ops->mm_idp, addr,
|
||||
next - addr);
|
||||
pud_mkuptodate(*pud);
|
||||
@ -147,7 +147,7 @@ static inline int update_p4d_range(pgd_t *pgd, unsigned long addr,
|
||||
do {
|
||||
next = p4d_addr_end(addr, end);
|
||||
if (!p4d_present(*p4d)) {
|
||||
if (p4d_newpage(*p4d)) {
|
||||
if (p4d_needsync(*p4d)) {
|
||||
ret = ops->unmap(ops->mm_idp, addr,
|
||||
next - addr);
|
||||
p4d_mkuptodate(*p4d);
|
||||
@ -181,7 +181,7 @@ int um_tlb_sync(struct mm_struct *mm)
|
||||
do {
|
||||
next = pgd_addr_end(addr, mm->context.sync_tlb_range_to);
|
||||
if (!pgd_present(*pgd)) {
|
||||
if (pgd_newpage(*pgd)) {
|
||||
if (pgd_needsync(*pgd)) {
|
||||
ret = ops.unmap(ops.mm_idp, addr,
|
||||
next - addr);
|
||||
pgd_mkuptodate(*pgd);
|
||||
|
Loading…
x
Reference in New Issue
Block a user