Re: [PATCH] fix cache coherency issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>>>>> On Tue, 14 Feb 2006 16:07:29 +0900, Yoichi Yuasa <yoichi_yuasa@xxxxxxxxxxxxxx> said:
yuasa> I added the patch and tested it.  It has same problem.

Thank you.  I realize the reason just now.  VR41XX's PTE format is a
bit different from others.  I should use mk_pte() to wrap these
difference.

Could you try this patch?  64BIT_PHYS_ADDR + MIPS32_R1 part are not
tested ;-)

--- linux-mips/arch/mips/mm/init.c	2006-02-14 15:30:58.000000000 +0900
+++ linux/arch/mips/mm/init.c	2006-02-14 16:29:51.000000000 +0900
@@ -95,6 +95,7 @@ static inline void *kmap_coherent(struct
 	unsigned long asid;
 	unsigned int vpflags;
 	unsigned int wired;
+	pte_t pte;
 
 	if (!cpu_has_dc_aliases)
 		return page_address(page);
@@ -111,8 +112,13 @@ static inline void *kmap_coherent(struct
 	wired = read_c0_wired();
 	write_c0_wired(wired + 1);
 	write_c0_index(wired);
-	write_c0_entryhi(vaddr & ~0x1fffUL);
-	entrylo = (page_to_pfn(page) << 6) | (pgprot_val(PAGE_KERNEL) >> 6);
+	write_c0_entryhi(vaddr & (PAGE_MASK << 1));
+	pte = mk_pte(page, PAGE_KERNEL);
+#if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_CPU_MIPS32_R1)
+	entrylo = pte.pte_high;
+#else
+	entrylo = pte_val(pte) >> 6;
+#endif
 	write_c0_entrylo0(entrylo);
 	write_c0_entrylo1(entrylo);
 	mtc0_tlbw_hazard();


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux