if(opt.dump_cooked || opt.dump_all)
{
- printf(" %s lost_records count %d d%uv%u (cur d%dv%d) first_tsc %lld\n",
- ri->dump_header, r->lost_records,
- r->did, r->vid,
- p->current->d->did, p->current->vid,
- r->first_tsc);
+ if(p->current)
+ printf(" %s lost_records count %d d%uv%u (cur d%dv%d) first_tsc %lld\n",
+ ri->dump_header, r->lost_records,
+ r->did, r->vid,
+ p->current->d->did, p->current->vid,
+ r->first_tsc);
+ else
+ printf(" %s lost_records count %d d%uv%u (cur X) first_tsc %lld\n",
+ ri->dump_header, r->lost_records,
+ r->did, r->vid,
+ r->first_tsc);
}
#if 0
volume_summary(&p->volume.last_buffer);
#endif
- clear_vlapic(&p->current->vlapic);
- if(p->current->data_type == VCPU_DATA_HVM) {
- p->current->hvm.vmexit_valid=0;
- cr3_switch(0, &p->current->hvm);
- }
-
- /* We may lose scheduling records; so we need to:
- * - Point all records until now to the next schedule in the
- * "default" domain
- * - Make sure there are no warnings / strangeness with the
- * current vcpu (if it gets scheduled elsewhere).
- */
- vcpu_prev_update(p, p->current, first_tsc, RUNSTATE_LOST);
+ if ( p->current ) {
+
+ clear_vlapic(&p->current->vlapic);
+ if(p->current->data_type == VCPU_DATA_HVM) {
+ p->current->hvm.vmexit_valid=0;
+ cr3_switch(0, &p->current->hvm);
+ }
+ /* We may lose scheduling records; so we need to:
+ * - Point all records until now to the next schedule in the
+ * "default" domain
+ * - Make sure there are no warnings / strangeness with the
+ * current vcpu (if it gets scheduled elsewhere).
+ */
+ vcpu_prev_update(p, p->current, first_tsc, RUNSTATE_LOST);
+ }
#if 0
vcpu_next_update(p, default_domain.vcpu[p->pid], first_tsc);
if(p->current->data_type == VCPU_DATA_HVM) {