diff mbox

ohci: Split long traces to smaller ones

Message ID 1411604219-15029-1-git-send-email-aik@ozlabs.ru
State New
Headers show

Commit Message

Alexey Kardashevskiy Sept. 25, 2014, 12:16 a.m. UTC
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(-)

Comments

Gerd Hoffmann Sept. 25, 2014, 8:09 a.m. UTC | #1
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
Alex Bennée Sept. 25, 2014, 9:18 a.m. UTC | #2
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"
Alexey Kardashevskiy Sept. 25, 2014, 9:38 a.m. UTC | #3
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.
Gerd Hoffmann Sept. 25, 2014, 2:08 p.m. UTC | #4
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
Stefan Hajnoczi Sept. 26, 2014, 8:51 a.m. UTC | #5
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 mbox

Patch

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"