From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513263355000448.25711913527516; Thu, 14 Dec 2017 06:55:55 -0800 (PST) Received: from localhost ([::1]:41373 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUvM-0002u1-7s for importer@patchew.org; Thu, 14 Dec 2017 09:55:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55095) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUt4-0001N6-KI for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUt3-0000Lf-PA for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:26 -0500 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:44890) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUsy-0000BH-Rh; Thu, 14 Dec 2017 09:53:20 -0500 Received: by mail-pf0-x241.google.com with SMTP id m26so3756437pfj.11; Thu, 14 Dec 2017 06:53:20 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.18 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:18 -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=Xduqlof8RSbyi8r9qMPGqSAd4q4+/VM3I7uumoz45oU=; b=UCe1UDEyPqtI/IZSx+6+TiQ/bQSyBl1RPWoqc6FMVxODvqMSt3anSTehzAafvgijD+ xgavBfC9moNsAAT52nelutBe6Hxc3eT4Yqv3WgXxNoYeloI1RWfqHkRLmVsFflqoQxnZ rwg2AdtqWXKOYZ0DduMk0rA/ZlcBFrx4GgKfEuvh/Ko0L7r32v1J+v34t60caBwqLou8 ZkxthYQamG/raTAxTBHdY2YeabTjBKSo2e5r2e1zqTR+tnq381LFTO6zQk9wf/P2t7Ky buw4hcX0Mi11NfznEDwViRFu7W97Dx0J0KIesJm1VZn9QUEH3kvd3psN8W/fSJyEcu2t 6FIQ== 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=Xduqlof8RSbyi8r9qMPGqSAd4q4+/VM3I7uumoz45oU=; b=CJPClYmS0xhYcgGq4lS2mK7HVybmqej3wxspm7wGRRimOqYrFu2OS3jJBaC3wEMDSM wXvDlHCqmjvwNqy3Z4IOZreDNqD6Ykh7iUingG7RIy/5JjuQEuA9b+rX0wBrq+Y4zuIQ X54KOxkVEvaS7gVHiPjMIy/yThLzeILdJaQeSSdVXw8sm0jaGEKJtwZdB9kur4xZr0HH QkH/I2rorWJNKKnkexx3EmXBhuqW9LWywMSw2l4WB0Yzm74GNPh46TDAZOg7Yp4AuuUy xbD/85q3cPrC0UjfSIhCqZDHAO0kwuGrW3cYwSyxjeBxmEUk5+aJdXSWcgIFq2kJY4w3 naCQ== X-Gm-Message-State: AKGB3mKR+bI7LzVy18zB71aBLwPAT0Uh58QIwsolGFmy7Jz3lnvqSKU3 7KMSoJJTHaIwbq/jf2cNfKI8ExOQ X-Google-Smtp-Source: ACJfBovGPhyg7oVSH+jKWnQBZKkgvIZN+A9IFZ2IQLPAbMv3R0WqfUiUwFGnYA0uu589V+bX2OSPVw== X-Received: by 10.99.7.8 with SMTP id 8mr8889808pgh.264.1513263199284; Thu, 14 Dec 2017 06:53:19 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:41 -0800 Message-Id: <20171214145255.31545-2-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::241 Subject: [Qemu-devel] [PATCH v2 01/15] imx_fec: Do not link to netdev X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Binding to a particular netdev doesn't seem to belong to this layer and should probably be done as a part of board or SoC specific code. Convert all of the users of this IP block to use qdev_set_nic_properties() instead. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Andrey Smirnov --- hw/arm/fsl-imx6.c | 1 + hw/net/imx_fec.c | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index 26fd214004..2ed7146c52 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -385,6 +385,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) spi_table[i].irq)); } =20 + qdev_set_nic_properties(DEVICE(&s->eth), &nd_table[0]); object_property_set_bool(OBJECT(&s->eth), true, "realized", &err); if (err) { error_propagate(errp, err); diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 90e6ee35ba..88b4b049d7 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -1171,8 +1171,6 @@ static void imx_eth_realize(DeviceState *dev, Error *= *errp) =20 qemu_macaddr_default_if_unset(&s->conf.macaddr); =20 - s->conf.peers.ncs[0] =3D nd_table[0].netdev; - s->nic =3D qemu_new_nic(&imx_eth_net_info, &s->conf, object_get_typename(OBJECT(dev)), DEVICE(dev)->id, s); --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513263339713602.9569600586113; Thu, 14 Dec 2017 06:55:39 -0800 (PST) Received: from localhost ([::1]:41367 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUv7-0002eB-Rp for importer@patchew.org; Thu, 14 Dec 2017 09:55:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55074) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUt3-0001MK-TG for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUt3-0000K9-2r for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:25 -0500 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:40468) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUt0-0000DW-8F; Thu, 14 Dec 2017 09:53:22 -0500 Received: by mail-pg0-x243.google.com with SMTP id k15so3549869pgr.7; Thu, 14 Dec 2017 06:53:22 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.19 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:19 -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=gHgUtmN0/rGU/APCPhW0EAHnmsZlsiEW/PZANp51ENA=; b=T0ndEdMNnV7WaRrU+I0GsAMkNpO9GD+jXEKKs5kspeuNe3FpW6FHulidUR7u7/YC+k rcuCcmxy3I56ZeTfYXuOOFmVaDOZ1o3up+INcfZS59MfrYP+N5oVjJ2wdckbrCJrYW+r qmTrA6rMFMEtWON+lfT4phdIlHxsC9QZ5kx6Sr7Z7e5+B1rrdc8vHTGcdtWdE62tJ4Jz mXXe4Xrd0rRHXte8PX6ABHy17mFzD/iexvA6rCN1I/Umf2w88NSYb4UrQXdQRI2+xxfO S+U9Z9tMsHERCwR7dEz+yeYkE9nJh02aiq7lpXqBZw5hD4EKP50tR40oDahPafoAYhkM CUWQ== 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=gHgUtmN0/rGU/APCPhW0EAHnmsZlsiEW/PZANp51ENA=; b=bgACIEs/eZbmBahdgm2Kwo1A9n0e32A5+wRabpeVutqmbiJQUxnlsVVb/RiirWZAqg LLBezPUToe9PI/Nh+gKKkeDobfzMRLkPTYBwbiVqpzIyEqDLJ42K3cbsTyrVxgFUOALe npN4xi6SSLUCjcRxrqCxZM4J3eeVY/o3/IA0ekg5XwBYPvr8OoRE5pS6j2OWtzV++FtB 4+h2Kt7okJ7/B/1qoiI4d0LKXvZWlamEU9HB7S7HeuDm0gNf4sFn/D3wBWQqUiiA6rSm FfDGjxFdJTHLB/4GPnrdhaUp53YYYvxiT50Hl1OJyhpXTDKsyg3ofAJqop0jT7MnzNq8 9Dqg== X-Gm-Message-State: AKGB3mK9aHBdRIFET9ywd6wrhaEPvtLU0Y41u8HyUIqQ8TXTiVOYktoF 6X8NEN5NDcwOlX8luLTMAW98p5FN X-Google-Smtp-Source: ACJfBosgfxRs/hVoOWiyeKblcV6AkOJWIgxwodenDyQKeeJDAgGw6kWP7DKpC2WGt7memO+rLb8y+g== X-Received: by 10.98.197.68 with SMTP id j65mr10039598pfg.176.1513263200919; Thu, 14 Dec 2017 06:53:20 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:42 -0800 Message-Id: <20171214145255.31545-3-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::243 Subject: [Qemu-devel] [PATCH v2 02/15] imx_fec: Refactor imx_eth_enable_rx() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Refactor imx_eth_enable_rx() to have more meaningfull variable name than 'tmp' and to reduce number of logical negations done. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Andrey Smirnov Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/net/imx_fec.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 88b4b049d7..8b2e4b8ffe 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -536,19 +536,19 @@ static void imx_eth_do_tx(IMXFECState *s) static void imx_eth_enable_rx(IMXFECState *s) { IMXFECBufDesc bd; - bool tmp; + bool rx_ring_full; =20 imx_fec_read_bd(&bd, s->rx_descriptor); =20 - tmp =3D ((bd.flags & ENET_BD_E) !=3D 0); + rx_ring_full =3D !(bd.flags & ENET_BD_E); =20 - if (!tmp) { + if (rx_ring_full) { FEC_PRINTF("RX buffer full\n"); } else if (!s->regs[ENET_RDAR]) { qemu_flush_queued_packets(qemu_get_queue(s->nic)); } =20 - s->regs[ENET_RDAR] =3D tmp ? ENET_RDAR_RDAR : 0; + s->regs[ENET_RDAR] =3D rx_ring_full ? 0 : ENET_RDAR_RDAR; } =20 static void imx_eth_reset(DeviceState *d) --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513263695337538.9663380575482; Thu, 14 Dec 2017 07:01:35 -0800 (PST) Received: from localhost ([::1]:41414 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePV0j-0007fj-CL for importer@patchew.org; Thu, 14 Dec 2017 10:01:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55128) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUt6-0001OW-0T for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUt4-0000Nk-VT for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:28 -0500 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:36674) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUt2-0000H0-7F; Thu, 14 Dec 2017 09:53:24 -0500 Received: by mail-pf0-x243.google.com with SMTP id p84so3774381pfd.3; Thu, 14 Dec 2017 06:53:24 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.20 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:21 -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=okFMpTBn3CPHVnnf0sYzsV4tcjnm7uVfAD8Wu4GZgfo=; b=eEIw2cvoDIF0i9IZJRNSkYsErfyvjD9nSSnU96Nm3Zrjp1mlFNDsSvJpxPj4WX7sWQ VHXoXz8o/zYrClw/kDxjqZGI65XpiNC77XsHvl8UMJ9L2lS5eFZvO3ZxgGy3gfrw2W9J MDbREOdnl/LBtUmoRtgf0cEVxdxW9ajtj3tw1qdX++I5+xLUNy+++TWFHhBS7daCLjml ywhMFx6R34ocNRZpg1Qql/Lo6XODIT+4J+wj2tYB/O+JCNgNP0aAp1gcR90CmG5kpw/U RLErOyyjj6NU89PBODRSjwIJR+Ao2m3fW8T4AqH+pjVsvrWGrDPxpPQQqJIDsddIAoPU 5P9w== 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=okFMpTBn3CPHVnnf0sYzsV4tcjnm7uVfAD8Wu4GZgfo=; b=idfae42+0vZ6w2H5UVc7SPth0kt8t4ehdqDfV2YSe1NmRtmE4fYkOkRFxzaBOF+NqU Dx8hIwRa33vxyF/3fyskmiLHUQY3bx8Z0+QxmM+jMbVP7JZs/8rgt7DoAv4MYRXI4xLj OHFh4v9N0jeLGT1Ta73Ml1V8srWBegDLbm3tr+UwXU4+W0izkkCfr1ZoQEIFsRH1YYYr 1t1ScbRQESffu2OuCDYkTxNK/GSu5nC8KIWlLQa+Iamrlk2d47A+UJfLxh49zPGyP//2 dlp9qvaarFVpXR9xwgPgKnrhOF+yky006zC5A56Jr2NMZFh4Cec6fgfqeKmajT+DxXWo qzfA== X-Gm-Message-State: AKGB3mKVnD52ii2hLHSrGkwSKcAwKVIJ6rW8+03V8p2UmwyNxHLSdOZ8 yHUXk5RowYJpIMGEXnwZaNNB2wA2 X-Google-Smtp-Source: ACJfBovTCw2lChInRF799Nem1gck/TTFrvOYqgT8Z+n6DCXEXvJRotpeGG5VBAsbsxxkqtECOa7GxQ== X-Received: by 10.98.17.196 with SMTP id 65mr9971369pfr.35.1513263202653; Thu, 14 Dec 2017 06:53:22 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:43 -0800 Message-Id: <20171214145255.31545-4-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::243 Subject: [Qemu-devel] [PATCH v2 03/15] imx_fec: Change queue flushing heuristics X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_6 Z_629925259 SPT_0 In current implementation, packet queue flushing logic seem to suffer from a deadlock like scenario if a packet is received by the interface before before Rx ring is initialized by Guest's driver. Consider the following sequence of events: 1. A QEMU instance is started against a TAP device on Linux host, running Linux guest, e. g., something to the effect of: qemu-system-arm \ -net nic,model=3Dimx.fec,netdev=3Dlan0 \ netdev tap,id=3Dlan0,ifname=3Dtap0,script=3Dno,downscript=3Dno \ ... rest of the arguments ... 2. Once QEMU starts, but before guest reaches the point where FEC deriver is done initializing the HW, Guest, via TAP interface, receives a number of multicast MDNS packets from Host (not necessarily true for every OS, but it happens at least on Fedora 25) 3. Recieving a packet in such a state results in imx_eth_can_receive() returning '0', which in turn causes tap_send() to disable corresponding event (tap.c:203) 4. Once Guest's driver reaches the point where it is ready to recieve packets it prepares Rx ring descriptors and writes ENET_RDAR_RDAR to ENET_RDAR register to indicate to HW that more descriptors are ready. And at this points emulation layer does this: s->regs[index] =3D ENET_RDAR_RDAR; imx_eth_enable_rx(s); which, combined with: if (!s->regs[ENET_RDAR]) { qemu_flush_queued_packets(qemu_get_queue(s->nic)); } results in Rx queue never being flushed and corresponding I/O event beign disabled. To prevent the problem, change the code to always flush packet queue when ENET_RDAR transitions 0 -> ENET_RDAR_RDAR. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Andrey Smirnov --- hw/net/imx_fec.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 8b2e4b8ffe..eb034ffd0c 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -533,7 +533,7 @@ static void imx_eth_do_tx(IMXFECState *s) } } =20 -static void imx_eth_enable_rx(IMXFECState *s) +static void imx_eth_enable_rx(IMXFECState *s, bool flush) { IMXFECBufDesc bd; bool rx_ring_full; @@ -544,7 +544,7 @@ static void imx_eth_enable_rx(IMXFECState *s) =20 if (rx_ring_full) { FEC_PRINTF("RX buffer full\n"); - } else if (!s->regs[ENET_RDAR]) { + } else if (flush) { qemu_flush_queued_packets(qemu_get_queue(s->nic)); } =20 @@ -807,7 +807,7 @@ static void imx_eth_write(void *opaque, hwaddr offset, = uint64_t value, if (s->regs[ENET_ECR] & ENET_ECR_ETHEREN) { if (!s->regs[index]) { s->regs[index] =3D ENET_RDAR_RDAR; - imx_eth_enable_rx(s); + imx_eth_enable_rx(s, true); } } else { s->regs[index] =3D 0; @@ -930,7 +930,7 @@ static int imx_eth_can_receive(NetClientState *nc) =20 FEC_PRINTF("\n"); =20 - return s->regs[ENET_RDAR] ? 1 : 0; + return !!s->regs[ENET_RDAR]; } =20 static ssize_t imx_fec_receive(NetClientState *nc, const uint8_t *buf, @@ -1020,7 +1020,7 @@ static ssize_t imx_fec_receive(NetClientState *nc, co= nst uint8_t *buf, } } s->rx_descriptor =3D addr; - imx_eth_enable_rx(s); + imx_eth_enable_rx(s, false); imx_eth_update(s); return len; } @@ -1116,7 +1116,7 @@ static ssize_t imx_enet_receive(NetClientState *nc, c= onst uint8_t *buf, } } s->rx_descriptor =3D addr; - imx_eth_enable_rx(s); + imx_eth_enable_rx(s, false); imx_eth_update(s); return len; } --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513263485323773.6915507692366; Thu, 14 Dec 2017 06:58:05 -0800 (PST) Received: from localhost ([::1]:41389 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUxN-0004es-Eb for importer@patchew.org; Thu, 14 Dec 2017 09:57:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55154) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUt6-0001PT-U3 for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUt5-0000PO-Re for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:28 -0500 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:45309) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUt3-0000Ji-CM; Thu, 14 Dec 2017 09:53:25 -0500 Received: by mail-pf0-x241.google.com with SMTP id u19so3752620pfa.12; Thu, 14 Dec 2017 06:53:25 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.22 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:23 -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=o0B8caNespqWoZFU8fH9V1pRE4+ngVW5SMovMv0JMfk=; b=i4M+ywCqIZllH8KbXZJ9cKu6eqQhWd1Uks/sJDlaqr0CjqJtYRMlrnqTTT/vWJDfz9 pyg8cIfNR2Y/CS2dpTpalss1TwtDgG/WJVt1wal5DTEvuC+uzMuZwqua7C5mv5miHGG2 YdFOzr0MW7eKCC2kR7tbd/lfSxXUDussUIwGkhfYCjW8Dc2NX+RUXSj0uZA+RCmKXjBS qyiB5/xjzu99myernsw5/ItSs3lGJXNCVQMeDrp6BinI6kLGJjMX5Qd5+quISWwWzJWb 9x3VceJ9D934Y2sq7dYtlX8MRynYbo1e617tYQd0rtnkNvbzUd3KOyn5L8xOXf937a0e 6RqA== 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=o0B8caNespqWoZFU8fH9V1pRE4+ngVW5SMovMv0JMfk=; b=NQFH9G7RspdUXy+LYTOrov3Wdze5i1s3QDwToizatbGu2ubP6n4c9OtJB9sY8q/Huu teVnJcfE/ej0iW/6l5zfkDDC5gRjrrGT9UMZ5QAuL8bzRBG2DQqKrFXgF9vcXnDBcN94 ZXYh4J/AMc6lohSRPj/HDWq15gU8rz4Ds+Ka+OIZ7i1RAxdqWKB52Q++HyqQW4Fmzfru o+MKDCMjbZHEDB5IKwPh9iBjl7PNAYs5qEcK7Ur/fWazj4wLDv9ch7bdBj1SKXl1Fwsx wKhQntsNINpnDMrNNpW3IwjA7Ue/M/zcD/mAGO7D3/LU4mnPedqm01ZsrmdXoQGux9BL q8VQ== X-Gm-Message-State: AKGB3mKpCTO8gxp/0LudxNAnwWYBZpVs9Bq2dAyGBG/Ke5husHEJuCSE LLxdJgyUiDTjDPtyS9vtmbTHPwD2 X-Google-Smtp-Source: ACJfBosN07KheB6JZHnUrKRtZrn/s7nZ+NkDpZStXMD610PXYnpBtfFJVdABxi6JmRZGtamLRhqVsQ== X-Received: by 10.84.173.1 with SMTP id o1mr9993434plb.135.1513263204084; Thu, 14 Dec 2017 06:53:24 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:44 -0800 Message-Id: <20171214145255.31545-5-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::241 Subject: [Qemu-devel] [PATCH v2 04/15] imx_fec: Move Tx frame buffer away from the stack X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Make Tx frame assembly buffer to be a paort of IMXFECState structure to avoid a concern about having large data buffer on the stack. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Signed-off-by: Andrey Smirnov --- hw/net/imx_fec.c | 22 +++++++++++----------- include/hw/net/imx_fec.h | 3 +++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index eb034ffd0c..56cb72273c 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -405,8 +405,7 @@ static void imx_eth_update(IMXFECState *s) static void imx_fec_do_tx(IMXFECState *s) { int frame_size =3D 0, descnt =3D 0; - uint8_t frame[ENET_MAX_FRAME_SIZE]; - uint8_t *ptr =3D frame; + uint8_t *ptr =3D s->frame; uint32_t addr =3D s->tx_descriptor; =20 while (descnt++ < IMX_MAX_DESC) { @@ -431,8 +430,8 @@ static void imx_fec_do_tx(IMXFECState *s) frame_size +=3D len; if (bd.flags & ENET_BD_L) { /* Last buffer in frame. */ - qemu_send_packet(qemu_get_queue(s->nic), frame, frame_size); - ptr =3D frame; + qemu_send_packet(qemu_get_queue(s->nic), s->frame, frame_size); + ptr =3D s->frame; frame_size =3D 0; s->regs[ENET_EIR] |=3D ENET_INT_TXF; } @@ -456,8 +455,7 @@ static void imx_fec_do_tx(IMXFECState *s) static void imx_enet_do_tx(IMXFECState *s) { int frame_size =3D 0, descnt =3D 0; - uint8_t frame[ENET_MAX_FRAME_SIZE]; - uint8_t *ptr =3D frame; + uint8_t *ptr =3D s->frame; uint32_t addr =3D s->tx_descriptor; =20 while (descnt++ < IMX_MAX_DESC) { @@ -482,13 +480,13 @@ static void imx_enet_do_tx(IMXFECState *s) frame_size +=3D len; if (bd.flags & ENET_BD_L) { if (bd.option & ENET_BD_PINS) { - struct ip_header *ip_hd =3D PKT_GET_IP_HDR(frame); + struct ip_header *ip_hd =3D PKT_GET_IP_HDR(s->frame); if (IP_HEADER_VERSION(ip_hd) =3D=3D 4) { - net_checksum_calculate(frame, frame_size); + net_checksum_calculate(s->frame, frame_size); } } if (bd.option & ENET_BD_IINS) { - struct ip_header *ip_hd =3D PKT_GET_IP_HDR(frame); + struct ip_header *ip_hd =3D PKT_GET_IP_HDR(s->frame); /* We compute checksum only for IPv4 frames */ if (IP_HEADER_VERSION(ip_hd) =3D=3D 4) { uint16_t csum; @@ -498,8 +496,10 @@ static void imx_enet_do_tx(IMXFECState *s) } } /* Last buffer in frame. */ - qemu_send_packet(qemu_get_queue(s->nic), frame, len); - ptr =3D frame; + + qemu_send_packet(qemu_get_queue(s->nic), s->frame, len); + ptr =3D s->frame; + frame_size =3D 0; if (bd.option & ENET_BD_TX_INT) { s->regs[ENET_EIR] |=3D ENET_INT_TXF; diff --git a/include/hw/net/imx_fec.h b/include/hw/net/imx_fec.h index 62ad473b05..67993870a2 100644 --- a/include/hw/net/imx_fec.h +++ b/include/hw/net/imx_fec.h @@ -252,6 +252,9 @@ typedef struct IMXFECState { uint32_t phy_int_mask; =20 bool is_fec; + + /* Buffer used to assemble a Tx frame */ + uint8_t frame[ENET_MAX_FRAME_SIZE]; } IMXFECState; =20 #endif --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513263387506891.1249178062465; Thu, 14 Dec 2017 06:56:27 -0800 (PST) Received: from localhost ([::1]:41374 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUvo-0003I1-Lh for importer@patchew.org; Thu, 14 Dec 2017 09:56:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55203) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUtA-0001TJ-B2 for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUt8-0000UZ-OQ for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:32 -0500 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:41641) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUt5-0000N0-1E; Thu, 14 Dec 2017 09:53:27 -0500 Received: by mail-pf0-x244.google.com with SMTP id j28so3763294pfk.8; Thu, 14 Dec 2017 06:53:26 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.24 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:24 -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=kMa8TkEq3z2Qro3C9PTAL2M+BRkC3wXbaQ/oArzF9YE=; b=Z/y+rmMY6Om7+dzLEqIq3dDatdl3V5YwA1P+0woypwiH6tKqOxoGItoQxAOqEPYnVZ PGMIQwDjaRkeWm0VpDZbAfh1xf9LIWIny1r+oxumM8ZxEbyCSevEneU05Xjsb9i5otuC mvumptJdvtIL3+J+Q9y0c8ObPH/YXWpGdB+XPSDkuJwsHI6zQ7X6cEi+gquIOqhpUaVH PdBSCvub+4jO+DWiU0fL29WWMQx1eiBBy27azjB1JEDzbHolNAxX+wKKXwNKJfcGF+PX 3kPD6oWkNgQYSFaVVB9VNLjGyNiJf2tJTFX807QFLWkpI/UtU7kx4aU1sXyCnwh7khGU 58uQ== 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=kMa8TkEq3z2Qro3C9PTAL2M+BRkC3wXbaQ/oArzF9YE=; b=rqWeEfg7JFXmGK9HLRQ54D5ZIJZUTNdW0MmbKHTyBOxam9EPfD4ZPe+vaSQsZDMko3 0TEs+kj/aMKd+l9f6nEydDz5T/D+XaMszYfJ2Q7SH1KKiGSvzt0SRSvrFqNFIrTDp9YM 1cW5mG3wd2Ii3aSewLaJX74N61QQwKHlM4VDUEL++rJ9doblg1sTJBcDVBvX6nDkASFd AMJeBFStJiaFZSnuzYIlui0eDxPqOsTfK9R7pBHFy/SZ/76o+KR1eg53xCFTwCQezN0S m2TrrgE5ouZAJYKHF3GEvSKztGyNA0vazj0xUToVJVCqqWYsf6fX2pCt61GNvUj8Y0RE sQiQ== X-Gm-Message-State: AKGB3mJEEPgKxTSazS7woNv9+7bS93pJjRR4xxnvDHolne9MPOMs70r1 jOzLwPsQZ8N/yvFTNaeDO+T3YN7x X-Google-Smtp-Source: ACJfBouPAJOpKKuKJIWAtDCmvysPcNfNxcHKRouDN1J+7Ii85bFaCJTc6RAxskpg01LEcTgCcUJvBg== X-Received: by 10.159.207.136 with SMTP id z8mr9924843plo.223.1513263205697; Thu, 14 Dec 2017 06:53:25 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:45 -0800 Message-Id: <20171214145255.31545-6-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::244 Subject: [Qemu-devel] [PATCH v2 05/15] imx_fec: Use ENET_FTRL to determine truncation length X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Frame truncation length, TRUNC_FL, is determined by the contents of ENET_FTRL register, so convert the code to use it instead of a hardcoded constant. To avoid the case where TRUNC_FL is greater that ENET_MAX_FRAME_SIZE, increase the value of the latter to its theoretical maximum of 16K. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Signed-off-by: Andrey Smirnov --- hw/net/imx_fec.c | 4 ++-- include/hw/net/imx_fec.h | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 56cb72273c..50da91bf9e 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -1052,8 +1052,8 @@ static ssize_t imx_enet_receive(NetClientState *nc, c= onst uint8_t *buf, crc_ptr =3D (uint8_t *) &crc; =20 /* Huge frames are truncted. */ - if (size > ENET_MAX_FRAME_SIZE) { - size =3D ENET_MAX_FRAME_SIZE; + if (size > s->regs[ENET_FTRL]) { + size =3D s->regs[ENET_FTRL]; flags |=3D ENET_BD_TR | ENET_BD_LG; } =20 diff --git a/include/hw/net/imx_fec.h b/include/hw/net/imx_fec.h index 67993870a2..a390d704a6 100644 --- a/include/hw/net/imx_fec.h +++ b/include/hw/net/imx_fec.h @@ -86,7 +86,6 @@ #define ENET_TCCR3 393 #define ENET_MAX 400 =20 -#define ENET_MAX_FRAME_SIZE 2032 =20 /* EIR and EIMR */ #define ENET_INT_HB (1 << 31) @@ -155,6 +154,8 @@ #define ENET_RCR_NLC (1 << 30) #define ENET_RCR_GRS (1 << 31) =20 +#define ENET_MAX_FRAME_SIZE (1 << ENET_RCR_MAX_FL_LENGTH) + /* TCR */ #define ENET_TCR_GTS (1 << 0) #define ENET_TCR_FDEN (1 << 2) --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513263895216191.39515768873093; Thu, 14 Dec 2017 07:04:55 -0800 (PST) Received: from localhost ([::1]:41440 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePV40-0001pQ-Gy for importer@patchew.org; Thu, 14 Dec 2017 10:04:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55231) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUtB-0001Uc-BG for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUtA-0000Xd-Gn for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:33 -0500 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:34052) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUt6-0000Pz-Jr; Thu, 14 Dec 2017 09:53:28 -0500 Received: by mail-pg0-x242.google.com with SMTP id j4so3563776pgp.1; Thu, 14 Dec 2017 06:53:28 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:26 -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=uZAjdu/ViWnu/aZpzw5alaZY2904L6KQcjj4bJJYMJ0=; b=E1JGzDxX1bhbaP6jeO8zp455Vr4BK0VaXqqZYyoq2/45CAQWOzmdQTeVnd+3M2zif9 LN/zAjILSiodVwZbF2q3wy9uYFap5RAXrVoFOyrppL91U+dIW+Xwfugl4OMjzNyU21ke wQZttBlEPRn47Pxdd3z1iRaGrRxsWDOV3e3gGhNVfP9o3NnX8B24d7uaGM2c2XTXjwIK 4w0yuTrfBa7Db6ZzXaWqzN+kmPyYVjcZjGwHu4i+iT/ps+P+V6xc7U7uMlZykpnO15Xv GKG/exUOUFpoN15vc+sjjXgMaUdtdFYMK5nsJplfw228/zwoW5FFB0OEafkcMIaDMf00 bTfg== 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=uZAjdu/ViWnu/aZpzw5alaZY2904L6KQcjj4bJJYMJ0=; b=JdSSvC3q4TCpa1Bo4sIh9jTVhxqlGNpZbJCs0nWqQfoMMGkqyL2XHzLav7oQWNVr62 dmWaYLJ0QL5OSRGk2gNJjPcOgli8P+ej+14odKXYS1B6aiO4Xj1eP7ev4071Ow1pU8pQ cw6tj103DdSIM+0p2PD3kF8mjmgOUG/MH5dvRQz6hlGY2bOVOtpA8qblHgCswaEC0HtU zWBn4kEVM/iQexU+IzXOgUOKjTJHztJ5NITsU/+m9WecC3oY4cTQqNzZZaTtBYN2ZGSH zyeQbm/o2ZQAhTVxJJejNKCnVKjyIIy0q+fe0wBRPkZkWvqNxhq6p9UX1EyfO01Z9wt1 uTFA== X-Gm-Message-State: AKGB3mKXQz/91n5Cfjqk5kjIP8IRq8Ada7R+ywnFqWMq2y4EIl933cmH nSNna/iho5LTxRD7y7vKXBcRAJ5y X-Google-Smtp-Source: ACJfBosapMHmgMSaqNSyhRgRlI4lMNOHt57Qcp17vpBWKSvxQdwU+ZLGZlwYImRUHhzlTiSrZRTLIQ== X-Received: by 10.84.174.129 with SMTP id r1mr9933657plb.337.1513263207250; Thu, 14 Dec 2017 06:53:27 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:46 -0800 Message-Id: <20171214145255.31545-7-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::242 Subject: [Qemu-devel] [PATCH v2 06/15] imx_fec: Use MIN instead of explicit ternary operator X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Andrey Smirnov --- hw/net/imx_fec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 50da91bf9e..6feda18742 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -1076,7 +1076,7 @@ static ssize_t imx_enet_receive(NetClientState *nc, c= onst uint8_t *buf, TYPE_IMX_FEC, __func__); break; } - buf_len =3D (size <=3D s->regs[ENET_MRBR]) ? size : s->regs[ENET_M= RBR]; + buf_len =3D MIN(size, s->regs[ENET_MRBR]); bd.length =3D buf_len; size -=3D buf_len; =20 --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513264055852568.3715292379363; Thu, 14 Dec 2017 07:07:35 -0800 (PST) Received: from localhost ([::1]:41470 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePV6Z-0003wZ-RE for importer@patchew.org; Thu, 14 Dec 2017 10:07:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55375) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUtH-0001Zb-Dl for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUtB-0000ZU-IE for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:39 -0500 Received: from mail-pg0-x244.google.com ([2607:f8b0:400e:c05::244]:46612) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUt8-0000Sd-0k; Thu, 14 Dec 2017 09:53:30 -0500 Received: by mail-pg0-x244.google.com with SMTP id b11so3542002pgu.13; Thu, 14 Dec 2017 06:53:29 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.27 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:28 -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=E08NgLB+iZxe+FQ8+m6OK1RQdn04+8BR1I1ixtM1hXU=; b=lLCRpikG97b3gKaCARhwPrgytRxH5OCNzTyNiClaEm6wmkp6SJ6tlfIBNYugXDZC26 oL9LzS/34137/UxAFw4wdc+yencF/fkfNQz/q8R/BhYdFRQ/xcQkxNyjwCmAEemtJx4U osdTVCp/S/FcC+zmf2XQhmdkApy9vguqUNUehFAZC7vwRa2ieSwNCU7VUSDrvUFXhZ17 WvDn+AwtIJChIpZhjg6Fm/C9jLt6qzvBOuYhv1KxUCy3tqIXm3zvddL/R6TKW6d6uA4C LdOe7IFlq74lchv8XcU4KtsnZ2AeSjKOYzW+87lbLETB/DxAVTuXMFszAFNiVucpdbgD XGSQ== 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=E08NgLB+iZxe+FQ8+m6OK1RQdn04+8BR1I1ixtM1hXU=; b=Q4hfvFB5HNizNOA2v7oFGs8gx2hAnuHKDmCpK2Q28RbhHNmJ22qDZJgJWlgcgOXEfl y3PDemXU81cEGcpnziDC5z16km/r0BNXq0KfywiCYVuaKPn2FQIjr8He2y/+Ex2lXTJ/ Z/9x2GXf5Hjd1MtFLXwLz5xUtrgR1a4VHzRBbt72mKabrw5rJ2HxwkhwwV2nkbEGwQ7Y jIQ0aW22+BYrYRgwlB1y5LCRzSxjQ7u32jvT/h0H2u3T2jaXOeO0QCClm5UYUsvlTUsq JqDNvJBuf8bM5aeTa8G55h5p9m2Tn+o7AXxY8ywalmQ0bYtLH8+BzB/Z6v/b6HpSi+ZB 8Ylw== X-Gm-Message-State: AKGB3mI3VqDNVU/HkmYIl4zkODifk9eVoIHYy56QOTJeTQOTaDM00TRr x9O67yAKXEjDcGLqsHFVlZnxFiEv X-Google-Smtp-Source: ACJfBosl9F+a3NSy9zq+uAZEj5T7jZub3Afv5zCiRnXij9q4KJRSAlyntn/+38ovZUpdLYF2XLfNow== X-Received: by 10.99.107.197 with SMTP id g188mr8701983pgc.295.1513263208628; Thu, 14 Dec 2017 06:53:28 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:47 -0800 Message-Id: <20171214145255.31545-8-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::244 Subject: [Qemu-devel] [PATCH v2 07/15] imx_fec: Emulate SHIFT16 in ENETx_RACC X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Needed to support latest Linux kernel driver which relies on that functionality. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Andrey Smirnov --- hw/net/imx_fec.c | 23 +++++++++++++++++++++++ include/hw/net/imx_fec.h | 2 ++ 2 files changed, 25 insertions(+) diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 6feda18742..825c879a28 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -1037,6 +1037,7 @@ static ssize_t imx_enet_receive(NetClientState *nc, c= onst uint8_t *buf, uint8_t *crc_ptr; unsigned int buf_len; size_t size =3D len; + bool shift16 =3D s->regs[ENET_RACC] & ENET_RACC_SHIFT16; =20 FEC_PRINTF("len %d\n", (int)size); =20 @@ -1051,6 +1052,10 @@ static ssize_t imx_enet_receive(NetClientState *nc, = const uint8_t *buf, crc =3D cpu_to_be32(crc32(~0, buf, size)); crc_ptr =3D (uint8_t *) &crc; =20 + if (shift16) { + size +=3D 2; + } + /* Huge frames are truncted. */ if (size > s->regs[ENET_FTRL]) { size =3D s->regs[ENET_FTRL]; @@ -1087,6 +1092,24 @@ static ssize_t imx_enet_receive(NetClientState *nc, = const uint8_t *buf, buf_len +=3D size - 4; } buf_addr =3D bd.data; + + if (shift16) { + /* + * If SHIFT16 bit of ENETx_RACC register is set we need to + * align the payload to 4-byte boundary. + */ + const uint8_t zeros[2] =3D { 0 }; + + dma_memory_write(&address_space_memory, buf_addr, + zeros, sizeof(zeros)); + + buf_addr +=3D sizeof(zeros); + buf_len -=3D sizeof(zeros); + + /* We only do this once per Ethernet frame */ + shift16 =3D false; + } + dma_memory_write(&address_space_memory, buf_addr, buf, buf_len); buf +=3D buf_len; if (size < 4) { diff --git a/include/hw/net/imx_fec.h b/include/hw/net/imx_fec.h index a390d704a6..af0840a0fa 100644 --- a/include/hw/net/imx_fec.h +++ b/include/hw/net/imx_fec.h @@ -170,6 +170,8 @@ #define ENET_TWFR_TFWR_LENGTH (6) #define ENET_TWFR_STRFWD (1 << 8) =20 +#define ENET_RACC_SHIFT16 BIT(7) + /* Buffer Descriptor. */ typedef struct { uint16_t length; --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513263953802889.1215244628897; Thu, 14 Dec 2017 07:05:53 -0800 (PST) Received: from localhost ([::1]:41446 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePV4s-0002Tq-1U for importer@patchew.org; Thu, 14 Dec 2017 10:05:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55389) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUtH-0001Zw-P9 for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUtF-0000jK-Ns for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:39 -0500 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:33515) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUt9-0000Uq-CQ; Thu, 14 Dec 2017 09:53:31 -0500 Received: by mail-pf0-x243.google.com with SMTP id y89so3780034pfk.0; Thu, 14 Dec 2017 06:53:31 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.28 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:29 -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=LhiP3hpi/ZVNEVgWfo4oqYY/H6ld3r0Ks8yRmNB8xhA=; b=X/lE9ic/35L6Y+j4MdrLas5mlnDyAEUbcMKX5xUN9GzCRCYs9Z2DvEVunjtxbp1ClP ErOmKkform+pa2hI3/dgpaccCgjLEES/k1arusWBKZsW4OpxjgqgawsAqQqDFEuNw8PM 0Uy+3MWXEIYzGWdakPPljCUJwkv2a+n5N/HbwbNLRDMuCwx9mnpxTxsk7hItz3HBHDhp 8UMuUIX575Ak1gntKYFdOQ2EMsemRCiVgD4EJx5LQTwd4s1I58LQTmwwNZGo9uy5+ySc MyuljBAHZIUFjXKoCmrCSVYPMMSXc1bgZgWW6gKmpeH/ZFBtizh5C0pgptMsgiiBffL0 leBQ== 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=LhiP3hpi/ZVNEVgWfo4oqYY/H6ld3r0Ks8yRmNB8xhA=; b=LRwPrxCiv/sLN9kbMDkTSO5zSHYLzPX6IeNzTZNWj57czJGtKXe8Fp3oiBVg325J16 HTIUtwD8vdFiKyn/um6b8zeV1RcrKHeAdz9qyfHDS7M3rKTgR6fxHQce4Lsdf/7LowR4 RL0Pmiu5oVt2HzpO2iaFRL/yk1a6kLIO/CP61xWqg5F1PjRTTSb5S2AufzBd5YS1XdRT ehujkWt/n76s1jE0bpU+ppYbnCNPdoCAb6GiAWadbkhwvlBL/dERCpxgqc6g7/sExQZ2 J4NDZvo4GhsksDCZYD6aYeTRIY2Z+diN90Sct+XN+Mruyd2HuVRt1d1EQ5hONJzi574M Bxzw== X-Gm-Message-State: AKGB3mIBzSCG+mSMniv7dS9b1Z1VbXgiyM9s2SB0TBBKbHvkTgOFjj4g lN7irsawUkz3QRnIcV1kgKihUmWm X-Google-Smtp-Source: ACJfBoukO27tP3NxlGvuUFa44/rFWIP5Z8gkkY50/jlACJSQNMHsA1FKphFwZq55+tafSgwa4zYDAw== X-Received: by 10.101.64.205 with SMTP id u13mr8772519pgp.44.1513263210074; Thu, 14 Dec 2017 06:53:30 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:48 -0800 Message-Id: <20171214145255.31545-9-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::243 Subject: [Qemu-devel] [PATCH v2 08/15] imx_fec: Add support for multiple Tx DMA rings X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 More recent version of the IP block support more than one Tx DMA ring, so add the code implementing that feature. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Andrey Smirnov --- hw/net/imx_fec.c | 133 ++++++++++++++++++++++++++++++++++++++++---= ---- include/hw/net/imx_fec.h | 18 ++++++- 2 files changed, 130 insertions(+), 21 deletions(-) diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 825c879a28..77d27f763e 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -196,6 +196,31 @@ static const char *imx_eth_reg_name(IMXFECState *s, ui= nt32_t index) } } =20 +/* + * Versions of this device with more than one TX descriptor save the + * 2nd and 3rd descriptors in a subsection, to maintain migration + * compatibility with previous versions of the device that only + * supported a single descriptor. + */ +static bool imx_eth_is_multi_tx_ring(void *opaque) +{ + IMXFECState *s =3D IMX_FEC(opaque); + + return s->tx_ring_num > 1; +} + +static const VMStateDescription vmstate_imx_eth_txdescs =3D { + .name =3D "imx.fec/txdescs", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D imx_eth_is_multi_tx_ring, + .fields =3D (VMStateField[]) { + VMSTATE_UINT32(tx_descriptor[1], IMXFECState), + VMSTATE_UINT32(tx_descriptor[2], IMXFECState), + VMSTATE_END_OF_LIST() + } +}; + static const VMStateDescription vmstate_imx_eth =3D { .name =3D TYPE_IMX_FEC, .version_id =3D 2, @@ -203,15 +228,18 @@ static const VMStateDescription vmstate_imx_eth =3D { .fields =3D (VMStateField[]) { VMSTATE_UINT32_ARRAY(regs, IMXFECState, ENET_MAX), VMSTATE_UINT32(rx_descriptor, IMXFECState), - VMSTATE_UINT32(tx_descriptor, IMXFECState), - + VMSTATE_UINT32(tx_descriptor[0], IMXFECState), VMSTATE_UINT32(phy_status, IMXFECState), VMSTATE_UINT32(phy_control, IMXFECState), VMSTATE_UINT32(phy_advertise, IMXFECState), VMSTATE_UINT32(phy_int, IMXFECState), VMSTATE_UINT32(phy_int_mask, IMXFECState), VMSTATE_END_OF_LIST() - } + }, + .subsections =3D (const VMStateDescription * []) { + &vmstate_imx_eth_txdescs, + NULL + }, }; =20 #define PHY_INT_ENERGYON (1 << 7) @@ -406,7 +434,7 @@ static void imx_fec_do_tx(IMXFECState *s) { int frame_size =3D 0, descnt =3D 0; uint8_t *ptr =3D s->frame; - uint32_t addr =3D s->tx_descriptor; + uint32_t addr =3D s->tx_descriptor[0]; =20 while (descnt++ < IMX_MAX_DESC) { IMXFECBufDesc bd; @@ -447,16 +475,47 @@ static void imx_fec_do_tx(IMXFECState *s) } } =20 - s->tx_descriptor =3D addr; + s->tx_descriptor[0] =3D addr; =20 imx_eth_update(s); } =20 -static void imx_enet_do_tx(IMXFECState *s) +static void imx_enet_do_tx(IMXFECState *s, uint32_t index) { int frame_size =3D 0, descnt =3D 0; + uint8_t *ptr =3D s->frame; - uint32_t addr =3D s->tx_descriptor; + uint32_t addr, int_txb, int_txf, tdsr; + size_t ring; + + switch (index) { + case ENET_TDAR: + ring =3D 0; + int_txb =3D ENET_INT_TXB; + int_txf =3D ENET_INT_TXF; + tdsr =3D ENET_TDSR; + break; + case ENET_TDAR1: + ring =3D 1; + int_txb =3D ENET_INT_TXB1; + int_txf =3D ENET_INT_TXF1; + tdsr =3D ENET_TDSR1; + break; + case ENET_TDAR2: + ring =3D 2; + int_txb =3D ENET_INT_TXB2; + int_txf =3D ENET_INT_TXF2; + tdsr =3D ENET_TDSR2; + break; + default: + qemu_log_mask(LOG_GUEST_ERROR, + "%s: bogus value for index %x\n", + __func__, index); + abort(); + break; + } + + addr =3D s->tx_descriptor[ring]; =20 while (descnt++ < IMX_MAX_DESC) { IMXENETBufDesc bd; @@ -502,32 +561,32 @@ static void imx_enet_do_tx(IMXFECState *s) =20 frame_size =3D 0; if (bd.option & ENET_BD_TX_INT) { - s->regs[ENET_EIR] |=3D ENET_INT_TXF; + s->regs[ENET_EIR] |=3D int_txf; } } if (bd.option & ENET_BD_TX_INT) { - s->regs[ENET_EIR] |=3D ENET_INT_TXB; + s->regs[ENET_EIR] |=3D int_txb; } bd.flags &=3D ~ENET_BD_R; /* Write back the modified descriptor. */ imx_enet_write_bd(&bd, addr); /* Advance to the next descriptor. */ if ((bd.flags & ENET_BD_W) !=3D 0) { - addr =3D s->regs[ENET_TDSR]; + addr =3D s->regs[tdsr]; } else { addr +=3D sizeof(bd); } } =20 - s->tx_descriptor =3D addr; + s->tx_descriptor[ring] =3D addr; =20 imx_eth_update(s); } =20 -static void imx_eth_do_tx(IMXFECState *s) +static void imx_eth_do_tx(IMXFECState *s, uint32_t index) { if (!s->is_fec && (s->regs[ENET_ECR] & ENET_ECR_EN1588)) { - imx_enet_do_tx(s); + imx_enet_do_tx(s, index); } else { imx_fec_do_tx(s); } @@ -585,7 +644,7 @@ static void imx_eth_reset(DeviceState *d) } =20 s->rx_descriptor =3D 0; - s->tx_descriptor =3D 0; + memset(s->tx_descriptor, 0, sizeof(s->tx_descriptor)); =20 /* We also reset the PHY */ phy_reset(s); @@ -791,6 +850,7 @@ static void imx_eth_write(void *opaque, hwaddr offset, = uint64_t value, unsigned size) { IMXFECState *s =3D IMX_FEC(opaque); + const bool single_tx_ring =3D !imx_eth_is_multi_tx_ring(s); uint32_t index =3D offset >> 2; =20 FEC_PRINTF("reg[%s] <=3D 0x%" PRIx32 "\n", imx_eth_reg_name(s, index), @@ -813,10 +873,18 @@ static void imx_eth_write(void *opaque, hwaddr offset= , uint64_t value, s->regs[index] =3D 0; } break; - case ENET_TDAR: + case ENET_TDAR1: /* FALLTHROUGH */ + case ENET_TDAR2: /* FALLTHROUGH */ + if (unlikely(single_tx_ring)) { + qemu_log_mask(LOG_GUEST_ERROR, + "[%s]%s: trying to access TDAR2 or TDAR1\n", + TYPE_IMX_FEC, __func__); + return; + } + case ENET_TDAR: /* FALLTHROUGH */ if (s->regs[ENET_ECR] & ENET_ECR_ETHEREN) { s->regs[index] =3D ENET_TDAR_TDAR; - imx_eth_do_tx(s); + imx_eth_do_tx(s, index); } s->regs[index] =3D 0; break; @@ -828,8 +896,12 @@ static void imx_eth_write(void *opaque, hwaddr offset,= uint64_t value, if ((s->regs[index] & ENET_ECR_ETHEREN) =3D=3D 0) { s->regs[ENET_RDAR] =3D 0; s->rx_descriptor =3D s->regs[ENET_RDSR]; - s->regs[ENET_TDAR] =3D 0; - s->tx_descriptor =3D s->regs[ENET_TDSR]; + s->regs[ENET_TDAR] =3D 0; + s->regs[ENET_TDAR1] =3D 0; + s->regs[ENET_TDAR2] =3D 0; + s->tx_descriptor[0] =3D s->regs[ENET_TDSR]; + s->tx_descriptor[1] =3D s->regs[ENET_TDSR1]; + s->tx_descriptor[2] =3D s->regs[ENET_TDSR2]; } break; case ENET_MMFR: @@ -907,7 +979,29 @@ static void imx_eth_write(void *opaque, hwaddr offset,= uint64_t value, } else { s->regs[index] =3D value & ~7; } - s->tx_descriptor =3D s->regs[index]; + s->tx_descriptor[0] =3D s->regs[index]; + break; + case ENET_TDSR1: + if (unlikely(single_tx_ring)) { + qemu_log_mask(LOG_GUEST_ERROR, + "[%s]%s: trying to access TDSR1\n", + TYPE_IMX_FEC, __func__); + return; + } + + s->regs[index] =3D value & ~7; + s->tx_descriptor[1] =3D s->regs[index]; + break; + case ENET_TDSR2: + if (unlikely(single_tx_ring)) { + qemu_log_mask(LOG_GUEST_ERROR, + "[%s]%s: trying to access TDSR2\n", + TYPE_IMX_FEC, __func__); + return; + } + + s->regs[index] =3D value & ~7; + s->tx_descriptor[2] =3D s->regs[index]; break; case ENET_MRBR: s->regs[index] =3D value & 0x00003ff0; @@ -1203,6 +1297,7 @@ static void imx_eth_realize(DeviceState *dev, Error *= *errp) =20 static Property imx_eth_properties[] =3D { DEFINE_NIC_PROPERTIES(IMXFECState, conf), + DEFINE_PROP_UINT32("tx-ring-num", IMXFECState, tx_ring_num, 1), DEFINE_PROP_END_OF_LIST(), }; =20 diff --git a/include/hw/net/imx_fec.h b/include/hw/net/imx_fec.h index af0840a0fa..91ef8f89a6 100644 --- a/include/hw/net/imx_fec.h +++ b/include/hw/net/imx_fec.h @@ -52,6 +52,8 @@ #define ENET_TFWR 81 #define ENET_FRBR 83 #define ENET_FRSR 84 +#define ENET_TDSR1 89 +#define ENET_TDSR2 92 #define ENET_RDSR 96 #define ENET_TDSR 97 #define ENET_MRBR 98 @@ -66,6 +68,8 @@ #define ENET_FTRL 108 #define ENET_TACC 112 #define ENET_RACC 113 +#define ENET_TDAR1 121 +#define ENET_TDAR2 123 #define ENET_MIIGSK_CFGR 192 #define ENET_MIIGSK_ENR 194 #define ENET_ATCR 256 @@ -105,13 +109,18 @@ #define ENET_INT_WAKEUP (1 << 17) #define ENET_INT_TS_AVAIL (1 << 16) #define ENET_INT_TS_TIMER (1 << 15) +#define ENET_INT_TXF2 (1 << 7) +#define ENET_INT_TXB2 (1 << 6) +#define ENET_INT_TXF1 (1 << 3) +#define ENET_INT_TXB1 (1 << 2) =20 #define ENET_INT_MAC (ENET_INT_HB | ENET_INT_BABR | ENET_INT_BAB= T | \ ENET_INT_GRA | ENET_INT_TXF | ENET_INT_TXB= | \ ENET_INT_RXF | ENET_INT_RXB | ENET_INT_MII= | \ ENET_INT_EBERR | ENET_INT_LC | ENET_INT_RL= | \ ENET_INT_UN | ENET_INT_PLR | ENET_INT_WAKE= UP | \ - ENET_INT_TS_AVAIL) + ENET_INT_TS_AVAIL | ENET_INT_TXF1 | \ + ENET_INT_TXB1 | ENET_INT_TXF2 | ENET_INT_T= XB2) =20 /* RDAR */ #define ENET_RDAR_RDAR (1 << 24) @@ -234,6 +243,9 @@ typedef struct { =20 #define ENET_BD_BDU (1 << 31) =20 +#define ENET_TX_RING_NUM 3 + + typedef struct IMXFECState { /*< private >*/ SysBusDevice parent_obj; @@ -246,7 +258,9 @@ typedef struct IMXFECState { =20 uint32_t regs[ENET_MAX]; uint32_t rx_descriptor; - uint32_t tx_descriptor; + + uint32_t tx_descriptor[ENET_TX_RING_NUM]; + uint32_t tx_ring_num; =20 uint32_t phy_status; uint32_t phy_control; --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513263707010945.5661430165084; Thu, 14 Dec 2017 07:01:47 -0800 (PST) Received: from localhost ([::1]:41415 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePV0z-0007sc-JD for importer@patchew.org; Thu, 14 Dec 2017 10:01:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55306) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUtF-0001Wt-Ad for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUtD-0000ds-5d for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:36 -0500 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:39292) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUtA-0000Wq-Mi; Thu, 14 Dec 2017 09:53:32 -0500 Received: by mail-pf0-x241.google.com with SMTP id l24so3768018pfj.6; Thu, 14 Dec 2017 06:53:32 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:30 -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=Ty+c/nHpZuV2ryMR9Vetge+TEO8E4qKSpfUH6xLUNk0=; b=ffewbUoLB9UQfWWwDqrub0YHVMbHDoyBmQfR/nIRu2A05kI9euKnOrDmNYuDo6RMlI Ay+DzUpw+uF3bxnD2+ubC5niX/rwYk7ZyeMUM0XoivsW6o8NieGn+XfvRXQ6JgE1nflj v1ExP2x/5lzLfdwBNh5S5LiUp+Sc/hyviA/F2quLOTDf4CW0EQqoy2fz/Lwqm3m23Owz gWm42CunSEnVMzDv5ejCiaB57ykC3cu0R/ZYczZ+OyZ8zusq71wvkranKeUbhjp954VV DuK0L7229/iYSLPTjbc4/AzyCv3mly0XrrUjnhNGID0uAumJfto28EKqc45D8EwSMedJ 9l5Q== 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=Ty+c/nHpZuV2ryMR9Vetge+TEO8E4qKSpfUH6xLUNk0=; b=RLIlFSvx/p1mQZF35M28e1ywsME95+6DwA3M2JzjmlP1DbKQOcyoMHkmfSjGSCdp1V LlHeuRz3Gmi6kYhugYFK2rPOiAeBeIfDhkrq3c8fq6IbFvqDxng83dCWvSFqFT/jsjOY XdRqbYcVRsW15APEl2G1jyr963MyuuhVgc6UaN64o/JT6MH+/uLsHFjo2EIVNF1hPK17 ohwkALRqcYVpMjBKRuqQ0QjzlPWtZXG4FZkQr5xmcfyF3NWM24/AiA2I4OMKMOlycKL7 g3ZTK+iHGCUeRSrR9Lh9/UoPsSynQuWVuYcyLisOQh2fTwvJFVK+SMPBm40dhT5r1Dn7 LkfA== X-Gm-Message-State: AKGB3mJugq4RGMuQan3NHVOkaCxmxWFnjEt/JGqy0JwT0oenqwvQ1dun e6nDJ5FDHMufJ+lTUMAsqgc58JoC X-Google-Smtp-Source: ACJfBotBuRDwTs0nA4LK4X5GXspUJDYDOn/nR9zE4dHKRpkpJzRATea3py81J49Gc1iizJ84hmkwJg== X-Received: by 10.84.151.70 with SMTP id i64mr5697496pli.330.1513263211424; Thu, 14 Dec 2017 06:53:31 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:49 -0800 Message-Id: <20171214145255.31545-10-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::241 Subject: [Qemu-devel] [PATCH v2 09/15] imx_fec: Use correct length for packet size X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Use 'frame_size' instead of 'len' when calling qemu_send_packet(), failing to do so results in malformed packets send in case when that packed is fragmented into multiple DMA transactions. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Andrey Smirnov --- hw/net/imx_fec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 77d27f763e..6cb9e2e20e 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -556,7 +556,7 @@ static void imx_enet_do_tx(IMXFECState *s, uint32_t ind= ex) } /* Last buffer in frame. */ =20 - qemu_send_packet(qemu_get_queue(s->nic), s->frame, len); + qemu_send_packet(qemu_get_queue(s->nic), s->frame, frame_size); ptr =3D s->frame; =20 frame_size =3D 0; --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513263750111422.0734903589048; Thu, 14 Dec 2017 07:02:30 -0800 (PST) Received: from localhost ([::1]:41420 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePV1k-0008ST-EO for importer@patchew.org; Thu, 14 Dec 2017 10:02:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55351) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUtG-0001Y7-CD for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUtF-0000jJ-Nn for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:38 -0500 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:46611) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUtC-0000ZR-2p; Thu, 14 Dec 2017 09:53:34 -0500 Received: by mail-pg0-x241.google.com with SMTP id b11so3542124pgu.13; Thu, 14 Dec 2017 06:53:33 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:32 -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=Uh6BWoCeucm/RqhnrLog4O3BSbZ2UG1LTw2gH+giLCc=; b=ay2Pn57Eiw9kHFqVexz+X5sWaVnwyeLokNSB41N9L6QwwSM8WjVm9E4fNQcU+4Jfw2 B3ORfVO2jM+kOXuGJVA7Gbieyo+NqfQcf/pend8qSu71hNQD5UxkppEwh05+TQBefHiQ j8jBg/Y9cJt5hbx+xtFDFZLlW+XPKqnrZwzXrHQ6HTWDtzpeRbNg7MLiSc/rcUUNMi2s 86Zd1jG/Ax3QBQb4TEHMISS9Xr/vbri49edlMo5sLbGT4fHFMKPPfk2t28oHI8kYfnB8 DKOzbusjDyrcaOGzDIwlNSyrjF6BaBpTxHbMnuehL59Knt4vyOZsSBKpgb4lXpRW4MjF W+zA== 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=Uh6BWoCeucm/RqhnrLog4O3BSbZ2UG1LTw2gH+giLCc=; b=RgV6pRCR5HRxhMDHkWn19uY0jMEyegP0uBfkCyGeVoWojObkCxgPaNQaf40UQPnTDP 3NF3K8GFGxgbkL1dI/uS3GftxSmdWbIofC+LbyWpDjOvPQ2ljIxtCerpfrpgrlCYjlJ+ 1vwO8GobSaL47Q5kf0BlVQzkfQR6rd+YbQByplHsAf75X7KOpe8zxjPaLGpZzWM2/CK6 faxUOhWEENNxeTAA6YEg0F47kxmOQm61UzbZfLI9G/uRjcFNAAm244DOlqYnQsuhDyMK DJkRGmvtybrwAbcVvuwvTnVYTZRyxJKsytsGUIEbD/wnrYlPJMBVsw9YC70UzLBBSwR2 tVLg== X-Gm-Message-State: AKGB3mIlBwU0GpSmckWx8OUrkKpjTHr0A2Bi30oDV5FL6UptoWUFHFnq 1+RciO9OlkBNcns1CDuH3jy7MUPf X-Google-Smtp-Source: ACJfBov96fyj2sT/cOd14LVzh2afM6Oa2tHAVFxWAhFNcbbF0MlbTD4EaVpVncATKj/dH5ybGJDImg== X-Received: by 10.99.45.4 with SMTP id t4mr8823377pgt.254.1513263212787; Thu, 14 Dec 2017 06:53:32 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:50 -0800 Message-Id: <20171214145255.31545-11-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::241 Subject: [Qemu-devel] [PATCH v2 10/15] imx_fec: Fix a typo in imx_enet_receive() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Andrey Smirnov --- hw/net/imx_fec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 6cb9e2e20e..c1cf7f9c58 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -1150,7 +1150,7 @@ static ssize_t imx_enet_receive(NetClientState *nc, c= onst uint8_t *buf, size +=3D 2; } =20 - /* Huge frames are truncted. */ + /* Huge frames are truncated. */ if (size > s->regs[ENET_FTRL]) { size =3D s->regs[ENET_FTRL]; flags |=3D ENET_BD_TR | ENET_BD_LG; --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 15132635747033.106975555668555; Thu, 14 Dec 2017 06:59:34 -0800 (PST) Received: from localhost ([::1]:41397 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUyw-000670-UT for importer@patchew.org; Thu, 14 Dec 2017 09:59:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55436) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUtJ-0001c3-Nc for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUtG-0000kv-II for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:41 -0500 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:36676) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUtD-0000d3-CY; Thu, 14 Dec 2017 09:53:35 -0500 Received: by mail-pf0-x244.google.com with SMTP id p84so3774768pfd.3; Thu, 14 Dec 2017 06:53:35 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.32 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:33 -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=krjP4ycTOa7hxNduyxB7DLScklOA9sr6EGMYFcFXKS4=; b=Va1hVXnZrxp/U7LNDIYF07qxJnAHRn4HaMovcBch40R1rdk9R7MyWaimbJbQea5OCI 7NAxL6yGpcsuwmLo9avTfCwNfp/Pq5HkCldW98FNAH8f/QXXVCjVLk0chp4SbPj8vp3R ADsAPo6ns+uGGbbqWSzA0l6l+AJLIJle6vziTQHHtnU1IJYWj/MOCo4b9Cm2Qur1MNID +0YXST2hl2/g1jHIg6AJ6w/rQr7XdnXSWEdrFu0zBSm6ci8NAi6YZbAkqUsOQ99BSyAq UfA4wC7SGdD1sshxLlXqw50Bp/GOAAcietFg9bLwoGIccOuVHBypJLrD2KpdWn9bF58P wUQQ== 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=krjP4ycTOa7hxNduyxB7DLScklOA9sr6EGMYFcFXKS4=; b=KL2QQk3u+rqrxGLysW8AC2ioNSJ4mf0LUqTKStKJ5HOE/CIRCi3PfwSfovtzcPlkMs Iv/kTYi7o7Dmojo3cjTFDEl05Mb0c0KaaBSppRKZW81SnuLnmdXUxXuN6wQoY8hv7WMP jBVmM9aIgvKWfVi/eG49I0ZsnDXk0VTcEi0SpBUxRdTo375rtNIaaFhPw5XoCr24M6KX /goCXV9IBuD1e1GHTu951Uut+/OQkCVuYHodGUTLLX6dCeHuD7SZg3/L2p+2ovRODFhE KKX4PiUWvVyN8RASnw314MnJ1PJSyq6Ub14+3wgnQJjlcozI6wwkTQaGKl7exCo7notp xovg== X-Gm-Message-State: AKGB3mIfsFreLRbPXSCngaBVs5ZnLTCTmse1FqMfgSTyt/6f/t5hTQMQ /SP9oZKCPtj6zGk6iELNjplxUnEG X-Google-Smtp-Source: ACJfBou1culRxUw46Cx/pwOdUG4yKhtqCzg9SqTbF2cXdZYTfivbAlJr+WxiYakVg4IupnIbD8S6+g== X-Received: by 10.84.140.235 with SMTP id 98mr5868884plt.392.1513263214087; Thu, 14 Dec 2017 06:53:34 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:51 -0800 Message-Id: <20171214145255.31545-12-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::244 Subject: [Qemu-devel] [PATCH v2 11/15] imx_fec: Reserve full FSL_IMX25_FEC_SIZE page for the register file X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Some i.MX SoCs (e.g. i.MX7) have FEC registers going as far as offset 0x614, so to avoid getting aborts when accessing those on QEMU, extend the register file to cover FSL_IMX25_FEC_SIZE(16K) of address space instead of just 1K. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Andrey Smirnov --- hw/net/imx_fec.c | 2 +- include/hw/arm/fsl-imx25.h | 1 - include/hw/net/imx_fec.h | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index c1cf7f9c58..4fb48f62ba 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -1281,7 +1281,7 @@ static void imx_eth_realize(DeviceState *dev, Error *= *errp) SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); =20 memory_region_init_io(&s->iomem, OBJECT(dev), &imx_eth_ops, s, - TYPE_IMX_FEC, 0x400); + TYPE_IMX_FEC, FSL_IMX25_FEC_SIZE); sysbus_init_mmio(sbd, &s->iomem); sysbus_init_irq(sbd, &s->irq[0]); sysbus_init_irq(sbd, &s->irq[1]); diff --git a/include/hw/arm/fsl-imx25.h b/include/hw/arm/fsl-imx25.h index d0e8e9d956..65a73714ef 100644 --- a/include/hw/arm/fsl-imx25.h +++ b/include/hw/arm/fsl-imx25.h @@ -192,7 +192,6 @@ typedef struct FslIMX25State { #define FSL_IMX25_UART5_ADDR 0x5002C000 #define FSL_IMX25_UART5_SIZE 0x4000 #define FSL_IMX25_FEC_ADDR 0x50038000 -#define FSL_IMX25_FEC_SIZE 0x4000 #define FSL_IMX25_CCM_ADDR 0x53F80000 #define FSL_IMX25_CCM_SIZE 0x4000 #define FSL_IMX25_GPT4_ADDR 0x53F84000 diff --git a/include/hw/net/imx_fec.h b/include/hw/net/imx_fec.h index 91ef8f89a6..7b3faa4019 100644 --- a/include/hw/net/imx_fec.h +++ b/include/hw/net/imx_fec.h @@ -245,6 +245,7 @@ typedef struct { =20 #define ENET_TX_RING_NUM 3 =20 +#define FSL_IMX25_FEC_SIZE 0x4000 =20 typedef struct IMXFECState { /*< private >*/ --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151326353632933.583375089589595; Thu, 14 Dec 2017 06:58:56 -0800 (PST) Received: from localhost ([::1]:41393 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUyL-0005aQ-G4 for importer@patchew.org; Thu, 14 Dec 2017 09:58:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55511) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUtL-0001eR-PN for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUtJ-0000qu-W6 for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:43 -0500 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:38729) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUtF-0000hE-1b; Thu, 14 Dec 2017 09:53:37 -0500 Received: by mail-pg0-x242.google.com with SMTP id f12so3557135pgo.5; Thu, 14 Dec 2017 06:53:36 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.34 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:34 -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=W9O9ICI6wDSBPE3bLWsLzlYNH5/x+1uGJF6oCieq3W8=; b=LQVgw5KzC4aKrQTBBL9eJBeRqtv1u2UEe/WiwGK0uHbMqDFCCCsEoAH2h39X2xgiAt qqYH5rm0EpxmLDz1E90vvfgE07jhSUaGuq+ow/sbbcZs3go+O1AUhTuAFBL23Md/0oRA l5NRyEMjJDJ5j44iizxVxLkgB7Rg0mnjt+WDZNCyVxYXk7F2lTZFkBfRsBZRAjmV6Lft jfxW43Dpdy8whMNW2NnDFru4IHr9i1+pyotNi6sNEc3to6VxK0sNcSCsp0QgtTsMh5Ft LTs+gKzLV3fWAOtHQGboWsEtJbmQgpmTJD4gArx6uWY0ZxODEKL6Elt3ARsK49VQ0zOu S75g== 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=W9O9ICI6wDSBPE3bLWsLzlYNH5/x+1uGJF6oCieq3W8=; b=WEhS8aiff6PK7JZ/Gap9bp01TPTX/P1QD75Rr0DKRPZDFXb6+I4ZfdK+cLUBfaR2K+ ApldS0s9LKbiy/aKVPPGt71Ozdd4rnmhSuhYo1RJKviGD611YIaOYzRdYp4DxZAVs8hs 7MqUJ3evZaB1A4tMrqnBt6Fp6GgwbXhFnCHO6vrCra4jJPOYMMhc5QOshP3HaKK3ANIW X3/6GdnPNx867r0mHzpoVMSJ644C5VXnWrg+/Fx3aMLhW3qHSXH5UtJes+my0JVXjZeU Ln24QjKj2dyiUN4QidyZrCJA5a7FH48FkN/2OvblOGPixJ1mqOliYgW3/W2omnOYogwg lpnw== X-Gm-Message-State: AKGB3mKgS9x5sby8Bwx/OAp8U6uek2f5v8ZoYffB61RvrmmEuaX3AvFq gNJ1DpWSxM2IrAr8/39m0SDWHrON X-Google-Smtp-Source: ACJfBot1yKDln90W4xF0A/bYWri3xai3+lDpH3v9ZnJJB2EIQyvRf5T++Mg3vDpSvkxTtO2fpGrRgQ== X-Received: by 10.159.252.133 with SMTP id bb5mr1993270plb.287.1513263215587; Thu, 14 Dec 2017 06:53:35 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:52 -0800 Message-Id: <20171214145255.31545-13-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::242 Subject: [Qemu-devel] [PATCH v2 12/15] sdhci: Add i.MX specific subtype of SDHCI X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 IP block found on several generations of i.MX family does not use vanilla SDHCI implementation and it comes with a number of quirks. Introduce i.MX SDHCI subtype of SDHCI block to add code necessary to support unmodified Linux guest driver. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Andrey Smirnov --- hw/sd/sdhci-internal.h | 19 +++++ hw/sd/sdhci.c | 228 +++++++++++++++++++++++++++++++++++++++++++++= +++- include/hw/sd/sdhci.h | 14 +++ 3 files changed, 259 insertions(+), 2 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 161177cf39..b86ac0791b 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -85,12 +85,18 @@ =20 /* R/W Host control Register 0x0 */ #define SDHC_HOSTCTL 0x28 +#define SDHC_CTRL_LED 0x01 #define SDHC_CTRL_DMA_CHECK_MASK 0x18 #define SDHC_CTRL_SDMA 0x00 #define SDHC_CTRL_ADMA1_32 0x08 #define SDHC_CTRL_ADMA2_32 0x10 #define SDHC_CTRL_ADMA2_64 0x18 #define SDHC_DMA_TYPE(x) ((x) & SDHC_CTRL_DMA_CHECK_MASK) +#define SDHC_CTRL_4BITBUS 0x02 +#define SDHC_CTRL_8BITBUS 0x20 +#define SDHC_CTRL_CDTEST_INS 0x40 +#define SDHC_CTRL_CDTEST_EN 0x80 + =20 /* R/W Power Control Register 0x0 */ #define SDHC_PWRCON 0x29 @@ -229,4 +235,17 @@ enum { =20 extern const VMStateDescription sdhci_vmstate; =20 + +#define ESDHC_MIX_CTRL 0x48 +#define ESDHC_VENDOR_SPEC 0xc0 +#define ESDHC_DLL_CTRL 0x60 + +#define ESDHC_TUNING_CTRL 0xcc +#define ESDHC_TUNE_CTRL_STATUS 0x68 +#define ESDHC_WTMK_LVL 0x44 + +#define ESDHC_CTRL_4BITBUS (0x1 << 1) +#define ESDHC_CTRL_8BITBUS (0x2 << 1) + + #endif diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 6d6a791ee9..758af067f9 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -265,7 +265,8 @@ static void sdhci_send_command(SDHCIState *s) } } =20 - if ((s->norintstsen & SDHC_NISEN_TRSCMP) && + if (!(s->quirks & SDHCI_QUIRK_NO_BUSY_IRQ) && + (s->norintstsen & SDHC_NISEN_TRSCMP) && (s->cmdreg & SDHC_CMD_RESPONSE) =3D=3D SDHC_CMD_RSP_WITH_BUSY)= { s->norintsts |=3D SDHC_NIS_TRSCMP; } @@ -1191,6 +1192,8 @@ static void sdhci_initfn(SDHCIState *s) =20 s->insert_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, sdhci_raise_inser= tion_irq, s); s->transfer_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, sdhci_data_tran= sfer, s); + + s->io_ops =3D &sdhci_mmio_ops; } =20 static void sdhci_uninitfn(SDHCIState *s) @@ -1347,7 +1350,7 @@ static void sdhci_sysbus_realize(DeviceState *dev, Er= ror ** errp) s->buf_maxsz =3D sdhci_get_fifolen(s); s->fifo_buffer =3D g_malloc0(s->buf_maxsz); sysbus_init_irq(sbd, &s->irq); - memory_region_init_io(&s->iomem, OBJECT(s), &sdhci_mmio_ops, s, "sdhci= ", + memory_region_init_io(&s->iomem, OBJECT(s), s->io_ops, s, "sdhci", SDHC_REGISTERS_MAP_SIZE); sysbus_init_mmio(sbd, &s->iomem); } @@ -1386,11 +1389,232 @@ static const TypeInfo sdhci_bus_info =3D { .class_init =3D sdhci_bus_class_init, }; =20 +static uint64_t usdhc_read(void *opaque, hwaddr offset, unsigned size) +{ + SDHCIState *s =3D SYSBUS_SDHCI(opaque); + uint32_t ret; + uint16_t hostctl; + + switch (offset) { + default: + return sdhci_read(opaque, offset, size); + + case SDHC_HOSTCTL: + /* + * For a detailed explanation on the following bit + * manipulation code see comments in a similar part of + * usdhc_write() + */ + hostctl =3D SDHC_DMA_TYPE(s->hostctl) << (8 - 3); + + if (s->hostctl & SDHC_CTRL_8BITBUS) { + hostctl |=3D ESDHC_CTRL_8BITBUS; + } + + if (s->hostctl & SDHC_CTRL_4BITBUS) { + hostctl |=3D ESDHC_CTRL_4BITBUS; + } + + ret =3D hostctl; + ret |=3D (uint32_t)s->blkgap << 16; + ret |=3D (uint32_t)s->wakcon << 24; + + break; + + case ESDHC_DLL_CTRL: + case ESDHC_TUNE_CTRL_STATUS: + case 0x6c: + case ESDHC_TUNING_CTRL: + case ESDHC_VENDOR_SPEC: + case ESDHC_MIX_CTRL: + case ESDHC_WTMK_LVL: + ret =3D 0; + break; + } + + return ret; +} + +static void +usdhc_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) +{ + SDHCIState *s =3D SYSBUS_SDHCI(opaque); + uint8_t hostctl; + uint32_t value =3D (uint32_t)val; + + switch (offset) { + case ESDHC_DLL_CTRL: + case ESDHC_TUNE_CTRL_STATUS: + case 0x6c: + case ESDHC_TUNING_CTRL: + case ESDHC_WTMK_LVL: + case ESDHC_VENDOR_SPEC: + break; + + case SDHC_HOSTCTL: + /* + * Here's What ESDHCI has at offset 0x28 (SDHC_HOSTCTL) + * + * 7 6 5 4 3 2 1 0 + * |-----------+--------+--------+-----------+----------+---------| + * | Card | Card | Endian | DATA3 | Data | Led | + * | Detect | Detect | Mode | as Card | Transfer | Control | + * | Signal | Test | | Detection | Width | | + * | Selection | Level | | Pin | | | + * |-----------+--------+--------+-----------+----------+---------| + * + * and 0x29 + * + * 15 10 9 8 + * |----------+------| + * | Reserved | DMA | + * | | Sel. | + * | | | + * |----------+------| + * + * and here's what SDCHI spec expects those offsets to be: + * + * 0x28 (Host Control Register) + * + * 7 6 5 4 3 2 1 0 + * |--------+--------+----------+------+--------+----------+------= ---| + * | Card | Card | Extended | DMA | High | Data | LED = | + * | Detect | Detect | Data | Sel. | Speed | Transfer | Contr= ol | + * | Signal | Test | Transfer | | Enable | Width | = | + * | Sel. | Level | Width | | | | = | + * |--------+--------+----------+------+--------+----------+------= ---| + * + * and 0x29 (Power Control Register) + * + * |----------------------------------| + * | Power Control Register | + * | | + * | Description omitted, | + * | since it has no analog in ESDHCI | + * | | + * |----------------------------------| + * + * Since offsets 0x2A and 0x2B should be compatible between + * both IP specs we only need to reconcile least 16-bit of the + * word we've been given. + */ + + /* + * First, save bits 7 6 and 0 since they are identical + */ + hostctl =3D value & (SDHC_CTRL_LED | + SDHC_CTRL_CDTEST_INS | + SDHC_CTRL_CDTEST_EN); + /* + * Second, split "Data Transfer Width" from bits 2 and 1 in to + * bits 5 and 1 + */ + if (value & ESDHC_CTRL_8BITBUS) { + hostctl |=3D SDHC_CTRL_8BITBUS; + } + + if (value & ESDHC_CTRL_4BITBUS) { + hostctl |=3D ESDHC_CTRL_4BITBUS; + } + + /* + * Third, move DMA select from bits 9 and 8 to bits 4 and 3 + */ + hostctl |=3D SDHC_DMA_TYPE(value >> (8 - 3)); + + /* + * Now place the corrected value into low 16-bit of the value + * we are going to give standard SDHCI write function + * + * NOTE: This transformation should be the inverse of what can + * be found in drivers/mmc/host/sdhci-esdhc-imx.c in Linux + * kernel + */ + value &=3D ~UINT16_MAX; + value |=3D hostctl; + value |=3D (uint16_t)s->pwrcon << 8; + + sdhci_write(opaque, offset, value, size); + break; + + case ESDHC_MIX_CTRL: + /* + * So, when SD/MMC stack in Linux tries to write to "Transfer + * Mode Register", ESDHC i.MX quirk code will translate it + * into a write to ESDHC_MIX_CTRL, so we do the opposite in + * order to get where we started + * + * Note that Auto CMD23 Enable bit is located in a wrong place + * on i.MX, but since it is not used by QEMU we do not care. + * + * We don't want to call sdhci_write(.., SDHC_TRNMOD, ...) + * here becuase it will result in a call to + * sdhci_send_command(s) which we don't want. + * + */ + s->trnmod =3D value & UINT16_MAX; + break; + case SDHC_TRNMOD: + /* + * Similar to above, but this time a write to "Command + * Register" will be translated into a 4-byte write to + * "Transfer Mode register" where lower 16-bit of value would + * be set to zero. So what we do is fill those bits with + * cached value from s->trnmod and let the SDHCI + * infrastructure handle the rest + */ + sdhci_write(opaque, offset, val | s->trnmod, size); + break; + case SDHC_BLKSIZE: + /* + * ESDHCI does not implement "Host SDMA Buffer Boundary", and + * Linux driver will try to zero this field out which will + * break the rest of SDHCI emulation. + * + * Linux defaults to maximum possible setting (512K boundary) + * and it seems to be the only option that i.MX IP implements, + * so we artificially set it to that value. + */ + val |=3D 0x7 << 12; + /* FALLTHROUGH */ + default: + sdhci_write(opaque, offset, val, size); + break; + } +} + + +static const MemoryRegionOps usdhc_mmio_ops =3D { + .read =3D usdhc_read, + .write =3D usdhc_write, + .valid =3D { + .min_access_size =3D 1, + .max_access_size =3D 4, + .unaligned =3D false + }, + .endianness =3D DEVICE_LITTLE_ENDIAN, +}; + +static void imx_usdhc_init(Object *obj) +{ + SDHCIState *s =3D SYSBUS_SDHCI(obj); + + s->io_ops =3D &usdhc_mmio_ops; + s->quirks =3D SDHCI_QUIRK_NO_BUSY_IRQ; +} + +static const TypeInfo imx_usdhc_info =3D { + .name =3D TYPE_IMX_USDHC, + .parent =3D TYPE_SYSBUS_SDHCI, + .instance_init =3D imx_usdhc_init, +}; + static void sdhci_register_types(void) { type_register_static(&sdhci_pci_info); type_register_static(&sdhci_sysbus_info); type_register_static(&sdhci_bus_info); + type_register_static(&imx_usdhc_info); } =20 type_init(sdhci_register_types) diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index 0f0c3f1e64..b56836a2fc 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -39,6 +39,7 @@ typedef struct SDHCIState { }; SDBus sdbus; MemoryRegion iomem; + const MemoryRegionOps *io_ops; =20 QEMUTimer *insert_timer; /* timer for 'changing' sd card. */ QEMUTimer *transfer_timer; @@ -83,8 +84,19 @@ typedef struct SDHCIState { /* Force Event Auto CMD12 Error Interrupt Reg - write only */ /* Force Event Error Interrupt Register- write only */ /* RO Host Controller Version Register always reads as 0x2401 */ + + uint32_t quirks; } SDHCIState; =20 +/* + * Controller does not provide transfer-complete interrupt when not + * busy. + * + * NOTE: This definition is taken out of Linux kernel and so the + * original bit number is preserved + */ +#define SDHCI_QUIRK_NO_BUSY_IRQ BIT(14) + #define TYPE_PCI_SDHCI "sdhci-pci" #define PCI_SDHCI(obj) OBJECT_CHECK(SDHCIState, (obj), TYPE_PCI_SDHCI) =20 @@ -92,4 +104,6 @@ typedef struct SDHCIState { #define SYSBUS_SDHCI(obj) \ OBJECT_CHECK(SDHCIState, (obj), TYPE_SYSBUS_SDHCI) =20 +#define TYPE_IMX_USDHC "imx-usdhc" + #endif /* SDHCI_H */ --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513264173940191.75243328681302; Thu, 14 Dec 2017 07:09:33 -0800 (PST) Received: from localhost ([::1]:41484 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePV8V-0005fp-2g for importer@patchew.org; Thu, 14 Dec 2017 10:09:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55515) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUtL-0001eY-V3 for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUtL-0000sc-2d for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:44 -0500 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:34053) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUtG-0000jB-5w; Thu, 14 Dec 2017 09:53:38 -0500 Received: by mail-pg0-x242.google.com with SMTP id j4so3564071pgp.1; Thu, 14 Dec 2017 06:53:38 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.35 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:36 -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=hFT/Pj8JhWvMJv7wDbFPeo5WH8oytpXJoh4yK2590xU=; b=J40goTRbcXRQqTwcKeKnr61ket1a1rq41ec5BvNP81L6oONj0UkmqynAjVlEM5oTqw 2JytENWYyAwlIEhD7tH+EVmu6mZcOS/7vGCCKf+tippnO8JHbXOoec3bnZHHgekhes3v /4NXE0FgU51IzE0j1Xhhzfts6Pc8eSSkzwL4vFAd3YQzcHvDu/tkDAZakSrml0PuDk5q wucMi78Y8ei2fOpMDyBpWt/Oa+fPGtjDXXjWJq/IAohV3VMbtPLqYhyekmp3bDvsy1/F RLMmngToO0ebbnjZsFCo24ViHrMs8OV2UNOVeWkwrv7tWk3JR81pL6wOVWBZ/j1wxvWC pCWg== 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=hFT/Pj8JhWvMJv7wDbFPeo5WH8oytpXJoh4yK2590xU=; b=C2D3z5rxwiVueSphT5ptJOQrLL6XxUF0MHWjQYTGXX0IWdCDXO4aF4Sr+9PlnjvUO8 g9bbT+XNVoyD14emSygb1UNRsRBpWznQ6kazEWOl77mnBQMY4qtFEWHhqBQU6Rnpllor o86rQZgY0ZOuNQPJmOnTghI4itI5dMYhdkDVxUXTaPSZfhJG1rBBt9PuyffIjsrLeAQS Qhn7qRviI/m/+ZWSMb+ZX+mi3YZT4DJWTaA2zDRkfcon4GnNODxuGtVlJ4+xR6qHJ0uS 5frzsqsK2kLyUaHNhaUtM/vLWGRkZ9UB/uD0ZI6uUyuXiwxFPTqSBIis4K+VvRU8xNM4 1hFg== X-Gm-Message-State: AKGB3mIyXaV1o3eFeM16D2FYNUwvjoECPaVw+8SwrIqkOcWFQVqoFAAh JpHlB56Qq494cHN23J54yJTld2IZ X-Google-Smtp-Source: ACJfBouH5JPgNmTedjg7LnxswQCwwFR1PYQHxx066LJxMhg6sw63sGFlE1yCOGgOR9r1Z2UGWOqfYw== X-Received: by 10.84.173.1 with SMTP id o1mr9993946plb.135.1513263216904; Thu, 14 Dec 2017 06:53:36 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:53 -0800 Message-Id: <20171214145255.31545-14-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::242 Subject: [Qemu-devel] [PATCH v2 13/15] hw: i.MX: Convert i.MX6 to use TYPE_IMX_USDHC X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Convert i.MX6 to use TYPE_IMX_USDHC since that's what real HW comes with. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Signed-off-by: Andrey Smirnov --- hw/arm/fsl-imx6.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index 2ed7146c52..b9249dbfc8 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -93,7 +93,7 @@ static void fsl_imx6_init(Object *obj) } =20 for (i =3D 0; i < FSL_IMX6_NUM_ESDHCS; i++) { - object_initialize(&s->esdhc[i], sizeof(s->esdhc[i]), TYPE_SYSBUS_S= DHCI); + object_initialize(&s->esdhc[i], sizeof(s->esdhc[i]), TYPE_IMX_USDH= C); qdev_set_parent_bus(DEVICE(&s->esdhc[i]), sysbus_get_default()); snprintf(name, NAME_SIZE, "sdhc%d", i + 1); object_property_add_child(obj, name, OBJECT(&s->esdhc[i]), NULL); --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513263910708418.4108781968549; Thu, 14 Dec 2017 07:05:10 -0800 (PST) Received: from localhost ([::1]:41443 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePV4H-00022I-Se for importer@patchew.org; Thu, 14 Dec 2017 10:05:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55521) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUtM-0001ej-3m for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUtL-0000sk-3Q for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:44 -0500 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:33437) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUtH-0000la-F1; Thu, 14 Dec 2017 09:53:39 -0500 Received: by mail-pg0-x241.google.com with SMTP id g7so3565067pgs.0; Thu, 14 Dec 2017 06:53:39 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.36 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:37 -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=Q/p6xPc86L3+l6gZYYE2RbnwLFyAMnE8fAGCcar+YBw=; b=vOjUKsk8MrgUZ2SXsJIwnoaHVDzwOqKYt7/Hx91JLDWHEw/4aBFy4pIS+IUsNWOnE9 /lVrprk0RRkyq225Cwz8BaAX82h7fryMly/U1oDF9cDK4iPOYJXKTid0jMphKZNa0lum GuC9F0v4kTRvZFAlKj7dmwpVJ6Qr3ZXJ/puCUmjNkXJ4UjDq2pafoftJs1iKIoy0pqhJ RBsrmwrqNpVdI0DXfSnyczLLmTzwBY7osmWS1iJwycXSaxQK1nWl8xOlJHY3yc3HbFNG xKgGJvLDrGIZI8OMKk4IwBgyb7pVL9jW0scobLia05Qw7XBNlFoLNZPD2Vx0C8r80qBJ ceWg== 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=Q/p6xPc86L3+l6gZYYE2RbnwLFyAMnE8fAGCcar+YBw=; b=oppqq3mz+ZUjMml/EjGBd5FTfI9iwD7HwrLHghGZ4gIqvpH/hCounFSwPUCAqTUGav JHmFnzq/cfFO1o22GpP8kfWS2o7YFE+FTgL3HchaXw2KWdIfM19GT92Jc2J2O/XKjoAY sDcqaJQFfUuI4YLssjkkxwZ62pn4lC7mX3BzUjUalEGMp874W/FIK1LMbb0j9QqOABaq xyIlvf4gsO+ctDQZ17rxvaXud5WoSPzONib/IAPe6oTRAhXXQ9MvcWReOmk0eKUTeBvQ CHNvQEZ4Q+JwHUVuy99nca1grHfiH7UDcGuSn6D3Krud9XfeFTmcq8YL+AT3Y7fp+WXF iquA== X-Gm-Message-State: AKGB3mJnWrstTmYX1C+BB4eMpZaGFqfz7VTavZFynoq+GWLiD6Bprt3E 4ask6coXeD8k1GWvVURlzxVHvwty X-Google-Smtp-Source: ACJfBov8VG10v4aBEHPBdODgu9TAZmEL45lT622c53nrLqkHQbtRsuJtgMh4plSmel6enwwXsj6Png== X-Received: by 10.98.166.148 with SMTP id r20mr9776838pfl.80.1513263218183; Thu, 14 Dec 2017 06:53:38 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:54 -0800 Message-Id: <20171214145255.31545-15-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::241 Subject: [Qemu-devel] [PATCH v2 14/15] sd: Check for READ_MULTIPLE_BLOCK size limit violation first X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Check for READ_MULTIPLE_BLOCK size limit violation first as opposed to doing at the end of the command handler. Consider the following scenario: Emulated host driver is trying to read last byte of the last sector via CMD18/ADMA, so what would happen is the following: 1. "ret" is filled with desired byte and "sd->data_offset" is incremented to 512 by ret =3D sd->data[sd->data_offset ++]; 2. sd->data_offset >=3D io_len becomes true, so sd->data_start +=3D io_len; moves "sd->data_start" past valid data boundaries. 3. as a result "sd->data_start + io_len > sd->size" check becomes true and sd->card_status is marked with ADDRESS_ERROR, telling emulated host that the last CMD18 read failed, despite nothing bad/illegal happening. To avoid having this false positive, move out-of-bounds check to happen before BLK_READ_BLOCK(), so this way it will only trigger if illegal read is truly about to happen. Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Signed-off-by: Andrey Smirnov --- hw/sd/sd.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index ba47bff4db..ce4ef17be3 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1797,8 +1797,17 @@ uint8_t sd_read_data(SDState *sd) break; =20 case 18: /* CMD18: READ_MULTIPLE_BLOCK */ - if (sd->data_offset =3D=3D 0) + if (sd->data_offset =3D=3D 0) { + if (sd->data_start + io_len > sd->size) { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: Trying to read past card's capacity\n", + __func__); + sd->card_status |=3D ADDRESS_ERROR; + return 0x00; + } + BLK_READ_BLOCK(sd->data_start, io_len); + } ret =3D sd->data[sd->data_offset ++]; =20 if (sd->data_offset >=3D io_len) { @@ -1812,11 +1821,6 @@ uint8_t sd_read_data(SDState *sd) break; } } - - if (sd->data_start + io_len > sd->size) { - sd->card_status |=3D ADDRESS_ERROR; - break; - } } break; =20 --=20 2.14.3 From nobody Tue May 7 08:57:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151326407754968.07100424651935; Thu, 14 Dec 2017 07:07:57 -0800 (PST) Received: from localhost ([::1]:41473 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePV72-0004RS-Lm for importer@patchew.org; Thu, 14 Dec 2017 10:07:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55519) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ePUtM-0001ei-3A for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ePUtL-0000t1-7l for qemu-devel@nongnu.org; Thu, 14 Dec 2017 09:53:44 -0500 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:40329) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ePUtI-0000nx-NE; Thu, 14 Dec 2017 09:53:40 -0500 Received: by mail-pf0-x241.google.com with SMTP id v26so3770747pfl.7; Thu, 14 Dec 2017 06:53:40 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id e7sm8757439pfj.44.2017.12.14.06.53.38 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Dec 2017 06:53:39 -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=zc3tJ3GiwAz2q6hrm6F2ynicdt/gKVnWAy4u0ysngQw=; b=Cfc9q/WHRPsoCWBZpTwZfTH1kJEtT5MOHjTNpynsoPyqLhLynD1srfo2nKsL9flaGQ 4fuVSK+ZYF4w4Qe9E2aEzLGSWcd59ndehnpRSV3TAQG5nkZczqYNYJbx/1GN9d2i2sad V0FiPBLWAuIkXLhU0+Wm77LrIYoM25/AOhMsa1vhLyBkYXRMM7DMkESvUAdDNGpSxrin SYZHcm3pELIoEw9z+PzoEMDg49fPFndBGquqsLz3GnAOC4b5nb6p2MP5u9pLOYCsRoMw Xv7p0Zx3SbTc9DCeKR2bJZmiYESPBoM0ok/AnwSrN2uGXjKWi/wr32cru59izfsemiR+ ShFQ== 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=zc3tJ3GiwAz2q6hrm6F2ynicdt/gKVnWAy4u0ysngQw=; b=LMgLm5GqSWyrzH8QAToc1NouGTaWg86MLWHcG00z0nsXgkYhspQYwyAeQ7YMlj2YvQ fPxCfL5i6491ohxaL/Arm0D+H8eASdahRjrIVgSK2EwTDp7tAKtqO45LuWRBaLj1fWv4 yCBbk0k8atyeV3K5TMzdESPk+HmwQ1tmjzIjDAMj8SEjGgSms9LuuK1UUQgD8IJpq6wJ xRnirS5+1d9xsR0QFcY/M6OUp9inxabWHnvg8u4tWO0BE0muoNX1JkRVce/cAkj53TG4 g7o5ZLwxgWKiCC8aXLWG7vh/RDjCr8YH5xnqDy9BKMWzzbOUvtHEDwu3ZeYZZYCKBh8m M2aA== X-Gm-Message-State: AKGB3mKTFyDfwj6QtYdLm6dcRzhUVEKCuHGJthtptgyjDEiwMP0H8UP6 2KczLYdGtrUox0kR6WaR7v8Lwvcb X-Google-Smtp-Source: ACJfBos8kGY+KFmtXC07PdouveOtH7RrLQypygT/8k4TI5/412vc2hp8aHdqmofEXzGQDvt0/iezrg== X-Received: by 10.98.178.17 with SMTP id x17mr9731316pfe.239.1513263219511; Thu, 14 Dec 2017 06:53:39 -0800 (PST) From: Andrey Smirnov To: qemu-arm@nongnu.org Date: Thu, 14 Dec 2017 06:52:55 -0800 Message-Id: <20171214145255.31545-16-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171214145255.31545-1-andrew.smirnov@gmail.com> References: <20171214145255.31545-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::241 Subject: [Qemu-devel] [PATCH v2 15/15] sdhci: Implement write method of ACMD12ERRSTS register X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrey Smirnov , Jason Wang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, yurovsky@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Cc: Peter Maydell Cc: Jason Wang Cc: Philippe Mathieu-Daud=C3=A9 Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Peter Maydell Signed-off-by: Andrey Smirnov Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdhci.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 758af067f9..cb9e0db9fb 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1139,6 +1139,9 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val= , unsigned size) s->admasysaddr =3D (s->admasysaddr & (0x00000000FFFFFFFFULL | ((uint64_t)mask << 32))) | ((uint64_t)value << 32); break; + case SDHC_ACMD12ERRSTS: + MASKED_WRITE(s->acmd12errsts, mask, value); + break; case SDHC_FEAER: s->acmd12errsts |=3D value; s->errintsts |=3D (value >> 16) & s->errintstsen; --=20 2.14.3