From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6AF37C433E6 for ; Thu, 28 Jan 2021 13:23:58 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A22DA61492 for ; Thu, 28 Jan 2021 13:23:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A22DA61492 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:39406 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l57HA-0006dW-3L for qemu-devel@archiver.kernel.org; Thu, 28 Jan 2021 08:23:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52624) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l57Fl-000647-U4 for qemu-devel@nongnu.org; Thu, 28 Jan 2021 08:22:29 -0500 Received: from mx2.suse.de ([195.135.220.15]:58066) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l57Fk-0006EN-7n for qemu-devel@nongnu.org; Thu, 28 Jan 2021 08:22:29 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 89AF7ACB7; Thu, 28 Jan 2021 13:22:26 +0000 (UTC) Subject: Re: [PATCH v14 18/22] accel: introduce AccelCPUClass extending CPUClass To: =?UTF-8?Q?Philippe_Mathieu-Daud=c3=a9?= , =?UTF-8?Q?Alex_Benn=c3=a9e?= , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Peter Maydell , Markus Armbruster References: <20210128092814.8676-1-cfontana@suse.de> <20210128092814.8676-19-cfontana@suse.de> <64d8385c-db22-b647-2402-3840b0e0e9b5@redhat.com> From: Claudio Fontana Message-ID: <9a51a203-f6a8-686f-7859-475537b3607a@suse.de> 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 MIME-Version: 1.0 In-Reply-To: <64d8385c-db22-b647-2402-3840b0e0e9b5@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=195.135.220.15; envelope-from=cfontana@suse.de; helo=mx2.suse.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Thomas Huth , Alistair Francis , Roman Bolshakov , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" 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 >> --- >> 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