[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH 30/34] accel/tcg: Make tcg-all.c target indpendent
|
From: |
Anton Johansson |
|
Subject: |
Re: [RFC PATCH 30/34] accel/tcg: Make tcg-all.c target indpendent |
|
Date: |
Tue, 23 Jan 2024 13:03:27 +0100 |
On 23/01/24, Philippe Mathieu-Daudé wrote:
> Hi Anton,
>
> On 19/1/24 15:40, Anton Johansson wrote:
> > Uses target_supports_mttcg() and target_long_bits() to turn ifdefs into
> > runtime branches.
> >
> > Signed-off-by: Anton Johansson <anjo@rev.ng>
> > ---
> > accel/tcg/tcg-all.c | 25 +++++++++----------------
> > 1 file changed, 9 insertions(+), 16 deletions(-)
>
>
> > static void tcg_accel_instance_init(Object *obj)
> > @@ -137,17 +129,18 @@ static char *tcg_get_thread(Object *obj, Error **errp)
> > static void tcg_set_thread(Object *obj, const char *value, Error **errp)
> > {
> > TCGState *s = TCG_STATE(obj);
> > + const bool oversized_guest = target_long_bits() > TCG_TARGET_REG_BITS;
> > if (strcmp(value, "multi") == 0) {
> > - if (TCG_OVERSIZED_GUEST) {
> > + if (oversized_guest) {
> > error_setg(errp, "No MTTCG when guest word size > hosts");
> > } else if (icount_enabled()) {
> > error_setg(errp, "No MTTCG when icount is enabled");
> > } else {
> > -#ifndef TARGET_SUPPORTS_MTTCG
> > - warn_report("Guest not yet converted to MTTCG - "
> > - "you may get unexpected results");
> > -#endif
> > + if (target_supports_mttcg()) {
>
> I started smth similar but then realized this call has to be per target,
> so put my work on hold. My plan is to have a single common tcg
> accelerator framework, having target-specific code handled by vcpu
> dispatchers. Is your plan to have each target link its own tcg?
Yes I was leaning towards one tcg per target, but hadn't put much
thought into it. I think your approach is better. This patchset was
primarily focused on getting accl/tcg/ to compile once, with
heterogeneous stuff coming down the line. IMO it becomes a bit easier to
see what target-specific information we really need.
What do you think of a simple TargetConfig struct for information such
as target_supports_mttcg() and the other functions introduced in
cpu-target.c? We probably need dispatcher for other stuff but I think we
can get quite far with struct.
- Re: [RFC PATCH 28/34] accel/tcg: Make plugin-gen.c target independent, (continued)
- [RFC PATCH 27/34] accel/tcg: Make translate-all.c target independent, Anton Johansson, 2024/01/19
- [RFC PATCH 29/34] accel/tcg: Make tb-maint.c target indpendent, Anton Johansson, 2024/01/19
- [RFC PATCH 34/34] accel/tcg: Compile (a few files) once for system-mode, Anton Johansson, 2024/01/19
- [RFC PATCH 33/34] accel/tcg: Make translator.c (partially) target independent, Anton Johansson, 2024/01/19
- [RFC PATCH 32/34] accel/tcg: Make tcg-runtime.c target independent, Anton Johansson, 2024/01/19
- [RFC PATCH 30/34] accel/tcg: Make tcg-all.c target indpendent, Anton Johansson, 2024/01/19
- [RFC PATCH 31/34] accel/tcg: Make tcg-runtime-gvec.c target independent, Anton Johansson, 2024/01/19