From nobody Tue May 20 21:12:11 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4b26h065bqz5w0TV; Tue, 20 May 2025 21:12:16 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4b26h03dZ1z3QTd; Tue, 20 May 2025 21:12:16 +0000 (UTC) (envelope-from avg@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1747775536; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=PVv5faAY2JlPevI0BJBEXsjhHF8QG0TO2Es0Goi0kyU=; b=akK8lmuEDpqeQLmkeSBVt3aGK6y6hYbeWfMuQnBbqjMd7Lw3fx2mzU1nJmQbt0yoWgpYB/ SPgXSy0HuG26MrlMc6gJCcZM28j2OjfJU6c7M1tv4kKmF6h6a2tN/yn5AGxNDZyiqbMu4O BBjejESO0o4KAuyr+1UOZMel7WK0I30qT5EdP5/t4MGm6ZaDCYFypVAsYim2fLqfdiHSPy WjYQFJoMD+pN0mVA93ZE5uGfO9F1Am8kKVZXK7jupzOtlQzyvON6zSu6oEMMsbdlwU39nH OoRYj1sNgzPk4GJgZi9Py2Y6wYq7a2W/Uygd6OWG/YCejjAzksYfdTCkAMQp9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1747775536; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=PVv5faAY2JlPevI0BJBEXsjhHF8QG0TO2Es0Goi0kyU=; b=ylrlmPUJuLtSf+JJacgZxgAag9Ecw/j4C23ZDT0q3WH9jDjWaMHX+ShBWBqzI4xJec5POF f5cla6xRR0PfaRVfZIrpb8rYZhEoTAeXd0Oq4zrMOGJXVyUGwhhTHNiBf8IOh1AWZVM+UP B8yeVdapZ/JZZAKIrJoRtDeEJ61NQmQ6NJaEs8aEdi2AurdxF+2nicPftiDkuzGCIxQ4gm Kqho1+gs8/1pmOSIQVS8G3uJRUsmmsy9UZOO3hbOUhdiy/s6X24vqM63FT/E4Vq+YQrika slLpPqg6PxFVeBpO4wh8Bet4zsscNQja3o8VQR2xTnLZi1KuzoM6YAxdDwC0mQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1747775536; a=rsa-sha256; cv=none; b=YpUtr7/+mAQgA12T3knWSApCPpo6DQr+1qdcXmp5g2zyu2hqm2Jb7yldu3WSmgAxGiXt22 45LlDgk2gpKoqPpl0V7lXMhA4UDQESZcIsMRESoqdRUbZG6mjZsTWOpGF9Ua2WSo6jQBX3 eip4h3Liorqkpb/l3E/5hzlQ/QmamvAcJ1FmNPKivOsnl5SeyICgRKxsR4XaUCkrvlEUBi psDiBky58VvUIfEfEsODKA2TAGgT5g3CC9PC3ZK22NfGiwwkGtu5uKQ+TDC4tSOMjwhro1 damDmaZVQKMBlxee0iU5Qy5yrihgpyjWxKDksBWQZJBvhDeZZyQvW8EAnPGBbA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from [192.168.0.88] (unknown [93.188.39.137]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: avg/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4b26gz66gCz1CyZ; Tue, 20 May 2025 21:12:15 +0000 (UTC) (envelope-from avg@FreeBSD.org) Message-ID: Date: Wed, 21 May 2025 00:12:11 +0300 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Andriy Gapon Subject: Re: git: 0d2fd5b99c95 - main - ns8250: use LSR_THRE instead of LSR_TEMT for checking tx flush To: mmel@FreeBSD.org, src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202505201457.54KEvD1r053951@gitrepo.freebsd.org> <1a11f640-be62-4f4e-b537-70806ac54831@FreeBSD.org> Content-Language: en-US Autocrypt: addr=avg@FreeBSD.org; keydata= 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 gpPTjT15L8xGftEjQXF6 In-Reply-To: <1a11f640-be62-4f4e-b537-70806ac54831@FreeBSD.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 20/05/2025 21:28, Michal Meloun wrote: > > > On 20.05.2025 16:57, Andriy Gapon wrote: >> The branch main has been updated by avg: >> >> URL: https://cgit.FreeBSD.org/src/commit/? >> id=0d2fd5b99c95329085d0700a4dd38507a054a50d >> >> commit 0d2fd5b99c95329085d0700a4dd38507a054a50d >> Author:     Andriy Gapon >> AuthorDate: 2024-11-10 11:15:30 +0000 >> Commit:     Andriy Gapon >> CommitDate: 2025-05-20 14:55:18 +0000 >> >>      ns8250: use LSR_THRE instead of LSR_TEMT for checking tx flush >>      LSR_TEMT bit is set if both transmit hold and shift registers are >>      empty, but the flush command flushes only the hold register. > I don't think that's true. I am not sure to which part of the commit message your "that" refers to, so I'll try to justify everything. T_H_R_E - transmitter holding register empty T_EMPT - transmitter empty All hardware documentation that I have around describes those bits like that. We do not have direct control over the shift register, hardware clears it after sending. > Imho, ns8250_flush() is used also before changing > baud rate, so we need to ensure that all bits are flushed, including the > transmit register. That's an interesting point. My intention was actually to avoid bogus "FCR is broken" message which can happen because of a race between the UART transmission and code execution. I think that LSR_THRE is proper for checking that FCR works. But to actually detect and ensure that all transmission has completed we should use LSR_TEMT like you say. At the same time, this UART flush is not like stdout flush, of course, where we ensure that all buffered data is transmitted. For UART, we just clear the FIFO and the holding register. So, I am not sure if polling for empty transmitter is important. Besides, I do not see the code which would flush transmitter when parameters are changing. I can find only two places where UART_FLUSH_TRANSMITTER is passed: - ns8250_bus_attach - ns8250_bus_probe Additionally, ns8250_bus_transmit uses ns8250_drain(UART_DRAIN_TRANSMITTER) in broken_txfifo case. P.S. Maybe I don't understand the code, but UART_FLUSH_RECEIVER in ns8250_bus_attach looks strange to me. It's one thing to flush data while in the loop-back mode, but I think that in ns8250_bus_attach the hardware is fully set up to receive data from the outside world. So, how can we hope to drain all of it and to reliably detect whether FIFO flushing works. I mean that something on the other end could be continuously transmitting. -- Andriy Gapon