summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/misc/cxl/base.c13
-rw-r--r--drivers/misc/cxl/cxl.h12
-rw-r--r--include/misc/cxl-base.h4
3 files changed, 17 insertions, 12 deletions
diff --git a/drivers/misc/cxl/base.c b/drivers/misc/cxl/base.c
index 2330980bdde2..7557835cdfcd 100644
--- a/drivers/misc/cxl/base.c
+++ b/drivers/misc/cxl/base.c
@@ -54,6 +54,19 @@ static inline void cxl_calls_put(struct cxl_calls *calls) { }
54 54
55#endif /* CONFIG_CXL_MODULE */ 55#endif /* CONFIG_CXL_MODULE */
56 56
57/* AFU refcount management */
58struct cxl_afu *cxl_afu_get(struct cxl_afu *afu)
59{
60 return (get_device(&afu->dev) == NULL) ? NULL : afu;
61}
62EXPORT_SYMBOL_GPL(cxl_afu_get);
63
64void cxl_afu_put(struct cxl_afu *afu)
65{
66 put_device(&afu->dev);
67}
68EXPORT_SYMBOL_GPL(cxl_afu_put);
69
57void cxl_slbia(struct mm_struct *mm) 70void cxl_slbia(struct mm_struct *mm)
58{ 71{
59 struct cxl_calls *calls; 72 struct cxl_calls *calls;
diff --git a/drivers/misc/cxl/cxl.h b/drivers/misc/cxl/cxl.h
index 36b3237fc2b1..d4aae6f855a8 100644
--- a/drivers/misc/cxl/cxl.h
+++ b/drivers/misc/cxl/cxl.h
@@ -440,18 +440,6 @@ struct cxl_afu {
440 bool enabled; 440 bool enabled;
441}; 441};
442 442
443/* AFU refcount management */
444static inline struct cxl_afu *cxl_afu_get(struct cxl_afu *afu)
445{
446
447 return (get_device(&afu->dev) == NULL) ? NULL : afu;
448}
449
450static inline void cxl_afu_put(struct cxl_afu *afu)
451{
452 put_device(&afu->dev);
453}
454
455 443
456struct cxl_irq_name { 444struct cxl_irq_name {
457 struct list_head list; 445 struct list_head list;
diff --git a/include/misc/cxl-base.h b/include/misc/cxl-base.h
index 5ae962512fb8..f53808fa638a 100644
--- a/include/misc/cxl-base.h
+++ b/include/misc/cxl-base.h
@@ -36,11 +36,15 @@ static inline void cxl_ctx_put(void)
36 atomic_dec(&cxl_use_count); 36 atomic_dec(&cxl_use_count);
37} 37}
38 38
39struct cxl_afu *cxl_afu_get(struct cxl_afu *afu);
40void cxl_afu_put(struct cxl_afu *afu);
39void cxl_slbia(struct mm_struct *mm); 41void cxl_slbia(struct mm_struct *mm);
40 42
41#else /* CONFIG_CXL_BASE */ 43#else /* CONFIG_CXL_BASE */
42 44
43static inline bool cxl_ctx_in_use(void) { return false; } 45static inline bool cxl_ctx_in_use(void) { return false; }
46static inline struct cxl_afu *cxl_afu_get(struct cxl_afu *afu) { return NULL; }
47static inline void cxl_afu_put(struct cxl_afu *afu) {}
44static inline void cxl_slbia(struct mm_struct *mm) {} 48static inline void cxl_slbia(struct mm_struct *mm) {}
45 49
46#endif /* CONFIG_CXL_BASE */ 50#endif /* CONFIG_CXL_BASE */