Commit Graph

383 Commits

Author SHA1 Message Date
Alexander Boettcher
dd2e006309 nova: request native ec cap via pager
Prerequisite to get rid of the base-nova special native_cap method in
cpu_session.

Vancouver/Seoul bootstrap code gets also much simpler.

Issue #478
2013-10-16 09:26:09 +02:00
Christian Helmuth
0d5d74fec6 netperf: enable netperf_bridge test on linux
Statically configured NIC bridge clients must be configured via
<policy...> nodes in the config. Otherwise, the bridge can't answer ARP
requests or route traffic.
2013-09-23 14:26:01 +02:00
Norman Feske
f1dcaa746d Enable C++11 by default 2013-09-23 14:26:01 +02:00
Christian Prochaska
eeacc5a297 Noux: register inherited file descriptors
With this patch, a Noux process registers all inherited open file
descriptors in its local libc file descriptor registry at program start.

Fixes #882.
2013-09-23 14:26:00 +02:00
Christian Prochaska
9370ba160b Noux: increase entrypoint stack size
Needed to run Noux built with -O0

Fixes #880.
2013-09-23 14:26:00 +02:00
Norman Feske
29eeedf064 launchpad: Update config syntax, remove defaults
This patch updates the launchpad config to use XML attributes and
removes the built-in default configuration (which is only meaningful
for demo.run anyway).
2013-09-23 14:25:59 +02:00
Norman Feske
fa34b79b2c nitpicker: Add const qualifiers 2013-09-23 14:25:58 +02:00
Norman Feske
8243329ad4 os: Move Genode::Config into 'config' library
Originally, the convenience utility for accessing a process
configuration came in the form of a header file. But this causes
aliasing problems if multiple compilation units access the config while
the configuration gets dynamically updated. Moving the implementation of
the accessor to the singleton object into a library solves those
problems.
2013-09-23 14:25:58 +02:00
Alexander Boettcher
380aa387d4 Adjust tcp_terminal quota
Nic_bridge requires more memory.
2013-09-18 14:58:54 +02:00
Alexander Boettcher
8ca068be43 noux: implement some libc dummy function
and quieten some noisy messages in non-verbose mode

Issue #485
2013-09-18 14:58:54 +02:00
Alexander Boettcher
94bce1425e noux: avoid 'no attachment at 0' messages
binary_ds cap is attempted to free up twice by
_root_dir->release(_name, _binary_ds) in ~Child de-constructor and by
Static_dataspace_info _binary_ds_info de-constructor.

This commit keeps all binary related information inside a struct which gets
freed up after all noux session book keep cleaning is done.

Issue #485
2013-09-18 14:58:54 +02:00
Alexander Boettcher
73bfdb8bb8 noux: fix deadlock during destruction
Issue #485
2013-09-18 14:58:54 +02:00
Alexander Boettcher
71aacd7ed8 noux: first remove from list, then dissolve
Avoids deadlock - which is out of the list can't be found twice to be deleted.

Issue #485
2013-09-18 14:58:54 +02:00
Alexander Boettcher
7c591a8151 noux: lock region list
Issue #485
2013-09-18 14:58:54 +02:00
Alexander Boettcher
bbb9c6daec noux: avoid dangling pointer
Issue #485
2013-09-18 14:58:54 +02:00
Christian Helmuth
4febaff66e netperf: netperf w/ static ip address on linux
The netperf test configures the target Genode system for with
10.0.2.55/24. Also, nic_drv on base-linux uses the virtual ethernet
device 'tap0', which must be configured for the test user and network
address 10.0.2.1/24 on the test host like follows.

  tunctl -t tap0 -u <user running test>
  ip address add 10.0.2.1/24 dev tap
  ip link set tap0 up
