Merge tag 'mips_5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux
Pull MIPS updates from Thomas Bogendoerfer: - added support for MIPSr5 and P5600 cores - converted Loongson PCI driver into a PCI host driver using the generic PCI framework - added emulation of CPUCFG command for Loogonson64 cpus - removed of LASAT, PMC MSP71xx and NEC MARKEINS/EMMA - ioremap cleanup - fix for a race between two threads faulting the same page - various cleanups and fixes * tag 'mips_5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: (143 commits) MIPS: ralink: drop ralink_clk_init for mt7621 MIPS: ralink: bootrom: mark a function as __init to save some memory MIPS: Loongson64: Reorder CPUCFG model match arms MIPS: Expose Loongson CPUCFG availability via HWCAP MIPS: Loongson64: Guard against future cores without CPUCFG MIPS: Fix build warning about "PTR_STR" redefinition MIPS: Loongson64: Remove not used pci.c MIPS: Loongson64: Define PCI_IOBASE MIPS: CPU_LOONGSON2EF need software to maintain cache consistency MIPS: DTS: Fix build errors used with various configs MIPS: Loongson64: select NO_EXCEPT_FILL MIPS: Fix IRQ tracing when call handle_fpe() and handle_msa_fpe() MIPS: mm: add page valid judgement in function pte_modify mm/memory.c: Add memory read privilege on page fault handling mm/memory.c: Update local TLB if PTE entry exists MIPS: Do not flush tlb page when updating PTE entry MIPS: ingenic: Default to a generic board MIPS: ingenic: Add support for GCW Zero prototype MIPS: ingenic: DTS: Add memory info of GCW Zero MIPS: Loongson64: Switch to generic PCI driver ...
This commit is contained in:
@@ -188,6 +188,23 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm,
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* If two threads concurrently fault at the same page, the thread that
|
||||
* won the race updates the PTE and its local TLB/Cache. The other thread
|
||||
* gives up, simply does nothing, and continues; on architectures where
|
||||
* software can update TLB, local TLB can be updated here to avoid next page
|
||||
* fault. This function updates TLB only, do nothing with cache or others.
|
||||
* It is the difference with function update_mmu_cache.
|
||||
*/
|
||||
#ifndef __HAVE_ARCH_UPDATE_MMU_TLB
|
||||
static inline void update_mmu_tlb(struct vm_area_struct *vma,
|
||||
unsigned long address, pte_t *ptep)
|
||||
{
|
||||
}
|
||||
#define __HAVE_ARCH_UPDATE_MMU_TLB
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Some architectures may be able to avoid expensive synchronization
|
||||
* primitives when modifications are made to PTE's which are already
|
||||
@@ -227,6 +244,22 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addres
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* On some architectures hardware does not set page access bit when accessing
|
||||
* memory page, it is responsibilty of software setting this bit. It brings
|
||||
* out extra page fault penalty to track page access bit. For optimization page
|
||||
* access bit can be set during all page fault flow on these arches.
|
||||
* To be differentiate with macro pte_mkyoung, this macro is used on platforms
|
||||
* where software maintains page access bit.
|
||||
*/
|
||||
#ifndef pte_sw_mkyoung
|
||||
static inline pte_t pte_sw_mkyoung(pte_t pte)
|
||||
{
|
||||
return pte;
|
||||
}
|
||||
#define pte_sw_mkyoung pte_sw_mkyoung
|
||||
#endif
|
||||
|
||||
#ifndef pte_savedwrite
|
||||
#define pte_savedwrite pte_write
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user