Re: [PATCH 13/36] tty: serial: 8250: 8250_port: Staticify functions referenced by pointers

Lee Jones
2020-11-06T11:12:58Z

On Fri, 06 Nov 2020, Greg Kroah-Hartman wrote:

> On Fri, Nov 06, 2020 at 10:48:10AM +0000, Lee Jones wrote:
> > On Fri, 06 Nov 2020, Greg Kroah-Hartman wrote:
> >
> > > On Fri, Nov 06, 2020 at 10:16:46AM +0000, Lee Jones wrote:
> > > > On Fri, 06 Nov 2020, Lee Jones wrote:
> > > >
> > > > > On Fri, 06 Nov 2020, Greg Kroah-Hartman wrote:
> > > > >
> > > > > > On Wed, Nov 04, 2020 at 07:35:26PM +0000, Lee Jones wrote:
> > > > > > > Fixes the following W=1 kernel build warning(s):
> > > > > > >
> > > > > > > drivers/tty/serial/8250/8250_port.c:349:14: warning: no previous prototype for ‘au_serial_in’ [-Wmissing-prototypes]
> > > > > > > drivers/tty/serial/8250/8250_port.c:359:6: warning: no previous prototype for ‘au_serial_out’ [-Wmissing-prototypes]
> > > > > > >
> > > > > > > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > > > > > Cc: Jiri Slaby <jirislaby@kernel.org>
> > > > > > > Cc: Mike Hudson <Exoray@isys.ca>
> > > > > > > Cc: linux-serial@vger.kernel.org
> > > > > > > Signed-off-by: Lee Jones <lee.jones@linaro.org>
> > > > > > > ---
> > > > > > > drivers/tty/serial/8250/8250_port.c | 4 ++--
> > > > > > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > > > > >
> > > > > > And now I get build errors of:
> > > > > > ld: drivers/tty/serial/8250/8250_early.o: in function `early_au_setup':
> > > > > > 8250_early.c:(.init.text+0x7): undefined reference to `au_serial_in'
> > > > > > ld: 8250_early.c:(.init.text+0xf): undefined reference to `au_serial_out'
> > > > > > make: *** [Makefile:1164: vmlinux] Error 1
> > > > > >
> > > > >
> > > > > I *always* test build my sets before posting.
> > > > >
> > > > > /investigating
> > > >
> > > > What config failed for you?
> > > >
> > > > It looks as though SERIAL_8250_CONSOLE is a bool and doesn't appear to
> > > > be compiled with allmodconfig builds for any architecture that I test
> > > > against (Arm, Arm64, MIPS, PPC, x86).
> > >
> > > I build on x86, and here's what I have set:
> > >
> > > CONFIG_SERIAL_EARLYCON=y
> > > CONFIG_SERIAL_8250=y
> > > CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
> > > CONFIG_SERIAL_8250_PNP=y
> > > CONFIG_SERIAL_8250_16550A_VARIANTS=y
> > > CONFIG_SERIAL_8250_FINTEK=y
> > > CONFIG_SERIAL_8250_CONSOLE=y
> > > CONFIG_SERIAL_8250_DMA=y
> > > CONFIG_SERIAL_8250_PCI=y
> > > CONFIG_SERIAL_8250_EXAR=y
> > > CONFIG_SERIAL_8250_NR_UARTS=16
> > > CONFIG_SERIAL_8250_RUNTIME_UARTS=8
> > > CONFIG_SERIAL_8250_EXTENDED=y
> > > # CONFIG_SERIAL_8250_MANY_PORTS is not set
> > > # CONFIG_SERIAL_8250_SHARE_IRQ is not set
> > > # CONFIG_SERIAL_8250_DETECT_IRQ is not set
> > > # CONFIG_SERIAL_8250_RSA is not set
> > > CONFIG_SERIAL_8250_DWLIB=y
> > > CONFIG_SERIAL_8250_DW=m
> > > CONFIG_SERIAL_8250_RT288X=y
> > > CONFIG_SERIAL_8250_UNIPHIER=m
> > > CONFIG_SERIAL_8250_LPSS=y
> > > CONFIG_SERIAL_8250_MID=y
> > > CONFIG_SERIAL_8250_TEGRA=m
> >
> > Is that from the default defconfig? Or something bespoke?
>
> No idea, bespoke I guess, it's grown over the years as what I use for
> testing the tty.git tree. Odd that I have some 8250 options turned off,
> no idea why that is...

Not as strange as this.

I cannot recreate the issue or work out why:

# THE OUTPUT
# *_port.o and *_early.o were both built

$ ls -l ../builds/build-x86/drivers/tty/serial/8250/
total 1196
-rw-rw-r-- 1 lee lee 36376 Nov 6 10:52 8250_aspeed_vuart.o
-rw-rw-r-- 1 lee lee 17696 Nov 6 10:52 8250_bcm2835aux.o
-rw-rw-r-- 1 lee lee 90896 Nov 6 10:52 8250_core.o
-rw-rw-r-- 1 lee lee 34184 Nov 6 10:52 8250_dma.o
-rw-rw-r-- 1 lee lee 11840 Nov 6 10:52 8250_dwlib.o
-rw-rw-r-- 1 lee lee 50472 Nov 6 10:52 8250_dw.o
-rw-rw-r-- 1 lee lee 16496 Nov 6 10:52 8250_early.o
-rw-rw-r-- 1 lee lee 49376 Nov 6 10:52 8250_exar.o
-rw-rw-r-- 1 lee lee 20256 Nov 6 10:52 8250_fintek.o
-rw-rw-r-- 1 lee lee 26976 Nov 6 10:52 8250_ingenic.o
-rw-rw-r-- 1 lee lee 18904 Nov 6 10:52 8250_lpc18xx.o
-rw-rw-r-- 1 lee lee 21712 Nov 6 10:52 8250_lpss.o
-rw-rw-r-- 1 lee lee 18768 Nov 6 10:52 8250_men_mcb.o
-rw-rw-r-- 1 lee lee 25880 Nov 6 10:52 8250_mid.o
-rw-rw-r-- 1 lee lee 30880 Nov 6 10:52 8250_of.o
-rw-rw-r-- 1 lee lee 142776 Nov 6 10:52 8250_pci.o
-rw-rw-r-- 1 lee lee 23240 Nov 6 10:52 8250_pnp.o
-rw-rw-r-- 1 lee lee 214088 Nov 6 10:52 8250_port.o
-rw-rw-r-- 1 lee lee 18992 Nov 6 10:52 8250_tegra.o
-rw-rw-r-- 1 lee lee 23736 Nov 6 10:52 8250_uniphier.o
-rw-rw-r-- 1 lee lee 1626 Nov 6 10:52 built-in.a
-rw-rw-r-- 1 lee lee 0 Nov 6 10:52 modules.order
-rw-rw-r-- 1 lee lee 94280 Nov 6 10:52 serial_cs.o

# THE BUILD

locally noclean x86 w1 drivers/tty debug

Running locally

********************
* Building for X86 *
********************

rm -rf ../builds/build-x86/drivers/tty/

make -f Makefile -j24 KBUILD_OUTPUT=../builds/build-x86 allyesconfig
make -f Makefile -j24 KBUILD_OUTPUT=../builds/build-x86 W=1 drivers/tty/

make[1]: Entering directory '/home/lee/projects/linux/builds/build-x86'
SYNC include/config/auto.conf.cmd
GEN Makefile
GEN Makefile
DESCEND objtool
CALL scripts/atomic/check-atomics.sh
CALL scripts/checksyscalls.sh
CC drivers/tty/tty_io.o
CC drivers/tty/n_tty.o
CC drivers/tty/tty_ioctl.o
CC drivers/tty/tty_ldisc.o
CC drivers/tty/tty_buffer.o
CC drivers/tty/tty_port.o
CC drivers/tty/vt/vt_ioctl.o
CC drivers/tty/tty_mutex.o
CC drivers/tty/hvc/hvc_console.o
CC drivers/tty/vt/selection.o
CC drivers/tty/vt/vc_screen.o
CC drivers/tty/hvc/hvc_irq.o
CC drivers/tty/ipwireless/hardware.o
CC drivers/tty/serdev/core.o
CC drivers/tty/tty_ldsem.o
CC drivers/tty/vt/keyboard.o
CC drivers/tty/serdev/serdev-ttyport.o
CC drivers/tty/hvc/hvc_xen.o
CC drivers/tty/tty_baudrate.o
CC drivers/tty/ipwireless/main.o
CC drivers/tty/serial/serial_core.o
CC drivers/tty/serial/8250/8250_core.o
CC drivers/tty/serial/8250/8250_pnp.o
CC drivers/tty/serial/jsm/jsm_driver.o
CC drivers/tty/ipwireless/network.o
CC drivers/tty/ipwireless/tty.o
CC drivers/tty/serial/8250/8250_port.o
CC drivers/tty/vt/consolemap.o
CC drivers/tty/serial/jsm/jsm_neo.o
CC drivers/tty/serial/8250/8250_dma.o
HOSTCC drivers/tty/vt/conmakehash
CC drivers/tty/tty_jobctrl.o
CC drivers/tty/n_null.o
CC drivers/tty/serial/8250/8250_dwlib.o
CC drivers/tty/vt/vt.o
AR drivers/tty/ipwireless/built-in.a
CC drivers/tty/serial/jsm/jsm_tty.o
CC drivers/tty/serial/jsm/jsm_cls.o
CC drivers/tty/serial/earlycon.o
CC drivers/tty/pty.o
SHIPPED drivers/tty/vt/defkeymap.c
CC drivers/tty/tty_audit.o
CC drivers/tty/vt/defkeymap.o
CONMK drivers/tty/vt/consolemap_deftbl.c
CC drivers/tty/vt/consolemap_deftbl.o
CC drivers/tty/serial/clps711x.o
CC drivers/tty/serial/8250/8250_fintek.o
AR drivers/tty/serial/jsm/built-in.a
AR drivers/tty/hvc/built-in.a
CC drivers/tty/serial/bcm63xx_uart.o
CC drivers/tty/serial/8250/8250_pci.o
CC drivers/tty/serial/samsung_tty.o
CC drivers/tty/serial/8250/8250_exar.o
CC drivers/tty/serial/max3100.o
CC drivers/tty/serial/max310x.o
CC drivers/tty/serial/lpc32xx_hs.o
AR drivers/tty/serdev/built-in.a
CC drivers/tty/serial/8250/serial_cs.o
CC drivers/tty/serial/8250/8250_aspeed_vuart.o
CC drivers/tty/sysrq.o
CC drivers/tty/n_hdlc.o
CC drivers/tty/n_gsm.o
CC drivers/tty/n_tracerouter.o
CC drivers/tty/n_tracesink.o
CC drivers/tty/serial/8250/8250_bcm2835aux.o
CC drivers/tty/serial/sh-sci.o
CC drivers/tty/cyclades.o
CC drivers/tty/serial/imx.o
CC drivers/tty/serial/imx_earlycon.o
CC drivers/tty/serial/8250/8250_early.o
CC drivers/tty/serial/8250/8250_men_mcb.o
CC drivers/tty/isicom.o
CC drivers/tty/moxa.o
CC drivers/tty/serial/8250/8250_dw.o
AR drivers/tty/vt/built-in.a
CC drivers/tty/mxser.o
CC drivers/tty/serial/sccnxp.o
CC drivers/tty/serial/8250/8250_lpc18xx.o
CC drivers/tty/serial/sc16is7xx.o
CC drivers/tty/serial/8250/8250_uniphier.o
CC drivers/tty/serial/atmel_serial.o
CC drivers/tty/serial/uartlite.o
CC drivers/tty/serial/8250/8250_ingenic.o
CC drivers/tty/serial/qcom_geni_serial.o
CC drivers/tty/serial/8250/8250_lpss.o
CC drivers/tty/serial/8250/8250_mid.o
CC drivers/tty/nozomi.o
CC drivers/tty/ttynull.o
CC drivers/tty/rocket.o
CC drivers/tty/synclink_gt.o
CC drivers/tty/serial/8250/8250_tegra.o
CC drivers/tty/serial/8250/8250_of.o
CC drivers/tty/goldfish.o
CC drivers/tty/serial/altera_uart.o
CC drivers/tty/serial/st-asc.o
CC drivers/tty/serial/ucc_uart.o
CC drivers/tty/serial/timbuart.o
CC drivers/tty/serial/altera_jtaguart.o
CC drivers/tty/serial/ifx6x60.o
CC drivers/tty/serial/pch_uart.o
CC drivers/tty/serial/mxs-auart.o
CC drivers/tty/serial/lantiq.o
AR drivers/tty/serial/8250/built-in.a
CC drivers/tty/serial/xilinx_uartps.o
CC drivers/tty/serial/arc_uart.o
CC drivers/tty/serial/rp2.o
CC drivers/tty/serial/fsl_lpuart.o
CC drivers/tty/serial/fsl_linflexuart.o
CC drivers/tty/serial/digicolor-usart.o
CC drivers/tty/serial/men_z135_uart.o
CC drivers/tty/serial/sprd_serial.o
CC drivers/tty/serial/stm32-usart.o
CC drivers/tty/serial/mvebu-uart.o
CC drivers/tty/serial/mps2-uart.o
CC drivers/tty/serial/owl-uart.o
CC drivers/tty/serial/rda-uart.o
CC drivers/tty/serial/milbeaut_usio.o
CC drivers/tty/serial/sifive.o
CC drivers/tty/serial/serial_mctrl_gpio.o
CC drivers/tty/serial/kgdb_nmi.o
CC drivers/tty/serial/kgdboc.o
AR drivers/tty/serial/built-in.a
AR drivers/tty/built-in.a
make[1]: Leaving directory '/home/lee/projects/linux/builds/build-x86'

******************************
* Checking for SPARSE errors *
******************************

make -f Makefile -j24 KBUILD_OUTPUT=../builds/build-x86 C=1 W=1 drivers/tty/

make[1]: Entering directory '/home/lee/projects/linux/builds/build-x86'
GEN Makefile
DESCEND objtool
CALL scripts/atomic/check-atomics.sh
CALL scripts/checksyscalls.sh
make[1]: Leaving directory '/home/lee/projects/linux/builds/build-x86'

******************************
* Checking for SMATCH errors *
* TODO: stdout => stderr *
******************************

make -f Makefile -j24 KBUILD_OUTPUT=../builds/build-x86 C=1 CHECK='smatch --no-data -p=kernel' W=1 drivers/tty/

make[1]: Entering directory '/home/lee/projects/linux/builds/build-x86'
GEN Makefile
DESCEND objtool
CALL scripts/atomic/check-atomics.sh
CALL scripts/checksyscalls.sh
make[1]: Leaving directory '/home/lee/projects/linux/builds/build-x86'

--
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog