[PATCH] image: Add support for ZSTD decompression

Robert Marko robert.marko at sartura.hr
Wed May 20 13:38:01 CEST 2020


Tom,
I have tried various things but CONFIG_IS_ENABLED won't work inside of
switch case.
It works fine outside of if though.


On Tue, May 5, 2020 at 11:19 PM Robert Marko <robert.marko at sartura.hr> wrote:
>
>
>
> On Mon, May 4, 2020 at 3:04 PM Tom Rini <trini at konsulko.com> wrote:
>>
>> On Sun, May 03, 2020 at 12:24:14PM +0200, Robert Marko wrote:
>> > Hi,
>> >
>> > I checked and SPL_ZSTD symbol already exists.
>> > But trying to use #if CONFIG_IS_ENABLED(ZSTD) inside
>> > of the switch case will fail with the preprocessor error:
>> > In file included from tools/common/image.c:1:
>>
>> Ah right, oops.
>>
>> > > ./tools/../common/image.c: In function ‘image_decomp’:
>> > > ./tools/../common/image.c:510:22: error: missing binary operator before
>> > > token "("
>> > >   510 | #if CONFIG_IS_ENABLED(ZSTD)
>> >
>> >
>> > Outside of the switch_case it works fine
>>
>> Sounds like <linux/kconfig.h> needs an explicit #include then.
>
> Unfortunately, it does not help.
> Preprocessor throws the same error
>>
>>
>> >
>> >
>> > On Fri, May 1, 2020 at 6:42 PM Tom Rini <trini at konsulko.com> wrote:
>> >
>> > > On Fri, May 01, 2020 at 05:15:41PM +0200, Robert Marko wrote:
>> > > > On Fri, May 1, 2020 at 4:56 PM Tom Rini <trini at konsulko.com> wrote:
>> > > > >
>> > > > > On Sat, Apr 25, 2020 at 07:37:21PM +0200, Robert Marko wrote:
>> > > > >
>> > > > > > This patch adds support for ZSTD decompression of FIT images.
>> > > > > >
>> > > > > > Signed-off-by: Robert Marko <robert.marko at sartura.hr>
>> > > > > > Cc: Luka Perkov <luka.perkov at sartura.hr>
>> > > > > > ---
>> > > > > >  common/image.c  | 52
>> > > +++++++++++++++++++++++++++++++++++++++++++++++++
>> > > > > >  include/image.h |  1 +
>> > > > > >  2 files changed, 53 insertions(+)
>> > > > > >
>> > > > > > diff --git a/common/image.c b/common/image.c
>> > > > > > index 94873cb6ed..70ba0f4328 100644
>> > > > > > --- a/common/image.c
>> > > > > > +++ b/common/image.c
>> > > > > > @@ -42,6 +42,7 @@
>> > > > > >  #include <lzma/LzmaTypes.h>
>> > > > > >  #include <lzma/LzmaDec.h>
>> > > > > >  #include <lzma/LzmaTools.h>
>> > > > > > +#include <linux/zstd.h>
>> > > > > >
>> > > > > >  #ifdef CONFIG_CMD_BDI
>> > > > > >  extern int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *
>> > > const argv[]);
>> > > > > > @@ -193,6 +194,7 @@ static const table_entry_t uimage_comp[] = {
>> > > > > >       {       IH_COMP_LZMA,   "lzma",         "lzma compressed",
>> > >   },
>> > > > > >       {       IH_COMP_LZO,    "lzo",          "lzo compressed",
>> > >  },
>> > > > > >       {       IH_COMP_LZ4,    "lz4",          "lz4 compressed",
>> > >  },
>> > > > > > +     {       IH_COMP_ZSTD,   "zstd",         "zstd compressed",
>> > >   },
>> > > > > >       {       -1,             "",             "",
>> > >  },
>> > > > > >  };
>> > > > > >
>> > > > > > @@ -480,6 +482,56 @@ int image_decomp(int comp, ulong load, ulong
>> > > image_start, int type,
>> > > > > >               break;
>> > > > > >       }
>> > > > > >  #endif /* CONFIG_LZ4 */
>> > > > > > +#ifdef CONFIG_ZSTD
>> > > > >
>> > > > > We need to add SPL_ZSTD as a symbol to lib/Kconfig and then use
>> > > > > CONFIG_IS_ENABLED() tests here to avoid growth in SPL.  Thanks!
>> > > > Hi,
>> > > > is that something that I need to do or?
>> > >
>> > > Yes.  You need to add the symbol, and then the code you're adding needs
>> > > to make use of '#if CONFIG_IS_ENABLED(ZSTD)' rather than '#ifdef
>> > > CONFIG_ZSTD'.  Sorry for not being clear enough.
>> > >
>> > > --
>> > > Tom
>> > >
>>
>> --
>> Tom


More information about the U-Boot mailing list