From patchwork Thu Feb 20 09:28:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13983559 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9D13AC021B1 for ; Thu, 20 Feb 2025 09:30:56 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tl2sD-0008GQ-1E; Thu, 20 Feb 2025 04:29:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tl2sB-0008G2-0j for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:29:35 -0500 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tl2s9-0003Qp-FB for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:29:34 -0500 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-221050f3f00so13053655ad.2 for ; Thu, 20 Feb 2025 01:29:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740043771; x=1740648571; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YvVgNJ/E5bcHmFtQhvSS1dYamLv2zmBpjT3Espofk2I=; b=O6vXiRKOLWTfNJ+gvtzjELWrXHwl8RkzwfAUZrVi50YrP1Nh3xTWYzdnKKCLi1hGyd +24imDDGtakOdjlrFy/g6J9KdecZFaGAK4k0m8cI01D7LZbkpHwxM6AEvVlcrQUJXTFC H60YQTK+9dnuJ8CtBrE9rqv8r5D6ENOIMABS1TThmmG2T6AN0fU23TB544v+DsRq4j7P lT5SWxMMNvDgZOXRyBtecqjrvBqcQr1fWLxAea3dH2PGF2IzTrnUFauSqVFvfyY6D1w7 SJkiP1kAKFX0OtO+5+Y6L+MoyZmWDYWMegYzV3xpASHLgYIvGhg7+svR3ZHcq3K7eXKS 71KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740043771; x=1740648571; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YvVgNJ/E5bcHmFtQhvSS1dYamLv2zmBpjT3Espofk2I=; b=Bsm90OaBL5AwreAsFFkrHDpd/bnhISulzjjR3bTKzBM4t75xzMXGaqrnMeQ6FwOuM4 ivALGom3qjv38iQ5WuuKR7c80nh53iwaMun6W8d1V0IyzJEAydvBHHaCg7LJxY3MXdyq fPPsxUgnVgD7ofj3zIpRj+L3mhnlXxPOa138sNlWtGLifypX9+t5zdNBdNC4TfmWiYpg AL4iQsR05bGD2DJA73UornK50PiiOz8/rZfv5sDhIM4vxYUgrw8cqVbbc0VFztGaUTyL aJjZiyA+JBclbJ2eRL0F/BH1v67CIV92wiVUCGUCG2utt8uJlurh0Yq1IY1EUTq7BS98 Wehw== X-Gm-Message-State: AOJu0YyJVZs+xD+Ooni7TXryq+iH9CtST2gHi/jzeqco4EmfygVGTez7 EPBAkP6IZ0ILznh4lW53QGm0jrL2sPGB7t/n47PS4o+Y7HTO2VKyRF0cwWYHfWsO2ttoRbBCGFH d+eY= X-Gm-Gg: ASbGncvlWjxONN5YlgWJoL7no3noHtmQT09BAc1bqsMByO5sxk6EicOAt4gM5/BOtgB HmjlLJN1gQs+01Z5JhmYD0LVt5zS/jTNsXTpR8UO9qNO8mlTUZD+mp94FLE8lo8h01+NjYOxho1 xdA5FjB+zurKDa8x3VXWIgv0oZBpEzCfyhgbb77Vm3Ol4f2Ry1NQh1iQ+rVgdcUOhc2xX1jgtz1 CSP4uhpB0IdgQrQ1AqRuhvyfQS0A2WltjBwmzTeg8Kwe7wgbSHv0OZWJK7kgP+9nUqHOswxKIfj ZD3ZQGyYiKdXxjBmWgFpVHOuss0Y8JoD6EKxvpXY+9n7+7w98u945qe7Q7TaLrZPvg== X-Google-Smtp-Source: AGHT+IGz1/2rco9w0NsUMI3Bogl20f+NwzvY99BxTc3Zo+a38NqQzxwOJpfAGgW5KrZjoc4ZoRcQEA== X-Received: by 2002:aa7:888e:0:b0:730:8d25:4c24 with SMTP id d2e1a72fcca58-7326179e908mr31597617b3a.10.1740043771021; Thu, 20 Feb 2025 01:29:31 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73264729945sm10067375b3a.179.2025.02.20.01.29.23 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Feb 2025 01:29:30 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?A?= =?utf-8?q?lex_Benn=C3=A9e?= , Magnus Damm , Thomas Huth , Shin'ichiro Kawasaki , Rayhan Faizel , qemu-arm@nongnu.org, Evgeny Iakovlev , Paolo Bonzini , Peter Maydell , Luc Michel , Yoshinori Sato , Richard Henderson Subject: [PATCH v2 1/9] hw/char/pl011: Warn when using disabled receiver Date: Thu, 20 Feb 2025 10:28:54 +0100 Message-ID: <20250220092903.3726-2-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250220092903.3726-1-philmd@linaro.org> References: <20250220092903.3726-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=philmd@linaro.org; helo=mail-pl1-x629.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, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org We shouldn't receive characters when the full UART or its receiver is disabled. However we don't want to break the possibly incomplete "my first bare metal assembly program"s, so we choose to simply display a warning when this occurs. Reviewed-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Luc Michel --- hw/char/pl011.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/char/pl011.c b/hw/char/pl011.c index 06ce851044d..12a2d4bc7bd 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -85,6 +85,7 @@ DeviceState *pl011_create(hwaddr addr, qemu_irq irq, Chardev *chr) #define CR_OUT1 (1 << 12) #define CR_RTS (1 << 11) #define CR_DTR (1 << 10) +#define CR_RXE (1 << 9) #define CR_TXE (1 << 8) #define CR_LBE (1 << 7) #define CR_UARTEN (1 << 0) @@ -487,6 +488,14 @@ static int pl011_can_receive(void *opaque) PL011State *s = (PL011State *)opaque; int r; + if (!(s->cr & CR_UARTEN)) { + qemu_log_mask(LOG_GUEST_ERROR, + "PL011 receiving data on disabled UART\n"); + } + if (!(s->cr & CR_RXE)) { + qemu_log_mask(LOG_GUEST_ERROR, + "PL011 receiving data on disabled RX UART\n"); + } r = s->read_count < pl011_get_fifo_depth(s); trace_pl011_can_receive(s->lcr, s->read_count, r); return r; From patchwork Thu Feb 20 09:28:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13983554 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D2E12C021B1 for ; Thu, 20 Feb 2025 09:30:36 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tl2sV-0008Ol-1N; Thu, 20 Feb 2025 04:29:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tl2sR-0008Lk-3j for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:29:51 -0500 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tl2sO-0003TV-N0 for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:29:50 -0500 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-22128b7d587so11508115ad.3 for ; Thu, 20 Feb 2025 01:29:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740043787; x=1740648587; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=U+pfJWALs0vQU6dXlJLT5cjO4jcFzB6bulUI2QERKYM=; b=DFgbUxZ0PuPq0+WoDLjMqncYOM/EDhd4xxq+UPL0QBnrpBdgiiCXsDeJRaj5XYWxAT sbatLWuFHiOUYPcCSWPXJGZj8+x+r8ZKn9reHCCw693gWV4IhmeJ5UQcqTWBaUEst8ZZ nVhq4Wa4Jtmu0patd6v5HjO0ackg0Q4AEY1WDOTuF3lxwjsr6lUeWE585wE8IhdiCy0J S6YoJj2akrYiOw8+imeS04zpsYgUYw7w22INcrwLLxIAIIgCrxPhi+9FJVxWJ/k+fx1D c2iEXAJpAKAqbXyczkzrde9Ie6pB9160oJUDD7Cb5/petslKfnHoy42ihRe6ihUQCfOj 7mrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740043787; x=1740648587; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=U+pfJWALs0vQU6dXlJLT5cjO4jcFzB6bulUI2QERKYM=; b=aMJnc6uGjeq3nCijGX8OiHX6Jqd/kPAls9r6RSCIKMKLFXPq9PppihPuQ3vPzkPXDL X/1+B6qpmcYBuJojCrcr6uBufswL0rQqX6jf41emiXhQhbLWDSa619G0JdQoBhO50jkX i0jpiYNwLOFfhRPv06rSoi/2Q5U6mmjzKQ9k02DMLZsivV/L6zeS2Yq9QTcIVY2bLQ3w b4IaVeN0oLsU8/ZkI+4Ip3JTbdTfNzPdmPuNNadO3sMywAriwxuLuiqh13bbUJ8qygP0 qKxAHDQnZS1m2epdSeSASNfQMaKBKO2uVBgqY4w3ZheyZEEy9ck93GsPveUU/7PVkUsm n8HA== X-Gm-Message-State: AOJu0YzYYmQ6L6qiNCD4/FKbEzO8Rs51dxuFBPdI7m97G5U//XzIPUUQ K1c6ukzUCEByZ/AG6Z933Iv5eBdOIU7cCedZtNN6mMNK4gyHsE7MlE7wqrHHeg6jo7dkf9Xx2PY IwSc= X-Gm-Gg: ASbGncumuM8Dv0kLA3YbanSTTrKXjI4Jsue0vT/3x9Dklp7FBQi3Gk9EYnU+bM3yIi6 myqi3Z/V4HBvVU3gp73Oh1srETaYoLD+uj+2Ss2TG9zCJGknjivG79nLKsmUXwTfr2I2RcBnqgg RH9xNjizklCTYHYV9vPZrcWXK3zBsfJfNvPwzEFpv7BPsnmwjs8Jd2/xlFtbQvlTnHPndO0xD5z 82+fY2GkiCF+TAy2VPZFhYsFYwUiikDxsY73t7j96gKlETp7qf1TeGD1QeplhHlqSwgAXaRNEZC 5BZaFYBkNBpUvU22mn+JSKywbxurZ9LWVt+9L+1690jPmkBRtNP7to0PN7D9QGkhjA== X-Google-Smtp-Source: AGHT+IFyDy+RMBEpTTStJH+i0NYoLasO08MPlQLnRqLRNU6PKPwJhJWBkMvplmAlz/1P8as+vVIHJQ== X-Received: by 2002:aa7:88c5:0:b0:732:1d12:ded4 with SMTP id d2e1a72fcca58-7329de6ecc9mr11147509b3a.7.1740043786895; Thu, 20 Feb 2025 01:29:46 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73264729945sm10067857b3a.179.2025.02.20.01.29.39 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Feb 2025 01:29:46 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?A?= =?utf-8?q?lex_Benn=C3=A9e?= , Magnus Damm , Thomas Huth , Shin'ichiro Kawasaki , Rayhan Faizel , qemu-arm@nongnu.org, Evgeny Iakovlev , Paolo Bonzini , Peter Maydell , Luc Michel , Yoshinori Sato Subject: [PATCH v2 2/9] hw/char/pl011: Simplify a bit pl011_can_receive() Date: Thu, 20 Feb 2025 10:28:55 +0100 Message-ID: <20250220092903.3726-3-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250220092903.3726-1-philmd@linaro.org> References: <20250220092903.3726-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=philmd@linaro.org; helo=mail-pl1-x632.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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@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-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Introduce 'fifo_depth' and 'fifo_available' local variables to better express the 'r' variable use. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Luc Michel --- hw/char/pl011.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/char/pl011.c b/hw/char/pl011.c index 12a2d4bc7bd..5bb83c54216 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -486,7 +486,9 @@ static void pl011_write(void *opaque, hwaddr offset, static int pl011_can_receive(void *opaque) { PL011State *s = (PL011State *)opaque; - int r; + unsigned fifo_depth = pl011_get_fifo_depth(s); + unsigned fifo_available = fifo_depth - s->read_count; + int r = fifo_available ? 1 : 0; if (!(s->cr & CR_UARTEN)) { qemu_log_mask(LOG_GUEST_ERROR, @@ -496,7 +498,6 @@ static int pl011_can_receive(void *opaque) qemu_log_mask(LOG_GUEST_ERROR, "PL011 receiving data on disabled RX UART\n"); } - r = s->read_count < pl011_get_fifo_depth(s); trace_pl011_can_receive(s->lcr, s->read_count, r); return r; } From patchwork Thu Feb 20 09:28:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13983553 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C34A2C021B1 for ; Thu, 20 Feb 2025 09:30:31 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tl2sm-0000Lg-VL; Thu, 20 Feb 2025 04:30:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tl2sk-0000F5-90 for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:30:10 -0500 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tl2se-0003Ws-Je for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:30:09 -0500 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-220e6028214so13346905ad.0 for ; Thu, 20 Feb 2025 01:30:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740043802; x=1740648602; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=X18oBKzoazjCfVrAQBfQueu5gB0Bm4XcS+Nhh43VH0E=; b=sGyhHRgz5I3An6YFRbya1PIY9SMupm2+Re9sI0O+Q6yqx7DzfMY96Z1gAW0mlesRkz mXfUVZq12+oBKuuU7UMZ0TeO+o5CenudcH/9jg1E4auXWJ4Mz0QOHshHXvxaYFoCvGXB hGceEhMj6A1pJPr9odOMDkGam35xU+RjinYPY7bTgs0WWLXfpL/njQLks7RHveD/800a ug7m6mU2srIwe3XGMIFJjOREF9Qsre9OYnapxxwulKhqYSfNbqKnl7ZX+2HtvfTSjR9k 8dqbHEhWNRQsYaARc7DuGDFs2zcAXMr0HvmJIho8iy0okncIpjmeOJxhb/YkLa0r+ghS /gvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740043802; x=1740648602; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=X18oBKzoazjCfVrAQBfQueu5gB0Bm4XcS+Nhh43VH0E=; b=C1AbF2sSpAHdjYdckqngE/4owWdPbK7LplnWvoh3eb5SjkYRIS40mxtEN150TmwrfA Euv0n5slQPADRW5rbCm7CtwoICOEEls5IclOVQo0HwQEI68oLMX9aJHIq82lz4RIMQNu y4zFkuxNp8peY885AMXQ0CHQgnhz4mMleIfkyWo6nQ6FInDqCti9kj94U6cKNBlZSbf1 xhHxV62XzdJiJReF0vn9wFvDQiedEjnZktPDyW3rzcDwk3kK/lavnlv1S0qjtrWzHFxG 0lqXO5d8NIaEBlKE2SZ2woLEKPSi4C1QasvnA+Z2BM3hVDY3KvmqyZihoSbwGu8wRsQv YGnA== X-Gm-Message-State: AOJu0YwBp8q/Bl3FB2flYOLjHYi4i++Y956cUA57MQlV0v1I/LG3rGmJ lavsH0PMPO9yfgq45WUI0BPRKWfP0/hCXb8v40Kqlj63gywO23IuAZOZgFpGWKcl+X7BBfuSdzh 8Wos= X-Gm-Gg: ASbGncvet4f5kH7kj1SH09d6q0LRYX3uVAaUKkG4GrWu5AW30XE4RFwFfmgutpKRLGk 2JfVelk1iSFr7wXa6KTHDPxzx+bIAG02VVsXyFMJIweCndswcKErEq6QagLMsC1J3vwmZa4oMCR 9VB7VO4Yy/7oG8O1/6ztckpP3xmWMJ93erRKLeYalWXvXYpa/lPkiMWzEWF35jWCPoxXV0gVR+w m0B96NMqJl8dyafT//I0fOynsE3lM6O8yF/JNFxp+ePnsETNTfl1OyDjYIXPNw8Bv268QLw91sf qTkvbzHoKXeu/3LrN34FH4Kd6gi93a7mzU6Je34TYqLLaku8uPLlMJnyUfu+/lXprg== X-Google-Smtp-Source: AGHT+IFsfx5MgTFFxNPP9UpuBqTLo0Re7CfdCmPk801bj7BN1KDQujSk/EOnRTupB/bvHjXFwNsLLg== X-Received: by 2002:a05:6a20:72a0:b0:1ee:d07b:5ff2 with SMTP id adf61e73a8af0-1eee5dab919mr2997879637.40.1740043802484; Thu, 20 Feb 2025 01:30:02 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-732581df0bbsm11052819b3a.156.2025.02.20.01.29.55 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Feb 2025 01:30:02 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?A?= =?utf-8?q?lex_Benn=C3=A9e?= , Magnus Damm , Thomas Huth , Shin'ichiro Kawasaki , Rayhan Faizel , qemu-arm@nongnu.org, Evgeny Iakovlev , Paolo Bonzini , Peter Maydell , Luc Michel , Yoshinori Sato Subject: [PATCH v2 3/9] hw/char/pl011: Improve RX flow tracing events Date: Thu, 20 Feb 2025 10:28:56 +0100 Message-ID: <20250220092903.3726-4-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250220092903.3726-1-philmd@linaro.org> References: <20250220092903.3726-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=philmd@linaro.org; helo=mail-pl1-x631.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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@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-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Log FIFO use (availability and depth). Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alex Bennée Reviewed-by: Luc Michel --- hw/char/pl011.c | 10 ++++++---- hw/char/trace-events | 7 ++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/hw/char/pl011.c b/hw/char/pl011.c index 5bb83c54216..f7485e7c541 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -185,7 +185,7 @@ static void pl011_fifo_rx_put(void *opaque, uint32_t value) s->read_fifo[slot] = value; s->read_count++; s->flags &= ~PL011_FLAG_RXFE; - trace_pl011_fifo_rx_put(value, s->read_count); + trace_pl011_fifo_rx_put(value, s->read_count, pipe_depth); if (s->read_count == pipe_depth) { trace_pl011_fifo_rx_full(); s->flags |= PL011_FLAG_RXFF; @@ -248,12 +248,13 @@ static void pl011_write_txdata(PL011State *s, uint8_t data) static uint32_t pl011_read_rxdata(PL011State *s) { uint32_t c; + unsigned fifo_depth = pl011_get_fifo_depth(s); s->flags &= ~PL011_FLAG_RXFF; c = s->read_fifo[s->read_pos]; if (s->read_count > 0) { s->read_count--; - s->read_pos = (s->read_pos + 1) & (pl011_get_fifo_depth(s) - 1); + s->read_pos = (s->read_pos + 1) & (fifo_depth - 1); } if (s->read_count == 0) { s->flags |= PL011_FLAG_RXFE; @@ -261,7 +262,7 @@ static uint32_t pl011_read_rxdata(PL011State *s) if (s->read_count == s->read_trigger - 1) { s->int_level &= ~INT_RX; } - trace_pl011_read_fifo(s->read_count); + trace_pl011_read_fifo(s->read_count, fifo_depth); s->rsr = c >> 8; pl011_update(s); qemu_chr_fe_accept_input(&s->chr); @@ -498,12 +499,13 @@ static int pl011_can_receive(void *opaque) qemu_log_mask(LOG_GUEST_ERROR, "PL011 receiving data on disabled RX UART\n"); } - trace_pl011_can_receive(s->lcr, s->read_count, r); + trace_pl011_can_receive(s->lcr, s->read_count, fifo_depth, fifo_available); return r; } static void pl011_receive(void *opaque, const uint8_t *buf, int size) { + trace_pl011_receive(size); /* * In loopback mode, the RX input signal is internally disconnected * from the entire receiving logics; thus, all inputs are ignored, diff --git a/hw/char/trace-events b/hw/char/trace-events index b2e3d25ae34..05a33036c12 100644 --- a/hw/char/trace-events +++ b/hw/char/trace-events @@ -60,12 +60,13 @@ imx_serial_put_data(const char *chrname, uint32_t value) "%s: 0x%" PRIx32 # pl011.c pl011_irq_state(int level) "irq state %d" pl011_read(uint32_t addr, uint32_t value, const char *regname) "addr 0x%03x value 0x%08x reg %s" -pl011_read_fifo(int read_count) "FIFO read, read_count now %d" +pl011_read_fifo(unsigned rx_fifo_used, size_t rx_fifo_depth) "RX FIFO read, used %u/%zu" pl011_write(uint32_t addr, uint32_t value, const char *regname) "addr 0x%03x value 0x%08x reg %s" -pl011_can_receive(uint32_t lcr, int read_count, int r) "LCR 0x%08x read_count %d returning %d" -pl011_fifo_rx_put(uint32_t c, int read_count) "new char 0x%02x read_count now %d" +pl011_can_receive(uint32_t lcr, unsigned rx_fifo_used, size_t rx_fifo_depth, unsigned rx_fifo_available) "LCR 0x%02x, RX FIFO used %u/%zu, can_receive %u chars" +pl011_fifo_rx_put(uint32_t c, unsigned read_count, size_t rx_fifo_depth) "RX FIFO push char [0x%02x] %d/%zu depth used" pl011_fifo_rx_full(void) "RX FIFO now full, RXFF set" pl011_baudrate_change(unsigned int baudrate, uint64_t clock, uint32_t ibrd, uint32_t fbrd) "new baudrate %u (clk: %" PRIu64 "hz, ibrd: %" PRIu32 ", fbrd: %" PRIu32 ")" +pl011_receive(int size) "recv %d chars" # cmsdk-apb-uart.c cmsdk_apb_uart_read(uint64_t offset, uint64_t data, unsigned size) "CMSDK APB UART read: offset 0x%" PRIx64 " data 0x%" PRIx64 " size %u" From patchwork Thu Feb 20 09:28:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13983555 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0613FC021B2 for ; Thu, 20 Feb 2025 09:30:37 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tl2t6-0000rj-2R; Thu, 20 Feb 2025 04:30:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tl2sv-0000Zq-UT for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:30:22 -0500 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tl2st-0003lA-CX for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:30:21 -0500 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-2f9d3d0f55dso1064016a91.1 for ; Thu, 20 Feb 2025 01:30:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740043818; x=1740648618; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XvVsiU9gHWUTHtLBaCZuBn83g9TL7f813w+LHlaQeOA=; b=TKvcOZhL1f2Ri8icb+KZTXIiYzEOWqglsWUVncYMVmyN1+ZoMhqMbxU+IchVkDOP4A gbkZTRtMO2qZPaTRDpWDyhx6TBL7fnRyafsIpIaZMX6xL0JKJqZtTpI9NMtXF8KbUtdI RBF5JxT+aNKEzoMyzbbGogl3c7hq63st4HVXDJuRMiWlYpjM8TvuzRJ/l0sF8g6yb7fn oPVy0MYgwP9VTm1RF29qUUsZc54YwVNH5SqiD3afcUketqu2ek1LfqV9stF7nT3dgXY8 4bStXaNNbraoP6S5vpZvZY+ko9ujG4hhGcm5TOSSWiuuAXvl55CFW/RSVfVXrrRu7kct CSvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740043818; x=1740648618; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XvVsiU9gHWUTHtLBaCZuBn83g9TL7f813w+LHlaQeOA=; b=ku0qMN2eNPBc6CWidYSI+WBxFlBjnFdG4ku13fSYDajjuhtJLbrgn5mUtcN6+6i8L/ Ahl8thLbOweyGce8UdfwppAb5VryfBE3NmPg2q3YEbFWyNK1tf6CxzhzBQGm5fms7geW yg6/zYPb0+CnBxvGbyeiy4n1rJ52EZElKpnYdQMdpHhWI+O2nAUolG/ZbI6YkultdTA7 2ZLa8mvYCUfRDw55ceit+66LHRcbYxH9lR3EHpzidEb0Nnr/UKOhb9tZfycej5s3VLpk fxI1NM12LDFYKY4FN1Ty65CVpG2J1BQQnw3B1WG9QplKA34acdoWlyUPpxhV6QJ80wwE Qq8A== X-Gm-Message-State: AOJu0YwEwGNuC5RwPtAZbNz0p3RVNsPK5AUYvL5BQ6AjY3uC/w13i93x 2KiiZZiQa1zKTTvgPN75+9oBLMYBppz0IAETENZtNDEfGil80J8V+k6SZ071OzJpL/Lm5M70qoi dMI0= X-Gm-Gg: ASbGnctY27/L/RSJaNHpIVtQCvFoen8v5DmMo52saWXOFb6Bef3zD5KE3vQrFmo/xUD 1WSUPw1xJb87SNKkg7spIOxZkrWgwMRKU5A2JbHFOeUoXPpD/ly+VsnAgQEJv3i30SjLKXP5Eh6 V/YumplQl7tR5Gv2Zc95Pk4ptufxuwAe8XVJ2Bwx0j8AGVnkhgSqCfurlG4wEkRIXE7sIhoiCob ghhpGpSXjOMFgQFpgipZXEkfjNHLlimAGhmqnsAEyuyVi1U7uqoZNZ4+jF3EG1mDeRkk1jfYqpM S+p+6QgNm8l4uRyt0xSb1Bs0w/4de5kJqLGlur1D/nnEcavu/oOoQ/+6WV0cO3O1Sg== X-Google-Smtp-Source: AGHT+IHzI2BhsfiokxmBSO07mnhrE1lfDAUfHI43hrZrrWil5lel1nwpv/KfiUdjZbefthfEcx4r8A== X-Received: by 2002:a17:90b:2e45:b0:2ee:cdea:ad91 with SMTP id 98e67ed59e1d1-2fcb5a3681dmr11780241a91.15.1740043817688; Thu, 20 Feb 2025 01:30:17 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fbf98b4c45sm15328183a91.2.2025.02.20.01.30.10 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Feb 2025 01:30:17 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?A?= =?utf-8?q?lex_Benn=C3=A9e?= , Magnus Damm , Thomas Huth , Shin'ichiro Kawasaki , Rayhan Faizel , qemu-arm@nongnu.org, Evgeny Iakovlev , Paolo Bonzini , Peter Maydell , Luc Michel , Yoshinori Sato Subject: [PATCH v2 4/9] hw/char/pl011: Really use RX FIFO depth Date: Thu, 20 Feb 2025 10:28:57 +0100 Message-ID: <20250220092903.3726-5-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250220092903.3726-1-philmd@linaro.org> References: <20250220092903.3726-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=philmd@linaro.org; helo=mail-pj1-x102a.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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@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-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org While we model a 16-elements RX FIFO since the PL011 model was introduced in commit cdbdb648b7c ("ARM Versatile Platform Baseboard emulation"), we only read 1 char at a time! Have the IOCanReadHandler handler return how many elements are available, and use that in the IOReadHandler handler. Example of FIFO better used by enabling the pl011 tracing events and running the tests/functional/test_aarch64_virt.py tests: pl011_can_receive LCR 0x70, RX FIFO used 0/16, can_receive 16 chars pl011_receive recv 5 chars pl011_fifo_rx_put RX FIFO push char [0x72] 1/16 depth used pl011_irq_state irq state 1 pl011_fifo_rx_put RX FIFO push char [0x6f] 2/16 depth used pl011_fifo_rx_put RX FIFO push char [0x6f] 3/16 depth used pl011_fifo_rx_put RX FIFO push char [0x74] 4/16 depth used pl011_fifo_rx_put RX FIFO push char [0x0d] 5/16 depth used pl011_can_receive LCR 0x70, RX FIFO used 5/16, can_receive 11 chars pl011_can_receive LCR 0x70, RX FIFO used 5/16, can_receive 11 chars pl011_write addr 0x038 value 0x00000050 reg IMSC pl011_irq_state irq state 1 pl011_can_receive LCR 0x70, RX FIFO used 5/16, can_receive 11 chars pl011_read addr 0x03c value 0x00000030 reg RIS pl011_write addr 0x044 value 0x00000000 reg ICR pl011_irq_state irq state 1 pl011_read addr 0x018 value 0x00000080 reg FR pl011_read_fifo RX FIFO read, used 4/16 pl011_irq_state irq state 1 pl011_read addr 0x000 value 0x00000072 reg DR pl011_can_receive LCR 0x70, RX FIFO used 4/16, can_receive 12 chars pl011_read addr 0x018 value 0x00000080 reg FR pl011_read_fifo RX FIFO read, used 3/16 pl011_irq_state irq state 1 pl011_read addr 0x000 value 0x0000006f reg DR pl011_can_receive LCR 0x70, RX FIFO used 3/16, can_receive 13 chars pl011_read addr 0x018 value 0x00000080 reg FR pl011_read_fifo RX FIFO read, used 2/16 pl011_irq_state irq state 1 pl011_read addr 0x000 value 0x0000006f reg DR pl011_can_receive LCR 0x70, RX FIFO used 2/16, can_receive 14 chars pl011_read addr 0x018 value 0x00000080 reg FR pl011_read_fifo RX FIFO read, used 1/16 pl011_irq_state irq state 1 pl011_read addr 0x000 value 0x00000074 reg DR pl011_can_receive LCR 0x70, RX FIFO used 1/16, can_receive 15 chars pl011_read addr 0x018 value 0x00000080 reg FR pl011_read_fifo RX FIFO read, used 0/16 pl011_irq_state irq state 0 pl011_read addr 0x000 value 0x0000000d reg DR pl011_can_receive LCR 0x70, RX FIFO used 0/16, can_receive 16 chars pl011_read addr 0x018 value 0x00000090 reg FR pl011_read addr 0x03c value 0x00000020 reg RIS pl011_write addr 0x038 value 0x00000050 reg IMSC pl011_irq_state irq state 0 pl011_can_receive LCR 0x70, RX FIFO used 0/16, can_receive 16 chars pl011_can_receive LCR 0x70, RX FIFO used 0/16, can_receive 16 chars pl011_read addr 0x018 value 0x00000090 reg FR pl011_write addr 0x000 value 0x00000072 reg DR Inspired-by: Peter Maydell Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Luc Michel --- hw/char/pl011.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hw/char/pl011.c b/hw/char/pl011.c index f7485e7c541..23a9db8c57c 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -489,7 +489,6 @@ static int pl011_can_receive(void *opaque) PL011State *s = (PL011State *)opaque; unsigned fifo_depth = pl011_get_fifo_depth(s); unsigned fifo_available = fifo_depth - s->read_count; - int r = fifo_available ? 1 : 0; if (!(s->cr & CR_UARTEN)) { qemu_log_mask(LOG_GUEST_ERROR, @@ -500,7 +499,8 @@ static int pl011_can_receive(void *opaque) "PL011 receiving data on disabled RX UART\n"); } trace_pl011_can_receive(s->lcr, s->read_count, fifo_depth, fifo_available); - return r; + + return fifo_available; } static void pl011_receive(void *opaque, const uint8_t *buf, int size) @@ -515,7 +515,9 @@ static void pl011_receive(void *opaque, const uint8_t *buf, int size) return; } - pl011_fifo_rx_put(opaque, *buf); + for (int i = 0; i < size; i++) { + pl011_fifo_rx_put(opaque, buf[i]); + } } static void pl011_event(void *opaque, QEMUChrEvent event) From patchwork Thu Feb 20 09:28:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13983564 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8D0EAC021B2 for ; Thu, 20 Feb 2025 09:32:12 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tl2tN-0001KJ-7a; Thu, 20 Feb 2025 04:30:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tl2tC-00018w-Hc for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:30:40 -0500 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tl2t9-0003nq-Ik for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:30:38 -0500 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-220d39a5627so10011875ad.1 for ; Thu, 20 Feb 2025 01:30:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740043834; x=1740648634; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GNUu0QLM1jJD6vp7svI4zxOCu3a+5YIL+dQ3Ih3Jc18=; b=ccJG7RB/NrTPd4A8fwkC2nq6Of9c6sb9+p/yQVWN96xxDew2qKj+P+uVtGMnVq8TYH Rxjs1mNByDoR8ze1hOedHRN8Hoe1t1pmLeafIPHWjMYiO+fVN6IPiqFNV22UGuiJ2I/2 v2Iw27Cr9iQQJK4w2U3V5JmQ+QdXLvykSd9leyP8S8a9FtJoZhVl8qKm1QQnTPMBYCLr 19rhS2v3B85+F0Pz18FfgvSiFOoCMFHeBuRUlRBRzPoo/6bmGpF2KV/DhWRRHpmpXTrK BTushJ+NIfwABfK35YQMZF/g0FG5DsOovewhJytWeVR2q7nZptjJ+rLr40izusOxoGCM HJpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740043834; x=1740648634; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GNUu0QLM1jJD6vp7svI4zxOCu3a+5YIL+dQ3Ih3Jc18=; b=CL0fAvBbzebOpmFUT8Mi8lBOI7mP00gbbiJLc9/yqEKxS49DJxMgca7Zh11AN3U6gb KcuqRbJ+UkjyxdhsoZeAEWz4gPmW38bha1ViPeu1PzfIte7cEqwKuxuJLFyyQiaVZ4Ei t7AqlXpgHN+S2/89RL70tXQO2tEYGFV0KqOhNp5bcE2tMvAaW9I/gTuUlZQr8EaZM37B DcMZlLwLzHdlPK7A7W9W++52yV/W5cRFgYSbg3Kgghj65urwvZl05T5CUuG9Ypp15gZY p+zafHeQRqR/tzapvg+yinw+0o9I1wxOgf21/VTeO1XZZaR7REoRgliVJ7HHVsa22nF0 IGtQ== X-Gm-Message-State: AOJu0YyBmpmAikHXPMaudwLvkgGTdDvpceBCQmzffFMeRwWnCLJuluf8 iIFnU7qvN++ZgGkzD9IqRGhIAdiNYr+RPNmuvNnKkScIYVeFVreiteKXx3XOEziAv8oqpujH7lY fIxM= X-Gm-Gg: ASbGncvWFUEzv0Af5aqxq+UsnwYx2qm6TBSrm8tH7qTI3a44cTFUqK9R03gntF6SwNG iQSRbTHCC85RwlOjK0e+opGomke3GVgeIi93Xd1NO5CqOObyeSbLcfVY9DVnIclE1NA14hTh6bV bntmnKmKqx3tz1peIK39UZOGEJD95wk9tjN7DHPysgokVNzP4/Qilr9V7t8b07c/a9vkUCZUb3w V6VUECt4rSj4BialE9YffxeaP4rUdMM2nqL5hqErIlxPUcAHdZe43pmh0UuN/ZDdJYpUwteZdWY gZWxETCTo5xEnrj8xZ0iULMkWSK2GrR0ScQKK7lIgq8jSdHqX9jmcs58W3pKUClESg== X-Google-Smtp-Source: AGHT+IHtCdGVpk6l604E32RACxb+nA/F1wtoRn4fYgBQOiATMnUaayVbCelxsQJslZPg5LYVQHWVoQ== X-Received: by 2002:a05:6a00:21cc:b0:730:4c55:4fdf with SMTP id d2e1a72fcca58-7341725faf9mr2898714b3a.7.1740043833647; Thu, 20 Feb 2025 01:30:33 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7324273c8a4sm13283568b3a.85.2025.02.20.01.30.26 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Feb 2025 01:30:33 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?A?= =?utf-8?q?lex_Benn=C3=A9e?= , Magnus Damm , Thomas Huth , Shin'ichiro Kawasaki , Rayhan Faizel , qemu-arm@nongnu.org, Evgeny Iakovlev , Paolo Bonzini , Peter Maydell , Luc Michel , Yoshinori Sato Subject: [PATCH v2 5/9] hw/char/bcm2835_aux: Really use RX FIFO depth Date: Thu, 20 Feb 2025 10:28:58 +0100 Message-ID: <20250220092903.3726-6-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250220092903.3726-1-philmd@linaro.org> References: <20250220092903.3726-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=philmd@linaro.org; helo=mail-pl1-x634.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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@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-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org While we model a 8-elements RX FIFO since the BCM2835 AUX model was introduced in commit 97398d900ca ("bcm2835_aux: add emulation of BCM2835 AUX block") we only read 1 char at a time! Have the IOCanReadHandler handler return how many elements are available, and use that in the IOReadHandler handler. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Luc Michel --- hw/char/bcm2835_aux.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c index 73ad5934067..c6e7eccf7dd 100644 --- a/hw/char/bcm2835_aux.c +++ b/hw/char/bcm2835_aux.c @@ -221,7 +221,7 @@ static int bcm2835_aux_can_receive(void *opaque) { BCM2835AuxState *s = opaque; - return s->read_count < BCM2835_AUX_RX_FIFO_LEN; + return BCM2835_AUX_RX_FIFO_LEN - s->read_count; } static void bcm2835_aux_put_fifo(void *opaque, uint8_t value) @@ -243,7 +243,9 @@ static void bcm2835_aux_put_fifo(void *opaque, uint8_t value) static void bcm2835_aux_receive(void *opaque, const uint8_t *buf, int size) { - bcm2835_aux_put_fifo(opaque, *buf); + for (int i = 0; i < size; i++) { + bcm2835_aux_put_fifo(opaque, buf[i]); + } } static const MemoryRegionOps bcm2835_aux_ops = { From patchwork Thu Feb 20 09:28:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13983560 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 04F20C021B1 for ; Thu, 20 Feb 2025 09:31:26 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tl2tU-0001oH-R7; Thu, 20 Feb 2025 04:30:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tl2tR-0001bO-5Y for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:30:53 -0500 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tl2tP-0003qo-7D for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:30:52 -0500 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2211acda7f6so12885145ad.3 for ; Thu, 20 Feb 2025 01:30:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740043849; x=1740648649; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=H2/xpK9DtdqY8a6ieh8rBtI4fW+GPrI9nBJmXLMfGvA=; b=dsCNQMJUk9YRM/bPZpnEkGMnRDtPaLDKPqbcffO6SecXbs1h017VeP5xaIXxeRn91y xtlpFx/5h4Vr+fzUTzmhTUKK2L8ulCV8r7mBdlvialyYpDJKnvA06dIqADFFPSfZK8lR ay91ie1Dx8iapmYysTD/lQeOHstCPTtCtnLKS07HeLMUwWdLgAja+e24HIqj3yDtjoXo n6zPUeEoe1TsspXFVuXpQBfhZRVy/xvDnqBEmD0zh06QlFUgaHt4m05I3tpDbejiLpRo URFvtmn33Hev4Rqq1Mh4Vd0B7Lg2Lxab2PD+hfPmO86RBt7vHu8PeNBhF9NXb0UKCHnb a3gA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740043849; x=1740648649; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H2/xpK9DtdqY8a6ieh8rBtI4fW+GPrI9nBJmXLMfGvA=; b=h/3YmiEJjfibSwbPAb/bXQXHUeRRxEklXcqE4zDIlun/K3nhVMnhNeC5F0VkhVhG7e upmM1ow4wX8W/imAOxTopBRIGtQ1hcqu3x/Fc9gWiukUP8dbNEQECNhk56H7vWRH+qed en94GI67zQGaYSFAGfViDlEmoVtDinqhbYEA7qlblYWQwt5ZkVJpZBHkiLO1/FpHzqlM DyjCn5wnnjtzXGu64+w36m1oIS9REd1sz9hjt5t7Du5kZscdmpMUll6e7NjMRvqOUQDK ZVFLf+Bsfcp43KYJV7eQ1qiszSYFJyWqyZJ1T49MUjULeIbAn+HtwGjvqy969gz1GFUl R8iQ== X-Gm-Message-State: AOJu0Yx7z/BUVaQWyfzIdE+hfZhij0VjcC/e+F28Ywpdm0FMrbs6LQCP HxIvz1wEA4Cx7Ghy/V8g0WVvleS22Dc6gNirkaZx78B5yaXj/hz6tl+B+WbVG1cTrNxS3B6wCqg 1J9Y= X-Gm-Gg: ASbGnctdJAra+bGHK7Gey4BNZJ41O8HHAThPK7nZsFJ3NR8BwTGcwqLwOjK3AZz2pfZ I905VJCKHQ7GqxxIJW/quKhFtRtwKrhj9iMDI1jNGN34lYbOHs8BVibRClFpyiaupK/gS8p8ier KROPx1RLd/aBa1nPwdikYAhEHaQWn6E4RJGHYvCfWupvdLDzZl/gN+vUeDTLJcIFzkWbm9sb4S9 vo/3T2IDsGaQ35fDbMszd14JcaFKfyb3OS2wnpFJpGA2CwN2B/qmYIYI58hedtptzBNZ5eGb1eB 7aaeWBTGOKT1G6pV6/cz5ycpInVHEHheBf3vb8k3TDDqBZlW9nnLPwSjdPKGQCitTg== X-Google-Smtp-Source: AGHT+IHIx4leUuspMjpWzO+3Wj2A3mhErhuiD2Bz9XyO1/h5M4RnaibopAF5vU8f3ZAYNAwt67HZkg== X-Received: by 2002:aa7:8889:0:b0:730:979d:e80e with SMTP id d2e1a72fcca58-7329de640dbmr11337339b3a.7.1740043849365; Thu, 20 Feb 2025 01:30:49 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-732700c1c31sm8603468b3a.1.2025.02.20.01.30.42 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Feb 2025 01:30:48 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?A?= =?utf-8?q?lex_Benn=C3=A9e?= , Magnus Damm , Thomas Huth , Shin'ichiro Kawasaki , Rayhan Faizel , qemu-arm@nongnu.org, Evgeny Iakovlev , Paolo Bonzini , Peter Maydell , Luc Michel , Yoshinori Sato Subject: [PATCH v2 6/9] hw/char/imx_serial: Really use RX FIFO depth Date: Thu, 20 Feb 2025 10:28:59 +0100 Message-ID: <20250220092903.3726-7-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250220092903.3726-1-philmd@linaro.org> References: <20250220092903.3726-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=philmd@linaro.org; helo=mail-pl1-x633.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, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org While we model a 32-elements RX FIFO since the IMX serial model was introduced in commit 988f2442971 ("hw/char/imx_serial: Implement receive FIFO and ageing timer") we only read 1 char at a time! Have the IOCanReadHandler handler return how many elements are available, and use that in the IOReadHandler handler. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Luc Michel --- hw/char/imx_serial.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c index 38b4865157e..6f14f8403a9 100644 --- a/hw/char/imx_serial.c +++ b/hw/char/imx_serial.c @@ -386,7 +386,8 @@ static void imx_serial_write(void *opaque, hwaddr offset, static int imx_can_receive(void *opaque) { IMXSerialState *s = (IMXSerialState *)opaque; - return s->ucr2 & UCR2_RXEN && fifo32_num_used(&s->rx_fifo) < FIFO_SIZE; + + return s->ucr2 & UCR2_RXEN ? fifo32_num_free(&s->rx_fifo) : 0; } static void imx_put_data(void *opaque, uint32_t value) @@ -417,7 +418,10 @@ static void imx_receive(void *opaque, const uint8_t *buf, int size) IMXSerialState *s = (IMXSerialState *)opaque; s->usr2 |= USR2_WAKE; - imx_put_data(opaque, *buf); + + for (int i = 0; i < size; i++) { + imx_put_data(opaque, buf[i]); + } } static void imx_event(void *opaque, QEMUChrEvent event) From patchwork Thu Feb 20 09:29:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13983561 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CAABBC021B3 for ; Thu, 20 Feb 2025 09:31:27 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tl2tr-0002ZV-Vw; Thu, 20 Feb 2025 04:31:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tl2tl-0002JH-9K for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:31:17 -0500 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tl2th-0003u3-CD for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:31:12 -0500 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-220ec47991aso8165325ad.1 for ; Thu, 20 Feb 2025 01:31:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740043865; x=1740648665; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2DkPTvskXfEKDS8ksEDRN9mL+hSgQIvFZ8gbNR3D4CQ=; b=o9jRQniZFP6SPB2geLA9fOSDZiPXUKMvcUemBeogrZgnfOrUzlFOvLHZKW7Y7t3CmF oKQImuwgEDegVkT/p9LcmVqp4V9DkyFdzWKAv8tUeK8ErB9F4Tnp+kShjr0Fy9mByCWP nbixPnAnRIsbJcYrWxvksPQMXJ0zZzXAiGkpxyDKmAgEqwxbP0oXhmly2yXDEB/UpNsU n8PzUfb8+yHP/nBPw9DryFkw0cgEUb5RtIEH1QZK+WiND/RyOcKxs246ND0vKN612ed+ /BWsRSM7elAoKWBEbl6T7zZ3PcxRcsweCGXsE3acTWwWnofNvCRvoAzGPXyVpgsP7f10 QYNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740043865; x=1740648665; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2DkPTvskXfEKDS8ksEDRN9mL+hSgQIvFZ8gbNR3D4CQ=; b=FvGYO5FVM2XbQLfhBRm/BKx2gxZWPIyeX2ErsTXz+qEpSmiql5GzdTPszIHjX6vk3i +3sQgNtOWhVCY9ni9nNEJNmFB7pgD0zZLoKZxQveZ/lnuliEO++EnV+ZVcpDwY+tjXUR HiX9qn54xjXz66n4rdscGwsI6ektAAyHmDx19Nd4SaLWiTM0yuH9KMJ4aTZ6V0vvQ9P0 flzBqbUqZWiZiD3J9XDC9K6P6RxWhHjI+hjEKKoHLjEuv1LSKYS+NpusqASoBY/sT1uN 907EwRp6mD4xJ9oUTe1TdJwa+XpXZodgVfFFc9ZfJ9kuDKavswR7BiAMBGmzMkWVdfiB IBvg== X-Gm-Message-State: AOJu0YyU4sInbQ9M/+DzjFNMGzyzfuZ+b/xzo2NEJGB19mmyLGDVBqlw 0YKOlULfWT3t3yO16lcTUrM8EcpQNmbuOCIUDifEGqblVYOJzVXRfUmI+Odhj8shaD29bky93t0 zP/M= X-Gm-Gg: ASbGnct40kRsHG8ucmV9BqK9mWpjI4FHTZOprNo+p7Zggv4/TLcT1/VQgK/K6LoVUUl iyasC3q0LDL4w01redQGB7SHDyS4fbRqcjEXGCdKJ3dW79i5766vWt0a9pas56xiolxM8eEIUN+ 2eEzJX4gtONHlZT7tbO8JXyPrXHz3CxGqLYYJUK0kvdNs3puqntshFCw+LmnrLUiVAX0JCeptNO r5r74CnydqZfKkue6bewWZ43wVHLmeoYTOgBIxWqiALNyxeErVO5E21pvq84/OdDrhwph5sNGYe P1ggZfWZYft62ULTFINUk5hAc8deumgFfw5a5m3IZOXEwDpIyfwXA6ShbuRdAmdP9w== X-Google-Smtp-Source: AGHT+IHfmzLHtddJkZK0gPhKTcPtzUPZ89z8b0ccPmyhcf7pVBkVxv9DNWrVsElk7Iw2TdScMKzjvA== X-Received: by 2002:a17:902:d2c6:b0:220:c095:901e with SMTP id d9443c01a7336-2217119ecedmr125278895ad.35.1740043865224; Thu, 20 Feb 2025 01:31:05 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d5349077sm118268655ad.1.2025.02.20.01.30.58 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Feb 2025 01:31:04 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?A?= =?utf-8?q?lex_Benn=C3=A9e?= , Magnus Damm , Thomas Huth , Shin'ichiro Kawasaki , Rayhan Faizel , qemu-arm@nongnu.org, Evgeny Iakovlev , Paolo Bonzini , Peter Maydell , Luc Michel , Yoshinori Sato Subject: [PATCH v2 7/9] hw/char/mcf_uart: Use FIFO_DEPTH definition instead of magic values Date: Thu, 20 Feb 2025 10:29:00 +0100 Message-ID: <20250220092903.3726-8-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250220092903.3726-1-philmd@linaro.org> References: <20250220092903.3726-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=philmd@linaro.org; helo=mail-pl1-x632.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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@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-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Defines FIFO_DEPTH and use it, fixing coding style. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Luc Michel Reviewed-by: Thomas Huth --- hw/char/mcf_uart.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c index 980a12fcb7d..95f269ee9b7 100644 --- a/hw/char/mcf_uart.c +++ b/hw/char/mcf_uart.c @@ -17,6 +17,8 @@ #include "chardev/char-fe.h" #include "qom/object.h" +#define FIFO_DEPTH 4 + struct mcf_uart_state { SysBusDevice parent_obj; @@ -27,7 +29,7 @@ struct mcf_uart_state { uint8_t imr; uint8_t bg1; uint8_t bg2; - uint8_t fifo[4]; + uint8_t fifo[FIFO_DEPTH]; uint8_t tb; int current_mr; int fifo_len; @@ -247,14 +249,16 @@ static void mcf_uart_reset(DeviceState *dev) static void mcf_uart_push_byte(mcf_uart_state *s, uint8_t data) { /* Break events overwrite the last byte if the fifo is full. */ - if (s->fifo_len == 4) + if (s->fifo_len == FIFO_DEPTH) { s->fifo_len--; + } s->fifo[s->fifo_len] = data; s->fifo_len++; s->sr |= MCF_UART_RxRDY; - if (s->fifo_len == 4) + if (s->fifo_len == FIFO_DEPTH) { s->sr |= MCF_UART_FFULL; + } mcf_uart_update(s); } From patchwork Thu Feb 20 09:29:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13983562 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 89CF0C021B2 for ; Thu, 20 Feb 2025 09:31:39 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tl2tz-00039u-W6; Thu, 20 Feb 2025 04:31:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tl2tw-0002wf-71 for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:31:25 -0500 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tl2tu-0003wp-5b for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:31:23 -0500 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-21c2f1b610dso18463255ad.0 for ; Thu, 20 Feb 2025 01:31:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740043880; x=1740648680; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HC4oun0jFc0+NwBeUFjNGte1nRrGw6nA41LdkLLgvBM=; b=t7/b7faVAV5xQOKoKuhorNuNO0UdlONDAgByVN7RU+Jugx+eogG3wF2usQsbD3rvix hBm12CVVIOs+GWEXPieDiShpPWEOQwYNigXbjvbDRnzhzpox7p3J4tf/alOFk00kpGDr 9jjSMC5hpwhj4EmbQMp1v177DOG5NhYN4cTt5giCnO7uWUTu/6M98vtxN46O2RbKUvup SvjFEXHtUX22dZOPzTilypCsSWzCSFZulQYYyPaLMgkZOLLKm6hxK72fViB8w+pPdNjj V8f6rZxyuOhYUmfsB4+9aQEta2iY0YM5ps8BsD+/pXmeWn87o7Q7Yq9QSWl4CBwMDliL TqjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740043880; x=1740648680; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HC4oun0jFc0+NwBeUFjNGte1nRrGw6nA41LdkLLgvBM=; b=YR1UXL0bjnJBXKzWmliR7+51jqm15thpxuSDAv+sR1wahSw24Jr5qz4Bcr0h6NL+Mj FTYX8E3XhSq9XXG0jibz3DesMl5C66hQQOSChmz73o5KdnkCJ5BSsiaduQHEqFA72EXl cFG+pNrXhmktzWrwm1il1b9L6qvX5hlQcsHxf4DidbGpiVT/uhg5uhk2ggYpgmsoAbWu wgJ9Vcs6AkgasflpKjbZakjqiaQGxZ4lLXxQS5fMjCL4zEE5qP4yyS9WRZtcZZSMbFa2 NJSgfjpqgJ3ssTe9s2l8AR/9vFLhdOUNGctTRfojVvZbS/wPJqf+QlFzaaZxQ8TAALRY LSFg== X-Gm-Message-State: AOJu0YzOORfiPESAMZ9FoG5tpPBof9apO4ucuXBBpQq52/5ECjqMVxxp BCwyk+sgx/FKphyVjCBzeb2zY9X5q6/U6KqTgg3JuLO23acWcWd6ElFg0as6hiHxJ9wK6h6Lhzo YsAU= X-Gm-Gg: ASbGncubOXODuVo0zToq12J6yRa0yyjwOttWmAO6HAsB8lszZorq2H1oliP27zFQlx0 V8YO+9sVM5WqyuTzNxIQF5J/P3oK0Nx0yRpJgiFJfPvd6Q3E/W5A5TY1w/7g8zrV1bla2MP1jd7 VFFcX6cu7MBm0/Rm/awVms9VK2HTV2/ariJRR/cImZ+lMLK5wl4zOkzn9e2Wzn0K19mMkmLfSxo ldLhD+0og9W6SVT8XwMHymKzMuYNlW4AwLgDK30wkJGaV0RVOrrVYaFdoDjgfkJXVnxW2ds8jUf fO2ro1xzqqaSWakhFLWFm61Hcqt6jyil5qhJtP4LPFJhW3AxuG+4+hDjWm8MLAQQew== X-Google-Smtp-Source: AGHT+IFx+v4FclNABrQD9b4vP9z6wIrsuZioITVmY4/cv4uYCbV2ZK6EAFTucgkbxtN26HJ9CIIBTg== X-Received: by 2002:a05:6a00:198c:b0:730:8e97:bd74 with SMTP id d2e1a72fcca58-732617756d7mr35402017b3a.2.1740043880114; Thu, 20 Feb 2025 01:31:20 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-adb57c5ea71sm12264684a12.8.2025.02.20.01.31.13 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Feb 2025 01:31:19 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?A?= =?utf-8?q?lex_Benn=C3=A9e?= , Magnus Damm , Thomas Huth , Shin'ichiro Kawasaki , Rayhan Faizel , qemu-arm@nongnu.org, Evgeny Iakovlev , Paolo Bonzini , Peter Maydell , Luc Michel , Yoshinori Sato Subject: [PATCH v2 8/9] hw/char/mcf_uart: Really use RX FIFO depth Date: Thu, 20 Feb 2025 10:29:01 +0100 Message-ID: <20250220092903.3726-9-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250220092903.3726-1-philmd@linaro.org> References: <20250220092903.3726-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=philmd@linaro.org; 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, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org While we model a 4-elements RX FIFO since the MCF UART model was introduced in commit 20dcee94833 ("MCF5208 emulation"), we only read 1 char at a time! Have the IOCanReadHandler handler return how many elements are available, and use that in the IOReadHandler handler. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Luc Michel --- hw/char/mcf_uart.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c index 95f269ee9b7..529c26be93a 100644 --- a/hw/char/mcf_uart.c +++ b/hw/char/mcf_uart.c @@ -281,14 +281,16 @@ static int mcf_uart_can_receive(void *opaque) { mcf_uart_state *s = (mcf_uart_state *)opaque; - return s->rx_enabled && (s->sr & MCF_UART_FFULL) == 0; + return s->rx_enabled ? FIFO_DEPTH - s->fifo_len : 0; } static void mcf_uart_receive(void *opaque, const uint8_t *buf, int size) { mcf_uart_state *s = (mcf_uart_state *)opaque; - mcf_uart_push_byte(s, buf[0]); + for (int i = 0; i < size; i++) { + mcf_uart_push_byte(s, buf[i]); + } } static const MemoryRegionOps mcf_uart_ops = { From patchwork Thu Feb 20 09:29:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13983563 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2E3B7C021B2 for ; Thu, 20 Feb 2025 09:31:49 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tl2uG-0004Zi-Oc; Thu, 20 Feb 2025 04:31:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tl2uC-0004AD-0e for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:31:40 -0500 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tl2u9-0003z3-WE for qemu-devel@nongnu.org; Thu, 20 Feb 2025 04:31:39 -0500 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-2fbfa8c73a6so1401182a91.2 for ; Thu, 20 Feb 2025 01:31:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740043896; x=1740648696; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wrT6wI7eGWijFG9r07os9uEfYAKBYpxue/APgueq34E=; b=IFCAq/tP5qNAEyYu2CEnloHHyGPFmbJoqGuuq9wzr+cUS+81vbIB+tOF6O+BdiIDzG gLllUN7CPZiuSWK0QqjfpvHrS+aITQL9jSeDvw12DE1aZ+brrObIzrCv7+qBGl5FoD6P nF82aGYLBkIzZf4nNzTHuM/te+iO9nWDwmBM2RSGX/8PrujgRvTzPoU/361+n/klKaHR q7kdA1wntMldeUpCtxWBGXVp8i5H7Qrx6mx6JSIM12M3MKo1Z5xV578h4PS8YaqyW71V gsM5EouFySa25HDEmFmvoulIbzZOd2RhqAcAbaqS6pMdiXKK2s0iKrsGvKsx00uPjDNE opyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740043896; x=1740648696; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wrT6wI7eGWijFG9r07os9uEfYAKBYpxue/APgueq34E=; b=fovPoNN942yUuTNpaaE4C6pWgXJrTW4UYO2tV7lJqIUJMZE6wWSMNN6oO2sE6RApRd Mh19KWJPSqgZKfR8es8DJz861ufCkcvFXVseBQfVhrXS7bxHXs0jCo4sv3ZUbbZG9UBW Em6h1Kduf08OJtWk/F62uXcW42w0L1I97JLzr9Fqx//01h0vT5E7l+pQD9dflEcbHeNA 4/nO9c4SAnscfBodiAPtmi9xor77lBOEYVWASBDroj5WVlddjJ7JYh7ThYrY1GGQJnb8 1FT0Pio1lWwa45gx9dSYeypOjIXynzNRTRlGKSo0YnB0xolcRmTjZvLimFn04W5lpq37 H2NQ== X-Gm-Message-State: AOJu0YxfWS1TbrmWFLzHG1MzVNdfZsiGjIkbSy0S/9txjqsv0dlkax5l Zsxl3T+OUyHWLGxljnlqhD+IB/Iotlqu/QIqDbuPhx/keXNrUnpiZ9rX/mpLAo5MewhM06/+Mxk ry3E= X-Gm-Gg: ASbGncujLw+FnbKNnuoaDz7HpcaYD/KN1oE3298gY+wSJnX8QvFO92wDTYWtqPAoFAq HeiouRZV04tBMH6Kvv0dJ08QmsyEK5POr/PEd93aJaAkrbkRTRcoMMQpBIir1APnYb+xlkLgJQl V+kmvYSaNsFm8L09i/uMpOOZzjaC4a4HEPc5DT2rioDkyQlVkYroCrQkssBjdEJ3Yd6n3gWR2r3 HA9GeS60b5qpTkGqKN49kILyojWoWGq55VKIl3O81Vjuz5NBLb2Z30SCbFN5j91hPYpFs61Exj1 7S58M91toYr4DJLQ15eu9gvJfZayUIhzb2BE4mZ9NYL4Y2l6p2vifzLIt5GlnZj5XQ== X-Google-Smtp-Source: AGHT+IHzB09fOgQ9JAxm6Hg43hIcwbgKVGg/0WdEobzd0QwenNGTBOK1RXpNvRCYw4fa0qda/VG64w== X-Received: by 2002:a17:90b:2f8f:b0:2ef:2d9f:8e58 with SMTP id 98e67ed59e1d1-2fc411508famr28637110a91.34.1740043895854; Thu, 20 Feb 2025 01:31:35 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fcbaaf3f38sm1628375a91.1.2025.02.20.01.31.29 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Feb 2025 01:31:35 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?A?= =?utf-8?q?lex_Benn=C3=A9e?= , Magnus Damm , Thomas Huth , Shin'ichiro Kawasaki , Rayhan Faizel , qemu-arm@nongnu.org, Evgeny Iakovlev , Paolo Bonzini , Peter Maydell , Luc Michel , Yoshinori Sato Subject: [PATCH v2 9/9] hw/char/sh_serial: Return correct number of empty RX FIFO elements Date: Thu, 20 Feb 2025 10:29:02 +0100 Message-ID: <20250220092903.3726-10-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250220092903.3726-1-philmd@linaro.org> References: <20250220092903.3726-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=philmd@linaro.org; helo=mail-pj1-x1032.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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@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-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org In the IOCanReadHandler sh_serial_can_receive(), if the Serial Control Register 'Receive Enable' bit is set (bit 4), then we return a size of (1 << 4) which happens to be equal to 16, so effectively SH_RX_FIFO_LENGTH. The IOReadHandler, sh_serial_receive1() takes care to receive multiple chars, but if the FIFO is partly filled, we only process the number of free slots in the FIFO, discarding the other chars! Fix by returning how many elements the FIFO can queue in the IOCanReadHandler, so we don't have to process more than that in the IOReadHandler, thus not discarding anything. Remove the now unnecessary check on 's->rx_cnt < SH_RX_FIFO_LENGTH' in IOReadHandler, reducing the block indentation. Fixes: 63242a007a1 ("SH4: Serial controller improvement") Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Luc Michel --- hw/char/sh_serial.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c index 247aeb071ac..41c8175a638 100644 --- a/hw/char/sh_serial.c +++ b/hw/char/sh_serial.c @@ -320,7 +320,7 @@ static uint64_t sh_serial_read(void *opaque, hwaddr offs, static int sh_serial_can_receive(SHSerialState *s) { - return s->scr & (1 << 4); + return s->scr & (1 << 4) ? SH_RX_FIFO_LENGTH - s->rx_head : 0; } static void sh_serial_receive_break(SHSerialState *s) @@ -353,22 +353,20 @@ static void sh_serial_receive1(void *opaque, const uint8_t *buf, int size) if (s->feat & SH_SERIAL_FEAT_SCIF) { int i; for (i = 0; i < size; i++) { - if (s->rx_cnt < SH_RX_FIFO_LENGTH) { - s->rx_fifo[s->rx_head++] = buf[i]; - if (s->rx_head == SH_RX_FIFO_LENGTH) { - s->rx_head = 0; - } - s->rx_cnt++; - if (s->rx_cnt >= s->rtrg) { - s->flags |= SH_SERIAL_FLAG_RDF; - if (s->scr & (1 << 6) && s->rxi) { - timer_del(&s->fifo_timeout_timer); - qemu_set_irq(s->rxi, 1); - } - } else { - timer_mod(&s->fifo_timeout_timer, - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + 15 * s->etu); + s->rx_fifo[s->rx_head++] = buf[i]; + if (s->rx_head == SH_RX_FIFO_LENGTH) { + s->rx_head = 0; + } + s->rx_cnt++; + if (s->rx_cnt >= s->rtrg) { + s->flags |= SH_SERIAL_FLAG_RDF; + if (s->scr & (1 << 6) && s->rxi) { + timer_del(&s->fifo_timeout_timer); + qemu_set_irq(s->rxi, 1); } + } else { + timer_mod(&s->fifo_timeout_timer, + qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + 15 * s->etu); } } } else {