[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/1] xentrace: Add TRC_HW_VCHIP
At 07:25 -0400 on 28 Mar (1395987951), Don Slutz wrote: > This add a set of trace events that track the setup of various > virtual chips related to timers in domU. > > This set is hpet, pit (i8253, i8254), rtc (MC146818), apic (lapic), > and pic (i8259). The pmtimer is not traced since it does not have a > changeable rate. > > Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx> Seems like a good idea; thanks for the patch. A few comments: You include get_cycles() in a lot of places, but AIUI the TRACE_*D macros already included the TSC in the trace record. > @@ -152,8 +154,11 @@ static void rtc_timer_update(RTCState *s) > else > delta = period - ((now - s->start_time) % period); > if ( s->hw.cmos_data[RTC_REG_B] & RTC_PIE ) > + { > + TRACE_3D(TRC_HW_VCHIP_RTC_START_TIMER, get_cycles(), > delta, period); Please linewrap to <80 characters. > @@ -950,6 +955,7 @@ void vlapic_tdt_msr_set(struct vlapic *vlapic, uint64_t > value) > > vlapic->hw.tdt_msr = value; > /* .... reprogram tdt timer */ > + TRACE_4D(TRC_HW_VCHIP_LAPIC_START_TIMER, get_cycles(), delta, 0, > vlapic->pt.irq); > create_periodic_time(v, &vlapic->pt, delta, 0, > vlapic->pt.irq, vlapic_tdt_pt_cb, > &vlapic->timer_last_update); > @@ -962,6 +968,7 @@ void vlapic_tdt_msr_set(struct vlapic *vlapic, uint64_t > value) > /* trigger a timer event if needed */ > if ( value > 0 ) > { > + TRACE_4D(TRC_HW_VCHIP_LAPIC_START_TIMER, get_cycles(), 0, 0, > vlapic->pt.irq); > create_periodic_time(v, &vlapic->pt, 0, 0, > vlapic->pt.irq, vlapic_tdt_pt_cb, > &vlapic->timer_last_update); Likewise here (and anywhere else). > @@ -997,12 +1005,18 @@ static int __vlapic_accept_pic_intr(struct vcpu *v) > !vlapic_disabled(vlapic)) || > /* LAPIC has LVT0 unmasked for ExtInts? */ > ((lvt0 & (APIC_MODE_MASK|APIC_LVT_MASKED)) == APIC_DM_EXTINT) || > + /* LAPIC has LVT0 unmasked for Fixed? */ > + ((lvt0 & (APIC_MODE_MASK|APIC_LVT_MASKED)) == APIC_DM_FIXED) || What on earth is this doing here? > diff --git a/xen/include/public/trace.h b/xen/include/public/trace.h > index e2f60a6..e6f25f6 100644 > --- a/xen/include/public/trace.h > +++ b/xen/include/public/trace.h > @@ -86,6 +86,7 @@ > /* Trace classes for Hardware */ > #define TRC_HW_PM 0x00801000 /* Power management traces */ > #define TRC_HW_IRQ 0x00802000 /* Traces relating to the handling > of IRQs */ > +#define TRC_HW_VCHIP 0x00804000 /* Traces relating to the handling > of virtual chips */ I think most of these belong under TRC_HVM, with the other emulated hardware. But I guess we might see PIT traces for PV guests? In that case, maybe the timers could have a new class like like TRC_VTIMER. In any case, please avoid _HW_, which is used elsewhere for _real_ hardware events. > /* Trace events per class */ > #define TRC_LOST_RECORDS (TRC_GEN + 1) > @@ -244,6 +245,27 @@ > #define TRC_HW_IRQ_UNMAPPED_VECTOR (TRC_HW_IRQ + 0x7) > #define TRC_HW_IRQ_HANDLED (TRC_HW_IRQ + 0x8) > > +/* Trace events for virtual chips */ > +#define TRC_HW_VCHIP_HPET_START_TIMER (TRC_HW_VCHIP + 0x1) > +#define TRC_HW_VCHIP_8254_START_TIMER (TRC_HW_VCHIP + 0x2) Can you use _PIT_ for those of us who don't always remember the old Intel part numbers? > +#define TRC_HW_VCHIP_RTC_START_TIMER (TRC_HW_VCHIP + 0x3) > +#define TRC_HW_VCHIP_LAPIC_START_TIMER (TRC_HW_VCHIP + 0x4) > +#define TRC_HW_VCHIP_HPET_STOP_TIMER (TRC_HW_VCHIP + 0x5) > +#define TRC_HW_VCHIP_8254_STOP_TIMER (TRC_HW_VCHIP + 0x6) > +#define TRC_HW_VCHIP_RTC_STOP_TIMER (TRC_HW_VCHIP + 0x7) > +#define TRC_HW_VCHIP_LAPIC_STOP_TIMER (TRC_HW_VCHIP + 0x8) > +#define TRC_HW_VCHIP_8254_TIMER_CB (TRC_HW_VCHIP + 0x9) > +#define TRC_HW_VCHIP_LAPIC_TIMER_CB (TRC_HW_VCHIP + 0xA) > +#define TRC_HW_VCHIP_8259_INT_OUTPUT (TRC_HW_VCHIP + 0xB) Likewise, _PIC_ would be better. Cheers, Tim. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |