Commit Graph

2046 Commits

Author SHA1 Message Date
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
Josef Söntgen
833c9e01f5 usb_block: transition to the new base API
Issue #1987
2016-06-28 11:06:58 +02:00
Emery Hemingway
f772dfaccd lib/curl: adjust for new spec directories
Fixes #2021
2016-06-22 12:26:33 +02:00
Sebastian Sumpf
b6bc7e0486 usb: fix 'find_next_bit'
Return correct offset for sizes over machine word size.

Fixes #2013
2016-06-22 12:21:42 +02:00
Alexander Boettcher
4e9aeb45ea platform_drv: sync startup between acpica
- platform_drv announces a separate "Acpi" session
- platform_drv waits for ROM "system" to change state to "acpi_ready"
- acpica waits for "Acpi" announcement
- acpica uses the platform driver via "Acpi" to reconfigure PCI devices
- acpica changes "system" state to "acpi_ready" after it ready with initialization
- platform_drv reacts on "system" state change to "acpi_ready" by announcing "Platform" session
- drivers start to operate as usual

Issue #2009
2016-06-22 12:21:42 +02:00
Norman Feske
2030ae678e Supplement base/log.h with raw output function
This patch introduces the Genode::raw function that prints output
directly via a low-level kernel mechanism, if available.

On base-linux, it replaces the former 'raw_write_str' function.
On base-hw, it replaces the former kernel/log.h interface.

Fixes #2012
2016-06-22 12:21:42 +02:00
Norman Feske
ebdb1c6892 sel4: reduce initial memory demand of PD session
This is a follow-up commit to "slab: throw exception if initial
allocation fails". It is needed because on seL4, the PD session quota is
used as backing store for the meta data of the PD's virtual memory. For
this reason, PD sessions on seL4 require more session quota compared to
the other kernels. Apparently, the default quota is too scarce to
complete the PD-session construction. By shrinking the number of
supported page-table entries, we reduce the size of the PD session
component so that the creation succeeds.

Issue #1983
2016-06-22 12:21:42 +02:00
Alexander Boettcher
868bf6c9d0 noux-pkg: port of diffutils 3.3
Fixes #2005
2016-06-22 12:21:42 +02:00
Emery Hemingway
8ae2f65da8 uniform XML boolean attribute access
Replace 'attribute(...).has_value("yes")`
with 'attribute_value(..., false)'.

This allows for boolean configuration to be set with values such as
"true", "false", "yes", "no", or "1", "0".

Fixes #2002
2016-06-22 12:21:42 +02:00
Emery Hemingway
51e8f05fb6 Ajdust run scenarios for strict policy matching
Issue #1901
2016-06-22 12:21:41 +02:00
Emery Hemingway
877676c29f Make label-based policy selection more strict
A configuration policy must match against a policy node label,
label_prefix, or label_suffix atttribute. A fallback to
<default-policy/> is provided as a label wildcard.

Fixes #1901
2016-06-22 12:21:41 +02:00
Adrian-Ken Rueegsegger
c1bb82fb6b base-hw: make Muen sinfo API publicly available
The sinfo function declared in sinfo_instance.h creates a static sinfo
object instance and returns a pointer to the caller.

- kernel timer and platform support to use sinfo() function to
  instantiate sinfo object
- address and size of the base-hw RAM region via the sinfo API
- log_status() function in sinfo API
2016-06-22 12:19:21 +02:00
Adrian-Ken Rueegsegger
2f11caa8d6 vbox_win: Set priority of audio_drv to -1
Helps against choppy sound in Windows guest VMs.
2016-06-22 12:17:18 +02:00
Reto Buerki
963ca0e6b5 vbox: Provide implementation of RTErrCOMGet
The generated errmsgvboxcomdata.h is currently empty, but the
'main.e.l.f' log group seems to work for now.
2016-06-22 12:17:18 +02:00
Adrian-Ken Rueegsegger
8dbf449b91 Add fake usb_devices report ROM to virtualbox.run 2016-06-22 12:17:18 +02:00
Adrian-Ken Rueegsegger
dbb0978ea5 vbox: Fix name of 'rem_disas' log group 2016-06-22 12:17:18 +02:00
Alexander Boettcher
1b7b43c886 vbox: handle bogus statvfs values gracefully
Otherwise Windows guest additions may trigger divison by 0 in the kernel,
which causes BSOD.

Fixes #1873
2016-06-22 12:17:18 +02:00
Alexander Boettcher
db1d6568fb libc: vfs_plugin - initialize fstatfs members
Issue #1873
2016-06-22 12:17:17 +02:00
Alexander Boettcher
c26f91ea00 platform_drv/x86: avoid quota leaking
Fixes #1980
2016-06-22 12:17:17 +02:00
Christian Helmuth
470757cf15 lxip: implement ffz() with __ffs()
Unfortunately, ffs() returns bit positions starting at 1 while ffz()
needs the semantics of __ffs(), which starts bit positions at zero.
2016-06-22 12:17:17 +02:00
Stefan Kalkowski
0c13effaa8 intel_fb: enable polling for connector changes
To circumvent problems on platforms with shaky hotplug interrupt notification
introduce a "poll" configuration option to the driver, which enables
polling for connector changes.

Fix #2004
2016-06-22 12:17:17 +02:00
Stefan Kalkowski
11bead1811 intel_fb_drv: componentize
Issue #1987
2016-06-22 12:17:16 +02:00
Sebastian Sumpf
1cfa14b2f2 os: add stack based backtrace support
Fixes odyssey #2001
2016-06-22 12:17:16 +02:00
Christian Helmuth
49f7d02f80 lxip: add missing memmove() to emulation library 2016-06-10 14:46:01 +02:00
Emery Hemingway
d9c48847db lib/libc: set initial directory if VFS initialized
Fixes #1984
2016-06-07 08:06:59 +02:00
Emery Hemingway
930e2638b2 lib/libc: remove internal use of getcwd at fstatat
The implementation and behaviour of 'getcwd' is externally defined.

Add move operators to Genode::Path.

Issue: #1984
2016-06-07 08:06:35 +02:00
Sebastian Sumpf
597cdc846c usb: use hardware timer to update jiffies
This takes a lot of load away because we don't need to call the time server on
each IRQ.

Fixes #1999
2016-06-06 14:26:32 +02:00
Emery Hemingway
5e6c3a979e virtualbox: unique Nic session labels
Append the network adapter index to Nic session labels.

Fixes #1966
2016-06-06 12:30:05 +02:00
Emery Hemingway
f06087625f server/rump_fs: skip . and .. directory elements
Do not return elements for '.' and '..' during directory reads.

Fixes #1998
2016-06-06 12:12:54 +02:00
Alexander Boettcher
56890733af nova: handle cap count error if IPC dst invalid
Fixes #1995
2016-06-06 09:38:30 +02:00
Stefan Kalkowski
1e5c08bb1a base: invert hex value padding to correct meaning
Fix #1996
2016-06-06 09:38:29 +02:00
Christian Helmuth
cf771c10d6 Improve tokenizing to support XML comments
The whole XML comment has to be parsed as one XML tag to support strange
but valid combinations like

  <!---->
  <!--invisible-tag></invisible-tag-->

Fixes #1424
2016-06-06 09:37:47 +02:00
Josef Söntgen
941a71346a base: add print method for unsigned long long
Fixes #1991.
2016-06-04 13:45:27 +02:00
Stefan Kalkowski
7f0c3eee6d rump_fs: set inode in Directory::read accordingly
Fix #1989
2016-06-04 13:45:26 +02:00
Sebastian Sumpf
4994616346 os: packets without playload in packet stream
issue #1988
2016-06-04 13:45:26 +02:00
Josef Söntgen
37fb4309b3 wifi_drv: use relative timeout in poll function
The vanilla 'schedule_timeout()' Linux function expects a relative
timeout value. The first implementation of the wifi_drv, however, used
an absolute timeout value. This mismatch was overlooked when the
lx_kit, which adheres to the vanilla Linux semantics, was incoporated
in the driver.

Fixes #1990.
2016-06-01 12:28:35 +02:00
Josef Söntgen
f41a0aea38 lx_kit: handle multiple timer at once
Issue #1986.
2016-05-31 15:12:17 +02:00
Josef Söntgen
294c7e5076 lx_kit: handle truncation of hrtimer timeouts
Fixes #1986.
2016-05-31 15:11:55 +02:00
Stefan Kalkowski
964e9e91c7 base-hw: eliminate the need to $(BASE_HW_DIR)
Instead of introducing a $(BASE_HW_DIR) variable that has to be defined in each
core makefile for the different base-hw targets, this commit replaces the
$(REP_DIR) variable usage in core.inc files with $(BASE_DIR)/../base-hw.

Ref #1955
2016-05-31 15:09:53 +02:00
Alexander Boettcher
54b47535f8 run: adapt trace.run
Issue #1983
2016-05-31 12:02:05 +02:00
Alexander Boettcher
6289a2379d base: deny session creation if quota insufficient
Quota_exceeded message are of no use during session construction, since
the arguments of the ram_quota are used and no upgrade can take place (the
session construction failed and is so not available for upgrade)

Fixes #1983
2016-05-31 12:02:05 +02:00
Alexander Boettcher
5c10653d8a slab: throw exception if initial allocation fails
Issue #1983
2016-05-31 12:02:04 +02:00
Alexander Boettcher
74030a2e38 nova: kernel fix for more than 4096 processes
Fixes #1951
2016-05-27 09:34:23 +02:00
Christian Helmuth
468ebebbda doc: update README, components.txt etc. 2016-05-26 15:54:17 +02:00
Josef Söntgen
ee804a84fa usb: do not allocate raw packets without size
Allocating a packet in the packet stream without a payload is not
allowed. Therefore we have to allocate CTRL message packets, that do
not have a payload, with a bogus length instead.
2016-05-26 15:54:17 +02:00
Emery Hemingway
b80428abf6 server/vfs: fix file leaf path pointer
Directory_service::leaf_path returns a pointer offset from its argument
so pass member data rather than a constructor argument to leaf_path.

Issue #1775
2016-05-26 15:54:17 +02:00
Stefan Kalkowski
c48e13e1c0 platform_drv: return quota when freeing dma memory
This is an interim fix for solving the quota leakage problem of
the platform driver on x86 platforms. To properly fix that problem
one has to track which dataspaces where created by the platform driver,
so that freeing the dataspace and reversing the quota transfer is done
on correct dataspaces only.

Refer #1980
2016-05-26 15:54:17 +02:00
Alexander Boettcher
46a7b2ea66 ahci: disable atapi support by default
If needed it has to be enabled explicitly as documented in the README.

Related to issue #1906
2016-05-26 15:54:17 +02:00
Alexander Boettcher
16adc852a5 dde_ipxe: enable Intel I219-LM PCI-ID 2016-05-26 15:54:16 +02:00
Christian Prochaska
1e4672db4a Noux: support PD session upgrade
Fixes #1979
2016-05-26 15:54:16 +02:00
Norman Feske
97a41394b4 Documentation changes on account of the book
This patch removes the outdates doc/architecture.txt since the
topics are covered by the book. We keep repos/os/doc/init.txt
because it contains a few details not present in the book (yet).
The patch streamlines the terminology a bit. Furthermore, it
slightly adjusts a few source-code comments to improve the book's
functional specification chapter.
2016-05-26 15:54:16 +02:00
Christian Prochaska
957fe694c5 Noux: provide separate configuration for child processes
Instead of passing on the Noux 'config' ROM dataspace to child processes,
provide a separate configuration for each Noux child, which is either
'<config/>' or '<config ld_verbose="yes"/>', depending on the
configuration of this attribute for the Noux process. This is also a
workaround to prevent multiple insertion of the same 'config' ROM
dataspace capability into the dataspace registry.

