From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: linux-serial@vger.kernel.org,
Greg KH <gregkh@linuxfoundation.org>,
Jiri Slaby <jirislaby@kernel.org>
Cc: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
alexandre.belloni@bootlin.com, alexandre.torgue@foss.st.com,
andriy.shevchenko@linux.intel.com,
bcm-kernel-feedback-list@broadcom.com,
claudiu.beznea@microchip.com, corbet@lwn.net, festevam@gmail.com,
f.fainelli@gmail.com, kernel@pengutronix.de,
linux-arm-kernel@lists.infradead.org, linux@armlinux.org.uk,
linux-doc@vger.kernel.org, linux-imx@nxp.com,
linux-kernel@vger.kernel.org,
linux-rpi-kernel@lists.infradead.org,
linux-stm32@st-md-mailman.stormreply.com,
mcoquelin.stm32@gmail.com, nicolas.ferre@microchip.com,
nsaenz@kernel.org, richard.genoud@gmail.com, rjui@broadcom.com,
sbranden@broadcom.com, s.hauer@pengutronix.de,
shawnguo@kernel.org, vz@mleia.com
Subject: [PATCH 00/36] RS485 serial_rs485 sanitization
Date: Mon, 6 Jun 2022 13:03:57 +0300 [thread overview]
Message-ID: <20220606100433.13793-1-ilpo.jarvinen@linux.intel.com> (raw)
This series adds sanitization to serial_rs485 struct before passing it
to driver's rs485_config. This takes the work Lino Sanfilippo started
(0ed12afa5655^..60efd0513916) a bit further. By moving sanitization of
the rs485 struct into the serial core, per driver rs485_config() is
more into the point, that is, setting up the hw to realize RS485.
The other benefit is that with the sanitization, the other drivers no
longer need to care when new things are added to serial_rs485 as serial
core handles them on the other drivers' behalf. The addressing mode
changes I'll submit separately will take advantage of this. The
addressing mode changes were the main motivator for doing the changes,
however, I believe these changes stand on their feet even w/o
considering the addressing mode changes.
The series is long because per driver changes are split into two
different stages. The key objectives here for the split have been to
keep things bisect safe and to do changes per driver rather than in one
large block. This required 4 stages:
1) Add datastructure entries & other preps (01-03)
2) Per driver rs485_supported (04-21)
3) Sanitization, core taking advantage of rs485_supported (22-24)
4) Cleanup per driver custom sanitization code (25-36)
As you can see, the downside of this split is that the per driver code
is split to 2+4 patches which makes some things moving less obvious.
Merging them is only possible if the stages 2-4 are done in one large
change (little bits here and there could be left out from it but not
much).
In stage 3 patches, there are a few userspace interface impacting
changes with userspace api regression potential:
a) Some drivers have not cleared flags/fields in per driver code while
other drivers have. The old behavior is inconsistent. Now the bits
will get cleaned up by serial core. I don't believe it's going to
cause issues.
b) Init path now sanitizes configuration if rs485_config is being
called from the init path (mainly coming from dt). It attempts to
repair some incorrect configurations which seems ok.
However, if RS485 mode is not enabled at boot, serial_rs485 struct
gets cleared in order for it to match what the port is configured
with (RS232). Such clearing implies losing values that were
configured through dt and that could perhaps be seen as unwanted
side-effect from having consistent serial_rs485?
There is also impact for the ioctl path from this clearing of
serial_rs485 when RS485 is disabled but impact seems minor at most.
c) Returning -EINVAL for non-legacy flags. This also affects setting
bits that were previously padding (that is, all flags bits
currently not defined in include/uapi/linux/serial.h). It was
possible to put garbage into them earlier but no more. I guess
this is not very likely a big issue. No non-legacy flags are
added in this series (the addressing mode changes submitted
separately will add new flags).
Cc: alexandre.belloni@bootlin.com
Cc: alexandre.torgue@foss.st.com
Cc: andriy.shevchenko@linux.intel.com
Cc: bcm-kernel-feedback-list@broadcom.com
Cc: claudiu.beznea@microchip.com
Cc: corbet@lwn.net
Cc: festevam@gmail.com
Cc: f.fainelli@gmail.com
Cc: kernel@pengutronix.de
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux@armlinux.org.uk
Cc: linux-doc@vger.kernel.org
Cc: linux-imx@nxp.com
Cc: linux-kernel@vger.kernel.org
Cc: linux-rpi-kernel@lists.infradead.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: mcoquelin.stm32@gmail.com
Cc: nicolas.ferre@microchip.com
Cc: nsaenz@kernel.org
Cc: richard.genoud@gmail.com
Cc: rjui@broadcom.com
Cc: sbranden@broadcom.com
Cc: s.hauer@pengutronix.de
Cc: shawnguo@kernel.org
Cc: vz@mleia.com
Ilpo Järvinen (36):
serial: Add uart_rs485_config()
serial: Move serial_rs485 sanitization into separate function
serial: Add rs485_supported to uart_port
serial: 8250: Create serial8250_em485_supported for em485 users
serial: 8250_bcm2835aux: Use serial8250_em485_supported
serial: 8250_dwlib: Fill in rs485_supported
serial: 8250_exar: Fill in rs485_supported
serial: 8250_fintek: Fill in rs485_supported
serial: 8250_lpc18cc: Fill in rs485_supported
serial: 8250_of: Use serial8250_em485_supported
serial: 8250_pci: Fill in rs485_supported for pci_fintek
serial: pl011: Fill in rs485_supported
serial: ar933x: Fill in rs485_supported
serial: atmel: Fill in rs485_supported
serial: fsl_lpuart: Fill in rs485_supported
serial: imx: Fill in rs485_supported
serial: max310x: Fill in rs485_supported
serial: mcf: Fill in rs485_supported
serial: omap: Fill in rs485_supported
serial: sc16is7xx: Fill in rs485_supported
serial: stm32: Fill in rs485_supported
serial: Sanitize rs485_struct
serial: Clear rs485 struct when non-RS485 mode is set
serial: return -EINVAL for non-legacy RS485 flags
serial: 8250_dwlib: Remove serial_rs485 sanitization
serial: 8250_fintek: Remove serial_rs485 sanitization
serial: 8250: lpc18xx: Remove serial_rs485 sanitization
serial: 8250_pci: Remove serial_rs485 sanitization
serial: pl011: Remove serial_rs485 sanitization
serial: fsl_lpuart: Call core's sanitization and remove custom one
serial: imx: Remove serial_rs485 sanitization
serial: max310x: Remove serial_rs485 sanitization
serial: 8250_exar: Remove serial_rs485 assignment
serial: mcf: Remove serial_rs485 assignment
serial: sc16is7xx: Remove serial_rs485 assignment
serial: 8250: Remove serial_rs485 sanitization from em485
.../driver-api/serial/serial-rs485.rst | 12 +-
drivers/tty/serial/8250/8250.h | 1 +
drivers/tty/serial/8250/8250_bcm2835aux.c | 1 +
drivers/tty/serial/8250/8250_core.c | 1 +
drivers/tty/serial/8250/8250_dwlib.c | 17 +--
drivers/tty/serial/8250/8250_exar.c | 14 +-
drivers/tty/serial/8250/8250_fintek.c | 29 +++--
drivers/tty/serial/8250/8250_lpc18xx.c | 20 +--
drivers/tty/serial/8250/8250_of.c | 1 +
drivers/tty/serial/8250/8250_pci.c | 24 +---
drivers/tty/serial/8250/8250_port.c | 28 ++--
drivers/tty/serial/amba-pl011.c | 13 +-
drivers/tty/serial/ar933x_uart.c | 7 +
drivers/tty/serial/atmel_serial.c | 7 +
drivers/tty/serial/fsl_lpuart.c | 25 +---
drivers/tty/serial/imx.c | 19 ++-
drivers/tty/serial/max310x.c | 9 +-
drivers/tty/serial/mcf.c | 7 +-
drivers/tty/serial/omap-serial.c | 8 ++
drivers/tty/serial/sc16is7xx.c | 8 +-
drivers/tty/serial/serial_core.c | 120 ++++++++++++++----
drivers/tty/serial/stm32-usart.c | 8 ++
include/linux/serial_core.h | 2 +
23 files changed, 247 insertions(+), 134 deletions(-)
--
2.30.2
next reply other threads:[~2022-06-06 10:05 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-06 10:03 Ilpo Järvinen [this message]
2022-06-06 10:03 ` [PATCH 01/36] serial: Add uart_rs485_config() Ilpo Järvinen
2022-06-25 20:19 ` Lukas Wunner
2022-06-26 12:36 ` Lino Sanfilippo
2022-06-06 10:03 ` [PATCH 02/36] serial: Move serial_rs485 sanitization into separate function Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 03/36] serial: Add rs485_supported to uart_port Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 04/36] serial: 8250: Create serial8250_em485_supported for em485 users Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 05/36] serial: 8250_bcm2835aux: Use serial8250_em485_supported Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 06/36] serial: 8250_dwlib: Fill in rs485_supported Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 07/36] serial: 8250_exar: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 08/36] serial: 8250_fintek: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 09/36] serial: 8250_lpc18cc: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 10/36] serial: 8250_of: Use serial8250_em485_supported Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 11/36] serial: 8250_pci: Fill in rs485_supported for pci_fintek Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 12/36] serial: pl011: Fill in rs485_supported Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 13/36] serial: ar933x: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 14/36] serial: atmel: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 15/36] serial: fsl_lpuart: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 16/36] serial: imx: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 17/36] serial: max310x: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 18/36] serial: mcf: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 19/36] serial: omap: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 20/36] serial: sc16is7xx: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 21/36] serial: stm32: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 22/36] serial: Sanitize rs485_struct Ilpo Järvinen
2022-06-25 20:12 ` Lukas Wunner
2022-06-26 12:39 ` Lino Sanfilippo
2022-06-06 10:04 ` [PATCH 23/36] serial: Clear rs485 struct when non-RS485 mode is set Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 24/36] serial: return -EINVAL for non-legacy RS485 flags Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 25/36] serial: 8250_dwlib: Remove serial_rs485 sanitization Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 26/36] serial: 8250_fintek: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 27/36] serial: 8250: lpc18xx: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 28/36] serial: 8250_pci: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 29/36] serial: pl011: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 30/36] serial: fsl_lpuart: Call core's sanitization and remove custom one Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 31/36] serial: imx: Remove serial_rs485 sanitization Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 32/36] serial: max310x: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 33/36] serial: 8250_exar: Remove serial_rs485 assignment Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 34/36] serial: mcf: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 35/36] serial: sc16is7xx: " Ilpo Järvinen
2022-06-06 10:04 ` [PATCH 36/36] serial: 8250: Remove serial_rs485 sanitization from em485 Ilpo Järvinen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220606100433.13793-1-ilpo.jarvinen@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=alexandre.belloni@bootlin.com \
--cc=alexandre.torgue@foss.st.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=claudiu.beznea@microchip.com \
--cc=corbet@lwn.net \
--cc=f.fainelli@gmail.com \
--cc=festevam@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=jirislaby@kernel.org \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rpi-kernel@lists.infradead.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=linux@armlinux.org.uk \
--cc=mcoquelin.stm32@gmail.com \
--cc=nicolas.ferre@microchip.com \
--cc=nsaenz@kernel.org \
--cc=richard.genoud@gmail.com \
--cc=rjui@broadcom.com \
--cc=s.hauer@pengutronix.de \
--cc=sbranden@broadcom.com \
--cc=shawnguo@kernel.org \
--cc=vz@mleia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®