Commit 07ecaa0d authored by Dani Liberman's avatar Dani Liberman Committed by Oded Gabbay
Browse files

habanalabs: unify hwmon resources clean up



Since hwmon fini code is common for all asics, unified it to common
function.

Signed-off-by: default avatarDani Liberman <dliberman@habana.ai>
Reviewed-by: default avatarOded Gabbay <ogabbay@kernel.org>
Signed-off-by: default avatarOded Gabbay <ogabbay@kernel.org>
parent 194e515c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3529,6 +3529,7 @@ void hl_sysfs_fini(struct hl_device *hdev);

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,
+21 −0
Original line number Diff line number Diff line
@@ -910,3 +910,24 @@ void hl_hwmon_fini(struct hl_device *hdev)

	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;
}
+1 −17
Original line number Diff line number Diff line
@@ -1682,23 +1682,7 @@ static int gaudi_late_init(struct hl_device *hdev)

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)
+1 −17
Original line number Diff line number Diff line
@@ -2711,23 +2711,7 @@ static int gaudi2_late_init(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)
+1 −16
Original line number Diff line number Diff line
@@ -916,26 +916,11 @@ int goya_late_init(struct hl_device *hdev)
 */
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)