From nobody Wed Oct 29 17:11:29 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.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 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1525470567765629.0234627039483; Fri, 4 May 2018 14:49:27 -0700 (PDT) Received: from localhost ([::1]:36558 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEiZt-0007E6-S5 for importer@patchew.org; Fri, 04 May 2018 17:49:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44111) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEh4u-0006d3-QY for qemu-devel@nongnu.org; Fri, 04 May 2018 16:13:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEh4r-0006Pc-Kt for qemu-devel@nongnu.org; Fri, 04 May 2018 16:13:16 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:51454) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEh4r-0006P0-6g for qemu-devel@nongnu.org; Fri, 04 May 2018 16:13:13 -0400 Received: from mail-sn1nam01lp0114.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([207.46.163.114]) by ob1.hgst.iphmx.com with ESMTP; 05 May 2018 04:13:12 +0800 Received: from risc6-mainframe.int.fusionio.com (199.255.44.175) by BN6PR04MB0403.namprd04.prod.outlook.com (2603:10b6:404:91::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.735.16; Fri, 4 May 2018 20:13:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1525464794; x=1557000794; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=lEzOfs27z8Lao3pIFV3FyhlbFX+RMvu38oA152z3OmQ=; b=oMJ+DicjMI5Bsa7/PTRcx+zPxSTnbFsFKZO//zDnf+MWSsjAgT7lwua2 8B1EoGsk6hRWsmuncQYrozSoXXtmaN82e6sNRMyzJDFT46qHcCKaEE9ew A0VjnD8JGtZRUg4k8KMqpxhM6dPVjSb4GTj0CPs8o+1ILVT+OFIMpttn/ Ap4dVw+niQc1ztpvNKp6IAbWYIvX+gFHj3x+Fd+iWpMzTemKjIjjT4CIN rAW7tJdnoXEsODFJn/3wxniiCvwnZzBx37tKXpciyX5eoMuoiwAFHJiJh alYy5qgvXbb34SVjwu49AUiX0OryIQoGzFIGWCpUyWVhRrevSHZnYS5zz g==; X-IronPort-AV: E=Sophos;i="5.49,363,1520870400"; d="scan'208";a="77492444" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=j9dRCqjEeBl2P/iTHjYrlCl2VAHoTDzBTYV4EhjR7VE=; b=lS/zxrXfX29ZRkowtivWqbj6uGvx6Nm3EEImRUORpVqsE1Y/ttzaUHdP68EIia/CWw/KAoaV11j7XRoXuSz+wqoPvlOcFQxmre1Uw+6lIgvg9B/iI2u1WPKa0FMzyW574qe0LIGAcnJ2KRtPaqGOX2T38JY8SHsd0LSLSMRh6NY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; From: Alistair Francis To: qemu-devel@nongnu.org Date: Fri, 4 May 2018 13:12:58 -0700 Message-Id: <107c154303a7f08c452199df250c274f40d274ec.1525464177.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [199.255.44.175] X-ClientProxiedBy: BN6PR14CA0014.namprd14.prod.outlook.com (2603:10b6:404:79::24) To BN6PR04MB0403.namprd04.prod.outlook.com (2603:10b6:404:91::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BN6PR04MB0403; X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 3:Ik2V3KFCUj0BqOoOuaLgNj8xIIzmMdf74vVJsxz0NTolb/AXSjrFHHGPP0fhDSWMLu4BBIdfdk1osRS4iZRfRQTkXR+oxXtZ7SdTkoeSURuaPSAyGeNumqN789dUoqgj4+OKnooA587Kr9R3eZyuLDS64Y9ooveYJTtTyOlwV43oguPtE8BftcOToktatewejXx7x01ByUTxh3r46HGrFo9iTi79FFL9dC53NW5FLwaNUUMzVo7Y0tKH6dwmKLD3; 25:bMC2f6zEY35eDbn54e7LB7SnCzeibRVYLwi6A1oOPtpXWD7OA4oY0xGNDJA7memvaO20Ikg8mSZsqNb8j466zZHhGZk+4eDKZaaL7cfTyWCaN3wkt9D9Aps5fYbTVoylXr2oPqxfq9a0W6EaR/GmIExJ4B+AMsRa7vc+tEW3E/IvYLcbTnFQneaWRfYlOrBJL3/IgWiDXGrsew8G1iYdvTOJ+NmJkNHS/3t4EEtT5YMSplMDVxD64FdPKa8R2MS6NqFcGTlhFwWbaXvJIpuajSNlKXGVOvPeSGbWX5S6e8IHyKWqsXecy5ay0mnSIHiwqMy5gazidsAEmNONOKITHg==; 31:VKxyQU4iJpKNWEQkBr0sue94GOgco+8GbtFq1zLJnDid31ThoPWlMIPc6tRJWvrp5VsBF1J0LZx5YQjE8widfuEgUENBLyesFjvsa5+HwS7dQxav9vybGl835iG3xW0BIGNTrNk0wyaLsz3DIGaPgXPvB9oPtRiwz/MwTEg+nPuk93Eclk/8LaIZsvDRqW1BeUelc4IrK1bvveQejmDcCNy3NYFez1zYefMdG9uoC/Q= X-MS-TrafficTypeDiagnostic: BN6PR04MB0403: WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 20:YGMXLNC49pIVX/kz++u72rR5j1ahyi2it3zVp/dLjsBqJCQevLKmj73j4WS1Xcq3zQ9Zr4wXDJw0GeflzqQbEyS3vFO3NCsTKcViA2CddSHKW8fIu8PCave6wK63UXTq5pCTymMjR4eEnYWb6D+7i2YCDN24yc5KQg7VgtvwCsWYC9Hn162JusQtfw8MpgZpXgjHEl/DPcD3jdsOxvkEC67qfxy3Bmi+wQssHbYI9IF6nAxTfw6NohXDL8cEQ6P/30+/d5pfVChK1/8ylqafJJM6YQC5pu/xkuoiXDFQeN2y17yaSg8O2FyxHjwg5NtSC2qzYF/6Ee0WPbOAqfpN6Z3DGRn3sVLvCJhKje11T5lYMz4Z5/6fQHxftGJv+1+8vUNEQkq8hMEOHC2NjvFFmbe2YPBPC1luV2w10+79ooTw0qGz4iNXa0XUPnEP5gOEi/XVYLekDGGlLYjVwfljiA92GTAT2e2uUgPPNMami+KUPGhC3hnRWTJp0JKKo5eY; 4:Qn4H43LzmkWYfmBf8wm5nBHdv5o42n6ldNm4MGxGbMNvv11NIwjB3yxNi2H9D2cfvzgca341RALjAJ/mwtQiSi9N9M5bMEGslSbUf0sZkkUL9uDduPiagBxEx3hS2VM1e1qqgwMltBleQoTUGqPfKN3ajNi+e33vtxJ2T31RxOKtZG6osAMXsLA1+OKQnAU3AndqpCDZRPMiH5YZjsGBmipvmbVJV8Jsw4fLZyA/uQ83ELfQQgFa00Wwwydg5g0jAUjElSWcDEzWWoGNfJYPKg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:BN6PR04MB0403; BCL:0; PCL:0; RULEID:; SRVR:BN6PR04MB0403; X-Forefront-PRVS: 06628F7CA4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(346002)(376002)(396003)(39860400002)(39380400002)(199004)(189003)(97736004)(68736007)(86362001)(36756003)(81166006)(53936002)(478600001)(72206003)(105586002)(6512007)(6116002)(4326008)(106356001)(118296001)(39060400002)(2351001)(47776003)(2361001)(3846002)(316002)(8936002)(16586007)(5660300001)(25786009)(6506007)(386003)(44832011)(48376002)(66066001)(50226002)(50466002)(446003)(11346002)(8676002)(81156014)(52116002)(2616005)(956004)(76176011)(51416003)(2906002)(6486002)(186003)(26005)(305945005)(6666003)(7736002)(16526019)(6916009)(486006)(476003); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR04MB0403; H:risc6-mainframe.int.fusionio.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR04MB0403; 23:EhIDDJmUAK07NU2g0hfepijY6xb6D25+eeUfroov5?= =?us-ascii?Q?FNXMpbTfbDZ4NqtmIPNtqjtS3zRQBgiNKCMG6e6kuwx7PBB2YxXXsPO3cx53?= =?us-ascii?Q?vLvY4EID99EAgozmCn/Yis2VHxRYysmd4xkOodokfbqKrSFSF7QckcEinWBo?= =?us-ascii?Q?DneVDayHSy6G1/Vi1TfF06R85JwATYjaegHj7L+JVIYgt0hoeJbGWsoBqWZE?= =?us-ascii?Q?rRJx7skcVtAaGAl7fNLYqxRqqNOXmCno8+CyaN/EYtZ6omJ5n8k4mXgjPmjf?= =?us-ascii?Q?M8mIxe1Fch9kZnWhKdi2s7ygXV0bUoVF2igTEhyQmZwYYNbZ5fHuqLkAKKZZ?= =?us-ascii?Q?PvRzvxNxpf2DtDtVylfIpLvMDcSAzCaqhbpYLKp7nY2YIcskIIyCEwIaXe9C?= =?us-ascii?Q?an7jLsbIaoWXJEz8fa2LyYHprY8URkZbzB0K8f7U0hu6/A1IP4eSbJ8cgvm2?= =?us-ascii?Q?CMji33hgTu0c8jcdNOKpQEYgLsGmgn83cVb7vjrKQkvf40HwdsbTo5/I+tUV?= =?us-ascii?Q?swev9TWkP/GBR+kmB8kYRdLe3jzzhFVsBZxwE5X0AqU3z5sJL7mIOcjrALoW?= =?us-ascii?Q?0E3T1Yco+zT1m0Tsp/Q6QxakR1WCkyivbc+9wr7EHdAsyqsMyTTOXLDzs74J?= =?us-ascii?Q?Tro22uQC9xly5fTsJrDw5wdvMsyGYiHS1+Wzm3Q5aNlykA2i9ch2J218cGaY?= =?us-ascii?Q?ghzBliLSfTI3oJ/cXlpZ+/XqXxluoHj5I4INt3Erqd4oq+j20c4g9Gu5r65s?= =?us-ascii?Q?c2oBi5Gw5omVjkRdKTkgYnU+fd1z4xNHHWYEKsJxedZz+dj1XVUU+a8+C9Nw?= =?us-ascii?Q?PUUA2rSzO7fum1gYd5HnPyK2FpPWY4lITSeL+zKHiX2cIsze0a+fcZlhP4kP?= =?us-ascii?Q?NITDnVIYw09lXtlkddMYs8eGDAlHyrkYKf0WqM+KBux66j+euG1W1A1+4h5t?= =?us-ascii?Q?vLTvMxg/8q612yRpSd6BZZ9aaFA48tmvNzGIDJHWAhpO4m8/P91U3+GtCPLU?= =?us-ascii?Q?YuQrmhDqJmPU15uJ3WVcGonpRD/i1Ys4yY3OS/D36Qp5kO13KBZ5Eg9GkhbV?= =?us-ascii?Q?/Tn+vStJDv0LNK00q+uJGOtg0JVqiYdmQr3OO6bnXkQ9n30kuFPd8cmI9P74?= =?us-ascii?Q?Zue8fAIi3CdpPmumi12RPvk7e2o1Cri+ugNtZpRB8LovK2JkrJT6fGYULnR8?= =?us-ascii?Q?fI6s7cWSNKIRVBmp43oTHHv9XnrHcPtLq4JRVgB4O67tR3NeogrW+9EHyc7V?= =?us-ascii?Q?zjiqVciVXwSSIJiKSRbtnosBhLy4fpXN0O60f58pxg2iFg53Jr4KwIR7Mo1t?= =?us-ascii?Q?mnV2NvYb9q0eqYM+XNM+yE=3D?= X-Microsoft-Antispam-Message-Info: khgsTsqnfMtVjbChd+bdn4Kfz3vZ7zaLAqCfiAOrE3q4L3RZsAOKYaOlRDdz3JFxACfWMwwWo7p8GKjT4e+5OOjBc5hL3gYlbSSa2ksOo1TNqK0UVoyCJUMZ5kRRi4nVbUA8ySHC56OiFFj6hCXt5OQOlOZq9h12QbfoRg3yksXt7u+ii9dKayojxCY1PGyh X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 6:UTUIPe+hpnuOs4eXpUpyr3nVdaHmBLLBWIag6OlCI7vIZllLdPS2beZthWZKz7oIOko9OWwHwu1axpmc93P9z0hrLcLEaiED5iKvKd/bKmcPRQBzQV622g3euIiwlNzaCb3+JZQoBA03gq3IT/NIEXelEx/v4G3WqxG0xYH9/t7wnX27WMnTrcHRE+S72L7Pp/dos7qEFAaMDa5xis6BG0pDqhSBjls7Zmy1heDO70pyNyPE3K32iPjMul7ybUvWHmzHnG3LV7mSNityyWJBExYZkE+vNroaeAdVty9xNUZnfmWsNpixRcxoHOlwZLRGosDHZPelfF5HsWEWOfdhFI85ICLq7aAMtZwgL+K1JxeaKw+40FTdDq5qfaHFpGvzlif3xY/+p8uQJsoXIe2D6P1DaBrREYeF2bLFvcrGwFrSyFOvSCzqoABq9log2nhZgJgPieN2P+tBfQ9GHkbPmw==; 5:vXzqZIhrNDMmJPgcIFTiLLkImZyzr/sUVQB0/UEHVpArrbiGMSGfQdDaZzvFIv8Z1RSnGuyJXh+rmmLVqmK3kBKo+pF9rTTlFGmEY6MNG0W5XyuMG0ZsZeJ8ekXHiG5pS4DURIbW94Y0C8FJs7N8Ci1DKjBez4y0VUUqVNHG2GM=; 24:0tiurwUHTn8yjPlmN6Ks9dtpXDUtpv+VZvCS5+TtdNfiQC/bVFVZCyyFVAUQkfX/lkeSUy+iRP4iR5fQI102Kr5u45PWGVslDfEF1CWbMEI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 7:m+rHjo7WITjt9rhy0wjYmexbp8bx8s+PDobOxlDVAatEX5+LjqlKGvn2gxiz81xu83AOickPcsqKNg4eLC++1W/Bszm822VBStvOpDYv92see+OU+4nuRHqzCTVtoGFfa+5AKGWa34MCCNGQ1ZPFKH2bn/QhlxP3r5BWHOVoPM0PCUDp88yrHIyjjFSshhUdUDQZzu5qYhD9WXr4Dx2LY/ZjmbDQLRBKTJZZu9anftj9yYa0AX8WZcuG3yzE1j/R; 20:d0OLNOtetdjYz+71Q5+dyFImUc3Ys5R5S60pEM9E8E54VAz05IS6zqNUFpDx3DpH0T0/tWQWudRJefZRQWam9l+Mz7NO60XmiCjZJUSzYMzCj/dM3b+PwGKOprXhoBOWv7QVPzxCAYIIbbGhYy8blkPlz6YxnPNoJuPNaa3kXBM= X-MS-Office365-Filtering-Correlation-Id: 64b22d3d-2ee0-4e87-1224-08d5b1fb74a1 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2018 20:13:08.9379 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 64b22d3d-2ee0-4e87-1224-08d5b1fb74a1 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR04MB0403 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 X-Mailman-Approved-At: Fri, 04 May 2018 17:46:56 -0400 Subject: [Qemu-devel] [PATCH v1 1/4] hw/riscv/sifive_u: Create a U54 SoC object X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, mjc@sifive.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 (found 2 invalid signatures) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Create a SiFive Unleashed U54 SoC and use that in the sifive_u machine. We leave the SoC, RAM, device tree and reset/fdt loading as part of the machine. All the other device creation has been moved to the SoC. Signed-off-by: Alistair Francis --- hw/riscv/sifive_u.c | 90 ++++++++++++++++++++++++++++--------- include/hw/riscv/sifive_u.h | 16 ++++++- 2 files changed, 82 insertions(+), 24 deletions(-) diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 9f3d184b72..4924f92262 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -114,10 +114,10 @@ static void create_fdt(SiFiveUState *s, const struct = MemmapEntry *memmap, qemu_fdt_setprop_cell(fdt, "/cpus", "#size-cells", 0x0); qemu_fdt_setprop_cell(fdt, "/cpus", "#address-cells", 0x1); =20 - for (cpu =3D s->soc.num_harts - 1; cpu >=3D 0; cpu--) { + for (cpu =3D s->soc.cpus.num_harts - 1; cpu >=3D 0; cpu--) { nodename =3D g_strdup_printf("/cpus/cpu@%d", cpu); char *intc =3D g_strdup_printf("/cpus/cpu@%d/interrupt-controller"= , cpu); - char *isa =3D riscv_isa_string(&s->soc.harts[cpu]); + char *isa =3D riscv_isa_string(&s->soc.cpus.harts[cpu]); qemu_fdt_add_subnode(fdt, nodename); qemu_fdt_setprop_cell(fdt, nodename, "clock-frequency", SIFIVE_U_CLOCK_FREQ); @@ -138,8 +138,8 @@ static void create_fdt(SiFiveUState *s, const struct Me= mmapEntry *memmap, g_free(nodename); } =20 - cells =3D g_new0(uint32_t, s->soc.num_harts * 4); - for (cpu =3D 0; cpu < s->soc.num_harts; cpu++) { + cells =3D g_new0(uint32_t, s->soc.cpus.num_harts * 4); + for (cpu =3D 0; cpu < s->soc.cpus.num_harts; cpu++) { nodename =3D g_strdup_printf("/cpus/cpu@%d/interrupt-controller", cpu); uint32_t intc_phandle =3D qemu_fdt_get_phandle(fdt, nodename); @@ -157,12 +157,12 @@ static void create_fdt(SiFiveUState *s, const struct = MemmapEntry *memmap, 0x0, memmap[SIFIVE_U_CLINT].base, 0x0, memmap[SIFIVE_U_CLINT].size); qemu_fdt_setprop(fdt, nodename, "interrupts-extended", - cells, s->soc.num_harts * sizeof(uint32_t) * 4); + cells, s->soc.cpus.num_harts * sizeof(uint32_t) * 4); g_free(cells); g_free(nodename); =20 - cells =3D g_new0(uint32_t, s->soc.num_harts * 4); - for (cpu =3D 0; cpu < s->soc.num_harts; cpu++) { + cells =3D g_new0(uint32_t, s->soc.cpus.num_harts * 4); + for (cpu =3D 0; cpu < s->soc.cpus.num_harts; cpu++) { nodename =3D g_strdup_printf("/cpus/cpu@%d/interrupt-controller", cpu); uint32_t intc_phandle =3D qemu_fdt_get_phandle(fdt, nodename); @@ -179,7 +179,7 @@ static void create_fdt(SiFiveUState *s, const struct Me= mmapEntry *memmap, qemu_fdt_setprop_string(fdt, nodename, "compatible", "riscv,plic0"); qemu_fdt_setprop(fdt, nodename, "interrupt-controller", NULL, 0); qemu_fdt_setprop(fdt, nodename, "interrupts-extended", - cells, s->soc.num_harts * sizeof(uint32_t) * 4); + cells, s->soc.cpus.num_harts * sizeof(uint32_t) * 4); qemu_fdt_setprop_cells(fdt, nodename, "reg", 0x0, memmap[SIFIVE_U_PLIC].base, 0x0, memmap[SIFIVE_U_PLIC].size); @@ -215,17 +215,12 @@ 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 *mask_rom =3D g_new(MemoryRegion, 1); int i; =20 - /* Initialize SOC */ - object_initialize(&s->soc, sizeof(s->soc), TYPE_RISCV_HART_ARRAY); + /* Initialize SoC */ + object_initialize(&s->soc, sizeof(s->soc), TYPE_RISCV_U54_SOC); object_property_add_child(OBJECT(machine), "soc", OBJECT(&s->soc), &error_abort); - object_property_set_str(OBJECT(&s->soc), SIFIVE_U_CPU, "cpu-type", - &error_abort); - object_property_set_int(OBJECT(&s->soc), smp_cpus, "num-harts", - &error_abort); object_property_set_bool(OBJECT(&s->soc), true, "realized", &error_abort); =20 @@ -233,17 +228,11 @@ static void riscv_sifive_u_init(MachineState *machine) memory_region_init_ram(main_mem, NULL, "riscv.sifive.u.ram", machine->ram_size, &error_fatal); memory_region_add_subregion(system_memory, memmap[SIFIVE_U_DRAM].base, - main_mem); + main_mem); =20 /* create device tree */ create_fdt(s, memmap, machine->ram_size, machine->kernel_cmdline); =20 - /* boot rom */ - memory_region_init_rom(mask_rom, NULL, "riscv.sifive.u.mrom", - memmap[SIFIVE_U_MROM].size, &error_fatal); - memory_region_add_subregion(system_memory, memmap[SIFIVE_U_MROM].base, - mask_rom); - if (machine->kernel_filename) { load_kernel(machine->kernel_filename); } @@ -282,6 +271,39 @@ static void riscv_sifive_u_init(MachineState *machine) rom_add_blob_fixed_as("mrom.fdt", s->fdt, s->fdt_size, memmap[SIFIVE_U_MROM].base + sizeof(reset_vec), &address_space_memory); +} + +static void riscv_sifive_u54_init(Object *obj) +{ + const struct MemmapEntry *memmap =3D sifive_u_memmap; + + SiFiveU54State *s =3D RISCV_U54_SOC(obj); + MemoryRegion *system_memory =3D get_system_memory(); + MemoryRegion *mask_rom =3D g_new(MemoryRegion, 1); + + object_initialize(&s->cpus, sizeof(s->cpus), TYPE_RISCV_HART_ARRAY); + object_property_add_child(obj, "cpus", OBJECT(&s->cpus), + &error_abort); + object_property_set_str(OBJECT(&s->cpus), SIFIVE_U_CPU, "cpu-type", + &error_abort); + object_property_set_int(OBJECT(&s->cpus), smp_cpus, "num-harts", + &error_abort); + + /* boot rom */ + memory_region_init_rom(mask_rom, NULL, "riscv.sifive.u.mrom", + memmap[SIFIVE_U_MROM].size, &error_fatal); + memory_region_add_subregion(system_memory, memmap[SIFIVE_U_MROM].base, + mask_rom); +} + +static void riscv_sifive_u54_realize(DeviceState *dev, Error **errp) +{ + SiFiveU54State *s =3D RISCV_U54_SOC(dev); + const struct MemmapEntry *memmap =3D sifive_u_memmap; + MemoryRegion *system_memory =3D get_system_memory(); + + object_property_set_bool(OBJECT(&s->cpus), true, "realized", + &error_abort); =20 /* MMIO */ s->plic =3D sifive_plic_create(memmap[SIFIVE_U_PLIC].base, @@ -312,3 +334,27 @@ static void riscv_sifive_u_machine_init(MachineClass *= mc) } =20 DEFINE_MACHINE("sifive_u", riscv_sifive_u_machine_init) + +static void riscv_sifive_u54_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(oc); + + dc->realize =3D riscv_sifive_u54_realize; + /* Reason: Uses serial_hds in realize function, thus can't be used twi= ce */ + dc->user_creatable =3D false; +} + +static const TypeInfo riscv_sifive_u54_type_info =3D { + .name =3D TYPE_RISCV_U54_SOC, + .parent =3D TYPE_DEVICE, + .instance_size =3D sizeof(SiFiveU54State), + .instance_init =3D riscv_sifive_u54_init, + .class_init =3D riscv_sifive_u54_class_init, +}; + +static void riscv_sifive_u54_register_types(void) +{ + type_register_static(&riscv_sifive_u54_type_info); +} + +type_init(riscv_sifive_u54_register_types) diff --git a/include/hw/riscv/sifive_u.h b/include/hw/riscv/sifive_u.h index 94a390566e..0f8bdd8fab 100644 --- a/include/hw/riscv/sifive_u.h +++ b/include/hw/riscv/sifive_u.h @@ -19,13 +19,25 @@ #ifndef HW_SIFIVE_U_H #define HW_SIFIVE_U_H =20 -typedef struct SiFiveUState { +#define TYPE_RISCV_U54_SOC "riscv.sifive.u54" +#define RISCV_U54_SOC(obj) \ + OBJECT_CHECK(SiFiveU54State, (obj), TYPE_RISCV_U54_SOC) + +typedef struct SiFiveU54State { /*< private >*/ SysBusDevice parent_obj; =20 /*< public >*/ - RISCVHartArrayState soc; + RISCVHartArrayState cpus; DeviceState *plic; +} SiFiveU54State; + +typedef struct SiFiveUState { + /*< private >*/ + SysBusDevice parent_obj; + + /*< public >*/ + SiFiveU54State soc; void *fdt; int fdt_size; } SiFiveUState; --=20 2.17.0 From nobody Wed Oct 29 17:11:29 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.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 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1525470556064390.60188362561234; Fri, 4 May 2018 14:49:16 -0700 (PDT) Received: from localhost ([::1]:36556 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEiZm-00078g-F2 for importer@patchew.org; Fri, 04 May 2018 17:49:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44159) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEh5B-0006fd-Lw for qemu-devel@nongnu.org; Fri, 04 May 2018 16:13:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEh58-0006ZH-EO for qemu-devel@nongnu.org; Fri, 04 May 2018 16:13:33 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:1355) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEh58-0006Yz-1w for qemu-devel@nongnu.org; Fri, 04 May 2018 16:13:30 -0400 Received: from mail-sn1nam01lp0119.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([207.46.163.119]) by ob1.hgst.iphmx.com with ESMTP; 05 May 2018 04:13:29 +0800 Received: from risc6-mainframe.int.fusionio.com (199.255.44.175) by BN6PR04MB0403.namprd04.prod.outlook.com (2603:10b6:404:91::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.735.16; Fri, 4 May 2018 20:13:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1525464811; x=1557000811; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=cQTnqRrzgj57frkatrHHx8rj2QWbFwf1hCHh7MJ3uPk=; b=kcpkE/vjysWM4okoZ/BJROodpsvQ904TzvAaSmt/blJ41dimyTI2AZgc 5MkqRKbsidCXcH6eTVejj7SzHQcmVBQUSZEFNebHeWnqlRKa0wghusGRp fZA/LsjHp94kWItrOnqFO8wVWJLQ1BFsFDiNotfxdc9gF2ZeQPm8sPqui 3iSJMoUDLjVYEySXjX2mBHJB+3Uh94o7oJYNry8PNAuOwNzcZuTxuNGs0 jqNDGH28+Yj8Wgz4vn8vw6Q8NjJKkQnsrYaP9H51aSP5CUhmEbecIQfmq VO9P3jaMeHYV6+7OKO570AVctceQdgZHftT5bAHmqif/SbcYsFe9yJOlT Q==; X-IronPort-AV: E=Sophos;i="5.49,363,1520870400"; d="scan'208";a="77492458" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=SBdNrX4mFX5rVfzySrdRdJMglmvFGR2MDUZpEXPqsDs=; b=ZQT76JvdoLy++Szeq9cXp0rExZz+1FPqE3DX32o5zSU2XnxZje2O0EYQyUZkYSCzE46BuYS6l6+MNIu4iGwRhhpp2tJ5wNLadUin0OCjmu8Ka/b9OKXAitxu+ti1qiKu4tomaXbYmaDR/1oNr9Ph5EI5htFUR+T43lZs1ee5YiI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; From: Alistair Francis To: qemu-devel@nongnu.org Date: Fri, 4 May 2018 13:13:12 -0700 Message-Id: <6634a98e5558a060369ac365e8ea2fd960af5b81.1525464177.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [199.255.44.175] X-ClientProxiedBy: CY4PR1201CA0018.namprd12.prod.outlook.com (2603:10b6:910:16::28) To BN6PR04MB0403.namprd04.prod.outlook.com (2603:10b6:404:91::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BN6PR04MB0403; X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 3:Ju+icvCtZ72VLoinWpOibu4KVlrAayaD1tPLXzd0pB/LOYLaj3WSKQjqOhfvc60HfBVQxNnLWgFx270LsblUdOV6km1z0aigANaUOBwTcHHJv65Dscz++DNURNGAiRVrBXvMfpsNPWmDT58rr2Y2HRC8k9UdnzI2aPWQrUyemCLSwqP6xX+aY1oB8insNmJYr4Ob4tcCu+bzFrePq9z1i9SbUrOBSMFL0RPWTEb+ivVzMQKOzzVjDQhDBO0gWv+r; 25:jjjON6SYy3oKW0mU7u1zR/0fUlrwNh871DB813BDIZhOoPtEtBu+YFqO/6qEqB/jWhvrfDxU71dGW5ieUpLM1oKSFxNAx+fAGWXLc89l4huf6EYBg6d7hdcwGSbeawtmYhBwbdIUZWEiHOqjD6pEGtLThPO1vRi3dh5+LHmC9aahzPRH8E4/Qc+RVs2ZG/RhADXDxHVF8JtXutLBE5XwvIVgzyqgVEAbSxDSRiKWZgQXptJGjx6JLkVuFE3U3Q0Gjj8teMRo8BVsZ2djyFqQtp6sll9qf/GApYm8FTd2fMWrkH2zb624iuCfyLtqsdQJVw/9xsxUZMlR+iAcPTOidQ==; 31:FnEsKB5wD6pP321HK3JIV1lSGgQSV3sYRg/0zPCYStscRHpRhZlv4Btg6hinKQ4vWcJHy5c+Npkr8VV88bK31xqCJIjMMo4bvVIs1eiuT55Iur76EqAly+8hSqv4CCnlMIrEgMlZVxOTLFY/Ip7aGUcQ50S8Wy6541VuYtIa8sElBIOQF5PFwP0WUqg7RKwZqqlLXGDcUKdK0FXDyU1wRpb1poroIV+JzYwSFpWEI/4= X-MS-TrafficTypeDiagnostic: BN6PR04MB0403: WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 20:tL+8nbYBT85WtwSvMP7IK+IG3cjkESFgCP1SRykPiHrASg+x2MEGMTbqklFwrAUo+993WlHeXh2XtRzVClhc6/pyUC1rs7j+wzaOAgnlwy8A3MYeyjy7XJr69/ANxEFrxpxk8GKDEuK8vfG9kABJZVT/TpaeTtKAdmdefB/oUeMZqkUjQU6ZTYNZD3bis83kuDwTb2UOyV1fwvb3v0DEFvB276S+xGITJY5nUMHMe+UBhAvufhzfjorAdXJ4rZRyzin6Wf49kYpx10PLw6e4GMribJGaQtL63p1lHnOuxWX+a8ou17a0Yhlp74YhQ/Y8DqrGwUoMfm6EVuOPSyIRbrwDz90z8BnPwUwCoWXWke9RScKrvPDrQM87k7a6JTmGE/8p0QpEwNF8khlxCZ47O3sSI+MV1MYrxgFlIOMTZ2SM5YeuhveykkYsoDzdNzHBsiIdjRd720Gm/Ly2vh+AaFiA9L8KLapTCTK+KAhFuDN1nzM/UyL763F3QinNMSR4; 4:EEYZVGEP9FbAy6MOlUizD3AiyAMMXKRsx7ZcTjixZ8GXtloKaL47sr06B8idvq5c6OwG2Mo4pTO8cC9ZCa7PopZngVDILJRNzzZivuc0Y2YAfervqUp1IJCe8p00V0hDjj97qdf+ysDMuh/vqUv9Jn8pcoUDxves9BwhWAiglq59cOoELP9g1VEDWMtVRsKYLcbJnHc35VCZ2C2NeJBU+sbklDiUDsTpoK2+YWc4mzOWCJ4MJ2ARFR/gH/HitAd3oTpZBObBaerACCMuDcupwA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:BN6PR04MB0403; BCL:0; PCL:0; RULEID:; SRVR:BN6PR04MB0403; X-Forefront-PRVS: 06628F7CA4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(346002)(376002)(396003)(39860400002)(39380400002)(199004)(189003)(97736004)(68736007)(86362001)(36756003)(81166006)(53936002)(478600001)(72206003)(105586002)(6512007)(6116002)(4326008)(106356001)(118296001)(39060400002)(2351001)(47776003)(2361001)(3846002)(316002)(8936002)(16586007)(5660300001)(59450400001)(25786009)(6506007)(386003)(44832011)(48376002)(66066001)(50226002)(50466002)(446003)(11346002)(8676002)(81156014)(52116002)(2616005)(956004)(76176011)(51416003)(2906002)(6486002)(186003)(26005)(305945005)(6666003)(7736002)(16526019)(6916009)(486006)(476003); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR04MB0403; H:risc6-mainframe.int.fusionio.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR04MB0403; 23:wHB9HMEqiuPqBj1nEdv9pUOzrKXU5XHZs3pekfn/7?= =?us-ascii?Q?C67olyQIkhacEd5RLMnQHU2rzBAh8Y4jYgcxn7LfGa/ISMHP/5BqOZfKPyWb?= =?us-ascii?Q?z/NvqzURqev9FJeCKhoYb0xW25da+XtVABL5iSbDBd5c6JZv7Yk4f6UNnkEq?= =?us-ascii?Q?JZWcYJpD9xASKA9I2yyeOz7HNWsNnSz86SZF4B2i9+gsq3j6FoioWMGorsnW?= =?us-ascii?Q?EM/E57OGbFuPPcmXwD+qi/U3jIu3BMnL4d0yhYWSaYD9WV+M7ghbgMaQpoZe?= =?us-ascii?Q?MknefPXYWzuH/asU1fAuh4aRR6rZKcaAA4uOu+4corT+eoYehDe4ksflZCFr?= =?us-ascii?Q?ohWhXK6tqslptwNzb8FGrUEkp/NWH3lHZyf635gI2A/aEtgt6PtrT26P8qHw?= =?us-ascii?Q?ckQ7xMnWnXKgqdf9reXhmHO4ZAt8ybl9FlCkF0PtSoNlXZ7KPV53zIF3fnNj?= =?us-ascii?Q?VckEYdIOsRNekNQuJsYlm+PVoDbwXlhIFbIjkVegKmsbR8jWiXd59IFuvaOa?= =?us-ascii?Q?9T8THOKAL0fAhplD8ti08+HrFvkPRkV/mSAR5WajyMO4DhpAJTBDgJ7qTODk?= =?us-ascii?Q?Rk5t6aiT5oY+igys0hesAXGqsWw4kmcVxLAze82QMR5lkGMSpQOonUPDNYxJ?= =?us-ascii?Q?YkW0GnQIKo4aTVChmZlB9tT6C5VfSOoBTncN8cgmxQyTyBZkVzjKJYS43VWV?= =?us-ascii?Q?KpzQ0IBSXHS7hVObbvBl7yEH+vvzKCwwokEA6qZE5ednBtkybRQ8kT8RzRIi?= =?us-ascii?Q?68gCcQTl98iAkMBIw2XguFvLFXVUqj3HJ31DA7h8vmWxZfAy8D7lRXTeAfPO?= =?us-ascii?Q?BqBrAqtgOkCQMtVYrwAhZK0YdvlCQCHXErKPWAuoD+NkJdrPhxwspploUUxn?= =?us-ascii?Q?JkY0Q4TOSZVC6Tga7zWUv2phhwVbCNQlF8KphOzXtog5ozhWVORxhxzsZu/c?= =?us-ascii?Q?3Z/W+x8TxUz9MUhBZ3HkHfCrYr6TwKSBxCVB1lwwMXpn2rTMXw6s4irVZV2x?= =?us-ascii?Q?dUzj1INYZYnlveyY4afO7clh+37Bj85LcfsgSr5NkPOYD3NBweQYLj0nKuZq?= =?us-ascii?Q?zxwIbHSMNWuAYnK3/VNX7RpcGqbEQiLdPFhf8roVgKcS7J2tVGvRFU7GTDwJ?= =?us-ascii?Q?NohQPsNTJc4UJT7OltrwKBfD7ojQbCrkOwMgMmUIaH/ua/IpaXyxBBSuvo6C?= =?us-ascii?Q?bu7PeRe0HJP6lgSyuxtuJq1wAfIAPuB2yfuppMcjaw2FNMrDUVXnoaR83ZSh?= =?us-ascii?Q?9nygWmpuazoYvXrmoJtmrBuKwFFpKhB3Ex8ewJPh3ZGm6SRRIRHmvhdHZZB0?= =?us-ascii?Q?e4e2BRsp7aMbMvkfb9Bvs+L0jHlFPY+bPvWSDIKuJUw?= X-Microsoft-Antispam-Message-Info: 0LrJLX50xoO8LX+nIe4ssDiTdoZn2rdKj+LOl4dHmMSr6PhFDtK8bFlkepoZxdLaEwBhF1R2TlnsaFulzPyPvCsJtFF+Uh6EBxbzlxC88W7J7HOC171w4GjgEH+3nMqZtUvvwMlmAi6vp1m/4CtMhCXQj/M6aqhbtAey6xmgROXjHSuieWXo8Ao6rskRRVtV X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 6:Fl6aG0G6bSzoJJivSd861lTVCBwML2vCtNE0qSDUMimrjuKryeuGbIylrZ03FLs4C9jzOO96Z2hTCDGc8P2+UGR7QSvLlEXeb05imXU4YPVUdSMD/K7nwyzkSsYLVAA9gt6X7U1syi+UvzB4diIbCbkn4ttVmtUrwD6ndQ+hBU0mrjSVEQ2XS7xKeuR3c3QLswIzEiITTTQpp3+58+R3HSd4qdXZKslA6LpcqIHBrtmbPvRzWOB9kBQZBP+cgb5YuLJX8DnzfPyJtYqHXUS5vhtsUyG1bQPg08cNPGx20cNbgVXryS3RB6YMjT6ubZAHELaTb4jsM6sNBVOHfF5zQLn+bhx4CDYMFVIN0EmGOqZIzy84nA81/sfyrecQG+yZXdksyoXL73mrnDb5nNsHbog1V6Np+Vkwj6q1mEhjd8Gju/IdjElyZj+k9BMwztQR7hwNB7JYmPIedfN2prhXYg==; 5:CSWt9pn2dpZpStbaYvfT/KirgX9rxD4vc69LUEXNE5D/ByS9MWqYvaqyQ+9I3L0vzjZZHFAhTh6kRg1fV2N5C32JqVF2qonNuD5uE3j5dNWVXebp7PHJhT8VEj5lpxGvaO8ZEnIbO7Vzhwr6hK6x8iR2JQbo+egtcB8LPnFq7oc=; 24:HrXpDf/cK2t9+nbpSiaO1DMnHWdG335zV16XS8PQVYHkEmRPv89DsUBKvhrQ1GVacp1sn8o3ycmwHIj9Y62ta/+x4jDZHea2qKlgePKwvUc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 7:4okFYZWguOScfpPWH/mwyCjaA3OVDscGr40r9fLMK4DaTcvLAf/Al5yx68oWvnvQbFcAL3urXuuK/HNq7Jiwro2+1YTvv5cKuaQs/ioX5yHnXBjhTQT2ZZ5zE/TQ++g3gev9WyGJY2MQ+u5Kju6YJOBQcN4aQ0E5aFI8k5jZT/IZidrGJJ4QZA5Iu1hHuuxFNZ1+6LMPzUoWXvZVERhdZV6SQYdxHdNMqLSfs6Xvh+R2HRilDWAr+9zaa8cP/7sU; 20:oWkPl65/axxPTsfFJkcqeHiLgPcigid+KKiPRGir5zEtWnVzeU+St2jx6cJ7ebBPQtxmKgRbaPtFzVnAET12icaTMyvMVMsBcHz/9wxtAoDdoI9tXHzwWwPlQ1wBHddyWCmankM4yRROa7Ujvl/bEUM4vOu14lrxdYet/Ay8iR0= X-MS-Office365-Filtering-Correlation-Id: 6d1eb148-8eb8-4cfc-fc79-08d5b1fb7eed X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2018 20:13:26.1241 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6d1eb148-8eb8-4cfc-fc79-08d5b1fb7eed X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR04MB0403 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 X-Mailman-Approved-At: Fri, 04 May 2018 17:46:56 -0400 Subject: [Qemu-devel] [PATCH v1 2/4] hw/riscv/sifive_plic: Use gpios instead of irqs X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, mjc@sifive.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 (found 2 invalid signatures) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Instead of creating the interrupt in lines with qemu_allocate_irq() use qdev_init_gpio_in() as this gives us the ability to use the qdev*gpio*() helpers later on. Signed-off-by: Alistair Francis --- hw/riscv/sifive_plic.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hw/riscv/sifive_plic.c b/hw/riscv/sifive_plic.c index a4ac910ca9..81b6b5245b 100644 --- a/hw/riscv/sifive_plic.c +++ b/hw/riscv/sifive_plic.c @@ -431,7 +431,6 @@ static void sifive_plic_irq_request(void *opaque, int i= rq, int level) static void sifive_plic_realize(DeviceState *dev, Error **errp) { SiFivePLICState *plic =3D SIFIVE_PLIC(dev); - int i; =20 memory_region_init_io(&plic->mmio, OBJECT(dev), &sifive_plic_ops, plic, TYPE_SIFIVE_PLIC, plic->aperture_size); @@ -444,9 +443,7 @@ static void sifive_plic_realize(DeviceState *dev, Error= **errp) plic->enable =3D g_new0(uint32_t, plic->bitfield_words * plic->num_add= rs); sysbus_init_mmio(SYS_BUS_DEVICE(dev), &plic->mmio); plic->irqs =3D g_new0(qemu_irq, plic->num_sources + 1); - for (i =3D 0; i <=3D plic->num_sources; i++) { - plic->irqs[i] =3D qemu_allocate_irq(sifive_plic_irq_request, plic,= i); - } + qdev_init_gpio_in(dev, sifive_plic_irq_request, plic->num_sources); } =20 static void sifive_plic_class_init(ObjectClass *klass, void *data) --=20 2.17.0 From nobody Wed Oct 29 17:11:29 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.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 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1525470694046295.59293868599525; Fri, 4 May 2018 14:51:34 -0700 (PDT) Received: from localhost ([::1]:36571 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEic0-0000zq-3l for importer@patchew.org; Fri, 04 May 2018 17:51:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44465) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEh5U-0006iB-2E for qemu-devel@nongnu.org; Fri, 04 May 2018 16:13:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEh5Q-0006or-Mj for qemu-devel@nongnu.org; Fri, 04 May 2018 16:13:51 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:20893) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEh5Q-0006nd-5A for qemu-devel@nongnu.org; Fri, 04 May 2018 16:13:48 -0400 Received: from mail-bl2nam02lp0085.outbound.protection.outlook.com (HELO NAM02-BL2-obe.outbound.protection.outlook.com) ([207.46.163.85]) by ob1.hgst.iphmx.com with ESMTP; 05 May 2018 04:13:46 +0800 Received: from risc6-mainframe.int.fusionio.com (199.255.44.175) by BN6PR04MB0405.namprd04.prod.outlook.com (2603:10b6:404:91::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.735.16; Fri, 4 May 2018 20:13:44 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1525464828; x=1557000828; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=+DAyqI4bW6GafgrR+GdZNxcMiHSIw6Ki1JGXg8VWjsw=; b=rS6/rMGNQZQyqkeexXatKiaX0kIqK2FgrX7JP7Fa2uTolD6Jr520jMn9 156HTqNfNjyS/n8YJoGCyYDk6t1Bd31il1JQZ7u+YG/CLRnWDOVIeoi/a 7+XZGWHDhEVJX1seBpy4YeDCgQSMAXZtHR/b67myPDt9zaV3xSEPgAauw Tfk/4iLr8FqZfSHSy/lZRG6jGq+lxlcqlRAYcc2STQsjcHg4c6hMuFvKa Rh5vkbf64KAYg5SxlMDg3D0MXZVyFuxhZ8tFjB2U5F1j3dWyM7IEs7gyv rGrsdhmoJtyWpOQerC+nYtHqLOG/WuvN7MzR8paeiWbj31pEaa+qOllqW Q==; X-IronPort-AV: E=Sophos;i="5.49,363,1520870400"; d="scan'208";a="77264930" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=oPeX2DBz0J6pgyalRUxR7ulszNwoBzpk42GAPGg0b+U=; b=NBfyHCChAKqBMmfw18mB3jFAcoz2lh/mgeYe4lB3ZVDmE5buSGadKT4u/h9ILRrUJ7xV+lNwT7+femS+hgN/aakH9OglYYp8f0x6W0WDrmcKVlfQ/fmALZ7KAhguKGwb8hqf50+5PBKsQpzHsp3BSPZRlS2sd7ujPUt2d7Pn1H0= From: Alistair Francis To: qemu-devel@nongnu.org Date: Fri, 4 May 2018 13:13:30 -0700 Message-Id: <5655a2ca4e77ca8a0ac7b83b011449989e013981.1525464177.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [199.255.44.175] X-ClientProxiedBy: CY4PR1201CA0008.namprd12.prod.outlook.com (2603:10b6:910:16::18) To BN6PR04MB0405.namprd04.prod.outlook.com (2603:10b6:404:91::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BN6PR04MB0405; X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0405; 3:Qj6KjgHNjpsi5oJjP7tb/ZscEli38nhUiWv0oD1IAqDlbtDR65/pKy7LLaf3YE7YDkQOzVZYHGCucdJ4s/BqW14C+CTNwlKoQ5SbtQyIJnvYb0ey44LyMevQJeZnTnr7bUFtYYNy0kkHSW0sxmI/MENlBSVfmBhRic0qBMWZOLttQtIJRa75p3r73S93lXR52d3BuY5tOimo/t5HMOaX4MlvZ2mP1igerWmxM/v+Vtyv5Ou7kvKRBuYNpbMfJiKd; 25:5fCEb1oDblOE1WuIbpaNu5AnB5kUuJGZF0R7KxZTNTyaoiDlNIn7nD6is8WiU6yVP5oLmaTHwerBY2VqtuYz3YoP+pxW408/Rg8oMPRmUpcTLlVWs6WBiCg4AnKcsyuq+AmTmcbgywNkJTIjOK4gXVJY9v7VAYLOfpxy7S2VoUtK4YdhKTaqD1Kha9Zh3bcrwAF30WoNgBqAuOEovu51APTfThy1u4naivqHCBRUC9QTafs3pqSBuYao3dtv6G5UOGNH2VAIBMgcvfJsRiF4DaCAqd7Sb1PAzkF1m7Q/7nLwekKSlY5ie0bN+wAEb1dRoRtKGO8Fjt4UiLnRqcMubw==; 31:nb2atnpYlXNudGujE4P/pXWVrGw0s7B+1RLgpgOT50zlPCC0JBEeTNQlpTyGheJJvta1/O5dkD52712w3StehGGp8DfY2w+FBlweXM8YKYyKZLTcxZziFrwxIubPHjebW18htPHr3eJsH/sSjljYhvv7jbSIDZWr+7YUKJ3JH8iFWHm3FhsD1WaGL83ntq3L+b2h2xRaFKjmECpRKE6uNmMU4FI/ThgVPwWXDb6vQzI= X-MS-TrafficTypeDiagnostic: BN6PR04MB0405: WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0405; 20:6teIEdPovuwuxg2FRkKu5tKomKd0p6Cs4v9nQBs0O1xNrjLMLk6K2viIWqnlP0nrwRAZo+zFLOTYr/AK81TdR4KgISJNM5Y5Ch2NE6zExg2iq9uY9IInlIMdKNNGIj8l4O7rXiIAo6+5CUmtdq6x3sWoPkpWoioG6EA3nsA4dEv3tdtCQHnaNZ595EGEwqJJGQqf1i89SWOHstzZQCkPmpnGvXX9ZvWVx8Ykz/V+NUWow/T+1oGCotd2Sq638F/iEVWNtyayVSg5BUK3A98+rsZ5gCQKtQApluvWfa1Xk/DA0Ue0dYw74XZIBym8y6zwYOIM/fWFV3DycxypZloN4Cpcv/nUOb042O7j7nJt44CsvoH0yg1K9Z3SujyTJTSXLw3GuoHKOcTMJ5nSVClxastN3aGzlP/VDObGRD+dPeNvfgCsra8FZDd/Klef+G95S39eZpM9GZExqqBPW/u9qJfxXS9lhDE7V6BoyYavUCQJw59fPKWmSDw/cAJF6lYx; 4:Rn2cPRIyy+Z0171AHo7jwGFYcsyT713R1ZWlYVtcW0kf+1QxE4tuYXhKoiejAwWzKK4JgqSz/aXFncie9dKdVpRBvlmxu0EkuyMnxR88UzQR8JtYj4wksX5eF/X5BboLKGTNFNNJ65WeIgvHfKkZIDBIqj8yS+iPBZS+VuWIUbpu5zok2bKiN9/1X5Mh6A2FOGDo/Q9tWSozexf42Y7HmGF5nWsTvk2wFdv5VsfnXCzNBuwXQTMO8990Op+APfJwGXgWpVwOA7QAzsqjnLqBBYjw0/d9Uo0mEC+1+6kmDS9AVWSihKA85kv+qUY4nfav X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(21532816269658); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:BN6PR04MB0405; BCL:0; PCL:0; RULEID:; SRVR:BN6PR04MB0405; X-Forefront-PRVS: 06628F7CA4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(376002)(39380400002)(366004)(346002)(39860400002)(189003)(199004)(50466002)(105586002)(6916009)(68736007)(16586007)(2906002)(5660300001)(316002)(39060400002)(53936002)(4326008)(25786009)(48376002)(6512007)(106356001)(72206003)(2351001)(478600001)(2361001)(118296001)(36756003)(6486002)(8936002)(66066001)(26005)(97736004)(52116002)(51416003)(2616005)(6116002)(956004)(8676002)(3846002)(486006)(44832011)(476003)(81166006)(446003)(81156014)(11346002)(7736002)(6666003)(50226002)(186003)(6346003)(16526019)(86362001)(6506007)(76176011)(47776003)(386003)(59450400001)(305945005); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR04MB0405; H:risc6-mainframe.int.fusionio.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR04MB0405; 23:qWgtE/mU9TBZDKQpPNJF6n2l8zNzeznCE8+y7vi8n?= =?us-ascii?Q?qiVxX6Pvv2WJRHkwV3UHm2BFgZ4DLs41TvpUvsBXdCyHiQ8mcyW59bQd9CxE?= =?us-ascii?Q?JBMtyfslXo+tjx6kpjJm6UOWdHHmr6y8NeM9YlQpQR7TER6t4QhWARk/lvfp?= =?us-ascii?Q?/A7c0dxzKqFDoHDt/h7RgiOTc7BQUNaZRSDZFcgw605ZfRm6oLhg9URNzZz1?= =?us-ascii?Q?EnGnYnjt3c2737sDGacyKk4WaKS5QkhP9K5TXaXN1lymysIRJsKO5jquiVSL?= =?us-ascii?Q?miGmkEn63i6BMKi0OMc7lNzup8R6n0OxcfdRUQcm3ijjmtLASYrpll/k96es?= =?us-ascii?Q?WJ4oGp78UR1Q3r+RW+RJ+QjvvVWxjeenRm67AplsYKh/9Su3xTTk92D9yR3s?= =?us-ascii?Q?7wBxxlpRXelpdsPeTanvhKjM42dSIvghLTeUhcORZ/x1yDeQebvp61joON+Q?= =?us-ascii?Q?qHDS8L9KfYJ5Ta4FTrGfj39zaA6G8xL3npTdx7drxEVBIMwXJGSQbhI/mX7a?= =?us-ascii?Q?N9e/733WiemsRZ/qZIRd0VZPu+g1Vea70AHFdxFQDVdqwtNX6NU2XP84E9NH?= =?us-ascii?Q?f9zsdsJ4aCJGSGshISTZ2kNidL4EkvsDwSINKSgzYg4cdMMmLz4Msie3GwfT?= =?us-ascii?Q?zO9ab2ApNhwMXkptywpBMS+yvTsUpX2UOFtRtc7H7eVMZzF1AV8TN9mCoWxp?= =?us-ascii?Q?MNIGHkIAsX3RjN+nBrnmFm5VOTsvQEPLIT6JjdxAoShM5VkdB4dkqKIsDJPq?= =?us-ascii?Q?rk/hJRQEfWK4CiIUQvjq6cjySiZ2nq9BE8fReZzFUjGuatQciuGMLaDANCH5?= =?us-ascii?Q?rKvVM6yOf/go4BD2kZOO7R0wzmstCwTDXjWmC5ljFONeKhFXwqKdF00u44Tc?= =?us-ascii?Q?JwscrAxj5swJi/yUimAJknW5lN+WbaMnZaHgNSg1nHeKt8ghKqHsEFaoVv8G?= =?us-ascii?Q?m0LHvopNo6LOskKEHJJCSmABQ/PpXUkRDc2FTQBRoXYzX9wNzOmfrZpRhPtc?= =?us-ascii?Q?bTnkKqrdcJCeXP1HBcwhgQhWCy7245GWoxZA82vCRHS9phCSTh9LXSWPmJ5F?= =?us-ascii?Q?9cySG0LmfizZ0kt4/eH5NHduTWcrov9MozXYD1zqplEREgHrGbFRXvznp9hZ?= =?us-ascii?Q?62DhDUu2anJTtL777eJdyqmpVO4Ss7qdml8LFkcq5CUkZpDsMGcI5gVayyYI?= =?us-ascii?Q?4MTA2FnU7qLNthl6aXxIijuMz8geqkxqIjozsL0jWqs9Vm3XE7rD0yqT9WEK?= =?us-ascii?Q?FcBVPXVrwgf3WhOeocrpw3NZf2XNwMOH8GAfV3GpxzPx5DeDAfw55/6Ei3Wp?= =?us-ascii?Q?tMT8Mb8s5wZTq7sc+VFlTtmkqErz4o4A0tpT3ANm6HHVpoF6DrBfHnfv55k/?= =?us-ascii?Q?S5yCw=3D=3D?= X-Microsoft-Antispam-Message-Info: wGWlRtLRK8ZSTVRErmR516TngBweu5w9MmVtbZ4tIul4XnAPgoV43c+HcMvIdaBp3HPc/7mUmi5y5bSe/8poGGYRJxZR5pftNJSWykni+A4Ig+ZXtu6nH2M/pn/TuetVL/xx8VDgHfi+rcJrNXcPJpRr/vjqfsRh4+mTvFuplgl5BSXA1SsZAgKhtYEGdiKH X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0405; 6:uKrrrxCPw7gh9o1ea6gF9PyVOblOk9DX9YoISmbmXenfLJXEYYqmDt0AJPFEyLEj4qCAXtOoL/94eOQvajtzPC0VSbT1+FHxrbGk5NEMVdYUfAcrkNqHv85mx6C853BYdQ54LhXcZSrgoFh4XpoMvmXbDfXov5BWzKZdzj1tokTyVG5dtFbYxNPrzLHOhfl+ezOnZ+SrnCXbJnxycom7bJTEOjavogK74Rq1crA0CGmgL5Cp/3TnVQQTS8yex9whv625s+FWKi9PxlcTEgqhCD/cbxMCkcLf1opos0WnbTz96xbFzpjqmSp2NUTR6fOe4uGzz7AfhH6QWryI7XCB1Cm+PcE44m06D/A1+uGVsyTFjQKl9PrGs1a6ksRCJqkeL8jOKhhs0LY277ins/IqhwP5EKiqBWi9xt/cHkPJRCo/G30jP8cZYDXVp2kb6fgoki8t3Fix0wZSpmeXTQsiPQ==; 5:Ok04Z/2xzAOzN5QGWcY2/Pbldkfc/Dv6iBssIomWXwKPpMW+lNxvADG9YF2mvz9CTa+d1ukTaRGGA/wuiTddMQ/uS/4kDmdECKrbUinR7RWa9rMV4kgmbFs9YCLF4UdzbdvkMzvsqVoTTJ1GrqSkdheJ9XuQUx6oHhZg0YS76IU=; 24:8MDxFypucR2uSvNMP1e6XoJSYfFFRKjztW5LtF34tHH/xsMcGU50/8uyQSoeijelZxzw0sjQ6TySM1MYiNMr4mW+F5IOtE3T9QZV6FexJvM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0405; 7:pQZoYmTfQkILXEZ5mS7iK2MISvHd3UXXqRwjPN3sxRgItJofr7FjmSE5iNn/e32fVE03wDryZm6ziw5yzHs4OIcquknUJg/WSUk76Hi2bwFPrf88n42gKipZ2k4NDkwVye5arF2N8viskqwK0CtTTrM77MIvm869tIk5k9mtdenkhsFWiqvcM/AKb5uPF0uQP+J2FCuIyUYMOtSDaymVyWK3zaOq4mVO3xmTZZlYU+zpludBS9fL2bkhmxckJkou; 20:1/flGrA+URGyqX/GgKVsoDgEJCsKBcJNqAJkf9BOgN9d5igTaRROzF9DKdNbXWPnJ9u19MtIiYuAgsZAKuNlk1OVl6jS7OvXXY7hkQ8S7qm9xP33VN826ELPaQtEFCsHbOnUMJs+Cg2LXM2nZ4waQc52+1vj1KFO/ek5jHN17AA= X-MS-Office365-Filtering-Correlation-Id: 68f1a44d-b83a-49e5-b8ac-08d5b1fb89a2 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2018 20:13:44.0738 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 68f1a44d-b83a-49e5-b8ac-08d5b1fb89a2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR04MB0405 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.154.42 X-Mailman-Approved-At: Fri, 04 May 2018 17:46:56 -0400 Subject: [Qemu-devel] [PATCH v1 3/4] hw/riscv/sifive_u: Connect the Cadence GEM Ethernet device X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, mjc@sifive.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 (found 2 invalid signatures) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Connect the Cadence GEM ethernet device. This also requires us to expose the plic interrupt lines. Signed-off-by: Alistair Francis --- default-configs/riscv32-softmmu.mak | 1 + default-configs/riscv64-softmmu.mak | 1 + hw/riscv/sifive_u.c | 29 +++++++++++++++++++++++++++++ include/hw/riscv/sifive_u.h | 6 +++++- 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/default-configs/riscv32-softmmu.mak b/default-configs/riscv32-= softmmu.mak index f9e742120c..9a1c42e8b2 100644 --- a/default-configs/riscv32-softmmu.mak +++ b/default-configs/riscv32-softmmu.mak @@ -2,3 +2,4 @@ =20 CONFIG_SERIAL=3Dy CONFIG_VIRTIO=3Dy +CONFIG_CADENCE=3Dy diff --git a/default-configs/riscv64-softmmu.mak b/default-configs/riscv64-= softmmu.mak index f9e742120c..9a1c42e8b2 100644 --- a/default-configs/riscv64-softmmu.mak +++ b/default-configs/riscv64-softmmu.mak @@ -2,3 +2,4 @@ =20 CONFIG_SERIAL=3Dy CONFIG_VIRTIO=3Dy +CONFIG_CADENCE=3Dy diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 4924f92262..e4c7539b89 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -58,8 +58,11 @@ static const struct MemmapEntry { [SIFIVE_U_UART0] =3D { 0x10013000, 0x1000 }, [SIFIVE_U_UART1] =3D { 0x10023000, 0x1000 }, [SIFIVE_U_DRAM] =3D { 0x80000000, 0x0 }, + [SIFIVE_U_GEM] =3D { 0x100900FC, 0x1000 }, }; =20 +#define GEM_REVISION 0x10070109 + static uint64_t load_kernel(const char *kernel_filename) { uint64_t kernel_entry, kernel_high; @@ -294,6 +297,9 @@ static void riscv_sifive_u54_init(Object *obj) memmap[SIFIVE_U_MROM].size, &error_fatal); memory_region_add_subregion(system_memory, memmap[SIFIVE_U_MROM].base, mask_rom); + + object_initialize(&s->gem, sizeof(s->gem), TYPE_CADENCE_GEM); + qdev_set_parent_bus(DEVICE(&s->gem), sysbus_get_default()); } =20 static void riscv_sifive_u54_realize(DeviceState *dev, Error **errp) @@ -301,6 +307,10 @@ static void riscv_sifive_u54_realize(DeviceState *dev,= Error **errp) SiFiveU54State *s =3D RISCV_U54_SOC(dev); const struct MemmapEntry *memmap =3D sifive_u_memmap; MemoryRegion *system_memory =3D get_system_memory(); + qemu_irq plic_gpios[SIFIVE_U_PLIC_NUM_SOURCES]; + int i; + Error *err =3D NULL; + NICInfo *nd =3D &nd_table[0]; =20 object_property_set_bool(OBJECT(&s->cpus), true, "realized", &error_abort); @@ -324,6 +334,25 @@ static void riscv_sifive_u54_realize(DeviceState *dev,= Error **errp) sifive_clint_create(memmap[SIFIVE_U_CLINT].base, memmap[SIFIVE_U_CLINT].size, smp_cpus, SIFIVE_SIP_BASE, SIFIVE_TIMECMP_BASE, SIFIVE_TIME_BASE); + + for (i =3D 0; i < SIFIVE_U_PLIC_NUM_SOURCES; i++) { + plic_gpios[i] =3D qdev_get_gpio_in(DEVICE(s->plic), i); + } + + if (nd->used) { + qemu_check_nic_model(nd, TYPE_CADENCE_GEM); + qdev_set_nic_properties(DEVICE(&s->gem), nd); + } + object_property_set_int(OBJECT(&s->gem), GEM_REVISION, "revision", + &error_abort); + object_property_set_bool(OBJECT(&s->gem), true, "realized", &err); + if (err) { + error_propagate(errp, err); + return; + } + sysbus_mmio_map(SYS_BUS_DEVICE(&s->gem), 0, memmap[SIFIVE_U_GEM].base); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->gem), 0, + plic_gpios[53]); } =20 static void riscv_sifive_u_machine_init(MachineClass *mc) diff --git a/include/hw/riscv/sifive_u.h b/include/hw/riscv/sifive_u.h index 0f8bdd8fab..d40d851999 100644 --- a/include/hw/riscv/sifive_u.h +++ b/include/hw/riscv/sifive_u.h @@ -19,6 +19,8 @@ #ifndef HW_SIFIVE_U_H #define HW_SIFIVE_U_H =20 +#include "hw/net/cadence_gem.h" + #define TYPE_RISCV_U54_SOC "riscv.sifive.u54" #define RISCV_U54_SOC(obj) \ OBJECT_CHECK(SiFiveU54State, (obj), TYPE_RISCV_U54_SOC) @@ -30,6 +32,7 @@ typedef struct SiFiveU54State { /*< public >*/ RISCVHartArrayState cpus; DeviceState *plic; + CadenceGEMState gem; } SiFiveU54State; =20 typedef struct SiFiveUState { @@ -49,7 +52,8 @@ enum { SIFIVE_U_PLIC, SIFIVE_U_UART0, SIFIVE_U_UART1, - SIFIVE_U_DRAM + SIFIVE_U_DRAM, + SIFIVE_U_GEM }; =20 enum { --=20 2.17.0 From nobody Wed Oct 29 17:11:29 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.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 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1525470659248479.073468632768; Fri, 4 May 2018 14:50:59 -0700 (PDT) Received: from localhost ([::1]:36570 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEibO-0000d2-W2 for importer@patchew.org; Fri, 04 May 2018 17:50:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44598) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEh5f-0006jC-FD for qemu-devel@nongnu.org; Fri, 04 May 2018 16:14:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEh5c-0006xR-6a for qemu-devel@nongnu.org; Fri, 04 May 2018 16:14:03 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:29065) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEh5b-0006wD-PC for qemu-devel@nongnu.org; Fri, 04 May 2018 16:14:00 -0400 Received: from mail-sn1nam01lp0111.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([207.46.163.111]) by ob1.hgst.iphmx.com with ESMTP; 05 May 2018 04:13:59 +0800 Received: from risc6-mainframe.int.fusionio.com (199.255.44.175) by BN6PR04MB0403.namprd04.prod.outlook.com (2603:10b6:404:91::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.735.16; Fri, 4 May 2018 20:13:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1525464841; x=1557000841; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=yMP0cCAgZBTOefYacU4L4ZsDAvw/GJts1vM8zeeN49Y=; b=K1ioYgNZRViYR3dA4AWBPNJbFXPGECqaRHsU5cQ6sfHnr9xEWqAIfClM uZGwE0A54AsYT5l7nKR5biWuriJW0SlhE4kOI+UotLMd18hxWXQl/JqoI CA/RtbBkP8u8932xmHniCkeK47juOp0UDNbTBeSQlo1RdV0YT/JDC6h4Z Ii1nDTCLYbo+h6YvAsyMj8ezKZcCt4TXxeu6T99W0QXaZFUmTk9CxPiwy 359B3qOrDGHZqm7H0whFx0GLUgLk7+zM5mMUZakCkuTFcz4wsmwxSOsLF 4rYoMTb8t8DxYC9CTU+UvCNt9M67WwUU83wMtJm6LRDOs5Thq66XBJHOV g==; X-IronPort-AV: E=Sophos;i="5.49,363,1520870400"; d="scan'208";a="77492478" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=af6DIvZP9uwEYOqJ7rzQ8/GGbA8dtXJF1aeQjsTXHbI=; b=avNVGkRpZ0icsKjWF0mni0zUka4s3wXfxTRXQDng60UVo2oeZvSTeNgp9D0o8f1Y0nm9Lr4rwjSjvAsYVkD2MfK1z6+LvmhOEJyb/d0NEby8zB8PnIQ0yxcCvlovSmkVjILVPt9DE1mvLbq41RmDcCNjy1hsfn4EX/Zqi0uez0U= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; From: Alistair Francis To: qemu-devel@nongnu.org Date: Fri, 4 May 2018 13:13:47 -0700 Message-Id: <18aa905475ab9a2dd5d8b7cd04cd037bb01a4e64.1525464177.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [199.255.44.175] X-ClientProxiedBy: CY4PR1201CA0003.namprd12.prod.outlook.com (2603:10b6:910:16::13) To BN6PR04MB0403.namprd04.prod.outlook.com (2603:10b6:404:91::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BN6PR04MB0403; X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 3:NPSd1jFZKer+Yz9go07azpElQMzNK7KoF778jD0aJR8txi9leMIRpYeSiFoDpulzGeYaw6RQv6gU0iqRL7X4QjyP2jW6jwKEFjEFD/KCWFz80wYGIb9yQKjQFES+B94uwg0L6RuG176IEnBkuFA8rVzO7Q5I5X0gIaHtYIWKASDUHHndPVwIHrpJCSp14eaiDmAwsfa1ld5yfR8GqFqQGzKiUeyG2iojL2IAU03BNh8mDYH0u2DSOOzhxIwEsy4M; 25:Ys8iuCXiNmSe3eNaJgN4Oxrm02JVdRLLu3N4kvpYpxCWyxHTRUOXzT+OhLokM+Q0GxRz/xT80rhDJQoMwvGtdGAaox5mFWtfkOecZfgZaNaxXHmlxQZA+tRKxnIFalrHp0oMsoSGpM/lDIO1E/KKm+DxuWdQUgtIvi9VnGeiuPNVFCyazYTw5NL8wojlx/l6hod4w4rHTCJy0OAujU0YXnEE6NlOPz85PmdA+2tOj2/l10EVy6WumjHdjLLzG22xgMF5UANMf3bX0fZrN+MPj8ZW0ou+l/yWeGJCgATlLivBjJWhhYR0Large+7ObuF48HtF5ejGJZh8UTn+9J/k1A==; 31:fewB12e/GCJJtDAMV80iR34RiXPGqv7I06MC1hiuDC9CxQ2Hvn2HDRBOEN0D/6C3eRL0vGPU6OZFgkZlVCAdbJ5m7tuFe3q7xx+ZeE2f3AMdN3bUdaBu/Q8y5dllBecCU/2ij/k0Z7VOkwAJiL/TlPFiiJP2RjcCqfcHpYYbWdS/bDPZIdlgBubjvBJVK4wuru7+1cag3J/REvzLDpfLYiC8hB3LNsF33TobO2OfAl4= X-MS-TrafficTypeDiagnostic: BN6PR04MB0403: WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 20:76gMO5UcsaQGqGInoDDZiNr3RqSlu+rr1oeJG7XxqaUl2JkxwDQT5zqia8p9z6gYUs2W5fzLQioEyec11c1mWOiArG9WRf5ODAOfnSASL5sgiL/D92wzYlcqKnthO4IffDoQRldHTsgqMYDOqlPlXbOrvLOBgpOzATMO3Y1vJ+Tsn73H8AdEBiqkauD6opcc46baDX1GIjfLYo/GUvZFwor9mumL28OddB0RcZKIPiwjJRaVQhbQ6YAiTRnqvQoRhmapKoaccgjQT0rVsOPrsj1qyDbBZexz+mEmkpohyxVpBqiYEGt445FwhJ6i3gbdNUKj3cQf6t8h01nNbPLovv+ddt2dno64fBNzM4UiPOULw+wPWC5iR9aSLAdcNDrDObpbLgnhesWjImfJYEwMcEOy7+H44ctZs9DYWQPwz28OcHyFMf1lz4zZD6YugshAuO9idqv0A0DFpciRQnIJQlDuyZaIQ7byJr1+8V+lOjsVkIBwgCWGLtOuK0LgSr1f; 4:7sJM4+RMz9gV16eWr1xydhU5iFPNAV4pUeXPUL25usGJxEU6d9qs2U+ZZO8mdR2QyNmDXhl5fY0mBS7CWCWvXLUoL5dkC03LTIYRa147ttHDoagPBkGUD7jGmXo6SPHWaVgIWu9zBJK3gtYNPW5uj65Ruqsc0H16GsrgXUYz9/3P8Q7UnPID8wURCh4glFaT0ZqzGykCBSytVNsMrDT20+HcY8NtYfSO/wPgwAp3rQXvpQvh2UTORvLtKGyaXGxyPBU/Cvxtp1AcecSuiZFzhQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:BN6PR04MB0403; BCL:0; PCL:0; RULEID:; SRVR:BN6PR04MB0403; X-Forefront-PRVS: 06628F7CA4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(346002)(376002)(396003)(39860400002)(39380400002)(199004)(189003)(97736004)(68736007)(86362001)(36756003)(81166006)(53936002)(478600001)(72206003)(105586002)(6512007)(6116002)(4326008)(106356001)(118296001)(39060400002)(2351001)(47776003)(2361001)(3846002)(316002)(8936002)(16586007)(5660300001)(59450400001)(25786009)(6506007)(386003)(44832011)(48376002)(66066001)(50226002)(50466002)(446003)(11346002)(8676002)(81156014)(52116002)(2616005)(956004)(76176011)(51416003)(2906002)(6486002)(186003)(26005)(305945005)(6666003)(7736002)(16526019)(6916009)(486006)(476003); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR04MB0403; H:risc6-mainframe.int.fusionio.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR04MB0403; 23:94vKAdpKwGWCwRkfkHUYOJngsQJCvvpTm7eQhMW5o?= =?us-ascii?Q?pMCZy4lcUJ+8Z9CGTW2pwKcdTu7eWJEZw8eJga6N5dOkgYs2+h62HOLuQKlV?= =?us-ascii?Q?VJd/3Fh/E/jWiI8Kaj6eKunIOm4SsIGIVanJGT+OFdXnn0fQze9pxD6e7jqg?= =?us-ascii?Q?yVw4Rbv3uWrlERfF+5Emi2QhWn4/SZ2jG/jxpCw8OC0yMz0pmYB3J5keLXB4?= =?us-ascii?Q?rCwSrxhy21LCSHjQW5GjKRR+ClluJhCLPVD0sugu5rqzCDROziqyM7L/xP7t?= =?us-ascii?Q?TZILH+QsGBhbChmimUDqUTtMXtMUDDf+Lj9lMln4VcPPkoqs4paMGF9vnfsK?= =?us-ascii?Q?Z2io3kv7auqiFbgW9Rff4Tvv562zSpAMlOqi3mpjySfs4+2HhNYjT6NXyJWW?= =?us-ascii?Q?ECBfyk0Zo9uGSnBNG/8Se+ZdAn4QGcnKVndkFuMQlvw8ACf3RL82bVj3hlBP?= =?us-ascii?Q?7Mu43z7MrrOBbD8q85z/qhoCQNUajbgD9o1xZ+5Virc1PaZIWtGnPpv0e8og?= =?us-ascii?Q?Vr+MXmgLn56kFrpuY2eCZqI7UyM5x1g44khvyxa5U4rwPFS15yFlsmjRoIuh?= =?us-ascii?Q?Yhtf4KW0xZf/JV2llhVb0R2dnU5kdLJXzRQiqwPVhN1h1nN2x7XOFnRY0UHL?= =?us-ascii?Q?959yMkJdX/iUuzz8UgIPzTv99o4/b3RafBKPPEwXBvmA3mQPUXL8V5FHr+OS?= =?us-ascii?Q?CxTCDNVXIRPLgzjVRliKgXJC5JTZjHIbPMnM2cs8hLDcQ3Wk4TvtfEJyvjbc?= =?us-ascii?Q?DxcoobQ9wRaTFmLxQnArjNPYLwfTKrzHTdvJjHZFUvqQeYbDxy3N0/pA3uGB?= =?us-ascii?Q?Aj8lHiFKaPvOEsaIpvtxBEX/9Cccu3mGERBqoTdlsFT+SyWUS/ZzLz8BhDXS?= =?us-ascii?Q?MWldA9hef+yMUOa7olxvCuGZoTNG03i5HX+OqlnnJx4JvBbIQSW4E+48D6YM?= =?us-ascii?Q?mXps1hVSF2jqGPJBSgaj3Rnu2alYpLREofMUCPvZkd6ZSh4zizJmQ581d2/v?= =?us-ascii?Q?0i1f3gXgNV+wmu9Hxy4Udwc1jbceefECCQeMgpU5gbrQkjtwoYyZleNOidn6?= =?us-ascii?Q?ztCEr8rXKQLawA2gz1ExM8jTBAcoY+6O5tN95msABVKK0logW/HCudn1mfPk?= =?us-ascii?Q?3fgkAyIJZVdXKHvmr2NUTOTRWEtlQ+B7EpsK0/z0jt2TKhqfmKDJ6aR0Z2YG?= =?us-ascii?Q?ZMb95FhN999umZ6HTgm+AjsJtjf1t0y2UBfRV0kL3HjjQSUT5f+2/ffAAyFg?= =?us-ascii?Q?XR/vqN6G+lyuqquu/AKkDgBcn0ff7GwDZM7kR+lvEa94K1nuvehS/uED1o7x?= =?us-ascii?Q?OdHAfYM+vH/5j9c8eCu1JF7ofsZcmT/SG/rG660zO6Q?= X-Microsoft-Antispam-Message-Info: NZx3gPvAQUS+HStFwRdwjKo4tCewaImvGaWJ3ydUUB5KLeBjzqnm2JM456EEShFgE9NhAawID4kBfVaJgZYCtxdrYv4S/WesF2/+UPRFGbcHP3M/b+fFCaYwwCvUfMxuFWiwsP9XyvnBbRwv0GLybajs6cDuAKt5bXI5QoX9dM5+F4E5C6x/x1v8XmwN+z5V X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 6:AhQs88YV1Z7uQPj4DS8C8RMhUAwKNVNm+GRCcbJEkS63LprBCaGemEvS+GZzLzDbUWh9KA9SCD7c42M4Xnglhpm07jw9DSJjqrN9n47BfxNk+u0w4F7aafOXt/93krl0xJF8zL4VYkSFOWGGjvXenAxo4ELU8PpNzj3EcRs45/2WqwICSVmuACR0uRRu0JWGb5MSMzVZfWvU3Dd0aMT/Vt38HG+oIML4rHZdpmI2+AvJP6xW4ANBt4EDr1qUmiAoq+E7M7AW+v0M7FZiNJXEW4p9oFuKcCUfZSEIJDcsE3OEZIxcmC53H6j/EEAnWhP66NqCV4caX6LR+Ax+gAFnf+VYkTCEkavut7wy6kfkCUDozYcMBXFSV75oKAmGDn8w9PLGG0+bEuS7c/9TZkImnbjIK2k7YgXN9IPopqeOUVGj5aIeIAUbtJ+fo0hULa2zjlXOLTqx2gAvUgxWmUS4NQ==; 5:DPOcNZx0J6oXxFy908zYSYqDZgum/cScckD6pIZ18baq26o7HZQlcnebo4LcwHYVrWtfYGCVwXqlxDtDcKqVvNkfG5xHgBTt81Gcgjl0XLNNOSLHvt3NcODByhdcQMMKopyMPNX5VhckLnrxZNPXWxfPhTby3Yo3z81lOo9JyaE=; 24:vNDROjT0ajBQgDGbUKFgg4XHfYlEKtZ2pJIpCfk4872C/AB3E8xttRYTiHzuFTn79rvAhWVEKlfwoAgQiF0ucqybBMD7VFfwZjodot4hf3E= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0403; 7:Ro+rCTr/+u4fLYeaK5IoC1hiBFKFqPMRlQHzDyad61H0F/JTr9+FV/phrz4XYxelrIjW+o5YW7frLotYTWlZeRGuBik0E+QdJpP9AVI69q+xyvUpK9/LyzzXzWcgDUpUfOB8Rl6fVLesS+GmhMdAXvFlbKQ9U1WBDSRpgVIYFIInRHj+uayBIuosdej9ajAG4JEXqN+8F2nxyjELnh+G/wCeTEGq11z4sVCTDKjdGiZxshoZz0Lj87jrBNTakCNf; 20:vszKLYMTi0qHIvEw3eWxdWHg5dLjfrx9KdDRVYRSiQuJoeps5HXxAUgsRtC7w6mQz3uv0Zbz1h4QQ7/Oxp+ZW5xAlFkFWWYSW9aki2/RuXstEdCewlkTOiv7KOhTHJcAgd7berGTQbF3Kw/faz3cN5W0ETfqcDhkCFy67iWrYGU= X-MS-Office365-Filtering-Correlation-Id: 094e1f32-b3d1-4c1c-07d8-08d5b1fb90e5 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2018 20:13:56.2654 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 094e1f32-b3d1-4c1c-07d8-08d5b1fb90e5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR04MB0403 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 X-Mailman-Approved-At: Fri, 04 May 2018 17:46:58 -0400 Subject: [Qemu-devel] [PATCH v1 4/4] hw/riscv/sifive_e: Create a E31 SoC object X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, mjc@sifive.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 (found 2 invalid signatures) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- hw/riscv/sifive_e.c | 97 +++++++++++++++++++++++++++---------- include/hw/riscv/sifive_e.h | 16 +++++- 2 files changed, 86 insertions(+), 27 deletions(-) diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c index e4ecb7aa4b..0ab5e3ca45 100644 --- a/hw/riscv/sifive_e.c +++ b/hw/riscv/sifive_e.c @@ -102,18 +102,12 @@ static void riscv_sifive_e_init(MachineState *machine) SiFiveEState *s =3D g_new0(SiFiveEState, 1); MemoryRegion *sys_mem =3D get_system_memory(); MemoryRegion *main_mem =3D g_new(MemoryRegion, 1); - MemoryRegion *mask_rom =3D g_new(MemoryRegion, 1); - MemoryRegion *xip_mem =3D g_new(MemoryRegion, 1); int i; =20 - /* Initialize SOC */ - object_initialize(&s->soc, sizeof(s->soc), TYPE_RISCV_HART_ARRAY); + /* Initialize SoC */ + object_initialize(&s->soc, sizeof(s->soc), TYPE_RISCV_E31_SOC); object_property_add_child(OBJECT(machine), "soc", OBJECT(&s->soc), &error_abort); - object_property_set_str(OBJECT(&s->soc), SIFIVE_E_CPU, "cpu-type", - &error_abort); - object_property_set_int(OBJECT(&s->soc), smp_cpus, "num-harts", - &error_abort); object_property_set_bool(OBJECT(&s->soc), true, "realized", &error_abort); =20 @@ -123,11 +117,57 @@ static void riscv_sifive_e_init(MachineState *machine) memory_region_add_subregion(sys_mem, memmap[SIFIVE_E_DTIM].base, main_mem); =20 + /* Mask ROM reset vector */ + uint32_t reset_vec[2] =3D { + 0x204002b7, /* 0x1000: lui t0,0x20400 */ + 0x00028067, /* 0x1004: jr t0 */ + }; + + /* copy in the reset vector in little_endian byte order */ + for (i =3D 0; i < sizeof(reset_vec) >> 2; i++) { + reset_vec[i] =3D cpu_to_le32(reset_vec[i]); + } + rom_add_blob_fixed_as("mrom.reset", reset_vec, sizeof(reset_vec), + memmap[SIFIVE_E_MROM].base, &address_space_memor= y); + + if (machine->kernel_filename) { + load_kernel(machine->kernel_filename); + } +} + +static void riscv_sifive_e31_init(Object *obj) +{ + const struct MemmapEntry *memmap =3D sifive_e_memmap; + + SiFiveE31State *s =3D RISCV_E31_SOC(obj); + MemoryRegion *sys_mem =3D get_system_memory(); + MemoryRegion *mask_rom =3D g_new(MemoryRegion, 1); + + object_initialize(&s->cpus, sizeof(s->cpus), TYPE_RISCV_HART_ARRAY); + object_property_add_child(obj, "cpus", OBJECT(&s->cpus), + &error_abort); + object_property_set_str(OBJECT(&s->cpus), SIFIVE_E_CPU, "cpu-type", + &error_abort); + object_property_set_int(OBJECT(&s->cpus), smp_cpus, "num-harts", + &error_abort); + /* Mask ROM */ memory_region_init_rom(mask_rom, NULL, "riscv.sifive.e.mrom", memmap[SIFIVE_E_MROM].size, &error_fatal); memory_region_add_subregion(sys_mem, memmap[SIFIVE_E_MROM].base, mask_rom); +} + +static void riscv_sifive_e31_realize(DeviceState *dev, Error **errp) +{ + const struct MemmapEntry *memmap =3D sifive_e_memmap; + + SiFiveE31State *s =3D RISCV_E31_SOC(dev); + MemoryRegion *sys_mem =3D get_system_memory(); + MemoryRegion *xip_mem =3D g_new(MemoryRegion, 1); + + object_property_set_bool(OBJECT(&s->cpus), true, "realized", + &error_abort); =20 /* MMIO */ s->plic =3D sifive_plic_create(memmap[SIFIVE_E_PLIC].base, @@ -171,23 +211,6 @@ static void riscv_sifive_e_init(MachineState *machine) memmap[SIFIVE_E_XIP].size, &error_fatal); memory_region_set_readonly(xip_mem, true); memory_region_add_subregion(sys_mem, memmap[SIFIVE_E_XIP].base, xip_me= m); - - /* Mask ROM reset vector */ - uint32_t reset_vec[2] =3D { - 0x204002b7, /* 0x1000: lui t0,0x20400 */ - 0x00028067, /* 0x1004: jr t0 */ - }; - - /* copy in the reset vector in little_endian byte order */ - for (i =3D 0; i < sizeof(reset_vec) >> 2; i++) { - reset_vec[i] =3D cpu_to_le32(reset_vec[i]); - } - rom_add_blob_fixed_as("mrom.reset", reset_vec, sizeof(reset_vec), - memmap[SIFIVE_E_MROM].base, &address_space_memor= y); - - if (machine->kernel_filename) { - load_kernel(machine->kernel_filename); - } } =20 static void riscv_sifive_e_machine_init(MachineClass *mc) @@ -198,3 +221,27 @@ static void riscv_sifive_e_machine_init(MachineClass *= mc) } =20 DEFINE_MACHINE("sifive_e", riscv_sifive_e_machine_init) + +static void riscv_sifive_e31_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(oc); + + dc->realize =3D riscv_sifive_e31_realize; + /* Reason: Uses serial_hds in realize function, thus can't be used twi= ce */ + dc->user_creatable =3D false; +} + +static const TypeInfo riscv_sifive_e31_type_info =3D { + .name =3D TYPE_RISCV_E31_SOC, + .parent =3D TYPE_DEVICE, + .instance_size =3D sizeof(SiFiveE31State), + .instance_init =3D riscv_sifive_e31_init, + .class_init =3D riscv_sifive_e31_class_init, +}; + +static void riscv_sifive_e31_register_types(void) +{ + type_register_static(&riscv_sifive_e31_type_info); +} + +type_init(riscv_sifive_e31_register_types) diff --git a/include/hw/riscv/sifive_e.h b/include/hw/riscv/sifive_e.h index 12ad6d2ebb..5cb19cd564 100644 --- a/include/hw/riscv/sifive_e.h +++ b/include/hw/riscv/sifive_e.h @@ -19,13 +19,25 @@ #ifndef HW_SIFIVE_E_H #define HW_SIFIVE_E_H =20 -typedef struct SiFiveEState { +#define TYPE_RISCV_E31_SOC "riscv.sifive.e31" +#define RISCV_E31_SOC(obj) \ + OBJECT_CHECK(SiFiveE31State, (obj), TYPE_RISCV_E31_SOC) + +typedef struct SiFiveE31State { /*< private >*/ SysBusDevice parent_obj; =20 /*< public >*/ - RISCVHartArrayState soc; + RISCVHartArrayState cpus; DeviceState *plic; +} SiFiveE31State; + +typedef struct SiFiveEState { + /*< private >*/ + SysBusDevice parent_obj; + + /*< public >*/ + SiFiveE31State soc; } SiFiveEState; =20 enum { --=20 2.17.0