All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: "Richard Henderson" <richard.henderson@linaro.org>,
	"David Gibson" <david@gibson.dropbear.id.au>,
	"Cédric Le Goater" <clg@kaod.org>, "Greg Kurz" <groug@kaod.org>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Chris Wulff <crwulff@gmail.com>,
	kvm@vger.kernel.org, David Hildenbrand <david@redhat.com>,
	Bin Meng <bin.meng@windriver.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	qemu-devel@nongnu.org, Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Taylor Simpson <tsimpson@quicinc.com>,
	haxm-team@intel.com, Colin Xu <colin.xu@intel.com>,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Marek Vasut <marex@denx.de>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Paul Durrant <paul@xen.org>, Kamil Rytarowski <kamil@netbsd.org>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	Claudio Fontana <cfontana@suse.de>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Anthony Perard <anthony.perard@citrix.com>,
	xen-devel@lists.xenproject.org,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Laurent Vivier <lvivier@redhat.com>,
	Thomas Huth <thuth@redhat.com>,
	Eduardo Habkost <ehabkost@redhat.com>,
	Cameron Esfahani <dirty@apple.com>,
	qemu-s390x@nongnu.org, qemu-arm@nongnu.org,
	Michael Rolnik <mrolnik@gmail.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	qemu-ppc@nongnu.org, Stafford Horne <shorne@gmail.com>,
	qemu-riscv@nongnu.org,
	Bastian Koppelmann <kbastian@mail.uni-paderborn.de>,
	Cornelia Huck <cohuck@redhat.com>,
	Roman Bolshakov <r.bolshakov@yadro.com>,
	Laurent Vivier <laurent@vivier.eu>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Wenchao Wang <wenchao.wang@intel.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [PATCH v3 21/30] target/ppc: Introduce PowerPCCPUClass::has_work()
Date: Sun, 12 Sep 2021 00:31:31 +0200	[thread overview]
Message-ID: <a49e0100-74d1-2974-990f-a05f9f796cc5@amsat.org> (raw)
In-Reply-To: <fc98e293-f2ba-8ca0-99c8-f07758b79d73@amsat.org>

On 9/3/21 11:11 PM, Philippe Mathieu-Daudé wrote:
> On 9/3/21 10:42 PM, Richard Henderson wrote:
>> On 9/3/21 2:50 AM, David Gibson wrote:
>>> On Thu, Sep 02, 2021 at 06:15:34PM +0200, Philippe Mathieu-Daudé wrote:
>>>> Each POWER cpu has its own has_work() implementation. Instead of
>>>> overloading CPUClass on each PowerPCCPUClass init, register the
>>>> generic ppc_cpu_has_work() handler, and have it call the POWER
>>>> specific has_work().
>>>
>>> I don't quite see the rationale for introducing a second layer of
>>> indirection here.  What's wrong with switching the base has_work for
>>> each cpu variant?
>>
>> We're moving the hook from CPUState to TCGCPUOps.
>> Phil was trying to avoid creating N versions of
>>
>> static const struct TCGCPUOps ppc_tcg_ops = {
>>     ...
>> };
> 
> Ah yes this is the reason! Too many context switching so
> I forgot about it.
> 
>> A plausible alternative is to remove the const from this struct and
>> modify it, just as we do for CPUState, on the assumption that we cannot
>> mix and match ppc cpu types in any one machine.
> 
> I thought about this case and remembered how it works on the ARM arch,
> i.e. ZynqMP machine uses both Cortex-R5F and Cortex-A53. Even if no
> similar PPC machine exists, IMHO we should try to generally allow to
> possibility to experiment machine with different CPUs. Restricting it
> on PPC goes the other way around. Thoughts?

I'm running out of ideas to do avoid the indirection and multiple
copies of TCGCPUOps. I'm not giving up, I suppose I'm simply not
seeing it... David, any suggestions?

WARNING: multiple messages have this Message-ID (diff)
From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: "Richard Henderson" <richard.henderson@linaro.org>,
	"David Gibson" <david@gibson.dropbear.id.au>,
	"Cédric Le Goater" <clg@kaod.org>, "Greg Kurz" <groug@kaod.org>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Cornelia Huck <cohuck@redhat.com>,
	kvm@vger.kernel.org, David Hildenbrand <david@redhat.com>,
	Bin Meng <bin.meng@windriver.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	qemu-devel@nongnu.org, Laurent Vivier <laurent@vivier.eu>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Taylor Simpson <tsimpson@quicinc.com>,
	haxm-team@intel.com, Colin Xu <colin.xu@intel.com>,
	Stafford Horne <shorne@gmail.com>, Marek Vasut <marex@denx.de>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Paul Durrant <paul@xen.org>, Kamil Rytarowski <kamil@netbsd.org>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	Claudio Fontana <cfontana@suse.de>,
	Anthony Perard <anthony.perard@citrix.com>,
	xen-devel@lists.xenproject.org,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Laurent Vivier <lvivier@redhat.com>,
	Thomas Huth <thuth@redhat.com>,
	Eduardo Habkost <ehabkost@redhat.com>,
	Cameron Esfahani <dirty@apple.com>,
	qemu-s390x@nongnu.org, qemu-arm@nongnu.org,
	Michael Rolnik <mrolnik@gmail.com>,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	qemu-riscv@nongnu.org,
	Bastian Koppelmann <kbastian@mail.uni-paderborn.de>,
	Chris Wulff <crwulff@gmail.com>,
	Roman Bolshakov <r.bolshakov@yadro.com>,
	qemu-ppc@nongnu.org, Wenchao Wang <wenchao.wang@intel.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [PATCH v3 21/30] target/ppc: Introduce PowerPCCPUClass::has_work()
