All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: "Claudio Fontana" <cfontana@suse.de>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Laurent Vivier" <lvivier@redhat.com>
Cc: 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>
Subject: Re: [PATCH v15 21/23] hw/core/cpu: call qemu_init_vcpu in cpu_common_realizefn
Date: Thu, 4 Feb 2021 14:41:13 +0100	[thread overview]
Message-ID: <05980f44-88a6-6ef7-b263-07c2d898b8f0@redhat.com> (raw)
In-Reply-To: <7500a412-c94a-6990-eb48-9ee78bfb94e3@suse.de>

On 2/4/21 11:23 AM, Claudio Fontana wrote:
> On 2/3/21 5:51 PM, Alex Bennée wrote:
>>
>> Claudio Fontana <cfontana@suse.de> writes:
>>
>>> move the call to qemu_init_vcpu inside cpu_common_realizefn,
>>> so it does not need to be done explicitly in each target cpu.
>>>
>>> Despite this, the way cpu realize is done continues to be not ideal;
>>>
>>> ideally the cpu_list_add would be done in common_cpu,
>>> and in this case we could avoid even more redundant open coded
>>> additional calls in target/xxx/cpu.c,
>>>
>>> but this cannot happen because target cpu code, plugins, etc
>>> now all came to rely on cpu->index
>>> (which is updated in cpu_list_add), since no particular order
>>> was defined previously, so we are stuck with the freak call
>>> order for the target cpu realizefn.
>>>
>>> After this patch the target/xxx/cpu.c realizefn body becomes:
>>>
>>> void mycpu_realizefn(DeviceState *dev, Error **errp)
>>> {
>>>     /* ... */
>>>     cpu_exec_realizefn(CPU_STATE(dev), errp);
>>>
>>>     /* ... anything that needs done pre-qemu_vcpu_init */
>>>
>>>     xcc->parent_realize(dev, errp); /* does qemu_vcpu_init */
>>>
>>>     /* ... anything that needs to be done after qemu_vcpu_init */
>>> }
>>
>> Uggh, introducing a magic order seems like inviting trouble for later
>> on. Is there anyway we can improve things? Paolo?
>>
> 
> 
> The magic order is there already. I call it "freak order" instead of "magic", because this is more the result of uncontrolled code growth rather than the work of magic :-)

Eventually related to this unsolved problem:

  cpu_reset() might modify architecture-specific fields allocated
  by qemu_init_vcpu(). To avoid bugs similar to the one fixed in
  commit 00d0f7cb66 when introducing new architectures, move the
  cpu_reset() calls after qemu_init_vcpu().

See discussion:
https://www.mail-archive.com/qemu-devel@nongnu.org/msg686480.html

> 
> This patch attempts to remove one degree of freedom, but the current situation of cpu realizing is basically fubar. This patch attempts to improve things slightly,
> but as mentioned elsewhere it basically fails to achieve the goal,
> 
> so I am tempted to just retire it. Maybe someone interested could look at the situation with new eyes (possibly even me later on).



  reply	other threads:[~2021-02-04 13:42 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
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é [this message]
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=05980f44-88a6-6ef7-b263-07c2d898b8f0@redhat.com \
    --to=philmd@redhat.com \
    --cc=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=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.