mirror of
https://github.com/mmueller41/genode.git
synced 2026-01-22 04:52:56 +01:00
Compare commits
232 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c47cd5c94 | ||
|
|
44ce1b37c1 | ||
|
|
9a52a93c24 | ||
|
|
b2c59576ae | ||
|
|
7f8fe00cdc | ||
|
|
c0e8336e98 | ||
|
|
155e214a69 | ||
|
|
4911acedf5 | ||
|
|
01bd87e90b | ||
|
|
65f402807f | ||
|
|
d00cfd7cff | ||
|
|
701b1d41e8 | ||
|
|
8ae5c906d0 | ||
|
|
43a8118d2e | ||
|
|
ca850c787f | ||
|
|
4491c070be | ||
|
|
a97b8043b5 | ||
|
|
4967166811 | ||
|
|
cc2828cf3a | ||
|
|
1dd68ce04b | ||
|
|
23f3112e3e | ||
|
|
6894ced63b | ||
|
|
2a3cebdd6e | ||
|
|
66d5359d75 | ||
|
|
fa48054959 | ||
|
|
808ff3714e | ||
|
|
a98f78afd9 | ||
|
|
4c14af4d8a | ||
|
|
817ff6ca68 | ||
|
|
3c6fe6e741 | ||
|
|
bb5827b4e3 | ||
|
|
581785a48f | ||
|
|
65f75589e9 | ||
|
|
6e38b53001 | ||
|
|
354e310c87 | ||
|
|
2cff12e1fb | ||
|
|
55e99e16ef | ||
|
|
e499a04de7 | ||
|
|
abdf422681 | ||
|
|
fd8a209da2 | ||
|
|
15b27a1e9d | ||
|
|
b113f869bb | ||
|
|
6fb7022508 | ||
|
|
cc437a5eca | ||
|
|
312f801f8a | ||
|
|
8509687c8d | ||
|
|
ce633c0bba | ||
|
|
2fc6cedcc0 | ||
|
|
468270f6e9 | ||
|
|
32323abe8e | ||
|
|
1113c4f6a2 | ||
|
|
e855638266 | ||
|
|
f3a7d3750f | ||
|
|
1bdd18a196 | ||
|
|
0c20bb6ab9 | ||
|
|
d01cc3bf41 | ||
|
|
9cf5da85ef | ||
|
|
316f9e4df3 | ||
|
|
18e586daed | ||
|
|
1fdd5b636b | ||
|
|
b8ed80b7dd | ||
|
|
cb6377355e | ||
|
|
322bacd380 | ||
|
|
99cb585b6e | ||
|
|
0037edfeee | ||
|
|
a7fe4a502d | ||
|
|
ea2b330158 | ||
|
|
86cacd23bb | ||
|
|
85b1563e57 | ||
|
|
35c724512d | ||
|
|
ff07654560 | ||
|
|
695a212877 | ||
|
|
686dd8affd | ||
|
|
3acb509b9e | ||
|
|
874172ca76 | ||
|
|
114de7721f | ||
|
|
ceae637416 | ||
|
|
23c2606ce0 | ||
|
|
67a3c2ea4b | ||
|
|
2d03e622f1 | ||
|
|
b9f0318ab8 | ||
|
|
08ac64bba9 | ||
|
|
f018dac506 | ||
|
|
607fe83c63 | ||
|
|
f73c63900f | ||
|
|
2fad5eff95 | ||
|
|
1f56ffa51a | ||
|
|
ce149397ec | ||
|
|
a7835650e8 | ||
|
|
83ead086a1 | ||
|
|
91c8e70bef | ||
|
|
38dcdeeb04 | ||
|
|
1c77ea2b03 | ||
|
|
82d50912f6 | ||
|
|
4c113182b0 | ||
|
|
7ced122ddc | ||
|
|
6b09ac59f0 | ||
|
|
ee38504d81 | ||
|
|
dd505edd19 | ||
|
|
fa1aa33f83 | ||
|
|
907de9d37f | ||
|
|
5c7436bf10 | ||
|
|
0b77e8ea62 | ||
|
|
875858b2cc | ||
|
|
fe426e6f8f | ||
|
|
1e379cb3a9 | ||
|
|
ead385dd17 | ||
|
|
b87e21a392 | ||
|
|
04e8ba716c | ||
|
|
193a401097 | ||
|
|
53a83fb76e | ||
|
|
47e6d72bf2 | ||
|
|
91ce57848c | ||
|
|
22d7871e1d | ||
|
|
4189157d10 | ||
|
|
eaefcc2c6f | ||
|
|
92bdcbf1fe | ||
|
|
c011d54158 | ||
|
|
d782499541 | ||
|
|
59f9af23b9 | ||
|
|
70a236cccd | ||
|
|
d33bef2e49 | ||
|
|
fbae7767b4 | ||
|
|
17d32b3e15 | ||
|
|
6380ad1c80 | ||
|
|
0c3d3e7c8f | ||
|
|
3b0d694f42 | ||
|
|
c7e79030dd | ||
|
|
58a0f5c30b | ||
|
|
c92a9ce591 | ||
|
|
605f9abf96 | ||
|
|
e4412a3e56 | ||
|
|
1fe9b07c99 | ||
|
|
2da604a6e2 | ||
|
|
fc7b983a40 | ||
|
|
6399fc12ac | ||
|
|
db6e013577 | ||
|
|
71ce1442c8 | ||
|
|
5dd1abcc2d | ||
|
|
4dafdbd5b7 | ||
|
|
949130d80e | ||
|
|
4c8369ab1b | ||
|
|
fcdad00044 | ||
|
|
417191bdbd | ||
|
|
c00666b7e8 | ||
|
|
854a154fb4 | ||
|
|
7e7eff0eb7 | ||
|
|
48a361107f | ||
|
|
716453aaa1 | ||
|
|
63e69d35e0 | ||
|
|
a0c71cffd4 | ||
|
|
d1da5b9e16 | ||
|
|
52ec4526e1 | ||
|
|
e199acca05 | ||
|
|
cea842b256 | ||
|
|
984bddcedd | ||
|
|
d32e8390c2 | ||
|
|
57e650ef2c | ||
|
|
c34176580c | ||
|
|
807f5d9af1 | ||
|
|
d18f8eea2b | ||
|
|
8d62f21b40 | ||
|
|
7b1e3a9d63 | ||
|
|
070a24956d | ||
|
|
dec2d897c3 | ||
|
|
8625146011 | ||
|
|
24eea0b653 | ||
|
|
18b3253cac | ||
|
|
25484f870e | ||
|
|
ac0ecdf855 | ||
|
|
399487c85d | ||
|
|
bc14a32998 | ||
|
|
cf2c9f8d88 | ||
|
|
186c35bb09 | ||
|
|
3a2de0d9a3 | ||
|
|
1b489820a9 | ||
|
|
ef8140cce5 | ||
|
|
790a57041c | ||
|
|
e43b848ac8 | ||
|
|
59347d2560 | ||
|
|
2b14284e2b | ||
|
|
c107aba913 | ||
|
|
e337b844e5 | ||
|
|
90d07741aa | ||
|
|
87015df66c | ||
|
|
d9a0f76e7a | ||
|
|
0ecc48e6de | ||
|
|
efe0887247 | ||
|
|
3c4c460f82 | ||
|
|
ab3efc0a33 | ||
|
|
e1e67d8330 | ||
|
|
de4c31e557 | ||
|
|
5a59d295a4 | ||
|
|
fe5ada85cb | ||
|
|
b55358c535 | ||
|
|
1b059649ff | ||
|
|
45f3ccc42a | ||
|
|
4d34f9f9f4 | ||
|
|
62232f9a35 | ||
|
|
a25c656b1a | ||
|
|
ed0d76552b | ||
|
|
43315444a8 | ||
|
|
c055986e38 | ||
|
|
7ec37b2d8d | ||
|
|
64fac6cee7 | ||
|
|
12127a7bd2 | ||
|
|
eaed28f68d | ||
|
|
4a102fb58c | ||
|
|
ae7fbd6b1a | ||
|
|
72478a9e31 | ||
|
|
811410fdbb | ||
|
|
5738e53be2 | ||
|
|
be4d8b24e2 | ||
|
|
1f77f37310 | ||
|
|
7e174e73be | ||
|
|
ff23d665c6 | ||
|
|
00daecf838 | ||
|
|
f8f9f710e5 | ||
|
|
e77362e7b9 | ||
|
|
c58acbd444 | ||
|
|
e2c1ce2add | ||
|
|
fc1b7a626c | ||
|
|
a7825ef292 | ||
|
|
8dd391371c | ||
|
|
737e9580b8 | ||
|
|
a2abc13425 | ||
|
|
1daf179db9 | ||
|
|
6b48a08697 | ||
|
|
dc8a2ec523 | ||
|
|
46f89d143b | ||
|
|
8a4adceaf0 | ||
|
|
bbf7a6230e |
@@ -1 +1 @@
|
||||
https://depot.fuzzlabs.org
|
||||
https://depot.1337.cx
|
||||
|
||||
1
depot/mstein/download
Normal file
1
depot/mstein/download
Normal file
@@ -0,0 +1 @@
|
||||
https://depot.genode.org
|
||||
51
depot/mstein/pubkey
Normal file
51
depot/mstein/pubkey
Normal file
@@ -0,0 +1,51 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBFuhfGYBEADOj0EW/U2O3koeGIuNGDuBDSzkYjncoBrrPN1z69hgK349xiP7
|
||||
ZwrPBA0kJ3ctLcRQcOEDF5XJzjByuNk3JV6MuKFqwy2i9dDTHkv5pv7Na/R3L2CM
|
||||
k79weVahjPllt9nnbSMMtYH0eL187EhLW9owd0CY9wDj1lhLISHpyKvb9vwiUAwQ
|
||||
i+xypGgU+Qvf8BmfTDdjfP0n+Iw31z+R3xiHhWmhrs9gID2XVtGZIy9NQQrijJYS
|
||||
1Hp8hjgH9Fzmj0GkxUI+2mEqLeEp6wBmmo+7PRzc+iRYJNocyRxDbmdE0eyh3P93
|
||||
QABzZiWTU+Feq0MYa1FK55uFCFHe6MSFLq33CGYMzQ9oFQHjuEX1KqJT/OoumPgN
|
||||
iEb8Bt3XmqiI8GejafLKIW8gO8tYLABdrEpFelnyXy12IIOpOwb8GrxFUEu8+bDb
|
||||
Fc0YkV7cZ4NH2Kq/6/Or30gCA2XUpqhDNSxA6jer35a3ZzvgXvcRkNR/oOt+qt/3
|
||||
u9ew+e6Xjque0PRWzdavVlKdYWzSV8umVw5DGgQj/rSn+8spog/5w1lElyUa/5Yx
|
||||
Z+1bvOIyXPg+tTLimWtGRZQorak1sMsLMDqQck9SwOQWpSmVGsJ14uWXSMaZjdj9
|
||||
4rHSSymYlcQWP8t9lfPf6/ZSH8574PbbJSe71UXcWWznSGprSt2QQAQ7NwARAQAB
|
||||
tCtNYXJ0aW4gU3RlaW4gPG1hcnRpbi5zdGVpbkBnZW5vZGUtbGFicy5jb20+iQI+
|
||||
BBMBAgAoBQJboXxmAhsDBQkDwmcABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK
|
||||
CRDJZVRAR8NPkiTSD/9xiUVNgKTkmH9WRdCcaHuyhKoQI6CsWnMOW5OZ+gVXPc9U
|
||||
LapQ5Wymb+yGE8Uyn4EJnwdEa8TdWztMs3TNtK5vh1Pk1lKmtKcblBiDrUPEURhR
|
||||
mUBoUkMe2VDXyN27e0lkbxcFJ0HrYnhvb72Yfnw6B3XMa/NIhbOU3ttB/tVR6Kjl
|
||||
YVDtTokfILQc07Ai+TqkqNARtPGntHAn9qFvPLNKI31c+Xw/QGZbVPNFW1QAYBiO
|
||||
5dqsSwKaouapHAb0GBmU0fAfJZNcvwt9Ph7WDXU9Ce3LZmIshGW7Gzm7EGdf4VS6
|
||||
k4OtEWZhZHRnl9/sBJ2UlQU0tFs3ow53aDZQIa4FKd4JKabBeRgDUKCGEyfoNKCq
|
||||
NKkLZaR/kFA9EqTPZSIXPLYIzIlSFoL3LVDOc5O7hDT9vXaubdZeAfE9VcHDdm3u
|
||||
usW034F0zbsuu4G83qZ6QhDOp0UhujfSU+BDkH0I+OfFyVkQAmy69J3byi7Iluno
|
||||
OcZM13rbe30jzyyyWAnjHicAt8tNwCLMmnIRvYT9ELqywID0Zzxkct61eJQ6L6aq
|
||||
/DnUD9Kq0OwdxC1wMGtimX5eUnN7S7y5+TMRepJnWcTtgrLBVqwRrvSLnsKVd4Gb
|
||||
Bu3dSs+BxMV1UcyU0KWwDPY2D7k8SGgeH7IEPo/JiGO8RrWYJRac9qel9egMYbkC
|
||||
DQRboXxmARAAoaRH/xgKvp0QrNFJZBW12SdXT4h1nXglbpZd+bUl738LqM2JSIC5
|
||||
Qq7t2DUtOiL9UxqvRgAIjkVLR+hHJBZyuPOP5Ebaf3Mr7eAdmCx2TMsHZPKBLnTy
|
||||
EqeUcnPwThNKcUaGsQYlkxIQAJtPzy3YBuDCYnzzSi6KzP3VC8szHsXcPo2DeKWI
|
||||
m9BbMMSQkB3m0fz8W3ar/64RDoubRWRJ07b7q4WUb4jPvql+Tz+Gv5x3qm8g6m1j
|
||||
uD+U5OhGCe3m5/MsI2JYdWXEwif8YD59gylsj3LJIu3i4SkR8aS+x6n3LIvdSCOt
|
||||
P3To87wfoSqBWWObVe/vOHRXqpzEF6T/ih/rkhUFzrHNMziTPsujBazm82AUZ6xi
|
||||
2TddbdSAK+ZpSPQjyyRflNyNgv0iu6P3BnBgv0Xcuf2RsDMBDjdvHtX0lXkPMB+r
|
||||
6jgxl0faV6UktH5R2d4Zt9i0/vWlZZd0MDylPNQDiKs+qSIX3ntfUUaPdEJqYAwM
|
||||
gloXr3cZtsVh+Yoqt8pa4x0x6kqez+oyBUFf6y1FCKYq2H/QfPRkF/DrfZS+7jXW
|
||||
iAX8PcrDceCN6Dr10/g5LPWXQOHUWxCu7FEYoYJsVXst4N0FnCOCe/OGYIhMteSV
|
||||
IJJvNS4qwXZKKZ+cmuT9skEQ6zsLV9+VDYMwVqXB4wTp4EwT2pCp6LEAEQEAAYkC
|
||||
JQQYAQIADwUCW6F8ZgIbDAUJA8JnAAAKCRDJZVRAR8NPktRiD/9qjH6uuT1y5uNA
|
||||
4E8u6/vxZGsyBG57dtnQ0KQbcsZSrUxMiDTtMMrklsl2vtut/XDroajm+d2eaQ4K
|
||||
j0h285VRkT5xJ79JaIQ8oyzRWBtpENy0iLUm7CmqCMuH8VFifZyEBYZgR/K+9ago
|
||||
WwF3sk0QP0WJTFqIZajKK0Lo5Juk8DCXjvtkvGNytHkZ2vEkiZ9m7Eq0AjQnts5T
|
||||
PdHkob7Z8fu0KfUMoCUtb+TzNyMYOVGE6uTfo8wKvbhwzUWSymZkrecx73XUUmew
|
||||
MdZ2WzwGdUMXwcBZ4LvgrZVg+LKxR1lyJ+qbIUpDKXCZGGH2VZVaQspgnx2Yt0EI
|
||||
Zl2ELMrTq5IcOkxtblEZpQkwaXszqUDNO43ezp/PmbTRWChoM/k3RAbp9rvoYx93
|
||||
UChyRXpJRaqDxK502k3BSnOfmolpQvxTMKtLZO50URa0F0F4qD2csns4QrqOWsGr
|
||||
qPqVKcLn8Q/yMW9fm5+xX+ZHICKk64GAB0YyHcw9lOWekLhGzZV1KnD5ID6+5E0B
|
||||
nsWZB6PDqLM+/ykXh0rcN8DWwZvhimI5/dOEIWIkADKT8WGwh+2JnRyimhxYdaiH
|
||||
ul1BvZAYqF1FVXAHd0u48MssLywGGbW4fH8D9SM+LFpP4+8oYFLNgH1OreMENuag
|
||||
i47EaxpnQUgIt8PZ/gL3LeiGs8SNpw==
|
||||
=flyM
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
@@ -482,13 +482,7 @@ Libraries:
|
||||
:'libports/lib/mk/libc':
|
||||
C runtime ported from FreeBSD.
|
||||
|
||||
:'libports/lib/mk/libc_lwip_nic_dhcp':
|
||||
Translates the BSD socket API to a NIC session using the lwIP stack.
|
||||
|
||||
:'dde_linux/lib/mk/libc_lxip':
|
||||
Translates the BSD socket API to a NIC session using the Linux TCP/IP stack.
|
||||
|
||||
:'libports/lib/mk/libc_ffat':
|
||||
:'libports/lib/mk/libc_fatfs':
|
||||
Accesses files on a block device that contains a FAT32 file system.
|
||||
|
||||
:'libports/lib/mk/libc_fuse_exfat':
|
||||
@@ -497,10 +491,6 @@ Libraries:
|
||||
:'libports/lib/mk/libc_fuse_ext2':
|
||||
Accesses files on a block device that contains an ext2 file system.
|
||||
|
||||
:'libports/lib/mk/libc_terminal':
|
||||
Connects the standard input and output from/to Genode's terminal session
|
||||
interface.
|
||||
|
||||
:'libports/lib/mk/stdcxx':
|
||||
Standard C++ library
|
||||
|
||||
|
||||
@@ -53,14 +53,15 @@ architecture independent from the underlying base platform, in this case Linux.
|
||||
To give Genode a try, build and execute a simple demo scenario via:
|
||||
|
||||
! cd build/x86_64
|
||||
! make KERNEL=linux run/demo
|
||||
! make KERNEL=linux BOARD=linux run/demo
|
||||
|
||||
By invoking 'make' with the 'run/demo' argument, all components needed by the
|
||||
demo scenario are built and the demo is executed. This includes all components
|
||||
which are implicitly needed by the base platform. The base platform that the
|
||||
components will be executed upon on is selected via the 'KERNEL' variable. If
|
||||
you are interested in looking behind the scenes of the demo scenario, please
|
||||
refer to 'doc/build_system.txt' and the run script at 'os/run/demo.run'.
|
||||
components will be executed upon on is selected via the 'KERNEL' and 'BOARD'
|
||||
variables. If you are interested in looking behind the scenes of the demo
|
||||
scenario, please refer to 'doc/build_system.txt' and the run script at
|
||||
'os/run/demo.run'.
|
||||
|
||||
|
||||
Using platforms other than Linux
|
||||
@@ -112,7 +113,7 @@ steps are required:
|
||||
# Uncomment the following line in 'x86_32/etc/build.conf'
|
||||
! REPOSITORIES += $(GENODE_DIR)/repos/libports
|
||||
# Build and execute the demo using Qemu
|
||||
! make -C build/x86_32 KERNEL=okl4 run/demo
|
||||
! make -C build/x86_32 KERNEL=okl4 BOARD=pc run/demo
|
||||
|
||||
The procedure works analogously for the other base platforms. You can, however,
|
||||
reuse the already created build directory and skip its creation step if the
|
||||
|
||||
47
doc/news.txt
47
doc/news.txt
@@ -3,6 +3,53 @@
|
||||
Genode News
|
||||
===========
|
||||
|
||||
Genode OS Framework release 19.08 | 2019-08-28
|
||||
##############################################
|
||||
|
||||
| Genode 19.08 puts emphasis on practical concerns ranging from
|
||||
| keyboard layouts, over system-time management, to remote system
|
||||
| administration. It also continues our commitment to the 64-bit ARM
|
||||
| i.MX8 SoC, comes with Qt5 version 5.13, and improves POSIX compatibility.
|
||||
|
||||
The summer release of Genode addresses a variety of topics when using Genode
|
||||
and Sculpt OS in practice. The confrontation with the real world prompted us
|
||||
to develop new concepts for managing system time, keyboards layouts, and
|
||||
copy-and-paste. For using Sculpt OS on the road, a new application VM for
|
||||
accessing captive portals smoothes the experience of connecting to public WiFi
|
||||
networks.
|
||||
|
||||
Besides the practical focus, the new release continues our commitment to the
|
||||
64-bit ARM i.MX8 platform through new kernel support, device drivers, and test
|
||||
coverage. Further topics include SMBIOS support for commodity PC hardware, a
|
||||
new tracing tool, enhanced POSIX compatibility, and a major update of Qt5 to
|
||||
version 5.13.
|
||||
|
||||
The complete picture is presented in the
|
||||
[https:/documentation/release-notes/19.08 - release documentation of version 19.08...]
|
||||
|
||||
|
||||
Sculpt OS release 19.07 | 2019-07-09
|
||||
####################################
|
||||
|
||||
| Version 19.07 of the Sculpt operating system improves overall performance
|
||||
| and introduces copy and paste between terminals, virtual machines, and
|
||||
| graphical applications.
|
||||
|
||||
The most prominent user-visible feature of Sculpt OS 19.07 is the ability
|
||||
of copy and paste text between terminals, graphical applications, and
|
||||
virtual machines. Our unique take on this feature is described in
|
||||
a [https://genodians.org/nfeske/2019-07-03-copy-paste - dedicated article].
|
||||
|
||||
Under the hood, Sculpt 19.07 benefits from the massive infrastructure
|
||||
improvements that came with
|
||||
[https://genode.org/documentation/release-notes/19.05 - Genode 19.05],
|
||||
yielding a smoother user experience compared to earlier versions.
|
||||
|
||||
The new release can be obtained from the
|
||||
[https://genode.org/download/sculpt - Sculpt download page] and is
|
||||
accompanied by updated
|
||||
[https://genode.org/documentation/articles/sculpt-19-07 - documentation].
|
||||
|
||||
|
||||
Genode OS Framework release 19.05 | 2019-05-29
|
||||
##############################################
|
||||
|
||||
681
doc/release_notes-19-08.txt
Normal file
681
doc/release_notes-19-08.txt
Normal file
@@ -0,0 +1,681 @@
|
||||
|
||||
|
||||
===============================================
|
||||
Release notes for the Genode OS Framework 19.08
|
||||
===============================================
|
||||
|
||||
Genode Labs
|
||||
|
||||
|
||||
|
||||
The stated theme of this year's [https://genode.org/about/road-map - road map]
|
||||
is "bridging worlds", which expresses our ambition to smoothen the practical
|
||||
use of Genode-based systems such as Sculpt OS. The current release pays
|
||||
tribute to this ambition by addressing a great number of practical concerns:
|
||||
How to accommodate the staggering variety of keyboard layouts out there?
|
||||
(Section [Flexible keyboard layouts])
|
||||
How can the system gracefully respond when confronted with exotic USB devices?
|
||||
(Section [Storage-stack improvements])
|
||||
How to set the system time from within the system? How does SNTP fit in here?
|
||||
(Section [General system time concept])
|
||||
How to approach the remote administration of the system?
|
||||
(Section [Enhanced SSH terminal])
|
||||
How to copy and paste text securely between mutually distrusting subsystems?
|
||||
(Section [Clipboard])
|
||||
Or how to overcome the captive portal of a Hotel WiFi with Sculpt OS?
|
||||
(Section [Disposable VM for handling captive portals])
|
||||
By providing answers to those questions, we believe to make Genode - and Sculpt
|
||||
OS in particular - generally more useful.
|
||||
|
||||
As another take on "bridging worlds", we continue our effort to bring the rich
|
||||
Sculpt OS software stack to the 64-bit ARM world, in particular to our most
|
||||
loved SoC family, namely NXP i.MX. Section [64-bit ARM and NXP i.MX8] reports
|
||||
on our progress in this direction.
|
||||
|
||||
Under the hood, there are a few exciting developments that will greatly reduce
|
||||
the effort of running existing software on Genode. In particular, Genode's
|
||||
(entirely optional) C runtime has gained the ability to emulate the
|
||||
traditional execve and fork mechanisms.
|
||||
(Section [Consolidation of the C runtime and Noux]) This will eventually
|
||||
alleviate the need for our present noux runtime environment to the benefits of
|
||||
better performance and increased flexibility.
|
||||
|
||||
Further highlights of Genode 19.08 are a major update of Qt5 to version 5.13
|
||||
(Section [Updated Qt5]) and the continuation of our kernel-agnostic
|
||||
virtualization story (Section [Virtualization]).
|
||||
|
||||
|
||||
Flexible keyboard layouts
|
||||
#########################
|
||||
|
||||
Genode is used worldwide in a multilingual context beyond Germany and common
|
||||
technical realms of English. Therefore, we had to address localized
|
||||
keyboard-input handling for quite some time now and introduced the
|
||||
_input-filter_ component in
|
||||
[https://genode.org/documentation/release-notes/17.02#Input-event_filter - 17.02].
|
||||
The component merges input streams and applies several forms of input
|
||||
transformations, in particular the application of keyboard layouts to
|
||||
supplement the input-event stream with character events.
|
||||
|
||||
But as we are by no means localization experts, our solution, while performing
|
||||
a solid job for selected layouts, also had some quirks and rough edges when it
|
||||
came to French or even Swiss German. First, our oversimplified notion of
|
||||
[https://en.wikipedia.org/wiki/Caps_Lock - Caps Lock] as _just a pressed Shift_
|
||||
_key_ is plain wrong but part of all our character-generator configurations.
|
||||
We just missed this drawback because none of our developers uses Caps Lock
|
||||
regularly. Further, US English and Germany layouts work very well without
|
||||
[https://en.wikipedia.org/wiki/Dead_key - dead keys], but crossing any German
|
||||
border (except the Austrian) is impossible without support for key sequences
|
||||
composing special characters. The French keyboard layout in Genode tried to
|
||||
alleviate the lack of compose sequences by adding an additional Circumflex
|
||||
modifier and character mapping, which unfortunately is not standard.
|
||||
|
||||
[image keyboard_stack]
|
||||
|
||||
Beginning at this state of affairs, we researched common practice in
|
||||
international keyboard-input handling, sought a quasi-standard source for
|
||||
layout configurations, and addressed the drawbacks mentioned before. During
|
||||
our research we found out that no current implementation is void of critique
|
||||
and, therefore, decided to look more into X11/XKB as our open-source
|
||||
quasi-standard solution, but always had an eye on the proprietary world.
|
||||
|
||||
The handling of key events in X11/XKB happens on three layers.
|
||||
|
||||
:Key codes: On the key-code layer, the device driver programs the
|
||||
keyboard and generates a stream of key-code (i.e., scan-code)
|
||||
events, which represent the physical location of the actual key on
|
||||
the keyboard.
|
||||
|
||||
:Key symbols: These key codes are mapped to key symbols, which
|
||||
represent the label imprinted on the key. So, the key code producing
|
||||
US English _Q_ (QWERTY keyboard) generates _A_ on a French keyboard
|
||||
(AZERTY). Modifiers like Shift, AltGr, and Caps Lock are included in
|
||||
the key-symbol mapping. Additionally, some layouts map key codes to
|
||||
dead key symbols, which start the before-mentioned compose
|
||||
sequences. Key repeat is also implemented as key-symbol repeat
|
||||
actually.
|
||||
|
||||
:Characters: On top of this stack, the key symbols are mapped to
|
||||
characters represented as Unicode codepoints or UTF-8 strings.
|
||||
The procedure obviously includes key symbols that have no character
|
||||
representation (e.g. Control and Alt). Key symbols forming a valid compose
|
||||
sequence generate characters on this level (e.g., dead-key circumflex plus
|
||||
e generates ê).
|
||||
|
||||
We limited our research to Western keyboard-input handling and only had a
|
||||
blink into the direction of Chinese-Japanese-Korean (CJK) and advanced input
|
||||
methods (IM). This simplification is supported by the fact that CJK can also
|
||||
be based on the mechanisms mentioned with some limitations only. Nevertheless,
|
||||
we do not expect to never touch this topic again.
|
||||
|
||||
After doing our homework of keyboard-input handling, we worked on squeezing
|
||||
all available layout information out of X11/XKB, which resulted in a small
|
||||
tool residing in _tool/xkb2ifcfg_. For those wondering, the name is just a
|
||||
silly acronym for _XKB to input-filter_ _configuration_ that pays tribute to
|
||||
the boringness of this task. After building the tool by a run of 'make' in the
|
||||
tool path, it can be used as follows. Please make sure you have libxkbcommon
|
||||
development packages installed beforehand.
|
||||
|
||||
! xkb2ifcfg generate <layout> <variant> <locale>
|
||||
!
|
||||
! xkb2ifcfg generate us euro en_US.UTF-8
|
||||
! xkb2ifcfg generate de nodeadkeys de_DE.UTF-8
|
||||
|
||||
If the parameter combination is available, xkb2ifcfg prints a input-filer
|
||||
chargen configuration for the selected layout to standard output. Valid
|
||||
'layout' and 'variant' options can be figured out from the LAYOUTS section in
|
||||
'man 7 xkeyboard-config', where 'variant' strings are depicted in parentheses
|
||||
after the layout (e.g., 'us(euro)'). The 'locale' option has the standard
|
||||
locale syntax (see /usr/share/i18n/locales). The tool needs all three
|
||||
parameters to gather the correct key-map and compose-sequence information. The
|
||||
generated chargen configurations include '<map>' and '<key>' nodes
|
||||
corresponding to significant modifier states and '<sequence>' nodes (described
|
||||
later). For simplicity of the generator, the '<key>' nodes always use the
|
||||
'code="..."' attribute, but also have a comment with the UTF-8 character
|
||||
appended.
|
||||
|
||||
! <key name="KEY_MINUS" code="0x00df"/> <!-- ß -->
|
||||
|
||||
Last, we addressed the improvement of the input-filter character generator and
|
||||
the actual chargen configuration files in Genode. Therefore, we specified the
|
||||
modifier configuration assumed by the standard chargen files as '<mod1>'
|
||||
corresponds to Shift, '<mod2>' to Control, '<mod3>' to AltGr, and '<mod4>' to
|
||||
Caps Lock.
|
||||
|
||||
! <mod1> <key name="KEY_LEFTSHIFT"/> <key name="KEY_RIGHTSHIFT"/> </mod1>
|
||||
! <mod2> <key name="KEY_LEFTCTRL"/> <key name="KEY_RIGHTCTRL"/> </mod4>
|
||||
! <mod3> <key name="KEY_RIGHTALT"/> </mod4> <!-- AltGr -->
|
||||
! <mod4> <rom name="capslock"/> </mod4>
|
||||
|
||||
As outlined above, the '<key>' nodes generated by xkb2ifcfg always use the
|
||||
'code' attribute for the Unicode codepoint. Because of this and because UTF-8
|
||||
also refers to codepoints, we deprecated the 'b0/b1/b2/b3' attributes for
|
||||
character definition with this release.
|
||||
|
||||
The chargen is also extended by the '<sequence>' configuration node. A
|
||||
sequence node permits the definition of dead-key/composing character
|
||||
sequences. With such sequences, the character is not generated instantly on
|
||||
key press but only after the sequence is completed. If an unfinished sequence
|
||||
can't be completed due to an unmatched character, the sequence is aborted and
|
||||
no character is generated. We support sequences of up to four characters at
|
||||
the moment.
|
||||
|
||||
For example, the French AZERTY
|
||||
[https://docs.microsoft.com/en-us/globalization/keyboards/kbdfr.html - keyboard layout]
|
||||
has a dead key for Circumflex Accent _^_ right of the _P_ key (which is
|
||||
bracket left _[_ on US keyboards). When Circumflex is pressed no visible
|
||||
character should be generated instantly but the accent must be combined with a
|
||||
follow-up character (e.g., Circumflex plus _a_ generates _â_).
|
||||
|
||||
Dead keys can be defined in the '<key>' nodes of any '<map>' by using
|
||||
codepoints not used for direct output, for example, Combining Diacritical
|
||||
Marks beginning at U+0300. The French Circumflex example can be configured
|
||||
like follows.
|
||||
|
||||
! <mod1>
|
||||
! <key name="KEY_LEFTSHIFT"/> <key name="KEY_RIGHTSHIFT"/>
|
||||
! </mod1>
|
||||
! <map>
|
||||
! <key name="KEY_Q" code="0x0061"/> <!-- a -->
|
||||
! <key name="KEY_LEFTBRACE" code="0x0302"/> <!-- dead_circumflex -->
|
||||
! </map>
|
||||
! <map mod1="true">
|
||||
! <key name="KEY_Q" code="0x0041"/> <!-- A -->
|
||||
! </map>
|
||||
! <sequence first="0x0302" second="0x0061" code="0x00e2"/> <!-- â -->
|
||||
! <sequence first="0x0302" second="0x0041" code="0x00c2"/> <!-- Â -->
|
||||
|
||||
Fortunately, the configuration is automatically generated by xkb2ifcfg, but
|
||||
admittedly quite extensive. Therefore, we manually amended the chargen
|
||||
configurations before adding them to Genode, which also gave us the chance to
|
||||
apply some adjustments like follows for AltGr in Swiss German.
|
||||
|
||||
! <map mod1="false" mod2="false" mod3="true" mod4="false">
|
||||
! <key name="KEY_1" code="0x00a6"/> <!-- ¦ (*) -->
|
||||
! <key name="KEY_4" code="0x00b0"/> <!-- ° (*) -->
|
||||
! <key name="KEY_5" code="0x00a7"/> <!-- § (*) -->
|
||||
! </map>
|
||||
|
||||
|
||||
Beside the advanced input methods mentioned before, there are still loose ends
|
||||
we are going to address in the upcoming releases. For example, the current key
|
||||
handling in our Qt5 back end maps localized key symbols incorrectly (think
|
||||
AZERTY vs. QWERTY) in combination with shortcuts like Ctrl-A.
|
||||
|
||||
|
||||
64-bit ARM and NXP i.MX8
|
||||
########################
|
||||
|
||||
64-bit ARM support in our custom base-hw kernel
|
||||
-----------------------------------------------
|
||||
|
||||
By introducing rudimentary Raspberry Pi 3 support on top of the Fiasco.OC
|
||||
kernel in the previous release, the first ARM 64-bit support has entered the
|
||||
Genode OS framework. We continued pursuing the ARM 64-bit path and introduce
|
||||
support for Raspberry Pi 3 as well as the i.MX8 evaluation kit (EVK), this
|
||||
time using our own base-hw kernel.
|
||||
|
||||
Noteworthy additions in the base-hw kernel are support for the AARCH64 system
|
||||
level architecture, and the use of the modern GIC v3 interrupt controller on
|
||||
top of the i.MX8 EVK board. In comparison to the GICv2, GICv3 adds support for
|
||||
more than eight CPUs, more than 1020 interrupt IDs, and offers fast register
|
||||
access to the CPU interface, instead of memory-mapped I/O access. Minor
|
||||
changes had to be made to the page-table implementation of ARMv7 with Large
|
||||
Physical Address Extension (LPAE) to re-use it for ARMv8. Moreover, the
|
||||
internal kernel API for TLB maintenance needed to be changed slightly for all
|
||||
ARM platforms.
|
||||
|
||||
We expanded our regular testing infrastructure with two AARCH64 platforms,
|
||||
namely Raspberry Pi 3 via Qemu and the NXP i.MX8 EVK board as physical
|
||||
hardware. Both platforms are driven with a single CPU core only at the moment.
|
||||
|
||||
|
||||
Network driver for i.MX7 and i.MX8
|
||||
----------------------------------
|
||||
|
||||
We updated the 'fec' network driver to version 4.16.3, which adds support for
|
||||
i.MX7 and i.MX8 SoCs. This makes i.MX8 a viable platform for Genode-based
|
||||
networking scenarios.
|
||||
|
||||
|
||||
Enhanced packaging and test infrastructure for ARMv8
|
||||
----------------------------------------------------
|
||||
|
||||
Besides the improved base-hw kernel, we enabled additional infrastructure for
|
||||
ARMv8 platforms. For example, noux packages - like _coreutils_, _bash_ - are
|
||||
now available, the standard C++ library is in place, and support for Genode's
|
||||
port of the Linux TCP/IP stack is enabled.
|
||||
|
||||
Additionally, ARMv8 is now regularly tested within our nightly
|
||||
_depot_autopilot_ runs.
|
||||
|
||||
|
||||
Base framework and OS-level infrastructure
|
||||
##########################################
|
||||
|
||||
Tracing
|
||||
=======
|
||||
|
||||
Support for fast tracing has been built into Genode for a long time. However,
|
||||
the stakes to take advantage of this feature remained high because convenience
|
||||
functions were not in place. With the current release, we added the support
|
||||
for easy trace setups through a VFS plugin. The plugin is called _vfs_trace_
|
||||
and can be mounted into a Genode component as follows:
|
||||
|
||||
!<config>
|
||||
! <vfs>
|
||||
! <trace ram=32MB/>
|
||||
! </vfs>
|
||||
!</config>
|
||||
|
||||
This configuration will create a trace file system at the root of the VFS. The
|
||||
_ram_ attribute is mandatory and determines the maximum size of all trace
|
||||
buffers. The file system forms a recursive directory structure that represents
|
||||
the parent/child relationship of running components, whereas the leaf
|
||||
directories represent single threads within a component. Each leaf directory
|
||||
currently contains three files:
|
||||
|
||||
:'enable': Start or stop the tracing of a thread by writing "true" or "false"
|
||||
into the file.
|
||||
|
||||
:'buffer_size': Allows for the configuration of the trace-buffer size for the
|
||||
thread in the usual Genode format (e.g. 5M, 512K, 1024).
|
||||
|
||||
:'trace_buffer': This read-only file contains the current content of the trace
|
||||
buffer. Each trace entry can only be read once, after that only new entries
|
||||
appear. "tail -f" can also be used to display continuous output.
|
||||
|
||||
As an example, tracing is started by writing _true_ to the _enable_ file:
|
||||
|
||||
! echo "true" > enable
|
||||
|
||||
The trace buffer can then be displayed using Unix tools like _tail_
|
||||
|
||||
! tail -f trace_buffer
|
||||
|
||||
which provides a continuous output.
|
||||
|
||||
Additionally, we have added the _trace_ function to _base/log.h_ that
|
||||
facilitates identical functionality as _Genode::log_
|
||||
|
||||
! Genode::trace("Tracepoint value: ", value);
|
||||
|
||||
In order to enable tracing, the parent must provide the "TRACE" service. For a
|
||||
real world example on Sculpt OS, please refer to this
|
||||
[https://genodians.org/ssumpf/2019-06-18-trace_fs - Genodians article].
|
||||
|
||||
With the _vfs_trace_ plugin in place, we removed the outdated _trace_fs_.
|
||||
|
||||
|
||||
Consolidation of the C runtime and Noux
|
||||
=======================================
|
||||
|
||||
On our [https://genode.org/about/road-map#August_-_Release_19.08 - road map],
|
||||
we vaguely hinted at our plan for the "consolidation" of the noux runtime,
|
||||
which is actually meant as a polite way of announcing that we are going to
|
||||
remove it. We introduced the
|
||||
[https://genode.org/documentation/release-notes/11.02#Noux_-_an_execution_environment_for_the_GNU_userland - Noux runtime]
|
||||
in 2011 as a way to execute command-line-based GNU software directly on
|
||||
Genode. It has served us well over the years and is - in fact - a crucial
|
||||
ingredient of Sculpt OS and other system scenarios such as the Genodians.org
|
||||
web server. Noux supplements Genode with two valuable assets, namely a
|
||||
flexible and expandable virtual file system (VFS) layer, and the
|
||||
implementation of the
|
||||
[https://genode.org/documentation/release-notes/12.02#Noux_support_for_fork_semantics - Unix way]
|
||||
to spawn applications ('fork' and 'execve').
|
||||
|
||||
In the
|
||||
[https://genode.org/documentation/release-notes/17.02#Enhanced_VFS_infrastructure - meantime],
|
||||
noux' VFS implementation has become independent from the noux runtime and is
|
||||
now prominently employed by Genode's C runtime and the VFS server component.
|
||||
Genode's C runtime became more and more complete, alleviating the use of noux
|
||||
as POSIX compatibility layer except for programs that depended on a working
|
||||
implementation of 'fork' and 'execve'.
|
||||
|
||||
The current release fills this remaining gap in Genode's C runtime by
|
||||
providing 'fork', 'execve', and cousins such as 'wait4' and 'getpid' as
|
||||
regular parts of the libc. This will eventually make noux redundant.
|
||||
|
||||
Note that this change does *NOT* make Genode reliant on POSIX. The C runtime
|
||||
including the Unix features are entirely optional.
|
||||
|
||||
As one stepping stone of this undertaking, noux applications, which previously
|
||||
had to be compiled for noux, have become binary compatible with the regular C
|
||||
runtime. So one can execute programs like 'bash' directly as a Genode
|
||||
component without any friction.
|
||||
|
||||
There are a few collateral improvements of Genode's dynamic linker and the C
|
||||
runtime on the account of the new 'fork' and 'execve' implementation. E.g., in
|
||||
addition to the already supported 'stdin', 'stdout', and 'stderr'
|
||||
configuration, the libc can be instructed to initialize arbitrary file
|
||||
descriptors as follows:
|
||||
|
||||
! <config>
|
||||
! ...
|
||||
! <libc ...>
|
||||
! <fd id="3" path="/dev/log" writeable="yes" readable="no" seek="10"/>
|
||||
! ...
|
||||
! </libc>
|
||||
! </config>
|
||||
|
||||
The libc-based implementation of 'fork' and 'execve' can be tried out via
|
||||
the new _ports/run/bash.run_ script. Note that there are still a number of
|
||||
limitations such as the lack of signal and ioctl handling. Pipes are not
|
||||
supported, and shebangs ('#!') are not interpreted yet. That said, once those
|
||||
missing pieces come into place, we can fade out the use of noux within Genode.
|
||||
|
||||
|
||||
General system time concept
|
||||
===========================
|
||||
|
||||
Briefly speaking, up to now there has been no notion of an overall concept of
|
||||
system time in Genode. Components that need to have access to some kind of
|
||||
real time are either configured locally, e.g., libc-based components access a
|
||||
configured "device" (/dev/rtc), which just might be an inline file system
|
||||
containing an artificial timestamp or the VFS RTC plugin, while other
|
||||
components query some RTC session directly. Most of the time, this session is
|
||||
provided by the 'rtc_drv' on x86 machines, which is somewhat costly as reading
|
||||
the RTC via I/O ports takes time and is therefore done scarcely. For example,
|
||||
the libc will query an RTC source only once and uses this initial value to
|
||||
interpolate the current time. However, for executing long-running components,
|
||||
it will be necessary to adjust the clock to compensate for any occurring clock
|
||||
drift or to correct a misconfigured clock in general. In addition it is
|
||||
desirable to be able to use a remote time source, e.g., an NTP-server, to
|
||||
synchronize the system time.
|
||||
|
||||
To address this, we came up with the following concept:
|
||||
|
||||
[image system_rtc]
|
||||
|
||||
The new "System RTC" component, located at
|
||||
_repos/libports/src/server/system_rtc_, acts as proxy for the RTC service in
|
||||
front of the actual RTC driver. It uses the driver to get the initial RTC
|
||||
value and then uses a timer session (via the timeout framework) to locally
|
||||
interpolate the time. In contrast to querying the RTC driver, querying the
|
||||
System RTC is fast.
|
||||
|
||||
The RTC driver and the System RTC are bundled up together in the new
|
||||
_drivers-rtc-pc_ package. The runtime of this package requests two ROM modules
|
||||
used to update the RTC value. The first one, named 'system_set_rtc', is used
|
||||
to update the proxy component while the second one, called 'hw_set_rtc', is
|
||||
used by the RTC driver to write the value into the battery-backed RTC. A
|
||||
separate component, potentially accessing a remote time source, may generate
|
||||
these ROMs to adjust the time in the package's runtime.
|
||||
|
||||
The new native *SNTP* client at _repos/libports/src/app/sntp_client_ is such a
|
||||
component. It periodically requests the current time from a given SNTP server
|
||||
and generates a report. The report produced by the component contains the time
|
||||
as UTC/GMT. Depending on the system policy, it can be used to update the time
|
||||
of the System RTC and/or instruct the driver to set the RTC value.
|
||||
|
||||
To propagate such changes to RTC values, the RTC session was enhanced by the
|
||||
new 'set' signal. A client of the session can install a signal handler to
|
||||
adapt its own time when necessary. Based on this, the time back end of the
|
||||
libc was changed to instantiate a watch handler for the RTC device, which,
|
||||
when triggered, will cause the libc to re-read the RTC value.
|
||||
|
||||
This constellation should, under normal operation, allow for second to
|
||||
sub-second granularity updates of the overall system time and avoid drifting
|
||||
away from network time.
|
||||
|
||||
|
||||
Accessing SMBIOS tables
|
||||
=======================
|
||||
|
||||
The System Management BIOS (SMBIOS) is a specification that allows for reading
|
||||
management information produced by the BIOS of a system as a collection of
|
||||
data structures in memory. It has the potential to eliminate the need for the
|
||||
operating system to probe hardware for discovering present devices and their
|
||||
characteristics. Nowadays, the SMBIOS specification is implemented widely in
|
||||
PC systems, which includes modern UEFI systems as well. The data structures
|
||||
are referred to as _tables_ or _records_ by public documentation.
|
||||
|
||||
The new native SMBIOS decoder at _os/src/app/smbios_decoder_ can be used on
|
||||
x86 to parse SMBIOS tables and report gathered information in a human-readable
|
||||
way. Besides general table information like number and size of structures,
|
||||
etc., the component supports complete parsing of SMBIOS structures of types
|
||||
"BIOS", "System", and "Baseboard".
|
||||
|
||||
The component is free from any code for acquiring an SMBIOS table through
|
||||
means like the bootloader or BIOS information. It expects a table to be
|
||||
present through a regular Genode ROM session with a 'smbios_table' label. This
|
||||
way, the underlying system is required to find, select, and save the raw table
|
||||
on startup and create a ROM module out of it. This is currently achieved on
|
||||
NOVA and base-hw through an interplay of kernel, the core component, and the
|
||||
ACPI driver and was tested for legacy BIOSes as well as UEFI systems.
|
||||
|
||||
|
||||
Clipboard
|
||||
=========
|
||||
|
||||
Genode introduced a principle copy-and-paste mechanism already
|
||||
[https://genode.org/documentation/release-notes/15.11#Copy_and_paste - four years ago].
|
||||
However, originally created as a part of a tech demo, the mechanism remained
|
||||
unused in our day to day Genode work. This changed now. We took the
|
||||
integration of copy-and-paste support in Sculpt OS as an opportunity to revive
|
||||
and refine the existing mechanism and supplement it with the features needed
|
||||
to make it practical for daily use. We believe that the result aligns ease of
|
||||
use nicely with security. The concept is described in a
|
||||
[https://genodians.org/nfeske/2019-07-03-copy-paste - dedicated article]
|
||||
at Genodians.org.
|
||||
|
||||
On a technical level, the existing clipboard component has received a new
|
||||
option that allows for dynamic information-flow policies based on user
|
||||
interactivity (keyboard focus, activity). When setting the config attribute
|
||||
'match_labels="yes"', the clipboard performs plausibility checks for copy and
|
||||
paste operations against the focus of the Nitpicker GUI server. All aspects of
|
||||
the clipboard policy - including information-flow policies - have become
|
||||
reconfigurable.
|
||||
|
||||
To make window-manager clients compatible with the clipboard's dynamic policy,
|
||||
the window manager got enhanced with the ability to proxy the interaction with
|
||||
the clipboard. GUI clients in turn - in particular the graphical *terminal* -
|
||||
became able to interact with the clipboard. With the '<config>' attribute
|
||||
'copy="yes"' specified, the terminal allows the user to select text to be
|
||||
reported to a "clipboard" report. The selection mode is activated by holding
|
||||
the left shift key. While the selection mode is active, the text position
|
||||
under the mouse pointer is highlighted and the user can select text via the
|
||||
left mouse button. Upon release of the mouse button, the selection is
|
||||
reported. Vice versa, with the '<config>' attribute 'paste="yes"' specified,
|
||||
the terminal allows the user to paste the content of a "clipboard" ROM session
|
||||
to the terminal client by pressing the middle mouse button.
|
||||
|
||||
Finally, we integrated those new abilities into Sculpt OS and into several
|
||||
installable packages, including virtual machines, the noux-system package,
|
||||
and graphical Qt5-based applications.
|
||||
|
||||
|
||||
Enhanced SSH terminal
|
||||
=====================
|
||||
|
||||
This release paves the way for remotely managing Genode devices over SSH.
|
||||
Until now, only interactive SSH sessions were supported. It is now possible to
|
||||
execute commands from a remote SSH client. E.g., 'ssh noux@localhost -p 5555
|
||||
"ls -hal /bin/"'. For non-interactive sessions, ssh_terminal requires a helper
|
||||
component. This component is responsible to create the environment for the
|
||||
command to run in. You can find an example for such a component at
|
||||
_gems/src/test/exec_terminal_. It starts noux in a sub init and executes the
|
||||
provided command inside of it. The new _ssh_exec_channel.run_ script gives a
|
||||
demonstration on how this feature can be used.
|
||||
|
||||
This work is a contribution by Sid Hussmann of
|
||||
[https://gapfruit.com - Gapfruit]. Thanks for this great new feature!
|
||||
|
||||
|
||||
Storage-stack improvements
|
||||
==========================
|
||||
|
||||
The desire of one Genode developer to exchange data via Iomega ZIP drives
|
||||
between an Atari Falcon and Sculpt OS called for a number of small
|
||||
improvements across several components of the storage stack.
|
||||
|
||||
First, the USB-block driver has been changed to exit on an initialization
|
||||
failure instead of waiting for another (supported) device. This change enables
|
||||
the Sculpt manager to detect such conditions and release the USB device
|
||||
hardware by removing the driver component. Such a failed initialization may
|
||||
happen with exotic USB-storage devices such as ZIP drives. With the device
|
||||
released, however, it can be assigned to a virtual machine to access it using
|
||||
a guest OS with a broader support of devices.
|
||||
|
||||
Second, the USB-block driver received new support for issuing the SCSI
|
||||
START-STOP command at initialization time, thereby overcoming the ZIP-drive
|
||||
initialization failure.
|
||||
|
||||
Third, we enhanced the part-block component with the ability to parse AHDI
|
||||
partition schemes and detect the GEMDOS variant of FAT as used by Atari TOS.
|
||||
|
||||
Fourth, we enabled the Rump VFS plugin to access GEMDOS file systems. The
|
||||
GEMDOS variant is readily supported by NetBSD's "msdos" file-system driver.
|
||||
However, it must explicitly be enabled by a mount flag. Hence, we added the
|
||||
principle ability for passing mount flags to NetBSD file-system drivers and
|
||||
enabled the MSDOSFSMNT_GEMDOSFS flag based on the VFS plugin's config
|
||||
attribute 'gemdos="yes"'.
|
||||
|
||||
With these changes in place, data can now be exchanged directly between
|
||||
Atari-formatted disks and Sculpt OS. That said, advanced use cases such as
|
||||
media changes at runtime are not covered yet.
|
||||
|
||||
|
||||
Updated Ada/SPARK runtime
|
||||
=========================
|
||||
|
||||
Genode's Ada/SPARK runtime is developed and maintained by
|
||||
[https://componolit.com - Componolit]. Thanks for this excellent
|
||||
collaboration!
|
||||
|
||||
The updated Componolit Ada runtime 1.1.0 increases the proof coverage and
|
||||
cleans up the source-code structure. SPARK mode is now enabled wherever
|
||||
possible and unneeded abstractions have been removed. Furthermore, the 64-bit
|
||||
addition and subtraction have been proven to be free of runtime errors.
|
||||
As a new feature, the runtime now supports the use of inline assembly in Ada.
|
||||
|
||||
The removal of unneeded features such as the incomplete threading support for
|
||||
the secondary stack has greatly reduced the runtime's complexity while keeping
|
||||
the current functionality available. Also GNAT.IO has been removed as its
|
||||
implementation was incomplete and complex. A simpler replacement has been
|
||||
introduced with 'Componolit.Runtime.Debug'.
|
||||
|
||||
Unrelated to Genode, the runtime now supports [https://muen.sk/ - Muen] and
|
||||
the API/ABI of the runtime has been separated from the GNAT ABI.
|
||||
|
||||
|
||||
Libraries and applications
|
||||
##########################
|
||||
|
||||
Updated Qt5
|
||||
===========
|
||||
|
||||
We updated our Qt5 port to the latest upstream version 5.13.0. Before
|
||||
preparing the 'qt5' port, please make sure to build and install the updated
|
||||
Qt5 host tools with the 'tool/tool_chain_qt5' script.
|
||||
|
||||
|
||||
Virtualization
|
||||
==============
|
||||
|
||||
As follow-up of our work on the
|
||||
[https://genode.org/documentation/release-notes/19.05#Kernel-agnostic_virtual-machine_monitors - kernel agnostic virtual-machine monitor interface]
|
||||
on x86, we added principle support to run our port of VirtualBox on
|
||||
Genode/Fiasco.OC. We write _principle_ support, since we managed to get the
|
||||
VMM running with Fiasco.OC, but unfortunately not all features required by the
|
||||
VMM are available using the Fiasco.OC kernel, e.g., guest FPU registers, PDPTE
|
||||
registers, and task-priority support. In practice this means that the VMs with
|
||||
Windows and Linux come up to a certain point but will fail later whenever the
|
||||
guest state runs out of synchronization between VMM and hardware. In contrast,
|
||||
the Seoul VMM runs fine on Fiasco.OC since it does not depend on the mentioned
|
||||
missing features.
|
||||
|
||||
Our main working items have been the completion of transfer of the available
|
||||
guest registers and control flow synchronization improvements between VMM and
|
||||
Fiasco.OC kernel. Additionally, the usage of priorities for VirtualBox's
|
||||
pthreads in the VMM had to be disabled. Finally, some tests for VirtualBox
|
||||
with Genode/Fiasco.OC are enabled for nightly regular testing now.
|
||||
|
||||
As a side topic, we added support for using the VirtualBox
|
||||
[https://forums.virtualbox.org/viewtopic.php?f=2&t=82299&start=15 - CPU profile]
|
||||
feature, which allows for presenting a different CPUID to the VM than the one
|
||||
of the real CPU. This can help when running Windows 7 on a Kaby Lake or newer
|
||||
CPU, which are considered _unsupported hardware_ and reason enough not to
|
||||
receive security updates from Microsoft. The feature can be used on Genode by
|
||||
adding the 'CpuProfile' attribute to the '<CPU>' XML node in the .vbox file,
|
||||
like:
|
||||
|
||||
! <CPU CpuProfile="Intel Core i7-5600U">
|
||||
|
||||
|
||||
Disposable VM for handling captive portals
|
||||
==========================================
|
||||
|
||||
It is common that WiFi networks require the user to interact with a specific
|
||||
web page before gaining access to full network functionality. Such captive
|
||||
portal pages are completely individual to the accessed network and not limited
|
||||
in the use of common web techniques. Therefore, their handling is best be done
|
||||
using a fully-featured web browser like Mozilla Firefox.
|
||||
|
||||
This is where, in a Genode-based desktop system like Sculpt, a disposable VM
|
||||
for hosting a minimal browser setup becomes desirable. Its goal is to unlock a
|
||||
network for the native Genode surroundings with as little inconvenience as
|
||||
possible just to be thrown away afterwards without any side effects on the
|
||||
system.
|
||||
|
||||
Now, one could use the Firefox appliance VM of Sculpt (see the
|
||||
[https://genode.org/documentation/release-notes/18.05 - release notes] or the
|
||||
[http://genodians.org/alex-ab/2019-03-06-disposal-browser-vm - Genodians article])
|
||||
for this. But this VM aims for a long-term browsing experience which, in the
|
||||
context of mere captive-portal handling, brings some drawbacks like a much
|
||||
higher RAM consumption or the required sessions for USB detection and shared
|
||||
folders.
|
||||
|
||||
Furthermore, in the captive portal VM, there's no need for managing windows or
|
||||
browser tabs. The one browser tab needed can always be shown in fullscreen. It
|
||||
is also unnecessary for the browser to maintain a content cache or remember
|
||||
user data. This can reduce resource consumption.
|
||||
|
||||
[image captive_portal_vm]
|
||||
|
||||
The VM we came up with is provided as package for Sculpt by Martin Stein
|
||||
(depot user 'mstein'). You'll possibly need to manually add Martin's
|
||||
[https://github.com/genodelabs/genode/tree/master/depot/mstein - depot key and download location]
|
||||
to your Sculpt depot directory. After enabling this user, the captive portal
|
||||
VM can be found in the Sculpt menu under "Depot -> mstein -> Virtual
|
||||
Machines -> vbox5-nova-captive-portal".
|
||||
|
||||
The VM is based on a TinyCore 10 Linux with Xserver, i3 WM, and a tailored
|
||||
Firefox browser. The package runtime doesn't need access to your file system,
|
||||
it merely loads some ROMs into a RAM FS, so, it will completely forget any
|
||||
changes made during a session. Therefore, it's also safe to simply remove an
|
||||
instance via the Leitzentrale component-view once you don't need it anymore.
|
||||
The guest additions are also included to make the VM window resizable.
|
||||
|
||||
|
||||
Build system and tools
|
||||
######################
|
||||
|
||||
At Genode Labs, we have used _tool/autopilot_ for the steering of tests in our
|
||||
Continuous Integration workflow for almost a decade now. This implied various
|
||||
improvements over the years and with the completion of our work on
|
||||
[https://genode.org/documentation/release-notes/19.05#Unified_build_directories_for_ARM - unified build directories]
|
||||
it was time to amend this handy tool once again. Unified build directories
|
||||
support building all components for one CPU architecture in one directory
|
||||
saving the build server from the redundant work we previously had with
|
||||
board-specific directories. With the new notion of boards during builds, the
|
||||
definition of the target platform when integrating Genode system scenarios is
|
||||
now a triplet of _CPU architecture_, _board_, and _kernel_. This is reflected
|
||||
in the new '-t <architecture-board-kernel>' command line option, which
|
||||
instructs autopilot to generate a build directory for _architecture_ and
|
||||
execute tests for the _board-kernel_ combination.
|
||||
|
||||
! autopilot -t x86_64-pc-sel4 -t x86_64-pc-nova -r run/log
|
||||
|
||||
The known options for '-k kernel' and '-p platform' are still supported with
|
||||
the small change that the platform must now be defined as
|
||||
_architecture-board_.
|
||||
|
||||
! autopilot -p x86_64-pc -k sel4 -k nova -r run/log
|
||||
|
||||
Autopilot now also documents the hidden feature to propagate custom 'RUN_OPTs'
|
||||
via the 'RUN_OPT_AUTOPILOT' environment variable to the run tool executed.
|
||||
Besides that, the tool always appends 'RUN_OPT' with '--autopilot'.
|
||||
|
||||
! RUN_OPT_AUTOPILOT="--depot-dir /data/depot" autopilot ...
|
||||
|
||||
@@ -20,8 +20,8 @@ $(FIASCO_BUILD_DIR):
|
||||
|
||||
$(FIASCO): $(FIASCO_BUILD_DIR)
|
||||
$(VERBOSE_MK) set -o pipefail; \
|
||||
MAKEFLAGS= CFLAGS="-std=gnu89" \
|
||||
CXXFLAGS="-std=gnu++98 -fno-delete-null-pointer-checks" \
|
||||
MAKEFLAGS= CFLAGS="-std=gnu89 $(CWARN)" \
|
||||
CXXFLAGS="-std=gnu++98 -fno-delete-null-pointer-checks $(CXXWARN)" \
|
||||
$(MAKE) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \
|
||||
$(VERBOSE_DIR) -C $(FIASCO_BUILD_DIR) \
|
||||
$(KERNEL_BUILD_OUTPUT_FILTER)
|
||||
|
||||
@@ -48,6 +48,14 @@ endif
|
||||
#
|
||||
.NOTPARALLEL: $(PKG_TAGS)
|
||||
|
||||
WARN = -Wno-attributes -Wno-cast-function-type -Wno-format-truncation \
|
||||
-Wno-frame-address -Wno-ignored-qualifiers -Wno-implicit-fallthrough \
|
||||
-Wno-maybe-uninitialized -Wno-misleading-indentation \
|
||||
-Wno-nonnull-compare -Wno-nonnull-compare -Wno-restrict \
|
||||
-Wno-tautological-compare -Wno-unused-but-set-variable -Wno-unused-result
|
||||
CWARN = $(WARN) -Wno-int-conversion -Wno-pointer-sign -Wno-pointer-to-int-cast
|
||||
CXXWARN = $(WARN) -Wno-bool-compare -Wno-c++11-compat -Wno-class-memaccess
|
||||
|
||||
#
|
||||
# The '_GNU_SOURCE' definition is needed to convince uClibc to define the
|
||||
# 'off64_t' type, which is used by bootstrap.
|
||||
@@ -55,8 +63,8 @@ endif
|
||||
%.tag:
|
||||
$(VERBOSE_MK) set -o pipefail; \
|
||||
MAKEFLAGS= CPPFLAGS="$(CC_MARCH)" \
|
||||
CFLAGS="$(CC_MARCH) -std=gnu89" \
|
||||
CXXFLAGS="$(CC_MARCH) -D_GNU_SOURCE -std=gnu++98" \
|
||||
CFLAGS="$(CC_MARCH) -std=gnu89 $(CWARN)" \
|
||||
CXXFLAGS="$(CC_MARCH) -D_GNU_SOURCE -std=gnu++98 $(CXXWARN)" \
|
||||
ASFLAGS="$(CC_MARCH)" LDFLAGS="$(LD_MARCH)" \
|
||||
$(MAKE) $(VERBOSE_DIR) O=$(L4_BUILD_DIR) $(L4_VERBOSE) \
|
||||
-C $(L4_PKG_DIR)/$* \
|
||||
|
||||
@@ -1 +1 @@
|
||||
2019-05-26 d974ee0ff1b1eb4a3790d00da9f5cbf80d8743ba
|
||||
2019-08-27 87228cf07e72e871410818fa83bdeef44c9f5ef8
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
CONFIG_HAS_CPU_VIRT=y
|
||||
@@ -55,6 +57,7 @@ CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A15=y
|
||||
# CONFIG_CPU_VIRT is not set
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_NONE=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_MC=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
@@ -87,6 +90,7 @@ CONFIG_INLINE=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
# CONFIG_JDB_LOGGING is not set
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
|
||||
@@ -43,25 +43,23 @@ CONFIG_PLATFORM_TYPE_exynos5=y
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3_m3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="exynos5"
|
||||
# CONFIG_USE_DROPS_STDDIR is not set
|
||||
# CONFIG_USE_DICE is not set
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
|
||||
@@ -52,6 +54,7 @@ CONFIG_PF_IMX_6_TIMER_MPTIMER=y
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A9=y
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
CONFIG_ARM_EM_STD=y
|
||||
# CONFIG_ARM_EM_NS is not set
|
||||
@@ -59,14 +62,13 @@ CONFIG_ARM_EM_STD=y
|
||||
# CONFIG_ARM_SMC_USER is not set
|
||||
CONFIG_ARM_CACHE_L2CXX0=y
|
||||
# CONFIG_ARM_ENABLE_SWP is not set
|
||||
CONFIG_HAS_ARM_PSCI=y
|
||||
# CONFIG_ARM_PSCI is not set
|
||||
CONFIG_ARM_CPU_ERRATA=y
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
# CONFIG_MP is not set
|
||||
CONFIG_MP=y
|
||||
CONFIG_MP_MAX_CPUS=4
|
||||
CONFIG_CONTEXT_4K=y
|
||||
# CONFIG_FINE_GRAINED_CPUTIME is not set
|
||||
CONFIG_SCHED_FIXED_PRIO=y
|
||||
@@ -83,6 +85,7 @@ CONFIG_NO_FRAME_PTR=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
CONFIG_JDB_LOGGING=y
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
|
||||
@@ -43,25 +43,23 @@ CONFIG_CPU_ARMV6PLUS=y
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3_m3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
CONFIG_PLATFORM_TYPE_imx6=y
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="imx6"
|
||||
# CONFIG_USE_DROPS_STDDIR is not set
|
||||
# CONFIG_USE_DICE is not set
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
CONFIG_HAS_CPU_VIRT=y
|
||||
@@ -51,6 +53,7 @@ CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A7=y
|
||||
# CONFIG_CPU_VIRT is not set
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
CONFIG_ARM_EM_STD=y
|
||||
# CONFIG_ARM_EM_NS is not set
|
||||
@@ -66,7 +69,7 @@ CONFIG_ARM_CPU_ERRATA=y
|
||||
# Kernel options
|
||||
#
|
||||
CONFIG_MP=y
|
||||
CONFIG_MP_MAX_CPUS=4
|
||||
CONFIG_MP_MAX_CPUS=2
|
||||
CONFIG_CONTEXT_4K=y
|
||||
# CONFIG_FINE_GRAINED_CPUTIME is not set
|
||||
CONFIG_SCHED_FIXED_PRIO=y
|
||||
@@ -83,6 +86,7 @@ CONFIG_INLINE=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
# CONFIG_JDB_LOGGING is not set
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
|
||||
@@ -43,25 +43,23 @@ CONFIG_CPU_ARMV6PLUS=y
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
CONFIG_PLATFORM_TYPE_imx7=y
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3_m3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="imx7"
|
||||
# CONFIG_USE_DROPS_STDDIR is not set
|
||||
# CONFIG_USE_DICE is not set
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
|
||||
@@ -54,6 +56,7 @@ CONFIG_PF_EXYNOS_TIMER_MCT=y
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A9=y
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_NONE=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_MC=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
@@ -88,6 +91,7 @@ CONFIG_NO_FRAME_PTR=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
# CONFIG_JDB_LOGGING is not set
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
|
||||
@@ -43,25 +43,23 @@ CONFIG_PLATFORM_TYPE_exynos4=y
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3_m3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="exynos4"
|
||||
# CONFIG_USE_DROPS_STDDIR is not set
|
||||
# CONFIG_USE_DICE is not set
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
|
||||
@@ -47,6 +49,7 @@ CONFIG_PF_OMAP4_PANDABOARD=y
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A9=y
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
CONFIG_ARM_EM_STD=y
|
||||
# CONFIG_ARM_EM_NS is not set
|
||||
@@ -77,6 +80,7 @@ CONFIG_INLINE=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
CONFIG_JDB_LOGGING=y
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
|
||||
@@ -43,25 +43,23 @@ CONFIG_PLATFORM_TYPE_pandaboard=y
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3_m3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="pandaboard"
|
||||
# CONFIG_USE_DROPS_STDDIR is not set
|
||||
# CONFIG_USE_DICE is not set
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
|
||||
@@ -50,6 +52,7 @@ CONFIG_PF_REALVIEW_RAM_PHYS_BASE=0x70000000
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A9=y
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
CONFIG_ARM_EM_STD=y
|
||||
# CONFIG_ARM_EM_NS is not set
|
||||
@@ -79,6 +82,7 @@ CONFIG_NO_FRAME_PTR=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
CONFIG_JDB_LOGGING=y
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
|
||||
@@ -43,25 +43,23 @@ CONFIG_PLATFORM_TYPE_rv_pbx=y
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3_m3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="rv_pbx"
|
||||
# CONFIG_USE_DROPS_STDDIR is not set
|
||||
# CONFIG_USE_DICE is not set
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
|
||||
#
|
||||
@@ -38,9 +40,11 @@ CONFIG_ARM_V6PLUS=y
|
||||
CONFIG_PF_BCM283X_RPI1=y
|
||||
# CONFIG_PF_BCM283X_RPI2 is not set
|
||||
# CONFIG_PF_BCM283X_RPI3 is not set
|
||||
# CONFIG_PF_BCM283X_RPIZW is not set
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_1176=y
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
CONFIG_ARM_EM_STD=y
|
||||
# CONFIG_ARM_EM_NS is not set
|
||||
@@ -69,6 +73,7 @@ CONFIG_NO_FRAME_PTR=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
# CONFIG_JDB_LOGGING is not set
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
|
||||
@@ -42,25 +42,23 @@ CONFIG_CPU_ARMV6PLUS=y
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
CONFIG_PLATFORM_TYPE_rpi_b=y
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3_m3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="rpi_b"
|
||||
# CONFIG_USE_DROPS_STDDIR is not set
|
||||
# CONFIG_USE_DICE is not set
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
CONFIG_HAS_CPU_VIRT=y
|
||||
@@ -43,12 +45,15 @@ CONFIG_ARM_V8=y
|
||||
# CONFIG_PF_BCM283X_RPI1 is not set
|
||||
# CONFIG_PF_BCM283X_RPI2 is not set
|
||||
CONFIG_PF_BCM283X_RPI3=y
|
||||
# CONFIG_PF_BCM283X_RPIZW is not set
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A53=y
|
||||
# CONFIG_CPU_VIRT is not set
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
CONFIG_ARM_EM_STD=y
|
||||
# CONFIG_ARM_EM_NS is not set
|
||||
# CONFIG_ARM_SMC_USER is not set
|
||||
CONFIG_BIT64_CHOICE=y
|
||||
CONFIG_ARM_LPAE=y
|
||||
@@ -78,6 +83,7 @@ CONFIG_INLINE=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
CONFIG_JDB_LOGGING=y
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
|
||||
@@ -19,12 +19,10 @@ CONFIG_CPU_ARM_ARMV8A=y
|
||||
# CONFIG_PLATFORM_TYPE_arm_virt is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress_a15 is not set
|
||||
CONFIG_PLATFORM_TYPE_rpi_b=y
|
||||
# CONFIG_PLATFORM_TYPE_rcar3_m3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="rpi_b"
|
||||
# CONFIG_USE_DROPS_STDDIR is not set
|
||||
# CONFIG_USE_DICE is not set
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_WATCHDOG_OPTION=y
|
||||
@@ -25,6 +26,8 @@ CONFIG_CPU_VIRT=y
|
||||
CONFIG_SCHED_APIC=y
|
||||
# CONFIG_WORKAROUND_AMD_FPU_LEAK is not set
|
||||
CONFIG_REGPARM3=y
|
||||
CONFIG_FPU=y
|
||||
# CONFIG_LAZY_FPU is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
|
||||
@@ -17,8 +17,6 @@ CONFIG_CPU="586"
|
||||
CONFIG_PLATFORM_TYPE_pc=y
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="pc"
|
||||
# CONFIG_USE_DROPS_STDDIR is not set
|
||||
# CONFIG_USE_DICE is not set
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_WATCHDOG_OPTION=y
|
||||
@@ -23,6 +24,8 @@ CONFIG_ABI_VF=y
|
||||
CONFIG_CPU_VIRT=y
|
||||
CONFIG_SCHED_APIC=y
|
||||
# CONFIG_WORKAROUND_AMD_FPU_LEAK is not set
|
||||
CONFIG_FPU=y
|
||||
# CONFIG_LAZY_FPU is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
|
||||
@@ -17,8 +17,6 @@ CONFIG_CPU="K8"
|
||||
CONFIG_PLATFORM_TYPE_pc=y
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="pc"
|
||||
# CONFIG_USE_DROPS_STDDIR is not set
|
||||
# CONFIG_USE_DICE is not set
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
@@ -25,7 +25,7 @@ ifeq ($(filter-out $(SPECS),arm_v6),)
|
||||
endif
|
||||
|
||||
ifeq ($(filter-out $(SPECS),arm_v8),)
|
||||
L4_BUILD_ARCH := arm_armv8a
|
||||
L4_BUILD_ARCH := arm64_armv8a
|
||||
endif
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
L4_CONFIG := $(call select_from_repositories,config/rpi3.user)
|
||||
|
||||
L4_BIN_DIR := $(LIB_CACHE_DIR)/syscall-foc/rpi3-build/bin/arm_armv8
|
||||
L4_BIN_DIR := $(LIB_CACHE_DIR)/syscall-foc/rpi3-build/bin/arm64_armv8a
|
||||
|
||||
L4_INC_TARGETS = arm64/l4/sys \
|
||||
arm64/l4f/l4/sys \
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
From dde7b7a8de121c4569fdec32ada623146dd430dc Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Sumpf <sebastian.sumpf@genode-labs.com>
|
||||
Date: Wed, 20 Feb 2013 12:30:53 +0100
|
||||
Subject: [PATCH 01/15] L4RE: Remove 'moe' from 'switch_ram_base' target
|
||||
|
||||
---
|
||||
l4/Makefile | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/l4/Makefile b/l4/Makefile
|
||||
index 61f55524..814d5fe3 100644
|
||||
--- a/l4/Makefile
|
||||
+++ b/l4/Makefile
|
||||
@@ -480,7 +480,6 @@ define switch_ram_base_func
|
||||
echo "# File semi-automatically generated by 'make switch_ram_base'" > $(OBJ_BASE)/Makeconf.ram_base; \
|
||||
echo "RAM_BASE := $(1)" >> $(OBJ_BASE)/Makeconf.ram_base; \
|
||||
PWD=$(PWD)/l4re-core/pkg/sigma0/server/src $(MAKE) RAM_BASE=$(1) -C pkg/l4re-core/sigma0/server/src; \
|
||||
- PWD=$(PWD)/l4re-core/pkg/moe/server/src $(MAKE) RAM_BASE=$(1) -C pkg/l4re-core/moe/server/src; \
|
||||
echo "RAM_BASE_SWITCH_OK := yes" >> $(OBJ_BASE)/Makeconf.ram_base
|
||||
endef
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
From 1b5b4c951c4f5d5495ab6acb98c586b85d123295 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Sumpf <sebastian.sumpf@genode-labs.com>
|
||||
Date: Fri, 11 Jan 2013 17:14:26 +0100
|
||||
Subject: [PATCH 02/15] FOC: change l4_task_cap_equal semantic
|
||||
|
||||
The syscall l4_task_cap_equal almost returns false although the referenced
|
||||
kernel-objects are equal. This patch changes the semantic of the syscall so that
|
||||
whenever two capabilities refering the same kernel-object are compared it will
|
||||
return true. Please refer to the discussion of the following mail thread:
|
||||
http://www.mail-archive.com/l4-hackers@os.inf.tu-dresden.de/msg05162.html
|
||||
|
||||
Was 'foc_caps_equal.patch'
|
||||
---
|
||||
kernel/fiasco/src/kern/task.cpp | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/kernel/fiasco/src/kern/task.cpp b/kernel/fiasco/src/kern/task.cpp
|
||||
index 693da581..e30867e2 100644
|
||||
--- a/kernel/fiasco/src/kern/task.cpp
|
||||
+++ b/kernel/fiasco/src/kern/task.cpp
|
||||
@@ -518,10 +518,15 @@ Task::sys_caps_equal(Syscall_frame *, Utcb *utcb)
|
||||
if (obj_a.special() || obj_b.special())
|
||||
return commit_result(obj_a.special_cap() == obj_b.special_cap());
|
||||
|
||||
- Obj_space::Capability c_a = lookup(obj_a.cap());
|
||||
- Obj_space::Capability c_b = lookup(obj_b.cap());
|
||||
+ Kobject_iface* ki_a = lookup(obj_a.cap()).obj();
|
||||
+ Kobject_iface* ki_b = lookup(obj_b.cap()).obj();
|
||||
|
||||
- return commit_result(c_a == c_b);
|
||||
+ if (!ki_b || !ki_a) return commit_result(0);
|
||||
+
|
||||
+ Mword o_a = ki_a->obj_id();
|
||||
+ Mword o_b = ki_b->obj_id();
|
||||
+
|
||||
+ return commit_result(o_a == o_b);
|
||||
}
|
||||
|
||||
PRIVATE inline NOEXPORT
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
From a7c9b9eaf75f9574c2ae80094df15942bf54c4ca Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Sumpf <sebastian.sumpf@genode-labs.com>
|
||||
Date: Fri, 11 Jan 2013 17:38:28 +0100
|
||||
Subject: [PATCH 03/15] Sigma0: raise sigma0's priority to maximum.
|
||||
|
||||
When sigma0 runs on a lower priority than the rest of the threads in the system
|
||||
it might come to the point that while answering a page fault or I/O memory area
|
||||
request the timeslice of the caller (core-pager) gets fully consumed. As long as
|
||||
other threads are still executable and don't block sigma0 won't do progress
|
||||
anymore, because it runs at the lowest priority. This commit simply sets
|
||||
sigma0's priority to the highest in the system.
|
||||
|
||||
Was: 'sigma0_prio.patch'
|
||||
---
|
||||
l4/pkg/l4re-core/sigma0/server/src/init.cc | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/l4/pkg/l4re-core/sigma0/server/src/init.cc b/l4/pkg/l4re-core/sigma0/server/src/init.cc
|
||||
index c2608ceb..ebd8d479 100644
|
||||
--- a/l4/pkg/l4re-core/sigma0/server/src/init.cc
|
||||
+++ b/l4/pkg/l4re-core/sigma0/server/src/init.cc
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "ioports.h"
|
||||
#include "mem_man_test.h"
|
||||
#include <l4/sys/debugger.h>
|
||||
+#include <l4/sys/scheduler.h>
|
||||
|
||||
/* started as the L4 sigma0 task from crt0.S */
|
||||
|
||||
@@ -61,6 +62,10 @@ init(l4_kernel_info_t *info)
|
||||
l4_debugger_set_object_name(L4_BASE_FACTORY_CAP, "root factory");
|
||||
l4_debugger_set_object_name(L4_BASE_THREAD_CAP, "sigma0");
|
||||
|
||||
+ l4_sched_param_t params = l4_sched_param(255);
|
||||
+ l4_scheduler_run_thread(L4_BASE_SCHEDULER_CAP, L4_BASE_THREAD_CAP, ¶ms);
|
||||
+
|
||||
+
|
||||
Page_alloc_base::init();
|
||||
|
||||
init_memory(info);
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From 09f403d2eb2c7dc089796f58c9a1f359fdea2c35 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Sumpf <sebastian.sumpf@genode-labs.com>
|
||||
Date: Fri, 11 Jan 2013 17:34:06 +0100
|
||||
Subject: [PATCH 05/15] FOC: Increase name buffer of JDB to 32K
|
||||
|
||||
Increase the size of the JDB kernel object names buffer. The original size was
|
||||
too small for some Genode scenarios and caused missing thread names in the
|
||||
kernel debugger thread list.
|
||||
|
||||
Was: 'jdb_kobject_names.patch'
|
||||
---
|
||||
kernel/fiasco/src/jdb/jdb_kobject_names.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kernel/fiasco/src/jdb/jdb_kobject_names.cpp b/kernel/fiasco/src/jdb/jdb_kobject_names.cpp
|
||||
index 5b5adbad..d65fbd56 100644
|
||||
--- a/kernel/fiasco/src/jdb/jdb_kobject_names.cpp
|
||||
+++ b/kernel/fiasco/src/jdb/jdb_kobject_names.cpp
|
||||
@@ -43,7 +43,7 @@ IMPLEMENTATION:
|
||||
|
||||
enum
|
||||
{
|
||||
- Name_buffer_size = 8192,
|
||||
+ Name_buffer_size = 4*8192,
|
||||
Name_entries = Name_buffer_size / sizeof(Jdb_kobject_name),
|
||||
};
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
From 8ce1c02d02fa8a9e50124e3237c2e01ae73c248c Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Sumpf <sebastian.sumpf@genode-labs.com>
|
||||
Date: Wed, 8 Mar 2017 16:58:27 +0100
|
||||
Subject: [PATCH 06/15] FOC: adjust panda timer to version A6
|
||||
|
||||
A6 runs at 800 not 700 MHz (as the ES2 does) when bootstrapped by U-boot
|
||||
|
||||
(thanks to mstein)
|
||||
---
|
||||
.../fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp b/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp
|
||||
index 72ef9b90..c0aef990 100644
|
||||
--- a/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp
|
||||
+++ b/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp
|
||||
@@ -4,5 +4,13 @@ INTERFACE [arm && mptimer && pf_omap4_pandaboard]:
|
||||
EXTENSION class Timer
|
||||
{
|
||||
private:
|
||||
- static Mword interval() { return 499999; }
|
||||
+ static Mword interval()
|
||||
+ {
|
||||
+ /*
|
||||
+ * This is only valid for Panda A6, as we run it at our offices. For A6
|
||||
+ * U-Boot will clock the board at 800 MHz leading to a 400 MHz private timer
|
||||
+ * tick.
|
||||
+ */
|
||||
+ return 399999;
|
||||
+ }
|
||||
};
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
From 266d89b9a54653bfe5cae2744ab72cf83ec13d6d Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Kalkowski <stefan.kalkowski@genode-labs.com>
|
||||
Date: Wed, 3 May 2017 15:01:31 +0200
|
||||
Subject: [PATCH 07/15] L4RE: fix x86 syscall bindings to use in C++ namespace
|
||||
|
||||
---
|
||||
l4/pkg/l4re-core/l4sys/include/ARCH-x86/ipc-invoke.h | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/l4/pkg/l4re-core/l4sys/include/ARCH-x86/ipc-invoke.h b/l4/pkg/l4re-core/l4sys/include/ARCH-x86/ipc-invoke.h
|
||||
index 6e635697..18ef1f6d 100644
|
||||
--- a/l4/pkg/l4re-core/l4sys/include/ARCH-x86/ipc-invoke.h
|
||||
+++ b/l4/pkg/l4re-core/l4sys/include/ARCH-x86/ipc-invoke.h
|
||||
@@ -48,7 +48,11 @@
|
||||
#if 1
|
||||
|
||||
#ifdef __PIC__
|
||||
+#ifndef __cplusplus
|
||||
extern void (*__l4sys_invoke_indirect)(void);
|
||||
+#else
|
||||
+extern "C" void (*__l4sys_invoke_indirect)(void);
|
||||
+#endif
|
||||
#endif
|
||||
# define IPC_SYSENTER "# indirect sys invoke \n\t" \
|
||||
"call *%[func] \n\t"
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
From 2cf8f6f608aa4ade16402c10751aaa7d90b994f8 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Boettcher <alexander.boettcher@genode-labs.com>
|
||||
Date: Mon, 10 Jun 2013 10:30:49 +0200
|
||||
Subject: [PATCH 09/15] Bootstrap: read out comport on x86 from BDA area
|
||||
|
||||
With this patch the comport are tried to read out from the BIOS Data Area
|
||||
on x86 machines. The BDA Area are part of the first physical page and may
|
||||
contain the non-default io ports of the comport.
|
||||
|
||||
When used together with 'bender' from the 'morbo' toolchain, even serial PCI
|
||||
cards (also Intel's AMT Serial Over Line adapter) are detected automatically.
|
||||
---
|
||||
l4/pkg/bootstrap/server/src/platform/x86_pc-base.h | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/l4/pkg/bootstrap/server/src/platform/x86_pc-base.h b/l4/pkg/bootstrap/server/src/platform/x86_pc-base.h
|
||||
index c3e8c12f..95579c09 100644
|
||||
--- a/l4/pkg/bootstrap/server/src/platform/x86_pc-base.h
|
||||
+++ b/l4/pkg/bootstrap/server/src/platform/x86_pc-base.h
|
||||
@@ -957,7 +957,11 @@ public:
|
||||
}
|
||||
else if (comport == -1)
|
||||
{
|
||||
- legacy_uart(1, comirq, &board);
|
||||
+ /* try to read Bios Data Area (BDA) to get comport information */
|
||||
+ unsigned short comport_count = (*((unsigned short *)0x410) >> 9) & 0x7;
|
||||
+ if (comport_count) comport = *((unsigned short *)0x400), comirq, &board;
|
||||
+ else comport = 1;
|
||||
+ legacy_uart(comport, comirq, &board);
|
||||
comport = 0;
|
||||
}
|
||||
else
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
From f3d44f2a42763bbcba7085f3005ee8a36dbf23e9 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Kalkowski <stefan.kalkowski@genode-labs.com>
|
||||
Date: Tue, 30 May 2017 09:03:57 +0200
|
||||
Subject: [PATCH 10/15] L4RE: get rid of __builtin_strlen usage
|
||||
|
||||
---
|
||||
l4/pkg/l4re-core/l4sys/include/kdebug.h | 11 +++++++++--
|
||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/l4/pkg/l4re-core/l4sys/include/kdebug.h b/l4/pkg/l4re-core/l4sys/include/kdebug.h
|
||||
index cfb17464..64ee9900 100644
|
||||
--- a/l4/pkg/l4re-core/l4sys/include/kdebug.h
|
||||
+++ b/l4/pkg/l4re-core/l4sys/include/kdebug.h
|
||||
@@ -133,6 +133,13 @@ __kdebug_op_1(unsigned op, l4_mword_t val) L4_NOTHROW
|
||||
return res;
|
||||
}
|
||||
|
||||
+L4_INLINE unsigned __kdebug_strlen(char const * s)
|
||||
+{
|
||||
+ unsigned r = 0;
|
||||
+ for (; s && *s; s++, r++);
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
L4_INLINE void enter_kdebug(char const *text) L4_NOTHROW
|
||||
{
|
||||
/* special case, enter without any text and use of the UTCB */
|
||||
@@ -144,14 +151,14 @@ L4_INLINE void enter_kdebug(char const *text) L4_NOTHROW
|
||||
return;
|
||||
}
|
||||
|
||||
- __kdebug_text(L4_KDEBUG_ENTER, text, __builtin_strlen(text));
|
||||
+ __kdebug_text(L4_KDEBUG_ENTER, text, __kdebug_strlen(text));
|
||||
}
|
||||
|
||||
L4_INLINE void outnstring(char const *text, unsigned len)
|
||||
{ __kdebug_text(L4_KDEBUG_OUTNSTRING, text, len); }
|
||||
|
||||
L4_INLINE void outstring(char const *text)
|
||||
-{ outnstring(text, __builtin_strlen(text)); }
|
||||
+{ outnstring(text, __kdebug_strlen(text)); }
|
||||
|
||||
|
||||
L4_INLINE void outchar(char c)
|
||||
--
|
||||
2.11.0
|
||||
|
||||
45
repos/base-foc/patches/0011-Ex_regs-Change-user_flags.patch
Normal file
45
repos/base-foc/patches/0011-Ex_regs-Change-user_flags.patch
Normal file
@@ -0,0 +1,45 @@
|
||||
From b9323143eead13223b658c92010c923c959e2159 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Sumpf <sebastian.sumpf@genode-labs.com>
|
||||
Date: Fri, 11 Jan 2013 17:27:42 +0100
|
||||
Subject: [PATCH 11/15] Ex_regs: Change 'user_flags'
|
||||
|
||||
Return true if thread is ready.
|
||||
|
||||
Was: 'foc_exregs_ret_state.patch'
|
||||
---
|
||||
kernel/fiasco/src/kern/arm/thread-arm.cpp | 2 +-
|
||||
kernel/fiasco/src/kern/ia32/thread-ia32.cpp | 5 ++++-
|
||||
2 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/kernel/fiasco/src/kern/arm/thread-arm.cpp b/kernel/fiasco/src/kern/arm/thread-arm.cpp
|
||||
index 82b62998..7bce193b 100644
|
||||
--- a/kernel/fiasco/src/kern/arm/thread-arm.cpp
|
||||
+++ b/kernel/fiasco/src/kern/arm/thread-arm.cpp
|
||||
@@ -325,7 +325,7 @@ Thread::user_sp(Mword sp)
|
||||
IMPLEMENT inline
|
||||
Mword
|
||||
Thread::user_flags() const
|
||||
-{ return 0; }
|
||||
+{ return state() & Thread_ready; }
|
||||
|
||||
PUBLIC inline NEEDS ["trap_state.h"]
|
||||
int
|
||||
diff --git a/kernel/fiasco/src/kern/ia32/thread-ia32.cpp b/kernel/fiasco/src/kern/ia32/thread-ia32.cpp
|
||||
index 3777821d..62a561a9 100644
|
||||
--- a/kernel/fiasco/src/kern/ia32/thread-ia32.cpp
|
||||
+++ b/kernel/fiasco/src/kern/ia32/thread-ia32.cpp
|
||||
@@ -80,7 +80,10 @@ Thread::user_ip() const
|
||||
IMPLEMENT inline
|
||||
Mword
|
||||
Thread::user_flags() const
|
||||
-{ return regs()->flags(); }
|
||||
+{
|
||||
+ // pass thread-ready state in carry flag (Thread_ready is bit 0)
|
||||
+ return (regs()->flags() & ~Thread_ready) | (state() & Thread_ready);
|
||||
+}
|
||||
|
||||
PRIVATE static inline
|
||||
Mword
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From 43cd446fe9bcba67a7d7312b14004e9063343a89 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Prochaska <christian.prochaska@genode-labs.com>
|
||||
Date: Wed, 28 Aug 2013 19:53:23 +0200
|
||||
Subject: [PATCH 12/15] Flush the TLB after idle operation
|
||||
|
||||
While a CPU executes the idle thread, it receives no cross-CPU TLB flush
|
||||
requests. Therefore, the TLB needs to get flushed when leaving the idle
|
||||
thread to compensate for any missed flush requests.
|
||||
|
||||
Fixes ssumpf/foc#9.
|
||||
---
|
||||
kernel/fiasco/src/kern/kernel_thread.cpp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/kernel/fiasco/src/kern/kernel_thread.cpp b/kernel/fiasco/src/kern/kernel_thread.cpp
|
||||
index 348fde9c..7e4a0d31 100644
|
||||
--- a/kernel/fiasco/src/kern/kernel_thread.cpp
|
||||
+++ b/kernel/fiasco/src/kern/kernel_thread.cpp
|
||||
@@ -182,6 +182,7 @@ Kernel_thread::idle_op()
|
||||
arch_tickless_idle(cpu);
|
||||
|
||||
Mem_space::enable_tlb(cpu);
|
||||
+ Mem_unit::tlb_flush();
|
||||
Rcu::leave_idle(cpu);
|
||||
Timer_tick::enable(cpu);
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
From b74e427801f045578c401a140a8e66404bb3ff19 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Prochaska <christian.prochaska@genode-labs.com>
|
||||
Date: Tue, 12 Feb 2019 19:54:06 +0100
|
||||
Subject: [PATCH 14/15] Always enable user mode access for performance monitors
|
||||
|
||||
QEMU implements the cycle count register read by
|
||||
'Genode::Trace::timestamp()', but does not report a supported debug model
|
||||
version for Cortex-A9.
|
||||
---
|
||||
kernel/fiasco/src/kern/arm/perf_cnt-arm.cpp | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/kernel/fiasco/src/kern/arm/perf_cnt-arm.cpp b/kernel/fiasco/src/kern/arm/perf_cnt-arm.cpp
|
||||
index b7d6a935..bff54286 100644
|
||||
--- a/kernel/fiasco/src/kern/arm/perf_cnt-arm.cpp
|
||||
+++ b/kernel/fiasco/src/kern/arm/perf_cnt-arm.cpp
|
||||
@@ -190,8 +190,13 @@ PUBLIC static FIASCO_INIT_CPU
|
||||
void
|
||||
Perf_cnt::init_cpu()
|
||||
{
|
||||
- if (!is_avail())
|
||||
- return;
|
||||
+ /*
|
||||
+ * QEMU implements the cycle count register read by
|
||||
+ * 'Genode::Trace::timestamp()', but does not report a supported debug model
|
||||
+ * version for Cortex-A9.
|
||||
+ */
|
||||
+ //if (!is_avail())
|
||||
+ //return;
|
||||
|
||||
_nr_counters = (pmcr() >> 11) & 0x1f;
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From a8411389dffc3c55dc5809d2e849b3afac94ee5d Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Boettcher <alexander.boettcher@genode-labs.com>
|
||||
Date: Fri, 12 Apr 2019 13:53:24 +0200
|
||||
Subject: [PATCH 15/15] VMX: disable event injection if requested by VMM
|
||||
|
||||
---
|
||||
kernel/fiasco/src/kern/ia32/vm_vmx.cpp | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/kernel/fiasco/src/kern/ia32/vm_vmx.cpp b/kernel/fiasco/src/kern/ia32/vm_vmx.cpp
|
||||
index 7de4110f..44483b48 100644
|
||||
--- a/kernel/fiasco/src/kern/ia32/vm_vmx.cpp
|
||||
+++ b/kernel/fiasco/src/kern/ia32/vm_vmx.cpp
|
||||
@@ -306,6 +306,12 @@ Vm_vmx_t<X>::load_guest_state(Cpu_number cpu, void *src)
|
||||
|
||||
Vmx::vmwrite(Vmx::F_entry_int_info, irq_info);
|
||||
}
|
||||
+ else
|
||||
+ {
|
||||
+ // switch off event injection if requested but still pending in hw
|
||||
+ if (Vmx::vmread<Mword>(Vmx::F_entry_int_info) & (1UL << 31))
|
||||
+ Vmx::vmwrite(Vmx::F_entry_int_info, irq_info);
|
||||
+ }
|
||||
|
||||
// hm, we have to check for sanitizing the cr0 and cr4 shadow stuff
|
||||
load(0x6000, 0x6006, src);
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
From 518f0ab153ab528fb78c3643d490c2cbefe0dd80 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Boettcher <alexander.boettcher@genode-labs.com>
|
||||
Date: Sat, 4 May 2019 19:19:22 +0200
|
||||
Subject: [PATCH 16/17] svm: provide cr0 to guest if np enabled
|
||||
|
||||
---
|
||||
kernel/fiasco/src/kern/ia32/vm_svm.cpp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/kernel/fiasco/src/kern/ia32/vm_svm.cpp b/kernel/fiasco/src/kern/ia32/vm_svm.cpp
|
||||
index 9960a830..1330e36a 100644
|
||||
--- a/kernel/fiasco/src/kern/ia32/vm_svm.cpp
|
||||
+++ b/kernel/fiasco/src/kern/ia32/vm_svm.cpp
|
||||
@@ -656,6 +656,7 @@ Vm_svm::do_resume_vcpu(Context *ctxt, Vcpu_state *vcpu, Vmcb *vmcb_s)
|
||||
|
||||
if (EXPECT_TRUE(kernel_vmcb_s->np_enabled()))
|
||||
{
|
||||
+ vmcb_s->state_save_area.cr0 = kernel_vmcb_s->state_save_area.cr0;
|
||||
vmcb_s->state_save_area.cr3 = kernel_vmcb_s->state_save_area.cr3;
|
||||
vmcb_s->state_save_area.cr4 = kernel_vmcb_s->state_save_area.cr4;
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From 45bf2c699552d1e2891d322bea479d95f8c93d02 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Boettcher <alexander.boettcher@genode-labs.com>
|
||||
Date: Sat, 4 May 2019 19:20:41 +0200
|
||||
Subject: [PATCH 17/17] svm: avoid forceful exit on task switch
|
||||
|
||||
---
|
||||
kernel/fiasco/src/kern/ia32/vm_svm.cpp | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/kernel/fiasco/src/kern/ia32/vm_svm.cpp b/kernel/fiasco/src/kern/ia32/vm_svm.cpp
|
||||
index 1330e36a..9ac5b87b 100644
|
||||
--- a/kernel/fiasco/src/kern/ia32/vm_svm.cpp
|
||||
+++ b/kernel/fiasco/src/kern/ia32/vm_svm.cpp
|
||||
@@ -486,8 +486,6 @@ Vm_svm::do_resume_vcpu(Context *ctxt, Vcpu_state *vcpu, Vmcb *vmcb_s)
|
||||
kernel_vmcb_s->control_area.intercept_instruction0 |= (1 << 22);
|
||||
// intercept HLT
|
||||
kernel_vmcb_s->control_area.intercept_instruction0 |= (1 << 24);
|
||||
- // intercept task switch
|
||||
- kernel_vmcb_s->control_area.intercept_instruction0 |= (1 << 29);
|
||||
// intercept shutdown
|
||||
kernel_vmcb_s->control_area.intercept_instruction0 |= (1 << 31);
|
||||
// intercept MONITOR/MWAIT
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -1 +1 @@
|
||||
23f5b19a4853073d9cde790709f5e8d9a6c401d7
|
||||
91ca3363690c5b9c992a110375242f5d426a6848
|
||||
|
||||
@@ -1,6 +1,40 @@
|
||||
LICENSE := GPLv2
|
||||
VERSION := git
|
||||
DOWNLOADS := foc.git
|
||||
URL(foc) := https://github.com/alex-ab/foc.git
|
||||
REV(foc) := 45bf2c699552d1e2891d322bea479d95f8c93d02
|
||||
DIR(foc) := src/kernel/foc
|
||||
LICENSE := GPLv2
|
||||
VERSION := git
|
||||
DOWNLOADS := mk.git foc.git l4re-core.git drivers-frst.git bootstrap.git
|
||||
|
||||
URL(mk) := https://github.com/kernkonzept/mk.git
|
||||
REV(mk) := dc4501f9cc3910c2038e0703ffdcd9062d2610e1
|
||||
DIR(mk) := src/kernel/foc/l4
|
||||
|
||||
URL(foc) := https://github.com/kernkonzept/fiasco.git
|
||||
REV(foc) := 4367c50b1df878604b9833d4b41ae311d6e12e03
|
||||
DIR(foc) := src/kernel/foc/kernel/fiasco
|
||||
|
||||
URL(l4re-core) := https://github.com/kernkonzept/l4re-core.git
|
||||
REV(l4re-core) := fe794038e477e5a54762126689483c0e91a177a8
|
||||
DIR(l4re-core) := src/kernel/foc/l4/pkg/l4re-core
|
||||
|
||||
URL(drivers-frst) := https://github.com/kernkonzept/drivers-frst.git
|
||||
REV(drivers-frst) := ce2d7d33294cb7034a4226912463b24f6ffe1bc7
|
||||
DIR(drivers-frst) := src/kernel/foc/l4/pkg/drivers-frst
|
||||
|
||||
URL(bootstrap) := https://github.com/kernkonzept/bootstrap.git
|
||||
REV(bootstrap) := 36500c1253f46f527098febd4da7cbc9d0e2c218
|
||||
DIR(bootstrap) := src/kernel/foc/l4/pkg/bootstrap
|
||||
|
||||
PATCHES := $(addprefix patches/,$(notdir $(wildcard $(REP_DIR)/patches/*.patch)))
|
||||
|
||||
PATCH_OPT(patches/0001-L4RE-Remove-moe-from-switch_ram_base-target.patch) := -p2 -d${DIR(mk)}
|
||||
PATCH_OPT(patches/0002-FOC-change-l4_task_cap_equal-semantic.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0003-Sigma0-raise-sigma0-s-priority-to-maximum.patch) := -p4 -d${DIR(l4re-core)}
|
||||
PATCH_OPT(patches/0005-FOC-Increase-name-buffer-of-JDB-to-32K.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0006-FOC-adjust-panda-timer-to-version-A6.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0007-L4RE-fix-x86-syscall-bindings-to-use-in-C-namespace.patch) := -p4 -d${DIR(l4re-core)}
|
||||
PATCH_OPT(patches/0009-Bootstrap-read-out-comport-on-x86-from-BDA-area.patch) := -p4 -d${DIR(bootstrap)}
|
||||
PATCH_OPT(patches/0010-L4RE-get-rid-of-__builtin_strlen-usage.patch) := -p4 -d${DIR(l4re-core)}
|
||||
PATCH_OPT(patches/0011-Ex_regs-Change-user_flags.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0012-Flush-the-TLB-after-idle-operation.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0014-Always-enable-user-mode-access-for-performance-monit.patch):= -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0015-VMX-disable-event-injection-if-requested-by-VMM.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0016-svm-provide-cr0-to-guest-if-np-enabled.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0017-svm-avoid-forceful-exit-on-task-switch.patch) := -p3 -d${DIR(foc)}
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
RECIPE_DIR := $(REP_DIR)/recipes/src/base-foc-pbxa9
|
||||
|
||||
include $(GENODE_DIR)/repos/base-foc/recipes/src/base-foc_content.inc
|
||||
|
||||
content: enable_board_spec
|
||||
enable_board_spec: etc/specs.conf
|
||||
echo "SPECS += pbxa9" >> etc/specs.conf
|
||||
@@ -1 +0,0 @@
|
||||
2018-11-14 778d83a4be78dcd6d1e4d45f1ca103def7b298a5
|
||||
@@ -1 +1 @@
|
||||
2019-05-27 bf2cfe5972332c17f9e2abad0801ccdd0b2a55d3
|
||||
2019-08-27 5b6cf80fc675be3f7432434e48f4f1548f55ef41
|
||||
|
||||
@@ -1 +1 @@
|
||||
2019-05-27 da39d9b02cd9660f97c2cf8f3b159e89ee0836ab
|
||||
2019-08-27 a867f84460323da4f69d8159ff21200e50a9a2fd
|
||||
|
||||
@@ -1 +1 @@
|
||||
2019-05-27 35856a61cd97b53af52b5410df08dfa7f60cd237
|
||||
2019-08-27 e8b6d91bf19df090192d689a46f34570b43bc1bc
|
||||
|
||||
@@ -1 +1 @@
|
||||
2019-05-27 1b3c98595adcfd5e0581755f54587414d50de0a5
|
||||
2019-08-27 07b6913f38716e380057df3212da94054a359bc8
|
||||
|
||||
@@ -1 +1 @@
|
||||
2019-05-27 9664ffdaaa66319939cb47ada5097784a4a8eff5
|
||||
2019-08-27 2f2313ed4479d13b9f3964db6f7ceaaf2c12320a
|
||||
|
||||
3
repos/base-foc/recipes/src/base-foc-rpi3/content.mk
Normal file
3
repos/base-foc/recipes/src/base-foc-rpi3/content.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
BOARD := rpi3
|
||||
|
||||
include $(GENODE_DIR)/repos/base-foc/recipes/src/base-foc_content.inc
|
||||
1
repos/base-foc/recipes/src/base-foc-rpi3/hash
Normal file
1
repos/base-foc/recipes/src/base-foc-rpi3/hash
Normal file
@@ -0,0 +1 @@
|
||||
2019-08-27 b248520f85bcf3d1dbe68e23ca949f447cd78dbb
|
||||
@@ -23,10 +23,12 @@ src/kernel:
|
||||
KERNEL_PORT_DIR := $(call port_dir,$(REP_DIR)/ports/foc)
|
||||
|
||||
src/kernel/foc: src/kernel
|
||||
cp -r $(KERNEL_PORT_DIR)/src/kernel/foc/* $@
|
||||
tar -C $(KERNEL_PORT_DIR)/src/kernel/foc --exclude=.git -cf - . |\
|
||||
tar -C $@ -xf -
|
||||
|
||||
|
||||
content:
|
||||
for spec in x86_32 x86_64 arm; do \
|
||||
for spec in x86_32 x86_64 arm arm_64; do \
|
||||
mv lib/mk/spec/$$spec/ld-foc.mk lib/mk/spec/$$spec/ld.mk; \
|
||||
done;
|
||||
sed -i "s/ld-foc/ld/" src/lib/ld/foc/target.mk
|
||||
|
||||
@@ -206,6 +206,7 @@ namespace Genode {
|
||||
Name name() const { return _name; }
|
||||
bool core_thread() const { return _core_thread; }
|
||||
addr_t utcb() const { return _utcb; }
|
||||
unsigned prio() const { return _prio; }
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
#include <base/log.h>
|
||||
#include <base/allocator_avl.h>
|
||||
#include <base/sleep.h>
|
||||
#include <dataspace/capability.h>
|
||||
#include <trace/source_registry.h>
|
||||
#include <util/misc_math.h>
|
||||
#include <util/xml_generator.h>
|
||||
|
||||
@@ -525,6 +527,54 @@ Platform::Platform() :
|
||||
|
||||
init_core_log(Core_log_range { core_local_addr, size } );
|
||||
}
|
||||
|
||||
Affinity::Space const cpus = affinity_space();
|
||||
for (unsigned cpu_id = 0; cpu_id < cpus.width(); cpu_id++)
|
||||
{
|
||||
struct Trace_source : public Trace::Source::Info_accessor,
|
||||
private Trace::Control,
|
||||
private Trace::Source
|
||||
{
|
||||
Affinity::Location const affinity;
|
||||
Genode::String<8> const name;
|
||||
|
||||
/**
|
||||
* Trace::Source::Info_accessor interface
|
||||
*/
|
||||
Info trace_source_info() const override
|
||||
{
|
||||
uint64_t ec_time = 0;
|
||||
uint64_t const sc_time = 0;
|
||||
|
||||
using namespace Fiasco;
|
||||
l4_sched_cpu_set_t const cpu = l4_sched_cpu_set(affinity.xpos(), 0);
|
||||
l4_msgtag_t const res = l4_scheduler_idle_time(L4_BASE_SCHEDULER_CAP,
|
||||
&cpu, &ec_time);
|
||||
if (l4_error(res))
|
||||
Genode::error("idle times for cpu ", affinity.xpos(),
|
||||
" are not available");
|
||||
|
||||
return { Session_label("kernel"), Trace::Thread_name(name),
|
||||
Trace::Execution_time(ec_time, sc_time), affinity };
|
||||
}
|
||||
|
||||
Trace_source(Trace::Source_registry ®istry,
|
||||
Affinity::Location const affinity,
|
||||
char const * type_name)
|
||||
:
|
||||
Trace::Control(),
|
||||
Trace::Source(*this, *this), affinity(affinity),
|
||||
name(type_name)
|
||||
{
|
||||
registry.insert(this);
|
||||
}
|
||||
};
|
||||
|
||||
new (core_mem_alloc()) Trace_source(Trace::sources(),
|
||||
Affinity::Location(cpu_id, 0,
|
||||
cpus.width(), 1),
|
||||
"idle");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
/* Genode includes */
|
||||
#include <base/thread.h>
|
||||
#include <base/sleep.h>
|
||||
#include <trace/source_registry.h>
|
||||
|
||||
/* base-internal includes */
|
||||
#include <base/internal/stack.h>
|
||||
@@ -26,6 +27,8 @@
|
||||
namespace Fiasco {
|
||||
#include <l4/sys/debugger.h>
|
||||
#include <l4/sys/factory.h>
|
||||
#include <l4/sys/scheduler.h>
|
||||
#include <l4/sys/thread.h>
|
||||
}
|
||||
|
||||
using namespace Genode;
|
||||
@@ -65,6 +68,47 @@ void Thread::start()
|
||||
l4_utcb_tcr_u(foc_utcb)->user[UTCB_TCR_THREAD_OBJ] = (addr_t)this;
|
||||
|
||||
pt.start((void *)_thread_start, stack_top());
|
||||
|
||||
struct Core_trace_source : public Trace::Source::Info_accessor,
|
||||
private Trace::Control,
|
||||
private Trace::Source
|
||||
{
|
||||
Thread &thread;
|
||||
Platform_thread &platform_thread;
|
||||
|
||||
/**
|
||||
* Trace::Source::Info_accessor interface
|
||||
*/
|
||||
Info trace_source_info() const override
|
||||
{
|
||||
uint64_t const sc_time = 0;
|
||||
addr_t const kcap = (addr_t) platform_thread.pager_object_badge();
|
||||
|
||||
using namespace Fiasco;
|
||||
l4_kernel_clock_t ec_time = 0;
|
||||
l4_msgtag_t res = l4_thread_stats_time(kcap, &ec_time);
|
||||
if (l4_error(res))
|
||||
Genode::error("cpu time for ", thread.name(),
|
||||
" is not available ", l4_error(res));
|
||||
|
||||
return { Session_label("core"), thread.name(),
|
||||
Trace::Execution_time(ec_time, sc_time, 10000,
|
||||
platform_thread.prio()),
|
||||
thread._affinity };
|
||||
}
|
||||
|
||||
Core_trace_source(Trace::Source_registry ®istry, Thread &t,
|
||||
Platform_thread &pt)
|
||||
:
|
||||
Trace::Control(),
|
||||
Trace::Source(*this, *this), thread(t), platform_thread(pt)
|
||||
{
|
||||
registry.insert(this);
|
||||
}
|
||||
};
|
||||
|
||||
new (platform().core_mem_alloc()) Core_trace_source(Trace::sources(),
|
||||
*this, pt);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -147,6 +147,11 @@ struct Vcpu : Genode::Thread
|
||||
TSC_OFF_LO = 0x2010,
|
||||
TSC_OFF_HI = 0x2011,
|
||||
|
||||
MSR_FMASK = 0x2842,
|
||||
MSR_LSTAR = 0x2844,
|
||||
MSR_STAR = 0x284a,
|
||||
KERNEL_GS_BASE = 0x284c,
|
||||
|
||||
CR4_VMX = 1 << 13,
|
||||
INTEL_EXIT_INVALID = 0x21,
|
||||
|
||||
@@ -202,6 +207,9 @@ struct Vcpu : Genode::Thread
|
||||
addr_t _task { 0 };
|
||||
enum Virt const _vm_type;
|
||||
uint64_t _tsc_offset { 0 };
|
||||
bool _show_error_unsupported_pdpte { true };
|
||||
bool _show_error_unsupported_tpr { true };
|
||||
bool _show_error_unsupported_fpu { true };
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -216,8 +224,11 @@ struct Vcpu : Genode::Thread
|
||||
PAUSE = 1,
|
||||
RUN = 2,
|
||||
TERMINATE = 3,
|
||||
} _remote { NONE };
|
||||
Lock _remote_lock { Lock::UNLOCKED };
|
||||
};
|
||||
|
||||
State _state_request { NONE };
|
||||
State _state_current { NONE };
|
||||
Lock _remote_lock { Lock::UNLOCKED };
|
||||
|
||||
void entry() override
|
||||
{
|
||||
@@ -227,10 +238,10 @@ struct Vcpu : Genode::Thread
|
||||
Lock::Guard guard(_remote_lock);
|
||||
|
||||
/* leave scope for Thread::join() - vCPU setup failed */
|
||||
if (_remote == TERMINATE)
|
||||
if (_state_request == TERMINATE)
|
||||
return;
|
||||
|
||||
_remote = NONE;
|
||||
_state_request = NONE;
|
||||
}
|
||||
|
||||
/* reserved ranged for state of vCPUs - see platform.cc */
|
||||
@@ -306,56 +317,21 @@ struct Vcpu : Genode::Thread
|
||||
|
||||
vcpu->saved_state = L4_VCPU_F_USER_MODE | L4_VCPU_F_FPU_ENABLED;
|
||||
|
||||
State local_state { NONE };
|
||||
|
||||
while (true) {
|
||||
/* read in requested state from remote threads */
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
local_state = _remote;
|
||||
_remote = NONE;
|
||||
|
||||
if (local_state == PAUSE) {
|
||||
while (vcpu->sticky_flags) {
|
||||
/* consume spurious notifications */
|
||||
Fiasco::l4_cap_idx_t tid = native_thread().kcap;
|
||||
Fiasco::l4_cap_idx_t irq = tid + Fiasco::TASK_VCPU_IRQ_CAP;
|
||||
l4_irq_receive(irq, L4_IPC_RECV_TIMEOUT_0);
|
||||
}
|
||||
}
|
||||
_state_current = _state_request;
|
||||
_state_request = NONE;
|
||||
}
|
||||
|
||||
if (local_state == NONE) {
|
||||
if (_state_current == NONE) {
|
||||
_wake_up.down();
|
||||
continue;
|
||||
}
|
||||
if (local_state == PAUSE) {
|
||||
|
||||
if (_vm_type == Virt::SVM)
|
||||
_write_amd_state(state, vmcb, vcpu);
|
||||
if (_vm_type == Virt::VMX)
|
||||
_write_intel_state(state, vmcs, vcpu);
|
||||
|
||||
state.exit_reason = VMEXIT_PAUSED;
|
||||
|
||||
if (_vm_type == Virt::SVM)
|
||||
_read_amd_state(state, vmcb, vcpu);
|
||||
if (_vm_type == Virt::VMX)
|
||||
_read_intel_state(state, vmcs, vcpu);
|
||||
|
||||
/* notify VM handler */
|
||||
Genode::Signal_transmitter(_signal).submit();
|
||||
|
||||
/*
|
||||
* Wait until VM handler is really really done,
|
||||
* otherwise we lose state.
|
||||
*/
|
||||
_handler_ready.down();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (local_state != RUN) {
|
||||
Genode::error("unknown vcpu state ", (int)local_state);
|
||||
if (_state_current != RUN && _state_current != PAUSE) {
|
||||
Genode::error("unknown vcpu state ", (int)_state_current);
|
||||
while (true) { _remote_lock.lock(); }
|
||||
}
|
||||
|
||||
@@ -379,21 +355,21 @@ struct Vcpu : Genode::Thread
|
||||
if (reason == 0x400) /* no NPT support */
|
||||
reason = 0xfc;
|
||||
|
||||
/* remotely PAUSE was called */
|
||||
if (l4_error(tag) && reason == 0x60) {
|
||||
reason = VMEXIT_PAUSED;
|
||||
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
if (_remote == PAUSE) {
|
||||
_remote = NONE;
|
||||
_wake_up.down();
|
||||
}
|
||||
_state_request = NONE;
|
||||
_state_current = PAUSE;
|
||||
|
||||
/* consume notification */
|
||||
while (vcpu->sticky_flags) {
|
||||
Fiasco::l4_cap_idx_t tid = native_thread().kcap;
|
||||
Fiasco::l4_cap_idx_t irq = tid + Fiasco::TASK_VCPU_IRQ_CAP;
|
||||
l4_irq_receive(irq, L4_IPC_RECV_TIMEOUT_0);
|
||||
/* remotely PAUSE was called */
|
||||
if (l4_error(tag) && reason == 0x60) {
|
||||
reason = VMEXIT_PAUSED;
|
||||
|
||||
/* consume notification */
|
||||
while (vcpu->sticky_flags) {
|
||||
Fiasco::l4_cap_idx_t tid = native_thread().kcap;
|
||||
Fiasco::l4_cap_idx_t irq = tid + Fiasco::TASK_VCPU_IRQ_CAP;
|
||||
l4_irq_receive(irq, L4_IPC_RECV_TIMEOUT_0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -404,21 +380,21 @@ struct Vcpu : Genode::Thread
|
||||
if (_vm_type == Virt::VMX) {
|
||||
reason = Fiasco::l4_vm_vmx_read_32(vmcs, Vmcs::EXI_REASON);
|
||||
|
||||
/* remotely PAUSE was called */
|
||||
if (l4_error(tag) && reason == 0x1) {
|
||||
reason = VMEXIT_PAUSED;
|
||||
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
if (_remote == PAUSE) {
|
||||
_remote = NONE;
|
||||
_wake_up.down();
|
||||
}
|
||||
_state_request = NONE;
|
||||
_state_current = PAUSE;
|
||||
|
||||
/* consume notification */
|
||||
while (vcpu->sticky_flags) {
|
||||
Fiasco::l4_cap_idx_t tid = native_thread().kcap;
|
||||
Fiasco::l4_cap_idx_t irq = tid + Fiasco::TASK_VCPU_IRQ_CAP;
|
||||
l4_irq_receive(irq, L4_IPC_RECV_TIMEOUT_0);
|
||||
/* remotely PAUSE was called */
|
||||
if (l4_error(tag) && reason == 0x1) {
|
||||
reason = VMEXIT_PAUSED;
|
||||
|
||||
/* consume notification */
|
||||
while (vcpu->sticky_flags) {
|
||||
Fiasco::l4_cap_idx_t tid = native_thread().kcap;
|
||||
Fiasco::l4_cap_idx_t irq = tid + Fiasco::TASK_VCPU_IRQ_CAP;
|
||||
l4_irq_receive(irq, L4_IPC_RECV_TIMEOUT_0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -615,11 +591,14 @@ struct Vcpu : Genode::Thread
|
||||
|
||||
state.efer.value(l4_vm_vmx_read(vmcs, Vmcs::EFER));
|
||||
|
||||
state.star.value(l4_vm_vmx_read(vmcs, Vmcs::MSR_STAR));
|
||||
state.lstar.value(l4_vm_vmx_read(vmcs, Vmcs::MSR_LSTAR));
|
||||
state.fmask.value(l4_vm_vmx_read(vmcs, Vmcs::MSR_FMASK));
|
||||
state.kernel_gs_base.value(l4_vm_vmx_read(vmcs, Vmcs::KERNEL_GS_BASE));
|
||||
|
||||
/* XXX missing */
|
||||
#if 0
|
||||
if (state.pdpte_0_updated() || state.pdpte_1_updated() ||
|
||||
if (state.star_updated() || state.lstar_updated() ||
|
||||
state.fmask_updated() || state.kernel_gs_base_updated()) {
|
||||
if (state.tpr_updated() || state.tpr_threshold_updated()) {
|
||||
#endif
|
||||
}
|
||||
@@ -807,12 +786,24 @@ struct Vcpu : Genode::Thread
|
||||
l4_vm_vmx_write(vmcs, Vmcs::TSC_OFF_HI, (_tsc_offset >> 32) & 0xffffffffu);
|
||||
}
|
||||
|
||||
if (state.star.valid() || state.lstar.valid() ||
|
||||
state.fmask.valid() || state.kernel_gs_base.valid())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
if (state.star.valid())
|
||||
l4_vm_vmx_write(vmcs, Vmcs::MSR_STAR, state.star.value());
|
||||
|
||||
if (state.tpr.valid() || state.tpr_threshold.valid())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
if (state.lstar.valid())
|
||||
l4_vm_vmx_write(vmcs, Vmcs::MSR_LSTAR, state.lstar.value());
|
||||
|
||||
if (state.fmask.valid())
|
||||
l4_vm_vmx_write(vmcs, Vmcs::MSR_FMASK, state.fmask.value());
|
||||
|
||||
if (state.kernel_gs_base.valid())
|
||||
l4_vm_vmx_write(vmcs, Vmcs::KERNEL_GS_BASE, state.kernel_gs_base.value());
|
||||
|
||||
if (state.tpr.valid() || state.tpr_threshold.valid()) {
|
||||
if (_show_error_unsupported_tpr) {
|
||||
_show_error_unsupported_tpr = false;
|
||||
Genode::error("TPR & TPR_THRESHOLD not supported on Fiasco.OC");
|
||||
}
|
||||
}
|
||||
|
||||
if (state.dr7.valid())
|
||||
l4_vm_vmx_write(vmcs, Vmcs::DR7, state.dr7.value());
|
||||
@@ -958,14 +949,14 @@ struct Vcpu : Genode::Thread
|
||||
l4_vm_vmx_write(vmcs, Vmcs::GDTR_LIMIT, state.gdtr.value().limit);
|
||||
}
|
||||
|
||||
if (state.pdpte_0.valid())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
if (state.pdpte_1.valid())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
if (state.pdpte_2.valid())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
if (state.pdpte_3.valid())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
if (state.pdpte_0.valid() || state.pdpte_1.valid() ||
|
||||
state.pdpte_2.valid() || state.pdpte_3.valid())
|
||||
{
|
||||
if (_show_error_unsupported_pdpte) {
|
||||
_show_error_unsupported_pdpte = false;
|
||||
Genode::error("PDPTE 0/1/2/3 not supported on Fiasco.OC");
|
||||
}
|
||||
}
|
||||
|
||||
if (state.sysenter_cs.valid())
|
||||
l4_vm_vmx_write(vmcs, Vmcs::SYSENTER_CS,
|
||||
@@ -976,6 +967,13 @@ struct Vcpu : Genode::Thread
|
||||
if (state.sysenter_ip.valid())
|
||||
l4_vm_vmx_write(vmcs, Vmcs::SYSENTER_IP,
|
||||
state.sysenter_ip.value());
|
||||
|
||||
if (state.fpu.valid()) {
|
||||
if (_show_error_unsupported_fpu) {
|
||||
_show_error_unsupported_fpu = false;
|
||||
Genode::error("FPU guest state not supported on Fiasco.OC");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _write_amd_state(Vm_state &state, Fiasco::l4_vm_svm_vmcb_t *vmcb,
|
||||
@@ -1021,8 +1019,12 @@ struct Vcpu : Genode::Thread
|
||||
state.fmask.value() || state.kernel_gs_base.value())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
|
||||
if (state.tpr.valid() || state.tpr_threshold.valid())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
if (state.tpr.valid() || state.tpr_threshold.valid()) {
|
||||
if (_show_error_unsupported_tpr) {
|
||||
_show_error_unsupported_tpr = false;
|
||||
Genode::error("TPR & TPR_THRESHOLD not supported on Fiasco.OC");
|
||||
}
|
||||
}
|
||||
|
||||
if (state.dr7.valid())
|
||||
vmcb->state_save_area.dr7 = state.dr7.value();
|
||||
@@ -1155,14 +1157,14 @@ struct Vcpu : Genode::Thread
|
||||
vmcb->state_save_area.gdtr.limit = state.gdtr.value().limit;
|
||||
}
|
||||
|
||||
if (state.pdpte_0.valid())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
if (state.pdpte_1.valid())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
if (state.pdpte_2.valid())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
if (state.pdpte_3.valid())
|
||||
Genode::error(__LINE__, " not implemented");
|
||||
if (state.pdpte_0.valid() || state.pdpte_1.valid() ||
|
||||
state.pdpte_2.valid() || state.pdpte_3.valid())
|
||||
{
|
||||
if (_show_error_unsupported_pdpte) {
|
||||
_show_error_unsupported_pdpte = false;
|
||||
Genode::error("PDPTE 0/1/2/3 not supported on Fiasco.OC");
|
||||
}
|
||||
}
|
||||
|
||||
if (state.sysenter_cs.valid())
|
||||
vmcb->state_save_area.sysenter_cs = state.sysenter_cs.value();
|
||||
@@ -1170,6 +1172,13 @@ struct Vcpu : Genode::Thread
|
||||
vmcb->state_save_area.sysenter_esp = state.sysenter_sp.value();
|
||||
if (state.sysenter_ip.valid())
|
||||
vmcb->state_save_area.sysenter_eip = state.sysenter_ip.value();
|
||||
|
||||
if (state.fpu.valid()) {
|
||||
if (_show_error_unsupported_fpu) {
|
||||
_show_error_unsupported_fpu = false;
|
||||
Genode::error("FPU guest state not supported on Fiasco.OC");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
@@ -1197,34 +1206,40 @@ struct Vcpu : Genode::Thread
|
||||
*reinterpret_cast<Fiasco::l4_cap_idx_t *>(_state) = 0UL;
|
||||
}
|
||||
|
||||
void resume() {
|
||||
void resume()
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
|
||||
if (_remote == RUN || _remote == PAUSE)
|
||||
if (_state_request == RUN || _state_request == PAUSE)
|
||||
return;
|
||||
|
||||
_remote = RUN;
|
||||
_wake_up.up();
|
||||
_state_request = RUN;
|
||||
|
||||
if (_state_current == NONE)
|
||||
_wake_up.up();
|
||||
}
|
||||
|
||||
void pause() {
|
||||
void pause()
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
|
||||
if (_remote == PAUSE)
|
||||
if (_state_request == PAUSE)
|
||||
return;
|
||||
|
||||
_remote = PAUSE;
|
||||
_state_request = PAUSE;
|
||||
|
||||
/* recall vCPU */
|
||||
Fiasco::l4_cap_idx_t tid = native_thread().kcap;
|
||||
Fiasco::l4_cap_idx_t irq = tid + Fiasco::TASK_VCPU_IRQ_CAP;
|
||||
Fiasco::l4_irq_trigger(irq);
|
||||
|
||||
_wake_up.up();
|
||||
if (_state_current == NONE)
|
||||
_wake_up.up();
|
||||
}
|
||||
|
||||
void terminate() {
|
||||
_remote = TERMINATE;
|
||||
void terminate()
|
||||
{
|
||||
_state_request = TERMINATE;
|
||||
_wake_up.up();
|
||||
}
|
||||
};
|
||||
|
||||
27
repos/base-hw/include/spec/arm_64/kernel/interface_support.h
Normal file
27
repos/base-hw/include/spec/arm_64/kernel/interface_support.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* \brief Interface between kernel and userland
|
||||
* \author Stefan Kalkowski
|
||||
* \date 2019-05-09
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2019 Genode Labs GmbH
|
||||
*
|
||||
* This file is part of the Genode OS framework, which is distributed
|
||||
* under the terms of the GNU Affero General Public License version 3.
|
||||
*/
|
||||
|
||||
#ifndef _INCLUDE__SPEC__ARM_64__KERNEL__INTERFACE_SUPPORT_H_
|
||||
#define _INCLUDE__SPEC__ARM_64__KERNEL__INTERFACE_SUPPORT_H_
|
||||
|
||||
/* Genode includes */
|
||||
#include <base/stdint.h>
|
||||
|
||||
namespace Kernel
|
||||
{
|
||||
typedef Genode::uint64_t Call_arg;
|
||||
typedef Genode::uint64_t Call_ret;
|
||||
typedef Genode::uint64_t Call_ret_64;
|
||||
}
|
||||
|
||||
#endif /* _INCLUDE__SPEC__ARM_64__KERNEL__INTERFACE_SUPPORT_H_ */
|
||||
3
repos/base-hw/lib/mk/spec/arm_64/startup-hw.mk
Normal file
3
repos/base-hw/lib/mk/spec/arm_64/startup-hw.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
include $(BASE_DIR)/lib/mk/startup.inc
|
||||
|
||||
vpath crt0.s $(BASE_DIR)/src/lib/startup/spec/arm_64
|
||||
3
repos/base-hw/lib/mk/spec/arm_64/syscall-hw.mk
Normal file
3
repos/base-hw/lib/mk/spec/arm_64/syscall-hw.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
SRC_CC += kernel/interface.cc
|
||||
|
||||
vpath kernel/interface.cc $(REP_DIR)/src/lib/base/arm_64
|
||||
@@ -9,9 +9,9 @@ INC_DIR += $(REP_DIR)/src/core/spec/rpi
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += platform_services.cc
|
||||
SRC_CC += spec/arm/bcm2835_pic.cc
|
||||
SRC_CC += spec/arm/bcm2835_system_timer.cc
|
||||
SRC_CC += spec/arm/cpu.cc
|
||||
SRC_CC += spec/rpi/timer.cc
|
||||
SRC_CC += spec/rpi/pic.cc
|
||||
|
||||
# include less specific configuration
|
||||
include $(REP_DIR)/lib/mk/spec/arm_v6/core-hw.inc
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/bootstrap/spec/arndale
|
||||
|
||||
SRC_CC += bootstrap/spec/arm/cortex_a15_cpu.cc
|
||||
SRC_CC += bootstrap/spec/arndale/pic.cc
|
||||
SRC_CC += bootstrap/spec/arm/gicv2.cc
|
||||
SRC_CC += bootstrap/spec/arndale/platform.cc
|
||||
SRC_CC += bootstrap/spec/arm/arm_v7_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
|
||||
@@ -4,7 +4,7 @@ SRC_S += bootstrap/spec/arm/crt0.s
|
||||
|
||||
SRC_CC += bootstrap/spec/arm/cpu.cc
|
||||
SRC_CC += bootstrap/spec/arm/cortex_a9_mmu.cc
|
||||
SRC_CC += bootstrap/spec/arm/pic.cc
|
||||
SRC_CC += bootstrap/spec/arm/gicv2.cc
|
||||
SRC_CC += bootstrap/spec/arm/imx6_platform.cc
|
||||
SRC_CC += bootstrap/spec/arm/arm_v7_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/bootstrap/spec/imx7d_sabre
|
||||
|
||||
SRC_CC += bootstrap/spec/arm/cortex_a15_cpu.cc
|
||||
SRC_CC += bootstrap/spec/arndale/pic.cc
|
||||
SRC_CC += bootstrap/spec/arm/gicv2.cc
|
||||
SRC_CC += bootstrap/spec/imx7d_sabre/platform.cc
|
||||
SRC_CC += bootstrap/spec/arm/arm_v7_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
|
||||
@@ -4,7 +4,7 @@ SRC_S += bootstrap/spec/arm/crt0.s
|
||||
|
||||
SRC_CC += bootstrap/spec/arm/cpu.cc
|
||||
SRC_CC += bootstrap/spec/arm/cortex_a9_mmu.cc
|
||||
SRC_CC += bootstrap/spec/arm/pic.cc
|
||||
SRC_CC += bootstrap/spec/arm/gicv2.cc
|
||||
SRC_CC += bootstrap/spec/arm/imx6_platform.cc
|
||||
SRC_CC += bootstrap/spec/arm/arm_v7_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/bootstrap/spec/odroid_xu
|
||||
|
||||
SRC_CC += bootstrap/spec/arm/cortex_a15_cpu.cc
|
||||
SRC_CC += bootstrap/spec/arm/pic.cc
|
||||
SRC_CC += bootstrap/spec/arm/gicv2.cc
|
||||
SRC_CC += bootstrap/spec/odroid_xu/platform.cc
|
||||
SRC_CC += bootstrap/spec/arm/arm_v7_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
|
||||
@@ -3,7 +3,7 @@ NR_OF_CPUS = 2
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/bootstrap/spec/panda
|
||||
SRC_CC += bootstrap/spec/arm/cpu.cc
|
||||
SRC_CC += bootstrap/spec/arm/cortex_a9_mmu.cc
|
||||
SRC_CC += bootstrap/spec/arm/pic.cc
|
||||
SRC_CC += bootstrap/spec/arm/gicv2.cc
|
||||
SRC_CC += bootstrap/spec/panda/platform.cc
|
||||
SRC_CC += bootstrap/spec/arm/arm_v7_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
|
||||
@@ -4,7 +4,7 @@ SRC_S += bootstrap/spec/arm/crt0.s
|
||||
|
||||
SRC_CC += bootstrap/spec/arm/cpu.cc
|
||||
SRC_CC += bootstrap/spec/arm/cortex_a9_mmu.cc
|
||||
SRC_CC += bootstrap/spec/arm/pic.cc
|
||||
SRC_CC += bootstrap/spec/arm/gicv2.cc
|
||||
SRC_CC += bootstrap/spec/pbxa9/platform.cc
|
||||
SRC_CC += bootstrap/spec/arm/arm_v7_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
|
||||
@@ -4,7 +4,7 @@ SRC_S += bootstrap/spec/arm/crt0.s
|
||||
|
||||
SRC_CC += bootstrap/spec/arm/cpu.cc
|
||||
SRC_CC += bootstrap/spec/arm/cortex_a9_mmu.cc
|
||||
SRC_CC += bootstrap/spec/arm/pic.cc
|
||||
SRC_CC += bootstrap/spec/arm/gicv2.cc
|
||||
SRC_CC += bootstrap/spec/arm/imx6_platform.cc
|
||||
SRC_CC += bootstrap/spec/arm/arm_v7_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
|
||||
@@ -4,7 +4,7 @@ SRC_S += bootstrap/spec/arm/crt0.s
|
||||
|
||||
SRC_CC += bootstrap/spec/arm/cpu.cc
|
||||
SRC_CC += bootstrap/spec/arm/cortex_a9_mmu.cc
|
||||
SRC_CC += bootstrap/spec/arm/pic.cc
|
||||
SRC_CC += bootstrap/spec/arm/gicv2.cc
|
||||
SRC_CC += bootstrap/spec/zynq/platform.cc
|
||||
SRC_CC += bootstrap/spec/arm/arm_v7_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
|
||||
@@ -9,12 +9,12 @@ INC_DIR += $(REP_DIR)/src/core/spec/arndale
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/arm_v7/virtualization
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += spec/arm_gic/pic.cc
|
||||
SRC_CC += spec/arndale/platform_services.cc
|
||||
SRC_CC += kernel/vm_thread_on.cc
|
||||
SRC_CC += spec/arm/gicv2.cc
|
||||
SRC_CC += spec/arm_v7/virtualization/kernel/vm.cc
|
||||
SRC_CC += spec/arm_v7/vm_session_component.cc
|
||||
SRC_CC += spec/arm_v7/virtualization/platform_services.cc
|
||||
SRC_CC += spec/arm_v7/virtualization/vm_session_component.cc
|
||||
SRC_CC += spec/arm_v7/vm_session_component.cc
|
||||
SRC_CC += vm_session_common.cc
|
||||
|
||||
# add assembly sources
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/imx53_qsb
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/imx53
|
||||
|
||||
SRC_CC += spec/imx53/pic.cc
|
||||
SRC_CC += spec/imx53/timer.cc
|
||||
SRC_CC += spec/arm/imx_epit.cc
|
||||
SRC_CC += spec/arm/imx_tzic.cc
|
||||
|
||||
# include less specific configuration
|
||||
include $(REP_DIR)/lib/mk/spec/cortex_a8/core-hw.inc
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/arm_v7/trustzone
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/imx53/trustzone
|
||||
|
||||
SRC_CC += spec/imx53/trustzone/platform_services.cc
|
||||
SRC_CC += kernel/vm_thread_on.cc
|
||||
SRC_CC += spec/arm_v7/trustzone/kernel/vm.cc
|
||||
SRC_CC += spec/arm_v7/vm_session_component.cc
|
||||
SRC_CC += spec/arm_v7/trustzone/platform_services.cc
|
||||
SRC_CC += spec/arm_v7/trustzone/vm_session_component.cc
|
||||
SRC_CC += spec/arm_v7/vm_session_component.cc
|
||||
|
||||
SRC_S += spec/arm_v7/trustzone/exception_vector.s
|
||||
|
||||
|
||||
@@ -9,13 +9,13 @@ INC_DIR += $(REP_DIR)/src/core/spec/imx7d_sabre
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/arm_v7/virtualization
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += spec/arm_gic/pic.cc
|
||||
SRC_CC += spec/arndale/platform_services.cc
|
||||
SRC_CC += spec/imx7d_sabre/timer.cc
|
||||
SRC_CC += kernel/vm_thread_on.cc
|
||||
SRC_CC += spec/arm/generic_timer.cc
|
||||
SRC_CC += spec/arm/gicv2.cc
|
||||
SRC_CC += spec/arm_v7/virtualization/kernel/vm.cc
|
||||
SRC_CC += spec/arm_v7/vm_session_component.cc
|
||||
SRC_CC += spec/arm_v7/virtualization/platform_services.cc
|
||||
SRC_CC += spec/arm_v7/virtualization/vm_session_component.cc
|
||||
SRC_CC += spec/arm_v7/vm_session_component.cc
|
||||
SRC_CC += vm_session_common.cc
|
||||
|
||||
# add assembly sources
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/odroid_xu
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += spec/arm_gic/pic.cc
|
||||
SRC_CC += spec/arm/gicv2.cc
|
||||
SRC_CC += kernel/vm_thread_off.cc
|
||||
SRC_CC += platform_services.cc
|
||||
|
||||
|
||||
@@ -11,13 +11,13 @@ INC_DIR += $(REP_DIR)/src/core/spec/arm_v7/trustzone
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/imx53/trustzone
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += spec/imx53/trustzone/platform_services.cc
|
||||
SRC_CC += kernel/vm_thread_on.cc
|
||||
SRC_CC += spec/arm/imx_epit.cc
|
||||
SRC_CC += spec/arm/imx_tzic.cc
|
||||
SRC_CC += spec/arm_v7/trustzone/kernel/vm.cc
|
||||
SRC_CC += spec/arm_v7/vm_session_component.cc
|
||||
SRC_CC += spec/arm_v7/trustzone/platform_services.cc
|
||||
SRC_CC += spec/arm_v7/trustzone/vm_session_component.cc
|
||||
SRC_CC += spec/imx53/pic.cc
|
||||
SRC_CC += spec/imx53/timer.cc
|
||||
SRC_CC += spec/arm_v7/vm_session_component.cc
|
||||
|
||||
# add assembly sources
|
||||
SRC_S += spec/arm_v7/trustzone/exception_vector.s
|
||||
|
||||
12
repos/base-hw/lib/mk/spec/arm_v8/bootstrap-hw-imx8q_evk.mk
Normal file
12
repos/base-hw/lib/mk/spec/arm_v8/bootstrap-hw-imx8q_evk.mk
Normal file
@@ -0,0 +1,12 @@
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/bootstrap/spec/imx8q_evk
|
||||
|
||||
SRC_CC += bootstrap/spec/arm/gicv3.cc
|
||||
SRC_CC += bootstrap/spec/arm_64/cortex_a53_mmu.cc
|
||||
SRC_CC += bootstrap/spec/imx8q_evk/platform.cc
|
||||
SRC_CC += lib/base/arm_64/kernel/interface.cc
|
||||
SRC_CC += spec/64bit/memory_map.cc
|
||||
SRC_S += bootstrap/spec/arm_64/crt0.s
|
||||
|
||||
vpath spec/64bit/memory_map.cc $(BASE_DIR)/../base-hw/src/lib/hw
|
||||
|
||||
include $(BASE_DIR)/../base-hw/lib/mk/bootstrap-hw.inc
|
||||
11
repos/base-hw/lib/mk/spec/arm_v8/bootstrap-hw-rpi3.mk
Normal file
11
repos/base-hw/lib/mk/spec/arm_v8/bootstrap-hw-rpi3.mk
Normal file
@@ -0,0 +1,11 @@
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/bootstrap/spec/rpi3
|
||||
|
||||
SRC_CC += bootstrap/spec/arm_64/cortex_a53_mmu.cc
|
||||
SRC_CC += bootstrap/spec/rpi3/platform.cc
|
||||
SRC_CC += lib/base/arm_64/kernel/interface.cc
|
||||
SRC_CC += spec/64bit/memory_map.cc
|
||||
SRC_S += bootstrap/spec/arm_64/crt0.s
|
||||
|
||||
vpath spec/64bit/memory_map.cc $(BASE_DIR)/../base-hw/src/lib/hw
|
||||
|
||||
include $(BASE_DIR)/../base-hw/lib/mk/bootstrap-hw.inc
|
||||
24
repos/base-hw/lib/mk/spec/arm_v8/core-hw-imx8q_evk.mk
Normal file
24
repos/base-hw/lib/mk/spec/arm_v8/core-hw-imx8q_evk.mk
Normal file
@@ -0,0 +1,24 @@
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/imx8q_evk
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/arm_v8
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += kernel/cpu_up.cc
|
||||
SRC_CC += kernel/lock.cc
|
||||
SRC_CC += kernel/vm_thread_off.cc
|
||||
SRC_CC += platform_services.cc
|
||||
SRC_CC += spec/64bit/memory_map.cc
|
||||
SRC_CC += spec/arm/generic_timer.cc
|
||||
SRC_CC += spec/arm/gicv3.cc
|
||||
SRC_CC += spec/arm/platform_support.cc
|
||||
SRC_CC += spec/arm_v8/cpu.cc
|
||||
SRC_CC += spec/arm_v8/kernel/cpu.cc
|
||||
SRC_CC += spec/arm_v8/kernel/thread.cc
|
||||
|
||||
#add assembly sources
|
||||
SRC_S += spec/arm_v8/exception_vector.s
|
||||
SRC_S += spec/arm_v8/crt0.s
|
||||
|
||||
vpath spec/64bit/memory_map.cc $(BASE_DIR)/../base-hw/src/lib/hw
|
||||
|
||||
# include less specific configuration
|
||||
include $(REP_DIR)/lib/mk/core-hw.inc
|
||||
24
repos/base-hw/lib/mk/spec/arm_v8/core-hw-rpi3.mk
Normal file
24
repos/base-hw/lib/mk/spec/arm_v8/core-hw-rpi3.mk
Normal file
@@ -0,0 +1,24 @@
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/rpi3
|
||||
INC_DIR += $(REP_DIR)/src/core/spec/arm_v8
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += platform_services.cc
|
||||
SRC_CC += kernel/vm_thread_off.cc
|
||||
SRC_CC += kernel/cpu_up.cc
|
||||
SRC_CC += kernel/lock.cc
|
||||
SRC_CC += spec/arm_v8/cpu.cc
|
||||
SRC_CC += spec/arm_v8/kernel/thread.cc
|
||||
SRC_CC += spec/arm_v8/kernel/cpu.cc
|
||||
SRC_CC += spec/arm/platform_support.cc
|
||||
SRC_CC += spec/arm/bcm2837_pic.cc
|
||||
SRC_CC += spec/arm/generic_timer.cc
|
||||
SRC_CC += spec/64bit/memory_map.cc
|
||||
|
||||
#add assembly sources
|
||||
SRC_S += spec/arm_v8/exception_vector.s
|
||||
SRC_S += spec/arm_v8/crt0.s
|
||||
|
||||
vpath spec/64bit/memory_map.cc $(BASE_DIR)/../base-hw/src/lib/hw
|
||||
|
||||
# include less specific configuration
|
||||
include $(REP_DIR)/lib/mk/core-hw.inc
|
||||
3
repos/base-hw/lib/mk/spec/arm_v8/ld-hw.mk
Normal file
3
repos/base-hw/lib/mk/spec/arm_v8/ld-hw.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
BASE_LIBS += base-hw-common base-hw
|
||||
|
||||
include $(BASE_DIR)/lib/mk/spec/arm_64/ld-platform.inc
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
# add include paths
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/core/spec/cortex_a15
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/core/spec/arm_gic
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += spec/cortex_a15/cpu.cc
|
||||
|
||||
@@ -6,12 +6,11 @@
|
||||
|
||||
# add include paths
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/core/spec/cortex_a9
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/core/spec/arm_gic
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += spec/cortex_a9/board.cc
|
||||
SRC_CC += spec/cortex_a9/timer.cc
|
||||
SRC_CC += spec/arm_gic/pic.cc
|
||||
SRC_CC += spec/arm/cortex_a9_private_timer.cc
|
||||
SRC_CC += spec/arm/gicv2.cc
|
||||
SRC_CC += spec/arm/kernel/lock.cc
|
||||
SRC_CC += kernel/vm_thread_off.cc
|
||||
SRC_CC += kernel/cpu_mp.cc
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/core/spec/exynos5
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += spec/exynos5/timer.cc
|
||||
SRC_CC += spec/arm/exynos_mct.cc
|
||||
|
||||
# include less specific configuration
|
||||
include $(BASE_DIR)/../base-hw/lib/mk/spec/cortex_a15/core-hw.inc
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
REQUIRES = muen
|
||||
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/bootstrap/spec/x86_64
|
||||
|
||||
SRC_CC += bootstrap/spec/x86_64/platform_muen.cc
|
||||
|
||||
@@ -17,7 +17,7 @@ SRC_CC += kernel/cpu_mp.cc
|
||||
SRC_CC += kernel/vm_thread_off.cc
|
||||
SRC_CC += kernel/lock.cc
|
||||
SRC_CC += spec/x86_64/pic.cc
|
||||
SRC_CC += spec/x86_64/timer.cc
|
||||
SRC_CC += spec/x86_64/pit.cc
|
||||
SRC_CC += spec/x86_64/kernel/thread_exception.cc
|
||||
SRC_CC += spec/x86_64/platform_support.cc
|
||||
SRC_CC += spec/x86/platform_services.cc
|
||||
|
||||
@@ -1 +1 @@
|
||||
2019-05-15 f46f1762b82441ee270fafe09103e12c98bfe3a5
|
||||
2019-07-08 abc6d82ca4a240319850c788f29cde2655eab1d1
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
BOARD = arndale
|
||||
|
||||
include $(GENODE_DIR)/repos/base-hw/recipes/src/base-hw_content.inc
|
||||
|
||||
content: enable_board_spec
|
||||
|
||||
@@ -1 +1 @@
|
||||
2019-05-27 867fe6ff560b32febc8452244e8b6afd5fe1f436
|
||||
2019-08-27 d4178964debbd47e4c0d37a127f51662054cd237
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
BOARD = imx53_qsb
|
||||
|
||||
include $(GENODE_DIR)/repos/base-hw/recipes/src/base-hw_content.inc
|
||||
|
||||
content: enable_board_spec
|
||||
|
||||
@@ -1 +1 @@
|
||||
2019-05-27 867e45e351eca08f2ede67f21ec91c46c3c71685
|
||||
2019-08-27 5b6d3f57e76de132294eca0418ae63ff18a4d921
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
BOARD = imx53_qsb_tz
|
||||
|
||||
include $(GENODE_DIR)/repos/base-hw/recipes/src/base-hw_content.inc
|
||||
|
||||
content: enable_board_spec
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user