From patchwork Tue Feb 16 15:02:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 1440948 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=jvsNVgF2; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Dg46X2dq9z9sVJ for ; Wed, 17 Feb 2021 02:05:56 +1100 (AEDT) Received: from localhost ([::1]:55880 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lC1vG-0005ts-7N for incoming@patchwork.ozlabs.org; Tue, 16 Feb 2021 10:05:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41956) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lC1sO-0003tU-Fc; Tue, 16 Feb 2021 10:02:56 -0500 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]:50677) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lC1s9-0006GU-6C; Tue, 16 Feb 2021 10:02:48 -0500 Received: by mail-pj1-x1033.google.com with SMTP id cl8so5837097pjb.0; Tue, 16 Feb 2021 07:02:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=odp3y9W0QWC+Eqi22Ei1DyhqtJRF26815/yKpl97ZQU=; b=jvsNVgF2KXGZ38vInmMjuSZXok0hHf+65Y0FKgfpe2ovvIcu9X28aybRKvGOQclYpu ciFcWvLYRRNNeOuhWtjQkBBNR2+gdF1dNQk+TsBHBwlXE8COOqG0AE2o331nTiVkjUdO jMe1TJr6UMTX2QbLwg7IDwdyS8V9psZw7RgmlqjRmPh+nQ141U/bpL6FPVO/VjcSOaDS hI4HXvwtkM+TgYLfqIry9aHOeMfcl7uW1JeAGW/LIU2AK3AvmIq/9yypAtNETMEA/F3g KYiTSVA6YNjnNeuDv8RS8UdXOuwBzsn1+zuJyy3FxosVrmoBYos73C8eZgcgmnIBUEqB c9MA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=odp3y9W0QWC+Eqi22Ei1DyhqtJRF26815/yKpl97ZQU=; b=LZQlIvoq9DZlO2/qAPq+OP2cD2oDc0h0pixM8NMnxppS+oNkIJT28boGmJE3lsfdLf 6uZzRU2I9B14sUs1ZKZ/qfuN4ZuF2oUz+Hh+r8U//kDABQughgHIV8+2WylJwYKqE1+K ln17vYGgtSZu+Ud43AmZnE2cbsOM/xK1RYIj4TKUX3KitaY/up3bzHK/R0BbfmfId4ex 9CcrXlMCcI0cuPGErEuR83yjq8Y/wYJshqepvRys8zbb+7hi+sd9WWjUoHs5vFJ661Ic rFSkfapQK+3ssdzt9azYma8N0iiA71h7xnBwMlJnNxjmP2R8NEC5lJKZngwLUn9fabPO jmqw== X-Gm-Message-State: AOAM533wFR/O1QGSDeAts/veG4lmt7VmDDlsLyBNYMeI3wHEhQmXu54Y 6w4mHUp9sOzRjpck38McADetN0MDs4E= X-Google-Smtp-Source: ABdhPJxswMxTu+fHBOg2jLjCF8V35vuc852X/N7eEPFTzhCdKBPoxlIrqpmZCMaA7H19cNWZqUWAzQ== X-Received: by 2002:a17:902:aa42:b029:e3:492a:7b37 with SMTP id c2-20020a170902aa42b02900e3492a7b37mr13083424plr.6.1613487759549; Tue, 16 Feb 2021 07:02:39 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id n15sm21960300pgl.31.2021.02.16.07.02.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Feb 2021 07:02:39 -0800 (PST) From: Bin Meng To: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH v2 1/8] hw/sd: sd: Fix address check in sd_erase() Date: Tue, 16 Feb 2021 23:02:18 +0800 Message-Id: <20210216150225.27996-2-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210216150225.27996-1-bmeng.cn@gmail.com> References: <20210216150225.27996-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=bmeng.cn@gmail.com; helo=mail-pj1-x1033.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, FREEMAIL_FROM=0.001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bin Meng Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng For high capacity memory cards, the erase start address and end address are multiplied by 512, but the address check is still based on the original block number in sd->erase_{start, end}. Fixes: 1bd6fd8ed593 ("hw/sd/sdcard: Do not attempt to erase out of range addresses") Signed-off-by: Bin Meng Reviewed-by: Philippe Mathieu-Daudé --- (no changes since v1) 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 c99c0e93bb..a6a0b3dcc6 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -760,7 +760,7 @@ static void sd_erase(SDState *sd) erase_end *= 512; } - if (sd->erase_start > sd->size || sd->erase_end > sd->size) { + if (erase_start > sd->size || erase_end > sd->size) { sd->card_status |= OUT_OF_RANGE; sd->erase_start = INVALID_ADDRESS; sd->erase_end = INVALID_ADDRESS; From patchwork Tue Feb 16 15:02:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 1440946 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=gTNMOJKC; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Dg44h2H0hz9sVJ for ; Wed, 17 Feb 2021 02:04:20 +1100 (AEDT) Received: from localhost ([::1]:51884 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lC1ti-0004Fy-5U for incoming@patchwork.ozlabs.org; Tue, 16 Feb 2021 10:04:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41960) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lC1sO-0003tp-KY; Tue, 16 Feb 2021 10:02:58 -0500 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]:40215) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lC1sE-0006Gv-Vf; Tue, 16 Feb 2021 10:02:56 -0500 Received: by mail-pj1-x1033.google.com with SMTP id z9so6084264pjl.5; Tue, 16 Feb 2021 07:02:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kNHsYjJ4o6EKBsRClxcIj8D2KvENAwyWtLKbAfGkZ0g=; b=gTNMOJKCLhYWfJ/MACn13yTVucLtNdMKeLHA4cF0M5ZlbKlrRcYeLK1+WilNFtJrj+ 32fzdP+s8JY7Qm2w1IODKg0XQ6AvPpfIsIYnIuFP04lK5RuCogI/Anf5Vk4hSSgNdOkv XKMGdGcdrL/dm79Usg+Ho4FTxAsm9Zwxv96uT977XPntlLhJi1gbHg83OilI3OD3DiHF +kq5hgcDOnuO5dDUkdV4o7JoFrVPEvcaY7X8XfdNNduLEM8U7/C/CTt6xPOisTe/UxZa 1UAROR0FzK8Tst9/5M5hiZ3i2efNVk5Nz+iAIz5PKkBgJMJRSs2kxuuBT27G75zrReMI 7k8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kNHsYjJ4o6EKBsRClxcIj8D2KvENAwyWtLKbAfGkZ0g=; b=WOCBF0KC7kAbTXXGZfUh61Ccv4z+UZ5jdV3We84mcqCaA3F4HsVKj4Kngih6HPvk2o HW0uCHUhdV6SBxvGTTpYSMccbgQN799z0ZaZWMDegTRMHB9ODseaW05RP3LjWQS58rCC sKIwtWWNu+hjU1Uh26ABXZmbEtgCTAWqnADYXlbmyNmI3E1SGOYt3bOOij0Gc2ChDcK3 iOJiQPxelktjhpymZrz3iqMGXFuaCGjHnRziPEBCfAdlJ4p2CMd2kpCtZ/Dh4Gxs6wKv zXEOFmkBisx/2FWf1rD9TMLwftn6ndlJY0n1vdEZf1ImU3BAbcow+17jPQVafWG6qvdt ebng== X-Gm-Message-State: AOAM530EuY4rEKFr4Lcc9s43c0hnfmjkkIsJCQd9ZZ8AbdSNWFz5yAqg SMq9nmPDE3J1uuJTtixkysgUHd1I9Yc= X-Google-Smtp-Source: ABdhPJy/eTnl3koEIGVbHahDAt6lgHDsdjl8P4UPu1QLQlPLcnx/NCNF79LI5khqe9qs033/nzWPHw== X-Received: by 2002:a17:902:b487:b029:e2:d2e2:60c0 with SMTP id y7-20020a170902b487b02900e2d2e260c0mr20271027plr.32.1613487762943; Tue, 16 Feb 2021 07:02:42 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id n15sm21960300pgl.31.2021.02.16.07.02.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Feb 2021 07:02:42 -0800 (PST) From: Bin Meng To: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH v2 2/8] hw/sd: sd: Only SDSC cards support CMD28/29/30 Date: Tue, 16 Feb 2021 23:02:19 +0800 Message-Id: <20210216150225.27996-3-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210216150225.27996-1-bmeng.cn@gmail.com> References: <20210216150225.27996-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=bmeng.cn@gmail.com; helo=mail-pj1-x1033.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, FREEMAIL_FROM=0.001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bin Meng Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng Per the "Physical Layer Specification Version 8.00", table 4-26 (SD mode) and table 7-3 (SPI mode) command descriptions, the following commands: - CMD28 (SET_WRITE_PROT) - CMD29 (CLR_WRITE_PROT) - CMD30 (SEND_WRITE_PROT) are only supported by SDSC cards. Signed-off-by: Bin Meng Reviewed-by: Philippe Mathieu-Daudé --- Changes in v2: - new patch: sd: Only SDSC cards support CMD28/29/30 hw/sd/sd.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index a6a0b3dcc6..273bae0a9a 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1284,6 +1284,10 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) /* Write protection (Class 6) */ case 28: /* CMD28: SET_WRITE_PROT */ + if (sd->size > SDSC_MAX_CAPACITY) { + return sd_illegal; + } + switch (sd->state) { case sd_transfer_state: if (addr >= sd->size) { @@ -1303,6 +1307,10 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) break; case 29: /* CMD29: CLR_WRITE_PROT */ + if (sd->size > SDSC_MAX_CAPACITY) { + return sd_illegal; + } + switch (sd->state) { case sd_transfer_state: if (addr >= sd->size) { @@ -1322,6 +1330,10 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) break; case 30: /* CMD30: SEND_WRITE_PROT */ + if (sd->size > SDSC_MAX_CAPACITY) { + return sd_illegal; + } + switch (sd->state) { case sd_transfer_state: sd->state = sd_sendingdata_state; From patchwork Tue Feb 16 15:02:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 1440951 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=Yf8HmdkQ; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Dg48Q2Ylgz9sVJ for ; Wed, 17 Feb 2021 02:07:34 +1100 (AEDT) Received: from localhost ([::1]:35298 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lC1wq-0000fE-9N for incoming@patchwork.ozlabs.org; Tue, 16 Feb 2021 10:07:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42072) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lC1sS-00040A-Du; Tue, 16 Feb 2021 10:03:00 -0500 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]:37464) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lC1sO-0006HL-M5; Tue, 16 Feb 2021 10:03:00 -0500 Received: by mail-pl1-x62b.google.com with SMTP id d15so5618189plh.4; Tue, 16 Feb 2021 07:02:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JSSbbEQMVPfDlmsQro50Dl0kGOHve+9ueKscDDbMorY=; b=Yf8HmdkQnEfEZ83r1tDR/VR7Wb1iUMkx4g1QnK2i+HdoC1/Wpy31KsbD5MA6QbIngM 7IRneV7x6yOligK/UwfMd7EDqMKlFb5tF5o4YMV5A7SMzYF24zc3+KmNuMVKj8VRsKGo rdtwoX/LP6OD+1egfsWbcTLjqq9E1Ihbd++qtyT+K8rumOIcdPEW9+A8rsDqZoZM7DGn gqISHDn08AHouKHXPpjLhRLrYdU4Jm6Gw9l6R+nbTjbOG1Y4hsB7od2ALybcADPI6cuc HcVTVy2aPUC6YUcQMQnOPnVegvoWmmJXq8c4SToA71gbKqhKSbiXSYK0b5horMz6p7zA XDKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JSSbbEQMVPfDlmsQro50Dl0kGOHve+9ueKscDDbMorY=; b=OFSccyimvJtvkoOrF0hi5OoFpC54zcCGAuTtAIw+CnxZJZ4bHVIUD4H9nygqAm3t7D dm6RqXJONpyPmBAo1NxM6nyoIZW7zmOOu4Vj6hwwPVgD+3YqLHiNA9z0PR3HFAI972sK wVfl0pd6ofeZnFUJa5uKlysiwGTcESGml/Ql4JZGiGF1rSQMO0thxTL1j4CRGJ++5vX3 C8cgvYnkKMXuHRDpAZpDSjDP9wiCOIMVNprmLAWig9+NtyKUcGarL8LdY3nJZt4O3kCL cSx8t3tKUfdpQdYYVl2L+hjdeIgUjQUAfLb/3hcZ2JzJQMtp7E4o9bIGDTVHjRvASj4c RHfw== X-Gm-Message-State: AOAM530vQwAqQtL8awCAFEVDkPaVO2t+mn9rXrgwchMtNdVngxp64M/l D9988k6UO+dVZem2UGMuXzA= X-Google-Smtp-Source: ABdhPJyNWXJfrUYlj01JAE8YT4/vid5r5FpvI7so4d47aZmxG9ewvAugAZO3VPcwBLNhPyrdSu43jw== X-Received: by 2002:a17:90a:46cc:: with SMTP id x12mr4625498pjg.114.1613487767406; Tue, 16 Feb 2021 07:02:47 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id n15sm21960300pgl.31.2021.02.16.07.02.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Feb 2021 07:02:45 -0800 (PST) From: Bin Meng To: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH v2 3/8] hw/sd: sd: Fix CMD30 response type Date: Tue, 16 Feb 2021 23:02:20 +0800 Message-Id: <20210216150225.27996-4-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210216150225.27996-1-bmeng.cn@gmail.com> References: <20210216150225.27996-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=bmeng.cn@gmail.com; helo=mail-pl1-x62b.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, FREEMAIL_FROM=0.001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bin Meng Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng Per the "Physical Layer Specification Version 8.00", table 4-26 (SD mode) and table 7-3 (SPI mode) command descriptions, CMD30 response type is R1, not R1b. Fixes: a1bb27b1e98a ("SD card emulation initial implementation") Signed-off-by: Bin Meng Reviewed-by: Philippe Mathieu-Daudé --- Changes in v2: - new patch: sd: Fix CMD30 response type 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 273bae0a9a..6af821b75b 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1340,7 +1340,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) *(uint32_t *) sd->data = sd_wpbits(sd, req.arg); sd->data_start = addr; sd->data_offset = 0; - return sd_r1b; + return sd_r1; default: break; From patchwork Tue Feb 16 15:02:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 1440953 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=CkhKVX25; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Dg4BD5yfQz9sVJ for ; Wed, 17 Feb 2021 02:09:08 +1100 (AEDT) Received: from localhost ([::1]:39308 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lC1yM-0002Hg-Oz for incoming@patchwork.ozlabs.org; Tue, 16 Feb 2021 10:09:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42114) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lC1sT-00043O-KC; Tue, 16 Feb 2021 10:03:01 -0500 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]:36020) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lC1sO-0006HZ-Nk; Tue, 16 Feb 2021 10:03:01 -0500 Received: by mail-pl1-x631.google.com with SMTP id e9so5624724plh.3; Tue, 16 Feb 2021 07:02:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+rcqRgqBLhMCXJ935hWc3GCd19LXLPeIz9E4wlYQMLM=; b=CkhKVX25ZYMg8Pw/emR2H/jhxzcVZgnZA5XUtOLNSlxbDkD50TQFHTdbsoLoOldzml QbJoOL10KofIFg1GbAtQl4Xlz+nD6xZVQZGBwlCPlIovQ5Oxj5dF58Ks3iPKsGfR8Mph QP5pryrejYOH9G664t+QGLRuEu9J8APXxHuvjp8y5C/tSmsFhoLoA+/Got4Ouxd0ALgv DlRCh69QewHJhY59lF7XHcvaVSgl0D/iE1n+GxllWQO6s/agNTfajhz9e+UNwkWs69UU DqXWjQIfdWsnldeiyZ4EqE5eYlGQhnJ3Hzk5w0SPZOw2NxIwouivs1vn2gMqmmoxnjpq Wjvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+rcqRgqBLhMCXJ935hWc3GCd19LXLPeIz9E4wlYQMLM=; b=pKnUB4iZac3Fhga02xGj7BaqHzkqZK6HOtJYWk75trWL0xYPpKr6iCEHz0AVSW6t9l MA9u0C/SNM9LFUXfbhnwQKYmoM7tv0YGuuGe5LriYCryfOWfejUVnZjAcVj5MlQK5wPQ bCyNdBdjFDv6Kg1i2pyOXiS4Ne56hxuwWJFvjsPDl6PbEyOwEQgwwgzapfinkrAZNKgq MbYJuBYsPhpjA/vn4REyI2WnM0IndkkbEDRONidJZFsrAx9kSIEOg7xRoXBp6kNJf1tR Fi2ZvqM7W1m8tZUqil+REbYZJkRRE4nw/wGJQGet+/0QTFSG/YgPYMiE726zIJPh+7av aEPA== X-Gm-Message-State: AOAM531oTD5kxc1NiKiz8XC6ZrBjxif+IN7OJ1lDg9fbWLEaqLpBtH50 i9RTwBn+kvxnzA6ymKLYz9s= X-Google-Smtp-Source: ABdhPJz/9+2Tp++Gw20yZdXphcsNWZ3K4VSHU9CCHbYHxmEHVOZqWp8qJ6q5OQmHTnThdCs1etZKwQ== X-Received: by 2002:a17:90a:9f94:: with SMTP id o20mr4797273pjp.209.1613487770278; Tue, 16 Feb 2021 07:02:50 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id n15sm21960300pgl.31.2021.02.16.07.02.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Feb 2021 07:02:49 -0800 (PST) From: Bin Meng To: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH v2 4/8] hw/sd: sd: Move the sd_block_{read, write} and macros ahead Date: Tue, 16 Feb 2021 23:02:21 +0800 Message-Id: <20210216150225.27996-5-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210216150225.27996-1-bmeng.cn@gmail.com> References: <20210216150225.27996-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=bmeng.cn@gmail.com; helo=mail-pl1-x631.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, FREEMAIL_FROM=0.001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bin Meng Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng These APIs and macros may be referenced by functions that are currently before them. Move them ahead a little bit. Signed-off-by: Bin Meng Reviewed-by: Philippe Mathieu-Daudé --- (no changes since v1) hw/sd/sd.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 6af821b75b..5bd95304f1 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -739,6 +739,27 @@ void sd_set_cb(SDState *sd, qemu_irq readonly, qemu_irq insert) qemu_set_irq(insert, sd->blk ? blk_is_inserted(sd->blk) : 0); } +static void sd_blk_read(SDState *sd, uint64_t addr, uint32_t len) +{ + trace_sdcard_read_block(addr, len); + if (!sd->blk || blk_pread(sd->blk, addr, sd->data, len) < 0) { + fprintf(stderr, "sd_blk_read: read error on host side\n"); + } +} + +static void sd_blk_write(SDState *sd, uint64_t addr, uint32_t len) +{ + trace_sdcard_write_block(addr, len); + if (!sd->blk || blk_pwrite(sd->blk, addr, sd->data, len, 0) < 0) { + fprintf(stderr, "sd_blk_write: write error on host side\n"); + } +} + +#define BLK_READ_BLOCK(a, len) sd_blk_read(sd, a, len) +#define BLK_WRITE_BLOCK(a, len) sd_blk_write(sd, a, len) +#define APP_READ_BLOCK(a, len) memset(sd->data, 0xec, len) +#define APP_WRITE_BLOCK(a, len) + static void sd_erase(SDState *sd) { int i; @@ -1754,27 +1775,6 @@ send_response: return rsplen; } -static void sd_blk_read(SDState *sd, uint64_t addr, uint32_t len) -{ - trace_sdcard_read_block(addr, len); - if (!sd->blk || blk_pread(sd->blk, addr, sd->data, len) < 0) { - fprintf(stderr, "sd_blk_read: read error on host side\n"); - } -} - -static void sd_blk_write(SDState *sd, uint64_t addr, uint32_t len) -{ - trace_sdcard_write_block(addr, len); - if (!sd->blk || blk_pwrite(sd->blk, addr, sd->data, len, 0) < 0) { - fprintf(stderr, "sd_blk_write: write error on host side\n"); - } -} - -#define BLK_READ_BLOCK(a, len) sd_blk_read(sd, a, len) -#define BLK_WRITE_BLOCK(a, len) sd_blk_write(sd, a, len) -#define APP_READ_BLOCK(a, len) memset(sd->data, 0xec, len) -#define APP_WRITE_BLOCK(a, len) - void sd_write_byte(SDState *sd, uint8_t value) { int i; From patchwork Tue Feb 16 15:02:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 1440950 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=Jy452m6g; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Dg47n1HhQz9sVJ for ; Wed, 17 Feb 2021 02:07:01 +1100 (AEDT) Received: from localhost ([::1]:60338 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lC1wJ-0007nw-2Y for incoming@patchwork.ozlabs.org; Tue, 16 Feb 2021 10:06:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42102) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lC1sT-00042A-5k; Tue, 16 Feb 2021 10:03:01 -0500 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]:51858) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lC1sO-0006Hr-Qr; Tue, 16 Feb 2021 10:03:00 -0500 Received: by mail-pj1-x102d.google.com with SMTP id fa16so5833068pjb.1; Tue, 16 Feb 2021 07:02:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NVLoeOVJp9q7DsPltr9A/wo49yKr2mue6D7BSzcsiEA=; b=Jy452m6ggg5d+NG6FtyXs1w8N63yJDZVjA8c+7t50Cjxhm2XVpPwQowtzCgYZmwTMQ 7RlHY5KY4VrPkZfu8hyqo+ZiHedlmgB0LXDeH8W73vymsSdWdjdWZQnjva+WAlwUizSq 0zYFUHfD93ebc4pF5v6+z0t628muaS1Tn6lpyOKZDliblnsZv5O8j8x1WsFZQMtn7hHZ eLtHa8xlSCyFcVtKxvSatGRjca9gALARyCSgJd0zbvgti9Ky0vMKYkNrklgcu7LZhgTo dEnpx/cvJmni1hl3enGPCSkFSvFKCv0AwWs3qsvf7tiikGcJk6y6C0ARY6UPvAkPZUix ryQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NVLoeOVJp9q7DsPltr9A/wo49yKr2mue6D7BSzcsiEA=; b=OQDJy6G5Lu/E7Eodg9kguGWWYIPMGZ1jd0zrE5dyL6uD0YOFbvYpJxhxpZpxRHiUd7 RjpgvoUxrfyuWHnRLxHjMNLLkYFzt0H5zTaOugbIX0PnIasm3+EjPPqm8hnVbtdM1ass 0WZJr9xN4B4U4ULDDsTrCmF6dpskRvzaI0SdYJn5nHDOemdsmpepbdATORohBSJYTinH DTK+pk5HLjQ/IFGazpHYvqv2DW3roxHuDR9f7Z7l156VOLAaVWjRgm0CiGB1ePAjzu93 tDU68MU6ZLKbCTRGgSuD4AIx2dR8dd5W4btxyACe9A6w85YQl54ruI977QiTAwRkoHZh +fNw== X-Gm-Message-State: AOAM532VMIWvi5h/h08d2dlJVZLBNy6KtHyDZqEYVU1qWXHI43P1RlSz BmvmjsJxmlBeoKcEEKz4vqhRRb2cd1w= X-Google-Smtp-Source: ABdhPJxc/CSQ/WftuQMu0MyS5kT0k3URNpJ/tsAbt46imlIKJkHBN8Par20DYvmYqklAROq+IOt1bA== X-Received: by 2002:a17:90a:7f8a:: with SMTP id m10mr4697346pjl.102.1613487774511; Tue, 16 Feb 2021 07:02:54 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id n15sm21960300pgl.31.2021.02.16.07.02.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Feb 2021 07:02:52 -0800 (PST) From: Bin Meng To: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH v2 5/8] hw/sd: sd: Skip write protect groups check in sd_erase() for high capacity cards Date: Tue, 16 Feb 2021 23:02:22 +0800 Message-Id: <20210216150225.27996-6-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210216150225.27996-1-bmeng.cn@gmail.com> References: <20210216150225.27996-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=bmeng.cn@gmail.com; helo=mail-pj1-x102d.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, FREEMAIL_FROM=0.001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bin Meng Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng High capacity cards don't support write protection hence we should not preform the write protect groups check in sd_erase() for them. Signed-off-by: Bin Meng Reviewed-by: Philippe Mathieu-Daudé --- Changes in v2: - new patch: sd: Skip write protect groups check in sd_erase() for high capacity card hw/sd/sd.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 5bd95304f1..f1f98bdec3 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -765,6 +765,7 @@ static void sd_erase(SDState *sd) int i; uint64_t erase_start = sd->erase_start; uint64_t erase_end = sd->erase_end; + bool sdsc = true; trace_sdcard_erase(sd->erase_start, sd->erase_end); if (sd->erase_start == INVALID_ADDRESS @@ -779,6 +780,7 @@ static void sd_erase(SDState *sd) /* High capacity memory card: erase units are 512 byte blocks */ erase_start *= 512; erase_end *= 512; + sdsc = false; } if (erase_start > sd->size || erase_end > sd->size) { @@ -788,16 +790,20 @@ static void sd_erase(SDState *sd) return; } - erase_start = sd_addr_to_wpnum(erase_start); - erase_end = sd_addr_to_wpnum(erase_end); sd->erase_start = INVALID_ADDRESS; sd->erase_end = INVALID_ADDRESS; sd->csd[14] |= 0x40; - for (i = erase_start; i <= erase_end; i++) { - assert(i < sd->wpgrps_size); - if (test_bit(i, sd->wp_groups)) { - sd->card_status |= WP_ERASE_SKIP; + /* Only SDSC cards support write protect groups */ + if (sdsc) { + erase_start = sd_addr_to_wpnum(erase_start); + erase_end = sd_addr_to_wpnum(erase_end); + + for (i = erase_start; i <= erase_end; i++) { + assert(i < sd->wpgrps_size); + if (test_bit(i, sd->wp_groups)) { + sd->card_status |= WP_ERASE_SKIP; + } } } } From patchwork Tue Feb 16 15:02:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 1440955 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=dfUc2ycr; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Dg4JG4Wk1z9sVJ for ; Wed, 17 Feb 2021 02:14:22 +1100 (AEDT) Received: from localhost ([::1]:52622 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lC23Q-0008If-IR for incoming@patchwork.ozlabs.org; Tue, 16 Feb 2021 10:14:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42140) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lC1sU-000462-ND; Tue, 16 Feb 2021 10:03:02 -0500 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]:52268) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lC1sR-0006JB-Dt; Tue, 16 Feb 2021 10:03:02 -0500 Received: by mail-pj1-x1034.google.com with SMTP id kr16so1168458pjb.2; Tue, 16 Feb 2021 07:02:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3mikx3g/Wkm4cF8mz7QyYzzqf/IjcSyCclPHpXfyoxA=; b=dfUc2ycrItnq7vUg8W6Nb1+51RWA9RIPvV+DBMp1GAv8mGY5Sk+L8okJhHo+/5JmRz NBYvA+JPTMN7nl+LnO1xg2ESDMkra/AW5NGJMCd9v5S/3yqUPyHs+QY4yEZGnOJwOAbM pZWdD2rgB2GXmNalypFZb7IfsuB+BUd7Spqt/Nuc5Q0hO8/iKuze1S96YBr/I2YXqcc1 DvwMwQXTSUGC9yqHSgA+YFQVpG2eizGMkawjnQX1YkZNtk/d0+/VE10lc/RpjZxUbta1 CN/6G097NpFdPwwJ0qdFTd7hAo+alJdXg7YXVxiN2YdExbjddojIthITG7gEr3TR+I20 g8fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3mikx3g/Wkm4cF8mz7QyYzzqf/IjcSyCclPHpXfyoxA=; b=LLp8f/SMwcAUNVHiQX/qvTLWVK7kZXjO0o2yLmCW6CYUkGAXZF/MRidm20EuTYRrbV NIhjoqUMBss5ymtCT6W5AJP4IZ6uRd8SxKp5CBYor7ak9LWDuDzurE5pkz2IIDkYoyNk psC6Qz4NlAYMxotMCSHU6ZVJZspH1zopgHHdSGdU/zCvcuTMpfErFtur6Gd3/IDIPa1W I7nKVRoSOQ05bRKtMABLYiv5QDCH0bkl0FIOaXnlm3NpduCCVjEEWNAgPaGZEX+y4hUd kkJZn28HAuYpP/QKc9y5tMPxUrErR2+urA6lqJPGX6eJxzljcFnQuaEOLZjHVBofCeVH U4cA== X-Gm-Message-State: AOAM532lPDYUd2I2gfsBAMHRGoH9wWSTfOOCR6NZ+XfPJcGpu1EQ0y2J tcTu8C6ckAocbP7zs00DmiONVEBKdjw= X-Google-Smtp-Source: ABdhPJws+YnAe+rzXIc1zBwP/5fcOZH79SzW7360lpLyBwDAlawKtwtjgsmJgjtCBACS0SLOwoAn1Q== X-Received: by 2002:a17:90a:aa8a:: with SMTP id l10mr4789379pjq.86.1613487777380; Tue, 16 Feb 2021 07:02:57 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id n15sm21960300pgl.31.2021.02.16.07.02.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Feb 2021 07:02:57 -0800 (PST) From: Bin Meng To: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH v2 6/8] hw/sd: sd: Actually perform the erase operation Date: Tue, 16 Feb 2021 23:02:23 +0800 Message-Id: <20210216150225.27996-7-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210216150225.27996-1-bmeng.cn@gmail.com> References: <20210216150225.27996-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=bmeng.cn@gmail.com; helo=mail-pj1-x1034.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, FREEMAIL_FROM=0.001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bin Meng Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng At present the sd_erase() does not erase the requested range of card data to 0xFFs. Let's make the erase operation actually happen. Signed-off-by: Bin Meng --- Changes in v2: - honor the write protection bits for SDSC cards hw/sd/sd.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index f1f98bdec3..b386f16fcb 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -766,6 +766,9 @@ static void sd_erase(SDState *sd) uint64_t erase_start = sd->erase_start; uint64_t erase_end = sd->erase_end; bool sdsc = true; + uint64_t wpnum; + uint64_t erase_addr; + int erase_len = 1 << HWBLOCK_SHIFT; trace_sdcard_erase(sd->erase_start, sd->erase_end); if (sd->erase_start == INVALID_ADDRESS @@ -794,17 +797,20 @@ static void sd_erase(SDState *sd) sd->erase_end = INVALID_ADDRESS; sd->csd[14] |= 0x40; - /* Only SDSC cards support write protect groups */ - if (sdsc) { - erase_start = sd_addr_to_wpnum(erase_start); - erase_end = sd_addr_to_wpnum(erase_end); - - for (i = erase_start; i <= erase_end; i++) { - assert(i < sd->wpgrps_size); - if (test_bit(i, sd->wp_groups)) { + memset(sd->data, 0xff, erase_len); + erase_addr = erase_start; + for (i = 0; i <= (erase_end - erase_start) / erase_len; i++) { + if (sdsc) { + /* Only SDSC cards support write protect groups */ + wpnum = sd_addr_to_wpnum(erase_addr); + assert(wpnum < sd->wpgrps_size); + if (test_bit(wpnum, sd->wp_groups)) { sd->card_status |= WP_ERASE_SKIP; + continue; } } + BLK_WRITE_BLOCK(erase_addr, erase_len); + erase_addr += erase_len; } } From patchwork Tue Feb 16 15:02:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 1440956 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=IxK5AWVf; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Dg4MB5Slqz9sVJ for ; Wed, 17 Feb 2021 02:16:54 +1100 (AEDT) Received: from localhost ([::1]:58200 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lC25s-0002FM-OU for incoming@patchwork.ozlabs.org; Tue, 16 Feb 2021 10:16:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42160) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lC1sW-0004AY-CM; Tue, 16 Feb 2021 10:03:04 -0500 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]:46925) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lC1sU-0006Ki-Oy; Tue, 16 Feb 2021 10:03:04 -0500 Received: by mail-pf1-x434.google.com with SMTP id k13so6262349pfh.13; Tue, 16 Feb 2021 07:03:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=De5bwJf/gB6oegTlcXsKYXiBI7vnaHuG8ebxRTJsS0w=; b=IxK5AWVfj1TdsEdGT6rfy7p6YyT+sX1r8p+mtJXmgGN0pbPOJqacjmab0lxVbrOypq 7rEKI8g3zYMuoMyUlMbDg8tW6SSPMsbt4MSWymOEYXWPoX4jRTzpYuAp0NzbpVMcKkxc tgmJP1Pe1DomQQNkdYGTyhhG7AHotzrigXedUWQbawHHjV4ye06Af8wkb7kinxFcsZB/ 3XKTrGYHAO53P7TGaRAqdxZUec7+NNb+UkeOz38VfHx7s9oWRnE8C+Pr3jwUW2DOdQ2S L+b/E86NX46WTQAXID3tVucVwth6gK0dZY7cOKu1jNvAQfCg1C/g6y6O99ldO5e3gy0q yXqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=De5bwJf/gB6oegTlcXsKYXiBI7vnaHuG8ebxRTJsS0w=; b=eKR1QFrOSYOMArLopLIsma36LVKnYXc48c7jfUTHSf+RkZzd3cGHS91cOiuKXrjOsc rnC7EMyFb677/pCeCQ9yZCqKCKH9mXpFxzNCdUE9GKQLm+3mMcy5JDqVmuE7pWF3WrYY Z7nif5sK7Iirmk+Cb6S5K07Y3qXj/UAehxMaVH5cGN16rAVQkJWJND1qWJhSQDIQFSBp MmW236JO1gRfEkJYv7RaDJ1495ap6UQ+cLnLjT4/ySRTP61rYDvHYxv6z2aEO6RPYd4N MM5jtWkwQ2dOFGGajwHnLTu4s2gqTrxN1bbGxVjChJkUTpsUGcmUlniVmQ9WiPoImPeB e3bg== X-Gm-Message-State: AOAM5337Z3ChAz3EqfcHQ2KEiOmH+sGj7UIIzJwTQbLYh4rODVeykJmL 8x3I6VzVWDA0xAfe8SG1tXE= X-Google-Smtp-Source: ABdhPJyVkfpBUo1rHJF/vTBKE/wjmUGZgHFXLbADVxqp4kLn1LNOudXftKtwAZIj3Nf+Bf87cNSxzw== X-Received: by 2002:a63:2214:: with SMTP id i20mr19309470pgi.189.1613487780850; Tue, 16 Feb 2021 07:03:00 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id n15sm21960300pgl.31.2021.02.16.07.02.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Feb 2021 07:03:00 -0800 (PST) From: Bin Meng To: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH v2 7/8] hw/sd: sd: Skip write protect groups check in CMD24/25 for high capacity cards Date: Tue, 16 Feb 2021 23:02:24 +0800 Message-Id: <20210216150225.27996-8-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210216150225.27996-1-bmeng.cn@gmail.com> References: <20210216150225.27996-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=bmeng.cn@gmail.com; helo=mail-pf1-x434.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, FREEMAIL_FROM=0.001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bin Meng Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng High capacity cards don't support write protection hence we should not preform the write protect groups check in CMD24/25 for them. Signed-off-by: Bin Meng Reviewed-by: Philippe Mathieu-Daudé --- Changes in v2: - new patch: sd: Skip write protect groups check in CMD24/25 for high capacity cards hw/sd/sd.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index b386f16fcb..75dc57bf0e 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1274,8 +1274,10 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) sd->data_offset = 0; sd->blk_written = 0; - if (sd_wp_addr(sd, sd->data_start)) { - sd->card_status |= WP_VIOLATION; + if (sd->size <= SDSC_MAX_CAPACITY) { + if (sd_wp_addr(sd, sd->data_start)) { + sd->card_status |= WP_VIOLATION; + } } if (sd->csd[14] & 0x30) { sd->card_status |= WP_VIOLATION; @@ -1827,9 +1829,11 @@ void sd_write_byte(SDState *sd, uint8_t value) sd->card_status |= ADDRESS_ERROR; break; } - if (sd_wp_addr(sd, sd->data_start)) { - sd->card_status |= WP_VIOLATION; - break; + if (sd->size <= SDSC_MAX_CAPACITY) { + if (sd_wp_addr(sd, sd->data_start)) { + sd->card_status |= WP_VIOLATION; + break; + } } } sd->data[sd->data_offset++] = value; From patchwork Tue Feb 16 15:02:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 1440952 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=I/PPjPe4; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Dg49416nNz9sVJ for ; Wed, 17 Feb 2021 02:08:08 +1100 (AEDT) Received: from localhost ([::1]:36620 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lC1xO-0001BQ-1k for incoming@patchwork.ozlabs.org; Tue, 16 Feb 2021 10:08:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42172) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lC1sc-0004Cj-Ck; Tue, 16 Feb 2021 10:03:11 -0500 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]:33344) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lC1sX-0006LH-AH; Tue, 16 Feb 2021 10:03:10 -0500 Received: by mail-pl1-x631.google.com with SMTP id d13so5630221plg.0; Tue, 16 Feb 2021 07:03:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=RX9/mc21LlaINOEfHOR1CYj3YRn+N+tLyleUVvIUn/c=; b=I/PPjPe4HHIvpKcnnhlsXaA8Bx6bbGE4SLdYgJcPtZWItImIBeoRKTtRX2vJBW5D/v 7QoSjffi+jQdhG2oV24hGLmQ5aU1LHwS8lxsR4QjZOjij1XW81cq/NwN24nEJTk7urnL bTR4ij3bOwJTHHNoaEpnd0Px8uWZC4ix0o1zPasCFHo/QNGQtJyXOxmsAkbdGH7ZvY33 5gQha4pxgE1WR3Cydx0mDdsYLJLRHf5kVzr50gcQ9wS+SVmAQAI2ugPchIAwqO4GTaji AFCzxoGG66m8hArkwLa/JrTY+0qd8WvYEcDsf36m7nwlVx5JxT8g5wH2MypFmQ9TS4Bi 3nVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RX9/mc21LlaINOEfHOR1CYj3YRn+N+tLyleUVvIUn/c=; b=qkcmCFYWznDyueLDVzHxXNCzpwoOix+YeaSAOSdcWTYvMJS90TNYQsxfmEQ62Ootfl BY1vj3swTMCWtsvkNg3PvywKcjVgVbODQCxSgzXptC1P0eqv7D69EYUWjLt3UenbdBB8 x4fzVBQu0zC/tcEc7u38g51aBvFSBLvvD4UTQNzwKkzZXKmICRRBkr6rmjubb0Wf0KBO ssayjEPr3U5Qfu4dyzeWVB65hST1GPy9puVfqsH9NwCIF6IsItnAPOT3SY3w5WNo5i/C D8uOcan+SAwYOuekYnFgnU9H+5b5oc3C090DGjwTBdJLzAurWFZ9EeoEye4a+gn3GmkP KxgA== X-Gm-Message-State: AOAM533CykWsfHrecHtuvTewgsGkwTrFh5moAyk2nrs2fmHaRy0TxIFd JMJohyiLuFI1TTgpb4chfYCEsecZ958= X-Google-Smtp-Source: ABdhPJxXRo8jpANODl9iaH8WtstQ6KyrlOyuBFnY/vS8XSXFHCWNcIAIrZLcTMoUWSAdqyDb8A0D0Q== X-Received: by 2002:a17:902:ed0d:b029:e3:76d8:79de with SMTP id b13-20020a170902ed0db02900e376d879demr3227493pld.36.1613487783910; Tue, 16 Feb 2021 07:03:03 -0800 (PST) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id n15sm21960300pgl.31.2021.02.16.07.03.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Feb 2021 07:03:03 -0800 (PST) From: Bin Meng To: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH v2 8/8] hw/sd: sd: Bypass the RCA check for CMD13 in SPI mode Date: Tue, 16 Feb 2021 23:02:25 +0800 Message-Id: <20210216150225.27996-9-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210216150225.27996-1-bmeng.cn@gmail.com> References: <20210216150225.27996-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=bmeng.cn@gmail.com; helo=mail-pl1-x631.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, FREEMAIL_FROM=0.001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bin Meng Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Bin Meng Unlike SD mode, when SD card is working in SPI mode, the argument of CMD13 is stuff bits. Hence we should bypass the RCA check. See "Physical Layer Specification Version 8.00", chapter 7.3.1.3 Detailed Command Description (SPI mode): "The card shall ignore stuff bits and reserved bits in an argument" and Table 7-3 Commands and Arguments (SPI mode): "CMD13 Argument [31:0] stuff bits" Signed-off-by: Bin Meng Reviewed-by: Philippe Mathieu-Daudé --- Changes in v2: - update commit message to include the reference in the spec hw/sd/sd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 75dc57bf0e..6d6da83b4b 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1169,8 +1169,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) case 13: /* CMD13: SEND_STATUS */ switch (sd->mode) { case sd_data_transfer_mode: - if (sd->rca != rca) + if (!sd->spi && sd->rca != rca) { return sd_r0; + } return sd_r1;