diff --git a/repos/base-foc/src/core/include/vm_session_component.h b/repos/base-foc/src/core/include/vm_session_component.h index abe2bab4f..3b8db0a88 100644 --- a/repos/base-foc/src/core/include/vm_session_component.h +++ b/repos/base-foc/src/core/include/vm_session_component.h @@ -86,7 +86,7 @@ class Genode::Vm_session_component using Cap_quota_guard::upgrade; Vm_session_component(Rpc_entrypoint &, Resources, Label const &, - Diag, Ram_allocator &ram, Region_map &); + Diag, Ram_allocator &ram, Region_map &, unsigned); ~Vm_session_component(); /********************************* diff --git a/repos/base-foc/src/core/vm_session_component.cc b/repos/base-foc/src/core/vm_session_component.cc index afa4dfe8c..7f1f680b2 100644 --- a/repos/base-foc/src/core/vm_session_component.cc +++ b/repos/base-foc/src/core/vm_session_component.cc @@ -33,7 +33,8 @@ Vm_session_component::Vm_session_component(Rpc_entrypoint &ep, Label const &, Diag, Ram_allocator &ram, - Region_map &local_rm) + Region_map &local_rm, + unsigned) : Ram_quota_guard(resources.ram_quota), Cap_quota_guard(resources.cap_quota), diff --git a/repos/base-hw/src/core/spec/arm_v7/trustzone/vm_session_component.cc b/repos/base-hw/src/core/spec/arm_v7/trustzone/vm_session_component.cc index ee148fb04..1d52e3229 100644 --- a/repos/base-hw/src/core/spec/arm_v7/trustzone/vm_session_component.cc +++ b/repos/base-hw/src/core/spec/arm_v7/trustzone/vm_session_component.cc @@ -33,7 +33,8 @@ Vm_session_component::Vm_session_component(Rpc_entrypoint &ds_ep, Label const &, Diag, Ram_allocator &ram_alloc, - Region_map ®ion_map) + Region_map ®ion_map, + unsigned) : Ram_quota_guard(resources.ram_quota), Cap_quota_guard(resources.cap_quota), diff --git a/repos/base-hw/src/core/spec/arm_v7/trustzone/vm_session_component.h b/repos/base-hw/src/core/spec/arm_v7/trustzone/vm_session_component.h index b772897f3..67cde9db2 100644 --- a/repos/base-hw/src/core/spec/arm_v7/trustzone/vm_session_component.h +++ b/repos/base-hw/src/core/spec/arm_v7/trustzone/vm_session_component.h @@ -67,7 +67,8 @@ class Genode::Vm_session_component using Rpc_object::cap; Vm_session_component(Rpc_entrypoint &, Resources, Label const &, - Diag, Ram_allocator &ram, Region_map &); + Diag, Ram_allocator &ram, Region_map &, + unsigned priority); ~Vm_session_component(); /************************** diff --git a/repos/base-hw/src/core/spec/arm_v7/virtualization/vm_session_component.cc b/repos/base-hw/src/core/spec/arm_v7/virtualization/vm_session_component.cc index 1614d5392..fd2288d5c 100644 --- a/repos/base-hw/src/core/spec/arm_v7/virtualization/vm_session_component.cc +++ b/repos/base-hw/src/core/spec/arm_v7/virtualization/vm_session_component.cc @@ -93,7 +93,8 @@ Vm_session_component::Vm_session_component(Rpc_entrypoint &ds_ep, Label const &, Diag, Ram_allocator &ram_alloc, - Region_map ®ion_map) + Region_map ®ion_map, + unsigned) : Ram_quota_guard(resources.ram_quota), Cap_quota_guard(resources.cap_quota), diff --git a/repos/base-hw/src/core/spec/arm_v7/virtualization/vm_session_component.h b/repos/base-hw/src/core/spec/arm_v7/virtualization/vm_session_component.h index 5144886ac..8b3e3b841 100644 --- a/repos/base-hw/src/core/spec/arm_v7/virtualization/vm_session_component.h +++ b/repos/base-hw/src/core/spec/arm_v7/virtualization/vm_session_component.h @@ -86,7 +86,7 @@ class Genode::Vm_session_component using Rpc_object::cap; Vm_session_component(Rpc_entrypoint &, Resources, Label const &, - Diag, Ram_allocator &ram, Region_map &); + Diag, Ram_allocator &ram, Region_map &, unsigned); ~Vm_session_component(); /********************************* diff --git a/repos/base-hw/src/core/spec/x86_64/muen/vm_session_component.h b/repos/base-hw/src/core/spec/x86_64/muen/vm_session_component.h index e00432525..7a226345c 100644 --- a/repos/base-hw/src/core/spec/x86_64/muen/vm_session_component.h +++ b/repos/base-hw/src/core/spec/x86_64/muen/vm_session_component.h @@ -44,7 +44,8 @@ class Genode::Vm_session_component public: Vm_session_component(Rpc_entrypoint &, Resources resources, - Label const &, Diag, Ram_allocator &, Region_map &) + Label const &, Diag, Ram_allocator &, + Region_map &, unsigned) : Ram_quota_guard(resources.ram_quota), Cap_quota_guard(resources.cap_quota), diff --git a/repos/base-nova/src/core/include/vm_session_component.h b/repos/base-nova/src/core/include/vm_session_component.h index 7f99a9a75..0067e0b5d 100644 --- a/repos/base-nova/src/core/include/vm_session_component.h +++ b/repos/base-nova/src/core/include/vm_session_component.h @@ -107,7 +107,7 @@ class Genode::Vm_session_component using Cap_quota_guard::upgrade; Vm_session_component(Rpc_entrypoint &, Resources, Label const &, - Diag, Ram_allocator &ram, Region_map &); + Diag, Ram_allocator &ram, Region_map &, unsigned); ~Vm_session_component(); /********************************* diff --git a/repos/base-nova/src/core/vm_session_component.cc b/repos/base-nova/src/core/vm_session_component.cc index efdbde44b..04adf535f 100644 --- a/repos/base-nova/src/core/vm_session_component.cc +++ b/repos/base-nova/src/core/vm_session_component.cc @@ -276,7 +276,8 @@ Vm_session_component::Vm_session_component(Rpc_entrypoint &ep, Label const &, Diag, Ram_allocator &ram, - Region_map &local_rm) + Region_map &local_rm, + unsigned) : Ram_quota_guard(resources.ram_quota), Cap_quota_guard(resources.cap_quota), diff --git a/repos/base-sel4/src/core/include/vm_session_component.h b/repos/base-sel4/src/core/include/vm_session_component.h index e9bbdd25e..4e5c2e781 100644 --- a/repos/base-sel4/src/core/include/vm_session_component.h +++ b/repos/base-sel4/src/core/include/vm_session_component.h @@ -97,7 +97,7 @@ class Genode::Vm_session_component using Cap_quota_guard::upgrade; Vm_session_component(Rpc_entrypoint &, Resources, Label const &, - Diag, Ram_allocator &ram, Region_map &); + Diag, Ram_allocator &ram, Region_map &, unsigned); ~Vm_session_component(); /********************************* diff --git a/repos/base-sel4/src/core/spec/x86/vm_session_component.cc b/repos/base-sel4/src/core/spec/x86/vm_session_component.cc index 8f4318338..844a39de8 100644 --- a/repos/base-sel4/src/core/spec/x86/vm_session_component.cc +++ b/repos/base-sel4/src/core/spec/x86/vm_session_component.cc @@ -69,7 +69,8 @@ Vm_session_component::Vm_session_component(Rpc_entrypoint &ep, Label const &, Diag, Ram_allocator &ram, - Region_map &local_rm) + Region_map &local_rm, + unsigned) try : Ram_quota_guard(resources.ram_quota), diff --git a/repos/base/src/core/include/vm_root.h b/repos/base/src/core/include/vm_root.h index a4e2ad63d..62747139f 100644 --- a/repos/base/src/core/include/vm_root.h +++ b/repos/base/src/core/include/vm_root.h @@ -34,12 +34,21 @@ class Genode::Vm_root : public Root_component Vm_session_component *_create_session(const char *args) override { + unsigned priority = 0; + Arg a = Arg_string::find_arg(args, "priority"); + if (a.valid()) { + priority = a.ulong_value(0); + + /* clamp priority value to valid range */ + priority = min((unsigned)Cpu_session::PRIORITY_LIMIT - 1, priority); + } + return new (md_alloc()) Vm_session_component(*ep(), session_resources_from_args(args), session_label_from_args(args), session_diag_from_args(args), - _ram_allocator, _local_rm); + _ram_allocator, _local_rm, priority); } void _upgrade_session(Vm_session_component *vm, const char *args) override diff --git a/repos/os/run/vmm_x86.run b/repos/os/run/vmm_x86.run index 3bf6da60e..d6a397b27 100644 --- a/repos/os/run/vmm_x86.run +++ b/repos/os/run/vmm_x86.run @@ -34,7 +34,7 @@ build $build_components create_boot_directory install_config { - + @@ -54,7 +54,7 @@ install_config { - +