root/include/misc/cxl-base.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. cxl_ctx_in_use
  2. cxl_ctx_get
  3. cxl_ctx_put
  4. cxl_ctx_in_use
  5. cxl_afu_get
  6. cxl_afu_put
  7. cxl_slbia

   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * Copyright 2014 IBM Corp.
   4  */
   5 
   6 #ifndef _MISC_CXL_BASE_H
   7 #define _MISC_CXL_BASE_H
   8 
   9 #ifdef CONFIG_CXL_BASE
  10 
  11 #define CXL_IRQ_RANGES 4
  12 
  13 struct cxl_irq_ranges {
  14         irq_hw_number_t offset[CXL_IRQ_RANGES];
  15         irq_hw_number_t range[CXL_IRQ_RANGES];
  16 };
  17 
  18 extern atomic_t cxl_use_count;
  19 
  20 static inline bool cxl_ctx_in_use(void)
  21 {
  22        return (atomic_read(&cxl_use_count) != 0);
  23 }
  24 
  25 static inline void cxl_ctx_get(void)
  26 {
  27        atomic_inc(&cxl_use_count);
  28 }
  29 
  30 static inline void cxl_ctx_put(void)
  31 {
  32        atomic_dec(&cxl_use_count);
  33 }
  34 
  35 struct cxl_afu *cxl_afu_get(struct cxl_afu *afu);
  36 void cxl_afu_put(struct cxl_afu *afu);
  37 void cxl_slbia(struct mm_struct *mm);
  38 
  39 #else /* CONFIG_CXL_BASE */
  40 
  41 static inline bool cxl_ctx_in_use(void) { return false; }
  42 static inline struct cxl_afu *cxl_afu_get(struct cxl_afu *afu) { return NULL; }
  43 static inline void cxl_afu_put(struct cxl_afu *afu) {}
  44 static inline void cxl_slbia(struct mm_struct *mm) {}
  45 
  46 #endif /* CONFIG_CXL_BASE */
  47 
  48 #endif

/* [<][>][^][v][top][bottom][index][help] */