From ae14435d412a57eee7e84c78fd8811717fa151e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20L=C3=BCtke=20Dreimann?= Date: Wed, 24 Aug 2022 11:33:21 +0200 Subject: [PATCH] gpgpu_virt namespace --- .../include/gpgpu_virt}/client.h | 15 ++++++---- .../include/gpgpu_virt}/connection.h | 11 ++++--- .../include/{gpgpu => gpgpu_virt}/session.h | 8 ++--- repos/dde_uos-intel-gpgpu/src/gpgpu/main.cc | 6 ++-- repos/dde_uos-intel-gpgpu/src/virt/kernel.h | 9 +++--- repos/dde_uos-intel-gpgpu/src/virt/rpc.cc | 30 +++++++++---------- repos/dde_uos-intel-gpgpu/src/virt/rpc.h | 19 ++++++------ .../dde_uos-intel-gpgpu/src/virt/scheduler.cc | 9 ++++-- .../dde_uos-intel-gpgpu/src/virt/scheduler.h | 2 +- repos/dde_uos-intel-gpgpu/src/virt/vgpu.h | 4 +-- .../src/hello_gpgpu/CL/cl_genode.h | 4 +-- 11 files changed, 62 insertions(+), 55 deletions(-) rename repos/{hello_gpgpu/include/hello_gpgpu_session => dde_uos-intel-gpgpu/include/gpgpu_virt}/client.h (65%) rename repos/{hello_gpgpu/include/hello_gpgpu_session => dde_uos-intel-gpgpu/include/gpgpu_virt}/connection.h (60%) rename repos/dde_uos-intel-gpgpu/include/{gpgpu => gpgpu_virt}/session.h (90%) diff --git a/repos/hello_gpgpu/include/hello_gpgpu_session/client.h b/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/client.h similarity index 65% rename from repos/hello_gpgpu/include/hello_gpgpu_session/client.h rename to repos/dde_uos-intel-gpgpu/include/gpgpu_virt/client.h index ce1d4a7fdb..050b379f5a 100644 --- a/repos/hello_gpgpu/include/hello_gpgpu_session/client.h +++ b/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/client.h @@ -1,16 +1,17 @@ #ifndef HELLO_GPGPU_CLIENT_H #define HELLO_GPGPU_CLIENT_H -#include +#include #include #include -namespace gpgpu { struct Session_client; } - -struct gpgpu::Session_client : Genode::Rpc_client +namespace gpgpu_virt { - Session_client(Genode::Capability cap) - : Genode::Rpc_client(cap) { } + +struct Session_client : Genode::Rpc_client +{ + Session_client(Genode::Capability cap) + : Genode::Rpc_client(cap) { } int start_task(unsigned long kconf) override { @@ -28,4 +29,6 @@ struct gpgpu::Session_client : Genode::Rpc_client } }; +} + #endif // HELLO_GPGPU_CLIENT_H diff --git a/repos/hello_gpgpu/include/hello_gpgpu_session/connection.h b/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/connection.h similarity index 60% rename from repos/hello_gpgpu/include/hello_gpgpu_session/connection.h rename to repos/dde_uos-intel-gpgpu/include/gpgpu_virt/connection.h index 94facc5536..820182c199 100644 --- a/repos/hello_gpgpu/include/hello_gpgpu_session/connection.h +++ b/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/connection.h @@ -1,21 +1,24 @@ #ifndef HELLO_GPGPU_CONNECTION_H #define HELLO_GPGPU_CONNECTION_H -#include +#include #include -namespace gpgpu { struct Connection; } +namespace gpgpu_virt +{ -struct gpgpu::Connection : Genode::Connection, Session_client +struct Connection : Genode::Connection, Session_client { Connection(Genode::Env &env) : /* create session */ - Genode::Connection(env, session(env.parent(), + Genode::Connection(env, session(env.parent(), "ram_quota=6K, cap_quota=4")), /* initialize RPC interface */ Session_client(cap()) { } }; +} + #endif // HELLO_GPGPU_CONNECTION_H diff --git a/repos/dde_uos-intel-gpgpu/include/gpgpu/session.h b/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/session.h similarity index 90% rename from repos/dde_uos-intel-gpgpu/include/gpgpu/session.h rename to repos/dde_uos-intel-gpgpu/include/gpgpu_virt/session.h index b28948d150..83701f8324 100644 --- a/repos/dde_uos-intel-gpgpu/include/gpgpu/session.h +++ b/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/session.h @@ -4,11 +4,9 @@ #include #include -namespace gpgpu { - struct Session; -} +namespace gpgpu_virt { -struct gpgpu::Session : Genode::Session +struct Session : Genode::Session { static const char *service_name() { return "gpgpu"; } @@ -29,4 +27,6 @@ struct gpgpu::Session : Genode::Session GENODE_RPC_INTERFACE(Rpc_say_hello, Rpc_register_vm, Rpc_start_task); }; +} + #endif // GPGPU_SESSION diff --git a/repos/dde_uos-intel-gpgpu/src/gpgpu/main.cc b/repos/dde_uos-intel-gpgpu/src/gpgpu/main.cc index fbf9a01769..f3f7b26d1c 100644 --- a/repos/dde_uos-intel-gpgpu/src/gpgpu/main.cc +++ b/repos/dde_uos-intel-gpgpu/src/gpgpu/main.cc @@ -15,7 +15,7 @@ #endif // TEST gpgpu_genode* _global_gpgpu_genode; -gpgpu::Scheduler* _global_sched; +gpgpu_virt::Scheduler* _global_sched; void Component::construct(Genode::Env& e) { @@ -25,7 +25,7 @@ void Component::construct(Genode::Env& e) // init globals static gpgpu_genode gg(e); _global_gpgpu_genode = ≫ - static gpgpu::Scheduler sched; + static gpgpu_virt::Scheduler sched; _global_sched = &sched; #ifdef TEST @@ -94,7 +94,7 @@ void Component::construct(Genode::Env& e) #endif // TEST Genode::log("Register RPCs..."); - static gpgpu::Main main(e); + static gpgpu_virt::Main main(e); Genode::log("This is the UOS Intel GPGPU End!"); } diff --git a/repos/dde_uos-intel-gpgpu/src/virt/kernel.h b/repos/dde_uos-intel-gpgpu/src/virt/kernel.h index 342708e452..9b223e450e 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/kernel.h +++ b/repos/dde_uos-intel-gpgpu/src/virt/kernel.h @@ -1,20 +1,19 @@ #ifndef KERNEL_H #define KERNEL_H +#include + #define GENODE #include "../uos-intel-gpgpu/driver/gpgpu_driver.h" #include -#include -namespace gpgpu { - -typedef Genode::uint8_t Kernel_image; +namespace gpgpu_virt { /** * @class This class represents a kernel * */ - class Kernel : public Genode::List::Element + class Kernel : public Genode::List::Element { private: struct kernel_config* kconf; diff --git a/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc b/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc index df0bc6d25f..65fe3d7c19 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc +++ b/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc @@ -2,7 +2,7 @@ #include #include #include -#include +#include #include "rpc.h" #include "scheduler.h" @@ -10,19 +10,15 @@ // genode instance #include "../gpgpu/gpgpu_genode.h" extern gpgpu_genode* _global_gpgpu_genode; -extern gpgpu::Scheduler* _global_sched; +extern gpgpu_virt::Scheduler* _global_sched; // driver #define GENODE // use genodes stdint header #include "../uos-intel-gpgpu/driver/gpgpu_driver.h" -namespace gpgpu { - struct Session_component; - struct Root_component; - struct Main; -} +namespace gpgpu_virt { -int gpgpu::Session_component::say_hello(int& i) +int Session_component::say_hello(int& i) { Genode::log("Hello from uos-intel-gpgpu!"); Genode::log("Here is your number: ", i); @@ -31,14 +27,14 @@ int gpgpu::Session_component::say_hello(int& i) return 42; } -void gpgpu::Session_component::register_vm(Genode::size_t size, Genode::Ram_dataspace_capability& ram_cap_vm) +void Session_component::register_vm(Genode::size_t size, Genode::Ram_dataspace_capability& ram_cap_vm) { ram_cap = _global_gpgpu_genode->allocRamCap(size, mapped_base, base); ram_cap_vm = ram_cap; _global_sched->add_vgpu(&vgpu); } -int gpgpu::Session_component::start_task(unsigned long kconf) +int Session_component::start_task(unsigned long kconf) { // convert offset to driver virt addr struct kernel_config* kc = (struct kernel_config*)(kconf + mapped_base); @@ -83,26 +79,26 @@ int gpgpu::Session_component::start_task(unsigned long kconf) return id++; } -gpgpu::Session_component::~Session_component() +Session_component::~Session_component() { _global_sched->remove_vgpu(&vgpu); _global_gpgpu_genode->freeRamCap(ram_cap); } -gpgpu::Session_component* gpgpu::Root_component::_create_session(const char *) +Session_component* Root_component::_create_session(const char *) { - return new (md_alloc()) gpgpu::Session_component(); + return new (md_alloc()) Session_component(); } -gpgpu::Root_component::Root_component(Genode::Entrypoint &ep, +Root_component::Root_component(Genode::Entrypoint &ep, Genode::Allocator &alloc) : - Genode::Root_component(ep, alloc) + Genode::Root_component(ep, alloc) { } -gpgpu::Main::Main(Genode::Env &env) : env(env) +Main::Main(Genode::Env &env) : env(env) { /* * Create a RPC object capability for the root interface and @@ -110,3 +106,5 @@ gpgpu::Main::Main(Genode::Env &env) : env(env) */ env.parent().announce(env.ep().manage(root)); } + +} diff --git a/repos/dde_uos-intel-gpgpu/src/virt/rpc.h b/repos/dde_uos-intel-gpgpu/src/virt/rpc.h index 8451237f74..26a9f73379 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/rpc.h +++ b/repos/dde_uos-intel-gpgpu/src/virt/rpc.h @@ -4,16 +4,13 @@ #include #include #include -#include +#include #include "vgpu.h" -namespace gpgpu { - struct Session_component; - struct Root_component; - struct Main; -} +namespace gpgpu_virt +{ -struct gpgpu::Session_component : Genode::Rpc_object +struct Session_component : Genode::Rpc_object { VGpu vgpu; Genode::Ram_dataspace_capability ram_cap; @@ -31,7 +28,7 @@ struct gpgpu::Session_component : Genode::Rpc_object int start_task(unsigned long kconf) override; }; -class gpgpu::Root_component +class Root_component : public Genode::Root_component { @@ -45,7 +42,7 @@ class gpgpu::Root_component }; -struct gpgpu::Main +struct Main { Genode::Env &env; @@ -55,9 +52,11 @@ struct gpgpu::Main */ Genode::Sliced_heap sliced_heap { env.ram(), env.rm() }; - gpgpu::Root_component root { env.ep(), sliced_heap }; + Root_component root { env.ep(), sliced_heap }; Main(Genode::Env &env); }; +} + #endif // RPC_H diff --git a/repos/dde_uos-intel-gpgpu/src/virt/scheduler.cc b/repos/dde_uos-intel-gpgpu/src/virt/scheduler.cc index eee9fe63d4..24390f812a 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/scheduler.cc +++ b/repos/dde_uos-intel-gpgpu/src/virt/scheduler.cc @@ -10,7 +10,10 @@ extern gpgpu_genode* _global_gpgpu_genode; #include "../uos-intel-gpgpu/driver/gpgpu_driver.h" #include "../uos-intel-gpgpu/driver/ppgtt32.h" -void gpgpu::Scheduler::schedule_next() +namespace gpgpu_virt +{ + +void Scheduler::schedule_next() { VGpu* first = nullptr; do @@ -46,7 +49,7 @@ void gpgpu::Scheduler::schedule_next() while(_curr_vgpu != nullptr && !_curr_vgpu->has_kernel()); // continue search if we picked a vgpu without kernel } -void gpgpu::Scheduler::handle_gpu_event() +void Scheduler::handle_gpu_event() { // reduce frequency GPGPU_Driver& gpgpudriver = GPGPU_Driver::getInstance(); @@ -81,3 +84,5 @@ void gpgpu::Scheduler::handle_gpu_event() // kernel_config will not be freed, just the Queue object! _global_gpgpu_genode->free(next); } + +} diff --git a/repos/dde_uos-intel-gpgpu/src/virt/scheduler.h b/repos/dde_uos-intel-gpgpu/src/virt/scheduler.h index 2fae1f04b5..e15fe6ac95 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/scheduler.h +++ b/repos/dde_uos-intel-gpgpu/src/virt/scheduler.h @@ -4,7 +4,7 @@ #include #include "vgpu.h" -namespace gpgpu { +namespace gpgpu_virt { class Scheduler { diff --git a/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h b/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h index 86e11f5e46..24c24f3fe8 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h +++ b/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h @@ -9,9 +9,9 @@ #include "../uos-intel-gpgpu/driver/gpgpu_driver.h" #include "../uos-intel-gpgpu/driver/ppgtt32.h" -namespace gpgpu { +namespace gpgpu_virt { - class VGpu : public Genode::List::Element + class VGpu : public Genode::List::Element { private: PPGTT32* ppgtt; diff --git a/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.h b/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.h index 5fdde8bb25..d3938c486e 100644 --- a/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.h +++ b/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.h @@ -13,7 +13,7 @@ #include // rpc -#include +#include // driver #include @@ -30,7 +30,7 @@ private: Genode::addr_t mapped_base; // rpc - gpgpu::Connection backend_driver; + gpgpu_virt::Connection backend_driver; // do not allow copies cl_genode(const cl_genode& copy) = delete;