From patchwork Thu Jun 24 14:22:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12342299 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B56E0C49EA6 for ; Thu, 24 Jun 2021 14:23:57 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 3CB26613D3 for ; Thu, 24 Jun 2021 14:23:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3CB26613D3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:40296 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwQGq-0008U6-85 for qemu-devel@archiver.kernel.org; Thu, 24 Jun 2021 10:23:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56416) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwQFH-0005h8-Ug; Thu, 24 Jun 2021 10:22:19 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:35788) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwQFG-0008Ca-C2; Thu, 24 Jun 2021 10:22:19 -0400 Received: by mail-wm1-x32e.google.com with SMTP id j11-20020a05600c1c0bb02901e23d4c0977so5749408wms.0; Thu, 24 Jun 2021 07:22:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CELNymjR/8pwAF7b6jcb3aIuZvp+QTfxg6AbWcEaa2w=; b=XNP2q+upJXB8OfRl7+3GITQyL9vqcNFZWNeZbdt1/m3VbIN/h+f6OCOmyvRsX3KhJP 2Y12RVAwaxGcgWcp75lU7/W0AoMybDp5LKldsxQobDHh6uPqdwKCmMYEZ30IXkXQdpmD cnCbuXOKkVue8EABxbA4QnN0ffjXmBPjPPVq0BnFV3Su6e66sapO6VG1sDgynrNzZRDJ /SISFeWCfk+N0Pg0vhVZ9XS6xxOoLnMkhOzqNlXO8IamzyQOqEO4JO89qyyNPqThSB0O 3ge7EHmTHs9ToajywVOIHqMhUdT2sG4Ird1ClaQcqMEy7QECs7R7aFJ5P1ZHJRfhKWMd scbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=CELNymjR/8pwAF7b6jcb3aIuZvp+QTfxg6AbWcEaa2w=; b=LfDgf0Ft/wX4OeEx8eub8CRUu1l0o6b1hJaklpt6LhJOPEb+SWX3BUF+eYehpdQH/3 7MDJymPEDvmQyjMeOi7wajyfYOr/NfC/nWcvDV/yqqM9aCV9hvwMKKJUzZ6umatgutZh djx39vSFP6vtXKdSRfJj2C2JTUg7V0GjnRzRbLxLvy1GV4hPQTHu1jjlCUKI8RU46Fkm Fy6Oy1Xivg2gCKnccxJiE2uVY+YUZeT+IvViPu14TARx0mpn+UxaNmnu3O4MgqQYf+f5 3FjoCVQniCagXm0B7hV59/Ja+eFjydqcIJiSIM+3V3he7okum7OPbYbOmTAxrcr6JWcc Ckgw== X-Gm-Message-State: AOAM533RPu0SP3DqPyfY55KoF757nGWZcTiGCE+MdygVQVAsy6mEbowU FwKVbCpIikz1MzP5o4rh6oMtYPBS7c0CjA== X-Google-Smtp-Source: ABdhPJwyA+pGRoln1P3Q55Z3GpfdFXAoG5WclsqFpS74C8uFmjAP5OR+upxhxL97vV5TyaMhfeYdZw== X-Received: by 2002:a05:600c:c6:: with SMTP id u6mr4593816wmm.146.1624544536469; Thu, 24 Jun 2021 07:22:16 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id g7sm16121wmq.27.2021.06.24.07.22.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jun 2021 07:22:16 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 01/10] hw/sd: When card is in wrong state, log which state it is Date: Thu, 24 Jun 2021 16:22:00 +0200 Message-Id: <20210624142209.1193073-2-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210624142209.1193073-1-f4bug@amsat.org> References: <20210624142209.1193073-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x32e.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: qemu-block@nongnu.org, Andrew Jeffery , Bin Meng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" We report the card is in an inconsistent state, but don't precise in which state it is. Add this information, as it is useful when debugging problems. Since we will reuse this code, extract as sd_invalid_state_for_cmd() helper. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Bin Meng --- hw/sd/sd.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 282d39a7042..288ae059e3d 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -937,6 +937,14 @@ static void sd_lock_command(SDState *sd) sd->card_status &= ~CARD_IS_LOCKED; } +static sd_rsp_type_t sd_invalid_state_for_cmd(SDState *sd, SDRequest req) +{ + qemu_log_mask(LOG_GUEST_ERROR, "SD: CMD%i in a wrong state: %s\n", + req.cmd, sd_state_name(sd->state)); + + return sd_illegal; +} + static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) { uint32_t rca = 0x0000; @@ -1504,8 +1512,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) return sd_illegal; } - qemu_log_mask(LOG_GUEST_ERROR, "SD: CMD%i in a wrong state\n", req.cmd); - return sd_illegal; + return sd_invalid_state_for_cmd(sd, req); } static sd_rsp_type_t sd_app_command(SDState *sd, From patchwork Thu Jun 24 14:22:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12342305 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C845C49EA6 for ; Thu, 24 Jun 2021 14:26:26 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 05767613EA for ; Thu, 24 Jun 2021 14:26:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 05767613EA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:48806 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwQJF-0005i0-3q for qemu-devel@archiver.kernel.org; Thu, 24 Jun 2021 10:26:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56452) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwQFN-0005x7-2j; Thu, 24 Jun 2021 10:22:25 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]:43784) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwQFL-0008Gn-Fd; Thu, 24 Jun 2021 10:22:24 -0400 Received: by mail-wm1-x336.google.com with SMTP id p8-20020a7bcc880000b02901dbb595a9f1so3757618wma.2; Thu, 24 Jun 2021 07:22:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yzWkWf0NgppWHdk+Kcq3Byckt7guuXJzjXQjHJnxzrw=; b=VkVbepToYtfuoggzQfIqBvRAofLtNswHJE5f0nSAD0JOCgLjzIkmQ/yaydHVWt6T9G a9Izja+1JDdgF1rdL7jVP8g0Dq6IFfOjVVhPVv1gxv1onKOHKbhefJ4o6+3fbDT6zcbz TXqLewhHJkeG8JCMiRJHFgjd4RklrEdF6CHAKwMp4Owq7lRKVXt9yV3GuQk5k0MEs+Gu BCK1UpzCh4xrH5pyyb/rJOSAx8OOLy2IjuEz9VnkL8jfUQTELR1lfhUC+0yyahIz2V84 NAcT5VcqDUVGIhotj6o7c4blpAcQnhkcwKfoTgCAXFfn2pV7yIFbvXOXCdUHEaoXUX08 vubg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=yzWkWf0NgppWHdk+Kcq3Byckt7guuXJzjXQjHJnxzrw=; b=X47WLCDh1WBL6IGMI9Q8vT4YeQp0xPpku2MysNDorNwFylVATKlrDYlU6yvp0a7Cz7 qLGAs/0U+G+Xr+SzfbQ2ZlI2FyrXNb33VQmB1FphhMOIcAneEr1bJiH126u/s6z6/2ti zsjvqWcaoG3N0B/+JFHsDY5v5iEjUGq2I3AzFafbJTGcikKF7n41F5In8w2R0t1cVDYs RlIzgGLaNgjFhY5TVR0DHAiNnr84pindLFTxBRzG5zB0SwuwXjXdO6lBGpgjwMNZgkig epJRcp7TVXnQhLyjSr3jZsB5YFJYmiU0MR2kLFwGio0lD+zRicq7mtS58FuJU6ZzLj+4 dWiw== X-Gm-Message-State: AOAM530de+VzXJKaFU4/01S9PttP6GPHencAEbYjqLvQQFWEukxuM8JI U/nO+Fu3gmXrVuYN2L6afqRshQtDZJHJAw== X-Google-Smtp-Source: ABdhPJxI2gZhVXutL5R1WUFC4oiBazKhYOvmZobtprwoMbANFz9X4Z+BXJ0HfpEGZNjfiubB80ZWVw== X-Received: by 2002:a05:600c:19d1:: with SMTP id u17mr4721338wmq.31.1624544541185; Thu, 24 Jun 2021 07:22:21 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id k6sm3051919wms.8.2021.06.24.07.22.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jun 2021 07:22:20 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 02/10] hw/sd: Extract address_in_range() helper, log invalid accesses Date: Thu, 24 Jun 2021 16:22:01 +0200 Message-Id: <20210624142209.1193073-3-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210624142209.1193073-1-f4bug@amsat.org> References: <20210624142209.1193073-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x336.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: qemu-block@nongnu.org, Andrew Jeffery , Bin Meng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Multiple commands have to check the address requested is valid. Extract this code pattern as a new address_in_range() helper, and log invalid accesses as guest errors. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Bin Meng --- hw/sd/sd.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 288ae059e3d..d71ec81c22a 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -937,6 +937,18 @@ static void sd_lock_command(SDState *sd) sd->card_status &= ~CARD_IS_LOCKED; } +static bool address_in_range(SDState *sd, const char *desc, + uint64_t addr, uint32_t length) +{ + if (addr + length > sd->size) { + qemu_log_mask(LOG_GUEST_ERROR, "%s offset %lu > card %lu [%%%u]\n", + desc, addr, sd->size, length); + sd->card_status |= ADDRESS_ERROR; + return false; + } + return true; +} + static sd_rsp_type_t sd_invalid_state_for_cmd(SDState *sd, SDRequest req) { qemu_log_mask(LOG_GUEST_ERROR, "SD: CMD%i in a wrong state: %s\n", @@ -1226,8 +1238,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) switch (sd->state) { case sd_transfer_state: - if (addr + sd->blk_len > sd->size) { - sd->card_status |= ADDRESS_ERROR; + if (!address_in_range(sd, "READ_BLOCK", addr, sd->blk_len)) { return sd_r1; } @@ -1272,8 +1283,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) switch (sd->state) { case sd_transfer_state: - if (addr + sd->blk_len > sd->size) { - sd->card_status |= ADDRESS_ERROR; + if (!address_in_range(sd, "WRITE_BLOCK", addr, sd->blk_len)) { return sd_r1; } @@ -1333,8 +1343,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) switch (sd->state) { case sd_transfer_state: - if (addr >= sd->size) { - sd->card_status |= ADDRESS_ERROR; + if (!address_in_range(sd, "SET_WRITE_PROT", addr, 1)) { return sd_r1b; } @@ -1356,8 +1365,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) switch (sd->state) { case sd_transfer_state: - if (addr >= sd->size) { - sd->card_status |= ADDRESS_ERROR; + if (!address_in_range(sd, "CLR_WRITE_PROT", addr, 1)) { return sd_r1b; } @@ -1832,8 +1840,8 @@ void sd_write_byte(SDState *sd, uint8_t value) case 25: /* CMD25: WRITE_MULTIPLE_BLOCK */ if (sd->data_offset == 0) { /* Start of the block - let's check the address is valid */ - if (sd->data_start + sd->blk_len > sd->size) { - sd->card_status |= ADDRESS_ERROR; + if (!address_in_range(sd, "WRITE_MULTIPLE_BLOCK", + sd->data_start, sd->blk_len)) { break; } if (sd->size <= SDSC_MAX_CAPACITY) { @@ -2005,8 +2013,8 @@ uint8_t sd_read_byte(SDState *sd) case 18: /* CMD18: READ_MULTIPLE_BLOCK */ if (sd->data_offset == 0) { - if (sd->data_start + io_len > sd->size) { - sd->card_status |= ADDRESS_ERROR; + if (!address_in_range(sd, "READ_MULTIPLE_BLOCK", + sd->data_start, io_len)) { return 0x00; } BLK_READ_BLOCK(sd->data_start, io_len); From patchwork Thu Jun 24 14:22:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12342307 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3F6DEC49EA5 for ; Thu, 24 Jun 2021 14:26:27 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id CB532613EA for ; Thu, 24 Jun 2021 14:26:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CB532613EA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:48884 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwQJG-0005lG-0E for qemu-devel@archiver.kernel.org; Thu, 24 Jun 2021 10:26:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56478) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwQFR-00067v-Hp; Thu, 24 Jun 2021 10:22:31 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]:37837) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwQFP-0008Jz-RZ; Thu, 24 Jun 2021 10:22:29 -0400 Received: by mail-wr1-x434.google.com with SMTP id i94so6898588wri.4; Thu, 24 Jun 2021 07:22:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WBraHyjmGr6XeI21kbbyD3nKLW6L5v9q4ad+mz4xwSY=; b=eGZRapmrGlXpGUcDzSRBfIice1Nc5ySOwuBv57ra2GK+BvtDeqS2h9Gl63CzV8qEnj q95fFB4RdM3XkC1yWKTe2wWMwqPaPWQpCqZt3cLhO3B4Y3cxGohl6OEVe7Q9+RsyyTpA upg8tKe2VH0aRX43j2ebhM92/A+kRPK7Gc2/2YxNk/WkGG9zn8eEiJeuU89CH2p4ZhdH Q6xvYVa9Hyejr0ehhCnDyaZDlAi06yWS7EQpWtjDO0HmS+V6COQPbdM/A4VBrQWGJltK cxptBfSXx1w+jaEKtWR60T14ovpmztEqqXxpySJS/A+EFw7PBxman12Q9dvOXKjgI79q 4dJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=WBraHyjmGr6XeI21kbbyD3nKLW6L5v9q4ad+mz4xwSY=; b=iBCL6zr3QlcoJMD+r1LENAH4mGKdFAPfUm694baV99GVnSeEke7pv+FjIrvNydjNKg P1YdM6/dGfOUUnYFgvAmFWTgF9KI7E7sACB2rvtIvuyzi2MdNLv2zAZCmBu4Myv40olt J1v9r7iDGFJaBU4p+N45ixOHzfsfn108VUUfYbWykGnFxGz5/zQknMBB89eCPOaFL1nK 2IEnJ/SSnKCx7rfmOKyo0w2zNq1VeWidASdYt54BlFQA4q3W3xk/3fFwPcNQB4WWwl76 peLmx1duOnhGN8Xspmg+6JhZvIrxxFDPC5NAE/mQ7Y5aoybpt8AdnBuR8Oas3e8PdLP7 CM1g== X-Gm-Message-State: AOAM532p/iomyCIRzIB2T23GfBT5CzZfooYAwFK1HXqsvG7NrwMEK+7n q7//9/dSHgn59jtSeOLgFFUtUWn+ub/7nQ== X-Google-Smtp-Source: ABdhPJzJ7UKKUcLkV8WV49CIiVgT+x9EwHSyNCzlgpXJbQUol1x2SmtOy63OReqWBLq1tepAM632+A== X-Received: by 2002:a5d:6d8b:: with SMTP id l11mr4789719wrs.21.1624544545943; Thu, 24 Jun 2021 07:22:25 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id e11sm3290531wrs.64.2021.06.24.07.22.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jun 2021 07:22:25 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 03/10] hw/sd: Move proto_name to SDProto structure Date: Thu, 24 Jun 2021 16:22:02 +0200 Message-Id: <20210624142209.1193073-4-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210624142209.1193073-1-f4bug@amsat.org> References: <20210624142209.1193073-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x434.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: qemu-block@nongnu.org, Andrew Jeffery , Bin Meng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Introduce a new structure to hold the bus protocol specific fields: SDProto. The first field is the protocol name. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Bin Meng --- hw/sd/sd.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index d71ec81c22a..a1cc8ab0be8 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -88,6 +88,10 @@ enum SDCardStates { sd_disconnect_state, }; +typedef struct SDProto { + const char *name; +} SDProto; + struct SDState { DeviceState parent_obj; @@ -112,6 +116,7 @@ struct SDState { /* Runtime changeables */ + const SDProto *proto; /* Bus protocol */ uint32_t mode; /* current card mode, one of SDCardModes */ int32_t state; /* current card state, one of SDCardStates */ uint32_t vhs; @@ -138,7 +143,6 @@ struct SDState { qemu_irq readonly_cb; qemu_irq inserted_cb; QEMUTimer *ocr_power_timer; - const char *proto_name; bool enable; uint8_t dat_lines; bool cmd_line; @@ -951,8 +955,8 @@ static bool address_in_range(SDState *sd, const char *desc, static sd_rsp_type_t sd_invalid_state_for_cmd(SDState *sd, SDRequest req) { - qemu_log_mask(LOG_GUEST_ERROR, "SD: CMD%i in a wrong state: %s\n", - req.cmd, sd_state_name(sd->state)); + qemu_log_mask(LOG_GUEST_ERROR, "%s: CMD%i in a wrong state: %s\n", + sd->proto->name, req.cmd, sd_state_name(sd->state)); return sd_illegal; } @@ -966,7 +970,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) * However there is no ACMD55, so we want to trace this particular case. */ if (req.cmd != 55 || sd->expecting_acmd) { - trace_sdcard_normal_command(sd->proto_name, + trace_sdcard_normal_command(sd->proto->name, sd_cmd_name(req.cmd), req.cmd, req.arg, sd_state_name(sd->state)); } @@ -1526,7 +1530,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) static sd_rsp_type_t sd_app_command(SDState *sd, SDRequest req) { - trace_sdcard_app_command(sd->proto_name, sd_acmd_name(req.cmd), + trace_sdcard_app_command(sd->proto->name, sd_acmd_name(req.cmd), req.cmd, req.arg, sd_state_name(sd->state)); sd->card_status |= APP_CMD; switch (req.cmd) { @@ -1820,7 +1824,7 @@ void sd_write_byte(SDState *sd, uint8_t value) if (sd->card_status & (ADDRESS_ERROR | WP_VIOLATION)) return; - trace_sdcard_write_data(sd->proto_name, + trace_sdcard_write_data(sd->proto->name, sd_acmd_name(sd->current_cmd), sd->current_cmd, value); switch (sd->current_cmd) { @@ -1976,7 +1980,7 @@ uint8_t sd_read_byte(SDState *sd) io_len = (sd->ocr & (1 << 30)) ? 512 : sd->blk_len; - trace_sdcard_read_data(sd->proto_name, + trace_sdcard_read_data(sd->proto->name, sd_acmd_name(sd->current_cmd), sd->current_cmd, io_len); switch (sd->current_cmd) { @@ -2095,6 +2099,14 @@ void sd_enable(SDState *sd, bool enable) sd->enable = enable; } +static const SDProto sd_proto_spi = { + .name = "SPI", +}; + +static const SDProto sd_proto_sd = { + .name = "SD", +}; + static void sd_instance_init(Object *obj) { SDState *sd = SD_CARD(obj); @@ -2115,7 +2127,7 @@ static void sd_realize(DeviceState *dev, Error **errp) SDState *sd = SD_CARD(dev); int ret; - sd->proto_name = sd->spi ? "SPI" : "SD"; + sd->proto = sd->spi ? &sd_proto_spi : &sd_proto_sd; switch (sd->spec_version) { case SD_PHY_SPECv1_10_VERS From patchwork Thu Jun 24 14:22:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12342313 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3F4ACC49EA5 for ; Thu, 24 Jun 2021 14:28:14 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 030CD613EA for ; Thu, 24 Jun 2021 14:28:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 030CD613EA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:55600 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwQKz-0001rX-7a for qemu-devel@archiver.kernel.org; Thu, 24 Jun 2021 10:28:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56510) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwQFY-0006B4-Mg; Thu, 24 Jun 2021 10:22:36 -0400 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]:42807) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwQFX-0008OV-5m; Thu, 24 Jun 2021 10:22:36 -0400 Received: by mail-wr1-x432.google.com with SMTP id j1so6870589wrn.9; Thu, 24 Jun 2021 07:22:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XdJG7ZIE4+jGMuoiadGQKywOCCIK+dcTPMT2LT+HY3I=; b=PizqlPQ8uywdsFLvuXLK0lfJJ0AhVrrqPVbHHlSOtjmPLZ65gg1I/uCKCpquDEPNW3 oMY/LwXYW1+pyGZTssLvgX89mC71Jy2MtJWVCSlrxDnRnp5Dj3YUyfb+Q05fFSUrIIQW Twsyx62T7n43kFtxOtt27yuWNtvFEOcykN+ZL3aJBvK/sCEEE+r7I7DBG2mMR+enKt4E l1+O4mEfXUbLaYITlsGyqbeAxXKPK+PC8WqLrMPodPNdQG7W7U2DKWlNRzyhFsvvvzJR Tw7IxkNRYpF5/vmnZiu9QjZ4KqJsiKbtEFOznfIQQYestBoXHo4yhQzMMm2lztGOBrqR uRFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=XdJG7ZIE4+jGMuoiadGQKywOCCIK+dcTPMT2LT+HY3I=; b=XQ2c+lzh93PzO/huHArbgiPAMvUDrbMLzMW+4ZaB0YUTzW57Q5fsbJ56p94Ihb4yxk /GWv/SL63tVpw0w5Cw4jgPSLmCg6EQJgRUX+XBTZ6uISShe5htDyJ3RutFrazG1eW9GQ +lprUg9I+RuWscmiDq0V9GHTJohw2ic3LvVeDhPpgHSQcZ2w0lKi3QafAsVDJwogSq4v TlOxg7ubv+V9BHdBnXSqagY6YY2s6MIf5FduCSFgnJ5z7nljZKABaZhpcOQitHkXkYiW LHa0O5ecr11I3CtIyNThUojiuw9DLmjJMH0DlrrDIznYHo2PjxxwjAavS4VPIdrVawt2 CVGA== X-Gm-Message-State: AOAM5339eyp6YM9vK/55jXKf26AY93jclIm0/rmvhJJXwuvgKzK8vRD0 D+Srxg4orQPPQ9g8W608mvRbXl5iJ3D4bg== X-Google-Smtp-Source: ABdhPJyyMUx++MFu9Ddwr7bJVCNwpX8iHwKaCj/f4kznu1Yet9eeB2O4NyD8ZWcRk0djvvOUtLek9Q== X-Received: by 2002:a05:6000:1091:: with SMTP id y17mr4907241wrw.100.1624544552345; Thu, 24 Jun 2021 07:22:32 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id x1sm3202870wmc.31.2021.06.24.07.22.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jun 2021 07:22:31 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 04/10] hw/sd: Introduce sd_cmd_handler type Date: Thu, 24 Jun 2021 16:22:03 +0200 Message-Id: <20210624142209.1193073-5-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210624142209.1193073-1-f4bug@amsat.org> References: <20210624142209.1193073-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::432; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x432.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: qemu-block@nongnu.org, Andrew Jeffery , Bin Meng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Add 2 command handler arrays in SDProto, for CMD and ACMD. Have sd_normal_command() / sd_app_command() use these arrays: if an command handler is registered, call it, otherwise fall back to current code base. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Bin Meng --- hw/sd/sd.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index a1cc8ab0be8..ce1eec0374f 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -88,8 +88,12 @@ enum SDCardStates { sd_disconnect_state, }; +typedef sd_rsp_type_t (*sd_cmd_handler)(SDState *sd, SDRequest req); + typedef struct SDProto { const char *name; + sd_cmd_handler cmd[SDMMC_CMD_MAX]; + sd_cmd_handler acmd[SDMMC_CMD_MAX]; } SDProto; struct SDState { @@ -994,6 +998,10 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) return sd_illegal; } + if (sd->proto->cmd[req.cmd]) { + return sd->proto->cmd[req.cmd](sd, req); + } + switch (req.cmd) { /* Basic commands (Class 0 and Class 1) */ case 0: /* CMD0: GO_IDLE_STATE */ @@ -1533,6 +1541,11 @@ static sd_rsp_type_t sd_app_command(SDState *sd, trace_sdcard_app_command(sd->proto->name, sd_acmd_name(req.cmd), req.cmd, req.arg, sd_state_name(sd->state)); sd->card_status |= APP_CMD; + + if (sd->proto->acmd[req.cmd]) { + return sd->proto->acmd[req.cmd](sd, req); + } + switch (req.cmd) { case 6: /* ACMD6: SET_BUS_WIDTH */ if (sd->spi) { From patchwork Thu Jun 24 14:22:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12342303 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 41579C49EA5 for ; Thu, 24 Jun 2021 14:25:03 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id CD86D613EA for ; Thu, 24 Jun 2021 14:25:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CD86D613EA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:44804 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwQHt-00032t-W6 for qemu-devel@archiver.kernel.org; Thu, 24 Jun 2021 10:25:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56528) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwQFd-0006Ex-N3; Thu, 24 Jun 2021 10:22:42 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]:42807) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwQFb-0008Sz-9V; Thu, 24 Jun 2021 10:22:41 -0400 Received: by mail-wr1-x431.google.com with SMTP id j1so6870939wrn.9; Thu, 24 Jun 2021 07:22:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JzqeSaa2O8XzfBmvOuh3ggwx7gOwVaB9JI3bIWkBQOI=; b=rT+8FbYdzjYOERh5QdxCXMLZM7gJkx7gRMCjFLq7CMOWHKvrn7N/fcn1tUZJ+z2Pm3 pVNIrANLuKwKqfHGusnFGUHliHOeYKyp2B7MZFhXKTRsb9RMHFOTBVt7lQRfwUTNTsF+ hvoZDTkMFynlOplE8lhavYoedsHDr601JPqOk60up2jV4ALwojtAIVSz2qnt/4ihZ2UR wkwj5H3IAwXbSFixJOsFs+d/A+fvDKqZKk/n815PRXIm7pUhfCS7IePMpIMmHwGDgioB 3YR/mLZBGp3B1EdFuYnjDsXgpi6a2nfFoZRU2uJAAVlycNwQllm9Jb42u5MMK9VSfBgr V3sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=JzqeSaa2O8XzfBmvOuh3ggwx7gOwVaB9JI3bIWkBQOI=; b=Bduju9RDx7MfhcWVZhBCIdKKBy6HNItaNZHbtMGwE0RlTZJ+rbQTF9mNPpuvT3Z50y 4mFtTdj79syIK9llcLOpS7pNyTxd8ZJr6o9GWqpbMDHtYr/8/M73Z3Q1PfXmlQ0Q4aE/ cyDHA2sx/wrK3WBlnwY45+GHf7m0qdK0J9UUpZ1VJcy33+pQAS8Ab6DkUZ6lpPioy6/3 AKZQP3oOXF1FBpMkmXMD0iBmq3FW/oB6cJtwCNhvuLoxDCjsuX6b7fCxUoYxj/gfJgl5 4QWX+P96GVXv6miMkEGs+Drbp1gnxl3yFHSZ7rVLZt6ujsqp75w73G1DqAZz95vFlLid uPcg== X-Gm-Message-State: AOAM531UdpoXGKvDtaXhJsU/3S+J+Pt3zlAv5lna67l2MbnTgWwkliSn xwCwuRw1eKApmpdr835E/9TPzzsXLFm3mw== X-Google-Smtp-Source: ABdhPJy2gQrbHUDzdMDCZe9VPbrEyHH+ESNy4jffUGRaycnYvqZFXBqxGLpLjdP1AgEjLd3wctgdrg== X-Received: by 2002:a5d:6208:: with SMTP id y8mr4777971wru.386.1624544557276; Thu, 24 Jun 2021 07:22:37 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id 2sm3286158wrz.87.2021.06.24.07.22.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jun 2021 07:22:36 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 05/10] hw/sd: Add sd_cmd_illegal() handler Date: Thu, 24 Jun 2021 16:22:04 +0200 Message-Id: <20210624142209.1193073-6-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210624142209.1193073-1-f4bug@amsat.org> References: <20210624142209.1193073-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::431; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x431.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: qemu-block@nongnu.org, Andrew Jeffery , Bin Meng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Log illegal commands as GUEST_ERROR. Note: we are logging back the SDIO commands (CMD5, CMD52-54). Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Bin Meng --- hw/sd/sd.c | 57 ++++++++++++++++++++++-------------------------------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index ce1eec0374f..0215bdb3689 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -965,6 +965,14 @@ static sd_rsp_type_t sd_invalid_state_for_cmd(SDState *sd, SDRequest req) return sd_illegal; } +static sd_rsp_type_t sd_cmd_illegal(SDState *sd, SDRequest req) +{ + qemu_log_mask(LOG_GUEST_ERROR, "%s: Unknown CMD%i\n", + sd->proto->name, req.cmd); + + return sd_illegal; +} + static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) { uint32_t rca = 0x0000; @@ -1017,15 +1025,10 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) break; case 1: /* CMD1: SEND_OP_CMD */ - if (!sd->spi) - goto bad_cmd; - sd->state = sd_transfer_state; return sd_r1; case 2: /* CMD2: ALL_SEND_CID */ - if (sd->spi) - goto bad_cmd; switch (sd->state) { case sd_ready_state: sd->state = sd_identification_state; @@ -1037,8 +1040,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) break; case 3: /* CMD3: SEND_RELATIVE_ADDR */ - if (sd->spi) - goto bad_cmd; switch (sd->state) { case sd_identification_state: case sd_standby_state: @@ -1052,8 +1053,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) break; case 4: /* CMD4: SEND_DSR */ - if (sd->spi) - goto bad_cmd; switch (sd->state) { case sd_standby_state: break; @@ -1063,9 +1062,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) } break; - case 5: /* CMD5: reserved for SDIO cards */ - return sd_illegal; - case 6: /* CMD6: SWITCH_FUNCTION */ switch (sd->mode) { case sd_data_transfer_mode: @@ -1081,8 +1077,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) break; case 7: /* CMD7: SELECT/DESELECT_CARD */ - if (sd->spi) - goto bad_cmd; switch (sd->state) { case sd_standby_state: if (sd->rca != rca) @@ -1212,8 +1206,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) break; case 15: /* CMD15: GO_INACTIVE_STATE */ - if (sd->spi) - goto bad_cmd; switch (sd->mode) { case sd_data_transfer_mode: if (sd->rca != rca) @@ -1320,8 +1312,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) break; case 26: /* CMD26: PROGRAM_CID */ - if (sd->spi) - goto bad_cmd; switch (sd->state) { case sd_transfer_state: sd->state = sd_receivingdata_state; @@ -1466,15 +1456,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) } break; - case 52 ... 54: - /* CMD52, CMD53, CMD54: reserved for SDIO cards - * (see the SDIO Simplified Specification V2.0) - * Handle as illegal command but do not complain - * on stderr, as some OSes may use these in their - * probing for presence of an SDIO card. - */ - return sd_illegal; - /* Application specific commands (Class 8) */ case 55: /* CMD55: APP_CMD */ switch (sd->state) { @@ -1515,19 +1496,12 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) break; case 58: /* CMD58: READ_OCR (SPI) */ - if (!sd->spi) { - goto bad_cmd; - } return sd_r3; case 59: /* CMD59: CRC_ON_OFF (SPI) */ - if (!sd->spi) { - goto bad_cmd; - } return sd_r1; default: - bad_cmd: qemu_log_mask(LOG_GUEST_ERROR, "SD: Unknown CMD%i\n", req.cmd); return sd_illegal; } @@ -2114,10 +2088,25 @@ void sd_enable(SDState *sd, bool enable) static const SDProto sd_proto_spi = { .name = "SPI", + .cmd = { + [2 ... 4] = sd_cmd_illegal, + [5] = sd_cmd_illegal, + [7] = sd_cmd_illegal, + [15] = sd_cmd_illegal, + [26] = sd_cmd_illegal, + [52 ... 54] = sd_cmd_illegal, + }, }; static const SDProto sd_proto_sd = { .name = "SD", + .cmd = { + [1] = sd_cmd_illegal, + [5] = sd_cmd_illegal, + [52 ... 54] = sd_cmd_illegal, + [58] = sd_cmd_illegal, + [59] = sd_cmd_illegal, + }, }; static void sd_instance_init(Object *obj) From patchwork Thu Jun 24 14:22:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12342317 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 21286C49EA5 for ; Thu, 24 Jun 2021 14:29:36 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id BB2EA611CB for ; Thu, 24 Jun 2021 14:29:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BB2EA611CB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:60208 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwQMI-0004vO-Tv for qemu-devel@archiver.kernel.org; Thu, 24 Jun 2021 10:29:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56540) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwQFh-0006Os-Hb; Thu, 24 Jun 2021 10:22:45 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]:40546) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwQFf-0008VB-U0; Thu, 24 Jun 2021 10:22:45 -0400 Received: by mail-wr1-x435.google.com with SMTP id g7so2254296wri.7; Thu, 24 Jun 2021 07:22:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZYvuxt0NCh8Bn052rHsHuAYilMYeW5qZBoGZhPd54Lk=; b=skZ0/5UWRUEmo3J7TzGc/hC0AHrRKuifqYpEYYl+mkD5KsAzIwHWlWwnDm7LWCkMwI Pe1la39DWaewBK5wghXe0pIEKfhZXPKHka+QDFTsMYWzlf1fJ6l0iw9vXSh35v0WaNXB vQDO5bqL7ieyE210bJyV6oKjgxDbCEZJnJFdLw6butoRbSyAjKu8qvXyLwGPAbuQUVjX 8OVvGjao1Zs9Wc2+XYbQtSMORkF2GkPKyKofffkJMdmshaYmxddcknJmyielM5o2Gh6x mbpdHQZN8tuOvHdOi83oe9gr0C0sizO0TPlUeLPXvqOItLU0lr2UhM/pCUtZKj9SxlV3 G60g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ZYvuxt0NCh8Bn052rHsHuAYilMYeW5qZBoGZhPd54Lk=; b=ePsyw0BUBjIxA1c9TSxEN+ugis6HST2HJOWT3Q3069hleVaH33Gr9DtVQ0Iq0XF1v9 G3+PouToy+gn1uC02L7xZeWNeAwIs72XBKASmwuc2AZUfr8NRkxTyKHpvq6pl0kKrk/z xVJhIfL/0keF5Iaroyk/ZGss/S/myw2LUYljjyirnetn5g1nvZ4jhV+dxt8YgDllx8aX MrKvjo/YQnq1olm0FXR2b4h7Q2ATayf//i/KSAJo7v7oHAVgMoBhcabhMuMmmLrVF0tm pnCjiOqqG284rPkmSlgV/2LtfH3Xerco22BbzloffvjzMLqKBTkEUcUqI9PzbbBLMd/v KemQ== X-Gm-Message-State: AOAM532SmKGnWAwPK3zI0hZeFLRC3/MMgxkEC8LFy/It73BprSf82F/S dotd58dLJGG6jpGPMaLCSILsjnTSF0+vLg== X-Google-Smtp-Source: ABdhPJycTAx3L7vZcldgxhrMz4ec+gyuuZvY1whVcMOolmHdGuaVqCJ2HrCVt2/OOZniHWBqVG9ivg== X-Received: by 2002:a5d:680c:: with SMTP id w12mr4814139wru.142.1624544562084; Thu, 24 Jun 2021 07:22:42 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id c21sm2942022wme.38.2021.06.24.07.22.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jun 2021 07:22:41 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 06/10] hw/sd: Add sd_cmd_unimplemented() handler Date: Thu, 24 Jun 2021 16:22:05 +0200 Message-Id: <20210624142209.1193073-7-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210624142209.1193073-1-f4bug@amsat.org> References: <20210624142209.1193073-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::435; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x435.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: qemu-block@nongnu.org, Andrew Jeffery , Bin Meng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé --- hw/sd/sd.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 0215bdb3689..2647fd26566 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -973,6 +973,15 @@ static sd_rsp_type_t sd_cmd_illegal(SDState *sd, SDRequest req) return sd_illegal; } +/* Commands that are recognised but not yet implemented. */ +static sd_rsp_type_t sd_cmd_unimplemented(SDState *sd, SDRequest req) +{ + qemu_log_mask(LOG_UNIMP, "%s: CMD%i not implemented\n", + sd->proto->name, req.cmd); + + return sd_illegal; +} + static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) { uint32_t rca = 0x0000; @@ -1522,9 +1531,6 @@ static sd_rsp_type_t sd_app_command(SDState *sd, switch (req.cmd) { case 6: /* ACMD6: SET_BUS_WIDTH */ - if (sd->spi) { - goto unimplemented_spi_cmd; - } switch (sd->state) { case sd_transfer_state: sd->sd_status[0] &= 0x3f; @@ -1655,12 +1661,6 @@ static sd_rsp_type_t sd_app_command(SDState *sd, default: /* Fall back to standard commands. */ return sd_normal_command(sd, req); - - unimplemented_spi_cmd: - /* Commands that are recognised but not yet implemented in SPI mode. */ - qemu_log_mask(LOG_UNIMP, "SD: CMD%i not implemented in SPI mode\n", - req.cmd); - return sd_illegal; } qemu_log_mask(LOG_GUEST_ERROR, "SD: ACMD%i in a wrong state\n", req.cmd); @@ -2096,6 +2096,9 @@ static const SDProto sd_proto_spi = { [26] = sd_cmd_illegal, [52 ... 54] = sd_cmd_illegal, }, + .cmd = { + [6] = sd_cmd_unimplemented, + }, }; static const SDProto sd_proto_sd = { From patchwork Thu Jun 24 14:22:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12342319 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DE6FAC49EA5 for ; Thu, 24 Jun 2021 14:30:46 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id A7264611CB for ; Thu, 24 Jun 2021 14:30:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A7264611CB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:34482 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwQNR-0006dN-MO for qemu-devel@archiver.kernel.org; Thu, 24 Jun 2021 10:30:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56556) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwQFm-0006kP-UW; Thu, 24 Jun 2021 10:22:50 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]:50915) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwQFl-00007q-CW; Thu, 24 Jun 2021 10:22:50 -0400 Received: by mail-wm1-x335.google.com with SMTP id o22so3161182wms.0; Thu, 24 Jun 2021 07:22:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=t2T5QOlfHrf7iG9/cLfyY3m+tgUgjAHfpuMa4aQXuhE=; b=pZK+OxXsw7rulKYQ+x9wUUXA4wmeLQgxKF4hLdhDvnTRLSrdKjTHQfgTMQ9h6kZlzZ JFhbYQThC0R3Bnd93pk+G6dn+HRHzuYR0ecxyqNHiQL4LinmIuzpYJJ59pyaUASPqbms lljuGdAOXtPkCo3vbZ0r6/OsiWgWpa1kIk0M5cdWDD642rpSjJeiwlQ+hbyOaof7g+L6 XfRya3qV5+cf+f3tHqzgPRdgdf6brNxCmeCVTnY6hA/tWMlqDo51SeYqQT5+1CjSPlJb PUc+sxpRsKG96d0/mNOMHfoD04hZxQ+iMDuZc+bUsZjTu8AgGLboc5ybIekhTwmjRsaD yNxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=t2T5QOlfHrf7iG9/cLfyY3m+tgUgjAHfpuMa4aQXuhE=; b=XHRDE4km7zNaeyrJID2ANbU+14v11ANki3xTQR0hWq5Jz0kBalKUWmwPb44sWAzC5W cBXkpYpnehYhLZ8tEfRle2/T8cyPn2qIpV/GuwByrnt1PHrLGLE0tNVJLqnhOeVC1Kh5 n6A83JewlR5zONlSAhviDEGl0wgUw69wrW8tHQISOU+CpfXY5HLvqQez1g6oDw371SPH FRlDeyNr5f6HZhE6hnzwGU0TnUhKqFo4jl5MmvBD+2KgplCShKcu3x35p1tLN3pI/UlT E645aJM6kavQ0jbaUUUJtEtTVAOq2HeRpF/iRtpneszrMK0WdWUrtIx611CkDEB3rvks cQHQ== X-Gm-Message-State: AOAM531a+owy5xVjsROxVQ93PMUP9el8IYgn6Xfpu3QHhaeA1+LYYV5z m1qEc8NJpHofF3s5MruS3dCIpyoxGnMlpA== X-Google-Smtp-Source: ABdhPJwX/d9F44h/H3fJPc3Pl7hu+ZBQexi1MfAoSkjYBSC2yDO48tO9JFqn98OSv5eCiUM0YFeaLg== X-Received: by 2002:a05:600c:4642:: with SMTP id n2mr4605130wmo.101.1624544567562; Thu, 24 Jun 2021 07:22:47 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id 12sm6965377wmj.12.2021.06.24.07.22.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jun 2021 07:22:46 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 07/10] hw/sd: Add sd_cmd_GO_IDLE_STATE() handler Date: Thu, 24 Jun 2021 16:22:06 +0200 Message-Id: <20210624142209.1193073-8-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210624142209.1193073-1-f4bug@amsat.org> References: <20210624142209.1193073-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x335.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: qemu-block@nongnu.org, Andrew Jeffery , Bin Meng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Bin Meng --- hw/sd/sd.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 2647fd26566..3ef6aca89da 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -982,6 +982,16 @@ static sd_rsp_type_t sd_cmd_unimplemented(SDState *sd, SDRequest req) return sd_illegal; } +static sd_rsp_type_t sd_cmd_GO_IDLE_STATE(SDState *sd, SDRequest req) +{ + if (sd->state != sd_inactive_state) { + sd->state = sd_idle_state; + sd_reset(DEVICE(sd)); + } + + return sd->spi ? sd_r1 : sd_r0; +} + static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) { uint32_t rca = 0x0000; @@ -1021,18 +1031,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) switch (req.cmd) { /* Basic commands (Class 0 and Class 1) */ - case 0: /* CMD0: GO_IDLE_STATE */ - switch (sd->state) { - case sd_inactive_state: - return sd->spi ? sd_r1 : sd_r0; - - default: - sd->state = sd_idle_state; - sd_reset(DEVICE(sd)); - return sd->spi ? sd_r1 : sd_r0; - } - break; - case 1: /* CMD1: SEND_OP_CMD */ sd->state = sd_transfer_state; return sd_r1; @@ -2089,6 +2087,7 @@ void sd_enable(SDState *sd, bool enable) static const SDProto sd_proto_spi = { .name = "SPI", .cmd = { + [0] = sd_cmd_GO_IDLE_STATE, [2 ... 4] = sd_cmd_illegal, [5] = sd_cmd_illegal, [7] = sd_cmd_illegal, @@ -2104,6 +2103,7 @@ static const SDProto sd_proto_spi = { static const SDProto sd_proto_sd = { .name = "SD", .cmd = { + [0] = sd_cmd_GO_IDLE_STATE, [1] = sd_cmd_illegal, [5] = sd_cmd_illegal, [52 ... 54] = sd_cmd_illegal, From patchwork Thu Jun 24 14:22:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12342309 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AEFAFC49EA5 for ; Thu, 24 Jun 2021 14:27:21 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 7854F613F2 for ; Thu, 24 Jun 2021 14:27:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7854F613F2 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:52422 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwQK8-0008Ax-Cg for qemu-devel@archiver.kernel.org; Thu, 24 Jun 2021 10:27:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56576) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwQFr-00070M-MX; Thu, 24 Jun 2021 10:22:56 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]:33433) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwQFq-0000Ba-55; Thu, 24 Jun 2021 10:22:55 -0400 Received: by mail-wr1-x42e.google.com with SMTP id d11so6942492wrm.0; Thu, 24 Jun 2021 07:22:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=N8335+v657OPgDsK3i2XqXKBZf94tMX7vRL29WozTPg=; b=CLkN++yy9BXjHS2qH/B5E95OKZWRRN5saro1Wf67AuLEMJo80tNEDmLr7Ors8xQVQW VAFQDjLbYTsCupcrb4H9b6h5INNz+KFfBRqkopRrQ9yAiNbvhfoAQrfizky855FaJK7J lKMu5t6GX7wm5l3rOmcICtIGpR/4QXxhZngR6fadN4/7TkcYbD16qPMQcM0cqDd/M8Ci +pgRt6PIdlj7k432Em8ha+eVISpAvgA1Bl5o84mV4TtBfw0oFMV7hpB+fMKniFj/r63L yOeLo15mF+bAXJOGHZU0TTiyglcT2z0GMP5wpt6tDduShI7Hv3h+SYu0mRgBPMk5uwzv PJvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=N8335+v657OPgDsK3i2XqXKBZf94tMX7vRL29WozTPg=; b=V0wePsEpDVrMtRuY0uW3SFgyyWep1YruyPVirqg6RPOg20Hqn2vYR5vd0IZpiI4SCU vgvdIYlRbOavK8oUkrFEkPsA7sG00+sXI9C8g8ySIYziRLPn58SPTl23Uy3vrzCX/bMH hOjQb2Bbs8jQGmwJ7JJ5I5Y1Nb10RQtvxh+s3iMSnAm+/WK6CvmUZ18qFtGZrFqrLpKY p/uQYl4O6tNaDqVmvDvR9ZgRr2F+s5sE1+U0VTEe/OQA2qcKWzULdDYkp3UvBqluTRo2 tiQN/zl1mcM99xiTyPxewxfhXdghYz+ziA9U3pv6xhCu9gfN9XQxAMgX0Q2z/59TruGf FQJw== X-Gm-Message-State: AOAM533jpagyibLU91sL/A64Ws7V3HP/2np/58nuoWt87JBr+E1iK9X7 ZvX8iHy7yZXfMaKvFf/ouCF9itZTbE+pQA== X-Google-Smtp-Source: ABdhPJx2tqlVjvLafFwiH8HczgnO6SstZ8R4E6rKVkEhI2aXimHZmll8dQtjHLJPJfODTdnMoMrEcg== X-Received: by 2002:adf:e112:: with SMTP id t18mr4847275wrz.46.1624544572324; Thu, 24 Jun 2021 07:22:52 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id n65sm8621361wme.21.2021.06.24.07.22.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jun 2021 07:22:51 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 08/10] hw/sd: Add sd_cmd_SEND_OP_CMD() handler Date: Thu, 24 Jun 2021 16:22:07 +0200 Message-Id: <20210624142209.1193073-9-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210624142209.1193073-1-f4bug@amsat.org> References: <20210624142209.1193073-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42e; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42e.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: qemu-block@nongnu.org, Andrew Jeffery , Bin Meng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé --- hw/sd/sd.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 3ef6aca89da..b63d99f7da0 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -992,6 +992,13 @@ static sd_rsp_type_t sd_cmd_GO_IDLE_STATE(SDState *sd, SDRequest req) return sd->spi ? sd_r1 : sd_r0; } +static sd_rsp_type_t sd_cmd_SEND_OP_CMD(SDState *sd, SDRequest req) +{ + sd->state = sd_transfer_state; + + return sd_r1; +} + static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) { uint32_t rca = 0x0000; @@ -1031,10 +1038,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) switch (req.cmd) { /* Basic commands (Class 0 and Class 1) */ - case 1: /* CMD1: SEND_OP_CMD */ - sd->state = sd_transfer_state; - return sd_r1; - case 2: /* CMD2: ALL_SEND_CID */ switch (sd->state) { case sd_ready_state: @@ -1579,11 +1582,6 @@ static sd_rsp_type_t sd_app_command(SDState *sd, break; case 41: /* ACMD41: SD_APP_OP_COND */ - if (sd->spi) { - /* SEND_OP_CMD */ - sd->state = sd_transfer_state; - return sd_r1; - } if (sd->state != sd_idle_state) { break; } @@ -2088,6 +2086,7 @@ static const SDProto sd_proto_spi = { .name = "SPI", .cmd = { [0] = sd_cmd_GO_IDLE_STATE, + [1] = sd_cmd_SEND_OP_CMD, [2 ... 4] = sd_cmd_illegal, [5] = sd_cmd_illegal, [7] = sd_cmd_illegal, @@ -2097,6 +2096,7 @@ static const SDProto sd_proto_spi = { }, .cmd = { [6] = sd_cmd_unimplemented, + [41] = sd_cmd_SEND_OP_CMD, }, }; From patchwork Thu Jun 24 14:22:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12342301 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2F796C49EA6 for ; Thu, 24 Jun 2021 14:24:56 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id ED8F3613EA for ; Thu, 24 Jun 2021 14:24:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ED8F3613EA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:44118 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwQHm-0002c3-Qw for qemu-devel@archiver.kernel.org; Thu, 24 Jun 2021 10:24:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56602) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwQFw-00077S-ML; Thu, 24 Jun 2021 10:23:02 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]:34594) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwQFu-0000FF-UR; Thu, 24 Jun 2021 10:23:00 -0400 Received: by mail-wr1-x430.google.com with SMTP id e22so6905681wrc.1; Thu, 24 Jun 2021 07:22:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BVxnyFp5X4RvfAz2vnlIan698SUObGu/Nhwh+sEDGac=; b=WhK6ZkefnVJUiJs7Q+1UM0lAaxjsCTUvjhKZuwh/neGP3YjWBpAzJ8VNaaFWi30XBh ysyEj+34Y0sdsRyHG34XkwRL9HNTGzZCu/6EiCzDPCtbleIdBeZJy4Kbut4nlOq7hw+Y sWQ2cQeVdgP2sq+eVoa6bHC0d+7AeLGfzxmOwxCF6TCBqZzixCjXbbDSNEHyv/ZWwa1c UUR2Q6Y0qn6bh7/SibUpHVfamlRsDfnmtuX6cRfOVwumvQmm5nADs2mTFFvS5LmCG7qr sT0TmklwnwvBTZOeESc4uqzEE362xcHgUO6lVB+10dMWAi1GHMmocEpZMDSTBbmww/WJ R+XA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=BVxnyFp5X4RvfAz2vnlIan698SUObGu/Nhwh+sEDGac=; b=FpA7VRMfYojUQssxDO+JFW7R9IpAHOVWtElQ5UbZ4ywFNjIqCPBI6Lyi6YN+QCPHQL oLfplivhFuiFjyylQvtRpZU0MSpXE5cRKXSwqhjgCgVzHEypCrlbFgHYcNKEQxXl5jVc bV6YBb0Yl8gLBqQFtvRphngfLOMhV0CtBFawdwWFw5OSGxy7ylaLk5qyMYjKkr7Do0Ef xj5nu2jEcg6S4u0oKU7gM2HzraecKdVOr4f+HT/y1Gnd0eN9VfQ1qbXmf1McXQXaScDP Q9EpsRabC0xtWI5ZibAHbk3mWjIaLK4xsdCzWK9snyotuC/l9r0tqgqtkvHVCGzBYuiW UDRg== X-Gm-Message-State: AOAM532Y39HKFmDhNzDRAqdM/CHWYKF78IQSSNoJQzq7LdZIVzdYxBs0 JlZNdnf43GQYroXGwr2e4ZWNzTI1YvVQRg== X-Google-Smtp-Source: ABdhPJyZ+JFNU+nEyUcFLAc7xjhTk3YRbK5fq1M1IrZDNGVV7W6mXO27YOd4QSIS0II7V5tsWBl34A== X-Received: by 2002:adf:eacc:: with SMTP id o12mr4845878wrn.3.1624544577177; Thu, 24 Jun 2021 07:22:57 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id 2sm3286882wrz.87.2021.06.24.07.22.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jun 2021 07:22:56 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 09/10] hw/sd: Add sd_cmd_ALL_SEND_CID() handler Date: Thu, 24 Jun 2021 16:22:08 +0200 Message-Id: <20210624142209.1193073-10-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210624142209.1193073-1-f4bug@amsat.org> References: <20210624142209.1193073-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x430.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: qemu-block@nongnu.org, Andrew Jeffery , Bin Meng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Bin Meng --- hw/sd/sd.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index b63d99f7da0..70dde5ae0b8 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -999,6 +999,17 @@ static sd_rsp_type_t sd_cmd_SEND_OP_CMD(SDState *sd, SDRequest req) return sd_r1; } +static sd_rsp_type_t sd_cmd_ALL_SEND_CID(SDState *sd, SDRequest req) +{ + if (sd->state != sd_ready_state) { + return sd_invalid_state_for_cmd(sd, req); + } + + sd->state = sd_identification_state; + + return sd_r2_i; +} + static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) { uint32_t rca = 0x0000; @@ -1038,17 +1049,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) switch (req.cmd) { /* Basic commands (Class 0 and Class 1) */ - case 2: /* CMD2: ALL_SEND_CID */ - switch (sd->state) { - case sd_ready_state: - sd->state = sd_identification_state; - return sd_r2_i; - - default: - break; - } - break; - case 3: /* CMD3: SEND_RELATIVE_ADDR */ switch (sd->state) { case sd_identification_state: @@ -2105,6 +2105,7 @@ static const SDProto sd_proto_sd = { .cmd = { [0] = sd_cmd_GO_IDLE_STATE, [1] = sd_cmd_illegal, + [2] = sd_cmd_ALL_SEND_CID, [5] = sd_cmd_illegal, [52 ... 54] = sd_cmd_illegal, [58] = sd_cmd_illegal, From patchwork Thu Jun 24 14:22:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12342315 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 426E2C49EA6 for ; Thu, 24 Jun 2021 14:28:51 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 0898C613EA for ; Thu, 24 Jun 2021 14:28:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0898C613EA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:58088 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwQLa-0003Vk-96 for qemu-devel@archiver.kernel.org; Thu, 24 Jun 2021 10:28:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56632) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwQG1-0007Cm-Pk; Thu, 24 Jun 2021 10:23:07 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:36508) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lwQFz-0000Jo-Ru; Thu, 24 Jun 2021 10:23:05 -0400 Received: by mail-wm1-x32e.google.com with SMTP id m41-20020a05600c3b29b02901dcd3733f24so6377966wms.1; Thu, 24 Jun 2021 07:23:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=odL4aPXo6G2NwNk7zPq0Akb4FqD4x5f/HsxoI2Fk9O4=; b=nwSHVBxvN19K6hEKysa0F/1wEeCA4nNxofX3HG8Hld4rxyJTjGzK0aLJGTmEcfjPqC Bu9lExkcH94jGRqoFuA63qhnUuuE4KfMxL3ypep6aaGIdWUFi8O2aX6rdqFdMXlBmvGo 5oK58JukEhlXvvObg3GrGw5QOPTkA8jcLHDKBpXOO9gDm80mMOd8OUYLE6Zo4pZ7oJnc JZGEETznUgUM8d22gxKSFdfj52iE1hl4TgcAFthqpeC0TLJVmOE+8p1wHYFGVP17eIXk IhNYH9wwttQfrL9XlhBvzJs9/5BnPlIV7q7Q69DpSaAHPaZmW3DDDMU4ErQg9xlZ8OTV 3pRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=odL4aPXo6G2NwNk7zPq0Akb4FqD4x5f/HsxoI2Fk9O4=; b=S3TSl9TQImZqQi7EaRxjvLWbI8RZiVzCoZm3d/eS3bZk+60dmsn0SprVtTFe3q+6fb ErZfg8dS60zg+tqDksVLHgCGcKxrKJ4n0oAU78d1cAah9zVpkusNWmIhly4dDmIEG5Pv tkbY3ETyotHH069XZXpG7qIxU3zJXGca4kz64Mb2DiEL9ivtIjO5XG51w7hXbhwQSkaw j/FjUxYs4bTHAJqQVx25K17n7q7wa2rtI+N6zmaNGLCQerum/zB86+eVMhM+pEH951v4 3sF0YEf8HGcWtsWywjfal76YvfDJwSVa4zmCcJKfFLJAA0k0DYuUbyFKbn6PN3RmaeFQ ZOvQ== X-Gm-Message-State: AOAM5332xAP+80PREI8N2xO8j5TYX6VT8COvk6oN0d8z/sWJO7cBHShZ ob6lIa79PwA4zRBnnu8Qz/ydlktRKkTkgA== X-Google-Smtp-Source: ABdhPJx5k0R3g7Bl5ZKKkl8eknVsO7NjOreXAuS9lJPJdQA6ayjudyNZbtfx6ajz4XVzxMUidrCF+Q== X-Received: by 2002:a05:600c:a07:: with SMTP id z7mr4509002wmp.83.1624544582166; Thu, 24 Jun 2021 07:23:02 -0700 (PDT) Received: from x1w.. (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id f19sm3287382wre.48.2021.06.24.07.23.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Jun 2021 07:23:01 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 10/10] hw/sd: Add sd_cmd_SEND_RELATIVE_ADDR() handler Date: Thu, 24 Jun 2021 16:22:09 +0200 Message-Id: <20210624142209.1193073-11-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210624142209.1193073-1-f4bug@amsat.org> References: <20210624142209.1193073-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x32e.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: qemu-block@nongnu.org, Andrew Jeffery , Bin Meng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Joel Stanley Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Bin Meng --- hw/sd/sd.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 70dde5ae0b8..43a59b34ee8 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1010,6 +1010,20 @@ static sd_rsp_type_t sd_cmd_ALL_SEND_CID(SDState *sd, SDRequest req) return sd_r2_i; } +static sd_rsp_type_t sd_cmd_SEND_RELATIVE_ADDR(SDState *sd, SDRequest req) +{ + switch (sd->state) { + case sd_identification_state: + case sd_standby_state: + sd->state = sd_standby_state; + sd_set_rca(sd); + return sd_r6; + + default: + return sd_invalid_state_for_cmd(sd, req); + } +} + static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) { uint32_t rca = 0x0000; @@ -1049,19 +1063,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) switch (req.cmd) { /* Basic commands (Class 0 and Class 1) */ - case 3: /* CMD3: SEND_RELATIVE_ADDR */ - switch (sd->state) { - case sd_identification_state: - case sd_standby_state: - sd->state = sd_standby_state; - sd_set_rca(sd); - return sd_r6; - - default: - break; - } - break; - case 4: /* CMD4: SEND_DSR */ switch (sd->state) { case sd_standby_state: @@ -2106,6 +2107,7 @@ static const SDProto sd_proto_sd = { [0] = sd_cmd_GO_IDLE_STATE, [1] = sd_cmd_illegal, [2] = sd_cmd_ALL_SEND_CID, + [3] = sd_cmd_SEND_RELATIVE_ADDR, [5] = sd_cmd_illegal, [52 ... 54] = sd_cmd_illegal, [58] = sd_cmd_illegal,