- In rare cases, we might get a NMI (or breakpoint exception) just after
sys_ipc has been invoked, but _before_ esp has been set to tss.esp0 in that
case, we need to switch stacks manually and preserve the processor-saved
frame. We make sure that, before tss there is enough scratch space to cover
EFLAGS, CS, and EIP saved by the processor; this way, we can get around
without having to spend KDB its own interrupt task gate
- Add a scientific notion when printing cycles and pmcs (4 digts + exponent)
- Increase number of characters after which tracebuffer wraps around
- Add a tsc filter for dumping tb entries
- Add a function to dump tracebuffer automatically (tbuf_dump), e.g.
periodically during timer interrupt
- Take user tracepoints into account when enabling un-detailed tracing of
records
- Allow tp id filter to accept user ids
- Fix K8 tracebuffer pmcs
- When recording a tbuf entry, first record pmcs then (finally) the tsc
- Start tracepoint detail levels with bit 0
- Allow tracepoint to enter kdb without printing something on the console
- Use TRACEPOINT_DETAIL for detailed tracing
- Add some TRACE_..._DETAILS macros
- Coalesce TRACE_... macros in tracepoints.h
- When determining number of records to dump in KDB, incorporate potential
display filters
- Store tracebuffer size in metadate, and use it user level
- Merge user-level tracebuffer.h from ia32 and amd64
dumping hours and hours worth of items
- Properly calculate wrapped tsc/pmc values in tracebuffer
- Dump tracebuffer header also for when using tracebuffer shortcut 'Y'
- Make tracebuffer terminology consistent: each tb record has a type
and an id.
- Add a display type filter and merge it with the record type filter
- Improve readability of tracebuffer output: wrap lines automatically,
divide tsc/pmcs by 1000/1000000 and add 'K'/'M'
- Add 'Y' top level command to quickly print tracebuffer with default
parameters
- Add two different tracepoint types (DEFAULT and DETAIL), so that
detailed recording can be suppressed at runtime
- Use TP_DETAIL type for detailed IPC recording and substitute
TRACE_IPC_DETAILS() by TRACEPOINT(IPC_DETAILS, ...)
- Use TP_DETAIL type when recording context switches
- Improve user level tracebuffer stubs: record both id and type
correctly; generic functions don't need a TID argument, since it's
determined automatically;
- each CPU get's an own KDB tcb,
- entering the KDB is done via switch_to
- the KDB is reentrant in that the stack is always reset to the top
- inter-CPU synchronization is done based on an atomic variable and
NMIs