[EXT] Re: [PATCH v1 02/34] ml/cnxk: drop use of RTE API for firmware read

Srikanth Yalavarthi syalavarthi at marvell.com
Thu Sep 21 15:06:40 CEST 2023


> -----Original Message-----
> From: David Marchand <david.marchand at redhat.com>
> Sent: 21 September 2023 18:23
> To: Jerin Jacob <jerinjacobk at gmail.com>; Srikanth Yalavarthi
> <syalavarthi at marvell.com>
> Cc: Prince Takkar <ptakkar at marvell.com>; dev at dpdk.org; Shivah Shankar
> Shankar Narayan Rao <sshankarnara at marvell.com>; Anup Prabhu
> <aprabhu at marvell.com>
> Subject: [EXT] Re: [PATCH v1 02/34] ml/cnxk: drop use of RTE API for
> firmware read
> 
> External Email
> 
> ----------------------------------------------------------------------
> On Thu, Sep 21, 2023 at 2:08 PM Jerin Jacob <jerinjacobk at gmail.com> wrote:
> >
> > On Wed, Aug 30, 2023 at 9:40 PM Srikanth Yalavarthi
> > <syalavarthi at marvell.com> wrote:
> > >
> > > Dropped use of rte_firmware_read API to read ML firmware binary.
> > > When DPDK is built with libarchive aaupport, the the RTE API assumes
> > > the binary file as a compressed
> 
> The rte_firmware API supports both xz-compressed  and uncompressed files.
> Otherwise, it would break loading net/ice on systems where /lib/firmware
> content is uncompressed (which is still the case in some Linux distributions).
> 
> 
> To convince myself, I wrote a quick tool ("./archive" below) that outputs in
> hexa the content of a file, with the same libarchive calls.
> 
> With a xz-compressed file:
> $ hexdump -C /lib/firmware/intel/ice/ddp/ice.pkg.xz | head -1
> 00000000  fd 37 7a 58 5a 00 00 01  69 22 de 36 02 00 21 01  |.7zXZ...i".6..!.| $
> ./archive /lib/firmware/intel/ice/ddp/ice.pkg.xz | head -1
> 00000000: 01 00 00 00 05 00 00 00 1C 00 00 00 70 00 00 00 | ............p...
> 
> Uncompressing this file, and passing it to the same tool:
> $ hexdump -C ice.pkg | head
> 00000000  01 00 00 00 05 00 00 00  1c 00 00 00 70 00 00 00  |............p...| $
> ./archive ice.pkg | head
> 00000000: 01 00 00 00 05 00 00 00 1C 00 00 00 70 00 00 00 | ............p...
> 
> 
> For the record, I am using:
> $ rpm -q libarchive
> libarchive-3.6.1-3.fc37.x86_64
> 
> 
> > > archive. This causes the ML firmware binary to be parsed
> > > incorrectly.
> >
> > + @David Marchand  rte_firmware_read() author for his opinions
> 
> /lib/firmware/mlip-fw.bin does not seem to be something packaged in
> Fedora, and I found no trace in linux-firmware repo, so I can't reproduce
> your issue.
> 
> Please add some debug and give more details about the issue you are facing.

The "/lib/firmware/mlip-fw.bin" is Marvell's ML firmware binary. This file is in un-compressed form.

When DPDK is built without libarchive support, No issues are observed with using  rte_firmware_read to load the firmware file as open and read system calls are used.

When libarchive support is enabled, rte_firmware_read tries to parse the firmware binary as an xz archive. Since the file is not an archive, this step is failing.

Hence, added new ML driver function to read the firmware binary.

> 
> 
> --
> David Marchand



More information about the dev mailing list