Re: [REGRESSION] 6.6.141 s390x build failure in s390/cio due to missing driver_override infrastructure

From: Natanael Copa

Date: Tue May 26 2026 - 16:13:17 EST


On Tue, 26 May 2026 07:35:06 -0400
Sasha Levin <sashal@xxxxxxxxxx> wrote:

> > v6.6.141 fails to build on s390x with
> >
> > drivers/s390/cio/css.c: error: implicit declaration of function
> > 'device_match_driver_override'
> > drivers/s390/cio/css.c: error: 'struct bus_type' has no member named
> > 'driver_override'
> >
> > The s390/cio change (c4295487124f, upstream ac4d8bb6e2e1) was queued
> > without its driver-core prerequisite cb3d1049f4ea ("driver core:
> > generalize driver_override in struct device").
> >
> > Could you backport cb3d1049f4ea to 6.6.y, or revert c4295487124f?
>
> Thanks for the report and the analysis.
>
> The driver-core prerequisite (cb3d1049f4ea) is already queued for
> 6.6.y - The companion bdddb54c533f ("driver core: platform: use generic
> driver_override infrastructure") is queued too. Once 6.6.142 ships the build
> error should resolve.
>
> Newer LTS branches (6.12/6.18/7.0) already have the prerequisite as
> an ancestor, so only 6.6.y was affected.

FYI. We also needed this for the build to pass:

diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index 93307ca75c10..57cbba03beb8 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -1322,7 +1322,7 @@ static int purge_fn(struct subchannel *sch, void *data)
{
struct ccw_device *cdev;

- spin_lock_irq(sch->lock);
+ spin_lock_irq(&sch->lock);
if (sch->st != SUBCHANNEL_TYPE_IO || !sch->schib.pmcw.dnv)
goto unlock;

@@ -1345,7 +1345,7 @@ static int purge_fn(struct subchannel *sch, void *data)
sch->schib.pmcw.dev, cdev ? "" : " (no cdev)");

unlock:
- spin_unlock_irq(sch->lock);
+ spin_unlock_irq(&sch->lock);
/* Abort loop in case of pending signal. */
if (signal_pending(current))
return -EINTR;


-nc