Add NOVA driver_manager test
parent
629e6930c7
commit
52fe694be4
@ -0,0 +1,284 @@
|
||||
-- SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
let Genode = env:DHALL_GENODE
|
||||
|
||||
let Prelude = Genode.Prelude
|
||||
|
||||
let XML = Prelude.XML
|
||||
|
||||
let Init = Genode.Init
|
||||
|
||||
let Child = Init.Child
|
||||
|
||||
let Resources = Init.Resources
|
||||
|
||||
let ServiceRoute = Init.ServiceRoute
|
||||
|
||||
let reportRomRoute =
|
||||
λ(service : Text)
|
||||
→ λ(label : Text)
|
||||
→ ServiceRoute.childLabel service "report_rom" (Some label) (None Text)
|
||||
|
||||
let reportRomReport = reportRomRoute "Report"
|
||||
|
||||
let reportRomROM = reportRomRoute "ROM"
|
||||
|
||||
let drivers =
|
||||
Init::{
|
||||
, services =
|
||||
[ ServiceRoute.child "Framebuffer" "dynamic"
|
||||
, ServiceRoute.child "Block" "dynamic"
|
||||
, ServiceRoute.child "Usb" "usb_drv"
|
||||
, ServiceRoute.child "Platform" "platform_drv"
|
||||
, ServiceRoute.child "Input" "input_filter"
|
||||
, ServiceRoute.child "Rtc" "rtc"
|
||||
]
|
||||
, children =
|
||||
toMap
|
||||
{ rtc =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "rtc_drv"
|
||||
, provides = [ "Rtc" ]
|
||||
, routes =
|
||||
[ ServiceRoute.parent "IO_PORT"
|
||||
, ServiceRoute.parent "IO_MEM"
|
||||
]
|
||||
}
|
||||
, report_rom =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "report_rom"
|
||||
, resources = Resources::{ ram = Genode.units.MiB 2 }
|
||||
, provides = [ "ROM", "Report" ]
|
||||
, config =
|
||||
Init.Config::{
|
||||
, content =
|
||||
[ XML.text
|
||||
''
|
||||
<policy label="platform_drv -> acpi" report="acpi_drv -> acpi"/>
|
||||
<policy label="driver_manager -> pci_devices" report="platform_drv -> pci"/>
|
||||
<policy label="usb_drv -> config" report="driver_manager -> usb_drv.config"/>
|
||||
<policy label="driver_manager -> usb_devices" report="usb_drv -> devices"/>
|
||||
<policy label="dynamic -> config" report="driver_manager -> init.config"/>
|
||||
<policy label="driver_manager -> ahci_ports" report="dynamic -> ahci_ports"/>
|
||||
<policy label="driver_manager -> nvme_ns" report="dynamic -> nvme_ns"/>
|
||||
<policy label="rom_reporter -> acpi" report="acpi_drv -> acpi"/>
|
||||
<policy label="rom_reporter -> pci_devices" report="platform_drv -> pci"/>
|
||||
<policy label="rom_reporter -> usb_devices" report="usb_drv -> devices"/>
|
||||
''
|
||||
]
|
||||
}
|
||||
}
|
||||
, rom_reporter =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "rom_reporter"
|
||||
, config =
|
||||
Init.Config::{
|
||||
, content =
|
||||
[ XML.text
|
||||
''
|
||||
<rom label="acpi"/>
|
||||
<rom label="pci_devices"/>
|
||||
<rom label="usb_devices"/>
|
||||
''
|
||||
]
|
||||
}
|
||||
, routes =
|
||||
let routeReportToParent =
|
||||
λ(label : Text)
|
||||
→ ServiceRoute.parentLabel
|
||||
"Report"
|
||||
(Some label)
|
||||
(Some label)
|
||||
|
||||
in [ reportRomROM "acpi"
|
||||
, reportRomROM "pci_devices"
|
||||
, reportRomROM "usb_devices"
|
||||
, routeReportToParent "acpi"
|
||||
, routeReportToParent "pci_devices"
|
||||
, routeReportToParent "usb_devices"
|
||||
]
|
||||
}
|
||||
, acpi_drv =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "acpi_drv"
|
||||
, priority = 1
|
||||
, resources =
|
||||
Resources::{ caps = 350, ram = Genode.units.MiB 4 }
|
||||
, routes =
|
||||
[ ServiceRoute.parent "IO_MEM"
|
||||
, reportRomReport "acpi"
|
||||
, ServiceRoute.parentLabel
|
||||
"Report"
|
||||
(Some "smbios_table")
|
||||
(Some "smbios_table")
|
||||
]
|
||||
}
|
||||
, platform_drv =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "platform_drv"
|
||||
, resources =
|
||||
Resources::{
|
||||
, caps = 400
|
||||
, ram = Genode.units.MiB 4
|
||||
, constrainPhys = True
|
||||
}
|
||||
, provides = [ "Acpi", "Platform" ]
|
||||
, routes =
|
||||
[ ServiceRoute.parent "IRQ"
|
||||
, ServiceRoute.parent "IO_MEM"
|
||||
, ServiceRoute.parent "IO_PORT"
|
||||
, ServiceRoute.parent "Timer"
|
||||
, ServiceRoute.parentLabel
|
||||
"ROM"
|
||||
(Some "system")
|
||||
(Some "system")
|
||||
, reportRomROM "acpi"
|
||||
, reportRomReport "pci"
|
||||
]
|
||||
, config =
|
||||
Init.Config::{
|
||||
, attributes = toMap { system = "yes" }
|
||||
, content =
|
||||
[ XML.text
|
||||
''
|
||||
<report pci="yes"/>
|
||||
<policy label_prefix="ps2_drv">
|
||||
<device name="PS2"/>
|
||||
</policy>
|
||||
<policy label_prefix="dynamic -> vesa_fb_drv">
|
||||
<pci class="VGA"/>
|
||||
</policy>
|
||||
<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">
|
||||
<pci class="VGA"/>
|
||||
<pci bus="0" device="0" function="0"/>
|
||||
<pci class="ISABRIDGE"/>
|
||||
</policy>
|
||||
<policy label_suffix="-> wifi">
|
||||
<pci class="WIFI"/>
|
||||
</policy>
|
||||
<policy label_suffix="-> nic">
|
||||
<pci class="ETHERNET"/>
|
||||
</policy>
|
||||
<policy label_suffix="-> audio">
|
||||
<pci class="AUDIO"/>
|
||||
<pci class="HDAUDIO"/>
|
||||
</policy>
|
||||
<policy label="acpica"/>
|
||||
''
|
||||
]
|
||||
}
|
||||
}
|
||||
, usb_drv =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "usb_drv"
|
||||
, priority = 1
|
||||
, resources =
|
||||
Resources::{ caps = 200, ram = Genode.units.MiB 16 }
|
||||
, provides = [ "Input", "Usb" ]
|
||||
, routes =
|
||||
[ ServiceRoute.child "Platform" "platform_drv"
|
||||
, reportRomROM "config"
|
||||
, reportRomReport "devices"
|
||||
, ServiceRoute.parentLabel
|
||||
"Report"
|
||||
(Some "config")
|
||||
(Some "usb_active_config")
|
||||
, ServiceRoute.parent "Timer"
|
||||
]
|
||||
}
|
||||
, ps2_drv =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "ps2_drv"
|
||||
, provides = [ "Input" ]
|
||||
, routes =
|
||||
[ ServiceRoute.child "Platform" "platform_drv"
|
||||
, ServiceRoute.parent "Timer"
|
||||
]
|
||||
}
|
||||
, input_filter =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "input_filter"
|
||||
, priority = 1
|
||||
, resources = Resources::{ ram = Genode.units.MiB 2 }
|
||||
, provides = [ "Input" ]
|
||||
, routes =
|
||||
[ ServiceRoute.parent "Timer"
|
||||
, ServiceRoute.parentLabel
|
||||
"ROM"
|
||||
(Some "config")
|
||||
(Some "input_filter.config")
|
||||
, ServiceRoute.childLabel
|
||||
"Input"
|
||||
"ps2_drv"
|
||||
(Some "ps2")
|
||||
(None Text)
|
||||
, ServiceRoute.childLabel
|
||||
"Input"
|
||||
"usb_drv"
|
||||
(Some "usb")
|
||||
(None Text)
|
||||
]
|
||||
}
|
||||
, driver_manager =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "driver_manager"
|
||||
, priority = 1
|
||||
, routes =
|
||||
[ reportRomReport "init.config"
|
||||
, reportRomReport "usb_drv.config"
|
||||
, ServiceRoute.parentLabel
|
||||
"Report"
|
||||
(Some "block_devices")
|
||||
(Some "block_devices")
|
||||
, reportRomROM "usb_devices"
|
||||
, reportRomROM "pci_devices"
|
||||
, reportRomROM "ahci_ports"
|
||||
, reportRomROM "nvme_ns"
|
||||
, ServiceRoute.parentLabel
|
||||
"ROM"
|
||||
(Some "usb_policy")
|
||||
(Some "usb_policy")
|
||||
]
|
||||
}
|
||||
, dynamic =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "init"
|
||||
, priority = 1
|
||||
, resources =
|
||||
Resources::{ caps = 1400, ram = Genode.units.MiB 64 }
|
||||
, provides = [ "Framebuffer", "Block" ]
|
||||
, routes =
|
||||
[ ServiceRoute.child "Platform" "platform_drv"
|
||||
, reportRomReport "ahci_ports"
|
||||
, reportRomReport "nvme_ns"
|
||||
, ServiceRoute.child "Usb" "usb_drv"
|
||||
, reportRomROM "config"
|
||||
, ServiceRoute.parent "Timer"
|
||||
, ServiceRoute.parent "Report"
|
||||
, ServiceRoute.parent "IO_MEM"
|
||||
, ServiceRoute.parent "IO_PORT"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
in drivers
|
@ -0,0 +1,21 @@
|
||||
commit 6bc2bd3f4ac2c4e68d7d6dbee164a40b5a72638f
|
||||
Author: Emery Hemingway <ehmry@posteo.net>
|
||||
Date: Wed Feb 26 22:35:36 2020 +0100
|
||||
|
||||
Disable capslock/numlock requirements in driver_manager
|
||||
|
||||
The capslock and numlock state ROMs introduce senseless complexity.
|
||||
|
||||
diff --git a/repos/gems/src/app/driver_manager/main.cc b/repos/gems/src/app/driver_manager/main.cc
|
||||
index 149911a717..afe62e8297 100644
|
||||
--- a/repos/gems/src/app/driver_manager/main.cc
|
||||
+++ b/repos/gems/src/app/driver_manager/main.cc
|
||||
@@ -662,8 +662,6 @@ void Driver_manager::Main::_generate_usb_drv_config(Reporter &usb_drv_config,
|
||||
xml.attribute("ehci", true);
|
||||
xml.attribute("ohci", _use_ohci);
|
||||
xml.attribute("xhci", true);
|
||||
- xml.attribute("capslock_led", "rom");
|
||||
- xml.attribute("numlock_led", "rom");
|
||||
xml.node("hid", [&] () { });
|
||||
xml.node("raw", [&] () {
|
||||
xml.node("report", [&] () { xml.attribute("devices", true); });
|
@ -0,0 +1,110 @@
|
||||
-- SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
let drivers = env:drivers ? ../compositions/pc-drivers.dhall
|
||||
|
||||
let Genode = env:DHALL_GENODE
|
||||
|
||||
let Init = Genode.Init
|
||||
|
||||
let Child = Init.Child
|
||||
|
||||
let Resources = Init.Resources
|
||||
|
||||
let ServiceRoute = Init.ServiceRoute
|
||||
|
||||
let parentRomRoute =
|
||||
λ(from : Text)
|
||||
→ λ(to : Text)
|
||||
→ ServiceRoute.parentLabel "ROM" (Some from) (Some to)
|
||||
|
||||
let childRomRoute =
|
||||
λ(child : Text)
|
||||
→ λ(from : Text)
|
||||
→ ServiceRoute.childLabel "ROM" child (Some from) (None Text)
|
||||
|
||||
in Init::{
|
||||
, verbose = True
|
||||
, children =
|
||||
toMap
|
||||
{ report_rom =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "report_rom"
|
||||
, provides = [ "ROM", "Report" ]
|
||||
, config =
|
||||
Init.Config::{
|
||||
, attributes = toMap { verbose = "yes" }
|
||||
, content =
|
||||
[ Genode.Prelude.XML.text
|
||||
''
|
||||
<policy label="test-driver_manager -> block_devices" report="drivers -> block_devices"/>
|
||||
''
|
||||
]
|
||||
}
|
||||
}
|
||||
, drivers =
|
||||
Init.toChild
|
||||
drivers
|
||||
Init.Attributes::{
|
||||
, provides = [ "Block", "Framebuffer", "Input" ]
|
||||
, resources = Init.Resources::{ ram = Genode.units.MiB 4 }
|
||||
, routes =
|
||||
[ parentRomRoute
|
||||
"managed/input_filter"
|
||||
"input_filter.config"
|
||||
, parentRomRoute " numlock_remap" "numlock_remap.config"
|
||||
, childRomRoute "dynamic_rom" "capslock"
|
||||
, childRomRoute "dynamic_rom" "numlock"
|
||||
, childRomRoute "dynamic_rom" "system"
|
||||
, ServiceRoute.child "Report" "report_rom"
|
||||
, ServiceRoute.parent "Timer"
|
||||
, Genode.Init.ServiceRoute.parent "IRQ"
|
||||
, Genode.Init.ServiceRoute.parent "IO_MEM"
|
||||
, Genode.Init.ServiceRoute.parent "IO_PORT"
|
||||
]
|
||||
}
|
||||
, dynamic_rom =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "dynamic_rom"
|
||||
, resources = Resources::{ ram = Genode.units.MiB 4 }
|
||||
, provides = [ "ROM" ]
|
||||
, config =
|
||||
Genode.Init.Config::{
|
||||
, content =
|
||||
[ Genode.Prelude.XML.text
|
||||
''
|
||||
<rom name="system">
|
||||
<inline>
|
||||
<system state=""/>
|
||||
</inline>
|
||||
<sleep milliseconds="10000"/>
|
||||
</rom>
|
||||
''
|
||||
]
|
||||
}
|
||||
}
|
||||
, test-driver_manager =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "test-driver_manager"
|
||||
, config =
|
||||
Init.Config::{
|
||||
, content =
|
||||
[ Genode.Prelude.XML.text
|
||||
''
|
||||
<check_ahci_block_device label="ahci-1" block_count="65536" block_size="512" model="QEMU HARDDISK"/>
|
||||
<check_input/>
|
||||
<check_framebuffer/>
|
||||
''
|
||||
]
|
||||
}
|
||||
, routes =
|
||||
[ childRomRoute "report_rom" "block_devices"
|
||||
, ServiceRoute.child "Block" "drivers"
|
||||
, ServiceRoute.child "Framebuffer" "drivers"
|
||||
, ServiceRoute.child "Input" "drivers"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
{ testEnv, pkgs, depot, hostPkgs, ... }:
|
||||
with pkgs;
|
||||
|
||||
testEnv.mkTest {
|
||||
name = "driver_manager";
|
||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||
testEnv = { drivers = ./../compositions/pc-drivers.dhall; };
|
||||
testInputs = (with pkgs; [ genodeTests driver_manager ]) ++ (with depot; [
|
||||
boot_fb_drv
|
||||
intel_fb_drv
|
||||
usb_drv
|
||||
vesa_drv
|
||||
]);
|
||||
testScript = ''
|
||||
catch { exec dd if=/dev/zero of=hdd_disk.raw bs=1M count=32 }
|
||||
catch { exec ${hostPkgs.e2fsprogs}/bin/mke2fs -F bin/hdd_disk.raw }
|
||||
run_genode_until {.*all expected devices present and accessible.*} 120
|
||||
'';
|
||||
testConfig = ''
|
||||
{ config = ${./driver_manager.dhall}
|
||||
, rom = ${./driver_manager.rom.dhall}
|
||||
}
|
||||
'';
|
||||
qemuArgs = [ "-device ahci,id=ahci" "-drive id=hdd,file=hdd_disk.raw,format=raw,if=none" "-device ide-hd,drive=hdd,bus=ahci.1"];
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
let Genode = env:DHALL_GENODE
|
||||
|
||||
let manifest = env:MANIFEST
|
||||
|
||||
in Genode.Boot.toRomPaths
|
||||
[ manifest.driver_manager.bin.driver_manager
|
||||
, manifest.genode-tests.bin.test-driver_manager
|
||||
, manifest.os.bin.acpi_drv
|
||||
, manifest.os.bin.ahci_drv
|
||||
, manifest.os.bin.dynamic_rom
|
||||
, manifest.os.bin.input_filter
|
||||
, manifest.os.bin.platform_drv
|
||||
, manifest.os.bin.ps2_drv
|
||||
, manifest.os.bin.report_rom
|
||||
, manifest.os.bin.rom_reporter
|
||||
, manifest.os.bin.rtc_drv
|
||||
, manifest.usb_drv.bin.usb_drv
|
||||
, manifest.vesa_drv.bin.vesa_fb_drv
|
||||
]
|
||||
# Genode.Boot.toRomTexts
|
||||
( toMap
|
||||
{ usb_policy = "<usb/>" }
|
||||
# [ { mapKey =
|
||||
"fb_drv.config"
|
||||
, mapValue =
|
||||
''
|
||||
<config width="1024" height="768" buffered="yes"/>
|
||||
<report connectors="yes"/>
|
||||
</config>
|
||||
''
|
||||
}
|
||||
, { mapKey =
|
||||
"input_filter.config"
|
||||
, mapValue =
|
||||
''
|
||||
<config>
|
||||
<input label="ps2"/>
|
||||
<input label="usb"/>
|
||||
<output>
|
||||
<chargen>
|
||||
<remap>
|
||||
<key name="KEY_F11" to="KEY_RESTART"/>
|
||||
<key name="KEY_F12" to="KEY_DASHBOARD"/>
|
||||
<key name="KEY_LEFTMETA" to="KEY_SCREEN"/>
|
||||
<merge>
|
||||
<accelerate max="50" sensitivity_percent="1000" curve="127">
|
||||
<button-scroll>
|
||||
<input name="ps2"/>
|
||||
<vertical button="BTN_MIDDLE" speed_percent="-10"/>
|
||||
<horizontal button="BTN_MIDDLE" speed_percent="-10"/>
|
||||
</button-scroll>
|
||||
</accelerate>
|
||||
<input name="usb"/>
|
||||
</merge>
|
||||
</remap>
|
||||
<mod1>
|
||||
<key name="KEY_LEFTSHIFT"/> <key name="KEY_RIGHTSHIFT"/>
|
||||
</mod1>
|
||||
<mod2>
|
||||
<key name="KEY_LEFTCTRL"/> <key name="KEY_RIGHTCTRL"/>
|
||||
</mod2>
|
||||
<mod3>
|
||||
<key name="KEY_RIGHTALT"/> <!-- AltGr -->
|
||||
</mod3>
|
||||
<repeat delay_ms="230" rate_ms="40"/>
|
||||
</chargen>
|
||||
</output>
|
||||
</config>
|
||||
''
|
||||
}
|
||||
]
|
||||
)
|
Loading…
Reference in New Issue