This was likely an oversight, that the last_hpc_read is only supposed
to be updated by cpu0 during its clock interrupt.
This will ensure only one cpu can update the value but any other cpu
can read it.

This does *not* make the hp clock smp safe yet.

TESTED:
 - The clocktest script from earlier commit msg still passes on UP.
 - The clocktest script from earlier commit msg now passes on SMP
   when run on master processor only (fixed).
 - The clocktest script from earlier commit msg *fails* on SMP
   when run on slave processor set using /sbin/smp ./clocktest
 - Passes all i386 CI.
---
 kern/mach_clock.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/kern/mach_clock.c b/kern/mach_clock.c
index 33a74aff..c59ed7ad 100644
--- a/kern/mach_clock.c
+++ b/kern/mach_clock.c
@@ -334,8 +334,12 @@ void clock_interrupt(
                 * we catch up softticks so it does not fall behind */
                ++softticks;
            }
+
+           /*
+            *  Only update high precision read on cpu0 once per clock interrupt
+            */
+           last_hpc_read = hpclock_read_counter();
        }
-       last_hpc_read = hpclock_read_counter();
 }
 
 /*
-- 
2.45.2



Reply via email to