Commit Graph

2110 Commits

Author SHA1 Message Date
Emery Hemingway
d741508330 test/vfs_stress: ugrade logging, reduce to single thread
Issue #1987
2016-08-29 17:23:21 +02:00
Emery Hemingway
d354f7a8b9 server/vfs: upgrade logging to new API
Issue #1987
2016-08-29 17:23:21 +02:00
Christian Helmuth
3b9f022f1c libc: some symbol cleanups 2016-08-29 17:23:20 +02:00
Alexander Boettcher
d409b0e98b usb: fix for unconfigured usb devices
Avoids null pointer in usb raw.
2016-08-29 17:23:20 +02:00
Christian Prochaska
c72d1655f4 vbox: read 'force_ioapic' config option only once
Fixes #2049
2016-08-29 17:23:20 +02:00
Stefan Kalkowski
7f8f0f50ea block layer: transition to new API
Ref #1987
Fix #2058
2016-08-29 17:23:20 +02:00
Johannes Schlatow
acd2a40076 base: print() functions for floating point types
Fixes #2055
2016-08-29 17:23:19 +02:00
Josef Söntgen
f81d4cfbbb wifi_drv: add 7265D-19.ucode to fw list
Needed for x250.

Fixes #2057.
2016-08-29 17:23:19 +02:00
Christian Prochaska
4949f3abba dde_linux: '__wait_event()' fix
Fixes #2054
2016-08-29 17:23:19 +02:00
Christian Helmuth
1776babbd1 Revert "arm: prevent 64K default alignment of text segment"
This reverts commit 2127c8acf2 because the
alignment is already sanitized by commit 11c31c4432.

(discussed here 2127c8acf2)
2016-08-10 11:07:57 +02:00
Alexander Boettcher
5aabfa9dd0 sel4: disable noux_tool_chain_auto.run
Currently leaking to many capability selectors, so that the tool chain test
can't succeed.

Issue #2044
2016-08-10 11:07:57 +02:00
Alexander Boettcher
1b895484d9 sel4: adjust qemu memory in same basic run scripts
Core on seL4 is configured to run on native hardware, so some static
allocators are bit over dimensioned. Some run scripts fail on qemu because
solely 64M are available in the system - adjust the affected scripts.

Issue #2044
2016-08-10 11:07:57 +02:00
Christian Helmuth
7038825522 qt5: initial support for multi-touch input
The initial support reports TouchPointPressed, TouchPointMoved, and
TouchPointReleased for multiple touch points, but is currently only
tested with widgets not leveraging multi-touch events. In other words, I
made sure synthetic mouse events are generated properly when using touch
screens.
2016-08-10 11:07:56 +02:00
Christian Helmuth
b0f7717711 Enable USB and PS/2 in qt5 tests on x86
We now always run the input_merger as Input service provider and
configure backends suitable for the used platform. On x86 hardware, we
enable both, PS/2 and USB HID.
2016-08-10 11:07:56 +02:00
Christian Helmuth
9839e833f2 Enable linux in input run script 2016-08-10 11:07:56 +02:00
Alexander Boettcher
9988089862 sel4: workaround deadlock in core
Issue #2044
2016-08-10 11:07:56 +02:00
Alexander Boettcher
b57c33159f sel4: improve allocation in initial_untyped_pool
Required to boot on hardware. The fragmentation is such unfortunate with the
old allocator that alloc() will throw an exception during very early core boot
phase.

Issue #2044
2016-08-10 11:07:56 +02:00
Alexander Boettcher
356e6498b6 sel4: update to 3.2.0
- disable iommu
- increase root_cnode further for native boot
- support vesa driver on native hardware
- don't mask edge triggered ioapic irqs
- increase various allocators to get noux_tool_chain_* booting natively

Issue #2044
2016-08-10 11:07:56 +02:00
Alexander Boettcher
b2a8cfde85 sel4: avoid corruption during ipc marshalling
Issue #2044
2016-08-10 11:07:55 +02:00
Alexander Boettcher
bee0e11049 sel4: use notification objects for Genode::Lock
Fixes #1717
Issue #2044
2016-08-10 11:07:55 +02:00
Alexander Boettcher
1472c0629b sel4: allocate thread selectors during bind_thread
That seems nowadays the right place in order to tell the caller that the
thread couldn't be completely constructed. The return value false of
bind_thread causes in Cpu_thread_component the throwing of
Thread_creation_failed.

thread.run now passes
pthread.run now passes

Issue #2044
2016-08-10 11:07:55 +02:00
Alexander Boettcher
997f5e8e27 sel4: implement thread suspend/pause/resume
Issue #2044
2016-08-10 11:07:55 +02:00
Alexander Boettcher
155621767a sel4: limit mp_server.run to 1 cpu for sel4
Issue #2044
2016-08-10 11:07:55 +02:00
Alexander Boettcher
198475b6b3 sel4: startup lib reinit support
required for noux

Issue #2044
2016-08-10 11:07:54 +02:00
Alexander Boettcher
c4c7979163 sel4: quirk for vanishing page table
Issue #2044
2016-08-10 11:07:54 +02:00
Alexander Boettcher
9c8676b2ae sel4: add revoke option to destruct cnode
Issue #2044
2016-08-10 11:07:54 +02:00
Alexander Boettcher
c4ed38cfbc sel4: fix vm_space has_page_table_at
Issue #2044
2016-08-10 11:07:54 +02:00
Alexander Boettcher
b0c3427ed4 sel4: handle platform_pd destruction
Issue #2044
2016-08-10 11:07:54 +02:00
Alexander Boettcher
ad7748592a sel4: keep boot info in core's virt address space
Issue #2044
2016-08-10 11:07:54 +02:00
Alexander Boettcher
4d10a28411 sel4: disable large mappings for device memory
Issue #2044
2016-08-10 11:07:54 +02:00
Alexander Boettcher
657dd5faad sel4: support region fault manager outside core
rm_fault.run works

Issue #2044
2016-08-10 11:07:53 +02:00
Alexander Boettcher
738ca74166 sel4: clear dataspace page wise
Creating mappings inside core may exhaust the internal allocators
if very large dataspaces must be cleared.

Issue #2044
2016-08-10 11:07:53 +02:00
Alexander Boettcher
253f2aef0f sel4: show pd name if flushing page table
Issue #2044
2016-08-10 11:07:53 +02:00
Alexander Boettcher
998dfa6c5e sel4: flush page table allocator if full
Issue #2044
2016-08-10 11:07:53 +02:00
Alexander Boettcher
90390fe053 sel4: increase root cnode size in kernel
required to boot setups like noux*

Issue #2044
2016-08-10 11:07:53 +02:00
Alexander Boettcher
3a9c6eab17 sel4: use first free cap index reported by kernel
required to bootstrap scenarios with more rom binaries, e.g. noux

Issue #2044
2016-08-10 11:07:53 +02:00
Alexander Boettcher
99b8fc4408 sel4: enable vesa driver
kernel : add required and reserved boot regions to device memory

Issue #2044
2016-08-10 11:07:52 +02:00
Alexander Boettcher
821afd0199 sel4: support device memory for drivers
Additionally, exclude boot-module from page_table_registry. Core does not use
the boot-modules inside core.

Adding it otherwise to the registry will use up the meta data allocator of
the page_table_registry in core in scenarios with lot of boot modules,
e.g. noux and friends.

Issue #2044
2016-08-10 11:07:52 +02:00
Alexander Boettcher
5b9a61fcb9 sel4: properly detach core local regions
Issue #2044
2016-08-10 11:07:52 +02:00
Alexander Boettcher
a396fa9563 sel4: support up to 16K capabilities per pd
before we had 256 capabilities

Issue #2044
2016-08-10 11:07:52 +02:00
Alexander Boettcher
73e35cdf6a sel4: handle threads in destruction
- revoke utcb
- suspend thread before destruction, less noise during destruction

Issue #2044
2016-08-10 11:07:52 +02:00
Alexander Boettcher
2aaeb8db1b sel4: convert frame pages back to untyped memory
to implement _revoke_ram_ds and to fix _unmap_local

Issue #2044
2016-08-10 11:07:52 +02:00
Alexander Boettcher
b5ff552460 base: extend core_mem_alloc free by phys_addr
required by base-sel4 to turn used page frames back to untyped memory

Issue #2044
2016-08-10 11:07:52 +02:00
Alexander Boettcher
7501910c99 sel4: implement ipc_reply
Issue #2044
2016-08-10 11:07:51 +02:00
Alexander Boettcher
43f2784564 sel4: initialize rcv_sel for ep threads
Issue #2044
2016-08-10 11:07:51 +02:00
Alexander Boettcher
c68bca1f89 sel4: enable PIT timer and PS/2 input
Issue #2044
2016-08-10 11:07:51 +02:00
Alexander Boettcher
e89b28ca1b sel4: add signal support
Fixes #1716
Issue #2044
2016-08-10 11:07:51 +02:00
Alexander Boettcher
93e2eecc52 sel4: add irq support
Fixes #1718
Issue #2044
2016-08-10 11:07:51 +02:00
Alexander Boettcher
46cb20e2c0 sel4: add io_port service to core
Fixes #1718
Issue #2044
2016-08-10 11:07:51 +02:00
Alexander Boettcher
af93f8d01b sel4: update to 3.1.0
- adjust syscall bindings to support -fPIC
- read serial i/o ports from BIOS data area
- use autoconf.h provided by sel4
-- to avoid ambiguity between sel4 kernel and user libraries
-- remove manual set defines
- remove debug messages
- increase user virtual area to 3GB

Issue #1720
Issue #2044
2016-08-10 11:07:50 +02:00
Alexander Boettcher
8b505306ed core: name initial threads not just "name"
to make debugging more comfortable

Issue #2044
2016-08-10 11:07:50 +02:00
Alexander Boettcher
cb675a12d8 base: factor out irq parsing into helper header
to be used by sel4 in the next commit

Issue #2044
2016-08-10 11:07:50 +02:00
Alexander Boettcher
464181b01d base: refactor io_port session implementation
Split port API implementation into separate io_port_session_support.cc file,
so that base-sel4 may implement this part alternatively.

Issue #2044
2016-08-10 11:07:50 +02:00
Alexander Boettcher
027e89f91a base: catch uncaught exceptions of threads
and show some message about. On sel4 sometimes exceptions are thrown and no
message is shown, it just seems to hang. With this patch at least you get
an idea that something bad happened.

Issue #2044
2016-08-10 11:07:50 +02:00
Alexander Boettcher
5a0bc07d30 demo: make cancel_blocking working
- remove special handling from base-nova
- add to rpc_server where it actually should be applied to
- required to work for sel4 cancel_blocking

Issue #2044
2016-08-10 11:07:50 +02:00
Alexander Boettcher
7b35927147 x86: support PIT via platform driver
Issue #1578
2016-08-10 11:07:49 +02:00
Stefan Kalkowski
ef7c51548d part_blk: transition to the new base API
Ref #1987
Ref #2051
2016-08-10 11:07:49 +02:00
Christian Helmuth
d4879f04a6 usb: multi-touch and absolute-pointer devices
Now, we support multi-touch devices generating multi-touch events and
absolute-pointer devices simultaneously with multitouch="yes". Still,
multitouch="no" generates emulated absolute-pointer events for
multi-touch devices.
2016-08-10 11:07:49 +02:00
Christian Helmuth
b2eb42feb1 Use USB multi touch and keyboard for Win8 test 2016-08-10 11:07:49 +02:00
Alexander Boettcher
4783043b5d nova: free up mdb entry if no sub node exists
Issue #1950

Fixes #2048
2016-08-10 11:07:49 +02:00
Alexander Boettcher
a876e655c0 vbox: support readonly overlay from disk
Add option to load the initial overlay*.vdi from disk, but keep the changes
in a ram_fs.

Used with AHCI model for vbox_auto_win7. Currently we have no way to tell
rump_fs to unmount and write back data to disk before resetting the machine.
2016-08-10 11:07:48 +02:00
Christian Helmuth
6726e6d7fe Increase quota of ACPI driver
Platforms with more complex ACPI configurations require more RAM in the
driver, e.g., ~160K for the test notebook on my desk.
2016-08-10 11:07:48 +02:00
Adrian-Ken Rueegsegger
dd22c961c9 Update Muen port
- Adjust list of Muen components
- vbox: Sync hw_x86_64_muen subject state with Muen SK
2016-08-10 11:07:48 +02:00
Emery Hemingway
1ae0357171 base/sesson_label.h: do not prefix empty strings
Session_label prefix(a, b) shall not return ' -> b' or 'a -> '.

Issue #1787
2016-08-10 11:07:48 +02:00
Christian Helmuth
0b247f81f8 wifi: disable scheduled scanning on Intel MVM cards
On MVM only the initial scanning of APs works. If wpa_supplicant changes
from triggered scans to the scheduled-scanning hardware feature no
further scan results are reported. Therefore, we disable the
scheduled-scanning hardware feature until the issue is fixed.

Issue #2046
2016-08-10 11:07:48 +02:00
Emery Hemingway
06102665fb drivers/ahci: use session policy utility
- Lookup policies using the standard Session_policy utility.
- Check for adequate session donation.
- Improved diagnostic messages.

Fixes #1844
2016-08-10 11:07:48 +02:00
Christian Prochaska
84ee970e9b run: look for platform boot string at beginning of line
When running the same kernel in a VM as on the host system and the
kernel boot message from the VM appears on the log output, the run tool
assumes that the host machine has rebooted unexpectedly. With this
commit, an unexpected reboot is assumed only if the kernel boot message
appears at the beginning of a line. On base-hw, we enforce a line feed
at the beginning of the boot message as the SPIKE emulator log starts
with the first message of the kernel lacking a line feed.

Fixes #2041
2016-08-10 11:07:48 +02:00
Christian Helmuth
747137c201 Increase stack size of alarm schedulers 2016-08-10 11:07:47 +02:00
Christian Helmuth
f14024eb52 linux: print warning for unusually small stacks
Thread stacks with less than 4K usable space are insufficient for our
implementation of Linux exception signal handling. If such a unusually
small stack overflows the SIGSEGV handler will not be able to print the
diagnostic message leaving no hint of the cause of the stuck process.
2016-08-10 11:07:47 +02:00
Christian Helmuth
887b6233b1 lwip: remove unused alarm-scheduler implementation 2016-08-10 11:07:47 +02:00
Christian Helmuth
4eb58730c0 linux: fix raw-string output in PRAW() 2016-08-10 11:07:47 +02:00
Emery Hemingway
e410be69a7 server/fs_rom: adjust to component API
- Use component API.
- Use signal handlers.
- Log ROM file path at error.
- Add Output printing support to os/path.h utility.

Fixes #2042
2016-08-10 11:07:47 +02:00
Emery Hemingway
7547820af6 server/rump_fs: local symlink target termination
Clients may write symlink targets with or without null-termination.

Fixes #2043
2016-08-10 11:07:46 +02:00
Emery Hemingway
f92be575ae nit_fb: change to component API
Issue #1987
2016-08-10 11:07:46 +02:00
Christian Helmuth
e95d7a8fa2 report_rom: fix warning message
Fix #2036
2016-07-20 13:51:27 +02:00
Norman Feske
11c5bf28c9 nitpicker: change to component API
Issue #1987
2016-07-15 11:38:28 +02:00
Norman Feske
b85fdd828a dynamic_rom: change to component API
Issue #1987
2016-07-15 11:38:28 +02:00
Norman Feske
38a1e95979 base: add 'String::print' method
This way, we can conveniently output strings without calling the
string() method.
2016-07-15 11:38:27 +02:00
Norman Feske
2127c8acf2 arm: prevent 64K default alignment of text segment 2016-07-15 11:38:27 +02:00
Norman Feske
2cbef82b61 ldso-startup: support build from non-base repos
By always fetching the source relative to BASE_DIR, we can
include the ldso-startup.mk file from other repositories, i.e.,
API packages.
2016-07-15 11:38:27 +02:00
Norman Feske
345f22a5e7 mk: shortcircuit select_from_ports for pkg tool 2016-07-15 11:38:26 +02:00
Norman Feske
b2fddf4b99 mk: always use linker scripts from base
The linker scripts are known to reside in BASE_DIR. By using them
directly from this location instead of searching them in the
REPOSITORIES, we don't need to specify the repos/base as a repository in
order to link.
2016-07-15 11:38:26 +02:00
Norman Feske
a804802bcd Let default tools.conf cover each architecture
This patch handles x86_32 and x86_64 separately since this is the SPEC
value directly supplied to the package build tool. This way, we achieve
that a CROSS_DEV_PREFIX is defined for each supported argument.
2016-07-15 11:38:26 +02:00
Norman Feske
a9e9d9e499 libc: clean up import-libc.mk
This patch changes the import-libc.mk file to make it reusable for the
packaged API of the libc.
2016-07-15 11:38:25 +02:00
Ben Larson
a4f73ab1ad os: let fs clients install custom signal handlers
This patch adds the methods 'sigh_ack_avail()' and
'sigh_ready_to_submit()', which are needed to build asynchronously
operating file-system clients.

Fixes #2023
2016-07-15 11:38:25 +02:00
Norman Feske
62d65d00e0 Remove signal-source headers from public API
Those headers implement a platform-specific mechanism. They are never
used by components directly.

This patch also cleans up a few other remaining platform-specific
artifact such as the Fiasco.OC-specific assert.h.

Issue #1993
2016-07-15 11:38:25 +02:00
Emery Hemingway
0efd5a3078 server/report_rom: componentize
* Check report RAM donation and buffer size.
* Use explicit config ROM attachment.
* Pass Env to session connections.
* Replace logging macros.

Issue #2036
2016-07-15 11:38:24 +02:00
Norman Feske
02e50ce5d7 Pistachio: limit max threads per PD to 128
This change avoids cap ref-count overflows when creating many threads
as done by the thread test.
2016-07-12 15:44:43 +02:00
Norman Feske
57ec61fb4b base-linux: omit stack-area init for lx_hybrid
Fixes #2030
2016-07-11 13:31:37 +02:00
Emery Hemingway
d0e7cc35fa Adjust run scripts for loss of ROM filename argument
Issue #1787
2016-07-11 13:31:36 +02:00
Emery Hemingway
2b8c1af9e0 remove 'filename' from ROM sesion args
Conveying the ROM filename as the final label element simplifies
routing policy and session construction.

Annotations by nfeske:

This commit also changes the ROM session to use base/log.h instead of
base/printf.h, which produced build error of VirtualBox because the
vbox headers have a '#define Log', which collides with the content of
base/log.h. Hence, this commit has to take precautions to resolve this
conflict.

The commit alse refines the previous session-label change by adding a
new 'Session_label::prefix' method and removing the use of 'char const *'
from this part of the API.

Fixes #1787
2016-07-11 13:24:36 +02:00
Emery Hemingway
f8337b511b Move Session_label from os to base
Session_label constructor now takes a bare string rather than a
serialized argument buffer.
Replace all instances of previous constructor with 'label_from_args'
function.

Issue #1787
2016-07-11 13:09:24 +02:00
Norman Feske
88b358c5ef Unification of native_capability.h
This patch establishes the sole use of generic headers across all
kernels. The common 'native_capability.h' is based on the version of
base-sel4. All traditional L4 kernels and Linux use the same
implementation of the capability-lifetime management. On base-hw, NOVA,
Fiasco.OC, and seL4, custom implementations (based on their original
mechanisms) are used, with the potential to unify them further in the
future.

This change achieves binary compatibility of dynamically linked programs
across all kernels.

Furthermore, the patch introduces a Native_capability::print method,
which allows the easy output of the kernel-specific capability
representation using the base/log.h API.

Issue #1993
2016-07-11 13:07:37 +02:00
Norman Feske
d71f0a9606 Cleanup of parent-cap handling
This patch alleviates the need for a Native_capability::Dst at the API
level. The former use case of this type as argument to
Deprecated_env::reinit uses the opaque Native_capability::Raw type
instead. The 'Raw' type contains the portion of the capability that is
transferred as-is when delegating the capability (i.e., when installing
the parent capability into a new component, or when installing a new
parent capability into a new forked Noux process). This information can
be retrieved via the new Native_capability::raw method.

Furthermore, this patch moves the functions for retriving the parent
capability to base/internal/parent_cap.h, which is meant to be
implemented in platform-specific ways. It replaces the former set of
startup/internal/_main_parent_cap.h headers.

Issue #1993
2016-07-11 13:05:27 +02:00
Norman Feske
f7bdd383e2 Remove base/native_types.h headers
Issue #1993
2016-07-11 12:06:50 +02:00
Adrian-Ken Rueegsegger
d6ba00089b vbox: Increase stack size of periodic_gip thread
Otherwise a pagefault is triggered on hw_x86_64_muen.
2016-07-11 12:06:50 +02:00
Norman Feske
030301d046 gdb_monitor: remove superfluous check
The check for preparation of gdb is now done by the ports mechanism.
2016-07-11 12:06:50 +02:00
Christian Prochaska
29a12ab9a2 base: add 'Thread::mystack() function
The static 'Thread::mystack()' function returns the stack boundaries of
the calling thread. It is useful when a thread uses a diffent stack than
the primary one.

Fixes #2037
2016-07-11 12:06:05 +02:00
Christian Prochaska
bea48b636e lwip: avoid failed assertion on nonblocking connect()
When calling 'connect()' in nonblocking mode and the connection has been
established, don't call 'tcp_connect()' again, which would trigger an
assertion with the message 'tcp_connect: can only connect from state
CLOSED'.

Fixes #2039
2016-07-11 12:06:04 +02:00
Josef Söntgen
1d9f10e3b6 iso9660: fix reading of large directory entries
This commit makes it possible to read directory entries that span
more than one sector.

Fixes #2038.
2016-07-11 12:06:04 +02:00
Josef Söntgen
cad4d4f970 ahci: check DHRS bit during initialization
This is necessary for the AHCI device model in VirtualBox.

Fixes #2035.
2016-07-11 12:04:53 +02:00
Josef Söntgen
c25c4e3411 ram_blk: transition to the new base API
In addition to modernizing the component now also supports using
empty RAM dataspace as backing store.

For example to use an ISO file the component has to be configured
as follows:

! <config file="image.iso" block_size="2048"/>

To use a empty RAM dataspace that is 256MiB large and has a block
size of 4KiB the configuration looks like this:

! <config size="256M" block_size="4096"/>

Either 'size' or 'file' has to specified. If both are declared the
'file' attribute is soley evaluated.

Issue #1987.

Fixes #2031.
2016-07-11 12:04:52 +02:00
Josef Söntgen
a5dd3fa1e9 ahci: make policy checking more fail-safe
Handle cases where no policy is given and/or no policy matches.

Fixes #2033.
2016-07-11 12:04:52 +02:00
Norman Feske
11a4e7888d noux_net_netcat.run: increase usb_drv quota
Use quota large enough so that the USB driver does not attempt to
request further memory. On the Raspberry Pi, init has no slack memory
to respond to such a request.
2016-07-06 13:02:59 +02:00
Alexander Boettcher
0efd89f12b hw_zynq: disable noux_net_netcat test
because of missing uart_drv
2016-07-06 13:02:59 +02:00
Emery Hemingway
e09752a26f noux: pass correct paths for stdio to Vfs_io_channel
Pass both paths, absolute path to the mount point and the relative path
from the mount point to the file, along with an open handle rather than
just an absolute path. Otherwise, fstat fails if the addressed file is
implemented by another VFS plugin.

