 9bbb8d3577
			
		
	
	
		9bbb8d3577
		
	
	
	
	
		
			
			To avoid compilation warnings on 32-bit machines: rdma_backend.c: In function 'rdma_backend_create_mr': rdma_backend.c:409:37: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] mr->ibmr = ibv_reg_mr(pd->ibpd, (void *)addr, length, access); Reported-by: Eric Blake <eblake@redhat.com> Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com> Reviewed-by: Eric Blake <eblake@redhat.com> Tested-by: Eric Blake <eblake@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20180322095220.9976-2-yuval.shaia@oracle.com> Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
		
			
				
	
	
		
			105 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * RDMA device: Definitions of Resource Manager structures
 | |
|  *
 | |
|  * Copyright (C) 2018 Oracle
 | |
|  * Copyright (C) 2018 Red Hat Inc
 | |
|  *
 | |
|  * Authors:
 | |
|  *     Yuval Shaia <yuval.shaia@oracle.com>
 | |
|  *     Marcel Apfelbaum <marcel@redhat.com>
 | |
|  *
 | |
|  * This work is licensed under the terms of the GNU GPL, version 2 or later.
 | |
|  * See the COPYING file in the top-level directory.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef RDMA_RM_DEFS_H
 | |
| #define RDMA_RM_DEFS_H
 | |
| 
 | |
| #include "rdma_backend_defs.h"
 | |
| 
 | |
| #define MAX_PORTS             1
 | |
| #define MAX_PORT_GIDS         1
 | |
| #define MAX_PORT_PKEYS        1
 | |
| #define MAX_PKEYS             1
 | |
| #define MAX_GIDS              2048
 | |
| #define MAX_UCS               512
 | |
| #define MAX_MR_SIZE           (1UL << 27)
 | |
| #define MAX_QP                1024
 | |
| #define MAX_SGE               4
 | |
| #define MAX_CQ                2048
 | |
| #define MAX_MR                1024
 | |
| #define MAX_PD                1024
 | |
| #define MAX_QP_RD_ATOM        16
 | |
| #define MAX_QP_INIT_RD_ATOM   16
 | |
| #define MAX_AH                64
 | |
| 
 | |
| #define MAX_RMRESTBL_NAME_SZ 16
 | |
| typedef struct RdmaRmResTbl {
 | |
|     char name[MAX_RMRESTBL_NAME_SZ];
 | |
|     QemuMutex lock;
 | |
|     unsigned long *bitmap;
 | |
|     size_t tbl_sz;
 | |
|     size_t res_sz;
 | |
|     void *tbl;
 | |
| } RdmaRmResTbl;
 | |
| 
 | |
| typedef struct RdmaRmPD {
 | |
|     RdmaBackendPD backend_pd;
 | |
|     uint32_t ctx_handle;
 | |
| } RdmaRmPD;
 | |
| 
 | |
| typedef struct RdmaRmCQ {
 | |
|     RdmaBackendCQ backend_cq;
 | |
|     void *opaque;
 | |
|     bool notify;
 | |
| } RdmaRmCQ;
 | |
| 
 | |
| typedef struct RdmaRmUserMR {
 | |
|     void *host_virt;
 | |
|     uint64_t guest_start;
 | |
|     size_t length;
 | |
| } RdmaRmUserMR;
 | |
| 
 | |
| /* MR (DMA region) */
 | |
| typedef struct RdmaRmMR {
 | |
|     RdmaBackendMR backend_mr;
 | |
|     RdmaRmUserMR user_mr;
 | |
|     uint32_t pd_handle;
 | |
|     uint32_t lkey;
 | |
|     uint32_t rkey;
 | |
| } RdmaRmMR;
 | |
| 
 | |
| typedef struct RdmaRmUC {
 | |
|     uint64_t uc_handle;
 | |
| } RdmaRmUC;
 | |
| 
 | |
| typedef struct RdmaRmQP {
 | |
|     RdmaBackendQP backend_qp;
 | |
|     void *opaque;
 | |
|     uint32_t qp_type;
 | |
|     uint32_t qpn;
 | |
|     uint32_t send_cq_handle;
 | |
|     uint32_t recv_cq_handle;
 | |
|     enum ibv_qp_state qp_state;
 | |
| } RdmaRmQP;
 | |
| 
 | |
| typedef struct RdmaRmPort {
 | |
|     union ibv_gid gid_tbl[MAX_PORT_GIDS];
 | |
|     enum ibv_port_state state;
 | |
|     int *pkey_tbl; /* TODO: Not yet supported */
 | |
| } RdmaRmPort;
 | |
| 
 | |
| typedef struct RdmaDeviceResources {
 | |
|     RdmaRmPort ports[MAX_PORTS];
 | |
|     RdmaRmResTbl pd_tbl;
 | |
|     RdmaRmResTbl mr_tbl;
 | |
|     RdmaRmResTbl uc_tbl;
 | |
|     RdmaRmResTbl qp_tbl;
 | |
|     RdmaRmResTbl cq_tbl;
 | |
|     RdmaRmResTbl cqe_ctx_tbl;
 | |
|     GHashTable *qp_hash; /* Keeps mapping between real and emulated */
 | |
| } RdmaDeviceResources;
 | |
| 
 | |
| #endif
 |