2013-09-06 15:05:38 +02:00
Norman Feske
3d5f77599f Adjust nic_bridge quota for netperf tests 2013-09-06 11:24:38 +02:00
Norman Feske
7cbec0e915 Adjust nic_bridge quota in noux_net_netcat.run 2013-09-06 11:23:07 +02:00
Norman Feske
7b3dd51771 Blacklist noux_tool_chain run scripts on Linux 2013-09-06 11:13:19 +02:00
Norman Feske
47bb7da22f seoul: Improve boot-module error messages 2013-09-05 12:28:54 +02:00
Norman Feske
24e2310c36 seoul: Adjust nic_bridge quota 2013-09-05 12:28:48 +02:00
Christian Prochaska
5b8965cde9 GDB monitor: move GDB commands into separate file
This patch moves the GDB commands to set a breakpoint in the 'main()'
function into a separate file that can be included from other run scripts.

Fixes #876.
2013-09-04 22:43:47 +02:00
Christian Prochaska
3ca14f53fe Noux GDB: resolve '..' in run script
If the path of a Genode source file (as extracted from the binary test
application) contains a part like '/a/b/../' where '/a' exists, but '/a/b'
does not exist anymore, 'tar' complains. With this patch, the run script
normalizes the path before calling 'tar'.

Fixes #875.
2013-09-04 22:43:29 +02:00
Alexander Boettcher
773b0ecc3d noux: add verbose config parameter
Explicitly enable verbose output if required.
2013-08-22 15:13:12 +02:00
Alexander Boettcher
9cf315b37e noux: start time measuring with first noux output
Don't account the boottime to the actual compile time - since it varies quite
a lot if somebody else utilize the network with lwip tests for example ;-).
2013-08-22 15:13:12 +02:00
Alexander Boettcher
6dd6525b48 seoul: support headless mode
+ run kernelbuild in headless mode, output dumped via serial output
2013-08-22 11:33:10 +02:00
Alexander Boettcher
6d5a66d8e7 seoul: refresh console only if required
Speeds up kernelbuild by over 35% !!!
2013-08-22 11:33:00 +02:00
Alexander Boettcher
90823eaf1d run: remove files of seoul-auto script 2013-08-22 09:03:29 +02:00
Alexander Boettcher
baa55dabc4 seoul: add kernelbuild run script 2013-08-15 09:22:49 +02:00
Stefan Kalkowski
55e1c16c98 ports: enable re-preparation of contrib code
Avoid warnings of missing patches directory

Fixes #832
2013-08-15 09:22:49 +02:00
Alexander Boettcher
ed3187aa74 seoul: add invalid guest state handling 2013-08-15 09:22:48 +02:00
Alexander Boettcher
e349c29736 seoul: add test for native runs
and add to autopilot list.
2013-08-15 09:22:48 +02:00
Alexander Boettcher
35f9ceb7ba seoul: fix run script issues 823 and 824
Fix #823
Fix #824
2013-08-15 09:22:48 +02:00
Alexander Boettcher
4474e9d6d6 seoul: add intel82576vf for 64bit 2013-08-15 09:22:48 +02:00
Alexander Boettcher
0654877392 seoul: update to recent seoul branch
Required to use intel82576vf in 64bit host mode
2013-08-15 09:22:48 +02:00
Alexander Boettcher
009adff441 seoul: fix region conflicts
At least 64bit Seoul dies with Region_conflict reliable and reproducible.

When during startup of Seoul some Genode code (caused by executing some
constructors) try to attach a region, the region manager code in the rm_session
will try to place the attachment at the smallest large enough aligned free
virtual region.

For now, I observed one attachment causing trouble (but not knowing who causes
this - it does also not really matter). The questionable region is 0x4000 of
size for 32bit and 0x8000 of size for 64bit.

To steer the region manager a bit, we try now following trick:

With this commit the load address of the binary for 32 and 64 bit is moved
close to the end of the virtual address space, but leaving enough free virtual
space for the above observed attachment (and a bit more).

The region manager code now will try to fill up the virtual region behind
the binary up to the end of the virtual address space, effectively letting the
lower virtual region untouched - hopefully.

Works for now, but it will break again - for sure.

