diff mbox series

serial: extend compile-test coverage

Message ID 20210421143115.22797-1-johan@kernel.org
State New
Headers show
Series serial: extend compile-test coverage | expand

Commit Message

Johan Hovold April 21, 2021, 2:31 p.m. UTC
Allow more drivers to be compile tested, for example, when doing
subsystem-wide changes.

Verified on X86_64 as well as arm, powerpc and m68k with minimal configs
in order to catch missing implicit build dependencies (e.g. MAILBOX for
SERIAL_TEGRA_TCU).

Signed-off-by: Johan Hovold <johan@kernel.org>
---
 drivers/tty/serial/8250/Kconfig |  6 ++++--
 drivers/tty/serial/Kconfig      | 20 +++++++++++---------
 2 files changed, 15 insertions(+), 11 deletions(-)

Comments

Geert Uytterhoeven April 22, 2021, 7:11 a.m. UTC | #1
On Thu, Apr 22, 2021 at 3:20 AM kernel test robot <lkp@intel.com> wrote:
> I love your patch! Perhaps something to improve:
>
> [auto build test WARNING on tty/tty-testing]
> [also build test WARNING on usb/usb-testing v5.12-rc8 next-20210421]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
>
> url:    https://github.com/0day-ci/linux/commits/Johan-Hovold/serial-extend-compile-test-coverage/20210421-234950
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing
> config: x86_64-randconfig-a014-20210421 (attached as .config)
> compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project d87b9b81ccb95217181ce75515c6c68bbb408ca4)
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # install x86_64 cross compiling tool for clang build
>         # apt-get install binutils-x86-64-linux-gnu
>         # https://github.com/0day-ci/linux/commit/c010530fa587261662c6abdb59ade994645dcfa8
>         git remote add linux-review https://github.com/0day-ci/linux
>         git fetch --no-tags linux-review Johan-Hovold/serial-extend-compile-test-coverage/20210421-234950
>         git checkout c010530fa587261662c6abdb59ade994645dcfa8
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=x86_64
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
> All warnings (new ones prefixed by >>):
>
> >> drivers/tty/serial/serial_txx9.c:987:12: warning: no previous prototype for function 'early_serial_txx9_setup' [-Wmissing-prototypes]
>    int __init early_serial_txx9_setup(struct uart_port *port)
>               ^
>    drivers/tty/serial/serial_txx9.c:987:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    int __init early_serial_txx9_setup(struct uart_port *port)
>    ^
>    static
>    1 warning generated.

This function is called from arch/mips/txx9/generic/setup.c, and does
have a forward declaration in arch/mips/include/asm/txx9/generic.h.
Unfortunately the latter cannot be included from the driver, unless
the || COMPILE_TEST is dropped again.

Gr{oetje,eeting}s,

                        Geert
Geert Uytterhoeven April 22, 2021, 7:40 a.m. UTC | #2
Hi Johan,

On Thu, Apr 22, 2021 at 9:37 AM Johan Hovold <johan@kernel.org> wrote:
> On Thu, Apr 22, 2021 at 09:11:50AM +0200, Geert Uytterhoeven wrote:
> > On Thu, Apr 22, 2021 at 3:20 AM kernel test robot <lkp@intel.com> wrote:
> > > >> drivers/tty/serial/serial_txx9.c:987:12: warning: no previous prototype for function 'early_serial_txx9_setup' [-Wmissing-prototypes]
> > >    int __init early_serial_txx9_setup(struct uart_port *port)
> > >               ^
> > >    drivers/tty/serial/serial_txx9.c:987:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
> > >    int __init early_serial_txx9_setup(struct uart_port *port)
> > >    ^
> > >    static
> > >    1 warning generated.
> >
> > This function is called from arch/mips/txx9/generic/setup.c, and does
> > have a forward declaration in arch/mips/include/asm/txx9/generic.h.
> > Unfortunately the latter cannot be included from the driver, unless
> > the || COMPILE_TEST is dropped again.
>
> Thanks, Geert. I was just about to send a v2 without the txx9 hunk.

well, I guess apart from this (W=1!) warning, this driver still
compile-tests fine.
Do we consider hard-to-fix W=1 warnings to be legitimate blockers
for enabling compile-testing?

Gr{oetje,eeting}s,

                        Geert
Geert Uytterhoeven April 22, 2021, 7:54 a.m. UTC | #3
Hi Johan,

On Thu, Apr 22, 2021 at 9:52 AM Johan Hovold <johan@kernel.org> wrote:
> On Thu, Apr 22, 2021 at 09:40:38AM +0200, Geert Uytterhoeven wrote:
> > On Thu, Apr 22, 2021 at 9:37 AM Johan Hovold <johan@kernel.org> wrote:
> > > On Thu, Apr 22, 2021 at 09:11:50AM +0200, Geert Uytterhoeven wrote:
> > > > On Thu, Apr 22, 2021 at 3:20 AM kernel test robot <lkp@intel.com> wrote:
> > > > > >> drivers/tty/serial/serial_txx9.c:987:12: warning: no previous prototype for function 'early_serial_txx9_setup' [-Wmissing-prototypes]
> > > > >    int __init early_serial_txx9_setup(struct uart_port *port)
> > > > >               ^
> > > > >    drivers/tty/serial/serial_txx9.c:987:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
> > > > >    int __init early_serial_txx9_setup(struct uart_port *port)
> > > > >    ^
> > > > >    static
> > > > >    1 warning generated.
> > > >
> > > > This function is called from arch/mips/txx9/generic/setup.c, and does
> > > > have a forward declaration in arch/mips/include/asm/txx9/generic.h.
> > > > Unfortunately the latter cannot be included from the driver, unless
> > > > the || COMPILE_TEST is dropped again.
> > >
> > > Thanks, Geert. I was just about to send a v2 without the txx9 hunk.
> >
> > well, I guess apart from this (W=1!) warning, this driver still
> > compile-tests fine.
> > Do we consider hard-to-fix W=1 warnings to be legitimate blockers
> > for enabling compile-testing?
>
> Since the build bots have enabled them (and people have turned it into a
> crusade to suppress every W=1 warning by any means) I think it's
> reasonable to not introduce new ones knowingly.
>
> And I'm not too motivated right now to try to work around this one
> myself. The idea here was just to enable COMPILE_TEST for drivers that
> did not have any build-time dependencies.

