Re: [PATCH v3] erofs: cap LZMA stream pool size
Geert Uytterhoeven <[email protected]>
| Newsgroups | org.kernel.vger.linux-kbuild,org.kernel.vger.linux-kernel,org.ozlabs.lists.linux-erofs |
|---|---|
| Message-ID | <CAMuHMdXpJY3gqx98z92=P8NxV2_-_N+5OVqNvMLDMKq9bhuY+Q@mail.gmail.com> |
Hi Günter, On Fri, 14 Aug 2026 at 20:44, Guenter Roeck <[email protected]> wrote: > On 8/14/26 11:26, Gao Xiang wrote: > > On Wed, Aug 12, 2026 at 07:25:50AM -0700, Guenter Roeck wrote: > >>>> Thank you, that seems to work (despite still seeing the warning on m68k, > >>>> as NR_CPUS does not exist). > >>>> > >>>> $ make ARCH=m68k allmodconfig > >>>> fs/erofs/Kconfig:137:warning: range is invalid > >>>> > >>>> Warning... > >>> > >>> Yes, other arches shouldn't have the warning because I think other > >>> arches (including microblaze) defines NR_CPUS in Kconfig, except m68k. > >> > >> That is not entirely true. openrisc only has it if SMP=y. But it still > >> does not generate the warning for some reason. > > > > I looked into the documentation a bit > > (https://docs.kernel.org/kbuild/kconfig-language.html), especially the > > following parts: > > > > - type definition: “bool”/”tristate”/”string”/”hex”/”int” ... > > - input prompt: “prompt” <prompt> [“if” <expr>] ... > > and "If a prompt is not present, the config option is > > a non-visible symbol, ..." > > > > - dependencies: “depends on” <expr> [“if” <expr>] ... > > - Menu dependencies .. > > > > and I think that is true, taking openrisc for example: > > > > config NR_CPUS > > int "Maximum number of CPUs (2-32)" > > range 2 32 > > depends on SMP > > default "2" > > > > which can be transformed into > > > > config NR_CPUS > > int > > prompt "Maximum number of CPUs (2-32)" > > range 2 32 > > depends on SMP > > default "2" > > > > which can be then transformed into > > > > config NR_CPUS > > int > > prompt "Maximum number of CPUs (2-32)" if SMP > > range 2 32 if SMP > > default "2" if SMP > > > > so if `SMP=n`, it's equivalent to > > > > config NR_CPUS > > int > > > > so NR_CPUS symbol is still there I think (and its value is 0.) > > > $ grep NR_CPUS .config > CONFIG_FORCE_NR_CPUS=y > $ grep EROFS .config > CONFIG_EROFS_FS=y > # CONFIG_EROFS_FS_DEBUG is not set > CONFIG_EROFS_FS_XATTR=y > CONFIG_EROFS_FS_POSIX_ACL=y > CONFIG_EROFS_FS_SECURITY=y > CONFIG_EROFS_FS_BACKED_BY_FILE=y > CONFIG_EROFS_FS_ZIP=y > CONFIG_EROFS_FS_ZIP_LZMA=y > CONFIG_EROFS_FS_ZIP_LZMA_DEFAULT_MAX_STREAMS=0 > # CONFIG_EROFS_FS_ZIP_DEFLATE is not set > # CONFIG_EROFS_FS_ZIP_ZSTD is not set > # CONFIG_EROFS_FS_ZIP_ACCEL is not set > # CONFIG_EROFS_FS_PCPU_KTHREAD is not set > # CONFIG_EROFS_FS_PAGE_CACHE_SHARE is not set > > The symbol may be there internally, but it does not show up in .config. config EROFS_FS_ZIP_LZMA_DEFAULT_MAX_STREAMS ... range 1 NR_CPUS Apparently the default value picked by "automatic" configs like allmodconfig and defconfig is the last item from the range. If NR_CPUS exists internally (e.g. openrisc and arm), you end up with the "undefined value", aka zero: CONFIG_EROFS_FS_ZIP_LZMA_DEFAULT_MAX_STREAMS=0 As NR_CPUS did not exist on m68k at all, you ended up with the NR_CPUS literal: CONFIG_EROFS_FS_ZIP_LZMA_DEFAULT_MAX_STREAMS=NR_CPUS Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds