From 29b1ab34861f689ad1fe4d796b4229750d72a948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20L=C3=BCtke=20Dreimann?= Date: Thu, 19 Jan 2023 09:20:01 +0100 Subject: [PATCH] cfs: fix fairness for later created vgpus --- .../src/virt/strategies/cfs.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/repos/dde_uos-intel-gpgpu/src/virt/strategies/cfs.cc b/repos/dde_uos-intel-gpgpu/src/virt/strategies/cfs.cc index cf9d2e2757..e02ff97425 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/strategies/cfs.cc +++ b/repos/dde_uos-intel-gpgpu/src/virt/strategies/cfs.cc @@ -21,7 +21,23 @@ static unsigned long long int rdtsc() void CompletlyFair::addVGPU(VGpu* vgpu) { + // create new entry cfs_entry* ce = new (_global_gpgpu_genode->getAlloc()) cfs_entry(vgpu); + + // find current min + cfs_entry* min = nullptr; + _run_list.head([&min](cfs_entry& ce){ + min = &ce; + }); + _run_list.for_each([&min](cfs_entry& ce){ + if(ce.runtime < min->runtime) + { + min = &ce; + } + }); + + // add new entry with minimum runtime + ce->runtime = min->runtime; _run_list.enqueue(*ce); }