I'm not sure if anyone else has noticed (I couldn't find any CRs on the topic), but it seems that ::trace and thus ::whatis (which calls ::ttrace internally) spew the following on sun4v dumps:
mdb: Warning: tt_tick == 0 mdb: Warning: tt_tick == 0 mdb: Warning: tt_tick == 0 mdb: Warning: tt_tick == 0 I looked into this, and it seems the problem is that the kernel is misreporting the size of the traptrace array, causing mdb's processing of the traptrace record stream to become unaligned on sun4v, leading to interpretation of garbage records that appear to have a tt_tick of zero. Specifically, in mdb, each ttrace_cpu_data_t describes a circular array of trap trace records starting at tc_rec and going until tc_stop -- e.g.: tc_buf-> ____________________ | rec1 | |____________________| tc_rec-> | rec0 | |____________________| | | : unused records : : : |____________________| tc_stop-> | rec3 | |____________________| | rec2 | |____________________| Above, processing starts at tc_rec, which is decremented until it reaches tc_buf. At that point, processing continues at the end of the array and decrementing continues until tc_stop is reached. The problem arises when moving to the end of the array. Specifically, mdb uses the d.limit value in the TRAP_TRACE_CTL structure to determine the offset of the last record. This value is initialized in sun4/os/mlsetup.c: #ifdef TRAPTRACE /* * initialize the trap trace buffer for the boot cpu * XXX todo, dynamically allocate this buffer too */ ctlp = &trap_trace_ctl[CPU->cpu_id]; ctlp->d.vaddr_base = trap_tr0; ctlp->d.offset = ctlp->d.last_offset = 0; ctlp->d.limit = TRAP_TSIZE; /* XXX dynamic someday */ ctlp->d.paddr_base = va_to_pa(trap_tr0); #endif /* TRAPTRACE */ TRAP_TSIZE is 16384, which works fine for sun4u since each trap trace record is 64 bytes, and 64 goes evenly into 16384. However, on sun4v, each trap trace record is 80 bytes, which goes into 16384 with a remainder of 64. As a result, MDB ends up miscalculating the address of rec2, and all subsequent records until tc_stop. In short, due to the above, it seems like ::ttrace and ::whatis are mostly unusable on sun4v dumps. Am I missing something here? If not, I'll file a bug. -- meem