cp15 infrastructure rework
At the moment QEMU handles cp15 accesses by calling out to a single helper function which is an enormous set of nested switch statements to handle the different coprocessor registers. Access permissions are checked separately at translate time. This design makes specifying board-dependent or cpu-dependent registers somewhat painful; it's also easy for the access permission checks to be out of sync. There is no support for banked cp15 registers either (needed for trustzone and virtualisation). We need a better design which lets a board or core register handler routines for cp15 registers. This will make the code cleaner and more maintainable as a base for new features.
Note that this is purely a refactoring, with no user-visible consequences. Acceptance criteria are therefore simply getting the patches upstream.
Blueprint information
- Status:
- Complete
- Approver:
- Michael Hope
- Priority:
- High
- Drafter:
- Peter Maydell
- Direction:
- Approved
- Assignee:
- Peter Maydell
- Definition:
- Approved
- Series goal:
- Accepted for trunk
- Implementation:
-
Implemented
- Milestone target:
- None
- Started by
- Peter Maydell
- Completed by
- Peter Maydell
Related branches
Related bugs
Sprints
Whiteboard
Meta:
Headline: n/a, this is an internal engineering milestone
Acceptance: refactoring patches accepted upstream
[michaelh1 2012-01-24] Deleted the roadmap link. Bump to the next KVM related card as we chose to do the system model first and didn't intend to finish this by Connect.
[michaelh1 2012-06-25] Marked as 'beta available' as posted upstream
[pmaydell 2012-06-25] Patches now in upstream master: blueprint complete
Work Items
Work items:
confirm requirements (usual number of cp15 regs, different banking arrangements, access permissions, 64 bit regs): DONE
write up sketch of proposed design: DONE
implement core design: DONE
convert existing cores to new system: DONE
testing and bugfixing: DONE
clean up and submit patches upstream: DONE
handle any issues raised in code review: DONE
Dependency tree

* Blueprints in grey have been implemented.