All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masahiro Yamada <masahiroy@kernel.org>
To: Alexander Lobakin <alobakin@pm.me>
Cc: linux-kbuild@vger.kernel.org, Nicolas Schier <nicolas@fjasle.eu>,
	Jens Axboe <axboe@kernel.dk>,
	Boris Brezillon <bbrezillon@kernel.org>,
	Borislav Petkov <bp@alien8.de>, Tony Luck <tony.luck@intel.com>,
	Miquel Raynal <miquel.raynal@bootlin.com>,
	Vladimir Oltean <vladimir.oltean@nxp.com>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>,
	Derek Chickles <dchickles@marvell.com>,
	Ioana Ciornei <ioana.ciornei@nxp.com>,
	Salil Mehta <salil.mehta@huawei.com>,
	Sunil Goutham <sgoutham@marvell.com>,
	Grygorii Strashko <grygorii.strashko@ti.com>,
	Daniel Scally <djrscally@gmail.com>,
	Hans de Goede <hdegoede@redhat.com>,
	Mark Brown <broonie@kernel.org>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	NXP Linux Team <linux-imx@nxp.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 12/18] mtd: tests: fix object shared between several modules
Date: Wed, 23 Nov 2022 22:11:49 +0900	[thread overview]
Message-ID: <CAK7LNASni5uNFOtR-6VykBHX1Wgg-rOt=q0Lk+H2Vbn7pCsBDQ@mail.gmail.com> (raw)
In-Reply-To: <20221119225650.1044591-13-alobakin@pm.me>

On Sun, Nov 20, 2022 at 8:08 AM Alexander Lobakin <alobakin@pm.me> wrote:
>
> mtd_test.o is linked to 8(!) different test modules:
>
> > scripts/Makefile.build:252: ./drivers/mtd/tests/Makefile: mtd_test.o
> > is added to multiple modules: mtd_nandbiterrs mtd_oobtest mtd_pagetest
> > mtd_readtest mtd_speedtest mtd_stresstest mtd_subpagetest mtd_torturetest
>
> Although all of them share one Kconfig option
> (CONFIG_MTD_TESTS), it's better to not link one object file into
> several modules (and/or vmlinux).
> Under certain circumstances, such can lead to the situation fixed by
> commit 637a642f5ca5 ("zstd: Fixing mixed module-builtin objects").
> In this particular case, there's also no need to duplicate the very
> same object code 8 times.
>
> Convert mtd_test.o to a standalone module which will export its
> functions to the rest.
>
> Fixes: a995c792280d ("mtd: tests: rename sources in order to link a helper object")
> Suggested-by: Masahiro Yamada <masahiroy@kernel.org>

IMHO, Reported-by might be a better fit.


I think they can become static inline functions in mtd_test.h
(at least, mtdtest_relax() is a static inline there), but I am not sure.

Please send this to the MTD list, and consult the maintainer(s).






> Signed-off-by: Alexander Lobakin <alobakin@pm.me>
> ---
>  drivers/mtd/tests/Makefile      | 17 +++++++++--------
>  drivers/mtd/tests/mtd_test.c    |  9 +++++++++
>  drivers/mtd/tests/nandbiterrs.c |  2 ++
>  drivers/mtd/tests/oobtest.c     |  2 ++
>  drivers/mtd/tests/pagetest.c    |  2 ++
>  drivers/mtd/tests/readtest.c    |  2 ++
>  drivers/mtd/tests/speedtest.c   |  2 ++
>  drivers/mtd/tests/stresstest.c  |  2 ++
>  drivers/mtd/tests/subpagetest.c |  2 ++
>  drivers/mtd/tests/torturetest.c |  2 ++
>  10 files changed, 34 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/mtd/tests/Makefile b/drivers/mtd/tests/Makefile
> index 5de0378f90db..e3f86ed123ca 100644
> --- a/drivers/mtd/tests/Makefile
> +++ b/drivers/mtd/tests/Makefile
> @@ -1,4 +1,5 @@
>  # SPDX-License-Identifier: GPL-2.0
> +obj-$(CONFIG_MTD_TESTS) += mtd_test.o
>  obj-$(CONFIG_MTD_TESTS) += mtd_oobtest.o
>  obj-$(CONFIG_MTD_TESTS) += mtd_pagetest.o
>  obj-$(CONFIG_MTD_TESTS) += mtd_readtest.o
> @@ -9,11 +10,11 @@ obj-$(CONFIG_MTD_TESTS) += mtd_torturetest.o
>  obj-$(CONFIG_MTD_TESTS) += mtd_nandecctest.o
>  obj-$(CONFIG_MTD_TESTS) += mtd_nandbiterrs.o
>
> -mtd_oobtest-objs := oobtest.o mtd_test.o
> -mtd_pagetest-objs := pagetest.o mtd_test.o
> -mtd_readtest-objs := readtest.o mtd_test.o
> -mtd_speedtest-objs := speedtest.o mtd_test.o
> -mtd_stresstest-objs := stresstest.o mtd_test.o
> -mtd_subpagetest-objs := subpagetest.o mtd_test.o
> -mtd_torturetest-objs := torturetest.o mtd_test.o
> -mtd_nandbiterrs-objs := nandbiterrs.o mtd_test.o
> +mtd_oobtest-objs := oobtest.o
> +mtd_pagetest-objs := pagetest.o
> +mtd_readtest-objs := readtest.o
> +mtd_speedtest-objs := speedtest.o
> +mtd_stresstest-objs := stresstest.o
> +mtd_subpagetest-objs := subpagetest.o
> +mtd_torturetest-objs := torturetest.o
> +mtd_nandbiterrs-objs := nandbiterrs.o
> diff --git a/drivers/mtd/tests/mtd_test.c b/drivers/mtd/tests/mtd_test.c
> index c84250beffdc..93920a714315 100644
> --- a/drivers/mtd/tests/mtd_test.c
> +++ b/drivers/mtd/tests/mtd_test.c
> @@ -25,6 +25,7 @@ int mtdtest_erase_eraseblock(struct mtd_info *mtd, unsigned int ebnum)
>
>         return 0;
>  }
> +EXPORT_SYMBOL_NS_GPL(mtdtest_erase_eraseblock, MTD_TESTS);
>
>  static int is_block_bad(struct mtd_info *mtd, unsigned int ebnum)
>  {
> @@ -57,6 +58,7 @@ int mtdtest_scan_for_bad_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,
>
>         return 0;
>  }
> +EXPORT_SYMBOL_NS_GPL(mtdtest_scan_for_bad_eraseblocks, MTD_TESTS);
>
>  int mtdtest_erase_good_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,
>                                 unsigned int eb, int ebcnt)
> @@ -75,6 +77,7 @@ int mtdtest_erase_good_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,
>
>         return 0;
>  }
> +EXPORT_SYMBOL_NS_GPL(mtdtest_erase_good_eraseblocks, MTD_TESTS);
>
>  int mtdtest_read(struct mtd_info *mtd, loff_t addr, size_t size, void *buf)
>  {
> @@ -92,6 +95,7 @@ int mtdtest_read(struct mtd_info *mtd, loff_t addr, size_t size, void *buf)
>
>         return err;
>  }
> +EXPORT_SYMBOL_NS_GPL(mtdtest_read, MTD_TESTS);
>
>  int mtdtest_write(struct mtd_info *mtd, loff_t addr, size_t size,
>                 const void *buf)
> @@ -107,3 +111,8 @@ int mtdtest_write(struct mtd_info *mtd, loff_t addr, size_t size,
>
>         return err;
>  }
> +EXPORT_SYMBOL_NS_GPL(mtdtest_write, MTD_TESTS);
> +
> +MODULE_DESCRIPTION("MTD test common module");
> +MODULE_AUTHOR("Adrian Hunter");
> +MODULE_LICENSE("GPL");
> diff --git a/drivers/mtd/tests/nandbiterrs.c b/drivers/mtd/tests/nandbiterrs.c
> index 98d7508f95b1..acf44edfca53 100644
> --- a/drivers/mtd/tests/nandbiterrs.c
> +++ b/drivers/mtd/tests/nandbiterrs.c
> @@ -414,6 +414,8 @@ static void __exit mtd_nandbiterrs_exit(void)
>  module_init(mtd_nandbiterrs_init);
>  module_exit(mtd_nandbiterrs_exit);
>
> +MODULE_IMPORT_NS(MTD_TESTS);
> +
>  MODULE_DESCRIPTION("NAND bit error recovery test");
>  MODULE_AUTHOR("Iwo Mergler");
>  MODULE_LICENSE("GPL");
> diff --git a/drivers/mtd/tests/oobtest.c b/drivers/mtd/tests/oobtest.c
> index 13fed398937e..da4efcdd59b2 100644
> --- a/drivers/mtd/tests/oobtest.c
> +++ b/drivers/mtd/tests/oobtest.c
> @@ -728,6 +728,8 @@ static void __exit mtd_oobtest_exit(void)
>  }
>  module_exit(mtd_oobtest_exit);
>
> +MODULE_IMPORT_NS(MTD_TESTS);
> +
>  MODULE_DESCRIPTION("Out-of-band test module");
>  MODULE_AUTHOR("Adrian Hunter");
>  MODULE_LICENSE("GPL");
> diff --git a/drivers/mtd/tests/pagetest.c b/drivers/mtd/tests/pagetest.c
> index 8eb40b6e6dfa..ac2bcc76b402 100644
> --- a/drivers/mtd/tests/pagetest.c
> +++ b/drivers/mtd/tests/pagetest.c
> @@ -456,6 +456,8 @@ static void __exit mtd_pagetest_exit(void)
>  }
>  module_exit(mtd_pagetest_exit);
>
> +MODULE_IMPORT_NS(MTD_TESTS);
> +
>  MODULE_DESCRIPTION("NAND page test");
>  MODULE_AUTHOR("Adrian Hunter");
>  MODULE_LICENSE("GPL");
> diff --git a/drivers/mtd/tests/readtest.c b/drivers/mtd/tests/readtest.c
> index 99670ef91f2b..7e01dbc1e8ca 100644
> --- a/drivers/mtd/tests/readtest.c
> +++ b/drivers/mtd/tests/readtest.c
> @@ -210,6 +210,8 @@ static void __exit mtd_readtest_exit(void)
>  }
>  module_exit(mtd_readtest_exit);
>
> +MODULE_IMPORT_NS(MTD_TESTS);
> +
>  MODULE_DESCRIPTION("Read test module");
>  MODULE_AUTHOR("Adrian Hunter");
>  MODULE_LICENSE("GPL");
> diff --git a/drivers/mtd/tests/speedtest.c b/drivers/mtd/tests/speedtest.c
> index 075bce32caa5..58f3701d65f2 100644
> --- a/drivers/mtd/tests/speedtest.c
> +++ b/drivers/mtd/tests/speedtest.c
> @@ -413,6 +413,8 @@ static void __exit mtd_speedtest_exit(void)
>  }
>  module_exit(mtd_speedtest_exit);
>
> +MODULE_IMPORT_NS(MTD_TESTS);
> +
>  MODULE_DESCRIPTION("Speed test module");
>  MODULE_AUTHOR("Adrian Hunter");
>  MODULE_LICENSE("GPL");
> diff --git a/drivers/mtd/tests/stresstest.c b/drivers/mtd/tests/stresstest.c
> index 75b6ddc5dc4d..341d7cc86d89 100644
> --- a/drivers/mtd/tests/stresstest.c
> +++ b/drivers/mtd/tests/stresstest.c
> @@ -227,6 +227,8 @@ static void __exit mtd_stresstest_exit(void)
>  }
>  module_exit(mtd_stresstest_exit);
>
> +MODULE_IMPORT_NS(MTD_TESTS);
> +
>  MODULE_DESCRIPTION("Stress test module");
>  MODULE_AUTHOR("Adrian Hunter");
>  MODULE_LICENSE("GPL");
> diff --git a/drivers/mtd/tests/subpagetest.c b/drivers/mtd/tests/subpagetest.c
> index 05250a080139..87ee2a5c518a 100644
> --- a/drivers/mtd/tests/subpagetest.c
> +++ b/drivers/mtd/tests/subpagetest.c
> @@ -432,6 +432,8 @@ static void __exit mtd_subpagetest_exit(void)
>  }
>  module_exit(mtd_subpagetest_exit);
>
> +MODULE_IMPORT_NS(MTD_TESTS);
> +
>  MODULE_DESCRIPTION("Subpage test module");
>  MODULE_AUTHOR("Adrian Hunter");
>  MODULE_LICENSE("GPL");
> diff --git a/drivers/mtd/tests/torturetest.c b/drivers/mtd/tests/torturetest.c
> index 841689b4d86d..2de770f18724 100644
> --- a/drivers/mtd/tests/torturetest.c
> +++ b/drivers/mtd/tests/torturetest.c
> @@ -475,6 +475,8 @@ static int countdiffs(unsigned char *buf, unsigned char *check_buf,
>         return first;
>  }
>
> +MODULE_IMPORT_NS(MTD_TESTS);
> +
>  MODULE_DESCRIPTION("Eraseblock torturing module");
>  MODULE_AUTHOR("Artem Bityutskiy, Jarkko Lavinen, Adrian Hunter");
>  MODULE_LICENSE("GPL");
> --
> 2.38.1
>
>


