On 6/21/25 19:52, Richard Henderson wrote:
> On 6/20/25 10:27, Philippe Mathieu-Daudé wrote:
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>> accel/split/split-accel-ops.c | 11 ++++++++++-
>> 1 file changed, 10 insertions(+), 1 deletion(-)
>>
>> diff --git a/accel/split/split-accel-ops.c b/accel/split/split-accel-ops.c
>> index 65feb929404..80efbd82091 100644
>> --- a/accel/split/split-accel-ops.c
>> +++ b/accel/split/split-accel-ops.c
>> @@ -165,7 +165,16 @@ static void split_synchronize_post_init(CPUState *cpu)
>> static void split_synchronize_state(CPUState *cpu)
>> {
>> - g_assert_not_reached();
>> + SplitAccelState *sas = SPLIT_ACCEL(cpu->accel->accel);
>> + AccelClass *hwc = ACCEL_GET_CLASS(sas->hw);
>> + AccelClass *swc = ACCEL_GET_CLASS(sas->sw);
>> +
>> + if (hwc->ops->synchronize_state) {
>> + hwc->ops->synchronize_state(cpu);
>> + }
>> + if (swc->ops->synchronize_state) {
>> + swc->ops->synchronize_state(cpu);
>> + }
>> }
>
> I suppose in the short-term this is ok, but it does more work than it should.
>
> Let's make the simplifying assumption that even if there is another sw emulator, it'll
> still use CPUArchState. So the "sync" to sw is pointless.
>
> But syncing state to hw is only applicable when use_hw is true.
> I'm not sure how to do the pointer chasing to find that from here.
The same applies to patches 14-18.
r~