Commit graph

11216 commits

Author SHA1 Message Date
Michael LeMay
73774def6b x86, galileo: Add sample non-driver protection domain
This patch adds a simple non-driver protection domain sample to serve
as an example for defining other non-driver protection domains.  It
simply performs a ping-pong test of protection domain switching
latency during boot, including optional accesses to a private metadata
region, and prints out the results.
2016-04-22 08:16:43 -07:00
Michael LeMay
e0aefd11d9 x86: Add support for SW-switched segment-based protection domains
This patch extends the protection domain framework with a third plugin
that is a hybrid of the previous two.  The hardware task switching
mechanism has a strictly-defined format for TSS data structures that
causes more space to be consumed than would otherwise be required.
This patch defines a smaller data structure that is allocated for each
protection domain, only requiring 32 bytes instead of 128 bytes.  It
uses the same multi-segment memory layout as the TSS-based plugin and
leaves paging disabled.  However, it uses a similar mechanism as the
paging plugin to perform system call dispatches and returns.

For additional information, please refer to cpu/x86/mm/README.md.
2016-04-22 08:16:43 -07:00
Michael LeMay
4cdb7ba9b6 x86: Add TSS-based protection domain support
This patch extends the protection domain framework with an additional
plugin to use Task-State Segment (TSS) structures to offload much of
the work of switching protection domains to the CPU.  This can save
space compared to paging, since paging requires two 4KiB page tables
and one 32-byte page table plus one whole-system TSS and an additional
32-byte data structure for each protection domain, whereas the
approach implemented by this patch just requires a 128-byte data
structure for each protection domain.  Only a small number of
protection domains will typically be used, so
n * 128 < 8328 + (n * 32).

For additional information, please refer to cpu/x86/mm/README.md.

GCC 6 is introducing named address spaces for the FS and GS segments
[1].  LLVM Clang also provides address spaces for the FS and GS
segments [2].  This patch also adds support to the multi-segment X86
memory management subsystem for using these features instead of inline
assembly blocks, which enables type checking to detect some address
space mismatches.

[1] https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html
[2] http://llvm.org/releases/3.3/tools/clang/docs/LanguageExtensions.html#target-specific-extensions
2016-04-22 08:16:39 -07:00
Michael LeMay
3908253038 x86: Add support for (paging-based) protection domains
This patch implements a simple, lightweight form of protection domains
using a pluggable framework.  Currently, the following plugin is
available:

 - Flat memory model with paging.

The overall goal of a protection domain implementation within this
framework is to define a set of resources that should be accessible to
each protection domain and to prevent that protection domain from
accessing other resources.  The details of each implementation of
protection domains may differ substantially, but they should all be
guided by the principle of least privilege.  However, that idealized
principle is balanced against the practical objectives of limiting the
number of relatively time-consuming context switches and minimizing
changes to existing code.

For additional information, please refer to cpu/x86/mm/README.md.

