diff options
Diffstat (limited to 'arch/mips/mm/init.c')
| -rw-r--r-- | arch/mips/mm/init.c | 21 | 
1 files changed, 13 insertions, 8 deletions
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c index 5a8002839550..5dcb525a8995 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c @@ -88,7 +88,7 @@ static void *__kmap_pgprot(struct page *page, unsigned long addr, pgprot_t prot)  	pte_t pte;  	int tlbidx; -	BUG_ON(Page_dcache_dirty(page)); +	BUG_ON(folio_test_dcache_dirty(page_folio(page)));  	preempt_disable();  	pagefault_disable(); @@ -169,11 +169,12 @@ void kunmap_coherent(void)  void copy_user_highpage(struct page *to, struct page *from,  	unsigned long vaddr, struct vm_area_struct *vma)  { +	struct folio *src = page_folio(from);  	void *vfrom, *vto;  	vto = kmap_atomic(to);  	if (cpu_has_dc_aliases && -	    page_mapcount(from) && !Page_dcache_dirty(from)) { +	    folio_mapped(src) && !folio_test_dcache_dirty(src)) {  		vfrom = kmap_coherent(from, vaddr);  		copy_page(vto, vfrom);  		kunmap_coherent(); @@ -194,15 +195,17 @@ void copy_to_user_page(struct vm_area_struct *vma,  	struct page *page, unsigned long vaddr, void *dst, const void *src,  	unsigned long len)  { +	struct folio *folio = page_folio(page); +  	if (cpu_has_dc_aliases && -	    page_mapcount(page) && !Page_dcache_dirty(page)) { +	    folio_mapped(folio) && !folio_test_dcache_dirty(folio)) {  		void *vto = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK);  		memcpy(vto, src, len);  		kunmap_coherent();  	} else {  		memcpy(dst, src, len);  		if (cpu_has_dc_aliases) -			SetPageDcacheDirty(page); +			folio_set_dcache_dirty(folio);  	}  	if (vma->vm_flags & VM_EXEC)  		flush_cache_page(vma, vaddr, page_to_pfn(page)); @@ -212,15 +215,17 @@ void copy_from_user_page(struct vm_area_struct *vma,  	struct page *page, unsigned long vaddr, void *dst, const void *src,  	unsigned long len)  { +	struct folio *folio = page_folio(page); +  	if (cpu_has_dc_aliases && -	    page_mapcount(page) && !Page_dcache_dirty(page)) { +	    folio_mapped(folio) && !folio_test_dcache_dirty(folio)) {  		void *vfrom = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK);  		memcpy(dst, vfrom, len);  		kunmap_coherent();  	} else {  		memcpy(dst, src, len);  		if (cpu_has_dc_aliases) -			SetPageDcacheDirty(page); +			folio_set_dcache_dirty(folio);  	}  }  EXPORT_SYMBOL_GPL(copy_from_user_page); @@ -448,10 +453,10 @@ static inline void __init mem_init_free_highmem(void)  void __init mem_init(void)  {  	/* -	 * When _PFN_SHIFT is greater than PAGE_SHIFT we won't have enough PTE +	 * When PFN_PTE_SHIFT is greater than PAGE_SHIFT we won't have enough PTE  	 * bits to hold a full 32b physical address on MIPS32 systems.  	 */ -	BUILD_BUG_ON(IS_ENABLED(CONFIG_32BIT) && (_PFN_SHIFT > PAGE_SHIFT)); +	BUILD_BUG_ON(IS_ENABLED(CONFIG_32BIT) && (PFN_PTE_SHIFT > PAGE_SHIFT));  #ifdef CONFIG_HIGHMEM  	max_mapnr = highend_pfn ? highend_pfn : max_low_pfn;  | 
