From: "Wang, Haiyue" <haiyue.wang@intel.com>
To: David Marchand <david.marchand@redhat.com>,
"dev@dpdk.org" <dev@dpdk.org>
Cc: Igor Russkikh <irusskikh@marvell.com>,
Aaron Conole <aconole@redhat.com>,
Michael Santana <maicolgabriel@hotmail.com>,
"Richardson, Bruce" <bruce.richardson@intel.com>,
Rasesh Mody <rmody@marvell.com>,
Shahed Shaikh <shshaikh@marvell.com>,
"Yang, Qiming" <qiming.yang@intel.com>,
"Zhang, Qi Z" <qi.z.zhang@intel.com>,
Heinrich Kuhn <heinrich.kuhn@netronome.com>,
"Devendra Singh Rawat" <dsinghrawat@marvell.com>,
Ray Kinsella <mdr@ashroe.eu>,
"Neil Horman" <nhorman@tuxdriver.com>,
Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>,
Narcisa Ana Maria Vasile <navasile@linux.microsoft.com>,
Dmitry Malloy <dmitrym@microsoft.com>,
"Kadam, Pallavi" <pallavi.kadam@intel.com>
Subject: Re: [dpdk-dev] [PATCH v3 2/2] eal: handle compressed firmwares
Date: Mon, 5 Jul 2021 06:35:10 +0000 [thread overview]
Message-ID: <BN8PR11MB37952610A42E0C2C7ABA7073F71C9@BN8PR11MB3795.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20210629080632.30964-3-david.marchand@redhat.com>
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of David Marchand
> Sent: Tuesday, June 29, 2021 16:07
> To: dev@dpdk.org
> Cc: Igor Russkikh <irusskikh@marvell.com>; Aaron Conole <aconole@redhat.com>; Michael Santana
> <maicolgabriel@hotmail.com>; Richardson, Bruce <bruce.richardson@intel.com>; Rasesh Mody
> <rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Yang, Qiming <qiming.yang@intel.com>; Zhang,
> Qi Z <qi.z.zhang@intel.com>; Heinrich Kuhn <heinrich.kuhn@netronome.com>; Devendra Singh Rawat
> <dsinghrawat@marvell.com>; Ray Kinsella <mdr@ashroe.eu>; Neil Horman <nhorman@tuxdriver.com>; Dmitry
> Kozlyuk <dmitry.kozliuk@gmail.com>; Narcisa Ana Maria Vasile <navasile@linux.microsoft.com>; Dmitry
> Malloy <dmitrym@microsoft.com>; Kadam, Pallavi <pallavi.kadam@intel.com>
> Subject: [dpdk-dev] [PATCH v3 2/2] eal: handle compressed firmwares
>
> Introduce an internal firmware loading helper to remove code duplication
> in our drivers and handle xz compressed firmwares by calling libarchive.
>
> This helper tries to look for .xz suffixes so that drivers are not aware
> the firmwares have been compressed.
>
> libarchive is set as an optional dependency: without libarchive, a
> runtime warning is emitted so that users know there is a compressed
> firmware.
>
> Windows implementation is left as an empty stub.
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> Reviewed-by: Igor Russkikh <irusskikh@marvell.com>
> ---
> Changes since v2:
> - added a comment on libarchive link dependency,
>
> Changes since v1:
> - used pkg-config for libarchive detection,
> - updated doxygen annotations,
> - added internal helpers in eal_firmware.c to enhance readability,
> - dropped whitespace damage in version.map,
>
> ---
> .github/workflows/build.yml | 1 +
> .travis.yml | 1 +
> config/meson.build | 10 +++
> drivers/net/bnx2x/bnx2x.c | 35 +++-----
> drivers/net/ice/ice_ethdev.c | 60 +++----------
> drivers/net/nfp/nfp_net.c | 57 +++----------
> drivers/net/qede/qede_main.c | 45 ++++------
> lib/eal/include/rte_firmware.h | 32 +++++++
> lib/eal/unix/eal_firmware.c | 149 +++++++++++++++++++++++++++++++++
> lib/eal/unix/meson.build | 1 +
> lib/eal/version.map | 1 +
> lib/eal/windows/eal.c | 9 ++
> 12 files changed, 259 insertions(+), 142 deletions(-)
> create mode 100644 lib/eal/include/rte_firmware.h
> create mode 100644 lib/eal/unix/eal_firmware.c
>
> +int
> +rte_firmware_read(const char *name, void **buf, size_t *bufsz)
> +{
> + char path[PATH_MAX];
> + int ret;
> +
> + ret = firmware_read(name, buf, bufsz);
> + if (ret < 0) {
> + snprintf(path, sizeof(path), "%s.xz", name);
> + path[PATH_MAX - 1] = '\0';
> +#ifndef RTE_HAS_LIBARCHIVE
> + if (access(path, F_OK) == 0) {
> + RTE_LOG(WARNING, EAL, "libarchive not available, %s cannot be decompressed\n",
> + path);
> + }
> +#else
> + ret = firmware_read(path, buf, bufsz);
> +#endif
> + }
> + return ret;
> +}
Since ice PMD needs to check if the firmware file with different name can be accessed
by some kind of order, before doing the final firmware selection. Should we also add
the firmware access API for handling this ?
bool
rte_firmware_access(const char *name)
{
char path[PATH_MAX];
if (access(name, F_OK) == 0)
return true;
snprintf(path, sizeof(path), "%s.xz", name);
path[PATH_MAX - 1] = '\0';
if (access(path, F_OK) == 0)
return true;
return false;
}
> --
> 2.23.0
next prev parent reply other threads:[~2021-07-05 6:35 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-02 9:58 [dpdk-dev] [PATCH 0/2] Support " David Marchand
2021-06-02 9:58 ` [dpdk-dev] [PATCH 1/2] net/ice: factorize firmware loading David Marchand
2021-06-02 9:58 ` [dpdk-dev] [PATCH 2/2] eal: handle compressed firmwares David Marchand
2021-06-02 11:13 ` Jerin Jacob
2021-06-02 15:46 ` David Marchand
2021-06-02 11:30 ` [dpdk-dev] [EXT] " Igor Russkikh
2021-06-02 21:19 ` [dpdk-dev] " Dmitry Kozlyuk
2021-06-03 7:23 ` David Marchand
2021-06-03 7:53 ` David Marchand
2021-06-03 8:14 ` Bruce Richardson
2021-06-02 10:35 ` [dpdk-dev] [EXT] [PATCH 0/2] Support " Igor Russkikh
2021-06-02 11:05 ` David Marchand
2021-06-02 11:23 ` Igor Russkikh
2021-06-03 16:55 ` [dpdk-dev] [PATCH v2 " David Marchand
2021-06-03 16:55 ` [dpdk-dev] [PATCH v2 1/2] net/ice: factorize firmware loading David Marchand
2021-06-28 7:58 ` David Marchand
2021-06-03 16:55 ` [dpdk-dev] [PATCH v2 2/2] eal: handle compressed firmwares David Marchand
2021-06-03 22:29 ` Dmitry Kozlyuk
2021-06-04 7:27 ` David Marchand
2021-06-04 21:40 ` Dmitry Kozlyuk
2021-06-07 9:28 ` David Marchand
2021-06-14 13:17 ` [dpdk-dev] [PATCH v2 0/2] Support " David Marchand
2021-06-29 8:06 ` [dpdk-dev] [PATCH v3 " David Marchand
2021-06-29 8:06 ` [dpdk-dev] [PATCH v3 1/2] net/ice: factorize firmware loading David Marchand
2021-07-05 1:43 ` Wang, Haiyue
2021-07-05 3:33 ` Wang, Haiyue
2021-07-05 7:08 ` David Marchand
2021-07-05 8:02 ` Wang, Haiyue
2021-07-05 8:33 ` David Marchand
2021-07-05 9:59 ` Zhang, Qi Z
2021-07-05 11:46 ` Wang, Haiyue
2021-07-05 11:44 ` Wang, Haiyue
2021-07-05 13:18 ` Wang, Haiyue
2021-07-05 13:34 ` David Marchand
2021-06-29 8:06 ` [dpdk-dev] [PATCH v3 2/2] eal: handle compressed firmwares David Marchand
2021-06-29 12:45 ` Aaron Conole
2021-07-05 6:35 ` Wang, Haiyue [this message]
2021-07-05 6:54 ` David Marchand
2021-07-05 13:19 ` Wang, Haiyue
2021-07-06 14:29 ` [dpdk-dev] [PATCH v4 0/2] Support " David Marchand
2021-07-06 14:29 ` [dpdk-dev] [PATCH v4 1/2] net/ice: factorize firmware loading David Marchand
2021-07-06 14:29 ` [dpdk-dev] [PATCH v4 2/2] eal: handle compressed firmwares David Marchand
2021-07-07 12:08 ` [dpdk-dev] [PATCH v5 0/2] Support " David Marchand
2021-07-07 12:08 ` [dpdk-dev] [PATCH v5 1/2] net/ice: factorize firmware loading David Marchand
2021-07-07 12:08 ` [dpdk-dev] [PATCH v5 2/2] eal: handle compressed firmware David Marchand
2021-07-07 15:03 ` [dpdk-dev] [PATCH v5 0/2] Support compressed firmwares David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BN8PR11MB37952610A42E0C2C7ABA7073F71C9@BN8PR11MB3795.namprd11.prod.outlook.com \
--to=haiyue.wang@intel.com \
--cc=aconole@redhat.com \
--cc=bruce.richardson@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=dmitry.kozliuk@gmail.com \
--cc=dmitrym@microsoft.com \
--cc=dsinghrawat@marvell.com \
--cc=heinrich.kuhn@netronome.com \
--cc=irusskikh@marvell.com \
--cc=maicolgabriel@hotmail.com \
--cc=mdr@ashroe.eu \
--cc=navasile@linux.microsoft.com \
--cc=nhorman@tuxdriver.com \
--cc=pallavi.kadam@intel.com \
--cc=qi.z.zhang@intel.com \
--cc=qiming.yang@intel.com \
--cc=rmody@marvell.com \
--cc=shshaikh@marvell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).