diff options
author | Justin Hibbits <jhibbits@FreeBSD.org> | 2021-03-31 16:54:27 +0000 |
---|---|---|
committer | Brandon Bergren <bdragon@FreeBSD.org> | 2021-04-20 04:13:56 +0000 |
commit | cf8bf3edf8ee41bcd21336e197a6195d4d455ea9 (patch) | |
tree | d29a4b2fb51195b00b5785cf552ead82e45ceb17 /sys/powerpc | |
parent | ac42b63648b1f33daa45352cc6d795ebd9e4071b (diff) | |
download | src-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.c | 3 | ||||
-rw-r--r-- | sys/powerpc/aim/mp_cpudep.c | 3 |
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: |