[PATCH i-g-t v2 4/6] tools/intel-gfx-fw-info: Override kernel types

Gustavo Sousa gustavo.sousa at intel.com
Wed Aug 21 17:18:02 UTC 2024


Quoting Lucas De Marchi (2024-08-20 20:29:26-03:00)
>Previously we were defining u32 type as part of the string we are
>loading. However in order to use other types like u8 and u16 in upcoming
>changes, it would be better to have them all defined in a single place.
>We can't create a typedef like done with u32 because cstruct already
>defines a few types for convenience. However it's very surprising it's
>defining e.g. u8 as a 64-bit variable.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>---
> tools/intel-gfx-fw-info | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
>diff --git a/tools/intel-gfx-fw-info b/tools/intel-gfx-fw-info
>index 0f1da8bff..57d6f935b 100755
>--- a/tools/intel-gfx-fw-info
>+++ b/tools/intel-gfx-fw-info
>@@ -23,8 +23,6 @@ import typing
> #          dumpstruct(): give it a name
> 
> CDEF = """
>-typedef uint32 u32;
>-
> struct uc_css_header {
>         u32 module_type;
>         /*
>@@ -120,6 +118,13 @@ class Fw(abc.ABC):
>     @classmethod
>     def create(cls, f):
>         cparser = cstruct.cstruct()
>+        # cstruct defines some "convenience types" that are not very convenient
>+        # when parsing a kernel header - e.g. we don't want u16 to be parsed as
>+        # uint128

Yikes.

>+        cparser.typedefs["u8"] = "uint8_t"
>+        cparser.typedefs["u16"] = "uint16_t"
>+        cparser.typedefs["u32"] = "uint32_t"
>+        cparser.typedefs["u64"] = "uint64_t"

Well, typedefs is exposed in the documentation, but not properly
documented [1]...

Have you tried using cparser.add_type()? Well, if that doesn't work:

     Reviewed-by: Gustavo Sousa <gustavo.sousa at intel.com>

[1] https://docs.dissect.tools/en/latest/api/dissect/cstruct/cstruct/index.html#dissect.cstruct.cstruct.cstruct.typedefs

>         cparser.load(CDEF)
> 
>         magic = cparser.magic(f).data
>-- 
>2.43.0
>


More information about the igt-dev mailing list