diff mbox series

[v1,3/4] target/arm64: kvm debug set target_el when passing exception to guest

Message ID 20180926112048.17778-4-alex.bennee@linaro.org
State Superseded
Headers show
Series fixes for kvm/arm64 guest debug | expand

Commit Message

Alex Bennée Sept. 26, 2018, 11:20 a.m. UTC
When we are debugging the guest all exception come our way but might
be for the guests own debug exceptions. We use the ->do_interrupt()
infrastructure to do this however we are missing a full setup of the
exception structure causing an assert later down the line.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

---
 target/arm/kvm64.c | 1 +
 1 file changed, 1 insertion(+)

-- 
2.17.1

Comments

Peter Maydell Oct. 2, 2018, 9:56 a.m. UTC | #1
On 26 September 2018 at 12:20, Alex Bennée <alex.bennee@linaro.org> wrote:
> When we are debugging the guest all exception come our way but might


"exceptions"

> be for the guests own debug exceptions. We use the ->do_interrupt()


"guest's"

> infrastructure to do this however we are missing a full setup of the


"to inject the exception into the guest. However, "

> exception structure causing an assert later down the line.


"structure, "

>

> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

> ---

>  target/arm/kvm64.c | 1 +

>  1 file changed, 1 insertion(+)

>

> diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c

> index 346e1f1a73..9ceff1884c 100644

> --- a/target/arm/kvm64.c

> +++ b/target/arm/kvm64.c

> @@ -984,6 +984,7 @@ bool kvm_arm_handle_debug(CPUState *cs, struct kvm_debug_exit_arch *debug_exit)

>      cs->exception_index = EXCP_BKPT;

>      env->exception.syndrome = debug_exit->hsr;

>      env->exception.vaddress = debug_exit->far;

> +    env->exception.target_el = 1;

>      qemu_mutex_lock_iothread();

>      cc->do_interrupt(cs);

>      qemu_mutex_unlock_iothread();

> --

> 2.17.1

>



Reviewed-by: Peter Maydell <peter.maydell@linaro.org>


thanks
-- PMM
diff mbox series

Patch

diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c
index 346e1f1a73..9ceff1884c 100644
--- a/target/arm/kvm64.c
+++ b/target/arm/kvm64.c
@@ -984,6 +984,7 @@  bool kvm_arm_handle_debug(CPUState *cs, struct kvm_debug_exit_arch *debug_exit)
     cs->exception_index = EXCP_BKPT;
     env->exception.syndrome = debug_exit->hsr;
     env->exception.vaddress = debug_exit->far;
+    env->exception.target_el = 1;
     qemu_mutex_lock_iothread();
     cc->do_interrupt(cs);
     qemu_mutex_unlock_iothread();