Date: Sun, 12 Sep 2021 00:31:31 +0200	[thread overview]
Message-ID: <a49e0100-74d1-2974-990f-a05f9f796cc5@amsat.org> (raw)
In-Reply-To: <fc98e293-f2ba-8ca0-99c8-f07758b79d73@amsat.org>

On 9/3/21 11:11 PM, Philippe Mathieu-Daudé wrote:
> On 9/3/21 10:42 PM, Richard Henderson wrote:
>> On 9/3/21 2:50 AM, David Gibson wrote:
>>> On Thu, Sep 02, 2021 at 06:15:34PM +0200, Philippe Mathieu-Daudé wrote:
>>>> Each POWER cpu has its own has_work() implementation. Instead of
>>>> overloading CPUClass on each PowerPCCPUClass init, register the
>>>> generic ppc_cpu_has_work() handler, and have it call the POWER
>>>> specific has_work().
>>>
>>> I don't quite see the rationale for introducing a second layer of
>>> indirection here.  What's wrong with switching the base has_work for
>>> each cpu variant?
>>
>> We're moving the hook from CPUState to TCGCPUOps.
>> Phil was trying to avoid creating N versions of
>>
>> static const struct TCGCPUOps ppc_tcg_ops = {
>>     ...
>> };
> 
> Ah yes this is the reason! Too many context switching so
> I forgot about it.
> 
>> A plausible alternative is to remove the const from this struct and
>> modify it, just as we do for CPUState, on the assumption that we cannot
>> mix and match ppc cpu types in any one machine.
> 
> I thought about this case and remembered how it works on the ARM arch,
> i.e. ZynqMP machine uses both Cortex-R5F and Cortex-A53. Even if no
> similar PPC machine exists, IMHO we should try to generally allow to
> possibility to experiment machine with different CPUs. Restricting it
> on PPC goes the other way around. Thoughts?

I'm running out of ideas to do avoid the indirection and multiple
copies of TCGCPUOps. I'm not giving up, I suppose I'm simply not
seeing it... David, any suggestions?


  reply	other threads:[~2021-09-11 22:31 UTC|newest]

