Breno Leitao
5b9da39dc5
failcmd: add script file in MAINTAINERS
...
failcmd is one of the main interfaces to fault injection framework, but,
it is not listed under FAULT INJECTION SUPPORT entry in MAINTAINERS. This
is unfortunate, since git-send-email doesn't find emails to send the
patches to, forcing the user to try to guess who maintains it.
Akinobu Mita seems to be actively maintaining it, so, let's add the file
under FAULT INJECTION SUPPORT section.
Link: https://lkml.kernel.org/r/20240730160814.1979876-1-leitao@debian.org
Signed-off-by: Breno Leitao <leitao@debian.org >
Reviewed-by: Akinobu Mita <akinobu.mita@gmail.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:30 -07:00
Jinjie Ruan
59d58189f3
crash: fix crash memory reserve exceed system memory bug
...
On x86_32 Qemu machine with 1GB memory, the cmdline "crashkernel=4G" is ok
as below:
crashkernel reserved: 0x0000000020000000 - 0x0000000120000000 (4096 MB)
It's similar on other architectures, such as ARM32 and RISCV32.
The cause is that the crash_size is parsed and printed with "unsigned long
long" data type which is 8 bytes but allocated used with "phys_addr_t"
which is 4 bytes in memblock_phys_alloc_range().
Fix it by checking if crash_size is greater than system RAM size and
return error if so.
After this patch, there is no above confusing reserve success info.
Link: https://lkml.kernel.org/r/20240729115252.1659112-1-ruanjinjie@huawei.com
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com >
Suggested-by: Mike Rapoport <rppt@kernel.org >
Acked-by: Baoquan He <bhe@redhat.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Dave Young <dyoung@redhat.com >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Vivek Goyal <vgoyal@redhat.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:30 -07:00
Andrii Nakryiko
00bd8ec2f7
fs/procfs: remove build ID-related code duplication in PROCMAP_QUERY
...
A piece of build ID handling code in PROCMAP_QUERY ioctl() was
accidentally duplicated. It wasn't meant to be part of ed5d583a88
("fs/procfs: implement efficient VMA querying API for /proc/<pid>/maps")
commit, which is what introduced duplication.
It has no correctness implications, but we unnecessarily perform the same
work twice, if build ID parsing is requested. Drop the duplication.
Link: https://lkml.kernel.org/r/20240729174044.4008399-1-andrii@kernel.org
Fixes: ed5d583a88 ("fs/procfs: implement efficient VMA querying API for /proc/<pid>/maps")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org >
Reported-by: Jann Horn <jannh@google.com >
Cc: Alexey Dobriyan <adobriyan@gmail.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:30 -07:00
Thorsten Blum
b6e21b7120
lib: checksum: use ARRAY_SIZE() to improve assert_setup_correct()
...
Use ARRAY_SIZE() to simplify the assert_setup_correct() function and
improve its readability.
Link: https://lkml.kernel.org/r/20240726154946.230928-1-thorsten.blum@toblux.com
Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:30 -07:00
Deshan Zhang
9a42bfd255
lib/lru_cache: fix spelling mistake "colision"->"collision"
...
There is a spelling mistake in a literal string and in cariable names.
Fix these.
Link: https://lkml.kernel.org/r/20240725093044.1742842-1-deshan@nfschina.com
Signed-off-by: Deshan Zhang <deshan@nfschina.com >
Cc: Christoph Böhmwalder <christoph.boehmwalder@linbit.com >
Cc: Lars Ellenberg <lars.ellenberg@linbit.com >
Cc: Philipp Reisner <philipp.reisner@linbit.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:29 -07:00
Markus Elfring
fbe617af69
closures: use seq_putc() in debug_show()
...
A single line break should be put into a sequence. Thus use the
corresponding function "seq_putc".
This issue was transformed by using the Coccinelle software.
Link: https://lkml.kernel.org/r/e7faa2c4-9590-44b4-8669-69ef810277b1@web.de
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net >
Cc: Kent Overstreet <kent.overstreet@linux.dev >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:29 -07:00
Markus Elfring
7b76689a02
dyndbg: use seq_putc() in ddebug_proc_show()
...
Single characters should be put into a sequence. Thus use the
corresponding function "seq_putc".
This issue was transformed by using the Coccinelle software.
Link: https://lkml.kernel.org/r/375b5b4b-6295-419e-bae9-da724a7a682d@web.de
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net >
Cc: Jason Baron <jbaron@akamai.com >
Cc: Jim Cromie <jim.cromie@gmail.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:29 -07:00
Kuan-Ying Lee
0833952c07
scripts/gdb: add 'lx-kasan_mem_to_shadow' command
...
This command allows users to quickly translate memory address to the kasan
shadow memory address.
Example output:
(gdb) lx-kasan_mem_to_shadow 0xffff000019acc008
shadow addr: 0xffff600003359801
Link: https://lkml.kernel.org/r/20240723064902.124154-6-kuan-ying.lee@canonical.com
Signed-off-by: Kuan-Ying Lee <kuan-ying.lee@canonical.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:29 -07:00
Kuan-Ying Lee
35249f68b5
scripts/gdb: add 'lx-stack_depot_lookup' command.
...
This command allows users to quickly retrieve a stacktrace using a handle
obtained from a memory coredump.
Example output:
(gdb) lx-stack_depot_lookup 0x00c80300
0xffff8000807965b4 <kmem_cache_alloc_noprof+660>: mov x20, x0
0xffff800081a077d8 <kmem_cache_oob_alloc+76>: mov x1, x0
0xffff800081a079a0 <test_version_show+100>: cbnz w0, 0xffff800081a07968 <test_version_show+44>
0xffff800082f4a3fc <kobj_attr_show+60>: ldr x19, [sp, #16 ]
0xffff800080a0fb34 <sysfs_kf_seq_show+460>: ldp x3, x4, [sp, #96 ]
0xffff800080a0a550 <kernfs_seq_show+296>: ldp x19, x20, [sp, #16 ]
0xffff8000808e7b40 <seq_read_iter+836>: mov w5, w0
0xffff800080a0b8ac <kernfs_fop_read_iter+804>: mov x23, x0
0xffff800080914a48 <copy_splice_read+972>: mov x6, x0
0xffff8000809151c4 <do_splice_read+348>: ldr x21, [sp, #32 ]
Link: https://lkml.kernel.org/r/20240723064902.124154-5-kuan-ying.lee@canonical.com
Signed-off-by: Kuan-Ying Lee <kuan-ying.lee@canonical.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:28 -07:00
Kuan-Ying Lee
4b183f6139
scripts/gdb: fix lx-mounts command error
...
(gdb) lx-mounts
mount super_block devname pathname fstype options
Python Exception <class 'gdb.error'>: There is no member named list.
Error occurred in Python: There is no member named list.
We encounter the above issue after commit 2eea9ce431 ("mounts: keep
list of mounts in an rbtree"). The commit move a mount from list into
rbtree.
So we can instead use rbtree to iterate all mounts information.
Link: https://lkml.kernel.org/r/20240723064902.124154-4-kuan-ying.lee@canonical.com
Fixes: 2eea9ce431 ("mounts: keep list of mounts in an rbtree")
Signed-off-by: Kuan-Ying Lee <kuan-ying.lee@canonical.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: <stable@vger.kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:28 -07:00
Kuan-Ying Lee
0c77e103c4
scripts/gdb: add iteration function for rbtree
...
Add inorder iteration function for rbtree usage.
This is a preparation patch for the next patch to fix the gdb mounts
issue.
Link: https://lkml.kernel.org/r/20240723064902.124154-3-kuan-ying.lee@canonical.com
Fixes: 2eea9ce431 ("mounts: keep list of mounts in an rbtree")
Signed-off-by: Kuan-Ying Lee <kuan-ying.lee@canonical.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: <stable@vger.kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:28 -07:00
Kuan-Ying Lee
a633a4b800
scripts/gdb: fix timerlist parsing issue
...
Patch series "Fix some GDB command error and add some GDB commands", v3.
Fix some GDB command errors and add some useful GDB commands.
This patch (of 5):
Commit 7988e5ae2b ("tick: Split nohz and highres features from
nohz_mode") and commit 7988e5ae2b ("tick: Split nohz and highres
features from nohz_mode") move 'tick_stopped' and 'nohz_mode' to flags
field which will break the gdb lx-mounts command:
(gdb) lx-timerlist
Python Exception <class 'gdb.error'>: There is no member named nohz_mode.
Error occurred in Python: There is no member named nohz_mode.
(gdb) lx-timerlist
Python Exception <class 'gdb.error'>: There is no member named tick_stopped.
Error occurred in Python: There is no member named tick_stopped.
We move 'tick_stopped' and 'nohz_mode' to flags field instead.
Link: https://lkml.kernel.org/r/20240723064902.124154-1-kuan-ying.lee@canonical.com
Link: https://lkml.kernel.org/r/20240723064902.124154-2-kuan-ying.lee@canonical.com
Fixes: a478ffb2ae ("tick: Move individual bit features to debuggable mask accesses")
Fixes: 7988e5ae2b ("tick: Split nohz and highres features from nohz_mode")
Signed-off-by: Kuan-Ying Lee <kuan-ying.lee@canonical.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: <stable@vger.kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:28 -07:00
Julian Sun
d1c7848b58
scripts: add macro_checker script to check unused parameters in macros
...
Recently, I saw a patch[1] on the ext4 mailing list regarding
the correction of a macro definition error. Jan mentioned
that "The bug in the macro is a really nasty trap...".
Because existing compilers are unable to detect
unused parameters in macro definitions. This inspired me
to write a script to check for unused parameters in
macro definitions and to run it.
Surprisingly, the script uncovered numerous issues across
various subsystems, including filesystems, drivers, and sound etc.
Some of these issues involved parameters that were accepted
but never used, for example:
#define XFS_DAENTER_DBS(mp,w) \
(XFS_DA_NODE_MAXDEPTH + (((w) == XFS_DATA_FORK) ? 2 : 0))
where mp was unused.
While others are actual bugs.
For example:
#define HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(x) \
(ab->hw_params.regs->hal_seq_wcss_umac_ce0_src_reg)
#define HAL_SEQ_WCSS_UMAC_CE0_DST_REG(x) \
(ab->hw_params.regs->hal_seq_wcss_umac_ce0_dst_reg)
#define HAL_SEQ_WCSS_UMAC_CE1_SRC_REG(x) \
(ab->hw_params.regs->hal_seq_wcss_umac_ce1_src_reg)
#define HAL_SEQ_WCSS_UMAC_CE1_DST_REG(x) \
(ab->hw_params.regs->hal_seq_wcss_umac_ce1_dst_reg)
where x was entirely unused, and instead, a local variable ab was used.
I have submitted patches[2-5] to fix some of these issues,
but due to the large number, many still remain unaddressed.
I believe that the kernel and matainers would benefit from
this script to check for unused parameters in macro definitions.
It should be noted that it may cause some false positives
in conditional compilation scenarios, such as
#ifdef DEBUG
static int debug(arg) {};
#else
#define debug(arg)
#endif
So the caller needs to manually verify whether it is a true
issue. But this should be fine, because Maintainers should only
need to review their own subsystems, which typically results
in only a few reports.
[1]: https://patchwork.ozlabs.org/project/linux-ext4/patch/1717652596-58760-1-git-send-email-carrionbent@linux.alibaba.com/
[2]: https://lore.kernel.org/linux-xfs/20240721112701.212342-1-sunjunchao2870@gmail.com/
[3]: https://lore.kernel.org/linux-bcachefs/20240721123943.246705-1-sunjunchao2870@gmail.com/
[4]: https://sourceforge.net/p/linux-f2fs/mailman/message/58797811/
[5]: https://sourceforge.net/p/linux-f2fs/mailman/message/58797812/
[sunjunchao2870@gmail.com: reduce false positives]
Link: https://lkml.kernel.org/r/20240726031310.254742-1-sunjunchao2870@gmail.com
Link: https://lkml.kernel.org/r/20240723091154.52458-1-sunjunchao2870@gmail.com
Signed-off-by: Julian Sun <sunjunchao2870@gmail.com >
Cc: Al Viro <viro@zeniv.linux.org.uk >
Cc: Christian Brauner <brauner@kernel.org >
Cc: Darrick J. Wong <djwong@kernel.org >
Cc: Jan Kara <jack@suse.cz >
Cc: Junchao Sun <sunjunchao2870@gmail.com >
Cc: Kalle Valo <kvalo@kernel.org >
Cc: Masahiro Yamada <masahiroy@kernel.org >
Cc: Miguel Ojeda <ojeda@kernel.org >
Cc: Nicolas Schier <n.schier@avm.de >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:28 -07:00
Lasse Collin
c6f371bab2
xz: remove XZ_EXTERN and extern from functions
...
XZ_EXTERN was used to make internal functions static in the preboot code.
However, in other decompressors this hasn't been done. On x86-64, this
makes no difference to the kernel image size.
Omit XZ_EXTERN and let some of the internal functions be extern in the
preboot code. Omitting XZ_EXTERN from include/linux/xz.h fixes warnings
in "make htmldocs" and makes the intradocument links to xz_dec functions
work in Documentation/staging/xz.rst. The alternative would have been to
add "XZ_EXTERN" to c_id_attributes in Documentation/conf.py but omitting
XZ_EXTERN seemed cleaner.
Link: https://lore.kernel.org/lkml/20240723205437.3c0664b0@kaneli/
Link: https://lkml.kernel.org/r/20240724110544.16430-1-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Tested-by: Michael Ellerman <mpe@ellerman.id.au > (powerpc)
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Sam James <sam@gentoo.org >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Simon Glass <sjg@chromium.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Will Deacon <will@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:27 -07:00
Lasse Collin
ab4ce9831a
riscv: boot: add Image.xz support
...
The Image.* targets existed for other compressors already. Bootloader
support is needed for decompression.
This is for CONFIG_EFI_ZBOOT=n. With CONFIG_EFI_ZBOOT=y, XZ was already
available.
Comparision with Linux 6.10 RV64GC tinyconfig (in KiB):
1027 Image
594 Image.gz
541 Image.zst
510 Image.lzma
474 Image.xz
Link: https://lkml.kernel.org/r/20240721133633.47721-17-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Reviewed-by: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Sam James <sam@gentoo.org >
Cc: Simon Glass <sjg@chromium.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Will Deacon <will@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:27 -07:00
Lasse Collin
181e71f662
arm64: boot: add Image.xz support
...
The Image.* targets existed for other compressors already. Bootloader
support is needed for decompression.
This is for CONFIG_EFI_ZBOOT=n. With CONFIG_EFI_ZBOOT=y, XZ was already
available.
Link: https://lkml.kernel.org/r/20240721133633.47721-16-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Cc: Simon Glass <sjg@chromium.org >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Will Deacon <will@kernel.org >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Sam James <sam@gentoo.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:27 -07:00
Lasse Collin
7472ff8ada
xz: adjust arch-specific options for better kernel compression
...
Use LZMA2 options that match the arch-specific alignment of instructions.
This change reduces compressed kernel size 0-2 % depending on the arch.
On 1-byte-aligned x86 it makes no difference and on 4-byte-aligned archs
it helps the most.
Use the ARM-Thumb filter for ARM-Thumb2 kernels. This reduces compressed
kernel size about 5 %.[1] Previously such kernels were compressed using
the ARM filter which didn't do anything useful with ARM-Thumb2 code.
Add BCJ filter support for ARM64 and RISC-V. Compared to unfiltered XZ or
plain LZMA, the compressed kernel size is reduced about 5 % on ARM64 and 7
% on RISC-V. A new enough version of the xz tool is required: 5.4.0 for
ARM64 and 5.6.0 for RISC-V. With an old xz version, a message is printed
to standard error and the kernel is compressed without the filter.
Update lib/decompress_unxz.c to match the changes to xz_wrap.sh.
Update the CONFIG_KERNEL_XZ help text in init/Kconfig:
- Add the RISC-V and ARM64 filters.
- Clarify that the PowerPC filter is for big endian only.
- Omit IA-64.
Link: https://lore.kernel.org/lkml/1637379771-39449-1-git-send-email-zhongjubin@huawei.com/ [1]
Link: https://lkml.kernel.org/r/20240721133633.47721-15-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Reviewed-by: Sam James <sam@gentoo.org >
Cc: Simon Glass <sjg@chromium.org >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Will Deacon <will@kernel.org >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:27 -07:00
Lasse Collin
8653c90992
xz: use 128 MiB dictionary and force single-threaded mode
...
This only affects kernel image compression, not any other xz usage.
Desktop kernels on x86-64 are already around 60 MiB. Using a dictionary
larger than 32 MiB should have no downsides nowadays as anyone building
the kernel should have plenty of RAM. 128 MiB dictionary needs 1346 MiB
of RAM with xz versions 5.0.x - 5.6.x in single-threaded mode. On archs
that use xz_wrap.sh, kernel decompression is done in single-call mode so a
larger dictionary doesn't affect boot-time memory requirements.
xz >= 5.6.0 uses multithreaded mode by default which compresses slightly
worse than single-threaded mode. Kernel compression rarely used more than
one thread anyway because with 32 MiB dictionary size the default block
size was 96 MiB in multithreaded mode. So only a single thread was used
anyway unless the kernel was over 96 MiB.
Comparison to CONFIG_KERNEL_LZMA: It uses "lzma -9" which mapped to 32 MiB
dictionary in LZMA Utils 4.32.7 (the final release in 2008). Nowadays the
lzma tool on most systems is from XZ Utils where -9 maps to 64 MiB
dictionary. So using a 32 MiB dictionary with CONFIG_KERNEL_XZ may have
compressed big kernels slightly worse than the old LZMA option.
Comparison to CONFIG_KERNEL_ZSTD: zstd uses 128 MiB dictionary.
Link: https://lkml.kernel.org/r/20240721133633.47721-14-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Reviewed-by: Sam James <sam@gentoo.org >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Simon Glass <sjg@chromium.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Will Deacon <will@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:26 -07:00
Lasse Collin
93d09773d1
xz: add RISC-V BCJ filter
...
A later commit updates lib/decompress_unxz.c to enable this filter for
kernel decompression. lib/decompress_unxz.c is already used if
CONFIG_EFI_ZBOOT=y && CONFIG_KERNEL_XZ=y.
This filter can be used by Squashfs without modifications to the Squashfs
kernel code (only needs support in userspace Squashfs-tools).
Link: https://lkml.kernel.org/r/20240721133633.47721-13-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Reviewed-by: Sam James <sam@gentoo.org >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Simon Glass <sjg@chromium.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Will Deacon <will@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:26 -07:00
Lasse Collin
4b62813f5e
xz: Add ARM64 BCJ filter
...
Also omit a duplicated check for XZ_DEC_ARM in xz_private.h.
A later commit updates lib/decompress_unxz.c to enable this filter for
kernel decompression. lib/decompress_unxz.c is already used if
CONFIG_EFI_ZBOOT=y && CONFIG_KERNEL_XZ=y.
This filter can be used by Squashfs without modifications to the Squashfs
kernel code (only needs support in userspace Squashfs-tools).
Link: https://lkml.kernel.org/r/20240721133633.47721-12-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Reviewed-by: Sam James <sam@gentoo.org >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Simon Glass <sjg@chromium.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Will Deacon <will@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:26 -07:00
Lasse Collin
bdfc041171
xz: optimize for-loop conditions in the BCJ decoders
...
Compilers cannot optimize the addition "i + 4" away since theoretically it
could overflow.
Link: https://lkml.kernel.org/r/20240721133633.47721-11-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Reviewed-by: Sam James <sam@gentoo.org >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Simon Glass <sjg@chromium.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Will Deacon <will@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:26 -07:00
Lasse Collin
2ee96abef2
xz: cleanup CRC32 edits from 2018
...
In 2018, a dependency on <linux/crc32poly.h> was added to avoid
duplicating the same constant in multiple files. Two months later it was
found to be a bad idea and the definition of CRC32_POLY_LE macro was moved
into xz_private.h to avoid including <linux/crc32poly.h>.
xz_private.h is a wrong place for it too. Revert back to the upstream
version which has the poly in xz_crc32_init() in xz_crc32.c.
Link: https://lkml.kernel.org/r/20240721133633.47721-10-lasse.collin@tukaani.org
Fixes: faa16bc404 ("lib: Use existing define with polynomial")
Fixes: 242cdad873 ("lib/xz: Put CRC32_POLY_LE in xz_private.h")
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Reviewed-by: Sam James <sam@gentoo.org >
Tested-by: Michael Ellerman <mpe@ellerman.id.au > (powerpc)
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Simon Glass <sjg@chromium.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Will Deacon <will@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:25 -07:00
Lasse Collin
6416724679
xz: Documentation/staging/xz.rst: Revise thoroughly
...
Add SPDX license identifier.
Omit xz_dec_test info. That isn't relevant to developers of non-XZ code.
Revise the docs about xzkern and add xzkern_with_size. The latter was
added to scripts/Makefile.lib in the commit 7ce7e984ab ("kbuild: rename
cmd_{bzip2,lzma,lzo,lz4,xzkern,zstd22}").
Omit contact info as MAINTAINERS has it.
Omit other info that is outdated or not relevant in the kernel context.
Include the xz_dec kernel-doc from include/linux/xz.h.
Link: https://lkml.kernel.org/r/20240721133633.47721-8-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Reviewed-by: Sam James <sam@gentoo.org >
Reviewed-by: Randy Dunlap <rdunlap@infradead.org >
Tested-by: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Simon Glass <sjg@chromium.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Will Deacon <will@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:25 -07:00
Lasse Collin
0f2c599634
xz: improve the MicroLZMA kernel-doc in xz.h
...
Move the description of the format into a "DOC:" comment. Emphasize that
MicroLZMA functions aren't usually needed.
Link: https://lkml.kernel.org/r/20240721133633.47721-7-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Reviewed-by: Sam James <sam@gentoo.org >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Simon Glass <sjg@chromium.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Will Deacon <will@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:25 -07:00
Lasse Collin
ad8c67b870
xz: fix kernel-doc formatting errors in xz.h
...
The opaque structs xz_dec and xz_dec_microlzma are declared in xz.h but
their definitions are in xz_dec_lzma2.c without kernel-doc comments. Use
regular comments for these structs in xz.h to avoid errors when building
the docs.
Add a few missing colons.
Link: https://lkml.kernel.org/r/20240721133633.47721-6-lasse.collin@tukaani.org
Signed-off-by: Lasse Collin <lasse.collin@tukaani.org >
Reviewed-by: Sam James <sam@gentoo.org >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Herbert Xu <herbert@gondor.apana.org.au >
Cc: Joel Stanley <joel@jms.id.au >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Jubin Zhong <zhongjubin@huawei.com >
Cc: Jules Maselbas <jmaselbas@zdiv.net >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Michael Ellerman <mpe@ellerman.id.au >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <paul.walmsley@sifive.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Rui Li <me@lirui.org >
Cc: Simon Glass <sjg@chromium.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Will Deacon <will@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2024-09-01 20:43:25 -07:00