Commit Graph

2308 Commits

Author SHA1 Message Date
Emery Hemingway
976833f171 libc: getdtablesize support
Issue #1847
2016-01-08 15:07:57 +01:00
Emery Hemingway
2d50552522 Remove Genode namespace from File_system
Fixes #1845
2016-01-08 14:48:52 +01:00
Josef Söntgen
9fb08e045a libports: fix delay in SDL audio backend
Instead of using the 'alloc()' method to allocate new packets use
the 'next()' method with the previous packet. This is needed because
the last audio stack changes broke the semantics assumed by 'alloc()'.

We now keep track of the already queued packets by hand.

Fixes #1827.
2016-01-08 14:48:17 +01:00
Emery Hemingway
56c637c1f6 VFS tar: always set dirent type
Assume tar nodes with missing records are directories.

Fixes #1843
2016-01-08 14:37:58 +01:00
Josef Söntgen
b4c5fb2d29 sdl: use Genode::destroy to free framebuffer
Fixes #1838.
2016-01-08 14:37:57 +01:00
Christian Helmuth
a98e9c1822 libc: fix test for libc_block 2016-01-08 14:37:57 +01:00
Norman Feske
948cb3ef0a os: minor whitespace fixes in nic_loopback 2016-01-08 14:37:57 +01:00
Alexander Boettcher
1d5aa4ca7e nova: avoid warnings because of oom handling
Use kernel branch which is more accurate in accounting memory, which avoids
kernel messages of following form:

[0] warning: insufficient resources ...

Fixes #1830
2016-01-08 14:37:57 +01:00
Adrian-Ken Rueegsegger
b1b3c7bf34 doc: Extend Muen tutorial to match new build process 2016-01-08 14:37:57 +01:00
Adrian-Ken Rueegsegger
cb68f9a320 hw: Add kernel/spec/muen/target.mk to build Muen SK
This adds the automated compilation of the Muen Separation Kernel and
the required components to the hw_x86_64_muen build process.
2016-01-08 14:37:56 +01:00
Adrian-Ken Rueegsegger
8d2f2b0101 hw: Add port for Muen Separation Kernel
For additional information about the Muen SK refer to the project page
at [1].

[1] - http://muen.codelabs.ch/
2016-01-08 14:37:56 +01:00
Christian Helmuth
acab2515e1 base-linux: remove get_pid debug helper
Fixes #1829
2015-12-21 09:22:40 +01:00
Alexander Boettcher
7ee3e98551 nova: update kernel to fix assertion
Some special pages (0-page, 1-page) in the kernel must not be freed up
during PD destruction.

Fixes #1828
2015-12-18 15:04:25 +01:00
Christian Helmuth
6699290766 Optional label in Nic::Connection constructor
Fixes #1826
2015-12-17 15:15:24 +01:00
Christian Helmuth
c43bd472ac packet_stream: peek_packet() should be const
This also fixes the wrong return type.

Fixes #1800
2015-12-17 11:12:53 +01:00
Martin Stein
6deb80f66d ahci_bench: fix condition for test end
Fixes #1824
2015-12-17 10:41:09 +01:00
Martin Stein
852b799cd4 blk-bench: don't write if not requested
Because a check for the TEST_WRITE configuration was missing as condition for a
packet submit, the test caused unwanted write access to the device.

Ref #1824
2015-12-17 10:39:47 +01:00
Martin Stein
96649c716d Remove obsolete block_bench test
This test is deprecated according to its author and test/blk/bench
shall be used instead.

Ref #1824
2015-12-17 10:39:06 +01:00
Christian Helmuth
14c8380507 xml_generator: support bool and integer types
The Xml_generator is extended by overloads for bool as well as signed
and unsigned int, long, and long long.

Fixes #1819
2015-12-17 10:38:19 +01:00
Christian Helmuth
98a4cb27b2 decorator_stress: explicitly generate long values
Explicitly cast floats to long as we currently do not plan to support
float in Xml_generator and previously the value was implicitly casted to
long anyway.

Issue #1819
2015-12-17 10:38:19 +01:00
Christian Helmuth
971b531d58 platform_drv: increase RAM config for -O0 builds (again) 2015-12-17 10:38:19 +01:00
Christian Helmuth
40b8da8755 rom filter: amend name of run script in README 2015-12-17 10:38:19 +01:00
Emery Hemingway
6e9fa10e65 server/report_rom: partial ROM label matching
Fixes #1801
2015-12-17 10:38:18 +01:00
Christian Prochaska
23ff3b1877 nitpicker: fix focus change permission checks
Fixes #1816
2015-12-17 10:38:18 +01:00
Christian Helmuth
dc17e16897 signal: cleanup allocations / reset globals in test
I conserve these cleanups to enable the looped execution of all test
functions as I did to hunt a bug. The loop can easily be added to
main().
2015-12-10 13:17:11 +01:00
Josef Söntgen
48738bbf63 libports: update libssh to 0.7.2
Fixes #1811.
2015-12-10 13:16:29 +01:00
Josef Söntgen
1073d6077b noux-pkg: update OpenSSH to 7.1p1
Fixes #1810.
2015-12-10 13:16:29 +01:00
Josef Söntgen
50b8094d0d noux: extent network errno handling
Add ECONNRESET, ECONNABORTED and EHOSTUNREACH.

Issue #1810.
2015-12-10 13:16:29 +01:00
Josef Söntgen
cebef2bda3 noux: make copy of input fds in SYSCALL_SELECT
Executing the system call will change the input fds as a side-effect
because the select_in.fds and select_out.fds structure are part of a
union. Since the original select_in.fds content is needed afterwards
make a copy instead of using a reference.

Fixes #1809.
2015-12-10 13:16:29 +01:00
Josef Söntgen
8ca4f7a794 noux-pkg: update lynx to 2.8.8rel.2
Fixes #1818.
2015-12-10 13:16:28 +01:00
Alexander Boettcher
a73c6470f6 nova: handle hip/mb memory region of size 0
Fixes #1814
2015-12-10 13:16:28 +01:00
Alexander Boettcher
d0db15031a run: provide missing timer route for vbox_pointer
Add missing timer route.

Fixes #1817
2015-12-10 13:16:28 +01:00
Alexander Boettcher
4e00e8ac68 run: enable vbox pointer for vbox_auto* scripts
Makes mouse shapes of Windows VM visible.

Issue #1817
2015-12-10 13:16:28 +01:00
Alexander Boettcher
1aa6a2a4a1 nova: fix kernel freezing
Fixes #1815
2015-12-10 13:16:28 +01:00
Christian Prochaska
89d3083c9f qt5: update the 'lib_mk_file_generator' README file
Fixes #1813
2015-12-10 13:16:27 +01:00
Stefan Kalkowski
2316937e58 hw: remove main thread's initial UTCB from vm area
The main thread's UTCB, used during bootstrap of the main thread before
it allocates its context area, needs to be outside the virtual memory
area controlled by the RM session, because it is needed before the main
thread can access its RM session.

Fix #1804
2015-12-10 13:16:27 +01:00
Christian Helmuth
610b733133 liquid_fb: generate periodic sync events
Issue #1762
2015-12-10 13:16:27 +01:00
Christian Helmuth
e387d2098d demo: adapt nested nitpicker config 2015-12-10 13:16:27 +01:00
Christian Helmuth
2b321b9ce8 nitpicker: improve diagnostic of policy configuration
This patch adds diagnostic messages during the label-policy application,
if no policy for the session label was found or if the domain configured
in the policy node does not exist.
2015-12-10 13:16:27 +01:00
Stefan Kalkowski
23f9761297 base: minimize critical section in Semaphore::up
When unblocking a thread in Semaphore::up() while holding the fifo meta-data
lock, it might happen that the lock holder gets destroyed by the one it was
unblocking. This happened for instance in the pthread test in the past, where
thread destruction was synchronized via a semaphore. There is no need to hold
the lock during the unblock operation, so we should do it outside the critical
section.

Fix #1333
2015-12-10 13:16:27 +01:00
Stefan Kalkowski
9efa3ceccf pthreads: use simple Genode::Semaphore as backend
Instead of using Timed_semaphore, we can directly use the simpler
Genode::Semaphore for pthread's 'sem_t' type.

Ref #1333
2015-12-10 13:16:27 +01:00
Martin Stein
492bd39619 epit timer: raise precision
Previously we used a pretty slow external clock source for the timer. This
resulted in such a low TICS_PER_MS value that the granularity wasn't
sufficient to find a setup with a precision better than 1 second error per
minute. Now we use the so-called High Frequency Reference Clock as input
with TICS_PER_MS=33333 and the timer precision is significantly < 1 second per
minute.

Fixes #1805
2015-12-10 13:16:26 +01:00
Martin Stein
01643ccd94 cpu_quota hw exynos5: raise error tolerance
From our observations we can tell that the error should not exceed 4%.
However, there is no reasonable explanation by now why the test results
are less stable on these platforms. We have tried several things that
did not lead to an explanation or improvement:

  * changing the timing parameters of the scheduler
  * switching off SMP
  * double-checking the speed of userland and kernel timers

Ref #1805
2015-12-10 13:16:26 +01:00
Martin Stein
227b539193 cpu_quota x86_64: fix RAM quota and stack size
The test threads previously used a stack size independent from the machine
word width. Qemu was previously configured to provide 64Mb of RAM which isn't
sufficient for x86_64.

Ref #1805
2015-12-10 13:16:26 +01:00
Martin Stein
a3a8978d77 cpu_quota zynq_qemu: raise error tolerance
On Qemu, the test results for Xilinx Zynq-7000 are less stable than usual.

Ref #1805
2015-12-10 13:16:26 +01:00
Martin Stein
02ef3d13a3 hw: explain misleading "Quota exceeded"
Upgrading the quota of a PD session on HW always triggers a "Quota
exceeded" warning. To prevent unecessary debugging effort in the future,
we explain in an in-code comment that the warning is normal.

Ref #1805
2015-12-10 13:16:26 +01:00
Martin Stein
6410bd7261 cpu_quota.run: more info and simpler calculations
Print result error and error tolerance per test result. Use TCL commands
'format' and 'abs'to simplify calculations in the conclusion part of the run
script.

Ref #1805
2015-12-10 13:16:26 +01:00
Sebastian Sumpf
64f39c9a42 usb_drv: Remove signal dispatching from storage
Do not call 'wait_and_dispatch_one_signal' in storage back end. This causes a
race of the EP with the main thread.
2015-12-10 13:16:26 +01:00
Stefan Kalkowski
60ba210a6b hw: reference count capabilities in UTCBs
When capabilities are delegated to components, they are added to the UTCB of the
target thread. Before the thread is able to take out the capability id out of
the UTCB and adapt the user-level capability reference counter, it might happen
that another thread of the same component deletes the same capability because
its user-level reference counter reached zero. If the kernel then destroys the
capability, before the same capability id is taken out of all UTCBs, an
inconsitent view in the component is the result.  To keep an consistent view in
the multi-threading scenario, the kernel now counts how often it puts a
capability into a UTCB. The threads on the other hand hint the kernel when they
took capabilities out of the UTCB, so the kernel can decrement the counter
again. Only when the counter is zero, capabilities can get destructed.

Fix #1623
2015-12-10 13:16:25 +01:00
Sebastian Sumpf
41b9f6bd03 ldso: Make truly self relocatable
On Linux the linker can now be loaded at arbitrary addresses, this became
necessary for newer kernel versions. The 'linux_arm' target is not supported.

Issue #1728
2015-12-10 13:16:25 +01:00
Christian Helmuth
e74b53d5dd libc_noux: remove use of private Native_config API 2015-12-10 13:16:24 +01:00
Christian Helmuth
30e129a91b pthread: remove use of private Native_config API
Former Native_config::context_area_virtual_base() was used to identify
the main, which is not desired as the Native_config is rather low-level
(almost private to the base libs). The commit uses a library constructor
to retrieve the main-thread Thread_base pointer, which can be used later
to distinguish main and other threads.
2015-12-10 13:16:24 +01:00
Stefan Kalkowski
ee4619687b hw: remove 1:1 I/O mappings from virtual memory
Likewise on the x86 branch, we have to remove all virtual memory ranges from the
virtual memory allocator that are used by one-by-one mappings of I/O regions
used by the kernel.

Fix #1797
2015-12-10 13:16:24 +01:00
Emery Hemingway
cffa4fddec util/xml_node.h: mark for_each_node const
Issue #1801
2015-12-10 13:16:24 +01:00
Christian Prochaska
9c31e18a4f vbox: handle EPT violation during event delivery
If the injection of an event causes an EPT violation, the event must be
injected again. This commit implements the reinjection for the case that
the EPT violation can be resolved without involving the recompiler.

Fixes #1798
2015-12-10 13:16:24 +01:00
Sebastian Sumpf
6a186f6ed0 packet_stream: implement peek_packet function
issue #1800
2015-12-01 15:12:11 +01:00
Alexander Boettcher
5b376188da nova: disable super pages for DMAR units 2015-11-29 18:17:09 +01:00
Emery Hemingway
d0ebdfba4b server/fs_log: merge labels using 'label_prefix'
Policies are no longer partially matched against 'label' attributes.
New test at run/fs_log.

Issue #1766
2015-11-29 18:17:09 +01:00
Josef Söntgen
627ecc44d2 Revert "os: reset Audio_out stream prior to calling start"
This reverts commit d8b95c263b.

Some clients might want to fiddle with the clients play position
(e.g. the mixer) within 'Audio_out::start()' and we might reset
it to an old value if we do it afterwards.

Fixes #1796.
2015-11-29 18:17:09 +01:00
Josef Söntgen
6d1e417250 os: reset one packet further in Audio_out stream
Since all Audio_out server components loop over the packet stream
queue it is save to reset the tail position to one after the play
position. We have to do this because we do not know exactly when
the play position changes (i.e. the driver has processed the packet)
and we might end up with a tail position before the current play
position.

Issue #1796.
2015-11-29 18:17:09 +01:00
Josef Söntgen
e3f301a540 dde_bsd: always advance play position
In addition to always sending the progress signal the driver
will also advance the play position, even if there is no valid
packet.

Issue #1796.
2015-11-29 18:17:09 +01:00
Josef Söntgen
72823eeddb mixer_gui_qt: write config instead of using report
* Also change the way how mute is handled. Only send the
  changed signal if the user has clicked on the mute checkbox

* Always check channels_rom is valid

* Add <default> handling

* Increase verbosity

Fixes #1795.
2015-11-29 18:17:08 +01:00
Josef Söntgen
08ae942d72 mixer: more relaxed config handling
Instead of bailing out if the channel list is incorrect check config
node attributes and default settings first.

Being there also fix flawed LOG messages.

Fixes #1794.
2015-11-29 18:17:08 +01:00
Alexander Boettcher
18130e3120 nova: limit user virtual address space on 64bit 2015-11-29 18:17:08 +01:00
Alexander Boettcher
f92a6a9594 nova: use kernel with DMAR quirk for Lenovo X250
Issue #1764
2015-11-29 18:17:08 +01:00
Alexander Boettcher
7857e830a3 nova: fix write-combing support
Issue #1764
2015-11-29 18:17:08 +01:00
Christian Helmuth
dd96cba415 part_blk: increase entrypoint stack size
The changed policy-matching utility uses session labels etc. on stack
which increases the size demand.
2015-11-29 18:17:08 +01:00
Martin Stein
df53187265 re-enable network tests on hw_zynq
We disabled them recently for all platform w/o a NIC driver. Now
hw_zynq has got a NIC driver.

Fixes #1667
2015-11-29 18:17:08 +01:00
Johannes Schlatow
50c809dfe5 os: remove deprecated os/run/network_test_nic*
The network_test_nic tests seem to be outdated. They don't work anymore for
several reasons.

Ref #1667
2015-11-29 18:17:08 +01:00
Johannes Schlatow
9203b83f24 nic: modify network_test to be executed with qemu
Ref #1667
2015-11-29 18:17:07 +01:00
Johannes Schlatow
2b1a70d66d nic: replace Nic driver interface in the zynq network driver
Ref #1667
2015-11-29 18:17:07 +01:00
Timo Wischer
9f4b77c5c2 nic: support Zynq-7000
Ref #1667
2015-11-29 18:17:07 +01:00
Sebastian Sumpf
020758a2f1 dde_linux: Move symbolic header-file links of Intel driver
Because Linux sometimes uses relative includes, the links are moved to the
'include/include/include' directory.

Ref #1764
2015-11-29 18:17:07 +01:00
Stefan Kalkowski
d65beb970d dde_linux: KMS-based Intel framebuffer driver (II)
* enable i915 driver from Linux 3.14.5
* tested for generation 5 till 8 GPUs

The driver can be configured at run-time via the config ROM. Every
connector of the graphic card can be configured separately using the
following syntax

  <config>
    <connector name="LVDS-11" width="1280" height="800" enabled="true"/>
  </config>

Also, when enabled within the intel framebuffer driver configuration like
the following

  <config buffered="yes"/>

a simple ram dataspace is propagated to the client and the driver
itselfs copies from that buffer to the framebuffer triggered via refresh
calls. This option is useful to alleviate tearing effects.

The  driver distributes all available connectors of the graphic card and
their supported resolutions via a report. It looks like follows

  <connectors>
    <connector name="LVDS-11" connected="1">
      <mode width="1280" height="800" hz="60"/>
      ...
    </connector>
    ...
  </connectors>

The driver distributes the report only if this is stated within its
configuration, like the following

  <config>
    <report connectors="yes"/>
  </config>

Fix #1764
2015-11-29 18:17:07 +01:00
Norman Feske
520c36d77f dde_linux: KMS-based Intel framebuffer driver (I)
Ref #1764
2015-11-29 18:17:06 +01:00
Christian Prochaska
1081af930d qt5: fix possible crash in QPA plugin
Fixes #1793
2015-11-29 18:17:06 +01:00
Christian Prochaska
2c558de891 vbox: 64-bit guest support
Fixes #1791
2015-11-29 18:17:06 +01:00
Christian Prochaska
6bf4fd3340 nova: 64-bit guest support
Issue #1791
2015-11-29 18:17:06 +01:00
Christian Helmuth
c04561f026 wifi: support run-time config of SSID/PSK in test
As known from netperf_l?ip_wifi.run the SSID and PSK can be configured
via environment variables GENODE_WIFI_SSID resp. GENODE_WIFI_PSK.
2015-11-29 18:17:06 +01:00
Emery Hemingway
20dc750d6a Update run scenarios for policy label matching
Issue #1766
2015-11-29 18:17:06 +01:00
Norman Feske
3f6ff39d76 os: improved label matching
This patch unifies the mechanism of selecting server-side policies and
taking session-routing decisions based on session labels. In both cases,
XML nodes are scored against session labels. The score depends on the
XML attributes 'label' (exact match), 'label_prefix', and
'label_suffix'.

Issue #1766
2015-11-29 18:17:05 +01:00
Christian Prochaska
b766387069 qt5: respond to zero-resized framebuffer
Interpret a zero-resized framebuffer as hint to close the window.

Fixes #1792
2015-11-29 18:17:05 +01:00
Emery Hemingway
ee25dcbae3 VFS: check path on the symlink node readlink
Fixes #1790
2015-11-29 18:17:05 +01:00
Emery Hemingway
44cfc414ee VFS server: throw Not_empty
Issue #1750
2015-11-29 18:17:05 +01:00
Emery Hemingway
1d92631ef0 VFS, File_system: Not_empty
Unlink returns an error for non-empty directories when the backend does
not support recursive unlinking.

Fixes #1750
2015-11-29 18:17:05 +01:00
Emery Hemingway
5bc3b53e63 adjust quota in libc vfs tests
Issue #1780
2015-11-29 18:17:05 +01:00
Emery Hemingway
6cb0f3bb71 VFS ram: remove quota
Fixes #1780
2015-11-29 18:17:05 +01:00
Christian Prochaska
25643fa00a init: fix uninitialized variables
Fixes #1753
2015-11-29 18:17:04 +01:00
Christian Helmuth
d46ad98434 clipboard: check validity of import rom before usage
The attached ROM dataspace may be not yet valid on the first update (or
at any time beyond this explicit test case).
2015-11-29 18:17:04 +01:00
Josef Söntgen
e13971fcf0 xml_generator: add attribute String<N> method
Make it possible to directly pass on a Genode::String<N> object instead
of using Genode::String<N>.string() by hand.

Fixes #1783.
2015-11-29 18:17:04 +01:00
Martin Stein
59d2a83f30 TZ VMM & USB Armory: Demo
* Provide paravirtualized block API for accessing the second partition
  of the block device that is provided by the ESDHC driver.

* Provide paravirtualized serial API for sending log-output over Genodes
  serial port.

* Use the latest Linux suggested in the USB Armory Wiki [1] when on USB Armory
  while still using the older vendor Linux when on i.MX53 QSB. I.e.,
  provide a device tree through RAM and a rootfs through the paravirtualized
  block device when on USB Armory while providing ATAGs and Initrd when on
  i.MX53 QSB.

* Switch on the LED on the USB Armory when the VMM catches a VM-exception
  and switch it off again when as soon as the exception is handled. This
  merely show-cases the ability to instrument the LED for such purposes. In an
  ideal world, the LED is switched on as long as we're on the "Secure Side"
  and switched off as long as we're not.

* For further information see repos/os/run/tz_vmm.run

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

Fixes #1497
2015-11-29 18:17:04 +01:00
Martin Stein
bed04f1f16 hw & imx53: kernel Trustzone config for USB armory
On the USB Armory, we want to secure different devices than on other i.MX53
implementations. Thus, add a board specific configuration that is interpreted
by the kernel Trustzone initialization.

Ref #1497
2015-11-29 18:17:04 +01:00
Martin Stein
85ba3259f8 hw & imx53: IRQ injection via Vm::proceed
Enhance the VM state, that can be accessed by a VMM, by a member
'unsigned irq_injection'. In Kernel::Vm::proceed check, whether
irq_injection is set.  If so, check whether irq_injection is a
non-secure IRQ.  If so, let the PIC raise this IRQ in the VM and reset
irq_injection.

Ref #1497
2015-11-29 18:17:04 +01:00
Martin Stein
8c22e5d535 sd_card & imx53: refactor and clean-up
Move ADMA2 stuff to extra header and unit. Move ESDHCv2 implementations to
extra unit. Use exceptions instead of error codes. Clean-up documentation.

Ref #1497
2015-11-29 18:17:03 +01:00
Martin Stein
9da422696b sd_card & imx53: set ADMA entry size more clean
Less heuristics.

Ref #1497
2015-11-29 18:17:03 +01:00
Martin Stein
a08358dce9 sd_card & imx53: fix multiblock write termination
The manual termination of multi-block writes via "Stop Transmission" commands
seems to leave the card in a busy state sometimes. This causes errors on
subsequent commands. Thus, we have to synchronize manually with the
card-internal state via "Send State" commands. Additionally, the method
for issuing the manual "Stop Transmission" commands was refined.

Ref #1497
2015-11-29 18:17:03 +01:00
Martin Stein
2b021ec54b sd_card & imx53: simplify IRQ handler
Less switch cases.

Ref #1497
2015-11-29 18:17:03 +01:00
Martin Stein
48e7d29686 sd_card & imx53: flush ADMA2 writes via DSB
We have to issue a data synchronization barrier after writing a ADMA2
table to ensure that the corresponding write commands were actually
executed before issuing the SD command.

Ref #1497
2015-11-29 18:17:03 +01:00
Martin Stein
bd7fe4160d sd_card & imx53: fix initialization problem on QSB
On i.MX53 QSB, a "Send Op Cond" command during the driver initialization
returns another response value than on the USB Armory. As the check for
this response seems to have no relevance for the driver functionality (Linux
reads the value from MMIO but I can't find a place in the source code where
it is used), we simply remove it.

Ref #1497
2015-11-29 18:17:02 +01:00
Martin Stein
d8e91908a2 sd_card & imx53: install IRQ signal handler
Previously, it was not necessary to acknowledge an IRQ initially before using
it. However, since the IRQ framework changed lately it is. Adapt to this.

