From nobody Sun Dec 14 01:39:32 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=1754415283; cv=none; d=zohomail.com; s=zohoarc; b=X0dCEH9UO+aQ2gc72Cv8fa0Aec+HclnCiGF0UNnYaDxDBe5vZleeJWGMHJSIOH+PuwCeJApWOrHrz5BoJXE/ojZHHG6AdMaTyFUWXaVRZGriSojqvPQhjuHa0+1exyiM+XoSduaYMHocWzOMjyuJEF/uxhAPqkGK83N4BVzvSCQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415283; 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=+4uzNwmW98FQappTG9bvmpD6emypXpuyFoyZHU+E6nY=; b=hyRfExOCphdl7B9BUFojAjoLG7cvJ9Uq4dBGYEND5qQMNms/xG0FS3JmhJuk7PFX/X2VEH4bBFGjHCxKATL8L4on40DZKt2a9h6c67cld4sHJnI08LAD3k66c3NqvgUsDQmPX/lP4jxEMME4WNz8J+Cp4B/hJiiAlV38eTtM944= 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 1754415283877926.3121901927569; Tue, 5 Aug 2025 10:34:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLW8-0008Hs-HL; Tue, 05 Aug 2025 13:32:04 -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 1ujLVq-0008CF-M6 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:31:49 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ujLVn-0004r7-NU for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:31:46 -0400 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-3b77b8750acso85163f8f.0 for ; Tue, 05 Aug 2025 10:31:43 -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-3b79c489e81sm20129178f8f.68.2025.08.05.10.31.40 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:31:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415102; x=1755019902; 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=+4uzNwmW98FQappTG9bvmpD6emypXpuyFoyZHU+E6nY=; b=azAklSBOFngtRU7+qBJlg67PSQ9lmu7qv/Cl9jwkQDkHyWG41C/10yGVgWQIxO4jks dc0bsc2+E5oALGYQ/FDkaNjbh0n54bvz52+byI9D9hHQAZs42kdJ2gAJ3+R+FfhaIVyG RX/a5E8GgZTZUEra8aHrGvhGZRtbmm9jI/3PhXptjcUd0K4fTmdm2pxiv3xkfXiXWcxX WwBGK8RWyKjgBF5Ks8tKwxteZVGUxd7OtJEs1JdEOdFT9Wudvf29iY8qRcv8QHt99eus H5yG7B/k4tiW+IvS/F3M2o88eVIOdlu+ul007yReJRQX1YlKI+hlC4bdEJHBByf1srwv YO+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415102; x=1755019902; 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=+4uzNwmW98FQappTG9bvmpD6emypXpuyFoyZHU+E6nY=; b=mw6PgTLSM3UiXPyzkeim3Wvm8cs2SX+rhLzEzHsNn4p300ihI2qdceVDGN05KPulwK r/T1G5JhQvqcV+VSAHOqZ9/IpU4EaxWEviA4ynirzhgTe9DVGf4iMdvxyyMNnnSLP3W/ vbudGeuaQdEzrdUmtihRXZ4f6bLGFVNPiNivY2+4dCoBdZog3mMo72qiOmdhrIRTHstE SS63QL0P/OkEK/dId3/jH7LUusvucDuPWek6I7Yr5UhIsI6s/bo2g3ebU6lqsZHecCym CoaPVUdaHIUUMW6jdXkEWhkASQaRntWByp/DsN8WDtfZGSAxIW4KKqkrG0gdPbWkyKN0 jvow== X-Gm-Message-State: AOJu0YxAfPypAMQgkSe4BfOrEA9vM6dhQXAJjuHJbmPz6MZ5/c2+TNtF FB3MfBihBu7SMIs9UwAPS1IFQVp0XN4rB0SsnKUeWaPuzIPiC/ZNGQVK6tJ1DpD6+iUhX1mIhzc 1nVH3 X-Gm-Gg: ASbGncudacF81C9dj8gXTSNpIBfmgdbwybF8akgAHwvf5kcASSgUAiJTxZeUIHL+aol 5fzuTDTtyVqQIp4i1yuTeRMixqVTZA0kArt3izdvJ0vEWUvH2v1N4wHzKt+kKQdWR/z9WtITPow jvIFQQ9ISRQ6MApRx5iLJMtuod1TJkaGcVlaEZrOLvgTDNhu55YiIZsOTTuUpJTDUbrZoMlrjGV xcJZTns0zYaGky3g0xiRXQQeFcnqRQNYqx1mryZdqUgSjdv8ngQP3ySt9XPwbCAs2fAawZBmBHJ T1FTZSf1PF4/uE6WcOmuTyRnjr+OdltlNJjugt9LU5qZIj2HRykehjbyn+QsY1Lx0Tu7VAl9kiG 1br2nhuGuy/8OIH3hNzhxTupBkP+tcy0Fe3d+1aRK+k6xD1j0Gqhut8rZi/VcBWr65YwKILdM X-Google-Smtp-Source: AGHT+IErnEge0ZqjMDhPw5DW9Ctt/Sjvk8G+yhKgGYr5kv4XaqHWRuVS0um2UIfVzC9QKVkKbyKz+g== X-Received: by 2002:a05:6000:2489:b0:3b4:9ade:4e8a with SMTP id ffacd0b85a97d-3b8ebebe1f7mr3522846f8f.21.1754415101605; Tue, 05 Aug 2025 10:31:41 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Bin Meng , qemu-block@nongnu.org Subject: [PULL 01/13] hw/sd/sdcard: Do not ignore errors in sd_cmd_to_sendingdata() Date: Tue, 5 Aug 2025 19:31:22 +0200 Message-ID: <20250805173135.38045-2-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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::429; envelope-from=philmd@linaro.org; helo=mail-wr1-x429.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: 1754415286494124100 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") Reviewed-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20250804133406.17456-2-philmd@linaro.org> --- 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 Sun Dec 14 01:39:32 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=1754415285; cv=none; d=zohomail.com; s=zohoarc; b=DoqZsz8zxjTYkOkzW1J1ycjc+LE1wblk//+gCdCPSajSAa0XbmnQ3NrhfaDyl0nvJCMlIyEasDCMkFF8DUGWblCSBEEKq3/5q4gjpoNTCF1rKHXP9EzFFSEGYeIiDV8qXn+K7ZeHrA8BRR8J9bXiZJREA2r0QOhnfnY9nXlewXE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415285; 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=KR14e+wm0fzVOeoLpnJ3oijAHGMwneBum+gvtRg3F/I=; b=jwB9o8gj19+ayigbA10qQKppdYfppPfW/ldRLijKZykLjWhTeKype/khiXAELntIcpoSGW4e6sjQEPv0CR8+Ue7YU1nKj2jIAsuJ5a2wgExoFJbfJppt4p+PKNXic5aAbZEUj93zd3wIW7/mO6slnFoQnxt7tsL8RN0QDvzvIkQ= 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 1754415285703371.15967612382576; Tue, 5 Aug 2025 10:34:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLW8-0008HG-DL; Tue, 05 Aug 2025 13:32:04 -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 1ujLVv-0008Cu-60 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:31:52 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ujLVs-0004rw-Kv for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:31:49 -0400 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-3b783d851e6so4953296f8f.0 for ; Tue, 05 Aug 2025 10:31:48 -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-3b79c3c51e2sm19487552f8f.32.2025.08.05.10.31.45 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:31:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415107; x=1755019907; 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=KR14e+wm0fzVOeoLpnJ3oijAHGMwneBum+gvtRg3F/I=; b=kQK1p+6RY1lSWXcnNuonyE1aeYSuRYQRpBxuAcZifNEEh1OoZDvW7B3h/m9gxafSc8 dIGttagoOpFNDtNEvruDfhP1/NLyZBkHkY5tgFEbhiUjDwhyzbzXlWi5hPwU0SSUnxdh mPTT1Rh5v6RyUsliS7WIbp9ABEQIyKY8UGbDSHku1yr5Zk63ZM+jPPj3g49gnMNpL3PW mWCg1GB7ZKABWfSxqamMTeHmE/sSVB66YjlpdYgtw0VOla7mGl88Fp/AdA2gbs2OgNY7 F0DHnbCeD8p3c0w61CQ1vKy7AiPAO+Bx00D8mJaAYCPcLVFeO0KF/edPvspo7D5mlKrt yPBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415107; x=1755019907; 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=KR14e+wm0fzVOeoLpnJ3oijAHGMwneBum+gvtRg3F/I=; b=CN2eh45Vlm0AU74ezfKrmK0LTt5DdasFaF0DBQ4DU7E11l3WNDgYrWj/dOEUpUjkHw cMOAD/agaCOpzW957av7QCMuNM0pdxA8wHtuMs7yk+RLa+G9PPn0GBGMMiqOqiMgXL0d jazHc1KxzyhciAxdMu8OI13t/5NojC6/D6XPm6SFYCfHw6tJemP6DpSxjAiLJaKydKes zDnSeK7u5xRJjSBHYhEXLQGS6KNg1AxJTU/ewqGkXuHeWeoSM5Qy4PBS4u1cdbg5aFwB NgG03ER18TUXJWFVqWpN/TbCncHwhfnSumZVMn1epY+PtIDjrka0kK/im1Y+CsToXviu JVBQ== X-Gm-Message-State: AOJu0YxdaF4Ey7PtdR3uY5NbC/Up/uScPQyTVKCkIvdbr0FCYFih/hjp Kjq9CW7/NGjswvqTsWfMtks2Jo+DRskg1gYLNvOneG/j3u6AoSety2R2u2hk+Lb5mU6iqVnGAHa 0rp+w X-Gm-Gg: ASbGncuGt+kmyRPLYJa/4OQeQsaIW70Xd1Q83seI1i4F6Jw1WQmDJ1Etxd4e5MBtYcu 7bRzU2LDnleV/inqvEJreL1ZeDB3FtWoTY9bVG7iHyMy+no+14SMLzS1GdQgX6xPr6eFNLFZORt rgarFvt0L9Kl/fz5nL20nOSxbMafPpxd2DIKE6sItBoNNhLgbRKrdh7/U+xU8SzmITfvqiuqbXJ xin+/CNGbkk3IEq56WCblEAA5KPeyOwYWyTzUqqTGnsw5e5pOXsKwLqesHtfEi+c27tuEJagjTk b8MuSl5x5DEwYpT6M/shjmzJL5Gu4J7/QJZXU7Dx5A4Kge/nI2ouunGPbQTvv23RRFO1ks7oXkf JiXrp/1bpRCMNdCWlnwsPXlKELApudwTergU2Jpp5FbpVWGwxyepj/VhQSXRYIX4/lyXSqTs7Ob gpCZJxIh8= X-Google-Smtp-Source: AGHT+IFHWP6nld33QF3eJrrRR+ZR0hGOoMABlpV7IOhTK6XfsYkAFhRPqMu28c5JEgm/j3eVZfbEZA== X-Received: by 2002:a05:6000:2083:b0:3b8:d893:5234 with SMTP id ffacd0b85a97d-3b8d94c4772mr11229118f8f.47.1754415106602; Tue, 05 Aug 2025 10:31:46 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Bin Meng , qemu-block@nongnu.org Subject: [PULL 02/13] hw/sd/sdcard: Factor sd_response_size() out Date: Tue, 5 Aug 2025 19:31:23 +0200 Message-ID: <20250805173135.38045-3-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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::429; envelope-from=philmd@linaro.org; helo=mail-wr1-x429.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: 1754415288377124100 Set @rsplen once before switching to fill the response buffer. This will allow to assert in a single place that the buffer is big enough to be filled with the response. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Message-Id: <20250804133406.17456-3-philmd@linaro.org> --- hw/sd/sd.c | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 0bb385268ed..76ce54664f2 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -729,6 +729,33 @@ static int sd_req_crc_validate(SDRequest *req) return sd_crc7(buffer, 5) !=3D req->crc; /* TODO */ } =20 +static size_t sd_response_size(SDState *sd, sd_rsp_type_t rtype) +{ + switch (rtype) { + case sd_r1: + case sd_r1b: + return 4; + + case sd_r2_i: + case sd_r2_s: + return 16; + + case sd_r3: + case sd_r7: + return 4; + + case sd_r6: + return 4; + + case sd_r0: + case sd_illegal: + return 0; + + default: + g_assert_not_reached(); + } +} + static void sd_response_r1_make(SDState *sd, uint8_t *response) { stl_be_p(response, sd->card_status); @@ -2203,36 +2230,32 @@ static int sd_do_command(SDState *sd, SDRequest *re= q, } =20 send_response: + rsplen =3D sd_response_size(sd, rtype); + switch (rtype) { case sd_r1: case sd_r1b: sd_response_r1_make(sd, response); - rsplen =3D 4; break; =20 case sd_r2_i: memcpy(response, sd->cid, sizeof(sd->cid)); - rsplen =3D 16; break; =20 case sd_r2_s: memcpy(response, sd->csd, sizeof(sd->csd)); - rsplen =3D 16; break; =20 case sd_r3: sd_response_r3_make(sd, response); - rsplen =3D 4; break; =20 case sd_r6: sd_response_r6_make(sd, response); - rsplen =3D 4; break; =20 case sd_r7: sd_response_r7_make(sd, response); - rsplen =3D 4; break; =20 case sd_r0: @@ -2244,7 +2267,6 @@ send_response: sd->data_offset =3D 0; /* fall-through */ case sd_illegal: - rsplen =3D 0; break; default: g_assert_not_reached(); --=20 2.49.0 From nobody Sun Dec 14 01:39:32 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=1754415151; cv=none; d=zohomail.com; s=zohoarc; b=nLMpnEvDac/e829JM7JWe4pBBhldpnNZoiRgKDsll4ET+XLQQ5Hd92+zkScEcTYD4AhdNCWFs0Ik6kTcxxHMm91E6Ypq03Ua/yVRrqVE6IRQIjKgscQ10qebhm1Oh1QuGOZBDA+hw1QB2cEijlpxWCzakOArdFoJcJBbUtWiGi8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415151; 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=nyJb13ApUF6CgkPoqne7lt0/hxjnBW7a66LB5bEyxpQ=; b=N9POVq6kuy9caXXjf+l20dJkevztld2w2UsQik7+IOdIkXfMhQJT2XWknsBPT8+LvUee6zjXaLwWncf0gLHUPq6GwR1LqMVTYL8gMZ6JxGup5/JLiyxk5FtNxX9Mx2k0LFTVoH0krqfTUVm9y7vo5tHU/MSmBF0+UkYn+m8L8kI= 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 1754415151495195.8594490255466; Tue, 5 Aug 2025 10:32:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLWB-0008Ln-6g; Tue, 05 Aug 2025 13:32:07 -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 1ujLW2-0008Ei-Ql for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:02 -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 1ujLVy-0004sl-P4 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:31:58 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-3b78a034f17so4090917f8f.2 for ; Tue, 05 Aug 2025 10:31:53 -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-459e586eef8sm12038175e9.21.2025.08.05.10.31.50 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:31:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415112; x=1755019912; 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=nyJb13ApUF6CgkPoqne7lt0/hxjnBW7a66LB5bEyxpQ=; b=kI2geFed/kIxgR+q1CjGX1hDL8rIWCKwK4kSGC/qFUaNfMINQYKMTroVacmM6IOAWz KjyNjaW5v1VYf2LyBV/iJvzyzIiIPIAfhkcX7zNqmuEl6p9m4pSlw1Stjk8jm2u5dmBr JxxPqLp/igBT/yBjLSNMQvmR+VYLLepIliX18u984Eye8Z37293TtYxOE6rKtnmyXrQa WF23JYbKNYtLm+1xmZB9mxdl6gwNT2sNWRcgw1YLJ96t8Blh8sAODHDDoYyTHdf9b1oS 5kCG3XrM2gNAhFDbvaFw+7/eJK2wvfYnEbqqgv1gsvY3r+7+PJ6n8TKX89cyC2l4Ql0/ CvBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415112; x=1755019912; 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=nyJb13ApUF6CgkPoqne7lt0/hxjnBW7a66LB5bEyxpQ=; b=cCnPxkv8Ilm8J0Zr5SpVmX8ManDwGpQAOPB3FvCl1a5X9z7S5RLOSKphBUMs2+RDNp qCxjgBTy0Nn5pwZsnVPYlXeWE6pTptLYxispnv+N6pE29oBdICqOWcL361q7xILgL35e C2jF19XqQBRGGvIYlZ2sXf4ZAN1NAIjwoNsjNP9RK5A4XgwDPrRH+EIveWJ4dmRl6KR4 BSmUxv7enLdF+ecSpvw3uKCFosf2JqfktSZLHg6ZETsTqUKWaVDO+0i0CJZs6JSmHc1d UXGwo0Hvo9e/s/dWOCFDp/Rpu+WPxkmE7sSMHzmz/DSIiW4AZqeMWeBPkq9rP+Z4FVru XZdw== X-Gm-Message-State: AOJu0YxSW5ykVeqYIJAmjTQCt4d2La0/B3ypUbAeEaDsZLD38K4lQ2el t4UDUT89v81GoiJRnvtBm0KyocygcwTdOHcevJCWCr63ac2DorJK6EPevuUddB6kuWS4C8DZ0EI bQigb X-Gm-Gg: ASbGncsQ5RFHnAydFVARGvc7omK1c4srF5+4Y862Mw4oDZCopdOGwHEw+ii5AS7opL/ Lfz0DnhZNk9rkxvHSRX6UfdJkdTrhttQ6qayoCQoR65/+uswsysW5UiKVPiIT9oaVEx51ViOXrB EHHaGwVpb1V5ZCqSsd5YWmb+qjmT+yc2g1lTeM4fGp9uo/MmlPFDH9jFjKQb30yRVEo1DAIS6Gb /qgQ9x88OsqsOiTKAStKm5fP90ik2p72jIzRNtr2eUpwDLCZ0qR2WSjCPkEgPSVtdZKzedkclqd Ctzr25FXdxzesC3hRX3ZBHAleGMmOhdpJ4ywW+LjlRM4SA+KXsNF+CH4AIrRo6CmuCx5+r00/g8 ExAOarIZfjP/kd3YTe/EoNjY6XrTPj4pcz479HBC/ymCrjSkM6G9/4B4vNLocvHtqpJ8ZBJOa X-Google-Smtp-Source: AGHT+IFxhPw1C4EaM2WRXR38iNdDbrsPPv+WYXwo9islqjuMwXaHY6QZdx6mTgNI1wMXzsDg59F1rQ== X-Received: by 2002:a05:6000:2912:b0:3b8:d32e:9231 with SMTP id ffacd0b85a97d-3b8d94ba936mr9946361f8f.29.1754415111715; Tue, 05 Aug 2025 10:31:51 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Beniamino Galvani , Peter Maydell , Strahinja Jankovic , Bin Meng , qemu-arm@nongnu.org, qemu-block@nongnu.org Subject: [PULL 03/13] hw/sd/sdbus: Provide buffer size to sdbus_do_command() Date: Tue, 5 Aug 2025 19:31:24 +0200 Message-ID: <20250805173135.38045-4-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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=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: 1754415153951116600 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. This allow to check for possible overflow in sd_do_command(). Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Message-Id: <20250804133406.17456-4-philmd@linaro.org> --- include/hw/sd/sd.h | 23 +++++++++++++++++++++-- hw/sd/allwinner-sdhost.c | 7 ++----- hw/sd/bcm2835_sdhost.c | 7 ++----- hw/sd/core.c | 5 +++-- hw/sd/omap_mmc.c | 5 +++-- hw/sd/pl181.c | 6 ++---- hw/sd/sd.c | 6 ++++-- hw/sd/sdhci.c | 6 +++--- hw/sd/ssi-sd.c | 12 +++++++----- 9 files changed, 47 insertions(+), 30 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..9d61b372e70 100644 --- a/hw/sd/allwinner-sdhost.c +++ b/hw/sd/allwinner-sdhost.c @@ -233,7 +233,7 @@ static void allwinner_sdhost_send_command(AwSdHostState= *s) { SDRequest request; uint8_t resp[16]; - int rlen; + size_t rlen; =20 /* Auto clear load flag */ s->command &=3D ~SD_CMDR_LOAD; @@ -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..f7cef7bb1cd 100644 --- a/hw/sd/bcm2835_sdhost.c +++ b/hw/sd/bcm2835_sdhost.c @@ -113,15 +113,12 @@ static void bcm2835_sdhost_send_command(BCM2835SDHost= State *s) { SDRequest request; uint8_t rsp[16]; - int rlen; + size_t rlen; =20 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..5a1d25defaa 100644 --- a/hw/sd/omap_mmc.c +++ b/hw/sd/omap_mmc.c @@ -130,7 +130,8 @@ static void omap_mmc_command(OMAPMMCState *host, int cm= d, int dir, sd_rsp_type_t resptype, int init) { uint32_t rspstatus, mask; - int rsplen, timeout; + size_t rsplen; + int timeout; SDRequest request; uint8_t response[16]; =20 @@ -157,7 +158,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..5d56ead4d91 100644 --- a/hw/sd/pl181.c +++ b/hw/sd/pl181.c @@ -173,14 +173,12 @@ static void pl181_do_command(PL181State *s) { SDRequest request; uint8_t response[16]; - int rlen; + size_t rlen; =20 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 76ce54664f2..069107a2e70 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -2166,8 +2166,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; @@ -2231,6 +2232,7 @@ static int sd_do_command(SDState *sd, SDRequest *req, =20 send_response: rsplen =3D sd_response_size(sd, rtype); + assert(rsplen <=3D respsz); =20 switch (rtype) { case sd_r1: diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 226ff133ff9..3c897e54b72 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -337,7 +337,7 @@ static void sdhci_send_command(SDHCIState *s) { SDRequest request; uint8_t response[16]; - int rlen; + size_t rlen; bool timeout =3D false; =20 s->errintsts =3D 0; @@ -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..3025f8f15f4 100644 --- a/hw/sd/ssi-sd.c +++ b/hw/sd/ssi-sd.c @@ -146,8 +146,9 @@ 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); - 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; /* a zero value indicates the card is busy */ s->response[0] =3D 0; @@ -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"); @@ -333,7 +335,7 @@ static int ssi_sd_post_load(void *opaque, int version_i= d) return -EINVAL; } if (s->mode =3D=3D SSI_SD_CMDARG && - (s->arglen < 0 || s->arglen >=3D ARRAY_SIZE(s->cmdarg))) { + (s->arglen >=3D ARRAY_SIZE(s->cmdarg))) { return -EINVAL; } if (s->mode =3D=3D SSI_SD_RESPONSE && --=20 2.49.0 From nobody Sun Dec 14 01:39:32 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=1754415478; cv=none; d=zohomail.com; s=zohoarc; b=GwoWFoT61jgAVmFZJtBkfuG6P6E9mQ/ZRem2G4pTBhp9NmpY8UsIjheefCUuJDuYRT9BQKK/1+lhSv6rzlRlpd9tt+Qao2NInvwD0FjsZ4BrnZNb5JTCT8lVXeGpHQJBG8Z6946iKg/S9s741jxVKBIsixGAw6SltXdc+//+uWw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415478; 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=I5VSMqgevqy53Pu0UEz28Gz9eDsOUXBVxSgSLgRZFBQ=; b=lzRWan4bOeRJg/lo80nkV9Il+Zw9/e9g482CvT4aC7ZawC9il1LqXxLqQGd9tWXjcXR1Q6EyPCY+l6no6QKWVyTsEwAi1GjF72AtW2Z2Cs+pJa0tlDIik2fDuyoto5OOfxn7Bpt77+RdPXwLMVm/8Ye0Om2wCePAAAdy1RkyS+U= 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 1754415478341889.0269503462341; Tue, 5 Aug 2025 10:37:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLWD-0008OG-Qk; Tue, 05 Aug 2025 13:32: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 1ujLW7-0008GW-3p for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:03 -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 1ujLW2-0004tK-OI for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:00 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-3b7886bee77so4882165f8f.0 for ; Tue, 05 Aug 2025 10:31:58 -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-459e0cd2c90sm49328845e9.17.2025.08.05.10.31.55 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:31:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415117; x=1755019917; 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=I5VSMqgevqy53Pu0UEz28Gz9eDsOUXBVxSgSLgRZFBQ=; b=hzx8Jf36RWEzVe3eGmO01IGBP3UvFFu6U7/1DAC3abDj6tN/HlAy4LZpEcAmwTT5Fp 0kHzXKMnj/1SsAnUDGikoU+SFOqI1di2q1CXEQHdR9YyCTOFDqMuynIVWfgCvNYuvQ4J oXlCfeEdrx3JJ5HFcyresy4TFiPwLvmVu9OPKYuaWpBGFD6IgRc6JpHXjRR3Dmq6Nr// vuR1bYGWVMY+yNqGZlVmzCr9++nm2NCA7jEqu0F5PgEkqOmTvlq7BcSZtpPbmFgR0vMB EVd2ZyY251IIi4wRTHvoRn9j//yBxiD8jrFK/HBt4weEneGG7/mtgOeodXTqDBoPcviA 3PSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415117; x=1755019917; 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=I5VSMqgevqy53Pu0UEz28Gz9eDsOUXBVxSgSLgRZFBQ=; b=ekiavODw8mRJ3SB0qqsh60vlcjpAj3lMzEaL1rIkvQ/eEpgx9ynqaI0xoVAcOtc6Fn ElxkvLJEfvvcpjs5q5JNVmWjhBKgtvCXTXa5s1BJ7Wau6QzlZus0LTYYjIfqYt9esYPH h1RdOsf+UJh3loaJ/LLRhV+hVxY31yBUl/9gqVyKNDG3jXDPuWB2oKbNgiFlM3AIXdoY R3GZOl+ioIRqiuUESTEG4et2OL1t3wqgOVW8xo0Bjm+Bu5G3NAfsn8eGCsGWtTVVPMnJ JRTeY5rNWZvWf4TYI6AmqfV4NM5yrp6yfNEjZg5RTCRIqjn9soyfuwiRwmnRgZjUKKNb 6keA== X-Gm-Message-State: AOJu0Yz3eDZkHl4/3YtWRemtIizgufZloyej+rB4n2IcheOn+zsOiHJE XVypTxrTzHShIuK0MkOObxMy3iy1aAnostijw1QpYuncS7OwmDSDC3xJJkjPfH2AU234MHxHsnV 8W8HC X-Gm-Gg: ASbGncvanZqLOjPDhHJAhdp76Fb+L/6sb4b+UEtMHgWplJKwJ0NYgrlEZ7jw9ReF7an 3oQFHuEJddFtdtBr1oJhA3FpMhVHYXh5nLXvjgFYZnUj1Zajt5uQPN7yBglX+tJW1q7qOdH1wvB e+vwkN7PsPH2tHRyE5PyMO0fzzs8WnqzKjc5jhcpPpC+VeaIN2zAOOas92wPCIgghHqoHc3N9XI eXiGjvBfOdcQQ3P3meNvU2UTOqaCet2AqSvwU7y0fydweXEXaxhj2rq8yn5Mf41BMytrjKTih8p sc0Rpj3CNTxJVgHhkz/JA+fzY+424VPThGdCUW0UEK1iQLv4nFZgv9HBfbQU1IVtjyhbn6TfQHr XKM3lzwSEQzqmTL0gn+IMKfZg0Z0Pn8sQhCXcWUMgsKaVbRpN052RJ+kovi3w49gid0qa3/cB X-Google-Smtp-Source: AGHT+IEMw39UNL83Xw/zmpYoAz8s+tiAJeaCiVWGunxBOyeoZfGUdZYTs0is3GnBBLvVwCKxdoY60g== X-Received: by 2002:a05:6000:2507:b0:3a5:527b:64c6 with SMTP id ffacd0b85a97d-3b8d9468c8cmr10502439f8f.1.1754415116657; Tue, 05 Aug 2025 10:31:56 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Bin Meng , qemu-block@nongnu.org Subject: [PULL 04/13] hw/sd/sdcard: Fill SPI response bits in card code Date: Tue, 5 Aug 2025 19:31:25 +0200 Message-ID: <20250805173135.38045-5-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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=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: 1754415478826116600 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 Acked-by: Richard Henderson Message-Id: <20250804133406.17456-5-philmd@linaro.org> --- hw/sd/sd.c | 32 ++++++++++++++++--- hw/sd/ssi-sd.c | 87 ++++---------------------------------------------- 2 files changed, 35 insertions(+), 84 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 069107a2e70..cbcc180f6a4 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -734,22 +734,24 @@ static size_t sd_response_size(SDState *sd, sd_rsp_ty= pe_t rtype) switch (rtype) { case sd_r1: case sd_r1b: - return 4; + return sd_is_spi(sd) ? 1 : 4; =20 case sd_r2_i: case sd_r2_s: + assert(!sd_is_spi(sd)); return 16; =20 case sd_r3: case sd_r7: - return 4; + return sd_is_spi(sd) ? 5 : 4; =20 case sd_r6: + assert(!sd_is_spi(sd)); return 4; =20 case sd_r0: case sd_illegal: - return 0; + return sd_is_spi(sd) ? 1 : 0; =20 default: g_assert_not_reached(); @@ -758,7 +760,19 @@ static size_t sd_response_size(SDState *sd, sd_rsp_typ= e_t rtype) =20 static void sd_response_r1_make(SDState *sd, uint8_t *response) { - stl_be_p(response, sd->card_status); + if (sd_is_spi(sd)) { + 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; + } else { + stl_be_p(response, sd->card_status); + } =20 /* Clear the "clear on read" status bits */ sd->card_status &=3D ~CARD_STATUS_C; @@ -766,6 +780,11 @@ static void sd_response_r1_make(SDState *sd, uint8_t *= response) =20 static void sd_response_r3_make(SDState *sd, uint8_t *response) { + if (sd_is_spi(sd)) { + /* Prepend R1 */ + sd_response_r1_make(sd, response); + response++; + } stl_be_p(response, sd->ocr & ACMD41_R3_MASK); } =20 @@ -783,6 +802,11 @@ static void sd_response_r6_make(SDState *sd, uint8_t *= response) =20 static void sd_response_r7_make(SDState *sd, uint8_t *response) { + if (sd_is_spi(sd)) { + /* Prepend R1 */ + sd_response_r1_make(sd, response); + response++; + } stl_be_p(response, sd->vhs); } =20 diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index 3025f8f15f4..2d5c0ad5016 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 Sun Dec 14 01:39:32 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=1754415324; cv=none; d=zohomail.com; s=zohoarc; b=GZ5hUouNc0BgE9yW+HAtK3LV9n1vOiAbXTpWuBfDW1KcQfb/aX96Joc/7/FJx6zs/vOHfQgwTUGJ0QOqoV3Cv0EgGT6Z+fFULGTdl/gl8BiHqwOClJS75GhwIkuniOjR0eFwut27KUXcKc286RtgzqP7LmfSlHc2M87t116B1a4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415324; 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=fg39G0/rAAlkgbsiRQ53XTzj6ZDXzYraE5f8RxDqE+4=; b=nyggqUwoJb9mQmN/MDdDi5j7ZcWT2hw/vDpDsOWZ6xvlC+bDrYTHTZb6fgfj5vWQyaXj1V3RVRnr60IxOVnPWCLY8SrsSvTL/flWVfE+mB6MnRfblD4uWpKRAqwcMY4rphMt/fRpX8vq7ls7eZObBCCA2STwA+iBLYeKmfFpbck= 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 1754415324004680.1974761595629; Tue, 5 Aug 2025 10:35:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLWE-0008OU-88; Tue, 05 Aug 2025 13:32: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 1ujLWA-0008Lb-Hj for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:06 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ujLW7-0004ti-Td for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:06 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-451d3f72391so51069735e9.3 for ; Tue, 05 Aug 2025 10:32:03 -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-459e5c40e9bsm4562125e9.7.2025.08.05.10.32.00 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:32:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415122; x=1755019922; 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=fg39G0/rAAlkgbsiRQ53XTzj6ZDXzYraE5f8RxDqE+4=; b=QEG7R9lUZCEPUCpVFOoQFqDxpSC8m6O3D3hA8KyrvoCzdbytVuozTmes2yWsDNvkMd TWD6dddZVdV6txM+JtMAkOSJXOl4oZfcQVnHobqYeeAo+sqz2WZPUDUmkivqM2nBVQ5f XhBItQasQQBbj2VYpq7nU7WU0TRYdSfOAXNTl5o/Me4Sz8xIHvXOfEk0fWwlGTVSKnN4 AW04IodnvXH7n7Gmt+XPS9653Mj9YaQj2DBnYq+Z9MUxld0dD5rqZvdNBGP7nPLEsf0u bYXJl+8GPlE8w1eId0yXuycEzbF1Xq05/y55OTIaV5f2OeSCnDtA8jvcXEZR2Jahtrgt UWCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415122; x=1755019922; 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=fg39G0/rAAlkgbsiRQ53XTzj6ZDXzYraE5f8RxDqE+4=; b=LEdWwWzGXCO4s76995XwSufZWObRfPTaCMYfqOo3f1MfbNAU2000rXeL1qrefO7oF0 gozwP4zdr8hCDdq5A3IfGsbD6EL+p1JvtsZVLaRO+M8jAXB7dfHniuB3/w+8pv98uTFi cPBxF9MPdXa+TYowrIzWyXf6muNbbY8XvkIfy5hvJBH5k7vg8bnCBdHb9owQhCCDLL4T U2CHdBBowJTsUQA5HHKtw7X9QnhxtWTZMT3KwqSPLqcl26pf5TpR2c0w9CKrP8eKrtdc f9NqtgyI5e3pCxW6jr7BEo4XbDY1LdvTxZJ7d/0jrZWCAC+sKD2fFufK7wMGdDsLS3mt z1pg== X-Gm-Message-State: AOJu0YzY1sxHZbCKxOVStqf2/1n+Gwrir2lFhg7HGTsodeGHIehLF6hD V2lPMCGnuRKKQq46gBaOVnX0OtnjIL9yKZDOZ9PhXxg3Hn4J6BoPCu117HZ0DZ+iye2ka0iBYBj Ik8S/ X-Gm-Gg: ASbGnctRsLRhybncpoPpuBYYVvOtr+Aa7sdzko5GVBvvj68oGDYTeo7yUKvfMa9dgaq u/PvsCI6vIq2dg5cg6KPSknpDK6lItAOxGTZRYmwlnGunRD09TM1dNnSUv5UFLRj9MG6r8UE/Hc AV4QSHIVY6KxQFUPL14KhR34p/vKfc2NT656MjFQ9x2YmFUPZA6EM5juDBcC67XrRaMmTX1V+ee XQOOTeNFQh51RhgAs3CXBDk8Lz05f3xpZOoRCy2jALuj8X/HfGtmtgetZymoPssmXkHjPgBEhy9 Arqtr65bp/u+/hUeFc2ru7GMd64bLkAIyrDac9TmL4Dj9rV1Vhwc6uW7uFqQUwtZiwskU67v7Kl cTUEuwIFGPZe8NXAj3h1w+hELI4x8e6tjKZHxz2kzA1hd6ubZsIWNRWzph3VIAwbvQ19YjiSS X-Google-Smtp-Source: AGHT+IFsqGTnhkgxvRuh7ijZGSqtMT1b5DXgM8FF56gs5xARl8Uaj5lfh0WAYZBi562vi+R6YRguUA== X-Received: by 2002:a05:600c:3145:b0:458:a7b5:9f6c with SMTP id 5b1f17b1804b1-458b69ddc11mr109377615e9.11.1754415121900; Tue, 05 Aug 2025 10:32:01 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Guenter Roeck , Richard Henderson , Bin Meng , qemu-block@nongnu.org Subject: [PULL 05/13] hw/sd/sdcard: Implement SPI R2 return value Date: Tue, 5 Aug 2025 19:31:26 +0200 Message-ID: <20250805173135.38045-6-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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::333; envelope-from=philmd@linaro.org; helo=mail-wm1-x333.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: 1754415325479116600 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 Acked-by: Richard Henderson Message-Id: <20250804133406.17456-6-philmd@linaro.org> --- hw/sd/sd.c | 38 +++++++++++++++++++++++++++++++++++--- hw/sd/ssi-sd.c | 3 --- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index cbcc180f6a4..01ec6d951c8 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)", @@ -736,6 +738,10 @@ static size_t sd_response_size(SDState *sd, sd_rsp_typ= e_t rtype) case sd_r1b: return sd_is_spi(sd) ? 1 : 4; =20 + case spi_r2: + assert(sd_is_spi(sd)); + return 2; + case sd_r2_i: case sd_r2_s: assert(!sd_is_spi(sd)); @@ -778,6 +784,22 @@ static void sd_response_r1_make(SDState *sd, uint8_t *= response) sd->card_status &=3D ~CARD_STATUS_C; } =20 +static void spi_response_r2_make(SDState *sd, uint8_t *resp) +{ + /* Prepend R1 */ + sd_response_r1_make(sd, resp); + + 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; +} + static void sd_response_r3_make(SDState *sd, uint8_t *response) { if (sd_is_spi(sd)) { @@ -1643,7 +1665,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; @@ -1957,8 +1979,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 */ @@ -2264,6 +2292,10 @@ send_response: sd_response_r1_make(sd, response); break; =20 + case spi_r2: + spi_response_r2_make(sd, response); + break; + case sd_r2_i: memcpy(response, sd->cid, sizeof(sd->cid)); break; diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index 2d5c0ad5016..594dead19ee 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 Sun Dec 14 01:39:32 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=1754415179; cv=none; d=zohomail.com; s=zohoarc; b=EBAjpAykja2aac0SO/N7/lfC+CWveEHOhe/1H/xnYerOKHQQ9fabgfR41ehV3NLSiQQoKcMpB6wNjzwAIbjS1BX9kiwZOnARqNOeFGV59kp98ZKV8Qn2ARiGMFgXckopr3zb83VA44MyohwPRTCl82yza1B8bDGG4eWstn6FQCM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415179; 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=aFhz2sQyXixc1I4PYJPHju8JCIN1+OF459KzUdGj17s=; b=M5oU2LI43lE43587AlOogrJAtHJ7Fp2x6LrqvfhhtO4PQVqPR91NJYt6MKMQNKZMzub8EoGJZFD3KXfU8AjVrjEbejoiheE1x2RS9kt1YHVIzWU/p/fAcmYCuHvBhYeeG55A5jko1CiCTsynOuBhwnsc81YstTcmGPHYO307Zpw= 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 1754415179041848.4072338772609; Tue, 5 Aug 2025 10:32:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLWN-0008Tx-AN; Tue, 05 Aug 2025 13:32:20 -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 1ujLWE-0008On-Dl for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:10 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ujLWC-0004ut-P2 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:10 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-459ddb41539so9215965e9.2 for ; Tue, 05 Aug 2025 10:32:08 -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-3b79c485444sm20043786f8f.66.2025.08.05.10.32.05 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:32:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415127; x=1755019927; 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=aFhz2sQyXixc1I4PYJPHju8JCIN1+OF459KzUdGj17s=; b=RW4m4Epvvmh1PdiuG9rLmduQubctzimpgDnhWjRpUxtutewYu1PdrQ3ZhFvSPtzoIv 8kBiSwjLpk9+9khMqrHn7HBDNtIkokzCCW8itR7R3GrKxp6Sg5k6H+s+rodJYvpITwyo VIR09cC4wcF5NLPaQqjj3c8Trva1iANbI1v5gTXyPxHupQndR5M4b082Z2amQstJpYlI aFNWM9ah6Y66qCxkfmxu2YllHtPhw90WZiBZCUR6o66qF2tigKdljWxoUnLrPHhJlkfC +eckmNP8SC09aEdw49r+nuqYgKpb07rSYKhsSu0/qeaTjHSB4igL1aBywfxM4b7BRxge vtAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415127; x=1755019927; 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=aFhz2sQyXixc1I4PYJPHju8JCIN1+OF459KzUdGj17s=; b=WMGIJ5LWQWRtJ7ZlKNNvP/s5c8sprNEvh5xZHA7ZPkdZIWpn0wN1cT4/v8fbPOj/br CQXPo6J9e2BrQMskquw4hz1FzjxvWVIuGCSgUbXBfU/HK4+8Qg/1zYoUz09jZGmG4Hnd wlCtjE1sgYzN7r1wzTK9fYbSgT1d14IaREp5RPal8Q9gD0jV2DHLmQze+W386yqbIMfz v+fzrJxNz4yVlN0OpnN3aFNKMD8Drxd7sJEZVWHmMeTnjPhlT7Am0zgM6FsukYAq9lml QxVOrdVIlRRIixiCBqaw5HPopeTvDgwr2kTi+6pEet2DIh/MEa/XhQb2CO4jPKPo/FlG WVfQ== X-Gm-Message-State: AOJu0YwisneQ88Z3x2VhDtoKFBVJqanVrsHhA39tpoSGSyUc6Y17HfTC VmQ65rhu0G+gAZWSM1GnTPt0i6O5eL3sBo1WdGh+PCyvd9EVkZ01yok4Q11z7vg1mz7mziNSpZE rEMK6 X-Gm-Gg: ASbGncuVsgzokeiVztn6YbdLly5WhzBk4RTZLzBqovdAscDrc17fL0zIElKb67PQTYx lg1bS8TGYfq/VI8F9VfABH39hmvDjd/JHzAoxUNoC5BzqRNdhz0w8n7XvOfJ7OnRphILpmMHxpq OvBSF0/VDHbWv5D1nGkRgd432ZQNLm4EF2+nijml/UCdOY/Yy1KfX8iBGDlKLz3t5bp4QBi7JrW 50TRpSprRb7B7VAYZzRM9+afPe52d17pXlwoPc+HGY+IMn5NSP3TgWUDbOYKDi6kgIPqp7MtTaW tgXVSv8j//DrJnZspNgQenoyFcjewcA0gjnNztPmaC3kCzqA/uz5qRqQNK30On1NKo6e6Qp1eDe WrlJT21OP3NrX/qCKHVYTfb4c1Q+Ao4JQwmMdg6AhAIkjFnapD8VUtFKagKIFnrixdZ6rRZqPwy cd5WNq5xI= X-Google-Smtp-Source: AGHT+IF4JaOiY4GLdS/dDodcBV9hNsw9XcH5JQOUofwZRX4ud99hBG6H0dpmhvVtfgt+omsv30Ym3g== X-Received: by 2002:a05:600c:a43:b0:456:1b93:76b with SMTP id 5b1f17b1804b1-458b69cbdd9mr109507305e9.4.1754415126815; Tue, 05 Aug 2025 10:32:06 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Bin Meng , qemu-block@nongnu.org Subject: [PULL 06/13] hw/sd/sdcard: Use complete SEND_OP_COND implementation in SPI mode Date: Tue, 5 Aug 2025 19:31:27 +0200 Message-ID: <20250805173135.38045-7-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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::332; envelope-from=philmd@linaro.org; helo=mail-wm1-x332.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: 1754415179699116600 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 Acked-by: Richard Henderson Message-Id: <20250804133406.17456-7-philmd@linaro.org> --- 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 01ec6d951c8..df2a272c6a2 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1414,14 +1414,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) { @@ -2046,6 +2038,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 @@ -2590,7 +2585,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}, @@ -2626,7 +2621,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 Sun Dec 14 01:39:32 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=1754415252; cv=none; d=zohomail.com; s=zohoarc; b=J0QW/ghPJpfT7EtsJX2p5cu0+v2oqsb15gVCZOubr0lH9bBXjjxPZyc58cHhtNJvBbPJgpyzyLu114jG1HGsaQjjopCm92xaFpGbegECygTpQ0Lpyz8kLicdqe5M6lcdotCTfDZtKLVHJGjPnEXzkyAw3ub1VwYUmlZuT4S/sas= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415252; 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=g6OcEb2hks/LIEU5YwLKgeeiCUmhrk73fC2rYXd9M/I=; b=jpvuWF4gha0U7NNjPbZkeqRVOX8pJe4g7oT0VYinC92jaLO4q3PlvbVNdY25sWoLa5x4crfjP4FN56+UYhnNraD+QqYijjhdC/Skd1WT27RIp8DNygwK73GxzEtwNJ8D5DOYNBn6TiR99DgVOSTcfYbE2/JuVSHnpPxiTgaT/b8= 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 1754415252443412.5647729334686; Tue, 5 Aug 2025 10:34:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLWX-000064-Gz; Tue, 05 Aug 2025 13:32:29 -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 1ujLWK-0008Um-L2 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:19 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ujLWH-0004wP-Gs for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:14 -0400 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-3b792b0b829so4696943f8f.3 for ; Tue, 05 Aug 2025 10:32:13 -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-459dc7e1ddesm83320015e9.27.2025.08.05.10.32.10 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:32:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415132; x=1755019932; 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=g6OcEb2hks/LIEU5YwLKgeeiCUmhrk73fC2rYXd9M/I=; b=PNqKsLmaCC1mcHIrc5tO4eVt6CL1aaoFyPfhjvcy8xBPt+4utu9ENmSWCHfL5yH8GH UcZyT/i8FHOi+mYpS3T48Vr3oBlc+eE9mFPfPzYbzpT+c2UALXRyT3PorOOTpCImKozs 51zWYIpHKAz/8+E7rGkbYg6A5MGPwCu16bpbpsKvEWW42J4h2Zxxl3lXxDUcXjT09I+o SGSRxwu+eNjeRjepR8aVAlatQXc4wSzMvAYYQ2G7oq2QHCZdVUMzM93DIkFG3S//V2o1 4UkTK+zQy0JN62/p+dFktE50rettuh2oXLUonmc0aSErqOk5p3bsgoUqMkzF6EDw9mQm jOKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415132; x=1755019932; 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=g6OcEb2hks/LIEU5YwLKgeeiCUmhrk73fC2rYXd9M/I=; b=PuYfdHcvvcjW0g7AeJ8mlNVv5XJdEMftXS0QqJuPSxqT1pdGM4yDwgTE4/2Xv/ROYo u5J7J6HpNkc9tUZkDr3uu/Ev6Kw9yWpPngN0xrUJNl6MEUJQfNvWR3x0Tzg3Cg4WSyH3 6Be0Kme6dyK6xAkIrTKbS4oFpK0+EBw3NfqNC4z/b2cWvBXFeoqIfog3gKzrFN4lNQT6 tOwk1+WJxs39mjcEnF6+DtLJqSAnedFlxgDMGchAqUMzkGaXO0oKMZdSvHjNNcQjQ/5H gZ4PiCKuBuSQC2Qv2RY0KE/Z7qW8VZfg+P5ADuhMp6g1uwD/pPSCoh9EyYr58omJNojW 9Qpg== X-Gm-Message-State: AOJu0YyeNGIgn9FoC8nXZ5SUBUoCjM5iBNARoVtEzzyBaEY2RYkujYhr VDjm/6xw4OEuw/7Y0Itya/lRgQCx4sQiIKzLTPRPJKiR1jm4vW+Kgx50OoJXDhbP0ECK0fK+j7l cFG/d X-Gm-Gg: ASbGnct6OgCyaDfVytpM55/jyKBAq/JrT4M6IWd5iWkljsn+ygRuM+E1JdGX5VQ8yPK xKxN07xKrtKVLj7N7erqtQasdg6GtIHGdvApzQbF/iRhdvhIR0TnupXQHFtqRjJyVSwYEoBMDQw zMNRL1hRztuTks/UGLkzPGRvf4N7UdAcXi1Yg38fp6HulmFbvx1Sk9YWGhjomIplr0wfp6vPzPE dCHo/0K0wuHanx9uHouXJ7ZN08mtEyaQBMS5qS2nt1LbCpBLcvR2v+qL2hlntNovP3dec234n6a OclO+m/UKpBRH75UQxO14V6Iq7ET8luuG1at8levq4Ljc1iOd3zdRZScpc1myQRWqhuch6ldctv QTZ1lfR0paZoGEe0wp24XZvlOyrhvCATXgjDId/Fu5Pn92IZPQog/wJCKLtW0BwEUMvgWd0+2cn V08mLWLB8= X-Google-Smtp-Source: AGHT+IFzUKSZKW+qVDCPOCN9KEJNfKFDFOBqR1r2sdmykagNj2DyoRtZ68mZxjyoqZMx0NVy1O1yLA== X-Received: by 2002:a05:6000:2508:b0:3b8:d4ad:6af0 with SMTP id ffacd0b85a97d-3b8d94c3c8dmr10411057f8f.40.1754415131662; Tue, 05 Aug 2025 10:32:11 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Bin Meng , qemu-block@nongnu.org Subject: [PULL 07/13] hw/sd/sdcard: Allow using SWITCH_FUNCTION in more SPI states Date: Tue, 5 Aug 2025 19:31:28 +0200 Message-ID: <20250805173135.38045-8-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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::429; envelope-from=philmd@linaro.org; helo=mail-wr1-x429.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: 1754415254669116600 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 Acked-by: Richard Henderson Message-Id: <20250804133406.17456-8-philmd@linaro.org> --- 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 df2a272c6a2..a9efa158594 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1488,8 +1488,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 Sun Dec 14 01:39:32 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=1754415299; cv=none; d=zohomail.com; s=zohoarc; b=Kv4jK/2srLZhO3nXh/m7NWVigx0o7gPOR3c5Wg7eJAADykGYD2Fb09e/UlD3rmQJyDa7EyLhBhK+W/FDC6Calwk8seVzajvGDuJhYGEICheJuA9CBloHvNlDlIfagnKrW2ZrKeptnnXaJkvR0Vcp3LsWQYKkhQa+8PozU2MBrKk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415299; 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=FBtTATN0gdZYlpHQ3cfsSbHn908qNQ4B08Juh08r/AU=; b=dAq23Ke4JfamPw/mY6M0iljxfuwrAq2FzfQhSGAXdcgektPyRudO1dYQxdKn7c1BYaqh24wqZ8wsI03tIEpkcD9liiBP/4jNXfilkQh9qgiNxOfeh1zBdj3rOf0bRt6ftMt1CAm+cSdBJJZNZctLB7I0mmld6/YO1aCRZDOsaOE= 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 175441529962323.306403427247233; Tue, 5 Aug 2025 10:34:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLWb-0000Hr-Ok; Tue, 05 Aug 2025 13:32:33 -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 1ujLWT-00005T-0O for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:28 -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 1ujLWO-0004xd-Hp for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:21 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-3b783d851e6so4953629f8f.0 for ; Tue, 05 Aug 2025 10:32: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-3b79c3b95f4sm19849075f8f.23.2025.08.05.10.32.15 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:32:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415136; x=1755019936; 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=FBtTATN0gdZYlpHQ3cfsSbHn908qNQ4B08Juh08r/AU=; b=cjakfvO8prgArx+/yjaA9uBctNCwmj0Ge62Sq0jDCFLzdLrKtBOx88stmZTL6h7IY1 zb6vlk0ONBDAY9XbnE9MV+tUaKcD6KHhZ2Z43HI8ow4Er3Hi/DXlAOV8bp/PXam7Knj2 +k7WH0XXkf6awqSRb58/spFBIgJxFwN4UOxcDy1ImApS9VTsq3ekOcJnifDAJy6LPIfz CfUIxg6/oWu3T9Ed4PjnHaymsTsnAzK0HmoQD6iHzGpZ1/F9jqFd/pcpZ8gl/nQXirYa 6826jEEQFniNXxvT+TSuilJqiGWM0AdcS6FClPB1SFwE/kUlR0bwqUQOnKqj0oYNOkkx VCCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415136; x=1755019936; 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=FBtTATN0gdZYlpHQ3cfsSbHn908qNQ4B08Juh08r/AU=; b=HY49fgX6ECTdtffcWrdEQCIHC76c3DJyE8g51K0SDJPa8sfTCaD9loUz58XLxOhin5 W9OmUJqsDasaglPBHV13rqi5XDHD6L28ZxKkPfzOmK66n8wUnZfteHRosLAoWP+NoeOs pC3bo4X5imxqOVaGFFcO6h964WBM4/lnSX6mU+OxN10e1plrTUWOO3qI8n53qpzft4Bk LbwAVS+jdhpirntzx5uOiWH7Q3Gz2oMuP4LXr7+2riJfHQpP/ybeJ308O89KfjYOZ1At arvoExXC5yEv/qBB00AJ3mHHQCBoCl+oY/bFnNPzdagEO6ZV+ryDthjEb0P6FHsKpDRF nOeA== X-Gm-Message-State: AOJu0Yy0GEHgZuIdf5IFA9a/ALQJAOgCjbLkaBGIQMT0r97KrXkbOXE5 ByEpe97FDy2kkkHPuIEQSmmt1a9pO83sVOgcR5x48XZnx+Cti2UlENlBa09vr42yN3K/6L6x6Hz /wxvd X-Gm-Gg: ASbGnctbSh0OQvtc0Zj4XMP5XULBxauCb1/FtPR0kLqacwh3pevH8Ptjr7ZeXfXhfz6 yooCg9eTW/Ci9DJvH/wqvqGHNRBKLPoCfmm3cpYy7t/0koUp1UgEoqyeONxbSyQGPJoNhKIJ9ai TRhOp9i8OVHV+LPH336XGJTSnszJTsgJrKhUH2gRW9QuwA00a+bJSt+gLj4/XS3dsuWBRQUbOAN DuoRE2DBsA72lvfgLnO2EYXi0JLSWvnixPyycCI2ykn6e7+amzrmeE2J9ESWmazKnyaA2q7Visc V4jsCdMuhC24cPUDin3z4rkDxGsVkllcdCy3VFBRgVPF23fLnFjUFfODzs/uCN1JdMD4Ic7z8pN KqJ0ig/AG4lRyfwRtzLCNDtNTlm/6K9PJHvBw2rwJVgFLwSI9GjwhrCRdFR3P+gVWZqU+eQdu X-Google-Smtp-Source: AGHT+IH7rAnukj/YRBPQ0ZLRvOw8yV8thZZZd5DeYKJJ2/Xhi4yEAv7oturfjnY4CAnYd70z0uJlJg== X-Received: by 2002:a05:6000:1ac8:b0:3a5:8934:4940 with SMTP id ffacd0b85a97d-3b8d94c58f0mr9573337f8f.50.1754415136504; Tue, 05 Aug 2025 10:32:16 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Bin Meng , qemu-block@nongnu.org Subject: [PULL 08/13] hw/sd/sdcard: Factor spi_cmd_SEND_CxD() out Date: Tue, 5 Aug 2025 19:31:29 +0200 Message-ID: <20250805173135.38045-9-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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: 1754415300956116600 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 Acked-by: Richard Henderson Message-Id: <20250804133406.17456-9-philmd@linaro.org> --- 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 a9efa158594..ee81dc09991 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1588,14 +1588,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) @@ -1610,11 +1615,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 Sun Dec 14 01:39:32 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=1754415295; cv=none; d=zohomail.com; s=zohoarc; b=V6eTdMlCKTgdJ3i88y2TccBelLLG/ya7G70CeRQzQfNzC29S2l20IxFmSNFXGOzQOqA5HFdpM7aLOqbEPrdj83TAB7ZlpqdJVTTdgxl4PTgXrjr9MwzXMnvenGV9lFIQv/WEziuPHhzd6d8yj4/lWtRdM4oQEn9LzGRVKRvCGds= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415295; 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=eLuT5ufmLt3XqNS5X9fXVmklfwye/hfpmkjpVA3qSZM=; b=EkU78OhW8jZbGb+nG+NMWpbGZQUal2F1c1U62gME7SttScT6ayL916y6DABh4eCETT1AqxRx66H0AyyVtpk7DoGiU0CRH6C7tsVyBsaXZHsVvzrl5DfuLbVLvyO+eFHTsxhsC8vGkewEU/rW75ftQ0AQoJiHY0OlvPG7mHTE6PY= 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 1754415295224352.8598274188404; Tue, 5 Aug 2025 10:34:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLWc-0000J4-Gw; Tue, 05 Aug 2025 13:32:34 -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 1ujLWW-00007x-Rv for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:29 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ujLWS-0004yZ-Ob for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:27 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-3b7892609a5so3894008f8f.1 for ; Tue, 05 Aug 2025 10:32: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 ffacd0b85a97d-3b79c3ac115sm20047887f8f.12.2025.08.05.10.32.20 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:32:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415141; x=1755019941; 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=eLuT5ufmLt3XqNS5X9fXVmklfwye/hfpmkjpVA3qSZM=; b=UmQQZBDhsqGU2anwakYjwuN/hIxQa7JehU2NPfC/nv9QOv/jykGeiZKBuRpjNXYWbp gnXWe338uaa6t9De1311jnTQ5yt+nn6F5z5mOHiZln+Z02JoIyNlEsUiKn51n+Js4yi4 lubnvQgKm/E6sfUlzuAs/Jia24OpKGTmHHh9BwFGIWpxlTVjllnpBy7sZQwqCD640tZq uo29gT5scYxlpt1BBGggX1dL2o0G11AdCjYjLwJ8hn91OJZ2CO/F1HW4kR7DvfA0Ce93 dQBu/0BiDeeMynui3cybcUxMhMw72Yu7KRTNyadIrDVTx161lMwj4tXiVrNaV71aggkX HtKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415141; x=1755019941; 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=eLuT5ufmLt3XqNS5X9fXVmklfwye/hfpmkjpVA3qSZM=; b=QQypsFGGuWPBOLPqxdwZvlJm02MGw/NtsxlNSaOBk+J05R1YY2btkU75fLkWHfZTcu oUkE/3EsgWMEXHWRI5v1ZRpvPfAz9RiMtlS/7iPDHygziRS1VYa26t8TWRL2Z45bjpAG 1vUoc2UM6jkeo+gvdK7YmvJJZ+6jA8jTL1Uo8jzaTt52izJT3KcGM6At5O0SmnUi7PYe 9u7FehLiIQd2sC8Eo+nZfbm2tSoHKvg1shq0Jk2zfL4+Fs3l9DffYTrE7z32yeRKtZPd Hqf+C8uLATiuz4NPcthQa8HCWBQqTmeGcW2RTc8jv1znt4+Y7NtFORCXR4n4BEHxK/CB VjiQ== X-Gm-Message-State: AOJu0YzTFUYHqVcfvmIn3pucmDynYQHtiaA7MAYlohjKIUdviwH+IRoQ Ai65EcKZoVUIxbLJJ06/vgrbZP7HJKYnPaJu/qCTQuj55q3aCCal9x0yjBXOLFXQrR90S3vmZlv ioTBn X-Gm-Gg: ASbGncu4S3tDd6PfqxL6VuRSrxXF2kPm79fr9/W8+pYUB3GvzGHjcdjCkxQYReQmyEA Rk89OaD5EXN265mcIhdU6kdp+xH5H+OgY1W7rmllHt2XgG+8AZ/ZDDFgDtfCn80XL42rFV3WbYa bNi/8UpLM3KFg84la5EseO0PCVVg35s5slLLek0dYZ9vrK5qNYumwXN0Wael2W5/0GXov2pz5Pf FUpsTYRpa/1kt8gU+b/efUFbuJ3e30yZjJePhj2lF9lxjj1IuFuXtjIdH/YYz+07NNrGLD4Xfk6 klWMgOKNdHW2GECfhP2BiLgG29sJGexSvPo3B+gao1GeMRw0RHY0Kl/VDwSOA8ItdgqK9SX03G0 ffq84owLdiDCNy3igKGF0Wrw7j8C2jdgNAdr5VaeSXZN1y54oKH/8t71mL2JUNkLkj66lZPvbuy mFcQxtgOM= X-Google-Smtp-Source: AGHT+IEnCC6ZIuaILMTqORMFskeGZ0dwVgnAQpASEI9gITTx3lpcdDhM6OtL0IAlTN8592ThU+w52w== X-Received: by 2002:a5d:64ef:0:b0:3b4:9b82:d432 with SMTP id ffacd0b85a97d-3b8d940aac5mr10878545f8f.0.1754415141327; Tue, 05 Aug 2025 10:32:21 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Guenter Roeck , Ben Dooks , Richard Henderson , Bin Meng , qemu-block@nongnu.org Subject: [PULL 09/13] hw/sd/sdcard: Disable checking STBY mode in SPI SEND_CSD/CID Date: Tue, 5 Aug 2025 19:31:30 +0200 Message-ID: <20250805173135.38045-10-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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::431; envelope-from=philmd@linaro.org; helo=mail-wr1-x431.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: 1754415320782124100 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 Acked-by: Richard Henderson Message-Id: <20250804133406.17456-10-philmd@linaro.org> --- hw/sd/sd.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index ee81dc09991..22f30997713 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1591,9 +1591,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 Sun Dec 14 01:39:32 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=1754415269; cv=none; d=zohomail.com; s=zohoarc; b=WNWYtpKohIGP3SRo+zauoDWWFBjUtmVEmiUctxl3gwnoavOPOgmiJh0yf4Sj4YS3jL+YPWKYMUXTgDrdOs+TWPfdZb6YBGBRJdBX9Lmz4s5xig4ea7T6AikuMVGstrmBBnpIh4f1hIjKZ3Hxh9gEE4DHGo2GelTlkjA4erRWjqI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415269; 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=MCsykQ2VuZzMPof/8vWp/dCBSb3JyYkVdmGb1zUy7Oc=; b=ehyafiFMxpBFQxgu/NuPypFIZgLaDpkHn5iFgD0F77EBotbVv7dcDCiEG+lxNYVE0NLkyhDXV7ehIMIJsTKIsvZDVIocQkldkBn0QC0plRl00epK8fOOfJCBeaGu8beHy4nHIYG7yZY0nyVOaH7XmsDjSiidgkWDpKz6VnZUBYo= 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 1754415269140523.9962574659606; Tue, 5 Aug 2025 10:34:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLWe-0000MH-3E; Tue, 05 Aug 2025 13:32: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 1ujLWY-0000CY-Lv for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:30 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ujLWW-0004zS-Gs for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:30 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-458b2d9dba5so25589225e9.1 for ; Tue, 05 Aug 2025 10:32:27 -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-459e58553f8sm13491375e9.14.2025.08.05.10.32.25 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:32:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415146; x=1755019946; 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=MCsykQ2VuZzMPof/8vWp/dCBSb3JyYkVdmGb1zUy7Oc=; b=xMQoH1BqqnFhXR24DZlakoeEJ+/ebDf7CtQkrG/YOKR2AIMtujirsJCSW3pFE8h+hG /caE0B3pXp9ZwSWX9ydSiGVXXgzfUS0mt/nrSeD5v+eZ9ho3+zDRlxkkRpgHUXdeL/Oo krhiR/oENKlAgqJkA6BrBZrSkK+LNOBSLergamlF/0ixrb6XzQAX0/Kh46szqlRQUYVI /Jp0dui+GXogaB18zngT7Op6FbsQSe/kqGnQT5i1lQ7mJQXnWXu/67OjjY+oBv+GIg+e K5R6kxPGrVLx/NwJNlpJXRfv2WWUPMW1fzQTZQUdSKqRO9x62iSRqcHNeH3zWW1jHoR/ 384Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415146; x=1755019946; 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=MCsykQ2VuZzMPof/8vWp/dCBSb3JyYkVdmGb1zUy7Oc=; b=nELkbudJ/XY87fmjvFjauPMDaUZ3DTISLqHvcjGirbNdNBAjmvwsApB/7QPhxDod7r TdB7UnwLntm3Me0z4YcLrACXrbMmle1wfuZtR6hlv8eAvBOtFNqaUQek7txDnUXG+Meb vYV57zp5l9PLM3J/Tz4or/QBSr3fhAieJTgPsI4XuMsNN+GrEXUGp2IR78BRjXcDv2gc 25ID5xrfvbrv3CTYZRJlfMk3F1CfibpaH6bJI63lbSqvUUZbah0zlxkUyfVWpz42ujch oPb4VGMBHyz1EwMqAl0M/rflCmvtIj0y1CHRNGOWRhNxlQwvWpK+1PgGsHFUy+iaIQFX Aksg== X-Gm-Message-State: AOJu0Yzfttr3CvrRtgSHedDRz71S6eVLSdvUOD6d3OB14z1BvNJhU5g/ 3EMLCFTVh81lOsq+ShKiE2cQg9AeKsdVaMQ3FS3WJIgEDsJdV9T7aVAqGo3mJ6nCbX+bMsNWVJb 4itiT X-Gm-Gg: ASbGnctuWrq1EgXZWpV95sawisWthqFQ4F43/tg2exBif5c8khhkpHssdBzNq0LLkyy /pi4zwCSWS/mMlWCuhbFrFRt2ckymDgw2IfX83Mpy9EuPCEgWDLZWX5NEmLteMiU9A5gjVFL2/F nK3sEkCkneuzOmKPoWUCLX9TMS55VjW5Sp0oDg0JscYwu0CNdMnFhT2kEci757BE4NpKnB41hVX X3wYlsRyNedhUl5MMfzeupU+d8AdRJp0txds9xHlfTV7Pk1H4+yMXvSMcby7Y6FMwUsnHowNiaI gqOLQAS3FxoDKG2RaDUUbqPKWrPerNY3yr0YJ81ACk2T31AerSldsXN6DnAS6zVTXKE+ktJS6Ut 7lAX2AWSs1l4QG0njNPbgIqG9rjFcI13xvvEeZUyjwT6Xh6clAstueiOqe+tbAL2q1W0MYEFNgV 8+RdYurZE= X-Google-Smtp-Source: AGHT+IHjFF0zMk+d1nq9vXjKddf/Mz6oEZ0HpI3zaVM4rogSYQAD52IVAouF6gCkzCm0yhW8nhr9uQ== X-Received: by 2002:a05:600c:3224:b0:442:e9eb:1b48 with SMTP id 5b1f17b1804b1-458b716c2d0mr67636975e9.24.1754415146289; Tue, 05 Aug 2025 10:32:26 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Bin Meng , qemu-block@nongnu.org Subject: [PULL 10/13] hw/sd/sdcard: Remove SDState::mode field Date: Tue, 5 Aug 2025 19:31:31 +0200 Message-ID: <20250805173135.38045-11-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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::32d; envelope-from=philmd@linaro.org; helo=mail-wm1-x32d.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: 1754415270939116600 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 Acked-by: Richard Henderson Message-Id: <20250804133406.17456-11-philmd@linaro.org> --- 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 22f30997713..8c290595f01 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 @@ -1025,7 +1021,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), @@ -1325,7 +1321,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; @@ -1485,7 +1481,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)) { @@ -1658,7 +1654,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 @@ -1684,7 +1680,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) { @@ -2090,7 +2086,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 */ @@ -2176,7 +2174,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) { @@ -2276,7 +2276,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 Sun Dec 14 01:39:32 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=1754415420; cv=none; d=zohomail.com; s=zohoarc; b=Il6IWyualoFFPp5hFwuE/SHzCDMG+Uzb3eggLuzpk2gLBYnBbxmTKn90fliYJdS+0fJYs6r95467/J7M+f9u/iv3NbeXnrQ4hvyENdJ0v0fE2bolUe/MYaHD7bWmBSL3zSYYxA3RZBnkL+eyU8AHehVlJ/EFTd1i5XTnpRbSzi8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415420; 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=8h5RPDsE1Y92Dy93SzXRg3pQrnofsa76XU/mHfIXDMI=; b=fHTkt1hHHkyrPUBCAhkztje33ukt9zQ1Q9502A+qgxG8OnC5s4jFhoko3Jv5wAaF7xc5Rr4LMwMBvAMHSF7PGUIuhHoWS5eilOgvC8k6iAYwFLB/7g2SYKPUlHFploypn5/rjoaUNGYXGZVAyxRRWPappJfIBzF/kkDhIAuJXgU= 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 1754415420869577.1777194565838; Tue, 5 Aug 2025 10:37:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLWi-0000Qp-06; Tue, 05 Aug 2025 13:32:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ujLWd-0000MS-Ls for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:35 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ujLWb-00051J-Pd for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:35 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-459e39ee7ccso6560515e9.2 for ; Tue, 05 Aug 2025 10:32:32 -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-459e075805csm53960845e9.4.2025.08.05.10.32.30 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:32:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415151; x=1755019951; 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=8h5RPDsE1Y92Dy93SzXRg3pQrnofsa76XU/mHfIXDMI=; b=PFo8i6ixqAp38UD6FFytB9zjQ+6C3/9ZlNNGEM4A9rKuJT7BHdLMcxtLM/gIAMIUeD +dR7gHE9zfGiRglOwXPEiVxYQA20APXstPfNxkVZE+bDNTUUX4ck9HJATmvIeRiS5kkC 6BiyeI/s96sQgc9ibYoZOnGiuDVu//czeGDgKv5wtDhc99li09sSbi5jGriBUewKsRzl RzFWk3NaVGessM/xydq2ZvU9Y1595RnPtk+bAQOGMXMG0byAABHUV4hEH0O2mS2JvWoe AS6MngJCPUOs7FlZUbI++S656KkdLHMlhd6/kLD+qnzg94DWmuzK2mNRiQW2bFzrOyy6 blgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415151; x=1755019951; 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=8h5RPDsE1Y92Dy93SzXRg3pQrnofsa76XU/mHfIXDMI=; b=W3y+mGKiOdVkRir6NTsJQiq5b6v8XumEkcCDSEudc8bsye/ul5BqaI8y5zTfvO4xjJ 9ODm9Aw7gunbIFDqu4F8lhY0PnLQebtvXDE6q4Mwktr09/v21IBOeAgvXLF48CwgEycP 0XiIHNupXe8UjyV/0345WlD9C/MYCJqKbsSVCx+XcepOXMPjxIQgz/UjFyNoE65ypL3/ vrb/wx4Rqekyi0koZipdqQrQJki9jhaUTZFD1QlJfFwFBYxie8niMNMxHWHT4LoPg1zd A7FUDu+CbEGyg6ah5cBpWDyPVTl6hXcoC6R6A77uhK70KxiFEtZXulGoN4hGCovZmk+N gE2Q== X-Gm-Message-State: AOJu0Ywr9rPExrKBf/NyOazELD6qO10OGkZglTEiifHF/tE2RT7Cg8z+ jUsdj6r0DUcorhrpqaoCenxQpyl2uWV/BaUyrzhfSmZeywIInq8sKVJM0YVRpkfXbIpWIo12SWK 5+4zj X-Gm-Gg: ASbGncs1lmmOrXpHTNN+rXV7zuY4NpDi7MbXmSXMg3ctyGkFKSfr/WbFayBu1u45yn5 ffj/J+q40tB2T1k6QLaf2OIvl3FK/2MJH1fw7z/QDm4DBfroww52Yx8lUgzq+OgqbCGdKwAm4lz cQUEZeLNGoLx46fFncgmerfHBROPIBm60lFaQUMVHAzS02FsjZPELeGK38N4GthHuPAW6ctNZoJ vzbacufLDB2/zzY+8yqUoATEm6u04Urq+QR+6vi7m+l4Y6zu8RyKwg5MYzHSRG4h6+4mz96RVVo sA9mLlrUkxlMBIRGATmSe3tBu4bIw+yBk/bOcxoKd9MWFOgh62b0yG0+IEJheTTXcBQuefd8jQ3 ebvhe0Dmp9a56R1qbLVbIn3Q4M6CURgbV3sHJI38ws0pSpo6zmXvoF3/w8nS41z3wC+rBkw2x X-Google-Smtp-Source: AGHT+IEM+7YONR91vACHZnyClNl1/rk/AVtuWORaMOwBid/tXWxjHgImtUq7emzdfXilN1jG7RyvJQ== X-Received: by 2002:a05:600c:3549:b0:459:df48:3b19 with SMTP id 5b1f17b1804b1-459df484eadmr56895395e9.18.1754415151443; Tue, 05 Aug 2025 10:32:31 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Guenter Roeck , Ben Dooks , Richard Henderson , Alistair Francis , Palmer Dabbelt , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org Subject: [PULL 11/13] tests/functional: Test SD cards in SPI mode (using sifive_u machine) Date: Tue, 5 Aug 2025 19:31:32 +0200 Message-ID: <20250805173135.38045-12-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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::32d; envelope-from=philmd@linaro.org; helo=mail-wm1-x32d.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: 1754415422901124100 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 Acked-by: Richard Henderson Message-Id: <20250804133406.17456-12-philmd@linaro.org> --- 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 28cea342718..a07086ed762 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 From nobody Sun Dec 14 01:39:32 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=1754415422; cv=none; d=zohomail.com; s=zohoarc; b=d7Q45FcdoKVXUAgQTRISIG6i3S1YSsd/iQ+4WGI064b9HsTme2Da2SCHYr4s0+vPE+/+lXIbVgQy3LJwnrAxdMTDqKwSCX7cAaUWRD8NRCRsP+3ka4mFiogeokwzdQQRp1iaSC6jjiQwMPyeJYlaSL1lb/P5WBR8syL50eg3UHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415422; 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=cOv0e8g7dpHxydsNkW2B2z60yaVe7rRVLXsrB8NRcV4=; b=Vig8CMTS+OAjjnR/owft11RTSbUdvgv90hfs11qTl61E4C7u0e5W5rpxTYZPI5du7eEAYEIULDbG8vexOuqadxmp7aYD8oVRTdCEQclxk+bQcG/wg//3CvgMhrUj+dY626kayKH5IQCgNRDtJib3DcKEi1z85/wQDZcPIm4YdFo= 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 1754415422947904.3364497476833; Tue, 5 Aug 2025 10:37:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLWm-0000aE-2N; Tue, 05 Aug 2025 13:32:44 -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 1ujLWi-0000Vi-G8 for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:41 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ujLWg-00052d-KK for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:40 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-458ba079338so844125e9.1 for ; Tue, 05 Aug 2025 10:32:38 -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-459e5843021sm15071965e9.3.2025.08.05.10.32.35 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:32:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415156; x=1755019956; 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=cOv0e8g7dpHxydsNkW2B2z60yaVe7rRVLXsrB8NRcV4=; b=o5vKEXjsuxICpKAkcOdYHqi4YyPznJebBCti5yE3Lgf+oxRwWLa2Km6jDMQ5vUsfK8 bmn8JOMFUY0Mv1znauQWEA5DgUh8IOYoKn1OcvH8RVGxDAo9QRstC9J0sOGUiH+zR+pw bRn7dnWM32BTt7h+G7LUcm/UQ+CS+awj+fxh3X08SN6wwM70BGpAsrqp2Gydp3dCz+cR VVcYmYmQ0GGCUR0+9qRQ9s+MeFbNSwnTDTsEKj5gKiVpJoUpwp/l7nO8/57bv7iPPpyX vrZE3pKYZAASfZTns0XYN2uY6lJi4nQLHaivz8HrSlJ/O2K8sVU5DSZpkYgLTAD7CqJM 5lAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415156; x=1755019956; 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=cOv0e8g7dpHxydsNkW2B2z60yaVe7rRVLXsrB8NRcV4=; b=fYTE64+naXiubDqx8m7aiECKM6HAlDWaSSCFMgoD40DQUqLMJWpNRerFacocQMWZOC jwLmL/0e3qT7qrYOqXuTJ+WtcPVzCihBMFra0+ztEIhI8AKOICfDEohXvQ7K8EvrQyF+ 6Sw1ii3ydbEcPw19h1kLH6f8ZAzKtYg9zYdKshuPICXLor4/nrqP6y+EIZfXbIO9+b1N XaEqxWnyAWsj2CbcO+RIonPXV7lKPxUGHunwbGWrpOMCfNZVZG8bY0nd5G5wAZLPpnCj uNm5r2oLasJisnsEwDAcLwnVDrYWDwPqIMJ1mNMGCdiDqioI2HPf7V2jWbMzDoha8/YQ 55ow== X-Gm-Message-State: AOJu0YyGk19oi8RAznCpHs6yQiUzHCyAB7wv2lOze7ug8PgGR/vUO0kl L1Xf6ggVhX/FkVAuZI4c0SGeHe4AM5HntVyPv2YgKeffUK4cgscw2o40LMAZ9AwTLj5BQRvD2aO AVg1p X-Gm-Gg: ASbGncv/D1t8eoerlaqkzCzuNeg0ZvD7mUCYDmd7O7fHSmzQY7wFeeB+iGwbYHmJ5+W Or0SixtE1SzdaWXV20I7/hr0EYz/oZcYMsxlxqacnIhIxHOhEmA1CvqNfQEpbAq21+ZxtAUq8vr LqqivzuVF5cay9Y32xcGgVfSCJcQpynCQoGtOv22VQSIMUz1/tCcR4nyOCZKdDIx+uLMt1LJaYH EkL/PdF1CF06ZCLJ1maQxy/m4gSjnNBpdhNyoYI/ch4BdlE/9m3z4Afab3VgrhR5FPkB+5+FXYC IXlHZkLL1ThRwHcqOyjzpotys6ZhtFcNXhp6xvcy6J9sX8lxqByvqmzTyLPUSk3vPxovJXurOy3 p2Iyag2bqrX1JXqJqYzrl441lTtXzFBthlwlzYAswlJGVjmM4/v3+uYzefTIdFXs/5Gzj66Uz X-Google-Smtp-Source: AGHT+IH5dxVVw90egUuFXwukH6tJi9+46IfHfaT0NaYEB2/6NJ4F1AqFQlDFWLFb1r/I2aq7hxBvVw== X-Received: by 2002:a05:600c:15cb:b0:459:dbc2:201e with SMTP id 5b1f17b1804b1-459e611e82fmr3946825e9.9.1754415156349; Tue, 05 Aug 2025 10:32:36 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Zhao Liu , Michael Tokarev , Chuang Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paolo Bonzini Subject: [PULL 12/13] target/i386/cpu: Move addressable ID encoding out of compat property in CPUID[0x1] Date: Tue, 5 Aug 2025 19:31:33 +0200 Message-ID: <20250805173135.38045-13-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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::329; envelope-from=philmd@linaro.org; helo=mail-wm1-x329.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: 1754415424357116600 From: Zhao Liu Currently, the addressable ID encoding for CPUID[0x1].EBX[bits 16-23] (Maximum number of addressable IDs for logical processors in this physical package) is covered by vendor_cpuid_only_v2 compat property. The previous consideration was to avoid breaking migration and this compat property makes it unfriendly to backport the commit f985a1195ba2 ("i386/cpu: Fix number of addressable IDs field for CPUID.01H.EBX [23:16]"). However, NetBSD booting is broken since the commit 88dd4ca06c83 ("i386/cpu: Use APIC ID info to encode cache topo in CPUID[4]"), because NetBSD calculates smt information via `lp_max` / `core_max` for legacy Intel CPUs which doesn't support 0xb leaf, where `lp_max` is from CPUID[0x1].EBX.bits[16-23] and `core_max` is from CPUID[0x4].0x0.bits[26 -31]. The commit 88dd4ca0 changed the encoding rule of `core_max` but didn't update `lp_max`, so that NetBSD would get the wrong smt information, which leads to the module loading failure. Luckily, the commit f985a1195ba2 ("i386/cpu: Fix number of addressable IDs field for CPUID.01H.EBX[23:16]") updated the encoding rule for `lp_max` and accidentally fixed the NetBSD issue too. This also shows that using CPUID[0x1] and CPUID[0x4].0x0 to calculate HT/SMT information is a common practice to detect CPU topology on legacy Intel CPUs. Therefore, it's necessary to backport the commit f985a1195ba2 to previous stable QEMU to help address the similar issues as well. Then the compat property is not needed any more since all stable QEMUs will follow the same encoding way. So, in CPUID[0x1], move addressable ID encoding out of compat property. Reported-by: Michael Tokarev Inspired-by: Chuang Xu Fixes: commit f985a1195ba2 ("i386/cpu: Fix number of addressable IDs field = for CPUID.01H.EBX[23:16]") Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3061 Signed-off-by: Zhao Liu Reviewed-by: Michael Tokarev Tested-by: Michael Tokarev Message-ID: <20250804053548.1808629-1-zhao1.liu@intel.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/i386/cpu.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 251d5760a0b..673f8583c80 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -7885,8 +7885,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, = uint32_t count, * count, but Intel needs maximum number of addressable IDs for * logical processors per package. */ - if (cpu->vendor_cpuid_only_v2 && - (IS_INTEL_CPU(env) || IS_ZHAOXIN_CPU(env))) { + if ((IS_INTEL_CPU(env) || IS_ZHAOXIN_CPU(env))) { num =3D 1 << apicid_pkg_offset(topo_info); } else { num =3D threads_per_pkg; --=20 2.49.0 From nobody Sun Dec 14 01:39:32 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=1754415248; cv=none; d=zohomail.com; s=zohoarc; b=VnMMCXCmJLnzsFqV2SXWn34AaZmlvIMZ8PCMd2iubQtxwyjlMNxKnjjxBtH91LsQChSFIQT0K/1scI8hHNnXmEtJ9RbgYdyIUJOSKBe8NfEL/MeA/V/HmX9nC6lcDhZI2wremwmKzNPXp8jcUz6URV/EBmEIaOtKdQUvyggl+dc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754415248; 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=Nyp0V1s1n3Qx5gTtUClK6ljJrPkZFehssseSlQktGtg=; b=aXb6CMRITDWZ0PjfKjU9wR7wEg+DZsiVwqRK/B1GgKh6yDu91aPoFKQWtKIfV9iE3elLirOh25BlUyXGJYqv2mtCZk5hYPMj3u+RNNv767yyRXfipGl0cMV7av4K2KHIv77Dg+NGsehWuXCJVUMf1GcHTeIFSZ9lhcpCYoVKQUw= 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 1754415248919952.8939512770984; Tue, 5 Aug 2025 10:34:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ujLWo-0000fc-Nh; Tue, 05 Aug 2025 13:32:46 -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 1ujLWm-0000cv-Vx for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:45 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ujLWl-00053c-9e for qemu-devel@nongnu.org; Tue, 05 Aug 2025 13:32:44 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3b782cca9a0so3369509f8f.1 for ; Tue, 05 Aug 2025 10:32:42 -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-3b79c453aeasm20592966f8f.40.2025.08.05.10.32.40 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 05 Aug 2025 10:32:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754415161; x=1755019961; 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=Nyp0V1s1n3Qx5gTtUClK6ljJrPkZFehssseSlQktGtg=; b=GpFjWfWyD5t9WvuCqJ3mA6MajciDMZ9GIjq7dGNepN9VtXFNHdZl19uGJ4q83bHQpb UHNL6FffHXUECRVbSp7IQ9kOMB+M6eEzKczDSp1AqicjyeGk8bwM4s43o2YozxgbDveS K14vz+ya2mAMvK7QHI680zweCIYJr8OiQszRZpa6EuC6cFMGANLCCVkwNjKrzq3jaqf0 IYt4uyL3sWET4kOYwoOJ2wr46WN59VCtgMINGtyTTrKManS9B9cwPg2fxsj+siRSdTXq 8n9CS87mktYO5MESZ/8DEcFi7G/rbHQHW2XMxxXI5grHbv4yIIFC6iMh3nTzak+EISm9 Fkng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754415161; x=1755019961; 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=Nyp0V1s1n3Qx5gTtUClK6ljJrPkZFehssseSlQktGtg=; b=ARMv1SqaFWTowVEXGpNi4AG739g/iyjgbixFqpZ1za363BWh0yKCVUct5jE8U0uQBB K2XATlpxH/oEcrvVun9HDT1gVHnJpzINcmt461E1OwFrITwAYnEMEzIB30xAlb7L4geY brI0fGEicmw3d/omxDOI9sctOSzKdIj1kWBieDwWmMnNwCtQonwoyTYIPn9emriEHpIo XVij/Lfvt7IuM6Jld0JXXOxuBeSLmYNbt5A5et9XK41EfHw/uEkX9YxZRQ0oZjSyQz1x mU5dZt2/0CpaiH7KcqRVeKLVQJu5GxIlcCAzFNFbqbbD3/0W5+HRu2+3hQIYt9Rr+WQm 6GSQ== X-Gm-Message-State: AOJu0Yw7z3unMw5wQcYtBa3XmfgqglvEsHxVkDAkZeWavPfDDkA9wO9x 91ODvrkxnOkTZRRcRj8gyOOBM9EV0FqhIL6rSdXzd3tXVsK3r06uJdQmrlv6/a2loe7zntR/Uj1 XLhSf X-Gm-Gg: ASbGncuxQkTp7yLVFfx8Z/JLtRRimCXtptIXMYPElXJP6mKZmQUX28szgk0WZVi78Pj OgyuhGk/lMVP3R1vDQaW51NvQZehIvydICNqpWNfCG/SxTBiKHsGJ3pR1ohA5bvBn02g7csye8L yqeenOM2UATTP1vvQmPJ68iiNNYjg3VxkITpspW+qiKtmFfJscCNlMlQRzOs8eQHQ2sLjd0bizV CMDKSldykin05OnSb063dpZamJUPFqzzCwlrM97JbSO5/QHboQJlPSwD6oy/q4Bp0F+RHvku7en J6i6OrIX8VNK8e8iIHOCnFBUtIWsNWnbY3txm3YMTF9nS4/Mu+ipITJs6upULdNq86hLzNIYY11 24zLuMpaDcHZvtuX6CqQVAIpnVdX9E0oQNLIqaIK+3VdmbXcVSP3gU+ByXztm1kIOT6eFLV7D X-Google-Smtp-Source: AGHT+IGBuuD2RYM/P9sr7OS1tZQ2JnZK0H8/ogIeNzrgEgakdizwS26xurZRjzk0zXnf0K44uXEZKg== X-Received: by 2002:a5d:50cc:0:b0:3b7:882c:790 with SMTP id ffacd0b85a97d-3b8d94aaf66mr8411006f8f.37.1754415161504; Tue, 05 Aug 2025 10:32:41 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Eric Auger , Michael Tokarev , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paolo Bonzini , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Eduardo Habkost Subject: [PULL 13/13] hw/i386/microvm: Explicitly select ACPI_PCI Date: Tue, 5 Aug 2025 19:31:34 +0200 Message-ID: <20250805173135.38045-14-philmd@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250805173135.38045-1-philmd@linaro.org> References: <20250805173135.38045-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::42c; envelope-from=philmd@linaro.org; helo=mail-wr1-x42c.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: 1754415250593116600 From: Eric Auger With a microvm-only build based on a custom device config, we get a link failure due to undefined reference to build_pci_host_bridge_osc_method() which is defined in hw/acpi/pci.c and whose compilation depends on CONFIG_ACPI_PCI. Although CONFIG_ACPI and CONFIG_PCI are set with such configuration, implied CONFIG_ACPI_PCI in config PCI_EXPRESS_GENERIC_BRIDGE is not selected as expected. It Looks like CONFIG_ACPI_PCI must be enforced and this patch selects CONFIG_ACPI_PCI in MICROVM config directly as done for PC config. Reproducer: ../configure \ --without-default-features \ --target-list=3Dx86_64-softmmu \ --enable-kvm --disable-tcg \ --enable-pixman \ --enable-vnc \ --audio-drv-list=3D"" \ --without-default-devices \ --with-devices-x86_64=3Dmicrovm \ --enable-vhost-user with configs/devices/x86_64-softmmu/microvm.mak: CONFIG_PCI_DEVICES=3Dn CONFIG_MICROVM=3Dy CONFIG_VIRTIO_BLK=3Dy CONFIG_VIRTIO_SERIAL=3Dy CONFIG_VIRTIO_INPUT=3Dy CONFIG_VIRTIO_INPUT_HOST=3Dy CONFIG_VHOST_USER_INPUT=3Dy CONFIG_VIRTIO_NET=3Dy CONFIG_VIRTIO_SCSI=3Dy CONFIG_VIRTIO_RNG=3Dy CONFIG_VIRTIO_CRYPTO=3Dy CONFIG_VIRTIO_BALLOON=3Dy CONFIG_VIRTIO_GPU=3Dy CONFIG_VHOST_USER_GPU=3Dy FAILED: qemu-system-x86_64 cc -m64 @qemu-system-x86_64.rsp /usr/bin/ld: libsystem.a.p/hw_pci-host_gpex-acpi.c.o: in function `acpi_dsd= t_add_host_bridge_methods': hw/pci-host/gpex-acpi.c:83:(.text+0x274): undefined reference to `build_pci= _host_bridge_osc_method' collect2: error: ld returned 1 exit status Fixes: af151d50eac24 "hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_= method" Signed-off-by: Eric Auger Reported-by: Michael Tokarev Reviewed-by: Michael Tokarev Message-ID: <20250804152008.247673-1-eric.auger@redhat.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/i386/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index 5139d230877..3a0e2b8ebbb 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -131,6 +131,7 @@ config MICROVM select I8259 select MC146818RTC select VIRTIO_MMIO + select ACPI_PCI select ACPI_HW_REDUCED select PCI_EXPRESS_GENERIC_BRIDGE select USB_XHCI_SYSBUS --=20 2.49.0