Finish Thumb2 Support

Registered by Mounir Bsaibes

Finish Thumb2 support for kprobes, ftrace, dynamic trace, stack backtraces, string routines (11.05)

Blueprint information

Deepak Saxena
Needs approval
Dave Martin
Series goal:
Accepted for devtrack
Good progress
Milestone target:
milestone icon backlog
Started by
Mounir Bsaibes
Completed by
Deepak Saxena

Related branches



Headline: Extend kprobes to support Thumb-2 kernels. Kprobes enable dynamically breaking into any kernel routine and collecting debugging and performance information non-disruptively. They are used as a building block by various tracing and performance monitoring tools.


Work Items

Work items for 11.07:
[tixy] kprobes - Create emulation and test code for Thumb-2 instructions prefixed 1111100: DONE
[tixy] kprobes - Create emulation and test code for remaining Thumb-2 instructions: DONE
[tixy] kprobes - Optimise STM and LDM emulation: DONE
[tixy] kprobes - Reject probing of intsructions which do UNPREDICTABLE writes to SP: DONE
[tixy] kprobes - Write test code for IT Blocks with >1 instruction: DONE
[tixy] kprobes - Investigate cause of A flag randomness in test code: DONE
[tixy] kprobes - Add decoding table self consistency, and test case coverage checks: DONE
[tixy] kprobes - Tidyup and document kprobe changes: DONE
[tixy] kprobes - Tidyup and document kprobe test code: POSTPONED
[tixy] kprobes - Prepare patches for review: DONE
[npitre] kprobes - Code review of Thumb probing code: DONE
[tixy] kprobes - Decide on and implement handling of conditional instruction probing: DONE
[tixy] kprobes - Investigate an resolve any issues with text_mutex: DONE
[tixy] kprobes - Rework following code review of Thumb probing code: DONE
[tixy] kprobes - Modify ARM instruction emulation to use decode tables: DONE
[tixy] kprobes - Make ARM ALU and LDR instruction emulation interwork with Thumb: DONE
[tixy] kprobes - Tidyup ARM instruction emulation and prepare patches for review: DONE
[npitre] kprobes - Code review of ARM probing code and any other changes: DONE
[tixy] kprobes - Rework following code review of ARM probing code: DONE
[tixy] kprobes - Submit patches: DONE
[dave-martin-arm] follow up to see if Versatile Express can be built in thumb2 by default in Linaro kernels -- cmarinas says it works: DONE
[dave-martin-arm] enable Thumb-2 for linaro vexpress kernels: DONE
[dave-martin-arm] investigate whether breakpoints facility in perf userspace tool is broken (assuming that sizeof(unsigned long) == sizeof(instructions)) -- yes, it's broken: DONE

Work items for 11.10:
[dave-martin-arm] to document what he needed to do get Thumb-2 kernel working for a new SoC: DONE
[dave-martin-arm] to follow up with each landing team to find some one to implement Thumb-2 for each remaining SoC: TODO

Work items:
[dave-martin-arm] extend perf userspace tool memory event syntax to allow breakpoint size to be specified: TODO
[dave-martin-arm] submit perf extension upsteram: TODO
Make thumb state bit in kernel symbols and module symbols consitant with each other. This is blocking a fix for jprobes. (See TODO

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.