2021-04-21 19:08:54

by Johan Hovold

[permalink] [raw]
Subject: [PATCH] serial: extend compile-test coverage

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 <[email protected]>
---
drivers/tty/serial/8250/Kconfig | 6 ++++--
drivers/tty/serial/Kconfig | 20 +++++++++++---------
2 files changed, 15 insertions(+), 11 deletions(-)

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
--
2.26.3


2021-04-22 01:22:27

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH] serial: extend compile-test coverage

Hi Johan,

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 <[email protected]>

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.


vim +/early_serial_txx9_setup +987 drivers/tty/serial/serial_txx9.c

^1da177e4c3f41 drivers/serial/serial_txx9.c Linus Torvalds 2005-04-16 986
^1da177e4c3f41 drivers/serial/serial_txx9.c Linus Torvalds 2005-04-16 @987 int __init early_serial_txx9_setup(struct uart_port *port)
^1da177e4c3f41 drivers/serial/serial_txx9.c Linus Torvalds 2005-04-16 988 {
^1da177e4c3f41 drivers/serial/serial_txx9.c Linus Torvalds 2005-04-16 989 if (port->line >= ARRAY_SIZE(serial_txx9_ports))
^1da177e4c3f41 drivers/serial/serial_txx9.c Linus Torvalds 2005-04-16 990 return -ENODEV;
^1da177e4c3f41 drivers/serial/serial_txx9.c Linus Torvalds 2005-04-16 991
^1da177e4c3f41 drivers/serial/serial_txx9.c Linus Torvalds 2005-04-16 992 serial_txx9_ports[port->line].port = *port;
^1da177e4c3f41 drivers/serial/serial_txx9.c Linus Torvalds 2005-04-16 993 serial_txx9_ports[port->line].port.ops = &serial_txx9_pops;
37a6c7d0096bb5 drivers/serial/serial_txx9.c Atsushi Nemoto 2007-10-16 994 serial_txx9_ports[port->line].port.flags |=
37a6c7d0096bb5 drivers/serial/serial_txx9.c Atsushi Nemoto 2007-10-16 995 UPF_BOOT_AUTOCONF | UPF_FIXED_PORT;
^1da177e4c3f41 drivers/serial/serial_txx9.c Linus Torvalds 2005-04-16 996 return 0;
^1da177e4c3f41 drivers/serial/serial_txx9.c Linus Torvalds 2005-04-16 997 }
^1da177e4c3f41 drivers/serial/serial_txx9.c Linus Torvalds 2005-04-16 998

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]


Attachments:
(No filename) (3.58 kB)
.config.gz (43.40 kB)
Download all attachments

2021-04-22 07:13:21

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH] serial: extend compile-test coverage

On Thu, Apr 22, 2021 at 3:20 AM kernel test robot <[email protected]> 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 <[email protected]>
>
> 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 -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2021-04-22 07:38:41

by Johan Hovold

[permalink] [raw]
Subject: Re: [PATCH] serial: extend compile-test coverage

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 <[email protected]> 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.

Johan

2021-04-22 07:43:02

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH] serial: extend compile-test coverage

Hi Johan,

On Thu, Apr 22, 2021 at 9:37 AM Johan Hovold <[email protected]> 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 <[email protected]> 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 -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2021-04-22 07:54:22

by Johan Hovold

[permalink] [raw]
Subject: Re: [PATCH] serial: extend compile-test coverage

On Thu, Apr 22, 2021 at 09:40:38AM +0200, Geert Uytterhoeven wrote:
> Hi Johan,
>
> On Thu, Apr 22, 2021 at 9:37 AM Johan Hovold <[email protected]> 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 <[email protected]> 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.

Johan

2021-04-22 07:56:17

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH] serial: extend compile-test coverage

Hi Johan,

On Thu, Apr 22, 2021 at 9:52 AM Johan Hovold <[email protected]> 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 <[email protected]> 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 <[email protected]> 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

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds