Hi Badal, kernel test robot noticed the following build warnings:
https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Badal-Nilawar/mei-bus-add-mei_cldev_mtu-interface/20250619-025825 base: https://gitlab.freedesktop.org/drm/xe/kernel.git drm-xe-next patch link: https://lore.kernel.org/r/20250618190007.2932322-10-badal.nilawar%40intel.com patch subject: [PATCH v3 09/10] drm/xe/xe_late_bind_fw: Extract and print version info config: i386-randconfig-141-20250623 (https://download.01.org/0day-ci/archive/20250624/202506241449.wdiucfjp-...@intel.com/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <l...@intel.com> | Reported-by: Dan Carpenter <dan.carpen...@linaro.org> | Closes: https://lore.kernel.org/r/202506241449.wdiucfjp-...@intel.com/ New smatch warnings: drivers/gpu/drm/xe/xe_late_bind_fw.c:90 parse_cpd_header() error: uninitialized symbol 'offset'. drivers/gpu/drm/xe/xe_late_bind_fw.c:155 parse_lb_layout() error: uninitialized symbol 'offset'. Old smatch warnings: drivers/gpu/drm/xe/xe_late_bind_fw.c:195 xe_late_bind_wait_for_worker_completion() warn: inconsistent indenting vim +/offset +90 drivers/gpu/drm/xe/xe_late_bind_fw.c f9ea24fb9528adc Badal Nilawar 2025-06-19 49 static int parse_cpd_header(struct xe_late_bind *late_bind, u32 fw_id, f9ea24fb9528adc Badal Nilawar 2025-06-19 50 const void *data, size_t size, const char *manifest_entry) f9ea24fb9528adc Badal Nilawar 2025-06-19 51 { f9ea24fb9528adc Badal Nilawar 2025-06-19 52 struct xe_device *xe = late_bind_to_xe(late_bind); f9ea24fb9528adc Badal Nilawar 2025-06-19 53 const struct gsc_cpd_header_v2 *header = data; f9ea24fb9528adc Badal Nilawar 2025-06-19 54 const struct gsc_manifest_header *manifest; f9ea24fb9528adc Badal Nilawar 2025-06-19 55 const struct gsc_cpd_entry *entry; f9ea24fb9528adc Badal Nilawar 2025-06-19 56 size_t min_size = sizeof(*header); f9ea24fb9528adc Badal Nilawar 2025-06-19 57 struct xe_late_bind_fw *lb_fw; f9ea24fb9528adc Badal Nilawar 2025-06-19 58 u32 offset; ^^^^^^^^^^^ f9ea24fb9528adc Badal Nilawar 2025-06-19 59 int i; f9ea24fb9528adc Badal Nilawar 2025-06-19 60 f9ea24fb9528adc Badal Nilawar 2025-06-19 61 if (fw_id >= MAX_FW_ID) f9ea24fb9528adc Badal Nilawar 2025-06-19 62 return -EINVAL; f9ea24fb9528adc Badal Nilawar 2025-06-19 63 lb_fw = &late_bind->late_bind_fw[fw_id]; f9ea24fb9528adc Badal Nilawar 2025-06-19 64 f9ea24fb9528adc Badal Nilawar 2025-06-19 65 /* manifest_entry is mandatory */ f9ea24fb9528adc Badal Nilawar 2025-06-19 66 xe_assert(xe, manifest_entry); f9ea24fb9528adc Badal Nilawar 2025-06-19 67 f9ea24fb9528adc Badal Nilawar 2025-06-19 68 if (size < min_size || header->header_marker != GSC_CPD_HEADER_MARKER) f9ea24fb9528adc Badal Nilawar 2025-06-19 69 return -ENOENT; f9ea24fb9528adc Badal Nilawar 2025-06-19 70 f9ea24fb9528adc Badal Nilawar 2025-06-19 71 if (header->header_length < sizeof(struct gsc_cpd_header_v2)) { f9ea24fb9528adc Badal Nilawar 2025-06-19 72 drm_err(&xe->drm, "%s late binding fw: Invalid CPD header length %u!\n", f9ea24fb9528adc Badal Nilawar 2025-06-19 73 fw_id_to_name[lb_fw->id], header->header_length); f9ea24fb9528adc Badal Nilawar 2025-06-19 74 return -EINVAL; f9ea24fb9528adc Badal Nilawar 2025-06-19 75 } f9ea24fb9528adc Badal Nilawar 2025-06-19 76 f9ea24fb9528adc Badal Nilawar 2025-06-19 77 min_size = header->header_length + sizeof(struct gsc_cpd_entry) * header->num_of_entries; f9ea24fb9528adc Badal Nilawar 2025-06-19 78 if (size < min_size) { f9ea24fb9528adc Badal Nilawar 2025-06-19 79 drm_err(&xe->drm, "%s late binding fw: too small! %zu < %zu\n", f9ea24fb9528adc Badal Nilawar 2025-06-19 80 fw_id_to_name[lb_fw->id], size, min_size); f9ea24fb9528adc Badal Nilawar 2025-06-19 81 return -ENODATA; f9ea24fb9528adc Badal Nilawar 2025-06-19 82 } f9ea24fb9528adc Badal Nilawar 2025-06-19 83 f9ea24fb9528adc Badal Nilawar 2025-06-19 84 /* Look for the manifest first */ f9ea24fb9528adc Badal Nilawar 2025-06-19 85 entry = (void *)header + header->header_length; f9ea24fb9528adc Badal Nilawar 2025-06-19 86 for (i = 0; i < header->num_of_entries; i++, entry++) f9ea24fb9528adc Badal Nilawar 2025-06-19 87 if (strcmp(entry->name, manifest_entry) == 0) f9ea24fb9528adc Badal Nilawar 2025-06-19 88 offset = entry->offset & GSC_CPD_ENTRY_OFFSET_MASK; ^^^^^^^^ Only initialized if found. f9ea24fb9528adc Badal Nilawar 2025-06-19 89 f9ea24fb9528adc Badal Nilawar 2025-06-19 @90 if (!offset) { ^^^^^^ Uninitialized. It's a good idea for developers to set CONFIG_INIT_STACK_ALL_PATTERN=y in their testing. f9ea24fb9528adc Badal Nilawar 2025-06-19 91 drm_err(&xe->drm, "%s late binding fw: Failed to find manifest_entry\n", f9ea24fb9528adc Badal Nilawar 2025-06-19 92 fw_id_to_name[lb_fw->id]); f9ea24fb9528adc Badal Nilawar 2025-06-19 93 return -ENODATA; f9ea24fb9528adc Badal Nilawar 2025-06-19 94 } f9ea24fb9528adc Badal Nilawar 2025-06-19 95 f9ea24fb9528adc Badal Nilawar 2025-06-19 96 min_size = offset + sizeof(struct gsc_manifest_header); f9ea24fb9528adc Badal Nilawar 2025-06-19 97 if (size < min_size) { f9ea24fb9528adc Badal Nilawar 2025-06-19 98 drm_err(&xe->drm, "%s late binding fw: too small! %zu < %zu\n", f9ea24fb9528adc Badal Nilawar 2025-06-19 99 fw_id_to_name[lb_fw->id], size, min_size); f9ea24fb9528adc Badal Nilawar 2025-06-19 100 return -ENODATA; f9ea24fb9528adc Badal Nilawar 2025-06-19 101 } f9ea24fb9528adc Badal Nilawar 2025-06-19 102 f9ea24fb9528adc Badal Nilawar 2025-06-19 103 manifest = data + offset; f9ea24fb9528adc Badal Nilawar 2025-06-19 104 f9ea24fb9528adc Badal Nilawar 2025-06-19 105 lb_fw->version.major = manifest->fw_version.major; f9ea24fb9528adc Badal Nilawar 2025-06-19 106 lb_fw->version.minor = manifest->fw_version.minor; f9ea24fb9528adc Badal Nilawar 2025-06-19 107 lb_fw->version.hotfix = manifest->fw_version.hotfix; f9ea24fb9528adc Badal Nilawar 2025-06-19 108 lb_fw->version.build = manifest->fw_version.build; f9ea24fb9528adc Badal Nilawar 2025-06-19 109 f9ea24fb9528adc Badal Nilawar 2025-06-19 110 return 0; f9ea24fb9528adc Badal Nilawar 2025-06-19 111 } f9ea24fb9528adc Badal Nilawar 2025-06-19 112 f9ea24fb9528adc Badal Nilawar 2025-06-19 113 /* Refer to the "Late Bind based Firmware Layout" documentation entry for details */ f9ea24fb9528adc Badal Nilawar 2025-06-19 114 static int parse_lb_layout(struct xe_late_bind *late_bind, u32 fw_id, f9ea24fb9528adc Badal Nilawar 2025-06-19 115 const void *data, size_t size, const char *fpt_entry) f9ea24fb9528adc Badal Nilawar 2025-06-19 116 { f9ea24fb9528adc Badal Nilawar 2025-06-19 117 struct xe_device *xe = late_bind_to_xe(late_bind); f9ea24fb9528adc Badal Nilawar 2025-06-19 118 const struct csc_fpt_header *header = data; f9ea24fb9528adc Badal Nilawar 2025-06-19 119 const struct csc_fpt_entry *entry; f9ea24fb9528adc Badal Nilawar 2025-06-19 120 size_t min_size = sizeof(*header); f9ea24fb9528adc Badal Nilawar 2025-06-19 121 struct xe_late_bind_fw *lb_fw; f9ea24fb9528adc Badal Nilawar 2025-06-19 122 u32 offset; f9ea24fb9528adc Badal Nilawar 2025-06-19 123 int i; f9ea24fb9528adc Badal Nilawar 2025-06-19 124 f9ea24fb9528adc Badal Nilawar 2025-06-19 125 if (fw_id >= MAX_FW_ID) f9ea24fb9528adc Badal Nilawar 2025-06-19 126 return -EINVAL; f9ea24fb9528adc Badal Nilawar 2025-06-19 127 f9ea24fb9528adc Badal Nilawar 2025-06-19 128 lb_fw = &late_bind->late_bind_fw[fw_id]; f9ea24fb9528adc Badal Nilawar 2025-06-19 129 f9ea24fb9528adc Badal Nilawar 2025-06-19 130 /* fpt_entry is mandatory */ f9ea24fb9528adc Badal Nilawar 2025-06-19 131 xe_assert(xe, fpt_entry); f9ea24fb9528adc Badal Nilawar 2025-06-19 132 f9ea24fb9528adc Badal Nilawar 2025-06-19 133 if (size < min_size || header->header_marker != CSC_FPT_HEADER_MARKER) f9ea24fb9528adc Badal Nilawar 2025-06-19 134 return -ENOENT; f9ea24fb9528adc Badal Nilawar 2025-06-19 135 f9ea24fb9528adc Badal Nilawar 2025-06-19 136 if (header->header_length < sizeof(struct csc_fpt_header)) { f9ea24fb9528adc Badal Nilawar 2025-06-19 137 drm_err(&xe->drm, "%s late binding fw: Invalid FPT header length %u!\n", f9ea24fb9528adc Badal Nilawar 2025-06-19 138 fw_id_to_name[lb_fw->id], header->header_length); f9ea24fb9528adc Badal Nilawar 2025-06-19 139 return -EINVAL; f9ea24fb9528adc Badal Nilawar 2025-06-19 140 } f9ea24fb9528adc Badal Nilawar 2025-06-19 141 f9ea24fb9528adc Badal Nilawar 2025-06-19 142 min_size = header->header_length + sizeof(struct csc_fpt_entry) * header->num_of_entries; f9ea24fb9528adc Badal Nilawar 2025-06-19 143 if (size < min_size) { f9ea24fb9528adc Badal Nilawar 2025-06-19 144 drm_err(&xe->drm, "%s late binding fw: too small! %zu < %zu\n", f9ea24fb9528adc Badal Nilawar 2025-06-19 145 fw_id_to_name[lb_fw->id], size, min_size); f9ea24fb9528adc Badal Nilawar 2025-06-19 146 return -ENODATA; f9ea24fb9528adc Badal Nilawar 2025-06-19 147 } f9ea24fb9528adc Badal Nilawar 2025-06-19 148 f9ea24fb9528adc Badal Nilawar 2025-06-19 149 /* Look for the manifest first */ f9ea24fb9528adc Badal Nilawar 2025-06-19 150 entry = (void *)header + header->header_length; f9ea24fb9528adc Badal Nilawar 2025-06-19 151 for (i = 0; i < header->num_of_entries; i++, entry++) f9ea24fb9528adc Badal Nilawar 2025-06-19 152 if (strcmp(entry->name, fpt_entry) == 0) f9ea24fb9528adc Badal Nilawar 2025-06-19 153 offset = entry->offset; f9ea24fb9528adc Badal Nilawar 2025-06-19 154 f9ea24fb9528adc Badal Nilawar 2025-06-19 @155 if (!offset) { Same. f9ea24fb9528adc Badal Nilawar 2025-06-19 156 drm_err(&xe->drm, "%s late binding fw: Failed to find fpt_entry\n", f9ea24fb9528adc Badal Nilawar 2025-06-19 157 fw_id_to_name[lb_fw->id]); f9ea24fb9528adc Badal Nilawar 2025-06-19 158 return -ENODATA; f9ea24fb9528adc Badal Nilawar 2025-06-19 159 } f9ea24fb9528adc Badal Nilawar 2025-06-19 160 f9ea24fb9528adc Badal Nilawar 2025-06-19 161 min_size = offset + sizeof(struct gsc_cpd_header_v2); f9ea24fb9528adc Badal Nilawar 2025-06-19 162 if (size < min_size) { f9ea24fb9528adc Badal Nilawar 2025-06-19 163 drm_err(&xe->drm, "%s late binding fw: too small! %zu < %zu\n", f9ea24fb9528adc Badal Nilawar 2025-06-19 164 fw_id_to_name[lb_fw->id], size, min_size); f9ea24fb9528adc Badal Nilawar 2025-06-19 165 return -ENODATA; f9ea24fb9528adc Badal Nilawar 2025-06-19 166 } f9ea24fb9528adc Badal Nilawar 2025-06-19 167 f9ea24fb9528adc Badal Nilawar 2025-06-19 168 return parse_cpd_header(late_bind, fw_id, data + offset, size - offset, "LTES.man"); f9ea24fb9528adc Badal Nilawar 2025-06-19 169 } -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki