From nobody Sun Jul 26 10:59:42 2026 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=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1783413327; cv=pass; d=zohomail.com; s=zohoarc; b=kBYTgsYvZdAtk2DLDdKE4+hIeaDsyAa1Z0ssqSzkhVXJ8uu8TBOPwv8w2RBYBSnyZZuhTBkqVLEYNBBnjLHii82EtLR31Yf7gR3CF3uCoSSlWJY8BrBsyYllYsPu/T1Z1DfjvVVICWati1NoH1G1AcrxO1KmrAPHZhFo7O5/e30= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783413327; 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=4a0KNC06bqzTkdXHU0DNoer/ulh3oxOCCv0N/CHZ65A=; b=eeum/J1rZb9y4+JeZgTwKkyn0jBsbXuCO0lKZPlE32WcJjo8zsJ/FxfE4s2ozeed/BtlPqr2YKfuQ2zcSNz9oaUfNyz7nyr5pXXpA5VGR1y3xGafXNoLinp643TdAg0IrcnUQ9aW52hrhSLanVwCuY9WY4Q5xmRwNpZDiNVOBdk= 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=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783413326972966.1933093387831; Tue, 7 Jul 2026 01:35:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh1Gk-0003hp-Ls; Tue, 07 Jul 2026 04:35:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wh1Gj-0003hX-2P; Tue, 07 Jul 2026 04:35:05 -0400 Received: from mail-japaneastazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c405::5] helo=TYPPR03CU001.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 1wh1Gh-0007zQ-FV; Tue, 07 Jul 2026 04:35:04 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB5558.apcprd02.prod.outlook.com (2603:1096:101:53::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.11; Tue, 7 Jul 2026 08:34:52 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0181.012; Tue, 7 Jul 2026 08:34:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u4uimB3NQ+PwQoreDAwwyGvNXWdhjPQ2lmQSywMoJeKATljEhpsNVojOAi0iE8iPEecHFm2+lDfuIzJRP08Lg7K76zfLiBY/3LTpQDWwuQcbKNDM9AiMgoLoW51HVJ/+1V7VdxHPh5PEf4Rhs47QnHky1k4RL+xeF0loxwvQ/wVoNVY8RPTjylutNNyBpRjjtzgvi5EHt3ipTxh4ff66Zf3aluoJX5xOBMXMWuB1sK6lQhaM97uz3Psqtzi90HHMrodm6RBjXy6H7+CTdDNLjMjOph1iZrV0z1jvXgwQAa9nLDmHPmL9Q0CDfCj7Bq2JQJ7RePyJnN+vONQXodZ/MQ== 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=4a0KNC06bqzTkdXHU0DNoer/ulh3oxOCCv0N/CHZ65A=; b=ZH02AA2Uxu3JTbpdAwdKE64sbbtppANvrjYvn9ooMUTrZCefCdjHIDAf9EuRuVVpmVukYDYpJUb0rBWV6w0R2k8zRONU38uvtdlEmk6Q9nWaJoBLVfNWPP73t6wSoirWP+u096wRke2KXe3ExXCWKHBQ/+qwe98u79btJJugl6hljcARkw1VGdA6rllMzU2ShKo0k04h8xLtN4OtwEjcg9CKSorWm2/e4CJPGhU4g4R52+OznyrGoePczJFaoGb9JnYGu+J50o8kfwdYIypYarrrNLBIY7c1bGuT61+FURpVGGK2mtHA1XgvkCvfzPmEByTdPRwUWwwR+Syf8LRtvg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4a0KNC06bqzTkdXHU0DNoer/ulh3oxOCCv0N/CHZ65A=; b=Cyh8jSkkvcRDBo7Xq5KPGcnbiQR7ZH3KHs3VBnlolCY3C1e3Rxx24cZqUb+szB9IOngovJT+i4g15rjEcyF/VE9zKMUeMaPn6qoe/hB35Y5gwEOdHII+FzbP6GXqUm7hzGWbwiY8xeMTawoYc79rlxp6UdMGU3OBjd40TUu8m5o03oNW8YFiBYPc+XgKF8V/iGdJOHNYtOlT0tfC41ygvdqpPc7H+isVkP8mWbO+wEe1v+Db4dsPbl3xGD4wZn3um0E07k7M8wym82MDRcz0DlhW+GdFSYR8/F4T2X3TbqsuUlz2nx5oThj0uqEoEE1MNFXqDAxAWK/XVtLuMMxbxQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Alistair Francis , Hanna Reitz , Kevin Wolf , qemu-block@nongnu.org Subject: [PATCH v2 01/10] hw/block: m25p80: Fix dummy byte handling for Winbond flash Date: Tue, 7 Jul 2026 16:34:20 +0800 Message-ID: <20260707083431.219671-2-bin.meng@processmission.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707083431.219671-1-bin.meng@processmission.com> References: <20260707083431.219671-1-bin.meng@processmission.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0106.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c4::6) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB5558:EE_ X-MS-Office365-Filtering-Correlation-Id: ae9a07fe-9f77-4e36-02b7-08dedc029d99 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|366016|376014|1800799024|23010399003|3023799007|56012099006|22082099003|18002099003|6133799003; X-Microsoft-Antispam-Message-Info: FqnTj4V+zmMNoK1j9VeTjpXXmFovK9xRIR4GjBJvtJPe9b8SmYf6sQkp9oHzselkzqzThLKL01rZt0nakBYR72YQsVeHyqx/0pXiEW+SYLfgsCur6v0IdG/Upauc5ptBaROMgFwhoYA/XasOEVbY57eEpm8+Rf85XndOOyViqpKFmETXMO6XI5qqtFjgWKJgqSFYGnaE6TUi/5x3hf8lt06kNye5JNwLMempMGteuSKkh7xs/yfAexSMj7iG3XqTqCs9QcAlKi9KhybDW2Od417okFMPWHBjIrdeImdhrx6Xajk9Qf0KPhsmwPSqGFCwk1JuLXqA4JJ1lT/r8d0ya0n5qDYzwFc3lm4w08g1O4o2c2+aebUf640SzaDaUmWUsr616CdOcDCIkd9wZ1v8ajSLRfP+vgIkCEvavJfrI5W7qgAtwnJL1EibkvsFaBVMWgghM7c/abzfz0co2r8Z/mYnIyx2TSu1N4UJwACzMEPewSQbmJunOPTt0EeqiKpxL6IxoiP2wHxG0ewfrK56/kUSEW6afZrWolwO9OYeS61nfxyukcUZqn8djM+TesvP/owN61MO9B2UcPVQiMckl0gOTcAh/3dfHQA1TQr9A5DwvKOjMXwGA1KCc3zwo2s0 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(366016)(376014)(1800799024)(23010399003)(3023799007)(56012099006)(22082099003)(18002099003)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?alZ0MnFCeFE1ZTBOUzJSRWFoZHNJWjFiS1FHQ3ZON0lMdGthUlNUWnBUSzR4?= =?utf-8?B?Yk9JMlRza0VHeTBjaDVzWE82U3o3RktLdmpCTDd6S09DYVk2ZkFLZ2NLWGFP?= =?utf-8?B?TEpHTk1sOU85R0hDMlNFb2hZSGUxV01zMVBBU1loYXhqZld3QU9Ob1RSL3A1?= =?utf-8?B?S0R0OHpIVUtXVVkwVjlKek8yT3NML3J2UmNHTFZMbzdQVzZ0ZDd3L2QwR01L?= =?utf-8?B?R0VtSFYwZWdieHlmN1RMV3BqQml4cFdBb1gzZDVMam16OEJPR2FjTmFQcm9Z?= =?utf-8?B?Z3NEZW1LOFV1Qmtsd09EaUU4VFJNZlh6MS9GWkJMWlBLMERmK0NuTzQ2RE9y?= =?utf-8?B?R0w5VXlSSERaUTlJMGR5Ri9KK2ZzTTZ5RGs2Mk9TZ3R4Y3ZYUXlpTVFFWjN5?= =?utf-8?B?Y3JDR3ZoaVpTYXBxVlFiaFpvU21WVjFLaGwzbmd2eXppZE5Ja1YrVlpWdm9T?= =?utf-8?B?QlhVLy9MYktmeEZhSHkrYzdZaU5SajA5UTBPTGFueXhmR3B5dVErTTVrSHRn?= =?utf-8?B?enhhamFMRkVhalQ4RFBLTUdYT0Z4QWlzUnh1VWI5ZS9Tbitib29sdEhOUmZF?= =?utf-8?B?cUhGS2V0VjBOZFNITnJVa3ViUyt4VlM4aXQ3dTRrVCtVLzlkT292Wk5lc2JF?= =?utf-8?B?Wm5idXk0R1JpTDk0b0lwTkc4RTg2dkdXblhCMVduNEFzSVpOaUN1QXRmeUpO?= =?utf-8?B?OE81a0Z3RCtRcWpMUzNjSHdwV0hxYWlPaDdGTy9hSU1ER0F3MFNqbVNWL013?= =?utf-8?B?V1NmNFlUMzRwVENoYUtlV0pkYzhYR1JudlA2aFVFY1FtSDJWOGxNWkV4RERj?= =?utf-8?B?RVROYXd2dnAyRUg1Ym44WUcvbElYdW5NbEpvdzFBZDdoUGpUbnVrZGRGWlRw?= =?utf-8?B?VkQ0MVZDVHNsVjVNQW0zdnd3SWhEaFMrUjJ2c1g2eVF2cVZvOUh2TW96S21l?= =?utf-8?B?WWtqRm9XdWEzdVZueTNpQXI4b2RINzl2ZWNncWlqMkd6QnQ4MkEyeURUc1hw?= =?utf-8?B?N3hYTW1QL2labHpUdU9IK3hCWnVZMk1USGhpMHNNN0puNDF0bnhpc2wzTWlv?= =?utf-8?B?SjlyTys5ZE5xZldWZmdSUUhHc0xxamxnalpKV0RIbXNFK1BnRVdWcmUzWHph?= =?utf-8?B?TllRSkJSVE83RlkycDArSm43dVZrMmtoTVZ0QjFwUjIzZitUV3lyUjJLTXBY?= =?utf-8?B?VUR6c1lTSE93OHJmNTl4RHBKN2NOVW80YWlpdkdCdWc2dkdMU0d2V2lKWXZu?= =?utf-8?B?UzJJQ3ZzNk9MWVIwSEl3MC93eStuTjU1Ullib1ZiOFRZdVlIVllpVEJKYUFP?= =?utf-8?B?ZEVVM1dWaWw5dUE1VkRaTW9QdktadU9hR0UrK0JXbW1XYUtFOW5Xa0JpeUVY?= =?utf-8?B?dG1CTVlJMU1sM0dMb0ZML3VvVGtQeitsQjZCa3R6NTZOb1A4aExoWVdHbmZ6?= =?utf-8?B?cVB2OXphTk5SM2RFejNrNm8wYVZBRCsrMUZNVC83elFiKzhxMnVxTjNIR1VI?= =?utf-8?B?bDE2d2lOWWdZNks4b3hDZjg1VVVyUE5KR0x6NUFoMENGeEJqWjBBRllaTi9K?= =?utf-8?B?bEV0WXRYQkczaXkzRzg4TWdoblloZzVDaFRVZ3pOenk4VUlsbTN2akdDRWN1?= =?utf-8?B?UTRmYnFBR3RVYXFsUndCckpUVFV3OEdxL1ZUSlZFS1RycG1CNk5BRVJPYjg4?= =?utf-8?B?c1RPT21NV0pLb0I0ZWxTYVhlWlZmcFpjVU93eVpGcExMUnN0Umxidi8yUFI1?= =?utf-8?B?QmY1eUdQUEZTMkRYV0NjTU9xSzN4ejh1UURhVEVRWFFTYlhkTGltUis2L0sx?= =?utf-8?B?QXpMVGdFWjk0dFg1WnplQVJ1a0FvdjcvZURianE0RTB3NVpKSUxGM0VJdnZP?= =?utf-8?B?NTAzY094TUcvMnBNTEJPS2ZHU200Y1RRbWNiQWE3VThWQjBBT3hNSC8vU25q?= =?utf-8?B?dXYwVHArakNZNGhpdU43UnJ6cWRRcWlBSVF0T3FsUU9NWnBMR0RrTUg2dlNs?= =?utf-8?B?Nnp5U080WHptWnphdHhpOFFNZkxmM0V3MWF2aXRUK2hPUGUwcUI1NzVDTkpZ?= =?utf-8?B?ajRScEJsbmc2SFJTdGY3dDYrYWh2NHFjV2ZXTXgyVGJvZnZFTU82amlPMmlG?= =?utf-8?B?ZjhrbkIxRitpNk84OStYTkEyK0cxVFFIS0xRbGRiZ2J3ZzR1bEdBWklydVFZ?= =?utf-8?B?MEZCZ0VSZUt3aTBmN3FzZWorTlp1TWpZRk5vUGprWEd0SktLQnFYZmJnV2dV?= =?utf-8?B?Y1BXMkt3bzV6YXlJdWt5dVVLUkZzanc2M1REZE4vZEVtWGljZmRPN20yWStz?= =?utf-8?B?aWZna1NZbWszUlhGSzYyS1Y5cVh5R29XOTBBVTZERlZza3dpL0p0SGk1bnN5?= =?utf-8?Q?i+MpjvTN97kbRVJc=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae9a07fe-9f77-4e36-02b7-08dedc029d99 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 08:34:52.6279 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UqPD/6zZoN6pudDUKUyRFSsRe2m4dbyZKSASX5NVIOKAJriAVLTgZ1PdrkOg3GfN2pgenMGhVc0+btlqTkakRSzUtp6EPsZHI0HKokQmduw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB5558 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::5; envelope-from=bin.meng@processmission.com; helo=TYPPR03CU001.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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 @processmission.com) X-ZM-MESSAGEID: 1783413327966158500 The m25p80 model uses s->needed_bytes to track how many bytes a controller must send after an opcode before the flash model can enter the data phase. For address-bearing commands this includes the address bytes. For fast-read commands it also includes the dummy phase. The tricky part is that flash datasheets describe the dummy phase in clock cycles, while the QEMU SSI interface advances the flash model one transferred byte at a time. The dummy clock count therefore has to be converted to the number of SSI bytes that the controller will actually emit. Some controllers have drivers that push these dummy bytes into a FIFO. Other controllers are programmed with a dummy-cycle count and generate the clocks themselves. The flash model still has to use the same byte count that a FIFO-style controller or the Linux spi-mem layer would use, otherwise the model waits too long and drops the first data bytes. Let's fix the inconsistency from the flash side first. We start from an easy one, the Winbond flashes. Per the Windbond W25Q256JV datasheet [1] instruction set table (chapter 8.1.2, 8.1.3, 8.1.4, 8.1.5), fix the wrong number of dummy bytes needed for fast read commands. [1] https://www.winbond.com/resource-files/w25q256jv%20spi%20revb%200920201= 6.pdf Fixes: fe8477052831 ("m25p80: Fix QIOR/DIOR handling for Winbond") Fixes: 3830c7a460b8 ("m25p80: Fix WINBOND fast read command handling") Fixes: cf6f1efe0b57 ("m25p80: Fast read commands family changes") Signed-off-by: Bin Meng Tested-by: C=C3=A9dric Le Goater --- Changes in v2: - correct the typo in the commit message: instrunction =3D> instruction hw/block/m25p80.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index 4a4cda6602..59ecb32c0a 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -1004,7 +1004,7 @@ static void decode_fast_read_cmd(Flash *s) s->needed_bytes +=3D 1; break; case MAN_WINBOND: - s->needed_bytes +=3D 8; + s->needed_bytes +=3D 1; break; case MAN_NUMONYX: s->needed_bytes +=3D numonyx_extract_cfg_num_dummies(s); @@ -1099,7 +1099,7 @@ static void decode_qio_read_cmd(Flash *s) switch (get_man(s)) { case MAN_WINBOND: s->needed_bytes +=3D WINBOND_CONTINUOUS_READ_MODE_CMD_LEN; - s->needed_bytes +=3D 4; + s->needed_bytes +=3D 2; break; case MAN_SPANSION: s->needed_bytes +=3D SPANSION_CONTINUOUS_READ_MODE_CMD_LEN; --=20 2.53.0 From nobody Sun Jul 26 10:59:42 2026 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=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1783413390; cv=pass; d=zohomail.com; s=zohoarc; b=GgAMat1sAZdOBajA2RDm9iY14fE331LIvJKF2YMoYriHUhQtD9sknFS+5loLzWnkIjXKYoj8frTsX9DMHAMK+wEYzR6TrUx8e3I7LyqQMiK+vpVNYkjt7Y644FhNZPEA6CCl+tCKh0Js+0NW6LXT9CFqbcxBW/+BWzPwUJ57FUg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783413390; 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=O4eZn2AaIpxQq8kwBCIXVYHlvb88gmPhGradzR16Ehs=; b=IvhTHO36M08DB6FmWAPyyWfaLZNFJKBWvoaD3whkHXWRyxI8VimaxGz+rqR7u+b8Oe8bFl8olgyptQd+Y7+H7cumAtAPhkk+mpgTS0EL19hBhNBmZ/56jwxS7BKDcegP8CBERZKHqQvxPaOWsDQ0s5VnUsC7szC38bSvbUqf0Gc= 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=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783413390332921.8496840132358; Tue, 7 Jul 2026 01:36:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh1Gn-0003jG-Gs; Tue, 07 Jul 2026 04:35:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wh1Gl-0003iJ-UI; Tue, 07 Jul 2026 04:35:07 -0400 Received: from mail-japaneastazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c405::5] helo=TYPPR03CU001.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 1wh1Gj-0007zQ-VQ; Tue, 07 Jul 2026 04:35:07 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB5558.apcprd02.prod.outlook.com (2603:1096:101:53::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.11; Tue, 7 Jul 2026 08:34:54 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0181.012; Tue, 7 Jul 2026 08:34:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EfwXRZVvt+2qjGVAuUR1udgMiPD9+RQOqrsoEwVk6q+jFWCRh7wg1FlUfuHpik3Mnh/XjnL7ZRUjsy039BQpToPhaQ74xVtG69iZn+P5fEevqSWsv/G+PAErXuxwX3c6srylvT4SkTAtj8XKGeVuOgJWUumH+1jQlVGYdwLGswfFbzsrmPN7I77OIL5k1SGONGQCBep62pHmbfMrLh7xcTJZHzreBAS1KRpj6CP1XFRrL1nVS/B5Sm4a7sTFiX9L3N9K37EgvDs9MKWSJ2swpZq01kQm60JH0QuJJO39o7ebeB7rJipEo/owNZWBR+z6qP7kH0dmCxKa8+WGExLEBg== 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=O4eZn2AaIpxQq8kwBCIXVYHlvb88gmPhGradzR16Ehs=; b=eiE61Pl2ppjJWEzPY2/YdsHWAb5S0fCrMzKsPHVHdEFihCwafBL3GqJJWYqeoLse6ZIwcqQ2d/YaMH8IVF7AbS5osl40wbotcCgPS3BX1o9iZuFyWuB/7ZCOlxTPjJqn+pO6ZGbGiwi6Uw045Vc8KV7n0tez+t8LcOo+1p2kK1HoUohnV1bK5VaJXZz7YY9OOTG4QkBub51smUvyo1Lx3MDnu1+VuIfBp8r4HXhRSODT57k8l4dI3Nulyz3r9nitL1NQVmA21uHGVoM/hl7rVM4a8x2q5dh8CvExOUpQMGxLX7L/yZHlosHzde1VHeIkMU9YxI51Zc9/44dKsW9puA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O4eZn2AaIpxQq8kwBCIXVYHlvb88gmPhGradzR16Ehs=; b=ufOSvYr09JMYjVfLVYkTO1l0oHnkZKKF5alBTgFsrTq2E0fiIGG1EVteL24PPyvBqZumPQYnbhJfPiEziEii07v1O1gLOglD6dUgylmt4jFmf4fwo3LlSc96JAYQAe1tZaKz5yd9C6BQJu0vDJnqWEdKziXIM4c+RiHay33Kkb/GEuS9he7F+P/b50qAvz9uJR2sWOsV+gi5WYn28oo1I0YtBY+VsCFozoSKnqFigy4VGCqvfATchyVICEqqYnGUCxTHMxwv+LzM9J/NWyOe6WuAltyt/KqjrOub42B6Im7IReE2YbWLpSOkEvI/P+vmCkCqcYgvq8yDD//BKPZXSw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Alistair Francis , Hanna Reitz , Kevin Wolf , qemu-block@nongnu.org Subject: [PATCH v2 02/10] hw/block: m25p80: Fix dummy byte handling for Numonyx/Micron flash Date: Tue, 7 Jul 2026 16:34:21 +0800 Message-ID: <20260707083431.219671-3-bin.meng@processmission.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707083431.219671-1-bin.meng@processmission.com> References: <20260707083431.219671-1-bin.meng@processmission.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0106.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c4::6) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB5558:EE_ X-MS-Office365-Filtering-Correlation-Id: 53b20c46-4b6f-490e-5f63-08dedc029ee9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|366016|376014|1800799024|23010399003|3023799007|56012099006|22082099003|18002099003|6133799003; X-Microsoft-Antispam-Message-Info: 0vAYMn9joxBboRAZc6ivJmlUPVHJ62bCvhqcWn7SMc7dY15j3myBo6B88rESvF68Uvzs285jub5iYTFdpMs6AZKkJU1gjqVrqY64Fr0Kyc1Fpli00V61nppk2RtmuWlFxXmZmQcLw4JJl2+lSUZzTlKL5Wjo7b3I+e9N7VrU1sk42GKNnllysU1Ghlp1Y903oOqQrO22yFXkF3ke1okpox/YDtunPhoXLz6CFDKxmxQt9sDBjQWt8UCKy2y5xBDcP4zgzWW1EV6Sq1RY6Y4FhaoYCu4YWJToLC/2JxX7Qaf/KzbkGCuHzCJFIByif3I8vXSyGcr9BSuLUEHN/ApiNdv+q0fFRTNJGGpXshTxRSkMjojhZ2kSGxz8ytzo/hbpAYWQAzWAbr7XE8+z86EW5u36HOaAp8DWr7Y1POFQosdazH5XT3UN8PnTMAAxo2ZqDMETRbxAFL5puWvhJAbGcEHBOCAXzATKUFBQgwjv05uqsyRDL0Dc4wv3b8kAnGTKXACYmE0uIj/y7FyXvjj04wZyy7to2fn0yYNjNwxcu6sl+UQKg6aODHgWWO7t7T+aVvAuZhdhZEiIMovz9TjFjmMUdlpXLatKgTcGl8Zm5w8zR5Djr22+2CMZcEBt9pN5 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(366016)(376014)(1800799024)(23010399003)(3023799007)(56012099006)(22082099003)(18002099003)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dlpnMldlWWtrTUZtS05vUHRSWUZCUnZ6clJYSGhEUU8yRXpuWFhUVk8yZ1hw?= =?utf-8?B?Z0NGRlNGUHBuTXpvTytrQkIzUGRsV0l3dUdQbGNZVzBIU0JhaGVxZjF3bWVT?= =?utf-8?B?UEh2MFl2NGgwTzhHV2xhN0t3bVRPUXBiWnZjdW1YVFlnTUN0NjROKzBtM0F5?= =?utf-8?B?S1JYMS9zVW1RQXNQZFFYVFBGdHM5WXZaRDY2Qmt5Z1Yxbi9WWTZnV0JzM1Ez?= =?utf-8?B?RzNKM1lvcmt4ZE15T0twT3Y5aTVMTFpCQ3RsODFvSk1JdllEYm9lWXN5bkFV?= =?utf-8?B?dWllUXRUMkdqSkpHL0VDQzhEQ1F6RUo5bCtpREJSMThTOGlXbHVQY093dXpS?= =?utf-8?B?TDEvaEswa2ZWcklPbkduRDFodXZtWE0xdjNvV1MyVG5PNHpBYXlKMUxEU0tn?= =?utf-8?B?UnZyMjF2aWVNWm4xaHBpQytMcEx4YWlDcytiR1lIOTEzVnRIcGVHMDcrSHpF?= =?utf-8?B?TjFtelVkY3Y5U2luSllGQjhFNVE4SUNQcFV6OEVNMnF0dEx0UFNVZXZDUkVM?= =?utf-8?B?cDlBTGd0anVvOW5WcFErZHViaURyS2hKdG9wMFp5anZ6cDJwZWt1Rm1JSFV6?= =?utf-8?B?YjhuV2EycE5NeDZxaDRGeEE2c0lrWExuUURubFo3dEZmTnRkUEwxcFZFSVRo?= =?utf-8?B?dVhkS2NoMHVQaXgzZHl6NmlnaFJ1WHJiTWRGNHFmdEQwcVpKcmZXbktNRHAy?= =?utf-8?B?dXpLWXN5TWNTckdOOUE0ZTB1aEtZUjFkVTE0WW11eWY2TDNHOHFjZkFFZlND?= =?utf-8?B?NHRMSVljTjVKNHZ3NFA3VENlcjRTWWxCalh4ZkdiOExaVnlPNlR4MTdrRW5W?= =?utf-8?B?ekhFSzNrd3Z0ZnFPSjRxbkczQmhPOEZVY2Fsck1vZXJza0hFc3Z1WEhxODBa?= =?utf-8?B?RVRxOWxFMkVBZjFoeWVBMmhGdzdRQnA5OW1temRCVE8zVmpKaTJJaEl3Z2l1?= =?utf-8?B?OEpYYnNzVi9GdmMxL3pQV0k0aWQvdFMvS1lNV1lGbDdjQjNRaXduTHh6a0FN?= =?utf-8?B?Q0FEYnhla1lWT3FtMlBmVUxUOGRqNmdjZEZra1FneHNVRDZJbnh6Q2xZOURp?= =?utf-8?B?QU9QbkZCV1prWm1INXFTVENEZjRGUXNwN0RQMk5nV0RpWTMvVWhhTEVPUFRG?= =?utf-8?B?V0R0cnYxd01CTGxaZDhVaDZIbmNQMkQrNzlPRTBQWHZHVGp1WHYvQ2c0bFdD?= =?utf-8?B?cmg4ODRRS0JCNHM2elVieEF0WENjNTRQK09GY0pJdEdFNElWVHhORGlHVStP?= =?utf-8?B?cXFJWHZNVDlTalB1NFhLWG9hTE1ER0p0VlNpVlBSaHNyZGFuWWZQTm9hclA0?= =?utf-8?B?MmNoejllem5DWjVNMmFpenBianhRMVMwVFhDVHQ1Z0ZTMDdwaVN4RlR4Zkpw?= =?utf-8?B?eXFWT0dlcEJxbEE3OGhRc1RSa0xkM1hUK1h4YXRiTjA3YnRhZ01pbDJpbW8w?= =?utf-8?B?TjZteG1TMk5RSTRjOEhSRHNoTHVZL1l1SVUxQ3hWN0g4a1lubTNXeUpXSzVn?= =?utf-8?B?cHZzSk0xbllDdVhpbmVseVF0aDBQS093MWNzTWdHblZERGRjTXMwZWZwZTNC?= =?utf-8?B?QlpuZ1d1SnQ3UWUvRzR4eXdmQlgybCtQOHJPYlU0QVVYSUd1bXQ2eGFKSHBa?= =?utf-8?B?L3NwRExwQlE4ZVJLS3B4b0pneldmRHdZSnBPN1Z5T1FEdDVrYTIrMnRaMEJK?= =?utf-8?B?Z21BclVCMlhCeVdoTDVSVnZhTTRucUZPOU1wR3dtem5tdjhQekdHY2VOUDdz?= =?utf-8?B?c29ubERUTjJCS2I0NkFPSS9KVE94Vi9JNS85bWJ3aFlFUnY1cDl3THU0TitL?= =?utf-8?B?TUVWVVlxdEpSNmE5N29MaEJhaDYwa1luajB3Um51SG1haFdXWkxyQitLcDhs?= =?utf-8?B?aDBHN1BKM3QvUW1Va1FCQzMzMkJTWkFpeTh5M015dXBXVWQxUFh5dkpmWHRq?= =?utf-8?B?RnZNc09aaHFJMkdYNGNGclpjK05QcHNzMTB3bGs2SVVSanBESDk2NEpFMk04?= =?utf-8?B?aFQyOGRoMlhuc3lXckVwN1pBRE44TWhWbFJLK3VjeEs3aHBSUGU5QkZJQ2Zp?= =?utf-8?B?a3RjVXBEalVMeUtxMW5RUUhUNGk5UjNHMDk5STlxa01pcXdsTkNsVUZyYVR3?= =?utf-8?B?OHlyYldTYXh4TGxIeURRZCt1d3RIczNOelg5cWdRT3Z0ZHpwdDY5aThDM2FY?= =?utf-8?B?S25nV1RyK2YrYS9lb0pYM0U3WnZLclVSald0OUU3YkFvaDY0dkdCNCttM2pK?= =?utf-8?B?UklQRitySG4rV2VjL0ViMytHWXZmeTJXZlVXQ1JDRTE5ckVHeUVZOTZ0OW5J?= =?utf-8?B?UjNwbHJkNmtMalQxWnBvZ3dFY3ZadFhtSmtDWDVmS1Nqc1hiTmNKNVlWTHBI?= =?utf-8?Q?0awD3Sqv6vMxPKss=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 53b20c46-4b6f-490e-5f63-08dedc029ee9 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 08:34:54.8108 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9BQ3U8xa8LJ3Al2pvcU23/c9jYYdEuNTPLSLgK9mE8UFJhSEC/aF9uhad72vObdmaBTqhCIuJ4utpEgjJQ/Vv8F+SfgNMeF11yTYmhs6lCs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB5558 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::5; envelope-from=bin.meng@processmission.com; helo=TYPPR03CU001.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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 @processmission.com) X-ZM-MESSAGEID: 1783413392198158500 Numonyx/Micron flashes [1] do not use one fixed dummy-phase width for all fast-read commands. The volatile configuration register stores a number of dummy clock cycles, and QEMU must convert that value to the number of SSI bytes consumed by the flash model. Keep the existing default: 10 dummy clocks in Quad I/O mode and 8 dummy clocks otherwise. In Quad I/O and Dual I/O protocol modes, all command phases are transferred on 4 or 2 lines, so the dummy clock count still needs to be scaled by that bus width. Standard SPI, also called extended SPI in the Micron datasheet, is more subtle. Quad Output Fast Read (6Bh) and Dual Output Fast Read (3Bh) keep the opcode and address phases on DQ0; their dummy phase is just a clock gap before data is returned on four or two output lines. Do not scale the dummy count for those output-only commands. Only Quad I/O Fast Read (EBh) and Dual I/O Fast Read (BBh) transfer the address and dummy phases on the 4-bit or 2-bit bus, so keep scaling those commands. [1] https://docs.rs-online.com/cad7/0900766b8121bd3c.pdf Fixes: 23af26856606 ("hw/block/m25p80: Fix Numonyx fast read dummy cycle co= unt") Signed-off-by: Bin Meng Tested-by: C=C3=A9dric Le Goater --- Changes in v2: - change numonyx_extract_cfg_num_dummies() to numonyx_extract_cfg_dummy_byt= es() to avoid confusion - use assert() when the dummy bit count is not byte-aligned hw/block/m25p80.c | 55 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index 59ecb32c0a..83d1ce1f95 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -971,28 +971,57 @@ static uint8_t numonyx_mode(Flash *s) } } =20 -static uint8_t numonyx_extract_cfg_num_dummies(Flash *s) +static uint8_t numonyx_extract_cfg_dummy_bytes(Flash *s) { - uint8_t num_dummies; + uint8_t dummy_bits; uint8_t mode; - assert(get_man(s) =3D=3D MAN_NUMONYX); =20 mode =3D numonyx_mode(s); - num_dummies =3D extract32(s->volatile_cfg, 4, 4); + dummy_bits =3D extract32(s->volatile_cfg, 4, 4); =20 - if (num_dummies =3D=3D 0x0 || num_dummies =3D=3D 0xf) { + /* + * The default nubmer of dummy cycles is only related to the SPI + * protocol mode. For QSPI it is 10, otherwise it is 8. + */ + if (dummy_bits =3D=3D 0x0 || dummy_bits =3D=3D 0xf) { + dummy_bits =3D (mode =3D=3D MODE_QIO) ? 10 : 8; + } + + /* + * Convert the number of dummy cycles to bytes. + * + * In the Dual I/O and Quad I/O protocols, all command phases use 2 or= 4 + * lines. In standard/extended SPI mode the phase width depends on the + * command sequence: output-only fast reads keep the dummy clocks on t= he + * single address line, while input/output fast reads use the same 2-l= ine + * or 4-line phase as the address. + */ + + if (mode =3D=3D MODE_QIO) { + dummy_bits *=3D 4; + } else if (mode =3D=3D MODE_DIO) { + dummy_bits *=3D 2; + } else { switch (s->cmd_in_progress) { case QIOR: case QIOR4: - num_dummies =3D 10; + dummy_bits *=3D 4; break; - default: - num_dummies =3D (mode =3D=3D MODE_QIO) ? 10 : 8; + case DIOR: + case DIOR4: + dummy_bits *=3D 2; break; - } + } } =20 - return num_dummies; + /* + * Assert that the dummy bit count is byte-aligned + * as SSI core can only consume whole dummy bytes. + */ + assert(dummy_bits % 8 =3D=3D 0); + + /* return the number of dummy bytes */ + return dummy_bits / 8; } =20 static void decode_fast_read_cmd(Flash *s) @@ -1007,7 +1036,7 @@ static void decode_fast_read_cmd(Flash *s) s->needed_bytes +=3D 1; break; case MAN_NUMONYX: - s->needed_bytes +=3D numonyx_extract_cfg_num_dummies(s); + s->needed_bytes +=3D numonyx_extract_cfg_dummy_bytes(s); break; case MAN_MACRONIX: if (extract32(s->volatile_cfg, 6, 2) =3D=3D 1) { @@ -1059,7 +1088,7 @@ static void decode_dio_read_cmd(Flash *s) ); break; case MAN_NUMONYX: - s->needed_bytes +=3D numonyx_extract_cfg_num_dummies(s); + s->needed_bytes +=3D numonyx_extract_cfg_dummy_bytes(s); break; case MAN_MACRONIX: switch (extract32(s->volatile_cfg, 6, 2)) { @@ -1109,7 +1138,7 @@ static void decode_qio_read_cmd(Flash *s) ); break; case MAN_NUMONYX: - s->needed_bytes +=3D numonyx_extract_cfg_num_dummies(s); + s->needed_bytes +=3D numonyx_extract_cfg_dummy_bytes(s); break; case MAN_MACRONIX: switch (extract32(s->volatile_cfg, 6, 2)) { --=20 2.53.0 From nobody Sun Jul 26 10:59:42 2026 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=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1783413416; cv=pass; d=zohomail.com; s=zohoarc; b=TBqO3Yum6wi4yuer48lF5Dt2V/BoesZVq7UcFiEUU/vfQlBpiQGA6kb8/yOUhs29sfGDaHntbG3JezS/Yk+uFlpmDjFLOwS8fDrhIqvFhNfOoN/Hjr5PXt8FFOvGaCErHSKV2mTmtXUFDAM5bupDNxOtQEn00Q9nYHjOmk5cMgo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783413416; 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=p+PPjBcM/H6xlGkv+OMSHy3d9dSjMkgQXkh5ADALi/w=; b=NCMEIVfFUbjqXZySHGGBId+n9QmcId2wubneFPS7rQgxVfT2Xf9ZNymIRwdH8wgFySo2N27BITZoqESnZP2VkwiAMPzCjaUolrLY0ct17dMc5SJKXtLlmMfHyyouEqlyOnRdyOjddl+sSlDPQAZu3JSG+dFhfUC+PYBNl9FbHnE= 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=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783413416583223.14377409031442; Tue, 7 Jul 2026 01:36:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh1Gq-0003kx-9J; Tue, 07 Jul 2026 04:35:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wh1Go-0003kL-QM; Tue, 07 Jul 2026 04:35:10 -0400 Received: from mail-japaneastazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c405::5] helo=TYPPR03CU001.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 1wh1Gn-0007zQ-0k; Tue, 07 Jul 2026 04:35:10 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by SEYPR02MB5558.apcprd02.prod.outlook.com (2603:1096:101:53::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.11; Tue, 7 Jul 2026 08:34:57 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0181.012; Tue, 7 Jul 2026 08:34:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JM/3mNihpfBiYZWdvi6yNiIVOX/Zem8b3bTpJpdfR3boZsmKegLj7kvQemQB8jirLbtWbSXBoz1k66FlHlFuKOT40Zytq3SMC/3KvgH3BB7F4scFOyU1iT/bfEVz7NbC+3UHEVQA42hDHY+bPYa/VeDAZ2z2hUfjc64FmkJsRVwohQ+KhHtKoVlCUN9cAshrYSJXFxrS1K/6Qe/TrKRlEWXIRjUpzqA3Ypshqnp6Qlx+89o8ST3plcCodRxcBWI8q72prFe1Q90jC00KAuW/QmozVeizXQK57FcopXobqhdRRgjGVgMFoq6kUgbFMpUNDKt22pX/5NXAtrDupaUGZw== 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=p+PPjBcM/H6xlGkv+OMSHy3d9dSjMkgQXkh5ADALi/w=; b=jHMn4h1po9tws35BpsQhf/t9JHQOeEWtCyMvt1YclIytqz7O2ivTFo6lQoutrPhCFRm1sHb1A6koXM9nHJw7OftzEnkLz3fkY+2WzQBK/rPWl2VCnyTmY0najhg2g6qAQfDvKYVsnNHS2Ij0NiPptbMHa4BnG97fgYfE2tSnKbpD/ZmTWAEPAi6DAMbp4kVvEd2js47HsEffthp1h29aj3J/NX3tKeJJeULuIeVfAxN300S2hXU2Qg3W0g5ipa5HZcfZauuOZsCRgneQxGI5F/Plwse4UySgXjx63gptS9NcBVsxCu9eNjEtaesmGXu04kimNYuRx8/bqgl14BMQvg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p+PPjBcM/H6xlGkv+OMSHy3d9dSjMkgQXkh5ADALi/w=; b=XKdDeMHcasBVkVAsObKyS+AbqMx/M8hH5iOPH+8LiVWxHTx2bDnfYK0km000JrjY/mXljoZMXrVLS2fuStoFxOm2Kd7Q/9XTCsDekwNU6xur5mwgM6ovbrVR3dMxS5vWsHlFp0NOaGrr3lmdDxTKLDSlIIp1Sxv31w/cD5vXVfrVuKAomTs5xoytpdezRsXUUvCQ1jbAMkBhctbXwUKybZQFbPWOSqhnWzi/1GbufXBCo7PRk750orBrZGv9uV8sfKCLqQ4ekHlZmWU8C+gQWyp09SYO9xyrCQfW7c4HPs9nirWbyl+um90oTabCyRztuKKlmX0jt2x7XEHczsrbtg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Alistair Francis , Hanna Reitz , Kevin Wolf , qemu-block@nongnu.org Subject: [PATCH v2 03/10] hw/block: m25p80: Fix dummy byte handling for Macronix flash Date: Tue, 7 Jul 2026 16:34:22 +0800 Message-ID: <20260707083431.219671-4-bin.meng@processmission.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707083431.219671-1-bin.meng@processmission.com> References: <20260707083431.219671-1-bin.meng@processmission.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0106.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c4::6) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|SEYPR02MB5558:EE_ X-MS-Office365-Filtering-Correlation-Id: f45ac138-c984-49c8-30e5-08dedc02a044 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|34096008|366016|376014|1800799024|23010399003|3023799007|56012099006|22082099003|18002099003|6133799003; X-Microsoft-Antispam-Message-Info: LcFQZlJ9H42RYIT0xOEp3drxDuvR4VmJCaU9S7FbX3QCz/LzB5CRO3M946MTHc1o7H/w5WvwUJHfD2kPhNGuLQBFSa6ffMuIfTKpvEup6R+t8FAXmad9RoSiof0OsKoF0iLsZvGxToUV/EogDPvVe0DoWmvIlnEmErxxrHbAtEAM0rkJnZfgDoDb4gkJPsWr2T1ZBkiSjodR0crMGA11Lp/3GKTdtf1kXStcfegIUesm3EEF+UznXFHtYJB01o4mPsw84szMnpruTagkmkQFXpEKMqdF1MQwmyFRqHzoR8RDT1sjNmgomYMr8VSzRC9G2+iE0pjI7DYBCjS7KQa6pVoHqUcY9q0S9npoJmuavGtm4WQhtadgvdjv3j5mnqm05J8Yn0ThqRqcDMljswO1gjO5YSw+L42l6J2M0/uwtT7plhY1UQwOymy8m1hTSRc3mZoP39ymMOBbqfEMyokm3d1oiL4OWDRvHQ97KON9UXoo4qfwbAooNQeaXqIZYIZOlKD1SgIkTQVl6LYbDNerYNXEt4WkUzd0kngeAxlbVWvW9jiJonoIvyX0qn4dgG9ZCVd3/fgNcy8t2glKx6MbloC73Y8scVi0HUDVwgtOqkzhV/ObhqGdHj3LAfAyzoAJFcnQ2cqp9sYPhye+08gv9kNbC6jUC8E/Ut/jRwNXz7s= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(34096008)(366016)(376014)(1800799024)(23010399003)(3023799007)(56012099006)(22082099003)(18002099003)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RDJObVJUdU9XYmJrN2VYK1VyL0pPNXVpQnFQVTRWUSsxRkRIWnNFbU5uYUNt?= =?utf-8?B?MmIyTnppZEV4d2xBbk0yZVA5aXVpcC9pdFRLOERyYjZtUVUxTU0vazZBclRR?= =?utf-8?B?eUdxYm0rNWRqUTVXQzJaUU9VVkZlMmEzd01KdGY2cDRqek9ReWpraThQbDNz?= =?utf-8?B?QTBGa2VrZjAzaWMyUGNMNWlJcjNvQ0swK0drQjFSdi83L0piWWpYbWNpWGZh?= =?utf-8?B?QTM5T3g1cThzUjU1SHFVRVF2RmdUYk91OS9TMlNyNE53QUQ1ZWtpNElZdVRN?= =?utf-8?B?dFBxVnRiRGczQkpHclI1ckJxaVVld0paZkozdXdVUEdiZUJJb0FSZXQ0UHVC?= =?utf-8?B?NkhRRUw3cWtXSDI0dE9mZXl1dnF0cE1LUGRyZGZXWWU0N0gyUDRGcFgzdlhl?= =?utf-8?B?enhUa0ZQUWFjc3FybmkybWJ1MEg4VjhqVk5tNXplS1Avdkh6clE1YVpxSHFB?= =?utf-8?B?eXYvQS9FUHhJY1RKbjB0WitXVHZaTHlOM1dDTzNsblJmcVRzZ0kySlVxWWtZ?= =?utf-8?B?RTVQd2xBKzNodUVVNmQxSEZCdzFxdk9BNWRCZ21ocndtQ2NwcTRsQWhOeXQw?= =?utf-8?B?YzFsQ0FpenE4UDlGdkNiOGxDZGJCWFFUcmJ6K0hFQWo3UXNRTUJoWmRlMWhj?= =?utf-8?B?Q2d6MXBNQmtjYlJ5OHdIQlhYdWNkT080WElRWVFuSHVnSkNRMGdXREZCam1B?= =?utf-8?B?YUg2M1dVUnpUY082RTVLUlhWUVF4Tk5SM0MyYThkZk43TkxUZU40NWFzYkN2?= =?utf-8?B?bllBTkRZTW56VUh3NHU5ek5JdjM1aW1wNkp4YVNvWnhBY0ZOUG9pQkxuUW56?= =?utf-8?B?cTEvWU1SUkpDUnBHeEtBdGdjQXZUWitPUzRRRk94YjRzRlpVdFFKbUZ2VmFX?= =?utf-8?B?b0dXR3VabHlSS2RvWmJFSUdvMG9OMU9DcGNHbjN2RmErUS9BWjJST3VMU2Vs?= =?utf-8?B?U2k2anlRbWVjcFdub0kyNWVBV2NMT3ZtVDB3R0doWEpmdGF3cENGcmEvKzZ6?= =?utf-8?B?QmJwM1E3TGJsOUt0bVNYdlIrandUcGlha2NFdFA0SzBYTExTUlk5V1NtL0xM?= =?utf-8?B?eFllL2xKUUdzYkRPZG0ySndvSzlqQi9aQXVNMGtxK0h0VDl2RC9vY3Zwd0pa?= =?utf-8?B?Qy93TW9xWmxCUUt5Z1cvS2JJV1I5cm5rejNZall2LzQ5bk1lWjVBSWg0WWpE?= =?utf-8?B?b0tJL1owZ0ZyU3dabkpVUjVCeFFocVMvUlJBaXM3Z0RUaGxCNFVkWHl0TkJ6?= =?utf-8?B?YlRieWxwQW1DakZiQ3BrT0Q0SzE2aHcyZEpNaEE2VEtBSFlyNXgvK1lrZkI5?= =?utf-8?B?QjV2eUFYSXROWXhIUkxYb0Faa1NWdGdPazlUSEY1UWpVVnlHcEUxREwzWXlD?= =?utf-8?B?OWRST3pyekpBR3hyRGkzM0Q4eFZvcDR5cUUreW5DZVdnS083Y3lTN3M2SEpQ?= =?utf-8?B?alhBM1UvcUVGQzFsVExiRkRjdlpVNTdnWXBRRWFRblFtV3liMUlFdzN6TkY5?= =?utf-8?B?Uy9VNjhwYklCdU9jVUV1UUhCRGZ0Z0FJT1BYKzJYaVVyVzV1TEt0dXYzWWZu?= =?utf-8?B?amdSMEczMy9tdzFFSzVoMFBhODNLNUlYV1hjTFFCQmtnUHZHSmVXcTVyQ2ds?= =?utf-8?B?SlVKV1pacmJLTUJrU2F0dSt6M1IvVm5KYUtidFV1eVJvRjl0bkozWE9uN08w?= =?utf-8?B?SkJ6Qkkxd0wwRWw2YUg3c3FCRlhRWWlTTVNPbzIyVVdyYWNJRFk3MEtiaHBr?= =?utf-8?B?YVk0UFVYNnFjeVQrT25ISDFCZlBuRFppMHdtTW1CNFVXZHNUaFUyc0M2Ui90?= =?utf-8?B?aHhpNFhqaGE0TnJZQTdaQXNyejdtUG1HY1FmUDk1Nmk5RFlCSTVhUmN3S2Y0?= =?utf-8?B?dEVUdU9WYmhKMWplem02KzBEd3A2a1RDT2Rzc1FXbGR2MG9ub0ZweldhZkNh?= =?utf-8?B?U0RWWmxCUWpwcTg5VFh4V0RpZ3A1U3UwYXpaTDk4NFJYdjRjOS94TFVaLzJj?= =?utf-8?B?VE5QdlF5allISEx1ZktMR3BlbndyVGtBM05FRjF1OEIyNVhYQWphRHlFMGpV?= =?utf-8?B?ZTlLTGNCbXNJQjRIcDV4Wm1wVlV4QjE1eFczQmthL0dMYUFRSG1UVjdDUVo2?= =?utf-8?B?ZE1lUVZUM0RIWXZpbGl4dTlFRnZuSGZaTGV4T0U0TUhnaWVVR09xVkxIVVFH?= =?utf-8?B?bDF5bmFMYUV1ZWMrakNzd1FMYWRFME5qd3NGSW1wT0N0dVBTNkpqMXlydFlS?= =?utf-8?B?b2dxRUlNSXFhSU1LWTJvckpsUjk3Q3JKaHJRRDMyOGRIdUFBWWVtSTdTT092?= =?utf-8?B?bFRMaTA0eWZMdUQ2a0VGVWlhbUNLY1B1RFFRTG5NZGNlYmlSeFNKcHNGbVJV?= =?utf-8?Q?MG3LjKYtTaWn86uc=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: f45ac138-c984-49c8-30e5-08dedc02a044 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 08:34:57.1238 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jI+J4K1WNxrV0GjGZLpxF0b1qNVuI+NCMBDb7f+7YUojAO4m3YHoSyVPKiCvbjnnNnxGRMKCfEYH/QCSlkeM4xAPqJeUZLtw0wFQSPqJuHI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR02MB5558 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::5; envelope-from=bin.meng@processmission.com; helo=TYPPR03CU001.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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 @processmission.com) X-ZM-MESSAGEID: 1783413418384158500 Macronix flashes expose DC[1:0] bits in the volatile configuration register [1]. These bits select the number of dummy clock cycles used by the fast-read command families. Convert the Macronix dummy-cycle settings through per-command-family tables and round up the non-byte-aligned cases that the byte-oriented SSI model cannot represent exactly. [1] https://www.macronix.com/Lists/Datasheet/Attachments/8657/MX66L51235F,%= 203V,%20512Mb,%20v1.1.pdf Fixes: cf6f1efe0b57 ("m25p80: Fast read commands family changes") Signed-off-by: Bin Meng Tested-by: C=C3=A9dric Le Goater --- Changes in v2: - change macronix_extract_cfg_num_dummies() to macronix_extract_cfg_dummy_b= ytes() to avoid confusion - use assert() when the dummy bit count is not byte-aligned hw/block/m25p80.c | 63 +++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index 83d1ce1f95..d7a9d79373 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -1024,6 +1024,39 @@ static uint8_t numonyx_extract_cfg_dummy_bytes(Flash= *s) return dummy_bits / 8; } =20 +static uint8_t macronix_extract_cfg_dummy_bytes(Flash *s, uint8_t bus_widt= h) +{ + static const uint8_t dummy_cycles_fast[4] =3D { 8, 6, 8, 10 }; + static const uint8_t dummy_cycles_dio[4] =3D { 4, 6, 8, 10 }; + static const uint8_t dummy_cycles_qio[4] =3D { 6, 4, 8, 10 }; + const uint8_t *dummy_cycles =3D dummy_cycles_fast; + uint8_t dummy_bits; + + switch (s->cmd_in_progress) { + case DIOR: + case DIOR4: + dummy_cycles =3D dummy_cycles_dio; + break; + case QIOR: + case QIOR4: + dummy_cycles =3D dummy_cycles_qio; + break; + default: + break; + } + + dummy_bits =3D dummy_cycles[extract32(s->volatile_cfg, 6, 2)]; + dummy_bits *=3D bus_width; + + /* + * Assert that the dummy bit count is byte-aligned + * as SSI core can only consume whole dummy bytes. + */ + assert(dummy_bits % 8 =3D=3D 0); + + return dummy_bits / 8; +} + static void decode_fast_read_cmd(Flash *s) { s->needed_bytes =3D get_addr_length(s); @@ -1039,11 +1072,7 @@ static void decode_fast_read_cmd(Flash *s) s->needed_bytes +=3D numonyx_extract_cfg_dummy_bytes(s); break; case MAN_MACRONIX: - if (extract32(s->volatile_cfg, 6, 2) =3D=3D 1) { - s->needed_bytes +=3D 6; - } else { - s->needed_bytes +=3D 8; - } + s->needed_bytes +=3D macronix_extract_cfg_dummy_bytes(s, 1); break; case MAN_SPANSION: s->needed_bytes +=3D extract32(s->spansion_cr2v, @@ -1091,17 +1120,7 @@ static void decode_dio_read_cmd(Flash *s) s->needed_bytes +=3D numonyx_extract_cfg_dummy_bytes(s); break; case MAN_MACRONIX: - switch (extract32(s->volatile_cfg, 6, 2)) { - case 1: - s->needed_bytes +=3D 6; - break; - case 2: - s->needed_bytes +=3D 8; - break; - default: - s->needed_bytes +=3D 4; - break; - } + s->needed_bytes +=3D macronix_extract_cfg_dummy_bytes(s, 2); break; case MAN_ISSI: /* @@ -1141,17 +1160,7 @@ static void decode_qio_read_cmd(Flash *s) s->needed_bytes +=3D numonyx_extract_cfg_dummy_bytes(s); break; case MAN_MACRONIX: - switch (extract32(s->volatile_cfg, 6, 2)) { - case 1: - s->needed_bytes +=3D 4; - break; - case 2: - s->needed_bytes +=3D 8; - break; - default: - s->needed_bytes +=3D 6; - break; - } + s->needed_bytes +=3D macronix_extract_cfg_dummy_bytes(s, 4); break; case MAN_ISSI: /* --=20 2.53.0 From nobody Sun Jul 26 10:59:42 2026 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=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1783413337; cv=pass; d=zohomail.com; s=zohoarc; b=OLDQ8vtiWyYFTGs+yizKLjyEmuttSVzQWOsGHKGLt0aOOrjDW/4eFyh+UT6ACeQ7yH9k3rECw5fnUHZD66qN5IDIdmcULbHxIDSDYI6s90IvOy9M1VFSutDw5G4m9FUwbBMYNXZDyNOEHr+2iGgXXDLM7PWUoQhH/Y0WDjk4irA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783413337; 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=Uixdf+oQtholaUuBQOUI5+39mHiezmBLYAbPZV2OZgs=; b=h9nhFS+//eGcL2jpEmTihkdFry1c+OeChOSCwBw66PsleN9ilnZxsfuI425IYkqNyPgwILWvzTw/KgHkxVbuP+qcDmMYThsjLI/t86mcrP1K/aD7wuNOrV97DTQrFNv4xkxfz9TU6dCPOmQ1QNDJqbKRmRX9vXkmJ+L6fTKw3Rw= 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=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783413337433278.06189289704184; Tue, 7 Jul 2026 01:35:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh1Go-0003jh-2x; Tue, 07 Jul 2026 04:35:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wh1Gm-0003iv-P0; Tue, 07 Jul 2026 04:35:08 -0400 Received: from mail-japaneastazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c405::7] helo=TYDPR03CU002.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 1wh1Gk-0008Pe-PO; Tue, 07 Jul 2026 04:35:08 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TY1PPF1A8DB1DA4.apcprd02.prod.outlook.com (2603:1096:408::94b) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.13; Tue, 7 Jul 2026 08:35:00 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0181.012; Tue, 7 Jul 2026 08:34:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IAmrkEUsJvSPe22RGtJaxImmyEijxgiG+6Um7FNXyuE3aml3Apksp/m+gwquOKdtSvBEq+Bonv4mehaMW9jZMN9NZwrmDtbRR4MHNCKv/sfg90qUWqCzahSA8QcwmhIAtB0HgLSOYWw9yZrWOoD4R0OucNimC87hC6y2v/NlsNYKQOtXLKk+uBY8vEyB5cnmHIYQJx2FxAXDJhVXG3JwaqMpQD5djsKreEBZccfqFyICy1eT7o8btuhnCZw3DvXASkM1F7B+6oPlZpf/6BkZWGdoi3rbFYHDWKWOWwpQtVZ586WYBuzO316yEKdFZHHG1py1yWlkrkXd0xUnggaSgg== 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=Uixdf+oQtholaUuBQOUI5+39mHiezmBLYAbPZV2OZgs=; b=ffQcSRXgP65doATcKGH720UWgGuvghuIsRPQ3Agq2M3F5qIij7MqtC9PKT8jgIzMoAkX1bknaWamTjVH443Gz8NMYYm4M3zYOom0QP3c2QedHK7lspwiIxkY9iVRQ1WpuVBc1Xinwm7NUd6z0eL5XSDvi+4TTjo6bK5gGRaeIFP3TcywOmehYSnLOU5YcaXD0JpiDW23liJqH9BIhfmEXTRNR3flMOJzogKqX9oyc2Yeb2ICvHVwA2O7Xg/DkclSiX94H7OWaFwDjNaSRZ5aS7pmborU7RW+OBJth2z7H3/UmWXwcunbopDCisWdt/lOA5s0G2Mt5TvVRMurMAw0DA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Uixdf+oQtholaUuBQOUI5+39mHiezmBLYAbPZV2OZgs=; b=n+Q2CPuSd5bLj6/enu5NRD2R3TsE7f/pQbbBnzqsIsTff/Sz5hTR1D43crkfutihYxs4HKMwVLpIh34SdlWObpChd2O6po75Ax5F0nRevcWDdrbG9ld/P9pZZ1CvPH+SS9cIRxagzLXAk8OvODmWZS7J2XQMrMyj1GGcxlcE71eY8ae0wEDB6bNB2IiRc0ivTxJfxSR8f+lzW/a1sXcN7uP3fQJSrnhgsnpBqoGdB9GSXnbGluHWfphfjMlM2g3C9r1jv8WkANKFVnqa+oJs+0gWueciV7Uds5BewvRiDRFmEqmFoJGoUBP8QEOXhO7biUkt92OGkCIi1nheRyLCuA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Alistair Francis , Hanna Reitz , Kevin Wolf , qemu-block@nongnu.org Subject: [PATCH v2 04/10] hw/block: m25p80: Fix dummy byte handling for Spansion flash Date: Tue, 7 Jul 2026 16:34:23 +0800 Message-ID: <20260707083431.219671-5-bin.meng@processmission.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707083431.219671-1-bin.meng@processmission.com> References: <20260707083431.219671-1-bin.meng@processmission.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0106.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c4::6) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TY1PPF1A8DB1DA4:EE_ X-MS-Office365-Filtering-Correlation-Id: 3d70b290-702a-4393-9c8d-08dedc02a1a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|34096008|376014|1800799024|23010399003|6133799003|56012099006|3023799007|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: eDECXDqA8NGC0FQtCDfjx/P2mWL1FWVzFzcT/ChPDfO4pOPeFAre5DpcnG2XOyAyVbwW/3lLMF0rn0KmW4v8mTcNpzVPEzdgegnU+eqKU4LatJC/07ttl00IDagpdHOKXquN2n+gfQkU3pQ66y9rSSLTzGRQqmRT/362OiH6D5lekGfI2/PCDs3SHW1izkKyHlKTVhe+hdxQnT2v/q10Oj4qoHz15PXH+Z03WQjlkgoqwJZsBfQDwzSDDTTHm15v+ID+M3pk+wXyIunbLEn3lW2H3pMWIahJuIoRRSpztcmjjLbDTcZ95PbTwJvCu4HGKSu3taz1YIGB85M5hERCH8BJsC5AGdkJDlBtr+Dj91y/vuUhfZX4+SLrqixmJgIdSUklE4F5A3FcHJDPuf1HYpsQqSo4ON3td4G30lRxjpV0UskhBy+c0g+T1Trp0Uo2URVvkUBh2BXVxMW7OJoxa2wWIvuWqGY2Se7QAvNO2OKvpoI6/1FcA5PElpE6XhIZLxfr9qarpEQ6rarPK/hdW85VSzBpXBf+8ZHR1qOYD9cvXlZ4JSqP4IWg7UZBjrvfZqw6+UVJ9C/cGyh+u09vg4F7ClpTdjlMKD2pGVxhEQQ6pKy+htH8Agd1TT0jZ/OWh7YxN0e+ijC+3354xrswR86ypYhU1oqYDzibqMMX6cw= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(34096008)(376014)(1800799024)(23010399003)(6133799003)(56012099006)(3023799007)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WG90RFFTUmJHQ2tnWlZuOWs0MFNJSnJKQnNBMGJQQnE3am9OdEM3WHhZTDFw?= =?utf-8?B?TzNsUDRQQ0dhUEphSENzWGFTU0dTQVZ4R3hMN2FkdmZMbkdLNW9uakt3UWpE?= =?utf-8?B?RkM5dVVhcWluWmJxR1p0ajRmWUxTa0REcVRTWHY4cEVSKzhYSldKZVFTOGtS?= =?utf-8?B?QW9qVXBxWC92Y1NhaWYvRXl6WmxNSFFJeTBtTW1Md21vaWt1MEhFTTRIeWtl?= =?utf-8?B?VnRTQkRucFNFS0YyUXd5OW4zMFlLV2hIZGczVHRJeFk5TUovaWtyMTYyU2FC?= =?utf-8?B?WjBORVdKUWFlSXlURlY2N0IwVEZxVWxmcENMVzd1dEtTeUxxNjZybEp0N0Fa?= =?utf-8?B?Njh3c2tPWG10Vms2a2xGVmdiYUFrU2ZuN1l4NTRIS3FoVkJ2QndLS3NDUS9h?= =?utf-8?B?SUVmMDdDUCtEM09jTGdnREIrb285MHVYbXptdElOYm40emEvcFN1Z0hPV1M0?= =?utf-8?B?NG1PL01lUnI5elhEU3N2S3F0SUhBaXVKbGFpMG4wU0lGczByNng2RGEvbzY4?= =?utf-8?B?dGhPT1pTTDNzYUdUblpxekg1NWdFRVFSZ2t3NS9vb2J1UFloeHJrVGovYU9U?= =?utf-8?B?T1BEa0d6bmM5ejBvcFNoL0lZeVNiTDZ4bHhqc3I0NHlwaVlMQWxwbmhEQmM4?= =?utf-8?B?T0NBNjVTVklJSXJGdWk3U1pVWkZWaGhkOWdGQzlhdThOaXlqdGN1NXl3eHBU?= =?utf-8?B?WVFWdWsxaGNNMTJDL1VXclUyZUZQZWY4bjVYT1ZzL1FKWWorOFNjL2RiQkpp?= =?utf-8?B?YkJ3Q1M0RTU5Nnl6bWlva2Yzc2xCK25Kc3czUUdLN01TRmtLWWlMdFdPOVFY?= =?utf-8?B?aUZ2UCt6ZVMxNWgvMlpPd3J0MTM2MWRJcmorMEh6U1p1Qmxab3Brbk5aOHVp?= =?utf-8?B?aStTc3IrNXNBMms1NlRlN1cvT1dxSTYvQnF5ajVHZHUyY1paMThFNXAzRmZl?= =?utf-8?B?K1JMWFV5MjVWNWhNQjBNdGl4WGp0YUY5QStqNGJ6enlndmtxSHZic2VRaGlt?= =?utf-8?B?WUtWVG0ycXl5YTUyYmtWSGtnNDdEdTVjQ3hmRzcvbXFaN3d0UnRpTzQrWEZH?= =?utf-8?B?ZERXZDdpem5HczQxZ0FYVFhHSVBYNlByYlJqaTl1dU0yTnJlQk4xUXpNeEpP?= =?utf-8?B?cU13dHVXR2NObHI3dTRYRUYwc2Zpbk40OU5qSHdaTVpYZ2puSWZMOVdxNWNT?= =?utf-8?B?cnExblEvemNrSndPR01Ib1pKdkJiUHVhVWJMblhzbUVkS2tHVys4SzUxLzB3?= =?utf-8?B?Y3FUdnM1UklTeE9RQ2FqSnRIRUF2aGpsMEJEV3V2dVlyMXJubDMzL1lRZk92?= =?utf-8?B?dXI1cGplQ0g2UjcwYWJuRkprVi96bzJBeWpMVkExQkdra3F3TE83UXpYeHIx?= =?utf-8?B?cCtTSFh2cC8wNWFIY2RORnBUeFU5b1MrZXgyc2hNVzlCOGlUZzFudmplTFZ5?= =?utf-8?B?SjdKSkt4azN6aERLL0N1bWhwV0xPZkRKUGhhM3laRERwK2lScW9SY2o3Tk1I?= =?utf-8?B?eVp6RDJZb3hFYVowbm12cmovazZYbCt0Mk1qbk1iWWIybjlxdWtIakJYZDJy?= =?utf-8?B?UDd3c0JGbXBHUEdFQnpHVkZZZEFGTTVZdXo3Qi9TT1NRbE9kMW5EVVN3ZDBR?= =?utf-8?B?cE1qeHhmMHlXMFBTbDJnWmFERENndUk5Sis0SUZKdmhmVC9haFNYTUhGcGhS?= =?utf-8?B?WHZHeHFsM2x3MDhIREZjd1NzdVBiMjA2RmgrNVd4UVRQeVdrOG41VGZjc0to?= =?utf-8?B?UmlCYXJpTkN5WExncDZPclJSRWNHYzZtdTRPblBPV2kxb0tORXN3T1lZSkNt?= =?utf-8?B?Uy9TVGhZMUlLdVlhSFE2b1Jhc0pFcG1xYWhrT0dUcG1RZEhKRUhMU05TcS82?= =?utf-8?B?ckJPVjRUV3o3eTJ5WVFsdG1teE05dlkxT1dGbTAxcnhTSTZDbG0vQkh4MjBI?= =?utf-8?B?R0MxRE50L1ZuZWZLMk1wMW5MYmJTczRIQ0c2eUwwbGNiQ3B6em44VGFkMnU2?= =?utf-8?B?MXVGOUhrVEFXQU9XZlVNMTQ0OVo3ZlNOZEVvaXo2YW52NEM1cEtvUktMOWVn?= =?utf-8?B?OWw0RXRacFZDdm91cll4Zkc2eDNqNFgzSkNmWkdKckV1SHF4c3l6MmVaNjc5?= =?utf-8?B?YzV4eURmOFdrRWJXZXJjTzFGTDJDajZvSVBTQkU2aExFNHN4S0xsTmxvWSti?= =?utf-8?B?ZlBteFJKd3pmSWJ5OGM4aktOeUwzenVKRUZUK245YTFiaVI2cGJxV2I0Vkls?= =?utf-8?B?UzliaHJ0b3hQOGtWcVJNWGp0WjBpTnNBVzQrc3Q2eTY2elZyaGdYN04vakR2?= =?utf-8?B?dEx3TzJWZld3cU90L3lacnV0SW5NT3pEbFdTdTU1amJublhUU2FLdFllVlN0?= =?utf-8?Q?4WP0ucUbfLY5fNug=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3d70b290-702a-4393-9c8d-08dedc02a1a0 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 08:34:59.3725 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Y/vWV3eGvdqAzb7kJpRz95tA0O82h+Oglz418qk1zO865P26vDKHsnEzXyKWX12yFaOwfgeYU2PIp8ZcrT3dUfuZe060ZCw8EgzWHiBFVk8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1PPF1A8DB1DA4 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::7; envelope-from=bin.meng@processmission.com; helo=TYDPR03CU002.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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 @processmission.com) X-ZM-MESSAGEID: 1783413338073158500 Spansion flashes expose the number of dummy clock cycles through CR2V register [1]. The value is a cycle count, not a byte count, so the m25p80 model has to convert it to the number of whole SSI transfer bytes consumed while collecting read command data. Add a helper that multiplies the CR2V dummy cycle count by the phase width and rounds up non-byte-aligned counts, matching the byte-oriented SSI model. The default eight-cycle configuration keeps the same byte counts as before. [1] https://www.infineon.com/assets/row/public/documents/10/49/infineon-s25= fs128s-s25fs256s-1-datasheet-en.pdf Fixes: cf6f1efe0b57 ("m25p80: Fast read commands family changes") Signed-off-by: Bin Meng Tested-by: C=C3=A9dric Le Goater Reviewed-by: Bin Meng Tested-by: Philippe Mathieu-Daud=C3=A9 --- Changes in v2: - change spansion_extract_cfg_num_dummies() to spansion_extract_cfg_dummy_b= ytes() to avoid confusion - use assert() when the dummy bit count is not byte-aligned hw/block/m25p80.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index d7a9d79373..545e0b5728 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -1057,6 +1057,23 @@ static uint8_t macronix_extract_cfg_dummy_bytes(Flas= h *s, uint8_t bus_width) return dummy_bits / 8; } =20 +static uint8_t spansion_extract_cfg_dummy_bytes(Flash *s, uint8_t bus_widt= h) +{ + uint8_t dummy_bits; + + dummy_bits =3D extract32(s->spansion_cr2v, SPANSION_DUMMY_CLK_POS, + SPANSION_DUMMY_CLK_LEN); + dummy_bits *=3D bus_width; + + /* + * Assert that the dummy bit count is byte-aligned + * as SSI core can only consume whole dummy bytes. + */ + assert(dummy_bits % 8 =3D=3D 0); + + return dummy_bits / 8; +} + static void decode_fast_read_cmd(Flash *s) { s->needed_bytes =3D get_addr_length(s); @@ -1075,10 +1092,7 @@ static void decode_fast_read_cmd(Flash *s) s->needed_bytes +=3D macronix_extract_cfg_dummy_bytes(s, 1); break; case MAN_SPANSION: - s->needed_bytes +=3D extract32(s->spansion_cr2v, - SPANSION_DUMMY_CLK_POS, - SPANSION_DUMMY_CLK_LEN - ); + s->needed_bytes +=3D spansion_extract_cfg_dummy_bytes(s, 1); break; case MAN_ISSI: /* @@ -1111,10 +1125,7 @@ static void decode_dio_read_cmd(Flash *s) break; case MAN_SPANSION: s->needed_bytes +=3D SPANSION_CONTINUOUS_READ_MODE_CMD_LEN; - s->needed_bytes +=3D extract32(s->spansion_cr2v, - SPANSION_DUMMY_CLK_POS, - SPANSION_DUMMY_CLK_LEN - ); + s->needed_bytes +=3D spansion_extract_cfg_dummy_bytes(s, 2); break; case MAN_NUMONYX: s->needed_bytes +=3D numonyx_extract_cfg_dummy_bytes(s); @@ -1151,10 +1162,7 @@ static void decode_qio_read_cmd(Flash *s) break; case MAN_SPANSION: s->needed_bytes +=3D SPANSION_CONTINUOUS_READ_MODE_CMD_LEN; - s->needed_bytes +=3D extract32(s->spansion_cr2v, - SPANSION_DUMMY_CLK_POS, - SPANSION_DUMMY_CLK_LEN - ); + s->needed_bytes +=3D spansion_extract_cfg_dummy_bytes(s, 4); break; case MAN_NUMONYX: s->needed_bytes +=3D numonyx_extract_cfg_dummy_bytes(s); --=20 2.53.0 From nobody Sun Jul 26 10:59:42 2026 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=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1783413401; cv=pass; d=zohomail.com; s=zohoarc; b=IJSPi5UTnXZWOrM1X/sr3xtNyAIxuv8DVuG2CCn+vEi9odUkPKkBdBcRMf+3AOzx7HLxhIPF3u9M8B7S26ql6V9vQyBQl60a5fUQMDQJu2Gbhav9Avl3Cs+NBL3UkHCjNN68KwfpwmGslf/YGhF/+VSF/83hMz4R4BrU2x5dNBg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783413401; 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=/8oSy7eptbp7jfJZQ4K/chjbEl6e+MXXWg111tDRCwU=; b=mliuziQe9t1C//REZ+eY0hSMMJvZj7v0+G8UjX8dNNfM6P2r4lVFru6WjbtjR4FDD5znt0rpc5WgXgSd4RzVa7MbMs+8V26erD3IHVsn1R0a0oSxBBcjNNdTFcOr3SmM0KiD3z2MTaUMfzz5ZnQSGpH7G9kFDRNm0vbZoi+LX2o= 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=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783413401121683.714903929286; Tue, 7 Jul 2026 01:36:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh1Gq-0003ln-Vs; Tue, 07 Jul 2026 04:35:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wh1Gp-0003kU-4L; Tue, 07 Jul 2026 04:35:11 -0400 Received: from mail-japaneastazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c405::7] helo=TYDPR03CU002.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 1wh1Gn-0008Pe-KQ; Tue, 07 Jul 2026 04:35:10 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TY1PPF1A8DB1DA4.apcprd02.prod.outlook.com (2603:1096:408::94b) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.13; Tue, 7 Jul 2026 08:35:01 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0181.012; Tue, 7 Jul 2026 08:35:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=K4T6Aoi5FppYnxuag6qD08pggX4wLJpQvebqipoi5EzPJ/SySsOeX0lqHiwn5uGQIYxzHofE1gO5/Oh/5RGn0f56W9Inw/taDfl/bdxJkihKv8ndoePK3EaWVx0oQeWjXoGzP1cB0LpUVfWtQfOlO4Ik84FQYiaaar9+VzQGaBJ+dR+v1tTz3iq/+DG9Vm6Z/mdj1gDYZGPbyU739bBgtwQ3rEMrnUvuN25sYX4FFSU3taOFd6d9hcn3hErszsEJ6kr/y+9AOvSfqh+2Y/0pR1gFAvYH+TzL5vZU9ymYbh7aBaf3KKSDDcq3UkWFnWf8O9HvyUUdyAkLLEyYzNh2pA== 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=/8oSy7eptbp7jfJZQ4K/chjbEl6e+MXXWg111tDRCwU=; b=Y9LK+ApY4tvfLSFdDgGLuENW0I2dolVBDBg72cOhsKO9QML71ZMKa5wGNoRsC7n+ZVRjJPyVZiLg1Z4UF3XZFwvKolN6/UZKozjziBD0vuzBVJYPMGiAVTDlWW/T5v3VtfhUqrvGTfUjhQy1mIM151n6kHAWHE8OqbRVJ6+kUiMBnNH9PGPv5GXn75/mauShTxAYzeT/9TVrJnCg+9wvZoXAqjtZnLkIsVznXu0bV9LIO8FIPqyQbecQ6UtGB7+2423lgOHQ/PMU4qyGqidgvu6A3VAEo5UFOXN99DMB8OA+UObWANfDelsqCS+KJQtX75vqDFYP7u2g4DshnHbMqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/8oSy7eptbp7jfJZQ4K/chjbEl6e+MXXWg111tDRCwU=; b=jAt4egHb5gjcWyasQnU3cmMo7qbUlx6L6BCxR78uFBf1oD0IG2qLRwbknZCIwsqWCkcWLmfwiiVEyGZb9osdQYIb+RP2xqVFrvEAtcVtQaPRBT6AomB9l4748GTnbPHi6s77QSYiEP7g2OGVdQ8viL3xrpE58Min/xpGg17dhmGRRqGvgrHAT4DBYv43y2aulMph7Fk/NFxL9jUihhsjEVIs1GJ3m9A9TCBBNiLBkpegN9ZGI3vyO0ofx+MBClCrAATJjZZqZsuLvpZWtBdtuGalMd8SDT03pVj6kMTIVn5JIwCCLjNt8YfV5h3rUZqrPvYCTBLdTcyglS/VJjIGHw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , Hao Wu , Tyrone Ting , qemu-arm@nongnu.org Subject: [PATCH v2 05/10] hw/ssi: npcm7xx_fiu: Correct the dummy cycle emulation logic Date: Tue, 7 Jul 2026 16:34:24 +0800 Message-ID: <20260707083431.219671-6-bin.meng@processmission.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707083431.219671-1-bin.meng@processmission.com> References: <20260707083431.219671-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0106.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c4::6) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TY1PPF1A8DB1DA4:EE_ X-MS-Office365-Filtering-Correlation-Id: b8a6e815-8da6-40bd-c4b7-08dedc02a2e4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|34096008|376014|1800799024|23010399003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: SG0dGLLCYh8UMUAt92bng9A0am4dW1oDxUlpmhnB4tgmDvd8cvLECdlx7NkjHfjqHvJ1Qgb94bcjbNof65hGxUPpsJ7Cp0gGhiXvKLZLxH/xGcAlPa5tMiP3dRTuaaJ/VB8NVEshTqIdr67WqaGJVMekO2HvF6l1VqoDpXlFLe4Zylj09GWuSDtH+8bkeYsd/Wo0O5k/KFiIb+nmMhq98sY2CDoVbT9dEdyeS96GOQPR4fNnChmo4TLkl/8+Yw0zPBn+Ei6xLdVAb4srjkbOz4iUkQUNKiFc1t8pSqVzZR1jes1G8hUWofoydec/pOVEA+FB6bUhazp9y944qPRszpja7wjUOoVCQeJDplNEql7/ZU2HvxIMZWVq74oLF7A3oHbSej2B6PBY5uWsxh4+3x+37Zk20M39nBXDk+kcaR3yT2iWNe6tq8b6u/YMxgDb98GfI+VA/A9tDOqgcnmaM4cupBW2JW2gxL6R76iTlLBXlR4CelJ7RBV5r7E1kO5B7mSnhKjxhWy72UOnoVWY6ZFzMsh+iVg3XGi/q4X75vQA5gn8TIjXNrw0/fRVx+fTdKwofU970kdz3sr+jSPxoMS97uwpIxmHcRBcfvpFFpLoGKmf2MwOEnXlDotPeML1Iigef6iWJyaZQi/OzJZd0ntYSPLfU4dSZDUMr1CG/Nc= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(34096008)(376014)(1800799024)(23010399003)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DpRUg14P9xFbqbA3gZWnOUxpMq8IFFW9/RKhGUymuiI0BRlLGt0cHvdRaArJ?= =?us-ascii?Q?92K4xvIY/H3WAy5M0Hb5Lc6ua7d/iL0S79/8K2ZETz8GxMyigjr/z3aGpON8?= =?us-ascii?Q?G9IOPdY2N1GMJAhOo5JqrRV98x+xZTUka6K5DqsGnwBy2/Tt1D8xxEub1VD5?= =?us-ascii?Q?1chiRcLvwYGgoJp3iav6WmN3kqeHBz9IXxhwdF+fk3ILPIggT7X4Ybs4Xc4o?= =?us-ascii?Q?IwSiyHYRb/lJrdpyWqTg+NWTa5V8KTDI4kOp/1DaVIO3+C8MrFTua9TyuV7+?= =?us-ascii?Q?gJq6k14pwaA6H6mGPXpkS+KGt4Dq63kn82qE91pZ0vWwBOSBZ0VMU6JiqFmT?= =?us-ascii?Q?q6HQuWMF2tPXK4FkLd7U3k0euSOhvs8b/1YsIbzl/Pgi0EmQp/et4gYfTvqq?= =?us-ascii?Q?Qykqn4QHMB1M+A6Ullc+z5L06XOPWnuNetPwMQhoCTOvX5qYC9bp+0AYBHD5?= =?us-ascii?Q?nDtp8KTXOPQeEocUsiNUpEVnJeLUFmts6G7hZiCpjGyprlaB9JdYELBo8k6n?= =?us-ascii?Q?9MfNYiw7BnLrZtkFjXFXdcN2Aqjy+awF8VO6UbWvhXXa/xqotxPUsJqBEZF+?= =?us-ascii?Q?tSqJ4v35LAmoL7TRabsbYyKCJR1/BX4GAESxaAOvvyUaqL0QEfp7vGmSaQoE?= =?us-ascii?Q?EVrG2DjyVGp3rYDCj7TGhA6t0J3OFJDyUVn4FChlpYSDqgCBiFvUrK9HCNiH?= =?us-ascii?Q?DVk/dK2zXzZ2l7v2O4GXSR82DqvJZR/+0gWaXzmnVoU91+Ra1HQtd9MPc1IM?= =?us-ascii?Q?SN4jDPMJtidLwTgfZxi9YgH6/uwe/Q3UUKUc07mYyivbRk3Tnag198Z759qG?= =?us-ascii?Q?QQJQJtqM5PBPFEdnis3+chP5BB5qW7Mz7pYhHbB02NU2ZPxSroL6zpeJULgv?= =?us-ascii?Q?J9aFKhCisrfzdNK7uhKL7SqajH63seO7g9Zp4/qftbXUdRIlFCDpnGxu20fd?= =?us-ascii?Q?/fEFhys9O8LsnThGQya2BtbqZq71DB6e1r5Ah9TRxBneBowXkddgoBCrtdX+?= =?us-ascii?Q?y2ZUWajBDxzr2+T6WcbPgbpSVjpxftw6mKnuKplthhrqWmAz99rkOhVOOebV?= =?us-ascii?Q?KvlXZlHEwKz+0sARG2OsdbyhJG0dMhnnkTERTCmrI0oVldp8YS4iRgKY4Bnl?= =?us-ascii?Q?k0vpcbbNRo4ONgyQmfJw6t6tdnRrPzkuan7EP/TrlSjMEbpsmsBr3amjXFuI?= =?us-ascii?Q?Yvf40nMnPk8+y9wt7kiALMm0sRTbs/0X53CAgKU78lIJGM/OXRes7zKuS3c/?= =?us-ascii?Q?BjqIuysDaCIOX4MGesHQW0eweTTTaS2WkWYRAItz/VxLpc0awgSey4HBBLzP?= =?us-ascii?Q?MiGGbPwY4zXUFE20YpxE9BaBm9psMs/NmAT7+zTNgWVKwKUkw+G18LAGAX+L?= =?us-ascii?Q?KajrzrHyv8NCkmI3kGfCfRNXNtyjGhXdZT3HrP6Wnok4NhHReZT9i2/Nic+x?= =?us-ascii?Q?Q7DQD1ncEIcyIrtfvpxuCL80avgx1yYYP2h27KlSgSRgDwpe985VN+vigtzA?= =?us-ascii?Q?AnBCOs8p+AGZvQbDEHcPfdfa7OZ4Z9DimrHUkVvMjpR78xqGxDbjEuU5lkVT?= =?us-ascii?Q?4nWkY1a4EefChAVGpJcwMsneEtqRIetD9HS1aMju3yF5iwbpO6DYtL6NksQy?= =?us-ascii?Q?d1rXG8KXA673jG9Sc3zgPuGvwtAtzWxoWp8V8M3+qLCTzyMJbtTam/QoiDgN?= =?us-ascii?Q?uakBinz80psn/K4FrXZIMpsDuhIekXtrl0uZkG8G0sNyzktZNmXvbJNUtabv?= =?us-ascii?Q?yVv9wrEydZQX6ARzwBGbGX6PXyzCYeY=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: b8a6e815-8da6-40bd-c4b7-08dedc02a2e4 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 08:35:01.4984 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yEbJBnENpne7oVztVUMfUWk0pcahkjl5WqS8D+iwCNgGrNWSIhmV9n9DmUk3mIA2B0CjjXRwBOcqi5PVfJbcId1U4sRUjL53W9hoKQgL5rA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1PPF1A8DB1DA4 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::7; envelope-from=bin.meng@processmission.com; helo=TYDPR03CU002.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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 @processmission.com) X-ZM-MESSAGEID: 1783413402262158500 Content-Type: text/plain; charset="utf-8" Change send_dummy_bits() to send_dummy_bytes() as the FIU register fields are programmed from spi_mem_op.dummy.nbytes, so they already describe byte transfers. Verified the changes by booting OpenBMC image on `gbs` machine all the way to the Linux login shell: $ qemu-system-arm -machine quanta-gbs-bmc -nographic \ -drive file=3Dimage.mtd,if=3Dmtd,bus=3D0,unit=3D0,format=3Draw Fixes: b821242c7b3b ("hw/ssi: NPCM7xx Flash Interface Unit device model") Signed-off-by: Bin Meng --- (no changes since v1) hw/ssi/npcm7xx_fiu.c | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/hw/ssi/npcm7xx_fiu.c b/hw/ssi/npcm7xx_fiu.c index 2d5bed005a..d41d877cfb 100644 --- a/hw/ssi/npcm7xx_fiu.c +++ b/hw/ssi/npcm7xx_fiu.c @@ -150,7 +150,7 @@ static uint64_t npcm7xx_fiu_flash_read(void *opaque, hw= addr addr, NPCM7xxFIUState *fiu =3D f->fiu; uint64_t value =3D 0; uint32_t drd_cfg; - int dummy_cycles; + int dummy_bytes; int i; =20 if (fiu->active_cs !=3D -1) { @@ -180,10 +180,8 @@ static uint64_t npcm7xx_fiu_flash_read(void *opaque, h= waddr addr, break; } =20 - /* Flash chip model expects one transfer per dummy bit, not byte */ - dummy_cycles =3D - (FIU_DRD_CFG_DBW(drd_cfg) * 8) >> FIU_DRD_CFG_ACCTYPE(drd_cfg); - for (i =3D 0; i < dummy_cycles; i++) { + dummy_bytes =3D FIU_DRD_CFG_DBW(drd_cfg); + for (i =3D 0; i < dummy_bytes; i++) { ssi_transfer(fiu->spi, 0); } =20 @@ -305,20 +303,13 @@ static void send_address(SSIBus *spi, unsigned int ad= dsiz, uint32_t addr) } } =20 -/* Send the number of dummy bits specified in the UMA config register. */ -static void send_dummy_bits(SSIBus *spi, uint32_t uma_cfg, uint32_t uma_cm= d) +/* Send the number of dummy bytes specified in the UMA config register */ +static void send_dummy_bytes(SSIBus *spi, uint32_t uma_cfg) { - unsigned int bits_per_clock =3D 1U << FIU_UMA_CFG_DBPCK(uma_cfg); unsigned int i; =20 for (i =3D 0; i < FIU_UMA_CFG_DBSIZ(uma_cfg); i++) { - /* Use bytes 0 and 1 first, then keep repeating byte 2 */ - unsigned int field =3D (i < 2) ? ((i + 1) * 8) : 24; - unsigned int j; - - for (j =3D 0; j < 8; j +=3D bits_per_clock) { - ssi_transfer(spi, extract32(uma_cmd, field + j, bits_per_clock= )); - } + ssi_transfer(spi, 0); } } =20 @@ -354,8 +345,8 @@ static void npcm7xx_fiu_uma_transaction(NPCM7xxFIUState= *s) ssi_transfer(s->spi, extract32(s->regs[reg], field, 8)); } =20 - /* Send dummy bits, if present. */ - send_dummy_bits(s->spi, uma_cfg, s->regs[NPCM7XX_FIU_UMA_CMD]); + /* Send dummy bytes, if present */ + send_dummy_bytes(s->spi, uma_cfg); =20 /* Read data, if present. */ for (i =3D 0; i < FIU_UMA_CFG_RDATSIZ(uma_cfg); i++) { --=20 2.53.0 From nobody Sun Jul 26 10:59:42 2026 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=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1783413420; cv=pass; d=zohomail.com; s=zohoarc; b=TtcnvDCWTkueWmqIVsYLNB9P5wJX5Fi7NHxcVKMxMTFxPegpB/Z7rQlpyr4mtEX85oXJ8QVW8orEa25+lkt6TW3AMHQWOAkY6QYhhNFexVdmah2CvLnj3nOTLZL5dy7i/fmCf0u0eqO/8VsH81spZJ3MGp///VJ7qfL25ZU6hTk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783413420; 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=UtGMxSUXZ2nHwDNNlC23QHAUZiwWQc0/Fivw6cmmUcI=; b=noIAzBZaek9p2v83kkYm1RL+nbZrvqIVMOmkelfD5yQkZylYgn69vLSMDUjopgSvj1wOGur9ZreHXEkTkjU594/DiLH0arNWIxVZJ8nP3K+SgNMvha9nPGHiKVaHMibRRuBCK6SFS0HCzUS1jJy/tyDUED/vc3pzdwtbVYY1Lyg= 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=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178341342071837.35353988439181; Tue, 7 Jul 2026 01:37:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh1Gt-0003mp-Pt; Tue, 07 Jul 2026 04:35:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wh1Gs-0003mA-Dr; Tue, 07 Jul 2026 04:35:14 -0400 Received: from mail-japaneastazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c405::7] helo=TYDPR03CU002.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 1wh1Gp-0008Pe-Vd; Tue, 07 Jul 2026 04:35:14 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TY1PPF1A8DB1DA4.apcprd02.prod.outlook.com (2603:1096:408::94b) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.13; Tue, 7 Jul 2026 08:35:03 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0181.012; Tue, 7 Jul 2026 08:35:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eLNitmepztMzpEKfWZFiN84VQmyYIz5iUFNOEM3vmQ0q6JoJStpZdNAdlB3dCv7y/s+/IbPBc7YknZgKmmVssT7O/Qf/EKYgKYGODF4r0JJNRPztJqnMZl/AdjrKkXdVeqv/rE/AMwP4+kbsTXXP2hT9dPN4Cu3lhuxG8y+MkA8H9DD3OiIkGdLbcaEYmXnNHxWUcX6Aulmgv1sxFI+sOn/JPZWxsLhGWwF+smiaH5iEebR1SoQ7r9KypPqI+47DMxr3c4j82GoIDN2PZxt8bJKn5GmZjgNr2hB3p6YzmBxwivaL/TEbDqUWNUnzjiQCUanydONjODxynXpjaJmFpQ== 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=UtGMxSUXZ2nHwDNNlC23QHAUZiwWQc0/Fivw6cmmUcI=; b=R5czDOb09mE1tIDys/rcZWQw0TeBPzvVRaRfn0v27A4TbHdF9xB46nqn3GEr7k6MKJ5qlHVUBRY7YzyJNWTfbZJtRSFOcR8nvR0JTJHMKmAsRUh3Oi9C/3Pcc2zndgzMyoX8EAowtDCGOsRjl5lHgP1tMQU6xejHzhmeCNpUeEYYev/HDBtIkuqMf7Iv4UJzYuwelvevKDQWEuCtC2fkPQWtWx6RX2FWY9m/rJxFK4yb6BXw2uLSNceBe16hQX3ov0TCYl0ih/D4emHetVUOU9iZCOUUFQbYLI5bOVG8Sy9LzToL159mKKCp3nf/WBfuqFhv4/0znvLjYdj2Y+doeQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UtGMxSUXZ2nHwDNNlC23QHAUZiwWQc0/Fivw6cmmUcI=; b=tyr2wpcBlOggoFoYcDqVhvLkma3yD+NBu3iqotkkHCNOHGlakW+kHDR+xr8MVEAZ7a901dOfiP8IBhhhOpj2D3j89GDX+iY6x4sAkap/H3iGPAAAL0zZv8iPQwHUzDY3XpCTprl/GUSW/Mq9Blzrr9Zof4g+FFG/xFVTARZttwi9xsOk3Bbbwap5n+ZYd9WOifttOqKxe9eGrAtvv3bcqnesqk7fi+Pp8TwJF42cDMPNbIHGcVTBWces6tfSJaW5sUXVC5TjlkSHe8Kqs2pfaBbls8uTBNBmiXjWn3QyoGeOho/8UGJl4kc9vJuVeg3Ei11sDz92vGKVuzwnKHuuxg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Alistair Francis , "Edgar E. Iglesias" , Peter Maydell , qemu-arm@nongnu.org Subject: [PATCH v2 06/10] hw/ssi: xilinx_spips: Fix dummy phase handling Date: Tue, 7 Jul 2026 16:34:25 +0800 Message-ID: <20260707083431.219671-7-bin.meng@processmission.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707083431.219671-1-bin.meng@processmission.com> References: <20260707083431.219671-1-bin.meng@processmission.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0106.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c4::6) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TY1PPF1A8DB1DA4:EE_ X-MS-Office365-Filtering-Correlation-Id: 442c2e8d-9fc2-4f97-f1c8-08dedc02a407 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|34096008|376014|1800799024|23010399003|6133799003|56012099006|3023799007|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: JIU9VtPbsRbD+C9v99x78lSNidlHASBGPzMLMRiYi8BqwY7P/W7A1ApHDaIjDhWGdh1YKUL0micRM9WlNpvoYUqOsTReWDjGdZmdHMn+6cpE26wbuVINY91V5PlNsd5i0DdQeJzr8WQWUFHccqmkE7myFsa6BRhljp15DoHN+kV3yjgdX54FXmC7l1S1KkBo7Ed6kGMIb23RAP7zEJV/iA1sJf9F8OVlte5VMt2oeQ+M8u7rWKIzJlPSlEYQoX24Fm+zOefIheE2JQw8ZSUTWbmch3CBqUFOuJfW1m2tWCYKrQO+ybUHkZsxnb1WDRxUTzD8Uqb+9x5NmH6xExacv9h/QxA3Amf6FH8zIYYcrMTxCOspt0NhSFArLT7B4BJWf4bXT0XY17iacUm6Q+kIrvUBl8sp1rTcAaGrMt2snPT24yVjcVQNvEj7cfDv4JksruR+ZEPNIEtTSbFQTZKMMKrC6Wb3KJReuuXwJs9CVlRo19YTqv2i5txC3I63JkXAW32QedDDiArSvoS0/KN8+UE3+G3U6M15TDZjFtK1K7sEfQp5tsbm+xkWlCtIN+6vlpA0zaUCxeu0/AqkP43DiTLF4V+SOJLVrL76pbtwBdgoZuSi/I4iaLd0uB7ehocO X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(34096008)(376014)(1800799024)(23010399003)(6133799003)(56012099006)(3023799007)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?elBRSFMzSjJLeE5RSFJkZGx3K2psZ3c4NEhzbUZoeGxaTEIxMEh1THFDNGxB?= =?utf-8?B?VG1ZbHA2K0IxeUpXNXJyV2JseFk3dkxCaXlEai94cHhVMkZWVlFXN28wMVF2?= =?utf-8?B?ZDRNVkVDeHc4Q3BUZXh5am9vdVQ3MVl2anp3cDBpN3F1WGFNSkN3S2Y1RVJF?= =?utf-8?B?Y0NCaGFnVUtVRFdsdHptYVBhVnJyNkQ5RWNyUThHU2JqOTdaV3kxdGhZUUg2?= =?utf-8?B?aVpTczllMU0xcW1xdnh5N1hPVk9uQXMreWR6U1lXTGlyWGk5L0dyMkFEY21Q?= =?utf-8?B?bW5HMk1YSCtmOUd6NVVjRU9WQ2tGdU9DWE5mcyt0S2x3SExISEwvV1dsKzJ4?= =?utf-8?B?cEFwT0ZyT1A3K3FkL1MyZGFEbU9ydnRDRDEvcysrNkhSRjNJd2RhcC9HT3hn?= =?utf-8?B?OW9RWHErYU41cVI3cWUrTE9KZmh4VWR3WmU1N0w3QU9DdUdSbFRXNUJoSGhj?= =?utf-8?B?MVVsNFQvZFF4cXdMT3RMMnlYTHJrK09GKy9MNkVWMDJmMTR6VHdhL0lHL0NZ?= =?utf-8?B?OXhGQjBUMGhBNXBUQXZwb242MUo1VXlESi9TUHhweXlOVmxBTFo5UXJHai9n?= =?utf-8?B?ellodEd6RWFRSVpYUUFWZVVmVDBPeVc5TjBlMzc5cXNIM0RMcTJLL1RYS1hh?= =?utf-8?B?N2RQeXluL2MvTDJPWERlMHBsTGJNR1kwdjlkUzR4c3FodnpZQVg3OWh6S2FK?= =?utf-8?B?bllKUGJBcGFhTUovSkU1MzJnc3V1YzNDelp0MUZEZlVmQ1JRRU9BVE04RTgx?= =?utf-8?B?UWJ5NmlVVkVQa1JQd01OZXJmWWRORzYxTFJwN0liWTdZaWc4ZUhKNjE0M015?= =?utf-8?B?ZUpPdmtNeUR6OTA1Szc1blNkWWFqSGlrU1l4NmZpZTk1SDBCdkJ5L3A5VW1B?= =?utf-8?B?cG4ydGF1TUkzdFg3NDZ5VHRjRDhscUdCQjJRTFd5eVJSY0JRYzhhSjFrYlhS?= =?utf-8?B?dTJSTnhQa04wWW1WeEVqOVppblgrYUhhRHVQUmhabmgrQWE2UTlXVmplUzlD?= =?utf-8?B?bVlIYjJmM0lLRjdGQWNmTmMxZ3hLTC9uc2JPWG1uWllaM1RFbE5xaSsrZk0w?= =?utf-8?B?T3dpYno5UDlxT1lJMzlhTlNjM3Nqck1lc2VYQ2R2TDBnaTB5Vk5UVWw0bXBJ?= =?utf-8?B?OUxIY2p5RU8zNnJZcnlpWDdoeUo4NllYSXV6L0diVDNrbENPY1FCRllrZ25L?= =?utf-8?B?VzZ1YkVyR2hwcCs1WFhwQlJ1L2Q4VE02SEo2aEgrQ2xyRmhkY1VSN3pDZis2?= =?utf-8?B?Q0xBbnhXdHdpRmpoek41MlZQOE9wdmVyV0dTLzhjMm1wdUczL1pqMDJsTXIz?= =?utf-8?B?Uk5VTnlyOXJUaWJsa2d4QWtFZnJYSS9PclIwb1pQYjY3NEtidlQ0SEJ4UWRI?= =?utf-8?B?REd6bFVmK1lwN1MrS2tCeTh0dkJmeHdINnRiREhGcitEMkx4RFJxRUdtK3lx?= =?utf-8?B?ZFZmS1RQa052WHkwYUd0ZHNXd0NBb2Q5Z0dSR1dKRExxQ3FIdDJKbENqWFFV?= =?utf-8?B?NS9uZHY3YSsydlViUGlhbHByWFJhSDczWGJMK2JFbi9uT3p6bEtTT2VFUzFX?= =?utf-8?B?UGRnN0gwd3hEajZGcERvcmRaRmJyejZmQkRicVBzOTcyNVAvYUlVTkJJQWJh?= =?utf-8?B?MXUvcS9DZlcxWCtxNUZoeGVKc1R1S3EwMDdzUGpVa0haQWc5cmh3Q0lBWGpP?= =?utf-8?B?OGhPTUsxNGRvSUFvdjM1aVcxTWI0UDN0MHBwbThDeHNLQjJBazRYOGNZVVpM?= =?utf-8?B?Q0gwc3NUdU53Z2F6dFhNRFFhalVOVG5sQjdlSUFTOWRCdDFRQWtTVEU4ejlZ?= =?utf-8?B?MnNPTHRPWW03djI0MzdyUW5oY01Uc0I4WGxMRXdSV1JGQWJxL0FWVFNNMFIz?= =?utf-8?B?b0RhMTJFdkc1MndRRkpoMEZUQXFPWEFjenBTemZKYjlVeHFKYzFDQU1OWURS?= =?utf-8?B?NW9CWkQzT1NrM1ZOa1pTL2xhRXEzRXprK3BmR3NjN0xrRUJTQ2JlZlV6M0l2?= =?utf-8?B?U0Zkd3NNSkpxcjg0d0k3bHJkN0F1YU9PbWRxTVhBL1B1VDRWb1krZFY1NFZE?= =?utf-8?B?SGJVdm9hQnZVQ2xQSndSV1k4N3UwZmUwUStVemNIM2p6ZlZFRVVFMEVadGEw?= =?utf-8?B?eVhnN2VrdkRBVlJJejUzNk9LdUhucklmNE9wNE12QVYxTXBTVEU3SkhLTVMv?= =?utf-8?B?dTJlNUU1L2VVZXpCNW1lN0c5V3Z6MWJCSEk4Q24xcU4vTXRDNGZkSVJPb2ov?= =?utf-8?B?VmhpMzlsdm50NXVHY1hrMXY0cmxZUkxSRWduYzZ5akpZNTQxNk9JckptYVNr?= =?utf-8?B?V2d0a2NBNHNGWTZMNXRTVm1WM091elllYzc3bXY1Zk5FZ2MwazFtNmxwVHJo?= =?utf-8?Q?P7R7j7WHHTUfLnc8=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 442c2e8d-9fc2-4f97-f1c8-08dedc02a407 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 08:35:03.6366 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: JMRzjPVqmv1RTHaid8t+q1RchZZUQjILn02LBm9HnZrj9E7Ny0fcAo7Bzyr/OSEbC3AQILxVGS+TdVUkThZdsRZ+CIif699MxyvODSxy8DI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1PPF1A8DB1DA4 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::7; envelope-from=bin.meng@processmission.com; helo=TYDPR03CU002.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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 @processmission.com) X-ZM-MESSAGEID: 1783413422468158500 The ZynqMP generic FIFO encodes dummy phases as a number of dummy cycles. QEMU's SSI bus transfers whole bytes, so the controller model must convert the programmed cycle count to the number of SSI byte transfers needed for the selected SPI, dual SPI or quad SPI mode. The legacy Xilinx QSPI snoop paths had the opposite problem after the m25p80 dummy handling was fixed. They still treated each dummy byte queued through the FIFO as a request to generate several SSI transfers based on the current link width. The flash model now consumes dummy phases as byte counts, so the manual FIFO path should forward one SSI transfer per dummy byte. Update the Xilinx QSPI dummy accounting consistently for the generic FIFO, manual FIFO and LQSPI direct-read paths. Also make the command table report the dummy byte counts consumed by m25p80 for dual and quad output reads, and account for the mode byte before LQSPI data reads begin. This matches the ZynqMP TRM (ug1085, v2.2 [1]) description of the generic FIFO dummy cycle entry and keeps the controller side aligned with the flash model's dummy byte ownership. The description of the generic command fifo register says: When [receive, transmit, data_xfer] =3D [0,0,1], the [immediate_data] field represents the number of dummy cycle sent on the SPI interface. [1] https://www.xilinx.com/support/documentation/user_guides/ug1085-zynq-ul= trascale-trm.pdf table 24=E2=80=9022, an example of Generic FIFO Contents for Quad I/O R= ead Command (EBh) Fixes: ef06ca3946e2 ("xilinx_spips: Add support for RX discard and RX drain= ") Fixes: c95997a39de6 ("xilinx_spips: Add support for the ZynqMP Generic QSPI= ") Signed-off-by: Bin Meng --- Changes in v2: - correct the typo in the commit message: genenic =3D> generic hw/ssi/xilinx_spips.c | 122 +++++++++++++++++++++++++--------- include/hw/ssi/xilinx_spips.h | 2 +- 2 files changed, 90 insertions(+), 34 deletions(-) diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c index f6e717bc01..62058fdb88 100644 --- a/hw/ssi/xilinx_spips.c +++ b/hw/ssi/xilinx_spips.c @@ -192,6 +192,10 @@ FIELD(GQSPI_GF_SNAPSHOT, EXPONENT, 9, 1) FIELD(GQSPI_GF_SNAPSHOT, DATA_XFER, 8, 1) FIELD(GQSPI_GF_SNAPSHOT, IMMEDIATE_DATA, 0, 8) +#define GQSPI_GF_MODE_SPI 1 +#define GQSPI_GF_MODE_DSPI 2 +#define GQSPI_GF_MODE_QSPI 3 + #define R_GQSPI_MOD_ID (0x1fc / 4) #define R_GQSPI_MOD_ID_RESET (0x10a0000) =20 @@ -237,7 +241,7 @@ static void xilinx_spips_update_cs(XilinxSPIPS *s, int = field) } if (!(field & ((1 << (s->num_cs * s->num_busses)) - 1))) { s->snoop_state =3D SNOOP_CHECKING; - s->cmd_dummies =3D 0; + s->cmd_dummy_bytes =3D 0; s->link_state =3D 1; s->link_state_next =3D 1; s->link_state_next_when =3D 0; @@ -382,7 +386,7 @@ static void xilinx_spips_reset(DeviceState *d) s->link_state_next =3D 1; s->link_state_next_when =3D 0; s->snoop_state =3D SNOOP_CHECKING; - s->cmd_dummies =3D 0; + s->cmd_dummy_bytes =3D 0; s->man_start_com =3D false; xilinx_spips_update_ixr(s); xilinx_spips_update_cs_lines(s); @@ -457,6 +461,7 @@ static void xlnx_zynqmp_qspips_flush_fifo_g(XlnxZynqMPQ= SPIPS *s) int i; =20 if (!s->regs[R_GQSPI_DATA_STS]) { + uint32_t prev_gf_snapshot =3D s->regs[R_GQSPI_GF_SNAPSHOT]; uint8_t imm; =20 s->regs[R_GQSPI_GF_SNAPSHOT] =3D fifo32_pop(&s->fifo_g); @@ -484,7 +489,56 @@ static void xlnx_zynqmp_qspips_flush_fifo_g(XlnxZynqMP= QSPIPS *s) } s->regs[R_GQSPI_DATA_STS] =3D 1ul << imm; } else { - s->regs[R_GQSPI_DATA_STS] =3D imm; + /* + * When [receive, transmit, data_xfer] =3D [0,0,1], it rep= resents + * the number of dummy cycle sent on the SPI interface. We= need + * to convert the number of dummy cycles to bytes accordin= g to + * the SPI mode being used. + * + * Ref: ug1085 v2.2 (December 2020) table 24=E2=80=9022, a= n example of + * Generic FIFO Contents for Quad I/O Read Command (E= Bh) + */ + if (!ARRAY_FIELD_EX32(s->regs, GQSPI_GF_SNAPSHOT, TRANSMIT= ) && + !ARRAY_FIELD_EX32(s->regs, GQSPI_GF_SNAPSHOT, RECIEVE)= ) { + uint8_t spi_mode =3D ARRAY_FIELD_EX32(s->regs, GQSPI_G= F_SNAPSHOT, + SPI_MODE); + /* + * Some ZynqMP GQSPI drivers, such as Linux, use the d= ata + * bus width in the dummy GENFIFO entry only to config= ure + * the controller mode. The immediate value is already + * the number of dummy cycles for the dummy phase, whi= ch + * follows the address bus width. Reuse the previous TX + * phase mode to convert cycles to SSI bytes. + * + * This does not make the model Linux-only. U-Boot emi= ts + * the dummy entry with op->dummy.buswidth, so the ent= ry + * mode already matches the dummy phase. Its opcode and + * address phases are immediate entries, not DATA_XFER= TX + * entries, so the override below is not taken for U-B= oot. + */ + if (FIELD_EX32(prev_gf_snapshot, GQSPI_GF_SNAPSHOT, + DATA_XFER) && + FIELD_EX32(prev_gf_snapshot, GQSPI_GF_SNAPSHOT, + TRANSMIT) && + !FIELD_EX32(prev_gf_snapshot, GQSPI_GF_SNAPSHOT, + RECIEVE)) { + spi_mode =3D FIELD_EX32(prev_gf_snapshot, + GQSPI_GF_SNAPSHOT, SPI_MODE); + } + + if (spi_mode =3D=3D GQSPI_GF_MODE_QSPI) { + s->regs[R_GQSPI_DATA_STS] =3D ROUND_UP(imm * 4, 8)= / 8; + } else if (spi_mode =3D=3D GQSPI_GF_MODE_DSPI) { + s->regs[R_GQSPI_DATA_STS] =3D ROUND_UP(imm * 2, 8)= / 8; + } else if (spi_mode =3D=3D GQSPI_GF_MODE_SPI) { + s->regs[R_GQSPI_DATA_STS] =3D ROUND_UP(imm * 1, 8)= / 8; + } else { + qemu_log_mask(LOG_GUEST_ERROR, "Unknown SPI MODE: = 0x%x ", + spi_mode); + } + } else { + s->regs[R_GQSPI_DATA_STS] =3D imm; + } } } /* Zero length transfer check */ @@ -550,7 +604,7 @@ static void xlnx_zynqmp_qspips_flush_fifo_g(XlnxZynqMPQ= SPIPS *s) } } =20 -static int xilinx_spips_num_dummies(XilinxQSPIPS *qs, uint8_t command) +static int xilinx_spips_num_dummy_bytes(XilinxQSPIPS *qs, uint8_t command) { if (!qs) { /* The SPI device is not a QSPI device */ @@ -567,10 +621,11 @@ static int xilinx_spips_num_dummies(XilinxQSPIPS *qs,= uint8_t command) case QPP_4: return 0; case FAST_READ: - case DOR: - case QOR: case FAST_READ_4: + return 1; + case DOR: case DOR_4: + case QOR: case QOR_4: return 1; case DIOR: @@ -611,7 +666,6 @@ static void xilinx_spips_flush_txfifo(XilinxSPIPS *s) int i; uint8_t tx =3D 0; uint8_t tx_rx[MAX_NUM_BUSSES] =3D { 0 }; - uint8_t dummy_cycles =3D 0; uint8_t addr_length; =20 if (fifo8_is_empty(&s->tx_fifo)) { @@ -631,26 +685,18 @@ static void xilinx_spips_flush_txfifo(XilinxSPIPS *s) tx_rx[i] =3D tx; } } else { - /* - * Extract a dummy byte and generate dummy cycles according to= the - * link state - */ tx =3D fifo8_pop(&s->tx_fifo); - dummy_cycles =3D 8 / s->link_state; + for (i =3D 0; i < num_effective_busses(s); ++i) { + tx_rx[i] =3D tx; + } } =20 for (i =3D 0; i < num_effective_busses(s); ++i) { int bus =3D num_effective_busses(s) - 1 - i; - if (dummy_cycles) { - int d; - for (d =3D 0; d < dummy_cycles; ++d) { - tx_rx[0] =3D ssi_transfer(s->spi[bus], (uint32_t)tx_rx= [0]); - } - } else { - DB_PRINT_L(debug_level, "tx =3D %02x\n", tx_rx[i]); - tx_rx[i] =3D ssi_transfer(s->spi[bus], (uint32_t)tx_rx[i]); - DB_PRINT_L(debug_level, "rx =3D %02x\n", tx_rx[i]); - } + + DB_PRINT_L(debug_level, "tx =3D %02x\n", tx_rx[i]); + tx_rx[i] =3D ssi_transfer(s->spi[bus], (uint32_t)tx_rx[i]); + DB_PRINT_L(debug_level, "rx =3D %02x\n", tx_rx[i]); } =20 if (s->regs[R_CMND] & R_CMND_RXFIFO_DRAIN) { @@ -685,9 +731,9 @@ static void xilinx_spips_flush_txfifo(XilinxSPIPS *s) switch (s->snoop_state) { case (SNOOP_CHECKING): /* Store the count of dummy bytes in the txfifo */ - s->cmd_dummies =3D xilinx_spips_num_dummies(q, tx); + s->cmd_dummy_bytes =3D xilinx_spips_num_dummy_bytes(q, tx); addr_length =3D get_addr_length(s, tx); - if (s->cmd_dummies < 0) { + if (s->cmd_dummy_bytes < 0) { s->snoop_state =3D SNOOP_NONE; } else { s->snoop_state =3D SNOOP_ADDR + addr_length - 1; @@ -697,14 +743,14 @@ static void xilinx_spips_flush_txfifo(XilinxSPIPS *s) case DOR: case DOR_4: s->link_state_next =3D 2; - s->link_state_next_when =3D addr_length + s->cmd_dummies; + s->link_state_next_when =3D addr_length + s->cmd_dummy_byt= es; break; case QPP: case QPP_4: case QOR: case QOR_4: s->link_state_next =3D 4; - s->link_state_next_when =3D addr_length + s->cmd_dummies; + s->link_state_next_when =3D addr_length + s->cmd_dummy_byt= es; break; case DIOR: case DIOR_4: @@ -720,10 +766,10 @@ static void xilinx_spips_flush_txfifo(XilinxSPIPS *s) /* * Address has been transmitted, transmit dummy cycles now if = needed */ - if (s->cmd_dummies < 0) { + if (s->cmd_dummy_bytes < 0) { s->snoop_state =3D SNOOP_NONE; } else { - s->snoop_state =3D s->cmd_dummies; + s->snoop_state =3D s->cmd_dummy_bytes; } break; case (SNOOP_STRIPING): @@ -1152,11 +1198,13 @@ static void lqspi_load_cache(void *opaque, hwaddr a= ddr) XilinxQSPIPS *q =3D opaque; XilinxSPIPS *s =3D opaque; int i; + int dummy_bytes; int flash_addr =3D ((addr & ~(LQSPI_CACHE_SIZE - 1)) / num_effective_busses(s)); int peripheral =3D flash_addr >> LQSPI_ADDRESS_BITS; int cache_entry =3D 0; uint32_t u_page_save =3D s->regs[R_LQSPI_STS] & ~LQSPI_CFG_U_PAGE; + uint8_t command; =20 if (addr < q->lqspi_cached_addr || addr > q->lqspi_cached_addr + LQSPI_CACHE_SIZE - 4) { @@ -1170,10 +1218,10 @@ static void lqspi_load_cache(void *opaque, hwaddr a= ddr) fifo8_reset(&s->rx_fifo); =20 /* instruction */ + command =3D s->regs[R_LQSPI_CFG] & LQSPI_CFG_INST_CODE; DB_PRINT_L(0, "pushing read instruction: %02x\n", - (unsigned)(uint8_t)(s->regs[R_LQSPI_CFG] & - LQSPI_CFG_INST_CODE)); - fifo8_push(&s->tx_fifo, s->regs[R_LQSPI_CFG] & LQSPI_CFG_INST_CODE= ); + (unsigned)command); + fifo8_push(&s->tx_fifo, command); /* read address */ DB_PRINT_L(0, "pushing read address %06x\n", flash_addr); if (s->regs[R_LQSPI_CFG] & LQSPI_CFG_ADDR4) { @@ -1183,14 +1231,22 @@ static void lqspi_load_cache(void *opaque, hwaddr a= ddr) fifo8_push(&s->tx_fifo, (uint8_t)(flash_addr >> 8)); fifo8_push(&s->tx_fifo, (uint8_t)flash_addr); /* mode bits */ + dummy_bytes =3D xilinx_spips_num_dummy_bytes(q, command); if (s->regs[R_LQSPI_CFG] & LQSPI_CFG_MODE_EN) { fifo8_push(&s->tx_fifo, extract32(s->regs[R_LQSPI_CFG], LQSPI_CFG_MODE_SHIFT, LQSPI_CFG_MODE_WIDTH)); + if (dummy_bytes > 0) { + dummy_bytes--; + } + } + if (dummy_bytes < 0) { + dummy_bytes =3D extract32(s->regs[R_LQSPI_CFG], + LQSPI_CFG_DUMMY_SHIFT, + LQSPI_CFG_DUMMY_WIDTH); } /* dummy bytes */ - for (i =3D 0; i < (extract32(s->regs[R_LQSPI_CFG], LQSPI_CFG_DUMMY= _SHIFT, - LQSPI_CFG_DUMMY_WIDTH)); ++i) { + for (i =3D 0; i < dummy_bytes; ++i) { DB_PRINT_L(0, "pushing dummy byte\n"); fifo8_push(&s->tx_fifo, 0); } diff --git a/include/hw/ssi/xilinx_spips.h b/include/hw/ssi/xilinx_spips.h index c8f6c5053c..d1eefa4ba6 100644 --- a/include/hw/ssi/xilinx_spips.h +++ b/include/hw/ssi/xilinx_spips.h @@ -69,7 +69,7 @@ struct XilinxSPIPS { uint8_t num_busses; =20 uint8_t snoop_state; - int cmd_dummies; + int cmd_dummy_bytes; uint8_t link_state; uint8_t link_state_next; uint8_t link_state_next_when; --=20 2.53.0 From nobody Sun Jul 26 10:59:42 2026 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=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1783413407; cv=pass; d=zohomail.com; s=zohoarc; b=YP+nC35zWU9upzbj7O7nmN4wnZnW1zmFDAPjS09o66aU7nvWf99hP5841kwXPuPinC8FL0tS615SmwiTIYc/3gpw9kGgglrbmahXhi1x/XMUPfITEu5EJT/2AJzZScfyXJxohQqvl90Tj9dIWdMxK/87QfwlfIp0WNbvtmexww0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783413407; 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=u4+AkQtse8RrYY+pb28XYMHEOh01fkHmXnpTmW5xf4o=; b=MDeqwm562ZRUgGOax64OJ/ib3Ybw8brurFK4mHtcTJFgZDEM+rYUUtGLW92hHgRiwr9iRLoX0YVu2dutWIIrl45LebbHK37cxHKapmB+aiwiM0fnWnNo7HcN8QYBn7/ztMmWYphX3yDgh9DA1dko/7fDAq0d4uSh5JRsch9Wx6A= 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=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783413407650341.5618357608088; Tue, 7 Jul 2026 01:36:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh1Gx-0003oe-1n; Tue, 07 Jul 2026 04:35:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wh1Gu-0003ng-OX; Tue, 07 Jul 2026 04:35:16 -0400 Received: from mail-japaneastazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c405::7] helo=TYDPR03CU002.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 1wh1Gt-0008Pe-6X; Tue, 07 Jul 2026 04:35:16 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TY1PPF1A8DB1DA4.apcprd02.prod.outlook.com (2603:1096:408::94b) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.13; Tue, 7 Jul 2026 08:35:07 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0181.012; Tue, 7 Jul 2026 08:35:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XC61OGt/Bt/UoQj+XnI4Qy/5Q2JYMjmC5yv1oEaYakZOY3S+6q3L9BG8g7yxBI1dFUGbzP+/SFchgAATgTMcS+MvYVbAGlpQimIYv/Sfukp004CNapbBgn/Um9p8aVrEQsVa9lgyi7MBbZFWXH0+sJPbCefa/Itgmkz5jzjxacjSWYKWtvX1uyTGkve4CeG6pKBmw9xauyWHhqUOMSWRk24jGl0rp7WcCOKKW5sfC0YyIIh/XTjR3M0Le7yY7mxqrmMwxzocvvvBpswQJQ6WYtAqxQkFkC+AIrMNVfMyQ1f3PYK8/rdRvSIAuAjLAtGotW1IIQaRYUiYwGzuYm2Obw== 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=u4+AkQtse8RrYY+pb28XYMHEOh01fkHmXnpTmW5xf4o=; b=poAIDSrzLO2HoyTsQz8jwbJpwMlcy/gYReVCfF1hJVHCiBJvhiXyxxRHjr+cT2HCzBxTDjOfuFKpL6sgS6IdqW99yL9lgFk5MEiEMr4pA2Qey9f7Y/D+LLp+Wo1Sz/1L+Oc6JB65dphhc9QbwvXueFKoXYsi3IUjkswkqvv/takQghqa6QUxtOHAeodrq9hjkfJUWSyjYSOyGjxhddo36IuTmKWbwOOHwgkbqZoR41Jy+xXPwvnu2t7uTQ5DyO2kV5y55lF+lVfwK/icHWcqsvn7eQVOQ9p9vKzotcB28w9PM0o90MVc5j6arQtSWeISZQ3Hfd6vdWdHqwsFYW0Uog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u4+AkQtse8RrYY+pb28XYMHEOh01fkHmXnpTmW5xf4o=; b=ZQjYBkA5MkKIPxeRlnG4IaCQGEpRDS4eNiReGZUsuNMZN+enTDGjyppoxqwAAe3tSk44RTYWgHhJEgccMcCLJaZFxRuG9SG1bVhVSk+9JXr5A2i+gRymHxIARypwf0QDwZmSiRl1psCNDxMyWsrAkwQeA6oANOUmJEj7KpQhKmEkg9VMlPQCMQFTRocP+htx9SQLA+Cw0fT6rNq1cEPSGE4HLwD701O5o/MxDGV07E+huadAboZ9lkQ8T818FHmp4bh072DMj9UE/o+Q3VmEEuUn7T2DhnnsC/Kvm440dfnSq1xZ3mK3SzhajAyDjN1w6Zb9Km0Iv/3BrhWcwGH/ig== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Alistair Francis , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Jamin Lin , Joel Stanley , Kane Chen , Peter Maydell , Steven Lee , Troy Lee , qemu-arm@nongnu.org Subject: [PATCH v2 07/10] hw/ssi: aspeed_smc: Fix direct-read dummy bytes Date: Tue, 7 Jul 2026 16:34:26 +0800 Message-ID: <20260707083431.219671-8-bin.meng@processmission.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707083431.219671-1-bin.meng@processmission.com> References: <20260707083431.219671-1-bin.meng@processmission.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0106.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c4::6) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TY1PPF1A8DB1DA4:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e339edf-c22b-4321-538c-08dedc02a626 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|34096008|7416014|376014|1800799024|23010399003|6133799003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: BMzHgpfurCwiX6rVAOktkBZSiIn7sXHkOi1rkiQk88d+yAqjV7PtRXZ5rZQ11aoURBZ2xZ9XVsLK05v1A3fofO51g1XoBBUEp2SGNAxX0OXXBiIBLmbJBZQUSMjt0EOWYhJQz4LCnz8YoskAk23VyGPe0CXlGmjs0mmGVhJGlbDMEGduLmBCM9Pd93wWB/W9HtiFIGf6bJDB00wwIQRhQq3IEtVhcG+d1GOkcHvd7r7PTfRVIMLMwyDFgrZDRZoWmu9D9+GL7q8atGAXBe/2lyrkroT4O01ugzEBNCnfIxT2Iq2I4ETTl71VEFaxjcHyRFV89ao5SPGxVCYcJEzXbSx+CggBU1+UCPIyZxFVp1DgW/bqk5p1ZCnrMKThDNgE1I++cbK71q8HHh69M95HYGmg2yIG0/AvOMFgHH3WJ1kdL0kIXdwZx0sUucVs+698qO4wivt03PN8MnTyXXF8xTmPs0fKM7U4uI2nAcb8vrc8Vu5SeM0ok2nkWLgypW/pzOJ+kySOqmjSmoikbvhr6ljCqgCgZO+jwBXnUL7Wi2USjY6Ios7eZRqm9IH3NsTQdVFx0cLB1GxicaSlVMQcH+Zfpk2l+RlnMRf78dmTM2ss+Y9BMaCZ75LcEOw7iyab7nLAK2Hw712VUC5YSufO5F/hGFU0dvjyW11YZHFJzZs= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(34096008)(7416014)(376014)(1800799024)(23010399003)(6133799003)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UHY0bjN5djZEVmU5NG1obVRHb05IaXM1UTVCQ0pGdWN3TUYwdi82WjA4Skx6?= =?utf-8?B?UTZjdEdQYjVTVVVTekNLckFoV2U3N0RxbWppcFI1MlZmQytpcHFuM1Y5YzJz?= =?utf-8?B?S1RxZWltQm42RnppQUNONXM5aHRQZEJQcmJ3U2FvYTRrcU0vbkhWUVkzVUFF?= =?utf-8?B?ZlVndGQzSTErWXdWeHZtems5RWVVU1J1ZTk1THprVTU0VU1PQVVrb01CcmV6?= =?utf-8?B?bW5jeFRhaXBBRmNJQmZxMkU2LzYvYWJJdU8rOHg2SEdFWjNyUmFwUEhMQ2kz?= =?utf-8?B?Zzh2L08zalZnZHJVamFNMG9vUGpkcGdjQS9YU2srT2dYSzJ6OUpzQnBnUEtS?= =?utf-8?B?MU9oeGpVcTZXQ1lpU2xETytwOTNsS2hwZXUwWmxoTU41bTlibVc1NzV0VDJn?= =?utf-8?B?VWIwK3dtaU1hU3QrUGt1Z1J6cU81dXRJOWI5bEVyTzdjZ29nSVBac2RRdWN5?= =?utf-8?B?NGJRek41QmxtbXNyR1dTck93MkxwV0U2Tlc0ZVB1NWN2bjAvQkRUZkVURUdG?= =?utf-8?B?VUFqZkpJUkJKRHBRVjdNVm5wRGswTWR4d0I3b0psaVgvZ1N5S08waElEdUZy?= =?utf-8?B?b016UFRSNW8xR3V4eExlUmtySkpMOWw0Qlp4U1JNR1lrcE9EV2MxZW15TTg0?= =?utf-8?B?RjNhTkk5ZEdGMzZsRUNkaUxOaWtXbmQvMk5hMGE1YmdSUjFRTUx5VFhUbHAr?= =?utf-8?B?Y0lmMC91a3h0T2ZGUm5uVlhUcFp5VzdZRmMyYkNWYi9mNzAxWXNBQmlaNzF5?= =?utf-8?B?WjZXRjU3azAwTWsxcTFDRi9yYnE2RTlPSndmeFBUSkJMdlVVYWdjNlQra1ZL?= =?utf-8?B?Q2x1WFFoQmRQVm1JRzM3RU44OXV4OWtjTTRpeFF4YzM0cjQwOTk5UkRncXYr?= =?utf-8?B?S0R0SkxCWkJpTExCSjZxSVBMT2VlL0NNQWZnUlRndHVDQkhMRUVqZS8zN0l5?= =?utf-8?B?TGloMkF4L3A5ODhzbUkrRVpLNUd0bzI2ZXBNdzVVdVcxTHUvOXROekl5SVAy?= =?utf-8?B?U2hmbjEwcUFhRmZyekxNRU5rY29CK0Q0Q2puOUhRYkJ5b3U0V0pGOEp5bEZy?= =?utf-8?B?U3piaGoxbklnUzEzUXYxWTg4RUhGN1dGR2YrUlc3YkdpUjYxWlRlOWVmRjRy?= =?utf-8?B?MHBwMjhMWm9FSCtleERvQ3hMamtsRU9qbGVuOVF4TmtGL3lQTTloQndtbmY2?= =?utf-8?B?TDhheHM0akhjSmxTZlB4T0ZxYWNweFVOYk13RTUvNWxnYjNpTXJKN2VGcWsv?= =?utf-8?B?MU5wNk1xb1BZYVdhd2JncjYxMlZ2SVVpRjhmbmhnTVphK0pqQW5FVHdybWw2?= =?utf-8?B?TVl6TEc4UU9NUjk5RDY1Zk5KYkhoSVJWZzJHN0lUYVUzL2VuYmdXdTlQU2hD?= =?utf-8?B?Y3ZsTmVvOUd2ZG91RnU0YXpSbXViTjFvS29JRGZ5TGZLbStzVDc2eFh1RVJK?= =?utf-8?B?ZURhWjI5NnpFbGdVd0RSS25mM3dNL05DVmwwSEZjb2ZzQjBiZWJZQjVDdGdF?= =?utf-8?B?cloyNWlUN1FISVlxNGdrdEhzajNhZDYwMW4vOUxKcUFYd2dtUmx1N3NyaHlV?= =?utf-8?B?NVExRmlzaGFLK3gxd1lPU0VCaXBKd0hTMGJuWnN4dFQ2SjBUbS9qaWY4V1V4?= =?utf-8?B?R2lGNFE1N0NTOCtRMFpPVTczbzB2NlZCOXo3Ryt0RUtBWFlPbzVzRmhmUTJF?= =?utf-8?B?OU1IbVpvdkp1Vm5oSloxUWpXYXFuV2ZxY0NsdUNqZHphNW41aFdTWEtmSmt1?= =?utf-8?B?Q0E3U0xxU01icm5MdHA4aGgrS2dwODJqQ2FjSjYrZjRIUUsxZ0ZuWUhFSU4w?= =?utf-8?B?aDUxYUplZlZEOWRNNG1MRmwzUTJWUzNkZjFjM1JYbWVCSmdXOTAvNW5hcWxE?= =?utf-8?B?L0ZKY2c0RTVTdHdBN0J1K3RaU1NsTFpXSGlzeU4wUFFtQWF2cVZJdlgyRHFY?= =?utf-8?B?ZFp3VUhMSG9RQjhxWDd2TnB2WnZhU281d3BoQ1NYTzIwUzR5SXU3YUxFMVBw?= =?utf-8?B?QXlVZWoyR3VFZHh6K3ZoVlErTkIrWnFBMTBwL3ZyKzFqR3plMk9VZWJrbkls?= =?utf-8?B?OEVRc0Vwd3FnWHRqUnlvRHNZSjJwQ2ZTbWV1aWExQ0RSbjlvaHdtcFdnM2dn?= =?utf-8?B?K3F0dzhHUHcxL0lLTWpra2FlTXVkRU1HUStrODRDNTlKdERqOTNQWWU4YjhG?= =?utf-8?B?a2QvbXJvRk4wWEVvRmtORnFSTHdWM1VjQklTK1ozbU10TmtYVFpXK2tBalkv?= =?utf-8?B?UE9GYThFR1RJbUVxbEhlVWpINzBPQWdVN2wwR0tJNkFFMFM1THNveGtJY1Q5?= =?utf-8?B?aE8wY2FLVzNuNm1MMU84TVFJWjQ4RTFpdnpMZWZRNklMdzhtbnpmOE9OaHZj?= =?utf-8?Q?Hv1NZX/GKUw1Jw4s=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e339edf-c22b-4321-538c-08dedc02a626 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 08:35:07.0551 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: l8mpL7k+ZfgPWD++q7F481Oucp/nQ2D7RAjHVjOTwELofUtVKARnR6x1regrGUDIVRYK48hqN1e+4Q7sWTHSZcr1Kpgl0425sFGj91hpvK4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1PPF1A8DB1DA4 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::7; envelope-from=bin.meng@processmission.com; helo=TYDPR03CU002.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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 @processmission.com) X-ZM-MESSAGEID: 1783413408895158500 m25p80 now consumes fast-read dummy phases as byte counts. The ASPEED SMC direct-read path still treated the CEx dummy field as raw cycles and emitted field * 8 SSI transfers. Convert the ASPEED dummy field to SSI byte transfers using the selected direct-read data width. Fixes: ac2810defa9d ("aspeed/smc: handle dummy bytes when doing fast reads = in command mode") Signed-off-by: Bin Meng Reviewed-by: C=C3=A9dric Le Goater Tested-by: C=C3=A9dric Le Goater --- (no changes since v1) hw/ssi/aspeed_smc.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index d87fbd798c..3f957d153f 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -449,19 +449,28 @@ static uint32_t aspeed_smc_check_segment_addr(const A= speedSMCFlash *fl, return addr; } =20 -static int aspeed_smc_flash_dummies(const AspeedSMCFlash *fl) +static int aspeed_smc_flash_dummy_bytes(const AspeedSMCFlash *fl) { const AspeedSMCState *s =3D fl->controller; uint32_t r_ctrl0 =3D s->regs[s->r_ctrl0 + fl->cs]; uint32_t dummy_high =3D (r_ctrl0 >> CTRL_DUMMY_HIGH_SHIFT) & 0x1; uint32_t dummy_low =3D (r_ctrl0 >> CTRL_DUMMY_LOW_SHIFT) & 0x3; - uint32_t dummies =3D ((dummy_high << 2) | dummy_low) * 8; + uint32_t dummy_bytes =3D (dummy_high << 2) | dummy_low; =20 - if (r_ctrl0 & CTRL_IO_DUAL_ADDR_DATA) { - dummies /=3D 2; + /* + * Scale the controller dummy field to SSI byte transfers using the + * direct-read dummy/address bus width. + */ + if ((r_ctrl0 & CTRL_IO_QPI) || + ((r_ctrl0 & CTRL_IO_QUAD_DATA) && + (r_ctrl0 & CTRL_IO_QUAD_ADDR_DATA))) { + dummy_bytes *=3D 4; + } else if ((r_ctrl0 & CTRL_IO_DUAL_DATA) && + (r_ctrl0 & CTRL_IO_DUAL_ADDR_DATA)) { + dummy_bytes *=3D 2; } =20 - return dummies; + return dummy_bytes; } =20 static void aspeed_smc_flash_setup(AspeedSMCFlash *fl, uint32_t addr) @@ -487,7 +496,7 @@ static void aspeed_smc_flash_setup(AspeedSMCFlash *fl, = uint32_t addr) * settings, let's check for fast read mode. */ if (aspeed_smc_flash_mode(fl) =3D=3D CTRL_FREADMODE) { - for (i =3D 0; i < aspeed_smc_flash_dummies(fl); i++) { + for (i =3D 0; i < aspeed_smc_flash_dummy_bytes(fl); i++) { ssi_transfer(fl->controller->spi, s->regs[R_DUMMY_DATA] & 0xff= ); } } --=20 2.53.0 From nobody Sun Jul 26 10:59:42 2026 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=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1783413365; cv=pass; d=zohomail.com; s=zohoarc; b=eVibgKnyoq6c/l1GbxzBqKRwUcMdUeG7l3WMwIhFsRi5VpjqIlco7qh9tLHvWbqFbeygwSo4YSpz2fnsBFrFZ4VlKbNjdduRPuFkow7YxXO12ZVvnVC9unMjnjleDXjty40WOCskEsyzcO9V6s6S7jUl8JJQbcEQPIbJzZC9NDc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783413365; 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=dWvs9s7sq85L72uhb9L9+IWPYobQcvvEI2EZ/k5tnhA=; b=kisigAyThxjuM1soz2Y61ru1jvNjdd6WNiK5vEmucuNa1t1cs7UWICbwD1aJlc9TFhSHpHQ94bPuSwAfeCl6kWp8WvE8LaRQf4wdUOchoq2GBE+GTrfe5Shz8lu8Q4n+c2BVdaNMCiT930Cwial319yESZN1S5rmRa1aJPaspNw= 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=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178341336512578.62853658649715; Tue, 7 Jul 2026 01:36:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh1Gy-0003pe-FL; Tue, 07 Jul 2026 04:35:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wh1Gx-0003p1-6i; Tue, 07 Jul 2026 04:35:19 -0400 Received: from mail-japaneastazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c405::7] helo=TYDPR03CU002.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 1wh1Gv-0008Pe-FZ; Tue, 07 Jul 2026 04:35:18 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TY1PPF1A8DB1DA4.apcprd02.prod.outlook.com (2603:1096:408::94b) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.13; Tue, 7 Jul 2026 08:35:10 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0181.012; Tue, 7 Jul 2026 08:35:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=i7nGaf9nXILo7s6DApIjkOYwtKWLmTu+F1V13DgewEpsadJ+X33fGX6JUVcLbaIqxYNsDTA/Cli6XeC/gIATnqkESJ7KUWsDWR5bfpX7kV613QtGTHDn9mQDljxDyV5Um+6UdzC+HBOJJSKVd5DzvRaVaI+o+pem0XNiHAqFKFOpOw77IpYu4m0XOvgsVqiC+USBhbR8Skjpe+cHju6TOD3vVJ5iU3KSIfTaVTG5kot8jh3QcAC+IsFUK89YaEw9CNYcQQ9TpKbDhDnK5TL6hC1jfF7N/Y6UY+jjb1zDNPhl6c51/v4wPVeausOUB0VEeKLFg2wUZ/edLFIjNov3sA== 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=dWvs9s7sq85L72uhb9L9+IWPYobQcvvEI2EZ/k5tnhA=; b=RbuyXkx/7dCaTG7byDQI1NeP9g0nXzYay1ClyA+ZQy6kwX6g8ZxkoW/y79Cc/8SwBQ5n1odcSPWqnUOaQ0Qzmg8do7PB4CTKIQlWx3JpwKYAaVUSrpY0rMRCJoqr1HkjllWjr7zDOuZs5tQI0SJ6FUgYixg/xab/nDpHXILP1ISOQdblWfbpQb70lFk0dzSmnzvLYnlajzA1zDFGs6FLg1J7j5zGxJwHcKP4LMHnDk7ijJiZPj4dErFSX1P2bgk64TAO2Gj9/UnSMfZGgsDfsnpHD3IVcIoqlR19G6fN9LTYT3IW3LR+cXTIOpWEbUi+sKfjPuEnHCyxNyvzszeqKQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dWvs9s7sq85L72uhb9L9+IWPYobQcvvEI2EZ/k5tnhA=; b=j8+gkCzGyhCGeDeoLWLUufwgofUrJIuXr0uJ8NLOOxKux7dGN6hWyXjWvT1rsYnMgGfdwjc1PWPCuVXd9jOFIwjzCktihTvHV7jO82oP73rUM4L5tXCFjp0kqFDUt8lB0R068ieawPoEazFGsbyBetl+xqv1ielSyzvQcWjEDrun4xzPlmLlkrfNbunvntUrdDmK0n+C0DtJjpShdskrLaUN7OeqmIY8fAd//VZGloipsu+9eK5z3JG6vaBxw/FrEcavPYUTF7yT0ZPbBk6Ansg9M9tzfDO5hGk/S3mx4P22eyLnI/N3CzdPf2qHe8rFK5pO/d7syoay46aZenj1TA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Alistair Francis , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Jamin Lin , Joel Stanley , Kane Chen , Peter Maydell , Steven Lee , Troy Lee , qemu-arm@nongnu.org Subject: [PATCH v2 08/10] Revert "aspeed/smc: Fix number of dummy cycles for FAST_READ_4 command" Date: Tue, 7 Jul 2026 16:34:27 +0800 Message-ID: <20260707083431.219671-9-bin.meng@processmission.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707083431.219671-1-bin.meng@processmission.com> References: <20260707083431.219671-1-bin.meng@processmission.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0106.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c4::6) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TY1PPF1A8DB1DA4:EE_ X-MS-Office365-Filtering-Correlation-Id: f30326d4-88b1-421e-7d33-08dedc02a809 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|34096008|7416014|376014|1800799024|23010399003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: fb01RylsLd0rXifIVbmkuacaLJ+0jQHfcg0MGasagM0Z/WJGXxlj99jfTodDDTxOXvcrBq/lb02Spk+1D+AoAt1a41o1GgzgJuulL6M/Skq5MC5azWrJBXTFNwd00MYFKemmrN5DfgG+gI3XJVdHJitEJGmXtoMb8Lx6FtxMIaMsYScvbCPLe4xPdJ1ysfGKDtw7atIEuhhGwitm6cuJSKruYDAKDhuQ1l7PXjRULPfFrS2XldAoXM/a5VCajWLhHDxAiFEYx7DBjdLA73KcewiaiY9ascXQa+3kAJxcSz6q3hgZievxriyqjxjHu+W8paU2gkYhMlnL5WkuFNCMCKTzrraZu5pAgAOArkc2IU5GD4KTuiSR8yDgWxqIQVajrI1KjlAk0v0GFD4Sa6nAeLmhsXDk0nDOyRp7ZLssJ6Il8UrauCVphMsgE2XszbRIgdvRC2+yw/320/pb+UsNCAP81eLM3ihwN804dRl17lQnAeqoOx/7Qj3XwyzOxTOUbScdzZFIY6EvOpmbVZFkEDrDnjc+Qal17sDvoTr4VgSOJUArprqfQUNLyNpez/3YQJ68Yc/iOJgI4AyFRsjf3OLImU+Eg5sxM45/A06SR4/za0kZhPzOUdPpzT7A/jcZMFBqwr14lqLXNm4UnRrL2P5QD9pQPh27X/cGynq79M0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(34096008)(7416014)(376014)(1800799024)(23010399003)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WktIZU41SUdlMW4vOXcxOFdQaHp2bU9qTndXenF3MmUyVjZZVGY3aHRyUGNu?= =?utf-8?B?YVVaaEZMeUNzd0JrVENWQ2ZlUElJNnZqY2dhVUV6QTg3S0M5aElxeEpOTGRv?= =?utf-8?B?U1pET09iOXA5MDRmaFRudElId1dvNkFkNTk4RXNaRUxORDZGN3FLa0tibTRF?= =?utf-8?B?eERWdXRiU2doeWFlM0U1OHkySVRONkk5QXM4MDVHdk8vNUd3RVVqbnI1eHAy?= =?utf-8?B?T015bHpHNmNiQ2NraGVpSjdrWDlkMXdZMVFTSi9adkp4RzYzTUJNU0lqMVoz?= =?utf-8?B?Vk85SkxacEphMjgxSUhOSHhVSDFXVWdyZUQ2N01SQm5TRHRqTGRMejFtZU5U?= =?utf-8?B?eDB5NDFVSnNQNEdCQkZ1amU2NEJUNXRHMkdsYzd1Sk92QWo2V0J6aXZEN1Rx?= =?utf-8?B?NkExeXM0YnVxajQ5UmhYYi9lK25NV1o0dFR4Q3lJNmdCNHhpQUpJZUVvYndB?= =?utf-8?B?bTdXQS9ra0o4OThFTjkrTGxUVFhSU1F2aTJTWEFybGVWZzk2Nnk0cFJTWTNN?= =?utf-8?B?MCs0MUtGbTlkR0ZGaXI1STlaekNXN3BYM21jbDVyY2ozM0IyL2ZDQnBQaFlz?= =?utf-8?B?TW4xMTlvM1NZL1VSK05kM21LUnVKMVpSRXB1RHZ6QlBBUDZDUUtwbWdUSVcw?= =?utf-8?B?MHRVSm93cjNyZmRFZUNNUTNvaGZ0cWFIY1M5c3VzYWdlS3g0OE5ScHp5V1dQ?= =?utf-8?B?a0ZJcFF3T3lja2Y4L3FtY2ZNVkhoVHZSclpIOTRnZVVMckVKemQzY05oZ0ps?= =?utf-8?B?S2JUOG1CaHptQncxWi9Hc2JPWEdka0pBNjl0cTV0V0RuNUNaaWtxZm85Tll2?= =?utf-8?B?QWhLdXFIQVZDeFY2NGVzU1grZGxDR2hadW94YjVKcis5aGtoSDZEN2FEQ2JU?= =?utf-8?B?b2l1Yk9TU0xicmJlbnJ3S3A5emtWZlJCc29oK3ZnS3c2L2ZMOUlnN1V2MDdH?= =?utf-8?B?Z3pxSFNhckRUSEhhaVNnMnFsemJTeCsxKzh2VkVmdVIrSGYvV0UvMnN2RUwr?= =?utf-8?B?WGlMU1lpRVIxMnBZM1dDSWJqMmx5VlRhMU9jcjJjWEVMRSsxSDRyeUNKMWRD?= =?utf-8?B?Z1JUTzY4UUlmdXE1NTlPYU1FY0FPaXdCWGMrOG9YcEFBdTdBUkVOOTlsclJZ?= =?utf-8?B?b2k5VkV2cFZVZ3NlN2VyWHN5OU1ja01pQWlVUjRKelg1d0lucWNVRFdrUEFI?= =?utf-8?B?VVBybUhhLzNNR1V1OWZOaTAxNmJyMjhnQm1tbWhkUmxjeTRuODVUVzQ2S09u?= =?utf-8?B?eUtRL25TdlZnOEovWGljMWRnV3lkNWhWWXdvZTEyUjBXc2JMV21yZlpyV05z?= =?utf-8?B?ZWFnZktXaXlvK2lySjZpMEo4NlhURHpPVThrR2dOdWdQMnJxelhKbDduSHZ5?= =?utf-8?B?ZERCTmt6UXFxM3k0WGhuS095TVRmWmlaZ29vcmx4ZFh3UjZsdFBlRG41dTEz?= =?utf-8?B?UGZBYm9hSzdwekphOXJ0YkIyeTE5YnBSNFNvZ0xXQ0cxMUtYZVRiSS9ud0lq?= =?utf-8?B?T3pCaE1VVlltNTB2bU9jc2JKa1VBZ0VKMHIwVGN5ajFiRWs5UDlQR29PWXhX?= =?utf-8?B?L1ZKUS9mQ1ZOSy9BdHErQkdpK2NkRWFLL2orNGRiRllGNHkzYWl4eCtWYjV5?= =?utf-8?B?R240eis3MDFGdThuQ05BeTB5a2dWcVBJbW1ycXpiVytCM0RZNFgvMG4xSEVT?= =?utf-8?B?NGcwSG9mV1dFOWY1VWdaVnVDS1prbjVxdzU2amovclVqUExUQU1VU1lSelpQ?= =?utf-8?B?SmJEUUhyZHRZYzhpOHFVVHBEcjNiU3RjUmZ2YW93RVU0RGQra1RQZS9sVTBV?= =?utf-8?B?Q0pOWC9uUldsRktaMHhmdTRQZFBsT0J4N1Y4bmV5QWlpd2RBMS9UT1RvN0l6?= =?utf-8?B?NUZDc0ZFYlF4S0VTRWNiMVE5Z0FGL1o3eG1Ta1lTVHFLajBTVEdPRGYzNTA1?= =?utf-8?B?dVVkZkp4VWp2Z3JCRGRQMlFZZCtiMm5lNWlOWUZoOHg0elFUUFNIeTF2SnpR?= =?utf-8?B?WVoyUC9oakY0WlNTdG5Pa2JXOGg5a1o3MUdsR0ovYWQyUG9Odkl2aGloME1o?= =?utf-8?B?WVZaK1VtaHl2MU9DYWluUE5VcTZRc2toVE9ON05IbTZFR2Y2Wk85ek1jTUtJ?= =?utf-8?B?V25CUEI2eHpCRkxpN1ZXa1VYVWdaNC9udWlGbXk4LzdzNGhQdGFxeDVSeHFa?= =?utf-8?B?dERpaXRIcW5vbWxIS1ViS1ZPWHhUekdhTVVSdmVTZXRqQ1kzSjdUcTVkQ1Va?= =?utf-8?B?VlByMDVpTDFOeEcvMDVtTnhjQU81Z3FKazgzREJjVFZPVkVmWURSWjk2OWsv?= =?utf-8?B?bGwyUU9STUtaMER1bjcyTDc2SVBJdHY2dU5oQ3JqZkw4YytqNU5uNUt0S2Z3?= =?utf-8?Q?2jGNPO1gSoHL0pMU=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: f30326d4-88b1-421e-7d33-08dedc02a809 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 08:35:10.2119 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QHVnG5SK+hNmXkQ09k7+wCVhApR248NVlVznPddZMmuY/YgAA1rLmpwKn+fJRsmKNeJKdYAQKZ1dLFb4Ozjo4U4d5GiOJ3pzoo2yo40TPFY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1PPF1A8DB1DA4 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::7; envelope-from=bin.meng@processmission.com; helo=TYDPR03CU002.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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 @processmission.com) X-ZM-MESSAGEID: 1783413366326158500 This reverts commit 7faf6f1790dddf9f3acf6ddd95f7bbc1b4a755d0. The incorrect implementation of dummy cycles in m25p80 model is now corrected. Revert this commit. Signed-off-by: Bin Meng Reviewed-by: C=C3=A9dric Le Goater Tested-by: C=C3=A9dric Le Goater --- (no changes since v1) hw/ssi/aspeed_smc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index 3f957d153f..58e5087b57 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -568,11 +568,11 @@ static int aspeed_smc_num_dummies(uint8_t command) case FAST_READ: case DOR: case QOR: - case FAST_READ_4: case DOR_4: case QOR_4: return 1; case DIOR: + case FAST_READ_4: case DIOR_4: return 2; case QIOR: --=20 2.53.0 From nobody Sun Jul 26 10:59:42 2026 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=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1783413388; cv=pass; d=zohomail.com; s=zohoarc; b=UtSHWOxkSiSe8rmXZrVWMP9aTdRYDxxqPHoKm3k/GmIlxGpZurBUMFmd8ad/NC57UtcGFQVTkjdL47pE7A6dZio4S6FxHc2VTiSfdKkX4GKEzSfPf0J7hV/u6bao8yLKSQyrOLczz+TNyVjyrQfe9SkQrKDClDw3gmCKZvzrJZ8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783413388; 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=x1w2aeUCGKqCAr5MuxiRUuc2L2LaMbHCV5Fuutid9E0=; b=TdRTj9Z68FhTR2na7/Q0ZzQ+6HYQw9dmC/uzknspWFuzZTtRVzZFrBa8nf7CnaculrcABar2/4oxp2gjCaz+6rtarM3vO69lqeA+vQWpeTig89OkmIlqrQR3pQwCaHAwXOuRZEyvw7lQwm7Rb68xpRikS55CJXIY7FzBSAYWuSY= 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=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783413388570695.9084825224849; Tue, 7 Jul 2026 01:36:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh1H2-0003sn-Hz; Tue, 07 Jul 2026 04:35:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wh1H0-0003q0-7a; Tue, 07 Jul 2026 04:35:22 -0400 Received: from mail-japaneastazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c405::7] helo=TYDPR03CU002.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 1wh1Gy-0008Pe-93; Tue, 07 Jul 2026 04:35:21 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TY1PPF1A8DB1DA4.apcprd02.prod.outlook.com (2603:1096:408::94b) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.13; Tue, 7 Jul 2026 08:35:13 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0181.012; Tue, 7 Jul 2026 08:35:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=r1jhgsS2vyrocg3eRZ1A8KOnTVUG2Mg8AtD3vIpCkQ4ToErZfn+94YPTQMBPauk6A1vjdn+pmRn0IcEvgRBvnABankX2VUo40hz1voyGfeM8lzRlxVb4aIEaFrLFt3QdtEavXuPmM9KjTX4GasAcqX4FroPZfLk+ggGTlU3W/iDrFxqAHXtjw8GvUfX0yMTtv1DDMI8HuG0Bz4FMHOHl08x3DiZvE6BMP2xh3yPEmPeT8H96WOxEB6ZKCFnaNyNB0C2uyF+/a0nxPd/Yfu5DUI7pFUYrxF/zwMjNhsnE0JFfc7ukW3482T072tE25pzeKnp5qMPByJtYkWF41nPiHg== 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=x1w2aeUCGKqCAr5MuxiRUuc2L2LaMbHCV5Fuutid9E0=; b=S9221LXJ5bAYKTKhvksjducxCKkgc6i46dZSIMuFDe5YS1GkgA6ET2NCte9jNbcep1n/8zRnzqHdEH467mwf+0pH3PuAYT4UK8rNDXg8nyC4nyCqHOIX0yRsJlic/77mDcKSwE/LMbn9Xc/KaUIME8vE8DNOfZ5SZu32M9qHaYEwv0I5FCFnvTjAc0RypTqmG5U8qxPUDEg2w2XikQjo+Zu0Qrbi1trtfu7TCNJ3RoXIu4lDWODyemPodsKjwXl0/ipDMlejTREepTrg1rpY2YTYKjSsvEaxV3PXBxJ+oSY0QtWebDh1lwn1R1p6XYtVWYMPhRaJx6e/Op5cSpweyw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x1w2aeUCGKqCAr5MuxiRUuc2L2LaMbHCV5Fuutid9E0=; b=lC7zF/Al0byA4gbHdUGE/0HLmXDKORjevAbqPbq++VroVpsMnbS1WGJMSyQNjs6j7IcY3RsCZwvLh5dt1LTy2NMPj92vzs3jSXtBBk7/aAxBti00WJuXp3y29WlzzbuaeumSjc/w8gJ2lQ0RzXmG9yrsqBMSAiCZJG5HaGI9ncwIB1T8MxVztiaEfpeiFTQEQ6K2PXGsHt7uXygLjSeIcFmR32BMlx08chI8YBnUAlMzd8dWm0UYCDmxKvWWYbh62h/rk0aWLK0es7SbzQlmmGQlJWEzN3QKjrUcDumYg2S6eniIXPYQvJ+GNW+pkS3DA+VwcPijxGpX8kSvI0xnBw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Alistair Francis , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Jamin Lin , Joel Stanley , Kane Chen , Peter Maydell , Steven Lee , Troy Lee , qemu-arm@nongnu.org Subject: [PATCH v2 09/10] Revert "aspeed/smc: snoop SPI transfers to fake dummy cycles" Date: Tue, 7 Jul 2026 16:34:28 +0800 Message-ID: <20260707083431.219671-10-bin.meng@processmission.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707083431.219671-1-bin.meng@processmission.com> References: <20260707083431.219671-1-bin.meng@processmission.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0106.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c4::6) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TY1PPF1A8DB1DA4:EE_ X-MS-Office365-Filtering-Correlation-Id: a27b6148-31c3-4499-9943-08dedc02aa01 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|34096008|7416014|376014|1800799024|23010399003|5023799004|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: GLivfzo8orlyu9xkv7GnqKmnomg89hDhTZP7Z2prHV858tL9NJdfvTZE4E6LWpvBSgQ9bMWjGiqI7fYkhlrfCUGLpNywzY91Y1FewCjctnCsyM6keprXiQ612A6PTMalsHFuQbGReGHc9ZQDpOOJDyJ1goOadLhComvJvRLKBBGs/W+Rm1KOx3qFKZlIc8wxKq+QLHB8fNmQX9echva9fWs+VsWNN8SefnwFWXxOH2esdyGgcU50ZDJ+JyoRPMFHMudrg4ZdCjFlpzhkGKjW6UrhZijvMXDMRGe85ZAuzI5vEE4/M1CcpT9+ZlPTPS2z1vmZaYD776pjyQK4LVGQrhLkQcg9A7XEgXmTm0Kqvh4OrcyjYWBofRWSRWQn+00CuXazoSIV24Y/Y2wj3rRmnQ5hRD8FKnaXyUx9g+MtBFcIQyvsHylzjuWmy5Li0NG+gGecKxytCZWZSjysAmDVfgHUZs+8w/gFBZ7xgAiizsheJ6+Z2jhSsbFKKCdMopw8a3banGqhIHelKH/WrbcTfrUSaM/0MPXIZWs2Lp8/EjSp9NzBtWvYfmwrd/gQPYXNBdvcxHC7hBe2IBhsZO2KDJ3VATAoPDZa2aRd/i21tBvK7reEI2Sa++EqSsuT/nP3n2m0a5iWOA0FKm/wwHNIeRQhmeJw+H0AFlyqbbrAipY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(34096008)(7416014)(376014)(1800799024)(23010399003)(5023799004)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OE45NFlRTGI4dDNsRE9ycEY4ekZ6dlVhVUM0ejc3c0l3K05TRkxrM0RyalFo?= =?utf-8?B?S0FyYUxzMk44WXBreGpKQmdQWHU4cWE2SVhlbndKc1FPWCtEaU9FejRuYmtR?= =?utf-8?B?bGlvbDdNNCs4dEpZZWhZVldmUEh5eEJqREVYMDIvTGxBNE9NOUVkeXNBdG9U?= =?utf-8?B?UmpHVUpSZjcvM0loNTZYdS91QkdUbEdSRDluY0VRTzlUZ1o3bC9TRUp6ZFgw?= =?utf-8?B?MHMxU1U4MDhZZlRvSUI4OXpuM2x1dTlvK3dZYmdtbHVNcCtLbm5aTVoycGdD?= =?utf-8?B?YXA5WEhMNUdZd0x6eWNoQThYTGpHODNNQVA3aStSSFlCdDZTUU9MT3lOQ1M1?= =?utf-8?B?WEhPVUdtS1JPWXRsalRZNmRiODF5MkIvTDVOZk01K1IxY3FiWDN4aENVbVVC?= =?utf-8?B?UWJBeEZRVFE1dE9CVmd0cU5lMUFudDhTdjg4cUdRbnA3STRLTWgzWjdWR2M1?= =?utf-8?B?V1BRUHFXYjdodGFQbGtRY2R3WXJYYXBFdDZPS09LQ1l3QzJRdHh3SWpTc3NG?= =?utf-8?B?aTRCZ0pWQ21kbFNaai9MdkNPeS9RY3Z6d1ExSDhuWG0vMW4rZ2FQM2crVnFS?= =?utf-8?B?UUVvUmY5MG1LVmI0WWlmejlKRzBJUjVTbmhYWTJ6elBBV293YllXSGpZNXhj?= =?utf-8?B?cUpUYlZNOXFFdThaeWR4TWgyeVRaLzFVQjR4YVhob3R0N2ovTThtWmNPVFgv?= =?utf-8?B?UTRkVGc5UDNKOGZZNVY0KzBoM28yaEpCL1lRdDdvSXlkMzU2NW1PYVJKdGln?= =?utf-8?B?WEZtdXZ4c0hKOWFXT3czZ3VkRGtVV053OGtUazRSd3ErZ2ZYSGxzRUg3ekpk?= =?utf-8?B?MFBuM1NFNXdkTllxbG9kcVcxWFBidytQTjYxa2F2TG1icHhSZGJtN2pmeWdp?= =?utf-8?B?WTduTXBhTXJqUXhIaGdycmVzRVJzS3p4N0ZYNCs4YXVmM01qb1ErTDE4SkF2?= =?utf-8?B?NCtpUjgwUEFZaVd4UEplTVM4elJmVzMxOXRSd3V5WE9yM2tXYzJYbHVxYjdW?= =?utf-8?B?MXdtQ1BhOGE4WXVYVjdGbUxJWkVuV0NINWhCeTBkVUxtbTFxWTFCZGc3RXhu?= =?utf-8?B?aWtCLytqWjlPejdxdldFYTNSYnUrcDFzUnBzaFR5elo3UlpFV3FFK21sUXFW?= =?utf-8?B?cXdDVCtqWG9nMWhYekZDeXU3OHlkKy81ZjlvcnJ4YUJZdy85aE1GRHZXeXM3?= =?utf-8?B?Q3kyNktzNEdtTmFYSzhIUHIyaENaMUF2UkliazMxVEUwck9XYk1WeForOFgx?= =?utf-8?B?RzdYeUF2czhYRk42OEZOeGo3Sy83QW5NRUN3SzY2Q29qN2dIK2kwbXJtWktV?= =?utf-8?B?YzMvWG1URWlZdEE1NklYQW4ydXZxUWV3cjd6NktsbkNyN3k5ZDJ5aUFDQ3Nv?= =?utf-8?B?V1UyK0NKWldTZDBKTk5kWThnODFZQldzSkIyeUIwK1p6ekRVM2loV0dBRk43?= =?utf-8?B?Zm11YjJhZ083RnhHOCtoWXN6RW90SmU5YTJhWjUrVnFVVzhhNDNTTTRoRksy?= =?utf-8?B?NEpnOEw0eEwzSHVBYjNXNUd4TlVkSHRuVzFEVjNlbmNhQWcyOUV3dEgyaysy?= =?utf-8?B?L0txalErY0VEVGV2bmxxSUlJNGJCUCtpUzhyK0E0a29TZUZzdTYrTitWSktW?= =?utf-8?B?eXd1MURyOFZkVGpUQ1N5Z1JPNHNOa0lVSExndFlLYTB0NFo1YlM1S2dHMWZ2?= =?utf-8?B?ZWtGUmVxTWtIOUI4WjdIbzlKazR0R0Zmc3VGTll0cEIwQ29hbWhXb20xQmJi?= =?utf-8?B?QStGaDhTS0xOenFzTVZtdmczS2FnY0ZWYWxuemZyYjVHNUNUc3FtTlJYV09u?= =?utf-8?B?NXRPOHdGWVFwbCtwMmRQQm1zazlQeXI1OUJ6bS94ZTZBUTFudGFaUjJ1ZjZG?= =?utf-8?B?OXdRUlhsd2ZvcEt3VzdYV3lWdGFVNG1hZGVzWm9RT3RlRzRLd2ZNcG5XQVZq?= =?utf-8?B?WEhhN09abkFUMk9RYjUwSUgyaUVZeXE4LzRWazlmdTZGZG1laGh2a3d5QWJH?= =?utf-8?B?d1FjSW9lYkdWYVpNZUZMMjJFWElBTmI0THpHYWtJN1czU2lYTUFYbUZPR3dZ?= =?utf-8?B?aWJoejVlYUVKazhiZnNrRzJ4TEJ1SWhwdWJOazN4MkhMN3dMREFMcWdFbnNO?= =?utf-8?B?c3NFdHhKdm1xQlRvOXppK1AxRUkyaGpOaGJvYWdOZ1BJdGp6enhFcHErQW9Y?= =?utf-8?B?Qms4RDVOSTNvZU82RlpiR3ZxUHhreFFDaVJmOGVKQzc4VXlnL014ZnQ4N2dV?= =?utf-8?B?dHo5Wnd0bWZkTjROVHBJTGJCNkdxY3NoRCtvSlNiVGo1STlYL3AwdWI5SVRi?= =?utf-8?B?eElxN29vTTJTaGNoaVRHdnpkaCt6MGRXZnExb3V5RG5XMllXZlAzWERjemdn?= =?utf-8?Q?bgdKbFQruv2p0A4I=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: a27b6148-31c3-4499-9943-08dedc02aa01 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 08:35:13.5666 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ob27UzEen3LrJJySNf6EyBvPUHQxRuVGadRWuDiT2kj6f4VETEVX/DDF1QSOFZR6obIW929HZvJbRaCHYGJL2Y5x6nEXy9m2Y8nsMbZOMTU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1PPF1A8DB1DA4 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::7; envelope-from=bin.meng@processmission.com; helo=TYDPR03CU002.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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 @processmission.com) X-ZM-MESSAGEID: 1783413390426158500 This reverts commit f95c4bffdc4c53b29f89762cab4adc5a43f95daf. The m25p80 model now accounts for fast-read dummy bytes in its command decoder. In ASPEED SMC model user mode, guest software already sends the complete byte stream, including any dummy bytes needed by the flash. Hence the model should just forward exactly the bytes supplied by the guest without the need of decoding guest-supplied flash op codes to inject extra dummy transfers. Signed-off-by: Bin Meng Reviewed-by: C=C3=A9dric Le Goater Tested-by: C=C3=A9dric Le Goater --- (no changes since v1) hw/ssi/aspeed_smc.c | 114 +----------------------------------- hw/ssi/trace-events | 1 - include/hw/ssi/aspeed_smc.h | 2 - 3 files changed, 2 insertions(+), 115 deletions(-) diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index 58e5087b57..c8cc6cfa56 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -197,9 +197,6 @@ /* Flash opcodes. */ #define SPI_OP_READ 0x03 /* Read data bytes (low frequency) */ =20 -#define SNOOP_OFF 0xFF -#define SNOOP_START 0x0 - /* * Default segments mapping addresses and size for each peripheral per * controller. These can be changed when board is initialized with the @@ -537,104 +534,6 @@ static MemTxResult aspeed_smc_flash_read(void *opaque= , hwaddr addr, return MEMTX_OK; } =20 -/* - * TODO (clg@kaod.org): stolen from xilinx_spips.c. Should move to a - * common include header. - */ -typedef enum { - READ =3D 0x3, READ_4 =3D 0x13, - FAST_READ =3D 0xb, FAST_READ_4 =3D 0x0c, - DOR =3D 0x3b, DOR_4 =3D 0x3c, - QOR =3D 0x6b, QOR_4 =3D 0x6c, - DIOR =3D 0xbb, DIOR_4 =3D 0xbc, - QIOR =3D 0xeb, QIOR_4 =3D 0xec, - - PP =3D 0x2, PP_4 =3D 0x12, - DPP =3D 0xa2, - QPP =3D 0x32, QPP_4 =3D 0x34, -} FlashCMD; - -static int aspeed_smc_num_dummies(uint8_t command) -{ - switch (command) { /* check for dummies */ - case READ: /* no dummy bytes/cycles */ - case PP: - case DPP: - case QPP: - case READ_4: - case PP_4: - case QPP_4: - return 0; - case FAST_READ: - case DOR: - case QOR: - case DOR_4: - case QOR_4: - return 1; - case DIOR: - case FAST_READ_4: - case DIOR_4: - return 2; - case QIOR: - case QIOR_4: - return 4; - default: - return -1; - } -} - -static bool aspeed_smc_do_snoop(AspeedSMCFlash *fl, uint64_t data, - unsigned size) -{ - AspeedSMCState *s =3D fl->controller; - uint8_t addr_width =3D aspeed_smc_flash_addr_width(fl); - - trace_aspeed_smc_do_snoop(fl->cs, s->snoop_index, s->snoop_dummies, - (uint8_t) data & 0xff); - - if (s->snoop_index =3D=3D SNOOP_OFF) { - return false; /* Do nothing */ - - } else if (s->snoop_index =3D=3D SNOOP_START) { - uint8_t cmd =3D data & 0xff; - int ndummies =3D aspeed_smc_num_dummies(cmd); - - /* - * No dummy cycles are expected with the current command. Turn - * off snooping and let the transfer proceed normally. - */ - if (ndummies <=3D 0) { - s->snoop_index =3D SNOOP_OFF; - return false; - } - - s->snoop_dummies =3D ndummies * 8; - - } else if (s->snoop_index >=3D addr_width + 1) { - - /* The SPI transfer has reached the dummy cycles sequence */ - for (; s->snoop_dummies; s->snoop_dummies--) { - ssi_transfer(s->spi, s->regs[R_DUMMY_DATA] & 0xff); - } - - /* If no more dummy cycles are expected, turn off snooping */ - if (!s->snoop_dummies) { - s->snoop_index =3D SNOOP_OFF; - } else { - s->snoop_index +=3D size; - } - - /* - * Dummy cycles have been faked already. Ignore the current - * SPI transfer - */ - return true; - } - - s->snoop_index +=3D size; - return false; -} - static MemTxResult aspeed_smc_flash_write(void *opaque, hwaddr addr, uint64_t data, unsigned size, MemTxAttr= s attrs) { @@ -652,10 +551,6 @@ static MemTxResult aspeed_smc_flash_write(void *opaque= , hwaddr addr, =20 switch (aspeed_smc_flash_mode(fl)) { case CTRL_USERMODE: - if (aspeed_smc_do_snoop(fl, data, size)) { - break; - } - for (i =3D 0; i < size; i++) { ssi_transfer(s->spi, (data >> (8 * i)) & 0xff); } @@ -717,7 +612,6 @@ static void aspeed_smc_flash_update_ctrl(AspeedSMCFlash= *fl, uint32_t value) s->regs[s->r_ctrl0 + fl->cs] =3D value; =20 if (unselect !=3D s->unselect) { - s->snoop_index =3D unselect ? SNOOP_OFF : SNOOP_START; aspeed_smc_flash_do_select(fl, unselect); } } @@ -763,9 +657,6 @@ static void aspeed_smc_reset_hold(Object *obj, ResetTyp= e type) aspeed_smc_flash_set_segment_region(s, i, asc->segment_to_reg(s, &asc->segments[i])); } - - s->snoop_index =3D SNOOP_OFF; - s->snoop_dummies =3D 0; } =20 static MemTxResult aspeed_smc_read(void *opaque, hwaddr addr, uint64_t *da= ta, @@ -1293,11 +1184,10 @@ static void aspeed_smc_realize(DeviceState *dev, Er= ror **errp) static const VMStateDescription vmstate_aspeed_smc =3D { .name =3D "aspeed.smc", .version_id =3D 3, - .minimum_version_id =3D 2, + .minimum_version_id =3D 1, .fields =3D (const VMStateField[]) { VMSTATE_UINT32_ARRAY(regs, AspeedSMCState, ASPEED_SMC_R_MAX), - VMSTATE_UINT8(snoop_index, AspeedSMCState), - VMSTATE_UINT8(snoop_dummies, AspeedSMCState), + VMSTATE_UNUSED_V(2, 2), /* was snoop_index/snoop_dummies */ VMSTATE_BOOL_V(unselect, AspeedSMCState, 3), VMSTATE_END_OF_LIST() } diff --git a/hw/ssi/trace-events b/hw/ssi/trace-events index 2f36cf96b8..b9d8648297 100644 --- a/hw/ssi/trace-events +++ b/hw/ssi/trace-events @@ -2,7 +2,6 @@ =20 aspeed_smc_flash_set_segment(int cs, uint64_t reg, uint64_t start, uint64_= t end) "CS%d segreg=3D0x%"PRIx64" [ 0x%"PRIx64" - 0x%"PRIx64" ]" aspeed_smc_flash_read(int cs, uint64_t addr, uint32_t size, uint64_t data= , int mode) "CS%d @0x%" PRIx64 " size %u: 0x%" PRIx64" mode:%d" -aspeed_smc_do_snoop(int cs, int index, int dummies, int data) "CS%d index:= 0x%x dummies:%d data:0x%x" aspeed_smc_flash_write(int cs, uint64_t addr, uint32_t size, uint64_t dat= a, int mode) "CS%d @0x%" PRIx64 " size %u: 0x%" PRIx64" mode:%d" aspeed_smc_read(uint64_t addr, uint32_t size, uint64_t data) "@0x%" PRIx6= 4 " size %u: 0x%" PRIx64 aspeed_smc_dma_checksum(uint32_t addr, uint32_t data) "0x%08x: 0x%08x" diff --git a/include/hw/ssi/aspeed_smc.h b/include/hw/ssi/aspeed_smc.h index 76831422c6..a273365689 100644 --- a/include/hw/ssi/aspeed_smc.h +++ b/include/hw/ssi/aspeed_smc.h @@ -80,8 +80,6 @@ struct AspeedSMCState { =20 AspeedSMCFlash flashes[ASPEED_SMC_CS_MAX]; =20 - uint8_t snoop_index; - uint8_t snoop_dummies; bool unselect; }; =20 --=20 2.53.0 From nobody Sun Jul 26 10:59:42 2026 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=processmission.com); dmarc=pass(p=quarantine dis=none) header.from=processmission.com ARC-Seal: i=2; a=rsa-sha256; t=1783413361; cv=pass; d=zohomail.com; s=zohoarc; b=IQUSxtVug2jbjQyBQBCFLf1cDGlKvSjY0f29KEIsC56oTMjIhPXL4hyCN2IQM7xW9JFb8d4zDnnLC2Mr0YkgvmrcVh3krNf3yVAHhQoeNkieZun6agQI5jnpqgjouydxjMiY4Yiq5kJpskfwHVhuDrythXa+d/gP/9Rsu19Zyn4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783413360; 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=86KgJ2qKJCxRSWCvwXT1qg8FQtRX7fmRFjYj1NIiPdE=; b=kJ/DCc+RpCDskIpdHiR0X/1ocbJlS/iujEQTeTK+jt7p4FErgyM1afxl7U34WZfMy5YFb5G80RK3hK1E8ErvgXOi0HCiRDSB6DReNOZbyGAdDkrljAod3Ps/EETbCI7kkWyxjZrLmTVcq2cDO9Pat7sDnCn3Fujulz/vsrXTTwM= 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=processmission.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783413360984570.0668197621495; Tue, 7 Jul 2026 01:36:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wh1H8-00045o-8D; Tue, 07 Jul 2026 04:35:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wh1H4-0003wz-FV for qemu-devel@nongnu.org; Tue, 07 Jul 2026 04:35:26 -0400 Received: from mail-japaneastazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c405::7] helo=TYDPR03CU002.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 1wh1H0-0008Pe-NK for qemu-devel@nongnu.org; Tue, 07 Jul 2026 04:35:25 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TY1PPF1A8DB1DA4.apcprd02.prod.outlook.com (2603:1096:408::94b) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.13; Tue, 7 Jul 2026 08:35:15 +0000 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03]) by KL1PR02MB4977.apcprd02.prod.outlook.com ([fe80::9fdf:2557:8351:6c03%4]) with mapi id 15.21.0181.012; Tue, 7 Jul 2026 08:35:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IhMwSajFC+cMxE1InYp6krmpUD/pEbq8naeYpY6F8L+OgYwnH1LaVbtKh3+YzrvOhhodLQ23AA2XxQrGg5U70vSRjVVL6YbO3ScdXmy/R43fi84T2YydkAPXGpStH6SbPvc2dF1SwmLbE2SUEQcPeiFD3p59avwg6etqygeTnM0odoY5NZpAGODGoSa1OhBodklJ5Llin2H01PTdoaQHnteG90w1m2iQbcS75X49nFvXXMMiRwXwsMXMLR/hLT1acv/6FILJMW2Uhmp+gE0Dzr/B0IgBWjXvHHQd7fYSaAbm18WHdt6GGUpyT9377ugklHU/Cz+HImyjk4dLhOgHrA== 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=86KgJ2qKJCxRSWCvwXT1qg8FQtRX7fmRFjYj1NIiPdE=; b=nY6nms0bmbdosNS/SY4u5DCaaAhjLr9jEPuSpGFxR5jMMb0gzQauUa+htFGGOgSWie9Rx6L0lgnMH1hTNFDMT2ki9JP8irHXkpv/2AsT5RTB5OXnlnO0mNbNT6PDp8WnDq6TperQLjeEi2ivi9vLIs8QEqOgCCMsXFkNrwVfxcBIMAJlUA0iGqZCN3uJyTGjSCS3nP0D7XMlmXMvoNFMhXT0JvUqQNJFq9wUtz4VO3oSAg01+KBZpaVGTrxIGrrDTwR2p7bXJS4vwdQ3ZkKWEuu5H/vB2sF3QsrIljCWQVSsfl+X2PLyMRWO8uxdbmEmvkHq1pd705ViiOJx489ECw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=processmission.com; dmarc=pass action=none header.from=processmission.com; dkim=pass header.d=processmission.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=processmission.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=86KgJ2qKJCxRSWCvwXT1qg8FQtRX7fmRFjYj1NIiPdE=; b=nPfIA51azPylMm4Lbvtg5LB8agTnBzhkYDseDS4zUewltSBVhrr6qCjlA9CeJNYbrVFAeCgJ6JnNeOTflR5C7RcEbFqQoKfHW2bZvpsMiZswEEuI9R+4+WiIE82/ln/8g4G7VYcA4bUpsdGkUyZ/BPcwaC6wMYv6AjLSIv6F8vSDtC8UOSR9sYLS4uB0+kbnXCddKxh6IfCjlgi8QCsd/xWYdjEa9P96jezNI/ijMzbflZfKF5kKHODZvOHboWjMXA8jQMO2xrJ0GUMOwOFWO6fn2kKksareUOsa9MrYRlFwQpkew18uCaiAg/vWRXK0nAF4ZqoCpau+zxo6q0Q1BQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v2 10/10] docs/devel: Document SSI dummy-cycle ownership Date: Tue, 7 Jul 2026 16:34:29 +0800 Message-ID: <20260707083431.219671-11-bin.meng@processmission.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707083431.219671-1-bin.meng@processmission.com> References: <20260707083431.219671-1-bin.meng@processmission.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0106.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c4::6) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TY1PPF1A8DB1DA4:EE_ X-MS-Office365-Filtering-Correlation-Id: de06abe0-490b-4ff2-e1e8-08dedc02ab0c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|34096008|376014|1800799024|23010399003|6133799003|56012099006|3023799007|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: hwoaNDyp9mnnyzB8F7qFGS5QE3EZ0PS2WncheeT4dzGAp+zUiLliO8qByx21Lf7J6XO1Q6HZhIRTgvDqR4Dwzjvov6Pb6bDcAAgYQ/DHHjeptj3/+woc5RX2I8A5yVjzjApbdDIVc1SZCepN1vY/v6P1E4hPVc/jYRcgLSmQi4aYLwOTyhr2f9temgl2yuzTam+aNUUocgfOwmBi6dPVXnkcaX5MVVKZvW9UmwF9JdxkPphUTxdARNIzeXuCtwt69e8lN6W7URkXwz86O724EkDAn4bpbRTnUkQPWrhWJIOuLgn1wSVputdvA5eQw519cmVbopg5IAefiISymkuVNch4GJiDzsb+V+ix3EqUfXeNDQvl0+baItmRwVTFCzcfXpPY31uhtZQ2UOLRKBcAbIVigtzyfmIPl7b9bR8nfZ5NCcs4+0kCFwQnx4jnUw7CYLtkpfJXrEoSQbD6HgcCNg9pwdKXEwtGuUWaK+wbCqcmapXcQpm+v2BoAACRP9CCwTJTDCRhWTo4QgAuWw8CfXfrqyCmsSJTvpt7NXUMBv3HtWsIhi17h33ZMm7MLmWUNNw+mTknJw7mSu+WR31zH0FIgd43rCnhkcqJVngNhL16xULiR4a/mQhLQ7+8gEtIKV/LYyx4WI0V/jhYrRmkJ/9zSKHRNeUsgtjzH4rAWKM= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:KL1PR02MB4977.apcprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(34096008)(376014)(1800799024)(23010399003)(6133799003)(56012099006)(3023799007)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NEtDL2ZWR053NE5rZjE5RWdmUHI3WjlyU09UbFRESVJVRGp2eC9oNEZ4SXpE?= =?utf-8?B?SjNham1MdzhCRWFGV3ZQTlFFbXZSMzlUd0krcWZwZWxmTjNnb1Yxd1ROVTBC?= =?utf-8?B?R2grcVl6U1ZDWTVZWkNqNFU5Ti90aU9iQ2hUUjU5NURVdndPVzlBWSs0Nllh?= =?utf-8?B?cEM2TFdSWFF4TG1uSUNKb2d2MC9KZWxGamJUTnpMcXFQUFhpNlVwUC9DU2JZ?= =?utf-8?B?eExYRkZQaTBDTEw1REpNLzJGNVBaRDFucklvOXRWMkFLeG9rRlNRaXpRSmhq?= =?utf-8?B?M096Rit2cUxuRk9pOWJ3bVJTV01JZC90ZzVxak05WkRqL3kwTXQ2TFoyL3Vr?= =?utf-8?B?QWZ4MmVhZXNMWXR5YTlDUmZlM1ZFVk9LZ2pTb0w1OUVFK29jTUd1UWxld2RT?= =?utf-8?B?bjdRNEZlcUpSdzZ5KzR6WnNwcmFuM1kzRjhRWUNrbm9OcjAxMkNKaEN1eGJZ?= =?utf-8?B?RGlFd3hkZjhLbFdhL1dVbGc3bGZJOWpmQlY4cFFSKzI4YnJRazRPdGxQZ2RB?= =?utf-8?B?ekVURkNCUUZWN2Z5aGRPaEJEdkhZcHZBeVVmdE5YQVhrSlh0VEwySVo3QTJR?= =?utf-8?B?YVpZMTFXajhJWThPZDl1S1JEQkdNSmt0U1BFSGpndXk5VzhhRFBNRTNYQnQ5?= =?utf-8?B?OVBYNlhzdWFjYzdsb21QUHlEc1AzbVg1MkVDeDdCT3UxOHF2Ym52bGZGRDg3?= =?utf-8?B?VWpLYzZUVnZqZEVxMmhDU0tJUzZXa2I4RkVtNUdMSEVpcHNQaHkzRjl0aTFs?= =?utf-8?B?TEw5RCtUL0x0bnJjVGhQZG5KWmgzL1dFY3QvcFAzd1RUcFdlVVRsZzBVTUlH?= =?utf-8?B?dC9JdzBQUHFUeEVKdjlOUmk4SzlvSytNMG9JbzJ6QktId2lXeUlpMWNWcTUy?= =?utf-8?B?cVErUVdTbkd4NjFjbzdkVlZKQjZXVWhiMThnOEJqSUlWaW5wZzZuNk45Tlht?= =?utf-8?B?WVdSalREYkpLRDNrVXFUL0IzNmlGd1JrYkdjVmdheHMxRnRTNkU4Qk5tV1Q2?= =?utf-8?B?QXZ6Vk5TN2x0eDhZMGVuNFpQam1KSXBDRitvVWFpUExFRWNVVTB5UzdXS0x4?= =?utf-8?B?emVGQWFYaVMzWTl1V0tlVXpacHJPR0puL2ZYbjBoZWFHNDh1QjlnOHJOeXM1?= =?utf-8?B?L2hjWlJGYW5BSkJkTTlmajUyTC9QcHBtT3VDcFJJK0pqM3R5RFowN1ZGdXh6?= =?utf-8?B?YzRtdzZCTFQrWmFKUktad2ZCOHU1d1ZuQ0F3U3QwUE92V3hsZUNIamx6VVJs?= =?utf-8?B?YVJicWF4NUt5eXRhTUtSWlJ3Z0lYN24yQWJtcEVNUWU5TDdBaldEc3FTb1Vp?= =?utf-8?B?VVhhMTd0UVdkcnEyL3phZjVabXNza2dqeHRaTWhxcjY0NUpHaTdPWGljU20v?= =?utf-8?B?aUFJR0FkQStnTUtMOG80SFhMRElObnZ4Z2E2emFKTVdwcHZSQ0VSeUVieVMr?= =?utf-8?B?TGo0SkRETnB1SmZ4RHN2bjY3Y2NkbHI2U2dTU2YySWVBQ0lzTlFNL2Jac3V5?= =?utf-8?B?VFQ0VFVBWGZhMmg2UjF1MDlNcnduUW9aN1dJbXp4bGNVY1lxSFZBc01EM3lQ?= =?utf-8?B?VXFyZ01sVlp5R1Jnb3dWamE4Zmp0aEJnUmppdnI0TXEwOWduSmR2S1Zkb2FO?= =?utf-8?B?OTl2alBkWVc1WTVrLzlrYVhrS1Q2eWdRRzBSRlhOamhpUkJHKzN5OG1hT0h5?= =?utf-8?B?ZDRMV1pRY1FUb0xRR3hzTlZtVWZ4K0xrSHNyNE9oc0g3YjhISmZSZzYwd2xl?= =?utf-8?B?bDkwS01XQm52d1p2NksyR0NOTkJ0WVY4K2UwdEQvd01ZY1NPR2YvYU1aamVw?= =?utf-8?B?ZzFac3BiTkdxcTEvVE9wT1hlVGRqMkF3S1lMQ3FVYUVsOWlXemsrMXcveW1v?= =?utf-8?B?YkhjWVVjN0VJdGxGQURKcWdpM1dSZWlKeXRsYnJpbmtRa1NpVFRlQ1I0cmMy?= =?utf-8?B?dEpya0kzMkpiQitlVzJsald1VEd0U1FRVXZReWhtK1VKaVk0WldwOWFhT2Vt?= =?utf-8?B?SGxmOEtKR2w3UXBTNysyT0NFeGRUSVptb2xPQ0ZhYktodHVZa0xJKzAwQk5M?= =?utf-8?B?bHlQRlZIeWtwTC9VVlJpOHpxSnV6RUcvY2R3NUVNWCtOWExVaEk1a1ZYeDMv?= =?utf-8?B?dVR6R1pTb1JtVW80MFMxK0h2bm4vcGl0ZUF5S1l2Q0Y1aXYvZ1BDMThRSmtM?= =?utf-8?B?bGNRUi9NbU13SnlldHpzSXo4Q1NBalBVZytzZTNtUkRONkdPWWtUeUV6bWlS?= =?utf-8?B?WVNzRjBIaThORmtkMElPNC9nTzRHUEJMSkdtLzEvQmxWMWtyMzJDVGJKSkdv?= =?utf-8?B?RXNoMnJOWURqM29UWDlzbms4Q0s5dC9sSFdnY3NjaTVBTzc0ZS9UdWR3TG5P?= =?utf-8?Q?PONTT00f4QRo2KFk=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: de06abe0-490b-4ff2-e1e8-08dedc02ab0c X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 08:35:15.1709 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0544bf7-9765-4630-ab69-0b266dc2169c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 92bFCWM7ESHF7UX7HRyRYohBujCqy9JAzdVgc+t4gStJZtZ5ygIN6UG1W6DcZLBc567A2BawdbaIpc+N+j6feWqIsN9MaiqyPYUwIcmfQww= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1PPF1A8DB1DA4 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c405::7; envelope-from=bin.meng@processmission.com; helo=TYDPR03CU002.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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 @processmission.com) X-ZM-MESSAGEID: 1783413362154158500 Document the boundary between SPI/SSI controller models and SPI flash models when representing fast-read dummy cycles. It explains that flash models own command semantics, while controllers own hardware-generated dummy transfers and cycle-to-byte conversion. Signed-off-by: Bin Meng Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- (no changes since v1) docs/devel/index-internals.rst | 1 + docs/devel/ssi.rst | 132 +++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 docs/devel/ssi.rst diff --git a/docs/devel/index-internals.rst b/docs/devel/index-internals.rst index b89bab9b30..a8f5e310df 100644 --- a/docs/devel/index-internals.rst +++ b/docs/devel/index-internals.rst @@ -20,6 +20,7 @@ Details about QEMU's various subsystems including how to = add features to them. reset s390-cpu-topology s390-dasd-ipl + ssi tracing uefi-vars vfio-iommufd diff --git a/docs/devel/ssi.rst b/docs/devel/ssi.rst new file mode 100644 index 0000000000..864b5d9320 --- /dev/null +++ b/docs/devel/ssi.rst @@ -0,0 +1,132 @@ +=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 +SSI devices and SPI flash models +=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 + +QEMU's Synchronous Serial Interface (SSI) bus models the full-duplex trans= fer +of words between a controller and one selected peripheral. Most SPI flash +models, including ``m25p80``, are attached to controllers through this bus. + +This page documents the expected boundary between a controller model and a +flash model for SPI fast-read dummy cycles. The boundary is important beca= use +many real controllers expose dummy-cycle configuration in registers, while= the +flash model observes only the byte stream delivered through ``ssi_transfer= ()``. + +SSI transfer granularity +------------------------ + +``ssi_transfer()`` transfers one SSI word. Flash models that implement com= mon +SPI NOR command streams usually consume one 8-bit word at a time: + +* command opcode; +* address bytes; +* optional mode or continuous-read bytes; +* dummy bytes; +* data bytes. + +The SSI core does not model individual clock edges or the number of active= SPI +data lines. If a real transaction has a dummy phase expressed in clock cyc= les, +the device model that generates transfers on the SSI bus must represent th= at +phase as a number of dummy byte transfers. + +Flash model responsibilities +---------------------------- + +A SPI flash model owns the command semantics for the flash device: + +* which opcodes are recognized; +* how many address bytes are required; +* whether a command has mode bytes; +* how many dummy bytes must be consumed before data can be returned; +* manufacturer-specific differences in fast-read command behavior. + +For the ``m25p80`` model, ``needed_bytes`` is a byte count. It must not st= ore +raw dummy cycles. When a flash datasheet describes the dummy phase in cycl= es, +the flash model converts the cycles to bytes using the bus width used for = the +dummy phase:: + + dummy_bytes =3D DIV_ROUND_UP(dummy_cycles * dummy_bus_width, 8) + +For SPI NOR fast-read commands modeled by ``m25p80``, the dummy phase foll= ows +the address phase width. For example, output-only dual and quad read comma= nds +such as DOR and QOR use one line for command, address, and dummy phases, t= hen +use two or four lines only for the data phase. Dual I/O and Quad I/O comma= nds +such as DIOR and QIOR use the wider bus for both address and dummy phases. + +If the exact dummy phase cannot be represented as a whole number of SSI by= te +transfers, the model should round up and log the limitation instead of sil= ently +treating cycles as bytes. + +Controller model responsibilities +--------------------------------- + +A controller model owns the behavior of the controller hardware: + +* how guest-visible registers select command, address width, bus width, and + dummy-cycle count; +* whether the guest supplies dummy bytes in a transmit FIFO; +* whether the controller itself generates the dummy phase for a memory-map= ped, + direct-read, or other automatic transfer mode; +* how chip-select state changes around controller-generated transfers. + +When guest software writes dummy bytes into a transmit FIFO or manual tran= sfer +path, the controller should pass those bytes to ``ssi_transfer()`` like any +other guest-provided byte. It should not add more dummy transfers on behal= f of +the flash. + +When hardware registers instruct the controller to generate a dummy phase,= the +controller must emit dummy byte transfers before data transfers reach the = flash +model. The controller should convert the configured cycle count using the = bus +width that the controller uses during the dummy phase. For example: + +* 8 dummy cycles on a single data line become 1 dummy byte; +* 8 dummy cycles on two data lines become 2 dummy bytes; +* 8 dummy cycles on four data lines become 4 dummy bytes. + +The controller should not duplicate flash-specific opcode tables merely to +guess which commands need dummy cycles. In automatic modes the controller +already has enough hardware configuration to know whether it must generate= a +dummy phase. In manual modes the guest-provided byte stream is authoritati= ve. + +Avoiding double counting +------------------------ + +Exactly one side should generate each dummy byte transfer seen by the flas= h: + +* If the guest sends dummy bytes through the controller, the controller fo= rwards + them and the flash consumes them. +* If the guest programs a controller dummy-cycle register, the controller + converts those cycles to dummy byte transfers and the flash consumes the= m. +* The flash may know that a command requires dummy bytes, but it does not = create + transfers on the SSI bus. + +Do not implement controller-side snooping that watches manual-mode opcode +streams and injects extra dummy transfers based on flash opcodes. That mix= es +flash command semantics into the controller and is fragile when flash mode= ls +gain correct dummy-byte accounting. + +Examples in the tree +-------------------- + +The following models illustrate the boundary: + +* ``hw/block/m25p80.c`` keeps fast-read dummy requirements as byte counts = in + ``needed_bytes``. Manufacturer-specific helpers convert datasheet dummy + cycles to the byte stream expected by the model. +* ``hw/ssi/aspeed_smc.c`` generates dummy byte transfers for direct fast-r= ead + mode from controller registers, but manual user-mode writes are forwarde= d as + guest-provided bytes. +* ``hw/ssi/npcm7xx_fiu.c`` converts the direct-read dummy configuration to= the + number of dummy byte transfers sent before reading data. + +Review checklist +---------------- + +When adding or changing a SPI flash controller or flash model, check: + +* Are dummy counts stored in byte units when they drive flash state machin= es? +* If a hardware register stores cycles, is the conversion to bytes based o= n the + bus width of the dummy phase? +* Are manual guest-provided dummy bytes forwarded without extra injection? +* Are automatic controller-generated dummy phases modeled by the controlle= r? +* Is flash-specific opcode knowledge kept in the flash model rather than c= opied + into controller snooping paths? --=20 2.53.0