Ref #1497
2015-11-29 18:17:02 +01:00
Alexander Boettcher
92cb9eb06d x86: support dynamic upgrades for platform driver
and, especially, for the device_pd. Account all resources per platform session
separately.

Fixes #1539
2015-11-29 18:17:02 +01:00
Alexander Boettcher
4c4e7c64d0 x86: start per platform session separate device_pd
Issue #1539
2015-11-27 12:18:54 +01:00
Alexander Boettcher
b902f42482 os: support reference ram cap for slaves
Issue #1539
2015-11-27 12:18:54 +01:00
Alexander Boettcher
e49a5ee19f base: make reference ram cap part of child policy
Issue #1539
2015-11-27 12:18:54 +01:00
Christian Helmuth
50dd0dda38 Notify report-rom client on signal-handler registration
Notify client initially to enforce a client-side ROM update. Otherwise,
a server-side ROM update between session creation and signal-handler
registration would go unnoticed.

Issue #1788
2015-11-27 12:18:54 +01:00
Norman Feske
4b9e1f1060 Window decorator that can be styled 2015-11-27 12:18:54 +01:00
Norman Feske
2dde77f62c gems: add Nitpicker_buffer and Dither_painter
The two utilities gems/nitpicker_buffer.h and gems/dither_painter.h were
formerly private to the menu_view component.
2015-11-27 12:18:54 +01:00
Norman Feske
c63bea825d decorator: fix warning 2015-11-27 12:18:54 +01:00
Norman Feske
f9d0e57b0e decorator: fix hover detection 2015-11-27 12:18:53 +01:00
Norman Feske
e4678a4dc1 decorator: do not defer stacking changes
This patch changes the decorator to always apply stacking-order changes
immediately instead of deferring the re-stacking of the nitpicker views
to the next call of 'update_nitpicker_views'. The deferred application
did not always work when more then one windows changed their stacking
position at once because the cached '_neighbor' values interfered with
each other.

The eager re-stacking should not have negative effects on the user
experience because, in contrast to re-positioning, re-stacking a rare
operation.
2015-11-27 12:18:53 +01:00
Norman Feske
c26d30dffc decorator: use server API 2015-11-27 12:18:53 +01:00
Norman Feske
acb0ddd9ef decorator: generalize include/decorator/window.h
This change makes it possible to reuse the generic window decorator
classes in include/decorator/ for decorators of a different structure.
E.g., instead of painting decorations on a single nitpicker session,
each window may paint its decorations into additional window-specific
nitpicker sessions.
2015-11-27 12:18:53 +01:00
Norman Feske
493386ed27 wm: prevent superfluous session upgrades
For each session upgrade performed by a wm client as part of the
Nitpicker::Connection::buffer function, the window manager wrongly
upgraded the wrapped nitpicker session twice: Once by handling the
Root::upgrade, and again by handling of the server-side 'buffer'
operation. Here, the 'buffer' operation was implemented by not merely
forwarding the RPC request to the wrapped nitpicker session but by
calling the 'buffer' method on the wrapped session's connection
object, which implictly issues session upgrades. Consequently,
the window manager would transfer twice the amount of the session
upgrades it received by its clients to nitpicker and eventually ran
out of memory.

The patch fixes the problem by eliminating the call of the
Nitpicker::Connection::buffer method and instead merely forward the RPC
requests to the wrapped nitpicker sessions.
2015-11-27 12:18:53 +01:00
Norman Feske
461776a29c wm: support multiple decorator sessions 2015-11-27 12:18:53 +01:00
Norman Feske
ed774253b6 demo: fix corner case in scout_gfx/icon_painter.h
The original version of the icon painter would reach beyong the
texture boundaries for textures of even width and height, and when
painting an icon with the width or height of the texture.

In this case, p3 would be set to the same value as p2. However, the code
expects p3 to lie within the middle rectangle. However, in this corner
case, the middle rectangle is actually empty. So no pixel can lie within
it. Hence, p3 is positioned by one pixel to the left outside the middle
rectangle, which violates the assumptions when calculating the clipping
and texture offsets. The patch fixes the problem by reducing the size of
the right column by one pixel. This ensures that exists always a
non-zero middle rectangle.
2015-11-27 12:18:53 +01:00
Norman Feske
6177424fa6 demo: make Lazy_value::dst() const 2015-11-27 12:18:53 +01:00
Norman Feske
0ab49dff3a nitpicker: reflect Handle_registry::Out_of_memory
In the event where a nitpicker session's quota was depleted by the
allocation of view handles, nitpicker would abort. The patch prevents
the abort by reflecting this condition as an Out_of_metadata exception
to the client. This way, the client can upgrade its session as needed.

The problem was triggered by running the decorator_stress test (changed
to generate 40 windows) with the themed_decorator.
2015-11-27 12:18:52 +01:00
Norman Feske
a1c0c99045 nitpicker: fix corner case in view stack operation
This patch addresses the corner case that the specified neighbor view
is the first view of the view stack. If this is the case when inserting
the view in front of the neighbor (behind == false), the target position
within the view stack must be a null pointer, not the first view.

Because the conditions have become rather complicated, both cases
of 'behind' are handled separately now.
2015-11-27 12:18:52 +01:00
Norman Feske
909c4c9ffc os: define storage type of rgb888 as 32-bit value
The original version used unsigned long as storage type, which wasted
memory on 64-bit machines.
2015-11-27 12:18:52 +01:00
Norman Feske
f655ac31f7 vbox: don't fault if NIC is unavailable
This patch prevents vbox from faulting in the (unexpected) case where
the VM has a network adaptor configured but the NIC session cannot be
opened.
2015-11-27 12:18:52 +01:00
Norman Feske
853378960c init: prevent division by zero
During the reconfiguration of init, the CPU-quota computation caused
init to produce a division-by-zero exception.
2015-11-27 12:18:52 +01:00
Christian Prochaska
a2bb96723a vbox: respond to zero-resized framebuffer 2015-11-27 12:18:52 +01:00
Norman Feske
331225dfcb Increase TRACE quota of trace subject reporter
This change is needed to accommodate the turmvilla scenario.
2015-11-27 12:18:52 +01:00
Norman Feske
23aac2954b rom_filter: respond to dynamic config updates 2015-11-27 12:18:51 +01:00
Josef Söntgen
3859e83a78 dde_bsd: requires pci
Prevent building the driver on linux.

Fixes #1785.
2015-11-27 12:18:51 +01:00
Alexander Boettcher
84dfb668d3 noux: handle rom_connection_failed gracefully
Fixes #1040
2015-11-27 12:18:51 +01:00
Christian Helmuth
638fdeb2f5 vbox: fix nitpicker config in win auto tests 2015-11-27 12:18:51 +01:00
Alexander Boettcher
2b6795df78 ps2: support verbose config parameter
Fixes #7
2015-11-27 12:18:51 +01:00
Sebastian Sumpf
0c3dfbad65 base-hw: use signal context list for pending signals
'block_for_signal' and 'pending_signal' now set pending flag in signal context
in order to determine pending signal. The context list is also used by the
'Signal_receiver' during destruction.

Fixes #1738
2015-11-27 12:18:50 +01:00
Alexander Boettcher
18d24eec7b add missing .so files to noux_tool_chain.inc
required by grep

Issue #1040
2015-11-18 12:22:09 +01:00
Alexander Boettcher
e9525f49fd noux: reflect -no memory- case during process setup
Instead of just red messages in the log and a hanging caller, the issuer
may respond to it - e.g. a noux bash shell will show an error and is
afterwards still usable.

Fixes #1778
2015-11-18 12:22:09 +01:00
Alexander Boettcher
c7df65e1da base: invalidate thread cap if task creation fails
Issue #1778
2015-11-18 12:22:09 +01:00
Alexander Boettcher
9ada3d3178 nova: sanity check parent pd assignments
Issue #1778
2015-11-18 12:22:09 +01:00
Alexander Boettcher
4b6b759739 nova: handle dissolve of not-activated entrypoints
Dissolve calls on not-yet-activated entrypoints will block forever in the
portal cleanup call without this commit.

Issue #1778
2015-11-18 12:22:08 +01:00
Alexander Boettcher
eb236a1a10 nova: re-add server object IPC cleanup call
Accidentally removed by #1658. We need to make the cleanup call for server
objects - otherwise we may get in capability identifier re-use trouble.

Issue #1778
2015-11-18 12:22:08 +01:00
Alexander Boettcher
8c060d6622 x86: support attaching rmrr region to device_pd
Issue #1764
2015-11-18 12:22:08 +01:00
Alexander Boettcher
91b69edb72 nova: adjust kernel warning/error messages
- extend one overmap message case
- show by default more error messages

Issue #1779
2015-11-18 12:22:08 +01:00
Alexander Boettcher
5c63f7003e nova: evalute pending irqs si->sm association
Fixes ps/2 driver bring-up if already some irqs are pending but not delivered
to the Genode signal(Nova semaphore) - reported by @nfeske.

Fixes #1779
2015-11-18 12:22:08 +01:00
Alexander Boettcher
74e89727ee acpi - report rmrr via acpi report rom
Issue #1764
2015-11-18 12:22:08 +01:00
Alexander Boettcher
3789a75ed6 base: support ascii_to for uint64_t
Issue #1764
2015-11-18 12:22:07 +01:00
Norman Feske
7920b57d34 Consider byte offset in Attached_io_mem_dataspace
Ref #1764
2015-11-18 12:22:07 +01:00
Sebastian Sumpf
ab79b0d5e0 ahci: Reset port before access
Also throw error if wakup from power safe mode failes.

Fix #1776
2015-11-18 12:22:07 +01:00
Josef Söntgen
5f2d92f916 gems: add experimental mixer_gui based on Qt
Issue #1770.
2015-11-18 12:22:07 +01:00
Josef Söntgen
7a70833ba1 mixer: add reporting and config handling
Fixes #1770.
2015-11-18 12:22:07 +01:00
Josef Söntgen
72e1147cce mixer: use retry util for remixing packets
Issue #1770.
2015-11-18 12:22:06 +01:00
Josef Söntgen
c814d13737 mixer: use Server framework
Issue #1770.
2015-11-18 12:22:06 +01:00
Josef Söntgen
fe1a0e5f65 os: add mixer utility header for Channel struct
The notion of a channel is shared by the mixer backend as well as the
frontend. To make dealing with reports between those easier move the
Channel definition to a global header.

Issue #1770.
2015-11-18 12:22:06 +01:00
Josef Söntgen
2c9d2e1d32 wifi_drv: remove misleading loading message
Fixes #1774.
2015-11-18 12:22:06 +01:00
Josef Söntgen
dd933de84f wifi_drv: remove device white-list patch
Issue #1774.
2015-11-18 12:22:06 +01:00
Josef Söntgen
88123bdbd5 wifi_drv: make pci probing more sane
Initial patch by @skalk.

Issue #1774.
2015-11-18 12:22:06 +01:00
Christian Helmuth
a01b1793eb dde_rump: fix race condition in rumpuser_mtx
The new mutex is a binary semaphore based on the implementation of
Genode::Semaphore using an applicant FIFO.
2015-11-18 12:22:06 +01:00
Christian Helmuth
60fa8ade1a dde_rump: propagate CC_OLEVEL to buildrump.sh
This effectively enables configuring builds with -O0 for rump sources.
Note, if the build directory is not clean, at least var/libcache/rump*
should be removed before building with changed etc/tools.conf.
2015-11-18 12:22:05 +01:00
Christian Helmuth
5c6f7bdea0 dde_rump: remove static globals 2015-11-18 12:22:05 +01:00
Christian Helmuth
db3a5a3b02 Some rounds of write/read in libc fs test
The test performs several rounds of write-read cycles with the following
configuration attributes in a <write-read> config node

  rounds       determines the number of rounds (default is 4)
  size         determines the number of bytes written/read in one round
               (default is 4 MiB)
  buffer_size  determines the size of the write-read buffer
               (default is 32 KiB)

In one round the test writes and reads "size/buffer_size" times
from/into a buffer_size'd buffer.
2015-11-18 12:22:05 +01:00
Christian Helmuth
a0d92fcdb8 platform_drv: increase RAM config for -O0 builds 2015-11-18 12:22:05 +01:00
Josef Söntgen
c47e9751bd dde_bsd: fix missing bzero ref when building -O0
Fixes #1773.
2015-11-18 12:22:05 +01:00
Josef Söntgen
e9773f237e wifi_drv: move symlink generation to libnl_include
Issue #1772.
2015-11-18 12:22:05 +01:00
Josef Söntgen
5e60a1b32f wifi_drv: move symlink generation to wifi_include
Fixes #1772.
2015-11-18 12:22:05 +01:00
Sebastian Sumpf
e2280a1650 noux: Run script with two bash shells using the same file system
Related to #1765

Instructions:

1. Create a file in terminal one in the 'ram' directory

! echo "test" > ram/test

2. Second terminal

! tail -f ram/test

3. First terminal

! echo "Meaningless output" >> ram/test

4. Observe second terminal
2015-11-18 12:22:05 +01:00
Sebastian Sumpf
06fe755f8c noux: Enable setting of file handle flags
Fixes #1765
2015-11-18 12:22:04 +01:00
Christian Prochaska
f6863e3f4b qt5: add clipboard support
If a Qt application shall use the clipboard, this must be configured as:

<config clipboard="yes">

Fixes #1749
2015-11-09 13:17:56 +01:00
Christian Prochaska
97bbc8f965 pthread: don't destroy the pthread object for the main thread
The pthread object for the main thread initializes its 'Thread_base' base
class part with a reference to the 'Thread_base' object of the Genode main
thread. Therefore the pthread object for the main thread should never be
destroyed, as this would also destroy the Genode 'Thread_base' object.

Fixes #1760
2015-11-09 13:08:31 +01:00
Josef Söntgen
be8f16ac3e vbox: use ring buffer in audio backend
Instead of hardcoding the device model configuration use a ring buffer
to gather samples.

Fixes #1767.
2015-11-09 13:08:31 +01:00
Josef Söntgen
83e5a64864 os: extend Audio_out with queue query method
Issue #1767.
2015-11-09 13:08:30 +01:00
Josef Söntgen
d8b95c263b os: reset Audio_out stream prior to calling start
Issue #1767.
2015-11-09 13:08:30 +01:00
Josef Söntgen
de8794321b os: add tail accessor to Audio_out stream
Issue #1767.
2015-11-09 13:08:30 +01:00
Josef Söntgen
663e8fad9b os: increase Audio_out queue size
Issue #1767.
2015-11-09 13:08:30 +01:00
Josef Söntgen
5b6fdc96fc vbox: disable rdtsc VM exit
Trapping rdtsc creates a huge load in some guests, e.g. Windows 8.1,
that use this instruction very frequently. This influences audio
playback/recording in a bad way (distorted sounds, …). As a interim
solution disable the virtualization of rdtsc completely. As long
as each guest VM runs on its own CPU core it should be fine as there
should not be that much interference (TSC warping).

That being said, TSC offsetting as well as adjusting within vbox have to
be evaluated.

Fixes #1768.
2015-11-09 13:08:30 +01:00
Christian Prochaska
d34bbbceb2 Arora: update to current git master branch
Our current version of Arora crashes at program exit. This bug has been
fixed on the Arora git master branch.

Fixes #1759
2015-11-09 13:08:30 +01:00
Christian Prochaska
0005407832 qt5: increase wm and decorator RAM quota
The RAM quota currently dedicated to the wm and decorator components in
the 'qt5_common.inc' file is too low for a window of size 1920x1080.

Fixes #1761
2015-11-05 16:03:04 +01:00
Christian Helmuth
9730c7e333 base-nova: cleanup specific Rm_session_client
- Align implementation to the current generic implementation
- Document NOVA-specific implementation of dataspace() (as in the
  original commit message)
2015-11-04 14:37:55 +01:00
Norman Feske
82991ba378 base: fix warning in console.cc 2015-11-04 13:49:01 +01:00
Norman Feske
91345a1568 nitpicker: use fb sync for periodic processing 2015-11-04 13:49:01 +01:00
Norman Feske
24b7accbf2 fb_drv: generate periodic sync events
Fixes #1762
2015-11-04 13:49:01 +01:00
Norman Feske
650267b425 libports: fix eglgears example
Thanks to Jamey Sharp for the fix!

