[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly
From: |
Eduardo Habkost |
Subject: |
Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly |
Date: |
Mon, 7 Dec 2020 12:49:16 -0500 |
On Mon, Dec 07, 2020 at 09:40:42AM +0100, Claudio Fontana wrote:
> cc->do_interrupt is a TCG callback used in accel/tcg only,
> call instead directly the arm_cpu_do_interrupt for the
> injection of exeptions from KVM, so that
>
> do_interrupt can be exported to TCG-only operations in the CPUClass.
>
> Signed-off-by: Claudio Fontana <cfontana@suse.de>
> ---
> target/arm/helper.c | 4 ++++
> target/arm/kvm64.c | 4 ++--
> 2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/target/arm/helper.c b/target/arm/helper.c
> index 38cd35c049..bebaabf525 100644
> --- a/target/arm/helper.c
> +++ b/target/arm/helper.c
> @@ -9895,6 +9895,10 @@ static void handle_semihosting(CPUState *cs)
> * Do any appropriate logging, handle PSCI calls, and then hand off
> * to the AArch64-entry or AArch32-entry function depending on the
> * target exception level's register width.
> + *
> + * Note: this is used for both TCG (as the do_interrupt tcg op),
> + * and KVM to re-inject guest debug exceptions, and to
> + * inject a Synchronous-External-Abort.
> */
> void arm_cpu_do_interrupt(CPUState *cs)
> {
> diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c
> index f74bac2457..2b17e4203d 100644
> --- a/target/arm/kvm64.c
> +++ b/target/arm/kvm64.c
> @@ -960,7 +960,7 @@ static void kvm_inject_arm_sea(CPUState *c)
>
> env->exception.syndrome = esr;
>
> - cc->do_interrupt(c);
> + arm_cpu_do_interrupt(c);
How can we be sure cc->do_interrupt always points to
arm_cpu_do_interrupt today?
arm_v7m_class_init() (used by cortex-* CPU models) overrides it.
Those CPU models as "TCG CPUs" in the code, but I don't see what
makes them TCG-specific. What exactly is the expected behavior
if using, e.g., "-cpu cortex-m33 -accel kvm"?
> }
>
> #define AARCH64_CORE_REG(x) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | \
> @@ -1545,7 +1545,7 @@ bool kvm_arm_handle_debug(CPUState *cs, struct
> kvm_debug_exit_arch *debug_exit)
> env->exception.vaddress = debug_exit->far;
> env->exception.target_el = 1;
> qemu_mutex_lock_iothread();
> - cc->do_interrupt(cs);
> + arm_cpu_do_interrupt(cs);
> qemu_mutex_unlock_iothread();
>
> return false;
> --
> 2.26.2
>
--
Eduardo
- [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Claudio Fontana, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Philippe Mathieu-Daudé, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Alex Bennée, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly,
Eduardo Habkost <=
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Peter Maydell, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Claudio Fontana, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Eduardo Habkost, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Peter Maydell, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Peter Maydell, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Claudio Fontana, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Peter Maydell, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Claudio Fontana, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Eduardo Habkost, 2020/12/07
- Re: [PATCH] target/arm: do not use cc->do_interrupt for KVM directly, Eduardo Habkost, 2020/12/07