From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802442; cv=pass; d=zohomail.com; s=zohoarc; b=CW6QBJz2ZFEKcDUZzJjD4FeBQIdjQu1/M+HDZIihIfiqmTwrufJYKoU6fMoaGiK481QpX/xaQVZHzAtnWehKB2jWt3Iosd7oOlUoL0ih8V2moZ8i1eQ+46JIFShQKK+opXpL30cHyfnhVsUYEHqj7l1651oV7pJLS7Af8YbcBBI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802442; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=q/TwECIyTxKnGlLSNCUXAIqcqKwuX3S1AablrYXs1eE=; b=Wau6z/Vb+AvHTkwJvEdWf8BhZ3A7paEPuAaFLKm8Yd+mF+V+wqA9/OQgd2BHPmX+Luh0JVoweEG8wnTicVjMp/o9AMfQvqjjHjsS9zXos7Mxnf9M4KS+HDmd1Rlo0ZMTvz2QbdS5jTrv/QQ2MtN6e6UGOEHRD91SC3xJ6FkKVZY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802442468886.5788017961416; Sat, 18 Oct 2025 08:47:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA97i-000533-FX; Sat, 18 Oct 2025 11:45:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97g-00052h-8I; Sat, 18 Oct 2025 11:45:36 -0400 Received: from mail-northeuropeazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c200::5] helo=DUZPR83CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97e-0001QR-Io; Sat, 18 Oct 2025 11:45:35 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:28 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=j/2eJslaXjXPsltR9c1vLnQoKICwKqmfe/i5NXOgboBkq3lwCdk9K6EOY/K+hgGw+An4r7TJfWOhE4J/2bARZirtOkNmdIEnOhmYKaiMfU4K9pEN/nMuq7wf0gP8VwF3V1clDJ+Di1lXdDpBLFWocPBOcsVwE8EVbLa9KlgxTXUSsU7zQ289lAFsxQtfMMM04lYGypSOQ9rtY8YfAbnCSUyUD3xvTjCvlHxylDZMEg9caL/51QdtL+6b6SHJ4R4UBcQOcj9QahXuN028HDNlkpDwZkpC2kQ1wUpzHyhhQZYemofwaskV7zFOrU/qTMOO8j8e5God5Bm/IpgLLoPg8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=q/TwECIyTxKnGlLSNCUXAIqcqKwuX3S1AablrYXs1eE=; b=viSB8G8DwyMoslQyh3Bje83j2Gh6mfBQZPkamjDspzx7r06ts5F3iiLvVE5ZYxbBNjVZTcu7P0pGh3d87/s8FYNqD81VLk4MBf5z+vOaVdZpdM/KsuB5/sfDz0itKDdTSMlEj4pFhycMpyo3kK3xZCRVTtsnyRndKi+zroQRlq7KWWxji173U7Y9oA2YjL0gcYrUzQwC0DHk0QJl754+pGPOMc0Ooq7TcL/Lt0NL9dgo6LVu0TME7kXc5jju0Az0mkk/XJtHeCTQPLPQBvGIpJTQ3bHLnJIzyp1f3qImyiVIq2vDLrkp86IOe89EpJS81IxO2BCl/eSXm38EIRSfhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=q/TwECIyTxKnGlLSNCUXAIqcqKwuX3S1AablrYXs1eE=; b=er1OOdIV7Vt2GYjyJnBAem2fC0O1QXxp+/xRIYW2EBuwZE1sdn+Eox1aJV5C36PnzQMpyMgyLU1gweMdpSOR/2TTBAmLuw/MvVTyco9nG7KptSq4Ef+bLHmbLIY7AyDlmvGgo1fbXWnDRdkH0F+YvsFc5bFHITxDFQ4Y2f45XFRcNbr03oXqmAp37v+7sb13sykr8nvBZrJnLneefnLNQ5ecNzRoOiposAn+iCDyTAuVfe1bfAWMsoHTGLhdAI3RBgtezabmyZyMRQKWULfqHVeYZAxUPNgrUZI92j4OYEh0hwlH8OPs5gM3gi4q01WgUCaUyHuBg87LHKv8FJHWsw== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic , Alistair Francis Subject: [PATCH v13 01/13] hw/intc: Allow gaps in hartids for aclint and aplic Thread-Topic: [PATCH v13 01/13] hw/intc: Allow gaps in hartids for aclint and aplic Thread-Index: AQHcQEY6Z5NPBmc7zkSdmme/I6mf6Q== Date: Sat, 18 Oct 2025 15:45:28 +0000 Message-ID: <20251018154522.745788-2-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: bac6a320-37a8-48eb-8f48-08de0e5d5ce2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|7416014|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?DQlj1bmM+VJfuTf6wYKVAf5G/3THTdTElWQXaVH746KnzgS/KB1infQ/xZ?= =?iso-8859-1?Q?2kADjYB3apRQz2g97c4xDAaK2v0wFrBlgriXzNbf70KDdP/FU1mG2rM2Vg?= =?iso-8859-1?Q?a/LHu5NYI8xq4xkM4bpnb5qHszEQWmAq1uWDwnMhy8Hg9dgghgRRcix4L+?= =?iso-8859-1?Q?7iuGwWHbe6WcIB3KrCUGIUIw8nCTNqg/EwYdFoSNE2G6x0iuhqMi3X0JNZ?= =?iso-8859-1?Q?KD/jJO664ZWrY+vy5puEZ+hQVt06nDa5F+NwPla/MhY8wcX/lhw3jWjPZF?= =?iso-8859-1?Q?EuPY6PIiCZnFDyZNZYiUZXyDXCDyF73haa5594hyl9xZGwlhwqM/qP6GhA?= =?iso-8859-1?Q?1Me+5BF/OUbWjMuj8QTH+2mqBgYE2ZkKDtUg4kYRJY7oBjn7q26LJfbeay?= =?iso-8859-1?Q?3wqd83DaGUDMv6ZjCqf1Ht6HjFTt+9tM8f5fdKHTPF9gY0uIdgYYpOAjvQ?= =?iso-8859-1?Q?bC0o2eb2V2c5SBRIJKKi2+F4iIq6Rf5R3vWht5Pb0rL4gKwjJVZ0Ib1c9t?= =?iso-8859-1?Q?QPSExXQRFVAyoVHcnX7ClTe+QKvFK9kZ5VcJh6wbI2BQBnmzKKBKLwf5w4?= =?iso-8859-1?Q?VNwWm8bwa9dbVBckWdFu2nlSjQqpYr3ACQCXHftWJIlt2uLBbKgboBa70S?= =?iso-8859-1?Q?8la7rJFKSXLfKuy4Gc12ebuPW9ClhFHzz/bJtLxxPCHAtfkEdmlRlFZaXb?= =?iso-8859-1?Q?EETLYjcdSxtI8kFvF2SjOxND7/G7RtvPT9GAF1iqEXO9ZSHr8fO/E282Iw?= =?iso-8859-1?Q?Vt0vlFdMs7dZ+HeKpL87BDNYd9YYjMjFRrxeZAnkSpsQFvaD5NiwW+WZQT?= =?iso-8859-1?Q?dvGOoaqSjaxPn2HBvCkKXblcuLTHjNPTI5nAFaUc9x86f99iR4N6IkcFCe?= =?iso-8859-1?Q?w6ndBcIMGjrEvu+IBfVX03jKAxDKs0h0AoNdQKCI7kx78F3PEfTLfSwXMG?= =?iso-8859-1?Q?StVg7qIXf24MQDzlTkS9I8gRn0zhjLnuroQR8LMepIC0bZrTSqm/3ac3vH?= =?iso-8859-1?Q?jCFrFYwJEZ+sa6kGrliRQenm0fytWHrRhZAB66COJ+FqbwJPuyO8yz/poj?= =?iso-8859-1?Q?yMaR2QAaOjXmXqRXd+Hgf/cEiUu15tQh9uQHrUoDHXrGFibqHWmwo8Uyjz?= =?iso-8859-1?Q?BhaVCNRtm44RSlyNJhN3hN5txBjBBuO+O0oeb37Pe53Kn5x8UAAyB6ikWM?= =?iso-8859-1?Q?YkryF2bpMxTvtGxUdIGQElOJBz5Do8XyUxcyuzu+u3b8iyvlxzhlal2/O0?= =?iso-8859-1?Q?OO2NpdMIWmvW40t0VMxOhjMFUTm8Wz6nAPADS3VacoGkvLCL8pI4Rshgf8?= =?iso-8859-1?Q?ljTFX0B/aXbaGIfp+kJpvbkOBrLMxqMTlG0uwGSYmyP4rGhD76CBcAQgeJ?= =?iso-8859-1?Q?c7taz+b7HDGrOlDTwKOUqehY/AluvmrLkgARJr7H9IW4M5f+3fudqGW9a/?= =?iso-8859-1?Q?8frCw44SWWLWI6jVY8+FEGHxfZ0eiGIN9QjFpEq4hUcMhEd4iBrTRGFeHY?= =?iso-8859-1?Q?7XjfM3eJLmBgZ7VQmzkVX/CBdrg99UqEKd4c+hePL7r10Anl72wtMRLZgQ?= =?iso-8859-1?Q?JQO4IyOumnOGhwuETVzqohAcWeM4?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?IpTnqT3yCjwF3vx2NijWyOEfByObcsVj44iBoqsF7cBJ0uho2rr4l3pRRN?= =?iso-8859-1?Q?GuYuiyLVEVj8SoJJy8w5Lbf1x1G6Y1QUzFa1naN9OvLBpjB4VybuCtugo2?= =?iso-8859-1?Q?HhC6+KnrssOinpjriLq3lye9bVOVHFod3h9FxV3BFTpULbb0sLYlA2/Moi?= =?iso-8859-1?Q?fpeIxpbrI/bfsAZAdAZIRvN1nfA4b1kcX4fxhB6nkOxzQ4vtbEFO3qpLLN?= =?iso-8859-1?Q?bVFB2KU9WIz5L+peig61TBKHc4s+9N916+3TgXCL22WtbaQrUh7QijgUJm?= =?iso-8859-1?Q?8sNlKtZhX/QNZ9jEZpOXtgEpfWVh11VEB6sfLYB3cvYo7urbJnLOwHflsO?= =?iso-8859-1?Q?Fqm6LzQhR/hhoYr1+7I4UA6LYtmsFHlvoGIa4dCnOhdATIrsr6x0YAowhw?= =?iso-8859-1?Q?v6P2wG4XecID3ITInapgkXzXKmkHv5Vie4UzaokiqMJvzbwDnGLsEvWvi5?= =?iso-8859-1?Q?yWNDqn2+tZGY/K5JVvAlQomnQ3/yzPiuwCXM4rUxMFflOBAC0ChSrjVBhR?= =?iso-8859-1?Q?3T4eXoawWhIxOL22HDfiXOywCVqyMYvSfaz1ZOJtBE4wveh5305mfQ0n1R?= =?iso-8859-1?Q?YrecfG8n1fCdRDmC72d3EhCyNAH9twq/yucCeT15Gp142DlLoPDS9nCIAj?= =?iso-8859-1?Q?Rs2RKncxtAN8EFpznXl5jB4y8H1IEjwtQ57ji11itpzLOJVmSA2hJNyjAx?= =?iso-8859-1?Q?mc82GVdUjeIABvBmrKt8D1MLClDHymuUUeKa3RnibfSydt88XySxiwhQVe?= =?iso-8859-1?Q?asqA9oM6sg/0HcKIARNVcAv67hjTSPbFwtaRB25p84oL3FUiUIx8GTTzyk?= =?iso-8859-1?Q?rqz9/G1r5ean8FF679sQBSkXjq1HRmLVj0ML0+RGDY+GE+5xxpszbMpR5L?= =?iso-8859-1?Q?YeNFrgns39aF9tQQyo9Uy5LdHddUbYaVqW9wNqYRqJa58trLxFtx9GXOwL?= =?iso-8859-1?Q?rzsaBTDuKMtS0CAnx+jR39g3eirpzYVEhB+9oHDs9v/OxIRqEG4cbbPiCp?= =?iso-8859-1?Q?3wund+V53szftJIjdCCi9Lfiv7+oJbWtJi80rf7X2TSIh5yQEMR2E1fA+z?= =?iso-8859-1?Q?FmTeDvH6VGUaUSfO3ehvnh2PKSrAittdGePwYhGlYSUQZ0i3L47jIV2pYb?= =?iso-8859-1?Q?uUaZZQZTNhBcTsHlG4VbbYmUrC+eYFqDsAJJePjqkoKP8duO0vQAL6keEc?= =?iso-8859-1?Q?7Sg1NusjpRbKxm1Mjq/C/FDPnimjr91ZhNsnIn5nScprbTzT5nBd7G3N19?= =?iso-8859-1?Q?TCSLFOH8Eme/FSyzj5JUA0BO5l8oMYUzda0SIg5wajP8fiWfvwVmnOb4u9?= =?iso-8859-1?Q?6t43N1dDTmLkzhEkc6H+jVYBqAPMEOHzHUcsr1jyiM2v2rrPn8lsG3Ijqw?= =?iso-8859-1?Q?gLYFKM4VrYBZoA2xuMlsdVGB2888O80ZXlCZl6cKwniqx3EjNVE4NKK5u+?= =?iso-8859-1?Q?DWZKl3zz/vOTK7m/SG844HD2Um9B6IRxqDdeNqNNDDmRFYspgq0m8l/NBC?= =?iso-8859-1?Q?FIm5MvUD4rL7YBHI5TVzBARmkXveyO+CodilvrkYyhtdT4nR6A3rz9+UEn?= =?iso-8859-1?Q?r7rNzZg1vs165s3ITIK1IV3Hlj/45/hWKL1nabf0jba41vzzlw2wgnDf4d?= =?iso-8859-1?Q?e9KcnQ0Ap/S51AhISHCT/ETVhZr3NdFjVvOyRDB+sSTT1BPrhtu9WqkNId?= =?iso-8859-1?Q?fY7V8SMovR5h+ABPKIk=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bac6a320-37a8-48eb-8f48-08de0e5d5ce2 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:28.2257 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: viTyyuHCxkWz2PudYxtY6o4I68cZDB9vNtlSQlxoaGpGn2zPZ1W1pCKmXTEakSTD6bK8mczuiehsbriFV527vJMMX23XmyiQ/lAIZUikyVk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c200::5; envelope-from=Djordje.Todorovic@htecgroup.com; helo=DUZPR83CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802442792158500 Content-Type: text/plain; charset="utf-8" This is needed for riscv based CPUs by MIPS since those may have sparse hart-ID layouts. ACLINT and APLIC still assume a dense range, and if a hart is missing, this causes NULL derefs. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Reviewed-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis --- hw/intc/riscv_aclint.c | 18 ++++++++++++++++-- hw/intc/riscv_aplic.c | 13 ++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c index 4623cfa029..e3e019e605 100644 --- a/hw/intc/riscv_aclint.c +++ b/hw/intc/riscv_aclint.c @@ -297,7 +297,12 @@ static void riscv_aclint_mtimer_realize(DeviceState *d= ev, Error **errp) s->timecmp =3D g_new0(uint64_t, s->num_harts); /* Claim timer interrupt bits */ for (i =3D 0; i < s->num_harts; i++) { - RISCVCPU *cpu =3D RISCV_CPU(cpu_by_arch_id(s->hartid_base + i)); + CPUState *cpu_by_hartid =3D cpu_by_arch_id(s->hartid_base + i); + if (cpu_by_hartid =3D=3D NULL) { + /* Valid for sparse hart layouts - skip this hart ID */ + continue; + } + RISCVCPU *cpu =3D RISCV_CPU(cpu_by_hartid); if (riscv_cpu_claim_interrupts(cpu, MIP_MTIP) < 0) { error_report("MTIP already claimed"); exit(1); @@ -486,7 +491,12 @@ static void riscv_aclint_swi_realize(DeviceState *dev,= Error **errp) =20 /* Claim software interrupt bits */ for (i =3D 0; i < swi->num_harts; i++) { - RISCVCPU *cpu =3D RISCV_CPU(qemu_get_cpu(swi->hartid_base + i)); + CPUState *cpu_by_hartid =3D cpu_by_arch_id(swi->hartid_base + i); + if (cpu_by_hartid =3D=3D NULL) { + /* Valid for sparse hart layouts - skip this hart ID */ + continue; + } + RISCVCPU *cpu =3D RISCV_CPU(cpu_by_hartid); /* We don't claim mip.SSIP because it is writable by software */ if (riscv_cpu_claim_interrupts(cpu, swi->sswi ? 0 : MIP_MSIP) < 0)= { error_report("MSIP already claimed"); @@ -550,6 +560,10 @@ DeviceState *riscv_aclint_swi_create(hwaddr addr, uint= 32_t hartid_base, =20 for (i =3D 0; i < num_harts; i++) { CPUState *cpu =3D cpu_by_arch_id(hartid_base + i); + if (cpu =3D=3D NULL) { + /* Valid for sparse hart layouts - skip this hart ID */ + continue; + } RISCVCPU *rvcpu =3D RISCV_CPU(cpu); =20 qdev_connect_gpio_out(dev, i, diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c index a1d9fa5085..77cec8ece9 100644 --- a/hw/intc/riscv_aplic.c +++ b/hw/intc/riscv_aplic.c @@ -903,9 +903,12 @@ static void riscv_aplic_realize(DeviceState *dev, Erro= r **errp) if (!aplic->msimode) { /* Claim the CPU interrupt to be triggered by this APLIC */ for (i =3D 0; i < aplic->num_harts; i++) { - RISCVCPU *cpu; - - cpu =3D RISCV_CPU(cpu_by_arch_id(aplic->hartid_base + i)); + CPUState *temp =3D cpu_by_arch_id(aplic->hartid_base + i); + if (temp =3D=3D NULL) { + /* Valid for sparse hart layouts - skip this hart ID */ + continue; + } + RISCVCPU *cpu =3D RISCV_CPU(temp); if (riscv_cpu_claim_interrupts(cpu, (aplic->mmode) ? MIP_MEIP : MIP_SEIP) < 0) { error_report("%s already claimed", @@ -1088,6 +1091,10 @@ DeviceState *riscv_aplic_create(hwaddr addr, hwaddr = size, if (!msimode) { for (i =3D 0; i < num_harts; i++) { CPUState *cpu =3D cpu_by_arch_id(hartid_base + i); + if (cpu =3D=3D NULL) { + /* Valid for sparse hart layouts - skip this hart ID */ + continue; + } =20 qdev_connect_gpio_out_named(dev, NULL, i, qdev_get_gpio_in(DEVICE(cpu), --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802418; cv=pass; d=zohomail.com; s=zohoarc; b=YsjTnhJXW9KVPmtaPQBGAkZiEcbQOtZWaAHqiv6u/H/3Afrb3MYqpOjt1aerX94qbjP58uheiieM/vbK/telNyjSBMitrwGC9vU5FgRMgAnNci2qEg+xV5t1wP88I08tqMFbeJzMeGt/piyhVUNiAHp1Sh7yUGWK3HQN4OUAbJE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802418; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UqK6fOc7okszTsgPOQ70tF7r7DASSM2TA7sWE/3/rd0=; b=NylQIOlWDQVxDG1v1OXtaFc8HuFFQvMcQg5W2332tUbEsKl6uuokiFGyjy8NA8pF7mVYHY9j2GPEZhVIaJ8atkAsVK6ki0xJ9s72os7U3IXL6nlUg8UeDrMlRfEhgLkrg0/Yy9eKbX7HAWumWptjkAlg4aPczYAUyx31VloxraQ= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802418899723.0922278055009; Sat, 18 Oct 2025 08:46:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA97k-00054E-L1; Sat, 18 Oct 2025 11:45:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97j-00053g-Fj; Sat, 18 Oct 2025 11:45:39 -0400 Received: from mail-swedencentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c202::7] helo=GVXPR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97h-0001Rh-TP; Sat, 18 Oct 2025 11:45:39 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:29 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AxjO13GOkCZctERn/J7tKvC3AsOTtQzsDMQa2tvEQ6zkHa2ekG22W5hZ4OgKtdhGDqMsPehx1GXijnNLOa8HkINpm9QpCyISZ1wTIYOT2dabzkAVQAgiBOkhMUTcCCmy+gIr1clrKtWlz96flduiETG4EQq2d318s2Iomu2iUvCIK5wwClllbqezYqPMAmI5fxwij5i1b+VdR4IW9+Wy96l+piJRHaSWSuZgB/j+l62BPHdC+gKt3I+xeTIhhQS5ST9tv93fq0VCsU69v0HYmW5d0gchGKGmQ4gS1U37MqF3xml8UbKcUMObjHLhCG0lBEDJN/PWvd1OV0nYiDzsew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UqK6fOc7okszTsgPOQ70tF7r7DASSM2TA7sWE/3/rd0=; b=T6lRZVS8q7torqXk2jB8xrgQcBPkGkVgjMckAnZg3z/8/6iaoIFU0rszWDP6Olzsx6RjZ0c8/35wg9C7HhnR3W+53ySKcHRCK8zas35mxYKQOXCLJZPCNGUjLDWL4d0Yxp0i45P5r9XAinMH/E4VJhTKe3iCMAyPF2M+SyO44Do3JnvpxUfxrv8WzonzqsC0E5jXVSdzpPeodMk4kr7cvFK4X5U5x8K4NZBQfjfMKBfqjbB2H9buONWL8EAKpAr3Fkl0boo+chpaaBRSCDnJRDP/1g95wikVEHsxc1YltkOKBwEa5fFS6sXzLjvyvVqO7ce2qvT9pXA3jfjrMfiQGg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UqK6fOc7okszTsgPOQ70tF7r7DASSM2TA7sWE/3/rd0=; b=M6oBhMD5wRA7Z7zKCSpwcHIlc0LoCYuZLgF92OQGrF7OqqkUHyJv32mO363HE15Kfc0WhtEcSVFX/7Vwh8eH4GWu5CABQJNdGdMES+t6PT5fc9R/lBrX5+JelP293ht8WscU3d9bJqzmqet/i52v/WB7UdIX7iKESRTtPStgP+6DVqtoAIi1nwLHwxvW7/QiuPTEkqkS2jC0M3sUmHlY4JK/sm3TD1rcX402ZWRX5BBAbKriHQIS85G6nSy6WCVeifFp+DFcEc2uAxWPRT5OolddWx3xYT+ANis9wRZdpeb0WAdIIfWaA8kEWmvIoMbiMwkwap6U7QtBdax2gJ+d1w== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic , Alistair Francis Subject: [PATCH v13 02/13] target/riscv: Add cpu_set_exception_base Thread-Topic: [PATCH v13 02/13] target/riscv: Add cpu_set_exception_base Thread-Index: AQHcQEY6y4i7j1Fe70uSSzIHQDb6dQ== Date: Sat, 18 Oct 2025 15:45:28 +0000 Message-ID: <20251018154522.745788-3-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: 30366e3f-992c-476e-5d88-08de0e5d5d11 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|7416014|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?tPyNGnYXNMB5mlNeS0zAWqDUYCJA8S56Q5usn+x9l5OK9ARm8VW3cuj0Wy?= =?iso-8859-1?Q?lxiAX2uPJ1MHtKGuMZ6qhKnN439jicFXhijxP9cgGW6PULQ+qPVEihGoWN?= =?iso-8859-1?Q?o/iu1dPcPap5vMmVxREUbhJ7JS2zkuJPdxv67c3gDf6WIlW6saNCx8cCu5?= =?iso-8859-1?Q?FmA2pb4/B1xljMwoHEf0u0PUgiGcxPUsqo/3G37TO7JRF5ce0lY4eu9lBm?= =?iso-8859-1?Q?E9FyamvUEEs6oE+wxoIDFQlCAQxcpAInz1htngiJtfHuPeBLD4h34aXYxy?= =?iso-8859-1?Q?J+8cVY6H1l0jj6ZHzUPFCzE8gdK3AGN5E4X4JMlhDsMsgPCKSjtdznhB8X?= =?iso-8859-1?Q?42rEWxhDquolQSWVS3/PAmSMeuZACXnn30/hZjTC8vMddToT2dPllwASj1?= =?iso-8859-1?Q?bWxbEs9IaODt9AjXPGSJfnWYsJmYKkA1d5vWikZpIGDZiyPcD1vXealYG4?= =?iso-8859-1?Q?7EjUQQAb7XYKvmh0LQ15Y1cQi0pV39swn0kWiCQo5hBBfkf7BwIZS6GqBZ?= =?iso-8859-1?Q?s4n61CTeVwc2cZ2X+Al/Sn/X6nQTJGc6/Db9l76aLw4qVZexjWm9taKUDk?= =?iso-8859-1?Q?9ICoRmiAMheHJCqz44EkMp32nxXKHQmSSw3TW5qhgvp5uGi5khJ6kpW5Vf?= =?iso-8859-1?Q?B1MUTnGTAZXwXf6NYWsRpacteKcRd2Y7fguQSzUKGc7K0nJy+NFsruOiZP?= =?iso-8859-1?Q?mq0NuVWAT8cIX7j4ROroEdYEEePCnXkZBXLrf0SDhjyjzt0dVwvHPh1hWL?= =?iso-8859-1?Q?2sRQKTXLmNcLdL/0a3k8wRA3ktuwdbs2z186LGxhJwFTy7Y10HDI2+6Gbl?= =?iso-8859-1?Q?Zn95kACP2Mun9XINgcTk2Tr1tjDWPCrWIlocRLMRb1J5oA3dAUfEb1C7cX?= =?iso-8859-1?Q?JhwDnf2F2FSOQtTbR0biW0zei734r87+CMrIV6zkh6zjsUcoql4Y7183jg?= =?iso-8859-1?Q?kOv2Q+Kup3f4fbksaRiDBUpfeBrF9ANiRMbABeuNOhzWE+OHetfxuDFdes?= =?iso-8859-1?Q?xiRfo+t0xxaPOQz+mw3vg449d8BmB4ExW1xPQxh/NEGvHTwxQ2DxgAYYxO?= =?iso-8859-1?Q?+V/rZBUdVYE3Z/MihJiR/NpsFvLDmtJFk18JA5pjm0J4r1JYsTQR17wSGH?= =?iso-8859-1?Q?7dnCm2MAblEf8hdsPrGLkVJSgwmUbjiACpW+kg5JTRhtqUApe33o35OXEJ?= =?iso-8859-1?Q?mlj40/1871QgJtlr1kUguGkXFShyVvC8mtadxSUgAAuc1YBh/CUuXn/X5/?= =?iso-8859-1?Q?aSyWCqmftIT3pF7ff3kEkNDr0+fl/PLHM0JU8dOejVNXRk9oWB5CSj1LdI?= =?iso-8859-1?Q?H6OFD8MJJOUCQl+vjnWMVnkucRCi0xOZK5BNATu9gbGJxylk91vi+NpWBF?= =?iso-8859-1?Q?fPXz+mCFOYTyjPgbIthH/6mcsfvjU7461gCRmEEwhdET6Amf3DNjtIGtQX?= =?iso-8859-1?Q?rKxvFKJPuZQtZLCgtqAz0zcfVzA50OXS1jCwdYdA1R6/ikSvq6lgR4xjdi?= =?iso-8859-1?Q?K8zd1iP5Wm5MqqKEqINELZps8hSTRJYCnosb+SVjBXexBl1K+TrvNOMMtN?= =?iso-8859-1?Q?cYFVarpqao8v8Oub3SX7NQz1oTuu?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?L+ufq8exwv+WG0b6GPR3Sz3isVTKdbQ6jb+aRy5KEW0dqdc6mywPY7umzX?= =?iso-8859-1?Q?k1bdWyV8kLwO8hIo318iE5w3BMW22nQsoDJ5piu8I1GW+DErJVVWAwenEA?= =?iso-8859-1?Q?WM6lfrdKNoKyF4PRiB5p1S2aTyP8aCIFEUCU1H85GlR8ayTG4E4UrfGhTo?= =?iso-8859-1?Q?1QBRk930elJ0YNFKaOmIYuE0sFRbKj+ib3nag+n1WTTw3hUGcujrLMhFTY?= =?iso-8859-1?Q?EdgCSqKIG3GyJYIkKtAC7xBGgA9PHitOWTh3dYQIMfX9eQnL+CXofkC5GK?= =?iso-8859-1?Q?CnxxRsNyowZdS9L45Pg2+mb4lCqK9kaWXT7jd7Dzwmm+jBEXicHczAlIQu?= =?iso-8859-1?Q?GzUuwmeIK7dFsnoYdKx39V7YUA9hWACLhtfh+cLiOog0iGLCVruu0C6fow?= =?iso-8859-1?Q?YZGEElXWgRMeUHP61/GIhjHl9BBqEfEX8X5NwScfIujYNC4/MeGBVuCqzt?= =?iso-8859-1?Q?BrX2TOxz56B8/Ne130bpgbABzTNPCztHh7/lg9qGPMkRoL4UspFQF6MFk2?= =?iso-8859-1?Q?5YhgFcCqMTFEwWP1K2gLBU1iFuChvhbTn9VZoKxJAhN66juEGWA8dSOwON?= =?iso-8859-1?Q?dgOScF/jj66P8k09mWnPRhzYgMbS0JmVkkI+umkvnkaCN7NmVnaAXNO5vl?= =?iso-8859-1?Q?0k+WIhnS6Z7ojWsSH2eNpaH2mYPdy+RnivUdW4H6JUdwt8rr1mRHdf+GM+?= =?iso-8859-1?Q?nczq10hYgZQwsLE+DzCzRpemOlbFBTCX7Ci7HF/EckppyJIZPWVzfuWX7H?= =?iso-8859-1?Q?wD5ssQ62QeQzRtRLtDjrLzVN+sjbiShEfRqL8fubDFOr0O5xLKfl4bjTFT?= =?iso-8859-1?Q?bAh9ti1uhKY1fvIzZ5QE5ua5pKWd3vKr7ZqeshKMswYO0gYZw0UqZJUBC7?= =?iso-8859-1?Q?po523l126OoyFA0LeKMEqgIGKsvVUPpL2s3qlhhmcMmNhsKj5ryuC0Dbbx?= =?iso-8859-1?Q?kr/TEOhiMRiDnYLTZbs+5iWa6EIIRNAKNVimWqmM93SZWyjdKRbNUTpDHn?= =?iso-8859-1?Q?szdO49Trf0FiIljiT6VqN64zU0m1QY8FDd7F21EQjVCwx6ROaHfc2mjB+k?= =?iso-8859-1?Q?FStgKskvDrrsfVW7Fhpt6WLFV/0+eO06vspESkhhn1GP+Mff8PplPoegjq?= =?iso-8859-1?Q?U5efZMzjGwPkGWj/RpSf25xTCyqa0Hg56HHLcwkE/g26H8Kbjksw3C/sx4?= =?iso-8859-1?Q?4CwdY/ikTSnNcPtKSXKbj7UqTQDXzRFzwXBmpejskBKgX+c26Wurof8+WK?= =?iso-8859-1?Q?FRCRYmfqLq39QKBf6r1JXMlaZ3zfch7ntLa0TpUD2leUNYauD01xIHhKOh?= =?iso-8859-1?Q?nLtvMSkdiCErnRxCamWOQ9TFENCYm0hLAjy70TkQzoPvitavroXDVsIDbP?= =?iso-8859-1?Q?lInttXU9GziZ/k6b99uDFqF3VY9yWk2V0Ec+g8zrHm2R4A9XeT9Ekft93T?= =?iso-8859-1?Q?ZNNLz5NQOmCswWzqDychENb1pCa1NNoe0KyzWnD3glel7Wmez4QebfG1hP?= =?iso-8859-1?Q?YI4ssLBGgywkJUjzxDvoYNaI0rTpwHYzf2+Mfn6sb8PaleKBROCLbyagfw?= =?iso-8859-1?Q?xUTIKYz9Hrdog5Ac6APfz59I/nZ0EwEtb7EfC/24UN7NU499lZfNh27VxC?= =?iso-8859-1?Q?x1tSBblGbPv3rT48zESlCflbiDB0DhgfxavDgADy3JLI4aWYZr2Gt5wvIN?= =?iso-8859-1?Q?6eiyTsVs7ybCw1yvRfw=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30366e3f-992c-476e-5d88-08de0e5d5d11 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:28.5875 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8oXMlXaWwBSVADMS2GMqLDe/LEmseeGZk/UaWPuXfk2ZtA3HMgEgjPvR6tiZZWRcpE+eoPi8dwqOp/6vzSaSRfUjnIDBpn3SUunJYKEwUrw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c202::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=GVXPR05CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802422479158500 Content-Type: text/plain; charset="utf-8" Add a new function, so we can change reset vector from platforms during runtime. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Reviewed-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis --- target/riscv/cpu.c | 16 ++++++++++++++++ target/riscv/cpu.h | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index d055ddf462..7932ba6873 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -73,6 +73,22 @@ bool riscv_cpu_option_set(const char *optname) return g_hash_table_contains(general_user_opts, optname); } =20 +#ifndef CONFIG_USER_ONLY +/* This is used in runtime only. */ +void cpu_set_exception_base(int vp_index, target_ulong address) +{ + RISCVCPU *cpu; + CPUState *cs =3D qemu_get_cpu(vp_index); + if (cs =3D=3D NULL) { + qemu_log_mask(LOG_GUEST_ERROR, + "cpu_set_exception_base: invalid vp_index: %u", + vp_index); + } + cpu =3D RISCV_CPU(cs); + cpu->env.resetvec =3D address; +} +#endif + static void riscv_cpu_cfg_merge(RISCVCPUConfig *dest, const RISCVCPUConfig= *src) { #define BOOL_FIELD(x) dest->x |=3D src->x; diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 4a862da615..34751bd414 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -672,6 +672,10 @@ G_NORETURN void riscv_raise_exception(CPURISCVState *e= nv, target_ulong riscv_cpu_get_fflags(CPURISCVState *env); void riscv_cpu_set_fflags(CPURISCVState *env, target_ulong); =20 +#ifndef CONFIG_USER_ONLY +void cpu_set_exception_base(int vp_index, target_ulong address); +#endif + FIELD(TB_FLAGS, MEM_IDX, 0, 3) FIELD(TB_FLAGS, FS, 3, 2) /* Vector flags */ --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802390; cv=pass; d=zohomail.com; s=zohoarc; b=b/gn7CPnNjiqtH2+HGJkHhN0YChfi9wEo519gBM55IRuSyCF5X92DhZH78+BL1NLEEAaSESTRyg1paiCWVl4sQkkC3pbkotPG5/hVvnY1hH28TRbbVZCcngQLKFxDTC9sYc1HgM068YkUghrKd18+eC0Zj+hWOIlSYCqUqMUQNo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802390; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=D4KBazVfEid2gaSPREfx/zq16YcEM1woDFNWp9mRo40=; b=ZD1ihAWv+daDHthgPfKCSDie613nj/D+PGBfq/twO55JgrpqIXBFIra1BYYYHmZls1SvhNZMELcfDe8EOs4AQu9/oy1M421M+JOaIiGjgWPUAcYIDu+gDZ2L1R2ndQmbO+J6AWdRrtZPbNhlLY213vtrkMuZtd+Tg9wWrpxvqCI= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802390412958.7202916403127; Sat, 18 Oct 2025 08:46:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA97k-00054K-Pa; Sat, 18 Oct 2025 11:45:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97i-00053L-Ic; Sat, 18 Oct 2025 11:45:38 -0400 Received: from mail-northeuropeazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c200::5] helo=DUZPR83CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97g-0001QR-SU; Sat, 18 Oct 2025 11:45:38 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:29 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=M69fwIJ/2TTPYW1RoM2RIeY8DrxtWk4a7PbZI+cxm/sfNdPeK2FvRYFVQZeFekG4o0PCuT7c+0ZhcgzLVvNCbvZVXu7b6wcov1WCgoTb+vcaWpDqVxaoznV4mJKIaCWN7ufNMMI9U1MaIYLVKQjyo1O5RBt1pPUmTwgqxakYuSxwgGsj0IyU1ReIObq/Iq5ww6RnpP4ikk/+XbMWyqeXgDhhj5lNpmIkxzG2V6bTDmVVJgEYBAqFNhA9kg6uUJ1UxCV9OybPclL0mXortRcLlxpVp6NAk31aLLyVFSzL4n30GxgkM34iQ0m6ycSKGmd5G2EvV3MgrKJXFKei/QT/Ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=D4KBazVfEid2gaSPREfx/zq16YcEM1woDFNWp9mRo40=; b=EEkZedU89t0wTxJBNiB8UJujHOTBQXj2zJJguHegohS3MJ8c14rAdc3AhMC2/24r0k3glYBC2U8k7IJMnEv3DPsWJaIMC9pmUVsgQ5Be8aLGIpsF4DNPEzUlMhUFR9DCjxNxIxpjGOHeUxPlhGVyqTGoQBoG30l6kcC5U+IOBWvI1iPXdZSHSXalY4p2dz3x5FsHIgLbB4ryqO/3e98NuHkFaL9njvcfrbuoB7jRtMc4aGkcQ0rvXs7YXlJxvbJO1lyj3kWx7UGspkNgriBVL3S2/VuRqTbk0L7AJc0dp7EZn09kib/BAd1U7v9OC5drly5U54XDH9MT4HOz55d5/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D4KBazVfEid2gaSPREfx/zq16YcEM1woDFNWp9mRo40=; b=Im0caYabnHVfs1cbIZvbtNQm8gWAbOWdKu3+7az756CRfxO2uFtRwllziqngizpM1yU8CvV5d/FpfZkmbaN931NX6couR4i0yiA6q8gkZbARC3UM1R8I9IHtw8eH0CeRtC1tVTOwf7WyoiWnx3r2Vowv4ZOgN9bPBge5HprvGLlKQRKOk4E1tjMFfarJfwiOTgTLadMNr92nfQOXv3g0e0aT7rBfCCw1DpupEGtvLVwTVJCA2Sm/rt1ixLuXtUwxxLegWpWZPBkAfpmwFyWXkz1gBaJyW7Ife1H4U2LjOxjuRtixB+KTXE6c+X8bq+O/FP8N5HxYMBIvhhAofS2Akg== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic , Alistair Francis Subject: [PATCH v13 03/13] target/riscv: Add MIPS P8700 CPU Thread-Topic: [PATCH v13 03/13] target/riscv: Add MIPS P8700 CPU Thread-Index: AQHcQEY6DLh8r7v0MkewXYiPPi+bxQ== Date: Sat, 18 Oct 2025 15:45:28 +0000 Message-ID: <20251018154522.745788-4-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: 5eb43c5b-61a4-4b95-34e7-08de0e5d5d31 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|7416014|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?31O9zh5dYQLSW6KN+UCaYMrH1JRf5RSh0YVjwt9YO7zPYY2zHv4EdwUzOb?= =?iso-8859-1?Q?RuGpA7CydpOpe1zbfp2vwJ2ibqE2we64SuURpNJbzhELvf6rY0r1aljBxu?= =?iso-8859-1?Q?/ffj8GFMJzBOxdK7khjhtzYSXxXdGN5g5S5xwykIpVWdMFl5Q0Md14hqi9?= =?iso-8859-1?Q?85ZmH/YB4z3rIAlggwSj8kZAGiIARirsW+pM1dhBEgTL5OpzDDs2EGvn9/?= =?iso-8859-1?Q?3+ai7b3+9yQzV2gX4afj++jLiMIdqYkLFvvNgna9ouSzjpM6GJZZw+qYHD?= =?iso-8859-1?Q?5ccybouPOvn1DRJcD+S4agG7ZtOybRIc74fN++aWFn86kWo63kOCcAZs/Q?= =?iso-8859-1?Q?tewWLE/LcJTq/lxRJfohYTcl/qReizZefDTJp82+MUKN/5KuQg+owLZY2v?= =?iso-8859-1?Q?VlGzFHQzzbxyUq88mZZxSpuhBu4+Btgz2m+zm6y3E7QfXniVVgHGMmo0y8?= =?iso-8859-1?Q?1e1NAtqjx9dmw2W/XD1mmXHw6m2q3PabvSuEFxt1tiEEFRfOk7NkW/TWOu?= =?iso-8859-1?Q?ZDHHFJlFISZ24e9lWtMsx0ZqzFCrli9ik6IEv1nHhAl5R2+tUFADhnaMUF?= =?iso-8859-1?Q?T02AC3OpZguttknGfHCYZw3xUvCNoJ1kFPv7sRuD9P8Yd/v4bY0qu6GZC7?= =?iso-8859-1?Q?4UdI8HDq2BbAFsUFuctqjegFwOCRi66Afc6E8bHuRo4BFWOkQk96pBPl22?= =?iso-8859-1?Q?dZzRAs740liNyEqrTSlKMH7QG+wc7vFr2nGfYuZFYNQfR+LEAhzyRFgmr5?= =?iso-8859-1?Q?MD/rjssvhypDFlIMJoUp/kh2qyKH8GKKnWrP6RmyIGHKCub5p8ZAuy6Xzf?= =?iso-8859-1?Q?rFPWNaFxx8ohkyaCis1ulI4D5Adg8Be/FmqFVn0W00lfQ/s0H2tm0C7Q+z?= =?iso-8859-1?Q?QqOz+5rzDZL6c/DbvEbMzrdS5W/EToy1uRChKC6gxDQpj8n5QNFuk7RzX6?= =?iso-8859-1?Q?E5vjVmG8ItUTssP/y/WEJALFMM1aJkF6XChX0yhHGfsTrTDLDR0oCTq7Py?= =?iso-8859-1?Q?omXiLT8/l6Py7J5LeDymR18Gay3yphtsAKHIdLs5R7Kfj+yBcoQwrF0p+i?= =?iso-8859-1?Q?w750HR6030uu1ISgG+8P9sfF7yIAV76SOycLheDnLNqbtN8pCVDa4HH5QA?= =?iso-8859-1?Q?zbPX+D9Eh2/DTk4vrbh6MwSR5nXakBKxfYwTsTszMcO2lartRP8CV/JFbd?= =?iso-8859-1?Q?gayBFwCXq3awIcRl4pus6hsTWuefM/xbM/YTNMKf1YzKDR+IW3VNjowZMp?= =?iso-8859-1?Q?gY504gZcB9OfkNIBwmqrAITJMSJOgveWUJrCoN9tO4oJMBrlHGjCgiwq2b?= =?iso-8859-1?Q?d+nyScDfWx4Gnrrvd7fP3OJZnFB8fkjTonez55K2yxCyQrBPd6MWQsjrY7?= =?iso-8859-1?Q?Fa8B+NuN+EKsz1SEAmT7+FHAPjQ1QmFt75/midQuHICC5ioKnu1nl4bDgR?= =?iso-8859-1?Q?FtCyhlmNkTUJhulK9mM3XaKNK2d0evGNzu126wAzZt0HFgy8fH3R20HFeP?= =?iso-8859-1?Q?F1gR+aVGtSzhndNXexPL2dMw270MRcEiqDcz8KExEBsDnJOLnoiH1e2U1/?= =?iso-8859-1?Q?Ct5iwTyBVAEtPNTrBzhyrQsxa8bK?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?xyIX9tHwOdYk/4tQjHTe2I+EGu7DrEG35bk3bEHzqxCCwnV9P8Y1rhaOxT?= =?iso-8859-1?Q?89Ltx+Ot+dX9AOUZSVirHGRle/eCvvD6byb4Pjc7BaWCSLBW6oO4lS1ZVa?= =?iso-8859-1?Q?HaAN2MFk+C/iCIE2DKvPzw+rFSacP+8ZWdToNZb9/GH53rMklATqU+AtGc?= =?iso-8859-1?Q?JUsNb2LxQOqUYngzgiGLWqN3gWEC7iPJdBeOovtVtmyCZ8TsDv2pPrXa8K?= =?iso-8859-1?Q?SRv/+V9OXmvZP0axJRq24f4cq2gQeSWcp2UFpLVyzvR3FIuVxL9WR/f5yt?= =?iso-8859-1?Q?+HNbGoBlEvdUjyOTvWlMWu/ErsScT//YFNKxOLuWXqG7gojW6DcmCWkU7G?= =?iso-8859-1?Q?HDg/E5uKAJbrZsNGZ5KFz4O9PXBknchoR+cHUKnNUC3jwbGU9N8wkVZSuB?= =?iso-8859-1?Q?8Ux6uEPgd/G0HWUS9XrRoE5qo8TAus/JS/nNtAYvtz5QycFPWwY1UgkM1N?= =?iso-8859-1?Q?dyH3tI0djV54dkEnFrE3gRRzV8lPXeJIqrAVJEmr9CcqPzt9nEncvkXbO2?= =?iso-8859-1?Q?wKpgV+sMK+MRlU6LYAHBX3B6mxr7fCiVivuIt/IOMqVc3ikb9IUCyXyqNt?= =?iso-8859-1?Q?AtONSMxI8ncT9+tqpzDNTdMSTCgWZIaacWLZPqimdE5UNORsVxNvCbbXLW?= =?iso-8859-1?Q?Vd96yHtYpKxtE/PB4le1enoTqYHQ7jRlqJ4UJcYiImKN3jfpI++mhr3/PX?= =?iso-8859-1?Q?YsHi0lIMkNaIZklxCbSugFIeCeFuRVRtGac5dHeXgSTcQ9f3+J1bhSGrVV?= =?iso-8859-1?Q?CyBo86zIy/ioQXdOyWIoOX0kKWa6JhdR+FilZ04iSVLfF8XkJmiQeXz8ps?= =?iso-8859-1?Q?dY0dF0u0/ofeN6zLayvpRMAMWWAOj5gab05cbi2pwUUf74h11v2PrBofos?= =?iso-8859-1?Q?n6uOjXoE72ReRDT5dd0pQ2pX47uAPuyE2bxqyCQqK1eN+4FkqVvaENxMpB?= =?iso-8859-1?Q?Yr3Lwq4ugOOgR9ZGyC9Y/lKScWNqpXvPn4MjECyIN6/Mjt/RZN4LumzCsA?= =?iso-8859-1?Q?gPbx8/7yiSM4RMFPdpoO7QgNF002+DT2nrwZQXyuzT/tGxwN/ce4jyCzm3?= =?iso-8859-1?Q?QosfWlHYMbPVTpw18B6KAkVSnIDt4NDSUlqCwYsPYUeWi88drphCjOOA/y?= =?iso-8859-1?Q?JyKJUSdizYdO1CPnWUn3DzJ+rKsfi7JSOusZyvEzm8MR6DqrnrKEsM9PpM?= =?iso-8859-1?Q?XxTeDuaBRP8g7OGg4aLLQKwPG6A4ncSsLjMVbGzdJz+dr+PpTxAai3ohCe?= =?iso-8859-1?Q?be/lR2DLN29Bu+akRfQBLgm2GHth7pCdb3MT1rPmhKBwI4JGegS7/x7VfD?= =?iso-8859-1?Q?q37Dqpxkw5Z0TvWX5HusyNUGtEdSdGv0wGgezcHE286vBT68Bu/R3XipNf?= =?iso-8859-1?Q?mO0TvfVBbiGD3Hy8VUOjquvmVo9iYcAVHd9JLP6YO6rw7wnbpicjM+xtWz?= =?iso-8859-1?Q?OCiUzRc7FGqHGdWuav93MSE3q3b+LZLcx/ZUm/jlPU4tO51/JR159OXLwy?= =?iso-8859-1?Q?Ujs63idWwjmN94iWjRt9SfUdHxCYz3XPdoavOXhLWoSA5tuVgoaIvSspSX?= =?iso-8859-1?Q?YV+oJiFA8Tavk7fHgnly8trxpjlCt0TjnNX7wARVcOlyF8HlEzSWoaJGSy?= =?iso-8859-1?Q?EiPiAfMRLjOBTqCTqx8buk4MeyNZY+bE6PVYV6n1OSHUUBdKS0QJqzdYN6?= =?iso-8859-1?Q?AqRhyI43z5DWZI/9zKo=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5eb43c5b-61a4-4b95-34e7-08de0e5d5d31 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:28.9163 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: m3nUIU48tIiPJ7uQ5S80QE7rNzALDo0jakUGod8GUfhyjDAIiRfP5+PzvX8O8DKIdZONykh2V3WpSddr/E2IoSSPX1cnMjIce6D9hkaWZ0Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c200::5; envelope-from=Djordje.Todorovic@htecgroup.com; helo=DUZPR83CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802392094158501 Content-Type: text/plain; charset="utf-8" Introduce P8700 CPU by MIPS. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Reviewed-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis --- target/riscv/cpu-qom.h | 1 + target/riscv/cpu.c | 16 ++++++++++++++++ target/riscv/cpu_vendorid.h | 1 + 3 files changed, 18 insertions(+) diff --git a/target/riscv/cpu-qom.h b/target/riscv/cpu-qom.h index 75f4e43408..30dcdcfaae 100644 --- a/target/riscv/cpu-qom.h +++ b/target/riscv/cpu-qom.h @@ -56,6 +56,7 @@ #define TYPE_RISCV_CPU_TT_ASCALON RISCV_CPU_TYPE_NAME("tt-ascalon") #define TYPE_RISCV_CPU_XIANGSHAN_NANHU RISCV_CPU_TYPE_NAME("xiangshan-nan= hu") #define TYPE_RISCV_CPU_XIANGSHAN_KMH RISCV_CPU_TYPE_NAME("xiangshan-kun= minghu") +#define TYPE_RISCV_CPU_MIPS_P8700 RISCV_CPU_TYPE_NAME("mips-p8700") #define TYPE_RISCV_CPU_HOST RISCV_CPU_TYPE_NAME("host") =20 OBJECT_DECLARE_CPU_TYPE(RISCVCPU, RISCVCPUClass, RISCV_CPU) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 7932ba6873..cd4e442bdb 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -3283,6 +3283,22 @@ static const TypeInfo riscv_cpu_type_infos[] =3D { .cfg.max_satp_mode =3D VM_1_10_SV48, ), =20 + /* https://mips.com/products/hardware/p8700/ */ + DEFINE_RISCV_CPU(TYPE_RISCV_CPU_MIPS_P8700, TYPE_RISCV_VENDOR_CPU, + .misa_mxl_max =3D MXL_RV64, + .misa_ext =3D RVI | RVM | RVA | RVF | RVD | RVC | RVS | RVU, + .priv_spec =3D PRIV_VERSION_1_12_0, + .cfg.max_satp_mode =3D VM_1_10_SV48, + .cfg.ext_zifencei =3D true, + .cfg.ext_zicsr =3D true, + .cfg.mmu =3D true, + .cfg.pmp =3D true, + .cfg.ext_zba =3D true, + .cfg.ext_zbb =3D true, + .cfg.marchid =3D 0x8000000000000201, + .cfg.mvendorid =3D MIPS_VENDOR_ID, + ), + #if defined(CONFIG_TCG) && !defined(CONFIG_USER_ONLY) DEFINE_RISCV_CPU(TYPE_RISCV_CPU_BASE128, TYPE_RISCV_DYNAMIC_CPU, .cfg.max_satp_mode =3D VM_1_10_SV57, diff --git a/target/riscv/cpu_vendorid.h b/target/riscv/cpu_vendorid.h index 96b6b9c2cb..28f0ce9370 100644 --- a/target/riscv/cpu_vendorid.h +++ b/target/riscv/cpu_vendorid.h @@ -2,6 +2,7 @@ #define TARGET_RISCV_CPU_VENDORID_H =20 #define THEAD_VENDOR_ID 0x5b7 +#define MIPS_VENDOR_ID 0x722 =20 #define VEYRON_V1_MARCHID 0x8000000000010000 #define VEYRON_V1_MIMPID 0x111 --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802432; cv=pass; d=zohomail.com; s=zohoarc; b=UZwl/iX0ouQbJNinBj2lsT7hKLvrj9xu8tBrBNg/EhhrLCGnKllcgQYY8sRwpCvUkABonxXSOUNiXp2t6TlekmPkiR0sr3iSatL/W66M9DprmL/AvHtZxCpajL/nKZik1BXsR/NiByur+RgMmV48ENd+Ef03MyvnwtGFdDpTsng= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802432; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EsPu9btCbW7DSJ7NChZhc6fp7/pC8mUVVI3PCreQbSw=; b=b8vE8rpYOFPJV3ex0pRAEJzf/I83GC35boE1yD0Gugpg3bD3J6aURqT2vXTcjg4qRICtRudrY3b1eRrRjIUb1O4ELDMU21QgVRLzfiFNdz/vLIgh+ebYWJYSq11dJpatWiY3mCCQz0NQ893wsI8wWXNrO8jXOd31HznwoWW14GI= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802432477488.4066493390768; Sat, 18 Oct 2025 08:47:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA97m-00055Z-D6; Sat, 18 Oct 2025 11:45:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97l-00054l-5U; Sat, 18 Oct 2025 11:45:41 -0400 Received: from mail-northeuropeazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c200::5] helo=DUZPR83CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97j-0001QR-55; Sat, 18 Oct 2025 11:45:40 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:29 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YHoPgNNF0p30kZBiB+AJA7WLO9UCCZEaQ9oGnBVAAKNfhoAbAXJwwG6eJFWk0iXw29akQZw5nNv3Y6A5i0VHpYXlYdyNBzipk83JNJv6aeQ96TlvBnTNfPYL6wAXZZKFl5ETiPv7/aVJ61RMF2/k6meBxFslt157l2GU0aEWJS6WJzoB0MZgsxzOug1WOj5T+3l6D+6YnlG5vx02jbqr4jq4h3EATf3IM5SGVXSFLWKr6DLOi7DjqZoz74fy5pa9nUzdNFysU6yVPf1X+JyYmz9mdTQ9w/vP2N4jnAgJC0JO1L45eKUuh3tMG3Lfwi+HhveZ9AKTbJPk+63yIKHMnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=EsPu9btCbW7DSJ7NChZhc6fp7/pC8mUVVI3PCreQbSw=; b=WbUPMmIH5ZtXUiYPO4qAfM+Z5wm/z7jrNOsOaBih2sqt/HeYmowVxYA9aQtTKbNwyWYar998hIKKd56V3z+pCAPLdIWKG3ZMUiB8p3yjct9rMF/yuOaRAZXPdkTCznkHBdKNUaiW+2jHLaJQNZS0ix0I5VIizru6zI4XLGrz50XGTjDHszyOw04Arjtu73KRvaphkcXZqArSZo9Xu50orfWggbdgchDInsjnCHJkPLvawG9p+2aVPqwkVkMwtR6hKzLH9JHbANlQTs+ELfEAnKn2FWkQRWQb/kPJqm5+l3NhbdCEWvOMltYcAA7hOCc+177BpvdJeK44Ae2aY34Deg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EsPu9btCbW7DSJ7NChZhc6fp7/pC8mUVVI3PCreQbSw=; b=aBY3FVd7boJV2XANThL2MI5lbhj3psQRWb8hVm8EZcIajMJLmWoADfbtXn9OZk5mRWvJyOhxEz3h6eHFm+LYxSsURZt6l9/6rSztWyDlY8Xvh4FobJOTo6pdCLIoXrAEXfsSa7ica4SZ6zUYKZh2z4Wag5rin4bpLyHjABJySUabXrvIQ2DkDCCkXmdqvn8zg2OnE8aXGz4mjCcM642wGKBMzXnfmze2Tu1IKdTqh1/2bTA3Q2R+QysfcinhU2k4bNsz+ut+8NHKLG3ADxD9qOr7d+qyN1k+oBOHXNvMFvfPR38BjFCqVUbJIqaH1RiMSmnVxDm/R5MFLMSJ0VoVbw== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic , Alistair Francis Subject: [PATCH v13 04/13] target/riscv: Add MIPS P8700 CSRs Thread-Topic: [PATCH v13 04/13] target/riscv: Add MIPS P8700 CSRs Thread-Index: AQHcQEY6MOnKyz/QQ0Glk6JMNyMp2g== Date: Sat, 18 Oct 2025 15:45:29 +0000 Message-ID: <20251018154522.745788-5-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: 2cde611c-f284-412a-b03a-08de0e5d5d54 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|7416014|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?ODj/x3fAf1NkAwH4/kfqwi8lAVcVo9h82qOdM/oPD5bdYKbap0GwQ3RgeL?= =?iso-8859-1?Q?Ts0j23D2noqUCC6MXtQ9Vr4EbyTUby8P/aBqI9A7rolWvORURCHExR18ZG?= =?iso-8859-1?Q?y/2lB7YSqAzs4AAZqtwMHsLCX8k2KHfsv9P99Ks58S+0PEGniYNgmfaaE6?= =?iso-8859-1?Q?O7EJiMivWCN44di1sVulxZ8Hz17oNbvnOMjuU25omE4g+WqxqM3LFSEoQJ?= =?iso-8859-1?Q?Z7S3z3tLNjldZvzkJ98Ckn1lzkGXtfxH66wTms1XDeK+wnF6V0VCf1WUnV?= =?iso-8859-1?Q?LLTaCdftVFajFEX0CmLnB45TXcp66j6kdc/GK9FeBLMjmzOdi1RZ31ra+I?= =?iso-8859-1?Q?a117Aaug1UFlq/Cj4CVHfuMoV2w4XMwxBFf5jB6FG3b54oTF2RcFqAKRlE?= =?iso-8859-1?Q?xQutO1Vg79MX2DQnMHbvLUy2K58DRmU8pjAUm4smbkKx5TUD3rEYjqV9n6?= =?iso-8859-1?Q?0WpyoSyZgp6BZtXg34w0zWJHQbZm38xgITVhLEXPVkFf3F4LBuGQ2KXps1?= =?iso-8859-1?Q?HZCt1FUTZRiaFw/7e8nPo7NAHNZa2UoioGYVOOttCrK2H5VUjhm2Ah8dPg?= =?iso-8859-1?Q?y5e4AyMxAbgYVDWorhSXzrtelxDBTYCRVLlQksQtwQabMQwyoFlQTT6ZFz?= =?iso-8859-1?Q?wZCBuklkRDW8cYWia6RzvCMbz0dzedwryI84nMuRVoyCFnmErm979nXuRj?= =?iso-8859-1?Q?2j/gAO3MoXR0sTtZQrzZrQz8BD5JSjFJHVzgsoemfTqOhPz3tb5kGWyLmZ?= =?iso-8859-1?Q?d/YhwhjN17RanqENPg9bffoShVJWVuCdzWtcPIIg2D6E3GQkIE/kPyZw9D?= =?iso-8859-1?Q?J1ZBo/TNCu6cZk3UWVdiEBmxe3dMxJ2sXo/dX9q5orAtoNARD6YQ2c3UgF?= =?iso-8859-1?Q?PHLue+SP862cm69wBEUdm8ezysHchCeYvrynG8EJX88O8+PBVOUGyQ96Jh?= =?iso-8859-1?Q?ep5c02N+kAZB59vxM004aZyEdh7PYmzyvFAvMFizRkKoCk9+vqZcmhUoN1?= =?iso-8859-1?Q?ISiG9KxX4qHFt732jf0BOyMLBtBWaFz7/UPvUweKDEejzroXQjsMeAh19n?= =?iso-8859-1?Q?rchb/KDRVC03P17EUSIpGtNKYFxs8LMJOMPlnk+bD1S9QxVKGujhOOIjQU?= =?iso-8859-1?Q?fz86Dmhkaox73S9OljFnTuP9jKjQJ597hJMc/0wykygALBtJ7hftPDZhjP?= =?iso-8859-1?Q?TxETZ2b7sXxD7Yd35ckEMnfR8DeHBe8I/h8JH1II5AKQn2wM4eyNKZhz2c?= =?iso-8859-1?Q?7ww14RzK9ZOMkXPjIk0zMIbI+F2D+2PQEitWxaKgwetFc47eGWbhxfjSPV?= =?iso-8859-1?Q?3RV+vAshyPM5RH/Ztf232sRg5/PiV+xi3prEu2I7Sz1WU3JtrisLTVtoNU?= =?iso-8859-1?Q?MvuA9KeQErWEgD68OcHgSw1ZyuPlJKOdgHMMaZwI5tQeTibYVwoOiaDSr9?= =?iso-8859-1?Q?FS7mcBVaAdbR074Fb8bbEAak2Hfq7hSCIbiYVbhkc13r72BdpP5LQxUckX?= =?iso-8859-1?Q?KmU5OR/yFr+/nxVHNw0l+epCfMoIPpK178MHaHZTkblVm8crdIuTfBO26D?= =?iso-8859-1?Q?j8HeLczyPfd8RCsPzYwbhr5HPy74?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?u95IkwslIRjzvgGkR4G3VbRgG9tPXKu7ENxPXcCZAsd2NZRsaU5JiS9jq/?= =?iso-8859-1?Q?TDfnwxpn9GO0Wt4s2jgLAMhTOA/nzpRIYLoEKClLTOfcShz6KFYRwiEBdz?= =?iso-8859-1?Q?1Qz99+k7M49ZgLLFYmWE0iKzX4+y1ptIpQW0JFaS//lgMjvTl/0wLJFm00?= =?iso-8859-1?Q?2r2h+fa5IYuf638a3f6sv6OLAe7pypB+sVp6zPBIp2OFz+Tbog8oaGrpVr?= =?iso-8859-1?Q?Uwdd33DWofh4a6iI6rT5wlDRddtIvKG8F2eCglsl9K9MM7pTDnRuNQdXhD?= =?iso-8859-1?Q?D7taRdpyTHjboSKLlkcjORdTbdwsM/jPlMGjDMFK5xA3AEhMxENVfkmvLS?= =?iso-8859-1?Q?E644Vq4Ces/0yVGJcFPLfMznpEE2Mw6JJPaCjd3fNUrOoAy4E/EHYb211m?= =?iso-8859-1?Q?jPr9HyU/S1F0Eco3psmwHvx537fj0uMGZIw+KYuQF5crTeSP2K9nyGs0UI?= =?iso-8859-1?Q?UfXEUejZzolJjjEvGif6kutATNoxL31UA2nJNptxEsTz2ACh9MTEcbWVJi?= =?iso-8859-1?Q?v3VhjH5ablG8e4Hk2HdBH1xUUS1Y4A32iJRaJz0iHFbwsg3AggOabqdEFL?= =?iso-8859-1?Q?CE6XmwUG8V18xjX+s8jJxShLF6MUOayfxALtvC4Ns5vF6UTFHdz6GpNW0Q?= =?iso-8859-1?Q?zu2LD72/fFJpWGLaVaZVjzGsZMjc7Xl5GF+Reskwu9DRFRz7+vUYMbiBNi?= =?iso-8859-1?Q?5tA7C/PLsNmCVuehx1b0Fm9S68e2el9d0MilOFRrPKaCbFZR2RkuoYJh9O?= =?iso-8859-1?Q?sQBBLvzjzMFPeYwTxqGpTGL3m9A6paUmcgQGJum4jOCRz/ByADWPL4qRM5?= =?iso-8859-1?Q?oEjTeEvd9/JZMZxj7TGACTwwgnAccWMUj+31Ap1nTgR7r3LE+oG9GyxHO5?= =?iso-8859-1?Q?ta0VWV64AcHj0NI5EqdtlVKqKKyoiS8kbUSj8S8J9tJ7Yz5xRf1nB98jX1?= =?iso-8859-1?Q?7FKpXYDkrvq5BEMG7Cv800CM7h3mp93O/Jk6N0p4Zp36h+bkwOfXIROZeN?= =?iso-8859-1?Q?q4CYinW42KEWSaRP5EDBbqs+/yZewiuTDVif7yOjZJzx6AF71DYhnOUvJN?= =?iso-8859-1?Q?vtNfBHOvmtfBQhRvmdK9LqGzS0jh+hUG/z2+GGx0zoMrl3rgabQ4ty1CIf?= =?iso-8859-1?Q?ki5xCRpO9T/EMf8imjuxOLA7cjlzhrB4bZn7SEz5NDwKlL6QfJJfoV1Ml3?= =?iso-8859-1?Q?YW3B9QoOuAk1xKIWxbN1c8NcUXhnfJL6dWdIJjXlEQDXP4v7p4Fr97YNen?= =?iso-8859-1?Q?s1VnArwBOuYKCqVVQ5vZpdle5VCEzxmGauqyDXaVNwxCuyBMmvL1GcA3ad?= =?iso-8859-1?Q?T2jp+2AMOmtguizRKzXIBKF/VYVNEnRkc1NudLzaA5F48q+3OV/kX0N3F5?= =?iso-8859-1?Q?EGqp5moW+qsWLtN+G8l8ZmEXUQMs0xg8Q89viZckozOKczbYdI1UB2K17o?= =?iso-8859-1?Q?IsO3jntIzyUw7yEN43jtAMqVpfPW68b4QjcxTChpLHysytU6pTE3T+oVbt?= =?iso-8859-1?Q?tUFPsxVOBrw5AQO30dfPrSucYpKebylGbqXxPsRCANQZ3X0AKb161d2s7D?= =?iso-8859-1?Q?1pjxQALvjMZb6PHXyV//pTR95vpI1EKB9PrSEv4IwkJB1NgJMwbs0RDbwX?= =?iso-8859-1?Q?gVcqin8idSGlg0Rw9nsOkkj9K4CykoAFVOyuj4Rb4lzRZ+itY1v6PEe0Qo?= =?iso-8859-1?Q?tSg5wdTWSPbPy52q3XU=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2cde611c-f284-412a-b03a-08de0e5d5d54 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:29.2356 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: zPfVKyj41pldJqgbGkTFi0ZiZQ1vRa6Qvabse+MidlaOzFJ0A+AB2iJ526v1HZIMHKDx9o0Sk0lo+FrOM35O4eANzbQKMzUt0cb7UYatQrY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c200::5; envelope-from=Djordje.Todorovic@htecgroup.com; helo=DUZPR83CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802434651158500 Content-Type: text/plain; charset="utf-8" Define MIPS CSRs used for P8700 CPU. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Reviewed-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis --- target/riscv/cpu.c | 3 + target/riscv/cpu.h | 3 + target/riscv/meson.build | 1 + target/riscv/mips_csr.c | 217 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 224 insertions(+) create mode 100644 target/riscv/mips_csr.c diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index cd4e442bdb..2fd0ced25f 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -3297,6 +3297,9 @@ static const TypeInfo riscv_cpu_type_infos[] =3D { .cfg.ext_zbb =3D true, .cfg.marchid =3D 0x8000000000000201, .cfg.mvendorid =3D MIPS_VENDOR_ID, +#ifndef CONFIG_USER_ONLY + .custom_csrs =3D mips_csr_list, +#endif ), =20 #if defined(CONFIG_TCG) && !defined(CONFIG_USER_ONLY) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 34751bd414..234210c6b6 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -987,5 +987,8 @@ const char *satp_mode_str(uint8_t satp_mode, bool is_32= _bit); /* In th_csr.c */ extern const RISCVCSR th_csr_list[]; =20 +/* Implemented in mips_csr.c */ +extern const RISCVCSR mips_csr_list[]; + const char *priv_spec_to_str(int priv_version); #endif /* RISCV_CPU_H */ diff --git a/target/riscv/meson.build b/target/riscv/meson.build index fdefe88ccd..25d59ef9f9 100644 --- a/target/riscv/meson.build +++ b/target/riscv/meson.build @@ -36,6 +36,7 @@ riscv_system_ss.add(files( 'debug.c', 'monitor.c', 'machine.c', + 'mips_csr.c', 'pmu.c', 'th_csr.c', 'time_helper.c', diff --git a/target/riscv/mips_csr.c b/target/riscv/mips_csr.c new file mode 100644 index 0000000000..822e25e346 --- /dev/null +++ b/target/riscv/mips_csr.c @@ -0,0 +1,217 @@ +/* + * MIPS-specific CSRs. + * + * Copyright (c) 2025 MIPS + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + */ + +#include "qemu/osdep.h" +#include "cpu.h" +#include "cpu_vendorid.h" + +/* Static MIPS CSR state storage */ +static struct { + uint64_t tvec; + uint64_t config[12]; + uint64_t pmacfg[16]; +} mips_csr_state; + +/* MIPS CSR */ +#define CSR_MIPSTVEC 0x7c0 +#define CSR_MIPSCONFIG0 0x7d0 +#define CSR_MIPSCONFIG1 0x7d1 +#define CSR_MIPSCONFIG2 0x7d2 +#define CSR_MIPSCONFIG3 0x7d3 +#define CSR_MIPSCONFIG4 0x7d4 +#define CSR_MIPSCONFIG5 0x7d5 +#define CSR_MIPSCONFIG6 0x7d6 +#define CSR_MIPSCONFIG7 0x7d7 +#define CSR_MIPSCONFIG8 0x7d8 +#define CSR_MIPSCONFIG9 0x7d9 +#define CSR_MIPSCONFIG10 0x7da +#define CSR_MIPSCONFIG11 0x7db +#define CSR_MIPSPMACFG0 0x7e0 +#define CSR_MIPSPMACFG1 0x7e1 +#define CSR_MIPSPMACFG2 0x7e2 +#define CSR_MIPSPMACFG3 0x7e3 +#define CSR_MIPSPMACFG4 0x7e4 +#define CSR_MIPSPMACFG5 0x7e5 +#define CSR_MIPSPMACFG6 0x7e6 +#define CSR_MIPSPMACFG7 0x7e7 +#define CSR_MIPSPMACFG8 0x7e8 +#define CSR_MIPSPMACFG9 0x7e9 +#define CSR_MIPSPMACFG10 0x7ea +#define CSR_MIPSPMACFG11 0x7eb +#define CSR_MIPSPMACFG12 0x7ec +#define CSR_MIPSPMACFG13 0x7ed +#define CSR_MIPSPMACFG14 0x7ee +#define CSR_MIPSPMACFG15 0x7ef + +static RISCVException any(CPURISCVState *env, int csrno) +{ + return RISCV_EXCP_NONE; +} + +static RISCVException read_mipstvec(CPURISCVState *env, int csrno, + target_ulong *val) +{ + *val =3D mips_csr_state.tvec; + return RISCV_EXCP_NONE; +} + +static RISCVException write_mipstvec(CPURISCVState *env, int csrno, + target_ulong val, uintptr_t ra) +{ + mips_csr_state.tvec =3D val; + return RISCV_EXCP_NONE; +} + +static RISCVException read_mipsconfig(CPURISCVState *env, int csrno, + target_ulong *val) +{ + *val =3D mips_csr_state.config[csrno - CSR_MIPSCONFIG0]; + return RISCV_EXCP_NONE; +} + +static RISCVException write_mipsconfig(CPURISCVState *env, int csrno, + target_ulong val, uintptr_t ra) +{ + mips_csr_state.config[csrno - CSR_MIPSCONFIG0] =3D val; + return RISCV_EXCP_NONE; +} + +static RISCVException read_mipspmacfg(CPURISCVState *env, int csrno, + target_ulong *val) +{ + *val =3D mips_csr_state.pmacfg[csrno - CSR_MIPSPMACFG0]; + return RISCV_EXCP_NONE; +} + +static RISCVException write_mipspmacfg(CPURISCVState *env, int csrno, + target_ulong val, uintptr_t ra) +{ + mips_csr_state.pmacfg[csrno - CSR_MIPSPMACFG0] =3D val; + return RISCV_EXCP_NONE; +} + +const RISCVCSR mips_csr_list[] =3D { + { + .csrno =3D CSR_MIPSTVEC, + .csr_ops =3D { "mipstvec", any, read_mipstvec, write_mipstvec } + }, + { + .csrno =3D CSR_MIPSCONFIG0, + .csr_ops =3D { "mipsconfig0", any, read_mipsconfig, write_mipsconf= ig } + }, + { + .csrno =3D CSR_MIPSCONFIG1, + .csr_ops =3D { "mipsconfig1", any, read_mipsconfig, write_mipsconf= ig } + }, + { + .csrno =3D CSR_MIPSCONFIG2, + .csr_ops =3D { "mipsconfig2", any, read_mipsconfig, write_mipsconf= ig } + }, + { + .csrno =3D CSR_MIPSCONFIG3, + .csr_ops =3D { "mipsconfig3", any, read_mipsconfig, write_mipsconf= ig } + }, + { + .csrno =3D CSR_MIPSCONFIG4, + .csr_ops =3D { "mipsconfig4", any, read_mipsconfig, write_mipsconf= ig } + }, + { + .csrno =3D CSR_MIPSCONFIG5, + .csr_ops =3D { "mipsconfig5", any, read_mipsconfig, write_mipsconf= ig } + }, + { + .csrno =3D CSR_MIPSCONFIG6, + .csr_ops =3D { "mipsconfig6", any, read_mipsconfig, write_mipsconf= ig } + }, + { + .csrno =3D CSR_MIPSCONFIG7, + .csr_ops =3D { "mipsconfig7", any, read_mipsconfig, write_mipsconf= ig } + }, + { + .csrno =3D CSR_MIPSCONFIG8, + .csr_ops =3D { "mipsconfig8", any, read_mipsconfig, write_mipsconf= ig } + }, + { + .csrno =3D CSR_MIPSCONFIG9, + .csr_ops =3D { "mipsconfig9", any, read_mipsconfig, write_mipsconf= ig } + }, + { + .csrno =3D CSR_MIPSCONFIG10, + .csr_ops =3D { "mipsconfig10", any, read_mipsconfig, write_mipscon= fig } + }, + { + .csrno =3D CSR_MIPSCONFIG11, + .csr_ops =3D { "mipsconfig11", any, read_mipsconfig, write_mipscon= fig } + }, + { + .csrno =3D CSR_MIPSPMACFG0, + .csr_ops =3D { "mipspmacfg0", any, read_mipspmacfg, write_mipspmac= fg } + }, + { + .csrno =3D CSR_MIPSPMACFG1, + .csr_ops =3D { "mipspmacfg1", any, read_mipspmacfg, write_mipspmac= fg } + }, + { + .csrno =3D CSR_MIPSPMACFG2, + .csr_ops =3D { "mipspmacfg2", any, read_mipspmacfg, write_mipspmac= fg } + }, + { + .csrno =3D CSR_MIPSPMACFG3, + .csr_ops =3D { "mipspmacfg3", any, read_mipspmacfg, write_mipspmac= fg } + }, + { + .csrno =3D CSR_MIPSPMACFG4, + .csr_ops =3D { "mipspmacfg4", any, read_mipspmacfg, write_mipspmac= fg } + }, + { + .csrno =3D CSR_MIPSPMACFG5, + .csr_ops =3D { "mipspmacfg5", any, read_mipspmacfg, write_mipspmac= fg } + }, + { + .csrno =3D CSR_MIPSPMACFG6, + .csr_ops =3D { "mipspmacfg6", any, read_mipspmacfg, write_mipspmac= fg } + }, + { + .csrno =3D CSR_MIPSPMACFG7, + .csr_ops =3D { "mipspmacfg7", any, read_mipspmacfg, write_mipspmac= fg } + }, + { + .csrno =3D CSR_MIPSPMACFG8, + .csr_ops =3D { "mipspmacfg8", any, read_mipspmacfg, write_mipspmac= fg } + }, + { + .csrno =3D CSR_MIPSPMACFG9, + .csr_ops =3D { "mipspmacfg9", any, read_mipspmacfg, write_mipspmac= fg } + }, + { + .csrno =3D CSR_MIPSPMACFG10, + .csr_ops =3D { "mipspmacfg10", any, read_mipspmacfg, write_mipspma= cfg } + }, + { + .csrno =3D CSR_MIPSPMACFG11, + .csr_ops =3D { "mipspmacfg11", any, read_mipspmacfg, write_mipspma= cfg } + }, + { + .csrno =3D CSR_MIPSPMACFG12, + .csr_ops =3D { "mipspmacfg12", any, read_mipspmacfg, write_mipspma= cfg } + }, + { + .csrno =3D CSR_MIPSPMACFG13, + .csr_ops =3D { "mipspmacfg13", any, read_mipspmacfg, write_mipspma= cfg } + }, + { + .csrno =3D CSR_MIPSPMACFG14, + .csr_ops =3D { "mipspmacfg14", any, read_mipspmacfg, write_mipspma= cfg } + }, + { + .csrno =3D CSR_MIPSPMACFG15, + .csr_ops =3D { "mipspmacfg15", any, read_mipspmacfg, write_mipspma= cfg } + }, + { }, +}; --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802364; cv=pass; d=zohomail.com; s=zohoarc; b=ZGR6koVtVXT1LdP8kjWy2DD8VHeM/2JCQRf4jt7VNipDuGo9l7B2rt+0JxGx639P2LzLy36vQ7ElcTFn6iSowaAr8PqPGYcVnVuq1z+Qi2CMEIeJ1OaQdjp3slh/8v2hKADMWR0i/FqLIukF7d2bf63QHC+sL4RPsCSoe2JtiC0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802364; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2braOq5ecbz3Vm8ktPLzy3hIhWI8JevJoJP4vfqqmZ0=; b=HCN2lJW4w/0BLuMxLG5bRb/R4AOwT1Vetdkvz0lWow8xjFucAVarj6cyJNynWwnBMCY0Mv8FalXCeR/Za2XFJbC9VeUx0mkBBApiHzn3xehuMHjX/uEZZ4jXeyu+Zq4JBKrkK4aQPhG88TcDtBtljLF33u9+wxb4Z4k/kVV+GAw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802364388395.97258335598735; Sat, 18 Oct 2025 08:46:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA97n-00056C-UL; Sat, 18 Oct 2025 11:45:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97m-00055K-5j; Sat, 18 Oct 2025 11:45:42 -0400 Received: from mail-swedencentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c202::7] helo=GVXPR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97k-0001Rh-48; Sat, 18 Oct 2025 11:45:41 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:29 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Cutn3ZUpz2JvpERW1Hx8F1tyFemrY6zP365P2UfHZO97jmTY44eoCq7QhjbZKqVPm7XXvvKuNm5kzpjI61jfPsy5mxp8o1fRACp6z1N23cr5K9vhgiAzN+vjUQsJAe25EjIFHE/UDQcDM/Yh6rEL1s+o1+fbkPREr8MB+1nzsnRm9DYGdO/bfixq8w3zvsnERMyh7vLVJZ4CYe6Jv8nLMXMDVoC2LR8q9L4ZV7+KH5+QT2xl9/TmCMKUl44gwWElqU7nuin3bwuz3WdFskliE+LunBX0vY/5u1soQL7v2JIEg8tbMcL5uRlSdPsUG08/kFLmjHdkDE7WeGt6eruqjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2braOq5ecbz3Vm8ktPLzy3hIhWI8JevJoJP4vfqqmZ0=; b=Yqr9nUVl328rAuBPsgzd6unSSyj7rf1S/85TaL3uPLo7UN9PRpJaGQxvJANXNsirDvN840pVdYLhsQaxyLRbO+QjunMQ567pnWKrD04jkl+VIjIvBjNsPKwk0HXTDdky6h/grLPkVXmUIGAVjT05UIZEW+KsY5cGsfiMs/2k4PcYBHUeUJ7UA3XK/jDPR5XivdHyDhvF9UYQrs1zW5DvfJEf2HZaedsDKSsGglRQ9Qfj0OSHvPRDSQ1qvl8epN0wMlDImNmlRW1RPVP9ErJyq1k6J8q4ru2XM/5b5CFMj3NpLYZaM196ZqikO8tkX14ygPI08ot5/3kp/ZHsYiXc0Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2braOq5ecbz3Vm8ktPLzy3hIhWI8JevJoJP4vfqqmZ0=; b=H6LFkT+1kmqBsKK6q92ZBlaPcvM5THr+LhviYT4J+vXRR73Xy3Pm5iQdmfY+nQ0DNC12FmlzZ/vn2VMz3TL8IGFSnoxOvEvyB/asPm/kEUAxhfrsFXr3wzqCDMt1JRLS9jtHF3v6VbBSgUF20vvaxMrL0iHGcQnE+A1TYhP95lJWeaVCP96mOysThkyb2hjjjgZqmf2SHyIOKd5cMJCpDw4/F7CiBk2QyoNeIKKpJmwwm4haPs6F11OtGgX9KKYWyr4XM9wX1vLcHWB+3ctHSsw61XXM40AyyPeRtdjgWHavfevYGRHWFiQAOpFGGHrbeJPADhlI1m7WnEMENnLazw== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic , Alistair Francis Subject: [PATCH v13 05/13] target/riscv: Add mips.ccmov instruction Thread-Topic: [PATCH v13 05/13] target/riscv: Add mips.ccmov instruction Thread-Index: AQHcQEY64HHv1J+iIk21MTKX/vlj7w== Date: Sat, 18 Oct 2025 15:45:29 +0000 Message-ID: <20251018154522.745788-6-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: f3681830-459c-46c8-4b21-08de0e5d5d76 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|7416014|376014|1800799024|366016|13003099007|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?VDG/HTAZddEA9LiLztU5uSTOjQGJhLEqe1wEY0cPQApI5SAqHLlcNmm2Vh?= =?iso-8859-1?Q?p23+uGKJhHEW4911Qe9Dfe5DbCNyKEh5tIKbcNFb2MLuEt1sT5RP+LTDzJ?= =?iso-8859-1?Q?sl29sB8icoNSgr23lEeoKysdqpJj8I+jHAXHDNyQK1lZmXySXufQBgRyqD?= =?iso-8859-1?Q?bHj4ltni8ttpz3ukHDZh9V55uwJyXlkown3lJ3CRnV5fv5SPe1utDuk1C8?= =?iso-8859-1?Q?mP3SbiRFJLpYflLn/epGAXkWwLCa2uAViN6uGl8gWyA2grtreWgRJYZDUQ?= =?iso-8859-1?Q?OBcxXLfnQK26y2qk3kNZ8Oiach1XGz/JmkrTIbeX2LHI6PjBHvhUCB0Ygu?= =?iso-8859-1?Q?QbZTRFvN3CpIGe51EKwaox9BjF+2AgFvYYhbdZZj94FjAZ1yzWJcId4i3U?= =?iso-8859-1?Q?o9NLIzqb5pCE//+xiLytpMl5cOr3QHk+frgh1TGnbcl0NblMiRhCIHrf0T?= =?iso-8859-1?Q?jf1k0sOGwifNSqGTgwEZKZdp4qULdj3AvIcboO0Bul9O/2YllpP/npzgkY?= =?iso-8859-1?Q?kEFW2lnz2PpW8fvadx0uyGjfhBhrnIskGnl38Ug7eIOxigvD9gqPpUUbu3?= =?iso-8859-1?Q?tzDiomkNlAwHgqUhvLU8sAO1DXETh3eoallg6iZcL+j5oiJMmz/knDdiF0?= =?iso-8859-1?Q?0a2DNOeDMzcLbCwgo468Cou4RfhsJxsR8ivBXuqgnkIRO/EYePdq2pJkAT?= =?iso-8859-1?Q?+1k3Ig2ip5JG67fNiE6Xe0fs8yH6FS1pijyJmyPYnwEstCx0mC3O4+4kJf?= =?iso-8859-1?Q?ToX4dMn6wClubuBKJrEsS1npyvKgojx1GFGQ+DTxinPmr6w75s+mT9QF3r?= =?iso-8859-1?Q?BarXV+5cfkVdZRBIXCzn40knAyJxzWLnLNEINgbFrPHaWSyqou6IFcXYNh?= =?iso-8859-1?Q?ft0qStnj0nAZPt8AqTab49xjmP+JBiD5enxRmOEUNlQ9pzJ7B8BfqCN7sq?= =?iso-8859-1?Q?j13EftGAxXQDcbPRG3b+E9OiE4v2biSZiGnDUNb40ZTjQp67aKWRWZhf/Y?= =?iso-8859-1?Q?bpSijQ07W8wob0XAQCrV7QIpEs+T074acSdYB5r7gDlZnvSvCiASUKRKi0?= =?iso-8859-1?Q?R1pVzyS7euc5WfFKX//VkrxvrIlVk4SfiVx7QE4/rdW0c2O4EruGtxfCgh?= =?iso-8859-1?Q?zkKf8JgxNpHlgFOSLHe+c+BBZsVNUcJFKxRTmLKE3PWeLiyRMq3lZqm7CZ?= =?iso-8859-1?Q?gxHoIaAW3f3hegdOawb7JAoelnObBdJNET/s6V/2Kc2kTf9+1bbDxYffMx?= =?iso-8859-1?Q?pz2hawV+Qz5AN7760BIlrWZ684hs1JDYGctImDz/8plhlZmhzuGX8MQd7Q?= =?iso-8859-1?Q?5jHWHD1R6vw574tyUSVcj8Ao4CREMFf4z18KNQYQgAeU2//pb6z5VHUXmP?= =?iso-8859-1?Q?ezcUVXRbkyQQtVV1Bw0P39O+JEvB7vmqwjt5Jx8SUJuTl42kxZ8qFU5tr3?= =?iso-8859-1?Q?SyRHnjAlMqyfNESXJPNtqs8HAvHeXrE5Pw6Wf9BbEvM8dsOEir2Ybwut0Y?= =?iso-8859-1?Q?R6vrnbSzgFkCegxH/V4DJ2n5S4OHmDyAvBl80NhflygtaOmGkCwRWPjdju?= =?iso-8859-1?Q?oYYUL5SGU+ctvSOn5VTOJ8wjnmyf?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(1800799024)(366016)(13003099007)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?DHQA4hqGuHVsCUjxToK4Y37L3gL+/SMUwrzGY6Bv2hDt/uLke0SB1t0DFq?= =?iso-8859-1?Q?5E2s4+xMqEciQEnmKSxk1+qD+iMmhw5fXDbcjhmEz6a80Bk4w47JSOj22x?= =?iso-8859-1?Q?+RZLcslVn+66cvn/bwv0DiMgX9svSIda3FnujKFsoyPKy+CVpctVUfC2po?= =?iso-8859-1?Q?VlTyik3DGndBO4aslbgE7efIfUO9KfJYCeOVj8/mdDELGO0YTmN/2g/1yf?= =?iso-8859-1?Q?D2+AMRldCVEzGWgW8RkZBNOK2QVBsM6yLigDDrECfkwaSW9IJo8WnoIt33?= =?iso-8859-1?Q?i0P3cM0uMcZSRPwtXgdgNoW78JiWsj45U3sMUwipWTiDNqlcZYY5NZtmm5?= =?iso-8859-1?Q?g76ug3kWMcOYAvDitbZkJ/BzI4RIQrXJZADi0jekpFMz44H59FVOQPXqmO?= =?iso-8859-1?Q?9KoZwUddXsdfPusqoiaWyRqG2d0sAi57YUwhJMgvijRpminfC0baTqv/h6?= =?iso-8859-1?Q?E1FuQIjwJtWtha09n3QBOjkgmAR09Rpm7satdAjVwvLCpX57s9nCjMp2Ar?= =?iso-8859-1?Q?a63MGQ4qi3rNbPWx8pBB9MBei4s/uzxw6nl79oK+ZwlCL2j1K7bsznPzXi?= =?iso-8859-1?Q?J/GTzT4yM7xXHYpZZ83Z+Rxb12Zzt7cmBjL13016mby9OqeFuwEkMM9JDZ?= =?iso-8859-1?Q?yZijV89fk9TBmNAJRiGdDTZRlvvDKiTYP/tKMrOMKb9Wa409qTeSYTG7ky?= =?iso-8859-1?Q?+AXk8+RxTnJpJqc6+ryR41pk5+gSrCMODvpf6+F5+isoh+vQTUIvPx1aK9?= =?iso-8859-1?Q?rA1U4+9okKrLrkHv9cQ5wpOpWm/rklcw/CZd/4zyDEQxJk9gLOyGIlhwc/?= =?iso-8859-1?Q?HUIgEspHZQSLpLxzok3vVGA/jDClGlR6pfHmkW0rZSh0rQaHgca8IHs3yG?= =?iso-8859-1?Q?dT0vKeuyfcJ2E4EHPM854lf+qYBLgO2fjdOMnF8Q5+ffdaZOyox7Ixwa7T?= =?iso-8859-1?Q?wRhPP1eeda/lCWc4KzHzgVU90tNayKrCh3PLaqJRneHPsJvgEK24Fad7Db?= =?iso-8859-1?Q?WnBKsfzx6toFSENcTkQY4wlTxA/Hb3yWLXitm39tXuGDumIUR1ZGnmke79?= =?iso-8859-1?Q?7LheTwEB2ADW0g7vbbSEiYOu6DqvhBDySnJUAbo4bCobzbP8Tc3Hxiyjqs?= =?iso-8859-1?Q?pfEAqPD3gGgxl01y6RtMMswBDm0gw+m52EZAlbBRWkhT3lu87jVmja70Rj?= =?iso-8859-1?Q?tLhGzjP8i8Hb0SJm/24mNXAyeOYATQbXVbKSeufX8ERLnJwMikGrqkKMkm?= =?iso-8859-1?Q?BHt1cKflYyYrngXDFd4uO49sO+yYEA18WAfKur1jiqzrEzasLWOekXkj+j?= =?iso-8859-1?Q?ZK238s7yWSEVm+TkAJnBRP/gdPaWOvsZyWD5f1IgbwarPBYOffG+5yF5T6?= =?iso-8859-1?Q?qmxY+H3Cub1kGiG6rwGGnU9ktZ6F4prT/slxVhFcHdL4g9XzG8fAfCsnIe?= =?iso-8859-1?Q?i7MuoZY+rDL3y6tUkQrTaaDe4oMvwp9kxaaauTCVwh+JNHHNhidDE9E9T8?= =?iso-8859-1?Q?wtLziXONZyZQ7vFowhD4EdmQbHWXSmLhbDVUpApJpilUAmfkJfCABpoyhf?= =?iso-8859-1?Q?VHg4Fm1V0D3dnzeZc+X5AUZm+F5pVQB9O4u4NLrJWuPPIZRgBOaphoCxRT?= =?iso-8859-1?Q?b2vGO5ldJWiDzhyWSulL8AbIwbh293n059jjE26K+knqCIwO8qKZBy+8TA?= =?iso-8859-1?Q?0PQeuoHDGF5PqSQpvT4=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f3681830-459c-46c8-4b21-08de0e5d5d76 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:29.5591 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 4kPkNhARz8xt+UtGSQdEhuBpXAfYZyNfbb+kAU5UkV6DEIGAIHKKu78RN0KZh6bbjBVOkTyrErFHoAKCCbSLX7xM3hZP//TZmzHJRMxODzQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c202::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=GVXPR05CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802368127158500 Content-Type: text/plain; charset="utf-8" Add mips.ccmov defined by Xmipscmov. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Acked-by: Daniel Henrique Barboza Acked-by: Alistair Francis --- target/riscv/cpu.c | 3 +++ target/riscv/cpu_cfg.h | 5 ++++ target/riscv/cpu_cfg_fields.h.inc | 1 + target/riscv/insn_trans/trans_xmips.c.inc | 33 +++++++++++++++++++++++ target/riscv/meson.build | 1 + target/riscv/translate.c | 3 +++ target/riscv/xmips.decode | 11 ++++++++ 7 files changed, 57 insertions(+) create mode 100644 target/riscv/insn_trans/trans_xmips.c.inc create mode 100644 target/riscv/xmips.decode diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 2fd0ced25f..87cb367676 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -249,6 +249,7 @@ const RISCVIsaExtData isa_edata_arr[] =3D { ISA_EXT_DATA_ENTRY(svrsw60t59b, PRIV_VERSION_1_13_0, ext_svrsw60t59b), ISA_EXT_DATA_ENTRY(svukte, PRIV_VERSION_1_13_0, ext_svukte), ISA_EXT_DATA_ENTRY(svvptc, PRIV_VERSION_1_13_0, ext_svvptc), + ISA_EXT_DATA_ENTRY(xmipscmov, PRIV_VERSION_1_12_0, ext_xmipscmov), ISA_EXT_DATA_ENTRY(xtheadba, PRIV_VERSION_1_11_0, ext_xtheadba), ISA_EXT_DATA_ENTRY(xtheadbb, PRIV_VERSION_1_11_0, ext_xtheadbb), ISA_EXT_DATA_ENTRY(xtheadbs, PRIV_VERSION_1_11_0, ext_xtheadbs), @@ -1381,6 +1382,7 @@ const RISCVCPUMultiExtConfig riscv_cpu_vendor_exts[] = =3D { MULTI_EXT_CFG_BOOL("xtheadmempair", ext_xtheadmempair, false), MULTI_EXT_CFG_BOOL("xtheadsync", ext_xtheadsync, false), MULTI_EXT_CFG_BOOL("xventanacondops", ext_XVentanaCondOps, false), + MULTI_EXT_CFG_BOOL("xmipscmov", ext_xmipscmov, false), =20 { }, }; @@ -3295,6 +3297,7 @@ static const TypeInfo riscv_cpu_type_infos[] =3D { .cfg.pmp =3D true, .cfg.ext_zba =3D true, .cfg.ext_zbb =3D true, + .cfg.ext_xmipscmov =3D true, .cfg.marchid =3D 0x8000000000000201, .cfg.mvendorid =3D MIPS_VENDOR_ID, #ifndef CONFIG_USER_ONLY diff --git a/target/riscv/cpu_cfg.h b/target/riscv/cpu_cfg.h index aa28dc8d7e..2db471ad17 100644 --- a/target/riscv/cpu_cfg.h +++ b/target/riscv/cpu_cfg.h @@ -36,6 +36,11 @@ static inline bool always_true_p(const RISCVCPUConfig *c= fg __attribute__((__unus return true; } =20 +static inline bool has_xmips_p(const RISCVCPUConfig *cfg) +{ + return cfg->ext_xmipscmov; +} + static inline bool has_xthead_p(const RISCVCPUConfig *cfg) { return cfg->ext_xtheadba || cfg->ext_xtheadbb || diff --git a/target/riscv/cpu_cfg_fields.h.inc b/target/riscv/cpu_cfg_field= s.h.inc index e2d116f0df..a290303ee7 100644 --- a/target/riscv/cpu_cfg_fields.h.inc +++ b/target/riscv/cpu_cfg_fields.h.inc @@ -147,6 +147,7 @@ BOOL_FIELD(ext_xtheadmemidx) BOOL_FIELD(ext_xtheadmempair) BOOL_FIELD(ext_xtheadsync) BOOL_FIELD(ext_XVentanaCondOps) +BOOL_FIELD(ext_xmipscmov) =20 BOOL_FIELD(mmu) BOOL_FIELD(pmp) diff --git a/target/riscv/insn_trans/trans_xmips.c.inc b/target/riscv/insn_= trans/trans_xmips.c.inc new file mode 100644 index 0000000000..3202fd9cc0 --- /dev/null +++ b/target/riscv/insn_trans/trans_xmips.c.inc @@ -0,0 +1,33 @@ +/* + * RISC-V translation routines for the MIPS extensions (xmips*). + * + * Copyright (c) 2025 MIPS + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + * Reference: MIPS P8700 instructions + * (https://mips.com/products/hardware/p8700/) + */ + +#define REQUIRE_XMIPSCMOV(ctx) do { \ + if (!ctx->cfg_ptr->ext_xmipscmov) { \ + return false; \ + } \ +} while (0) + +/* Conditional move by MIPS. */ +static bool trans_ccmov(DisasContext *ctx, arg_ccmov *a) +{ + REQUIRE_XMIPSCMOV(ctx); + + TCGv zero, source1, source2, source3; + zero =3D tcg_constant_tl(0); + source1 =3D get_gpr(ctx, a->rs1, EXT_NONE); + source2 =3D get_gpr(ctx, a->rs2, EXT_NONE); + source3 =3D get_gpr(ctx, a->rs3, EXT_NONE); + + tcg_gen_movcond_tl(TCG_COND_NE, cpu_gpr[a->rd], + source2, zero, source1, source3); + + return true; +} diff --git a/target/riscv/meson.build b/target/riscv/meson.build index 25d59ef9f9..3842c7c1a8 100644 --- a/target/riscv/meson.build +++ b/target/riscv/meson.build @@ -4,6 +4,7 @@ gen =3D [ decodetree.process('insn32.decode', extra_args: '--static-decode=3Ddecod= e_insn32'), decodetree.process('xthead.decode', extra_args: '--static-decode=3Ddecod= e_xthead'), decodetree.process('XVentanaCondOps.decode', extra_args: '--static-decod= e=3Ddecode_XVentanaCodeOps'), + decodetree.process('xmips.decode', extra_args: '--static-decode=3Ddecode= _xmips'), ] =20 riscv_ss =3D ss.source_set() diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 9ddef2d6e2..66d31b67d3 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -1194,8 +1194,10 @@ static uint32_t opcode_at(DisasContextBase *dcbase, = target_ulong pc) #include "insn_trans/trans_svinval.c.inc" #include "insn_trans/trans_rvbf16.c.inc" #include "decode-xthead.c.inc" +#include "decode-xmips.c.inc" #include "insn_trans/trans_xthead.c.inc" #include "insn_trans/trans_xventanacondops.c.inc" +#include "insn_trans/trans_xmips.c.inc" =20 /* Include the auto-generated decoder for 16 bit insn */ #include "decode-insn16.c.inc" @@ -1211,6 +1213,7 @@ static uint32_t opcode_at(DisasContextBase *dcbase, t= arget_ulong pc) =20 const RISCVDecoder decoder_table[] =3D { { always_true_p, decode_insn32 }, + { has_xmips_p, decode_xmips}, { has_xthead_p, decode_xthead}, { has_XVentanaCondOps_p, decode_XVentanaCodeOps}, }; diff --git a/target/riscv/xmips.decode b/target/riscv/xmips.decode new file mode 100644 index 0000000000..fadcb78470 --- /dev/null +++ b/target/riscv/xmips.decode @@ -0,0 +1,11 @@ +# +# RISC-V translation routines for the MIPS extension +# +# Copyright (c) 2025 MIPS +# +# SPDX-License-Identifier: GPL-2.0-or-later +# +# Reference: MIPS P8700 instructions +# (https://mips.com/products/hardware/p8700/) + +ccmov rs3:5 11 rs2:5 rs1:5 011 rd:5 0001011 --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802509; cv=pass; d=zohomail.com; s=zohoarc; b=Nwwovcb2DDZc6douPzmUhvGlOXkuzwLewAR4Wvc41iI8qB5iy354dBIhcsngsSXJ/zTIT08PHCrMzzmV3LtSOjqu3niRl26dW3f/oD0IYHND6wMOWavmXlnnjj9jTDxa6BFNN9y5fQ6j4MFWzgb/dTIuqS4KCvgXLE3BWqGdTrI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802509; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tckR7EAHvGngm2H8QuXDOk3uSFLNo9c0HQIWueNfNzU=; b=QoGJ14k4g730RvTDAKA7DzaO0IzooQb4RMoMnIwUds57+tG6kh9tNohAlfRTPQmD8hQd2qN7FEqK+qgvCrjCj2JhadNTO2f8W/ojPP+jL/j3rIJ7CYsX4bXaY5lU1waqEKM+EX7KwFI+K1XKuUeebYKY9zJVh4vLZTzznixh3CU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802509264401.99371607565183; Sat, 18 Oct 2025 08:48:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA97s-00058g-Dm; Sat, 18 Oct 2025 11:45:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97n-00055x-Gq; Sat, 18 Oct 2025 11:45:43 -0400 Received: from mail-northeuropeazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c200::5] helo=DUZPR83CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97l-0001QR-NP; Sat, 18 Oct 2025 11:45:43 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:30 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tChxKlV5PYZ2FupCa4V7JWHRD4rA5Q6JQAczl4dfMYGY3YbNJx40wlKlN0U1H2306U/NMX/zCiTDSlfANGHguZBPM45a8lVyqnvEuUW2MF0WSZ6GWEQDAOXHXnqOL6zdCqT4OShuT2bBNBU6KgoeK5kroP4XwvvGepnX5aKVrklr1t6qI4+dNi33c41kpb26a+kYpGMx0c4p9KgZVL9VuPfnk9nFwjv3QZBKMmJ3+mkGo5aoe+jyX9mNpk9MmjA5TOGwENsM6WPUZxu3D/S2ybONFnCvtiBnSHGrmGWqx6q71IONQkQJNU31zsZ7RyRJ38mv1vbw8z14mwWWjUpjrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tckR7EAHvGngm2H8QuXDOk3uSFLNo9c0HQIWueNfNzU=; b=Y72W8xQyvI2h25d5mx9R1kCy2BvFpvbefCBoltQ6FLk1waIjDhUBpidtBZ6IpYAQH68EBhme9u95eXXvs15rXEYXw7WwAn5UMYL1XdEk1tDlB5Dk9fwe9MgKtt466HFcIeu/iGz4sED3XopTV2lGLZdwkEvjSyW51CDXhVje+63D299VyhVCmwxAwnspVUR897BaysDbAjIYbjdB69sSh1q+LsmhEVKW55TNPHMTKlylaJlIaSOiW2ox+ahgr5x26MhgYViUXLFXzZqB1FpA2c+Vx/qfgQomZ/9BXPkv8sYEmWV7NxIZnPI88lGtjWxNEDoinXZ7poYjrugMSg8f7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tckR7EAHvGngm2H8QuXDOk3uSFLNo9c0HQIWueNfNzU=; b=q1yV4gjvsdgghAmBHjulEL+KAyuYNajZK7gNOCMIwITI/284P6+WMatBcWLjXpKjrqS108Id839KugTfjMVdDowlL8jXIz+I76402PbaGD8mwHCNhM92lIhySg5Qzq8BS2caZbRw7kXE4OYHYNitUxYC4/ivSJR3yyTirhQg9ZMzCd8qyYsuitAIbqvABDVaegZ2nnexBGw5bxJLpo31c3o54a8PO+CmCoJooPtg4HLPTwJ0lhPc4+GP78tw3PqlCRs4r2Aob1uP7yZNFijbI7ssQeRC09EWljkGmgsp+q/l59QTLVQM5ECV12WU30Hb8rz96GpS6JXKavPZSPb1/Q== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic , Alistair Francis Subject: [PATCH v13 06/13] target/riscv: Add mips.pref instruction Thread-Topic: [PATCH v13 06/13] target/riscv: Add mips.pref instruction Thread-Index: AQHcQEY7kFGzmBcYuEGTHrFkkPGjjA== Date: Sat, 18 Oct 2025 15:45:29 +0000 Message-ID: <20251018154522.745788-7-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: 21b23814-647c-4a3d-12b1-08de0e5d5daf x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|7416014|376014|1800799024|366016|13003099007|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?ll9k4QK5u1tEoB+1S8f0LexvPq6gjZPJdTunnHi3kcvztIej25ieePRNgw?= =?iso-8859-1?Q?IuV/9v0kakRzQhmdNUiGZYsp9AAAI+qagdMpUsoro2YVxbsT+pvNl21KKF?= =?iso-8859-1?Q?sv0WG9M6uGfLsNHI1EIbF0f5dfxdBCi39BR5GFBl2g5tuo+vH4AI3t7gus?= =?iso-8859-1?Q?5gdd5amkD1f0B+0vmAu+oj0cP5PZGXTC3SE1aU+cc9y/fpIW9FORNamPjt?= =?iso-8859-1?Q?FAOxZeffaSgHPTLpAh0TJNpsvasbCh1BnJPYyFfL1sa0q/FQJMcoYXCMP5?= =?iso-8859-1?Q?0oWDS5CEynlj6oYw8jlU+nrnr5k+7BaNTpnxV5gDEJ+Kzo6ITi9yw9Ow4l?= =?iso-8859-1?Q?aRH6NlrdLgewYQL/ZAibXR2Ai41aMuz2FC0SwbowOqrwTFDBdCLDE3tpS4?= =?iso-8859-1?Q?i1tm1oXazefWMmmdVqmA5rqH8z2YXPCRQ7DLjTJ5HXKKvGLnWxMAETppNF?= =?iso-8859-1?Q?RGHuHmLXeVWw4WvQvkFaNK+Wg15adtMzAHw+fucShP5koo7xJiTxW0MQUt?= =?iso-8859-1?Q?FNlNi6mkKdjcALjappmNGPdsyCw5IvES4dgmMwTO6OGpuLcp3j4BRHW7oe?= =?iso-8859-1?Q?QPOWmZq+i8/JwCvJmXY9KHhp7yoXFf311QAybcloyTHuQV+DXrbKqNbb9t?= =?iso-8859-1?Q?c+rHEaHsY3q5rZygIlnzUAdiy+U37lOYLubR7D88jo2+KuPOM9Wp0Z/8wd?= =?iso-8859-1?Q?6hHmvtPKGbumRLPbDKd36sAHEYqSSmQ9G8MikmqUBQZdV01InXJMmawy4H?= =?iso-8859-1?Q?vJIeP7frI1eZIRIHhzNaRySdTVEPfagr0qTi60U1A1v/EbSMH7H26skmoa?= =?iso-8859-1?Q?/K+7rSILLGM2HGn52u2SHZCY6lEOR72jg7ql89z+vko30FfUFMUe2/pbVi?= =?iso-8859-1?Q?B2URQf/wTFPeHDPJ4ARETWuDANP7Jh1roLM/XFfARwPgrkmq1XyascIsqK?= =?iso-8859-1?Q?N6Gf5QumEYPcYUUIupqWPQliEmjWWWxD3iiMEponYi0BrKHJ1GCswEOwSj?= =?iso-8859-1?Q?OKSYeINJtw3nzvCKKhzYab2W698mWWHeTzX2ibABNkwrbwrqfQ9WgEcCTF?= =?iso-8859-1?Q?bN/uM1EhDUm4DB+TwUnM7CnFpaUODREv7uSYcoyf/XKaJ7TG4OUUdfxN4T?= =?iso-8859-1?Q?IjwtsPPM221kC6lGoDdglJJGSGfLbllxPCCTj6RUsLyeoGXcC3LlfPlCTq?= =?iso-8859-1?Q?CywdqJ+Gfq46hGeSJm0KhaMaq8cxSwQdkKb1YNqpycLv1MwpdHEXpqi1Al?= =?iso-8859-1?Q?MLhett8bS7OAioqbtqzxEPq5m0BlgUoMxWsQrHpWsIodjJs0blcZKG3cwV?= =?iso-8859-1?Q?OLZQwlI0lRwWEVw9n2nUy46LiGcVPeh99jPUuYCWZSEWD5szozeUHOJEgz?= =?iso-8859-1?Q?xAh/kFHiReI6p+XYFa5FUjySlJgfaSioSLtJWol2d9YVfwMkbgNuaWr42n?= =?iso-8859-1?Q?TXc9Lgi74fezwb0teJXGYDw8laiKaNFTGU6C+L+6/vPbLdUVSjuZ/2GJC0?= =?iso-8859-1?Q?1ckKQsHzJz6DlY0av8vmtJl9qyiFSfyLAs8LPmjdXRHactmbiKZ2V5xTyH?= =?iso-8859-1?Q?sCOwH/q6oI/cgDv2I/sqyUiwVhzY?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(1800799024)(366016)(13003099007)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?6Gdd+9HeJZU8BiiIOnQdLBhSxkRt+yMsNnt9xfVwe2yoF6OzjBH/gxgv+o?= =?iso-8859-1?Q?McGNopKYDTCJgcwlbJ/TqaSxweNReF3u//qG6uPrjZKo/p0NW7u38dM1ba?= =?iso-8859-1?Q?Wm2xC2BjoNDbnoKdk16LigFaIs1cgxywEyIyfohBdZKXEr2q3OJcsBHBpZ?= =?iso-8859-1?Q?IJ+OTtBl7cJ9Ltsyz7J9DB71Aigm6za8fLqhOHB5/Y9IMxWs5AkmKmVNeG?= =?iso-8859-1?Q?a87gX5Zfs+cnDNLuwHZfq3DPNIG/Iu7Zxf1+MYzTl0FRt8hNIa+nSe+KpN?= =?iso-8859-1?Q?UxdVuTm5FArPM4YDnYrrCsKXf2+6RM2aFwcpJgkk0+ZLbzPfAy8FB8WRwT?= =?iso-8859-1?Q?pazGOsIP4MHZQmcoRisqiayspicO4ziAgbCzBy0Gfu77hwA6/32Vn3O//j?= =?iso-8859-1?Q?+flfxoeIhyqCiFhE2tJ4XjpWE0eofVsY+Ecj57CuEVRFqqI4h1Hcm4hbFS?= =?iso-8859-1?Q?xtuheFC7pJ8CeGaxxbVJ1iSiNrmim+GdhH7wsRBVetZyfrcMWpWWtaCM+J?= =?iso-8859-1?Q?GvrsTVO3Jt+e1knXpEctSspILr26eBksPUr8ccWFUINb72mFz8kLtNV1ze?= =?iso-8859-1?Q?O9dq2t/gSEwhkGSivrIQ8IFV6w8kQCG/BlZkGwP6I+aLAVXrIi+87p1uPU?= =?iso-8859-1?Q?YHeZBBWUz3fdizfJcd9ujWEaoJzyLtOLNTj8wL7UMYNOUHVOUQ3a3cS0En?= =?iso-8859-1?Q?DIkBlRDsRdZ6P+6NVfrDBZ0BwZFt8MByeAW4FU1B6g//pApAPrdUkTkQbt?= =?iso-8859-1?Q?WjWvMYXiP5bPPcdxFeIiv2Nr+6Rw+m5HJ74K5bbMMHqLH1D2hBXNH/wmc+?= =?iso-8859-1?Q?DOMFqO/zILYBUOsRDAJ9XC0swKKBPMj7UBOA4jNTN39Z3xz0YWYHsFQbV/?= =?iso-8859-1?Q?Wc8PmC9FKqjfX0nP7KrdzMF2Ae2ksLGDjiwUlpPksS7v8wnCBlS25N/Oq7?= =?iso-8859-1?Q?AQZoh9WfDG+P9jiD1xQrwuuJXWGj1IKwf/5AAQ3CbpzAXzHkjRqW36R+Nr?= =?iso-8859-1?Q?xeXjvQqkmDGKp0XZP46n9RDAJpugCP6n5PHXgDnuUxT92ydVZ5u4iYc0Q0?= =?iso-8859-1?Q?70NGhWGN1Uy+XWhqJthhbf0TMp4lyEIyyeZSMLhE8MhMzzUFaOZdfwaWnL?= =?iso-8859-1?Q?UIsYi8enq+kBI2kwyiBV9Kms8lqRXB8xrjCmQGuZxgzfz1lOYL/IxaD9N6?= =?iso-8859-1?Q?LUZp8fGIOI1YFC4M7UikBBqpI5gy7uwT+gLw24aDnKPTnVa7NTuuPeuQPA?= =?iso-8859-1?Q?RNSykiL57AYFG8TVIPeJdZHupnwcieYzqO9DHjPZYaWusHrUxwD6DiANYR?= =?iso-8859-1?Q?da2K2wOL/JYWnV7fHciO2jABeG3i3WzesegcgJi5HigtkysQkgNoXmmC0D?= =?iso-8859-1?Q?I/2ldbR2VOgteH9dUKXnVDradyQxExCzJXrArfWJt63XbNszd8bt9GHCgP?= =?iso-8859-1?Q?wWiMFZfcOFMmaz/bZ1pbRrnKs8u3irK85KGNdaCkeI2Fwag+3U31/ujXtc?= =?iso-8859-1?Q?v3z34qOjHLwwnM4P1FfH1DL49CjdPEh1BGTZSU4IYHfDwYt5oeHv7vgVXB?= =?iso-8859-1?Q?e5eOUfVucKURj/aFc4V2QLFD0KTedU2xyIxzmvx4TldHH/0WUajvvGDsw7?= =?iso-8859-1?Q?xeVpkwnXyYjn17pdpl/Pl3Vj+RDbBH9udsAJ6HPU6ZlYm8FlX5mBe/X2iE?= =?iso-8859-1?Q?bd1e+NLU5B4ubrBTnik=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 21b23814-647c-4a3d-12b1-08de0e5d5daf X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:29.9433 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FgyveH/1cqdn3D5fsu6Gf0vZAmxjdivorsr7oafiTpuCozt2YcXhbEFsdj8hViccBpvT32BZXbN7bgFCc8p0L/L5Lh4rrPJxhZsmn71NnWo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c200::5; envelope-from=Djordje.Todorovic@htecgroup.com; helo=DUZPR83CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802509601158500 Content-Type: text/plain; charset="utf-8" Add MIPS P8700 prefetch instruction defined by Xmipscbop. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Reviewed-by: Daniel Henrique Barboza Acked-by: Alistair Francis --- target/riscv/cpu.c | 3 +++ target/riscv/cpu_cfg.h | 2 +- target/riscv/cpu_cfg_fields.h.inc | 1 + target/riscv/insn_trans/trans_xmips.c.inc | 15 +++++++++++++++ target/riscv/xmips.decode | 1 + 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 87cb367676..9fda450683 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -249,6 +249,7 @@ const RISCVIsaExtData isa_edata_arr[] =3D { ISA_EXT_DATA_ENTRY(svrsw60t59b, PRIV_VERSION_1_13_0, ext_svrsw60t59b), ISA_EXT_DATA_ENTRY(svukte, PRIV_VERSION_1_13_0, ext_svukte), ISA_EXT_DATA_ENTRY(svvptc, PRIV_VERSION_1_13_0, ext_svvptc), + ISA_EXT_DATA_ENTRY(xmipscbop, PRIV_VERSION_1_12_0, ext_xmipscbop), ISA_EXT_DATA_ENTRY(xmipscmov, PRIV_VERSION_1_12_0, ext_xmipscmov), ISA_EXT_DATA_ENTRY(xtheadba, PRIV_VERSION_1_11_0, ext_xtheadba), ISA_EXT_DATA_ENTRY(xtheadbb, PRIV_VERSION_1_11_0, ext_xtheadbb), @@ -1382,6 +1383,7 @@ const RISCVCPUMultiExtConfig riscv_cpu_vendor_exts[] = =3D { MULTI_EXT_CFG_BOOL("xtheadmempair", ext_xtheadmempair, false), MULTI_EXT_CFG_BOOL("xtheadsync", ext_xtheadsync, false), MULTI_EXT_CFG_BOOL("xventanacondops", ext_XVentanaCondOps, false), + MULTI_EXT_CFG_BOOL("xmipscbop", ext_xmipscbop, false), MULTI_EXT_CFG_BOOL("xmipscmov", ext_xmipscmov, false), =20 { }, @@ -3297,6 +3299,7 @@ static const TypeInfo riscv_cpu_type_infos[] =3D { .cfg.pmp =3D true, .cfg.ext_zba =3D true, .cfg.ext_zbb =3D true, + .cfg.ext_xmipscbop =3D true, .cfg.ext_xmipscmov =3D true, .cfg.marchid =3D 0x8000000000000201, .cfg.mvendorid =3D MIPS_VENDOR_ID, diff --git a/target/riscv/cpu_cfg.h b/target/riscv/cpu_cfg.h index 2db471ad17..e4d5039c49 100644 --- a/target/riscv/cpu_cfg.h +++ b/target/riscv/cpu_cfg.h @@ -38,7 +38,7 @@ static inline bool always_true_p(const RISCVCPUConfig *cf= g __attribute__((__unus =20 static inline bool has_xmips_p(const RISCVCPUConfig *cfg) { - return cfg->ext_xmipscmov; + return cfg->ext_xmipscbop || cfg->ext_xmipscmov; } =20 static inline bool has_xthead_p(const RISCVCPUConfig *cfg) diff --git a/target/riscv/cpu_cfg_fields.h.inc b/target/riscv/cpu_cfg_field= s.h.inc index a290303ee7..dd3ee7ba2b 100644 --- a/target/riscv/cpu_cfg_fields.h.inc +++ b/target/riscv/cpu_cfg_fields.h.inc @@ -147,6 +147,7 @@ BOOL_FIELD(ext_xtheadmemidx) BOOL_FIELD(ext_xtheadmempair) BOOL_FIELD(ext_xtheadsync) BOOL_FIELD(ext_XVentanaCondOps) +BOOL_FIELD(ext_xmipscbop) BOOL_FIELD(ext_xmipscmov) =20 BOOL_FIELD(mmu) diff --git a/target/riscv/insn_trans/trans_xmips.c.inc b/target/riscv/insn_= trans/trans_xmips.c.inc index 3202fd9cc0..bfe9046153 100644 --- a/target/riscv/insn_trans/trans_xmips.c.inc +++ b/target/riscv/insn_trans/trans_xmips.c.inc @@ -9,6 +9,12 @@ * (https://mips.com/products/hardware/p8700/) */ =20 +#define REQUIRE_XMIPSCBOP(ctx) do { \ + if (!ctx->cfg_ptr->ext_xmipscbop) { \ + return false; \ + } \ +} while (0) + #define REQUIRE_XMIPSCMOV(ctx) do { \ if (!ctx->cfg_ptr->ext_xmipscmov) { \ return false; \ @@ -31,3 +37,12 @@ static bool trans_ccmov(DisasContext *ctx, arg_ccmov *a) =20 return true; } + +/* Move data from memory into cache. */ +static bool trans_pref(DisasContext *ctx, arg_pref *a) +{ + REQUIRE_XMIPSCBOP(ctx); + + /* Nop */ + return true; +} diff --git a/target/riscv/xmips.decode b/target/riscv/xmips.decode index fadcb78470..4215813b32 100644 --- a/target/riscv/xmips.decode +++ b/target/riscv/xmips.decode @@ -9,3 +9,4 @@ # (https://mips.com/products/hardware/p8700/) =20 ccmov rs3:5 11 rs2:5 rs1:5 011 rd:5 0001011 +pref 000 imm_9:9 rs1:5 000 imm_hint:5 0001011 --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802407; cv=pass; d=zohomail.com; s=zohoarc; b=O1GGOJ7UGT7Shur/bnulETxV2TcuBpBmoOmfdm+irbnJUCyJHFDz/8bFuH9oDkrTgSa2TEjyEzOJjWIW+j0kOFIO+/Yrj8xNhXH3N6fTne4Wp9olpHtyAMYO6oc1RXD25zdkSiGBLlRlAU+r/y9VthLH0/BLW4lYSeYsDPkp4P8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802407; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rD7NsZztFtW3xVK32pM36ulHIFJFWt4Xdv66bn0owNU=; b=JzD4IK/iP39tqUPeZXGBbAoalgwpSHH6QkNiuXKaZljdUzFNHFhqFZg/Ye8fzLVt6xiMKk9BNRmG9kGOPhcceYC9HP2Xmjzu/6hMcDLYNB1/SYDdtk919tjSlMydD26R4ZV+ATuv5MeCRi0jRXr2gbV827KGpvypUeDU8Sli6bE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802407742135.38291887675803; Sat, 18 Oct 2025 08:46:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA97r-00058U-DH; Sat, 18 Oct 2025 11:45:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97p-00056t-6i; Sat, 18 Oct 2025 11:45:45 -0400 Received: from mail-swedencentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c202::7] helo=GVXPR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97n-0001Rh-48; Sat, 18 Oct 2025 11:45:44 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:30 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eOazUK+C8HeMOTURv12FFAUBx5RDG3q9gn+RA6bJpdhJCqEjv6Ym2GuHwhi0ukC4sak785qJhEMkROuYbIgLaonxGwcHaEGr/aejHbR9QzHFDNEyFoYQDehSW8E9qPCDnsC7ZPtLf7T47t0FNspaNrR9OlBWA/qPy6IDpWRMYkxodrylyDZnPhiVYcNokGyp4F8KABWQ9hVl9wlrLsOzJkTrCjrCpOjVqCt1IToff8U9MT2febRiSPNdSzQqh7pW1oDoQxm1qe9aVM89AiJCrc2MolBhivv7uZaeBolk4ydt9uLZ3l/5t88qQbWewyO+QvSbj1sAbhtqlglPT4avQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rD7NsZztFtW3xVK32pM36ulHIFJFWt4Xdv66bn0owNU=; b=Iaq+mFiKbXW5yy7HBHPewUxQYhPVz0+gQgjtaYRZsB7jnnAzkIah7iOx58+O6Lh8HwnaaIQyhmuYUMgDu2XKz5Z/UByo0AgBLVMbhTgqgXrWm3lR8VLWShwiV282H8u4sUgRabPaIlWOezbEjQIto0fkem9LOCs8R0HC0d3sdz2GU8/yCx8SVLHHnqrQ6ieEvAu69Lx8yKcUhus0QfZydcoE842SEobuRoAvh73p05ieNeXx9W07Vblh4E9ObKmGMmahX1C7OMQKwjfn/KJXPs7sWmA63upDPOlfq//NladbfMhVDIzXMy+aqeBcA9Cbr3tCTnCtpDYOxtLhCzunFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rD7NsZztFtW3xVK32pM36ulHIFJFWt4Xdv66bn0owNU=; b=W6eJ6XwDaUzySsiRD5KYGb0FYzT2Iklya5qkUF7cCaaZOoXB3TRBqVVM/o/ozNemlJwaE5F5Y2+RDFFTnncRlviZvGSHv0pfPKkrtMPTyjfgzeWhjKqxCPlcAPJZq8TFQyCDU4VFeOG5d3mWNeK7B7OYXbtyYgqEgNDwt+BFRGx6iFRjL7jyWIic7qFLWQ/oOivB4mXzbBi5hdQ3/Yc/xsQHoY4Ty3WbWlPNK74ORKeyUl/LfRyMqr3twgyQO1sdCHbJdlkn2rd+KfHTIVbD/nIg8Vf/HhOh5lAjAC1QP4TnNbnTQbmXzGGyBJklxq+CWf23blL1sAWuhHkI2JZmyQ== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic , Alistair Francis Subject: [PATCH v13 07/13] target/riscv: Add Xmipslsp instructions Thread-Topic: [PATCH v13 07/13] target/riscv: Add Xmipslsp instructions Thread-Index: AQHcQEY7/aNsEhoFzkuu28+RNx6AqA== Date: Sat, 18 Oct 2025 15:45:30 +0000 Message-ID: <20251018154522.745788-8-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: 272a8ab2-91db-4153-86ab-08de0e5d5ddd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|7416014|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?sps9QOuSYsqoN/xXpTn25ZwPYEZlwF+K4fhunIV2XC9efDvh7PTQLbVTJo?= =?iso-8859-1?Q?PSLpOU2eWZDNcX5T9RyZB0PGsaSnac6sZD9S04Hivj3BIhLTy6xFwnJPjw?= =?iso-8859-1?Q?uZgCztBGw+ycmydAT4zVGefieObsQqs9WurBlyzpn1uK09SzboZjtyOhff?= =?iso-8859-1?Q?NMtvcwoyQ6RP5/2dJInCBiPLlatRUE1R7YskdnugDPSmN1xsMOLjLk67zA?= =?iso-8859-1?Q?fdYLW5jhJp7PTT6NcEZQOCtnP2hgUmHzbgI0+2rwM2oG3kEV3ICQme3IsK?= =?iso-8859-1?Q?ORqk1MQqWfbJyVq2ESAw5PHGGxl+vMqnCb/cz3EQWA9PuN/YLYyKYxP1Yl?= =?iso-8859-1?Q?Zo71ARe17qV03OzUcW3drckf4zJwN2Hi/tnrol7eZOYY3AvFccK9SI583G?= =?iso-8859-1?Q?X992jTeMrJ57apPAl+q4uvvg661z9NN9mQKG+iVC4u39T4qUsW/9d8JjY0?= =?iso-8859-1?Q?Ig1WJTgbRcP1SQGwls8nNniNgXcfm+iFhtFfEQGSxNrt5C7xRtvxg12VV7?= =?iso-8859-1?Q?qJUrvOsX2K+6Sam7RNBmxzQRkxyniXwyvTUsXkFq2FF9g+mbhC5LkC4OoZ?= =?iso-8859-1?Q?5RPZ98nlhEV1fd/USyV5cf3aPjQFd6u/xqKUhneImj4e8Lz/DIMLc6f8hy?= =?iso-8859-1?Q?sxHqbXZisqe6HqLeeOyQDgT4j6WGTb4rCxSktqlJttgPJCoUZgIKThTZnV?= =?iso-8859-1?Q?Q18WETAlX6LxI1+3ZKcbjwcfiQ2s8t1wkTei5NSr/5BkygYj8Oq7436PD1?= =?iso-8859-1?Q?HbQi60m6jZgQKwju6Es/SrOqMU2Mj4SJabbuZnpQ24gdnTYWYCIXYJ2oK0?= =?iso-8859-1?Q?8YDZ0/gCrLwycJo49se7FHdmbG3I4RVNn8sYU71lFKgdaoZXCnvqILya3T?= =?iso-8859-1?Q?KltX4vZkrNp8duuiVTeVMNX7ID45Wm5G7Y5RWoQVtNUdgu+K9vQ+6pde6n?= =?iso-8859-1?Q?fXHqtXsmss4kCTAMBDQn0d4xKdQQ3sS7jdhDlsS+JXOeEWAMPxJiUn7Aw8?= =?iso-8859-1?Q?iiKHOuLnj18m1kkVDkvpLm3JxmVYQkKVtlyk6LgMLhXjmNwwqyOqEA1I7E?= =?iso-8859-1?Q?4RF6JelGjDwEZ8NhY2zEHJllf3PfYV1//O31x13AzQUE3WBHY0SlBZoMyk?= =?iso-8859-1?Q?njukDK/Wyjkn0qH0qL3hbVdmaCTrzDSDAygRQCis+6rwSsVHlhzmusisji?= =?iso-8859-1?Q?Cwl+DyYGRUUwOBl19M3vW1wEmB2sNHMeQgJRfpihfA+cwiqnRJHIEgRRB8?= =?iso-8859-1?Q?6B+NqbnjElr4SkNlenyo11k128U7o0H8Y/NBuqm5eVh1uhfDxld0yR8fnT?= =?iso-8859-1?Q?mZsXnVGYlDBbPtpYCq+Jxz+lVfckW8FB+O8X4lyqY5nuGPZOa22JdPAphm?= =?iso-8859-1?Q?kHyN7OeM/vovllaYYpcuN+wfSKjPMiQPZQUMA+HY/jGRDrNsfZpJIkt89X?= =?iso-8859-1?Q?LRfwT0s9tD2OsX5WHTUmw/I2vF+hWlA8rTuyMWCnzjfA2dTyMri5jyWAeA?= =?iso-8859-1?Q?12CQtV+xFuTkHmVM76avICPal05vQixXxxXR3b9JB8XHg0KTs09B0G3cB4?= =?iso-8859-1?Q?QI6o/q5RlLAShPuU0QVdbLApJZSi?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?mE2n7e4/kuoeWlCuPamitphRnMO4ql/+YrWpo/6jnAjxwFsEQ+DUf6CZXk?= =?iso-8859-1?Q?7FQgai2PHw7qzjOjMhzaNrpqewwzxuoWYyD2sYz0dcFJxrYxfxq4HgPjW5?= =?iso-8859-1?Q?yGCz2QBuaRKjpGg8txEYXS1rRkni7JcMUf7XdcfumV3Ws39iLT+q59im5s?= =?iso-8859-1?Q?V+biqz/K9EOwZ3FbXv3nOYnDZW0rmpYXlgF2C5zhfIvoJ2lG7f4Gwr8cUg?= =?iso-8859-1?Q?loYApsc1PYviide0S0LDz7rWymmCPJTPDcHZKdQ/cnPXInOYKk9Tc0UXOd?= =?iso-8859-1?Q?cKqsUCiW/61VohnnOB5eE7PQLkGFVE1d9zEM9VMddQqyg2/pNUKXJfffPD?= =?iso-8859-1?Q?gXQcHMZ1xHuzZbwR2sdRU+3qsNdl2o0OpAtPG9eikjbvQ3/QchN/Nd6TLK?= =?iso-8859-1?Q?e6EplBgO6M2HoMRiXrWLqPEFTZSvKeif2d1AiJoTcV0y4bfwKWsEAg/EX4?= =?iso-8859-1?Q?W7OfuMUaQqsgBtcDSDj0wYjBcRoGgkSFm9JyhkJpPR4WH62VZeql6yKR5Y?= =?iso-8859-1?Q?m1/z6hbDdOe8oqB3Rh/mc6kDPWquV8NQeH3XgKPeZGjHy6X6BsFSbt4oW5?= =?iso-8859-1?Q?voiU3H5s1NyJgtWOJhbUzju7QMg8LDtJqKSU7BXA0dT7uO1ELALizsHu6B?= =?iso-8859-1?Q?UGD4dn7NMS+LN3jGXUf8T4CP21xl6YJQHMdk7FwHIpCE/tWnhatjpLc2wb?= =?iso-8859-1?Q?bVuuiAIewwfQ0SjXvkHmubPhgUlNkEY2SMxQsPZaV0+4MobfYOKIwxZ6CR?= =?iso-8859-1?Q?DeW09hkBVGoBWBRpQX04euf9giZVynCnBoutWNh7CIDN7bHFEFGxfRPt7w?= =?iso-8859-1?Q?FGy/izxqZh/67ufuY5cvYsfKvXd/X0rnxPl6rUMqNtBnFPyz7T7OiSWjtP?= =?iso-8859-1?Q?hZSWs7e1Wb7e7IF07815wnf9qgVZZSYfzTrLjoMxjGk4MX1Mr5OMRY1xA8?= =?iso-8859-1?Q?M+v1RJ/V3yL4IddRhmwHr+TYRoCNW2ZWolrGwwSXYP9OeMcJs3oXjsG8Rx?= =?iso-8859-1?Q?tse5rUihTw2wcjR5HBSuDys9i+Ic+yHm3Mfix/AvLLVbnTQqzquE06/GGN?= =?iso-8859-1?Q?te3jN5R1RBCDam46SbIEZ8ZPRSGwK66dWkijFHxnI4ET5F51Y8neBvlQxs?= =?iso-8859-1?Q?rNpgS6avjAlubMv5Z3HdM+5LyiyBbRDPEEm+Q34lLNyyoSla8FeYhoJPNO?= =?iso-8859-1?Q?Y1pZLfjGu5Pl//gECuEEIiHvNKpZkKPsU7l9oG2zsmH/bf9chml7CGZv+K?= =?iso-8859-1?Q?2OCagIJEdVhAABuOPxOsv+YF+ObB9fzwbhIDm8j75T78K59oSTCoZftkuP?= =?iso-8859-1?Q?vQsY5ygV22MgRq3zv8kF9gjZAWGDqXhYfboy/6k8WKX4NIj1PKOxyF7Zt9?= =?iso-8859-1?Q?gqhM5GBiAwBdmJ4WWTL5XXeXaSpvzqU/pG11JRR/vLLnWpSDXXxnUI1vvh?= =?iso-8859-1?Q?uzC1uxZKnDzZ/6YttY5AQgyywIpmY4MPRyKZAb6AjB/fZGbl79LBVOkPy+?= =?iso-8859-1?Q?MoV1DWXxePkMsXP30IoTJxy9tiEfznGHB0XylYIovecKTwPaf+qDRrZuZe?= =?iso-8859-1?Q?XMon1cm70fiz+weg1k6jC0mVrwlWU2SwB7qd94Qy0ow+e3DrT7NpEiD11N?= =?iso-8859-1?Q?uK1lhABcqKaD8YP/u+ms9qFHIbLoxiRjrG8SbyOh+4vqzGThKcz9Idwxp4?= =?iso-8859-1?Q?sATLZjuDW914jzSkmGY=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 272a8ab2-91db-4153-86ab-08de0e5d5ddd X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:30.2540 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yzmQxDsxi5FKq53OD2b9bBESeRdRuNW309Ysw5+3i/jigGDbHlxOmSZtoW7TQiNkbWdiGLDjX29I+HvZBYzEfAbczMhuNhVCGjIs0WKUvTE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c202::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=GVXPR05CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802408333158500 Content-Type: text/plain; charset="utf-8" Add MIPS P8700 ldp, lwp, sdp, swp instructions. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Acked-by: Daniel Henrique Barboza Acked-by: Alistair Francis --- target/riscv/cpu.c | 3 + target/riscv/cpu_cfg.h | 2 +- target/riscv/cpu_cfg_fields.h.inc | 1 + target/riscv/insn_trans/trans_xmips.c.inc | 88 +++++++++++++++++++++++ target/riscv/xmips.decode | 23 ++++++ 5 files changed, 116 insertions(+), 1 deletion(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 9fda450683..c09ce9fc62 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -251,6 +251,7 @@ const RISCVIsaExtData isa_edata_arr[] =3D { ISA_EXT_DATA_ENTRY(svvptc, PRIV_VERSION_1_13_0, ext_svvptc), ISA_EXT_DATA_ENTRY(xmipscbop, PRIV_VERSION_1_12_0, ext_xmipscbop), ISA_EXT_DATA_ENTRY(xmipscmov, PRIV_VERSION_1_12_0, ext_xmipscmov), + ISA_EXT_DATA_ENTRY(xmipslsp, PRIV_VERSION_1_12_0, ext_xmipslsp), ISA_EXT_DATA_ENTRY(xtheadba, PRIV_VERSION_1_11_0, ext_xtheadba), ISA_EXT_DATA_ENTRY(xtheadbb, PRIV_VERSION_1_11_0, ext_xtheadbb), ISA_EXT_DATA_ENTRY(xtheadbs, PRIV_VERSION_1_11_0, ext_xtheadbs), @@ -1385,6 +1386,7 @@ const RISCVCPUMultiExtConfig riscv_cpu_vendor_exts[] = =3D { MULTI_EXT_CFG_BOOL("xventanacondops", ext_XVentanaCondOps, false), MULTI_EXT_CFG_BOOL("xmipscbop", ext_xmipscbop, false), MULTI_EXT_CFG_BOOL("xmipscmov", ext_xmipscmov, false), + MULTI_EXT_CFG_BOOL("xmipslsp", ext_xmipslsp, false), =20 { }, }; @@ -3299,6 +3301,7 @@ static const TypeInfo riscv_cpu_type_infos[] =3D { .cfg.pmp =3D true, .cfg.ext_zba =3D true, .cfg.ext_zbb =3D true, + .cfg.ext_xmipslsp =3D true, .cfg.ext_xmipscbop =3D true, .cfg.ext_xmipscmov =3D true, .cfg.marchid =3D 0x8000000000000201, diff --git a/target/riscv/cpu_cfg.h b/target/riscv/cpu_cfg.h index e4d5039c49..cd1cba797c 100644 --- a/target/riscv/cpu_cfg.h +++ b/target/riscv/cpu_cfg.h @@ -38,7 +38,7 @@ static inline bool always_true_p(const RISCVCPUConfig *cf= g __attribute__((__unus =20 static inline bool has_xmips_p(const RISCVCPUConfig *cfg) { - return cfg->ext_xmipscbop || cfg->ext_xmipscmov; + return cfg->ext_xmipscbop || cfg->ext_xmipscmov || cfg->ext_xmipslsp; } =20 static inline bool has_xthead_p(const RISCVCPUConfig *cfg) diff --git a/target/riscv/cpu_cfg_fields.h.inc b/target/riscv/cpu_cfg_field= s.h.inc index dd3ee7ba2b..7c624ab677 100644 --- a/target/riscv/cpu_cfg_fields.h.inc +++ b/target/riscv/cpu_cfg_fields.h.inc @@ -149,6 +149,7 @@ BOOL_FIELD(ext_xtheadsync) BOOL_FIELD(ext_XVentanaCondOps) BOOL_FIELD(ext_xmipscbop) BOOL_FIELD(ext_xmipscmov) +BOOL_FIELD(ext_xmipslsp) =20 BOOL_FIELD(mmu) BOOL_FIELD(pmp) diff --git a/target/riscv/insn_trans/trans_xmips.c.inc b/target/riscv/insn_= trans/trans_xmips.c.inc index bfe9046153..9a72f3392f 100644 --- a/target/riscv/insn_trans/trans_xmips.c.inc +++ b/target/riscv/insn_trans/trans_xmips.c.inc @@ -21,6 +21,12 @@ } \ } while (0) =20 +#define REQUIRE_XMIPSLSP(ctx) do { \ + if (!ctx->cfg_ptr->ext_xmipslsp) { \ + return false; \ + } \ +} while (0) + /* Conditional move by MIPS. */ static bool trans_ccmov(DisasContext *ctx, arg_ccmov *a) { @@ -38,6 +44,88 @@ static bool trans_ccmov(DisasContext *ctx, arg_ccmov *a) return true; } =20 +/* Load Doubleword Pair. */ +static bool trans_ldp(DisasContext *ctx, arg_ldp *a) +{ + REQUIRE_XMIPSLSP(ctx); + REQUIRE_64_OR_128BIT(ctx); + + TCGv src =3D get_gpr(ctx, a->rs1, EXT_NONE); + TCGv dest0 =3D dest_gpr(ctx, a->rd); + TCGv dest1 =3D dest_gpr(ctx, a->rs3); + TCGv addr =3D tcg_temp_new(); + + tcg_gen_addi_tl(addr, src, a->imm_y); + tcg_gen_qemu_ld_tl(dest0, addr, ctx->mem_idx, MO_TESQ); + gen_set_gpr(ctx, a->rd, dest0); + + tcg_gen_addi_tl(addr, addr, 8); + tcg_gen_qemu_ld_tl(dest1, addr, ctx->mem_idx, MO_TESQ); + gen_set_gpr(ctx, a->rs3, dest1); + + return true; +} + +/* Load Word Pair. */ +static bool trans_lwp(DisasContext *ctx, arg_lwp *a) +{ + REQUIRE_XMIPSLSP(ctx); + + TCGv src =3D get_gpr(ctx, a->rs1, EXT_NONE); + TCGv dest0 =3D dest_gpr(ctx, a->rd); + TCGv dest1 =3D dest_gpr(ctx, a->rs3); + TCGv addr =3D tcg_temp_new(); + + tcg_gen_addi_tl(addr, src, a->imm_x); + tcg_gen_qemu_ld_tl(dest0, addr, ctx->mem_idx, MO_TESL); + gen_set_gpr(ctx, a->rd, dest0); + + tcg_gen_addi_tl(addr, addr, 4); + tcg_gen_qemu_ld_tl(dest1, addr, ctx->mem_idx, MO_TESL); + gen_set_gpr(ctx, a->rs3, dest1); + + return true; +} + +/* Store Doubleword Pair. */ +static bool trans_sdp(DisasContext *ctx, arg_sdp *a) +{ + REQUIRE_XMIPSLSP(ctx); + REQUIRE_64_OR_128BIT(ctx); + + TCGv src =3D get_gpr(ctx, a->rs1, EXT_NONE); + TCGv data0 =3D get_gpr(ctx, a->rs2, EXT_NONE); + TCGv data1 =3D get_gpr(ctx, a->rs3, EXT_NONE); + TCGv addr =3D tcg_temp_new(); + + tcg_gen_addi_tl(addr, src, a->imm_w); + tcg_gen_qemu_st_tl(data0, addr, ctx->mem_idx, MO_TEUQ); + + tcg_gen_addi_tl(addr, addr, 8); + tcg_gen_qemu_st_tl(data1, addr, ctx->mem_idx, MO_TEUQ); + + return true; +} + +/* Store Word Pair. */ +static bool trans_swp(DisasContext *ctx, arg_swp *a) +{ + REQUIRE_XMIPSLSP(ctx); + + TCGv src =3D get_gpr(ctx, a->rs1, EXT_NONE); + TCGv data0 =3D get_gpr(ctx, a->rs2, EXT_NONE); + TCGv data1 =3D get_gpr(ctx, a->rs3, EXT_NONE); + TCGv addr =3D tcg_temp_new(); + + tcg_gen_addi_tl(addr, src, a->imm_v); + tcg_gen_qemu_st_tl(data0, addr, ctx->mem_idx, MO_TESL); + + tcg_gen_addi_tl(addr, addr, 4); + tcg_gen_qemu_st_tl(data1, addr, ctx->mem_idx, MO_TESL); + + return true; +} + /* Move data from memory into cache. */ static bool trans_pref(DisasContext *ctx, arg_pref *a) { diff --git a/target/riscv/xmips.decode b/target/riscv/xmips.decode index 4215813b32..3174f17aa4 100644 --- a/target/riscv/xmips.decode +++ b/target/riscv/xmips.decode @@ -8,5 +8,28 @@ # Reference: MIPS P8700 instructions # (https://mips.com/products/hardware/p8700/) =20 +# Fields +%rs3 27:5 +%rs2 20:5 +%rs1 15:5 +%rd 7:5 +%imm_9 20:9 +%imm_hint 7:5 +%imm_v 25:2 9:3 !function=3Dex_shift_2 +%imm_w 25:2 10:2 !function=3Dex_shift_3 +%imm_x 22:5 !function=3Dex_shift_2 +%imm_y 23:4 !function=3Dex_shift_3 + +# Formats +@r4_immv ..... .. ..... ..... ... ... .. ....... %rs2 %rs3 %imm_v %rs1 +@r4_immw ..... .. ..... ..... ... .. ... ....... %rs2 %rs3 %imm_w %rs1 +@r4_immx ..... ..... .. ..... ... ..... ....... %rs3 %imm_x %rs1 %rd +@r4_immy ..... .... ... ..... ... ..... ....... %rs3 %imm_y %rs1 %rd + +# *** RV64 MIPS Extension *** ccmov rs3:5 11 rs2:5 rs1:5 011 rd:5 0001011 pref 000 imm_9:9 rs1:5 000 imm_hint:5 0001011 +ldp ..... .... 000 ..... 100 ..... 0001011 @r4_immy +lwp ..... ..... 01 ..... 100 ..... 0001011 @r4_immx +sdp ..... .. ..... ..... 101 .. 0000001011 @r4_immw +swp ..... .. ..... ..... 101 ... 010001011 @r4_immv --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802562; cv=pass; d=zohomail.com; s=zohoarc; b=DPzQDk/fkgFZbIYFsrV1J7iUjT4FxPb1UaKBcX7NCH/YiAC+IKRccrPRj7zQHFSEvpftAXUteMjVYNGWkbCV5EFeDCyhWVaKHJQHQpBity8MwEyMnIQDAGprr+e1ZY/2GfxF6WXqdKnSMM1vJAtAYT4OLPz4tjMg2+JzMnqAwcI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802562; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oyW3Q7ZQ6oaIBLODAOp8zDllh3sILwEUmncfhjuRgAc=; b=nxpXXow+kuSy0RX8g0mx8RYJuGEC+RTXqoa3P1RhFHOgZqFAmxQPr5ULOXhUYsS/NX8zEWfW3BHVQOITZf4Dd3ihuJAeTBrRlBlWaEF+9GByi7jbZTzR1N+Be0wa9uzltsZR9zIKzJQll4aExzzr2z6i72uFVwHUZRBCHf2bOOc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802562235935.3504323950516; Sat, 18 Oct 2025 08:49:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA97u-0005A5-JS; Sat, 18 Oct 2025 11:45:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97q-00057q-BX; Sat, 18 Oct 2025 11:45:46 -0400 Received: from mail-northeuropeazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c200::5] helo=DUZPR83CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97o-0001QR-1F; Sat, 18 Oct 2025 11:45:46 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:30 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Wiw0eJCLBI8m9nlcFGGLdw6PpnJMoGWgG7IwSkP6LlzFbStCJ0oDA0j6xqDaa8hajbluFNwZyb7RM4gc0mdszaxwWt5SNVQLCM9EE3qvQRmtMhLTbxXOoyR941QXHPxwcvSlbI+zONbdEjG0ubs9+M7hGxg6ZxyVUb0krFo+wrU5o8jTV34NCvz+pdDChdhptui10kkZ4k9E1pd92225W9jZT5++E+6R0rLcjedouCNN3Gbp/a+AaQMDjua/W9U0Zs+6HV8qpnuBdj6d4ZezXZFNJNjZeelK2MT7z+121RO3n4p74xYBm0pBvyISQmX60B/8J6PpUL7W6Dnmvg4Unw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oyW3Q7ZQ6oaIBLODAOp8zDllh3sILwEUmncfhjuRgAc=; b=hGWVeYczYm4RRpm80Y+3DhLODmOgSg3MuWYGF1kynusHBeX57M1M6TQPQGPS6WItGKTE8Sj417qS2Eu/als+juzmhW9B2gi6qcomlPsu31ZCQ+NX6TLQaxzYDbzEq8+5EVALtRnnPygH2JjTjjxi/L7hjDDxT3AdUdqH9EcP9EA50cUwFHuruaoG137Jkjkun0lYp/QkseNKM5hdGe+YmRCAnhpqmpYCL/C5gf9mBMNbf9vhImK1miYC9/BwgPxjewwzFrm/klovS43+lzYNkVHzRiB2ZHGupS1NjE/8fjdu19akgqThjfpnfZ39oz8Xcd+iz0Zx4AXJBbtVdmhXxg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oyW3Q7ZQ6oaIBLODAOp8zDllh3sILwEUmncfhjuRgAc=; b=rH0pL7Jvx8zvMx1C1SMZHQaIAALAw5jVla0lkW0VVP4oQWcRnfnJNOVkz//ek3uzUeuXILKkBX5BwcZ7suVv9SDaN5cVWWhSNTZ+ukAIZRte7uougvNdRFXIhIPZp0ddWiw9pXbGL+HQY2mGn2J/MeTnJDZHOj9/5RZGzYPUOyp+KUU2yljqZLQiJUpzknOItVHRMDlpFv2zkwKT4HRzqeQ8nvlgMIQ0f9IG0Tw8gH9GTxCqTVHuyZNZQTHvtqSzewzi4OJdKyKTgz0z3VI8JfhYl1dZaLTAAD0y/7e0N5Up+JOWYFd4xkYRc/wwRuoPVQYFNZT92IQHaIi1sj1ZRw== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic Subject: [PATCH v13 08/13] hw/misc: Add RISC-V CMGCR device implementation Thread-Topic: [PATCH v13 08/13] hw/misc: Add RISC-V CMGCR device implementation Thread-Index: AQHcQEY75j3gdGdOP0i1T6+ZpvQfYg== Date: Sat, 18 Oct 2025 15:45:30 +0000 Message-ID: <20251018154522.745788-9-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: 1d4f6da1-5697-4773-417f-08de0e5d5e0d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?2/KVsz1dcYlR6iUO/W6gpY9MvnfCwEuS6jlyfEt4R7SIgzsuGWQc4EraRs?= =?iso-8859-1?Q?1cpRZTeIK1YhaZvPLJCH2nJtJUG+oJcNQ76FOsHKqwqB3yyNbZNBwTHnut?= =?iso-8859-1?Q?EeLNcAyHPmG/813qRrWx/g9pr3L4HT7QVdyXoW6dYIKpqqj/AFh7r3spMe?= =?iso-8859-1?Q?rSpA/R3SxSzznAqOBDu7/TmGW1JgqtlbHvR6j7qwrK4I3fWRiKmb3K+MuC?= =?iso-8859-1?Q?qW/Oa9Sm8sV7Ylfi4u1svLd3l56qGLU0wAT0iFMyLJR5iHdvm0Cy48+B21?= =?iso-8859-1?Q?mnVuWIll4o4Q6Tc0/iT3QCAE2+CKnYmTjF1nXlQ0j2F0bBFCvsBt+whbRr?= =?iso-8859-1?Q?M4wEvxSSiOtT/Xk+OGcZlLNEpSJWMc4Ckl49iBvIfYXpLe+VDl38Tr3h8l?= =?iso-8859-1?Q?gUDHn2I4vYXOnWHdGNcy/mJG64MDchuI4SYZriSnFauwAEwEAvMsfGR5yO?= =?iso-8859-1?Q?cl38Yh4Wsd0JkALlg9gf4rv6/AHuxy49ssG1xD0s/0VSTdWhDbg1USMjvw?= =?iso-8859-1?Q?4OzZSdoDWSdc6yKEwhf81ct4gCYsgWZKU9IGhUiprK2huG5nLF3gLUU68C?= =?iso-8859-1?Q?zExPLQaFgPCdWwd9Vz0bj0STlLqM6Gm137d5qf19y+F4ehVOqB4aVwQbJw?= =?iso-8859-1?Q?xA8/XvY6Uyaar7fEerYhy4S+P/4GYYwLxYh8OoisBP+nS5qi4jgCVHajTU?= =?iso-8859-1?Q?rkpqV1p/9Q1rT5SLL210wvq8AQuIpfdx5HCaKXBF838S9afowSwebglUl/?= =?iso-8859-1?Q?9zm78cgc0fUZIijH5LdCOlF/cQ5echW1oj9s2/4FSeWPu0SKY7LERtAuTC?= =?iso-8859-1?Q?CkFe6WH9loErelWnVV52/cu/2+iKUZeQyRhn7qENN82TRgkwajEP4P/YVu?= =?iso-8859-1?Q?sso0s6qziXV8swIMbMFILlurDCKjgQweZstfagXloC4ZUUdO4pQn6xIV76?= =?iso-8859-1?Q?jt6Q+U9b2AkZr+oSp05UOMhKQqWLst+AE9XcgcleeSOUl+liStML6983Io?= =?iso-8859-1?Q?xvMGHa8EUU1a+Bh81bNV2/QTk8sdQju0rfw4jY46xpfGykbVnAP+4QMQYh?= =?iso-8859-1?Q?+iiiv+2XzHAZgiTErIPp77Qvr/7I9qCY1Evfqx/SFxxnDD8X+jzEtvjVqp?= =?iso-8859-1?Q?jbEho/qTJILBaapFJLDjCMuFkEu9XZwnkmvfmvs3InkCD/oz4XVoLDF8/p?= =?iso-8859-1?Q?qUuk4z7gsYvvMCEm9sMhGDLSuRgie3vqZK4YRz505+q2Fqq3VWMLQeWvRh?= =?iso-8859-1?Q?K9HNgUllz2lHUadFwMrOOz1oRVhRiSzRrk/e1JikFxcgOm5bZ3a35AZot4?= =?iso-8859-1?Q?o94qsF/Y/MmHjQAe2bYVdt4pKa6B0RNNY3Xv4oYur7LNcCxyA+M+zO9T+A?= =?iso-8859-1?Q?lZ/FGfKdm3cKejjUaZG1F68VbOt/9XAup9vGAigOna6zdQ/rOG1c+aGlEt?= =?iso-8859-1?Q?u70GP+pg+leXnY214ulU0kESuLXQmZic8umVWwucJYGzgdQm3XlVqpW6Lw?= =?iso-8859-1?Q?aV5sK7L2xVUC9GOKoxwTKA+m6zSJI88rwMuxGnkp6JezHs3jTNWldAaqMj?= =?iso-8859-1?Q?ZD5IURWeYIjygNXV+89B1ngZBnMr?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?I8U+vIPLTmqGRuRc1TJF60tvJGChn5vKeOLqTGeHHcMMYg+GCE3krqDFxa?= =?iso-8859-1?Q?/m6Ei252JKv84weNiyERL6lBhKKCUov8Rv3fxEcugXLunq1b9pml5rM1xv?= =?iso-8859-1?Q?1lFx6czGAzF8PQyuz8INyYIdtPotGYXxf9az7ifLCqG7scOd1ikuCEwOem?= =?iso-8859-1?Q?1kex+ARj2wwoGvxGrjvvpw7Phlho0+Z5MytdqZ3FN79m4C9MW7h6PXw9BY?= =?iso-8859-1?Q?R6UPpOUB6fTDCMDv3keAgnLK1S1iSUTvZHp9a4/Cemj2uMlQuVZPQcgl0B?= =?iso-8859-1?Q?grBkLQ+F6C/DRUNhJw0VwD023hrbZL4G6HyQ/sxqk8em1OldCccuy0G7lv?= =?iso-8859-1?Q?UorIWUkLlJBYjOEL2xAKNiOe43a65yqbtk28DGARFvdkhAiWwX27McBoBe?= =?iso-8859-1?Q?VH79/cTwtqWJMx6gpw6xLN+KvF34zIUZpk9R3LyLeCRaURh4lySH2/HkTx?= =?iso-8859-1?Q?Jv41txZZMzMFAjSZQOaKEVg58txjGmzNHISg9sQ0A8LtSMa8PL8aS7lLj2?= =?iso-8859-1?Q?mN7/skHx74rhxpkFbD34bwY6neaWfP/wWobKmqxhnSk2wbssX704T1DNuW?= =?iso-8859-1?Q?Z+miZbn5qyl47QbsJycKmI9uEmgBxG2dVARAINVRxxEIxBg7s4EWK2Etlj?= =?iso-8859-1?Q?2UI++4m8lG04UVIRRJHAKdmgtjhPJKUsADm9lQFbKUMpuzZhqLw/LiRPI4?= =?iso-8859-1?Q?+W0R8s0tWVsysEG7VexGkLqu7/ufqED468wTAgEU3EQPasJsDSsWuONe6r?= =?iso-8859-1?Q?fJiR24VCmwFqpWUVNkxEfgi8/4NGJsPsyslb7n/h7bkyYoMAyvpNmBNKl9?= =?iso-8859-1?Q?pyuL4SdnnSelumy6WJ+NVt+sSm2ZdEmgoMNAmGdzo2z+ib4t1YUhM2QMbl?= =?iso-8859-1?Q?5Yzd+u5Coq+Ur2u9/14FKCzqyONc9h+XNepvMQVF47glI08X5LA2lUXImx?= =?iso-8859-1?Q?/Up0nMZ/VG6r0eyra43GKayQLwGOlTi+2ADcUqSjdDde2zeXK0faCsdH5G?= =?iso-8859-1?Q?0EHBZmzLIFBSXQ0rJarzZ5PvIopi5+LlrnWuPoDPVKx7tlDzncOtip58yk?= =?iso-8859-1?Q?XfgQR7ILJiaKkdUUm0g3LOzePeaAlugvOeDvbfBZ3NkFxUw81K6q0k7F+R?= =?iso-8859-1?Q?eSd44DidEg+NUpZRAl4L8EdEgvhTWhWFsa520T54woQLppy7WSBnvsZdUg?= =?iso-8859-1?Q?bb85kM55sfLQfNJjlYrOMarTJooGfBcaqVuykmIZal4tzvZO/C5IMtme9I?= =?iso-8859-1?Q?nhtFkimJU98WQkIzi19/Rk4T5q5x/12QeXh5BrWwL+y5T9EA195w5U9WoK?= =?iso-8859-1?Q?T2MVG2sHeRkB8VqPObNb8AVt7YGdV4YrzS8vbp9PPFrCFpFmjQX3qyMkTp?= =?iso-8859-1?Q?rzzBVhiI75ekfaMyVNAmDMExxAIWb/BPaE9lew6iOvhTuPrJjLxl0eF4uS?= =?iso-8859-1?Q?ajPW4KYqFtvo77Dc4dhVBDl9ecO6eQsXVWWpCbkbw49y8YPALffiAnLgEt?= =?iso-8859-1?Q?HAuyu/s9D29wPVbAW7umH92aevCeNNRvaBpgPNyMxcFQlrxG3tFY+pVwjO?= =?iso-8859-1?Q?gkIRdLJVu9hywjC05qZu+9RoFzbwknWbjV2/P2aooOE/+CO5sthbEVzM1D?= =?iso-8859-1?Q?rh5ffJ0sneTpBbLHIQIz3IzJRUgDwDnTaZZ7Kb2ae+bWW7F5ouZAv4Q/zc?= =?iso-8859-1?Q?aEFeMbp+YpUWRL6WHzY=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d4f6da1-5697-4773-417f-08de0e5d5e0d X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:30.5503 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lA7adUoAD6hfZl2zK6Aw+t5kNwLNsrkIEtVyLgneyQJ+VFQwe+a9B7v+V+7U2Uikr7X+G2b7fktIQgsHt+KLu5+k2ufzeo+Z8qL/2SAjjF0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c200::5; envelope-from=Djordje.Todorovic@htecgroup.com; helo=DUZPR83CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802564303158500 Content-Type: text/plain; charset="utf-8" Add RISC-V implementation of the Coherent Manager Global Control Register (CMGCR) device. It is based on the existing MIPS CMGCR implementation but adapted for RISC-V systems. The CMGCR device provides global system control for multi-core configurations in RISC-V systems. This is needed for the MIPS BOSTON AIA board. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Reviewed-by: Daniel Henrique Barboza --- hw/misc/Kconfig | 9 ++ hw/misc/meson.build | 2 + hw/misc/riscv_cmgcr.c | 248 ++++++++++++++++++++++++++++++++++ include/hw/misc/riscv_cmgcr.h | 50 +++++++ 4 files changed, 309 insertions(+) create mode 100644 hw/misc/riscv_cmgcr.c create mode 100644 include/hw/misc/riscv_cmgcr.h diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 4e35657468..222efb12fb 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -121,6 +121,15 @@ config MIPS_ITU bool depends on TCG =20 +config RISCV_MIPS_CMGCR + bool + +config MIPS_BOSTON_AIA + bool + default y + depends on RISCV64 + select RISCV_MIPS_CMGCR + config MPS2_FPGAIO bool select LED diff --git a/hw/misc/meson.build b/hw/misc/meson.build index b1d8d8e5d2..489f0f3319 100644 --- a/hw/misc/meson.build +++ b/hw/misc/meson.build @@ -157,6 +157,8 @@ specific_ss.add(when: 'CONFIG_MAC_VIA', if_true: files(= 'mac_via.c')) specific_ss.add(when: 'CONFIG_MIPS_CPS', if_true: files('mips_cmgcr.c', 'm= ips_cpc.c')) specific_ss.add(when: 'CONFIG_MIPS_ITU', if_true: files('mips_itu.c')) =20 +specific_ss.add(when: 'CONFIG_RISCV_MIPS_CMGCR', if_true: files('riscv_cmg= cr.c')) + system_ss.add(when: 'CONFIG_SBSA_REF', if_true: files('sbsa_ec.c')) =20 # HPPA devices diff --git a/hw/misc/riscv_cmgcr.c b/hw/misc/riscv_cmgcr.c new file mode 100644 index 0000000000..8e7b86867a --- /dev/null +++ b/hw/misc/riscv_cmgcr.c @@ -0,0 +1,248 @@ +/* + * This file is subject to the terms and conditions of the GNU General Pub= lic + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. + * Authors: Sanjay Lal + * + * Copyright (C) 2015 Imagination Technologies + * + * Copyright (C) 2025 MIPS + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + * Reference: MIPS P8700 documentation + * (https://mips.com/products/hardware/p8700/) + */ + +#include "qemu/osdep.h" +#include "qemu/log.h" +#include "qemu/module.h" +#include "qapi/error.h" +#include "hw/sysbus.h" +#include "migration/vmstate.h" +#include "hw/misc/riscv_cmgcr.h" +#include "hw/qdev-properties.h" + +#include "cpu.h" + +#define CM_RESET_VEC 0x1FC00000 +#define GCR_ADDRSPACE_SZ 0x8000 + +/* Offsets to register blocks */ +#define RISCV_GCB_OFS 0x0000 /* Global Control Block */ +#define RISCV_CLCB_OFS 0x2000 /* Core Control Block */ +#define RISCV_CORE_REG_STRIDE 0x100 /* Stride between core-specific regist= ers */ + +/* Global Control Block Register Map */ +#define GCR_CONFIG_OFS 0x0000 +#define GCR_BASE_OFS 0x0008 +#define GCR_REV_OFS 0x0030 +#define GCR_CPC_STATUS_OFS 0x00F0 +#define GCR_L2_CONFIG_OFS 0x0130 + +/* GCR_L2_CONFIG register fields */ +#define GCR_L2_CONFIG_BYPASS_SHF 20 +#define GCR_L2_CONFIG_BYPASS_MSK ((0x1ULL) << GCR_L2_CONFIG_BYPASS_SHF) + +/* GCR_BASE register fields */ +#define GCR_BASE_GCRBASE_MSK 0xffffffff8000ULL + +/* GCR_CPC_BASE register fields */ +#define GCR_CPC_BASE_CPCEN_MSK 1 +#define GCR_CPC_BASE_CPCBASE_MSK 0xFFFFFFFF8000ULL +#define GCR_CPC_BASE_MSK (GCR_CPC_BASE_CPCEN_MSK | GCR_CPC_BASE_CPCBASE_MS= K) + +/* GCR_CL_RESETBASE_OFS register fields */ +#define GCR_CL_RESET_BASE_RESETBASE_MSK 0xFFFFFFFFFFFFF000U +#define GCR_CL_RESET_BASE_MSK GCR_CL_RESET_BASE_RESETBASE_MSK + +static inline bool is_cpc_connected(RISCVGCRState *s) +{ + return s->cpc_mr !=3D NULL; +} + +static inline void update_cpc_base(RISCVGCRState *gcr, uint64_t val) +{ + if (is_cpc_connected(gcr)) { + gcr->cpc_base =3D val & GCR_CPC_BASE_MSK; + memory_region_transaction_begin(); + memory_region_set_address(gcr->cpc_mr, + gcr->cpc_base & GCR_CPC_BASE_CPCBASE_MSK= ); + memory_region_set_enabled(gcr->cpc_mr, + gcr->cpc_base & GCR_CPC_BASE_CPCEN_MSK); + memory_region_transaction_commit(); + } +} + +static inline void update_gcr_base(RISCVGCRState *gcr, uint64_t val) +{ + gcr->gcr_base =3D val & GCR_BASE_GCRBASE_MSK; + memory_region_set_address(&gcr->iomem, gcr->gcr_base); + + /* + * For boston-aia, cpc_base is set to gcr_base + 0x8001 to enable + * cpc automatically. + */ + update_cpc_base(gcr, val + 0x8001); +} + +/* Read GCR registers */ +static uint64_t gcr_read(void *opaque, hwaddr addr, unsigned size) +{ + RISCVGCRState *gcr =3D (RISCVGCRState *) opaque; + + switch (addr) { + /* Global Control Block Register */ + case GCR_CONFIG_OFS: + /* Set PCORES to 0 */ + return 0; + case GCR_BASE_OFS: + return gcr->gcr_base; + case GCR_REV_OFS: + return gcr->gcr_rev; + case GCR_CPC_STATUS_OFS: + return is_cpc_connected(gcr); + case GCR_L2_CONFIG_OFS: + /* L2 BYPASS */ + return GCR_L2_CONFIG_BYPASS_MSK; + default: + qemu_log_mask(LOG_UNIMP, "Read %d bytes at GCR offset 0x%" HWADDR_= PRIx + "\n", size, addr); + } + return 0; +} + +static inline target_ulong get_exception_base(RISCVGCRVPState *vps) +{ + return vps->reset_base & GCR_CL_RESET_BASE_RESETBASE_MSK; +} + +/* Write GCR registers */ +static void gcr_write(void *opaque, hwaddr addr, uint64_t data, unsigned s= ize) +{ + RISCVGCRState *gcr =3D (RISCVGCRState *)opaque; + RISCVGCRVPState *current_vps; + int cpu_index, c, h; + + for (c =3D 0; c < gcr->num_core; c++) { + for (h =3D 0; h < gcr->num_hart; h++) { + if (addr =3D=3D RISCV_CLCB_OFS + c * RISCV_CORE_REG_STRIDE + h= * 8) { + cpu_index =3D c * gcr->num_hart + h; + current_vps =3D &gcr->vps[cpu_index]; + current_vps->reset_base =3D data & GCR_CL_RESET_BASE_MSK; + cpu_set_exception_base(cpu_index + gcr->cluster_id * + gcr->num_core * gcr->num_hart, + get_exception_base(current_vps)); + return; + } + } + } + + switch (addr) { + case GCR_BASE_OFS: + update_gcr_base(gcr, data); + break; + default: + qemu_log_mask(LOG_UNIMP, "Write %d bytes at GCR offset 0x%" HWADDR= _PRIx + " 0x%" PRIx64 "\n", size, addr, data); + break; + } +} + +static const MemoryRegionOps gcr_ops =3D { + .read =3D gcr_read, + .write =3D gcr_write, + .endianness =3D DEVICE_NATIVE_ENDIAN, + .impl =3D { + .max_access_size =3D 8, + }, +}; + +static void riscv_gcr_init(Object *obj) +{ + SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); + RISCVGCRState *s =3D RISCV_GCR(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &gcr_ops, s, + "riscv-gcr", GCR_ADDRSPACE_SZ); + sysbus_init_mmio(sbd, &s->iomem); +} + +static void riscv_gcr_reset(DeviceState *dev) +{ + RISCVGCRState *s =3D RISCV_GCR(dev); + int i; + + /* Update cpc_base to gcr_base + 0x8001 to enable cpc automatically. */ + update_cpc_base(s, s->gcr_base + 0x8001); + + for (i =3D 0; i < s->num_vps; i++) { + s->vps[i].reset_base =3D CM_RESET_VEC & GCR_CL_RESET_BASE_MSK; + cpu_set_exception_base(i, get_exception_base(&s->vps[i])); + } +} + +static const VMStateDescription vmstate_riscv_gcr =3D { + .name =3D "riscv-gcr", + .version_id =3D 0, + .minimum_version_id =3D 0, + .fields =3D (VMStateField[]) { + VMSTATE_UINT64(cpc_base, RISCVGCRState), + VMSTATE_END_OF_LIST() + }, +}; + +static const Property riscv_gcr_properties[] =3D { + DEFINE_PROP_UINT32("cluster-id", RISCVGCRState, cluster_id, 0), + DEFINE_PROP_UINT32("num-vp", RISCVGCRState, num_vps, 1), + DEFINE_PROP_UINT32("num-hart", RISCVGCRState, num_hart, 1), + DEFINE_PROP_UINT32("num-core", RISCVGCRState, num_core, 1), + DEFINE_PROP_INT32("gcr-rev", RISCVGCRState, gcr_rev, 0xa00), + DEFINE_PROP_UINT64("gcr-base", RISCVGCRState, gcr_base, GCR_BASE_ADDR), + DEFINE_PROP_LINK("cpc", RISCVGCRState, cpc_mr, TYPE_MEMORY_REGION, + MemoryRegion *), +}; + +static void riscv_gcr_realize(DeviceState *dev, Error **errp) +{ + RISCVGCRState *s =3D RISCV_GCR(dev); + + /* Validate num_vps */ + if (s->num_vps =3D=3D 0) { + error_setg(errp, "num-vp must be at least 1"); + return; + } + if (s->num_vps > GCR_MAX_VPS) { + error_setg(errp, "num-vp cannot exceed %d", GCR_MAX_VPS); + return; + } + + /* Create local set of registers for each VP */ + s->vps =3D g_new(RISCVGCRVPState, s->num_vps); +} + +static void riscv_gcr_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + device_class_set_props(dc, riscv_gcr_properties); + dc->vmsd =3D &vmstate_riscv_gcr; + device_class_set_legacy_reset(dc, riscv_gcr_reset); + dc->realize =3D riscv_gcr_realize; +} + +static const TypeInfo riscv_gcr_info =3D { + .name =3D TYPE_RISCV_GCR, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(RISCVGCRState), + .instance_init =3D riscv_gcr_init, + .class_init =3D riscv_gcr_class_init, +}; + +static void riscv_gcr_register_types(void) +{ + type_register_static(&riscv_gcr_info); +} + +type_init(riscv_gcr_register_types) diff --git a/include/hw/misc/riscv_cmgcr.h b/include/hw/misc/riscv_cmgcr.h new file mode 100644 index 0000000000..c57d4ada1c --- /dev/null +++ b/include/hw/misc/riscv_cmgcr.h @@ -0,0 +1,50 @@ +/* + * This file is subject to the terms and conditions of the GNU General Pub= lic + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 2015 Imagination Technologies + * + * Copyright (C) 2025 MIPS + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + */ + +#ifndef RISCV_CMGCR_H +#define RISCV_CMGCR_H + +#include "hw/sysbus.h" +#include "qom/object.h" + +#define TYPE_RISCV_GCR "riscv-gcr" +OBJECT_DECLARE_SIMPLE_TYPE(RISCVGCRState, RISCV_GCR) + +#define GCR_BASE_ADDR 0x1fb80000ULL +#define GCR_MAX_VPS 256 + +typedef struct RISCVGCRVPState RISCVGCRVPState; +struct RISCVGCRVPState { + uint64_t reset_base; +}; + +typedef struct RISCVGCRState RISCVGCRState; +struct RISCVGCRState { + SysBusDevice parent_obj; + + int32_t gcr_rev; + uint32_t cluster_id; + uint32_t num_vps; + uint32_t num_hart; + uint32_t num_core; + hwaddr gcr_base; + MemoryRegion iomem; + MemoryRegion *cpc_mr; + + uint64_t cpc_base; + + /* VP Local/Other Registers */ + RISCVGCRVPState *vps; +}; + +#endif /* RISCV_CMGCR_H */ --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802409; cv=pass; d=zohomail.com; s=zohoarc; b=ESm+1M/rs1HGjKt9Nmw+4xNguo38Jg/NY+sj1j0ILmKkUPhm+OzK5i3iFpus6USETGAt8oSH1hnONQ3WZn6C5pY3xR69b8Fvu57hJiuNqWfG8idrpsiEnGT9+q6wALDIhM7VCQgBvybPN+VfzDO51HYP/mPM2MgfrLbqJ1zdT6I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802409; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dvWSndUPaVYQQkHsmo+vl8oRxpG9eJoh0LxPt4lJ8ik=; b=UPOofhygOtVFmF9qS+BQZZDq1fesNAf/wNfuXoJTZ2wtIA96PXqfbwh0AfXOWEf8YRTVthDkXEA/Ce3mGNo1YXqQKOxEJwZcZqEJoHGCI/+uMt/vcI8vAUkxb6JdOS/P+sRZvJ2SRxfyypihN0pQQknMWz35/8wFFdF4RJowOS0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802409443689.0236738365446; Sat, 18 Oct 2025 08:46:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA97w-0005BX-8U; Sat, 18 Oct 2025 11:45:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97s-00058h-87; Sat, 18 Oct 2025 11:45:48 -0400 Received: from mail-swedencentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c202::7] helo=GVXPR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97p-0001Rh-Sc; Sat, 18 Oct 2025 11:45:48 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:31 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ky5oTZnD0mSdUUIyPhhbMJTOzVj9lAYaiGkBCSdBdYJKDPF9GvS6a39HmaIAzgL79t5sr6tDO+sX+pBjEY1I+HV/BvJX2nWN+6USfiVviGeccNbQ4PzuDc0RWR3Vrh8/nsmjgEOiEeTyb/lsnU+ij/rzaVpr3FEfA8Ja/EF7vvOhm07+7/74Pa6UPQHiT1cfLpV8jHmmRyf1TH69ZgxK3NDtuG1oLGifM6pBpRJ6fCoRhQZ72XdNqQ9Zgyjthh3uXZcESBLKPOgiqNafDA2APebHAa9wjayTzx9FOA/RGht2TzmRWqj136ID1AzO//mbOfnA0KEtbIiN8l2PrgQ+wQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dvWSndUPaVYQQkHsmo+vl8oRxpG9eJoh0LxPt4lJ8ik=; b=EjeKOB7dGXEg+sRrc8izRUFfEYchH0tgwEQt2UPk8IL21bYW3U+h+ZE8oE0BmKnQ9n+ArNWSQNBebUeT8N2lKR8utuwQUQ6C3D/r45RunxqBXiRB3VNJ3yFQD9+a4+vnUYU7ebZaRg8hyAmjCkuDCX0O3q8HeQG/CfCdemCGeNnhkiUN0cNsALouTWaBM5UAAHx1jenbSoyGiU261uFsg6ZQDPzfkEmfm2QZIXUUaygabalUx7HFTdlFc2qGeZkk50UqiJ1X7P82jeWuq4hSOZXQMZD0zekoIX2Yq/1fg9YQ22UZiwuC8Bq8I5bJXsdGGBK9KhF+Jt9Pt0VzTc/7yA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dvWSndUPaVYQQkHsmo+vl8oRxpG9eJoh0LxPt4lJ8ik=; b=XF1mFp7EYKeq531i2EWRI8toXbZDBWMnTZwjahHeu3Ypd5iV3Lr76yAv47/2rnKhcxmxHhgilsx2IaqMgJWiK5kH/5WV9xYvduWb5OAW4QNDa4VypWa6ynOa55trZJB3AvbTjIC6QVi0nbupLb3QQ6MQjFB/jaMBfrYmo0Eil6UiWYk/hRo57BetMYZQdJdPHy4e+sli3wgsDA9D96UmagdgQS8szb49ZTQp4crGhcOuFoJ/FdcoM22uNtiVYySpnGTaib4KUvxwFmD7a995+iQvlNDCRy7hli7dAuPlMjgGrA1f42Wq/RlSCpN15WxYmSS9C6/8756GX25TgZgjJQ== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic Subject: [PATCH v13 09/13] hw/misc: Add RISC-V CPC device implementation Thread-Topic: [PATCH v13 09/13] hw/misc: Add RISC-V CPC device implementation Thread-Index: AQHcQEY7yzW05qLT9Uq9xX2Rnz4KwQ== Date: Sat, 18 Oct 2025 15:45:31 +0000 Message-ID: <20251018154522.745788-10-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: 64134d5e-5a50-4699-a6d3-08de0e5d5e7f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?UY1sRfE9f3qjWbHJ3EEuzQJfvWjPkSv52fxdv7+pf7MwGkMDYdLgP0wPhr?= =?iso-8859-1?Q?eio9ijg1Jd7WEGMtO3WfwkSXlUjqa21FrS2B4T7TfvbxNsUO24sJIaiQeg?= =?iso-8859-1?Q?H7NzK380Py7q342afs/11kA2NNbHUoKYE0an7gaH/onw5qdzaxSlfdCNLo?= =?iso-8859-1?Q?aq1ztgvR/N70p5hxmvA4QJUtUkgAJtaCtSROgiRHE3tefIODFW8oqX2Wm2?= =?iso-8859-1?Q?ECybRV6GB0WU6gBsb/LG1VT/0SQKnu1ZZpftF9jaEqMJxHHZEybTy6DnqF?= =?iso-8859-1?Q?vzn+fjnK2tKnBoDRd+R+lJXGrGpZpOEk6hjWCtJ1wT73ivo26q8hdM7XcQ?= =?iso-8859-1?Q?PkhrcRgNrhpJAYvwb+eUc//RYWX2CDJXtjO2ZAmhgcHcfTFNTpYrV+d1Tn?= =?iso-8859-1?Q?SoMJ50ihvdkbd951S3B5vCFKWgQPT8t73UdKpr5GPe3hHPNQnQbfgOLPTm?= =?iso-8859-1?Q?SKt62bFSiCbgCp/WtBoQBxdYlx7DVJDaEsJyQqK4703VP+ut+j4kKT9f3O?= =?iso-8859-1?Q?P3uKMIybTH4CGfuDV2GuogqenOm2ftqCd4ElwnEFOGfE5De4fUby34A3gV?= =?iso-8859-1?Q?fOvnRzMDJaeJMmhJc+O6pNgO/7yFk9KZNX7MVioDPJBCD37ySq91ew0BTE?= =?iso-8859-1?Q?cg9l+hc+UwJ2fIh8NVdh7KaDw/gBXgRjlWy57dLjFgtRwrv1G7hkV8AsJ8?= =?iso-8859-1?Q?dQI1Sv6vg59qOi2JyHyG5I91nhmbyXGnVojmL2APeHNYDqYFbzBhL+nE02?= =?iso-8859-1?Q?k7bucZ0JkrKiRj/a/exKE9qqdNBI3u63KdTS5rcFiCWDZEmHdAqe5wGW0P?= =?iso-8859-1?Q?5NxYnoH7hZl5Cc5anfJTCYL6Xw5Tca8byM0Y4XoSB/gvurkAvOvn6OgPP7?= =?iso-8859-1?Q?npPr4OkUo7LG0imGd6pco00iD6kSsAkek5BFhHsUzyX8l79edwqWl7gKLo?= =?iso-8859-1?Q?ANno+Y+Uo1OLTohxc+whEPksv0R7h/fwEMaTHqo2qErHvc8QCGEkHBp4C6?= =?iso-8859-1?Q?CKAu0t7whFP4WP5u6+hOjOhFXIfkv17M0lsg+Xw5ZB3A/s1QDoFoJ63Fna?= =?iso-8859-1?Q?7DfYinhhvP2HaYEHp7sM8edUYezROMrtF/gvt9imRxa7SJx9vYeS1Ujcy9?= =?iso-8859-1?Q?1MO0F+mIe6WVem23IypjurG4cnSvEhjv9LLc36RaePU70xRoYDfLakxRvp?= =?iso-8859-1?Q?igwFrPwXRNiphMa3YX3dbCWzObYdflHQyE6dG8yn/htmqhn7kpJd5uffx8?= =?iso-8859-1?Q?tRWK9ZePMGU8fsA3jiexeE8hc3OT54J8M/rYx2rpuWTVxUmKv8IiscuXMI?= =?iso-8859-1?Q?x9bywRl+Qhaq0UwbDg9+1PIldmlNM1+dKUYxXotxWAXtYhpFGph1BPESy+?= =?iso-8859-1?Q?c38w3+Vqf+U/5DKrvRWeC+7QFSqlryKKkjYi/5mLP/9NbvLb46qk70NWua?= =?iso-8859-1?Q?+uhmhSOOPaU+6G9SRSVPQl5Sww9kOxDedCh76UUR3wGbyZNjRcx4/seZY2?= =?iso-8859-1?Q?P+qBQTYLKwZge6JM3ksH5vb+iBgXAUYgbjpFBUbbUnvoqijqq0r8585AUO?= =?iso-8859-1?Q?1XRUc3vMudhK0vdHxo1RaT4Tt4hR?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?t+5qzvQWzvj3vYRiwLkbFJOxfZNPwI01CSUmmUbCuh1kOBZQhuhxQUMTmu?= =?iso-8859-1?Q?SeVvKJzWZIf3ZKyFFvgEIJXMIe+mvrVOzuEgrMFSoKWfPXGp1Uf9WnZIAq?= =?iso-8859-1?Q?1lJUTR2GJYbUIzAMy1MO50awdxDEktBwDTEb0HMcTi/ywykZsreES8xKuG?= =?iso-8859-1?Q?yiRib9BbmLCyrumkvbBAXX/T43+fCE7GshZegVFTsA8xCTwMzXv8pQ9WaF?= =?iso-8859-1?Q?XphUkLxxUyUuLqC0Epmwhd/vjZP1fAbhqIW1mYhrmlWseZRxvjPuskeZCQ?= =?iso-8859-1?Q?aljEgyuNnHTbEwrIONvuXpWv2X59FGaHAfzrXLGrxidoh4xr65iXIZH976?= =?iso-8859-1?Q?x59+KY3x19OTaZQ2f4vjLLsiIgG5ZOcoajqSi9P0SkgGOEjpl8UQ6E+Is2?= =?iso-8859-1?Q?mDt3FjN9wAO1oONIlZ2HqDl3AM0cIxCPRq7iQBEOy81/WNGJPjukiofkJ+?= =?iso-8859-1?Q?5YPBVS8+SH4prnxKNPnXnIB8w4NETMlX0DAz/sK4dn+vogpwE92XhFKovw?= =?iso-8859-1?Q?vhV87622LqQB57B+ss8hKOGc0P6xZJzwpp4ak8FCDgTgE06+4Xzi6qaQYE?= =?iso-8859-1?Q?Xm67WqHlvXJImBRq8ARd7/Jywl1cAPJ+QvfxIom66tU2ku05cR4T91idk6?= =?iso-8859-1?Q?tDOLErGYFOOeOumYemKSXCYUdZsrFprQ5QTwySKxFxCbKOEF2IAU2oLk3e?= =?iso-8859-1?Q?jhOBownIggwFvgC9tVjeYGahKG+WRPwcOAGVi6AiTIoqbyt93KpdZKb6m4?= =?iso-8859-1?Q?1ESAvDl574G9XjXQW4MM8HFjnyqTSSvZ1Q1N6qvnd46uEXitmmXA+6kff+?= =?iso-8859-1?Q?VsNcP6mZi2lmLCzmnSy2SZ/mU5DxUfLF3YibhRJdf6gMzuOeUsKJqA1Nlv?= =?iso-8859-1?Q?E0cj8+VEP1+hH0pRQ4rQ4d1FoLrsNo/EfSro640GPs0xi+ujySIvi92I/G?= =?iso-8859-1?Q?iSjWV3L7kFtLBf3ZvluUHvsXFQLeQ41+4htYzcm8yzA0TpcHOC5fNWOjkg?= =?iso-8859-1?Q?0ltNVn/jalxK6BgDyqKN+yhGuW8l7IfKI2EjfnSGoxXaZ9mnFyUppM6i7a?= =?iso-8859-1?Q?7sxcdpFYD8kGaJ41Tx2yrFJ1zjpajB1etEhWZMeOXcezd0CnTtiT4pMrtN?= =?iso-8859-1?Q?qJLCrkicguojSosxlv/K5L7yPYaefRznAn8nUogOtv3hhX15ycqeTAKfj5?= =?iso-8859-1?Q?UVUZIA1iTmQ30s2IjJkj1/UM4+rNlP+5bWtIgzd1UD+6AUnR8d140Zb327?= =?iso-8859-1?Q?J20t92brlSH/y4eYIo7bua7nTYL3y5luFqDvsRtkZCkR4jQZ6+zoyaVSAX?= =?iso-8859-1?Q?BsJ09BOE/KRz7QxV3JChtJeDygB7hMzsHZOk31/1hr5AeubgBwEA+PnZy9?= =?iso-8859-1?Q?M0nlU4YcV3X/sfCXvmA2mNLZovWFy8NwywlQlJwNKzRy5Eefcb56Ql7/hK?= =?iso-8859-1?Q?Z0lqtf1ifk1PfRJw86SooY+BnoVtB5penFMUGSTPQl/+/yuzMYxHaQL3gD?= =?iso-8859-1?Q?UXRrfV44xrwqDxB2X465ra0lyvngipv5SCtJtzWWH9xwAGdffdjVIC8cAF?= =?iso-8859-1?Q?Ma1802rYaGjYkrX3YXBhUkjIqZjzKGJf04t2Oi94Uco+HUDDE1ZwRkT3da?= =?iso-8859-1?Q?BNldxob5yB+d/Yw5pWPkzbp8u5WxtRZuD7EiOSjAM5QpL3YrpdLWdvCa84?= =?iso-8859-1?Q?TJdFvKuxmZVjA3haDVk=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64134d5e-5a50-4699-a6d3-08de0e5d5e7f X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:31.3079 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: DRzurvn01JqVxrww36WDqW5VhXjteLT401Ye4XRmnmCYXmHMBZPbUgDCjjmyu92cXwv6AkAhJu9i7NRa8MCzzP/p1FsmRpIPfCqIb6kqSgQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c202::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=GVXPR05CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802410412158500 Content-Type: text/plain; charset="utf-8" Add RISC-V implementation of the Cluster Power Controller (CPC) device. It is based on the existing MIPS CPC implementations but adapted for RISC-V systems. The CPC device manages power control for CPU clusters in RISC-V systems. This is needed for the MIPS BOSTON AIA board. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Reviewed-by: Daniel Henrique Barboza --- hw/misc/Kconfig | 4 + hw/misc/meson.build | 1 + hw/misc/riscv_cpc.c | 265 ++++++++++++++++++++++++++++++++++++ include/hw/misc/riscv_cpc.h | 64 +++++++++ 4 files changed, 334 insertions(+) create mode 100644 hw/misc/riscv_cpc.c create mode 100644 include/hw/misc/riscv_cpc.h diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 222efb12fb..2b308ec9b0 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -124,11 +124,15 @@ config MIPS_ITU config RISCV_MIPS_CMGCR bool =20 +config RISCV_MIPS_CPC + bool + config MIPS_BOSTON_AIA bool default y depends on RISCV64 select RISCV_MIPS_CMGCR + select RISCV_MIPS_CPC =20 config MPS2_FPGAIO bool diff --git a/hw/misc/meson.build b/hw/misc/meson.build index 489f0f3319..32b878e035 100644 --- a/hw/misc/meson.build +++ b/hw/misc/meson.build @@ -158,6 +158,7 @@ specific_ss.add(when: 'CONFIG_MIPS_CPS', if_true: files= ('mips_cmgcr.c', 'mips_cp specific_ss.add(when: 'CONFIG_MIPS_ITU', if_true: files('mips_itu.c')) =20 specific_ss.add(when: 'CONFIG_RISCV_MIPS_CMGCR', if_true: files('riscv_cmg= cr.c')) +specific_ss.add(when: 'CONFIG_RISCV_MIPS_CPC', if_true: files('riscv_cpc.c= ')) =20 system_ss.add(when: 'CONFIG_SBSA_REF', if_true: files('sbsa_ec.c')) =20 diff --git a/hw/misc/riscv_cpc.c b/hw/misc/riscv_cpc.c new file mode 100644 index 0000000000..344f855847 --- /dev/null +++ b/hw/misc/riscv_cpc.c @@ -0,0 +1,265 @@ +/* + * Cluster Power Controller emulation + * + * Copyright (c) 2016 Imagination Technologies + * + * Copyright (c) 2025 MIPS + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + * Reference: MIPS P8700 documentation + * (https://mips.com/products/hardware/p8700/) + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "cpu.h" +#include "qemu/log.h" +#include "qemu/module.h" +#include "qemu/timer.h" +#include "qemu/bitops.h" +#include "hw/sysbus.h" +#include "migration/vmstate.h" + +#include "hw/misc/riscv_cpc.h" +#include "hw/qdev-properties.h" +#include "hw/intc/riscv_aclint.h" +#include "hw/resettable.h" + +static inline uint64_t cpc_vp_run_mask(RISCVCPCState *cpc) +{ + return MAKE_64BIT_MASK(0, cpc->num_vp); +} + +static void riscv_cpu_reset_async_work(CPUState *cs, run_on_cpu_data data) +{ + RISCVCPCState *cpc =3D (RISCVCPCState *) data.host_ptr; + int i; + + cpu_reset(cs); + cs->halted =3D 0; + + /* Find this CPU's index in the CPC's CPU array */ + for (i =3D 0; i < cpc->num_vp; i++) { + if (cpc->cpus[i] =3D=3D cs) { + cpc->vps_running_mask |=3D BIT_ULL(i); + break; + } + } +} + +static void cpc_run_vp(RISCVCPCState *cpc, uint64_t vps_run_mask) +{ + int vp; + + for (vp =3D 0; vp < cpc->num_vp; vp++) { + CPUState *cs =3D cpc->cpus[vp]; + + if (!extract64(vps_run_mask, vp, 1)) { + continue; + } + + if (extract64(cpc->vps_running_mask, vp, 1)) { + continue; + } + + /* + * To avoid racing with a CPU we are just kicking off. + * We do the final bit of preparation for the work in + * the target CPUs context. + */ + async_safe_run_on_cpu(cs, riscv_cpu_reset_async_work, + RUN_ON_CPU_HOST_PTR(cpc)); + } +} + +static void cpc_stop_vp(RISCVCPCState *cpc, uint64_t vps_stop_mask) +{ + int vp; + + for (vp =3D 0; vp < cpc->num_vp; vp++) { + CPUState *cs =3D cpc->cpus[vp]; + + if (!extract64(vps_stop_mask, vp, 1)) { + continue; + } + + if (!extract64(cpc->vps_running_mask, vp, 1)) { + continue; + } + + cpu_interrupt(cs, CPU_INTERRUPT_HALT); + cpc->vps_running_mask &=3D ~BIT_ULL(vp); + } +} + +static void cpc_write(void *opaque, hwaddr offset, uint64_t data, + unsigned size) +{ + RISCVCPCState *s =3D opaque; + int cpu_index, c; + + for (c =3D 0; c < s->num_core; c++) { + cpu_index =3D c * s->num_hart + + s->cluster_id * s->num_core * s->num_hart; + if (offset =3D=3D + CPC_CL_BASE_OFS + CPC_VP_RUN_OFS + c * CPC_CORE_REG_STRIDE) { + cpc_run_vp(s, (data << cpu_index) & cpc_vp_run_mask(s)); + return; + } + if (offset =3D=3D + CPC_CL_BASE_OFS + CPC_VP_STOP_OFS + c * CPC_CORE_REG_STRIDE) { + cpc_stop_vp(s, (data << cpu_index) & cpc_vp_run_mask(s)); + return; + } + } + + switch (offset) { + default: + qemu_log_mask(LOG_UNIMP, + "%s: Bad offset 0x%x\n", __func__, (int)offset); + break; + } + + return; +} + +static uint64_t cpc_read(void *opaque, hwaddr offset, unsigned size) +{ + RISCVCPCState *s =3D opaque; + int c; + + for (c =3D 0; c < s->num_core; c++) { + if (offset =3D=3D + CPC_CL_BASE_OFS + CPC_STAT_CONF_OFS + c * CPC_CORE_REG_STRIDE)= { + /* Return the state as U6. */ + return CPC_Cx_STAT_CONF_SEQ_STATE_U6; + } + } + + switch (offset) { + case CPC_CM_STAT_CONF_OFS: + return CPC_Cx_STAT_CONF_SEQ_STATE_U5; + case CPC_MTIME_REG_OFS: + return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), + RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ, + NANOSECONDS_PER_SECOND); + return 0; + default: + qemu_log_mask(LOG_UNIMP, + "%s: Bad offset 0x%x\n", __func__, (int)offset); + return 0; + } +} + +static const MemoryRegionOps cpc_ops =3D { + .read =3D cpc_read, + .write =3D cpc_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .impl =3D { + .min_access_size =3D 8, + }, +}; + +static void riscv_cpc_init(Object *obj) +{ + SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); + RISCVCPCState *s =3D RISCV_CPC(obj); + int i; + + memory_region_init_io(&s->mr, OBJECT(s), &cpc_ops, s, "xmips-cpc", + CPC_ADDRSPACE_SZ); + sysbus_init_mmio(sbd, &s->mr); + + /* Allocate CPU array */ + s->cpus =3D g_new0(CPUState *, CPC_MAX_VPS); + + /* Create link properties for each possible CPU slot */ + for (i =3D 0; i < CPC_MAX_VPS; i++) { + char *propname =3D g_strdup_printf("cpu[%d]", i); + object_property_add_link(obj, propname, TYPE_CPU, + (Object **)&s->cpus[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + g_free(propname); + } +} + +static void riscv_cpc_realize(DeviceState *dev, Error **errp) +{ + RISCVCPCState *s =3D RISCV_CPC(dev); + int i; + + if (s->vps_start_running_mask & ~cpc_vp_run_mask(s)) { + error_setg(errp, + "incorrect vps-start-running-mask 0x%" PRIx64 + " for num_vp =3D %d", + s->vps_start_running_mask, s->num_vp); + return; + } + + /* Verify that required CPUs have been linked */ + for (i =3D 0; i < s->num_vp; i++) { + if (!s->cpus[i]) { + error_setg(errp, "CPU %d has not been linked", i); + return; + } + } +} + +static void riscv_cpc_reset_hold(Object *obj, ResetType type) +{ + RISCVCPCState *s =3D RISCV_CPC(obj); + + /* Reflect the fact that all VPs are halted on reset */ + s->vps_running_mask =3D 0; + + /* Put selected VPs into run state */ + cpc_run_vp(s, s->vps_start_running_mask); +} + +static const VMStateDescription vmstate_riscv_cpc =3D { + .name =3D "xmips-cpc", + .version_id =3D 0, + .minimum_version_id =3D 0, + .fields =3D (VMStateField[]) { + VMSTATE_UINT64(vps_running_mask, RISCVCPCState), + VMSTATE_END_OF_LIST() + }, +}; + +static const Property riscv_cpc_properties[] =3D { + DEFINE_PROP_UINT32("cluster-id", RISCVCPCState, cluster_id, 0x0), + DEFINE_PROP_UINT32("num-vp", RISCVCPCState, num_vp, 0x1), + DEFINE_PROP_UINT32("num-hart", RISCVCPCState, num_hart, 0x1), + DEFINE_PROP_UINT32("num-core", RISCVCPCState, num_core, 0x1), + DEFINE_PROP_UINT64("vps-start-running-mask", RISCVCPCState, + vps_start_running_mask, 0x1), +}; + +static void riscv_cpc_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + ResettableClass *rc =3D RESETTABLE_CLASS(klass); + + dc->realize =3D riscv_cpc_realize; + rc->phases.hold =3D riscv_cpc_reset_hold; + dc->vmsd =3D &vmstate_riscv_cpc; + device_class_set_props(dc, riscv_cpc_properties); + dc->user_creatable =3D false; +} + +static const TypeInfo riscv_cpc_info =3D { + .name =3D TYPE_RISCV_CPC, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(RISCVCPCState), + .instance_init =3D riscv_cpc_init, + .class_init =3D riscv_cpc_class_init, +}; + +static void riscv_cpc_register_types(void) +{ + type_register_static(&riscv_cpc_info); +} + +type_init(riscv_cpc_register_types) diff --git a/include/hw/misc/riscv_cpc.h b/include/hw/misc/riscv_cpc.h new file mode 100644 index 0000000000..713455eb83 --- /dev/null +++ b/include/hw/misc/riscv_cpc.h @@ -0,0 +1,64 @@ +/* + * Cluster Power Controller emulation + * + * Copyright (c) 2016 Imagination Technologies + * + * Copyright (c) 2025 MIPS + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + */ + +#ifndef RISCV_CPC_H +#define RISCV_CPC_H + +#include "hw/sysbus.h" +#include "qom/object.h" + +#define CPC_ADDRSPACE_SZ 0x6000 + +/* CPC global register offsets relative to base address */ +#define CPC_MTIME_REG_OFS 0x50 + +#define CPC_CM_STAT_CONF_OFS 0x1008 + +/* CPC blocks offsets relative to base address */ +#define CPC_CL_BASE_OFS 0x2000 +#define CPC_CORE_REG_STRIDE 0x100 /* Stride between core-specific register= s */ + +/* CPC register offsets relative to block offsets */ +#define CPC_STAT_CONF_OFS 0x08 +#define CPC_VP_STOP_OFS 0x20 +#define CPC_VP_RUN_OFS 0x28 +#define CPC_VP_RUNNING_OFS 0x30 + +#define SEQ_STATE_BIT 19 +#define SEQ_STATE_U5 0x6 +#define SEQ_STATE_U6 0x7 +#define CPC_Cx_STAT_CONF_SEQ_STATE_U5 (SEQ_STATE_U5 << SEQ_STATE_BIT) +#define CPC_Cx_STAT_CONF_SEQ_STATE_U6 (SEQ_STATE_U6 << SEQ_STATE_BIT) + +#define TYPE_RISCV_CPC "xmips-cpc" +OBJECT_DECLARE_SIMPLE_TYPE(RISCVCPCState, RISCV_CPC) + +typedef struct RISCVCPCState { + SysBusDevice parent_obj; + + uint32_t cluster_id; + uint32_t num_vp; + uint32_t num_hart; + uint32_t num_core; + /* VPs running from restart mask */ + uint64_t vps_start_running_mask; + + MemoryRegion mr; + /* Indicates which VPs are in the run state mask */ + uint64_t vps_running_mask; + + /* Array of CPUs managed by this CPC */ + CPUState **cpus; +} RISCVCPCState; + +#define CPC_MAX_VPS 64 /* Maximum number of VPs supported */ + +#endif /* RISCV_CPC_H */ --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802390; cv=pass; d=zohomail.com; s=zohoarc; b=LMDgebrHlzge8fVcjk/BQIFK9W5rF56E0xF7MvswxVTHnzoNXAQqUuwaJGLEURISEFOjASsqExxU4TvcO0/VtdQJwwZeYmmGB2jPRIE3viu/MCg3z187d55dEz3/2TPT4IsV3u0YTvaYU5eMK4Fb5+T3fixD3fsU7h4q+oktoQY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802390; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=m1uJ1nZcMszuOEYS2dgtFT0UIQ3DHUQLHvvIi5VaMoM=; b=R//4XYI3GtZt+J9KEGXDyMj81Ucfe8kFl4bAttrnPrb4EKmo74Ozz7h5/oNPYJHCDxXLltEOYNnw4KIux76Y0vjnQaOvqq4xO1AC86lA8DLLfS4ZTBHeF9E2RVNZfkfzz+l6W2g2JdfMTu2eh1u1tSC9iFxERXrIenzONgmHEQs= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802390116169.0195490572362; Sat, 18 Oct 2025 08:46:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA980-0005E9-50; Sat, 18 Oct 2025 11:45:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97s-00059N-SN; Sat, 18 Oct 2025 11:45:48 -0400 Received: from mail-northeuropeazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c200::5] helo=DUZPR83CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97q-0001QR-TS; Sat, 18 Oct 2025 11:45:48 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:31 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wLciRRk4xHajc3mR63sz6Aa9o9d/ZkgkM5pkZJKdvcrsy+CFGbiWanVzBnmjemcOe8ZM+MMJBqfIpgC6W1XYKllKr9kxJErw4PvfAd1uLR2YzaYXAt5+NnUIR8XN0H3jcHK4ZZvy6iPHjfxiqMeOwkPXI6bbSENSBKvYEIeQdJLvaHlJzI6hxzch16JultxwXU/1GWIZCe2sZMfYRzWODzZU+ifcObKh896mIJQJI/rPfmuSRcGhSV86lJv14+U/SLVHATbycvqlaHoJzUa1UCGgRSGkqaRUh6e1Z/IEpsSeW1ibsDryCrdqMOrl8ghBJq9mDi7T6r6LVEj0GC52PQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=m1uJ1nZcMszuOEYS2dgtFT0UIQ3DHUQLHvvIi5VaMoM=; b=pya+gDw38nrtKpaaMwzHou9CVtzLPfuZQZmPlf8XS5ri/e5lmT3DZjnkI3l1CJs3t1OcDC5acB26kJkoJrEroUrB0S1WWkpsVLNL7HcjSJ9ZaIt0A89EbLZGlnLub20Z9aXgX3LmVWu8lEyXZMPGG8vCNZOkIFRCA0MpPvqDIB309Oev3JaGsJBzNcEPy9oUWdei6oEdIFqicaie+6/PrrsgUrGWsFLRpeTTFEMbrhankYBzUr6I1HcISEW2E5gw4OX3kBxy5ezW7tuNyIYrb67vIr+anMszxvZL5WAyiLq1ciHYeWM3ZW8HzZfmLY8CgXDGXuN+2keF6uXJZZXFmg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m1uJ1nZcMszuOEYS2dgtFT0UIQ3DHUQLHvvIi5VaMoM=; b=l9HoWY4aVhJRDXga2ZDcDhCQ5uz/RaBvVtwHLArpUVWgV83T/2M0O5UeQhn/fD8YR9EwLsi9M4/Spg7V6OEhRCRo+Dt1dG9hqtHAyrga3rPJmof1kkDvYwzuVlgzWsjixrcxifUqrHsn3TCpjOUd9wFwJMzjDclZWDexmyxg8sS74h222MmJWqx50qZoZj2tZn0gq90vtK6M33mM41Dxju7elEMo9cKXnQMt2+hrUxF3Z7BxSr2EngOmNr+hH7lux9iVZ/iOJT9VBn8wVjF+b+ifMh17BH0+5tTyT8A57Jgn1fR1GFdPIj5sNgK/t9ShBWMNyUXFNld6pHbQx42w8A== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic Subject: [PATCH v13 10/13] hw/riscv: Add support for RISCV CPS Thread-Topic: [PATCH v13 10/13] hw/riscv: Add support for RISCV CPS Thread-Index: AQHcQEY87XvaD3ZYQkWjETra8q9DHQ== Date: Sat, 18 Oct 2025 15:45:31 +0000 Message-ID: <20251018154522.745788-11-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: 30433ae6-a9b0-41bb-7b29-08de0e5d5eaf x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?DjtQ0sZ90qCYNfjmxiuHPsyDh0BP3JXM3170TH1+6bzyJerMySKJThYjPf?= =?iso-8859-1?Q?aHHtR+ycfLfGpW16j/HtcybvhZexXI4ncWX29IrV/ON16hnfZCSVcDhOvt?= =?iso-8859-1?Q?aMRexWgrMb4Tsn1JFVWaqZSpzlh4u7m3fFPUOfRPu3mA9pA1PMyLKf71R0?= =?iso-8859-1?Q?NNbR0Az7LSclclwIwC9D2mIXMNtYZAA0sKMLuLfRC7UR3mBwg7azTrrQ69?= =?iso-8859-1?Q?X8QW3gtLICr1w40XwUvCXnnb7n72IsFtC/2PBevOGLt0dOjnDATy3cO9AU?= =?iso-8859-1?Q?DT/NY+Uuo4Azv3DLJUI1uH7umCclpgiZmSL3/dTIleJGVpRVdcWV0+J7gg?= =?iso-8859-1?Q?GJJuB+zk55FljhdYV6XvsSA++ICrVzwWNbKxe88mbD0L0fyQxB06Ej7ULS?= =?iso-8859-1?Q?1/oqCndvsD8pdVRzZk/aMhZMBRQ1CKdOLVAGHRfL3HWyUNDpzhWWyM7SVt?= =?iso-8859-1?Q?DpAqkArNHL9BHdpCz5Uv/EOBnXcF8JJxSJRMGzlbZ0sjwBB2SHsoxTLd13?= =?iso-8859-1?Q?WrxOWrluMGUmhFi0JemnTQ5bZQQt4HKj7X2K32XfDXo58LQNB0pg6GSqNM?= =?iso-8859-1?Q?lVwcDQbEZkVamdmajceNn+hkLmXYqu8L4RHLEqUs3J43E5cs89VVPYYLm4?= =?iso-8859-1?Q?Ts0syqvNENRIao5+otFQXKablVrzcFwPyjqQ4dAmj3yp7NTsWVPsq0Ey3p?= =?iso-8859-1?Q?+/qzFzuz2SxSThHXws6FhbzerTCCj4UZBr8cb3au45BHXjh9J8g2nAs/mo?= =?iso-8859-1?Q?CnU4NcXBSMYg+CRi24KBCR+tyH9pXgl33m6/5DWNs0v0j/UqFeDp2SOKY+?= =?iso-8859-1?Q?lk/Y8naPwNvPkwkodekYUXQFqXB+I+3NfL9fISCoMimcSob07m7vOQfRll?= =?iso-8859-1?Q?RHRLkcLZXaYa0kImdHocB6NI9cwLpIKKMW1Gg6EFyhZUfhBgRoIxJ+DIsO?= =?iso-8859-1?Q?ZLUTRM5bxDyV9uwXLuKSwhwqv/g6/XArkBSi185jfZH1T12VQHAp4jsrd8?= =?iso-8859-1?Q?Ahn+W3OBGRhEyvdAhF3zuivkemEC2bANTm2xg0jUZzkUGtPBKBpmLntZU4?= =?iso-8859-1?Q?cMn46ruAt1Nqq9uBrP/3J/IkuDhJespX/4eTDDcgOjnbS+8buBp1X2dqQ0?= =?iso-8859-1?Q?zLnC7/R8qBLoVldgaCJ62lqrLBDx3GjWJsUbgJsiu8Eq3hp1cSOxDgdDNu?= =?iso-8859-1?Q?28JlWOd+8RqW9Z7oTJ7ZgrkJt2umUirZqxaX3nBdXBHFUXUp86HJvM1Sj+?= =?iso-8859-1?Q?jNMtTk3L1qkiYp8axmoBAqrnCH4+3uSr+EdPwjQ/IkIbIpCMUl8YpDrv5R?= =?iso-8859-1?Q?TMn97yklwPmeFJnL8BLkdhP/VhC3FMaJqsUWobl38h+xVEDbxHh5YvGm7c?= =?iso-8859-1?Q?R8e8hpAAHzBXSEOBGczwrV9yzUsodLXYZYM7Q3oDuHnb5bMT2m1Bfj9aoB?= =?iso-8859-1?Q?16uZFgahxm36fKnytGNZjrBf7CPOGfzWXkPPsAxlwEEMSFlGzuDeBVSE4t?= =?iso-8859-1?Q?1xULgGXgmur/3eqEyQA6KXtHEZ2FNKuT8Y0Kf1P+xAD84H28+QYCVnMO8H?= =?iso-8859-1?Q?M/cW4DahbLMGxv3poQZOS5kMOrkE?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?1RY4JbFCwIJ7NYYFkGmcxL5ejY4rrrKkqGYsmnsBK0Q0HymiORgQMdtGwq?= =?iso-8859-1?Q?Qk1/LSDPDryMO7Gifk3vMSMoLmXRj5Wzi9zCVrEVReY9y2/gxHEnPmmUy4?= =?iso-8859-1?Q?KY6fB+fB6jNKkR9VY7sj/0ULPKGCtD+CtvEpAJ4qxmMkAu9oAc5aXSzBc3?= =?iso-8859-1?Q?uNyYYDMbzsax4+PbHy98wswKjZrRLKfx0hJdV96qzcovMApXDvuEH9Ff3q?= =?iso-8859-1?Q?C/KsiBNcT/v4o87AlT1JfSqRX2rkpliRH+srlSccAvIivz26Opkuq4n0VC?= =?iso-8859-1?Q?tUaCzUPvXBg3btCAWU9KeboOYDxReJQ7zHYjmzeYEkGnBXr58pXvuTFV1N?= =?iso-8859-1?Q?FqUqeZLH9dLUtHm967K1PRrwpcLpu+toj7COj0ybNVcYOqv2u2ckTf/vY3?= =?iso-8859-1?Q?TXlVmS47a4XCce5siphebJYmekI89r+PDOO7mrdcjCG0QJCh+/zslooIBH?= =?iso-8859-1?Q?7SIxc18mBLll2dTaba2P1WJ25mlUDUuNvlXoCOv2jgaHBQGzJaB1JleEcW?= =?iso-8859-1?Q?DCojs6iUzLtZu2bwVqtXzzSt0ChlCLAPuv5669ZzxiTsF8FBpv5PufNHKy?= =?iso-8859-1?Q?ZEo/FerdhrnoMARvG+GZ3iwHkc7hmqIAqlYZQVq7f+1+x9Xg1cZiyrFJb+?= =?iso-8859-1?Q?cXnwtIbB8hjlRkZbt3K9jPinl9riSYLwuR9m9NYcLKGqb41IN2mtw7DRVx?= =?iso-8859-1?Q?Szk3+/M8hotSHzAQ+YM1BIbKFX6bUw4bEX3f7c6nsf0CMWYHesN6knQnZg?= =?iso-8859-1?Q?gCyo7g985V76dlmC3SdLLJzzhalZ8h814H6FvSqtanOroo9zGqzRBBX+8P?= =?iso-8859-1?Q?bS0mLNpLH5Yn0/+jscuTRWOO/ACvqWsAe/ku/bcvqNugzz5rXcXydvsIkD?= =?iso-8859-1?Q?FUDGK3XTVWSdZicM5mHwR2Lf0P64e1/5x8zFXcGGVRnwXvhSQKssy0SaC9?= =?iso-8859-1?Q?ieZM3wn/4jS20sIS8n7NtpSoxkJamCrSOyZwyXr9uKtele2NPXtGo7o8rD?= =?iso-8859-1?Q?cPjzLg4PCKxjht/lkW0ylCNc0hdiAV8AdJJ41eqvoA9mPHRYxWC87Kkipp?= =?iso-8859-1?Q?cyfiRzp/wNqrNQd3v8rTXDt9tsHV1w5dkMps2ty8mJB1HyMgWYuusCGKlH?= =?iso-8859-1?Q?tjVXUe2R+ahJ2c6s3SoWimK6Gly73/sGtnomNTG5LFWXJlg3GtHn38/ypt?= =?iso-8859-1?Q?vBTcBPpdtg0hpbseoBEHNTcgiLnXd8jizoa4I3EaYBVfCLSlxI1uNDMefs?= =?iso-8859-1?Q?9hlh3JeUeQa59UgclPVW992NGwTdfsAoonZu6ORCus38oFmS9FGWVrYnSK?= =?iso-8859-1?Q?oK2lZhPGuCSdT6dzJ3lTs8E7V8U4JDoWZginiVklYEwTON10RorzqefNXs?= =?iso-8859-1?Q?aikqA+uKd0s7c7aZ1E8nvPhE55UiZAEJz2aIfnkCVZH1qe+S9ZHP8zrByQ?= =?iso-8859-1?Q?FvB+BRRmZAr+P3zRIgSk0FEKKS7GNy6oa7kOHEde3jdbun+z6ecltl2mRN?= =?iso-8859-1?Q?dCUFXDRG5ihjPigsdFBwAWFzrH4yU0ZsFHyd7Pv9Hsu8GTDDSLn2RI2RoP?= =?iso-8859-1?Q?c3oGEa8kTkdWtsnkzV4pyL6OlzPOvcLYecUynS/K0XsDzpDLyHPKO8bZjy?= =?iso-8859-1?Q?uesoD4OI+isZfuclLRl9jpVe+Xce/4HhtfhuNrbgpS4uN8xgdtussJY/GI?= =?iso-8859-1?Q?UaPOIMQPmZxZbyMO6ns=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30433ae6-a9b0-41bb-7b29-08de0e5d5eaf X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:31.5974 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: q6qVaPSr6OuvF9od3mzlWp10DdA8+6+AMZkRjlDkZdlm8P7enk67Wb+6PCPwE3Mv0yt6Pqur7mb5gZh2FKVmeKXTHCp9VPvRN6Dc9tpeFUo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c200::5; envelope-from=Djordje.Todorovic@htecgroup.com; helo=DUZPR83CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802394236158500 Content-Type: text/plain; charset="utf-8" Add support for the Coherent Processing System for RISC-V. This enables SMP support for RISC-V boards that require cache-coherent multiprocessor systems. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Acked-by: Daniel Henrique Barboza --- hw/misc/Kconfig | 4 + hw/riscv/cps.c | 196 +++++++++++++++++++++++++++++++++++++++++ hw/riscv/meson.build | 2 + include/hw/riscv/cps.h | 66 ++++++++++++++ 4 files changed, 268 insertions(+) create mode 100644 hw/riscv/cps.c create mode 100644 include/hw/riscv/cps.h diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 2b308ec9b0..a2726abccc 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -127,12 +127,16 @@ config RISCV_MIPS_CMGCR config RISCV_MIPS_CPC bool =20 +config RISCV_MIPS_CPS + bool + config MIPS_BOSTON_AIA bool default y depends on RISCV64 select RISCV_MIPS_CMGCR select RISCV_MIPS_CPC + select RISCV_MIPS_CPS =20 config MPS2_FPGAIO bool diff --git a/hw/riscv/cps.c b/hw/riscv/cps.c new file mode 100644 index 0000000000..8642d87fbc --- /dev/null +++ b/hw/riscv/cps.c @@ -0,0 +1,196 @@ +/* + * Coherent Processing System emulation. + * + * Copyright (c) 2016 Imagination Technologies + * + * Copyright (c) 2025 MIPS + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qemu/module.h" +#include "hw/riscv/cps.h" +#include "hw/qdev-properties.h" +#include "system/reset.h" +#include "hw/intc/riscv_aclint.h" +#include "hw/intc/riscv_aplic.h" +#include "hw/intc/riscv_imsic.h" +#include "hw/pci/msi.h" + +static void riscv_cps_init(Object *obj) +{ + SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); + RISCVCPSState *s =3D RISCV_CPS(obj); + + /* + * Cover entire address space as there do not seem to be any + * constraints for the base address of CPC . + */ + memory_region_init(&s->container, obj, "mips-cps-container", UINT64_MA= X); + sysbus_init_mmio(sbd, &s->container); +} + +static void main_cpu_reset(void *opaque) +{ + CPUState *cs =3D opaque; + + cpu_reset(cs); +} + +static void riscv_cps_realize(DeviceState *dev, Error **errp) +{ + RISCVCPSState *s =3D RISCV_CPS(dev); + RISCVCPU *cpu; + int i; + + /* Validate num_vp */ + if (s->num_vp =3D=3D 0) { + error_setg(errp, "num-vp must be at least 1"); + return; + } + if (s->num_vp > MAX_HARTS) { + error_setg(errp, "num-vp cannot exceed %d", MAX_HARTS); + return; + } + + /* Allocate CPU array */ + s->cpus =3D g_new0(CPUState *, s->num_vp); + + /* Set up cpu_index and mhartid for avaiable CPUs. */ + int harts_in_cluster =3D s->num_hart * s->num_core; + int num_of_clusters =3D s->num_vp / harts_in_cluster; + for (i =3D 0; i < s->num_vp; i++) { + cpu =3D RISCV_CPU(object_new(s->cpu_type)); + + /* All VPs are halted on reset. Leave powering up to CPC. */ + object_property_set_bool(OBJECT(cpu), "start-powered-off", true, + &error_abort); + + if (!qdev_realize_and_unref(DEVICE(cpu), NULL, errp)) { + return; + } + + /* Store CPU in array */ + s->cpus[i] =3D CPU(cpu); + + /* Set up mhartid */ + int cluster_id =3D i / harts_in_cluster; + int hart_id =3D (i % harts_in_cluster) % s->num_hart; + int core_id =3D (i % harts_in_cluster) / s->num_hart; + int mhartid =3D (cluster_id << MHARTID_CLUSTER_SHIFT) + + (core_id << MHARTID_CORE_SHIFT) + + (hart_id << MHARTID_HART_SHIFT); + cpu->env.mhartid =3D mhartid; + qemu_register_reset(main_cpu_reset, s->cpus[i]); + } + + /* Cluster Power Controller */ + object_initialize_child(OBJECT(dev), "cpc", &s->cpc, TYPE_RISCV_CPC); + object_property_set_uint(OBJECT(&s->cpc), "cluster-id", 0, + &error_abort); + object_property_set_uint(OBJECT(&s->cpc), "num-vp", s->num_vp, + &error_abort); + object_property_set_uint(OBJECT(&s->cpc), "num-hart", s->num_hart, + &error_abort); + object_property_set_uint(OBJECT(&s->cpc), "num-core", s->num_core, + &error_abort); + + /* Pass CPUs to CPC using link properties */ + for (i =3D 0; i < s->num_vp; i++) { + char *propname =3D g_strdup_printf("cpu[%d]", i); + object_property_set_link(OBJECT(&s->cpc), propname, + OBJECT(s->cpus[i]), &error_abort); + g_free(propname); + } + + if (!sysbus_realize(SYS_BUS_DEVICE(&s->cpc), errp)) { + return; + } + + memory_region_add_subregion(&s->container, 0, + sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->cpc)= , 0)); + + /* Global Configuration Registers */ + object_initialize_child(OBJECT(dev), "gcr", &s->gcr, TYPE_RISCV_GCR); + object_property_set_uint(OBJECT(&s->gcr), "cluster-id", 0, + &error_abort); + object_property_set_uint(OBJECT(&s->gcr), "num-vp", s->num_vp, + &error_abort); + object_property_set_int(OBJECT(&s->gcr), "gcr-rev", 0xa00, + &error_abort); + object_property_set_int(OBJECT(&s->gcr), "gcr-base", s->gcr_base, + &error_abort); + object_property_set_link(OBJECT(&s->gcr), "cpc", OBJECT(&s->cpc.mr), + &error_abort); + if (!sysbus_realize(SYS_BUS_DEVICE(&s->gcr), errp)) { + return; + } + + memory_region_add_subregion(&s->container, s->gcr_base, + sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->gcr)= , 0)); + + for (i =3D 0; i < num_of_clusters; i++) { + uint64_t cm_base =3D GLOBAL_CM_BASE + (CM_SIZE * i); + uint32_t hartid_base =3D i << MHARTID_CLUSTER_SHIFT; + s->aplic =3D riscv_aplic_create(cm_base + AIA_PLIC_M_OFFSET, + AIA_PLIC_M_SIZE, + hartid_base, /* hartid_base */ + MAX_HARTS, /* num_harts */ + APLIC_NUM_SOURCES, + APLIC_NUM_PRIO_BITS, + false, true, NULL); + riscv_aplic_create(cm_base + AIA_PLIC_S_OFFSET, + AIA_PLIC_S_SIZE, + hartid_base, /* hartid_base */ + MAX_HARTS, /* num_harts */ + APLIC_NUM_SOURCES, + APLIC_NUM_PRIO_BITS, + false, false, s->aplic); + /* PLIC changes msi_nonbroken to ture. We revert the change. */ + msi_nonbroken =3D false; + riscv_aclint_swi_create(cm_base + AIA_CLINT_OFFSET, + hartid_base, MAX_HARTS, false); + riscv_aclint_mtimer_create(cm_base + AIA_CLINT_OFFSET + + RISCV_ACLINT_SWI_SIZE, + RISCV_ACLINT_DEFAULT_MTIMER_SIZE, + hartid_base, + MAX_HARTS, + RISCV_ACLINT_DEFAULT_MTIMECMP, + RISCV_ACLINT_DEFAULT_MTIME, + RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ, fal= se); + } +} + +static const Property riscv_cps_properties[] =3D { + DEFINE_PROP_UINT32("num-vp", RISCVCPSState, num_vp, 1), + DEFINE_PROP_UINT32("num-hart", RISCVCPSState, num_hart, 1), + DEFINE_PROP_UINT32("num-core", RISCVCPSState, num_core, 1), + DEFINE_PROP_UINT64("gcr-base", RISCVCPSState, gcr_base, GCR_BASE_ADDR), + DEFINE_PROP_STRING("cpu-type", RISCVCPSState, cpu_type), +}; + +static void riscv_cps_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->realize =3D riscv_cps_realize; + device_class_set_props(dc, riscv_cps_properties); +} + +static const TypeInfo riscv_cps_info =3D { + .name =3D TYPE_RISCV_CPS, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(RISCVCPSState), + .instance_init =3D riscv_cps_init, + .class_init =3D riscv_cps_class_init, +}; + +static void riscv_cps_register_types(void) +{ + type_register_static(&riscv_cps_info); +} + +type_init(riscv_cps_register_types) diff --git a/hw/riscv/meson.build b/hw/riscv/meson.build index 2a8d5b136c..9023b80087 100644 --- a/hw/riscv/meson.build +++ b/hw/riscv/meson.build @@ -15,4 +15,6 @@ riscv_ss.add(when: 'CONFIG_RISCV_IOMMU', if_true: files( riscv_ss.add(when: 'CONFIG_MICROBLAZE_V', if_true: files('microblaze-v-gen= eric.c')) riscv_ss.add(when: 'CONFIG_XIANGSHAN_KUNMINGHU', if_true: files('xiangshan= _kmh.c')) =20 +riscv_ss.add(when: 'CONFIG_RISCV_MIPS_CPS', if_true: files('cps.c')) + hw_arch +=3D {'riscv': riscv_ss} diff --git a/include/hw/riscv/cps.h b/include/hw/riscv/cps.h new file mode 100644 index 0000000000..00f17112c1 --- /dev/null +++ b/include/hw/riscv/cps.h @@ -0,0 +1,66 @@ +/* + * Coherent Processing System emulation. + * + * Copyright (c) 2016 Imagination Technologies + * + * Copyright (c) 2025 MIPS + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + */ + +#ifndef RISCV_CPS_H +#define RISCV_CPS_H + +#include "hw/sysbus.h" +#include "hw/misc/riscv_cmgcr.h" +#include "hw/misc/riscv_cpc.h" +#include "target/riscv/cpu.h" +#include "qom/object.h" + +#define TYPE_RISCV_CPS "riscv-cps" +OBJECT_DECLARE_SIMPLE_TYPE(RISCVCPSState, RISCV_CPS) + +/* The model supports up to 64 harts. */ +#define MAX_HARTS 64 + +/* The global CM base for the boston-aia model. */ +#define GLOBAL_CM_BASE 0x16100000 +/* The CM block is 512 KiB. */ +#define CM_SIZE (1 << 19) + +/* + * The mhartid bits has cluster at bit 16, core at bit 4, and hart at + * bit 0. + */ + +#define MHARTID_CLUSTER_SHIFT 16 +#define MHARTID_CORE_SHIFT 4 +#define MHARTID_HART_SHIFT 0 + +#define APLIC_NUM_SOURCES 0x35 /* Arbitray maximum number of interrupts. */ +#define APLIC_NUM_PRIO_BITS 3 +#define AIA_PLIC_M_OFFSET 0x40000 +#define AIA_PLIC_M_SIZE 0x8000 +#define AIA_PLIC_S_OFFSET 0x60000 +#define AIA_PLIC_S_SIZE 0x8000 +#define AIA_CLINT_OFFSET 0x50000 + +typedef struct RISCVCPSState { + SysBusDevice parent_obj; + + uint32_t num_vp; + uint32_t num_hart; + uint32_t num_core; + uint64_t gcr_base; + char *cpu_type; + + MemoryRegion container; + RISCVGCRState gcr; + RISCVCPCState cpc; + + DeviceState *aplic; + CPUState **cpus; +} RISCVCPSState; + +#endif --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802381; cv=pass; d=zohomail.com; s=zohoarc; b=iTK3RM06G0zdUO9OzIVOuF/+2lrS+zXLCNYr/5SOXgNcXXpKYXSCT4632JXmbyY2M/1/Hhk3CQUR+fXG6D8SOmmyEthJ3nAZWVlq5gYaC8HUlSb7Nj4rv0Vq5PfccIf1kI9KPMeIiXq9Wj5Bgw2fkS7C79Bw8m+VUec1cKQ1r9s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802381; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UlMsA/MEhKVlYqorsoIGEZeCEH5EmohMbuJcJ+fqK2E=; b=emC/T4Gos+jjYxy84JMlbOYNH2B621jpPq9uyio1KRh9NEvf7cOuUly8vHihgUDC2r0QaSEwqCV3fMvNnD68LwQ/E0XLH6FBlgHDICJsXYZ/5VpQ/8v0dk2EPsy8Calk/UA8vE+E3LW9z/AntwUgT+xs86mKLexcubDVp+kKGRs= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802381213750.6360756683199; Sat, 18 Oct 2025 08:46:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA989-0005Pd-Qv; Sat, 18 Oct 2025 11:46:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97y-0005DE-OO; Sat, 18 Oct 2025 11:45:54 -0400 Received: from mail-swedencentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c202::7] helo=GVXPR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97v-0001Rh-Gf; Sat, 18 Oct 2025 11:45:54 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:32 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bx5iUDr2toG/FT7QgH9a6mMRN3c3QUpJGeBjbrYnoSMsFH9mKgX19s+tJ/GIw7E7Sb2wKyHvOyl8lalbp0kI5qMQJ8PTIfvDG89OFHhItVpCIUN3UrJB7rJG9vDe+IxskS2c2kAlHXiNLavtgxP/JQ3PRCC270Ee96PFqx5cQBbS2GP3MKMSp/d12nEHYL+7EiV7enmUhEBlcQEnpB0QSNCzf832l0Ql1r4sMM1wuBKs8KVWLCprl+Kvz/BbkGRodLSgukTlELud7P0wQZDxzj/5L5VVJUpXLMwWID8+Qa2wD42IE358mB2UB8ZoIS/9tik1AoClYOAVk2gjztsJGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UlMsA/MEhKVlYqorsoIGEZeCEH5EmohMbuJcJ+fqK2E=; b=xcDDZ5D0xpe9yZxl9GmKAFAXW9v0e8FCMyIdLHRDxb2bI+3bU+Jj4OJA2rEynuNaEBVqYCvi+OLs6fx64FC4RuueOxlB+wnSnCcI+Ifp9ncrAwpVDDWsbXpfHh2sdIhZ7T9H6rXeUqJNcdNiAXGUfa4esfktxrTymJqN0XkME4sU7PtrlxAlnRUxphztKJ+8Uo3BulOPy/GI65RR0M3sOqA2kOFXK/lfH6nnuEN/KTKxkoWfTAkncQRt1taB2O5CcyaicCZjH0uzUvlMwyfi/5GLWyujFNZSkjDxlDycVaXUs8d2iNya07rgiEImvVI1/UnZIQQUEZrGFd0lRMtM8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UlMsA/MEhKVlYqorsoIGEZeCEH5EmohMbuJcJ+fqK2E=; b=Xty5mjkKpMDNcy8RZD09v/SW8VmYUThjbvzh1SnuubBHwVmtmC8U/RGoOAwJtBbcPwU7SdcQdL5Jp8yGwrpyUzJ1Rc5O65Y5bBNpKMTiqW9DxidRqkI7V3cFFKK/Z2KpktP1+bfSHVAgpwhxnOe3SBvqqK1V25LCr8QgVReVneBmkaasrEpYkXa2Jwfhn589eTAmx8eJeIeXpfKCf1u58Aie2QTzWlpC0NI6rX7LfB9hVKcOw/4ak5D6KajHf8Cyr2PKldC4kKeAXTau0CqlngmoYIgOOM6r1cEu2QkXUsHBKaUw+NLGxuV861O+4ZnUl8cd7zUbSNdazOw551bZTA== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic , Alistair Francis Subject: [PATCH v13 11/13] hw/riscv: Add support for MIPS Boston-aia board mode Thread-Topic: [PATCH v13 11/13] hw/riscv: Add support for MIPS Boston-aia board mode Thread-Index: AQHcQEY87iaYR2o7L0qsREoozHyYzQ== Date: Sat, 18 Oct 2025 15:45:31 +0000 Message-ID: <20251018154522.745788-12-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: e941094a-d06b-4578-a346-08de0e5d5ee8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|7416014|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?GarOF08MdsIhjUHTQG87pURHXs4+OIh16hEFr7820UKu82HHlkj/XASJMJ?= =?iso-8859-1?Q?oSHi6KSrmTQTxhCBPJzBrVHD9pIHM0yK8QGFwM83YLi3n/1t/mphyd+fWR?= =?iso-8859-1?Q?AyR6LMfHPOiEExFFJ/3HViHqi++UZIe2TB79HBnFVdrqd3YtoWW725yj3O?= =?iso-8859-1?Q?9FeYe7A8s+o8tVOhWPOFOgSnlxD6MM3KTxgvIdm+mKeqCcpXNmvC1x6BSk?= =?iso-8859-1?Q?538ukI4XZNbjdd/1V77DHea/qeBFzka2I9z7w7mXRQLaBotWD5YFrseZ4l?= =?iso-8859-1?Q?/85R+HvrYe+MFYwfCkGv2jEft/hN1r/7DOq3oBAIAIn5YrRp8F9zaffp9D?= =?iso-8859-1?Q?nhoiHgm+hI00labwZn3SZefomufj6vhTXrX66/88xevypvfEMAbmdd7CuN?= =?iso-8859-1?Q?0hqvlPW/09CQMkFiiECMjbZXUmmZsIoBL1TQG2tmLGmCcU7RuYVAcDZh1p?= =?iso-8859-1?Q?jBcSDKAtnxEFWWC/Voxcrpq8blIm4EG0eKc6gFSr/EwnHii8HH2yrZ+ZZZ?= =?iso-8859-1?Q?/eEnrdrpQhZhvmQrYZTXVi61ManhdDX3IGU5jZP1vCH79aldLMlIk9E+B/?= =?iso-8859-1?Q?RDXX3p+B4WwaNwgJEqwZpKqRoFbqubwJY/sva2BL+dAJxs1iwHiMviUdIN?= =?iso-8859-1?Q?t5IT4h7LV27yQeT3DM1CxGT/6itWGbk6xlcEzajTIwCUjjnMORf6YkmB3v?= =?iso-8859-1?Q?KrrzJpALSGJ6xfnNwKKAQHxuLlNTgh5RlGduqdJAqVCgYEWj0KEvr2ZWdR?= =?iso-8859-1?Q?u3dfM0fTYM9ymseQ/fWcIdS6KYttSR52t4KuJ56JSqPuKg8RpjkAVWGIzK?= =?iso-8859-1?Q?E6EWpy1GgA6o/b3eyBVWSxwXCJm7Du6d3xa++bhE+Q9zC33h17MYVW23b6?= =?iso-8859-1?Q?UAL993NQ/JyeIHDcnLdueWNUtT1RxrRtyhRHZaxG6gY1pbm6bQC9Ah8bzu?= =?iso-8859-1?Q?p50FeN0Gxu0/dNKwpdTxUnfEgYj2HINrjLkDFwi9N5eyKDhjGUI79IHpZm?= =?iso-8859-1?Q?P0ml6e3SIKFNlvT49zh8W6pURa50xvXl8EJQOVWs6ZOOGc3z4TgOe21WuS?= =?iso-8859-1?Q?z0NvFE3nQ+RplU/Q10nC3yGXmkgSXmx8Qj/MJTN5b/GRwBJDtzWOukIQuu?= =?iso-8859-1?Q?m+LvDCj+kUDa/VQ5Orw7E2x2KOPWRXDTennmlC8e7c3E6ycBg+JWO6800/?= =?iso-8859-1?Q?x88Gqs3CVkY/YWK7oqGkIrqiJjDNA4kSwdsLTGQ6effXkhla1wB0jnJb05?= =?iso-8859-1?Q?ZrDXpuDMMUX9T1kJKnktHKy6Qaw/h/DkDh8TUpHg5/kYuCcsfScT66WUUT?= =?iso-8859-1?Q?k2SSEpQAHq8ToNqR+ZQT/Rj+kC40TM7SIeaFWzaaLkuyCRbYaT2B2aIfVN?= =?iso-8859-1?Q?eBWzoUyqhakqK8/oPaiCAXLWAMUxhSk6VXhcWW1lXn8jkP0pGiRBV87z+U?= =?iso-8859-1?Q?eWBSjQ9ZI3YZ7fosprgUfAt3D+xBP4HrXOgIPcblzOKOPL3+mGDXxPX4vZ?= =?iso-8859-1?Q?pLUub4n3nV/kWTEJGp3o2vOtcdiLaYrhA5N+z9r7kkfuQm7wwximdYOcKz?= =?iso-8859-1?Q?o1sUf8UXuzafwK5Ad83pHTzYKHpv?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?pC6uZU5NkF1tcjS9Z8Ai1oUc+f+XrXTlNQNPV9UpExOJhZ4NmR/VEw/dxg?= =?iso-8859-1?Q?HmeZpfeSfn5JkWBkf4n9vL1SnMbarqiRnUdwl08Kn52QdGj7LbBLFSpLgi?= =?iso-8859-1?Q?K/1LiuNbhe2q0R4is0zywMf/vpY4/8lsrgypLeeAQNxVZNNhZD4+0zUB8/?= =?iso-8859-1?Q?txlX9qFiVWEi8V5ZNWGMQ0dlX5hGMFslmlZQ1KR/aJWDlQVUsTnupZZqIp?= =?iso-8859-1?Q?7NicQhIZVqF9mQpaXCk97+PkM6svRgwmicoHvC4Nf85d0/o+pe0GDDTd+I?= =?iso-8859-1?Q?ROEtjynV53QcyRM1o+c3e/yA3xN+WqGfHvQmofWA73YueHt9/Jggzd/AXI?= =?iso-8859-1?Q?M8gL5shqO075Io0UPq6K88GguXHSxUeze/U3wDsUOurpkbBnPLFfyV7fhg?= =?iso-8859-1?Q?T5rzyMSWxv4+8w0oXg3Bt6Pj9dWGNjjPYjCuH8909vA9avqNcRSM4IBLYz?= =?iso-8859-1?Q?k3kWmYoYFnuOdpbLnsknul1XL7DdhSynD4hXJQNqxbh2FSDXa1nxuEUX6t?= =?iso-8859-1?Q?5PkARS4S38F4WmCnaaPkNuveSMMjskA8rLDWpE2xB7X5vtCVXZnv5Wp+de?= =?iso-8859-1?Q?zGRwO3eniJLTvtjDAzhIeOVOhtvad13T4Ur1FaO9gdFv9QlM8T/fXXLPKP?= =?iso-8859-1?Q?iE0skMx3ZtRl6wDX1yHQMWfaPG6hsx1WcUX7jtyMeDYolbJZO2S6A4/IEC?= =?iso-8859-1?Q?YwXBjHcE5pbgClu0fVmfW6xoO1OI6pox6/kZxaYLzmRqU/8xhIXmdnlLD8?= =?iso-8859-1?Q?5fAQbkNsa3qrVIvfqF3WENXWM6i2Q16EPwz4WtM2WSQmYZgIhOgxypez/o?= =?iso-8859-1?Q?NJaqFjC5R11c6m7mGuzgSYScOvnh0TIUH4XlkUTPKnsBqTG+Wau6tztRww?= =?iso-8859-1?Q?TTceLF8jMELZvH8tVYLJHPqk3mBkqMLhkGBzsbnxiYKGVlRnBTP0liiOV4?= =?iso-8859-1?Q?DRHoCDYbbj7HT6mNOKHq7MFahLXDeCw/v7C6tPgIAhA6WWAU9EfUvzr5JL?= =?iso-8859-1?Q?bPlOsAHpwl6oWGQmCVlj5sLTjxNd8NETdogeTnrUiegew5YsBH+9tqBXfJ?= =?iso-8859-1?Q?YdtaurEArfIjAH6R3TpqdO8MyHKzYf5XPBOf/FZd0KmLfP6SV5ugZ+SmoV?= =?iso-8859-1?Q?SaXo60E8m4FfIvdyo2xftNKunuy7uwKsxQlKPihuh/rEE8zvf42TKFz+bK?= =?iso-8859-1?Q?6I06k4gDizzth9zvzgJQo8kMEOr9tWUVaDyHR5YCQEzGdJblZ6NA9dhK0C?= =?iso-8859-1?Q?u8+AiraiSceZHDi/vJfwkorBwNsODQkUO6niMiIaZPP8VKIxi32hAFuthd?= =?iso-8859-1?Q?DUru0AETns7r+3ChdC5ZrlpH4o/A1oxoIW1SlIW+Bkgv6luz1PobUSo9mP?= =?iso-8859-1?Q?JCD/MOa6nXoEi1DmWPc7Gym5L2lLUFt8HUBxKVFKrwfVxg69bs/Oc5WiK4?= =?iso-8859-1?Q?XHqDgOKXLZfM3II5e/2zIkPyooyhaIP1f1q0KmgpsBc2UcaIWBKEUv0T9S?= =?iso-8859-1?Q?bMCR/ncv1Yh7i/lOE7cDuDp4xGD/Aq5GNeII2ErPpwyf8Nxxg0H98FctZZ?= =?iso-8859-1?Q?MElzyxbGjUd+NBQD25exc9BEHPWP+eLlA2HfFSpSCTu5rV1bt81KrT27wv?= =?iso-8859-1?Q?dcK7ui92/HTDcJjy8izT1gfEjrQtfrjFKQ+I2s88CcpeyRzS2DfiTeygfl?= =?iso-8859-1?Q?U/cg5VvbhvNYgLmSlU8=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e941094a-d06b-4578-a346-08de0e5d5ee8 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:31.9636 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: sDc6MoBMSLI0H6NDDsEMOYq+lzwfnYxNzU/nZ22uKaLOwRngl3cC4EKUoG4bDEuOf2cnCHWekAUWr//rQpwAWDDvoSsiy3trXt6zzk31mIs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c202::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=GVXPR05CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802386253158500 Content-Type: text/plain; charset="utf-8" The board model supports up to 64 harts with MIPS CPS, MIPS GCR, MIPS CPC, AIA plic, and AIA clint devices. The model can create boot code, if there is no -bios parameter. We can specify -smp x, cores=3Dy,thread=3Dz. Ex: Use 4 cores and 2 threads with each core to have 8 smp cpus as follows. qemu-system-riscv64 -cpu mips-p8700 \ -m 2G -M boston-aia \ -smp 8,cores=3D4,threads=3D2 -kernel fw_payload.bin \ -drive file=3Drootfs.ext2,format=3Draw -serial stdio Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Acked-by: Daniel Henrique Barboza Acked-by: Alistair Francis --- configs/devices/riscv64-softmmu/default.mak | 1 + docs/system/riscv/mips.rst | 20 + docs/system/target-riscv.rst | 1 + hw/riscv/Kconfig | 6 + hw/riscv/boston-aia.c | 471 ++++++++++++++++++++ hw/riscv/meson.build | 1 + 6 files changed, 500 insertions(+) create mode 100644 docs/system/riscv/mips.rst create mode 100644 hw/riscv/boston-aia.c diff --git a/configs/devices/riscv64-softmmu/default.mak b/configs/devices/= riscv64-softmmu/default.mak index e485bbd1a3..a8e4d0ab33 100644 --- a/configs/devices/riscv64-softmmu/default.mak +++ b/configs/devices/riscv64-softmmu/default.mak @@ -12,3 +12,4 @@ # CONFIG_MICROCHIP_PFSOC=3Dn # CONFIG_SHAKTI_C=3Dn # CONFIG_XIANGSHAN_KUNMINGHU=3Dn +# CONFIG_MIPS_BOSTON_AIA=3Dn diff --git a/docs/system/riscv/mips.rst b/docs/system/riscv/mips.rst new file mode 100644 index 0000000000..97096421e1 --- /dev/null +++ b/docs/system/riscv/mips.rst @@ -0,0 +1,20 @@ +Boards for RISC-V Processors by MIPS +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +RISC-V processors developed by MIPS support Boston-aia board model. The bo= ard +model supports up to 64 harts with MIPS CPS, MIPS GCR, MIPS CPC, AIA plic, +and AIA clint devices. The model can create boot code, if there is no +```-bios``` parameter. Also, we can specify ```-smp x,cores=3Dy,thread=3Dz= ```. + +Running Linux kernel +-------------------- + +For example, to use 4 cores and 2 threads with each core to have 8 smp cpu= s, +that runs on the ```mips-p8700``` CPU, run qemu as follows: + +.. code-block:: bash + + qemu-system-riscv64 -cpu mips-p8700 \ + -m 2G -M boston-aia \ + -smp 8,cores=3D4,threads=3D2 -kernel fw_payload.bin \ + -drive file=3Drootfs.ext2,format=3Draw -serial stdio diff --git a/docs/system/target-riscv.rst b/docs/system/target-riscv.rst index 89b2cb732c..3ad5d1ddaf 100644 --- a/docs/system/target-riscv.rst +++ b/docs/system/target-riscv.rst @@ -68,6 +68,7 @@ undocumented; you can get a complete list by running =20 riscv/microblaze-v-generic riscv/microchip-icicle-kit + riscv/mips riscv/shakti-c riscv/sifive_u riscv/virt diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig index fc9c35bd98..0222c93f87 100644 --- a/hw/riscv/Kconfig +++ b/hw/riscv/Kconfig @@ -128,3 +128,9 @@ config XIANGSHAN_KUNMINGHU select RISCV_APLIC select RISCV_IMSIC select SERIAL_MM + +config MIPS_BOSTON_AIA + bool + default y + select PCI_EXPRESS + select PCI_EXPRESS_XILINX diff --git a/hw/riscv/boston-aia.c b/hw/riscv/boston-aia.c new file mode 100644 index 0000000000..7d8b91ef04 --- /dev/null +++ b/hw/riscv/boston-aia.c @@ -0,0 +1,471 @@ +/* + * MIPS Boston-aia development board emulation. + * + * Copyright (c) 2016 Imagination Technologies + * + * Copyright (c) 2025 MIPS + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + */ + +#include "qemu/osdep.h" +#include "qemu/units.h" + +#include "hw/boards.h" +#include "hw/char/serial-mm.h" +#include "hw/ide/pci.h" +#include "hw/ide/ahci-pci.h" +#include "hw/loader.h" +#include "hw/riscv/cps.h" +#include "hw/pci-host/xilinx-pcie.h" +#include "hw/qdev-properties.h" +#include "qapi/error.h" +#include "qemu/error-report.h" +#include "qemu/log.h" +#include "chardev/char.h" +#include "system/address-spaces.h" +#include "system/device_tree.h" +#include "system/system.h" +#include "system/qtest.h" +#include "system/runstate.h" + +#include +#include "qom/object.h" + +#define TYPE_MIPS_BOSTON_AIA "mips-boston-aia" +typedef struct BostonState BostonState; +DECLARE_INSTANCE_CHECKER(BostonState, BOSTON, + TYPE_MIPS_BOSTON_AIA) + +enum { + BOSTON_PCIE2, + BOSTON_PCIE2_MMIO, + BOSTON_PLATREG, + BOSTON_UART, + BOSTON_LCD, + BOSTON_FLASH, + BOSTON_HIGHDDR, +}; + +static const MemMapEntry boston_memmap[] =3D { + [BOSTON_PCIE2] =3D { 0x14000000, 0x2000000 }, + [BOSTON_PCIE2_MMIO] =3D { 0x16000000, 0x100000 }, + [BOSTON_PLATREG] =3D { 0x17ffd000, 0x1000 }, + [BOSTON_UART] =3D { 0x17ffe000, 0x20 }, + [BOSTON_LCD] =3D { 0x17fff000, 0x8 }, + [BOSTON_FLASH] =3D { 0x18000000, 0x8000000 }, + [BOSTON_HIGHDDR] =3D { 0x80000000, 0x0 }, +}; + +/* Interrupt numbers for APLIC. */ +#define UART_INT 4 +#define PCIE2_INT 7 + +struct BostonState { + SysBusDevice parent_obj; + + MachineState *mach; + RISCVCPSState cps; + SerialMM *uart; + + CharBackend lcd_display; + char lcd_content[8]; + bool lcd_inited; +}; + +enum boston_plat_reg { + PLAT_FPGA_BUILD =3D 0x00, + PLAT_CORE_CL =3D 0x04, + PLAT_WRAPPER_CL =3D 0x08, + PLAT_SYSCLK_STATUS =3D 0x0c, + PLAT_SOFTRST_CTL =3D 0x10, +#define PLAT_SOFTRST_CTL_SYSRESET (1 << 4) + PLAT_DDR3_STATUS =3D 0x14, +#define PLAT_DDR3_STATUS_LOCKED (1 << 0) +#define PLAT_DDR3_STATUS_CALIBRATED (1 << 2) +#define PLAT_DDR3_INTERFACE_RESET (1 << 3) + PLAT_PCIE_STATUS =3D 0x18, +#define PLAT_PCIE_STATUS_PCIE0_LOCKED (1 << 0) +#define PLAT_PCIE_STATUS_PCIE1_LOCKED (1 << 8) +#define PLAT_PCIE_STATUS_PCIE2_LOCKED (1 << 16) + PLAT_FLASH_CTL =3D 0x1c, + PLAT_SPARE0 =3D 0x20, + PLAT_SPARE1 =3D 0x24, + PLAT_SPARE2 =3D 0x28, + PLAT_SPARE3 =3D 0x2c, + PLAT_MMCM_DIV =3D 0x30, +#define PLAT_MMCM_DIV_CLK0DIV_SHIFT 0 +#define PLAT_MMCM_DIV_INPUT_SHIFT 8 +#define PLAT_MMCM_DIV_MUL_SHIFT 16 +#define PLAT_MMCM_DIV_CLK1DIV_SHIFT 24 + PLAT_BUILD_CFG =3D 0x34, +#define PLAT_BUILD_CFG_IOCU_EN (1 << 0) +#define PLAT_BUILD_CFG_PCIE0_EN (1 << 1) +#define PLAT_BUILD_CFG_PCIE1_EN (1 << 2) +#define PLAT_BUILD_CFG_PCIE2_EN (1 << 3) + PLAT_DDR_CFG =3D 0x38, +#define PLAT_DDR_CFG_SIZE (0xf << 0) +#define PLAT_DDR_CFG_MHZ (0xfff << 4) + PLAT_NOC_PCIE0_ADDR =3D 0x3c, + PLAT_NOC_PCIE1_ADDR =3D 0x40, + PLAT_NOC_PCIE2_ADDR =3D 0x44, + PLAT_SYS_CTL =3D 0x48, +}; + +static void boston_lcd_event(void *opaque, QEMUChrEvent event) +{ + BostonState *s =3D opaque; + if (event =3D=3D CHR_EVENT_OPENED && !s->lcd_inited) { + qemu_chr_fe_printf(&s->lcd_display, " "); + s->lcd_inited =3D true; + } +} + +static uint64_t boston_lcd_read(void *opaque, hwaddr addr, + unsigned size) +{ + BostonState *s =3D opaque; + uint64_t val =3D 0; + + switch (size) { + case 8: + val |=3D (uint64_t)s->lcd_content[(addr + 7) & 0x7] << 56; + val |=3D (uint64_t)s->lcd_content[(addr + 6) & 0x7] << 48; + val |=3D (uint64_t)s->lcd_content[(addr + 5) & 0x7] << 40; + val |=3D (uint64_t)s->lcd_content[(addr + 4) & 0x7] << 32; + /* fall through */ + case 4: + val |=3D (uint64_t)s->lcd_content[(addr + 3) & 0x7] << 24; + val |=3D (uint64_t)s->lcd_content[(addr + 2) & 0x7] << 16; + /* fall through */ + case 2: + val |=3D (uint64_t)s->lcd_content[(addr + 1) & 0x7] << 8; + /* fall through */ + case 1: + val |=3D (uint64_t)s->lcd_content[(addr + 0) & 0x7]; + break; + } + + return val; +} + +static void boston_lcd_write(void *opaque, hwaddr addr, + uint64_t val, unsigned size) +{ + BostonState *s =3D opaque; + + switch (size) { + case 8: + s->lcd_content[(addr + 7) & 0x7] =3D val >> 56; + s->lcd_content[(addr + 6) & 0x7] =3D val >> 48; + s->lcd_content[(addr + 5) & 0x7] =3D val >> 40; + s->lcd_content[(addr + 4) & 0x7] =3D val >> 32; + /* fall through */ + case 4: + s->lcd_content[(addr + 3) & 0x7] =3D val >> 24; + s->lcd_content[(addr + 2) & 0x7] =3D val >> 16; + /* fall through */ + case 2: + s->lcd_content[(addr + 1) & 0x7] =3D val >> 8; + /* fall through */ + case 1: + s->lcd_content[(addr + 0) & 0x7] =3D val; + break; + } + + qemu_chr_fe_printf(&s->lcd_display, + "\r%-8.8s", s->lcd_content); +} + +static const MemoryRegionOps boston_lcd_ops =3D { + .read =3D boston_lcd_read, + .write =3D boston_lcd_write, + .endianness =3D DEVICE_NATIVE_ENDIAN, +}; + +static uint64_t boston_platreg_read(void *opaque, hwaddr addr, + unsigned size) +{ + BostonState *s =3D opaque; + uint32_t gic_freq, val; + + switch (addr & 0xffff) { + case PLAT_FPGA_BUILD: + case PLAT_CORE_CL: + case PLAT_WRAPPER_CL: + return 0; + case PLAT_DDR3_STATUS: + return PLAT_DDR3_STATUS_LOCKED | PLAT_DDR3_STATUS_CALIBRATED + | PLAT_DDR3_INTERFACE_RESET; + case PLAT_MMCM_DIV: + gic_freq =3D 25000000 / 1000000; + val =3D gic_freq << PLAT_MMCM_DIV_INPUT_SHIFT; + val |=3D 1 << PLAT_MMCM_DIV_MUL_SHIFT; + val |=3D 1 << PLAT_MMCM_DIV_CLK0DIV_SHIFT; + val |=3D 1 << PLAT_MMCM_DIV_CLK1DIV_SHIFT; + return val; + case PLAT_BUILD_CFG: + val =3D PLAT_BUILD_CFG_PCIE0_EN; + val |=3D PLAT_BUILD_CFG_PCIE1_EN; + val |=3D PLAT_BUILD_CFG_PCIE2_EN; + return val; + case PLAT_DDR_CFG: + val =3D s->mach->ram_size / GiB; + assert(!(val & ~PLAT_DDR_CFG_SIZE)); + val |=3D PLAT_DDR_CFG_MHZ; + return val; + default: + qemu_log_mask(LOG_UNIMP, "Read platform register 0x%" HWADDR_PRIx = "\n", + addr & 0xffff); + return 0; + } +} + +static void boston_platreg_write(void *opaque, hwaddr addr, + uint64_t val, unsigned size) +{ + if (size !=3D 4) { + qemu_log_mask(LOG_UNIMP, "%uB platform register write\n", size); + return; + } + + switch (addr & 0xffff) { + case PLAT_FPGA_BUILD: + case PLAT_CORE_CL: + case PLAT_WRAPPER_CL: + case PLAT_DDR3_STATUS: + case PLAT_PCIE_STATUS: + case PLAT_MMCM_DIV: + case PLAT_BUILD_CFG: + case PLAT_DDR_CFG: + /* read only */ + break; + case PLAT_SOFTRST_CTL: + if (val & PLAT_SOFTRST_CTL_SYSRESET) { + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); + } + break; + default: + qemu_log_mask(LOG_UNIMP, "Write platform register 0x%" HWADDR_PRIx + " =3D 0x%" PRIx64 "\n", addr & 0xffff, val); + break; + } +} + +static const MemoryRegionOps boston_platreg_ops =3D { + .read =3D boston_platreg_read, + .write =3D boston_platreg_write, + .endianness =3D DEVICE_NATIVE_ENDIAN, + .impl =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + }, +}; + +static const TypeInfo boston_device =3D { + .name =3D TYPE_MIPS_BOSTON_AIA, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(BostonState), +}; + +static void boston_register_types(void) +{ + type_register_static(&boston_device); +} +type_init(boston_register_types) + +#define NUM_INSNS 6 +static void gen_firmware(uint32_t *p) +{ + int i; + uint32_t reset_vec[NUM_INSNS] =3D { + /* CM relocate */ + 0x1fb802b7, /* li t0,0x1fb80000 */ + 0x16100337, /* li t1,0x16100000 */ + 0x0062b423, /* sd t1,8(t0) */ + /* Jump to 0x80000000 */ + 0x00100293, /* li t0,1 */ + 0x01f29293, /* slli t0,t0,1f */ + 0x00028067 /* jr t0 */ + }; + + for (i =3D 0; i < NUM_INSNS; i++) { + *p++ =3D reset_vec[i]; + } +} + +static inline XilinxPCIEHost * +xilinx_pcie_init(MemoryRegion *sys_mem, uint32_t bus_nr, + hwaddr cfg_base, uint64_t cfg_size, + hwaddr mmio_base, uint64_t mmio_size, + qemu_irq irq) +{ + DeviceState *dev; + MemoryRegion *cfg, *mmio; + + dev =3D qdev_new(TYPE_XILINX_PCIE_HOST); + + qdev_prop_set_uint32(dev, "bus_nr", bus_nr); + qdev_prop_set_uint64(dev, "cfg_base", cfg_base); + qdev_prop_set_uint64(dev, "cfg_size", cfg_size); + qdev_prop_set_uint64(dev, "mmio_base", mmio_base); + qdev_prop_set_uint64(dev, "mmio_size", mmio_size); + + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + + cfg =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); + memory_region_add_subregion_overlap(sys_mem, cfg_base, cfg, 0); + + mmio =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1); + memory_region_add_subregion_overlap(sys_mem, 0, mmio, 0); + + qdev_connect_gpio_out_named(dev, "interrupt_out", 0, irq); + + return XILINX_PCIE_HOST(dev); +} + +static void boston_mach_init(MachineState *machine) +{ + DeviceState *dev; + BostonState *s; + MemoryRegion *flash, *ddr_low_alias, *lcd, *platreg; + MemoryRegion *sys_mem =3D get_system_memory(); + XilinxPCIEHost *pcie2; + PCIDevice *pdev; + AHCIPCIState *ich9; + DriveInfo *hd[6]; + Chardev *chr; + int fw_size; + + if ((machine->ram_size % GiB) || + (machine->ram_size > (4 * GiB))) { + error_report("Memory size must be 1GB, 2GB, 3GB, or 4GB"); + exit(1); + } + + if (machine->smp.cpus / machine->smp.cores / machine->smp.threads > 1)= { + error_report( + "Invalid -smp x,cores=3Dy,threads=3Dz. The max number of clust= ers " + "supported is 1"); + exit(1); + } + + dev =3D qdev_new(TYPE_MIPS_BOSTON_AIA); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + + s =3D BOSTON(dev); + s->mach =3D machine; + + object_initialize_child(OBJECT(machine), "cps", &s->cps, TYPE_RISCV_CP= S); + object_property_set_str(OBJECT(&s->cps), "cpu-type", machine->cpu_type, + &error_fatal); + object_property_set_uint(OBJECT(&s->cps), "num-vp", machine->smp.cpus, + &error_fatal); + object_property_set_uint(OBJECT(&s->cps), "num-hart", machine->smp.thr= eads, + &error_fatal); + object_property_set_uint(OBJECT(&s->cps), "num-core", machine->smp.cor= es, + &error_fatal); + object_property_set_uint(OBJECT(&s->cps), "gcr-base", GCR_BASE_ADDR, + &error_fatal); + sysbus_realize(SYS_BUS_DEVICE(&s->cps), &error_fatal); + + sysbus_mmio_map_overlap(SYS_BUS_DEVICE(&s->cps), 0, 0, 1); + + flash =3D g_new(MemoryRegion, 1); + memory_region_init_rom(flash, NULL, "boston.flash", + boston_memmap[BOSTON_FLASH].size, &error_fatal); + memory_region_add_subregion_overlap(sys_mem, + boston_memmap[BOSTON_FLASH].base, + flash, 0); + + memory_region_add_subregion_overlap(sys_mem, + boston_memmap[BOSTON_HIGHDDR].base, + machine->ram, 0); + + ddr_low_alias =3D g_new(MemoryRegion, 1); + memory_region_init_alias(ddr_low_alias, NULL, "boston_low.ddr", + machine->ram, 0, + MIN(machine->ram_size, (256 * MiB))); + memory_region_add_subregion_overlap(sys_mem, 0, ddr_low_alias, 0); + + pcie2 =3D xilinx_pcie_init(sys_mem, 2, + boston_memmap[BOSTON_PCIE2].base, + boston_memmap[BOSTON_PCIE2].size, + boston_memmap[BOSTON_PCIE2_MMIO].base, + boston_memmap[BOSTON_PCIE2_MMIO].size, + qdev_get_gpio_in(s->cps.aplic, PCIE2_INT)); + + platreg =3D g_new(MemoryRegion, 1); + memory_region_init_io(platreg, NULL, &boston_platreg_ops, s, + "boston-platregs", + boston_memmap[BOSTON_PLATREG].size); + memory_region_add_subregion_overlap(sys_mem, + boston_memmap[BOSTON_PLATREG].base, platreg, 0); + + s->uart =3D serial_mm_init(sys_mem, boston_memmap[BOSTON_UART].base, 2, + qdev_get_gpio_in(s->cps.aplic, UART_INT), 100= 00000, + serial_hd(0), DEVICE_NATIVE_ENDIAN); + + lcd =3D g_new(MemoryRegion, 1); + memory_region_init_io(lcd, NULL, &boston_lcd_ops, s, "boston-lcd", 0x8= ); + memory_region_add_subregion_overlap(sys_mem, + boston_memmap[BOSTON_LCD].base, lc= d, 0); + + chr =3D qemu_chr_new("lcd", "vc:320x240", NULL); + qemu_chr_fe_init(&s->lcd_display, chr, NULL); + qemu_chr_fe_set_handlers(&s->lcd_display, NULL, NULL, + boston_lcd_event, NULL, s, NULL, true); + + pdev =3D pci_create_simple_multifunction(&PCI_BRIDGE(&pcie2->root)->se= c_bus, + PCI_DEVFN(0, 0), TYPE_ICH9_AHCI= ); + ich9 =3D ICH9_AHCI(pdev); + g_assert(ARRAY_SIZE(hd) =3D=3D ich9->ahci.ports); + ide_drive_get(hd, ich9->ahci.ports); + ahci_ide_create_devs(&ich9->ahci, hd); + + if (machine->firmware) { + fw_size =3D load_image_targphys(machine->firmware, + 0x1fc00000, 4 * MiB); + if (fw_size =3D=3D -1) { + error_report("unable to load firmware image '%s'", + machine->firmware); + exit(1); + } + if (machine->kernel_filename) { + fw_size =3D load_image_targphys(machine->kernel_filename, + 0x80000000, 64 * MiB); + if (fw_size =3D=3D -1) { + error_report("unable to load kernel image '%s'", + machine->kernel_filename); + exit(1); + } + } + } else if (machine->kernel_filename) { + fw_size =3D load_image_targphys(machine->kernel_filename, + 0x80000000, 64 * MiB); + if (fw_size =3D=3D -1) { + error_report("unable to load kernel image '%s'", + machine->kernel_filename); + exit(1); + } + + gen_firmware(memory_region_get_ram_ptr(flash) + 0x7c00000); + } else if (!qtest_enabled()) { + error_report("Please provide either a -kernel or -bios argument"); + exit(1); + } +} + +static void boston_mach_class_init(MachineClass *mc) +{ + mc->desc =3D "MIPS Boston-aia"; + mc->init =3D boston_mach_init; + mc->block_default_type =3D IF_IDE; + mc->default_ram_size =3D 2 * GiB; + mc->default_ram_id =3D "boston.ddr"; + mc->max_cpus =3D MAX_HARTS; + mc->default_cpu_type =3D TYPE_RISCV_CPU_MIPS_P8700; +} + +DEFINE_MACHINE("boston-aia", boston_mach_class_init) diff --git a/hw/riscv/meson.build b/hw/riscv/meson.build index 9023b80087..533472e22a 100644 --- a/hw/riscv/meson.build +++ b/hw/riscv/meson.build @@ -16,5 +16,6 @@ riscv_ss.add(when: 'CONFIG_MICROBLAZE_V', if_true: files(= 'microblaze-v-generic.c riscv_ss.add(when: 'CONFIG_XIANGSHAN_KUNMINGHU', if_true: files('xiangshan= _kmh.c')) =20 riscv_ss.add(when: 'CONFIG_RISCV_MIPS_CPS', if_true: files('cps.c')) +riscv_ss.add(when: 'CONFIG_MIPS_BOSTON_AIA', if_true: files('boston-aia.c'= )) =20 hw_arch +=3D {'riscv': riscv_ss} --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802540; cv=pass; d=zohomail.com; s=zohoarc; b=KSm2U1PRh3oCgrngvi+RnnLpZ63Qs7clckGOm1TUCPgH6D25Q/SHtAIQTez/QMABSFP0o34mYNv/u/GrWpyOGrnwaM6opL4NuTtvx18CRIEbm8hm88XBzIwGOVZkKQCexBRgelktEb2hzgPXVAfkqglBhEB0Qm2nCfNkFo+M7IQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802540; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ksIeetRZ3Mvf38H2ffdYm4vS0vWAgZzhy6QHP28h1lM=; b=h7z7Hdqd7hLcy0Mm6q/WJzZUel91nyaGB8iWCJE8kaYY8NNu0IWdqCkj7WMvqM9VIF1jIvUt9Ty/LTXwcikIu8Du9cqeIjtWSF/6+O5Yc7ZDY1323Kc9f818qXV9jcG+jTvrE62kHds56coPoALiNEURxuFd5zpY4eITg7nshTw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802540023763.215942883751; Sat, 18 Oct 2025 08:49:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA97y-0005DD-P3; Sat, 18 Oct 2025 11:45:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97u-0005A4-F4; Sat, 18 Oct 2025 11:45:50 -0400 Received: from mail-swedencentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c202::7] helo=GVXPR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97s-0001Rh-T9; Sat, 18 Oct 2025 11:45:50 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:32 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KD2eOPkoign36/3vCZC8KyrQ1jmYdSIFf6k7fB5eTdl0krBY+1W5M9xi7GZiavNnb+7KWHr1v+0slO/64znFcFdQM50TjyT+ISAkFN9wAuv7OBfmUslgWOHN4DIhR7SiTxEf2UoGu1UKwQPUbSq53o+XhkqDGJcTQcExm6Uyr6Zwb2tTXngjwvqG3bIH3PTKy9Qd5lKE4NkCYaH+dXd1cyZPYQDKYceUJMTEE6oVaS7ovg1pbSZibF4aeIxFw6uEZQ2AQPNzq+wmDOcjkrEoagr3InN/JGBzxfU1zxGxM5E0RRog1EuCFK65r5GkM5SuXPptzMQ2kF0RiTQKzniK4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ksIeetRZ3Mvf38H2ffdYm4vS0vWAgZzhy6QHP28h1lM=; b=jUmt0Yk6whXlV4W0gmO0VsrCZ04P02lo+lEgmISyA7hdoZGWbqii7IV8waSqZTlESZ+wlhmwCvB0E1QvUGrHFgQK0QX5JO49OMkV3HXEuNXHPuWhBLcnmKwjneSePGgqHeqE1J32lu+EcGXOCaV7os7T1B3yoYHGF+HVnt0/FdLKZNr4SKcyaCWk39sbrq47XBWN3csYAhsboU8pviyobSLYWGV/3aidXalB5j6QP4i4LUmjYJT78ou4FXUhRa9eskpRiS+7WGC9DIjFByG/4AjYlOtXrbtXpbj3k5lVGNOD7ZTNPJRb2Hpa/Iq6Jsd2rBhTgtZcOqPmELNPgoZ5lg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ksIeetRZ3Mvf38H2ffdYm4vS0vWAgZzhy6QHP28h1lM=; b=FSdtSzfWGMwNBJd3en0S5eksdt8DvGk/CYHl50sv4wXHg+9lUCHnT7M/CzatlzfThUrClBc8ENF+5PJ+DVFDOR2Y/jN1252lFtmbpDo2w99H/fN2qwie6IvZ9KCpozsuLRQLsoCbzMLg+xtypvqwSeTSoIL7TIsdoS7JuhrVW+nRtkneNpN9e5j9ixE8yxQuHXILDVOcld7Pkh+Ey7Tx3lAa5fo9q39Q5EXR8fco1+qNGZrK90EWZ/5zMxZxHmoAS9qg/u4TJMHkuDigDeoduLbBLsnh0I6NmD+5gh+nVwWjzpbwBSqE28xwyArmaRszmw+5DWdcGtvh9GFhtnSnEw== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic Subject: [PATCH v13 12/13] riscv/boston-aia: Add an e1000e NIC in slot 0 func 1 Thread-Topic: [PATCH v13 12/13] riscv/boston-aia: Add an e1000e NIC in slot 0 func 1 Thread-Index: AQHcQEY8G4c5TM/3HEGZwwxEdS+26A== Date: Sat, 18 Oct 2025 15:45:32 +0000 Message-ID: <20251018154522.745788-13-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: c744126e-77e6-49dd-29fc-08de0e5d5f0f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?0bWzMath0orH5jX4kDpv6gCkd0q64uTqUXCqBh7v/VeiqyzHiUL5akq55R?= =?iso-8859-1?Q?vPTmntuohdFGKufGX+SYeImy4qqsrNsNrdopmlCc5Re5lkkMEechJw4l+6?= =?iso-8859-1?Q?edEBc7/IDfosJOx+rUjoo7YQZz+vUww8dhvWo0WcSJTW4Bi07pvZFyyjhT?= =?iso-8859-1?Q?dGZZb3sFML2888dJMAzmgTHsoiglzwkoZiFm4+Tpd/7DLqnw03Lw6+2BYa?= =?iso-8859-1?Q?Pw1suKw/qmpb/b17+BFNOuDKI8hFgvPlcNnyEGuwJq9HvdzMPRy/ab7s76?= =?iso-8859-1?Q?2ZmSWfgJhRYAS4UDwG08WJAHmkOD7qRtNbmomh9uc6BY78IBlyhb+zH0T8?= =?iso-8859-1?Q?wqLQW3u3wsjDL4YEFMDycB8p+lT4VyGRp3oEwEQjBSjjIfQ86mt2uSmjul?= =?iso-8859-1?Q?/EpksUPa2YSj2kq6LJJJ6Uam39cQCdcNbcatztVK2Yv0gHURvL8cijX3cN?= =?iso-8859-1?Q?F474kx5c7OiynEa8TgyQPZECI3xEtLDCX1LUJ1713mzURWxbcJ5oYBs8Bq?= =?iso-8859-1?Q?dB3jbKpaWNnfx/FAyg8UKKMcmORqdMH4pEJFsNPSJKFjwQnymW3O1wtopT?= =?iso-8859-1?Q?tl2OsQsl69I9s9PIvoV0IA4S+HSzzoM2mg0Le8YAKq0ZuCDpL6Cu+hQj+d?= =?iso-8859-1?Q?MUHEZ7OuK12mVsipo4finzy5xnMwFnSc2L2LUsbEkHsQ4FmlhIudaxcdXc?= =?iso-8859-1?Q?baiy5ffkgsUjz46g0hKAYg6AkZ37M+npGzgihAhp5emg1FKn4dhYksanal?= =?iso-8859-1?Q?MGNy3WVkDFdUjDxqgLQQkUhhfDXyR7YoX8HtH0XLtCIcZ1p92Q/hNGlw0Y?= =?iso-8859-1?Q?Sn83YECowTdSIwpfC5Dm6rhT75BknDBjaoR7GFRBuVwUVoxhfuO+7tFO9C?= =?iso-8859-1?Q?SYNTIsa1Wb7aAsLDkIX2mrjWk+E5FJSHeCCtkG/RxL7IS9UPcaaDpX5xjg?= =?iso-8859-1?Q?lQKHS2+Z5fy9GOC1iCy9dFt1dwGBQlE+P4XxxV9nmMRYnBQxI0q8L++e+O?= =?iso-8859-1?Q?7nP899kmPn/bL1hDPABaNqyittakfO7X0s1H+HD77D7Pkd7vqY1yHi7ri8?= =?iso-8859-1?Q?QXWZ92gOIPTeOCbB/77dEasbl0sUzAy4CKk3O9IRygLDHzZrvYhv5NzwQY?= =?iso-8859-1?Q?k9KgcyUt6C85kHNPUzeden5XxEwQystLJzikQobM7JqIsThn8dKUJMpTnG?= =?iso-8859-1?Q?Ryi4SOlUqTAMo4Gj+fCcGN3HATFyIEGHufBCmxuMMDYSh7CJFmT8WsBm16?= =?iso-8859-1?Q?hN8XsZ7qHRCprMDpTwOIWVYdSM7qDoJvBRhfS66zwIU2vAgUCjaQWSFaSN?= =?iso-8859-1?Q?UuUKOGFg74BOJSnwZCjP1Sey1znQhiKYy0YXeL5+iriwBi2urxi2+O13FM?= =?iso-8859-1?Q?xMuKpbZ6osYtnxxPIjj+n065+EeJjE56jI1KUFmiem58l9u+P+Qg/heyPx?= =?iso-8859-1?Q?n4SNMzWruesNw9poRgNuC/YrkeAVnohUqVjR38XpGYlGcqht373j/y+7jK?= =?iso-8859-1?Q?BEtBYkHOpAv3OdLy5oYDGYJQSEWgEusaSTza/fzv8rFFQr99KoP1zrnmrx?= =?iso-8859-1?Q?gOJf5AuHcsQlYHMwMjyysh6wXUFX?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?tBn/+QIrZwSOxj4E7fxiTKUhodWJTo/wLC8AxuiG2l3VDc37ZZiSjbiBIC?= =?iso-8859-1?Q?FoOHuyKkLJCzFOlbESWsWCBwnN8HOPjw7wQZcwOsCLhrXLB+jRXFGPsD+1?= =?iso-8859-1?Q?ZqN1LXs96HtFlOmzEVTps8RRwNSVBrKSDQFCAR99HsLNiumSg2iv3iDh8S?= =?iso-8859-1?Q?cRbPsp77ctteZZO2pTg2N/dqjkLwyzmFCHg0XbzmLOb0tE+3X8NwUvFdFy?= =?iso-8859-1?Q?jyCJ4e53IAQ8RVXS5Qq6Izvsulv+d3zUPuBUCNNGhsJxq1Gm9AdocJbIuX?= =?iso-8859-1?Q?eufStWHkNQeIRwlTOV7fZdCHkks9cfcFozeIW/rMbU75H+PraOdB29/Pay?= =?iso-8859-1?Q?SCeE4RCd0rXhw38070igB98IUuRSb19xndhwTaKdF82s5bfqPQSqoGD3Jz?= =?iso-8859-1?Q?Iz4/I9l8PUdMAkK1lYtXAMPSzef4AD9vKqK7UvtPKvpEPU/IIWlKfzkjBn?= =?iso-8859-1?Q?xJlvS4Hgh0Naw3VYk85TR/lGZCoVRDR4f4+az1kBSkTQMnlhWYJwrfJer0?= =?iso-8859-1?Q?XUfS6EdsdunY/qZHeISKD/BKmK4Xj8keyUOh2FqYQUMs04BZwnETYsSd2m?= =?iso-8859-1?Q?SaEOr9uOobnunzjeAbBsqNirBYsNg+RXGB1DFe/hlQJlAO+HfV6yWjIqkW?= =?iso-8859-1?Q?DmF0PTEpqjQG+mOjogXDRdOaYJC4cxR7urNH/tX3Oey8Pn4vOHqYXV5WTr?= =?iso-8859-1?Q?o7UYQBrrx67GvzvGsUAZUU2v8uS2/flXhQQwgsLbYNkNgqjt772kvXUoht?= =?iso-8859-1?Q?qZgE9Q+7PQMfepH8PpVaW4aEp8S9EUsuta2Zkk6YmZOGo/emuGOfcBaapB?= =?iso-8859-1?Q?8lLei+wgxMv5N7ylRPl+wctTQolN3ec9RawAgpcYdzl5Ch/ggFmaqMu+V9?= =?iso-8859-1?Q?mwpbQysOsbuVAO572OsJgkvUevyEcLtzKUD80a/dC9a39czjdGKlsFHolq?= =?iso-8859-1?Q?yK3nvIdRrvWDXKHQAf1d7c3RSVw4IC6orZWl1hSc/uAVUCNwAegLe3+AQF?= =?iso-8859-1?Q?db/ITi0Xpg5k9KqBCFwngEbqu9Y0FM9jBHLm87PS2rEnFWfF5OF//P79aG?= =?iso-8859-1?Q?m42IeqL9yqrVR8zRnUyjTQXmuNMIPdv6ws60ln8gVhnCsKxBkkqLGvYJkF?= =?iso-8859-1?Q?mDzhk+w/sTuw0/RRTorHhtmWCwcQUkO6vZeUGJ6CN7Ag4zIxQbGsGSy7FC?= =?iso-8859-1?Q?BaqUXRfqrSD3aXdqGHzEDEmgGdnfbxd+iNhMnIdjOL7fjfGRHT0Cr7UPPl?= =?iso-8859-1?Q?Jxw9DL/t1BoqXt+z83+AaboBOLnPcdTJGx0fGSmv2aN/rXUAU6E+s+30yb?= =?iso-8859-1?Q?IWTgbphaOa7WU4T1o7WcTkryBViHdaTS8GBXDOwFwRx48fKHatNetCg29O?= =?iso-8859-1?Q?xi7joUFkbEcFr9/8DE8GD4IaqP/1fIqmx2Hv0AZWmiqfqorQIiMV2VokNS?= =?iso-8859-1?Q?HQ0Of5fp61Eqvx0roIIuh6QqJyL+Kz99jLVZff80EcihKViadKiLU6MnCl?= =?iso-8859-1?Q?kQnMtQPUBD43jTlLXT06gvqP4frmlq1hQ3eBmQioSyEy9oVAEW5vitPJlF?= =?iso-8859-1?Q?v8ONnw7pDCZU/uGywvyohcUox3secVyUX6QzsKpR50e+UGpu9TyBDMzd+m?= =?iso-8859-1?Q?nLEhAUBLkzbu/nfYas/sc13v3ABFkDAHF9vUIM7OY1gqQ3Rzhs7FJEvAcU?= =?iso-8859-1?Q?RMaXH6dceXC7gZCnbtY=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c744126e-77e6-49dd-29fc-08de0e5d5f0f X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:32.2433 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ZjG/iuX7iqzqW4VfGRIQedPeJC5qmBzZJExZWxHqyeOSPirAQlvPHbMjBBeg0d1s2e86k72Ok3k0aC3sdS1sIKz6GxNHTvb+GvqdX9lUeCY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c202::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=GVXPR05CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802543944158500 Content-Type: text/plain; charset="utf-8" The Boston AIA board needs a basic GbE NIC. There is no PCH GbE device emulation, so use an `e1000e` instead. We place it in **slot 0, function 1** in order not to conflict with the existing AHCI device in slot 0 func 0. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Reviewed-by: Daniel Henrique Barboza --- hw/riscv/boston-aia.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/riscv/boston-aia.c b/hw/riscv/boston-aia.c index 7d8b91ef04..44be6e03d3 100644 --- a/hw/riscv/boston-aia.c +++ b/hw/riscv/boston-aia.c @@ -424,6 +424,11 @@ static void boston_mach_init(MachineState *machine) ide_drive_get(hd, ich9->ahci.ports); ahci_ide_create_devs(&ich9->ahci, hd); =20 + /* Create e1000e using slot 0 func 1 */ + pci_init_nic_in_slot(&PCI_BRIDGE(&pcie2->root)->sec_bus, "e1000e", NUL= L, + "00.1"); + pci_init_nic_devices(&PCI_BRIDGE(&pcie2->root)->sec_bus, "e1000e"); + if (machine->firmware) { fw_size =3D load_image_targphys(machine->firmware, 0x1fc00000, 4 * MiB); --=20 2.34.1 From nobody Fri Nov 14 17:02:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1760802368; cv=pass; d=zohomail.com; s=zohoarc; b=VH8gUUudRBSCBPsg1y5NBp/irRddsQqKHT1a+NWCRRH0VMPF4+rgxPrEZFW9LcV7x7I1SqmZWBP3YkQCJKhnk+CCoYUX5xB0tTFwcq9RZArHcL4vg+9bGHElIIBBSyhqRScCX2AjNjsSuV9a4p0dXjg/0TDaJi1tTZ2lZTMkFhQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760802368; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gEibdGsjLGzjckGQcbWj3Q2Gu8N2//vLQZm8zCnKkJs=; b=MLfaSu58ansfAVNgk93CgkyCtSE7KZSR34rKoCjL4jvI0M4qF2RVA39t/q+oDr3M+tnMnDU7I+Dv2DWR0YCvVtvECDvfD1m9bo4zMeG1TkjrfJfZMQ0Oqw36LX1QRLMupkwUhWzNrK0MJaByVBdVDfyh5w9GLTAnlkggZyaxok0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1760802367987332.580823367559; Sat, 18 Oct 2025 08:46:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vA97x-0005Cb-W5; Sat, 18 Oct 2025 11:45:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97v-0005Ac-NW; Sat, 18 Oct 2025 11:45:51 -0400 Received: from mail-northeuropeazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c200::5] helo=DUZPR83CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vA97t-0001QR-DO; Sat, 18 Oct 2025 11:45:51 -0400 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com (2603:10a6:20b:4fb::5) by DB8PR09MB4360.eurprd09.prod.outlook.com (2603:10a6:10:154::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.15; Sat, 18 Oct 2025 15:45:32 +0000 Received: from AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a]) by AS4PR09MB6518.eurprd09.prod.outlook.com ([fe80::ad50:891a:847c:580a%4]) with mapi id 15.20.9228.014; Sat, 18 Oct 2025 15:45:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YXuNADaGg+WwVY4RaOZki0YOPU4e9FGkGPDODhMtUMbGy67lJGpsOfgVFb9xNQ2aIdcO3yZOGEPwEESjJArKDWe+F+dI3wlOQYBxNi5q2XgMKf5QWM25iXQ2HicP989Y47b8qDliv43mjTVLULxmZhBHzxwruOUFQc5m+g78sjqnxByDh/jtXQnUsq7JuUTaULUmqTjVtvOg+z3eCEb8z/TM/phI6Yi/dT1DOIEqa3x8RG4yvZxMPJO4fkagkZjtgyDMCgt5bisXv8bMfKpVbd1Dxb7uX3DeLIjAS4vG6Tfd+XTL1EvN2qXkBxQjkiHa7vMZAMpwEAShwKlYF11Zqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gEibdGsjLGzjckGQcbWj3Q2Gu8N2//vLQZm8zCnKkJs=; b=ZrqS7jiLnKGcmmUjNQbqGYrFwmXux5M5TouSjF3Je3h5XEhU/sIh0kSxjDUQxvj9YJk3Rm4ZeudIIAZy8HcBNWFH9OjeLawBf4YFCZ8+pGra+qyI/Hu8af3mAs7BKid15kgjkdxTV3rvbzqBymVkYgYYDTGBIHwHp38FkoQw7r5dykC0qcta9bezLAdpgjoz4s3ss/XQe1FbE0VX5V9+mO3vX5D6UaKEyKq31Oq8lVUWfGIVgK8Ybg3GEl8w5ZWVDnXJ4x+u4/9qwm4wJSnmEZitdGJGY/LKl3NWjAvz8lfbyNuNf1pVxKBZLK5p9Av1TEZUVPkh2dphw20PAos0eA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gEibdGsjLGzjckGQcbWj3Q2Gu8N2//vLQZm8zCnKkJs=; b=rijShlBk+8Vxq4mPjHvFpKWwhtUogZaxJ1vgOQu5dEmrfvUNNaenQqdHMvZ6LPlIBlXpbd0O2LfPuP6d53MlzedVUIfPossStj8chtaTHzyUBnMJyWMPl1o/ZMAMDcPrEUdOXqTjEnK7mJvyDv8rXMxkVvLYB/ESoeORVNtDCJwOxgHPBAGT6J/Ag1zZ8YujVLpOBVejXLWAo/Wr3cfIUjbARX2QXtYoKrtJngSJDHAbQT/Uo5BFGjsssoe8Jp75Velp7d076umPEYZg1ODPy4/GkvZYobPts7gQJVcdkQ6+BU44XahJoFz/3vc2sbFdtnxfbDe2Len6IdCErzu7DQ== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic , Alistair Francis Subject: [PATCH v13 13/13] test/functional: Add test for boston-aia board Thread-Topic: [PATCH v13 13/13] test/functional: Add test for boston-aia board Thread-Index: AQHcQEY8nZPutW0+AEqbhXCTtCkpsA== Date: Sat, 18 Oct 2025 15:45:32 +0000 Message-ID: <20251018154522.745788-14-djordje.todorovic@htecgroup.com> References: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20251018154522.745788-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS4PR09MB6518:EE_|DB8PR09MB4360:EE_ x-ms-office365-filtering-correlation-id: 3248dd7a-a54d-4bae-e04e-08de0e5d5f34 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|7416014|376014|1800799024|366016|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?7esd3UxYvgzBnU84OvzT1kX3S+3PYtMbMzGsuXAIuxe40/SPkDHI/b7Ipy?= =?iso-8859-1?Q?Cb9UBbVmHLd41iaYF+BVdQzZlgH1I/kJLd6xb+cT8pVo/hHUh6fMZHLGHW?= =?iso-8859-1?Q?SHD18Kob3xOqTVpxyuOey3tCAr2vnrURf5xBFTi68eOsnwCJ6PI8Hba8cW?= =?iso-8859-1?Q?w1xrNxfUNCfhbX/g9JJZ5bHY7dRbXTVJEOqqZxG1oI8j6LjbyjAiTWc23k?= =?iso-8859-1?Q?m/GcYe5M1s82EN0UbKfpr6QRJNql17W0y9LMw49xJWlL55WavfZ2j/Fe1S?= =?iso-8859-1?Q?kaQ+ejwh7ZMWfF+LRETiCuyS/wlZAAyHzdFHi9dW7wxPdxsX4RM41PvPx/?= =?iso-8859-1?Q?YJX812DF6ZBzKvM7alxoFLUb0WxbMJ4xwG25G0ya5fplvZwHJ30nerGEE1?= =?iso-8859-1?Q?eP8MsHMn/XbeByrgrtdNOiIkBvOKuKBDW8ijk0/eG6jWwW1Y6sxsbjZXxs?= =?iso-8859-1?Q?20StcVD1Yxz2rqtAetPDvG14Ie+213WPlRCYguRzwdBj8kATJ5o+UNNyDr?= =?iso-8859-1?Q?2xo+Uy14fEftYTTtX02VCjrQWTVfPztSHLWOMbrxQf62T8/89cPrfNYgAP?= =?iso-8859-1?Q?REZi7RFM8jnKLzpM5E1rhJKJJ3KDTJp8F0ahfhVn9C9F7/7tgDOGSTQvnx?= =?iso-8859-1?Q?Yq7Ll+TDEWUN6KfTPCdCQSG6h+NiQOokBXx3LRZ4tAfeT0e0LRCQmWv8uU?= =?iso-8859-1?Q?NaWfFRKTWoLOIMKXRzxGykE/R4y4PUz6PpDNhbXZPL4wI9HIWatUXfijyq?= =?iso-8859-1?Q?u8boQonTBbxvaBab+aaQkz97ykx/e18vjPiKJUPp8/UFaORzTIBVE87bQY?= =?iso-8859-1?Q?osbUS2dsv7yx290B/uGG9uSQ23lnKoJmUSfk0uw0AMN8cg6V6SxHPUiqv6?= =?iso-8859-1?Q?cuks0j79AzkXvmesXdxyFnbsk4aL30KTCe/gwOyjDaZTjbUAquPPUhScm4?= =?iso-8859-1?Q?MTW56vk+dS7aUqffA9mHVnne+KJdmyICmy232ub9mdhwDJAz0Vj1dShtJX?= =?iso-8859-1?Q?lDIDDvriLVJ0cUToGYXqK+xHUApgiFpyJbBHR3VGTKmyo7W1NMe5GZNPa6?= =?iso-8859-1?Q?d5cHGNIsRSf2glEYGRQjL7J+Jm/Wco5dPqd9Oo9NhaFxv2agGVTPf1M4qA?= =?iso-8859-1?Q?71G6nXroToY9Y9qh8MHl29R2xpT0+WrxNCq2aD7MEKSOsnmaVq5Qvt7T2W?= =?iso-8859-1?Q?+9rsBje6kw3olP9o/LAoCmITOMqmNlRsOwUUENfTsa6Ytq01tbhzTFyt58?= =?iso-8859-1?Q?YPo3oP/9a8xVNJ33m/SEkh/v97D7PnNmyznLbls2j32Ni0JJLCPWsfCFO2?= =?iso-8859-1?Q?NlYTdMtfhjsCrF9ey3Hsm4x1PkNMiGISfzcGx1xlxofCEcD0k8l3MHyxIH?= =?iso-8859-1?Q?JCDKN2nT5QwbIbFY6aKykvUm8Iw6dQccC6isU4aXWHGccP5lxvEKTv2usx?= =?iso-8859-1?Q?/HXvDpFFV9t3E5yinEhowftlUsNnNmo+vA7Ow+UkR5BxorlXb8OhhSmmjd?= =?iso-8859-1?Q?AdTaRYnanKE7roce18StmNOrimW2PxxhiSOLgzJwmu4XFZEmw5ZdwXypbg?= =?iso-8859-1?Q?aW7+f3EULidakzpD3wZzx/uyEQLB?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS4PR09MB6518.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?g0jx/F4DoS50Vf+PGDmTiuFMHvXNoWdtGflwkmXlZk9Swj5dNq4w/h+Ajq?= =?iso-8859-1?Q?JZHlfI40rq/KnTbwddfhkQursG+CC7Q/GB3Ne781z0XvuruU2GvSjExOID?= =?iso-8859-1?Q?4spKZ3e/9U4QDiPxi2DHqhDHe2VmkVfCinbB+GJrJh0buN9vbHoZsD8taz?= =?iso-8859-1?Q?++Yu0JbH32/jLfBEsTlD5lNLlyGE7NxmRYs71IICvxke8b2zpJct/2YVgV?= =?iso-8859-1?Q?97yLMKFqg2/uWLA5REWs8IgTLnGUT95Mspu8EvgleL+JtDFpl7SiX7yoLf?= =?iso-8859-1?Q?azj4+rjQfA3PgPIi5lTUOIosl/paclGfkgkae0y2hwHmNWLBf+9q5nIj/w?= =?iso-8859-1?Q?tpLt2HS+SeljXwO9uAK2FNA68f0X4lxznOQN0ycKFgqjHTnG4gxWLJdvNw?= =?iso-8859-1?Q?tEcnf2u9PfYa6Jwe6paqb9UKD6/cRtlsW55LeC9yhlrqyfDrqfyFW9oPgX?= =?iso-8859-1?Q?vPzQN/Fh7yvplIW00p1BsZgFREhO2eXRMfW9AaLUwhdxPLGqN1kv13eQLw?= =?iso-8859-1?Q?AAKyEJZYkVDzJ7LoYyt9ca1WTzd8c5s2ImiGxcM60sqqy7Ditf7RaOxdvU?= =?iso-8859-1?Q?5yzj7dhFRE71C02QETc7bVc0BBojuvw+5SvsiqQhmNsYzfhW5G0hg/ey68?= =?iso-8859-1?Q?kz0lm+8KzhG1S/LCOA6EIdltUJy8HSUXh6za7SL70X/FAalUNm/R0zAOQW?= =?iso-8859-1?Q?29YEk5kFqRHJQlSvhwflC7S2JBH4ayDxxZNMNmZZyehyAxaCNLSrGlrq7Q?= =?iso-8859-1?Q?caQ/lrT/8xZf29evlvqMV2gUHheFMEzSvsitb1Z9+ydMThPdpVXxSovZ2u?= =?iso-8859-1?Q?ROIWgd+suOFTE8s6vMipUY9aPnUGxHu5aO6oM7jyBNh1lBprqFwEHeRpFc?= =?iso-8859-1?Q?1aQdJkhtZpX8j1rs1lovdzeRmw9RKR1TNfQmKK4GSXNc/bT0l3f5LVkVXw?= =?iso-8859-1?Q?IJFpwGEr9JxssmaRowvZ042RPhQflv95gEY4x/SY8tTcm/uaKVdAknwEZk?= =?iso-8859-1?Q?1AjDBzXE0kPEZVWPlnO0pdlFRABXAB6kmr0P22KZijpQ3TuPCjvPZ9EF8I?= =?iso-8859-1?Q?mGttUtQkovvocBF3v6q5eyuS6FTR6WR8nmEP45yyYUzGRBhlXR794s7yKk?= =?iso-8859-1?Q?s9dI1TDLt/OICbHOz9Maqye1ClC1ULMS91yyxiAzXsq20AjYvCsudYDSKY?= =?iso-8859-1?Q?JLMH0oWTzgHPI7CT2gtQ2E6FCKL9x13nwfbrqOUlG2wgqvLiW4u00Jud/U?= =?iso-8859-1?Q?ucT9R+jutaPCtJijC3wf1IgKyYOFHSobIWp9WgaESYjZGHUoG9eJoUQ61W?= =?iso-8859-1?Q?BZxl528g9fkrKUjxJ/3tMRT5GSlJ4cIL/fmTNJ0/ko6wBSbUN9IdGmuJJc?= =?iso-8859-1?Q?jVYgR59ZxOBrh8r7BQ5xkeaZ2yrGhniA8UbRoWkagbkSQXzrU69Yz5npKn?= =?iso-8859-1?Q?4/hvqiXEu4Sz9f1OdCxmr/XyM75Hl5ZBhl674Hz1HWwqb3SmG5foR1llVa?= =?iso-8859-1?Q?Zmw8PYyoWi1+cHmei+gRDLvU8kd43jJTzKCxuXqCBKNkKhoVU5eTrJRfyZ?= =?iso-8859-1?Q?4+2qa42P43lTu9EhUxCkJ6XlKAQ8ZptuDjxGl49iZp4sPYXqeB44nVrxzj?= =?iso-8859-1?Q?8ybhvYEwfKSguQD7XKFxln6ggGApmxh/QvXBGPwZF2T3eFtpjIFE17DO0h?= =?iso-8859-1?Q?9OQlTfzMIZjpn8WfMP4=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS4PR09MB6518.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3248dd7a-a54d-4bae-e04e-08de0e5d5f34 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2025 15:45:32.5006 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: S+53NBZuhrk/KVFWUk3+X3jpIZanI5yhpudBJkHTW2OcRFBoztiBf7LWI1IsPPhGTkbkyJtN9aUsk+5fkIdp+16OWFvG66xh5+AQyTcTduE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR09MB4360 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c200::5; envelope-from=Djordje.Todorovic@htecgroup.com; helo=DUZPR83CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @htecgroup.com) X-ZM-MESSAGEID: 1760802369962158500 Content-Type: text/plain; charset="utf-8" Add functional test for Boston AIA board. The P8700 RISC-V based CPU by MIPS supports it at the moment. Signed-off-by: Chao-ying Fu Signed-off-by: Djordje Todorovic Acked-by: Alistair Francis Reviewed-by: Thomas Huth --- tests/functional/riscv64/meson.build | 2 + tests/functional/riscv64/test_boston.py | 123 ++++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100755 tests/functional/riscv64/test_boston.py diff --git a/tests/functional/riscv64/meson.build b/tests/functional/riscv6= 4/meson.build index c1704d9275..f30d583a29 100644 --- a/tests/functional/riscv64/meson.build +++ b/tests/functional/riscv64/meson.build @@ -1,12 +1,14 @@ # SPDX-License-Identifier: GPL-2.0-or-later =20 test_riscv64_timeouts =3D { + 'boston' : 120, 'tuxrun' : 120, } =20 tests_riscv64_system_quick =3D [ 'migration', 'opensbi', + 'boston', ] =20 tests_riscv64_system_thorough =3D [ diff --git a/tests/functional/riscv64/test_boston.py b/tests/functional/ris= cv64/test_boston.py new file mode 100755 index 0000000000..385de6a61d --- /dev/null +++ b/tests/functional/riscv64/test_boston.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +# +# Boston board test for RISC-V P8700 processor by MIPS +# +# Copyright (c) 2025 MIPS +# +# SPDX-License-Identifier: GPL-2.0-or-later +# + +from qemu_test import QemuSystemTest, Asset +from qemu_test import wait_for_console_pattern + + +class RiscvBostonTest(QemuSystemTest): + """ + Test the boston-aia board with P8700 processor + """ + + ASSET_FW_PAYLOAD =3D Asset( + 'https://github.com/MIPS/linux-test-downloads/raw/main/p8700/fw_pa= yload.bin', + 'd6f4ae14d0c178c1d0bb38ddf64557536ca8602a588b220729a8aa17caa383aa') + + ASSET_ROOTFS =3D Asset( + 'https://github.com/MIPS/linux-test-downloads/raw/main/p8700/rootf= s.ext2', + 'f937e21b588f0d1d17d10a063053979686897bbbbc5e9617a5582f7c1f48e565') + + def _boot_linux_test(self, smp_count): + """Common setup and boot test for Linux on Boston board + + Args: + smp_count: Number of CPUs to use for SMP + """ + self.set_machine('boston-aia') + fw_payload_path =3D self.ASSET_FW_PAYLOAD.fetch() + rootfs_path =3D self.ASSET_ROOTFS.fetch() + + self.vm.add_args('-cpu', 'mips-p8700') + self.vm.add_args('-m', '2G') + self.vm.add_args('-smp', str(smp_count)) + self.vm.add_args('-kernel', fw_payload_path) + self.vm.add_args('-drive', f'file=3D{rootfs_path},format=3Draw,sna= pshot=3Don') + + self.vm.set_console() + self.vm.launch() + + # Wait for OpenSBI + wait_for_console_pattern(self, 'OpenSBI') + + # Wait for Linux kernel boot + wait_for_console_pattern(self, 'Linux version') + wait_for_console_pattern(self, 'Machine model: MIPS P8700') + + # Test e1000e network card functionality + wait_for_console_pattern(self, 'e1000e') + wait_for_console_pattern(self, 'Network Connection') + + # Wait for boot to complete - system reaches login prompt + wait_for_console_pattern(self, 'Run /sbin/init as init process') + + def test_boston_boot_linux_min_cpus(self): + """ + Test Linux kernel boot with minimum CPU count (2) + """ + self._boot_linux_test(smp_count=3D2) + + def test_boston_boot_linux_7_cpus(self): + """ + Test Linux kernel boot with 7 CPUs + + 7 CPUs is a special configuration that tests odd CPU count + handling and ensures proper core distribution across clusters. + """ + self._boot_linux_test(smp_count=3D7) + + def test_boston_boot_linux_35_cpus(self): + """ + Test Linux kernel boot with 35 CPUs + + 35 CPUs is a special configuration that tests a non-power-of-2 + CPU count above 32, validating proper handling of larger + asymmetric SMP configurations. + """ + self._boot_linux_test(smp_count=3D35) + + def test_boston_boot_linux_max_cpus(self): + """ + Test Linux kernel boot with maximum supported CPU count (64) + """ + self._boot_linux_test(smp_count=3D64) + + def test_boston_invalid_cpu_count(self): + """ + Test that 65 CPUs is rejected as invalid (negative test case) + """ + from subprocess import run, PIPE + + fw_payload_path =3D self.ASSET_FW_PAYLOAD.fetch() + rootfs_path =3D self.ASSET_ROOTFS.fetch() + + cmd =3D [ + self.qemu_bin, + '-M', 'boston-aia', + '-cpu', 'mips-p8700', + '-m', '2G', + '-smp', '65', + '-kernel', fw_payload_path, + '-drive', f'file=3D{rootfs_path},format=3Draw,snapshot=3Don', + '-nographic' + ] + + # Run QEMU and expect it to fail immediately. + result =3D run(cmd, capture_output=3DTrue, text=3DTrue, timeout=3D= 5) + + # Check that QEMU exited with error code 1 + self.assertEqual(result.returncode, 1, + "QEMU should exit with code 1 for invalid SMP cou= nt") + + # Check error message + self.assertIn('Invalid SMP CPUs 65', result.stderr, + "Error message should indicate invalid SMP CPU count= ") + +if __name__ =3D=3D '__main__': + QemuSystemTest.main() --=20 2.34.1