[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU
From: |
Claudio Fontana |
Subject: |
Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU |
Date: |
Wed, 18 Nov 2020 13:38:50 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 |
On 11/18/20 11:29 AM, Claudio Fontana wrote:
> apply this to the registration of the cpus accel interfaces,
>
> but this will be also in preparation for later use of this
> new module init step to also defer the registration of the cpu models,
this is not true anymore, so my commit message here needs fixing.
> in order to make them subclasses of a per-accel cpu type.
>
> Signed-off-by: Claudio Fontana <cfontana@suse.de>
> ---
> accel/kvm/kvm-all.c | 11 +++++++++--
> accel/qtest/qtest.c | 10 +++++++++-
> accel/tcg/tcg-all.c | 11 +++++++++--
> accel/xen/xen-all.c | 12 +++++++++---
> include/qemu/module.h | 2 ++
> softmmu/vl.c | 6 ++++++
> target/i386/hax/hax-all.c | 12 +++++++++---
> target/i386/hvf/hvf.c | 10 +++++++++-
> target/i386/whpx/whpx-all.c | 11 +++++++++--
> 9 files changed, 71 insertions(+), 14 deletions(-)
>
> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
> index 9ef5daf4c5..509b249f52 100644
> --- a/accel/kvm/kvm-all.c
> +++ b/accel/kvm/kvm-all.c
> @@ -2251,8 +2251,6 @@ static int kvm_init(MachineState *ms)
> ret = ram_block_discard_disable(true);
> assert(!ret);
> }
> -
> - cpus_register_accel(&kvm_cpus);
> return 0;
>
> err:
> @@ -3236,3 +3234,12 @@ static void kvm_type_init(void)
> }
>
> type_init(kvm_type_init);
> +
> +static void kvm_accel_cpu_init(void)
> +{
> + if (kvm_enabled()) {
> + cpus_register_accel(&kvm_cpus);
> + }
> +}
> +
> +accel_cpu_init(kvm_accel_cpu_init);
> diff --git a/accel/qtest/qtest.c b/accel/qtest/qtest.c
> index b282cea5cf..8d14059e32 100644
> --- a/accel/qtest/qtest.c
> +++ b/accel/qtest/qtest.c
> @@ -32,7 +32,6 @@ const CpusAccel qtest_cpus = {
>
> static int qtest_init_accel(MachineState *ms)
> {
> - cpus_register_accel(&qtest_cpus);
> return 0;
> }
>
> @@ -58,3 +57,12 @@ static void qtest_type_init(void)
> }
>
> type_init(qtest_type_init);
> +
> +static void qtest_accel_cpu_init(void)
> +{
> + if (qtest_enabled()) {
> + cpus_register_accel(&qtest_cpus);
> + }
> +}
> +
> +accel_cpu_init(qtest_accel_cpu_init);
> diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c
> index fa1208158f..9ffedc8151 100644
> --- a/accel/tcg/tcg-all.c
> +++ b/accel/tcg/tcg-all.c
> @@ -104,8 +104,6 @@ static int tcg_init(MachineState *ms)
>
> tcg_exec_init(s->tb_size * 1024 * 1024);
> mttcg_enabled = s->mttcg_enabled;
> - cpus_register_accel(&tcg_cpus);
> -
> return 0;
> }
>
> @@ -201,3 +199,12 @@ static void register_accel_types(void)
> }
>
> type_init(register_accel_types);
> +
> +static void tcg_accel_cpu_init(void)
> +{
> + if (tcg_enabled()) {
> + cpus_register_accel(&tcg_cpus);
> + }
> +}
> +
> +accel_cpu_init(tcg_accel_cpu_init);
> diff --git a/accel/xen/xen-all.c b/accel/xen/xen-all.c
> index 878a4089d9..6932a9f364 100644
> --- a/accel/xen/xen-all.c
> +++ b/accel/xen/xen-all.c
> @@ -185,9 +185,6 @@ static int xen_init(MachineState *ms)
> * opt out of system RAM being allocated by generic code
> */
> mc->default_ram_id = NULL;
> -
> - cpus_register_accel(&xen_cpus);
> -
> return 0;
> }
>
> @@ -228,3 +225,12 @@ static void xen_type_init(void)
> }
>
> type_init(xen_type_init);
> +
> +static void xen_accel_cpu_init(void)
> +{
> + if (xen_enabled()) {
> + cpus_register_accel(&xen_cpus);
> + }
> +}
> +
> +accel_cpu_init(xen_accel_cpu_init);
> diff --git a/include/qemu/module.h b/include/qemu/module.h
> index 944d403cbd..485eda986a 100644
> --- a/include/qemu/module.h
> +++ b/include/qemu/module.h
> @@ -44,6 +44,7 @@ typedef enum {
> MODULE_INIT_BLOCK,
> MODULE_INIT_OPTS,
> MODULE_INIT_QOM,
> + MODULE_INIT_ACCEL_CPU,
> MODULE_INIT_TRACE,
> MODULE_INIT_XEN_BACKEND,
> MODULE_INIT_LIBQOS,
> @@ -54,6 +55,7 @@ typedef enum {
> #define block_init(function) module_init(function, MODULE_INIT_BLOCK)
> #define opts_init(function) module_init(function, MODULE_INIT_OPTS)
> #define type_init(function) module_init(function, MODULE_INIT_QOM)
> +#define accel_cpu_init(function) module_init(function, MODULE_INIT_ACCEL_CPU)
> #define trace_init(function) module_init(function, MODULE_INIT_TRACE)
> #define xen_backend_init(function) module_init(function, \
> MODULE_INIT_XEN_BACKEND)
> diff --git a/softmmu/vl.c b/softmmu/vl.c
> index e6e0ad5a92..df4bed056a 100644
> --- a/softmmu/vl.c
> +++ b/softmmu/vl.c
> @@ -4173,6 +4173,12 @@ void qemu_init(int argc, char **argv, char **envp)
> */
> configure_accelerators(argv[0]);
>
> + /*
> + * accelerator has been chosen and initialized, now it is time to
> + * register the cpu accel interface.
> + */
> + module_call_init(MODULE_INIT_ACCEL_CPU);
> +
> /*
> * Beware, QOM objects created before this point miss global and
> * compat properties.
> diff --git a/target/i386/hax/hax-all.c b/target/i386/hax/hax-all.c
> index fecfe8cd6e..3bada019f5 100644
> --- a/target/i386/hax/hax-all.c
> +++ b/target/i386/hax/hax-all.c
> @@ -364,9 +364,6 @@ static int hax_accel_init(MachineState *ms)
> !ret ? "working" : "not working",
> !ret ? "fast virt" : "emulation");
> }
> - if (ret == 0) {
> - cpus_register_accel(&hax_cpus);
> - }
> return ret;
> }
>
> @@ -1141,3 +1138,12 @@ static void hax_type_init(void)
> }
>
> type_init(hax_type_init);
> +
> +static void hax_accel_cpu_init(void)
> +{
> + if (hax_enabled()) {
> + cpus_register_accel(&hax_cpus);
> + }
> +}
> +
> +accel_cpu_init(hax_accel_cpu_init);
> diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c
> index ed9356565c..249b77797f 100644
> --- a/target/i386/hvf/hvf.c
> +++ b/target/i386/hvf/hvf.c
> @@ -887,7 +887,6 @@ static int hvf_accel_init(MachineState *ms)
>
> hvf_state = s;
> memory_listener_register(&hvf_memory_listener, &address_space_memory);
> - cpus_register_accel(&hvf_cpus);
> return 0;
> }
>
> @@ -911,3 +910,12 @@ static void hvf_type_init(void)
> }
>
> type_init(hvf_type_init);
> +
> +static void hvf_accel_cpu_init(void)
> +{
> + if (hvf_enabled()) {
> + cpus_register_accel(&hvf_cpus);
> + }
> +}
> +
> +accel_cpu_init(hvf_accel_cpu_init);
> diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c
> index f4f3e33eac..2e715e2bc6 100644
> --- a/target/i386/whpx/whpx-all.c
> +++ b/target/i386/whpx/whpx-all.c
> @@ -1642,8 +1642,6 @@ static int whpx_accel_init(MachineState *ms)
>
> whpx_memory_init();
>
> - cpus_register_accel(&whpx_cpus);
> -
> printf("Windows Hypervisor Platform accelerator is operational\n");
> return 0;
>
> @@ -1713,3 +1711,12 @@ error:
> }
>
> type_init(whpx_type_init);
> +
> +static void whpx_accel_cpu_init(void)
> +{
> + if (whpx_enabled()) {
> + cpus_register_accel(&whpx_cpus);
> + }
> +}
> +
> +accel_cpu_init(whpx_accel_cpu_init);
>
- [RFC v3 0/9] i386 cleanup, Claudio Fontana, 2020/11/18
- [RFC v3 2/9] i386: move whpx accel files into whpx/, Claudio Fontana, 2020/11/18
- [RFC v3 1/9] i386: move kvm accel files into kvm/, Claudio Fontana, 2020/11/18
- [RFC v3 4/9] i386: hvf: remove stale MAINTAINERS entry for old hvf stubs, Claudio Fontana, 2020/11/18
- [RFC v3 5/9] i386: move TCG accel files into tcg/, Claudio Fontana, 2020/11/18
- [RFC v3 3/9] i386: move hax accel files into hax/, Claudio Fontana, 2020/11/18
- [RFC v3 6/9] i386: move cpu dump out of helper.c into cpu-dump.c, Claudio Fontana, 2020/11/18
- [RFC v3 7/9] i386: move TCG cpu class initialization out of helper.c, Claudio Fontana, 2020/11/18
- [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU, Claudio Fontana, 2020/11/18
- Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU,
Claudio Fontana <=
- Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU, Eduardo Habkost, 2020/11/18
- Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU, Claudio Fontana, 2020/11/18
- Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU, Paolo Bonzini, 2020/11/18
- Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU, Eduardo Habkost, 2020/11/18
- Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU, Paolo Bonzini, 2020/11/18
- Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU, Eduardo Habkost, 2020/11/18
- Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU, Paolo Bonzini, 2020/11/18
- Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU, Eduardo Habkost, 2020/11/18
- Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU, Paolo Bonzini, 2020/11/18
- Re: [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU, Eduardo Habkost, 2020/11/18