From: "Alex Bennée" <alex.bennee@linaro.org>
To: Claudio Fontana <cfontana@suse.de>
Cc: "Paul Durrant" <paul@xen.org>, "Jason Wang" <jasowang@redhat.com>,
qemu-devel@nongnu.org, "Peter Xu" <peterx@redhat.com>,
haxm-team@intel.com, "Colin Xu" <colin.xu@intel.com>,
"Olaf Hering" <ohering@suse.de>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Bruce Rogers" <brogers@suse.com>,
"Emilio G . Cota" <cota@braap.org>,
"Anthony Perard" <anthony.perard@citrix.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Laurent Vivier" <lvivier@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Cameron Esfahani" <dirty@apple.com>,
"Dario Faggioli" <dfaggioli@suse.com>,
"Roman Bolshakov" <r.bolshakov@yadro.com>,
"Sunil Muthuswamy" <sunilmut@microsoft.com>,
"Marcelo Tosatti" <mtosatti@redhat.com>,
"Wenchao Wang" <wenchao.wang@intel.com>,
"Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [RFC v9 26/32] accel: extend AccelState and AccelClass to user-mode
Date: Wed, 09 Dec 2020 12:51:32 +0000 [thread overview]
Message-ID: <87v9dbcfas.fsf@linaro.org> (raw)
In-Reply-To: <20201208194839.31305-27-cfontana@suse.de>
Claudio Fontana <cfontana@suse.de> writes:
> Signed-off-by: Claudio Fontana <cfontana@suse.de>
> ---
> MAINTAINERS | 2 +-
> accel/accel-common.c | 50 ++++++++++++++++++++++++++++++
> accel/{accel.c => accel-softmmu.c} | 27 ++--------------
> accel/accel-user.c | 24 ++++++++++++++
> accel/meson.build | 4 ++-
> accel/qtest/qtest.c | 2 +-
> accel/tcg/meson.build | 2 +-
> accel/tcg/tcg-all.c | 13 ++++++--
> accel/xen/xen-all.c | 2 +-
> bsd-user/main.c | 6 +++-
> include/hw/boards.h | 2 +-
> include/{sysemu => qemu}/accel.h | 14 +++++----
> include/sysemu/hvf.h | 2 +-
> include/sysemu/kvm.h | 2 +-
> include/sysemu/kvm_int.h | 2 +-
> linux-user/main.c | 6 +++-
> softmmu/memory.c | 2 +-
> softmmu/qtest.c | 2 +-
> softmmu/vl.c | 2 +-
> target/i386/hax/hax-all.c | 2 +-
> target/i386/hvf/hvf-i386.h | 2 +-
> target/i386/hvf/hvf.c | 2 +-
> target/i386/hvf/x86_task.c | 2 +-
> target/i386/whpx/whpx-all.c | 2 +-
> 24 files changed, 124 insertions(+), 52 deletions(-)
> create mode 100644 accel/accel-common.c
> rename accel/{accel.c => accel-softmmu.c} (75%)
> create mode 100644 accel/accel-user.c
> rename include/{sysemu => qemu}/accel.h (95%)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index d876f504a6..6235dd3a9f 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -434,7 +434,7 @@ Overall
> M: Richard Henderson <richard.henderson@linaro.org>
> R: Paolo Bonzini <pbonzini@redhat.com>
> S: Maintained
> -F: include/sysemu/accel.h
> +F: include/qemu/accel.h
> F: accel/accel.c
> F: accel/Makefile.objs
> F: accel/stubs/Makefile.objs
> diff --git a/accel/accel-common.c b/accel/accel-common.c
> new file mode 100644
> index 0000000000..ddec8cb5ae
> --- /dev/null
> +++ b/accel/accel-common.c
> @@ -0,0 +1,50 @@
> +/*
> + * QEMU accel class, components common to system emulation and user mode
> + *
> + * Copyright (c) 2003-2008 Fabrice Bellard
> + * Copyright (c) 2014 Red Hat Inc.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a copy
> + * of this software and associated documentation files (the "Software"), to deal
> + * in the Software without restriction, including without limitation the rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> + * THE SOFTWARE.
> + */
> +
> +#include "qemu/osdep.h"
> +#include "qemu/accel.h"
> +
> +static const TypeInfo accel_type = {
> + .name = TYPE_ACCEL,
> + .parent = TYPE_OBJECT,
> + .class_size = sizeof(AccelClass),
> + .instance_size = sizeof(AccelState),
> +};
> +
> +/* Lookup AccelClass from opt_name. Returns NULL if not found */
> +AccelClass *accel_find(const char *opt_name)
> +{
> + char *class_name = g_strdup_printf(ACCEL_CLASS_NAME("%s"), opt_name);
> + AccelClass *ac = ACCEL_CLASS(object_class_by_name(class_name));
> + g_free(class_name);
> + return ac;
> +}
> +
> +static void register_accel_types(void)
> +{
> + type_register_static(&accel_type);
> +}
> +
> +type_init(register_accel_types);
> diff --git a/accel/accel.c b/accel/accel-softmmu.c
> similarity index 75%
> rename from accel/accel.c
> rename to accel/accel-softmmu.c
> index cb555e3b06..f89da8f9d1 100644
> --- a/accel/accel.c
> +++ b/accel/accel-softmmu.c
> @@ -1,5 +1,5 @@
> /*
> - * QEMU System Emulator, accelerator interfaces
> + * QEMU accel class, system emulation components
> *
> * Copyright (c) 2003-2008 Fabrice Bellard
> * Copyright (c) 2014 Red Hat Inc.
> @@ -24,28 +24,12 @@
> */
>
> #include "qemu/osdep.h"
> -#include "sysemu/accel.h"
> +#include "qemu/accel.h"
> #include "hw/boards.h"
> #include "sysemu/arch_init.h"
> #include "sysemu/sysemu.h"
> #include "qom/object.h"
>
> -static const TypeInfo accel_type = {
> - .name = TYPE_ACCEL,
> - .parent = TYPE_OBJECT,
> - .class_size = sizeof(AccelClass),
> - .instance_size = sizeof(AccelState),
> -};
> -
> -/* Lookup AccelClass from opt_name. Returns NULL if not found */
> -AccelClass *accel_find(const char *opt_name)
> -{
> - char *class_name = g_strdup_printf(ACCEL_CLASS_NAME("%s"), opt_name);
> - AccelClass *ac = ACCEL_CLASS(object_class_by_name(class_name));
> - g_free(class_name);
> - return ac;
> -}
> -
> int accel_init_machine(AccelState *accel, MachineState *ms)
> {
> AccelClass *acc = ACCEL_GET_CLASS(accel);
> @@ -76,10 +60,3 @@ void accel_setup_post(MachineState *ms)
> acc->setup_post(ms, accel);
> }
> }
> -
> -static void register_accel_types(void)
> -{
> - type_register_static(&accel_type);
> -}
> -
> -type_init(register_accel_types);
> diff --git a/accel/accel-user.c b/accel/accel-user.c
> new file mode 100644
> index 0000000000..26bdda6236
> --- /dev/null
> +++ b/accel/accel-user.c
> @@ -0,0 +1,24 @@
> +/*
> + * QEMU accel class, user-mode components
> + *
> + * Copyright 2020 SUSE LLC
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + */
> +
> +#include "qemu/osdep.h"
> +#include "qemu/accel.h"
> +
> +AccelState *current_accel(void)
> +{
> + static AccelState *accel;
> +
> + if (!accel) {
> + AccelClass *ac = accel_find("tcg");
> +
> + g_assert(ac != NULL);
> + accel = ACCEL(object_new_with_class(OBJECT_CLASS(ac)));
> + }
> + return accel;
> +}
> diff --git a/accel/meson.build b/accel/meson.build
> index b26cca227a..b44ba30c86 100644
> --- a/accel/meson.build
> +++ b/accel/meson.build
> @@ -1,4 +1,6 @@
> -softmmu_ss.add(files('accel.c'))
> +specific_ss.add(files('accel-common.c'))
> +softmmu_ss.add(files('accel-softmmu.c'))
> +user_ss.add(files('accel-user.c'))
>
> subdir('qtest')
> subdir('kvm')
> diff --git a/accel/qtest/qtest.c b/accel/qtest/qtest.c
> index b282cea5cf..b4e731cb2b 100644
> --- a/accel/qtest/qtest.c
> +++ b/accel/qtest/qtest.c
> @@ -17,7 +17,7 @@
> #include "qemu/module.h"
> #include "qemu/option.h"
> #include "qemu/config-file.h"
> -#include "sysemu/accel.h"
> +#include "qemu/accel.h"
> #include "sysemu/qtest.h"
> #include "sysemu/cpus.h"
> #include "sysemu/cpu-timers.h"
> diff --git a/accel/tcg/meson.build b/accel/tcg/meson.build
> index f39aab0a0c..424d9bb1fc 100644
> --- a/accel/tcg/meson.build
> +++ b/accel/tcg/meson.build
> @@ -1,5 +1,6 @@
> tcg_ss = ss.source_set()
> tcg_ss.add(files(
> + 'tcg-all.c',
> 'cpu-exec-common.c',
> 'cpu-exec.c',
> 'tcg-runtime-gvec.c',
> @@ -13,7 +14,6 @@ tcg_ss.add(when: 'CONFIG_PLUGIN', if_true: [files('plugin-gen.c'), libdl])
> specific_ss.add_all(when: 'CONFIG_TCG', if_true: tcg_ss)
>
> specific_ss.add(when: ['CONFIG_SOFTMMU', 'CONFIG_TCG'], if_true: files(
> - 'tcg-all.c',
> 'cputlb.c',
> 'tcg-cpus.c',
> 'tcg-cpus-mttcg.c',
> diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c
> index 1ac0b76515..7125d0cc29 100644
> --- a/accel/tcg/tcg-all.c
> +++ b/accel/tcg/tcg-all.c
> @@ -30,9 +30,12 @@
> #include "tcg/tcg.h"
> #include "qapi/error.h"
> #include "qemu/error-report.h"
> -#include "hw/boards.h"
> +#include "qemu/accel.h"
> #include "qapi/qapi-builtin-visit.h"
> +
> +#ifndef CONFIG_USER_ONLY
> #include "tcg-cpus.h"
> +#endif /* CONFIG_USER_ONLY */
>
> struct TCGState {
> AccelState parent_obj;
> @@ -106,8 +109,12 @@ static int tcg_init(MachineState *ms)
> mttcg_enabled = s->mttcg_enabled;
>
> /*
> - * Initialize TCG regions
> + * Initialize TCG regions only for softmmu.
> + *
> + * This needs to be done later for user mode, because the prologue
> + * generation needs to be delayed so that GUEST_BASE is already set.
> */
> +#ifndef CONFIG_USER_ONLY
> tcg_region_init();
This implies we broke bisectability with:
accel/tcg: split tcg_start_vcpu_thread
<snip>
Otherwise with that fixed:
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
--
Alex Bennée
next prev parent reply other threads:[~2020-12-09 12:53 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-08 19:48 [RFC v9 00/22] i386 cleanup Claudio Fontana
2020-12-08 19:48 ` [RFC v9 01/32] accel/tcg: split CpusAccel into three TCG variants Claudio Fontana
2020-12-09 8:34 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 02/32] accel/tcg: split tcg_start_vcpu_thread Claudio Fontana
2020-12-09 9:03 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 03/32] accel/tcg: rename tcg-cpus functions to match module name Claudio Fontana
2020-12-09 9:10 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 04/32] i386: move kvm accel files into kvm/ Claudio Fontana
2020-12-09 9:17 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 05/32] i386: move whpx accel files into whpx/ Claudio Fontana
2020-12-09 9:21 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 06/32] i386: move hax accel files into hax/ Claudio Fontana
2020-12-09 9:22 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 07/32] i386: hvf: remove stale MAINTAINERS entry for old hvf stubs Claudio Fontana
2020-12-09 9:22 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 08/32] i386: move TCG accel files into tcg/ Claudio Fontana
2020-12-09 9:30 ` Alex Bennée
2020-12-09 11:05 ` Claudio Fontana
2020-12-08 19:48 ` [RFC v9 09/32] i386: move cpu dump out of helper.c into cpu-dump.c Claudio Fontana
2020-12-09 9:59 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 10/32] i386: move TCG cpu class initialization out of helper.c Claudio Fontana
2020-12-09 10:23 ` Alex Bennée
2020-12-09 11:19 ` Claudio Fontana
2020-12-08 19:48 ` [RFC v9 11/32] tcg: cpu_exec_{enter,exit} helpers Claudio Fontana
2020-12-09 10:33 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 12/32] tcg: make CPUClass.cpu_exec_* optional Claudio Fontana
2020-12-09 10:36 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 13/32] tcg: Make CPUClass.debug_excp_handler optional Claudio Fontana
2020-12-09 10:37 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 14/32] cpu: Remove unnecessary noop methods Claudio Fontana
2020-12-09 10:38 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 15/32] cpu: Introduce TCGCpuOperations struct Claudio Fontana
2020-12-09 10:39 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 16/32] target/riscv: remove CONFIG_TCG, as it is always TCG Claudio Fontana
2020-12-08 22:10 ` Alistair Francis
2020-12-08 19:48 ` [RFC v9 17/32] accel/tcg: split TCG-only code from cpu_exec_realizefn Claudio Fontana
2020-12-09 10:42 ` Alex Bennée
2020-12-09 11:22 ` Claudio Fontana
2020-12-08 19:48 ` [RFC v9 18/32] cpu: Move synchronize_from_tb() to tcg_ops Claudio Fontana
2020-12-09 9:27 ` Philippe Mathieu-Daudé
2020-12-09 14:33 ` Claudio Fontana
2020-12-09 15:06 ` Philippe Mathieu-Daudé
2020-12-09 10:50 ` Alex Bennée
2020-12-09 14:46 ` Eduardo Habkost
2020-12-09 15:51 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 19/32] cpu: Move cpu_exec_* " Claudio Fontana
2020-12-09 9:28 ` Philippe Mathieu-Daudé
2020-12-09 11:02 ` Claudio Fontana
2020-12-09 11:16 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 20/32] cpu: Move tlb_fill " Claudio Fontana
2020-12-09 11:26 ` Alex Bennée
2020-12-09 14:38 ` Claudio Fontana
2020-12-09 16:12 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 21/32] cpu: Move debug_excp_handler " Claudio Fontana
2020-12-09 11:29 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 22/32] target/arm: do not use cc->do_interrupt for KVM directly Claudio Fontana
2020-12-09 11:30 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 23/32] cpu: move cc->do_interrupt to tcg_ops Claudio Fontana
2020-12-09 11:43 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 24/32] cpu: move cc->transaction_failed " Claudio Fontana
2020-12-09 9:31 ` Philippe Mathieu-Daudé
2020-12-09 14:43 ` Claudio Fontana
2020-12-09 14:59 ` Eduardo Habkost
2020-12-09 12:03 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 25/32] cpu: move do_unaligned_access " Claudio Fontana
2020-12-09 12:47 ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 26/32] accel: extend AccelState and AccelClass to user-mode Claudio Fontana
2020-12-09 12:51 ` Alex Bennée [this message]
2020-12-09 12:58 ` Claudio Fontana
2020-12-08 19:48 ` [RFC v9 27/32] accel: replace struct CpusAccel with AccelOpsClass Claudio Fontana
2020-12-09 12:54 ` Alex Bennée
2020-12-09 14:50 ` Claudio Fontana
2020-12-09 17:28 ` Claudio Fontana
2020-12-09 18:30 ` Alex Bennée
2020-12-09 19:27 ` Claudio Fontana
2020-12-08 19:48 ` [RFC v9 28/32] accel: introduce AccelCPUClass extending CPUClass Claudio Fontana
2020-12-08 19:48 ` [RFC v9 29/32] i386: split cpu accelerators from cpu.c, using AccelCPUClass Claudio Fontana
2020-12-08 19:48 ` [RFC v9 30/32] cpu: call AccelCPUClass::cpu_realizefn in cpu_exec_realizefn Claudio Fontana
2020-12-08 19:48 ` [RFC v9 31/32] hw/core/cpu: call qemu_init_vcpu in cpu_common_realizefn Claudio Fontana
2020-12-08 19:48 ` [RFC v9 32/32] cpu: introduce cpu_accel_instance_init Claudio Fontana
2020-12-08 20:00 ` [RFC v9 00/22] i386 cleanup Philippe Mathieu-Daudé
2020-12-08 22:15 ` Claudio Fontana
2020-12-09 8:47 ` Paolo Bonzini
2020-12-08 22:00 ` no-reply
2020-12-09 10:22 ` Alex Bennée
2020-12-09 12:58 ` Alex Bennée
2020-12-09 14:10 ` 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=87v9dbcfas.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=anthony.perard@citrix.com \
--cc=brogers@suse.com \
--cc=cfontana@suse.de \
--cc=colin.xu@intel.com \
--cc=cota@braap.org \
--cc=dfaggioli@suse.com \
--cc=dirty@apple.com \
--cc=ehabkost@redhat.com \
--cc=haxm-team@intel.com \
--cc=jasowang@redhat.com \
--cc=lvivier@redhat.com \
--cc=mtosatti@redhat.com \
--cc=ohering@suse.de \
--cc=paul@xen.org \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=r.bolshakov@yadro.com \
--cc=richard.henderson@linaro.org \
--cc=sstabellini@kernel.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 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.