int hl_hwmon_init(struct hl_device *hdev);
 void hl_hwmon_fini(struct hl_device *hdev);
+void hl_hwmon_release_resources(struct hl_device *hdev);
 
 int hl_cb_create(struct hl_device *hdev, struct hl_mem_mgr *mmg,
                        struct hl_ctx *ctx, u32 cb_size, bool internal_cb,
 
 
        hwmon_device_unregister(hdev->hwmon_dev);
 }
+
+void hl_hwmon_release_resources(struct hl_device *hdev)
+{
+       const struct hwmon_channel_info **channel_info_arr;
+       int i = 0;
+
+       if (!hdev->hl_chip_info->info)
+               return;
+
+       channel_info_arr = hdev->hl_chip_info->info;
+
+       while (channel_info_arr[i]) {
+               kfree(channel_info_arr[i]->config);
+               kfree(channel_info_arr[i]);
+               i++;
+       }
+
+       kfree(channel_info_arr);
+
+       hdev->hl_chip_info->info = NULL;
+}
 
 
 static void gaudi_late_fini(struct hl_device *hdev)
 {
-       const struct hwmon_channel_info **channel_info_arr;
-       int i = 0;
-
-       if (!hdev->hl_chip_info->info)
-               return;
-
-       channel_info_arr = hdev->hl_chip_info->info;
-
-       while (channel_info_arr[i]) {
-               kfree(channel_info_arr[i]->config);
-               kfree(channel_info_arr[i]);
-               i++;
-       }
-
-       kfree(channel_info_arr);
-
-       hdev->hl_chip_info->info = NULL;
+       hl_hwmon_release_resources(hdev);
 }
 
 static int gaudi_alloc_cpu_accessible_dma_mem(struct hl_device *hdev)
 
 
 static void gaudi2_late_fini(struct hl_device *hdev)
 {
-       const struct hwmon_channel_info **channel_info_arr;
-       int i = 0;
-
-       if (!hdev->hl_chip_info->info)
-               return;
-
-       channel_info_arr = hdev->hl_chip_info->info;
-
-       while (channel_info_arr[i]) {
-               kfree(channel_info_arr[i]->config);
-               kfree(channel_info_arr[i]);
-               i++;
-       }
-
-       kfree(channel_info_arr);
-
-       hdev->hl_chip_info->info = NULL;
+       hl_hwmon_release_resources(hdev);
 }
 
 static void gaudi2_user_mapped_dec_init(struct gaudi2_device *gaudi2, u32 start_idx)
 
  */
 void goya_late_fini(struct hl_device *hdev)
 {
-       const struct hwmon_channel_info **channel_info_arr;
        struct goya_device *goya = hdev->asic_specific;
-       int i = 0;
 
        cancel_delayed_work_sync(&goya->goya_work->work_freq);
 
-       if (!hdev->hl_chip_info->info)
-               return;
-
-       channel_info_arr = hdev->hl_chip_info->info;
-
-       while (channel_info_arr[i]) {
-               kfree(channel_info_arr[i]->config);
-               kfree(channel_info_arr[i]);
-               i++;
-       }
-
-       kfree(channel_info_arr);
-
-       hdev->hl_chip_info->info = NULL;
+       hl_hwmon_release_resources(hdev);
 }
 
 static void goya_set_pci_memory_regions(struct hl_device *hdev)