Re: [PATCH v4 06/10] ARM: defconfig: Use the new FSL QSPI driver under the SPI framework

From: Boris Brezillon
Date: Mon Nov 12 2018 - 05:56:44 EST


On Mon, 12 Nov 2018 10:46:45 +0000
Schrempf Frieder <frieder.schrempf@xxxxxxxxxx> wrote:

> On 08.11.18 09:34, Boris Brezillon wrote:
> > On Wed, 7 Nov 2018 16:36:13 +0000
> > Schrempf Frieder <frieder.schrempf@xxxxxxxxxx> wrote:
> >
> >> Hi Olof,
> >>
> >> On 07.11.18 17:20, Olof Johansson wrote:
> >>> On Wed, Nov 7, 2018 at 6:44 AM Frieder Schrempf
> >>> <frieder.schrempf@xxxxxxxxxx> wrote:
> >>>>
> >>>> From: Frieder Schrempf <frieder.schrempf@xxxxxxxxx>
> >>>>
> >>>> The new driver at spi/spi-fsl-qspi.c replaces the old SPI NOR driver
> >>>> at mtd/fsl-quadspi.c. Switch to the new driver in the defconfigs.
> >>>>
> >>>> Signed-off-by: Frieder Schrempf <frieder.schrempf@xxxxxxxxx>
> >>>
> >>> Hi Frieder,
> >>>
> >>> This patch is part of a series that I didn't see the rest of, but in
> >>> general we prefer to merge these through arm-soc even if the driver
> >>> goes in through another tree. The way we'd prefer to handle it is that
> >>> once the driver lands, we'll take the config option change to turn it
> >>> on. To avoid our branches to break until both sides have landed, it
> >>> might be a good idea to keep both drivers on for a short while (one
> >>> release).
> >>>
> >>> So, I'm not going to ack this since we avoid taking defconfig changes
> >>> through driver trees (these two defconfigs tend to churn a lot and we
> >>> don't want to create merge conflicts where we don't have to), but
> >>> we'll be happy to pick it up when the time comes.
> >>
> >> Ok, thank you for explaining the common practice. I will drop the config
> >> changes for the next version and send it separately when the time is ready.
> >>
> >> Both the old driver and the new one use the same compatible strings for
> >> probing. Wouldn't that cause problems if both drivers are enabled for a
> >> while, or am I missing something?
> >
> > Or maybe we should not introduce a new Kconfig option and just reuse
> > the old one. It probably requires re-ordering patches a bit (patch 1
> > should be moved after patch 5). Then you have 2 choices:
> >
> > 1/ merge patch 1 and 6 so that the new driver effectively replaces the
> > old one but uses the same Kconfig option
> > 2/ remove the ability to compile the old driver when the new one is
> > introduced: remove the line from drivers/mtd/spi-nor Makefile and
> > move the Kconfig entry from drivers/mtd/spi-nor/Kconfig to
> > drivers/spi/Kconfig. And remove the old code in a separate patch
> >
> > I'm fine either way, but option #2 will probably make the patch
> > introducing the new driver bigger and hurt readability.
>
> I think having both drivers in the tree for a while wouldn't be so bad.
> So if any compatibility issues come up with the new driver, people can
> still use the old one.

Except that's not what happens in practice. Believe me, I tried this
approach several times, and people keep using the old driver until
they're forced to switch to the new one. So you actually don't address
the problem, you just delay it a bit, and you'll have to fix
regressions anyway.

>
> Therefore I think I will drop the patches that change the defconfig and
> remove the old driver code and keep the different Kconfig options. And
> maybe add an exclusive dependency in Kconfig, so both drivers can not be
> enabled at the same time.
>
> Does this make sense?

I'd really prefer to have the removal of the old driver in the same
release the new driver is introduced but if that's not possible, let's
have a clear plan, like "introduce new driver in release X, remove the
old one in release X+1".