Fixes #1789
2016-07-06 13:02:59 +02:00
Alexander Boettcher
5f371c9a3d noux: increase stack size
not sufficient for 32bit noux_tool_chain_auto anymore

Issue #2025
2016-07-06 13:02:58 +02:00
Reto Buerki
f241b6e496 Update Muen port to revision c73734d
Issue #2016
2016-07-06 13:02:58 +02:00
Adrian-Ken Rueegsegger
4c5694184c Enable 32-bit Virtualbox scenarios for hw_x86_64_muen
* Announce VM service
 * Disable USB uhci and ehci as only xhci is supported on hw_x86_64_muen

Issue #2016
2016-07-06 13:02:58 +02:00
Reto Buerki
63591160df vbox: Factor out memory config check
Move Genode/vbox memory configuration check to separate
genode_check_memory_config() function and call it in platform-specific
setup machine hook of accloff/nova.

The rationale for this change is to omit the check on Muen since the
guest memory is separate and not allocated from base-hw memory.

Issue #2016
2016-07-06 13:02:57 +02:00
Reto Buerki
68bab6a411 hw_x86_64_muen: Use timed events for guest preemption
Write tick count of next kernel timer to the guest timed events page if
present. This causes the guest VM to be preempted at the requested tick
count and ensures that the guest VM can not monopolize the CPU if no
traps occur.

The base-hw kernel expects a configured switch-event from the guest VM
to base-hw with ID 30 and target vector 32 to be present in the system
policy.

Issue #2016
2016-07-06 13:02:57 +02:00
Reto Buerki
7d00763861 hw_x86_64_muen: Use timed events to implement timer
Switch kernel timer driver to timed event interface. The base-hw kernel
expects a configured self-event with ID 31 and target vector 32 to be
present in the system policy.

ssue #2016
2016-07-06 13:02:57 +02:00
Adrian-Ken Rueegsegger
6d28ea1c5c vbox: Add platform-specific setup machine hook
Add call to genode_setup_machine prior to machine registration in
frontend machine setup code. This enables platform-specific adjustments
to the machine instance.

The new function is used on hw_x86_64_muen to clamp the processor count
to 1 as multiple virtual CPUs are not supported on this platform.

Issue #2016
2016-07-06 13:02:56 +02:00
Adrian-Ken Rueegsegger
e3fbeeb25e vbox: Implement hwaccl support for Muen
* Implement VMMR0_DO_VMMR0_INIT operation for Muen

   - Indicate VT-x support
   - Enable unrestricted guest mode
   - Set CR[0|4] mask to enable masking of guest CR0.[NE,NW,CD] and
     CR4.VMXE bits.

 * Implement VMMR0_DO_GVMM_CREATE_VM on Muen

   Return error if trying to create SMP VM as VMs with multiple CPUs are
   currently not supported on hw_x86_64_muen.

 * Add Muen-specific Mem_region type

   On hw_x86_64_muen the guest memory layout is static, thus regions are
   handed out from an array of memory regions.

   Use sinfo API to calculate the base address of the VM RAM physical
   0x0 region. This allows to dynamically modify the VM RAM size by
   adjusting the Muen policy and Genode vbox files accordingly.

   Zeroize all memory regions apart from VM Ram since Virtualbox expects
   these regions to be cleared.

 * Add Muen subject state struct

   The subject state encompasses the guest VM machine state that is
   transfered between Virtualbox and hardware accelerated execution on
   Muen.

 * Add Muen-specific Vm_handler class
 * Use Vm_handler to run VM
 * Instruct recompiler to flush its code cache
 * Copy the Muen subject state to/from the Vbox PCPUMCTX.
 * Use the VM interruptibility state to inform the recompiler whether
   interrupts are currently inhibited.
 * Explicitly handle control register access

   If a VM-exit occurs due to a control register access, handle it and
   directly continue hardware accelerated execution of guest VM.

   Note: On NOVA control register accesses are handled by the kernel [1].

   [1] - https://github.com/alex-ab/NOVA/blob/master/src/ec_vmx.cpp#L106

 * Reset guest interruptibility state

   Assert that interrupts are not inhibited in the Virtualbox machine
   state and clear Blocking-by-[STI|MOV to SS] guest interruptibility
   flags prior to running a guest VM in hwaccel mode.

 * Set return code depending on exit reason

   Do not unconditionally emulate the next instruction on VM exit. This
   makes sharing the VM FPU state with Virtualbox unnecessary, as FPU
   instructions are not emulated by the recompiler any longer.
   Also, assert that the FPU has not been used by the recompiler

 * Inject pending guest VM interrupts on Muen

   Use mapped subject pending interrupts page of guest VM to perform
   interrupt injection. IRQs are transferred from the Virtualbox trap
   manager state to the pending interrupts region for injection. If an
   IRQ remains pending upon returning to the recompiler, it is copied
   back to the trap manager state and cleared in the subject interrupts
   region.

 * Inform recompiler about changed SYSENTER_[CS|EIP|ESP] values,
   otherwise values set while running the guest VM hardware accelerated
   may get lost.

 * Implement genode_cpu_hz() on Muen

   Determine the CPU frequency dynamically using the sinfo API.

