Message ID | 1411604219-15029-1-git-send-email-aik@ozlabs.ru |
---|---|
State | New |
Headers | show |
On Do, 2014-09-25 at 10:16 +1000, Alexey Kardashevskiy wrote: > Recent traces rework introduced 2 tracepoints with 13 and 20 > arguments. When dtrace backend is selected > (--enable-trace-backend=dtrace), compile fails as > sys/sdt.h defines DTRACE_PROBE up to DTRACE_PROBE12 only. > > This splits long tracepoints. Can you also change the tracing-enabled check to use '#ifndef CONFIG_TRACE_NOP' as suggested by Stefan please? thanks, Gerd
Alexey Kardashevskiy writes: > Recent traces rework introduced 2 tracepoints with 13 and 20 > arguments. When dtrace backend is selected > (--enable-trace-backend=dtrace), compile fails as > sys/sdt.h defines DTRACE_PROBE up to DTRACE_PROBE12 only. FWIW lltng ust limits TP_ARGS to 10 fields. > > This splits long tracepoints. > > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> > > --- > > And this one should be squashed into > [PATCH] ohci: Convert fprint/DPRINTF/print to traces > > Sorry about that... > --- > hw/usb/hcd-ohci.c | 20 ++++++++++++-------- > trace-events | 6 ++++-- > 2 files changed, 16 insertions(+), 10 deletions(-) > > diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c > index 7ea871d..8d3c9cc 100644 > --- a/hw/usb/hcd-ohci.c > +++ b/hw/usb/hcd-ohci.c > @@ -723,11 +723,14 @@ static int ohci_service_iso_td(OHCIState *ohci, struct ohci_ed *ed, > trace_usb_ohci_iso_td_head( > ed->head & OHCI_DPTR_MASK, ed->tail & OHCI_DPTR_MASK, > iso_td.flags, iso_td.bp, iso_td.next, iso_td.be, > - iso_td.offset[0], iso_td.offset[1], iso_td.offset[2], iso_td.offset[3], > - iso_td.offset[4], iso_td.offset[5], iso_td.offset[6], iso_td.offset[7], > - ohci->frame_number, starting_frame, > - frame_count, relative_frame_number, > + ohci->frame_number, starting_frame, > + frame_count, relative_frame_number, > OHCI_BM(iso_td.flags, TD_DI), OHCI_BM(iso_td.flags, TD_CC)); > + trace_usb_ohci_iso_td_head_offset( > + iso_td.offset[0], iso_td.offset[1], > + iso_td.offset[2], iso_td.offset[3], > + iso_td.offset[4], iso_td.offset[5], > + iso_td.offset[6], iso_td.offset[7]); > > if (relative_frame_number < 0) { > trace_usb_ohci_iso_td_relative_frame_number_neg(relative_frame_number); > @@ -1199,13 +1202,14 @@ static int ohci_service_ed_list(OHCIState *ohci, uint32_t head, int completion) > } > > while ((ed.head & OHCI_DPTR_MASK) != ed.tail) { > - trace_usb_ohci_ed_pkt(cur, > + trace_usb_ohci_ed_pkt(cur, (ed.head & OHCI_ED_H) != 0, > + (ed.head & OHCI_ED_C) != 0, ed.head & OHCI_DPTR_MASK, > + ed.tail & OHCI_DPTR_MASK, ed.next & OHCI_DPTR_MASK); > + trace_usb_ohci_ed_pkt_flags( > OHCI_BM(ed.flags, ED_FA), OHCI_BM(ed.flags, ED_EN), > OHCI_BM(ed.flags, ED_D), (ed.flags & OHCI_ED_S)!= 0, > (ed.flags & OHCI_ED_K) != 0, (ed.flags & OHCI_ED_F) != 0, > - OHCI_BM(ed.flags, ED_MPS), (ed.head & OHCI_ED_H) != 0, > - (ed.head & OHCI_ED_C) != 0, ed.head & OHCI_DPTR_MASK, > - ed.tail & OHCI_DPTR_MASK, ed.next & OHCI_DPTR_MASK); > + OHCI_BM(ed.flags, ED_MPS)); > > active = 1; > > diff --git a/trace-events b/trace-events > index a747ab1..02aa592 100644 > --- a/trace-events > +++ b/trace-events > @@ -297,7 +297,8 @@ usb_port_release(int bus, const char *port) "bus %d, port %s" > > # hw/usb/hcd-ohci.c > usb_ohci_iso_td_read_failed(uint32_t addr) "ISO_TD read error at %x" > -usb_ohci_iso_td_head(uint32_t head, uint32_t tail, uint32_t flags, uint32_t bp, uint32_t next, uint32_t be, uint32_t o0, uint32_t o1, uint32_t o2, uint32_t o3, uint32_t o4, uint32_t o5, uint32_t o6, uint32_t o7, uint32_t framenum, uint32_t startframe, uint32_t framecount, int rel_frame_num, uint32_t bm_di, uint32_t td_cc) "ISO_TD ED head 0x%.8x tailp 0x%.8x\n0x%.8x 0x%.8x 0x%.8x 0x%.8x\n0x%.8x 0x%.8x 0x%.8x 0x%.8x\n0x%.8x 0x%.8x 0x%.8x 0x%.8x\nframe_number 0x%.8x starting_frame 0x%.8x\nframe_count 0x%.8x relative %d\ndi 0x%.8x cc 0x%.8x" > +usb_ohci_iso_td_head(uint32_t head, uint32_t tail, uint32_t flags, uint32_t bp, uint32_t next, uint32_t be, uint32_t framenum, uint32_t startframe, uint32_t framecount, int rel_frame_num, uint32_t bm_di, uint32_t td_cc) "ISO_TD ED head 0x%.8x tailp 0x%.8x\n0x%.8x 0x%.8x 0x%.8x 0x%.8x\nframe_number 0x%.8x starting_frame 0x%.8x\nframe_count 0x%.8x relative %d\ndi 0x%.8x cc 0x%.8x" > +usb_ohci_iso_td_head_offset(uint32_t o0, uint32_t o1, uint32_t o2, uint32_t o3, uint32_t o4, uint32_t o5, uint32_t o6, uint32_t o7) "0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x" > usb_ohci_iso_td_relative_frame_number_neg(int rel) "ISO_TD R=%d < 0" > usb_ohci_iso_td_relative_frame_number_big(int rel, int count) "ISO_TD R=%d > FC=%d" > usb_ohci_iso_td_bad_direction(int dir) "Bad direction %d" > @@ -336,7 +337,8 @@ usb_ohci_td_pkt_full(const char *dir, const char *buf) "%s data: %s" > usb_ohci_td_too_many_pending(void) "" > usb_ohci_td_packet_status(int status) "status=%d" > usb_ohci_ed_read_error(uint32_t addr) "ED read error at %x" > -usb_ohci_ed_pkt(uint32_t cur, uint32_t fa, uint32_t en, uint32_t d, int s, int k, int f, uint32_t mps, int h, int c, uint32_t head, uint32_t tail, uint32_t next) "ED @ 0x%.8x fa=%u en=%u d=%u s=%u k=%u f=%u mps=%u h=%u c=%u\n head=0x%.8x tailp=0x%.8x next=0x%.8x" > +usb_ohci_ed_pkt(uint32_t cur, int h, int c, uint32_t head, uint32_t tail, uint32_t next) "ED @ 0x%.8x h=%u c=%u\n head=0x%.8x tailp=0x%.8x next=0x%.8x" > +usb_ohci_ed_pkt_flags(uint32_t fa, uint32_t en, uint32_t d, int s, int k, int f, uint32_t mps) "fa=%u en=%u d=%u s=%u k=%u f=%u mps=%u" > usb_ohci_hcca_read_error(uint32_t addr) "HCCA read error at %x" > usb_ohci_mem_read_unaligned(uint32_t addr) "at %x" > usb_ohci_mem_read_bad_offset(uint32_t addr) "%x"
On 09/25/2014 06:09 PM, Gerd Hoffmann wrote: > On Do, 2014-09-25 at 10:16 +1000, Alexey Kardashevskiy wrote: >> Recent traces rework introduced 2 tracepoints with 13 and 20 >> arguments. When dtrace backend is selected >> (--enable-trace-backend=dtrace), compile fails as >> sys/sdt.h defines DTRACE_PROBE up to DTRACE_PROBE12 only. >> >> This splits long tracepoints. > > Can you also change the tracing-enabled check to use '#ifndef > CONFIG_TRACE_NOP' as suggested by Stefan please? Nope :( As I said in that thread, I am not familiar with "dtrace" - are traces configurable with it? With --enable-trace-backend=dtrace, trace_event_get_state is not defined so CONFIG_TRACE_NOP is not 100% equal replacement.
On Do, 2014-09-25 at 19:38 +1000, Alexey Kardashevskiy wrote: > On 09/25/2014 06:09 PM, Gerd Hoffmann wrote: > > On Do, 2014-09-25 at 10:16 +1000, Alexey Kardashevskiy wrote: > >> Recent traces rework introduced 2 tracepoints with 13 and 20 > >> arguments. When dtrace backend is selected > >> (--enable-trace-backend=dtrace), compile fails as > >> sys/sdt.h defines DTRACE_PROBE up to DTRACE_PROBE12 only. > >> > >> This splits long tracepoints. > > > > Can you also change the tracing-enabled check to use '#ifndef > > CONFIG_TRACE_NOP' as suggested by Stefan please? > > Nope :( As I said in that thread, I am not familiar with "dtrace" - are > traces configurable with it? With --enable-trace-backend=dtrace, > trace_event_get_state is not defined so CONFIG_TRACE_NOP is not 100% equal > replacement. Ah, ok. IIRC with dtrace / systemtap you enable the trace point by other means than qemu monitor commands, which is probably the reason trace_event_get_state isn't there. So trying to skip the calls with tracing turned off isn't going to fly as qemu doesn't know in the first place whenever a tracepoint is enabled or not. cheers, Gerd
On Thu, Sep 25, 2014 at 10:16:59AM +1000, Alexey Kardashevskiy wrote: > Recent traces rework introduced 2 tracepoints with 13 and 20 > arguments. When dtrace backend is selected > (--enable-trace-backend=dtrace), compile fails as > sys/sdt.h defines DTRACE_PROBE up to DTRACE_PROBE12 only. > > This splits long tracepoints. > > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> > > --- > > And this one should be squashed into > [PATCH] ohci: Convert fprint/DPRINTF/print to traces > > Sorry about that... > --- > hw/usb/hcd-ohci.c | 20 ++++++++++++-------- > trace-events | 6 ++++-- > 2 files changed, 16 insertions(+), 10 deletions(-) Thanks, applied to my tracing tree: https://github.com/stefanha/qemu/commits/tracing Stefan
diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index 7ea871d..8d3c9cc 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -723,11 +723,14 @@ static int ohci_service_iso_td(OHCIState *ohci, struct ohci_ed *ed, trace_usb_ohci_iso_td_head( ed->head & OHCI_DPTR_MASK, ed->tail & OHCI_DPTR_MASK, iso_td.flags, iso_td.bp, iso_td.next, iso_td.be, - iso_td.offset[0], iso_td.offset[1], iso_td.offset[2], iso_td.offset[3], - iso_td.offset[4], iso_td.offset[5], iso_td.offset[6], iso_td.offset[7], - ohci->frame_number, starting_frame, - frame_count, relative_frame_number, + ohci->frame_number, starting_frame, + frame_count, relative_frame_number, OHCI_BM(iso_td.flags, TD_DI), OHCI_BM(iso_td.flags, TD_CC)); + trace_usb_ohci_iso_td_head_offset( + iso_td.offset[0], iso_td.offset[1], + iso_td.offset[2], iso_td.offset[3], + iso_td.offset[4], iso_td.offset[5], + iso_td.offset[6], iso_td.offset[7]); if (relative_frame_number < 0) { trace_usb_ohci_iso_td_relative_frame_number_neg(relative_frame_number); @@ -1199,13 +1202,14 @@ static int ohci_service_ed_list(OHCIState *ohci, uint32_t head, int completion) } while ((ed.head & OHCI_DPTR_MASK) != ed.tail) { - trace_usb_ohci_ed_pkt(cur, + trace_usb_ohci_ed_pkt(cur, (ed.head & OHCI_ED_H) != 0, + (ed.head & OHCI_ED_C) != 0, ed.head & OHCI_DPTR_MASK, + ed.tail & OHCI_DPTR_MASK, ed.next & OHCI_DPTR_MASK); + trace_usb_ohci_ed_pkt_flags( OHCI_BM(ed.flags, ED_FA), OHCI_BM(ed.flags, ED_EN), OHCI_BM(ed.flags, ED_D), (ed.flags & OHCI_ED_S)!= 0, (ed.flags & OHCI_ED_K) != 0, (ed.flags & OHCI_ED_F) != 0, - OHCI_BM(ed.flags, ED_MPS), (ed.head & OHCI_ED_H) != 0, - (ed.head & OHCI_ED_C) != 0, ed.head & OHCI_DPTR_MASK, - ed.tail & OHCI_DPTR_MASK, ed.next & OHCI_DPTR_MASK); + OHCI_BM(ed.flags, ED_MPS)); active = 1; diff --git a/trace-events b/trace-events index a747ab1..02aa592 100644 --- a/trace-events +++ b/trace-events @@ -297,7 +297,8 @@ usb_port_release(int bus, const char *port) "bus %d, port %s" # hw/usb/hcd-ohci.c usb_ohci_iso_td_read_failed(uint32_t addr) "ISO_TD read error at %x" -usb_ohci_iso_td_head(uint32_t head, uint32_t tail, uint32_t flags, uint32_t bp, uint32_t next, uint32_t be, uint32_t o0, uint32_t o1, uint32_t o2, uint32_t o3, uint32_t o4, uint32_t o5, uint32_t o6, uint32_t o7, uint32_t framenum, uint32_t startframe, uint32_t framecount, int rel_frame_num, uint32_t bm_di, uint32_t td_cc) "ISO_TD ED head 0x%.8x tailp 0x%.8x\n0x%.8x 0x%.8x 0x%.8x 0x%.8x\n0x%.8x 0x%.8x 0x%.8x 0x%.8x\n0x%.8x 0x%.8x 0x%.8x 0x%.8x\nframe_number 0x%.8x starting_frame 0x%.8x\nframe_count 0x%.8x relative %d\ndi 0x%.8x cc 0x%.8x" +usb_ohci_iso_td_head(uint32_t head, uint32_t tail, uint32_t flags, uint32_t bp, uint32_t next, uint32_t be, uint32_t framenum, uint32_t startframe, uint32_t framecount, int rel_frame_num, uint32_t bm_di, uint32_t td_cc) "ISO_TD ED head 0x%.8x tailp 0x%.8x\n0x%.8x 0x%.8x 0x%.8x 0x%.8x\nframe_number 0x%.8x starting_frame 0x%.8x\nframe_count 0x%.8x relative %d\ndi 0x%.8x cc 0x%.8x" +usb_ohci_iso_td_head_offset(uint32_t o0, uint32_t o1, uint32_t o2, uint32_t o3, uint32_t o4, uint32_t o5, uint32_t o6, uint32_t o7) "0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x" usb_ohci_iso_td_relative_frame_number_neg(int rel) "ISO_TD R=%d < 0" usb_ohci_iso_td_relative_frame_number_big(int rel, int count) "ISO_TD R=%d > FC=%d" usb_ohci_iso_td_bad_direction(int dir) "Bad direction %d" @@ -336,7 +337,8 @@ usb_ohci_td_pkt_full(const char *dir, const char *buf) "%s data: %s" usb_ohci_td_too_many_pending(void) "" usb_ohci_td_packet_status(int status) "status=%d" usb_ohci_ed_read_error(uint32_t addr) "ED read error at %x" -usb_ohci_ed_pkt(uint32_t cur, uint32_t fa, uint32_t en, uint32_t d, int s, int k, int f, uint32_t mps, int h, int c, uint32_t head, uint32_t tail, uint32_t next) "ED @ 0x%.8x fa=%u en=%u d=%u s=%u k=%u f=%u mps=%u h=%u c=%u\n head=0x%.8x tailp=0x%.8x next=0x%.8x" +usb_ohci_ed_pkt(uint32_t cur, int h, int c, uint32_t head, uint32_t tail, uint32_t next) "ED @ 0x%.8x h=%u c=%u\n head=0x%.8x tailp=0x%.8x next=0x%.8x" +usb_ohci_ed_pkt_flags(uint32_t fa, uint32_t en, uint32_t d, int s, int k, int f, uint32_t mps) "fa=%u en=%u d=%u s=%u k=%u f=%u mps=%u" usb_ohci_hcca_read_error(uint32_t addr) "HCCA read error at %x" usb_ohci_mem_read_unaligned(uint32_t addr) "at %x" usb_ohci_mem_read_bad_offset(uint32_t addr) "%x"
Recent traces rework introduced 2 tracepoints with 13 and 20 arguments. When dtrace backend is selected (--enable-trace-backend=dtrace), compile fails as sys/sdt.h defines DTRACE_PROBE up to DTRACE_PROBE12 only. This splits long tracepoints. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> --- And this one should be squashed into [PATCH] ohci: Convert fprint/DPRINTF/print to traces Sorry about that... --- hw/usb/hcd-ohci.c | 20 ++++++++++++-------- trace-events | 6 ++++-- 2 files changed, 16 insertions(+), 10 deletions(-)