Bug 204270

Summary: panic: rendezvous action changed td_owepreempt running callout histogram script
Product: Base System Reporter: Ed Maste <emaste>
Component: kernAssignee: Andrew Turner <Andrew>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: ---    
Version: CURRENT   
Hardware: arm64   
OS: Any   
Bug Depends on:    
Bug Blocks: 203349    

Description Ed Maste freebsd_committer 2015-11-03 21:37:51 UTC
Running the script under "Measure total time spent in each callout handler over 1-second intervals" from https://wiki.freebsd.org/DTrace/Examples on the Cavium ThunderX:

panic: rendezvous action changed td_owepreempt
cpuid = 0
KDB: stack backtrace:
db_trace_self() at db_trace_self_wrapper+0x28
         pc = 0xffffff80004d6254  lr = 0xffffff800006d888
         sp = 0xffffff850dcd4580  fp = 0xffffff850dcd46a0

db_trace_self_wrapper() at vpanic+0x170
         pc = 0xffffff800006d888  lr = 0xffffff800025abd0
         sp = 0xffffff850dcd46b0  fp = 0xffffff850dcd4730

vpanic() at kassert_panic+0x160
         pc = 0xffffff800025abd0  lr = 0xffffff800025aa5c
         sp = 0xffffff850dcd4740  fp = 0xffffff850dcd4800

kassert_panic() at ipi_handler+0xd4
         pc = 0xffffff800025aa5c  lr = 0xffffff80004dfbe8
         sp = 0xffffff850dcd4810  fp = 0xffffff850dcd4820

ipi_handler() at intr_event_handle+0x80
         pc = 0xffffff80004dfbe8  lr = 0xffffff8000226b5c
         sp = 0xffffff850dcd4830  fp = 0xffffff850dcd4880

intr_event_handle() at arm_dispatch_intr+0x54
         pc = 0xffffff8000226b5c  lr = 0xffffff80004dca54
         sp = 0xffffff850dcd4890  fp = 0xffffff850dcd48b0

arm_dispatch_intr() at gic_v3_dispatch+0x20
         pc = 0xffffff80004dca54  lr = 0xffffff80004d8c94
         sp = 0xffffff850dcd48c0  fp = 0xffffff850dcd48d0

gic_v3_dispatch() at arm_cpu_intr+0x5c
         pc = 0xffffff80004d8c94  lr = 0xffffff80004dcb70
         sp = 0xffffff850dcd48e0  fp = 0xffffff850dcd48f0

arm_cpu_intr() at handle_el1h_irq+0x5c
         pc = 0xffffff80004dcb70  lr = 0xffffff80004d7118
         sp = 0xffffff850dcd4900  fp = 0xffffff850dcd4aa0

handle_el1h_irq() at sched_idletd+0x360
         pc = 0xffffff80004d7118  lr = 0xffffff800028251c
         sp = 0xffffff850dcd4ab0  fp = 0xffffff850dcd4b70

sched_idletd() at fork_exit+0x7c
         pc = 0xffffff800028251c  lr = 0xffffff8000223f5c
         sp = 0xffffff850dcd4b80  fp = 0xffffff850dcd4bb0

fork_exit() at fork_trampoline+0x10
         pc = 0xffffff8000223f5c  lr = 0xffffff80004e6c8c
         sp = 0xffffff850dcd4bc0  fp = 0x0000000000000000

KDB: enter: panic
Comment 1 commit-hook freebsd_committer 2016-05-27 12:02:59 UTC
A commit references this bug:

Author: andrew
Date: Fri May 27 12:02:12 UTC 2016
New revision: 300850
URL: https://svnweb.freebsd.org/changeset/base/300850

Log:
  Fix dtrace_interrupt_disable and dtrace_interrupt_enable by having the
  former return the current status for the latter to use. Without this we
  could enable interrupts when they shouldn't be.

  It's still not quite right as it should only update the bits we care about,
  bit should be good enough until the correct fix can be tested.

  PR:		204270
  Obtained from:	ABT Systems Ltd
  Sponsored by:	The FreeBSD Foundation

Changes:
  head/sys/cddl/dev/dtrace/aarch64/dtrace_asm.S