Fixes #519
2013-08-15 09:22:48 +02:00
Norman Feske
a2b15349fd base: Add tracing support to CPU session interface 2013-08-13 17:27:40 +02:00
Christian Prochaska
7b54eaaee1 libports: add Qt5
Fixes #345.
2013-08-13 17:27:40 +02:00
Josef Söntgen
9b28395f0d noux: construct new child only if binary is valid
If a script is executed which uses a interpreter that does not exist the
construction of the child fails and potentially leaks memory because the
wrong delete operator is called.
Therefore the binary dataspace of the script and the binary dataspace of
the interpreter are now checked before a new child will be created.

Fixes #812.
2013-08-13 17:08:26 +02:00
Norman Feske
6d837c9e26 Attach affinity information to session requests
This patch extends the 'Parent::session()' and 'Root::session()'
functions with an additional 'affinity' parameter, which is inteded to
express the preferred affinity of the new session. For CPU sessions
provided by core, the values will be used to select the set of CPUs
assigned to the CPU session. For other services, the session affinity
information can be utilized to optimize the locality of the server
thread with the client. For example, to enable the IRQ session to route
an IRQ to the CPU core on which the corresponding device driver (the IRQ
client) is running.
2013-08-13 17:08:25 +02:00
Norman Feske
5fe29e8e4a Express affinities via Cartesian coordinates
This patch introduces new types for expressing CPU affinities. Instead
of dealing with physical CPU numbers, affinities are expressed as
rectangles in a grid of virtual CPU nodes. This clears the way to
conveniently assign sets of adjacent CPUs to subsystems, each of them
managing their respective viewport of the coordinate space.

By using 2D Cartesian coordinates, the locality of CPU nodes can be
modeled for different topologies such as SMP (simple Nx1 grid), grids of
NUMA nodes, or ring topologies.
2013-08-13 17:08:24 +02:00
Alexander Boettcher
fa7329a3e6 run: remove duplicated include in seoul-fancy
Fixes #820
2013-08-13 17:08:24 +02:00
Josef Söntgen
b5739fc520 ports: add grep and sed to noux_tool_chain
Fixes #821
2013-08-13 17:08:23 +02:00
Josef Söntgen
5cf4e323c5 Noux: add noux-pkg/grep 2013-08-13 17:08:22 +02:00
Josef Söntgen
2aafc9d4e6 Noux: add noux-pkg/sed 2013-08-13 17:08:22 +02:00
Norman Feske
956cab5fdb noux: Keep track of how dataspaces are used
This patch eliminates the "no attachment at..." warnings, which
were caused by a use-after-free problem of dataspaces. When a
dataspace was destroyed, the users of the dataspace were not
informed and therefore could not revert possible attachments to
RM sessions. The fix introduces a callback mechanism that allows
dataspace users (i.e., RM regions) to register for the event that
a dataspace vanishes.

The following types of dataspaces are handled:
* RAM dataspaces
* ROM dataspaces
* The process binary
* The binary of the dynamic linker
* Args dataspace
* Sysio dataspace
* Env dataspace
* managed RM dataspaces

The handling of ROM dataspaces is still not complete. When forking,
the ROM dataspace of the parent process gets just reused without
creating proper meta data ('Dataspace_info') for the forked process.
Similar issues might arise from other special dataspaces (e.g.,
args, env, sysio).

This patch removes all "no attachment at..." warnings except for
one (an attachment at 0).

Issue #485
2013-08-06 17:40:10 +02:00
Christian Prochaska
dc177e037d bash: don't call 'check_dev_tty()'
The 'check_dev_tty()' function calls 'ttyname()', which calls the pthread
stub function 'pthread_main_np()', which prints a 'not implemented'
message. Calling 'check_dev_tty()' doesn't seem to be necessary, so this
patch removes the call.

Issue #815.
2013-08-05 15:18:03 +02:00
Alexander Boettcher
9b6d37649b run: restrict noux-auto to platforms known to work
* add to autopilot list

