Commit Graph

2638 Commits

Author SHA1 Message Date
Martin Stein
984be753ad base & exynos5: platform driver in affinity test
Ensures that the Exynos5 CPU is clocked equally no matter how the kernel
initialized it. This makes the result of this time critical test more
comparable.

fix #1162
2014-06-06 14:54:31 +02:00
Martin Stein
8d145bd80c hw & rpi: provide Pic::MAX_INTERRUPT_ID
fix #1160
2014-06-06 14:54:31 +02:00
Martin Stein
f53e4ff8f5 hw: align kernel stack appropriately
fix #1161
2014-06-06 14:54:31 +02:00
Martin Stein
8d43b67ca6 hw: map binaries of boot modules on demand
fix #1139
2014-06-06 14:54:31 +02:00
Martin Stein
f8be04bc70 base: extra section for binaries of boot modules
This enables us to map the binaries of the boot modules on demand at least in
base-hw.

ref #1139
2014-06-06 14:54:31 +02:00
Christian Helmuth
06a10b3695 hw: log "Test succeeded" in nested_init.run 2014-06-06 14:54:30 +02:00
Johannes Schlatow
b52da1045e nic_drv: read MAC and tap device from config
E.g.:
<nic mac="12:23:34:45:56:67" tap="tap1"/>

Fixes #1165.
2014-06-06 14:54:30 +02:00
Josef Söntgen
0f4d525eda dde_rump: implement rumpuser_dprintf()
Though we do not actually need this function, it is helpful while
debugging.

Fixes #1141.
2014-06-06 14:54:30 +02:00
Josef Söntgen
43cb97cd83 dde_rump: fix int casting warnings
Fixes #1141.
2014-06-06 14:54:30 +02:00
Josef Söntgen
65bdddbbdf dde_rump: rump_iso compare output on 64bit systems
Fixes #1141.
2014-06-06 14:54:30 +02:00
Christian Helmuth
2c15aaf67d linux: fix lx_rmap test to not stuck
The test did not fail actually. It just behaved strangely and got stuck
in the good case, which is fixed now.

Fixes #1121.
2014-06-06 14:54:08 +02:00
Christian Prochaska
023afebba1 Qt5: constrain the window buffer refresh area
With this patch, the information about the changed window area is taken
into account when refreshing the Nitpicker buffer.

Fixes #1132.
2014-06-06 14:54:08 +02:00
Christian Prochaska
17c22b2ac9 Qt5: use the Genode main thread
Now that it is possible to resize the stack of the Genode main thread, it
is not necessary anymore to create a new Genode thread as Qt main thread.

Fixes #1134.
2014-06-06 14:54:08 +02:00
Josef Söntgen
edfd90a1bc ram_blk: remove superfluous block_number check
block_number is Block::sector_t (uint64_t), which never can by less
than 0.

Fixes #1142.
2014-06-06 14:54:08 +02:00
Josef Söntgen
c9412d37b9 ram_blk: change blocksize output to decimal
Reading 200 instead of 512 is confusing.

Fixes #1142.
2014-06-06 14:54:08 +02:00
Christian Prochaska
14951649e4 dde_linux: implement memory barriers in USB driver
This patch implements the memory barrier macros in the USB driver for ARMv7
and x86.

Fixes #1159.
2014-06-06 14:54:08 +02:00
Norman Feske
0ed68a56b7 Use signals for delivering input events
This patch changes both the Input::Session interface and the skeleton
for the server-side implementation of this interface
('input/component.h').

The Input::Session interface offers a new 'sigh' function, which can be
called be the client to register a signal handler. The signal handler
gets notified on the arrival of new input. This alleviates the need to
poll for input events at the client side.

The server-side skeleton for implementing input services underwent a
redesign to make it more modular and robust. I.e., there are no
global functions needed at the server side and the event-queue
enable/disable mechanism is implemented at a central place (in the root
component) rather than inside each driver.

Fixes #46
2014-06-06 14:54:07 +02:00
Sebastian Sumpf
6c10bfe049 dde_linux: Remove bogus line from XHCI patch
This was a left over from the 'vi' editor
2014-06-02 12:56:05 +02:00
Norman Feske
6d3a41a95c tool: Sort patches when generating port hashes
Issue #1082
2014-06-02 11:31:50 +02:00
Norman Feske
5a32c08235 doc: markup-fix in doc/porting_guide.txt 2014-05-29 13:55:27 +02:00
Norman Feske
5f8577ae71 News item for Genode 14.05 2014-05-29 13:55:26 +02:00
Martin Stein
a7f003edf4 Final touches of the release notes 14.05 2014-05-29 09:21:39 +02:00
Christian Helmuth
2034180d87 version: 14.05 2014-05-28 15:54:27 +02:00
Norman Feske
88cae5e82e Release notes for version 14.05 2014-05-28 15:53:34 +02:00
Josef Söntgen
bdfe634fdf doc: update porting guide to new port mechanism 2014-05-28 15:53:33 +02:00
Alexander Boettcher
f2d38443f7 vbox: fix share-folder setup 2014-05-28 14:57:05 +02:00
Stefan Kalkowski
7138b2740a hw: fix section insertion in translation tables
Fixes an alignment problem introduced by commit "hw: map core on demand"
where physical address alignment wasn't checked anymore, when inserting
a section within the first-level table of ARM's short translation table
format.

