Compare commits
1610 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
4d661eebe9 | ||
|
23ce296c68 | ||
|
38483e5e94 | ||
|
8c41000862 | ||
|
c2ed1e9ba0 | ||
|
c5f16c9f0d | ||
|
0e945a3426 | ||
|
419cf93502 | ||
|
8ef2f7c77c | ||
|
6e902bcfcb | ||
|
dd7a04e7d7 | ||
|
7fd39ffbdd | ||
|
a231d2c13e | ||
|
8e4500aa57 | ||
|
ef1297689d | ||
|
e5f627ab85 | ||
|
8420ccc6e9 | ||
|
683e43dbc6 | ||
|
a1f499f4d1 | ||
|
4eba742ee6 | ||
|
429df8adbe | ||
|
a4f85470f7 | ||
|
7726a31830 | ||
|
13aef57841 | ||
|
cf440b6530 | ||
|
ce7b252c4f | ||
|
4902e9b35f | ||
|
2e6c55946c | ||
|
dd7d51d12f | ||
|
ad6d3128f8 | ||
|
2fed41d462 | ||
|
d0d33d40ce | ||
|
83ac83015a | ||
|
e8d4baca77 | ||
|
75a073d5ff | ||
|
7137562135 | ||
|
65d822e680 | ||
|
7a2c1c7b11 | ||
|
cdc6e82bbc | ||
|
43529966a0 | ||
|
4a973324da | ||
|
e18d45cdf7 | ||
|
eb59493a06 | ||
|
010c408044 | ||
|
1cb930b5d1 | ||
|
9ed576fbcd | ||
|
419a2a75df | ||
|
5316abe56c | ||
|
4d616e372f | ||
|
15790c842c | ||
|
d7c8d7d7c5 | ||
|
e51f96f741 | ||
|
1d380128aa | ||
|
9f87ad2c2f | ||
|
61ef0e4aa5 | ||
|
8f9c1535a4 | ||
|
4b6e8ca3a1 | ||
|
a088887acf | ||
|
41c7e31b0a | ||
|
16f55f237c | ||
|
330a7b5c2c | ||
|
672788d26b | ||
|
b931ca89a3 | ||
|
65335ffa48 | ||
|
8168e285bc | ||
|
0ae7a8b765 | ||
|
3ca8477901 | ||
|
1f9080a7c5 | ||
|
977c807418 | ||
|
03a27b89ee | ||
|
44a7045481 | ||
|
c9cd886a4b | ||
|
8b93a173fb | ||
|
8afb45e0a6 | ||
|
2626b3eab4 | ||
|
20646cdbe8 | ||
|
ba2cef5b54 | ||
|
1f4d7c772e | ||
|
a439406bdc | ||
|
9df11973ca | ||
|
4475263bdf | ||
|
47f154c8e5 | ||
|
ca025203a8 | ||
|
2f46a1780b | ||
|
adbdc5c1bd | ||
|
7df8a69b26 | ||
|
bd8112ae2b | ||
|
59a1a30ae1 | ||
|
3b3f94757c | ||
|
f3a672908f | ||
|
8c3fa461f3 | ||
|
c807d55798 | ||
|
26203e7292 | ||
|
2710df765b | ||
|
16a444c501 | ||
|
817c6a7a4c | ||
|
1fd7d9dc90 | ||
|
f488a40120 | ||
|
651e3e06a5 | ||
|
da538cb38f | ||
|
b911c4896d | ||
|
765e5df0dd | ||
|
ea2dbdba2e | ||
|
d027dcef03 | ||
|
6ffbae39b5 | ||
|
4954a0f611 | ||
|
8b32e404e1 | ||
|
72fb5a915a | ||
|
2475e022e2 | ||
|
64c0df58e2 | ||
|
a0da5063ca | ||
|
c262b44d7c | ||
|
12367e0db1 | ||
|
21c3c44ef5 | ||
|
e7bdc5fb8f | ||
|
98ecaa4a55 | ||
|
d9c82695f5 | ||
|
166c75c778 | ||
|
268a18d58c | ||
|
da3812208e | ||
|
b3ebf5ba0b | ||
|
eab108f68b | ||
|
3b23fa6092 | ||
|
ce6cdb3608 | ||
|
921bb34c91 | ||
|
fc84ae7aa3 | ||
|
c3cef7e7b0 | ||
|
7ab6ee6e71 | ||
|
3d5475d66c | ||
|
af6029ba1a | ||
|
3cd06cc427 | ||
|
6de377ef78 | ||
|
bf299f0d67 | ||
|
b77f9a3d84 | ||
|
92982b669c | ||
|
45174112b6 | ||
|
890117b880 | ||
|
d7fc0688e5 | ||
|
b5445ade38 | ||
|
ef485f66ff | ||
|
34d2600592 | ||
|
87a63fab53 | ||
|
205437b759 | ||
|
c8b840ffba | ||
|
ad87a82ca7 | ||
|
93f12985e6 | ||
|
d15bda4fab | ||
|
a07fca1eeb | ||
|
d5d6ecf63a | ||
|
c28382eda2 | ||
|
bd26394496 | ||
|
6a2495d8d9 | ||
|
d292c4f0ea | ||
|
6b1e7dd061 | ||
|
43b0ed7089 | ||
|
aa990125b8 | ||
|
060df17f1d | ||
|
ae5bc43d3b | ||
|
ae5ba37a55 | ||
|
bf3f94dbb2 | ||
|
cba09c8f13 | ||
|
03511b4770 | ||
|
40729a58ea | ||
|
c08585674a | ||
|
df89c7d79d | ||
|
1a81e0a147 | ||
|
e31c7e38c0 | ||
|
a883c95bd8 | ||
|
84c3b5e051 | ||
|
114f87bf2e | ||
|
19c35f1a8f | ||
|
c07f165b08 | ||
|
fbd13a84cf | ||
|
4c3014feb2 | ||
|
63fcc4acc2 | ||
|
dd63dc1dc5 | ||
|
ed2494e545 | ||
|
9f90964415 | ||
|
cca3c90ed9 | ||
|
780f99b61c | ||
|
423b812e48 | ||
|
9965c8b5b4 | ||
|
91fe94ac9f | ||
|
166c30309e | ||
|
17c847b5ea | ||
|
2819edb497 | ||
|
692fc58a6f | ||
|
adec2e6c45 | ||
|
81016b5c24 | ||
|
7c92712cf0 | ||
|
06545e0744 | ||
|
314ace1604 | ||
|
ae0a4f609c | ||
|
43b7e60e3e | ||
|
e45f70423e | ||
|
96d9b75669 | ||
|
9395cf9a2f | ||
|
f82e68c900 | ||
|
af6cd3f0b4 | ||
|
d2ebc4d39f | ||
|
5a04746714 | ||
|
0461005908 | ||
|
1868991a36 | ||
|
ad12b4f440 | ||
|
e66fcb87fe | ||
|
ca07e1cff9 | ||
|
cdf7ec6faa | ||
|
6f5be8ff30 | ||
|
a2a9e8ea8f | ||
|
08e8067a58 | ||
|
644b0f5f45 | ||
|
7f5adef634 | ||
|
1162f7a1fe | ||
|
b3a28c3a66 | ||
|
82fe13eef8 | ||
|
dba65d24b9 | ||
|
553335fbe2 | ||
|
7cfedc8b1b | ||
|
e20165d7bb | ||
|
93572c573a | ||
|
cecf5f01ea | ||
|
6a4c517850 | ||
|
80bf8efeaa | ||
|
dde3278708 | ||
|
631d77eca9 | ||
|
17a07b38a1 | ||
|
bfcea14a16 | ||
|
01c190e382 | ||
|
2bc46c9601 | ||
|
d38baae038 | ||
|
3e3b78a391 | ||
|
e51978f26f | ||
|
9693bcb4c4 | ||
|
411aba22bf | ||
|
00562ebcde | ||
|
8112c95a06 | ||
|
d9b646d96a | ||
|
64b341e722 | ||
|
5f012d0778 | ||
|
f0de94d436 | ||
|
fcdb03d079 | ||
|
7fb5bf8893 | ||
|
ec0a85b580 | ||
|
2bd18edc84 | ||
|
5cbf45e1e8 | ||
|
872079656b | ||
|
d910fec9a6 | ||
|
a1b9f0588b | ||
|
a256bd6fe5 | ||
|
bd91aa7609 | ||
|
b052683d46 | ||
|
9df60d36b2 | ||
|
42efd7f593 | ||
|
fa06bcba06 | ||
|
7b8ac0030c | ||
|
dfbb634ae1 | ||
|
ca4b587f95 | ||
|
b4767ce169 | ||
|
3a60e5c827 | ||
|
11e1950d26 | ||
|
1e9344481a | ||
|
8171364d06 | ||
|
eaa31d95c2 | ||
|
c87c1abffb | ||
|
25b717ad84 | ||
|
cfdd488440 | ||
|
e007893a8e | ||
|
2369818c3d | ||
|
9ede493c73 | ||
|
f451bfb1a5 | ||
|
ffc0d2455c | ||
|
14a0876de8 | ||
|
d4f2d14d52 | ||
|
2179c7fdb7 | ||
|
9523e3b790 | ||
|
70191da272 | ||
|
265dc1d793 | ||
|
92d49da163 | ||
|
387ec919d9 | ||
|
2a12b6a9a4 | ||
|
7866193eee | ||
|
cedd4d14f4 | ||
|
716c8f0711 | ||
|
ecb4e31531 | ||
|
7c55aab199 | ||
|
9a97df3010 | ||
|
beb2826ffd | ||
|
3c53300002 | ||
|
bffa9066fa | ||
|
51f1822421 | ||
|
8cb2f185d1 | ||
|
9f2faca246 | ||
|
4ee03170e0 | ||
|
025d20eaeb | ||
|
86425c81af | ||
|
1c2f5cea7e | ||
|
74edda99dd | ||
|
9d40a0be2f | ||
|
a1a3be1df8 | ||
|
4d75dbd1c1 | ||
|
96b49b5acb | ||
|
ef72defdce | ||
|
52c553e838 | ||
|
42f704a967 | ||
|
e9ac9f97e8 | ||
|
af20628a48 | ||
|
63d26b82a3 | ||
|
aa9bb44504 | ||
|
d252776668 | ||
|
35e65a8bc3 | ||
|
86bc2e708d | ||
|
372573eaff | ||
|
3c9291b335 | ||
|
034920c1d4 | ||
|
100f92c54f | ||
|
4c61294498 | ||
|
3d352a7218 | ||
|
7f2c0bf838 | ||
|
c5ec497bbc | ||
|
251d443e8b | ||
|
4534ed7a62 | ||
|
525c61f74e | ||
|
c0edb925e6 | ||
|
63cde524b7 | ||
|
2328144577 | ||
|
74efac1a3f | ||
|
823a329bb8 | ||
|
a17864c2c9 | ||
|
8264122122 | ||
|
197cfe03d5 | ||
|
de19bc372b | ||
|
759aa17e79 | ||
|
a49cd32da0 | ||
|
6a803bfae6 | ||
|
f75172fdcc | ||
|
2793716910 | ||
|
f39e105deb | ||
|
148207a8b7 | ||
|
61c2446142 | ||
|
2f5aec4b50 | ||
|
e9f0ed5960 | ||
|
ba9f0c3817 | ||
|
a0e32aafee | ||
|
48894ea620 | ||
|
beb58a93cf | ||
|
40c8cc9cde | ||
|
0d54a65819 | ||
|
0bffd0a1ae | ||
|
7ed6130428 | ||
|
7413815a01 | ||
|
1263622106 | ||
|
8ab5e15aca | ||
|
13c44457f1 | ||
|
cfad59a516 | ||
|
36b6b055bd | ||
|
9f47f958b3 | ||
|
eacd74f223 | ||
|
fb2ebbced7 | ||
|
39ede0af15 | ||
|
174d2635fd | ||
|
9a9b2778a1 | ||
|
ad6c407927 | ||
|
2585a999bb | ||
|
4225a796fa | ||
|
dd4acf643f | ||
|
fbdccebb66 | ||
|
fd8c596c40 | ||
|
e4aee2b178 | ||
|
4b0c8ccb14 | ||
|
80ed5012ef | ||
|
113d937c80 | ||
|
9ea73d1999 | ||
|
193f39bfd5 | ||
|
78b29f4567 | ||
|
d7326282f9 | ||
|
9a1d01f48e | ||
|
16c2ea3bcb | ||
|
ed0e2bd5ee | ||
|
a86af49b9d | ||
|
0d76a30767 | ||
|
a012136fc8 | ||
|
d13a57915d | ||
|
4af3df35e5 | ||
|
907a81e2a7 | ||
|
df853501f8 | ||
|
d43154486d | ||
|
86f845ad0d | ||
|
bf3c648fa7 | ||
|
ca342e1082 | ||
|
343644006f | ||
|
12b2a3a477 | ||
|
37cb922374 | ||
|
0c3806db69 | ||
|
dc8074560c | ||
|
34ffa64ba8 | ||
|
53bf72b131 | ||
|
0822ce8b08 | ||
|
7b49d1b198 | ||
|
a0ff874489 | ||
|
500da54891 | ||
|
1e638ba27c | ||
|
1542d16173 | ||
|
380411422e | ||
|
9ac0984c5a | ||
|
134d740168 | ||
|
161d090d22 | ||
|
57789db4d2 | ||
|
0dd4494063 | ||
|
a36f4f5fc6 | ||
|
17a9849010 | ||
|
63444c7739 | ||
|
071d7f3cef | ||
|
1201fb9a91 | ||
|
d96aaa6634 | ||
|
527fc8515f | ||
|
60a2faf4a0 | ||
|
e1e0b5cbaa | ||
|
274fa64e3d | ||
|
251d86bad1 | ||
|
f3649f03f3 | ||
|
848c37da42 | ||
|
f251a6a439 | ||
|
b9d53a0c8c | ||
|
836881935f | ||
|
6dc05a369e | ||
|
f8fdd7a8de | ||
|
3a59fef511 | ||
|
f99f308826 | ||
|
3b32af950d | ||
|
50139d00bd | ||
|
fa83887e48 | ||
|
e6b96dceab | ||
|
a3e68c9f95 | ||
|
5b89bf4666 | ||
|
f49fcc6bf5 | ||
|
a1a8f58a07 | ||
|
a2035cc4d0 | ||
|
5e78090306 | ||
|
f7bb72333a | ||
|
e8bef613df | ||
|
d190e0fa96 | ||
|
ab0686109e | ||
|
3088e43a5a | ||
|
e744ba643d | ||
|
69a6dd6aae | ||
|
964a60360a | ||
|
3228b266b2 | ||
|
e56a812a6a | ||
|
d14461f403 | ||
|
719f7bebb0 | ||
|
816919b3c8 | ||
|
fd618f3325 | ||
|
b2db3659a9 | ||
|
1c3da3f236 | ||
|
c57a0663ab | ||
|
3cbae049dc | ||
|
ca432d1fd9 | ||
|
b12caef23b | ||
|
f45c7671d9 | ||
|
2834d98f52 | ||
|
1c9a8d8083 | ||
|
49509189dc | ||
|
9c8c858e68 | ||
|
70c6185476 | ||
|
322b1c3d90 | ||
|
567ece44ea | ||
|
b739fd287d | ||
|
0cb7e614d0 | ||
|
93197d20b6 | ||
|
26a8dea551 | ||
|
f57155bca4 | ||
|
de4727aecc | ||
|
76364fb66b | ||
|
d832bda32b | ||
|
f3c107eb01 | ||
|
f2dcd9dd81 | ||
|
d901077335 | ||
|
ca261091eb | ||
|
08529918fc | ||
|
bc6a305f82 | ||
|
4c9440c673 | ||
|
d27cd2a328 | ||
|
3a4e201a21 | ||
|
315d3264b6 | ||
|
8d728c2090 | ||
|
5dfec71829 | ||
|
0f15030700 | ||
|
dee52d962d | ||
|
45d818b4ab | ||
|
4f29739be3 | ||
|
8c46232005 | ||
|
447f5777aa | ||
|
2cf2bd8197 | ||
|
4a0e5e4741 | ||
|
267edecccb | ||
|
8f95f74eb2 | ||
|
c4f5241e66 | ||
|
993092039b | ||
|
687ec6bd72 | ||
|
84429e092f | ||
|
4f2b5a5dbd | ||
|
db65dd60fb | ||
|
3c8a3d1295 | ||
|
f9ee35ea34 | ||
|
e64b8ac1e7 | ||
|
d34364bdea | ||
|
ba6e66328b | ||
|
43004211e2 | ||
|
8e158597f9 | ||
|
b5fc0c4088 | ||
|
6ed431589b | ||
|
10929ef008 | ||
|
b25aeb5937 | ||
|
95fc5d776a | ||
|
decb9717ce | ||
|
988d3eefa6 | ||
|
0f0a43c9b1 | ||
|
fa0709663b | ||
|
84e6123d7e | ||
|
3dc4d84586 | ||
|
8cc2962b12 | ||
|
476fe6ae7e | ||
|
3e90ce547c | ||
|
1151088c02 | ||
|
a006259e6f | ||
|
1bb621c002 | ||
|
a61e6546f6 | ||
|
69b48d8231 | ||
|
c64c9cd5fa | ||
|
4da79a7f25 | ||
|
612801d0f8 | ||
|
ff6b3af113 | ||
|
f45a6c2a50 | ||
|
2f308d4957 | ||
|
b26e255877 | ||
|
facf7d077c | ||
|
18af706d50 | ||
|
52f46525b4 | ||
|
0e9cc44d1b | ||
|
ae7d8379a5 | ||
|
a6514e2b1f | ||
|
8ff8937843 | ||
|
3de39fa36f | ||
|
2557d02eee | ||
|
acf96dfcdc | ||
|
3cd89a003b | ||
|
4ae5873e7f | ||
|
6419fbf193 | ||
|
0423bce8e8 | ||
|
1cd409f3a8 | ||
|
b9a59f74f0 | ||
|
97a45e6a2a | ||
|
982bf99c89 | ||
|
8139fc4be5 | ||
|
0110e1abe0 | ||
|
4e37a8dad2 | ||
|
12149ec0a3 | ||
|
167b7fcdd9 | ||
|
878a99f554 | ||
|
bc849b5459 | ||
|
f12c2b0837 | ||
|
b988f8aac5 | ||
|
347b471901 | ||
|
50f651baea | ||
|
b433470b02 | ||
|
eb99f62456 | ||
|
447c399d35 | ||
|
4bbd807c01 | ||
|
bf1de40853 | ||
|
fe33b4cb7c | ||
|
e4c30044f2 | ||
|
9a37ae6ef6 | ||
|
5c8a94ae9e | ||
|
8f75d79e74 | ||
|
49384da933 | ||
|
01a06b203e | ||
|
096158d6e0 | ||
|
2ed8992d73 | ||
|
b6cbda2717 | ||
|
edec4d9b9a | ||
|
26c7672591 | ||
|
31c099a7b8 | ||
|
c1913705ac | ||
|
fef71fcebe | ||
|
b8762ae2dc | ||
|
43b5730962 | ||
|
5cbf2be43a | ||
|
d056d87806 | ||
|
89734cec05 | ||
|
8f53e20955 | ||
|
9d1c9ee212 | ||
|
b3261661c7 | ||
|
d3690ee19c | ||
|
355471aa74 | ||
|
4c3749884d | ||
|
f945118f54 | ||
|
7d94b2b489 | ||
|
c07ccd9aac | ||
|
49465167a0 | ||
|
80f38227cf | ||
|
694ef4431b | ||
|
d1237da6cc | ||
|
e0f08727e1 | ||
|
f339b63b02 | ||
|
16ba8e12fa | ||
|
997e9f74a1 | ||
|
710a38a26e | ||
|
9fdd557f56 | ||
|
f7571c43f8 | ||
|
58d2947855 | ||
|
c5d0c94868 | ||
|
7e11dcb510 | ||
|
5aabdf6e12 | ||
|
891e6c37a0 | ||
|
843699e3cf | ||
|
3d1b2db1af | ||
|
200f8f7ec8 | ||
|
427ec78932 | ||
|
1d49d3e40b | ||
|
122e1dfe5d | ||
|
5a724a1adc | ||
|
bd9ab06808 | ||
|
4f30539b47 | ||
|
bf62e977c0 | ||
|
56395f4883 | ||
|
f8fbf0917c | ||
|
0029840db9 | ||
|
6e23da2983 | ||
|
2db459edb0 | ||
|
4faa72f39a | ||
|
593ac8d749 | ||
|
ff433b7176 | ||
|
49204e30f3 | ||
|
650de58220 | ||
|
9a59858888 | ||
|
e2828c0a20 | ||
|
5778e06771 | ||
|
e7c1f7da25 | ||
|
1f5154ee8c | ||
|
c0f4b1258d | ||
|
64dd9d000e | ||
|
3eac04982a | ||
|
cb3291965d | ||
|
8823ba1673 | ||
|
8d1ef734a2 | ||
|
fa0bf5c2a4 | ||
|
0a7a2694f9 | ||
|
793403c740 | ||
|
ca20fc3c6d | ||
|
60803c12fc | ||
|
456482c8ca | ||
|
ed8bdefcdf | ||
|
c03cdc143a | ||
|
ba3b2f8fd8 | ||
|
c8acbdc60c | ||
|
1d99076c7d | ||
|
478da724be | ||
|
28188e3e8b | ||
|
68bbbf8db2 | ||
|
fa93c5bd01 | ||
|
4f3251ed16 | ||
|
00b8cbd128 | ||
|
c25f61f9c7 | ||
|
5d5f6822f9 | ||
|
1a397369ff | ||
|
9d2902f750 | ||
|
1fc12db95f | ||
|
24858b0ba0 | ||
|
e0d497a3b6 | ||
|
951fb00d4e | ||
|
1400875123 | ||
|
3cc20202de | ||
|
d41f69ccce | ||
|
894f19bdf6 | ||
|
3460aa3a42 | ||
|
ee2f0b499b | ||
|
2cc2bd2d2f | ||
|
e1f6db512f | ||
|
7969a5c1b4 | ||
|
cc846838b6 | ||
|
fd39a8ef1f | ||
|
429b19962a | ||
|
5d5efaa97c | ||
|
0a817eb6e2 | ||
|
6e7e8bffba | ||
|
2a2488fa67 | ||
|
85e619c514 | ||
|
0fbbdfe60e | ||
|
d90154c8de | ||
|
f1e78a1349 | ||
|
b2a6151299 | ||
|
4862d53ff2 | ||
|
96fa6a24d8 | ||
|
521e0460e4 | ||
|
2c3ebd8b9d | ||
|
3c528f2830 | ||
|
791f7a4f63 | ||
|
dbbbb8f5c1 | ||
|
a0720431b4 | ||
|
7a9bd2b2e4 | ||
|
4924e42275 | ||
|
d5c5b5233d | ||
|
2b48258865 | ||
|
7b5a93153a | ||
|
c4fbeacd01 | ||
|
af776d8b66 | ||
|
067642d939 | ||
|
a361d35b8d | ||
|
9a83eae71e | ||
|
a2389ef316 | ||
|
421f1ee294 | ||
|
4b7d4054d9 | ||
|
285bf097ab | ||
|
f68bd1273b | ||
|
5d029bbb90 | ||
|
bc8f859b2d | ||
|
8a3e2b8364 | ||
|
8a979d92c9 | ||
|
f90ceb4c3c | ||
|
a3204f7278 | ||
|
33e9e44a17 | ||
|
f38992e608 | ||
|
9c4ae9131c | ||
|
34a7e66faa | ||
|
ee4646e70e | ||
|
a5e04af484 | ||
|
a6f6e6a592 | ||
|
69a8a53005 | ||
|
0a89d5237e | ||
|
2393ad0bfb | ||
|
9fc96407e2 | ||
|
5161b2ffa7 | ||
|
8a79a89ec4 | ||
|
def3c5ccab | ||
|
a3311b9f0f | ||
|
64bfc675a5 | ||
|
868c8873ef | ||
|
65bcb57eea | ||
|
9b592f70d6 | ||
|
7543627f1b | ||
|
06cd7dbe4c | ||
|
7bde4e80be | ||
|
9180bae9b2 | ||
|
0405dbed77 | ||
|
3b45454329 | ||
|
a874830dcc | ||
|
35693c5028 | ||
|
bb4c9ca2d6 | ||
|
b1e7adeca1 | ||
|
f9679c4287 | ||
|
31ba9356b8 | ||
|
803029685f | ||
|
98c92570d9 | ||
|
6f573217a0 | ||
|
759448893c | ||
|
e29dcdcdd8 | ||
|
cd6a45029e | ||
|
8ca7d26626 | ||
|
db59e48870 | ||
|
e233fc7ac1 | ||
|
dddaeed4c1 | ||
|
8e3787eaf0 | ||
|
def33cc5bb | ||
|
13e151f31c | ||
|
50a3265017 | ||
|
e98dd0aad8 | ||
|
998fdc06cb | ||
|
08596f50b7 | ||
|
96c605f39a | ||
|
a521d66116 | ||
|
5a845ee894 | ||
|
dc3beea75d | ||
|
87a98b55b2 | ||
|
976050113e | ||
|
fa2c118af4 | ||
|
5b7b04c938 | ||
|
1ef3779516 | ||
|
3d4b1710eb | ||
|
a6dedb8c22 | ||
|
52941673b1 | ||
|
b955304869 | ||
|
adbef6d2b3 | ||
|
17a3da8b99 | ||
|
5214c4091f | ||
|
bed82b0c40 | ||
|
52191f2123 | ||
|
f8157af3aa | ||
|
3e7438b001 | ||
|
7b1e7c30a7 | ||
|
cab2c53e3c | ||
|
69cab3a044 | ||
|
9eab93168d | ||
|
a7f669049d | ||
|
d27fff5923 | ||
|
3e6abc98d5 | ||
|
7c9753c8ce | ||
|
67dbbeaa30 | ||
|
366b205f2d | ||
|
23d224069f | ||
|
d672b5fdd8 | ||
|
faa0d638dc | ||
|
1eecb8c814 | ||
|
22d6ee8d9c | ||
|
2fb6f68ef0 | ||
|
ea6a3b488c | ||
|
cdb26fd011 | ||
|
d52bfbb6aa | ||
|
634d88c413 | ||
|
d7d8e0dd5b | ||
|
49838af623 | ||
|
cd4e3d52ee | ||
|
474da028ab | ||
|
98d0574746 | ||
|
33e0df19d9 | ||
|
c16bd3cc9c | ||
|
4403c56ea2 | ||
|
b24f48db7d | ||
|
fa2feae3d6 | ||
|
c83a17841c | ||
|
8d9cce1e09 | ||
|
54a6b1f281 | ||
|
fade723b25 | ||
|
691d58f999 | ||
|
6cecb0d963 | ||
|
e8f86bc503 | ||
|
ddfbeda3bb | ||
|
d892a336bb | ||
|
f2b9852a8e | ||
|
8b8ada6fdb | ||
|
cc22607dbf | ||
|
aab91213b2 | ||
|
39f5042d9e | ||
|
4c2c2c43d0 | ||
|
8c56ad116d | ||
|
d7eacd75ae | ||
|
0b20a174db | ||
|
ddc52a6481 | ||
|
3fd1174e76 | ||
|
72bc673c43 | ||
|
5bd21db8eb | ||
|
1c727fd784 | ||
|
bc76109df2 | ||
|
60a422736b | ||
|
99166482fe | ||
|
ac23f9da75 | ||
|
28c6df7323 | ||
|
307320c23f | ||
|
e8a3af1069 | ||
|
560c3f5ccf | ||
|
0c745347d0 | ||
|
07adfa6bf5 | ||
|
f38f30a3de | ||
|
5b92aa9c64 | ||
|
f123ffe78c | ||
|
21e0da3128 | ||
|
d6152ea1af | ||
|
060492ecd2 | ||
|
9018dee685 | ||
|
5aa98964fb | ||
|
fb970a43bd | ||
|
a3c0ba12eb | ||
|
da527ec12b | ||
|
11433c8e98 | ||
|
e12f3bf6e2 | ||
|
b961910192 | ||
|
c6e6d0d522 | ||
|
68fb5437f9 | ||
|
3627f2903c | ||
|
a5fa534705 | ||
|
dd96ab6987 | ||
|
c87814d750 | ||
|
66b5e1b32d | ||
|
da1a58a503 | ||
|
c45c2fb1f6 | ||
|
feed8e4bd9 | ||
|
314f280aac | ||
|
a45ed44724 | ||
|
bbc8d912e8 | ||
|
8aebfd34d9 | ||
|
b357e53bff | ||
|
705ebbea04 | ||
|
c9cb8ff8fb | ||
|
71e40782b8 | ||
|
8180427a16 | ||
|
5e3798ca48 | ||
|
a9921bcadb | ||
|
98b696703e | ||
|
fb43107e62 | ||
|
d27b2e818b | ||
|
36d81dfbdb | ||
|
9f0e21a4da | ||
|
0f633f7f7f | ||
|
16dd1c31c2 | ||
|
e19f403770 | ||
|
155cf5cd2e | ||
|
969531b6d8 | ||
|
1a97c89d7b | ||
|
49ec39fa7f | ||
|
d4ab2ee38f | ||
|
c16a7fc717 | ||
|
67f63e768d | ||
|
66e44e3252 | ||
|
77c4d6165d | ||
|
461f2a9ba0 | ||
|
d81103c58e | ||
|
fc0e5a73e8 | ||
|
d999a25212 | ||
|
2c351d8f34 | ||
|
75873dbf27 | ||
|
3b89c95906 | ||
|
170bc7a0fe | ||
|
e1ee23f29d | ||
|
977673894f | ||
|
334772008c | ||
|
9a41333c6b | ||
|
6a22c5f8ee | ||
|
8c974509ea | ||
|
d05ea79e40 | ||
|
c87ab01c2d | ||
|
4911942e94 | ||
|
7d8f7fb85f | ||
|
010ef428b4 | ||
|
3141fbade8 | ||
|
995dfefdf0 | ||
|
2ba796eb23 | ||
|
3a9980767e | ||
|
ab6d94430e | ||
|
a51d9b00f0 | ||
|
41865cc5b4 | ||
|
4d4193dcef | ||
|
816dbbc1b8 | ||
|
723b896330 | ||
|
d369c66256 | ||
|
1ef547eec7 | ||
|
385939f7cf | ||
|
4d685d433a | ||
|
b538d71e32 | ||
|
f903ef1d5f | ||
|
1b75e25b0f | ||
|
b09517b2fb | ||
|
aec294a71a | ||
|
adaab4a97e | ||
|
74a4dca481 | ||
|
2332d29ba9 | ||
|
6202fbbe90 | ||
|
b5e9946227 | ||
|
676e0acb07 | ||
|
7df45bbc0c | ||
|
36dcabac05 | ||
|
b399f103a1 | ||
|
dfafe798a6 | ||
|
b3f60a53da | ||
|
2852cd2b22 | ||
|
4763a5a470 | ||
|
9aea4ec9a5 | ||
|
b04eda2ca1 | ||
|
24ca80aab6 | ||
|
1840f935d6 | ||
|
e5ca71db06 | ||
|
88019ddbdf | ||
|
e5b8a04f84 | ||
|
1864f12fda | ||
|
3dcafa8774 | ||
|
b7f92a0b6a | ||
|
bfdb489032 | ||
|
97afddf36a | ||
|
97fe17ff59 | ||
|
1d903a24dc | ||
|
7e0b925162 | ||
|
2b9ee5d79e | ||
|
4875a1f054 | ||
|
4e71517e37 | ||
|
decd67efad | ||
|
89ea31248e | ||
|
20c64a1210 | ||
|
b699d61b99 | ||
|
4924cdb9ac | ||
|
be585d2ece | ||
|
6f8fd5d397 | ||
|
1560648197 | ||
|
b1bcd5bb8c | ||
|
799c321914 | ||
|
9cbbba68b6 | ||
|
159e64ca25 | ||
|
f6307ca9c2 | ||
|
b5af064f54 | ||
|
ce4dc66319 | ||
|
1c6b02a8b6 | ||
|
d7328abc95 | ||
|
457f77be37 | ||
|
35e09ec8ae | ||
|
2e65e9cb69 | ||
|
87d4f114a2 | ||
|
148fd99365 | ||
|
d57b82111a | ||
|
0f5b87cf95 | ||
|
6be82a4cd8 | ||
|
6943fc769c | ||
|
e10bf582aa | ||
|
c129254655 | ||
|
7c6dd796f2 | ||
|
ac435b4b91 | ||
|
8d14633dfb | ||
|
0427788e24 | ||
|
3e8f8c162d | ||
|
51c311827e | ||
|
bd5471a048 | ||
|
336a06f2d1 | ||
|
c5b8f8ec50 | ||
|
185b16d946 | ||
|
a3d3bc5640 | ||
|
a31ef8c242 | ||
|
bedc9b75a7 | ||
|
08c77dadf3 | ||
|
fda7d07b7b | ||
|
2e9849aa02 | ||
|
8e679f72e9 | ||
|
806b2cd42b | ||
|
95932ba9b7 | ||
|
2e19aa153a | ||
|
20861b5ad3 | ||
|
9f5fea993a | ||
|
992883ad0c | ||
|
6d4641d704 | ||
|
32a3d93659 | ||
|
0c923732dd | ||
|
026f86ba3b | ||
|
c89de227eb | ||
|
0ddeaedbe8 | ||
|
a9a97da9e2 | ||
|
2dceb126d5 | ||
|
1e0f132ff4 | ||
|
24fb14a643 | ||
|
35bd7afafe | ||
|
6c78b9115d | ||
|
bbba201165 | ||
|
2d4c2b9850 | ||
|
676284f311 | ||
|
6cf181a49b | ||
|
50c0a6d675 | ||
|
c420d538ee | ||
|
f48faa06c9 | ||
|
42c6025247 | ||
|
2b2df3a180 | ||
|
6da5e0bf37 | ||
|
f9c075d36d | ||
|
770e8e3546 | ||
|
afda49b7ba | ||
|
df09680626 | ||
|
c429ee1d97 | ||
|
150b809edf | ||
|
3c148f7e61 | ||
|
046e295b2b | ||
|
2c6bba3fe1 | ||
|
c7ec8f1d3c | ||
|
b2a9209f65 | ||
|
8ea8eba930 | ||
|
93d759f0be | ||
|
974f7b23cb | ||
|
5013f7d152 | ||
|
cf92ecf6f1 | ||
|
c5b32ee8d8 | ||
|
89321cfff0 | ||
|
d704c76b9f | ||
|
9a1da4bd07 | ||
|
7e247a3fa8 | ||
|
33005df7bc | ||
|
f2e2dc80fa | ||
|
f337537a03 | ||
|
0f864f6ef9 | ||
|
8f692f41bf | ||
|
574b8b6fd2 | ||
|
17e68572ca | ||
|
62eb94c9d3 | ||
|
e2949b7c9c | ||
|
2516947fd9 | ||
|
2e81436be8 | ||
|
79db98764e | ||
|
fa775b7651 | ||
|
e095c462dc | ||
|
6e85740236 | ||
|
32882c97f9 | ||
|
987f46c276 | ||
|
ca5a793ec3 | ||
|
9202cab661 | ||
|
e975e1bc6c | ||
|
efdd3e8c7b | ||
|
804c370d74 | ||
|
bfad0b0651 | ||
|
c3583173ec | ||
|
16fd5843a2 | ||
|
3d2a6f4956 | ||
|
27c94b586c | ||
|
e13b263ef3 | ||
|
8855db9542 | ||
|
852ab75005 | ||
|
9df0fee8fa | ||
|
bf89aaecfa | ||
|
7221a6cfc5 | ||
|
3ff77016da | ||
|
5ca1343b5f | ||
|
06eb6946d0 | ||
|
ea7c727a94 | ||
|
93001ef9b7 | ||
|
6f1a7b6720 | ||
|
5d16f8d5b9 | ||
|
603de3f763 | ||
|
675de7524c | ||
|
0bab8ed085 | ||
|
60293e9b1f | ||
|
9a8667a841 | ||
|
898176a24c | ||
|
7d67a19cfa | ||
|
b291dc8776 | ||
|
e55aa0bc8f | ||
|
d4dfc21f70 | ||
|
407e00dca0 | ||
|
0c9fa6f2ce | ||
|
4c4bd3cd97 | ||
|
bd72bfece2 | ||
|
8e275af3ee | ||
|
02d4116fd6 | ||
|
357c229173 | ||
|
3504918b43 | ||
|
dc3e7def5f | ||
|
d6ac7a9a3a | ||
|
e1e65cb0f1 | ||
|
064c6ced40 | ||
|
9405dd066e | ||
|
dafc6194a0 | ||
|
88cf831ed1 | ||
|
81827aad3c | ||
|
458751c2d5 | ||
|
a83c502d5a | ||
|
1f05c8044e | ||
|
e440403683 | ||
|
d5d9b280de | ||
|
aba1c945cd | ||
|
1d3c2e6572 | ||
|
71c6487cf1 | ||
|
d165357ec3 | ||
|
c0457358f6 | ||
|
0ea8f89e40 | ||
|
c7da027e75 | ||
|
014901bd9b | ||
|
323e5a84eb | ||
|
3709186b2b | ||
|
38ea9e3ef4 | ||
|
76d2b6699d | ||
|
c989d3cd10 | ||
|
fdfd63be3a | ||
|
369dee5938 | ||
|
ad00d847f2 | ||
|
8d4cb09048 | ||
|
961e09c631 | ||
|
1b2c03b9d8 | ||
|
f3e4cec919 | ||
|
21552aee3f | ||
|
2320c03087 | ||
|
b456a96361 | ||
|
a3148ca504 | ||
|
2204cee6e9 | ||
|
21f52c8af8 | ||
|
f346a17ce3 | ||
|
970e33a168 | ||
|
48f9b8b773 | ||
|
bbf6aef4e9 | ||
|
815c3634e3 | ||
|
f158c9c961 | ||
|
a23aa1ca90 | ||
|
4428195692 | ||
|
065c5870e4 | ||
|
7b73e85283 | ||
|
c8a20b9d3b | ||
|
753827ef33 | ||
|
d92bb3c3f1 | ||
|
600fa266bd | ||
|
58955be0aa | ||
|
e0fc3da747 | ||
|
2a86ef5bb8 | ||
|
2dc59e6e08 | ||
|
f874fc2717 | ||
|
cc7634fd69 | ||
|
eda13db4e9 | ||
|
14612f698c | ||
|
6b4a1ab82a | ||
|
8ec4024ab8 | ||
|
5717ce6e99 | ||
|
d08deaabe1 | ||
|
20265b09dc | ||
|
b4d71e1ab2 | ||
|
425413c35f | ||
|
5c1dcd57ee | ||
|
830fec3fbb | ||
|
967a76bd81 | ||
|
fe17a7d4d4 | ||
|
a2503fa2e9 | ||
|
37ccb2ce82 | ||
|
605f793af8 | ||
|
699b833bd7 | ||
|
8fe9e541ad | ||
|
ad65e8c041 | ||
|
df1aea1f2a | ||
|
feab4a4dff | ||
|
c8b9608154 | ||
|
c3d5b9d74f | ||
|
4a7a0e9979 | ||
|
f5ead3f029 | ||
|
9429844f81 | ||
|
4d23b9f18b | ||
|
d92745bb98 | ||
|
67ce1f251a | ||
|
9620ddc8f2 | ||
|
06d5b8b7fe | ||
|
4f9853a9a5 | ||
|
2f548e597b | ||
|
0e7a52a138 | ||
|
11be5562b2 | ||
|
778c7af37a | ||
|
640b040f6f | ||
|
7d6bf83afc | ||
|
4081d6c053 | ||
|
16ab8d591d | ||
|
35354583cd | ||
|
b42ca4d0b2 | ||
|
e477b0e8de | ||
|
75d67a42c7 | ||
|
c848ff6eb7 | ||
|
65a0e5a92d | ||
|
d55ed57c36 | ||
|
00f227a216 | ||
|
36695f278f | ||
|
f4c11dcb53 | ||
|
66b2888b77 | ||
|
e2d291b5ae | ||
|
03a6ccd20d | ||
|
1a010236cf | ||
|
81a4fefce2 | ||
|
0f12381083 | ||
|
7036ded25d | ||
|
49af4f7f91 | ||
|
5d15212228 | ||
|
9a458e4e58 | ||
|
713e3c087b | ||
|
dbdf170dcd | ||
|
eb76a455cd | ||
|
6baee3d287 | ||
|
f9decbb0c7 | ||
|
e56f0c7cab | ||
|
5e8e911b7c | ||
|
502dc54ffc | ||
|
ca971d1325 | ||
|
624bf72709 | ||
|
6ec48057d0 | ||
|
27802bb7b2 | ||
|
6b8c06dc39 | ||
|
624aa04ed6 | ||
|
cf886b54ef | ||
|
44bf309309 | ||
|
ae129fc6d6 | ||
|
b02a5014ea | ||
|
aab7f04904 | ||
|
1a9ac34721 | ||
|
63c5a0d516 | ||
|
f72c090b7f | ||
|
2890841e6f | ||
|
437d011621 | ||
|
42cdd22597 | ||
|
a923a431c6 | ||
|
8c740b08a3 | ||
|
9948c521a6 | ||
|
5c38b234ef | ||
|
55d11577db | ||
|
e141f358eb | ||
|
c8f25e0c05 | ||
|
0925bdaeb2 | ||
|
2c984883ec | ||
|
ffc79fbe27 | ||
|
def74aaced | ||
|
059902882c | ||
|
3bc9fbb496 | ||
|
491f66ee59 | ||
|
5ab991d0ab | ||
|
78b7fb2c17 | ||
|
0feb5ce0c8 | ||
|
90e4f3dd4c | ||
|
12459160d1 | ||
|
f2798f752e | ||
|
c19a2f09e1 | ||
|
fa5a475206 | ||
|
1bd23e3922 | ||
|
d1bf9bfe06 | ||
|
d222d1add8 | ||
|
bcb610a559 | ||
|
b6877e401a | ||
|
f2503fce3f | ||
|
649c8cb81c | ||
|
9ee9cd30a2 | ||
|
49af63b8a1 | ||
|
e845753ce4 | ||
|
a666af7b01 | ||
|
8cfd3f88d3 | ||
|
b95d427f7a | ||
|
d1862b4e88 | ||
|
1bb9786da3 | ||
|
506014f624 | ||
|
89a987899e | ||
|
cdac3aeb11 | ||
|
a9b09547d8 | ||
|
f5df69d1ae | ||
|
31e6298429 | ||
|
3d0303a57c | ||
|
5318d9c9d1 | ||
|
f743e0c0e4 | ||
|
35c3ae3bf4 | ||
|
109bd3b796 | ||
|
6dc65d9047 | ||
|
01590227f2 | ||
|
29bc20f996 | ||
|
c6529c7c0a | ||
|
8541325f38 | ||
|
4b1945ce58 | ||
|
96edc100c0 | ||
|
2494e9361d | ||
|
6397687940 | ||
|
5faaca09b8 | ||
|
22683fabf0 | ||
|
b4e94c8b01 | ||
|
bb4b793f4a | ||
|
8924280eb1 | ||
|
c32d7b42bc | ||
|
8dafcc6079 | ||
|
53cfdc8660 | ||
|
83e9456676 | ||
|
3fa42ac553 | ||
|
8998ab8b02 | ||
|
0ca534e059 | ||
|
a972e238dd | ||
|
060dc7b26d | ||
|
b621d9bef3 | ||
|
df8677c992 | ||
|
9c2d8135fe | ||
|
1a52a4fe51 | ||
|
512b1a7724 | ||
|
001b059322 | ||
|
80a3b96593 | ||
|
b5d402e388 | ||
|
2dfa65368e | ||
|
9f9bfdd5a1 | ||
|
cb3eaf680a | ||
|
9231f0b92a | ||
|
f90ff456fc | ||
|
aa8796d3fd | ||
|
1215cc7632 | ||
|
5526be21ea | ||
|
7eb03cb657 | ||
|
4c9b9e9709 | ||
|
14cedd97a5 | ||
|
b10578a404 | ||
|
dddc808069 | ||
|
009f7f1b2a | ||
|
d691bf2d5f | ||
|
a523f1d66f | ||
|
222f1272ba | ||
|
7bcfa920c1 | ||
|
396fb3db74 | ||
|
a6e60f043b | ||
|
7c09e546af | ||
|
833bb448c5 | ||
|
4ed30cae08 | ||
|
14dad2670e | ||
|
bf2f6e2729 | ||
|
1799290ea2 | ||
|
0923c62448 | ||
|
86284c231f | ||
|
9b6018c4a6 | ||
|
530b111c42 | ||
|
300338fccf | ||
|
7e3c1ced40 | ||
|
f7a09278b6 | ||
|
6e86f77cda | ||
|
48c825ebd1 | ||
|
49d014f7a0 | ||
|
f684530a7f | ||
|
f78e844b55 | ||
|
d6317e738e | ||
|
1733983d55 | ||
|
15ad9dd1b7 | ||
|
8eb7b35010 | ||
|
8bed7ff2d9 | ||
|
d825e479bd | ||
|
3a15fd1621 | ||
|
6552b99fc9 | ||
|
75a4a6a40e | ||
|
64b502fab5 | ||
|
8f585cef9b | ||
|
e63049fc15 | ||
|
1be4bbc57a | ||
|
acd3788bb8 | ||
|
1bb4f84202 | ||
|
3b1eac5c04 | ||
|
b9a9dcd8d6 | ||
|
6526e78967 | ||
|
2f5025efed | ||
|
1ed0908282 | ||
|
40d3409dab | ||
|
7ec4671f81 | ||
|
9e4488ab06 | ||
|
a00db94270 | ||
|
bd12700be8 | ||
|
df14a021d5 | ||
|
166932c5c0 | ||
|
ec69bdcd2f | ||
|
3ad216be1d | ||
|
067f703329 | ||
|
ce934056df | ||
|
711c0e5a54 | ||
|
b3b27f7dea | ||
|
956432cbb7 | ||
|
5a040d6662 | ||
|
bf26485d36 | ||
|
886c1ffc65 | ||
|
a7b86c3362 | ||
|
c672a72135 | ||
|
26aa7503a7 | ||
|
69451f17a1 | ||
|
04c3b5a016 | ||
|
45d3205ba5 | ||
|
deb5645644 | ||
|
6a9ae29c05 | ||
|
ae1ca82e87 | ||
|
d1130b7ec0 | ||
|
0a0e7514bb | ||
|
e30e4f5450 | ||
|
8d66fb1a70 | ||
|
da5d0251f5 | ||
|
ab82a9f9b4 | ||
|
f19e461f4f | ||
|
7835861f9d | ||
|
8b86f21f45 | ||
|
0b6e63220f | ||
|
45257abb79 | ||
|
852c5dc101 | ||
|
e33377250c | ||
|
ea1e36694d | ||
|
7203aa5c2d | ||
|
401fd381bb | ||
|
ea708cd617 | ||
|
912a262b7b | ||
|
f95a11eff5 | ||
|
0a5da517c4 | ||
|
749daf360b | ||
|
6990cb29ab | ||
|
771806da49 | ||
|
f6fea4fd07 | ||
|
8ed5835a14 | ||
|
cbbbb6c79d | ||
|
d7d551523d | ||
|
e27e1c1c63 | ||
|
5e5335da68 | ||
|
a52d26f2e5 | ||
|
cd906960df | ||
|
f61070e87c | ||
|
d03e896b57 | ||
|
7fd9b86eae | ||
|
c1345d6d70 | ||
|
f09872c5bd | ||
|
8a604bdbae | ||
|
4ac8598f4b | ||
|
511884e7e8 | ||
|
d641addf38 | ||
|
319fce53c8 | ||
|
193e86b814 | ||
|
2a09a84f15 | ||
|
34362d0c0f | ||
|
fed17f968d | ||
|
53e3c2414d | ||
|
e249b1a313 | ||
|
1347571f9b | ||
|
b205c5d8c1 | ||
|
94008a81e5 | ||
|
1e336dd91e | ||
|
08e7df9d5d | ||
|
c6d7fca0cc | ||
|
44cc1b9cac | ||
|
3d2df35c6e | ||
|
c9043411b3 | ||
|
7bbc9a512a | ||
|
27c8bf0cc9 | ||
|
c37fd87d85 | ||
|
9c2f3cc9d9 | ||
|
6537216b7a | ||
|
516eff01e6 | ||
|
436f1c471a | ||
|
036b16b884 | ||
|
901566597e | ||
|
d9dade3cb9 | ||
|
5bbdb0c948 | ||
|
26fc2a40ae | ||
|
f690c93f25 | ||
|
81b5631258 | ||
|
ec929142c6 | ||
|
73fec24319 | ||
|
f0f73bdb1d | ||
|
16ae1cf233 | ||
|
b56a8d0272 | ||
|
460ea9d5d2 | ||
|
1cffc55d35 | ||
|
3adfeec58f | ||
|
669a767635 | ||
|
66f1a98e7f | ||
|
88058a26f0 | ||
|
d0a5688a93 | ||
|
a6cd1bd6a8 | ||
|
08248c0ce8 | ||
|
122b45be6e | ||
|
28dceaec71 | ||
|
1543252e5f | ||
|
6d449e005c | ||
|
6ad80f1b81 | ||
|
e8df32775d | ||
|
000490a221 | ||
|
d91f73b1d3 | ||
|
0d98cc4844 | ||
|
164b93bd9c | ||
|
29f1580086 | ||
|
4c0299fbc8 | ||
|
6f9786bbcc | ||
|
6c8826de8f | ||
|
95b5b025a0 | ||
|
60bdb327c6 | ||
|
52163149b4 | ||
|
e1b3864f0e | ||
|
d282ae3889 | ||
|
72c2e11beb | ||
|
568670f94d | ||
|
9c64c08b18 | ||
|
1a847a11be | ||
|
4944609bd0 | ||
|
411023af72 | ||
|
3d242755ef | ||
|
6a342360da | ||
|
e5f6ff88c4 | ||
|
97e612586a | ||
|
8ebdbbc3cb | ||
|
ba35f3582e | ||
|
880364040a | ||
|
957e232277 | ||
|
ceab0fbc59 | ||
|
9fde88973a | ||
|
6101dcf670 | ||
|
f1a03b1d6d | ||
|
c6e4cc8873 | ||
|
acd98d8772 | ||
|
d2ebe16cb4 | ||
|
fb8c78b2ec | ||
|
f3976b67e0 | ||
|
d85f25fbb9 | ||
|
6c6c35f20c | ||
|
1b07797a7b | ||
|
d164feb726 | ||
|
6d87ac57e2 | ||
|
a6065ec328 | ||
|
afd2f6ed62 | ||
|
4dba71fd25 | ||
|
58a38af117 | ||
|
690705529d | ||
|
5962b8a91b | ||
|
1e56b0fe6f | ||
|
4afd0915a6 | ||
|
aeb8b3d4d6 | ||
|
f5575315fd | ||
|
bf71c7292a | ||
|
e146fbd60c | ||
|
9efb0c0825 | ||
|
1915ec1fe7 | ||
|
2e438c9a6b | ||
|
29ad9f7640 | ||
|
45ad511a8a | ||
|
1b302934a9 | ||
|
adf21da264 | ||
|
6b650811e5 | ||
|
897f72a111 | ||
|
6fb95d8558 | ||
|
55d47bd1bf | ||
|
164c5eda27 | ||
|
13831223be | ||
|
f2b36036c7 | ||
|
4ee037e8f0 | ||
|
630fb54886 | ||
|
10817c7d5a | ||
|
ad60b7fb56 | ||
|
856a3f4a3c | ||
|
c586e9a0a3 | ||
|
3a1333da36 | ||
|
a2efadd1b4 | ||
|
6cb30195ad | ||
|
961f94d84e | ||
|
a8c10c8298 | ||
|
ccbb98880b | ||
|
d0b2aa1c5d | ||
|
6fa6e11d78 | ||
|
42bb7df28c | ||
|
854c897eb8 | ||
|
de10d5bf4d | ||
|
f73a3a5e08 | ||
|
9efe34a396 | ||
|
bc4b85f371 | ||
|
666f886ce7 | ||
|
c35f281934 |
2
3rdparty/amd_blobs
vendored
2
3rdparty/amd_blobs
vendored
Submodule 3rdparty/amd_blobs updated: 234dc70670...acf7395452
2
3rdparty/arm-trusted-firmware
vendored
2
3rdparty/arm-trusted-firmware
vendored
Submodule 3rdparty/arm-trusted-firmware updated: c45d2febb9...9881bb93a3
2
3rdparty/blobs
vendored
2
3rdparty/blobs
vendored
Submodule 3rdparty/blobs updated: 5a19332deb...01ba15667f
2
3rdparty/fsp
vendored
2
3rdparty/fsp
vendored
Submodule 3rdparty/fsp updated: 12160fe64b...6f2f17f3d3
2
3rdparty/intel-microcode
vendored
2
3rdparty/intel-microcode
vendored
Submodule 3rdparty/intel-microcode updated: 6c0c4691e5...262f0c97f2
2
3rdparty/libgfxinit
vendored
2
3rdparty/libgfxinit
vendored
Submodule 3rdparty/libgfxinit updated: 1b04c517b3...066e52eeaa
2
3rdparty/libhwbase
vendored
2
3rdparty/libhwbase
vendored
Submodule 3rdparty/libhwbase updated: fc2102f560...8be5a82b85
2
3rdparty/qc_blobs
vendored
2
3rdparty/qc_blobs
vendored
Submodule 3rdparty/qc_blobs updated: e8efa5d98d...33cc4f2fd8
2
3rdparty/vboot
vendored
2
3rdparty/vboot
vendored
Submodule 3rdparty/vboot updated: b827ddb9b0...a09b792e6a
@@ -1,3 +1,4 @@
|
|||||||
|
## SPDX-License-Identifier: GPL-2.0-only
|
||||||
#
|
#
|
||||||
# Makefile for coreboot paper.
|
# Makefile for coreboot paper.
|
||||||
# hacked together by Stefan Reinauer <stepan@openbios.org>
|
# hacked together by Stefan Reinauer <stepan@openbios.org>
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
## SPDX-License-Identifier: GPL-2.0-only
|
||||||
# Makefile for Sphinx documentation
|
# Makefile for Sphinx documentation
|
||||||
#
|
#
|
||||||
|
|
||||||
|
@@ -11,6 +11,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
`acpihelp _XXX`
|
`acpihelp _XXX`
|
||||||
* 2FA - [**Two-factor Authentication**](https://en.wikipedia.org/wiki/Multi-factor_authentication)
|
* 2FA - [**Two-factor Authentication**](https://en.wikipedia.org/wiki/Multi-factor_authentication)
|
||||||
* 4G - In coreboot, this typically refers to the 4 gibibyte boundary of 32-bit addressable memory space.
|
* 4G - In coreboot, this typically refers to the 4 gibibyte boundary of 32-bit addressable memory space.
|
||||||
|
Better abbreviated as 4GiB
|
||||||
* 5G - Telecommunication: [**Fifth-Generation Cellular Network**](https://en.wikipedia.org/wiki/5G)
|
* 5G - Telecommunication: [**Fifth-Generation Cellular Network**](https://en.wikipedia.org/wiki/5G)
|
||||||
|
|
||||||
## A
|
## A
|
||||||
@@ -45,6 +46,10 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* ALIB - AMD: ACPI-ASL Library
|
* ALIB - AMD: ACPI-ASL Library
|
||||||
* ALS - [**Ambient Light Sensor**](https://en.wikipedia.org/wiki/Ambient_light_sensor)
|
* ALS - [**Ambient Light Sensor**](https://en.wikipedia.org/wiki/Ambient_light_sensor)
|
||||||
* ALU - [**Arithmetic Logic Unit**](https://en.wikipedia.org/wiki/Arithmetic_logic_unit)
|
* ALU - [**Arithmetic Logic Unit**](https://en.wikipedia.org/wiki/Arithmetic_logic_unit)
|
||||||
|
* AMBA - ARM: [**Advanced Microcontroller Bus
|
||||||
|
Architecture**](https://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture):
|
||||||
|
An open standard to connect and manage functional blocks in an SoC
|
||||||
|
(System on a Chip)
|
||||||
* AMD64 - Another name for [**x86-64**](https://en.wikipedia.org/wiki/X86-64)
|
* AMD64 - Another name for [**x86-64**](https://en.wikipedia.org/wiki/X86-64)
|
||||||
* AMPL - AMD: [**Advanced Platform Management Link**](https://web.archive.org/web/20220509053546/https://developer.amd.com/wordpress/media/2012/10/419181.pdf) - Also referred to as
|
* AMPL - AMD: [**Advanced Platform Management Link**](https://web.archive.org/web/20220509053546/https://developer.amd.com/wordpress/media/2012/10/419181.pdf) - Also referred to as
|
||||||
SBI: Sideband Interface
|
SBI: Sideband Interface
|
||||||
@@ -53,8 +58,8 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* AOAC - AMD: Always On, Always Connected
|
* AOAC - AMD: Always On, Always Connected
|
||||||
* AP - Application processor - The main processor on the board (as
|
* AP - Application processor - The main processor on the board (as
|
||||||
opposed to the embedded controller or other processors that may be on
|
opposed to the embedded controller or other processors that may be on
|
||||||
the system), any cores in processor chip that isn’t the BSP - Boot
|
the system), any cores in the processor chip that aren't the BSP (Boot
|
||||||
Strap Processor.
|
Strap Processor).
|
||||||
* APCB - AMD: AMD PSP Customization Block
|
* APCB - AMD: AMD PSP Customization Block
|
||||||
* API - [**Application Programming Interface**](https://en.wikipedia.org/wiki/API)
|
* API - [**Application Programming Interface**](https://en.wikipedia.org/wiki/API)
|
||||||
* APIC - [**Advanced Programmable Interrupt
|
* APIC - [**Advanced Programmable Interrupt
|
||||||
@@ -123,6 +128,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
stored as a single object, this was co-opted by the open source
|
stored as a single object, this was co-opted by the open source
|
||||||
communities to mean any proprietary binary file that is not available
|
communities to mean any proprietary binary file that is not available
|
||||||
as source code.
|
as source code.
|
||||||
|
* BM - [**Bus Master**](https://en.wikipedia.org/wiki/Bus_mastering)
|
||||||
* BMC - [**Baseboard Management Controller**](https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface#Baseboard_management_controller)
|
* BMC - [**Baseboard Management Controller**](https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface#Baseboard_management_controller)
|
||||||
* BMP - [**Bitmap**](https://en.wikipedia.org/wiki/BMP_file_format)
|
* BMP - [**Bitmap**](https://en.wikipedia.org/wiki/BMP_file_format)
|
||||||
* BOM - [**Bill of Materials**](https://en.wikipedia.org/wiki/Bill_of_materials)
|
* BOM - [**Bill of Materials**](https://en.wikipedia.org/wiki/Bill_of_materials)
|
||||||
@@ -165,7 +171,8 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* CID - [**Coverity ID**](https://en.wikipedia.org/wiki/Coverity)
|
* CID - [**Coverity ID**](https://en.wikipedia.org/wiki/Coverity)
|
||||||
* CIM - [**Common Information Model**](https://www.dmtf.org/standards/cim)
|
* CIM - [**Common Information Model**](https://www.dmtf.org/standards/cim)
|
||||||
* CISC - [**Complex Instruction Set Computer**](https://en.wikipedia.org/wiki/Complex_instruction_set_computer)
|
* CISC - [**Complex Instruction Set Computer**](https://en.wikipedia.org/wiki/Complex_instruction_set_computer)
|
||||||
* CL - Change List - A git patch in gerrit
|
* CL - ChangeList - Another name for a patch or commit. This seems to be
|
||||||
|
Perforce notation.
|
||||||
* CLK - Clock - Used when there isn't enough room for 2 additional
|
* CLK - Clock - Used when there isn't enough room for 2 additional
|
||||||
characters - similar to RST, for people who hate vowels.
|
characters - similar to RST, for people who hate vowels.
|
||||||
* CML - Intel: [**Comet Lake**](https://en.wikichip.org/wiki/intel/microarchitectures/comet_lake)
|
* CML - Intel: [**Comet Lake**](https://en.wikichip.org/wiki/intel/microarchitectures/comet_lake)
|
||||||
@@ -180,6 +187,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* CNVi - Intel: [**Connectivity Integration**](https://en.wikipedia.org/wiki/CNVi)
|
* CNVi - Intel: [**Connectivity Integration**](https://en.wikipedia.org/wiki/CNVi)
|
||||||
* CPL - x86: Current Privilege Level - Privilege levels range from 0-3; lower numbers are more privileged.
|
* CPL - x86: Current Privilege Level - Privilege levels range from 0-3; lower numbers are more privileged.
|
||||||
* CPLD - [**Complex Programmable Logic Device**](https://en.wikipedia.org/wiki/Complex_programmable_logic_device)
|
* CPLD - [**Complex Programmable Logic Device**](https://en.wikipedia.org/wiki/Complex_programmable_logic_device)
|
||||||
|
* CPPC - AMD: Collaborative Processor Performance Controls
|
||||||
* CPS - Characters Per Second
|
* CPS - Characters Per Second
|
||||||
* CPU - [**Central Processing
|
* CPU - [**Central Processing
|
||||||
Unit**](http://en.wikipedia.org/wiki/Central_processing_unit)
|
Unit**](http://en.wikipedia.org/wiki/Central_processing_unit)
|
||||||
@@ -196,12 +204,14 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* CSI - MIPI: [**Camera Serial
|
* CSI - MIPI: [**Camera Serial
|
||||||
Interface**](https://en.wikipedia.org/wiki/Camera_Serial_Interface)
|
Interface**](https://en.wikipedia.org/wiki/Camera_Serial_Interface)
|
||||||
* CSME - Intel: Converged Security and Management Engine
|
* CSME - Intel: Converged Security and Management Engine
|
||||||
|
* CTLE - Intel: Continuous Time Linear Equalization
|
||||||
* CVE - [**Common Vulnerabilities and Exposures**](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures)
|
* CVE - [**Common Vulnerabilities and Exposures**](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures)
|
||||||
* CZN - AMD: Cezanne - CPU Family 19h, Model 50h
|
* CZN - AMD: [**Cezanne**](https://en.wikichip.org/wiki/amd/cores/cezanne) - CPU Family 19h, Model 50h
|
||||||
|
|
||||||
|
|
||||||
## D
|
## D
|
||||||
|
|
||||||
|
* D$ - Data Cache
|
||||||
* D-States - [**ACPI Device power
|
* D-States - [**ACPI Device power
|
||||||
states**](https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface#Device_states)
|
states**](https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface#Device_states)
|
||||||
D0-D3 - These are device specific power states, with each higher
|
D0-D3 - These are device specific power states, with each higher
|
||||||
@@ -223,6 +233,8 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* DDC - [**Display Data Channel**](https://en.wikipedia.org/wiki/Display_Data_Channel)
|
* DDC - [**Display Data Channel**](https://en.wikipedia.org/wiki/Display_Data_Channel)
|
||||||
* DDI - Intel: Digital Display Interface
|
* DDI - Intel: Digital Display Interface
|
||||||
* DDR - [**Double Data Rate**](https://en.wikipedia.org/wiki/Double_data_rate)
|
* DDR - [**Double Data Rate**](https://en.wikipedia.org/wiki/Double_data_rate)
|
||||||
|
* DEVAPC - Mediatek: Device Access Permission Control
|
||||||
|
* DFP - USB: Downstream Facing port
|
||||||
* DHCP - [**Dynamic Host Configuration Protocol**](https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol)
|
* DHCP - [**Dynamic Host Configuration Protocol**](https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol)
|
||||||
* DID - Device Identifier
|
* DID - Device Identifier
|
||||||
* DIMM - [**Dual Inline Memory Module**](https://en.wikipedia.org/wiki/DIMM)
|
* DIMM - [**Dual Inline Memory Module**](https://en.wikipedia.org/wiki/DIMM)
|
||||||
@@ -235,6 +247,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
Graphics Card, Sound Card. DMA is an essential feature of all modern
|
Graphics Card, Sound Card. DMA is an essential feature of all modern
|
||||||
computers, as it allows devices of different speeds to communicate
|
computers, as it allows devices of different speeds to communicate
|
||||||
without subjecting the CPU to a massive interrupt load.
|
without subjecting the CPU to a massive interrupt load.
|
||||||
|
* DMI - Direct Media Interface is a link/bus between CPU and PCH.
|
||||||
* DMI - [**Desktop Management Interface**](Desktop_Management_Interface)
|
* DMI - [**Desktop Management Interface**](Desktop_Management_Interface)
|
||||||
* DMIC - Digital Microphone
|
* DMIC - Digital Microphone
|
||||||
* DMTF - [**Distributed Management Task Force**](https://en.wikipedia.org/wiki/Distributed_Management_Task_Force)
|
* DMTF - [**Distributed Management Task Force**](https://en.wikipedia.org/wiki/Distributed_Management_Task_Force)
|
||||||
@@ -243,6 +256,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* DNV - Intel: [**Denverton**](https://en.wikichip.org/wiki/intel/cores/denverton)
|
* DNV - Intel: [**Denverton**](https://en.wikichip.org/wiki/intel/cores/denverton)
|
||||||
* DOS - Disk Operating System
|
* DOS - Disk Operating System
|
||||||
* DP - DisplayPort
|
* DP - DisplayPort
|
||||||
|
* DPM - Mediatek: DRAM Power Manager
|
||||||
* DPTF - Intel: Dynamic Power and Thermal Framework
|
* DPTF - Intel: Dynamic Power and Thermal Framework
|
||||||
* DRAM - Memory: [**Dynamic Random Access Memory**](https://en.wikipedia.org/wiki/Dynamic_random-access_memory)
|
* DRAM - Memory: [**Dynamic Random Access Memory**](https://en.wikipedia.org/wiki/Dynamic_random-access_memory)
|
||||||
* DRTM - Dynamic Root of Trust for Measurement
|
* DRTM - Dynamic Root of Trust for Measurement
|
||||||
@@ -250,7 +264,10 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
data-in pin is generally referred to as D, and the data-out pin is Q,
|
data-in pin is generally referred to as D, and the data-out pin is Q,
|
||||||
thus the IO Data signal lines are referred to as DQ lines.
|
thus the IO Data signal lines are referred to as DQ lines.
|
||||||
* DQS - Memory: Data Q Strobe - Data valid signal for DDR memory.
|
* DQS - Memory: Data Q Strobe - Data valid signal for DDR memory.
|
||||||
* DRM - [**Digital Rights Management**](https://en.wikipedia.org/wiki/Digital_rights_management)
|
* DRM - [**Digital Rights
|
||||||
|
Management**](https://en.wikipedia.org/wiki/Digital_rights_management)
|
||||||
|
* DRP - USB: Port than can be switched between either a Downstream facing (DFP) or
|
||||||
|
an Upstream Facing (UFP).
|
||||||
* DRQ - DMA Request
|
* DRQ - DMA Request
|
||||||
* DRTU - Intel: Diagnostics and Regulatory Testing Utility
|
* DRTU - Intel: Diagnostics and Regulatory Testing Utility
|
||||||
* DSDT - The [**Differentiated System Descriptor
|
* DSDT - The [**Differentiated System Descriptor
|
||||||
@@ -262,12 +279,15 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* DSL - [**Digital subscriber line**](https://en.wikipedia.org/wiki/Digital_subscriber_line)
|
* DSL - [**Digital subscriber line**](https://en.wikipedia.org/wiki/Digital_subscriber_line)
|
||||||
* DSP - [**Digital Signal Processor**](https://en.wikipedia.org/wiki/Digital_signal_processor)
|
* DSP - [**Digital Signal Processor**](https://en.wikipedia.org/wiki/Digital_signal_processor)
|
||||||
* DTB - U-Boot: Device Tree Binary
|
* DTB - U-Boot: Device Tree Binary
|
||||||
* dTPM - Discrete Trusted Platform Module
|
* dTPM - Discrete TPM (Trusted Platform Module) - A separate TPM chip,
|
||||||
|
vs Integrated TPMs or fTPMs (Firmware TPMs).
|
||||||
* DTS - U-Boot: Device Tree Source
|
* DTS - U-Boot: Device Tree Source
|
||||||
* DVFS - ARM: Dynamic Voltage and Frequency Scaling
|
* DVFS - ARM: Dynamic Voltage and Frequency Scaling
|
||||||
* DVI - [**Digital Video Interface**](https://en.wikipedia.org/wiki/Digital_Visual_Interface)
|
* DVI - [**Digital Video Interface**](https://en.wikipedia.org/wiki/Digital_Visual_Interface)
|
||||||
* DVT - Production Timeline: Design Validation Test
|
* DVT - Production Timeline: Design Validation Test
|
||||||
* DW - DesignWare
|
* DW - DesignWare: A portfolio of silicon IP blocks for sale by the
|
||||||
|
Synopsys company. Includes blocks like USB, MIPI, PCIe, HDMI, SATA,
|
||||||
|
I2c, memory controllers and more.
|
||||||
* DXE - UEFI: [**Driver Execution Environment**](https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#DXE_%E2%80%93_Driver_Execution_Environment_)
|
* DXE - UEFI: [**Driver Execution Environment**](https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#DXE_%E2%80%93_Driver_Execution_Environment_)
|
||||||
* DXIO - AMD: Distributed CrossBar I/O
|
* DXIO - AMD: Distributed CrossBar I/O
|
||||||
|
|
||||||
@@ -283,7 +303,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
Out**](https://en.wikipedia.org/wiki/Dynamic_random-access_memory#Extended_data_out_DRAM)
|
Out**](https://en.wikipedia.org/wiki/Dynamic_random-access_memory#Extended_data_out_DRAM)
|
||||||
- A DRAM standard introduced in 1994 that improved upon, but was
|
- A DRAM standard introduced in 1994 that improved upon, but was
|
||||||
backwards compatible with FPM (Fast Page Mode) memory.
|
backwards compatible with FPM (Fast Page Mode) memory.
|
||||||
* EDP - [**Embedded DisplayPort**](DisplayPort)
|
* eDP - [**Embedded DisplayPort**](https://en.wikipedia.org/wiki/DisplayPort#eDP)
|
||||||
* EDS - Intel: External Design Specification
|
* EDS - Intel: External Design Specification
|
||||||
* EEPROM - [**Electrically Erasable Programmable ROM**](https://en.wikipedia.org/wiki/EEPROM) (common mistake:
|
* EEPROM - [**Electrically Erasable Programmable ROM**](https://en.wikipedia.org/wiki/EEPROM) (common mistake:
|
||||||
electrical erasable programmable ROM).
|
electrical erasable programmable ROM).
|
||||||
@@ -340,7 +360,9 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* FSB - [**Front-Side Bus**](https://en.wikipedia.org/wiki/Front-side_bus)
|
* FSB - [**Front-Side Bus**](https://en.wikipedia.org/wiki/Front-side_bus)
|
||||||
* FSP - Intel: Firmware Support Package
|
* FSP - Intel: Firmware Support Package
|
||||||
* FTP - Network Protocol: [**File Transfer Protocol**](https://en.wikipedia.org/wiki/File_Transfer_Protocol)
|
* FTP - Network Protocol: [**File Transfer Protocol**](https://en.wikipedia.org/wiki/File_Transfer_Protocol)
|
||||||
* FTPM - Firmware TPM
|
* fTPM - Firmware TPM (Trusted Platform Module). This is a TPM that is
|
||||||
|
based in firmware instead of actual hardware. It typically runs in
|
||||||
|
some sort of TEE (Trusted Execution Environment).
|
||||||
|
|
||||||
|
|
||||||
## G
|
## G
|
||||||
@@ -356,6 +378,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
Real Time Clock, and maybe a few other registers running.
|
Real Time Clock, and maybe a few other registers running.
|
||||||
* GART - AMD: [**Graphics Address Remapping Table**](https://en.wikipedia.org/wiki/Graphics_address_remapping_table)
|
* GART - AMD: [**Graphics Address Remapping Table**](https://en.wikipedia.org/wiki/Graphics_address_remapping_table)
|
||||||
* GATT - Graphics Aperture Translation Table
|
* GATT - Graphics Aperture Translation Table
|
||||||
|
* GDT - [Global Descriptor Table](https://wiki.osdev.org/Global_Descriptor_Table)
|
||||||
* GLK - Intel: [**Gemini Lake**](https://en.wikichip.org/wiki/intel/cores/gemini_lake)
|
* GLK - Intel: [**Gemini Lake**](https://en.wikichip.org/wiki/intel/cores/gemini_lake)
|
||||||
* GMA - Intel: [**Graphics Media
|
* GMA - Intel: [**Graphics Media
|
||||||
Accelerator**](https://en.wikipedia.org/wiki/Intel_GMA)
|
Accelerator**](https://en.wikipedia.org/wiki/Intel_GMA)
|
||||||
@@ -407,6 +430,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
|
|
||||||
## I
|
## I
|
||||||
|
|
||||||
|
* I$ - Instruction Cache
|
||||||
* I2C - **Inter-Integrated Circuit** is a bidirectional 2-wire bus for
|
* I2C - **Inter-Integrated Circuit** is a bidirectional 2-wire bus for
|
||||||
communication generally between different ICs on a circuit board.
|
communication generally between different ICs on a circuit board.
|
||||||
* [https://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/i2c-bus.html](https://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/i2c-bus.html)
|
* [https://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/i2c-bus.html](https://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/i2c-bus.html)
|
||||||
@@ -428,6 +452,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* IDSEL/AD - Initialization Device SELect/Address and Data. Each PCI
|
* IDSEL/AD - Initialization Device SELect/Address and Data. Each PCI
|
||||||
slot has a signal called IDSEL. It is used to differentiate between
|
slot has a signal called IDSEL. It is used to differentiate between
|
||||||
the different slots.
|
the different slots.
|
||||||
|
* IDT - [Interrupt Descriptor Table](https://en.wikipedia.org/wiki/Interrupt_descriptor_table)
|
||||||
* IF - AMD: [**Infinity
|
* IF - AMD: [**Infinity
|
||||||
Fabric**](https://en.wikipedia.org/wiki/HyperTransport#Infinity_Fabric)
|
Fabric**](https://en.wikipedia.org/wiki/HyperTransport#Infinity_Fabric)
|
||||||
is a superset of AMD's earlier Hypertransport interconnect.
|
is a superset of AMD's earlier Hypertransport interconnect.
|
||||||
@@ -539,7 +564,9 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* MCU - Memory Control Unit
|
* MCU - Memory Control Unit
|
||||||
* MCU - [**MicroController
|
* MCU - [**MicroController
|
||||||
Unit**](https://en.wikipedia.org/wiki/Microcontroller)
|
Unit**](https://en.wikipedia.org/wiki/Microcontroller)
|
||||||
|
* MCTP - [**Management Component Transport Protocol**](https://en.wikipedia.org/wiki/Management_Component_Transport_Protocol)
|
||||||
* MDFIO - Intel: Multi-Die Fabric IO
|
* MDFIO - Intel: Multi-Die Fabric IO
|
||||||
|
* MDN - AMD: Mendocino
|
||||||
* ME - Intel: Management Engine
|
* ME - Intel: Management Engine
|
||||||
* MEI - Intel: ME Interface (Previously known as HECI)
|
* MEI - Intel: ME Interface (Previously known as HECI)
|
||||||
* Memory training - the process of finding the best speeds, voltages,
|
* Memory training - the process of finding the best speeds, voltages,
|
||||||
@@ -578,9 +605,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
OS software writers to produce SMP-capable machines and OSes in a
|
OS software writers to produce SMP-capable machines and OSes in a
|
||||||
vendor-independent manner. Version 1.1 of the spec was released in
|
vendor-independent manner. Version 1.1 of the spec was released in
|
||||||
1994, and the 1.4 version was released in 1995. This has been
|
1994, and the 1.4 version was released in 1995. This has been
|
||||||
generally been
|
generally superseded by the ACPI tables.
|
||||||
https://en.wikipedia.org/wiki/MultiProcessor_Specification by the ACPI
|
|
||||||
tables.
|
|
||||||
* MRC - Intel: Memory Reference Code
|
* MRC - Intel: Memory Reference Code
|
||||||
* MSB - Most Significant Bit
|
* MSB - Most Significant Bit
|
||||||
* MSI - Message Signaled Interrupt
|
* MSI - Message Signaled Interrupt
|
||||||
@@ -588,8 +613,13 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* MT/s - MegaTransfers per second
|
* MT/s - MegaTransfers per second
|
||||||
* MTL - Intel: Meteor Lake
|
* MTL - Intel: Meteor Lake
|
||||||
* MTL - ARM: MHU Transport Layer
|
* MTL - ARM: MHU Transport Layer
|
||||||
* MTRR - [**Memory Type and Range
|
* MTRR - [**Memory Type and Range Register**](http://en.wikipedia.org/wiki/MTRR)
|
||||||
Register**](http://en.wikipedia.org/wiki/MTRR)
|
allows to set the cache behaviour on memory access in x86. Basically,
|
||||||
|
it tells the CPU how to cache certain ranges of memory
|
||||||
|
(e.g. write-through, write-combining, write-back...). Memory ranges
|
||||||
|
are specified over physical address ranges. In Linux, they are visible
|
||||||
|
over `/proc/mtrr` and they can be modified there. For further
|
||||||
|
information, see the [**Linux documentation**](https://www.kernel.org/doc/html/v5.19/x86/pat.html).
|
||||||
|
|
||||||
|
|
||||||
## N
|
## N
|
||||||
@@ -621,8 +651,8 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
|
|
||||||
* ODH - GPIOs: Open Drain High - High is driven to the reference voltage, low is a high-impedance state
|
* ODH - GPIOs: Open Drain High - High is driven to the reference voltage, low is a high-impedance state
|
||||||
* ODL - GPIOs: Open Drain Low - Low is driven to ground, High is a high-impedance state.
|
* ODL - GPIOs: Open Drain Low - Low is driven to ground, High is a high-impedance state.
|
||||||
* ODM - Original Design Manufacturer
|
* ODM - [**Original Design Manufacturer**](https://en.wikipedia.org/wiki/Original_design_manufacturer)
|
||||||
* OEM - Original Equipment Manufacturer
|
* OEM - [**Original Equipment Manufacturer**](https://en.wikipedia.org/wiki/Original_equipment_manufacturer)
|
||||||
* OHCI - [**Open Host Controller
|
* OHCI - [**Open Host Controller
|
||||||
Interface**](https://en.wikipedia.org/wiki/Host_Controller_Interface_%28USB%29)
|
Interface**](https://en.wikipedia.org/wiki/Host_Controller_Interface_%28USB%29)
|
||||||
- non-proprietary USB Host controller for USB 1.1 (May also refer to
|
- non-proprietary USB Host controller for USB 1.1 (May also refer to
|
||||||
@@ -643,7 +673,9 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* PAT - [**Page Attribute
|
* PAT - [**Page Attribute
|
||||||
Table**](https://en.wikipedia.org/wiki/Page_attribute_table) This can
|
Table**](https://en.wikipedia.org/wiki/Page_attribute_table) This can
|
||||||
be used independently or in combination with MTRR to setup memory type
|
be used independently or in combination with MTRR to setup memory type
|
||||||
access ranges. Allows more finely-grained control than MTRR.
|
access ranges. Allows more finely-grained control than MTRR. Compared to MTRR,
|
||||||
|
which sets memory types by physical address ranges, PAT sets them at Page
|
||||||
|
level.
|
||||||
* PAT - Intel: [**Performance Acceleration
|
* PAT - Intel: [**Performance Acceleration
|
||||||
Technology**](https://en.wikipedia.org/wiki/Performance_acceleration_technology)
|
Technology**](https://en.wikipedia.org/wiki/Performance_acceleration_technology)
|
||||||
* PATA - Parallel Advanced Technology Attachment - A renaming of ATA
|
* PATA - Parallel Advanced Technology Attachment - A renaming of ATA
|
||||||
@@ -669,7 +701,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
function's configuration space from 256 bytes to 4K.
|
function's configuration space from 256 bytes to 4K.
|
||||||
* PCIe - [**PCI Express**](http://en.wikipedia.org/wiki/Pci_express)
|
* PCIe - [**PCI Express**](http://en.wikipedia.org/wiki/Pci_express)
|
||||||
* PCMCIA: Personal Computer Memory Card International Association
|
* PCMCIA: Personal Computer Memory Card International Association
|
||||||
* PCO - AMD: Picasso
|
* PCO - AMD: [**Picasso**](https://en.wikichip.org/wiki/amd/cores/picasso)
|
||||||
* PCR: TPM: Platform Configuration Register
|
* PCR: TPM: Platform Configuration Register
|
||||||
* PD - GPIOs: Pull-Down - Setting the pin high drives it to the reference voltage. Setting it low drives it to ground through a resistor.
|
* PD - GPIOs: Pull-Down - Setting the pin high drives it to the reference voltage. Setting it low drives it to ground through a resistor.
|
||||||
* PD - Power Delivery - This is a specification for communicating power
|
* PD - Power Delivery - This is a specification for communicating power
|
||||||
@@ -837,6 +869,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* SEEP - Serial EEPROM (Electrically Erasable Programmable Read-Only
|
* SEEP - Serial EEPROM (Electrically Erasable Programmable Read-Only
|
||||||
Memory)
|
Memory)
|
||||||
* SEV - AMD: Secure Encrypted Virtualization
|
* SEV - AMD: Secure Encrypted Virtualization
|
||||||
|
* SF - Snoop Filter
|
||||||
* Shadow RAM - RAM which content is copied from ROM residing at the same
|
* Shadow RAM - RAM which content is copied from ROM residing at the same
|
||||||
address for speedup purposes.
|
address for speedup purposes.
|
||||||
* Shim - A small piece of code whose only purpose is to act as an
|
* Shim - A small piece of code whose only purpose is to act as an
|
||||||
@@ -873,6 +906,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* SPI - [**Serial Peripheral
|
* SPI - [**Serial Peripheral
|
||||||
Interface**](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface)
|
Interface**](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface)
|
||||||
* SPL - AMD: Security Patch Level
|
* SPL - AMD: Security Patch Level
|
||||||
|
* SPM - Mediatek: System Power Manager
|
||||||
* SPMI - MIPI: System Power Management Interface
|
* SPMI - MIPI: System Power Management Interface
|
||||||
* SRAM - Static Random Access Memory
|
* SRAM - Static Random Access Memory
|
||||||
* SSD - Solid State Drive
|
* SSD - Solid State Drive
|
||||||
@@ -889,7 +923,9 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
Bay**](https://en.wikipedia.org/wiki/SSI_CEB)
|
Bay**](https://en.wikipedia.org/wiki/SSI_CEB)
|
||||||
* SSI-TEB - Physical board format: [**SSI Thin Electronics
|
* SSI-TEB - Physical board format: [**SSI Thin Electronics
|
||||||
Bay**](https://en.wikipedia.org/wiki/SSI_CEB)
|
Bay**](https://en.wikipedia.org/wiki/SSI_CEB)
|
||||||
|
* SSP - [**Speech Signal Processor**](https://en.wikipedia.org/wiki/Speech_processing)
|
||||||
* STAPM - AMD: Skin Temperature Aware Power Management
|
* STAPM - AMD: Skin Temperature Aware Power Management
|
||||||
|
* STB - AMD: Smart Trace Buffer
|
||||||
* SuperIO - The [**Super I/O**](https://en.wikipedia.org/wiki/Super_I/O)
|
* SuperIO - The [**Super I/O**](https://en.wikipedia.org/wiki/Super_I/O)
|
||||||
(SIO) device provides a system with any of a number of different
|
(SIO) device provides a system with any of a number of different
|
||||||
peripherals. Most common are: A PS/2 Keyboard and mouse port, LPT
|
peripherals. Most common are: A PS/2 Keyboard and mouse port, LPT
|
||||||
@@ -909,7 +945,8 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* TDMA - Time-Division Multiple Access
|
* TDMA - Time-Division Multiple Access
|
||||||
* TDP - [**Thermal Design
|
* TDP - [**Thermal Design
|
||||||
Power**](https://en.wikipedia.org/wiki/Thermal_design_power)
|
Power**](https://en.wikipedia.org/wiki/Thermal_design_power)
|
||||||
* TEE - Trusted Execution Environment
|
* TEE - [**Trusted Execution
|
||||||
|
Environment**](https://en.wikipedia.org/wiki/Trusted_execution_environment)
|
||||||
* TFTP - Network Protocol: Trivial File Transfer Protocol
|
* TFTP - Network Protocol: Trivial File Transfer Protocol
|
||||||
* TGL - Intel: Tigerlake
|
* TGL - Intel: Tigerlake
|
||||||
* THC - Touch Host Controller
|
* THC - Touch Host Controller
|
||||||
@@ -919,6 +956,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* TLA - Three Letter Acronym
|
* TLA - Three Letter Acronym
|
||||||
* TLB - [**Translation Lookside
|
* TLB - [**Translation Lookside
|
||||||
Buffer**](https://en.wikipedia.org/wiki/Translation_lookaside_buffer)
|
Buffer**](https://en.wikipedia.org/wiki/Translation_lookaside_buffer)
|
||||||
|
* TME - Intel: Total Memory Encryption
|
||||||
* TOCTOU - Time-Of-Check to Time-Of-Use
|
* TOCTOU - Time-Of-Check to Time-Of-Use
|
||||||
* TOLUM - Top of Low Usable Memory
|
* TOLUM - Top of Low Usable Memory
|
||||||
* ToM - Top of Memory
|
* ToM - Top of Memory
|
||||||
@@ -927,6 +965,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* TSC - [**Time Stamp
|
* TSC - [**Time Stamp
|
||||||
Counter**](https://en.wikipedia.org/wiki/Time_Stamp_Counter)
|
Counter**](https://en.wikipedia.org/wiki/Time_Stamp_Counter)
|
||||||
* TSEG - TOM (Top of Memory) Segment
|
* TSEG - TOM (Top of Memory) Segment
|
||||||
|
* TSR - Temperature Sensor
|
||||||
* TWAIN - Technology without an interesting name.
|
* TWAIN - Technology without an interesting name.
|
||||||
* TX - Transmit
|
* TX - Transmit
|
||||||
* TXE - Intel: Trusted eXecution Engine
|
* TXE - Intel: Trusted eXecution Engine
|
||||||
@@ -940,6 +979,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
* UDK - UEFI: UEFI Development Kit
|
* UDK - UEFI: UEFI Development Kit
|
||||||
* UDP - User Datagram Protocol
|
* UDP - User Datagram Protocol
|
||||||
* UEFI - Unified Extensible Firmware Interface
|
* UEFI - Unified Extensible Firmware Interface
|
||||||
|
* UFP - USB: Upstream Facing Port
|
||||||
* UFS - Universal Flash storage
|
* UFS - Universal Flash storage
|
||||||
* UHCI - USB: [**Universal Host Controller
|
* UHCI - USB: [**Universal Host Controller
|
||||||
Interface**](https://en.wikipedia.org/wiki/Host_controller_interface_%28USB%2C_Firewire%29%23UHCI)
|
Interface**](https://en.wikipedia.org/wiki/Host_controller_interface_%28USB%2C_Firewire%29%23UHCI)
|
||||||
@@ -989,6 +1029,7 @@ Spec](https://uefi.org/specifications) for details, or run the tool
|
|||||||
tablets, it's on the the side away from the screen.
|
tablets, it's on the the side away from the screen.
|
||||||
* WDT - [**WatchDog Timer**](https://en.wikipedia.org/wiki/Watchdog_timer)
|
* WDT - [**WatchDog Timer**](https://en.wikipedia.org/wiki/Watchdog_timer)
|
||||||
* WLAN - Wireless LAN (Local Area Network)
|
* WLAN - Wireless LAN (Local Area Network)
|
||||||
|
* WWAN - Telecommunication: Wireless WAN (Wide Area Network)
|
||||||
* WP - Cache policy: [**Write-Protected**](https://en.wikipedia.org/wiki/Cache_%28computing%29)
|
* WP - Cache policy: [**Write-Protected**](https://en.wikipedia.org/wiki/Cache_%28computing%29)
|
||||||
* WO - Write-only
|
* WO - Write-only
|
||||||
* WOL - [**Wake-on-LAN**](https://en.wikipedia.org/wiki/Wake-on-LAN)
|
* WOL - [**Wake-on-LAN**](https://en.wikipedia.org/wiki/Wake-on-LAN)
|
||||||
|
@@ -66,7 +66,7 @@ case 'm':
|
|||||||
case 'K':
|
case 'K':
|
||||||
case 'k':
|
case 'k':
|
||||||
mem <<= 10;
|
mem <<= 10;
|
||||||
/* fall through */
|
__fallthrough;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -818,9 +818,9 @@ Function return values and names
|
|||||||
|
|
||||||
Functions can return values of many different kinds, and one of the most
|
Functions can return values of many different kinds, and one of the most
|
||||||
common is a value indicating whether the function succeeded or failed.
|
common is a value indicating whether the function succeeded or failed.
|
||||||
Such a value can be represented as an error-code integer (-Exxx =
|
Such a value can be represented as an error-code integer (`CB_ERR_xxx`
|
||||||
failure, 0 = success) or a "succeeded" boolean (0 = failure, non-zero
|
(negative number) = failure, `CB_SUCCESS` (0) = success) or a "succeeded"
|
||||||
= success).
|
boolean (0 = failure, non-zero = success).
|
||||||
|
|
||||||
Mixing up these two sorts of representations is a fertile source of
|
Mixing up these two sorts of representations is a fertile source of
|
||||||
difficult-to-find bugs. If the C language included a strong distinction
|
difficult-to-find bugs. If the C language included a strong distinction
|
||||||
@@ -832,21 +832,84 @@ If the name of a function is an action or an imperative command,
|
|||||||
the function should return an error-code integer. If the name
|
the function should return an error-code integer. If the name
|
||||||
is a predicate, the function should return a "succeeded" boolean.
|
is a predicate, the function should return a "succeeded" boolean.
|
||||||
|
|
||||||
For example, "add work" is a command, and the add_work() function
|
For example, "add work" is a command, and the `add_work()` function
|
||||||
returns 0 for success or -EBUSY for failure. In the same way, "PCI
|
returns 0 for success or `CB_ERR` for failure. In the same way, "PCI
|
||||||
device present" is a predicate, and the pci_dev_present() function
|
device present" is a predicate, and the `pci_dev_present()` function
|
||||||
returns 1 if it succeeds in finding a matching device or 0 if it
|
returns 1 if it succeeds in finding a matching device or 0 if it
|
||||||
doesn't.
|
doesn't.
|
||||||
|
|
||||||
All EXPORTed functions must respect this convention, and so should all
|
|
||||||
public functions. Private (static) functions need not, but it is
|
|
||||||
recommended that they do.
|
|
||||||
|
|
||||||
Functions whose return value is the actual result of a computation,
|
Functions whose return value is the actual result of a computation,
|
||||||
rather than an indication of whether the computation succeeded, are not
|
rather than an indication of whether the computation succeeded, are not
|
||||||
subject to this rule. Generally they indicate failure by returning some
|
subject to this rule. Generally they indicate failure by returning some
|
||||||
out-of-range result. Typical examples would be functions that return
|
out-of-range result. Typical examples would be functions that return
|
||||||
pointers; they use NULL or the ERR_PTR mechanism to report failure.
|
pointers; they use NULL to report failure.
|
||||||
|
|
||||||
|
Error handling, assertions and die()
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
As firmware, coreboot has no means to let the user interactively fix things when
|
||||||
|
something goes wrong. We either succeed to boot or the device becomes a brick
|
||||||
|
that must be recovered through complicated external means (e.g. a flash
|
||||||
|
programmer). Therefore, coreboot code should strive to continue booting
|
||||||
|
wherever possible.
|
||||||
|
|
||||||
|
In most cases, errors should be handled by logging a message of at least
|
||||||
|
`BIOS_ERR` level, returning out of the function stack for the failed feature,
|
||||||
|
and then continuing execution. For example, if a function reading the EDID of an
|
||||||
|
eDP display panel encounters an I2C error, it should print a "cannot read EDID"
|
||||||
|
message and return an error code. The calling display initialization function
|
||||||
|
knows that without the EDID there is no way to initialize the display correctly,
|
||||||
|
so it will also immediately return with an error code without running its
|
||||||
|
remaining code that would initialize the SoC's display controller. Exeuction
|
||||||
|
returns further up the function stack to the mainboard initialization code
|
||||||
|
which continues booting despite the failed display initialization, since
|
||||||
|
display functionality is non-essential to the system. (Code is encouraged but
|
||||||
|
not required to use `enum cb_err` error codes to return these errors.)
|
||||||
|
|
||||||
|
coreboot also has the `die()` function that completely halts execution. `die()`
|
||||||
|
should only be used as a last resort, since it results in the worst user
|
||||||
|
experience (bricked system). It is generally preferrable to continue executing
|
||||||
|
even after a problem was encountered that might be fatal (e.g. SPI clock
|
||||||
|
couldn't be configured correctly), because a slight chance of successfully
|
||||||
|
booting is still better than not booting at all. The only cases where `die()`
|
||||||
|
should be used are:
|
||||||
|
|
||||||
|
1. There is no (simple) way to continue executing. For example, when loading the
|
||||||
|
next stage from SPI flash fails, we don't have any more code to execute. When
|
||||||
|
memory initialization fails, we have no space to load the ramstage into.
|
||||||
|
|
||||||
|
2. Continuing execution would pose a security risk. All security features in
|
||||||
|
coreboot are optional, but when they are configured in the user must be able
|
||||||
|
to rely on them. For example, if CBFS verification is enabled and the file
|
||||||
|
hash when loading the romstage doesn't match what it should be, it is better
|
||||||
|
to stop execution than to jump to potentially malicious code.
|
||||||
|
|
||||||
|
In addition to normal error logging with `printk()`, coreboot also offers the
|
||||||
|
`assert()` macro. `assert()` should be used judiciously to confirm that
|
||||||
|
conditions are true which the programmer _knows_ to be true, in order to catch
|
||||||
|
programming errors and incorrect assumptions. It is therefore different from a
|
||||||
|
normal `if ()`-check that is used to actually test for things which may turn
|
||||||
|
out to be true or false based on external conditions. For example, anything
|
||||||
|
that involves communicating with hardware, such as whether an attempt to read
|
||||||
|
from SPI flash succeeded, should _not_ use `assert()` and should instead just
|
||||||
|
be checked with a normal `if ()` and subsequent manual error handling. Hardware
|
||||||
|
can always fail for various reasons and the programmer can never 100% assume in
|
||||||
|
advance that it will work as expected. On the other hand, if a function takes a
|
||||||
|
pointer parameter `ctx` and the contract for that function (as documented in a
|
||||||
|
comment above its declaration) specifies that this parameter should point to a
|
||||||
|
valid context structure, then adding an `assert(ctx)` line to that function may
|
||||||
|
be a good idea. The programmer knows that this function should never be called
|
||||||
|
with a NULL pointer (because that's how it is specified), and if it was actually
|
||||||
|
called with a NULL pointer that would indicate a programming error on account of
|
||||||
|
the caller.
|
||||||
|
|
||||||
|
`assert()` can be configured to either just print an error message and continue
|
||||||
|
execution (default), or call `die()` (when `CONFIG_FATAL_ASSERTS` is set).
|
||||||
|
Developers are encouraged to always test their code with this option enabled to
|
||||||
|
make assertion errors (and therefore bugs) more easy to notice. Since assertions
|
||||||
|
thus do not always stop execution, they should never be relied upon to be the
|
||||||
|
sole guard against conditions that really _need_ to stop execution (e.g.
|
||||||
|
security guarantees should never be enforced only by `assert()`).
|
||||||
|
|
||||||
Headers and includes
|
Headers and includes
|
||||||
---------------
|
---------------
|
||||||
|
@@ -3,6 +3,84 @@
|
|||||||
The document describes the coreboot options how to make CBFS files populate
|
The document describes the coreboot options how to make CBFS files populate
|
||||||
platform-unique SMBIOS data.
|
platform-unique SMBIOS data.
|
||||||
|
|
||||||
|
## SMBIOS Serial Number
|
||||||
|
|
||||||
|
The [DMTF SMBIOS specification] defines a field in the type 1 System
|
||||||
|
Information and type 2 Baseboard Information called Serial Number. It
|
||||||
|
is a null-terminated string field assumed to be unique per platform. Certain
|
||||||
|
mainboard ports have SMBIOS hooks to generate the Serial Numbers from external
|
||||||
|
data, e.g. Lenovo Thinkpads (see DRIVER_LENOVO_SERIALS). This driver aims to
|
||||||
|
provide an option to populate the Serial Numbers from CBFS for boards that
|
||||||
|
can't generate the it from any source.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
In the coreboot configuration menu (`make menuconfig`) go to `Generic Drivers`
|
||||||
|
and select an option `Serial number in CBFS`. The Kconfig system will enable
|
||||||
|
`DRIVERS_GENERIC_CBFS_SERIAL` and the relevant code parts will be compiled into
|
||||||
|
coreboot image.
|
||||||
|
|
||||||
|
After the coreboot build for your board completes, use the cbfstool to include
|
||||||
|
the file containing the serial number:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./build/cbfstool build/coreboot.rom add -n serial_number -t raw -f /path/to/serial_file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Where `serial_file.txt` is the unterminated string representation of the SMBIOS
|
||||||
|
type 1 or type 2 Serial Number, e.g. `5Q4Q7Y1`. If you use vboot with 1 or 2 RW
|
||||||
|
partitions you will have to specify the RW regions where the file is going to
|
||||||
|
be added too. By default the RW CBFS partitions are truncated, so the files
|
||||||
|
would probably not fit, one needs to expand them first.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./build/cbfstool build/coreboot.rom expand -r FW_MAIN_A
|
||||||
|
./build/cbfstool build/coreboot.rom add -n serial_number -t raw \
|
||||||
|
-f /path/to/serial_file.txt -r FW_MAIN_A
|
||||||
|
./build/cbfstool build/coreboot.rom truncate -r FW_MAIN_A
|
||||||
|
|
||||||
|
./build/cbfstool build/coreboot.rom expand -r FW_MAIN_B
|
||||||
|
./build/cbfstool build/coreboot.rom add -n serial_number -t raw \
|
||||||
|
-f /path/to/serial_file.txt -r FW_MAIN_B
|
||||||
|
./build/cbfstool build/coreboot.rom truncate -r FW_MAIN_B
|
||||||
|
```
|
||||||
|
|
||||||
|
By default cbfstool adds files to COREBOOT region only, so when vboot is
|
||||||
|
enabled and the platform is booting from RW partition, the file would not be
|
||||||
|
picked up by the driver.
|
||||||
|
|
||||||
|
One may retrieve the Serial Number from running system (if it exists) using one
|
||||||
|
of the following commands:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Type 1
|
||||||
|
echo -n `sudo dmidecode -s system-serial-number` > serial_file.txt
|
||||||
|
# OR Type 2
|
||||||
|
echo -n `sudo dmidecode -s baseboard-serial-number` > serial_file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Ensure the file does not end with whitespaces like LF and/or CR. The above
|
||||||
|
commands will not add any whitespaces. The driver automatically terminates the
|
||||||
|
Serial Number with the NULL character. If the CBFS file is not present, the
|
||||||
|
driver will fall back to the string defined in `MAINBOARD_SERIAL_NUMBER` build
|
||||||
|
option.
|
||||||
|
|
||||||
|
Please note that this driver provides `smbios_mainboard_serial_number` hook
|
||||||
|
overriding the default implementation which returns `MAINBOARD_SERIAL_NUMBER`
|
||||||
|
build option. If you wish to populate only type 2 Serial Number field your
|
||||||
|
board code needs to implement `smbios_system_serial_number`, otherwise the weak
|
||||||
|
implementation of `smbios_system_serial_number` will call
|
||||||
|
`smbios_mainboard_serial_number` from the `DRIVERS_GENERIC_CBFS_SERIAL`
|
||||||
|
implementation overriding it. So selecting the `DRIVERS_GENERIC_CBFS_SERIAL`
|
||||||
|
has a side-effect of populating both SMBIOS type 1 and type 2 Serial Numbers
|
||||||
|
if the board does not implement its own `smbios_system_serial_number`.
|
||||||
|
|
||||||
|
There is also SMBIOS type 3 Chassis Information Serial Number, but it is not
|
||||||
|
populated by `DRIVERS_GENERIC_CBFS_SERIAL` nor by the default weak
|
||||||
|
implementation (returns empty string). If you wish to populate type 3 Serial
|
||||||
|
Number, your board code should override the default
|
||||||
|
`smbios_chassis_serial_number` weak implementation.
|
||||||
|
|
||||||
## SMBIOS System UUID
|
## SMBIOS System UUID
|
||||||
|
|
||||||
The [DMTF SMBIOS specification] defines a field in the type 1 System
|
The [DMTF SMBIOS specification] defines a field in the type 1 System
|
||||||
|
@@ -8,7 +8,7 @@ device pci 15.0 on
|
|||||||
chip drivers/i2c/generic
|
chip drivers/i2c/generic
|
||||||
register "hid" = ""ELAN0000""
|
register "hid" = ""ELAN0000""
|
||||||
register "desc" = ""ELAN Touchpad""
|
register "desc" = ""ELAN Touchpad""
|
||||||
register "irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_A21_IRQ)"
|
register "irq" = "ACPI_IRQ_LEVEL_LOW(GPP_A21_IRQ)"
|
||||||
register "detect" = "1"
|
register "detect" = "1"
|
||||||
register "wake" = "GPE0_DW0_21"
|
register "wake" = "GPE0_DW0_21"
|
||||||
device i2c 15 on end
|
device i2c 15 on end
|
||||||
@@ -39,7 +39,7 @@ Scope (\_SB.PCI0.I2C0)
|
|||||||
I2cSerialBusV2 (0x0015, ControllerInitiated, 400000,
|
I2cSerialBusV2 (0x0015, ControllerInitiated, 400000,
|
||||||
AddressingMode7Bit, "\\_SB.PCI0.I2C0",
|
AddressingMode7Bit, "\\_SB.PCI0.I2C0",
|
||||||
0x00, ResourceConsumer, , Exclusive, )
|
0x00, ResourceConsumer, , Exclusive, )
|
||||||
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake, ,, )
|
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
|
||||||
{
|
{
|
||||||
0x0000002D,
|
0x0000002D,
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,7 @@ Scope (\_SB.PCI0.I2C0)
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
You can see it generates _HID, _UID, _DDN, _STA, _CRS, _S0W, and _PRW
|
You can see it generates \_HID, \_UID, \_DDN, \_STA, \_CRS, \_S0W, and \_PRW
|
||||||
names/methods in the Device's scope.
|
names/methods in the Device's scope.
|
||||||
|
|
||||||
## Utilizing a device driver
|
## Utilizing a device driver
|
||||||
@@ -88,7 +88,7 @@ be included in the ACPI table.
|
|||||||
register "hid" = ""ELAN0000""
|
register "hid" = ""ELAN0000""
|
||||||
```
|
```
|
||||||
|
|
||||||
This corresponds to **const char *hid** in the struct. In the ACPI ASL, it
|
This corresponds to **const char \*hid** in the struct. In the ACPI ASL, it
|
||||||
translates to:
|
translates to:
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -104,7 +104,7 @@ during enumeration in the OS.**
|
|||||||
register "desc" = ""ELAN Touchpad""
|
register "desc" = ""ELAN Touchpad""
|
||||||
```
|
```
|
||||||
|
|
||||||
corresponds to **const char *desc** and in ASL:
|
corresponds to **const char \*desc** and in ASL:
|
||||||
|
|
||||||
```
|
```
|
||||||
Name (_DDN, "ELAN Touchpad") // _DDN: DOS Device Name
|
Name (_DDN, "ELAN Touchpad") // _DDN: DOS Device Name
|
||||||
@@ -115,7 +115,7 @@ corresponds to **const char *desc** and in ASL:
|
|||||||
It also adds the interrupt,
|
It also adds the interrupt,
|
||||||
|
|
||||||
```
|
```
|
||||||
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake, ,, )
|
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
|
||||||
{
|
{
|
||||||
0x0000002D,
|
0x0000002D,
|
||||||
}
|
}
|
||||||
@@ -124,23 +124,30 @@ It also adds the interrupt,
|
|||||||
which comes from:
|
which comes from:
|
||||||
|
|
||||||
```
|
```
|
||||||
register "irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_A21_IRQ)"
|
register "irq" = "ACPI_IRQ_LEVEL_LOW(GPP_A21_IRQ)"
|
||||||
```
|
```
|
||||||
|
|
||||||
The GPIO pin IRQ settings control the "Level", "ActiveLow", and
|
The IRQ settings control the "Trigger" and "Polarity" settings seen above (level
|
||||||
"ExclusiveAndWake" settings seen above (level means it is a level-triggered
|
means it is a level-triggered interrupt as opposed to
|
||||||
interrupt as opposed to edge-triggered; active low means the interrupt is
|
edge-triggered; active low means the interrupt is triggered when the signal is
|
||||||
triggered when the signal is low).
|
low).
|
||||||
|
|
||||||
Note that the ACPI_IRQ_WAKE_LEVEL_LOW macro informs the platform that the GPIO
|
Also note that the IRQ names are SoC-specific, and you will need to
|
||||||
will be routed through SCI (ACPI's System Control Interrupt) for use as a wake
|
|
||||||
source. Also note that the IRQ names are SoC-specific, and you will need to
|
|
||||||
find the names in your SoC's header file. The ACPI_* macros are defined in
|
find the names in your SoC's header file. The ACPI_* macros are defined in
|
||||||
``src/arch/x86/include/acpi/acpi_device.h``.
|
``src/arch/x86/include/acpi/acpi_device.h``.
|
||||||
|
|
||||||
Using a GPIO as an IRQ requires that it is configured in coreboot correctly.
|
Using a GPIO as an IRQ requires that it is configured in coreboot correctly.
|
||||||
This is often done in a mainboard-specific file named ``gpio.c``.
|
This is often done in a mainboard-specific file named ``gpio.c``.
|
||||||
|
|
||||||
|
AMD platforms don't have the ability to route GPIOs to the IO-APIC. Instead the
|
||||||
|
GPIO controller needs to be used directly. You can do this by setting the
|
||||||
|
`irq_gpio` register and using the `ACPI_GPIO_IRQ_X_X` macros.
|
||||||
|
|
||||||
|
i.e.,
|
||||||
|
```
|
||||||
|
register "irq_gpio" = "ACPI_GPIO_IRQ_EDGE_LOW(GPIO_40)"
|
||||||
|
```
|
||||||
|
|
||||||
### detect
|
### detect
|
||||||
|
|
||||||
The next register is:
|
The next register is:
|
||||||
@@ -162,9 +169,10 @@ I2C audio devices should also work without issue.
|
|||||||
Touchscreens can use this feature as well, but special care is needed to
|
Touchscreens can use this feature as well, but special care is needed to
|
||||||
implement the proper power sequencing for the device to be detected. Generally,
|
implement the proper power sequencing for the device to be detected. Generally,
|
||||||
this means driving the enable GPIO high and holding the reset GPIO low in early
|
this means driving the enable GPIO high and holding the reset GPIO low in early
|
||||||
GPIO init (bootblock/romstage), then releasing reset in ramstage. While no
|
GPIO init (bootblock/romstage), then releasing reset in ramstage. The first
|
||||||
boards in the tree currently implement this, it has been used in downstream
|
mainboards in the tree to implement this are google/skyrim and google/guybrush.
|
||||||
forks without issue for some time now.
|
This feature has also been used in downstream forks without issue for some time
|
||||||
|
now on several other boards.
|
||||||
|
|
||||||
### wake
|
### wake
|
||||||
|
|
||||||
@@ -179,6 +187,8 @@ through a GPE, #21 associated with DW0, which is set up in devicetree.cb from
|
|||||||
this example. The "21" indicates GPP_X21, where GPP_X is mapped onto DW0
|
this example. The "21" indicates GPP_X21, where GPP_X is mapped onto DW0
|
||||||
elsewhere in the devicetree.
|
elsewhere in the devicetree.
|
||||||
|
|
||||||
|
### device
|
||||||
|
|
||||||
The last bit of the definition of that device includes:
|
The last bit of the definition of that device includes:
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -192,6 +202,65 @@ found on. In this example, this is I2C bus 0. This also determines the ACPI
|
|||||||
"Scope" that the device names and methods will live under, in this case
|
"Scope" that the device names and methods will live under, in this case
|
||||||
"\_SB.PCI0.I2C0".
|
"\_SB.PCI0.I2C0".
|
||||||
|
|
||||||
|
## Wake sources
|
||||||
|
|
||||||
|
The ACPI spec defines two methods to describe how a device can wake the system.
|
||||||
|
Only one of these methods should be used, otherwise duplicate wake events will
|
||||||
|
be generated.
|
||||||
|
|
||||||
|
### Using GPEs as a wake source
|
||||||
|
|
||||||
|
The `wake` property specified above is used to tell the ACPI subsystem that the
|
||||||
|
device can use a GPE to wake the system. The OS can control whether to enable
|
||||||
|
or disable the wake source by unmasking/masking off the GPE.
|
||||||
|
|
||||||
|
The `GPIO` -> `GPE` mapping must be configured in firmware. On AMD platforms this is
|
||||||
|
generally done by a mainboard specific `gpio.c` file that defines the GPIO
|
||||||
|
using `PAD_SCI`. The `GPIO` -> `GPE` mapping is returned by the
|
||||||
|
`soc_get_gpio_event_table` method that is defined in the SoC specific `gpio.c`
|
||||||
|
file. On Intel platforms, you fill in the `pmc_gpe0_dw0`, `pmc_gpe0_dw1`, and
|
||||||
|
`pmc_gpe0_dw2` fields in the devicetree to map 3 GPIO communities to `tier-1`
|
||||||
|
GPEs (the rest are available as `tier-2` GPEs).
|
||||||
|
|
||||||
|
Windows has a large caveat when using this method. If you use the `gpio_irq`
|
||||||
|
property to define a `GpioInt` in the `_CRS`, and then use the `wake` property
|
||||||
|
to define a `GPE`, Windows will
|
||||||
|
[BSOD](https://github.com/MicrosoftDocs/windows-driver-docs/blob/staging/windows-driver-docs-pr/debugger/bug-check-0xa5--acpi-bios-error.md)
|
||||||
|
complaining about an invalid ACPI configuration.
|
||||||
|
> 0x1000D - A device used both GPE and GPIO interrupts, which is not supported.
|
||||||
|
|
||||||
|
In order to avoid this error, you should use the `irq` property instead. AMD
|
||||||
|
platforms don't support routing GPIOs to the IO-APIC, so this workaround isn't
|
||||||
|
feasible. The other option is to use a wake capable GPIO as described below.
|
||||||
|
|
||||||
|
### Using GPIO interrupts as a wake source
|
||||||
|
|
||||||
|
The `ACPI_IRQ_WAKE_{EDGE,LEVEL}_{LOW,HIGH}` macros can be used when setting the
|
||||||
|
`irq` or `gpio_irq` properties. This ends up setting `ExclusiveAndWake` or
|
||||||
|
`SharedAndWake` on the `Interrupt` or `GpioInt` ACPI resource.
|
||||||
|
|
||||||
|
This method has a few caveats:
|
||||||
|
* On Intel and AMD platforms the IO-APIC can't wake the system. This means using
|
||||||
|
the `ACPI_IRQ_WAKE_*` macros with the `irq` property won't actually wake the
|
||||||
|
system. Instead you need to use the `gpio_irq` property, or a `GPE` as
|
||||||
|
described above.
|
||||||
|
* The OS needs to know how to enable the `wake` bit on the GPIO. For linux this
|
||||||
|
means the platform specific GPIO controller driver must implement the
|
||||||
|
`irq_set_wake` callback. For AMD systems this wasn't
|
||||||
|
[implemented](https://github.com/torvalds/linux/commit/d62bd5ce12d79bcd6a6c3e4381daa7375dc21158)
|
||||||
|
until linux v5.15. If the controller doesn't define this callback, it's
|
||||||
|
possible for the firmware to manually set the `wake` bit on the GPIO. This is
|
||||||
|
often done in a mainboard-specific file named `gpio.c`. This is not
|
||||||
|
recommended because then it's not possible for the OS to disable the wake
|
||||||
|
source.
|
||||||
|
* As of
|
||||||
|
[linux v6.0-rc5](https://github.com/torvalds/linux/releases/tag/v6.0-rc5),
|
||||||
|
the ACPI subsystem doesn't take the interrupt `wake` bit into account when
|
||||||
|
deciding on which power state to put the device in before suspending the
|
||||||
|
system. This means that if you define a power resource for a device via
|
||||||
|
`has_power_resource`, `enable_gpio`, etc, then the linux kernel will place the
|
||||||
|
device into D3Cold. i.e., power off the device.
|
||||||
|
|
||||||
## Other auto-generated names
|
## Other auto-generated names
|
||||||
|
|
||||||
(see [ACPI specification
|
(see [ACPI specification
|
||||||
@@ -199,17 +268,19 @@ found on. In this example, this is I2C bus 0. This also determines the ACPI
|
|||||||
for more details on ACPI methods)
|
for more details on ACPI methods)
|
||||||
|
|
||||||
### _S0W (S0 Device Wake State)
|
### _S0W (S0 Device Wake State)
|
||||||
_S0W indicates the deepest S0 sleep state this device can wake itself from,
|
\_S0W indicates the deepest S0 sleep state this device can wake itself from,
|
||||||
which in this case is ACPI_DEVICE_SLEEP_D3_HOT, representing _D3hot_.
|
which in this case is `ACPI_DEVICE_SLEEP_D3_HOT`, representing _D3hot_.
|
||||||
|
D3Hot means the `PR3` power resources are still on and the device is still
|
||||||
|
responsive on the bus. For i2c devices this is generally the same state as `D0`.
|
||||||
|
|
||||||
### _PRW (Power Resources for Wake)
|
### \_PRW (Power Resources for Wake)
|
||||||
_PRW indicates the power resources and events required for wake. There are no
|
\_PRW indicates the power resources and events required for wake. There are no
|
||||||
dependent power resources, but the GPE (GPE0_DW0_21) is mentioned here (0x15),
|
dependent power resources, but the GPE (GPE0_DW0_21) is mentioned here (0x15),
|
||||||
as well as the deepest sleep state supporting waking the system (3), which is
|
as well as the deepest sleep state supporting waking the system (3), which is
|
||||||
S3.
|
S3.
|
||||||
|
|
||||||
### _STA (Status)
|
### \_STA (Status)
|
||||||
The _STA method is generated automatically, and its values, 0xF, indicates the
|
The \_STA method is generated automatically, and its values, 0xF, indicates the
|
||||||
following:
|
following:
|
||||||
|
|
||||||
Bit [0] – Set if the device is present.
|
Bit [0] – Set if the device is present.
|
||||||
@@ -217,8 +288,8 @@ following:
|
|||||||
Bit [2] – Set if the device should be shown in the UI.
|
Bit [2] – Set if the device should be shown in the UI.
|
||||||
Bit [3] – Set if the device is functioning properly (cleared if device failed its diagnostics).
|
Bit [3] – Set if the device is functioning properly (cleared if device failed its diagnostics).
|
||||||
|
|
||||||
### _CRS (Current resource settings)
|
### \_CRS (Current resource settings)
|
||||||
The _CRS method is generated automatically, as the driver knows it is an I2C
|
The \_CRS method is generated automatically, as the driver knows it is an I2C
|
||||||
controller, and so specifies how to configure the controller for proper
|
controller, and so specifies how to configure the controller for proper
|
||||||
operation with the touchpad.
|
operation with the touchpad.
|
||||||
|
|
||||||
|
114
Documentation/external_docs.md
Normal file
114
Documentation/external_docs.md
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
# External Resources
|
||||||
|
|
||||||
|
This is a list of resources that could be useful to coreboot developers.
|
||||||
|
These are not endorsed or officially recommended by the coreboot project,
|
||||||
|
but simply listed here in the hopes that someone will find something
|
||||||
|
useful.
|
||||||
|
|
||||||
|
Please add any helpful or informational links and sections as you see fit.
|
||||||
|
|
||||||
|
## Articles
|
||||||
|
|
||||||
|
* External Interrupts in the x86 system.
|
||||||
|
* [Part 1: Interrupt controller evolution](https://habr.com/en/post/446312/)
|
||||||
|
* [Part 2: Linux kernel boot options](https://habr.com/en/post/501660/)
|
||||||
|
* [Part 3: Interrupt routing setup in a chipset](https://habr.com/en/post/501912/)
|
||||||
|
* System address map initialization in x86/x64 architecture.
|
||||||
|
* [Part 1: PCI-based systems](https://resources.infosecinstitute.com/topic/system-address-map-initialization-in-x86x64-architecture-part-1-pci-based-systems/)
|
||||||
|
* [Part 2: PCI express-based systems](https://resources.infosecinstitute.com/topic/system-address-map-initialization-x86x64-architecture-part-2-pci-express-based-systems/)
|
||||||
|
* [PCIe elastic buffer](https://www.mindshare.com/files/resources/mindshare_pcie_elastic_buffer.pdf)
|
||||||
|
* [Boot Guard and PSB have user-hostile defaults](https://mjg59.dreamwidth.org/58424.html)
|
||||||
|
|
||||||
|
|
||||||
|
## General Information
|
||||||
|
|
||||||
|
* [OS Dev](https://wiki.osdev.org/Categorized_Main_Page)
|
||||||
|
* [Interface BUS](http://www.interfacebus.com/)
|
||||||
|
* Open course material for a variety of topics such as assembly, firmware,
|
||||||
|
security, debugging, and more.
|
||||||
|
* [Open Security Training](https://opensecuritytraining.info/Training.html),
|
||||||
|
* [Open Security Training 2](https://p.ost2.fyi/)
|
||||||
|
|
||||||
|
|
||||||
|
## Firmware Specifications & Information
|
||||||
|
|
||||||
|
* [System Management BIOS - SMBIOS](https://www.dmtf.org/standards/smbios)
|
||||||
|
* [Desktop and Mobile Architecture for System Hardware - DASH](https://www.dmtf.org/standards/dash)
|
||||||
|
* [PNP BIOS](https://www.intel.com/content/dam/support/us/en/documents/motherboards/desktop/sb/pnpbiosspecificationv10a.pdf)
|
||||||
|
|
||||||
|
|
||||||
|
### ACPI
|
||||||
|
|
||||||
|
* [ACPI Specs](https://uefi.org/acpi/specs)
|
||||||
|
* [ACPI in Linux](https://www.kernel.org/doc/ols/2005/ols2005v1-pages-59-76.pdf)
|
||||||
|
* [ACPI 5 Linux](https://blog.linuxplumbersconf.org/2012/wp-content/uploads/2012/09/LPC2012-ACPI5.pdf)
|
||||||
|
* [ACPI 6 Linux](https://events.static.linuxfound.org/sites/events/files/slides/ACPI_6_and_Linux_0.pdf)
|
||||||
|
|
||||||
|
|
||||||
|
### Security
|
||||||
|
|
||||||
|
* [Intel Boot Guard](https://edk2-docs.gitbook.io/understanding-the-uefi-secure-boot-chain/secure_boot_chain_in_uefi/intel_boot_guard)
|
||||||
|
|
||||||
|
|
||||||
|
## Hardware information
|
||||||
|
|
||||||
|
* [WikiChip](https://en.wikichip.org/wiki/WikiChip)
|
||||||
|
* [Sandpile](https://www.sandpile.org/)
|
||||||
|
* [CPU-World](https://www.cpu-world.com/index.html)
|
||||||
|
* [CPU-Upgrade](https://www.cpu-upgrade.com/index.html)
|
||||||
|
|
||||||
|
|
||||||
|
### Hardware Specifications & Standards
|
||||||
|
|
||||||
|
* [Bluetooth](https://www.bluetooth.com/specifications/specs/) - Bluetooth SIG
|
||||||
|
* [eMMC](https://www.jedec.org/) - JEDEC - (LOGIN REQUIRED)
|
||||||
|
* [eSPI](https://cdrdv2.intel.com/v1/dl/getContent/645987) - Intel
|
||||||
|
* [I2c Spec](https://web.archive.org/web/20170704151406/https://www.nxp.com/docs/en/user-guide/UM10204.pdf),
|
||||||
|
[Appnote](https://www.nxp.com/docs/en/application-note/AN10216.pdf) - NXP
|
||||||
|
* [I2S](https://www.nxp.com/docs/en/user-manual/UM11732.pdf) - NXP
|
||||||
|
* [I3C](https://www.mipi.org/specifications/i3c-sensor-specification) - MIPI Alliance (LOGIN REQUIRED)
|
||||||
|
* [Memory](https://www.jedec.org/) - JEDEC - (LOGIN REQUIRED)
|
||||||
|
* [NVMe](https://nvmexpress.org/developers/) - NVMe Specifications
|
||||||
|
* [LPC](https://www.intel.com/content/dam/www/program/design/us/en/documents/low-pin-count-interface-specification.pdf) - Intel
|
||||||
|
* [PCI / PCIe / M.2](https://pcisig.com/specifications) - PCI-SIG - (LOGIN REQUIRED)
|
||||||
|
* [Power Delivery](https://www.usb.org/documents) - USB Implementers Forum
|
||||||
|
* [SATA](https://sata-io.org/developers/purchase-specification) - SATA-IO (LOGIN REQUIRED)
|
||||||
|
* [SMBus](http://www.smbus.org/specs/) - System Management Interface Forum
|
||||||
|
* [Smart Battery](http://smartbattery.org/specs/) - Smart Battery System Implementers Forum
|
||||||
|
* [USB](https://www.usb.org/documents) - USB Implementers Forum
|
||||||
|
* [WI-FI](https://www.wi-fi.org/discover-wi-fi/specifications) - Wi-Fi Alliance
|
||||||
|
|
||||||
|
|
||||||
|
### Chip Vendor Documentation
|
||||||
|
|
||||||
|
* AMD
|
||||||
|
* [Developer Guides, Manuals & ISA Documents](https://developer.amd.com/resources/developer-guides-manuals/)
|
||||||
|
* [AMD Tech Docs - Official Documentation Page](https://www.amd.com/en/support/tech-docs)
|
||||||
|
* ARM
|
||||||
|
* [Tools and Software - Specifications](https://developer.arm.com/tools-and-software/software-development-tools/specifications)
|
||||||
|
* Intel
|
||||||
|
* [Developer Zone](https://www.intel.com/content/www/us/en/developer/overview.html)
|
||||||
|
* [Resource & Documentation Center](https://www.intel.com/content/www/us/en/resources-documentation/developer.html)
|
||||||
|
* [Architecture Software Developer Manuals](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html)
|
||||||
|
* [Intel specific ACPI](https://www.intel.com/content/www/us/en/standards/processor-vendor-specific-acpi-specification.html)
|
||||||
|
|
||||||
|
* Rockchip
|
||||||
|
* [Open Source Wiki](https://opensource.rock-chips.com/wiki_Main_Page)
|
||||||
|
|
||||||
|
|
||||||
|
## Software
|
||||||
|
|
||||||
|
* [Fiedka](https://github.com/fiedka/fiedka) - A graphical Firmware Editor
|
||||||
|
* [IOTools](https://github.com/adurbin/iotools) - Command line tools to access hardware registers
|
||||||
|
* [UEFITool](https://github.com/LongSoft/UEFITool) - Editor for UEFI PI compliant firmware images
|
||||||
|
* [CHIPSEC](https://chipsec.github.io) - Framework for analyzing platform level security & configuration
|
||||||
|
* [SPDEditor](https://github.com/integralfx/SPDEditor) - GUI to edit DDR3 SPD files
|
||||||
|
* [DDR4XMPEditor](https://github.com/integralfx/DDR4XMPEditor) - Editor for DDR4 SPD and XMP
|
||||||
|
* [overclockSPD](https://github.com/baboomerang/overclockSPD) - Fast and easy way to read and write data to RAM SPDs.
|
||||||
|
* [VBiosFinder](https://github.com/coderobe/VBiosFinder) - This tool attempts to extract a VBIOS from a BIOS update.
|
||||||
|
|
||||||
|
|
||||||
|
## Infrastructure software
|
||||||
|
|
||||||
|
* [Kconfig](https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html)
|
||||||
|
* [GNU Make](https://www.gnu.org/software/make/manual/)
|
@@ -197,4 +197,5 @@ Contents:
|
|||||||
* [Boards supported in each release directory](releases/boards_supported_on_branches.md)
|
* [Boards supported in each release directory](releases/boards_supported_on_branches.md)
|
||||||
* [Release notes](releases/index.md)
|
* [Release notes](releases/index.md)
|
||||||
* [Acronyms & Definitions](acronyms.md)
|
* [Acronyms & Definitions](acronyms.md)
|
||||||
|
* [External Resources](external_docs.md)
|
||||||
* [Documentation License](documentation_license.md)
|
* [Documentation License](documentation_license.md)
|
||||||
|
@@ -383,7 +383,7 @@ training. This example expects that the default value of this `register` is set
|
|||||||
|
|
||||||
void mainboard_memory_init_params(FSPM_UPD *mupd)
|
void mainboard_memory_init_params(FSPM_UPD *mupd)
|
||||||
{
|
{
|
||||||
if (fw_config_probe_one(FW_CONFIG(FEATURE, DISABLED))
|
if (fw_config_probe(FW_CONFIG(FEATURE, DISABLED))
|
||||||
mupd->ExampleFeature = false;
|
mupd->ExampleFeature = false;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@@ -185,6 +185,7 @@ The boards in this section are not real mainboards, but emulators.
|
|||||||
- [StarLite Mk III](starlabs/lite_glk.md)
|
- [StarLite Mk III](starlabs/lite_glk.md)
|
||||||
- [StarLite Mk IV](starlabs/lite_glkr.md)
|
- [StarLite Mk IV](starlabs/lite_glkr.md)
|
||||||
- [StarBook Mk V](starlabs/starbook_tgl.md)
|
- [StarBook Mk V](starlabs/starbook_tgl.md)
|
||||||
|
- [StarBook Mk VI](starlabs/starbook_adl.md)
|
||||||
- [Flashing devices](starlabs/common/flashing.md)
|
- [Flashing devices](starlabs/common/flashing.md)
|
||||||
|
|
||||||
## Supermicro
|
## Supermicro
|
||||||
@@ -201,8 +202,10 @@ The boards in this section are not real mainboards, but emulators.
|
|||||||
- [Bonobo Workstation 14](system76/bonw14.md)
|
- [Bonobo Workstation 14](system76/bonw14.md)
|
||||||
- [Darter Pro 6](system76/darp6.md)
|
- [Darter Pro 6](system76/darp6.md)
|
||||||
- [Darter Pro 7](system76/darp7.md)
|
- [Darter Pro 7](system76/darp7.md)
|
||||||
|
- [Darter Pro 8](system76/darp8.md)
|
||||||
- [Galago Pro 4](system76/galp4.md)
|
- [Galago Pro 4](system76/galp4.md)
|
||||||
- [Galago Pro 5](system76/galp5.md)
|
- [Galago Pro 5](system76/galp5.md)
|
||||||
|
- [Galago Pro 6](system76/galp6.md)
|
||||||
- [Gazelle 15](system76/gaze15.md)
|
- [Gazelle 15](system76/gaze15.md)
|
||||||
- [Gazelle 16](system76/gaze16.md)
|
- [Gazelle 16](system76/gaze16.md)
|
||||||
- [Lemur Pro 9](system76/lemp9.md)
|
- [Lemur Pro 9](system76/lemp9.md)
|
||||||
|
@@ -26,12 +26,12 @@ host up to 4 Delta Lake servers (blades) in one sled.
|
|||||||
|
|
||||||
The Yosemite-V3 system is in mass production. Meta, Intel and partners
|
The Yosemite-V3 system is in mass production. Meta, Intel and partners
|
||||||
jointly develop Open System Firmware (OSF) solution on Delta Lake as an alternative
|
jointly develop Open System Firmware (OSF) solution on Delta Lake as an alternative
|
||||||
solution. The OSF solution is based on FSP/coreboot/LinuxBoot stack. The
|
solution. The OSF solution reached production quality for some use cases
|
||||||
OSF solution reached production quality for some use cases in July, 2021.
|
in July, 2021.
|
||||||
|
|
||||||
## How to build
|
## How to build
|
||||||
|
|
||||||
OSF code base is public at
|
OSF code base is publicly available at
|
||||||
https://github.com/opencomputeproject/OpenSystemFirmware
|
https://github.com/opencomputeproject/OpenSystemFirmware
|
||||||
|
|
||||||
Run following commands to build Delta Lake OSF image from scratch:
|
Run following commands to build Delta Lake OSF image from scratch:
|
||||||
@@ -42,19 +42,21 @@ The Delta Lake OSF code base leverages [osf-builder] to sync down coreboot,
|
|||||||
Linux kernel and u-root code from their upstream repo, and sync down needed
|
Linux kernel and u-root code from their upstream repo, and sync down needed
|
||||||
binary blobs. [osf-builder] also provides the top level build system.
|
binary blobs. [osf-builder] also provides the top level build system.
|
||||||
|
|
||||||
Delta Lake server OSF solution requires following binary blobs:
|
Besides coreboot, the Delta Lake OSF solution includes following components:
|
||||||
- FSP blob: The blob (Intel Cooper Lake Scalable Processor Firmware Support Package)
|
- FSP blob: The blobs (Intel Cooper Lake Scalable Processor Firmware Support Package)
|
||||||
can be downloaded from https://github.com/intel/FSP/tree/master/CedarIslandFspBinPkg.
|
is downloaded from https://github.com/intel/FSP/tree/master/CedarIslandFspBinPkg.
|
||||||
- Microcode: Available through github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.
|
- Microcode: downloaded from github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.
|
||||||
coreboot.org mirrors this repo and by default the correct binary is included.
|
- ME ignition binary: downloaded from
|
||||||
- ME binary: Ignition binary can be downloaded from
|
|
||||||
https://github.com/tianocore/edk2-non-osi/tree/master/Silicon/Intel/PurleySiliconBinPkg/MeFirmware
|
https://github.com/tianocore/edk2-non-osi/tree/master/Silicon/Intel/PurleySiliconBinPkg/MeFirmware
|
||||||
- ACM binaries: only required for CBnT enablement. Available under NDA with Intel.
|
- ACM binaries: only required for CBnT enablement. Available under NDA with Intel.
|
||||||
- Payload: LinuxBoot is necessary when LinuxBoot is used as the coreboot payload.
|
- Payload: LinuxBoot is necessary when LinuxBoot is used as the coreboot payload.
|
||||||
U-root as initramfs, is used in the joint development. It can be built
|
U-root as initramfs, is used in the joint development. It is built
|
||||||
following [All about u-root].
|
following [All about u-root].
|
||||||
|
|
||||||
## Flashing coreboot
|
The Delta Lake OSF solution is updated periodically to newer versions of
|
||||||
|
upstream coreboot code base and other components.
|
||||||
|
|
||||||
|
## How to verify Delta Lake OSF image
|
||||||
|
|
||||||
To do in-band FW image update, use [flashrom]:
|
To do in-band FW image update, use [flashrom]:
|
||||||
flashrom -p internal:ich_spi_mode=hwseq -c "Opaque flash chip" --ifd \
|
flashrom -p internal:ich_spi_mode=hwseq -c "Opaque flash chip" --ifd \
|
||||||
@@ -70,6 +72,21 @@ To power off/on the host:
|
|||||||
To connect to console through SOL (Serial Over Lan):
|
To connect to console through SOL (Serial Over Lan):
|
||||||
sol-util slotx
|
sol-util slotx
|
||||||
|
|
||||||
|
## How to work on coreboot for Delta Lake
|
||||||
|
After the OSF image for Delta Lake is built and verified, under
|
||||||
|
OpenSystemFirmware/Wiwynn/deltalake directory:
|
||||||
|
cd src/osf-builder/projects/craterlake/coreboot
|
||||||
|
|
||||||
|
Run "git remote -v" to confirm the origin is from coreboot upstream repo.
|
||||||
|
|
||||||
|
Run "git branch -v" to know the confirmed working coreboot commit ID for the
|
||||||
|
Delta Lake OSF solution.
|
||||||
|
|
||||||
|
Fetch down the tip of coreboot upstream repo, run "make" to build a new OSF
|
||||||
|
image for Delta Lake, verify that it works.
|
||||||
|
|
||||||
|
Now you are in a familiar coreboot environment, happy coding!
|
||||||
|
|
||||||
## Firmware configurations
|
## Firmware configurations
|
||||||
[ChromeOS VPD] is used to store most of the firmware configurations.
|
[ChromeOS VPD] is used to store most of the firmware configurations.
|
||||||
RO_VPD region holds default values, while RW_VPD region holds customized
|
RO_VPD region holds default values, while RW_VPD region holds customized
|
||||||
|
30
Documentation/mainboard/starlabs/common/building.md
Normal file
30
Documentation/mainboard/starlabs/common/building.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
## Building coreboot
|
||||||
|
|
||||||
|
### Preliminaries
|
||||||
|
|
||||||
|
Prior to building coreboot the following files are required:
|
||||||
|
|
||||||
|
#### StarBook series:
|
||||||
|
* Intel Flash Descriptor file (descriptor.bin)
|
||||||
|
* Intel Management Engine firmware (me.bin)
|
||||||
|
* ITE Embedded Controller firmware (ec.bin)
|
||||||
|
|
||||||
|
#### StarLite series:
|
||||||
|
* Intel Flash Descriptor file (descriptor.bin)
|
||||||
|
* IFWI Image (ifwi.rom)
|
||||||
|
|
||||||
|
The files listed below are optional:
|
||||||
|
- Splash screen image in Windows 3.1 BMP format (Logo.bmp)
|
||||||
|
|
||||||
|
These files exist in the correct location in the [StarLabsLtd/blobs](https://github.com/StarLabsLtd/blobs) repo on GitHub which is used in place of the standard 3rdparty/blobs repo.
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
The following commands will build a working image, where the last two words represent the
|
||||||
|
series and processor i.e. `lite_glkr`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make distclean
|
||||||
|
make defconfig KBUILD_DEFCONFIG=configs/config.starlabs_starbook_adl
|
||||||
|
make
|
||||||
|
```
|
@@ -41,27 +41,7 @@
|
|||||||
|
|
||||||
## Building coreboot
|
## Building coreboot
|
||||||
|
|
||||||
### Preliminaries
|
Please follow the [Star Labs build instructions](../common/building.md) to build coreboot, using `config.starlabs_labtop_cml` as config file.
|
||||||
|
|
||||||
Prior to building coreboot the following files are required:
|
|
||||||
* Intel Flash Descriptor file (descriptor.bin)
|
|
||||||
* Intel Management Engine firmware (me.bin)
|
|
||||||
* ITE Embedded Controller firmware (ec.bin)
|
|
||||||
|
|
||||||
The files listed below are optional:
|
|
||||||
- Splash screen image in Windows 3.1 BMP format (Logo.bmp)
|
|
||||||
|
|
||||||
These files exist in the correct location in the StarLabsLtd/blobs repo on GitHub which is used in place of the standard 3rdparty/blobs repo.
|
|
||||||
|
|
||||||
### Build
|
|
||||||
|
|
||||||
The following commands will build a working image:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make distclean
|
|
||||||
make defconfig KBUILD_DEFCONFIG=configs/config.starlabs_labtop_cml
|
|
||||||
make
|
|
||||||
```
|
|
||||||
|
|
||||||
## Flashing coreboot
|
## Flashing coreboot
|
||||||
|
|
||||||
|
@@ -38,26 +38,7 @@
|
|||||||
|
|
||||||
## Building coreboot
|
## Building coreboot
|
||||||
|
|
||||||
### Preliminaries
|
Please follow the [Star Labs build instructions](../common/building.md) to build coreboot, using `config.starlabs_labtop_kbl` as config file.
|
||||||
|
|
||||||
Prior to building coreboot the following files are required:
|
|
||||||
* Intel Flash Descriptor file (descriptor.bin)
|
|
||||||
* Intel Management Engine firmware (me.bin)
|
|
||||||
|
|
||||||
The below are optional:
|
|
||||||
- Splash screen image in Windows 3.1 BMP format (Logo.bmp)
|
|
||||||
|
|
||||||
These files exist in the correct location in the StarLabsLtd/blobs repo on GitHub which is used in place of the standard 3rdparty/blobs repo.
|
|
||||||
|
|
||||||
### Build
|
|
||||||
|
|
||||||
The following commands will build a working image:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make distclean
|
|
||||||
make defconfig KBUILD_DEFCONFIG=configs/config.starlabs_labtop_kbl
|
|
||||||
make
|
|
||||||
```
|
|
||||||
|
|
||||||
## Flashing coreboot
|
## Flashing coreboot
|
||||||
|
|
||||||
|
@@ -37,27 +37,7 @@
|
|||||||
|
|
||||||
## Building coreboot
|
## Building coreboot
|
||||||
|
|
||||||
### Preliminaries
|
Please follow the [Star Labs build instructions](../common/building.md) to build coreboot, using `config.starlabs_lite_glk` as config file.
|
||||||
|
|
||||||
Prior to building coreboot the following files are required:
|
|
||||||
* Intel Flash Descriptor file (descriptor.bin)
|
|
||||||
* Intel Management Engine firmware (me.bin)
|
|
||||||
* ITE Embedded Controller firmware (ec.bin)
|
|
||||||
|
|
||||||
The files listed below are optional:
|
|
||||||
- Splash screen image in Windows 3.1 BMP format (Logo.bmp)
|
|
||||||
|
|
||||||
These files exist in the correct location in the StarLabsLtd/blobs repo on GitHub which is used in place of the standard 3rdparty/blobs repo.
|
|
||||||
|
|
||||||
### Build
|
|
||||||
|
|
||||||
The following commands will build a working image:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make distclean
|
|
||||||
make defconfig KBUILD_DEFCONFIG=configs/config.starlabs_lite_glk
|
|
||||||
make
|
|
||||||
```
|
|
||||||
|
|
||||||
## Flashing coreboot
|
## Flashing coreboot
|
||||||
|
|
||||||
|
@@ -37,26 +37,7 @@
|
|||||||
|
|
||||||
## Building coreboot
|
## Building coreboot
|
||||||
|
|
||||||
### Preliminaries
|
Please follow the [Star Labs build instructions](../common/building.md) to build coreboot, using `config.starlabs_lite_glkr` as config file.
|
||||||
|
|
||||||
Prior to building coreboot the following files are required:
|
|
||||||
* Intel Flash Descriptor file (descriptor.bin)
|
|
||||||
* IFWI Image (ifwi.rom)
|
|
||||||
|
|
||||||
The files listed below are optional:
|
|
||||||
- Splash screen image in Windows 3.1 BMP format (Logo.bmp)
|
|
||||||
|
|
||||||
These files exist in the correct location in the StarLabsLtd/blobs repo on GitHub which is used in place of the standard 3rdparty/blobs repo.
|
|
||||||
|
|
||||||
### Build
|
|
||||||
|
|
||||||
The following commands will build a working image:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make distclean
|
|
||||||
make defconfig KBUILD_DEFCONFIG=configs/config.starlabs_lite_glkr
|
|
||||||
make
|
|
||||||
```
|
|
||||||
|
|
||||||
## Flashing coreboot
|
## Flashing coreboot
|
||||||
|
|
||||||
|
88
Documentation/mainboard/starlabs/starbook_adl.md
Normal file
88
Documentation/mainboard/starlabs/starbook_adl.md
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
# StarBook Mk V
|
||||||
|
|
||||||
|
## Specs
|
||||||
|
|
||||||
|
- CPU (full processor specs available at https://ark.intel.com)
|
||||||
|
- Intel i7-1260P (Alder Lake)
|
||||||
|
- Intel i3-1220P (Alder Lake)
|
||||||
|
- EC
|
||||||
|
- ITE IT5570E
|
||||||
|
- Backlit keyboard, with standard PS/2 keycodes and SCI hotkeys
|
||||||
|
- Battery
|
||||||
|
- Charger, using AC adapter or USB-C PD
|
||||||
|
- Suspend / resume
|
||||||
|
- GPU
|
||||||
|
- Intel® Iris® Xe Graphics
|
||||||
|
- GOP driver is recommended, VBT is provided
|
||||||
|
- eDP 14-inch 1920x1080 LCD
|
||||||
|
- HDMI video
|
||||||
|
- USB-C DisplayPort video
|
||||||
|
- Memory
|
||||||
|
- 2 x DDR4 SODIMM
|
||||||
|
- Networking
|
||||||
|
- AX210 2230 WiFi / Bluetooth
|
||||||
|
- Sound
|
||||||
|
- Realtek ALC269-VB6
|
||||||
|
- Internal speakers
|
||||||
|
- Internal microphone
|
||||||
|
- Combined headphone / microphone 3.5-mm jack
|
||||||
|
- HDMI audio
|
||||||
|
- USB-C DisplayPort audio
|
||||||
|
- Storage
|
||||||
|
- M.2 PCIe SSD
|
||||||
|
- RTS5129 MicroSD card reader
|
||||||
|
- USB
|
||||||
|
- 1920x1080 CCD camera
|
||||||
|
- USB 3.1 Gen 2 (left)
|
||||||
|
- USB 3.1 Gen 2 Type-A (left)
|
||||||
|
- USB 3.1 Gen 1 Type-A (right)
|
||||||
|
- USB 2.0 Type-A (right)
|
||||||
|
|
||||||
|
## Building coreboot
|
||||||
|
|
||||||
|
Please follow the [Star Labs build instructions](../common/building.md) to build coreboot, using `config.starlabs_starbook_adl` as config file.
|
||||||
|
|
||||||
|
### Preliminaries
|
||||||
|
|
||||||
|
Prior to building coreboot the following files are required:
|
||||||
|
* Intel Flash Descriptor file (descriptor.bin)
|
||||||
|
* Intel Management Engine firmware (me.bin)
|
||||||
|
* ITE Embedded Controller firmware (ec.bin)
|
||||||
|
|
||||||
|
The files listed below are optional:
|
||||||
|
- Splash screen image in Windows 3.1 BMP format (Logo.bmp)
|
||||||
|
|
||||||
|
These files exist in the correct location in the StarLabsLtd/blobs repo on GitHub which is used in place of the standard 3rdparty/blobs repo.
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
The following commands will build a working image:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make distclean
|
||||||
|
make defconfig KBUILD_DEFCONFIG=configs/config.starlabs_starbook_adl
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
## Flashing coreboot
|
||||||
|
|
||||||
|
```eval_rst
|
||||||
|
+---------------------+------------+
|
||||||
|
| Type | Value |
|
||||||
|
+=====================+============+
|
||||||
|
| Socketed flash | no |
|
||||||
|
+---------------------+------------+
|
||||||
|
| Vendor | Winbond |
|
||||||
|
+---------------------+------------+
|
||||||
|
| Model | W25Q256.V |
|
||||||
|
+---------------------+------------+
|
||||||
|
| Size | 32 MiB |
|
||||||
|
+---------------------+------------+
|
||||||
|
| Package | SOIC-8 |
|
||||||
|
+---------------------+------------+
|
||||||
|
| Internal flashing | yes |
|
||||||
|
+---------------------+------------+
|
||||||
|
| External flashing | yes |
|
||||||
|
+---------------------+------------+
|
||||||
|
|
||||||
|
Please see [here](../common/flashing.md) for instructions on how to flash with fwupd.
|
@@ -40,27 +40,7 @@
|
|||||||
|
|
||||||
## Building coreboot
|
## Building coreboot
|
||||||
|
|
||||||
### Preliminaries
|
Please follow the [Star Labs build instructions](../common/building.md) to build coreboot, using `config.starlabs_starbook_tgl` as config file.
|
||||||
|
|
||||||
Prior to building coreboot the following files are required:
|
|
||||||
* Intel Flash Descriptor file (descriptor.bin)
|
|
||||||
* Intel Management Engine firmware (me.bin)
|
|
||||||
* ITE Embedded Controller firmware (ec.bin)
|
|
||||||
|
|
||||||
The files listed below are optional:
|
|
||||||
- Splash screen image in Windows 3.1 BMP format (Logo.bmp)
|
|
||||||
|
|
||||||
These files exist in the correct location in the StarLabsLtd/blobs repo on GitHub which is used in place of the standard 3rdparty/blobs repo.
|
|
||||||
|
|
||||||
### Build
|
|
||||||
|
|
||||||
The following commands will build a working image:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make distclean
|
|
||||||
make defconfig KBUILD_DEFCONFIG=configs/config.starlabs_starbook_tgl
|
|
||||||
make
|
|
||||||
```
|
|
||||||
|
|
||||||
## Flashing coreboot
|
## Flashing coreboot
|
||||||
|
|
||||||
|
82
Documentation/mainboard/system76/darp8.md
Normal file
82
Documentation/mainboard/system76/darp8.md
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
# Syste76 Darter Pro 8 (darp8)
|
||||||
|
|
||||||
|
## Specs
|
||||||
|
|
||||||
|
- CPU
|
||||||
|
- Intel Core i5-1240P
|
||||||
|
- Intel Core i7-1260P
|
||||||
|
- EC
|
||||||
|
- ITE IT5570E running [System76 EC](https://github.com/system76/ec)
|
||||||
|
- Graphics
|
||||||
|
- Intel Iris Xe Graphics
|
||||||
|
- eDP 15.6" 1920x1080@60Hz LCD
|
||||||
|
- 1x HDMI
|
||||||
|
- 1x DisplayPort 1.4 over USB-C
|
||||||
|
- Memory
|
||||||
|
- Up to 64GB (2x32GB) dual-channel DDR4 SO-DIMMs @ 3200 MHz
|
||||||
|
- Networking
|
||||||
|
- Gigabit Ethernet
|
||||||
|
- M.2 NVMe/CNVi WiFi/Bluetooth (Intel Wi-Fi 6 AX200/201)
|
||||||
|
- Power
|
||||||
|
- 90W (19V, 4.74A) AC barrel adapter (Chicony A16-090P1A)
|
||||||
|
- USB-C charging, compatible with 65W+ chargers
|
||||||
|
- 73Wh 4-cell Lithium-ion battery (L140BAT-4)
|
||||||
|
- Sound
|
||||||
|
- Realtek ALC256 codec
|
||||||
|
- Internal speakers and microphone
|
||||||
|
- Combined 3.5mm headphone/microphone jack
|
||||||
|
- HDMI, USB-C DisplayPort audio
|
||||||
|
- Storage
|
||||||
|
- M.2 PCIe NVMe Gen 4 SSD
|
||||||
|
- M.2 PCIe NVMe Gen 3 or SATA 3 SSD
|
||||||
|
- MicroSD card reader (OZ711LV2)
|
||||||
|
- USB
|
||||||
|
- 1x USB-C Type-C with Thunderbolt 4
|
||||||
|
- 1x USB 3.2 (Gen 2) Type-C
|
||||||
|
- 1x USB 3.2 (Gen 2) Type-A
|
||||||
|
- 1x USB 2.0 Type-A
|
||||||
|
- Dimensions
|
||||||
|
- 35.7cm x 22.05cm x 1.99cm, 1.74kg
|
||||||
|
|
||||||
|
## Flashing coreboot
|
||||||
|
|
||||||
|
```eval_rst
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Type | Value |
|
||||||
|
+=====================+=====================+
|
||||||
|
| Socketed flash | no |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Vendor | GigaDevice |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Model | GD25B256E |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Size | 32 MiB |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Package | WSON-8 |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Internal flashing | yes |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| External flashing | yes |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
```
|
||||||
|
```eval_rst
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Type | Value |
|
||||||
|
+=====================+=====================+
|
||||||
|
| Socketed flash | no |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Vendor | Winbond |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Model | W25Q256.V |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Size | 32 MiB |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Package | WSON-8 |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Internal flashing | yes |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| External flashing | yes |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
```
|
||||||
|
|
||||||
|
The flash chip (U19) is above the left DIMM slot.
|
61
Documentation/mainboard/system76/galp6.md
Normal file
61
Documentation/mainboard/system76/galp6.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# System76 Galago Pro 6 (galp6)
|
||||||
|
|
||||||
|
## Specs
|
||||||
|
|
||||||
|
- CPU
|
||||||
|
- Intel Core i5-1240P
|
||||||
|
- Intel Core i7-1260P
|
||||||
|
- EC
|
||||||
|
- ITE IT5570E running [System76 EC](https://github.com/system76/ec)
|
||||||
|
- Graphics
|
||||||
|
- Intel Iris Xe Graphics
|
||||||
|
- eDP 14.1" 1920x1080@60Hz LCD (Panda LM140LF2L02)
|
||||||
|
- 1x HDMI 2.1
|
||||||
|
- 1x DisplayPort 1.4 over USB-C
|
||||||
|
- Memory
|
||||||
|
- Up to 64GB (2x32GB) dual-channel DDR4 SO-DIMMs @ 3200 MHz
|
||||||
|
- Networking
|
||||||
|
- Gigabit Ethernet
|
||||||
|
- M.2 NVMe/CNVi WiFi/Bluetooth (Intel Wi-Fi 6 AX200/201)
|
||||||
|
- Power
|
||||||
|
- 90W (19V, 4.74A) AC barrel adapter (Chicony A16-090P1A)
|
||||||
|
- USB-C charging, compatible with 90W+ chargers
|
||||||
|
- 53.35Wh 4-cell Lithium-ion battery (NV40BAT-4-53)
|
||||||
|
- Sound
|
||||||
|
- Realtek ALC256 codec
|
||||||
|
- Internal speakers and microphone
|
||||||
|
- Combined 3.5mm headphone/microphone jack
|
||||||
|
- HDMI, USB-C DisplayPort audio
|
||||||
|
- Storage
|
||||||
|
- M.2 PCIe NVMe Gen 4 SSD
|
||||||
|
- MicroSD card reader (OZ711LV2)
|
||||||
|
- USB
|
||||||
|
- 1x USB-C Type-C with Thunderbolt 4
|
||||||
|
- 1x USB 3.2 (Gen 2) Type-C
|
||||||
|
- 2x USB 3.2 (Gen 1) Type-A
|
||||||
|
- Dimensions
|
||||||
|
- 32.49cm x 22.5cm x 1.82cm, 1.45kg
|
||||||
|
|
||||||
|
## Flashing coreboot
|
||||||
|
|
||||||
|
```eval_rst
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Type | Value |
|
||||||
|
+=====================+=====================+
|
||||||
|
| Socketed flash | no |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Vendor | Macronix |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Model | MX25L25673G |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Size | 32 MiB |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Package | WSON-8 |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| Internal flashing | yes |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
| External flashing | yes |
|
||||||
|
+---------------------+---------------------+
|
||||||
|
```
|
||||||
|
|
||||||
|
The flash chip (U43) is left of the wireless card.
|
@@ -12,16 +12,59 @@ desired.
|
|||||||
|
|
||||||
Currently, [jenkins](https://qa.coreboot.org), our continuous
|
Currently, [jenkins](https://qa.coreboot.org), our continuous
|
||||||
integration system is configured to build the 4.11, 4.12, 4.14, 4.15,
|
integration system is configured to build the 4.11, 4.12, 4.14, 4.15,
|
||||||
and 4.16 branches. Builders for other branches can be created on
|
4.16, and 4.18 branches. Builders for other branches can be created on
|
||||||
request. Likewise, some releases are only marked with tags, and
|
request. Likewise, some releases are only marked with tags, and
|
||||||
branches would need to be created to push new code to. These branches
|
branches would need to be created to push new code to. These branches
|
||||||
can also be created on request.
|
can also be created on request.
|
||||||
|
|
||||||
Patches can be backported from the master branch to any of these other
|
Patches can be backported from the master branch to any of these other
|
||||||
branches as needed. The coreboot project will take care of backporting
|
branches as needed. The coreboot project may take care of backporting
|
||||||
critical security fixes, but other patches will need to handled by
|
critical security fixes, but other patches will need to handled by
|
||||||
anyone using that release.
|
anyone using that release.
|
||||||
|
|
||||||
|
|
||||||
|
## [4.18 Release](coreboot-4.18-relnotes.md)
|
||||||
|
Branch created, builder configured
|
||||||
|
|
||||||
|
```eval_rst
|
||||||
|
+-------------------------------+------------------------+------------+-----------+
|
||||||
|
| Vendor/Board | Processor | Date added | Brd type |
|
||||||
|
+===============================+========================+============+===========+
|
||||||
|
| amd/inagua | AMD_FAMILY14 | 2011-02-14 | eval |
|
||||||
|
| amd/olivehill | AMD_FAMILY16_KB | 2013-08-05 | eval |
|
||||||
|
| amd/parmer | AMD_FAMILY15_TN | 2012-07-22 | eval |
|
||||||
|
| amd/persimmon | AMD_FAMILY14 | 2011-02-14 | eval |
|
||||||
|
| amd/south_station | AMD_FAMILY14 | 2011-11-18 | eval |
|
||||||
|
| amd/thatcher | AMD_FAMILY15_TN | 2012-08-02 | eval |
|
||||||
|
| amd/union_station | AMD_FAMILY14 | 2011-11-18 | eval |
|
||||||
|
| asrock/e350m1 | AMD_FAMILY14 | 2011-02-24 | mini |
|
||||||
|
| asrock/imb-a180 | AMD_FAMILY16_KB | 2013-08-27 | mini |
|
||||||
|
| asus/a88xm-e | AMD_FAMILY15_TN | 2020-08-13 | desktop |
|
||||||
|
| asus/am1i-a | AMD_FAMILY16_KB | 2018-01-14 | mini |
|
||||||
|
| asus/f2a85-m | AMD_FAMILY15_TN | 2013-03-22 | desktop |
|
||||||
|
| bap/ode_e20XX | AMD_FAMILY16_KB | 2015-05-27 | eval |
|
||||||
|
| biostar/a68n_5200 | AMD_FAMILY16_KB | 2017-10-14 | eval |
|
||||||
|
| biostar/am1ml | AMD_FAMILY16_KB | 2015-04-10 | mini |
|
||||||
|
| elmex/pcm205400 | AMD_FAMILY14 | 2016-09-29 | sbc |
|
||||||
|
| gizmosphere/gizmo2 | AMD_FAMILY16_KB | 2014-12-09 | eval |
|
||||||
|
| gizmosphere/gizmo | AMD_FAMILY14 | 2014-01-03 | half |
|
||||||
|
| hp/abm | AMD_FAMILY16_KB | 2015-01-05 | mini |
|
||||||
|
| hp/pavilion_m6_1035dx | AMD_FAMILY15_TN | 2014-03-28 | laptop |
|
||||||
|
| jetway/nf81-t56n-lf | AMD_FAMILY14 | 2014-02-16 | mini |
|
||||||
|
| lenovo/g505s | AMD_FAMILY15_TN | 2014-11-27 | laptop |
|
||||||
|
| lippert/frontrunner-af | AMD_FAMILY14 | 2013-03-02 | half |
|
||||||
|
| msi/ms7721 | AMD_FAMILY15_TN | 2016-11-22 | desktop |
|
||||||
|
| pcengines/apu1 | AMD_FAMILY14 | 2015-02-23 | half |
|
||||||
|
+-------------------------------+------------------------+------------+-----------+
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## [4.17 Release](coreboot-4.17-relnotes.md)
|
||||||
|
No Branch or builder
|
||||||
|
|
||||||
|
* No platforms maintained on this release
|
||||||
|
|
||||||
|
|
||||||
## [4.16 Release](coreboot-4.16-relnotes.md)
|
## [4.16 Release](coreboot-4.16-relnotes.md)
|
||||||
Branch created, builder configured
|
Branch created, builder configured
|
||||||
|
|
||||||
|
@@ -4,56 +4,73 @@
|
|||||||
|
|
||||||
# coreboot Release Process
|
# coreboot Release Process
|
||||||
|
|
||||||
This document describes our release process and all prerequisites to implement
|
This document describes our release process and all prerequisites to
|
||||||
it successfully.
|
implement it successfully.
|
||||||
|
|
||||||
|
|
||||||
## Purpose of coreboot releases
|
## Purpose of coreboot releases
|
||||||
Our releases aren't primarily a vehicle for code that is stable across all
|
Our releases aren't primarily a vehicle for code that is stable across
|
||||||
boards: The logistics of testing the more than 100 boards that are spread out
|
all boards: The logistics of testing the more than 100 boards that are
|
||||||
all continents (except Antarctica, probably) on a given tree state are
|
spread out all continents (except Antarctica, probably) on a given tree
|
||||||
prohibitive for project of our size.
|
state are prohibitive for project of our size.
|
||||||
|
|
||||||
Instead, the releases are regular breakpoints that serve multiple purposes:
|
Instead, the releases are regular breakpoints that serve multiple
|
||||||
They support cooperation between multiple groups (corporations or otherwise)
|
purposes: They support cooperation between multiple groups (corporations
|
||||||
in that it's easier to keep source trees synchronized based on a limited set
|
or otherwise) in that it's easier to keep source trees synchronized
|
||||||
of commits. They allow a quick assessment of the age of any given build or
|
based on a limited set of commits. They allow a quick assessment of the
|
||||||
source tree based on its git version (4.8-1234 was merged into master a few
|
age of any given build or source tree based on its git version (4.8-1234
|
||||||
months after 4.8, which came out in April 2018. 4.0-21718's age is harder to
|
was merged into master a few months after 4.8, which came out in April
|
||||||
guess).
|
of 2018. 4.0-21718's age is harder to guess).
|
||||||
|
|
||||||
And finally we use releases to as points in time where we remove old code:
|
And finally we use releases to as points in time where we remove old
|
||||||
Once we decide that a certain part of coreboot gets in the way of future
|
code: Once we decide that a certain part of coreboot gets in the way of
|
||||||
development, we announce on the next release that we intend to remove that
|
future development, we announce on the next release that we intend to
|
||||||
part - and everything that depends on it - after the following release.
|
remove that part - and everything that depends on it - after the
|
||||||
So removing feature FOO will be announced in release X for release
|
following release. So removing feature FOO will be announced in release
|
||||||
X+1. The first commit after X+1 is fair game for such removal.
|
X for release X+1. The first commit after X+1 is fair game for such
|
||||||
|
removal.
|
||||||
|
|
||||||
Together with our 6 months release horizon, this provides time to plan
|
Together with our 3 months release horizon, this provides time to plan
|
||||||
any migrations necessary to keep older boards in the tree by bringing
|
any migrations necessary to keep older boards in the tree by bringing
|
||||||
them up to current standards.
|
them up to current standards.
|
||||||
|
|
||||||
|
## coreboot release team
|
||||||
|
To avoid issues of blocking the release on a single person, a release
|
||||||
|
team has been formed. Please see the `COREBOOT RELEASES` section of the
|
||||||
|
MAINTAINERS file for the current members.
|
||||||
|
|
||||||
|
These individuals work together to make sure releases are done on time,
|
||||||
|
follow the steps of this document, and update the release processes and
|
||||||
|
scripts.
|
||||||
|
|
||||||
|
|
||||||
## Needed credentials & authorizations
|
## Needed credentials & authorizations
|
||||||
|
|
||||||
|
### coreboot admins only
|
||||||
* Website access is required to post the release files to the website.
|
* Website access is required to post the release files to the website.
|
||||||
* IRC admin access is required to update the topic.
|
|
||||||
|
### All release team members
|
||||||
|
* IRC topic access is required to update the topic.
|
||||||
* Git access rights are needed to post the tag.
|
* Git access rights are needed to post the tag.
|
||||||
* Blog post access is needed to do the blog post.
|
* Blog post access is needed to do the blog post.
|
||||||
* A PGP key is required to sign the release tarballs and git tag.
|
* A PGP key is required to sign the release tarballs and git tag.
|
||||||
|
|
||||||
This set of required credentials implies that releases can only be done
|
Most of the steps in the release process can be done by anyone on the
|
||||||
by a coreboot admin.
|
release team. Only adding the files to the website needs to be done
|
||||||
|
by a coreboot administrator.
|
||||||
|
|
||||||
## When to release
|
## When to release
|
||||||
Releases are done roughly on a 6-month schedule, ideally around end
|
Releases are done roughly on a 3-month schedule. If a release is
|
||||||
of April and end of October (can be a bit earlier or delay into May
|
delayed, the next release will still be 3 months after the last release.
|
||||||
or November).
|
|
||||||
|
|
||||||
We initially followed a 3 month release schedule, but we found that to
|
|
||||||
be more frequent than was needed, so we scaled it back to twice a year.
|
|
||||||
|
|
||||||
## Checklist
|
## Checklist
|
||||||
|
|
||||||
### ~2 weeks prior to release
|
### ~2 weeks prior to release
|
||||||
- [ ] Announce upcoming release to mailing list, ask people to test and
|
- [ ] Announce upcoming release to mailing list, ask people to test and
|
||||||
to update release notes.
|
to update release notes.
|
||||||
|
- [ ] Start marking patches that should to go into the release with a
|
||||||
|
tag "coreboot_release_X.yy"
|
||||||
|
|
||||||
### ~1 week prior to release
|
### ~1 week prior to release
|
||||||
- [ ] Send reminder email to mailing list, ask for people to test,
|
- [ ] Send reminder email to mailing list, ask for people to test,
|
||||||
@@ -66,28 +83,53 @@ be more frequent than was needed, so we scaled it back to twice a year.
|
|||||||
- [ ] Finalize release notes as much as possible
|
- [ ] Finalize release notes as much as possible
|
||||||
- [ ] Prepare release notes template for following release
|
- [ ] Prepare release notes template for following release
|
||||||
- [ ] Update `Documentation/releases/index.md`
|
- [ ] Update `Documentation/releases/index.md`
|
||||||
|
- [ ] Check which branches need to be released. Any branch with changes
|
||||||
|
should get a new release. Announce these branch releases and
|
||||||
|
prepare release notes.
|
||||||
|
|
||||||
|
### Day before release
|
||||||
|
- [ ] Make sure patches with tags for the release are merged.
|
||||||
|
- [ ] Announce to IRC that the release will be tomorrow and ask for
|
||||||
|
testing.
|
||||||
- [ ] Run `util/vboot_list/vboot_list.sh` script to update the list of
|
- [ ] Run `util/vboot_list/vboot_list.sh` script to update the list of
|
||||||
boards supported by vboot.
|
boards supported by vboot.
|
||||||
|
|
||||||
### Day of release
|
### Day of release
|
||||||
- [ ] Select a commit ID to base the release upon, announce to IRC,
|
- [ ] Review the full documentation about doing the release below.
|
||||||
ask for testing.
|
- [ ] Select a commit ID to base the release upon.
|
||||||
- [ ] Test the commit selected for release.
|
- [ ] Test the commit selected for release.
|
||||||
- [ ] Submit release notes
|
- [ ] Submit last pre-release release notes.
|
||||||
- [ ] Create new release notes doc template for the next version.
|
- [ ] Run the release script.
|
||||||
- [ ] Fill in the release date, remove "Upcoming release" and other filler
|
|
||||||
from the current release notes.
|
|
||||||
- [ ] Run release script.
|
|
||||||
- [ ] Test the release from the actual release tarballs.
|
- [ ] Test the release from the actual release tarballs.
|
||||||
- [ ] Push signed Tag to repo.
|
- [ ] Push signed Tag to repo. *This is the actual release step.*
|
||||||
|
Once this patch is pushed, the release itself has been done.
|
||||||
|
everything after this step is packaging and delivering the
|
||||||
|
release.
|
||||||
|
|
||||||
- [ ] Announce that the release tag is done on IRC.
|
- [ ] Announce that the release tag is done on IRC.
|
||||||
- [ ] Upload release files to web server.
|
|
||||||
- [ ] Also extract the release notes and place them on the web server.
|
|
||||||
- [ ] Upload crossgcc sources to web server.
|
|
||||||
- [ ] Update download page to point to files, push to repo.
|
|
||||||
- [ ] Write and publish blog post with release notes.
|
|
||||||
- [ ] Update the topic in the IRC channel that the release is done.
|
- [ ] Update the topic in the IRC channel that the release is done.
|
||||||
- [ ] Announce the release to the mailing list.
|
|
||||||
|
- [ ] Do the final release notes - Fill in the release date, remove
|
||||||
|
"Upcoming release" and other filler from the current release
|
||||||
|
notes.
|
||||||
|
- [ ] ADMIN: Upload release files to web server.
|
||||||
|
- [ ] ADMIN: Upload the final release notes to the web server.
|
||||||
|
- [ ] ADMIN: Upload crossgcc sources to web server.
|
||||||
|
- [ ] Create coreboot-sdk and coreboot-jenkins-node docker images
|
||||||
|
based on the release ID and push them to dockerhub. These
|
||||||
|
can be used as release builders.
|
||||||
|
|
||||||
|
### Week following the release
|
||||||
|
- [ ] Update download page to point to files, push to repo.
|
||||||
|
- [ ] Write and publish blog post with release final notes. Branch
|
||||||
|
releases notes should be included in the same post.
|
||||||
|
- [ ] Remove code that was announced it was going to be removed.
|
||||||
|
- [ ] Update `Documentation/releases/boards_supported_on_branches.md`
|
||||||
|
|
||||||
|
### Creating a branch
|
||||||
|
- [ ] Branches are named 4.xx_branch to differentiate from the tags.
|
||||||
|
Instructions on creating branches are listed below.
|
||||||
|
|
||||||
|
|
||||||
## Pre-Release tasks
|
## Pre-Release tasks
|
||||||
Announce the upcoming release to the mailing list release 2 weeks ahead
|
Announce the upcoming release to the mailing list release 2 weeks ahead
|
||||||
@@ -102,29 +144,30 @@ People should be encouraged to provide additions to the release notes.
|
|||||||
|
|
||||||
The final release notes will reside in coreboot's Documentation/releases
|
The final release notes will reside in coreboot's Documentation/releases
|
||||||
directory, so asking for additions to that through the regular Gerrit
|
directory, so asking for additions to that through the regular Gerrit
|
||||||
process works as well. Note that git requires lots of conflict resolution
|
process works as well. Note that git requires lots of conflict
|
||||||
on heavily edited text files though.
|
resolution on heavily edited text files though.
|
||||||
|
|
||||||
Frequently, we will want to wait until particular things are in the
|
Frequently, we will want to wait until particular things are in the
|
||||||
release. Once those are in, you can select the commit ID that you want
|
release. Once those are in, you can select the commit ID that you want
|
||||||
to use for your release. For the 4.6 release, we waited until we had
|
to use for your release. For the 4.6 release, we waited until we had
|
||||||
time to do the release, then pulled in a few patches that we wanted
|
time to do the release, then pulled in a few patches that we wanted
|
||||||
to have in the release. The release was based on the final of those
|
to have in the release. The release was based on the final of those
|
||||||
patches to be pulled in.
|
patches to be pulled in.
|
||||||
|
|
||||||
When a release candidate has been selected, announce the commit ID to
|
When a release candidate has been selected, announce the commit ID to
|
||||||
the #coreboot IRC channel, and request that it get some testing, just
|
the #coreboot IRC channel, and request that it get some testing, just
|
||||||
to make sure that everything is sane.
|
to make sure that everything is sane.
|
||||||
|
|
||||||
|
|
||||||
## Generate the release
|
## Generate the release
|
||||||
After the commit for the release has been selected and verified, run the
|
After the commit for the release has been selected and verified, run the
|
||||||
release script - util/release/build-release. This will download a new
|
release script - util/release/build-release. This will download a new
|
||||||
tree, checkout the commit that you specified, download the submodules,
|
tree, checkout the commit that you specified, download the submodules,
|
||||||
create a tag, then generate and sign the tarballs.
|
create a tag, then generate and sign the tarballs.
|
||||||
|
|
||||||
Be prepared to type in your PGP key’s passphrase.
|
**Be prepared to type in your PGP key’s passphrase.**
|
||||||
|
|
||||||
````
|
```text
|
||||||
usage: util/release/build-release <version> [commit id] [username] [gpg key id]
|
usage: util/release/build-release <version> [commit id] [username] [gpg key id]
|
||||||
Tags a new coreboot version and creates a tar archive
|
Tags a new coreboot version and creates a tar archive
|
||||||
|
|
||||||
@@ -132,37 +175,41 @@ version: New version name to tag the tree with
|
|||||||
commit id: check out this commit-id after cloning the coreboot tree
|
commit id: check out this commit-id after cloning the coreboot tree
|
||||||
username: clone the tree using ssh://USERNAME - defaults to https://
|
username: clone the tree using ssh://USERNAME - defaults to https://
|
||||||
gpg key id: used to tag the version, and generate a gpg signature
|
gpg key id: used to tag the version, and generate a gpg signature
|
||||||
````
|
```
|
||||||
|
|
||||||
After running the script, you should have a new directory for the release,
|
After running the script, you should have a new directory for the
|
||||||
along with 4 files - 2 tarballs, and 2 signature files.
|
release, along with 4 files: 2 tarballs, and 2 signature files.
|
||||||
|
|
||||||
````
|
```text
|
||||||
drwxr-xr-x 9 martin martin 4096 Apr 30 19:57 coreboot-4.6
|
drwxr-xr-x 9 martin martin 4096 Apr 30 19:57 coreboot-4.6
|
||||||
-rw-r--r-- 1 martin martin 29156788 Apr 30 19:58 coreboot-4.6.tar.xz
|
-rw-r--r-- 1 martin martin 29156788 Apr 30 19:58 coreboot-4.6.tar.xz
|
||||||
-rw-r--r-- 1 martin martin 836 Apr 30 19:58 coreboot-4.6.tar.xz.sig
|
-rw-r--r-- 1 martin martin 836 Apr 30 19:58 coreboot-4.6.tar.xz.sig
|
||||||
-rw-r--r-- 1 martin martin 5902076 Apr 30 19:58 coreboot-blobs-4.6.tar.xz
|
-rw-r--r-- 1 martin martin 5902076 Apr 30 19:58 coreboot-blobs-4.6.tar.xz
|
||||||
-rw-r--r-- 1 martin martin 836 Apr 30 19:58 coreboot-blobs-4.6.tar.xz.sig
|
-rw-r--r-- 1 martin martin 836 Apr 30 19:58 coreboot-blobs-4.6.tar.xz.sig
|
||||||
````
|
```
|
||||||
|
|
||||||
Here’s the command that was used to generate the 4.6 release:
|
Here’s the command that was used to generate the 4.6 release:
|
||||||
````
|
```bash
|
||||||
% util/release/build-release 4.6 db508565 Gaumless 3E4F7DF7
|
util/release/build-release 4.6 db508565 Gaumless 3E4F7DF7
|
||||||
````
|
```
|
||||||
|
|
||||||
|
|
||||||
## Test the release from the tarballs
|
## Test the release from the tarballs
|
||||||
* Run “make what-jenkins-does” and verify that everything is building.
|
* Run “make what-jenkins-does” and verify that everything is building.
|
||||||
* Build and test qemu
|
* Build and test qemu
|
||||||
````
|
```bash
|
||||||
cp configs/config.emulation_qemu_x86_i440fx .config; make olddefconfig; make
|
cp configs/config.emulation_qemu_x86_i440fx .config
|
||||||
qemu-system-x86_64 -bios build/coreboot.rom -serial stdio
|
make olddefconfig
|
||||||
````
|
make
|
||||||
|
qemu-system-x86_64 -bios build/coreboot.rom -serial stdio
|
||||||
|
```
|
||||||
* Build and test any other platforms you can.
|
* Build and test any other platforms you can.
|
||||||
* Compare the directory from the tarballs to the coreboot repo to make sure nothing went wrong.
|
* Compare the directory from the tarballs to the coreboot repo to make
|
||||||
|
sure nothing went wrong.
|
||||||
* Push the tag to git
|
* Push the tag to git
|
||||||
|
|
||||||
A good tag will look like this:
|
A good tag will look like this:
|
||||||
````
|
````text
|
||||||
% git show 4.6
|
% git show 4.6
|
||||||
tag 4.6
|
tag 4.6
|
||||||
Tagger: Martin Roth <martinroth@google.com>
|
Tagger: Martin Roth <martinroth@google.com>
|
||||||
@@ -183,33 +230,44 @@ commit db508565d2483394b709654c57533e55eebace51 (HEAD, tag: 4.6, origin/master,
|
|||||||
...
|
...
|
||||||
````
|
````
|
||||||
|
|
||||||
When you used the script to generate the release, a signed tag was generated in the
|
When you used the script to generate the release, a signed tag was
|
||||||
tree that was downloaded. From the coreboot-X.Y tree, just run: `git push origin X.Y`.
|
generated in the tree that was downloaded. From the coreboot-X.Y tree,
|
||||||
In case you pushed the wrong tag already, you have to force push the new one.
|
just run: `git push origin X.Y`. In case you pushed the wrong tag
|
||||||
|
already, you have to force push the new one.
|
||||||
|
|
||||||
You will need write access for tags to the coreboot git repo to do this.
|
You will need write access for tags to the coreboot git repo to do this.
|
||||||
|
|
||||||
|
|
||||||
## After the release is tagged in git
|
## After the release is tagged in git
|
||||||
Announce that the release has been tagged - this lets people know that
|
Announce that the release has been tagged - this lets people know that
|
||||||
they should update their trees to grab the new tag. Until they do this,
|
they should update their trees to grab the new tag. Until they do this,
|
||||||
the version number in build.h will still be based on the previous tag.
|
the version number in build.h will still be based on the previous tag.
|
||||||
|
|
||||||
Copy the tarballs and .sig files generated by the script to
|
Copy the tarballs and .sig files generated by the script to
|
||||||
the coreboot server, and put them in the release directory at
|
the coreboot server, and put them in the release directory at
|
||||||
`/srv/docker/www.coreboot.org-staticfiles/releases/`
|
`/srv/docker/www.coreboot.org-staticfiles/releases/`
|
||||||
|
|
||||||
````
|
````bash
|
||||||
% sha256sum -b coreboot-*.tar.xz > sha256suma.txt # Update the sha256sum file
|
# Update the sha256sum file
|
||||||
% diff sha256sum.txt sha256suma.txt # make sure that the two new files are present (and that nothing else has changed)
|
sha256sum -b coreboot-*.tar.xz > sha256suma.txt
|
||||||
% mv sha256suma.txt sha256sum.txt
|
|
||||||
|
# make sure the two new files are present (and nothing else has changed)
|
||||||
|
diff sha256sum.txt sha256suma.txt
|
||||||
|
|
||||||
|
mv sha256suma.txt sha256sum.txt
|
||||||
````
|
````
|
||||||
|
|
||||||
People can now see the release tarballs on the website at
|
People can now see the release tarballs on the website at
|
||||||
<https://www.coreboot.org/releases/>
|
<https://www.coreboot.org/releases/>
|
||||||
|
|
||||||
The downloads page is the official place to download the releases from, and it needs to be updated with links to the new release tarballs and .sig files. It can be found at <https://review.coreboot.org/cgit/homepage.git/tree/downloads.html>
|
The downloads page is the official place to download the releases from,
|
||||||
|
and it needs to be updated with links to the new release tarballs and
|
||||||
|
.sig files. It can be found at:
|
||||||
|
<https://review.coreboot.org/cgit/homepage.git/tree/downloads.html>
|
||||||
|
|
||||||
|
Here is an example commit to change it:
|
||||||
|
<https://review.coreboot.org/c/homepage/+/19515>
|
||||||
|
|
||||||
Here is an example commit to change it: <https://review.coreboot.org/c/homepage/+/19515>
|
|
||||||
|
|
||||||
## Upload crossgcc sources
|
## Upload crossgcc sources
|
||||||
Sometimes the source files for older revisions of
|
Sometimes the source files for older revisions of
|
||||||
@@ -219,24 +277,32 @@ sources used by the crossgcc scripts that are part of coreboot releases.
|
|||||||
|
|
||||||
Run
|
Run
|
||||||
|
|
||||||
````
|
````bash
|
||||||
% util/crossgcc/buildgcc -u
|
util/crossgcc/buildgcc -u
|
||||||
````
|
````
|
||||||
|
|
||||||
This will output the set of URLs that the script uses to download the
|
This will output the set of URLs that the script uses to download the
|
||||||
sources. Download them yourself and copy them into the crossgcc-sources
|
sources. Download them yourself and copy them into the crossgcc-sources
|
||||||
directory on the server.
|
directory on the server.
|
||||||
|
|
||||||
|
|
||||||
## After the release is complete
|
## After the release is complete
|
||||||
Post the release notes on <https://blogs.coreboot.org>
|
Post the final release notes on <https://blogs.coreboot.org>
|
||||||
|
|
||||||
|
|
||||||
## Making a branch
|
## Making a branch
|
||||||
At times we will need to create a branch, generally for patch fixes.
|
At times we will need to create a branch, generally for patch fixes.
|
||||||
When making a branch, do NOT name it the same as the release tag: X.Y - this creates trouble when trying to check it out, as git can’t tell whether you want the tag or the branch.
|
When making a branch, do NOT name it the same as the release tag: X.Y -
|
||||||
Instead, name it X.Y\_branch: `git checkout 4.8; git checkout -b 4.8_branch; git push origin 4.8_branch`
|
this creates trouble when trying to check it out, as git can’t tell
|
||||||
|
whether you want the tag or the branch. Instead, name it X.Y\_branch:
|
||||||
|
```bash
|
||||||
|
git checkout 4.8
|
||||||
|
git checkout -b 4.8_branch
|
||||||
|
git push origin 4.8_branch
|
||||||
|
```
|
||||||
|
|
||||||
You can then cherry-pick changes and push them up to the branch:
|
You can then cherry-pick changes and push them up to the branch:
|
||||||
````
|
````bash
|
||||||
git cherry-pick c6d134988c856d0025153fb885045d995bc8c397
|
git cherry-pick c6d134988c856d0025153fb885045d995bc8c397
|
||||||
git push origin HEAD:refs/for/4.8_branch
|
git push origin HEAD:refs/for/4.8_branch
|
||||||
````
|
````
|
||||||
|
@@ -296,6 +296,36 @@ noting, but not needing a full description.
|
|||||||
* sandybridge & gm45: Support setting PCI bars above 4G
|
* sandybridge & gm45: Support setting PCI bars above 4G
|
||||||
|
|
||||||
|
|
||||||
|
Plans to move platform support to a branch:
|
||||||
|
-------------------------------------------
|
||||||
|
After the 4.18 release in November 2022, we plan to move support for any
|
||||||
|
boards still requiring RESOURCE_ALLOCATOR_V3 to the 4.18 branch. V4 was
|
||||||
|
introduced more than a year ago and with minor changes most platforms
|
||||||
|
were able to work just fine with it. A major difference is that V3 uses
|
||||||
|
just one continuous region below 4G to allocate all PCI memory BAR's. V4
|
||||||
|
uses all available space below 4G and if asked to, also above 4G too.
|
||||||
|
This makes it important that SoC code properly reports all fixed
|
||||||
|
resources.
|
||||||
|
|
||||||
|
Currently only AGESA platforms have issues with it. On Gerrit both
|
||||||
|
attempts to fix AMD AGESA codebases to use V4 and compatibility modes
|
||||||
|
inside the V4 allocator have been proposed, but both efforts seem
|
||||||
|
stalled. See the (not yet merged) documentation
|
||||||
|
[CR:43603](https://review.coreboot.org/c/coreboot/+/43603) on it's
|
||||||
|
details. It looks like properly reporting all fixed resources is the
|
||||||
|
issue.
|
||||||
|
|
||||||
|
At this point, we are not specifying which platforms this will include
|
||||||
|
as there are a number of patches to fix these issues in flight.
|
||||||
|
Hopefully, all platforms will end up being migrated to the V4 resource
|
||||||
|
allocator so that none of the platforms need to be supported on the
|
||||||
|
branch.
|
||||||
|
|
||||||
|
Additionally, even if the support for the platform is moved to a branch,
|
||||||
|
it can be brought back to ToT if they're fixed to support the V4
|
||||||
|
allocator.
|
||||||
|
|
||||||
|
|
||||||
Plans for Code Deprecation
|
Plans for Code Deprecation
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
Upcoming release - coreboot 4.18 release
|
coreboot 4.18 release
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
The 4.18 release is quite late, but is now planned for October 16, 2022.
|
The 4.18 release was quite late, but was completed on October 16, 2022.
|
||||||
|
|
||||||
In the past 4 months since the 4.17 release, the coreboot project has
|
In the 4 months since the 4.17 release, the coreboot project has merged
|
||||||
merged more than 1800 commits from over 200 different authors. Over 50
|
more than 1800 commits from over 200 different authors. Over 50 of those
|
||||||
of those authors submitted their first patches.
|
authors submitted their first patches.
|
||||||
|
|
||||||
Welcome and thank you to all of our new contributors, and of course the
|
Welcome and thank you to all of our new contributors, and of course the
|
||||||
work of all of the seasoned contributors is greatly appreciated.
|
work of all of the seasoned contributors is greatly appreciated.
|
||||||
@@ -195,6 +195,36 @@ the same increases maintenance burden on the community a lot, while also
|
|||||||
being rather confusing.
|
being rather confusing.
|
||||||
|
|
||||||
|
|
||||||
|
Plans to move platform support to a branch:
|
||||||
|
-------------------------------------------
|
||||||
|
After the 4.18 release in November 2022, we plan to move support for any
|
||||||
|
boards still requiring RESOURCE_ALLOCATOR_V3 to the 4.18 branch. V4 was
|
||||||
|
introduced more than a year ago and with minor changes most platforms
|
||||||
|
were able to work just fine with it. A major difference is that V3 uses
|
||||||
|
just one continuous region below 4G to allocate all PCI memory BAR's. V4
|
||||||
|
uses all available space below 4G and if asked to, also above 4G too.
|
||||||
|
This makes it important that SoC code properly reports all fixed
|
||||||
|
resources.
|
||||||
|
|
||||||
|
Currently only AGESA platforms have issues with it. On Gerrit both
|
||||||
|
attempts to fix AMD AGESA codebases to use V4 and compatibility modes
|
||||||
|
inside the V4 allocator have been proposed, but both efforts seem
|
||||||
|
stalled. See the (not yet merged) documentation
|
||||||
|
[CR:43603](https://review.coreboot.org/c/coreboot/+/43603) on it's
|
||||||
|
details. It looks like properly reporting all fixed resources is the
|
||||||
|
issue.
|
||||||
|
|
||||||
|
At this point, we are not specifying which platforms this will include
|
||||||
|
as there are a number of patches to fix these issues in flight.
|
||||||
|
Hopefully, all platforms will end up being migrated to the v4 resource
|
||||||
|
allocator so that none of the platforms need to be supported on the
|
||||||
|
branch.
|
||||||
|
|
||||||
|
Additionally, even if the support for the platform is moved to a branch,
|
||||||
|
it can be brought back to ToT if they're fixed to support the v4
|
||||||
|
allocator.
|
||||||
|
|
||||||
|
|
||||||
### Intel Icelake SoC & Icelake RVP mainboard
|
### Intel Icelake SoC & Icelake RVP mainboard
|
||||||
|
|
||||||
Intel Icelake is unmaintained. Also, the only user of this platform ever
|
Intel Icelake is unmaintained. Also, the only user of this platform ever
|
||||||
@@ -222,15 +252,37 @@ be maintained on the release 4.20 branch.
|
|||||||
* Intel Galileo mainboard
|
* Intel Galileo mainboard
|
||||||
|
|
||||||
|
|
||||||
Statistics
|
Statistics from commit d2d9021543 to f4c97ea131
|
||||||
----------
|
-----------------------------------------------
|
||||||
|
|
||||||
- Total Commits: 1819
|
- Total Commits: 1822
|
||||||
- Average Commits per day: 13.44
|
- Average Commits per day: 13.38
|
||||||
- Total lines added: 150195
|
- Total lines added: 150578
|
||||||
- Average lines added per commit: 82.57
|
- Average lines added per commit: 82.64
|
||||||
- Number of patches adding more than 100 lines: 127
|
- Number of patches adding more than 100 lines: 128
|
||||||
- Average lines added per small commit: 38.38
|
- Average lines added per small commit: 38.44
|
||||||
- Total lines removed: 33788
|
- Total lines removed: 33849
|
||||||
- Average lines removed per commit: 18.58
|
- Average lines removed per commit: 18.58
|
||||||
- Total difference between added and removed: 116407
|
- Total difference between added and removed: 116729
|
||||||
|
- Total authors: 202
|
||||||
|
- New authors: 52
|
||||||
|
|
||||||
|
|
||||||
|
Known Issues
|
||||||
|
------------
|
||||||
|
|
||||||
|
A couple of issues were discovered immediately following the release
|
||||||
|
that will be fixed in a follow-on point release in the upcoming weeks.
|
||||||
|
|
||||||
|
A pair of changes ([CB:67754](https://review.coreboot.org/67754) and
|
||||||
|
[CB:67662](https://review.coreboot.org/67662)) which merged shortly
|
||||||
|
before the 4.18 release have created an issue on Intel Apollo Lake
|
||||||
|
platform boards which prevents SMM/SMI from functioning; this affects
|
||||||
|
only Apollo Lake (but not Gemini Lake) devices.
|
||||||
|
See [CB:68599](https://review.coreboot.org/68599) for the fix.
|
||||||
|
|
||||||
|
Another issue applies to all Intel-based boards with onboard I2C TPMs
|
||||||
|
when verified boot is not enabled. The I2C buses don’t get initialized
|
||||||
|
until after the TPM, causing timeouts, TPM initialization failures, and
|
||||||
|
long boot times. See [CB:68550](https://review.coreboot.org/68550) for
|
||||||
|
the fix.
|
||||||
|
@@ -1,51 +1,187 @@
|
|||||||
Upcoming release - coreboot 4.19
|
Upcoming release - coreboot 4.19
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
The 4.19 release is planned for January 2023.
|
The 4.19 release is planned for the 16th of January 2023.
|
||||||
|
|
||||||
Update this document with changes that should be in the release notes.
|
Since the last release, the coreboot project has merged over 1600
|
||||||
|
commits from over 150 authors. Of those authors, around 25 were
|
||||||
|
first-time committers to the coreboot project.
|
||||||
|
|
||||||
* Please use Markdown.
|
As always, we are very grateful to all of the contributors for helping
|
||||||
* See the past few release notes for the general format.
|
to keep the project going. The coreboot project is different from many
|
||||||
* The chip and board additions and removals will be updated right
|
open source projects in that we need to keep constantly updating the
|
||||||
before the release, so those do not need to be added.
|
codebase to stay relevant with the latest processors and technologies.
|
||||||
* Note that all changes before the release are done are marked upcoming.
|
It takes constant effort to just stay afloat, let alone improve the
|
||||||
A final version of the notes are done after the release.
|
codebase. Thank you very much to everyone who has contributed, both in
|
||||||
|
this release and in previous times.
|
||||||
|
|
||||||
Significant changes
|
The 4.20 release is planned for the 20th of April, 2023.
|
||||||
-------------------
|
|
||||||
|
|
||||||
### Add significant changes here
|
|
||||||
|
|
||||||
|
Significant or interesting changes
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
### Show all Kconfig options in saved config file; compress same
|
||||||
|
|
||||||
|
The coreboot build system automatically adds a 'config' file to CBFS
|
||||||
|
that lists the exact Kconfig configuration that the image was built
|
||||||
|
with. This is useful to reproduce a build after the fact or to check
|
||||||
|
whether support for a specific feature is enabled in the image.
|
||||||
|
|
||||||
|
This file has been generated using the 'savedefconfig' Kconfig command,
|
||||||
|
which generates the minimal .config file that is needed to produce the
|
||||||
|
required config in a coreboot build. This is fine for reproduction, but
|
||||||
|
bad when you want to check if a certain config was enabled, since many
|
||||||
|
options get enabled by default or pulled in through another option's
|
||||||
|
'select' statement and thus don't show up in the defconfig.
|
||||||
|
|
||||||
|
Instead coreboot now includes a larger .config instead. In order to save
|
||||||
|
some space, all of the comments disabling options are removed from the
|
||||||
|
file, except for those included in the defconfig.
|
||||||
|
|
||||||
|
We can also LZMA compress the file since it is never read by firmware
|
||||||
|
itself and only intended for later re-extraction via cbfstool, which
|
||||||
|
always has LZMA support included.
|
||||||
|
|
||||||
|
|
||||||
|
### Toolchain updates
|
||||||
|
|
||||||
|
* Upgrade LLVM from 15.0.0 to 15.0.6
|
||||||
|
* Upgrade CMake from 3.24.2 to 3.25.0
|
||||||
|
* Upgrade IASL from 20220331 to 20221020
|
||||||
|
* Upgrade MPFR from 4.1.0 to 4.1.1
|
||||||
|
|
||||||
|
|
||||||
|
### Finished the conversion to ASL 2.0 syntax
|
||||||
|
|
||||||
|
Until recently, coreboot still contained lots of code using the legacy
|
||||||
|
ASL syntax. However, all ASL code was ported over to make use of the ASL
|
||||||
|
2.0 syntax and from this point on new ASL code should make use of it.
|
||||||
|
|
||||||
|
|
||||||
Additional coreboot changes
|
Additional coreboot changes
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
* One or two line change comments go here
|
* Significant work was done to enable and build-test clang builds.
|
||||||
|
* Added touchscreen power sequencing and runtime detection.
|
||||||
|
* A number of patches were added to clean up and improve SMBIOS.
|
||||||
|
* Work is in progress to unify and extend coreboot post codes.
|
||||||
|
* Clean up for header includes is in progress with help from IWYU.
|
||||||
|
* IOAPIC code has been reworked.
|
||||||
|
* Support was added to superiotool for the NCT6687D-W chip.
|
||||||
|
* Work is progressing to switch return values to enum cb_err instead of
|
||||||
|
bool or other pass/fail indicators.
|
||||||
|
* Clang builds are now working for most boards and are being
|
||||||
|
build-tested.
|
||||||
|
* 64-bit coreboot support is in progress and is working on a number of
|
||||||
|
platforms.
|
||||||
|
* A driver for EC used on various Clevo laptops was added.
|
||||||
|
* Native Intel Lynxpoint code was added to replace the MRC.bin.
|
||||||
|
* Work continued for the process of adding ops structures to the
|
||||||
|
devicetree.
|
||||||
|
* The crossgcc tool can now download the source packages, which are
|
||||||
|
needed to build the coreboot toolchain, from coreboot’s own mirror if
|
||||||
|
desired.
|
||||||
|
* A document with useful external resources related to firmware
|
||||||
|
development was added at Documentation/external_docs.md.
|
||||||
|
|
||||||
|
|
||||||
|
New Mainboards
|
||||||
|
--------------
|
||||||
|
|
||||||
|
* AMD: Mayan for Phoenix SoC
|
||||||
|
* GIGABYTE: GA-H61M-DS2
|
||||||
|
* Google: Crystaldrift
|
||||||
|
* Google: Gladios
|
||||||
|
* Google: Dibbi
|
||||||
|
* Google: Gaelin
|
||||||
|
* Google: Marasov
|
||||||
|
* Google: Markarth
|
||||||
|
* Google: Omnigul
|
||||||
|
* Google: Voltorb
|
||||||
|
* Intel: Meteorlake-P RVP
|
||||||
|
* MSI: PRO Z690-A (WIFI)
|
||||||
|
* Siemens: MC_EHL3
|
||||||
|
* Star Labs: StarBook Mk VI (i3-1220P and i7-1260P)
|
||||||
|
* System76: darp8
|
||||||
|
* System76: galp6
|
||||||
|
|
||||||
|
|
||||||
|
Removed Mainboards
|
||||||
|
------------------
|
||||||
|
|
||||||
|
* AMD: Inagua
|
||||||
|
* AMD: Olive Hill
|
||||||
|
* AMD: Parmer
|
||||||
|
* AMD: Persimmon
|
||||||
|
* AMD: Southstation
|
||||||
|
* AMD: Thatcher
|
||||||
|
* AMD: Unionstation
|
||||||
|
* ASROCK: E350M1
|
||||||
|
* ASROCK: IMB-A180
|
||||||
|
* ASUS: A88XM-E
|
||||||
|
* ASUS: AM1I-A
|
||||||
|
* ASUS: F2A85-M
|
||||||
|
* ASUS: F2A85-M LE
|
||||||
|
* ASUS: F2A85-M PRO
|
||||||
|
* BAP: ODE_e20xx
|
||||||
|
* Biostar: A68N-5200
|
||||||
|
* Biostar: AM1ML
|
||||||
|
* ELMEX: pcm205400
|
||||||
|
* ELMEX: pcm205401
|
||||||
|
* GizmoSphere: Gizmo
|
||||||
|
* GizmoSphere: Gizmo2
|
||||||
|
* Google: Morthal
|
||||||
|
* HP: ABM
|
||||||
|
* HP: Pavilion m6 1035dx
|
||||||
|
* Jetway: NF81_T56N_LF
|
||||||
|
* Lenovo: AMD G505s
|
||||||
|
* LiPPERT: FrontRunner-AF aka ADLINK CoreModule2-GF
|
||||||
|
* LiPPERT: Toucan-AF aka cExpress-GFR (+W83627DHG SIO)
|
||||||
|
* MSI: MS-7721 (FM2-A75MA-E35)
|
||||||
|
* PC Engines: APU1
|
||||||
|
|
||||||
|
|
||||||
|
Updated SoCs
|
||||||
|
------------
|
||||||
|
|
||||||
|
* Added soc/amd/glinda
|
||||||
|
* Renamed soc/amd/morgana to soc/amd/phoenix
|
||||||
|
* Removed cpu/amd/agesa/family14
|
||||||
|
* Removed cpu/amd/agesa/family15tn
|
||||||
|
* Removed cpu/amd/agesa/family16kb
|
||||||
|
|
||||||
|
|
||||||
|
Updated Chipsets
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* Removed northbridge/amd/agesa/family14
|
||||||
|
* Removed northbridge/amd/agesa/family15tn
|
||||||
|
* Removed northbridge/amd/agesa/family16kb
|
||||||
|
* Removed southbridge/amd/agesa/hudson
|
||||||
|
* Removed southbridge/amd/cimx/sb800
|
||||||
|
|
||||||
|
|
||||||
Payloads
|
Payloads
|
||||||
--------
|
--------
|
||||||
|
|
||||||
### Payload changes go here
|
* Updated GRUB from 2.04 to 2.06
|
||||||
|
* Updated SeaBIOS 1.16.0 to 1.16.1
|
||||||
|
|
||||||
|
|
||||||
|
Plans to move platform support to a branch
|
||||||
Plans for Code Deprecation
|
------------------------------------------
|
||||||
--------------------------
|
|
||||||
|
|
||||||
|
|
||||||
### Intel Icelake SoC & Icelake RVP mainboard
|
### Intel Icelake SoC & Icelake RVP mainboard
|
||||||
|
|
||||||
Intel Icelake is unmaintained. Also, the only user of this platform ever
|
Intel Icelake is unmaintained and the only user of this platform ever
|
||||||
was the Intel CRB (Customer Reference Board). From the looks of it the
|
was the Intel CRB (Customer Reference Board). From the looks of the
|
||||||
code was never ready for production as only engineering sample CPUIDs
|
code, it was never ready for production as only engineering sample
|
||||||
are supported. This reduces the maintanence overhead for the coreboot
|
CPUIDs are supported.
|
||||||
project.
|
|
||||||
|
|
||||||
Intel Icelake code will be removed with release 4.19 and any maintenence
|
Intel Icelake code will be removed following 4.19 and any maintenance
|
||||||
will be done on the 4.19 branch. This consists of the Intel Icelake SoC
|
will be done on the 4.19 branch. This consists of the Intel Icelake SoC
|
||||||
and Intel Icelake RVP mainboard.
|
and Intel Icelake RVP mainboard.
|
||||||
|
|
||||||
@@ -53,12 +189,45 @@ and Intel Icelake RVP mainboard.
|
|||||||
### Intel Quark SoC & Galileo mainboard
|
### Intel Quark SoC & Galileo mainboard
|
||||||
|
|
||||||
The SoC Intel Quark is unmaintained and different efforts to revive it
|
The SoC Intel Quark is unmaintained and different efforts to revive it
|
||||||
failed. Also, the only user of this platform ever was the Galileo
|
failed. Also, the only user of this platform ever was the Galileo
|
||||||
board.
|
board.
|
||||||
|
|
||||||
Thus, to reduce the maintanence overhead for the community, support for
|
Thus, to reduce the maintenance overhead for the community, support for
|
||||||
the following components will be removed from the master branch and will
|
the following components will be removed from the master branch and will
|
||||||
be maintained on the release 4.20 branch.
|
be maintained on the release 4.20 branch.
|
||||||
|
|
||||||
* Intel Quark SoC
|
* Intel Quark SoC
|
||||||
* Intel Galileo mainboard
|
* Intel Galileo mainboard
|
||||||
|
|
||||||
|
|
||||||
|
Statistics from the 4.18 to the 4.19 release
|
||||||
|
--------------------------------------------
|
||||||
|
|
||||||
|
- Total Commits: 1608
|
||||||
|
- Average Commits per day: 17.39
|
||||||
|
- Total lines added: 93786
|
||||||
|
- Average lines added per commit: 58.32
|
||||||
|
- Number of patches adding more than 100 lines: 80
|
||||||
|
- Average lines added per small commit: 38.54
|
||||||
|
- Total lines removed: 768014
|
||||||
|
- Total difference between added and removed: -674228
|
||||||
|
|
||||||
|
|
||||||
|
Significant Known and Open Issues
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Issues from the coreboot bugtracker: https://ticket.coreboot.org/
|
||||||
|
|
||||||
|
| # | Subject |
|
||||||
|
|-----|-----------------------------------------------------------------|
|
||||||
|
| 449 | ThinkPad T440p fail to start, continuous beeping & LED blinking |
|
||||||
|
| 448 | Thinkpad T440P ACPI Battery Value Issues |
|
||||||
|
| 446 | Optiplex 9010 No Post |
|
||||||
|
| 445 | Thinkpad X200 wifi issue |
|
||||||
|
| 439 | Lenovo X201 Turbo Boost not working (stuck on 2,4GHz) |
|
||||||
|
| 427 | x200: Two battery charging issues |
|
||||||
|
| 414 | X9SAE-V: No USB keyboard init on SeaBIOS using Radeon RX 6800XT |
|
||||||
|
| 412 | x230 reboots on suspend |
|
||||||
|
| 393 | T500 restarts rather than waking up from suspend |
|
||||||
|
| 350 | I225 PCIe device not detected on Harcuvar |
|
||||||
|
| 327 | OperationRegion (OPRG, SystemMemory, ASLS, 0x2000) causes BSOD |
|
||||||
|
67
Documentation/releases/coreboot-4.20-relnotes.md
Normal file
67
Documentation/releases/coreboot-4.20-relnotes.md
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
Upcoming release - coreboot 4.20
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
The 4.20 release is planned for the 20th of April 2023.
|
||||||
|
|
||||||
|
|
||||||
|
The 4.21 release is planned for around the 17th of July, 2023
|
||||||
|
|
||||||
|
|
||||||
|
Update this document with changes that should be in the release notes.
|
||||||
|
|
||||||
|
* Please use Markdown.
|
||||||
|
* See the past few release notes for the general format.
|
||||||
|
* The chip and board additions and removals will be updated right
|
||||||
|
before the release, so those do not need to be added.
|
||||||
|
* Note that all changes before the release are done are marked upcoming.
|
||||||
|
A final version of the notes are done after the release.
|
||||||
|
|
||||||
|
* This document may also be edited at the google doc copy:
|
||||||
|
https://docs.google.com/document/d/1_0PeRxzT7ep8dIZobzIqG4n6Xwz3kkIDPVQURX7YTmM/edit
|
||||||
|
|
||||||
|
Significant or interesting changes
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
### Add changes that need a full description here
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Additional coreboot changes
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
The following are changes across a number of patches, or changes worth
|
||||||
|
noting, but not needing a full description.
|
||||||
|
|
||||||
|
* Changes that only need a line or two of description go here.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Plans to move platform support to a branch
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
### Intel Quark SoC & Galileo mainboard
|
||||||
|
|
||||||
|
The SoC Intel Quark is unmaintained and different efforts to revive it
|
||||||
|
have so far failed. The only user of this SoC ever was the Galileo
|
||||||
|
board.
|
||||||
|
|
||||||
|
Thus, to reduce the maintanence overhead for the community, support for
|
||||||
|
the following components will be removed from the master branch and will
|
||||||
|
be maintained on the release 4.20 branch.
|
||||||
|
|
||||||
|
* Intel Quark SoC
|
||||||
|
* Intel Galileo mainboard
|
||||||
|
|
||||||
|
|
||||||
|
Statistics from the 4.19 to the 4.20 release
|
||||||
|
--------------------------------------------
|
||||||
|
|
||||||
|
* To be filled in immediately before the release by the release team
|
||||||
|
|
||||||
|
|
||||||
|
Significant Known and Open Issues
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
* To be filled in immediately before the release by the release team
|
||||||
|
|
@@ -3,7 +3,7 @@
|
|||||||
## Upcoming release
|
## Upcoming release
|
||||||
|
|
||||||
Please add to the release notes as changes are added:
|
Please add to the release notes as changes are added:
|
||||||
* [4.19 - Jan 2023](coreboot-4.19-relnotes.md)
|
* [4.20 - April 2023](coreboot-4.20-relnotes.md)
|
||||||
|
|
||||||
The [checklist] contains instructions to ensure that a release covers all
|
The [checklist] contains instructions to ensure that a release covers all
|
||||||
important things and provides a reliable format for tarballs, branch
|
important things and provides a reliable format for tarballs, branch
|
||||||
@@ -15,9 +15,10 @@ important is taken care of.
|
|||||||
|
|
||||||
## Previous releases
|
## Previous releases
|
||||||
|
|
||||||
* [4.18 - Oct 2022](coreboot-4.18-relnotes.md)
|
* [4.19 - January 2023](coreboot-4.19-relnotes.md)
|
||||||
|
* [4.18 - October 2022](coreboot-4.18-relnotes.md)
|
||||||
* [4.17 - May 2022](coreboot-4.17-relnotes.md)
|
* [4.17 - May 2022](coreboot-4.17-relnotes.md)
|
||||||
* [4.16 - Feb 2022](coreboot-4.16-relnotes.md)
|
* [4.16 - February 2022](coreboot-4.16-relnotes.md)
|
||||||
* [4.15 - November 2021](coreboot-4.15-relnotes.md)
|
* [4.15 - November 2021](coreboot-4.15-relnotes.md)
|
||||||
* [4.14 - May 2021](coreboot-4.14-relnotes.md)
|
* [4.14 - May 2021](coreboot-4.14-relnotes.md)
|
||||||
* [4.13 - November 2020](coreboot-4.13-relnotes.md)
|
* [4.13 - November 2020](coreboot-4.13-relnotes.md)
|
||||||
|
309
MAINTAINERS
309
MAINTAINERS
@@ -14,27 +14,17 @@ Please try to follow the guidelines below. This will make things
|
|||||||
easier on the maintainers. Not all of these guidelines matter for every
|
easier on the maintainers. Not all of these guidelines matter for every
|
||||||
trivial patch so apply some common sense.
|
trivial patch so apply some common sense.
|
||||||
|
|
||||||
1. Always _test_ your changes, however small, on at least 1 or
|
|
||||||
2 people, preferably many more.
|
|
||||||
|
|
||||||
2. Try to release a few ALPHA test versions to gerrit. Announce
|
1. Make sure your changes compile correctly in multiple configurations. In
|
||||||
them onto the coreboot mailing list and IRC channel and await
|
particular check that changes work for various boards in the tree that
|
||||||
results. This is especially important on coreboot core changes,
|
it affects:
|
||||||
but also for device drivers, because often that's the only way
|
|
||||||
you will find things like the fact revision 3 chipset needs
|
|
||||||
a magic fix you didn't know about, or some clown changed the
|
|
||||||
chips on a board and not its name. (Don't laugh!)
|
|
||||||
|
|
||||||
3. Make sure your changes compile correctly in multiple
|
Test with: `util/abuild/abuild -c $(nproc) -t vendor/boardname`
|
||||||
configurations. In particular check that changes work for all
|
|
||||||
boards in the tree (use abuild!)
|
|
||||||
|
|
||||||
4. When you are happy with a change make it generally available for
|
2. When you are happy with a change make it generally available for
|
||||||
testing in gerrit and await feedback.
|
testing in gerrit and await feedback.
|
||||||
|
|
||||||
5. Make your patch available through coreboot's gerrit code review
|
3. Be prepared to get your changes sent back with seemingly
|
||||||
system, and add the relevant maintainer from this list as a code
|
|
||||||
reviewer. Be prepared to get your changes sent back with seemingly
|
|
||||||
silly requests about formatting and variable names. These aren't
|
silly requests about formatting and variable names. These aren't
|
||||||
as silly as they seem. One job the maintainers do is to keep
|
as silly as they seem. One job the maintainers do is to keep
|
||||||
things looking the same. Sometimes this means that the clever
|
things looking the same. Sometimes this means that the clever
|
||||||
@@ -45,36 +35,27 @@ trivial patch so apply some common sense.
|
|||||||
(util/lint/checkpatch.pl) to catch trival style violations.
|
(util/lint/checkpatch.pl) to catch trival style violations.
|
||||||
See https://www.coreboot.org/Coding_Style for guidance here.
|
See https://www.coreboot.org/Coding_Style for guidance here.
|
||||||
|
|
||||||
PLEASE add the maintainers that are generated by
|
|
||||||
util/scripts/get_maintainer.pl as reviewers. The results returned
|
|
||||||
by the script will be best if you have git installed and are
|
|
||||||
making your changes in a branch derived from coreboot.org's latest
|
|
||||||
git tree.
|
|
||||||
|
|
||||||
PLEASE try to include any credit lines you want added with the
|
|
||||||
patch. It avoids people being missed off by mistake and makes
|
|
||||||
it easier to know who wants adding and who doesn't.
|
|
||||||
|
|
||||||
PLEASE document known bugs. If it doesn't work for everything
|
PLEASE document known bugs. If it doesn't work for everything
|
||||||
or does something very odd once a month document it.
|
or does something very odd once a month document it.
|
||||||
|
|
||||||
PLEASE remember that submissions must be made under the terms
|
ALWAYS remember that submissions are made under the terms
|
||||||
of the OSDL certificate of contribution and should include a
|
of the OSDL certificate of contribution and should include a
|
||||||
Signed-off-by: line. The current version of this "Developer's
|
Signed-off-by: line. The current version of this "Developer's
|
||||||
Certificate of Origin" (DCO) is listed at
|
Certificate of Origin" (DCO) is listed at
|
||||||
https://www.coreboot.org/Development_Guidelines#Sign-off_Procedure.
|
https://www.coreboot.org/Development_Guidelines#Sign-off_Procedure.
|
||||||
|
|
||||||
6. Make sure you have the right to send any changes you make. If you
|
4. Make sure you have the right to send any changes you make. If you
|
||||||
do changes at work you may find your employer owns the patch
|
do changes at work you may find your employer owns the patch
|
||||||
not you.
|
not you.
|
||||||
|
|
||||||
7. Happy hacking.
|
5. Happy hacking.
|
||||||
|
|
||||||
Descriptions of section entries:
|
Descriptions of section entries:
|
||||||
|
|
||||||
M: Maintainer: FullName <address@domain>
|
M: Maintainer: FullName <address@domain>
|
||||||
Must be registered to Gerrit (https://review.coreboot.org/).
|
Must be registered to Gerrit (https://review.coreboot.org/).
|
||||||
Should have experience with upstream coreboot development.
|
Should have experience with upstream coreboot development and
|
||||||
|
+2 rights.
|
||||||
R: Designated reviewer: FullName <address@domain>
|
R: Designated reviewer: FullName <address@domain>
|
||||||
These reviewers should be CCed on patches.
|
These reviewers should be CCed on patches.
|
||||||
L: Mailing list that is relevant to this area
|
L: Mailing list that is relevant to this area
|
||||||
@@ -137,6 +118,24 @@ Maintainers List (try to look for most precise areas first)
|
|||||||
# Mainboards
|
# Mainboards
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
51NB MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/51nb/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ACER MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/acer/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ADLINK MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/adlink/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
AMD family 17h and 19h reference boards
|
AMD family 17h and 19h reference boards
|
||||||
M: Felix Held <felix-coreboot@felixheld.de>
|
M: Felix Held <felix-coreboot@felixheld.de>
|
||||||
M: Jason Glenesk <jason.glenesk@gmail.com>
|
M: Jason Glenesk <jason.glenesk@gmail.com>
|
||||||
@@ -144,11 +143,14 @@ M: Fred Reitberger <reitbergerfred@gmail.com>
|
|||||||
L: amd_coreboot_org_changes@googlegroups.com
|
L: amd_coreboot_org_changes@googlegroups.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/amd/bilby/
|
F: src/mainboard/amd/bilby/
|
||||||
|
F: src/mainboard/amd/birman/
|
||||||
F: src/mainboard/amd/chausie/
|
F: src/mainboard/amd/chausie/
|
||||||
F: src/mainboard/amd/majolica/
|
F: src/mainboard/amd/majolica/
|
||||||
F: src/mainboard/amd/mandolin/
|
F: src/mainboard/amd/mandolin/
|
||||||
|
F: src/mainboard/amd/mayan/
|
||||||
|
|
||||||
AMD reference boards outside of family 17h and 19h
|
AMD reference boards outside of family 17h and 19h
|
||||||
|
S: Odd Fixes
|
||||||
L: amd_coreboot_org_changes@googlegroups.com
|
L: amd_coreboot_org_changes@googlegroups.com
|
||||||
F: src/mainboard/amd/gardenia/
|
F: src/mainboard/amd/gardenia/
|
||||||
F: src/mainboard/amd/inagua/
|
F: src/mainboard/amd/inagua/
|
||||||
@@ -162,6 +164,12 @@ F: src/mainboard/amd/union_station/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AOPEN MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/aopen/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
APPLE MAINBOARDS
|
APPLE MAINBOARDS
|
||||||
M: Evgeny Zinoviev <me@ch1p.io>
|
M: Evgeny Zinoviev <me@ch1p.io>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -179,11 +187,6 @@ M: Angel Pons <th3fanbus@gmail.com>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/asrock/g41c-gs/
|
F: src/mainboard/asrock/g41c-gs/
|
||||||
|
|
||||||
ASROCK H81M-HDS MAINBOARD
|
|
||||||
M: Tristan Corrick <tristan@corrick.kiwi>
|
|
||||||
S: Maintained
|
|
||||||
F: src/mainboard/asrock/h81m-hds/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ASUS A88XM-E MAINBOARD
|
ASUS A88XM-E MAINBOARD
|
||||||
@@ -198,15 +201,9 @@ F: src/mainboard/asus/am1i-a/
|
|||||||
|
|
||||||
ASUS H61 SERIES MAINBOARDS
|
ASUS H61 SERIES MAINBOARDS
|
||||||
M: Angel Pons <th3fanbus@gmail.com>
|
M: Angel Pons <th3fanbus@gmail.com>
|
||||||
M: Tristan Corrick <tristan@corrick.kiwi>
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/asus/h61-series/
|
F: src/mainboard/asus/h61-series/
|
||||||
|
|
||||||
ASUS MAXIMUS IV GENE-Z MAINBOARD
|
|
||||||
M: Tristan Corrick <tristan@corrick.kiwi>
|
|
||||||
S: Maintained
|
|
||||||
F: src/mainboard/asus/maximus_iv_gene-z/
|
|
||||||
|
|
||||||
ASUS P5QC PRO MAINBOARD & VARIANTS
|
ASUS P5QC PRO MAINBOARD & VARIANTS
|
||||||
M: Angel Pons <th3fanbus@gmail.com>
|
M: Angel Pons <th3fanbus@gmail.com>
|
||||||
R: Stefan Ott <coreboot@desire.ch>
|
R: Stefan Ott <coreboot@desire.ch>
|
||||||
@@ -226,6 +223,30 @@ F: src/mainboard/asus/p8z77-series/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BAP MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/bap/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BIOSTAR MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/biostar/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BOSTENTECH MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/bostentech/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CAVIUM MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/cavium/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLEVO MAINBOARDS
|
CLEVO MAINBOARDS
|
||||||
M: Felix Singer <felixsinger@posteo.net>
|
M: Felix Singer <felixsinger@posteo.net>
|
||||||
M: Michael Niewöhner <foss@mniewoehner.de>
|
M: Michael Niewöhner <foss@mniewoehner.de>
|
||||||
@@ -234,6 +255,36 @@ F: src/mainboard/clevo/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
COMPULAB MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/compulab/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DELL MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/dell/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ELMEX MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/elmex/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EMULATION MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/emulation/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EXAMPLE MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/example/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FACEBOOK FBG1701 MAINBOARD
|
FACEBOOK FBG1701 MAINBOARD
|
||||||
M: Frans Hendriks <fhendriks@eltan.com>
|
M: Frans Hendriks <fhendriks@eltan.com>
|
||||||
M: Erik van den Bogaert <ebogaert@eltan.com>
|
M: Erik van den Bogaert <ebogaert@eltan.com>
|
||||||
@@ -248,21 +299,36 @@ F: src/mainboard/facebook/monolith/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FOXCONN MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/foxconn/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GETAC MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/getac/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
GIGABYTE GA-D510UD MAINBOARD
|
GIGABYTE GA-D510UD MAINBOARD
|
||||||
M: Angel Pons <th3fanbus@gmail.com>
|
M: Angel Pons <th3fanbus@gmail.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/gigabyte/ga-d510ud/
|
F: src/mainboard/gigabyte/ga-d510ud/
|
||||||
|
|
||||||
GIGABYTE GA-G41M-ES2L MAINBOARD
|
|
||||||
M: Damien Zammit <damien@zamaudio.com>
|
|
||||||
S: Odd Fixes
|
|
||||||
F: src/mainboard/gigabyte/ga-g41m-es2l/
|
|
||||||
|
|
||||||
GIGABYTE GA-H61M SERIES MAINBOARDS
|
GIGABYTE GA-H61M SERIES MAINBOARDS
|
||||||
M: Angel Pons <th3fanbus@gmail.com>
|
M: Angel Pons <th3fanbus@gmail.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/gigabyte/ga-h61m-series/
|
F: src/mainboard/gigabyte/ga-h61m-series/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GIZMOSPHERE MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/gizmosphere/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
GOOGLE REX MAINBOARDS
|
GOOGLE REX MAINBOARDS
|
||||||
M: Subrata Banik <subratabanik@google.com>
|
M: Subrata Banik <subratabanik@google.com>
|
||||||
M: Tarun Tuli <taruntuli@google.com>
|
M: Tarun Tuli <taruntuli@google.com>
|
||||||
@@ -280,11 +346,6 @@ M: Tarun Tuli <taruntuli@google.com>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/google/hatch/
|
F: src/mainboard/google/hatch/
|
||||||
|
|
||||||
GOOGLE PANTHER MAINBOARD
|
|
||||||
M: Stefan Reinauer <stefan.reinauer@coreboot.org>
|
|
||||||
S: Supported
|
|
||||||
F: src/mainboard/google/panther/
|
|
||||||
|
|
||||||
GOOGLE VOLTEER MAINBOARDS
|
GOOGLE VOLTEER MAINBOARDS
|
||||||
M: Nick Vaccaro <nvaccaro@chromium.org>
|
M: Nick Vaccaro <nvaccaro@chromium.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -315,6 +376,7 @@ F: src/mainboard/google/guybrush/
|
|||||||
F: src/mainboard/google/skyrim/
|
F: src/mainboard/google/skyrim/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
HP 280 G2 MAINBOARD
|
HP 280 G2 MAINBOARD
|
||||||
M: Angel Pons <th3fanbus@gmail.com>
|
M: Angel Pons <th3fanbus@gmail.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -322,23 +384,23 @@ F: src/mainboard/hp/280_g2/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
INTEL D510MO MAINBOARD
|
IBASE MAINBOARDS
|
||||||
M: Damien Zammit <damien@zamaudio.com>
|
S: Orphan
|
||||||
S: Odd Fixes
|
F: src/mainboard/ibase/
|
||||||
F: src/mainboard/intel/d510mo/
|
|
||||||
|
|
||||||
|
|
||||||
INTEL HARCUVAR_CRB MAINBOARD
|
INTEL HARCUVAR_CRB MAINBOARD
|
||||||
M: Jeff Daly <jeffd@silicom-usa.com>
|
M: Jeff Daly <jeffd@silicom-usa.com>
|
||||||
M: Vanessa Eusebio <vanessa.f.eusebio@intel.com>
|
M: Vanessa Eusebio <vanessa.f.eusebio@intel.com>
|
||||||
M: Suresh Bellampalli <suresh.bellampalli@intel.com>
|
|
||||||
M: Mariusz Szafranski <mariuszx.szafranski@intel.com>
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/intel/harcuvar/
|
F: src/mainboard/intel/harcuvar/
|
||||||
|
|
||||||
INTEL STRAGO MAINBOARD
|
|
||||||
M: Hannah Williams <hannah.williams@intel.com>
|
|
||||||
S: Supported
|
JETWAY MAINBOARDS
|
||||||
F: /src/mainboard/intel/strago/
|
S: Orphan
|
||||||
|
F: src/mainboard/jetway/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -378,6 +440,7 @@ S: Maintained
|
|||||||
F: src/mainboard/lenovo/x201/
|
F: src/mainboard/lenovo/x201/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LIBRETREND LT1000 MAINBOARD
|
LIBRETREND LT1000 MAINBOARD
|
||||||
M: Piotr Król <piotr.krol@3mdeb.com>
|
M: Piotr Król <piotr.krol@3mdeb.com>
|
||||||
M: Michał Żygowski <michal.zygowski@3mdeb.com>
|
M: Michał Żygowski <michal.zygowski@3mdeb.com>
|
||||||
@@ -386,6 +449,12 @@ F: src/mainboard/libretrend/lt1000/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
LIPPERT MAINBOARDS (acquired by Adlink)
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/lippert/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MSI H81M-P33 MAINBOARD
|
MSI H81M-P33 MAINBOARD
|
||||||
M: Angel Pons <th3fanbus@gmail.com>
|
M: Angel Pons <th3fanbus@gmail.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -397,6 +466,8 @@ M: Michał Kopeć <michal.kopec@3mdeb.com>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/mainboard/msi/ms7d25/
|
F: src/mainboard/msi/ms7d25/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
OCP DELTALAKE MAINBOARD
|
OCP DELTALAKE MAINBOARD
|
||||||
M: Arthur Heymans <arthur@aheymans.xyz>
|
M: Arthur Heymans <arthur@aheymans.xyz>
|
||||||
M: Christian Walter <christian.walter@9elements.com>
|
M: Christian Walter <christian.walter@9elements.com>
|
||||||
@@ -408,7 +479,6 @@ F: src/mainboard/ocp/deltalake/
|
|||||||
|
|
||||||
OCP TIOGAPASS MAINBOARD
|
OCP TIOGAPASS MAINBOARD
|
||||||
M: Jonathan Zhang <jonzhang@fb.com>
|
M: Jonathan Zhang <jonzhang@fb.com>
|
||||||
M: Reddy Chagam <anjaneya.chagam@intel.com>
|
|
||||||
M: Johnny Lin <Johnny_Lin@wiwynn.com>
|
M: Johnny Lin <Johnny_Lin@wiwynn.com>
|
||||||
M: Morgan Jang <Morgan_Jang@wiwynn.com>
|
M: Morgan Jang <Morgan_Jang@wiwynn.com>
|
||||||
M: Ryback Hung <<Ryback.Hung@quantatw.com>
|
M: Ryback Hung <<Ryback.Hung@quantatw.com>
|
||||||
@@ -434,6 +504,12 @@ F: src/mainboard/pcengines/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PINE64 MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/pine64/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PORTWELL PQ-M107 MAINBOARD
|
PORTWELL PQ-M107 MAINBOARD
|
||||||
M: Frans Hendriks <fhendriks@eltan.com>
|
M: Frans Hendriks <fhendriks@eltan.com>
|
||||||
M: Erik van den Bogaert <ebogaert@eltan.com>
|
M: Erik van den Bogaert <ebogaert@eltan.com>
|
||||||
@@ -472,6 +548,18 @@ F: src/mainboard/purism/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
RAZER MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/razer/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
RODA MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/roda/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SAMSUNG CHROMEOS MAINBOARDS
|
SAMSUNG CHROMEOS MAINBOARDS
|
||||||
M: Matt DeVillier <MrChromebox@gmail.com>
|
M: Matt DeVillier <MrChromebox@gmail.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -480,6 +568,18 @@ F: src/mainboard/samsung/stumpy/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SAPPHIRE MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/sapphire/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SCALEWAY MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/scaleway/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SIEMENS CHILI MAINBAORD
|
SIEMENS CHILI MAINBAORD
|
||||||
M: Felix Singer <felixsinger@posteo.net>
|
M: Felix Singer <felixsinger@posteo.net>
|
||||||
M: Nico Huber <nico.h@gmx.de>
|
M: Nico Huber <nico.h@gmx.de>
|
||||||
@@ -494,6 +594,12 @@ F: src/mainboard/siemens/mc_ehl/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SIFIVE MAINBOARDS
|
||||||
|
S: Orphan
|
||||||
|
F: src/mainboard/sifive/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STAR LABS MAINBOARDS
|
STAR LABS MAINBOARDS
|
||||||
M: Sean Rhodes <sean@starlabs.systems>
|
M: Sean Rhodes <sean@starlabs.systems>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -501,6 +607,13 @@ F: src/mainboard/starlabs/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SUPERMICRO X11-LGA1151-SERIES
|
||||||
|
M: Michael Niewöhner <foss@mniewoehner.de>
|
||||||
|
S: Maintained
|
||||||
|
F: src/mainboard/supermicro/x11-lga1151-series/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SYSTEM76 MAINBOARDS
|
SYSTEM76 MAINBOARDS
|
||||||
M: Jeremy Soller <jeremy@system76.com>
|
M: Jeremy Soller <jeremy@system76.com>
|
||||||
M: Tim Crawford <tcrawford@system76.com>
|
M: Tim Crawford <tcrawford@system76.com>
|
||||||
@@ -509,15 +622,15 @@ F: src/mainboard/system76/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
SUPERMICRO X10SLM+-F MAINBOARD
|
TI MAINBOARDS
|
||||||
M: Tristan Corrick <tristan@corrick.kiwi>
|
S: Orphan
|
||||||
S: Maintained
|
F: src/mainboard/ti/
|
||||||
F: src/mainboard/supermicro/x10slm-f/
|
|
||||||
|
|
||||||
SUPERMICRO X11-LGA1151-SERIES
|
|
||||||
M: Michael Niewöhner <foss@mniewoehner.de>
|
|
||||||
S: Maintained
|
UP MAINBOARDS
|
||||||
F: src/mainboard/supermicro/x11-lga1151-series/
|
S: Orphan
|
||||||
|
F: src/mainboard/up/
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Architectures
|
# Architectures
|
||||||
@@ -553,6 +666,7 @@ F: src/mainboard/sifive/
|
|||||||
F: util/riscv/
|
F: util/riscv/
|
||||||
|
|
||||||
X86 ARCHITECTURE
|
X86 ARCHITECTURE
|
||||||
|
S: MAINTAINED
|
||||||
F: src/arch/x86/
|
F: src/arch/x86/
|
||||||
F: src/cpu/x86/
|
F: src/cpu/x86/
|
||||||
F: src/drivers/pc80/
|
F: src/drivers/pc80/
|
||||||
@@ -567,7 +681,7 @@ CHROME EC
|
|||||||
M: Boris Mittelberg <bmbm@google.com>
|
M: Boris Mittelberg <bmbm@google.com>
|
||||||
M: Caveh Jalali <caveh@chromium.org>
|
M: Caveh Jalali <caveh@chromium.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/ec/google/chromeec/
|
F: src/ec/google/
|
||||||
|
|
||||||
LENOVO EC
|
LENOVO EC
|
||||||
M: Alexander Couzens <lynxis@fe80.eu>
|
M: Alexander Couzens <lynxis@fe80.eu>
|
||||||
@@ -585,6 +699,19 @@ M: Tim Crawford <tcrawford@system76.com>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/ec/system76/
|
F: src/ec/system76/
|
||||||
|
|
||||||
|
ORPHANED ECS
|
||||||
|
S: Orphan
|
||||||
|
F: src/ec/51nb/
|
||||||
|
F: src/ec/acpi/
|
||||||
|
F: src/ec/apple/
|
||||||
|
F: src/ec/compal/
|
||||||
|
F: src/ec/hp/
|
||||||
|
F: src/ec/kontron/
|
||||||
|
F: src/ec/purism/
|
||||||
|
F: src/ec/quanta/
|
||||||
|
F: src/ec/roda/
|
||||||
|
F: src/ec/smsc/
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Northbridges
|
# Northbridges
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -595,7 +722,6 @@ S: Maintained
|
|||||||
F: src/northbridge/intel/haswell/
|
F: src/northbridge/intel/haswell/
|
||||||
|
|
||||||
INTEL PINEVIEW CHIPSET
|
INTEL PINEVIEW CHIPSET
|
||||||
M: Damien Zammit <damien@zamaudio.com>
|
|
||||||
M: Angel Pons <th3fanbus@gmail.com>
|
M: Angel Pons <th3fanbus@gmail.com>
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
F: src/northbridge/intel/pineview/
|
F: src/northbridge/intel/pineview/
|
||||||
@@ -606,7 +732,6 @@ S: Maintained
|
|||||||
F: src/northbridge/intel/sandybridge/
|
F: src/northbridge/intel/sandybridge/
|
||||||
|
|
||||||
INTEL X4X CHIPSET
|
INTEL X4X CHIPSET
|
||||||
M: Damien Zammit <damien@zamaudio.com>
|
|
||||||
M: Angel Pons <th3fanbus@gmail.com>
|
M: Angel Pons <th3fanbus@gmail.com>
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
F: src/northbridge/intel/x4x/
|
F: src/northbridge/intel/x4x/
|
||||||
@@ -617,6 +742,7 @@ F: src/northbridge/intel/x4x/
|
|||||||
|
|
||||||
AMD SUPPORT
|
AMD SUPPORT
|
||||||
L: amd_coreboot_org_changes@googlegroups.com
|
L: amd_coreboot_org_changes@googlegroups.com
|
||||||
|
S: Odd Fixes
|
||||||
F: src/vendorcode/amd/
|
F: src/vendorcode/amd/
|
||||||
F: src/cpu/amd/
|
F: src/cpu/amd/
|
||||||
F: src/northbridge/amd/
|
F: src/northbridge/amd/
|
||||||
@@ -634,9 +760,7 @@ F: src/drivers/intel/
|
|||||||
F: src/include/cpu/intel/
|
F: src/include/cpu/intel/
|
||||||
|
|
||||||
INTEL FSP 1.1
|
INTEL FSP 1.1
|
||||||
M: Lee Leahy <leroy.p.leahy@intel.com>
|
|
||||||
M: Huang Jin <huang.jin@intel.com>
|
M: Huang Jin <huang.jin@intel.com>
|
||||||
M: York Yang <york.yang@intel.com>
|
|
||||||
S: Supported
|
S: Supported
|
||||||
F: src/drivers/intel/fsp1_1/
|
F: src/drivers/intel/fsp1_1/
|
||||||
|
|
||||||
@@ -691,6 +815,16 @@ S: Supported
|
|||||||
F: src/soc/amd/mendocino/
|
F: src/soc/amd/mendocino/
|
||||||
F: src/vendorcode/amd/fsp/mendocino/
|
F: src/vendorcode/amd/fsp/mendocino/
|
||||||
|
|
||||||
|
AMD Phoenix
|
||||||
|
M: Felix Held <felix-coreboot@felixheld.de>
|
||||||
|
M: Jason Glenesk <jason.glenesk@gmail.com>
|
||||||
|
M: Fred Reitberger <reitbergerfred@gmail.com>
|
||||||
|
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
||||||
|
L: amd_coreboot_org_changes@googlegroups.com
|
||||||
|
S: Supported
|
||||||
|
F: src/soc/amd/phoenix/
|
||||||
|
F: src/vendorcode/amd/fsp/phoenix/
|
||||||
|
|
||||||
AMD Stoneyridge
|
AMD Stoneyridge
|
||||||
M: Felix Held <felix-coreboot@felixheld.de>
|
M: Felix Held <felix-coreboot@felixheld.de>
|
||||||
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
M: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
|
||||||
@@ -712,8 +846,8 @@ S: Maintained
|
|||||||
F: src/soc/intel/alderlake/
|
F: src/soc/intel/alderlake/
|
||||||
|
|
||||||
INTEL APOLLOLAKE_SOC
|
INTEL APOLLOLAKE_SOC
|
||||||
M: Andrey Petrov <andrey.petrov@gmail.com>
|
M: Sean Rhodes <sean@starlabs.systems>
|
||||||
S: Maintained
|
S: Odd Fixes
|
||||||
F: src/soc/intel/apollolake/
|
F: src/soc/intel/apollolake/
|
||||||
|
|
||||||
INTEL BRASWELL SOC
|
INTEL BRASWELL SOC
|
||||||
@@ -727,8 +861,6 @@ F: /src/vendorcode/intel/fsp/fsp1_1/braswell/
|
|||||||
INTEL DENVERTON-NS SOC
|
INTEL DENVERTON-NS SOC
|
||||||
M: Jeff Daly <jeffd@silicom-usa.com>
|
M: Jeff Daly <jeffd@silicom-usa.com>
|
||||||
M: Vanessa Eusebio <vanessa.f.eusebio@intel.com>
|
M: Vanessa Eusebio <vanessa.f.eusebio@intel.com>
|
||||||
M: Suresh Bellampalli <suresh.bellampalli@intel.com>
|
|
||||||
M: Mariusz Szafranski <mariuszx.szafranski@intel.com>
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/soc/intel/denverton_ns/
|
F: src/soc/intel/denverton_ns/
|
||||||
|
|
||||||
@@ -746,7 +878,6 @@ F: src/soc/intel/tigerlake/
|
|||||||
|
|
||||||
INTEL Xeon Sacalable Processor Family
|
INTEL Xeon Sacalable Processor Family
|
||||||
M: Jonathan Zhang <jonzhang@fb.com>
|
M: Jonathan Zhang <jonzhang@fb.com>
|
||||||
M: Reddy Chagam <anjaneya.chagam@intel.com>
|
|
||||||
M: Johnny Lin <Johnny_Lin@wiwynn.com>
|
M: Johnny Lin <Johnny_Lin@wiwynn.com>
|
||||||
M: Tim Chu <Tim.Chu@quantatw.com>
|
M: Tim Chu <Tim.Chu@quantatw.com>
|
||||||
M: Arthur Heymans <arthur@aheymans.xyz>
|
M: Arthur Heymans <arthur@aheymans.xyz>
|
||||||
@@ -768,7 +899,7 @@ F: src/soc/mediatek/mt8192/
|
|||||||
F: src/vendorcode/mediatek/mt8192/
|
F: src/vendorcode/mediatek/mt8192/
|
||||||
|
|
||||||
ORPHANED ARM SOCS
|
ORPHANED ARM SOCS
|
||||||
S: Orphaned
|
S: Orphan
|
||||||
F: src/cpu/armltd/
|
F: src/cpu/armltd/
|
||||||
F: src/soc/ti/
|
F: src/soc/ti/
|
||||||
F: src/soc/qualcomm/
|
F: src/soc/qualcomm/
|
||||||
@@ -825,6 +956,10 @@ F: util/xcompile/
|
|||||||
F: util/genbuild_h/
|
F: util/genbuild_h/
|
||||||
|
|
||||||
TOOLCHAIN
|
TOOLCHAIN
|
||||||
|
M: Martin Roth <gaumless@gmail.com>
|
||||||
|
M: Felix Singer <felixsinger@posteo.net>
|
||||||
|
M: Elyes Haouas <ehaouas@noos.fr>
|
||||||
|
S: Supported
|
||||||
F: util/crossgcc/
|
F: util/crossgcc/
|
||||||
|
|
||||||
DOCKER
|
DOCKER
|
||||||
@@ -976,6 +1111,16 @@ S: Maintained
|
|||||||
F: tests/
|
F: tests/
|
||||||
F: payloads/libpayload/tests/
|
F: payloads/libpayload/tests/
|
||||||
|
|
||||||
|
COREBOOT RELEASES
|
||||||
|
M: Felix Singer <felixsinger@posteo.net>
|
||||||
|
M: Jason Glenesk <jason.glenesk@gmail.com>
|
||||||
|
M: Angel Pons <th3fanbus@gmail.com>
|
||||||
|
M: Martin Roth <gaumless@gmail.com>
|
||||||
|
M: Matt DeVillier <MrChromebox@gmail.com>
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/releases/
|
||||||
|
F: util/release/
|
||||||
|
|
||||||
MISSING: TIMERS / DELAYS
|
MISSING: TIMERS / DELAYS
|
||||||
|
|
||||||
MISSING: TIMESTAMPS
|
MISSING: TIMESTAMPS
|
||||||
@@ -1012,7 +1157,7 @@ MISSING: SPI
|
|||||||
|
|
||||||
CODE OF CONDUCT
|
CODE OF CONDUCT
|
||||||
M: Stefan Reinauer <stefan.reinauer@coreboot.org>
|
M: Stefan Reinauer <stefan.reinauer@coreboot.org>
|
||||||
M: Ronald Minnich <rminnich@coreboot.org>
|
M: Ronald Minnich <rminnich@gmail.com>
|
||||||
M: Martin Roth <martin@coreboot.org>
|
M: Martin Roth <martin@coreboot.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/community/code_of_conduct.md
|
F: Documentation/community/code_of_conduct.md
|
||||||
|
39
Makefile
39
Makefile
@@ -38,6 +38,11 @@ COREBOOT_EXPORTS += KCONFIG_DEPENDENCIES KCONFIG_SPLITCONFIG KCONFIG_TRISTATE
|
|||||||
COREBOOT_EXPORTS += KCONFIG_NEGATIVES KCONFIG_STRICT
|
COREBOOT_EXPORTS += KCONFIG_NEGATIVES KCONFIG_STRICT
|
||||||
COREBOOT_EXPORTS += KCONFIG_AUTOADS KCONFIG_PACKAGE
|
COREBOOT_EXPORTS += KCONFIG_AUTOADS KCONFIG_PACKAGE
|
||||||
|
|
||||||
|
# Make does not offer a recursive wildcard function, so here's one:
|
||||||
|
rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))
|
||||||
|
SYMLINK_LIST = $(call rwildcard,site-local/,symlink.txt)
|
||||||
|
|
||||||
|
|
||||||
# directory containing the toplevel Makefile.inc
|
# directory containing the toplevel Makefile.inc
|
||||||
TOPLEVEL := .
|
TOPLEVEL := .
|
||||||
|
|
||||||
@@ -64,6 +69,9 @@ endif
|
|||||||
HOSTCFLAGS := -g
|
HOSTCFLAGS := -g
|
||||||
HOSTCXXFLAGS := -g
|
HOSTCXXFLAGS := -g
|
||||||
|
|
||||||
|
HOSTPKG_CONFIG ?= pkg-config
|
||||||
|
COREBOOT_EXPORTS += HOSTPKG_CONFIG
|
||||||
|
|
||||||
PREPROCESS_ONLY := -E -P -x assembler-with-cpp -undef -I .
|
PREPROCESS_ONLY := -E -P -x assembler-with-cpp -undef -I .
|
||||||
|
|
||||||
export $(COREBOOT_EXPORTS)
|
export $(COREBOOT_EXPORTS)
|
||||||
@@ -143,13 +151,14 @@ include $(TOPLEVEL)/payloads/Makefile.inc
|
|||||||
include $(TOPLEVEL)/util/testing/Makefile.inc
|
include $(TOPLEVEL)/util/testing/Makefile.inc
|
||||||
-include $(TOPLEVEL)/site-local/Makefile.inc
|
-include $(TOPLEVEL)/site-local/Makefile.inc
|
||||||
include $(TOPLEVEL)/tests/Makefile.inc
|
include $(TOPLEVEL)/tests/Makefile.inc
|
||||||
real-all:
|
printall real-all:
|
||||||
@echo "Error: Trying to build, but NOCOMPILE is set." >&2
|
@echo "Error: Trying to build, but NOCOMPILE is set." >&2
|
||||||
@echo " Please file a bug with the following information:"
|
@echo " Please file a bug with the following information:"
|
||||||
@echo "- MAKECMDGOALS: $(MAKECMDGOALS)" >&2
|
@echo "- MAKECMDGOALS: $(MAKECMDGOALS)" >&2
|
||||||
@echo "- HAVE_DOTCONFIG: $(HAVE_DOTCONFIG)" >&2
|
@echo "- HAVE_DOTCONFIG: $(HAVE_DOTCONFIG)" >&2
|
||||||
@echo "- HAVE_KCONFIG_MAKEFILE_REAL: $(HAVE_KCONFIG_MAKEFILE_REAL)" >&2
|
@echo "- HAVE_KCONFIG_MAKEFILE_REAL: $(HAVE_KCONFIG_MAKEFILE_REAL)" >&2
|
||||||
@exit 1
|
@exit 1
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
ifneq ($(UNIT_TEST),1)
|
ifneq ($(UNIT_TEST),1)
|
||||||
@@ -307,6 +316,9 @@ $(eval $(postinclude-hooks))
|
|||||||
$(foreach class,$(classes),$(eval $(class)-srcs:=$(sort $($(class)-srcs))))
|
$(foreach class,$(classes),$(eval $(class)-srcs:=$(sort $($(class)-srcs))))
|
||||||
|
|
||||||
# Build Kconfig .ads if necessary
|
# Build Kconfig .ads if necessary
|
||||||
|
ifeq ($(CONFIG_ROMSTAGE_ADA),y)
|
||||||
|
romstage-srcs += $(obj)/romstage/$(notdir $(KCONFIG_AUTOADS))
|
||||||
|
endif
|
||||||
ifeq ($(CONFIG_RAMSTAGE_ADA),y)
|
ifeq ($(CONFIG_RAMSTAGE_ADA),y)
|
||||||
ramstage-srcs += $(obj)/ramstage/$(notdir $(KCONFIG_AUTOADS))
|
ramstage-srcs += $(obj)/ramstage/$(notdir $(KCONFIG_AUTOADS))
|
||||||
endif
|
endif
|
||||||
@@ -455,6 +467,29 @@ sphinx:
|
|||||||
sphinx-lint:
|
sphinx-lint:
|
||||||
$(MAKE) SPHINXOPTS=-W -C Documentation -f Makefile.sphinx html
|
$(MAKE) SPHINXOPTS=-W -C Documentation -f Makefile.sphinx html
|
||||||
|
|
||||||
|
symlink:
|
||||||
|
@echo "Creating Symbolic Links.."; \
|
||||||
|
for link in $(SYMLINK_LIST); do \
|
||||||
|
SYMLINK=`cat $$link`; \
|
||||||
|
REALPATH=`realpath $$link`; \
|
||||||
|
if [ -L "$$SYMLINK" ]; then \
|
||||||
|
continue; \
|
||||||
|
elif [ ! -e "$$SYMLINK" ]; then \
|
||||||
|
echo -e "\tLINK $$SYMLINK -> $$(dirname $$REALPATH)"; \
|
||||||
|
ln -s $$(dirname $$REALPATH) $$SYMLINK; \
|
||||||
|
else \
|
||||||
|
echo -e "\tFAILED: $$SYMLINK exists"; \
|
||||||
|
fi \
|
||||||
|
done
|
||||||
|
|
||||||
|
clean-symlink:
|
||||||
|
@echo "Deleting symbolic link";\
|
||||||
|
EXISTING_SYMLINKS=`find -L ./src -xtype l | grep -v 3rdparty`; \
|
||||||
|
for link in $$EXISTING_SYMLINKS; do \
|
||||||
|
echo -e "\tUNLINK $$link"; \
|
||||||
|
rm "$$link"; \
|
||||||
|
done
|
||||||
|
|
||||||
clean-for-update:
|
clean-for-update:
|
||||||
rm -rf $(obj) .xcompile
|
rm -rf $(obj) .xcompile
|
||||||
|
|
||||||
@@ -482,4 +517,4 @@ distclean: clean clean-ctags clean-cscope distclean-payloads distclean-utils
|
|||||||
rm -f abuild*.xml junit.xml* util/lint/junit.xml
|
rm -f abuild*.xml junit.xml* util/lint/junit.xml
|
||||||
|
|
||||||
.PHONY: $(PHONY) clean clean-for-update clean-cscope cscope distclean sphinx sphinx-lint
|
.PHONY: $(PHONY) clean clean-for-update clean-cscope cscope distclean sphinx sphinx-lint
|
||||||
.PHONY: ctags-project cscope-project clean-ctags
|
.PHONY: ctags-project cscope-project clean-ctags symlink clean-symlink
|
||||||
|
41
Makefile.inc
41
Makefile.inc
@@ -80,6 +80,7 @@ PHONY+= clean-abuild coreboot check-style build_complete
|
|||||||
#######################################################################
|
#######################################################################
|
||||||
# root source directories of coreboot
|
# root source directories of coreboot
|
||||||
subdirs-y := src/lib src/commonlib/ src/console src/device src/acpi src/superio/common
|
subdirs-y := src/lib src/commonlib/ src/console src/device src/acpi src/superio/common
|
||||||
|
subdirs-$(CONFIG_EC_ACPI) += src/ec/intel
|
||||||
subdirs-y += src/ec/acpi $(wildcard src/ec/*/*) $(wildcard src/southbridge/*/*)
|
subdirs-y += src/ec/acpi $(wildcard src/ec/*/*) $(wildcard src/southbridge/*/*)
|
||||||
subdirs-y += $(wildcard src/soc/*) $(wildcard src/soc/*/common) $(filter-out $(wildcard src/soc/*/common),$(wildcard src/soc/*/*))
|
subdirs-y += $(wildcard src/soc/*) $(wildcard src/soc/*/common) $(filter-out $(wildcard src/soc/*/common),$(wildcard src/soc/*/*))
|
||||||
subdirs-y += $(wildcard src/northbridge/*/*)
|
subdirs-y += $(wildcard src/northbridge/*/*)
|
||||||
@@ -265,26 +266,9 @@ endef
|
|||||||
# ResourceTemplate is the correct code.
|
# ResourceTemplate is the correct code.
|
||||||
# As it's valid ASL, disable the warning.
|
# As it's valid ASL, disable the warning.
|
||||||
EMPTY_RESOURCE_TEMPLATE_WARNING = 3150
|
EMPTY_RESOURCE_TEMPLATE_WARNING = 3150
|
||||||
# IASL compiler check for usage of _CRS, _DIS, _PRS, and _SRS objects:
|
|
||||||
# 1) If _PRS is present, must have _CRS and _SRS
|
|
||||||
# 2) If _SRS is present, must have _PRS (_PRS requires _CRS and _SRS)
|
|
||||||
# 3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS requires _CRS and _SRS)
|
|
||||||
# 4) If _SRS is present, probably should have a _DIS (Remark only)
|
|
||||||
# A warning will be issued for each of these cases.
|
|
||||||
# For existing ASL code, ignore this warnings
|
|
||||||
IASL_MISSING_DEPENDENCY = 3141
|
|
||||||
|
|
||||||
IASL_WARNINGS_LIST = $(EMPTY_RESOURCE_TEMPLATE_WARNING)
|
IASL_WARNINGS_LIST = $(EMPTY_RESOURCE_TEMPLATE_WARNING)
|
||||||
|
|
||||||
ifeq ($(CONFIG_IGNORE_IASL_MISSING_DEPENDENCY),y)
|
|
||||||
IASL_WARNINGS_LIST += $(IASL_MISSING_DEPENDENCY)
|
|
||||||
build_complete::
|
|
||||||
printf "*** WARNING: The ASL code for this platform is incomplete. Please fix it. ***\n"
|
|
||||||
printf "*** If _PRS is present, must have _CRS and _SRS ***\n"
|
|
||||||
printf "*** If _SRS is present, must have _PRS and _CRS ***\n"
|
|
||||||
printf "*** If _DIS is present, must have _SRS, _PRS and _CRS ***\n"
|
|
||||||
endif
|
|
||||||
|
|
||||||
IGNORED_IASL_WARNINGS = $(addprefix -vw , $(IASL_WARNINGS_LIST))
|
IGNORED_IASL_WARNINGS = $(addprefix -vw , $(IASL_WARNINGS_LIST))
|
||||||
|
|
||||||
define asl_template
|
define asl_template
|
||||||
@@ -322,18 +306,20 @@ cbfs-files-processor-nvramtool= \
|
|||||||
mv $(2).tmp $(2))
|
mv $(2).tmp $(2))
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# Reduce a .config file to its minimal representation
|
# Reduce a .config file by removing lines about default unset booleans
|
||||||
# arg1: input
|
# arg1: input
|
||||||
# arg2: output
|
# arg2: output
|
||||||
define cbfs-files-processor-defconfig
|
define cbfs-files-processor-config
|
||||||
$(eval $(2): $(1) $(obj)/build.h $(objutil)/kconfig/conf; \
|
$(eval $(2): $(1) $(obj)/build.h; \
|
||||||
+printf " CREATE $(2) (from $(1))\n"; \
|
+printf " CREATE $(2) (from $(1))\n"; \
|
||||||
printf "# This image was built using coreboot " > $(2).tmp && \
|
printf "# This image was built using coreboot " > $(2).tmp && \
|
||||||
grep "\<COREBOOT_VERSION\>" $(obj)/build.h |cut -d\" -f2 >> $(2).tmp && \
|
grep "\<COREBOOT_VERSION\>" $(obj)/build.h |cut -d\" -f2 >> $(2).tmp && \
|
||||||
$(MAKE) DOTCONFIG=$(1) DEFCONFIG=$(2).tmp2 savedefconfig && \
|
$(MAKE) DOTCONFIG=$(1) DEFCONFIG=$(2).tmp2 savedefconfig && \
|
||||||
cat $(2).tmp2 >> $(2).tmp && \
|
cat $(2).tmp2 >> $(2).tmp && \
|
||||||
|
printf "# End of defconfig. Derivable values start here.\n" >> $(2).tmp && \
|
||||||
|
grep "^CONFIG" $(1) | grep -F -v -f $(2).tmp2 >> $(2).tmp && \
|
||||||
rm -f $(2).tmp2 && \
|
rm -f $(2).tmp2 && \
|
||||||
\mv -f $(2).tmp $(2))
|
mv -f $(2).tmp $(2))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
@@ -386,9 +372,12 @@ cbfs-files-handler= \
|
|||||||
#######################################################################
|
#######################################################################
|
||||||
# a variety of flags for our build
|
# a variety of flags for our build
|
||||||
CBFS_COMPRESS_FLAG:=none
|
CBFS_COMPRESS_FLAG:=none
|
||||||
ifeq ($(CONFIG_COMPRESS_RAMSTAGE),y)
|
ifeq ($(CONFIG_COMPRESS_RAMSTAGE_LZMA),y)
|
||||||
CBFS_COMPRESS_FLAG:=LZMA
|
CBFS_COMPRESS_FLAG:=LZMA
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(CONFIG_COMPRESS_RAMSTAGE_LZ4),y)
|
||||||
|
CBFS_COMPRESS_FLAG:=LZ4
|
||||||
|
endif
|
||||||
|
|
||||||
CBFS_PAYLOAD_COMPRESS_FLAG:=none
|
CBFS_PAYLOAD_COMPRESS_FLAG:=none
|
||||||
ifeq ($(CONFIG_COMPRESSED_PAYLOAD_LZMA),y)
|
ifeq ($(CONFIG_COMPRESSED_PAYLOAD_LZMA),y)
|
||||||
@@ -433,7 +422,7 @@ endif
|
|||||||
CFLAGS_common += -pipe -g -nostdinc -std=gnu11
|
CFLAGS_common += -pipe -g -nostdinc -std=gnu11
|
||||||
CFLAGS_common += -nostdlib -Wall -Wundef -Wstrict-prototypes -Wmissing-prototypes
|
CFLAGS_common += -nostdlib -Wall -Wundef -Wstrict-prototypes -Wmissing-prototypes
|
||||||
CFLAGS_common += -Wwrite-strings -Wredundant-decls -Wno-trigraphs -Wimplicit-fallthrough
|
CFLAGS_common += -Wwrite-strings -Wredundant-decls -Wno-trigraphs -Wimplicit-fallthrough
|
||||||
CFLAGS_common += -Wshadow -Wdate-time -Wtype-limits -Wvla
|
CFLAGS_common += -Wshadow -Wdate-time -Wtype-limits -Wvla -Wold-style-definition
|
||||||
CFLAGS_common += -Wdangling-else
|
CFLAGS_common += -Wdangling-else
|
||||||
CFLAGS_common += -fno-common -ffreestanding -fno-builtin -fomit-frame-pointer
|
CFLAGS_common += -fno-common -ffreestanding -fno-builtin -fomit-frame-pointer
|
||||||
CFLAGS_common += -fstrict-aliasing -ffunction-sections -fdata-sections -fno-pie
|
CFLAGS_common += -fstrict-aliasing -ffunction-sections -fdata-sections -fno-pie
|
||||||
@@ -600,6 +589,7 @@ BINCFG:=$(objutil)/bincfg/bincfg
|
|||||||
IFDTOOL:=$(objutil)/ifdtool/ifdtool
|
IFDTOOL:=$(objutil)/ifdtool/ifdtool
|
||||||
|
|
||||||
AMDFWTOOL:=$(objutil)/amdfwtool/amdfwtool
|
AMDFWTOOL:=$(objutil)/amdfwtool/amdfwtool
|
||||||
|
AMDFWREAD:=$(objutil)/amdfwtool/amdfwread
|
||||||
|
|
||||||
APCB_EDIT_TOOL:=$(top)/util/apcb/apcb_edit.py
|
APCB_EDIT_TOOL:=$(top)/util/apcb/apcb_edit.py
|
||||||
|
|
||||||
@@ -701,7 +691,7 @@ install-git-commit-clangfmt:
|
|||||||
include util/crossgcc/Makefile.inc
|
include util/crossgcc/Makefile.inc
|
||||||
|
|
||||||
.PHONY: tools
|
.PHONY: tools
|
||||||
tools: $(objutil)/kconfig/conf $(objutil)/kconfig/toada $(CBFSTOOL) $(objutil)/cbfstool/cbfs-compression-tool $(FMAPTOOL) $(RMODTOOL) $(IFWITOOL) $(objutil)/nvramtool/nvramtool $(objutil)/sconfig/sconfig $(IFDTOOL) $(CBOOTIMAGE) $(AMDFWTOOL) $(AMDCOMPRESS) $(FUTILITY) $(BINCFG) $(IFITTOOL) $(objutil)/supermicro/smcbiosinfo $(CSE_FPT) $(CSE_SERGER)
|
tools: $(objutil)/kconfig/conf $(objutil)/kconfig/toada $(CBFSTOOL) $(objutil)/cbfstool/cbfs-compression-tool $(FMAPTOOL) $(RMODTOOL) $(IFWITOOL) $(objutil)/nvramtool/nvramtool $(objutil)/sconfig/sconfig $(IFDTOOL) $(CBOOTIMAGE) $(AMDFWTOOL) $(AMDCOMPRESS) $(FUTILITY) $(BINCFG) $(IFITTOOL) $(objutil)/supermicro/smcbiosinfo $(CSE_FPT) $(CSE_SERGER) $(AMDFWREAD)
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
# Common recipes for all stages
|
# Common recipes for all stages
|
||||||
@@ -1228,8 +1218,9 @@ vgaroms/seavgabios.bin-file := $(CONFIG_PAYLOAD_VGABIOS_FILE)
|
|||||||
vgaroms/seavgabios.bin-type := raw
|
vgaroms/seavgabios.bin-type := raw
|
||||||
|
|
||||||
cbfs-files-$(CONFIG_INCLUDE_CONFIG_FILE) += config
|
cbfs-files-$(CONFIG_INCLUDE_CONFIG_FILE) += config
|
||||||
config-file := $(DOTCONFIG):defconfig
|
config-file := $(DOTCONFIG):config
|
||||||
config-type := raw
|
config-type := raw
|
||||||
|
config-compression := LZMA
|
||||||
|
|
||||||
cbfs-files-$(CONFIG_INCLUDE_CONFIG_FILE) += revision
|
cbfs-files-$(CONFIG_INCLUDE_CONFIG_FILE) += revision
|
||||||
revision-file := $(obj)/build.h
|
revision-file := $(obj)/build.h
|
||||||
|
209
README.md
209
README.md
@@ -1,21 +1,41 @@
|
|||||||
coreboot README
|
coreboot README
|
||||||
===============
|
===============
|
||||||
|
|
||||||
coreboot is a Free Software project aimed at replacing the proprietary BIOS
|
coreboot is a Free Software project aimed at replacing the proprietary
|
||||||
(firmware) found in most computers. coreboot performs a little bit of
|
firmware (BIOS/UEFI) found in most computers. coreboot performs the
|
||||||
hardware initialization and then executes additional boot logic, called a
|
required hardware initialization to configure the system, then passes
|
||||||
payload.
|
control to a different executable, referred to in coreboot as the
|
||||||
|
payload. Most often, the primary function of the payload is to boot the
|
||||||
|
operating system (OS).
|
||||||
|
|
||||||
With the separation of hardware initialization and later boot logic,
|
With the separation of hardware initialization and later boot logic,
|
||||||
coreboot can scale from specialized applications that run directly
|
coreboot is perfect for a wide variety of situations. It can be used
|
||||||
firmware, run operating systems in flash, load custom
|
for specialized applications that run directly in the firmware, running
|
||||||
bootloaders, or implement firmware standards, like PC BIOS services or
|
operating systems from flash, loading custom bootloaders, or
|
||||||
UEFI. This allows for systems to only include the features necessary
|
implementing firmware standards, like PC BIOS services or UEFI. This
|
||||||
in the target application, reducing the amount of code and flash space
|
flexibility allows coreboot systems to include only the features
|
||||||
required.
|
necessary in the target application, reducing the amount of code and
|
||||||
|
flash space required.
|
||||||
|
|
||||||
coreboot was formerly known as LinuxBIOS.
|
|
||||||
|
|
||||||
|
Source code
|
||||||
|
-----------
|
||||||
|
|
||||||
|
All source code for coreboot is stored in git. It is downloaded with
|
||||||
|
the command:
|
||||||
|
|
||||||
|
`git clone https://review.coreboot.org/coreboot.git`.
|
||||||
|
|
||||||
|
Code reviews are done in [the project's Gerrit
|
||||||
|
instance](https://review.coreboot.org/).
|
||||||
|
|
||||||
|
The code may be browsed via [coreboot's Gitiles
|
||||||
|
instance](https://review.coreboot.org/plugins/gitiles/coreboot/+/refs/heads/master).
|
||||||
|
|
||||||
|
The coreboot project also maintains a
|
||||||
|
[mirror](https://github.com/coreboot/coreboot) of the project on github.
|
||||||
|
This is read-only, as coreboot does not accept github pull requests,
|
||||||
|
but allows browsing and downloading the coreboot source.
|
||||||
|
|
||||||
Payloads
|
Payloads
|
||||||
--------
|
--------
|
||||||
@@ -23,81 +43,156 @@ Payloads
|
|||||||
After the basic initialization of the hardware has been performed, any
|
After the basic initialization of the hardware has been performed, any
|
||||||
desired "payload" can be started by coreboot.
|
desired "payload" can be started by coreboot.
|
||||||
|
|
||||||
See <https://www.coreboot.org/Payloads> for a list of supported payloads.
|
See <https://doc.coreboot.org/payloads.html> for a list of some of
|
||||||
|
coreboot's supported payloads.
|
||||||
|
|
||||||
|
|
||||||
Supported Hardware
|
Supported Hardware
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
coreboot supports a wide range of chipsets, devices, and mainboards.
|
The coreboot project supports a wide range of architectures, chipsets,
|
||||||
|
devices, and mainboards. While not all of these are documented, you can
|
||||||
|
find some information in the [Architecture-specific
|
||||||
|
documentation](https://doc.coreboot.org/arch/index.html) or the
|
||||||
|
[SOC-specific documentation](https://doc.coreboot.org/soc/index.html).
|
||||||
|
|
||||||
For details please consult:
|
For details about the specific mainboard devices that coreboot supports,
|
||||||
|
please consult the [Mainboard-specific
|
||||||
* <https://www.coreboot.org/Supported_Motherboards>
|
documentation](https://doc.coreboot.org/mainboard/index.html) or the
|
||||||
|
[Board Status](https://coreboot.org/status/board-status.html) pages.
|
||||||
|
|
||||||
|
|
||||||
Build Requirements
|
Releases
|
||||||
------------------
|
--------
|
||||||
|
|
||||||
* make
|
Releases are currently done by coreboot every quarter. The
|
||||||
* gcc / g++
|
release archives contain the entire coreboot codebase from the time of
|
||||||
Because Linux distribution compilers tend to use lots of patches. coreboot
|
the release, along with any external submodules. The submodules
|
||||||
does lots of "unusual" things in its build system, some of which break due
|
containing binaries are separated from the general release archives. All
|
||||||
to those patches, sometimes by gcc aborting, sometimes - and that's worse -
|
of the packages required to build the coreboot toolchains are also kept
|
||||||
by generating broken object code.
|
at coreboot.org in case the websites change, or those specific packages
|
||||||
Two options: use our toolchain (eg. make crosstools-i386) or enable the
|
become unavailable in the future.
|
||||||
`ANY_TOOLCHAIN` Kconfig option if you're feeling lucky (no support in this
|
|
||||||
case).
|
|
||||||
* iasl (for targets with ACPI support)
|
|
||||||
* pkg-config
|
|
||||||
* libssl-dev (openssl)
|
|
||||||
|
|
||||||
Optional:
|
All releases are available on the [coreboot
|
||||||
|
download](https://coreboot.org/downloads.html) page.
|
||||||
|
|
||||||
* gdb (for better debugging facilities on some targets)
|
Please note that the coreboot releases are best considered as snapshots
|
||||||
* ncurses (for `make menuconfig` and `make nconfig`)
|
of the codebase, and do not currently guarantee any sort of extra
|
||||||
* flex and bison (for regenerating parsers)
|
stability.
|
||||||
|
|
||||||
|
Build Requirements and building coreboot
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
Building coreboot
|
The coreboot build, associated utilities and payloads require many
|
||||||
-----------------
|
additional tools and packages to build. The actual coreboot binary is
|
||||||
|
typically built using a coreboot-controlled toolchain to provide
|
||||||
|
reproducibility across various platforms. It is also possible, though
|
||||||
|
not recommended, to make it directly with your system toolchain.
|
||||||
|
Operating systems and distributions come with an unknown variety of
|
||||||
|
system tools and utilities installed. Because of this, it isn't
|
||||||
|
reasonable to list all the required packages to do a build, but the
|
||||||
|
documentation lists the requirements for a few different Linux
|
||||||
|
distributions.
|
||||||
|
|
||||||
Please consult <https://www.coreboot.org/Build_HOWTO> for details.
|
To see the list of tools and libraries, along with a list of
|
||||||
|
instructions to get started building coreboot, go to the [Starting from
|
||||||
|
scratch](https://doc.coreboot.org/tutorial/part1.html) tutorial page.
|
||||||
|
|
||||||
|
That same page goes through how to use QEMU to boot the build and see
|
||||||
Testing coreboot Without Modifying Your Hardware
|
the output.
|
||||||
------------------------------------------------
|
|
||||||
|
|
||||||
If you want to test coreboot without any risks before you really decide
|
|
||||||
to use it on your hardware, you can use the QEMU system emulator to run
|
|
||||||
coreboot virtually in QEMU.
|
|
||||||
|
|
||||||
Please see <https://www.coreboot.org/QEMU> for details.
|
|
||||||
|
|
||||||
|
|
||||||
Website and Mailing List
|
Website and Mailing List
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
Further details on the project, a FAQ, many HOWTOs, news, development
|
Further details on the project, as well as links to documentation and
|
||||||
guidelines and more can be found on the coreboot website:
|
more can be found on the coreboot website:
|
||||||
|
|
||||||
<https://www.coreboot.org>
|
<https://www.coreboot.org>
|
||||||
|
|
||||||
You can contact us directly on the coreboot mailing list:
|
You can contact us directly on the coreboot mailing list:
|
||||||
|
|
||||||
<https://www.coreboot.org/Mailinglist>
|
<https://doc.coreboot.org/community/forums.html>
|
||||||
|
|
||||||
|
|
||||||
Copyright and License
|
|
||||||
|
Copyrights and Licenses
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
|
||||||
|
### Uncopyrightable files
|
||||||
|
|
||||||
|
There are many files in the coreboot tree that we feel are not
|
||||||
|
copyrightable due to a lack of creative content.
|
||||||
|
|
||||||
|
"In order to qualify for copyright protection in the United States, a
|
||||||
|
work must satisfy the originality requirement, which has two parts. The
|
||||||
|
work must have “at least a modicum” of creativity, and it must be the
|
||||||
|
independent creation of its author."
|
||||||
|
|
||||||
|
<https://guides.lib.umich.edu/copyrightbasics/copyrightability>
|
||||||
|
|
||||||
|
Similar terms apply to other locations.
|
||||||
|
|
||||||
|
These uncopyrightable files include:
|
||||||
|
|
||||||
|
- Empty files or files with only a comment explaining their existence.
|
||||||
|
These may be required to exist as part of the build process but are
|
||||||
|
not needed for the particular project.
|
||||||
|
- Configuration files either in binary or text form. Examples would be
|
||||||
|
files such as .vbt files describing graphics configuration, spd files
|
||||||
|
as binary .spd or text \*spd\*.hex representing memory chip
|
||||||
|
configuration.
|
||||||
|
- Machine-generated files containing version numbers, dates, hash
|
||||||
|
values or other "non-creative" content.
|
||||||
|
|
||||||
|
As non-creative content, these files are in the public domain by
|
||||||
|
default. As such, the coreboot project excludes them from the project's
|
||||||
|
general license even though they may be included in a final binary.
|
||||||
|
|
||||||
|
If there are questions or concerns about this policy, please get in
|
||||||
|
touch with the coreboot project via the mailing list.
|
||||||
|
|
||||||
|
|
||||||
|
### Copyrights
|
||||||
|
|
||||||
The copyright on coreboot is owned by quite a large number of individual
|
The copyright on coreboot is owned by quite a large number of individual
|
||||||
developers and companies. Please check the individual source files for details.
|
developers and companies. A list of companies and individuals with known
|
||||||
|
copyright claims is present at the top level of the coreboot source tree
|
||||||
|
in the 'AUTHORS' file. Please check the git history of each of the
|
||||||
|
source files for details.
|
||||||
|
|
||||||
coreboot is licensed under the terms of the GNU General Public License (GPL).
|
|
||||||
Some files are licensed under the "GPL (version 2, or any later version)",
|
|
||||||
and some files are licensed under the "GPL, version 2". For some parts, which
|
|
||||||
were derived from other projects, other (GPL-compatible) licenses may apply.
|
|
||||||
Please check the individual source files for details.
|
|
||||||
|
|
||||||
This makes the resulting coreboot images licensed under the GPL, version 2.
|
### Licenses
|
||||||
|
|
||||||
|
Because of the way coreboot began, using a significant amount of source
|
||||||
|
code from the Linux kernel, it's licensed the same way as the Linux
|
||||||
|
Kernel, with GNU General Public License (GPL) Version 2. Individual
|
||||||
|
files are licensed under various licenses, though all are compatible
|
||||||
|
with GPLv2. The resulting coreboot image is licensed under the GPL,
|
||||||
|
version 2. All source files should have an SPDX license identifier at
|
||||||
|
the top for clarification.
|
||||||
|
|
||||||
|
Files under coreboot/Documentation/ are licensed under CC-BY 4.0 terms.
|
||||||
|
As an exception, files under Documentation/ with a history older than
|
||||||
|
2017-05-24 might be under different licenses.
|
||||||
|
|
||||||
|
Files in the coreboot/src/commonlib/bsd directory are all licensed with
|
||||||
|
the BSD-3-clause license. Many are also dual-licensed GPL-2.0-only or
|
||||||
|
GPL-2.0-or-later. These files are intended to be shared with libpayload
|
||||||
|
or other BSD licensed projects.
|
||||||
|
|
||||||
|
The libpayload project contained in coreboot/payloads/libpayload may be
|
||||||
|
licensed as BSD or GPL, depending on the code pulled in during the build
|
||||||
|
process. All GPL source code should be excluded unless the Kconfig
|
||||||
|
option to include it is set.
|
||||||
|
|
||||||
|
|
||||||
|
The Software Freedom Conservancy
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
Since 2017, coreboot has been a member of [The Software Freedom
|
||||||
|
Conservancy](https://sfconservancy.org/), a nonprofit organization
|
||||||
|
devoted to ethical technology and driving initiatives to make technology
|
||||||
|
more inclusive. The conservancy acts as coreboot's fiscal sponsor and
|
||||||
|
legal advisor.
|
||||||
|
5
configs/config.asrock_b85m_pro4.native_raminit
Normal file
5
configs/config.asrock_b85m_pro4.native_raminit
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Configuration used to build-test native raminit
|
||||||
|
CONFIG_VENDOR_ASROCK=y
|
||||||
|
CONFIG_BOARD_ASROCK_B85M_PRO4=y
|
||||||
|
CONFIG_USE_NATIVE_RAMINIT=y
|
||||||
|
CONFIG_DEBUG_RAM_SETUP=y
|
29
configs/config.google_skyrim.no_video
Normal file
29
configs/config.google_skyrim.no_video
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
CONFIG_USE_AMD_BLOBS=y
|
||||||
|
CONFIG_VENDOR_GOOGLE=y
|
||||||
|
# CONFIG_CONSOLE_SERIAL is not set
|
||||||
|
CONFIG_AMD_FWM_POSITION_INDEX=4
|
||||||
|
CONFIG_VBOOT=y
|
||||||
|
CONFIG_VBOOT_SLOTS_RW_A=y
|
||||||
|
# CONFIG_DRIVERS_INTEL_WIFI is not set
|
||||||
|
CONFIG_BOARD_GOOGLE_SKYRIM=y
|
||||||
|
CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x80000
|
||||||
|
CONFIG_VBOOT_FWID_MODEL="Google_$(CONFIG_MAINBOARD_PART_NUMBER)"
|
||||||
|
# CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK is not set
|
||||||
|
CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE=y
|
||||||
|
CONFIG_ASYNC_FILE_LOADING=y
|
||||||
|
# CONFIG_ACPI_BERT is not set
|
||||||
|
# CONFIG_ACPI_SSDT_PSD_INDEPENDENT is not set
|
||||||
|
CONFIG_AMD_STB_SIZE_IN_MB=3
|
||||||
|
CONFIG_NO_GFX_INIT=y
|
||||||
|
CONFIG_SUBSYSTEM_VENDOR_ID=0x0000
|
||||||
|
CONFIG_SUBSYSTEM_DEVICE_ID=0x0000
|
||||||
|
CONFIG_I2C_TRANSFER_TIMEOUT_US=500000
|
||||||
|
CONFIG_VPD=y
|
||||||
|
CONFIG_CBFS_MCACHE_RW_PERCENTAGE=50
|
||||||
|
CONFIG_GBB_FLAG_DEV_SCREEN_SHORT_DELAY=y
|
||||||
|
CONFIG_GBB_FLAG_FORCE_DEV_SWITCH_ON=y
|
||||||
|
CONFIG_VBOOT_KEYBLOCK_VERSION=1
|
||||||
|
CONFIG_VBOOT_KEYBLOCK_PREAMBLE_FLAGS=0x0
|
||||||
|
CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT=y
|
||||||
|
CONFIG_POST_IO_PORT=0x80
|
||||||
|
CONFIG_SEABIOS_DEBUG_LEVEL=-1
|
31
configs/config.google_skyrim.with_binaries
Normal file
31
configs/config.google_skyrim.with_binaries
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
CONFIG_TIMESTAMPS_ON_CONSOLE=y
|
||||||
|
CONFIG_USE_AMD_BLOBS=y
|
||||||
|
CONFIG_VENDOR_GOOGLE=y
|
||||||
|
CONFIG_VGA_BIOS_ID="1002,1506"
|
||||||
|
CONFIG_AMD_FWM_POSITION_INDEX=3
|
||||||
|
CONFIG_VGA_BIOS=y
|
||||||
|
CONFIG_CONSOLE_POST=y
|
||||||
|
CONFIG_BOARD_GOOGLE_SKYRIM=y
|
||||||
|
CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000
|
||||||
|
CONFIG_SPL_TABLE_FILE="3rdparty/amd_blobs/mendocino/PSP/TypeId0x55_SplTableBl_MDN.sbin"
|
||||||
|
CONFIG_VGA_BIOS_FILE="3rdparty/amd_blobs/mendocino/MdnGenericVbios.bin"
|
||||||
|
CONFIG_FSP_M_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_M.fd"
|
||||||
|
CONFIG_FSP_S_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_S.fd"
|
||||||
|
CONFIG_ASYNC_FILE_LOADING=y
|
||||||
|
CONFIG_PSP_SOFTFUSE_BITS="34 28"
|
||||||
|
CONFIG_UART_PCI_ADDR=0x0
|
||||||
|
CONFIG_RUN_FSP_GOP=y
|
||||||
|
CONFIG_SUBSYSTEM_VENDOR_ID=0x0000
|
||||||
|
CONFIG_SUBSYSTEM_DEVICE_ID=0x0000
|
||||||
|
CONFIG_I2C_TRANSFER_TIMEOUT_US=500000
|
||||||
|
CONFIG_DISPLAY_HOBS=y
|
||||||
|
CONFIG_DISPLAY_UPD_DATA=y
|
||||||
|
CONFIG_ADD_FSP_BINARIES=y
|
||||||
|
CONFIG_POST_IO_PORT=0x80
|
||||||
|
CONFIG_PAYLOAD_NONE=y
|
||||||
|
CONFIG_DISPLAY_FSP_CALLS_AND_STATUS=y
|
||||||
|
CONFIG_DISPLAY_FSP_HEADER=y
|
||||||
|
CONFIG_FATAL_ASSERTS=y
|
||||||
|
CONFIG_DEBUG_SMI=y
|
||||||
|
CONFIG_WRITE_STB_BUFFER_TO_CONSOLE=y
|
||||||
|
CONFIG_ADD_POSTCODES_TO_STB=y
|
3
configs/config.google_vilboz.x86_64
Normal file
3
configs/config.google_vilboz.x86_64
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
CONFIG_VENDOR_GOOGLE=y
|
||||||
|
CONFIG_BOARD_GOOGLE_VILBOZ=y
|
||||||
|
CONFIG_USE_EXP_X86_64_SUPPORT=y
|
@@ -4,7 +4,6 @@ CONFIG_CBFS_SIZE=0x800000
|
|||||||
CONFIG_BOARD_INTEL_HARCUVAR=y
|
CONFIG_BOARD_INTEL_HARCUVAR=y
|
||||||
# CONFIG_DRIVERS_UART_8250IO is not set
|
# CONFIG_DRIVERS_UART_8250IO is not set
|
||||||
CONFIG_ENABLE_HSUART=y
|
CONFIG_ENABLE_HSUART=y
|
||||||
CONFIG_UART_PCI_ADDR=0x8000d000
|
|
||||||
|
|
||||||
#Sample settings for Denverton-NS FSP.
|
#Sample settings for Denverton-NS FSP.
|
||||||
#CONFIG_ADD_FSP_BINARIES=y
|
#CONFIG_ADD_FSP_BINARIES=y
|
||||||
|
@@ -10,3 +10,4 @@ CONFIG_DEBUG_MALLOC=y
|
|||||||
CONFIG_DEBUG_SPI_FLASH=y
|
CONFIG_DEBUG_SPI_FLASH=y
|
||||||
CONFIG_DEBUG_BOOT_STATE=y
|
CONFIG_DEBUG_BOOT_STATE=y
|
||||||
CONFIG_DEBUG_ADA_CODE=y
|
CONFIG_DEBUG_ADA_CODE=y
|
||||||
|
CONFIG_USE_EXP_X86_64_SUPPORT=y
|
||||||
|
21
configs/config.msi_ms7d25_ddr5
Normal file
21
configs/config.msi_ms7d25_ddr5
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
CONFIG_VENDOR_MSI=y
|
||||||
|
CONFIG_CBFS_SIZE=0x1000000
|
||||||
|
CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000
|
||||||
|
CONFIG_EDK2_BOOT_TIMEOUT=3
|
||||||
|
CONFIG_BOARD_MSI_Z690_A_PRO_WIFI_DDR5=y
|
||||||
|
CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y
|
||||||
|
CONFIG_PCIEXP_HOTPLUG=y
|
||||||
|
CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G=y
|
||||||
|
CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0=y
|
||||||
|
CONFIG_POST_DEVICE_PCI_PCIE=y
|
||||||
|
CONFIG_POST_IO_PORT=0x80
|
||||||
|
CONFIG_PAYLOAD_EDK2=y
|
||||||
|
CONFIG_EDK2_REPOSITORY="https://github.com/Dasharo/edk2.git"
|
||||||
|
CONFIG_EDK2_TAG_OR_REV="origin/dasharo"
|
||||||
|
CONFIG_EDK2_CBMEM_LOGGING=y
|
||||||
|
CONFIG_EDK2_FOLLOW_BGRT_SPEC=y
|
||||||
|
CONFIG_EDK2_SD_MMC_TIMEOUT=1000
|
||||||
|
CONFIG_TPM2=y
|
||||||
|
CONFIG_TPM_MEASURED_BOOT=y
|
||||||
|
CONFIG_DRIVERS_GENERIC_CBFS_SERIAL=y
|
||||||
|
CONFIG_DRIVERS_GENERIC_CBFS_UUID=y
|
@@ -13,3 +13,4 @@ CONFIG_POST_DEVICE_LPC=y
|
|||||||
CONFIG_MAINBOARD_SERIAL_NUMBER="N/A"
|
CONFIG_MAINBOARD_SERIAL_NUMBER="N/A"
|
||||||
CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS=y
|
CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS=y
|
||||||
CONFIG_PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS=36
|
CONFIG_PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS=36
|
||||||
|
CONFIG_RUN_FSP_GOP=y
|
||||||
|
17
configs/config.prodrive_hermes.x86_64
Normal file
17
configs/config.prodrive_hermes.x86_64
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Settings used by Prodrive to build coreboot for the Hermes but with x86_64 enabled
|
||||||
|
CONFIG_VENDOR_PRODRIVE=y
|
||||||
|
CONFIG_BOARD_PRODRIVE_HERMES=y
|
||||||
|
CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Prodrive Technologies B.V."
|
||||||
|
CONFIG_POST_IO=y
|
||||||
|
CONFIG_USE_LEGACY_8254_TIMER=y
|
||||||
|
CONFIG_HERMES_USES_SPS_FIRMWARE=y
|
||||||
|
CONFIG_GENERIC_LINEAR_FRAMEBUFFER=y
|
||||||
|
CONFIG_SMMSTORE=y
|
||||||
|
CONFIG_SMMSTORE_V2=y
|
||||||
|
CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3=y
|
||||||
|
CONFIG_POST_DEVICE_LPC=y
|
||||||
|
CONFIG_MAINBOARD_SERIAL_NUMBER="N/A"
|
||||||
|
CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS=y
|
||||||
|
CONFIG_PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS=36
|
||||||
|
CONFIG_RUN_FSP_GOP=y
|
||||||
|
CONFIG_USE_EXP_X86_64_SUPPORT=y
|
@@ -1,15 +1,8 @@
|
|||||||
menu "Payload"
|
menu "Payload"
|
||||||
|
|
||||||
config NO_DEFAULT_PAYLOAD
|
|
||||||
bool
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Add a payload"
|
|
||||||
default PAYLOAD_NONE if NO_DEFAULT_PAYLOAD || !ARCH_X86
|
|
||||||
default PAYLOAD_SEABIOS if ARCH_X86
|
|
||||||
|
|
||||||
config PAYLOAD_NONE
|
config PAYLOAD_NONE
|
||||||
bool "None"
|
bool "Don't add a payload"
|
||||||
|
default y if !ARCH_X86
|
||||||
help
|
help
|
||||||
Select this option if you want to create an "empty" coreboot
|
Select this option if you want to create an "empty" coreboot
|
||||||
ROM image for a certain mainboard, i.e. a coreboot ROM image
|
ROM image for a certain mainboard, i.e. a coreboot ROM image
|
||||||
@@ -18,6 +11,11 @@ config PAYLOAD_NONE
|
|||||||
For such an image to be useful, you have to use 'cbfstool'
|
For such an image to be useful, you have to use 'cbfstool'
|
||||||
to add a payload to the ROM image later.
|
to add a payload to the ROM image later.
|
||||||
|
|
||||||
|
if !PAYLOAD_NONE
|
||||||
|
choice
|
||||||
|
prompt "Payload to add"
|
||||||
|
default PAYLOAD_SEABIOS if ARCH_X86
|
||||||
|
|
||||||
config PAYLOAD_ELF
|
config PAYLOAD_ELF
|
||||||
bool "An ELF executable payload"
|
bool "An ELF executable payload"
|
||||||
help
|
help
|
||||||
@@ -58,7 +56,7 @@ choice
|
|||||||
prompt "Payload compression algorithm"
|
prompt "Payload compression algorithm"
|
||||||
default COMPRESSED_PAYLOAD_LZMA
|
default COMPRESSED_PAYLOAD_LZMA
|
||||||
default COMPRESSED_PAYLOAD_NONE if PAYLOAD_LINUX || PAYLOAD_LINUXBOOT || PAYLOAD_FIT
|
default COMPRESSED_PAYLOAD_NONE if PAYLOAD_LINUX || PAYLOAD_LINUXBOOT || PAYLOAD_FIT
|
||||||
depends on !PAYLOAD_NONE && !PAYLOAD_LINUX && !PAYLOAD_LINUXBOOT && !PAYLOAD_FIT
|
depends on !PAYLOAD_LINUX && !PAYLOAD_LINUXBOOT && !PAYLOAD_FIT
|
||||||
help
|
help
|
||||||
Choose the compression algorithm for the chosen payloads.
|
Choose the compression algorithm for the chosen payloads.
|
||||||
You can choose between None, LZMA, or LZ4.
|
You can choose between None, LZMA, or LZ4.
|
||||||
@@ -178,4 +176,7 @@ config COREDOOM_SECONDARY_PAYLOAD
|
|||||||
source "payloads/external/*/Kconfig.secondary"
|
source "payloads/external/*/Kconfig.secondary"
|
||||||
|
|
||||||
endmenu # "Secondary Payloads"
|
endmenu # "Secondary Payloads"
|
||||||
|
|
||||||
|
endif # !PAYLOAD_NONE
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
2
payloads/external/GRUB2/Kconfig
vendored
2
payloads/external/GRUB2/Kconfig
vendored
@@ -15,7 +15,7 @@ choice
|
|||||||
default GRUB2_STABLE
|
default GRUB2_STABLE
|
||||||
|
|
||||||
config GRUB2_STABLE
|
config GRUB2_STABLE
|
||||||
bool "2.04"
|
bool "2.06"
|
||||||
help
|
help
|
||||||
Stable GRUB2 version
|
Stable GRUB2 version
|
||||||
|
|
||||||
|
6
payloads/external/GRUB2/Makefile
vendored
6
payloads/external/GRUB2/Makefile
vendored
@@ -1,9 +1,9 @@
|
|||||||
TAG-$(CONFIG_GRUB2_MASTER)=origin/HEAD
|
TAG-$(CONFIG_GRUB2_MASTER)=origin/HEAD
|
||||||
TAG-$(CONFIG_GRUB2_REVISION)=$(CONFIG_GRUB2_REVISION_ID)
|
TAG-$(CONFIG_GRUB2_REVISION)=$(CONFIG_GRUB2_REVISION_ID)
|
||||||
TAG-$(CONFIG_GRUB2_STABLE)=grub-2.04
|
TAG-$(CONFIG_GRUB2_STABLE)=grub-2.06
|
||||||
NAME-$(CONFIG_GRUB2_MASTER)=HEAD
|
NAME-$(CONFIG_GRUB2_MASTER)=HEAD
|
||||||
NAME-$(CONFIG_GRUB2_REVISION)=$(CONFIG_GRUB2_REVISION_ID)
|
NAME-$(CONFIG_GRUB2_REVISION)=$(CONFIG_GRUB2_REVISION_ID)
|
||||||
NAME-$(CONFIG_GRUB2_STABLE)=2.04
|
NAME-$(CONFIG_GRUB2_STABLE)=2.06
|
||||||
|
|
||||||
project_git_repo=https://git.savannah.gnu.org/git/grub.git/
|
project_git_repo=https://git.savannah.gnu.org/git/grub.git/
|
||||||
project_dir=grub2
|
project_dir=grub2
|
||||||
@@ -34,7 +34,7 @@ grub2/build/config.h: $(CONFIG_DEP) | checkout
|
|||||||
cd grub2/build && ../configure CC="$(HOSTCC)" LD="$(LD)" \
|
cd grub2/build && ../configure CC="$(HOSTCC)" LD="$(LD)" \
|
||||||
FREETYPE="pkg-config freetype2" BUILD_FREETYPE="pkg-config freetype2" \
|
FREETYPE="pkg-config freetype2" BUILD_FREETYPE="pkg-config freetype2" \
|
||||||
TARGET_CC="$(CC)" TARGET_OBJCOPY="$(OBJCOPY)" TARGET_STRIP="$(STRIP)" \
|
TARGET_CC="$(CC)" TARGET_OBJCOPY="$(OBJCOPY)" TARGET_STRIP="$(STRIP)" \
|
||||||
CFLAGS=-O2 TARGET_CFLAGS=-Os \
|
CFLAGS=-O2 TARGET_CFLAGS="-Os -fno-reorder-functions" \
|
||||||
--with-platform=coreboot --enable-boot-time --disable-werror
|
--with-platform=coreboot --enable-boot-time --disable-werror
|
||||||
|
|
||||||
config: grub2/build/config.h checkout
|
config: grub2/build/config.h checkout
|
||||||
|
2
payloads/external/LinuxBoot/targets/linux.mk
vendored
2
payloads/external/LinuxBoot/targets/linux.mk
vendored
@@ -45,6 +45,8 @@ else ifeq ($(findstring x4.,x$(kernel_version)),x4.)
|
|||||||
kernel_mirror_path := $(kernel_mirror)/v4.x
|
kernel_mirror_path := $(kernel_mirror)/v4.x
|
||||||
else ifeq ($(findstring x5.,x$(kernel_version)),x5.)
|
else ifeq ($(findstring x5.,x$(kernel_version)),x5.)
|
||||||
kernel_mirror_path := $(kernel_mirror)/v5.x
|
kernel_mirror_path := $(kernel_mirror)/v5.x
|
||||||
|
else ifeq ($(findstring x6.,x$(kernel_version)),x6.)
|
||||||
|
kernel_mirror_path := $(kernel_mirror)/v6.x
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: kernel
|
all: kernel
|
||||||
|
43
payloads/external/Makefile.inc
vendored
43
payloads/external/Makefile.inc
vendored
@@ -164,6 +164,7 @@ $(obj)/UEFIPAYLOAD.fd: $(DOTCONFIG)
|
|||||||
CONFIG_EDK2_REPO_OFFICIAL=$(CONFIG_EDK2_REPO_OFFICIAL) \
|
CONFIG_EDK2_REPO_OFFICIAL=$(CONFIG_EDK2_REPO_OFFICIAL) \
|
||||||
CONFIG_EDK2_REPO_MRCHROMEBOX=$(CONFIG_EDK2_REPO_MRCHROMEBOX) \
|
CONFIG_EDK2_REPO_MRCHROMEBOX=$(CONFIG_EDK2_REPO_MRCHROMEBOX) \
|
||||||
CONFIG_EDK2_REPO_CUSTOM=$(CONFIG_EDK2_REPO_CUSTOM) \
|
CONFIG_EDK2_REPO_CUSTOM=$(CONFIG_EDK2_REPO_CUSTOM) \
|
||||||
|
CONFIG_EDK2_CPU_TIMER_LIB=$(CONFIG_EDK2_CPU_TIMER_LIB) \
|
||||||
CONFIG_EDK2_CUSTOM_BUILD_PARAMS=$(CONFIG_EDK2_CUSTOM_BUILD_PARAMS) \
|
CONFIG_EDK2_CUSTOM_BUILD_PARAMS=$(CONFIG_EDK2_CUSTOM_BUILD_PARAMS) \
|
||||||
CONFIG_EDK2_DEBUG=$(CONFIG_EDK2_DEBUG) \
|
CONFIG_EDK2_DEBUG=$(CONFIG_EDK2_DEBUG) \
|
||||||
CONFIG_EDK2_RELEASE=$(CONFIG_EDK2_RELEASE) \
|
CONFIG_EDK2_RELEASE=$(CONFIG_EDK2_RELEASE) \
|
||||||
@@ -182,6 +183,48 @@ $(obj)/UEFIPAYLOAD.fd: $(DOTCONFIG)
|
|||||||
CONFIG_EDK2_SD_MMC_TIMEOUT=$(CONFIG_EDK2_SD_MMC_TIMEOUT) \
|
CONFIG_EDK2_SD_MMC_TIMEOUT=$(CONFIG_EDK2_SD_MMC_TIMEOUT) \
|
||||||
CONFIG_ECAM_MMCONF_BASE_ADDRESS=$(CONFIG_ECAM_MMCONF_BASE_ADDRESS) \
|
CONFIG_ECAM_MMCONF_BASE_ADDRESS=$(CONFIG_ECAM_MMCONF_BASE_ADDRESS) \
|
||||||
CONFIG_ECAM_MMCONF_LENGTH=$(CONFIG_ECAM_MMCONF_LENGTH) \
|
CONFIG_ECAM_MMCONF_LENGTH=$(CONFIG_ECAM_MMCONF_LENGTH) \
|
||||||
|
CONFIG_CPU_XTAL_HZ=$(CONFIG_CPU_XTAL_HZ) \
|
||||||
|
CONFIG_SMMSTORE_V2=$(CONFIG_SMMSTORE_v2) \
|
||||||
|
GCC_CC_x86_32=$(GCC_CC_x86_32) \
|
||||||
|
GCC_CC_x86_64=$(GCC_CC_x86_64) \
|
||||||
|
GCC_CC_arm=$(GCC_CC_arm) \
|
||||||
|
GCC_CC_arm64=$(GCC_CC_arm64) \
|
||||||
|
OBJCOPY_x86_32=$(OBJCOPY_x86_32) \
|
||||||
|
OBJCOPY_x86_64=$(OBJCOPY_x86_64) \
|
||||||
|
OBJCOPY_arm=$(OBJCOPY_arm) \
|
||||||
|
OBJCOPY_arm64=$(OBJCOPY_arm64) \
|
||||||
|
MFLAGS= MAKEFLAGS=
|
||||||
|
|
||||||
|
$(obj)/ShimmedUniversalPayload.elf: $(DOTCONFIG)
|
||||||
|
$(MAKE) -C payloads/external/edk2 UniversalPayload \
|
||||||
|
HOSTCC="$(HOSTCC)" \
|
||||||
|
CC="$(HOSTCC)" \
|
||||||
|
CONFIG_EDK2_REPOSITORY=$(CONFIG_EDK2_REPOSITORY) \
|
||||||
|
CONFIG_EDK2_TAG_OR_REV=$(CONFIG_EDK2_TAG_OR_REV) \
|
||||||
|
CONFIG_EDK2_UEFIPAYLOAD=$(CONFIG_EDK2_UEFIPAYLOAD) \
|
||||||
|
CONFIG_EDK2_REPO_OFFICIAL=$(CONFIG_EDK2_REPO_OFFICIAL) \
|
||||||
|
CONFIG_EDK2_REPO_MRCHROMEBOX=$(CONFIG_EDK2_REPO_MRCHROMEBOX) \
|
||||||
|
CONFIG_EDK2_REPO_CUSTOM=$(CONFIG_EDK2_REPO_CUSTOM) \
|
||||||
|
CONFIG_EDK2_CPU_TIMER_LIB=$(CONFIG_EDK2_CPU_TIMER_LIB) \
|
||||||
|
CONFIG_EDK2_CUSTOM_BUILD_PARAMS=$(CONFIG_EDK2_CUSTOM_BUILD_PARAMS) \
|
||||||
|
CONFIG_EDK2_DEBUG=$(CONFIG_EDK2_DEBUG) \
|
||||||
|
CONFIG_EDK2_RELEASE=$(CONFIG_EDK2_RELEASE) \
|
||||||
|
CONFIG_EDK2_ABOVE_4G_MEMORY=$(CONFIG_EDK2_ABOVE_4G_MEMORY) \
|
||||||
|
CONFIG_EDK2_BOOTSPLASH_FILE=$(CONFIG_EDK2_BOOTSPLASH_FILE) \
|
||||||
|
CONFIG_EDK2_BOOT_MANAGER_ESCAPE=$(CONFIG_EDK2_BOOT_MANAGER_ESCAPE) \
|
||||||
|
CONFIG_EDK2_BOOT_TIMEOUT=$(CONFIG_EDK2_BOOT_TIMEOUT) \
|
||||||
|
CONFIG_EDK2_CBMEM_LOGGING=$(CONFIG_EDK2_CBMEM_LOGGING) \
|
||||||
|
CONFIG_EDK2_FOLLOW_BGRT_SPEC=$(CONFIG_EDK2_FOLLOW_BGRT_SPEC) \
|
||||||
|
CONFIG_EDK2_FULL_SCREEN_SETUP=$(CONFIG_EDK2_FULL_SCREEN_SETUP) \
|
||||||
|
CONFIG_EDK2_HAVE_EFI_SHELL=$(CONFIG_EDK2_HAVE_EFI_SHELL) \
|
||||||
|
CONFIG_EDK2_PRIORITIZE_INTERNAL=$(CONFIG_EDK2_PRIORITIZE_INTERNAL) \
|
||||||
|
CONFIG_EDK2_PS2_SUPPORT=$(CONFIG_EDK2_PS2_SUPPORT) \
|
||||||
|
CONFIG_EDK2_SERIAL_SUPPORT=$(CONFIG_EDK2_SERIAL_SUPPORT) \
|
||||||
|
CONFIG_EDK2_SD_MMC_TIMEOUT=$(CONFIG_EDK2_SD_MMC_TIMEOUT) \
|
||||||
|
CONFIG_EDK2_UNIVERSAL_PAYLOAD=$(CONFIG_EDK2_UNIVERSAL_PAYLOAD) \
|
||||||
|
CONFIG_ECAM_MMCONF_BASE_ADDRESS=$(CONFIG_ECAM_MMCONF_BASE_ADDRESS) \
|
||||||
|
CONFIG_ECAM_MMCONF_LENGTH=$(CONFIG_ECAM_MMCONF_LENGTH) \
|
||||||
|
CONFIG_CPU_XTAL_HZ=$(CONFIG_CPU_XTAL_HZ) \
|
||||||
CONFIG_SMMSTORE_V2=$(CONFIG_SMMSTORE_v2) \
|
CONFIG_SMMSTORE_V2=$(CONFIG_SMMSTORE_v2) \
|
||||||
GCC_CC_x86_32=$(GCC_CC_x86_32) \
|
GCC_CC_x86_32=$(GCC_CC_x86_32) \
|
||||||
GCC_CC_x86_64=$(GCC_CC_x86_64) \
|
GCC_CC_x86_64=$(GCC_CC_x86_64) \
|
||||||
|
2
payloads/external/SeaBIOS/Kconfig
vendored
2
payloads/external/SeaBIOS/Kconfig
vendored
@@ -15,7 +15,7 @@ choice
|
|||||||
default SEABIOS_STABLE
|
default SEABIOS_STABLE
|
||||||
|
|
||||||
config SEABIOS_STABLE
|
config SEABIOS_STABLE
|
||||||
bool "1.16.0"
|
bool "1.16.1"
|
||||||
help
|
help
|
||||||
Stable SeaBIOS version
|
Stable SeaBIOS version
|
||||||
config SEABIOS_MASTER
|
config SEABIOS_MASTER
|
||||||
|
2
payloads/external/SeaBIOS/Makefile
vendored
2
payloads/external/SeaBIOS/Makefile
vendored
@@ -1,5 +1,5 @@
|
|||||||
TAG-$(CONFIG_SEABIOS_MASTER)=origin/master
|
TAG-$(CONFIG_SEABIOS_MASTER)=origin/master
|
||||||
TAG-$(CONFIG_SEABIOS_STABLE)=d239552ce7220e448ae81f41515138f7b9e3c4db
|
TAG-$(CONFIG_SEABIOS_STABLE)=3208b098f51a9ef96d0dfa71d5ec3a3eaec88f0a
|
||||||
TAG-$(CONFIG_SEABIOS_REVISION)=$(CONFIG_SEABIOS_REVISION_ID)
|
TAG-$(CONFIG_SEABIOS_REVISION)=$(CONFIG_SEABIOS_REVISION_ID)
|
||||||
|
|
||||||
project_git_repo=https://review.coreboot.org/seabios.git
|
project_git_repo=https://review.coreboot.org/seabios.git
|
||||||
|
14
payloads/external/edk2/Kconfig
vendored
14
payloads/external/edk2/Kconfig
vendored
@@ -155,6 +155,20 @@ config EDK2_CBMEM_LOGGING
|
|||||||
this option, especially if using a debug (vs release) build.
|
this option, especially if using a debug (vs release) build.
|
||||||
Selecting this option will increase the payload size in CBFS by 0x10000.
|
Selecting this option will increase the payload size in CBFS by 0x10000.
|
||||||
|
|
||||||
|
config EDK2_CPU_TIMER_LIB
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
For recent Intel and AMD CPUs, the 0x15 CPUID instruction will return Time
|
||||||
|
Stamp Counter Frequence. For CPUs that do not support this instruction,
|
||||||
|
EDK2 must include a different library which is the reason why this must be
|
||||||
|
configured at build time.
|
||||||
|
|
||||||
|
If this is enabled, and the CPU doesn't support 0x15, it will fail to
|
||||||
|
boot. If it is not enabled, and the CPU does support 0x15, it will still
|
||||||
|
boot but without support for the leaf. Consequently, it is disabled by
|
||||||
|
default.
|
||||||
|
|
||||||
config EDK2_FOLLOW_BGRT_SPEC
|
config EDK2_FOLLOW_BGRT_SPEC
|
||||||
bool "Center logo 38.2% from the top of screen"
|
bool "Center logo 38.2% from the top of screen"
|
||||||
default n
|
default n
|
||||||
|
14
payloads/external/edk2/Makefile
vendored
14
payloads/external/edk2/Makefile
vendored
@@ -8,6 +8,8 @@ export WORKSPACE := $(CURDIR)/workspace
|
|||||||
export EDK2_PATH := $(WORKSPACE)/$(word 3,$(subst /, ,$(CONFIG_EDK2_REPOSITORY)))
|
export EDK2_PATH := $(WORKSPACE)/$(word 3,$(subst /, ,$(CONFIG_EDK2_REPOSITORY)))
|
||||||
export PACKAGES_PATH := $(EDK2_PATH)
|
export PACKAGES_PATH := $(EDK2_PATH)
|
||||||
|
|
||||||
|
OBJCOPY = $(GCC_PREFIX)objcopy
|
||||||
|
|
||||||
ifeq ($(CONFIG_EDK2_UEFIPAYLOAD),y)
|
ifeq ($(CONFIG_EDK2_UEFIPAYLOAD),y)
|
||||||
BUILD_STR = -p UefiPayloadPkg/UefiPayloadPkg.dsc
|
BUILD_STR = -p UefiPayloadPkg/UefiPayloadPkg.dsc
|
||||||
endif
|
endif
|
||||||
@@ -44,6 +46,12 @@ RELEASE_STR = DEBUG
|
|||||||
else
|
else
|
||||||
RELEASE_STR = RELEASE
|
RELEASE_STR = RELEASE
|
||||||
endif
|
endif
|
||||||
|
# CPU_TIMER_LIB_ENABLE = TRUE
|
||||||
|
ifneq ($(CONFIG_EDK2_CPU_TIMER_LIB),y)
|
||||||
|
BUILD_STR += -D CPU_TIMER_LIB_ENABLE=FALSE
|
||||||
|
else
|
||||||
|
BUILD_STR += --pcd gUefiCpuPkgTokenSpaceGuid.PcdCpuCoreCrystalClockFrequency=$(CONFIG_CPU_XTAL_HZ)
|
||||||
|
endif
|
||||||
# DISABLE_SERIAL_TERMINAL = FALSE
|
# DISABLE_SERIAL_TERMINAL = FALSE
|
||||||
ifneq ($(CONFIG_EDK2_SERIAL_SUPPORT),y)
|
ifneq ($(CONFIG_EDK2_SERIAL_SUPPORT),y)
|
||||||
BUILD_STR += -D DISABLE_SERIAL_TERMINAL=TRUE
|
BUILD_STR += -D DISABLE_SERIAL_TERMINAL=TRUE
|
||||||
@@ -229,10 +237,14 @@ UefiPayloadPkg: $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/
|
|||||||
mv $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/UEFIPAYLOAD.fd \
|
mv $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/FV/UEFIPAYLOAD.fd \
|
||||||
../../../build/UEFIPAYLOAD.fd
|
../../../build/UEFIPAYLOAD.fd
|
||||||
|
|
||||||
|
UniversalPayload: $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/IA32/UefiPayloadPkg/ShimLayer/ShimLayer/DEBUG/ShimLayer.dll
|
||||||
|
mv $(WORKSPACE)/Build/UefiPayloadPkgX64/$(RELEASE_STR)_COREBOOT/IA32/UefiPayloadPkg/ShimLayer/ShimLayer/DEBUG/ShimLayer.dll \
|
||||||
|
../../../build/ShimmedUniversalPayload.elf
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
test -d $(WORKSPACE) && (cd $(WORKSPACE); rm -rf Build; rm -f Conf/tools_def.txt) || exit 0
|
test -d $(WORKSPACE) && (cd $(WORKSPACE); rm -rf Build; rm -f Conf/tools_def.txt) || exit 0
|
||||||
|
|
||||||
distclean:
|
distclean:
|
||||||
rm -rf $(WORKSPACE)
|
rm -rf $(WORKSPACE)
|
||||||
|
|
||||||
.PHONY: $(EDK2_PATH) checktools logo UefiPayloadPkg clean distclean
|
.PHONY: $(EDK2_PATH) checktools logo UefiPayloadPkg UniversalPayload clean distclean
|
||||||
|
@@ -93,7 +93,7 @@ int init_x86rom_cbfs_media(struct cbfs_media *media) {
|
|||||||
media->context = (void*)romsize;
|
media->context = (void*)romsize;
|
||||||
#if CONFIG(LP_ROM_SIZE)
|
#if CONFIG(LP_ROM_SIZE)
|
||||||
if (CONFIG_LP_ROM_SIZE != romsize)
|
if (CONFIG_LP_ROM_SIZE != romsize)
|
||||||
printk(BIOS_INFO, "Warning: rom size unmatch (%d/%d)\n",
|
printk(BIOS_WARNING, "rom size unmatch (%d/%d)\n",
|
||||||
CONFIG_LP_ROM_SIZE, romsize);
|
CONFIG_LP_ROM_SIZE, romsize);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@@ -72,9 +72,9 @@ static void serial_write_reg(uint8_t val, int offset)
|
|||||||
static void serial_hardware_init(int speed, int word_bits,
|
static void serial_hardware_init(int speed, int word_bits,
|
||||||
int parity, int stop_bits)
|
int parity, int stop_bits)
|
||||||
{
|
{
|
||||||
|
#if !CONFIG(LP_PL011_SERIAL_CONSOLE)
|
||||||
unsigned char reg;
|
unsigned char reg;
|
||||||
|
|
||||||
#if !CONFIG(LP_PL011_SERIAL_CONSOLE)
|
|
||||||
/* Disable interrupts. */
|
/* Disable interrupts. */
|
||||||
serial_write_reg(0, 0x01);
|
serial_write_reg(0, 0x01);
|
||||||
|
|
||||||
|
@@ -502,7 +502,7 @@ static void complete_ep_transfer(struct usbdev_ctrl *this, int endpoint,
|
|||||||
}
|
}
|
||||||
SIMPLEQ_REMOVE_HEAD(&p->eps[endpoint][in_dir].job_queue, queue);
|
SIMPLEQ_REMOVE_HEAD(&p->eps[endpoint][in_dir].job_queue, queue);
|
||||||
|
|
||||||
usb_debug("%d-%d: scheduled %zd, now %d bytes\n", endpoint, in_dir,
|
usb_debug("%d-%d: scheduled %zd, now %zd bytes\n", endpoint, in_dir,
|
||||||
job->length, job->xfered_length);
|
job->length, job->xfered_length);
|
||||||
|
|
||||||
if (this->current_config &&
|
if (this->current_config &&
|
||||||
|
@@ -191,14 +191,6 @@ struct cb_serial {
|
|||||||
* decisions as to which dividers to select and their values
|
* decisions as to which dividers to select and their values
|
||||||
* to eventually arrive at the desired console baud-rate. */
|
* to eventually arrive at the desired console baud-rate. */
|
||||||
u32 input_hertz;
|
u32 input_hertz;
|
||||||
|
|
||||||
/* UART PCI address: bus, device, function
|
|
||||||
* 1 << 31 - Valid bit, PCI UART in use
|
|
||||||
* Bus << 20
|
|
||||||
* Device << 15
|
|
||||||
* Function << 12
|
|
||||||
*/
|
|
||||||
u32 uart_pci_addr;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cb_console {
|
struct cb_console {
|
||||||
|
@@ -206,7 +206,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
// Datasheet Revision: Rev. 1.0 Dec. 2021
|
// Datasheet Revision: Rev. 1.0 Dec. 2021
|
||||||
"name": "H5AG36EXNDX019",
|
"name": "H5AG36EXNDX017",
|
||||||
"attribs": {
|
"attribs": {
|
||||||
"speedMTps": 3200,
|
"speedMTps": 3200,
|
||||||
"CL_nRCD_nRP": 22,
|
"CL_nRCD_nRP": 22,
|
||||||
|
@@ -17,7 +17,7 @@ H5AN8G6NCJR-XNC,spd-1.hex
|
|||||||
K4AAG165WA-BCTD,spd-8.hex
|
K4AAG165WA-BCTD,spd-8.hex
|
||||||
H5ANAG6NDMR-XNC,spd-2.hex
|
H5ANAG6NDMR-XNC,spd-2.hex
|
||||||
H5ANAG6NCJR-XNC,spd-9.hex
|
H5ANAG6NCJR-XNC,spd-9.hex
|
||||||
H5AG36EXNDX019,spd-1.hex
|
H5AG36EXNDX017,spd-1.hex
|
||||||
K4AAG165WB-BCWE,spd-9.hex
|
K4AAG165WB-BCWE,spd-9.hex
|
||||||
MT40A1G16RC-062E:B,spd-9.hex
|
MT40A1G16RC-062E:B,spd-9.hex
|
||||||
MT40A512M16TB-062E:R,spd-1.hex
|
MT40A512M16TB-062E:R,spd-1.hex
|
||||||
|
@@ -175,6 +175,16 @@
|
|||||||
"speedMbps": 7500,
|
"speedMbps": 7500,
|
||||||
"lp5x": true
|
"lp5x": true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "H9JCNNNFA5MLYR-N6E",
|
||||||
|
"attribs": {
|
||||||
|
"densityPerDieGb": 8,
|
||||||
|
"diesPerPackage": 8,
|
||||||
|
"bitWidthPerChannel": 8,
|
||||||
|
"ranksPerChannel": 2,
|
||||||
|
"speedMbps": 6400
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -18,3 +18,4 @@ K3KL8L80CM-MGCT,spd-7.hex
|
|||||||
K3KL9L90CM-MGCT,spd-8.hex
|
K3KL9L90CM-MGCT,spd-8.hex
|
||||||
H58G66BK7BX067,spd-8.hex
|
H58G66BK7BX067,spd-8.hex
|
||||||
H58G56BK7BX068,spd-7.hex
|
H58G56BK7BX068,spd-7.hex
|
||||||
|
H9JCNNNFA5MLYR-N6E,spd-4.hex
|
||||||
|
32
spd/lp5/set-0/spd-9.hex
Normal file
32
spd/lp5/set-0/spd-9.hex
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
23 10 13 0E 15 1A F9 08 00 00 00 00 0A 01 00 00
|
||||||
|
00 00 0A 00 00 00 00 00 AA 00 90 A8 90 90 06 C0
|
||||||
|
03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20
|
||||||
|
20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
@@ -18,3 +18,4 @@ K3KL8L80CM-MGCT,spd-7.hex
|
|||||||
K3KL9L90CM-MGCT,spd-8.hex
|
K3KL9L90CM-MGCT,spd-8.hex
|
||||||
H58G66BK7BX067,spd-8.hex
|
H58G66BK7BX067,spd-8.hex
|
||||||
H58G56BK7BX068,spd-7.hex
|
H58G56BK7BX068,spd-7.hex
|
||||||
|
H9JCNNNFA5MLYR-N6E,spd-4.hex
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
23 11 15 0E 86 21 95 18 00 40 00 00 02 02 00 00
|
23 11 13 0E 86 21 95 18 00 40 00 00 02 02 00 00
|
||||||
00 00 03 00 00 00 00 00 2B 00 90 A8 90 C0 08 60
|
00 00 03 00 00 00 00 00 2B 00 90 A8 90 C0 08 60
|
||||||
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
23 11 15 0E 86 21 B5 18 00 40 00 00 0A 02 00 00
|
23 11 13 0E 86 21 B5 18 00 40 00 00 0A 02 00 00
|
||||||
00 00 03 00 00 00 00 00 2B 00 90 A8 90 C0 08 60
|
00 00 03 00 00 00 00 00 2B 00 90 A8 90 C0 08 60
|
||||||
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
32
spd/lp5/set-1/spd-9.hex
Normal file
32
spd/lp5/set-1/spd-9.hex
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
23 11 13 0E 85 19 F9 18 00 40 00 00 0A 02 00 00
|
||||||
|
00 00 03 00 00 00 00 00 2B 00 90 A8 90 90 06 C0
|
||||||
|
03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 B9 00 C1 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20
|
||||||
|
20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
64
src/Kconfig
64
src/Kconfig
@@ -170,23 +170,47 @@ config STATIC_OPTION_TABLE
|
|||||||
every boot. Use this if you want the NVRAM configuration to
|
every boot. Use this if you want the NVRAM configuration to
|
||||||
never be modified from its default values.
|
never be modified from its default values.
|
||||||
|
|
||||||
config COMPRESS_RAMSTAGE
|
config MB_COMPRESS_RAMSTAGE_LZ4
|
||||||
bool "Compress ramstage with LZMA"
|
bool
|
||||||
depends on HAVE_RAMSTAGE
|
|
||||||
# Default value set at the end of the file
|
|
||||||
help
|
help
|
||||||
Compress ramstage to save memory in the flash image.
|
Select this in a mainboard to use LZ4 compression by default
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "Ramstage compression"
|
||||||
|
depends on HAVE_RAMSTAGE && !UNCOMPRESSED_RAMSTAGE
|
||||||
|
default COMPRESS_RAMSTAGE_LZ4 if MB_COMPRESS_RAMSTAGE_LZ4
|
||||||
|
default COMPRESS_RAMSTAGE_LZMA
|
||||||
|
|
||||||
|
config COMPRESS_RAMSTAGE_LZMA
|
||||||
|
bool "Compress ramstage with LZMA"
|
||||||
|
help
|
||||||
|
Compress ramstage with LZMA to save memory in the flash image.
|
||||||
|
|
||||||
|
config COMPRESS_RAMSTAGE_LZ4
|
||||||
|
bool "Compress ramstage with LZ4"
|
||||||
|
help
|
||||||
|
LZ4 doesn't give as good compression as LZMA, but decompresses much
|
||||||
|
faster. For large binaries such as ramstage, it's typically best to
|
||||||
|
use LZMA, but there can be cases where the faster decompression of
|
||||||
|
LZ4 can lead to a faster boot time. Testing on each individual board
|
||||||
|
is typically going to be needed due to the large number of factors
|
||||||
|
that can influence the decision. Binary size, CPU speed, ROM read
|
||||||
|
speed, cache, and other factors all play a part.
|
||||||
|
|
||||||
|
If you're not sure, stick with LZMA.
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
config COMPRESS_PRERAM_STAGES
|
config COMPRESS_PRERAM_STAGES
|
||||||
bool "Compress romstage and verstage with LZ4"
|
bool "Compress romstage and verstage with LZ4"
|
||||||
depends on !ARCH_X86 && (HAVE_ROMSTAGE || HAVE_VERSTAGE)
|
depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
|
||||||
# Default value set at the end of the file
|
# Default value set at the end of the file
|
||||||
help
|
help
|
||||||
Compress romstage and (if it exists) verstage with LZ4 to save flash
|
Compress romstage and (if it exists) verstage with LZ4 to save flash
|
||||||
space and speed up boot, since the time for reading the image from SPI
|
space and speed up boot, since the time for reading the image from SPI
|
||||||
(and in the vboot case verifying it) is usually much greater than the
|
(and in the vboot case verifying it) is usually much greater than the
|
||||||
time spent decompressing. Doesn't work for XIP stages (assume all
|
time spent decompressing. Doesn't work for XIP stages for obvious
|
||||||
ARCH_X86 for now) for obvious reasons.
|
reasons.
|
||||||
|
|
||||||
config COMPRESS_BOOTBLOCK
|
config COMPRESS_BOOTBLOCK
|
||||||
bool
|
bool
|
||||||
@@ -211,9 +235,9 @@ config INCLUDE_CONFIG_FILE
|
|||||||
|
|
||||||
Saying Y here will increase the image size by 2-3KB.
|
Saying Y here will increase the image size by 2-3KB.
|
||||||
|
|
||||||
You can use the following command to easily list the options:
|
You can then use cbfstool to extract the config from a final image:
|
||||||
|
|
||||||
grep -a CONFIG_ coreboot.rom
|
cbfstool coreboot.rom extract -n config -f <output file path>
|
||||||
|
|
||||||
Alternatively, you can also use cbfstool to print the image
|
Alternatively, you can also use cbfstool to print the image
|
||||||
contents (including the raw 'config' item we're looking for).
|
contents (including the raw 'config' item we're looking for).
|
||||||
@@ -347,7 +371,7 @@ endif
|
|||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Stage Cache for ACPI S3 resume"
|
prompt "Stage Cache for ACPI S3 resume"
|
||||||
default NO_STAGE_CACHE if !HAVE_ACPI_RESUME
|
default NO_STAGE_CACHE if !HAVE_ACPI_RESUME || MAINBOARD_DISABLE_STAGE_CACHE
|
||||||
default TSEG_STAGE_CACHE if SMM_TSEG
|
default TSEG_STAGE_CACHE if SMM_TSEG
|
||||||
|
|
||||||
config NO_STAGE_CACHE
|
config NO_STAGE_CACHE
|
||||||
@@ -380,6 +404,13 @@ config CBMEM_STAGE_CACHE
|
|||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
config MAINBOARD_DISABLE_STAGE_CACHE
|
||||||
|
bool
|
||||||
|
help
|
||||||
|
Selected by mainboards which wish to disable the stage cache.
|
||||||
|
E.g. mainboards which don't use S3 resume in the field may wish to
|
||||||
|
disable it to save boot time at the cost of increasing S3 resume time.
|
||||||
|
|
||||||
config UPDATE_IMAGE
|
config UPDATE_IMAGE
|
||||||
bool "Update existing coreboot.rom image"
|
bool "Update existing coreboot.rom image"
|
||||||
help
|
help
|
||||||
@@ -715,7 +746,7 @@ config TIMER_QUEUE
|
|||||||
config COOP_MULTITASKING
|
config COOP_MULTITASKING
|
||||||
def_bool n
|
def_bool n
|
||||||
select TIMER_QUEUE
|
select TIMER_QUEUE
|
||||||
depends on ARCH_X86 && CPU_INFO_V2
|
depends on ARCH_X86
|
||||||
help
|
help
|
||||||
Cooperative multitasking allows callbacks to be multiplexed on the
|
Cooperative multitasking allows callbacks to be multiplexed on the
|
||||||
main thread. With this enabled it allows for multiple execution paths
|
main thread. With this enabled it allows for multiple execution paths
|
||||||
@@ -795,9 +826,9 @@ config ACPI_NHLT
|
|||||||
menu "System tables"
|
menu "System tables"
|
||||||
|
|
||||||
config GENERATE_MP_TABLE
|
config GENERATE_MP_TABLE
|
||||||
prompt "Generate an MP table" if HAVE_MP_TABLE || DRIVERS_GENERIC_IOAPIC
|
prompt "Generate an MP table" if HAVE_MP_TABLE
|
||||||
bool
|
bool
|
||||||
default HAVE_MP_TABLE || DRIVERS_GENERIC_IOAPIC
|
default HAVE_MP_TABLE
|
||||||
help
|
help
|
||||||
Generate an MP table (conforming to the Intel MultiProcessor
|
Generate an MP table (conforming to the Intel MultiProcessor
|
||||||
specification 1.4) for this board.
|
specification 1.4) for this board.
|
||||||
@@ -1372,11 +1403,8 @@ config MEMLAYOUT_LD_FILE
|
|||||||
# Set default values for symbols created before mainboards. This allows the
|
# Set default values for symbols created before mainboards. This allows the
|
||||||
# option to be displayed in the general menu, but the default to be loaded in
|
# option to be displayed in the general menu, but the default to be loaded in
|
||||||
# the mainboard if desired.
|
# the mainboard if desired.
|
||||||
config COMPRESS_RAMSTAGE
|
|
||||||
default y if !UNCOMPRESSED_RAMSTAGE
|
|
||||||
|
|
||||||
config COMPRESS_PRERAM_STAGES
|
config COMPRESS_PRERAM_STAGES
|
||||||
depends on !ARCH_X86
|
depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config INCLUDE_CONFIG_FILE
|
config INCLUDE_CONFIG_FILE
|
||||||
|
@@ -8,7 +8,7 @@ config ACPI_AMD_HARDWARE_SLEEP_VALUES
|
|||||||
|
|
||||||
config ACPI_CPU_STRING
|
config ACPI_CPU_STRING
|
||||||
string
|
string
|
||||||
default "\\_SB.CP%02d"
|
default "\\_SB.CP%02X"
|
||||||
depends on HAVE_ACPI_TABLES
|
depends on HAVE_ACPI_TABLES
|
||||||
help
|
help
|
||||||
Sets the ACPI name string in the processor scope as written by
|
Sets the ACPI name string in the processor scope as written by
|
||||||
@@ -30,6 +30,11 @@ config ACPI_SOC_NVS
|
|||||||
Set to indicate <soc/nvs.h> exists for the platform with a definition
|
Set to indicate <soc/nvs.h> exists for the platform with a definition
|
||||||
for global_nvs.
|
for global_nvs.
|
||||||
|
|
||||||
|
config ACPI_NO_MADT
|
||||||
|
bool
|
||||||
|
help
|
||||||
|
Selected by platforms that don't expose a useful MADT.
|
||||||
|
|
||||||
config ACPI_NO_PCAT_8259
|
config ACPI_NO_PCAT_8259
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
193
src/acpi/acpi.c
193
src/acpi/acpi.c
@@ -30,6 +30,10 @@
|
|||||||
#include <types.h>
|
#include <types.h>
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
|
|
||||||
|
#if ENV_X86
|
||||||
|
#include <arch/ioapic.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
static acpi_rsdp_t *valid_rsdp(acpi_rsdp_t *rsdp);
|
static acpi_rsdp_t *valid_rsdp(acpi_rsdp_t *rsdp);
|
||||||
|
|
||||||
u8 acpi_checksum(u8 *table, u32 length)
|
u8 acpi_checksum(u8 *table, u32 length)
|
||||||
@@ -180,6 +184,22 @@ int acpi_create_madt_ioapic(acpi_madt_ioapic_t *ioapic, u8 id, u32 addr,
|
|||||||
return ioapic->length;
|
return ioapic->length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if ENV_X86
|
||||||
|
/* For a system with multiple I/O APICs it's required that the one potentially
|
||||||
|
routing i8259 via ExtNMI delivery calls this first to get GSI #0. */
|
||||||
|
int acpi_create_madt_ioapic_from_hw(acpi_madt_ioapic_t *ioapic, u32 addr)
|
||||||
|
{
|
||||||
|
static u32 gsi_base;
|
||||||
|
u32 my_base;
|
||||||
|
u8 id = get_ioapic_id((void *)(uintptr_t)addr);
|
||||||
|
u8 count = ioapic_get_max_vectors((void *)(uintptr_t)addr);
|
||||||
|
|
||||||
|
my_base = gsi_base;
|
||||||
|
gsi_base += count;
|
||||||
|
return acpi_create_madt_ioapic(ioapic, id, addr, my_base);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int acpi_create_madt_irqoverride(acpi_madt_irqoverride_t *irqoverride,
|
int acpi_create_madt_irqoverride(acpi_madt_irqoverride_t *irqoverride,
|
||||||
u8 bus, u8 source, u32 gsirq, u16 flags)
|
u8 bus, u8 source, u32 gsirq, u16 flags)
|
||||||
{
|
{
|
||||||
@@ -220,6 +240,24 @@ int acpi_create_madt_lx2apic_nmi(acpi_madt_lx2apic_nmi_t *lapic_nmi, u32 cpu,
|
|||||||
return lapic_nmi->length;
|
return lapic_nmi->length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long acpi_create_madt_lapics_with_nmis(unsigned long current)
|
||||||
|
{
|
||||||
|
const u16 flags = MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH;
|
||||||
|
|
||||||
|
current = acpi_create_madt_lapics(current);
|
||||||
|
|
||||||
|
/* 1: LINT1 connect to NMI */
|
||||||
|
/* create all subtables for processors */
|
||||||
|
current += acpi_create_madt_lapic_nmi((acpi_madt_lapic_nmi_t *)current,
|
||||||
|
ACPI_MADT_LAPIC_NMI_ALL_PROCESSORS, flags, 1);
|
||||||
|
|
||||||
|
if (!CONFIG(XAPIC_ONLY))
|
||||||
|
current += acpi_create_madt_lx2apic_nmi((acpi_madt_lx2apic_nmi_t *)current,
|
||||||
|
ACPI_MADT_LX2APIC_NMI_ALL_PROCESSORS, flags, 1);
|
||||||
|
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
|
||||||
void acpi_create_madt(acpi_madt_t *madt)
|
void acpi_create_madt(acpi_madt_t *madt)
|
||||||
{
|
{
|
||||||
acpi_header_t *header = &(madt->header);
|
acpi_header_t *header = &(madt->header);
|
||||||
@@ -244,7 +282,8 @@ void acpi_create_madt(acpi_madt_t *madt)
|
|||||||
if (CONFIG(ACPI_HAVE_PCAT_8259))
|
if (CONFIG(ACPI_HAVE_PCAT_8259))
|
||||||
madt->flags |= 1;
|
madt->flags |= 1;
|
||||||
|
|
||||||
current = acpi_fill_madt(current);
|
if (!CONFIG(ACPI_NO_MADT))
|
||||||
|
current = acpi_fill_madt(current);
|
||||||
|
|
||||||
/* (Re)calculate length and checksum. */
|
/* (Re)calculate length and checksum. */
|
||||||
header->length = current - (unsigned long)madt;
|
header->length = current - (unsigned long)madt;
|
||||||
@@ -341,7 +380,7 @@ static void acpi_create_tcpa(acpi_tcpa_t *tcpa)
|
|||||||
|
|
||||||
tcpa->platform_class = 0;
|
tcpa->platform_class = 0;
|
||||||
tcpa->laml = tcpa_log_len;
|
tcpa->laml = tcpa_log_len;
|
||||||
tcpa->lasa = (uintptr_t) lasa;
|
tcpa->lasa = (uintptr_t)lasa;
|
||||||
|
|
||||||
/* Calculate checksum. */
|
/* Calculate checksum. */
|
||||||
header->checksum = acpi_checksum((void *)tcpa, header->length);
|
header->checksum = acpi_checksum((void *)tcpa, header->length);
|
||||||
@@ -416,7 +455,7 @@ static void acpi_create_tpm2(acpi_tpm2_t *tpm2)
|
|||||||
|
|
||||||
/* Fill the log area size and start address fields. */
|
/* Fill the log area size and start address fields. */
|
||||||
tpm2->laml = tpm2_log_len;
|
tpm2->laml = tpm2_log_len;
|
||||||
tpm2->lasa = (uintptr_t) lasa;
|
tpm2->lasa = (uintptr_t)lasa;
|
||||||
|
|
||||||
/* Calculate checksum. */
|
/* Calculate checksum. */
|
||||||
header->checksum = acpi_checksum((void *)tpm2, header->length);
|
header->checksum = acpi_checksum((void *)tpm2, header->length);
|
||||||
@@ -460,7 +499,7 @@ void acpi_create_ssdt_generator(acpi_header_t *ssdt, const char *oem_table_id)
|
|||||||
ssdt->asl_compiler_revision = asl_revision;
|
ssdt->asl_compiler_revision = asl_revision;
|
||||||
ssdt->length = sizeof(acpi_header_t);
|
ssdt->length = sizeof(acpi_header_t);
|
||||||
|
|
||||||
acpigen_set_current((char *) current);
|
acpigen_set_current((char *)current);
|
||||||
|
|
||||||
/* Write object to declare coreboot tables */
|
/* Write object to declare coreboot tables */
|
||||||
acpi_ssdt_write_cbtable();
|
acpi_ssdt_write_cbtable();
|
||||||
@@ -470,7 +509,7 @@ void acpi_create_ssdt_generator(acpi_header_t *ssdt, const char *oem_table_id)
|
|||||||
for (dev = all_devices; dev; dev = dev->next)
|
for (dev = all_devices; dev; dev = dev->next)
|
||||||
if (dev->enabled && dev->ops && dev->ops->acpi_fill_ssdt)
|
if (dev->enabled && dev->ops && dev->ops->acpi_fill_ssdt)
|
||||||
dev->ops->acpi_fill_ssdt(dev);
|
dev->ops->acpi_fill_ssdt(dev);
|
||||||
current = (unsigned long) acpigen_get_current();
|
current = (unsigned long)acpigen_get_current();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (Re)calculate length and checksum. */
|
/* (Re)calculate length and checksum. */
|
||||||
@@ -555,6 +594,90 @@ void acpi_create_srat(acpi_srat_t *srat,
|
|||||||
header->checksum = acpi_checksum((void *)srat, header->length);
|
header->checksum = acpi_checksum((void *)srat, header->length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int acpi_create_cedt_chbs(acpi_cedt_chbs_t *chbs, u32 uid, u32 cxl_ver, u64 base)
|
||||||
|
{
|
||||||
|
memset((void *)chbs, 0, sizeof(acpi_cedt_chbs_t));
|
||||||
|
|
||||||
|
chbs->type = ACPI_CEDT_STRUCTURE_CHBS;
|
||||||
|
chbs->length = sizeof(acpi_cedt_chbs_t);
|
||||||
|
chbs->uid = uid;
|
||||||
|
chbs->cxl_ver = cxl_ver;
|
||||||
|
chbs->base = base;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CXL spec 2.0 section 9.14.1.2 "CXL CHBS"
|
||||||
|
* CXL 1.1 spec compliant host bridge: 8KB
|
||||||
|
* CXL 2.0 spec compliant host bridge: 64KB
|
||||||
|
*/
|
||||||
|
if (cxl_ver == ACPI_CEDT_CHBS_CXL_VER_1_1)
|
||||||
|
chbs->len = 8 * KiB;
|
||||||
|
else if (cxl_ver == ACPI_CEDT_CHBS_CXL_VER_2_0)
|
||||||
|
chbs->len = 64 * KiB;
|
||||||
|
else
|
||||||
|
printk(BIOS_ERR, "ACPI(%s:%s): Incorrect CXL version:%d\n", __FILE__, __func__,
|
||||||
|
cxl_ver);
|
||||||
|
|
||||||
|
return chbs->length;
|
||||||
|
}
|
||||||
|
|
||||||
|
int acpi_create_cedt_cfmws(acpi_cedt_cfmws_t *cfmws, u64 base_hpa, u64 window_size, u8 eniw,
|
||||||
|
u32 hbig, u16 restriction, u16 qtg_id, const u32 *interleave_target)
|
||||||
|
{
|
||||||
|
memset((void *)cfmws, 0, sizeof(acpi_cedt_cfmws_t));
|
||||||
|
|
||||||
|
cfmws->type = ACPI_CEDT_STRUCTURE_CFMWS;
|
||||||
|
|
||||||
|
u8 niw = 0;
|
||||||
|
if (eniw >= 8)
|
||||||
|
printk(BIOS_ERR, "ACPI(%s:%s): Incorrect eniw::%d\n", __FILE__, __func__, eniw);
|
||||||
|
else
|
||||||
|
/* NIW = 2 ** ENIW */
|
||||||
|
niw = 0x1 << eniw;
|
||||||
|
/* 36 + 4 * NIW */
|
||||||
|
cfmws->length = sizeof(acpi_cedt_cfmws_t) + 4 * niw;
|
||||||
|
|
||||||
|
cfmws->base_hpa = base_hpa;
|
||||||
|
cfmws->window_size = window_size;
|
||||||
|
cfmws->eniw = eniw;
|
||||||
|
|
||||||
|
// 0: Standard Modulo Arithmetic. Other values reserved.
|
||||||
|
cfmws->interleave_arithmetic = 0;
|
||||||
|
|
||||||
|
cfmws->hbig = hbig;
|
||||||
|
cfmws->restriction = restriction;
|
||||||
|
cfmws->qtg_id = qtg_id;
|
||||||
|
memcpy(&cfmws->interleave_target, interleave_target, 4 * niw);
|
||||||
|
|
||||||
|
return cfmws->length;
|
||||||
|
}
|
||||||
|
|
||||||
|
void acpi_create_cedt(acpi_cedt_t *cedt, unsigned long (*acpi_fill_cedt)(unsigned long current))
|
||||||
|
{
|
||||||
|
acpi_header_t *header = &(cedt->header);
|
||||||
|
unsigned long current = (unsigned long)cedt + sizeof(acpi_cedt_t);
|
||||||
|
|
||||||
|
memset((void *)cedt, 0, sizeof(acpi_cedt_t));
|
||||||
|
|
||||||
|
if (!header)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Fill out header fields. */
|
||||||
|
memcpy(header->signature, "CEDT", 4);
|
||||||
|
memcpy(header->oem_id, OEM_ID, 6);
|
||||||
|
memcpy(header->oem_table_id, ACPI_TABLE_CREATOR, 8);
|
||||||
|
memcpy(header->asl_compiler_id, ASLC, 4);
|
||||||
|
|
||||||
|
header->asl_compiler_revision = asl_revision;
|
||||||
|
header->length = sizeof(acpi_cedt_t);
|
||||||
|
header->revision = get_acpi_table_revision(CEDT);
|
||||||
|
|
||||||
|
current = acpi_fill_cedt(current);
|
||||||
|
|
||||||
|
/* (Re)calculate length and checksum. */
|
||||||
|
header->length = current - (unsigned long)cedt;
|
||||||
|
header->checksum = acpi_checksum((void *)cedt, header->length);
|
||||||
|
}
|
||||||
|
|
||||||
int acpi_create_hmat_mpda(acpi_hmat_mpda_t *mpda, u32 initiator, u32 memory)
|
int acpi_create_hmat_mpda(acpi_hmat_mpda_t *mpda, u32 initiator, u32 memory)
|
||||||
{
|
{
|
||||||
memset((void *)mpda, 0, sizeof(acpi_hmat_mpda_t));
|
memset((void *)mpda, 0, sizeof(acpi_hmat_mpda_t));
|
||||||
@@ -775,6 +898,14 @@ unsigned long acpi_create_dmar_ds_ioapic(unsigned long current,
|
|||||||
SCOPE_IOAPIC, enumeration_id, bus, dev, fn);
|
SCOPE_IOAPIC, enumeration_id, bus, dev, fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long acpi_create_dmar_ds_ioapic_from_hw(unsigned long current,
|
||||||
|
u32 addr, u8 bus, u8 dev, u8 fn)
|
||||||
|
{
|
||||||
|
u8 enumeration_id = get_ioapic_id((void *)(uintptr_t)addr);
|
||||||
|
return acpi_create_dmar_ds(current,
|
||||||
|
SCOPE_IOAPIC, enumeration_id, bus, dev, fn);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned long acpi_create_dmar_ds_msi_hpet(unsigned long current,
|
unsigned long acpi_create_dmar_ds_msi_hpet(unsigned long current,
|
||||||
u8 enumeration_id, u8 bus, u8 dev, u8 fn)
|
u8 enumeration_id, u8 bus, u8 dev, u8 fn)
|
||||||
{
|
{
|
||||||
@@ -868,7 +999,7 @@ void acpi_create_einj(acpi_einj_t *einj, uintptr_t addr, u8 actions)
|
|||||||
|
|
||||||
printk(BIOS_DEBUG, "%s einj_smi = %p\n", __func__, einj_smi);
|
printk(BIOS_DEBUG, "%s einj_smi = %p\n", __func__, einj_smi);
|
||||||
memset(einj_smi, 0, sizeof(acpi_einj_smi_t));
|
memset(einj_smi, 0, sizeof(acpi_einj_smi_t));
|
||||||
tat = (acpi_einj_trigger_table_t *)(einj_smi + sizeof(acpi_einj_smi_t));
|
tat = (acpi_einj_trigger_table_t *)((uint8_t *)einj_smi + sizeof(acpi_einj_smi_t));
|
||||||
tat->header_size = 16;
|
tat->header_size = 16;
|
||||||
tat->revision = 0;
|
tat->revision = 0;
|
||||||
tat->table_size = sizeof(acpi_einj_trigger_table_t) +
|
tat->table_size = sizeof(acpi_einj_trigger_table_t) +
|
||||||
@@ -966,7 +1097,7 @@ void acpi_create_einj(acpi_einj_t *einj, uintptr_t addr, u8 actions)
|
|||||||
};
|
};
|
||||||
|
|
||||||
einj_smi->err_inj_cap = ACPI_EINJ_DEFAULT_CAP;
|
einj_smi->err_inj_cap = ACPI_EINJ_DEFAULT_CAP;
|
||||||
einj_smi->trigger_action_table = (u64) (uintptr_t)tat;
|
einj_smi->trigger_action_table = (u64)(uintptr_t)tat;
|
||||||
|
|
||||||
for (i = 0; i < ACTION_COUNT; i++)
|
for (i = 0; i < ACTION_COUNT; i++)
|
||||||
printk(BIOS_DEBUG, "default_actions[%d].reg.addr is %llx\n", i,
|
printk(BIOS_DEBUG, "default_actions[%d].reg.addr is %llx\n", i,
|
||||||
@@ -1144,7 +1275,7 @@ unsigned long acpi_write_hpet(const struct device *device, unsigned long current
|
|||||||
*/
|
*/
|
||||||
printk(BIOS_DEBUG, "ACPI: * HPET\n");
|
printk(BIOS_DEBUG, "ACPI: * HPET\n");
|
||||||
|
|
||||||
hpet = (acpi_hpet_t *) current;
|
hpet = (acpi_hpet_t *)current;
|
||||||
current += sizeof(acpi_hpet_t);
|
current += sizeof(acpi_hpet_t);
|
||||||
current = ALIGN_UP(current, 16);
|
current = ALIGN_UP(current, 16);
|
||||||
acpi_create_hpet(hpet);
|
acpi_create_hpet(hpet);
|
||||||
@@ -1390,7 +1521,7 @@ unsigned long acpi_create_hest_error_source(acpi_hest_t *hest,
|
|||||||
case 0: /* MCE */
|
case 0: /* MCE */
|
||||||
break;
|
break;
|
||||||
case 1: /* CMC */
|
case 1: /* CMC */
|
||||||
hen = (acpi_hest_hen_t *) (pos);
|
hen = (acpi_hest_hen_t *)(pos);
|
||||||
memset(pos, 0, sizeof(acpi_hest_hen_t));
|
memset(pos, 0, sizeof(acpi_hest_hen_t));
|
||||||
hen->type = 3; /* SCI? */
|
hen->type = 3; /* SCI? */
|
||||||
hen->length = sizeof(acpi_hest_hen_t);
|
hen->length = sizeof(acpi_hest_hen_t);
|
||||||
@@ -1483,7 +1614,7 @@ void acpi_create_fadt(acpi_fadt_t *fadt, acpi_facs_t *facs, void *dsdt)
|
|||||||
{
|
{
|
||||||
acpi_header_t *header = &(fadt->header);
|
acpi_header_t *header = &(fadt->header);
|
||||||
|
|
||||||
memset((void *) fadt, 0, sizeof(acpi_fadt_t));
|
memset((void *)fadt, 0, sizeof(acpi_fadt_t));
|
||||||
|
|
||||||
if (!header)
|
if (!header)
|
||||||
return;
|
return;
|
||||||
@@ -1497,11 +1628,11 @@ void acpi_create_fadt(acpi_fadt_t *fadt, acpi_facs_t *facs, void *dsdt)
|
|||||||
header->asl_compiler_revision = asl_revision;
|
header->asl_compiler_revision = asl_revision;
|
||||||
|
|
||||||
fadt->FADT_MinorVersion = get_acpi_fadt_minor_version();
|
fadt->FADT_MinorVersion = get_acpi_fadt_minor_version();
|
||||||
fadt->firmware_ctrl = (unsigned long) facs;
|
fadt->firmware_ctrl = (unsigned long)facs;
|
||||||
fadt->x_firmware_ctl_l = (unsigned long)facs;
|
fadt->x_firmware_ctl_l = (unsigned long)facs;
|
||||||
fadt->x_firmware_ctl_h = 0;
|
fadt->x_firmware_ctl_h = 0;
|
||||||
|
|
||||||
fadt->dsdt = (unsigned long) dsdt;
|
fadt->dsdt = (unsigned long)dsdt;
|
||||||
fadt->x_dsdt_l = (unsigned long)dsdt;
|
fadt->x_dsdt_l = (unsigned long)dsdt;
|
||||||
fadt->x_dsdt_h = 0;
|
fadt->x_dsdt_h = 0;
|
||||||
|
|
||||||
@@ -1521,7 +1652,7 @@ void acpi_create_fadt(acpi_fadt_t *fadt, acpi_facs_t *facs, void *dsdt)
|
|||||||
mainboard_fill_fadt(fadt);
|
mainboard_fill_fadt(fadt);
|
||||||
|
|
||||||
header->checksum =
|
header->checksum =
|
||||||
acpi_checksum((void *) fadt, header->length);
|
acpi_checksum((void *)fadt, header->length);
|
||||||
}
|
}
|
||||||
|
|
||||||
void acpi_create_lpit(acpi_lpit_t *lpit)
|
void acpi_create_lpit(acpi_lpit_t *lpit)
|
||||||
@@ -1642,7 +1773,7 @@ unsigned long write_acpi_tables(unsigned long start)
|
|||||||
ssdt->asl_compiler_revision = asl_revision;
|
ssdt->asl_compiler_revision = asl_revision;
|
||||||
ssdt->length = sizeof(acpi_header_t);
|
ssdt->length = sizeof(acpi_header_t);
|
||||||
|
|
||||||
acpigen_set_current((char *) current);
|
acpigen_set_current((char *)current);
|
||||||
|
|
||||||
/* Write object to declare coreboot tables */
|
/* Write object to declare coreboot tables */
|
||||||
acpi_ssdt_write_cbtable();
|
acpi_ssdt_write_cbtable();
|
||||||
@@ -1691,19 +1822,19 @@ unsigned long write_acpi_tables(unsigned long start)
|
|||||||
printk(BIOS_INFO, "ACPI: Writing ACPI tables at %lx.\n", start);
|
printk(BIOS_INFO, "ACPI: Writing ACPI tables at %lx.\n", start);
|
||||||
|
|
||||||
/* We need at least an RSDP and an RSDT Table */
|
/* We need at least an RSDP and an RSDT Table */
|
||||||
rsdp = (acpi_rsdp_t *) current;
|
rsdp = (acpi_rsdp_t *)current;
|
||||||
coreboot_rsdp = (uintptr_t)rsdp;
|
coreboot_rsdp = (uintptr_t)rsdp;
|
||||||
current += sizeof(acpi_rsdp_t);
|
current += sizeof(acpi_rsdp_t);
|
||||||
current = acpi_align_current(current);
|
current = acpi_align_current(current);
|
||||||
rsdt = (acpi_rsdt_t *) current;
|
rsdt = (acpi_rsdt_t *)current;
|
||||||
current += sizeof(acpi_rsdt_t);
|
current += sizeof(acpi_rsdt_t);
|
||||||
current = acpi_align_current(current);
|
current = acpi_align_current(current);
|
||||||
xsdt = (acpi_xsdt_t *) current;
|
xsdt = (acpi_xsdt_t *)current;
|
||||||
current += sizeof(acpi_xsdt_t);
|
current += sizeof(acpi_xsdt_t);
|
||||||
current = acpi_align_current(current);
|
current = acpi_align_current(current);
|
||||||
|
|
||||||
/* clear all table memory */
|
/* clear all table memory */
|
||||||
memset((void *) start, 0, current - start);
|
memset((void *)start, 0, current - start);
|
||||||
|
|
||||||
acpi_write_rsdp(rsdp, rsdt, xsdt, oem_id);
|
acpi_write_rsdp(rsdp, rsdt, xsdt, oem_id);
|
||||||
acpi_write_rsdt(rsdt, oem_id, oem_table_id);
|
acpi_write_rsdt(rsdt, oem_id, oem_table_id);
|
||||||
@@ -1711,18 +1842,18 @@ unsigned long write_acpi_tables(unsigned long start)
|
|||||||
|
|
||||||
printk(BIOS_DEBUG, "ACPI: * FACS\n");
|
printk(BIOS_DEBUG, "ACPI: * FACS\n");
|
||||||
current = ALIGN_UP(current, 64);
|
current = ALIGN_UP(current, 64);
|
||||||
facs = (acpi_facs_t *) current;
|
facs = (acpi_facs_t *)current;
|
||||||
current += sizeof(acpi_facs_t);
|
current += sizeof(acpi_facs_t);
|
||||||
current = acpi_align_current(current);
|
current = acpi_align_current(current);
|
||||||
acpi_create_facs(facs);
|
acpi_create_facs(facs);
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "ACPI: * DSDT\n");
|
printk(BIOS_DEBUG, "ACPI: * DSDT\n");
|
||||||
dsdt = (acpi_header_t *) current;
|
dsdt = (acpi_header_t *)current;
|
||||||
memcpy(dsdt, dsdt_file, sizeof(acpi_header_t));
|
memcpy(dsdt, dsdt_file, sizeof(acpi_header_t));
|
||||||
if (dsdt->length >= sizeof(acpi_header_t)) {
|
if (dsdt->length >= sizeof(acpi_header_t)) {
|
||||||
current += sizeof(acpi_header_t);
|
current += sizeof(acpi_header_t);
|
||||||
|
|
||||||
acpigen_set_current((char *) current);
|
acpigen_set_current((char *)current);
|
||||||
|
|
||||||
if (CONFIG(ACPI_SOC_NVS))
|
if (CONFIG(ACPI_SOC_NVS))
|
||||||
acpi_fill_gnvs();
|
acpi_fill_gnvs();
|
||||||
@@ -1732,7 +1863,7 @@ unsigned long write_acpi_tables(unsigned long start)
|
|||||||
for (dev = all_devices; dev; dev = dev->next)
|
for (dev = all_devices; dev; dev = dev->next)
|
||||||
if (dev->ops && dev->ops->acpi_inject_dsdt)
|
if (dev->ops && dev->ops->acpi_inject_dsdt)
|
||||||
dev->ops->acpi_inject_dsdt(dev);
|
dev->ops->acpi_inject_dsdt(dev);
|
||||||
current = (unsigned long) acpigen_get_current();
|
current = (unsigned long)acpigen_get_current();
|
||||||
memcpy((char *)current,
|
memcpy((char *)current,
|
||||||
(char *)dsdt_file + sizeof(acpi_header_t),
|
(char *)dsdt_file + sizeof(acpi_header_t),
|
||||||
dsdt->length - sizeof(acpi_header_t));
|
dsdt->length - sizeof(acpi_header_t));
|
||||||
@@ -1747,7 +1878,7 @@ unsigned long write_acpi_tables(unsigned long start)
|
|||||||
current = acpi_align_current(current);
|
current = acpi_align_current(current);
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "ACPI: * FADT\n");
|
printk(BIOS_DEBUG, "ACPI: * FADT\n");
|
||||||
fadt = (acpi_fadt_t *) current;
|
fadt = (acpi_fadt_t *)current;
|
||||||
current += sizeof(acpi_fadt_t);
|
current += sizeof(acpi_fadt_t);
|
||||||
current = acpi_align_current(current);
|
current = acpi_align_current(current);
|
||||||
|
|
||||||
@@ -1773,7 +1904,7 @@ unsigned long write_acpi_tables(unsigned long start)
|
|||||||
}
|
}
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "ACPI: * MCFG\n");
|
printk(BIOS_DEBUG, "ACPI: * MCFG\n");
|
||||||
mcfg = (acpi_mcfg_t *) current;
|
mcfg = (acpi_mcfg_t *)current;
|
||||||
acpi_create_mcfg(mcfg);
|
acpi_create_mcfg(mcfg);
|
||||||
if (mcfg->header.length > sizeof(acpi_mcfg_t)) {
|
if (mcfg->header.length > sizeof(acpi_mcfg_t)) {
|
||||||
current += mcfg->header.length;
|
current += mcfg->header.length;
|
||||||
@@ -1783,7 +1914,7 @@ unsigned long write_acpi_tables(unsigned long start)
|
|||||||
|
|
||||||
if (CONFIG(TPM1)) {
|
if (CONFIG(TPM1)) {
|
||||||
printk(BIOS_DEBUG, "ACPI: * TCPA\n");
|
printk(BIOS_DEBUG, "ACPI: * TCPA\n");
|
||||||
tcpa = (acpi_tcpa_t *) current;
|
tcpa = (acpi_tcpa_t *)current;
|
||||||
acpi_create_tcpa(tcpa);
|
acpi_create_tcpa(tcpa);
|
||||||
if (tcpa->header.length >= sizeof(acpi_tcpa_t)) {
|
if (tcpa->header.length >= sizeof(acpi_tcpa_t)) {
|
||||||
current += tcpa->header.length;
|
current += tcpa->header.length;
|
||||||
@@ -1794,7 +1925,7 @@ unsigned long write_acpi_tables(unsigned long start)
|
|||||||
|
|
||||||
if (CONFIG(TPM2)) {
|
if (CONFIG(TPM2)) {
|
||||||
printk(BIOS_DEBUG, "ACPI: * TPM2\n");
|
printk(BIOS_DEBUG, "ACPI: * TPM2\n");
|
||||||
tpm2 = (acpi_tpm2_t *) current;
|
tpm2 = (acpi_tpm2_t *)current;
|
||||||
acpi_create_tpm2(tpm2);
|
acpi_create_tpm2(tpm2);
|
||||||
if (tpm2->header.length >= sizeof(acpi_tpm2_t)) {
|
if (tpm2->header.length >= sizeof(acpi_tpm2_t)) {
|
||||||
current += tpm2->header.length;
|
current += tpm2->header.length;
|
||||||
@@ -1817,7 +1948,7 @@ unsigned long write_acpi_tables(unsigned long start)
|
|||||||
|
|
||||||
printk(BIOS_DEBUG, "ACPI: * MADT\n");
|
printk(BIOS_DEBUG, "ACPI: * MADT\n");
|
||||||
|
|
||||||
madt = (acpi_madt_t *) current;
|
madt = (acpi_madt_t *)current;
|
||||||
acpi_create_madt(madt);
|
acpi_create_madt(madt);
|
||||||
if (madt->header.length > sizeof(acpi_madt_t)) {
|
if (madt->header.length > sizeof(acpi_madt_t)) {
|
||||||
current += madt->header.length;
|
current += madt->header.length;
|
||||||
@@ -1829,7 +1960,7 @@ unsigned long write_acpi_tables(unsigned long start)
|
|||||||
if (CONFIG(ACPI_BERT)) {
|
if (CONFIG(ACPI_BERT)) {
|
||||||
void *region;
|
void *region;
|
||||||
size_t size;
|
size_t size;
|
||||||
bert = (acpi_bert_t *) current;
|
bert = (acpi_bert_t *)current;
|
||||||
if (acpi_soc_get_bert_region(®ion, &size) == CB_SUCCESS) {
|
if (acpi_soc_get_bert_region(®ion, &size) == CB_SUCCESS) {
|
||||||
printk(BIOS_DEBUG, "ACPI: * BERT\n");
|
printk(BIOS_DEBUG, "ACPI: * BERT\n");
|
||||||
acpi_write_bert(bert, (uintptr_t)region, size);
|
acpi_write_bert(bert, (uintptr_t)region, size);
|
||||||
@@ -1962,8 +2093,8 @@ int get_acpi_table_revision(enum acpi_tables table)
|
|||||||
return 4;
|
return 4;
|
||||||
case SSDT: /* ACPI 3.0 up to 6.3: 2 */
|
case SSDT: /* ACPI 3.0 up to 6.3: 2 */
|
||||||
return 2;
|
return 2;
|
||||||
case SRAT: /* ACPI 2.0: 1, ACPI 3.0: 2, ACPI 4.0 up to 6.3: 3 */
|
case SRAT: /* ACPI 2.0: 1, ACPI 3.0: 2, ACPI 4.0 up to 6.4: 3 */
|
||||||
return 1; /* TODO Should probably be upgraded to 2 */
|
return 3;
|
||||||
case HMAT: /* ACPI 6.4: 2 */
|
case HMAT: /* ACPI 6.4: 2 */
|
||||||
return 2;
|
return 2;
|
||||||
case DMAR:
|
case DMAR:
|
||||||
@@ -1996,6 +2127,8 @@ int get_acpi_table_revision(enum acpi_tables table)
|
|||||||
return 5;
|
return 5;
|
||||||
case BERT:
|
case BERT:
|
||||||
return 1;
|
return 1;
|
||||||
|
case CEDT: /* CXL 3.0 section 9.17.1 */
|
||||||
|
return 1;
|
||||||
case CRAT:
|
case CRAT:
|
||||||
return 1;
|
return 1;
|
||||||
case LPIT: /* ACPI 5.1 up to 6.3: 0 */
|
case LPIT: /* ACPI 5.1 up to 6.3: 0 */
|
||||||
|
@@ -256,7 +256,7 @@ static void acpigen_emit_multi_namestring(const char *name)
|
|||||||
unsigned char *pathlen;
|
unsigned char *pathlen;
|
||||||
acpigen_emit_byte(MULTI_NAME_PREFIX);
|
acpigen_emit_byte(MULTI_NAME_PREFIX);
|
||||||
acpigen_emit_byte(ZERO_OP);
|
acpigen_emit_byte(ZERO_OP);
|
||||||
pathlen = ((unsigned char *) acpigen_get_current()) - 1;
|
pathlen = ((unsigned char *)acpigen_get_current()) - 1;
|
||||||
|
|
||||||
while (name[0] != '\0') {
|
while (name[0] != '\0') {
|
||||||
acpigen_emit_simple_namestring(name);
|
acpigen_emit_simple_namestring(name);
|
||||||
@@ -399,7 +399,7 @@ void acpigen_write_processor(u8 cpuindex, u32 pblock_addr, u8 pblock_len)
|
|||||||
acpigen_write_len_f();
|
acpigen_write_len_f();
|
||||||
|
|
||||||
snprintf(pscope, sizeof(pscope),
|
snprintf(pscope, sizeof(pscope),
|
||||||
CONFIG_ACPI_CPU_STRING, (unsigned int) cpuindex);
|
CONFIG_ACPI_CPU_STRING, (unsigned int)cpuindex);
|
||||||
acpigen_emit_namestring(pscope);
|
acpigen_emit_namestring(pscope);
|
||||||
acpigen_emit_byte(cpuindex);
|
acpigen_emit_byte(cpuindex);
|
||||||
acpigen_emit_dword(pblock_addr);
|
acpigen_emit_dword(pblock_addr);
|
||||||
@@ -532,7 +532,7 @@ static void acpigen_write_field_offset(uint32_t offset, uint32_t current_bit_pos
|
|||||||
acpigen_write_field_length(diff_bits);
|
acpigen_write_field_length(diff_bits);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void acpigen_write_field_name(const char *name, uint32_t size)
|
void acpigen_write_field_name(const char *name, uint32_t size)
|
||||||
{
|
{
|
||||||
acpigen_emit_simple_namestring(name);
|
acpigen_emit_simple_namestring(name);
|
||||||
acpigen_write_field_length(size);
|
acpigen_write_field_length(size);
|
||||||
|
@@ -62,8 +62,6 @@ static const char *namestring_of(enum dptf_participant participant)
|
|||||||
return "TCHG";
|
return "TCHG";
|
||||||
case DPTF_FAN:
|
case DPTF_FAN:
|
||||||
return "TFN1";
|
return "TFN1";
|
||||||
case DPTF_FAN_2:
|
|
||||||
return "TFN2";
|
|
||||||
case DPTF_TEMP_SENSOR_0:
|
case DPTF_TEMP_SENSOR_0:
|
||||||
return "TSR0";
|
return "TSR0";
|
||||||
case DPTF_TEMP_SENSOR_1:
|
case DPTF_TEMP_SENSOR_1:
|
||||||
@@ -125,7 +123,7 @@ void dptf_write_scope(enum dptf_participant participant)
|
|||||||
* are used to increase the speed of the fan in order to speed up cooling.
|
* are used to increase the speed of the fan in order to speed up cooling.
|
||||||
*/
|
*/
|
||||||
static void write_active_relationship_table(const struct dptf_active_policy *policies,
|
static void write_active_relationship_table(const struct dptf_active_policy *policies,
|
||||||
int max_count, bool dptf_multifan_support)
|
int max_count)
|
||||||
{
|
{
|
||||||
char *pkg_count;
|
char *pkg_count;
|
||||||
int i, j;
|
int i, j;
|
||||||
@@ -156,11 +154,7 @@ static void write_active_relationship_table(const struct dptf_active_policy *pol
|
|||||||
|
|
||||||
/* Source, Target, Percent, Fan % for each of _AC0 ... _AC9 */
|
/* Source, Target, Percent, Fan % for each of _AC0 ... _AC9 */
|
||||||
acpigen_write_package(13);
|
acpigen_write_package(13);
|
||||||
if (dptf_multifan_support)
|
acpigen_emit_namestring(path_of(DPTF_FAN));
|
||||||
acpigen_emit_namestring(path_of(policies[i].source));
|
|
||||||
else
|
|
||||||
acpigen_emit_namestring(path_of(DPTF_FAN));
|
|
||||||
|
|
||||||
acpigen_emit_namestring(path_of(policies[i].target));
|
acpigen_emit_namestring(path_of(policies[i].target));
|
||||||
acpigen_write_integer(DEFAULT_IF_0(policies[i].weight, DEFAULT_WEIGHT));
|
acpigen_write_integer(DEFAULT_IF_0(policies[i].weight, DEFAULT_WEIGHT));
|
||||||
|
|
||||||
@@ -211,10 +205,9 @@ static void write_active_cooling_methods(const struct dptf_active_policy *polici
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dptf_write_active_policies(const struct dptf_active_policy *policies,
|
void dptf_write_active_policies(const struct dptf_active_policy *policies, int max_count)
|
||||||
int max_count, bool dptf_multifan_support)
|
|
||||||
{
|
{
|
||||||
write_active_relationship_table(policies, max_count, dptf_multifan_support);
|
write_active_relationship_table(policies, max_count);
|
||||||
write_active_cooling_methods(policies, max_count);
|
write_active_cooling_methods(policies, max_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -359,29 +352,7 @@ void dptf_write_charger_perf(const struct dptf_charger_perf *states, int max_cou
|
|||||||
acpigen_pop_len(); /* Scope */
|
acpigen_pop_len(); /* Scope */
|
||||||
}
|
}
|
||||||
|
|
||||||
int dptf_write_fan_perf_fps(uint8_t percent, uint16_t power, uint16_t speed,
|
void dptf_write_fan_perf(const struct dptf_fan_perf *states, int max_count)
|
||||||
uint16_t noise_level)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Some _FPS tables do include a last entry where Percent is 0, but Power is
|
|
||||||
* called out, so this table is finished when both are zero.
|
|
||||||
*/
|
|
||||||
if (!percent && !power)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
acpigen_write_package(5);
|
|
||||||
acpigen_write_integer(percent);
|
|
||||||
acpigen_write_integer(DEFAULT_TRIP_POINT);
|
|
||||||
acpigen_write_integer(speed);
|
|
||||||
acpigen_write_integer(noise_level);
|
|
||||||
acpigen_write_integer(power);
|
|
||||||
acpigen_pop_len(); /* inner Package */
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void dptf_write_fan_perf(const struct dptf_fan_perf *states, int max_count,
|
|
||||||
enum dptf_participant participant)
|
|
||||||
{
|
{
|
||||||
char *pkg_count;
|
char *pkg_count;
|
||||||
int i;
|
int i;
|
||||||
@@ -389,48 +360,29 @@ void dptf_write_fan_perf(const struct dptf_fan_perf *states, int max_count,
|
|||||||
if (!max_count || !states[0].percent)
|
if (!max_count || !states[0].percent)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
dptf_write_scope(participant);
|
dptf_write_scope(DPTF_FAN);
|
||||||
|
|
||||||
/* _FPS - Fan Performance States */
|
/* _FPS - Fan Performance States */
|
||||||
acpigen_write_name("_FPS");
|
acpigen_write_name("_FPS");
|
||||||
|
|
||||||
pkg_count = acpigen_write_package(1); /* 1 for Revision */
|
pkg_count = acpigen_write_package(1); /* 1 for Revision */
|
||||||
acpigen_write_integer(FPS_REVISION); /* revision */
|
acpigen_write_integer(FPS_REVISION); /* revision */
|
||||||
|
|
||||||
for (i = 0; i < max_count; ++i) {
|
for (i = 0; i < max_count; ++i) {
|
||||||
(*pkg_count)++;
|
/*
|
||||||
if (dptf_write_fan_perf_fps(states[i].percent, states[i].power,
|
* Some _FPS tables do include a last entry where Percent is 0, but Power is
|
||||||
states[i].speed, states[i].noise_level))
|
* called out, so this table is finished when both are zero.
|
||||||
|
*/
|
||||||
|
if (!states[i].percent && !states[i].power)
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
acpigen_pop_len(); /* Package */
|
|
||||||
acpigen_pop_len(); /* Scope */
|
|
||||||
}
|
|
||||||
|
|
||||||
void dptf_write_multifan_perf(
|
|
||||||
const struct dptf_multifan_perf (*states)[DPTF_MAX_FAN_PERF_STATES],
|
|
||||||
int max_count, enum dptf_participant participant, int fan_num)
|
|
||||||
{
|
|
||||||
char *pkg_count;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (!max_count || !states[fan_num][0].percent)
|
|
||||||
return;
|
|
||||||
|
|
||||||
dptf_write_scope(participant);
|
|
||||||
|
|
||||||
/* _FPS - Fan Performance States */
|
|
||||||
acpigen_write_name("_FPS");
|
|
||||||
|
|
||||||
pkg_count = acpigen_write_package(1); /* 1 for Revision */
|
|
||||||
acpigen_write_integer(FPS_REVISION); /* revision */
|
|
||||||
|
|
||||||
for (i = 0; i < max_count; ++i) {
|
|
||||||
(*pkg_count)++;
|
(*pkg_count)++;
|
||||||
if (dptf_write_fan_perf_fps(states[fan_num][i].percent, states[fan_num][i].power,
|
acpigen_write_package(5);
|
||||||
states[fan_num][i].speed, states[fan_num][i].noise_level))
|
acpigen_write_integer(states[i].percent);
|
||||||
break;
|
acpigen_write_integer(DEFAULT_TRIP_POINT);
|
||||||
|
acpigen_write_integer(states[i].speed);
|
||||||
|
acpigen_write_integer(states[i].noise_level);
|
||||||
|
acpigen_write_integer(states[i].power);
|
||||||
|
acpigen_pop_len(); /* inner Package */
|
||||||
}
|
}
|
||||||
|
|
||||||
acpigen_pop_len(); /* Package */
|
acpigen_pop_len(); /* Package */
|
||||||
|
@@ -19,6 +19,27 @@
|
|||||||
#define ACPI_DP_UUID "daffd814-6eba-4d8c-8a91-bc9bbf4aa301"
|
#define ACPI_DP_UUID "daffd814-6eba-4d8c-8a91-bc9bbf4aa301"
|
||||||
#define ACPI_DP_CHILD_UUID "dbb8e3e6-5886-4ba6-8795-1319f52a966b"
|
#define ACPI_DP_CHILD_UUID "dbb8e3e6-5886-4ba6-8795-1319f52a966b"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Below properties are defined at
|
||||||
|
* https://docs.microsoft.com/en-us/windows-hardware/drivers/pci/dsd-for-pcie-root-ports
|
||||||
|
*/
|
||||||
|
#define ACPI_DSD_EXTERNAL_FACING_PORT_UUID "EFCC06CC-73AC-4BC3-BFF0-76143807C389"
|
||||||
|
#define ACPI_DSD_EXTERNAL_FACING_PORT_NAME "ExternalFacingPort"
|
||||||
|
|
||||||
|
#define ACPI_DSD_HOTPLUG_IN_D3_UUID "6211E2C0-58A3-4AF3-90E1-927A4E0C55A4"
|
||||||
|
#define ACPI_DSD_HOTPLUG_IN_D3_NAME "HotPlugSupportInD3"
|
||||||
|
|
||||||
|
/* ID for the DmaProperty _DSD */
|
||||||
|
#define ACPI_DSD_DMA_PROPERTY_UUID "70D24161-6DD5-4C9E-8070-705531292865"
|
||||||
|
#define ACPI_DSD_DMA_PROPERTY_NAME "DmaProperty"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Below properties are defined at
|
||||||
|
* https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/power-management-for-storage-hardware-devices-intro
|
||||||
|
*/
|
||||||
|
#define ACPI_DSD_STORAGE_D3_UUID "5025030F-842F-4AB4-A561-99A5189762D0"
|
||||||
|
#define ACPI_DSD_STORAGE_D3_NAME "StorageD3Enable"
|
||||||
|
|
||||||
/* Write empty word value and return pointer to it */
|
/* Write empty word value and return pointer to it */
|
||||||
static void *acpi_device_write_zero_len(void)
|
static void *acpi_device_write_zero_len(void)
|
||||||
{
|
{
|
||||||
@@ -1183,3 +1204,64 @@ void acpi_device_write_pci_dev(const struct device *dev)
|
|||||||
acpigen_pop_len(); /* Device */
|
acpigen_pop_len(); /* Device */
|
||||||
acpigen_pop_len(); /* Scope */
|
acpigen_pop_len(); /* Scope */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Helper function to add given integer property with an UUID to _DSD in the current scope.
|
||||||
|
*
|
||||||
|
* dsd - Pointer to a _DSD object.
|
||||||
|
* Append to existing _DSD object if not NULL.
|
||||||
|
* Create new _DSD object and flush it if NULL.
|
||||||
|
* uuid - Pointer to the UUID string.
|
||||||
|
* name - Pointer to the property name string.
|
||||||
|
* value - Value of the integer property.
|
||||||
|
*/
|
||||||
|
static void acpi_device_add_integer_property_with_uuid(struct acpi_dp *dsd,
|
||||||
|
const char *uuid,
|
||||||
|
const char *name,
|
||||||
|
uint64_t value)
|
||||||
|
{
|
||||||
|
struct acpi_dp *prev_dsd = dsd, *pkg;
|
||||||
|
if (prev_dsd == NULL)
|
||||||
|
dsd = acpi_dp_new_table("_DSD");
|
||||||
|
pkg = acpi_dp_new_table(uuid);
|
||||||
|
acpi_dp_add_integer(pkg, name, value);
|
||||||
|
acpi_dp_add_package(dsd, pkg);
|
||||||
|
if (prev_dsd == NULL)
|
||||||
|
acpi_dp_write(dsd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* _DSD with ExternalFacingPort */
|
||||||
|
void acpi_device_add_external_facing_port(struct acpi_dp *dsd)
|
||||||
|
{
|
||||||
|
acpi_device_add_integer_property_with_uuid(dsd,
|
||||||
|
ACPI_DSD_EXTERNAL_FACING_PORT_UUID,
|
||||||
|
ACPI_DSD_EXTERNAL_FACING_PORT_NAME,
|
||||||
|
1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* _DSD with HotPlugSupportInD3 */
|
||||||
|
void acpi_device_add_hotplug_support_in_d3(struct acpi_dp *dsd)
|
||||||
|
{
|
||||||
|
acpi_device_add_integer_property_with_uuid(dsd,
|
||||||
|
ACPI_DSD_HOTPLUG_IN_D3_UUID,
|
||||||
|
ACPI_DSD_HOTPLUG_IN_D3_NAME,
|
||||||
|
1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* _DSD with DmaProperty */
|
||||||
|
void acpi_device_add_dma_property(struct acpi_dp *dsd)
|
||||||
|
{
|
||||||
|
acpi_device_add_integer_property_with_uuid(dsd,
|
||||||
|
ACPI_DSD_DMA_PROPERTY_UUID,
|
||||||
|
ACPI_DSD_DMA_PROPERTY_NAME,
|
||||||
|
1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* _DSD with StorageD3Enable */
|
||||||
|
void acpi_device_add_storage_d3_enable(struct acpi_dp *dsd)
|
||||||
|
{
|
||||||
|
acpi_device_add_integer_property_with_uuid(dsd,
|
||||||
|
ACPI_DSD_STORAGE_D3_UUID,
|
||||||
|
ACPI_DSD_STORAGE_D3_NAME,
|
||||||
|
1);
|
||||||
|
}
|
||||||
|
@@ -10,11 +10,11 @@
|
|||||||
/* Operating system enumeration. */
|
/* Operating system enumeration. */
|
||||||
Name (OSYS, 0)
|
Name (OSYS, 0)
|
||||||
|
|
||||||
/* Zero => PIC mode, One => APIC Mode */
|
/* 0 => PIC mode, 1 => APIC Mode */
|
||||||
Name (PICM, Zero)
|
Name (PICM, 0)
|
||||||
|
|
||||||
/* Power state (AC = 1) */
|
/* Power state (AC = 1) */
|
||||||
Name (PWRS, One)
|
Name (PWRS, 1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The _PIC method is called by the OS to choose between interrupt
|
* The _PIC method is called by the OS to choose between interrupt
|
||||||
|
@@ -5,7 +5,17 @@ armv7-a_flags = -march=armv7-a $(armv7_flags) -D__COREBOOT_ARM_V7_A__
|
|||||||
armv7-m_flags = -march=armv7-m $(armv7_flags) -D__COREBOOT_ARM_V7_M__
|
armv7-m_flags = -march=armv7-m $(armv7_flags) -D__COREBOOT_ARM_V7_M__
|
||||||
armv7-r_flags = -march=armv7-r $(armv7_flags) -D__COREBOOT_ARM_V7_R__
|
armv7-r_flags = -march=armv7-r $(armv7_flags) -D__COREBOOT_ARM_V7_R__
|
||||||
|
|
||||||
armv7_asm_flags = -Wa,-mthumb -Wa,-mimplicit-it=always -Wa,-mno-warn-deprecated
|
armv7_asm_flags = -Wa,-mthumb -Wa,-mimplicit-it=always
|
||||||
|
ifeq ($(CONFIG_COMPILER_GCC),y)
|
||||||
|
armv7_asm_flags += -Wa,-mno-warn-deprecated
|
||||||
|
else # CLANG
|
||||||
|
armv7_flags += -mfpu=none
|
||||||
|
bootblock-ld-ccopts += -target arm-eabi
|
||||||
|
verstage-ld-ccopts += -target arm-eabi
|
||||||
|
romstage-ld-ccopts += -target arm-eabi
|
||||||
|
ramstage-ld-ccopts += -target arm-eabi
|
||||||
|
rmodule_arm-ld-ccopts += -target arm-eabi
|
||||||
|
endif
|
||||||
armv7-r_asm_flags = $(armv7-r_flags) $(armv7_asm_flags)
|
armv7-r_asm_flags = $(armv7-r_flags) $(armv7_asm_flags)
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
@@ -23,14 +23,37 @@ void __aeabi_unwind_cpp_pr1(void)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Support the alias for the __aeabi_memcpy which may
|
||||||
|
assume memory alignment. */
|
||||||
|
void __aeabi_memcpy4(void *dest, const void *src, size_t n)
|
||||||
|
__attribute((alias("__aeabi_memcpy")));
|
||||||
|
|
||||||
|
void __aeabi_memcpy8(void *dest, const void *src, size_t n)
|
||||||
|
__attribute((alias("__aeabi_memcpy")));
|
||||||
|
|
||||||
void __aeabi_memcpy(void *dest, const void *src, size_t n);
|
void __aeabi_memcpy(void *dest, const void *src, size_t n);
|
||||||
void __aeabi_memcpy(void *dest, const void *src, size_t n)
|
void __aeabi_memcpy(void *dest, const void *src, size_t n)
|
||||||
{
|
{
|
||||||
(void) memcpy(dest, src, n);
|
(void)memcpy(dest, src, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __aeabi_memset(void *dest, size_t n, int c);
|
void __aeabi_memset(void *dest, size_t n, int c);
|
||||||
void __aeabi_memset(void *dest, size_t n, int c)
|
void __aeabi_memset(void *dest, size_t n, int c)
|
||||||
{
|
{
|
||||||
(void) memset(dest, c, n);
|
(void)memset(dest, c, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Support the alias for the __aeabi_memclr which may
|
||||||
|
assume memory alignment. */
|
||||||
|
void __aeabi_memclr4(void *dest, size_t n)
|
||||||
|
__attribute((alias("__aeabi_memclr")));
|
||||||
|
|
||||||
|
void __aeabi_memclr8(void *dest, size_t n)
|
||||||
|
__attribute((alias("__aeabi_memclr")));
|
||||||
|
|
||||||
|
/* Support the routine __aeabi_memclr. */
|
||||||
|
void __aeabi_memclr(void *dest, size_t n);
|
||||||
|
void __aeabi_memclr(void *dest, size_t n)
|
||||||
|
{
|
||||||
|
__aeabi_memset(dest, n, 0);
|
||||||
}
|
}
|
||||||
|
@@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
#include <arch/asm.h>
|
#include <arch/asm.h>
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
.macro ARM_DIV_BODY dividend, divisor, result, curbit
|
.macro ARM_DIV_BODY dividend, divisor, result, curbit
|
||||||
|
|
||||||
#if __COREBOOT_ARM_ARCH__ >= 5
|
#if __COREBOOT_ARM_ARCH__ >= 5
|
||||||
@@ -67,7 +69,7 @@
|
|||||||
subhs \dividend, \dividend, \divisor, lsr #3
|
subhs \dividend, \dividend, \divisor, lsr #3
|
||||||
orrhs \result, \result, \curbit, lsr #3
|
orrhs \result, \result, \curbit, lsr #3
|
||||||
cmp \dividend, #0 @ Early termination?
|
cmp \dividend, #0 @ Early termination?
|
||||||
movnes \curbit, \curbit, lsr #4 @ No, any more bits to do?
|
movsne \curbit, \curbit, lsr #4 @ No, any more bits to do?
|
||||||
movne \divisor, \divisor, lsr #4
|
movne \divisor, \divisor, lsr #4
|
||||||
bne 1b
|
bne 1b
|
||||||
|
|
||||||
@@ -153,7 +155,7 @@
|
|||||||
subhs \dividend, \dividend, \divisor, lsr #3
|
subhs \dividend, \dividend, \divisor, lsr #3
|
||||||
cmp \dividend, #1
|
cmp \dividend, #1
|
||||||
mov \divisor, \divisor, lsr #4
|
mov \divisor, \divisor, lsr #4
|
||||||
subges \order, \order, #4
|
subsge \order, \order, #4
|
||||||
bge 1b
|
bge 1b
|
||||||
|
|
||||||
tst \order, #3
|
tst \order, #3
|
||||||
|
@@ -4,6 +4,6 @@
|
|||||||
uint64_t __umoddi3(uint64_t num, uint64_t den)
|
uint64_t __umoddi3(uint64_t num, uint64_t den)
|
||||||
{
|
{
|
||||||
uint64_t v;
|
uint64_t v;
|
||||||
(void) __udivmoddi4(num, den, &v);
|
(void)__udivmoddi4(num, den, &v);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
@@ -6,6 +6,8 @@
|
|||||||
#include <arch/asm.h>
|
#include <arch/asm.h>
|
||||||
#include "asmlib.h"
|
#include "asmlib.h"
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
#define LDR1W_SHIFT 0
|
#define LDR1W_SHIFT 0
|
||||||
#define STR1W_SHIFT 0
|
#define STR1W_SHIFT 0
|
||||||
|
|
||||||
@@ -22,7 +24,7 @@
|
|||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro ldr1b ptr reg cond=al abort
|
.macro ldr1b ptr reg cond=al abort
|
||||||
ldr\cond\()b \reg, [\ptr], #1
|
ldrb\cond \reg, [\ptr], #1
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro str1w ptr reg abort
|
.macro str1w ptr reg abort
|
||||||
@@ -34,7 +36,7 @@
|
|||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro str1b ptr reg cond=al abort
|
.macro str1b ptr reg cond=al abort
|
||||||
str\cond\()b \reg, [\ptr], #1
|
strb\cond \reg, [\ptr], #1
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro enter reg1 reg2
|
.macro enter reg1 reg2
|
||||||
@@ -197,7 +199,7 @@ ENTRY(memcpy)
|
|||||||
orr r9, r9, ip, push #\push
|
orr r9, r9, ip, push #\push
|
||||||
mov ip, ip, pull #\pull
|
mov ip, ip, pull #\pull
|
||||||
orr ip, ip, lr, push #\push
|
orr ip, ip, lr, push #\push
|
||||||
str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f
|
str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, abort=19f
|
||||||
bge 12b
|
bge 12b
|
||||||
PLD( cmn r2, #96 )
|
PLD( cmn r2, #96 )
|
||||||
PLD( bge 13b )
|
PLD( bge 13b )
|
||||||
|
@@ -4,6 +4,8 @@
|
|||||||
#include <arch/asm.h>
|
#include <arch/asm.h>
|
||||||
#include "asmlib.h"
|
#include "asmlib.h"
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prototype: void *memmove(void *dest, const void *src, size_t n);
|
* Prototype: void *memmove(void *dest, const void *src, size_t n);
|
||||||
*
|
*
|
||||||
@@ -88,20 +90,20 @@ ENTRY(memmove)
|
|||||||
7: ldmfd sp!, {r5 - r8}
|
7: ldmfd sp!, {r5 - r8}
|
||||||
|
|
||||||
8: movs r2, r2, lsl #31
|
8: movs r2, r2, lsl #31
|
||||||
ldrneb r3, [r1, #-1]!
|
ldrbne r3, [r1, #-1]!
|
||||||
ldrcsb r4, [r1, #-1]!
|
ldrbcs r4, [r1, #-1]!
|
||||||
ldrcsb ip, [r1, #-1]
|
ldrbcs ip, [r1, #-1]
|
||||||
strneb r3, [r0, #-1]!
|
strbne r3, [r0, #-1]!
|
||||||
strcsb r4, [r0, #-1]!
|
strbcs r4, [r0, #-1]!
|
||||||
strcsb ip, [r0, #-1]
|
strbcs ip, [r0, #-1]
|
||||||
ldmfd sp!, {r0, r4, pc}
|
ldmfd sp!, {r0, r4, pc}
|
||||||
|
|
||||||
9: cmp ip, #2
|
9: cmp ip, #2
|
||||||
ldrgtb r3, [r1, #-1]!
|
ldrbgt r3, [r1, #-1]!
|
||||||
ldrgeb r4, [r1, #-1]!
|
ldrbge r4, [r1, #-1]!
|
||||||
ldrb lr, [r1, #-1]!
|
ldrb lr, [r1, #-1]!
|
||||||
strgtb r3, [r0, #-1]!
|
strbgt r3, [r0, #-1]!
|
||||||
strgeb r4, [r0, #-1]!
|
strbge r4, [r0, #-1]!
|
||||||
subs r2, r2, ip
|
subs r2, r2, ip
|
||||||
strb lr, [r0, #-1]!
|
strb lr, [r0, #-1]!
|
||||||
blt 8b
|
blt 8b
|
||||||
|
@@ -8,6 +8,8 @@
|
|||||||
#include <arch/asm.h>
|
#include <arch/asm.h>
|
||||||
#include "asmlib.h"
|
#include "asmlib.h"
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
ENTRY(memset)
|
ENTRY(memset)
|
||||||
ands r3, r0, #3 @ 1 unaligned?
|
ands r3, r0, #3 @ 1 unaligned?
|
||||||
mov ip, r0 @ preserve r0 as return value
|
mov ip, r0 @ preserve r0 as return value
|
||||||
@@ -31,20 +33,20 @@ ENTRY(memset)
|
|||||||
mov lr, r1
|
mov lr, r1
|
||||||
|
|
||||||
2: subs r2, r2, #64
|
2: subs r2, r2, #64
|
||||||
stmgeia ip!, {r1, r3, r8, lr} @ 64 bytes at a time.
|
stmiage ip!, {r1, r3, r8, lr} @ 64 bytes at a time.
|
||||||
stmgeia ip!, {r1, r3, r8, lr}
|
stmiage ip!, {r1, r3, r8, lr}
|
||||||
stmgeia ip!, {r1, r3, r8, lr}
|
stmiage ip!, {r1, r3, r8, lr}
|
||||||
stmgeia ip!, {r1, r3, r8, lr}
|
stmiage ip!, {r1, r3, r8, lr}
|
||||||
bgt 2b
|
bgt 2b
|
||||||
ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go.
|
ldmfdeq sp!, {r8, pc} @ Now <64 bytes to go.
|
||||||
/*
|
/*
|
||||||
* No need to correct the count; we're only testing bits from now on
|
* No need to correct the count; we're only testing bits from now on
|
||||||
*/
|
*/
|
||||||
tst r2, #32
|
tst r2, #32
|
||||||
stmneia ip!, {r1, r3, r8, lr}
|
stmiane ip!, {r1, r3, r8, lr}
|
||||||
stmneia ip!, {r1, r3, r8, lr}
|
stmiane ip!, {r1, r3, r8, lr}
|
||||||
tst r2, #16
|
tst r2, #16
|
||||||
stmneia ip!, {r1, r3, r8, lr}
|
stmiane ip!, {r1, r3, r8, lr}
|
||||||
ldmfd sp!, {r8, lr}
|
ldmfd sp!, {r8, lr}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@@ -77,21 +79,21 @@ ENTRY(memset)
|
|||||||
strne r1, [ip], #4
|
strne r1, [ip], #4
|
||||||
|
|
||||||
3: subs r2, r2, #64
|
3: subs r2, r2, #64
|
||||||
stmgeia ip!, {r1, r3-r8, lr}
|
stmiage ip!, {r1, r3-r8, lr}
|
||||||
stmgeia ip!, {r1, r3-r8, lr}
|
stmiage ip!, {r1, r3-r8, lr}
|
||||||
bgt 3b
|
bgt 3b
|
||||||
ldmeqfd sp!, {r4-r8, pc}
|
ldmfdeq sp!, {r4-r8, pc}
|
||||||
|
|
||||||
tst r2, #32
|
tst r2, #32
|
||||||
stmneia ip!, {r1, r3-r8, lr}
|
stmiane ip!, {r1, r3-r8, lr}
|
||||||
tst r2, #16
|
tst r2, #16
|
||||||
stmneia ip!, {r4-r7}
|
stmiane ip!, {r4-r7}
|
||||||
ldmfd sp!, {r4-r8, lr}
|
ldmfd sp!, {r4-r8, lr}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
4: tst r2, #8
|
4: tst r2, #8
|
||||||
stmneia ip!, {r1, r3}
|
stmiane ip!, {r1, r3}
|
||||||
tst r2, #4
|
tst r2, #4
|
||||||
strne r1, [ip], #4
|
strne r1, [ip], #4
|
||||||
/*
|
/*
|
||||||
@@ -99,17 +101,17 @@ ENTRY(memset)
|
|||||||
* may have an unaligned pointer as well.
|
* may have an unaligned pointer as well.
|
||||||
*/
|
*/
|
||||||
5: tst r2, #2
|
5: tst r2, #2
|
||||||
strneb r1, [ip], #1
|
strbne r1, [ip], #1
|
||||||
strneb r1, [ip], #1
|
strbne r1, [ip], #1
|
||||||
tst r2, #1
|
tst r2, #1
|
||||||
strneb r1, [ip], #1
|
strbne r1, [ip], #1
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
6: subs r2, r2, #4 @ 1 do we have enough
|
6: subs r2, r2, #4 @ 1 do we have enough
|
||||||
blt 5b @ 1 bytes to align with?
|
blt 5b @ 1 bytes to align with?
|
||||||
cmp r3, #2 @ 1
|
cmp r3, #2 @ 1
|
||||||
strltb r1, [ip], #1 @ 1
|
strblt r1, [ip], #1 @ 1
|
||||||
strleb r1, [ip], #1 @ 1
|
strble r1, [ip], #1 @ 1
|
||||||
strb r1, [ip], #1 @ 1
|
strb r1, [ip], #1 @ 1
|
||||||
add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
|
add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
|
||||||
b 1b
|
b 1b
|
||||||
|
@@ -65,25 +65,25 @@ static void print_regs(struct exc_state *exc_state)
|
|||||||
|
|
||||||
static struct exception_handler *handlers[NUM_EXC_VIDS];
|
static struct exception_handler *handlers[NUM_EXC_VIDS];
|
||||||
|
|
||||||
int exception_handler_register(uint64_t vid, struct exception_handler *h)
|
enum cb_err exception_handler_register(uint64_t vid, struct exception_handler *h)
|
||||||
{
|
{
|
||||||
if (vid >= NUM_EXC_VIDS)
|
if (vid >= NUM_EXC_VIDS)
|
||||||
return -1;
|
return CB_ERR;
|
||||||
|
|
||||||
/* Just place at head of queue. */
|
/* Just place at head of queue. */
|
||||||
h->next = handlers[vid];
|
h->next = handlers[vid];
|
||||||
store_release(&handlers[vid], h);
|
store_release(&handlers[vid], h);
|
||||||
|
|
||||||
return 0;
|
return CB_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int exception_handler_unregister(uint64_t vid, struct exception_handler *h)
|
enum cb_err exception_handler_unregister(uint64_t vid, struct exception_handler *h)
|
||||||
{
|
{
|
||||||
struct exception_handler *cur;
|
struct exception_handler *cur;
|
||||||
struct exception_handler **prev;
|
struct exception_handler **prev;
|
||||||
|
|
||||||
if (vid >= NUM_EXC_VIDS)
|
if (vid >= NUM_EXC_VIDS)
|
||||||
return -1;
|
return CB_ERR;
|
||||||
|
|
||||||
prev = &handlers[vid];
|
prev = &handlers[vid];
|
||||||
|
|
||||||
@@ -92,11 +92,11 @@ int exception_handler_unregister(uint64_t vid, struct exception_handler *h)
|
|||||||
continue;
|
continue;
|
||||||
/* Update previous pointer. */
|
/* Update previous pointer. */
|
||||||
store_release(prev, cur->next);
|
store_release(prev, cur->next);
|
||||||
return 0;
|
return CB_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Not found */
|
/* Not found */
|
||||||
return -1;
|
return CB_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_exception_info(struct exc_state *state, uint64_t idx)
|
static void print_exception_info(struct exc_state *state, uint64_t idx)
|
||||||
|
@@ -169,7 +169,7 @@ bool fit_payload_arch(struct prog *payload, struct fit_config_node *config,
|
|||||||
void *arg = NULL;
|
void *arg = NULL;
|
||||||
|
|
||||||
if (!decompress_kernel_header(config->kernel)) {
|
if (!decompress_kernel_header(config->kernel)) {
|
||||||
printk(BIOS_CRIT, "CRIT: Payload doesn't look like an ARM64"
|
printk(BIOS_CRIT, "Payload doesn't look like an ARM64"
|
||||||
" kernel Image.\n");
|
" kernel Image.\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
#define _ARCH_EXCEPTION_H
|
#define _ARCH_EXCEPTION_H
|
||||||
|
|
||||||
#include <arch/transition.h>
|
#include <arch/transition.h>
|
||||||
|
#include <types.h>
|
||||||
|
|
||||||
/* Initialize the exception handling on the current CPU. */
|
/* Initialize the exception handling on the current CPU. */
|
||||||
void exception_init(void);
|
void exception_init(void);
|
||||||
@@ -31,12 +32,12 @@ struct exception_handler {
|
|||||||
* Register a handler provided with the associated vector id. Returns 0 on
|
* Register a handler provided with the associated vector id. Returns 0 on
|
||||||
* success, < 0 on error. Note that registration is not thread/interrupt safe.
|
* success, < 0 on error. Note that registration is not thread/interrupt safe.
|
||||||
*/
|
*/
|
||||||
int exception_handler_register(uint64_t vid, struct exception_handler *h);
|
enum cb_err exception_handler_register(uint64_t vid, struct exception_handler *h);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unregister a handler from the vector id. Return 0 on success, < 0 on error.
|
* Unregister a handler from the vector id. Return 0 on success, < 0 on error.
|
||||||
* Note that the unregistration is not thread/interrupt safe.
|
* Note that the unregistration is not thread/interrupt safe.
|
||||||
*/
|
*/
|
||||||
int exception_handler_unregister(uint64_t vid, struct exception_handler *h);
|
enum cb_err exception_handler_unregister(uint64_t vid, struct exception_handler *h);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -67,7 +67,7 @@ bool fit_payload_arch(struct prog *payload, struct fit_config_node *config,
|
|||||||
void *arg = NULL;
|
void *arg = NULL;
|
||||||
|
|
||||||
if (!config->fdt || !fdt) {
|
if (!config->fdt || !fdt) {
|
||||||
printk(BIOS_CRIT, "CRIT: Providing a valid FDT is mandatory to "
|
printk(BIOS_CRIT, "Providing a valid FDT is mandatory to "
|
||||||
"boot a RISC-V kernel!\n");
|
"boot a RISC-V kernel!\n");
|
||||||
return false;
|
return false;
|
||||||
/* TODO: Fall back to the ROM FDT? */
|
/* TODO: Fall back to the ROM FDT? */
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <vm.h>
|
#include <vm.h>
|
||||||
#include <arch/exception.h>
|
#include <arch/exception.h>
|
||||||
#include <commonlib/helpers.h>
|
#include <commonlib/helpers.h>
|
||||||
|
#include <types.h>
|
||||||
|
|
||||||
/* these functions are defined in src/arch/riscv/fp_asm.S */
|
/* these functions are defined in src/arch/riscv/fp_asm.S */
|
||||||
#if defined(__riscv_flen)
|
#if defined(__riscv_flen)
|
||||||
@@ -131,18 +131,18 @@ static struct memory_instruction_info *match_instruction(uintptr_t insn)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fetch_16bit_instruction(uintptr_t vaddr, uintptr_t *insn, int *size)
|
static enum cb_err fetch_16bit_instruction(uintptr_t vaddr, uintptr_t *insn, int *size)
|
||||||
{
|
{
|
||||||
uint16_t ins = mprv_read_mxr_u16((uint16_t *)vaddr);
|
uint16_t ins = mprv_read_mxr_u16((uint16_t *)vaddr);
|
||||||
if (EXTRACT_FIELD(ins, 0x3) != 3) {
|
if (EXTRACT_FIELD(ins, 0x3) != 3) {
|
||||||
*insn = ins;
|
*insn = ins;
|
||||||
*size = 2;
|
*size = 2;
|
||||||
return 0;
|
return CB_SUCCESS;
|
||||||
}
|
}
|
||||||
return -1;
|
return CB_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fetch_32bit_instruction(uintptr_t vaddr, uintptr_t *insn, int *size)
|
static enum cb_err fetch_32bit_instruction(uintptr_t vaddr, uintptr_t *insn, int *size)
|
||||||
{
|
{
|
||||||
uint32_t l = (uint32_t)mprv_read_mxr_u16((uint16_t *)vaddr + 0);
|
uint32_t l = (uint32_t)mprv_read_mxr_u16((uint16_t *)vaddr + 0);
|
||||||
uint32_t h = (uint32_t)mprv_read_mxr_u16((uint16_t *)vaddr + 1);
|
uint32_t h = (uint32_t)mprv_read_mxr_u16((uint16_t *)vaddr + 1);
|
||||||
@@ -151,9 +151,9 @@ static int fetch_32bit_instruction(uintptr_t vaddr, uintptr_t *insn, int *size)
|
|||||||
(EXTRACT_FIELD(ins, 0x1c) != 0x7)) {
|
(EXTRACT_FIELD(ins, 0x1c) != 0x7)) {
|
||||||
*insn = ins;
|
*insn = ins;
|
||||||
*size = 4;
|
*size = 4;
|
||||||
return 0;
|
return CB_SUCCESS;
|
||||||
}
|
}
|
||||||
return -1;
|
return CB_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_misaligned(trapframe *tf)
|
void handle_misaligned(trapframe *tf)
|
||||||
|
@@ -64,8 +64,8 @@ static void print_trap_information(const trapframe *tf)
|
|||||||
previous_mode, mprv? " (MPRV)":"");
|
previous_mode, mprv? " (MPRV)":"");
|
||||||
printk(BIOS_DEBUG, "Bad instruction pc: %p\n", (void *)tf->epc);
|
printk(BIOS_DEBUG, "Bad instruction pc: %p\n", (void *)tf->epc);
|
||||||
printk(BIOS_DEBUG, "Bad address: %p\n", (void *)tf->badvaddr);
|
printk(BIOS_DEBUG, "Bad address: %p\n", (void *)tf->badvaddr);
|
||||||
printk(BIOS_DEBUG, "Stored ra: %p\n", (void*) tf->gpr[1]);
|
printk(BIOS_DEBUG, "Stored ra: %p\n", (void *)tf->gpr[1]);
|
||||||
printk(BIOS_DEBUG, "Stored sp: %p\n", (void*) tf->gpr[2]);
|
printk(BIOS_DEBUG, "Stored sp: %p\n", (void *)tf->gpr[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void interrupt_handler(trapframe *tf)
|
static void interrupt_handler(trapframe *tf)
|
||||||
|
@@ -28,9 +28,9 @@ config ARCH_RAMSTAGE_X86_32
|
|||||||
|
|
||||||
config ARCH_ALL_STAGES_X86_32
|
config ARCH_ALL_STAGES_X86_32
|
||||||
bool
|
bool
|
||||||
default ARCH_ALL_STAGES_X86 && !ARCH_ALL_STAGES_X86_64
|
default !ARCH_ALL_STAGES_X86_64
|
||||||
select ARCH_BOOTBLOCK_X86_32
|
select ARCH_BOOTBLOCK_X86_32
|
||||||
select ARCH_VERSTAGE_X86_32
|
select ARCH_VERSTAGE_X86_32 if !VBOOT_STARTS_BEFORE_BOOTBLOCK
|
||||||
select ARCH_ROMSTAGE_X86_32
|
select ARCH_ROMSTAGE_X86_32
|
||||||
select ARCH_RAMSTAGE_X86_32
|
select ARCH_RAMSTAGE_X86_32
|
||||||
select ARCH_SUPPORTS_CLANG
|
select ARCH_SUPPORTS_CLANG
|
||||||
@@ -39,30 +39,32 @@ config ARCH_ALL_STAGES_X86_32
|
|||||||
|
|
||||||
config ARCH_BOOTBLOCK_X86_64
|
config ARCH_BOOTBLOCK_X86_64
|
||||||
bool
|
bool
|
||||||
|
select SSE2
|
||||||
|
|
||||||
config ARCH_VERSTAGE_X86_64
|
config ARCH_VERSTAGE_X86_64
|
||||||
bool
|
bool
|
||||||
|
select SSE2
|
||||||
|
|
||||||
config ARCH_ROMSTAGE_X86_64
|
config ARCH_ROMSTAGE_X86_64
|
||||||
bool
|
bool
|
||||||
|
select SSE2
|
||||||
|
|
||||||
config ARCH_POSTCAR_X86_64
|
config ARCH_POSTCAR_X86_64
|
||||||
bool
|
bool
|
||||||
default ARCH_ROMSTAGE_X86_64 && POSTCAR_STAGE
|
default ARCH_ROMSTAGE_X86_64 && POSTCAR_STAGE
|
||||||
|
select SSE2
|
||||||
|
|
||||||
config ARCH_RAMSTAGE_X86_64
|
config ARCH_RAMSTAGE_X86_64
|
||||||
bool
|
bool
|
||||||
|
select SSE2
|
||||||
|
|
||||||
config ARCH_ALL_STAGES_X86_64
|
config ARCH_ALL_STAGES_X86_64
|
||||||
bool
|
bool
|
||||||
select ARCH_BOOTBLOCK_X86_64
|
select ARCH_BOOTBLOCK_X86_64
|
||||||
select ARCH_VERSTAGE_X86_64
|
select ARCH_VERSTAGE_X86_64 if !VBOOT_STARTS_BEFORE_BOOTBLOCK
|
||||||
select ARCH_ROMSTAGE_X86_64
|
select ARCH_ROMSTAGE_X86_64
|
||||||
select ARCH_RAMSTAGE_X86_64
|
select ARCH_RAMSTAGE_X86_64
|
||||||
|
select ARCH_SUPPORTS_CLANG
|
||||||
config ARCH_ALL_STAGES_X86
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config HAVE_EXP_X86_64_SUPPORT
|
config HAVE_EXP_X86_64_SUPPORT
|
||||||
bool
|
bool
|
||||||
|
@@ -85,7 +85,8 @@ bootblock-$(CONFIG_IDT_IN_EVERY_STAGE) += exception.c
|
|||||||
bootblock-$(CONFIG_IDT_IN_EVERY_STAGE) += idt.S
|
bootblock-$(CONFIG_IDT_IN_EVERY_STAGE) += idt.S
|
||||||
bootblock-y += memcpy.c
|
bootblock-y += memcpy.c
|
||||||
bootblock-y += memset.c
|
bootblock-y += memset.c
|
||||||
bootblock-y += memmove.c
|
bootblock-$(CONFIG_ARCH_BOOTBLOCK_X86_32) += memmove_32.c
|
||||||
|
bootblock-$(CONFIG_ARCH_BOOTBLOCK_X86_64) += memmove_64.S
|
||||||
bootblock-$(CONFIG_COLLECT_TIMESTAMPS_TSC) += timestamp.c
|
bootblock-$(CONFIG_COLLECT_TIMESTAMPS_TSC) += timestamp.c
|
||||||
bootblock-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
bootblock-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||||
bootblock-$(CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES) += null_breakpoint.c
|
bootblock-$(CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES) += null_breakpoint.c
|
||||||
@@ -134,7 +135,8 @@ verstage-$(CONFIG_HAVE_CF9_RESET) += cf9_reset.c
|
|||||||
verstage-y += cpu_common.c
|
verstage-y += cpu_common.c
|
||||||
verstage-y += memset.c
|
verstage-y += memset.c
|
||||||
verstage-y += memcpy.c
|
verstage-y += memcpy.c
|
||||||
verstage-y += memmove.c
|
verstage-$(CONFIG_ARCH_VERSTAGE_X86_32) += memmove_32.c
|
||||||
|
verstage-$(CONFIG_ARCH_VERSTAGE_X86_64) += memmove_64.S
|
||||||
verstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
verstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||||
verstage-$(CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES) += null_breakpoint.c
|
verstage-$(CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES) += null_breakpoint.c
|
||||||
# If verstage is a separate stage it means there's no need
|
# If verstage is a separate stage it means there's no need
|
||||||
@@ -172,7 +174,8 @@ romstage-y += cpu_common.c
|
|||||||
romstage-$(CONFIG_IDT_IN_EVERY_STAGE) += exception.c
|
romstage-$(CONFIG_IDT_IN_EVERY_STAGE) += exception.c
|
||||||
romstage-$(CONFIG_IDT_IN_EVERY_STAGE) += idt.S
|
romstage-$(CONFIG_IDT_IN_EVERY_STAGE) += idt.S
|
||||||
romstage-y += memcpy.c
|
romstage-y += memcpy.c
|
||||||
romstage-y += memmove.c
|
romstage-$(CONFIG_ARCH_ROMSTAGE_X86_32) += memmove_32.c
|
||||||
|
romstage-$(CONFIG_ARCH_ROMSTAGE_X86_64) += memmove_64.S
|
||||||
romstage-y += memset.c
|
romstage-y += memset.c
|
||||||
romstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
romstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||||
romstage-$(CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES) += null_breakpoint.c
|
romstage-$(CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES) += null_breakpoint.c
|
||||||
@@ -217,7 +220,8 @@ postcar-$(CONFIG_IDT_IN_EVERY_STAGE) += exception.c
|
|||||||
postcar-$(CONFIG_IDT_IN_EVERY_STAGE) += idt.S
|
postcar-$(CONFIG_IDT_IN_EVERY_STAGE) += idt.S
|
||||||
postcar-y += exit_car.S
|
postcar-y += exit_car.S
|
||||||
postcar-y += memcpy.c
|
postcar-y += memcpy.c
|
||||||
postcar-y += memmove.c
|
postcar-$(CONFIG_ARCH_POSTCAR_X86_32) += memmove_32.c
|
||||||
|
postcar-$(CONFIG_ARCH_POSTCAR_X86_64) += memmove_64.S
|
||||||
postcar-y += memset.c
|
postcar-y += memset.c
|
||||||
postcar-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
postcar-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||||
postcar-$(CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES) += null_breakpoint.c
|
postcar-$(CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES) += null_breakpoint.c
|
||||||
@@ -261,7 +265,8 @@ ramstage-y += exception.c
|
|||||||
ramstage-y += idt.S
|
ramstage-y += idt.S
|
||||||
ramstage-$(CONFIG_IOAPIC) += ioapic.c
|
ramstage-$(CONFIG_IOAPIC) += ioapic.c
|
||||||
ramstage-y += memcpy.c
|
ramstage-y += memcpy.c
|
||||||
ramstage-y += memmove.c
|
ramstage-$(CONFIG_ARCH_RAMSTAGE_X86_32) += memmove_32.c
|
||||||
|
ramstage-$(CONFIG_ARCH_RAMSTAGE_X86_64) += memmove_64.S
|
||||||
ramstage-y += memset.c
|
ramstage-y += memset.c
|
||||||
ramstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
ramstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||||
ramstage-$(CONFIG_GENERATE_MP_TABLE) += mpspec.c
|
ramstage-$(CONFIG_GENERATE_MP_TABLE) += mpspec.c
|
||||||
@@ -278,11 +283,11 @@ ramstage-$(CONFIG_HAVE_ACPI_RESUME) += wakeup.S
|
|||||||
ramstage-$(CONFIG_HAVE_CF9_RESET) += cf9_reset.c
|
ramstage-$(CONFIG_HAVE_CF9_RESET) += cf9_reset.c
|
||||||
|
|
||||||
rmodules_x86_32-y += memcpy.c
|
rmodules_x86_32-y += memcpy.c
|
||||||
rmodules_x86_32-y += memmove.c
|
rmodules_x86_32-y += memmove_32.c
|
||||||
rmodules_x86_32-y += memset.c
|
rmodules_x86_32-y += memset.c
|
||||||
|
|
||||||
rmodules_x86_64-y += memcpy.c
|
rmodules_x86_64-y += memcpy.c
|
||||||
rmodules_x86_64-y += memmove.c
|
rmodules_x86_64-y += memmove_64.S
|
||||||
rmodules_x86_64-y += memset.c
|
rmodules_x86_64-y += memset.c
|
||||||
|
|
||||||
ifeq ($(CONFIG_ARCH_RAMSTAGE_X86_32),y)
|
ifeq ($(CONFIG_ARCH_RAMSTAGE_X86_32),y)
|
||||||
@@ -324,7 +329,8 @@ smm-$(CONFIG_DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES) += breakpoint.c
|
|||||||
smm-$(CONFIG_IDT_IN_EVERY_STAGE) += exception.c
|
smm-$(CONFIG_IDT_IN_EVERY_STAGE) += exception.c
|
||||||
smm-$(CONFIG_IDT_IN_EVERY_STAGE) += idt.S
|
smm-$(CONFIG_IDT_IN_EVERY_STAGE) += idt.S
|
||||||
smm-y += memcpy.c
|
smm-y += memcpy.c
|
||||||
smm-y += memmove.c
|
smm-$(CONFIG_ARCH_RAMSTAGE_X86_32) += memmove_32.c
|
||||||
|
smm-$(CONFIG_ARCH_RAMSTAGE_X86_64) += memmove_64.S
|
||||||
smm-y += memset.c
|
smm-y += memset.c
|
||||||
smm-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
smm-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||||
smm-$(CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES) += null_breakpoint.c
|
smm-$(CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES) += null_breakpoint.c
|
||||||
|
@@ -138,7 +138,7 @@ Method(DBGO, 1)
|
|||||||
Name(BDBG, Buffer(80) {})
|
Name(BDBG, Buffer(80) {})
|
||||||
BDBG = Arg0
|
BDBG = Arg0
|
||||||
Local1 = 0
|
Local1 = 0
|
||||||
while (One) {
|
while (1) {
|
||||||
Local0 = GETC(BDBG, Local1)
|
Local0 = GETC(BDBG, Local1)
|
||||||
if (Local0 == 0) {
|
if (Local0 == 0) {
|
||||||
return (0)
|
return (0)
|
||||||
|
@@ -44,7 +44,7 @@ Method(SCMP, 2)
|
|||||||
Local2 = Derefof(Local0[Local4])
|
Local2 = Derefof(Local0[Local4])
|
||||||
Local3 = Derefof(Local1[Local4])
|
Local3 = Derefof(Local1[Local4])
|
||||||
if (Local2 > Local3) {
|
if (Local2 > Local3) {
|
||||||
Return(One)
|
Return(1)
|
||||||
} else {
|
} else {
|
||||||
if (Local2 < Local3) {
|
if (Local2 < Local3) {
|
||||||
Return(Ones)
|
Return(Ones)
|
||||||
@@ -53,7 +53,7 @@ Method(SCMP, 2)
|
|||||||
Local4++
|
Local4++
|
||||||
}
|
}
|
||||||
if (Local4 < Local5) {
|
if (Local4 < Local5) {
|
||||||
Return(One)
|
Return(1)
|
||||||
} else {
|
} else {
|
||||||
if (Local4 < Local6) {
|
if (Local4 < Local6) {
|
||||||
Return(Ones)
|
Return(Ones)
|
||||||
@@ -83,7 +83,7 @@ Method(WCMP, 2)
|
|||||||
}
|
}
|
||||||
Local2++
|
Local2++
|
||||||
}
|
}
|
||||||
Return(One)
|
Return(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ARG0 = IRQ Number(0-15)
|
/* ARG0 = IRQ Number(0-15)
|
||||||
|
@@ -34,6 +34,7 @@ _start:
|
|||||||
mov $_STACK_TOP, %esp
|
mov $_STACK_TOP, %esp
|
||||||
|
|
||||||
/* clear .bss section as it is not shared */
|
/* clear .bss section as it is not shared */
|
||||||
|
#if ENV_SEPARATE_BSS
|
||||||
cld
|
cld
|
||||||
xor %eax, %eax
|
xor %eax, %eax
|
||||||
movl $(_ebss), %ecx
|
movl $(_ebss), %ecx
|
||||||
@@ -41,6 +42,7 @@ _start:
|
|||||||
sub %edi, %ecx
|
sub %edi, %ecx
|
||||||
shrl $2, %ecx
|
shrl $2, %ecx
|
||||||
rep stosl
|
rep stosl
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ((ENV_SEPARATE_VERSTAGE && CONFIG(VERSTAGE_DEBUG_SPINLOOP)) \
|
#if ((ENV_SEPARATE_VERSTAGE && CONFIG(VERSTAGE_DEBUG_SPINLOOP)) \
|
||||||
|| (ENV_ROMSTAGE && CONFIG(ROMSTAGE_DEBUG_SPINLOOP)))
|
|| (ENV_ROMSTAGE && CONFIG(ROMSTAGE_DEBUG_SPINLOOP)))
|
||||||
|
@@ -2,7 +2,6 @@
|
|||||||
#include <arch/registers.h>
|
#include <arch/registers.h>
|
||||||
#include <arch/breakpoint.h>
|
#include <arch/breakpoint.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <stdint.h>
|
|
||||||
#include <types.h>
|
#include <types.h>
|
||||||
|
|
||||||
#define DEBUG_REGISTER_COUNT 4
|
#define DEBUG_REGISTER_COUNT 4
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
#include <cpu/x86/cpu_info.S.inc>
|
|
||||||
#include <cpu/x86/post_code.h>
|
#include <cpu/x86/post_code.h>
|
||||||
#include <arch/ram_segs.h>
|
#include <arch/ram_segs.h>
|
||||||
|
|
||||||
@@ -11,11 +10,9 @@
|
|||||||
.global _estack
|
.global _estack
|
||||||
.global _stack_size
|
.global _stack_size
|
||||||
|
|
||||||
/* Stack alignment is not enforced with rmodule loader, reserve one
|
.align 16
|
||||||
* extra CPU such that alignment can be enforced on entry. */
|
|
||||||
.align CONFIG_STACK_SIZE
|
|
||||||
_stack:
|
_stack:
|
||||||
.space (CONFIG_MAX_CPUS+1)*CONFIG_STACK_SIZE
|
.space CONFIG_STACK_SIZE
|
||||||
_estack:
|
_estack:
|
||||||
.set _stack_size, _estack - _stack
|
.set _stack_size, _estack - _stack
|
||||||
|
|
||||||
@@ -76,24 +73,7 @@ _start:
|
|||||||
|
|
||||||
/* Set new stack with enforced alignment. */
|
/* Set new stack with enforced alignment. */
|
||||||
movl $_estack, %esp
|
movl $_estack, %esp
|
||||||
andl $(~(CONFIG_STACK_SIZE-1)), %esp
|
andl $(0xfffffff0), %esp
|
||||||
|
|
||||||
push_cpu_info
|
|
||||||
|
|
||||||
#if CONFIG(CPU_INFO_V2)
|
|
||||||
/* Allocate the per_cpu_segment_data on the stack */
|
|
||||||
push_per_cpu_segment_data
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Update the BSP's per_cpu_segment_descriptor to point to the
|
|
||||||
* per_cpu_segment_data that was allocated on the stack.
|
|
||||||
*/
|
|
||||||
set_segment_descriptor_base $per_cpu_segment_descriptors, %esp
|
|
||||||
|
|
||||||
mov $per_cpu_segment_selector, %eax
|
|
||||||
movl (%eax), %eax
|
|
||||||
mov %eax, %gs
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now we are finished. Memory is up, data is copied and
|
* Now we are finished. Memory is up, data is copied and
|
||||||
@@ -222,7 +202,6 @@ gdt:
|
|||||||
.word 0xffff, 0x0000
|
.word 0xffff, 0x0000
|
||||||
.byte 0x00, 0x9b, 0xaf, 0x00
|
.byte 0x00, 0x9b, 0xaf, 0x00
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG(CPU_INFO_V2)
|
|
||||||
per_cpu_segment_descriptors:
|
per_cpu_segment_descriptors:
|
||||||
.rept CONFIG_MAX_CPUS
|
.rept CONFIG_MAX_CPUS
|
||||||
/* flat data segment */
|
/* flat data segment */
|
||||||
@@ -233,14 +212,11 @@ per_cpu_segment_descriptors:
|
|||||||
.byte 0x00, 0x93, 0xcf, 0x00
|
.byte 0x00, 0x93, 0xcf, 0x00
|
||||||
#endif
|
#endif
|
||||||
.endr
|
.endr
|
||||||
#endif /* CPU_INFO_V2 */
|
|
||||||
gdt_end:
|
gdt_end:
|
||||||
|
|
||||||
#if CONFIG(CPU_INFO_V2)
|
|
||||||
/* Segment selector pointing to the first per_cpu_segment_descriptor. */
|
/* Segment selector pointing to the first per_cpu_segment_descriptor. */
|
||||||
per_cpu_segment_selector:
|
per_cpu_segment_selector:
|
||||||
.long per_cpu_segment_descriptors - gdt
|
.long per_cpu_segment_descriptors - gdt
|
||||||
#endif /* CPU_INFO_V2 */
|
|
||||||
|
|
||||||
.section ".text._start", "ax", @progbits
|
.section ".text._start", "ax", @progbits
|
||||||
#if ENV_X86_64
|
#if ENV_X86_64
|
||||||
|
@@ -20,9 +20,9 @@
|
|||||||
VBOOT2_WORK(., 12K)
|
VBOOT2_WORK(., 12K)
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG(TPM_MEASURED_BOOT)
|
#if CONFIG(TPM_MEASURED_BOOT)
|
||||||
/* Vboot measured boot TCPA log measurements.
|
/* Vboot measured boot TPM log measurements.
|
||||||
* Needs to be transferred until CBMEM is available */
|
* Needs to be transferred until CBMEM is available */
|
||||||
TPM_TCPA_LOG(., 2K)
|
TPM_LOG(., 2K)
|
||||||
#endif
|
#endif
|
||||||
/* Stack for CAR stages. Since it persists across all stages that
|
/* Stack for CAR stages. Since it persists across all stages that
|
||||||
* use CAR it can be reused. The chipset/SoC is expected to provide
|
* use CAR it can be reused. The chipset/SoC is expected to provide
|
||||||
@@ -59,6 +59,7 @@
|
|||||||
* cbmem console. This is useful for clearing this area on a per-stage
|
* cbmem console. This is useful for clearing this area on a per-stage
|
||||||
* basis when more than one stage uses cache-as-ram. */
|
* basis when more than one stage uses cache-as-ram. */
|
||||||
|
|
||||||
|
#if ENV_SEPARATE_BSS
|
||||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||||
_bss = .;
|
_bss = .;
|
||||||
/* Allow global uninitialized variables for stages without CAR teardown. */
|
/* Allow global uninitialized variables for stages without CAR teardown. */
|
||||||
@@ -66,9 +67,23 @@
|
|||||||
*(.bss.*)
|
*(.bss.*)
|
||||||
*(.sbss)
|
*(.sbss)
|
||||||
*(.sbss.*)
|
*(.sbss.*)
|
||||||
|
/* '*_E' GNAT generated global variables actually are un-initialized
|
||||||
|
* (filled with zeros) variables which are initialized at
|
||||||
|
* runtime. Therefore, they can be placed in the _bss region. */
|
||||||
|
#if CONFIG(ROMSTAGE_LIBHWBASE)
|
||||||
|
*(.data.hw__*_E)
|
||||||
|
#endif
|
||||||
|
#if CONFIG(EARLY_GFX_GMA)
|
||||||
|
*(.data.gma*_E)
|
||||||
|
/* libgfxinit uses a boolean variable to track its initialization
|
||||||
|
* state. Since the initial value is False it can safely be placed in
|
||||||
|
* the _bss region. */
|
||||||
|
*(.data.hw__gfx__gma__initialized)
|
||||||
|
#endif
|
||||||
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
. = ALIGN(ARCH_POINTER_ALIGN_SIZE);
|
||||||
_ebss = .;
|
_ebss = .;
|
||||||
RECORD_SIZE(bss)
|
RECORD_SIZE(bss)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ENV_ROMSTAGE && CONFIG(ASAN_IN_ROMSTAGE)
|
#if ENV_ROMSTAGE && CONFIG(ASAN_IN_ROMSTAGE)
|
||||||
_shadow_size = (_ebss - _car_region_start) >> 3;
|
_shadow_size = (_ebss - _car_region_start) >> 3;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user