Thread overview: 130+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-02 16:15 [PATCH v3 00/30] accel: Move has_work() from SysemuCPUOps to AccelOpsClass Philippe Mathieu-Daudé
2021-09-02 16:15 ` Philippe Mathieu-Daudé
2021-09-02 16:15 ` [PATCH v3 01/30] accel/tcg: Restrict cpu_handle_halt() to sysemu Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 19:31   ` Richard Henderson
2021-09-03 19:31     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 02/30] hw/core: Restrict cpu_has_work() " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:11   ` Richard Henderson
2021-09-03 20:11     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 03/30] hw/core: Un-inline cpu_has_work() Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:11   ` Richard Henderson
2021-09-03 20:11     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 04/30] sysemu: Introduce AccelOpsClass::has_work() Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:14   ` Richard Henderson
2021-09-03 20:14     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 05/30] accel/kvm: Implement AccelOpsClass::has_work() Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:15   ` Richard Henderson
2021-09-03 20:15     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 06/30] accel/whpx: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:16   ` Richard Henderson
2021-09-03 20:16     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 07/30] accel/tcg: Implement AccelOpsClass::has_work() as stub Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:17   ` Richard Henderson
2021-09-03 20:17     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 08/30] target/alpha: Restrict has_work() handler to sysemu and TCG Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:18   ` Richard Henderson
2021-09-03 20:18     ` Richard Henderson
2021-09-03 20:34     ` Philippe Mathieu-Daudé
2021-09-03 20:34       ` Philippe Mathieu-Daudé
2021-09-03 20:38       ` Richard Henderson
2021-09-03 20:38         ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 09/30] target/arm: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:19   ` Richard Henderson
2021-09-03 20:19     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 10/30] target/avr: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:20   ` Richard Henderson
2021-09-03 20:20     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 11/30] target/cris: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:21   ` Richard Henderson
2021-09-03 20:21     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 12/30] target/hexagon: Remove unused has_work() handler Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:21   ` Richard Henderson
2021-09-03 20:21     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 13/30] target/hppa: Restrict has_work() handler to sysemu and TCG Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:22   ` Richard Henderson
2021-09-03 20:22     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 14/30] target/i386: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:23   ` Richard Henderson
2021-09-03 20:23     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 15/30] target/m68k: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:24   ` Richard Henderson
2021-09-03 20:24     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 16/30] target/microblaze: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:25   ` Richard Henderson
2021-09-03 20:25     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 17/30] target/mips: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:26   ` Richard Henderson
2021-09-03 20:26     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 18/30] target/nios2: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:31   ` Richard Henderson
2021-09-03 20:31     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 19/30] target/openrisc: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:31   ` Richard Henderson
2021-09-03 20:31     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 20/30] target/ppc: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03  0:49   ` David Gibson
2021-09-03  0:49     ` David Gibson
2021-09-03 20:43   ` Richard Henderson
2021-09-03 20:43     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 21/30] target/ppc: Introduce PowerPCCPUClass::has_work() Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03  0:50   ` David Gibson
2021-09-03  0:50     ` David Gibson
2021-09-03 20:38     ` Philippe Mathieu-Daudé
2021-09-03 20:38       ` Philippe Mathieu-Daudé
2021-09-03 20:42     ` Richard Henderson
2021-09-03 20:42       ` Richard Henderson
2021-09-03 21:11       ` Philippe Mathieu-Daudé
2021-09-03 21:11         ` Philippe Mathieu-Daudé
2021-09-11 22:31         ` Philippe Mathieu-Daudé [this message]
2021-09-11 22:31           ` Philippe Mathieu-Daudé
2021-09-12 12:31           ` Richard Henderson
2021-09-12 12:31             ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 22/30] target/ppc: Simplify has_work() handlers Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:43   ` Richard Henderson
2021-09-03 20:43     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 23/30] target/riscv: Restrict has_work() handler to sysemu and TCG Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:43   ` Richard Henderson
2021-09-03 20:43     ` Richard Henderson
2021-09-02 16:15 ` [PATCH v3 24/30] target/rx: " Philippe Mathieu-Daudé
2021-09-02 16:15   ` Philippe Mathieu-Daudé
2021-09-03 20:44   ` Richard Henderson
2021-09-03 20:44     ` Richard Henderson
2021-09-03 17:55 ` [PATCH v3 25/30] target/s390x: " Philippe Mathieu-Daudé
2021-09-03 20:44   ` Richard Henderson
2021-09-03 18:13 ` [PATCH v3 26/30] target/sh4: " Philippe Mathieu-Daudé
2021-09-03 20:45   ` Richard Henderson
2021-09-03 18:14 ` [PATCH v3 27/30] target/sparc: " Philippe Mathieu-Daudé
2021-09-03 20:46   ` Richard Henderson
2021-09-03 18:14 ` [PATCH v3 28/30] target/tricore: " Philippe Mathieu-Daudé
2021-09-03 20:46   ` Richard Henderson
2021-09-03 18:15 ` [PATCH v3 29/30] target/xtensa: " Philippe Mathieu-Daudé
2021-09-03 20:47   ` Richard Henderson
2021-09-03 18:19 ` [PATCH v3 30/30] accel: Add missing AccelOpsClass::has_work() and drop SysemuCPUOps one Philippe Mathieu-Daudé
2021-09-03 18:19   ` Philippe Mathieu-Daudé
2021-09-03 20:48   ` Richard Henderson
2021-09-03 20:48     ` Richard Henderson
2021-09-06  6:48   ` Paul Durrant
2021-09-06  6:48     ` Paul Durrant

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=a49e0100-74d1-2974-990f-a05f9f796cc5@amsat.org \
    --to=f4bug@amsat.org \
    --cc=aleksandar.rikalo@syrmia.com \
    --cc=alistair.francis@wdc.com \
    --cc=anthony.perard@citrix.com \
    --cc=atar4qemu@gmail.com \
    --cc=aurelien@aurel32.net \
    --cc=bin.meng@windriver.com \
    --cc=cfontana@suse.de \
    --cc=clg@kaod.org \
    --cc=cohuck@redhat.com \
    --cc=colin.xu@intel.com \
    --cc=crwulff@gmail.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=david@redhat.com \
    --cc=dirty@apple.com \
    --cc=ehabkost@redhat.com \
    --cc=groug@kaod.org \
    --cc=haxm-team@intel.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=jiaxun.yang@flygoat.com \
    --cc=kamil@netbsd.org \
    --cc=kbastian@mail.uni-paderborn.de \
    --cc=kvm@vger.kernel.org \
    --cc=laurent@vivier.eu \
    --cc=lvivier@redhat.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=marex@denx.de \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=mrolnik@gmail.com \
    --cc=palmer@dabbelt.com \
    --cc=paul@xen.org \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=qemu-riscv@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=r.bolshakov@yadro.com \
    --cc=reinoud@netbsd.org \
    --cc=richard.henderson@linaro.org \
    --cc=shorne@gmail.com \
    --cc=sstabellini@kernel.org \
    --cc=sunilmut@microsoft.com \
    --cc=thuth@redhat.com \
    --cc=tsimpson@quicinc.com \
    --cc=wenchao.wang@intel.com \
    --cc=xen-devel@lists.xenproject.org \
    --cc=ysato@users.sourceforge.jp \
    /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.