[igt-dev] [PATCH i-g-t] tools: Add tool to dump GuC/HuC CSS header

Lucas De Marchi lucas.demarchi at intel.com
Tue Apr 4 14:10:53 UTC 2023


On Tue, Apr 04, 2023 at 09:29:51AM -0300, Gustavo Sousa wrote:
>Quoting Lucas De Marchi (2023-04-03 17:24:37)
>> Since we are now using unversioned GuC/HuC, it's useful to be able to
>> dump the firmware blob and get that information from the CSS header.
>> Add a tool that decodes that information and dumps the raw header.
>>
>> Example output:
>>
>>         $ tools/intel-gfx-fw-info /lib/firmware/i915/tgl_guc_70.bin
>>         version: 70.5.1
>>         date: 2022-09-09
>>         raw dump:
>>         00000000  06 00 00 00 a1 00 00 00  00 00 01 00 00 00 00 00   ................
>>         00000010  86 80 00 00 09 09 22 20  71 17 01 00 40 00 00 00   ......" q... at ...
>>         00000020  40 00 00 00 01 00 00 00  09 21 45 00 73 79 73 5f   @........!E.sys_
>>         00000030  67 62 73 62 50 43 2d 31  2e 30 2e 33 31 35 30 00   gbsbPC-1.0.3150.
>>         00000040  01 05 46 00 00 00 00 00  00 00 00 00 00 00 00 00   ..F.............
>>         00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
>>         00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
>>         00000070  00 00 00 00 00 00 00 00  00 10 80 00 00 01 40 00   .............. at .
>>
>>         struct uc_css_header:
>>         - module_type: 0x6
>>         - header_size_dw: 0xa1
>>         - header_version: 0x10000
>>         - module_id: 0x0
>>         - module_vendor: 0x8086
>>         - date: 0x20220909
>>         - size_dw: 0x11771
>>         - key_size_dw: 0x40
>>         - modulus_size_dw: 0x40
>>         - exponent_size_dw: 0x1
>>         - time: 0x452109
>>         - username: b'sys_gbsb'
>>         - buildnumber: b'PC-1.0.3150\x00'
>>         - sw_version: 0x460501
>>         - vf_version: 0x0
>>         - reserved0: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>         - rsvd: <rsvd private_data_size=0x801000, reserved1=0x801000>
>>         - header_info: 0x400100
>>
>> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>> ---
>>  tools/intel-gfx-fw-info | 120 ++++++++++++++++++++++++++++++++++++++++
>>  tools/meson.build       |   2 +-
>>  2 files changed, 121 insertions(+), 1 deletion(-)
>>  create mode 100755 tools/intel-gfx-fw-info
>>
>> diff --git a/tools/intel-gfx-fw-info b/tools/intel-gfx-fw-info
>> new file mode 100755
>> index 000000000..fc1fafdf5
>> --- /dev/null
>> +++ b/tools/intel-gfx-fw-info
>> @@ -0,0 +1,120 @@
>> +#!/usr/bin/env python3
>> +# pylint: disable=C0301
>> +# SPDX-License-Identifier: (GPL-2.0 OR MIT)
>> +#
>> +# Copyright (C) 2023    Intel Corporation
>> +
>> +import argparse
>> +import logging
>> +import pprint
>> +import sys
>> +import typing
>> +
>> +from dissect import cstruct
>
>Since we are not packaging this tool in a way that dependencies are
>automatically installed, I think it is worth to capture an ImportError
>here and point the user to the github repository for this dependency.

sounds good. I also have a minor update to this patch: we don't really
need to remove the comments as stated below, it's just the defines in
the middle of the struct that are not compatible with the minimal C
parser from this module.

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

thanks

Lucas De Marchi


More information about the igt-dev mailing list