11#ifndef __INCLUDE_DAO_PEM_H__ 
   12#define __INCLUDE_DAO_PEM_H__ 
   24#include <rte_cycles.h> 
   26#include <rte_hexdump.h> 
   41#define DAO_PEM_CTRL_REGION_MAX 384 
   44#define DAO_PEM_CTRL_REGION_MASK_MAX (RTE_ALIGN(DAO_PEM_CTRL_REGION_MAX, 64) / 64) 
   47#define DAO_PEM_DEFAULT_HOST_PAGE_SZ (64 * 1024UL) 
   49#define DAO_PEM_MAX_VFS 128 
   52#define PEM_PFVF_DEV_ID_PF_MASK 0xF000 
   54#define PEM_PFVF_DEV_ID_PF_SHIFT 12 
   56#define PEM_PFVF_DEV_ID_VF_MASK 0x0FFF 
   58#define PEM_PFVF_DEV_ID_VF_SHIFT 0 
   61#define DAO_PEM_DEV_ID_MAX 2 
  148                   uint64_t *addr, uint64_t *size);
 
int dao_pem_host_dev_add(uint16_t pem_devid, int vfid)
 
int dao_pem_dev_fini(uint16_t pem_devid)
 
int dao_pem_host_dev_del(uint16_t pem_devid, int vfid)
 
uint16_t dao_pem_max_vfs_get(uint16_t pem_devid)
 
int dao_pem_ctrl_region_unregister(uint16_t pem_devid, uintptr_t base, uint32_t len, dao_pem_ctrl_region_cb_t cb, void *ctx)
 
int(* dao_pem_ctrl_region_cb_t)(void *ctx, uintptr_t shadow, uint32_t off, uint64_t val, uint64_t shadow_val)
 
int dao_pem_dev_init(uint16_t pem_devid, struct dao_pem_dev_conf *conf)
 
int dao_pem_vf_region_info_get(uint16_t pem_devid, uint16_t dev_id, uint8_t bar_idx, uint64_t *addr, uint64_t *size)
 
size_t dao_pem_host_page_sz(uint16_t pem_devid)
 
int dao_pem_ctrl_region_register(uint16_t pem_devid, uintptr_t base, uint32_t len, dao_pem_ctrl_region_cb_t cb, void *ctx, bool sync_shadow)
 
uint8_t dao_pem_host_interrupt_setup(uint16_t pem_devid, int vfid, uint64_t **intr_addr)