OK.

Gr{oetje,eeting}s,

                        Geert
diff mbox series

Patch

diff --git a/drivers/tty/serial/8250/Kconfig b/drivers/tty/serial/8250/Kconfig
index 4b9d7d1951f8..d1b3c2373fa4 100644
--- a/drivers/tty/serial/8250/Kconfig
+++ b/drivers/tty/serial/8250/Kconfig
@@ -403,7 +403,8 @@  config SERIAL_8250_RT288X
 
 config SERIAL_8250_OMAP
 	tristate "Support for OMAP internal UART (8250 based driver)"
-	depends on SERIAL_8250 && (ARCH_OMAP2PLUS || ARCH_K3)
+	depends on SERIAL_8250
+	depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
 	help
 	  If you have a machine based on an Texas Instruments OMAP CPU you
 	  can enable its onboard serial ports by enabling this option.
@@ -439,7 +440,8 @@  config SERIAL_8250_LPC18XX
 
 config SERIAL_8250_MT6577
 	tristate "Mediatek serial port support"
-	depends on SERIAL_8250 && ARCH_MEDIATEK
+	depends on SERIAL_8250
+	depends on ARCH_MEDIATEK || COMPILE_TEST
 	help
 	  If you have a Mediatek based board and want to use the
 	  serial port, say Y to this option. If unsure, say N.
diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
index e6f55c28cc2e..35fd148fd2b2 100644
--- a/drivers/tty/serial/Kconfig
+++ b/drivers/tty/serial/Kconfig
@@ -20,7 +20,7 @@  comment "Non-8250 serial port support"
 
 config SERIAL_AMBA_PL010
 	tristate "ARM AMBA PL010 serial port support"
-	depends on ARM_AMBA
+	depends on ARM_AMBA || COMPILE_TEST
 	select SERIAL_CORE
 	help
 	  This selects the ARM(R) AMBA(R) PrimeCell PL010 UART.  If you have
@@ -198,7 +198,7 @@  config SERIAL_KGDB_NMI
 
 config SERIAL_MESON
 	tristate "Meson serial port support"
-	depends on ARCH_MESON
+	depends on ARCH_MESON || COMPILE_TEST
 	select SERIAL_CORE
 	help
 	  This enables the driver for the on-chip UARTs of the Amlogic
@@ -278,7 +278,7 @@  config SERIAL_SAMSUNG_CONSOLE
 
 config SERIAL_TEGRA
 	tristate "NVIDIA Tegra20/30 SoC serial controller"
-	depends on ARCH_TEGRA && TEGRA20_APB_DMA
+	depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
 	select SERIAL_CORE
 	help
 	  Support for the on-chip UARTs on the NVIDIA Tegra series SOCs
@@ -289,7 +289,8 @@  config SERIAL_TEGRA
 
 config SERIAL_TEGRA_TCU
 	tristate "NVIDIA Tegra Combined UART"
-	depends on ARCH_TEGRA && TEGRA_HSP_MBOX
+	depends on MAILBOX
+	depends on (ARCH_TEGRA && TEGRA_HSP_MBOX) || COMPILE_TEST
 	select SERIAL_CORE
 	help
 	  Support for the mailbox-based TCU (Tegra Combined UART) serial port.
@@ -852,7 +853,8 @@  config SERIAL_MPC52xx_CONSOLE_BAUD
 
 config SERIAL_ICOM
 	tristate "IBM Multiport Serial Adapter"
-	depends on PCI && PPC_PSERIES
+	depends on PCI
+	depends on PPC_PSERIES || COMPILE_TEST
 	select SERIAL_CORE
 	select FW_LOADER
 	help
@@ -865,7 +867,7 @@  config SERIAL_ICOM
 
 config SERIAL_TXX9
 	bool "TMPTX39XX/49XX SIO support"
-	depends on HAS_TXX9_SERIAL
+	depends on HAS_TXX9_SERIAL || COMPILE_TEST
 	select SERIAL_CORE
 	default y
 
@@ -921,7 +923,7 @@  config SERIAL_JSM
 
 config SERIAL_MSM
 	tristate "MSM on-chip serial port support"
-	depends on ARCH_QCOM
+	depends on ARCH_QCOM || COMPILE_TEST
 	select SERIAL_CORE
 
 config SERIAL_MSM_CONSOLE
@@ -947,7 +949,7 @@  config SERIAL_QCOM_GENI_CONSOLE
 
 config SERIAL_VT8500
 	bool "VIA VT8500 on-chip serial port support"
-	depends on ARCH_VT8500
+	depends on ARCH_VT8500 || COMPILE_TEST
 	select SERIAL_CORE
 
 config SERIAL_VT8500_CONSOLE
@@ -957,7 +959,7 @@  config SERIAL_VT8500_CONSOLE
 
 config SERIAL_OMAP
 	tristate "OMAP serial port support"
-	depends on ARCH_OMAP2PLUS
+	depends on ARCH_OMAP2PLUS || COMPILE_TEST
 	select SERIAL_CORE
 	help
 	  If you have a machine based on an Texas Instruments OMAP CPU you