Received: by 10.223.164.202 with SMTP id h10csp5982438wrb; Tue, 21 Nov 2017 19:55:01 -0800 (PST) X-Google-Smtp-Source: AGs4zMZt++aLGFrrh9Sy4iRE2AxfZZSFt6yBdLIF+756qDsupp3D1PVz8kkl6PrpeKvMqaj7Iah5 X-Received: by 10.159.218.137 with SMTP id w9mr20263356plp.139.1511322901074; Tue, 21 Nov 2017 19:55:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511322901; cv=none; d=google.com; s=arc-20160816; b=dPxKhvEwtMJL4ZQouuSluOxYYpdln3c7iQHBUfAy3QLaTmWq48SRWnP+K8pAZCa0Go rFouRGZwnkm9vAD0JxQ/7P4yJ4yCOlVApPGl3WRQGf3jyAv6z6R/xQcQuEBdteyPVIYK ST4I80nNwc3UW1cPeZLoAQyUqchXuS9qGFPL0lyLjE6LP6H4jC3JXlsFEETZ6z7ewnN8 8k1jh/ibCXOd9PWfC5TBHtvCWqCWZw+oKO1IpcLTk6qtD7u5YZhU/wHLtcoUeK7TJ2RP AaqFWHla+EmgH2s1y7p329Gwy4O9COV2UemZdgsCetc5AJeD0N0JaUx3EOSdEzQbbU38 /f3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=a0uF+/1DZ4i3SFuoJ1MI58fZmHd0yT5Ej1j6IP+Ujko=; b=ThfMEfsGnJ/drcLCLvJ2OxBYgjRIaj7d1FH+8V3CFcU6Z84utgd4x4i1sXl/vtmKER IuS4R1Mx29K7TQ/M5wwbGrFhJoT/Noc8/PS1/EGMA5Fmf/DLBETUAErKozX3jHyq0OvO vZMT3J4I6NwzWzCsMuy1Ap394Lcs0ZKn2jED5Kh12JPk5xRO8n5+5FWAEjnAt2TWTl1X PqywE/NP3y8oiKjouaGexC9EnvzEYvzGp+0Cx7q5TiWCKM1Wyq5jq9/p6VEAbZcIHs6Z wrZ7Y22PPBGPhXtFu3nwWHONZEnI42r442LbaTh6L8tDE6cJF78HCN4LHO+GezUdmXUA rcBg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=HLL0rwft; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q14si12385545pgc.775.2017.11.21.19.54.50; Tue, 21 Nov 2017 19:55:01 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=HLL0rwft; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751517AbdKVDyO (ORCPT + 76 others); Tue, 21 Nov 2017 22:54:14 -0500 Received: from mail-it0-f48.google.com ([209.85.214.48]:42102 "EHLO mail-it0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751409AbdKVDyN (ORCPT ); Tue, 21 Nov 2017 22:54:13 -0500 Received: by mail-it0-f48.google.com with SMTP id n134so4621745itg.1 for ; Tue, 21 Nov 2017 19:54:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=a0uF+/1DZ4i3SFuoJ1MI58fZmHd0yT5Ej1j6IP+Ujko=; b=HLL0rwftVNDALhN/cyEpMz/wad+agl4yrM5QR5Q9tpWiMfX7yEpxPYnCxT6zD5q4MN rOhHZBG//XOJni8suOASluBZoFsk+VVO2znwLPhmxi/0xhzgJNCa/ikH/zUOQ8XGKzvY FjJe7yQ86DFhFP1PAexqhizRfSuMBK/cr15aqz2kW8bQ1E6Kb06SRrUBQ6Yqx5cPn2Z2 jQqxqtjQIYuyWu8jmrtyN6blI0IZYzk/+tJBqZvlczMfI6xEc/o7KuI/TXIL4EJxgc9T UdSxhkQIKN5pB1feauyI1K2RIO/Tx13xCCwNvhFuJdfxNK/MVTTWaK6/C0uYUx95SgJo S15g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=a0uF+/1DZ4i3SFuoJ1MI58fZmHd0yT5Ej1j6IP+Ujko=; b=BJ1reTJWk4q2VsSK8n8ipFXorLjCOXIQwGEPX3NlVZk6hhZemGsHsIaqfaw7vVqhwW zb1nuidMgIxytcZFK/Mug+LUrY8sHPKSGLFoHxJF5HtQUz2YvxV4Zr/7e3HnApf7IV45 pX8X4uyh1xq9cMrBmPmJitp71yYJECKzY3w+4CvOLd0sKA+FrHjdEs05yQX9hno+Rrg0 kmo9PDRLYRt6dqsyJyARpIA4hq4FF/2AP5IGwdYj9fPIq5sHvF8MC69Lv0aSvu90Hk66 +hUIQRBu5cMYKDSLKPWF+N79lX62D0+88/E7f43Ny3GqSXXge5DumA89AHqFwBD+HLL9 y8ew== X-Gm-Message-State: AJaThX488VzU4fYlbaOmC4TfQTjHHeEKVTx0o6YTVsHXIZGRW7luR1IK lOaSsoXdm+CQDnIYPcWZgdr6fg== X-Received: by 10.36.2.19 with SMTP id 19mr5201337itu.76.1511322851816; Tue, 21 Nov 2017 19:54:11 -0800 (PST) Received: from decatoncale.mtv.corp.google.com ([2620:0:1000:1600:4888:13bb:51d8:9a3a]) by smtp.gmail.com with ESMTPSA id n132sm1450921itn.25.2017.11.21.19.54.10 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Tue, 21 Nov 2017 19:54:10 -0800 (PST) Date: Tue, 21 Nov 2017 19:54:08 -0800 From: Benson Leung To: Shawn Nematbakhsh Cc: linux-kernel@vger.kernel.org, lee.jones@linaro.org, jonathanh@nvidia.com, briannorris@chromium.org, bleung@google.com, bleung@chromium.org Subject: Re: [PATCH] mfd: cros ec: spi: Fix "in progress" error signaling Message-ID: <20171122035408.GA121077@decatoncale.mtv.corp.google.com> References: <20170927213527.31416-1-shawnn@chromium.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="OgqxwSJOaUobr8KG" Content-Disposition: inline In-Reply-To: <20170927213527.31416-1-shawnn@chromium.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --OgqxwSJOaUobr8KG Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi Shawn, On Wed, Sep 27, 2017 at 02:35:27PM -0700, Shawn Nematbakhsh wrote: > For host commands that take a long time to process, cros ec can return > early by signaling a EC_RES_IN_PROGRESS result. The host must then poll > status with EC_CMD_GET_COMMS_STATUS until completion of the command. >=20 > None of the above applies when data link errors are encountered. When > errors such as EC_SPI_PAST_END are encountered during command > transmission, it usually means the command was not received by the EC. > Treating such errors as if they were 'EC_RES_IN_PROGRESS' results is > almost always the wrong decision, and can result in host commands > silently being lost. >=20 > Reported-and-tested-by: Jon Hunter > Signed-off-by: Shawn Nematbakhsh Acked-by: Benson Leung > --- > drivers/mfd/cros_ec_spi.c | 52 ++++++++++++++++++++++-------------------= ------ > 1 file changed, 24 insertions(+), 28 deletions(-) >=20 > diff --git a/drivers/mfd/cros_ec_spi.c b/drivers/mfd/cros_ec_spi.c > index c9714072e224..d019b5b00b67 100644 > --- a/drivers/mfd/cros_ec_spi.c > +++ b/drivers/mfd/cros_ec_spi.c > @@ -377,6 +377,7 @@ static int cros_ec_pkt_xfer_spi(struct cros_ec_device= *ec_dev, > u8 *ptr; > u8 *rx_buf; > u8 sum; > + u8 rx_byte; > int ret =3D 0, final_ret; > =20 > len =3D cros_ec_prepare_tx(ec_dev, ec_msg); > @@ -421,25 +422,22 @@ static int cros_ec_pkt_xfer_spi(struct cros_ec_devi= ce *ec_dev, > if (!ret) { > /* Verify that EC can process command */ > for (i =3D 0; i < len; i++) { > - switch (rx_buf[i]) { > - case EC_SPI_PAST_END: > - case EC_SPI_RX_BAD_DATA: > - case EC_SPI_NOT_READY: > - ret =3D -EAGAIN; > - ec_msg->result =3D EC_RES_IN_PROGRESS; > - default: > + rx_byte =3D rx_buf[i]; > + if (rx_byte =3D=3D EC_SPI_PAST_END || > + rx_byte =3D=3D EC_SPI_RX_BAD_DATA || > + rx_byte =3D=3D EC_SPI_NOT_READY) { > + ret =3D -EREMOTEIO; > break; > } > - if (ret) > - break; > } > - if (!ret) > - ret =3D cros_ec_spi_receive_packet(ec_dev, > - ec_msg->insize + sizeof(*response)); > - } else { > - dev_err(ec_dev->dev, "spi transfer failed: %d\n", ret); > } > =20 > + if (!ret) > + ret =3D cros_ec_spi_receive_packet(ec_dev, > + ec_msg->insize + sizeof(*response)); > + else > + dev_err(ec_dev->dev, "spi transfer failed: %d\n", ret); > + > final_ret =3D terminate_request(ec_dev); > =20 > spi_bus_unlock(ec_spi->spi->master); > @@ -508,6 +506,7 @@ static int cros_ec_cmd_xfer_spi(struct cros_ec_device= *ec_dev, > int i, len; > u8 *ptr; > u8 *rx_buf; > + u8 rx_byte; > int sum; > int ret =3D 0, final_ret; > =20 > @@ -544,25 +543,22 @@ static int cros_ec_cmd_xfer_spi(struct cros_ec_devi= ce *ec_dev, > if (!ret) { > /* Verify that EC can process command */ > for (i =3D 0; i < len; i++) { > - switch (rx_buf[i]) { > - case EC_SPI_PAST_END: > - case EC_SPI_RX_BAD_DATA: > - case EC_SPI_NOT_READY: > - ret =3D -EAGAIN; > - ec_msg->result =3D EC_RES_IN_PROGRESS; > - default: > + rx_byte =3D rx_buf[i]; > + if (rx_byte =3D=3D EC_SPI_PAST_END || > + rx_byte =3D=3D EC_SPI_RX_BAD_DATA || > + rx_byte =3D=3D EC_SPI_NOT_READY) { > + ret =3D -EREMOTEIO; > break; > } > - if (ret) > - break; > } > - if (!ret) > - ret =3D cros_ec_spi_receive_response(ec_dev, > - ec_msg->insize + EC_MSG_TX_PROTO_BYTES); > - } else { > - dev_err(ec_dev->dev, "spi transfer failed: %d\n", ret); > } > =20 > + if (!ret) > + ret =3D cros_ec_spi_receive_response(ec_dev, > + ec_msg->insize + EC_MSG_TX_PROTO_BYTES); > + else > + dev_err(ec_dev->dev, "spi transfer failed: %d\n", ret); > + > final_ret =3D terminate_request(ec_dev); > =20 > spi_bus_unlock(ec_spi->spi->master); > --=20 > 2.12.2 >=20 --=20 Benson Leung Staff Software Engineer Chrome OS Kernel Google Inc. bleung@google.com Chromium OS Project bleung@chromium.org --OgqxwSJOaUobr8KG Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBCgAGBQJaFPTgAAoJEB8J9XsKL+ZYv0cQAI0MbqxHkCneyjhg/8vwlxxT 8Wzw147HO7eiFmIklHv3BinUmk2HhfVH1Wv8RboSylFyUCx57xO4QGECSvF0D5yk JtctDX2f43jr20FNCBmJPga829H2EayvNQ5e5B9gqw2Qm7v84LkUExSHhjphyvRv IxX938duTvPeb1r1VOBHzXd95UWac7vkha8koea8y/6nz6qnEcdKUG5H4/4AKxNn v4N+PJ4ouuqjos/MgxkASUMM0bAHptQbe9twekZt5Af25gNBj8vHV5nfdoeXdhJy McC0HdML3FuTD562VVuOFtqlb/vl4Ow2dNBR0bm0uzpjAjQsTVLUPlZcu/yo6g4D AhLwmVvIw3ttcetloLT41TJG9+dRBwbCC59DlBM5WS3DgX6KoZSvKxMGi0TlXxxu 3JzCwTlSYag7aBaRXgzRxxQKUuC50vJzw/X1R5xH728eORsQvab7Vi0ElrHUHT8a n0D3FiaBkMoXBeaaliCi4rqmF9vC+m5XeLvpaBFOHY24/YUBfeJYmXBl1So5lYoC VdXgPmTDAiq5++QoFtRBCJruqxNoJ8oIC1ycomn4z8ZBl7ahpd2bv8fTS2fv0Plh bnVDG3WmFZwkeK1Il96VHtA5o+bub17jNgptsqlkaOYUCXBuOUR/tpDhqCF4poFK oZSrFRHaDsoWy63Uq0qV =iE4i -----END PGP SIGNATURE----- --OgqxwSJOaUobr8KG-- From 1584064040990098087@xxx Tue Nov 14 17:39:51 +0000 2017 X-GM-THRID: 1579730367073760625 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread