Bug 368868

Summary: disInstr(arm64): unhandled instruction 0xD53BE000
Product: [Developer tools] valgrind Reporter: Pasha <pashash>
Component: callgrindAssignee: Josef Weidendorfer <josef.weidendorfer>
Status: RESOLVED FIXED    
Severity: crash CC: jseward
Priority: NOR    
Version First Reported In: 3.12 SVN   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Pasha 2016-09-15 20:00:29 UTC
Failure to decode cntfrq_el0 (ARMv8) instruction

Failure trace:

ARM64 front end: branch_etc
disInstr(arm64): unhandled instruction 0xD53BE000
disInstr(arm64): 1101'0101 0011'1011 1110'0000 0000'0000
==26344== valgrind: Unrecognised instruction at address 0x6395ec0.
==26344==    at 0x6395EC0: ucs_get_cpu_clocks_per_sec (cpu.h:41)
==26344==    by 0x638894B: ucs_async_thread_func (time.h:57)
==26344==    by 0x49F0FB3: start_thread (pthread_create.c:335)
==26344==    by 0x4ADC38F: thread_start (clone.S:89)

Link to UCX source code:
https://github.com/openucx/ucx/blob/master/src/ucs/arch/aarch64/cpu.h#L43
Comment 1 Julian Seward 2017-05-14 10:25:41 UTC
pmaydell, is reading of cntfrq_el0 from user space always allowed?
If so I can just implement this as a pass-through to the host.
Comment 2 Julian Seward 2017-05-14 10:32:07 UTC
Ah, it looks like it is RO at EL0.  Good.
Comment 3 Julian Seward 2017-05-14 13:00:30 UTC
Fixed, vex r3368.