From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Cornelia Huck <cohuck@redhat.com>,
kvm@vger.kernel.org, David Hildenbrand <david@redhat.com>,
haxm-team@intel.com, Colin Xu <colin.xu@intel.com>,
Halil Pasic <pasic@linux.ibm.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Claudio Fontana <cfontana@suse.de>,
Thomas Huth <thuth@redhat.com>,
Eduardo Habkost <ehabkost@redhat.com>,
Richard Henderson <richard.henderson@linaro.org>,
Greg Kurz <groug@kaod.org>, Cameron Esfahani <dirty@apple.com>,
qemu-s390x@nongnu.org, qemu-arm@nongnu.org,
Sunil Muthuswamy <sunilmut@microsoft.com>,
David Gibson <david@gibson.dropbear.id.au>,
Marcelo Tosatti <mtosatti@redhat.com>,
Roman Bolshakov <r.bolshakov@yadro.com>,
qemu-ppc@nongnu.org, Wenchao Wang <wenchao.wang@intel.com>
Subject: Re: [RFC PATCH 00/19] accel: Introduce AccelvCPUState opaque structure
Date: Thu, 4 Mar 2021 17:42:38 +0100 [thread overview]
Message-ID: <a37683ea-a05f-e3a3-43b0-084f830ccd72@redhat.com> (raw)
In-Reply-To: <438743f3-6e97-1735-6c11-26d261fa91b4@redhat.com>
On 3/4/21 4:40 PM, Paolo Bonzini wrote:
> On 04/03/21 15:54, Philippe Mathieu-Daudé wrote:
>> On 3/4/21 2:56 PM, Paolo Bonzini wrote:
>>> On 03/03/21 19:22, Philippe Mathieu-Daudé wrote:
>>>> Series is organized as:
>>>> - preliminary trivial cleanups
>>>> - introduce AccelvCPUState
>>>> - move WHPX fields (build-tested)
>>>> - move HAX fields (not tested)
>>>> - move KVM fields (build-tested)
>>>> - move HVF fields (not tested)
>>>
>>> This approach prevents adding a TCG state. Have you thought of using a
>>> union instead, or even a void pointer?
>>
>> Why does it prevent it? We can only have one accelerator per vCPU.
>
> You're right, my misguided assumption was that there can only be one of
> WHPX/HAX/KVM/HVF. This is true for WHPX/KVM/HVF but HAX can live with
> any of the others.
I suppose you aren't talking about build-time but runtime. There should
be no distinction related to accelerator at runtime. We should be able
to have multiple accelerators at runtime, and eventually be able to
migrate vCPU from one accelerator to another, if it is proven useful.
How accelerators are orchestrated is obviously out of the scope of this
series.
> However this means that AccelvCPUState would have multiple definitions.
Yes.
> Did you check that gdb copes well with it?
No, I haven't, because we already use opaque pointers elsewhere.
> It's also forbidden by
> C++[1], so another thing to check would be LTO when using the C++
> compiler for linking.
OK, I have no clue about C++ (and tries to keep QEMU way from it)
or about LTO. So I'd need to investigate that.
>
> Paolo
>
> [1] https://en.wikipedia.org/wiki/One_Definition_Rule
>
>> TCG state has to be declared as another AccelvCPUState implementation.
>>
>> Am I missing something?
>>
>> Preventing building different accelerator-specific code in the same
>> unit file is on purpose.
>>
>> Regards,
>>
>> Phil.
>>
>
prev parent reply other threads:[~2021-03-04 16:46 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-03 18:22 [RFC PATCH 00/19] accel: Introduce AccelvCPUState opaque structure Philippe Mathieu-Daudé
2021-03-03 18:22 ` [PATCH 01/19] target/i386/hvf: Use boolean value for vcpu_dirty Philippe Mathieu-Daudé
2021-03-03 18:22 ` [PATCH 02/19] target/s390x/kvm: Simplify debug code Philippe Mathieu-Daudé
2021-03-04 6:24 ` Thomas Huth
2021-03-04 16:05 ` Cornelia Huck
2021-03-03 18:22 ` [PATCH 03/19] target/s390x/kvm: Reduce deref by declaring 'struct kvm_run' on stack Philippe Mathieu-Daudé
2021-03-03 18:22 ` [PATCH 04/19] cpu: Croup accelerator-specific fields altogether Philippe Mathieu-Daudé
2021-03-04 13:26 ` Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 05/19] cpu: Introduce AccelvCPUState opaque structure Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 06/19] accel/whpx: Add typedef for 'struct whpx_vcpu' Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 07/19] accel/whpx: Rename struct whpx_vcpu -> AccelvCPUState Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 08/19] accel/whpx: Use 'accel_vcpu' generic pointer Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 09/19] accel/hax: Add typedef for 'struct hax_vcpu_state' Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 10/19] accel/hax: Use 'accel_vcpu' generic pointer Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 11/19] accel/kvm: Introduce kvm_vcpu_state() helper Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 12/19] accel/kvm: Use kvm_vcpu_state() when possible Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 13/19] accel/kvm: Declare and allocate AccelvCPUState struct Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 14/19] accel/kvm: Move the 'kvm_fd' field to AccelvCPUState Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 15/19] accel/kvm: Move the 'kvm_state' " Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 16/19] accel/kvm: Move the 'kvm_run' " Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 17/19] accel/hvf: Reduce deref by declaring 'hv_vcpuid_t hvf_fd' on stack Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 18/19] accel/hvf: Declare and allocate AccelvCPUState struct Philippe Mathieu-Daudé
2021-03-03 18:22 ` [RFC PATCH 19/19] accel/hvf: Move the 'hvf_fd' field to AccelvCPUState Philippe Mathieu-Daudé
2021-03-04 13:56 ` [RFC PATCH 00/19] accel: Introduce AccelvCPUState opaque structure Paolo Bonzini
2021-03-04 14:54 ` Philippe Mathieu-Daudé
2021-03-04 15:40 ` Paolo Bonzini
2021-03-04 16:42 ` Philippe Mathieu-Daudé [this message]
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=a37683ea-a05f-e3a3-43b0-084f830ccd72@redhat.com \
--to=philmd@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=cfontana@suse.de \
--cc=cohuck@redhat.com \
--cc=colin.xu@intel.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=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=pasic@linux.ibm.com \
--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-s390x@nongnu.org \
--cc=r.bolshakov@yadro.com \
--cc=richard.henderson@linaro.org \
--cc=sunilmut@microsoft.com \
--cc=thuth@redhat.com \
--cc=wenchao.wang@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).