Data Accelerator Offload
Loading...
Searching...
No Matches
dao_pem.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: Marvell-MIT
2 * Copyright (c) 2023 Marvell.
3 */
4
11#ifndef __INCLUDE_DAO_PEM_H__
12#define __INCLUDE_DAO_PEM_H__
13
14#include <fcntl.h>
15#include <inttypes.h>
16#include <stdint.h>
17#include <stdio.h>
18#include <stdlib.h>
19#include <sys/mman.h>
20#include <sys/stat.h>
21#include <sys/types.h>
22#include <unistd.h>
23
24#include <rte_cycles.h>
25#include <rte_eal.h>
26#include <rte_hexdump.h>
27#include <rte_lcore.h>
28#include <rte_mbuf.h>
29
39
40/* End of structure dao_pem_dev_conf. */
41
43#define DAO_PEM_CTRL_REGION_MAX 384
44
46#define DAO_PEM_CTRL_REGION_MASK_MAX (RTE_ALIGN(DAO_PEM_CTRL_REGION_MAX, 64) / 64)
47
49#define DAO_PEM_DEFAULT_HOST_PAGE_SZ (64 * 1024UL)
51#define DAO_PEM_MAX_VFS 128
52
54#define PEM_PFVF_DEV_ID_PF_MASK 0xF000
56#define PEM_PFVF_DEV_ID_PF_SHIFT 12
58#define PEM_PFVF_DEV_ID_VF_MASK 0x0FFF
60#define PEM_PFVF_DEV_ID_VF_SHIFT 0
61
63#define DAO_PEM_DEV_ID_MAX 2
64
75int dao_pem_dev_init(uint16_t pem_devid, struct dao_pem_dev_conf *conf);
76
85int dao_pem_dev_fini(uint16_t pem_devid);
86
88typedef int (*dao_pem_ctrl_region_cb_t)(void *ctx, uintptr_t shadow, uint32_t off, uint64_t val,
89 uint64_t shadow_val);
90
112int dao_pem_ctrl_region_register(uint16_t pem_devid, uintptr_t base, uint32_t len,
113 dao_pem_ctrl_region_cb_t cb, void *ctx, bool sync_shadow);
130int dao_pem_ctrl_region_unregister(uint16_t pem_devid, uintptr_t base, uint32_t len,
131 dao_pem_ctrl_region_cb_t cb, void *ctx);
132
149int dao_pem_vf_region_info_get(uint16_t pem_devid, uint16_t dev_id, uint8_t bar_idx,
150 uint64_t *addr, uint64_t *size);
151
160size_t dao_pem_host_page_sz(uint16_t pem_devid);
161
176uint8_t dao_pem_host_interrupt_setup(uint16_t pem_devid, int vfid, uint64_t **intr_addr,
177 uint64_t **ack_addr);
178
187uint16_t dao_pem_max_vfs_get(uint16_t pem_devid);
188
199int dao_pem_host_dev_add(uint16_t pem_devid, int vfid);
200
211int dao_pem_host_dev_del(uint16_t pem_devid, int vfid);
212
227int dao_pem_sdp_reg_write(uint16_t pem_devid, uint64_t offset, uint64_t value);
228
243int dao_pem_sdp_reg_read(uint16_t pem_devid, uint64_t offset, uint64_t *value);
244
245#endif /* __INCLUDE_DAO_PEM_H__ */
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)
int dao_pem_sdp_reg_read(uint16_t pem_devid, uint64_t offset, uint64_t *value)
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)
Definition dao_pem.h:88
int dao_pem_sdp_reg_write(uint16_t pem_devid, uint64_t offset, uint64_t value)
uint8_t dao_pem_host_interrupt_setup(uint16_t pem_devid, int vfid, uint64_t **intr_addr, uint64_t **ack_addr)
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)
uint16_t virtio_dev_count
Definition dao_pem.h:37
size_t host_page_sz
Definition dao_pem.h:33