bus/pci: introduce Windows support with stubs
Addition of stub eal and bus/pci functions to compile bus/pci for Windows. Signed-off-by: Tal Shnaiderman <talshn@mellanox.com>
This commit is contained in:
parent
8517072c87
commit
33031608e8
@ -1,6 +1,10 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2018 Luca Boccassi <bluca@debian.org>
|
||||
|
||||
if is_windows
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
drivers = ['null', 'turbo_sw', 'fpga_lte_fec', 'fpga_5gnr_fec']
|
||||
|
||||
config_flag_fmt = 'RTE_LIBRTE_PMD_BBDEV_@0@'
|
||||
|
@ -1,6 +1,12 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2010-2018 Intel Corporation
|
||||
|
||||
if is_windows
|
||||
build = false
|
||||
reason = 'not supported on Windows'
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
deps += ['pci', 'kvargs', 'rawdev']
|
||||
install_headers('rte_bus_ifpga.h')
|
||||
sources = files('ifpga_common.c', 'ifpga_bus.c')
|
||||
|
@ -4,16 +4,22 @@
|
||||
deps += ['pci']
|
||||
install_headers('rte_bus_pci.h')
|
||||
sources = files('pci_common.c',
|
||||
'pci_common_uio.c',
|
||||
'pci_params.c')
|
||||
if is_linux
|
||||
sources += files('linux/pci.c',
|
||||
sources += files('pci_common_uio.c',
|
||||
'linux/pci.c',
|
||||
'linux/pci_uio.c',
|
||||
'linux/pci_vfio.c')
|
||||
includes += include_directories('linux')
|
||||
else
|
||||
sources += files('bsd/pci.c')
|
||||
endif
|
||||
if is_freebsd
|
||||
sources += files('pci_common_uio.c',
|
||||
'bsd/pci.c')
|
||||
includes += include_directories('bsd')
|
||||
endif
|
||||
if is_windows
|
||||
sources += files('windows/pci.c')
|
||||
includes += include_directories('windows')
|
||||
endif
|
||||
|
||||
deps += ['kvargs']
|
||||
|
@ -10,8 +10,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/queue.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
#include <rte_errno.h>
|
||||
#include <rte_interrupts.h>
|
||||
#include <rte_log.h>
|
||||
|
169
drivers/bus/pci/windows/pci.c
Normal file
169
drivers/bus/pci/windows/pci.c
Normal file
@ -0,0 +1,169 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright 2020 Mellanox Technologies, Ltd
|
||||
*/
|
||||
#include <rte_errno.h>
|
||||
#include <rte_log.h>
|
||||
|
||||
#include <rte_string_fns.h>
|
||||
#include <rte_eal_memconfig.h>
|
||||
|
||||
#include "private.h"
|
||||
|
||||
/* The functions below are not implemented on Windows,
|
||||
* but need to be defined for compilation purposes
|
||||
*/
|
||||
|
||||
/* Map pci device */
|
||||
int
|
||||
rte_pci_map_device(struct rte_pci_device *dev __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Unmap pci device */
|
||||
void
|
||||
rte_pci_unmap_device(struct rte_pci_device *dev __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
}
|
||||
|
||||
int
|
||||
pci_update_device(const struct rte_pci_addr *addr __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Read PCI config space. */
|
||||
int
|
||||
rte_pci_read_config(const struct rte_pci_device *dev __rte_unused,
|
||||
void *buf __rte_unused, size_t len __rte_unused,
|
||||
off_t offset __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Write PCI config space. */
|
||||
int
|
||||
rte_pci_write_config(const struct rte_pci_device *dev __rte_unused,
|
||||
const void *buf __rte_unused, size_t len __rte_unused,
|
||||
off_t offset __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
enum rte_iova_mode
|
||||
pci_device_iova_mode(const struct rte_pci_driver *pdrv __rte_unused,
|
||||
const struct rte_pci_device *pdev __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
return RTE_IOVA_DC;
|
||||
}
|
||||
|
||||
int
|
||||
rte_pci_ioport_map(struct rte_pci_device *dev __rte_unused,
|
||||
int bar __rte_unused, struct rte_pci_ioport *p __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
rte_pci_ioport_read(struct rte_pci_ioport *p __rte_unused,
|
||||
void *data __rte_unused, size_t len __rte_unused,
|
||||
off_t offset __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
}
|
||||
|
||||
int
|
||||
rte_pci_ioport_unmap(struct rte_pci_ioport *p __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool
|
||||
pci_device_iommu_support_va(const struct rte_pci_device *dev __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
rte_pci_ioport_write(struct rte_pci_ioport *p __rte_unused,
|
||||
const void *data __rte_unused, size_t len __rte_unused,
|
||||
off_t offset __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
/* remap the PCI resource of a PCI device in anonymous virtual memory */
|
||||
int
|
||||
pci_uio_remap_resource(struct rte_pci_device *dev __rte_unused)
|
||||
{
|
||||
/* This function is not implemented on Windows.
|
||||
* We really should short-circuit the call to these functions by
|
||||
* clearing the RTE_PCI_DRV_NEED_MAPPING flag
|
||||
* in the rte_pci_driver flags.
|
||||
*/
|
||||
return -1;
|
||||
}
|
||||
/*
|
||||
* Scan the contents of the PCI bus
|
||||
* and add all network class devices into the devices list.
|
||||
*/
|
||||
int
|
||||
rte_pci_scan(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
@ -1,6 +1,12 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2017 Intel Corporation
|
||||
|
||||
if is_windows
|
||||
build = false
|
||||
reason = 'not supported on Windows'
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
sources = files('vdev.c',
|
||||
'vdev_params.c')
|
||||
install_headers('rte_bus_vdev.h')
|
||||
|
@ -1,5 +1,12 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
if is_windows
|
||||
build = false
|
||||
reason = 'not supported on Windows'
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
|
||||
install_headers('rte_bus_vmbus.h','rte_vmbus_reg.h')
|
||||
|
||||
sources = files('vmbus_common.c',
|
||||
|
@ -1,6 +1,10 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2018 Cavium, Inc
|
||||
|
||||
if is_windows
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
std_deps = ['eal']
|
||||
drivers = ['cpt', 'dpaax', 'iavf', 'mlx5', 'mvep', 'octeontx', 'octeontx2', 'qat']
|
||||
config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON'
|
||||
|
@ -1,6 +1,10 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2018 Intel Corporation
|
||||
|
||||
if is_windows
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
drivers = ['isal', 'octeontx', 'qat', 'zlib']
|
||||
|
||||
std_deps = ['compressdev'] # compressdev pulls in all other needed deps
|
||||
|
@ -1,6 +1,10 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2017 Intel Corporation
|
||||
|
||||
if is_windows
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
drivers = ['aesni_gcm',
|
||||
'aesni_mb',
|
||||
'armv8',
|
||||
|
@ -1,6 +1,10 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2017 Intel Corporation
|
||||
|
||||
if is_windows
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
drivers = ['dpaa', 'dpaa2', 'octeontx2', 'opdl', 'skeleton', 'sw', 'dsw']
|
||||
if not (toolchain == 'gcc' and cc.version().version_compare('<4.8.6') and
|
||||
dpdk_conf.has('RTE_ARCH_ARM64'))
|
||||
|
@ -1,6 +1,10 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2017 Intel Corporation
|
||||
|
||||
if is_windows
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
drivers = ['bucket', 'dpaa', 'dpaa2', 'octeontx', 'octeontx2', 'ring', 'stack']
|
||||
std_deps = ['mempool']
|
||||
config_flag_fmt = 'RTE_LIBRTE_@0@_MEMPOOL'
|
||||
|
@ -1,10 +1,6 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2017-2019 Intel Corporation
|
||||
|
||||
if is_windows
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
# Defines the order in which the drivers are buit.
|
||||
dpdk_driver_classes = ['common',
|
||||
'bus',
|
||||
|
@ -1,6 +1,10 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2017 Intel Corporation
|
||||
|
||||
if is_windows
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
drivers = ['af_packet',
|
||||
'af_xdp',
|
||||
'ark',
|
||||
|
@ -1,6 +1,10 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright 2018 NXP
|
||||
|
||||
if is_windows
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
drivers = ['dpaa2_cmdif', 'dpaa2_qdma',
|
||||
'ifpga', 'ioat', 'ntb',
|
||||
'octeontx2_dma',
|
||||
|
@ -1,6 +1,10 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright 2019 Mellanox Technologies, Ltd
|
||||
|
||||
if is_windows
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
drivers = ['ifc',
|
||||
'mlx5',]
|
||||
std_deps = ['bus_pci', 'kvargs']
|
||||
|
@ -9,6 +9,7 @@ if is_windows
|
||||
'eal_common_class.c',
|
||||
'eal_common_config.c',
|
||||
'eal_common_debug.c',
|
||||
'eal_common_dev.c',
|
||||
'eal_common_devargs.c',
|
||||
'eal_common_dynmem.c',
|
||||
'eal_common_errno.c',
|
||||
|
@ -3,6 +3,10 @@ EXPORTS
|
||||
per_lcore__rte_errno
|
||||
rte_calloc
|
||||
rte_calloc_socket
|
||||
rte_bus_register
|
||||
rte_dev_is_probed
|
||||
rte_devargs_next
|
||||
rte_devargs_remove
|
||||
rte_eal_get_configuration
|
||||
rte_eal_has_hugepages
|
||||
rte_eal_init
|
||||
@ -48,6 +52,9 @@ EXPORTS
|
||||
rte_memzone_reserve_bounded
|
||||
rte_memzone_walk
|
||||
rte_strerror
|
||||
rte_strsplit
|
||||
rte_vfio_container_dma_map
|
||||
rte_vfio_container_dma_unmap
|
||||
rte_vlog
|
||||
rte_realloc
|
||||
rte_zmalloc
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <eal_options.h>
|
||||
#include <eal_private.h>
|
||||
#include <rte_trace_point.h>
|
||||
#include <rte_vfio.h>
|
||||
|
||||
#include "eal_hugepages.h"
|
||||
#include "eal_windows.h"
|
||||
@ -247,7 +248,7 @@ rte_eal_cleanup(void)
|
||||
int
|
||||
rte_eal_init(int argc, char **argv)
|
||||
{
|
||||
int i, fctret;
|
||||
int i, fctret, bscan;
|
||||
const struct rte_config *config = rte_eal_get_configuration();
|
||||
struct internal_config *internal_conf =
|
||||
eal_get_internal_configuration();
|
||||
@ -334,6 +335,13 @@ rte_eal_init(int argc, char **argv)
|
||||
|
||||
eal_thread_init_master(config->master_lcore);
|
||||
|
||||
bscan = rte_bus_scan();
|
||||
if (bscan < 0) {
|
||||
rte_eal_init_alert("Cannot init PCI");
|
||||
rte_errno = ENODEV;
|
||||
return -1;
|
||||
}
|
||||
|
||||
RTE_LCORE_FOREACH_SLAVE(i) {
|
||||
|
||||
/*
|
||||
@ -362,3 +370,21 @@ rte_eal_init(int argc, char **argv)
|
||||
rte_eal_mp_wait_lcore();
|
||||
return fctret;
|
||||
}
|
||||
|
||||
int
|
||||
rte_vfio_container_dma_map(__rte_unused int container_fd,
|
||||
__rte_unused uint64_t vaddr,
|
||||
__rte_unused uint64_t iova,
|
||||
__rte_unused uint64_t len)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
rte_vfio_container_dma_unmap(__rte_unused int container_fd,
|
||||
__rte_unused uint64_t vaddr,
|
||||
__rte_unused uint64_t iova,
|
||||
__rte_unused uint64_t len)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "eal_private.h"
|
||||
#include "eal_windows.h"
|
||||
#include "malloc_mp.h"
|
||||
#include "hotplug_mp.h"
|
||||
|
||||
void
|
||||
rte_mp_channel_cleanup(void)
|
||||
@ -101,3 +102,17 @@ request_sync(void)
|
||||
EAL_LOG_STUB();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
eal_dev_hotplug_request_to_primary(struct eal_dev_mp_req *req)
|
||||
{
|
||||
RTE_SET_USED(req);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
eal_dev_hotplug_request_to_secondary(struct eal_dev_mp_req *req)
|
||||
{
|
||||
RTE_SET_USED(req);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user