diff --git a/fpga/common b/fpga/common index 9747c6ead..01f88dd58 160000 --- a/fpga/common +++ b/fpga/common @@ -1 +1 @@ -Subproject commit 9747c6ead6dedff943dbf22ce74e40e9b2622514 +Subproject commit 01f88dd58e7a6ed5b21d54c956d66d2774e09c3d diff --git a/fpga/include/villas/fpga/card.hpp b/fpga/include/villas/fpga/card.hpp index 39908527a..c8a9d413f 100644 --- a/fpga/include/villas/fpga/card.hpp +++ b/fpga/include/villas/fpga/card.hpp @@ -119,7 +119,7 @@ protected: SpdLogger logger; }; -using CardList = std::list>; +using CardList = std::list>; class PCIeCardFactory : public Plugin { public: diff --git a/fpga/lib/ips/dma.cpp b/fpga/lib/ips/dma.cpp index 7408461df..0cc5297dd 100644 --- a/fpga/lib/ips/dma.cpp +++ b/fpga/lib/ips/dma.cpp @@ -89,7 +89,7 @@ Dma::init() /* Map buffer descriptors */ if (hasScatterGather()) { logger->warn("Scatter Gather not yet implemented"); - return false; +// return false; // ret = dma_alloc(c, &dma->bd, FPGA_DMA_BD_SIZE, 0); // if (ret) diff --git a/fpga/src/villas-fpga-pipe.cpp b/fpga/src/villas-fpga-pipe.cpp index fca536f48..998c4dc03 100644 --- a/fpga/src/villas-fpga-pipe.cpp +++ b/fpga/src/villas-fpga-pipe.cpp @@ -63,7 +63,7 @@ void setupColorHandling() std::atexit([](){std::cout << rang::style::reset;}); } -fpga::PCIeCard& +std::shared_ptr setupFpgaCard(const std::string& configFile, const std::string& fpgaName) { if(pci_init(&pci) != 0) { @@ -107,24 +107,19 @@ setupFpgaCard(const std::string& configFile, const std::string& fpgaName) // create all FPGA card instances using the corresponding plugin auto cards = fpgaCardPlugin->make(fpgas, &pci, vfioContainer); - villas::fpga::PCIeCard* card = nullptr; for(auto& fpgaCard : cards) { if(fpgaCard->name == fpgaName) { - card = fpgaCard.get(); - break; + return fpgaCard; } } - if(card == nullptr) { - logger->error("FPGA card {} not found in config or not working", fpgaName); - exit(1); - } + logger->error("FPGA card {} not found in config or not working", fpgaName); // deallocate JSON config // json_decref(json); - return *card; + return std::shared_ptr(); } int main(int argc, char* argv[]) @@ -150,16 +145,16 @@ int main(int argc, char* argv[]) spdlog::set_level(spdlog::level::debug); setupColorHandling(); - fpga::PCIeCard& card = setupFpgaCard(configFile, fpgaName); + auto card = setupFpgaCard(configFile, fpgaName); auto rtds = reinterpret_cast - (card.lookupIp(fpga::Vlnv("acs.eonerc.rwth-aachen.de:user:rtds_axis:"))); + (card->lookupIp(fpga::Vlnv("acs.eonerc.rwth-aachen.de:user:rtds_axis:"))); auto dma = reinterpret_cast - (card.lookupIp(fpga::Vlnv("xilinx.com:ip:axi_dma:"))); + (card->lookupIp(fpga::Vlnv("xilinx.com:ip:axi_dma:"))); auto fifo = reinterpret_cast - (card.lookupIp(fpga::Vlnv("xilinx.com:ip:axi_fifo_mm_s:"))); + (card->lookupIp(fpga::Vlnv("xilinx.com:ip:axi_fifo_mm_s:"))); if(rtds == nullptr) { logger->error("No RTDS interface found on FPGA"); diff --git a/fpga/tests/CMakeLists.txt b/fpga/tests/CMakeLists.txt index 93e6f8d14..0931ab066 100644 --- a/fpga/tests/CMakeLists.txt +++ b/fpga/tests/CMakeLists.txt @@ -27,7 +27,6 @@ set(SOURCES dma.cpp fifo.cpp rtds.cpp - rtds2gpu.cpp timer.cpp ) @@ -36,7 +35,7 @@ add_executable(unit-tests ${SOURCES}) if(CMAKE_CUDA_COMPILER) enable_language(CUDA) target_sources(unit-tests PRIVATE - gpu.cpp gpu_kernels.cu) + gpu.cpp rtds2gpu.cpp gpu_kernels.cu) endif() find_package(Criterion REQUIRED)