From nobody Mon Jul 13 12:48:27 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gzMgY4h0rz6lBSY for ; Mon, 13 Jul 2026 12:48:41 +0000 (UTC) (envelope-from garga.bsd@gmail.com) Received: from mail-yx1-xb132.google.com (mail-yx1-xb132.google.com [IPv6:2607:f8b0:4864:20::b132]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gzMgW45pVz3WsH for ; Mon, 13 Jul 2026 12:48:39 +0000 (UTC) (envelope-from garga.bsd@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20251104 header.b=sJaQNvv9; spf=pass (mx1.freebsd.org: domain of garga.bsd@gmail.com designates 2607:f8b0:4864:20::b132 as permitted sender) smtp.mailfrom=garga.bsd@gmail.com; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=freebsd.org (policy=none) Received: by mail-yx1-xb132.google.com with SMTP id 956f58d0204a3-667b76205f1so2513213d50.1 for ; Mon, 13 Jul 2026 05:48:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783946914; x=1784551714; darn=freebsd.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:sender:from:to:cc:subject:date:message-id:reply-to :content-type; bh=H4xRePXk9tIgAh6B8DvQT7mSEAohmL6QTPgS5htYEgY=; b=sJaQNvv9Wopk1NLVX2U+C5HshyJJdJlPC4ZA3zKeZsFss2ggpXjWAUWI5YsIDyqJ/D WvjG78fGP53D/6RxnEGUHpwA0eQzjqM0udDPb0ZE5IHiEClu2ASuI1Q/dVA0JFPwSIr3 hkBO6wqoJS4/JlPQy7/vJcwpzdmaM6lnefTfDzC6QNnSOXFz/Fkfbjifq8zhRYh09Zc4 uaDXA9CsEHkfQbDdirQYIZnzU0pY0GR72o5O9fbwd4NZXaJyFI0zJCzIgxD1Mu0H9scH oeGnNatKSYJvJGNMjwY9pxf1nJNs3rvqIJb1MWboCScsW6y5vskHRxP4Zw2FrnzXHeSD erwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783946914; x=1784551714; h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:sender:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=H4xRePXk9tIgAh6B8DvQT7mSEAohmL6QTPgS5htYEgY=; b=qwzZGOILhuxMCrFBfXuLpj5U2KDn3S4dgcnJkI6ToAfUq5ZuGXvtuSTlSH6KWsPFCN a1VDI4qi5R8vGoSu1feVpeie+5yELO/qjBM3SrCP7Z90MSDbWSx6kechVl/H/bkVnBvw ur4m8++RGqNTGm07iKtYm3lQadQmJsoZ1DAaqFdnjG1G54vHt6TwtmwbekKtSK1jbiGW orCnyBPv5CiGGy9hOnn7LFLbo/bnBVcIENWFH6iLrSa8UeoiZ9O3JjTA12QeoYJcO4Ls B/QfUxS0qKT3tU+j/lOUdxc/d7hbsJmppOkBZyPZL+nwIfGJenyqSndnOUD0rN27bAaq CnxQ== X-Forwarded-Encrypted: i=1; AHgh+Rqvq8VxsJQoDirJmR5h9Y2YvxwjgqmrSBLmoeQABvjT9B8z1agRby2iGXsIGxWWBpCglLjlvzDMH7n0RuiUDWuds03how==@freebsd.org X-Gm-Message-State: AOJu0Yw02sdD89CyayXJJStHvqP2VRd8SR/Fbj3bB4g60f+s0B0R63vQ d7XQryr46IRrzbS/K3l/iGLKdKxq9T1I9JLDq+957dfwRb3eHodZLmyga5hKqg== X-Gm-Gg: AfdE7cmoQI5/j7vVpkGt7TtWqCq9Wpx9ydt1vCnmsPU5dGo05AT2RHeRj4FrK9I+z// 5Pv71+LA3OLEyf1iy5IvPvVC+6UrLWLcBr86tm6AzKZBHZHbgdCk2m1rL2XcLY3PtqbnM5HpBAT m/MsvhnAx+2zEvvkjz8uXPBkkH2BQpXMUvUfkjZ5CJ+9q/18BXFAFhyXyTbMDXhhBc8mqZjqW6K TygP2rqdTnkZOJ968RfIANjd1Wt35Gpvn9erGPw6vtHJDaUNOyVe1fNwm/Y0unpD6s2NMKLzkOZ xjGSnjZLY1aofyP88vm65HcoExb3WvASBM+kWQAm5mSRNb+2Ffs4Wzp8bgjCnuPD5hXFQopmrIm hQTY9SNsnrdebvNQuS5kNJoVvT2SAKm8IxEVRqkayu2XD0tEeG/xI37MJZktthKmWUk5EkxcVgR a01M6JtnCs2k3AgZ/7ARoscVJX0epm268mNFvHIZN10sZQPSRLxUdtg0zN1xodU64EGPHtvN0OR V0= X-Received: by 2002:a53:cb47:0:b0:667:bca8:a685 with SMTP id 956f58d0204a3-667d7c7de5cmr4328590d50.57.1783946913799; Mon, 13 Jul 2026 05:48:33 -0700 (PDT) Received: from [172.21.4.172] (dynamic-177-53-82-16.telecominternet.net.br. [177.53.82.16]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-667879cada5sm13382321d50.11.2026.07.13.05.48.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 13 Jul 2026 05:48:31 -0700 (PDT) Message-ID: <97a3674b-409d-42d7-973b-692063130ad3@FreeBSD.org> Date: Mon, 13 Jul 2026 09:48:27 -0300 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: dc6c193bb4a6 - main - loader.efi: Add xz decompression To: Warner Losh , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <6a5299d0.26e5e.70437550@gitrepo.freebsd.org> Content-Language: en-US From: Renato Botelho Autocrypt: addr=garga@FreeBSD.org; keydata= xsBNBGStavwBCACjNlp/9+Y+VFe9ieR2h/WWbdvjz4Mb2z/f22bGoaskzCfvVNbo/v3i34I9 H6OdgZkGqheQEAD2jNfRbmPr4z40xDMUpYGLds+1Mvg7G3Hms3j5Ef8KaLSWUNWIfwKdfSVR Qs35ccSJxAdRW5YdI6J3xZgika+3Bc4eJ05YE/nWW+PNTYevt5rqD50N3zybVYIcLoqVPpBi AZE/sf5SLiLACIJb1t/s4x+pi8vgWevxVVT9u8V1f8zYErmHSLSqjxii0B3eRZphX9NCJOv9 +tfFZhnENInhn9gT7H4e2YumUltEy3jacONHJF3CC1pvvWEa6lEyypclMOkHQwNON7DLABEB AAHNLFJlbmF0byBCb3RlbGhvIChGcmVlQlNEKSA8Z2FyZ2FARnJlZUJTRC5vcmc+wsCXBBMB CgBBAhsDBQkFo5qABQsJCAcDBRUKCQgLBRYDAgEAAh4FAheAFiEERL7Dxegbnh7xTiQ5Ob6P xxJcZXoFAmSta78CGQEACgkQOb6PxxJcZXrYlggAgaZmr6c1yIWzN8VksHrHpwt/uxONEP+h ljy3yfrMsgfS5wx5Uzgfih1xYZUFC6jiI63CetqBqJpp3g1klRS1UWYKx2NeXphDMYZEdPm/ a6sXh4bKZbk6IE8Yn0/YiRT57d9DtbvswC7Gn7Igj/MSbhl49TvTGyvuB6juaffVoYZViomx 5zMoee8Ml2o2qj3MrCJ+/K8GU54RlpOGqGRsqdwVdr9XEWub6fF2YFwR46cjmbiU3P5urFHH nkJlBGPIwKxHimTW0lZsdx9aCKRDd/D80/WOEzXmk3k8B9lv/GsvOluHmveLhJG1R1tIJ31I f2q8dfTvqsQXnu8CcWRcgc7ATQRkrWr8AQgA1DufoxScA+CWQbUR6zExIu8wXQKrhuRt4DG2 BgynT7EMUvEBadcbQRZXsBpemNfncc9Axyut/+rWiyKJf9BLQuo/9QYmSRvW1U6+0LJUYmdg kMyBeYaPk+vnssv/u9jLuvV7FVgyE0yk1iaWIKOVDD+XrQCOvGw9uSceBrQyCyo3A/eRM/+p vnDCaywR63PKE+3axk6lfNdGK3TnaWmS30/ZDCZlNsXuqprqR4JdT5wXids5o36dsuJ5EZ20 s5hNMD34s4Yr1Y1R9elH6qBsFCpozs0+jwrArxq+UJJCR6hH5W8ZEwJtRC8tzR8mRE1WywzX BXYj0YhfGztQIxZckQARAQABwsB8BBgBCgAmFiEERL7Dxegbnh7xTiQ5Ob6PxxJcZXoFAmSt avwCGwwFCQWjmoAACgkQOb6PxxJcZXr1vgf/SKXhoZcUU5I7TqcbHg0lJz9tICTupCGHWr/s SQgjh9oEM5j1wqW7FlCGP90Tl9K0g3ow9YdbhU7VK470o6pymX9V9eLHzGgkZO/KMEtGBeK1 u+5ePjCJ/MK5B21KODLSU7WrIL1VN5ceXfQPLYt02LMLtPri+oduHD6RNBeA7US1DUzleq5F 9NHGbvV2U7BdDUezpiO8NaFjFZVB11I5d99FxUM5XGVstI3VhsRKZxjY0KnqJzaQgTFsPGmv AUfZVIN1pXgXiedhPXpr8+Y64jP+pHVwpVmh1zYWL6+q3kqFOUVP6c5iiMeoEXZvgJz7x/AC ek3X5gvu8Hpcv+MZIg== In-Reply-To: <6a5299d0.26e5e.70437550@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spamd-Result: default: False [-3.10 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.996]; FORGED_SENDER(0.30)[garga@FreeBSD.org,gargabsd@gmail.com]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4864::/56:c]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20251104]; DMARC_POLICY_SOFTFAIL(0.10)[freebsd.org : SPF not aligned (relaxed), DKIM not aligned (relaxed),none]; MIME_GOOD(-0.10)[text/plain]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; TAGGED_FROM(0.00)[]; TO_DN_SOME(0.00)[]; ARC_NA(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; FROM_HAS_DN(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::b132:from]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; FROM_NEQ_ENVFROM(0.00)[garga@FreeBSD.org,gargabsd@gmail.com]; RCPT_COUNT_THREE(0.00)[4]; PREVIOUSLY_DELIVERED(0.00)[dev-commits-src-main@freebsd.org]; MID_RHS_MATCH_FROM(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-main@freebsd.org]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_VIA_SMTP_AUTH(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim] X-Rspamd-Queue-Id: 4gzMgW45pVz3WsH X-Spamd-Bar: --- On 11/07/26 16:30, Warner Losh wrote: > The branch main has been updated by imp: > > URL: https://cgit.FreeBSD.org/src/commit/?id=dc6c193bb4a67e2e9ee97d1e3ac3e2950bd16979 > > commit dc6c193bb4a67e2e9ee97d1e3ac3e2950bd16979 > Author: Warner Losh > AuthorDate: 2026-07-11 14:44:40 +0000 > Commit: Warner Losh > CommitDate: 2026-07-11 19:28:47 +0000 > > loader.efi: Add xz decompression > > We can now decompress .xz compressed memory disks, like > FreeBSD-15.1-RELEASE-amd64-disc1.iso.xz > > Sponsored by: Netflix > Differential Revision: https://reviews.freebsd.org/D58073 > --- > stand/defs.mk | 5 ++ > stand/efi/loader/Makefile | 2 +- > stand/efi/loader/decompress.c | 101 ++++++++++++++++++++++++++-- > stand/efi/loader/decompress.h | 2 +- > stand/libsa/Makefile | 7 ++ > sys/contrib/xz-embedded/freebsd/xz_config.h | 11 +-- > 6 files changed, 117 insertions(+), 11 deletions(-) > > diff --git a/stand/defs.mk b/stand/defs.mk > index 05108404c538..e3908678b53a 100644 > --- a/stand/defs.mk > +++ b/stand/defs.mk > @@ -190,6 +190,11 @@ BZIP2_CFLAGS=-I${SRCTOP}/contrib/bzip2 -DBZ_NO_STDIO -DBZ_NO_COMPRESS > # ZSTD client cflags > ZSTD_CFLAGS=-I${SYSDIR}/contrib/zstd/lib > > +# XZ flags > +XZ_DIR=${SRCTOP}/sys/contrib/xz-embedded > +XZ_CFLAGS=-DXZ_USE_CRC64 -I${XZ_DIR}/freebsd -I${XZ_DIR}/linux/include/linux > + > + > # The boot loader build uses dd status=none, where possible, for reproducible > # build output (since performance varies from run to run). Trouble is that > # option was recently (10.3) added to FreeBSD and is non-standard. Only use it > diff --git a/stand/efi/loader/Makefile b/stand/efi/loader/Makefile > index 164b16ff2a59..b29f0b8f8259 100644 > --- a/stand/efi/loader/Makefile > +++ b/stand/efi/loader/Makefile > @@ -47,7 +47,7 @@ HAVE_ZFS= yes > > CFLAGS.bootinfo.c += -I$(SRCTOP)/sys/teken > CFLAGS.bootinfo.c += -I${SRCTOP}/contrib/pnglite > -CFLAGS.decompress.c += ${ZLIB_CFLAGS} ${BZIP2_CFLAGS} ${ZSTD_CFLAGS} > +CFLAGS.decompress.c += ${ZLIB_CFLAGS} ${BZIP2_CFLAGS} ${ZSTD_CFLAGS} ${XZ_CFLAGS} > CFLAGS.framebuffer.c += -I$(SRCTOP)/sys/teken > CFLAGS.framebuffer.c += -I${SRCTOP}/contrib/pnglite > CFLAGS.main.c += -I$(SRCTOP)/sys/teken > diff --git a/stand/efi/loader/decompress.c b/stand/efi/loader/decompress.c > index 5c16f7d9bb2a..fb3c6314e4b6 100644 > --- a/stand/efi/loader/decompress.c > +++ b/stand/efi/loader/decompress.c > @@ -11,7 +11,8 @@ > > #include > #include > -#ifdef LOADER_ZFS_SUPPORT /* ZSTD only available with ZFS */ > +#include > +#ifdef LOADER_ZFS_SUPPORT /* ZSTD and lzma only available with ZFS */ > #include > #endif > #include > @@ -32,6 +33,7 @@ struct decomp_state > union { > z_stream zstrm; > bz_stream bzstrm; > + struct xz_dec *xzstrm; > #ifdef LOADER_ZFS_SUPPORT > ZSTD_DStream *zstdstrm; > #endif > @@ -63,10 +65,10 @@ what_compressed(uint8_t *buf, size_t len) > return (zstd); > } > if (memcmp(buf, "\xfd""7zXZ\x00", 6) == 0) { > - printf("xz -- unsupproted\n"); > - } else { > - printf("Not compressed\n"); > + printf("xz\n"); > + return (xz); > } > + printf("Not compressed\n"); > return (none); > } > > @@ -220,7 +222,7 @@ bzip2_step(decomp_state *dctx, uint8_t *buf, size_t len, size_t offset) > > if (ret == BZ_STREAM_END) > return (done); > - if (ret != Z_OK) > + if (ret != BZ_OK) > return (err); > if (dctx->buf_cur < dctx->buf_end) /* Have output space */ > return (ok); > @@ -247,6 +249,90 @@ bzip2_fini(decomp_state *dctx, bool flush) > free_buffer(dctx); > } > > +/* > + * XZ support > + */ > +static EFI_STATUS > +xz_init(decomp_state *dctx, uint8_t *first_buf, size_t buflen, size_t size_hint) > +{ > + /* > + * Assume 4x compression, but start at 64MB > + */ > + dctx->size = max(size_hint * 4, M(64)); > + EFI_STATUS status = alloc_buffer(dctx, dctx->size); > + if (EFI_ERROR(status)) > + return (status); > + xz_crc32_init(); > + xz_crc64_init(); > + dctx->xzstrm = xz_dec_init(XZ_DYNALLOC, (uint32_t)-1); > + return (dctx->xzstrm != NULL ? EFI_SUCCESS : EFI_VOLUME_CORRUPTED); > +} > + > + > +static enum step_return > +xz_step(decomp_state *dctx, uint8_t *buf, size_t len, size_t offset) > +{ > + struct xz_dec *strm = dctx->xzstrm; > + size_t outlen = dctx->buf_end - dctx->buf_cur; > + struct xz_buf b = { .in = buf, .in_size = len, .in_pos = 0, > + .out = dctx->buf_cur, .out_size = outlen, .out_pos = 0 }; > + int ret; > + > + ret = xz_dec_run(strm, &b); > + dctx->buf_cur += b.out_pos; > + > + if (ret == XZ_STREAM_END) > + return (done); > + if (ret != XZ_OK) { > + switch(ret) { > + case XZ_MEM_ERROR: > + printf("xz no memory "); > + break; > + case XZ_DATA_ERROR: > + printf("xz file corrupted "); > + break; > + case XZ_FORMAT_ERROR: > + printf("xz format not found "); > + break; > + case XZ_OPTIONS_ERROR: > + printf("unsupported xz option "); > + break; > + case XZ_MEMLIMIT_ERROR: > + printf("xz dictionary too small "); > + break; > + default: > + printf("xz step error %d ", ret); > + break; > + } > + printf(" len %d offset %d\n", (int)len, (int)offset); > + return (err); > + } Above block seems to be wrongly indented -- Renato Botelho