diff options
Diffstat (limited to 'drivers/misc/habanalabs/common/asid.c')
-rw-r--r-- | drivers/misc/habanalabs/common/asid.c | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/drivers/misc/habanalabs/common/asid.c b/drivers/misc/habanalabs/common/asid.c deleted file mode 100644 index c9c2619cc43d..000000000000 --- a/drivers/misc/habanalabs/common/asid.c +++ /dev/null @@ -1,58 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 - -/* - * Copyright 2016-2019 HabanaLabs, Ltd. - * All Rights Reserved. - */ - -#include "habanalabs.h" - -#include <linux/slab.h> - -int hl_asid_init(struct hl_device *hdev) -{ - hdev->asid_bitmap = bitmap_zalloc(hdev->asic_prop.max_asid, GFP_KERNEL); - if (!hdev->asid_bitmap) - return -ENOMEM; - - mutex_init(&hdev->asid_mutex); - - /* ASID 0 is reserved for the kernel driver and device CPU */ - set_bit(0, hdev->asid_bitmap); - - return 0; -} - -void hl_asid_fini(struct hl_device *hdev) -{ - mutex_destroy(&hdev->asid_mutex); - bitmap_free(hdev->asid_bitmap); -} - -unsigned long hl_asid_alloc(struct hl_device *hdev) -{ - unsigned long found; - - mutex_lock(&hdev->asid_mutex); - - found = find_first_zero_bit(hdev->asid_bitmap, - hdev->asic_prop.max_asid); - if (found == hdev->asic_prop.max_asid) - found = 0; - else - set_bit(found, hdev->asid_bitmap); - - mutex_unlock(&hdev->asid_mutex); - - return found; -} - -void hl_asid_free(struct hl_device *hdev, unsigned long asid) -{ - if (asid == HL_KERNEL_ASID_ID || asid >= hdev->asic_prop.max_asid) { - dev_crit(hdev->dev, "Invalid ASID %lu", asid); - return; - } - - clear_bit(asid, hdev->asid_bitmap); -} |