Issue #2016
2016-07-06 13:02:56 +02:00
Adrian-Ken Rueegsegger
738b01d37a vbox: Move pgm to virtualbox-hwaccl library
Issue #2016
2016-07-06 13:02:56 +02:00
Adrian-Ken Rueegsegger
89a6d16d81 vbox: Extract Vmm_memory::Region to separate header
This enables platform-specific implementations of the struct Mem_region
type.

Issue #2016
2016-07-06 13:02:55 +02:00
Adrian-Ken Rueegsegger
cd6b3b1222 hw_x86_64_muen: Implement Muen Vm_session
* The Vm thread is always paused and on exception to make sure that guest VM
  execution is suspended whenever we handle an interrupt. Also signal the Vm
  session to poke waiting threads (e.g. Virtualbox EMT).

* Implement Vm::proceed
  Switch to the mode transition assembly code declared at the _vt_vm_entry
  label.

Issue #2016
2016-07-06 13:02:55 +02:00
Reto Buerki
082b141e66 hw_x86_64: Add _vt_vm_entry to x86_64 mode transition
The entry enables interrupts and initiates a handover to the guest VM by
invoking event number one. The sti instruction is placed at the start to
allow exits to Muen before handing off to the VM if window exiting is
requested.

Issue #2016
2016-07-06 13:02:55 +02:00
Stefan Kalkowski
e5e1f1261f hw_x86_64_muen: implement VM service skeleton
Issue #2016
2016-07-06 13:02:55 +02:00
Alexander Boettcher
8188e60954 hw_x86: enable building virtualbox
Issue #2016
2016-07-06 13:02:54 +02:00
Emery Hemingway
5dec689b6d remove server/tar_fs
Tar_fs is superseded by the vfs server.

Fixes #2024
2016-07-06 13:02:54 +02:00
Emery Hemingway
ef845edb6e lib/libc_noux: increase execve buffers
Fixes #2025
2016-06-28 11:20:11 +02:00
Sebastian Sumpf
d1eee98012 base-hw: fix data alignment error on RISC-V
Native UTCB data has to be at an machine word boundary.

fixes #2027
2016-06-28 11:17:27 +02:00
Christian Prochaska
22e908e801 vbox: add config option to enforce use of IOAPIC
The virtual PCI model delivers IRQs to the PIC by default and to the
IOAPIC only if the guest operating system selected the IOAPIC with the
'_PIC' ACPI method and if it called the '_PRT' ACPI method afterwards.
When running a guest operating system which uses the IOAPIC, but does
not call these ACPI methods (for example Genode/NOVA), the new
configuration option

<config force_ioapic="yes">

enforces the delivery of PCI IRQs to the IOAPIC.

Fixes #2029
2016-06-28 11:10:45 +02:00
Christian Prochaska
761db4bc73 vbox: config option for the virtual XHCI controller
This commit adds the VirtualBox configuration option

<config xhci="yes">

to enable the virtual XHCI controller.

Fixes #2028
2016-06-28 11:10:29 +02:00
Christian Helmuth
09d43c0708 Fix stack size in fs_rom 2016-06-28 11:09:29 +02:00
Christian Helmuth
7d2a75856f dde_linux: move Format_command class to Lx namespace
Otherwise the class symbols may clash with other global symbols (in base
console.cc).
2016-06-28 11:09:29 +02:00
Norman Feske
17beb9a463 qt_avplay: supply ldso to avplay slave 2016-06-28 11:09:28 +02:00
Josef Söntgen
edf90aec42 wifi_drv: transition to the new base API
Issue #1987.
2016-06-28 11:09:28 +02:00
Christian Helmuth
c8fe0df0ed Overloads for printing signed/unsigned/bool base types
Issue #1942
2016-06-28 11:09:28 +02:00
Christian Prochaska
71183783a2 NOVA: initialize segment and flag registers of local ECs
Make sure that the segment and flag registers of local ECs are initialized
after recall by initializing them at EC creation time.