Issue #591
2013-08-05 15:16:11 +02:00
Alexander Boettcher
01d267e551 noux: calculate rm::attach parameters correctly
Previous commit denies the creation of regions larger then the dataspace.
Noux does it by setting the default size to the dataspace size without
subtracting the offset.

Fixes #591
2013-08-05 15:15:56 +02:00
Alexander Boettcher
b1cb1ceaf9 seoul: fix disc boot
Additionally use the block session interface asynchronously to let the VM
continue execution.

Fixes #806
2013-07-18 11:55:18 +02:00
Alexander Boettcher
b9449a4279 seoul: fix console output in vga text mode
Issue #806
2013-07-18 11:55:18 +02:00
Alexander Boettcher
b4283c9121 seoul: use utcb guard
Forgetting to restore the old utcb content results in hard to debug bugs.
Save only the amount of word items which are actually on the UTCB.

Issue #806
2013-07-18 11:55:18 +02:00
Alexander Boettcher
b9e48e94ec seoul: catch exception during block session creation
Leads to invalid utcb state and later on to invalid vCPU state.

Issue #806
2013-07-18 11:55:18 +02:00
Alexander Boettcher
8afcbce01e seoul: implement heap_free
Avoids the message

cxx: operator delete (void *) called - not implemented. A working implementation is available in the 'stdcxx' library

during a " new ..." which causes exceptions. Happens for seoul in disk.cc

Issue #806
2013-07-18 11:55:17 +02:00
Alexander Boettcher
4e8d0618bb seoul: split vancouver run script into smaller ones
Issue #806
2013-07-18 11:55:17 +02:00
Alexander Boettcher
ff0eb93569 run: dump output of noux_net_netcat
Issue #742
2013-07-16 17:26:55 +02:00
Stefan Kalkowski
ef4027a7a8 Disable noux run script for i.MX53 platform
This platform misses necessary UART driver support.
2013-07-11 12:44:24 +02:00
Alexander Boettcher
86d323d3cf run: disable network tests for imx53
We have no network driver on this platform by now.
2013-07-11 12:44:24 +02:00
Alexander Boettcher
05d807db75 run: split native Genode netperf script
Split the netperf run script into 3 ones so that it can be used more easily
in an automated run.

netperf.run        - use native nic driver (x86) or usb2.0 (arndale, panda)
netperf_usb30.run  - use native nic driver (x86) or usb3.0
netperf_bridge.run - use native nic driver (x86) or usb3.0 (arndale) and bridge

Issue #794
2013-07-11 11:01:37 +02:00
Alexander Boettcher
400037a5b0 run: check for netperf version in user environment
For native Genode netperf port.
2013-07-09 18:57:30 +02:00
Alexander Boettcher
241c0f38a4 run: remove tar file also after native runs
Fixes #679
2013-07-05 12:46:56 +02:00
Josef Söntgen
29b8370f73 noux: add local cpu and ram service
Use a local CPU service to prevent a redirection to noux' parent (in
this case init which does not know noux' local capabilities).

Fixes #791.
2013-07-05 12:37:42 +02:00
Stefan Kalkowski
0ba40d01ca Don't use daemonized telnet in netcat run-script
Fix #782
2013-07-05 12:37:42 +02:00
Alexander Boettcher
e3c3f9f44f run: restrict ports solely for qemu case
Sometimes the ports are not freed up quick enough by the host system after the
first test finished. The port restriction is mainly required for qemu, so don't
use it for bare metal hardware tests.
2013-06-28 16:21:08 +02:00
Stefan Kalkowski
717e4dd362 Let genode_org run script work on various platforms 2013-06-28 14:22:45 +02:00
Alexander Boettcher
4c9cee24de run: add nic_bridge to netperf native test 2013-06-27 20:12:36 +02:00
Alexander Boettcher
8d9e7d0da2 lwip: set some reasonable default rcv buf size
lwip reports via getsockopt the size of the default size of the receive buffer
to the netperf server. lwip returns 2GB and netperf server uses this value to
allocate some buffers - which of course fails with out of memory.

