SPDK: Support configuring libpciaccess library
With CONFIG_PCIACCESS=y in CONFIG file, we can use libpciaccess library; With CONFIG_PCIACCESS=n in CONFIG file, we use pciaccess functions provided in DPDK. Change-Id: I786c5589b8e7909ba2e59d222938dd5ba45bf92d Signed-off-by: Ziye Yang <ziye.yang@intel.com>
This commit is contained in:
parent
8374a727a9
commit
ff6125195c
5
CONFIG
5
CONFIG
@ -49,3 +49,8 @@ CONFIG_NVME_IMPL?=nvme_impl.h
|
|||||||
# Header file to use for IOAT implementation specific functions.
|
# Header file to use for IOAT implementation specific functions.
|
||||||
# Defaults to depending on DPDK.
|
# Defaults to depending on DPDK.
|
||||||
CONFIG_IOAT_IMPL?=ioat_impl.h
|
CONFIG_IOAT_IMPL?=ioat_impl.h
|
||||||
|
|
||||||
|
# This item indicates using libpciaccess library or not. If enabled with y,
|
||||||
|
# libpciaccess library is used to map pci devices; else DPDK library is used to
|
||||||
|
# map pci devices.
|
||||||
|
CONFIG_PCIACCESS?=y
|
||||||
|
@ -44,7 +44,7 @@ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/ioat/libspdk_ioat.a \
|
|||||||
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
||||||
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
||||||
|
|
||||||
LIBS += $(SPDK_LIBS) -lpciaccess -lpthread $(DPDK_LIB) -lrt
|
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) -lpthread $(DPDK_LIB) -lrt
|
||||||
|
|
||||||
all: $(APP)
|
all: $(APP)
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/ioat/libspdk_ioat.a \
|
|||||||
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
||||||
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
||||||
|
|
||||||
LIBS += $(SPDK_LIBS) -lpciaccess -lpthread $(DPDK_LIB) -lrt
|
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) -lpthread $(DPDK_LIB) -lrt
|
||||||
|
|
||||||
all: $(APP)
|
all: $(APP)
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
|
|||||||
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
||||||
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
||||||
|
|
||||||
LIBS += $(SPDK_LIBS) -lpciaccess -lpthread $(DPDK_LIB) -lrt
|
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) -lpthread $(DPDK_LIB) -lrt
|
||||||
|
|
||||||
all : $(APP)
|
all : $(APP)
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
|
|||||||
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
||||||
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
||||||
|
|
||||||
LIBS += $(SPDK_LIBS) -lpciaccess -lpthread $(DPDK_LIB) -lrt
|
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) -lpthread $(DPDK_LIB) -lrt
|
||||||
|
|
||||||
ifeq ($(OS),Linux)
|
ifeq ($(OS),Linux)
|
||||||
LIBS += -laio
|
LIBS += -laio
|
||||||
|
@ -44,7 +44,7 @@ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
|
|||||||
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
||||||
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
||||||
|
|
||||||
LIBS += $(SPDK_LIBS) -lpciaccess -lpthread $(DPDK_LIB) -lrt
|
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) -lpthread $(DPDK_LIB) -lrt
|
||||||
|
|
||||||
all : $(APP)
|
all : $(APP)
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#ifndef SPDK_PCI_H
|
#ifndef SPDK_PCI_H
|
||||||
#define SPDK_PCI_H
|
#define SPDK_PCI_H
|
||||||
|
|
||||||
|
#ifdef USE_PCIACCESS
|
||||||
#define spdk_pci_device_get_domain(dev) (dev->domain)
|
#define spdk_pci_device_get_domain(dev) (dev->domain)
|
||||||
#define spdk_pci_device_get_bus(dev) (dev->bus)
|
#define spdk_pci_device_get_bus(dev) (dev->bus)
|
||||||
#define spdk_pci_device_get_dev(pdev) (pdev->dev)
|
#define spdk_pci_device_get_dev(pdev) (pdev->dev)
|
||||||
@ -42,6 +43,7 @@
|
|||||||
#define spdk_pci_device_get_device_id(dev) (dev->device_id)
|
#define spdk_pci_device_get_device_id(dev) (dev->device_id)
|
||||||
#define spdk_pci_device_get_subvendor_id(dev) (dev->subvendor_id)
|
#define spdk_pci_device_get_subvendor_id(dev) (dev->subvendor_id)
|
||||||
#define spdk_pci_device_get_subdevice_id(dev) (dev->subdevice_id)
|
#define spdk_pci_device_get_subdevice_id(dev) (dev->subdevice_id)
|
||||||
|
#endif
|
||||||
|
|
||||||
#define PCI_CFG_SIZE 256
|
#define PCI_CFG_SIZE 256
|
||||||
#define PCI_EXT_CAP_ID_SN 0x03
|
#define PCI_EXT_CAP_ID_SN 0x03
|
||||||
|
@ -60,6 +60,7 @@ ioat_zmalloc(const char *tag, size_t size, unsigned align, uint64_t *phys_addr)
|
|||||||
*/
|
*/
|
||||||
#define ioat_printf(chan, fmt, args...) printf(fmt, ##args)
|
#define ioat_printf(chan, fmt, args...) printf(fmt, ##args)
|
||||||
|
|
||||||
|
#ifdef USE_PCIACCESS
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -83,6 +84,7 @@ ioat_pcicfg_unmap_bar(void *devhandle, uint32_t bar, void *addr)
|
|||||||
|
|
||||||
return pci_device_unmap_range(dev, addr, dev->regions[bar].size);
|
return pci_device_unmap_range(dev, addr, dev->regions[bar].size);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef pthread_mutex_t ioat_mutex_t;
|
typedef pthread_mutex_t ioat_mutex_t;
|
||||||
|
|
||||||
|
@ -117,6 +117,7 @@ extern struct rte_mempool *request_mempool;
|
|||||||
*/
|
*/
|
||||||
#define nvme_dealloc_request(buf) rte_mempool_put(request_mempool, buf)
|
#define nvme_dealloc_request(buf) rte_mempool_put(request_mempool, buf)
|
||||||
|
|
||||||
|
#ifdef USE_PCIACCESS
|
||||||
static inline int
|
static inline int
|
||||||
nvme_pci_enumerate(int (*enum_cb)(void *enum_ctx, void *pci_dev), void *enum_ctx)
|
nvme_pci_enumerate(int (*enum_cb)(void *enum_ctx, void *pci_dev), void *enum_ctx)
|
||||||
{
|
{
|
||||||
@ -171,6 +172,7 @@ nvme_pcicfg_unmap_bar(void *devhandle, uint32_t bar, void *addr)
|
|||||||
|
|
||||||
return pci_device_unmap_range(dev, addr, dev->regions[bar].size);
|
return pci_device_unmap_range(dev, addr, dev->regions[bar].size);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef pthread_mutex_t nvme_mutex_t;
|
typedef pthread_mutex_t nvme_mutex_t;
|
||||||
|
|
||||||
|
@ -54,10 +54,11 @@
|
|||||||
#define PCI_PRI_FMT "%04x:%02x:%02x.%1u"
|
#define PCI_PRI_FMT "%04x:%02x:%02x.%1u"
|
||||||
#define SPDK_PCI_PATH_MAX 256
|
#define SPDK_PCI_PATH_MAX 256
|
||||||
|
|
||||||
|
#ifdef USE_PCIACCESS
|
||||||
/* var should be the pointer */
|
/* var should be the pointer */
|
||||||
#define spdk_pcicfg_read32(handle, var, offset) pci_device_cfg_read_u32(handle, var, offset)
|
#define spdk_pcicfg_read32(handle, var, offset) pci_device_cfg_read_u32(handle, var, offset)
|
||||||
#define spdk_pcicfg_write32(handle, var, offset) pci_device_cfg_write_u32(handle, *var, offset)
|
#define spdk_pcicfg_write32(handle, var, offset) pci_device_cfg_write_u32(handle, *var, offset)
|
||||||
|
#endif
|
||||||
|
|
||||||
int
|
int
|
||||||
pci_device_get_serial_number(struct pci_device *dev, char *sn, int len)
|
pci_device_get_serial_number(struct pci_device *dev, char *sn, int len)
|
||||||
|
@ -84,6 +84,12 @@ LDFLAGS += --coverage
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PCIACCESS), y)
|
||||||
|
PCIACCESS_LIB=-lpciaccess
|
||||||
|
SPDK_PCIACCESS_CFLAGS=-DUSE_PCIACCESS
|
||||||
|
COMMON_CFLAGS += $(SPDK_PCIACCESS_CFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
CFLAGS += $(COMMON_CFLAGS) -Wno-pointer-sign -std=gnu99
|
CFLAGS += $(COMMON_CFLAGS) -Wno-pointer-sign -std=gnu99
|
||||||
|
|
||||||
MAKEFLAGS += --no-print-directory
|
MAKEFLAGS += --no-print-directory
|
||||||
|
@ -44,7 +44,7 @@ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
|
|||||||
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
||||||
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
||||||
|
|
||||||
LIBS += $(SPDK_LIBS) -lpciaccess -lpthread $(DPDK_LIB) -lrt
|
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) -lpthread $(DPDK_LIB) -lrt
|
||||||
|
|
||||||
all : $(APP)
|
all : $(APP)
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
|
|||||||
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
||||||
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
||||||
|
|
||||||
LIBS += $(SPDK_LIBS) -lpciaccess -lpthread $(DPDK_LIB) -lrt
|
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) -lpthread $(DPDK_LIB) -lrt
|
||||||
|
|
||||||
|
|
||||||
OBJS = $(C_SRCS:.c=.o)
|
OBJS = $(C_SRCS:.c=.o)
|
||||||
|
@ -44,7 +44,7 @@ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
|
|||||||
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
|
||||||
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a
|
||||||
|
|
||||||
LIBS += $(SPDK_LIBS) -lpciaccess -lpthread $(DPDK_LIB) -lrt
|
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) -lpthread $(DPDK_LIB) -lrt
|
||||||
|
|
||||||
all : $(APP)
|
all : $(APP)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user