sculpt: integrate intel_gpu_drv

* the GPU multiplexer now offers the platform service to the Intel
  framebuffer driver (driver_manager)
* ajdusted drivers_managed-pc to hand out resources to the GPU driver
* adjust quotas

issue #4233
This commit is contained in:
Sebastian Sumpf 2021-07-22 14:44:24 +02:00 committed by Christian Helmuth
parent 2fe70f111b
commit c3e8c22a6d
8 changed files with 54 additions and 8 deletions

View File

@ -4,4 +4,5 @@ _/pkg/wifi
_/src/rtc_drv
_/src/ipxe_nic_drv
_/src/nvme_drv
_/src/intel_gpu_drv

View File

@ -119,7 +119,7 @@
<policy label_prefix="dynamic -> ahci_drv"> <pci class="AHCI"/> </policy>
<policy label_prefix="dynamic -> nvme_drv"> <pci class="NVME"/> </policy>
<policy label_prefix="usb_drv"> <pci class="USB"/> </policy>
<policy label_prefix="dynamic -> intel_fb_drv">
<policy label_prefix="dynamic -> intel_gpu_drv">
<pci class="VGA"/>
<pci bus="0" device="0" function="0"/>
<pci class="ISABRIDGE"/>
@ -244,7 +244,7 @@
</route>
</start>
<start name="dynamic" caps="1400">
<start name="dynamic" caps="2000">
<binary name="init"/>
<resource name="RAM" quantum="1G"/>
<provides>

View File

@ -6,3 +6,4 @@ usb_session
capture_session
timer_session
platform_session
gpu_session

View File

@ -240,8 +240,8 @@ install_config {
</route>
</start>
<start name="drivers" caps="3150" priority="-1" managing_system="yes">
<resource name="RAM" quantum="128M"/>
<start name="drivers" caps="4000" priority="-1" managing_system="yes">
<resource name="RAM" quantum="160M"/>
<resource name="CPU" quantum="40"/>
<binary name="init"/>
<route>

View File

@ -19,6 +19,7 @@
#include <block_session/block_session.h>
#include <rm_session/rm_session.h>
#include <capture_session/capture_session.h>
#include <gpu_session/gpu_session.h>
#include <io_mem_session/io_mem_session.h>
#include <io_port_session/io_port_session.h>
#include <timer_session/timer_session.h>
@ -31,6 +32,7 @@ namespace Driver_manager {
struct Main;
struct Block_devices_generator;
struct Device_driver;
struct Intel_gpu_driver;
struct Intel_fb_driver;
struct Vesa_fb_driver;
struct Boot_fb_driver;
@ -124,12 +126,40 @@ class Driver_manager::Device_driver : Noncopyable
};
struct Driver_manager::Intel_fb_driver : Device_driver
struct Driver_manager::Intel_gpu_driver : Device_driver
{
Version version { 0 };
void generate_start_node(Xml_generator &xml) const override
{
xml.node("start", [&] () {
_gen_common_start_node_content(xml, "intel_gpu_drv", "intel_gpu_drv",
Ram_quota{32*1024*1024}, Cap_quota{800},
Priority{0}, version);
xml.node("provides", [&] () {
xml.node("service", [&] () {
xml.attribute("name", Gpu::Session::service_name()); });
xml.node("service", [&] () {
xml.attribute("name", Platform::Session::service_name()); });
});
xml.node("route", [&] () {
_gen_default_parent_route(xml);
});
});
}
};
struct Driver_manager::Intel_fb_driver : Device_driver
{
Intel_gpu_driver intel_gpu_driver { };
Version version { 0 };
void generate_start_node(Xml_generator &xml) const override
{
intel_gpu_driver.generate_start_node(xml);
xml.node("start", [&] () {
_gen_common_start_node_content(xml, "intel_fb_drv", "intel_fb_drv",
Ram_quota{42*1024*1024}, Cap_quota{800},
@ -137,6 +167,12 @@ struct Driver_manager::Intel_fb_driver : Device_driver
xml.node("heartbeat", [&] () { });
xml.node("route", [&] () {
_gen_config_route(xml, "fb_drv.config");
xml.node("service", [&] () {
xml.attribute("name", Platform::Session::service_name());
xml.node("child", [&] () {
xml.attribute("name", "intel_gpu_drv");
});
});
_gen_default_parent_route(xml);
});
});
@ -369,9 +405,9 @@ struct Driver_manager::Main : private Block_devices_generator
_env.ep(), *this, &Main::_handle_nvme_ns_update };
Signal_handler<Main> _dynamic_state_handler {
_env.ep(), *this, &Main::_handle_dyanmic_state };
_env.ep(), *this, &Main::_handle_dynamic_state };
void _handle_dyanmic_state();
void _handle_dynamic_state();
static void _gen_parent_service_xml(Xml_generator &xml, char const *name)
{
@ -728,7 +764,7 @@ void Driver_manager::Main::_generate_usb_drv_config(Reporter &usb_drv_config,
}
void Driver_manager::Main::_handle_dyanmic_state()
void Driver_manager::Main::_handle_dynamic_state()
{
_dynamic_state.update();

View File

@ -0,0 +1,2 @@
SRC_DIR = src/drivers/gpu/intel
include $(GENODE_DIR)/repos/base/recipes/src/content.inc

View File

@ -0,0 +1 @@
2021-07-22 6e108df1d3dc811edacb047b765449a8da2f0726

View File

@ -0,0 +1,5 @@
base
os
gpu_session
platform_session
timer_session