From patchwork Tue Jul 25 21:15:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dimitri John Ledkov X-Patchwork-Id: 1812865 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=gOBpxyWk; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4R9VDn5fjQz20Ft for ; Wed, 26 Jul 2023 07:15:37 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qOPNT-0001TB-GI; Tue, 25 Jul 2023 21:15:31 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qOPNJ-0001OZ-9g for kernel-team@lists.ubuntu.com; Tue, 25 Jul 2023 21:15:21 +0000 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 12F0B3F171 for ; Tue, 25 Jul 2023 21:15:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1690319720; bh=x+oVfQOJcZe+mi7gCkNzf5ka2yQPl5gt/lBZBAEJQto=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gOBpxyWkJjM85YXIp5v/jpSV80fdGYMtTbnCcFbRfZShUDtXo+v+Fi8Tv/gapZzTl sdOB7YOaq2gwTwuHQ4xNutgVIfdjtkg91M5jYHz2jr60shEtqXtYNjSYa2B0p1UCfn xh0m1otZEtUMyRFd32b9OzBDRt0hyTp6h6worNgVrfZb+qs3x7e4E7W0XY5RRzxrJY MSzm/4xuX4hUewLkc3E5xa4zwhFp+S0Z1wJ3URRcVRyZY9OpzvRykaRTVIBwobAD5V meMl9PHOEMJgFHtVWgmcaV8CIOiOk06Vx1tKnpxrtJpHVtXKOsKbj7SnNaMEXo9o6y LZl4K1PS4RD0A== Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-3fc07d4c63eso1409305e9.1 for ; Tue, 25 Jul 2023 14:15:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690319719; x=1690924519; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x+oVfQOJcZe+mi7gCkNzf5ka2yQPl5gt/lBZBAEJQto=; b=XD11DRLzJlctCBbTMWh9uNjgnoqbKJB4YwvRs9f0u/GhangqHGgsetUXBYpVELoZ4n yC6uiLcFCfvqDztnWIIAglUzeUHmNnUgrXkDJ+CX30jJu09CYKKrvzR048EsqcFokkUc q0HzpjKPAvCt9ufqd3gczFKnJEsv7YtFxqxSDAeHoFel/nf1J1zvVri4/8FdAXSGcOz0 EMUX8WdcHtS+xTkChjTI6nDNA2usGOb6i3hiJcy8IWzpcj6GrGMrH/aj2DKpo5wY4Azx YJBYdb3q8YURc60MFOUznEHTNmk91DU/YQkQ9PFr90MurETYwX0+GdsGHcDNHbRYzCTU a+Ug== X-Gm-Message-State: ABy/qLacZmkIEPYkF8o3h2xY/WIGh0CLwIg7ig2ddkWNEbPkRNnDDZhA MAry08rqJ8ebTFIuR1crn3RCs21WxjyRMgpLm6xMcjduYCXP6Nvhf8c4lPPdI3Jyx0uR6drhHdH vQ/yGT2i4Zx8cwwwMrvqhmM3CA+1k4dGjq/DHtQJkzX+n6Mw6tA== X-Received: by 2002:a05:600c:1c23:b0:3fb:ebe2:6f5f with SMTP id j35-20020a05600c1c2300b003fbebe26f5fmr3158302wms.13.1690319719619; Tue, 25 Jul 2023 14:15:19 -0700 (PDT) X-Google-Smtp-Source: APBJJlGZBYMQNdSr1F/1FhNI6T++dh2aAVNHqx5uuqzCz9N0/38w4jKyobJ9qhKcHlOpwa6H2fwYCQ== X-Received: by 2002:a05:600c:1c23:b0:3fb:ebe2:6f5f with SMTP id j35-20020a05600c1c2300b003fbebe26f5fmr3158292wms.13.1690319719264; Tue, 25 Jul 2023 14:15:19 -0700 (PDT) Received: from localhost ([137.220.91.195]) by smtp.gmail.com with ESMTPSA id n23-20020a7bc5d7000000b003fc06169abdsm126542wmk.2.2023.07.25.14.15.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Jul 2023 14:15:18 -0700 (PDT) From: Dimitri John Ledkov To: kernel-team@lists.ubuntu.com Subject: [JAMMY][SRU][PATCH 1/4] firmware_loader: EXTRA_FIRMWARE does not support compressed files Date: Tue, 25 Jul 2023 22:15:04 +0100 Message-Id: <20230725211507.47385-2-dimitri.ledkov@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230725211507.47385-1-dimitri.ledkov@canonical.com> References: <20230725211507.47385-1-dimitri.ledkov@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Randy Dunlap Document in the firmware loader Kconfig help text that firmware image file compression is not supported for builtin EXTRA_FIRMWARE files so that someone does not waste time trying that. Cc: Luis Chamberlain Cc: Greg Kroah-Hartman Cc: "Rafael J. Wysocki" Acked-by: Luis Chamberlain Signed-off-by: Randy Dunlap Link: https://lore.kernel.org/r/20220214222311.9758-1-rdunlap@infradead.org Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 36744c117ab4e3d7e114c10d66882c418ba6ea8a) BugLink: https://bugs.launchpad.net/bugs/2028550 Signed-off-by: Dimitri John Ledkov --- drivers/base/firmware_loader/Kconfig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/base/firmware_loader/Kconfig b/drivers/base/firmware_loader/Kconfig index 5b24f39592..38f3b66bf5 100644 --- a/drivers/base/firmware_loader/Kconfig +++ b/drivers/base/firmware_loader/Kconfig @@ -60,6 +60,8 @@ config EXTRA_FIRMWARE image since it combines both GPL and non-GPL work. You should consult a lawyer of your own before distributing such an image. + NOTE: Compressed files are not supported in EXTRA_FIRMWARE. + config EXTRA_FIRMWARE_DIR string "Firmware blobs root directory" depends on EXTRA_FIRMWARE != "" @@ -169,6 +171,9 @@ config FW_LOADER_COMPRESS be compressed with either none or crc32 integrity check type (pass "-C crc32" option to xz command). + Compressed firmware support does not apply to firmware images + that are built into the kernel image (CONFIG_EXTRA_FIRMWARE). + config FW_CACHE bool "Enable firmware caching during suspend" depends on PM_SLEEP From patchwork Tue Jul 25 21:15:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dimitri John Ledkov X-Patchwork-Id: 1812863 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=i+9lMC8H; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4R9VDm5h8Qz1ybX for ; Wed, 26 Jul 2023 07:15:35 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qOPNN-0001PS-RQ; Tue, 25 Jul 2023 21:15:25 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qOPNJ-0001Oh-Mk for kernel-team@lists.ubuntu.com; Tue, 25 Jul 2023 21:15:21 +0000 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 596283F171 for ; Tue, 25 Jul 2023 21:15:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1690319721; bh=VNZ2900xLn/jBzqTnBsj4RSWYl7C/kmNfodwyhnPu4s=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=i+9lMC8HFKWDwA50t2jpeYIyxQOKZfHTrMOPV1crKGWjomi7T68MB883v1NRt2LxG 7GOkJgdLTz1vo34SamLwjpIQx7Ev68VUMc5YfDwilTj0I/ZrOqCNMU9wbCj+g3mwCc pwLOs9FlZGJGV3wFr47XiGunQCk0vDSn6KfrjCTI2D7Dur9y+6CjD6gehgldPgEUn2 wxdGlPrnuUHyjKyJh/FsqQ5QASDCeWL4uSGVEZD4/urnXTGSmyggyXMJ1dhGR2AfCi 0KvjKZkABuwDzhXqLKdl6Sb7M1jokSCj2ZK1GArELtN2qB0q553Ee7Y7RoRQmhKEKN A9fBNvuAY41mw== Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-2f2981b8364so3480859f8f.1 for ; Tue, 25 Jul 2023 14:15:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690319720; x=1690924520; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VNZ2900xLn/jBzqTnBsj4RSWYl7C/kmNfodwyhnPu4s=; b=VbbimATBnBYxD49ssq0iQISl5bTYwiGGusCIetX9sCUPzJrbJ1HcThIeVa3lfWBDH8 gfvcLITnM59vSm7ONF1L4CbLxEtP618Voo9+v2gTg3+ITWi+YUZ9g06nG1aeywm/WGzQ uMpDa3I2RGx4bioG8B1W4obczfANCCOGjrXQq0lwFJRdqGCMkvVRZJSgUjtJ5W4aDHuc IbmpYj06LKEzvyhj6/CTjWpkTTUZkgMRQG3NqJRdaOyOTghSWNQph7/Uq+6ZrAUBzi/b tK0NsIIS8CXEDO2LaxWbMPGKveloKyXFKOQbG2MlpK+ZmINVRMDAjJ19NKyJZ/OKHBNc yoJQ== X-Gm-Message-State: ABy/qLaenizsfX21zCAHXtC40RMiYoP5NbrReygqIOX9QHNjYDM6y/Fp s2ISNdJfPEFwrNpMWxmE4oipqkYG8phVbOMQITWIp731KVeD06A0U71uozp3K2kPkPOkNHNEXkB gb8wA/dkOfuLFY0SpVFYPaapfRU3CpJ53nnkynX9QmQfRAORvUQ== X-Received: by 2002:adf:f44f:0:b0:317:3d6c:5b27 with SMTP id f15-20020adff44f000000b003173d6c5b27mr9168177wrp.46.1690319720579; Tue, 25 Jul 2023 14:15:20 -0700 (PDT) X-Google-Smtp-Source: APBJJlFMZfyQLTX9RmKia8re/2EpxRBv8r2Jmrzicqohi9EHXCe9Gu/3REZy9vz85MeRry1Rjp70Rw== X-Received: by 2002:adf:f44f:0:b0:317:3d6c:5b27 with SMTP id f15-20020adff44f000000b003173d6c5b27mr9168169wrp.46.1690319720285; Tue, 25 Jul 2023 14:15:20 -0700 (PDT) Received: from localhost ([137.220.91.195]) by smtp.gmail.com with ESMTPSA id w2-20020a5d4b42000000b0030ae53550f5sm17501773wrs.51.2023.07.25.14.15.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Jul 2023 14:15:19 -0700 (PDT) From: Dimitri John Ledkov To: kernel-team@lists.ubuntu.com Subject: [JAMMY][SRU][PATCH 2/4] firmware: Add the support for ZSTD-compressed firmware files Date: Tue, 25 Jul 2023 22:15:05 +0100 Message-Id: <20230725211507.47385-3-dimitri.ledkov@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230725211507.47385-1-dimitri.ledkov@canonical.com> References: <20230725211507.47385-1-dimitri.ledkov@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Takashi Iwai As the growing demand on ZSTD compressions, there have been requests for the support of ZSTD-compressed firmware files, so here it is: this patch extends the firmware loader code to allow loading ZSTD files. The implementation is fairly straightforward, it just adds a ZSTD decompression routine for the file expander. (And the code is even simpler than XZ thanks to the ZSTD API that gives the original decompressed size from the header.) Link: https://lore.kernel.org/all/20210127154939.13288-1-tiwai@suse.de/ Tested-by: Piotr Gorski Signed-off-by: Takashi Iwai Link: https://lore.kernel.org/r/20220421152908.4718-2-tiwai@suse.de Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 23cfbc6ec44e5e80d5522976ff45ffcdcddfb230) BugLink: https://bugs.launchpad.net/bugs/2028550 Signed-off-by: Dimitri John Ledkov --- drivers/base/firmware_loader/Kconfig | 24 ++++++--- drivers/base/firmware_loader/main.c | 76 ++++++++++++++++++++++++++-- 2 files changed, 91 insertions(+), 9 deletions(-) diff --git a/drivers/base/firmware_loader/Kconfig b/drivers/base/firmware_loader/Kconfig index 38f3b66bf5..08bb50451a 100644 --- a/drivers/base/firmware_loader/Kconfig +++ b/drivers/base/firmware_loader/Kconfig @@ -159,21 +159,33 @@ config FW_LOADER_USER_HELPER_FALLBACK config FW_LOADER_COMPRESS bool "Enable compressed firmware support" - select FW_LOADER_PAGED_BUF - select XZ_DEC help This option enables the support for loading compressed firmware files. The caller of firmware API receives the decompressed file content. The compressed file is loaded as a fallback, only after loading the raw file failed at first. - Currently only XZ-compressed files are supported, and they have to - be compressed with either none or crc32 integrity check type (pass - "-C crc32" option to xz command). - Compressed firmware support does not apply to firmware images that are built into the kernel image (CONFIG_EXTRA_FIRMWARE). +if FW_LOADER_COMPRESS +config FW_LOADER_COMPRESS_XZ + bool "Enable XZ-compressed firmware support" + select FW_LOADER_PAGED_BUF + select XZ_DEC + help + This option adds the support for XZ-compressed files. + The files have to be compressed with either none or crc32 + integrity check type (pass "-C crc32" option to xz command). + +config FW_LOADER_COMPRESS_ZSTD + bool "Enable ZSTD-compressed firmware support" + select ZSTD_DECOMPRESS + help + This option adds the support for ZSTD-compressed files. + +endif # FW_LOADER_COMPRESS + config FW_CACHE bool "Enable firmware caching during suspend" depends on PM_SLEEP diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c index 04ede46f75..227f6b3dff 100644 --- a/drivers/base/firmware_loader/main.c +++ b/drivers/base/firmware_loader/main.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -364,10 +365,74 @@ int fw_map_paged_buf(struct fw_priv *fw_priv) } #endif +/* + * ZSTD-compressed firmware support + */ +#ifdef CONFIG_FW_LOADER_COMPRESS_ZSTD +static int fw_decompress_zstd(struct device *dev, struct fw_priv *fw_priv, + size_t in_size, const void *in_buffer) +{ + size_t len, out_size, workspace_size; + void *workspace, *out_buf; + zstd_dctx *ctx; + int err; + + if (fw_priv->allocated_size) { + out_size = fw_priv->allocated_size; + out_buf = fw_priv->data; + } else { + zstd_frame_header params; + + if (zstd_get_frame_header(¶ms, in_buffer, in_size) || + params.frameContentSize == ZSTD_CONTENTSIZE_UNKNOWN) { + dev_dbg(dev, "%s: invalid zstd header\n", __func__); + return -EINVAL; + } + out_size = params.frameContentSize; + out_buf = vzalloc(out_size); + if (!out_buf) + return -ENOMEM; + } + + workspace_size = zstd_dctx_workspace_bound(); + workspace = kvzalloc(workspace_size, GFP_KERNEL); + if (!workspace) { + err = -ENOMEM; + goto error; + } + + ctx = zstd_init_dctx(workspace, workspace_size); + if (!ctx) { + dev_dbg(dev, "%s: failed to initialize context\n", __func__); + err = -EINVAL; + goto error; + } + + len = zstd_decompress_dctx(ctx, out_buf, out_size, in_buffer, in_size); + if (zstd_is_error(len)) { + dev_dbg(dev, "%s: failed to decompress: %d\n", __func__, + zstd_get_error_code(len)); + err = -EINVAL; + goto error; + } + + if (!fw_priv->allocated_size) + fw_priv->data = out_buf; + fw_priv->size = len; + err = 0; + + error: + kvfree(workspace); + if (err && !fw_priv->allocated_size) + vfree(out_buf); + return err; +} +#endif /* CONFIG_FW_LOADER_COMPRESS_ZSTD */ + /* * XZ-compressed firmware support */ -#ifdef CONFIG_FW_LOADER_COMPRESS +#ifdef CONFIG_FW_LOADER_COMPRESS_XZ /* show an error and return the standard error code */ static int fw_decompress_xz_error(struct device *dev, enum xz_ret xz_ret) { @@ -461,7 +526,7 @@ static int fw_decompress_xz(struct device *dev, struct fw_priv *fw_priv, else return fw_decompress_xz_pages(dev, fw_priv, in_size, in_buffer); } -#endif /* CONFIG_FW_LOADER_COMPRESS */ +#endif /* CONFIG_FW_LOADER_COMPRESS_XZ */ /* direct firmware loading support */ static char fw_path_para[256]; @@ -831,7 +896,12 @@ _request_firmware(const struct firmware **firmware_p, const char *name, if (!(opt_flags & FW_OPT_PARTIAL)) nondirect = true; -#ifdef CONFIG_FW_LOADER_COMPRESS +#ifdef CONFIG_FW_LOADER_COMPRESS_ZSTD + if (ret == -ENOENT && nondirect) + ret = fw_get_filesystem_firmware(device, fw->priv, ".zst", + fw_decompress_zstd); +#endif +#ifdef CONFIG_FW_LOADER_COMPRESS_XZ if (ret == -ENOENT && nondirect) ret = fw_get_filesystem_firmware(device, fw->priv, ".xz", fw_decompress_xz); From patchwork Tue Jul 25 21:15:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dimitri John Ledkov X-Patchwork-Id: 1812866 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=DfhJr5vh; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4R9VDr4BHwz1ybX for ; Wed, 26 Jul 2023 07:15:40 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qOPNW-0001Xt-GA; Tue, 25 Jul 2023 21:15:34 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qOPNK-0001P4-G8 for kernel-team@lists.ubuntu.com; Tue, 25 Jul 2023 21:15:22 +0000 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 430823F15D for ; Tue, 25 Jul 2023 21:15:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1690319722; bh=dy9BBX4CgIgjMr13cXyYGEsWPhud17Cmff+UvqEvaIM=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DfhJr5vhfs1trNkkj+8DaQKW+Wdfr3Qsfhgz9ljpOXoqfHLvATeu1LnzsBR0ntDR6 6vrs3nWasSzj7QIr1FDZ3mJ+Vh7Gkb74h+WfW82hTQ9RsPr2U3OlzdG5XZLXqmxF/g 5GyrVgQz8sQRJa+MKPEFftxlfmCVPK32+CXEiRPivEqazXXyA6jdydMMmyefGqOIfu BApCClMcditPwebpHRjOrTiWfUdgBlGxDvKQKFMLGz4uejlZzCwID0W8K19hHj7Frb FEUoW4AFXSQKsjFnFH/Bw8+QdGIWTej+UrOggjz2WxIftMMAHqHBfWuEub1u6afbd7 yk+/pNbEgCEfA== Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-314394a798dso162451f8f.0 for ; Tue, 25 Jul 2023 14:15:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690319721; x=1690924521; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dy9BBX4CgIgjMr13cXyYGEsWPhud17Cmff+UvqEvaIM=; b=WDzzpoBOqhzXAYJAOq6XfyPl8FXXODnppttavlMums939WaHL+P+YEHryLFGUWb2mx ouMWcThqHmElbpJTKokfOXZAbF5QO9Rw+UCDRF571PWgPJACuVhUYs3rbuT1DwvyLb9U H/M2CThQilgJRrhjujkpOEGyy6h8QtFswLiTlgfB3/fl50a2aXA9/oXfh83phDVTQ9X/ D3djmz26djJSVL0oan466Hgh6WoTTDzNoN7qWYiar5u1x0z8tFo6eUFziaFWRnyUAVm7 xmZ1CNGGIoYQSi5y/dwgM8LOWS2lBrI/aUdOCSptX18+u7Adb4sEXrgejZ8w7o8i1shU m/+A== X-Gm-Message-State: ABy/qLZ+znDpd0f5k8W3Z8aTzognWDENVTYJkhJVrfRhHRdZdSKGq8N7 nNNwLQB3VFeGoZP+ICCTTWjmM668i3FIoE8tuwgz464zOkkN6GmGbybh+hbzGJWF2B76p7UmA1Q 7oR+jCLanuorodYDGzKbPq2Ig4ACEC2QNFHM+3EdVsJuVSsZITQ== X-Received: by 2002:adf:e84a:0:b0:313:f75b:c552 with SMTP id d10-20020adfe84a000000b00313f75bc552mr221569wrn.15.1690319721822; Tue, 25 Jul 2023 14:15:21 -0700 (PDT) X-Google-Smtp-Source: APBJJlEbiDq4J9b62P4oCVkHOJjT5hrGQWEYYmafIUlgYarafy5lvXTeak/4IpD4+Ew2qkQfKCn18Q== X-Received: by 2002:adf:e84a:0:b0:313:f75b:c552 with SMTP id d10-20020adfe84a000000b00313f75bc552mr221563wrn.15.1690319721598; Tue, 25 Jul 2023 14:15:21 -0700 (PDT) Received: from localhost ([137.220.91.195]) by smtp.gmail.com with ESMTPSA id c1-20020adfe701000000b00311299df211sm17605330wrm.77.2023.07.25.14.15.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Jul 2023 14:15:20 -0700 (PDT) From: Dimitri John Ledkov To: kernel-team@lists.ubuntu.com Subject: [JAMMY][SRU][PATCH 3/4] UBUNTU: SAUCE: Backport ZSTD-compressed firmware files to old ZSTD API Date: Tue, 25 Jul 2023 22:15:06 +0100 Message-Id: <20230725211507.47385-4-dimitri.ledkov@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230725211507.47385-1-dimitri.ledkov@canonical.com> References: <20230725211507.47385-1-dimitri.ledkov@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" This fixes "firmware: Add the support for ZSTD-compressed firmware files" cherry-pick to use the old ZSTD APIs as present in the v5.15 kernel, instead of v5.19+ in-kernel API.. The zstd in-kernel API was introduced in v5.19 kernels by commit cf30f6a5f0 ("lib: zstd: Add kernel-specific API"). BugLink: https://bugs.launchpad.net/bugs/2028550 Signed-off-by: Dimitri John Ledkov --- drivers/base/firmware_loader/main.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c index 227f6b3dff..701b7ee469 100644 --- a/drivers/base/firmware_loader/main.c +++ b/drivers/base/firmware_loader/main.c @@ -374,16 +374,16 @@ static int fw_decompress_zstd(struct device *dev, struct fw_priv *fw_priv, { size_t len, out_size, workspace_size; void *workspace, *out_buf; - zstd_dctx *ctx; + ZSTD_DCtx *ctx; int err; if (fw_priv->allocated_size) { out_size = fw_priv->allocated_size; out_buf = fw_priv->data; } else { - zstd_frame_header params; + ZSTD_frameParams params; - if (zstd_get_frame_header(¶ms, in_buffer, in_size) || + if (ZSTD_getFrameParams(¶ms, in_buffer, in_size) || params.frameContentSize == ZSTD_CONTENTSIZE_UNKNOWN) { dev_dbg(dev, "%s: invalid zstd header\n", __func__); return -EINVAL; @@ -394,24 +394,24 @@ static int fw_decompress_zstd(struct device *dev, struct fw_priv *fw_priv, return -ENOMEM; } - workspace_size = zstd_dctx_workspace_bound(); + workspace_size = ZSTD_DCtxWorkspaceBound(); workspace = kvzalloc(workspace_size, GFP_KERNEL); if (!workspace) { err = -ENOMEM; goto error; } - ctx = zstd_init_dctx(workspace, workspace_size); + ctx = ZSTD_initDCtx(workspace, workspace_size); if (!ctx) { dev_dbg(dev, "%s: failed to initialize context\n", __func__); err = -EINVAL; goto error; } - len = zstd_decompress_dctx(ctx, out_buf, out_size, in_buffer, in_size); - if (zstd_is_error(len)) { + len = ZSTD_decompressDCtx(ctx, out_buf, out_size, in_buffer, in_size); + if (ZSTD_isError(len)) { dev_dbg(dev, "%s: failed to decompress: %d\n", __func__, - zstd_get_error_code(len)); + ZSTD_getErrorCode(len)); err = -EINVAL; goto error; } From patchwork Tue Jul 25 21:15:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dimitri John Ledkov X-Patchwork-Id: 1812862 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=ePwf1Vzj; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4R9VDn1VzNz1ydq for ; Wed, 26 Jul 2023 07:15:36 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qOPNR-0001RC-1W; Tue, 25 Jul 2023 21:15:29 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qOPNN-0001PK-Ah for kernel-team@lists.ubuntu.com; Tue, 25 Jul 2023 21:15:25 +0000 Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 1A78D3F15D for ; Tue, 25 Jul 2023 21:15:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1690319725; bh=s1sBzMzLePxhep+p/g9KvEqKOXoV7kN4ZnntjZeoRf0=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ePwf1VzjL8mVQ1EvEwWrwr0Xma0Yb7f0BHCSovhvBzNiOcRVvTEWChyYv4L8PWsKM Dh0xOL2B3KtRhltwZDMj/8VPN+YCWjXzsIf2ZzfVzhaNmG/psXDoIhQ9eRE8GpPlJD EBshVr8IeanZENp/NGVSMPQGnzoEHWp9i/ygnUkeJkk3PgfQb3UeL6+Bsr2BvcC1ON EIOsJXQo3cDO2mpj8S3blUPiJCn/PrVRwj6H73C/DlPpXjlTnc1OM+d389zNuo2zjm I0ygo0zE+0jMErAoasePGX972cZbWZ5WDeVjDZ98suPlo2TxNPQMy9EYwLhCI0y7oR bgkJtW+IZyYjQ== Received: by mail-lf1-f72.google.com with SMTP id 2adb3069b0e04-4fe0d910b02so298405e87.0 for ; Tue, 25 Jul 2023 14:15:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690319723; x=1690924523; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=s1sBzMzLePxhep+p/g9KvEqKOXoV7kN4ZnntjZeoRf0=; b=f3CM9R6pRcksiNuAvYlfWu8eWOCJDMlQKiFafTdHnP9lPZqTY6h6WX6pLto/moEIB0 PoVdKDHKLUUjQgxmpU4K9hib7Z1Vhx/iO5ImL+aJlzwrpeb06aMJOVqY6Shk33+sGQpu fVoy7HyBs2sFWlLYkF2MFW7QyWDXRZG2NvEpIWqh/J8wLs/njPqfhTeJECJ/bKbxU6lS 32LktkglVjPDFkMn/J2QgTomFXW9gn1IFkoyIgqPMmhBE7dwD5+gW/z4+5+7kwivShaJ j/wFD0e6PdjG2EsoUxUIfIVr6kyqQ+cmeyAt03CIvzNbbByMm2ECCeKu+2NkbbqubmD6 DH3Q== X-Gm-Message-State: ABy/qLZxpaYPrnOcKBiJH9MKRPNWDmeKZ6MABUQLSwniSZfOEYgLcfnL 6uxM63SXSAjie3How9HAOu5jkgbxzvPdEPutiYfTsDFX/29FY2XJVD4t5PiiSxpVCaQqhGlFfph Ea/yOPv6MaWzLBYqM/2qbv9Uy2uhw0SgHYU8ok2rb9F3zgd23Xg== X-Received: by 2002:a19:e015:0:b0:4fb:8771:e898 with SMTP id x21-20020a19e015000000b004fb8771e898mr38666lfg.15.1690319723247; Tue, 25 Jul 2023 14:15:23 -0700 (PDT) X-Google-Smtp-Source: APBJJlE3vgR4CVMfqLaoW7OFtxyzxLrmdj7u4oVtdiN8LPiHRlSLNRDvGXbOwh+PfDP2462L49/vLw== X-Received: by 2002:a19:e015:0:b0:4fb:8771:e898 with SMTP id x21-20020a19e015000000b004fb8771e898mr38659lfg.15.1690319722929; Tue, 25 Jul 2023 14:15:22 -0700 (PDT) Received: from localhost ([137.220.91.195]) by smtp.gmail.com with ESMTPSA id n14-20020a05600c4f8e00b003fd2e898aa3sm3014724wmq.0.2023.07.25.14.15.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Jul 2023 14:15:22 -0700 (PDT) From: Dimitri John Ledkov To: kernel-team@lists.ubuntu.com Subject: [JAMMY][SRU][PATCH 4/4] UBUNTU: [Config] Enable FW_LOADER_COMPRESS_ZSTD by default Date: Tue, 25 Jul 2023 22:15:07 +0100 Message-Id: <20230725211507.47385-5-dimitri.ledkov@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230725211507.47385-1-dimitri.ledkov@canonical.com> References: <20230725211507.47385-1-dimitri.ledkov@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" This is to aid upgrade to releases that require support for zstd compressed firmware. BugLink: https://bugs.launchpad.net/bugs/2028550 Signed-off-by: Dimitri John Ledkov --- debian.master/config/annotations | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian.master/config/annotations b/debian.master/config/annotations index f4a2bfb4c6..c115319d65 100644 --- a/debian.master/config/annotations +++ b/debian.master/config/annotations @@ -4791,6 +4791,9 @@ CONFIG_FW_CFG_SYSFS policy<{'amd64': 'm', 'arm64': ' CONFIG_FW_CFG_SYSFS_CMDLINE policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_FW_LOADER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_FW_LOADER_COMPRESS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FW_LOADER_COMPRESS_XZ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FW_LOADER_COMPRESS_ZSTD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FW_LOADER_COMPRESS_ZSTD note<'LP: #2028550'> CONFIG_FW_LOADER_PAGED_BUF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_FW_LOADER_USER_HELPER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_FXAS21002C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}>