habanalabs: unify hwmon resources clean up
Since hwmon fini code is common for all asics, unified it to common function. Signed-off-by: Dani Liberman <dliberman@habana.ai> Reviewed-by: Oded Gabbay <ogabbay@kernel.org> Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
This commit is contained in:
parent
194e515c79
commit
07ecaa0d85
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -1682,23 +1682,7 @@ disable_pci_access:
|
||||
|
||||
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)
|
||||
|
@ -2711,23 +2711,7 @@ disable_pci_access:
|
||||
|
||||
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)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user