Fixes #1670
2015-11-04 14:09:30 +01:00
Christian Prochaska
759b9ed1ad floating window layouter: bring focused window to front 2015-11-04 14:09:30 +01:00
Christian Prochaska
9aff45ae8c floating window layouter: fix padding 2015-11-04 14:09:30 +01:00
Christian Prochaska
75111c4f1a wm: sanitize the view title
By replacing '"' by ''', we work around issue #1757.
2015-11-04 14:09:30 +01:00
Christian Prochaska
220d143e44 decorator: fix detection of hovered window control 2015-11-04 14:09:29 +01:00
Norman Feske
755d2cce05 gems: turn launcher into a panel-like application 2015-11-04 14:09:29 +01:00
Norman Feske
519eb334e9 menu view: add hbox layout, support widget reorder
This patch, complements the existing vbox layout with a hbox layout and
improves the response to dynamic dialog updates. The new version support
disappearing widgets and the reordering of widgets. Furthermore, this
patch ensures that the 'Widget::_layout' functions are executed after
updating a new version of the dialog.
2015-11-04 14:09:29 +01:00
Norman Feske
5456175d07 menu view: change style to be less obtrusive 2015-11-04 14:09:29 +01:00
Christian Prochaska
e652af7518 nitpicker: fix off-by-one bug 2015-11-04 14:09:29 +01:00
Christian Prochaska
0150d02683 nitpicker: never bring the background view to front 2015-11-04 14:09:29 +01:00
Norman Feske
a01a423c91 nitpicker: allow refocus during global key ops 2015-11-04 14:09:29 +01:00
Norman Feske
f01b205c30 nitpicker: postpone focus updates until idle
This patch ensures that focus changes performed via the Session::focus
call are made effective the next time, the user is idle. Previously,
focus changes during drag operations were simply discarded.
2015-11-04 14:09:28 +01:00
Norman Feske
7c968d4c60 nitpicker: externalize xray policy
This patch removes the policy for controlling the X-Ray mode from
nitpicker to the separate component os/app/xray_trigger.

Fixes #1690
2015-11-04 14:09:28 +01:00
Norman Feske
2166aef737 nitpicker: update all on focus change in xray mode 2015-11-04 14:09:28 +01:00
Norman Feske
3726cafb28 window layouter: no focus update on hover reset 2015-11-04 14:09:28 +01:00
Christian Prochaska
f8c1379f15 dde_ipxe: enable Intel I218-LM (rev 03) PCI-ID
Fixes #1754
2015-11-04 14:09:28 +01:00
Christian Helmuth
64a4713fe6 fb_sdl: check for X11 / prevent invalid-event flood
We check for X11 as required platform now and are more verbose on
errors.
2015-11-04 14:09:28 +01:00
Alexander Boettcher
826c81ac18 hw_x86: discover all physical memory in core
Fixes #1741
2015-11-04 14:09:28 +01:00
Alexander Boettcher
f42f946f3b base: support parsing multiboot for phys. memory
Issue #1741
2015-11-04 14:09:27 +01:00
Alexander Boettcher
7ea5884ffc base: use mmio framework for multiboot handling
Issue #1741
2015-11-04 14:09:26 +01:00
Alexander Boettcher
6c1906e43e platform_drv: clear bdf_in_use if set
Fixes #1740
2015-11-04 14:09:26 +01:00
Alexander Boettcher
04cca1edb1 platform_drv: use shared irq path for ps/2
Issue #1740
2015-11-04 14:09:26 +01:00
Alexander Boettcher
8701b7d517 x86: construct platform_drv irq connection lazily
Issue #1740
2015-11-04 14:09:26 +01:00
Alexander Boettcher
2b2587fde9 x86: claim extended pci config io memory lazily
Issue #1740
2015-11-04 14:09:26 +01:00
Alexander Boettcher
bdaf79e3b8 x86: extend io_mem call of platform_drv
Support allocation of sub I/O memory spaces of one I/O memory bar with
write-combined caching attribute.
2015-11-04 14:09:25 +01:00
Christian Prochaska
8f849c9438 clipboard: fix session close handling
Fixes #1747
2015-11-04 14:09:25 +01:00
Christian Prochaska
731a98c266 vbox: decode clipboard content
Fixes #1748
2015-11-04 14:09:25 +01:00
Josef Söntgen
32e2ab85b0 netperf: remove bssid from wifi tests
The bssid is purely optional and only should be used if it really is
needed.

Issue #1746.
2015-11-04 14:09:25 +01:00
Josef Söntgen
9fc7519972 wifi_drv: handle hidden SSID
Form now on always generate a configuration that handles nidden SSIDs
well and document the configuration in more detail.

Fixes #1746.
2015-11-04 14:09:25 +01:00
Emery Hemingway
8ed6364388 refactor Vfs::Ram_file_system
Issue #1648
2015-11-04 14:09:24 +01:00
Emery Hemingway
1b4f894e2d VFS stress test
Issue #1648
2015-11-04 14:09:24 +01:00
Emery Hemingway
cdb44850d3 Strip slashes from Path in Vfs::Fs_file_system
strip_last_element at Path removes everything after the trailing slash,
which causes lookup failures at the VFS server when opening directories.

Issue #1648
2015-11-04 14:09:24 +01:00
Emery Hemingway
b6c558dce9 Vfs: File_system server backed by VFS library
Test available at libc_vfs_fs.

Fixes #1648
2015-11-04 14:09:24 +01:00
Emery Hemingway
1c6164a0c5 File_system session: broaden error handling
Throw Invalid_name, No_space, and Out_of_node_handles where appropriate.

Catch the new range of errors thrown by at the VFS.
Catch Out_of_node_handles at the VFS, but print a message and re-throw.

Issue #1648
2015-11-04 14:09:24 +01:00
Emery Hemingway
1d4bd10701 fix handle leak in Vfs::Fs_file_system
Issue #1648
2015-11-04 14:09:23 +01:00
Emery Hemingway
48fd034cfe New session arguments at File_system connection
Session root and writeablity may be specified at the session
convenience constructor.

Issue #1648
2015-11-04 14:09:23 +01:00
Emery Hemingway
2da239d0c8 void sync(char const *path)
Sync now takes a path argument at VFS and File system interfaces.

Issue #1648
2015-11-04 14:09:23 +01:00
Norman Feske
96d021b9d4 base: char const * comparison operators for String 2015-11-03 17:04:16 +01:00
Norman Feske
a528aa097a init: add 'label' criterion for session routing
This patch introduces a shortcut for conditional session routes of the
form '<if-arg key="label" value="..."/>'. With this change, the label
can be directly specified as 'label' attribute of an '<any-service>' or
a '<service>' node. The '<if-arg>' mechanism was not documented anyway
and I hope to be able to ultimately remove it.
2015-11-03 17:04:16 +01:00
Christian Helmuth
c2f0bb4fa8 ports: adapt to moved lynx hosting
The new archive has a new naming scheme (also the root directory name
changed) but I compared the contents and those don't differ.
2015-10-28 15:06:23 +01:00
Alexander Boettcher
f9fbe34644 base: avoid detaching not attached trace_control 2015-10-28 15:06:23 +01:00
Alexander Boettcher
6de46dfd2e increase timeouts for noux_tool_chain_auto 2015-10-28 15:06:23 +01:00
Alexander Boettcher
c4686a1196 disable network tests on platforms w/o nic driver
They don't have a network driver currently.
2015-10-28 15:06:23 +01:00
Alexander Boettcher
ffbbf69959 nova: update kernel branch to avoid tlb issues
Following page fault sympton in core gets fixed:

PAGE-FAULT IN CORE (WRITE pf_addr=1000000 pf_ip=14361c from 00 <NULL>)

stack pointer 0xa01fec30, qualifiers 0x6 irUWp

faulter utcb a01ff000, last message item count 1

0 - type=1 rights=0x3 region=0x1000000+0x1000000 hotspot 0(801) - delegated

   1 a01fec30 0014361c
   2 a01fec68 001401d5
2015-10-28 15:06:23 +01:00
Alexander Boettcher
d6bae1a9a3 nova: speedup clearing dataspace in core 2015-10-28 15:06:23 +01:00
Alexander Boettcher
ceb04d3c11 nova: avoid race in pager_object destruction
Don't skip the cleanup call if a pager object is marked as blocked.

It happens that the pager_object is in destruction but it is also used
concurrently by the pager thread. The pager thread handling code may set the
pager object to blocked but still uses the pointer to the pager object. Avoid
locking at the state of the pager object and make the cleanup call everytime.

Error output looks like this, where the pf_ip is within

  void Pager_object::_page_fault_handler(addr_t pager_obj)

method and the pf_addr is the stale pointer to the already released pager_object.

no RM attachment (READ pf_addr=xxx pf_ip=xxx from 00 <NULL>)
static void Genode::Pager_object::_page_fault_handler(Genode::addr_t): page fault, thread '<NULL>', cpu x, ip=xxx, fault address=xxx

PAGE-FAULT IN CORE (READ pf_addr=b10e0090 pf_ip=132dbc from 00 <NULL>)
2015-10-28 15:06:22 +01:00
Alexander Boettcher
c4f8af2665 hw_zynq: limit cpu count to 1 in mp_server.run
qemu says:

Number of SMP cpus requested (2), exceeds max cpus supported by machine `xilinx-zynq-a9' (1)
2015-10-28 15:06:22 +01:00
Sebastian Sumpf
2b429ee84c base: Dispatch server signal in entry point
Currently, when a signal arrives in the main thread, the signal dispatcher is
retrieved and called from the main thread, the dispatcher uses a proxy object
that in turn sends an RPC to the entry point. This becomes a problem when the
entry point destroys the dispatcher object, before the dispatch function has
been called by the main thread. Therefore, the main thread should simply send an
RPC to the entry point upon signal arrival and the dispatching should be handled
solely by the entry point.

Issue #1738
2015-10-28 15:06:22 +01:00
Josef Söntgen
0879a9570c vbox: fix vm_win8.vbox network configuration
We need to specify the interface we want to attach to.

Fixes #1737.
2015-10-09 16:39:39 +02:00
Alexander Boettcher
6c30bf2667 nova: interpret write page fault correctly
Fixes #1722
2015-10-09 16:38:48 +02:00
Sebastian Sumpf
78e18981fb nic session: fix quota check
Check for overflow.

Issue #1735
2015-10-09 16:38:48 +02:00
Alexander Boettcher
5aec67d5bb vbox: enable clipboard support"
Fixes #1696
2015-10-09 16:38:48 +02:00
Sebastian Sumpf
2426c58b9f ahci: support for non-ncq ATA devices
* use '_dma_ext' or '_fdpma' commands
* handle interrupts depending on mode of operation
* spelling fixes
* move ATA 'Idendity' struct to ata header

issue #1734
2015-10-09 16:38:48 +02:00
Alexander Boettcher
a608d48ddf noux: handle more libc getrlimit parameters
- we claim to have no limits on file handles and number of threads
- remove obsolete Thread_base::myself fall-back code for stack size calculation

Issue #1733.
2015-10-09 16:38:48 +02:00
Alexander Boettcher
2e62543fdb nova: use remote revoke
Fixes #1733
2015-10-09 16:38:48 +02:00
Alexander Boettcher
c0e88ec69e nova: adjust kernel quota calculation
Too less memory quota for a PD may be calculated, which leads to too early
punishment for a Genode process.

Discovered during Turmvilla scenario #1552 and issue #1733.
2015-10-09 16:38:47 +02:00
Alexander Boettcher
c7195c8652 nova: sanitize cpu during pager assignment
Additionally print warnings about unavailable CPUs if they are tried to be
used during pager object setup.

Discovered during Turmvilla scenario #1552 and issue #1733.
2015-10-09 16:38:47 +02:00
Alexander Boettcher
d7da035115 nova: sanitize priority parameters
threads with prio 0 will not be started and would fail silently.
Happened on Turmvilla for the USBProxy thread in virtualbox.

Discovered during Turmvilla scenario #1552 and issue #1733.
2015-10-09 16:38:47 +02:00
Alexander Boettcher
70a3bb7465 nova: avoid syscall on invalid signal capability
Reduces kernel log message noise when running on kernel-debug branch.
Additionally add a more verbose core message.

Discovered during Turmvilla scenario #1552 and issue #1733.
2015-10-09 16:38:46 +02:00
Alexander Boettcher
94f64ef464 nova: avoid sc_ctrl syscalls on invalid caps
Avoids kernel log messages if TRACE_ERROR is enabled in kernel.

Discovered during Turmvilla scenario #1552 and issue #1733.
2015-10-09 16:38:46 +02:00
Alexy Gallardo Segura
7f1641e460 usb: use GPIO session for configuration
This fixes the issue of conflicting base-address attachment between USB
and GPIO.

Fixes #1732
2015-10-09 16:37:22 +02:00
Alexy Gallardo Segura
e8b4e0be6d disabling verbose in gpio driver
fixup #1732
2015-10-09 16:37:22 +02:00
Emery Hemingway
b121212b23 init: improve priority upgrade message
Fixes #1731
2015-10-09 16:36:31 +02:00
Emery Hemingway
88f107e0f9 Fs_log: new truncate behavior
Files are truncated at the next client session if all previous sessions
associated with the file are closed.

Issue #1538
2015-10-09 16:36:30 +02:00
Emery Hemingway
77c00bc26d fs_log: fix creation of '.log' files
Issue #1538
2015-10-09 16:36:17 +02:00
Emery Hemingway
df0bbe0b0e ascii_to() utility for boolean values
Also, Genode::Arg was adapted to use the new utility for boolean tokens
and strings.

Issue #1648
2015-10-09 16:35:30 +02:00
Christian Helmuth
ce354d6fd9 linux: improve diagnosis on exception handling
Under some circumstances, the diagnostic message in the exception signal
handler was not printed. This could happen due to a dead lock in the
console library if the console code itself produces the exception while
possessing the mutex, e.g., by exhausting a undersized stack. Now, we
directly write to the log session via the stdout_write() hook or use
raw_write_str() in core.
2015-10-06 12:18:57 +02:00
Christian Helmuth
bbf8a4f2ec lwip: patch for resetting write offset
Otherwise, the assertion "already writing or closing" may fail.
2015-10-06 12:18:57 +02:00
Norman Feske
aaea28ae85 Fix build and execution of test/sel4 2015-10-06 12:18:56 +02:00
Norman Feske
67b3c23281 dde_rump: adaptation to Xml_node change 2015-10-06 12:18:56 +02:00
Norman Feske
57ce50a3d4 window layouter: handle maximize/unmaximize 2015-10-06 12:18:56 +02:00
Norman Feske
818840ca6a wm: provide physical screen mode to layouter 2015-10-06 12:18:56 +02:00
Norman Feske
a8cca8e1b3 window layouter: respond to window closer 2015-10-06 12:18:56 +02:00
Norman Feske
4164c9edec wm: allow resize requests to 0x0 2015-10-06 12:18:55 +02:00
Norman Feske
dcc4b8c313 wm/layouter/decorator: propagate window controls 2015-10-06 12:18:55 +02:00
Norman Feske
0efd908e27 wm: support clients in "direct" role 2015-10-06 12:18:55 +02:00
Norman Feske
e27ebd0368 wm/layouter: respond to external focus requests 2015-10-06 12:18:55 +02:00
Norman Feske
cdb87a7c4f window layouter: handle hidden windows 2015-10-06 12:18:55 +02:00
Norman Feske
e0233604fa wm: handling of temporarily hidden views 2015-10-06 12:18:55 +02:00
Norman Feske
0ab74e61d7 wm: handle Nitpicker::Session::session_control 2015-10-06 12:18:55 +02:00
Norman Feske
afac1e86bb decorator: window colors and controls
This patch improves the decorator in two ways. First, it enables the
assignment of window colors depending on the window labels. This
configuration can be changed dynamically. Second, it adds the handling
of window controls for closing, maximizing, minimizing windows.

Issue #1689
Fixes #1688
2015-10-06 12:18:54 +02:00
Norman Feske
1460105f71 nitpicker: provide user activity in focus reports
This patch supplements the existing focus reports with the new attribute
'active', which indicates recent user activity when set to "yes". This
information is consumed by the clipboard to dynamically adjust its
information-flow policy depending on the user activity.

Issue #1712
2015-10-06 12:18:54 +02:00
Norman Feske
59014a50f1 os: new clipboard component and test
Fixes #1712
2015-10-06 12:18:54 +02:00
Norman Feske
02d07655ce os: make internal report_rom classes reusable
This patch moves the formerly internal classes of the report-ROM service
to the public location os/include/report_rom/ so that they can be reused
by other components such as the upcoming clipboard.
2015-10-06 12:18:53 +02:00
Norman Feske
702646a4a3 os: new ROM filter component
Related to #1690
2015-10-06 12:18:53 +02:00
Norman Feske
8763b6925a os: new ROM logger component 2015-10-06 12:18:53 +02:00
Norman Feske
6ecbc419c0 Xml_node, Xml_generator: sanitize node content
Fixes #1698
2015-10-06 12:18:53 +02:00
Norman Feske
e590d90bf6 xml_generator: support appending of node content
The new 'Xml_generator::append' method can be used to append strings
into the body of an XML node.
2015-10-06 12:18:53 +02:00
Norman Feske
a80d944944 os: add Xml_attribute::value(String<N> *out)
This overload of the value member eases the retrieval of Genode::String
objects from XML attributes. So we won't need to deal with C-style
character buffers anymore.
2015-10-06 12:18:53 +02:00
Norman Feske
c8ec7b6ffb os: add print_lines utility
The code originates from the report_rom server. This patch makes the
code easy to reuse in other components.
2015-10-06 12:18:52 +02:00
Norman Feske
32a227ce77 os: Add == and != operators to Genode::Color 2015-10-06 12:18:52 +02:00
Norman Feske
dce6e14e3e os: generalize Session_label, Session_policy
The utilities in os/session_policy.h used to be tailored for the
matching of session arguments against a server-side policy
configuration. However, the policy-matching part is useful in other
situations, too. This patch removes the tight coupling with the
session-argument parsing (via Arg_string) and the hard-wired use of
'Genode::config()'.

To make the utilities more versatile, the 'Session_label' has become a
'Genode::String' (at the time when we originally introduced the
'Session_label', there was no 'Genode::String'). The parsing of the
session arguments happens in the constructor of this special 'String'.
The constructor of 'Session_policy' now takes a 'Genode::String' as
argument. So it can be used with the 'Session_label' but also with other
'String' types. Furthermore, the implicit use of 'Genode::config()' can
be overridden by explicitly specifying the config node as an argument.
2015-10-06 12:18:52 +02:00
Norman Feske
1f941d1c87 Fix missing include 2015-10-06 12:18:52 +02:00
Norman Feske
8f50b00f13 usb_drv: fix shadowing of loop variable
This patch also fixes the assignment of the pci_dev flags (the
mem flag was never set).
2015-10-06 12:18:52 +02:00
Norman Feske
e17198570e os: add ISABRIDGE class to x86 platform driver 2015-10-06 12:18:52 +02:00
Norman Feske
be789ffcf1 libports: fix comment in import-libc.mk 2015-10-06 12:18:52 +02:00
Emery Hemingway
1779a0511b vfs: add new error codes
The codes are OPEN_ERR_NAME_TOO_LONG, OPEN_ERR_NO_SPACE, and
FTRUNCATE_ERR_NO_SPACE.

Issue #1693
2015-10-06 12:18:51 +02:00
Alexander Boettcher
286edaed68 base: detect and stop self de-structing threads
Issue #1687
2015-10-06 12:18:51 +02:00
Alexander Boettcher
3f611fe00d pthread: handle self destruction better
Defer destruction of threads which tries to self-destruct. Check an perform
cleanup of such threads during pthread_cancel and pthread_create.

Issue #1687
2015-10-06 12:18:51 +02:00
Alexander Boettcher
6f3e9c12fb vbox: support shutdown of VMM
- send exit signal to parent
- avoid assertion in vbox posix backend

Fixes #1687
2015-10-06 12:18:51 +02:00
Alexander Boettcher
ae12f04354 nova: avoid deadlocks by self-destructing threads
Issue #1687
2015-10-06 12:18:50 +02:00
Alexander Boettcher
6426d4098c dde_rump: handle ENOENT error case
Related to #1687
2015-09-30 17:13:11 +02:00
Christian Prochaska
fd533b0c93 qt5: key repeat support
Fixes #1692
2015-09-30 15:48:12 +02:00
Christian Prochaska
0f8fcab3bd qt5: fix use of uninitialized variable
Fixes #1677
2015-09-30 15:48:12 +02:00
Emery Hemingway
d5dc25adef Noux: connect standard streams to VFS nodes
Fixes #1693
2015-09-30 15:48:12 +02:00
Norman Feske
20f961cbd8 cli_monitor, launcher: handle exiting subsystems
Until now, the CLI monitor and the laucher allowed the user to explitly
kill subsystems but both used to ignore gracefully exiting subsystems.
It was the user's job to remove the remains of those subsystems. The
patch takes the burden of manually killing exited subsystems from the
user.

Fixes #1685
2015-09-30 15:48:12 +02:00
Emery Hemingway
dd13bbb1e2 part_blk: use Session_policy to determine partition
Fixes #1714
2015-09-30 15:48:12 +02:00
Josef Söntgen
2f8b3cfdaf vbox: make I/O port access less noisy
Instead of white-listing floppy controllers, certain SCSI controllers
as well as ISAPnP etc. pp. remove the diagnostics and print each access
if verbose is set.

Fixes #1726.
2015-09-30 15:48:12 +02:00
Josef Söntgen
f9a64b663c vbox: replace alarm_timer thread with trigger_once
Instead of using the alarm_timer thread we use our own timer thread
that uses a kernel semaphore on Nova. On all other platforms a timer
connection and trigger_once is used.

Fixes #1727.
2015-09-30 15:48:12 +02:00
Alexander Boettcher
f7ad6cf4e6 seoul: support ide disk model
Issue #1702
2015-09-30 15:48:11 +02:00
Alexander Boettcher
36947cef3a seoul: fix raw disc boot for 512B sectorsize
Fixes #1702
2015-09-30 15:48:11 +02:00
Alexander Boettcher
21e86227bc seoul: make input available via bios
Enables us to interact with GRUB bootloader during early boot.

Issue #1702
2015-09-30 15:48:11 +02:00
Alexander Boettcher
4da7e89d6b seoul: avoid assertion, adhere to original vancouver version
Issue #1702
2015-09-30 15:48:11 +02:00
Alexander Boettcher
e5ea76c689 seoul: set vCPU priority below seoul threads
Issue #1702
2015-09-30 15:48:11 +02:00
Alexander Boettcher
2d15c6d990 seoul: handle a MSR to let Genode/Nova guest boot
Issue #1702
2015-09-30 15:48:11 +02:00
Alexander Boettcher
ad24b25af0 nova: avoid buddy allocator assertion in kernel
Fixes #1672
2015-09-30 15:48:11 +02:00
Christian Helmuth
985c01116b nova: PIC compatible syscall_5
Addressing must be PC-relative, so adapt the approach from the other
nova_x86_32 syscall bindings (description by @ssumpf):

  Use call to push the current IP on the stack and add the distance of
  label 0 and label 1 in order to determine the return address, which
  NOVA requires in edx.

The bug only showed up with "-O0" in libc.lib.so in form of a unwanted
text relocation.

Fixes #1721
2015-09-30 15:48:10 +02:00
Christian Prochaska
7fff1770e0 qt5: update run scripts
Fixes #1695
2015-09-30 12:20:41 +02:00
Christian Helmuth
08541b68f7 dde_linux: stack alignment on x86_64 in wifi/usb
platform_execute() is used to initially switch the stack of a
routine/task. While Thread_base::alloc_secondary_stack() properly aligns
the returned stack pointer the x86_64 assembler implementation did not
comply to stack frame management specified in the ABI.

The used (and most simple) stack-alignment check may pass a float to a
varargs function on x86, which requires the compiler to properly save
some XMM registers on stack.
2015-09-30 12:20:41 +02:00
Christian Helmuth
92541c49a6 netperf: don't run script on hw_wand_quad 2015-09-30 12:20:41 +02:00
Stefan Kalkowski
bb4ee67357 base-linux: do not copy dataspace components
Dataspace components inherit from RPC objects which are non-copyable from now
on. Therefore, the Rom_session_component's constructor had to be modified
to not construct a dataspace component on the stack and assign it in the
following.

Ref #1704
2015-09-30 12:20:41 +02:00
Stefan Kalkowski
c1492da15b base: do not lock interleaved in object pool
Holding the object pool's lock while trying to obtain an object's lock
can leave to dead-lock situations, when more than one thread tries to
access multiple objects at once (e.g.: when transfer_quota gets called
simultanously by the init and entrypoint thread in core). To circumvent
holding the object pool lock too long, but access object pointers safely
on the other hand, this commit updates the object pool implementation
to use weak pointers during the object retrieval.

Fix #1704
2015-09-30 12:20:41 +02:00
Stefan Kalkowski
b585583ec7 core: do not destroy in object pool's apply scope
Destroying an object within the scope of a lambda/functor executed
in the object pool's apply function leads potentially to memory corruption.
Within the scope the corresponding object is locked and unlocked when
leaving the scope. Therefore, it is illegal to free the object's memory meanwhile.
This commit eliminates several places in core that destroyed wrongly in
the object pool's scope.

Fix #1713
2015-09-30 12:20:40 +02:00
Christian Helmuth
6616bd4593 lwip: log thread and sleep forever in assert() 2015-09-30 12:20:40 +02:00
Christian Helmuth
7e3bcb1e39 tcp_terminal: signal available bytes on partial read
If a client provides a read buffer of insufficient size for all
available data, we have two options

1) Leave it to the client to do partial reads until not further data is
   available, or

2) Signal the client that there still some bytes on a partial read.

As the second option seems more robust it's implemented in this commit.

Fixes #1705
2015-09-30 12:20:40 +02:00
Stefan Kalkowski
ccb968ff7d safeguard the synchronized allocator template
* Move the Synced_interface from os -> base
* Align the naming of "synchronized" helpers to "Synced_*"
* Move Synced_range_allocator to core's private headers
* Remove the raw() and lock() members from Synced_allocator and
  Synced_range_allocator, and re-use the Synced_interface for them
* Make core's Mapped_mem_allocator a friend class of Synced_range_allocator
  to enable the needed "unsafe" access of its physical and virtual allocators

Fix #1697
2015-09-30 12:20:39 +02:00
Stefan Kalkowski
53eb666ed0 hw: invalidate all caps of a thread in destruction
Fix #1682
2015-09-30 12:20:39 +02:00
Christian Prochaska
3bf050ed30 qt5: use signal handler for input processing
Fixes #1707
2015-09-30 12:20:39 +02:00
Emery Hemingway
45bcb7f48f Override libc access in Noux plugin
Fixes #1706
2015-09-30 12:20:39 +02:00
Stefan Kalkowski
37bae7bc1f hw: simplify IPC node's state model (fix #1691)
Merge the Ipc_node class' state PREPARE_AND_AWAIT_REPLY and AWAIT_REPLY,
as well as PREPARE_REPLY ans INACTIVE into one.
2015-09-30 12:20:39 +02:00
Emery Hemingway
5d434944eb libc: support access() in plugins
Fixes #1703
2015-09-30 12:20:38 +02:00
Alexander Boettcher
9b21c88bc6 base: handle unsupported printf commands better
The commit consumes the argument of a unsupported printf command.

Without the commit - a subsequent command uses the argument of the preceding
command, which may cause memory corruption or page faults for sequences using
string commands, e.g.

Genode::printf("%#x %s\n", 0x20, "Test");

'#' is not supported by Genode::printf. In this scenario a pagefault at
address 0x20 is caused.

Fixes #1701
2015-09-30 12:20:38 +02:00
Christian Prochaska
5309bda8b6 libc_lwip: 'fcntl()' fix
The 'O_NONBLOCK' flag has different numerical values in lwip and in the
libc, which prevented the correct setting of nonblocking socket mode.

Fixes #1699
2015-09-30 12:20:38 +02:00
Alexy Gallardo Segura
de87ecfc62 foc_odroid_x2: basic configuration for gpio pins
Fixes #1669
2015-09-30 12:20:38 +02:00
Alexy Gallardo Segura
49b3d520a9 exynos: generalize Exynos5 fb_drv for Exynos4/5
Fixes #1678
2015-09-30 12:20:37 +02:00
Christian Helmuth
24b1f269be Remove Packet_ref from File_system::Packet_descriptor
The intention of Packet_ref was to allow clients to place opaque
references into the packet descriptor itself, which could be observed on
packet completion. Currently no component in our sources uses this
feature and beyond that it is questionable if it should be used at all:
If the server tampers with the ref the client may easily be confused
into observing an incorrect or invalid context. It seems better to
remove the opaque context from the descriptor and leave the actual
implementation to the client and its needs.
2015-09-30 12:20:37 +02:00
Christian Helmuth
9212fc0dc6 noux: adapt run scripts to platform_drv.inc reqs 2015-09-30 12:20:37 +02:00
Christian Helmuth
50164336af linux: explicitly add well-known include paths
Unfortunately, the 'gcc -dumpmachine' magic does not suffice on all
Linux distros, so we just add the well-known paths for i386-linux-gnu
and x86_64-linux-gnu.

Fixes #1694
2015-09-30 12:20:37 +02:00
Norman Feske
0f052357ef init: propagate exit conditions of children
This patch extends the configuration concept of init with an additional
sub node for the <start> node:

<start name="noux">
  <exit propagate="yes"/>
  ...
</start>

If the 'propagate' attribute is set to "yes", the exit of the respective
child will appear to init's parent as the exit of the entire init
subsystem.

Fixes #1686
2015-09-30 12:20:36 +02:00
Emery Hemingway
686f53a5c3 fs_log: merge option, increase message buffer
Maximum amount of in-transit packets is TX_QUEUE_SIZE*2 + 1

Issue #1538
2015-09-30 12:20:36 +02:00
Emery Hemingway
ce1e6c16fb fs_log: new log file server using native FS sessions
Fixes #1538
2015-09-30 12:20:36 +02:00
Emery Hemingway
7ce19216f4 VFS: symlink file system
add symlinks to a VFS tree with <symlink name="..." target="..."/>

Issue #1648
Fixes #1653
2015-09-30 12:20:36 +02:00
Emery Hemingway
4a5b7be4e7 TAR VFS: dereference hard links when opening files
Fixes #1636
Issue #1653
2015-09-30 12:20:35 +02:00
Stefan Kalkowski
8c168d7943 hw: use weak pointer when resolving a page-fault
Fix #1674
2015-09-30 12:20:35 +02:00
Alexander Boettcher
be9e157a3d wm: free up weak pointers during view destruction
Fixes #1675
2015-09-30 12:20:35 +02:00
Reinier Millo Sánchez
7db3e461ca gpio: dummy compilation unit to link valid target
Fixes #1683

Signed-off-by: Reinier Millo Sánchez <rmillo@uclv.cu>
2015-09-30 12:20:35 +02:00
Stefan Kalkowski
5cf8c49cb8 libports: prevent dummy target warnings
Fix #1681
2015-09-16 13:58:50 +02:00
Christian Helmuth
bc2c7db4e9 vbox: check for iasl/yasm on prepare 2015-09-16 13:58:50 +02:00
Stefan Kalkowski
ed52d5a211 Introduce 'spec' subdirectories to outline aspects
Instead of holding SPEC-variable dependent files and directories inline
within the repository structure, move them into 'spec' subdirectories
at the corresponding levels, e.g.:

  repos/base/include/spec
  repos/base/mk/spec
  repos/base/lib/mk/spec
  repos/base/src/core/spec
  ...

Moreover, this commit removes the 'platform' directories. That term was
used in an overloaded sense. All SPEC-relative 'platform' directories are
now named 'spec'. Other files, like for instance those related to the
kernel/architecture specific startup library, where moved from 'platform'
directories to explicit, more meaningful places like e.g.: 'src/lib/startup'.

Fix #1673
2015-09-16 13:58:50 +02:00
Christian Helmuth
6cdb823187 Prevent libc file-system tests on hw_zynq 2015-09-09 15:14:30 +02:00
Christian Prochaska
6e15c6b707 wifi_drv: enable support for iwl7265
Fixes #1671
2015-09-09 15:14:30 +02:00
Christian Helmuth
5230adfd63 wifi: pseudo library to install firmware
The patch prevents linking wifi_drv on each build.
2015-09-09 15:14:29 +02:00
Stefan Kalkowski
28fdc51a76 foc: delete IPC gates on cap session destruction
To correctly delete all IPC gates created via a CAP session, all
capabilities created have to be stored. Otherwise we leak kernel
objects within Fiasco.OC permanently.

Fix #702
2015-09-09 15:14:29 +02:00
Stefan Kalkowski
acc46f70b7 codezero: remove support from Genode (fix #1668) 2015-09-09 15:14:29 +02:00
Josef Söntgen
7898113f99 os: add sporadic sound test
This scripts starts two Audio_out session clients. These clients
access the soundcard via the mixer. The first client simply streams
a sample file in a loop while the second client generates a click
sound when any key is pressed.

Issue #1666.
2015-09-09 15:14:29 +02:00
Josef Söntgen
a9569eb41e mixer: advance position before mixing
Sometimes, the play position in stream is behind the out stream, mostly
because of timing issue. In this case, the mixer will produce invalid
packets which in return will lead to looping on an invalid packet in
the audio_drv.

Issue #1666.
2015-09-09 15:14:29 +02:00
Josef Söntgen
7d12bdc8bc dde_bsd: change packet processing
Instead of looping the whole queue, the driver now loops on the first
invalid packet. In any case it will send a progress signal to its
client.

Fixes #1666.
2015-09-09 15:14:29 +02:00
Martin Stein
349c15dfe4 timer test: be more tolerant in periodic test
For some platforms (at least hw_zynq on Qemu), the measured time of the
periodic timeout test exceeded the maximum that was previously
calculated without any tolerance. Most likely, this is not a malfunction
of the test subject as the error is pretty small and, of course,
measuring the time produces overhead itself. Introducing a tolerance of
only 0.1% fixes the problem.

Fixes #1599
2015-09-09 15:14:28 +02:00
Johannes Schlatow
be994641ef timer: Add Zynq-7000 support (QEMU)
Ref #1599
2015-09-09 15:14:28 +02:00
Johannes Schlatow
40b31876d2 base-hw: Add basic Zynq-7000 support (QEMU)
Ref #1599
2015-09-09 15:14:28 +02:00
Stefan Kalkowski
458b4d6fc4 base: redesign object pool using lambda interface
Instead of returning pointers to locked objects via a lookup function,
the new object pool implementation restricts object access to
functors resp. lambda expressions that are applied to the objects
within the pool itself.

Fix #884
Fix #1658
2015-09-09 15:14:28 +02:00
Martin Stein
555835c95b hw: unlock kernel before context propagation
Propagating the user context-pointer from C++ code to the mode
transition assembly doesn't touch any CPU global data. Thus, we can
reduce the in-sync window.

Fixes #1223
2015-09-09 15:14:27 +02:00
Martin Stein
91cb3decdb hw_x86_64: move Cpu_context stuff to extra unit
Other platforms implement Kernel::Cpu_context stuff in
kernel/cpu_context.cc. On x86_64, it was implemented in
kernel/thread.cc. The commit fixes this inconsistency to the other
platforms.

Ref #1652
2015-09-09 15:14:27 +02:00
Martin Stein
4e98a0f64a hw: get rid of kernel/thread_* files
The distinction between Kernel::Thread and Kernel::Thread_base is
unnecessary as currently all Hw platforms would have the same content in
the latter class. Thus I've merged Kernel::Thread_base into
Kernel::Thread. Thereby, Kernel::Thread_event can be moved to
kernel/thread.h.

Ref #1652
2015-09-09 15:14:27 +02:00
Alexander Boettcher
dd9793cdc7 hw: show ip and sp during unresolvable pagefault
Issue #1652
2015-09-09 15:14:27 +02:00
Alexander Boettcher
c5877b5575 hw: remove access_thread_regs syscall
Issue #1652
2015-09-09 15:14:27 +02:00
Alexander Boettcher
6e481127ce hw: increase stack size for thread test
Stack size of cpu helper is insufficient if a exception is thrown during
'test_create_as_many_threads()'

Related to #1652
2015-09-09 15:14:27 +02:00
Christian Helmuth
ae43d13b90 Remove always_hybrid spec
With always_hybrid also the lx_hybrid_x86 platform in
tool/create_builddir vanishes.

Fixes #1619
2015-09-09 15:14:27 +02:00
Alexander Boettcher
b6c440852b vbox: allocate guest memory in chunks
Fixes #1575
2015-08-31 13:12:52 +02:00
Christian Helmuth
41be88667f doc: update components, porting guide, README 2015-08-31 09:09:23 +02:00
Christian Helmuth
f4cadb8406 qt5: adapt to audio_drv rename 2015-08-31 09:09:23 +02:00
Christian Helmuth
30db0c5364 hw: prevent compiler warning 2015-08-31 09:09:23 +02:00
Christian Helmuth
ff343eab9c vbox_pointer: remove obsolete boot modules 2015-08-31 09:09:23 +02:00
Reinier Millo Sánchez
750b10b957 gpio: examples for GPIO driver 2015-08-31 09:09:23 +02:00
Reinier Millo Sánchez
98da445269 gpio: RaspberryPI GPIO driver
Fixes #1654
2015-08-31 09:09:23 +02:00
Reinier Millo Sánchez
433f859cb9 foc_odroid_x2: USB support
Fixes #1627
2015-08-31 09:09:22 +02:00
Alexander Boettcher
6776d6c9a8 nova: extend platform test by PAT test
Issue #1566
2015-08-31 09:09:22 +02:00
Alexander Boettcher
0f2c2a675a nova: support write combining
Fixes #1566
2015-08-31 09:09:22 +02:00
Norman Feske
e304bd926e Framebuffer throughput test
Issue #1566
2015-08-31 09:09:22 +02:00
Stefan Kalkowski
9f1beaa036 hw_x86_64: use 'muen' SPEC to implement aspect 2015-08-31 09:09:22 +02:00
Reto Buerki
750c4ad81d Add tutorial for base-hw on Muen
The tutorial describes how to build a Genode scenario using the
base-hw x86_64_muen target and run it as a subject on the Muen SK.
2015-08-27 13:48:26 +02:00
Reto Buerki
ad411e1a90 hw_x86_64_muen: Implement PIC take_request()
The Muen-specific PIC implementation provides the irq_occurred()
function which is used to register an IRQ with the PIC upon thread
exception.

The occurred IRQs are stored in a boolean array internally and handed
out to a CPU via take_request().
2015-08-27 13:48:25 +02:00
Reto Buerki
fa26805fd7 hw_x86_64_muen: Implement paravirt timer driver
The driver uses the timer page containing a vector and timer value to
implement the start_one_shot() and value() functions. The timer value
designates the absolute tick count of the next event.

The address of the time page is acquired using the get_memregion_info
Sinfo API function.
2015-08-27 13:48:25 +02:00
Reto Buerki
4a51f933ce hw_x86_64_muen: Add initial pagetables file
The initial pagetables for hw_x86_64_muen specify an identity mapping
from 2MiB to 1GiB plus mappings for the paravirt pages (sinfo, timer,
...).
2015-08-27 13:48:25 +02:00
Reto Buerki
c434a5ceec hw_x86_64_muen: Add C++ implementation of Sinfo API
The Muen Sinfo API is used to retrieve information about the execution
environment of a subject running on the Muen Separation Kernel.

While the C++ API is defined in sinfo.h, musinfo.h specifies the
internal format of the information stored in the Sinfo pages provided by
the Muen SK. It is a copy of the file contained in the libmusinfo
library of the Muen project. That is the reason why the coding style in
this file differs from the official style.
2015-08-27 13:48:25 +02:00
Reto Buerki
5036b96c11 hw_x86_64_muen: Add fake Timer::ms_to_tics impl
This makes the scheduler happy and it starts scheduling threads:

Booting Muen kernel v0.6.0-329-gdd545fe-UNCLEAN
0004|kernel initialized
0004|Genode 14.11-400-gecee95b
0004|int main(): --- start init ---
0004|[init -> test-printf] -1 = -1 = -1
2015-08-27 13:48:25 +02:00
Adrian-Ken Rueegsegger
21fb356cd4 hw_x86_64_muen: Provide Muen-specific serial
Subjects on Muen are not allowed to access the BIOS data area. Instead a
serial console is emulated on the fixed I/O port 0x3f8.
2015-08-27 13:48:25 +02:00
Reto Buerki
96a0820e89 Add Muen-specific platform_support.cc
The file specifies Muen-specific MMIO regions: Sinfo and paravirt timer
pages.
2015-08-27 13:48:25 +02:00
Adrian-Ken Rueegsegger
c310e335ae hw_x86_64: Enable more specialized setup_irq_mode()
Move Platform::setup_irq_mode function from x86 platform_support.cc to
x86_64 specific file. This will enable the upcoming x86_64_muen platform
to provide a separate implementation.
2015-08-27 13:48:25 +02:00
Reto Buerki
dcd20f1566 hw: skeleton for building x86_64_muen
The hw_x86_64_muen platform is a x86/64 base-hw kernel which runs as
isolated subject (guest) on the Muen Separation Kernel (SK) [1].

The platform is implemented as an extension to hw_x86_64 replacing the
PIC and timer drivers with paravirtualized variants. The skeleton
contains a dummy PIC and timer implementation for now.

[1] - http://muen.sk
2015-08-27 13:48:24 +02:00
Christian Prochaska
0885ebd5b1 vbox: make interruptibility state check conditional
If the guest is not in an interruptible state when the recall handler is
called, an assertion fails. Since the assertion is only relevant if the
recall handler was called during IRQ injection, it should be moved into
the corresponding conditional block which already has the assertion for
the 'IF' flag.

Fixes #1661
2015-08-27 12:05:18 +02:00
Christian Prochaska
26924c9bcd vbox: let the first EMT thread handle timers
By default, the EMT thread of the last vCPU handles expired timers. When
running VirtualBox with 2 vCPUs, it sporadically happens that the EMT
thread of the second CPU clears an 'interrupt pending' flag for the first
vCPU after changing the state of a timer device model, which is not
expected by our Genode-specific code (failed assertion '!_irq_win' in the
recall handler).

The problem did not occur yet when letting the EMT thread of the first
vCPU handle the expired timers, which is done by this commit as an interim
fix until the problem has been further investigated.

Issue #1660
2015-08-27 12:04:26 +02:00
Alexander Boettcher
b438181188 nova: use updated r9 kernel branch
Fixes a kernel regression (because of using builtin_retrun_address)
introduced by the out-of-memory commits.

Issue #1601
2015-08-27 12:02:16 +02:00
Alexander Boettcher
9cd85ddcf7 hw: call lock_for_destruction in platform_pd
Issue #1607
2015-08-25 10:11:07 +02:00
Christian Helmuth
10aba44982 thread: increase test timeout
Because of recently added test cases the script exceeds the timeout on
some embedded boards and base-hw.
2015-08-24 11:38:53 +02:00
Adrian-Ken Rueegsegger
ec92e9c3df hw_x86_64: Only handle masking of I/O APIC IRQs
Ignore toggle requests for vectors not assigned to the I/O APIC.

Fixes #1651
2015-08-21 11:00:59 +02:00
Adrian-Ken Rueegsegger
780863007d hw_x86_64: Use PAUSE instruction in wait_for_interrupt
Add spin loop hint by means of the PAUSE instruction since
wait_for_interrupt is called in a busy loop. This should improve processor
performance and reduce power consumption.

Note: HLT cannot be used since it is a privileged instruction and the idle
      thread is executed in userspace.
2015-08-21 11:00:59 +02:00
Reto Buerki
2a0b6fb541 hw_x86_64: Factor out _core_only_mmio_regions function
Move the _core_only_mmio_regions function to the
x86_64/platform_support.cc file. This is required to make it overridable
for other platforms deriving from x86.
2015-08-21 11:00:59 +02:00
Adrian-Ken Rueegsegger
afb827a96f hw_x86_64: Restore kernel SS on MT entry 2015-08-21 11:00:59 +02:00
Adrian-Ken Rueegsegger
0e065c162b hw_x86_64: Log unknown exceptions of Cpu_idle 2015-08-21 11:00:59 +02:00
Adrian-Ken Rueegsegger
c2ff0ae9d4 Minor cleanup fixes
- Fix spelling errors
- Remove extra semicolons
- Remove extra spaces

Fixes #1650
2015-08-21 11:00:59 +02:00
Adrian-Ken Rueegsegger
d2564442d4 vbox: Drop duplicate RDPMC exiting VM-control 2015-08-21 11:00:58 +02:00
Christian Helmuth
e2f2ac567e report_rom: deny requests for existing reports
If a requested report already exists the request is denied with
Invalid_args.

Further, I dusted the report_rom test and added it to the
autopilot list.
2015-08-21 11:00:58 +02:00
Alexander Boettcher
9a326bed2d nova: revoke unused caps after IPC
Fix issue introduced during #905
2015-08-21 11:00:58 +02:00
Norman Feske
795375796f nitpicker: prevent deadlock in destroy_view
Fixes #1649
2015-08-21 11:00:58 +02:00
Norman Feske
9402261dda os: Add Handle_registry::has_handle
Issue #1649
2015-08-21 11:00:58 +02:00
Norman Feske
b4e3e99cc8 base: add Weak_object::weak_ptr const
Issue #1649
2015-08-21 11:00:58 +02:00
Josef Söntgen
3f3b3a100e vbox: sidestep audio subsystem
There are currently some issue with the mixing/filtering code of vbox.
So instead of using the audio subsystem to do filtering and mixing we
bypass it to get better audio qualitiy. That means that the device
model of the VM has to use the same sample rate as the Audio_out/in
sessions, however.

Issue #1647.
2015-08-21 11:00:58 +02:00
Josef Söntgen
5be5191645 vbox: enable preliminary audio support
With this commit preliminary audio support in VirtualBox is enabled.
The backend supports playback as well as recording sounds from within
a guest VM. Depending on how the guest configures the device model
the audio output may sound disorted. If the guest uses buffers that
are too small, i.e., 10 ms or less, frequent buffer underruns will
occure.

To get this low-latency one has also to increase vbox' update hz
to 200 (i.e., 5ms).

Fixes #1647.
2015-08-21 11:00:57 +02:00
Josef Söntgen
a6c5716796 os: add invalidate_all packets to Audio_out
When a stream was stopped it may still contain valid packets that
will be played automatically when the stream is started again. The
invalidate_all() method may be called after stopping the stream to
prevent this.

Issue #1647.
2015-08-21 11:00:57 +02:00
Christian Helmuth
e8c9125d9f Pseudo target for vfs_jitterentropy
Run script depending on VFS plugins (i.e., shared objects) like
vfs_jitterentropy.lib.so have to state this dependency rather the actual
binaries linked against libc. The latter introduces a library dependency
that is just not there. For example, the dependency on vfs_jitterentropy
is a result from the config node for libc which automatically loads the
plugin.
2015-08-21 11:00:57 +02:00
Christian Helmuth
32da844f01 libc: refactor socket operations 2015-08-21 11:00:57 +02:00
Christian Helmuth
47609dda40 vesa: calculation of default-mode table entries 2015-08-21 11:00:57 +02:00
Norman Feske
26524edbf4 alarm: reposition reprogrammed alarms in queue
The alarm library failed to handle the case properly where an already
scheduled alarm gets rescheduled before it triggered. Even though the
attempt to reschedule the alarm (twice insertion into alarm queue) was
detected, this condition resulted in the mere modification of the
alarm's parameters while keeping the alarm's queue position unchanged.
This, in turn, may violate the invariant that all enqueued alarm objects
are strictly ordered by their deadlines. The patch handles the case by
dequeuing the alarm object before reinserting it into the queue at the
right position.

Fixes #1646
2015-08-21 11:00:57 +02:00
Norman Feske
e410ecc995 timer test: trigger timeout-masking bug
Issue #1646
2015-08-21 10:59:46 +02:00
Josef Söntgen
4992903233 Rename audio_out_drv to audio_drv
With the introducation of the Audio_in session interface it makes
sense to rename the current available audio drivers. At the moment
only the dde_bsd audio_drv supports Audio_out as well as Audio_in.
The Linux audio_drv only supports Audio_out (there is no demand for
Audio_in support currently) but is renamed nonetheless to make it
easiert to write generic run scripts.

Issue #1644.
2015-08-21 10:59:46 +02:00
Josef Söntgen
fb761283a2 dde_bsd: add Audio_in test application
This test is a simple audio monitor that plays all recorded frames
back.

Issue #1644.
2015-08-21 10:59:46 +02:00
Josef Söntgen
8a34d21577 dde_bsd: add recording support to audio driver
The driver is now able to record audio samples. In contrast
to playback it has to be enabled explicitly by setting the
configuration attribute 'recording' to 'yes'. Playback is by
default enabled but may be disabled by setting 'playback' to
'no'. Furthermore it is now possible to configure the mixer
from the configuration. For now, the interface used by vanilla
OpenBSD is just exported.

The following snippet shows how to enable and configure recording
on an Thinkpad X220 where the headset rather than the internal
mic is used as recording source:

! <start name="audio_out_drv">
!   <resource name="RAM" quantum="8M"/>
!   <provides>
!     <service name="Audio_out"/>
!     <service name="Audio_in"/>
!   </provides>
!   <config recording="yes">
!     <mixer field="outputs.master" value="255"/>
!     <mixer field="record.adc-0:1_source" value="sel2"/>
!     <mixer field="record.adc-0:1" value="255"/>
!   </config>
! </start>

In addition to selecting the recording source the playback as
well as the recording volume are set to 255 (maximum).
Information about the available mixers and settings in general
may be obtained by setting the 'verbose' to 'yes' in the config
node.

Issue #1644.
2015-08-21 10:59:46 +02:00
Josef Söntgen
c4e2322a5d dde_bsd: ignore HDMI/DP devices (00:03:00)
Unfortunatly, there is no support for any HDMI/DP based HDA codecs in
this driver. Therefore we try to filter out known devices (normally the
PCI device on 00:03.00). This could also be done in the platform_drv's
configuration by explicitly naming the BDF but for better or worse that
will not work when using a wildcard class like HDAUDIO which is done in
generic run scripts.

Issue #1644.
2015-08-21 10:59:46 +02:00
Josef Söntgen
61f5ca1e4d os: add Audio_in session for recording audio
In line with the Audio_out session a Audio_in session is used to
record audio frames. Like in the Audio_out session shared memory
in form of the Audio_in::Stream is used to transport the frames
from the server to the client. These frames consist of single
channel (mono) samples. An Audio_in::Packet always contains a full
period of frames.

A Audio_in server captures frames and puts them into the
Audio_in::Stream. To do so the server allocates a Audio_in::Packet
from the packet queue embedded in the Audio_in::Stream. If the queue
is already full, the server will override packets and notify the
client by submitting the 'overrun' signal. The client has to cope
with this situation, e.g., by saving packets more frequently.

A client will also receive a 'progress' signal from the server when
a new Audio_in::Packet was submitted to the packet queue.

Fixes #1644.
2015-08-21 10:59:46 +02:00
Josef Söntgen
81599f89ea os: decrease Audio::PERIOD to lower latency
To archive lower latency the length of a period was reduced from
2048 (~46ms) to 512 (~11.6ms) samples.

It should be noted that this change probably breaks audio in Qemu on
most systems.

Issue #1644.
2015-08-21 10:59:45 +02:00
Josef Söntgen
2843a70c0e os: add missing header in Audio_out session header
Include <base/signal.h> directly in the session header to make it
self contained rather than depend on including it outside.

Issue #1644.
2015-08-21 10:59:45 +02:00
Alexander Boettcher
df662cc2f3 nova: use kernel branch with quota handling
Fixes #1601
2015-08-21 10:59:45 +02:00
Stefan Kalkowski
eafe5e81e3 core: unify and simplify paging code (Fix #1641)
For most platforms except of NOVA a distinction between pager entrypoint
and pager activation is not needed, and only exists due to historical
reasons. Moreover, the pager thread's execution path is almost identical
between most platforms excluding NOVA, HW, and Fisco.OC. Therefore,
this commit unifies the pager loop for the other platforms, and removes
the pager activation class.
2015-08-21 10:58:59 +02:00
Christian Prochaska
a574f73005 seoul: dummy 'control register access' VM exit handler
This exit handler is called by the NOVA kernel now when the VM uses PAE
with nested paging and the PDPTE registers need to get updated. With this
commit, an error message is printed if this situation occurs.

Fixes #1640
2015-08-21 10:58:59 +02:00
Christian Prochaska
4c19576d4e vbox: use multiple host CPUs
Fixes #1553
2015-08-21 10:58:59 +02:00
Christian Prochaska
824fb72694 vbox: update the PDPTE registers if needed
Fixes #1638
2015-08-21 10:58:59 +02:00
Christian Prochaska
2337dc03f4 nova: use branch supporting changing PDPTE by VMM
Fixes #1637
2015-08-21 10:58:59 +02:00
Alexander Boettcher
f87c573695 nova: increase default capability selector count
The reference count get increase to use 2 bytes, so we need the double amount
of selectors as before.

Additionally print a message if we run out of capabilities in a server. Since
our rpc framework is now clever enough to detect that for a printf we don't
need to setup a receive window, we may use a printf instead of a die call.
Eases debugging.

Issue #1601
2015-08-21 10:58:58 +02:00
Alexander Boettcher
626b0a68f3 base: increase base-control size for 32bit
It is insufficient for creating threads up to the maximum supported limit
(256 by now).

Issue #1601
2015-08-21 10:58:58 +02:00
Alexander Boettcher
9081653c96 Extend thread test
Issue #1601
2015-08-21 10:58:58 +02:00
Alexander Boettcher
c6943d494b nova: extend platform test to provoke kernel panic
Showcasing the out of memory kernel issue.

One test triggers oom during memory delegation when talking to core pager
thread. Two other test trigger oom during capability delegation in a
server/client scenario for send and reply phase separately.

Issue #1601
2015-08-21 10:58:58 +02:00
Norman Feske
1feaf75605 ram_fs: coding style, license headers
Issue #1635
2015-08-21 10:58:58 +02:00
Emery Hemingway
f996697fd5 VFS: local ram_fs instances
Move FS Node implementations from server/ram_fs to include/ram_fs.
Support embedded ram_fs instances in VFS configurations using <ram/>.
Add 'no space' handling to VFS symlink ops.

Fixes #1635
2015-08-21 10:58:40 +02:00
Christian Prochaska
9d37510d1d vbox: shared folder read/write loop fix
Stop trying to read or write if the backend function reports that 0 bytes
have been read or written.

Fixes #1563
2015-07-21 09:43:15 +02:00
Emery Hemingway
8f4f1ae89c ram_fs: treat symlinks as opaque data
Fixes #1604
2015-07-21 09:41:29 +02:00
Emery Hemingway
2f1db06deb rump_fs/fuse_fs/lx_fs/ram_fs: symlink fixup
Allow symlinks to be passed to the read and write file system utilities.

Disallow writes to symlinks with offsets in file system servers, this is
to ensure that writing the target of a symlink is an atomic operation.

Fixes #1604
2015-07-21 09:40:19 +02:00
Alexander Boettcher
4cf319a9d7 os: avoid blocking on resource request in bomb.run
that are caused by bomb clients.

Issue #1632
2015-07-21 09:36:46 +02:00
Alexander Boettcher
fe4e0702d4 base: contain chunk_size heap consumption
Increase internal chunk size of heap only if an allocation succeeded
beforehand. Otherwise the chunk size increases with every unsuccessful
invocation and a upgrade of the used ram session will be insufficient and of
no use at all.

Fixes #1632
2015-07-21 09:36:46 +02:00
Alexander Boettcher
73f9bb73cd init: don't block for resource upgrades
If some sessions run out of memory in init, resource requests will be issued
to core, which it never will satisfy. Setting some default signal handler
avoids that the default implementation will block init for ever.

Issue #1632
2015-07-21 09:36:46 +02:00
Emery Hemingway
28223e3146 noux: return exit value of init child
Fixes #1634
2015-07-21 09:34:48 +02:00
Norman Feske
7478114b23 Fix freetype download location
The originally used host went down.
2015-07-21 09:30:12 +02:00
Martin Stein
f3e76b3e9a base: use BDA header in base-nova like base-hw
Moves the Bios Data Area header from base-hw to base. Modifies the
base-nova core console that it uses the header as replacement for
the previous BDA bit logic.

Ref #1625
2015-07-21 09:30:12 +02:00
Martin Stein
c6f73d365a unmanaged singleton: allow private constructors
Introduces a class Unmanaged_singleton_constructor that can be declared as
friend to be able to call unmanaged_singleton on classes with a private
constructor. Enables the appliance of the singleton pattern.

Ref #1625
2015-07-21 09:30:12 +02:00
Martin Stein
ba18ab7225 run/cpu_quota: raise measurement precision further
Three things were done:

* Timouts are measured in an asynchronous way to be able to start counters
  after the potentially expensive RPC that starts the timeout.
* Timeouts were increased from 45 and 15 seconds to 60 and 20 seconds
  because at least on Arndale, results were not stable enough.
* Counting is done on 'unsigned long long' instead of 'unsigned' because
  with the higher timeouts, overflows occured.

Fixes #1628
2015-07-21 09:30:12 +02:00
Martin Stein
3c49113e64 timer & hw_arndale: don't use any float ops
The timer driver previously used floating point operations to translate us to
tics and vice versa. This isn't necessary as the rounding error isn't critical
for the given values but expensive which should be avoided in a code path that
must be executed pretty frequent with high priority.

Ref #1628
2015-07-21 09:30:12 +02:00
Alexander Boettcher
dddb536e25 vbox: use initFromSettings for construction VM 2015-07-21 09:30:12 +02:00
Adrian-Ken Rueegsegger
2fe0860ba7 hw_x86_64: Extend inital page tables up to 1 GiB
To avoid future issues with regards to non-existent mappings in the
initial pagetables, extend them to cover the memory range of 2 MiB up to
1 GiB.
2015-07-21 09:30:11 +02:00
Alexander Boettcher
73f7a95627 hw: use bios data area to detect com/uart ports
Fixes #1625
2015-07-21 09:30:11 +02:00
Alexander Boettcher
0b019d0508 base: move x86 uart driver from nova to base
So it can be reused by base-hw-x86 instead of re-writing it.

Fixes #1403
2015-07-21 09:30:11 +02:00
Stefan Kalkowski
0f05fa6fd4 base: resolve dead lock in weak pointer templates
This commit eliminates the mutual interlaced taking of destruction lock,
list lock and weak pointer locks that could lead to a dead-lock situation
when a lock pointer was tried to construct while a weak object is in
destruction progress.
Now, all weak pointers are invalidated and dequeued at the very
beginning of the weak object's destruction. Moreover, before a weak pointer
gets invalidated during destruction of a weak object, it gets dequeued, and
the list lock is freed again to avoid the former dead-lock.

Fix #1607
2015-07-21 09:30:04 +02:00
Emery Hemingway
64831c63c9 rump_fs: move files using 'renameat'
Fixes #1579
2015-07-21 09:29:41 +02:00
Emery Hemingway
c72c9924d3 init: prios shall not exceed the lowest prio level
Fixes #1570
2015-07-21 09:29:03 +02:00
Josef Söntgen
7e40f5f587 base: use proper Cpu_session when tracing threads
Up to now it was not possible to trace threads that use a different
Cpu_session rather than env()->cpu_session() (as done by VirtualBox).
This problem is now solved by setting the Cpu_session explicitly when
creating the event logger and attaching the trace control area when
creating the thread.

Fixes #1618.
2015-07-21 09:28:26 +02:00
Martin Stein
eaf4150c7b cpu_quota.run: support X86
The timer driver on X86 needs CPU quota with highest priority as it
frequently has to interrupt the counters to update the PIT.
On ARM this makes no difference in the test results as ARM timer
drivers, once configured, can sleep until the end of the timeouts.
On X86 we raise the error tolerance to 2% (default 1%) to compensate
the error caused by the timer.

Fixes #1621
2015-07-21 09:28:25 +02:00
Martin Stein
53e742fb02 cpu_quota.run: don't get stuck on zero counters
The test previously complained about divide-by-zero if the counters were all
zero.

Fixes #1616
2015-07-21 09:28:25 +02:00
Martin Stein
413741e58c cpu_quota.run: print all errors
Printing all errors and the goal values instead of exiting at the first
error allows for faster analysis of problems with the CPU-quota
mechanism.

Ref #1616
2015-07-21 09:28:25 +02:00
Martin Stein
5189055396 cpu_quota.run: fix bug in error detection
The test always succeeded because I forgot to set the error tolerance from
my debugging value 1 back to the correct value 0.01 before commiting the
test.

Ref #1616
2015-07-21 09:28:25 +02:00
Alexy Gallardo Segura
c14fe7e6c7 foc: Odroid-X2 basic support
Fix #1597
2015-07-21 09:28:25 +02:00
Alexander Boettcher
c42e770384 detach ds from all rm sessions before destruction
Fixes #1617
2015-07-21 09:28:24 +02:00
Martin Stein
bc8a5cbb2a hw: fix CPU-quota bug in Platform_thread
Since the HW-kern-caps commit, there was a bug in the Platform_thread
constructor. When called for a user thread, the constructor stated 0
as CPU quota at the Kernel_object instead of its quota input-paramater.

Fixes #1620
2015-07-07 19:48:08 +02:00
Christian Helmuth
af5c03edaf vfs: depend on ld library
So, users of VFS need not to state this dependency explicitly.
2015-07-07 19:48:07 +02:00
Alexander Boettcher
9506c89f88 nova: fix memory leaks / invariant TSCs
- free up kernel memory of empty slabs (if already one empty slab is in
  place)
- free up more page table entries
- handle CPUs with invariant TSCs gracefully

  Genode/Nova running on CPUs without the invariant TSC feature may seem
  to 'hang'. The referenced commit of the nova branch fixes the issue
  for some older Intel CPUs.

Fixes #1615
2015-07-07 19:48:07 +02:00
Alexander Boettcher
cb1e0711ec bomb.run: support configuration of many parameters
Adjust bomb to specify the various hard-coded parameters and set up bomb.run
this way that it manages at our test machine to succeed in the given time.

Issue #1615
2015-07-07 19:48:07 +02:00
Alexander Boettcher
4ee8919f29 nova: use 16bit for reference count of caps
Bomb and any server may generate references to capabilities exceeding 256 -
use a 16bit counter until the cap handling in Genode gets unified.

Additionally try to print a warning, instead of dying, if we get cap reference
count under or overflow.

Issue #1615
2015-07-07 19:48:07 +02:00
Christian Helmuth
b1dd5fdf1d Prevent warning in libc_noux
__INT_MAX__ equals 2147483647 which are roughly 68 years.
2015-07-07 19:48:07 +02:00
Norman Feske
0cd93c64aa ldso: add lx_environ to symbol map
This symbol must be exported to build dynamically-linked executables on
the lx_hybrid_x86 base platform.
2015-07-07 19:48:07 +02:00
Sebastian Sumpf
49ae508889 usb_drv: use heap for vmalloc allocations
Do not use slabs for allocations above 64KB, this seems to lead to memory
corruptions and the error described in issue #1613 under certain circumstances.

fixes #1613
2015-07-07 19:48:06 +02:00
Stefan Kalkowski
c951c30d8a base: extend weak pointer test (Ref #1607)
Add a test where a locked pointer shall be taken during object destruction.
Moreover, extend the run-script so it runs on different platforms with
"real" timers.
2015-07-07 19:48:06 +02:00
Josef Söntgen
e6995ecad7 sdl: sync tail pointer in SDL_Audio backend
SDL uses the Audio_out session in streaming fashion. For this reason
the audio might be played with delay of at most the queue size. To
mitigate the effect we synchronize the tail pointer to the current play
pointer when the PlayAudio() function is called by SDL for the first
time.

Fixes #1612.
2015-07-07 19:48:06 +02:00
Stefan Kalkowski
89255c3979 remove Versatile Express board (Fix #1611) 2015-07-07 19:48:06 +02:00
Norman Feske
3c0517fe1f init: use binary name as ROM label
Init used to specify the unique child name as session label when
requesting the binary image of a dynamically linked child. The actual
module name was propagated as "filename" session argument. Since we want
to move towards the sole use of the session label, which can be taken
into account for the session routing, the module name should always be
the last part of a ROM session label.
2015-07-07 19:48:06 +02:00
Norman Feske
785cac7168 decorator: consider partially transparent windows
This patch changes the window manager, the decorator, and the
floating window layouter to propagate the usage of an alpha channel from
the client application to the decorator. This way, the decorator can
paint the decoration elements behind the affected windows, which would
otherwise be skipped.
2015-07-07 19:48:06 +02:00
Norman Feske
ea16c19516 nit_fader.run: fix conditional route 2015-07-07 19:48:05 +02:00
Norman Feske
caa809e593 CPU load display application 2015-07-07 19:48:05 +02:00
Norman Feske
e45e01ee8e gems: HSV-to-RGB color-conversion function 2015-07-07 19:48:05 +02:00
Norman Feske
fd45a70acc dde_linux/wifi: enable IWL device of Lenovo x201 2015-07-07 19:48:05 +02:00
Norman Feske
8b013287ba Simple CPU-time burner application 2015-07-07 19:48:05 +02:00
Norman Feske
503263a8a2 base-nova: consider non-contiguous CPU numbers
This is a follow-up commit to the following two patches:
* base/nova: add idle threads to trace sources
* nova: support to read thread and idle time
2015-07-07 19:48:05 +02:00
Norman Feske
259b127f96 Polygon drawing and rudimentary 3D routines
This patch adds two new painters located at gems/include/polygon_gfx.
Both painters draw convex polygons with an arbirary number of points.
The shaded-polygon painter interpolates the color and alpha values
whereas the textured-polygon painter applies a texture to the polygon.
The painters are accompanied by simplistic 3D routines located at
gems/include/nano3d/ and a corresponding example (gems/run/nano3d.run).
2015-07-07 19:48:04 +02:00
Norman Feske
c74a4fbbe2 wm: decouple decorator and layouter from wm 2015-07-06 12:22:28 +02:00
Norman Feske
a3d78d3779 window layouter: let focus follow the pointer 2015-07-06 12:22:28 +02:00
Norman Feske
0cc314399c nitpicker: make redraw debug feature configurable 2015-07-06 12:22:28 +02:00
Norman Feske
d7256c60a0 window decorator: limit update rate to 50 fps 2015-07-06 12:22:27 +02:00
Norman Feske
69da1fa1ed wm/layouter: Raise window on click 2015-07-06 12:22:27 +02:00
Norman Feske
b4ebefd616 cli_monitor: read subsystem configs from VFS
This patch changes the way how CLI monitor obtains its subsystem
configurations. Originally, this information was provided via the
Genode::config mechanism. But for managing complex scenarios, the config
node becomes very complex. Hence, it is preferrable to have a distinct
file for each subsystem configuration.

The CLI monitor scans the directory '/subsystems' for files ending with
".subsystem". Each file has the same syntax as the formerly used
subsystem nodes.
2015-07-06 12:22:27 +02:00
Norman Feske
f917728ecb vfs: let rom fs update ROM when opening file 2015-07-06 12:22:27 +02:00
Sebastian Sumpf
ffaf65efa0 dde_ipxe: enable BCM57cxx cards
Add tg3 driver files and adjust Genode's ipxe code. Tested on Fiasco.OC only.

issue #1609
2015-07-06 12:22:27 +02:00
Reinier Millo Sánchez
b13b0113c8 usb: kernel-specific USB IRQ number on Raspberry Pi
The USB interrupt number on Raspberry Pi differs betwenn Fiasco.OC and
base-hw, the former uses 9 while the latter uses 17.
2015-07-06 12:22:26 +02:00
Reinier Millo Sánchez
c60d65150e base-foc: support for Raspberry Pi
Fixes #1596
2015-07-06 12:22:26 +02:00
Emery Hemingway
46b7227ef0 cxx: notify parent on abort() (in main thread)
Fixes #1605
2015-07-01 15:09:32 +02:00
Sebastian Sumpf
4f0251eb00 foc: added Exyonos4 IRQ patches
Fixes #1610
2015-07-01 14:57:43 +02:00
Christian Helmuth
49333bafc2 lxip: do not whine on kfree(0) 2015-07-01 14:46:18 +02:00
Stefan Kalkowski
de4a98c777 hw: avoid using RM session in platform thread
Fix #888
2015-07-01 14:46:18 +02:00
Stefan Kalkowski
f5d5ed9637 hw: use kernel signal API for page-fault signals
Instead of using the Genode user-level signal API to signal page-faults to
a page-fault handler, use the kernel API directly. Thereby the accounting
of signal contexts needed for each paging subject can be done easily.

Fix #956
2015-07-01 14:46:18 +02:00
Stefan Kalkowski
57e2f3affc hw: remove redundant file from signal library
The file seems to be there for historical reasons only.

Ref #956
2015-07-01 14:46:18 +02:00
Stefan Kalkowski
691df908aa core: remove Rm_member from RM session component
Rm_member does not fulfill a useful role, but makes understanding of
the RM session component more difficult.

Ref #956
2015-07-01 14:46:17 +02:00
Stefan Kalkowski
8abd70e6e7 hw: allocate core's page-tables outside of binary
Moreover, be strict when calculating the page-table requirements of
core, which is architecture specific, and declare the virtual memory
requirements of core architecture-wise.

Ref #1588
2015-07-01 14:46:17 +02:00
Stefan Kalkowski
3ee2997198 hw: remove unused declaration in core
Ref #1588
2015-07-01 14:46:17 +02:00
Stefan Kalkowski
dc36b63acb base: turn align_addr tool into constexpr
Thereby, the tool can be used to calculate static compile-time values.
Ref #1588
2015-07-01 14:46:17 +02:00
Stefan Kalkowski
b856bfdfcd base: let bit allocator use fine-grained sizes
Ref #1588
2015-07-01 14:46:17 +02:00
Stefan Kalkowski
6552d47e60 hw: eliminate missing references for consts
Fix #1606
2015-07-01 14:46:16 +02:00
Christian Helmuth
11c31c4432 Prevent silly text-segment alignment on all platforms
We set 'ld -z max-page-size' to 4KiB to prevent the linker from aligning
the text segment to any built-in default (e.g., 4MiB on x86_64 or 64KiB
on ARM). Otherwise, the padding bytes are wasted at the beginning of the
final binary.
2015-07-01 14:46:16 +02:00
Sebastian Sumpf
463c9bec17 Replace Nic driver interface by customizable component
Removed the Nic::Driver implementation. All nic servers now inherit from
Nic::Session_component. Packet stream signals are dispatched to
the 'handle_packet_stream' function within a session component. Thus, nic
servers now have direct access to the packet stream channels, making handling
more flexible.

Adjusted nic_loobpack, dde_ipxe, wifi, usb, lan9118, Linux nic, and OpenVPN to
the new interface.

Fixes #1602
2015-07-01 14:46:16 +02:00
Norman Feske
cc4febd1c2 sd_card: SDHCI quirk for 136-bit responses 2015-07-01 14:46:15 +02:00
Norman Feske
281d3ffba9 hw: free correct IRQ when closing IRQ session
The ~Irq_session_component relied on the IRQ number obtained by the
corresponding kernel IRQ object to mark the IRQ as free at the IRQ
allocator. However, since the kernel IRQ object is initialized not
before the 'sigh' function is called, the IRQ of sessions that
never called 'sigh' could not be freed correctly. This patch fixes
the problem by not relying on the kernel IRQ object for obtaining
the number in the destructor but using the '_irq_number' member
variable instead.
2015-07-01 14:46:15 +02:00
Adrian-Ken Rueegsegger
21c7fa2881 vbox: Fix VMM startup failure message
Use printf format specifier with correct size to log error code which is
if type uint32_t. Also print the error code in hex since this simplifies
lookup as the error values are also defined as hexadecimal values, see
[1].

Fixes #1600

[1] - repos/ports/src/virtualbox/include/xpcom/nsError.h
2015-07-01 14:46:15 +02:00
Stefan Kalkowski
2a351215f4 base: remove pager code from public API
Fix #1593
2015-07-01 14:46:15 +02:00
Christian Helmuth
01f22d4dc6 arora: use github archive for port
code.google.com seems to waste away slowly...
2015-06-22 14:43:41 +02:00
Christian Helmuth
340424db83 wifi: report correct bssid when connected 2015-06-22 14:43:41 +02:00
Stefan Kalkowski
cc58b11998 hw: replace page table allocator with static one
Instead of organizing page tables within slab blocks and allocating such
blocks dynamically on demand, replace the page table allocator with a
simple, static alternative. The new page table allocator is dimensioned
at compile-time. When a PD runs out of page-tables, we simply flush its
current mappings, and re-use the freed tables. The only exception is
core/kernel that should not produce any page faults. Thereby it has to
be ensured that core has enough page tables to populate it's virtual
memory.

A positive side-effect of this static approach is that the accounting
of memory used for page-tables is now possible again. In the dynamic case
there was no protocol existent that solved the problem of donating memory
to core during a page fault.

Fix #1588
2015-06-22 14:43:41 +02:00
Adrian-Ken Rueegsegger
3291ca59a3 hw_x86_64: Extend initial PTs to map 2-16 MiB
Ref #1588
2015-06-22 14:43:41 +02:00
Sebastian Sumpf
696e5cbd54 dde_ipxe: support dis-/reconnect of clients
Unregister callbacks, so rx packets will not be propated to the deleteted
'Driver' object. Initialize ipxe once in the 'Main' object, thus allowing new
session connections.

Fixes #1595
2015-06-22 14:43:40 +02:00
Sebastian Sumpf
d80c1c91be usb_drv: Remove signaling in wait_event_timeout
With the server framework this becomes unnecessary. Also when the 'platform_drv'
has a lower priority, signaling will cause a constant load that starves the
'platform_drv'.

Fixes #1594
2015-06-22 14:43:40 +02:00
Norman Feske
e143084b04 base: fix warning in RPC framework
The recent change of the TRACE session interface triggered the
following warning:

/home/no/src/genode/repos/base/include/base/ipc.h:79:4: warning: ‘ret’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    *reinterpret_cast<T *>(&_sndbuf[_write_offset]) = value;
    ^
In file included from /home/no/src/genode/repos/base/src/core/include/trace/session_component.h:19:0,
                 from /home/no/src/genode/repos/base/src/core/trace_session_component.cc:15:
/home/no/src/genode/repos/base/include/base/rpc_server.h:132:42: note: ‘ret’ was declared here
     typename This_rpc_function::Ret_type ret;

The warning occurs for basic return types (like size_t), which are
indeed not initialized. The variable gets its value assigned by the
corresponding 'call_member' overload, to which the variable is passed as
reference. But the compiler apparently is not able to detect this assignment.

Declaring 'ret' with a C++11-style default initializer fixes the warning.
2015-06-22 14:43:40 +02:00
Christian Helmuth
a844743a2e hello: condition config for various base platforms 2015-06-22 14:43:40 +02:00
Norman Feske
ed88d3aa13 Rename "failsafe" test to "fault_detection"
The name "failsafe" will be used for the upcoming failsafe server
wrapper.

Issue #1592
2015-06-22 14:43:40 +02:00
Norman Feske
712875ade4 os: use the server API in server/nic_loopback
This patch also introduces a run script for testing the component.
2015-06-22 14:43:40 +02:00
Norman Feske
5d678dba9e core: throw Trace::Out_of_metadata in subjects()
While importing trace sources as trace subjects into a TRACE session,
the session quota might become depleted. The TRACE session already keeps
track of the session quota via an allocator guard but the 'subjects' RPC
function missed to handle the out-of-memory condition. This patch
reflects the error condition as an 'Out_of_metadata' exception to the
TRACE client. It also contains an extension of the trace test to
exercise the corner case.
2015-06-22 14:43:39 +02:00
Alexander Boettcher
705257cf22 cxx: show thread name in event of abort
Issue #1591
2015-06-22 14:43:39 +02:00
Alexander Boettcher
be149cc6e4 vbox: increase cpu_session quota for pthreads
Fixes #1591
2015-06-22 14:43:39 +02:00
Norman Feske
a3d287f23d decorator: update hover report on layout change
Fixes #1590
2015-06-22 14:43:39 +02:00
Norman Feske
a23ac5f569 base/nova: add idle threads to trace sources
Issue #813
2015-06-22 14:43:39 +02:00
Christian Prochaska
252a10a859 vbox: fix mouse wheel support
Fixes #1589
2015-06-22 14:43:38 +02:00
Christian Prochaska
a801976727 vbox: dynamic adaptation to screen-size changes
Fixes #1554
2015-06-22 14:43:38 +02:00
Norman Feske
b22f3c67f0 Trace-subject reporter
Issue #813
2015-06-22 14:43:38 +02:00
Norman Feske
959572968d core: provide thread exec times via TRACE service
This patch enable clients of core's TRACE service to obtain the
execution times of trace subjects (i.e., threads). The execution time is
delivered as part of the 'Subject_info' structure.

Right now, the feature is available solely on NOVA. On all other base
platforms, the returned execution times are 0.

Issue #813
2015-06-22 14:43:38 +02:00
Alexander Boettcher
fbe44f08d4 nova: support to read thread and idle time
Issue #813
2015-06-22 14:43:38 +02:00
Norman Feske
4f88fe7bd0 init: fix label buffer size
This patch bases the size of the destination buffer in
'Init::Child_policy_redirect_rom_file' on the maximum label size
instead of the filename size. Otherwise, the use of a long configfile
name (i.e., "trace_subject_reporter.config") in combination with a long
child name ("trace_subject_reporter") would result in a truncated label
string.
2015-06-22 14:43:38 +02:00
Norman Feske
4616f540df report_rom: clear stale content
When replacing a report with a smaller one, the corresponding ROM
dataspace should not contain any traces of the old report. Otherwise,
the consumer of the ROM dataspace may mistake the stale content as
meaningful information. This is particularly annoying when manually
inspecting reports. This patch overwrites the stale content with zeros.
2015-06-22 14:43:37 +02:00
Norman Feske
cc74204801 os: add Reporter::clear method 2015-06-22 14:43:37 +02:00
Norman Feske
2d8a4917a5 base: add Trace::Subject_info::state_name
Issue #813
2015-06-22 14:43:37 +02:00
Taru Karttunen
5fec78fcd6 Add nullptr error handling in part_blk, fix #1586 2015-06-22 14:43:37 +02:00
Josef Söntgen
80893dfcfc platform_drv: specific AUDIO/HDAUDIO class aliases
The alias AUDIO matches audio multimedia device while the HDAUDIO
alias matches HD audio multimedia devices.

Fixes #1581
2015-06-22 14:43:37 +02:00
Christian Prochaska
4cae6c0d12 cxx: report names of uncaught exceptions again
Fixes #1582
2015-06-22 14:43:37 +02:00
Christian Helmuth
1f62446b65 usb: effectively request all IRQ capabilities
Thanks @alex-ab for the remote help.
2015-06-22 14:43:37 +02:00
Christian Helmuth
7dd156c8b6 fuse_fs: prevent annoying warning 2015-06-22 14:43:36 +02:00
Norman Feske
68c6052485 report_rom: zero-terminate reports 2015-06-22 14:43:36 +02:00
Christian Helmuth
7897e52235 vbox_pointer: policy-based shape selection
Fixes #1557
2015-06-22 14:43:36 +02:00
Christian Helmuth
178f2c0e88 reporter: support reporting data buffers
Issue #1557
2015-06-22 14:43:36 +02:00
Emery Hemingway
cec2dd3b3f unify file system utilities to os/include/file_system
Fixes #1564
2015-06-22 14:43:36 +02:00
Alexander Boettcher
c72ea84bcd pci: fix irq re-routing discovery
The commit handles the case that a host bridge device is not at 0:0.0 located.

Issue #1547
2015-06-22 14:43:36 +02:00
Stefan Kalkowski
f78aaf2234 hw: seal capability leak (fix #1568)
Do not initially transfer UTCB dataspace and parent capability to a thread
that is no main thread.
2015-06-22 14:43:35 +02:00
Norman Feske
fcf35a0397 report_rom: add 'verbose' config attribute 2015-06-22 14:43:35 +02:00
Norman Feske
5317cca031 base/allocator.h: clarify use of delete operator
Issue #1571
2015-06-22 14:43:35 +02:00
Stefan Kalkowski
b64f23d4c3 hw: free page tables (fix #1573) 2015-06-22 14:43:35 +02:00
Stefan Kalkowski
409ac1468e core: implement core allocator's free (ref #1573) 2015-06-22 14:43:35 +02:00
Norman Feske
6f167b449c Let XML generator append a trailing newline
By appending a newline to the generated XML data, we prevent the output
from messing with the command prompt when using 'cat' on a shell.
Futhermore, when using line-buffered output, the trailing newline
ensures that the output gets gets properly flushed.
2015-06-22 14:43:35 +02:00
Norman Feske
613d208045 Fix comment 2015-06-22 14:43:34 +02:00
Alexander Boettcher
1f40d9de6a pci: convert to platform_drv
Fixes #1542
2015-06-22 14:43:34 +02:00
Alexander Boettcher
32e792dc74 libegl: remove i915 gallium support 2015-06-22 14:43:34 +02:00
Christian Helmuth
3d7b865251 dynamic_rom: fix returned condition 2015-06-22 14:43:34 +02:00
Norman Feske
4f927f651b core: handle IRQ sessions by separate entrypoint
Fixes #1572
2015-06-22 14:43:34 +02:00
Alexander Boettcher
52110b9d89 os: remove dde_kit
Issue #1565
2015-06-22 14:43:34 +02:00
Sebastian Sumpf
e1be0b3f67 wifi: remove dde_kit
Fixes #1565
2015-06-22 14:43:33 +02:00
Sebastian Sumpf
146b34bf40 lxip: remove dde_kit
issue #1565
2015-06-22 14:43:33 +02:00
Sebastian Sumpf
0a1664b892 usb_drv: remove dde_kit
issue #1565
2015-06-22 14:43:33 +02:00
Sebastian Sumpf
131758eae0 dde_linux: lx utility library
Issue #1565
2015-06-09 11:12:39 +02:00
Alexander Boettcher
1c38d4903b x86: use report_rom for acpi and pci driver
Issue #1542
2015-06-09 11:00:12 +02:00
Norman Feske
66e5796017 nitpicker: fix Domain_registry destructor
When reloading the nitpicker configuration, the destructor would get
stuck, trying to destroy the same object again and again.
2015-06-09 11:00:12 +02:00
Alexander Boettcher
852a250e03 run: fix netperf* perf measurement extraction
The result of the second run (TCP_MAERTS) gets extracted wrongly - due to the
change introduced by commit "run: always append to output buffer"
(Issue #1327). The output buffer is no longer reseted between several
run_genode_until invocation within a run script.
2015-06-09 11:00:11 +02:00
Norman Feske
ef9c745e42 ldso: add memcpy and memset to symbol.map
On ARM, the compiler generates calls to memcpy and memset. Most
dynamically linked programs use the libc, which provides these
functions. However, if a dynamically linked program does not use the
libc (e.g., noux/minimal or the new version of cli_monitor), those
symbols remain unresolved. By adding them to ldso's symbol.map, the
dynamic linker will resolve them with the functions of the cxx
library, which is part of the dynamic linker.

Issue #1561
2015-06-09 11:00:11 +02:00
Christian Helmuth
4004a3a9ca cpu_quota: pre-define variables in run script
If a regexp does not match but the variable is used later, the script
exits with an error like

  can't read "slow_quota_sp": no such variable
2015-06-09 11:00:11 +02:00
Alexander Boettcher
8ccac9a3bb pci: fix 'ALL' policy rule handling
Related to #1541.

Fixes #1559
2015-06-09 11:00:11 +02:00
Norman Feske
65837e8ae9 wifi: fix condition for non-protected connections 2015-06-09 11:00:11 +02:00
Norman Feske
167925ab76 vfs: add Vfs_handle::Guard utility
Issue #1561
2015-06-09 11:00:11 +02:00
Norman Feske
e3be65833f vfs: decouple file-system factory from libc
This patch moves the VFS file-system factory to a separate vfs library
that is independent from libc. This enables libc-less Genode programs to
easily use the VFS infrastructure.

Fixes #1561
2015-06-09 11:00:10 +02:00
Christian Prochaska
435721ea19 VESA driver: report the framebuffer width
With this patch, the VESA driver reports the framebuffer width to the
client instead of the visible width  This fixes possible distortion
if these widths differ, at the cost that content in the right-most area
might be invisible in such cases.

Issue #1264.
2015-06-09 11:00:10 +02:00
Christian Helmuth
93f0cde72f vbox: adapt to framebuffer mode on startup
This works only if guest additions are installed and those report
"graphics=yes".

Related to #1554
2015-06-09 11:00:10 +02:00
Alexander Boettcher
e1896e3b44 run: add platform_drv include for usage by scripts
Related to #765 and used for issue #1542
2015-06-09 11:00:10 +02:00
Alexander Boettcher
8cf09281c1 acpi: transfer memory quota of pci client/driver
Fixes #1550
2015-06-03 12:53:48 +02:00
Alexander Boettcher
7b6cd28dcb nova: update to r9
Fixes compiler warnings and re-enables debug commits regarding out of memory
situations.

Fixes #1551
2015-06-03 12:53:48 +02:00
Christian Prochaska
55ec357d09 vbox: store the unmodified TSC in the GIP
Fixes #1548
2015-06-03 12:53:48 +02:00
Emery Hemingway
46858cf2f6 noux: exit with child
Issue: #1408
2015-06-03 12:53:48 +02:00
Christian Helmuth
992fbb495d stdcxx: simple regression test 2015-06-03 12:53:48 +02:00
Christian Helmuth
ba0e1b782e stdcxx: re-enable _GLIBCXX_USE_C99_STDINT_TR1
The option was enabled until version 4.8 and is needed by
std::lock_guard at least.
2015-06-03 12:53:47 +02:00
Emery Hemingway
2c090119ae ram_fs: writes to files should return length
Fixes #1545
2015-05-28 11:23:18 +02:00
Adrian-Ken Rueegsegger
6b0b297351 libc_ffat: Fix compiler warning
Fixes #1546
2015-05-28 11:20:00 +02:00
Adrian-Ken Rueegsegger
965d85d52d hw_x86_64: Support for dynamic IRQ mode setting
Add a Platform::setup_irq_mode function which enables the IRQ session to
update the trigger mode and polarity of the associated IRQ according to
the session parameters. On ARM this function is a nop.

This change enables the x86_64 platform to support devices which use
arbitrary trigger modes and polarity settings, e.g. AHCI on QEMU and
real hardware.

Fixes #1528.
2015-05-28 11:17:28 +02:00
Alexander Boettcher
1592e78387 pci: handle 'class' alias correctly
Fixes #1541
2015-05-27 11:38:54 +02:00
Josef Söntgen
30a02a5d92 vbox: support unaligned MMIO read access
Fixes #1540.
2015-05-27 11:38:19 +02:00
Alexander Boettcher
6133acb179 pci: use per pci session a separate device_pd
Fixes #1539
2015-05-27 11:37:18 +02:00
Alexander Boettcher
3a021c4c29 pci: deny access to registers used by pci driver
Fixes #1532
2015-05-27 11:28:06 +02:00
Alexander Boettcher
cbc46a2276 usb: avoid allocation across non-cont. phys memory
Fixes #1530
2015-05-27 11:25:34 +02:00
Norman Feske
bf031b174a demo.run: start scout at startup
To be consistent with the documentation, we have to start scout instead
of launchpad right at the start of the default demo scenario.
2015-05-26 09:40:05 +02:00
Christian Helmuth
3384d3d23c linux: fix issue with pointer to rvalue struct member 2015-05-26 09:40:05 +02:00
Christian Prochaska
918895a4f4 vfs: increment 'seek_offset' in block file system
Fixes #1535
2015-05-26 09:40:04 +02:00
Martin Stein
8a99c08ae4 hw: always panic on removal of scheduler head
Because of helping, it is possible that a core thread that wants to
destroy another thread at the kernel is using the scheduling context of
the thread that shall be destroyed at this point in time. When building
without GENODE_RELEASE defined, this always triggers an assertion in the
kernel. But when building with GENODE_RELEASE defined, this might silently
lead to kernel-memory corruption. This commit eliminates the latter case.
Should be reverted as soon as the scheduler is able to remove its head.

Ref #1537
2015-05-26 09:40:04 +02:00
Stefan Kalkowski
28804e2bfb base: remove cap_integrity test (fix #1536) 2015-05-26 09:40:04 +02:00
Emery Hemingway
5fc8ed3e6b file system servers must not use null tx buffers
Fixes #1534
2015-05-26 09:40:04 +02:00
Stefan Kalkowski
e081554731 hw: kernel backed capabilities (Fix #1443) 2015-05-26 09:40:04 +02:00
Stefan Kalkowski
4431ab7354 hw_x86_64: fix kernel stack initialization
Fix #1533
2015-05-26 09:40:04 +02:00
Stefan Kalkowski
db5e4f70f1 hw: replace 'placement new' with 'construct_at<>'
Placement new can be misleading, as we already overload the new operator
to construct objects via pointers to allocators. To prohibit any problems here,
and to use one consistent approach, we can explicitely construct the object
with the already available 'construct_at' template function.

Ref #1443
2015-05-26 09:40:03 +02:00
Stefan Kalkowski
b8f178e647 hw: move MMU-related functions into Address_space
* Introduce a hw specific Address_space interface for protection
  domains, which combines all memory-virtualization related functionality
* Introduce a core-specific Platform_pd object that solves all the hen-egg
  problems formerly distributed in kernel and core-platform code

Ref #595
Ref #1443
2015-05-26 09:40:03 +02:00
Stefan Kalkowski
d4c55bec2a hw: implement 'Address_space' interface
Ref #595
Ref #1443
2015-05-26 09:40:03 +02:00
Stefan Kalkowski
554146d39c base: enforce ram_quota donations to be consistent
For several basic sessions that core provides default ram quota values
exist in the form of enum values. They are used e.g. by init to deduce
session costs. Unfortunately they were not used when actually establishing
the session, which lead to inconsistencies.

Ref #1443
2015-05-26 09:40:03 +02:00
Stefan Kalkowski
a93266548f base: remove unused enum from object pool
Ref #1443
2015-05-26 09:40:03 +02:00
Stefan Kalkowski
217f62b89d base: move retry template function to util header
Ref #1443
2015-05-26 09:40:03 +02:00
Stefan Kalkowski
64bfe233d7 base: make CAP session upgradeable
* Introduce 'Out_of_metadata' exception for capability allocation

Ref #1443
2015-05-26 09:40:02 +02:00
Stefan Kalkowski
73c3a81e0b base: make PD session upgradeable
Ref #1443
2015-05-26 09:40:02 +02:00
Sebastian Sumpf
2d41f13229 base-foc: update commit and hash 2015-05-26 09:40:02 +02:00
Christian Prochaska
a30e29b9c2 ports-foc: remove balloon server
Fixes #1514
2015-05-26 09:40:02 +02:00
Christian Prochaska
caa61c268b seoul: adapt port files to the updated repository
Fixes #1526
2015-05-26 09:40:02 +02:00
Norman Feske
da0ee84a7d sel4: 3rd article - porting core to seL4 2015-05-26 09:40:02 +02:00
Norman Feske
cada11b553 Add sel4_x86_32 to create_builddir tool 2015-05-26 09:40:01 +02:00
Norman Feske
66dd065163 sel4: use LOG console for non-core components 2015-05-26 09:40:01 +02:00
Norman Feske
a748dfbc5c sel4: implementation of Rm_client::unmap 2015-05-26 09:40:01 +02:00
Norman Feske
da2db02ebd sel4: disable page-fault logging 2015-05-26 09:40:01 +02:00
Norman Feske
84c5437437 sel4: initialization of non-main threads 2015-05-26 09:40:01 +02:00
Norman Feske
06d143d51f sel4: receive-sel handling for early IPC 2015-05-26 09:40:01 +02:00
Norman Feske
3259185bfc sel4: import parent cap into non-core components 2015-05-26 09:40:01 +02:00
Norman Feske
1ea22f82fa sel4: core support for IPC of non-core PDs
This patch installs the parent endpoint selector and the PD's CNode into
a PD at its creation time. Furthermore, it initializes the IPC buffer
for the main thread of the new component.
2015-05-26 09:40:00 +02:00
Norman Feske
acd7a2f1c4 sel4: reserve virt page for main-thread IPC buffer 2015-05-26 09:40:00 +02:00
Norman Feske
38db52e7f5 sel4: non-core capability-space implementation 2015-05-26 09:40:00 +02:00
Norman Feske
d6e3e47348 sel4: use core_printf for non-core components
This allows us to see debug messages printed at the eary initialization
of init (before init is able to obtain the regular LOG session). This
will be reverted as soon as the initialziation of the non-core base
environment works.
2015-05-26 09:40:00 +02:00
Norman Feske
5a05521e0f sel4: bootstrap of init and page-fault handling 2015-05-26 09:40:00 +02:00
Norman Feske
691f0eaae7 sel4: link core to different address
This enables us to debug core and non-core using Qemu's GDB stub.
2015-05-26 09:40:00 +02:00
Norman Feske
11b9a0f376 sel4: definition of non-core cap-space parameters 2015-05-26 09:39:59 +02:00
Norman Feske
f19f454ae5 sel4: move core to a libaray, add boot_modules.s 2015-05-26 09:39:59 +02:00
Norman Feske
51f02340b6 sel4: avoid superfluous header re-generation 2015-05-26 09:39:59 +02:00
Norman Feske
56ec0ad172 sel4: add base.mk lib to build and link init 2015-05-26 09:39:59 +02:00
Norman Feske
6ffba0e473 sel4: IPC implementation 2015-05-26 09:39:59 +02:00
Norman Feske
ff46d02c48 sel4: capability lifetime management 2015-05-26 09:39:59 +02:00
Norman Feske
595e86ca2e sel4: assert macro 2015-05-26 09:39:59 +02:00
Norman Feske
95c3e896dd sel4: add include/kernel_object.h utilties 2015-05-26 09:39:58 +02:00
Norman Feske
0a32bc845f sel4: RAM-session supplements 2015-05-26 09:39:58 +02:00
Norman Feske
bf4b260ce1 sel4: unmapping of virtual memory 2015-05-26 09:39:58 +02:00
Norman Feske
262f52723b sel4: block on first call if Ipc_istream::_wait 2015-05-26 09:39:58 +02:00
Norman Feske
8f535d5371 sel4: enter real thread function 2015-05-26 09:39:58 +02:00
Norman Feske
41b99a6b51 sel4: use yielding spinlock for 'Genode::Lock' 2015-05-26 09:39:58 +02:00
Norman Feske
f24b212e47 sel4: core-local thread creation 2015-05-26 09:39:58 +02:00
Norman Feske
e6ad346e24 sel4: management of core's virtual memory 2015-05-26 09:39:57 +02:00
Norman Feske
1f5cfef64e sel4: switch to core's custom cspace layout 2015-05-26 09:39:57 +02:00
Norman Feske
de8bfb37f9 sel4: initialization of core's allocators 2015-05-26 09:39:57 +02:00
Norman Feske
633f335171 sel4: core skeleton 2015-05-26 09:39:57 +02:00
Norman Feske
65a74cf5e0 sel4: complement base-common.mk
This patch extends the base-common library with the symbols needed to
link core.
2015-05-26 09:39:57 +02:00
Norman Feske
885e9333ac sel4: don't use base-common.mk in test roottask
To build core and other Genode components, we will need to extend the
base-common.mk library with additions that conflict with the
minimalistic root-task environment of test/sel4. To preserve the
minimalistic root task, we need to decouple it from the base-common
library.
2015-05-26 09:39:56 +02:00
Norman Feske
c73b6e9c0d sel4: move core console to core_printf library 2015-05-26 09:39:56 +02:00
Norman Feske
e3cb8d48f7 sel4: never compile syscall-using code with -fPIC 2015-05-26 09:39:56 +02:00
Norman Feske
1314bd3b2a sel4: notes about virtual memory management 2015-05-26 09:39:56 +02:00
Norman Feske
9bf7a240fc sel4: test the use of memory mappings 2015-05-26 09:39:56 +02:00
Norman Feske
58481fe35d sel4: use largest untyped range 2015-05-26 09:39:56 +02:00
Norman Feske
37c266327f sel4: capability overmap test 2015-05-26 09:39:56 +02:00
Norman Feske
418f2ab119 sel4: testing the unwrapping of capabilities 2015-05-26 09:39:55 +02:00
Norman Feske
33c2bc3bf2 sel4: capability delegation test 2015-05-26 09:39:55 +02:00
Norman Feske
03010831cd sel4: adapt article to new version of run tool 2015-05-26 09:39:55 +02:00
Norman Feske
1fdf36efed sel4: IPC between two threads 2015-05-26 09:39:55 +02:00
Norman Feske
45b90aa898 sel4: review of the first article 2015-05-26 09:39:55 +02:00
Norman Feske
68671dbc2f sel4: preemptive scheduling 2015-05-26 09:39:55 +02:00
Norman Feske
40c48c4538 sel4: thread creation 2015-05-26 09:39:54 +02:00
Norman Feske
9bf7568909 sel4: replace syscalls.patch by macros.patch 2015-05-26 09:39:54 +02:00
Norman Feske
52c4dc8ec8 sel4: print boot info 2015-05-26 09:39:54 +02:00
Norman Feske
6b9185ab34 sel4: enable core console 2015-05-26 09:39:54 +02:00
Norman Feske
666c74345f sel4: add patch for sel4/syscalls.h 2015-05-26 09:39:54 +02:00
Norman Feske
29f58dbd70 sel4: first syscall invokation 2015-05-26 09:39:54 +02:00
Norman Feske
2b24593758 sel4: minimalistic roottask 2015-05-26 09:39:54 +02:00
Norman Feske
456d81f517 New base-sel4 repository 2015-05-26 09:39:53 +02:00
Norman Feske
35a52f0282 base: const qualifiers in base/trace/types.h
This patch adds missing const qualifiers to the == operators of
'Subject_id' and 'Policy_id'. Thanks to Pirmin Duss for reporting.
2015-05-26 09:39:53 +02:00
Christian Helmuth
8990346c6c mmio: fix compiler warnings
We implicitly know that the value range will not exceed access_t despite
the integer-based arithmetics, i.e., negation and shift operations.

Fixes #1524
2015-05-26 09:39:53 +02:00
Christian Helmuth
140ecb1238 linux: prevent hybrid-mode compiler warnings 2015-05-26 09:39:53 +02:00
Christian Helmuth
c934ee1650 libc: remove debugging artifact from exit() 2015-05-26 09:39:53 +02:00
Christian Helmuth
b5b9b1789d libcrypto: remove redundant ) from .mk 2015-05-26 09:39:52 +02:00
Christian Helmuth
05dc764935 qt5: prevent compiler warnings 2015-05-26 09:39:52 +02:00
Christian Helmuth
97889935cf pci: fix compiler warning 2015-05-26 09:39:52 +02:00
Christian Helmuth
e9652d765d foc: increase stack size for IRQ handler 2015-05-26 09:39:52 +02:00
Alexander Boettcher
869fac8f76 pci: print irq/msi vector when a device gets used 2015-05-26 09:39:52 +02:00
Alexander Boettcher
dd7ddae0e9 pci: add readme to pci_drv, adjust acpi_drv README 2015-05-26 09:39:52 +02:00
Alexander Boettcher
51b79d7da6 pci: support disabling msis 2015-05-26 09:39:52 +02:00
Christian Prochaska
d9825cd708 codezero: move first container to higher address
Fixes #1525
2015-05-26 09:39:51 +02:00
Christian Helmuth
7d39304050 rpi: fix response initialization in platform_drv
GCC 4.9 legitimately whines that const members of responses must be
initialized on construction.
2015-05-26 09:39:51 +02:00
Christian Helmuth
4dad09203a input_merger: fix compiler warning 2015-05-26 09:39:51 +02:00
Alexander Boettcher
3e90542559 nova: use signals with irqs in core
Avoids the need to have per IRQ a thread that blocks synchronously for next
interrupt. Now a thread may wait for multiple IRQs as other signals
simultaneously.

In core no threads are required anymore for IRQs/MSI - the clients (either
the pci_drv or in case of MSI the driver) gets the IRQ delivered directly as
a ordinary Genode signal.

Useful since #1216 and #1487 is now available.
Commit applies feature of #1446 also to IRQ/MSIs.
2015-05-26 09:39:51 +02:00
Christian Prochaska
d554200e5a x86emu: prevent warnings about uninitialized vars
Fixes #1522
2015-05-26 09:39:51 +02:00
Christian Prochaska
526d6eed1c libc: fix compiler warning
Fixes #1523
2015-05-26 09:39:51 +02:00
Norman Feske
e2fe071871 Minor comment refinements for the manual 2015-05-26 09:39:50 +02:00
Reto Buerki
58178949ef hw_x86_64: Make AHCI driver work
The assumption that IRQs in the legacy ISA range are always
edge-triggered is wrong. For the free-for-use IRQs it depends on the
actual device which uses the specific IRQ. Therefore, treat IRQs 9, 10
and 11 as level-triggered.
2015-05-26 09:39:50 +02:00
Reto Buerki
afec233f50 hw_x86_64: Use _edge_triggered() in _create_irt_entry() 2015-05-26 09:39:50 +02:00
Reto Buerki
5eed6de910 hw_x86_64: Let _edge_triggered() operate on IRQ
Use the base IRQ in the _edge_triggered() utility function, not the
remapped vector.
2015-05-26 09:39:50 +02:00
Reto Buerki
6af893123e hw_x86_64: Only block masking of legacy IRQs
Allow legacy IRQ unmasking. Initially, all IRQs are masked and must be
explicitly unmasked by a driver.
2015-05-26 09:39:50 +02:00
Reto Buerki
e034846f32 hw_x86_64: Initially mask IRQs in _create_irt_entry 2015-05-26 09:39:50 +02:00
Christian Prochaska
e0dbf67e1d tool_chain: enable x86_64 target support in GDB
Fixes #1521
2015-05-26 09:39:49 +02:00
Christian Prochaska
72e31090ee tool_chain: update GCC to version 4.9.2
Fixes #1520
2015-05-26 09:39:49 +02:00
Christian Prochaska
7709059245 tool_chain: update GCC to version 4.8.4
Fixes #1519
2015-05-26 09:39:49 +02:00
Christian Prochaska
b704944d4d tool_chain: update binutils to version 2.25
Fixes #1518
2015-05-26 09:39:49 +02:00
Christian Prochaska
2706e4cd75 tool_chain: cleanup
Fixes #1517
2015-05-26 09:39:49 +02:00
Christian Prochaska
ebcfc28a5b qt5: GCC 4.9 compile fix
Fixes #1515
2015-05-26 09:39:49 +02:00
Emery Hemingway
ed4a821891 jitterentropy: update 20140411 to 1.2.0
Issue #1416
2015-05-26 09:39:48 +02:00
Alexander Boettcher
8fa802815d pci: fix wrong warning about multiple usage
Issue #1487
2015-05-26 09:39:48 +02:00
Alexander Boettcher
ccc0f4c2ec usb: handle quota_exceed exception of pci_drv
Issue #755
2015-05-26 09:39:48 +02:00
Christian Prochaska
493bcc80df dde_rump: don't build non-Genode shared libraries
Fixes #1512
2015-05-26 09:39:48 +02:00
Christian Prochaska
5bf538de0c Noux: implement the 'F_GETFL' 'fcntl()' command for pipes
Fixes #1513
2015-05-26 09:39:48 +02:00
Christian Prochaska
e7f869611c hw: static constexpr function when reinterpret cast is used
Issue #1511
2015-05-26 09:39:47 +02:00
Alexander Boettcher
e84284c0cd base: remove shared irq from core
Cleanup commit after all relevant drivers got adapted to use the x86 platform
driver (pci_drv).

Issue #1471
2015-05-26 09:39:47 +02:00
Alexander Boettcher
3783db66e2 base: implement detach for core context_area
Required to destroy threads within in core. Used when IRQs get reused on
platforms where every IRQ needs a thread in core.

Issue #1471
2015-05-26 09:39:47 +02:00
Christian Prochaska
3a378bb970 libc_noux: remove dependency on 'platform_env.h'
Currently, libc_noux includes the 'base/src/base/env/platform_env.h' file
to be able to reinitialize the environment using the 'Platform_env'
interface. For base-linux, a special version of this file exists and the
inclusion of the generic version in libc_noux causes GCC 4.9 to make wrong
assumptions about the memory layout of the 'Env' object returned by
'Genode::env()'.

This commit moves the reinitialization functions to the 'Env' interface to
avoid the need to include the 'platform_env.h' file in libc_noux.

Fixes #1510
2015-05-26 09:39:47 +02:00
Christian Prochaska
1207a4cecd fiasco: remove 'const' GCC attribute from some functions
Some functions in the kernel, which create a static object and return its
address, are declared with a GCC 'const' attribute, which can cause GCC
4.9 to optimize the function call out and use the static object's address
without calling the constructor.

Fixes #1509
2015-05-26 09:39:47 +02:00
Norman Feske
57c9f2aa43 Fix comment 2015-05-26 09:39:47 +02:00
Sebastian Sumpf
bd2e15aeb0 foc: update hash for gcc-4.9 support
see: https://github.com/ssumpf/foc/issues/10
2015-05-26 09:39:46 +02:00
Sebastian Sumpf
8eb2286f60 part_blk: propagate back end information
Propagate supported device operations and read/write errors from back end to
client.
2015-05-26 09:39:46 +02:00
Christian Prochaska
88034ef836 vbox: enable USB (OHCI) pass-through support
The information about connected devices is obtained from a ROM file named
'usb_devices', which is supposed to contain a device list as in the device
report generated by the USB driver (see issue #1506).

A policy for 'report_rom' would look like:

<policy label="vbox -> usb_devices" report="usb_drv -> devices"/>

If the 'usb_devices' ROM file is not available, a warning message gets
printed and VirtualBox continues without USB pass-through support.

The devices to be passed-through need to have a matching device filter in
the '.vbox' file. Example:

<USB>
    <DeviceFilters>
        <DeviceFilter name="USB Scanner" active="true" vendorId="04a9"
                      productId="2220" remote="0"/>
    </DeviceFilters>
</USB>

The feature was tested with HID devices (mouse, keyboard) and a flatbed
scanner. Mass storage devices didn't work correctly (they also didn't work
with VirtualBox on Linux without the closed-source extension pack).

It should be made sure that the USB driver does not try to control the
devices to be passed-through itself, for example, when passing-through
a HID device, the '<hid/>' config option should not be set.

Fixes #1507
2015-05-26 09:39:46 +02:00
Christian Prochaska
2d869dd15e usb_drv: generate a device list report
The report lists all connected devices and gets updated when devices are
added or removed.

Example report:

<devices>
    <device vendor_id="0x17ef" product_id="0x4816"/>
    <device vendor_id="0x0a5c" product_id="0x217f"/>
    <device vendor_id="0x8087" product_id="0x0020"/>
    <device vendor_id="0x8087" product_id="0x0020"/>
    <device vendor_id="0x1d6b" product_id="0x0002"/>
    <device vendor_id="0x1d6b" product_id="0x0002"/>
</devices>

There is no distinction yet for multiple devices of the same type.

The report is named "devices" and an example policy for 'report_rom' would
look like:

<policy label="vbox -> usb_devices" report="usb_drv -> devices"/>

The report only gets generated if enabled in the 'usb_drv' configuration:

<config>
    <raw>
        <report devices="yes"/>
    </raw>
</config>

Fixes #1506
2015-05-26 09:39:46 +02:00
Christian Prochaska
e8f82a1da3 nova: delay UTCB revocation on thread destruction
On NOVA, a Genode thread currently cannot destroy itself by destroying its
own 'Thread' object, because in 'Thread_base::_deinit_platform_thread()'
it cannot call 'Cpu_session::kill_thread()' anymore after it has revoked
its own UTCB.

As solution, the revocation of the UTCB can be delayed until its location
in the context area is needed by a new thread.

Fixes #1505
2015-05-26 09:39:46 +02:00
Christian Prochaska
65d8d4461f vbox: adapt run scripts to new AHCI driver
Fixes #1503
2015-05-26 09:39:46 +02:00
Alexander Boettcher
24a4e486c4 nova: adjust phys and io_mem allocator
Add comments about the way the allocator are filled and make solely acpi
related memory as io_mem available to platform.
2015-05-26 09:39:45 +02:00
Martin Stein
c6417051ce hw & x86: Use register framework for IRTEs
Ref #1494
2015-05-26 09:39:45 +02:00
Martin Stein
6ec39d8df5 hw & x86: Style fixes for cpu_support.h
Ref #1494
2015-05-26 09:39:45 +02:00
Adrian-Ken Rueegsegger
f99fab544a hw_x86_64: Add x86-specific I/O mem allocator init
Enable a platform to specify how the MMIO memory allocator is to be
initialized. On ARM the existing behavior is kept while on x86 the I/O
memory is defined as the entire address space excluding the core only
RAM regions. This aligns the hw_x86_64 I/O memory allocator
initialization with how it is done for other x86 kernels such as NOVA or
Fiasco.
2015-05-26 09:39:45 +02:00
Adrian-Ken Rueegsegger
36b2cf932b hw_x86_64: Initialize complete I/O APIC IRT entries
Also set high 32 bits of I/O APIC redirection table entries.
2015-05-20 17:53:00 +02:00
Adrian-Ken Rueegsegger
f2fe0eccb8 hw_x86_64: Explicitly initialize MXCSR
The assures that the MXCSR is initialized to the recommended value.
2015-05-20 17:52:59 +02:00
Adrian-Ken Rueegsegger
ded302c61c hw_x86_64: Perform lazy FPU state initialization
Perform lazy-initialization of FPU state when it is enabled for the
first time. This assures that the FXSAVE area (including the stored
MXCSR) is always properly setup and initialized to the platform default
values.
2015-05-20 17:52:59 +02:00
Adrian-Ken Rueegsegger
a0ec317753 hw_x86_64: Explicitly set all FPU-related CR flags
Perform all FPU-related setup in the Cpu class' init_fpu function instead of
the general system bring-up assembly code.

Set all required control register 0 and 4 flags according to Intel SDM Vol. 3A,
sections 9.2 and 9.6 instead of only enabling FPU error reporting and OSFXSR.
2015-05-20 17:52:59 +02:00
Adrian-Ken Rueegsegger
5eb75e9e81 hw_x86_64: Add control register 4 to Cpu class 2015-05-20 17:52:59 +02:00
Adrian-Ken Rueegsegger
fdbb073414 hw_x86_64: Log ip on unknown exception 2015-05-20 17:52:59 +02:00
Adrian-Ken Rueegsegger
4d700fe2ae hw_x86_64: Emit debug message on #UD
Print information when handling an undefined instruction exception.
2015-05-20 17:52:59 +02:00
Adrian-Ken Rueegsegger
96149db858 base: Add #UD exception to x86_64 Cpu_state 2015-05-20 17:52:59 +02:00
Adrian-Ken Rueegsegger
370271324e hw_x86_64: Simplify kernel physical init
Merge finish_init_phys_kernel into init_phys_kernel function.
2015-05-20 17:52:58 +02:00
Reto Buerki
bb06826c95 hw_x86_64: Factor out initial PT to separate file
This allows the specification of different initial pagetables for a
platform based on x86_64 (e.g. Muen).
2015-05-20 17:52:58 +02:00
Sebastian Sumpf
9d4f410988 test: block benchmarking 2015-05-20 17:52:58 +02:00
Sebastian Sumpf
ff12ea01d5 blk_cli: add support for test size
'test_size' can be set as parameter in <config> node.
2015-05-20 17:52:58 +02:00
Sebastian Sumpf
7910b5146f ahci: new AHCI driver implementation
Supports native command queueing and multiple ports.
2015-05-20 17:52:58 +02:00
Sebastian Sumpf
33bc63e7c3 os: rename 'bswap' to 'host_to_big_endian' 2015-05-20 17:52:58 +02:00
Josef Söntgen
6a89bd15fd dde_bsd: prefix audio library name
Issue #1498.
2015-05-20 17:52:58 +02:00
Josef Söntgen
11d5f07862 dde_bsd: remove disabling of MSIs
Issue #1498.
2015-05-20 17:52:57 +02:00
Norman Feske
4736488d99 core: change order of _export_ds and _clear_ds
On seL4, we need to convert untyped memory to page frames before being
able to use it as normal memory. There already exists the hook function
'_export_ds' that is principally suitable for such tasks. It is
currently solely used on Linux where we have to create a file for each
dataspace. To make the hook useful also for seL4, we need to call
_export_ds prior _clear_ds. Otherwise, we would try to clear memory that
is still untyped.
2015-05-20 17:52:57 +02:00
Alexander Boettcher
a312d440c8 acpi: use local irq service for pci slave
Fixes base-foc issue on qemu caused by wrong set irq polarity and trigger mode.

Bug introduced in #1471

Issue #1216
2015-05-20 17:52:57 +02:00
Alexander Boettcher
2ceecd44f9 pci: assign device during pci config cmd write
Issue #1216
2015-05-20 17:52:57 +02:00
Alexander Boettcher
3eed3ad329 ahci: use MSIs on x86
- remove code for disabling MSIs

Issue #1216
2015-05-20 17:52:57 +02:00
Alexander Boettcher
b3964f4af1 netperf: test usb30 also for x86
On our test machine the xhci controller has a usb3.0 network adapter attached
and the xhci controller is the only usb controller which has MSI support,
so let us use and test it.

Issue #1216
2015-05-20 17:52:57 +02:00
Alexander Boettcher
ecc9007e84 pci: add msi support to platform driver
Fixes #1216
2015-05-20 17:52:56 +02:00
Alexander Boettcher
d998df3b7f base: extend irq session to support MSIs
Works on base-nova and base-foc, the other kernels have no MSI support.

Issue #1216
2015-05-20 17:39:14 +02:00
Josef Söntgen
b0f900b32b adapt run scripts to new audio_out_drv
Issue #1498.
2015-05-06 16:18:53 +02:00
Josef Söntgen
27e5d48fd0 dde_oss: remove repository
This repository is superseded by the 'dde_bsd' repository.  Though
OSSv4 served us well, its future is uncertain and having active
upstream development is preferable. In addition the ported Intel
HD Audio driver did not work on any Thinpad model newer than T60.

Issue #1498.
2015-05-06 16:18:42 +02:00
Josef Söntgen
49dd9242f7 dde_bsd: add audio drivers ported from OpenBSD
These audio drivers enable support for Intel HD Audio (Azalia) and
Ensoniq AudioPCI (ES1370) compatible soundcards. They are ported
from OpenBSD 5.7.

Fixes #1498.
2015-05-06 16:18:36 +02:00
Josef Söntgen
df04b17594 os: show played times in Audio_out test
The message may be used by a run script to signal successfull testing.

Issue #1498.
2015-05-06 16:18:31 +02:00
Josef Söntgen
4b687f4b1a pci: add AUDIO to alias list
Strictly speaking we make AUDIO an alias for PCI_CLASS_MULTIMEDIA
and ignore any sub class.

Issue #1498.
2015-05-06 16:18:20 +02:00
Christian Helmuth
dcd589d113 l4linux: platform_drv may provide platform session
This is especially true for i.MX53 but is not needed on Arndale
currently.

@skalk the test will still fail each night as we do not have a nic_drv
for imx53...
2015-05-06 12:46:25 +02:00
Christian Prochaska
a4868f8d1d vbox: use interface declarations from 'VirtualBox_XPCOM.h'
Fixes #1499
2015-05-06 12:06:23 +02:00
Christian Prochaska
1001a04883 usb_drv improvements
- send a 'state_change' signal on session creation if the device is
  already attached
- evaluate the status code of a finished asynchronous operation
- return the number of actually transferred bytes for control transfers,
  too

Fixes #1490
2015-05-06 12:01:30 +02:00
Norman Feske
c1cb3a6642 Increase initial block for cxx malloc
This patch avoids the attempt to extend the cxx-local heap during the
startup phase of an application. Originally, the static part of the cxx
was merely 100 bytes, which did not suffice to run the minimalistic test
roottask on seL4.
2015-05-06 11:32:06 +02:00
Norman Feske
89e987b22e base/x86_32: preserve EBX value in crt0 2015-05-06 11:32:06 +02:00
Christian Helmuth
ec954a2278 base-foc: comply with thread limit in core
Fiasco.OC limits the UTCB area for roottask to 16K. Therefore, the
number of threads is limited to 16K / L4_UTCB_OFFSET. (see
kernel/fiasco/src/kern/kernel_thread-std.cpp:94)
2015-05-06 10:55:24 +02:00
Christian Helmuth
6b0723b3bb libc: provide C99 API functions
At least stdcxx needs some C99 functions and depends on _GLIBCXX_USE_C99
for C++11 compatibility.
2015-05-06 10:55:24 +02:00
Christian Helmuth
c6857b3019 thread: remove weak implementation of myself() 2015-05-06 10:55:24 +02:00
Christian Helmuth
2f14f57735 stdcxx: add dependency to libm 2015-05-06 10:55:24 +02:00
Christian Helmuth
5d18e0f23b linux_drivers is obsolete 2015-05-06 10:55:23 +02:00
Martin Stein
7c133add52 hw: acknowledge IRQs via Kernel::ack_irq
In the past, when the user blocked for an IRQ signal, the last signal was
acknowledged automatically thereby unmasking the IRQ. Now, the signal session
got a dedicated RPC for acknowledging IRQs and the HW back-end of that RPC
acknowledged the IRQ signal too. This led to the situation that IRQs were
unmasked twice. However, drivers expect an interrupt to be unmasked only on
the Irq_session::ack_irq and thus IRQ unmasking was moved from
Kernel::ack_signal to a dedicated kernel call.

Fixes #1493
2015-05-06 10:55:23 +02:00
Stefan Kalkowski
e61a3db30d hw: separate function declaration/implementation
Move kernel object functions from its headers to compilation units,
thereby reducing the kernel's text section, cache, and TLB footprint.

Fix #1492
2015-05-06 10:55:23 +02:00
Alexander Boettcher
bc3ba380ae nova: fix check in irq_session destruction
Issue #1456
2015-05-06 10:55:22 +02:00
Alexander Boettcher
b7f2b92dbc pci: restrict usage of pci config space
White list access to ports we actually need for our drivers so far and
deny everything else by default. The extend pci config space dataspace is
currently not used and exposes a potential risk (BAR rewrite) - so deny.

Related to #1487
2015-05-06 10:55:22 +02:00
Alexander Boettcher
729ae0a838 pci: track usage of pci devices by drivers
Warn about if more than one driver uses the same device.

Issue #1487
2015-05-06 10:55:22 +02:00
Alexander Boettcher
6c65e436bf usb: use io_mem on x86 via platform driver
Issue #1487
2015-05-06 10:55:22 +02:00
Alexander Boettcher
a4d6be1b3d wifi: use io mem via device interface
Issue #1487
2015-05-06 10:55:22 +02:00
Alexander Boettcher
b9379a10e7 dde_ipxe: use io mem via device interface
Issue #1487
2015-05-06 10:55:21 +02:00
Alexander Boettcher
65a3be856f pci: provide io mem via device interface
Fixes #1487
2015-05-06 10:55:21 +02:00
Alexander Boettcher
f265b64d6d ps2: use io port via device interface
Issue #1487
2015-05-06 10:55:21 +02:00
Alexander Boettcher
e8854cd998 dde_ipxe: use io ports via device interface
Issue #1487
2015-05-06 10:55:21 +02:00
Alexander Boettcher
b7ca04ddde dde_kit: use io ports via device interface
Issue #1487
2015-05-06 10:55:21 +02:00
Alexander Boettcher
c84817dd7b pci_device:: add convenience phys to virt bar method 2015-05-06 10:55:21 +02:00
Alexander Boettcher
1006571c85 pci: provide io_ports via device interface
Issue #1487
2015-05-06 10:55:20 +02:00
Alexander Boettcher
4e99925c7c vesa: upgrade memory for pci device iteration
Issue #755
2015-05-06 10:55:20 +02:00
Alexander Boettcher
6fa85dfd45 ahci: upgrade memory 2015-05-06 10:55:20 +02:00
Alexander Boettcher
4ead4484ec dde_linux: upgrade quota for wifi
Issue #755
2015-05-06 10:55:20 +02:00
Alexander Boettcher
d37d2bd737 dde_linux: upgrade quota for usb_drv
Issue #755
2015-05-06 10:55:20 +02:00
Alexander Boettcher
828ae3800d dde_ipxe: upgrade quota for nic_drv
Issue #755
2015-05-06 10:55:20 +02:00
Alexander Boettcher
0cf8d75346 dde_kit: upgrade ram support for device iteration
Issue #755
2015-05-06 10:55:20 +02:00
Alexander Boettcher
06e7c947bc pci: use ram quota upgrade mechanism
Fixes #755
2015-05-06 10:55:19 +02:00
Alexander Boettcher
df50d1b29d run: adjust autopilot run scripts to pci changes
Issue #1486
2015-05-06 10:55:19 +02:00
Alexander Boettcher
18b36fb339 acpi: provide pci policy to pci driver
Issue #1486
2015-05-06 10:55:19 +02:00
Alexander Boettcher
e527f6e5ac ps2: use irqs via device interface
Issue #1486 and #1471
2015-05-06 10:55:19 +02:00
Alexander Boettcher
7770a0fbbe pci: enforce policy on device discovery
Fixes #1486
2015-05-06 10:55:19 +02:00
Alexander Boettcher
8743575dcf pci: support discovery of non pci devices
Issue #1486
2015-05-06 10:55:19 +02:00
Alexander Boettcher
e4d663cf41 pci: remove device_cap from dma calls
Issue #1486
2015-05-06 10:55:18 +02:00
Alexander Boettcher
0ed45d92ff base: string length handling fix in Rpc_in_buffer
If a null-terminated string exactly of length MAX (0 byte included) is
provided, it will be handled as invalid because of wrong string size length
checks.

Commit fixes this.

Discovered during #1486 development.
2015-05-06 10:55:18 +02:00
Alexander Boettcher
3c5fb420ca dde_ipxe: use irq via device interface
Issue #1471
2015-05-06 10:55:18 +02:00
Alexander Boettcher
5c1504fd8f wifi: use irq via device interface
Issue #1471
2015-05-06 10:55:18 +02:00
Alexander Boettcher
a58bc84d3e usb: use irq via platform driver or directly
Issue #1471
2015-05-06 10:55:18 +02:00
Alexander Boettcher
6dd9d349fc pci: support shared irqs (x86)
Step to move shared irq handling out of core in the long run. So, use
irq_proxy implementation from base in os and implement shared irq handling
in platform driver of x86 (pci_drv).

Fixes #1471
2015-05-06 10:55:18 +02:00
Alexander Boettcher
31faee3b5c pci: provide irq capability via device interface
Issue #1471
2015-05-06 10:55:17 +02:00
Christian Helmuth
f20b6bdc88 Prevent overlap of stack and thread-context members
Now, Thread::Context provides the first word of the stack to prevent the
overlapping of stack top and the 'stack_base' member.

Fixes #1491
2015-05-06 10:55:17 +02:00
Christian Helmuth
98def2488a thread: move Thread_base::myself() to separate file
The thread library (thread.cc) in base-foc shared 95% of the code with
the generic implementation except myself(). Therefore, its
implementation is now separated from the other generic sources into
myself.cc, which allows base-foc to use a foc-specific primitive to
enable our base libraries in L4Linux.

Issue #1491
2015-05-06 10:55:17 +02:00
Emery Hemingway
55c0a947e4 Move generic fs helpers to os/include/file_system
Fixes #1488
2015-05-06 10:55:17 +02:00
Norman Feske
eecb5cc300 Move OKL4 source code on genode.org
The original download location at wiki.ok-labs.com went down.

Fixes #1489
2015-05-06 10:55:16 +02:00
Alexander Boettcher
50d6d2e922 okl4: fix return value if IPC failed
Otherwise RPC calls to dead/invalid destinations are rated as successful,
which leads to wrong execution paths later on. Triggered by bomb.run where
rm_session.attach() returned as successful with local address set to 0, which
causes un-handled page-faults later on.

Fixes #1480
2015-05-06 10:55:16 +02:00
Christian Helmuth
eee0bf5ab2 init: abort request on invalid route
Fixes #1423
2015-05-06 10:55:16 +02:00
Martin Stein
c9272937e7 CPU session: apply quota via relative weightings
Physical CPU quota was previously given to a thread on construction only
by directly specifying a percentage of the quota of the according CPU
session. Now, a new thread is given a weighting that can be any value.
The physical counter-value of such a weighting depends on the weightings
of the other threads at the CPU session. Thus, the physical quota of all
threads of a CPU session must be updated when a weighting is added or
removed. This is each time the session creates or destroys a thread.

This commit also adapts the "cpu_quota" test in base-hw accordingly.

Ref #1464
2015-05-06 10:55:16 +02:00
Martin Stein
955977b516 hw: syscall for changing a threads physical quota
This commit also extends the "cpu_scheduler" test to test the back-end of the
new syscall.

Ref #1464
2015-04-23 16:51:33 +02:00
Martin Stein
e4f560f39b hw: change round-robin scheduling slice to 10 ms
Previously, it was set to 100 ms which caused a remarkable disadvantage
in reactivity.

Ref #1464
2015-04-23 16:51:33 +02:00
Martin Stein
de9d69a6d7 hw: re-enable kernel tests with the new run env
The new run env doesn't pass the "core_type" parameter at one point
which is why we have to pass it through a global HW-specific variable.

Ref #1464
2015-04-23 16:51:33 +02:00
Josef Söntgen
7a8c088fc6 gems: remove d3m
D3m is superseded by now. Altough there is no direct replacement
combining various other components is equal to its functionality.

Issue #1456.
2015-04-23 16:48:00 +02:00
Josef Söntgen
2c39c75e1c base: remove Irq_connection::wait_for_irq() 2015-04-23 16:48:00 +02:00
Josef Söntgen
0383c68bf6 os: use async IRQ interface in Irq_activation
Issue #1456.
2015-04-23 16:48:00 +02:00
Josef Söntgen
85599c072f os: use async IRQ and server lib in drivers
Use the new asynchronous IRQ interface in the mostly used drivers, e.g.:

* ahci_drv: x86/exynos5
* gpio_drv: imx53/omap4
* input_drv: imx53/dummy
* ps2_drv: x86/pl050
* timer_drv

Now, the Irq_session is requested from Gpio::Session:

From now on we use an asynchronous IRQ interface. To prevent triggering
another GPIO IRQ while currently handling the former one, IRQs must
now by acknowledged explicitly. While here, we also changed the GPIO
session interface regarding IRQ management. The generic GPIO component
now wraps the Irq_session managed by the backend instead of using the
GPIO backend methods directly. A client using the GPIO session may
request the Irq_session_capability by calling
'Gpio::Session::irq_session()' and can use this capability when using
a local Irq_session_client.

Issue #1456.
2015-04-23 16:47:59 +02:00
Josef Söntgen
bfb47cfd4e wifi_drv: use asynchronous IRQ session interface
Issue #1456.
2015-04-23 16:47:59 +02:00
Josef Söntgen
9606abc146 dde_ipxe: remove dde_kit
A long long time ago, in a galaxy^W^W^W we used DDE kit to ease the
porting of purely C based drivers. By now it became clear, that we
do not gain that much by following this approach. DDE kit contains
much generic functionality, which is not used or rather not needed
by most ported drivers. Hence, we implement a slim C wrapper on top
of Genode's C++ APIs, that is especially tailored to the driver.

In addition to removing the dependency on DDE kit, the iPXE driver
now uses the server framework and the newly introduced signal based
IRQ handling.

Issue #1456.
2015-04-23 16:47:58 +02:00
Josef Söntgen
09e96dfdcd dde_kit: use async IRQ session interface
Up to now, dde_kit used the synchronous IRQ session interface. This
interface is going to get deprectated very soon.

Issue #1456.
2015-04-23 16:47:58 +02:00
Alexander Boettcher
faa25e1df6 base: make irq_session asynchronous
second step

options: factor out common parts of irq_session_component.cc
options: use on foc arm no proxy threads

Fixes #1456
2015-04-23 16:47:58 +02:00
Alexander Boettcher
e2cbc7c5b3 base: unify some irq_session headers
remove repos/base-*/include/irq_session headers and use only a unification
from   repos/base/include/irq_session

first step

Issue #1456
2015-04-23 16:47:57 +02:00
Josef Söntgen
2002e1ccba os: remove ATAPI driver
The driver will be superseeded soon by a new AHCI driver that supports
ATAPI devices. There is no IDE support in Gende anymore, however.

Issue #1456.
2015-04-23 16:47:57 +02:00
Norman Feske
97dc9664fe base: move flex_iterator.h to include/util
Fixes #1482
2015-04-17 16:13:22 +02:00
Norman Feske
eaab23c012 base: const-correctness of Allocator interface
This patch adds const qualifiers to the functions Allocator::consumed,
Allocator::overhead, Allocator::avail, and Range_allocator::valid_addr.

Fixes #1481
2015-04-17 16:13:22 +02:00
Norman Feske
847ddbf72e os: Remove new operator from packet_stream.h 2015-04-17 16:13:22 +02:00
Norman Feske
c4dea1057b Document empty Pd_session_client::assign_pci 2015-04-17 16:13:22 +02:00
Norman Feske
e4906ef777 Remove unused GTA01 platform support
This platform (originally added to support the GP2X handheld console)
remains untouched since half a decade.
2015-04-17 16:13:21 +02:00
Norman Feske
270f1068cb os: Move Ring_buffer to Genode namespace
Fixes #1479
2015-04-17 16:13:21 +02:00
Stefan Kalkowski
146292dba9 base-host: remove platform template completely
Fix #1476
2015-04-17 16:13:21 +02:00
Stefan Kalkowski
0188b08f6a hw: construct kernel irq objects on demand
Ref #1443
2015-04-17 16:13:21 +02:00
Stefan Kalkowski
b32af4e0a4 hw: directly reference kernel objects from core
Instead of handing over object ids to the kernel, which has to find them
in object pools then, core can simply use object pointers to reference
kernel objects.

Ref #1443
2015-04-17 16:13:20 +02:00
Stefan Kalkowski
c850462f43 hw: replace kernel's object id allocators
Instead of having an ID allocator per object class use one global allocator for
all. Thereby artificial limitations for the different object types are
superfluent. Moreover, replace the base-hw specific id allocator implementation
with the generic Bit_allocator, which is also memory saving.

Ref #1443
2015-04-17 16:13:20 +02:00
Stefan Kalkowski
2df86cd34b hw: rename bin_* syscalls with delete_*
The verb "bin" in the context of destroying kernel objects seems pretty
unusual in contrast to "delete". When reading "bin" in the context of
systems software an association to something like "binary" is more likely.

Ref #1443
2015-04-17 16:13:20 +02:00
Stefan Kalkowski
b949489641 base: remove local capability from generic base
* Instead of using local capabilities within core's context area implementation
  for stack allocation/attachment, simply do both operations while stack gets
  attached, thereby getting rid of the local capabilities in generic code
* In base-hw the UTCB of core's main thread gets mapped directly instead of
  constructing a dataspace component out of it and hand over its local
  capability
* Remove local capability implementation from all platforms except Linux

Ref #1443
2015-04-17 16:13:20 +02:00
Stefan Kalkowski
a168c9d6ce core: remove global capability id counter
The global capability ID counter is not used by NOVA and Fiasco.OC
and in the future not needed by base-hw too. Thereby, remove the static
counter variable from the generic code base and add it where appropriated.

Ref #1443
2015-04-17 16:13:19 +02:00
Stefan Kalkowski
358380046c base: assign allocator and quota to platform pd
Enable platform specific allocations and ram quota accounting for
protection domains. Needed to allocate object identity references
in the base-hw kernel when delegating capabilities via IPC.
Moreover, it can be used to account translation table entries in the
future.

Ref #1443
2015-04-17 16:13:19 +02:00
Norman Feske
d9d65aa86b base: use reference for ascii_to output argument
Issue #1477
2015-04-17 16:13:19 +02:00
Norman Feske
d884cf1a9a base: unify ascii_to conversion functions
This patch addresses the first point of the issue #1477, namely
replacing the function-template magic by plain function overloads.

Issue #1477
2015-04-13 14:18:16 +02:00
Christian Prochaska
63ebebcfa4 nitpicker: update the 'pointed session' more often
Currently, the 'pointed session' gets updated only when an input event
occurs, but an update is also needed in other situations, for example
when the view under the current mouse position was moved.

With this commit, the 'pointed session' gets updated whenever the
timer-triggered 'handle_input()' function is called.

Fixes #1473
2015-04-13 14:18:15 +02:00
Christian Prochaska
0fd53c7fe4 Extract numeric string arguments with the correct signedness
There are lots of places where a numeric argument of an argument string
gets extraced as signed long value and then assigned to an unsigned long
variable. If the value in the string was negative, it would not be
detected as invalid (and replaced by the default value), but become a
positive bogus value.

With this patch, numeric values which are supposed to be unsigned get
extracted with the 'ulong_value()' function, which returns the default
value for negative numbers.

Fixes #1472
2015-04-13 14:18:15 +02:00
Christian Prochaska
af2cd7175c vbox: enable video acceleration (VBVA)
This commit enables the VirtualBox graphics adapter, provides guest mouse
pointer integration with Nitpicker using the 'vbox_pointer' application
and enhances the VirtualBox run scripts with the configuration of
Nitpicker, input merger and network driver.

Fixes #1474
2015-04-13 14:18:15 +02:00
Christian Helmuth
0fb5ce0918 base: run mp_server on hw_x86_64 as single core 2015-04-09 16:04:47 +02:00
Norman Feske
8fd30b13ac Consider Raspberry Pi in sd_card.run
Issue #1475
2015-04-09 16:04:47 +02:00
Norman Feske
91e0a5d5dd SD-card driver for the Raspberry Pi
The driver operates in PIO mode only. Depending on the block size (512
bytes versus 128 KiB), it has a troughput of 2 MiB/sec - 10 MiB/sec for
reading and 173 KiB/sec - 8 MiB/sec for writing.

Fixes #1475
2015-04-09 16:04:47 +02:00
Norman Feske
87f13d77c0 Omit timer RPC calls for usleep(0) 2015-04-09 16:04:46 +02:00
Norman Feske
77cba65b7a os: detection of standard-capacity SD cards
This patch enhances the generic SD-card protocol implementation in
sd-card.h with the ability to handle the version 1.0 of the CSD register
(containing the capacity information of older SD cards).
2015-04-09 16:04:46 +02:00
Norman Feske
26442f782b os: add 'clock_rate' to Rpi platform driver 2015-04-09 16:04:46 +02:00
Norman Feske
ea9c2199e8 base: extend emergency dataspace size
The emergency dataspace is used to accommodate the corner case where
a signal context capability is created while issuing the first
resource request. Normally, the attempt to upgrade the signal-session
quota under such a constrained situation would fail. By freeing the
emergency dataspace in this situation, we regain enough quota to
upgrade the signal session.

This is a follow up commit for "base: Raise RAM quota of signal session
to 16K" and fixes the resource_request test on 64-bit platforms.
2015-04-09 16:04:46 +02:00
Norman Feske
eaac3cc1bd Revised API documentation
This patch curates the API documentation to become suitable for the
functional specificaton, which is partially generated from the header
files.
2015-04-09 16:04:46 +02:00
Norman Feske
e1b4408090 os: turn Xml_node::Attribute to Xml_attribute
Moving the XML attribute class to the Genode namespace simplifies the
API.
2015-04-09 16:04:45 +02:00
Norman Feske
394fce110e base: coding style 2015-04-09 16:04:45 +02:00
Norman Feske
13a0c336d9 base: separate the API's 'Thread_base' constructor
The 'Thread_base' class is constructed differently in some special cases
like the main thread or a thread that use a distinct CPU session. The
official API, however, should be clean from such artifacts. Hence, I
separated the official constructor from the other cases.
2015-04-09 16:04:45 +02:00
Norman Feske
0d74435448 base: remove Genode::parent_cap from the API
Components interact with their environments using the Genode::Env class
instead of directly using the parent capability.
2015-04-09 16:04:45 +02:00
Norman Feske
695ac957f4 base: add missing override annotations 2015-04-09 16:04:44 +02:00
Norman Feske
6fc372bcf4 base: add const qualifiers 2015-04-09 16:04:44 +02:00
Christian Prochaska
0e344c9830 vbox: support more mouse event combinations
VirtualBox can receive absolute or relative mouse motion events from the
'Input' service and the VM can support either or both of them. With this
patch, more of the possible combinations are handled.

Fixes #1470
2015-04-09 16:04:44 +02:00
Martin Stein
70aa98d837 hw: fix bug in cancellation of 'await_signal'
There were two bugs. First, the caller of Kernel::await_signal wasn't
re-activated for scheduling. Second, the caller did not memorize that he
doesn't wait on a receiver anymore which had bad side effects on further
signal handling.

Fix #1459
2015-04-09 16:04:44 +02:00
Martin Stein
60e392f0c0 hw: support Wandboard Quad (i.MX6)
The port uses the Cortex-A9 private timer for the kernel and an EPIT as
user timer. It was successfully tested on the Wandboard Quad and the CuBox-i
with the signal test. It lacks L2-cache and Trustzone support by now.

Thanks to Praveen Srinivas (IIT Madras, India) and  Nikolay Golikov (Ksys Labs
LLC, Russia). This work is partially based on their contributions.

Fix #1467
2015-04-09 16:04:43 +02:00
Martin Stein
4f887448c3 hw & cortex_a9: clean-up board_support.h
Change class name according to our common naming scheme and remove unnecessary
'using' directive.

Ref #1467
2015-03-27 12:20:07 +01:00
Sebastian Sumpf
1b155dbaa6 libssh: git repo for source retrieval
We now use 'http://git.libssh.org/projects/libssh.git'

Fix #1428
2015-03-27 11:53:35 +01:00
Reto Buerki
c82f5e9269 hw_x86_64: Do not mask edge-triggered interrupts
Do not mask edge-triggered interrupts to avoid losing them while masked,
see Intel 82093AA I/O Advanced Programmable Interrupt Controller
(IOAPIC) specification, section 3.4.2, "Interrupt Mask":

"When this bit is 1, the interrupt signal is masked. Edge-sensitive
interrupts signaled on a masked interrupt pin are ignored (i.e., not
delivered or held pending)"

Or to quote Linus Torvalds on the subject:

"Now, edge-triggered interrupts are a _lot_ harder to mask, because the
Intel APIC is an unbelievable piece of sh*t, and has the edge-detect
logic _before_ the mask logic, so if a edge happens _while_ the device
is masked, you'll never ever see the edge ever again (unmasking will not
cause a new edge, so you simply lost the interrupt)."

So when you "mask" an edge-triggered IRQ, you can't really mask it at
all, because if you did that, you'd lose it forever if the IRQ comes in
while you masked it. Instead, we're supposed to leave it active, and set
a flag, and IF the IRQ comes in, we just remember it, and mask it at
that point instead, and then on unmasking, we have to replay it by
sending a self-IPI." [1]

[1] - http://yarchive.net/comp/linux/edge_triggered_interrupts.html

Ref #1448
2015-03-27 11:53:34 +01:00
Martin Stein
bfe1fac37c hw_x86_64: style fixes
Ref #1448
2015-03-27 11:53:34 +01:00
Stefan Kalkowski
49bffbfe7e os: enable PIT timer for hw_x86_64 platform 2015-03-27 11:53:34 +01:00
Adrian-Ken Rueegsegger
f4cb9101a4 hw: Fix format string for 64 bit platforms
Use the format specifier of the largest possible type and cast the value
to the chosen type. This avoids compiler warnings on x86_64.
2015-03-27 11:53:33 +01:00
Reto Buerki
92efc13a17 hw_x86_64: Add x86-specific IRQ session component
In order to match the I/O APIC configuration, a request for user timer
IRQ 0 is remapped to vector 50 (Board::TIMER_VECTOR_USER), all other
requests are transposed by adding the vector offset 48
(Board::VECTOR_REMAP_BASE).
2015-03-27 11:53:33 +01:00
Adrian-Ken Rueegsegger
f9f74d2930 hw_x86_64: Add VESA resources to x86 MMIO regions
The additional MMIO regions are necessary for emulated graphics devices
of QEMU and Bochs.
2015-03-27 11:53:33 +01:00
Adrian-Ken Rueegsegger
8b8e8c8270 hw_x86_64: Add various drivers to x86
Include PCI, PS2, VESA and Framebuffer drivers on x86_64 platform.
2015-03-27 11:53:33 +01:00
Adrian-Ken Rueegsegger
e5f26fa8db base: Raise RAM quota of signal session to 16K
On base-hw/x86_64 the quota of the signal session is not sufficient due to
the large size of the Signal_session_component. Increasing the quota to
16K avoids signal-context resource exhaustion messages as emmitted by the
run/launcher scenario:

  ...
  Quota exceeded! amount=4096, size=4096, consumed=4096
  failed to allocate signal-context resources
  upgrading quota donation for signal session
  C++ runtime: Genode::Parent::Quota_exceeded
  void* abort(): abort called
  ...

Note: This change increases the quota for all kernels even though it is
      strictly only required for base-hw/x86_64.
2015-03-27 11:53:33 +01:00
Adrian-Ken Rueegsegger
96a3eabe16 hw_x86_64: Log additional information on unknown exception
Provide more information in the log message when an unknown exception
occurs.
2015-03-27 11:53:32 +01:00
Adrian-Ken Rueegsegger
544148bc24 hw_x86_64: Add I/O port allocator to platform
Add the entire I/O port range to the I/O port allocator on x86. Do nothing
on ARM platforms since there are no I/O port resources.
2015-03-27 11:53:32 +01:00
Reto Buerki
5765398741 hw_x86_64: Add x86 platform services to core
Use the x86-specific platform_services.cc file and register the I/O port
session component.
2015-03-27 11:53:32 +01:00
Reto Buerki
28b5e67a8c Update or add hw_x86_64 copyright headers 2015-03-27 11:53:32 +01:00
Adrian-Ken Rueegsegger
ace61c54d6 hw_x86_64: Zero-fill BSS segment in x86_64 crt0.s
Make sure all content of the BSS segment is initialized to zero.
2015-03-27 11:53:32 +01:00
Reto Buerki
69a58c4bd5 hw_x86_64: Set EFLAGS IF, IOPL bits in Cpu::init_thread
Enable interrupts for all threads, set I/O privilege level (IOPL) to 3
for core threads to allow UART access.
2015-03-27 11:53:32 +01:00
Adrian-Ken Rueegsegger
7ce8464b3a hw_x86_64: Enable FPU support
* Enable the use of the FXSAVE and FXRSTOR instructions, see Intel SDM
  Vol. 3C, section 2.5.
* The state of the x87 floating point unit (FPU) is loaded and saved on
  demand.
* Make the cr0 control register accessible in the Cpu class. This is in
  preparation of the upcoming FPU management.
* Access to the FPU is disabled by setting the Task Switch flag in the cr0
  register.
* Access to the FPU is enabled by clearing the Task Switch flag in the cr0
  register.
* Implement FPU initialization
* Add is_fpu_enabled helper function
* Add pointer to CPU lazy state to CPU class
* Init FPU when finishing kernel initialization
* Add function to retry FPU instruction:
    Similar to the ARM mechanism to retry undefined instructions, implement a
    function for retrying an FPU instruction. If a floating-point instruction
    causes an #NM exception due to the FPU being disabled, it can be retried
    after the correct FPU state is restored, saving the current state and
    enabling the FPU in the process.
* Disable FPU when switching to different user context:
    This enables lazy save/restore of the FPU since trying to execute a
    floating point instruction when the FPU is disabled will cause a #NM
    exception.
* Declare constant for #NM exception
* Retry FPU instruction on #NM exception
* Assure alignment of FXSAVE area:
    The FXSAVE area is 512-byte memory region that must be 16-byte aligned. As
    it turns out the alignment attribute is not honored in all cases so add a
    workaround to assure the alignment constraint is met by manually rounding
    the start of the FXSAVE area to the next 16-byte boundary if necessary.
2015-03-27 11:53:31 +01:00
Reto Buerki
c14898703d hw_x86_64: Implement Cpu_idle::exception function
Forward external interrupts during the CPU idle thread to the
_interrupt function.
2015-03-27 11:53:31 +01:00
Reto Buerki
e443b859e6 base: Add x86 RESET pseudo-exception
Define RESET as exception 0xfe. The reset state is only used initially
in the CPU idle exception function.
2015-03-27 11:53:31 +01:00
Reto Buerki
c9c84dd751 base: Move Cpu_exception enum to x86_64 cpu_state.h 2015-03-27 11:53:31 +01:00
Reto Buerki
4e259f7b1e hw_x86_64: Implement LAPIC-based kernel timer
The LAPIC timer is programmed in one-shot mode with vector 32
(Board::TIMER_VECTOR_KERNEL). The timer frequency is measured using PIT
channel 2 as reference (50ms delay).

Disable PIT timer channel 0 since BIOS programs it to fire periodically.
This avoids potential spurious timer interrupts.
2015-03-27 11:53:31 +01:00
Reto Buerki
a21959fc26 hw_x86_64: Implement APIC-based PIC driver
The implementation initializes the Local APIC (LAPIC) of CPU 0 in xapic
mode (mmio register access) and uses the I/O APIC to remap, mask and
unmask hardware IRQs. The remapping offset of IRQs is 48.

Also initialize the legacy PIC and mask all interrupts in order to
disable it.

For more information about LAPIC and I/O APIC see Intel SDM Vol. 3A,
chapter 10 and the Intel 82093AA I/O Advanced Programmable Interrupt
Controller (IOAPIC) specification

Set bit 9 in the RFLAGS register of user CPU context to enable
interrupts on kernel- to usermode switch.
2015-03-27 11:53:31 +01:00
Reto Buerki
557c96a9cb hw_x86_64: Add APIC MMIO to native regions 2015-03-27 11:53:30 +01:00
Reto Buerki
cf100f96af hw_x86_64: Add x86-specific board.h file
The file specifies constants for the LAPIC, I/O APIC MMIO regions plus
the interrupt remapping offset and timer vectors.
2015-03-27 11:53:30 +01:00
Adrian-Ken Rueegsegger
42987a7b2f hw_x86_64: Add mapping for I/O APIC MMIO to initial pt
Make the I/O APIC accessible via its MMIO region by adding a 2 MB large
page mapping at 0xfec00000 with memory type UC.
2015-03-27 11:53:30 +01:00
Adrian-Ken Rueegsegger
c06c21e472 hw_x86_64: Add mapping for APIC MMIO to initial pt
Make the local APIC accessible via its MMIO region by adding a 2 MB
large page mapping at 0xfee00000 with memory type UC.

Note: The mapping is added to the initial page tables to make the APIC
      usable prior to the activation of core's page tables, e.g. in the
      constructor of the timer class.
2015-03-27 11:53:30 +01:00
Reto Buerki
b75b1902f2 hw_x86_64: Provide inb and outb functions for port I/O
The port_io.h file provides the inb and outb functions to perform port
I/O operations.
2015-03-27 11:53:30 +01:00
Reto Buerki
1b3871a3f0 hw_x86_64: Move exception_entry to 0xffff0000
The location in memory is arbitrary but we use the same address as the
ARM architecture. Adjust references to virtual addresses in the mode
transition pages to cope with 64-bit values.
2015-03-27 11:53:30 +01:00
Reto Buerki
147b1ec2b1 hw_x86_64: Adjust parameter type of Message_tpl::prepare_send
Change the type of the local name parameter from unsigned to unsigned
long. Otherwise only 4 bytes are copied on x86_64, leaving 4 bytes of
garbage.
2015-03-27 11:53:29 +01:00
Reto Buerki
16a51b317a hw_x86_64: Implement Cpu_idle::Cpu_idle function
The function is a copy of the ARM version.
2015-03-27 11:53:29 +01:00
Reto Buerki
2ecdf4f729 hw_x86_64: Forward interrupts to _interrupt function
Extend the Thread::exception function to forward external interrupts to
the _interrupt function for processing.
2015-03-27 11:53:29 +01:00
Reto Buerki
d0024e1893 hw_x86_64: Fill _fault_addr from cr2 in _mmu_exception
Use the Cpu::Cr2 register to read the linear page fault address in the
Thread::_mmu_exception function.
2015-03-27 11:53:29 +01:00
Reto Buerki
d553d38ecf hw_x86_64: Model cr2 register in CPU state
Make the cr2 control register accessible in the Cpu class. The register
is needed to retrieve the linear address that caused a page fault.
2015-03-27 11:53:29 +01:00
Reto Buerki
466ad3aed4 hw_x86_64: Implement Thread::_mmu_exception() for x86_64
The function is a copy of the ARM version minus the in_fault
distinction.
2015-03-27 11:53:29 +01:00
Reto Buerki
0992c233bd hw_x86_64: Forward page faults to the _mmu_exception function 2015-03-27 11:53:28 +01:00
Reto Buerki
112ff2609a hw_x86_64: Add Thread::_event implementation
It is an exact copy of the ARM version.
2015-03-27 11:53:28 +01:00
Reto Buerki
83a1b826a3 hw_x86_64: Add supervisor call handling to Thread::exception
Forward supervisor calls to the Thread::_call function for dispatching.
2015-03-27 11:53:28 +01:00
Reto Buerki
0568dcc875 hw_x86_64: Implement Thread::_reg function 2015-03-27 11:53:28 +01:00
Reto Buerki
e5be376f57 hw_x86_64: Declare Thread_reg_id enum for x86_64
Only define IDs of registers which are actually accessed by threads.
2015-03-27 11:53:28 +01:00
Reto Buerki
472c3b6502 hw_x86_64: Use mtc relative addressing for master context 2015-03-27 11:53:28 +01:00
Reto Buerki
080d7d5f8b hw_x86_64: Use mtc relative addressing for _mt_buffer in crt0.s
Until the kernel page tables are active, labels can't be used directly
because the associated pages are not mapped for non-core threads.
2015-03-27 11:53:28 +01:00
Reto Buerki
09c90e5751 hw_x86_64: Set interrupt stack in Tss::Setup 2015-03-27 11:53:27 +01:00