Again, apologies for removing recipients in my earlier reply. From: Owen Hilyard Sent: Monday, November 21, 2022 1:40 PM To: Juraj Linkeš Subject: Re: [RFC PATCH v2 04/10] dts: add dpdk execution handling On Fri, Nov 18, 2022 at 8:00 AM Juraj Linkeš > wrote: diff --git a/dts/framework/config/conf_yaml_schema.json b/dts/framework/config/conf_yaml_schema.json index 409ce7ac74..c59d3e30e6 100644 --- a/dts/framework/config/conf_yaml_schema.json +++ b/dts/framework/config/conf_yaml_schema.json @@ -6,6 +6,12 @@ "type": "string", "description": "A unique identifier for a node" }, + "ARCH": { + "type": "string", + "enum": [ + "x86_64" arm64 and ppc64le should probably be included here. I think that we can focus on 64 bit arches for now. [Juraj] Seems safe enough. At this point it doesn't matter, but when we have a number of testcases, we may need to revisit this (if we can't verify an architecture for example). [Owen] The reason I want this is because I want there to always be an architecture that is not the one being developed on that developers need to handle properly. LoongArch might actually be a good candidate for this if support gets merged, since to my knowledge almost no one has access to their server-class CPUs yet. Essentially, I want to force anyone who does something that is architecture dependent to consider other architectures, not just have the "the entire world is x86" mentality. Alright, good to know. I have a semi-related point, we specify arch (and os as well) in both build target and SUT config. Are these even going to be different? I see cpu (or platform in meson config) being different, but not the other two and that could simplify the config a bit. + def kill_cleanup_dpdk_apps(self) -> None: + """ + Kill all dpdk applications on the SUT. Cleanup hugepages. + """ + if self._dpdk_kill_session and self._dpdk_kill_session.is_alive(): + # we can use the session if it exists and responds + self._dpdk_kill_session.kill_cleanup_dpdk_apps(self.dpdk_prefix_list) + else: + # otherwise, we need to (re)create it + self._dpdk_kill_session = self.create_session("dpdk_kill") + self.dpdk_prefix_list = [] + + def create_eal_parameters( + self, + fixed_prefix: bool = False, + core_filter_specifier: CPUAmount | CPUList = CPUAmount(), + ascending_cores: bool = True, + prefix: str = "", + no_pci: bool = False, + vdevs: list[str] = None, I would prefer to have vdevs be a list of objects, even if for now that class just takes a string in its constructor. Later on we can add subclasses for specific vdevs that might see heavy use, such as librte_net_pcap and crypto_openssl. [Juraj] Ok, this is simple enough, I'll add it.