From nobody Sun Jul 26 11:50:52 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=1782827968; cv=pass; d=zohomail.com; s=zohoarc; b=ShVe57TQ76T1Zpo6Za4ZOE4kIx5+OtoeqYcHqr8/AQmskwFxSoDuXV44BtWbj2oPCZklfc2E7bE6qpa4zERWhJMaIfv7O7fnqdzWF+R5dx9ak7539Bp2lpU858NIHwpiyrlSXt4c4LSW2wzHQa9S1SxszVelBEGzOMJOxtQO5sg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782827968; 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=eSuIJaaPVfoo68DMqCwnOzkDYqtrgDihQZjSYqgQeJQ=; b=hDhdbt+cqlDmzvjxWpE0G7mBS/nrbWvfb/L7e2zp7D5kzXjb8VtHFropaf17lFcqyNbUagibCx9Bes3EZGFQUeAf+LmA/mexZAjhZmi5/Mjfg2Wy9FLlpDZaWwzUBqyrU7BrqOlcq1S4oRdLp9lpxeH0uDYp4xMVgiQM+DEWACs= 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 1782827968056184.21259953309698; Tue, 30 Jun 2026 06:59:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weYyb-0001zo-BJ; Tue, 30 Jun 2026 09:58: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 1weYyY-0001zB-RR; Tue, 30 Jun 2026 09:58: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 1weYyW-0003om-QV; Tue, 30 Jun 2026 09:58:10 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TYPPR02MB8959.apcprd02.prod.outlook.com (2603:1096:405:382::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Tue, 30 Jun 2026 13:57:59 +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.0159.018; Tue, 30 Jun 2026 13:57:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rI5QFdAzE3QrWwFVv4RJ2JVXuhpo9Nl9lj97Yv4+1QCGRvwJHQ3k10EI60A3yDRGql1DPd3rmFNqckPm7Bu2ydVKq+AOvMfqmQvNZOE48Bfw3rbOVB+UgzK4f8Hck5zVkJjyJWhkqzdtAp8v6C7CJk2vdDIfF5WBzH5KKsmdTlOyGu3GzC/b8TARqjBh29bVNTj+8g4SVbugJwdI/ezHhaXLk35oXSH07lkZheRcoXr7AQ4CGx1hw5LDPErREokbrHVCX8KUp6j3mdJN4+KwK7pKxZxzMq3vhvgtYp2/xE5dW52Gz2qakwepDmX/LJC3e/WTwncTUIGwHt91nzpKaw== 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=eSuIJaaPVfoo68DMqCwnOzkDYqtrgDihQZjSYqgQeJQ=; b=ADFI0lGrb8CR0jVArC+x9F8Js3lIUNooQdZoFJpAiH2qqE7fkc32XRUDQfzJ+wNUicNovVHZD2caQYD/uycRwuFXtgjVQljETHvonldd1eA3cUh89Dqxzq0DNuHpNI9T6Nx8pTYnclp+tB+rcu8wEMtlLaFzFn3esm1uSj+u83YzsmJq5i/Wn6C50Bbe7ONErtFG+toERdI9FM06ncOY7ZAy+PksXnBrs6CvCD4pnPTLzWSh1f2m0lCFpc59TzWTTezbxQwyrhmmcRR/UQxM/AeHbob7O5NIh9An6xqeR0b15bDbDXE0wnUd2gpNzhkL8xy4+cUOnQIFsZ64mr8Rog== 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=eSuIJaaPVfoo68DMqCwnOzkDYqtrgDihQZjSYqgQeJQ=; b=NXStbrkrrew+1983mukzUTDMitu7VbNBqQqUz/Wu+l+elG3+KW6SCrk/TnkiBuwGJ/FckFPxFJQ+TdPzBCA2e6dU6r2cqjY5q5LVFfLSieoV2ZHIYnZNg4FR1d6p2Jms6cF5DbVqZcwgz/Jfl/TsaQ/gDYmsRCpHVTO+scDNofp33tsEIv+nqaCDbmVzSISdWgEy9kNwJoRlL4WSInTPJcwR86KnN6DMWv5zYEuvso0+TjkhEHffWf9Wf+ROGSq1unSBK3uYcPigQiwaMnd66wBvH15I7xaQ0IQaAUhqLgQncW7WKOKc/2fSJ0IUoRJhgUn2+Kf/JHo96HO6dKiSKg== 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 , Hanna Reitz , Kevin Wolf , qemu-block@nongnu.org Subject: [PATCH 01/10] hw/block: m25p80: Fix dummy byte handling for Winbond flash Date: Tue, 30 Jun 2026 21:57:20 +0800 Message-Id: <20260630135729.466264-2-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260630135729.466264-1-bin.meng@processmission.com> References: <20260630135729.466264-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0161.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::15) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TYPPR02MB8959:EE_ X-MS-Office365-Filtering-Correlation-Id: f349a961-43f0-4770-87b0-08ded6af9741 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|34096008|23010399003|3023799007|6133799003|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: aFWCodoeuinjmO9wQl6ZdCtqgCjRLZqVeGb3D0T4qxAJAtvjGSBaXCOQA58ViSe94i6OOg1epsNqM9/mn8scJlcKmjRvg69myU11IctkzBzBK4+d5bPnyhEUvz9TKBQGpzQ7j7EPDbiZB0G8uGbt6/k/GUUhq9RZg6f72UgmKvnyXpFBSyhQHqopA5NKFZPGDczEuV1BmNtrJ5tIceEhOJBZqPtKGO8w3nfHwqfsHOY3GUafsuwSBZBgXw9Fnky3VY2jIn4e9nUZXiaJeKTU1mt4Hv3tRWbOaZ+pHdVfzR5xjUMbF0fw9UQ30ZG0p4MlJO8lkoY1Fnw/Go937+2R6RsniLETRGBTZpSUYOeLYS3sj7Crt8E6OGusKb1143kHslqqzmLDoRpzwgfjO0dSw+S64tjQZNChTwcAz+q3MLSSViK7Vj1dSnlqBC6weyA2ikqF/vjL2pkOOw7Hp/r21YW/i3THzvAldAXYd7uRk5TYmuVwl0WU6lNod1/f3Ca3PBGedZXkF8lqd4gaSRed0VhoFgt2dXKRB3nfQ3CvXPG3niwQ5VPVTSGEUJ7gua3Y31kd/TBp8WrVLpPMeLP/Izy+vrS2sxNJbDaSKhwVwQZ4UaXEhaEGFjbXZ1IRfTNJSGQO0QXpfS4OYuBDCmAuFOLFUZbmi4FZDtk7U41Gc4c= 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)(376014)(1800799024)(366016)(34096008)(23010399003)(3023799007)(6133799003)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tApaf34gIDpT/bogM/bmbwVLn6vxe4QvITBDtMhUW0wW9mELxGbwjmP1e94Y?= =?us-ascii?Q?H9M7pr+Aw4kxBYosh6ZjyblRPMI07oft3USzrj2VM1U2hdb1EDaXL2WHX1Tg?= =?us-ascii?Q?YEMWfkZckE4PrztTo9LC6g8yM9KBx2sS5R9OZiNAZAVBMMoEPRSJ5TCYxg7+?= =?us-ascii?Q?yjDwaKF7bgEtquuf+JNimsLJOLt1Y6cwyHMUaAsQYvaEdFQzOxlT3hGK4//Y?= =?us-ascii?Q?c5E92arv6SLe8Jb6pCj9o/K68IrbrEW8Rwg01OVX9zU41qOLf4uJpgNchTlx?= =?us-ascii?Q?Nutc3Owt02GIWYAzIjEqRb3pTKYa94oRW+qAUu4MQkOz6evvLSWrQ4VmhCk0?= =?us-ascii?Q?TA4K0wywNvF7vt5fm078uPovXOIRfmLl/lwlKQzyWx9oJ0WypA6mxGZ9pfKm?= =?us-ascii?Q?9see+Mr9bhmLO3Ss3ocBHG6boCwGDukmaYQa87C+RtGV/EFR1i3FuTIr+hmE?= =?us-ascii?Q?GujUUcMtXbFsMUEk2ProtlHmJ8Nteh/PlQfJ4JNeNU98rcf2hfFsgDghlW7I?= =?us-ascii?Q?O52NPYZ0uKw7QIN/oEddpVHPQvW/e0I7QerF0IcQ9cnPF8Z2bLPUN0sjuYr/?= =?us-ascii?Q?nipfZmSrVVFtK/++Z8RXdsco1u8ny22CDG9CPCtKC+H3GUwj/HUzE6xd3Xeu?= =?us-ascii?Q?FIz68M4Pc6q+gwNqAq4HBzr3frXvCB5QfdrJJg1O/sqZ16XBr7VxbUgBRAta?= =?us-ascii?Q?ITfiow8fF5IQOFoO50Co5xfRrSscrsr7fJyd2DSSyRzUit0nxziMCrlrDA15?= =?us-ascii?Q?mjehiVjmD0Ndr2215jMgBnDBVguiaBFGp2TBCF1wuP6HMuZ8kZd2G75XmVYT?= =?us-ascii?Q?X9Y16NGOO9XfwSvwzwxvj4UFmABCcFKmr0BmVTdxaD8gbsCaLsbWCr3jcDFh?= =?us-ascii?Q?p7/din5z3eJ7ggT0mXji2TO7lsD4XU83jxnie+bhS2uwfPbNsLheFr15cGKn?= =?us-ascii?Q?j0ZlVQyqBOjHG7KozODPvEz97YUeaAovY3QqF3bNApElQauCsMicjx9+/dHk?= =?us-ascii?Q?vnIIWQ0DRJPdQxvxskWA7jbSs8mrHcDEBKjLJ5ljdhD/iRaIeGVCqhks/Flj?= =?us-ascii?Q?OS2cJqv7NxIq3gjvK00Mc5f0emfwacEye6hCUuax+Ud/VhslJ0mmx+lI/25e?= =?us-ascii?Q?dVwiWFHl5gxWDmujFAA6VwacysX01ddvpLGKnmpGLMKtKwmgaG7pgGkBY/D0?= =?us-ascii?Q?b2Rp+yyx/lkRSjdztLmz4NNTe/sNs5WJbPo80n822nftlZcMhtPnBkAF4JOb?= =?us-ascii?Q?N66OGpypdnjWZD70BmM2ThRuL+Gy5FwB2ZNDze6DIyH8HUz/H4/CdGhfIIqA?= =?us-ascii?Q?DryedS+5MY9j4z1YvOg3T5y9T5GAwb6DVPYse74RsbwuwIzGNGGj/I0vVxrk?= =?us-ascii?Q?H3HqD3JC/dizHuqgBPvoLPIdYFhW0c1ua6a8aqNq+rLnTS+6Pzzj7LfGyA8Z?= =?us-ascii?Q?LizDHea4y4A92mLWV15IaKyBnpqQ2whsSpbd0T+EWxgc8pm6FuNz1chqXGy/?= =?us-ascii?Q?4RoFRQnoNvvo+BK9O0wn2rTaMIHUEF5sZ2LIQebNqXj8WNIOCcLpT4VUVYyg?= =?us-ascii?Q?6DhthS7m9DCOrphQtpDCxi5oZi8G4SuJLAYmi5keQGNUTphmXkvtlDgjYTRQ?= =?us-ascii?Q?omD3FG51ZQpduskkRkLrVNdcB7U2fz1Ja9rqj/KPWDfj6YxT4CNXqAhojtC/?= =?us-ascii?Q?Ak/bEHhNqLfkleqf+j9BqH/U73gkO3E1bEnbKpyNGhwbO0Z8/XmFYWMSJdcA?= =?us-ascii?Q?bH+hcS8VW2GNBi7b/kYOvpMYPHBqe8A=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: f349a961-43f0-4770-87b0-08ded6af9741 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2026 13:57:59.0135 (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: ycp7zRUaSnAaiV+rbxmW7mnYY5oV3mwc6KwglTniCbVZw9FJlQNcBycno88R2NWBe/OcLaID3sXqNK1cG96Og8v+g3k9hwLlvvw2hfZ4o8A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR02MB8959 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: 1782827970240158500 Content-Type: text/plain; charset="utf-8" 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] instrunction 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 --- 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.34.1 From nobody Sun Jul 26 11:50:52 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=1782827928; cv=pass; d=zohomail.com; s=zohoarc; b=hv7iL97xreOSFQLrgYuMaB0ERIFibSo1+MLxEUKLamcHeL2QEO7sJWMHBFEd7jqTiG8Ui3AGzg/yCIKqju9RGov0DljswD+rM/gH3EcyjkPV5VgEGndL28TkiAVcslcd538fI42j987RCOfFWTun9Gkmktv8HAMgStHd8rKByaE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782827928; 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=PLsSlafMQoxO5KBYnsvhQrjJj3NvaFSO8CQRi3ObJzo=; b=QiTJNreaEgo+CZlzhsLzs05L6PlrdzrlmFRIX9rXmW5QpV0fsJNzCvdNaCaiJu063p3XCYi1Aw2Ng7zWNXjy9SGSQcsW1SGnEmzawSNVL7u0vVb3IP3aa+U5CQZM+qOon/oNFYSsY082UeOCrPsT7G27TNhYBslphPxtWQsr5GU= 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 178282792863663.19626987868003; Tue, 30 Jun 2026 06:58:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weYye-00020Y-N1; Tue, 30 Jun 2026 09:58:16 -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 1weYyb-0001zp-Cj; Tue, 30 Jun 2026 09:58:13 -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 1weYyZ-0003om-JZ; Tue, 30 Jun 2026 09:58:13 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TYPPR02MB8959.apcprd02.prod.outlook.com (2603:1096:405:382::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Tue, 30 Jun 2026 13:58: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.0159.018; Tue, 30 Jun 2026 13:58:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V82lJY92TQpYfOd9InG87QPchhE1WWAb7Gxvn56B815NRAwLOuHC6GtESk6cbDSRMxinP2SVOynqScmfRahVtRJ8HGt8mjbj/FBnvhds/XGmYGemLGeZbJoscDEwt9Flzron7S2LNYs09jYi6bx5W1T4DYQi3AFXXxX7VpnvWrP8Ux3uZjL0W4U1NnD5Mx1cfNEv6rm6D7TGZsDm4dv3gpZtR81lvrmjjXzjFsxWOrOnukLEpvf3pxyAGXr2mjiAj4l6kJHlglP1Xlq3oNXNgHbSy/kgGewUS/Xv91vnkyX44OSgWuK0RbFOy/M4h3Gm+CIVB6fsiTwDcEqRmt7ytw== 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=PLsSlafMQoxO5KBYnsvhQrjJj3NvaFSO8CQRi3ObJzo=; b=K9zGgYD8fI8GM1CJMuX1tlpL4eo77bOySc529DHpKsSzGjlBwjuFhkJtSajLazc2Qr1FPyiCAHx/75Wcdamn8kZXtOZQEGnFdaPxn9m/sSdWUEZ7bNG1rWsE/hAKrXudJhKhMUwg6VL37SC8wAQjw7mkrl/VAJBpEfg2JeigY9nJRJ7CZIhqczcSoDmY+j8P3+iRMF4ocktqF3qwxKm9Df+/Kf+lrSDd6RRfQmPn3CtoRQU3jRAaYsDmiX3aZ9v+SCweNU03QIJUJp54ltWkefmp/eX3wSackoDK1XOWjSUox8W5xhP5bkVQuzhUDp3gCg24AZ1R6Ov0+202Ab5rBw== 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=PLsSlafMQoxO5KBYnsvhQrjJj3NvaFSO8CQRi3ObJzo=; b=gNHKCGtfFWvJApsKcTuYjN/HRzzdV+R+1xcimL9oP28FNyyJ0EGPndWwtY+ZaAZSncqyiVx0jL1YpWEz2JZTXqMcXDRE9LnudjXrTmGrLCW5B4tKUicQuvRQbPHYM/cgRj3EvPS+tM9hYO3qklfco+W+GjjATxxTPSVvJw5XMZ0L/a1hg/uOMNtpKIANxqFJL7WFMxaxVJLRKShMr9jckcyc7m+aG674fehQEOshOjYLseWwmAfp3+qK272I8p3HxHIkNTqjGqZex+nA678C7W25/KkEUicRtASpQ7jPBX4bfxYp6HYSX4RgpZx94sEuN9f7RLpess1n5sYKVyBr7g== 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 , Hanna Reitz , Kevin Wolf , qemu-block@nongnu.org Subject: [PATCH 02/10] hw/block: m25p80: Fix dummy byte handling for Numonyx/Micron flash Date: Tue, 30 Jun 2026 21:57:21 +0800 Message-Id: <20260630135729.466264-3-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260630135729.466264-1-bin.meng@processmission.com> References: <20260630135729.466264-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0161.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::15) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TYPPR02MB8959:EE_ X-MS-Office365-Filtering-Correlation-Id: 2b07adac-6b22-4207-013f-08ded6af991a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|34096008|23010399003|3023799007|6133799003|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: UldBxGvQiJ/G24ZRH2FBcfQc25ovFYht8GNJWBEpnNeqEkMxuGQxasmn5pXjWls4w48RMbColAg79jjSLzw3wp4kFI3LlVlMKORQS1BWeK8nzjP4lFK2rF5C5muPpOObCLQ7VBx8Gx9dPx6+XOqW3pCc/Y658veRBdX54WzCEe+revgp4bd6s+If649ZQPZsUP/HvJmkmKUHDIFYiLZrwniKJZtN237Ar+Fy3AOMPe6Aww9VLM/0liP//L4qvhRx7HRZYGxFmiGwZtE+XzVngq2EYFdPDBSNOV5QiDr0iFRjalSWAnI42EKvMmhGnu6v2IPIddc+Z03ScYXDODPo6bmuiUNzUU/NWI/4U+6Q4O+G/1aERoduXJOIilat41932bc8KKCjI48OYOy2EVykcYv8UMfTvOR62KtZpJJvG2wBuJJM8rrQNyut9UtL2npJz+Sb/BU60TxWbOB3RMAM/z+uIpM/2/gXSn9yVrsBhb9RjCHmDshfzGVNpRV7sY61Xfi71RUf++jT3yD4KFyLdtryMe8oisENyBPwDGBm91JzYfabThfDOrjDm93MPrLcqerwU0AQihSSlbVpbCyImQhcdHwn0g9ReTKF2Pu1j3PLNDJN7W0ENrtI0ESelaeit0wTYvKYlPv6qDFFtzkmhhYGeIIjNlWwtxb4sXi1dGY= 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)(376014)(1800799024)(366016)(34096008)(23010399003)(3023799007)(6133799003)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BvY4drkiw81PDBcS58RKe/hvex1f2lASzOQsLmHviNHw7d0VRgFFuSvshpdt?= =?us-ascii?Q?+dHvFEG4zd811a3e/iF1aLH5sKVLYB+DAfLC2G0w74W3Rh8L1m4BXRcjgo+O?= =?us-ascii?Q?G+FwsI99VDUwcJ8xKq61ly6WdQVH2U52LFVaQftDAVUz9KVN2jAUNV6U1j84?= =?us-ascii?Q?Nvw3mQZ87vG3XIKro/1biwRyqMk8vklXBzyGSH/vz+ZdnCx+jcrfIFhRIptv?= =?us-ascii?Q?jOYWa1FoLOXw5NpEhxfecIZsdMnmt7t9H8fZyCmHBI8K2DbdvGa85PQh54UD?= =?us-ascii?Q?zAaXrcHtD7hevHLtixeRNlh9koTKp++IxjMqh8qyCZpCavUF5jL7+upiF0Xk?= =?us-ascii?Q?ex8PvFCurQhYZW6/OhSBh4F7uZt+qptfJOCmtJuOuE0Mt83zXTESqBZrW0S0?= =?us-ascii?Q?dEdJ/bcmM+JH/4JGeVxCzlbVPgugB45tJ3KPVcgoWGPYSV2Of+RRGIz9rGa4?= =?us-ascii?Q?n+Fca7DwFy50rCV9z6DizKF3UdpvJH5yIOG6lOzLFWLlhEwy9sqM+uVTN7G0?= =?us-ascii?Q?66cm2O7HGqiRkEGxxg0r3pRZW5zfslUeG+f1F8gcs9aJi6ONWw68GENS16zK?= =?us-ascii?Q?Q+qncDxbZIaQJY+9LufvQU+9BkaJ2QZoMvq0/0B8CXKahwtNNHjSzqB7Ac9w?= =?us-ascii?Q?Iup3Uqg2roVeaQyVNxlqSZ9bydQl/3M/Fdv+apwaJca+5T/OnjEkpJn16rvr?= =?us-ascii?Q?kZskHgiRwL+Wm+lFrkrCnWEN6FC3y9icBJ9y/+XnexZnGzKMwPOEYYw2uWrJ?= =?us-ascii?Q?DDP84xbpbz7H/dbslGE42Mv3wQ327aGRuTxhVJN2DZ7kXU6NVaOVxiplMSGD?= =?us-ascii?Q?0BQftlTwmTIKM40jUOg5lfuC4lofTWjX/pif3wQ31xWC1cIRFfM5lnVmek8l?= =?us-ascii?Q?RwIzUgXzCD+NmeBb6lQeq2LRM2P0VLp675fQ5c2F5LcNdm8fXiugT3dVvVLe?= =?us-ascii?Q?nM5GXaAlGW4y8IlD1lG/ff180nGRP0d/keRieYVbC1lIerxZeE5YB5B4/4wp?= =?us-ascii?Q?RrZzVX6DKmkA72FZWqpLa25Q7yRUjkOR4gxIlCDn0RRSs+78ddYD2JBZai1z?= =?us-ascii?Q?7hzyApw+VNyboJHnfVQ3QHAK3CUM4bRp6jwPNo9eP+eZp0Do4vhC6ejk8XQ0?= =?us-ascii?Q?IQtViqBwVggMNX9TTN9wdwPQZSDihlskY6IXujJgBogqFr6ro9/m+/ayx2Xk?= =?us-ascii?Q?Stao2mLRp6GHIU/s0HGsJS73xaigdK7Qx6+jmkHTfGtyF/aGTaQMdqMp8Co1?= =?us-ascii?Q?oyIaqvCecnN++d/Km4cRh0pRqqAg09lX+Zp/ck2+orgH2mqosmo2bzqau/sn?= =?us-ascii?Q?16GnHcRPRI4U3lyPC3WaEj+mV0qWJMNlIU7RBAsaIgWDS1mDYySlA3PtZ0Jo?= =?us-ascii?Q?Mjdz2289s5kMiVcABufvlLn53/hzNFhH88O2BlFWe1+SdBlxW/QGSLsgHxAJ?= =?us-ascii?Q?o5Io2TtkC74aI7miPtLepynP37z+kqSfsuU6y+INegnzNkC9W356Z2WgtrfZ?= =?us-ascii?Q?qZ9G7qrIfiefmUYlAFSDQ+gzP5F84tlkVtFWEyLn35/CpmQJ0sEynR4p+08G?= =?us-ascii?Q?BmNwbd8ONGu7xK3fHh2MWQ+E7EexCQVuCSatMY2DCjSBDeqVCXr3OOl3+eKi?= =?us-ascii?Q?AQs8F88IJbiLxHX9Ded65fJR2hn6JSa5vAmQW+9I2dG2fD+h6YXere1a2ap3?= =?us-ascii?Q?hZasHWRcMbn4W3toTCdsaxJDuSuHmqr8JQWyJ1vQBoie4e5JCsTGAeaFvnch?= =?us-ascii?Q?RsDf7k7cagDkZvI5YsRMw6TOwjuIaQ4=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b07adac-6b22-4207-013f-08ded6af991a X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2026 13:58:01.1749 (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: YVMjy8yX9LDttmfjVah/F3Ax5+QqBck8iYVg5Rpm969ll9z685v+KkNHUYZMYsj3QGEdIGxKfWo2St7x6UFjIRs4aiNov+JTufHZI1afDhU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR02MB8959 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: 1782827930196158500 Content-Type: text/plain; charset="utf-8" Numonyx/Micron flashes 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://media-www.micron.com/-/media/client/global/documents/products/ data-sheet/nor-flash/serial-nor/n25q/n25q_512mb_1ce_3v_65nm.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 --- hw/block/m25p80.c | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index 59ecb32c0a..ba109cc055 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -980,19 +980,53 @@ static uint8_t numonyx_extract_cfg_num_dummies(Flash = *s) mode =3D numonyx_mode(s); num_dummies =3D extract32(s->volatile_cfg, 4, 4); =20 + /* + * The default nubmer of dummy cycles is only related to the SPI + * protocol mode. For QSPI it is 10, otherwise it is 8. + */ if (num_dummies =3D=3D 0x0 || num_dummies =3D=3D 0xf) { + num_dummies =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) { + num_dummies *=3D 4; + } else if (mode =3D=3D MODE_DIO) { + num_dummies *=3D 2; + } else { switch (s->cmd_in_progress) { case QIOR: case QIOR4: - num_dummies =3D 10; + num_dummies *=3D 4; break; - default: - num_dummies =3D (mode =3D=3D MODE_QIO) ? 10 : 8; + case DIOR: + case DIOR4: + num_dummies *=3D 2; break; - } + } + } + + /* + * If the total number of dummy bits is not multiple of 8, log an + * unimplemented message to notify user, and round it up. + */ + if (num_dummies % 8) { + qemu_log_mask(LOG_UNIMP, + "M25P80: the number of dummy bits is not multiple of= 8"); + num_dummies =3D ROUND_UP(num_dummies, 8); } =20 - return num_dummies; + /* return the number of dummy bytes */ + return num_dummies / 8; } =20 static void decode_fast_read_cmd(Flash *s) --=20 2.34.1 From nobody Sun Jul 26 11:50:52 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=1782827995; cv=pass; d=zohomail.com; s=zohoarc; b=gIm2vFKD7VB+tbZcU8x22qtTroM03bzgVC8kSJf8zicfQmfOgHa6Fdh3alndVKQ087iQmoy/GgPC85r+MfWOp4NmrZrszpYvoL62htmKLbk4IABlwRhOnLw5pBcpL8TDeqZAtnpdr+hig/p+khQK4tCvIgFwS7TNFLCWPdwAgO8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782827995; 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=SHnw/B+4SGmk7uUK3XX9T+nDhUFaptf/jqhd8hx1JiM=; b=lHZxT9LoP08ROsid/v4puO7WYsq9CD56GtTo36np36q7MBRGOQxSyGRz8kmpieaJ0qvjczRQX+d9sDs2x2hk4qM0Cxf8Bp40iQ5kdXnXGkEWtfMtUDcpc2zkZurZ6wqo8rixniP0qLZnDclSgy0ZbprA8clFT2j8yP9vidF5VBI= 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 178282799580350.56773185415409; Tue, 30 Jun 2026 06:59:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weYyh-000218-3m; Tue, 30 Jun 2026 09:58: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 1weYyd-00020M-Us; Tue, 30 Jun 2026 09:58:16 -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 1weYyc-0003om-Ak; Tue, 30 Jun 2026 09:58:15 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TYPPR02MB8959.apcprd02.prod.outlook.com (2603:1096:405:382::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Tue, 30 Jun 2026 13:58: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.0159.018; Tue, 30 Jun 2026 13:58:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fqeWR2/46P1Q850EOFmMZOUYer1tT8IucRGf4hAl1FutDkfDMeII8OhmSd2Rt6aD9OF0OvnY5pGOWpPsOMf9N0hLon+1onT8N/1VNOcqDIk+U2emKOUDx+TX5HA7Q6Q/qWyP6TL64R9eaoQ88kpy1uitDKwotUVy07auWJtRFyILOmvG9RI8lKnRoIXXYCg1uHMxYdCiI6Ow9/GADTKjgmDiyz8YSOC5yyLJWz6SOzTjJTYG+czUCw3VjYHG3HpcklLwm2VDE+3rdjncW2G0OpoyzYTzodtq3eACiU6sG0P5HjHQpi6bK8rM01/VDsWgHw1xTWclR4iLEVMGCxJCDQ== 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=SHnw/B+4SGmk7uUK3XX9T+nDhUFaptf/jqhd8hx1JiM=; b=MUogkzPi7QTp1gyV7xsG5exeka3Xnp+tzWlzr6eWAh62uNB0/mWHyz9qqTwcUkYBTm8leftPQAS+FSDB0sBfHJzFPWN5Ce8aiwhfASOg+3MRTGojZkIj7d1iJsHqGtZ6VtHRHrVQCXqBFPQPusxmo6+nHwBzxI+f25lbRAtKHQYYjiNz7BTCVHfL3DxG1X7eWcczsbJIsbJcbhjPHCnmk7jrfawhNNv/epOZ+7BSaVOP4AAf/fE5yl3EnMkL5jAIQzxjy/D1bweflQph2Wm8Py0ZZ4ZtnGzM4thE/NB19G1shan2JMtLqCF802Pc3O1mxumDY53nxOdL/trvXGkKWA== 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=SHnw/B+4SGmk7uUK3XX9T+nDhUFaptf/jqhd8hx1JiM=; b=iiZpuYPRCjQ4Iz5ZkmumRjYRJSevOUaclk+PG8TrpqIepUYrt1u5pxXPHJOKlpcCvfMiRhmaeyNiY1U2oEcoaKPEz/Sv9MbtVBZViJ8gSQ2u1qEsznxq6pZqyHSthN+YS2DEh99F6mxUMqVPGCpQ1taR6fwGPBUryBK2TjfWEUdkzm8xrSrj1BDPphBNVOcuV4y+GpopG28zOPpOoT+UWy3b6tHUcPXJLCen2eZ5O4ZkkLAfgJAHqi5KlfE+uDlyTc8XJs+HtRBCdnTJ/kgDufwy1xFz4iQi470Ep3Xsuyfv6S0SDgRPB5J4Cn6fH4TLc2izcARyjrsYj2/TLaq7zw== 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 , Hanna Reitz , Kevin Wolf , qemu-block@nongnu.org Subject: [PATCH 03/10] hw/block: m25p80: Fix dummy byte handling for Macronix flash Date: Tue, 30 Jun 2026 21:57:22 +0800 Message-Id: <20260630135729.466264-4-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260630135729.466264-1-bin.meng@processmission.com> References: <20260630135729.466264-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0161.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::15) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TYPPR02MB8959:EE_ X-MS-Office365-Filtering-Correlation-Id: fb597c56-f06e-405d-4550-08ded6af9a41 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|34096008|23010399003|3023799007|6133799003|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: ddtJql2dff036mivNRv2EuwMJRKZpZu70VbNW872VN6ptsKoVRfLlHvFer3/o0uVpi7KwPAet4dHgfX2u5oxeEYRBAsASlRbyRwk/Fo+l/gXiC57qoTqZzcq+hylUpHB3eNSFRGXxn9y2MMX0G9STrhXx8s2T92mCpRK0mLOSWWgquMwqND1zPo48SGEnYk9QNJD5wuu9l2Tjpwk58KOJzlWcRJ1N202iHlwFbyqphRw8vY8nKDbrxJW8D1koCRweJZeM2uWJDQWrK3mzqNH9QcNtT288onBi//Smf0pwCGtwHkddTAMALrshHtGRAeUs5DMplKRyiHpy2FBPkZN5rkg1az0OR0nWCKniwSTgZhPCu9iApHzzZcvWIgGf2zt8ExOwCykPLarfV7XmHTUAwcNdlbPZ9ZoSdjMlcGwMgbJbFE/aILGE/+25WQfCG4WOD8lODVF5BGur3Fuxo+eDDwKx27dzpgbRFO+599sEkjWxqaGg0yNRzV+gSAx5aTHCFBctQGUt06KuT5ikaxRBeY59JB+scd2RP6nplcP3xDO9/59FS23vDdm2OTo64A0RCSJYsA1t391gM7YupIVkhiJ1oyAq015QdGjjq4Bq//y2mAIUvr9iQPrJNSTNBXL 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)(376014)(1800799024)(366016)(34096008)(23010399003)(3023799007)(6133799003)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EN5GFX/Rd3aqqay6QELEK7RNCnEZjkbUq/A8WkN+cA7aWLSjykyUMPCSfj5c?= =?us-ascii?Q?RhYduyTlARnJFJ04XYTVj/33hEIv/tL1Ms/DWC6LuJXO5GsPNb97YwSxdwv/?= =?us-ascii?Q?N0Ehe7GTt1bExDc4k31oyKUwbCRADCStRRRW0lr1PSpuqSa+B/swVZyrz+Nc?= =?us-ascii?Q?UR23QLN2rC7bMUJC8mkiPYopTRkOz2lXi/erWxIQMqoX8Z6R0ugcbs8JhOXe?= =?us-ascii?Q?ev9avZX4vKjV5g2aP+4x6ET4Z+RKVLHrB6yLy0v3e12cMCqBPDwVWM+2yvEW?= =?us-ascii?Q?u8YN0/F79hhyKkOYEZa3I+lpHvohH1IRzinFV9iChG/46//GzQRAQghaMuhG?= =?us-ascii?Q?cdf2pcrcwJ+RsvAwDcLj0SHN/X+/V9zRF4nEVIBavGmfh0LC3ePNzibkTpW6?= =?us-ascii?Q?AlPijx0d+DtHGhVOgP/nMnzdfXDZwkyJYPYeivSj+LA3brgxT4NMhUkQsdgn?= =?us-ascii?Q?ms00uMyS+ggJjEWS30h4VbEmsLUJksYwHf0YTEO3gpEwhIrU1kXW4IdvG0Pg?= =?us-ascii?Q?H6FLOqCPh2ia/bTvsjgQCkr+40JPXeke6vswu9/OjwDvzrY3ZerCSFL/iRnI?= =?us-ascii?Q?kQda4V6ig39mGMsvcwvve3/4A5dKBgWjdMhDcukdOm8YmvxAGFol+sBcP2BH?= =?us-ascii?Q?MvEz9YI2GQ8hOMOEuDXPaZHSQ40EsLMFV43gwPaJDZQea2UQ6t/KTnPppYo1?= =?us-ascii?Q?9QwX7DB2I7yPsJWpxx83MLNRhBrXjB5nioeL0gBtxCr7Zf2LT5qGO+Nb2817?= =?us-ascii?Q?oY3TROUyHrXusGvy8Sj40SEabingFvo4NifY7V9vTX2WLAfigjndbYejzbru?= =?us-ascii?Q?e8Mw+EFihZ6NkiuRtTV0DRrL4swuc4YKPYgxMJfgAOzZJsh9v5m9m7Xp2lEJ?= =?us-ascii?Q?xRHGmc5ruR6jlT18p6ayPyoukvPD+WjAgOXeJ4uRCLqw8A3AEqGmkPzMMhjl?= =?us-ascii?Q?JtZq7I7W47bubgfeBqw3tgNew1bK/4C4V0o2TnOngBF6oBRBEtbFFKNjPeuf?= =?us-ascii?Q?CbIYpdCQ0mUGTfFh0ZWP9kCV9Mb1hr/aHWuP9caWOIERJvc7onmOITo7bNeB?= =?us-ascii?Q?MSvL0dh8TGim6AMLoJNQCbaGDTaGD6y6d6nCI0T3uKZSc05sFrriEnlkLwAn?= =?us-ascii?Q?y54xpWS4BQnUuy1dNiKT+xUgWJqnNgfNtNSknwSqJPwp9tGK8DvD3Y0Ml2HU?= =?us-ascii?Q?0yyyX8DTWpQj5G0aD3zL5JJLmmzCuUa01zKu/1251aRhhQyD+9cw9saHf3ab?= =?us-ascii?Q?5tR51Dbl9X9RbOAVoJoMkFgJdnEWaZoADQjibbS0g5FNq/Fjzs+YfvkXto4B?= =?us-ascii?Q?3QJsClRZcyA6i2LaD6DlUt6Mqk/OmrLQNdOOd1karWPWZfsnVlBjo28f+M9v?= =?us-ascii?Q?kRTk2zIwOCj9n/bGl8qTZkU4WJR4hpkLYqcGOO93CIaIK0MUOJzsPl8btADF?= =?us-ascii?Q?FaY3Ub8LJJiM2gF+ANWllWSx1qKlhVinTXaY6cBlzlsLcfMH2R951cQQOVgu?= =?us-ascii?Q?qrgDhnOq+NjaJ5kWn6FcUWMwnh3w5pA+wgXdwryfLWcpuQSuPmPhhfms3fD8?= =?us-ascii?Q?DgfVpd58lNfGy9ckFQh24NfZsceP2+6InvcA4TS6280ileilqGwQpjmxnPDy?= =?us-ascii?Q?Ck2Ja+y3OgLNC5qo/ighP7Z7aoDowZXoI+Dk0Po3IlwrbegQJrX+lT2zGJ8V?= =?us-ascii?Q?vYVMyY2gnUSbMhzblfH8zA23moO1vzXrfY5HThDeODM2oJANsYGQzs/XQt0v?= =?us-ascii?Q?B9RFiwlD0UR0dEcdzeY8Q3V4cmhq+os=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb597c56-f06e-405d-4550-08ded6af9a41 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2026 13:58:03.0452 (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: ShH03Sm2iwxlE7t1+UBVU0iUqqtgAgMBGpA17mn9ODMMUECxr95Zh3KMiHOhQAYxcKqb6O4f2M76LQLN2Ieg525IHVXXPTyJYLzXOE3uNdc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR02MB8959 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: 1782827996648158500 Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: C=C3=A9dric Le Goater --- hw/block/m25p80.c | 66 +++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index ba109cc055..745d13dff6 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -975,7 +975,6 @@ static uint8_t numonyx_extract_cfg_num_dummies(Flash *s) { uint8_t num_dummies; 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); @@ -1029,6 +1028,41 @@ static uint8_t numonyx_extract_cfg_num_dummies(Flash= *s) return num_dummies / 8; } =20 +static uint8_t macronix_extract_cfg_num_dummies(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 num_dummies; + + assert(get_man(s) =3D=3D MAN_MACRONIX); + + 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; + } + + num_dummies =3D dummy_cycles[extract32(s->volatile_cfg, 6, 2)]; + num_dummies *=3D bus_width; + + if (num_dummies % 8) { + qemu_log_mask(LOG_UNIMP, + "M25P80: the number of dummy bits is not multiple of= 8"); + num_dummies =3D ROUND_UP(num_dummies, 8); + } + + return num_dummies / 8; +} + static void decode_fast_read_cmd(Flash *s) { s->needed_bytes =3D get_addr_length(s); @@ -1044,11 +1078,7 @@ static void decode_fast_read_cmd(Flash *s) s->needed_bytes +=3D numonyx_extract_cfg_num_dummies(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_num_dummies(s, 1); break; case MAN_SPANSION: s->needed_bytes +=3D extract32(s->spansion_cr2v, @@ -1096,17 +1126,7 @@ static void decode_dio_read_cmd(Flash *s) s->needed_bytes +=3D numonyx_extract_cfg_num_dummies(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_num_dummies(s, 2); break; case MAN_ISSI: /* @@ -1146,17 +1166,7 @@ static void decode_qio_read_cmd(Flash *s) s->needed_bytes +=3D numonyx_extract_cfg_num_dummies(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_num_dummies(s, 4); break; case MAN_ISSI: /* --=20 2.34.1 From nobody Sun Jul 26 11:50:52 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=1782827929; cv=pass; d=zohomail.com; s=zohoarc; b=VZ//1JPesSKkHq3whtDS3/WR586PfD9t7flenw8gRSwnvluyIGz6vzEdliLBJsm+z3FtVLHox19W2Qyyci0AdYQiVwfDiVy++BUEsegcNNgD9Eg4iN+zXhGRGdhXyaAolTcZSYM9edr4xAZHg5WZNdbo2JO+595aYgyAUhYxSXw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782827929; 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=urClK7CbJWUxsopWabjCeZ7lje+qlWoWYdUqY8Kkjrw=; b=HqdPrNWocjLLeRIeOAtPQCruiK7m+gRmNekDmujFwhVbRDrnKnAUcE6yvivqeyrRUv/ONZ/5vp0LcFxdHnQ1CuiknAsJ1MW8hZz/Aklc1qtyeBsmFJZ55k3BFxE2rLP3XgAUW2cr97a9k3KSqBODxEBJRRIyT2NtE/0TyXXJaSM= 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 1782827929128872.1282405033054; Tue, 30 Jun 2026 06:58:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weYyi-00021b-8y; Tue, 30 Jun 2026 09:58: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 1weYyh-000217-16; Tue, 30 Jun 2026 09:58:19 -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 1weYyf-0003om-7t; Tue, 30 Jun 2026 09:58:18 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TYPPR02MB8959.apcprd02.prod.outlook.com (2603:1096:405:382::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Tue, 30 Jun 2026 13:58:04 +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.0159.018; Tue, 30 Jun 2026 13:58:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IXbxUrSRI3k2MkLfexH6LjdByKc8/rfpSykrop3dPlECTt9U8ALdhCzbeoCtHR4Y04bzED5A4xxaxaKeUyEHCmKMr3DuSwb+ONtHPUzwHIMagANMqWNU7xBt2f+l7O063q3Q/m4VK3XofwvlYSLnscwzg1cRsTZLu72icBp4ukZDv9wh0WDyG4q/MCZ/ycxZhv5tANeCTBIv8BrfSZecN+IwTS2gUS+/GzfTJprpW1PPy+qto9SGaNSy9lsAl8Xf7InNOzivMIiTuC433xaKZMSlQGw7xGB8o/CCgWCM7LLvWG+p1wOD/464MuE0EJJYFZIIcrqKXWZxOPvTV2ipkw== 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=urClK7CbJWUxsopWabjCeZ7lje+qlWoWYdUqY8Kkjrw=; b=akx3HF93ncsG4I4oHhNwhGWtQUsZqmkGdYxeA/qT9OkD0oaWn6iqzuQ6d7v1NMuWKYwyKK2zGbHizO6Lna8EbSu0weigQqHfHpdIkKnohqU2Y7Yb2m3XPmCMuzuwV6fqZBOsBTJ657RR5QL4e4hbf8k1J8RgmrMX1JZqPd3CTBFapJ/LlTp0ZU3aH5fMLqb2rRBlnoxqVyDAxb2ng6Tk5CTmIderaqYULV9lfmzGCpq6h5GBv3o+7vrbXtMQFVlBiwOQ6tSBooVdXhZTSP412Z55eL1UxuYddQQmoNV8Wd5+JWky0ZqT829HJ+E4fSHfFsrtsc/kHy407zl1fRoJvQ== 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=urClK7CbJWUxsopWabjCeZ7lje+qlWoWYdUqY8Kkjrw=; b=rGBAhu1eI9J6ljC231hopwB0cdn5T1/+xmH22X3prT/lwmepGseOBjiwO77gQIXhRihSdZO1p70w3WS744V2qVvGPR50FZZdiL6N4+OgeftYQz3hitoXxvSnJ7q53sVUv3kQ7z3JyhVIUDqZV8Qo/6WNVe0YCXHmdsENpsyVnOOH2+Aubb6eDXfXy3wAMTfib2XN22hl8UIGQYyFsdcN07GC+CzOs0Wm1mzHWtj7uj2SJltFKXfztFDuarz6Vkv2i3w3y/uCvbV2wJB2vXc67+JeP9U4SWGw1XsjiDAnJIvrQrZpU0udxbLGJongoiRbGAi7r3JPnIfiqU4qdpHz6g== 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 , Hanna Reitz , Kevin Wolf , qemu-block@nongnu.org Subject: [PATCH 04/10] hw/block: m25p80: Fix dummy byte handling for Spansion flash Date: Tue, 30 Jun 2026 21:57:23 +0800 Message-Id: <20260630135729.466264-5-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260630135729.466264-1-bin.meng@processmission.com> References: <20260630135729.466264-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0161.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::15) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TYPPR02MB8959:EE_ X-MS-Office365-Filtering-Correlation-Id: f5eaab4f-943f-4fce-45e9-08ded6af9b50 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|34096008|23010399003|3023799007|6133799003|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: fiMpOyHOZQzdMBROSXAinPtPdDNB65dfedsC85jZD5gMPNJlZEuHXqKgEM29GKTdhTbzWqEVmDT9/8vnGmh65/QGtU1Ly9qQU0hLwJf7GsAKaa6HVE463Vf1OeFd/uoejxcTPzgfPART+IKKGdJrqRC9yFLEr/pxisTJ2UYNkuMAOoXJgNBAsu/Jr+Rf3911awZxnjHIjGRhp4A1jH/X+W9WFJ8D8J7MTSOYp4gwfA5R6JP2HfOMukWbJHHVGDtxNplXdRfTjHy9vBzqAeFwwNvwEEb7g91CoIQLYgoLTgzCCU8bs11u2w7VzFM2z4EEn9YnjT1lksH7XUG4AcrsdMo4cuHy9sPuraV0tubsLOWGls8rIMYS0EouawIjg0Iwj9EYuDX4ni6Mq0saMd9IsS99C4Nkt2zUa8WKzpGTzedK7g8FFBwl6caDKR7MkXboIvGgzFWQahHFdrJI3qkrK92eSOoMJWgxBJzgdroJ3ziczZx7YQ1sEV36Y/QOdBsO4dbRhMeRhkyE3sDOrngC1nacxXKINBjGN01G8JUj2faAUHq3Gf+LNtuF68C0XIbgvEJ1FxRwLKOxL41s8w5+KDz6y4h7hmXz3WmzhZE1+gg7oEnYfKhsiBTyQRBob5EeQNdmI1QCjvXKwnPcGF4smNVB2JGKONzWCppRehXSf60= 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)(376014)(1800799024)(366016)(34096008)(23010399003)(3023799007)(6133799003)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SxJZ8BRWHJNK+TKgOQtyis0WQp4bmRamb4pncGt1/evu9qpPDRvevtKsNeA0?= =?us-ascii?Q?IMiRgmb/PP5gSRQe6oeglZT7rgqXwlfc7CPy5uv0iSl2FZri8zhRhwnnD3zP?= =?us-ascii?Q?5DqK0wk8SP9ZVCVDxP+isaLJ9Uq8Vm8diydp+mYQwlVhmtCaJQpTqwQ3nv6k?= =?us-ascii?Q?0H/2K4MHMmH4U6tisdJKQrq6QM0i91yFptuxjh+Ct3JRCVu1qJYwqP1QLlXh?= =?us-ascii?Q?kZTgr3adW6V/sdkwgJ4odDVP4tqahZSO28TMrpeaExxffTNNzpL99gH6OF08?= =?us-ascii?Q?+I7nxJCJFgHaNLocXdJe4UpjGQkOL2S8PREhsNvUhn0MmchSWXV+SOh/wcL7?= =?us-ascii?Q?u/bYAd82OBY/61UhYzartmkVCn3P9oeq37brW1/TagvyMA0UQqzceDalxpp4?= =?us-ascii?Q?Fdothsgp9qSBrs0Ftp7dtgX4VHYKkmQ7mn86aelIv2HNYKlXzBNmML5C01lo?= =?us-ascii?Q?YTEZyNDy7vb6xpFEV3zCSgJWVyPmYHqDhZl7/OUUzQpMqh45U7rGUA3IMXsP?= =?us-ascii?Q?q4b52z0/k5s1dFg67A1UA31bR4I+8Lth3UNIBTBtGCOOTyGfha+rJ8oCgNlF?= =?us-ascii?Q?5M54YkfYposI/WEKN8ShBiBc40L4ODTRpogFQ9oPhas1S30MdOxONvo6XQMq?= =?us-ascii?Q?PqEz4bUl2JopkgdFSSQkJPUXAO7ip35YWXpmfgP3WcI9ceDMhqjbLSovbT3G?= =?us-ascii?Q?EHNybhhFINRJAWZetA30Gx+jDWk9J5KxP7duTtjgg3DMfbUORzKt75NeDmnq?= =?us-ascii?Q?C3JRC3UWjlVgKOERi6PlHeg/DdNB+z33LT512zTsLl6Bt1cHjgqdtYzKKYAD?= =?us-ascii?Q?1fyEv3+Xb4bBepAvtV5FgRCR/kxAC4B6Oh75FK3OJipcdXDf/ZjyE01Zc3sd?= =?us-ascii?Q?qIi/+IjyZFRs4pW08MPRapJ18cgCjzaYphNUJ4DO6ddZlHczRDCxERzmrU/q?= =?us-ascii?Q?yPltB+bX3n115veT3B3F5pY3K0nAsZQDq/Zl8RqQ+jGnjAZSDoPVDT8LPBtb?= =?us-ascii?Q?kkJbz7XAxNn6dByqaO2H9nLu8accIsP0fTErAFVO3M3waY4RHDOydhCAWU+J?= =?us-ascii?Q?SR6VlK7xEuTqvEy8L2UXI8jF4dcYDflqRiN/0jQwaXAO/F+SnTv3mhD78dFu?= =?us-ascii?Q?i0CZSsx6NFgi96KFr3axMd6LqIh2+h+B9N1gNCzXZxAHZfvwjUh0DBEYTxCp?= =?us-ascii?Q?RxHZBFDV7Nq/fHHkK/iOPLd2JBDDrJNsI+jlLE1ces2LO6GfnoqHmoVggXCI?= =?us-ascii?Q?3PBTpQ0Rg2UfVSvQq8bqV/yHeGaeK43alTzf5HZ8xekV6CeWQxau0pjEjFSA?= =?us-ascii?Q?tIa2mpFHS0X5GE4+YWaATVQiw6SGauCBsbVTNdquxojF7SMb9WVbQolGunr0?= =?us-ascii?Q?jl+57+fGg44iL2Otpn6Sy8hJRsNuZEn6fg99A50bdYZksN47eIoioJxFbPr7?= =?us-ascii?Q?uNdz8AMtrPyw3FzUW6OBKjxmIbd7sNQdW5VpMiJ/Np+6G89Z11pUxImX5ZSW?= =?us-ascii?Q?07zePh0GPgXTUjXd/OxSPMEp8IPJ9IFtrbnLyOd+KvSe5uangYzIjUCzYIBE?= =?us-ascii?Q?t+ujTwBmXOG+1dV3s3V9l054V58Ox+0TX4hq0MeRhtcZS2oIbJLWbMTWSXsi?= =?us-ascii?Q?HnvebKOlca3YceVL1Mr0zhpjd/2GH1dhjwWrk5bncifRl39T5yzwlmEO9Pma?= =?us-ascii?Q?6XuTAmDi+zXn9okyvbntVoK3FYFUg0BDUgX/4X6C4WUj93rMOcbKSOh+UJ62?= =?us-ascii?Q?A13CcrtoIIvQiwpAM98IXhjks6Tif9E=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5eaab4f-943f-4fce-45e9-08ded6af9b50 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2026 13:58:04.8001 (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: vQxL/+XgLzTErGW5g7UVrOD0SEeaZ2Wt5HLo09sWih0cGeK5Rt6EMQMOMLIRBY2qff/C+srdhTtaMd0pcJZrhYXubGpN7es8XZKXKKo8YDY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR02MB8959 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: 1782827930198158500 Content-Type: text/plain; charset="utf-8" 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 --- 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 745d13dff6..e5d1bea5fc 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -1028,6 +1028,23 @@ static uint8_t numonyx_extract_cfg_num_dummies(Flash= *s) return num_dummies / 8; } =20 +static uint8_t spansion_extract_cfg_num_dummies(Flash *s, uint8_t bus_widt= h) +{ + uint8_t num_dummies; + + num_dummies =3D extract32(s->spansion_cr2v, SPANSION_DUMMY_CLK_POS, + SPANSION_DUMMY_CLK_LEN); + num_dummies *=3D bus_width; + + if (num_dummies % 8) { + qemu_log_mask(LOG_UNIMP, + "M25P80: the number of dummy bits is not multiple of= 8"); + num_dummies =3D ROUND_UP(num_dummies, 8); + } + + return num_dummies / 8; +} + static uint8_t macronix_extract_cfg_num_dummies(Flash *s, uint8_t bus_widt= h) { static const uint8_t dummy_cycles_fast[4] =3D { 8, 6, 8, 10 }; @@ -1081,10 +1098,7 @@ static void decode_fast_read_cmd(Flash *s) s->needed_bytes +=3D macronix_extract_cfg_num_dummies(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_num_dummies(s, 1); break; case MAN_ISSI: /* @@ -1117,10 +1131,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_num_dummies(s, 2); break; case MAN_NUMONYX: s->needed_bytes +=3D numonyx_extract_cfg_num_dummies(s); @@ -1157,10 +1168,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_num_dummies(s, 4); break; case MAN_NUMONYX: s->needed_bytes +=3D numonyx_extract_cfg_num_dummies(s); --=20 2.34.1 From nobody Sun Jul 26 11:50:52 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=1782827929; cv=pass; d=zohomail.com; s=zohoarc; b=fZRAPYeTTgbpDKHW5WsHWoAX145m25XCGgkxn4qyzpPy9v+hciMzSJGVaeMbBY4VYrVt60rOsVLQYnJc8MEfK/2jIsUUCBIXIIVn0/js0sahbPuKLZ52sNk7pMoMsm6C5Tcn7hoZSyDyP+p8ofNb4yGlaA6afYMN+BhwBFs98E8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782827929; 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=JGmPDBWqCwiArwDhd8Rn3QymfbMVCqJHdwEpowZbNxs=; b=F9GCgMfg0GmnYS1Uv13wn1VA6P4kNrvX1uxJHJ2m8Jjs6egB46bVL0OAMdK0AhjsfZ4SfNNoA0H9dCBzEL99vOYocXLRPspnZaBThNiqyfEFj/xOczzP9/ltG/c9gBvFMuUGKCBMKF3gYTxnqQ13bak5IdPdUHgWSF6jGPkFEg4= 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 1782827928901800.8527509258626; Tue, 30 Jun 2026 06:58:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weYyk-00022D-Rq; Tue, 30 Jun 2026 09:58:22 -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 1weYyj-00021w-7W; Tue, 30 Jun 2026 09:58:21 -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 1weYyh-0003om-PI; Tue, 30 Jun 2026 09:58:20 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TYPPR02MB8959.apcprd02.prod.outlook.com (2603:1096:405:382::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Tue, 30 Jun 2026 13:58:06 +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.0159.018; Tue, 30 Jun 2026 13:58:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PDEtARkobSzhErl+EkiQTNQTp1sl+Kn4uFF3pDBF+JjF+bUxIhVnNYSk/VZ2IWCP9ksZG7LOSR5Jzgfu5S8xaB4Ol8+4XVe5qcH1Z3WM7yoCfPuFUHcI1sXYqvSZhHfChFZ96eqxekVgcyao3+QX1//Mq7TVePj3eKspgwrr6r1A6Vh3TRhYz0QqwwbnpfaOa5Cv1wx61YFYgWvlUacd+g6+qcUY1PLpCH6NgbmUG8Vvfj0yhOWrN9OCZ7qeTvmFaULbLsyYp9BkZ6JjQMajkhTcwLePzOszX0Lz9wObbpyCa00tJ7UKW6bHuUIet9KSECKe7PqZzPEwUcZopadktA== 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=JGmPDBWqCwiArwDhd8Rn3QymfbMVCqJHdwEpowZbNxs=; b=GrQuxbbdzfbxVelxRNcGgTDAN5EwdFfQK/PyWmBDKju7W1apFatMkS4jT8XhmDEevuiCV8sU9BcNfBfcGxq/ubqG2chRJebhJHoc59QpgpI48q+oZBLv8rgH4Er9JS6QYgW/f9rcpM2j5H+sVpb29DjPLUkkfwSEICnT6DUKcNoetxKBjfrgkXKNR59zm5C+1KY1sPhswprXRu8olsXdtS5eAZmtZxX6Y0E5j5CVOAgpmo7DaVqXR1gHbIFgRk0H9bM9LTUm/3sOGkNJOKcJxiU6XboNUbyH2lBXfgbcPEHrR9mIWPOz0KE4pJDbMxYlCyQhWSfRfeYPsRo9eKHu+g== 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=JGmPDBWqCwiArwDhd8Rn3QymfbMVCqJHdwEpowZbNxs=; b=CeAl0XAMajMCz2oz9PtAwe0/p2zVIRd5/t9oGV4hcgwL26fnNYpCWnpMtGzNb28jB7ZxS7bgWD0XgK/itEwpXfRBWBknYh5fih5RDqSWDTg3Pn+HU9Z7i6pQX7Lm5GQ3pdwQPz9AD1XwJMeXnDZO+41iKaBQrWelHARuXUdLATvBwFigj4eJPgtPVXoEAWGpbIVRWCUWmXk9P7nGOOSTevjbsiDkpXWPsRvdCqtoz2UGzWzhpXadi23ajQlTIcAwVK/Ws7rWXnB8DfzxEPSmJbiNvr7cX42NJisW4N2WKb8Ijrjlj7K8meg2F7Q/KHAWzgGb7RpBOBMpuvFjMuSgkg== 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 05/10] hw/ssi: npcm7xx_fiu: Correct the dummy cycle emulation logic Date: Tue, 30 Jun 2026 21:57:24 +0800 Message-Id: <20260630135729.466264-6-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260630135729.466264-1-bin.meng@processmission.com> References: <20260630135729.466264-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0161.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::15) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TYPPR02MB8959:EE_ X-MS-Office365-Filtering-Correlation-Id: 13435999-98eb-4686-02d3-08ded6af9c6a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|34096008|23010399003|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: ku6VAmU0GyN+U0PZYnmQOluAfeUbILWLgfrspmzNiOv17K2X7/XHjopPA2Qe0gZDWJOKYKa6HjpQ1Uog4Lr/T1Kd/cSID/+R+R2DhQAGfgt+fuWlwoXIZKss1/Cl30ksMNnSEKV6Pjg7Tq0NGsXIAT/70r8XvxrZHXzG8ENCefMm7teIOG1i67rYprVph0c8ekl7yW8SLWjXROg0YVdMejpr0j/UE9MQEAUGwRmk4JRLH+vLl9SS2idRT08GBcTI7zdLxKEFmDxTI0uwyeFcannGQF4iOGRWCTZzdS/HkS97l7qmRLFpk/3wlNzS/a7oVjo6PQNAccowjgZoAgcr8Us+DCCYb1CD6r9emTlHrwpFlnaS8KFI5KNg+z2Vjy2xNkHfJd3JRL3zZwq5bHuquSLyT9+FV/EMHmZBLQKlVWFOK4drDRRLBhEX+aXvVkaRt8Rp97MaCo01Uqy6WjcMoaSrfF7Z+lF7foECm7iAbdK4OOZcbALIhLNsqsno8jk0DnTPSFAQl81280MuguMJJTCAlHPaHHM4SlsO/5heboOXtkfCEu6lEXn9ruvvnCFYvO1zMobWcWeIrmH6hAKORB4lp/RXhFeAz8DeWje5pqDDJJ/DPrgcC+s0zTEETYiztZtSlOYzXEErczdNw8Vhy7KfkvVdV+Ul8pxtPDV9tjQ= 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)(376014)(1800799024)(366016)(34096008)(23010399003)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?06ZNM4lZX+ByFPLic26kIfhWVTFzD8/NK8SSaXDbW0c33ssHW6FO65W18mMM?= =?us-ascii?Q?a5S8jXcTfu5cVsbluLQ/G7zOPUU19wGqVpL4dMmdNe57nFClxY5am8FtdacT?= =?us-ascii?Q?5ZNVTSA59EJhw8sejrM0hhXbzTlBlb0PvpxXRw5/mGlWG9NtZpTH1r0sKEC7?= =?us-ascii?Q?bNI1HuUKb5I2dgNUjizKKbBdvs145WqrGW2aLU65+gMAXnZUSB3n8u2hEmxa?= =?us-ascii?Q?649uurxK1XygSoa8z8ExBRXhSxtnl/ArBC70neWazwNmHtMqjWjQPLT1j80X?= =?us-ascii?Q?caqab3+qvT2BYOeH0Z6J0m1JwXRrN0unrClAatjZBbNosxHcjVrT1htlheUa?= =?us-ascii?Q?ueSBE6W5HwA1mAew76D1zHo6+JXRNmCqVjsH6ayAo+eRGiC4kBxXR+VJIz30?= =?us-ascii?Q?BfmoVCzDKYqAgtes02nNA+yzS2TtpRtBJ+d+jevCXHXq90Yba8fDj91pfRec?= =?us-ascii?Q?aOJCRZ1rfKnah/K1/8G4tpxr8e+MZ5qoAZ+6k8Frz5+UV5I0jogEzikbXqxC?= =?us-ascii?Q?vZw/ZYCWXyMbkQ/ib7p+uPUwm9s9Fcv5/1ZjgST/9UsoRqPKXsbB6HEI7CT+?= =?us-ascii?Q?PB688M8H1aORMTIAkiq7V6YMnvMu3k87FekFz9r0m5T7z5qWKmSSqx0qRP+9?= =?us-ascii?Q?myuYE1GX2sejETz63F7h633IL6Q0wZpT4Ruh/1pacnZl5ksMNMcOYR0s9/hB?= =?us-ascii?Q?ZkHTXWYgFR9KLdfZO405JOjQJYZDTo9QP64dcKj9h4HE3dfZDcqMoNLMTwFL?= =?us-ascii?Q?P1Eza56kvQ/4/nkG5ksduKoLBCQ4CjMsC31KGBIoXeI8b8aLK/6ZGHRIcY9P?= =?us-ascii?Q?1OzkxOKrdjIE5Nc2FqTcX3b+Dz3n+7GhgJtcqwVhiPEqEnHsl8euIYbzbhNz?= =?us-ascii?Q?gaCFqV1+3wpH1dWMFSo/SnjhAoLmtVeRwroFNLUkgkE0yQQtie3Av6I6arKz?= =?us-ascii?Q?Je61voQ/s5msV8EEJv5zzjqAAgAaQHvqtoFYPXyOe9TWzPjlYIjSLRcUkLPU?= =?us-ascii?Q?J3ui2keQeCrxApj5jO1vIWY0IyeE4sjnMiP387hRBUOIBGXb0TJ/3Iy5xkeo?= =?us-ascii?Q?j4Fj57tIqfzb1bDtG4nTJTexpD3WBffLRfsLeL+Y251/7pdQHdaEuBE2yLFN?= =?us-ascii?Q?RttY4Rq54Mndgv1UPcjTuQN/yKZYDX6NjYzUwdDQllsH9lDwED0KcBirZDhq?= =?us-ascii?Q?vcMnaeiuhv/mO+JMEHuog9+9mjMumngzgAMio1oAvoEWweiYZ5d9rELTVdio?= =?us-ascii?Q?r4/g6er2naa3re+bkQSZ1t68FMNsRA0vui729brDtm/6cKqDaGFBMjk78j4S?= =?us-ascii?Q?xZJJj7ZLURu4EwQwbLRLmLQcC2KOys+9rxruWdfXXIFdPFz9bxah5oTiKCuh?= =?us-ascii?Q?5Nl0+DcR6ETfobjAma428ZgORD9wgh2dME+HkkgsmKNqSYSu0a/UpbEQdbum?= =?us-ascii?Q?7RxYHGQNWO++BkT3JMMZEix0Na/MsqTC78E4F7YoeEZU1vv0Jvf+/J1WlUqN?= =?us-ascii?Q?3AxQF6AvlIJ84n9nG06MyQKjsxw2/zscSfVabtn2sZozJEAdIT6jA3+oSWbw?= =?us-ascii?Q?hbSJfgFQOnMfrV/4h3f8GClfeOmZyyIjVX0DxipF+lfQK4NldQIm6C0z9Pch?= =?us-ascii?Q?aSYLMs5IIQcjDFAm4PPJmaj0wlPXoJekb+j08d/3ijFWw3ZKcTsvFLde+8Ld?= =?us-ascii?Q?8E60XyDCHJkY2LLZ9B5H8HY4BTrVa7CSzsK/cObcPOJUjj9H2j0YOtgawB3h?= =?us-ascii?Q?BAb23WQEufSfVe/CF3gr7EHrYB4mWTo=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 13435999-98eb-4686-02d3-08ded6af9c6a X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2026 13:58:06.6391 (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: e5HUi3VnCTflhR9PjQ0/OfsEiwLOphqB2hyxJg+mgQyKQHsNghh9QlN8uotPBNsNDNUPy0dx2wVc9sA3d4n9p5KMScVU7CyFQ6mxGaHzPso= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR02MB8959 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: 1782827930193158500 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 Tested-by: C=C3=A9dric Le Goater --- 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..31900bbb68 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.34.1 From nobody Sun Jul 26 11:50:52 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=1782827994; cv=pass; d=zohomail.com; s=zohoarc; b=NzWWOGHYISivAFLpCYRNOFOMu96aDml9TMO0TViYWU3lpr+HoP23YN2R7nXquPYGspIMXjSpz/GFWffk9UYCA3a9gaJ80/fWpYPa8gjIgeuL6/w+gd7Qk7uhJ+DcDlM97X9u1SjrqjPxnSqVvImi/Q52IMgSQI2/c/dXONVUN3g= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782827994; 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=zzD8q5BY2iG8pOglsmPmBqC/035+v+0KOfKNGaB4CBg=; b=N2wm79wy08ZhFRTAiOdOMhElYvyXQL8LIK5fh4br48TviXVrZXuoWSGASOmIepQb4bq2NwBjlrKhaaFzoELvZop7UdKXm14fzTXuqV4sd2DIShsLK2fz/9iCX9T62z3iE5occRThet+qteZoqjZK4HoiL9r09sampF+43l4VTRk= 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 1782827994859359.38317331670714; Tue, 30 Jun 2026 06:59:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weYz2-00024Y-BQ; Tue, 30 Jun 2026 09:58:44 -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 1weYyq-00023K-J5; Tue, 30 Jun 2026 09:58:29 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.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 1weYyo-00040A-3i; Tue, 30 Jun 2026 09:58:28 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TYPPR02MB8959.apcprd02.prod.outlook.com (2603:1096:405:382::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Tue, 30 Jun 2026 13:58:08 +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.0159.018; Tue, 30 Jun 2026 13:58:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LQYDfaboSTrrPY29LleoI24DjLqSiSGMCfXLxSjjr130EWqq535Rc6JW4rzUYBZUZPNvyAdRreoYiHbuB7K+shcJ2YtUH6VRZj6cMj9cQTYEL8mA/JoWY7NYw8AOKUB/aRfwrbpfs5jfvMW6oOn/iC5+44UkyQPxyJ4PjMzRte83GvPu75p+cQpF24tEJMXcrLVlz7sNaZDhZBzZYnHARq/WSu85ukCjPT0gqkQdyxxVzUvjY73yR7NOZxaspAId24pv129+T1PrajlvjeC0DyKooqeeIw/VljOtgPPU0nkFPFa2V74pLpszBPa2g1y6Hgm5CkDqi83f2fvnomYVaA== 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=zzD8q5BY2iG8pOglsmPmBqC/035+v+0KOfKNGaB4CBg=; b=ArdayxKns9MSpdwrjxX2aHblM7F9fsqpFGtoX6QMfmwQtKm3EQSy7E9ya0cWbIhsquz2yZrXhuOvWihFdDlm9Vv7z731bnQNw9BSq+Cns/5FqFzRifDDMFFlrW42roT4xYdSsx56VsVzNYxtbaXjpxy9EZVLTzCHCntPv0JZfiEUs3gEWSlM00LFoiHfKo00MQt5/5mdFD0NCrefx9Mf/C7HfpJOMDuf8B/7EY+C+rSv+rv163RNPsrzMp/1K+m3PldZcaUt2e/H7IGYVYswE6C9IWnKGHlNAtmyWNuBtLLP2Y+cTLE+3mF/WfsKp1LaEz94cS29FXDHzESfZjJx4Q== 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=zzD8q5BY2iG8pOglsmPmBqC/035+v+0KOfKNGaB4CBg=; b=unQK7VW73MR4L1FKcs1cDwMC3SG34Ze2vW5n/svAofjmFFkOMuJYviuk5AyXdqowzytGXW5F6wcdMVqH8QTd8+8320GyNgijcyNm8hk/1GEt3NqdlS9uXZ4Cu19YloPUEcKxcmQ5XQnPO3ygxmB9O99t4SXan7xmxBTP4HZhkPc2htw39fgzsghdEknWlmiHst9Zq7Vd9nT1TSFoD+INhFL8pyqVnyrkcFulUJL2ItBw5Zt6y1yhUA5K1vMtshUjP7SrioUvoUtY3emftc8kiyU8W9m1/CbAWdoQ889XYry9/preqRp5St0dso9N67BD+Ok+8v4EA21DbkxAbUXH8Q== 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 06/10] hw/ssi: xilinx_spips: Fix dummy phase handling Date: Tue, 30 Jun 2026 21:57:25 +0800 Message-Id: <20260630135729.466264-7-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260630135729.466264-1-bin.meng@processmission.com> References: <20260630135729.466264-1-bin.meng@processmission.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0161.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::15) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TYPPR02MB8959:EE_ X-MS-Office365-Filtering-Correlation-Id: 024ac769-cf2c-4257-b37e-08ded6af9d79 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|34096008|23010399003|3023799007|6133799003|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: ba3HGOsj3c3PnepKSbsYeJfWqcuXccZQ8NqDsyHVqM76iLXm8lEszuk+4W6mwJDyR6ukOCc/rHI/OktXEfZ1U2GTXGSpt5DK9CTuAsAyuzNIiRh50NNsZI6emj7FGxt3URcUQQgfvbMM7jlfkbklseRkx9ueSqQQvJ9ikEkkaDR/qH8xbVGbhYpdl4Lf3zpuGUtGbfHuhUmsoSLO5YX+G+bw9aXzPtmOTRfR/cH+xM4meJE+9QWxMSVkjDQuQKSxfBY5PpgpiXLOqTAAr7hDJAJ4Rrqce3cCpIIAqeodkUdqR6OLDRCl+F/YovBj1B+W0aEn8z5vk1sc5nNF9mee3S69340r4BJOiHRuqV2Or7iTpZGPZJiDI+VHDquJWDgZHb+1uEK+ZGGCD27J9X9HFaJ/3dgV/h2Ugg1gPH1afZL7VEzAIobjBLF3J9BNlJPV2MRKgrC9RGG2H7Fr0IDYTqYl8ek3z29azTjASND4jWjVsGiZCpQCjxkkY+94rnpnP7pkXbbwYnXJMO2oOWvASLz2kMpoEg0uZ7wwNi5OcP3dqnXIP2GbDp9vmO7CR922MQbo9+mS+nKYU0lBBtLihTlX5Diiy/ClDCPI7VoKBVgxKGbWM7+jvkoZrWd9YzW6zPati53x6tJMIYEvT62TJ/YeXpyanJL6oxUUFPudA4M= 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)(376014)(1800799024)(366016)(34096008)(23010399003)(3023799007)(6133799003)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R0doNjRZWUVUREo5ejVzQ1dWWTBRN3h0MjBjQlR4MTQrUFVYK0JFS1dhNlNm?= =?utf-8?B?N0xPdHBhTDVJVGREakhuUGY4L2pxN0h0aEdDSnY1Ykp0bSs3UDdJL0pZU2Y0?= =?utf-8?B?ZGt2c2RESkxLNksyYXAzTzEwc1M0Mk9rTjhPMXR3clRsL0FVckV4UWlIeTlm?= =?utf-8?B?MkxCYmZYQlQxTGt5S3VrNG9la3NzZTBQdlR2T3JjOUcxZm5EOUtwYXFrQnlK?= =?utf-8?B?STM2R2p0L0Q3Z3BCMTB6ellUNklYZzhEM0xxVTk4aE5HbC9QOWs1eXR2RUtP?= =?utf-8?B?VDgvR1dFVkFBN1NGYUxvT3ZnWTBwU1NzeGVaaGZkcXc5TlN6RFowbkVJaXdS?= =?utf-8?B?S1FpNkFYS3o0RVBDblo3VkhqUkhGRHpQeUsrR0FDQVhjRnk3NFliUkVHNlZV?= =?utf-8?B?bjRnU3B5OTg3ck5HelUvaVNHQlZ1UXhjNzFxNXdLdTE4M2huaTAwcSt4K1ZS?= =?utf-8?B?U1dCTWFjU0FvejhwaFhMUDdQVGFKUmJXREovR1pvS3hKYzJzVnJIdU1YbTdh?= =?utf-8?B?TjRueVRSeUo0TjJEcXpENG91bmZ4bWlWZUpQd0d0UnNMNHpNeTNwZXFIb0ll?= =?utf-8?B?R3JnclU5cmdQVHBHQ0pCK3cyZHc1Z2ZtUE9IekF0cEhqSHRtZkJkeTBBVlZh?= =?utf-8?B?ZmdRRnJZTFlkUXQrZWw0VkQ1a2FMbzFEU0NCRzRFQ2cwc1NxaXV6dUhnZVhl?= =?utf-8?B?aUp6bDlVRnJWWlJDOFNZbEJWanE2OGs2b2JYbHhMVThiWlE0YW9ZcHMvT0FL?= =?utf-8?B?K0Rtbm4wa2FuU2Y0d2JOcWhHSndGajJJc2pncGJlSUN6TytHRzRQdVRQYzFr?= =?utf-8?B?R0ZVWktPa2xWcFFiWU5JZm5KaVhjSW9IRlNwaDhEU2ZrbHdOb3RxVnBnTjJs?= =?utf-8?B?MVBYRUoyT2Y1ZlpvWHBSemtYK2FhYzZoZGFoNUxESFNnRk9YRk1ja2JrbXpO?= =?utf-8?B?OWtiUlRJRHZDYUp2L0IxZG5nSUU0U3FIck1uQjlOMUQ2SHd3Rmd6VzlnU3kr?= =?utf-8?B?SWdZQm1kdWtGUmhKbzdHV2VLRndWTDJuT2dGNmVOWWIwWTlqVDMrWkpIaUhY?= =?utf-8?B?NEZrY2JTeVBFME5sR1BkcXd5QnM3Qm1DK1NQVzc4NHJqZ2lzTjNOVlFjQzk5?= =?utf-8?B?ZEdacThoUVl6cUY5U3FibEdtWHJUWGRsK1RaQWwxamM0SHJBa2FWc0g5K2Ju?= =?utf-8?B?WE53aHdJanAwdGF2bVJtbmJsUjhNbHcyZ052T2hRYUpaTnpCVWpuZlphQkFB?= =?utf-8?B?ajlGYVlNS1hkM2Q3TXhYVnNFMmpiSXhFZWEwT0E1cFdXQmlOWnAxUVIxeUp1?= =?utf-8?B?bi9Nc3VpTEt1cjhxWE9tbTJYbUtKQSszbmU3UllZc0NDVjNuZFJPdG5WYWlr?= =?utf-8?B?RTUwVnF3Y3R5bkxBRHlpNkpkSHNtM3JmZ3BFNnhZb29HajF2T1poVGc2bU9P?= =?utf-8?B?S2g1dFR5VS9pUEFoY3NCMEZwalF3TWFlK2VvZ2cwdVlITXpqaGpkZjRKVVhQ?= =?utf-8?B?NlJUQ1BMUUVnOFhmdlhwR2hFWE1mYnVzaHFwd0VveGxtVGhkRXYzU1hQVXd2?= =?utf-8?B?eVkzUklwellPaGIzeUNzZ0d5dU5tclc1RXJOczROanl4TXdlTDNDZGlhVnR6?= =?utf-8?B?QmlHRWNHQmRuNVo1NkRYTVFCNGRneWZTSEprT1VOYzhDQ1lGVUFnbGI2NGNp?= =?utf-8?B?L3Y5K01zdHVETWpJemVWbnBQY1lUam80cHpIaWZodkN4YjJjUktpdEEvQit5?= =?utf-8?B?UzlueXJxMlRSeGFvTGZJRlJUK2daNDU2MkVTM0FwaU5OR0swcmxMZ3I3Q0JD?= =?utf-8?B?UUpUVld4OFdqVk9qVFBnUUdJSWFVeG56RWdwQ3hMYmZXYTEreWZmbThSMlBD?= =?utf-8?B?ei9JLzVFRnNkUTdVVitaOGFQb3VoN3k3YUtPVi9MTzFQMGdRZjdlOHJnL0po?= =?utf-8?B?WngvTk9iMlFWbVFiQTBMRGcvOS9CditVRnFPVnRWWmF5TVEzWm9RNUdqWVYw?= =?utf-8?B?WU4zNllWSWxYTGgybDNyb3hCN0IvVS9QY0JFaXBmUXcrVXdhYUtBcTJVc0hB?= =?utf-8?B?YlZEZjd4bGVNbzluTWpNYml2YjJCWWE4Y2JwOWRqT1JuNC9Idjc0Z2Iyd0Ra?= =?utf-8?B?S0ZqaFZoZUxRYnlxQWVXdTBpNXNONmtRTFRYMzFGaDhZNkRpTUtobFk0TnV5?= =?utf-8?B?eFhzZnBoaXhUeXY2VFNIelFzeHJoeFJQakdJOE5aQ1NJNzNOZ3pDMjRhRm5K?= =?utf-8?B?RlptS1d4OTE2SFBQT3VwVVlueEh2U1hvb0xaeTBUTGpYdUgwUnRKckNLRUh5?= =?utf-8?B?SzlIeEt3SkhzbWVLSEp1ajV2Mkw0VVg1TzZ2QklpN0FoZVFWc01hTFJxYk40?= =?utf-8?Q?Cyb5rkq+T2YTEKH0=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 024ac769-cf2c-4257-b37e-08ded6af9d79 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2026 13:58:08.4409 (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: CumEsFOeyGyKHJLS2wPeek7fXSWTkDgpbqUfuSAnYnIOacdeo5W1iaXc+Rku0TVex7oXpzSnUjtEqCV5w1yvykEYdk+KmjhhulLhwnEh314= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR02MB8959 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:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1782827996708158501 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 genenic 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 Tested-by: C=C3=A9dric Le Goater --- include/hw/ssi/xilinx_spips.h | 2 +- hw/ssi/xilinx_spips.c | 120 ++++++++++++++++++++++++---------- 2 files changed, 88 insertions(+), 34 deletions(-) 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; diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c index f6e717bc01..fa98dc2dd8 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,54 @@ 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 +602,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 +619,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 +664,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 +683,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 +729,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 +741,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 +764,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 +1196,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 +1216,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 +1229,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); } --=20 2.34.1 From nobody Sun Jul 26 11:50:52 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=1782827949; cv=pass; d=zohomail.com; s=zohoarc; b=jBt/+unDPAvA1F+ftCpv6em0/NRTQSns4P58NmmobKJgbSTYTcOVTrrxCEA+ubzG2bnOONh01a7Gh95wbDbHH7sh5EpwM0yBwxQpk1k9zjGl3gpz47tCWTd9UhKJ5p8tkCAkbq/0UNOiyV3VYJjaOy/NoFfGcV8PAJpWPbFBuRs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782827949; 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=ENCf4yX4DLqru6hMUl/+ERSODshf7YuA/2OVunt83Bg=; b=DmTkhNIrtK/8r/PsBBYIwb1MClXmszzboV2nYNb98EfmPB4vDoiX9VfPU1/GW/NRLUrqa2XPTcuvyJLwndOUq9vQOi8A4Naa+MyeSeHllc4UupYroc1M/SluqYcyzDh/7ZRpg4HAj+3dKMbkjgx/bxc6HIUMXcmnwZRwEDv97Oc= 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 1782827949927352.0766803294018; Tue, 30 Jun 2026 06:59:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weYyr-00023F-6I; Tue, 30 Jun 2026 09:58:30 -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 1weYym-00022l-TH; Tue, 30 Jun 2026 09:58:25 -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 1weYyl-0003om-9I; Tue, 30 Jun 2026 09:58:24 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TYPPR02MB8959.apcprd02.prod.outlook.com (2603:1096:405:382::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Tue, 30 Jun 2026 13:58:11 +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.0159.018; Tue, 30 Jun 2026 13:58:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GRampWPsGeuVvM4a4VU/EEbxVjwNN1ouTqVSNTDv3AZ6zWydv7eHK2w5png7Y7S+OKGknTDDdpaEkGkW6Kj4OOEOIpRLZ26WUIMfaCuh60JmnSRm4386TKATvqUtM13/spLsXvFDHSqc4DDAFwdKYbmV8aTXVljo2J3T76kqhHDk5rkzm3SEjDJYa2+UN77f2uEs0gxlOk6kQJr/O6mV5ZBSiaAJLvQsA1td/CjW+8O0i6LId6LmJDVJG6mHqC1sndUlwR4gtyCMrZ0sI38TosLskpiSUzlaC0ccWYMpJGh7zOz/65jbv6+Z69QcssqXRfupyoB8g6AeWOP0U/+KqA== 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=ENCf4yX4DLqru6hMUl/+ERSODshf7YuA/2OVunt83Bg=; b=sN7uJ/oVhQ8rRcZTrxrEm6ev1bXe0dllOEc8GIp8ePQe/0R1Nlo1nz1dYUTjfPn9rtSPN2DABhPPn6RnnCSQW/mL5ivkIjrHdVcb4wL4AOZv6UkKAUi1uNg+BHacvoCWgDD3a2j1XZIOdsK9SnUOrRrtUqP8kLC5KYs2rcsDgVFoBLCHOLyWsw3dnIjprpcLY3PmWVlSqFfkfrElAz/oXGwpPY+6gNT1MVOueIiuQsaNOw1xrtEGrVmEw+Cl9GiBcmZ+HO9X9pXP3ZidZr5V0CGbKxTLAjQWFnkS4EtvrU3rn+ui+1FrnuxIWDnSqfkHUM4PhGZLyZWVKV4qZfQXRA== 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=ENCf4yX4DLqru6hMUl/+ERSODshf7YuA/2OVunt83Bg=; b=Dg31aYzs++wquiaVwNepNA+zNcy5561bHRcAJunuFyXkwf8WAHRO9tARTicVbJ6Az5PKIUVjeM6uvzYKRxkIPTe2h9LIh0BK8WX56GaLXN8iocANXTFlQva49yNnA4lBruGQ72o1VPIrqkrcB2D/+xmBNtsLkV68HyT7j/2v06hymwxfznQt5t2N9DcmoHJLZbw98mNpZeel67KL29WjSHW5OPDfdrDEWlD++5iMrGiyGHHFBNtTf4F/3k0aPw2Q3P67wa40no+kVx+3gPFfyUnKSmf8ZzoXTVsF5G6IfvvvRl6hJvjSx7wBDjjNzAd2xFfw8UD5mZteECcjeWiDmQ== 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 , 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 07/10] hw/ssi: aspeed_smc: Fix direct-read dummy bytes Date: Tue, 30 Jun 2026 21:57:26 +0800 Message-Id: <20260630135729.466264-8-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260630135729.466264-1-bin.meng@processmission.com> References: <20260630135729.466264-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0161.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::15) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TYPPR02MB8959:EE_ X-MS-Office365-Filtering-Correlation-Id: 272496c8-84e3-47f7-e498-08ded6af9f38 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|34096008|23010399003|7416014|6133799003|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: apPIGzg0txUS2aPRCxSoKy2I/0Rg5jT/6dYVIxMx/Ovbasae4NqBywdy7B5Z8udO3yWiSa33SzB6vyoyAfsMbYu654eCke5busBKHQxqPWL87gPwFmAw+rL7v1goac80VpJPjpbO7C1mOv7zIbHvO70II3uzX6Q0ZP5R9Fj5hqgDK4EM5QA83/1kreqBiYxTzgpzdur2/8vt7soKsSURBK4ngGY23xvF7mNyCK/Ceg0e3NyPd7f42hG3UMIL0kZUrduWqUnL3WVgOPuT60qqECjtKhcieO7jccXhWUgtwRWl9vh3rNUPzkPapjXzpEthpMALhq9TsyqaiYwuGeJBcRVLyEkEAjNIA4/qzBQqo5XJHLmdgxqKTLip2nNBtg7aUYJ4ue49yrokRmSiAmuT9RABA/aupGLTy18JkOrLOFhuRyoRZIYwGaXmr3X2Yg0SZdxwa+8zO7wUQq9ygxYQctgw6V/7cOAL/ZekK+AH4B0yXDITOu4oEwJkYJdqSiCRjVPYll0jhUUFLTaPRnXZ6oPqWm0yOSht2UrVj5QLmI8De9J52oumeaa6l4yu2SAnugiplFgZZEjzsN3krm3NVBD9OVRESbjds3abyOJmaxzx+VeoBJPL4/AVzt13Mrkuutt8oTmh9DqCCh2A/sIFuJsgtTFB2FwpgL3o4cb5tpg= 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)(376014)(1800799024)(366016)(34096008)(23010399003)(7416014)(6133799003)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?CdETN+mrBPAq40RnEelFhVKKlAx9wEeEh2IlurbfHQDkC8PoYjTN03/yIFcT?= =?us-ascii?Q?y5TAw4W+llvED1OoHyTkFTqf2TtHQ8PgAj8CJT+bVEXaDrKX8T4S7vdiQj68?= =?us-ascii?Q?AqToC7W33ureLIfrYLDvwPTY5qTma93syxG3tZ78U3jcChVZwwGy0nvrk2af?= =?us-ascii?Q?BEswEgxi4wmHtB4/AEcclBMX/0A1GbLJaIMNiDWttGQjj1A8XkhSg9VpS874?= =?us-ascii?Q?EMQdeQ6O9pjeo6d2N8DReI/CR3HIZ7BwBhSV+8hY3u72t2wNPCo4EHV1M65s?= =?us-ascii?Q?sTXFEjVkwvNd9qy5izMiA+MUbJUtQlJGFnU9pRaQWHlF+5GadXF8dX6v4TQl?= =?us-ascii?Q?ZTx2J9cLXO/HJ/5lONHaRTUMV+UZDxWXEs+fBvuOz3fIhnhDfS2z5o8928Wd?= =?us-ascii?Q?Dp9EU+Vxd+aq098quvfU+pHP8umJJ1O2+SGUcreQ9OflfsQZL4doaIS2jEkQ?= =?us-ascii?Q?wSQ7f3eLCjbNTon5mwVX2HzVqEYy+dWSBeroac5c6jIIwr4FavRcpHWWS5ih?= =?us-ascii?Q?07AH/NHw8HLCjWvDck8XURd3tDIcytUzHxsbLB5/QW+9PK2lK83PE3ldNUKT?= =?us-ascii?Q?JY39vxG+JUuSEAcLTd6PdN4R1Uxor2a026jXrTvu+pPKM3EsDfvyM9+KOKFu?= =?us-ascii?Q?4O87pVDIneElRgNpgnmopcnY649BU7A37ruIW6PHwnKXkvX0I/rfxXnispkL?= =?us-ascii?Q?O/V0+QgcQ/jNVP+hnxOTVFt/YYc9t6AWI1aNRB9/fk6aNt+M4OazU6lI0LPt?= =?us-ascii?Q?rm7coGU+3VO1G+FyyK6jfijGLMoEh9YWUTC5nXfxJYmoZYSd0aiVQzdLtKRf?= =?us-ascii?Q?1+nPtWJwY16cwpSJGXr7D67te3QbO+xkL9ecXiF/bvPJxssEyOZqaoqpMoOA?= =?us-ascii?Q?ybEbAPaSgxdqFctGOi1KIRR5/b8dIrSrx52V9/XUz+3Jcxiysz8hZKPbfrhJ?= =?us-ascii?Q?GeRnuZG8ss3D8qR8l6qdX5GnKBvXfIFwswXiCE9h6Fkm/4X8Ev3f/NNb/B0T?= =?us-ascii?Q?Jgfo05DukNc9OhEjxHFQ3AXVeAATtiMhq6wz7IgqWbelSGLaGV8nHbEdoCGp?= =?us-ascii?Q?C6ER9XvQYauHZK8GtYhVVTi5O1XGE7j+FlrjjoM8OuTsifEUiQ1hMlC1yEDt?= =?us-ascii?Q?dJB01yHcy7qUy5KToGvzSvUox2MRXK0uejR5BBeD2ThmFPF43rzkbihZzQCH?= =?us-ascii?Q?NcT6P0FjU7pGFabe79waNjyjDV1+WTjz9RGBbklF+NWqHINSn96fOymLvzzN?= =?us-ascii?Q?KIE8wb1KUQmMl4gLa0xgLOQjXYLm9mZzgPgSRro6J5ZaQytwu8jgp8nUGm3S?= =?us-ascii?Q?YSWkwLye1OjTZcsZ7VqmnoyU2ssrbCEeDAH2UVGDTU43cTXnAxDnQ8HUnf/b?= =?us-ascii?Q?A4qOm2Du3VIEFLhJnz+qe04Tj6tDZw2U45n+/keVV9JnOi8NejqX8/R+P51x?= =?us-ascii?Q?3NNxh3pDWX9JI74G+qwOgTh1rS22EoGLQAQpb92/tqNu9XRHqrrDgvA/6FXN?= =?us-ascii?Q?6d7X8AoNKFnj37nAIV2iiLI7vUbR9S/oOzliDxpbgFOhT+peJRpBJM3KLiRH?= =?us-ascii?Q?XIQbNv0Zo8LWa2pSNP+D+P31ChpsLjXt3MNkUK82jlfXj2Jc4ngBrOmTuE4P?= =?us-ascii?Q?g7nXyW4R9ST/190hND+v0xgwbP/uJkWswwj5dh0/imKyNTbngYzC64yFXswZ?= =?us-ascii?Q?ZBPxDRB+7qIagj7MQegpjFQMkT8fR4cj1hvxYaII3z21gJhPT7tkTO53diKB?= =?us-ascii?Q?S0uaBmKz6sqXJrIho6m3QBXm1Xz72DQ=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 272496c8-84e3-47f7-e498-08ded6af9f38 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2026 13:58:11.3563 (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: CVoh4slonqCioel9h7TAndHtbaUNOo7tLohozsB31y2b+rHgaXuQ2Q0Y31ZGWmXUqQtg+R0aDgscpoFGXhQsxEvmWKjmJ7CRh895uAvh5c8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR02MB8959 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: 1782827952789158500 Content-Type: text/plain; charset="utf-8" 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 --- 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..f5abc9fcc9 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_byte =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_byte *=3D 4; + } else if ((r_ctrl0 & CTRL_IO_DUAL_DATA) && + (r_ctrl0 & CTRL_IO_DUAL_ADDR_DATA)) { + dummy_byte *=3D 2; } =20 - return dummies; + return dummy_byte; } =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.34.1 From nobody Sun Jul 26 11:50:52 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=1782827995; cv=pass; d=zohomail.com; s=zohoarc; b=F/ktAN7x8wG5pxaJCHY8cImiIwogj1L+AgOpgv1lddWw01rWztfrIzndwpTIMmUo54Bhb1Av3fdRoMj3DW2sPu49cqVq7qtK7sh+q/EyrGYixJed7uu6awysPN2j3+WIjQxJTmvEgu8JQIzl7X3tgyGB8MkoopjWZa0zo4QhuqA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782827995; 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=Y1sjayF5ObqNguGjmSLOK+Ap0DWobwdKEGhwAIhaR6w=; b=S9b3i2LVGDbl94TvmiMyn+w4gx/VBvNNQTjl/74ZWlpnMl5gMDT07uLaGFBV3F1/Tyy4KsPqXjoDiys09MefZIUpyTDQ8R1JEZ6MBgpEEFklhkw/m0Cttv3agsi+XQFVr3JjZUGrdWTmIn5XZEaOy5bWt2pYdlC1fvzFqcbxA/U= 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 1782827995336217.68963245168516; Tue, 30 Jun 2026 06:59:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weYz6-00025B-Lu; Tue, 30 Jun 2026 09:58:44 -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 1weYyq-00023J-55; Tue, 30 Jun 2026 09:58:29 -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 1weYyo-0003om-3R; Tue, 30 Jun 2026 09:58:27 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TYPPR02MB8959.apcprd02.prod.outlook.com (2603:1096:405:382::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Tue, 30 Jun 2026 13:58:14 +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.0159.018; Tue, 30 Jun 2026 13:58:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KcipN/9xtKNariXQMn6PXO/RsFBwJbmkWA0EylTbqPpLayZ4JDe9yp2s30ZrS5DaEEN5QK4amZeq3cfDVaMIk6YGZ3L3rUsws3Tjv5kUUZe+J+FAVz112idtG5FaHIs19SvOfK2bPZV9Ea1O6aWEnHrRnFRtcRFfjf9F8vWQfoNDUW7If8A+iGcgX7Hy7/SEJzztvDYqLl5pvPryrE7VaZJTS59afMF3+ALy2Ejx09rjvexENV1W76ps0OpTP01ml9sbiBFeQTCBVrUqzqpIfhPmaPzrEwiM3C7sAYnKxgXCneyqDrm3lhgmDS4Skv0wH/phgaeoqS2HdluR1eJlyw== 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=Y1sjayF5ObqNguGjmSLOK+Ap0DWobwdKEGhwAIhaR6w=; b=NVqiBc1ZYvaKl0s3+xJ9BpX99Uu6wPIOje5M2JBhw9mIW8mkDBsE/7M1bsEJVq83tDhx+tkI7qt6TUhVX8Ju/LJBG6d7xLs6KFJGRWTcC84tHdUNc9cep79sYs6EPq90wVG7Fe0xyek9NZwcZXVEJ0Ai48yc/YXa3tRFeHBLD44Ov9RqFYjtr/QYTrbdbShHFfh87HJqQWwjVGs2NjvCovubLYordcR5hDv1psGExVpzROKLsEDJpPSGacrZqSCzS55AMlwZ7rIA6QYONHFpqIrYYuOy9uO4mcubPyPEhWJnhnSpO6RH0ZvVeh2I/VycPmiek7A5ghyOodzPUdRL+g== 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=Y1sjayF5ObqNguGjmSLOK+Ap0DWobwdKEGhwAIhaR6w=; b=bw9KggLoVcZOKM0GJkVQeoqmHPXFNq2PZItvjm6IHDQLZtJxizgVivoI+WITZ2tVXeR2B1xutQL1kQgGsQjy4aF1i+QS6y0w4lNWOItXMVfIfzaSDpdZouG4d/5fEtmX8l55MAreDLeNrEo5QaqHm8RtOusj0ULBF2cxJglvfoMGk4zK5munYqpSxEOqht9UhrGWL2tg5+lcoJXEpmUUUUcE+bwtu76XQD0Vpwq4EP63qbYwI+jovBv9CDk4Qj+4mUKoJ60lKNLzhWQVnd4wMEqLDcgNtVPujYgtttOZp/rUiuhmNBFt31OrT/IJ5NO9egv+ItrasIIv0OfpuhDISg== 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 , 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 08/10] Revert "aspeed/smc: Fix number of dummy cycles for FAST_READ_4 command" Date: Tue, 30 Jun 2026 21:57:27 +0800 Message-Id: <20260630135729.466264-9-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260630135729.466264-1-bin.meng@processmission.com> References: <20260630135729.466264-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0161.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::15) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TYPPR02MB8959:EE_ X-MS-Office365-Filtering-Correlation-Id: 99aa5c7e-2028-4203-e093-08ded6afa0ea X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|34096008|23010399003|7416014|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: XZrAF0ktr5RB9PHUyAxV+md3IQZqaQ7/joqH9MYxPSQoZBqjOTkYaFRr0JaOzXbN4UUSro2h22BeYEqXqvTRYOKFAtnSrYYNCtbv+OSUC5VjP0TuioG0kdIfWgCn2ZJTsfgo9FCInt4Nxy+CxjTbjVXr3CVoOscSF2fNybfXc2wqTE9XtAWBkr65jLUKlubQ43BENEywquM3rlsm43d/N2G5b9qAMBgUKZqffZLezD8xgywG68cKBPYnYIf2TSKPIyRsF7wDn+nMnDt+l79bK7HYkhce+YuhwoyIHMkxuJ7mUdBd7colq2VDZWQ1ydrEJ5y6Kpn+y3qiYwxNvOnkVSuLB/nSc5xyL/kTjXs6V+LtvwHmSuJI306+DiovQv2GPG2I408rlNJ3rL9rPfvggtRJLa0UCQ+5dUZvDEsDY0venMD3uwdPQ0K8iqmqbtlf/lDrAMY8MvaMdG2U6NOyqMIW9y7qT+HN+fBzwQ0h0C9aP2N80EBDHPrrxRyKuUBbXHfCLmQx/UWGb5gIRiMHgYFYDuo435i2/peofZ3lmn9HXVSLl5aiG7AMQcrpgTg7Um8JnyG4pVpLQBJoUrYMB0BgZ/fW+Mc8U82u2uoxeT4lJ/gO0SBS9OkaTPsQJmgNcAmA1C+gMDrplp2VYHBqwQS4xemVRUKdHx+zNer60j0= 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)(376014)(1800799024)(366016)(34096008)(23010399003)(7416014)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+4Eclop7N7Ldj62+fFnnfOBsxifv5HN9z1vSexnjyQ4++O/Ch2Fyxa906b9s?= =?us-ascii?Q?CgAwUd5/NkVCiSa/bsmBniOCz4FkolLyuhLBJesWctqo3TrgoxFNe1jtchvq?= =?us-ascii?Q?A1SUnWkIkrlC0HvBvFD6mSfWav7U566mExpGGEkyajV3yqoYMc/NUSgIXxdm?= =?us-ascii?Q?oSYYi/6kJjnS7hIwfVmSuMsBwoDs8H/10v+rt2QHrBQFjwDOV+sbzrsfSh5m?= =?us-ascii?Q?C76nmaGhmNWPnsxcuxtC5gnSTKo1ee/RBZFuda8JxK86ILmS4qfy+DM+97+T?= =?us-ascii?Q?eYIHA9KKMcbJ4yOHWzIoljThdKigrijo1w/3Lwqta4sBVT/AkBfXj3u8Dx0w?= =?us-ascii?Q?9tp/wIM2JjewfY68sIXqqJZ+GT6YDraSl7JSVEUeLPhJvYY708dC+xm8H9mw?= =?us-ascii?Q?joOrQ4uox4Nz8rd+g54944eorbVy589z79YuJqQRoNv6ymXXvnZ93ji7o46b?= =?us-ascii?Q?j03xDmmCSaHzgx3qkwAP8pejD3yv5VFqiBK26BTRpvDk4BOU0BFqo3FB7fnz?= =?us-ascii?Q?9KQWtf4rv81JP3ce+hPwkF5PCmg9126vNUE6LSjIQtN8o7DQm8U34qArG7U5?= =?us-ascii?Q?krxEuC2nLqxF+KHOhTyFN1S7v5rmDAoimGglbyDKT0tz1YXftIdPBQf2hXMG?= =?us-ascii?Q?gPKsgh4/YGtWqPtceX9oStu1tT4crHJIhpubPNRlKSR8YOl/dtr3sBG7Jgwd?= =?us-ascii?Q?MKBQoDDJTD3mtwfcZnznTRC1f/roChzrZe7Rj41agUwSl7swio8jHfsvt16M?= =?us-ascii?Q?Sfk+67dvgJ2LGlTjxN2zC3y4muAYca9+Q3kAzAWsyUPKRYGdTTySSe2/4S+h?= =?us-ascii?Q?jPH4mDLHqnZFtRdlS0qwg/jKCPSSf3hvBm2UnGJajvWyl12jtosb6SaavBvy?= =?us-ascii?Q?hdV4dn72f5Nj5aFXHS01mg3MgU7FMNV0O+swKzPc2Ohf3r6iD1Bp5EQrJ4cH?= =?us-ascii?Q?ScaT6YfIAVWVMWNQ68udIWM/Tv6kzg5mDI8XxddS18eIS+8yitpfewxHpAeX?= =?us-ascii?Q?AUcZrRNhDSUzFJvUNpU9GthB5MxUk6MIlmmMhItTgpQbDGAd6oWo26f7WJyV?= =?us-ascii?Q?YL9iJGSPuUbaJlkeAwkpHKDlR01oVqdu11QoBXWAmlCeMXNy4mYMievKM7Fj?= =?us-ascii?Q?0lL6azvCBvHA3QF0nhpHCtEvMl7N40hDgo4tdyqQo28XHvE/4KLUm16hdD4D?= =?us-ascii?Q?MUTPxoaPfwXDzlfJ5jwo1dBi0leVHkjQpyE9DaiRi6TqVRfewepBVVrDf1ex?= =?us-ascii?Q?Zj7YIjRCuWF0Rk2XCo0CIBeNm2my9eB+PPj/GsWVl/tNMOwNXX7dnvuF2ymP?= =?us-ascii?Q?00ErnbFpv91wTKP8aEp/QoKLi3rT7kBI8O4C2WqN/vWhHZaortCqAh3aRTCy?= =?us-ascii?Q?9cRrOCTSpNKvy020KZkkk7lLo35J4WEkJQMRiAijm+fQVhw93Td7KTkz8Afj?= =?us-ascii?Q?DsunBud3qVeIfRk6AmvMK3oCcCoNV9Djm9d1LppSJVrnAzYRvT8uPXS+/Dbr?= =?us-ascii?Q?CdJB6tWpBn/OGsv77N6IWtQWTNZyXCM1iLIT3cUhfw3rwWfUYhn0zu9N2c6n?= =?us-ascii?Q?VflH4jOwfYBhY5Pry8wYRQuvDmI5GFwwrLhbeI5soTswrTXuVWBV8Bb77AMB?= =?us-ascii?Q?DxUBzIuTMMd3qmVm+EjGaT9VinDDWwk1B8hZabVKruFTuuPdAneOfbYfofUn?= =?us-ascii?Q?0nCzLEx+b4OyO6u7z2lIbWLcrYGxeS8j86UeRbtvRtd3UT6SbD2yYRTu87wI?= =?us-ascii?Q?IBpvXPdD9CL/+lESEDcHzZzQKFR5KlY=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 99aa5c7e-2028-4203-e093-08ded6afa0ea X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2026 13:58:14.2431 (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: XEy7hlT5phWgejCFbQcv0BE5sHQByN73pNY4/Ygl42NPzc/Ud9ZMlmbf732YkJkeEvPnzszLEdSF8QAAD6dwyaU8AxW2JkNqypGxoGg+mIs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR02MB8959 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: 1782827996590158500 Content-Type: text/plain; charset="utf-8" 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 --- 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 f5abc9fcc9..c2a732664b 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.34.1 From nobody Sun Jul 26 11:50:52 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=1782828027; cv=pass; d=zohomail.com; s=zohoarc; b=BUMlfzPIk24KTDQhxdhofHrsbPGhJORfA3XYL4sNL+mljJDm0f+iCU20ERFKHfQr2M1fUqMg9HZ8Z6KM8UFSSM8hiAE7SMEyTRRPn91D6eh5GC18g/OGlXCGDFQpd0Ep4PGaCO/pbPfPJ9a2v8lbngagmDWvN3QpklvoFsQeJH0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782828027; 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=RbCj2tP2kDYscwQyGmkrxWJbt0IrvGxWtGBkGkl7Nak=; b=clLLduFc3z+K52FxhTN5DJTEZ80y9eFtcCR7C0qcnC/CPE70OUfS/0TBcYQoD/4N17aTutHHvG9nD1I5nlJ3a3ZaJ+3mLtTencq99/Jb+THiruGjf1g/taGOVFW/FKxg0quHYXk4p7EwvRAEGYe0F9RNYVFDeOT4NBIodD7kMVw= 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 178282802773378.16159618448762; Tue, 30 Jun 2026 07:00:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weYz7-000268-71; Tue, 30 Jun 2026 09:58:45 -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 1weYys-00023w-SE; Tue, 30 Jun 2026 09:58:32 -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 1weYyq-0003om-Vu; Tue, 30 Jun 2026 09:58:30 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TYPPR02MB8959.apcprd02.prod.outlook.com (2603:1096:405:382::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Tue, 30 Jun 2026 13:58:17 +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.0159.018; Tue, 30 Jun 2026 13:58:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=J/blmQRDJkux9soLPvDFuKkbx49Fi+JxUOG7oZ+wBITKgZKHbhrKdJIHFzvSpmijYZE/x6eRbhFzvwDMsrXMmSSikTnKY8igrGA6qaJN60j4KYl+ji84kE5a6kkmjzFE1D90hHqeAMc7gUFhw4x1eXDJuARQzv39ZUggsaeHmFW4+07tHe4SVsu8FaDPsD7XD9tEQXxaC/CtFtvVU7GEVk4QkYL52N3HVhoRjGZ169bny2BpGwUNQUlZ+6GbX8mAq17MP8B51zR/WMIo2x2JHr3daFVMYboUGh/v0jyqLlCuruWJk3VLQvyG1wHR/cZdzcL5ePBqspppozcnlAE+rQ== 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=RbCj2tP2kDYscwQyGmkrxWJbt0IrvGxWtGBkGkl7Nak=; b=Y89y7IfFU9DdZT6s7BBiuGpb3C6JO3fnxzCR37J6fPoLsc/dmAu0kxTP9EW/8KrIqXEN8VhHcs125Ea5jZ4MnN65z7qjMAw1XbAWEsNJSUZWKWWGoMA7TzeAcpzTR+CWbUY+gNSFCoUPUA+VtQQ7B/76KNFFQwqNnye+8fJxoEkiRUbArz4Q89XntyQF+b4pmdM1vSVGJGFeIxbV/J1DaX6zfXIDschgjg/OvxrqR+HbsX5ozWXwcvih70e455ApOULwzmOKsVIWpHO37kKRX5TVDQJvljXxf81JL32TXwwCGZJHzgLwUKEk0G/IrP9ueNxWxlEJKRN13cX4a1t4xQ== 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=RbCj2tP2kDYscwQyGmkrxWJbt0IrvGxWtGBkGkl7Nak=; b=pY3iFfEY3HhiptLpHKkqfOjj8nzv1uEf/X/yw1j+vDT+NXcilSlccRB3JAaq983t9+lSPpOHLdP7HKQ8i7E9fGsnWjmQr7gjCAxHGO/iRm3pWHLwqTRFHDmVNtcEVl76mtuNrFrgCyWewJEqY+8rUaFGUw6RPFgvtCrnP7O5Tre2Fq9X2CDl2QLr9LzkMxifdEiesaHDRImG9JqO5Gec69JkP8kFHXmkBZEKGstmjriC+3kZphSX/AkGkwQ5rZEMy2dTXNtkSradfig/XqAdr/UrDMDp6KEw/vIuJJFlJY0PeNEDjUy5g49LQfry8ms8aAe+D2ecidO1GR21yFGFwQ== 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 , 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 09/10] Revert "aspeed/smc: snoop SPI transfers to fake dummy cycles" Date: Tue, 30 Jun 2026 21:57:28 +0800 Message-Id: <20260630135729.466264-10-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260630135729.466264-1-bin.meng@processmission.com> References: <20260630135729.466264-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0161.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::15) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TYPPR02MB8959:EE_ X-MS-Office365-Filtering-Correlation-Id: 85935784-7f7a-404a-8d63-08ded6afa2a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|34096008|23010399003|7416014|5023799004|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: kARvLMFf7SKyw3OzGvD6Lc0OFJSWtG4QOWh3I6QdyeIMIFlZlrstBbxJVVXjwTOSX++Nyw9E5/+I+/nXD5MVVDFIfJ8ToBTPb9KcJZ0hBKFPiZaX8nQB3p2QznC4Kise+xX8SoTa5159wAuGrgnjVHcLStfT03Box6DHyoWw8Z5MjHOAmAzo0nojTNO+1F+LZIf38iPaeh+CmyDp3QgcB7cIO79pqwrcn1jU5DL6WfhEv5RAfzlKwC0dwQjWN1yPag5WDr4xVtUTgeq07mbkuCExk3UDfko6vy/+nISpuU1KhICRfn5rrfz32pgDMWVi6SCTDzTg/D/sivRA9l4mgX9Vr2G8D3IjKMQB5irGN5EMtePKWZv60xgq1l2epvxx+34f1HnWYIf7W1QIpXNrkpKOrPLvmESTrvkeQmI78LgU3VnaFVi8ELA/3QZ7Kfqum0RNZUlcnTOCCwSkEtC8kuclo2Td9rJYJbervMmn5L7BN+breBkgnx22xu63S/D64tDYaYZjljy5Tf5d9PyVPmqaVn1Bg+eFlnQ9wZUiMydCpbaH5YMr6KGGVibkpcTC34cFQxQzenw7Ue0l4Oa6C2+wz0J12Pd3sHJMLj0VEKmAn7/ihbQ+SGfYP729afpK1hyzVfSVFMlgTeNRFjw/Wu8RncrLe9NiqNFaHfi1v9Q= 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)(376014)(1800799024)(366016)(34096008)(23010399003)(7416014)(5023799004)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?X1PXULAj1trvYLXNXRweJds0gFsMd4fq1FLuKdmF1rB9xBVLtktXHwWJBOIN?= =?us-ascii?Q?H4POin/1MDabAvLmgwq6AIhpYLgFlP+bB2xJulXd/QMKhW3SMbgUDqrYDPzU?= =?us-ascii?Q?BZUaEnrNyKJYjO+Zxghlj1Clu6kydizBId0ntvhNiHIJh+tSTsZdpQ/Tb3gd?= =?us-ascii?Q?HTqMKgXuqQmhEL4AP52O9yORcur8FtremHVrdhwVcJW8AIyG/8EbxcOLMUQH?= =?us-ascii?Q?87lVYr6+JeHeYY3TSXn2PYPwZ7fN3fLL2B0ElNT+kTRAsaIQ7pfPcK4rfp6J?= =?us-ascii?Q?0s3e/lPQKBlXoKbO36FZFeSqpju2AiAsW9Aw5sE7Kvfw1b3qzmswCukgyN/i?= =?us-ascii?Q?pb8BxQyltBrzTIokdJFYTCHp9drWtyw8Kg5+9ioVwMPYAGYN3/ONDV6UxPr/?= =?us-ascii?Q?sDwQA8xl8/te6Fren2mPAgegFWmSheaJ/ow+LM7I5JhDZ7vET42i4ytVf+uh?= =?us-ascii?Q?tc64Cl1mMz/kgk3Mii+mcGJoN75Xqw2Da9vW/nCQS7tcQWwQ8arvb/BAGuyG?= =?us-ascii?Q?R8THH2HqpW8mNUQEp0zLX/yiqdWZqGZn+0bdNYNuT1ZgL9+d/+StPbzVu14T?= =?us-ascii?Q?4xEbVRRZ43F35jsAxqtxMZMYLVaOEIE3Iqig8sGMPkC9nGHpoj2wK9DjRAkr?= =?us-ascii?Q?rDU/WZuDISECTINPh9Q/YsLe/lgwFbAN+SdrKeuYq+2IhwLxJVZ32Am1N004?= =?us-ascii?Q?q2BP92rjJuWymvY4zGf56iqqFGN7Y0kpOU+En5Vad+y2loaQugAPRLaWnCpZ?= =?us-ascii?Q?Zfab8xKDbZ46zHooXnIIjSetgPYjBML4Kjfb7Hb+YDnrZxCLeBCYajwQTzm0?= =?us-ascii?Q?d4jlfrGY9JkJS74mDEw+Bye5Zs7awpSDFkFCQtb0om8D5P0aZ0DMe2scFULk?= =?us-ascii?Q?nrQ1yhNx8xaPVxy8T7zeDSgaDtfFDpO+F6RSstQrOrDJrYaEFQil9vhbq5bK?= =?us-ascii?Q?0I5zG8CGhR+BdNUe6Bmxbu8KAGwnNrA4vvlfgYXq33Y5dgrjk+VloFElQw8E?= =?us-ascii?Q?tjdkzcih6mdILwNeFUIHT6JABOedK7RN37XEgT2cpio5b4XYdTdHDwTay/iR?= =?us-ascii?Q?L5QQEF3w6yPfzOQJhXYW15YMcGaGOmcTW5jY68s9nqKKsnit/gTq8Lh5ya6+?= =?us-ascii?Q?OW03Yx+GO1EmHNG3PC8EXh4vrN6hKSTBqntP2/vofBZEPrFqbeW75p/hxOP5?= =?us-ascii?Q?VuaiKSqDYz5GR55zQL/XLcr7Oq+AksTWmC3lfOF0HJSiQL2jhQia2szHZWe4?= =?us-ascii?Q?x1GRHhkEozSUTiIiEba8CWelOR9eWNqRFaBhChyr29zfHEpNfmNk5ccvz/1o?= =?us-ascii?Q?+BhSJiB1TAfppNqDIQ8L1tfxrDTHuErJVNDdUBxnVLCegUwQPWTxavDWS3qQ?= =?us-ascii?Q?yAGgAJa0WE9ckb8RQsbeufSJTwrgWNnPzv8QUswlGIZGzTEyDZB5qx/04BGY?= =?us-ascii?Q?fugZxZGgUFNrRCwX/dzTNgQoZMrQhGJDuMIXM3+9F/pgca4+Jm5Q3ABqI59t?= =?us-ascii?Q?x5nmMDfCj1agNmP9FOk3tnNv7t85AEv33p/zuM/UprLN4a9K1FXdEKda4zP8?= =?us-ascii?Q?u2MzSw6/gh4KBA/Q7rlTDCkl6yRgMIGfTN4LCqNQMLuw+7CFFGDKaQQDBwJ7?= =?us-ascii?Q?TBE0f00dhfTYjVEOeL/vg/Pi2e2xVnjCpmgtJZJSJBE1YYBUdLYf+H+5Oyr/?= =?us-ascii?Q?kck9Sc7u57rW7pi5xE3SsRSmxFasOpHiNxDXzdcdv739nJpGFCHy4R5MF8zg?= =?us-ascii?Q?/z+bInUHIjIh/lMlF0e2ag3uqiNON2c=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85935784-7f7a-404a-8d63-08ded6afa2a6 X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2026 13:58:17.1370 (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: WBofoP4lO1ZeZ4uVObMfs2FOe2Ez1wqMG0mAyAKddAZpLYuI8uzwByF9ridSlHV+X555xGaO5I9zcqXhsqnMrWCSM1VISm7GJAVq1dDa1Mo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR02MB8959 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: 1782828029278158500 Content-Type: text/plain; charset="utf-8" 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 --- include/hw/ssi/aspeed_smc.h | 2 - hw/ssi/aspeed_smc.c | 114 +----------------------------------- hw/ssi/trace-events | 1 - 3 files changed, 2 insertions(+), 115 deletions(-) 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 diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index c2a732664b..287a46eef3 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" --=20 2.34.1 From nobody Sun Jul 26 11:50:52 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=1782827943; cv=pass; d=zohomail.com; s=zohoarc; b=Ji5hJ/oODdSinYffNCX+TRNIDZRgGCDJ2vrDwI0HOONcZvqtskTjVS1pV/b7+Dh5pmKQxxwbBx8ydUxijUihXB+llXh5hHBuMiwCJN2mkitacF5PiG7ay/0hkrd6vroL7RGJo6UqGMMHptqvJ9ywThBbLrHxQHm7OdswgDe0xO0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782827943; 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=ksUkVinOTOjeo50pPGA0fWpcnbrzHI0E555tMPtXK9c=; b=Q4pzbT4+VeeRkELllP6hk6WK3AGAYERUhPMYY76epAKTFIap27PiNsRdrKQsYzJovq8cJzAvA1fhMzQnAel4pARUKAuJnmjQZWzz0NicufCJa9a1C/wL2WWo/cNgLn47uWvbNvgCNixMETXVRYZ9xOhYecmhlBVnLhACv5/HgUE= 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 1782827943760562.1237518039272; Tue, 30 Jun 2026 06:59:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weYz9-000282-42; Tue, 30 Jun 2026 09:58:47 -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 1weYyt-00023y-Bw for qemu-devel@nongnu.org; Tue, 30 Jun 2026 09:58:32 -0400 Received: from mail-japanwestazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c406::3] helo=OS8PR02CU002.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 1weYyr-00040A-1r for qemu-devel@nongnu.org; Tue, 30 Jun 2026 09:58:31 -0400 Received: from KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) by TYPPR02MB8959.apcprd02.prod.outlook.com (2603:1096:405:382::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.19; Tue, 30 Jun 2026 13:58:18 +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.0159.018; Tue, 30 Jun 2026 13:58:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OgpRrTjlyu55rUKOj7aobGJWeFHOSXwgSHVYFvIsnjaxy4H5/0b2f5TzgMsliYOlsBKnkpCHABzs8WEnqrBwjvijePLu1bK0MPcFkdVWF395n163Y6j3tj2wpR69Of6p40CY+B/QZ4yblA8CyCUIab8rWWeY59DrYLFt38UAYnOz8L4at9spV7lcpxJgYYc/h/lR59Qcl1vfo5B/75GVfVs156l7NUuAABiRDV+wgY0bFcgqRmC3xHd2XyCOh2WaiZ7jhP1Xx7aDc4mNnqyF8qSqB8wRc6mn0nPc4S7OsrcHcN9lVi4ega/0N62h9vKJST9CJtraRyKVV560x+6Xrw== 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=ksUkVinOTOjeo50pPGA0fWpcnbrzHI0E555tMPtXK9c=; b=Q7lMzaah7J011hHiZiOWcWaHKmC0p9RXyuNAxP/GaHRMJhHOo8d65FYq046t5QJ2ex5x0qqIusOo3o2cYFNP2b1JTC5Is/orBGaY6/MY1Vsfdr6KnzEq2LzxCVWeweEdd8PuArfFkAR0475xxoCC4mIQeT909Xhon+5FN1QqSH4W/yYdkQz6afxP8KDh64+D5r6ivoQA1Wu/ISZWVQnLpFCeFdxqWKFRoR/7liO9t7Dv7Q9L0s6elbTotnLBfmMQgVMhBIGlY69Pqgq/UK8cZ/+l2s8aASZB6n/2m++5OmwQpFLHneHiiwhUXAj/ElB64mzHu7xpUtWxw2noZaE0sQ== 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=ksUkVinOTOjeo50pPGA0fWpcnbrzHI0E555tMPtXK9c=; b=Sfjh1WD68cAGpyppaTCLQnWn9mOTliGUSssZWtJ7UP4dhRTCY9p3KRqNRlX/p3ycx7mabf+a0OGIwMP50eggevb2TE8vn5L8x2DH7ht6N2f1JWb37sEFYMTUiN1cFaAXm09Qw95Yf/2ecMUUI+yarcrayV8+AuHr9igiHhlG4cfDvy0fmVVVyO4iX0mv6tZFXhKTMt0xud4LCQ8OkYi1EO0BPWHQFhsAU+RkawTonF5yl+nGPrymJbMkG56x83JDRaTyHzp6xBCTfCCDlSZ5FOZfTovXMMT62eeiaCVQ+eOiSJ213f0r+TYAG00wO6zaTvgt9oNtpBT+CotUUF4pgw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=processmission.com; From: Bin Meng To: QEMU Cc: Pierrick Bouvier Subject: [PATCH 10/10] docs/devel: Document SSI dummy-cycle ownership Date: Tue, 30 Jun 2026 21:57:29 +0800 Message-Id: <20260630135729.466264-11-bin.meng@processmission.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260630135729.466264-1-bin.meng@processmission.com> References: <20260630135729.466264-1-bin.meng@processmission.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0161.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::15) To KL1PR02MB4977.apcprd02.prod.outlook.com (2603:1096:820:71::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: KL1PR02MB4977:EE_|TYPPR02MB8959:EE_ X-MS-Office365-Filtering-Correlation-Id: df028f6a-667d-4076-88f3-08ded6afa36c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|34096008|23010399003|3023799007|6133799003|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: 7mtaIPR6/sVLIFRSVP0LJySb/zNeA4xKnT0RJwZ9+teo6tbufhUZwmTQn0PgLTRB+X3FfI8MlDd+Guw3+5nnHFIHKmNevyjr02s3A2FyMbnjaJZNOiuKgRARLZuumbY8yGvjD8IBHzu1UeBW9KkyS+WPgfcKCPxcRpyK/5khr4DcvAPLUqAbSVJvoYJk577XHLXDQo9drHkCGeWfiSNtJuolohXuD19t5+6eA6g0bHPBmYjTuXoZq/Kafb9rnXZelmgrBVLrwpMJnlx6Bp8UMBVP+ijIE80kcCwKupzL8CrIbaKmqCMw+KjwqUqV22ui41WPeaU5pVjvkhy44XiG1sJpH4oHIMGA/0RmwpzuQuf7lcvrW8mIfOn1PuMKW9TPRSZieg8LEcWXQDsjL9KFuJijJMOE9fKoA2i3DMEtQl+aTMzVHptriaD9LUAl2NHIBQYvG8kxx9qydfo0ArAXcb4fK84h1jEZHdPRyF/VkMrAg9zkLrip5dByiGSqPhAOTpyU/HSbFzOhnMA7Va/OLQFJeufJ+Yrm5vZt9kFCeyK/hvNwz+u8rDaYdqlxCaHzN0Nc7qBq0wLpacaAC9OLE3u0ya1w0zJVzzqptiE9+fnXIWdR4d5WxSgouDaD6HYkOB4ADcG12AwoOJnCd49Dag4rLYlnDzZaSDRzR2LjN9s= 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)(376014)(1800799024)(366016)(34096008)(23010399003)(3023799007)(6133799003)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DAeVtRzAZ1jOSwsfAmvj2WfxMRXJNgfliq/nehigQdCBLKtinFeiwSpYVARd?= =?us-ascii?Q?nZNKggT/RlbBBj2YmaiONUKmbn4CKGUUOinItiJFa9Rm+3Xdy2Y8S3IXk61c?= =?us-ascii?Q?gGG3rgJmQQ2J/zvsT1gRU06T0RGOm+AZFjAL5Hw7VJSdXdDJANONQVK7yQxJ?= =?us-ascii?Q?4+44r1o1mmNOn39gqInTmY68L604Ke6XplrOqvERnXXpa2MWJNO3IQXDMnw0?= =?us-ascii?Q?ynH3qNQq3OsCgf/g3HxZIgXmYz5wKtvMYnpt7Npa4hmkd/DJYLR1r1c/jgWy?= =?us-ascii?Q?fjawuscbohnvQUI0dBejIJrF1cRJtFzkwUIqh1g/j8ffpfie45F4OqTR2k4A?= =?us-ascii?Q?nqRJTaEDynN1lh3QfOn7jKWQWQN1+zf1gY9pLu/NvJA7rPXdeIX4M6zQyX18?= =?us-ascii?Q?2R9P3wBUBwjd7YKT0BvUhEVS5eyyd6Gwz0mi+pSkLM11gIoJTtsNX7VjtAUN?= =?us-ascii?Q?uscJyKAIQuY9U3yY+C6wNbBunyoQ1n3EEryoNPU84r6+Aa4qslhetG4+gMB3?= =?us-ascii?Q?2FVccD3NkN8yPZNHWRfZQxN4n83XXRhyUpd6HlubEDRp+pAnfohWGqHednG6?= =?us-ascii?Q?NdDFZhf3J2NoKQjUpH++qzjp/oiLXeboiZsx3NhbkzrXJwv5ogMHb55Th8zI?= =?us-ascii?Q?ZPHmcJ7Q7VAULLV2w0qb7XSWii3raZOphKaDkSKRUMEqTJljLYoG6OwRicnX?= =?us-ascii?Q?kfaTz4xDVa16YmvxV7T7l1T9blaI6RDlrTYto9nRnNmypKx4HdQ+H9KniKlU?= =?us-ascii?Q?+W8WuULfI7ySubixWM2vznYRMmfqI5cxpsbjIpzV23I+aNM7h2x2j6nSpk7n?= =?us-ascii?Q?VE2m60mmZ6FVgN+K+8WaCu5HC2yCI6PMvwVJjsoskwD9nCw/m91Hw/jDLa35?= =?us-ascii?Q?ym9mqVbm3iuA4vScqfMGCPNpFOjd7HUPs/j3GtbuAGp/9bFdCKiQGMmEMus/?= =?us-ascii?Q?RUz/hU3gYDdsyw3o8PrT7ihp+8GhKXhSmkCqDdbzG1B39euvaSs+D4UlRlGd?= =?us-ascii?Q?tR2opf6JahWeufYdu7J36Tq45smjFKjmXPglQwatIaDt4Y63Z7SBxlWn5pI1?= =?us-ascii?Q?3fMNRRAGo4uf6P2ktkHcZg24+qrQ984fLtQ4krCwKzA/xnpl18dUdd9VUQev?= =?us-ascii?Q?uIHha7/c3VQ0pF6w7uau6N5SLc27uyzY4OchDjnNEVAIULPfhUPoeJFNmQLO?= =?us-ascii?Q?rAty8vqWC3jNu42ZJVkDnaqst7ZFjMnTUtIJfFEoCuN2LL2UVzLStO07Cj+5?= =?us-ascii?Q?o1BmFQ0bumfaUUoHI+/zFmynVtJsrw5dM2j1cyhMAIseOOL2p/dF7M98u7io?= =?us-ascii?Q?HbKNU8SOH6ssj6zV4kwVDg8Y21kCHEC2SoaIEivSXbFZ54yowG4l4tfF3kP/?= =?us-ascii?Q?K99aUc7qprGHLB/6Da0aNBRA0j41k0kW7jqupRcmUe4Qk5F85gs5CPMRfZHr?= =?us-ascii?Q?q1I38ierZHCbMkdI0mcqwSexbvJ6+2oUtCx6AUYtXpTQUwm2oWiV5JYaWlrA?= =?us-ascii?Q?WrSi1CZRiUu2VVPR4SQhStDiSrCOYz5+5yvsBGbwJjAKVZzS0IEmuYcu5ert?= =?us-ascii?Q?zCNSVzMGqW80E3R+wnV8DrTDULE1i3b9SgdtyMxfuqmTPWBwoDYSsQFaZfv3?= =?us-ascii?Q?mRj12QoHGHJXrAN2fH3LbIw6w7QhfD+OoLvPkhakBmaGRQOeBHV1pem1YHJe?= =?us-ascii?Q?F9INmLOoU8RW9InjHYkDkwQtY2QSlScwE4pQ6km46bLpfEWJeAteyVW07wCd?= =?us-ascii?Q?V9r5bqSUDfj90bseBLdUhDbvsRLBwD0=3D?= X-OriginatorOrg: processmission.com X-MS-Exchange-CrossTenant-Network-Message-Id: df028f6a-667d-4076-88f3-08ded6afa36c X-MS-Exchange-CrossTenant-AuthSource: KL1PR02MB4977.apcprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2026 13:58:18.4249 (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: 9nWQCtQeKkwdGcQlNK0UH9PUJCIYoRgrUQ6CwClLy5Hg4Iy22IiOTZ5/uskNX8rqBuS0nvvvGQfov8DFsZc+xBVxRbqBH5BGKTBSJgebPVQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR02MB8959 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:c406::3; envelope-from=bin.meng@processmission.com; helo=OS8PR02CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1782827944253158500 Content-Type: text/plain; charset="utf-8" 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 Tested-by: C=C3=A9dric Le Goater --- 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 198f155247..3a428b3c5f 100644 --- a/docs/devel/index-internals.rst +++ b/docs/devel/index-internals.rst @@ -19,6 +19,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.34.1