Re: [PATCH] serial: 8250_hub6: Fix double definition for hub6_match_port()
From: Greg Kroah-Hartman
Date: Thu Jul 30 2026 - 12:46:12 EST
On Wed, Jul 29, 2026 at 03:30:57PM +0200, Uwe Kleine-König wrote:
> Hello Hugo,
>
> On Mon, Jul 27, 2026 at 11:26:43AM -0400, Hugo Villeneuve wrote:
> > On Mon, 27 Jul 2026 11:22:10 -0400
> > Hugo Villeneuve <hugo@xxxxxxxxxxx> wrote:
> >
> > > Hi Uwe,
> > >
> > > On Fri, 24 Jul 2026 09:58:13 +0200
> > > Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxx> wrote:
> > >
> > > > On Thu, Jul 23, 2026 at 11:13:59PM -0400, Hugo Villeneuve wrote:
> > > > > > For me the open question remains if the driver works in the
> > > > > > configuration CONFIG_SERIAL_8250=y (and thus CONFIG_SERIAL_CORE=y) +
> > > > > > CONFIG_SERIAL_8250_HUB6=m. In this case at least commit
> > > > > > 3d406299d8829747fe2e8692f4c29fe3dc1d101f +
> > > > > > https://lore.kernel.org/linux-serial/20260715153707.4181828-1-hugo@xxxxxxxxxxx/
> > > > > > introduces a logical change in uart_match_port() that isn't explained in
> > > > > > the commit log.
> > > > >
> > > > > Not sure what you mean by that logical change?
> > > >
> > > > With said configuration and before
> > > > 3d406299d8829747fe2e8692f4c29fe3dc1d101f uart_match_port() returned
> > > >
> > > > port1->iobase == port2->iobase && port1->hub6 == port2->hub6
> > > >
> > > > and with 3d406299d8829747fe2e8692f4c29fe3dc1d101f (and your fix on top)
> > > > it returns false (because when drivers/tty/serial/serial_core.c is
> > > > compiled IS_REACHABLE(CONFIG_SERIAL_8250_HUB6) evaluates to false).
> > >
> > > this change was certainly not intended, sorry about that. Looks like
> > > there are still subtle Kconfig-isms (and 8250-isms) that I still need to
> > > master...
> > >
> > > So to be sure i understand this correctly:
> > > I will submit a patch to replace IS_REACHABLE with IS_ENABLED, which
> > > means that the configuration CONFIG_SERIAL_8250=y and
> > > CONFIG_SERIAL_8250_HUB6=m is not supported, as you stated that
> > > it currently cannot happen?
>
> No, that can happen. e.g. ARCH=parisc allmodconfig has something similar
> (and this is how I stumbled over the breakage of
> 3d406299d8829747fe2e8692f4c29fe3dc1d101f).
>
> [similar = SERIAL_CORE=y + SERIAL_8250_HUB6=m]
>
> > Or we leave it as is, since this combination is not really valid?
>
> Not sure what you're saying here. You want to keep the IS_REACHABLE and
> so be able to compile CONFIG_SERIAL_8250=y + CONFIG_SERIAL_8250_HUB6=m
> but have that broken at runtime? What does make CONFIG_SERIAL_8250=y +
> CONFIG_SERIAL_8250_HUB6=m "not really valid"? Or do you mean something
> else?
>
> I think the real fix would be to just copy uart_match_port() into the
> two drivers that actually use it (and remove the then dead code paths).
> Then it would be drivers/tty/serial/8250/8250_core.c using
> hub6_match_port() only and that can be handled by a proper dependency.
I'm totally confused, so I'll drop this patch from my review queue and
wait for you all to figure it out :)