From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 2002:a17:906:9c0a:0:0:0:0 with SMTP id ff10csp149416ejc; Sat, 20 Aug 2022 15:58:10 -0700 (PDT) X-Google-Smtp-Source: AA6agR61I8Gs+bYchIj2+tmYNR81YIaFU/LasM4cBqic3Do3EA8Dhi5jpub3/PpGc97yRM0Q0huJ X-Received: by 2002:ac8:5889:0:b0:344:57e5:dc54 with SMTP id t9-20020ac85889000000b0034457e5dc54mr11124866qta.465.1661036290216; Sat, 20 Aug 2022 15:58:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661036290; cv=none; d=google.com; s=arc-20160816; b=lUPz9gXWXRoGb4AH9P8TNx4eXHwysttGrtV/REKmiHHFGfOJAetCwBUsrGgj2zEq0t 1SV+zHp7wcUzShs/Dzoiaqcgcd+H98sBlSlCyjp/bpYlu8CQqmt4tZ3bIeHwHBkXnygA eykOgAex4ISGahc0nB7Z5Ofqb0Zys+lHh+e7brM68aWdB7D5F3lneNxOKTL+r3zYB9Ka /DsKJgoiYuEWj2YYatX2R4l0XxHAYXUWbaHKeJTUwN1rjz/L20XANjg+XFOHwz9zk65L GugH/67/VqzeryVix4awxMpL1UiSAm/5MGaj9u69ayWmZmThKHsmHEFvIYADsT4zNv0N mQWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:feedback-id :dkim-signature:dkim-signature; bh=8PRwsLk1jQA2QA8YhkkJH4PgwfG4c5jri75d6c1Ko04=; b=h2GKvDztjuvg+WIKcQpKbu/Qcm+YM9bozy5V+Qh6uv7dtGHm7MpVG7oZdbapWA+ata Ztwr/OGZ73o5OREiBPW7RT8Kg/WpI0xI60KGAaDZ7VAl/GlkEjwoIsXFeBZX0beHiL04 MfV+04oj0E3iIyhW38uo6lxxu167tuqooJB6mQSHcJrrY1IpNC7rkwRHKUTLqV9QdUui sCC2LvDHN0bAwMfq6MTOy6blUe6j3rIEFSWCswGX1jsixCVH2v8aceybFjmXJMkE9/zk nnxKp3ZzsCvJwjp6b6Ab8FncTrP+jNkBdow1AoBKE+d8nx6oz6xIZeCcLVxe3w8P7KgZ 8kqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@pjd.dev header.s=fm2 header.b=qvGGpJZx; dkim=fail header.i=@messagingengine.com header.s=fm1 header.b=vjekTynR; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id g6-20020a0562141cc600b004948ae7c34dsi3154354qvd.591.2022.08.20.15.58.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sat, 20 Aug 2022 15:58:10 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@pjd.dev header.s=fm2 header.b=qvGGpJZx; dkim=fail header.i=@messagingengine.com header.s=fm1 header.b=vjekTynR; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org" Received: from localhost ([::1]:44420 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oPXPt-0007AC-MV for alex.bennee@linaro.org; Sat, 20 Aug 2022 18:58:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41420) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPXPA-00078u-He; Sat, 20 Aug 2022 18:57:24 -0400 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:51025) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oPXP8-0002u1-AU; Sat, 20 Aug 2022 18:57:24 -0400 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id F0D835C0094; Sat, 20 Aug 2022 18:57:18 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Sat, 20 Aug 2022 18:57:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pjd.dev; h=cc:cc :content-transfer-encoding:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:sender:subject:subject:to:to; s=fm2; t=1661036238; x=1661122638; bh=8PRwsLk1jQA2QA8YhkkJH4Pgw fG4c5jri75d6c1Ko04=; b=qvGGpJZxQUXdsKe5l6gtAZ9lQurwuV0+uHXeI8v8d BdxOl2Drhh3ZrF3+OqJith65VJ6KfagxiTTlu7nGPAkYU9Pcmw54KuuSTMymMqzX R0/Jy5sYFzYqn4yfsb08IkKxlkBvhmVjjGYJYrqsj/ESbJW3iX31o3UOIQ+g36/+ j6yRS4aNNHENgeWc2G507yFCzSjIBIoB7OMB2Ze8t/HB1fLCV11E7KJ1q66BmfIw GgMQX6STOFD1IOV4km18SLAh06fJskeiRecDT2qRrNYxKroCd9FIOCpq9r83c/PQ snops1PQk+1/eRqOsiAd528uueHqxZ+V6YP6QPrzneMbw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1661036238; x=1661122638; bh=8PRwsLk1jQA2QA8YhkkJH4PgwfG4c5jri75 d6c1Ko04=; b=vjekTynRKd5Fkv3oEdInYqODDf+o874Qk0IHxikycymqFQJWWj+ mUOFiMZ5brUNbazaEUJa+T8mNKGjPB3GgcjK4F1R+upn9fwCCX9wesA4UVUtzzF8 oJo1a3K36xH2su5GekcgXGR0KcQUSnETE+2+1I8un+DlOvd0Ks9a9oCxwrO9EVfQ 0Keqs84xKZaGqgTAtXvFluY3jNRqUF/qRns9E+kgFgvpsXjH8xbfo6/aQrhSl6Tq NLviBhz3t7H6+hl275U2LGC2SAt/Q7PX4zhLApfaky+1erMZMrlXBesvfMLuK21I NbJ6RC58kwE2RAPYQT2m1NCDuGQNw1v8VGg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrvdeigedgudeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenuchmihhsshhinhhgucfvqfcufhhivghlugculdeftd dmnegoteeftdduqddtudculdduhedmnecujfgurhephffvvefufffkofgggfestdekredt redttdenucfhrhhomheprfgvthgvrhcuffgvlhgvvhhorhihrghsuceophgvthgvrhesph hjugdruggvvheqnecuggftrfgrthhtvghrnhephfdtgfejleejleeuudegvefhleejjeel heehgfeggedvkeehfedujeegtdeggfdunecuffhomhgrihhnpehgihhthhhusgdrtghomh dpkhgvrhhnvghlrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehm rghilhhfrhhomhepphgvthgvrhesphhjugdruggvvh X-ME-Proxy: Feedback-ID: i9e814621:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 20 Aug 2022 18:57:17 -0400 (EDT) From: Peter Delevoryas To: Cc: peter@pjd.dev, patrick@stwcx.xyz, clg@kaod.org, peter.maydell@linaro.org, andrew@aj.id.au, joel@jms.id.au, qemu-arm@nongnu.org, qemu-devel@nongnu.org, dz4list@gmail.com Subject: [PATCH 0/1] hw/i2c/aspeed: Fix old reg slave receive Date: Sat, 20 Aug 2022 15:57:11 -0700 Message-Id: <20220820225712.713209-1-peter@pjd.dev> X-Mailer: git-send-email 2.37.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=66.111.4.27; envelope-from=peter@pjd.dev; helo=out3-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-arm@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Sender: "Qemu-arm" X-TUID: pdYSLYxaCWBD Hey everyone, I haven't gotten a chance to work on the Aspeed I2C controller in a little while, but I finally started looking at it again and noticed the old-register mode slave receive function (master-send-to-slave) does the wrong thing for the first byte. See the commit message for details. I noticed this because I have a qtest for slave mode rx in old-register mode downstream [1] (I'm also working on a version of the test that can be upstreamed) that broke when I updated our QEMU branch to the 7.1 release. Previously I was using Klaus's original slave I2C patches from [2]. An example of the test running successfully with this change is pasted below, for whatever that's worth. Thanks, Peter [1]: https://github.com/facebook/openbmc/blob/helium/common/recipes-devtools/qemu/qemu/0008-hw-misc-Add-byte-by-byte-i2c-network-device.patch [2]: https://lore.kernel.org/qemu-devel/20220331165737.1073520-4-its@irrelevant.dk/ # random seed: R02S5d2728d1347dc8b50533a0d85ebb1b02 # starting QEMU: exec build/qemu-system-arm -qtest unix:/tmp/qtest-711521.sock -qtest-log /dev/null -chardev socket,path=/tmp/qtest-711521.qmp,id=char0 -mon chardev=char0,mode=control -display none -machine fby35-bmc -netdev socket,id=socket0,udp=127.0.0.1:5000,localaddr=127.0.0.1:6000 -device i2c-netdev2,bus=aspeed.i2c.bus.0,address=0x32,netdev=socket0 -accel qtest i2c_netdev2_class_init i2c_netdev2_realize i2c_netdev2_can_receive 1..2 # Start of arm tests # Start of ast2600 tests # Start of i2c tests i2c_netdev2_handle_event: 1 ../hw/misc/i2c-netdev2.c: tx [64, 00, 00] ../hw/misc/i2c-netdev2.c: tx [de] ../hw/misc/i2c-netdev2.c: tx [ad] ../hw/misc/i2c-netdev2.c: tx [be] ../hw/misc/i2c-netdev2.c: tx [ef] i2c_netdev2_handle_event: 3 ../hw/misc/i2c-netdev2.c: tx [00, 00, 00, 00] i2c_netdev2_can_receive ../hw/misc/i2c-netdev2.c: rx [01, 00] i2c_netdev2_can_receive ../hw/misc/i2c-netdev2.c: rx [01, 00] i2c_netdev2_can_receive ../hw/misc/i2c-netdev2.c: rx [01, 00] i2c_netdev2_can_receive ../hw/misc/i2c-netdev2.c: rx [01, 00] i2c_netdev2_can_receive ../hw/misc/i2c-netdev2.c: rx [01, 00] ok 1 /arm/ast2600/i2c/write_in_old_byte_mode i2c_netdev2_can_receive ../hw/misc/i2c-netdev2.c: rx [20, 00, 00] prev rx_buf: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00] next rx_buf: [20, 00, 00, 00, 00, 00, 00, 00, 00, 00] i2c_netdev2_slave_mode_rx: rx_len=3 i2c_netdev2_slave_mode_rx: rx_len=3 i2c_netdev2_slave_mode_rx: guest OS ack rx, clearing rx_len i2c_netdev2_can_receive ../hw/misc/i2c-netdev2.c: rx [de] prev rx_buf: [20, 00, 00, 00, 00, 00, 00, 00, 00, 00] next rx_buf: [de, 00, 00, 00, 00, 00, 00, 00, 00, 00] i2c_netdev2_slave_mode_rx: rx_len=1 i2c_netdev2_slave_mode_rx: rx_len=1 i2c_netdev2_slave_mode_rx: guest OS ack rx, clearing rx_len i2c_netdev2_can_receive ../hw/misc/i2c-netdev2.c: rx [ad] prev rx_buf: [de, 00, 00, 00, 00, 00, 00, 00, 00, 00] next rx_buf: [ad, 00, 00, 00, 00, 00, 00, 00, 00, 00] i2c_netdev2_slave_mode_rx: rx_len=1 i2c_netdev2_slave_mode_rx: rx_len=1 i2c_netdev2_slave_mode_rx: guest OS ack rx, clearing rx_len i2c_netdev2_can_receive ../hw/misc/i2c-netdev2.c: rx [be] prev rx_buf: [ad, 00, 00, 00, 00, 00, 00, 00, 00, 00] next rx_buf: [be, 00, 00, 00, 00, 00, 00, 00, 00, 00] i2c_netdev2_slave_mode_rx: rx_len=1 i2c_netdev2_slave_mode_rx: rx_len=1 i2c_netdev2_slave_mode_rx: guest OS ack rx, clearing rx_len i2c_netdev2_can_receive ../hw/misc/i2c-netdev2.c: rx [ef] prev rx_buf: [be, 00, 00, 00, 00, 00, 00, 00, 00, 00] next rx_buf: [ef, 00, 00, 00, 00, 00, 00, 00, 00, 00] i2c_netdev2_slave_mode_rx: rx_len=1 i2c_netdev2_slave_mode_rx: rx_len=1 i2c_netdev2_slave_mode_rx: guest OS ack rx, clearing rx_len i2c_netdev2_can_receive ../hw/misc/i2c-netdev2.c: rx [ef, 00, 00, 00] prev rx_buf: [ef, 00, 00, 00, 00, 00, 00, 00, 00, 00] next rx_buf: [ef, 00, 00, 00, 00, 00, 00, 00, 00, 00] i2c_netdev2_slave_mode_rx: rx_len=4 ok 2 /arm/ast2600/i2c/slave_mode_rx_byte_buf # End of i2c tests # End of ast2600 tests # End of arm tests i2c_netdev2_nic_cleanup Peter Delevoryas (1): hw/i2c/aspeed: Fix old reg slave receive hw/i2c/aspeed_i2c.c | 8 +++++--- include/hw/i2c/aspeed_i2c.h | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) -- 2.37.1