From: "Alex Bennée" <alex.bennee@linaro.org>
To: Claudio Fontana <cfontana@suse.de>
Cc: "Laurent Vivier" <lvivier@redhat.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Thomas Huth" <thuth@redhat.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
qemu-devel@nongnu.org, "Roman Bolshakov" <r.bolshakov@yadro.com>,
"Alistair Francis" <alistair.francis@wdc.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: Re: [PATCH v15 04/23] cpu: Move synchronize_from_tb() to tcg_ops
Date: Thu, 04 Feb 2021 11:44:14 +0000 [thread overview]
Message-ID: <878s84qcq3.fsf@linaro.org> (raw)
In-Reply-To: <3a64b90c-90f5-864d-c432-0412ba429aa1@suse.de>
Claudio Fontana <cfontana@suse.de> writes:
> On 2/3/21 1:31 PM, Claudio Fontana wrote:
>> On 2/3/21 11:11 AM, Alex Bennée wrote:
>>>
>>> Claudio Fontana <cfontana@suse.de> writes:
>>>
>>>> From: Eduardo Habkost <ehabkost@redhat.com>
>>>>
>>>> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
>>>>
>>>> [claudio: wrapped target code in CONFIG_TCG]
>>>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>>>> ---
>>>> include/hw/core/cpu.h | 20 +++++++++++---------
>>>> accel/tcg/cpu-exec.c | 4 ++--
>>>> target/arm/cpu.c | 4 +++-
>>>> target/avr/cpu.c | 2 +-
>>>> target/hppa/cpu.c | 2 +-
>>>> target/i386/tcg/tcg-cpu.c | 2 +-
>>>> target/microblaze/cpu.c | 2 +-
>>>> target/mips/cpu.c | 4 +++-
>>>> target/riscv/cpu.c | 2 +-
>>>> target/rx/cpu.c | 2 +-
>>>> target/sh4/cpu.c | 2 +-
>>>> target/sparc/cpu.c | 2 +-
>>>> target/tricore/cpu.c | 2 +-
>>>> 13 files changed, 28 insertions(+), 22 deletions(-)
>>>>
>>>> diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
>>>> index d0b17dcc4c..b9803885e5 100644
>>>> --- a/include/hw/core/cpu.h
>>>> +++ b/include/hw/core/cpu.h
>>>> @@ -86,6 +86,17 @@ typedef struct TcgCpuOperations {
>>>> * Called when the first CPU is realized.
>>>> */
>>>> void (*initialize)(void);
>>>> + /**
>>>> + * @synchronize_from_tb: Synchronize state from a TCG #TranslationBlock
>>>> + *
>>>> + * This is called when we abandon execution of a TB before
>>>> + * starting it, and must set all parts of the CPU state which
>>>> + * the previous TB in the chain may not have updated. This
>>>> + * will need to do more. If this hook is not implemented then
>>>> + * the default is to call @set_pc(tb->pc).
>>>> + */
>>>> + void (*synchronize_from_tb)(CPUState *cpu,
>>>> + const struct TranslationBlock *tb);
>>>
>>> Did you miss my comment last time or just not think it flowed better?
>>>
>>> ...TB in the chain may not have updated. By default when no hook is
>>> defined a call is made to @set_pc(tb->pc). If more state needs to be
>>> restored the front-end must provide a hook function and restore all the
>>> state there.
>>>
>>> Either way:
>>>
>>> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
>>>
>>
>> Hi Alex, sorry for missing this change, can add it for the next respin,
>>
>> and thanks for looking at this,
>>
>> Ciao,
>>
>> Claudio
>
> /**
> * @synchronize_from_tb: Synchronize state from a TCG #TranslationBlock
> *
> * This is called when we abandon execution of a TB before starting it,
> * and must set all parts of the CPU state which the previous TB in the
> * chain may not have updated.
> * By default, when this is NULL, a call is made to @set_pc(tb->pc).
> *
> * If more state needs to be restored, the target must implement a
> * function to restore all the state, and register it here.
> */
>
>
> I changed the wording a bit, because to me it is easier to think about "target" than about "front-end", but maybe I am missing something.
> I am also not in love with the term hook, we are trying to end up with a proper interface, as we complete this series,
> a nice struct that the target can provide with all the functions necessary to implement the TCG operations.
>
> Let me know if this requires additional revision,
LGTM
--
Alex Bennée
next prev parent reply other threads:[~2021-02-04 11:46 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-01 10:08 [PATCH v15 00/23] i386 cleanup PART 2 Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 01/23] cpu: Introduce TCGCpuOperations struct Claudio Fontana
2021-02-02 13:46 ` Alex Bennée
2021-02-01 10:08 ` [PATCH v15 02/23] target/riscv: remove CONFIG_TCG, as it is always TCG Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 03/23] accel/tcg: split TCG-only code from cpu_exec_realizefn Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 04/23] cpu: Move synchronize_from_tb() to tcg_ops Claudio Fontana
2021-02-03 10:11 ` Alex Bennée
2021-02-03 12:31 ` Claudio Fontana
2021-02-04 11:18 ` Claudio Fontana
2021-02-04 11:44 ` Alex Bennée [this message]
2021-02-01 10:08 ` [PATCH v15 05/23] cpu: Move cpu_exec_* " Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 06/23] cpu: Move tlb_fill " Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 07/23] cpu: Move debug_excp_handler " Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 08/23] target/arm: do not use cc->do_interrupt for KVM directly Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 09/23] cpu: move cc->do_interrupt to tcg_ops Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 10/23] cpu: move cc->transaction_failed " Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 11/23] cpu: move do_unaligned_access " Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 12/23] physmem: make watchpoint checking code TCG-only Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 13/23] cpu: move adjust_watchpoint_address to tcg_ops Claudio Fontana
2021-02-03 10:15 ` Alex Bennée
2021-02-01 10:08 ` [PATCH v15 14/23] cpu: move debug_check_watchpoint " Claudio Fontana
2021-02-03 13:11 ` Alex Bennée
2021-02-01 10:08 ` [PATCH v15 15/23] cpu: tcg_ops: move to tcg-cpu-ops.h, keep a pointer in CPUClass Claudio Fontana
2021-02-03 13:23 ` Alex Bennée
2021-02-03 14:41 ` Claudio Fontana
2021-02-03 14:48 ` Philippe Mathieu-Daudé
2021-02-03 16:51 ` Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 16/23] accel: extend AccelState and AccelClass to user-mode Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 17/23] accel: replace struct CpusAccel with AccelOpsClass Claudio Fontana
2021-02-03 14:43 ` Alex Bennée
2021-02-01 10:08 ` [PATCH v15 18/23] accel: introduce AccelCPUClass extending CPUClass Claudio Fontana
2021-02-03 14:27 ` Philippe Mathieu-Daudé
2021-02-03 14:49 ` Claudio Fontana
2021-02-03 14:51 ` Philippe Mathieu-Daudé
2021-02-03 14:56 ` Claudio Fontana
2021-02-01 10:08 ` [PATCH v15 19/23] i386: split cpu accelerators from cpu.c, using AccelCPUClass Claudio Fontana
2021-02-03 16:47 ` Alex Bennée
2021-02-01 10:09 ` [PATCH v15 20/23] cpu: call AccelCPUClass::cpu_realizefn in cpu_exec_realizefn Claudio Fontana
2021-02-01 10:09 ` [PATCH v15 21/23] hw/core/cpu: call qemu_init_vcpu in cpu_common_realizefn Claudio Fontana
2021-02-03 16:51 ` Alex Bennée
2021-02-04 10:23 ` Claudio Fontana
2021-02-04 13:41 ` Philippe Mathieu-Daudé
2021-02-04 14:18 ` Claudio Fontana
2021-02-04 14:24 ` Peter Maydell
2021-02-04 14:57 ` Claudio Fontana
2021-02-01 10:09 ` [PATCH v15 22/23] accel: introduce new accessor functions Claudio Fontana
2021-02-03 14:23 ` Philippe Mathieu-Daudé
2021-02-03 14:24 ` Claudio Fontana
2021-02-01 10:09 ` [PATCH v15 23/23] accel-cpu: make cpu_realizefn return a bool Claudio Fontana
2021-02-03 13:34 ` Philippe Mathieu-Daudé
2021-02-03 16:56 ` Alex Bennée
2021-02-03 14:22 ` [PATCH v15 00/23] i386 cleanup PART 2 Alex Bennée
2021-02-03 14:43 ` Claudio Fontana
2021-02-03 16:15 ` Alex Bennée
2021-02-03 14:59 ` Eduardo Habkost
2021-02-03 16:57 ` Alex Bennée
2021-02-03 17:10 ` Claudio Fontana
2021-02-03 22:07 ` Alex Bennée
2021-02-04 9:46 ` Claudio Fontana
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=878s84qcq3.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=alistair.francis@wdc.com \
--cc=cfontana@suse.de \
--cc=ehabkost@redhat.com \
--cc=lvivier@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=r.bolshakov@yadro.com \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
/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.