On x86_64, calling Hw_vcpu::run() will cause a startup exit that is
signaled to the VMM. The VMM will subsequently call with_state().
When Hw_vcpu::run() is called from the Hw_vcpu constructor, this can
lead to a situation where the VMM calls with_state() on a vCPU that
isn't fully constructed yet.
The VMM library API requires that the vCPU starts up in order to emit a
startup exit at construction. Call Hw_vcpu::run() from the
Vm_connection::Vcpu constructor instead of calling run() from the
Hw_vcpu constructor to avoid running a native vCPU that isn't fully
constructed yet.
Fixes#5442
Remove regression in Session_component::set_interface by always iterating
over all interfaces to potentially change each alternate setting (from
passive to active and vice versa).
Ref genodelabs/genode#5349Fixgenodelabs/genode#5467
This commit removes the dummy 'gai_strerror()' implementation in
favor of the one provided in the contrib sources to allow for better
diagnosing of DNS related problems.
As long as NLS is not set the implementation looks up the error string
via the error-code directly.
Fixes#5464.
_extra_dispatch_up is used by the ep and the vcpu
thread unsynchronized, which leads under sufficient load to race situations,
where both wait for each other and no one ever will continue. Remove
_extra_dispatch_up completely, which is not required, as the kernel interface
handles this specific state already.
Fixes#5461
Since Goa expects include files to reside at include/ or
include/spec/{x86,x86_64,arm_64,64bit}, the src/lib/.../opensslconf.h is
missed by Goa. This commit adds Goa compatibility for the openssl api
archive.
genodelabs/goa#81
When executed on NOVA, the platform driver will use the kernel IOMMU
(device PD) if the devices ROM either does not name any IOMMU or support
for the named IOMMU is not available (e.g. because the generic platform
driver is used). In the latter case, reserved-memory ranges were not
correctly added to the device PD.
genodelabs/genode#5066
* Instead of only implicitely update the last scheduled Cpu context with
the CPU state, when entering the architecture-speficic machine
exception vector, cache this data on kernel context stack, and deliver
it as argument when entering the kernel via high-level language
* Handle Cpu context's exception explicitely in kernel main routine
* Make cached CPU state available to error handling lambda in case of
Kernel::Mutex double entering (aka kernel fault)
* Rename Cpu::schedule to Cpu::assign
Ref genodelabs/genode#5425
* Rename Kernel::Lock into Kernel::Mutex
* Replace Guard object by template function that expects
lambda to handle re-entrance by same cpu
Ref genodelabs/genode#5425
- and store the vCPU startup state in a dedicated enum
- return the STARTUP exit from Vm::run()
- initialize the vCPU from Vm::proceed() instead of Vm::exception()
Fixgenodelabs/genode#5450
Renaming 'get_cmd_switch' and 'get_cmd_arg' to 'have_cmd_arg' and
'cmd_arg' respectively blends in nicely with the now omnipresent pattern
with 'have_[spec|board|installed|include]'.
This commit deprecates 'get_cmd_switch' and 'get_cmd_arg', which will be
removed in a later commit.
Issue #5432
This procedure is useful for run scripts that depend for example on a
board support package that is provided only for certain boards, possibly
by a third-party repo.
Issue #5432