diff --git a/0676-tools-xg-increase-LZMA_BLOCK_SIZE-for-uncompressing-.patch b/0676-tools-xg-increase-LZMA_BLOCK_SIZE-for-uncompressing-.patch new file mode 100644 index 0000000..18aa820 --- /dev/null +++ b/0676-tools-xg-increase-LZMA_BLOCK_SIZE-for-uncompressing-.patch @@ -0,0 +1,62 @@ +From b3262b7069a51e460a9f044eec4fc5e2e5758db2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= + +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 +--- + 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 + diff --git a/xen.spec.in b/xen.spec.in index fdf7493..f0533dd 100644 --- a/xen.spec.in +++ b/xen.spec.in @@ -173,6 +173,8 @@ Patch0673: 0673-x86-msr-Allow-hardware-domain-to-read-C-state-reside.patch Patch0674: 0674-x86-mwait-idle-Use-ACPI-for-CPUs-without-hardcoded-C.patch Patch0675: 0675-libxl_pci-Pass-power_mgmt-via-QMP.patch +Patch0676: 0676-tools-xg-increase-LZMA_BLOCK_SIZE-for-uncompressing-.patch + # Qubes specific patches Patch1000: 1000-Do-not-access-network-during-the-build.patch Patch1001: 1001-hotplug-store-block-params-for-cleanup.patch