diff -r acbdec33f666 xen/common/trace.c --- a/xen/common/trace.c Thu Jun 01 16:08:36 2006 -0400 +++ b/xen/common/trace.c Thu Jun 01 16:13:11 2006 -0400 @@ -178,21 +178,18 @@ int tb_control(dom0_tbufcontrol_t *tbc) spin_lock(&lock); - if ( !tb_init_done && - (tbc->op != DOM0_TBUF_SET_SIZE) && - (tbc->op != DOM0_TBUF_ENABLE) ) - { - spin_unlock(&lock); - return -EINVAL; - } - switch ( tbc->op ) { case DOM0_TBUF_GET_INFO: tbc->cpu_mask = tb_cpu_mask; tbc->evt_mask = tb_event_mask; - tbc->buffer_mfn = __pa(t_bufs[0]) >> PAGE_SHIFT; - tbc->size = opt_tbuf_size * PAGE_SIZE; + if( opt_tbuf_size ) { + tbc->buffer_mfn = __pa(t_bufs[0]) >> PAGE_SHIFT; + tbc->size = opt_tbuf_size * PAGE_SIZE; + } else { + tbc->buffer_mfn = (unsigned long)-1; + tbc->size = 0; + } break; case DOM0_TBUF_SET_CPU_MASK: tb_cpu_mask = tbc->cpu_mask;