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:
Tal Shnaiderman 2020-06-29 15:37:39 +03:00 committed by Thomas Monjalon
parent 8517072c87
commit 33031608e8
20 changed files with 284 additions and 11 deletions

View File

@ -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@'

View File

@ -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')

View File

@ -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']

View File

@ -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>

View 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;
}

View File

@ -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')

View File

@ -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',

View File

@ -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'

View File

@ -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

View File

@ -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',

View File

@ -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'))

View File

@ -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'

View File

@ -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',

View File

@ -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',

View File

@ -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',

View File

@ -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']

View File

@ -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',

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}