| .. | .. |
|---|
| 1 | 1 | // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note |
|---|
| 2 | 2 | /* |
|---|
| 3 | 3 | * |
|---|
| 4 | | - * (C) COPYRIGHT 2020-2021 ARM Limited. All rights reserved. |
|---|
| 4 | + * (C) COPYRIGHT 2020-2022 ARM Limited. All rights reserved. |
|---|
| 5 | 5 | * |
|---|
| 6 | 6 | * This program is free software and is provided to you under the terms of the |
|---|
| 7 | 7 | * GNU General Public License version 2 as published by the Free Software |
|---|
| .. | .. |
|---|
| 21 | 21 | |
|---|
| 22 | 22 | #include <linux/atomic.h> |
|---|
| 23 | 23 | #include <linux/list.h> |
|---|
| 24 | | -#include <mali_kbase_fence_defs.h> |
|---|
| 24 | +#include <mali_kbase_fence.h> |
|---|
| 25 | 25 | #include <mali_kbase.h> |
|---|
| 26 | 26 | |
|---|
| 27 | 27 | static const char * |
|---|
| .. | .. |
|---|
| 41 | 41 | kbase_fence_get_timeline_name(struct dma_fence *fence) |
|---|
| 42 | 42 | #endif |
|---|
| 43 | 43 | { |
|---|
| 44 | +#if MALI_USE_CSF |
|---|
| 45 | + struct kbase_kcpu_dma_fence *kcpu_fence = (struct kbase_kcpu_dma_fence *)fence; |
|---|
| 46 | + |
|---|
| 47 | + return kcpu_fence->metadata->timeline_name; |
|---|
| 48 | +#else |
|---|
| 44 | 49 | return kbase_timeline_name; |
|---|
| 50 | +#endif /* MALI_USE_CSF */ |
|---|
| 45 | 51 | } |
|---|
| 46 | 52 | |
|---|
| 47 | 53 | static bool |
|---|
| .. | .. |
|---|
| 62 | 68 | #endif |
|---|
| 63 | 69 | { |
|---|
| 64 | 70 | #if (KERNEL_VERSION(5, 1, 0) > LINUX_VERSION_CODE) |
|---|
| 65 | | - snprintf(str, size, "%u", fence->seqno); |
|---|
| 71 | + const char *format = "%u"; |
|---|
| 66 | 72 | #else |
|---|
| 67 | | - snprintf(str, size, "%llu", fence->seqno); |
|---|
| 73 | + const char *format = "%llu"; |
|---|
| 68 | 74 | #endif |
|---|
| 75 | + if (unlikely(!scnprintf(str, size, format, fence->seqno))) |
|---|
| 76 | + pr_err("Fail to encode fence seqno to string"); |
|---|
| 69 | 77 | } |
|---|
| 70 | 78 | |
|---|
| 79 | +#if MALI_USE_CSF |
|---|
| 80 | +static void |
|---|
| 71 | 81 | #if (KERNEL_VERSION(4, 10, 0) > LINUX_VERSION_CODE) |
|---|
| 72 | | -const struct fence_ops kbase_fence_ops = { |
|---|
| 73 | | - .wait = fence_default_wait, |
|---|
| 82 | +kbase_fence_release(struct fence *fence) |
|---|
| 74 | 83 | #else |
|---|
| 75 | | -const struct dma_fence_ops kbase_fence_ops = { |
|---|
| 76 | | - .wait = dma_fence_default_wait, |
|---|
| 84 | +kbase_fence_release(struct dma_fence *fence) |
|---|
| 77 | 85 | #endif |
|---|
| 78 | | - .get_driver_name = kbase_fence_get_driver_name, |
|---|
| 79 | | - .get_timeline_name = kbase_fence_get_timeline_name, |
|---|
| 80 | | - .enable_signaling = kbase_fence_enable_signaling, |
|---|
| 81 | | - .fence_value_str = kbase_fence_fence_value_str |
|---|
| 82 | | -}; |
|---|
| 86 | +{ |
|---|
| 87 | + struct kbase_kcpu_dma_fence *kcpu_fence = (struct kbase_kcpu_dma_fence *)fence; |
|---|
| 83 | 88 | |
|---|
| 89 | + kbase_kcpu_dma_fence_meta_put(kcpu_fence->metadata); |
|---|
| 90 | + kfree(kcpu_fence); |
|---|
| 91 | +} |
|---|
| 92 | +#endif |
|---|
| 93 | + |
|---|
| 94 | +#if (KERNEL_VERSION(4, 10, 0) > LINUX_VERSION_CODE) |
|---|
| 95 | +extern const struct fence_ops kbase_fence_ops; /* silence checker warning */ |
|---|
| 96 | +const struct fence_ops kbase_fence_ops = { .wait = fence_default_wait, |
|---|
| 97 | +#else |
|---|
| 98 | +extern const struct dma_fence_ops kbase_fence_ops; /* silence checker warning */ |
|---|
| 99 | +const struct dma_fence_ops kbase_fence_ops = { .wait = dma_fence_default_wait, |
|---|
| 100 | +#endif |
|---|
| 101 | + .get_driver_name = kbase_fence_get_driver_name, |
|---|
| 102 | + .get_timeline_name = kbase_fence_get_timeline_name, |
|---|
| 103 | + .enable_signaling = kbase_fence_enable_signaling, |
|---|
| 104 | +#if MALI_USE_CSF |
|---|
| 105 | + .fence_value_str = kbase_fence_fence_value_str, |
|---|
| 106 | + .release = kbase_fence_release |
|---|
| 107 | +#else |
|---|
| 108 | + .fence_value_str = kbase_fence_fence_value_str |
|---|
| 109 | +#endif |
|---|
| 110 | +}; |
|---|
| 111 | +KBASE_EXPORT_TEST_API(kbase_fence_ops); |
|---|