Reduces the "default size" to some smaller value.

With the commit we are not forced anymore to (but still can) use specific
netperf client options regarding memory allocations of the receive buffer.
2013-06-26 17:42:02 +02:00
Alexander Boettcher
e35dbd3353 run: add TCP_MAERTS to netperf test
MAERTS is STREAM backwards and effectively lets the netserver sends the packets
to the netperf client. So, TCP_STREAM measure the receive performance of the
lwIP stack on Genode and TCP_MAERTS the send performance of the lwIP stack
on Genode.
2013-06-26 17:41:54 +02:00
Alexander Boettcher
9f2097669a netperf: add support to timeout if host went away 2013-06-25 17:42:42 +02:00
Alexander Boettcher
494bb8ff0d run: print packets/s at end of netperf script 2013-06-25 17:42:42 +02:00
Alexander Boettcher
f1c99b190f run: add platform_drv to netperf run script 2013-06-25 17:42:42 +02:00
Alexander Boettcher
ef6450d5d3 run: fix noux_net_netcat for most x86_32 platforms
native pistachio x86 is broken in general

arm fix still pending

Issue #782
2013-06-25 17:36:34 +02:00
Stefan Kalkowski
e23f24505b Add platform_drv to relevant run-scripts (fix #778) 2013-06-25 14:37:03 +02:00
Norman Feske
d0d5ec92b6 ports/libports: Use repository-local PWD
The PWD variable contains the current working directory of the original
location where 'make -C' is executed, not the directory specified as
argument of '-C'. The tools referenced by ports/libports, however,
expect PWD to point to the root of the respective repository.
2013-06-12 11:35:13 +02:00
Norman Feske
9d778a658d ports/libports: Avoid multi-target rules
This patch splits the download of signatures from the download of the
archive to improve robustness. This way, signature files will be
downloaded even if the corresponding archive is already in place.

Issue #748
2013-06-12 11:35:13 +02:00
Norman Feske
179f742924 ports/libports: Handle failed integrity checks
This patch makes the handling of failed integrity checks of 3rd-party
packages more robust. Previously, a once failed 'make prepare PKG=curl'
would not leave any trace of the verification state. Hence, a successive
attempt to perform the 'make prepare' step again succeeded even if the
signature check failed.

To solve this problem, the outcome of a successful signature check is
represented by a tag file called 'download/<archive-name>.verified'.
Because the rule for extracting the archive depends on the .verify tag
file, the extraction step is not performed until the signature check
succeeds.

Issue #748
2013-06-10 10:44:10 +02:00
Stephan Mueller
96e9fcd326 ports: Verify signatures of 3rd-party code
This patch adds integrity checks for the packages of the ports
repository.

Issue #748
2013-06-10 10:44:09 +02:00
Stephan Mueller
64a2447d03 ports: Global variables for integrity check
Add global variables to the signature and hash verification tool to
ports/Makefile for use in the individual make templates.

Issue #748
2013-06-10 10:44:09 +02:00
Christian Prochaska
314d5c0975 liquid_fb: dynamic reconfiguration support
With this patch, 'liquid_framebuffer' can be reconfigured at runtime.
The configuration arguments are now provided as XML attributes, matching
those for 'nit_fb'. Furthermore, two new configuration options are added:

<config ...
  resize_handle="off" - show/hide a resize handle widget in the lower
                        right window corner
  decoration="on"     - show/hide window decoration
                        (title bar and borders)
/>

Fixes #740
Fixes #14
2013-05-22 21:30:17 +02:00
Stefan Kalkowski
89a8c2c211 Update run scripts using usb_drv (fix #744)
Updates all run scripts, which use the usb_drv to enable the appropriated
USB host controllers.
2013-05-22 18:52:54 +02:00
Norman Feske
33c5469b92 vancouver: Improved PS/2 mouse backend
The previous version of the PS/2 mouse backend manged mouse motion
events in a strange way, effectively throwing away most information
about the motion vector. Furthermore, the tracking of the mouse-button
states were missing. So drag-and-drop in a guest OS won't work. The new
version fixes those issues. For the transformation of input events to
PS/2 packets, a the Genode::Register facility is used. This greatly
simplifies the code.
2013-05-20 10:54:59 +02:00
Norman Feske
89d0e68983 vancouver: Improve locking scheme
This patch replaces the error-prone manual locking with the use of the
'Synced_interface' for the motherboard and the VCPU dispatcher. It also
removes all globally visible locks. Locks are now explicitly passed to
subsystems when needed.
2013-05-17 12:05:07 +02:00
Norman Feske
c48a7aa27f vancouver: Avoid busy startup synchronizations 2013-05-17 12:05:00 +02:00
Norman Feske
ba5906e425 vancouver: handle CPUID 0x40000000
This instruction is issued by Linux when the KVM guest support is
compiled in. We have to return deterministic values to let the Linux
kernel survive.
2013-05-17 12:04:40 +02:00
Alexander Boettcher
37cde31eb3 run: add support to run noux_net_netcat natively 2013-05-17 11:51:56 +02:00
Norman Feske
98cb023f1c seoul: Patch executor/build_instructions.py
We need to specify the actual python version in the build_instructios.py
script too.
2013-05-13 14:36:49 +02:00
Alexander Boettcher
5bbf1f7eea netperf: use omni and rely on SO_RCVBUF available 2013-05-10 11:16:11 +02:00
Alexander Boettcher
86e428cd64 port of netperf server to native Genode 2013-05-10 11:16:11 +02:00
Alexander Boettcher
5249c0875c run: extend noux to run automatically natively 2013-05-10 11:16:09 +02:00
Stefan Kalkowski
8e9e866161 Unify framebuffer driver binary names (fix #720)
Introduce 'framebuffer' SPEC variable to distinguish hardware framebuffer
drivers furthermore from the SDL framebuffer driver used by Genode/Linux.
2013-05-07 13:04:30 +02:00
Christian Prochaska
ac8633e0e9 Update Qt to version 4.8.4
Fixes #703.
2013-05-06 18:50:35 +02:00
Alexander Boettcher
b85447c602 run scripts: add "Test succeeded" message
Issue #679
2013-04-12 10:56:27 +02:00
Alexander Boettcher
ac9c8c769c remove obsolete port target 2013-03-20 10:00:54 +01:00
Markus Partheymüller
4bb0a8231e vancouver: calculate STACK_SIZE from addr_t size.
This is necessary on 64bit host.
2013-03-18 13:10:29 +01:00
Alexander Boettcher
e85e11bec1 vmm: try to reserve lower virtual address space
It's not guaranteed to be robust and will break in the future - I told you.

Related to issue #365, issue #519, issue #666
2013-03-18 13:10:03 +01:00
Markus Partheymüller
40e27b2379 vancouver: correct framebuffer size. 2013-03-18 13:09:53 +01:00
Markus Partheymüller
b8eb9b534d Switch to Seoul VMM repository instead of NUL
In this version of the transition the Hip structure from Genode is reused,
@nfeskes seoul_libc_support is used for the string functions and the
nul/config.h is replaced by just using a constant value in the one place where
the file was needed.

Related to #666.
2013-03-18 13:09:45 +01:00
Norman Feske
9d0a377efe Add 'seoul_libc_support' library
This library contains the subset of the libc that is needed for the
Seoul VMM.

Related to issue #666.
2013-03-18 13:09:16 +01:00
Christian Prochaska
90e6cef49b gdb_monitor: increase RAM quotas in run scripts
Fixes #685.
2013-03-11 16:39:51 +01:00
Alexander Boettcher
398fa76cdb vancouver: adjust run script to use acpi+iommu 2013-02-27 17:48:58 +01:00