Many thanks to Christian Prochaska for helping to debug the problem.
2014-05-28 12:28:11 +02:00
Christian Helmuth
a42a5995cf vbox: enable guest additions
Fixes #1157
2014-05-27 13:45:58 +02:00
Alexander Boettcher
4673eb9578 vbox: update to 4.2.24 2014-05-27 13:45:58 +02:00
Alexander Boettcher
2c61392237 vmm utils: cpu-session parameter for VMM thread
Issue #1157
2014-05-27 13:45:36 +02:00
Christian Helmuth
2c3a0bbe1b nova: re-throw uncatched exception of dying thread
If the re-throw works, we will can see which exception type was thrown.
2014-05-27 13:45:20 +02:00
Christian Helmuth
973d710101 vfs: catch lookup-failed exception on node discovery 2014-05-27 13:45:20 +02:00
Alexander Boettcher
8ef8e8ede9 rtc: document current interface
Issue #1148
2014-05-27 13:45:20 +02:00
Norman Feske
615830e107 Enable hash checks for ports mechanism 2014-05-27 13:45:03 +02:00
Norman Feske
acf00c29c3 Add 'update_hash' and 'list' to tool/ports
Issue #1082
2014-05-27 13:45:03 +02:00
Sebastian Sumpf
24f97f9593 usb_drv: Check SCSI command queue state
In case the storage-entry point dispatches more then one packet, wait for the
previous command to finish before setting a new request. This has to be done
because the 'queuecommand' does actually *not* queue things, but can only handle
one request at the time.

Fix #1143
2014-05-27 11:14:46 +02:00
Sebastian Sumpf
53316bfd55 ports-foc: Enable l4inux_netperf tests for x86
USB network cards can now be tested on x86.

Ref #1143
2014-05-27 11:14:46 +02:00
Christian Prochaska
7740da3197 gmplib: use faster download mirror
Fixes #1155.
2014-05-27 11:14:46 +02:00
Josef Söntgen
9e443c78db dde_rump: migrate to new ports mechanism
Issue #1082
2014-05-27 11:14:46 +02:00
Christian Prochaska
db89c85954 Qt5: ARM-related improvements
- fix compile errors when building for ARM
- use the correct device drivers in Qt run scripts

Fixes #1154.
2014-05-27 11:14:45 +02:00
Christian Prochaska
078883fda3 base: interface for D- and I-cache synchronization
On ARM, when machine instructions get written into the data cache
(for example by a JIT compiler), one needs to make sure that the
instructions get written out to memory and read from memory into
the instruction cache before they get executed. This functionality
is usually provided by a kernel syscall and this patch adds a generic
interface for Genode applications to use it.

Fixes #1153.
2014-05-27 11:14:45 +02:00
Christian Prochaska
b28a551538 run: use 'upvar' instead of 'global'
Using 'upvar' instead of 'global' in the 'append_if' and 'lappend_if'
functions makes it possible to use these functions with local variables
of the calling function.

Fixes #1137.
2014-05-27 11:14:45 +02:00
Josef Söntgen
e777165090 dde_rump: block encryption server using cgd(4)
The 'rump_cgd' server provides block level encryption for a block
session by employing the 'cgd(4)' device provided by the rumpkernel.

'rump_cgd' uses a Block_session to get access to an existing block
device and provides another Block_session to its clients. Each block
written or read by the client is transperently encrypted or decrypted
by the server.

For now 'rump_cgd' may only _configure_ a 'cgd' device but is unable
to generate a configuration. The used cipher is hardcoded to
_aes-cbc_ with a keysize of 256 bit. Furthermore the server is able to
serve one client only.

To ease the usage, its interface is modelled after the interface of
'cgdconfig(8)'. As implications thereof the key must have the same
format as used by 'cgdconfig'. That means the key is a base 64 encoded
string in which the first 4 bytes denote the actual length of the key
in bits (these 4 bytes are stored in big endian order).

Preparing a raw (e.g. without partition table) encrypted Ext2 disk
image is done by executing 'tool/rump':

! dd if=/dev/urandom of=/path/to/disk_image
! rump -c /path/to/disk_image # key is printed to stdout
! rump -c -k <key> -F ext2fs /path/to/disk_image

To use this disk image the following config snippet can be used:

! <start name="rump_cgd">
! 	<resource name="RAM" quantum="8M" />
! 	<provides><service name="Block"/></provides>
! 	<config action="configure">
! 		<params>
! 			<method>key</method>}
! 			<key>AAABAJhpB2Y2UvVjkFdlP4m44449Pi3A/uW211mkanSulJo8</key>
! 		</params>
! 	</config>
! 	<route>
! 		<service name="Block"> <child name="ahci"/> </service>
! 		<any-service> <parent/> <any-child/> </any-service>
! 	</route>
! </start>