-- 
Best Regards
Masahiro Yamada

  reply	other threads:[~2022-11-23 13:31 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-19 23:03 [PATCH 00/18] treewide: fix object files shared between several modules Alexander Lobakin
2022-11-19 23:04 ` [PATCH 01/18] block/rnbd: fix mixed module-builtin object Alexander Lobakin
2022-11-21 21:17   ` Andrew Davis
2022-11-22  5:59     ` Masahiro Yamada
2022-11-29 18:24       ` Andrew Davis
2022-11-19 23:04 ` [PATCH 02/18] drm/bridge: imx: " Alexander Lobakin
2022-11-19 23:05 ` [PATCH 03/18] drm/bridge: imx: turn imx8{qm,qxp}-ldb into single-object modules Alexander Lobakin
2022-11-19 23:05 ` [PATCH 04/18] sound: fix mixed module-builtin object Alexander Lobakin
2022-11-19 23:05 ` [PATCH 05/18] mfd: rsmu: " Alexander Lobakin
2022-11-19 23:06 ` [PATCH 06/18] mfd: rsmu: turn rsmu-{core,i2c,spi} into single-object modules Alexander Lobakin
2022-11-19 23:06 ` [PATCH 07/18] net: liquidio: fix mixed module-builtin object Alexander Lobakin
2022-11-19 23:06 ` [PATCH 08/18] net: enetc: " Alexander Lobakin
2022-11-23 13:03   ` Masahiro Yamada
2022-11-19 23:07 ` [PATCH 09/18] net: emac, cpsw: fix mixed module-builtin object (davinci_cpdma) Alexander Lobakin
2022-11-23 16:04   ` Masahiro Yamada
2022-11-19 23:07 ` [PATCH 10/18] EDAC: i10nm, skx: fix mixed module-builtin object Alexander Lobakin
2022-11-23 16:12   ` Masahiro Yamada
2022-11-19 23:08 ` [PATCH 11/18] platform/x86: int3472: fix object shared between several modules Alexander Lobakin
2022-11-20 13:55   ` Andy Shevchenko
2022-11-20 20:54     ` Hans de Goede
2022-11-20 23:45       ` Masahiro Yamada
2022-11-21  8:12         ` Hans de Goede
2022-11-21  9:06           ` Masahiro Yamada
2022-11-21  9:34             ` Hans de Goede
2022-11-23 21:19               ` Alexander Lobakin
2022-11-23 21:10           ` Alexander Lobakin
2022-11-23  0:01     ` Alexander Lobakin
2022-11-19 23:08 ` [PATCH 12/18] mtd: tests: " Alexander Lobakin
2022-11-23 13:11   ` Masahiro Yamada [this message]
2022-11-23 16:59     ` Miquel Raynal
2022-11-24 11:31       ` Miquel Raynal
2022-11-19 23:09 ` [PATCH 13/18] crypto: octeontx2: fix objects " Alexander Lobakin
2022-11-23 16:26   ` Masahiro Yamada
2023-02-06  5:18   ` [PATCH] crypto: octeontx2 - Fix " Herbert Xu
2022-11-19 23:09 ` [PATCH 14/18] dsa: ocelot: fix mixed module-builtin object Alexander Lobakin
2022-11-21 17:55   ` Vladimir Oltean
2022-11-21 18:12     ` Colin Foster
2022-11-21 21:02       ` Vladimir Oltean
2022-11-23 21:31       ` Alexander Lobakin
2022-11-23 21:47       ` Alexander Lobakin
2022-11-23 22:18         ` Colin Foster
2022-11-23 22:36           ` Vladimir Oltean
2022-11-21 18:59     ` Andy Shevchenko
2022-11-19 23:09 ` [PATCH 15/18] net: dpaa2: " Alexander Lobakin
2022-11-23 21:02   ` Masahiro Yamada
2022-11-19 23:10 ` [PATCH 16/18] net: hns3: " Alexander Lobakin
2022-11-22 12:39   ` Salil Mehta
2022-11-23 22:07     ` Alexander Lobakin
2022-11-24  9:58       ` Salil Mehta
2022-11-19 23:10 ` [PATCH 17/18] net: octeontx2: " Alexander Lobakin
2022-11-23 20:54   ` Masahiro Yamada
2022-11-19 23:10 ` [PATCH 18/18] net: cpsw: " Alexander Lobakin
2022-11-23 20:37   ` Masahiro Yamada
2022-11-20 11:58 ` [PATCH 00/18] treewide: fix object files shared between several modules Mark Brown
2022-11-20 12:26   ` Conor Dooley
2022-11-22 11:28     ` Mark Brown
2022-11-22 21:37   ` Alexander Lobakin
2022-11-23 11:51     ` Mark Brown
2022-11-21 19:50 ` Jakub Kicinski
2022-11-23 21:40   ` Alexander Lobakin
2022-11-23 21:39 ` Masahiro Yamada
2023-02-10 17:31 ` Alexander Lobakin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAK7LNASni5uNFOtR-6VykBHX1Wgg-rOt=q0Lk+H2Vbn7pCsBDQ@mail.gmail.com' \
    --to=masahiroy@kernel.org \
    --cc=alexandre.belloni@bootlin.com \
    --cc=alobakin@pm.me \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=axboe@kernel.dk \
    --cc=bbrezillon@kernel.org \
    --cc=bp@alien8.de \
    --cc=broonie@kernel.org \
    --cc=dchickles@marvell.com \
    --cc=djrscally@gmail.com \
    --cc=grygorii.strashko@ti.com \
    --cc=hdegoede@redhat.com \
    --cc=ioana.ciornei@nxp.com \
    --cc=linux-imx@nxp.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miquel.raynal@bootlin.com \
    --cc=netdev@vger.kernel.org \
    --cc=nicolas@fjasle.eu \
    --cc=salil.mehta@huawei.com \
    --cc=sgoutham@marvell.com \
    --cc=tony.luck@intel.com \
    --cc=vladimir.oltean@nxp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.