aboutsummaryrefslogtreecommitdiff
path: root/sys/powerpc
diff options
context:
space:
mode:
authorJustin Hibbits <jhibbits@FreeBSD.org>2021-03-31 16:54:27 +0000
committerBrandon Bergren <bdragon@FreeBSD.org>2021-04-20 04:13:56 +0000
commitcf8bf3edf8ee41bcd21336e197a6195d4d455ea9 (patch)
treed29a4b2fb51195b00b5785cf552ead82e45ceb17 /sys/powerpc
parentac42b63648b1f33daa45352cc6d795ebd9e4071b (diff)
downloadsrc-cf8bf3edf8ee41bcd21336e197a6195d4d455ea9.tar.gz
src-cf8bf3edf8ee41bcd21336e197a6195d4d455ea9.zip
powerpc/aim: Update timebase directly on resume instead of through platform
This only works on single-CPU G4 systems, and more work is needed for dual-CPU systems. That said, platform sleep does not work, and this is currently only used for PMU-based CPU speed change. The elimination of the platform_smp_timebase_sync() call is so that the timebase sync rendezvous can be enhanced to perform better synchronization, which requires a full rendezvous. This would be impossible to do on this single-threaded run. (cherry picked from commit 921716186f121a2f6a27178cb302415f37412a79)
Diffstat (limited to 'sys/powerpc')
-rw-r--r--sys/powerpc/aim/aim_machdep.c3
-rw-r--r--sys/powerpc/aim/mp_cpudep.c3
2 files changed, 2 insertions, 4 deletions
diff --git a/sys/powerpc/aim/aim_machdep.c b/sys/powerpc/aim/aim_machdep.c
index b09089069c28..784207e9a70d 100644
--- a/sys/powerpc/aim/aim_machdep.c
+++ b/sys/powerpc/aim/aim_machdep.c
@@ -768,7 +768,8 @@ mpc745x_sleep()
while (1)
mtmsr(msr);
}
- platform_smp_timebase_sync(timebase, 0);
+ /* XXX: The mttb() means this *only* works on single-CPU systems. */
+ mttb(timebase);
PCPU_SET(curthread, curthread);
PCPU_SET(curpcb, curthread->td_pcb);
pmap_activate(curthread);
diff --git a/sys/powerpc/aim/mp_cpudep.c b/sys/powerpc/aim/mp_cpudep.c
index b5931786f8f7..33aae520c4b2 100644
--- a/sys/powerpc/aim/mp_cpudep.c
+++ b/sys/powerpc/aim/mp_cpudep.c
@@ -311,9 +311,6 @@ cpudep_ap_setup()
vers = mfpvr() >> 16;
- /* The following is needed for restoring from sleep. */
- platform_smp_timebase_sync(0, 1);
-
switch(vers) {
case IBM970:
case IBM970FX: