From nobody Sat May 4 00:46:09 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630466976807486.5624669143449; Tue, 31 Aug 2021 20:29:36 -0700 (PDT) Received: from localhost ([::1]:60594 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mLGwR-0005uV-JF for importer@patchew.org; Tue, 31 Aug 2021 23:29:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57536) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mLGuZ-0002e5-0B; Tue, 31 Aug 2021 23:27:39 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]:41668) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mLGuX-0007Jx-7U; Tue, 31 Aug 2021 23:27:38 -0400 Received: by mail-pl1-x630.google.com with SMTP id e7so663615plh.8; Tue, 31 Aug 2021 20:27:36 -0700 (PDT) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id g2sm7174467pfo.154.2021.08.31.20.27.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Aug 2021 20:27:35 -0700 (PDT) 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=5t8z8W2/Z4HnNDfJxkUtulZXcpKeSL8+hbjbGr7gaxg=; b=ArUA0TJIJ0DUwnCvbGNlGvIYNv0YqgqsPZE38gsaIFGire7UT7708NYFnBAG2GZhDE 2xX7Hh0LIeN6mZ/KF2RuOdDojdAUtLD8/pZHlnByKuD+M1IAWo/g9R0rJvQ2U9WI5x5u dwl5/WDvVBdx36GG9B8bQYNp3Hbc0FJaERTbojqGL0+9LsW7lU4xgcTMtoUxPrRitFy9 ghwpXVZAXZ0Nf3kgSmuOwFv7V8vDFOQ6IpVlupxg2hrj2q5TZUmQ0VU3T06I79/L/Faq tUjlPBKoAUaOFMM5sZmZkFrwdE9L3/7g6CmXVcrNuh4bFe5XfKT5XDZCWvL9dXlvG6UM CgmQ== 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=5t8z8W2/Z4HnNDfJxkUtulZXcpKeSL8+hbjbGr7gaxg=; b=afWQ6JRGVBtDP1JFEXR+x63q/dWj4lGxFHsg08i3LpxhdXMwVXA90whSJl41xbHUjU vyphntfoVhd+l3bc3euJ59gZRJJx0vBGwyPwqD/uwtMmY82kGbPVLpNFvxlyN4SdmBnx kUjfqCcd3Xed47ujqALksrsvSoh7SNxCxVv941DEnpWVlw0F6m7j24bd7+GvCJjuolQO SpxF91MdJvAV2iN30ttAMANrL67Uoi4aXsbiBzAWDNDU4JyMgjAlNJm9gjxbOC4RKCWT VTrIk4z295EtwUgQNZrugEiVyc01P6vR1z+504gEKL7Vd0mt0mnLKOqZmxkF1lIj9M2K K+rg== X-Gm-Message-State: AOAM5328vqxiY7Qv02RVxVyjslX5P9235XCTiROPOke74dUeCVZqdrxT 2vSNeflRCD74uCq6+Jf8vIX7jJZuvJb5Wg== X-Google-Smtp-Source: ABdhPJzrrH6veZSDbQtR00l4f5Gn3E0Qzxbq5dbVnKVWLxx3WKq+GQxDm0ZaBSmIbx0F4QDOuEjJEw== X-Received: by 2002:a17:902:a415:b029:129:5342:eab7 with SMTP id p21-20020a170902a415b02901295342eab7mr7663547plq.26.1630466855399; Tue, 31 Aug 2021 20:27:35 -0700 (PDT) From: Bin Meng To: Damien Hedde , "Edgar E . Iglesias" , Alistair Francis , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 1/5] hw/misc: zynq_slcr: Correctly compute output clocks in the reset exit phase Date: Wed, 1 Sep 2021 11:27:20 +0800 Message-Id: <20210901032724.23256-2-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210901032724.23256-1-bmeng.cn@gmail.com> References: <20210901032724.23256-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=bmeng.cn@gmail.com; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1630467878890100001 Content-Type: text/plain; charset="utf-8" As of today, when booting upstream U-Boot for Xilinx Zynq, the UART does not receive anything. Debugging shows that the UART input clock frequency is zero which prevents the UART from receiving anything as per the logic in uart_receive(). From zynq_slcr_reset_exit() comment, it intends to compute output clocks according to ps_clk and registers. zynq_slcr_compute_clocks() is called to accomplish the task, inside which device_is_in_reset() is called to actually make the attempt in vain. Rework reset_hold() and reset_exit() so that in the reset exit phase, the logic can really compute output clocks in reset_exit(). With this change, upstream U-Boot boots properly again with: $ qemu-system-arm -M xilinx-zynq-a9 -m 1G -display none -serial null -seria= l stdio \ -device loader,file=3Du-boot-dtb.bin,addr=3D0x4000000,cpu-num=3D0 Fixes: 38867cb7ec90 ("hw/misc/zynq_slcr: add clock generation for uarts") Signed-off-by: Bin Meng Acked-by: Alistair Francis Reviewed-by: Edgar E. Iglesias --- (no changes since v1) hw/misc/zynq_slcr.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c index 5086e6b7ed..8b70285961 100644 --- a/hw/misc/zynq_slcr.c +++ b/hw/misc/zynq_slcr.c @@ -269,6 +269,21 @@ static uint64_t zynq_slcr_compute_clock(const uint64_t= periods[], zynq_slcr_compute_clock((plls), (state)->regs[reg], \ reg ## _ ## enable_field ## _SHIFT) =20 +static void zynq_slcr_compute_clocks_internal(ZynqSLCRState *s, uint64_t p= s_clk) +{ + uint64_t io_pll =3D zynq_slcr_compute_pll(ps_clk, s->regs[R_IO_PLL_CTR= L]); + uint64_t arm_pll =3D zynq_slcr_compute_pll(ps_clk, s->regs[R_ARM_PLL_C= TRL]); + uint64_t ddr_pll =3D zynq_slcr_compute_pll(ps_clk, s->regs[R_DDR_PLL_C= TRL]); + + uint64_t uart_mux[4] =3D {io_pll, io_pll, arm_pll, ddr_pll}; + + /* compute uartX reference clocks */ + clock_set(s->uart0_ref_clk, + ZYNQ_COMPUTE_CLK(s, uart_mux, R_UART_CLK_CTRL, CLKACT0)); + clock_set(s->uart1_ref_clk, + ZYNQ_COMPUTE_CLK(s, uart_mux, R_UART_CLK_CTRL, CLKACT1)); +} + /** * Compute and set the ouputs clocks periods. * But do not propagate them further. Connected clocks @@ -283,17 +298,7 @@ static void zynq_slcr_compute_clocks(ZynqSLCRState *s) ps_clk =3D 0; } =20 - uint64_t io_pll =3D zynq_slcr_compute_pll(ps_clk, s->regs[R_IO_PLL_CTR= L]); - uint64_t arm_pll =3D zynq_slcr_compute_pll(ps_clk, s->regs[R_ARM_PLL_C= TRL]); - uint64_t ddr_pll =3D zynq_slcr_compute_pll(ps_clk, s->regs[R_DDR_PLL_C= TRL]); - - uint64_t uart_mux[4] =3D {io_pll, io_pll, arm_pll, ddr_pll}; - - /* compute uartX reference clocks */ - clock_set(s->uart0_ref_clk, - ZYNQ_COMPUTE_CLK(s, uart_mux, R_UART_CLK_CTRL, CLKACT0)); - clock_set(s->uart1_ref_clk, - ZYNQ_COMPUTE_CLK(s, uart_mux, R_UART_CLK_CTRL, CLKACT1)); + zynq_slcr_compute_clocks_internal(s, ps_clk); } =20 /** @@ -416,7 +421,7 @@ static void zynq_slcr_reset_hold(Object *obj) ZynqSLCRState *s =3D ZYNQ_SLCR(obj); =20 /* will disable all output clocks */ - zynq_slcr_compute_clocks(s); + zynq_slcr_compute_clocks_internal(s, 0); zynq_slcr_propagate_clocks(s); } =20 @@ -425,7 +430,7 @@ static void zynq_slcr_reset_exit(Object *obj) ZynqSLCRState *s =3D ZYNQ_SLCR(obj); =20 /* will compute output clocks according to ps_clk and registers */ - zynq_slcr_compute_clocks(s); + zynq_slcr_compute_clocks_internal(s, clock_get(s->ps_clk)); zynq_slcr_propagate_clocks(s); } =20 --=20 2.25.1 From nobody Sat May 4 00:46:09 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630467107987754.5805294012745; Tue, 31 Aug 2021 20:31:47 -0700 (PDT) Received: from localhost ([::1]:39982 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mLGyY-0002cx-W4 for importer@patchew.org; Tue, 31 Aug 2021 23:31:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57620) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mLGur-0003BD-S1; Tue, 31 Aug 2021 23:27:57 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]:36757) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mLGua-0007Ln-VW; Tue, 31 Aug 2021 23:27:57 -0400 Received: by mail-pf1-x42c.google.com with SMTP id m26so968461pff.3; Tue, 31 Aug 2021 20:27:38 -0700 (PDT) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id g2sm7174467pfo.154.2021.08.31.20.27.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Aug 2021 20:27:37 -0700 (PDT) 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=DnvfBbmV9W5QaBw9cjpxj3O1smfoTH7OnL+gTgkQoPM=; b=ExY3FnHZhAO1HlfjWHvbyrQlEXCi4N4NiX169sAGQ5e9TY0hXuMvLxgMvnQ8Bc2mEf kHvXY96klRE6cyUj9B+jkGzPLWoSaPw2PmYz5OZFh7lah9W5r24JKfX4pcFbkGrdYwGE aIKCUvnyKGR/QA2Bknb7oH+U9cVRlXOQOMZRe2igIcAHF1lLeC1OITnOzpg9a8yGwKY8 txAamI7YuyNnUIuoX33m4zJMyO1ihhw2suq6LN3jKMCi4jnU+qX9rGkIepDG2pCJg7q1 gDX9j1zqHYkvtX9kUNy6mwXa5+VWgUeMafi+3+sQ5GJ8Nb403878fLyTN06KcJFv1u0y 2Qyg== 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=DnvfBbmV9W5QaBw9cjpxj3O1smfoTH7OnL+gTgkQoPM=; b=XdUEfgCu0ijg2HLcVGc8GM3ePUvh71gnCg9q7HBux+ZCqqATzTjx0sqfwrMOZXBipT +rFhuvPQfOzGqjnYsHttx/aRfY21H1aQU31fiXipN5NszJ60UA+lTEcyeiLra9MpqNpv wEeFVd5WCL5IyY63CdI/f5ofuMaK7Rfz50bL2Qe7yBsg+dIh+sYlEEyBpnXZP7zSZLd2 vS2Om/glVFEBLJmU6oybSkeGhLQYvuCM5MpfQAEphxHr7CW/b2yAZJe1ZiAwdoxEGSnK 7ZV68h1/ekTaVn0py1Luia9CbEOx6l+7UELNKi2aqfcbCYWmKSlL/neJOkpkGYefOOnM 9zww== X-Gm-Message-State: AOAM53210W2/KkFSWa0pFpEDTSDX0YiscHP7owxX9JwmiCHG2D/85OIx wxRvzeJicSsU31plQjdQD24= X-Google-Smtp-Source: ABdhPJwxEwau+/yCmebBkT+0dgQOhLphqpVDZGSGrYhNidz7WthZJNIYmPKJ8Vcn77NJMZ8Doaql4g== X-Received: by 2002:a63:3c5d:: with SMTP id i29mr29623631pgn.147.1630466858033; Tue, 31 Aug 2021 20:27:38 -0700 (PDT) From: Bin Meng To: Damien Hedde , "Edgar E . Iglesias" , Alistair Francis , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 2/5] hw/char: cadence_uart: Disable transmit when input clock is disabled Date: Wed, 1 Sep 2021 11:27:21 +0800 Message-Id: <20210901032724.23256-3-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210901032724.23256-1-bmeng.cn@gmail.com> References: <20210901032724.23256-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=bmeng.cn@gmail.com; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1630467108868100001 Content-Type: text/plain; charset="utf-8" At present when input clock is disabled, any character transmitted to tx fifo can still show on the serial line, which is wrong. Fixes: b636db306e06 ("hw/char/cadence_uart: add clock support") Signed-off-by: Bin Meng Reviewed-by: Alistair Francis --- (no changes since v1) hw/char/cadence_uart.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index b4b5e8a3ee..154be34992 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -327,6 +327,11 @@ static gboolean cadence_uart_xmit(void *do_not_use, GI= OCondition cond, static void uart_write_tx_fifo(CadenceUARTState *s, const uint8_t *buf, int size) { + /* ignore characters when unclocked or in reset */ + if (!clock_is_enabled(s->refclk) || device_is_in_reset(DEVICE(s))) { + return; + } + if ((s->r[R_CR] & UART_CR_TX_DIS) || !(s->r[R_CR] & UART_CR_TX_EN)) { return; } --=20 2.25.1 From nobody Sat May 4 00:46:09 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630466976708380.62304962499275; Tue, 31 Aug 2021 20:29:36 -0700 (PDT) Received: from localhost ([::1]:60580 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mLGwR-0005u7-FO for importer@patchew.org; Tue, 31 Aug 2021 23:29:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57608) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mLGum-0002wV-Lf; Tue, 31 Aug 2021 23:27:52 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]:38863) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mLGud-0007Ni-Ot; Tue, 31 Aug 2021 23:27:52 -0400 Received: by mail-pl1-x62b.google.com with SMTP id u1so674058plq.5; Tue, 31 Aug 2021 20:27:41 -0700 (PDT) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id g2sm7174467pfo.154.2021.08.31.20.27.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Aug 2021 20:27:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OlYdG5CL+Flfktq7nA7fm3IZi6O9XqY7j7tbZJONm54=; b=k+qW6L40H3D6wKBWfcfK/pzvrYEwVP5XD02SkVm3fWZkb5EWwkoMwtZ8oUbhnGjiO7 JuiIJ+nTgUVFFoY0t6GTPxs9SwKm8ycsXEJcetb7KIqy6ofUQErLpBz1dknnhYLIfeV+ NE7Xy3c/i+/WCxS7/c4677ZZhSn0JD4QHHr6ULdmPNvyzVWsd7BlAmmD2O5bElkozQad bF/zYcCjuynIRszCEbkoR/1rOljZw7P/bmQGZLao+MmhSoZ4sRCBbiHhO9mYDAhYH837 XHnJFj+CmLC6kE/ajt3VnL2vBSFD3mWgwFpJy+wMeKz1hT0NBt2uK1J0DGuC2B7ZrRcU dDCQ== 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=OlYdG5CL+Flfktq7nA7fm3IZi6O9XqY7j7tbZJONm54=; b=m4AMTu/TkCB9ROuCWly3pNPq6hi0kOeXXjd6ILY+jCX0gON+h7ta2ihvgejiVsKuEh zUEbjL2T/sgYkr2rW+zYtE7ZOH103rdAF8zblIrHIHLvQB+huT1Ylzwl643C4hUzvZ34 Bya7VFzBxAhvJa61L/lZ+cA7jWFKGDInDN8HSLEiDpQcLYabf+fQnS6irjGBlnZ43j6U T9kD5FYWgK9pAqIwAxa5jayrQjJ1Czczx/fdgrQAhXzXSvDo+4AktZcg2F4f7giUKCUL V8e1J7SV3XfqjtHc1GEf/p3R6Ax//peuKHcAQKoPp03q23kooE3cUI3V473uP5aLQdX/ D6Xw== X-Gm-Message-State: AOAM531rB519jyfLpJYS11l3t1rxTDG5KynbqHjrKsPibpxMHCltnDIf Yb9eq9rqqdLq5PlOI0dEiKI= X-Google-Smtp-Source: ABdhPJxCcpLeW+whdvs8Cf8z3X0FGs1okwsEZThohhupBiLRU3B1pR4530J4fTbyiphogj48zMyPaw== X-Received: by 2002:a17:90b:155:: with SMTP id em21mr9245848pjb.116.1630466860544; Tue, 31 Aug 2021 20:27:40 -0700 (PDT) From: Bin Meng To: Damien Hedde , "Edgar E . Iglesias" , Alistair Francis , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 3/5] hw/char: cadence_uart: Move clock/reset check to uart_can_receive() Date: Wed, 1 Sep 2021 11:27:22 +0800 Message-Id: <20210901032724.23256-4-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210901032724.23256-1-bmeng.cn@gmail.com> References: <20210901032724.23256-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=bmeng.cn@gmail.com; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1630466977524100001 Content-Type: text/plain; charset="utf-8" Currently the clock/reset check is done in uart_receive(), but we can move the check to uart_can_receive() which is earlier. Signed-off-by: Bin Meng Reviewed-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- Changes in v2: - avoid declaring variables mid-scope hw/char/cadence_uart.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index 154be34992..fff8be3619 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -235,8 +235,16 @@ static void uart_parameters_setup(CadenceUARTState *s) static int uart_can_receive(void *opaque) { CadenceUARTState *s =3D opaque; - int ret =3D MAX(CADENCE_UART_RX_FIFO_SIZE, CADENCE_UART_TX_FIFO_SIZE); - uint32_t ch_mode =3D s->r[R_MR] & UART_MR_CHMODE; + int ret; + uint32_t ch_mode; + + /* ignore characters when unclocked or in reset */ + if (!clock_is_enabled(s->refclk) || device_is_in_reset(DEVICE(s))) { + return 0; + } + + ret =3D MAX(CADENCE_UART_RX_FIFO_SIZE, CADENCE_UART_TX_FIFO_SIZE); + ch_mode =3D s->r[R_MR] & UART_MR_CHMODE; =20 if (ch_mode =3D=3D NORMAL_MODE || ch_mode =3D=3D ECHO_MODE) { ret =3D MIN(ret, CADENCE_UART_RX_FIFO_SIZE - s->rx_count); @@ -358,11 +366,6 @@ static void uart_receive(void *opaque, const uint8_t *= buf, int size) CadenceUARTState *s =3D opaque; uint32_t ch_mode =3D s->r[R_MR] & UART_MR_CHMODE; =20 - /* ignore characters when unclocked or in reset */ - if (!clock_is_enabled(s->refclk) || device_is_in_reset(DEVICE(s))) { - return; - } - if (ch_mode =3D=3D NORMAL_MODE || ch_mode =3D=3D ECHO_MODE) { uart_write_rx_fifo(opaque, buf, size); } --=20 2.25.1 From nobody Sat May 4 00:46:09 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630467074161123.32480790047066; Tue, 31 Aug 2021 20:31:14 -0700 (PDT) Received: from localhost ([::1]:38966 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mLGy1-0001rn-5x for importer@patchew.org; Tue, 31 Aug 2021 23:31:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57600) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mLGul-0002uS-UQ; Tue, 31 Aug 2021 23:27:51 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]:38538) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mLGuf-0007PX-1F; Tue, 31 Aug 2021 23:27:51 -0400 Received: by mail-pf1-x431.google.com with SMTP id s29so960129pfw.5; Tue, 31 Aug 2021 20:27:44 -0700 (PDT) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id g2sm7174467pfo.154.2021.08.31.20.27.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Aug 2021 20:27:42 -0700 (PDT) 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=KiJerEA0l1Mswg17/MFGeGT8EJtomWZFVBztll3kflk=; b=pdsvOHX2UrI1MoHztGRzHzXaam97w2oIj91hi6pcSmFZOXEQURK8X12nvBOAJn7kOG haXxcA9nBHgVgz/u1b3OfAeHjO1r07X+bU7TioEMRS8DXLkPTC0QoIQvWEJW95/4YXzy MbpnVNh0DcZANvqMO2Nxx5yHlTl5s31W3hbjNmAXZyqJgGSJb6nDT/3PNCF4ZkroUn9I El/bE8aw5vy4tkFLtmUzVwJoiRoL7CXH95/nDtj0jyaOssckwDXx+Bs2S3HCjAKkt02p zt0I6fnoO9rMnufmU0C8IIrwDcu3VXEeM+Z+OygGOY/hcDf9ZjzNBuH1gQ8ODTujwqaw thFQ== 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=KiJerEA0l1Mswg17/MFGeGT8EJtomWZFVBztll3kflk=; b=l18g+e+U05Ec95fukuO+A8qQ4w5lB3qsvaJYfCk4be87twIdFfsk9xYXehU40ME50C ZkLUFcQt1kUwGV7IGOCqSAXxa9DE/0qhv6WGMGsgbfkD8h/v+C01o1GE+MzsS0eSUB3q CmRrm4K8OQrhN62wUPjh3cg7R6VCrNhF5FU9/DDIzx+3fMVmQ19fOG/zd2qdLIFeASEA +cpX/wNuTxiM6g+k+rU2BcctVARp1bEUr48ncTQtPsLB1MeOOK5cOvZ0naFUJTnieH8P 5/22AorHaAMesfMStNTsgpzerEJx4ooB6ujViPKZ6TBF/DikawqmLLF1TpecXMQZah/e lA4w== X-Gm-Message-State: AOAM530srTzz0arPx0oc4PPyYigrP5yCTRBBI2FbZZC23ff2ipCHYKwr suFueb2YZ31FfIbmJlzLhS8= X-Google-Smtp-Source: ABdhPJyRW2DfrMV2KM/myM3MukBjJaBnMoTalyChiTdXHVyyAMcN3Ak0dHzYIBV678/SecJ6KGextQ== X-Received: by 2002:a63:f913:: with SMTP id h19mr29449356pgi.351.1630466863081; Tue, 31 Aug 2021 20:27:43 -0700 (PDT) From: Bin Meng To: Damien Hedde , "Edgar E . Iglesias" , Alistair Francis , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 4/5] hw/char: cadence_uart: Convert to memop_with_attrs() ops Date: Wed, 1 Sep 2021 11:27:23 +0800 Message-Id: <20210901032724.23256-5-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210901032724.23256-1-bmeng.cn@gmail.com> References: <20210901032724.23256-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=bmeng.cn@gmail.com; helo=mail-pf1-x431.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1630467075459100001 Content-Type: text/plain; charset="utf-8" This converts uart_read() and uart_write() to memop_with_attrs() ops. Signed-off-by: Bin Meng Reviewed-by: Alistair Francis --- Changes in v2: - new patch: hw/char: cadence_uart: Convert to memop_with_attrs() ops hw/char/cadence_uart.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index fff8be3619..8bcf2b718a 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -411,15 +411,15 @@ static void uart_read_rx_fifo(CadenceUARTState *s, ui= nt32_t *c) uart_update_status(s); } =20 -static void uart_write(void *opaque, hwaddr offset, - uint64_t value, unsigned size) +static MemTxResult uart_write(void *opaque, hwaddr offset, + uint64_t value, unsigned size, MemTxAttrs at= trs) { CadenceUARTState *s =3D opaque; =20 DB_PRINT(" offset:%x data:%08x\n", (unsigned)offset, (unsigned)value); offset >>=3D 2; if (offset >=3D CADENCE_UART_R_MAX) { - return; + return MEMTX_DECODE_ERROR; } switch (offset) { case R_IER: /* ier (wts imr) */ @@ -466,30 +466,34 @@ static void uart_write(void *opaque, hwaddr offset, break; } uart_update_status(s); + + return MEMTX_OK; } =20 -static uint64_t uart_read(void *opaque, hwaddr offset, - unsigned size) +static MemTxResult uart_read(void *opaque, hwaddr offset, + uint64_t *value, unsigned size, MemTxAttrs at= trs) { CadenceUARTState *s =3D opaque; uint32_t c =3D 0; =20 offset >>=3D 2; if (offset >=3D CADENCE_UART_R_MAX) { - c =3D 0; - } else if (offset =3D=3D R_TX_RX) { + return MEMTX_DECODE_ERROR; + } + if (offset =3D=3D R_TX_RX) { uart_read_rx_fifo(s, &c); } else { - c =3D s->r[offset]; + c =3D s->r[offset]; } =20 DB_PRINT(" offset:%x data:%08x\n", (unsigned)(offset << 2), (unsigned)= c); - return c; + *value =3D c; + return MEMTX_OK; } =20 static const MemoryRegionOps uart_ops =3D { - .read =3D uart_read, - .write =3D uart_write, + .read_with_attrs =3D uart_read, + .write_with_attrs =3D uart_write, .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 --=20 2.25.1 From nobody Sat May 4 00:46:09 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630466986285956.846746654696; Tue, 31 Aug 2021 20:29:46 -0700 (PDT) Received: from localhost ([::1]:33250 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mLGwb-0006UX-9S for importer@patchew.org; Tue, 31 Aug 2021 23:29:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57606) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mLGum-0002wG-Jn; Tue, 31 Aug 2021 23:27:52 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]:34587) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mLGuh-0007Ri-B5; Tue, 31 Aug 2021 23:27:52 -0400 Received: by mail-pg1-x530.google.com with SMTP id x4so1389644pgh.1; Tue, 31 Aug 2021 20:27:46 -0700 (PDT) Received: from i9-aorus-gtx1080.localdomain (144.168.56.201.16clouds.com. [144.168.56.201]) by smtp.gmail.com with ESMTPSA id g2sm7174467pfo.154.2021.08.31.20.27.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Aug 2021 20:27:45 -0700 (PDT) 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=S6XOMnBqg+q/iZwtkF+R3AtXykZOGfgLhZhWsHmX3Ho=; b=ZO/GJwtXodtXPk3GYDAVBqcNc+qE0ZHXbIh7md2iy6m5iGOrMJJNzcWXi7H2T+82xY Tl4Joh3fmEMkAWKz1EqHVtGvS/sVZG9v3Rdhr4Xfyurz60xaqB49HrZS98kczwdR6xKY UuljagPG9H8EJN822il1ROB8UC+9orYiJ+gWg6R6Z3k2Qerg/qdx5g3NK+V6C94P+k5/ 4NpWAAys0qLFHYhSXSa3qBfccwH4I1TUlZBcf1GhlNGvr+YNAK21U9nlmSBR+JsXGoVu IHRMjuVZ+bKkKJWTelEowrqgoXE7+eFb09HcHlccVqh/RXiFmUwLenFyixHo/MljsITC nS4g== 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=S6XOMnBqg+q/iZwtkF+R3AtXykZOGfgLhZhWsHmX3Ho=; b=mV8dlnBbRVxmDmZWzz7lX8KPJdk5J0p2sq4TJ5mB0Jiew0UoKFOgZGOOtyqFv7IDVh nAZDjyDXc15wObs/Dajvn9fa1gbDeHAuTaD87Ic9u+VwDfAq1aOsz7NoC5HHDgdUnBqD dFvV1pxxRzXZAOCzPUO1C6iPs38axsCX2rgW5tfkBWAy8gU0bQJFdmE1KR3YgInirF9R FqCaJsU1cvxZ4qOd6hLYn+HktiONxwKvmlaiO51IIGCqtQF1Dfx8C/Nzt1MBS2pfDSgD KVGNT/yAJhZtrq20RrGMOfQ32wQggO7+rQo0L9sXSYxeg4SY+SrFShFTfZ5X34GCRrjH rsAg== X-Gm-Message-State: AOAM531Lv8COmTQusWKHLjv4sJIBFDHoWxl29tGqkdOAI3h7PjdibJmv Gecc36Lu/jkLrz9oyurkCfI= X-Google-Smtp-Source: ABdhPJx5tF+09mkPULGsh/KcEkeriuKnyxIjREhKW6v5b3Wj4AiFPgwIY39XfLpJHIUORXsc94qA8g== X-Received: by 2002:a05:6a00:1a88:b0:407:1f7c:60b9 with SMTP id e8-20020a056a001a8800b004071f7c60b9mr3667597pfv.77.1630466865652; Tue, 31 Aug 2021 20:27:45 -0700 (PDT) From: Bin Meng To: Damien Hedde , "Edgar E . Iglesias" , Alistair Francis , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 5/5] hw/char: cadence_uart: Ignore access when unclocked or in reset for uart_{read, write}() Date: Wed, 1 Sep 2021 11:27:24 +0800 Message-Id: <20210901032724.23256-6-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210901032724.23256-1-bmeng.cn@gmail.com> References: <20210901032724.23256-1-bmeng.cn@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=bmeng.cn@gmail.com; helo=mail-pg1-x530.google.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.2 / 5.0 requ) DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1630466988010100005 Content-Type: text/plain; charset="utf-8" Read or write to uart registers when unclocked or in reset should be ignored. Add the check there, and as a result of this, the check in uart_write_tx_fifo() is now unnecessary. Signed-off-by: Bin Meng Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- Changes in v2: - new patch: hw/char: cadence_uart: Ignore access when unclocked or in rese= t for uart_{read,write}() hw/char/cadence_uart.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index 8bcf2b718a..5f5a4645ac 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -335,11 +335,6 @@ static gboolean cadence_uart_xmit(void *do_not_use, GI= OCondition cond, static void uart_write_tx_fifo(CadenceUARTState *s, const uint8_t *buf, int size) { - /* ignore characters when unclocked or in reset */ - if (!clock_is_enabled(s->refclk) || device_is_in_reset(DEVICE(s))) { - return; - } - if ((s->r[R_CR] & UART_CR_TX_DIS) || !(s->r[R_CR] & UART_CR_TX_EN)) { return; } @@ -416,6 +411,11 @@ static MemTxResult uart_write(void *opaque, hwaddr off= set, { CadenceUARTState *s =3D opaque; =20 + /* ignore access when unclocked or in reset */ + if (!clock_is_enabled(s->refclk) || device_is_in_reset(DEVICE(s))) { + return MEMTX_ERROR; + } + DB_PRINT(" offset:%x data:%08x\n", (unsigned)offset, (unsigned)value); offset >>=3D 2; if (offset >=3D CADENCE_UART_R_MAX) { @@ -476,6 +476,11 @@ static MemTxResult uart_read(void *opaque, hwaddr offs= et, CadenceUARTState *s =3D opaque; uint32_t c =3D 0; =20 + /* ignore access when unclocked or in reset */ + if (!clock_is_enabled(s->refclk) || device_is_in_reset(DEVICE(s))) { + return MEMTX_ERROR; + } + offset >>=3D 2; if (offset >=3D CADENCE_UART_R_MAX) { return MEMTX_DECODE_ERROR; --=20 2.25.1