[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v14 18/22] accel: introduce AccelCPUClass extending CPUClass
From: |
Claudio Fontana |
Subject: |
Re: [PATCH v14 18/22] accel: introduce AccelCPUClass extending CPUClass |
Date: |
Thu, 28 Jan 2021 14:22:25 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 |
On 1/28/21 2:03 PM, Philippe Mathieu-Daudé wrote:
> On 1/28/21 10:28 AM, Claudio Fontana wrote:
>> add a new optional interface to CPUClass,
>> which allows accelerators to extend the CPUClass
>> with additional accelerator-specific initializations.
>>
>> Add the field before tcg_ops, and mark tcg_ops as
>> needing to be last in the struct until we rework this
>> further in a later patch.
>>
>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>> ---
>> include/hw/core/accel-cpu.h | 35 +++++++++++++++++++++++++++++
>> include/hw/core/cpu.h | 1 +
>> accel/accel-common.c | 44 +++++++++++++++++++++++++++++++++++++
>> MAINTAINERS | 1 +
>> 4 files changed, 81 insertions(+)
>> create mode 100644 include/hw/core/accel-cpu.h
>>
>> diff --git a/include/hw/core/accel-cpu.h b/include/hw/core/accel-cpu.h
>> new file mode 100644
>> index 0000000000..246b3e2fcb
>> --- /dev/null
>> +++ b/include/hw/core/accel-cpu.h
>> @@ -0,0 +1,35 @@
>> +/*
>> + * Accelerator interface, specializes CPUClass
>> + *
>> + * Copyright 2020 SUSE LLC
>
> 2020-2021 ;)
Thanks Philippe,
will check them all! It's a bright new year!
>
>> + *
>> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
>> + * See the COPYING file in the top-level directory.
>> + */
>> +
>> +#ifndef ACCEL_CPU_H
>> +#define ACCEL_CPU_H
>> +
>> +/*
>> + * these defines cannot be in cpu.h, because we are using
>> + * CPU_RESOLVING_TYPE here.
>> + * Use this header to define your accelerator-specific
>> + * cpu-specific accelerator interfaces.
>> + */
>> +
>> +#define TYPE_ACCEL_CPU "accel-" CPU_RESOLVING_TYPE
>> +#define ACCEL_CPU_NAME(name) (name "-" TYPE_ACCEL_CPU)
>> +typedef struct AccelCPUClass AccelCPUClass;
>> +DECLARE_CLASS_CHECKERS(AccelCPUClass, ACCEL_CPU, TYPE_ACCEL_CPU)
>> +
>> +typedef struct AccelCPUClass {
>> + /*< private >*/
>> + ObjectClass parent_class;
>> + /*< public >*/
>> +
>> + void (*cpu_class_init)(CPUClass *cc);
>> + void (*cpu_instance_init)(CPUState *cpu);
>> + void (*cpu_realizefn)(CPUState *cpu, Error **errp);
>
> If we want callers to check errp, better have the prototype return
> a boolean.
Good point, the whole errp thing is worth revisiting in the series,
there are many cases (which are basically reproduced in the refactoring from
existing code),
where errp is passed but is really unused.
I am constantly internally debating whether to remove the parameter altogether,
or to keep it in there.
What would you suggest?
>
>> +} AccelCPUClass;
>
>
Thanks for looking at this,
Claudio
- [PATCH v14 01/22] cpu: Introduce TCGCpuOperations struct, (continued)
- [PATCH v14 01/22] cpu: Introduce TCGCpuOperations struct, Claudio Fontana, 2021/01/28
- [PATCH v14 10/22] cpu: move cc->transaction_failed to tcg_ops, Claudio Fontana, 2021/01/28
- [PATCH v14 12/22] physmem: make watchpoint checking code TCG-only, Claudio Fontana, 2021/01/28
- [PATCH v14 11/22] cpu: move do_unaligned_access to tcg_ops, Claudio Fontana, 2021/01/28
- [PATCH v14 14/22] cpu: move debug_check_watchpoint to tcg_ops, Claudio Fontana, 2021/01/28
- [PATCH v14 09/22] cpu: move cc->do_interrupt to tcg_ops, Claudio Fontana, 2021/01/28
- [PATCH v14 16/22] accel: extend AccelState and AccelClass to user-mode, Claudio Fontana, 2021/01/28
- [PATCH v14 18/22] accel: introduce AccelCPUClass extending CPUClass, Claudio Fontana, 2021/01/28
- Re: [PATCH v14 18/22] accel: introduce AccelCPUClass extending CPUClass, Philippe Mathieu-Daudé, 2021/01/28
- Re: [PATCH v14 18/22] accel: introduce AccelCPUClass extending CPUClass,
Claudio Fontana <=
- Re: [PATCH v14 18/22] accel: introduce AccelCPUClass extending CPUClass, Alex Bennée, 2021/01/28
- Re: [PATCH v14 18/22] accel: introduce AccelCPUClass extending CPUClass, Philippe Mathieu-Daudé, 2021/01/28
- Re: [PATCH v14 18/22] accel: introduce AccelCPUClass extending CPUClass, Richard Henderson, 2021/01/28
- Re: [PATCH v14 18/22] accel: introduce AccelCPUClass extending CPUClass, Claudio Fontana, 2021/01/30
- Re: [PATCH v14 18/22] accel: introduce AccelCPUClass extending CPUClass, Richard Henderson, 2021/01/30
[PATCH v14 13/22] cpu: move adjust_watchpoint_address to tcg_ops, Claudio Fontana, 2021/01/28
[PATCH v14 21/22] hw/core/cpu: call qemu_init_vcpu in cpu_common_realizefn, Claudio Fontana, 2021/01/28
[PATCH v14 22/22] accel: introduce new accessor functions, Claudio Fontana, 2021/01/28
[PATCH v14 19/22] i386: split cpu accelerators from cpu.c, using AccelCPUClass, Claudio Fontana, 2021/01/28
[PATCH v14 17/22] accel: replace struct CpusAccel with AccelOpsClass, Claudio Fontana, 2021/01/28