drivers/tty/serial/8250/8250.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
From: Hugo Villeneuve <hvilleneuve@dimonoff.com>
With CONFIG_SERIAL_8250_HUB6=m, we have the following compile error:
../drivers/tty/serial/8250/8250_hub6.c:46:6: error: redefinition of
'hub6_match_port'
Fix hub6_match_port() prototype definition by using IS_REACHABLE() to
support both built-in and module values, and substitute empty prototype
otherwise.
Fixes: 3d406299d8829 ("serial: 8250_hub6: add hub6_match_port()")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202607150717.2YxVdWpX-lkp@intel.com/
Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
---
drivers/tty/serial/8250/8250.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h
index 9d1068d0489dc..b62f88eec881f 100644
--- a/drivers/tty/serial/8250/8250.h
+++ b/drivers/tty/serial/8250/8250.h
@@ -8,6 +8,7 @@
*/
#include <linux/bits.h>
+#include <linux/kconfig.h>
#include <linux/serial_8250.h>
#include <linux/serial_core.h>
#include <linux/dmaengine.h>
@@ -334,7 +335,7 @@ int fintek_8250_probe(struct uart_8250_port *uart);
static inline int fintek_8250_probe(struct uart_8250_port *uart) { return 0; }
#endif
-#ifdef CONFIG_SERIAL_8250_HUB6
+#if IS_REACHABLE(CONFIG_SERIAL_8250_HUB6)
bool hub6_match_port(const struct uart_port *port1, const struct uart_port *port2);
#else
static inline bool hub6_match_port(const struct uart_port *port1, const struct uart_port *port2)
base-commit: da7b5fd4e17f8e44c5590f2d603c01d499f056e6
--
2.47.3
On Wed, Jul 15, 2026 at 11:37:05AM -0400, Hugo Villeneuve wrote: > With CONFIG_SERIAL_8250_HUB6=m, we have the following compile error: > > ../drivers/tty/serial/8250/8250_hub6.c:46:6: error: redefinition of > 'hub6_match_port' > > Fix hub6_match_port() prototype definition by using IS_REACHABLE() to > support both built-in and module values, and substitute empty prototype > otherwise. ... > +#include <linux/kconfig.h> It's special header. It is always-included one, and hence here is a dup, please drop this line. -- With Best Regards, Andy Shevchenko
Hi Andy, On Mon, 20 Jul 2026 21:09:03 +0200 Andy Shevchenko <andriy.shevchenko@intel.com> wrote: > On Wed, Jul 15, 2026 at 11:37:05AM -0400, Hugo Villeneuve wrote: > > > With CONFIG_SERIAL_8250_HUB6=m, we have the following compile error: > > > > ../drivers/tty/serial/8250/8250_hub6.c:46:6: error: redefinition of > > 'hub6_match_port' > > > > Fix hub6_match_port() prototype definition by using IS_REACHABLE() to > > support both built-in and module values, and substitute empty prototype > > otherwise. > > ... > > > +#include <linux/kconfig.h> > > It's special header. It is always-included one, and hence here is a dup, please > drop this line. Will do. I will also remove the one in max310x.c which was added by... me :) -- Hugo Villeneuve
On Mon, Jul 20, 2026 at 03:11:40PM -0400, Hugo Villeneuve wrote: > On Mon, 20 Jul 2026 21:09:03 +0200 > Andy Shevchenko <andriy.shevchenko@intel.com> wrote: > > On Wed, Jul 15, 2026 at 11:37:05AM -0400, Hugo Villeneuve wrote: ... > > > +#include <linux/kconfig.h> > > > > It's special header. It is always-included one, and hence here is a dup, please > > drop this line. > > Will do. I will also remove the one in max310x.c which was added by... > me :) Yes, please. You can find the similar dropping changes in the lore archive from the last week, I sent a few. There is a pointer to the commit that makes that possible. -- With Best Regards, Andy Shevchenko
On Wed, Jul 15, 2026 at 11:37:05AM -0400, Hugo Villeneuve wrote:
> From: Hugo Villeneuve <hvilleneuve@dimonoff.com>
>
> With CONFIG_SERIAL_8250_HUB6=m, we have the following compile error:
>
> ../drivers/tty/serial/8250/8250_hub6.c:46:6: error: redefinition of
> 'hub6_match_port'
>
> Fix hub6_match_port() prototype definition by using IS_REACHABLE() to
> support both built-in and module values, and substitute empty prototype
> otherwise.
>
> Fixes: 3d406299d8829 ("serial: 8250_hub6: add hub6_match_port()")
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202607150717.2YxVdWpX-lkp@intel.com/
> Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
I hit the same problem and fixed it similarly[1] before spotting this
patch.
> ---
> drivers/tty/serial/8250/8250.h | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h
> index 9d1068d0489dc..b62f88eec881f 100644
> --- a/drivers/tty/serial/8250/8250.h
> +++ b/drivers/tty/serial/8250/8250.h
> @@ -8,6 +8,7 @@
> */
>
> #include <linux/bits.h>
> +#include <linux/kconfig.h>
This isn't really needed, because the compiler is called with
-include $(srctree)/include/linux/kconfig.h
which I think you can rely on. But it also doesn't hurt.
> #include <linux/serial_8250.h>
> #include <linux/serial_core.h>
> #include <linux/dmaengine.h>
> @@ -334,7 +335,7 @@ int fintek_8250_probe(struct uart_8250_port *uart);
> static inline int fintek_8250_probe(struct uart_8250_port *uart) { return 0; }
> #endif
>
> -#ifdef CONFIG_SERIAL_8250_HUB6
> +#if IS_REACHABLE(CONFIG_SERIAL_8250_HUB6)
I picked IS_ENABLED(). Both work fine here. (IS_ENABLED() has the slight
(maybe subjective) advantage to break if CONFIG_SERIAL_8250_HUB6 is
enabled but not reachabe (which currently cannot happen).
Anyhow:
Reviewed-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Tested-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Best regards
Uwe
© 2016 - 2026 Red Hat, Inc.