Kbuild fixes for v6.6 (2nd)
- Fix the module compression with xz so the in-kernel decompressor works - Document a kconfig idiom to express an optional dependency between modules - Make modpost, when W=1 is given, detect broken drivers that reference .exit.* sections - Remove unused code -----BEGIN PGP SIGNATURE----- iQJJBAABCgAzFiEEbmPs18K1szRHjPqEPYsBB53g2wYFAmUZoe8VHG1hc2FoaXJv eUBrZXJuZWwub3JnAAoJED2LAQed4NsG+Z4P/jV+sfm41cyiIPRUqIscr+w7nNB2 +UWwd4SSHlUxmilMDEkgQkRde1w/L+Wl984/28QU0IShHiPDUXzzEX5J4RGzD5ee /VwEpueAckur764pRpvMu3GDZD6KiLN2zdvkO0EhVwqTQGKOwHredUfm8Pi91F26 McT9Xp0ypaEBAzOIvueeXoCA/ssiKqCEDk/m45xJM303ltPtqvlbTJn0xrF09f2G LygojFAhpxxp+yVohiJ7sJEoeBvX9J2jXjpJteqp87VZ6oSuhDZOtuiK3Vijux/W NhABXkzMdbUKjZauBaV/HSUsIAr5ptpyZqLiLk7Cp33pmZ6ZfGJE58c2a9fzkTUE PSUtxVp3lc9n9sYQp/E0Y3R097KWE3rFswrXj24vXqkinWJvCAXIFiM4CBBgCSXc OhwapUR2tNe4Itq4Aeckjos08qfj+x3OCLMKjOvLgUHoiITeJ3nhUPTg89UDxqSc xA/0BakUkPBjZrZ2R6P/l9N6On74OvJGL0lcUfZ+jBe7cWsOepFEURyv9YdnHuVn 2HRxWC+7//RcHEMht7MIeeYL2I8j6ilKR2n2srViJU6YKUl4eZowQA96e94uc4IP AXRnAxYC/wkElnvpuKC6nY680hshx/fjHvhGLtDxXIEoI8glGd1RTXAc4jVG7JI7 WIxJBTsa58m6ybrc =RJdX -----END PGP SIGNATURE----- Merge tag 'kbuild-fixes-v6.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild Pull Kbuild fixes from Masahiro Yamada: - Fix the module compression with xz so the in-kernel decompressor works - Document a kconfig idiom to express an optional dependency between modules - Make modpost, when W=1 is given, detect broken drivers that reference .exit.* sections - Remove unused code * tag 'kbuild-fixes-v6.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: kbuild: remove stale code for 'source' symlink in packaging scripts modpost: Don't let "driver"s reference .exit.* vmlinux.lds.h: remove unused CPU_KEEP and CPU_DISCARD macros modpost: add missing else to the "of" check Documentation: kbuild: explain handling optional dependencies kbuild: Use CRC32 and a 1MiB dictionary for XZ compressed modules
This commit is contained in:
commit
e81a2dabc3
@ -573,6 +573,32 @@ above, leading to:
|
|||||||
bool "Support for foo hardware"
|
bool "Support for foo hardware"
|
||||||
depends on ARCH_FOO_VENDOR || COMPILE_TEST
|
depends on ARCH_FOO_VENDOR || COMPILE_TEST
|
||||||
|
|
||||||
|
Optional dependencies
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Some drivers are able to optionally use a feature from another module
|
||||||
|
or build cleanly with that module disabled, but cause a link failure
|
||||||
|
when trying to use that loadable module from a built-in driver.
|
||||||
|
|
||||||
|
The most common way to express this optional dependency in Kconfig logic
|
||||||
|
uses the slightly counterintuitive::
|
||||||
|
|
||||||
|
config FOO
|
||||||
|
tristate "Support for foo hardware"
|
||||||
|
depends on BAR || !BAR
|
||||||
|
|
||||||
|
This means that there is either a dependency on BAR that disallows
|
||||||
|
the combination of FOO=y with BAR=m, or BAR is completely disabled.
|
||||||
|
For a more formalized approach if there are multiple drivers that have
|
||||||
|
the same dependency, a helper symbol can be used, like::
|
||||||
|
|
||||||
|
config FOO
|
||||||
|
tristate "Support for foo hardware"
|
||||||
|
depends on BAR_OPTIONAL
|
||||||
|
|
||||||
|
config BAR_OPTIONAL
|
||||||
|
def_tristate BAR || !BAR
|
||||||
|
|
||||||
Kconfig recursive dependency limitations
|
Kconfig recursive dependency limitations
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@ -138,13 +138,6 @@
|
|||||||
* are handled as text/data or they can be discarded (which
|
* are handled as text/data or they can be discarded (which
|
||||||
* often happens at runtime)
|
* often happens at runtime)
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
|
||||||
#define CPU_KEEP(sec) *(.cpu##sec)
|
|
||||||
#define CPU_DISCARD(sec)
|
|
||||||
#else
|
|
||||||
#define CPU_KEEP(sec)
|
|
||||||
#define CPU_DISCARD(sec) *(.cpu##sec)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_MEMORY_HOTPLUG)
|
#if defined(CONFIG_MEMORY_HOTPLUG)
|
||||||
#define MEM_KEEP(sec) *(.mem##sec)
|
#define MEM_KEEP(sec) *(.mem##sec)
|
||||||
|
@ -144,7 +144,7 @@ endif
|
|||||||
quiet_cmd_gzip = GZIP $@
|
quiet_cmd_gzip = GZIP $@
|
||||||
cmd_gzip = $(KGZIP) -n -f $<
|
cmd_gzip = $(KGZIP) -n -f $<
|
||||||
quiet_cmd_xz = XZ $@
|
quiet_cmd_xz = XZ $@
|
||||||
cmd_xz = $(XZ) --lzma2=dict=2MiB -f $<
|
cmd_xz = $(XZ) --check=crc32 --lzma2=dict=1MiB -f $<
|
||||||
quiet_cmd_zstd = ZSTD $@
|
quiet_cmd_zstd = ZSTD $@
|
||||||
cmd_zstd = $(ZSTD) -T0 --rm -f -q $<
|
cmd_zstd = $(ZSTD) -T0 --rm -f -q $<
|
||||||
|
|
||||||
|
@ -1604,7 +1604,7 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
|
|||||||
/* First handle the "special" cases */
|
/* First handle the "special" cases */
|
||||||
if (sym_is(name, namelen, "usb"))
|
if (sym_is(name, namelen, "usb"))
|
||||||
do_usb_table(symval, sym->st_size, mod);
|
do_usb_table(symval, sym->st_size, mod);
|
||||||
if (sym_is(name, namelen, "of"))
|
else if (sym_is(name, namelen, "of"))
|
||||||
do_of_table(symval, sym->st_size, mod);
|
do_of_table(symval, sym->st_size, mod);
|
||||||
else if (sym_is(name, namelen, "pnp"))
|
else if (sym_is(name, namelen, "pnp"))
|
||||||
do_pnp_device_entry(symval, sym->st_size, mod);
|
do_pnp_device_entry(symval, sym->st_size, mod);
|
||||||
|
@ -1015,9 +1015,20 @@ static int secref_whitelist(const char *fromsec, const char *fromsym,
|
|||||||
"*_console")))
|
"*_console")))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* symbols in data sections that may refer to meminit/exit sections */
|
/* symbols in data sections that may refer to meminit sections */
|
||||||
if (match(fromsec, PATTERNS(DATA_SECTIONS)) &&
|
if (match(fromsec, PATTERNS(DATA_SECTIONS)) &&
|
||||||
match(tosec, PATTERNS(ALL_XXXINIT_SECTIONS, ALL_EXIT_SECTIONS)) &&
|
match(tosec, PATTERNS(ALL_XXXINIT_SECTIONS, ALL_XXXEXIT_SECTIONS)) &&
|
||||||
|
match(fromsym, PATTERNS("*driver")))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* symbols in data sections must not refer to .exit.*, but there are
|
||||||
|
* quite a few offenders, so hide these unless for W=1 builds until
|
||||||
|
* these are fixed.
|
||||||
|
*/
|
||||||
|
if (!extra_warn &&
|
||||||
|
match(fromsec, PATTERNS(DATA_SECTIONS)) &&
|
||||||
|
match(tosec, PATTERNS(EXIT_SECTIONS)) &&
|
||||||
match(fromsym, PATTERNS("*driver")))
|
match(fromsym, PATTERNS("*driver")))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -64,7 +64,6 @@ install_linux_image () {
|
|||||||
|
|
||||||
${MAKE} -f ${srctree}/Makefile INSTALL_MOD_PATH="${pdir}" modules_install
|
${MAKE} -f ${srctree}/Makefile INSTALL_MOD_PATH="${pdir}" modules_install
|
||||||
rm -f "${pdir}/lib/modules/${KERNELRELEASE}/build"
|
rm -f "${pdir}/lib/modules/${KERNELRELEASE}/build"
|
||||||
rm -f "${pdir}/lib/modules/${KERNELRELEASE}/source"
|
|
||||||
|
|
||||||
# Install the kernel
|
# Install the kernel
|
||||||
if [ "${ARCH}" = um ] ; then
|
if [ "${ARCH}" = um ] ; then
|
||||||
|
@ -68,7 +68,6 @@ cp $(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEA
|
|||||||
cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE}
|
cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE}
|
||||||
cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
|
cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
|
||||||
ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build
|
ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build
|
||||||
ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/source
|
|
||||||
%if %{with_devel}
|
%if %{with_devel}
|
||||||
%{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
|
%{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
|
||||||
%endif
|
%endif
|
||||||
@ -101,7 +100,6 @@ fi
|
|||||||
%defattr (-, root, root)
|
%defattr (-, root, root)
|
||||||
/lib/modules/%{KERNELRELEASE}
|
/lib/modules/%{KERNELRELEASE}
|
||||||
%exclude /lib/modules/%{KERNELRELEASE}/build
|
%exclude /lib/modules/%{KERNELRELEASE}/build
|
||||||
%exclude /lib/modules/%{KERNELRELEASE}/source
|
|
||||||
/boot/*
|
/boot/*
|
||||||
|
|
||||||
%files headers
|
%files headers
|
||||||
@ -113,5 +111,4 @@ fi
|
|||||||
%defattr (-, root, root)
|
%defattr (-, root, root)
|
||||||
/usr/src/kernels/%{KERNELRELEASE}
|
/usr/src/kernels/%{KERNELRELEASE}
|
||||||
/lib/modules/%{KERNELRELEASE}/build
|
/lib/modules/%{KERNELRELEASE}/build
|
||||||
/lib/modules/%{KERNELRELEASE}/source
|
|
||||||
%endif
|
%endif
|
||||||
|
Loading…
Reference in New Issue
Block a user