Issue #1978
2016-05-26 15:54:16 +02:00
Norman Feske
92a10541aa Update of the hello tutorial 2016-05-26 15:54:16 +02:00
Norman Feske
357b84835a base: add modern Root_component constructor 2016-05-26 15:54:15 +02:00
Martin Stein
1208d14681 hw: use kernel timer for timer driver
* Adds public timeout syscalls to kernel API
  * Kernel::timeout installs a timeout and binds a signal context to it that
    shall trigger once the timeout expired
  * With Kernel::timeout_max_us, one can get the maximum installable timeout
  * Kernel::timeout_age_us returns the time that has passed since the
    calling threads last timeout installation

* Removes all device specific back-ends for the base-hw timer driver and
  implements a generic back-end taht uses the kernel timeout API

* Adds assertions about the kernel timer frequency that originate from the
  requirements of the the kernel timeout API and adjusts all timers
  accordingly by using the their internal dividers

* Introduces the Kernel::Clock class. As member of each Kernel::Cpu object
  it combines the management of the timer of the CPU with a timeout scheduler.
  Not only the timeout API uses the timeout scheduler but also the CPUs job
  scheduler for installing scheduling timeouts.

* Introduces the Kernel::time_t type for timer tic values and values inherited
  from timer tics (like microseconds).

Fixes #1972
2016-05-26 15:54:15 +02:00
Martin Stein
722fd85bc1 hw: higher names for core restricted syscalls
To avoid the need for adapting the names of the core restricted syscalls
each time we add a public syscall (restricted names must always be
greater than public names), let restricted syscall names simply start at
100 (we should never have more than 100 public syscalls).

Ref #1972
2016-05-26 15:54:15 +02:00
Martin Stein
608df38402 hw: add dummy config to kernel tests
Building a kernel test produced an error about a missing config
apparently because of recent changes in the run tool. So, we add
a dummy XML node as config.

Ref #1972
2016-05-26 15:54:15 +02:00
Alexander Boettcher
6b94e761f8 input/ps2: add volume up/down/mute, sysrq, screenlock
This commit renames KEY_COFFEE to KEY_SCREENLOCK, which is more
descriptive.

Issue #1962
2016-05-26 15:54:15 +02:00
Alexander Boettcher
66b7a01d58 nova: show pd info during unresolvable faults
Fixes #1977
2016-05-26 15:54:14 +02:00
Alexander Boettcher
57f47db823 platform_drv/x86: support ACPI reset
Evaluate fadt xml node in report from acpi_drv. If the io ports in the range
of 0xcf8+4 are necessary for the reset than the platform driver will
react on the 'system' state 'reset' and reboot.

Issue #1962
2016-05-26 15:54:14 +02:00
Alexander Boettcher
38c5abbaad libports: add acpica library
Fixes #1962
2016-05-26 15:54:14 +02:00
Alexander Boettcher
ee7f965061 platform_drv/x86: use new component and new env
Issue #1962
2016-05-26 15:54:13 +02:00
Alexander Boettcher
db20e1d87b acpi_drv: report ACPI reset configuration
Will be/can be used by the platform driver to reset the machine, iif the
platform driver owns the resources, e.g. the I/O ports of PCI config access.

Issue #1962
2016-05-26 15:54:13 +02:00
Alexander Boettcher
6b0022f032 platform_drv: drop deprecated config syntax
- policy entry without deprecated rom node
- skip if_arg and use label directly for routing

see Issue #1801

Issue #1962
2016-05-26 15:54:13 +02:00
Alexander Boettcher
b9b8114a4e nova: support fixed ACPI event delivery by kernel
Issue #1962
2016-05-26 15:54:13 +02:00