diff --git a/fpga/include/villas/fpga/card.hpp b/fpga/include/villas/fpga/card.hpp index 8c98cd93c..82196401f 100644 --- a/fpga/include/villas/fpga/card.hpp +++ b/fpga/include/villas/fpga/card.hpp @@ -10,9 +10,6 @@ #pragma once -#include -#include - #include #include @@ -22,8 +19,9 @@ namespace fpga { class Card { public: bool polling; - - std::string name; // The name of the FPGA card + bool doReset; // Reset VILLASfpga during startup? + int affinity; // Affinity for MSI interrupts + std::string name; // The name of the FPGA card std::shared_ptr vfioContainer; std::shared_ptr vfioDevice; @@ -41,6 +39,9 @@ public: virtual ~Card(); + virtual void + connectVFIOtoIps(std::list> configuredIps) = 0; + virtual bool mapMemoryBlock(const std::shared_ptr block); virtual bool unmapMemoryBlock(const MemoryBlock &block); diff --git a/fpga/include/villas/fpga/pcie_card.hpp b/fpga/include/villas/fpga/pcie_card.hpp index aff1b23fb..a88ef19c2 100644 --- a/fpga/include/villas/fpga/pcie_card.hpp +++ b/fpga/include/villas/fpga/pcie_card.hpp @@ -37,6 +37,9 @@ class PCIeCard : public Card { public: ~PCIeCard(); + void + connectVFIOtoIps(std::list> configuredIps) override; + bool init(); bool stop() { return true; } diff --git a/fpga/lib/core.cpp b/fpga/lib/core.cpp index 691426057..3bcd0dfd5 100644 --- a/fpga/lib/core.cpp +++ b/fpga/lib/core.cpp @@ -30,6 +30,7 @@ using namespace villas::fpga::ip; // same order as they appear in this list, i.e. first here will be initialized // first. static std::list vlnvInitializationOrder = { + Vlnv("xilinx.com:ip:zynq_ultra_ps_e:"), Vlnv("xilinx.com:ip:axi_pcie:"), Vlnv("xilinx.com:ip:xdma:"), Vlnv("xilinx.com:module_ref:axi_pcie_intc:"), @@ -344,6 +345,8 @@ std::list> CoreFactory::make(Card *card, std::list> configuredIps = configureIps(orderedIps, json_ips, card); // Successfully configured IPs + card->connectVFIOtoIps(configuredIps); + initIps(configuredIps, card); return card->ips;