powerpc64 (and more): procstat -kk does not report sched_switch, just mi_switch's call to it.

Mark Millard via freebsd-ppc <[email protected]>
Newsgroups gmane.os.freebsd.devel.ppc,gmane.os.freebsd.devel.hackers
Message-ID <[email protected]>
Take, for example (from a powerpc64 context),

# procstat -kk 23
  PID    TID COMM                TDNAME              KSTACK                       
   23 100074 bufdaemon           -                   mi_switch+0x134 sleepq_switch+0x2ec sleepq_timedwait+0x48 _sleep+0x41c buf_daemon+0x2f8 fork_exit+0xb0 fork_trampoline+0x18 .TOC.+0x1fffffff642c6efc 
   23 100080 bufdaemon           bufspacedaemon-0    mi_switch+0x134 sleepq_switch+0x2ec sleepq_timedwait+0x48 _sleep+0x41c bufspace_daemon+0x438 fork_exit+0xb0 fork_trampoline+0x18 .TOC.+0x1fffffff642c6efc 
   23 100081 bufdaemon           bufspacedaemon-1    mi_switch+0x134 sleepq_switch+0x2ec sleepq_timedwait+0x48 _sleep+0x41c bufspace_daemon+0x438 fork_exit+0xb0 fork_trampoline+0x18 .TOC.+0x1fffffff642c6efc 
   23 100082 bufdaemon           bufspacedaemon-2    mi_switch+0x134 sleepq_switch+0x2ec sleepq_timedwait+0x48 _sleep+0x41c bufspace_daemon+0x438 fork_exit+0xb0 fork_trampoline+0x18 .TOC.+0x1fffffff642c6efc 
   23 100083 bufdaemon           bufspacedaemon-3    mi_switch+0x134 sleepq_switch+0x2ec sleepq_timedwait+0x48 _sleep+0x41c bufspace_daemon+0x438 fork_exit+0xb0 fork_trampoline+0x18 .TOC.+0x1fffffff642c6efc 
   23 100084 bufdaemon           bufspacedaemon-4    mi_switch+0x134 sleepq_switch+0x2ec sleepq_timedwait+0x48 _sleep+0x41c bufspace_daemon+0x438 fork_exit+0xb0 fork_trampoline+0x18 .TOC.+0x1fffffff642c6efc 
   23 100085 bufdaemon           bufspacedaemon-5    mi_switch+0x134 sleepq_switch+0x2ec sleepq_timedwait+0x48 _sleep+0x41c bufspace_daemon+0x438 fork_exit+0xb0 fork_trampoline+0x18 .TOC.+0x1fffffff642c6efc 
   23 100086 bufdaemon           bufspacedaemon-6    mi_switch+0x134 sleepq_switch+0x2ec sleepq_timedwait+0x48 _sleep+0x41c bufspace_daemon+0x438 fork_exit+0xb0 fork_trampoline+0x18 .TOC.+0x1fffffff642c6efc 
   23 100106 bufdaemon           / worker            mi_switch+0x134 sleepq_switch+0x2ec sleepq_timedwait+0x48 _sleep+0x41c softdep_flush+0x38c fork_exit+0xb0 fork_trampoline+0x18 .TOC.+0x1fffffff642c6efc 

then using objdump on /boot/kernel/kernel :

0000000000751868 <mi_switch+0x130> mr      r3,r30
000000000075186c <mi_switch+0x134> bl      0000000000789f14 <sched_switch+0x8>
0000000000751870 <mi_switch+0x138> nop

But I see the same sort of thing on amd6:

# procstat -kk 46
  PID    TID COMM                TDNAME              KSTACK                       
   46 100274 bufdaemon           -                   mi_switch+0x131 sleepq_timedwait+0x36 _sleep+0x289 buf_daemon+0x158 fork_exit+0xbd fork_trampoline+0xe 
   46 100275 bufdaemon           bufspacedaemon-0    mi_switch+0x131 sleepq_timedwait+0x36 _sleep+0x289 bufspace_daemon+0x4d6 fork_exit+0xbd fork_trampoline+0xe 
   46 100277 bufdaemon           bufspacedaemon-1    mi_switch+0x131 sleepq_timedwait+0x36 _sleep+0x289 bufspace_daemon+0x4d6 fork_exit+0xbd fork_trampoline+0xe 
   46 100279 bufdaemon           bufspacedaemon-2    mi_switch+0x131 sleepq_timedwait+0x36 _sleep+0x289 bufspace_daemon+0x4d6 fork_exit+0xbd fork_trampoline+0xe 
   46 100280 bufdaemon           bufspacedaemon-3    mi_switch+0x131 sleepq_timedwait+0x36 _sleep+0x289 bufspace_daemon+0x4d6 fork_exit+0xbd fork_trampoline+0xe 
   46 100282 bufdaemon           bufspacedaemon-4    mi_switch+0x131 sleepq_timedwait+0x36 _sleep+0x289 bufspace_daemon+0x4d6 fork_exit+0xbd fork_trampoline+0xe 
   46 100283 bufdaemon           bufspacedaemon-5    mi_switch+0x131 sleepq_timedwait+0x36 _sleep+0x289 bufspace_daemon+0x4d6 fork_exit+0xbd fork_trampoline+0xe 
   46 100284 bufdaemon           bufspacedaemon-6    mi_switch+0x131 sleepq_timedwait+0x36 _sleep+0x289 bufspace_daemon+0x4d6 fork_exit+0xbd fork_trampoline+0xe 
   46 100297 bufdaemon           / worker            mi_switch+0x131 sleepq_timedwait+0x36 _sleep+0x289 softdep_flush+0x2c9 fork_exit+0xbd fork_trampoline+0xe 


ffffffff81139d0c <mi_switch+0x12c> callq  ffffffff81177760 <sched_switch>
ffffffff81139d11 <mi_switch+0x131> mov    %gs:0x18,%rbx


Is this lack of listing sched_switch information intended behavior?



Note for powerpc64 relative to the "+8":

0000000000789f0c <sched_switch> addis   r2,r12,190
0000000000789f10 <sched_switch+0x4> addi    r2,r2,-12044
0000000000789f14 <sched_switch+0x8> mflr    r0
0000000000789f18 <sched_switch+0xc> std     r0,16(r1)



===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)

_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ppc
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.