From nobody Wed Nov 12 10:10:51 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1569545486; cv=none; d=zoho.com; s=zohoarc; b=EKiRnNjw/xwdAvTPt7o8eUQXXF8xEAiL4wMOSSU+SbhLrEhfg6zhQ1zLpfR3MYRESJp8VO1X9aCcZ9lBBmL2bPbXcsd9d822dbXnL0GxlPuHMG7VOefVxHjTVgHHGNwmJB/aeqdFNQAjiwJM/zKyE7sYUb+sYogpLtNb8sA943g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569545486; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=4a5VkzhrSmMyGCtCdZj11zI2vlkd18GdQi+DRUVjubo=; b=dAceoI+7azAx+f962wsp6yQgBQMnQz7dACCf9cdVjYLmLlxeag7Xv6aiE8ZmfVFf2cXTyhf8S/RTzq805gb3dEoJ+Tg+UP1fmgZE5a9zFarh8ECmiFtYuc1wKGVqKKv+OyYoUEM1km0ISGGdoI7S0Ev4JYP1HTd1eSMBV2L/F+E= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156954548637040.467077630929566; Thu, 26 Sep 2019 17:51:26 -0700 (PDT) Received: from localhost ([::1]:45706 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDeTk-0000Xf-Ss for importer@patchew.org; Thu, 26 Sep 2019 20:51:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49316) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDeRJ-00071N-BY for qemu-devel@nongnu.org; Thu, 26 Sep 2019 20:48:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDeRG-0008S2-L2 for qemu-devel@nongnu.org; Thu, 26 Sep 2019 20:48:53 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:12537) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iDeRG-0008JB-8W; Thu, 26 Sep 2019 20:48:50 -0400 Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 27 Sep 2019 08:48:49 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Sep 2019 17:45:04 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.58]) by uls-op-cesaip01.wdc.com with ESMTP; 26 Sep 2019 17:48:50 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1569545330; x=1601081330; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Vlv8jQm3wKK4DZJjww99om+ANcA80EJzz7CM7x+XWj4=; b=du4oiZeHgwoi4gZy413k5timSm++H13jH4Pm7ZLYcc9efHtJMg1CBNfD 84qxsfZ8/ikMQpunYcJdcOckn8nXiMOT0qjFePov7WGm6sat1CzopMQ0I f9YNX56JopfvhSozFr6+VgK3J9O/qPwxUIYOzwGKQJSRbDYMRDNSeddFn 3BT9j35oc3KwBorGDPlP8KyIomVLMmU9bCAq7cV2jsykr7EE61qD6FBbq fOd4nVtbBNfSYenGZTd7COiwsxIFYwZOS1JVhuIYp005OG78OA4OvW/0+ JpA/nxa8yA/MMeJbTbsoN1wwqEexqYQZcsZemCgf0jQ3a/mDQ0fAaJ0gr A==; IronPort-SDR: RQwiBJmxmyodr/PU+7G3fqJzpDIfJGv4+q9tSUtL3kmG4lcR5gzgSAxFwOi8X7d3utm5I2u9A/ QCP8SjTt9JoRSSor1LewkvuSCbEE5xIbHMbuEnm96aIksfEyKtJIGMFxjd/tYgw6+oZJ1HcVDU j8D4RJnYtqXrJWA2uYazXKjiUMUO0aePfsrQzmfWH27bSEOt3KXzwM8K6GG0tk5+XoqVfri+fv EDNj7Q2CoxPwMZS9UyOZrnDwRLBjM4EC9d07BJqb7ft5nKrOCpX1ikYDh/qoqMI2GVfQT8fXSJ fpE= X-IronPort-AV: E=Sophos;i="5.64,553,1559491200"; d="scan'208";a="119225551" IronPort-SDR: Jqzx55lkpRGymF235yvP3XH0YPc5TFcEVzQHccbam0WOomiuzWGCDs4DLccAyJDPZ6Oa1VmX48 O6XO8g2UHcPLbqFKM4MfZwHXoy6KLeuNCsQNM5ue7JsAcME5jWqnp2oC2H6sJJoYt0gKDPWqin /6h1ySiYv3Aye+ZORNRZVO/DeqiORvMTcrmjWfyCTjGevdiAH/6LeJ1okbIgW3FBrhsf0bFQ/W D0ntLpLMDMqW//9t/IN1PFgBMa066vHf4y5SGBwDiWr2RbutK8PD5iKqrQR91rGr/DlmK5IYSN lOiU+a7s0BjRew9F+x1D5EQm IronPort-SDR: NfcGtkJs7u89PC/CSEgSIDFPpMxLB99qOmty5VtKGO1AOgeqMei+n9hi4JD0jKsoWhr3u8HPAi g4i/tZ2eOUFGLLuF8dxLz3NKM/nTySrJZ9RIaoOvFwwLk6Raq6CBeAVdZjvshb8ax5qOG6xi79 /b8sLCxhNTLghWSFvOq00ROIgwEZKAno9ZWJPQDQayT4REG7PTBETo1kO0yqDHFOspDAdl4CBq sRnmCGXIZc6YoUNMUuoesXdjqzNJ+Wleb+6yyeh2KXmCgklUtq0sYNrhjhg3jxqg1C0ZSvUsmw 5jw= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v2 5/7] riscv/virt: Manually define the machine Date: Thu, 26 Sep 2019 17:44:31 -0700 Message-Id: <737cb09136e20293c82da7b07eb2020cc7bb99a2.1569545046.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 216.71.154.42 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: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Instead of using the DEFINE_MACHINE() macro to define the machine let's do it manually. This allows us to use the machine object to create RISCVVirtState. This is required to add children and aliases to the machine. This patch is no functional change. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Tested-by: Bin Meng --- hw/riscv/virt.c | 30 ++++++++++++++++++++++++------ include/hw/riscv/virt.h | 7 ++++++- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index d36f5625ec..e4dcbadcb5 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -362,8 +362,7 @@ static inline DeviceState *gpex_pcie_init(MemoryRegion = *sys_mem, static void riscv_virt_board_init(MachineState *machine) { const struct MemmapEntry *memmap =3D virt_memmap; - - RISCVVirtState *s =3D g_new0(RISCVVirtState, 1); + RISCVVirtState *s =3D RISCV_VIRT_MACHINE(machine); MemoryRegion *system_memory =3D get_system_memory(); MemoryRegion *main_mem =3D g_new(MemoryRegion, 1); MemoryRegion *mask_rom =3D g_new(MemoryRegion, 1); @@ -499,12 +498,31 @@ static void riscv_virt_board_init(MachineState *machi= ne) g_free(plic_hart_config); } =20 -static void riscv_virt_board_machine_init(MachineClass *mc) +static void riscv_virt_machine_instance_init(Object *obj) { - mc->desc =3D "RISC-V VirtIO Board (Privileged ISA v1.10)"; +} + +static void riscv_virt_machine_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + + mc->desc =3D "RISC-V VirtIO board"; mc->init =3D riscv_virt_board_init; - mc->max_cpus =3D 8; /* hardcoded limit in BBL */ + mc->max_cpus =3D 8; mc->default_cpu_type =3D VIRT_CPU; } =20 -DEFINE_MACHINE("virt", riscv_virt_board_machine_init) +static const TypeInfo riscv_virt_machine_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("virt"), + .parent =3D TYPE_MACHINE, + .class_init =3D riscv_virt_machine_class_init, + .instance_init =3D riscv_virt_machine_instance_init, + .instance_size =3D sizeof(RISCVVirtState), +}; + +static void riscv_virt_machine_init_register_types(void) +{ + type_register_static(&riscv_virt_machine_typeinfo); +} + +type_init(riscv_virt_machine_init_register_types) diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h index 6e5fbe5d3b..ffcdcc6dcc 100644 --- a/include/hw/riscv/virt.h +++ b/include/hw/riscv/virt.h @@ -22,13 +22,18 @@ #include "hw/riscv/riscv_hart.h" #include "hw/sysbus.h" =20 +#define TYPE_RISCV_VIRT_MACHINE MACHINE_TYPE_NAME("virt") +#define RISCV_VIRT_MACHINE(obj) \ + OBJECT_CHECK(RISCVVirtState, (obj), TYPE_RISCV_VIRT_MACHINE) + typedef struct { /*< private >*/ - SysBusDevice parent_obj; + MachineState parent; =20 /*< public >*/ RISCVHartArrayState soc; DeviceState *plic; + void *fdt; int fdt_size; } RISCVVirtState; --=20 2.23.0