Fixes #2000
2016-06-28 11:09:28 +02:00
Christian Helmuth
d7ddc83fa9 linux: place alternate signal stack in stack area
The alternate stack must use the stack area as, e.g., Thread::myself()
depends on this property. Hybrid components do not depend on this
property and, therefore, use a static stack buffer.

Fixes #1935
2016-06-28 11:09:28 +02:00
Christian Helmuth
d8c34237bf vfs: default constructor for Dirent and Stat
Fixes #1743
2016-06-28 11:09:27 +02:00
Emery Hemingway
0a01edded2 Path::strip_last_element removes path delimiter
Remove the trailing slash of a path where the path is not "/".
New Path::append_element convenience function.

Fixes #1744
2016-06-28 11:09:27 +02:00
Christian Helmuth
8b78001858 dde_ipxe: remove (non-working) pcnet driver
Also, adapted run scripts to use e1000 NIC model.

Fixes #1821
2016-06-28 11:09:27 +02:00
Stefan Kalkowski
101d052ddb intel_fb_drv: consider aligned pitch value
* Align pitch value to 64 byte (thanks to cnuke for investigation)
* Get rid of extra dataspace retrival and attachment, now that we always buffer
* Consistently name all lx_emul helpers: lx_* (get rid of dde*)
* Add missing file headers

Fix #1997
2016-06-28 11:09:27 +02:00
Stefan Kalkowski
558cc8e00c intel_fb_drv: make buffering mandatory
Instead of providing a buffer to the client and blitting from that
to the "real" framebuffer as an option, with this commit we always do so.
Thereby its possible to immediately destroy the old framebuffer used by
hardware when a configuration change is done, and a new framebuffer
is used. This also simplifies the modesetting.
Moreover, this commit fixes an issue when not using the connector reporting.
Until now the initial mode detection of connectors was only done when
the report was created. this is a regression that entered the driver
when upgrading to the recent Linux kernel version.

Ref #1997
2016-06-28 11:09:27 +02:00
Emery Hemingway
632444ae23 server/rump_fs: transition to the new base API
Use new env, component and logging frameworks.
Sync file system and block device on component entrypoint.
Support for 'root' session argument.
Increase Rump open file descriptor limit.

Issue #1987
Fixes #2011
2016-06-28 11:09:26 +02:00
Alexander Boettcher
f94c2d6aaf vbox: use ahci model in vbox_auto_win7.run
Issue #2006
2016-06-28 11:09:26 +02:00
Alexander Boettcher
e2f1ece0b1 vbox: try to cache RTMemPage* allocation
The ahci model frequently creates and release memory via RTMemPage* functions,
which frequently causes dataspace creation/destruction.

Issue #2006
2016-06-28 11:09:26 +02:00
Alexander Boettcher
4f23e78f10 vbox: add AHCI model
Fixes #2006
2016-06-28 11:09:26 +02:00
Emery Hemingway
ca4f956f21 lib/libc: remove builtin sysctl release information
Fixes #2003
2016-06-28 11:09:25 +02:00
Josef Söntgen
b80939cc0a Noux: add noux-pkg/less
Issue #2014
2016-06-28 11:09:25 +02:00
Alexander Boettcher
7556663e7e acpi_input: transform ACPI events to Genode input
Issue #1962
2016-06-28 11:09:25 +02:00
Sebastian Sumpf
d48219138c usb: transition to the new base API
* remove all 'Genode::env()' calls
* use attached roms to read configuration
* use compoenent framework
* remove all PDBG, PINF, PWRN macros

Issue #1987
Fixes #2019
2016-06-28 11:09:25 +02:00
Sebastian Sumpf
58ef6e3695 lx_kit: optional global env + internal allocator
* make Lx::Malloc a real Genode allocator, so it can be used with 'new' and
  'destroy;
* add optional Lx_kit::Env class

issue #2019
2016-06-28 11:09:23 +02:00
Stefan Kalkowski
a145e6ad70 nic_bridge: transition to the new base API
* use Component::* instead of Server::*
* do not use old printf format anymore
* do not use old Genode::env()->heap() anymore
* avoid pointers where possible, and use references instead
* throw away the thread-safe variants of list and AVL tree,
  nic_bridge became single-threaded in the past
* introduce Ram_session_guard instead of Allocator_guard

Issue #1987
2016-06-28 11:09:23 +02:00
Josef Söntgen
d9f33f7577 linux/audio: transition to the new base API
Issue #1987
2016-06-28 11:08:21 +02:00
Josef Söntgen
0d8d8de42c ahci: transition to the new base API
Issue #1987
2016-06-28 11:08:13 +02:00
Josef Söntgen
c77f146e72 acpi: transition to the new base API
Issue #1987
2016-06-28 11:08:01 +02:00