All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the kernel
@ 2024-10-08 21:32 Marek Marczykowski-Górecki
  2024-10-09  7:19 ` Jan Beulich
  2024-12-18 17:58 ` Roger Pau Monné
  0 siblings, 2 replies; 14+ messages in thread
From: Marek Marczykowski-Górecki @ 2024-10-08 21:32 UTC (permalink / raw)
  To: xen-devel; +Cc: Marek Marczykowski-Górecki, Anthony PERARD, Juergen Gross

Linux 6.12-rc2 fails to decompress with the current 128MiB, contrary to
the code comment. It results in a failure like this:

    domainbuilder: detail: xc_dom_kernel_file: filename="/var/lib/qubes/vm-kernels/6.12-rc2-1.1.fc37/vmlinuz"
    domainbuilder: detail: xc_dom_malloc_filemap    : 12104 kB
    domainbuilder: detail: xc_dom_module_file: filename="/var/lib/qubes/vm-kernels/6.12-rc2-1.1.fc37/initramfs"
    domainbuilder: detail: xc_dom_malloc_filemap    : 7711 kB
    domainbuilder: detail: xc_dom_boot_xen_init: ver 4.19, caps xen-3.0-x86_64 hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
    domainbuilder: detail: xc_dom_parse_image: called
    domainbuilder: detail: xc_dom_find_loader: trying multiboot-binary loader ...
    domainbuilder: detail: loader probe failed
    domainbuilder: detail: xc_dom_find_loader: trying HVM-generic loader ...
    domainbuilder: detail: loader probe failed
    domainbuilder: detail: xc_dom_find_loader: trying Linux bzImage loader ...
    domainbuilder: detail: _xc_try_lzma_decode: XZ decompression error: Memory usage limit reached
    xc: error: panic: xg_dom_bzimageloader.c:761: xc_dom_probe_bzimage_kernel unable to XZ decompress kernel: Invalid kernel
    domainbuilder: detail: loader probe failed
    domainbuilder: detail: xc_dom_find_loader: trying ELF-generic loader ...
    domainbuilder: detail: loader probe failed
    xc: error: panic: xg_dom_core.c:689: xc_dom_find_loader: no loader found: Invalid kernel
    libxl: error: libxl_dom.c:566:libxl__build_dom: xc_dom_parse_image failed

The important part: XZ decompression error: Memory usage limit reached

This looks to be related to the following change in Linux:
8653c909922743bceb4800e5cc26087208c9e0e6 ("xz: use 128 MiB dictionary and force single-threaded mode")

Fix this by increasing the block size to 256MiB. And remove the
misleading comment (from lack of better ideas).

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
 tools/libs/guest/xg_dom_bzimageloader.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/tools/libs/guest/xg_dom_bzimageloader.c b/tools/libs/guest/xg_dom_bzimageloader.c
index c6ee6d83e7c6..1fb4e5a1f728 100644
--- a/tools/libs/guest/xg_dom_bzimageloader.c
+++ b/tools/libs/guest/xg_dom_bzimageloader.c
@@ -272,8 +272,7 @@ static int _xc_try_lzma_decode(
     return retval;
 }
 
-/* 128 Mb is the minimum size (half-way) documented to work for all inputs. */
-#define LZMA_BLOCK_SIZE (128*1024*1024)
+#define LZMA_BLOCK_SIZE (256*1024*1024)
 
 static int xc_try_xz_decode(
     struct xc_dom_image *dom, void **blob, size_t *size)
-- 
2.46.0



^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2024-12-19 14:59 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-08 21:32 [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the kernel Marek Marczykowski-Górecki
2024-10-09  7:19 ` Jan Beulich
2024-10-09  9:52   ` Marek Marczykowski-Górecki
2024-10-09 10:19     ` Jan Beulich
2024-10-09 10:26       ` Juergen Gross
2024-10-09 11:08         ` Andrew Cooper
2024-10-09 11:15           ` Jan Beulich
2024-10-09 11:38             ` Jürgen Groß
2024-10-09 13:03               ` Marek Marczykowski-Górecki
2024-12-16  8:35                 ` Roger Pau Monné
2024-12-16 11:35                   ` Marek Marczykowski-Górecki
2024-12-18 17:58 ` Roger Pau Monné
2024-12-18 18:23   ` Andrew Cooper
2024-12-19 14:58   ` Anthony PERARD

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.