perf: Don't use 4 bytes as a default instruction breakpoint length
authorFrederic Weisbecker <fweisbec@gmail.com>
Thu, 24 Jun 2010 19:36:19 +0000 (21:36 +0200)
committerFrederic Weisbecker <fweisbec@gmail.com>
Thu, 24 Jun 2010 21:35:49 +0000 (23:35 +0200)
4 bytes is fine as a default access for data breakpoints. But
instruction breakpoints should take the native pointer length,
otherwise we get a -EINVAL in x86-64.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Prasad <prasad@linux.vnet.ibm.com>
Cc: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Jason Wessel <jason.wessel@windriver.com>
tools/perf/util/parse-events.c

index 9bf0f40..4af5bd5 100644 (file)
@@ -602,8 +602,15 @@ parse_breakpoint_event(const char **strp, struct perf_event_attr *attr)
                        return EVT_FAILED;
        }
 
-       /* We should find a nice way to override the access type */
-       attr->bp_len = HW_BREAKPOINT_LEN_4;
+       /*
+        * We should find a nice way to override the access length
+        * Provide some defaults for now
+        */
+       if (attr->bp_type == HW_BREAKPOINT_X)
+               attr->bp_len = sizeof(long);
+       else
+               attr->bp_len = HW_BREAKPOINT_LEN_4;
+
        attr->type = PERF_TYPE_BREAKPOINT;
 
        return EVT_HANDLED;