-------------------- Release 2.1.1 Errata -------------------- The following bugs were fixed from release 2.1.0 of the KernInst Tool Suite: Power/Linux Specific Fixes -------------------------- - Performance counter initialization on multiprocessor systems The performance counter setup was not properly propagated to all the system processors. As a result, the performance numbers often appeared to be zero on some processors. - Saving/restoring condition register in instrumentation We now always save condition register in instrumentation in order to prevent possible corruption by instructions that modify it as a side effect. - Relocation of unusual branches Some unusual branch instructions, such as conditional returns were not properly relocated. - Using register analysis results for instrumentation Previously, register analysis was disabled due to known bugs. It is now used for all instrumentation requests. Registers are saved on the stack only if register analysis determines there are not enough free registers. Even if some saving is required, the free registers are used first, and only minimum necessary number of registers is saved. IA-32/Linux Specific Fixes ---------------------------- - Hardware-counter based kapi_hwcounter_kind's misidentified as invalid in kapi timer library A bug in kapi_timer_lib.h was causing all Pentium 4/Xeon performance counter based kinds to be misidentified as invalid, and thus did not allow the use of hardware-counter based timers. Sparc/Solaris Specific Fixes ---------------------------- - Deadlock on mutex_enter(kerninst_cswitch_lock) Kerninst uses a mutex to protect the data structures manipulated by the context-switch handling code. A crash was observed where code holding the lock was interrupted by the timer interrupt, which resulted in a call to other code that tried to obtain the mutex, causing deadlock. The code manipulating the context-switch structures is now also protected by raising the PIL to that of the system dispatcher, as was done previously for instrumentation code. - Incorrect measurements for hardware counter metrics in presence of context-switches A number of bugs were identified for hardware counter metrics inside the context-switch handling code of the kerninst driver which led to very large numbers being reported.