mirror of
https://github.com/torvalds/linux.git
synced 2024-12-12 22:23:55 +00:00
arm64, thp: remove infrastructure for handling splitting PMDs
With new refcounting we don't need to mark PMDs splitting. Let's drop code to handle this. pmdp_splitting_flush() is not needed too: on splitting PMD we will do pmdp_clear_flush() + set_pte_at(). pmdp_clear_flush() will do IPI as needed for fast_gup. Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Sasha Levin <sasha.levin@oracle.com> Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Cc: Jerome Marchand <jmarchan@redhat.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Hugh Dickins <hughd@google.com> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Mel Gorman <mgorman@suse.de> Cc: Rik van Riel <riel@redhat.com> Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Cc: Steve Capper <steve.capper@linaro.org> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.cz> Cc: Christoph Lameter <cl@linux.com> Cc: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
3ac808fdd2
commit
b7ed934a7c
@ -353,19 +353,11 @@ static inline pgprot_t mk_sect_prot(pgprot_t prot)
|
|||||||
|
|
||||||
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
||||||
#define pmd_trans_huge(pmd) (pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT))
|
#define pmd_trans_huge(pmd) (pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT))
|
||||||
#define pmd_trans_splitting(pmd) pte_special(pmd_pte(pmd))
|
|
||||||
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
|
|
||||||
#define __HAVE_ARCH_PMDP_SPLITTING_FLUSH
|
|
||||||
struct vm_area_struct;
|
|
||||||
void pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address,
|
|
||||||
pmd_t *pmdp);
|
|
||||||
#endif /* CONFIG_HAVE_RCU_TABLE_FREE */
|
|
||||||
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
|
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
|
||||||
|
|
||||||
#define pmd_dirty(pmd) pte_dirty(pmd_pte(pmd))
|
#define pmd_dirty(pmd) pte_dirty(pmd_pte(pmd))
|
||||||
#define pmd_young(pmd) pte_young(pmd_pte(pmd))
|
#define pmd_young(pmd) pte_young(pmd_pte(pmd))
|
||||||
#define pmd_wrprotect(pmd) pte_pmd(pte_wrprotect(pmd_pte(pmd)))
|
#define pmd_wrprotect(pmd) pte_pmd(pte_wrprotect(pmd_pte(pmd)))
|
||||||
#define pmd_mksplitting(pmd) pte_pmd(pte_mkspecial(pmd_pte(pmd)))
|
|
||||||
#define pmd_mkold(pmd) pte_pmd(pte_mkold(pmd_pte(pmd)))
|
#define pmd_mkold(pmd) pte_pmd(pte_mkold(pmd_pte(pmd)))
|
||||||
#define pmd_mkwrite(pmd) pte_pmd(pte_mkwrite(pmd_pte(pmd)))
|
#define pmd_mkwrite(pmd) pte_pmd(pte_mkwrite(pmd_pte(pmd)))
|
||||||
#define pmd_mkdirty(pmd) pte_pmd(pte_mkdirty(pmd_pte(pmd)))
|
#define pmd_mkdirty(pmd) pte_pmd(pte_mkdirty(pmd_pte(pmd)))
|
||||||
|
@ -102,19 +102,3 @@ EXPORT_SYMBOL(flush_dcache_page);
|
|||||||
* Additional functions defined in assembly.
|
* Additional functions defined in assembly.
|
||||||
*/
|
*/
|
||||||
EXPORT_SYMBOL(flush_icache_range);
|
EXPORT_SYMBOL(flush_icache_range);
|
||||||
|
|
||||||
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
|
||||||
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
|
|
||||||
void pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address,
|
|
||||||
pmd_t *pmdp)
|
|
||||||
{
|
|
||||||
pmd_t pmd = pmd_mksplitting(*pmdp);
|
|
||||||
|
|
||||||
VM_BUG_ON(address & ~PMD_MASK);
|
|
||||||
set_pmd_at(vma->vm_mm, address, pmdp, pmd);
|
|
||||||
|
|
||||||
/* dummy IPI to serialise against fast_gup */
|
|
||||||
kick_all_cpus_sync();
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_HAVE_RCU_TABLE_FREE */
|
|
||||||
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
|
|
||||||
|
Loading…
Reference in New Issue
Block a user