Commit Graph

1767 Commits

Author SHA1 Message Date
Christian Prochaska
17401d6a63 Noux: increase tool_chain_auto run script timeout for Fiasco.OC
Fixes #1932
2016-04-11 11:51:44 +02:00
Christian Prochaska
a0d08d4bd1 Noux: workaround for libtool problem
Add the prefix '-Wl,' to static library names to keep them before shared
library names after libtool's command line reorderings.

Fixes #1928
2016-04-11 11:51:44 +02:00
Alexander Boettcher
f153bc9a74 platform_drv: use server framework for device_pd
Fixes #1927
2016-04-11 11:51:44 +02:00
Christian Helmuth
0cacd41823 base: forward arguments in unmanaged_singleton
This enables the use of reference types for constructor arguments.
2016-04-11 11:51:44 +02:00
Christian Helmuth
02f84f98c3 Explicitly set Qemu disk-image format to raw
Prevents the annoying warning about

  WARNING: Image format was not specified for 'bin/test.img' and probing guessed raw.
           Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
           Specify the 'raw' format explicitly to remove the restrictions.
2016-04-11 11:51:44 +02:00
Christian Helmuth
1f719dee26 Prevent warnings about unconstructed attached ROMs
If attached ROM dataspaces are not valid after update(), code that uses
these ROMs produces

  void Genode::Volatile_object< <template-parameter-1-1> >::_check_constructed() const [with MT = Genode::Attached_dataspace]: Deref_unconstructed_object
2016-04-11 11:51:43 +02:00
Christian Prochaska
146c694513 Reduce the maximum LOG session string length
The maximum possible string length is defined by the platform with the
lowest maximum IPC payload size (currently OKL4).

Fixes #1919
2016-04-11 11:51:43 +02:00
Johannes Schlatow
febb0cc13d config: deal gracefully with invalid dataspace cap
In scenarios where the config ROM is loaded from a report ROM or any
other non-static ROM, config might try to access an invalid dataspace
capability. This patch prevents the component from aborting in this
case.

Fixes #1914
2016-04-11 11:51:43 +02:00
Johannes Schlatow
07e10a04f9 tcp_terminal: disconnect socket on empty read
The tcp_terminal kept the socket open even though the client
disconnected. As a result, reconnecting to the tcp_terminal was not
working.

Fixes #1913
2016-04-11 11:51:43 +02:00
Johannes Schlatow
d32b5a54b6 base: remove duplicates from dependency list
This patch prevents duplicates in the DEPS argument to be passed to the build
stage.

Fixes #1916
2016-04-11 11:51:43 +02:00
Norman Feske
cda07b7da0 base: simplification of the IPC code
This commit replaces the stateful 'Ipc_client' type with the plain
function 'ipc_call' that takes all the needed state as arguments.
The stateful 'Ipc_server' class is retained but it moved from the public
API to the internal ipc_server.h header. The kernel-specific
implementations were cleaned up and simplified. E.g., the 'wait'
function does no longer exist. The badge and exception code are no
longer carried in the message buffers but are handled in kernel-specific
ways.

Issue #610
Issue #1832
2016-04-11 11:51:42 +02:00
Norman Feske
47878bd3e1 Remove 'Ipc_istream' and 'Ipc_ostream' from API
Fixes #610
2016-04-11 11:51:42 +02:00
Norman Feske
4cdfb9bc2f base: remove 'Native_connection_state' from API
Issue #1832
2016-04-11 11:51:42 +02:00
Norman Feske
da5d182ad3 base: remove 'Native_thread' from public API
Issue #1832
2016-04-11 11:51:42 +02:00
Norman Feske
dc0ebba1ec base-hw: clean up native_types.h 2016-03-18 22:43:05 +01:00
Norman Feske
84bfb4c04c base: remove 'Native_thread_id' type
Issue #1832
2016-03-18 22:43:01 +01:00
Emery Hemingway
da16ecc002 libc: remove trailing slash during file operations
POSIX stipulates that a trailing '/' on a path is valid for any
operation where the final path element is a directory.

Fixes #1330
2016-03-17 17:15:32 +01:00
Stefan Kalkowski
5085ad36c3 tool: remove deprecated 'make prepare' mechanism
Fix #1897
2016-03-17 17:02:04 +01:00
Christian Helmuth
c53bbfa83c noux: remove unused binary from fork test 2016-03-17 17:02:04 +01:00
Norman Feske
9b0eb720b0 base: remove 'Native_utcb' from public API
Fixes #1905
2016-03-17 17:02:04 +01:00
Waylon Cude
28117fee12 Added rust support
Rust relies on atomic builtins, which are not implemented in libgcc for
ARM. One is implemented in rust, which is sufficient to get the
current rust test to run.

Issue #1899
2016-03-17 17:02:04 +01:00
Tomasz Gajewski
611a73be36 Fixed inconsistency in XML parser
Changed Xml_node::next() to treat text between nodes in the same
manner like Xml_node::_init_end_tag which counts number of subnodes.

Issue #1424
2016-03-15 11:57:52 +01:00
Tomasz Gajewski
4a0b63431f Extended test for XML node
Added function to print tokens.
Added test for text mixed with nodes.

Issue #1424
2016-03-10 17:08:53 +01:00
Norman Feske
cf6f3f46f8 Test for the XML parser
Issue #1424
2016-03-10 17:08:52 +01:00
Norman Feske
9a3185f8ed base-linux: remove chroot support
Fixes #1903
2016-03-08 17:00:54 +01:00
Norman Feske
76db3b9c06 base: retire 'Native_config'
This commit moves the parameters of the stack area to the base-internal
header 'stack_area.h'.

Issue #1832
2016-03-08 17:00:54 +01:00
Josef Söntgen
2490e399dc ldso: check binary pointer before lookup
Check if the binary pointer is valid before attempting to lookup the
symbol. Shared objects with unresolved symbols and missing depencies,
e.g a library that references 'errno' but is not linked against libc,
will now produce an error message when they are loaded by the dynamic
linker.

Fixes #1904.
2016-03-08 17:07:36 +01:00
Emery Hemingway
f46a504bb6 use Arg_string::set_arg_string to set session labels
Issue #1861
2016-03-07 16:10:32 +01:00
Emery Hemingway
110d71c2a8 input_merger: set source label with set_arg_string
Fixes #1861
2016-03-07 16:10:32 +01:00
Emery Hemingway
723d9e7784 util/arg_string.h: set_arg_string
Convenience function to set x="y" style arguments.

Issue #1861
2016-03-07 16:10:32 +01:00
Emery Hemingway
23c1d4c66d libc, vfs: rename improvements
Perform POSIX rename checks at the libc VFS plugin.
Clarify rename at VFS fs, ram, single, and tar file systems.

Issue #1900
Fixes #1782
2016-03-07 12:40:04 +01:00
Emery Hemingway
d0735b1734 Move SQLite to genode-world
Fixes #1874
2016-03-07 12:38:30 +01:00
Christian Helmuth
688e86ab68 core: increase initial quota to 224K 2016-03-07 12:34:47 +01:00
Norman Feske
7f73e5e879 base: hide internals of the Thread API
This patch moves details about the stack allocation and organization
the base-internal headers. Thereby, I replaced the notion of "thread
contexts" by "stacks" as this term is much more intuitive. The fact that
we place thread-specific information at the bottom of the stack is not
worth introducing new terminology.

Issue #1832
2016-03-07 12:34:46 +01:00
Norman Feske
3c686fc9c6 libports: fix warning in x86emu 2016-03-07 12:34:46 +01:00
Norman Feske
8132a16137 base-linux: make linux-specific headers private
The interfaces linux_cpu_session, local_capability, linux_dataspace,
linux_native_pd are mere implementation necessities. They are meant for the
internal use by the framework only. So it is appropriate to move them to
base/internal/.

Issue #1832
2016-03-07 12:34:46 +01:00
Norman Feske
6773d631b9 fiasco: remove thread_helper.h from public API
Issue #1832
2016-03-07 12:34:46 +01:00
Norman Feske
1a19ca5f7b base-fiasco/sel4: unified cancelable_lock.h
On seL4 and L4/Fiasco, we employ a simple yielding spinlock as lock
implementation. Consequently these base platforms used to have a
simplified header. However, since the regular cancelable_lock has all
the member variables needed to implement a spinlock, we can simply use
the generic header on those two platforms too, just leaving some other
parts of the generic header unused. So at API level, the difference is
not visible.

Issue #1832
2016-03-07 12:34:45 +01:00
Norman Feske
3473955212 base-linux/nova: unify include/rm_session/client.h
By moving the stub implementation to rm_session_client.cc, we can use
the generic base/include/rm_session/client.h for base-linux and
base-nova and merely use platform-specific implementations.

Issue #1832
2016-03-07 12:34:45 +01:00
Norman Feske
6e7f7bdad4 base: move crt0.h and elf.h to base/internal
Those headers remained unused outside the internal framework. So it is
better to remove them from the public API.

Issue #1832
2016-03-07 12:34:45 +01:00
Norman Feske
2e701f9afa base: update include guards
This patch cleans up the include guards, assisted by the
tool/fix_include_ifndef script.
2016-03-07 12:34:45 +01:00
Norman Feske
6de763cb0b base-okl4: remove unmaintained porting steps 2016-03-07 12:34:45 +01:00
Norman Feske
e6729316ff base: uniform base-internal header structure
This patch establishes a common organization of header files
internal to the base framework. The internal headers are located at
'<repository>/src/include/base/internal/'. This structure has been
choosen to make the nature of those headers immediately clear when
included:

  #include <base/internal/lock_helper.h>

Issue #1832
2016-03-07 12:34:45 +01:00
Norman Feske
be496c6dc1 base: remove kernel-specific base/sleep.h
With this patch, the platform differences reside solely in the
implementation of the base library.

Issue #1832
2016-03-07 12:34:44 +01:00
Norman Feske
62b1c55399 Integrate CAP session into PD session
This patch integrates the functionality of the former CAP session into
the PD session and unifies the approch of supplementing the generic PD
session with kernel-specific functionality. The latter is achieved by
the new 'Native_pd' interface. The kernel-specific interface can be
obtained via the Pd_session::native_pd accessor function. The
kernel-specific interfaces are named Nova_native_pd, Foc_native_pd, and
Linux_native_pd.

The latter change allowed for to deduplication of the
pd_session_component code among the various base platforms.

To retain API compatibility, we keep the 'Cap_session' and
'Cap_connection' around. But those classes have become mere wrappers
around the PD session interface.

Issue #1841
2016-03-07 12:34:44 +01:00
Norman Feske
b1910cdd54 Integrate SIGNAL session into PD session
This patch removes the SIGNAL service from core and moves its
functionality to the PD session. Furthermore, it unifies the PD service
implementation and terminology across the various base platforms.

Issue #1841
2016-03-07 12:34:44 +01:00
Norman Feske
705ac74498 CLI monitor: remove unused GDB command
This patch removes the support for executing subsystems of CLI monitor
within the GDB monitor. There are multiple reasons: First, the feature
remained unused for multiple years. Second, it relied on the base/elf.h
header to determine whether the started binary is dynamically or
statically linked. This header, however, is going to be removed from the
Genode API. Third, the feature will eventually break with the upcoming
changes of how components are bootstrapped. Finally, there is the plan
to turn CLI monitor into a sole front end of a dynamically configurable
init component. Once we pursue this plan, we'd need to reconsider the
GDB support anyway.

Issue #1832
2016-03-07 12:34:44 +01:00
Norman Feske
5d559a0699 Move util/volatile_object.h from os to base 2016-03-07 12:34:44 +01:00
Alexander Boettcher
079484c5d0 Use base-hw as x86 target for noux_tool_chain_auto
The commit avoids the need to have contrib sources of the kernel
available for this run script. We actually just want to build core and
not the kernel itself, which is always required after recent changes in
the ports tool.
2016-03-07 12:34:44 +01:00
Christian Helmuth
0d6dc46bbb sel4: use O3 optimization level
This is the default optimization level in the original seL4 SDK. By
adapting to O3, we work around a bug [1] in version 2.1.0 that only
shows on low optimization levels.

[1] https://github.com/seL4/seL4/issues/20
2016-03-07 12:34:43 +01:00
Martin Stein
ff10687a6c toolchain: report missing ports at once
Previously, ports that were needed for a scenario and that were not
prepared or outdated, triggered one assertion each during the second
build stage. The commit slots a mechanism in ahead that gathers all
these ports during the first build stage and reports them in form of a
list before the second build stage is entered.  This list can be used
directly as argument for tool/ports/prepare_port to prepare respectively
update the ports. If, however, this mechanism is not available, for
example because a target is build without the first build stage, the old
assertion still prevents the target from running into troubles with a
missing port.

Fixes #1872
2016-03-07 12:34:43 +01:00
Emery Hemingway
74342ca2fc lib/lwip: fix import description
The REP_DIR variable does not remain consistent when importing from
other repositories.

Fixes #1888
2016-03-07 12:34:43 +01:00
Igor Podkopaev
b9263a7f4e ahci: routing policies based on device serial/model
Fixes #1882
2016-03-07 12:34:43 +01:00
Christian Helmuth
c17069b35e ports: update hash of gcc (with risc-v patches) 2016-03-07 12:33:14 +01:00
Norman Feske
55506f432e window layouter: small documentation fix 2016-02-26 12:20:57 +01:00
Alexander Boettcher
e5eb1000c7 nova: remove obsolete parts of documentation 2016-02-26 12:19:25 +01:00
Christian Helmuth
9b69c93736 doc: update README, components.txt 2016-02-26 12:19:25 +01:00
Christian Helmuth
66006a0313 libc: provide more net-specific header files 2016-02-26 11:36:55 +01:00
Adrian-Ken Rueegsegger
3a9e5cbd8c Relax tool checks of Muen port
The gnat and gprbuild tools are not necessarily in the PATH when
preparing the port since the effective location is specified by the
--image-muen-gnat-path RUN_OPT.
2016-02-26 11:36:55 +01:00
Norman Feske
9e6f3be806 sel4: update to version 2.1
This patch updates seL4 from the experimental branch of one year ago to
the master branch of version 2.1. The transition has the following
implications.

In contrast to the experimental branch, the master branch has no way to
manually define the allocation of kernel objects within untyped memory
ranges. Instead, the kernel maintains a built-in allocation policy. This
policy rules out the deallocation of once-used parts of untyped memory.
The only way to reuse memory is to revoke the entire untyped memory
range. Consequently, we cannot share a large untyped memory range for
kernel objects of different protection domains. In order to reuse memory
at a reasonably fine granularity, we need to split the initial untyped
memory ranges into small chunks that can be individually revoked. Those
chunks are called "untyped pages". An untyped page is a 4 KiB untyped
memory region.

The bootstrapping of core has to employ a two-stage allocation approach
now. For creating the initial kernel objects for core, which remain
static during the entire lifetime of the system, kernel objects are
created directly out of the initial untyped memory regions as reported
by the kernel. The so-called "initial untyped pool" keeps track of the
consumption of those untyped memory ranges by mimicking the kernel's
internal allocation policy. Kernel objects created this way can be of
any size. For example the phys CNode, which is used to store page-frame
capabilities is 16 MiB in size. Also, core's CSpace uses a relatively
large CNode.

After the initial setup phase, all remaining untyped memory is turned
into untyped pages. From this point on, new created kernel objects
cannot exceed 4 KiB in size because one kernel object cannot span
multiple untyped memory regions. The capability selectors for untyped
pages are organized similarly to those of page-frame capabilities. There
is a new 2nd-level CNode (UNTYPED_CORE_CNODE) that is dimensioned
according to the maximum amount of physical memory (1M entries, each
entry representing 4 KiB). The CNode is organized such that an index
into the CNode directly corresponds to the physical frame number of the
underlying memory. This way, we can easily determine a untyped page
selector for any physical addresses, i.e., for revoking the kernel
objects allocated at a specific physical page. The downside is the need
for another 16 MiB chunk of meta data. Also, we need to keep in mind
that this approach won't scale to 64-bit systems. We will eventually
need to replace the PHYS_CORE_CNODE and UNTYPED_CORE_CNODE by CNode
hierarchies to model a sparsely populated CNode.

The size constrain of kernel objects has the immediate implication that
the VM CSpaces of protection domains must be organized via several
levels of CNodes. I.e., as the top-level CNode of core has a size of
2^12, the remaining 20 PD-specific CSpace address bits are organized as
a 2nd-level 2^4 padding CNode, a 3rd-level 2^8 CNode, and several
4th-level 2^8 leaf CNodes. The latter contain the actual selectors for
the page tables and page-table entries of the respective PD.

As another slight difference from the experimental branch, the master
branch requires the explicit assignment of page directories to an ASID
pool.

Besides the adjustment to the new seL4 version, the patch introduces a
dedicated type for capability selectors. Previously, we just used to
represent them as unsigned integer values, which became increasingly
confusing. The new type 'Cap_sel' is a PD-local capability selector. The
type 'Cnode_index' is an index into a CNode (which is not generally not
the entire CSpace of the PD).

Fixes #1887
2016-02-26 11:36:55 +01:00
Christian Prochaska
2df6cd64d4 vbox: implement 'drvNicAsyncIoWakeup()'
Fixes #1893
2016-02-26 11:36:54 +01:00
Reto Buerki
3c23ddb2d5 hw_x86_64_muen: Add support for MSI
Use the new Sinfo::get_dev_info function to retrieve device information
in the platform-specific get_msi_params function. If the requested
device supports MSI, set the IRQ and MSI address/data register values to
enable MSIs in remappable format (see VT-d specification, section
5.1.2.2).

Currently only one MSI per device is supported as the subhandle in the
data register is always set to 0.
2016-02-26 11:36:54 +01:00
Reto Buerki
d137f0f2bf hw_x86_64_muen: Extend sinfo API with device info
The new Sinfo::get_dev_info function can be used to retrieve information
for a PCI device with given source-id (SID). The function returns false
if no device information for the specified device exists.
2016-02-26 11:36:54 +01:00
Reto Buerki
3350c6bf53 hw: Introduce platform-specifc MSI function
The platform-specific get_msi_params function returns MSI parameters for
a device identified by PCI config space address. The function returns
false if either the platform or the device does not support MSI mode of
operation.
2016-02-26 11:36:54 +01:00
Reto Buerki
11ee72eaa6 hw: Add MSI variables to Irq_session_component
Extend the base-hw Irq_session_component class with _is_msi, _address
and _value variables required to support MSI mode of operation.

Return MSI configuration in info() function if _is_msi is set to true.
2016-02-26 11:36:54 +01:00
Reto Buerki
f1d2d7251d hw_x86_64_muen: Include static ACPI report ROM
Enable the ACPI functionality in the platform_drv on hw_x86_64_muen and
provide a simple generated XML report as ROM session in order to make
the PCI configuration space available.

This is a requirement to implement support for MSI on hw_x86_64_muen.
2016-02-26 11:36:53 +01:00
Tomasz Gajewski
74dd356dcd Add check for ACPI version during parsing tables, fix #1883 2016-02-26 11:36:53 +01:00
Reto Buerki
ed54bb2724 hw_x86_64_muen: Adjust _ram_regions function
The available RAM region starts at 25 MiB, not 2 MiB. Also, increase the
region size to 256 MiB.
2016-02-26 11:36:53 +01:00
Reto Buerki
1abff01c66 Update hw_x86_64_muen doc for Muen release 0.7.0 2016-02-26 11:36:53 +01:00
Reto Buerki
aa8e5c5016 Update Muen port to release version 0.7.0 2016-02-26 11:36:53 +01:00
Reto Buerki
39378b9982 Unify naming of libc VFS RAM run script
The new name matches the one listed in tool/autopilot.list.
2016-02-26 11:36:53 +01:00
Josef Söntgen
47b5ba3a89 linux/audio: use Server framework
In addition to now using the framework the playback is triggered by a
timer. For now it is a periodic timer that triggers every 11 ms which
is roughly the current Audio:out period (*).

The driver now also behaves like the other BSD Audio_out driver, i.e,
it always advances the play pointer. That is vital for the Audio_out
stack above the driver to work properly (e.g. the mixer).

(*) It stands to reason if it would be better to use the async ALSA
    timer interface instead of using the Timer session.

Fixes #1892.
2016-02-26 11:36:52 +01:00
Sebastian Sumpf
a8c27b51b5 scout: add config library
For some reason 'os/config.h' is imported through 'launchpad.h', when linking an
undefined symbol ('Genode::config') is produced, which actually should not
happen.
2016-02-26 11:36:52 +01:00
Sebastian Sumpf
a66df55f4e timer: add dummy implementation for RISC-V 2016-02-26 11:36:52 +01:00
Sebastian Sumpf
e367c99864 cli_monitor: build for RISC-V 2016-02-26 11:36:52 +01:00
Sebastian Sumpf
11d242de85 rpc_name: don't build
It is an example and does segfault the riscv tool chain
2016-02-26 11:36:52 +01:00
Sebastian Sumpf
1ff7de62f6 muen: remove depenency to ports for make target all 2016-02-26 11:36:52 +01:00
Sebastian Sumpf
d17134baef ldso: Support for RISC-V
issue #1880
2016-02-26 11:36:51 +01:00
Mark Vels
1668983efa base-hw: RISC-V Rocket Core on Zynq
This commit adds rocket core on the Zynq FPGA support to base HW. It also takes
advantage of the new timer infrastructure introduced with the privileged 1.8 and
adds improved TLB flush support.

fixes #1880
2016-02-26 11:36:51 +01:00
Sebastian Sumpf
c246a0d194 base-hw: initial RISC-V support
using the spike instruction emulator

issue #1880
2016-02-26 11:36:51 +01:00
Sebastian Sumpf
8c6e3c6251 riscv: create_builddir support
issue #1880
2016-02-26 11:36:50 +01:00
Sebastian Sumpf
d424134073 cxx: Simplify C++ exception wrapper functions
The wrapper functions (e.g., 'Unwind_*' and friends) now have the same signature
as the original function in 'libgcc', reside in a separate C file which is
archived to cxx.lib.a. In supc++.o we prefix the wrapped functions with '_cxx_'.

This also enables support for riscv.

related to #1880
2016-02-16 14:38:02 +01:00
Sebastian Sumpf
bfe5208e0e base: Align heap/slab allocation to machine word size
required by riscv

related to #1880
2016-02-16 14:38:02 +01:00
Josef Söntgen
6d1d8afa57 usb_block_drv: USB mass storage bulk-only driver
This driver uses the Usb session interface and provides a Block session
to its client. See _repos/os/src/drivers/usb_block/README' for more
information.

Fixes #1885.
2016-02-16 14:03:38 +01:00
Josef Söntgen
35314c8397 linux/audio: set ALSA device in the configuration
Instead of only hardcoding "hw" read 'alsa_device' attribute from the
config node to determine the proper playback device. The default value
is still "hw" in case the attribute is not present.

Fixes #1884.
2016-02-15 18:56:40 +01:00
Sebastian Sumpf
6b1923bbe6 rump_fs: handle non-existing root directory 2016-02-12 09:17:23 +01:00
Norman Feske
3680a79f38 window layouter: omit superfluous resize request
This patch removes a superfluous resize request at the creation time of
a new window, which resulted from _requested_size being initialized with
zero whereas the _geometry was initialized with the actual window
geometry. In some cases, this inconsistency led to the report of a new
resize request for the size 0x0, which is obviously wrong. I.e., it
leads clients to believe that the user has closed the window.
2016-02-10 16:15:53 +01:00
Norman Feske
56d98824e3 window layouter: reset drag state when finalized
This patch resets the part of the window state that is responsible the
dragging of window controls once the drag operation is finalized.
Without it, the window was wrongly positioned when leaving the maximized
state after a previous resize operation.
2016-02-10 15:41:52 +01:00
Norman Feske
2936cbebfd loader,nit_fb,wm: work-around for NOVA's cap revokes 2016-02-09 16:56:50 +01:00
Norman Feske
d198f07890 window layouter: keyboard actions
This patch adds support for manipulating the window layout with keyboard
actions. It supports the toggling of fullscreen (aka maximize), the
raising of the currently focused window, and the focusing the next/previous
window.
2016-02-09 16:06:40 +01:00
Norman Feske
2a916b143d window layouter: key sequence handling
This patch adds the mechanics for detecting key sequences to the window
layouter. Sequences for layouter actions can be expressed in the
layouter configuration. They cannot trigger any real action yet.
2016-02-09 16:06:40 +01:00
Norman Feske
6f27f85c3d wm.run: enable decorator controls 2016-02-09 16:06:40 +01:00
Norman Feske
44e6870e4e window layouter: respond to decorator margins 2016-02-09 15:38:34 +01:00
Norman Feske
54045771c7 window decorator: report decorator margins 2016-02-09 15:28:47 +01:00
Norman Feske
31888c610a wm: propagate nitpicker mode changes to layouter 2016-02-09 14:30:28 +01:00
Norman Feske
752ddc153e window layouter: respond to nitpicker mode changes 2016-02-09 14:30:28 +01:00
Norman Feske
37044eaad8 window layouter: internal restructuring
This patch splits the implementation of the window layouter into several
headers to ease the upcoming addition of new functionality.
2016-02-09 14:30:28 +01:00
Norman Feske
ff8d790f93 themed_decorator: cope with missing pointer info 2016-02-09 14:29:01 +01:00
Norman Feske
c3b415ffe8 wm: omit superfluous window-list updates 2016-02-09 14:28:50 +01:00
Norman Feske
e34f211dc1 themed_decorator: allow skipping of decorations
This patch weakens the themed decorator's demands with respect to the
supplied theme data. It no longer strictly requires the specification of
the '<closer>', '<title>', and '<maximizer>' nodes and the accompanied
png/tff data. Furthermore, the default.png can be left out if both decor
and aura have a size of zero.
2016-02-09 14:28:43 +01:00
Norman Feske
27b71a0876 window layouter: label-dependent window policies
This patch enhances the layouter to apply a label-dependent policy
for the placement of new windows. The policy may contain the
attributes 'xpos', 'ypos', and 'maximized'. If the latter is set
to "yes", the matching window will appear in maximized state.
2016-02-09 14:28:40 +01:00
Norman Feske
101b868cd4 gems: prevent invalid Nitpicker_buffer objects
This patch ensures that we never request a zero-sized virtual
framebuffer from nitpicker even when instantiating the object with zero
width or height. It therebu removes the burden of handling the resulting
invalid framebuffer dataspace from the user of the Nitpicker_buffer
utility.
2016-02-09 14:28:30 +01:00
Christian Helmuth
f3cce99933 Adapt terminal_mux.run to changes in cli_monitor
Subsystems are now configured via .subsystem files in the VFS directory
/subsystems. The adaption uses one <inline> node per subsystem.
2016-02-09 08:01:40 +01:00
Sebastian Sumpf
191cfd2c53 usb_drv: Add Natural Ergonomic 4000 keyboard support
fixes  #1878
2016-02-05 17:06:26 +01:00
Josef Söntgen
c10ad4ff01 ps2_drv: back down after unsucessful AUX access
The driver might end up in an endless loop on systems that do not
contain an i8042 controller when probing the AUX interface. This
leads to busy looping and in the end to not annoucing the Input
service. Components that wait for the announcement of the service
will therefore hang as well.

Normally a service gets announced only if it is usable but in this
case this is inconvient because it renders all scenarios that use
the input_merger non working on x86 systems that only provide USB
input and do not have PS/2 at all.

Ideally, the PS/2 driver should only be started if the system needs it.
That is currently not feasible and for the time being we post-pone the
inevitable and back down after several unsucessful attempts to read
from the AUX interface while initializing the driver.

Fixes #1871.
2016-02-05 10:59:10 +01:00
Alexander Boettcher
f572cf8a05 nova: stop submitting signals on dead sm caps
Fixes #1877
2016-02-05 10:57:04 +01:00
Alexander Boettcher
73de12999d ahci: fix ready status handling of ahci ports
Fixes #1875
2016-02-05 10:52:48 +01:00
Josef Söntgen
46e4c3dc9b usb_drv: release interfaces on Usb session close
Interfaces that have been claimed by a component always have to be
released when the session is closed in case the component
malfunctioned.

Fixes #1869.
2016-02-05 10:47:45 +01:00
Josef Söntgen
245dfc2c08 dde_ipxe: fix probing multiple NICs
Fixes #1870.
2016-02-05 10:47:45 +01:00
Christian Helmuth
81ff63c66b vfs stress: prevent warnings when logging size_t
Thanks @gapry for the observation.

Fixes #1868
2016-02-05 10:47:45 +01:00
Christian Helmuth
4506912f6e dde_ipxe: skip MAC/PHY reset on Intel NICs
Inspired by the mailing-list posting [1], this commit removes the
MAC/PHY reset for all Intel cards and effectively prevents the bandwidth
drop to 10 MBit/s (e.g., on i217lm). I understand it as preliminary fix
for practical reasons - a real fix would be to update the ipxe port and
monitor for more postings like the one mentioned.

[1] http://lists.ipxe.org/pipermail/ipxe-devel/2015-December/004511.html
2016-02-05 10:47:45 +01:00
Christian Helmuth
20c9b02326 Mark Server::Entrypoint noncopyable 2016-02-05 10:47:45 +01:00
Stefan Kalkowski
3bfd2aa3c9 nic_bridge: use the server framework (fix #1865)
Let the Server::Entrypoint do all the work: RPC and signal handling.
Additionally get rid of the Net::Env global environment.
2016-02-05 10:47:45 +01:00
Josef Söntgen
71b621775b vbox: remove USB (OHCI) pass-through support
The usage of the USBProxyDevice is no longer necessary because USB
pass-through is now supported by using the xHCI device model.

Issue #1863.
2016-02-05 10:47:44 +01:00
Josef Söntgen
a62859bb39 vbox: Enable XHCI + usb filter in runscript
Issue #1863.
2016-02-05 10:47:44 +01:00
Josef Söntgen
6a2aa903ca vbox: xHCI device model for USB pass-through
This device model enables USB2 and USB3 device passthrough support
for guests running in VirtualBox. It uses the qemu-usb library.

Fixes #1863.
2016-02-05 10:47:44 +01:00
Sebastian Sumpf
b2a1129bd9 vbox: support unaligned mmio writes
Issue #1863
2016-02-05 10:47:43 +01:00
Sebastian Sumpf
a640be9a24 qemu-usb: xHCI model as library
NEC USB3 controller ported from Qemu 2.4.1. See README for more
details.

Issue #1863.
2016-02-05 10:47:43 +01:00
Josef Söntgen
e233fe0b71 os: add component for filtering USB devices report
The 'usb_report_filter' component takes the devices report from the
USB driver and generates a new devices report after checking each
entry against its device white-list. Before emitting the new report
it changes the configuration of the USB driver to contain the
required policy entries.

See 'repos/os/src/app/usb_report_filter/README' for more details.

Issue #1863.
2016-01-27 16:15:34 +01:00
Sebastian Sumpf
716eab21e3 usb_drv: change Usb session and raw driver
- Use 'label' attribute to identify device instead of
  bus/dev and vendor_id/product_id

- Implement release_interface RPC

- Report 'label' as well as 'bus' and 'dev'

- Add policy handling to raw driver (includes reconfiguration
  at runtime)

- Use own memory backing store for large DMA allocations

Issue #1863.
2016-01-27 16:15:34 +01:00
Christian Helmuth
3daa8a3d04 report_rom: update documentation of policy config 2016-01-26 16:50:20 +01:00
Josef Söntgen
8982bc5843 intel_fb_drv: handle displays with EDID extensions
Fixes #1860.
2016-01-26 16:25:54 +01:00
Christian Helmuth
2a698ffd5f signal: prevent submission of contexts w/o receiver
This prevents a sporadic null-pointer dereference in the nic_loopback
test, which occurred once in 100 runs. I'm not sure if there's still a
race window (we may investigate) with context dissolve.
2016-01-26 16:20:47 +01:00
Stefan Kalkowski
b84a47b4db lxip: do not poll for nic session signals
Instead of polling for new Nic session signals, when waiting for
network packets with a timeout, block on the signal receiver, and
register a timer event beforehand using the same signal receiver.

Fix #1862
Ref #1864
2016-01-26 16:20:47 +01:00
Stefan Kalkowski
5fc9f68941 hw_x86_64: do not reference any muen specifics
Do not build core-muen_on library without the muen soecifier set.
Do not reference files of the muen contrib directory in the first
pass of make's rule analysis, when parding the muen specific kernel
makefile.

Fix #1859
2016-01-26 16:20:47 +01:00
Stefan Kalkowski
c3d4802ac8 hw: re-implement lazy FPU context switch
The new implementation of the FPU and FPU context is taken out to
separate architecture-dependent header files. The generic Cpu_lazy_state
is deleted. There is no hint about the existence of something like an
FPU in the generic non-architexture-dependent code anymore. Instead the
architecture-dependent CPU context of a thread is extended by an FPU
context where supported.

Moreover, the current FPU implementations are enhanced so that threads
that get deleted now release the FPU when still obtaining it.

Fix #1855
2016-01-26 16:20:38 +01:00
Martin Stein
f9ccfe3a04 tz_vmm usb_armory: document guest login data
The login data is otherwise only indirectly documented through the command that configures it in the rootfs tutorial [1].

[1] https://github.com/inversepath/usbarmory/wiki/Preparing-a-bootable-microSD-image#root-file-system

Fixes #1856
2016-01-26 16:20:38 +01:00
Alexander Boettcher
0423369f7f base: Unbound_thread exception in rm::add_client 2016-01-26 16:20:38 +01:00
Alexander Boettcher
7598f09295 nova: check for valid platform_pd pointer 2016-01-26 16:20:38 +01:00
Christian Helmuth
8e50464a1a linux: remove lx_environ symbol from audio_drv 2016-01-26 16:20:38 +01:00
Christian Helmuth
a09172aa7e linux: fix whitespace in nic_drv 2016-01-26 16:20:37 +01:00
Norman Feske
f045b1c680 ports: refined noux_fork test
Thanks to the log_terminal server, we no longer rely on a separate UART
for the noux output. We also skip the indirection of using a tar archive
but rather start the test-noux_form program as a mounted ROM module.
2016-01-26 16:20:37 +01:00
Norman Feske
fc6c2537ee vfs: add Rom_file_system::dataspace
By providing this function, we can start a mounted ROM module as program
under Noux.
2016-01-26 16:20:37 +01:00
Norman Feske
900c795df2 os: add Attached_rom_dataspace::cap accessor
The accessor works analogously to the Attached_dataspace.
2016-01-26 16:20:37 +01:00
Stefan Kalkowski
f539cf1231 hw: adjust core's signal thread's stack size
The stack size should be architecture dependent.

Fix #1854
2016-01-26 16:20:37 +01:00
Stefan Kalkowski
5afad64586 hw: preserve core's context-area (Fix #1853)
Remove core's context-area from its virtual memory allocator
2016-01-26 16:20:37 +01:00
Stefan Kalkowski
b0b4c3c7fa noux: consider stack alignment constraints
The interim stack in a forked noux process has to consider the architecture
dependent stack alignment constraints.

Fix #1852
2016-01-26 16:20:37 +01:00
Stefan Kalkowski
040cd95580 noux: fix context-area re-initialization in fork
With commit e74b53d5dd the fork semantic in noux
changed slightly, and broke platforms like hw & sel4, where the UTCB is mapped
directly into the thread's context area. The change moved the re-initialization
to a point where the new noux process' thread stack-pointer was already switched
back to the context area. But to re-initialize the context area RPC calls must
be done, and the UTCB must be used therefore. On the other side the UTCB is
found implicitly by the stack-pointer, whereby a stack-pointer located in the
context-area refers to a UTCB that is expected to reside in the context-area
as well. But the UTCB gets overlayed inside the context area by the
context-area's re-initialization - we've come round in a circle.

This commit rolls back the move of the re-initialization routine. To preserve
the intention of the original commit, the context-area location is stored in
a static variable, so that the Native_config API is not needed anymore.

Fix #1851
2016-01-26 16:20:36 +01:00
Stefan Kalkowski
e143683196 noux: remove dummy local ram service (Fix #1850) 2016-01-26 16:20:36 +01:00
Christian Helmuth
1616295179 x86emu: download from xorg.freedesktop.org
ftp.x.org has not been available for a week now.
2016-01-26 16:20:36 +01:00
Stefan Kalkowski
7aff1895bf hw: enable SMP for ARM Cortex A9
This commit enables multi-processing for all Cortex A9 SoCs we currently
support. Moreover, it thereby enables the L2 cache for i.MX6 that was not
enabled until now. However, the QEMU variants hw_pbxa9 and hw_zynq still
only use 1 core, because the busy cpu synchronization used when initializing
multiple Cortex A9 cores leads to horrible boot times on QEMU.

During this work the CPU initialization in general was reworked. From now
on lots of hardware specifics were put into the 'spec' specific files, some
generic hook functions and abstractions thereby were eliminated. This
results to more lean implementations for instance on non-SMP platforms,
or in the x86 case where cache maintainance is a non-issue.

Due to the fact that memory/cache coherency and SMP are closely coupled
on ARM Cortex A9 this commit combines so different aspects.

Fix #1312
Fix #1807
2016-01-26 16:20:18 +01:00
Martin Stein
2b2007bc3f hw: add Pl310::Debug register definitions
Ref #1312
2016-01-15 16:42:12 +01:00
Martin Stein
c58de0d80e hw_panda: driver for Cortex-A9 wakeup generator
Ref #1312
2016-01-15 16:42:12 +01:00
Martin Stein
5755245609 hw: end interrupts SMP-safe on ARM (Ref #1312) 2016-01-15 16:42:12 +01:00
Stefan Kalkowski
166672fe16 hw: l2 cache initialization is platform specific
On ARM Cortex A9 platforms the external PL310 L2 cache controller
needs to be initialized dependent on the SoC. For instance on Pandaboard
it needs to call the firmware running in TrustZone's secure world,
on i.MX6 it initializes it directly, on other boards it doesn't need
to be initialized at all, because the bootloader already did so.
Therefore, we should implement the PL310 intialization in board specific
code and not in the base class implementation.

Ref #1312
2016-01-15 16:42:12 +01:00
Stefan Kalkowski
e05d26567d hw: make 'smp' property an aspect (Ref #1312)
This commit separates certain SMP aspects into 'spec/smp' subdirectories.
Thereby it simplifies non-SMP implementations again, where no locking
and several platform specific maintainance operations are not needed.
Moreover, it moves several platform specifics to appropriated places,
removes dead code from x86, and starts to turn global static pointers
into references that are handed over.
2016-01-15 16:42:12 +01:00
Alexander Boettcher
c0a2388978 x86: avoid warning if memory is attached twice
Issue #1848
2016-01-13 14:59:05 +01:00
Alexander Boettcher
cec3ca6a70 x86: use slave label to differentiate device PDs
Issue #1848
2016-01-13 14:59:05 +01:00
Alexander Boettcher
82e35326b7 os: support different binary name for slaves
Issue #1848
2016-01-13 14:59:04 +01:00
Alexander Boettcher
daf67f7baa intel_fb: remove x201 workaround
The workaround is no longer needed as we now propagate the proper device
ID as BDF to the kernel in the platform driver.

Issue #1848
2016-01-13 14:58:01 +01:00