Patch to fix (armv7) "pmap_fault_fixup: va 00008000 ftype ......"

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Patch to fix (armv7) "pmap_fault_fixup: va 00008000 ftype ......"

Jeunder Yu
Hello,

Here is a patch to fix following problem in booting time,

WARNING: clock lost 16832 days
WARNING: CHECK AND RESET THE DATE!
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e

To avoid wrong L1 pde cached in TLB,
we should flush TLB after L1 pde destroyed (*pl1pd = L1_TYPE_INV)

Jeunder


Index: sys/arch/arm/arm/pmap7.c
===================================================================
RCS file: /cvs/src/sys/arch/arm/arm/pmap7.c,v
retrieving revision 1.27
diff -u -p -u -r1.27 pmap7.c
--- sys/arch/arm/arm/pmap7.c 19 Jul 2016 02:26:15 -0000 1.27
+++ sys/arch/arm/arm/pmap7.c 11 Oct 2016 18:15:37 -0000
@@ -876,6 +876,8 @@ pmap_free_l2_bucket(pmap_t pm, struct l2
  if (l1pd == (L1_C_DOM(pm->pm_domain) | L1_TYPE_C)) {
  *pl1pd = L1_TYPE_INV;
  PTE_SYNC(pl1pd);
+ if (curproc && curproc->p_vmspace->vm_map.pmap == pm)
+ cpu_tlb_flushID_SE(l1idx << L1_S_SHIFT);
  }
 
  /*
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Patch to fix (armv7) "pmap_fault_fixup: va 00008000 ftype ......"

Jeunder Yu
Forget my folly, please!

Is there any items need hand?


Jeunder Yu wrote
Hello,

Here is a patch to fix following problem in booting time,

WARNING: clock lost 16832 days
WARNING: CHECK AND RESET THE DATE!
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e
pmap_fault_fixup: va 00008000 ftype 5 u pte 7ff3802e

To avoid wrong L1 pde cached in TLB,
we should flush TLB after L1 pde destroyed (*pl1pd = L1_TYPE_INV)

Jeunder


Index: sys/arch/arm/arm/pmap7.c
===================================================================
RCS file: /cvs/src/sys/arch/arm/arm/pmap7.c,v
retrieving revision 1.27
diff -u -p -u -r1.27 pmap7.c
--- sys/arch/arm/arm/pmap7.c 19 Jul 2016 02:26:15 -0000 1.27
+++ sys/arch/arm/arm/pmap7.c 11 Oct 2016 18:15:37 -0000
@@ -876,6 +876,8 @@ pmap_free_l2_bucket(pmap_t pm, struct l2
  if (l1pd == (L1_C_DOM(pm->pm_domain) | L1_TYPE_C)) {
  *pl1pd = L1_TYPE_INV;
  PTE_SYNC(pl1pd);
+ if (curproc && curproc->p_vmspace->vm_map.pmap == pm)
+ cpu_tlb_flushID_SE(l1idx << L1_S_SHIFT);
  }
 
  /*
Loading...