-
-
Notifications
You must be signed in to change notification settings - Fork 52
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Linux 6.12 changed compression parameters and it hits memory limit hardcoded in libxenguest. Increase the limit.
- Loading branch information
Showing
2 changed files
with
64 additions
and
0 deletions.
There are no files selected for viewing
62 changes: 62 additions & 0 deletions
62
0630-tools-xg-increase-LZMA_BLOCK_SIZE-for-uncompressing-.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
From b3262b7069a51e460a9f044eec4fc5e2e5758db2 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= | ||
<[email protected]> | ||
Date: Tue, 8 Oct 2024 23:24:31 +0200 | ||
Subject: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the | ||
kernel | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
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 <[email protected]> | ||
--- | ||
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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters