From 3185639cc7e72cc36023e5f00e6dcead503945cf Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Fri, 10 Feb 2023 14:25:06 -0500 Subject: [PATCH 47/52] mips: Add some debug prints around tlb_update() --- sys/mips/mips/pmap_mips64.c | 14 ++++++-------- sys/mips/mips/tlb.c | 2 ++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sys/mips/mips/pmap_mips64.c b/sys/mips/mips/pmap_mips64.c index d20711e0af3a..6f94927ead27 100644 --- a/sys/mips/mips/pmap_mips64.c +++ b/sys/mips/mips/pmap_mips64.c @@ -5658,20 +5658,14 @@ pmap_emulate_modified(pmap_t pmap, vm_offset_t va) } if (pte == NULL) panic("pmap_emulate_modified: can't find PTE"); -#ifdef SMP /* It is possible that some other CPU changed m-bit */ if (!pte_is_valid(pte) || pte_test(pte, PTE_D)) { tlb_update(pmap, va, *pte); PMAP_UNLOCK(pmap); + if (pde_is_superpage(pde)) + printf("%s:%d\n", __func__, __LINE__); return (0); } -#else - if (!pte_is_valid(pte) || pte_test(pte, PTE_D)) { - tlb_update(pmap, va, *pte); - PMAP_UNLOCK(pmap); - return (0); - } -#endif if (pte_test(pte, PTE_RO)) { PMAP_UNLOCK(pmap); return (1); @@ -5679,6 +5673,8 @@ pmap_emulate_modified(pmap_t pmap, vm_offset_t va) pte_atomic_set(pte, PTE_D); /* mark it referenced and modified */ pte_ref_atomic_set(pte); tlb_update(pmap, va, *pte); + if (pde_is_superpage(pde)) + printf("%s:%d\n", __func__, __LINE__); if (!pte_test(pte, PTE_MANAGED)) panic("pmap_emulate_modified: unmanaged page"); PMAP_UNLOCK(pmap); @@ -5721,6 +5717,8 @@ pmap_emulate_referenced(pmap_t pmap, vm_offset_t va) if (!pte_is_ref(pte)) pte_ref_atomic_set(pte); + if (pde_is_superpage(pde)) + printf("%s:%d\n", __func__, __LINE__); tlb_update(pmap, va, *pte); PMAP_UNLOCK(pmap); diff --git a/sys/mips/mips/tlb.c b/sys/mips/mips/tlb.c index 284493b92a41..0e24d1d673be 100644 --- a/sys/mips/mips/tlb.c +++ b/sys/mips/mips/tlb.c @@ -362,6 +362,7 @@ tlb_update(struct pmap *pmap, vm_offset_t va, pt_entry_t pte) /* Superpage */ pte1 = (pte1 & ~(PTE_VR | PTE_D)) | (pte & (PTE_VR | PTE_D)); mips_wr_entrylo1(pte1); + printf("%s:%d va %#lx pte %#lx pte1 %#lx\n", __func__, __LINE__, va, pte, pte1); } } else { mips_wr_entrylo1(pte); @@ -369,6 +370,7 @@ tlb_update(struct pmap *pmap, vm_offset_t va, pt_entry_t pte) /* Superpage */ pte0 = (pte0 & ~(PTE_VR | PTE_D)) | (pte & (PTE_VR | PTE_D)); mips_wr_entrylo0(pte0); + printf("%s:%d va %#lx pte %#lx pte0 %#lx\n", __func__, __LINE__, va, pte, pte0); } } tlb_write_indexed(); -- 2.41.0