Message ID | 20240906131336.23625-1-johan+linaro@kernel.org |
---|---|
Headers | show |
Series | serial: qcom-geni: fix console corruption | expand |
On Fri, Sep 06, 2024 at 03:13:28PM +0200, Johan Hovold wrote: > This series is a follow-on series to the lockup fixes [1] that addresses > a number of issues in the Qualcomm GENI console code, including corrupt > console output during boot, which is a problem for automated CI testing. > [1] https://lore.kernel.org/lkml/20240704101805.30612-1-johan+linaro@kernel.org/ > > Changes in v2 > - determine poll timeout in set_termios() and avoid hard coding fifo > size in calculation > - move fifo drain helper under console ifdef to avoid an unused function > warning as reported by the kernel test robot > - drop a redundant active check from fifo drain helper > > > Douglas Anderson (3): > soc: qcom: geni-se: add GP_LENGTH/IRQ_EN_SET/IRQ_EN_CLEAR registers > serial: qcom-geni: fix arg types for qcom_geni_serial_poll_bit() > serial: qcom-geni: introduce qcom_geni_serial_poll_bitfield() > > Johan Hovold (5): > serial: qcom-geni: fix fifo polling timeout > serial: qcom-geni: fix false console tx restart > serial: qcom-geni: fix console corruption > serial: qcom-geni: disable interrupts during console writes > serial: qcom-geni: fix polled console corruption Any chance we could these fixes into 6.12-rc1? Johan
On Wed, Sep 11, 2024 at 08:19:06AM +0200, Johan Hovold wrote: > On Fri, Sep 06, 2024 at 03:13:28PM +0200, Johan Hovold wrote: > > This series is a follow-on series to the lockup fixes [1] that addresses > > a number of issues in the Qualcomm GENI console code, including corrupt > > console output during boot, which is a problem for automated CI testing. > > > [1] https://lore.kernel.org/lkml/20240704101805.30612-1-johan+linaro@kernel.org/ > > > > Changes in v2 > > - determine poll timeout in set_termios() and avoid hard coding fifo > > size in calculation > > - move fifo drain helper under console ifdef to avoid an unused function > > warning as reported by the kernel test robot > > - drop a redundant active check from fifo drain helper > > > > > > Douglas Anderson (3): > > soc: qcom: geni-se: add GP_LENGTH/IRQ_EN_SET/IRQ_EN_CLEAR registers > > serial: qcom-geni: fix arg types for qcom_geni_serial_poll_bit() > > serial: qcom-geni: introduce qcom_geni_serial_poll_bitfield() > > > > Johan Hovold (5): > > serial: qcom-geni: fix fifo polling timeout > > serial: qcom-geni: fix false console tx restart > > serial: qcom-geni: fix console corruption > > serial: qcom-geni: disable interrupts during console writes > > serial: qcom-geni: fix polled console corruption > > Any chance we could these fixes into 6.12-rc1? Yes, let me catch up on patches today and tomorrow, have been traveling for conferences and have a few days reprieve before the next rounds... thanks, greg k-h
Hi, On Fri, Sep 6, 2024 at 6:15 AM Johan Hovold <johan+linaro@kernel.org> wrote: > > The qcom_geni_serial_poll_bit() can be used to wait for events like > command completion and is supposed to wait for the time it takes to > clear a full fifo before timing out. > > As noted by Doug, the current implementation does not account for start, > stop and parity bits when determining the timeout. The helper also does > not currently account for the shift register and the two-word > intermediate transfer register. > > A too short timeout can specifically lead to lost characters when > waiting for a transfer to complete as the transfer is cancelled on > timeout. > > Instead of determining the poll timeout on every call, store the fifo > timeout when updating it in set_termios() and make sure to take the > shift and intermediate registers into account. Note that serial core has > already added a 20 ms margin to the fifo timeout. > > Also note that the current uart_fifo_timeout() interface does > unnecessary calculations on every call and did not exist in earlier > kernels so only store its result once. This facilitates backports too as > earlier kernels can derive the timeout from uport->timeout, which has > since been removed. > > Fixes: c4f528795d1a ("tty: serial: msm_geni_serial: Add serial driver support for GENI based QUP") > Cc: stable@vger.kernel.org # 4.17 > Reported-by: Douglas Anderson <dianders@chromium.org> > Tested-by: Nícolas F. R. A. Prado <nfraprado@collabora.com> > Signed-off-by: Johan Hovold <johan+linaro@kernel.org> > --- > drivers/tty/serial/qcom_geni_serial.c | 31 +++++++++++++++------------ > 1 file changed, 17 insertions(+), 14 deletions(-) Reviewed-by: Douglas Anderson <dianders@chromium.org>