From nobody Fri Apr 19 15:56:27 2024 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=1570577943; cv=none; d=zoho.com; s=zohoarc; b=kquSf7g7qAo+cKwdoA5Imsy8eHA0Sq5/Ucn1VQSGcx8B3iwktduaa27vgskL5ClhyHNEXV9bxXYD3/c3F+CtaU67pI8/tlXswBfz96FDneO5AW0087/dntG7TLlblhLySchsaNd20Sg6t4HmzWDWycGwKSOm7UrqjvrlTXKNRto= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570577943; 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; bh=bwsqesdCXrMC3UAyGSjQ9I+IFQxxl+DSvPMKyOiOUEU=; b=WRwkL6aQgZfDhcBl/hhhbiL6gt1R6blqvOqCucdsNd2NQ27By/zIwGgT9oJ/opVnz8hrDYtimtcP8EoUq6z/QUgWq7LXUPH9AyLaUQvxG78FW+VVVcWL2+JGMJupJGCdAYyhCsPSflUBNLAN6e1oq9QqswU6e0mE/BXZgzVeVmA= 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 1570577943229192.64427379975598; Tue, 8 Oct 2019 16:39:03 -0700 (PDT) Received: from localhost ([::1]:37972 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz49-00026J-5D for importer@patchew.org; Tue, 08 Oct 2019 19:38:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32930) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz21-0000NX-9r for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:36:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHz20-0006NK-3r for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:36:41 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:32918) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iHz1z-0006Mq-SD; Tue, 08 Oct 2019 19:36:40 -0400 Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 09 Oct 2019 07:36:38 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Oct 2019 16:32:32 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.58]) by uls-op-cesaip02.wdc.com with ESMTP; 08 Oct 2019 16:36:39 -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=1570577800; x=1602113800; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TLCgi6VqXQMc9CLMQXN3Ix/4vw03OTnjdwR+JtHWZJc=; b=oEZBnDKKMuZXTZu+iIom2plFAAcKDpT3C2YUcP6r//ivjliW0AlTG79m J7FNWMeM1rO3OrrPGNYR+RimBT+C3iqh8TDryZDOTwCECt65xx0911i7X 7GqtwlVOhk0Zpr9Qkt9g92mey/2ETUNt+kjmo6nB/quCq38Ng5pEA1x8O 7znYZStKjEPFnKbM9NGHulZFg6yPmHtsS+j/lR9ma/z2Dlrl205ppPhJn ZNzJ9hGngEkoL4LW3+mOvkAZELLhAQtW+/Rnpy0rD3UjCq2LXeOB0VBXC Xndv/J4bMjqwgrqL4PwpekmUGVS2kA9oykhlvUPZ+Qpvxv7N5sXa3WFje A==; IronPort-SDR: UyE3FW+XFV7IFQ39Gm2bIaTCPLPNUylAG9eOChpVMLpAF5VWkuXIQeLAeYtK9594+ASzPOj5mW 5dj62ziX86+yJYu9UJ0TY0wFdZxCN9SCEfYQIAhwP6Coeb9F1/vAjacGXKsQ49UKokpxVDqJqZ b2ayFYa6OiA7+r1zPFb/qmJeIJ80lX12Gqg2lVPX5q11zj8GXcVd1SJcncJlKu27wgWh24ZvrO /x4tpIOJaWwHNW4HlfY09RsKFIMU9J21tFY9yTcKWE3TrZwZksPanqNqijypMsB94BExJkCFCC whc= X-IronPort-AV: E=Sophos;i="5.67,273,1566835200"; d="scan'208";a="124519167" IronPort-SDR: rWpg7uHnNSQc4h1JK8KGf0EdKTGmUPtnurcR3ncA/+YXJsBHAKFyvJ5PmZe6ULu6DNIGFUGW2k enkIDUR8g5qZpCOEVOm+CdR/aGA9k6LoOGAa/jRAHjLHgS2ciAsZbi60APhd3KEzPMu8QwNdWp 9fcll+DBkyKLnh+y6m4bi5JEI80sbkTW/v7cY72v4kgGRlHjhyHrbI0uJ0VzmMN1Zcb+dW9s7A jeXvGQKZJU+pBUKVS0eHwkZjk6SMJFYCC0BB1wqYDPpagGZ80XLUrY6Mb62tb9QQWs076DkStz dKP2YG2Z2gqKCvkmXMQtp52v IronPort-SDR: ZgfVOJaX3rU9tS0AcuZH1BxHw+tVnD20K6hs3gUlu4L298vjnQxBfh4kSQuKJzUU3kTptSKV5N zd6PXYKKl7YXY0IJcUhL0s2fOamdLY9S+XkglQl39GewN4pCiFtI9fIRbu3tgJnC30DWI8HKh0 yyatso1hJYEOxUt3A8qYrdZ01dFEZn7+vsQVMoVL1ajmfc1xpi0eig0SoLyfVYBh/zzqGloNQS lNxaplN2HCQA7SEG3ZJNDvZPHXYPAmdjSEzsXnSvPmd+87QhMdxGElzM6Oxjow8p9fUyG2uivp 6Y4= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v3 1/7] riscv/sifive_u: Add L2-LIM cache memory Date: Tue, 8 Oct 2019 16:32:07 -0700 Message-Id: <1fd82cdaac374fb8b72dad907c039da3abfb62cc.1570577500.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.153.141 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" On reset only a single L2 cache way is enabled, the others are exposed as memory that can be used by early boot firmware. This L2 region is generally disabled using the WayEnable register at a later stage in the boot process. To allow firmware to target QEMU and the HiFive Unleashed let's add the L2 LIM (LooselyIntegrated Memory). Ideally we would want to adjust the size of this chunk of memory as the L2 Cache Controller WayEnable register is incremented. Unfortunately I don't see a nice way to handle reducing or blocking out the L2 LIM while still allowing it be re returned to all enabled from a reset. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- hw/riscv/sifive_u.c | 16 ++++++++++++++++ include/hw/riscv/sifive_u.h | 1 + 2 files changed, 17 insertions(+) diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 9f8e84bf2e..1d255ad13e 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -65,6 +65,7 @@ static const struct MemmapEntry { [SIFIVE_U_DEBUG] =3D { 0x0, 0x100 }, [SIFIVE_U_MROM] =3D { 0x1000, 0x11000 }, [SIFIVE_U_CLINT] =3D { 0x2000000, 0x10000 }, + [SIFIVE_U_L2LIM] =3D { 0x8000000, 0x2000000 }, [SIFIVE_U_PLIC] =3D { 0xc000000, 0x4000000 }, [SIFIVE_U_PRCI] =3D { 0x10000000, 0x1000 }, [SIFIVE_U_UART0] =3D { 0x10010000, 0x1000 }, @@ -431,6 +432,7 @@ static void riscv_sifive_u_soc_realize(DeviceState *dev= , Error **errp) const struct MemmapEntry *memmap =3D sifive_u_memmap; MemoryRegion *system_memory =3D get_system_memory(); MemoryRegion *mask_rom =3D g_new(MemoryRegion, 1); + MemoryRegion *l2lim_mem =3D g_new(MemoryRegion, 1); qemu_irq plic_gpios[SIFIVE_U_PLIC_NUM_SOURCES]; char *plic_hart_config; size_t plic_hart_config_len; @@ -459,6 +461,20 @@ static void riscv_sifive_u_soc_realize(DeviceState *de= v, Error **errp) memory_region_add_subregion(system_memory, memmap[SIFIVE_U_MROM].base, mask_rom); =20 + /* + * Add L2-LIM at reset size. + * This should be reduced in size as the L2 Cache Controller WayEnable + * register is incremented. Unfortunately I don't see a nice (or any) = way + * to handle reducing or blocking out the L2 LIM while still allowing = it + * be re returned to all enabled after a reset. For the time being, ju= st + * leave it enabled all the time. This won't break anything, but will = be + * too generous to misbehaving guests. + */ + memory_region_init_ram(l2lim_mem, NULL, "riscv.sifive.u.l2lim", + memmap[SIFIVE_U_L2LIM].size, &error_fatal); + memory_region_add_subregion(system_memory, memmap[SIFIVE_U_L2LIM].base, + l2lim_mem); + /* create PLIC hart topology configuration string */ plic_hart_config_len =3D (strlen(SIFIVE_U_PLIC_HART_CONFIG) + 1) * ms->smp.cpus; diff --git a/include/hw/riscv/sifive_u.h b/include/hw/riscv/sifive_u.h index e4df298c23..50e3620c02 100644 --- a/include/hw/riscv/sifive_u.h +++ b/include/hw/riscv/sifive_u.h @@ -58,6 +58,7 @@ enum { SIFIVE_U_DEBUG, SIFIVE_U_MROM, SIFIVE_U_CLINT, + SIFIVE_U_L2LIM, SIFIVE_U_PLIC, SIFIVE_U_PRCI, SIFIVE_U_UART0, --=20 2.23.0 From nobody Fri Apr 19 15:56:27 2024 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=1570578079; cv=none; d=zoho.com; s=zohoarc; b=nvLlg4WLcG+TaRkT5EZLzdC61pdpAF8r21swxoow+lizGLaJ1857xClXMGSFiK2zqMgnUxRH6Bx/qDUj5MP2cex5HdwNfwq+9KIJegwa7qVKB08QzGsFq1DceThAJ6eyAjZRRifOn2I2D2PbutcSBbKg2uF0j7+Kg3uxMyk7tLs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570578079; 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; bh=4apHK6gHzGLrUNWSnjJCIKFHHj/+4FK0FzyxoIXDx94=; b=CdFQU0gNT6uqeFqLFDsFVXrmHqmhD9bmbQIXhTvYAYwyEmBWYyk5Nf51L32lz/JtJhmW4O3vKu447fmmMMGrp38SxPdOqljTiw64Go0dFN0d3Qeh/MrGXyZPnKaECBlbl7P/XtYUcgxS78GZBHpSqf/L7LPW3B3ko7AMpQa9pjA= 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 1570578079107589.2117210352892; Tue, 8 Oct 2019 16:41:19 -0700 (PDT) Received: from localhost ([::1]:38016 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz6U-0004ZF-1W for importer@patchew.org; Tue, 08 Oct 2019 19:41:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32957) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz24-0000Ni-AY for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:36:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHz22-0006Ny-L2 for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:36:44 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:32918) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iHz22-0006Mq-D4; Tue, 08 Oct 2019 19:36:42 -0400 Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 09 Oct 2019 07:36:42 +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; 08 Oct 2019 16:32:36 -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; 08 Oct 2019 16:36:42 -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=1570577803; x=1602113803; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Rg3N8VIK2j7pN0XrZHKq2dkgVaGOQYXSYGDnzxy0r7I=; b=HFPkOIt7F14EbTUFsu5NpKm2JErYat/J/tRTdVW4ToMyJbJJT+oxgHBl YE+oGWlq6EdAmaSaLmc++kKLTrwSR4geBlh8iARHriia4PIQtrpAs5rJy VRILJ8oxAqnGjksfJ1U4wWq2njij1LzfKRfnMvkbIs1prqiiCCiyY/+P6 CkOW5cuDXL0TvIujzbY4xwcArVtXQAbMI+ToPGySETNIvll2k+3Ul9hNh nNmriWhIHLgL2jLeAed6j9hYFa176vgSgiSzeluHL6xoEybZ2kC20iKHp 0I2L3dFUsPOzLsHfu4W52Jj2FIl5RA5PemY/CQLzt5ws8+bA4+UUekVsq Q==; IronPort-SDR: wkkf4574EZNMYnUSL1tvgUQZqktgE6bybEOi2w8dwNZK5+fyo+2Ks2QUYw0OjwGd09XnkpBRQJ CwWDXbZMY2BHb/7TAOvwNQAr/6+J9Ki0Gjwnoj5wScn3DiqReIhgDrx1XTfH/P6oiD7RYqDSu7 IJ4iNb79nEGISR3Bjvm+XkYg+INo25XNT4KMPvr06Fxq4c0FnTNkODFhGMZgqLZHynJKqARkvi Rp+TjqpMvifDwU9cqeoltIqDEeLBC3zDHgV551dISbWHAWJE8aJ12PJ0loAhCeNJJgjiMsVZhA TOs= X-IronPort-AV: E=Sophos;i="5.67,273,1566835200"; d="scan'208";a="124519175" IronPort-SDR: aokDl2Y142+UVlIV/SmHGiQM7TL8d2RqGvhDf4jwNONs/XD4Sqvri76HUUe00os3flYoSk4+w9 4HIAiJDvnoJrs7Oz43ipJ9WDQN6gQzdEtpRGy4YNfPQGMF3hoHCHOzoy5nxU/mxnx0NGg+xt3E TSMJJNv8dPIqVNBJdr7YG2qBqWrHDt8cRqFNK4FfDWGiOSa1v3/z0IQeRxXTPxBN2OmJDqKwKD yiXrrgxwslcSZcjsUTqYvoSdZ9R7nFDy0tPWOVixIDPKruQqKwsdygg2iKTiOX8CTya0tNoGqM +EXAKlZ/gsWocM9Memc/6pLv IronPort-SDR: 19ypslduk4Gh8G2oWJe39OkBEGrIyjQyng9YOqzCs27YRkcXRiqLoNyhxv+E67Fjm4sJ0cXkEs rFs34Yjkpyo+Qx7ay1h4OjqZW087pUP65mgHkMk/VspXwi9rLwiE8MG4nfMy4yzmEQ42Pgx4aI TWxdNfndFgwDuoZFRjjfHRodqpBy56fAd6g0r5OTGkjc+DfmLjBOhN4j3qRoGTYGJzfAo8aoAf VwVEnwozMtSNBgzI/eaUK/Wfj1ObVtWUMx0zeyM0kO+ThHuuvwyhmOtaM3i+BpNunp2/lYxL3j vMg= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v3 2/7] riscv/sifive_u: Add QSPI memory region Date: Tue, 8 Oct 2019 16:32:11 -0700 Message-Id: <3c821dfbfa3ffb9ec410016a0384c518a8ca49df.1570577500.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.153.141 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" The HiFive Unleashed uses is25wp256 SPI NOR flash. There is currently no model of this in QEMU, so to allow boot firmware developers to use QEMU to target the Unleashed let's add a chunk of memory to represent the QSPI0 memory mapped flash. This can be targeted using QEMU's -device loader command line option. In the future we can look at adding a model for the is25wp256 flash. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng --- hw/riscv/sifive_u.c | 8 ++++++++ include/hw/riscv/sifive_u.h | 1 + 2 files changed, 9 insertions(+) diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 1d255ad13e..bc0e01242b 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -71,6 +71,7 @@ static const struct MemmapEntry { [SIFIVE_U_UART0] =3D { 0x10010000, 0x1000 }, [SIFIVE_U_UART1] =3D { 0x10011000, 0x1000 }, [SIFIVE_U_OTP] =3D { 0x10070000, 0x1000 }, + [SIFIVE_U_FLASH0] =3D { 0x20000000, 0x10000000 }, [SIFIVE_U_DRAM] =3D { 0x80000000, 0x0 }, [SIFIVE_U_GEM] =3D { 0x10090000, 0x2000 }, [SIFIVE_U_GEM_MGMT] =3D { 0x100a0000, 0x1000 }, @@ -313,6 +314,7 @@ static void riscv_sifive_u_init(MachineState *machine) SiFiveUState *s =3D g_new0(SiFiveUState, 1); MemoryRegion *system_memory =3D get_system_memory(); MemoryRegion *main_mem =3D g_new(MemoryRegion, 1); + MemoryRegion *flash0 =3D g_new(MemoryRegion, 1); int i; =20 /* Initialize SoC */ @@ -328,6 +330,12 @@ static void riscv_sifive_u_init(MachineState *machine) memory_region_add_subregion(system_memory, memmap[SIFIVE_U_DRAM].base, main_mem); =20 + /* register QSPI0 Flash */ + memory_region_init_ram(flash0, NULL, "riscv.sifive.u.flash0", + memmap[SIFIVE_U_FLASH0].size, &error_fatal); + memory_region_add_subregion(system_memory, memmap[SIFIVE_U_FLASH0].bas= e, + flash0); + /* create device tree */ create_fdt(s, memmap, machine->ram_size, machine->kernel_cmdline); =20 diff --git a/include/hw/riscv/sifive_u.h b/include/hw/riscv/sifive_u.h index 50e3620c02..2a08e2a5db 100644 --- a/include/hw/riscv/sifive_u.h +++ b/include/hw/riscv/sifive_u.h @@ -64,6 +64,7 @@ enum { SIFIVE_U_UART0, SIFIVE_U_UART1, SIFIVE_U_OTP, + SIFIVE_U_FLASH0, SIFIVE_U_DRAM, SIFIVE_U_GEM, SIFIVE_U_GEM_MGMT --=20 2.23.0 From nobody Fri Apr 19 15:56:27 2024 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=1570578150; cv=none; d=zoho.com; s=zohoarc; b=npuHuYSkOzHsUl3RHwhiriGKDDoLSEBKk+xVtV9zlm9is6tMLjOsaONoip6g5wUZdD/IyfV4YILbElG8s1KmS/92gTEju7KT7qXIYnKr8WU7a8mUuZcMBqaYP53NVnEUU/4m4krVHFzLef8cIlm94fIWxqjeRR3OwuBllU0y5FM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570578150; 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; bh=khjB8yLRm00yxcN3CuZ+MTcS+DLtVP+rPTbSxBOYWE4=; b=bhLG0jVLFj7nAJCEbusV/ys8PiTj/KGXmqZ6fQVycOxvQT+2PVzCvi0wheztIQtY0jYtPmpm4qqV8D7E70MJRgnpkYrMyyp1RoaDgQFKOnx/8p4QunRKGLhitW+92KAHINAisJfi250Njei2NioOGJ/NGEHKRegG52B9Zln/nK4= 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 1570578150686149.87893414774692; Tue, 8 Oct 2019 16:42:30 -0700 (PDT) Received: from localhost ([::1]:38036 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz7d-00060J-Kv for importer@patchew.org; Tue, 08 Oct 2019 19:42:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32997) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz2B-0000RH-0T for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:36:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHz29-0006Qo-CA for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:36:50 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:26134) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iHz29-0006Q6-28; Tue, 08 Oct 2019 19:36:49 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 09 Oct 2019 07:36:46 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Oct 2019 16:32:46 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.58]) by uls-op-cesaip02.wdc.com with ESMTP; 08 Oct 2019 16:36:46 -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=1570577809; x=1602113809; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=R2nVtvjRrWvX24XxkUnh1oGyAnhgooAojvHlsrtud9s=; b=ldXPgJv3e/xif27u1itUm8NNcQ6T78cjeukZnN6k1Euu1QDVJCyka/7z z+23/QwvEU4l/wLCj9FB6uuN/HyWgejPj0h3cK+w4StJFh2ZhKzLRU4x1 v0JWOGVxeHT6DFb0eJ6+GivUHBiElGe4gZHMaCVpYcdLuukS6d3+Fcsdo SbuwBXluL0YKY75IzTE89uivq5879VWSuHvV372nBaOAVoFgxnkUTQvu6 F1aVMi6u0hjYeV/qOPhnbx+yM9JIwxGcTiarIaudg4jeM1EHOXfiTQEpe wrM/gkrDLxvpiIgC+o36ABh0q0botbrAQ5JIAwjc+wMjjre9LT/FtawLn A==; IronPort-SDR: nchJAm6MnHfj8WiV5M5KLxLyF65KRKQXwWFL3B8BbmROtZ6njuaLeLgVTI25qldXANa4RVc8Ft lAq8GiiFeB5NxwCGtWuDoSpiC9YKe8LEcNfzACD+FEQGPtvRrByDTXcvSDxzPRHGXb12XP7A1t QtBpSvGfURDSuwA16+GYNma1OmKZiGBunyUKbUCg03NErKNU5WOBS0r49JLcjf4o71HsBBIgWv k7/lFfAKU9Ss5zScXnqoICOb6zNdQBLY8fsLLqdzOR/Wf9+xD/pFzDdaIPZ1HAbcTFkVQ6Dg3X PKc= X-IronPort-AV: E=Sophos;i="5.67,273,1566835200"; d="scan'208";a="227059688" IronPort-SDR: DTKWztKd4F/qmR6XuFxQ6jaR4BQ1rqx2wyEljy2Br54L5ruJEyI8VTxLVH45hdnlbbvUkOYdvv xf8Zd23ENXKv4uHF0HFg2tpMHE7o9JQKQus/6HSIRugMwqwKnG0dCPslJ7fdnPyUCPgrMn+eQ3 3QDAcgHbvTLN5anBp+ivIHzXaVM73vnyg7835RTe3gjlxdU2eE5OTx0TlVxT11Gk9zkROAyWsQ HO/zpmoX3TO+UACZLc8ozS9sdpNssnRAOdUP5I3qCly/by/hFvAfxPCJ4kjkwmD+3GI48FPuOw BRaY1T8tYGazLa6Miq5Fz4so IronPort-SDR: ECxz0I8bL62xCodACoQwtBjhYuZ5XYq8Ikn5vAKiK6EfxwoM6IYDvFviOM2xtwwbinCEiuvnvI dXT7Ap3pwkxSYEKX5hqd6iOs0BVvk2oT3ASwUdXTccISrMHOLg6BMO5egACTcEJ19lwjZuUMTR HOR+Mk0md0srXE3xVKRT71JUu6KHvw/4oQzKDtHEonJGPmM2cS7xyYyw0wxw88EoO9n53pEKV2 h34RfBqKiBUC+Q5tTzUC4l2oJw93Q44jX8jQuHMrs0PowaV+lR+3gZFcflbY9AhlVJ3g43i6/m pLM= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v3 3/7] riscv/sifive_u: Manually define the machine Date: Tue, 8 Oct 2019 16:32:14 -0700 Message-Id: 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: 68.232.141.245 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 specify machine properties. This patch is no functional change. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Tested-by: Bin Meng --- hw/riscv/sifive_u.c | 44 ++++++++++++++++++++++++++----------- include/hw/riscv/sifive_u.h | 7 +++++- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index bc0e01242b..f5741e9a38 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -310,8 +310,7 @@ static void create_fdt(SiFiveUState *s, const struct Me= mmapEntry *memmap, static void riscv_sifive_u_init(MachineState *machine) { const struct MemmapEntry *memmap =3D sifive_u_memmap; - - SiFiveUState *s =3D g_new0(SiFiveUState, 1); + SiFiveUState *s =3D RISCV_U_MACHINE(machine); MemoryRegion *system_memory =3D get_system_memory(); MemoryRegion *main_mem =3D g_new(MemoryRegion, 1); MemoryRegion *flash0 =3D g_new(MemoryRegion, 1); @@ -433,6 +432,10 @@ static void riscv_sifive_u_soc_init(Object *obj) TYPE_CADENCE_GEM); } =20 +static void riscv_sifive_u_machine_instance_init(Object *obj) +{ +} + static void riscv_sifive_u_soc_realize(DeviceState *dev, Error **errp) { MachineState *ms =3D MACHINE(qdev_get_machine()); @@ -546,17 +549,6 @@ static void riscv_sifive_u_soc_realize(DeviceState *de= v, Error **errp) memmap[SIFIVE_U_GEM_MGMT].base, memmap[SIFIVE_U_GEM_MGMT].size); } =20 -static void riscv_sifive_u_machine_init(MachineClass *mc) -{ - mc->desc =3D "RISC-V Board compatible with SiFive U SDK"; - mc->init =3D riscv_sifive_u_init; - mc->max_cpus =3D SIFIVE_U_MANAGEMENT_CPU_COUNT + SIFIVE_U_COMPUTE_CPU_= COUNT; - mc->min_cpus =3D SIFIVE_U_MANAGEMENT_CPU_COUNT + 1; - mc->default_cpus =3D mc->min_cpus; -} - -DEFINE_MACHINE("sifive_u", riscv_sifive_u_machine_init) - static void riscv_sifive_u_soc_class_init(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); @@ -580,3 +572,29 @@ static void riscv_sifive_u_soc_register_types(void) } =20 type_init(riscv_sifive_u_soc_register_types) + +static void riscv_sifive_u_machine_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + + mc->desc =3D "RISC-V Board compatible with SiFive U SDK"; + mc->init =3D riscv_sifive_u_init; + mc->max_cpus =3D SIFIVE_U_MANAGEMENT_CPU_COUNT + SIFIVE_U_COMPUTE_CPU_= COUNT; + mc->min_cpus =3D SIFIVE_U_MANAGEMENT_CPU_COUNT + 1; + mc->default_cpus =3D mc->min_cpus; +} + +static const TypeInfo riscv_sifive_u_machine_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("sifive_u"), + .parent =3D TYPE_MACHINE, + .class_init =3D riscv_sifive_u_machine_class_init, + .instance_init =3D riscv_sifive_u_machine_instance_init, + .instance_size =3D sizeof(SiFiveUState), +}; + +static void riscv_sifive_u_machine_init_register_types(void) +{ + type_register_static(&riscv_sifive_u_machine_typeinfo); +} + +type_init(riscv_sifive_u_machine_init_register_types) diff --git a/include/hw/riscv/sifive_u.h b/include/hw/riscv/sifive_u.h index 2a08e2a5db..a921079fbe 100644 --- a/include/hw/riscv/sifive_u.h +++ b/include/hw/riscv/sifive_u.h @@ -44,12 +44,17 @@ typedef struct SiFiveUSoCState { CadenceGEMState gem; } SiFiveUSoCState; =20 +#define TYPE_RISCV_U_MACHINE MACHINE_TYPE_NAME("sifive_u") +#define RISCV_U_MACHINE(obj) \ + OBJECT_CHECK(SiFiveUState, (obj), TYPE_RISCV_U_MACHINE) + typedef struct SiFiveUState { /*< private >*/ - SysBusDevice parent_obj; + MachineState parent_obj; =20 /*< public >*/ SiFiveUSoCState soc; + void *fdt; int fdt_size; } SiFiveUState; --=20 2.23.0 From nobody Fri Apr 19 15:56:27 2024 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=1570578076; cv=none; d=zoho.com; s=zohoarc; b=kU4w8n626FL8koUhuReSFjEW+tpa/LXJ1IXycYJKe5aPxOvOrREtjoSwHUUjjpnE5lPKgIFsmVPG1ULp85mk2/+uREgPPDKqRgaKuH1FUOmVK4i04f/d6nkette0CY5mfcqaOAPpFt3fA+wvxgOh7yowZaoGRFpCLIWppuye0aQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570578076; 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; bh=IKVXW7l2LAKbAjIzYgBF33jHVLR//b+cVF0bRw4aWHM=; b=PHxWBpt27qL3j7G0E8T/kNKyBGHCaOaYrFN2QEaumswH5wEXCuXVcYnWALjYRvqCMWAOtMlIgXf95+B5dmKUn4CEEvgcP2hdR720lHuF0tVO270iurYXeQClj4wOIn4k+p8E1ESC0e1i0ZluT2e4ePozYebul8SHhx1m/sBvNBg= 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 1570578076556935.1103032759905; Tue, 8 Oct 2019 16:41:16 -0700 (PDT) Received: from localhost ([::1]:38012 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz6R-0004XB-HJ for importer@patchew.org; Tue, 08 Oct 2019 19:41:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33002) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz2B-0000S6-Jn for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:36:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHz2A-0006R3-6G for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:36:51 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:26134) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iHz29-0006Q6-Qj; Tue, 08 Oct 2019 19:36:50 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 09 Oct 2019 07:36:49 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Oct 2019 16:32:50 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.58]) by uls-op-cesaip02.wdc.com with ESMTP; 08 Oct 2019 16:36: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=1570577809; x=1602113809; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kWWrsx1bcsXXl1QzJ4Tk9h5X2ZCbYLwy/+8InmU8BBo=; b=nFCnRB2ptBmw0TQSmJ/znwgkYrJjGgFTeOwkP+DVT4w7ktBmRgiK9A/u SsZWblvuFuxjQNfr1S/MrYs/WCf2Fc3bemad0ULjmr21py6/t/LFPrLAf 4ZHGL2/2yupYNJj/ToLoQ8WdDtpy95TUEfGKl2pTb3xPEAFKmmzBU+DER jkF2Pyr4g09BRty3k61J0eSpkc2zZk0IBmI+TahZeyrsY3MSLyfqV59BB 5HrDYTbX5VnSGNPmPlWmbP7Iyd34M34qnkOrJiJfue1omqpB5HSXi6DOe yXNZFlFTNdbbCw5YDLzhwRcUwRx48xVNAFU30vxwGTi7fPB/aUJ7hYYC/ w==; IronPort-SDR: kVtfbpcNZYIz3AuZbK4nKlbBRHBlanrXYJeYUZdPH1rRTBS/IrIBjqCkvcRAOCL4uFBTU+x0wA j2QCI+4uNJY/V4jsBUq5yyKjEY0Kl/2tAFJbcrNlzxqJGYMzvy9lkUQBf48bKSyGsxr7jy/4aq 7g6AMoIua7ApB9hUZlkkLsxpDxs2uYgr1c0nWBEH8oqW6xBmZYGmghcSzml8jkksM4qgNcNS5I qsl6fk+g2/+43Ad5deIGQEUXYD8LRgx5M2kNGes5n4p/G+1pc05bEc9geK5kVC4b0QvkLIvsrV nGk= X-IronPort-AV: E=Sophos;i="5.67,273,1566835200"; d="scan'208";a="227059691" IronPort-SDR: 8S9p4T3edRmpRczheR7YEnHExnkK86UVXRriUTeyVzqTCFZYh+n6rwnX5ICB59bOtPesZM+sd8 TavoPf0bLEGmD8hZeJQqjyQKjeDjfIU2AN32HAkl403pssA9Vd1Lb7kWorLCbnOW8C9/A1E+2Y z7ykdfl1x37r9PJHHemH8v5G26lRdtYoG7+uYZK3sg9FJo7zFIvHHIZcEpkFr+nbdGy+m2UWad OYF3BQtNkX0gRPTzRYk9zxVTjnCpcZ1/IzlKXUMdulbWugG4yeEyz1RlAH4wqhERdoDsxlGWrQ fgkONK4HhZHZkQaHLYaEe1HO IronPort-SDR: PpyqTvErwLcqIF4bQ/xLNCYIYheoec60zDy6Y97jXAvsP+Nf2vTvxiayjoO9AdolGSM3W7ZZfU TxKjA4Ln+UYN7XD4Eo8WmbkCzaL5KNLByzbKzKglNsVhnuqDXGV1kkHJpTR5VScr9ileuZzQtV ZcIzyOl8eh71Rk7K8/YP+E5UApzQKwdAOn2VrXu0uxomT2KWTpmJo7IrHcWlcloWlEQiCLNQQl qX3PuSRlUqIq1IX6JIjon6FW4qcyAESruNYZn3CpGTEjPSyMntPogEGfNfusxiB0d1v3AFJydg jzY= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v3 4/7] riscv/sifive_u: Add the start-in-flash property Date: Tue, 8 Oct 2019 16:32:18 -0700 Message-Id: <03cc7cf5c8400dffd6af60f06fe637f117747d9a.1570577500.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: 68.232.141.245 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" Add a property that when set to true QEMU will jump from the ROM code to the start of flash memory instead of DRAM which is the default behaviour. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Tested-by: Bin Meng --- v3: - Use the start_addr variable instead of editing reset vector - Fix function names hw/riscv/sifive_u.c | 30 +++++++++++++++++++++++++++++- include/hw/riscv/sifive_u.h | 2 ++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index f5741e9a38..43e9f744a3 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -314,6 +314,7 @@ static void riscv_sifive_u_init(MachineState *machine) MemoryRegion *system_memory =3D get_system_memory(); MemoryRegion *main_mem =3D g_new(MemoryRegion, 1); MemoryRegion *flash0 =3D g_new(MemoryRegion, 1); + target_ulong start_addr =3D memmap[SIFIVE_U_DRAM].base; int i; =20 /* Initialize SoC */ @@ -356,6 +357,10 @@ static void riscv_sifive_u_init(MachineState *machine) } } =20 + if (s->start_in_flash) { + start_addr =3D memmap[SIFIVE_U_FLASH0].base; + } + /* reset vector */ uint32_t reset_vec[8] =3D { 0x00000297, /* 1: auipc t0, %pcrel_hi(dtb) */ @@ -368,7 +373,7 @@ static void riscv_sifive_u_init(MachineState *machine) #endif 0x00028067, /* jr t0 */ 0x00000000, - memmap[SIFIVE_U_DRAM].base, /* start: .dword DRAM_BASE */ + start_addr, /* start: .dword */ 0x00000000, /* dtb: */ }; @@ -432,8 +437,31 @@ static void riscv_sifive_u_soc_init(Object *obj) TYPE_CADENCE_GEM); } =20 +static bool sifive_u_get_start_in_flash(Object *obj, Error **errp) +{ + SiFiveUState *s =3D RISCV_U_MACHINE(obj); + + return s->start_in_flash; +} + +static void sifive_u_set_start_in_flash(Object *obj, bool value, Error **e= rrp) +{ + SiFiveUState *s =3D RISCV_U_MACHINE(obj); + + s->start_in_flash =3D value; +} + static void riscv_sifive_u_machine_instance_init(Object *obj) { + SiFiveUState *s =3D RISCV_U_MACHINE(obj); + + s->start_in_flash =3D false; + object_property_add_bool(obj, "start-in-flash", sifive_u_get_start_in_= flash, + sifive_u_set_start_in_flash, NULL); + object_property_set_description(obj, "start-in-flash", + "Set on to tell QEMU's ROM to jump to = " \ + "flash. Otherwise QEMU will jump to DR= AM", + NULL); } =20 static void riscv_sifive_u_soc_realize(DeviceState *dev, Error **errp) diff --git a/include/hw/riscv/sifive_u.h b/include/hw/riscv/sifive_u.h index a921079fbe..2656b43c58 100644 --- a/include/hw/riscv/sifive_u.h +++ b/include/hw/riscv/sifive_u.h @@ -57,6 +57,8 @@ typedef struct SiFiveUState { =20 void *fdt; int fdt_size; + + bool start_in_flash; } SiFiveUState; =20 enum { --=20 2.23.0 From nobody Fri Apr 19 15:56:27 2024 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=1570577982; cv=none; d=zoho.com; s=zohoarc; b=igQqqSM/M5BISU6gUwVfmduNxwVAjSUv41/YgulSSpBAZF/NGKUtnPew7MaPIkcT6ENisuvUF2dQ9iMPlLUaTrCAqFShqWvTJW1HXlFCkp9AApOIDHbS/EWsRI6juYJuHYLkSHz64QHDuULZfFcQU8Xz5ghKFm+TY26/S+L8R3Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570577982; 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; bh=gu3V0ryBsTJ0yOgHpmMiEcoa2+lzTIdLBOLkehoSfsE=; b=WkO0dOVDElV+hNysWXQp4sKiDsM06z9n2Ebbtr83iMoKDwDBahxainc8p3xDALOt5OWlpDCp95BJZFOyYoHixbnd/vMFPmrv+f/K/sDuy6FloF8QQ1uWzBfQskmYa2blh7Qi3SGDn5gXyV5bc4O3QzY/oL82u/tW7Tw34U0H3mY= 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 1570577982676149.47123251682262; Tue, 8 Oct 2019 16:39:42 -0700 (PDT) Received: from localhost ([::1]:37980 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz4t-0002LW-Ge for importer@patchew.org; Tue, 08 Oct 2019 19:39:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33045) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz2F-0000XS-T6 for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:36:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHz2E-0006SK-8t for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:36:55 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:26134) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iHz2D-0006Q6-RR; Tue, 08 Oct 2019 19:36:54 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 09 Oct 2019 07:36:53 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Oct 2019 16:32:53 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.58]) by uls-op-cesaip02.wdc.com with ESMTP; 08 Oct 2019 16:36:54 -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=1570577813; x=1602113813; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=RmUUWqqvs0KbSgjoaH5oggrEyXhZo+WnAXQN4PPkPvE=; b=Xq83Jnj3D4aGruU7MyzuZgi81NMfAMG5j9UIYzjB3hA9CaV/9Mm7WOq8 tP8RI94pDD/7ag5uucJ718s+CZ5jwTXC90sLWrzYeutLlxoZsq4APBQRZ j4smyDN7z9jIrCTb1r5MteKd4rowD31WeprdARaSfPsSnsIMd2yIIzIpc vU8n9VGkVQ5aW2cQE7lsNMN50f8aNsZoQM5s+M3nK55gGoIECPcn+xhpR jFnVnigpTMHAg5ILgbVxFVIVwOri8qX3ccUODhbpHnEXwtgNhYutdghhm 5oBwoMda8eEgd3RDLQ0LnKaWSI6fj4lhJVav97sLzsW+4dNaHuJzv0aLW g==; IronPort-SDR: Wffgew3yru6WU0lDxNT8zJ+e/b5fBRSQoZJF3tMh4ABEoJtsHaTKjy8Hbuyf/rFpxI56JL9yV5 HogjofJEPn5xMufgRdWHUno96hDTZkRcBE8Ln+T4z/oGcP4806rcftDipMJ1q6W3XkT8LaG/1Y 1ytXgvMtE4kxrm2rYsrm8o8DlxH7ig4rTpx1VwXdMTupZtdNds9bHyl8Nay5fML6jCCkK6HncW /b7Hq0j9nJ/+tbHwsJWlxEulZ4zxck30bGubDbNp+zBEyoOlAizmhNwyjJUGd6QLFQJof6uD7y 6ME= X-IronPort-AV: E=Sophos;i="5.67,273,1566835200"; d="scan'208";a="227059696" IronPort-SDR: PWUKnYMouIFh6CyFS0MOwdttCi32N0Orard73A1NB1EVh4VKhKybvMd5tyYaCJlRrvqpfbnL9o 4z4zJrZVMsjGADm/ZM94H4C3MhSFJkzd6EM2XiZenyO/TNoq98UuTwQQ6BFq/z8zn2gWOGG7qY fZv5GpCcBMfQmBO6jxDAqqDI9CLjVbFFGLPdtvAVvKkUNLzJnnqQULj9GaYdG3GAl8bKqXh5aJ 3b+OocJCfJcp/Qs9gbR+AGhPrcZSAxuyv5jO2T3oRM62QzH3qKJIPih1SA7iZKeGaO7dLo49WE 7YvMldNlc+ejE+5NCAKnGvDm IronPort-SDR: WVdkHJTUEjGuKMQf5utIGnioWDqzo+BZHiW2YPylWYfUr1hpilLai/ejkrQTSC8PshENtv3oGn M3NQX3/nQq2C+z0FsVOnFERCr78f/8Q7mJHHlAkt3iS2Qd4l/hfAkVkPDIFNxUracqYStvioM6 ZUQRhA8cq78U2u6buQYnNXBGXz6w+xugHJlKEkc0GPNZaa7YcOQFYKxNzOtahz0wDjB4TwdxSU CNZO6bJGJsDeXz6hrD00OCaWt7My6E66u/x5rqYFjakxgqR/A3Jbk4RCMbb0zV9HEWTPYljDEh xq8= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v3 5/7] riscv/virt: Manually define the machine Date: Tue, 8 Oct 2019 16:32:22 -0700 Message-Id: <31a8a928cefd62773ccfbad96e85e29d15e0de94.1570577500.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: 68.232.141.245 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 From nobody Fri Apr 19 15:56:27 2024 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=1570578271; cv=none; d=zoho.com; s=zohoarc; b=T+YtuL/u0X9rtABaGsGD00imnX6aw9JCNk6AvE5+N8QvUwv35FXhskqLcNl7nBvhN7gS2a18SGdaFTJe8CS4Xzooacrfe7RMh4FnqzRN7f1A+kouU2VC8meYcpMa08NdQ1HfEx7d2Dqe0MWnR2IHowUSquErxRgPhGeqsjZ4Qrk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570578271; 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; bh=auIiAxAZ30WtDPvQaSATR0m0SjUw+OYM4iesErk3bP4=; b=AuNC/0CmfEuAQOMLw2iVe+DSYMNPVZ6A/BJQga+J/G8C7R9OJd/46sgSsdns4kFuxx4hvFV8Eu5daSrT/V9kwJfXsD5TFiW/i2NfNZPfKVI7TwNQPt6jqrXxWhb1gyY6CnApWaO5oX6CEYDv0gS7W4DN1pNAcV/32gzHDURaRoQ= 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 1570578271907686.9591016922981; Tue, 8 Oct 2019 16:44:31 -0700 (PDT) Received: from localhost ([::1]:38062 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz9a-0006zd-LF for importer@patchew.org; Tue, 08 Oct 2019 19:44:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33068) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz2L-0000f2-8s for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:37:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHz2J-0006Us-6X for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:37:00 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:55070) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iHz2I-0006Tc-Rg; Tue, 08 Oct 2019 19:36:59 -0400 Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 09 Oct 2019 07:36:56 +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; 08 Oct 2019 16:32:51 -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; 08 Oct 2019 16:36:57 -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=1570577818; x=1602113818; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ROrAbLFzAdFFFpuU8RF1vrxMOWN5VuepdRf1BUnQ6fs=; b=hunSk5W57uk+fRBtUhd4xyL8N6Dyawvdh+isH9lKT9s/0QjrMNjhljEo +HGx6rKlXujuS1YRyivm0F2ZZxz7ioCFXBX63QkbCASw54smblLf1rGcy 8/E4CXKDCN9+xNH4f0bS+lHOmnBHXTBlgjLvXcJSq/8bQq2rFtJVW69iq mv1Oe7ZwzWlPUjLY+UwkXa5nwvO0+kVT1M3os7WaGuBajryRYZEaIMVKY 4jQv9Tl/0e/pWVlurSXweiJCMxJnZFKwyMCmeAMkc3puZki2IONH0oQxi mCtp55ufvQtvHSIIyYesMQZVO2sY3Cv7rJdNi8/ABI/KXdtVcbcm1yK/A Q==; IronPort-SDR: Qbk6tRiXVST52LsC8cFpDf22+UBoousia9ARc0+UCTOlwTvH4yoSNhLewGNpZEhKqdVqkGLJqf y7I5XJdUkmd+noO3XmyUoiu7L5xzULfmeXCeS+45R3EVwGxnCnLmjHxcFPEDcdKnAafeOGdKqZ v4aLmxlCRovvVks4ZvOX2yq8ioB9I7mZbFcUekdswfHZriwfE8hvHJ7TjcxTmByyCwEJVqV2oW xHKHmHAoS5zeKEvS9HJKfmbD9S7FSXDzCe21tfMqLfpix7d8qiODPcAKQ4jXZ6InJkWSaMgcHz Whw= X-IronPort-AV: E=Sophos;i="5.67,273,1566835200"; d="scan'208";a="120085873" IronPort-SDR: qVIWHCjeYMztiTPw41fioUjZtd6YpI/qcqWnS0J81fC4Kt+KZPOx5YNdrDrqu8OFWO456vSUUy 8Rn+nw/FKeN/4435CB6fkYKptj895LzqFaReXtbc5b4iKFuffAbb8Lsd55pgLNrc5UaKAXxfeR YRAn7Pj7rHDkXl1DdRUqM5yccjqeAezZivwVNrj+oTMkxatJRV5eiIaGzT8s77rLhmiueBKnla NoOGwx4ujyd+PvZPR3CPl93xONq7w8AWPro7grMRNt9j20yvMnkmkcU5uajtea+YzLe00B38Pj Xqk4qlEcv7oRouSJgKH/dSL/ IronPort-SDR: MMYJ/Xp4vZY7JjjYQcJB7kMMtlLLP1fnp/Cr0/JzOIYLfA+Pmx2IisJ0iVEV0nyhoQ935NbA/+ XazJmfuATLKOUMJqM+/cy+dtv3wTcgVpr+BGn3X8r8r1MANGktlwDxVjFVpqAfE6E++C2j2wy5 uHXUMEdRpAU6hzFTt/0xz7Nkscs5RisklP/BSw5zazqlqnlsGo7d2lKHRzXwNYcTCQEwt8LT6q jHIERu3FOlTzqyIb/Lcpmj1S0/LeSxkNaUZBA1nddMUYI/nTU6CEPqH9dJOD/t7W30FcUJ+J6J hsQ= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v3 6/7] riscv/virt: Add the PFlash CFI01 device Date: Tue, 8 Oct 2019 16:32:25 -0700 Message-Id: <939e989fe946edaf888b17782e4738f60925ccc4.1570577500.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" Add the CFI01 PFlash to the RISC-V virt board. This is the same PFlash from the ARM Virt board and the implementation is based on the ARM Virt board. This allows users to specify flash files from the command line. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Tested-by: Bin Meng --- hw/riscv/Kconfig | 1 + hw/riscv/virt.c | 86 +++++++++++++++++++++++++++++++++++++++++ include/hw/riscv/virt.h | 3 ++ 3 files changed, 90 insertions(+) diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig index fb19b2df3a..b12660b9f8 100644 --- a/hw/riscv/Kconfig +++ b/hw/riscv/Kconfig @@ -36,4 +36,5 @@ config RISCV_VIRT select SERIAL select VIRTIO_MMIO select PCI_EXPRESS_GENERIC_BRIDGE + select PFLASH_CFI01 select SIFIVE diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index e4dcbadcb5..ad29e14d5f 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -26,6 +26,7 @@ #include "hw/boards.h" #include "hw/loader.h" #include "hw/sysbus.h" +#include "hw/qdev-properties.h" #include "hw/char/serial.h" #include "target/riscv/cpu.h" #include "hw/riscv/riscv_hart.h" @@ -61,12 +62,77 @@ static const struct MemmapEntry { [VIRT_PLIC] =3D { 0xc000000, 0x4000000 }, [VIRT_UART0] =3D { 0x10000000, 0x100 }, [VIRT_VIRTIO] =3D { 0x10001000, 0x1000 }, + [VIRT_FLASH] =3D { 0x20000000, 0x2000000 }, [VIRT_DRAM] =3D { 0x80000000, 0x0 }, [VIRT_PCIE_MMIO] =3D { 0x40000000, 0x40000000 }, [VIRT_PCIE_PIO] =3D { 0x03000000, 0x00010000 }, [VIRT_PCIE_ECAM] =3D { 0x30000000, 0x10000000 }, }; =20 +#define VIRT_FLASH_SECTOR_SIZE (256 * KiB) + +static PFlashCFI01 *virt_flash_create1(RISCVVirtState *s, + const char *name, + const char *alias_prop_name) +{ + /* + * Create a single flash device. We use the same parameters as + * the flash devices on the ARM virt board. + */ + DeviceState *dev =3D qdev_create(NULL, TYPE_PFLASH_CFI01); + + qdev_prop_set_uint64(dev, "sector-length", VIRT_FLASH_SECTOR_SIZE); + qdev_prop_set_uint8(dev, "width", 4); + qdev_prop_set_uint8(dev, "device-width", 2); + qdev_prop_set_bit(dev, "big-endian", false); + qdev_prop_set_uint16(dev, "id0", 0x89); + qdev_prop_set_uint16(dev, "id1", 0x18); + qdev_prop_set_uint16(dev, "id2", 0x00); + qdev_prop_set_uint16(dev, "id3", 0x00); + qdev_prop_set_string(dev, "name", name); + + object_property_add_child(OBJECT(s), name, OBJECT(dev), + &error_abort); + object_property_add_alias(OBJECT(s), alias_prop_name, + OBJECT(dev), "drive", &error_abort); + + return PFLASH_CFI01(dev); +} + +static void virt_flash_create(RISCVVirtState *s) +{ + s->flash[0] =3D virt_flash_create1(s, "virt.flash0", "pflash0"); + s->flash[1] =3D virt_flash_create1(s, "virt.flash1", "pflash1"); +} + +static void virt_flash_map1(PFlashCFI01 *flash, + hwaddr base, hwaddr size, + MemoryRegion *sysmem) +{ + DeviceState *dev =3D DEVICE(flash); + + assert(size % VIRT_FLASH_SECTOR_SIZE =3D=3D 0); + assert(size / VIRT_FLASH_SECTOR_SIZE <=3D UINT32_MAX); + qdev_prop_set_uint32(dev, "num-blocks", size / VIRT_FLASH_SECTOR_SIZE); + qdev_init_nofail(dev); + + memory_region_add_subregion(sysmem, base, + sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), + 0)); +} + +static void virt_flash_map(RISCVVirtState *s, + MemoryRegion *sysmem) +{ + hwaddr flashsize =3D virt_memmap[VIRT_FLASH].size / 2; + hwaddr flashbase =3D virt_memmap[VIRT_FLASH].base; + + virt_flash_map1(s->flash[0], flashbase, flashsize, + sysmem); + virt_flash_map1(s->flash[1], flashbase + flashsize, flashsize, + sysmem); +} + static void create_pcie_irq_map(void *fdt, char *nodename, uint32_t plic_phandle) { @@ -121,6 +187,8 @@ static void create_fdt(RISCVVirtState *s, const struct = MemmapEntry *memmap, char *nodename; uint32_t plic_phandle, phandle =3D 1; int i; + hwaddr flashsize =3D virt_memmap[VIRT_FLASH].size / 2; + hwaddr flashbase =3D virt_memmap[VIRT_FLASH].base; =20 fdt =3D s->fdt =3D create_device_tree(&s->fdt_size); if (!fdt) { @@ -316,6 +384,15 @@ static void create_fdt(RISCVVirtState *s, const struct= MemmapEntry *memmap, qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", cmdline); } g_free(nodename); + + nodename =3D g_strdup_printf("/flash@%" PRIx64, flashbase); + qemu_fdt_add_subnode(s->fdt, nodename); + qemu_fdt_setprop_string(s->fdt, nodename, "compatible", "cfi-flash"); + qemu_fdt_setprop_sized_cells(s->fdt, nodename, "reg", + 2, flashbase, 2, flashsize, + 2, flashbase + flashsize, 2, flashsize); + qemu_fdt_setprop_cell(s->fdt, nodename, "bank-width", 4); + g_free(nodename); } =20 =20 @@ -495,6 +572,15 @@ static void riscv_virt_board_init(MachineState *machin= e) 0, qdev_get_gpio_in(DEVICE(s->plic), UART0_IRQ), 399193, serial_hd(0), DEVICE_LITTLE_ENDIAN); =20 + virt_flash_create(s); + + for (i =3D 0; i < ARRAY_SIZE(s->flash); i++) { + /* Map legacy -drive if=3Dpflash to machine properties */ + pflash_cfi01_legacy_drive(s->flash[i], + drive_get(IF_PFLASH, 0, i)); + } + virt_flash_map(s, system_memory); + g_free(plic_hart_config); } =20 diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h index ffcdcc6dcc..8630f84592 100644 --- a/include/hw/riscv/virt.h +++ b/include/hw/riscv/virt.h @@ -21,6 +21,7 @@ =20 #include "hw/riscv/riscv_hart.h" #include "hw/sysbus.h" +#include "hw/block/flash.h" =20 #define TYPE_RISCV_VIRT_MACHINE MACHINE_TYPE_NAME("virt") #define RISCV_VIRT_MACHINE(obj) \ @@ -33,6 +34,7 @@ typedef struct { /*< public >*/ RISCVHartArrayState soc; DeviceState *plic; + PFlashCFI01 *flash[2]; =20 void *fdt; int fdt_size; @@ -46,6 +48,7 @@ enum { VIRT_PLIC, VIRT_UART0, VIRT_VIRTIO, + VIRT_FLASH, VIRT_DRAM, VIRT_PCIE_MMIO, VIRT_PCIE_PIO, --=20 2.23.0 From nobody Fri Apr 19 15:56:27 2024 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=1570578435; cv=none; d=zoho.com; s=zohoarc; b=CUWvJjluNc9cXJ8cnA6WeswOaKG9fw5wBIqKicoJ3LMQHvo/YYOfiUnGvzivPoF6lODfAb66/sr7GnHnbbynoFHBlsiB6f9Y0OFZG4VU5mEyt79MTgof2nGwexT0ehHR4VHT3HFc9mIO/JXPKGyO4eIF2279+3Qiy5XdwYhVBlg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570578435; h=Content-Type: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; bh=FLZi6wvr6jIh2J34a/W9Uz6w77niaph10rnClBf24b0=; b=jQMxLlam8croHXYfX1c203fAHOaTMR74a++29zoMcDIWSqcGbxvhsxornclbMQclQn6BXtjV5q++J9N9oAnzNZX0Y7nrYl95MChC6kOKYj0pZFgozOuk+HH6SZqpHSkP4TjH4eT3JA/7VwErgifcS29m3iWbDRJsC6cU2s/a/Ao= 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 1570578435809235.64950201217607; Tue, 8 Oct 2019 16:47:15 -0700 (PDT) Received: from localhost ([::1]:38104 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHzCE-0000Pt-MA for importer@patchew.org; Tue, 08 Oct 2019 19:47:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33081) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHz2N-0000gA-Fc for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:37:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHz2L-0006VV-LI for qemu-devel@nongnu.org; Tue, 08 Oct 2019 19:37:02 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:55070) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iHz2L-0006Tc-8c; Tue, 08 Oct 2019 19:37:01 -0400 Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 09 Oct 2019 07:37:00 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Oct 2019 16:32:55 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.58]) by uls-op-cesaip02.wdc.com with ESMTP; 08 Oct 2019 16:37:01 -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=1570577821; x=1602113821; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=RU8L3oxCCu9rwkGr2v5lEfYto4Cw/aINw92350YjUp8=; b=j4gwr/67d++55lsKAfTX5SREEy/BOfu91AVGg09el7+xrNVe3dVU7CQ6 D+krLEeAVqc/uMeXVGIfNkxlRTsjHNo1+MZt7evKVvYUruHPVnYCaRqj8 u2ohsFutcil1zaeYZ3esJIr4b8Hr8AR3UasdQPlCnAqmBfjoYVuazU7Cz 6aF5jky3Bqy/4n52SmCm1KgLJr1kG2MmRztzjVnaeIKmH4/WlFVdwwKQW 5tNqk/jDN04tALm7hsRn8JWGJ0LRRoH2POR6F+/bwk/CiZC4cF3gNgUKt ELR7k+fCWac1UYGJETMkEdGA01CdRcwtgiRZb2r2eG6R1X8aMD66oblLn Q==; IronPort-SDR: Cuo5cqX/2nmKQ+v+Tu7PD/7LmJTAVXPBxz6Uh2GuZC49/ZBE9hdvFXL0B6ajMqZIsM8+RWMFG3 J1eNtWdk2ejEeriHmrOc4A0k60zlJBcR4Zb01YxovQsKsLLIXMN47QQnt4YJ4CUXbYPDxRvAuu GVrJpeQIWowx1OY7fVRWG4tCfLc7tOVHxseCeMevcVXPwyy/6lfEe22cffvq4NTwe+VSB7Kw+E rMypuN1NDPSz3zt37K6aZkERmv7bS9t+W/5th09uxNYajzMwypHOymRjyq4dhmAOzOZ3dcrg9A N/c= X-IronPort-AV: E=Sophos;i="5.67,273,1566835200"; d="scan'208";a="120085879" IronPort-SDR: DcFjVJqdBQgI9fazqAJ6grSV6crstLZWuM7SJ6/dg/Y8TcYFno/V33fPKTxWfc+9tpVHspBEwM IGLo/bTCNukhL4vHHvNoLdHpTv913zZ4AjV5m3VXqT3vJObX3RUI5Br2ivAXPjsCaW0jCtY0hi cCOYLjlLyVC99DTtbJdfl0j83BbQ24cXVyb+ZExcQ7TjMmpSU5p8dxi28zDjTi3V+oIqsetMZB 7cqOYFBnNcdwjPMKuB5oYXXcVGyHiYogezBPvetOO6IO1vvLyaWZWCTPfRv3rIabQvYksB+tXg 4XDksQv/+AlwFCl1L3GZRReH IronPort-SDR: Oey/FfhnXJjAxlfNX5/vzfwxAy6t+zqluSyETm0CX8W/Z6UF+joQnKtLrKV1pH3ml/YR4Th854 H1PUnLWmApxdcTWHaaXnfITt7SDFSWPLCH8tRZd9eg/dW4iXfPovNAXGHERlhHCNRTLiol2zFd AUrF8Qi2zojGT2TfIFGmEWkBwJeBcl1GGFey4fjykZSbrFYIAZiaqimgDviGQkekC6Li6+mkTr mhQu7630s6mYK5Rt4Lnf6tTQoP0sHL11vHexRXXeFhYg9VpbFbAtdhJ6Ydu5R6xjKZwQX+Bngv Ot8= WDCIronportException: Internal From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v3 7/7] riscv/virt: Jump to pflash if specified Date: Tue, 8 Oct 2019 16:32:29 -0700 Message-Id: <17eaa7913cfb731de7311e0e63b26723706073eb.1570577500.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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) If the user supplied pflash to QEMU then change the reset code to jump to the pflash base address instead of the DRAM base address. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Bin Meng --- hw/riscv/virt.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index ad29e14d5f..a79d16d99a 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -445,6 +445,7 @@ static void riscv_virt_board_init(MachineState *machine) MemoryRegion *mask_rom =3D g_new(MemoryRegion, 1); char *plic_hart_config; size_t plic_hart_config_len; + target_ulong start_addr =3D memmap[VIRT_DRAM].base; int i; unsigned int smp_cpus =3D machine->smp.cpus; =20 @@ -491,6 +492,14 @@ static void riscv_virt_board_init(MachineState *machin= e) } } =20 + if (drive_get(IF_PFLASH, 0, 0)) { + /* + * Pflash was supplied, let's overwrite the address we jump to aft= er + * reset to the base of the flash. + */ + start_addr =3D virt_memmap[VIRT_FLASH].base; + } + /* reset vector */ uint32_t reset_vec[8] =3D { 0x00000297, /* 1: auipc t0, %pcrel_hi(dtb) */ @@ -503,7 +512,7 @@ static void riscv_virt_board_init(MachineState *machine) #endif 0x00028067, /* jr t0 */ 0x00000000, - memmap[VIRT_DRAM].base, /* start: .dword memmap[VIRT_DRAM].ba= se */ + start_addr, /* start: .dword */ 0x00000000, /* dtb: */ }; --=20 2.23.0