From: "Alex Bennée" <alex.bennee@linaro.org>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: "Alessandro Di Federico" <ale@rev.ng>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
qemu-devel@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
"Eduardo Habkost" <eduardo@habkost.net>
Subject: Re: [PATCH 08/10] accel/tcg: push i386 specific hacks into handle_cpu_interrupt callback
Date: Mon, 20 Mar 2023 17:14:19 +0000 [thread overview]
Message-ID: <87mt47738o.fsf@linaro.org> (raw)
In-Reply-To: <c49afab1-9842-e90e-7d1b-69b849b1e63e@linaro.org>
Richard Henderson <richard.henderson@linaro.org> writes:
> On 3/20/23 03:10, Alex Bennée wrote:
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>> include/hw/core/sysemu-cpu-ops.h | 11 +++++++++++
>> target/i386/cpu-internal.h | 1 +
>> accel/tcg/cpu-exec-softmmu.c | 16 ++++++++++++++++
>> accel/tcg/cpu-exec.c | 31 ++++++++++---------------------
>> target/i386/cpu-sysemu.c | 17 +++++++++++++++++
>> target/i386/cpu.c | 1 +
>> 6 files changed, 56 insertions(+), 21 deletions(-)
>> diff --git a/include/hw/core/sysemu-cpu-ops.h
>> b/include/hw/core/sysemu-cpu-ops.h
>> index c9d30172c4..d53907b517 100644
>> --- a/include/hw/core/sysemu-cpu-ops.h
>> +++ b/include/hw/core/sysemu-cpu-ops.h
>> @@ -53,6 +53,15 @@ typedef struct SysemuCPUOps {
>> * @cs: The CPUState
>> */
>> void (*handle_cpu_halt)(CPUState *cpu);
>> + /**
>> + * @handle_cpu_interrupt: handle init/reset interrupts
>> + * @cs: The CPUState
>> + * @irq_request: the interrupt request
>> + *
>> + * Most architectures share a common handler. Returns true if the
>> + * handler did indeed handle and interrupt.
>> + */
>
> and -> the? or any?
>
> This should be a tcg hook, not a sysemu hook, per the previous one.
> I would very much like it to never be NULL, but instead your new
> common_cpu_handle_interrupt function.
I was trying to figure out how to instantiate a default but ran into
const problems eventually forcing me to give up.
Why a TCG hook? Do we not process any interrupts for KVM or HVF?
>
>> -#if defined(TARGET_I386)
>> - else if (interrupt_request & CPU_INTERRUPT_INIT) {
>> - X86CPU *x86_cpu = X86_CPU(cpu);
>> - CPUArchState *env = &x86_cpu->env;
>> - replay_interrupt();
>> - cpu_svm_check_intercept_param(env, SVM_EXIT_INIT, 0, 0);
>> - do_cpu_init(x86_cpu);
>> - cpu->exception_index = EXCP_HALTED;
>> - return true;
>> - }
>> -#else
>> - else if (interrupt_request & CPU_INTERRUPT_RESET) {
>> - replay_interrupt();
>> - cpu_reset(cpu);
>> + else if (cpu->cc->sysemu_ops->handle_cpu_interrupt &&
>> + cpu->cc->sysemu_ops->handle_cpu_interrupt(cpu, interrupt_request)) {
>> + return true;
>> + } else if (common_cpu_handle_interrupt(cpu, interrupt_request)) {
>> return true;
>
> ... because this is pretty ugly, and incorrectly indented.
>
>
> r~
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
next prev parent reply other threads:[~2023-03-20 17:16 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-20 10:10 [PATCH 00/10] accel/tcg: refactor the cpu-exec loop Alex Bennée
2023-03-20 10:10 ` [PATCH 01/10] metadata: add .git-blame-ignore-revs Alex Bennée
2023-03-21 14:17 ` Philippe Mathieu-Daudé
2023-03-20 10:10 ` [PATCH 02/10] accel/tcg: move cpu_reloading_memory_map into cpu-exec-softmmu Alex Bennée
2023-03-20 12:56 ` Claudio Fontana
2023-03-20 13:32 ` Alex Bennée
2023-03-20 14:01 ` Claudio Fontana
2023-03-20 14:33 ` Alex Bennée
2023-03-20 16:14 ` Richard Henderson
2023-03-21 16:07 ` Alessandro Di Federico via
2023-03-20 10:10 ` [PATCH 03/10] accel/tcg: move i386 halt handling to sysemu_ops Alex Bennée
2023-03-20 14:52 ` Philippe Mathieu-Daudé
2023-03-20 17:18 ` Alex Bennée
2023-03-20 15:23 ` Claudio Fontana
2023-03-20 15:34 ` Philippe Mathieu-Daudé
2023-03-21 8:47 ` Claudio Fontana
2023-03-20 17:20 ` Alex Bennée
2023-03-20 10:10 ` [PATCH 04/10] accel/tcg: don't bother with ifdef for CPU_DUMP_CCOP Alex Bennée
2023-03-20 16:16 ` Richard Henderson
2023-03-20 16:17 ` Richard Henderson
2023-03-20 10:10 ` [PATCH 05/10] accel/tcg: remove the fake_user_interrupt guards Alex Bennée
2023-03-20 16:18 ` Richard Henderson
2023-03-20 10:10 ` [PATCH 06/10] includes: move irq definitions out of cpu-all.h Alex Bennée
2023-03-20 16:20 ` Richard Henderson
2023-03-21 16:06 ` Alessandro Di Federico via
2023-03-22 5:25 ` Richard Henderson
2023-03-22 21:15 ` Alessandro Di Federico
2023-03-20 10:10 ` [PATCH 07/10] accel/tcg: use QEMU_IOTHREAD_LOCK_GUARD to cover the exit Alex Bennée
2023-03-20 14:55 ` Philippe Mathieu-Daudé
2023-03-20 16:21 ` Richard Henderson
2023-03-20 10:10 ` [PATCH 08/10] accel/tcg: push i386 specific hacks into handle_cpu_interrupt callback Alex Bennée
2023-03-20 16:27 ` Richard Henderson
2023-03-20 17:14 ` Alex Bennée [this message]
2023-03-21 6:04 ` Richard Henderson
2023-03-20 10:10 ` [PATCH 09/10] accel/tcg: re-inline the filtering of virtual IRQs but data driven Alex Bennée
2023-03-20 14:58 ` Philippe Mathieu-Daudé
2023-03-20 16:30 ` Richard Henderson
2023-03-20 10:10 ` [PATCH 10/10] accel/tcg: remove unused includes Alex Bennée
2023-03-20 16:30 ` Richard Henderson
2023-03-21 16:07 ` Alessandro Di Federico via
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87mt47738o.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=ale@rev.ng \
--cc=eduardo@habkost.net \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.