From nobody Sat Nov 15 06:33:16 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1753998123; cv=none; d=zohomail.com; s=zohoarc; b=lpPz0s8j5qX5A6D3GZFl5aPD2HegHWtPg7UqIX9He/FMbV/eGeqvsLCoa9hQBp3XoZRUXTFHwpylTJge9AzFwrKgsq2u7eXEk2VWPqIvTmPZQVn6t8z47OXgyrGsEO9vHcZysqjoa5hFNvMVTjHRwuziZWYSSdqy2rR8hiIMR5I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753998123; 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=qedAVdAy4wYrPU2niKvQAW4tfkXTo6OF8J8DtoUxWSM=; b=Parg5z/lJk/I2kHHSEANGngwSJmp/F4e97OsJoemkFBX8+YJYyCRGYi2Tjo1D05T9mDhhuukAWSap3FtOP7AFly07aaExFPTXjOs//2x0YKDZ3wPHOuvXIMt7N3Jy2PiEKaw9T+hbvggr+BFUNy/QaFW2wr0u2gN8BiutIlIzLA= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1753998123576563.7181542756043; Thu, 31 Jul 2025 14:42:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhb1x-0005sx-Sa; Thu, 31 Jul 2025 17:41:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhap2-0008NR-FJ for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:20 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhaoz-0007r6-PZ for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:20 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-3b78d13bf10so866483f8f.1 for ; Thu, 31 Jul 2025 14:28:17 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c467994sm3568218f8f.50.2025.07.31.14.28.13 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 31 Jul 2025 14:28:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1753997296; x=1754602096; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qedAVdAy4wYrPU2niKvQAW4tfkXTo6OF8J8DtoUxWSM=; b=kXBqqbZLW6Q0uyNdFS1a0awYQ+EF039G44WW1cDKB4teXwXwiF0gjmFJkhmVfYy+8w k0n4aLBSkfZwXjcnLzgOjGuMFq57degdQKQ0JtQOP0nnfW/QP7KtD9yC1xhDrUzVFSfW Z36zCuqLjSIxBznNnFiLO+duMNg0Hai/IKbh2VnfRU00kKmPNHlxEb4TwnlTuxisU1Ll K5eBHh0H2zjNoom/eA7P1WgrWhE2vqYSrCyCB7++F0ivrN3TWqLAOUPwL/U2VXOzSBco +umPPC4BM1w5d1PdQkcNqp4m3SngyvaHp2SlSU+pFL7fPTpuLJdgpzc1BJ9jlmpOBFsg xm/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753997296; x=1754602096; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qedAVdAy4wYrPU2niKvQAW4tfkXTo6OF8J8DtoUxWSM=; b=mIO4H5nStNXu5sVDP9+1kUjrd1+R1/ZHY5rnCkjqbLy06qNwwvAy6TR0MxCFzButcU Wys/ueTFv5lsQ4alI6NUHN3NKHd25OndD/wVi3TUGZpjLeo5Sx7Up6QtEqd7R9+j3xXN wZlS2aSIsmcpBg/WqbR5hLgzq31tsC1hJqEKPxM+NfPJGf1RTpLRZJqwxVAm4wj1up8Q gJ4eQBUWjV4J1Ic+VfKdcqnDwesfjcp24/0LxfhBu3pyfMjznphQmskC3FUXVPY7Fe4i 8es73To3/hNu2pDzhzf7njEYnsW69nrGI+xzZzlmVgV54EnXmv4xexNRP5thACvO/em9 pRPQ== X-Gm-Message-State: AOJu0Yw8vz056LdVZ6YI/U1nandy2In5DgSlKKeGCBSsPK/ixTjO8hAD 1EmnibbNruyEs0nj0vNKsVAvByIPu7lL/htjeOkzccZm6HpzY48giE3uFUGJpEp0g1hRIF8IaA2 fiMjO X-Gm-Gg: ASbGncvUO66H0cjmT9K1avTcbbCdyB61vFJjbmWr9L50uYanxaDrTAwBMx5uZfKPOB5 XzJi3ckXQkL9whtcfezsbV/ZfiY6XEzyaTRzBeg20CLI5lqo7jttC3jZS5iUbYALqU//G1zIkpJ K9Xeq9mN7m0lEtD95se/ZFVD4CVBBIkbZMJu+rRO5qd7hy/dLUJYEtP1XKJpTkSJh+VyZiToeHa FVz0GcXh7t9CxCvv8PWUfUg//LwI3AleBLRonAGorn4E6+hRl3CZxj4oHKX1XonvHob3/swcuO6 rZOx9MAUWkjeVmebu1TcoIJ94OlM24HFuxqoLfjsEwr8RCPNRAV9PvwZRS/AZ0zkhIzxE0c7SJY DEtK6C205lXgp0dOMUrBgLmr8xBacX1PoLdzUJ4l2dJOKRfNN7UlBaj3qPkPXpGJ+8rsblBQD X-Google-Smtp-Source: AGHT+IE7z98gzTCyEm3pvvEnpklU4sCrjTtja0bigZalzyJeNMHz9rT41IVPXNqSfCpurR0y7TWrsQ== X-Received: by 2002:a05:6000:220d:b0:3b7:9b58:5b53 with SMTP id ffacd0b85a97d-3b8d349a9f3mr202932f8f.45.1753997295728; Thu, 31 Jul 2025 14:28:15 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Peter Maydell Cc: Guenter Roeck , Palmer Dabbelt , Liu Zhiwei , Daniel Henrique Barboza , Strahinja Jankovic , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Bin Meng , Alistair Francis , Beniamino Galvani , Ben Dooks , Weiwei Li , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH-for-10.1 01/11] hw/sd/sdcard: Do not ignore errors in sd_cmd_to_sendingdata() Date: Thu, 31 Jul 2025 23:27:56 +0200 Message-ID: <20250731212807.2706-2-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250731212807.2706-1-philmd@linaro.org> References: <20250731212807.2706-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42d; envelope-from=philmd@linaro.org; helo=mail-wr1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1753998126836124100 Unfortunately when adding sd_cmd_to_sendingdata() in commit f486bf7d109 we neglected to return any possible error. Fix. Fixes: f486bf7d109 ("hw/sd/sdcard: Introduce sd_cmd_to_sendingdata and sd_g= eneric_read_byte") Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- hw/sd/sd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index c275fdda2d0..0bb385268ed 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1305,7 +1305,7 @@ static sd_rsp_type_t sd_cmd_to_sendingdata(SDState *s= d, SDRequest req, const void *data, size_t size) { if (sd->state !=3D sd_transfer_state) { - sd_invalid_state_for_cmd(sd, req); + return sd_invalid_state_for_cmd(sd, req); } =20 sd->state =3D sd_sendingdata_state; --=20 2.49.0 From nobody Sat Nov 15 06:33:16 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1753998114; cv=none; d=zohomail.com; s=zohoarc; b=Ibnus2AvLeHt9GcMrjgl8nZ9T/GjwFB0XamHtx/wKgKFlrM9FqXjjWViP4wm7YF5CJbnXOWTnRRmOt2fCwEtU5bxMKFM1yUFcYD/mlpZJ2boVvMv9Sd76JdRhyrCYbwEKtiKsWTX0uEgbk7o/W/HtYGJVLS0mM/9XbkUV5r0V+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753998114; 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=HLMZZx0BTIjmaMZzKMYMD/wlzh9Bhbnd20BwbDdOA5g=; b=mC6SmGO2EDPPFPVPs6p2MVIiD9vFvdB07o03KhLeEpbrSiF1u8nATbQvUJ3KgUyqk1QHSmGvVek/anUNoXumOCtAemModg9VLz7zJRqhdyzjbR2G9uy5n/ksshaP5X5JLOV06rweFVtyuH+e83nQHVNdm8THyepoyd6eCbhIY3E= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1753998114620389.293566198446; Thu, 31 Jul 2025 14:41:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhb23-00068s-Ej; Thu, 31 Jul 2025 17:41:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhap8-0000GV-N4 for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:27 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhap5-0007ss-9e for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:26 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-45629702e52so890835e9.2 for ; Thu, 31 Jul 2025 14:28:22 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-458953f8e02sm77101605e9.32.2025.07.31.14.28.19 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 31 Jul 2025 14:28:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1753997301; x=1754602101; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HLMZZx0BTIjmaMZzKMYMD/wlzh9Bhbnd20BwbDdOA5g=; b=npwJNpKApwCGbDVrWf+b4NnNuGWwiYaFRd2QniY7DNv5FaAEBlF7LJRtF3oU1n/J+4 7+iOXSFOueEJlcWzW50zLOcRJvioe0nirP0JlAEytPHGuaRWY64Cki6wNTT5HJhqFhJ4 MoIZ891uQLhOPcwSxYSjVPP90j3VCJHXS6rA5P2i7ryoIht7qxPoxxqFjQXyYGwOJPa1 F2V7Mp0ERY6x4MoIblD4t77+ED8OXVi2bSiEino6EUuuubZ3Zccb9/ngk/R4yzyuHSKI WqWtAbsfQ9D471c5wSHRZZzawlo6RCv5+qI9Uatrb+H53sDlSp0R7ufwLu2xNu1jnvA1 IQww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753997301; x=1754602101; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HLMZZx0BTIjmaMZzKMYMD/wlzh9Bhbnd20BwbDdOA5g=; b=g1NEDZRN8HHvGfAAWz0jTUNO8ilAr5bp/f6xDsxaspuLQ0sq5dX8JO/ACg1t4CjJ9V +jrtq7TppoudrQ3cq6bQQ0wv4PtY6nM9d/pX68CZ0snyNhwHxsBqijQKBt2bYXcxs/4u FAnjCfeyFMTXtG1Dt3f65idqMSz/h0kba+pbZrUeEmsE8j0dfTFrjDnm4TXIKnQfLG+v 166Nto/V3ro/v0T/AERy4SCUXSFuromOAHerpEHn26onqq7UYAI3R/sUtLI5oOcEnmsv Z1NPwMHvuL4tUBRySd8ot53u3Wy7QIivAI12zlgGckBF5Xw9z4uig0estZ4TC2p7vi/s W01w== X-Gm-Message-State: AOJu0YzTDe7a/b0YMtjYh4SPCWq36dFmQSizw+ViS0lOC2sdUUAOeBfh yRbHYU3JUFxYpXCd7MNev+cXWhiu8OPk0Sq3PlEHiza2g6dOAjmu4a/rDfepbUY+AL+DzoHZ6mm zWKpe X-Gm-Gg: ASbGncuyNZxfO6O63sgB9hw/QKNg+NbFEMf4JbreU1uvgdtHcEkOnNvxN80z9qhlzCz SsenAljOofEDU7Kee+wCi0MoM5hivBpvtW6fscY+gMy1soWdmVsnUz5zO5tlnNEk3NVsA7G6CgU bbU7d8x17NheudDF41Y10nMx4RMATaLgQwn5JfCfrAvR/obdhc+jjY1kdKUOFSafTOZrANH5hyI THU73kbTXZgZ/wqcwQdYsVR1INS4XAOCYwpvvcQPmIz8iDwCNMR1ofsbg/ej5sV7VYIRCl8MLry kso9cCDx08AFWDSO+u4pjEXtBbLJOjKJahoS6kofgLKgh32iuB0sjewWZUB2PKHRhl3/dn1SmJh 0omssJAI7E0qTbNt/VzH/u9KWi1lhqKEs1OelRtLbLpAoUC23IC/MMzzV/uT1PLjxo00/aGsCDc S5zsxzTIg= X-Google-Smtp-Source: AGHT+IH19EmjemCIRLXZLf0VnUNmaXdjVYPHMWt9jYo6KrJ6frV00UG8onRcitIzQ8PAxjtMP3TuIQ== X-Received: by 2002:a05:600c:4e06:b0:43c:eeee:b713 with SMTP id 5b1f17b1804b1-45892bc5977mr77580555e9.20.1753997301190; Thu, 31 Jul 2025 14:28:21 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Peter Maydell Cc: Guenter Roeck , Palmer Dabbelt , Liu Zhiwei , Daniel Henrique Barboza , Strahinja Jankovic , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Bin Meng , Alistair Francis , Beniamino Galvani , Ben Dooks , Weiwei Li , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH-for-10.1 02/11] hw/sd/sdbus: Provide buffer size to sdbus_do_command() Date: Thu, 31 Jul 2025 23:27:57 +0200 Message-ID: <20250731212807.2706-3-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250731212807.2706-1-philmd@linaro.org> References: <20250731212807.2706-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=philmd@linaro.org; helo=mail-wm1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1753998117037116600 We provide to sdbus_do_command() a pointer to a buffer to be filled with a varying number of bytes. By not providing the buffer size, the callee can not check the buffer is big enough. Pass the buffer size as argument to follow good practices. sdbus_do_command() doesn't return any error, only the size filled in the buffer. Convert the returned type to unsigned and remove the few unreachable lines in callers. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/sd/sd.h | 23 +++++++++++++++++++++-- hw/sd/allwinner-sdhost.c | 5 +---- hw/sd/bcm2835_sdhost.c | 5 +---- hw/sd/core.c | 5 +++-- hw/sd/omap_mmc.c | 2 +- hw/sd/pl181.c | 4 +--- hw/sd/sd.c | 5 +++-- hw/sd/sdhci.c | 4 ++-- hw/sd/ssi-sd.c | 8 +++++--- 9 files changed, 38 insertions(+), 23 deletions(-) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index d6bad175131..55d363f58fb 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -96,7 +96,17 @@ struct SDCardClass { DeviceClass parent_class; /*< public >*/ =20 - int (*do_command)(SDState *sd, SDRequest *req, uint8_t *response); + /** + * Process a SD command request. + * @sd: card + * @req: command request + * @resp: buffer to receive the command response + * @respsz: size of @resp buffer + * + * Return: size of the response + */ + size_t (*do_command)(SDState *sd, SDRequest *req, + uint8_t *resp, size_t respsz); /** * Write a byte to a SD card. * @sd: card @@ -153,7 +163,16 @@ struct SDBusClass { void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts); uint8_t sdbus_get_dat_lines(SDBus *sdbus); bool sdbus_get_cmd_line(SDBus *sdbus); -int sdbus_do_command(SDBus *sd, SDRequest *req, uint8_t *response); +/** + * sdbus_do_command: Process a SD command request + * @sd: card + * @req: command request + * @resp: buffer to receive the command response + * @respsz: size of @resp buffer + * + * Return: size of the response + */ +size_t sdbus_do_command(SDBus *sd, SDRequest *req, uint8_t *resp, size_t r= espsz); /** * Write a byte to a SD bus. * @sd: bus diff --git a/hw/sd/allwinner-sdhost.c b/hw/sd/allwinner-sdhost.c index b31da5c399c..65bef08fc83 100644 --- a/hw/sd/allwinner-sdhost.c +++ b/hw/sd/allwinner-sdhost.c @@ -246,10 +246,7 @@ static void allwinner_sdhost_send_command(AwSdHostStat= e *s) request.arg =3D s->command_arg; =20 /* Send request to SD bus */ - rlen =3D sdbus_do_command(&s->sdbus, &request, resp); - if (rlen < 0) { - goto error; - } + rlen =3D sdbus_do_command(&s->sdbus, &request, resp, sizeof(resp)); =20 /* If the command has a response, store it in the response registe= rs */ if ((s->command & SD_CMDR_RESPONSE)) { diff --git a/hw/sd/bcm2835_sdhost.c b/hw/sd/bcm2835_sdhost.c index 29debdf59e4..2b3160f05f3 100644 --- a/hw/sd/bcm2835_sdhost.c +++ b/hw/sd/bcm2835_sdhost.c @@ -118,10 +118,7 @@ static void bcm2835_sdhost_send_command(BCM2835SDHostS= tate *s) request.cmd =3D s->cmd & SDCMD_CMD_MASK; request.arg =3D s->cmdarg; =20 - rlen =3D sdbus_do_command(&s->sdbus, &request, rsp); - if (rlen < 0) { - goto error; - } + rlen =3D sdbus_do_command(&s->sdbus, &request, rsp, sizeof(rsp)); if (!(s->cmd & SDCMD_NO_RESPONSE)) { if (rlen =3D=3D 0 || (rlen =3D=3D 4 && (s->cmd & SDCMD_LONG_RESPON= SE))) { goto error; diff --git a/hw/sd/core.c b/hw/sd/core.c index 4b30218b520..d3c9017445e 100644 --- a/hw/sd/core.c +++ b/hw/sd/core.c @@ -90,7 +90,8 @@ void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts) } } =20 -int sdbus_do_command(SDBus *sdbus, SDRequest *req, uint8_t *response) +size_t sdbus_do_command(SDBus *sdbus, SDRequest *req, + uint8_t *resp, size_t respsz) { SDState *card =3D get_card(sdbus); =20 @@ -98,7 +99,7 @@ int sdbus_do_command(SDBus *sdbus, SDRequest *req, uint8_= t *response) if (card) { SDCardClass *sc =3D SDMMC_COMMON_GET_CLASS(card); =20 - return sc->do_command(card, req, response); + return sc->do_command(card, req, resp, respsz); } =20 return 0; diff --git a/hw/sd/omap_mmc.c b/hw/sd/omap_mmc.c index b7648d41cc5..1520ca87b74 100644 --- a/hw/sd/omap_mmc.c +++ b/hw/sd/omap_mmc.c @@ -157,7 +157,7 @@ static void omap_mmc_command(OMAPMMCState *host, int cm= d, int dir, request.arg =3D host->arg; request.crc =3D 0; /* FIXME */ =20 - rsplen =3D sdbus_do_command(&host->sdbus, &request, response); + rsplen =3D sdbus_do_command(&host->sdbus, &request, response, sizeof(r= esponse)); =20 /* TODO: validate CRCs */ switch (resptype) { diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c index b8fc9f86f13..b8072530d65 100644 --- a/hw/sd/pl181.c +++ b/hw/sd/pl181.c @@ -178,9 +178,7 @@ static void pl181_do_command(PL181State *s) request.cmd =3D s->cmd & PL181_CMD_INDEX; request.arg =3D s->cmdarg; trace_pl181_command_send(request.cmd, request.arg); - rlen =3D sdbus_do_command(&s->sdbus, &request, response); - if (rlen < 0) - goto error; + rlen =3D sdbus_do_command(&s->sdbus, &request, response, sizeof(respon= se)); if (s->cmd & PL181_CMD_RESPONSE) { if (rlen =3D=3D 0 || (rlen =3D=3D 4 && (s->cmd & PL181_CMD_LONGRES= P))) goto error; diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 0bb385268ed..1d88aee38d5 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -2139,8 +2139,9 @@ static bool cmd_valid_while_locked(SDState *sd, unsig= ned cmd) return cmd_class =3D=3D 0 || cmd_class =3D=3D 7; } =20 -static int sd_do_command(SDState *sd, SDRequest *req, - uint8_t *response) { +static size_t sd_do_command(SDState *sd, SDRequest *req, + uint8_t *response, size_t respsz) +{ int last_state; sd_rsp_type_t rtype; int rsplen; diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 226ff133ff9..f1e149f46f3 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -346,7 +346,7 @@ static void sdhci_send_command(SDHCIState *s) request.arg =3D s->argument; =20 trace_sdhci_send_command(request.cmd, request.arg); - rlen =3D sdbus_do_command(&s->sdbus, &request, response); + rlen =3D sdbus_do_command(&s->sdbus, &request, response, sizeof(respon= se)); =20 if (s->cmdreg & SDHC_CMD_RESPONSE) { if (rlen =3D=3D 4) { @@ -400,7 +400,7 @@ static void sdhci_end_transfer(SDHCIState *s) request.cmd =3D 0x0C; request.arg =3D 0; trace_sdhci_end_transfer(request.cmd, request.arg); - sdbus_do_command(&s->sdbus, &request, response); + sdbus_do_command(&s->sdbus, &request, response, sizeof(response)); /* Auto CMD12 response goes to the upper Response register */ s->rspreg[3] =3D ldl_be_p(response); } diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index 6c90a86ab41..3aba0e08ffe 100644 --- a/hw/sd/ssi-sd.c +++ b/hw/sd/ssi-sd.c @@ -146,7 +146,8 @@ static uint32_t ssi_sd_transfer(SSIPeripheral *dev, uin= t32_t val) /* manually issue cmd12 to stop the transfer */ request.cmd =3D 12; request.arg =3D 0; - s->arglen =3D sdbus_do_command(&s->sdbus, &request, longresp); + s->arglen =3D sdbus_do_command(&s->sdbus, &request, + longresp, sizeof(longresp)); if (s->arglen <=3D 0) { s->arglen =3D 1; /* a zero value indicates the card is busy */ @@ -171,8 +172,9 @@ static uint32_t ssi_sd_transfer(SSIPeripheral *dev, uin= t32_t val) request.cmd =3D s->cmd; request.arg =3D ldl_be_p(s->cmdarg); DPRINTF("CMD%d arg 0x%08x\n", s->cmd, request.arg); - s->arglen =3D sdbus_do_command(&s->sdbus, &request, longresp); - if (s->arglen <=3D 0) { + s->arglen =3D sdbus_do_command(&s->sdbus, &request, + longresp, sizeof(longresp)); + if (s->arglen =3D=3D 0) { s->arglen =3D 1; s->response[0] =3D 4; DPRINTF("SD command failed\n"); --=20 2.49.0 From nobody Sat Nov 15 06:33:16 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1753998535; cv=none; d=zohomail.com; s=zohoarc; b=BKj/jjvz7w+S0jxrOJi8Ix+oKUQrZhAy5pUIjNJ5xjJ8TBPa+L7s5A8ZGICkKHS7K9CklrIu0qEAaul5PvPkY/ApcCNcfeyV/D7UV4T0fxVaEVMHh7Gb3Mp4KbIG4+5WZTlI6MXTyvEdXxVpcWIIwNQTPYuoHGhamr1yhLvsLAE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753998535; 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=3YPXddK5v6Xqtrub7LpqRKl+Wnp2Pnfr2Y1mDvAIzEY=; b=PJennIBj902p0ivmUStA21bRcfngk3xNGRc/4/dVwwIkgqCK7wJ4iryKY4p401wfNvZuuqclG7SE1QppprmJzVqUTIm2hkS6+agCC5xWJp7Os9SikqkZZPICIRaV/NhFYYuLT5VHK+1VVw6Ho5pBcGGgDnGpDmapTh6Fk5WoqW0= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1753998535874164.07336804642512; Thu, 31 Jul 2025 14:48:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhb8S-0007pT-2X; Thu, 31 Jul 2025 17:48:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhapD-0000Yu-HW for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:31 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhapA-0007tm-MG for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:31 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-3b79bdc9a7dso106191f8f.1 for ; Thu, 31 Jul 2025 14:28:28 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c3abec8sm3742066f8f.8.2025.07.31.14.28.25 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 31 Jul 2025 14:28:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1753997306; x=1754602106; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3YPXddK5v6Xqtrub7LpqRKl+Wnp2Pnfr2Y1mDvAIzEY=; b=guikIQ796S6Q8ndeZxADvDj0htenmATMken99Mucg0v+Stbqxk/3znVEpqW5ODP42n xm7c6TZ1lEeWArjI46/U1/vHrYVEOe/U+Wg6+wF+E9nu1RzYXMbMkO5khQ+RAM1AWukb JCPRVD+oBxXuSXXk1TRJ4GKY2pHLm0NRp7RFrfTOd0QcOUOaQvkg+FnsSIKL5VBYM0fu 5xo8qQuWItrmCW4R7fZruMDcBzJyy1lUX0tV/7Kl5ztulWx8OxuGMj57fX0pjiTfF1P2 7+AfyHCwX8FdeRUgL1nIGTfTd/NRI6gW3fpGjjxpJlOARz4FvPN659TaqP3EzVovcJO1 mzAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753997306; x=1754602106; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3YPXddK5v6Xqtrub7LpqRKl+Wnp2Pnfr2Y1mDvAIzEY=; b=OR1rEZ+x4gt32p4foRgCx7nCHXthD6uCAh27NLPB41IJ8w4NlemYLCHj/G1FpcvKSd j+PJDEe6COPMIV29fuUvCbbj+fAp1JQgTXTwy/kHLQuiKALvmXeAfB3cXL3degQMo1EP BCumGK6y3BQoVRilE00HY00vS9iOBo+bZOP6v/noInaln9mJWJL9164BrXxLDq80LzO8 83XMV0mTt8BHsa0RhHBDOvPZ0aMtEL/XaEny3OVxv0pgcVu4WtdLwXfEZ6c1T5ewq/w+ IX8VOmANu66lglrXBLHEBvPoJTg7WTZ62C+JDITFytsrvMsjrZ6SXXyad6kakzGghJOY Rkdw== X-Gm-Message-State: AOJu0Yw4KotnSpFuUx5ZUonCByekTjCAa4asAXMSpWp2WpVSq6dmc2rp W8SoesuKKuuCbABCaVNntDdKJRX08KraxWEMJhgM59k1vi2WnL+uI9NR972qEmQ64dIvPA1RwY1 3BT0G X-Gm-Gg: ASbGncuWHpHwfcLwf0yM4ON+DrcOHZCq08mLyJss1XfCmZVf8AROqcKHa/u6FN+M52D gj70ykM+t+tK8xBS3gzlQ94XtAslNZcdc3wkfmNVzRYaLuVKp69ook4Q1XTM5bGOl6z7McEYi2E qUOmGSLVSr3a1Ks3Gz/CWgAgYt2Cl+sFQ9XiC6ecVOy9/nTlw7phEWgDGmAXbt4oMtEz4SX2vga U6W3PiVVZ+5h36kDRWTKdg+KloeUpbyHZ9NljbSymkA6DPM/Gsml26tolWVxnd1jKLyoUxUpvaK 5mmeT+S0G6vQWuDjMApckBuF+2EtL+WBW9Koxvkczdv2TsNovO3kqiIr1CVDXpshRMxATkSC8MA IWtoM6o9AVnVVPFWEzWfkeF7k6AWqlpiLzuSi2Kd6vQSk6YTWVl7SbPsJ+E4XPKQR9PFHVViHHt vqaCBc1Z4= X-Google-Smtp-Source: AGHT+IGI/zApcUREjex3r/KFRt72ym9B43x474plpmVmVHVsNwAXFaOO3Mt4foWnSu7ahDM6LVfaiw== X-Received: by 2002:adf:e9ca:0:b0:3a4:ef70:e0e1 with SMTP id ffacd0b85a97d-3b795022391mr6020703f8f.55.1753997306488; Thu, 31 Jul 2025 14:28:26 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Peter Maydell Cc: Guenter Roeck , Palmer Dabbelt , Liu Zhiwei , Daniel Henrique Barboza , Strahinja Jankovic , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Bin Meng , Alistair Francis , Beniamino Galvani , Ben Dooks , Weiwei Li , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH-for-10.1 03/11] hw/sd/sdcard: Propagate response size to sd_response_r*_make() Date: Thu, 31 Jul 2025 23:27:58 +0200 Message-ID: <20250731212807.2706-4-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250731212807.2706-1-philmd@linaro.org> References: <20250731212807.2706-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::436; envelope-from=philmd@linaro.org; helo=mail-wr1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1753998539136116600 All sd_response_r*_make() fill the @response buffer. Now that sd_do_command() knows the buffer size, propagate it to the response fillers and assert for any overflow. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 1d88aee38d5..22bdb4ca3ab 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -729,34 +729,52 @@ static int sd_req_crc_validate(SDRequest *req) return sd_crc7(buffer, 5) !=3D req->crc; /* TODO */ } =20 -static void sd_response_r1_make(SDState *sd, uint8_t *response) +static size_t sd_response_r1_make(SDState *sd, uint8_t *response, size_t r= espsz) { + size_t rsplen =3D 4; + + assert(respsz >=3D 4); stl_be_p(response, sd->card_status); =20 /* Clear the "clear on read" status bits */ sd->card_status &=3D ~CARD_STATUS_C; + + return rsplen; } =20 -static void sd_response_r3_make(SDState *sd, uint8_t *response) +static size_t sd_response_r3_make(SDState *sd, uint8_t *response, size_t r= espsz) { + size_t rsplen =3D 4; + + assert(respsz >=3D rsplen); stl_be_p(response, sd->ocr & ACMD41_R3_MASK); + + return rsplen; } =20 -static void sd_response_r6_make(SDState *sd, uint8_t *response) +static size_t sd_response_r6_make(SDState *sd, uint8_t *response, size_t r= espsz) { uint16_t status; =20 + assert(respsz >=3D 4); status =3D ((sd->card_status >> 8) & 0xc000) | ((sd->card_status >> 6) & 0x2000) | (sd->card_status & 0x1fff); sd->card_status &=3D ~(CARD_STATUS_C & 0xc81fff); stw_be_p(response + 0, sd->rca); stw_be_p(response + 2, status); + + return 4; } =20 -static void sd_response_r7_make(SDState *sd, uint8_t *response) +static size_t sd_response_r7_make(SDState *sd, uint8_t *response, size_t r= espsz) { + size_t rsplen =3D 4; + + assert(respsz >=3D rsplen); stl_be_p(response, sd->vhs); + + return rsplen; } =20 static uint32_t sd_blk_len(SDState *sd) @@ -2207,33 +2225,31 @@ send_response: switch (rtype) { case sd_r1: case sd_r1b: - sd_response_r1_make(sd, response); - rsplen =3D 4; + rsplen =3D sd_response_r1_make(sd, response, respsz); break; =20 case sd_r2_i: + assert(respsz >=3D 16); memcpy(response, sd->cid, sizeof(sd->cid)); rsplen =3D 16; break; =20 case sd_r2_s: + assert(respsz >=3D 16); memcpy(response, sd->csd, sizeof(sd->csd)); rsplen =3D 16; break; =20 case sd_r3: - sd_response_r3_make(sd, response); - rsplen =3D 4; + rsplen =3D sd_response_r3_make(sd, response, respsz); break; =20 case sd_r6: - sd_response_r6_make(sd, response); - rsplen =3D 4; + rsplen =3D sd_response_r6_make(sd, response, respsz); break; =20 case sd_r7: - sd_response_r7_make(sd, response); - rsplen =3D 4; + rsplen =3D sd_response_r7_make(sd, response, respsz); break; =20 case sd_r0: --=20 2.49.0 From nobody Sat Nov 15 06:33:16 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1753998133; cv=none; d=zohomail.com; s=zohoarc; b=UTrNEKbdj2sjRD/ch2MTBZp/6Ko8Y8OYObkoIz3utKlO0L0rv1uNzZDKJHbzkE/Nnm45fGY5zvY0lGC7Sb8yWtbpOqV2Mz6SQPRTdIv0EjFIlky7HKDes2GGXyBSvQrrHkiD12cWFeLbuJrNaT7jf8VxPL+6q+slOZL7yMISJic= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753998133; 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=6t4dl7I3YR65XFWp3ATfpWTUnCa6FCBH5piCnGFOEbA=; b=HzEMkkzcLOxw4oPb4FoIphcRSVcmGptTa+u64EaZ1+dSsiVS2tExyVABS4O2VoN2wXtSfa4m1OGC3dDGAHe6l+ii4+ZQYAqDMnWjag0DV/DgixVSvgathcLOn9UatvxvR7PhJhI1z6ltbs4gh02CQbCEtOmD899v74c1fhdBpVU= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1753998133886484.78447701146047; Thu, 31 Jul 2025 14:42:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhb2C-0006kO-KY; Thu, 31 Jul 2025 17:41:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhapJ-0000xi-UT for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:38 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhapG-0007uf-49 for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:37 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-3b783ea502eso993452f8f.1 for ; Thu, 31 Jul 2025 14:28:33 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c4534b3sm3532176f8f.47.2025.07.31.14.28.30 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 31 Jul 2025 14:28:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1753997312; x=1754602112; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6t4dl7I3YR65XFWp3ATfpWTUnCa6FCBH5piCnGFOEbA=; b=hcLRFd7LG5LdT8pYLlh8Duhk5IWGe4LDY6uzAvrL2ThIoWDPIslUof7ZGbWNFRmJHt hZDBS267Wo0+/wXx2hOEygGggy5gthro0lM9DDnL1MShaHfcik8bs/Ks19zlxC3OYjOM QzxVYwwKqwUnJ6BYmYEFo1u3gDpjyd6SsAd7DDqOjziVvzOeBFaFf3jISLzLfFkvgWJD yT/pXd1vLOhOlZQ/AZnSPGzweSEVn3lIh7AgVrZcr3AD/bTzhgJEg88XaUGnwvFCUvOs mBCR4+bjc2dWbvDiC7u3ciW3ttNloEl+W1LShTaMXFmW0ZVkebZzRmdz4vWJ90fCscLX 0DEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753997312; x=1754602112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6t4dl7I3YR65XFWp3ATfpWTUnCa6FCBH5piCnGFOEbA=; b=etNBJrrb1s02dFys+7ptUaTZpgqTXGlIWEpLo6EmkbzXDbC6QZ+BYD4JMopd8Ra8rR 5IFaAHGlJ6lRffoSN8qyaCLy+CRomwPSP1XBHPMIpFo7eLSE3mgPyDpQjFRdtnzWrhBZ r/p5JFyeVfTd8dJ75UEZ/eYGKeAkuXpXTB8lFDQIfxGFC9VSXlKOuB4OXPiprAljkhKW 2vue8jApSLezkYjrmKNXF+DFgt+Wxc/ZWPwu6bAA4TEl/0jmYYdLKmPKsqe5Vvmx3C/3 WB2krg+bVtncg14Un3QQXTDb4b+/UN6P7JdJ7RQ/HFayooW2xwa72cjokF4VWj4ZuSuJ VyfA== X-Gm-Message-State: AOJu0Yx8MnKL4SldEhiYqqHBAYan1V+l6p9cj+MAy+I0BtP2lwqSnSCw yCR4FxlpWnIVWaWvG5cyM7pdYlOIk8BS77BuTkvS0+G0HW04iosTby0On7R0odkpk1VtNufYtVE 6T9oq X-Gm-Gg: ASbGncsxM+D17nfqUltg5JBDf0a/GJZBbrKcGamQVT1YLBdBQkyuknwGpmldw+LGltT p78KE/ZbRxPDFXZoYKQyylbYr8Wb+dO7dK1hwSDc2TixQqKgHAg75Q4Ms8ZrHd0Jcni4T+ZQRng DD1/HEI6z2YoGJE1t73s6PIL4b7OjppT40B9q6Z3WObxo+lQ75KgoWZ0aD0d99QokL7yH7vhz5Q 1abb2gocJ6VYshUcRS6X3NX0Jz/DR1D918Hmk2O5Da4ZaNklOHYNu/goVokjLeSeUbLrIblKypU p8h0vgCCTP8r4hBjWEY3ineYECoeJbr5iWN+o5hSDTJ15FjY0casMcLBlS63LTLu0cow6nSdytj 3l7ZVzwTboAYPGRuW6JHvY4u97mxqIvLE84zjDJzkLwuGPD8OGCZF/P9jm2sjB5q+u8kPUMfS X-Google-Smtp-Source: AGHT+IGM+QiNhY0H45ZaQRrmD89B5BwUhnmLFBeQd7WGDM/NkhjCE7ccuf/oqIrRdRrJt9Ep5Af0Ow== X-Received: by 2002:a5d:5f52:0:b0:3b7:8ed8:1c80 with SMTP id ffacd0b85a97d-3b79d41deaemr2663579f8f.3.1753997312008; Thu, 31 Jul 2025 14:28:32 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Peter Maydell Cc: Guenter Roeck , Palmer Dabbelt , Liu Zhiwei , Daniel Henrique Barboza , Strahinja Jankovic , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Bin Meng , Alistair Francis , Beniamino Galvani , Ben Dooks , Weiwei Li , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH-for-10.1 04/11] hw/sd/sdcard: Fill SPI response bits in card code Date: Thu, 31 Jul 2025 23:27:59 +0200 Message-ID: <20250731212807.2706-5-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250731212807.2706-1-philmd@linaro.org> References: <20250731212807.2706-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::433; envelope-from=philmd@linaro.org; helo=mail-wr1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1753998135183116600 ssi-sd.c contains the SPI link layer adaptation, while sd.c contains all the SD card internal details. We already handle the response values in sd.c, but missed the SPI case. Complete them (fill R1, prepend R1 in R3/R7 and always return something in SPI mode). Remove all the duplication in ssi-sd.c. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 31 +++++++++++++++--- hw/sd/ssi-sd.c | 87 ++++---------------------------------------------- 2 files changed, 34 insertions(+), 84 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 22bdb4ca3ab..f7c231d9f30 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -731,10 +731,25 @@ static int sd_req_crc_validate(SDRequest *req) =20 static size_t sd_response_r1_make(SDState *sd, uint8_t *response, size_t r= espsz) { - size_t rsplen =3D 4; + size_t rsplen; =20 - assert(respsz >=3D 4); - stl_be_p(response, sd->card_status); + if (sd_is_spi(sd)) { + assert(respsz >=3D 1); + response[0] =3D sd->state =3D=3D sd_idle_state + && !FIELD_EX32(sd->ocr, OCR, CARD_POWER_UP); + response[0] |=3D FIELD_EX32(sd->card_status, CSR, ERASE_RESET) << = 1; + response[0] |=3D FIELD_EX32(sd->card_status, CSR, ILLEGAL_COMMAND)= << 2; + response[0] |=3D FIELD_EX32(sd->card_status, CSR, COM_CRC_ERROR) <= < 3; + response[0] |=3D FIELD_EX32(sd->card_status, CSR, ERASE_SEQ_ERROR)= << 4; + response[0] |=3D FIELD_EX32(sd->card_status, CSR, ADDRESS_ERROR) <= < 5; + response[0] |=3D FIELD_EX32(sd->card_status, CSR, BLOCK_LEN_ERROR)= << 6; + response[0] |=3D 0 << 7; + rsplen =3D 1; + } else { + assert(respsz >=3D 4); + stl_be_p(response, sd->card_status); + rsplen =3D 4; + } =20 /* Clear the "clear on read" status bits */ sd->card_status &=3D ~CARD_STATUS_C; @@ -746,6 +761,10 @@ static size_t sd_response_r3_make(SDState *sd, uint8_t= *response, size_t respsz) { size_t rsplen =3D 4; =20 + if (sd_is_spi(sd)) { + rsplen +=3D sd_response_r1_make(sd, response, respsz); + response++; + } assert(respsz >=3D rsplen); stl_be_p(response, sd->ocr & ACMD41_R3_MASK); =20 @@ -771,6 +790,10 @@ static size_t sd_response_r7_make(SDState *sd, uint8_t= *response, size_t respsz) { size_t rsplen =3D 4; =20 + if (sd_is_spi(sd)) { + rsplen +=3D sd_response_r1_make(sd, response, respsz); + response++; + } assert(respsz >=3D rsplen); stl_be_p(response, sd->vhs); =20 @@ -2261,7 +2284,7 @@ send_response: sd->data_offset =3D 0; /* fall-through */ case sd_illegal: - rsplen =3D 0; + rsplen =3D sd_is_spi(sd) ? sd_response_r1_make(sd, response, resps= z) : 0; break; default: g_assert_not_reached(); diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index 3aba0e08ffe..79b6d34a489 100644 --- a/hw/sd/ssi-sd.c +++ b/hw/sd/ssi-sd.c @@ -70,23 +70,6 @@ struct ssi_sd_state { #define TYPE_SSI_SD "ssi-sd" OBJECT_DECLARE_SIMPLE_TYPE(ssi_sd_state, SSI_SD) =20 -/* State word bits. */ -#define SSI_SDR_LOCKED 0x0001 -#define SSI_SDR_WP_ERASE 0x0002 -#define SSI_SDR_ERROR 0x0004 -#define SSI_SDR_CC_ERROR 0x0008 -#define SSI_SDR_ECC_FAILED 0x0010 -#define SSI_SDR_WP_VIOLATION 0x0020 -#define SSI_SDR_ERASE_PARAM 0x0040 -#define SSI_SDR_OUT_OF_RANGE 0x0080 -#define SSI_SDR_IDLE 0x0100 -#define SSI_SDR_ERASE_RESET 0x0200 -#define SSI_SDR_ILLEGAL_COMMAND 0x0400 -#define SSI_SDR_COM_CRC_ERROR 0x0800 -#define SSI_SDR_ERASE_SEQ_ERROR 0x1000 -#define SSI_SDR_ADDRESS_ERROR 0x2000 -#define SSI_SDR_PARAMETER_ERROR 0x4000 - /* multiple block write */ #define SSI_TOKEN_MULTI_WRITE 0xfc /* terminate multiple block write */ @@ -104,7 +87,7 @@ static uint32_t ssi_sd_transfer(SSIPeripheral *dev, uint= 32_t val) { ssi_sd_state *s =3D SSI_SD(dev); SDRequest request; - uint8_t longresp[16]; + uint8_t longresp[5]; =20 /* * Special case: allow CMD12 (STOP TRANSMISSION) while reading data. @@ -171,74 +154,18 @@ static uint32_t ssi_sd_transfer(SSIPeripheral *dev, u= int32_t val) /* FIXME: Check CRC. */ request.cmd =3D s->cmd; request.arg =3D ldl_be_p(s->cmdarg); - DPRINTF("CMD%d arg 0x%08x\n", s->cmd, request.arg); s->arglen =3D sdbus_do_command(&s->sdbus, &request, longresp, sizeof(longresp)); - if (s->arglen =3D=3D 0) { - s->arglen =3D 1; - s->response[0] =3D 4; - DPRINTF("SD command failed\n"); - } else if (s->cmd =3D=3D 8 || s->cmd =3D=3D 58) { - /* CMD8/CMD58 returns R3/R7 response */ - DPRINTF("Returned R3/R7\n"); - s->arglen =3D 5; - s->response[0] =3D 1; - memcpy(&s->response[1], longresp, 4); - } else if (s->arglen !=3D 4) { - BADF("Unexpected response to cmd %d\n", s->cmd); - /* Illegal command is about as near as we can get. */ - s->arglen =3D 1; - s->response[0] =3D 4; - } else { - /* All other commands return status. */ - uint32_t cardstatus; - uint16_t status; + DPRINTF("CMD%d arg 0x%08x =3D %d\n", s->cmd, request.arg, s->a= rglen); + assert(s->arglen > 0); /* CMD13 returns a 2-byte statuse work. Other commands only return the first byte. */ s->arglen =3D (s->cmd =3D=3D 13) ? 2 : 1; + memcpy(s->response, longresp, s->arglen); =20 - /* handle R1b */ - if (s->cmd =3D=3D 28 || s->cmd =3D=3D 29 || s->cmd =3D=3D = 38) { - s->stopping =3D 1; - } - - cardstatus =3D ldl_be_p(longresp); - status =3D 0; - if (((cardstatus >> 9) & 0xf) < 4) - status |=3D SSI_SDR_IDLE; - if (cardstatus & ERASE_RESET) - status |=3D SSI_SDR_ERASE_RESET; - if (cardstatus & ILLEGAL_COMMAND) - status |=3D SSI_SDR_ILLEGAL_COMMAND; - if (cardstatus & COM_CRC_ERROR) - status |=3D SSI_SDR_COM_CRC_ERROR; - if (cardstatus & ERASE_SEQ_ERROR) - status |=3D SSI_SDR_ERASE_SEQ_ERROR; - if (cardstatus & ADDRESS_ERROR) - status |=3D SSI_SDR_ADDRESS_ERROR; - if (cardstatus & CARD_IS_LOCKED) - status |=3D SSI_SDR_LOCKED; - if (cardstatus & (LOCK_UNLOCK_FAILED | WP_ERASE_SKIP)) - status |=3D SSI_SDR_WP_ERASE; - if (cardstatus & SD_ERROR) - status |=3D SSI_SDR_ERROR; - if (cardstatus & CC_ERROR) - status |=3D SSI_SDR_CC_ERROR; - if (cardstatus & CARD_ECC_FAILED) - status |=3D SSI_SDR_ECC_FAILED; - if (cardstatus & WP_VIOLATION) - status |=3D SSI_SDR_WP_VIOLATION; - if (cardstatus & ERASE_PARAM) - status |=3D SSI_SDR_ERASE_PARAM; - if (cardstatus & (OUT_OF_RANGE | CID_CSD_OVERWRITE)) - status |=3D SSI_SDR_OUT_OF_RANGE; - /* ??? Don't know what Parameter Error really means, so - assume it's set if the second byte is nonzero. */ - if (status & 0xff) - status |=3D SSI_SDR_PARAMETER_ERROR; - s->response[0] =3D status >> 8; - s->response[1] =3D status; - DPRINTF("Card status 0x%02x\n", status); + /* handle R1b (busy signal) */ + if (s->cmd =3D=3D 28 || s->cmd =3D=3D 29 || s->cmd =3D=3D 38) { + s->stopping =3D 1; } s->mode =3D SSI_SD_PREP_RESP; s->response_pos =3D 0; --=20 2.49.0 From nobody Sat Nov 15 06:33:16 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1753998155; cv=none; d=zohomail.com; s=zohoarc; b=gk56ZJ6MDmGKSDdrSv7wxBk/Y9b288XWUAzmkW/EKLTDiT1hntiTavCK488La1GPVR3EMCKaAmlZ+Sy+USZzuVSD3UR5EjOHjmaYu+TybjdCDM0P4QaUdWyX1ve9xIXKXh2WEwttP0ZBeMX3DF3aS7OLogJjpVg2sJ5OpD8cRFA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753998155; 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=oWBEps/IHV7G68SkGN78QP86K/TyIINFKInszR+1c2o=; b=Gowyt7G09OEUpL7HDlK6XHFGIf7PYluLt2mj4cSZ2O/Tlopw961MmnGhSxTx5/uszOJLFcwad9SBiwo67fRoZwNFLV0JammNsLx3UdoAngsQHLRIT3DD+7V4+rvEw8nsr61/Kd74PIn0f5a7F7bULosRLHS5Cm9udhYUD/1Jlnc= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1753998155665170.61640583641963; Thu, 31 Jul 2025 14:42:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhb2M-0007B5-8z; Thu, 31 Jul 2025 17:42:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhapO-0001H7-LO for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:42 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhapL-0007vh-UK for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:42 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-45619d70c72so19151295e9.0 for ; Thu, 31 Jul 2025 14:28:39 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c467994sm3569009f8f.50.2025.07.31.14.28.36 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 31 Jul 2025 14:28:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1753997317; x=1754602117; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oWBEps/IHV7G68SkGN78QP86K/TyIINFKInszR+1c2o=; b=ebP6tiO3DCPWhK3zfDIkjAx1NVyv/gK+Kr/A6bHbsG1pQbshgbKkN7e1KDaI9657IE Bf2L9Gb5//z2LgBv5RgAGBYWlbPOgYdwgHUiQyFq0c2BalSuMHc5wIRiNPXcZCyH6Yc3 7XH670+7oVrxA4KmEACxd9viJ/b0jWlhL36q46Mxd72KzVYsmnyP/QTo75rmZ9jhkX+l 84gTdAoavOEJw1i7IIICXu0xiY5R2X3SeqULydLX3XCIp34awFIGVb+MVJ+7oJa01gQX u2fpU47MT5lEkZAjqvw4EzkQRW4Yks9w273B4I26+t6TfXuAVBn6R3dEOmcI5c9hP2PR Xbqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753997317; x=1754602117; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oWBEps/IHV7G68SkGN78QP86K/TyIINFKInszR+1c2o=; b=BegbiHPceob0/6D74+DwI2xRpt3wZ+7t1jmQyrGaaya9SXprLIO746Op/UMtlxs0f6 TmBQj+pcIMBz+lrVSieuAR+Xn50VmihV1oyhOFGC5sypBwY8WvQvmznk2dFabI3UIvzE WZy5qTXdUCHf/eB52nl3IMW/zLiX9EwLNC+NMGF6/pHP5vqlTLANLJM5gJf/5msAbLlt CjV5XV/bkvnfBt6lumFJsvNttzpvhvvne6uwRH6cphyWWBktavQfoeJbMOdQPHNcKahR CxSNCgpFgvFNV6fkStASgKVqVGpJm/Y51X4BCruN+vlWFwTPhlj6dzAwKUOIEXwxQraS fQxg== X-Gm-Message-State: AOJu0YyaARkqmiX+WBIb7OBKqkERg63tfQ+K1H9cJW76/02OGe42vB5X mS6sFs3vCk7qNaCB6RYWnZkWPvsxsxk9eCuxWd44tk0Iyh59NBYn4N98cyR9P4rnAAKfbG4HgOt nSUph X-Gm-Gg: ASbGncu5W1qmprKRcz5hx91V1XhXZ7rfKbUMP1TLN4sfKAjq1138nOcjdX1zdkxi+mU gg1V9E0HC6Nw6+9zOZuBlSYirHk/EHMV/3Wa0DWb9l19C0812g+qP5aPzIlMG1RHNSLkxFM5yvA attxjqumBiHTn706lacNvpalZJgGJXbR3l1Cp/yTiq+NCIKRjtqnhRZvScZv57lzIkYOxDxgtW5 6R6Cy6OMKYfWmjhZzyNHN6UvebEsAp+0xng+M+9hXJp3lOJQWLqDQQ9KW6RIqFkV0kXpp1URj3D kFmWckFNxC7uv/2zCSHysYcRuCK6NyZDIJiqYZpJWRB16ZAr9JxZT3wEWBIjODqtAx3E0iO636f XGjyTuvWPwv2I0SXckxrKbtu+wsu+jVLQhowcmpRiWTq0e7lUfq3YHgR/2aKoFeHRs28gaEWd X-Google-Smtp-Source: AGHT+IFjFXvvqb59RVjZVs8PSLccxOE6ccsUXrudgefeE44V5UyNFjtIJexdbtBY1GGye27mxbtnug== X-Received: by 2002:a05:6000:2004:b0:3b7:882c:778 with SMTP id ffacd0b85a97d-3b79d4e38b5mr2767800f8f.17.1753997317444; Thu, 31 Jul 2025 14:28:37 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Peter Maydell Cc: Guenter Roeck , Palmer Dabbelt , Liu Zhiwei , Daniel Henrique Barboza , Strahinja Jankovic , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Bin Meng , Alistair Francis , Beniamino Galvani , Ben Dooks , Weiwei Li , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH-for-10.1 05/11] hw/sd/sdcard: Implement SPI R2 return value Date: Thu, 31 Jul 2025 23:28:00 +0200 Message-ID: <20250731212807.2706-6-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250731212807.2706-1-philmd@linaro.org> References: <20250731212807.2706-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=philmd@linaro.org; helo=mail-wm1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1753998157141116600 In SPI mode, R2 is a 2-byte value. Implement in spi_response_r2_make() and return SPI R2 in the SEND_STATUS commands. Reported-by: Guenter Roeck Fixes: 775616c3ae8 ("Partial SD card SPI mode support") Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 36 +++++++++++++++++++++++++++++++++--- hw/sd/ssi-sd.c | 3 --- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index f7c231d9f30..078bc5ef091 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -61,6 +61,7 @@ typedef enum { sd_r0 =3D 0, /* no response */ sd_r1, /* normal response command */ + spi_r2, /* STATUS */ sd_r2_i, /* CID register */ sd_r2_s, /* CSD register */ sd_r3, /* OCR register */ @@ -247,6 +248,7 @@ static const char *sd_response_name(sd_rsp_type_t rsp) static const char *response_name[] =3D { [sd_r0] =3D "RESP#0 (no response)", [sd_r1] =3D "RESP#1 (normal cmd)", + [spi_r2] =3D "RESP#2 (STATUS reg)", [sd_r2_i] =3D "RESP#2 (CID reg)", [sd_r2_s] =3D "RESP#2 (CSD reg)", [sd_r3] =3D "RESP#3 (OCR reg)", @@ -757,6 +759,24 @@ static size_t sd_response_r1_make(SDState *sd, uint8_t= *response, size_t respsz) return rsplen; } =20 +static size_t spi_response_r2_make(SDState *sd, uint8_t *resp, size_t resp= sz) +{ + sd_response_r1_make(sd, resp, respsz); + + assert(respsz >=3D 2); + resp[1] =3D FIELD_EX32(sd->card_status, CSR, CARD_IS_LOCKED) << 0; + resp[1] |=3D (FIELD_EX32(sd->card_status, CSR, LOCK_UNLOCK_FAILED) + || FIELD_EX32(sd->card_status, CSR, WP_ERASE_SKIP)) << 1; + resp[1] |=3D FIELD_EX32(sd->card_status, CSR, ERROR) << 2; + resp[1] |=3D FIELD_EX32(sd->card_status, CSR, CC_ERROR) << 3; + resp[1] |=3D FIELD_EX32(sd->card_status, CSR, CARD_ECC_FAILED) << 4; + resp[1] |=3D FIELD_EX32(sd->card_status, CSR, WP_VIOLATION) << 5; + resp[1] |=3D FIELD_EX32(sd->card_status, CSR, ERASE_PARAM) << 6; + resp[1] |=3D FIELD_EX32(sd->card_status, CSR, OUT_OF_RANGE) << 7; + + return 2; +} + static size_t sd_response_r3_make(SDState *sd, uint8_t *response, size_t r= espsz) { size_t rsplen =3D 4; @@ -1633,7 +1653,7 @@ static sd_rsp_type_t sd_cmd_SEND_STATUS(SDState *sd, = SDRequest req) } =20 if (sd_is_spi(sd)) { - return sd_r2_s; + return spi_r2; } =20 return sd_req_rca_same(sd, req) ? sd_r1 : sd_r0; @@ -1947,8 +1967,14 @@ static sd_rsp_type_t sd_acmd_SET_BUS_WIDTH(SDState *= sd, SDRequest req) /* ACMD13 */ static sd_rsp_type_t sd_acmd_SD_STATUS(SDState *sd, SDRequest req) { - return sd_cmd_to_sendingdata(sd, req, 0, - sd->sd_status, sizeof(sd->sd_status)); + sd_rsp_type_t rsp; + + rsp =3D sd_cmd_to_sendingdata(sd, req, 0, + sd->sd_status, sizeof(sd->sd_status)); + if (sd_is_spi(sd) && rsp !=3D sd_illegal) { + return spi_r2; + } + return rsp; } =20 /* ACMD22 */ @@ -2251,6 +2277,10 @@ send_response: rsplen =3D sd_response_r1_make(sd, response, respsz); break; =20 + case spi_r2: + rsplen =3D spi_response_r2_make(sd, response, respsz); + break; + case sd_r2_i: assert(respsz >=3D 16); memcpy(response, sd->cid, sizeof(sd->cid)); diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index 79b6d34a489..ace155186cf 100644 --- a/hw/sd/ssi-sd.c +++ b/hw/sd/ssi-sd.c @@ -158,9 +158,6 @@ static uint32_t ssi_sd_transfer(SSIPeripheral *dev, uin= t32_t val) longresp, sizeof(longresp)); DPRINTF("CMD%d arg 0x%08x =3D %d\n", s->cmd, request.arg, s->a= rglen); assert(s->arglen > 0); - /* CMD13 returns a 2-byte statuse work. Other commands - only return the first byte. */ - s->arglen =3D (s->cmd =3D=3D 13) ? 2 : 1; memcpy(s->response, longresp, s->arglen); =20 /* handle R1b (busy signal) */ --=20 2.49.0 From nobody Sat Nov 15 06:33:16 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1753998123; cv=none; d=zohomail.com; s=zohoarc; b=idJPbP7nHsce9P708uccla9pR0JtMmjW527xzqVssJg2dyPfkUfVXHW2Gjn9BIzixMVZYWIGc/dHgUiJngxwqyviSiGexO9I+XcbcOtbJYzF/F2b4aFQ3ydpcKl+FAdOPzWGZeRT++PJFdvCxrCuasUZajPMkGlHlOmc8pIgTvo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753998123; 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=Pz9zKdw2mAwFUG5tOQkJs8yneXKkyowJKPF8euu8n00=; b=FgxdVsW1q6MNLuE6lBaRj3eLVszH9/pTnrPdvDUibOdynhx+cZhSqaP3LykrmBZgLjHIf0ifKZXgTlCalXZcZfQF4FPq6z8bzmUtTy82Wcd0zk2qtRjhhraC/xOoLN5yCGctVlgmGUE7LiEasFwA+UqiONAS+QbS2avy7LOzJjI= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175399812322763.88194693628486; Thu, 31 Jul 2025 14:42:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhb2C-0006ci-9L; Thu, 31 Jul 2025 17:41:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhapT-0001cg-QC for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:47 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhapR-0007wd-UZ for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:47 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-3b78a034f17so130766f8f.2 for ; Thu, 31 Jul 2025 14:28:45 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4589ee628fcsm40155635e9.31.2025.07.31.14.28.41 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 31 Jul 2025 14:28:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1753997324; x=1754602124; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Pz9zKdw2mAwFUG5tOQkJs8yneXKkyowJKPF8euu8n00=; b=EV9gm93jUFHfcb3/gr62rvYL656pVoqwvyWbRYy0XoShF95fyeAvNYQaexhY+z6LWq 9MhNRSv53jn98jG14MSOaZuFmgrOUBKHibnz6VVU6WSMLLRbQvDTyh3jem481dWD5snT ZYv8id9c0v5CvgIPTU8UVBBj0+u2Ld6FSnvEewChId2mJ8pjg+rAWUZNFDJA0wcKHL/u Xmf6rsA+Ox3d4jIVw5GHPoRdkFIP+FhWPtaHAzJZsQ3aV4+4AaoVM71wtVA5iI2vnRz+ QEKoguo1AV6RXEocTtVBMJs4geK1FRF+md/2rcrHQhV5YSACZb3DMoQZpnIdcPgAiAyS 74Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753997324; x=1754602124; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Pz9zKdw2mAwFUG5tOQkJs8yneXKkyowJKPF8euu8n00=; b=XOXbOuIF64hNKthQ4c1TEisn5qYa9epePNnCxgyIfnpSf9DgmhI2ec9x9BVARr1V+V 85d5DKqcCu8rf8IOGLxPdYms+gdZmRql6BCCwLp9zaH30yYoT7lNZHUUsr1GeZ8Njyv7 qf5jSJxEtdenqVhFyzHjiTGA5wLyoxZwN1skc0HBUNJkw3e6IoHcrFuge7mdUL77KI12 TTZkVDZywxzfibwOW/gfw4KIDhK3FALZ+3Sr3Zo9omOS/m8D3bQd2HDirS9oIteW5Hax NrmizEhMle9haskNHfLmGdaM7iwkcxXAwqWp2YRn13USdG+H+rxdpGD1ST250iSK2Jw/ gQ3g== X-Gm-Message-State: AOJu0YyOdpD+QXZWUPRVPxd4AlvU7NmoUe+sowb/SS79QGY7wR0Y+mus i2z4BCaq69VGCIjP8S1iaXlKOUBbJZUsrvOxphrX59be+bXIQYm4Ku1e6RLNZBgkh6UHk5IU4D5 fqo23 X-Gm-Gg: ASbGncveBGp/96fFvjxuo3QdNvy4heDKcAf443zZZAXp3Lp/h3Pq8Z0YJOWav5PDioZ W7Of0G0/97vYCceKd6GQGWheKNugsyEpgAdZ2F3RkaJu/SvWNubpZMhn5d+zDgsY6HzsciDdmzF XCMKCdbn/iAzr1T0WfRuLPIT7KZH7w23GKA7CSWFiXKFvQywIf9+EsCA7q1Bka71VoU1OPW+6TV 5NrViNHSbeVafOgj6EPVlEOtZ+cJ6O6gjuHIkOfl+hwxevhUyjTgURoLHCn8owver2RpLZOjsBY /T88v+GFglZ94T5iT0qfpp6nTA4ETlV9obLtL2IXEfNM/ROhczXO570z2gelbObCc/8074x3ry1 Y1UEPFe+q8XdX4ayo5hVVJnCivorMc3pfIknU8isMDxwdTxtNLehDLN9W563pIiWMO//cb7Bc X-Google-Smtp-Source: AGHT+IEf9L3k7mfDKxCRxFGVv3T8l+t3zTYDAGh09vGam0zAIiUHP2i3KvQ/qNWaJmBtAOVyMC+K1w== X-Received: by 2002:a05:6000:4310:b0:3b7:8914:cd95 with SMTP id ffacd0b85a97d-3b794fc2b55mr8104682f8f.7.1753997323705; Thu, 31 Jul 2025 14:28:43 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Peter Maydell Cc: Guenter Roeck , Palmer Dabbelt , Liu Zhiwei , Daniel Henrique Barboza , Strahinja Jankovic , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Bin Meng , Alistair Francis , Beniamino Galvani , Ben Dooks , Weiwei Li , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH-for-10.1 06/11] hw/sd/sdcard: Use complete SEND_OP_COND implementation in SPI mode Date: Thu, 31 Jul 2025 23:28:01 +0200 Message-ID: <20250731212807.2706-7-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250731212807.2706-1-philmd@linaro.org> References: <20250731212807.2706-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=philmd@linaro.org; helo=mail-wr1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1753998126787124100 While spi_cmd_SEND_OP_COND() is incomplete, sd_cmd_SEND_OP_COND() is, except it doesn't return the correct value in SPI mode. Correct and use, removing the need for spi_cmd_SEND_OP_COND(). Fixes: 775616c3ae8 ("Partial SD card SPI mode support") Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 078bc5ef091..d6493d44734 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1402,14 +1402,6 @@ static sd_rsp_type_t sd_cmd_GO_IDLE_STATE(SDState *s= d, SDRequest req) return sd_is_spi(sd) ? sd_r1 : sd_r0; } =20 -/* CMD1 */ -static sd_rsp_type_t spi_cmd_SEND_OP_COND(SDState *sd, SDRequest req) -{ - sd->state =3D sd_transfer_state; - - return sd_r1; -} - /* CMD2 */ static sd_rsp_type_t sd_cmd_ALL_SEND_CID(SDState *sd, SDRequest req) { @@ -2034,6 +2026,9 @@ static sd_rsp_type_t sd_cmd_SEND_OP_COND(SDState *sd,= SDRequest req) sd->state =3D sd_ready_state; } =20 + if (sd_is_spi(sd)) { + return sd_r1; + } return sd_r3; } =20 @@ -2580,7 +2575,7 @@ static const SDProto sd_proto_spi =3D { .name =3D "SPI", .cmd =3D { [0] =3D {0, sd_spi, "GO_IDLE_STATE", sd_cmd_GO_IDLE_STATE}, - [1] =3D {0, sd_spi, "SEND_OP_COND", spi_cmd_SEND_OP_COND}, + [1] =3D {0, sd_spi, "SEND_OP_COND", sd_cmd_SEND_OP_COND}, [5] =3D {9, sd_spi, "IO_SEND_OP_COND", sd_cmd_optional}, [6] =3D {10, sd_spi, "SWITCH_FUNCTION", sd_cmd_SWITCH_FUNCTION}, [8] =3D {0, sd_spi, "SEND_IF_COND", sd_cmd_SEND_IF_COND}, @@ -2616,7 +2611,7 @@ static const SDProto sd_proto_spi =3D { [13] =3D {8, sd_spi, "SD_STATUS", sd_acmd_SD_STATUS}, [22] =3D {8, sd_spi, "SEND_NUM_WR_BLOCKS", sd_acmd_SEND_NUM_WR_BL= OCKS}, [23] =3D {8, sd_spi, "SET_WR_BLK_ERASE_COUNT", sd_acmd_SET_WR_BLK= _ERASE_COUNT}, - [41] =3D {8, sd_spi, "SEND_OP_COND", spi_cmd_SEND_OP_COND}, + [41] =3D {8, sd_spi, "SEND_OP_COND", sd_cmd_SEND_OP_COND}, [42] =3D {8, sd_spi, "SET_CLR_CARD_DETECT", sd_acmd_SET_CLR_CARD_= DETECT}, [51] =3D {8, sd_spi, "SEND_SCR", sd_acmd_SEND_SCR}, }, --=20 2.49.0 From nobody Sat Nov 15 06:33:16 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1753998555; cv=none; d=zohomail.com; s=zohoarc; b=Z8Gyt29yKCeiAvqxftIjb0U+4wBRQcsSC79gccMDLtXxEeb4vazUkxSGE80kNq8pkbjh6ZpBZFC2HSXh8NwQ2aAv7PYz5XIRnsXmLW3DimZraZ7Ku7fGs86RSLCaL8nXQFMJPMqR3LkT0OyE17nsd/atBr1BgjB1R/37EqZMdHo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753998555; 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=s7mVqzkbs28pCgNpi8SZYEC1s3rbOHdivZGAjYGLV1c=; b=ebWWqUrTzOt+r8ZTWMBKKMcv6KwMw/PSnVIKchbFGJbt3eWK8GwCINPqvoKSszK0UW2018xFv3kyXC2pvwKxjGXtr5UUwXWAfUBex110HmZNRFWDkrOGeAIHSX7daX8GvjPSG02/7n3jNNWlwl2YoaHLgue8ILQtLe5/UOEF1JY= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1753998555138834.5676277390709; Thu, 31 Jul 2025 14:49:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhb8r-0000F6-V7; Thu, 31 Jul 2025 17:48:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhapZ-0001uM-7E for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:53 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhapW-0007xx-So for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:52 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-458a84e2917so3880485e9.1 for ; Thu, 31 Jul 2025 14:28:50 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4589ee4f164sm39164505e9.17.2025.07.31.14.28.47 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 31 Jul 2025 14:28:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1753997329; x=1754602129; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=s7mVqzkbs28pCgNpi8SZYEC1s3rbOHdivZGAjYGLV1c=; b=jZKRDNrnFwLB9pE6JVTge48BHOxQsZrtCWdzFKlTH+5IGa+5nxjqeu/vGymhtLvOHX nz2eFbURjYJ8vTpXoUD9PcVUyzjXZMyxNc8u6JCRR/rNaaQ3t/v/rwWNE2M2VZZIaIcZ mzSsLbdFXNePDunqrRKhHp8xgjAHc6hPLJZhNVC+uIg5R1S19T0liiHLgNgm+5eARnI4 Ii7QVmHQHNz0qMbpr66Yj78QhAs6e5SssIy2th5M94RqoRhDptQGdAe6/mO8QkZiIuAH lsz2sxvr4fECqa07T0zC9UteWQgR4S+hteHcGn1FQxVAjAu7t2IATokjpsO9ycBv7AZW RbAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753997329; x=1754602129; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=s7mVqzkbs28pCgNpi8SZYEC1s3rbOHdivZGAjYGLV1c=; b=W8p6FYc8OTQboaEuyWC3PADdU513GQfaODjwm/ZQCtJfpo4nS9Z9fdbTeyyICmIzUh EsAc9ZTKMKMWsX09E3qi74Ni0/Eu2368YJh63qBwBBwgZXUnaHTXJgK/mvBQns43rWvh kRXyaMlWr1DwJwkTe2x3nxrmVurRmT6fT7RZu5BhAkhgB4JzlZzljBvswnp/jxa853AH GOplNWC5GzovcvjklahLoMD8ffAemUgM6g+Y5kvnOljvt5w/defbiGVNUkaKAOqyq4TA xgxAW01XsVueK2eCdHA06D8BAbGj0DqvIMNvvVFzZ9dIIOpv9JgbZJgBq2xEY19UlPxN TVRQ== X-Gm-Message-State: AOJu0Yx2BuVu0y6pUDhVMJEVrgoRurm8Y8HuwZa5v/hXKod3pOjC5gHQ RXvtWqkF+ZbHVUjj5NDjYmPRgygHXyvclHquR4hRTd+JBU1LiG2mADwXE6FdbIIWeoAB3gHCbv7 dTMIw X-Gm-Gg: ASbGnctn7/dzRq8BDKAX1cNK6VN9yStE4mKZCwEEpQQo1MT6zn/IPMSwTyX/Eryb0fA ATaLIFwucRAPtEwA0/Q487mxViOahoND40ki3kfh1/eIL8GMzny7sjp3K1uO1W4ffEnjXszZVlU vim4/e3Z0ADjseUBZPGoQmad/LCIju+XYFAscevhOCfSUNIAQrZQ1NfJzB/XAgZ3ldLSZEOrSDw 8hcu/4CvxtdOKewcRhOStTPNnj8dT6ZBEHU4BJCiOqNMM6vgJkmNA6CkY7RUKDUpm0wgxChIaez fKq24c/baLCOw2fEPTnMW4Pmfs/LLuLK7DlPL1U0fAITs3yJyozoEx6crmQzlTYMn4y/kNrfRBD 8o49Foe6nCoB1F4mj969b+EKCcNvkh0Z1j1R6RqkicXLOG6ZHj5tX0oauknkvDS+YBfrxmGSG X-Google-Smtp-Source: AGHT+IFCPNBycVrXvv6jP5Sb1x+FI6TNUlsCxeMHh2pnFyPN9SeeEM1PguaW6827RS0lOXuzANFKTQ== X-Received: by 2002:a05:600c:1388:b0:456:25e7:bed with SMTP id 5b1f17b1804b1-4589af5ba2fmr76998555e9.14.1753997329028; Thu, 31 Jul 2025 14:28:49 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Peter Maydell Cc: Guenter Roeck , Palmer Dabbelt , Liu Zhiwei , Daniel Henrique Barboza , Strahinja Jankovic , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Bin Meng , Alistair Francis , Beniamino Galvani , Ben Dooks , Weiwei Li , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH-for-10.1 07/11] hw/sd/sdcard: Allow using SWITCH_FUNCTION in more SPI states Date: Thu, 31 Jul 2025 23:28:02 +0200 Message-ID: <20250731212807.2706-8-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250731212807.2706-1-philmd@linaro.org> References: <20250731212807.2706-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=philmd@linaro.org; helo=mail-wm1-x32b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1753998557555124100 In SPI mode, SWITCH_FUNCTION is valid in all mode (except the IDLE one). Fixes: 775616c3ae8 ("Partial SD card SPI mode support") Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index d6493d44734..04b3a1651c0 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1476,8 +1476,14 @@ static sd_rsp_type_t sd_cmd_SWITCH_FUNCTION(SDState = *sd, SDRequest req) if (sd->mode !=3D sd_data_transfer_mode) { return sd_invalid_mode_for_cmd(sd, req); } - if (sd->state !=3D sd_transfer_state) { - return sd_invalid_state_for_cmd(sd, req); + if (sd_is_spi(sd)) { + if (sd->state =3D=3D sd_idle_state) { + return sd_invalid_state_for_cmd(sd, req); + } + } else { + if (sd->state !=3D sd_transfer_state) { + return sd_invalid_state_for_cmd(sd, req); + } } =20 sd_function_switch(sd, req.arg); --=20 2.49.0 From nobody Sat Nov 15 06:33:16 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1753998640; cv=none; d=zohomail.com; s=zohoarc; b=gza3isK0D779wSCgokMUL46LEeXwhDca+Vgg738PtD2cfXCdEmzngOeBh/UEWLw5RSzLejgHWdHI8XyE8Li1DBv8chwbhJXItmZXKUHPC/kDBjfRojXld04IN3UnjO8p2ly+cGgGdmLEVpl3pHXzuXTHmIdPvHfX0D2v9t9ZWUg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753998640; 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=sBV+uzJ1KXdLFqT+HlvZO+Zs0JU9P9tlvSCNA6c7IfA=; b=UdhjXS3MNmBV1FCR5UmIXQWE8lLjV9j+bdD4n8mlPAw3rSNQHN1WXRtw0QcH/DnRxqwVkOGWY6udtscTiAThA8slKhmjxddpOa2Q6XzkDUFvdU240kykzpWr1A/gKAxT+CJOJIv0RnY6hOnGKN6eBxyBNrBZo/Lp3IDwbH4ImXg= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1753998640451515.8164047927818; Thu, 31 Jul 2025 14:50:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhb9A-0001Cq-DF; Thu, 31 Jul 2025 17:49:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhapf-0002Ch-Om for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:29:04 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhapc-0007z1-6H for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:28:58 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-3b7892609a5so1060359f8f.1 for ; Thu, 31 Jul 2025 14:28:55 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c3abec8sm3743136f8f.8.2025.07.31.14.28.53 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 31 Jul 2025 14:28:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1753997334; x=1754602134; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sBV+uzJ1KXdLFqT+HlvZO+Zs0JU9P9tlvSCNA6c7IfA=; b=PlfSriAvvRpSbuh5wpaUfY+9+u3z/JpKwLB5379d/w4fvdEmfF34RaMPsAZ1CufcES loY2vSXsxJD446nev10I7bAXSkkBzLefRezyY3gWePZf7jUS7DQ80mYFvmcslCSCCWYf N+BUVPJNHBpmSIO75ZhQj1+ssQAjY5I3/Vn9ejLCAtS0SeASIodNX0gni/RaPLZq1O54 b/M4gmfKHE9hffoCri6wQftZZPAfWUE+EngkGVfsq8ofsLkXFgOZVpU85c6hTojrbyH+ 747uT8l5JnnUNWudNyrp9hgmABBPbfpVedLHYiwV0VQVFSebaDzkgZLm5Y9t2V9I1PTO 4T0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753997334; x=1754602134; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sBV+uzJ1KXdLFqT+HlvZO+Zs0JU9P9tlvSCNA6c7IfA=; b=hTrzuRrwogEA9hDboW0BjO3RQGsxsbVZNZEkwdg9qvIkRGwX/YaKnbQbwHnI7DeKa1 72XC7fnG/IMzQIO6sXvDJQNU1m7UmsZTwZ8UwPLCHP6hsJ4f5ox6WewtRZ2u7Sci268T BaWsLdoyBnloFwTnsWP5osW+XQRKWbja4P+W7Ff7gWWEfW/k8ZLnmQqS/qvnKtzt9v9f 0HegfgDahN6LryXxvPaJY9WuMNF+xxqwCFRc4MMmBxgT21rJh1OgKvqF6rcbZySZIjBr /s2DrVQfGjr7xlMaBUiBV0aBY8XWuhoidpp9UJB9T7vCvgr1wYd2ywyqPuHzxLsxrQqw DpqA== X-Gm-Message-State: AOJu0YzJQLch5yyy9+cKF1Wi+1hhqwOQrobigH01eCT0qKObsZpb9rMf xUSVPrZi9BHqwlNSpXBjCfTCOHr4Ukgz2cm1uxu7yYOcxH5Bea84ycfGzSbJ4A/nFwOP8ACcNmJ /0gl3 X-Gm-Gg: ASbGnctYP4dFbpDz4apkqd6/ShIuQkSuDz3LfhVcFNDmu7l6GnSVf4pyLJjjDccHYyF TEV/r02Ixc2bcTbB7HUbbDF+V7mwVOXqnkZHli3/6rok8NqwRUX82e7f0cGGuS3FBc6hgkfqHi0 U18OMUn4hpya8NYd72KLCq5SlZ04OZvrvShiWVulcWegwLN+YSeJZt7xuxhXU/rrVtjlxqMrjNz Bq1tBP/aZvmX3fMVI0TCN+XKdw/460EsPJ1khH++0/1yPMvKWm3YzxbUAegES/JjtLtGIm+o3Sk gayeqZn4JcUFx6lnCRdO6HsDB5P7Qt980H3wnc0p1NBqM06fuhAPNj924H5EKIf5GCv+xODRelM 5EVsrEngvQaNQFJWPFbvs2P7F+QymuHVweWI1NFG2S5yzlHG5g08qFCF10xtm9ONFrEU8jMyX4d T4ZXY2b38= X-Google-Smtp-Source: AGHT+IHO4HikjPZVpifbu6NuUKtGd2+RYTWDmPJ0XDxxx1BabiJc8mK25TDq7amE/f6P8BgxOR5Exw== X-Received: by 2002:a05:6000:2289:b0:3b7:89a3:80a5 with SMTP id ffacd0b85a97d-3b795029a90mr7217951f8f.45.1753997334344; Thu, 31 Jul 2025 14:28:54 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Peter Maydell Cc: Guenter Roeck , Palmer Dabbelt , Liu Zhiwei , Daniel Henrique Barboza , Strahinja Jankovic , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Bin Meng , Alistair Francis , Beniamino Galvani , Ben Dooks , Weiwei Li , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH-for-10.1 08/11] hw/sd/sdcard: Factor spi_cmd_SEND_CxD() out Date: Thu, 31 Jul 2025 23:28:03 +0200 Message-ID: <20250731212807.2706-9-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250731212807.2706-1-philmd@linaro.org> References: <20250731212807.2706-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::436; envelope-from=philmd@linaro.org; helo=mail-wr1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1753998641674116600 spi_cmd_SEND_CSD() and spi_cmd_SEND_CID() are very similar. Factor the common code as spi_cmd_SEND_CxD(). Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 04b3a1651c0..ef72ce717b8 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1576,14 +1576,19 @@ static sd_rsp_type_t emmc_cmd_SEND_EXT_CSD(SDState = *sd, SDRequest req) sd->ext_csd, sizeof(sd->ext_csd)); } =20 -/* CMD9 */ -static sd_rsp_type_t spi_cmd_SEND_CSD(SDState *sd, SDRequest req) +static sd_rsp_type_t spi_cmd_SEND_CxD(SDState *sd, SDRequest req, + const void *data, size_t size) { if (sd->state !=3D sd_standby_state) { return sd_invalid_state_for_cmd(sd, req); } - return sd_cmd_to_sendingdata(sd, req, sd_req_get_address(sd, req), - sd->csd, 16); + return sd_cmd_to_sendingdata(sd, req, 0, data, size); +} + +/* CMD9 */ +static sd_rsp_type_t spi_cmd_SEND_CSD(SDState *sd, SDRequest req) +{ + return spi_cmd_SEND_CxD(sd, req, sd->csd, sizeof(sd->csd)); } =20 static sd_rsp_type_t sd_cmd_SEND_CSD(SDState *sd, SDRequest req) @@ -1598,11 +1603,7 @@ static sd_rsp_type_t sd_cmd_SEND_CSD(SDState *sd, SD= Request req) /* CMD10 */ static sd_rsp_type_t spi_cmd_SEND_CID(SDState *sd, SDRequest req) { - if (sd->state !=3D sd_standby_state) { - return sd_invalid_state_for_cmd(sd, req); - } - return sd_cmd_to_sendingdata(sd, req, sd_req_get_address(sd, req), - sd->cid, 16); + return spi_cmd_SEND_CxD(sd, req, sd->cid, sizeof(sd->cid)); } =20 static sd_rsp_type_t sd_cmd_SEND_CID(SDState *sd, SDRequest req) --=20 2.49.0 From nobody Sat Nov 15 06:33:16 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1753998616; cv=none; d=zohomail.com; s=zohoarc; b=F7bLfrIXaGCAE2j0CozUojK0fRLiJrPTmC7oz+gzRt3cANlnHpdZcv42JNinvKl0Cb+0EZJpumq0AXcG91ukgZemj50iEFNqRi4ikn2QbAQ1bNA7pHJ+N5Izc5LWaqemY5u8Rk9nScLdn6qhnYN7jfislpgokPZAjmYRBn08Qjg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753998616; 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=Obt7l2dUxC1zZFfVKxnVIXG3NpYsLOMtlWCU49WAEg0=; b=ZJgZq4N+26SwvmVjJSZLQyaUrXu0QD2dcJ4jf6oDxdZ9xYuWojTR0EzWgP67QJH/404oRAwUlxtWu93Yn4Yks/mRVM3d8h8Krk7JWfUPDB3sGg/sVYYM7HKfNWFuT9AbLM5Bvv2BrrvhivS985nDgqhJ6YpCumFRguf1IspbYcw= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1753998616358864.1634716057141; Thu, 31 Jul 2025 14:50:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhb9S-0001gA-7j; Thu, 31 Jul 2025 17:49:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhapk-0002Iw-8x for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:29:05 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhaph-000803-TI for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:29:04 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-4560add6cd2so10680945e9.0 for ; Thu, 31 Jul 2025 14:29:01 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-458981d0b06sm82538785e9.5.2025.07.31.14.28.58 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 31 Jul 2025 14:28:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1753997340; x=1754602140; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Obt7l2dUxC1zZFfVKxnVIXG3NpYsLOMtlWCU49WAEg0=; b=rHn+gtU/BZPOYKM1FvdO1B+JDY6UuL+hwppn203K2lKvC+O9cDEzHg7rfJaZOmfyH1 GVpGx05ro/QKKHaG1k5cqY2ywlSvSO+xLWBjeIEzR1YLqYuNnMRRtqeS3y4bZ/Lw35ck Uf6RqXij7zMRrLDcs/Rxz95gt/xNG0ncUmPgwgiXC74rt5Ngjft8kH6Ud3o3zIXY3Vtf 3vHLCJPB3JX+MOr8Ef3E2UticS2XjBg7pCYu4FRfsz5BOH3SkRyiFFBgsw4Yeat/XQPc UIDsJhII3RDeLu7+ntxKhq8r31j98ORSJsDPcnLJim8ENOR0QLIUW/ugbgz8rh8hP2oX 2lhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753997340; x=1754602140; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Obt7l2dUxC1zZFfVKxnVIXG3NpYsLOMtlWCU49WAEg0=; b=c8QBFgkO9ZKyu8UVDFsXAeKLMCyn4VZrQ7sbBEBR/ZAVmqBXciJkYfKo574MNfHRSJ GrEyNe4alU3QT7X/klkSnEOGb2QXnVJzHGDhHGieVX1t57IERydzmCrVlyDbOu+rfNyr Q2MBv9Uw7NVZGJox484IiFNNvu2PdBTYFNFRnZZZ7ok34oKsqrfXpnkWUiYMffI9OaaL e3An485atwt6/uG9so/L0dUQrzpuhwGe/1XmBi8gohlgdYK/+0SzuBVCgwuqEYaHOIZq rceX9ybR2TK1TEeOmLW5P+9HDqvt0ZQgXkmEVF94CKW+C6ff3dtpOt+U6jZKU1GkRudV r5KQ== X-Gm-Message-State: AOJu0YxeijwIw7uB7QAHw638rmrCXS+XNUH+P+k0tBOby4NZ5rVIjJiq 4mJFcea9+emgl9KurgLi3q7h/OgEVzb8O5a1isFLtsK9aNkZ8WMIvFMTKGzqyDEmU1/my6MDby1 7J326 X-Gm-Gg: ASbGncspQnVftMddhTQZjT1UWkQtJUXht3xBuxEpbbn05571s/mCkN0NRaRuqk2V+Rl gpVYfqdRzqGA1Zijx3lhu2/GbKGRgO1fbytyav3zgpO03jhiFjPFKf072ecaOqindvgVBYNSRh5 Shttt7cctJF3LvA5lbAPLfd2M5i4e68iYbxz+qRKtDZc5i2s6IlbP9PFHOvORUo08i91zzMaKzR 4K3M1gJDImcMPS6SPQbMwVuFsRlUGjAAT9UUrUjmNfjgyo1+KThZ9LBDEej5Q5FS2tck+7CndKw 7OOi864RYi6ZupV1FSK61JTsSylN88kvZ5BZ6ZMOBkVXfCSyhXaP6hjOapwJXWDOMdJmbridyPo UYRuM167k86M2MYp1oZevND8IjztA4jBbn3VuDuCgm3A+S4NmkHc5kRXloD5LiNvWGIuKC3B+ X-Google-Smtp-Source: AGHT+IF0x1KCEHM6qibFWkF/SRblq0y5j3s9nWHgsDMIjOquYMLJ1MWGmeq0wvW4yyd8xeqMt7qyOA== X-Received: by 2002:a05:600c:1d09:b0:458:6dea:af6f with SMTP id 5b1f17b1804b1-458a2431906mr39548015e9.15.1753997339922; Thu, 31 Jul 2025 14:28:59 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Peter Maydell Cc: Guenter Roeck , Palmer Dabbelt , Liu Zhiwei , Daniel Henrique Barboza , Strahinja Jankovic , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Bin Meng , Alistair Francis , Beniamino Galvani , Ben Dooks , Weiwei Li , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH-for-10.1 09/11] hw/sd/sdcard: Disable checking STBY mode in SPI SEND_CSD/CID Date: Thu, 31 Jul 2025 23:28:04 +0200 Message-ID: <20250731212807.2706-10-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250731212807.2706-1-philmd@linaro.org> References: <20250731212807.2706-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=philmd@linaro.org; helo=mail-wm1-x330.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1753998618463124100 The card should be in STANDBY mode to process SEND_CSD or SEND_CID, but is still in IDLE mode. Unfortunately I don't have enough time to keep debugging this issue, so disable the check for the time being and the next release, as it blocks Linux. I'll keep looking. Reported-by: Guenter Roeck Reported-by: Ben Dooks Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index ef72ce717b8..79395f7c5bb 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1579,9 +1579,20 @@ static sd_rsp_type_t emmc_cmd_SEND_EXT_CSD(SDState *= sd, SDRequest req) static sd_rsp_type_t spi_cmd_SEND_CxD(SDState *sd, SDRequest req, const void *data, size_t size) { + /* + * XXX as of v10.1.0-rc1 command is reached in sd_idle_state, + * so disable this check. if (sd->state !=3D sd_standby_state) { return sd_invalid_state_for_cmd(sd, req); } + */ + + /* + * Since SPI returns CSD and CID on the DAT lines, + * switch to sd_transfer_state. + */ + sd->state =3D sd_transfer_state; + return sd_cmd_to_sendingdata(sd, req, 0, data, size); } =20 --=20 2.49.0 From nobody Sat Nov 15 06:33:16 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1753998595; cv=none; d=zohomail.com; s=zohoarc; b=ODeuoArG3K/C30jCP/4ODGBNeUvLKTTAWkcvJaibCWaQ1hODqCUbvBsvT56gJYDT9oVeyFbPuhIKLbQ6jMaVslsE09uVFO6kpm+EtpV2MGD39Ck+eoRmhyrH4CneaWnyWnNlPjoeNFH5lOltO63mCXsxB1XtBSB3w9K4dPgNlaM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753998595; 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=jkfojtDXr6zwonVIseoNjUuQeq8ucsw9ORq6akfX5/M=; b=jlpKaMqoeYUHBib3VVup5PrLwkqeZE+hX34J2Im26PZPt5iXWxUhmf5iPunRkOWL3TBm+ErLtxo7lpm4XFm0Nkoz91Zw4UqDMTpUTmwDnobGHZzqS6FLDDvZtWhFe3dSjajDwTtpnQb/4L2ykLDLeKmJJcKsrkHSsKNuw9bAYrU= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175399859555490.16785832140658; Thu, 31 Jul 2025 14:49:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhb9c-00029T-Ee; Thu, 31 Jul 2025 17:49:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhapp-0002Nq-8B for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:29:14 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhapn-00080x-8n for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:29:08 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-3b78127c5d1so700490f8f.3 for ; Thu, 31 Jul 2025 14:29:06 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c3c51e2sm3482337f8f.32.2025.07.31.14.29.03 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 31 Jul 2025 14:29:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1753997345; x=1754602145; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jkfojtDXr6zwonVIseoNjUuQeq8ucsw9ORq6akfX5/M=; b=OWg/+3+0R1P8mFX5Zf2GngkiPgG6h5086aj8l9mmvkaDo1ICccDswyTpbOeVxVF49L 7q6VEiRozLk6hTYKeVU8hW+WBW7PcUw45kywgDaetyUCoP3ykkr5rbuQmlZlQx0koCpi Kw9AplVdiIH0x3NoEWsCr9e0meOwQtBG5rIEfqXnxtLDm+8UWflT83mt2FbnArTR1xSF lDHKAN1cSxNd0pzovMHmJu1ZnDRqhVzw3FcHXIYVA67vv+M4aVt+tw7A2DsEDkdN6KjL HPkywPwqObGTecwpcNyND6GFmCOWSGf+xZGNjh3n39905tOebvpiwKMh5On0KPPl7sIR eRhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753997345; x=1754602145; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jkfojtDXr6zwonVIseoNjUuQeq8ucsw9ORq6akfX5/M=; b=TT6lSz5RcQ1jcjCpP/rpLhtWIbo3Oqr9qZgTXUMgJvGGZq8/Me+0u4nAivEYxmJsQ1 46WH6bK1WZK2WDXjBEuvw4NRTjIvbMooznEZYHoIXEdbe3LJkdIN1XC5iOF1m2C6IuJa cguOJ21H3dJ/v0AxY5ECVqRAjTDmlBW6VqrtH7wJ1l2bUuycjTVbBtl1qeEqF4iufJH3 ofzCEOL7jMmrgwKe51T+F6uTtHGR0XQi1fz1oxtD42wMT2KxclZj++BvCg8ggJ8+FhcT kC3EDVHEzmNrLO2rpoXe7SiE0+qfGTN+E++hAEQDhvshLfq/nut47+r/vYz14CHVGdYK FnFw== X-Gm-Message-State: AOJu0YydRU7fSEk9QuScODglNYMoAF8pTVsIlnpV4lfvppBdbhJUk864 Rk3J5gckEvjSwq3AhZslEpnllgNbaRHWBUNebZ/l9kdY1BcJhzI+OLW/EnOGtk/YUbhSTRFbN+R PkKrg X-Gm-Gg: ASbGncua3pBbSNzPVCtUJZ+4G+CTmzJxyajfUGc2VAUyEmcbkY8LZuxfa2QGSRfIagp Zm1rkt0tTzRb5aIv+UA4IR1WPBk8iUxw27JYY3YmFIwqdztjWRlUVhGbOEnyy4jMY3tIcP4KDnS VsaNxDMGzW0nwqGQK/uprsv5eZw8gjYFVNlzQ0QKJPwaZXBCz+h1JZDXGFWlVDzOrqBiAkfuvzm HRMJ4n168Nc4v/pYnc5yYCnvPWZ5HODkQW3WKJI/U0dpflJX3ysNW30HUsv1Vp1ZunfKX5F01MN IWZu2rUdnib6aNHhXvXmbZNxF3GXgFllbSj67HB/U7E9X26GYZr32VTUQE/Km5MXCngEZRwsGiO SNp8x/z9j0mcbbowMRcIm/YRYzFHW4ywgohcbZcYRETaf/vcxz5YF0RCKhmoXnG1qvwujvpnM X-Google-Smtp-Source: AGHT+IFTg5TVHjqICL1gUuWHychv/Y2cIfzg20vD3ayHi+07K+yPwnhHsov8RNS0EkC7qS1XHW3N6A== X-Received: by 2002:a5d:649a:0:b0:3b8:d3b4:2c4a with SMTP id ffacd0b85a97d-3b8d3b42e23mr51514f8f.17.1753997345292; Thu, 31 Jul 2025 14:29:05 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Peter Maydell Cc: Guenter Roeck , Palmer Dabbelt , Liu Zhiwei , Daniel Henrique Barboza , Strahinja Jankovic , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Bin Meng , Alistair Francis , Beniamino Galvani , Ben Dooks , Weiwei Li , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH-for-10.1 10/11] hw/sd/sdcard: Remove SDState::mode field Date: Thu, 31 Jul 2025 23:28:05 +0200 Message-ID: <20250731212807.2706-11-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250731212807.2706-1-philmd@linaro.org> References: <20250731212807.2706-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42f; envelope-from=philmd@linaro.org; helo=mail-wr1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @linaro.org) X-ZM-MESSAGEID: 1753998597484116600 SD card mode is a superset of its state (SDState::state), no need to migrate it. Use sd_mode() to get the SDCardModes from the SDCardStates. Fixes: 50a5be6c3d5 ("hw/sd.c: add SD card save/load support") Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 35 +++++++++++++++++------------------ hw/sd/trace-events | 4 ++-- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 79395f7c5bb..42bf286b64a 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -147,7 +147,6 @@ struct SDState { =20 /* Runtime changeables */ =20 - uint32_t mode; /* current card mode, one of SDCardModes */ int32_t state; /* current card state, one of SDCardStates */ uint32_t vhs; bool wp_switch; @@ -315,27 +314,24 @@ static void sd_set_voltage(SDState *sd, uint16_t mill= ivolts) } } =20 -static void sd_set_mode(SDState *sd) +static enum SDCardModes sd_mode(SDState *sd) { switch (sd->state) { case sd_inactive_state: - sd->mode =3D sd_inactive; - break; - + return sd_inactive; case sd_idle_state: case sd_ready_state: case sd_identification_state: - sd->mode =3D sd_card_identification_mode; - break; - + return sd_card_identification_mode; case sd_standby_state: case sd_transfer_state: case sd_sendingdata_state: case sd_receivingdata_state: case sd_programming_state: case sd_disconnect_state: - sd->mode =3D sd_data_transfer_mode; - break; + return sd_data_transfer_mode; + default: + g_assert_not_reached(); } } =20 @@ -1013,7 +1009,7 @@ static const VMStateDescription sd_vmstate =3D { .minimum_version_id =3D 2, .pre_load =3D sd_vmstate_pre_load, .fields =3D (const VMStateField[]) { - VMSTATE_UINT32(mode, SDState), + VMSTATE_UNUSED(4), VMSTATE_INT32(state, SDState), VMSTATE_UINT8_ARRAY(cid, SDState, 16), VMSTATE_UINT8_ARRAY(csd, SDState, 16), @@ -1313,7 +1309,7 @@ static sd_rsp_type_t sd_invalid_state_for_cmd(SDState= *sd, SDRequest req) static sd_rsp_type_t sd_invalid_mode_for_cmd(SDState *sd, SDRequest req) { qemu_log_mask(LOG_GUEST_ERROR, "%s: CMD%i in a wrong mode: %s (spec %s= )\n", - sd->proto->name, req.cmd, sd_mode_name(sd->mode), + sd->proto->name, req.cmd, sd_mode_name(sd_mode(sd)), sd_version_str(sd->spec_version)); =20 return sd_illegal; @@ -1473,7 +1469,7 @@ static sd_rsp_type_t emmc_cmd_sleep_awake(SDState *sd= , SDRequest req) /* CMD6 */ static sd_rsp_type_t sd_cmd_SWITCH_FUNCTION(SDState *sd, SDRequest req) { - if (sd->mode !=3D sd_data_transfer_mode) { + if (sd_mode(sd) !=3D sd_data_transfer_mode) { return sd_invalid_mode_for_cmd(sd, req); } if (sd_is_spi(sd)) { @@ -1646,7 +1642,7 @@ static sd_rsp_type_t sd_cmd_STOP_TRANSMISSION(SDState= *sd, SDRequest req) /* CMD13 */ static sd_rsp_type_t sd_cmd_SEND_STATUS(SDState *sd, SDRequest req) { - if (sd->mode !=3D sd_data_transfer_mode) { + if (sd_mode(sd) !=3D sd_data_transfer_mode) { return sd_invalid_mode_for_cmd(sd, req); } =20 @@ -1672,7 +1668,7 @@ static sd_rsp_type_t sd_cmd_SEND_STATUS(SDState *sd, = SDRequest req) /* CMD15 */ static sd_rsp_type_t sd_cmd_GO_INACTIVE_STATE(SDState *sd, SDRequest req) { - if (sd->mode !=3D sd_data_transfer_mode) { + if (sd_mode(sd) !=3D sd_data_transfer_mode) { return sd_invalid_mode_for_cmd(sd, req); } switch (sd->state) { @@ -2078,7 +2074,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) if (req.cmd !=3D 55 || sd->expecting_acmd) { trace_sdcard_normal_command(sd->proto->name, sd->last_cmd_name, req.cmd, - req.arg, sd_state_name(sd->state)); + req.arg, + sd_mode_name(sd_mode(sd)), + sd_state_name(sd->state)); } =20 /* Not interpreting this as an app command */ @@ -2164,7 +2162,9 @@ static sd_rsp_type_t sd_app_command(SDState *sd, { sd->last_cmd_name =3D sd_acmd_name(sd, req.cmd); trace_sdcard_app_command(sd->proto->name, sd->last_cmd_name, - req.cmd, req.arg, sd_state_name(sd->state)); + req.cmd, req.arg, + sd_mode_name(sd_mode(sd)), + sd_state_name(sd->state)); sd->card_status |=3D APP_CMD; =20 if (sd->proto->acmd[req.cmd].handler) { @@ -2264,7 +2264,6 @@ static size_t sd_do_command(SDState *sd, SDRequest *r= eq, } =20 last_state =3D sd->state; - sd_set_mode(sd); =20 if (sd->expecting_acmd) { sd->expecting_acmd =3D false; diff --git a/hw/sd/trace-events b/hw/sd/trace-events index db0644256d9..8d49840917e 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -37,8 +37,8 @@ sdhci_write_dataport(uint16_t data_count) "write buffer f= illed with %u bytes of sdhci_capareg(const char *desc, uint16_t val) "%s: %u" =20 # sd.c -sdcard_normal_command(const char *proto, const char *cmd_desc, uint8_t cmd= , uint32_t arg, const char *state) "%s %20s/ CMD%02d arg 0x%08x (state %s)" -sdcard_app_command(const char *proto, const char *acmd_desc, uint8_t acmd,= uint32_t arg, const char *state) "%s %23s/ACMD%02d arg 0x%08x (state %s)" +sdcard_normal_command(const char *proto, const char *cmd_desc, uint8_t cmd= , uint32_t arg, const char *mode, const char *state) "%s %20s/ CMD%02d arg = 0x%08x (mode %s, state %s)" +sdcard_app_command(const char *proto, const char *acmd_desc, uint8_t acmd,= uint32_t arg, const char *mode, const char *state) "%s %23s/ACMD%02d arg 0= x%08x (mode %s, state %s)" sdcard_response(const char *rspdesc, int rsplen) "%s (sz:%d)" sdcard_powerup(void) "" sdcard_inquiry_cmd41(void) "" --=20 2.49.0 From nobody Sat Nov 15 06:33:16 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1753998210; cv=none; d=zohomail.com; s=zohoarc; b=NPue+7seA0P/8vIckuHpWiHvGaKVI3R1UGUZn6vjiHg6WhEejZHkvWYX+WvKf/WgSLNV3KDRhryEuahLkXM3jJq6grLkwR2AhVJNd9p35DqOm42GbbrDKzVUqZO3Gc9NEpwJUssudIu7RxL42jmirxxz9W2DQd3Y6AzOUy5fqZE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753998210; 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=G2FIRUMDpl11/+6iqYUzz4llQoL/Y4stMiRg59uk/HY=; b=AZwf1aOquKMoh6aix95+YA4RVjc6OX2ejjljXoAa3qLGVDFkBVt4tIWbcIvnqyH9jv5/VUb6noWZD1MdfpDTW2uJhALhbbHtmYhYrg4DGhzB5xd1Q+YHQq98G4CzZvKyxfwHutZtQDxITh6CRru4Ufi+NY4fMS8a/KfYbUIeU34= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175399821007590.12158341306383; Thu, 31 Jul 2025 14:43:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhb3N-0001Z3-8l; Thu, 31 Jul 2025 17:43:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhapy-0002kr-7U for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:29:18 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhapu-000821-IR for qemu-devel@nongnu.org; Thu, 31 Jul 2025 17:29:17 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-4589180b266so7748255e9.3 for ; Thu, 31 Jul 2025 14:29:14 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4589edfc930sm40383785e9.8.2025.07.31.14.29.09 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 31 Jul 2025 14:29:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1753997352; x=1754602152; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=G2FIRUMDpl11/+6iqYUzz4llQoL/Y4stMiRg59uk/HY=; b=nI5aWwBbgS4/3jj4QclFp4DPnG9nlqDlDl4PptZzoX5cPAAnxU1y1JP9wIRQhAVy96 0di5d87KF7tQ9z9CssVTygRZi6Wi1yaFtRPHKzMAKGUJIUOf7tC3lzfGkz3Ij6fMC7v+ lpOAnDYrULItqi1NHfjVg2ll+MPE5hS8WenZkauvblvqd10j+e444zAZqFqYz/jNuELc UUtFgDg+p+XWdUJS0CQAEN5sxayI1dvz89+pHAm/C7CCBH/Wlbh910YTATaZ/bPY3Jff UobuwfoP5soClhSusZHt2zskv5b/QTH/h0bFboV2LhyRW7klZgW+R+kieZwxjUAb5z8e RWoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753997352; x=1754602152; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=G2FIRUMDpl11/+6iqYUzz4llQoL/Y4stMiRg59uk/HY=; b=JlRZmSpCn3yVDO3+iVuvOoG3YZEMfvFfWPtCnoMCFXFWS+4QK1qk+qyLGfAnC94icf HPqU5kVnXgRxGuQjk/o8Ra86vyhcVLlil+PYtkPQh90XyKcIYKE70mYRLm1Nspbe+/Nx Dr3Cv7bo1NDJ+M4u8CmyM9kchQ2DpR3/aKmdJt6rj/tEvxhiwCAZ8mtZ+MiNTD002ceH cB7bltLbJD1oHZ1n/R0NpWQ7twbtSRbQL4M1D6UaGh2W05YAyFmcItu2FsQQbxtqCgcF ZVxVXehGVkmRF5BL8Xw3NS48iqLK1xIhMp72hB9u7PzRorZ638xqqqvxOMObs2g9zq1U XgdA== X-Gm-Message-State: AOJu0YylVnfFUp0OD5vCoepZfl7vV/kjxo7sDBCXL1UJnwyPAyuGMiCZ FK8g/oQPtlikkZeEXO2GuxaQykmcmRNEmlfMlsDK7KwBrgu4PAmmA1+XD+cA0T0dkIofyWEKpWH MjqCw X-Gm-Gg: ASbGncvyMe7drYXyPXNDxnQ0ROJWgOcF1xPg80LeiISJAmEUckzeRXNflqEM2XCSEz2 ueTPpw+0LLGhKhFmRc3deba/BePexuZ5gFrgY9Exn3wVhOx1RfJcrhlJpsnzENANm44T3Qg6cnf 1UMqOyRwruzTJlh7DXNX72/ruMtDRDWcz8M/x60CNMdFyPhznUqqDpKrpCmdmoF/vT8urxxnPw3 SXaHreAUnq8vg+jfw123av9XCObbujUZvsoZbLIBzedB9WDiFhOwBCnakZtLAvufyjKELC3FKEu ucuOWDQt+XR30IFyVEU7Bh8ZO30D9OwI6uFoGvz5QAei/JKhBS7Zayl3PEjuRsVrNjQ2uYRwU+f PjuBGi1YDkUaB3J9VbSZhFgYtnNkfwJHiNiH/Pe6ErYJWLyhDNItu7BkgonSSFgF8OAz2vIvHs9 5okxyfnQo= X-Google-Smtp-Source: AGHT+IGSxKGjIkWomQpPZ+Q2oiTHoCOtsF8wM+sVIizuyr27pSTSNaZMdLadjcbbAE+YlD76mrFYaQ== X-Received: by 2002:a05:600c:1c8d:b0:456:496:2100 with SMTP id 5b1f17b1804b1-45892ce7477mr79287005e9.31.1753997352454; Thu, 31 Jul 2025 14:29:12 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Peter Maydell Cc: Guenter Roeck , Palmer Dabbelt , Liu Zhiwei , Daniel Henrique Barboza , Strahinja Jankovic , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Bin Meng , Alistair Francis , Beniamino Galvani , Ben Dooks , Weiwei Li , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PATCH-for-10.1 11/11] tests/functional: Test SD cards in SPI mode (using sifive_u machine) Date: Thu, 31 Jul 2025 23:28:06 +0200 Message-ID: <20250731212807.2706-12-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250731212807.2706-1-philmd@linaro.org> References: <20250731212807.2706-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=philmd@linaro.org; helo=mail-wm1-x336.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1753998211740124100 Add a test which uses the sifive_u machine to boot a Linux kernel from a SD card connected via a SPI interface. Inspired from the command provided in: - https://lore.kernel.org/qemu-devel/94b2c5bf-53d0-4c74-8264-f3021916f38c@r= oeck-us.net/ - https://lore.kernel.org/qemu-devel/840016d0-0d49-4ef4-8372-b62b3bcd0ac6@c= odethink.co.uk/ Inspired-by: Guenter Roeck Inspired-by: Ben Dooks Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- MAINTAINERS | 1 + tests/functional/meson.build | 1 + tests/functional/test_riscv64_sifive_u.py | 51 +++++++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100755 tests/functional/test_riscv64_sifive_u.py diff --git a/MAINTAINERS b/MAINTAINERS index 069d77f2f80..25ee0eb3b0d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1695,6 +1695,7 @@ S: Supported F: docs/system/riscv/sifive_u.rst F: hw/*/*sifive*.c F: include/hw/*/*sifive*.h +F: tests/functional/test_riscv64_sifive_u.py =20 AMD Microblaze-V Generic Board M: Sai Pavan Boddu diff --git a/tests/functional/meson.build b/tests/functional/meson.build index ecf965adc6c..311c6f18065 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -274,6 +274,7 @@ tests_riscv64_system_quick =3D [ ] =20 tests_riscv64_system_thorough =3D [ + 'riscv64_sifive_u', 'riscv64_tuxrun', ] =20 diff --git a/tests/functional/test_riscv64_sifive_u.py b/tests/functional/t= est_riscv64_sifive_u.py new file mode 100755 index 00000000000..dc4cb8a4a96 --- /dev/null +++ b/tests/functional/test_riscv64_sifive_u.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +# +# Functional test that boots a Linux kernel on a Sifive U machine +# and checks the console +# +# Copyright (c) Linaro Ltd. +# +# Author: +# Philippe Mathieu-Daud=C3=A9 +# +# SPDX-License-Identifier: GPL-2.0-or-later + +import os + +from qemu_test import Asset, LinuxKernelTest +from qemu_test import skipIfMissingCommands + + +class SifiveU(LinuxKernelTest): + + ASSET_KERNEL =3D Asset( + 'https://storage.tuxboot.com/buildroot/20241119/riscv64/Image', + '2bd8132a3bf21570290042324fff48c987f42f2a00c08de979f43f0662ebadba') + ASSET_ROOTFS =3D Asset( + ('https://github.com/groeck/linux-build-test/raw/' + '9819da19e6eef291686fdd7b029ea00e764dc62f/rootfs/riscv64/' + 'rootfs.ext2.gz'), + 'b6ed95610310b7956f9bf20c4c9c0c05fea647900df441da9dfe767d24e8b28b') + + def test_riscv64_sifive_u_mmc_spi(self): + self.set_machine('sifive_u') + kernel_path =3D self.ASSET_KERNEL.fetch() + rootfs_path =3D self.uncompress(self.ASSET_ROOTFS) + + self.vm.set_console() + kernel_command_line =3D (self.KERNEL_COMMON_COMMAND_LINE + + 'root=3D/dev/mmcblk0 rootwait ' + 'earlycon=3Dsbi console=3DttySIF0 ' + 'panic=3D-1 noreboot') + self.vm.add_args('-kernel', kernel_path, + '-drive', f'file=3D{rootfs_path},if=3Dsd,format= =3Draw', + '-append', kernel_command_line, + '-no-reboot') + self.vm.launch() + self.wait_for_console_pattern('Boot successful.') + + os.remove(rootfs_path) + + +if __name__ =3D=3D '__main__': + LinuxKernelTest.main() --=20 2.49.0