This patch also causes the C compiler to be used as the default linker
and assembler.
2016-03-21 17:18:06 -07:00
Michael LeMay
b0de416682 x86: Adjust UEFI header size
The UEFI GenFw program inserts headers ahead of the code in the UEFI
binary.  The linker script adjusts the starting address of the .text
section to account for that.  This prevents the symbols from being
perturbed.  This patch accounts for a recent change in the size of the
headers added by the GenFw program.
2016-03-21 17:18:06 -07:00
Nicolas Tsiftes
40f81a98c3 Merge pull request #1481 from mdlemay/galileo-imr
galileo: Isolated Memory Region support
2016-03-21 17:35:03 +01:00
Michael LeMay
93126b57bb x86, galileo: Use IMRs to restrict DMA
This patch configures Isolated Memory Regions (IMRs) to block DMA to
code and data regions that do not contain any data that needs to be
DMA-accessible.
2016-03-17 08:35:49 -07:00
Michael LeMay
e0d124c7c5 galileo: Add example to print out IMR information
This patch adds an example program to print out information about the
configuration of the Intel Quark X1000 SoC Isolated Memory Regions
(IMRs), the Host System Management Mode Controls register, and the
Host Memory I/O Boundary register.
2016-03-17 08:35:49 -07:00
Michael LeMay
58a00b7c23 x86, galileo: Add driver for Isolated Memory Regions (IMRs)
The Intel Quark X1000 SoC includes support for Isolated Memory Regions
(IMRs), which are specified using range registers and associated
control registers that are accessible via the message bus.  This patch
adds a driver for accessing those registers.
2016-03-17 08:35:49 -07:00
Michael LeMay
25c07613c2 x86: Add driver for message bus
The Intel Quark X1000 SoC includes a message bus that is accessible
via PCI configuration registers.  It communicates to various SoC
components such as the Isolated Memory Region (IMR) registers and the
Remote Management Unit.  This patch adds a driver for accessing the
message bus.
2016-03-17 08:35:48 -07:00
Fredrik Österlind
f9a30236c8 Merge pull request #1557 from sieben/patch-1
fix SerialSocketServer when run without GUI
2016-03-17 10:00:35 +01:00
Rémy Léone
60acf7de98 fix SerialSocketServer when run without GUI 2016-03-16 18:48:09 +01:00
Simon Duquennoy
8f9ff51333 Merge pull request #1555 from simonduq/pr/doxygen-warning
Fix doxygen warning
2016-03-15 16:13:37 +01:00
Simon Duquennoy
072e416d4a Fix doxygen warning 2016-03-15 10:25:05 +01:00
Nicolas Tsiftes
9ab327090c Merge pull request #1444 from mdlemay/galileo-always-init-gpio
galileo: Enable I2C and GPIO interrupt sharing and centralize their initialization
2016-03-14 20:09:40 +01:00
Nicolas Tsiftes
862e43d9b0 Merge pull request #1523 from Zolertia/pull/z1-apify-sensors
Adapt Z1 on-board sensors to Contiki's API
2016-03-14 17:10:46 +01:00
Simon Duquennoy
5e5904d10e Merge pull request #1387 from simonduq/pr/ndfree-rpl-fix
NDP disabled: also disable uip_ds6_neighbor_periodic
2016-03-14 16:42:45 +01:00
Simon Duquennoy
1ffbafeaa6 Merge pull request #1375 from myrfy001/myrfy001-patch-1
off_t changed to signed to stay the same as POSIX
2016-03-14 16:42:13 +01:00
Simon Duquennoy
bbefd4ab4e Merge pull request #1334 from tadodotcom/1333-resolv-fat-camp
trims resolv.c by removing unrequired static declarations
2016-03-14 16:41:33 +01:00
Nicolas Tsiftes
364afcf204 Merge pull request #1553 from simonduq/pr/leftover-aaaa
Fix a number of leftover mentions of aaaa as a prefix (now fd00)
2016-03-14 15:40:14 +01:00
Simon Duquennoy
88a0db6aee Add missing includes 2016-03-14 14:52:59 +01:00
Simon Duquennoy
4bf868fd99 Fix a number of leftover mentions of aaaa as a prefix (now fd00) 2016-03-14 13:56:00 +01:00
Simon Duquennoy
cd981b23d5 Merge pull request #1297 from simonduq/pr/default-prefix
Change the default IPv6 prefix from aaaa::/64 to fd00::/64
2016-03-13 20:39:16 +01:00
Simon Duquennoy
a15be9e518 Merge pull request #1438 from jkent/jsonparse
jsonparse: multiple improvements
2016-03-11 14:23:17 +01:00
Nicolas Tsiftes
c476194004 Merge pull request #1548 from simonduq/pr/traceroute
uip6, icmp6 and ext header handling fixes: traceroute now working!
2016-03-11 14:14:26 +01:00
Simon Duquennoy
3fa25eac8c uip6: fix bug that caused the payload of ICMPv6 messages not to match that of the original packet 2016-03-10 12:22:23 +01:00
Simon Duquennoy
06e984a02e uip6: enable sending of "port unreachable" ICMPv6 message 2016-03-10 12:22:15 +01:00
Simon Duquennoy
5886bdea31 uip_icmp6_error_output: remove and add RPL ext header instead of inverting it, so that the payload of the returned ICMP error matches the original packet 2016-03-10 12:22:05 +01:00
Simon Duquennoy
9930756d7c uip6: restore proto after calling remove_ext_hdr 2016-03-10 12:21:55 +01:00
Simon Duquennoy
add5a8be67 Code style 2016-03-10 11:33:40 +01:00
Simon Duquennoy
f5ea8e613e Merge pull request #1547 from yatch/pr-fix-typos-in-prints
RPL: fix typos in debug messages
2016-03-09 13:24:52 +01:00
Yasuyuki Tanaka
f83e498978 Fix typos in debug messages 2016-03-09 11:32:24 +01:00
Simon Duquennoy
8e120748d3 Merge pull request #1543 from simonduq/pr/tsch-security-save-space
TSCH-Security regression test: save space
2016-03-07 20:25:54 +01:00
Simon Duquennoy
dea04c67d7 Change the default IPv6 prefix from aaaa::/64 to fd00::/64 2016-03-07 17:47:44 +01:00
Simon Duquennoy
8b63b41b96 TSCH-security: disable TSCH logs to save ROM, relax checks in 21-z1-rpl-tsch-security.csc accordingly 2016-03-07 17:43:25 +01:00
Simon Duquennoy
73fcfa42c2 TSCH: fix compiler warning that shows up when disabling TSCH_LOG_LEVEL 2016-03-07 17:42:17 +01:00
Oliver Schmidt
8b3d220761 Merge pull request #1542 from oliverschmidt/master
Adjusted segment names to match recent cc65 change.
2016-03-06 21:29:50 +01:00
Oliver Schmidt
6876b97466 Adjusted segment names to match recent cc65 change. 2016-03-06 21:11:18 +01:00
Nicolas Tsiftes
fbf3aba152 Merge pull request #1513 from mdlemay/check-newlib-conf
galileo: build_newlib.sh: Exit on configuration error
2016-03-03 13:39:27 +01:00
Nicolas Tsiftes
da5044acb2 Merge pull request #1514 from mdlemay/newlib-filter-patches
galileo: build_newlib.sh: Only apply patch files with the extension ".patch"
2016-03-03 13:38:56 +01:00
Simon Duquennoy
df5ff896a8 Merge pull request #1536 from gebart/pr/function-prototypes
fix warning: function declaration isn't a prototype
2016-03-02 10:29:00 +01:00
Simon Duquennoy
c7bb3b7b9f Merge pull request #1309 from iot-lab/tunslip_tun_conflict
Fix default tun/tap issue with multiple tunslip6
2016-03-02 09:53:00 +01:00
Joakim Nohlgård
1219790312 examples/er-rest-example/resources/res-event.c: fix warning: function declaration isn't a prototype 2016-03-02 07:25:19 +01:00
Joakim Nohlgård
4ff571beb2 apps/er-coap/er-coap-separate.h: fix warning: function declaration isn't a prototype 2016-03-02 07:12:33 +01:00
Joakim Nohlgård
9159903f5a apps/er-coap/er-coap-transactions.h: fix warning: function declaration isn't a prototype 2016-03-02 07:12:31 +01:00
Joakim Nohlgård
e32b46a866 core/lib/gcr.c: fix warning: function declaration isn't a prototype 2016-03-02 07:12:27 +01:00
Joakim Nohlgård
d7d836fda0 core/net/rpl/rpl.h: fix warning: function declaration isn't a prototype 2016-03-02 07:00:57 +01:00
Joakim Nohlgård
52e7ea9cc4 core/net/rpl/rpl-dag.c: fix warning: function declaration isn't a prototype 2016-03-02 07:00:57 +01:00
Joakim Nohlgård
2e47bf9cdc core/net/ipv6/sicslowpan.c: fix warning: function declaration isn't a prototype 2016-03-02 07:00:57 +01:00
Joakim Nohlgård
7c11034ab7 core/lib/trickle-timer.c: fix warning: function declaration isn't a prototype 2016-03-02 07:00:57 +01:00