[RFC] count TLB refill for Netlogic XLR chip

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

 



TLB miss is one of the concerned factors when tuning the performance of user
applications, and there are on netlogic XLR chip eight 64-bit registers,
c0 register 22 select 0-7, which could be used as temporary storage.

One of them is used for counting TLB refill, and any comment is appreciated.

Thanks

Signed-off-by: Hillf Danton <dhillf@xxxxxxxxx>
---

--- a/arch/mips/mm/tlbex.c	Sat Aug 13 11:44:39 2011
+++ b/arch/mips/mm/tlbex.c	Sat Oct  1 12:41:07 2011
@@ -1239,6 +1239,11 @@ static void __cpuinit build_r4000_tlb_re
 	memset(relocs, 0, sizeof(relocs));
 	memset(final_handler, 0, sizeof(final_handler));

+	if (current_cpu_type() == CPU_XLR) {
+		UASM_i_MFC0(p, K0, 22, 0);
+		UASM_i_ADDIU(p, K0, K0, 1);
+		UASM_i_MTC0(p, K0, 22, 0);
+	}
 	if ((scratch_reg > 0 || scratchpad_available()) && use_bbit_insns()) {
 		htlb_info = build_fast_tlb_refill_handler(&p, &l, &r, K0, K1,
 							  scratch_reg);
--- a/arch/mips/lib/dump_tlb.c	Sat May 14 15:21:02 2011
+++ b/arch/mips/lib/dump_tlb.c	Sat Oct  1 12:46:19 2011
@@ -99,6 +99,10 @@ static void dump_tlb(int first, int last
 			       (entrylo1 & 1) ? 1 : 0);
 		}
 	}
+	if (current_cpu_type() == CPU_XLR) {
+		entrylo0 = __read_64bit_c0_register($22, 0);
+		printk("TLB refill count %llu\n", entrylo0);
+	}
 	printk("\n");

 	write_c0_entryhi(s_entryhi);



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

  Powered by Linux