the Block service provided by rump_cgd may be used by a file system
server in return:

! <start name="rump_fs">
! 	<resource name="RAM" quantum="16M"/>
! 	<provides><service name="File_system"/></provides>
! 	<config fs="ext2fs">
! 		<policy label="" root="/" writeable="yes"/>
! 	</config>
! 	<route>
! 		<service name="Block"> <child name="rump_cgd"/> </service>
! 		<any-service> <parent/> <any-child/> </any-service>
! 	</route>
! </start>

Since 'tool/rump' just utilizes the rumpkernel running on the host
system to do its duty there is a script called 'tool/cgdconf' that
extracts the key from a 'cgdconfig(8)' generated configuration file
and also is able to generade such a file from a given key. Thereby
the interoperabilty between 'rump_cgd' and the general rumpkernel
based tools is secured.
2014-05-27 11:14:45 +02:00
Josef Söntgen
aaf0454956 tool: wrapper script for rumpkernel tools
The rumpkernel based tools are intended to be used by executing
'tool/rump'. Since it covers the most common use cases for these
tools, this script is comparatively extensive, hence giving a short
tutorial seems reasonable:

* Format a disk image with Ext2:

To format a disk image with the Ext2 file system, first prepare the
actual image by executing dd:

! dd if=/dev/zero of=/path/to/disk_image bs=1M count=128

Second, use 'tool/rump' to format the disk image:

! rump -f -F ext2fs /path/to/disk_image

Afterwards the just created file system may be populated with the
content of another directory by executing

! rump -F ext2fs -p /path/to/another_dir /path/to/disk_image

The content of the file system image can be listed by executing

! rump -F ext2fs -l /path/to/disk_image

* Create a encrypted disk image:

Creating a cryptographic disk image based on cgd(4) is done by
executing the following command:
! rump -c /path/to/disk_image

This will generate a key that may be used to decrypt the image
later on. Since this command will _only_ generate a key and NOT
initialize the disk image, it is highly advised to prepare the disk
image by using '/dev/urandom' instead of '/dev/zero' (only new blocks
that will be written to the disk image are encrypted). In addition
while generating the key a temporary configuration file will be
created. Although this file has proper permissions, it may leak the
generated key if it is created on persistent storage. To specify a more
secure directory the '-t' option should be used:

! rump -c -t /path/to/secure/directory /path/to/disk_image

Decrypting the disk image requires the key generated in the previous
step:

! rump -c -k <key> /path/to/disk_image

For now this key has to specified as command line argument. This is
an issue if the shell, which is used, is maintaing a history of
executed commands.

For completness sake let us put all examples together by creating a
encrypted Ext2 image that will contain all files of Genode's _demo_
scenario:

! dd if=/dev/urandom of=/tmp/demo.img bs=1M count=16
! $(GENODE_DIR)/tool/rump -c -t /ramfs -F ext2fs /tmp/demo.img > \
!         /ramfs/key # key is printed out to stdout
! $(GENODE_DIR)/tool/rump -c -t /ramfs -F ext2fs -k <key> \
!         -p $(BUILD_DIR)/var/run/demo /tmp/demo.img

To check if the image was populated succesfully, execute the
following:

! $(GENODE_DIR)/tool/rump -c -t /ramfs -F ext2fs -k <key> -l \
!         /tmp/demo.img
2014-05-27 11:14:45 +02:00
Josef Söntgen
a9e95e24fe tool: makefile for building rumpkernel tools
The rumpkernel tools are used within the Genode OS Framework tool chain
for preparing and populating disk images as well as creating cgd(4)
based cryptographic disk devices.

Execute 'tool/tool_chain_rump build' to build the tools and afterwards
'tool/tool_chain_rump install' to install the binaries. The default
install location is _/usr/local/genode-rump_.
2014-05-27 11:14:45 +02:00
Josef Söntgen
c04ddbf6d8 dde_rump: move memcpy() to rump lib
On ARM in one way or another 'string.h' prototypes will be used. Move
the definitions from rump_fs to the rump library because it is needed
by all rump based servers running on ARM.

Issue #1141.
2014-05-27 11:14:45 +02:00
Josef Söntgen
0a0f0031a4 libports: enable curl on arm 2014-05-27 11:14:45 +02:00
Christian Prochaska
ea79c0e2e9 openssl: add ARM support
Fixes #1136.
2014-05-27 11:14:45 +02:00
Christian Prochaska
33f64343e1 core: make parent EP stack size depend on addr_t
Make the stack size of core's parent entrypoint thread depend on
sizeof(addr_t).

Fixes #1152.
2014-05-27 11:14:44 +02:00
Christian Prochaska
15e231d733 noux_gdb: adapt to libc VFS
Fixes #1150.
2014-05-27 11:14:44 +02:00