AArch64 emulation ignores SPSel=0 when taking (or returning from) an exception at EL1 or greater
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
Unassigned | ||
qemu (Ubuntu) |
Fix Released
|
Medium
|
Chris J Arges |
Bug Description
The AArch64 emulation ignores SPSel=0 when:
(1) taking an interrupt from an exception level greater than EL0 (e.g., EL1t),
(2) returning from an exception (via ERET) to an exception level greater than EL0 (e.g., EL1t), with SPSR_ELx[SPSel]=0.
The attached patch fixes the problem in my application.
Background:
I'm running a standalone application (toy OS) that is performing preemptive multithreading between threads running at EL1t, with exception handling / context switching occurring at EL1h. This bug causes the stack pointer to be corrupted in the threads running at EL1t (they end up with a version of the EL1h stack pointer (SP_EL1)).
Occurs in:
qemu-2.1.0-rc1 (found in)
commit c60a57ff4976677
Changed in qemu (Ubuntu): | |
assignee: | nobody → Chris J Arges (arges) |
status: | New → In Progress |
importance: | Undecided → Medium |
Changed in qemu: | |
status: | New → Fix Committed |
Changed in qemu: | |
status: | Fix Committed → Fix Released |
On Mon, Jul 28, 2014 at 07:40:56AM -0000, T McIntosh wrote:
> Public bug reported:
>
> The AArch64 emulation ignores SPSel=0 when:
>
> (1) taking an interrupt from an exception level greater than EL0 (e.g.,
> EL1t),
>
> (2) returning from an exception (via ERET) to an exception level greater
> than EL0 (e.g., EL1t), with SPSR_ELx[SPSel]=0.
>
> The attached patch fixes the problem in my application.
Hi,
Patches 1-3 in the following series fix the this problem. lists.gnu. org/archive/ html/qemu- devel/2014- 06/msg03675. html
http://
Cheers,
Edgar